From 27ea77b92ac862db7388de9a2d6ad1f460d7d5c0 Mon Sep 17 00:00:00 2001 From: Cuyler36 Date: Fri, 17 May 2024 00:58:16 -0400 Subject: [PATCH 001/234] Match mSM_copy_cbuf Co-authored-by: SwareJonge <41187958+SwareJonge@users.noreply.github.com> --- src/m_submenu_ovl.c | 66 ++++++++++++++------------------------------- 1 file changed, 20 insertions(+), 46 deletions(-) diff --git a/src/m_submenu_ovl.c b/src/m_submenu_ovl.c index 2b5c00ef..5bcd82a2 100644 --- a/src/m_submenu_ovl.c +++ b/src/m_submenu_ovl.c @@ -160,32 +160,23 @@ static void mSM_set_char_matrix(GRAPH* graph) { CLOSE_POLY_OPA_DISP(graph); } -/* @nonmatching - functionally equivalent */ -/* - @note - this function is functionally broken. It was stubbed - in DnM+ and would break if actually used. It is modified - vs its DnM implementation slightly. Additionally, it is entirely - unused. It is set to a func pointer member but that member is - never used. -*/ -#ifndef MUST_MATCH static void mSM_cbuf_copy(GRAPH* graph, PreRender* prerender, int x, int y, int mode) { - s32 src_w; - s32 src_h; - s32 dst_w; - s32 dst_h; + int temp; + int temp0; + int src_w; + int src_h; + int dst_w; + int dst_h; int uls; int ult; int lrs; int lrt; int tmem_line; - int x_min; int y_min; - int y_max; + int x_min; int x_max; + int y_max; int tex_wd; - int temp0; - int temp1; void* src_buffer; void* dst_buffer; @@ -243,23 +234,20 @@ static void mSM_cbuf_copy(GRAPH* graph, PreRender* prerender, int x, int y, int dst_buffer = prerender->framebuffer_bak; } - OPEN_DISP(graph); - - tmem_line = (1 << 12) / (((x_max + 3) & ~3) * 2); + tmem_line = (4 << 10) / ((((x_max + 4) - 1) & ~(4 - 1)) * 2); temp0 = uls + (x_max - 1); - tex_wd = (lrs + x_max - 1) << G_TEXTURE_IMAGE_FRAC; + tex_wd = (lrs + x_max - 1) << 2; + lrs <<= 2; + OPEN_DISP(graph); if (mode) { Gfx* gfx = NOW_POLY_OPA_DISP; - src_w = x - x_min; - src_h = y - y_min; prerender->width = 640; prerender->height = 480; - PreRender_CopyRGBC(prerender, &gfx, src_w, src_h); + PreRender_CopyRGBC(prerender, &gfx, x - x_min, y - y_min); SET_POLY_OPA_DISP(gfx); - } else { gDPPipeSync(NEXT_POLY_OPA_DISP); gSPClearGeometryMode(NEXT_POLY_OPA_DISP, 0xFFFFFF); @@ -275,36 +263,22 @@ static void mSM_cbuf_copy(GRAPH* graph, PreRender* prerender, int x, int y, int tmem_line = y_max; } - gDPLoadTextureTile(NEXT_POLY_OPA_DISP, dst_buffer, G_IM_FMT_RGBA, G_IM_SIZ_16b, src_w, 0, uls, ult, temp0, - (ult + tmem_line - 1), 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, - G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD); + temp = ult + tmem_line - 1; + gDPLoadTextureTile(NEXT_POLY_OPA_DISP, dst_buffer, G_IM_FMT_RGBA, G_IM_SIZ_16b, src_w, src_h, uls, ult, + temp0, temp, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, + G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); - gSPTextureRectangle(NEXT_POLY_OPA_DISP, lrs << G_TEXTURE_IMAGE_FRAC, lrt << G_TEXTURE_IMAGE_FRAC, tex_wd, - (lrt + tmem_line - 1) << G_TEXTURE_IMAGE_FRAC, G_TX_RENDERTILE, uls << 5, ult << 5, - (1 << 2) << 10, 1 << 10); + gSPTextureRectangle(NEXT_POLY_OPA_DISP, lrs, lrt << 2, tex_wd, (lrt + tmem_line - 1) << 2, G_TX_RENDERTILE, + uls << 5, ult << 5, (4 << 10), (1 << 10)); ult += tmem_line; lrt += tmem_line; y_max -= tmem_line; } } + CLOSE_DISP(graph); } -#else -#pragma push -#pragma force_active on -extern f32 lbl_8064b870; /* 4.0f */ -REL_SYMBOL_AT(lbl_8064b870, 0x8064B870); - -extern f64 lbl_8064b878; /* int -> float magic */ -REL_SYMBOL_AT(lbl_8064b878, 0x8064B878); - -#pragma pop - -static asm void mSM_cbuf_copy(GRAPH* graph, PreRender* prerender, int x, int y, int mode) { -#include "asm/805ed694.s" -} -#endif static void mSM_set_drawMode(GRAPH* graph, PreRender* prerender, f32 eye_dist, f32 eye_height, s16 angle) { static Vp viewport_data = { 0, 0, 511, 0, 0, 0, 511, 0 }; From ad38b86c8e2b75a816b353d61683194cb7ab6095 Mon Sep 17 00:00:00 2001 From: Cuyler36 Date: Fri, 17 May 2024 00:54:42 -0400 Subject: [PATCH 002/234] inventory ovl work --- include/m_inventory_ovl.h | 45 ++++- include/m_player.h | 315 +++++++++++++++++++++++++++++++++ src/m_inventory_ovl.c | 362 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 720 insertions(+), 2 deletions(-) create mode 100644 src/m_inventory_ovl.c diff --git a/include/m_inventory_ovl.h b/include/m_inventory_ovl.h index 8d316922..856a7c8c 100644 --- a/include/m_inventory_ovl.h +++ b/include/m_inventory_ovl.h @@ -13,6 +13,36 @@ extern "C" { #define mIV_PLAYER_JOINT_NUM 27 #define mIV_ITEM_JOINT_NUM 8 +#define mIV_PLAYER_EFFECT_NUM 20 + +enum { + mIV_ITEM_SCALE_TYPE_NONE, + mIV_ITEM_SCALE_TYPE_SHRINK, + mIV_ITEM_SCALE_TYPE_GROW, + mIV_ITEM_SCALE_TYPE_GROW_FAST, + mIV_ITEM_SCALE_TYPE_GROW_FASTEST, + mIV_ITEM_SCALE_TYPE_PRESENT, + + mIV_ITEM_SCALE_TYPE_NUM +}; + +enum { + mIV_PAGE_FISH_COLLECTION, + mIV_PAGE_INVENTORY, + mIV_PAGE_INSECT_COLLECTION, + mIV_PAGE_ORIGINAL_DESIGNS, + + mIV_PAGE_NUM +}; + +typedef struct inventory_effect_s { + int timer; + xyz_t pos; + f32 scale; + f32 speed; +} mIV_pl_eff_c; + +typedef mActor_name_t (*mIV_SET_COLLECT_ITEMNO_PROC)(int, int); /* sizeof (struct inventory_ovl_s) == 0x5EC */ struct inventory_ovl_s { @@ -42,8 +72,19 @@ struct inventory_ovl_s { u8 release_flag; u8 food_idx; - - u8 _3E3[0x5EC - 0x3E3]; + u8 item_scale_type[mPr_POCKETS_SLOT_COUNT]; + u8 page_order[mIV_PAGE_NUM]; + s16 page_move_timer; + s16 remove_timer; + mIV_pl_eff_c pl_eff[mIV_PLAYER_EFFECT_NUM]; + mIV_SET_COLLECT_ITEMNO_PROC set_collect_itemNo_proc; + u16 item_mark_bitfield; + u16 _5E2; + s16 _5E4; + u8 _5E6[2]; + u16 mail_mark_bitfield; + u8 original_flag; + u8 wc_flag; }; extern void mIV_inventory_ovl_construct(Submenu* submenu); diff --git a/include/m_player.h b/include/m_player.h index 21d4ee79..f492dbab 100644 --- a/include/m_player.h +++ b/include/m_player.h @@ -155,6 +155,321 @@ enum { mPlayer_INDEX_DEMO_GET_GOLDEN_AXE_WAIT }; +enum { + mPlayer_ANIM_WAIT1, + mPlayer_ANIM_WALK1, + mPlayer_ANIM_AXE1, + mPlayer_ANIM_RUN1, + mPlayer_ANIM_PUSH1, + mPlayer_ANIM_PULL1, + mPlayer_ANIM_HOLD_WAIT1, + mPlayer_ANIM_PICKUP1, + mPlayer_ANIM_LTURN1, + mPlayer_ANIM_RTURN1, + mPlayer_ANIM_GET1, + mPlayer_ANIM_GET_CHANGE1, + mPlayer_ANIM_GET_PUTAWAY1, + mPlayer_ANIM_OPEN1, + mPlayer_ANIM_PUTAWAY1, + mPlayer_ANIM_TRANS_WAIT1, + mPlayer_ANIM_TRANSFER1, + mPlayer_ANIM_UMB_OPEN1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_DASH1, + mPlayer_ANIM_RUN_SLIP1, + mPlayer_ANIM_GET_PULL1, + mPlayer_ANIM_GET_M1, + mPlayer_ANIM_KAMAE_MOVE_M1, + mPlayer_ANIM_KAMAE_WAIT_M1, + mPlayer_ANIM_KOKERU_A1, + mPlayer_ANIM_KOKERU_GETUP_A1, + mPlayer_ANIM_KOKERU_GETUP_N1, + mPlayer_ANIM_KOKERU_N1, + mPlayer_ANIM_NET1, + mPlayer_ANIM_NET_SWING1, + mPlayer_ANIM_AXE_SWING1, + mPlayer_ANIM_KAMAE_SLIP_M1, + mPlayer_ANIM_KOKERU1, + mPlayer_ANIM_KOKERU_GETUP1, + mPlayer_ANIM_SITDOWN1, + mPlayer_ANIM_SITDOWN_WAIT1, + mPlayer_ANIM_STANDUP1, + mPlayer_ANIM_PUTAWAY_M1, + mPlayer_ANIM_BED_WAIT1, + mPlayer_ANIM_INBED_L1, + mPlayer_ANIM_INBED_R1, + mPlayer_ANIM_INTRAIN1, + mPlayer_ANIM_KAGU_OPEN_D1, + mPlayer_ANIM_KAGU_OPEN_H1, + mPlayer_ANIM_KAGU_OPEN_K1, + mPlayer_ANIM_NEGAERI_L1, + mPlayer_ANIM_NEGAERI_R1, + mPlayer_ANIM_OUTBED_L1, + mPlayer_ANIM_OUTBED_R1, + mPlayer_ANIM_OUTTRAIN1, + mPlayer_ANIM_KAGU_CLOSE_D1, + mPlayer_ANIM_KAGU_CLOSE_H1, + mPlayer_ANIM_KAGU_CLOSE_K1, + mPlayer_ANIM_KAGU_WAIT_D1, + mPlayer_ANIM_KAGU_WAIT_H1, + mPlayer_ANIM_KAGU_WAIT_K1, + mPlayer_ANIM_GO_OUT_O1, + mPlayer_ANIM_GO_OUT_S1, + mPlayer_ANIM_INTO_S1, + mPlayer_ANIM_AXE_HANE1, + mPlayer_ANIM_AXE_SUKA1, + mPlayer_ANIM_HOLD_WAIT_H1, + mPlayer_ANIM_HOLD_WAIT_O1, + mPlayer_ANIM_GET_T1, + mPlayer_ANIM_GET_T2, + mPlayer_ANIM_PUTAWAY_T1, + mPlayer_ANIM_SAO1, + mPlayer_ANIM_SAO_SWING1, + mPlayer_ANIM_TURI_HIKI1, + mPlayer_ANIM_TURI_WAIT1, + mPlayer_ANIM_NOT_GET_T1, + mPlayer_ANIM_MENU_CATCH1, + mPlayer_ANIM_MENU_CHANGE1, + mPlayer_ANIM_UMB_CLOSE1, + mPlayer_ANIM_NOT_SAO_SWING1, + mPlayer_ANIM_INTRAIN_WAIT1, + mPlayer_ANIM_CLEAR_TABLE1, + mPlayer_ANIM_DIG1, + mPlayer_ANIM_FILL_UP1, + mPlayer_ANIM_NOT_DIG1, + mPlayer_ANIM_CLEAR_TABLE_L1, + mPlayer_ANIM_PICKUP_L1, + mPlayer_ANIM_SCOOP1, + mPlayer_ANIM_CONFIRM1, + mPlayer_ANIM_DIG_SUKA1, + mPlayer_ANIM_GET_D1, + mPlayer_ANIM_PUTAWAY_D1, + mPlayer_ANIM_DIG_KABU1, + mPlayer_ANIM_FILL_UP_I1, + mPlayer_ANIM_SEND_MAIL1, + mPlayer_ANIM_GET_F1, + mPlayer_ANIM_GET_PULL_F1, + mPlayer_ANIM_GET_PUTAWAY_F1, + mPlayer_ANIM_TRANS_WAIT_F1, + mPlayer_ANIM_TRANSFER_F1, + mPlayer_ANIM_SHAKE1, + mPlayer_ANIM_TIRED1, + mPlayer_ANIM_WASH1, + mPlayer_ANIM_WASH2, + mPlayer_ANIM_WASH3, + mPlayer_ANIM_WASH4, + mPlayer_ANIM_WASH5, + mPlayer_ANIM_FUKUBIKI1, + mPlayer_ANIM_OMAIRI1, + mPlayer_ANIM_SAISEN1, + mPlayer_ANIM_RETURN_MAIL1, + mPlayer_ANIM_RETURN_MAIL2, + mPlayer_ANIM_RETURN_MAIL3, + mPlayer_ANIM_EAT1, + mPlayer_ANIM_GAAAN1, + mPlayer_ANIM_GAAAN2, + mPlayer_ANIM_DERU1, + mPlayer_ANIM_GURATUKU1, + mPlayer_ANIM_MOGAKU1, + mPlayer_ANIM_OTIRU1, + mPlayer_ANIM_ZASSOU1, + mPlayer_ANIM_KNOCK1, + mPlayer_ANIM_BIKU1, + mPlayer_ANIM_HATI1, + mPlayer_ANIM_HATI2, + mPlayer_ANIM_HATI3, + mPlayer_ANIM_PUSH_YUKI1, + mPlayer_ANIM_DERU2, + mPlayer_ANIM_OTIRU2, + mPlayer_ANIM_ITAZURA1, + mPlayer_ANIM_UMB_ROT1, + mPlayer_ANIM_PICKUP_WAIT1, + mPlayer_ANIM_YATTA1, + mPlayer_ANIM_YATTA2, + mPlayer_ANIM_YATTA3, + mPlayer_ANIM_KAZA1, + mPlayer_ANIM_MOSQUITO1, + mPlayer_ANIM_MOSQUITO2, + mPlayer_ANIM_RIDE1, + mPlayer_ANIM_RIDE2, + mPlayer_ANIM_RIDEWAIT, + mPlayer_ANIM_GETOFF1, + mPlayer_ANIM_GETOFF2, + mPlayer_ANIM_UTIWA_WAIT1, + mPlayer_ANIM_UTIWA_D1, + mPlayer_ANIM_AXE_BREAK1, + mPlayer_ANIM_AXE_BREAKWAIT1, + mPlayer_ANIM_LIGHT_ON1, + mPlayer_ANIM_TAISOU1, + mPlayer_ANIM_TAISOU2_1, + mPlayer_ANIM_TAISOU2_2, + mPlayer_ANIM_TAISOU3, + mPlayer_ANIM_TAISOU4_1, + mPlayer_ANIM_TAISOU4_2, + mPlayer_ANIM_TAISOU5_1, + mPlayer_ANIM_TAISOU5_2, + mPlayer_ANIM_TAISOU6_1, + mPlayer_ANIM_TAISOU6_2, + mPlayer_ANIM_TAISOU7_1, + mPlayer_ANIM_TAISOU7_2, + mPlayer_ANIM_OMAIRI_US1, + + mPlayer_ANIM_NUM +}; + +enum { + mPlayer_ITEM_KIND_AXE, + mPlayer_ITEM_KIND_AXE_USE_1, + mPlayer_ITEM_KIND_AXE_USE_2, + mPlayer_ITEM_KIND_AXE_USE_3, + mPlayer_ITEM_KIND_AXE_USE_4, + mPlayer_ITEM_KIND_AXE_USE_5, + mPlayer_ITEM_KIND_AXE_USE_6, + mPlayer_ITEM_KIND_AXE_USE_7, + mPlayer_ITEM_KIND_GOLD_AXE, + + mPlayer_ITEM_KIND_NET, + mPlayer_ITEM_KIND_GOLD_NET, + + mPlayer_ITEM_KIND_UMBRELLA00, + mPlayer_ITEM_KIND_UMBRELLA01, + mPlayer_ITEM_KIND_UMBRELLA02, + mPlayer_ITEM_KIND_UMBRELLA03, + mPlayer_ITEM_KIND_UMBRELLA04, + mPlayer_ITEM_KIND_UMBRELLA05, + mPlayer_ITEM_KIND_UMBRELLA06, + mPlayer_ITEM_KIND_UMBRELLA07, + mPlayer_ITEM_KIND_UMBRELLA08, + mPlayer_ITEM_KIND_UMBRELLA09, + mPlayer_ITEM_KIND_UMBRELLA10, + mPlayer_ITEM_KIND_UMBRELLA11, + mPlayer_ITEM_KIND_UMBRELLA12, + mPlayer_ITEM_KIND_UMBRELLA13, + mPlayer_ITEM_KIND_UMBRELLA14, + mPlayer_ITEM_KIND_UMBRELLA15, + mPlayer_ITEM_KIND_UMBRELLA16, + mPlayer_ITEM_KIND_UMBRELLA17, + mPlayer_ITEM_KIND_UMBRELLA18, + mPlayer_ITEM_KIND_UMBRELLA19, + mPlayer_ITEM_KIND_UMBRELLA20, + mPlayer_ITEM_KIND_UMBRELLA21, + mPlayer_ITEM_KIND_UMBRELLA22, + mPlayer_ITEM_KIND_UMBRELLA23, + mPlayer_ITEM_KIND_UMBRELLA24, + mPlayer_ITEM_KIND_UMBRELLA25, + mPlayer_ITEM_KIND_UMBRELLA26, + mPlayer_ITEM_KIND_UMBRELLA27, + mPlayer_ITEM_KIND_UMBRELLA28, + mPlayer_ITEM_KIND_UMBRELLA29, + mPlayer_ITEM_KIND_UMBRELLA30, + mPlayer_ITEM_KIND_UMBRELLA31, + + mPlayer_ITEM_KIND_ORG_UMBRELLA01, + mPlayer_ITEM_KIND_ORG_UMBRELLA02, + mPlayer_ITEM_KIND_ORG_UMBRELLA03, + mPlayer_ITEM_KIND_ORG_UMBRELLA04, + mPlayer_ITEM_KIND_ORG_UMBRELLA05, + mPlayer_ITEM_KIND_ORG_UMBRELLA06, + mPlayer_ITEM_KIND_ORG_UMBRELLA07, + mPlayer_ITEM_KIND_ORG_UMBRELLA08, + + mPlayer_ITEM_KIND_ROD, + mPlayer_ITEM_KIND_GOLD_ROD, + + mPlayer_ITEM_KIND_SHOVEL, + mPlayer_ITEM_KIND_GOLD_SHOVEL, + + mPlayer_ITEM_KIND_RED_BALLOON, + mPlayer_ITEM_KIND_YELLOW_BALLOON, + mPlayer_ITEM_KIND_BLUE_BALLOON, + mPlayer_ITEM_KIND_GREEN_BALLOON, + mPlayer_ITEM_KIND_PURPLE_BALLOON, + mPlayer_ITEM_KIND_BUNNY_P_BALLOON, + mPlayer_ITEM_KIND_BUNNY_B_BALLOON, + mPlayer_ITEM_KIND_BUNNY_O_BALLOON, + + mPlayer_ITEM_KIND_YELLOW_PINWHEEL, + mPlayer_ITEM_KIND_RED_PINWHEEL, + mPlayer_ITEM_KIND_TIGER_PINWHEEL, + mPlayer_ITEM_KIND_GREEN_PINWHEEL, + mPlayer_ITEM_KIND_PINK_PINWHEEL, + mPlayer_ITEM_KIND_STRIPED_PINWHEEL, + mPlayer_ITEM_KIND_FLOWER_PINWHEEL, + mPlayer_ITEM_KIND_FANCY_PINWHEEL, + + mPlayer_ITEM_KIND_BLUEBELL_FAN, + mPlayer_ITEM_KIND_PLUM_FAN, + mPlayer_ITEM_KIND_BAMBOO_FAN, + mPlayer_ITEM_KIND_CLOUD_FAN, + mPlayer_ITEM_KIND_MAPLE_FAN, + mPlayer_ITEM_KIND_FAN_FAN, + mPlayer_ITEM_KIND_FLOWER_FAN, + mPlayer_ITEM_KIND_LEAF_FAN, + + mPlayer_ITEM_KIND_NUM /* Are there more? */ +}; + +enum { + mPlayer_ITEM_DATA_AXE, // model + mPlayer_ITEM_DATA_AXE_B, // model + mPlayer_ITEM_DATA_AXE_C, // model + mPlayer_ITEM_DATA_GOLD_AXE, // model + + mPlayer_ITEM_DATA_NET, // skeleton + mPlayer_ITEM_DATA_GOLD_NET, // skeleton + mPlayer_ITEM_DATA_NET_GET_M, // animation + mPlayer_ITEM_DATA_NET_SWING, // animation + mPlayer_ITEM_DATA_KAMAE_MAIN_M, // animation + mPlayer_ITEM_DATA_KOKERU_GETUP_N, // animation + mPlayer_ITEM_DATA_KOKERU_N, // animation + mPlayer_ITEM_DATA_SWING_WAIT, // animation + mPlayer_ITEM_DATA_YATTA_M, // animation + + mPlayer_ITEM_DATA_ROD, // skeleton + mPlayer_ITEM_DATA_GOLD_ROD, // skeleton + mPlayer_ITEM_DATA_ROD_GET_T, // animation + mPlayer_ITEM_DATA_ROD_MOVE, // animation + mPlayer_ITEM_DATA_ROD_SINARI, // animation + mPlayer_ITEM_DATA_ROD_SWING, // animation + mPlayer_ITEM_DATA_ROD_WAIT, // animation + mPlayer_ITEM_DATA_ROD_NOT_SWING, // animation + + mPlayer_ITEM_DATA_SHOVEL, // model + mPlayer_ITEM_DATA_GOLD_SHOVEL, // model + + mPlayer_ITEM_DATA_BALLOON1, // skeleton + mPlayer_ITEM_DATA_BALLOON2, // skeleton + mPlayer_ITEM_DATA_BALLOON3, // skeleton + mPlayer_ITEM_DATA_BALLOON4, // skeleton + mPlayer_ITEM_DATA_BALLOON5, // skeleton + mPlayer_ITEM_DATA_BALLOON6, // skeleton + mPlayer_ITEM_DATA_BALLOON7, // skeleton + mPlayer_ITEM_DATA_BALLOON8, // skeleton + mPlayer_ITEM_DATA_BALLOON_WAIT, // animation + mPlayer_ITEM_DATA_BALLOON_GYAZA, // animation + + mPlayer_ITEM_DATA_PINWHEEL1, // skeleton + mPlayer_ITEM_DATA_PINWHEEL2, // skeleton + mPlayer_ITEM_DATA_PINWHEEL3, // skeleton + mPlayer_ITEM_DATA_PINWHEEL4, // skeleton + mPlayer_ITEM_DATA_PINWHEEL5, // skeleton + mPlayer_ITEM_DATA_PINWHEEL6, // skeleton + mPlayer_ITEM_DATA_PINWHEEL7, // skeleton + mPlayer_ITEM_DATA_PINWHEEL8, // skeleton + mPlayer_ITEM_DATA_PINWHEEL_WAIT, // animation + + mPlayer_ITEM_DATA_FAN1, // model + mPlayer_ITEM_DATA_FAN2, // model + mPlayer_ITEM_DATA_FAN3, // model + mPlayer_ITEM_DATA_FAN4, // model + mPlayer_ITEM_DATA_FAN5, // model + mPlayer_ITEM_DATA_FAN6, // model + mPlayer_ITEM_DATA_FAN7, // model + mPlayer_ITEM_DATA_FAN8, // model + + mPlayer_ITEM_DATA_NUM +}; + enum { mPlayer_CREATURE_INSECT, mPlayer_CREATURE_GYOEI, diff --git a/src/m_inventory_ovl.c b/src/m_inventory_ovl.c new file mode 100644 index 00000000..b7f71880 --- /dev/null +++ b/src/m_inventory_ovl.c @@ -0,0 +1,362 @@ +#include "m_inventory_ovl.h" + +#include "m_player_lib.h" +#include "ac_set_ovl_gyoei.h" +#include "ac_set_ovl_insect.h" +#include "m_room_type.h" +#include "m_common_data.h" + +enum { + mIV_ANIM_WALK, + mIV_ANIM_CATCH, + mIV_ANIM_CHANGE, + mIV_ANIM_EAT, + + mIV_ANIM_NUM +}; + +enum { + mIV_ITEM_KIND_AXE, + mIV_ITEM_KIND_NET, + mIV_ITEM_KIND_UMBRELLA, + mIV_ITEM_KIND_ROD, + mIV_ITEM_KIND_SHOVEL, + + mIV_ITEM_KIND_GOLD_AXE, + mIV_ITEM_KIND_GOLD_NET, + mIV_ITEM_KIND_GOLD_ROD, + mIV_ITEM_KIND_GOLD_SHOVEL, + + mIV_ITEM_KIND_RED_BALLOON, + mIV_ITEM_KIND_YELLOW_BALLOON, + mIV_ITEM_KIND_BLUE_BALLOON, + mIV_ITEM_KIND_GREEN_BALLOON, + mIV_ITEM_KIND_PURPLE_BALLOON, + mIV_ITEM_KIND_BUNNY_P_BALLOON, + mIV_ITEM_KIND_BUNNY_B_BALLOON, + mIV_ITEM_KIND_BUNNY_O_BALLOON, + + mIV_ITEM_KIND_YELLOW_PINWHEEL, + mIV_ITEM_KIND_RED_PINWHEEL, + mIV_ITEM_KIND_TIGER_PINWHEEL, + mIV_ITEM_KIND_GREEN_PINWHEEL, + mIV_ITEM_KIND_PINK_PINWHEEL, + mIV_ITEM_KIND_STRIPED_PINWHEEL, + mIV_ITEM_KIND_FLOWER_PINWHEEL, + mIV_ITEM_KIND_FANCY_PINWHEEL, + + mIV_ITEM_KIND_BLUEBELL_FAN, + mIV_ITEM_KIND_PLUM_FAN, + mIV_ITEM_KIND_BAMBOO_FAN, + mIV_ITEM_KIND_CLOUD_FAN, + mIV_ITEM_KIND_MAPLE_FAN, + mIV_ITEM_KIND_FAN_FAN, + mIV_ITEM_KIND_FLOWER_FAN, + mIV_ITEM_KIND_LEAF_FAN, + + mIV_ITEM_KIND_AXE_USE_1, + mIV_ITEM_KIND_AXE_USE_2, + mIV_ITEM_KIND_AXE_USE_3, + mIV_ITEM_KIND_AXE_USE_4, + mIV_ITEM_KIND_AXE_USE_5, + mIV_ITEM_KIND_AXE_USE_6, + mIV_ITEM_KIND_AXE_USE_7, + + mIV_ITEM_KIND_NUM +}; + +static int mIV_Get_pl_main_anime_index(int type) { + static u16 player_main_animation_index_table[mIV_ANIM_NUM] = { + mPlayer_ANIM_WALK1, + mPlayer_ANIM_MENU_CATCH1, + mPlayer_ANIM_MENU_CHANGE1, + mPlayer_ANIM_EAT1, + }; + + if (type >= mIV_ANIM_WALK && type < mIV_ANIM_NUM) { + return player_main_animation_index_table[type]; + } + + return -1; +} + +// clang-format off +#define F(n) aSOG_FISH_TYPE_##n + +/* Fish collection layout */ +static u8 mIV_fish_collect_list[] = { + F(CRUCIAN_CARP), F(BROOK_TROUT), F(CARP), F(KOI), F(BARBEL_STEED), F(DACE), F(CATFISH), F(GIANT_CATFISH), + F(PALE_CHUB), F(BITTERLING), F(LOACH), F(BLUEGILL), F(SMALL_BASS), F(BASS), F(LARGE_BASS), F(GIANT_SNAKEHEAD), + F(EEL), F(FRESHWATER_GOBY), F(POND_SMELT), F(SWEETFISH), F(CHERRY_SALMON), F(RAINBOW_TROUT), F(LARGE_CHAR), F(STRINGFISH), + F(SALMON), F(GOLDFISH), F(POPEYED_GOLDFISH), F(GUPPY), F(ANGELFISH), F(PIRANHA), F(AROWANA), F(COELACANTH), + F(CRAWFISH), F(FROG), F(KILLIFISH), F(JELLYFISH), F(SEA_BASS), F(RED_SNAPPER), F(BARRED_KNIFEJAW), F(ARAPAIMA), +}; +#undef F +// clang-format on + +// clang-format off +#define I(n) aSOI_INSECT_TYPE_##n + +/* Insect collection layout */ +static u8 mIV_insect_collect_list[] = { + I(COMMON_BUTTERFLY), I(YELLOW_BUTTERFLY), I(TIGER_BUTTERFLY), I(PURPLE_BUTTERFLY), I(BROWN_CICADA), I(ROBUST_CICADA), I(WALKER_CICADA), I(EVENING_CICADA), + I(RED_DRAGONFLY), I(COMMON_DRAGONFLY), I(DARNER_DRAGONFLY), I(BANDED_DRAGONFLY), I(CRICKET), I(GRASSHOPPER), I(PINE_CRICKET), I(BELL_CRICKET), + I(LADYBUG), I(SPOTTED_LADYBUG), I(MANTIS), I(LONG_LOCUST), I(MIGRATORY_LOCUST), I(COCKROACH), I(BEE), I(FIREFLY), + I(DRONE_BEETLE), I(LONGHORN_BEETLE), I(JEWEL_BEETLE), I(DYNASTID_BEETLE), I(FLAT_STAG_BEETLE), I(SAW_STAG_BEETLE), I(MOUNTAIN_BEETLE), I(GIANT_BEETLE), + I(POND_SKATER), I(ANT), I(PILL_BUG), I(MOSQUITO), I(MOLE_CRICKET), I(SPIDER), I(SNAIL), I(BAGWORM), +}; +#undef I +// clang-format on + +static mActor_name_t mIV_set_collect_itemNo(int type, int page) { + if (type == mIV_PAGE_INSECT_COLLECTION) { + int insect_no = mIV_insect_collect_list[type]; + int bit = mRmTp_FtrItemNo2FtrIdx(FTR_INSECT_START + FTR_NO_2_IDX(insect_no)); + + if (Now_Private->furniture_collected_bitfield[bit >> 5] & (1 << (bit & 31)) != 0) { + return ITM_INSECT_START + insect_no; + } else { + return EMPTY_NO; + } + } else { + int fish_no = mIV_fish_collect_list[type]; + int bit = FTR_IDX_2_NO(FTR_NO_2_IDX(0x31A) + FTR_NO_2_IDX(fish_no)); + + if (Now_Private->furniture_collected_bitfield[bit >> 5] & (1 << (bit & 31)) != 0) { + return mNT_FishIdx2FishItemNo(fish_no); + } else { + return EMPTY_NO; + } + } +} + +static int mIV_get_player_item_anime_id(void) { + mActor_name_t item = Now_Private->equipment; + + if (item >= ITM_NET && item <= ITM_NET) { + return mIV_ITEM_KIND_NET; + } + + if (item == ITM_AXE) { + return mIV_ITEM_KIND_AXE; + } + + if (item == ITM_GOLDEN_AXE) { + return mIV_ITEM_KIND_GOLD_AXE; + } + + if (item == ITM_AXE_USE_1) { + return mIV_ITEM_KIND_AXE_USE_1; + } + + if (item == ITM_AXE_USE_2) { + return mIV_ITEM_KIND_AXE_USE_2; + } + + if (item == ITM_AXE_USE_3) { + return mIV_ITEM_KIND_AXE_USE_3; + } + + if (item == ITM_AXE_USE_4) { + return mIV_ITEM_KIND_AXE_USE_4; + } + + if (item == ITM_AXE_USE_5) { + return mIV_ITEM_KIND_AXE_USE_5; + } + + if (item == ITM_AXE_USE_6) { + return mIV_ITEM_KIND_AXE_USE_6; + } + + if (item == ITM_AXE_USE_7) { + return mIV_ITEM_KIND_AXE_USE_7; + } + + if (item >= ITM_ROD && item <= ITM_ROD) { + return mIV_ITEM_KIND_ROD; + } + + if (item >= ITM_UMBRELLA_START && item <= ITM_MY_ORG_UMBRELLA7) { + return mIV_ITEM_KIND_UMBRELLA; + } + + if (item >= ITM_SHOVEL && item <= ITM_SHOVEL) { + return mIV_ITEM_KIND_SHOVEL; + } + + /* duplicate golden axe check */ + if (item >= ITM_GOLDEN_AXE && item <= ITM_GOLDEN_AXE) { + return mIV_ITEM_KIND_GOLD_AXE; + } + + if (item >= ITM_GOLDEN_NET && item <= ITM_GOLDEN_NET) { + return mIV_ITEM_KIND_GOLD_NET; + } + + if (item >= ITM_GOLDEN_ROD && item <= ITM_GOLDEN_ROD) { + return mIV_ITEM_KIND_GOLD_ROD; + } + + if (item >= ITM_GOLDEN_SHOVEL && item <= ITM_GOLDEN_SHOVEL) { + return mIV_ITEM_KIND_GOLD_SHOVEL; + } + + if (item == ITM_RED_BALLOON) { + return mIV_ITEM_KIND_RED_BALLOON; + } + + if (item == ITM_YELLOW_BALLOON) { + return mIV_ITEM_KIND_YELLOW_BALLOON; + } + + if (item == ITM_BLUE_BALLOON) { + return mIV_ITEM_KIND_BLUE_BALLOON; + } + + if (item == ITM_GREEN_BALLOON) { + return mIV_ITEM_KIND_GREEN_BALLOON; + } + + if (item == ITM_PURPLE_BALLOON) { + return mIV_ITEM_KIND_PURPLE_BALLOON; + } + + if (item == ITM_BUNNY_P_BALLOON) { + return mIV_ITEM_KIND_BUNNY_P_BALLOON; + } + + if (item == ITM_BUNNY_B_BALLOON) { + return mIV_ITEM_KIND_BUNNY_B_BALLOON; + } + + if (item == ITM_BUNNY_O_BALLOON) { + return mIV_ITEM_KIND_BUNNY_O_BALLOON; + } + + if (item == ITM_YELLOW_PINWHEEL) { + return mIV_ITEM_KIND_YELLOW_PINWHEEL; + } + + if (item == ITM_RED_PINWHEEL) { + return mIV_ITEM_KIND_RED_PINWHEEL; + } + + if (item == ITM_TIGER_PINWHEEL) { + return mIV_ITEM_KIND_TIGER_PINWHEEL; + } + + if (item == ITM_GREEN_PINWHEEL) { + return mIV_ITEM_KIND_GREEN_PINWHEEL; + } + + if (item == ITM_PINK_PINWHEEL) { + return mIV_ITEM_KIND_PINK_PINWHEEL; + } + + if (item == ITM_STRIPED_PINWHEEL) { + return mIV_ITEM_KIND_STRIPED_PINWHEEL; + } + + if (item == ITM_FLOWER_PINWHEEL) { + return mIV_ITEM_KIND_FLOWER_PINWHEEL; + } + + if (item == ITM_FANCY_PINWHEEL) { + return mIV_ITEM_KIND_FANCY_PINWHEEL; + } + + if (item == ITM_BLUEBELL_FAN) { + return mIV_ITEM_KIND_BLUEBELL_FAN; + } + + if (item == ITM_PLUM_FAN) { + return mIV_ITEM_KIND_PLUM_FAN; + } + + if (item == ITM_BAMBOO_FAN) { + return mIV_ITEM_KIND_BAMBOO_FAN; + } + + if (item == ITM_CLOUD_FAN) { + return mIV_ITEM_KIND_CLOUD_FAN; + } + + if (item == ITM_MAPLE_FAN) { + return mIV_ITEM_KIND_MAPLE_FAN; + } + + if (item == ITM_FAN_FAN) { + return mIV_ITEM_KIND_FAN_FAN; + } + + if (item == ITM_FLOWER_FAN) { + return mIV_ITEM_KIND_FLOWER_FAN; + } + + if (item == ITM_LEAF_FAN) { + return mIV_ITEM_KIND_LEAF_FAN; + } + + return mIV_ITEM_KIND_NUM; /* No animation */ +} + +static int mIV_ChangeIndex_mIV_to_mPlib(s16 idx) { + static s8 data[] = { + mPlayer_ITEM_KIND_AXE, + mPlayer_ITEM_KIND_NET, + mPlayer_ITEM_KIND_UMBRELLA00, + mPlayer_ITEM_KIND_ROD, + mPlayer_ITEM_KIND_SHOVEL, + + mPlayer_ITEM_KIND_GOLD_AXE, + mPlayer_ITEM_KIND_GOLD_NET, + mPlayer_ITEM_KIND_GOLD_ROD, + mPlayer_ITEM_KIND_GOLD_SHOVEL, + + mPlayer_ITEM_KIND_RED_BALLOON, + mPlayer_ITEM_KIND_YELLOW_BALLOON, + mPlayer_ITEM_KIND_BLUE_BALLOON, + mPlayer_ITEM_KIND_GREEN_BALLOON, + mPlayer_ITEM_KIND_PURPLE_BALLOON, + mPlayer_ITEM_KIND_BUNNY_P_BALLOON, + mPlayer_ITEM_KIND_BUNNY_B_BALLOON, + mPlayer_ITEM_KIND_BUNNY_O_BALLOON, + + mPlayer_ITEM_KIND_YELLOW_PINWHEEL, + mPlayer_ITEM_KIND_RED_PINWHEEL, + mPlayer_ITEM_KIND_TIGER_PINWHEEL, + mPlayer_ITEM_KIND_GREEN_PINWHEEL, + mPlayer_ITEM_KIND_PINK_PINWHEEL, + mPlayer_ITEM_KIND_STRIPED_PINWHEEL, + mPlayer_ITEM_KIND_FLOWER_PINWHEEL, + mPlayer_ITEM_KIND_FANCY_PINWHEEL, + + mPlayer_ITEM_KIND_BLUEBELL_FAN, + mPlayer_ITEM_KIND_PLUM_FAN, + mPlayer_ITEM_KIND_BAMBOO_FAN, + mPlayer_ITEM_KIND_CLOUD_FAN, + mPlayer_ITEM_KIND_MAPLE_FAN, + mPlayer_ITEM_KIND_FAN_FAN, + mPlayer_ITEM_KIND_FLOWER_FAN, + mPlayer_ITEM_KIND_LEAF_FAN, + + mPlayer_ITEM_KIND_AXE_USE_1, + mPlayer_ITEM_KIND_AXE_USE_2, + mPlayer_ITEM_KIND_AXE_USE_3, + mPlayer_ITEM_KIND_AXE_USE_4, + mPlayer_ITEM_KIND_AXE_USE_5, + mPlayer_ITEM_KIND_AXE_USE_6, + mPlayer_ITEM_KIND_AXE_USE_7, + }; + + if (idx >= 0 && idx < mIV_ITEM_KIND_NUM) { + return data[idx]; + } + + return -1; +} + +static int mIV_Get_player_item_shape_index(int idx) { + if (idx >= 0 && idx < mIV_ITEM_KIND_NUM) {} +} From 5914ad66983a84711835a0488aefecd43cfe029b Mon Sep 17 00:00:00 2001 From: Cuyler36 Date: Sun, 19 May 2024 13:17:52 -0400 Subject: [PATCH 003/234] Finish & link m_inventory_ovl --- config/rel_slices.yml | 5 + include/audio_defs.h | 5 + include/libc/math.h | 5 +- include/m_bgm.h | 11 + include/m_inventory_ovl.h | 29 +- include/m_player.h | 24 +- include/m_player_lib.h | 18 + include/m_submenu.h | 9 +- include/m_submenu_ovl.h | 16 +- src/m_bgm.c | 2 +- src/m_catalog_ovl.c | 4 +- src/m_hand_ovl.c | 10 +- src/m_inventory_ovl.c | 2145 +++++++++++++++++++++++++++++++++---- src/m_submenu_ovl.c | 4 +- 14 files changed, 2069 insertions(+), 218 deletions(-) diff --git a/config/rel_slices.yml b/config/rel_slices.yml index 15fd1b0f..1445f1fe 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -970,6 +970,11 @@ m_hboard_ovl.c: .text: [0x805E0AC8, 0x805E1398] .rodata: [0x8064B480, 0x8064B4B8] .data: [0x806CD3B0, 0x806CD3C8] +m_inventory_ovl.c: + .text: [0x805E1398, 0x805E4DFC] + .rodata: [0x8064B4B8, 0x8064B5C8] + .data: [0x806CD3C8, 0x806CD7B8] + .bss: [0x8133FAE0, 0x813400D0] m_map_ovl.c: .text: [0x805E5EFC, 0x805E7A54] .rodata: [0x8064B628, 0x8064B6B0] diff --git a/include/audio_defs.h b/include/audio_defs.h index 332b6aa8..7872a54e 100644 --- a/include/audio_defs.h +++ b/include/audio_defs.h @@ -38,6 +38,9 @@ typedef enum audio_sound_effects { NA_SE_25 = 0x25, NA_SE_26 = 0x26, + NA_SE_MENU_PAUSE = 0x30, + NA_SE_31 = 0x31, + NA_SE_DRAWER_SHUT = 0x3A, NA_SE_ITEM_GET = 0x40, @@ -78,6 +81,8 @@ typedef enum audio_sound_effects { NA_SE_ROD_STROKE = 0x109, NA_SE_ROD_BACK, + NA_SE_EAT = 0x113, + NA_SE_WEAR = 0x11C, NA_SE_SCOOP1 = 0x11E, diff --git a/include/libc/math.h b/include/libc/math.h index a0427698..6cda6927 100644 --- a/include/libc/math.h +++ b/include/libc/math.h @@ -4,6 +4,9 @@ #include "types.h" #define SQRT_OF_2_F 1.41421356237309504880f +#define SQRT_OF_3_F 1.73205080756887729353f + +#define SQRT_3_OVER_3_F (SQRT_OF_3_F / 3.0f) #define M_PI 3.14159265358979323846f @@ -15,4 +18,4 @@ f32 fatan2(f32, f32); f64 fsqrt(f32); f32 facos(f32); -#endif \ No newline at end of file +#endif diff --git a/include/m_bgm.h b/include/m_bgm.h index bad34b58..bac71a79 100644 --- a/include/m_bgm.h +++ b/include/m_bgm.h @@ -9,6 +9,17 @@ extern "C" { #endif +enum { + mBGM_PAUSE_0, + mBGM_PAUSE_1, + mBGM_PAUSE_2, + mBGM_PAUSE_NOTICE, + mBGM_PAUSE_4, + mBGM_PAUSE_STOP, + + mBGM_PAUSE_NUM +}; + extern void mBGMPsComp_make_ps_fanfare(u8 bgm_num, u16 stop_type); extern void mBGMPsComp_make_ps_lost_fanfare(u8 bgm_num, u16 stop_type); extern void mBGMPsComp_make_ps_wipe(u16 stop_type); diff --git a/include/m_inventory_ovl.h b/include/m_inventory_ovl.h index 856a7c8c..757d3a0d 100644 --- a/include/m_inventory_ovl.h +++ b/include/m_inventory_ovl.h @@ -11,9 +11,10 @@ extern "C" { #endif -#define mIV_PLAYER_JOINT_NUM 27 +#define mIV_PLAYER_JOINT_NUM (mPlayer_JOINT_NUM + 1) #define mIV_ITEM_JOINT_NUM 8 #define mIV_PLAYER_EFFECT_NUM 20 +#define mIV_COLLECT_NUM 40 enum { mIV_ITEM_SCALE_TYPE_NONE, @@ -30,11 +31,26 @@ enum { mIV_PAGE_FISH_COLLECTION, mIV_PAGE_INVENTORY, mIV_PAGE_INSECT_COLLECTION, - mIV_PAGE_ORIGINAL_DESIGNS, mIV_PAGE_NUM }; +enum { + mIV_ANIM_WALK, + mIV_ANIM_CATCH, + mIV_ANIM_CHANGE, + mIV_ANIM_EAT, + + mIV_ANIM_NUM +}; + +enum { + mIV_STRING_LAND_NAME, + mIV_STRING_PLAYER_NAME, + + mIV_STRING_NUM +}; + typedef struct inventory_effect_s { int timer; xyz_t pos; @@ -46,8 +62,8 @@ typedef mActor_name_t (*mIV_SET_COLLECT_ITEMNO_PROC)(int, int); /* sizeof (struct inventory_ovl_s) == 0x5EC */ struct inventory_ovl_s { - cKF_SkeletonInfo_R_c player_keyframe0; - cKF_SkeletonInfo_R_c player_keyframe1; + cKF_SkeletonInfo_R_c player_main_keyframe; + cKF_SkeletonInfo_R_c player_com_keyframe; s_xyz player_work[mIV_PLAYER_JOINT_NUM]; s_xyz player_morph[mIV_PLAYER_JOINT_NUM]; @@ -60,8 +76,8 @@ struct inventory_ovl_s { u8 _374[0x3BC - 0x374]; - u16 selected_item_bitfield; - u16 selected_mail_bitfield; + u16 selectable_item_bitfield; + u16 selectable_mail_bitfield; u32 disp_money; int disp_money_change_frames; @@ -74,6 +90,7 @@ struct inventory_ovl_s { u8 food_idx; u8 item_scale_type[mPr_POCKETS_SLOT_COUNT]; u8 page_order[mIV_PAGE_NUM]; + u8 next_page_id; s16 page_move_timer; s16 remove_timer; mIV_pl_eff_c pl_eff[mIV_PLAYER_EFFECT_NUM]; diff --git a/include/m_player.h b/include/m_player.h index f492dbab..d8d2c40c 100644 --- a/include/m_player.h +++ b/include/m_player.h @@ -22,6 +22,8 @@ typedef struct player_actor_s PLAYER_ACTOR; #define mPlayer_FORCE_POSITION_ANGLE_ROTY (1 << 5) #define mPlayer_FORCE_POSITION_ANGLE_ROTZ (1 << 6) +#define mPlayer_JOINT_NUM 26 + enum { mPlayer_ADDRESSABLE_TRUE, mPlayer_ADDRESSABLE_FALSE_MOVEMENT, @@ -364,6 +366,7 @@ enum { mPlayer_ITEM_KIND_UMBRELLA30, mPlayer_ITEM_KIND_UMBRELLA31, + mPlayer_ITEM_KIND_ORG_UMBRELLA00, mPlayer_ITEM_KIND_ORG_UMBRELLA01, mPlayer_ITEM_KIND_ORG_UMBRELLA02, mPlayer_ITEM_KIND_ORG_UMBRELLA03, @@ -371,7 +374,6 @@ enum { mPlayer_ITEM_KIND_ORG_UMBRELLA05, mPlayer_ITEM_KIND_ORG_UMBRELLA06, mPlayer_ITEM_KIND_ORG_UMBRELLA07, - mPlayer_ITEM_KIND_ORG_UMBRELLA08, mPlayer_ITEM_KIND_ROD, mPlayer_ITEM_KIND_GOLD_ROD, @@ -470,6 +472,26 @@ enum { mPlayer_ITEM_DATA_NUM }; +enum { + mPlayer_ITEM_DATA_TYPE_GFX, + mPlayer_ITEM_DATA_TYPE_SKELETON, + mPlayer_ITEM_DATA_TYPE_NET_ANIMATION, + mPlayer_ITEM_DATA_TYPE_ROD_ANIMATION, + mPlayer_ITEM_DATA_TYPE_BALLOON_ANIMATION, + mPlayer_ITEM_DATA_TYPE_PINWHEEL_ANIMATION, + + mPlayer_ITEM_DATA_TYPE_NUM +}; + +enum { + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_AXE, + mPlayer_PART_TABLE_PICK_UP, + mPlayer_PART_TABLE_NET, + + mPlayer_PART_TABLE_NUM +}; + enum { mPlayer_CREATURE_INSECT, mPlayer_CREATURE_GYOEI, diff --git a/include/m_player_lib.h b/include/m_player_lib.h index 8953d623..c5ad6a6d 100644 --- a/include/m_player_lib.h +++ b/include/m_player_lib.h @@ -4,6 +4,7 @@ #include "types.h" #include "m_player.h" #include "m_private_h.h" +#include "c_keyframe.h" #ifdef __cplusplus extern "C" { @@ -79,6 +80,23 @@ extern int mPlib_Check_StopNet(xyz_t* net_pos); extern int mPlib_Check_DigScoop(xyz_t* scoop_pos); extern int mPlib_Check_tree_shaken(const xyz_t* pos); extern int mPlib_Check_VibUnit_OneFrame(const xyz_t* pos); +extern int mPlib_Get_BasicItemShapeIndex_fromItemKind(int item_kind); +extern u8 mPlib_Get_Item_DataPointerType(int idx); +extern void* mPlib_Get_Item_DataPointer(int idx); +extern int mPlib_Get_BasicPlayerAnimeIndex_fromItemKind(int item_kind); +extern cKF_Animation_R_c* mPlib_Get_Pointer_Animation(int anim_idx); +extern int mPlib_Get_BasicPartTableIndex_fromAnimeIndex(int anim_idx); +extern int mPlib_Get_BasicItemAnimeIndex_fromItemKind(int item_kind); +extern void mPlib_DMA_player_Part_Table(s8* part_table_p, int idx); +extern cKF_Skeleton_R_c* mPlib_get_player_mdl_p(void); +extern u8* mPlib_Get_PlayerEyeTexAnimation_p(int anim_idx); +extern u8* mPlib_Get_PlayerMouthTexAnimation_p(int anim_idx); +extern u8* mPlib_Get_eye_tex_p(int idx); +extern u8* mPlib_Get_mouth_tex_p(int idx); +extern u8* mPlib_get_player_tex_p(GAME* game); +extern u16* mPlib_get_player_pallet_p(GAME* game); +extern u16* mPlib_get_player_face_pallet_p(GAME* game); +extern int mPlib_Check_scoop_after(GAME* game, xyz_t* pos, mActor_name_t* item, ACTOR** hit_actor, int gold_shovel); extern mPlayer_change_data_from_submenu_c* mPlib_Get_change_data_from_submenu_p(); diff --git a/include/m_submenu.h b/include/m_submenu.h index caa3fbe6..d67f0c88 100644 --- a/include/m_submenu.h +++ b/include/m_submenu.h @@ -103,7 +103,7 @@ enum { mSM_IV_OPEN_SHRINE, mSM_IV_OPEN_12, mSM_IV_OPEN_EXCHANGE, - mSM_IV_OPEN_14, + mSM_IV_OPEN_CPMAIL, mSM_IV_OPEN_CURATOR, mSM_IV_OPEN_16, @@ -118,6 +118,13 @@ enum { mSM_IV_ITEM_NUM }; +enum { + mSM_HANIWA_OPEN_ENTRUST, + mSM_HANIWA_OPEN_TAKE, + + mSM_HANIWA_OPEN_NUM +}; + enum { mSM_BD_OPEN_WRITE, mSM_BD_OPEN_READ, diff --git a/include/m_submenu_ovl.h b/include/m_submenu_ovl.h index abee6321..d53e7006 100644 --- a/include/m_submenu_ovl.h +++ b/include/m_submenu_ovl.h @@ -28,6 +28,7 @@ #include "m_catalog_ovl_h.h" #include "m_hand_ovl_h.h" #include "m_inventory_ovl_h.h" +#include "m_player.h" #ifdef __cplusplus extern "C" { @@ -65,14 +66,15 @@ typedef struct submenu_ovl_dlftbl_s { int in_ram_flag; } mSM_Ovl_dlftbl_c; -// TODO: fill this out typedef struct submenu_segment_s { int _00; - s16 _04; - s16 _06; - s16 _08; - s16 _0A; - u8 _0C[0x30 - 0x0C]; + s16 player_main_anime_idx; + s16 player_item_anime_idx; + s16 change_player_main_anime_idx; + s16 player_anime_timer; + s16 player_umbrella_bank_idx; + s16 umbrella_ids[2]; + s8 player_part_table[mPlayer_JOINT_NUM + 1]; int dlftbl_loaded_num; mSM_Ovl_dlftbl_c* dlftbl_loaded_tbl[8]; } mSM_Segment_c; @@ -91,7 +93,7 @@ typedef struct submenu_menu_info_s { f32 speed[2]; char* _28; - int _2C; + int open_flag; int next_proc_status; s16 move_drt; diff --git a/src/m_bgm.c b/src/m_bgm.c index daeee328..fd87f8cd 100644 --- a/src/m_bgm.c +++ b/src/m_bgm.c @@ -2653,7 +2653,7 @@ extern void mBGM_reset() { } if (ps_comp->pause_state != 0) { - mBGMPsComp_pause(5); + mBGMPsComp_pause(mBGM_PAUSE_STOP); } mBGMDemo_ct(&bgm->demo); diff --git a/src/m_catalog_ovl.c b/src/m_catalog_ovl.c index faa1e315..0896ca75 100644 --- a/src/m_catalog_ovl.c +++ b/src/m_catalog_ovl.c @@ -527,8 +527,8 @@ static void mCL_move_Move(Submenu* submenu, mSM_MenuInfo_c* menu_info) { static void mCL_move_Play(Submenu* submenu, mSM_MenuInfo_c* menu_info) { mCL_Ovl_c* catalog_ovl = submenu->overlay->catalog_ovl; - if (menu_info->_2C == FALSE) { - menu_info->_2C = TRUE; + if (menu_info->open_flag == FALSE) { + menu_info->open_flag = TRUE; submenu->overlay->tag_ovl->chg_tag_func_proc(submenu, 14, 0, 0, 0.0f, 0.0f); } else if (catalog_ovl->page_timer != 0) { catalog_ovl->page_timer--; diff --git a/src/m_hand_ovl.c b/src/m_hand_ovl.c index 290dab93..8ad9a644 100644 --- a/src/m_hand_ovl.c +++ b/src/m_hand_ovl.c @@ -310,8 +310,8 @@ static void mHD_drop_item(Submenu* submenu, mTG_tag_c* tag, mActor_name_t* item, submenu->overlay->tag_ovl->init_tag_data_item_win_proc(submenu); - if (overlay->segment._04 == 1) { - overlay->segment._08 = 0; + if (overlay->segment.player_main_anime_idx == mIV_ANIM_CATCH) { + overlay->segment.change_player_main_anime_idx = mIV_ANIM_WALK; } } @@ -515,7 +515,8 @@ static void mHD_open_end_proc_item_type3(Submenu* submenu, int idx, int table) { int category = ITEM_NAME_GET_CAT(item); if (item == RSV_CLOTH || ITEM_IS_CLOTH(item)) { - if (cKF_FrameControl_passCheck_now(&submenu->overlay->inventory_ovl->player_keyframe0.frame_control, 36.0f)) { + if (cKF_FrameControl_passCheck_now(&submenu->overlay->inventory_ovl->player_main_keyframe.frame_control, + 36.0f)) { cloth_p = &Now_Private->cloth; mHD_drop_item(submenu, tag, &cloth_p->item, NULL); @@ -768,7 +769,8 @@ static void mHD_sasu2_move(Submenu* submenu) { int category = ITEM_NAME_GET_CAT(hand_ovl->info.item); if (hand_ovl->info.item == RSV_CLOTH || ITEM_IS_CLOTH(hand_ovl->info.item)) { - if (cKF_FrameControl_passCheck_now(&submenu->overlay->inventory_ovl->player_keyframe0.frame_control, 36.0f)) { + if (cKF_FrameControl_passCheck_now(&submenu->overlay->inventory_ovl->player_main_keyframe.frame_control, + 36.0f)) { mPr_cloth_c* cloth_p = &Now_Private->cloth; u16 cloth_idx; diff --git a/src/m_inventory_ovl.c b/src/m_inventory_ovl.c index b7f71880..59ef3b92 100644 --- a/src/m_inventory_ovl.c +++ b/src/m_inventory_ovl.c @@ -5,15 +5,15 @@ #include "ac_set_ovl_insect.h" #include "m_room_type.h" #include "m_common_data.h" - -enum { - mIV_ANIM_WALK, - mIV_ANIM_CATCH, - mIV_ANIM_CHANGE, - mIV_ANIM_EAT, - - mIV_ANIM_NUM -}; +#include "m_rcp.h" +#include "sys_matrix.h" +#include "m_tag_ovl.h" +#include "m_hand_ovl.h" +#include "m_bgm.h" +#include "zurumode.h" +#include "padmgr.h" +#include "m_play.h" +#include "m_font.h" enum { mIV_ITEM_KIND_AXE, @@ -65,20 +65,7 @@ enum { mIV_ITEM_KIND_NUM }; -static int mIV_Get_pl_main_anime_index(int type) { - static u16 player_main_animation_index_table[mIV_ANIM_NUM] = { - mPlayer_ANIM_WALK1, - mPlayer_ANIM_MENU_CATCH1, - mPlayer_ANIM_MENU_CHANGE1, - mPlayer_ANIM_EAT1, - }; - - if (type >= mIV_ANIM_WALK && type < mIV_ANIM_NUM) { - return player_main_animation_index_table[type]; - } - - return -1; -} +static mIV_Ovl_c inv_ovl_data; // clang-format off #define F(n) aSOG_FISH_TYPE_##n @@ -108,21 +95,36 @@ static u8 mIV_insect_collect_list[] = { #undef I // clang-format on +static int mIV_Get_pl_main_anime_index(int type) { + static u16 player_main_animation_index_table[mIV_ANIM_NUM] = { + mPlayer_ANIM_WALK1, + mPlayer_ANIM_MENU_CATCH1, + mPlayer_ANIM_MENU_CHANGE1, + mPlayer_ANIM_EAT1, + }; + + if (type >= mIV_ANIM_WALK && type < mIV_ANIM_NUM) { + return player_main_animation_index_table[type]; + } + + return -1; +} + static mActor_name_t mIV_set_collect_itemNo(int type, int page) { - if (type == mIV_PAGE_INSECT_COLLECTION) { + if (page == mIV_PAGE_INSECT_COLLECTION) { int insect_no = mIV_insect_collect_list[type]; int bit = mRmTp_FtrItemNo2FtrIdx(FTR_INSECT_START + FTR_NO_2_IDX(insect_no)); - if (Now_Private->furniture_collected_bitfield[bit >> 5] & (1 << (bit & 31)) != 0) { + if (Now_Private->furniture_collected_bitfield[bit >> 5] & (1 << (bit & 31))) { return ITM_INSECT_START + insect_no; } else { return EMPTY_NO; } } else { int fish_no = mIV_fish_collect_list[type]; - int bit = FTR_IDX_2_NO(FTR_NO_2_IDX(0x31A) + FTR_NO_2_IDX(fish_no)); + int bit = FTR_IDX_2_NO(FTR_NO_2_IDX(0x31A) + (u32)FTR_NO_2_IDX(fish_no)); - if (Now_Private->furniture_collected_bitfield[bit >> 5] & (1 << (bit & 31)) != 0) { + if (Now_Private->furniture_collected_bitfield[bit >> 5] & (1 << (bit & 31))) { return mNT_FishIdx2FishItemNo(fish_no); } else { return EMPTY_NO; @@ -130,179 +132,101 @@ static mActor_name_t mIV_set_collect_itemNo(int type, int page) { } } -static int mIV_get_player_item_anime_id(void) { +static s16 mIV_get_player_item_anime_id(void) { mActor_name_t item = Now_Private->equipment; + s16 res; if (item >= ITM_NET && item <= ITM_NET) { - return mIV_ITEM_KIND_NET; + res = mIV_ITEM_KIND_NET; + } else if (item == ITM_AXE) { + res = mIV_ITEM_KIND_AXE; + } else if (item == ITM_GOLDEN_AXE) { + res = mIV_ITEM_KIND_GOLD_AXE; + } else if (item == ITM_AXE_USE_1) { + res = mIV_ITEM_KIND_AXE_USE_1; + } else if (item == ITM_AXE_USE_2) { + res = mIV_ITEM_KIND_AXE_USE_2; + } else if (item == ITM_AXE_USE_3) { + res = mIV_ITEM_KIND_AXE_USE_3; + } else if (item == ITM_AXE_USE_4) { + res = mIV_ITEM_KIND_AXE_USE_4; + } else if (item == ITM_AXE_USE_5) { + res = mIV_ITEM_KIND_AXE_USE_5; + } else if (item == ITM_AXE_USE_6) { + res = mIV_ITEM_KIND_AXE_USE_6; + } else if (item == ITM_AXE_USE_7) { + res = mIV_ITEM_KIND_AXE_USE_7; + } else if (item >= ITM_ROD && item <= ITM_ROD) { + res = mIV_ITEM_KIND_ROD; + } else if (item >= ITM_UMBRELLA_START && item <= ITM_MY_ORG_UMBRELLA7) { + res = mIV_ITEM_KIND_UMBRELLA; + } else if (item >= ITM_SHOVEL && item <= ITM_SHOVEL) { + res = mIV_ITEM_KIND_SHOVEL; + } else if (item >= ITM_GOLDEN_AXE && item <= ITM_GOLDEN_AXE) { /* duplicate golden axe check */ + res = mIV_ITEM_KIND_GOLD_AXE; + } else if (item >= ITM_GOLDEN_NET && item <= ITM_GOLDEN_NET) { + res = mIV_ITEM_KIND_GOLD_NET; + } else if (item >= ITM_GOLDEN_ROD && item <= ITM_GOLDEN_ROD) { + res = mIV_ITEM_KIND_GOLD_ROD; + } else if (item >= ITM_GOLDEN_SHOVEL && item <= ITM_GOLDEN_SHOVEL) { + res = mIV_ITEM_KIND_GOLD_SHOVEL; + } else if (item == ITM_RED_BALLOON) { + res = mIV_ITEM_KIND_RED_BALLOON; + } else if (item == ITM_YELLOW_BALLOON) { + res = mIV_ITEM_KIND_YELLOW_BALLOON; + } else if (item == ITM_BLUE_BALLOON) { + res = mIV_ITEM_KIND_BLUE_BALLOON; + } else if (item == ITM_GREEN_BALLOON) { + res = mIV_ITEM_KIND_GREEN_BALLOON; + } else if (item == ITM_PURPLE_BALLOON) { + res = mIV_ITEM_KIND_PURPLE_BALLOON; + } else if (item == ITM_BUNNY_P_BALLOON) { + res = mIV_ITEM_KIND_BUNNY_P_BALLOON; + } else if (item == ITM_BUNNY_B_BALLOON) { + res = mIV_ITEM_KIND_BUNNY_B_BALLOON; + } else if (item == ITM_BUNNY_O_BALLOON) { + res = mIV_ITEM_KIND_BUNNY_O_BALLOON; + } else if (item == ITM_YELLOW_PINWHEEL) { + res = mIV_ITEM_KIND_YELLOW_PINWHEEL; + } else if (item == ITM_RED_PINWHEEL) { + res = mIV_ITEM_KIND_RED_PINWHEEL; + } else if (item == ITM_TIGER_PINWHEEL) { + res = mIV_ITEM_KIND_TIGER_PINWHEEL; + } else if (item == ITM_GREEN_PINWHEEL) { + res = mIV_ITEM_KIND_GREEN_PINWHEEL; + } else if (item == ITM_PINK_PINWHEEL) { + res = mIV_ITEM_KIND_PINK_PINWHEEL; + } else if (item == ITM_STRIPED_PINWHEEL) { + res = mIV_ITEM_KIND_STRIPED_PINWHEEL; + } else if (item == ITM_FLOWER_PINWHEEL) { + res = mIV_ITEM_KIND_FLOWER_PINWHEEL; + } else if (item == ITM_FANCY_PINWHEEL) { + res = mIV_ITEM_KIND_FANCY_PINWHEEL; + } else if (item == ITM_BLUEBELL_FAN) { + res = mIV_ITEM_KIND_BLUEBELL_FAN; + } else if (item == ITM_PLUM_FAN) { + res = mIV_ITEM_KIND_PLUM_FAN; + } else if (item == ITM_BAMBOO_FAN) { + res = mIV_ITEM_KIND_BAMBOO_FAN; + } else if (item == ITM_CLOUD_FAN) { + res = mIV_ITEM_KIND_CLOUD_FAN; + } else if (item == ITM_MAPLE_FAN) { + res = mIV_ITEM_KIND_MAPLE_FAN; + } else if (item == ITM_FAN_FAN) { + res = mIV_ITEM_KIND_FAN_FAN; + } else if (item == ITM_FLOWER_FAN) { + res = mIV_ITEM_KIND_FLOWER_FAN; + } else if (item == ITM_LEAF_FAN) { + res = mIV_ITEM_KIND_LEAF_FAN; + } else { + res = mIV_ITEM_KIND_NUM; /* No animation */ } - if (item == ITM_AXE) { - return mIV_ITEM_KIND_AXE; - } - - if (item == ITM_GOLDEN_AXE) { - return mIV_ITEM_KIND_GOLD_AXE; - } - - if (item == ITM_AXE_USE_1) { - return mIV_ITEM_KIND_AXE_USE_1; - } - - if (item == ITM_AXE_USE_2) { - return mIV_ITEM_KIND_AXE_USE_2; - } - - if (item == ITM_AXE_USE_3) { - return mIV_ITEM_KIND_AXE_USE_3; - } - - if (item == ITM_AXE_USE_4) { - return mIV_ITEM_KIND_AXE_USE_4; - } - - if (item == ITM_AXE_USE_5) { - return mIV_ITEM_KIND_AXE_USE_5; - } - - if (item == ITM_AXE_USE_6) { - return mIV_ITEM_KIND_AXE_USE_6; - } - - if (item == ITM_AXE_USE_7) { - return mIV_ITEM_KIND_AXE_USE_7; - } - - if (item >= ITM_ROD && item <= ITM_ROD) { - return mIV_ITEM_KIND_ROD; - } - - if (item >= ITM_UMBRELLA_START && item <= ITM_MY_ORG_UMBRELLA7) { - return mIV_ITEM_KIND_UMBRELLA; - } - - if (item >= ITM_SHOVEL && item <= ITM_SHOVEL) { - return mIV_ITEM_KIND_SHOVEL; - } - - /* duplicate golden axe check */ - if (item >= ITM_GOLDEN_AXE && item <= ITM_GOLDEN_AXE) { - return mIV_ITEM_KIND_GOLD_AXE; - } - - if (item >= ITM_GOLDEN_NET && item <= ITM_GOLDEN_NET) { - return mIV_ITEM_KIND_GOLD_NET; - } - - if (item >= ITM_GOLDEN_ROD && item <= ITM_GOLDEN_ROD) { - return mIV_ITEM_KIND_GOLD_ROD; - } - - if (item >= ITM_GOLDEN_SHOVEL && item <= ITM_GOLDEN_SHOVEL) { - return mIV_ITEM_KIND_GOLD_SHOVEL; - } - - if (item == ITM_RED_BALLOON) { - return mIV_ITEM_KIND_RED_BALLOON; - } - - if (item == ITM_YELLOW_BALLOON) { - return mIV_ITEM_KIND_YELLOW_BALLOON; - } - - if (item == ITM_BLUE_BALLOON) { - return mIV_ITEM_KIND_BLUE_BALLOON; - } - - if (item == ITM_GREEN_BALLOON) { - return mIV_ITEM_KIND_GREEN_BALLOON; - } - - if (item == ITM_PURPLE_BALLOON) { - return mIV_ITEM_KIND_PURPLE_BALLOON; - } - - if (item == ITM_BUNNY_P_BALLOON) { - return mIV_ITEM_KIND_BUNNY_P_BALLOON; - } - - if (item == ITM_BUNNY_B_BALLOON) { - return mIV_ITEM_KIND_BUNNY_B_BALLOON; - } - - if (item == ITM_BUNNY_O_BALLOON) { - return mIV_ITEM_KIND_BUNNY_O_BALLOON; - } - - if (item == ITM_YELLOW_PINWHEEL) { - return mIV_ITEM_KIND_YELLOW_PINWHEEL; - } - - if (item == ITM_RED_PINWHEEL) { - return mIV_ITEM_KIND_RED_PINWHEEL; - } - - if (item == ITM_TIGER_PINWHEEL) { - return mIV_ITEM_KIND_TIGER_PINWHEEL; - } - - if (item == ITM_GREEN_PINWHEEL) { - return mIV_ITEM_KIND_GREEN_PINWHEEL; - } - - if (item == ITM_PINK_PINWHEEL) { - return mIV_ITEM_KIND_PINK_PINWHEEL; - } - - if (item == ITM_STRIPED_PINWHEEL) { - return mIV_ITEM_KIND_STRIPED_PINWHEEL; - } - - if (item == ITM_FLOWER_PINWHEEL) { - return mIV_ITEM_KIND_FLOWER_PINWHEEL; - } - - if (item == ITM_FANCY_PINWHEEL) { - return mIV_ITEM_KIND_FANCY_PINWHEEL; - } - - if (item == ITM_BLUEBELL_FAN) { - return mIV_ITEM_KIND_BLUEBELL_FAN; - } - - if (item == ITM_PLUM_FAN) { - return mIV_ITEM_KIND_PLUM_FAN; - } - - if (item == ITM_BAMBOO_FAN) { - return mIV_ITEM_KIND_BAMBOO_FAN; - } - - if (item == ITM_CLOUD_FAN) { - return mIV_ITEM_KIND_CLOUD_FAN; - } - - if (item == ITM_MAPLE_FAN) { - return mIV_ITEM_KIND_MAPLE_FAN; - } - - if (item == ITM_FAN_FAN) { - return mIV_ITEM_KIND_FAN_FAN; - } - - if (item == ITM_FLOWER_FAN) { - return mIV_ITEM_KIND_FLOWER_FAN; - } - - if (item == ITM_LEAF_FAN) { - return mIV_ITEM_KIND_LEAF_FAN; - } - - return mIV_ITEM_KIND_NUM; /* No animation */ + return res; } static int mIV_ChangeIndex_mIV_to_mPlib(s16 idx) { - static s8 data[] = { + static const s8 data[] = { mPlayer_ITEM_KIND_AXE, mPlayer_ITEM_KIND_NET, mPlayer_ITEM_KIND_UMBRELLA00, @@ -358,5 +282,1840 @@ static int mIV_ChangeIndex_mIV_to_mPlib(s16 idx) { } static int mIV_Get_player_item_shape_index(int idx) { - if (idx >= 0 && idx < mIV_ITEM_KIND_NUM) {} + if (idx >= 0 && idx < mIV_ITEM_KIND_NUM) { + int plib_idx = mIV_ChangeIndex_mIV_to_mPlib(idx); + int shape_idx = mPlib_Get_BasicItemShapeIndex_fromItemKind(plib_idx); + + if (shape_idx >= 0 && shape_idx < mPlayer_ITEM_DATA_NUM) { + return shape_idx; + } + + return mPlayer_ITEM_DATA_NUM; + } + + return -1; +} + +static cKF_Skeleton_R_c* mIV_Get_pl_item_skeleton(int idx) { + if (idx >= 0 && idx < mIV_ITEM_KIND_NUM) { + int shape_idx = mIV_Get_player_item_shape_index(idx); + + if (shape_idx >= 0 && shape_idx < mPlayer_ITEM_DATA_NUM) { + u8 data_type = mPlib_Get_Item_DataPointerType(shape_idx); + + if (data_type == mPlayer_ITEM_DATA_TYPE_SKELETON) { + return (cKF_Skeleton_R_c*)mPlib_Get_Item_DataPointer(shape_idx); + } + } + } + + return NULL; +} + +static int mIV_Get_player_com_animation_index(s16 idx) { + return mPlib_Get_BasicPlayerAnimeIndex_fromItemKind(mIV_ChangeIndex_mIV_to_mPlib(idx)); +} + +static cKF_Animation_R_c* mIV_Get_pl_com_anime(s16 idx) { + return mPlib_Get_Pointer_Animation(mIV_Get_player_com_animation_index(idx)); +} + +static int mIV_Get_player_com_part_table_index(s16 idx) { + int plib_idx = mIV_ChangeIndex_mIV_to_mPlib(idx); + int anime_idx = mPlib_Get_BasicPlayerAnimeIndex_fromItemKind(plib_idx); + + return mPlib_Get_BasicPartTableIndex_fromAnimeIndex(anime_idx); +} + +static int mIV_Get_player_item_anime_index(s16 idx) { + int anime_idx = mPlib_Get_BasicItemAnimeIndex_fromItemKind(mIV_ChangeIndex_mIV_to_mPlib(idx)); + + if (anime_idx >= 0 && anime_idx < mPlayer_ITEM_DATA_NUM) { + return anime_idx == mPlayer_ITEM_DATA_BALLOON_GYAZA ? mPlayer_ITEM_DATA_BALLOON_WAIT : anime_idx; + } + + return mPlayer_ITEM_DATA_NUM; +} + +static cKF_Animation_R_c* mIV_Get_pl_item_anime(s16 idx) { + int anime_idx = mIV_Get_player_item_anime_index(idx); + + if (anime_idx >= 0 && anime_idx < mPlayer_ITEM_DATA_NUM) { + return (cKF_Animation_R_c*)mPlib_Get_Item_DataPointer(anime_idx); + } + + return NULL; +} + +static cKF_Animation_R_c* mIV_Get_pl_main_anime(int idx) { + if (idx >= 0 && idx < mIV_ANIM_NUM) { + return mPlib_Get_Pointer_Animation(mIV_Get_pl_main_anime_index(idx)); + } + + return NULL; +} + +static void mIV_pl_load_player_anime(Submenu* submenu, f32 morph_frame) { + mSM_Segment_c* seg = &submenu->overlay->segment; + mIV_Ovl_c* inv_ovl = submenu->overlay->inventory_ovl; + int main_anim_idx = seg->player_main_anime_idx; + int item_anim_idx = seg->player_item_anime_idx; + int com_type = mIV_ITEM_KIND_NUM; + int unused_idx0 = mIV_Get_pl_main_anime_index(main_anim_idx); + cKF_Animation_R_c* anime = mIV_Get_pl_main_anime(main_anim_idx); + int mode; + int bank_idx; + + if (item_anim_idx != mIV_ITEM_KIND_NUM) { + if (main_anim_idx == mIV_ANIM_EAT) { + com_type = mIV_ITEM_KIND_NET; // ? + } else if (main_anim_idx == mIV_ANIM_WALK) { + com_type = item_anim_idx; + } + } + + if (com_type != mIV_ITEM_KIND_NUM) { + mPlib_DMA_player_Part_Table(seg->player_part_table, mIV_Get_player_com_part_table_index(com_type)); + } else { + mPlib_DMA_player_Part_Table(seg->player_part_table, mPlayer_PART_TABLE_NORMAL); + } + + /* Select animation mode */ + if (main_anim_idx == mIV_ANIM_WALK) { + mode = cKF_FRAMECONTROL_REPEAT; + } else { + mode = cKF_FRAMECONTROL_STOP; + } + + /* Load main animation */ + if (main_anim_idx == mIV_ANIM_CHANGE) { + cKF_SkeletonInfo_R_init_standard_setframeandspeedandmorphandmode(&inv_ovl->player_main_keyframe, anime, NULL, + 1.0f, 1.0f, morph_frame, mode); + } else { + cKF_SkeletonInfo_R_init_standard_setframeandspeedandmorphandmode(&inv_ovl->player_main_keyframe, anime, NULL, + 1.0f, 0.5f, morph_frame, mode); + } + + if (com_type != mIV_ITEM_KIND_NUM) { + int unused_anim1 = mIV_Get_player_com_animation_index(com_type); + + anime = mIV_Get_pl_com_anime(com_type); + } + + /* Load com animation */ + if (main_anim_idx == mIV_ANIM_CHANGE) { + cKF_SkeletonInfo_R_init_standard_setframeandspeedandmorphandmode(&inv_ovl->player_com_keyframe, anime, NULL, + 1.0f, 1.0f, morph_frame, mode); + } else { + cKF_SkeletonInfo_R_init_standard_setframeandspeedandmorphandmode(&inv_ovl->player_com_keyframe, anime, NULL, + 1.0f, 0.5f, morph_frame, mode); + } + + /* Play animations */ + cKF_SkeletonInfo_R_combine_play(&inv_ovl->player_main_keyframe, &inv_ovl->player_com_keyframe, + seg->player_part_table); + + seg->player_umbrella_bank_idx ^= 1; + bank_idx = seg->player_umbrella_bank_idx; + if (item_anim_idx == mIV_ITEM_KIND_UMBRELLA) { + mActor_name_t item = Now_Private->equipment; + + seg->umbrella_ids[bank_idx] = + (item >= ITM_UMBRELLA00 && item <= ITM_MY_ORG_UMBRELLA7) ? (item - ITM_UMBRELLA_START) : EMPTY_NO; + } else if (item_anim_idx != mIV_ITEM_KIND_NUM) { + int unused_shape_idx = mIV_Get_player_item_shape_index(item_anim_idx); + cKF_Skeleton_R_c* item_skel = mIV_Get_pl_item_skeleton(item_anim_idx); + int unused_anim_idx; + cKF_Animation_R_c* item_anim; + + if (item_skel != NULL) { + cKF_SkeletonInfo_R_ct(&inv_ovl->item_keyframe, item_skel, NULL, inv_ovl->item_work, inv_ovl->item_morph); + unused_anim_idx = mIV_Get_player_item_anime_index(item_anim_idx); + item_anim = mIV_Get_pl_item_anime(item_anim_idx); + + if (item_anim_idx >= mIV_ITEM_KIND_YELLOW_PINWHEEL && item_anim_idx <= mIV_ITEM_KIND_FANCY_PINWHEEL) { + cKF_SkeletonInfo_R_init(&inv_ovl->item_keyframe, inv_ovl->item_keyframe.skeleton, item_anim, 1.0f, + (f32)item_anim->frames, 1.0f, 7.5f, 0.0f, cKF_FRAMECONTROL_REPEAT, NULL); + } else { + cKF_SkeletonInfo_R_init(&inv_ovl->item_keyframe, inv_ovl->item_keyframe.skeleton, item_anim, 1.0f, + (f32)item_anim->frames, 1.0f, 0.5f, 0.0f, cKF_FRAMECONTROL_REPEAT, NULL); + } + + cKF_SkeletonInfo_R_play(&inv_ovl->item_keyframe); + } + } +} + +static void mIV_pl_shape_init(Submenu* submenu) { + mSM_Segment_c* seg = &submenu->overlay->segment; + mIV_Ovl_c* inv_ovl = submenu->overlay->inventory_ovl; + + cKF_SkeletonInfo_R_ct(&inv_ovl->player_main_keyframe, mPlib_get_player_mdl_p(), NULL, inv_ovl->player_work, + inv_ovl->player_morph); + cKF_SkeletonInfo_R_ct(&inv_ovl->player_com_keyframe, mPlib_get_player_mdl_p(), NULL, inv_ovl->player_work, + inv_ovl->player_morph); + seg->player_umbrella_bank_idx = 0; + seg->player_main_anime_idx = mIV_ANIM_WALK; + seg->player_item_anime_idx = mIV_get_player_item_anime_id(); + seg->change_player_main_anime_idx = mIV_ANIM_WALK; + mIV_pl_load_player_anime(submenu, 0.0f); +} + +static void mIV_pl_eff_move(Submenu* submenu) { + mIV_Ovl_c* inv_ovl = submenu->overlay->inventory_ovl; + mIV_pl_eff_c* effect_p = inv_ovl->pl_eff; + int i; + + for (i = 0; i < mIV_PLAYER_EFFECT_NUM; i++) { + if (effect_p->timer != 0) { + effect_p->timer--; + + if (effect_p->timer > 20) { + chase_f(&effect_p->scale, 0.009f, 0.0009f); + } else { + chase_f(&effect_p->scale, 0.0f, 0.00045f); + } + + effect_p->speed += -0.05f; + effect_p->pos.y += effect_p->speed; + } + + effect_p++; + } + + if (submenu->overlay->segment.player_main_anime_idx == mIV_ANIM_CHANGE) { + f32 cur_frame = inv_ovl->player_main_keyframe.frame_control.current_frame; + int effect_no = (int)cur_frame % mIV_PLAYER_EFFECT_NUM; + s16 angle = (int)cur_frame * DEG2SHORT_ANGLE2(-36.0f); + mIV_pl_eff_c* effect_p = &inv_ovl->pl_eff[effect_no]; + + effect_p->timer = 30; + effect_p->speed = 0.0f; + effect_p->scale = 0.0f; + effect_p->pos.x = 22.0f * sin_s(angle) + RANDOM2_F(5.0f); + effect_p->pos.z = 22.0f * cos_s(angle) + RANDOM2_F(5.0f); + effect_p->pos.y = (35.0f / inv_ovl->player_main_keyframe.frame_control.end_frame) * cur_frame + RANDOM2_F(5.0f); + } +} + +static void mIV_pl_check_anm_change(Submenu* submenu) { + mSM_Segment_c* seg = &submenu->overlay->segment; + f32 morph_frame; + + if (seg->change_player_main_anime_idx != seg->player_main_anime_idx) { + if (seg->change_player_main_anime_idx == mIV_ANIM_EAT) { + morph_frame = 6.0f; + } else if (seg->change_player_main_anime_idx == mIV_ANIM_CHANGE) { + morph_frame = -5.0f; + } else if (seg->change_player_main_anime_idx == mIV_ANIM_CATCH) { + morph_frame = -7.0f; + } else if (seg->player_main_anime_idx == mIV_ANIM_CHANGE) { + morph_frame = -5.0f; + } else if (seg->player_main_anime_idx == mIV_ANIM_EAT) { + morph_frame = -5.0f; + } else { + seg->player_item_anime_idx = mIV_get_player_item_anime_id(); + morph_frame = -8.0f; + } + + seg->player_main_anime_idx = seg->change_player_main_anime_idx; + mIV_pl_load_player_anime(submenu, morph_frame); + } +} + +static void mIV_pl_shape_move(Submenu* submenu) { + mSM_Segment_c* seg = &submenu->overlay->segment; + mIV_Ovl_c* inv_ovl = submenu->overlay->inventory_ovl; + int anim_state = cKF_SkeletonInfo_R_combine_play(&inv_ovl->player_main_keyframe, &inv_ovl->player_com_keyframe, + seg->player_part_table); + + if (seg->player_item_anime_idx != mIV_ITEM_KIND_NUM && + mIV_Get_pl_item_skeleton(seg->player_item_anime_idx) != NULL) { + cKF_SkeletonInfo_R_play(&inv_ovl->item_keyframe); + } + + if (seg->player_anime_timer > 0) { + seg->player_anime_timer--; + } + + mIV_pl_eff_move(submenu); + if (seg->player_main_anime_idx == mIV_ANIM_CATCH) { + seg->player_anime_timer = 8; + } else if (seg->player_main_anime_idx == mIV_ANIM_CHANGE) { + seg->player_anime_timer = 5; + + if (anim_state == cKF_STATE_STOPPED) { + seg->change_player_main_anime_idx = mIV_ANIM_WALK; + } + } else if (seg->player_main_anime_idx == mIV_ANIM_EAT) { + seg->player_anime_timer = 5; + + if (anim_state == cKF_STATE_STOPPED) { + seg->change_player_main_anime_idx = mIV_ANIM_WALK; + } else if (cKF_FrameControl_passCheck_now(&inv_ovl->player_main_keyframe.frame_control, 17.0f)) { + sAdo_SysTrgStart(NA_SE_EAT); + } + } + + mIV_pl_check_anm_change(submenu); +} + +static void mIV_pl_shape_item_draw_net(Submenu* submenu, GAME* game) { + cKF_SkeletonInfo_R_c* item_kf = &submenu->overlay->inventory_ovl->item_keyframe; + Mtx* mtx = (Mtx*)GRAPH_ALLOC_TYPE(game->graph, Mtx, item_kf->skeleton->num_shown_joints); + + if (mtx != NULL) { + cKF_Si3_draw_R_SV(game, item_kf, mtx, NULL, NULL, NULL); + } +} + +static void mIV_pl_shape_item_draw_axe(Submenu* submenu, GAME* game) { + int shape_idx = mIV_Get_player_item_shape_index(submenu->overlay->segment.player_item_anime_idx); + Gfx* axe_gfx = (Gfx*)mPlib_Get_Item_DataPointer(shape_idx); + + if (axe_gfx != NULL) { + OPEN_DISP(game->graph); + + gSPDisplayList(NEXT_POLY_OPA_DISP, axe_gfx); + + CLOSE_DISP(game->graph); + } +} + +typedef struct umbrella_data_s { + Gfx* e_model; + Gfx* kasa_model; +} mIV_umbrella_data_c; + +extern Gfx e_umb01_model[]; +extern Gfx kasa_umb01_model[]; +extern Gfx e_umb02_model[]; +extern Gfx kasa_umb02_model[]; +extern Gfx e_umb03_model[]; +extern Gfx kasa_umb03_model[]; +extern Gfx e_umb04_model[]; +extern Gfx kasa_umb04_model[]; +extern Gfx e_umb05_model[]; +extern Gfx kasa_umb05_model[]; +extern Gfx e_umb06_model[]; +extern Gfx kasa_umb06_model[]; +extern Gfx e_umb07_model[]; +extern Gfx kasa_umb07_model[]; +extern Gfx e_umb08_model[]; +extern Gfx kasa_umb08_model[]; +extern Gfx e_umb09_model[]; +extern Gfx kasa_umb09_model[]; +extern Gfx e_umb10_model[]; +extern Gfx kasa_umb10_model[]; +extern Gfx e_umb11_model[]; +extern Gfx kasa_umb11_model[]; +extern Gfx e_umb12_model[]; +extern Gfx kasa_umb12_model[]; +extern Gfx e_umb13_model[]; +extern Gfx kasa_umb13_model[]; +extern Gfx e_umb14_model[]; +extern Gfx kasa_umb14_model[]; +extern Gfx e_umb15_model[]; +extern Gfx kasa_umb15_model[]; +extern Gfx e_umb16_model[]; +extern Gfx kasa_umb16_model[]; +extern Gfx e_umb17_model[]; +extern Gfx kasa_umb17_model[]; +extern Gfx e_umb18_model[]; +extern Gfx kasa_umb18_model[]; +extern Gfx e_umb19_model[]; +extern Gfx kasa_umb19_model[]; +extern Gfx e_umb20_model[]; +extern Gfx kasa_umb20_model[]; +extern Gfx e_umb21_model[]; +extern Gfx kasa_umb21_model[]; +extern Gfx e_umb22_model[]; +extern Gfx kasa_umb22_model[]; +extern Gfx e_umb23_model[]; +extern Gfx kasa_umb23_model[]; +extern Gfx e_umb24_model[]; +extern Gfx kasa_umb24_model[]; +extern Gfx e_umb25_model[]; +extern Gfx kasa_umb25_model[]; +extern Gfx e_umb26_model[]; +extern Gfx kasa_umb26_model[]; +extern Gfx e_umb27_model[]; +extern Gfx kasa_umb27_model[]; +extern Gfx e_umb28_model[]; +extern Gfx kasa_umb28_model[]; +extern Gfx e_umb29_model[]; +extern Gfx kasa_umb29_model[]; +extern Gfx e_umb30_model[]; +extern Gfx kasa_umb30_model[]; +extern Gfx e_umb31_model[]; +extern Gfx kasa_umb31_model[]; +extern Gfx e_umb32_model[]; +extern Gfx kasa_umb32_model[]; +extern Gfx e_umb_w_model[]; +extern Gfx kasa_umb_w_model[]; + +static void mIV_pl_shape_item_draw_umbrella(Submenu* submenu, GAME* game) { + // clang-format off + static mIV_umbrella_data_c umb_data[] = { + { e_umb01_model, kasa_umb01_model }, + { e_umb02_model, kasa_umb02_model }, + { e_umb03_model, kasa_umb03_model }, + { e_umb04_model, kasa_umb04_model }, + { e_umb05_model, kasa_umb05_model }, + { e_umb06_model, kasa_umb06_model }, + { e_umb07_model, kasa_umb07_model }, + { e_umb08_model, kasa_umb08_model }, + { e_umb09_model, kasa_umb09_model }, + { e_umb10_model, kasa_umb10_model }, + { e_umb11_model, kasa_umb11_model }, + { e_umb12_model, kasa_umb12_model }, + { e_umb13_model, kasa_umb13_model }, + { e_umb14_model, kasa_umb14_model }, + { e_umb15_model, kasa_umb15_model }, + { e_umb16_model, kasa_umb16_model }, + { e_umb17_model, kasa_umb17_model }, + { e_umb18_model, kasa_umb18_model }, + { e_umb19_model, kasa_umb19_model }, + { e_umb20_model, kasa_umb20_model }, + { e_umb21_model, kasa_umb21_model }, + { e_umb22_model, kasa_umb22_model }, + { e_umb23_model, kasa_umb23_model }, + { e_umb24_model, kasa_umb24_model }, + { e_umb25_model, kasa_umb25_model }, + { e_umb26_model, kasa_umb26_model }, + { e_umb27_model, kasa_umb27_model }, + { e_umb28_model, kasa_umb28_model }, + { e_umb29_model, kasa_umb29_model }, + { e_umb30_model, kasa_umb30_model }, + { e_umb31_model, kasa_umb31_model }, + { e_umb32_model, kasa_umb32_model }, + { e_umb_w_model, kasa_umb_w_model }, + { e_umb_w_model, kasa_umb_w_model }, + { e_umb_w_model, kasa_umb_w_model }, + { e_umb_w_model, kasa_umb_w_model }, + { e_umb_w_model, kasa_umb_w_model }, + { e_umb_w_model, kasa_umb_w_model }, + { e_umb_w_model, kasa_umb_w_model }, + { e_umb_w_model, kasa_umb_w_model }, + }; + // clang-format on + GRAPH* graph = game->graph; + int umbrella_idx = submenu->overlay->segment.umbrella_ids[submenu->overlay->segment.player_umbrella_bank_idx]; + mIV_umbrella_data_c* umb_data_p = &umb_data[umbrella_idx]; + int umbrella_item_kind = mPlayer_ITEM_KIND_UMBRELLA00 + umbrella_idx; + + _texture_z_light_fog_prim_npc(graph); + + OPEN_POLY_OPA_DISP(graph); + + gSPLoadGeometryMode(POLY_OPA_DISP++, G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH); + + Matrix_RotateY(DEG2SHORT_ANGLE2(-90.0f), 1); + Matrix_translate(800.0f, 0.0f, 0.0f, 1); + + gSPMatrix(POLY_OPA_DISP++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, umb_data_p->e_model); + Matrix_translate(4000.0f, 0.0f, 0.0f, 1); + + /* Handle custom designs */ + if (umbrella_item_kind >= mPlayer_ITEM_KIND_ORG_UMBRELLA00) { + int org_idx = (umbrella_item_kind - mPlayer_ITEM_KIND_ORG_UMBRELLA00) & 7; + + gSPSegment(POLY_OPA_DISP++, G_MWO_SEGMENT_8, mNW_PaletteIdx2Palette(Now_Private->my_org[org_idx].palette)); + gSPSegment(POLY_OPA_DISP++, G_MWO_SEGMENT_9, Now_Private->my_org[org_idx].design.data); + } + + gSPMatrix(POLY_OPA_DISP++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, umb_data_p->kasa_model); + + CLOSE_POLY_OPA_DISP(graph); +} + +extern Gfx inv_uki_model[]; // rod +extern Gfx inv_uki2_model[]; // golden rod + +static void mIV_pl_shape_item_draw_rod(Submenu* submenu, GAME* game) { + mSM_Segment_c* seg = &submenu->overlay->segment; + cKF_SkeletonInfo_R_c* item_kf = &submenu->overlay->inventory_ovl->item_keyframe; + Mtx* mtx = (Mtx*)GRAPH_ALLOC_TYPE(game->graph, Mtx, item_kf->skeleton->num_shown_joints); + + if (mtx != NULL) { + xyz_t pos; + + Matrix_Position_VecZ(&pos, 1500.0f); + cKF_Si3_draw_R_SV(game, item_kf, mtx, NULL, NULL, NULL); + Matrix_put(&submenu->overlay->inventory_ovl->item_mtx); + Matrix_translate(0.0f, 0.0f, 1500.0f, 1); + Matrix_RotateZ(DEG2SHORT_ANGLE2(24.219360f), 1); // 0x1139 + Matrix_RotateX(DEG2SHORT_ANGLE2(65.494995f), 1); // 0x2E93 + Matrix_RotateY(DEG2SHORT_ANGLE2(79.634399f), 1); // 0x38A1 + Matrix_translate(0.0f, -500.0f, 0.0f, 1); + + OPEN_DISP(game->graph); + + gSPMatrix(NEXT_POLY_OPA_DISP, _Matrix_to_Mtx_new(game->graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + if (seg->player_item_anime_idx == mIV_ITEM_KIND_GOLD_ROD) { + gSPDisplayList(NEXT_POLY_OPA_DISP, inv_uki2_model); + } else { + gSPDisplayList(NEXT_POLY_OPA_DISP, inv_uki_model); + } + + CLOSE_DISP(game->graph); + } +} + +static void mIV_pl_shape_item_draw_scoop(Submenu* submenu, GAME* game) { + int shape_idx = mIV_Get_player_item_shape_index(submenu->overlay->segment.player_item_anime_idx); + Gfx* scoop_gfx = (Gfx*)mPlib_Get_Item_DataPointer(shape_idx); + + if (scoop_gfx != NULL) { + OPEN_DISP(game->graph); + + gSPDisplayList(NEXT_POLY_OPA_DISP, scoop_gfx); + + CLOSE_DISP(game->graph); + } +} + +static int mIV_pl_shape_item_draw_balloon_Before(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_idx, + Gfx** joint_shape, u8* joint_flags, void* arg, s_xyz* joint_rot, + xyz_t* joint_pos) { + switch (joint_idx) { + case 1: + case 2: + case 3: { + OPEN_DISP(game->graph); + + gDPPipeSync(NEXT_POLY_OPA_DISP); + gDPSetTexEdgeAlpha(NEXT_POLY_OPA_DISP, 80); + + CLOSE_DISP(game->graph); + break; + } + } + + return TRUE; +} + +static int mIV_pl_shape_item_draw_balloon_After(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_idx, + Gfx** joint_shape, u8* joint_flags, void* arg, s_xyz* joint_rot, + xyz_t* joint_pos) { + switch (joint_idx) { + case 1: + case 2: + case 3: { + OPEN_DISP(game->graph); + + gDPPipeSync(NEXT_POLY_OPA_DISP); + gDPSetTexEdgeAlpha(NEXT_POLY_OPA_DISP, 144); + + CLOSE_DISP(game->graph); + break; + } + } + + return TRUE; +} + +static void mIV_pl_shape_item_draw_balloon(Submenu* submenu, GAME* game) { + cKF_SkeletonInfo_R_c* item_kf = &submenu->overlay->inventory_ovl->item_keyframe; + Mtx* mtx = (Mtx*)GRAPH_ALLOC_TYPE(game->graph, Mtx, item_kf->skeleton->num_shown_joints); + + if (mtx != NULL) { + static xyz_t dummy_eye = { 0.0f, 0.0f, 1.0f }; + static xyz_t dummy_light_direction = { -SQRT_3_OVER_3_F, SQRT_3_OVER_3_F, SQRT_3_OVER_3_F }; + GRAPH* graph = game->graph; + Hilite* hilite; + + OPEN_DISP(graph); + + SET_POLY_OPA_DISP( + HiliteReflect_new(&ZeroVec, &dummy_eye, &dummy_light_direction, graph, NOW_POLY_OPA_DISP, &hilite)); + + CLOSE_DISP(graph); + + cKF_Si3_draw_R_SV(game, item_kf, mtx, &mIV_pl_shape_item_draw_balloon_Before, + &mIV_pl_shape_item_draw_balloon_After, NULL); + } +} + +static void mIV_pl_shape_item_draw_windmill(Submenu* submenu, GAME* game) { + cKF_SkeletonInfo_R_c* item_kf = &submenu->overlay->inventory_ovl->item_keyframe; + Mtx* mtx = (Mtx*)GRAPH_ALLOC_TYPE(game->graph, Mtx, item_kf->skeleton->num_shown_joints); + + if (mtx != NULL) { + cKF_Si3_draw_R_SV(game, item_kf, mtx, NULL, NULL, NULL); + } +} + +static void mIV_pl_shape_item_draw_fan(Submenu* submenu, GAME* game) { + int shape_idx = mIV_Get_player_item_shape_index(submenu->overlay->segment.player_item_anime_idx); + Gfx* fan_gfx = (Gfx*)mPlib_Get_Item_DataPointer(shape_idx); + + if (fan_gfx != NULL) { + OPEN_DISP(game->graph); + + gSPDisplayList(NEXT_POLY_OPA_DISP, fan_gfx); + + CLOSE_DISP(game->graph); + } +} + +static int mIV_pl_shape_after_draw(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_idx, Gfx** joint_shape, + u8* joint_flags, void* arg, s_xyz* joint_rot, xyz_t* joint_pos) { + switch (joint_idx) { + case 20: { + Submenu* submenu = (Submenu*)arg; + + if (submenu->overlay->segment.player_item_anime_idx != mIV_ITEM_KIND_NUM) { + Matrix_get(&submenu->overlay->inventory_ovl->item_mtx); + } + + break; + } + + case 16: { + Submenu* submenu = (Submenu*)arg; + + if (submenu->overlay->segment.player_main_anime_idx == mIV_ANIM_EAT) { + Matrix_get(&submenu->overlay->inventory_ovl->food_mtx); + } + + break; + } + } + + return TRUE; +} + +typedef void (*mIV_PL_EQUIP_ITEM_DRAW_PROC)(Submenu*, GAME*); + +static void mIV_pl_equip_item_draw(Submenu* submenu, GAME* game) { + // clang-format off + static mIV_PL_EQUIP_ITEM_DRAW_PROC proc[mIV_ITEM_KIND_NUM] = { + &mIV_pl_shape_item_draw_axe, + &mIV_pl_shape_item_draw_net, + &mIV_pl_shape_item_draw_umbrella, + &mIV_pl_shape_item_draw_rod, + &mIV_pl_shape_item_draw_scoop, + &mIV_pl_shape_item_draw_axe, + &mIV_pl_shape_item_draw_net, + &mIV_pl_shape_item_draw_rod, + &mIV_pl_shape_item_draw_scoop, + &mIV_pl_shape_item_draw_balloon, + &mIV_pl_shape_item_draw_balloon, + &mIV_pl_shape_item_draw_balloon, + &mIV_pl_shape_item_draw_balloon, + &mIV_pl_shape_item_draw_balloon, + &mIV_pl_shape_item_draw_balloon, + &mIV_pl_shape_item_draw_balloon, + &mIV_pl_shape_item_draw_balloon, + &mIV_pl_shape_item_draw_windmill, + &mIV_pl_shape_item_draw_windmill, + &mIV_pl_shape_item_draw_windmill, + &mIV_pl_shape_item_draw_windmill, + &mIV_pl_shape_item_draw_windmill, + &mIV_pl_shape_item_draw_windmill, + &mIV_pl_shape_item_draw_windmill, + &mIV_pl_shape_item_draw_windmill, + &mIV_pl_shape_item_draw_fan, + &mIV_pl_shape_item_draw_fan, + &mIV_pl_shape_item_draw_fan, + &mIV_pl_shape_item_draw_fan, + &mIV_pl_shape_item_draw_fan, + &mIV_pl_shape_item_draw_fan, + &mIV_pl_shape_item_draw_fan, + &mIV_pl_shape_item_draw_fan, + &mIV_pl_shape_item_draw_axe, + &mIV_pl_shape_item_draw_axe, + &mIV_pl_shape_item_draw_axe, + &mIV_pl_shape_item_draw_axe, + &mIV_pl_shape_item_draw_axe, + &mIV_pl_shape_item_draw_axe, + &mIV_pl_shape_item_draw_axe, + }; + // clang-format on + + mSM_Segment_c* seg = &submenu->overlay->segment; + + if (seg->player_item_anime_idx != mIV_ITEM_KIND_NUM) { + GRAPH* graph = game->graph; + + Matrix_put(&submenu->overlay->inventory_ovl->item_mtx); + + OPEN_DISP(graph); + + gSPMatrix(NEXT_POLY_OPA_DISP, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + CLOSE_DISP(graph); + + (*proc[seg->player_item_anime_idx])(submenu, game); + } +} + +extern Gfx apple_DL_mode[]; +extern Gfx nuts_DL_mode[]; +extern Gfx pear_DL_mode[]; +extern Gfx peach_DL_mode[]; +extern Gfx orange_DL_mode[]; +extern Gfx matutake_DL_mode[]; +extern Gfx obj_item_cocoT_mat_model[]; +extern Gfx kabu_DL_mode[]; + +extern Gfx apple_DL_vtx[]; +extern Gfx nuts_DL_vtx[]; +extern Gfx pear_DL_vtx[]; +extern Gfx peach_DL_vtx[]; +extern Gfx orange_DL_vtx[]; +extern Gfx matutake_DL_vtx[]; +extern Gfx obj_shop_candy_modelT[]; +extern Gfx obj_item_cocoT_gfx_model[]; +extern Gfx kabu_DL_vtx[]; + +static void mIV_pl_food_item_draw(Submenu* submenu, GAME* game) { + // clang-format off + static Gfx* food_mode[] = { + apple_DL_mode, + nuts_DL_mode, + pear_DL_mode, + peach_DL_mode, + orange_DL_mode, + matutake_DL_mode, + NULL, + obj_item_cocoT_mat_model, + kabu_DL_mode, + }; + // clang-format on + + // clang-format off + static Gfx* food_model[] = { + apple_DL_vtx, + nuts_DL_vtx, + pear_DL_vtx, + peach_DL_vtx, + orange_DL_vtx, + matutake_DL_vtx, + obj_shop_candy_modelT, + obj_item_cocoT_gfx_model, + kabu_DL_vtx, + }; + // clang-format on + + if (submenu->overlay->segment.player_main_anime_idx == mIV_ANIM_EAT) { + mIV_Ovl_c* inv_ovl = submenu->overlay->inventory_ovl; + f32 cur_frame = inv_ovl->player_main_keyframe.frame_control.current_frame; + f32 rate; + GRAPH* graph = game->graph; + int food_idx = inv_ovl->food_idx; + MtxF* mtxf; + f32 scale; + f32 tmp; + xyz_t l_ofs; + xyz_t w_ofs; + + if (cur_frame < 3.0f || cur_frame >= 46.0f) { + return; + } + + if (cur_frame < 12.0f) { + tmp = (cur_frame - 3.0f) * (1.0f / 9.0f); + l_ofs.x = (tmp * 1.5f + 12.5f) * 100.0f; + l_ofs.y = (tmp * 3.0f + 5.0f) * 100.0f; + l_ofs.z = (tmp * -7.0f) * 100.0f; + } else { + tmp = (cur_frame - 12.0f) * (1.0f / 34.0f); + l_ofs.x = (tmp * -5.0f + 14.0f) * 100.0f; + l_ofs.y = (tmp * -11.75f + 8.0f) * 100.0f; + l_ofs.z = (tmp * 6.0f + -7.0f) * 100.0f; + } + + if (cur_frame < 27.0f) { + scale = 1.0f; + } else { + scale = 1.0f - (cur_frame - 27.0f) * (1.0f / 19.0f); + } + + scale *= 0.01f; + + _texture_z_light_fog_prim(graph); + Matrix_put(&submenu->overlay->inventory_ovl->food_mtx); + Matrix_Position(&l_ofs, &w_ofs); + + /* Update draw matrix */ + mtxf = get_Matrix_now(); + + /* Scale */ + mtxf->xx = scale; + mtxf->yy = scale; + mtxf->zz = scale; + + mtxf->yx = 0.0f; + mtxf->zx = 0.0f; + mtxf->xy = 0.0f; + mtxf->zy = 0.0f; + mtxf->xz = 0.0f; + mtxf->yz = 0.0f; + + /* Position */ + mtxf->xw = w_ofs.x; + mtxf->yw = w_ofs.y - scale * 884.0f; + mtxf->zw = w_ofs.z; + + OPEN_DISP(graph); + + gSPMatrix(NEXT_POLY_OPA_DISP, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + if (food_mode[food_idx] != NULL) { + gSPDisplayList(NEXT_POLY_OPA_DISP, food_mode[food_idx]); + } + + gSPDisplayList(NEXT_POLY_OPA_DISP, food_model[food_idx]); + + CLOSE_DISP(graph); + } +} + +static void mIV_pl_shape_draw(Submenu* submenu, GAME* game) { + mSM_Segment_c* seg = &submenu->overlay->segment; + cKF_SkeletonInfo_R_c* main_kf = &submenu->overlay->inventory_ovl->player_main_keyframe; + GRAPH* graph = game->graph; + Mtx* mtx = (Mtx*)GRAPH_ALLOC_TYPE(graph, Mtx, main_kf->skeleton->num_shown_joints); + u8* eye_tex_p = NULL; + u8* mouth_tex_p = NULL; + int anim_idx = mIV_Get_pl_main_anime_index(seg->player_main_anime_idx); + u8* eye_tex_anim_p = mPlib_Get_PlayerEyeTexAnimation_p(anim_idx); + u8* mouth_tex_anim_p = mPlib_Get_PlayerMouthTexAnimation_p(anim_idx); + + if (mtx != NULL) { + OPEN_DISP(graph); + + if (eye_tex_anim_p != NULL || mouth_tex_anim_p != NULL) { + cKF_FrameControl_c* frame_ctrl = &main_kf->frame_control; + f32 cur_frame = frame_ctrl->current_frame; + f32 max_frame = frame_ctrl->max_frames; + + if (1.0f <= cur_frame && cur_frame <= max_frame) { + int tex_anim_idx = (int)(cur_frame - 1.0f); + + if (eye_tex_anim_p != NULL) { + eye_tex_p = mPlib_Get_eye_tex_p(eye_tex_anim_p[tex_anim_idx]); + } + + if (mouth_tex_anim_p != NULL) { + mouth_tex_p = mPlib_Get_mouth_tex_p(mouth_tex_anim_p[tex_anim_idx]); + } + } + } + + /* Load default textures if no animation */ + if (eye_tex_p == NULL) { + eye_tex_p = mPlib_Get_eye_tex_p(0); + } + + if (mouth_tex_p == NULL) { + mouth_tex_p = mPlib_Get_mouth_tex_p(0); + } + + Matrix_scale(0.01f, 0.01f, 0.01f, 0); + + gDPPipeSync(NEXT_POLY_OPA_DISP); + gSPMatrix(NEXT_POLY_OPA_DISP, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + _texture_z_light_fog_prim(graph); + + /* Set dynamic player data */ + gSPSegment(NEXT_POLY_OPA_DISP, G_MWO_SEGMENT_8, eye_tex_p); + gSPSegment(NEXT_POLY_OPA_DISP, G_MWO_SEGMENT_9, mouth_tex_p); + gSPSegment(NEXT_POLY_OPA_DISP, G_MWO_SEGMENT_A, mPlib_get_player_tex_p(game)); + gSPSegment(NEXT_POLY_OPA_DISP, G_MWO_SEGMENT_B, mPlib_get_player_pallet_p(game)); + gSPSegment(NEXT_POLY_OPA_DISP, G_MWO_SEGMENT_C, mPlib_get_player_face_pallet_p(game)); + + CLOSE_DISP(graph); + + /* Draw skeleton */ + cKF_Si3_draw_R_SV(game, main_kf, mtx, NULL, &mIV_pl_shape_after_draw, submenu); + mIV_pl_equip_item_draw(submenu, game); + mIV_pl_food_item_draw(submenu, game); + } +} + +extern Gfx ef_takurami01_menu_render_mode[]; +extern Gfx ef_takurami01_kira_modelT[]; + +static void mIV_pl_eff_draw(GRAPH* graph, Submenu* submenu) { + int i; + mIV_pl_eff_c* pl_eff; + + _texture_z_light_fog_prim(graph); + OPEN_DISP(graph); + + pl_eff = submenu->overlay->inventory_ovl->pl_eff; + gSPSegment(NEXT_POLY_OPA_DISP, G_MWO_SEGMENT_8, ef_takurami01_menu_render_mode); + for (i = 0; i < mIV_PLAYER_EFFECT_NUM; i++) { + if (pl_eff->timer != 0) { + Matrix_translate(pl_eff->pos.x, pl_eff->pos.y, pl_eff->pos.z, 0); + Matrix_scale(pl_eff->scale, pl_eff->scale, pl_eff->scale, 1); + + gSPMatrix(NEXT_POLY_OPA_DISP, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(NEXT_POLY_OPA_DISP, ef_takurami01_kira_modelT); + } + + pl_eff++; + } + + CLOSE_DISP(graph); +} + +extern Gfx ef_shadow_in_modelT[]; + +static void mIV_pl_shadow_draw(GAME_PLAY* play, ACTOR* actorx) { + if (actorx != NULL) { + GRAPH* graph = play->game.graph; + + Matrix_scale(actorx->shape_info.shadow_size_x * 0.001f, 1.0f, actorx->shape_info.shadow_size_z * 0.001f, 0); + _texture_z_light_fog_prim(graph); + + OPEN_DISP(graph); + + gSPMatrix(NEXT_POLY_OPA_DISP, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gDPSetPrimColor(NEXT_POLY_OPA_DISP, 0, 255, 10, 0, 40, 150); + gSPDisplayList(NEXT_POLY_OPA_DISP, ef_shadow_in_modelT); + + CLOSE_DISP(graph); + } +} + +static void mIV_set_player(Submenu* submenu, GRAPH* graph, GAME_PLAY* play, f32 pos_x, f32 pos_y) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR(play); + + if (player != NULL) { + int x = (int)pos_x + 20; + int y = (int)-pos_y + 9; + /* NOTE: 128.0 and 0.0 are doubles here */ + int draw_flag = (128.0 + x >= 0.0) && (x < 320); + + OPEN_DISP(graph); + + gDPPipeSync(NEXT_POLY_OPA_DISP); + + CLOSE_DISP(graph); + + if (draw_flag) { + submenu->overlay->change_view_proc(graph, 330.0f, 25.0f, x * 4.0f, y * 4.0f, 0x900, 256, 256); + } + + mIV_pl_check_anm_change(submenu); + if (draw_flag) { + mIV_pl_shadow_draw(play, (ACTOR*)player); + mIV_pl_shape_draw(submenu, (GAME*)play); + mIV_pl_eff_draw(graph, submenu); + } + + submenu->overlay->setup_view_proc(submenu, graph, FALSE); + } +} + +static void mIV_move_Move(Submenu* submenu, mSM_MenuInfo_c* menu_info) { + submenu->overlay->move_Move_proc(submenu, menu_info); +} + +static void mIV_move_Play(Submenu* submenu, mSM_MenuInfo_c* menu_info) { + mSM_Control_c* ctrl = &submenu->overlay->menu_control; + mTG_Ovl_c* tag_ovl; + mIV_Ovl_c* inv_ovl = submenu->overlay->inventory_ovl; + + if (menu_info->open_flag == FALSE) { + int unselected_num; + + tag_ovl = submenu->overlay->tag_ovl; + if (menu_info->data0 == mSM_IV_OPEN_SEND_MAIL) { + for (unselected_num = 0; unselected_num < mPr_INVENTORY_MAIL_COUNT; unselected_num++) { + if (inv_ovl->selectable_mail_bitfield & (1 << unselected_num)) { + break; + } + } + + if (unselected_num == mPr_INVENTORY_MAIL_COUNT) { + unselected_num = 0; + } + } else { + for (unselected_num = 0; unselected_num < mPr_POCKETS_SLOT_COUNT; unselected_num++) { + if (inv_ovl->selectable_item_bitfield & (1 << unselected_num)) { + break; + } + } + + if (unselected_num == mPr_POCKETS_SLOT_COUNT) { + unselected_num = 0; + } + } + + switch (menu_info->data0) { + case mSM_IV_OPEN_NORMAL: + case mSM_IV_OPEN_SELL: + case mSM_IV_OPEN_GIVE: + case mSM_IV_OPEN_TAKE: + case mSM_IV_OPEN_PUTIN_FTR: + case mSM_IV_OPEN_MINIDISK: + case mSM_IV_OPEN_SHRINE: + case mSM_IV_OPEN_CURATOR: + case mSM_IV_OPEN_16: + submenu->overlay->tag_ovl->chg_tag_func_proc(submenu, mTG_TABLE_ITEM, mTG_TYPE_NONE, unselected_num, + 0.0f, 0.0f); + break; + case mSM_IV_OPEN_EXCHANGE: + submenu->overlay->tag_ovl->chg_tag_func_proc(submenu, mTG_TABLE_ITEM, mTG_TYPE_NONE, unselected_num, + 0.0f, 0.0f); + submenu->overlay->hand_ovl->info.pos[0] += -5.0f; + submenu->overlay->hand_ovl->info.pos[1] += 12.0f; + break; + case mSM_IV_OPEN_QUEST: + submenu->overlay->tag_ovl->chg_tag_func_proc(submenu, mTG_TABLE_ITEM, mTG_TYPE_NONE, unselected_num, + 0.0f, 0.0f); + tag_ovl->item_name_wait_time = 0; + submenu->overlay->tag_ovl->chg_tag_func_proc(submenu, mTG_TABLE_ITEM, mTG_TYPE_QUEST_ITEM, 0, + tag_ovl->tags[0].pos[0], tag_ovl->tags[0].pos[1]); + break; + case mSM_IV_OPEN_SEND_MAIL: + submenu->overlay->tag_ovl->chg_tag_func_proc(submenu, mTG_TABLE_MAIL, mTG_TYPE_NONE, unselected_num, + 0.0f, 0.0f); + break; + } + + menu_info->open_flag = TRUE; + } else if (inv_ovl->page_move_timer != 0) { + int y; + + inv_ovl->page_move_timer--; + y = 100.0f * sinf_table((f32)inv_ovl->page_move_timer * 0.078539819f); + menu_info->position[1] = (f32)y; + + if (inv_ovl->page_move_timer == 20) { + if (inv_ovl->page_order[2] == inv_ovl->next_page_id) { + inv_ovl->page_order[2] = inv_ovl->page_order[1]; + } + + inv_ovl->page_order[1] = inv_ovl->page_order[0]; + inv_ovl->page_order[0] = inv_ovl->next_page_id; + } else if (inv_ovl->page_move_timer == 0) { + menu_info->position[1] = 0.0f; + submenu->overlay->hand_ovl->set_hand_func(submenu); + } + } else { + ctrl->tag_move_func(submenu, menu_info); + } +} + +static void mIV_move_Wait(Submenu* submenu, mSM_MenuInfo_c* menu_info) { + mSM_Control_c* ctrl = &submenu->overlay->menu_control; + mSM_MenuInfo_c* next_menu_info = &submenu->overlay->menu_info[menu_info->next_menu_type]; + + if (next_menu_info->menu_type == mSM_OVL_NEEDLEWORK) { + mIV_Ovl_c* inv_ovl = submenu->overlay->inventory_ovl; + + mIV_pl_shape_move(submenu); + ctrl->animation_flag = TRUE; + if (inv_ovl->original_flag) { + if (next_menu_info->proc_status == mSM_OVL_PROC_MOVE && + next_menu_info->next_proc_status == mSM_OVL_PROC_END) { + submenu->overlay->move_chg_base_proc(menu_info, mSM_MOVE_OUT_RIGHT); + } + } else if (next_menu_info->proc_status == mSM_OVL_PROC_END) { + mTG_Ovl_c* tag_ovl; + mTG_tag_c* tag; + int i; + + menu_info->proc_status = mSM_OVL_PROC_PLAY; + tag_ovl = submenu->overlay->tag_ovl; + tag = tag_ovl->tags; + + for (i = 0; i < mTG_TAG_NUM; i++) { + tag->type = mTG_TYPE_NONE; + tag++; + } + + tag_ovl->sel_tag_idx = -1; + tag_ovl->ret_tag_idx = -1; + inv_ovl->wc_flag = FALSE; + + submenu->overlay->tag_ovl->chg_tag_func_proc(submenu, mTG_TABLE_INVENTORY_WC_ORG, mTG_TYPE_NONE, 0, 0.0f, + 0.0f); + submenu->overlay->tag_ovl->init_tag_data_item_win_proc(submenu); + } + } else if (next_menu_info->proc_status == mSM_OVL_PROC_MOVE && + next_menu_info->next_proc_status == mSM_OVL_PROC_END) { + submenu->overlay->move_chg_base_proc(menu_info, mSM_MOVE_IN_LEFT); + submenu->overlay->tag_ovl->init_tag_data_item_win_proc(submenu); + } +} + +static void mIV_move_Obey(Submenu* submenu, mSM_MenuInfo_c* menu_info) { + mSM_MenuInfo_c* next_menu_info = &submenu->overlay->menu_info[menu_info->next_menu_type]; + + if (next_menu_info->proc_status == mSM_OVL_PROC_MOVE) { + if (next_menu_info->next_proc_status == mSM_OVL_PROC_END) { + int move_dir; + + if (menu_info->data0 == mSM_IV_OPEN_CPMAIL) { + move_dir = mSM_MOVE_OUT_LEFT; + sAdo_SysTrgStart(NA_SE_31); + } else { + move_dir = mSM_MOVE_OUT_RIGHT; + } + + submenu->overlay->move_chg_base_proc(menu_info, move_dir); + } else { + menu_info->position[0] = next_menu_info->position[0]; + menu_info->position[1] = next_menu_info->position[1]; + } + } +} + +static void mIV_move_End(Submenu* submenu, mSM_MenuInfo_c* menu_info) { + mBGMPsComp_pause(mBGM_PAUSE_STOP); + submenu->overlay->move_End_proc(submenu, menu_info); +} + +typedef void (*mIV_OVL_MOVE_PROC)(Submenu*, mSM_MenuInfo_c*); + +static void mIV_inventory_ovl_move(Submenu* submenu) { + // clang-format off + static mIV_OVL_MOVE_PROC ovl_move_proc[] = { + &mIV_move_Move, + &mIV_move_Play, + &mIV_move_Wait, + &mIV_move_Obey, + &mIV_move_End, + }; + // clang-format on + + mSM_Control_c* ctrl = &submenu->overlay->menu_control; + mSM_MenuInfo_c* menu_info = &submenu->overlay->menu_info[mSM_OVL_INVENTORY]; + + menu_info->pre_move_func(submenu); + (*ovl_move_proc[menu_info->proc_status])(submenu, menu_info); + + switch (menu_info->proc_status) { + case mSM_OVL_PROC_PLAY: { + mIV_pl_shape_move(submenu); + ctrl->animation_flag = TRUE; + + /** + * Debug controls on controller #2 + * - C stick left: +1,000 added to wallet + * - C stick right: fill all free inventory spaces with 30,000 bell bags + * - C stick down: fill first 4 free inventory slots with all tools + */ + if (menu_info->data0 == mSM_IV_OPEN_NORMAL && ZURUMODE2_ENABLED() && zurumode_flag != 0) { + if ((gamePT->pads[PAD1].on.button & BUTTON_CLEFT) == BUTTON_CLEFT) { + u32 wallet = Now_Private->inventory.wallet + 1000; + + if (wallet > mPr_WALLET_MAX) { + wallet = mPr_WALLET_MAX; + } + + Now_Private->inventory.wallet = wallet; + submenu->overlay->inventory_ovl->disp_money = wallet; + } + + if ((gamePT->pads[PAD1].on.button & BUTTON_CDOWN) == BUTTON_CDOWN) { + int i; + + for (i = 0; i < MONEY_NUM; i++) { + int idx = mPr_GetPossessionItemIdxWithCond(Now_Private, EMPTY_NO, mPr_ITEM_COND_NORMAL); + + if (idx == -1) { + break; + } + + mPr_SetPossessionItem(Now_Private, idx, ITM_TOOL_START + i, mPr_ITEM_COND_NORMAL); + } + } + + if ((gamePT->pads[PAD1].on.button & BUTTON_CRIGHT) == BUTTON_CRIGHT) { + int i; + + for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { + int idx = mPr_GetPossessionItemIdxWithCond(Now_Private, EMPTY_NO, mPr_ITEM_COND_NORMAL); + + if (idx == -1) { + break; + } + + mPr_SetPossessionItem(Now_Private, idx, ITM_MONEY_30000, mPr_ITEM_COND_NORMAL); + } + } + } + break; + } + + case mSM_OVL_PROC_MOVE: { + ctrl->animation_flag = FALSE; + break; + } + } +} + +extern Gfx inv_mwin_mode[]; +extern Gfx inv_sakana_model[]; +extern Gfx inv_mwin_model[]; +extern Gfx inv_mushi_model[]; +extern Gfx inv_sakana_part_model[]; +extern Gfx inv_mushi_part_model[]; +extern Gfx inv_sakana_scroll_mode[]; +extern Gfx inv_mushi_scroll_mode[]; + +static void mIV_set_base_frame_dl(Submenu* submenu, GAME_PLAY* play, GRAPH* graph, int page, int scroll_flag, f32 pos_x, + f32 pos_y) { + static Gfx* base_frame[] = { inv_sakana_model, inv_mwin_model, inv_mushi_model }; + static Gfx* part_frame[] = { inv_sakana_part_model, inv_mwin_model, inv_mushi_part_model }; + static Gfx* scroll_set[] = { inv_sakana_scroll_mode, NULL, inv_mushi_scroll_mode }; + + Matrix_scale(16.0f, 16.0f, 1.0f, 0); + Matrix_translate(pos_x, pos_y, 140.0f, 1); + + OPEN_POLY_OPA_DISP(graph); + + gSPDisplayList(POLY_OPA_DISP++, inv_mwin_mode); + gSPMatrix(POLY_OPA_DISP++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + if (scroll_flag) { + int tex_x; + int tex_y; + + if (page == mIV_PAGE_INVENTORY) { + gDPLoadTLUT_Dolphin(POLY_OPA_DISP++, 14, 16, 1, mSM_Get_ground_pallet_p(play)); + gDPSetTextureImage_Dolphin(POLY_OPA_DISP++, G_IM_FMT_CI, G_IM_SIZ_4b, 32, 32, mSM_Get_ground_tex_p(play)); + gDPSetTile_Dolphin(POLY_OPA_DISP++, G_DOLPHIN_TLUT_DEFAULT_MODE, G_TX_RENDERTILE, 14, GX_REPEAT, GX_REPEAT, + GX_CLAMP, GX_CLAMP); + } else { + gSPDisplayList(POLY_OPA_DISP++, scroll_set[page]); + } + + gDPTileSync(POLY_OPA_DISP++); + tex_x = (int)-submenu->overlay->menu_control.texture_pos[0] & 0x7F; + tex_y = (int)-submenu->overlay->menu_control.texture_pos[1] & 0x7F; + gDPSetTileSize(POLY_OPA_DISP++, G_TX_RENDERTILE, tex_x, tex_y, tex_x + (31 << 2), tex_y + (31 << 2)); + gSPDisplayList(POLY_OPA_DISP++, base_frame[page]); + } else { + gSPDisplayList(POLY_OPA_DISP++, part_frame[page]); + } + + CLOSE_POLY_OPA_DISP(graph); +} + +/* letter slots */ +extern Gfx inv_mwin_1aT_model[]; +extern Gfx inv_mwin_2aT_model[]; +extern Gfx inv_mwin_3aT_model[]; +extern Gfx inv_mwin_4aT_model[]; +extern Gfx inv_mwin_5aT_model[]; +extern Gfx inv_mwin_6aT_model[]; +extern Gfx inv_mwin_7aT_model[]; +extern Gfx inv_mwin_8aT_model[]; +extern Gfx inv_mwin_9aT_model[]; +extern Gfx inv_mwin_10aT_model[]; + +/* item slots */ +extern Gfx inv_mwin_1bT_model[]; +extern Gfx inv_mwin_2bT_model[]; +extern Gfx inv_mwin_3bT_model[]; +extern Gfx inv_mwin_4bT_model[]; +extern Gfx inv_mwin_5bT_model[]; +extern Gfx inv_mwin_6bT_model[]; +extern Gfx inv_mwin_7bT_model[]; +extern Gfx inv_mwin_8bT_model[]; +extern Gfx inv_mwin_9bT_model[]; +extern Gfx inv_mwin_10bT_model[]; +extern Gfx inv_mwin_11bT_model[]; +extern Gfx inv_mwin_12bT_model[]; +extern Gfx inv_mwin_13bT_model[]; +extern Gfx inv_mwin_14bT_model[]; +extern Gfx inv_mwin_15bT_model[]; + +extern Gfx inv_mwin_item_frame_mode[]; +extern Gfx inv_mwin_kuni_model[]; +extern Gfx inv_mwin_kuni2_model[]; + +static void mIV_set_normal_frame_dl(Submenu* submenu, GAME_PLAY* play, GRAPH* graph, f32 pos_x, f32 pos_y) { + static Gfx* item_frame_disp[] = { + inv_mwin_1bT_model, inv_mwin_2bT_model, inv_mwin_3bT_model, inv_mwin_4bT_model, inv_mwin_5bT_model, + inv_mwin_6bT_model, inv_mwin_7bT_model, inv_mwin_8bT_model, inv_mwin_9bT_model, inv_mwin_10bT_model, + inv_mwin_11bT_model, inv_mwin_12bT_model, inv_mwin_13bT_model, inv_mwin_14bT_model, inv_mwin_15bT_model, + }; + + static Gfx* letter_frame_disp[] = { + inv_mwin_1aT_model, inv_mwin_2aT_model, inv_mwin_3aT_model, inv_mwin_4aT_model, inv_mwin_5aT_model, + inv_mwin_6aT_model, inv_mwin_7aT_model, inv_mwin_8aT_model, inv_mwin_9aT_model, inv_mwin_10aT_model, + }; + + Gfx** frame_p; + mIV_Ovl_c* inv_ovl = submenu->overlay->inventory_ovl; + int i; + + mIV_set_base_frame_dl(submenu, play, graph, mIV_PAGE_INVENTORY, TRUE, pos_x, pos_y); + + OPEN_POLY_OPA_DISP(graph); + + gSPDisplayList(POLY_OPA_DISP++, inv_mwin_item_frame_mode); + + frame_p = item_frame_disp; + for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { + gDPPipeSync(POLY_OPA_DISP++); + + if ((inv_ovl->selectable_item_bitfield & (1 << i)) != 0) { + gDPSetEnvColor(POLY_OPA_DISP++, 100, 100, 255, 255); + } else { + gDPSetEnvColor(POLY_OPA_DISP++, 120, 140, 255, 255); + } + + gSPDisplayList(POLY_OPA_DISP++, *frame_p); + frame_p++; + } + + frame_p = letter_frame_disp; + for (i = 0; i < mPr_INVENTORY_MAIL_COUNT; i++) { + gDPPipeSync(POLY_OPA_DISP++); + + if ((inv_ovl->selectable_mail_bitfield & (1 << i)) != 0) { + gDPSetEnvColor(POLY_OPA_DISP++, 255, 60, 60, 255); + } else { + gDPSetEnvColor(POLY_OPA_DISP++, 255, 90, 90, 255); + } + + gSPDisplayList(POLY_OPA_DISP++, *frame_p); + frame_p++; + } + + gSPDisplayList(POLY_OPA_DISP++, inv_mwin_kuni_model); + gSPDisplayList(POLY_OPA_DISP++, inv_mwin_kuni2_model); + + CLOSE_POLY_OPA_DISP(graph); +} + +static int mIV_is_mark_check(mIV_Ovl_c* inv_ovl, int idx) { + if ((inv_ovl->item_mark_bitfield & (1 << idx)) != 0) { + return TRUE; + } + + return FALSE; +} + +extern Gfx inv_item_mode[]; + +static void mIV_set_item(Submenu* submenu, mSM_MenuInfo_c* menu_info, GRAPH* graph, f32 pos_x, f32 pos_y) { + mTG_Ovl_c* tag_ovl; + mTG_tag_c* tag; + mIV_Ovl_c* inv_ovl; + mActor_name_t* item; + u8* scale_type; + int i; + int anim_frame; + f32 hand_pos[2]; + f32 scale; + int no_wc_flag; + + tag = &submenu->overlay->tag_ovl->tags[0]; + inv_ovl = submenu->overlay->inventory_ovl; + item = Now_Private->inventory.pockets; + scale_type = inv_ovl->item_scale_type; + + OPEN_POLY_OPA_DISP(graph); + + gSPDisplayList(POLY_OPA_DISP++, inv_item_mode); + + CLOSE_POLY_OPA_DISP(graph); + + no_wc_flag = inv_ovl->wc_flag; + for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++, item++, scale_type++) { + if (*item != EMPTY_NO) { + submenu->overlay->tag_ovl->set_hand_pos_proc(submenu, hand_pos, mTG_TABLE_ITEM, i); + if (tag->table == mTG_TABLE_ITEM) { + switch (*scale_type) { + case mIV_ITEM_SCALE_TYPE_PRESENT: { + scale = 1.0f; + + /* @fakematch -- why do I have to set this twice? */ + if (inv_ovl->remove_timer != 0) { + anim_frame = 48 - inv_ovl->remove_timer; + } else { + anim_frame = 0; + } + + anim_frame = (inv_ovl->remove_timer != 0 ? 48 - inv_ovl->remove_timer : 0); + break; + } + + case mIV_ITEM_SCALE_TYPE_NONE: { + scale = 1.0f; + anim_frame = 0; + break; + } + + case mIV_ITEM_SCALE_TYPE_SHRINK: { + anim_frame = 70 - inv_ovl->remove_timer; + scale = (f32)inv_ovl->remove_timer * (1.0f / 12.0f); + + if (anim_frame >= 6) { + anim_frame = 5; + } + break; + } + + default: { + anim_frame = 0; + scale = + 1.0f - (f32)(inv_ovl->remove_timer - 14 - (*scale_type - mIV_ITEM_SCALE_TYPE_GROW) * 14) * + (1.0f / 12.0f); + break; + } + } + + if (scale > 1.0f) { + scale = 1.0f; + } else if (scale < 0.0f) { + scale = 0.0f; + } + } else { + anim_frame = 0; + scale = 1.0f; + } + + /* @BUG - they compare int (anim_frame) to float (0.0f) here instead of just 0 */ + if (*scale_type == mIV_ITEM_SCALE_TYPE_PRESENT && anim_frame != 0.0f) { + submenu->overlay->draw_item_proc(graph, pos_x + hand_pos[0], pos_y + hand_pos[1], scale, *item, FALSE, + (inv_ovl->selectable_item_bitfield & (1 << i)), 0, FALSE, FALSE); + } + + submenu->overlay->draw_item_proc( + graph, pos_x + hand_pos[0], pos_y + hand_pos[1], scale, *item, + ((Now_Private->inventory.item_conditions >> (i * 2)) & mPr_ITEM_COND_PRESENT) != 0, + !no_wc_flag && (inv_ovl->selectable_item_bitfield & (1 << i)), anim_frame, FALSE, + mIV_is_mark_check(inv_ovl, i)); + } + } +} + +static void mIV_set_mail(Submenu* submenu, mSM_MenuInfo_c* menu_info, GRAPH* graph, f32 pos_x, f32 pos_y) { + mIV_Ovl_c* inv_ovl = submenu->overlay->inventory_ovl; + mTG_Ovl_c* tag_ovl = submenu->overlay->tag_ovl; + Mail_c* mail = Now_Private->mail; + mTG_tag_c* tag = &tag_ovl->tags[0]; + u16 select_mask = 0; + f32 scale; + f32 pos[2]; + int i; + int menu_flag; + int mark_flag; + + if (inv_ovl->remove_timer > 0 && (tag->table == mTG_TABLE_MAIL || inv_ovl->_5E4 == 1)) { + if (inv_ovl->_5E4 == 1) { + select_mask = inv_ovl->_5E2; + } else if (inv_ovl->_5E4 == 0) { + select_mask = 1 << tag_ovl->get_table_idx_proc(tag); + } + } + + OPEN_POLY_OPA_DISP(graph); + + gSPDisplayList(POLY_OPA_DISP++, inv_item_mode); + + CLOSE_POLY_OPA_DISP(graph); + + if (menu_info->data0 == mSM_IV_OPEN_CPMAIL) { + pos_x -= -155.0f; + } + + menu_flag = TRUE; + if (menu_info->next_menu_type == mSM_OVL_NEEDLEWORK) { + menu_flag = FALSE; + } + + for (i = 0; i < mPr_INVENTORY_MAIL_COUNT; i++, mail++) { + if ((inv_ovl->mail_mark_bitfield & (1 << i)) == 0 && mMl_check_not_used_mail(mail) != TRUE) { + if ((select_mask & (1 << i)) != 0) { + scale = (f32)inv_ovl->remove_timer * (1.0f / 24.0f); + } else { + scale = 1.0f; + } + + if ((inv_ovl->_5E2 & (1 << i)) != 0 && inv_ovl->_5E4 == 0) { + mark_flag = TRUE; + } else { + mark_flag = FALSE; + } + + submenu->overlay->tag_ovl->set_hand_pos_proc(submenu, pos, mTG_TABLE_MAIL, i); + + submenu->overlay->draw_mail_proc(graph, pos_x + pos[0], pos_y + pos[1], scale, mail, + menu_flag && (inv_ovl->selectable_mail_bitfield & (1 << i)), FALSE, + mark_flag); + } + } +} + +static void mIV_set_money(Submenu* submenu, GAME* game, f32 pos_x, f32 pos_y) { + u8 money_str[6]; + f32 width; + + mFont_UnintToString(money_str, sizeof(money_str), submenu->overlay->inventory_ovl->disp_money, + sizeof(money_str) - 1, FALSE, FALSE, TRUE); + + width = (f32)mFont_GetStringWidth(money_str, sizeof(money_str), TRUE) * 0.875f; + pos_x = (160.0f + pos_x + -22.0f + 38.5f) - width; + pos_y = 120.0f - (pos_y + 18.0f); + + // clang-format off + mFont_SetLineStrings( + game, + money_str, sizeof(money_str), + pos_x, pos_y, + 255, 60, 0, 255, + FALSE, + TRUE, + 0.875f, 0.875f, + mFont_MODE_POLY + ); + // clang-format on +} + +typedef struct inventory_line_data_s { + int max_str_len; + f32 pos_x; + f32 pos_y; + f32 scale; + rgba_t color; + f32 max_width; +} mIV_line_data_c; + +static void mIV_SetLineStrings_centering(GAME* game, u8* string, int type, f32 x, f32 y) { + // clang-format off + static mIV_line_data_c line_data[] = { + { + 8, + 105.0f, 52.0f, + 0.875f, + { 60, 80, 110, 255 }, + 90.0f + }, + + { + 8, + 111.0f, 64.0f, + 0.9375f, + { 70, 70, 100, 255 }, + 90.0f + }, + }; + // clang format on + + mIV_line_data_c* line_data_p = &line_data[type]; + f32 scale = line_data_p->scale; + int len = mMl_strlen(string, line_data_p->max_str_len, CHAR_SPACE); + f32 width = (f32)mFont_GetStringWidth(string, len, TRUE) * scale; + f32 max_width = line_data_p->max_width; + + if (width > max_width) { + width = max_width; + } + + x += (max_width - width) * 0.5f; + + // clang-format off + mFont_SetLineStrings( + game, + string, line_data_p->max_str_len, + x + line_data_p->pos_x, -y + line_data_p->pos_y, + line_data_p->color.r, line_data_p->color.g, line_data_p->color.b, line_data_p->color.a, + FALSE, + TRUE, + scale, scale, + mFont_MODE_POLY + ); + // clang-format on +} + +static f32 mIV_get_win_posY(Submenu* submenu, mSM_MenuInfo_c* menu_info, int page) { + if (page == submenu->overlay->inventory_ovl->next_page_id) { + return menu_info->position[1]; + } else { + return -menu_info->position[1]; + } +} + +static int mIV_up_page_draw_check(Submenu* submenu, int page) { + mIV_Ovl_c* inv_ovl = submenu->overlay->inventory_ovl; + + if (inv_ovl->page_move_timer > 20) { + if (inv_ovl->next_page_id == page || inv_ovl->page_order[0] == page) { + return TRUE; + } + } else if (inv_ovl->page_move_timer != 0) { + if (inv_ovl->page_order[2] != page) { + return TRUE; + } + } else if (inv_ovl->page_order[0] == page) { + return TRUE; + } + + return FALSE; +} + +static void mIV_set_collect_dl(Submenu* submenu, mSM_MenuInfo_c* menu_info, GAME* game, int page) { + GRAPH* graph = game->graph; + mActor_name_t item; + int i; + f32 pos_x; + f32 pos_y; + int flag; + f32 pos[2]; + + if (menu_info->data0 == mSM_IV_OPEN_CPMAIL) { + pos_x = menu_info->position[0] + -155.0f; + } else { + pos_x = menu_info->position[0]; + } + + pos_y = mIV_get_win_posY(submenu, menu_info, page); + + if (menu_info->data0 == mSM_IV_OPEN_NORMAL && mIV_up_page_draw_check(submenu, page)) { + flag = TRUE; + } else { + flag = FALSE; + } + + mIV_set_base_frame_dl(submenu, (GAME_PLAY*)game, graph, page, flag, pos_x, pos_y); + if (flag) { + OPEN_POLY_OPA_DISP(graph); + + gSPDisplayList(POLY_OPA_DISP++, inv_item_mode); + + CLOSE_POLY_OPA_DISP(graph); + + for (i = 0; i < mIV_COLLECT_NUM; i++) { + item = mIV_set_collect_itemNo(i, page); + + if (item != EMPTY_NO) { + submenu->overlay->tag_ovl->set_hand_pos_proc(submenu, pos, mTG_TABLE_COLLECT, i); + submenu->overlay->draw_item_proc(graph, pos_x + pos[0], pos_y + pos[1], 1.0f, item, FALSE, TRUE, 1, + FALSE, FALSE); + } + } + } +} + +static void mIV_set_normal_dl(Submenu* submenu, mSM_MenuInfo_c* menu_info, GAME* game) { + GRAPH* graph = game->graph; + f32 pos_x; + f32 pos_y; + + if (menu_info->data0 == mSM_IV_OPEN_CPMAIL) { + pos_x = menu_info->position[0] + -155.0f; + } else { + pos_x = menu_info->position[0]; + } + + pos_y = mIV_get_win_posY(submenu, menu_info, mIV_PAGE_INVENTORY); + mIV_set_normal_frame_dl(submenu, (GAME_PLAY*)game, graph, pos_x, pos_y); + + if (mIV_up_page_draw_check(submenu, mIV_PAGE_INVENTORY)) { + mIV_set_item(submenu, menu_info, graph, pos_x, pos_y); + mIV_set_mail(submenu, menu_info, graph, pos_x, pos_y); + + Matrix_push(); + mIV_set_player(submenu, graph, (GAME_PLAY*)game, pos_x, pos_y); + Matrix_pull(); + + submenu->overlay->set_char_matrix_proc(graph); + mIV_SetLineStrings_centering(game, Now_Private->player_ID.land_name, mIV_STRING_LAND_NAME, pos_x, pos_y); + mIV_SetLineStrings_centering(game, Now_Private->player_ID.player_name, mIV_STRING_PLAYER_NAME, pos_x, pos_y); + mIV_set_money(submenu, game, pos_x, pos_y); + } +} + +static void mIV_set_dl(Submenu* submenu, mSM_MenuInfo_c* menu_info, GAME* game) { + mIV_Ovl_c* inv_ovl = submenu->overlay->inventory_ovl; + u8* page_order = inv_ovl->page_order; + int i; + + for (i = mIV_PAGE_INSECT_COLLECTION; i >= 0; i--) { + if (page_order[i] == mIV_PAGE_INVENTORY) { + mIV_set_normal_dl(submenu, menu_info, game); + } else { + mIV_set_collect_dl(submenu, menu_info, game, page_order[i]); + } + } + + submenu->overlay->menu_control.tag_draw_func(submenu, game, mSM_OVL_INVENTORY); +} + +static void mIV_inventory_ovl_draw(Submenu* submenu, GAME* game) { + mSM_MenuInfo_c* menu_info = &submenu->overlay->menu_info[mSM_OVL_INVENTORY]; + + menu_info->pre_draw_func(submenu, game); + mIV_set_dl(submenu, menu_info, game); +} + +extern void mIV_inventory_ovl_set_proc(Submenu* submenu) { + Submenu_Overlay_c* overlay = submenu->overlay; + mSM_MenuInfo_c* menu_info = &submenu->overlay->menu_info[mSM_OVL_INVENTORY]; + + overlay->menu_control.menu_move_func = &mIV_inventory_ovl_move; + overlay->menu_control.menu_draw_func = &mIV_inventory_ovl_draw; + + if (overlay->hand_ovl != NULL && menu_info->next_proc_status != mSM_OVL_PROC_END) { + submenu->overlay->hand_ovl->set_hand_func(submenu); + } +} + +static void mIV_inventory_ovl_init(Submenu* submenu, mSM_MenuInfo_c* menu_info, GAME_PLAY* play) { + mIV_Ovl_c* inv_ovl = submenu->overlay->inventory_ovl; + PLAYER_ACTOR* player = GET_PLAYER_ACTOR(play); + mActor_name_t dig_item = EMPTY_NO; + int i; + Mail_c* mail = Now_Private->mail; + + menu_info->proc_status = mSM_OVL_PROC_MOVE; + menu_info->move_drt = mSM_MOVE_IN_RIGHT; + i = 0; + + switch (menu_info->data0) { + case mSM_IV_OPEN_HANIWA_TAKE: { + inv_ovl->selectable_item_bitfield = 0; + inv_ovl->selectable_mail_bitfield = 0; + break; + } + + case mSM_IV_OPEN_QUEST: { + inv_ovl->selectable_item_bitfield |= 1 << menu_info->data1; + inv_ovl->selectable_mail_bitfield = 0; + break; + } + + case mSM_IV_OPEN_16: { + inv_ovl->selectable_item_bitfield = menu_info->data1; + inv_ovl->selectable_mail_bitfield = 0; + break; + } + + case mSM_IV_OPEN_SEND_MAIL: { + inv_ovl->selectable_item_bitfield = 0; + inv_ovl->selectable_mail_bitfield = 0; + for (i = 0; i < mPr_INVENTORY_MAIL_COUNT; i++) { + if (mMl_check_not_used_mail(mail) == FALSE && mMl_check_send_mail(mail)) { + inv_ovl->selectable_mail_bitfield |= 1 << i; + } + + mail++; + } + break; + } + + case mSM_IV_OPEN_MAILBOX: { + inv_ovl->selectable_mail_bitfield = 0xFFFF; + inv_ovl->selectable_item_bitfield = 0; + break; + } + + case mSM_IV_OPEN_CPMAIL: { + inv_ovl->selectable_item_bitfield = 0; + inv_ovl->selectable_mail_bitfield = 0; + for (i; i < mPr_INVENTORY_MAIL_COUNT; i++) { + if (mMl_check_not_used_mail(mail) || mMl_check_send_mail(mail) == FALSE) { + inv_ovl->selectable_mail_bitfield |= 1 << i; + } + + mail++; + } + + menu_info->move_drt = mSM_MOVE_IN_LEFT; + break; + } + + default: { + inv_ovl->selectable_item_bitfield = mSM_check_open_inventory_itemlist(menu_info->data0, menu_info->data1); + + if (menu_info->data0 == mSM_IV_OPEN_NORMAL || menu_info->data0 == mSM_IV_OPEN_EXCHANGE) { + inv_ovl->selectable_mail_bitfield = 0xFFFF; + } else { + inv_ovl->selectable_mail_bitfield = 0; + } + break; + } + } + + menu_info->next_proc_status = mSM_OVL_PROC_OBEY; + + if (menu_info->data0 == mSM_IV_OPEN_CPMAIL) { + mSM_open_submenu(submenu, mSM_OVL_CPMAIL, 0, 0); + } else if (menu_info->data0 == mSM_IV_OPEN_MAILBOX) { + mSM_open_submenu(submenu, mSM_OVL_MAILBOX, 0, 0); + } else if (menu_info->data0 == mSM_IV_OPEN_HANIWA_ENTRUST) { + mSM_open_submenu(submenu, mSM_OVL_HANIWA, mSM_HANIWA_OPEN_ENTRUST, menu_info->data1); + } else if (menu_info->data0 == mSM_IV_OPEN_HANIWA_TAKE) { + mSM_open_submenu(submenu, mSM_OVL_HANIWA, mSM_HANIWA_OPEN_TAKE, menu_info->data1); + } else { + menu_info->next_proc_status = mSM_OVL_PROC_PLAY; + } + + inv_ovl->disp_money = Now_Private->inventory.wallet; + + if (menu_info->data0 == mSM_IV_OPEN_EXCHANGE && ITEM_NAME_GET_TYPE(menu_info->data1) == NAME_TYPE_ITEM1 && + ITEM_NAME_GET_CAT(menu_info->data1) == ITEM1_CAT_FISH) { + inv_ovl->release_flag = TRUE; + } else { + inv_ovl->release_flag = mCoBG_SearchWaterLimitDistN(&inv_ovl->release_pos, player->actor_class.world.position, + player->actor_class.shape_info.rotation.y, 120.0f, 12); + } + + if (mPlib_Check_scoop_after((GAME*)play, &inv_ovl->shovel_pos, &dig_item, NULL, FALSE) == + mPlayer_INDEX_FILL_SCOOP) { + inv_ovl->shovel_flag = TRUE; + } else { + inv_ovl->shovel_flag = FALSE; + } + + inv_ovl->page_order[0] = mIV_PAGE_INVENTORY; + inv_ovl->page_order[1] = mIV_PAGE_FISH_COLLECTION; + inv_ovl->page_order[2] = mIV_PAGE_INSECT_COLLECTION; + inv_ovl->page_move_timer = 0; + inv_ovl->_5E4 = 0; + inv_ovl->item_mark_bitfield = 0; + inv_ovl->_5E2 = 0; + inv_ovl->wc_flag = FALSE; + + if (menu_info->data0 == mSM_IV_OPEN_MAILBOX) { + sAdo_SysTrgStart(SE_FLAG_15(NA_SE_ZOOMUP)); + } else { + sAdo_SysTrgStart(NA_SE_MENU_PAUSE); + } + + mBGMPsComp_pause(mBGM_PAUSE_1); +} + +extern void mIV_inventory_ovl_construct(Submenu* submenu) { + mSM_MenuInfo_c* menu_info = &submenu->overlay->menu_info[mSM_OVL_INVENTORY]; + GAME_PLAY* play = (GAME_PLAY*)gamePT; + mIV_Ovl_c** inv_ovl_p = &submenu->overlay->inventory_ovl; + + if (*inv_ovl_p == NULL) { + mem_clear((u8*)&inv_ovl_data, sizeof(mIV_Ovl_c), 0); + *inv_ovl_p = &inv_ovl_data; + mIV_pl_shape_init(submenu); + mIV_pl_shape_move(submenu); + mQst_ClearGrabItemInfo(); + } + + mIV_inventory_ovl_init(submenu, menu_info, play); + mIV_inventory_ovl_set_proc(submenu); + submenu->overlay->inventory_ovl->set_collect_itemNo_proc = &mIV_set_collect_itemNo; +} + +extern void mIV_inventory_ovl_destruct(Submenu* submenu) { + mIV_Ovl_c* inv_ovl = submenu->overlay->inventory_ovl; + + cKF_SkeletonInfo_R_dt(&inv_ovl->player_main_keyframe); + cKF_SkeletonInfo_R_dt(&inv_ovl->player_com_keyframe); + cKF_SkeletonInfo_R_dt(&inv_ovl->item_keyframe); + submenu->overlay->inventory_ovl = NULL; } diff --git a/src/m_submenu_ovl.c b/src/m_submenu_ovl.c index 5bcd82a2..55321ea1 100644 --- a/src/m_submenu_ovl.c +++ b/src/m_submenu_ovl.c @@ -2099,7 +2099,7 @@ static void mSM_set_new_start_data(Submenu* submenu) { menu->data3 = submenu->param3; menu->move_flag = FALSE; - if (type == mSM_OVL_INVENTORY && submenu->param0 == mSM_IV_OPEN_14) { + if (type == mSM_OVL_INVENTORY && submenu->param0 == mSM_IV_OPEN_CPMAIL) { menu->position[0] = -300.0f; } @@ -2209,7 +2209,7 @@ static void mSM_return_func(Submenu* submenu, mSM_MenuInfo_c* menu_info) { } } - menu_info->_2C = FALSE; + menu_info->open_flag = FALSE; menu_info->pre_menu_type = mSM_OVL_NONE; menu_info->next_menu_type = mSM_OVL_NONE; menu_info->proc_status = mSM_OVL_PROC_MOVE; From 94858cd9fec5fee3f6fed268d6f52c9863c1a08d Mon Sep 17 00:00:00 2001 From: Cuyler36 Date: Mon, 3 Jun 2024 13:50:57 -0400 Subject: [PATCH 004/234] jaudio_NES/sample.c Co-authored-by: SwareJonge <41187958+SwareJonge@users.noreply.github.com> --- common.py | 4 + config/analysis_overrides.yml | 1 + config/disasm_overrides.yml | 1 + config/dol_slices.yml | 596 ++++++++++++++++--------------- configure.py | 5 +- include/jaudio_NES/audiostruct.h | 185 ++++++++++ include/jaudio_NES/audiowork.h | 14 + include/jaudio_NES/sample.h | 12 + src/static/jaudio_NES/sample.c | 116 ++++++ 9 files changed, 636 insertions(+), 298 deletions(-) create mode 100644 include/jaudio_NES/audiostruct.h create mode 100644 include/jaudio_NES/audiowork.h create mode 100644 include/jaudio_NES/sample.h create mode 100644 src/static/jaudio_NES/sample.c diff --git a/common.py b/common.py index 1fd19ae5..64d622c4 100644 --- a/common.py +++ b/common.py @@ -447,6 +447,9 @@ JAUDIO_BASE = CFLAGS + [ "-enum int", "-common on" ] + DOL_DEFINES +JAUDIO_SAMPLE = [ + "-func_align 32" +] JSYSTEM_CFLAGS = ' '.join(JSYSTEM_BASE + LOCAL_CFLAGS) JSYSTEM_JGADGET_CFLAGS = ' '.join(JSYSTEM_JGADGET_BASE + LOCAL_CFLAGS) @@ -464,6 +467,7 @@ EXTERNAL_REL_CFLAGS = ' '.join(BASE_REL_CFLAGS) PREPROCESS_CFLAGS = ' '.join(PREPROCESSOR_CFLAGS) FAMICOM_CLFAGS = ' '.join(FAMICOM_BASE + LOCAL_CFLAGS) JAUDIO_CFLAGS = ' '.join(JAUDIO_BASE + LOCAL_CFLAGS) +JAUDIO_SAMPLE_CFLAGS = ' '.join(JAUDIO_BASE + JAUDIO_SAMPLE + LOCAL_CFLAGS) DOL_LDFLAGS = ' '.join([ "-maxerrors 1", diff --git a/config/analysis_overrides.yml b/config/analysis_overrides.yml index 78cf77d3..55996991 100644 --- a/config/analysis_overrides.yml +++ b/config/analysis_overrides.yml @@ -4,6 +4,7 @@ blocked_pointers: blocked_targets: - 0x800A97E0 # boot.c local static const tbl, also start of .rodata - 0x80008000 + - 0x80018800 - 0x801F6C7C # tcs_bad - 0x801F6C7D # ics_bad - 0x800a9a90 diff --git a/config/disasm_overrides.yml b/config/disasm_overrides.yml index 276e66e9..f5bf07b5 100644 --- a/config/disasm_overrides.yml +++ b/config/disasm_overrides.yml @@ -1,6 +1,7 @@ trim_ctors: true symbol_aligns: + 0x80018920: 32 0x80207458: 8 # align RunQueue to 0x001251d8 0x800b9140: 32 # align gam_win_moji1_tex to 32 bytes 0x801f71c0: 32 # align texture_buffer_data to 32 bytes diff --git a/config/dol_slices.yml b/config/dol_slices.yml index a75de4a9..f70a23e5 100644 --- a/config/dol_slices.yml +++ b/config/dol_slices.yml @@ -1,297 +1,299 @@ -ctors.s: - .ctors: [0x800a97b4, 0x800a97c0] # remove trailing 0s from ctor area -#dolphin/os/__start.c: -# .init: [0x80003100, 0x80003354] -dolphin/__ppc_eabi_init.cpp: - .init: [0x80003354, 0x800033a8] - .text: [0x8007fdfc, 0x8007fe90] -runtime/__mem.c: - .init: [0x800033a8, 0x800034e0] -TRK/init/mem_TRK.c: - .init: [0x800034e0, 0x80003534] -asm/__exception.s: - .init: [0x80003534, 0x80005468] -boot.c: - .text: [0x800056c0, 0x8000663c] - .rodata: [0x800a97e0, 0x800a97e8] - .data: [0x800af860, 0x800afe50] - .bss: [0x800e2280, 0x800e2318] -jsyswrap.cpp: - .text: [0x8000663c, 0x80007188] - .ctors: [0x800a9784, 0x800a9788] - .data: [0x800afe50, 0x800b05e8] - .bss: [0x800e2318, 0x800e2640] -version.c: - .data: [0x800b05e8, 0x800b0608] -initial_menu.c: - .text: [0x80007188, 0x80007e58] - .rodata: [0x800a97e8, 0x800a97f8] - .data: [0x800b0608, 0x800b0a60] - .bss: [0x800e2640, 0x800e2790] -dvderr.c: - .text: [0x80007e58, 0x800083f8] - .rodata: [0x800a97f8, 0x800a9838] - .data: [0x800b0a60, 0x800b9140] - .bss: [0x800e2790, 0x800e2b88] -bootdata/gam_win1.c: - .data: [0x800b9140, 0x800bb500] -bootdata/gam_win2.c: - .data: [0x800bb500, 0x800bd820] -bootdata/gam_win3.c: - .data: [0x800bd820, 0x800be460] -bootdata/logo_nin.c: - .data: [0x800be460, 0x800c3140] -nintendo_hi_0.c: - .data: [0x800c3140, 0x800cca40] -jaudio_NES/dummyprobe.c: - .text: [0x800083f8, 0x80008400] -# jaudio_NES/game64.c: # TODO: finish -# .rodata: [0x800a9938, 0x800a9b98] -#jaudio_NES/verysimple.c: -# .text: [0x80008400, 0x80008480] -# .sdata: [0x80217b80, 0x80217b88] -Famicom/famicom.cpp: - .text: [0x80041614, 0x80046888] # TODO: get ~J2DOrthoGraph's dtor in here somehow? 0x800468fc, also add in JUTGamePad::getPortStatus when JUTGamePad is linked? - .rodata: [0x800aa9a8, 0x800aaa30] - .data: [0x800d8778, 0x800d99a0] - .bss: [0x801ef540, 0x801f6bd8] -Famicom/famicom_nesinfo.cpp: - .text: [0x800468fc, 0x80047e40] - .rodata: [0x800aaa30, 0x800aab60] - .data: [0x800d99a0, 0x800da9c8] - .bss: [0x801f6bd8, 0x801f6c80] -GBA2/JoyBoot.c: - .text: [0x80049788, 0x8004ae00] - .data: [0x800daa08, 0x800daaa0] - .bss: [0x801f7180, 0x801f71c0] -libforest/osreport.c: - .text: [0x8005a654, 0x8005a92c] - .data: [0x800dc6d8, 0x800dc738] - .bss: [0x80206f08, 0x80206f20] - .sbss: [0x80218618, 0x80218628] -libforest/fault.c: - .text: [0x8005a92c, 0x8005adac] - .data: [0x800dc738, 0x800dc7c8] - .bss: [0x80206f20, 0x80206f30] - .sbss: [0x80218628, 0x80218630] -libforest/ReconfigBATs.c: - .text: [0x8005adac, 0x8005aed4] -libu64/debug.c: - .text: [0x8005aed4, 0x8005af30] - .data: [0x800dc7c8, 0x800dc7f0] -libu64/gfxprint.c: - .text: [0x8005af30, 0x8005b9a8] - .data: [0x800dc7f0, 0x800dc810] - .sbss: [0x80218630, 0x80218638] -libu64/gfxprint_data.c: - .data: [0x800dc810, 0x800dd090] -libu64/pad.c: - .text: [0x8005b9a8, 0x8005ba2c] -libc64/aprintf.c: - .text: [0x8005cbdc, 0x8005cc14] -libc64/math64.c: - .text: [0x8005cc14, 0x8005cccc] - .sdata2: [0x80219118, 0x80219130] -libc64/qrand.c: - .text: [0x8005cccc, 0x8005cd64] - .sdata: [0x80217de8, 0x80217df0] - .sbss: [0x80218640, 0x80218648] - .sdata2: [0x80219130, 0x80219138] -libc64/sprintf.c: - .text: [0x8005ce18, 0x8005cf08] -libc64/malloc.c: - .text: [0x8005cf08, 0x8005d01c] - .bss: [0x80206F30, 0x80206F60] -libultra/ultra.c: - .text: [0x8005d01c, 0x8005d15c] - .bss: [0x80206f60, 0x80206fa0] -#libultra/gu/scale.c: -# .text: [0x8005e7d4, 0x8005e860] -# .sdata2: [0x80219208, 0x80219210] -#libultra/gu/translate.c: -# .text: [0x8005e8ac, 0x8005e918] -libultra/gu/sins.c: - .text: [0x8005e860, 0x8005e8ac] - .data: [0x800dd360, 0x800ddb60] -#libultra/xldtob.c: -# .text: [0x8005e918, 0x8005f2a0] -# .rodata: [0x800ab110, 0x800ab158] -# .sdata: [0x80217df8, 0x80217e08] -# .sdata2: [0x80219210, 0x80219230] -#libultra/xlitob.c: -# .text: [0x8005f2a0, 0x8005f4cc] -# .data: [0x800ddb60, 0x800ddb88] -#libultra/xprintf.c: -# .text: [0x8005f4cc, 0x8005ff74] -# .rodata: [0x800ab158, 0x800ab170] -# .data: [0x800ddb88, 0x800ddd20] -# .sdata: [0x80217e08, 0x80217e10] -# .sdata2: [0x80219230, 0x80219238] -JSystem/JKernel/JKRHeap.cpp: - .text: [0x80063748, 0x80064028] - .data: [0x800ddf20, 0x800ddf98] - .sdata: [0x80217e58, 0x80217e80] - .sbss: [0x802186d8, 0x80218700] -JSystem/JKernel/JKRExpHeap.cpp: - .text: [0x80064028, 0x80065aa0] - .data: [0x800ddf98, 0x800de3a8] - .sdata: [0x80217e80, 0x80217ec0] - .sbss: [0x80218700, 0x80218720] - .sdata2: [0x80219278, 0x80219288] -JSystem/JKernel/JKRDisposer.cpp: - .text: [0x80065aa0, 0x80065b8c] - .data: [0x800de3a8, 0x800de3c0] - .sdata: [0x80217ec0, 0x80217ec8] -JSystem/JKernel/JKRThread.cpp: - .text: [0x80065b8c, 0x80065ef0] - .ctors: [0x800a978c, 0x800a9790] - .data: [0x800de3c0, 0x800de3f8] - .bss: [0x80207008, 0x80207020] - .sdata: [0x80217ec8, 0x80217ed8] -JSystem/JKernel/JKRAram.cpp: - .text: [0x80065ef8, 0x80066e84] - .ctors: [0x800a9790, 0x800a9794] - .data: [0x800de3f8, 0x800de4c0] - .bss: [0x80207020, 0x80207038] - .sdata: [0x80217ed8, 0x80217ef8] - .sbss: [0x80218720, 0x80218758] -JSystem/JKernel/JKRAramHeap.cpp: - .text: [0x80066e84, 0x80067258] - .ctors: [0x800a9794, 0x800a9798] - .data: [0x800de4c0, 0x800de4f0] - .bss: [0x80207038, 0x80207050] - .sdata: [0x80217ef8, 0x80217f08] -JSystem/JKernel/JKRAramBlock.cpp: - .text: [0x80067258, 0x800674c8] - .data: [0x800de4f0, 0x800de510] - .sdata: [0x80217f08, 0x80217f10] -JSystem/JKernel/JKRAramPiece.cpp: - .text: [0x800674c8, 0x80067a88] - .ctors: [0x800a9798, 0x800a979c] - .data: [0x800de510, 0x800de568] - .bss: [0x80207050, 0x80207080] - .sdata: [0x80217f10, 0x80217f18] -JSystem/JKernel/JKRAramStream.cpp: - .text: [0x80067a88, 0x80067ff4] - .data: [0x800de568, 0x800de608] - .sdata: [0x80217f18, 0x80217f38] - .sbss: [0x80218758, 0x80218768] -JSystem/JKernel/JKRFileLoader.cpp: - .text: [0x80067ff4, 0x800685b0] - .ctors: [0x800a979c, 0x800a97a0] - .data: [0x800de608, 0x800de670] - .bss: [0x80207080, 0x80207098] - .sdata: [0x80217f38, 0x80217f50] - .sbss: [0x80218768, 0x80218770] -JSystem/JKernel/JKRFileFinder.cpp: - .text: [0x800685b0, 0x80068744] - .data: [0x800de670, 0x800de6b0] - .sdata: [0x80217f50, 0x80217f60] -JSystem/JKernel/JKRArchivePub.cpp: - .text: [0x80068744, 0x80068ed0] - .data: [0x800de6b0, 0x800de740] - .sdata: [0x80217f60, 0x80217f78] -JSystem/JKernel/JKRArchivePri.cpp: - .text: [0x80068ed0, 0x80069530] - .sbss: [0x80218770, 0x80218778] -JSystem/JKernel/JKRMemArchive.cpp: - .text: [0x80069530, 0x80069a28] - .data: [0x800de740, 0x800de828] - .sdata: [0x80217f78, 0x80217f98] -JSystem/JKernel/JKRAramArchive.cpp: - .text: [0x80069a28, 0x8006a4fc] - .data: [0x800de828, 0x800de938] - .sdata: [0x80217f98, 0x80217fc8] -JSystem/JKernel/JKRDvdArchive.cpp: - .text: [0x8006a4fc, 0x8006add0] - .data: [0x800de938, 0x800dea70] - .sdata: [0x80217fc8, 0x80217fe8] -JSystem/JKernel/JKRCompArchive.cpp: - .text: [0x8006add0, 0x8006b8a4] - .data: [0x800dea70, 0x800deba8] - .sdata: [0x80217fe8, 0x80218008] -JSystem/JKernel/JKRDvdFile.cpp: - .text: [0x8006b8a4, 0x8006be0c] - .ctors: [0x800a97a0, 0x800a97a4] - .data: [0x800deba8, 0x800dec30] - .bss: [0x80207098, 0x802070b0] - .sdata: [0x80218008, 0x80218028] -JSystem/JKernel/JKRDvdRipper.cpp: - .text: [0x8006be0c, 0x8006c8fc] - .ctors: [0x800a97a4, 0x800a97a8] - .data: [0x800dec30, 0x800dec90] - .bss: [0x802070b0, 0x802070c8] - .sdata: [0x80218028, 0x80218030] - .sbss: [0x80218778, 0x802187a8] -JSystem/JKernel/JKRDvdAramRipper.cpp: - .text: [0x8006c8fc, 0x8006d608] - .ctors: [0x800a97a8, 0x800a97ac] - .bss: [0x802070c8, 0x802070e0] - .sdata: [0x80218030, 0x80218038] - .sbss: [0x802187a8, 0x802187e8] -JSystem/JKernel/JKRDecomp.cpp: - .text: [0x8006d608, 0x8006dd58] - .data: [0x800dec90, 0x800ded18] - .sdata: [0x80218038, 0x80218050] - .sbss: [0x802187e8, 0x802187f0] -JSystem/JSupport/JSUInputStream.cpp: - .text: [0x8006e168, 0x8006e3e4] - .data: [0x800ded18, 0x800dedb8] - .sdata: [0x80218050, 0x80218068] -#JSystem/JSupport/JSUFileStream.cpp: # JSUFileStream linkage disabled until we can resolve order of RTTI strings in .data -# .text: [0x8006e3e4, 0x8006e604] -# .data: [0x800dedb8, 0x800dee60] -# .sdata: [0x80218068, 0x80218088] -JSystem/JGadget/linklist.cpp: - .text: [0x8006e604, 0x8006e800] -JSystem/JUtility/JUTGamePad.cpp: - .text: [0x80070274, 0x800713b0] - .ctors: [0x800a97ac, 0x800a97b0] - .rodata: [0x800ab240, 0x800ab260] - .data: [0x800def60, 0x800defa0] - .bss: [0x802070e0, 0x80207268] - .sdata: [0x802180b8, 0x802180d0] - .sbss: [0x80218808, 0x80218838] - .sdata2: [0x802192c0, 0x80219300] -dolphin/BASE/ppcarch.c: - .text: [0x8007867c, 0x80078718] -dolphin/os/OSArena.c: - .text: [0x8007988c, 0x800798ac] - .sdata: [0x80218178, 0x80218180] - .sbss: [0x802188f8, 0x80218900] -#dolphin/os/OSCache.c: -# .text: [0x80079b40, 0x8007a01c] -# .data: [0x800dfa00, 0x800dfc30] -#dolphin/os/OSDisableInterrupts.c: - # .text: [0x8007ac24, 0x8007ac38] -dolphin/os/OSEnableInterrupts.c: - .text: [0x8007ac38, 0x8007ac4c] -dolphin/os/OSRestoreInterrupts.c: - .text: [0x8007ac4c, 0x8007ac70] -dolphin/os/OSRtc.c: - .text: [0x8007d050, 0x8007db20] - .bss: [0x80207400, 0x80207458] -MSL_C/rand.c: - .text: [0x8009f46c, 0x8009f494] - .sdata: [0x80218260, 0x80218268] -TRK/mainloop.c: - .text: [0x800A1FF4, 0x800A20EC] -TRK/nubevent.c: - .text: [0x800A20EC, 0x800A2314] - .bss: [0x802095C8, 0x802095F0] -#TRK/nubinit.c: #things break, fix later -# .text: [0x800A2314, 0x800A2494] -# .rodata: [0x800AF750, 0x800AF770] -# .bss: [0x802095F0, 0x802095F8] -#TRK/usr_put.c: -# .text: [0x800A3468, 0x800A34F4] -#TRK/dispatch.c: -# .text: [0x800A34F4, 0x800A3590] -# .data: [0x800E2128, 0x800E21B0] -# .bss: [0x8020AFC0, 0x8020AFC8] -dolphin/odenotstub/odenotstub.c: - .text: [0x800a9770, 0x800a9780] -dolphin/amcstubs/AmcExi2Stubs.c: - .text: [0x800a8cc0, 0x800a8cf0] -dolphin/gx/GXStubs.c: - .text: [0x800998d4, 0x800998d8] +ctors.s: + .ctors: [0x800a97b4, 0x800a97c0] # remove trailing 0s from ctor area +#dolphin/os/__start.c: +# .init: [0x80003100, 0x80003354] +runtime/__mem.c: + .init: [0x800033a8, 0x800034e0] +TRK/init/mem_TRK.c: + .init: [0x800034e0, 0x80003534] +asm/__exception.s: + .init: [0x80003534, 0x80005468] +boot.c: + .text: [0x800056c0, 0x8000663c] + .rodata: [0x800a97e0, 0x800a97e8] + .data: [0x800af860, 0x800afe50] + .bss: [0x800e2280, 0x800e2318] +jsyswrap.cpp: + .text: [0x8000663c, 0x80007188] + .ctors: [0x800a9784, 0x800a9788] + .data: [0x800afe50, 0x800b05e8] + .bss: [0x800e2318, 0x800e2640] +initial_menu.c: + .text: [0x80007188, 0x80007e58] + .rodata: [0x800a97e8, 0x800a97f8] + .data: [0x800b0608, 0x800b0a60] + .bss: [0x800e2640, 0x800e2790] +dvderr.c: + .text: [0x80007e58, 0x800083f8] + .rodata: [0x800a97f8, 0x800a9838] + .data: [0x800b0a60, 0x800b9140] + .bss: [0x800e2790, 0x800e2b88] +jaudio_NES/dummyprobe.c: + .text: [0x800083f8, 0x80008400] +jaudio_NES/sample.c: + .text: [0x80018640, 0x80018920] +# jaudio_NES/game64.c: # TODO: finish +# .rodata: [0x800a9938, 0x800a9b98] +#jaudio_NES/verysimple.c: +# .text: [0x80008400, 0x80008480] +# .sdata: [0x80217b80, 0x80217b88] +Famicom/famicom.cpp: + .text: [0x80041614, 0x80046888] # TODO: get ~J2DOrthoGraph's dtor in here somehow? 0x800468fc, also add in JUTGamePad::getPortStatus when JUTGamePad is linked? + .rodata: [0x800aa9a8, 0x800aaa30] + .data: [0x800d8778, 0x800d99a0] + .bss: [0x801ef540, 0x801f6bd8] +Famicom/famicom_nesinfo.cpp: + .text: [0x800468fc, 0x80047e40] + .rodata: [0x800aaa30, 0x800aab60] + .data: [0x800d99a0, 0x800da9c8] + .bss: [0x801f6bd8, 0x801f6c80] +GBA2/JoyBoot.c: + .text: [0x80049788, 0x8004ae00] + .data: [0x800daa08, 0x800daaa0] + .bss: [0x801f7180, 0x801f71c0] +libforest/osreport.c: + .text: [0x8005a654, 0x8005a92c] + .data: [0x800dc6d8, 0x800dc738] + .bss: [0x80206f08, 0x80206f20] + .sbss: [0x80218618, 0x80218628] +libforest/fault.c: + .text: [0x8005a92c, 0x8005adac] + .data: [0x800dc738, 0x800dc7c8] + .bss: [0x80206f20, 0x80206f30] + .sbss: [0x80218628, 0x80218630] +libforest/ReconfigBATs.c: + .text: [0x8005adac, 0x8005aed4] +libu64/debug.c: + .text: [0x8005aed4, 0x8005af30] + .data: [0x800dc7c8, 0x800dc7f0] +libu64/gfxprint.c: + .text: [0x8005af30, 0x8005b9a8] + .data: [0x800dc7f0, 0x800dc810] + .sbss: [0x80218630, 0x80218638] +libu64/pad.c: + .text: [0x8005b9a8, 0x8005ba2c] +libc64/aprintf.c: + .text: [0x8005cbdc, 0x8005cc14] +libc64/math64.c: + .text: [0x8005cc14, 0x8005cccc] + .sdata2: [0x80219118, 0x80219130] +libc64/qrand.c: + .text: [0x8005cccc, 0x8005cd64] + .sdata: [0x80217de8, 0x80217df0] + .sbss: [0x80218640, 0x80218648] + .sdata2: [0x80219130, 0x80219138] +libc64/sprintf.c: + .text: [0x8005ce18, 0x8005cf08] +libc64/malloc.c: + .text: [0x8005cf08, 0x8005d01c] + .bss: [0x80206F30, 0x80206F60] +libultra/ultra.c: + .text: [0x8005d01c, 0x8005d15c] + .bss: [0x80206f60, 0x80206fa0] +#libultra/gu/scale.c: +# .text: [0x8005e7d4, 0x8005e860] +# .sdata2: [0x80219208, 0x80219210] +#libultra/gu/translate.c: +# .text: [0x8005e8ac, 0x8005e918] +libultra/gu/sins.c: + .text: [0x8005e860, 0x8005e8ac] + .data: [0x800dd360, 0x800ddb60] +#libultra/xldtob.c: +# .text: [0x8005e918, 0x8005f2a0] +# .rodata: [0x800ab110, 0x800ab158] +# .sdata: [0x80217df8, 0x80217e08] +# .sdata2: [0x80219210, 0x80219230] +#libultra/xlitob.c: +# .text: [0x8005f2a0, 0x8005f4cc] +# .data: [0x800ddb60, 0x800ddb88] +#libultra/xprintf.c: +# .text: [0x8005f4cc, 0x8005ff74] +# .rodata: [0x800ab158, 0x800ab170] +# .data: [0x800ddb88, 0x800ddd20] +# .sdata: [0x80217e08, 0x80217e10] +# .sdata2: [0x80219230, 0x80219238] +JSystem/JKernel/JKRHeap.cpp: + .text: [0x80063748, 0x80064028] + .data: [0x800ddf20, 0x800ddf98] + .sdata: [0x80217e58, 0x80217e80] + .sbss: [0x802186d8, 0x80218700] +JSystem/JKernel/JKRExpHeap.cpp: + .text: [0x80064028, 0x80065aa0] + .data: [0x800ddf98, 0x800de3a8] + .sdata: [0x80217e80, 0x80217ec0] + .sbss: [0x80218700, 0x80218720] + .sdata2: [0x80219278, 0x80219288] +JSystem/JKernel/JKRDisposer.cpp: + .text: [0x80065aa0, 0x80065b8c] + .data: [0x800de3a8, 0x800de3c0] + .sdata: [0x80217ec0, 0x80217ec8] +JSystem/JKernel/JKRThread.cpp: + .text: [0x80065b8c, 0x80065ef0] + .ctors: [0x800a978c, 0x800a9790] + .data: [0x800de3c0, 0x800de3f8] + .bss: [0x80207008, 0x80207020] + .sdata: [0x80217ec8, 0x80217ed8] +JSystem/JKernel/JKRAram.cpp: + .text: [0x80065ef8, 0x80066e84] + .ctors: [0x800a9790, 0x800a9794] + .data: [0x800de3f8, 0x800de4c0] + .bss: [0x80207020, 0x80207038] + .sdata: [0x80217ed8, 0x80217ef8] + .sbss: [0x80218720, 0x80218758] +JSystem/JKernel/JKRAramHeap.cpp: + .text: [0x80066e84, 0x80067258] + .ctors: [0x800a9794, 0x800a9798] + .data: [0x800de4c0, 0x800de4f0] + .bss: [0x80207038, 0x80207050] + .sdata: [0x80217ef8, 0x80217f08] +JSystem/JKernel/JKRAramBlock.cpp: + .text: [0x80067258, 0x800674c8] + .data: [0x800de4f0, 0x800de510] + .sdata: [0x80217f08, 0x80217f10] +JSystem/JKernel/JKRAramPiece.cpp: + .text: [0x800674c8, 0x80067a88] + .ctors: [0x800a9798, 0x800a979c] + .data: [0x800de510, 0x800de568] + .bss: [0x80207050, 0x80207080] + .sdata: [0x80217f10, 0x80217f18] +JSystem/JKernel/JKRAramStream.cpp: + .text: [0x80067a88, 0x80067ff4] + .data: [0x800de568, 0x800de608] + .sdata: [0x80217f18, 0x80217f38] + .sbss: [0x80218758, 0x80218768] +JSystem/JKernel/JKRFileLoader.cpp: + .text: [0x80067ff4, 0x800685b0] + .ctors: [0x800a979c, 0x800a97a0] + .data: [0x800de608, 0x800de670] + .bss: [0x80207080, 0x80207098] + .sdata: [0x80217f38, 0x80217f50] + .sbss: [0x80218768, 0x80218770] +JSystem/JKernel/JKRFileFinder.cpp: + .text: [0x800685b0, 0x80068744] + .data: [0x800de670, 0x800de6b0] + .sdata: [0x80217f50, 0x80217f60] +JSystem/JKernel/JKRArchivePub.cpp: + .text: [0x80068744, 0x80068ed0] + .data: [0x800de6b0, 0x800de740] + .sdata: [0x80217f60, 0x80217f78] +JSystem/JKernel/JKRArchivePri.cpp: + .text: [0x80068ed0, 0x80069530] + .sbss: [0x80218770, 0x80218778] +JSystem/JKernel/JKRMemArchive.cpp: + .text: [0x80069530, 0x80069a28] + .data: [0x800de740, 0x800de828] + .sdata: [0x80217f78, 0x80217f98] +JSystem/JKernel/JKRAramArchive.cpp: + .text: [0x80069a28, 0x8006a4fc] + .data: [0x800de828, 0x800de938] + .sdata: [0x80217f98, 0x80217fc8] +JSystem/JKernel/JKRDvdArchive.cpp: + .text: [0x8006a4fc, 0x8006add0] + .data: [0x800de938, 0x800dea70] + .sdata: [0x80217fc8, 0x80217fe8] +JSystem/JKernel/JKRCompArchive.cpp: + .text: [0x8006add0, 0x8006b8a4] + .data: [0x800dea70, 0x800deba8] + .sdata: [0x80217fe8, 0x80218008] +JSystem/JKernel/JKRDvdFile.cpp: + .text: [0x8006b8a4, 0x8006be0c] + .ctors: [0x800a97a0, 0x800a97a4] + .data: [0x800deba8, 0x800dec30] + .bss: [0x80207098, 0x802070b0] + .sdata: [0x80218008, 0x80218028] +JSystem/JKernel/JKRDvdRipper.cpp: + .text: [0x8006be0c, 0x8006c8fc] + .ctors: [0x800a97a4, 0x800a97a8] + .data: [0x800dec30, 0x800dec90] + .bss: [0x802070b0, 0x802070c8] + .sdata: [0x80218028, 0x80218030] + .sbss: [0x80218778, 0x802187a8] +JSystem/JKernel/JKRDvdAramRipper.cpp: + .text: [0x8006c8fc, 0x8006d608] + .ctors: [0x800a97a8, 0x800a97ac] + .bss: [0x802070c8, 0x802070e0] + .sdata: [0x80218030, 0x80218038] + .sbss: [0x802187a8, 0x802187e8] +JSystem/JKernel/JKRDecomp.cpp: + .text: [0x8006d608, 0x8006dd58] + .data: [0x800dec90, 0x800ded18] + .sdata: [0x80218038, 0x80218050] + .sbss: [0x802187e8, 0x802187f0] +JSystem/JSupport/JSUInputStream.cpp: + .text: [0x8006e168, 0x8006e3e4] + .data: [0x800ded18, 0x800dedb8] + .sdata: [0x80218050, 0x80218068] +#JSystem/JSupport/JSUFileStream.cpp: # JSUFileStream linkage disabled until we can resolve order of RTTI strings in .data +# .text: [0x8006e3e4, 0x8006e604] +# .data: [0x800dedb8, 0x800dee60] +# .sdata: [0x80218068, 0x80218088] +JSystem/JGadget/linklist.cpp: + .text: [0x8006e604, 0x8006e800] +JSystem/JUtility/JUTGamePad.cpp: + .text: [0x80070274, 0x800713b0] + .ctors: [0x800a97ac, 0x800a97b0] + .rodata: [0x800ab240, 0x800ab260] + .data: [0x800def60, 0x800defa0] + .bss: [0x802070e0, 0x80207268] + .sdata: [0x802180b8, 0x802180d0] + .sbss: [0x80218808, 0x80218838] + .sdata2: [0x802192c0, 0x80219300] +dolphin/BASE/ppcarch.c: + .text: [0x8007867c, 0x80078718] +dolphin/os/OSArena.c: + .text: [0x8007988c, 0x800798ac] + .sdata: [0x80218178, 0x80218180] + .sbss: [0x802188f8, 0x80218900] +#dolphin/os/OSCache.c: +# .text: [0x80079b40, 0x8007a01c] +# .data: [0x800dfa00, 0x800dfc30] +#dolphin/os/OSDisableInterrupts.c: + # .text: [0x8007ac24, 0x8007ac38] +dolphin/os/OSEnableInterrupts.c: + .text: [0x8007ac38, 0x8007ac4c] +dolphin/os/OSRestoreInterrupts.c: + .text: [0x8007ac4c, 0x8007ac70] +dolphin/os/OSRtc.c: + .text: [0x8007d050, 0x8007db20] + .bss: [0x80207400, 0x80207458] +dolphin/__ppc_eabi_init.cpp: + .init: [0x80003354, 0x800033a8] + .text: [0x8007fdfc, 0x8007fe90] +dolphin/gx/GXStubs.c: + .text: [0x800998d4, 0x800998d8] +MSL_C/rand.c: + .text: [0x8009f46c, 0x8009f494] + .sdata: [0x80218260, 0x80218268] +TRK/mainloop.c: + .text: [0x800A1FF4, 0x800A20EC] +TRK/nubevent.c: + .text: [0x800A20EC, 0x800A2314] + .bss: [0x802095C8, 0x802095F0] +dolphin/amcstubs/AmcExi2Stubs.c: + .text: [0x800a8cc0, 0x800a8cf0] +#TRK/nubinit.c: #things break, fix later +# .text: [0x800A2314, 0x800A2494] +# .rodata: [0x800AF750, 0x800AF770] +# .bss: [0x802095F0, 0x802095F8] +#TRK/usr_put.c: +# .text: [0x800A3468, 0x800A34F4] +#TRK/dispatch.c: +# .text: [0x800A34F4, 0x800A3590] +# .data: [0x800E2128, 0x800E21B0] +# .bss: [0x8020AFC0, 0x8020AFC8] +dolphin/odenotstub/odenotstub.c: + .text: [0x800a9770, 0x800a9780] +version.c: + .data: [0x800b05e8, 0x800b0608] +bootdata/gam_win1.c: + .data: [0x800b9140, 0x800bb500] +bootdata/gam_win2.c: + .data: [0x800bb500, 0x800bd820] +bootdata/gam_win3.c: + .data: [0x800bd820, 0x800be460] +bootdata/logo_nin.c: + .data: [0x800be460, 0x800c3140] +nintendo_hi_0.c: + .data: [0x800c3140, 0x800cca40] +libu64/gfxprint_data.c: + .data: [0x800dc810, 0x800dd090] diff --git a/configure.py b/configure.py index 71559bc9..0956c5b1 100644 --- a/configure.py +++ b/configure.py @@ -630,7 +630,10 @@ class CSource(Source): self.cflags = c.SDK_FLAGS self.cc = c.OCC elif path.startswith("src/static/jaudio_NES/"): - self.cflags = c.JAUDIO_CFLAGS + if path.startswith("src/static/jaudio_NES/sample.c"): + self.cflags = c.JAUDIO_SAMPLE_CFLAGS + else: + self.cflags = c.JAUDIO_CFLAGS self.cc = c.CC elif path.startswith("src/static/JSystem/JGadget/"): self.cflags = c.JSYSTEM_JGADGET_CFLAGS diff --git a/include/jaudio_NES/audiostruct.h b/include/jaudio_NES/audiostruct.h new file mode 100644 index 00000000..9a9f40f7 --- /dev/null +++ b/include/jaudio_NES/audiostruct.h @@ -0,0 +1,185 @@ +#ifndef AUDIOSTRUCT_H +#define AUDIOSTRUCT_H + +#include "types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct chnode_ chnode; +typedef struct link_ link; + +/* sizeof(struct link_) == 0x10 */ +struct link_ { + /* 0x00 */ link* next; + /* 0x04 */ link* prev; + union { + /* 0x08 */ int numAfter; /* when link is head */ + /* 0x08 */ void* pData; /* when link is node */ + }; + /* 0x0C */ chnode* pNode; +}; + +/* sizeof(struct chnode_) == 0x40 */ +struct chnode_ { + /* 0x00 */ link globalUse; + /* 0x10 */ link globalFree; + /* 0x20 */ link globalRelease; + /* 0x30 */ link globalReleaseWait; +}; + +/* sizeof(struct AudioPort_) == 0x8 */ +typedef struct AudioPort_ { + /* 0x00 */ u8 cmd; + /* 0x01 */ u8 groupID; + /* 0x02 */ u8 subtrackID; + /* 0x03 */ u8 _03; + /* 0x04 */ u32 param; +} AudioPort; + +/* sizeof(Acmd) == 0x4*/ +typedef union Acmd { + struct { + /* 0x00 */ u8 p0; + /* 0x01 */ u8 p1; + /* 0x02 */ u8 p2; + /* 0x03 */ u8 p3; + }; + /* 0x00 */ u32 uint32; +} Acmd; + +/* sizeof(ALHeap) == 0x14 */ +typedef struct ALHeap { + /* 0x00 */ u8* base; + /* 0x04 */ u8* current; + /* 0x08 */ int length; + /* 0x0C */ u32 count; + /* 0x10 */ u8* last; +} ALHeap; + +/* sizeof(ArcHeader) == 0x10 */ +typedef struct ArcHeader_ { + /* 0x00 */ s16 numEntries; + /* 0x02 */ u16 _02; + /* 0x04 */ u8* pData; + /* 0x08 */ u8 copy; +} ArcHeader ATTRIBUTE_ALIGN(8); + +/* sizeof(AutoHeapstrc) == 0xC */ +typedef struct AutoHeapstrc_ { + /* 0x00 */ int seqLen; + /* 0x04 */ int bankLen; + /* 0x08 */ int waveLen; +} AutoHeapstrc; + +/* sizeof(DataHeapstrc) == 0x8 */ +typedef struct DataHeapstrc_ { + /* 0x00 */ int dataLen; + /* 0x04 */ int autoLen; +} DataHeapstrc; + +/* sizeof(delay) == 0x30 */ +typedef struct delay_ { + /* 0x00 */ u8 _00[0x30 - 0x00]; /* TODO */ +} delay; + +/* sizeof(commonch) == 0x20 */ +typedef struct commonch_ { + /* 0x00 */ u8 _00; + /* 0x01 */ u8 _01; + /* 0x02 */ u8 _02; + /* 0x03 */ u8 _03; + /* 0x04 */ u8 _04; + /* 0x05 */ u8 _05; + /* 0x06 */ u8 _06; + /* 0x07 */ u8 _07; + /* 0x08 */ u16 _08; + /* 0x0A */ u16 _0A; + /* 0x0C */ u16 _0C; + /* 0x0E */ u16 _0E; + /* 0x10 */ void* _10; + /* 0x14 */ int _14; + /* 0x18 */ u8 _18; + /* 0x19 */ u8 _19; + /* 0x1A */ u8 _1A; + /* 0x1B */ u8 _1B[4]; +} commonch; + +/* sizeof(driverch) == 0x18 */ +typedef struct driverch_ { + /* 0x00 */ u8 _00; + /* 0x01 */ u8 _01; + /* 0x02 */ u8 _02; + /* 0x03 */ u8 _03; + /* 0x04 */ u8 _04; + /* 0x05 */ u8 _05; + /* 0x06 */ u8 _06; + /* 0x07 */ u8 _07; + /* 0x08 */ u16 _08; + /* 0x0A */ u16 _0A; + /* 0x0C */ u32 _0C; + /* 0x10 */ u8* _10; + /* 0x14 */ s16 _14; + /* 0x16 */ s16 _16; +} driverch; + +/* sizeof(phase) == 0x01 */ +typedef struct phase_ { + /* 0x00 */ u8 _00; +} phase; + +/* sizeof(drvparam) == 0x1C */ +typedef struct drvparam_ { + /* 0x00 */ u8 _00; + /* 0x01 */ u8 _01; + /* 0x02 */ u8 _02; + /* 0x03 */ u8 _03; + /* 0x04 */ phase phase; + /* 0x08 */ f32 pitch; + /* 0x0C */ f32 volume; + /* 0x10 */ int _10; + /* 0x14 */ int _14; + /* 0x18 */ u8 _18; + /* 0x19 */ u8 _19; + /* 0x1A */ u16 _1A; +} drvparam; + +/* sizeof(envdat) == 0x04 */ +typedef struct envdat_ { + /* 0x00 */ s16 key; + /* 0x02 */ s16 value; +} envdat; + +/* sizeof(envp) == 0x20 */ +typedef struct envp_ { + /* 0x00 */ u8 state; + /* 0x01 */ u8 envelope_table_row; + /* 0x02 */ s16 key; + /* 0x04 */ f32 min_vol; + /* 0x08 */ f32 attack; + /* 0x0C */ f32 decay_release; + /* 0x10 */ f32 volume; + /* 0x14 */ f32 target_volume; + /* 0x18 */ f32 _18; + /* 0x1C */ envdat* pEnvData; +} envp; + +typedef union SOUNDID_ { + struct { + u8 wave_id; + u8 inst_id; + u8 _02; + u8 _03; + }; + + u32 uint32; +} SOUNDID; + +typedef struct note_ note; + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/jaudio_NES/audiowork.h b/include/jaudio_NES/audiowork.h new file mode 100644 index 00000000..f3f81892 --- /dev/null +++ b/include/jaudio_NES/audiowork.h @@ -0,0 +1,14 @@ +#ifndef AUDIOWORK_H +#define AUDIOWORK_H + +#include "types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/jaudio_NES/sample.h b/include/jaudio_NES/sample.h new file mode 100644 index 00000000..3acde41c --- /dev/null +++ b/include/jaudio_NES/sample.h @@ -0,0 +1,12 @@ +#ifndef SAMPLE_H +#define SAMPLE_H + +#include "types.h" + +extern void Jac_imixcopy(s16* ta, s16* tb, s16* td, s32 s); +extern void Jac_bcopyfast(u32* src, u32* dest, u32 size); +extern void Jac_bcopy(void* src, void* dest, s32 size); +extern void Jac_bzerofast(u32* dest, u32 size); +extern void Jac_bzero(void* dest, s32 size); + +#endif diff --git a/src/static/jaudio_NES/sample.c b/src/static/jaudio_NES/sample.c new file mode 100644 index 00000000..5f3997b3 --- /dev/null +++ b/src/static/jaudio_NES/sample.c @@ -0,0 +1,116 @@ +#include "jaudio_NES/sample.h" + +#include "dolphin/os/OSCache.h" + +extern void Jac_imixcopy(s16* ta, s16* tb, s16* td, s32 s) { + for (s; s > 0; s--) { + *td++ = *ta++; + *td++ = *tb++; + } +} + +extern void Jac_bcopyfast(u32* src, u32* dest, u32 size) { + u32 copy1, copy2, copy3, copy4; + for (size = size / (4 * sizeof(u32)); size != 0; size--) { + copy1 = *src++; + copy2 = *src++; + copy3 = *src++; + copy4 = *src++; + *dest++ = copy1; + *dest++ = copy2; + *dest++ = copy3; + *dest++ = copy4; + } +} + +extern void Jac_bcopy(void* src, void* dest, s32 size) { + u8 alignedSrc, alignedDst; + u32* usrc; + u32* udest; + + u8* bsrc = (u8*)src; + u8* bdest = (u8*)dest; + + alignedSrc = (reinterpret_cast(bsrc) & 0x03); + alignedDst = (reinterpret_cast(bdest) & 0x03); + if ((alignedSrc) == (alignedDst) && (size & 0x0f) == 0) { + Jac_bcopyfast((u32*)src, (u32*)dest, size); + } else if ((alignedSrc) == (alignedDst) && (size >= 16)) { + if ((alignedSrc) != 0) { + for (alignedSrc = 4 - alignedSrc; (alignedSrc) != 0; alignedSrc--) { + *bdest++ = (u32) * (bsrc)++; + size--; + } + } + + udest = (u32*)bdest; + usrc = (u32*)bsrc; + + for (; size >= 4; size -= 4) { + *udest++ = *usrc++; + } + + if (size != 0) { + bdest = (u8*)udest; + bsrc = (u8*)usrc; + + for (; size > 0; size--) { + *bdest++ = (u32)*bsrc++; + } + } + } else { + for (; size > 0; size--) { + *bdest++ = (u32)*bsrc++; + } + } +} + +extern void Jac_bzerofast(u32* dest, u32 size) { + for (size = size / (4 * sizeof(u32)); size != 0; size--) { + *dest++ = 0; + *dest++ = 0; + *dest++ = 0; + *dest++ = 0; + } +} + +extern void Jac_bzero(void* dest, s32 size) { + u32* udest; + u8* bdest = (u8*)dest; + u8 alignedbitsDst = reinterpret_cast(bdest) & 0x3; + if (alignedbitsDst == 0) { + if ((size & 0x1f) == 0) { + DCZeroRange(dest, size); + return; + } + if ((size & 0xf) == 0) { + Jac_bzerofast((u32*)dest, size); + return; + } + } + + if (size >= 16) { + if (alignedbitsDst != 0) { + for (alignedbitsDst = 4 - alignedbitsDst; alignedbitsDst != 0; alignedbitsDst--) { + *bdest++ = 0; + size--; + } + } + + udest = (u32*)bdest; + for (; size >= 4; size -= 4) { + *udest++ = 0; + } + + if (size != 0) { + bdest = (u8*)udest; + for (; size > 0; size--) { + *bdest++ = 0; + } + } + } else { + for (; size > 0; size--) { + *bdest++ = 0; + } + } +} From 58395b346171c5cecc04aa1d4eec3342c61cdd78 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Mon, 3 Jun 2024 17:13:51 -0400 Subject: [PATCH 005/234] temp --- include/dolphin/ai.h | 50 ++++++ include/jaudio_NES/aictrl.h | 36 ++++ include/jaudio_NES/audiocommon.h | 17 ++ include/jaudio_NES/dspbuf.h | 8 + include/jaudio_NES/memory.h | 10 ++ include/jaudio_NES/rate.h | 17 ++ include/jaudio_NES/streamctrl.h | 8 + src/static/jaudio_NES/aictrl.c | 287 +++++++++++++++++++++++++++++++ 8 files changed, 433 insertions(+) create mode 100644 include/dolphin/ai.h create mode 100644 include/jaudio_NES/aictrl.h create mode 100644 include/jaudio_NES/audiocommon.h create mode 100644 include/jaudio_NES/dspbuf.h create mode 100644 include/jaudio_NES/memory.h create mode 100644 include/jaudio_NES/rate.h create mode 100644 include/jaudio_NES/streamctrl.h create mode 100644 src/static/jaudio_NES/aictrl.c diff --git a/include/dolphin/ai.h b/include/dolphin/ai.h new file mode 100644 index 00000000..79bd974e --- /dev/null +++ b/include/dolphin/ai.h @@ -0,0 +1,50 @@ +#ifndef _DOLPHIN_AI_H_ +#define _DOLPHIN_AI_H_ + +#include "types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef void (*AISCallback)(u32 count); +typedef void (*AIDCallback)(); + +#define AI_STREAM_START 1 +#define AI_STREAM_STOP 0 + +#define AI_SAMPLERATE_32KHZ 0 +#define AI_SAMPLERATE_48KHZ 1 + +AIDCallback AIRegisterDMACallback(AIDCallback callback); +void AIInitDMA(u32 start_addr, u32 length); +BOOL AIGetDMAEnableFlag(void); +void AIStartDMA(void); +void AIStopDMA(void); +u32 AIGetDMABytesLeft(void); +u32 AIGetDMAStartAddr(void); +u32 AIGetDMALength(void); +BOOL AICheckInit(void); +AISCallback AIRegisterStreamCallback(AISCallback callback); +u32 AIGetStreamSampleCount(void); +void AIResetStreamSampleCount(void); +void AISetStreamTrigger(u32 trigger); +u32 AIGetStreamTrigger(void); +void AISetStreamPlayState(u32 state); +u32 AIGetStreamPlayState(void); +void AISetDSPSampleRate(u32 rate); +u32 AIGetDSPSampleRate(void); +void AISetStreamSampleRate(u32 rate); +u32 AIGetStreamSampleRate(void); +void AISetStreamVolLeft(u8 vol); +u8 AIGetStreamVolLeft(void); +void AISetStreamVolRight(u8 vol); +u8 AIGetStreamVolRight(void); +void AIInit(u8* stack); +void AIReset(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/jaudio_NES/aictrl.h b/include/jaudio_NES/aictrl.h new file mode 100644 index 00000000..77631ce8 --- /dev/null +++ b/include/jaudio_NES/aictrl.h @@ -0,0 +1,36 @@ +#ifndef AICTRL_H +#define AICTRL_H + +#include "types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +extern u32 UNIVERSAL_DACCOUNTER; +extern u32 JAC_VFRAME_COUNTER; + +typedef enum _MixMode { + MixMode_Mono, + MixMode_MonoWide, + MixMode_Extra, + MixMode_Interleave, + + MixMode_Num +} MixMode; + +typedef s16* (*MixCallback)(s32); + +extern void Jac_HeapSetup(void* pHeap, s32 size); +extern void* OSAlloc2(u32 size); +extern void Jac_Init(void); +extern MixCallback Jac_GetMixcallback(u8* mixmode); +extern void Jac_RegisterMixcallback(MixCallback mixcallback, u8 mixmode); +extern void Jac_VframeWork(void); +extern void Jac_UpdateDAC(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/jaudio_NES/audiocommon.h b/include/jaudio_NES/audiocommon.h new file mode 100644 index 00000000..a72adf0d --- /dev/null +++ b/include/jaudio_NES/audiocommon.h @@ -0,0 +1,17 @@ +#ifndef AUDIOCOMMON_H +#define AUDIOCOMMON_H + +#include "types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define S16_MIN (-0x8000) +#define S16_MAX (0x7FFF) + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/jaudio_NES/dspbuf.h b/include/jaudio_NES/dspbuf.h new file mode 100644 index 00000000..d0f5c114 --- /dev/null +++ b/include/jaudio_NES/dspbuf.h @@ -0,0 +1,8 @@ +#ifndef DSPBUF_H +#define DSPBUF_H + +#include "types.h" + +extern s16* MixDsp(s32 nSamples); + +#endif diff --git a/include/jaudio_NES/memory.h b/include/jaudio_NES/memory.h new file mode 100644 index 00000000..28030c1e --- /dev/null +++ b/include/jaudio_NES/memory.h @@ -0,0 +1,10 @@ +#ifndef JAUDIO_MEMORY_H +#define JAUDIO_MEMORY_H + +#include "types.h" +#include "jaudio_NES/audiostruct.h" + +extern void Nas_HeapInit(ALHeap* heap, u8* base, s32 len); +extern void* Nas_HeapAlloc(ALHeap* heap, s32 size); + +#endif diff --git a/include/jaudio_NES/rate.h b/include/jaudio_NES/rate.h new file mode 100644 index 00000000..3450ddb7 --- /dev/null +++ b/include/jaudio_NES/rate.h @@ -0,0 +1,17 @@ +#ifndef RATE_H +#define RATE_H + +#include "types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +extern u32 JAC_FRAMESAMPLES; +extern u32 DAC_SIZE; + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/jaudio_NES/streamctrl.h b/include/jaudio_NES/streamctrl.h new file mode 100644 index 00000000..e2048d92 --- /dev/null +++ b/include/jaudio_NES/streamctrl.h @@ -0,0 +1,8 @@ +#ifndef STREAMCTRL_H +#define STREAMCTRL_H + +#include "types.h" + +extern void StreamMain(void); + +#endif diff --git a/src/static/jaudio_NES/aictrl.c b/src/static/jaudio_NES/aictrl.c new file mode 100644 index 00000000..d4bae0ce --- /dev/null +++ b/src/static/jaudio_NES/aictrl.c @@ -0,0 +1,287 @@ +#include "jaudio_NES/aictrl.h" + +#include "jaudio_NES/dummyprobe.h" +#include "jaudio_NES/memory.h" +#include "jaudio_NES/sample.h" +#include "jaudio_NES/dspbuf.h" +#include "jaudio_NES/streamctrl.h" +#include "jaudio_NES/rate.h" +#include "dolphin/os.h" +#include "dolphin/ai.h" + +typedef void (*DACCallback)(s16*, s32); + +u32 UNIVERSAL_DACCOUNTER = 0; + +static s16* dac[3]; +static ALHeap audio_hp; +static BOOL audio_hp_exist = FALSE; +static s16* last_rsp_madep = nullptr; +static s16* use_rsp_madep = nullptr; +static BOOL vframe_work_running = FALSE; +static DACCallback DAC_CALLBACK_FUNC = nullptr; +u32 JAC_VFRAME_COUNTER = 0; +static MixCallback ext_mixcallback = nullptr; +static u8 ext_mixmode = MixMode_Mono; + +extern void Jac_HeapSetup(void* pHeap, s32 size) { + if (pHeap != nullptr) { + Nas_HeapInit(&audio_hp, (u8*)pHeap, size); + audio_hp_exist = TRUE; + } else { + audio_hp_exist = FALSE; + } +} + +extern void* OSAlloc2(u32 size) { + void* alloc; + BOOL enable = OSDisableInterrupts(); + + switch (audio_hp_exist) { + case FALSE: + alloc = OSAlloc(size); + break; + case TRUE: + alloc = Nas_HeapAlloc(&audio_hp, size); + break; + } + + OSRestoreInterrupts(enable); + return alloc; +} + +extern void Jac_Init(void) { + for (int i = 0; i < 3; i++) { + dac[i] = (s16*)OSAlloc2(DAC_SIZE * 2); + Jac_bzero(dac[i], DAC_SIZE * 2); + DCStoreRange(dac[i], DAC_SIZE * 2); + } + + AIInit(nullptr); + AIInitDMA((u32)dac[2], DAC_SIZE * 2); +} + +static void MixMonoTrack(s16* track, s32 nSamples, MixCallback callback) { + Probe_Start(5, "MONO-MIX"); + + s16* monoTrack = (*callback)(nSamples); + int mix; + + if (monoTrack != nullptr) { + Probe_Finish(5); + + s16* dst_p = track; + s16* src_p = monoTrack; + + for (s32 i = 0; i < nSamples; i++) { + mix = dst_p[0] + src_p[0]; + if (mix < S16_MIN) { + mix = S16_MIN + 1; + } + + if (mix > S16_MAX) { + mix = S16_MAX; + } + + dst_p[0] = (s16)mix; + + mix = dst_p[1] + src_p[0]; + if (mix < S16_MIN) { + mix = S16_MIN + 1; + } + + if (mix > S16_MAX) { + mix = S16_MAX; + } + + dst_p[1] = (s16)mix; + + dst_p += 2; + src_p++; + } + } +} + +static void MixMonoTrackWide(s16* track, s32 nSamples, MixCallback callback) { + Probe_Start(5, "MONO(W)-MIX"); + + s16* monoTrack = (*callback)(nSamples); + int mix; + + if (monoTrack != nullptr) { + Probe_Finish(5); + + s16* dst_p = track; + s16* src_p = monoTrack; + + for (s32 i = 0; i < nSamples; i++) { + mix = dst_p[0] + src_p[0]; + if (mix < S16_MIN) { + mix = S16_MIN + 1; + } + + if (mix > S16_MAX) { + mix = S16_MAX; + } + + dst_p[0] = (s16)mix; + + mix = dst_p[1] - src_p[0]; + if (mix < S16_MIN) { + mix = S16_MIN + 1; + } + + if (mix > S16_MAX) { + mix = S16_MAX; + } + + dst_p[1] = (s16)mix; + + dst_p += 2; + src_p++; + } + } +} + +static void MixExtraTrack(s16* track, s32 nSamples, MixCallback callback) { + Probe_Start(5, "DSPMIX"); + + s16* extraTrack = (*callback)(nSamples); + int mix; + + if (extraTrack != nullptr) { + Probe_Finish(5); + Probe_Start(6, "MIXING"); + + s16* dst_p = track; + s16* src0_p = extraTrack + JAC_FRAMESAMPLES; + s16* src1_p = extraTrack; + + for (s32 i = 0; i < nSamples; i++) { + mix = dst_p[0] + src0_p[0]; + if (mix < S16_MIN) { + mix = S16_MIN + 1; + } + + if (mix > S16_MAX) { + mix = S16_MAX; + } + + dst_p[0] = (s16)mix; + + mix = dst_p[1] + src1_p[0]; + if (mix < S16_MIN) { + mix = S16_MIN + 1; + } + + if (mix > S16_MAX) { + mix = S16_MAX; + } + + dst_p[1] = (s16)mix; + + dst_p += 2; + src0_p++; + src1_p++; + } + + Probe_Finish(6); + } +} + +static void MixInterleaveTrack(s16* track, s32 nSamples, MixCallback callback) { + s16* interleaveTrack = (*callback)(nSamples); + int mix; + + if (interleaveTrack != nullptr) { + s16* track_p = track; + s32 max = nSamples * 2; + + for (s32 i = 0; i < max; i++) { + mix = track_p[0] + interleaveTrack[0]; + if (mix < S16_MIN) { + mix = S16_MIN + 1; + } + + if (mix > S16_MAX) { + mix = S16_MAX; + } + + track_p[0] = (s16)mix; + + track_p++; + interleaveTrack++; + } + } +} + +extern MixCallback Jac_GetMixcallback(u8* mixmode) { + *mixmode = ext_mixmode; + return ext_mixcallback; +} + +extern void Jac_RegisterMixcallback(MixCallback mixcallback, u8 mixmode) { + ext_mixcallback = mixcallback; + ext_mixmode = mixmode; +} + +extern void Jac_VframeWork(void) { + static u32 dacp = 0; + + JAC_VFRAME_COUNTER++; + + s16* mixedTrack = MixDsp(DAC_SIZE / 2); + Jac_imixcopy(&mixedTrack[JAC_FRAMESAMPLES], &mixedTrack[0], dac[dacp], DAC_SIZE / 2); + + if (ext_mixcallback != nullptr) { + switch (ext_mixmode) { + case MixMode_Mono: + MixMonoTrack(dac[dacp], DAC_SIZE / 2, ext_mixcallback); + break; + case MixMode_MonoWide: + MixMonoTrackWide(dac[dacp], DAC_SIZE / 2, ext_mixcallback); + break; + case MixMode_Extra: + MixExtraTrack(dac[dacp], DAC_SIZE / 2, ext_mixcallback); + break; + case MixMode_Interleave: + MixInterleaveTrack(dac[dacp], DAC_SIZE / 2, ext_mixcallback); + break; + } + } + + BOOL enable = OSDisableInterrupts(); + DCStoreRange(dac[dacp], DAC_SIZE * 2); + OSRestoreInterrupts(enable); + + last_rsp_madep = dac[dacp]; + dacp++; + if (dacp == 3) { + dacp = 0; + } + vframe_work_running = FALSE; +} + +extern void Jac_UpdateDAC(void) { + if (use_rsp_madep == nullptr) { + use_rsp_madep = last_rsp_madep; + last_rsp_madep = nullptr; + } + + if (use_rsp_madep != nullptr) { + AIInitDMA((u32)use_rsp_madep, DAC_SIZE * 2); + use_rsp_madep = nullptr; + } else { + UNIVERSAL_DACCOUNTER++; + } + + if (last_rsp_madep == nullptr && vframe_work_running == FALSE) { + Jac_VframeWork(); + } + + StreamMain(); + + if (DAC_CALLBACK_FUNC != nullptr) { + (*DAC_CALLBACK_FUNC)(last_rsp_madep, DAC_SIZE / 2); + } +} From 7f001f81e7cbb76ffc2261e67c8b3b855e89269b Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Mon, 3 Jun 2024 17:22:36 -0400 Subject: [PATCH 006/234] Link jaudio_NES/aictrl.c --- common.py | 7 +++-- config/dol_slices.yml | 6 ++++ configure.py | 11 +++++-- include/dolphin/os.h | 47 +++++++++++++++--------------- include/dolphin/os/OSAlloc.h | 25 +++++++++++++--- include/jaudio_NES/audiostruct.h | 1 + include/jaudio_NES/dummyprobe.h | 6 ++-- src/static/jaudio_NES/dummyprobe.c | 8 ++--- 8 files changed, 70 insertions(+), 41 deletions(-) diff --git a/common.py b/common.py index 64d622c4..708e87ca 100644 --- a/common.py +++ b/common.py @@ -447,8 +447,9 @@ JAUDIO_BASE = CFLAGS + [ "-enum int", "-common on" ] + DOL_DEFINES -JAUDIO_SAMPLE = [ - "-func_align 32" +JAUDIO_FUNC_ALIGN_32 = [ + "-func_align 32", + "-str readonly" ] JSYSTEM_CFLAGS = ' '.join(JSYSTEM_BASE + LOCAL_CFLAGS) @@ -467,7 +468,7 @@ EXTERNAL_REL_CFLAGS = ' '.join(BASE_REL_CFLAGS) PREPROCESS_CFLAGS = ' '.join(PREPROCESSOR_CFLAGS) FAMICOM_CLFAGS = ' '.join(FAMICOM_BASE + LOCAL_CFLAGS) JAUDIO_CFLAGS = ' '.join(JAUDIO_BASE + LOCAL_CFLAGS) -JAUDIO_SAMPLE_CFLAGS = ' '.join(JAUDIO_BASE + JAUDIO_SAMPLE + LOCAL_CFLAGS) +JAUDIO_FUNC_ALIGN_32_CFLAGS = ' '.join(JAUDIO_BASE + JAUDIO_FUNC_ALIGN_32 + LOCAL_CFLAGS) DOL_LDFLAGS = ' '.join([ "-maxerrors 1", diff --git a/config/dol_slices.yml b/config/dol_slices.yml index f70a23e5..5136ef25 100644 --- a/config/dol_slices.yml +++ b/config/dol_slices.yml @@ -30,6 +30,12 @@ dvderr.c: .bss: [0x800e2790, 0x800e2b88] jaudio_NES/dummyprobe.c: .text: [0x800083f8, 0x80008400] +jaudio_NES/aictrl.c: + .text: [0x80017e80, 0x80018640] + .rodata: [0x800aa500, 0x800aa518] + .bss: [0x8017cfa0, 0x8017cfc0] + .sbss: [0x802183f0, 0x80218420] + .sdata2: [0x80218da8, 0x80218db8] jaudio_NES/sample.c: .text: [0x80018640, 0x80018920] # jaudio_NES/game64.c: # TODO: finish diff --git a/configure.py b/configure.py index 0956c5b1..04cc9feb 100644 --- a/configure.py +++ b/configure.py @@ -623,15 +623,20 @@ class AsmSource(Source): rule = "as", inputs = self.src_path ) - + +JAUDIO_FUNC_ALIGN_32_TUS = [ + "sample.c", + "aictrl.c" +] + class CSource(Source): def __init__(self, ctx: c.SourceContext, path: str): if path.startswith("src/static/dolphin/"): self.cflags = c.SDK_FLAGS self.cc = c.OCC elif path.startswith("src/static/jaudio_NES/"): - if path.startswith("src/static/jaudio_NES/sample.c"): - self.cflags = c.JAUDIO_SAMPLE_CFLAGS + if os.path.basename(path) in JAUDIO_FUNC_ALIGN_32_TUS: + self.cflags = c.JAUDIO_FUNC_ALIGN_32_CFLAGS else: self.cflags = c.JAUDIO_CFLAGS self.cc = c.CC diff --git a/include/dolphin/os.h b/include/dolphin/os.h index 7187662d..e925135d 100644 --- a/include/dolphin/os.h +++ b/include/dolphin/os.h @@ -2,6 +2,8 @@ #define _DOLPHIN_OS #include "types.h" +#include "dolphin/os/OSAlloc.h" +#include "dolphin/os/OSCache.h" #include "dolphin/os/OSContext.h" #include "dolphin/os/OSInterrupt.h" #include "dolphin/os/OSMessage.h" @@ -19,47 +21,46 @@ extern void __OSPSInit(); extern void __OSFPRInit(); extern void __OSCacheInit(); -void OSPanic(const char *file, int line, const char *message, ...); +void OSPanic(const char* file, int line, const char* message, ...); void OSVReport(const char* fmt, va_list list); void OSReport(const char* fmt, ...); extern void __OSPSInit(); extern void __OSCacheInit(); -#define OSErrorLine(line, ...) \ - OSPanic(__FILE__, line, __VA_ARGS__) +#define OSErrorLine(line, ...) OSPanic(__FILE__, line, __VA_ARGS__) #ifdef DOLPHIN_DEBUG -#define DOLPHIN_ASSERTLINE(assertion, line) \ - (void) ((assertion) || (OSErrorLine(line, "Failed assertion " #assertion), 0)) -#define DOLPHIN_ASSERT(assertion) \ - (void) ((assertion) || (OSPanic(__FILE__, __LINE__, "Failed assertion " #assertion), 0)) +#define DOLPHIN_ASSERTLINE(assertion, line) \ + (void)((assertion) || (OSErrorLine(line, "Failed assertion " #assertion), 0)) +#define DOLPHIN_ASSERT(assertion) \ + (void)((assertion) || (OSPanic(__FILE__, __LINE__, "Failed assertion " #assertion), 0)) #else #define DOLPHIN_ASSERTLINE(assertion, line) #define DOLPHIN_ASSERT(assertion) #endif -//void OSResetSystem(u32, u32, u32); // goes in reset, but eh +// void OSResetSystem(u32, u32, u32); // goes in reset, but eh void OSInit(void); -#define OS_CONSOLE_RETAIL4 0x00000004 -#define OS_CONSOLE_RETAIL3 0x00000003 -#define OS_CONSOLE_RETAIL2 0x00000002 -#define OS_CONSOLE_RETAIL1 0x00000001 -#define OS_CONSOLE_RETAIL 0x00000000 -#define OS_CONSOLE_DEVHW4 0x10000007 -#define OS_CONSOLE_DEVHW3 0x10000006 -#define OS_CONSOLE_DEVHW2 0x10000005 -#define OS_CONSOLE_DEVHW1 0x10000004 -#define OS_CONSOLE_MINNOW 0x10000003 -#define OS_CONSOLE_ARTHUR 0x10000002 +#define OS_CONSOLE_RETAIL4 0x00000004 +#define OS_CONSOLE_RETAIL3 0x00000003 +#define OS_CONSOLE_RETAIL2 0x00000002 +#define OS_CONSOLE_RETAIL1 0x00000001 +#define OS_CONSOLE_RETAIL 0x00000000 +#define OS_CONSOLE_DEVHW4 0x10000007 +#define OS_CONSOLE_DEVHW3 0x10000006 +#define OS_CONSOLE_DEVHW2 0x10000005 +#define OS_CONSOLE_DEVHW1 0x10000004 +#define OS_CONSOLE_MINNOW 0x10000003 +#define OS_CONSOLE_ARTHUR 0x10000002 #define OS_CONSOLE_PC_EMULATOR 0x10000001 -#define OS_CONSOLE_EMULATOR 0x10000000 +#define OS_CONSOLE_EMULATOR 0x10000000 #define OS_CONSOLE_DEVELOPMENT 0x10000000 -#define OS_CONSOLE_DEVKIT 0x10000000 -#define OS_CONSOLE_TDEVKIT 0x20000000 +#define OS_CONSOLE_DEVKIT 0x10000000 +#define OS_CONSOLE_TDEVKIT 0x20000000 -#define OS_CONSOLE_DEV_MASK 0x10000000 +#define OS_CONSOLE_DEV_MASK 0x10000000 u32 OSGetConsoleType(); #define OS_CONSOLE_IS_DEV() ((OSGetConsoleType() & OS_CONSOLE_DEV_MASK) != 0) diff --git a/include/dolphin/os/OSAlloc.h b/include/dolphin/os/OSAlloc.h index e413f67f..ae2f1cba 100644 --- a/include/dolphin/os/OSAlloc.h +++ b/include/dolphin/os/OSAlloc.h @@ -2,14 +2,31 @@ #define OS_ALLOC_H #ifdef __cplusplus -extern "C" -{ +extern "C" { #endif - void *OSInitAlloc(void *, void *, int); +typedef int OSHeapHandle; + +extern volatile OSHeapHandle __OSCurrHeap; + +void* OSAllocFromHeap(int heap, unsigned long size); +void* OSAllocFixed(void* rstart, void* rend); +void OSFreeToHeap(int heap, void* ptr); +int OSSetCurrentHeap(int heap); +void* OSInitAlloc(void* arenaStart, void* arenaEnd, int maxHeaps); +int OSCreateHeap(void* start, void* end); +void OSDestroyHeap(int heap); +void OSAddToHeap(int heap, void* start, void* end); +long OSCheckHeap(int heap); +unsigned long OSReferentSize(void* ptr); +void OSDumpHeap(int heap); +void OSVisitAllocated(void (*visitor)(void*, unsigned long)); + +#define OSAlloc(size) OSAllocFromHeap(__OSCurrHeap, (size)) +#define OSFree(ptr) OSFreeToHeap(__OSCurrHeap, (ptr)) #ifdef __cplusplus } #endif -#endif \ No newline at end of file +#endif diff --git a/include/jaudio_NES/audiostruct.h b/include/jaudio_NES/audiostruct.h index 9a9f40f7..4e38a893 100644 --- a/include/jaudio_NES/audiostruct.h +++ b/include/jaudio_NES/audiostruct.h @@ -2,6 +2,7 @@ #define AUDIOSTRUCT_H #include "types.h" +#include "jaudio_NES/audiocommon.h" #ifdef __cplusplus extern "C" { diff --git a/include/jaudio_NES/dummyprobe.h b/include/jaudio_NES/dummyprobe.h index 6b155fef..f45d515d 100644 --- a/include/jaudio_NES/dummyprobe.h +++ b/include/jaudio_NES/dummyprobe.h @@ -7,11 +7,11 @@ extern "C" { #endif - void Probe_Start(void); - void Probe_Finish(void); +extern void Probe_Start(s32 id, const char* label); +extern void Probe_Finish(s32 id); #ifdef __cplusplus } #endif -#endif \ No newline at end of file +#endif diff --git a/src/static/jaudio_NES/dummyprobe.c b/src/static/jaudio_NES/dummyprobe.c index 1308e37e..f2ef6ff8 100644 --- a/src/static/jaudio_NES/dummyprobe.c +++ b/src/static/jaudio_NES/dummyprobe.c @@ -1,9 +1,7 @@ #include "jaudio_NES/dummyprobe.h" -void Probe_Start(void){ - +extern void Probe_Start(s32 id, const char* label) { } -void Probe_Finish(void){ - -} \ No newline at end of file +extern void Probe_Finish(s32 id) { +} From 1ae02605f687697d71d4b0fdfd9193575d58f17f Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Mon, 3 Jun 2024 18:52:26 -0400 Subject: [PATCH 007/234] Implement & link jaudio_NES/dummyrom.c --- config/analysis_overrides.yml | 1 + config/dol_slices.yml | 5 ++ configure.py | 3 +- include/jaudio_NES/audiocommon.h | 3 + include/jaudio_NES/audiostruct.h | 12 +--- include/jaudio_NES/dummyrom.h | 23 ++++++++ include/jaudio_NES/dvdthread.h | 13 +++++ include/jaudio_NES/os.h | 9 +++ include/libultra/osMesg.h | 4 +- src/static/jaudio_NES/dummyrom.c | 94 ++++++++++++++++++++++++++++++++ 10 files changed, 153 insertions(+), 14 deletions(-) create mode 100644 include/jaudio_NES/dummyrom.h create mode 100644 include/jaudio_NES/dvdthread.h create mode 100644 include/jaudio_NES/os.h create mode 100644 src/static/jaudio_NES/dummyrom.c diff --git a/config/analysis_overrides.yml b/config/analysis_overrides.yml index 55996991..eb088a0b 100644 --- a/config/analysis_overrides.yml +++ b/config/analysis_overrides.yml @@ -5,6 +5,7 @@ blocked_targets: - 0x800A97E0 # boot.c local static const tbl, also start of .rodata - 0x80008000 - 0x80018800 + - 0x800189C0 - 0x801F6C7C # tcs_bad - 0x801F6C7D # ics_bad - 0x800a9a90 diff --git a/config/dol_slices.yml b/config/dol_slices.yml index 5136ef25..fa591fcf 100644 --- a/config/dol_slices.yml +++ b/config/dol_slices.yml @@ -38,6 +38,11 @@ jaudio_NES/aictrl.c: .sdata2: [0x80218da8, 0x80218db8] jaudio_NES/sample.c: .text: [0x80018640, 0x80018920] +jaudio_NES/dummyrom.c: + .text: [0x80018920, 0x80018bc0] + .rodata: [0x800aa518, 0x800aa528] +# .bss: [0x8020d78c, 0x8020d7a0] # placed in common bss + .sbss: [0x80218420, 0x80218440] # jaudio_NES/game64.c: # TODO: finish # .rodata: [0x800a9938, 0x800a9b98] #jaudio_NES/verysimple.c: diff --git a/configure.py b/configure.py index 04cc9feb..1440224d 100644 --- a/configure.py +++ b/configure.py @@ -626,7 +626,8 @@ class AsmSource(Source): JAUDIO_FUNC_ALIGN_32_TUS = [ "sample.c", - "aictrl.c" + "aictrl.c", + "dummyrom.c" ] class CSource(Source): diff --git a/include/jaudio_NES/audiocommon.h b/include/jaudio_NES/audiocommon.h index a72adf0d..6f3a7ce6 100644 --- a/include/jaudio_NES/audiocommon.h +++ b/include/jaudio_NES/audiocommon.h @@ -10,6 +10,9 @@ extern "C" { #define S16_MIN (-0x8000) #define S16_MAX (0x7FFF) +#define AUDIO_ARAM_SIZE 0x400000 /* 4MB */ +#define AUDIO_ARAM_HEAP_SIZE 0xC000 + #ifdef __cplusplus } #endif diff --git a/include/jaudio_NES/audiostruct.h b/include/jaudio_NES/audiostruct.h index 4e38a893..1cd1f149 100644 --- a/include/jaudio_NES/audiostruct.h +++ b/include/jaudio_NES/audiostruct.h @@ -3,6 +3,7 @@ #include "types.h" #include "jaudio_NES/audiocommon.h" +#include "PR/abi.h" #ifdef __cplusplus extern "C" { @@ -39,17 +40,6 @@ typedef struct AudioPort_ { /* 0x04 */ u32 param; } AudioPort; -/* sizeof(Acmd) == 0x4*/ -typedef union Acmd { - struct { - /* 0x00 */ u8 p0; - /* 0x01 */ u8 p1; - /* 0x02 */ u8 p2; - /* 0x03 */ u8 p3; - }; - /* 0x00 */ u32 uint32; -} Acmd; - /* sizeof(ALHeap) == 0x14 */ typedef struct ALHeap { /* 0x00 */ u8* base; diff --git a/include/jaudio_NES/dummyrom.h b/include/jaudio_NES/dummyrom.h new file mode 100644 index 00000000..76d8be69 --- /dev/null +++ b/include/jaudio_NES/dummyrom.h @@ -0,0 +1,23 @@ +#ifndef DUMMYROM_H +#define DUMMYROM_H + +#include "types.h" +#include "jaudio_NES/audiostruct.h" +#include "libultra/libultra.h" + +#define DUMMYROM_DRAM_TO_ARAM 0 +#define DUMMYROM_ARAM_TO_DRAM 1 + +extern u8* JAC_ARAM_DMA_BUFFER_TOP; +ALHeap aram_hp; /* placed in common bss */ + +extern u32 GetNeos_FileTop(void); +extern u32 GetNeosRomTop(void); +extern u32 GetNeosRom_PreLoaded(void); +extern void SetPreCopy_NeosRom(u8* load_addr, u32 load_size, BOOL cut_flag); +extern BOOL ARAMStartDMAmesg(u32 dir, u32 dramAddr, u32 aramAddr, u32 size, s32 unused, OSMesgQueue* mq); +extern void Jac_SetAudioARAMSize(u32 size); +extern void ARAllocFull(u32* outSize); +extern void Jac_InitARAM(u32 loadAudiorom); + +#endif diff --git a/include/jaudio_NES/dvdthread.h b/include/jaudio_NES/dvdthread.h new file mode 100644 index 00000000..2d0a4a64 --- /dev/null +++ b/include/jaudio_NES/dvdthread.h @@ -0,0 +1,13 @@ +#ifndef DVDTHREAD_H +#define DVDTHREAD_H + +#include "types.h" +#include "dolphin/dvd.h" + +typedef void (*Jac_DVDCallback)(u32); + +extern s32 DVDT_DRAMtoARAM(u32 owner, u32 dram, u32 aram, u32 len, u32* outLen, Jac_DVDCallback callback); +extern s32 DVDT_ARAMtoDRAM(u32 owner, u32 dram, u32 aram, u32 len, u32* outLen, Jac_DVDCallback callback); +extern u32 Jac_CheckFile(char* path); + +#endif diff --git a/include/jaudio_NES/os.h b/include/jaudio_NES/os.h new file mode 100644 index 00000000..6e9bd107 --- /dev/null +++ b/include/jaudio_NES/os.h @@ -0,0 +1,9 @@ +#ifndef OS_H +#define OS_H + +#include "types.h" +#include "libultra/libultra.h" + +extern int Z_osSendMesg(OSMesgQueue* mq, OSMesg msg, s32 block); + +#endif diff --git a/include/libultra/osMesg.h b/include/libultra/osMesg.h index c54948e1..7ffaff64 100644 --- a/include/libultra/osMesg.h +++ b/include/libultra/osMesg.h @@ -7,7 +7,7 @@ typedef void* OSMesg; -typedef struct OSMesgQueue { +typedef struct OSMesgQueue_s { /* 0x00 */ OSThread* mtqueue; /* 0x04 */ OSThread* fullqueue; /* 0x08 */ int validCount; @@ -16,7 +16,7 @@ typedef struct OSMesgQueue { /* 0x14 */ OSMesg* msg; } OSMesgQueue; // size = 0x18 -extern void osCreateMesgQueue(OSMessageQueue* mq ,OSMessage msg, int flags); +extern void osCreateMesgQueue(OSMessageQueue* mq, OSMessage msg, int flags); extern int osSendMesg(OSMessageQueue* mq, OSMessage msg, int flags); extern int osRecvMesg(OSMessageQueue* mq, OSMessage* msg, int flags); diff --git a/src/static/jaudio_NES/dummyrom.c b/src/static/jaudio_NES/dummyrom.c new file mode 100644 index 00000000..d02e3ce3 --- /dev/null +++ b/src/static/jaudio_NES/dummyrom.c @@ -0,0 +1,94 @@ +#include "jaudio_NES/dummyrom.h" + +#include "dolphin/ar.h" +#include "jaudio_NES/dvdthread.h" +#include "jaudio_NES/os.h" +#include "jaudio_NES/memory.h" + +u8* JAC_ARAM_DMA_BUFFER_TOP = nullptr; +static u32 AUDIO_ARAM_TOP = 0; +static u32 CARD_SECURITY_BUFFER = 0; +static u32 init_load_size = 0; +static u8* init_load_addr = nullptr; +static BOOL init_cut_flag = FALSE; +static u32 SELECTED_ARAM_SIZE = 0; + +extern u32 GetNeos_FileTop(void) { + if (init_cut_flag) { + return 0; + } + + return init_load_size; +} + +extern u32 GetNeosRomTop(void) { + return AUDIO_ARAM_TOP; +} + +extern u32 GetNeosRom_PreLoaded(void) { + DVDT_DRAMtoARAM(0, (u32)init_load_addr, AUDIO_ARAM_TOP, init_load_size, nullptr, nullptr); + return init_load_size; +} + +extern void SetPreCopy_NeosRom(u8* load_addr, u32 load_size, BOOL cut_flag) { + init_load_size = load_size; + init_load_addr = load_addr; + init_cut_flag = cut_flag; +} + +static void mesg_finishcall(u32 mq) { + Z_osSendMesg((OSMesgQueue*)mq, NULL, OS_MESSAGE_NOBLOCK); +} + +extern BOOL ARAMStartDMAmesg(u32 dir, u32 dramAddr, u32 aramAddr, u32 size, s32 unused, OSMesgQueue* mq) { + aramAddr += AUDIO_ARAM_TOP; + + if (dir == DUMMYROM_ARAM_TO_DRAM) { + DVDT_ARAMtoDRAM((u32)mq, dramAddr, aramAddr, size, nullptr, &mesg_finishcall); + } else { + DVDT_DRAMtoARAM((u32)mq, dramAddr, aramAddr, size, nullptr, &mesg_finishcall); + } + + return FALSE; +} + +extern void Jac_SetAudioARAMSize(u32 size) { + SELECTED_ARAM_SIZE = size; +} + +extern void ARAllocFull(u32* outSize) { + u32 freeSize = aram_hp.length - ((int)aram_hp.current - (int)aram_hp.base); + + Nas_HeapAlloc(&aram_hp, freeSize - 32); + *outSize = freeSize - 32; +} + +extern void Jac_InitARAM(u32 loadAudiorom) { + u32 aram_size = AUDIO_ARAM_SIZE; + volatile u32 audiorom_size; + + if (SELECTED_ARAM_SIZE != 0) { + aram_size = SELECTED_ARAM_SIZE; + } + + AUDIO_ARAM_TOP = ARGetBaseAddress(); + if (loadAudiorom) { + audiorom_size = Jac_CheckFile("/audiorom.img"); + if (audiorom_size != 0) { + audiorom_size = ALIGN_NEXT(audiorom_size, 32); + (void)audiorom_size; /* leftover from some debug print? */ + } + } else { + audiorom_size = 0; + } + + CARD_SECURITY_BUFFER = 0x40; + audiorom_size += AUDIO_ARAM_TOP; + JAC_ARAM_DMA_BUFFER_TOP = (u8*)audiorom_size; + audiorom_size += AUDIO_ARAM_HEAP_SIZE; + Nas_HeapInit(&aram_hp, (u8*)audiorom_size, aram_size - audiorom_size); + + /* Probably leftovers from some debug print statement */ + (void)audiorom_size; + (void)audiorom_size; +} From ed0179f4de3ca3995c5c7b189e7e010f93522436 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Tue, 4 Jun 2024 02:24:37 -0400 Subject: [PATCH 008/234] Link jaudio_NES/audiothread.c --- common.py | 3 +- config/disasm_overrides.yml | 1 + config/dol_slices.yml | 6 + configure.py | 3 +- include/dolphin/hw_regs.h | 114 +++++++++++++++++ include/dolphin/os/OSFastCast.h | 108 ++++++++++++++++ include/jaudio_NES/audiocommon.h | 6 + include/jaudio_NES/audiothread.h | 21 +++- include/jaudio_NES/cpubuf.h | 10 ++ include/jaudio_NES/dspboot.h | 8 ++ include/jaudio_NES/dspbuf.h | 4 + include/jaudio_NES/dspinterface.h | 8 ++ include/jaudio_NES/dspproc.h | 8 ++ include/jaudio_NES/dvdthread.h | 2 + include/jaudio_NES/ja_calc.h | 8 ++ include/jaudio_NES/neosthread.h | 8 ++ include/jaudio_NES/playercall.h | 16 +++ include/jaudio_NES/rate.h | 1 + src/static/jaudio_NES/audiothread.c | 187 ++++++++++++++++++++++++++++ 19 files changed, 517 insertions(+), 5 deletions(-) create mode 100644 include/dolphin/hw_regs.h create mode 100644 include/dolphin/os/OSFastCast.h create mode 100644 include/jaudio_NES/cpubuf.h create mode 100644 include/jaudio_NES/dspboot.h create mode 100644 include/jaudio_NES/dspinterface.h create mode 100644 include/jaudio_NES/dspproc.h create mode 100644 include/jaudio_NES/ja_calc.h create mode 100644 include/jaudio_NES/neosthread.h create mode 100644 include/jaudio_NES/playercall.h create mode 100644 src/static/jaudio_NES/audiothread.c diff --git a/common.py b/common.py index 708e87ca..b98479a5 100644 --- a/common.py +++ b/common.py @@ -449,7 +449,8 @@ JAUDIO_BASE = CFLAGS + [ ] + DOL_DEFINES JAUDIO_FUNC_ALIGN_32 = [ "-func_align 32", - "-str readonly" + "-str readonly", + "-inline off" ] JSYSTEM_CFLAGS = ' '.join(JSYSTEM_BASE + LOCAL_CFLAGS) diff --git a/config/disasm_overrides.yml b/config/disasm_overrides.yml index f5bf07b5..064b20ec 100644 --- a/config/disasm_overrides.yml +++ b/config/disasm_overrides.yml @@ -2,6 +2,7 @@ trim_ctors: true symbol_aligns: 0x80018920: 32 + 0x800190e0: 32 0x80207458: 8 # align RunQueue to 0x001251d8 0x800b9140: 32 # align gam_win_moji1_tex to 32 bytes 0x801f71c0: 32 # align texture_buffer_data to 32 bytes diff --git a/config/dol_slices.yml b/config/dol_slices.yml index fa591fcf..9dbcf6f2 100644 --- a/config/dol_slices.yml +++ b/config/dol_slices.yml @@ -43,6 +43,12 @@ jaudio_NES/dummyrom.c: .rodata: [0x800aa518, 0x800aa528] # .bss: [0x8020d78c, 0x8020d7a0] # placed in common bss .sbss: [0x80218420, 0x80218440] +jaudio_NES/audiothread.c: + .text: [0x80018bc0, 0x800190e0] + .rodata: [0x800aa528, 0x800aa538] + .bss: [0x8017cfc0, 0x80180020] + .sbss: [0x80218440, 0x80218460] + .sdata2: [0x80218db8, 0x80218dc0] # jaudio_NES/game64.c: # TODO: finish # .rodata: [0x800a9938, 0x800a9b98] #jaudio_NES/verysimple.c: diff --git a/configure.py b/configure.py index 1440224d..f1e6500f 100644 --- a/configure.py +++ b/configure.py @@ -627,7 +627,8 @@ class AsmSource(Source): JAUDIO_FUNC_ALIGN_32_TUS = [ "sample.c", "aictrl.c", - "dummyrom.c" + "dummyrom.c", + "audiothread.c" ] class CSource(Source): diff --git a/include/dolphin/hw_regs.h b/include/dolphin/hw_regs.h new file mode 100644 index 00000000..13f56cc4 --- /dev/null +++ b/include/dolphin/hw_regs.h @@ -0,0 +1,114 @@ +#ifndef _DOLPHIN_HW_REGS_H_ +#define _DOLPHIN_HW_REGS_H_ + +#ifdef __MWERKS__ +volatile u16 __VIRegs[59] : 0xCC002000; +volatile u32 __PIRegs[12] : 0xCC003000; +volatile u16 __MEMRegs[64] : 0xCC004000; +volatile u16 __DSPRegs[] : 0xCC005000; +volatile u32 __DIRegs[] : 0xCC006000; +volatile u32 __SIRegs[0x100] : 0xCC006400; +volatile u32 __EXIRegs[0x40] : 0xCC006800; +volatile u32 __AIRegs[8] : 0xCC006C00; +#else +#define __VIRegs ((volatile u16*)0xCC002000) +#define __PIRegs ((volatile u32*)0xCC003000) +#define __MEMRegs ((volatile u16*)0xCC004000) +#define __DSPRegs ((volatile u16*)0xCC005000) +#define __DIRegs ((volatile u32*)0xCC006000) +#define __SIRegs ((volatile u32*)0xCC006400) +#define __EXIRegs ((volatile u32*)0xCC006800) +#define __AIRegs ((volatile u32*)0xCC006C00) +#endif + +// Offsets for __VIRegs + +// offsets for __VIRegs[i] +#define VI_VERT_TIMING (0) +#define VI_DISP_CONFIG (1) +#define VI_HORIZ_TIMING_0L (2) +#define VI_HORIZ_TIMING_0U (3) +#define VI_HORIZ_TIMING_1L (4) +#define VI_HORIZ_TIMING_1U (5) +#define VI_VERT_TIMING_ODD (6) +#define VI_VERT_TIMING_ODD_U (7) +#define VI_VERT_TIMING_EVEN (8) +#define VI_VERT_TIMING_EVEN_U (9) + +#define VI_BBI_ODD (10) // burst blanking interval +#define VI_BBI_ODD_U (11) // burst blanking interval +#define VI_BBI_EVEN (12) // burst blanking interval +#define VI_BBI_EVEN_U (13) // burst blanking interval + +#define VI_TOP_FIELD_BASE_LEFT (14) // top in 2d, top of left pic in 3d +#define VI_TOP_FIELD_BASE_LEFT_U (15) // top in 2d, top of left pic in 3d + +#define VI_TOP_FIELD_BASE_RIGHT (16) // top of right pic in 3d +#define VI_TOP_FIELD_BASE_RIGHT_U (17) // top of right pic in 3d + +#define VI_BTTM_FIELD_BASE_LEFT (18) // bottom in 2d, bottom of left pic in 3d +#define VI_BTTM_FIELD_BASE_LEFT_U (19) // bottom in 2d, bottom of left pic in 3d + +#define VI_BTTM_FIELD_BASE_RIGHT (20) // bottom of right pic in 3d +#define VI_BTTM_FIELD_BASE_RIGHT_U (21) // bottom of right pic in 3d + +#define VI_VERT_COUNT (22) // vertical display position +#define VI_HORIZ_COUNT (23) // horizontal display position + +#define VI_DISP_INT_0 (24) // display interrupt 0L +#define VI_DISP_INT_0U (25) // display interrupt 0U +#define VI_DISP_INT_1 (26) // display interrupt 1L +#define VI_DISP_INT_1U (27) // display interrupt 1U +#define VI_DISP_INT_2 (28) // display interrupt 2L +#define VI_DISP_INT_2U (29) // display interrupt 2U +#define VI_DISP_INT_3 (30) // display interrupt 3L +#define VI_DISP_INT_3U (31) // display interrupt 3U + +#define VI_HSW (36) // horizontal scaling width +#define VI_HSR (37) // horizontal scaling register + +#define VI_FCT_0 (38) // filter coefficient table 0L +#define VI_FCT_0U (39) // filter coefficient table 0U +#define VI_FCT_1 (40) // filter coefficient table 1L +#define VI_FCT_1U (41) // filter coefficient table 1U +#define VI_FCT_2 (42) // filter coefficient table 2L +#define VI_FCT_2U (43) // filter coefficient table 2U +#define VI_FCT_3 (44) // filter coefficient table 3L +#define VI_FCT_3U (45) // filter coefficient table 3U +#define VI_FCT_4 (46) // filter coefficient table 4L +#define VI_FCT_4U (47) // filter coefficient table 4U +#define VI_FCT_5 (48) // filter coefficient table 5L +#define VI_FCT_5U (49) // filter coefficient table 5U +#define VI_FCT_6 (50) // filter coefficient table 6L +#define VI_FCT_6U (51) // filter coefficient table 6U + +#define VI_CLOCK_SEL (54) // clock select +#define VI_DTV_STAT (55) // DTV status + +#define VI_WIDTH (56) + +// offsets for __DSPRegs[i] +#define DSP_MAILBOX_IN_HI (0) +#define DSP_MAILBOX_IN_LO (1) +#define DSP_MAILBOX_OUT_HI (2) +#define DSP_MAILBOX_OUT_LO (3) +#define DSP_CONTROL_STATUS (5) + +#define DSP_ARAM_SIZE (9) +#define DSP_ARAM_MODE (11) +#define DSP_ARAM_REFRESH (13) +#define DSP_ARAM_DMA_MM_HI (16) // Main mem address +#define DSP_ARAM_DMA_MM_LO (17) +#define DSP_ARAM_DMA_ARAM_HI (18) // ARAM address +#define DSP_ARAM_DMA_ARAM_LO (19) +#define DSP_ARAM_DMA_SIZE_HI (20) // DMA buffer size +#define DSP_ARAM_DMA_SIZE_LO (21) + +#define DSP_DMA_START_HI (24) // DMA start address +#define DSP_DMA_START_LO (25) +#define DSP_DMA_CONTROL_LEN (27) +#define DSP_DMA_BYTES_LEFT (29) + +#define DSP_DMA_START_FLAG (0x8000) // set to start DSP + +#endif diff --git a/include/dolphin/os/OSFastCast.h b/include/dolphin/os/OSFastCast.h new file mode 100644 index 00000000..d94587ce --- /dev/null +++ b/include/dolphin/os/OSFastCast.h @@ -0,0 +1,108 @@ +#ifndef _DOLPHIN_OS_OSFASTCAST_H +#define _DOLPHIN_OS_OSFASTCAST_H + +#include "types.h" + +#ifdef __cplusplus +extern "C" { +#endif // ifdef __cplusplus + +/////// FAST CAST DEFINES //////// +// GQR formats. +#define OS_GQR_U8 (0x0004) // GQR 1 +#define OS_GQR_U16 (0x0005) // GQR 2 +#define OS_GQR_S8 (0x0006) // GQR 3 +#define OS_GQR_S16 (0x0007) // GQR 4 + +// GQRs for fast casting. +#define OS_FASTCAST_U8 (2) +#define OS_FASTCAST_U16 (3) +#define OS_FASTCAST_S8 (4) +#define OS_FASTCAST_S16 (5) + +////////////////////////////////// + +/////// FAST CAST INLINES //////// +// Initialise fast casting. +static inline void OSInitFastCast() { +#ifdef __MWERKS__ // clang-format off + asm { + li r3, OS_GQR_U8 + oris r3, r3, OS_GQR_U8 + mtspr 0x392, r3 + li r3, OS_GQR_U16 + oris r3, r3, OS_GQR_U16 + mtspr 0x393, r3 + li r3, OS_GQR_S8 + oris r3, r3, OS_GQR_S8 + mtspr 0x394, r3 + li r3, OS_GQR_S16 + oris r3, r3, OS_GQR_S16 + mtspr 0x395, r3 + } +#endif // clang-format on +} + +// Float to int. +static inline s16 __OSf32tos16(register f32 inF) { + register s16 out; + u32 tmp; + register u32* tmpPtr = &tmp; +#ifdef __MWERKS__ // clang-format off + asm { + psq_st inF, 0(tmpPtr), 0x1, OS_FASTCAST_S16 + lha out, 0(tmpPtr) + } +#endif // clang-format on + + return out; +} + +static inline void OSf32tos16(f32* f, s16* out) { + *out = __OSf32tos16(*f); +} + +static inline u8 __OSf32tou8(register f32 inF) { + register u8 out; + u32 tmp; + register u32* tmpPtr = &tmp; +#ifdef __MWERKS__ // clang-format off + asm { + psq_st inF, 0(tmpPtr), 0x1, OS_FASTCAST_U8 + lbz out, 0(tmpPtr) + } +#endif // clang-format on + + return out; +} + +static inline void OSf32tou8(f32* f, u8* out) { + *out = __OSf32tou8(*f); +} + +static inline s8 __OSf32tos8(register f32 inF) { + register s8 out; + u32 tmp; + register u32* tmpPtr = &tmp; +#ifdef __MWERKS__ // clang-format off + asm { + psq_st inF, 0(tmpPtr), 0x1, OS_FASTCAST_S8 + lbz out, 0(tmpPtr) + extsb out, out + } +#endif // clang-format on + + return out; +} + +static inline void OSf32tos8(f32* f, s8* out) { + *out = __OSf32tos8(*f); +} + +////////////////////////////////// + +#ifdef __cplusplus +}; +#endif // ifdef __cplusplus + +#endif diff --git a/include/jaudio_NES/audiocommon.h b/include/jaudio_NES/audiocommon.h index 6f3a7ce6..60478a32 100644 --- a/include/jaudio_NES/audiocommon.h +++ b/include/jaudio_NES/audiocommon.h @@ -13,6 +13,12 @@ extern "C" { #define AUDIO_ARAM_SIZE 0x400000 /* 4MB */ #define AUDIO_ARAM_HEAP_SIZE 0xC000 +typedef enum DSPBUF_EVENTS { + DSPBUF_EVENTS_0 = 0, + DSPBUF_EVENTS_1 = 1, + DSPBUF_EVENTS_2 = 2, +} DSPBUF_EVENTS; + #ifdef __cplusplus } #endif diff --git a/include/jaudio_NES/audiothread.h b/include/jaudio_NES/audiothread.h index 55a368c9..664c537d 100644 --- a/include/jaudio_NES/audiothread.h +++ b/include/jaudio_NES/audiothread.h @@ -1,16 +1,31 @@ #ifndef AUDIOTHREAD_H #define AUDIOTHREAD_H - #include "types.h" +#include "types.h" +#include "jaudio_NES/audiostruct.h" +#include "dolphin/os.h" + +#define AUDIO_THREAD_FLAG_DVD (1 << 0) +#define AUDIO_THREAD_FLAG_AUDIO (1 << 1) +#define AUDIO_THREAD_FLAG_NEOS (1 << 2) + +extern volatile int intcount; +OSThread jac_audioThread[3]; +OSThread jac_neosThread; +OSThread jac_dvdThread; + +extern void NeosSync(void); #ifdef __cplusplus extern "C" { #endif -void StartAudioThread(void*, u32, u32, u32); +extern void DspSyncCountClear(int count); +extern int DspSyncCountCheck(void); +extern void StartAudioThread(void* pHeap, s32 heapSize, u32 aramSize, u32 flags); #ifdef __cplusplus } #endif -#endif \ No newline at end of file +#endif diff --git a/include/jaudio_NES/cpubuf.h b/include/jaudio_NES/cpubuf.h new file mode 100644 index 00000000..eb222104 --- /dev/null +++ b/include/jaudio_NES/cpubuf.h @@ -0,0 +1,10 @@ +#ifndef CPUBUF_H +#define CPUBUF_H + +#include "types.h" +#include "jaudio_NES/audiocommon.h" + +extern u32 CpubufProcess(DSPBUF_EVENTS event); +extern void CpuFrameEnd(void); + +#endif diff --git a/include/jaudio_NES/dspboot.h b/include/jaudio_NES/dspboot.h new file mode 100644 index 00000000..0839e0d4 --- /dev/null +++ b/include/jaudio_NES/dspboot.h @@ -0,0 +1,8 @@ +#ifndef DSPBOOT_H +#define DSPBOOT_H + +#include "types.h" + +extern void DspBoot(void); + +#endif diff --git a/include/jaudio_NES/dspbuf.h b/include/jaudio_NES/dspbuf.h index d0f5c114..c45a713e 100644 --- a/include/jaudio_NES/dspbuf.h +++ b/include/jaudio_NES/dspbuf.h @@ -2,7 +2,11 @@ #define DSPBUF_H #include "types.h" +#include "jaudio_NES/audiocommon.h" +extern u32 DspbufProcess(DSPBUF_EVENTS event); extern s16* MixDsp(s32 nSamples); +extern void UpdateDSP(void); +extern void DspFrameEnd(void); #endif diff --git a/include/jaudio_NES/dspinterface.h b/include/jaudio_NES/dspinterface.h new file mode 100644 index 00000000..0cc55ead --- /dev/null +++ b/include/jaudio_NES/dspinterface.h @@ -0,0 +1,8 @@ +#ifndef DSPINTERFACE_H +#define DSPINTERFACE_H + +#include "types.h" + +extern void DSP_InitBuffer(void); + +#endif diff --git a/include/jaudio_NES/dspproc.h b/include/jaudio_NES/dspproc.h new file mode 100644 index 00000000..5bd9e1a3 --- /dev/null +++ b/include/jaudio_NES/dspproc.h @@ -0,0 +1,8 @@ +#ifndef DSPPROC_H +#define DSPPROC_H + +#include "types.h" + +extern u32 DSPReleaseHalt(void); + +#endif diff --git a/include/jaudio_NES/dvdthread.h b/include/jaudio_NES/dvdthread.h index 2d0a4a64..2cbe83ec 100644 --- a/include/jaudio_NES/dvdthread.h +++ b/include/jaudio_NES/dvdthread.h @@ -9,5 +9,7 @@ typedef void (*Jac_DVDCallback)(u32); extern s32 DVDT_DRAMtoARAM(u32 owner, u32 dram, u32 aram, u32 len, u32* outLen, Jac_DVDCallback callback); extern s32 DVDT_ARAMtoDRAM(u32 owner, u32 dram, u32 aram, u32 len, u32* outLen, Jac_DVDCallback callback); extern u32 Jac_CheckFile(char* path); +extern void* jac_dvdproc(void* param); +extern void jac_dvdproc_init(void); #endif diff --git a/include/jaudio_NES/ja_calc.h b/include/jaudio_NES/ja_calc.h new file mode 100644 index 00000000..a361ad8c --- /dev/null +++ b/include/jaudio_NES/ja_calc.h @@ -0,0 +1,8 @@ +#ifndef JA_CALC_H +#define JA_CALC_H + +#include "types.h" + +extern void Jac_InitSinTable(void); + +#endif diff --git a/include/jaudio_NES/neosthread.h b/include/jaudio_NES/neosthread.h new file mode 100644 index 00000000..fe7ab696 --- /dev/null +++ b/include/jaudio_NES/neosthread.h @@ -0,0 +1,8 @@ +#ifndef NEOSTHREAD_H +#define NEOSTHREAD_H + +#include "types.h" + +extern void* neosproc(void* param); + +#endif diff --git a/include/jaudio_NES/playercall.h b/include/jaudio_NES/playercall.h new file mode 100644 index 00000000..bc8e4d95 --- /dev/null +++ b/include/jaudio_NES/playercall.h @@ -0,0 +1,16 @@ +#ifndef PLAYERCALL_H +#define PLAYERCALL_H + +#include "types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +extern void ResetPlayerCallback(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/jaudio_NES/rate.h b/include/jaudio_NES/rate.h index 3450ddb7..f063e142 100644 --- a/include/jaudio_NES/rate.h +++ b/include/jaudio_NES/rate.h @@ -7,6 +7,7 @@ extern "C" { #endif +extern u32 JAC_AI_SETTING; extern u32 JAC_FRAMESAMPLES; extern u32 DAC_SIZE; diff --git a/src/static/jaudio_NES/audiothread.c b/src/static/jaudio_NES/audiothread.c new file mode 100644 index 00000000..bafc71ca --- /dev/null +++ b/src/static/jaudio_NES/audiothread.c @@ -0,0 +1,187 @@ +#include "jaudio_NES/audiothread.h" + +#include "dolphin/os.h" +#include "dolphin/os/OSFastCast.h" +#include "dolphin/hw_regs.h" +#include "dolphin/ai.h" +#include "jaudio_NES/dspproc.h" +#include "jaudio_NES/cpubuf.h" +#include "jaudio_NES/dummyprobe.h" +#include "jaudio_NES/rate.h" +#include "jaudio_NES/aictrl.h" +#include "jaudio_NES/dummyrom.h" +#include "jaudio_NES/neosthread.h" +#include "jaudio_NES/dvdthread.h" +#include "jaudio_NES/dspboot.h" +#include "jaudio_NES/ja_calc.h" +#include "jaudio_NES/dspinterface.h" +#include "jaudio_NES/playercall.h" +#include "jaudio_NES/dspbuf.h" + +#define AUDIO_STACK_SIZE 0x1000 +#define AUDIOPROC_MQ_BUF_COUNT 16 + +#define AUDIOPROC_MESSAGE_UPDATE_DAC ((OSMessage)0) +#define AUDIOPROC_MESSAGE_DSP_SYNC ((OSMessage)1) +#define AUDIOPROC_MESSAGE_NEOS_SYNC ((OSMessage)2) +#define AUDIOPROC_MESSAGE_3 ((OSMessage)3) + +static u8 audioStack[AUDIO_STACK_SIZE] ATTRIBUTE_ALIGN(32); +static u8 neosStack[AUDIO_STACK_SIZE] ATTRIBUTE_ALIGN(32); +static u8 dvdStack[AUDIO_STACK_SIZE] ATTRIBUTE_ALIGN(32); +static OSMessageQueue audioproc_mq; +static OSMessage msgbuf[AUDIOPROC_MQ_BUF_COUNT]; +static u32 audioproc_mq_init = FALSE; +volatile int intcount = 0; + +extern void DspSyncCountClear(int count) { + intcount = count; +} + +extern int DspSyncCountCheck(void) { + return intcount; +} + +static void DspSync(void) { + if (audioproc_mq_init) { + OSSendMessage(&audioproc_mq, AUDIOPROC_MESSAGE_DSP_SYNC, OS_MESSAGE_NOBLOCK); + } else { + DSPReleaseHalt(); + } +} + +static void AudioSync(void) { + static BOOL first = TRUE; + + if (first == FALSE) { + Probe_Finish(4); + } + + first = FALSE; + Probe_Start(4, "UPDATE-DAC"); + if (audioproc_mq_init) { + OSSendMessage(&audioproc_mq, AUDIOPROC_MESSAGE_UPDATE_DAC, OS_MESSAGE_NOBLOCK); + } +} + +extern void NeosSync(void) { + if (audioproc_mq_init) { + OSSendMessage(&audioproc_mq, AUDIOPROC_MESSAGE_NEOS_SYNC, OS_MESSAGE_BLOCK); + } +} + +static void __DspSync(__OSInterrupt interrupt, OSContext* context) { + u16 reg = __DSPRegs[DSP_CONTROL_STATUS]; + reg &= ~(1 << 3); /* clear AI interrupt */ + reg &= ~(1 << 5); /* clear AR interrupt */ + reg |= (1 << 7); /* set DSP interrupt */ + __DSPRegs[DSP_CONTROL_STATUS] = reg; + + OSContext tmp_context; + OSClearContext(&tmp_context); + OSSetCurrentContext(&tmp_context); + DspSync(); + OSClearContext(&tmp_context); + OSSetCurrentContext(context); +} + +static void __DspReg(void) { + BOOL enable = OSDisableInterrupts(); + __OSSetInterruptHandler(OS_INTR_DSP_DSP, &__DspSync); + OSRestoreInterrupts(enable); +} + +static void* audioproc(void* param) { + OSInitFastCast(); + OSInitMessageQueue(&audioproc_mq, msgbuf, AUDIOPROC_MQ_BUF_COUNT); + audioproc_mq_init = TRUE; + Jac_Init(); + Jac_InitSinTable(); + ResetPlayerCallback(); + DspbufProcess(DSPBUF_EVENTS_0); + CpubufProcess(DSPBUF_EVENTS_0); + DspBoot(); + DSP_InitBuffer(); + __DspReg(); + AISetDSPSampleRate(JAC_AI_SETTING); + AIRegisterDMACallback(&AudioSync); + AIStartDMA(); + + while (TRUE) { + OSMessage msg; + + OSReceiveMessage(&audioproc_mq, &msg, OS_MESSAGE_BLOCK); + switch ((int)msg) { + case (int)AUDIOPROC_MESSAGE_UPDATE_DAC: + Jac_UpdateDAC(); + break; + case (int)AUDIOPROC_MESSAGE_DSP_SYNC: + if (intcount == 0) { + return; + } + + intcount--; + if (intcount == 0) { + Probe_Finish(7); + DspFrameEnd(); + } else { + Probe_Start(2, "SFR_DSP"); + UpdateDSP(); + Probe_Finish(2); + } + + break; + case (int)AUDIOPROC_MESSAGE_NEOS_SYNC: + CpuFrameEnd(); + break; + case (int)AUDIOPROC_MESSAGE_3: + OSExitThread(NULL); + break; + } + } +} + +static BOOL priority_set = FALSE; +static OSPriority pri = 0; +static OSPriority pri2 = 0; +static OSPriority pri3 = 0; + +extern void StartAudioThread(void* pHeap, s32 heapSize, u32 aramSize, u32 flags) { + if (priority_set == FALSE) { + OSPriority base_prio = OSGetThreadPriority(OSGetCurrentThread()) - 3; + + pri = base_prio; + pri3 = base_prio + 1; + pri2 = base_prio + 2; + } + + u32 neos_flag; + + Jac_HeapSetup(pHeap, heapSize); + Jac_SetAudioARAMSize(aramSize); + + neos_flag = flags & AUDIO_THREAD_FLAG_NEOS; + Jac_InitARAM(neos_flag); + + if ((flags & AUDIO_THREAD_FLAG_AUDIO)) { + // point to top of audioStack + u8* stack_p = audioStack; + OSCreateThread(&jac_audioThread[0], &audioproc, NULL, &stack_p[AUDIO_STACK_SIZE], AUDIO_STACK_SIZE, pri, 0); + OSResumeThread(&jac_audioThread[0]); + } + + if ((flags & AUDIO_THREAD_FLAG_DVD)) { + jac_dvdproc_init(); + // point to top of dvdStack + u8* stack_p = dvdStack; + OSCreateThread(&jac_dvdThread, &jac_dvdproc, NULL, &stack_p[AUDIO_STACK_SIZE], AUDIO_STACK_SIZE, pri3, 0); + OSResumeThread(&jac_dvdThread); + } + + if (neos_flag) { + // point to top of neosStack + u8* stack_p = neosStack; + OSCreateThread(&jac_neosThread, &neosproc, NULL, &stack_p[AUDIO_STACK_SIZE], AUDIO_STACK_SIZE, pri2, 0); + OSResumeThread(&jac_neosThread); + } +} From fd3e894915f43bffbd5fd40ff00d7f7463a08222 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Tue, 4 Jun 2024 17:26:57 -0400 Subject: [PATCH 009/234] Implement & link jaudio_NES/neosthread.c --- config/disasm_overrides.yml | 1 + config/dol_slices.yml | 6 ++ configure.py | 3 +- include/jaudio_NES/audioconst.h | 17 ++++++ include/jaudio_NES/cpubuf.h | 1 + include/jaudio_NES/dvdthread.h | 1 + include/jaudio_NES/neosthread.h | 1 + include/jaudio_NES/rspsim.h | 8 +++ include/jaudio_NES/sub_sys.h | 9 +++ include/jaudio_NES/system.h | 8 +++ src/static/jaudio_NES/neosthread.c | 96 ++++++++++++++++++++++++++++++ 11 files changed, 150 insertions(+), 1 deletion(-) create mode 100644 include/jaudio_NES/audioconst.h create mode 100644 include/jaudio_NES/rspsim.h create mode 100644 include/jaudio_NES/sub_sys.h create mode 100644 include/jaudio_NES/system.h create mode 100644 src/static/jaudio_NES/neosthread.c diff --git a/config/disasm_overrides.yml b/config/disasm_overrides.yml index 064b20ec..0a450474 100644 --- a/config/disasm_overrides.yml +++ b/config/disasm_overrides.yml @@ -3,6 +3,7 @@ trim_ctors: true symbol_aligns: 0x80018920: 32 0x800190e0: 32 + 0x80019380: 32 0x80207458: 8 # align RunQueue to 0x001251d8 0x800b9140: 32 # align gam_win_moji1_tex to 32 bytes 0x801f71c0: 32 # align texture_buffer_data to 32 bytes diff --git a/config/dol_slices.yml b/config/dol_slices.yml index 9dbcf6f2..b05b1c10 100644 --- a/config/dol_slices.yml +++ b/config/dol_slices.yml @@ -49,6 +49,12 @@ jaudio_NES/audiothread.c: .bss: [0x8017cfc0, 0x80180020] .sbss: [0x80218440, 0x80218460] .sdata2: [0x80218db8, 0x80218dc0] +jaudio_NES/neosthread.c: + .text: [0x800190e0, 0x80019380] + .rodata: [0x800aa538, 0x800aa558] + .bss: [0x80180020, 0x80186440] + .sdata: [0x80217be0, 0x80217be8] + .sbss: [0x80218460, 0x80218478] # jaudio_NES/game64.c: # TODO: finish # .rodata: [0x800a9938, 0x800a9b98] #jaudio_NES/verysimple.c: diff --git a/configure.py b/configure.py index f1e6500f..74631980 100644 --- a/configure.py +++ b/configure.py @@ -628,7 +628,8 @@ JAUDIO_FUNC_ALIGN_32_TUS = [ "sample.c", "aictrl.c", "dummyrom.c", - "audiothread.c" + "audiothread.c", + "neosthread.c" ] class CSource(Source): diff --git a/include/jaudio_NES/audioconst.h b/include/jaudio_NES/audioconst.h new file mode 100644 index 00000000..d131aec1 --- /dev/null +++ b/include/jaudio_NES/audioconst.h @@ -0,0 +1,17 @@ +#ifndef AUDIOCONST_H +#define AUDIOCONST_H + +#include "types.h" +#include "jaudio_NES/audiostruct.h" + +typedef struct ALGlobalsConst_ { + s8 maxChan; + s16 timeBase; + s32 acmdBufSize; + s32 fixSize; + s32 ememSize; +} ALGlobalsConst; + +extern ALGlobalsConst AGC; + +#endif diff --git a/include/jaudio_NES/cpubuf.h b/include/jaudio_NES/cpubuf.h index eb222104..a90de7e4 100644 --- a/include/jaudio_NES/cpubuf.h +++ b/include/jaudio_NES/cpubuf.h @@ -6,5 +6,6 @@ extern u32 CpubufProcess(DSPBUF_EVENTS event); extern void CpuFrameEnd(void); +extern s16* MixCpu(s32 nSamples); #endif diff --git a/include/jaudio_NES/dvdthread.h b/include/jaudio_NES/dvdthread.h index 2cbe83ec..d5606c8a 100644 --- a/include/jaudio_NES/dvdthread.h +++ b/include/jaudio_NES/dvdthread.h @@ -6,6 +6,7 @@ typedef void (*Jac_DVDCallback)(u32); +extern s32 DVDT_LoadtoARAM(u32 owner, char* path, u32 dram, u32 aram, u32 len, u32* outLen, Jac_DVDCallback callback); extern s32 DVDT_DRAMtoARAM(u32 owner, u32 dram, u32 aram, u32 len, u32* outLen, Jac_DVDCallback callback); extern s32 DVDT_ARAMtoDRAM(u32 owner, u32 dram, u32 aram, u32 len, u32* outLen, Jac_DVDCallback callback); extern u32 Jac_CheckFile(char* path); diff --git a/include/jaudio_NES/neosthread.h b/include/jaudio_NES/neosthread.h index fe7ab696..17e552b3 100644 --- a/include/jaudio_NES/neosthread.h +++ b/include/jaudio_NES/neosthread.h @@ -2,6 +2,7 @@ #define NEOSTHREAD_H #include "types.h" +#include "jaudio_NES/audiostruct.h" extern void* neosproc(void* param); diff --git a/include/jaudio_NES/rspsim.h b/include/jaudio_NES/rspsim.h new file mode 100644 index 00000000..93e742a0 --- /dev/null +++ b/include/jaudio_NES/rspsim.h @@ -0,0 +1,8 @@ +#ifndef RSPSIM_H +#define RSPSIM_H + +#include "types.h" + +extern void RspStart2(u32* pTaskCmds, s32 allTasks, s32 param_3); + +#endif diff --git a/include/jaudio_NES/sub_sys.h b/include/jaudio_NES/sub_sys.h new file mode 100644 index 00000000..11b90af1 --- /dev/null +++ b/include/jaudio_NES/sub_sys.h @@ -0,0 +1,9 @@ +#ifndef SUB_SYS_H +#define SUB_SYS_H + +#include "types.h" +#include "jaudio_NES/audiostruct.h" + +extern s32 CreateAudioTask(Acmd* cmds, s16* pSamples, u32 nSamples, s32 param_4); + +#endif diff --git a/include/jaudio_NES/system.h b/include/jaudio_NES/system.h new file mode 100644 index 00000000..51594c22 --- /dev/null +++ b/include/jaudio_NES/system.h @@ -0,0 +1,8 @@ +#ifndef SYSTEM_H +#define SYSTEM_H + +#include "types.h" + +extern void Nas_InitAudio(u64* acmdBuf, s32 acmdBufSize); + +#endif diff --git a/src/static/jaudio_NES/neosthread.c b/src/static/jaudio_NES/neosthread.c new file mode 100644 index 00000000..73f93298 --- /dev/null +++ b/src/static/jaudio_NES/neosthread.c @@ -0,0 +1,96 @@ +#include "jaudio_NES/neosthread.h" + +#include "dolphin/os.h" +#include "jaudio_NES/dummyrom.h" +#include "jaudio_NES/dvdthread.h" +#include "jaudio_NES/aictrl.h" +#include "jaudio_NES/rate.h" +#include "jaudio_NES/audioconst.h" +#include "jaudio_NES/system.h" +#include "jaudio_NES/audiothread.h" +#include "jaudio_NES/cpubuf.h" +#include "jaudio_NES/dummyprobe.h" +#include "jaudio_NES/sub_sys.h" +#include "jaudio_NES/rspsim.h" +#include "jaudio_NES/sample.h" + +#define NEOSTHREAD_IMAGE_LOADED_MSG (0x12345678) +#define NEOSTHREAD_ACMD_BUF_NUM 1600 + +static OSMessageQueue neosproc_mq; +static u32 neosproc_mq_init = FALSE; +static s16* tmp_buf = nullptr; +static BOOL neos_ready = FALSE; + +extern BOOL Neos_Update(s16* dst) { + if (neosproc_mq_init) { + if (OSSendMessage(&neosproc_mq, (OSMessage)dst, OS_MESSAGE_NOBLOCK) == TRUE) { + return TRUE; + } else { + return FALSE; + } + } + + return FALSE; +} + +extern void ImageLoaded(u32 param) { + OSSendMessage(&neosproc_mq, (OSMessage)NEOSTHREAD_IMAGE_LOADED_MSG, OS_MESSAGE_BLOCK); +} + +extern BOOL Neos_CheckBoot(void) { + return neos_ready; +} + +extern void* neosproc(void* param) { + static OSMessage msgbuf[1]; + static u32 cur = 0; + + neos_ready = FALSE; + OSInitMessageQueue(&neosproc_mq, msgbuf, 1); + neosproc_mq_init = TRUE; + u32 neos_rom_top = GetNeosRomTop(); + u32 neos_rom_preloaded = GetNeosRom_PreLoaded(); + u32 neos_file_top = GetNeos_FileTop(); + + DVDT_LoadtoARAM(0, "/audiorom.img", neos_rom_top + neos_rom_preloaded, neos_file_top, 0, nullptr, &ImageLoaded); + + OSMessage msg; + do { + OSReceiveMessage(&neosproc_mq, &msg, 1); + } while (msg != (OSMessage)NEOSTHREAD_IMAGE_LOADED_MSG); + + tmp_buf = (s16*)OSAlloc2(DAC_SIZE * 2); + + /* Initialize neos */ + s32 tmp = AGC.acmdBufSize; + u64* acmdBuf = (u64*)OSAlloc2(tmp); + Nas_InitAudio(acmdBuf, tmp); + NeosSync(); + neos_ready = TRUE; + + Jac_RegisterMixcallback(&MixCpu, MixMode_Interleave); + + do { + static Acmd task_buf[2][NEOSTHREAD_ACMD_BUF_NUM]; + static u32 tasks[2] = { 0, 0 }; + + OSReceiveMessage(&neosproc_mq, &msg, OS_MESSAGE_BLOCK); + Probe_Start(8, "NEOS THREAD"); + s16* samples_dst = (s16*)msg; + tasks[cur] = CreateAudioTask(task_buf[cur], tmp_buf, JAC_FRAMESAMPLES, 0); + + tmp = (cur + 1) & 1; + if (tasks[tmp]) { + RspStart2((u32*)task_buf[tmp], tasks[tmp], 0); + tasks[tmp] = 0; + Jac_bcopy(tmp_buf, samples_dst, DAC_SIZE * 2); + } else { + Jac_bzero(samples_dst, DAC_SIZE * 2); + } + + Probe_Finish(8); + NeosSync(); + cur = tmp; + } while (TRUE); +} From ab4aa096c721193d427ea00e7d8fa793f5d98716 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Tue, 4 Jun 2024 20:28:54 -0400 Subject: [PATCH 010/234] Implement & link jaudio_NES/audioheaders.c --- config/dol_slices.yml | 2 + config/symbols.yml | 5 + include/jaudio_NES/audiocommon.h | 16 + include/jaudio_NES/audioheaders.h | 13 + include/jaudio_NES/audiostruct.h | 19 +- include/types.h | 50 +- src/static/jaudio_NES/audioheaders.c | 4724 ++++++++++++++++++++++++++ 7 files changed, 4804 insertions(+), 25 deletions(-) create mode 100644 include/jaudio_NES/audioheaders.h create mode 100644 src/static/jaudio_NES/audioheaders.c diff --git a/config/dol_slices.yml b/config/dol_slices.yml index b05b1c10..c4a73685 100644 --- a/config/dol_slices.yml +++ b/config/dol_slices.yml @@ -30,6 +30,8 @@ dvderr.c: .bss: [0x800e2790, 0x800e2b88] jaudio_NES/dummyprobe.c: .text: [0x800083f8, 0x80008400] +jaudio_NES/audioheaders.c: + .data: [0x800cca40, 0x800ce880] jaudio_NES/aictrl.c: .text: [0x80017e80, 0x80018640] .rodata: [0x800aa500, 0x800aa518] diff --git a/config/symbols.yml b/config/symbols.yml index a9cf3013..fba0b019 100644 --- a/config/symbols.yml +++ b/config/symbols.yml @@ -3026,6 +3026,11 @@ global: 0x800c30c0: logo_nin_v 0x800c3100: logo_ninT_model 0x800c3140: nintendo_hi_0 + 0x800cca40: AudioseqHeaderStart + 0x800cd9e0: AudiobankHeaderStart + 0x800ce3e0: AudiowaveHeaderStart + 0x800ce450: AudiodataHeaderStart + 0x800ce490: AudiomapHeaderStart 0x800ce880: LEN_TABLE 0x800ce8a0: NOISE_FREQ_TABLE 0x800ce8e0: sbuffer diff --git a/include/jaudio_NES/audiocommon.h b/include/jaudio_NES/audiocommon.h index 60478a32..8ede79f9 100644 --- a/include/jaudio_NES/audiocommon.h +++ b/include/jaudio_NES/audiocommon.h @@ -19,6 +19,22 @@ typedef enum DSPBUF_EVENTS { DSPBUF_EVENTS_2 = 2, } DSPBUF_EVENTS; +typedef enum SampleMedium { + /* 0 */ MEDIUM_RAM, + /* 1 */ MEDIUM_UNK, + /* 2 */ MEDIUM_CART, + /* 3 */ MEDIUM_DISK_DRIVE, + /* 5 */ MEDIUM_RAM_UNLOADED = 5 +} SampleMedium; + +typedef enum AudioCacheLoadType { + /* 0 */ CACHE_LOAD_PERMANENT, + /* 1 */ CACHE_LOAD_PERSISTENT, + /* 2 */ CACHE_LOAD_TEMPORARY, + /* 3 */ CACHE_LOAD_EITHER, + /* 4 */ CACHE_LOAD_EITHER_NOSYNC +} AudioCacheLoadType; + #ifdef __cplusplus } #endif diff --git a/include/jaudio_NES/audioheaders.h b/include/jaudio_NES/audioheaders.h new file mode 100644 index 00000000..ae6f8378 --- /dev/null +++ b/include/jaudio_NES/audioheaders.h @@ -0,0 +1,13 @@ +#ifndef AUDIOHEADERS_H +#define AUDIOHEADERS_H + +#include "types.h" +#include "jaudio_NES/audiostruct.h" + +extern ArcHeader AudioseqHeaderStart; +extern ArcHeader AudiobankHeaderStart; +extern ArcHeader AudiowaveHeaderStart; +extern ArcHeader AudiodataHeaderStart; +extern u16 AudiomapHeaderStart[]; + +#endif diff --git a/include/jaudio_NES/audiostruct.h b/include/jaudio_NES/audiostruct.h index 1cd1f149..1305da72 100644 --- a/include/jaudio_NES/audiostruct.h +++ b/include/jaudio_NES/audiostruct.h @@ -49,13 +49,26 @@ typedef struct ALHeap { /* 0x10 */ u8* last; } ALHeap; -/* sizeof(ArcHeader) == 0x10 */ +/* sizeof(ArcEntry) == 0x10 */ +typedef struct ArcEntry_ { + /* 0x00 */ u32 addr; + /* 0x04 */ size_t size; + /* 0x08 */ s8 medium; + /* 0x09 */ s8 cacheType; + /* 0x0A */ s16 param0; + /* 0x0C */ s16 param1; + /* 0x0E */ s16 param2; +} ArcEntry; + +/* sizeof(ArcHeader) == [0x10, 0x10+entries*0x10] */ typedef struct ArcHeader_ { /* 0x00 */ s16 numEntries; - /* 0x02 */ u16 _02; + /* 0x02 */ s16 _02; /* 0x04 */ u8* pData; /* 0x08 */ u8 copy; -} ArcHeader ATTRIBUTE_ALIGN(8); + /* 0x09 */ u8 pad[7]; + /* 0x10 */ ArcEntry entries[]; /* variable size */ +} ArcHeader; /* sizeof(AutoHeapstrc) == 0xC */ typedef struct AutoHeapstrc_ { diff --git a/include/types.h b/include/types.h index 7b9b5ae9..35aeebf8 100644 --- a/include/types.h +++ b/include/types.h @@ -4,7 +4,7 @@ #include "../tools/ppcdis/include/ppcdis.h" #ifdef IS_REL -//#pragma section const_type sconst_type ".rodata" ".rodata" data_mode=far_abs code_mode=pc_rel +// #pragma section const_type sconst_type ".rodata" ".rodata" data_mode=far_abs code_mode=pc_rel #endif typedef signed char s8; @@ -41,15 +41,16 @@ typedef u32 unknown; #define TRUE 1 #define FALSE 0 + #define NULL ((void*)0) #define nullptr 0 #define AT_ADDRESS(x) : (x) -#define ALIGN_PREV(u, align) (u & (~(align-1))) -#define ALIGN_NEXT(u, align) ((u + (align-1)) & (~(align-1))) -#define IS_ALIGNED(X, N) (((X) & ((N)-1)) == 0) -#define IS_NOT_ALIGNED(X, N) (((X) & ((N)-1)) != 0) +#define ALIGN_PREV(u, align) (u & (~(align - 1))) +#define ALIGN_NEXT(u, align) ((u + (align - 1)) & (~(align - 1))) +#define IS_ALIGNED(X, N) (((X) & ((N) - 1)) == 0) +#define IS_NOT_ALIGNED(X, N) (((X) & ((N) - 1)) != 0) #define FLAG_ON(V, F) (((V) & (F)) == 0) #define FLAG_OFF(V, F) (((V) & (F)) != 0) @@ -91,34 +92,39 @@ typedef u32 unknown; #define F32_IS_ZERO(v) (fabsf(v) < 0.008f) /* ARGB8 color format (32 bits) to RGB5A3 color format (16 bits) */ -#define ARGB8_to_RGB5A3(argb8) \ - ((u16)(((argb8) & 0xFF000000) >= 0xE0000000 ? \ - /* Fully opaque, 5 bits per color channel */ (0x8000 | ((((argb8) >> 16) & 0xF8) << 7) | ((((argb8) >> 8) & 0xF8) << 2) | (((argb8) & 0xFF) >> 3)) : \ - /* 3 bits of transparency, 4 bits per color channel */ (((((argb8) >> 24) & 0xE0) << 7) | ((((argb8) >> 16) & 0xF0) << 4) | (((argb8) >> 8) & 0xF0) | (((argb8) & 0xF0) >> 4)))) +#define ARGB8_to_RGB5A3(argb8) \ + ((u16)(((argb8) & 0xFF000000) >= 0xE0000000 \ + ? /* Fully opaque, 5 bits per color channel */ (0x8000 | ((((argb8) >> 16) & 0xF8) << 7) | \ + ((((argb8) >> 8) & 0xF8) << 2) | \ + (((argb8) & 0xFF) >> 3)) \ + : /* 3 bits of transparency, 4 bits per color channel */ ( \ + ((((argb8) >> 24) & 0xE0) << 7) | ((((argb8) >> 16) & 0xF0) << 4) | (((argb8) >> 8) & 0xF0) | \ + (((argb8) & 0xF0) >> 4)))) -#define GPACK_RGB5A3(r, g, b, a) ARGB8_to_RGB5A3((((a) & 0xFF) << 24) | (((r) & 0xFF) << 16) | (((g) & 0xFF) << 8) | ((b) & 0xFF)) +#define GPACK_RGB5A3(r, g, b, a) \ + ARGB8_to_RGB5A3((((a) & 0xFF) << 24) | (((r) & 0xFF) << 16) | (((g) & 0xFF) << 8) | ((b) & 0xFF)) #pragma section RX "forcestrip" -#ifndef __INTELLISENSE__ - #define FORCESTRIP __declspec(section "forcestrip") +#ifndef __INTELLISENSE__ +#define FORCESTRIP __declspec(section "forcestrip") #else - #define FORCESTRIP +#define FORCESTRIP #endif #ifdef MUST_MATCH - #define MATCH_FORCESTRIP FORCESTRIP +#define MATCH_FORCESTRIP FORCESTRIP #else - #define MATCH_FORCESTRIP +#define MATCH_FORCESTRIP #endif #if !defined(__INTELLISENSE__) && defined(MUST_MATCH) - #define BSS_ORDER_GROUP_START FORCESTRIP ORDER_BSS_DATA { - #define BSS_ORDER_GROUP_END } - #define BSS_ORDER_ITEM(v) ORDER_BSS(v) +#define BSS_ORDER_GROUP_START FORCESTRIP ORDER_BSS_DATA { +#define BSS_ORDER_GROUP_END } +#define BSS_ORDER_ITEM(v) ORDER_BSS(v) #else - #define BSS_ORDER_GROUP_START - #define BSS_ORDER_GROUP_END - #define BSS_ORDER_ITEM(v) +#define BSS_ORDER_GROUP_START +#define BSS_ORDER_GROUP_END +#define BSS_ORDER_ITEM(v) #endif #ifndef __cplusplus @@ -126,4 +132,4 @@ typedef u32 unknown; typedef short wchar_t; #endif -#endif \ No newline at end of file +#endif diff --git a/src/static/jaudio_NES/audioheaders.c b/src/static/jaudio_NES/audioheaders.c new file mode 100644 index 00000000..0aa951be --- /dev/null +++ b/src/static/jaudio_NES/audioheaders.c @@ -0,0 +1,4724 @@ +#include "jaudio_NES/audioheaders.h" + +ArcHeader AudioseqHeaderStart ATTRIBUTE_ALIGN(1) = { + 249, /* entries */ + 0, /* unk param */ + nullptr, /* data start pointer */ + 0, /* copy */ + { 0, 0, 0, 0, 0, 0, 0 }, /* pad */ + /* entries */ + { + { + /* entry 0 */ + 0x00000000, /* rom addr */ + 0x000009A0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 1 */ + 0x000009A0, /* rom addr */ + 0x00000FC0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 2 */ + 0x00001960, /* rom addr */ + 0x000009E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 3 */ + 0x00002340, /* rom addr */ + 0x00000B80, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 4 */ + 0x00002EC0, /* rom addr */ + 0x000012C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 5 */ + 0x00004180, /* rom addr */ + 0x00001420, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 6 */ + 0x000055A0, /* rom addr */ + 0x000007E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 7 */ + 0x00005D80, /* rom addr */ + 0x000007C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 8 */ + 0x00006540, /* rom addr */ + 0x00000880, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 9 */ + 0x00006DC0, /* rom addr */ + 0x000014A0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 10 */ + 0x00008260, /* rom addr */ + 0x00000B00, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 11 */ + 0x00008D60, /* rom addr */ + 0x00001200, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 12 */ + 0x00009F60, /* rom addr */ + 0x00000B40, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 13 */ + 0x0000AAA0, /* rom addr */ + 0x000007A0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 14 */ + 0x0000B240, /* rom addr */ + 0x00000820, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 15 */ + 0x0000BA60, /* rom addr */ + 0x00000C80, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 16 */ + 0x0000C6E0, /* rom addr */ + 0x00000BE0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 17 */ + 0x0000D2C0, /* rom addr */ + 0x00000C80, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 18 */ + 0x0000DF40, /* rom addr */ + 0x00000840, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 19 */ + 0x0000E780, /* rom addr */ + 0x00000CA0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 20 */ + 0x0000F420, /* rom addr */ + 0x000016E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 21 */ + 0x00010B00, /* rom addr */ + 0x00000D80, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 22 */ + 0x00011880, /* rom addr */ + 0x000009C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 23 */ + 0x00012240, /* rom addr */ + 0x00000980, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 24 */ + 0x00012BC0, /* rom addr */ + 0x00000E60, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 25 */ + 0x00013A20, /* rom addr */ + 0x00000BE0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 26 */ + 0x00014600, /* rom addr */ + 0x00000D40, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 27 */ + 0x00015340, /* rom addr */ + 0x000010E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 28 */ + 0x00016420, /* rom addr */ + 0x00000E20, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 29 */ + 0x00017240, /* rom addr */ + 0x00001100, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 30 */ + 0x00018340, /* rom addr */ + 0x00001700, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 31 */ + 0x00019A40, /* rom addr */ + 0x000009C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 32 */ + 0x0001A400, /* rom addr */ + 0x00000C60, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 33 */ + 0x0001B060, /* rom addr */ + 0x00000BC0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 34 */ + 0x0001BC20, /* rom addr */ + 0x00001260, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 35 */ + 0x0001CE80, /* rom addr */ + 0x00000880, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 36 */ + 0x0001D700, /* rom addr */ + 0x00001020, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 37 */ + 0x0001E720, /* rom addr */ + 0x00000640, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 38 */ + 0x0001ED60, /* rom addr */ + 0x00000E20, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 39 */ + 0x0001FB80, /* rom addr */ + 0x00000760, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 40 */ + 0x000202E0, /* rom addr */ + 0x00000A40, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 41 */ + 0x00020D20, /* rom addr */ + 0x000011E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 42 */ + 0x00021F00, /* rom addr */ + 0x00000C20, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 43 */ + 0x00022B20, /* rom addr */ + 0x00000AA0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 44 */ + 0x000235C0, /* rom addr */ + 0x00000BE0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 45 */ + 0x000241A0, /* rom addr */ + 0x00002380, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 46 */ + 0x00026520, /* rom addr */ + 0x00000680, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 47 */ + 0x00026BA0, /* rom addr */ + 0x00002180, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 48 */ + 0x00028D20, /* rom addr */ + 0x00000AE0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 49 */ + 0x00029800, /* rom addr */ + 0x00000FE0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 50 */ + 0x0002A7E0, /* rom addr */ + 0x000010C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 51 */ + 0x0002B8A0, /* rom addr */ + 0x00001640, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 52 */ + 0x0002CEE0, /* rom addr */ + 0x000006E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 53 */ + 0x0002D5C0, /* rom addr */ + 0x00000960, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 54 */ + 0x0002DF20, /* rom addr */ + 0x00000BA0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 55 */ + 0x0002EAC0, /* rom addr */ + 0x000009E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 56 */ + 0x0002F4A0, /* rom addr */ + 0x00000AC0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 57 */ + 0x0002FF60, /* rom addr */ + 0x00000A40, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 58 */ + 0x000309A0, /* rom addr */ + 0x00001080, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 59 */ + 0x00031A20, /* rom addr */ + 0x00001620, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 60 */ + 0x00033040, /* rom addr */ + 0x00000560, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 61 */ + 0x000335A0, /* rom addr */ + 0x00000580, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 62 */ + 0x00033B20, /* rom addr */ + 0x00000660, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 63 */ + 0x00034180, /* rom addr */ + 0x000003A0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 64 */ + 0x00034520, /* rom addr */ + 0x00000560, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 65 */ + 0x00000040, /* rom addr */ + 0x00000000, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 66 */ + 0x00034A80, /* rom addr */ + 0x00000740, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 67 */ + 0x000351C0, /* rom addr */ + 0x00000E20, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 68 */ + 0x00035FE0, /* rom addr */ + 0x00000420, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 69 */ + 0x00036400, /* rom addr */ + 0x000004E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 70 */ + 0x0000003E, /* rom addr */ + 0x00000000, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 71 */ + 0x000368E0, /* rom addr */ + 0x00000460, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 72 */ + 0x00036D40, /* rom addr */ + 0x00000200, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 73 */ + 0x00036F40, /* rom addr */ + 0x000001A0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 74 */ + 0x000370E0, /* rom addr */ + 0x00000680, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 75 */ + 0x00037760, /* rom addr */ + 0x000003E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 76 */ + 0x00037B40, /* rom addr */ + 0x000003C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 77 */ + 0x00037F00, /* rom addr */ + 0x00000640, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 78 */ + 0x00038540, /* rom addr */ + 0x00000600, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 79 */ + 0x00038B40, /* rom addr */ + 0x00000B40, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 80 */ + 0x00039680, /* rom addr */ + 0x00000360, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 81 */ + 0x000399E0, /* rom addr */ + 0x00001C40, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 82 */ + 0x0003B620, /* rom addr */ + 0x00000720, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 83 */ + 0x0003BD40, /* rom addr */ + 0x00000F20, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 84 */ + 0x0003CC60, /* rom addr */ + 0x00001140, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 85 */ + 0x0003DDA0, /* rom addr */ + 0x000008A0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 86 */ + 0x0003E640, /* rom addr */ + 0x000011E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 87 */ + 0x0003F820, /* rom addr */ + 0x00000C80, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 88 */ + 0x000404A0, /* rom addr */ + 0x00001160, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 89 */ + 0x00041600, /* rom addr */ + 0x00001A20, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 90 */ + 0x00043020, /* rom addr */ + 0x00000C20, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 91 */ + 0x00043C40, /* rom addr */ + 0x00000B80, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 92 */ + 0x000447C0, /* rom addr */ + 0x00000D80, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 93 */ + 0x00045540, /* rom addr */ + 0x00000CA0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 94 */ + 0x000461E0, /* rom addr */ + 0x000012A0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 95 */ + 0x00047480, /* rom addr */ + 0x00000D40, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 96 */ + 0x000481C0, /* rom addr */ + 0x000008C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 97 */ + 0x00048A80, /* rom addr */ + 0x00000CA0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 98 */ + 0x00049720, /* rom addr */ + 0x000013A0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 99 */ + 0x0004AAC0, /* rom addr */ + 0x000012C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 100 */ + 0x0004BD80, /* rom addr */ + 0x00000D80, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 101 */ + 0x0004CB00, /* rom addr */ + 0x000014E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 102 */ + 0x0004DFE0, /* rom addr */ + 0x000009E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 103 */ + 0x0004E9C0, /* rom addr */ + 0x00000B00, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 104 */ + 0x0004F4C0, /* rom addr */ + 0x00000780, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 105 */ + 0x0004FC40, /* rom addr */ + 0x00000580, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 106 */ + 0x000501C0, /* rom addr */ + 0x00000080, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 107 */ + 0x00050240, /* rom addr */ + 0x00000080, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 108 */ + 0x000502C0, /* rom addr */ + 0x00000060, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 109 */ + 0x00050320, /* rom addr */ + 0x00000080, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 110 */ + 0x000503A0, /* rom addr */ + 0x00000060, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 111 */ + 0x00050400, /* rom addr */ + 0x00000420, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 112 */ + 0x00050820, /* rom addr */ + 0x00000400, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 113 */ + 0x00050C20, /* rom addr */ + 0x00000600, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 114 */ + 0x00051220, /* rom addr */ + 0x00001720, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 115 */ + 0x00052940, /* rom addr */ + 0x00000880, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 116 */ + 0x000531C0, /* rom addr */ + 0x00000A80, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 117 */ + 0x00053C40, /* rom addr */ + 0x00000480, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 118 */ + 0x000540C0, /* rom addr */ + 0x00000800, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 119 */ + 0x000548C0, /* rom addr */ + 0x000007C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 120 */ + 0x00055080, /* rom addr */ + 0x00000A00, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 121 */ + 0x00055A80, /* rom addr */ + 0x000005C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 122 */ + 0x00056040, /* rom addr */ + 0x00000460, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 123 */ + 0x000564A0, /* rom addr */ + 0x00000820, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 124 */ + 0x00056CC0, /* rom addr */ + 0x00000860, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 125 */ + 0x00057520, /* rom addr */ + 0x000007E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 126 */ + 0x00057D00, /* rom addr */ + 0x00000660, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 127 */ + 0x00058360, /* rom addr */ + 0x00000680, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 128 */ + 0x000589E0, /* rom addr */ + 0x00000A20, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 129 */ + 0x00059400, /* rom addr */ + 0x00000A60, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 130 */ + 0x00059E60, /* rom addr */ + 0x00000C80, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 131 */ + 0x0005AAE0, /* rom addr */ + 0x00000C80, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 132 */ + 0x0005B760, /* rom addr */ + 0x00000B00, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 133 */ + 0x0005C260, /* rom addr */ + 0x00000760, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 134 */ + 0x0005C9C0, /* rom addr */ + 0x00000880, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 135 */ + 0x0005D240, /* rom addr */ + 0x000007A0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 136 */ + 0x0005D9E0, /* rom addr */ + 0x00000740, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 137 */ + 0x0005E120, /* rom addr */ + 0x00000640, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 138 */ + 0x0005E760, /* rom addr */ + 0x00000AE0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 139 */ + 0x0005F240, /* rom addr */ + 0x00000500, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 140 */ + 0x0005F740, /* rom addr */ + 0x00000EA0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 141 */ + 0x000605E0, /* rom addr */ + 0x00000620, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 142 */ + 0x00060C00, /* rom addr */ + 0x000005A0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 143 */ + 0x000611A0, /* rom addr */ + 0x00000EE0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 144 */ + 0x00062080, /* rom addr */ + 0x00000660, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 145 */ + 0x000626E0, /* rom addr */ + 0x00000760, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 146 */ + 0x00062E40, /* rom addr */ + 0x00000A60, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 147 */ + 0x000638A0, /* rom addr */ + 0x00000880, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 148 */ + 0x00064120, /* rom addr */ + 0x000009E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 149 */ + 0x00064B00, /* rom addr */ + 0x00000780, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 150 */ + 0x00065280, /* rom addr */ + 0x00000300, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 151 */ + 0x00065580, /* rom addr */ + 0x00000860, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 152 */ + 0x00065DE0, /* rom addr */ + 0x00000EC0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 153 */ + 0x00066CA0, /* rom addr */ + 0x000004C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 154 */ + 0x00067160, /* rom addr */ + 0x00000560, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 155 */ + 0x000676C0, /* rom addr */ + 0x00000900, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 156 */ + 0x00067FC0, /* rom addr */ + 0x00000D40, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 157 */ + 0x00068D00, /* rom addr */ + 0x000007C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 158 */ + 0x000694C0, /* rom addr */ + 0x00000C60, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 159 */ + 0x0006A120, /* rom addr */ + 0x00000620, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 160 */ + 0x0006A740, /* rom addr */ + 0x000013C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 161 */ + 0x0006BB00, /* rom addr */ + 0x000007A0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 162 */ + 0x0006C2A0, /* rom addr */ + 0x00000B40, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 163 */ + 0x0006CDE0, /* rom addr */ + 0x00000100, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 164 */ + 0x0006CEE0, /* rom addr */ + 0x00000420, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 165 */ + 0x0006D300, /* rom addr */ + 0x00001100, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 166 */ + 0x0006E400, /* rom addr */ + 0x000004C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 167 */ + 0x0006E8C0, /* rom addr */ + 0x000005C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 168 */ + 0x0006EE80, /* rom addr */ + 0x00000340, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 169 */ + 0x0006F1C0, /* rom addr */ + 0x00000660, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 170 */ + 0x0006F820, /* rom addr */ + 0x000005C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 171 */ + 0x0006FDE0, /* rom addr */ + 0x00000940, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 172 */ + 0x00070720, /* rom addr */ + 0x00000740, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 173 */ + 0x000000AC, /* rom addr */ + 0x00000000, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 174 */ + 0x000000AC, /* rom addr */ + 0x00000000, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 175 */ + 0x000000AC, /* rom addr */ + 0x00000000, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 176 */ + 0x00070E60, /* rom addr */ + 0x000002C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 177 */ + 0x00071120, /* rom addr */ + 0x00000160, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 178 */ + 0x00071280, /* rom addr */ + 0x00000300, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 179 */ + 0x00071580, /* rom addr */ + 0x00000140, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 180 */ + 0x000716C0, /* rom addr */ + 0x00000780, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 181 */ + 0x00071E40, /* rom addr */ + 0x00000520, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 182 */ + 0x00072360, /* rom addr */ + 0x00000040, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 183 */ + 0x000723A0, /* rom addr */ + 0x00000720, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 184 */ + 0x00072AC0, /* rom addr */ + 0x00000340, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 185 */ + 0x00072E00, /* rom addr */ + 0x00000340, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 186 */ + 0x00073140, /* rom addr */ + 0x00000340, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 187 */ + 0x00073480, /* rom addr */ + 0x00000340, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 188 */ + 0x000737C0, /* rom addr */ + 0x00000340, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 189 */ + 0x00073B00, /* rom addr */ + 0x00000340, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 190 */ + 0x00073E40, /* rom addr */ + 0x00000340, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 191 */ + 0x00074180, /* rom addr */ + 0x00000340, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 192 */ + 0x000744C0, /* rom addr */ + 0x00000340, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 193 */ + 0x00074800, /* rom addr */ + 0x00000340, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 194 */ + 0x00074B40, /* rom addr */ + 0x00000340, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 195 */ + 0x00074E80, /* rom addr */ + 0x00000340, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 196 */ + 0x000751C0, /* rom addr */ + 0x00000340, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 197 */ + 0x00075500, /* rom addr */ + 0x00000340, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 198 */ + 0x00075840, /* rom addr */ + 0x00000340, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 199 */ + 0x00075B80, /* rom addr */ + 0x00000340, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 200 */ + 0x00075EC0, /* rom addr */ + 0x00000340, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 201 */ + 0x00076200, /* rom addr */ + 0x00000340, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 202 */ + 0x00076540, /* rom addr */ + 0x00000340, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 203 */ + 0x00076880, /* rom addr */ + 0x00000340, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 204 */ + 0x00076BC0, /* rom addr */ + 0x00000260, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 205 */ + 0x00076E20, /* rom addr */ + 0x00000260, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 206 */ + 0x00077080, /* rom addr */ + 0x00000260, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 207 */ + 0x000772E0, /* rom addr */ + 0x00000260, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 208 */ + 0x00077540, /* rom addr */ + 0x00000260, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 209 */ + 0x000777A0, /* rom addr */ + 0x00000260, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 210 */ + 0x00077A00, /* rom addr */ + 0x00000260, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 211 */ + 0x00077C60, /* rom addr */ + 0x00000260, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 212 */ + 0x00077EC0, /* rom addr */ + 0x00000260, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 213 */ + 0x00078120, /* rom addr */ + 0x00000260, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 214 */ + 0x00078380, /* rom addr */ + 0x00001220, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 215 */ + 0x000795A0, /* rom addr */ + 0x00002940, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 216 */ + 0x0007BEE0, /* rom addr */ + 0x000022E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 217 */ + 0x0007E1C0, /* rom addr */ + 0x000008E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 218 */ + 0x0007EAA0, /* rom addr */ + 0x00001280, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 219 */ + 0x0007FD20, /* rom addr */ + 0x00001B40, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 220 */ + 0x00081860, /* rom addr */ + 0x000028A0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 221 */ + 0x00084100, /* rom addr */ + 0x00001D20, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 222 */ + 0x00085E20, /* rom addr */ + 0x00000660, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 223 */ + 0x00086480, /* rom addr */ + 0x00001480, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 224 */ + 0x00087900, /* rom addr */ + 0x00001120, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 225 */ + 0x00088A20, /* rom addr */ + 0x000024E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 226 */ + 0x0008AF00, /* rom addr */ + 0x00005180, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 227 */ + 0x00090080, /* rom addr */ + 0x00004220, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 228 */ + 0x000942A0, /* rom addr */ + 0x00003780, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 229 */ + 0x00097A20, /* rom addr */ + 0x00002C40, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 230 */ + 0x0009A660, /* rom addr */ + 0x00002040, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 231 */ + 0x0009C6A0, /* rom addr */ + 0x00000A40, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 232 */ + 0x0009D0E0, /* rom addr */ + 0x00000860, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 233 */ + 0x0009D940, /* rom addr */ + 0x00000A40, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 234 */ + 0x0009E380, /* rom addr */ + 0x00000860, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 235 */ + 0x0009EBE0, /* rom addr */ + 0x00000B60, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 236 */ + 0x0009F740, /* rom addr */ + 0x000013C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 237 */ + 0x000A0B00, /* rom addr */ + 0x00001D20, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 238 */ + 0x000A2820, /* rom addr */ + 0x00001640, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 239 */ + 0x000A3E60, /* rom addr */ + 0x00000EA0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 240 */ + 0x000A4D00, /* rom addr */ + 0x00000CE0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 241 */ + 0x000A59E0, /* rom addr */ + 0x00000720, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 242 */ + 0x000A6100, /* rom addr */ + 0x00005960, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_PERMANENT, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 243 */ + 0x000ABA60, /* rom addr */ + 0x00000660, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_PERSISTENT, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 244 */ + 0x000AC0C0, /* rom addr */ + 0x00000480, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_PERSISTENT, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 245 */ + 0x000AC540, /* rom addr */ + 0x00000660, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_PERSISTENT, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 246 */ + 0x000ACBA0, /* rom addr */ + 0x000055C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_PERMANENT, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 247 */ + 0x000B2160, /* rom addr */ + 0x00000020, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 248 */ + 0x000B2180, /* rom addr */ + 0x0001D580, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_PERSISTENT, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + }, +}; + +ArcHeader AudiobankHeaderStart = { + 159, /* entries */ + 0, /* unk param */ + nullptr, /* data start pointer */ + 0, /* copy */ + { 0, 0, 0, 0, 0, 0, 0 }, /* pad */ + /* entries */ + { + { + /* entry 0 */ + 0x00000000, /* rom addr */ + 0x00003180, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_PERMANENT, /* cache type */ + 0x00FF, /* param0 */ + 0x4800, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 1 */ + 0x00003180, /* rom addr */ + 0x00000B60, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x01FF, /* param0 */ + 0x0E00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 2 */ + 0x00003CE0, /* rom addr */ + 0x00004500, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_PERMANENT, /* cache type */ + 0x02FF, /* param0 */ + 0x6000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 3 */ + 0x000081E0, /* rom addr */ + 0x00000820, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0C00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 4 */ + 0x00008A00, /* rom addr */ + 0x00000DC0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0B40, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 5 */ + 0x000097C0, /* rom addr */ + 0x000007C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0C00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 6 */ + 0x00009F80, /* rom addr */ + 0x00000DA0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0B40, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 7 */ + 0x0000AD20, /* rom addr */ + 0x00000840, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0C00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 8 */ + 0x0000B560, /* rom addr */ + 0x00000AA0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0E00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 9 */ + 0x0000C000, /* rom addr */ + 0x000008E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0C00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 10 */ + 0x0000C8E0, /* rom addr */ + 0x00000A60, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0F00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 11 */ + 0x0000D340, /* rom addr */ + 0x000008A0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0D00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 12 */ + 0x0000DBE0, /* rom addr */ + 0x00000960, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0C00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 13 */ + 0x0000E540, /* rom addr */ + 0x00000B00, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0D00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 14 */ + 0x0000F040, /* rom addr */ + 0x00000E00, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0A40, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 15 */ + 0x0000FE40, /* rom addr */ + 0x000009A0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0B00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 16 */ + 0x000107E0, /* rom addr */ + 0x000009E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0E00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 17 */ + 0x000111C0, /* rom addr */ + 0x00000C00, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0D00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 18 */ + 0x00011DC0, /* rom addr */ + 0x00000740, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0800, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 19 */ + 0x00012500, /* rom addr */ + 0x00000B40, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0D00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 20 */ + 0x00013040, /* rom addr */ + 0x00000800, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0B00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 21 */ + 0x00013840, /* rom addr */ + 0x00000980, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0C00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 22 */ + 0x000141C0, /* rom addr */ + 0x00000A00, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0900, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 23 */ + 0x00014BC0, /* rom addr */ + 0x00000A20, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0B00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 24 */ + 0x000155E0, /* rom addr */ + 0x00000A80, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0D00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 25 */ + 0x00016060, /* rom addr */ + 0x00000980, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0D00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 26 */ + 0x000169E0, /* rom addr */ + 0x000010C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x1038, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 27 */ + 0x00017AA0, /* rom addr */ + 0x000005E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0600, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 28 */ + 0x00018080, /* rom addr */ + 0x00000D40, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x1040, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 29 */ + 0x00018DC0, /* rom addr */ + 0x00000B20, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0A42, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 30 */ + 0x000198E0, /* rom addr */ + 0x00000680, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0800, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 31 */ + 0x00019F60, /* rom addr */ + 0x00000480, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0600, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 32 */ + 0x0001A3E0, /* rom addr */ + 0x000006E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0700, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 33 */ + 0x0001AAC0, /* rom addr */ + 0x000003C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0500, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 34 */ + 0x0001AE80, /* rom addr */ + 0x00000500, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0500, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 35 */ + 0x0001B380, /* rom addr */ + 0x00000520, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0600, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 36 */ + 0x0001B8A0, /* rom addr */ + 0x000005C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0500, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 37 */ + 0x0001BE60, /* rom addr */ + 0x00000700, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0800, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 38 */ + 0x0001C560, /* rom addr */ + 0x000005E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0600, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 39 */ + 0x0001CB40, /* rom addr */ + 0x00000340, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0500, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 40 */ + 0x0001CE80, /* rom addr */ + 0x000000C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0100, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 41 */ + 0x0001CF40, /* rom addr */ + 0x00000280, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0400, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 42 */ + 0x0001D1C0, /* rom addr */ + 0x00000280, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0300, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 43 */ + 0x0001D440, /* rom addr */ + 0x000009C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0A42, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 44 */ + 0x0001DE00, /* rom addr */ + 0x000009E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0A42, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 45 */ + 0x0001E7E0, /* rom addr */ + 0x00000BA0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0A42, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 46 */ + 0x0001F380, /* rom addr */ + 0x00000960, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0A42, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 47 */ + 0x0001FCE0, /* rom addr */ + 0x00000940, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0A42, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 48 */ + 0x00020620, /* rom addr */ + 0x00000360, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x001A, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 49 */ + 0x00020980, /* rom addr */ + 0x00000360, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0019, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 50 */ + 0x00020CE0, /* rom addr */ + 0x00000360, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x001A, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 51 */ + 0x00021040, /* rom addr */ + 0x00000180, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0100, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 52 */ + 0x000211C0, /* rom addr */ + 0x000004C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0700, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 53 */ + 0x00021680, /* rom addr */ + 0x000004C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0700, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 54 */ + 0x00021B40, /* rom addr */ + 0x00000A60, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0A40, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 55 */ + 0x000225A0, /* rom addr */ + 0x00000600, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0800, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 56 */ + 0x00022BA0, /* rom addr */ + 0x00000CA0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0A40, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 57 */ + 0x00023840, /* rom addr */ + 0x00000100, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0200, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 58 */ + 0x00023940, /* rom addr */ + 0x00000220, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0400, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 59 */ + 0x00023B60, /* rom addr */ + 0x00000260, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0300, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 60 */ + 0x00023DC0, /* rom addr */ + 0x000005C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0700, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 61 */ + 0x00024380, /* rom addr */ + 0x00000280, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0500, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 62 */ + 0x00024600, /* rom addr */ + 0x00000840, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0A40, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 63 */ + 0x00024E40, /* rom addr */ + 0x00000B40, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0A45, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 64 */ + 0x00025980, /* rom addr */ + 0x00000D00, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0A40, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 65 */ + 0x00026680, /* rom addr */ + 0x00000980, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0A40, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 66 */ + 0x00027000, /* rom addr */ + 0x00000560, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0700, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 67 */ + 0x00027560, /* rom addr */ + 0x000004E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0500, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 68 */ + 0x00027A40, /* rom addr */ + 0x000003E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0500, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 69 */ + 0x00027E20, /* rom addr */ + 0x00000A60, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0A40, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 70 */ + 0x00028880, /* rom addr */ + 0x000003E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0400, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 71 */ + 0x00028C60, /* rom addr */ + 0x00000300, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0300, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 72 */ + 0x00028F60, /* rom addr */ + 0x00000460, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0600, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 73 */ + 0x000293C0, /* rom addr */ + 0x00000D80, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0A40, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 74 */ + 0x0002A140, /* rom addr */ + 0x00000540, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0800, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 75 */ + 0x0002A680, /* rom addr */ + 0x00000760, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0800, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 76 */ + 0x0002ADE0, /* rom addr */ + 0x000005C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0500, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 77 */ + 0x0002B3A0, /* rom addr */ + 0x00000940, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0A40, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 78 */ + 0x0002BCE0, /* rom addr */ + 0x00000C00, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0A48, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 79 */ + 0x0002C8E0, /* rom addr */ + 0x000000E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0100, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 80 */ + 0x0002C9C0, /* rom addr */ + 0x00000440, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0600, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 81 */ + 0x0002CE00, /* rom addr */ + 0x000009C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0A48, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 82 */ + 0x0002D7C0, /* rom addr */ + 0x000007C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0A40, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 83 */ + 0x0002DF80, /* rom addr */ + 0x00000440, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0400, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 84 */ + 0x0002E3C0, /* rom addr */ + 0x00000B00, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0A40, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 85 */ + 0x0002EEC0, /* rom addr */ + 0x00000540, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0800, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 86 */ + 0x0002F400, /* rom addr */ + 0x00000B60, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0A40, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 87 */ + 0x0002FF60, /* rom addr */ + 0x00000760, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0B00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 88 */ + 0x000306C0, /* rom addr */ + 0x00000AC0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0A40, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 89 */ + 0x00031180, /* rom addr */ + 0x00000B00, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0A40, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 90 */ + 0x00031C80, /* rom addr */ + 0x00000300, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0300, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 91 */ + 0x00031F80, /* rom addr */ + 0x000003C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0400, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 92 */ + 0x00032340, /* rom addr */ + 0x00000440, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0500, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 93 */ + 0x00032780, /* rom addr */ + 0x00000260, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0300, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 94 */ + 0x000329E0, /* rom addr */ + 0x000003E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0500, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 95 */ + 0x00032DC0, /* rom addr */ + 0x000006A0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0600, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 96 */ + 0x00033460, /* rom addr */ + 0x00000CA0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0B43, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 97 */ + 0x00034100, /* rom addr */ + 0x000007C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x1000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 98 */ + 0x000348C0, /* rom addr */ + 0x000005C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0600, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 99 */ + 0x00034E80, /* rom addr */ + 0x00000240, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0200, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 100 */ + 0x000350C0, /* rom addr */ + 0x000006C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0900, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 101 */ + 0x00035780, /* rom addr */ + 0x00000400, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0500, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 102 */ + 0x00035B80, /* rom addr */ + 0x00000A60, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0A40, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 103 */ + 0x000365E0, /* rom addr */ + 0x00000280, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0200, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 104 */ + 0x00036860, /* rom addr */ + 0x00000180, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0300, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 105 */ + 0x000369E0, /* rom addr */ + 0x00000AE0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0C41, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 106 */ + 0x000374C0, /* rom addr */ + 0x00000A20, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0A40, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 107 */ + 0x00037EE0, /* rom addr */ + 0x00000B00, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0A40, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 108 */ + 0x000389E0, /* rom addr */ + 0x000009A0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0A40, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 109 */ + 0x00039380, /* rom addr */ + 0x00000BA0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0A40, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 110 */ + 0x00039F20, /* rom addr */ + 0x00000B00, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0A40, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 111 */ + 0x0003AA20, /* rom addr */ + 0x00000F80, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0A40, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 112 */ + 0x0003B9A0, /* rom addr */ + 0x00000620, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0800, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 113 */ + 0x00000070, /* rom addr */ + 0x00000000, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0800, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 114 */ + 0x00000070, /* rom addr */ + 0x00000000, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0800, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 115 */ + 0x00000070, /* rom addr */ + 0x00000000, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0800, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 116 */ + 0x0003BFC0, /* rom addr */ + 0x00000840, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0A40, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 117 */ + 0x0003C800, /* rom addr */ + 0x00000820, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0A48, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 118 */ + 0x0003D020, /* rom addr */ + 0x000003A0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0500, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 119 */ + 0x0003D3C0, /* rom addr */ + 0x000001C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0300, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 120 */ + 0x0003D580, /* rom addr */ + 0x00000E00, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x1048, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 121 */ + 0x0003E380, /* rom addr */ + 0x00000460, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0500, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 122 */ + 0x00000077, /* rom addr */ + 0x00000000, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0300, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 123 */ + 0x0003E7E0, /* rom addr */ + 0x00000DC0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0D00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 124 */ + 0x0003F5A0, /* rom addr */ + 0x00000BA0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x1000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 125 */ + 0x00040140, /* rom addr */ + 0x000005E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0B00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 126 */ + 0x00040720, /* rom addr */ + 0x00000860, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0E00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 127 */ + 0x00040F80, /* rom addr */ + 0x000005C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0E00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 128 */ + 0x00041540, /* rom addr */ + 0x00000B00, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0F00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 129 */ + 0x00042040, /* rom addr */ + 0x00000320, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0400, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 130 */ + 0x00042360, /* rom addr */ + 0x00000A40, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0F00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 131 */ + 0x00042DA0, /* rom addr */ + 0x00000B40, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0B40, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 132 */ + 0x000438E0, /* rom addr */ + 0x00000C60, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0F48, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 133 */ + 0x00044540, /* rom addr */ + 0x00000540, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0900, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 134 */ + 0x00044A80, /* rom addr */ + 0x00000A60, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x1000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 135 */ + 0x000454E0, /* rom addr */ + 0x000006C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0D00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 136 */ + 0x00045BA0, /* rom addr */ + 0x00000900, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0F00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 137 */ + 0x000464A0, /* rom addr */ + 0x000010C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x1041, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 138 */ + 0x00047560, /* rom addr */ + 0x00001180, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x1040, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 139 */ + 0x0000008A, /* rom addr */ + 0x00000000, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x1040, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 140 */ + 0x000486E0, /* rom addr */ + 0x00001040, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x1044, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 141 */ + 0x00049720, /* rom addr */ + 0x00000B40, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0E00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 142 */ + 0x0004A260, /* rom addr */ + 0x000004C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0900, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 143 */ + 0x0004A720, /* rom addr */ + 0x00000EC0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0E41, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 144 */ + 0x0004B5E0, /* rom addr */ + 0x000008E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0C00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 145 */ + 0x0004BEC0, /* rom addr */ + 0x00000A00, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0F00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 146 */ + 0x0004C8C0, /* rom addr */ + 0x00000920, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0F00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 147 */ + 0x0004D1E0, /* rom addr */ + 0x000010C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x1040, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 148 */ + 0x0004E2A0, /* rom addr */ + 0x00000BC0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x1000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 149 */ + 0x0004EE60, /* rom addr */ + 0x000010C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x1040, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 150 */ + 0x0004FF20, /* rom addr */ + 0x00000B00, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0F00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 151 */ + 0x00050A20, /* rom addr */ + 0x000003E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0600, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 152 */ + 0x00050E00, /* rom addr */ + 0x00000620, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0800, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 153 */ + 0x00051420, /* rom addr */ + 0x00005100, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_PERMANENT, /* cache type */ + 0x05FF, /* param0 */ + 0x7E00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 154 */ + 0x00056520, /* rom addr */ + 0x00003F00, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_PERMANENT, /* cache type */ + 0x05FF, /* param0 */ + 0x7600, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 155 */ + 0x0005A420, /* rom addr */ + 0x00001E40, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_PERMANENT, /* cache type */ + 0x05FF, /* param0 */ + 0x3400, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 156 */ + 0x0005C260, /* rom addr */ + 0x00004500, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_PERSISTENT, /* cache type */ + 0x05FF, /* param0 */ + 0x7700, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 157 */ + 0x00060760, /* rom addr */ + 0x00003020, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_PERSISTENT, /* cache type */ + 0x05FF, /* param0 */ + 0x5300, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 158 */ + 0x00063780, /* rom addr */ + 0x00004500, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_PERSISTENT, /* cache type */ + 0x05FF, /* param0 */ + 0x7700, /* param1 */ + 0x0000, /* param2 */ + }, + }, +}; + +ArcHeader AudiowaveHeaderStart ATTRIBUTE_ALIGN(1) = { + 6, /* entries */ + 0, /* unk param */ + nullptr, /* data start pointer */ + 0, /* copy */ + { 0, 0, 0, 0, 0, 0, 0 }, /* pad */ + /* entries */ + { + { + /* entry 0 */ + 0x00000000, /* rom addr */ + 0x0003A940, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_EITHER_NOSYNC, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 1 */ + 0x0003A940, /* rom addr */ + 0x0000DF00, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_EITHER_NOSYNC, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 2 */ + 0x00048840, /* rom addr */ + 0x0006A080, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_EITHER_NOSYNC, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 3 */ + 0x000B28C0, /* rom addr */ + 0x001226E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_EITHER_NOSYNC, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 4 */ + 0x001D4FA0, /* rom addr */ + 0x000F0E20, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_EITHER_NOSYNC, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 5 */ + 0x002C5DC0, /* rom addr */ + 0x003ED620, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_EITHER_NOSYNC, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + }, +}; + +ArcHeader AudiodataHeaderStart ATTRIBUTE_ALIGN(1) = { + 3, /* entries */ + 0, /* unk param */ + nullptr, /* data start pointer */ + 0, /* copy */ + { 0, 0, 0, 0, 0, 0, 0 }, /* pad */ + /* entries */ + { + { + /* entry 0 */ + 0x00000000, /* rom addr */ + 0x000CF700, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_PERMANENT, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 1 */ + 0x000CF700, /* rom addr */ + 0x00067C80, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_PERMANENT, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 2 */ + 0x00137380, /* rom addr */ + 0x006B33E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_PERMANENT, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + }, +}; + +// clang-format off +u16 AudiomapHeaderStart[] ATTRIBUTE_ALIGN(1) = { + 0x01F2, + 0x01F4, + 0x01F6, + 0x01F8, + 0x01FA, + 0x01FC, + 0x01FE, + 0x0200, + 0x0202, + 0x0204, + 0x0206, + 0x0208, + 0x020A, + 0x020C, + 0x020E, + 0x0210, + 0x0212, + 0x0214, + 0x0216, + 0x0218, + 0x021A, + 0x021C, + 0x021E, + 0x0220, + 0x0222, + 0x0224, + 0x0226, + 0x0228, + 0x022A, + 0x022C, + 0x022E, + 0x0230, + 0x0232, + 0x0234, + 0x0236, + 0x0238, + 0x023A, + 0x023C, + 0x023E, + 0x0240, + 0x0242, + 0x0244, + 0x0246, + 0x0248, + 0x024A, + 0x024C, + 0x024E, + 0x0250, + 0x0252, + 0x0254, + 0x0256, + 0x0258, + 0x025A, + 0x025C, + 0x025E, + 0x0260, + 0x0262, + 0x0264, + 0x0266, + 0x0268, + 0x026A, + 0x026C, + 0x026E, + 0x0270, + 0x0272, + 0x0274, + 0x0276, + 0x0278, + 0x027A, + 0x027C, + 0x027E, + 0x0280, + 0x0282, + 0x0284, + 0x0286, + 0x0288, + 0x028A, + 0x028C, + 0x028E, + 0x0290, + 0x0292, + 0x0294, + 0x0296, + 0x0298, + 0x029A, + 0x029C, + 0x029E, + 0x02A0, + 0x02A2, + 0x02A4, + 0x02A6, + 0x02A8, + 0x02AA, + 0x02AC, + 0x02AE, + 0x02B0, + 0x02B2, + 0x02B4, + 0x02B6, + 0x02B8, + 0x02BA, + 0x02BC, + 0x02BE, + 0x02C0, + 0x02C2, + 0x02C4, + 0x02C6, + 0x02C8, + 0x02CA, + 0x02CC, + 0x02CE, + 0x02D0, + 0x02D2, + 0x02D4, + 0x02D6, + 0x02D8, + 0x02DA, + 0x02DC, + 0x02DE, + 0x02E0, + 0x02E2, + 0x02E4, + 0x02E6, + 0x02E8, + 0x02EA, + 0x02EC, + 0x02EE, + 0x02F0, + 0x02F2, + 0x02F4, + 0x02F6, + 0x02F8, + 0x02FA, + 0x02FC, + 0x02FE, + 0x0300, + 0x0302, + 0x0304, + 0x0306, + 0x0308, + 0x030A, + 0x030C, + 0x030E, + 0x0310, + 0x0312, + 0x0314, + 0x0316, + 0x0318, + 0x031A, + 0x031C, + 0x031E, + 0x0320, + 0x0322, + 0x0324, + 0x0326, + 0x0328, + 0x032A, + 0x032C, + 0x032E, + 0x0330, + 0x0332, + 0x0334, + 0x0336, + 0x0338, + 0x033A, + 0x033C, + 0x033E, + 0x0340, + 0x0342, + 0x0344, + 0x0346, + 0x0348, + 0x034A, + 0x034C, + 0x034E, + 0x0350, + 0x0352, + 0x0354, + 0x0356, + 0x0358, + 0x035A, + 0x035C, + 0x035E, + 0x0360, + 0x0362, + 0x0364, + 0x0366, + 0x0368, + 0x036A, + 0x036C, + 0x036E, + 0x0370, + 0x0372, + 0x0374, + 0x0376, + 0x0378, + 0x037A, + 0x037C, + 0x037E, + 0x0380, + 0x0382, + 0x0384, + 0x0386, + 0x0388, + 0x038A, + 0x038C, + 0x038E, + 0x0390, + 0x0392, + 0x0394, + 0x0396, + 0x0398, + 0x039A, + 0x039C, + 0x039E, + 0x03A0, + 0x03A2, + 0x03A4, + 0x03A6, + 0x03A8, + 0x03AA, + 0x03AC, + 0x03AE, + 0x03B0, + 0x03B2, + 0x03B4, + 0x03B6, + 0x03B8, + 0x03BA, + 0x03BC, + 0x03BE, + 0x03C0, + 0x03C2, + 0x03C4, + 0x03C6, + 0x03C8, + 0x03CA, + 0x03CC, + 0x03CE, + 0x03D0, + 0x03D2, + 0x03D4, + 0x03D6, + 0x03DB, + 0x03DD, + 0x03DF, + 0x03E1, + 0x03E4, + 0x03E6, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x011C, + 0x011E, + 0x011F, + 0x0120, + 0x0121, + 0x0122, + 0x0123, + 0x0123, + 0x0124, + 0x0125, + 0x011D, + 0x0126, + 0x0121, + 0x0127, + 0x0128, + 0x0129, + 0x012A, + 0x012B, + 0x012B, + 0x012C, + 0x012D, + 0x012E, + 0x012F, + 0x010E, + 0x0107, + 0x0110, + 0x0114, + 0x0112, + 0x0116, + 0x0117, + 0x0108, + 0x0115, + 0x0105, + 0x0119, + 0x010D, + 0x0118, + 0x0113, + 0x0104, + 0x0106, + 0x010C, + 0x010A, + 0x011A, + 0x0111, + 0x010B, + 0x010F, + 0x0109, + 0x0103, + 0x011B, + 0x0130, + 0x0130, + 0x0131, + 0x0131, + 0x0132, + 0x0133, + 0x0134, + 0x0135, + 0x0136, + 0x0137, + 0x0138, + 0x0139, + 0x013A, + 0x013B, + 0x013C, + 0x013D, + 0x013E, + 0x013F, + 0x0140, + 0x0141, + 0x0142, + 0x0143, + 0x0144, + 0x0145, + 0x0146, + 0x0147, + 0x0148, + 0x0149, + 0x014A, + 0x014B, + 0x014C, + 0x014D, + 0x014E, + 0x014F, + 0x0150, + 0x0151, + 0x0152, + 0x0153, + 0x0154, + 0x0155, + 0x0156, + 0x0157, + 0x0158, + 0x0159, + 0x015A, + 0x015B, + 0x015C, + 0x015D, + 0x015E, + 0x015F, + 0x0160, + 0x0161, + 0x0162, + 0x0163, + 0x0164, + 0x0165, + 0x0166, + 0x0167, + 0x0168, + 0x0169, + 0x016A, + 0x016B, + 0x016C, + 0x016D, + 0x016E, + 0x016F, + 0x0170, + 0x0170, + 0x0170, + 0x0170, + 0x0174, + 0x0175, + 0x0176, + 0x0177, + 0x0178, + 0x0179, + 0x017A, + 0x017B, + 0x017C, + 0x017C, + 0x017C, + 0x017C, + 0x017C, + 0x017C, + 0x017C, + 0x017C, + 0x017C, + 0x017C, + 0x017C, + 0x017C, + 0x017C, + 0x017C, + 0x017C, + 0x017C, + 0x017C, + 0x017C, + 0x017C, + 0x017C, + 0x017C, + 0x017C, + 0x017C, + 0x017C, + 0x017C, + 0x017C, + 0x017C, + 0x017C, + 0x017C, + 0x017C, + 0x017D, + 0x017E, + 0x017F, + 0x0180, + 0x0181, + 0x0182, + 0x0183, + 0x0184, + 0x0185, + 0x0186, + 0x0187, + 0x0188, + 0x0189, + 0x018A, + 0x018B, + 0x018C, + 0x018D, + 0x018E, + 0x018F, + 0x0190, + 0x0191, + 0x0192, + 0x0193, + 0x0194, + 0x0195, + 0x0196, + 0x0197, + 0x0198, + 0x0402, + 0x9B9A, + 0x9901, + 0x9C01, + 0x9D01, + 0x9E02, + 0x0200, + 0x0199, + 0x0102, + 0x0000, + 0x0000, + 0x0000, + 0x0000, +}; +// clang-format on From 25d2e7837a4dd8aa79c87b594c8d81c600f807eb Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Tue, 4 Jun 2024 20:58:25 -0400 Subject: [PATCH 011/234] Link jaudio_NES/verysimple.c --- common.py | 11 +++++++++++ config/disasm_overrides.yml | 1 + config/dol_slices.yml | 10 +++++----- configure.py | 6 ++++++ src/static/jaudio_NES/verysimple.c | 7 ++++--- 5 files changed, 27 insertions(+), 8 deletions(-) diff --git a/common.py b/common.py index b98479a5..9d79de6e 100644 --- a/common.py +++ b/common.py @@ -452,6 +452,16 @@ JAUDIO_FUNC_ALIGN_32 = [ "-str readonly", "-inline off" ] +JAUDIO_USER = [ + "-O0", + "-char unsigned", + "-fp hard", + "-lang=c++", + "-sdata 8", + "-sdata2 8", + "-enum int", + "-common on" +] JSYSTEM_CFLAGS = ' '.join(JSYSTEM_BASE + LOCAL_CFLAGS) JSYSTEM_JGADGET_CFLAGS = ' '.join(JSYSTEM_JGADGET_BASE + LOCAL_CFLAGS) @@ -470,6 +480,7 @@ PREPROCESS_CFLAGS = ' '.join(PREPROCESSOR_CFLAGS) FAMICOM_CLFAGS = ' '.join(FAMICOM_BASE + LOCAL_CFLAGS) JAUDIO_CFLAGS = ' '.join(JAUDIO_BASE + LOCAL_CFLAGS) JAUDIO_FUNC_ALIGN_32_CFLAGS = ' '.join(JAUDIO_BASE + JAUDIO_FUNC_ALIGN_32 + LOCAL_CFLAGS) +JAUDIO_USER_CFLAGS = ' '.join(JAUDIO_USER + LOCAL_CFLAGS) DOL_LDFLAGS = ' '.join([ "-maxerrors 1", diff --git a/config/disasm_overrides.yml b/config/disasm_overrides.yml index 0a450474..c44ba20b 100644 --- a/config/disasm_overrides.yml +++ b/config/disasm_overrides.yml @@ -1,6 +1,7 @@ trim_ctors: true symbol_aligns: + 0x80008480: 32 0x80018920: 32 0x800190e0: 32 0x80019380: 32 diff --git a/config/dol_slices.yml b/config/dol_slices.yml index c4a73685..059e27a6 100644 --- a/config/dol_slices.yml +++ b/config/dol_slices.yml @@ -32,6 +32,11 @@ jaudio_NES/dummyprobe.c: .text: [0x800083f8, 0x80008400] jaudio_NES/audioheaders.c: .data: [0x800cca40, 0x800ce880] +jaudio_NES/verysimple.c: + .text: [0x80008400, 0x80008480] + .sdata: [0x80217b80, 0x80217b88] +# jaudio_NES/game64.c: # TODO: finish +# .rodata: [0x800a9938, 0x800a9b98] jaudio_NES/aictrl.c: .text: [0x80017e80, 0x80018640] .rodata: [0x800aa500, 0x800aa518] @@ -57,11 +62,6 @@ jaudio_NES/neosthread.c: .bss: [0x80180020, 0x80186440] .sdata: [0x80217be0, 0x80217be8] .sbss: [0x80218460, 0x80218478] -# jaudio_NES/game64.c: # TODO: finish -# .rodata: [0x800a9938, 0x800a9b98] -#jaudio_NES/verysimple.c: -# .text: [0x80008400, 0x80008480] -# .sdata: [0x80217b80, 0x80217b88] Famicom/famicom.cpp: .text: [0x80041614, 0x80046888] # TODO: get ~J2DOrthoGraph's dtor in here somehow? 0x800468fc, also add in JUTGamePad::getPortStatus when JUTGamePad is linked? .rodata: [0x800aa9a8, 0x800aaa30] diff --git a/configure.py b/configure.py index 74631980..ea52a201 100644 --- a/configure.py +++ b/configure.py @@ -632,6 +632,10 @@ JAUDIO_FUNC_ALIGN_32_TUS = [ "neosthread.c" ] +JAUDIO_USER_TUS = [ + "verysimple.c" +] + class CSource(Source): def __init__(self, ctx: c.SourceContext, path: str): if path.startswith("src/static/dolphin/"): @@ -640,6 +644,8 @@ class CSource(Source): elif path.startswith("src/static/jaudio_NES/"): if os.path.basename(path) in JAUDIO_FUNC_ALIGN_32_TUS: self.cflags = c.JAUDIO_FUNC_ALIGN_32_CFLAGS + elif os.path.basename(path) in JAUDIO_USER_TUS: + self.cflags = c.JAUDIO_USER_CFLAGS else: self.cflags = c.JAUDIO_CFLAGS self.cc = c.CC diff --git a/src/static/jaudio_NES/verysimple.c b/src/static/jaudio_NES/verysimple.c index f3d15873..f293e0a6 100644 --- a/src/static/jaudio_NES/verysimple.c +++ b/src/static/jaudio_NES/verysimple.c @@ -6,13 +6,14 @@ #include "jaudio_NES/connect.h" #include "jaudio_NES/jammain.h" -void Jac_Start(void *heap, u32 heap_size, u32 aram_size) { - StartAudioThread(heap,heap_size, aram_size, 7); +extern void Jac_Start(void* heap, u32 heap_size, u32 aram_size) { + StartAudioThread(heap, heap_size, aram_size, 7); Jac_WaveDirectorySet("/"); Jac_PlayInit(); Jac_Portcmd_Init(); } -void Jac_PlayInit(void) { // funcalign? + +extern void Jac_PlayInit(void) { Jaq_Reset(); Jac_ConnectTableInit(); Jam_InitRegistTrack(); From d934bd11add0c21e3675ce4ad09f870fe3e8f66f Mon Sep 17 00:00:00 2001 From: Prakxo Date: Wed, 5 Jun 2024 16:00:06 +0200 Subject: [PATCH 012/234] link rhythm --- common.py | 1 + config/dol_slices.yml | 6 + config/symbols.yml | 1 + configure.py | 1 + include/jaudio_NES/audiostruct.h | 32 +++ include/jaudio_NES/audiowork.h | 3 + include/jaudio_NES/game64.h | 2 + include/jaudio_NES/rhythm.h | 14 +- include/jaudio_NES/sub_sys.h | 16 ++ src/static/jaudio_NES/rhythm.c | 439 +++++++++++++++++++++++++++++++ 10 files changed, 509 insertions(+), 6 deletions(-) create mode 100644 src/static/jaudio_NES/rhythm.c diff --git a/common.py b/common.py index 9d79de6e..91a52029 100644 --- a/common.py +++ b/common.py @@ -453,6 +453,7 @@ JAUDIO_FUNC_ALIGN_32 = [ "-inline off" ] JAUDIO_USER = [ + "-d _LANGUAGE_C_PLUS_PLUS", "-O0", "-char unsigned", "-fp hard", diff --git a/config/dol_slices.yml b/config/dol_slices.yml index 059e27a6..7b21146c 100644 --- a/config/dol_slices.yml +++ b/config/dol_slices.yml @@ -37,6 +37,12 @@ jaudio_NES/verysimple.c: .sdata: [0x80217b80, 0x80217b88] # jaudio_NES/game64.c: # TODO: finish # .rodata: [0x800a9938, 0x800a9b98] +jaudio_NES/rhythm.c: + .text: [0x80015a4c, 0x800165ec] + .bss: [0x8017bdd8, 0x8017be80] + .sdata: [0x80217bd0, 0x80217bd8] + .sbss: [0x802183a0, 0x802183b0] + .sdata2: [0x80218d60, 0x80218d78] jaudio_NES/aictrl.c: .text: [0x80017e80, 0x80018640] .rodata: [0x800aa500, 0x800aa518] diff --git a/config/symbols.yml b/config/symbols.yml index fba0b019..6f1abbfa 100644 --- a/config/symbols.yml +++ b/config/symbols.yml @@ -3503,6 +3503,7 @@ global: 0x80217bac: write_pointer 0x80217bb0: buffer_remain 0x80217bb4: _STOP + 0x80217bc0: sou_now_bgm_handle 0x80217bc4: SOU_ONGEN_AREA1 0x80217bc8: SOU_ONGEN_AREA2 0x80217bcc: sou_md_bgm_boost_pasent diff --git a/configure.py b/configure.py index ea52a201..f3617b25 100644 --- a/configure.py +++ b/configure.py @@ -633,6 +633,7 @@ JAUDIO_FUNC_ALIGN_32_TUS = [ ] JAUDIO_USER_TUS = [ + "rhythm.c", "verysimple.c" ] diff --git a/include/jaudio_NES/audiostruct.h b/include/jaudio_NES/audiostruct.h index 1305da72..546a8fae 100644 --- a/include/jaudio_NES/audiostruct.h +++ b/include/jaudio_NES/audiostruct.h @@ -169,6 +169,38 @@ typedef struct envp_ { /* 0x1C */ envdat* pEnvData; } envp; +/* sizeof(group) == 0x160 */ +typedef struct group_ { + struct flags_ { + /* 0x000 */ u32 flag0 : 1; + } flags; + + /* 0x004 */ u8 state; + /* 0x005 */ u8 unk4; + /* 0x006 */ u8 unk5; + /* 0x007 */ u16 tempo; + /* 0x00C */ u8 unkC[0xD4]; + /* 0x0E0 */ int unkE0; + /* 0x0E4 */ u8 E4[0x77]; + /* 0x15B */ s8 unk15B; + /* 0x15C */ s8 unk15C; +} group; + +/* sizeof(AudioGlobals) == 0x92b0 */ +typedef struct AudioGlobals { + /* 0x0000 */ u8 unk0[0x3788]; + /* 0x3788 */ group groups[5]; + /* 0x3E68 */ u8 unk3E68[0x5448]; +} AudioGlobals; + +/* sizeof(sub) >= 0xCD */ +typedef struct sub_ { + /* 0x00 */ s8 unk0[0xCB]; + /* 0xCB */ s8 unkCB; + /* 0xCD */ s8 unkCC; +} sub; + + typedef union SOUNDID_ { struct { u8 wave_id; diff --git a/include/jaudio_NES/audiowork.h b/include/jaudio_NES/audiowork.h index f3f81892..37e0a550 100644 --- a/include/jaudio_NES/audiowork.h +++ b/include/jaudio_NES/audiowork.h @@ -2,11 +2,14 @@ #define AUDIOWORK_H #include "types.h" +#include "jaudio_NES/audiostruct.h" #ifdef __cplusplus extern "C" { #endif +extern AudioGlobals AG; + #ifdef __cplusplus } #endif diff --git a/include/jaudio_NES/game64.h b/include/jaudio_NES/game64.h index ed32bfef..e8e7a8be 100644 --- a/include/jaudio_NES/game64.h +++ b/include/jaudio_NES/game64.h @@ -61,6 +61,8 @@ extern void Na_RestartPrepare(); extern u8 Na_CheckRestartReady(); extern void Na_Restart(); +extern u8 sou_now_bgm_handle; + #ifdef __cplusplus } #endif diff --git a/include/jaudio_NES/rhythm.h b/include/jaudio_NES/rhythm.h index 44becac8..d0070c63 100644 --- a/include/jaudio_NES/rhythm.h +++ b/include/jaudio_NES/rhythm.h @@ -8,13 +8,15 @@ extern "C" { #endif -extern void Na_RhythmStart(u32, s8, s8); -extern void Na_RhythmStop(u32); +extern void Na_RhythmInit(); +extern s8 Na_GetRhythmSubTrack(u32 idx); +extern void Na_RhythmStart(u32 idx, s8 arg1, s8 arg2); +extern void Na_RhythmStop(u32 idx); extern void Na_RhythmAllStop(); -extern f32 Na_GetRhythmAnimCounter(u32); -extern s8 Na_GetRhythmDelay(u32); -extern void Na_GetRhythmInfo(TempoBeat_c* rhythm); -extern void Na_SetRhythmInfo(TempoBeat_c* rhythm); +extern f32 Na_GetRhythmAnimCounter(u32 idx); +extern s8 Na_GetRhythmDelay(u32 idx); +extern void Na_GetRhythmInfo(TempoBeat_c* tempo); +extern void Na_SetRhythmInfo(TempoBeat_c* tempo); #ifdef __cplusplus } diff --git a/include/jaudio_NES/sub_sys.h b/include/jaudio_NES/sub_sys.h index 11b90af1..40405251 100644 --- a/include/jaudio_NES/sub_sys.h +++ b/include/jaudio_NES/sub_sys.h @@ -3,7 +3,23 @@ #include "types.h" #include "jaudio_NES/audiostruct.h" +#include "PR/mbi.h" + + +#define NA_MAKE_COMMAND(a0, a1, a2, a3) \ + (u32)((((a0)&0xFF) << 24) | (((a1)&0xFF) << 16) | (((a2)&0xFF) << 8) | (((a3)&0xFF) << 0)) extern s32 CreateAudioTask(Acmd* cmds, s16* pSamples, u32 nSamples, s32 param_4); +extern void Nap_SetU16(u32 command , u16 value); +extern void Nap_SetU8(u32 command, u8 value); +extern void Nap_SetS8(u32 command, s8 value); +extern void Nap_SetF32(u32 command, f32 value); +extern void Nap_SetS32(u32 command, s32 value); + +extern s8 Nap_ReadSubPort(s32, s32, s32); +extern s8 Nap_ReadGrpPort(s32, s32); + +extern s32 Nap_GetRandom(); + #endif diff --git a/src/static/jaudio_NES/rhythm.c b/src/static/jaudio_NES/rhythm.c new file mode 100644 index 00000000..5c10f629 --- /dev/null +++ b/src/static/jaudio_NES/rhythm.c @@ -0,0 +1,439 @@ +#include "jaudio_NES/rhythm.h" +#include "jaudio_NES/sub_sys.h" +#include "jaudio_NES/game64.h" +#include "jaudio_NES/audiowork.h" + +typedef struct NA_RHYTHM_BUFFER { + /* 0x0 */ u8 state; + /* 0x1 */ s8 current_subtrack; + /* 0x2 */ u8 unk2[0x2]; + /* 0x4 */ u32 current_buffer_id; + /* 0x8 */ s8 unk8; + /* 0x9 */ s8 unk9; + /* 0xA */ u8 unkA[0x2]; +} NA_RHYTHM_BUFFER; + +typedef enum RythmBuffer_State { + NA_RHYTHM_BUFFER_STOPPED, + NA_RHYTHM_BUFFER_ALLOC, + NA_RHYTHM_BUFFER_STARTED, +} RythmBuffer_State; + + +static s16 rhythm_beat_type = -1; + +static NA_RHYTHM_BUFFER rhythm_buffer[14]; + +static s8 Na_GetRhythmSeNum(s8 num, sub* sub); +static s8 Na_RhythmGrpProcess(s8 arg0, group* group); + +extern void Na_RhythmInit() { + int i; + + for (i = 0; i < 14; i++) { + rhythm_buffer[i].state = NA_RHYTHM_BUFFER_STOPPED; + rhythm_buffer[i].current_subtrack = i; + } + + Nap_SetS32(NA_MAKE_COMMAND(228, 0, 0, 0), (s32)Na_GetRhythmSeNum); + Nap_SetS32(NA_MAKE_COMMAND(228, 0, 0, 1), (s32)Na_RhythmGrpProcess); +} + +static NA_RHYTHM_BUFFER* rhythm_buffer_alloc() { + int i; + + NA_RHYTHM_BUFFER* buf; + + for (i = 0; i < 14; i++) { + buf = &rhythm_buffer[i]; + + if (buf->state == NA_RHYTHM_BUFFER_STOPPED) { + buf->state = NA_RHYTHM_BUFFER_ALLOC; + return buf; + } + } + + return nullptr; +} + +static NA_RHYTHM_BUFFER* get_rhythm_buffer(u32 idx) { + int i; + NA_RHYTHM_BUFFER* buf; + + for (i = 0; i < 14; i++) { + buf = &rhythm_buffer[i]; + + if (buf->state != NA_RHYTHM_BUFFER_STOPPED && idx == buf->current_buffer_id) { + return buf; + } + } + + return nullptr; +} + +extern s8 Na_GetRhythmSubTrack(u32 idx) { + NA_RHYTHM_BUFFER* buf; + + buf = get_rhythm_buffer(idx); + if (buf == nullptr) { + return -1; + } + return buf->current_subtrack; +} + +static void rhythm_start(NA_RHYTHM_BUFFER* buffer) { + if (buffer != nullptr) { + Nap_SetS8(NA_MAKE_COMMAND(6, 2, buffer->current_subtrack, 0), 0); + Nap_SetS8(NA_MAKE_COMMAND(6, 2, buffer->current_subtrack, 3), buffer->unk8); + Nap_SetS8(NA_MAKE_COMMAND(6, 2, buffer->current_subtrack, 7), buffer->unk9); + buffer->state = NA_RHYTHM_BUFFER_STARTED; + } +} + +static void rhythm_stop(NA_RHYTHM_BUFFER* buffer) { + if (buffer != nullptr) { + if (buffer->state == NA_RHYTHM_BUFFER_STARTED) { + Nap_SetS8(NA_MAKE_COMMAND(6, 2, buffer->current_subtrack, 0), 1); + } + + buffer->state = NA_RHYTHM_BUFFER_STOPPED; + } +} + +extern void Na_RhythmStart(u32 idx, s8 arg1, s8 arg2) { + NA_RHYTHM_BUFFER* buf; + + buf = get_rhythm_buffer(idx); + if (buf == nullptr) { + buf = rhythm_buffer_alloc(); + } + if (buf != nullptr) { + buf->current_buffer_id = idx; + buf->unk8 = arg1; + buf->unk9 = arg2; + rhythm_start(buf); + } +} + +extern void Na_RhythmStop(u32 idx) { + NA_RHYTHM_BUFFER* buf; + + buf = get_rhythm_buffer(idx); + if (buf != nullptr) { + rhythm_stop(buf); + } +} + +extern void Na_RhythmAllStop() { + int i; + NA_RHYTHM_BUFFER* buf; + + for (i = 0; i < 14; i++) { + buf = &rhythm_buffer[i]; + + if (buf->state != NA_RHYTHM_BUFFER_STOPPED) { + rhythm_stop(buf); + } + } +} + +static s16 Na_GetRhythmBeatType(void) { + if (AG.groups[sou_now_bgm_handle].flags.flag0 != 0) { + rhythm_beat_type = Nap_ReadGrpPort(sou_now_bgm_handle, 1); + } + return rhythm_beat_type; +} + +extern f32 Na_GetRhythmAnimCounter(u32 idx) { + f32 f31 = 0.0f; + NA_RHYTHM_BUFFER* buf = get_rhythm_buffer(idx); + s16 r30; + s16 r29; + int r28; + s16 r27; + + if (buf == nullptr) { + return -2.0f; + } + + if (Nap_ReadSubPort(2, buf->current_subtrack, 1) == 0) { + if (Nap_ReadSubPort(2, buf->current_subtrack, 6) <= 1) { + return -1.0f; + } + return -2.0f; + } + + r30 = Nap_ReadSubPort(2, buf->current_subtrack, 4); + r29 = Nap_ReadSubPort(2, buf->current_subtrack, 5); + r27 = Nap_ReadGrpPort(2, 3); + if (r30 == 0) { + return 0.0f; + } + + if (Na_GetRhythmBeatType() == 0) { + if (Nap_ReadGrpPort(2, 2) % 2 != 0) { + r28 = 32; + } else { + r28 = 16; + } + } else { + r28 = 24; + } + + r30 = (r29 - r30) * r28; + r30 += r27; + r29 *= r28; + f31 = (f32)r30 / (f32)r29; + return f31; +} + +extern s8 Na_GetRhythmDelay(u32 idx) { + NA_RHYTHM_BUFFER* buf; + s8 delay = 0; + + buf = get_rhythm_buffer(idx); + if (buf == nullptr) { + return -1; + } + delay = Nap_ReadSubPort(2, buf->current_subtrack, 7); + + return delay; +} + +static s8 Na_GetRhythmSeNum(s8 num, sub* sub) { + u32 rand; + + if (num == 0) { + num = 16 - sub->unkCC; + if (num == 16) { + num = 0; + } + } else { + rand = Nap_GetRandom(); + switch (sub->unkCB) { + case 0x14: + case 0x15: + case 0x16: + case 0x50: + case 0x51: + case 0x52: + case 0x5A: + num = rand & 7; + break; + case 0xC: + case 0xD: + case 0xE: + case 0x17: + case 0x18: + case 0x19: + case 0x1A: + case 0x1B: + case 0x1C: + case 0x1D: + case 0x1E: + case 0x1F: + case 0x20: + case 0x21: + case 0x22: + case 0x23: + case 0x24: + case 0x25: + case 0x26: + case 0x27: + case 0x28: + case 0x29: + case 0x2A: + case 0x2B: + case 0x2C: + case 0x2D: + case 0x2E: + case 0x37: + case 0x38: + case 0x39: + case 0x3A: + case 0x3B: + case 0x3E: + case 0x3F: + case 0x40: + case 0x41: + case 0x42: + case 0x43: + case 0x4C: + case 0x4D: + case 0x4E: + case 0x4F: + case 0x58: + case 0x59: + case 0x5E: + case 0x5F: + case 0x60: + case 0x61: + case 0x62: + case 0x63: + case 0x64: + case 0x65: + case 0x66: + case 0x67: + case 0x68: + case 0x69: + case 0x6A: + case 0x6B: + case 0x6C: + case 0x6D: + case 0x6E: + case 0x6F: + case 0x70: + case 0x71: + case 0x72: + case 0x73: + case 0x74: + case 0x75: + case 0x76: + case 0x77: + case 0x78: + case 0x79: + case 0x7A: + case 0x7B: + case 0x7C: + num = (rand % 6); + break; + case 0x53: + case 0x54: + case 0x55: + case 0x56: + case 0x57: + num = (rand % 5); + break; + case 0x3C: + case 0x3D: + case 0x5D: + num = rand & 3; + break; + case 0x5: + case 0xF: + case 0x2F: + case 0x44: + case 0x45: + case 0x46: + case 0x47: + case 0x48: + case 0x49: + case 0x4A: + case 0x4B: + num = (rand % 3); + break; + default: + num = 0; + break; + } + } + return num; +} + +extern void Na_GetRhythmInfo(TempoBeat_c* tempo) { + if (tempo != nullptr) { + tempo->tempo = (AG.groups[2].tempo / 48); + tempo->beat = Na_GetRhythmBeatType(); + } +} + +extern void Na_SetRhythmInfo(TempoBeat_c* tempo) { + (tempo != nullptr); + if ((tempo == nullptr) || (tempo->tempo == 0)) { + Nap_SetS32(NA_MAKE_COMMAND(71, 2, 0, 0), 120); + rhythm_beat_type = -1; + } else { + Nap_SetS32(NA_MAKE_COMMAND(71, 2, 0, 0), tempo->tempo); + rhythm_beat_type = tempo->beat; + } +} + +static void tempo_adjust(group* group) { + int tempo = (AG.groups[2].tempo / 48); + int newTempo; + if (AG.groups[sou_now_bgm_handle].flags.flag0 != 0) { + newTempo = (AG.groups[sou_now_bgm_handle].tempo / 48); + + if (tempo > newTempo) { + tempo--; + } else if (tempo < newTempo) { + tempo++; + } + } + group->tempo = tempo * 48; +} + +static s8 Na_RhythmGrpProcess(s8 arg0, group* group) { + int r29; + int r27; + int r30; + int r31; + (void)arg0; + int ret = 1; + r29 = 24; + static int pre_beat_type = -1; + static u8 init; + static int pre_frame_per_step = -1; + + { static u8 init; } + + tempo_adjust(group); + if (Na_GetRhythmBeatType() == 0) { + if (Nap_ReadGrpPort(2, 2) % 2 != 0) { + r29 = 32; + } else { + r29 = 16; + } + } else { + r29 = 24; + } + + r31 = Nap_ReadGrpPort(2, 3); + if (Nap_ReadGrpPort(2, 2) % 2 != 0) { + r27 = r31; + } else if (Na_GetRhythmBeatType() == 0) { + r27 = r31 + 32; + } else { + r27 = r31 + 24; + } + + if (pre_beat_type != rhythm_beat_type) { + if (pre_frame_per_step > 0) { + r31 = (r31 * (r29 / (f32)pre_frame_per_step)); + } + pre_beat_type = rhythm_beat_type; + } + pre_frame_per_step = r29; + + if (AG.groups[sou_now_bgm_handle].flags.flag0 != 0) { + int r25 = Nap_ReadGrpPort(sou_now_bgm_handle, 0); + r30 = r25 - r27; + } else { + r30 = 0; + } + + if (r30 > 24) { + r30 -= 48; + } + if (r30 < -24) { + r30 += 48; + } + + if (r30 > 1 || r30 < -1) { + if (AG.groups[2].unkE0 % 2 != 0) { + r31++; + } + } else { + r31++; + } + + if (r31 >= r29) { + r31 -= r29; + ret = 0; + } + + group->unk15B = r31; + group->unk15C = (s8)((s32)(r31 * 0x64) / r29); + + return ret; +} From 45effcf14f916c353f940eec5c720b0b033cfeb9 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Wed, 5 Jun 2024 17:59:34 -0400 Subject: [PATCH 013/234] Implement & link jaudio_NES/melody.c --- config/analysis_overrides.yml | 2 +- config/dol_slices.yml | 5 + config/symbols.yml | 2 + configure.py | 5 +- include/audio.h | 2 +- include/jaudio_NES/audiocommon.h | 3 + include/jaudio_NES/audiostruct.h | 27 +- include/jaudio_NES/game64.h | 1 + include/jaudio_NES/game64_cpp.h | 11 + include/jaudio_NES/melody.h | 12 +- include/jaudio_NES/sub_sys.h | 9 +- include/jaudio_NES/system.h | 1 + src/audio.c | 2 +- src/static/jaudio_NES/melody.c | 733 ++++++++++++++++++++++++++++++- 14 files changed, 792 insertions(+), 23 deletions(-) create mode 100644 include/jaudio_NES/game64_cpp.h diff --git a/config/analysis_overrides.yml b/config/analysis_overrides.yml index eb088a0b..ee443475 100644 --- a/config/analysis_overrides.yml +++ b/config/analysis_overrides.yml @@ -9,7 +9,7 @@ blocked_targets: - 0x801F6C7C # tcs_bad - 0x801F6C7D # ics_bad - 0x800a9a90 - - 0x800a9838 + # - 0x800a9838 - 0x800a9938 - 0x800a9a3a - 0x800a99f6 diff --git a/config/dol_slices.yml b/config/dol_slices.yml index 7b21146c..0654df36 100644 --- a/config/dol_slices.yml +++ b/config/dol_slices.yml @@ -37,6 +37,11 @@ jaudio_NES/verysimple.c: .sdata: [0x80217b80, 0x80217b88] # jaudio_NES/game64.c: # TODO: finish # .rodata: [0x800a9938, 0x800a9b98] +jaudio_NES/melody.c: + .text: [0x8001561c, 0x80015a4c] + .rodata: [0x800a9b98, 0x800aa500] + .sbss: [0x80218390, 0x802183a0] + .sdata2: [0x80218d58, 0x80218d60] jaudio_NES/rhythm.c: .text: [0x80015a4c, 0x800165ec] .bss: [0x8017bdd8, 0x8017be80] diff --git a/config/symbols.yml b/config/symbols.yml index 6f1abbfa..4dccb822 100644 --- a/config/symbols.yml +++ b/config/symbols.yml @@ -3616,6 +3616,8 @@ global: 0x802182e8: bootsound_ptr 0x802182ec: bootsound_size 0x802182f0: sou_now_spec + 0x802182f4: sou_scene_mode + 0x802182f5: sou_chime_status 0x802182f8: fatalErrorCallback 0x80218300: sou_last_sys_trg_num 0x80218304: sou_kazaguruma_speed diff --git a/configure.py b/configure.py index f3617b25..8feee686 100644 --- a/configure.py +++ b/configure.py @@ -633,8 +633,9 @@ JAUDIO_FUNC_ALIGN_32_TUS = [ ] JAUDIO_USER_TUS = [ - "rhythm.c", - "verysimple.c" + "verysimple.c", + "melody.c", + "rhythm.c" ] class CSource(Source): diff --git a/include/audio.h b/include/audio.h index f71359ae..41425ec1 100644 --- a/include/audio.h +++ b/include/audio.h @@ -72,7 +72,7 @@ extern s8 sAdo_GetRhythmDelay(u32 id); extern void sAdo_GetRhythmInfo(TempoBeat_c* rhythm); extern void sAdo_SetRhythmInfo(TempoBeat_c* rhythm); -extern int sAdo_InstCountGet(); +extern s8 sAdo_InstCountGet(); extern void sAdo_RhythmPos(u32 id, u8 haniwa_id, const xyz_t* pos); diff --git a/include/jaudio_NES/audiocommon.h b/include/jaudio_NES/audiocommon.h index 8ede79f9..aad4cf4e 100644 --- a/include/jaudio_NES/audiocommon.h +++ b/include/jaudio_NES/audiocommon.h @@ -13,6 +13,9 @@ extern "C" { #define AUDIO_ARAM_SIZE 0x400000 /* 4MB */ #define AUDIO_ARAM_HEAP_SIZE 0xC000 +#define NA_MAKE_COMMAND(a0, a1, a2, a3) \ + (u32)((((a0) & 0xFF) << 24) | (((a1) & 0xFF) << 16) | (((a2) & 0xFF) << 8) | (((a3) & 0xFF) << 0)) + typedef enum DSPBUF_EVENTS { DSPBUF_EVENTS_0 = 0, DSPBUF_EVENTS_1 = 1, diff --git a/include/jaudio_NES/audiostruct.h b/include/jaudio_NES/audiostruct.h index 546a8fae..3b436a10 100644 --- a/include/jaudio_NES/audiostruct.h +++ b/include/jaudio_NES/audiostruct.h @@ -172,14 +172,18 @@ typedef struct envp_ { /* sizeof(group) == 0x160 */ typedef struct group_ { struct flags_ { - /* 0x000 */ u32 flag0 : 1; + /* 0x000 */ u32 flag0 : 1; } flags; /* 0x004 */ u8 state; /* 0x005 */ u8 unk4; /* 0x006 */ u8 unk5; - /* 0x007 */ u16 tempo; - /* 0x00C */ u8 unkC[0xD4]; + /* 0x008 */ u16 tempo; + /* 0x00A */ u8 unkA; + /* 0x00B */ u8 unkB; + /* 0x00C */ u8 unkC[0x018 - 0x00C]; + /* 0x018 */ u16* unk18; + /* 0x01C */ u8 unk1C[0x0E0 - 0x01C]; /* 0x0E0 */ int unkE0; /* 0x0E4 */ u8 E4[0x77]; /* 0x15B */ s8 unk15B; @@ -188,18 +192,23 @@ typedef struct group_ { /* sizeof(AudioGlobals) == 0x92b0 */ typedef struct AudioGlobals { - /* 0x0000 */ u8 unk0[0x3788]; + /* 0x0000 */ u8 unk0[0x2850 - 0x0000]; + /* 0x2850 */ ArcHeader* seq_header; + /* 0x2854 */ ArcHeader* bank_header; + /* 0x2858 */ ArcHeader* wave_header; + /* 0x285C */ ArcHeader* data_header; + /* 0x2860 */ u16* map_header; + /* 0x2864 */ u8 unk2864[0x3788 - 0x2864]; /* 0x3788 */ group groups[5]; /* 0x3E68 */ u8 unk3E68[0x5448]; } AudioGlobals; /* sizeof(sub) >= 0xCD */ typedef struct sub_ { - /* 0x00 */ s8 unk0[0xCB]; - /* 0xCB */ s8 unkCB; - /* 0xCD */ s8 unkCC; -} sub; - + /* 0x00 */ s8 unk0[0xCB]; + /* 0xCB */ s8 unkCB; + /* 0xCD */ s8 unkCC; +} sub; typedef union SOUNDID_ { struct { diff --git a/include/jaudio_NES/game64.h b/include/jaudio_NES/game64.h index e8e7a8be..c9c0de6d 100644 --- a/include/jaudio_NES/game64.h +++ b/include/jaudio_NES/game64.h @@ -62,6 +62,7 @@ extern u8 Na_CheckRestartReady(); extern void Na_Restart(); extern u8 sou_now_bgm_handle; +extern u8 sou_chime_status; #ifdef __cplusplus } diff --git a/include/jaudio_NES/game64_cpp.h b/include/jaudio_NES/game64_cpp.h new file mode 100644 index 00000000..8636a786 --- /dev/null +++ b/include/jaudio_NES/game64_cpp.h @@ -0,0 +1,11 @@ +#ifndef GAME64_CPP_H +#define GAME64_CPP_H + +#include "types.h" +#include "jaudio_NES/game64.h" + +/* C++ linkage */ +extern u8 angle2pan(u16 angle, f32 dist); +extern f32 distance2vol(f32 distance); + +#endif diff --git a/include/jaudio_NES/melody.h b/include/jaudio_NES/melody.h index 34d98d1d..b0bed689 100644 --- a/include/jaudio_NES/melody.h +++ b/include/jaudio_NES/melody.h @@ -2,14 +2,20 @@ #define MELODY_H #include "types.h" +#include "jaudio_NES/audiocommon.h" #ifdef __cplusplus extern "C" { #endif -extern void Na_Inst(u16, u8*); -extern void Na_FurnitureInst(u32, u8, u8*, u16, f32); -extern int Na_InstCountGet(); +extern void Na_MelodyInit(void); +extern void Na_Inst(u16 inst, u8* pData); +extern s8 Na_InstCountGet(void); +extern s16 Na_MelodyGetSubTrackNum(s16 inst); +extern void Na_FurnitureInst(u32 id, u8 inst, u8* melody, u16 angle, f32 dist); +extern void Na_MelodyVoice(s16 voice); + +extern u32 na_melody_id_hist[]; #ifdef __cplusplus } diff --git a/include/jaudio_NES/sub_sys.h b/include/jaudio_NES/sub_sys.h index 40405251..5a88fe3f 100644 --- a/include/jaudio_NES/sub_sys.h +++ b/include/jaudio_NES/sub_sys.h @@ -5,13 +5,9 @@ #include "jaudio_NES/audiostruct.h" #include "PR/mbi.h" - -#define NA_MAKE_COMMAND(a0, a1, a2, a3) \ - (u32)((((a0)&0xFF) << 24) | (((a1)&0xFF) << 16) | (((a2)&0xFF) << 8) | (((a3)&0xFF) << 0)) - extern s32 CreateAudioTask(Acmd* cmds, s16* pSamples, u32 nSamples, s32 param_4); -extern void Nap_SetU16(u32 command , u16 value); +extern void Nap_SetU16(u32 command, u16 value); extern void Nap_SetU8(u32 command, u8 value); extern void Nap_SetS8(u32 command, s8 value); extern void Nap_SetF32(u32 command, f32 value); @@ -20,6 +16,9 @@ extern void Nap_SetS32(u32 command, s32 value); extern s8 Nap_ReadSubPort(s32, s32, s32); extern s8 Nap_ReadGrpPort(s32, s32); +extern s32 Nap_SendStart(void); +extern void Nap_WaitVsync(void); + extern s32 Nap_GetRandom(); #endif diff --git a/include/jaudio_NES/system.h b/include/jaudio_NES/system.h index 51594c22..d554208b 100644 --- a/include/jaudio_NES/system.h +++ b/include/jaudio_NES/system.h @@ -4,5 +4,6 @@ #include "types.h" extern void Nas_InitAudio(u64* acmdBuf, s32 acmdBufSize); +extern void Nas_FastCopy(u8* SrcAddr, u8* DestAdd, size_t size, s32 medium); #endif diff --git a/src/audio.c b/src/audio.c index 3540a8ce..21ff1520 100644 --- a/src/audio.c +++ b/src/audio.c @@ -228,7 +228,7 @@ extern void sAdo_SetRhythmInfo(TempoBeat_c* rhythm) { Na_SetRhythmInfo(rhythm); } -extern int sAdo_InstCountGet() { +extern s8 sAdo_InstCountGet() { return Na_InstCountGet(); } diff --git a/src/static/jaudio_NES/melody.c b/src/static/jaudio_NES/melody.c index 7a0cfc96..2532ccf9 100644 --- a/src/static/jaudio_NES/melody.c +++ b/src/static/jaudio_NES/melody.c @@ -1 +1,732 @@ -#include "melody.h" \ No newline at end of file +#include "jaudio_NES/melody.h" + +#include "jaudio_NES/game64_cpp.h" +#include "jaudio_NES/sub_sys.h" +#include "jaudio_NES/system.h" +#include "jaudio_NES/audiowork.h" + +static s32 current_sub_track = 0; +u32 na_melody_id_hist[2]; + +// clang-format off +static const s32 melody_seq_size[] = { + 0x120, + 0x1C0, + 0x1E0, + 0x120, + 0x120, + 0x120, + 0x1A0, + 0x1E0, + 0x180, + 0x1A0, + 0x140, + 0x1A0, + 0x1A0, + 0x280, + 0x1C0, + 0x140, + 0x120, + 0x280, + 0x180, + 0x120, + 0x160, + 0x120, + 0x1A0, + 0x100, + 0x100, + 0x1A0, + 0x260, + 0x120, + 0x120, + 0x100, + 0x120, + 0x1C0, + 0x1C0, + 0x100, + 0x260, + 0x1C0, + 0x1C0, + 0x2A0, + 0x2A0, + 0x260, + 0x340, + 0x2A0, + 0x300, + 0x2A0, + 0x360, + 0x2A0, + 0x180, + 0x140, + 0x120, + 0x120, + 0x2E0, + 0x120, + 0x1C0, + 0x180, + 0x160, + 0x140, + 0x120, + 0x120, + 0x140, + 0x120, + 0x120, + 0x180, + 0x120, + 0x160, + 0x120, + 0x120, + 0x120, + 0x1C0, + 0x1A0, + 0x1C0, + 0x1C0, + 0x1C0, + 0x1C0, + 0x1A0, + 0x260, + 0x1A0, + 0x1A0, + 0x120, + 0x180, + 0x100, + 0x1C0, + 0x100, + 0x1A0, + 0x240, + 0x180, + 0x1C0, + 0x140, + 0x120, + 0x100, + 0x1A0, + 0x120, + 0x260, + 0x1C0, + 0x100, + 0x180, + 0x1C0, + 0x120, + 0x3A0, + 0x120, + 0x180, + 0x1C0, + 0x120, + 0x1E0, + 0x260, + 0x1C0, + 0x100, + 0x1C0, + 0x1E0, + 0x120, + 0x120, + 0x120, + 0x140, + 0x120, + 0x120, + 0x120, + 0x180, + 0x120, + 0x120, + 0x120, + 0x1C0, + 0x120, + 0x260, + 0x1C0, + 0x140, + 0x280, + 0x300, + 0x320, + 0x280, + 0x280, + 0x280, + 0x340, + 0x280, + 0x280, + 0x340, + 0x1C0, + 0x1C0, + 0x1C0, + 0x1A0, + 0x1A0, + 0x1E0, + 0x1E0, + 0x1E0, + 0x1C0, + 0x3A0, + 0x1A0, + 0x1E0, + 0x1C0, + 0x1C0, + 0x100, + 0x1C0, + 0x120, + 0x120, + 0x100, + 0x120, + 0x1C0, + 0x1C0, + 0x1E0, + 0x1E0, + 0x2A0, + 0x1E0, + 0x1C0, + 0x2A0, + 0x1E0, + 0x1C0, + 0x120, + 0x120, + 0x120, + 0x180, + 0x120, + 0x260, + 0x120, + 0x100, + 0x120, + 0x120, + 0x1E0, + 0x120, + 0x280, + 0x1C0, + 0x2C0, + 0x1E0, + 0x1E0, + 0x1E0, + 0x2A0, + 0x1E0, + 0x1C0, + 0x1E0, + 0x1E0, + 0x1C0, + 0x160, + 0x100, + 0x160, + 0x1C0, + 0x180, + 0x100, + 0x100, + 0x120, + 0x1E0, + 0x1E0, + 0x3A0, + 0x180, + 0x2A0, + 0x180, + 0x100, + 0x120, + 0x100, + 0x180, + 0x260, + 0x120, + 0x100, + 0x180, + 0x120, + 0x120, + 0x100, + 0x100, + 0x120, + 0x180, + 0x120, + 0x100, + 0x180, + 0x120, + 0x120, + 0x120, + 0x120, + 0x100, + 0x120, + 0x1C0, + 0x120, + 0x120, + 0x180, + 0x120, + 0x120, + 0x160, + 0x120, + 0x120, + 0x100, + 0x100, + 0x120, + 0x120, + 0x120, + 0x120, + 0x120, + 0x120, + 0x100, + 0x180, + 0x1C0, + 0x1C0, + 0x140, + 0x1E0, + 0x120, + 0x120, + 0x180, + 0x1C0, + 0x120, + 0x120, + 0x120, + 0x120, + 0x120, + 0x120, + 0x120, + 0x100, + 0x1C0, + 0x1C0, + 0x1A0, + 0x260, + 0x1A0, + 0x260, + 0x1C0, + 0x1A0, + 0x1A0, + 0x260, + 0x1C0, + 0x1C0, + 0x1A0, + 0x260, + 0x1A0, + 0x1A0, + 0x1A0, + 0x280, + 0x180, + 0x220, + 0x100, + 0x100, + 0x100, + 0x100, + 0x100, + 0x1C0, + 0x120, + 0x100, + 0x100, + 0x100, + 0x100, + 0x100, + 0x100, + 0x100, + 0x100, + 0x100, + 0x100, + 0x100, + 0x100, +}; +// clang-format on + +// clang-format off +static const s32 melody_seq_offset[] = { + 0x00000, + 0x00120, + 0x002E0, + 0x004C0, + 0x005E0, + 0x00700, + 0x00820, + 0x009C0, + 0x00BA0, + 0x00D20, + 0x00EC0, + 0x01000, + 0x011A0, + 0x01340, + 0x015C0, + 0x01780, + 0x018C0, + 0x019E0, + 0x01C60, + 0x01DE0, + 0x01F00, + 0x02060, + 0x02180, + 0x02320, + 0x02420, + 0x02520, + 0x026C0, + 0x02920, + 0x02A40, + 0x02B60, + 0x02C60, + 0x02D80, + 0x02F40, + 0x03100, + 0x03200, + 0x03460, + 0x03620, + 0x037E0, + 0x03A80, + 0x03D20, + 0x03F80, + 0x042C0, + 0x04560, + 0x04860, + 0x04B00, + 0x04E60, + 0x05100, + 0x05280, + 0x053C0, + 0x054E0, + 0x05600, + 0x058E0, + 0x05A00, + 0x05BC0, + 0x05D40, + 0x05EA0, + 0x05FE0, + 0x06100, + 0x06220, + 0x06360, + 0x06480, + 0x065A0, + 0x06720, + 0x06840, + 0x069A0, + 0x06AC0, + 0x06BE0, + 0x06D00, + 0x06EC0, + 0x07060, + 0x07220, + 0x073E0, + 0x075A0, + 0x07760, + 0x07900, + 0x07B60, + 0x07D00, + 0x07EA0, + 0x07FC0, + 0x08140, + 0x08240, + 0x08400, + 0x08500, + 0x086A0, + 0x088E0, + 0x08A60, + 0x08C20, + 0x08D60, + 0x08E80, + 0x08F80, + 0x09120, + 0x09240, + 0x094A0, + 0x09660, + 0x09760, + 0x098E0, + 0x09AA0, + 0x09BC0, + 0x09F60, + 0x0A080, + 0x0A200, + 0x0A3C0, + 0x0A4E0, + 0x0A6C0, + 0x0A920, + 0x0AAE0, + 0x0ABE0, + 0x0ADA0, + 0x0AF80, + 0x0B0A0, + 0x0B1C0, + 0x0B2E0, + 0x0B420, + 0x0B540, + 0x0B660, + 0x0B780, + 0x0B900, + 0x0BA20, + 0x0BB40, + 0x0BC60, + 0x0BE20, + 0x0BF40, + 0x0C1A0, + 0x0C360, + 0x0C4A0, + 0x0C720, + 0x0CA20, + 0x0CD40, + 0x0CFC0, + 0x0D240, + 0x0D4C0, + 0x0D800, + 0x0DA80, + 0x0DD00, + 0x0E040, + 0x0E200, + 0x0E3C0, + 0x0E580, + 0x0E720, + 0x0E8C0, + 0x0EAA0, + 0x0EC80, + 0x0EE60, + 0x0F020, + 0x0F3C0, + 0x0F560, + 0x0F740, + 0x0F900, + 0x0FAC0, + 0x0FBC0, + 0x0FD80, + 0x0FEA0, + 0x0FFC0, + 0x100C0, + 0x101E0, + 0x103A0, + 0x10560, + 0x10740, + 0x10920, + 0x10BC0, + 0x10DA0, + 0x10F60, + 0x11200, + 0x113E0, + 0x115A0, + 0x116C0, + 0x117E0, + 0x11900, + 0x11A80, + 0x11BA0, + 0x11E00, + 0x11F20, + 0x12020, + 0x12140, + 0x12260, + 0x12440, + 0x12560, + 0x127E0, + 0x129A0, + 0x12C60, + 0x12E40, + 0x13020, + 0x13200, + 0x134A0, + 0x13680, + 0x13840, + 0x13A20, + 0x13C00, + 0x13DC0, + 0x13F20, + 0x14020, + 0x14180, + 0x14340, + 0x144C0, + 0x145C0, + 0x146C0, + 0x147E0, + 0x149C0, + 0x14BA0, + 0x14F40, + 0x150C0, + 0x15360, + 0x154E0, + 0x155E0, + 0x15700, + 0x15800, + 0x15980, + 0x15BE0, + 0x15D00, + 0x15E00, + 0x15F80, + 0x160A0, + 0x161C0, + 0x162C0, + 0x163C0, + 0x164E0, + 0x16660, + 0x16780, + 0x16880, + 0x16A00, + 0x16B20, + 0x16C40, + 0x16D60, + 0x16E80, + 0x16F80, + 0x170A0, + 0x17260, + 0x17380, + 0x174A0, + 0x17620, + 0x17740, + 0x17860, + 0x179C0, + 0x17AE0, + 0x17C00, + 0x17D00, + 0x17E00, + 0x17F20, + 0x18040, + 0x18160, + 0x18280, + 0x183A0, + 0x184C0, + 0x185C0, + 0x18740, + 0x18900, + 0x18AC0, + 0x18C00, + 0x18DE0, + 0x18F00, + 0x19020, + 0x191A0, + 0x19360, + 0x19480, + 0x195A0, + 0x196C0, + 0x197E0, + 0x19900, + 0x19A20, + 0x19B40, + 0x19C40, + 0x19E00, + 0x19FC0, + 0x1A160, + 0x1A3C0, + 0x1A560, + 0x1A7C0, + 0x1A980, + 0x1AB20, + 0x1ACC0, + 0x1AF20, + 0x1B0E0, + 0x1B2A0, + 0x1B440, + 0x1B6A0, + 0x1B840, + 0x1B9E0, + 0x1BB80, + 0x1BE00, + 0x1BF80, + 0x1C1A0, + 0x1C2A0, + 0x1C3A0, + 0x1C4A0, + 0x1C5A0, + 0x1C6A0, + 0x1C860, + 0x1C980, + 0x1CA80, + 0x1CB80, + 0x1CC80, + 0x1CD80, + 0x1CE80, + 0x1CF80, + 0x1D080, + 0x1D180, + 0x1D280, + 0x1D380, + 0x1D480, +}; +// clang-format on + +static void Na_MelodyStart(u16 voice, s16 subTrack, const u8* pData); + +extern void Na_MelodyInit(void) { + current_sub_track = 0; + na_melody_id_hist[0] = 0xFFFFFFFF; + na_melody_id_hist[1] = 0xFFFFFFFF; +} + +extern void Na_Inst(u16 inst, u8* pData) { + if (!sou_chime_status && (inst == 0xFF || inst == 0xFE)) { + return; + } + + Na_MelodyStart(inst, Na_MelodyGetSubTrackNum(inst), pData); + Nap_SetF32(NA_MAKE_COMMAND(0x01, 0x00, 0x06, 0x00), 1.0f); +} + +static void Na_MelodyStart(u16 voice, s16 subTrack, const u8* pData) { + Nap_SetS8(NA_MAKE_COMMAND(0x06, 0x00, subTrack, 0x00), 1); + s32 unused = Nap_SendStart(); + Nap_WaitVsync(); + + u8* dst; + s16 seq_idx = 248; + u16 size = AG.groups[0].unk18[2]; + + switch (subTrack) { + case 6: + break; + case 7: + size += 0x600; + break; + case 15: + size += 0xC00; + break; + } + + u8* src; + + dst = (u8*)AG.groups[0].unk18 + size; + ArcHeader* seq_header = AG.seq_header; + size_t seq_size = melody_seq_size[voice]; + int medium = seq_header->entries[seq_idx].medium; + src = (u8*)seq_header->entries[seq_idx].addr + melody_seq_offset[voice]; + // clang-format off + Nas_FastCopy( + src, /* Voice melody data is broken up in single sequence */ + dst, /* Destination buffer */ + seq_size, /* melody sequence size */ + medium /* medium (always cart in AC?) */ + ); + // clang-format on + + u16* dst16 = (u16*)(dst + 4); + for (int i = 0; i < 19; i++) { + dst16[i] += size; + } + + Nap_SetS32(NA_MAKE_COMMAND(0x10, 0x00, subTrack, 0x00), (u64)pData); + Nap_SetS8(NA_MAKE_COMMAND(0x06, 0x00, subTrack, 0x02), voice); + Nap_SetS8(NA_MAKE_COMMAND(0x06, 0x00, subTrack, 0x00), 0); +} + +extern s8 Na_InstCountGet(void) { + s8 count = Nap_ReadSubPort(0, 6, 4); + count--; + return count; +} + +extern s16 Na_MelodyGetSubTrackNum(s16 inst) { + if (inst == 0) { + return 6; + } else if (inst == 255 || inst == 254) { + return 7; + } else { + return 15; + } +} + +extern void Na_FurnitureInst(u32 id, u8 inst, u8* melody, u16 angle, f32 dist) { + s32 sub_track; + + if (id == na_melody_id_hist[current_sub_track]) { + sub_track = current_sub_track; + } else { + s32 tmp; + if (current_sub_track == 0) { + tmp = 1; + } else { + tmp = 0; + } + + sub_track = tmp; + } + + na_melody_id_hist[sub_track] = id; + current_sub_track = sub_track; + sub_track += 14; + u8 pan = angle2pan(angle, dist); + f32 vol = distance2vol(dist); + + Nap_SetS32(NA_MAKE_COMMAND(0x10, 0x02, sub_track, 0x00), (u64)melody); + Nap_SetS8(NA_MAKE_COMMAND(0x06, 0x02, sub_track, 0x02), inst); + Nap_SetS8(NA_MAKE_COMMAND(0x06, 0x02, sub_track, 0x00), 0); + Nap_SetF32(NA_MAKE_COMMAND(0x01, 0x02, sub_track, 0x00), vol); + Nap_SetS8(NA_MAKE_COMMAND(0x03, 0x02, sub_track, 0x00), pan); +} + +extern void Na_MelodyVoice(s16 voice) { + static const u8 melody[16] = { 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14 }; + + Na_MelodyStart(voice, 6, melody); + Nap_SetF32(NA_MAKE_COMMAND(0x01, 0x00, 0x06, 0x00), 1.3f); +} From 7f5cb2934b61f2eca430513d44be9753dad1c6ef Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Thu, 6 Jun 2024 17:05:18 -0400 Subject: [PATCH 014/234] Implement sub & group structs --- include/jaudio_NES/audiostruct.h | 172 ++++++++++++++++++++++++++----- src/static/jaudio_NES/melody.c | 4 +- src/static/jaudio_NES/rhythm.c | 19 ++-- 3 files changed, 158 insertions(+), 37 deletions(-) diff --git a/include/jaudio_NES/audiostruct.h b/include/jaudio_NES/audiostruct.h index 3b436a10..e3e730bb 100644 --- a/include/jaudio_NES/audiostruct.h +++ b/include/jaudio_NES/audiostruct.h @@ -31,6 +31,11 @@ struct chnode_ { /* 0x30 */ link globalReleaseWait; }; +/* forward declared */ +typedef struct note_ note; +typedef struct channel_ channel; +typedef struct group_ group; + /* sizeof(struct AudioPort_) == 0x8 */ typedef struct AudioPort_ { /* 0x00 */ u8 cmd; @@ -151,7 +156,7 @@ typedef struct drvparam_ { /* sizeof(envdat) == 0x04 */ typedef struct envdat_ { - /* 0x00 */ s16 key; + /* 0x00 */ s16 delay; /* 0x02 */ s16 value; } envdat; @@ -169,26 +174,152 @@ typedef struct envp_ { /* 0x1C */ envdat* pEnvData; } envp; +/* sizeof(env) == 0x08 */ +typedef struct env_ { + /* 0x00 */ u8 decay_idx; + /* 0x01 */ u8 sustain; + /* 0x04 */ envdat* envelope; +} env; + +/* sizeof(vibparam) == 0x0E */ +typedef struct vibparam_ { + /* 0x00 */ u16 rate_start; + /* 0x02 */ u16 depth_start; + /* 0x04 */ u16 rate_target; + /* 0x06 */ u16 depth_target; + /* 0x08 */ u16 rate_change_delay; + /* 0x0A */ u16 depth_change_delay; + /* 0x0C */ u16 delay; +} vibparam; + +typedef struct voicetable_ { + +} voicetable; + +/* sizeof(seqplayer) == 0x1C */ +typedef struct seqplayer_ { + /* 0x00 */ u8* pc; + /* 0x04 */ u8* stack[4]; + /* 0x14 */ u8 remaining_loop_iters[4]; + /* 0x18 */ u8 depth; + /* 0x19 */ s8 value; +} seqplayer; + +/* SubTrack struct */ +/* sizeof(sub) == 0xE0 */ +typedef struct sub_ { + /* 0x00 */ u8 enabled : 1; + /* 0x00 */ u8 finished : 1; + /* 0x00 */ u8 stop_script : 1; + /* 0x00 */ u8 muted : 1; + /* 0x00 */ u8 has_instrument : 1; + /* 0x00 */ u8 stereo_effects : 1; + /* 0x00 */ u8 large_notes : 1; + /* 0x00 */ u8 unused : 1; + + union { + struct { + /* 0x01 */ u8 frequency_scale : 1; + /* 0x01 */ u8 volume : 1; + /* 0x01 */ u8 pan : 1; + } flags; + /* 0x01 */ u8 as_byte; + } changes; + + /* 0x02 */ u8 note_alloc_policy; + /* 0x03 */ u8 mute_flags; + /* 0x04 */ u8 target_reverb_vol; + /* 0x05 */ u8 note_priority; + /* 0x06 */ u8 priority2; + /* 0x07 */ u8 inst_id; + /* 0x08 */ u8 reverb_idx; + /* 0x09 */ u8 book_ofs; + /* 0x0A */ u8 new_pan; + /* 0x0B */ u8 pan_channel_weight; + /* 0x0C */ u8 gain; + /* 0x0D */ u8 velocity_random_variance; + /* 0x0E */ u8 gate_time_random_variance; + /* 0x0F */ u8 comb_filter_size; + /* 0x10 */ u8 surround_effect_idx; + /* 0x11 */ u8 channel_idx; + /* 0x12 */ vibparam vibrato_params; + /* 0x20 */ u16 delay; + /* 0x22 */ u16 comb_filter_gain; + /* 0x24 */ u16 unk24; + /* 0x26 */ s16 inst_or_wave; + /* 0x28 */ s16 transposition; + /* 0x2C */ f32 volume_scale; + /* 0x30 */ f32 volume; + /* 0x34 */ s32 pan; + /* 0x38 */ f32 applied_volume; + /* 0x3C */ f32 frequency_scale; + /* 0x40 */ u8 (*dyn_tbl)[][2]; + /* 0x44 */ channel* channel; + /* 0x48 */ note* note; + /* 0x4C */ voicetable* voicetable; + /* 0x50 */ group* group; + /* 0x54 */ struct note_* note_layers[4]; + /* 0x64 */ seqplayer seq_player; + /* 0x80 */ env asdr_env; + /* 0x88 */ chnode channel_node; + /* 0xC8 */ s8 seq_script_io[8]; + /* 0xD0 */ u8* sfx_state; + /* 0xD4 */ s16* filter; + /* 0xD8 */ phase stereo_phase; + /* 0xDC */ s32 sample_start_pos; +} sub; + /* sizeof(group) == 0x160 */ -typedef struct group_ { +struct group_ { struct flags_ { - /* 0x000 */ u32 flag0 : 1; + /* 0x000 */ u8 enabled : 1; + /* 0x000 */ u8 finished : 1; + /* 0x000 */ u8 muted : 1; + /* 0x000 */ u8 sequence_dma_in_progress : 1; + /* 0x000 */ u8 bank_dma_in_progress : 1; + /* 0x000 */ u8 recalculate_volume : 1; + /* 0x000 */ u8 stop_seq_script : 1; + /* 0x000 */ u8 apply_bend : 1; } flags; - /* 0x004 */ u8 state; - /* 0x005 */ u8 unk4; - /* 0x006 */ u8 unk5; + /* 0x001 */ u8 state; + /* 0x002 */ u8 note_alloc_policy; + /* 0x003 */ u8 mute_flags; + /* 0x004 */ u8 seq_id; + /* 0x005 */ u8 default_bank; + /* 0x006 */ u8 unk006; + /* 0x007 */ s8 group_idx; /* 0x008 */ u16 tempo; - /* 0x00A */ u8 unkA; - /* 0x00B */ u8 unkB; - /* 0x00C */ u8 unkC[0x018 - 0x00C]; - /* 0x018 */ u16* unk18; - /* 0x01C */ u8 unk1C[0x0E0 - 0x01C]; - /* 0x0E0 */ int unkE0; - /* 0x0E4 */ u8 E4[0x77]; - /* 0x15B */ s8 unk15B; - /* 0x15C */ s8 unk15C; -} group; + /* 0x00A */ u16 tempo_acceleration; + /* 0x00C */ s16 tempo_change; + /* 0x00E */ s16 transposition; + /* 0x010 */ u16 delay; + /* 0x012 */ u16 fade_timer; + /* 0x014 */ u16 stored_fade_timer; + /* 0x016 */ u16 unk016; + /* 0x018 */ u8* seq_data; + /* 0x01C */ f32 fade_volume; + /* 0x020 */ f32 fade_velocity; + /* 0x024 */ f32 volume; + /* 0x028 */ f32 mute_volume_scale; + /* 0x02C */ f32 fade_volume_scale; + /* 0x030 */ f32 applied_fade_volume; + /* 0x034 */ f32 bend; + /* 0x038 */ sub* subtracks[16]; + /* 0x078 */ seqplayer seq_player; + /* 0x094 */ u8* short_note_velocity_tbl; + /* 0x098 */ u8* short_note_gate_time_tbl; + /* 0x09C */ u8 note_pool[0x40]; /* TODO: this is a struct according to MM decomp */ + /* 0x0DC */ s32 skip_ticks; + /* 0x0E0 */ s32 script_counter; /* is u32 in MM decomp */ + /* 0x0E4 */ u8 unkE4[0x158 - 0x0E4]; + /* 0x158 */ s8 seq_script_io[8]; +}; + +/* sizeof(note) == 0x90 */ +struct note_ { + u8 _00[0x90 - 0x00]; +}; /* sizeof(AudioGlobals) == 0x92b0 */ typedef struct AudioGlobals { @@ -203,13 +334,6 @@ typedef struct AudioGlobals { /* 0x3E68 */ u8 unk3E68[0x5448]; } AudioGlobals; -/* sizeof(sub) >= 0xCD */ -typedef struct sub_ { - /* 0x00 */ s8 unk0[0xCB]; - /* 0xCB */ s8 unkCB; - /* 0xCD */ s8 unkCC; -} sub; - typedef union SOUNDID_ { struct { u8 wave_id; @@ -221,8 +345,6 @@ typedef union SOUNDID_ { u32 uint32; } SOUNDID; -typedef struct note_ note; - #ifdef __cplusplus } #endif diff --git a/src/static/jaudio_NES/melody.c b/src/static/jaudio_NES/melody.c index 2532ccf9..142a5777 100644 --- a/src/static/jaudio_NES/melody.c +++ b/src/static/jaudio_NES/melody.c @@ -640,7 +640,7 @@ static void Na_MelodyStart(u16 voice, s16 subTrack, const u8* pData) { u8* dst; s16 seq_idx = 248; - u16 size = AG.groups[0].unk18[2]; + u16 size = ((u16*)AG.groups[0].seq_data)[2]; switch (subTrack) { case 6: @@ -655,7 +655,7 @@ static void Na_MelodyStart(u16 voice, s16 subTrack, const u8* pData) { u8* src; - dst = (u8*)AG.groups[0].unk18 + size; + dst = AG.groups[0].seq_data + size; ArcHeader* seq_header = AG.seq_header; size_t seq_size = melody_seq_size[voice]; int medium = seq_header->entries[seq_idx].medium; diff --git a/src/static/jaudio_NES/rhythm.c b/src/static/jaudio_NES/rhythm.c index 5c10f629..53055192 100644 --- a/src/static/jaudio_NES/rhythm.c +++ b/src/static/jaudio_NES/rhythm.c @@ -19,7 +19,6 @@ typedef enum RythmBuffer_State { NA_RHYTHM_BUFFER_STARTED, } RythmBuffer_State; - static s16 rhythm_beat_type = -1; static NA_RHYTHM_BUFFER rhythm_buffer[14]; @@ -138,7 +137,7 @@ extern void Na_RhythmAllStop() { } static s16 Na_GetRhythmBeatType(void) { - if (AG.groups[sou_now_bgm_handle].flags.flag0 != 0) { + if (AG.groups[sou_now_bgm_handle].flags.enabled != 0) { rhythm_beat_type = Nap_ReadGrpPort(sou_now_bgm_handle, 1); } return rhythm_beat_type; @@ -204,13 +203,13 @@ static s8 Na_GetRhythmSeNum(s8 num, sub* sub) { u32 rand; if (num == 0) { - num = 16 - sub->unkCC; + num = 16 - sub->seq_script_io[4]; if (num == 16) { num = 0; } } else { rand = Nap_GetRandom(); - switch (sub->unkCB) { + switch (sub->seq_script_io[3]) { case 0x14: case 0x15: case 0x16: @@ -351,7 +350,7 @@ extern void Na_SetRhythmInfo(TempoBeat_c* tempo) { static void tempo_adjust(group* group) { int tempo = (AG.groups[2].tempo / 48); int newTempo; - if (AG.groups[sou_now_bgm_handle].flags.flag0 != 0) { + if (AG.groups[sou_now_bgm_handle].flags.enabled != 0) { newTempo = (AG.groups[sou_now_bgm_handle].tempo / 48); if (tempo > newTempo) { @@ -405,7 +404,7 @@ static s8 Na_RhythmGrpProcess(s8 arg0, group* group) { } pre_frame_per_step = r29; - if (AG.groups[sou_now_bgm_handle].flags.flag0 != 0) { + if (AG.groups[sou_now_bgm_handle].flags.enabled != 0) { int r25 = Nap_ReadGrpPort(sou_now_bgm_handle, 0); r30 = r25 - r27; } else { @@ -420,7 +419,7 @@ static s8 Na_RhythmGrpProcess(s8 arg0, group* group) { } if (r30 > 1 || r30 < -1) { - if (AG.groups[2].unkE0 % 2 != 0) { + if (AG.groups[2].script_counter % 2 != 0) { r31++; } } else { @@ -432,8 +431,8 @@ static s8 Na_RhythmGrpProcess(s8 arg0, group* group) { ret = 0; } - group->unk15B = r31; - group->unk15C = (s8)((s32)(r31 * 0x64) / r29); - + group->seq_script_io[3] = r31; + group->seq_script_io[4] = (s8)((s32)(r31 * 0x64) / r29); + return ret; } From 14380e22b1907af86794f9bfd2f95c2d5c3baaa9 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Fri, 7 Jun 2024 20:01:51 +0200 Subject: [PATCH 015/234] link radio --- config/dol_slices.yml | 3 +++ configure.py | 1 + include/jaudio_NES/kappa.h | 2 +- include/jaudio_NES/radio.h | 8 ++++++- src/static/jaudio_NES/radio.c | 43 +++++++++++++++++++++++++++++++++++ 5 files changed, 55 insertions(+), 2 deletions(-) create mode 100644 src/static/jaudio_NES/radio.c diff --git a/config/dol_slices.yml b/config/dol_slices.yml index 0654df36..0abd3f02 100644 --- a/config/dol_slices.yml +++ b/config/dol_slices.yml @@ -48,6 +48,9 @@ jaudio_NES/rhythm.c: .sdata: [0x80217bd0, 0x80217bd8] .sbss: [0x802183a0, 0x802183b0] .sdata2: [0x80218d60, 0x80218d78] +jaudio_NES/radio.c: + .text: [0x800165ec, 0x8001676c] + .sdata2: [0x80218d78, 0x80218d88] jaudio_NES/aictrl.c: .text: [0x80017e80, 0x80018640] .rodata: [0x800aa500, 0x800aa518] diff --git a/configure.py b/configure.py index 8feee686..c050d087 100644 --- a/configure.py +++ b/configure.py @@ -635,6 +635,7 @@ JAUDIO_FUNC_ALIGN_32_TUS = [ JAUDIO_USER_TUS = [ "verysimple.c", "melody.c", + "radio.c", "rhythm.c" ] diff --git a/include/jaudio_NES/kappa.h b/include/jaudio_NES/kappa.h index b38ae147..5f0a4eed 100644 --- a/include/jaudio_NES/kappa.h +++ b/include/jaudio_NES/kappa.h @@ -7,7 +7,7 @@ extern "C" { #endif -extern void Na_GetRadioCounter(void*); +extern void Na_GetKappaCounter(void*); #ifdef __cplusplus } diff --git a/include/jaudio_NES/radio.h b/include/jaudio_NES/radio.h index c2f878ff..05c15392 100644 --- a/include/jaudio_NES/radio.h +++ b/include/jaudio_NES/radio.h @@ -3,11 +3,17 @@ #include "types.h" +typedef struct radio_ { + /* 0x000 */ s8 unk0; + /* 0x004 */ f32 unk4; + /* 0x008 */ u16 tempo; +} radio; + #ifdef __cplusplus extern "C" { #endif -extern void Na_GetKappaCounter(void*); +extern s16 Na_GetRadioCounter(radio* radio); #ifdef __cplusplus } diff --git a/src/static/jaudio_NES/radio.c b/src/static/jaudio_NES/radio.c new file mode 100644 index 00000000..d171c5a4 --- /dev/null +++ b/src/static/jaudio_NES/radio.c @@ -0,0 +1,43 @@ +#include "jaudio_NES/radio.h" +#include "jaudio_NES/game64.h" +#include "jaudio_NES/audiowork.h" + + +s16 Na_GetRadioCounter(radio* radio) { + int unk16; + u16 tempo = 0; + + group* group = nullptr; + int unused = 0; + + + if (AG.groups[sou_now_bgm_handle].flags.enabled != 0 && AG.groups[sou_now_bgm_handle].seq_id == 0xDA) { + group = &(AG.groups)[sou_now_bgm_handle]; + + } else { + return -1; + } + + unk16 = group->unk016; + + (void)unused; + + if (unk16 < 0x2E8) { + radio->unk0 = 0; + } else { + unk16 -= 0x2E8; + radio->unk0 = (s8)(unk16 / 0x300); + unk16 = unk16 - (radio->unk0 * 0x300); + radio->unk0++; + } + if (radio->unk0 == 9) { + radio->unk4 = unk16 / 216.0f; + + } else { + radio->unk4 = unk16 / 768.0f; + } + + radio->tempo = AG.groups[sou_now_bgm_handle].tempo / 48; + tempo = radio->tempo; + return 0; +} \ No newline at end of file From 267be7bf3987085959f4a6489bbeaac25b7e4d0f Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Fri, 7 Jun 2024 23:21:16 -0400 Subject: [PATCH 016/234] Finish AudioGlobals struct --- include/jaudio_NES/audiocommon.h | 2 + include/jaudio_NES/audiostruct.h | 751 ++++++++++++++++++++++++++----- include/libultra/libultra.h | 11 +- include/libultra/os_pi.h | 68 +++ src/static/jaudio_NES/rhythm.c | 7 +- 5 files changed, 728 insertions(+), 111 deletions(-) create mode 100644 include/libultra/os_pi.h diff --git a/include/jaudio_NES/audiocommon.h b/include/jaudio_NES/audiocommon.h index aad4cf4e..0f092a1f 100644 --- a/include/jaudio_NES/audiocommon.h +++ b/include/jaudio_NES/audiocommon.h @@ -13,6 +13,8 @@ extern "C" { #define AUDIO_ARAM_SIZE 0x400000 /* 4MB */ #define AUDIO_ARAM_HEAP_SIZE 0xC000 +#define AUDIO_GROUP_MAX 5 + #define NA_MAKE_COMMAND(a0, a1, a2, a3) \ (u32)((((a0) & 0xFF) << 24) | (((a1) & 0xFF) << 16) | (((a2) & 0xFF) << 8) | (((a3) & 0xFF) << 0)) diff --git a/include/jaudio_NES/audiostruct.h b/include/jaudio_NES/audiostruct.h index e3e730bb..c64ebb31 100644 --- a/include/jaudio_NES/audiostruct.h +++ b/include/jaudio_NES/audiostruct.h @@ -4,6 +4,7 @@ #include "types.h" #include "jaudio_NES/audiocommon.h" #include "PR/abi.h" +#include "libultra/libultra.h" #ifdef __cplusplus extern "C" { @@ -17,7 +18,7 @@ struct link_ { /* 0x00 */ link* next; /* 0x04 */ link* prev; union { - /* 0x08 */ int numAfter; /* when link is head */ + /* 0x08 */ s32 numAfter; /* when link is head */ /* 0x08 */ void* pData; /* when link is node */ }; /* 0x0C */ chnode* pNode; @@ -75,69 +76,229 @@ typedef struct ArcHeader_ { /* 0x10 */ ArcEntry entries[]; /* variable size */ } ArcHeader; -/* sizeof(AutoHeapstrc) == 0xC */ -typedef struct AutoHeapstrc_ { - /* 0x00 */ int seqLen; - /* 0x04 */ int bankLen; - /* 0x08 */ int waveLen; -} AutoHeapstrc; +/* sizeof(adpcmloop) == 0x10|0x30*/ +typedef struct adpcmloop_ { + /* 0x00 */ u32 loop_start; + /* 0x04 */ u32 loop_end; + /* 0x08 */ u32 count; + /* 0x0C */ u32 sample_end; + /* 0x10 */ s16 predictor_state[16]; /* exists count > 0*/ +} adpcmloop; -/* sizeof(DataHeapstrc) == 0x8 */ -typedef struct DataHeapstrc_ { - /* 0x00 */ int dataLen; - /* 0x04 */ int autoLen; -} DataHeapstrc; +/* sizeof(adpcmbook) == [0x8, 0x8+n]*/ +typedef struct adpcmbook_ { + /* 0x00 */ s32 order; + /* 0x04 */ s32 n_predictors; + /* 0x08 */ s16 codebook[0]; /* variable length */ +} adpcmbook; -/* sizeof(delay) == 0x30 */ -typedef struct delay_ { - /* 0x00 */ u8 _00[0x30 - 0x00]; /* TODO */ -} delay; +typedef struct smzwavetable_ { + /* 0x00 */ u32 bit31 : 1; + /* 0x00 */ u32 codec : 3; + /* 0x00 */ u32 medium : 2; + /* 0x00 */ u32 bit26 : 1; + /* 0x00 */ u32 is_relocated : 1; + /* 0x00 */ u32 size : 24; + /* 0x04 */ u8* sample; + /* 0x08 */ adpcmloop* loop; + /* 0x0C */ adpcmbook* book; +} smzwavetable; -/* sizeof(commonch) == 0x20 */ -typedef struct commonch_ { - /* 0x00 */ u8 _00; - /* 0x01 */ u8 _01; - /* 0x02 */ u8 _02; - /* 0x03 */ u8 _03; - /* 0x04 */ u8 _04; - /* 0x05 */ u8 _05; - /* 0x06 */ u8 _06; - /* 0x07 */ u8 _07; - /* 0x08 */ u16 _08; - /* 0x0A */ u16 _0A; - /* 0x0C */ u16 _0C; - /* 0x0E */ u16 _0E; - /* 0x10 */ void* _10; - /* 0x14 */ int _14; - /* 0x18 */ u8 _18; - /* 0x19 */ u8 _19; - /* 0x1A */ u8 _1A; - /* 0x1B */ u8 _1B[4]; -} commonch; - -/* sizeof(driverch) == 0x18 */ -typedef struct driverch_ { - /* 0x00 */ u8 _00; - /* 0x01 */ u8 _01; - /* 0x02 */ u8 _02; - /* 0x03 */ u8 _03; - /* 0x04 */ u8 _04; - /* 0x05 */ u8 _05; - /* 0x06 */ u8 _06; - /* 0x07 */ u8 _07; - /* 0x08 */ u16 _08; - /* 0x0A */ u16 _0A; - /* 0x0C */ u32 _0C; - /* 0x10 */ u8* _10; - /* 0x14 */ s16 _14; - /* 0x16 */ s16 _16; -} driverch; +/* sizeof(wtstr) == 0x08 */ +typedef struct wtstr_ { + /* 0x00 */ smzwavetable* wavetable; + /* 0x04 */ f32 tuning; +} wtstr; /* sizeof(phase) == 0x01 */ typedef struct phase_ { /* 0x00 */ u8 _00; } phase; +/* sizeof(sweep) == 0x0C */ +typedef struct sweep_ { + /* 0x00 */ u8 mode; + /* 0x02 */ u16 current; + /* 0x04 */ u16 speed; + /* 0x08 */ f32 extent; +} sweep; + +/* sizeof(vibparam) == 0x0E */ +typedef struct vibparam_ { + /* 0x00 */ u16 rate_start; + /* 0x02 */ u16 depth_start; + /* 0x04 */ u16 rate_target; + /* 0x06 */ u16 depth_target; + /* 0x08 */ u16 rate_change_delay; + /* 0x0A */ u16 depth_change_delay; + /* 0x0C */ u16 delay; +} vibparam; + +/* sizeof(tmtable) == 0x1C */ +typedef struct tmtable_ { + /* 0x00 */ vibparam* vibrato_params; + /* 0x04 */ u32 time; + /* 0x08 */ s16* curve; + /* 0x0C */ f32 depth; + /* 0x10 */ f32 rate; + /* 0x14 */ u8 active; + /* 0x16 */ u16 rate_change_timer; + /* 0x18 */ u16 depth_change_timer; + /* 0x1A */ u16 delay; +} tmtable; + +/* sizeof(envdat) == 0x04 */ +typedef struct envdat_ { + /* 0x00 */ s16 delay; + /* 0x02 */ s16 value; +} envdat; + +/* sizeof(envp) == 0x20 */ +typedef struct envp_ { + /* 0x00 */ u8 unused : 1; + /* 0x00 */ u8 hang : 1; + /* 0x00 */ u8 decay : 1; + /* 0x00 */ u8 release : 1; + /* 0x00 */ u8 status : 1; + + /* 0x01 */ u8 envelope_idx; + /* 0x02 */ s16 delay; + /* 0x04 */ f32 sustain; + /* 0x08 */ f32 velocity; + /* 0x0C */ f32 fadeout_velocity; + /* 0x10 */ f32 current; + /* 0x14 */ f32 target; + /* 0x18 */ f32 _18; + /* 0x1C */ envdat* pEnvData; +} envp; + +/* sizeof(env) == 0x08 */ +typedef struct env_ { + /* 0x00 */ u8 decay_idx; + /* 0x01 */ u8 sustain; + /* 0x04 */ envdat* envelope; +} env; + +/* sizeof(commonch) == 0x20 */ +typedef struct commonch_ { + /* 0x00 */ vu8 enabled : 1; + /* 0x00 */ u8 needs_init : 1; + /* 0x00 */ u8 finished : 1; + /* 0x00 */ u8 unused : 1; + /* 0x00 */ u8 strong_right : 1; + /* 0x00 */ u8 strong_left : 1; + /* 0x00 */ u8 strong_reverb_right : 1; + /* 0x00 */ u8 storng_reverb_left : 1; + + /* 0x01 */ u8 reverb_idx : 3; + /* 0x01 */ u8 book_ofs : 2; + /* 0x01 */ u8 is_synth_wave : 1; + /* 0x01 */ u8 has_two_parts : 1; + /* 0x01 */ u8 use_haas_effect : 1; + + /* 0x02 */ u8 gain; + /* 0x03 */ u8 haas_effect_left_delay_size; + /* 0x04 */ u8 haas_effect_right_delay_size; + /* 0x05 */ u8 target_reverb_volume; + /* 0x06 */ u8 harmonic_idx_cur_and_prev; + /* 0x07 */ u8 comb_filter_size; + /* 0x08 */ u16 target_volume_left; + /* 0x0A */ u16 target_volume_right; + /* 0x0C */ u16 frequency_fixed_point; + /* 0x0E */ u16 comb_filter_gain; + union { + /* 0x10 */ wtstr* tuned_sample; + /* 0x10 */ s16* wave_sample_addr; // for synth waves + }; + /* 0x14 */ s16* filter; + /* 0x18 */ u8 _18; + /* 0x19 */ u8 surround_effect_idx; + /* 0x1A */ u8 _1A; + /* 0x1B */ u8 _1B[4]; +} commonch; + +/* TODO: see if this has a name anywhere */ +/* sizeof(synthparams) == 0x2E0 */ +typedef struct synthparams_ { + /* 0x000 */ s16 adpcm_state[16]; + /* 0x020 */ s16 final_resample_state[16]; + /* 0x040 */ s16 filter_state[32]; + /* 0x080 */ s16 unused_state[16]; + /* 0x0A0 */ s16 haas_effect_delay_state[32]; + /* 0x0E0 */ s16 comb_filter_state[128]; + /* 0x1E0 */ s16 surround_effect_state[128]; +} synthparams; + +/* sizeof(driverch) == 0x20 */ +typedef struct driverch_ { + /* 0x00 */ u8 at_loop_point : 1; + /* 0x00 */ u8 stop_loop : 1; + /* 0x01 */ u8 sample_dma_idx; + /* 0x02 */ u8 prev_haas_effect_left_delay_size; + /* 0x03 */ u8 prev_haas_effect_right_delay_size; + /* 0x04 */ u8 cur_reverb_vol; + /* 0x05 */ u8 num_parts; + /* 0x06 */ u8 comb_filter_needs_init; + /* 0x07 */ u8 vel_conv_table_idx; + /* 0x08 */ u16 sample_pos_fractional_part; + /* 0x0A */ u16 sound_effect_gain; + /* 0x0C */ s32 sample_pos_integer_part; + /* 0x10 */ synthparams* synth_params; + /* 0x14 */ s16 current_volume_left; + /* 0x16 */ s16 current_volume_right; + /* 0x18 */ u8 _18[8]; // unused? +} driverch; + +/* TODO: madeup name, see if there's an exposde one */ +/* sizeof(playbackparams) == 0x18 */ +typedef struct playbackparams_ { + /* 0x00 */ u8 target_reverb_volume; + /* 0x01 */ u8 gain; + /* 0x02 */ u8 pan; + /* 0x03 */ u8 surround_effect_idx; + /* 0x04 */ phase stereo_phase; + /* 0x05 */ u8 comb_filter_size; + /* 0x06 */ u16 comb_filter_gain; + /* 0x08 */ f32 frequency_scale; + /* 0x0C */ f32 velocity; + /* 0x10 */ s16* filter; + /* 0x14 */ s16* filter_buf; +} playbackparams; + +/* TODO: madeup name, see if there's an exposed one */ +/* sizeof(playbackch) == 0xA0 */ +typedef struct playbackch_ { + /* 0x00 */ u8 priority; + /* 0x01 */ u8 wave_id; + /* 0x02 */ u8 harmonic_index; + /* 0x03 */ u8 bank_id; + /* 0x04 */ u8 status; + /* 0x05 */ u8 stereo_headset_effects; + /* 0x06 */ s16 adsr_volume_scale_unused; + /* 0x08 */ f32 portamento_frequency_scale; + /* 0x0C */ f32 vibrato_frequency_scale; + /* 0x10 */ note* wanted_parent_note; + /* 0x14 */ note* current_parent_note; + /* 0x18 */ note* previous_parent_note; + /* 0x1C */ playbackparams params; + /* 0x34 */ envp adsr_envp; + /* 0x54 */ sweep portamento_sweep; + /* 0x60 */ tmtable vibrato_tmtable; + /* 0x7C */ s32 _7C; + /* 0x80 */ u8 _80; + /* 0x84 */ u32 start_sample_pos; + /* 0x88 */ u8 _88[0x18]; +} playbackch; + +/* sizeof(channel) == 0x100 */ +struct channel_ { + /* 0x00 */ link link; + /* 0x10 */ driverch driver_ch; + /* 0x30 */ playbackch playback_ch; + /* 0xD0 */ commonch common_ch; + /* 0xF0 */ u8 _F0[0x10]; +}; + /* sizeof(drvparam) == 0x1C */ typedef struct drvparam_ { /* 0x00 */ u8 _00; @@ -154,48 +315,101 @@ typedef struct drvparam_ { /* 0x1A */ u16 _1A; } drvparam; -/* sizeof(envdat) == 0x04 */ -typedef struct envdat_ { - /* 0x00 */ s16 delay; - /* 0x02 */ s16 value; -} envdat; - -/* sizeof(envp) == 0x20 */ -typedef struct envp_ { - /* 0x00 */ u8 state; - /* 0x01 */ u8 envelope_table_row; - /* 0x02 */ s16 key; - /* 0x04 */ f32 min_vol; - /* 0x08 */ f32 attack; - /* 0x0C */ f32 decay_release; - /* 0x10 */ f32 volume; - /* 0x14 */ f32 target_volume; - /* 0x18 */ f32 _18; - /* 0x1C */ envdat* pEnvData; -} envp; - -/* sizeof(env) == 0x08 */ -typedef struct env_ { - /* 0x00 */ u8 decay_idx; - /* 0x01 */ u8 sustain; - /* 0x04 */ envdat* envelope; -} env; - -/* sizeof(vibparam) == 0x0E */ -typedef struct vibparam_ { - /* 0x00 */ u16 rate_start; - /* 0x02 */ u16 depth_start; - /* 0x04 */ u16 rate_target; - /* 0x06 */ u16 depth_target; - /* 0x08 */ u16 rate_change_delay; - /* 0x0A */ u16 depth_change_delay; - /* 0x0C */ u16 delay; -} vibparam; - +/* sizeof(voicetable) == 0x20 */ typedef struct voicetable_ { - + /* 0x00 */ u8 is_relocated; + /* 0x01 */ u8 normal_range_low; + /* 0x02 */ u8 normal_range_high; + /* 0x03 */ u8 adsr_decay_idx; + /* 0x04 */ envdat* envelope; + /* 0x08 */ wtstr low_pitch_tuned_sample; + /* 0x10 */ wtstr normal_pitch_tuned_sample; + /* 0x18 */ wtstr high_pitch_tuned_sample; } voicetable; +/* sizeof(percvoicetable) == 0x10 */ +typedef struct percvoicetable_ { + /* 0x00 */ u8 adsr_decay_idx; + /* 0x01 */ u8 pan; + /* 0x02 */ u8 is_relocated; + /* 0x04 */ wtstr tuned_sample; + /* 0x0C */ envdat* envelope; +} percvoicetable; + +/* sizeof(veffvoicetable) == 0x08 */ +typedef struct veffvoicetable_ { + /* 0x00 */ wtstr tuned_sample; +} veffvoicetable; + +/* sizeof(voiceinfo) == 0x14 */ +typedef struct voiceinfo_ { + /* 0x00 */ u8 num_instruments; + /* 0x01 */ u8 num_drums; + /* 0x02 */ u8 wave_bank_id0; + /* 0x03 */ u8 wave_bank_id1; + /* 0x04 */ u16 num_sfx; + /* 0x08 */ voicetable** instruments; + /* 0x0C */ percvoicetable** percussion; + /* 0x10 */ veffvoicetable* effects; +} voiceinfo; + +/* sizeof(delayparam) == 0x1C */ +typedef struct delayparam_ { + /* 0x00 */ s16 n_samples_after_downsampling; + /* 0x02 */ s16 n_samples; + /* 0x04 */ s16* to_down_sample_left; + /* 0x08 */ s16* to_down_sample_right; + /* 0x0C */ s32 start_pos; + /* 0x10 */ s16 size; + /* 0x12 */ s16 wrapped_size; + /* 0x14 */ u16 load_resample_pitch; + /* 0x16 */ u16 save_resample_pitch; + /* 0x18 */ u16 save_resample_num_samples; +} delayparam; + +/* sizeof(delay) == 0x2D0 */ +typedef struct delay_ { + /* 0x000 */ u8 resample_flags; + /* 0x001 */ u8 use_reverb; + /* 0x002 */ u8 frames_to_ignore; + /* 0x003 */ u8 cur_frame; + /* 0x004 */ u8 downsample_rate; + /* 0x005 */ s8 mix_reverb_idx; + /* 0x006 */ u16 delay_num_samples; + /* 0x008 */ s16 mix_reverb_strength; + /* 0x00A */ s16 volume; + /* 0x00C */ u16 decay_ratio; + /* 0x00E */ u16 downsample_pitch; + /* 0x010 */ s16 leak_rtl; + /* 0x012 */ s16 leak_ltl; + /* 0x014 */ u16 sub_delay; + /* 0x016 */ s16 sub_volume; + /* 0x018 */ u8 resample_effect_on; + /* 0x019 */ s8 resample_effect_extra_samples; + /* 0x01A */ u16 resample_effect_load_unk; + /* 0x01C */ u16 resample_effect_save_unk; + /* 0x01E */ u8 delay_num_samples_after_downsampling; + /* 0x020 */ s32 next_reverb_buf_pos; + /* 0x024 */ s32 delay_num_samples_unk; + /* 0x028 */ s16* left_reverb_buf; + /* 0x02C */ s16* right_reverb_buf; + /* 0x030 */ s16* left_load_resample_buf; + /* 0x034 */ s16* right_load_resample_buf; + /* 0x038 */ s16* left_save_resample_buf; + /* 0x03C */ s16* right_save_resample_buf; + /* 0x040 */ delayparam params[2][AUDIO_GROUP_MAX]; + /* 0x158 */ delayparam sub_params[2][AUDIO_GROUP_MAX]; + /* 0x270 */ s16* filter_left; + /* 0x274 */ s16* filter_right; + /* 0x278 */ s16* filter_left_init; + /* 0x27C */ s16* filter_right_init; + /* 0x280 */ s16* filter_left_state; + /* 0x284 */ s16* filter_right_state; + /* 0x288 */ wtstr tuned_sample; + /* 0x290 */ smzwavetable sample; + /* 0x2A0 */ adpcmloop adpcm_loop; +} delay; + /* sizeof(seqplayer) == 0x1C */ typedef struct seqplayer_ { /* 0x00 */ u8* pc; @@ -260,13 +474,14 @@ typedef struct sub_ { /* 0x50 */ group* group; /* 0x54 */ struct note_* note_layers[4]; /* 0x64 */ seqplayer seq_player; - /* 0x80 */ env asdr_env; + /* 0x80 */ env adsr_env; /* 0x88 */ chnode channel_node; /* 0xC8 */ s8 seq_script_io[8]; /* 0xD0 */ u8* sfx_state; /* 0xD4 */ s16* filter; /* 0xD8 */ phase stereo_phase; /* 0xDC */ s32 sample_start_pos; + /* 0xE0 */ u8 _unk[0x100 - 0x0E0]; } sub; /* sizeof(group) == 0x160 */ @@ -309,7 +524,7 @@ struct group_ { /* 0x078 */ seqplayer seq_player; /* 0x094 */ u8* short_note_velocity_tbl; /* 0x098 */ u8* short_note_gate_time_tbl; - /* 0x09C */ u8 note_pool[0x40]; /* TODO: this is a struct according to MM decomp */ + /* 0x09C */ chnode channel_node; /* 0x0DC */ s32 skip_ticks; /* 0x0E0 */ s32 script_counter; /* is u32 in MM decomp */ /* 0x0E4 */ u8 unkE4[0x158 - 0x0E4]; @@ -318,20 +533,354 @@ struct group_ { /* sizeof(note) == 0x90 */ struct note_ { - u8 _00[0x90 - 0x00]; + /* 0x00 */ u8 enabled : 1; + /* 0x00 */ u8 finished : 1; + /* 0x00 */ u8 muted : 1; + /* 0x00 */ u8 continuous : 1; + /* 0x00 */ u8 _00bit3 : 1; + /* 0x00 */ u8 ignore_drum_pan : 1; + /* 0x00 */ u8 _00bit1 : 1; + /* 0x00 */ u8 note_properties_need_init : 1; + /* 0x01 */ phase stereo_phase; + /* 0x02 */ u8 inst_or_wave; + /* 0x03 */ u8 gate_time; + /* 0x04 */ u8 semitone; + /* 0x05 */ u8 portamento_target_note; + /* 0x06 */ u8 pan; + /* 0x07 */ u8 note_pan; + /* 0x08 */ u8 surround_effect_idx; + /* 0x09 */ u8 target_reverb_volume; + + struct { + /* 0x0A */ u16 bit0 : 1; + /* 0x0A */ u16 bit1 : 1; + /* 0x0A */ u16 bit2 : 1; + /* 0x0A */ u16 use_vibrato : 1; + /* 0x0A */ u16 bit4 : 1; + /* 0x0A */ u16 bit5 : 1; + /* 0x0A */ u16 bit6 : 1; + /* 0x0A */ u16 bit7 : 1; + /* 0x0B */ u16 bit8 : 1; + /* 0x0B */ u16 bit9 : 1; + /* 0x0B */ u16 bitA : 1; + /* 0x0B */ u16 bitB : 1; + /* 0x0B */ u16 bitC : 1; + /* 0x0B */ u16 bitD : 1; + /* 0x0B */ u16 bitE : 1; + /* 0x0B */ u16 bitF : 1; + }; + + /* 0x0C */ vibparam vibrato_params; + /* 0x1A */ s16 delay; + /* 0x1C */ s16 gate_delay; + /* 0x1E */ s16 delay2; + /* 0x20 */ u16 portamento_time; + /* 0x22 */ s16 transposition; + /* 0x24 */ s16 short_note_default_delay; + /* 0x26 */ s16 last_delay; + /* 0x28 */ env adsr_env; + /* 0x30 */ sweep portamento_sweep; + /* 0x3C */ channel* channel; + /* 0x40 */ f32 frequency_scale; + /* 0x44 */ f32 bend; + /* 0x48 */ f32 velocity_square2; + /* 0x4C */ f32 velocity_square; + /* 0x50 */ f32 note_velocity; + /* 0x54 */ f32 note_frequency_scale; + /* 0x58 */ voicetable* instrument; + /* 0x5C */ wtstr* tuned_sample; + /* 0x60 */ sub* sub_track; + /* 0x64 */ seqplayer seq_player; + /* 0x80 */ link link; }; +/* sizeof(Bgloadreq) == 0x14 */ +typedef struct Bgloadreq_ { + /* 0x00 */ u32 end_and_medium_key; + /* 0x04 */ smzwavetable* sample; + /* 0x08 */ u8* ram_addr; + /* 0x0C */ u32 encoded_info; + /* 0x10 */ s32 is_free; +} Bgloadreq; + +/* sizeof(Bgload) == 0x58 */ +typedef struct Bgload_ { + /* 0x00 */ s8 status; + /* 0x01 */ s8 delay; + /* 0x02 */ s8 medium; + /* 0x04 */ u8* ram_addr; + /* 0x08 */ u32 current_device_addr; + /* 0x0C */ u8* current_ram_addr; + /* 0x10 */ size_t bytes_remaining; + /* 0x14 */ size_t chunk_size; + /* 0x18 */ s32 unk_medium_param; + /* 0x1C */ u32 ret_msg; + /* 0x20 */ OSMesgQueue* ret_mq; + /* 0x24 */ OSMesgQueue mq; + /* 0x3C */ OSMesg msg[1]; + /* 0x40 */ OSIoMesg io_mesg; +} Bgload; + +/* sizeof(lpscache) == 0x64 */ +typedef struct lpscache_ { + /* 0x00 */ u8 medium; + /* 0x01 */ u8 seq_or_bank_id; + /* 0x02 */ u16 inst_id; + /* 0x04 */ s32 unk_medium_param; + /* 0x08 */ u32 current_device_addr; + /* 0x0C */ u8* current_ram_addr; + /* 0x10 */ u8* ram_addr; + /* 0x14 */ s32 status; + /* 0x18 */ size_t bytes_remaining; + /* 0x1C */ s8* is_done; + /* 0x20 */ smzwavetable sample; + /* 0x30 */ OSMesgQueue mq; + /* 0x48 */ OSMesg msg[1]; + /* 0x4C */ OSIoMesg io_mesg; +} lpscache; + +/* sizeof(WaveLoad) == 0x10 */ +typedef struct WaveLoad_ { + /* 0x00 */ u8* ram_addr; + /* 0x04 */ u32 device_addr; + /* 0x08 */ u16 size_unused; + /* 0x0A */ u16 size; + /* 0x0C */ u8 unused; + /* 0x0D */ u8 reuse_idx; + /* 0x0E */ u8 time_to_live; +} WaveLoad; + +/* sizeof(audioparams) == 0x28 */ +typedef struct audioparams_ { + /* 0x00 */ s16 spec; + /* 0x02 */ u16 sampling_frequency; + /* 0x04 */ u16 ai_sampling_frequency; + /* 0x06 */ s16 num_samples_per_frame_target; + /* 0x08 */ s16 num_samples_per_frame_max; + /* 0x0A */ s16 num_samples_per_frame_min; + /* 0x0C */ s16 updates_per_frame; + /* 0x0E */ s16 num_samples_per_update; + /* 0x10 */ s16 num_samples_per_update_max; + /* 0x12 */ s16 num_samples_per_update_min; + /* 0x14 */ s16 num_playing_sequences; + /* 0x18 */ f32 resample_rate; + /* 0x1C */ f32 updates_per_frame_inverse; + /* 0x20 */ f32 updates_per_frame_inverse_scaled; + /* 0x24 */ f32 updates_per_frame_scaled; +} audioparams; + +/* sizeof(StayHeapstrc) == 0x0C */ +typedef struct StayHeapstrc_ { + /* 0x00 */ size_t seq_heap_size; + /* 0x04 */ size_t bank_heap_size; + /* 0x08 */ size_t wave_heap_size; +} StayHeapstrc; + +/* sizeof(DataHeapstrc) == 0x08 */ +typedef struct DataHeapstrc_ { + /* 0x00 */ size_t data_size; + /* 0x04 */ size_t auto_size; +} DataHeapstrc; + +/* sizeof(AutoHeapstrc) == 0xC */ +typedef struct AutoHeapstrc_ { + /* 0x00 */ size_t seqLen; + /* 0x04 */ size_t bankLen; + /* 0x08 */ size_t waveLen; +} AutoHeapstrc; + +/* sizeof(AudioHeapstrc) == 0x10 */ +typedef struct AudioHeapstrc_ { + /* 0x00 */ size_t misc_heap_size; + /* 0x04 */ size_t unused0; + /* 0x08 */ size_t unused1; + /* 0x0C */ size_t cache_heap_size; +} AudioHeapstrc; + +/* sizeof(SwMember) == 0x14 */ +typedef struct SwMember_ { + /* 0x00 */ u8 in_use; + /* 0x01 */ s8 original_medium; + /* 0x02 */ u8 sample_bank_id; + /* 0x03 */ u8 _pad[5]; + /* 0x08 */ u8* allocated_addr; + /* 0x0C */ void* sample_addr; + /* 0x10 */ size_t size; +} SwMember; + +/* sizeof(SwHeap) == 0x298 */ +typedef struct SwHeap_ { + /* 0x000 */ ALHeap heap; + /* 0x004 */ SwMember entries[32]; + /* 0x294 */ s32 num_entries; +} SwHeap; + +/* TODO: this needs a better name, I don't see any functions which reference it */ +/* sizeof(ALHeapEntry) == 0xC */ +typedef struct ALHeapEntry_ { + /* 0x00 */ u8* addr; + /* 0x04 */ size_t size; + /* 0x08 */ s16 table_type; + /* 0x0A */ s16 id; +} ALHeapEntry; + +/* sizeof(SZStay) == 0xD8 */ +typedef struct SZStay_ { + /* 0x00 */ u32 num_entries; + /* 0x04 */ ALHeap heap; + /* 0x18 */ ALHeapEntry entries[16]; +} SZStay; + +/* sizeof(SZAuto) == 0x30 */ +typedef struct SZAuto_ { + /* 0x00 */ u32 use_entry_idx; + /* 0x04 */ ALHeap heap; + /* 0x18 */ ALHeapEntry entries[2]; +} SZAuto; + +/* sizeof(SZHeap) == 0x11C */ +typedef struct SZHeap_ { + /* 0x000 */ SZStay stay_heap; + /* 0x0D8 */ SZAuto auto_heap; + /* 0x108 */ ALHeap unused_heap; /* Might be another struct with a heap, its size matches ALHeap in MM and AC */ +} SZHeap; + +typedef u32 (*SequenceCallback)(s8, sub*); + /* sizeof(AudioGlobals) == 0x92b0 */ typedef struct AudioGlobals { - /* 0x0000 */ u8 unk0[0x2850 - 0x0000]; + /* 0x0000 */ u8 _0000; + /* 0x0001 */ s8 num_synth_reverbs; + /* 0x0002 */ u16 _0002; + /* 0x0004 */ u16 _0004; + /* 0x0006 */ u8 _0006[10]; + /* 0x0010 */ s16* adpcm_code_book; + /* 0x0014 */ commonch* common_channel; + /* 0x0018 */ delay synth_delay[4]; + /* 0x0B58 */ u8 _0B58[0x30]; + /* 0x0B88 */ smzwavetable* used_samples[128]; + /* 0x0D88 */ Bgloadreq requested_samples[128]; + /* 0x1788 */ s32 num_used_samples; + /* 0x178C */ s32 num_requested_samples; + /* 0x1790 */ Bgload bgloads[16]; + /* 0x1D10 */ OSMesgQueue bgload_mq; + /* 0x1D28 */ u8 _1D28[0x40]; + /* 0x1D68 */ Bgload* current_bgload; + /* 0x1D6C */ u32 slow_load_pos; + /* 0x1D70 */ lpscache lps_cache[2]; + /* 0x1E38 */ OSPiHandle* cart_handle; + /* 0x1E3C */ OSPiHandle* drive_handle; + /* 0x1E40 */ OSMesgQueue external_load_queue; + /* 0x1E58 */ OSMesg external_load_mesg_buf[16]; + /* 0x1E98 */ OSMesgQueue preload_sample_queue; + /* 0x1EB0 */ OSMesg preload_sample_mesg_buf[16]; + /* 0x1EF0 */ OSMesgQueue cur_audio_frame_dma_queue; + /* 0x1F08 */ OSMesg cur_audio_frame_dma_mesg_buf[64]; + /* 0x2008 */ OSIoMesg cur_adio_frame_dma_io_mesg_buf[64]; + /* 0x2608 */ OSMesgQueue sync_dma_queue; + /* 0x2620 */ OSMesg sync_dma_queue_msg[1]; + /* 0x2624 */ OSIoMesg sync_dma_io_mesg; + /* 0x263C */ WaveLoad* waveload_list; + /* 0x2640 */ u32 num_waveloads; + /* 0x2644 */ u32 waveload_count; + /* 0x2648 */ s32 _2648; + /* 0x264C */ u8 waveload_dma_queue0[256]; + /* 0x274C */ u8 waveload_dma_queue1[256]; + /* 0x284C */ u8 waveload_dma_queue0_rpos; /* read pos */ + /* 0x284D */ u8 waveload_dma_queue1_rpos; /* read pos */ + /* 0x284E */ u8 waveload_dma_queue0_wpos; /* write pos */ + /* 0x284F */ u8 waveload_dma_queue1_wpos; /* write pos */ /* 0x2850 */ ArcHeader* seq_header; /* 0x2854 */ ArcHeader* bank_header; /* 0x2858 */ ArcHeader* wave_header; /* 0x285C */ ArcHeader* data_header; /* 0x2860 */ u16* map_header; - /* 0x2864 */ u8 unk2864[0x3788 - 0x2864]; - /* 0x3788 */ group groups[5]; - /* 0x3E68 */ u8 unk3E68[0x5448]; + /* 0x2864 */ u16 num_sequences; + /* 0x2868 */ voiceinfo* voice_info; + /* 0x286C */ audioparams audio_params; + /* 0x2894 */ f32 _2894; /* tempo scale? */ + /* 0x2898 */ s32 waveload_dma_buf0_size; + /* 0x289C */ s32 waveload_dma_buf1_size; + /* 0x28A0 */ u8 _28A0[16]; + /* 0x28B0 */ s32 waveload_dma_cur_buf_size; + /* 0x28B4 */ s32 max_audio_cmds; + /* 0x28B8 */ s32 num_channels; + /* 0x28BC */ s16 max_tempo; + /* 0x28BE */ s8 sound_mode; + /* 0x28C0 */ s32 frame_audio_task_count; + /* 0x28C4 */ s32 current_frame_dma_count; + /* 0x28C8 */ s32 rsp_task_idx; + /* 0x28CC */ s32 current_ai_buffer_idx; + /* 0x28D0 */ Acmd* abi_cmd_bufs[3]; + /* 0x28DC */ Acmd* unused_current_abi_cmd_buf; + /* 0x28E0 */ void* unused_current_audio_task; + /* 0x28E4 */ u8 unused_rsp_tasks[2][0x50]; // Actually a struct but we don't need it + /* 0x2984 */ u8 _2984[0x54]; // unsure what this is, new to DnM+/AC? + /* 0x29D8 */ f32 _29D8; + /* 0x29DC */ s32 refresh_rate; + /* 0x29E0 */ s16* ai_buffers[4]; + /* 0x29F0 */ s16 num_samples_per_frame[4]; + /* 0x29F8 */ u32 audio_random_seed; + /* 0x29FC */ s32 audio_error_flags; // unsure about the name, from MM + /* 0x2A00 */ vu32 reset_timer; + /* 0x2A04 */ SequenceCallback seq_callbacks[4]; + /* 0x2A14 */ s8 _2A14; + /* 0x2A18 */ s32 num_abi_cmds_max; + /* 0x2A1C */ s32 _2A1C; + /* 0x2A20 */ ALHeap session_heap; + /* 0x2A34 */ ALHeap external_heap; + /* 0x2A48 */ ALHeap init_heap; + /* 0x2A5C */ ALHeap misc_heap; + /* 0x2A70 */ ALHeap unused_heap0; + /* 0x2A84 */ ALHeap unused_heap1; + /* 0x2A98 */ ALHeap sz_data_heap; + /* 0x2AAC */ ALHeap data_heap; + /* 0x2AC0 */ ALHeap sz_auto_heap; + /* 0x2AD4 */ SZHeap seq_heap; + /* 0x2BF0 */ SZHeap bank_heap; + /* 0x2D0C */ SZHeap wave_heap; + /* 0x2E28 */ ALHeap emem_heap; + /* 0x2E3C */ ALHeapEntry emem_entries[32]; + /* 0x2FBC */ SwHeap emem_persistent_wave_heap; + /* 0x3254 */ SwHeap emem_temporary_wave_heap; + /* 0x34EC */ AudioHeapstrc audio_heap_info; + /* 0x34FC */ DataHeapstrc cache_heap; + /* 0x3504 */ StayHeapstrc persistent_common_heap_info; + /* 0x3510 */ StayHeapstrc temporary_common_heap_info; + /* 0x351C */ u8 wave_load_status[172]; + /* 0x35C8 */ u8 bank_load_status[172]; + /* 0x3674 */ u8 sequence_load_status[252]; + /* 0x3770 */ u8 reset_status; + /* 0x3771 */ u8 spec_id; + /* 0x3774 */ s32 audio_reset_fadeout_frames_left; + /* 0x3778 */ f32* adsr_decay_table; + /* 0x377C */ u8* audio_heap_p; + /* 0x3780 */ size_t audio_heap_size; + /* 0x3784 */ channel* channels; + /* 0x3788 */ group groups[AUDIO_GROUP_MAX]; + /* 0x3E68 */ note notes[128]; + /* 0x8668 */ sub null_sub_track; /* used for 'null' sub tracks */ + /* 0x8748 */ group* groups_p[AUDIO_GROUP_MAX]; + /* 0x877C */ s32 _877C; + /* 0x8780 */ link note_link; + /* 0x8790 */ chnode channel_node; /* main chnode */ + /* 0x87D0 */ group main_group; + /* 0x8930 */ sub main_sub; + /* 0x8A30 */ u8 thread_cmd_write_pos; + /* 0x8A31 */ u8 thread_cmd_read_pos; + /* 0x8A32 */ u8 thread_cmd_queue_finished; + /* 0x8A34 */ u16 thread_cmd_group_mask[AUDIO_GROUP_MAX]; + /* 0x8A40 */ OSMesgQueue* audio_reset_mq_p; + /* 0x8A44 */ OSMesgQueue* task_start_mq_p; + /* 0x8A48 */ OSMesgQueue* thread_cmd_proc_mq_p; + /* 0x8A4C */ OSMesgQueue task_start_mq; + /* 0x8A64 */ OSMesgQueue thread_cmd_proc_mq; + /* 0x8A7C */ OSMesgQueue audio_reset_mq; + /* 0x8A94 */ OSMesg task_start_msg_buf[1]; + /* 0x8A98 */ OSMesg audio_reset_msg_buf[1]; + /* 0x8A9C */ OSMesg thread_cmd_proc_msg_buf[4]; + /* 0x8AAC */ AudioPort audio_port_cmds[256]; + /* 0x92AC */ s32 _92AC; } AudioGlobals; typedef union SOUNDID_ { diff --git a/include/libultra/libultra.h b/include/libultra/libultra.h index 5e5c8cc4..c5e4bc40 100644 --- a/include/libultra/libultra.h +++ b/include/libultra/libultra.h @@ -9,32 +9,31 @@ #include "libultra/shutdown.h" #include "libultra/os_timer.h" #include "libultra/os_thread.h" +#include "libultra/os_pi.h" #include "libultra/initialize.h" #include "libc/math.h" /* TODO: sins and coss belong in libultra */ #define N64_SCREEN_HEIGHT 240 #define N64_SCREEN_WIDTH 320 - #ifdef __cplusplus extern "C" { #endif typedef u64 Z_OSTime; -int bcmp (void *v1, void *v2, u32 size); -void bcopy(void *src, void *dst, size_t n); -void bzero(void *ptr, size_t size); +int bcmp(void* v1, void* v2, u32 size); +void bcopy(void* src, void* dst, size_t n); +void bzero(void* ptr, size_t size); void osSyncPrintf(const char* fmt, ...); void osWritebackDCache(void* vaddr, u32 nbytes); u32 osGetCount(void); OSTime osGetTime(void); -extern s32 osAppNMIBuffer[]; +extern s32 osAppNMIBuffer[]; extern int osShutdown; extern u8 __osResetSwitchPressed; - #ifdef __cplusplus } #endif diff --git a/include/libultra/os_pi.h b/include/libultra/os_pi.h new file mode 100644 index 00000000..dca566e9 --- /dev/null +++ b/include/libultra/os_pi.h @@ -0,0 +1,68 @@ +#ifndef OS_PI_H +#define OS_PI_H + +#include "types.h" +#include "libultra/osMesg.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + /* 0x00 */ u32 errStatus; + /* 0x04 */ void* dramAddr; + /* 0x08 */ void* C2Addr; + /* 0x0C */ u32 sectorSize; + /* 0x10 */ u32 C1ErrNum; + /* 0x14 */ u32 C1ErrSector[4]; +} __OSBlockInfo; // size = 0x24 + +typedef struct { + /* 0x00 */ u32 cmdType; + /* 0x04 */ u16 transferMode; + /* 0x06 */ u16 blockNum; + /* 0x08 */ s32 sectorNum; + /* 0x0C */ uintptr_t devAddr; + /* 0x10 */ u32 bmCtlShadow; + /* 0x14 */ u32 seqCtlShadow; + /* 0x18 */ __OSBlockInfo block[2]; +} __OSTranxInfo; // size = 0x60 + +typedef struct OSPiHandle { + /* 0x00 */ struct OSPiHandle* next; + /* 0x04 */ u8 type; + /* 0x05 */ u8 latency; + /* 0x06 */ u8 pageSize; + /* 0x07 */ u8 relDuration; + /* 0x08 */ u8 pulse; + /* 0x09 */ u8 domain; + /* 0x0C */ uintptr_t baseAddress; + /* 0x10 */ u32 speed; + /* 0x14 */ __OSTranxInfo transferInfo; +} OSPiHandle; // size = 0x74 + +typedef struct { + /* 0x0 */ u8 type; + /* 0x4 */ uintptr_t address; +} OSPiInfo; // size = 0x8 + +typedef struct { + /* 0x0 */ u16 type; + /* 0x2 */ u8 pri; + /* 0x3 */ u8 status; + /* 0x4 */ OSMesgQueue* retQueue; +} OSIoMesgHdr; // size = 0x8 + +typedef struct { + /* 0x00 */ OSIoMesgHdr hdr; + /* 0x08 */ void* dramAddr; + /* 0x0C */ uintptr_t devAddr; + /* 0x10 */ size_t size; + /* 0x14 */ OSPiHandle* piHandle; +} OSIoMesg; // size = 0x88 + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/static/jaudio_NES/rhythm.c b/src/static/jaudio_NES/rhythm.c index 53055192..b566f2c5 100644 --- a/src/static/jaudio_NES/rhythm.c +++ b/src/static/jaudio_NES/rhythm.c @@ -367,15 +367,11 @@ static s8 Na_RhythmGrpProcess(s8 arg0, group* group) { int r27; int r30; int r31; - (void)arg0; int ret = 1; r29 = 24; static int pre_beat_type = -1; - static u8 init; static int pre_frame_per_step = -1; - { static u8 init; } - tempo_adjust(group); if (Na_GetRhythmBeatType() == 0) { if (Nap_ReadGrpPort(2, 2) % 2 != 0) { @@ -387,6 +383,9 @@ static s8 Na_RhythmGrpProcess(s8 arg0, group* group) { r29 = 24; } + /* random call to arg0 so it is stored on the stack, can also do (void)arg0 */ + if (arg0) {} + r31 = Nap_ReadGrpPort(2, 3); if (Nap_ReadGrpPort(2, 2) % 2 != 0) { r27 = r31; From f96a44c0d93759be11b4416f4c2bdd77e1cb81ee Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Sat, 8 Jun 2024 01:09:47 -0400 Subject: [PATCH 017/234] Implement & link jaudio_NES/staff.c --- config/disasm_overrides.yml | 1 + config/dol_slices.yml | 5 + configure.py | 3 +- include/audio.h | 22 ++- include/jaudio_NES/audiocommon.h | 1 + include/jaudio_NES/audiostruct.h | 2 +- include/jaudio_NES/staff.h | 14 +- src/ac_npc_rtc.c | 7 +- src/audio.c | 5 +- src/static/jaudio_NES/staff.c | 224 +++++++++++++++++++++++++++++++ 10 files changed, 266 insertions(+), 18 deletions(-) create mode 100644 src/static/jaudio_NES/staff.c diff --git a/config/disasm_overrides.yml b/config/disasm_overrides.yml index c44ba20b..1a51a85b 100644 --- a/config/disasm_overrides.yml +++ b/config/disasm_overrides.yml @@ -2,6 +2,7 @@ trim_ctors: true symbol_aligns: 0x80008480: 32 + 0x80016d20: 32 0x80018920: 32 0x800190e0: 32 0x80019380: 32 diff --git a/config/dol_slices.yml b/config/dol_slices.yml index 0abd3f02..e47bd6ef 100644 --- a/config/dol_slices.yml +++ b/config/dol_slices.yml @@ -51,6 +51,11 @@ jaudio_NES/rhythm.c: jaudio_NES/radio.c: .text: [0x800165ec, 0x8001676c] .sdata2: [0x80218d78, 0x80218d88] +jaudio_NES/staff.c: + .text: [0x80016840, 0x80016d20] + .data: [0x800cfe10, 0x800cff20] + .sbss: [0x802183b8, 0x802183c8] + .sdata2: [0x80218d98, 0x80218da0] jaudio_NES/aictrl.c: .text: [0x80017e80, 0x80018640] .rodata: [0x800aa500, 0x800aa518] diff --git a/configure.py b/configure.py index c050d087..945ffd36 100644 --- a/configure.py +++ b/configure.py @@ -636,7 +636,8 @@ JAUDIO_USER_TUS = [ "verysimple.c", "melody.c", "radio.c", - "rhythm.c" + "rhythm.c", + "staff.c" ] class CSource(Source): diff --git a/include/audio.h b/include/audio.h index 41425ec1..e5dd0c1f 100644 --- a/include/audio.h +++ b/include/audio.h @@ -15,6 +15,26 @@ typedef struct audio_tempo_beat_s { /* 0x01 */ s8 beat; } TempoBeat_c; +/* sizeof(StaffRollInfo_c) == 0x18 */ +typedef struct audio_staffroll_info_s { + /* 0x00 */ s16 staffroll_part; + /* 0x02 */ s16 _01; + /* 0x08 */ f64 percent; + /* 0x10 */ s8 mouth_num; + /* 0x11 */ s8 blink_flag; + /* 0x12 */ s8 beat; +} StaffRollInfo_c; + +enum { + STAFFROLL_PART_START, + STAFFROLL_PART_INTRO, + STAFFROLL_PART_MAIN, + STAFFROLL_PART_FADEOUT, + STAFFROLL_PART_FINISH, + + STAFFROLL_PART_NUM +}; + enum { VOICE_STATUS_NORMAL, VOICE_STATUS_ANGRY, @@ -94,7 +114,7 @@ extern void sAdos_KishaStatusLevel(f32 speed, u32 ongenNum1, u16 angle1, f32 dis extern void sAdos_GetRadioCounter(void* p); extern void sAdos_GetKappaCounter(void* p); -extern void sAdos_GetStaffRollInfo(void* p); +extern void sAdos_GetStaffRollInfo(StaffRollInfo_c* info); extern void sAdos_TTKK_ARM(u8 mode); diff --git a/include/jaudio_NES/audiocommon.h b/include/jaudio_NES/audiocommon.h index 0f092a1f..6165526d 100644 --- a/include/jaudio_NES/audiocommon.h +++ b/include/jaudio_NES/audiocommon.h @@ -14,6 +14,7 @@ extern "C" { #define AUDIO_ARAM_HEAP_SIZE 0xC000 #define AUDIO_GROUP_MAX 5 +#define AUDIO_SUBTRACK_NUM 16 #define NA_MAKE_COMMAND(a0, a1, a2, a3) \ (u32)((((a0) & 0xFF) << 24) | (((a1) & 0xFF) << 16) | (((a2) & 0xFF) << 8) | (((a3) & 0xFF) << 0)) diff --git a/include/jaudio_NES/audiostruct.h b/include/jaudio_NES/audiostruct.h index c64ebb31..66af60e3 100644 --- a/include/jaudio_NES/audiostruct.h +++ b/include/jaudio_NES/audiostruct.h @@ -520,7 +520,7 @@ struct group_ { /* 0x02C */ f32 fade_volume_scale; /* 0x030 */ f32 applied_fade_volume; /* 0x034 */ f32 bend; - /* 0x038 */ sub* subtracks[16]; + /* 0x038 */ sub* subtracks[AUDIO_SUBTRACK_NUM]; /* 0x078 */ seqplayer seq_player; /* 0x094 */ u8* short_note_velocity_tbl; /* 0x098 */ u8* short_note_gate_time_tbl; diff --git a/include/jaudio_NES/staff.h b/include/jaudio_NES/staff.h index 8eea37fc..4250f4a7 100644 --- a/include/jaudio_NES/staff.h +++ b/include/jaudio_NES/staff.h @@ -2,22 +2,18 @@ #define STAFF_H #include "types.h" +#include "audio.h" #ifdef __cplusplus extern "C" { #endif -typedef struct staff_roll_info_s{ - s16 unk0; - int unk4; - f64 unk8; -}StaffRoll; - -extern void Na_GetStaffRollInfo(void*); +extern void Na_StaffRollInit(void); +extern void Na_StaffRollStart(s16 seq_no); +extern void Na_GetStaffRollInfo(StaffRollInfo_c* info); #ifdef __cplusplus } #endif - -#endif \ No newline at end of file +#endif diff --git a/src/ac_npc_rtc.c b/src/ac_npc_rtc.c index 36069570..5de766fa 100644 --- a/src/ac_npc_rtc.c +++ b/src/ac_npc_rtc.c @@ -87,7 +87,7 @@ void aNRTC_actor_init(ACTOR* actor, GAME* game) { } void aNRTC_actor_move(ACTOR* actor, GAME* game) { - StaffRoll info; + StaffRollInfo_c info; f32 val = 0.5f; u8 arm_flag = TRUE; NPCRTC_ACTOR* rtc = (NPCRTC_ACTOR*)actor; @@ -95,10 +95,11 @@ void aNRTC_actor_move(ACTOR* actor, GAME* game) { if (rtc->npc_class.draw.animation_id == 0x76) { sAdos_GetStaffRollInfo(&info); - if (info.unk0 != 4) { + if (info.staffroll_part != STAFFROLL_PART_FINISH) { val = 0.0f; arm_flag = FALSE; - rtc->npc_class.draw.main_animation.keyframe.frame_control.current_frame = 1.0f + (64.0f * (f32)info.unk8); + rtc->npc_class.draw.main_animation.keyframe.frame_control.current_frame = + 1.0f + (64.0f * (f32)info.percent); } } diff --git a/src/audio.c b/src/audio.c index 21ff1520..d02bd1f8 100644 --- a/src/audio.c +++ b/src/audio.c @@ -306,9 +306,8 @@ extern void sAdos_GetKappaCounter(void* p) { Na_GetKappaCounter(p); } -extern void sAdos_GetStaffRollInfo(void* p) { - - Na_GetStaffRollInfo(p); +extern void sAdos_GetStaffRollInfo(StaffRollInfo_c* info) { + Na_GetStaffRollInfo(info); } extern void sAdos_TTKK_ARM(u8 mode) { diff --git a/src/static/jaudio_NES/staff.c b/src/static/jaudio_NES/staff.c new file mode 100644 index 00000000..27ef6664 --- /dev/null +++ b/src/static/jaudio_NES/staff.c @@ -0,0 +1,224 @@ +#include "jaudio_NES/staff.h" + +#include "jaudio_NES/game64.h" +#include "jaudio_NES/sub_sys.h" +#include "jaudio_NES/audiowork.h" + +static BOOL start_flag = FALSE; +static s32 mouth_num = 0; +static u32 seq_num = 0; + +extern void Na_StaffRollInit(void) { + start_flag = FALSE; + mouth_num = 0; + seq_num = -1; +} + +extern void Na_StaffRollStart(s16 seq_no) { + Nap_SetS8(NA_MAKE_COMMAND(0x46, sou_now_bgm_handle, 0, 0), 0); + Nap_SetS8(NA_MAKE_COMMAND(0x46, sou_now_bgm_handle, 0, 1), 0); + Nap_SetS8(NA_MAKE_COMMAND(0x46, sou_now_bgm_handle, 0, 2), -1); + + seq_num = seq_no; + start_flag = TRUE; +} + +extern void Na_GetStaffRollInfo(StaffRollInfo_c* info) { + group* group = nullptr; + sub* subtrack = nullptr; + note* note = nullptr; + channel* channel = nullptr; + s32 temp; + s32 mouth_type = 0; + s32 blink; + s32 group_unk16; + s32 i; + + if (AG.groups[sou_now_bgm_handle].flags.enabled) { + + start_flag = FALSE; + group = &AG.groups[sou_now_bgm_handle]; + + if (group->seq_script_io[2] == 0) { + info->staffroll_part = STAFFROLL_PART_MAIN; + } else if (group->seq_script_io[2] == 1) { + info->staffroll_part = STAFFROLL_PART_FADEOUT; + } else { + info->staffroll_part = STAFFROLL_PART_INTRO; + } + } else { + if (start_flag) { + info->staffroll_part = STAFFROLL_PART_START; + } else { + info->staffroll_part = STAFFROLL_PART_FINISH; + } + + return; + } + + for (i = 2; i < AUDIO_SUBTRACK_NUM; i++) { + subtrack = group->subtracks[i]; + if (subtrack != nullptr) { + note = subtrack->note_layers[0]; + if (note != nullptr && note->_00bit3) { + channel = note->channel; + if (channel != nullptr && channel->common_ch.enabled) { + /* Found our enabled note channel, get mouth type */ + switch (i) { + case 2: + case 7: + case 12: + mouth_type = 4; + break; + case 6: + mouth_type = 1; + break; + case 4: + case 13: + mouth_type = 5; + break; + case 10: + mouth_type = 3; + break; + case 11: + mouth_type = 0; + break; + default: + mouth_type = 2; + break; + } + + /* stop searching */ + break; + } + } + } + } + + /* update mouth num */ + if (mouth_type != mouth_num) { + switch (mouth_type) { + case 4: + switch (mouth_num) { + case 0: + case 1: + mouth_num = 3; + break; + case 3: + mouth_num = 4; + break; + default: + mouth_num = 1; + break; + } + + break; + + case 1: + switch (mouth_num) { + case 4: + mouth_num = 3; + break; + default: + mouth_num = 1; + break; + } + + break; + + case 3: + switch (mouth_num) { + case 2: + case 5: + mouth_num = 1; + break; + default: + mouth_num = 3; + break; + } + + break; + + case 5: + switch (mouth_num) { + case 4: + mouth_num = 3; + break; + case 1: + mouth_num = 5; + break; + default: + mouth_num = 1; + break; + } + + break; + + case 2: + switch (mouth_num) { + case 4: + mouth_num = 3; + break; + case 1: + mouth_num = 2; + break; + default: + mouth_num = 1; + break; + } + + break; + + case 0: + switch (mouth_num) { + case 1: + case 3: + mouth_num = 0; + break; + case 4: + mouth_num = 3; + break; + default: + mouth_num = 1; + break; + } + } + } + + info->mouth_num = mouth_num; + + /* sequence script itself controls blink flag? */ + if (group->seq_script_io[1] == 1) { + blink = TRUE; + } else { + blink = FALSE; + } + + info->blink_flag = blink; + group_unk16 = group->unk016; + + switch (seq_num) { + case 1: + case 2: + case 3: + case 14: + case 17: + case 19: + case 31: + case 32: + case 39: + case 44: + case 49: + case 52: + info->beat = 3; + break; + default: + info->beat = 4; + break; + } + + temp = info->beat * 48; + info->_01 = group_unk16 / temp; + group_unk16 -= info->_01 * temp; + info->percent = (f32)group_unk16 / temp; +} From 7d67f40a71eca0f8fe0e1941249744cd959570ca Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Sat, 8 Jun 2024 01:52:02 -0400 Subject: [PATCH 018/234] Reorganize jaudio_NES src folder layout --- config/dol_slices.yml | 26 +++++++++---------- configure.py | 20 ++------------ .../jaudio_NES/{ => game}/audioheaders.c | 0 src/static/jaudio_NES/{ => game}/dummyprobe.c | 0 src/static/jaudio_NES/{ => game}/emusound.c | 0 src/static/jaudio_NES/{ => game}/game64.c | 0 src/static/jaudio_NES/{ => game}/melody.c | 0 src/static/jaudio_NES/{ => game}/radio.c | 0 src/static/jaudio_NES/{ => game}/rhythm.c | 0 src/static/jaudio_NES/{ => game}/staff.c | 0 src/static/jaudio_NES/{ => game}/verysimple.c | 0 src/static/jaudio_NES/{ => internal}/aictrl.c | 0 .../jaudio_NES/{ => internal}/audiothread.c | 0 .../jaudio_NES/{ => internal}/dummyrom.c | 0 .../jaudio_NES/{ => internal}/neosthread.c | 0 src/static/jaudio_NES/{ => internal}/sample.c | 0 16 files changed, 15 insertions(+), 31 deletions(-) rename src/static/jaudio_NES/{ => game}/audioheaders.c (100%) rename src/static/jaudio_NES/{ => game}/dummyprobe.c (100%) rename src/static/jaudio_NES/{ => game}/emusound.c (100%) rename src/static/jaudio_NES/{ => game}/game64.c (100%) rename src/static/jaudio_NES/{ => game}/melody.c (100%) rename src/static/jaudio_NES/{ => game}/radio.c (100%) rename src/static/jaudio_NES/{ => game}/rhythm.c (100%) rename src/static/jaudio_NES/{ => game}/staff.c (100%) rename src/static/jaudio_NES/{ => game}/verysimple.c (100%) rename src/static/jaudio_NES/{ => internal}/aictrl.c (100%) rename src/static/jaudio_NES/{ => internal}/audiothread.c (100%) rename src/static/jaudio_NES/{ => internal}/dummyrom.c (100%) rename src/static/jaudio_NES/{ => internal}/neosthread.c (100%) rename src/static/jaudio_NES/{ => internal}/sample.c (100%) diff --git a/config/dol_slices.yml b/config/dol_slices.yml index e47bd6ef..969b663c 100644 --- a/config/dol_slices.yml +++ b/config/dol_slices.yml @@ -28,54 +28,54 @@ dvderr.c: .rodata: [0x800a97f8, 0x800a9838] .data: [0x800b0a60, 0x800b9140] .bss: [0x800e2790, 0x800e2b88] -jaudio_NES/dummyprobe.c: +jaudio_NES/game/dummyprobe.c: .text: [0x800083f8, 0x80008400] -jaudio_NES/audioheaders.c: +jaudio_NES/game/audioheaders.c: .data: [0x800cca40, 0x800ce880] -jaudio_NES/verysimple.c: +jaudio_NES/game/verysimple.c: .text: [0x80008400, 0x80008480] .sdata: [0x80217b80, 0x80217b88] -# jaudio_NES/game64.c: # TODO: finish +# jaudio_NES/game/game64.c: # TODO: finish # .rodata: [0x800a9938, 0x800a9b98] -jaudio_NES/melody.c: +jaudio_NES/game/melody.c: .text: [0x8001561c, 0x80015a4c] .rodata: [0x800a9b98, 0x800aa500] .sbss: [0x80218390, 0x802183a0] .sdata2: [0x80218d58, 0x80218d60] -jaudio_NES/rhythm.c: +jaudio_NES/game/rhythm.c: .text: [0x80015a4c, 0x800165ec] .bss: [0x8017bdd8, 0x8017be80] .sdata: [0x80217bd0, 0x80217bd8] .sbss: [0x802183a0, 0x802183b0] .sdata2: [0x80218d60, 0x80218d78] -jaudio_NES/radio.c: +jaudio_NES/game/radio.c: .text: [0x800165ec, 0x8001676c] .sdata2: [0x80218d78, 0x80218d88] -jaudio_NES/staff.c: +jaudio_NES/game/staff.c: .text: [0x80016840, 0x80016d20] .data: [0x800cfe10, 0x800cff20] .sbss: [0x802183b8, 0x802183c8] .sdata2: [0x80218d98, 0x80218da0] -jaudio_NES/aictrl.c: +jaudio_NES/internal/aictrl.c: .text: [0x80017e80, 0x80018640] .rodata: [0x800aa500, 0x800aa518] .bss: [0x8017cfa0, 0x8017cfc0] .sbss: [0x802183f0, 0x80218420] .sdata2: [0x80218da8, 0x80218db8] -jaudio_NES/sample.c: +jaudio_NES/internal/sample.c: .text: [0x80018640, 0x80018920] -jaudio_NES/dummyrom.c: +jaudio_NES/internal/dummyrom.c: .text: [0x80018920, 0x80018bc0] .rodata: [0x800aa518, 0x800aa528] # .bss: [0x8020d78c, 0x8020d7a0] # placed in common bss .sbss: [0x80218420, 0x80218440] -jaudio_NES/audiothread.c: +jaudio_NES/internal/audiothread.c: .text: [0x80018bc0, 0x800190e0] .rodata: [0x800aa528, 0x800aa538] .bss: [0x8017cfc0, 0x80180020] .sbss: [0x80218440, 0x80218460] .sdata2: [0x80218db8, 0x80218dc0] -jaudio_NES/neosthread.c: +jaudio_NES/internal/neosthread.c: .text: [0x800190e0, 0x80019380] .rodata: [0x800aa538, 0x800aa558] .bss: [0x80180020, 0x80186440] diff --git a/configure.py b/configure.py index 945ffd36..7735de22 100644 --- a/configure.py +++ b/configure.py @@ -624,31 +624,15 @@ class AsmSource(Source): inputs = self.src_path ) -JAUDIO_FUNC_ALIGN_32_TUS = [ - "sample.c", - "aictrl.c", - "dummyrom.c", - "audiothread.c", - "neosthread.c" -] - -JAUDIO_USER_TUS = [ - "verysimple.c", - "melody.c", - "radio.c", - "rhythm.c", - "staff.c" -] - class CSource(Source): def __init__(self, ctx: c.SourceContext, path: str): if path.startswith("src/static/dolphin/"): self.cflags = c.SDK_FLAGS self.cc = c.OCC elif path.startswith("src/static/jaudio_NES/"): - if os.path.basename(path) in JAUDIO_FUNC_ALIGN_32_TUS: + if path.startswith("src/static/jaudio_NES/internal/"): self.cflags = c.JAUDIO_FUNC_ALIGN_32_CFLAGS - elif os.path.basename(path) in JAUDIO_USER_TUS: + elif path.startswith("src/static/jaudio_NES/game/"): self.cflags = c.JAUDIO_USER_CFLAGS else: self.cflags = c.JAUDIO_CFLAGS diff --git a/src/static/jaudio_NES/audioheaders.c b/src/static/jaudio_NES/game/audioheaders.c similarity index 100% rename from src/static/jaudio_NES/audioheaders.c rename to src/static/jaudio_NES/game/audioheaders.c diff --git a/src/static/jaudio_NES/dummyprobe.c b/src/static/jaudio_NES/game/dummyprobe.c similarity index 100% rename from src/static/jaudio_NES/dummyprobe.c rename to src/static/jaudio_NES/game/dummyprobe.c diff --git a/src/static/jaudio_NES/emusound.c b/src/static/jaudio_NES/game/emusound.c similarity index 100% rename from src/static/jaudio_NES/emusound.c rename to src/static/jaudio_NES/game/emusound.c diff --git a/src/static/jaudio_NES/game64.c b/src/static/jaudio_NES/game/game64.c similarity index 100% rename from src/static/jaudio_NES/game64.c rename to src/static/jaudio_NES/game/game64.c diff --git a/src/static/jaudio_NES/melody.c b/src/static/jaudio_NES/game/melody.c similarity index 100% rename from src/static/jaudio_NES/melody.c rename to src/static/jaudio_NES/game/melody.c diff --git a/src/static/jaudio_NES/radio.c b/src/static/jaudio_NES/game/radio.c similarity index 100% rename from src/static/jaudio_NES/radio.c rename to src/static/jaudio_NES/game/radio.c diff --git a/src/static/jaudio_NES/rhythm.c b/src/static/jaudio_NES/game/rhythm.c similarity index 100% rename from src/static/jaudio_NES/rhythm.c rename to src/static/jaudio_NES/game/rhythm.c diff --git a/src/static/jaudio_NES/staff.c b/src/static/jaudio_NES/game/staff.c similarity index 100% rename from src/static/jaudio_NES/staff.c rename to src/static/jaudio_NES/game/staff.c diff --git a/src/static/jaudio_NES/verysimple.c b/src/static/jaudio_NES/game/verysimple.c similarity index 100% rename from src/static/jaudio_NES/verysimple.c rename to src/static/jaudio_NES/game/verysimple.c diff --git a/src/static/jaudio_NES/aictrl.c b/src/static/jaudio_NES/internal/aictrl.c similarity index 100% rename from src/static/jaudio_NES/aictrl.c rename to src/static/jaudio_NES/internal/aictrl.c diff --git a/src/static/jaudio_NES/audiothread.c b/src/static/jaudio_NES/internal/audiothread.c similarity index 100% rename from src/static/jaudio_NES/audiothread.c rename to src/static/jaudio_NES/internal/audiothread.c diff --git a/src/static/jaudio_NES/dummyrom.c b/src/static/jaudio_NES/internal/dummyrom.c similarity index 100% rename from src/static/jaudio_NES/dummyrom.c rename to src/static/jaudio_NES/internal/dummyrom.c diff --git a/src/static/jaudio_NES/neosthread.c b/src/static/jaudio_NES/internal/neosthread.c similarity index 100% rename from src/static/jaudio_NES/neosthread.c rename to src/static/jaudio_NES/internal/neosthread.c diff --git a/src/static/jaudio_NES/sample.c b/src/static/jaudio_NES/internal/sample.c similarity index 100% rename from src/static/jaudio_NES/sample.c rename to src/static/jaudio_NES/internal/sample.c From de15fde93528a711373317714a14071f91964ec0 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Sat, 8 Jun 2024 16:13:29 +0200 Subject: [PATCH 019/234] link kappa --- config/dol_slices.yml | 3 +++ include/jaudio_NES/kappa.h | 8 +++++++- src/static/jaudio_NES/game/kappa.c | 32 ++++++++++++++++++++++++++++++ 3 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 src/static/jaudio_NES/game/kappa.c diff --git a/config/dol_slices.yml b/config/dol_slices.yml index 969b663c..0de8e347 100644 --- a/config/dol_slices.yml +++ b/config/dol_slices.yml @@ -51,6 +51,9 @@ jaudio_NES/game/rhythm.c: jaudio_NES/game/radio.c: .text: [0x800165ec, 0x8001676c] .sdata2: [0x80218d78, 0x80218d88] +jaudio_NES/game/kappa.c: + .text: [0x8001676c,0x80016840] + .sbss: [0x802183b0, 0x802183b8] jaudio_NES/game/staff.c: .text: [0x80016840, 0x80016d20] .data: [0x800cfe10, 0x800cff20] diff --git a/include/jaudio_NES/kappa.h b/include/jaudio_NES/kappa.h index 5f0a4eed..4e5805cd 100644 --- a/include/jaudio_NES/kappa.h +++ b/include/jaudio_NES/kappa.h @@ -7,7 +7,13 @@ extern "C" { #endif -extern void Na_GetKappaCounter(void*); +typedef struct kappa_ { + u16 unk0; + f32 unk4; +}kappa; + +extern int Na_GetKappaCounter(kappa*); +extern void Na_SetKappaSeqHandle(int flag); #ifdef __cplusplus } diff --git a/src/static/jaudio_NES/game/kappa.c b/src/static/jaudio_NES/game/kappa.c new file mode 100644 index 00000000..22fcaca5 --- /dev/null +++ b/src/static/jaudio_NES/game/kappa.c @@ -0,0 +1,32 @@ +#include "jaudio_NES/kappa.h" +#include "jaudio_NES/audiostruct.h" +#include "jaudio_NES/audiowork.h" + +int kappa_seq_handle = 0; + +int Na_GetKappaCounter(kappa* kappa) { + int unk16; + group* group = nullptr; + int temp = 0; + + if (AG.groups[kappa_seq_handle].flags.enabled != 0) { + group = &(AG.groups)[kappa_seq_handle]; + + } else { + return -1; + } + + (void)temp; + + unk16 = group->unk016; + + kappa->unk0 = unk16 / 192; + unk16 -= (kappa->unk0 * 0xC0); + kappa->unk4 = unk16 / 192.0f; + + return 0; +} + +void Na_SetKappaSeqHandle(int flag) { + kappa_seq_handle = flag; +} From dd463a6e6fc3369f75eda06d9599708db67783a3 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Sat, 8 Jun 2024 17:52:24 +0200 Subject: [PATCH 020/234] link jaudio os --- config/dol_slices.yml | 2 + include/jaudio_NES/os.h | 10 +++- include/libultra/osMesg.h | 5 +- src/static/jaudio_NES/internal/os.c | 82 +++++++++++++++++++++++++++++ 4 files changed, 97 insertions(+), 2 deletions(-) create mode 100644 src/static/jaudio_NES/internal/os.c diff --git a/config/dol_slices.yml b/config/dol_slices.yml index 0de8e347..4e73148b 100644 --- a/config/dol_slices.yml +++ b/config/dol_slices.yml @@ -84,6 +84,8 @@ jaudio_NES/internal/neosthread.c: .bss: [0x80180020, 0x80186440] .sdata: [0x80217be0, 0x80217be8] .sbss: [0x80218460, 0x80218478] +jaudio_NES/internal/os.c: + .text: [0x80026120, 0x80026300] Famicom/famicom.cpp: .text: [0x80041614, 0x80046888] # TODO: get ~J2DOrthoGraph's dtor in here somehow? 0x800468fc, also add in JUTGamePad::getPortStatus when JUTGamePad is linked? .rodata: [0x800aa9a8, 0x800aaa30] diff --git a/include/jaudio_NES/os.h b/include/jaudio_NES/os.h index 6e9bd107..104defb5 100644 --- a/include/jaudio_NES/os.h +++ b/include/jaudio_NES/os.h @@ -4,6 +4,14 @@ #include "types.h" #include "libultra/libultra.h" -extern int Z_osSendMesg(OSMesgQueue* mq, OSMesg msg, s32 block); +extern void Z_osWritebackDCacheAll(); +extern void osInvalDCache2(void* src, s32 size); +extern void osWritebackDCache2(void* src, s32 size); +extern void Z_osCreateMesgQueue (OSMesgQueue* mq, OSMesg* msg, s32 count ); +extern s32 Z_osSendMesg(OSMesgQueue* mq, OSMesg msg, s32 flags ); +extern s32 Z_osRecvMesg(OSMesgQueue* mq, OSMesg* msg, s32 flags ); +extern s32 Z_osEPiStartDma (OSPiHandle * handler, OSIoMesg* msg, s32 dir); +extern void Z_bcopy (void* dst, void* src, size_t size); + #endif diff --git a/include/libultra/osMesg.h b/include/libultra/osMesg.h index 7ffaff64..fa4524f3 100644 --- a/include/libultra/osMesg.h +++ b/include/libultra/osMesg.h @@ -5,12 +5,15 @@ #include "dolphin/os/OSThread.h" #include "dolphin/os/OSMessage.h" +#define OS_MESG_NOBLOCK 0 +#define OS_MESG_BLOCK 1 + typedef void* OSMesg; typedef struct OSMesgQueue_s { /* 0x00 */ OSThread* mtqueue; /* 0x04 */ OSThread* fullqueue; - /* 0x08 */ int validCount; + /* 0x08 */ volatile int validCount; /* 0x0C */ int first; /* 0x10 */ int msgCount; /* 0x14 */ OSMesg* msg; diff --git a/src/static/jaudio_NES/internal/os.c b/src/static/jaudio_NES/internal/os.c new file mode 100644 index 00000000..3a90a066 --- /dev/null +++ b/src/static/jaudio_NES/internal/os.c @@ -0,0 +1,82 @@ +#include "jaudio_NES/os.h" +#include "dolphin/os.h" +#include "jaudio_NES/dummyrom.h" +#include "jaudio_NES/sample.h" + + +extern void Z_osWritebackDCacheAll(){ + +} + +extern void osInvalDCache2(void* src, s32 size){ + DCInvalidateRange(src,size); +} + +extern void osWritebackDCache2(void* src, s32 size){ + DCStoreRange(src,size); +} + +extern void Z_osCreateMesgQueue (OSMesgQueue* mq, OSMesg* msg, s32 count ){ + mq->msg = msg; + mq->msgCount = count; + mq->validCount = 0; + mq->first = 0; +} + +extern s32 Z_osSendMesg(OSMesgQueue* mq, OSMesg msg, s32 flags ){ + int msgCount = mq->msgCount; + if (mq->validCount == mq->msgCount) { + return -1; + } + + int count = mq->first + mq->validCount; + + if(count >= mq->msgCount){ + count -= mq->msgCount; + } + + mq->msg[count] = msg; + + mq->validCount++; + + return 0; +} + +extern s32 Z_osRecvMesg(OSMesgQueue* mq, OSMesg* msg, s32 flags ){ + if(flags == OS_MESG_BLOCK){ + while(!mq->validCount){ + + }; + } + + if(mq->validCount == 0){ + if(msg != NULL){ + *msg = NULL; + } + return -1; + } + + mq->validCount -= 1; + + if(msg != NULL){ + *msg = mq->msg[mq->first]; + } + + mq->first++; + + if(mq->first == mq->msgCount){ + mq->first = 0; + } + + return 0; + +} + +extern s32 Z_osEPiStartDma (OSPiHandle * handler, OSIoMesg* msg, s32 dir){ + ARAMStartDMAmesg(1, (uintptr_t)msg->dramAddr, msg->devAddr, msg->size, 0, msg->hdr.retQueue); + return 0; +} + +void Z_bcopy (void* dst, void* src, size_t size){ + Jac_bcopy(dst,src,size); +} \ No newline at end of file From d9cf62aa29e7e92a8591dd0c3daadc6f8909c8e1 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Sat, 8 Jun 2024 19:50:33 +0200 Subject: [PATCH 021/234] link playercall --- config/disasm_overrides.yml | 1 + config/dol_slices.yml | 3 + include/jaudio_NES/audiostruct.h | 9 +++ include/jaudio_NES/playercall.h | 9 ++- src/static/jaudio_NES/internal/playercall.c | 83 +++++++++++++++++++++ 5 files changed, 104 insertions(+), 1 deletion(-) create mode 100644 src/static/jaudio_NES/internal/playercall.c diff --git a/config/disasm_overrides.yml b/config/disasm_overrides.yml index 1a51a85b..ac15580f 100644 --- a/config/disasm_overrides.yml +++ b/config/disasm_overrides.yml @@ -6,6 +6,7 @@ symbol_aligns: 0x80018920: 32 0x800190e0: 32 0x80019380: 32 + 0x8001a0c0: 32 0x80207458: 8 # align RunQueue to 0x001251d8 0x800b9140: 32 # align gam_win_moji1_tex to 32 bytes 0x801f71c0: 32 # align texture_buffer_data to 32 bytes diff --git a/config/dol_slices.yml b/config/dol_slices.yml index 4e73148b..2f0dc6e0 100644 --- a/config/dol_slices.yml +++ b/config/dol_slices.yml @@ -84,6 +84,9 @@ jaudio_NES/internal/neosthread.c: .bss: [0x80180020, 0x80186440] .sdata: [0x80217be0, 0x80217be8] .sbss: [0x80218460, 0x80218478] +jaudio_NES/internal/playercall.c: + .text: [0x80019dc0, 0x8001a0c0] + .bss: [0x801864d0,0x80186590] jaudio_NES/internal/os.c: .text: [0x80026120, 0x80026300] Famicom/famicom.cpp: diff --git a/include/jaudio_NES/audiostruct.h b/include/jaudio_NES/audiostruct.h index 66af60e3..f4d575aa 100644 --- a/include/jaudio_NES/audiostruct.h +++ b/include/jaudio_NES/audiostruct.h @@ -894,6 +894,15 @@ typedef union SOUNDID_ { u32 uint32; } SOUNDID; +typedef s32 (*PlayerCallBack)(void*); + +typedef struct PLAYER_CALL_ { + PlayerCallBack callback; + void* arg; + u32 DSP_mode; +} PLAYER_CALL; + + #ifdef __cplusplus } #endif diff --git a/include/jaudio_NES/playercall.h b/include/jaudio_NES/playercall.h index bc8e4d95..d7f9665d 100644 --- a/include/jaudio_NES/playercall.h +++ b/include/jaudio_NES/playercall.h @@ -2,15 +2,22 @@ #define PLAYERCALL_H #include "types.h" +#include "jaudio_NES/audiostruct.h" #ifdef __cplusplus extern "C" { #endif -extern void ResetPlayerCallback(void); +extern void ResetPlayerCallback(); +extern s32 Jac_RegisterDspPlayerCallback(PlayerCallBack callback, void* arg); +extern s32 Jac_RegisterPlayerCallback(PlayerCallBack callback, void* arg); + #ifdef __cplusplus } #endif +extern void PlayerCallback(); +extern void DspPlayerCallback(); + #endif diff --git a/src/static/jaudio_NES/internal/playercall.c b/src/static/jaudio_NES/internal/playercall.c new file mode 100644 index 00000000..8ae19009 --- /dev/null +++ b/src/static/jaudio_NES/internal/playercall.c @@ -0,0 +1,83 @@ +#include "jaudio_NES/playercall.h" +#include "jaudio_NES/audiostruct.h" + +static PLAYER_CALL PLAYER_CALLLIST[16]; + +extern void ResetPlayerCallback(){ + int i; + + for(i = 0; i < 16; i++){ + PLAYER_CALLLIST[i].callback = nullptr; + } +} + +static s32 Jac_CheckPlayerCallback(PlayerCallBack callback, void* arg){ + int i; + + for(i = 0; i < 16; i++){ + if(PLAYER_CALLLIST[i].callback == callback && PLAYER_CALLLIST[i].arg == arg){ + return i; + } + } + return -1; +} + +extern s32 Jac_RegisterDspPlayerCallback(PlayerCallBack callback, void* arg){ + s32 idx = Jac_RegisterPlayerCallback(callback,arg); + + if(idx == -1){ + return -1; + } + + PLAYER_CALLLIST[idx].DSP_mode = true; + + return idx; +} + +extern s32 Jac_RegisterPlayerCallback(PlayerCallBack callback, void* arg){ + u32 i; + + for(i = 0; i < 16; i++){ + if(PLAYER_CALLLIST[i].callback == nullptr){ + break; + } + } + + if(i == 16){ + return -1; + } + + if(Jac_CheckPlayerCallback(callback,arg) != -1){ + return -1; + } + else{ + PLAYER_CALLLIST[i].callback = callback; + PLAYER_CALLLIST[i].arg = arg; + PLAYER_CALLLIST[i].DSP_mode = false; + return i; + } + + return -1; +} + +extern void PlayerCallback(){ + u32 i; + + for(i = 0; i < 16; i++){ + PlayerCallBack callback = PLAYER_CALLLIST[i].callback; + if(callback != nullptr && PLAYER_CALLLIST[i].DSP_mode == false && callback(PLAYER_CALLLIST[i].arg) == -1){ + PLAYER_CALLLIST[i].callback = nullptr; + } + } +} + +extern void DspPlayerCallback(){ + u32 i; + + for(i = 0; i < 16; i++){ + PlayerCallBack callback = PLAYER_CALLLIST[i].callback; + if(callback != nullptr && PLAYER_CALLLIST[i].DSP_mode == true && callback(PLAYER_CALLLIST[i].arg) == -1){ + PLAYER_CALLLIST[i].callback = nullptr; + } + } +} \ No newline at end of file From 408de73fc0292ca46b074c4abcd4adcc4cae6e2c Mon Sep 17 00:00:00 2001 From: Prakxo Date: Sat, 8 Jun 2024 19:53:07 +0200 Subject: [PATCH 022/234] fix playercall header --- include/jaudio_NES/playercall.h | 4 ---- 1 file changed, 4 deletions(-) diff --git a/include/jaudio_NES/playercall.h b/include/jaudio_NES/playercall.h index d7f9665d..1f242e98 100644 --- a/include/jaudio_NES/playercall.h +++ b/include/jaudio_NES/playercall.h @@ -12,12 +12,8 @@ extern void ResetPlayerCallback(); extern s32 Jac_RegisterDspPlayerCallback(PlayerCallBack callback, void* arg); extern s32 Jac_RegisterPlayerCallback(PlayerCallBack callback, void* arg); - #ifdef __cplusplus } #endif -extern void PlayerCallback(); -extern void DspPlayerCallback(); - #endif From 2bccc9208804933aaa2aa6aaae03173db43ab85f Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Sat, 8 Jun 2024 21:41:06 -0400 Subject: [PATCH 023/234] Implement & link jaudio_NES/random.c --- config/disasm_overrides.yml | 1 + config/dol_slices.yml | 4 ++++ include/jaudio_NES/random.h | 19 +++++++++++++++++ src/static/jaudio_NES/internal/random.c | 28 +++++++++++++++++++++++++ 4 files changed, 52 insertions(+) create mode 100644 include/jaudio_NES/random.h create mode 100644 src/static/jaudio_NES/internal/random.c diff --git a/config/disasm_overrides.yml b/config/disasm_overrides.yml index ac15580f..2f8ce230 100644 --- a/config/disasm_overrides.yml +++ b/config/disasm_overrides.yml @@ -7,6 +7,7 @@ symbol_aligns: 0x800190e0: 32 0x80019380: 32 0x8001a0c0: 32 + 0x80031d80: 32 0x80207458: 8 # align RunQueue to 0x001251d8 0x800b9140: 32 # align gam_win_moji1_tex to 32 bytes 0x801f71c0: 32 # align texture_buffer_data to 32 bytes diff --git a/config/dol_slices.yml b/config/dol_slices.yml index 2f0dc6e0..aec7a6ef 100644 --- a/config/dol_slices.yml +++ b/config/dol_slices.yml @@ -89,6 +89,10 @@ jaudio_NES/internal/playercall.c: .bss: [0x801864d0,0x80186590] jaudio_NES/internal/os.c: .text: [0x80026120, 0x80026300] +jaudio_NES/internal/random.c: + .text: [0x80031ce0, 0x80031d80] + .sdata: [0x80217c38, 0x80217c40] + .sdata2: [0x80218f60, 0x80218f70] Famicom/famicom.cpp: .text: [0x80041614, 0x80046888] # TODO: get ~J2DOrthoGraph's dtor in here somehow? 0x800468fc, also add in JUTGamePad::getPortStatus when JUTGamePad is linked? .rodata: [0x800aa9a8, 0x800aaa30] diff --git a/include/jaudio_NES/random.h b/include/jaudio_NES/random.h new file mode 100644 index 00000000..3fcbc880 --- /dev/null +++ b/include/jaudio_NES/random.h @@ -0,0 +1,19 @@ +#ifndef JAUDIO_RANDOM_H +#define JAUDIO_RANDOM_H + +#include "types.h" +#include "jaudio_NES/audiostruct.h" +#include "jaudio_NES/audiowork.h" + +#ifdef __cplusplus +extern "C" { +#endif + +extern s32 GetRandom_s32(void); +extern f32 GetRandom_sf32(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/static/jaudio_NES/internal/random.c b/src/static/jaudio_NES/internal/random.c new file mode 100644 index 00000000..3b217aad --- /dev/null +++ b/src/static/jaudio_NES/internal/random.c @@ -0,0 +1,28 @@ +#include "jaudio_NES/random.h" + +static s32 v0 = 0x0001000; +static s32 v1 = 0x0005555; + +#define V0_MULT (s32)0x13579BDE +#define V1_MULT (s32)0x98765432 + +extern s32 GetRandom_s32(void) { + s32 tmp; + + tmp = (v1 * V1_MULT) + ((v0 * V0_MULT) >> 4); + tmp += 1; + v0 = v1; + v1 = tmp; + return tmp; +} + +extern f32 GetRandom_sf32(void) { + s32 rnd = GetRandom_s32(); + f32 rnd_float = (f32)(rnd & 0x00FFFFFF) / (f32)(0x00FFFFFF); /* map to float [0, 1] */ + + if (rnd < 0) { + rnd_float = -rnd_float; + } + + return rnd_float; +} From 3bb7c0c89f0b3cc89949716c708d5816433303ab Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Sat, 8 Jun 2024 22:57:45 -0400 Subject: [PATCH 024/234] Implement & link jaudio_NES/internal/streamctrl.c --- config/disasm_overrides.yml | 2 + config/dol_slices.yml | 5 + include/dolphin/dvd.h | 131 +++++++++--------- include/jaudio_NES/streamctrl.h | 38 ++++++ src/static/jaudio_NES/internal/streamctrl.c | 143 ++++++++++++++++++++ 5 files changed, 255 insertions(+), 64 deletions(-) create mode 100644 src/static/jaudio_NES/internal/streamctrl.c diff --git a/config/disasm_overrides.yml b/config/disasm_overrides.yml index 2f8ce230..5b331fde 100644 --- a/config/disasm_overrides.yml +++ b/config/disasm_overrides.yml @@ -6,6 +6,7 @@ symbol_aligns: 0x80018920: 32 0x800190e0: 32 0x80019380: 32 + 0x80019760: 32 0x8001a0c0: 32 0x80031d80: 32 0x80207458: 8 # align RunQueue to 0x001251d8 @@ -14,3 +15,4 @@ symbol_aligns: 0x800daaa0: 32 # align texture_cache_data_func to 32 bytes 0x80206f30: 16 # malloc.c align 16 bytes 0x800ab260: 32 + 0x801864b0: 8 # dspbuf align 8 (not sure why this doesn't happen) diff --git a/config/dol_slices.yml b/config/dol_slices.yml index aec7a6ef..2cae983b 100644 --- a/config/dol_slices.yml +++ b/config/dol_slices.yml @@ -84,6 +84,11 @@ jaudio_NES/internal/neosthread.c: .bss: [0x80180020, 0x80186440] .sdata: [0x80217be0, 0x80217be8] .sbss: [0x80218460, 0x80218478] +jaudio_NES/internal/streamctrl.c: + .text: [0x80019380, 0x80019760] + .data: [0x800d01a8, 0x800d0278] + .bss: [0x80186440, 0x801864b0] + .sdata2: [0x80218dc0, 0x80218dd0] jaudio_NES/internal/playercall.c: .text: [0x80019dc0, 0x8001a0c0] .bss: [0x801864d0,0x80186590] diff --git a/include/dolphin/dvd.h b/include/dolphin/dvd.h index aa43e5e4..ad67fd06 100644 --- a/include/dolphin/dvd.h +++ b/include/dolphin/dvd.h @@ -19,89 +19,89 @@ typedef void (*DVDDoneReadCallback)(s32, DVDFileInfo*); typedef void (*DVDOptionalCommandChecker)(DVDCommandBlock* block, DVDLowCallback callback); typedef struct DVDDriveInfo { - u16 revisionLevel; // _00 - u16 deviceCode; // _02 - u32 releaseDate; // _04 - u8 padding[24]; // _08 + u16 revisionLevel; // _00 + u16 deviceCode; // _02 + u32 releaseDate; // _04 + u8 padding[24]; // _08 } DVDDriveInfo; // Struct for DVD information (size 0x20) typedef struct DVDDiskID { - char gameName[4]; // _00 - char company[2]; // _04 - u8 diskNumber; // _06 - u8 gameVersion; // _07 - u8 streaming; // _08 - u8 streamBufSize; // _09, default = 0 - u8 padding[22]; // _0A, all 0s + char gameName[4]; // _00 + char company[2]; // _04 + u8 diskNumber; // _06 + u8 gameVersion; // _07 + u8 streaming; // _08 + u8 streamBufSize; // _09, default = 0 + u8 padding[22]; // _0A, all 0s } DVDDiskID; // Struct for command information (size 0x30). struct DVDCommandBlock { - DVDCommandBlock* next; // _00 - DVDCommandBlock* prev; // _04 - u32 command; // _08 - s32 state; // _0C - u32 offset; // _10 - u32 length; // _14 - void* addr; // _18 - u32 currTransferSize; // _1C - u32 transferredSize; // _20 - DVDDiskID* id; // _24 - DVDCBCallback callback; // _28 - void* userData; // _2C + DVDCommandBlock* next; // _00 + DVDCommandBlock* prev; // _04 + u32 command; // _08 + s32 state; // _0C + u32 offset; // _10 + u32 length; // _14 + void* addr; // _18 + u32 currTransferSize; // _1C + u32 transferredSize; // _20 + DVDDiskID* id; // _24 + DVDCBCallback callback; // _28 + void* userData; // _2C }; // Struct for file information (size 0x3C). // NB: we had this as DVDPlayer previously. struct DVDFileInfo { - DVDCommandBlock cBlock; // _00 - u32 startAddr; // _30 - u32 length; // _34 - DVDCallback callback; // _38 + DVDCommandBlock cBlock; // _00 + u32 startAddr; // _30 + u32 length; // _34 + DVDCallback callback; // _38 }; // Struct for directory information (size 0xC). typedef struct DVDDir { - u32 entryNum; // _00 - u32 location; // _04 - u32 next; // _08 + u32 entryNum; // _00 + u32 location; // _04 + u32 next; // _08 } DVDDir; // Struct for directory entries (size 0xC). typedef struct DVDDirEntry { - u32 entryNum; // _00 - BOOL isDir; // _04 - char* name; // _08 + u32 entryNum; // _00 + BOOL isDir; // _04 + char* name; // _08 } DVDDirEntry; // Struct for handing queues. typedef struct DVDQueue DVDQueue; struct DVDQueue { - DVDQueue* mHead; // _00 - DVDQueue* mTail; // _04 + DVDQueue* mHead; // _00 + DVDQueue* mTail; // _04 }; // DVD Boot information instructions. // Struct 1. typedef struct DVDBB1 { - u32 appLoaderLength; // _00 - void* appLoaderFunc1; // _04 - void* appLoaderFunc2; // _08 - void* appLoaderFunc3; // _0C + u32 appLoaderLength; // _00 + void* appLoaderFunc1; // _04 + void* appLoaderFunc2; // _08 + void* appLoaderFunc3; // _0C } DVDBB1; // Struct 2. typedef struct DVDBB2 { - u32 bootFilePosition; // _00 - u32 FSTPosition; // _04 - u32 FSTLength; // _08 - u32 FSTMaxLength; // _0C - void* FSTAddress; // _10 - u32 userPosition; // _14 - u32 userLength; // _18 - u32 reserved_1C; // _1C + u32 bootFilePosition; // _00 + u32 FSTPosition; // _04 + u32 FSTLength; // _08 + u32 FSTMaxLength; // _0C + void* FSTAddress; // _10 + u32 userPosition; // _14 + u32 userLength; // _18 + u32 reserved_1C; // _1C } DVDBB2; ////////////////////////////////// @@ -143,6 +143,8 @@ s32 DVDGetTransferredSize(DVDFileInfo* fileInfo); DVDDiskID* DVDGetCurrentDiskID(); BOOL DVDCompareDiskID(DVDDiskID* id1, DVDDiskID* id2); DVDLowCallback DVDLowClearCallback(); +BOOL DVDPrepareStreamAsync(DVDFileInfo* fileInfo, u32 length, u32 offset, DVDCallback callback); +s32 DVDCancelStream(DVDCommandBlock* block); BOOL DVDCheckDisk(); @@ -160,36 +162,37 @@ void DVDDumpWaitingQueue(); ////// USEFUL DVD DEFINES //////// // Macro for reading. -#define DVDReadAsync(fileInfo, addr, length, offset, callback) DVDReadAsyncPrio((fileInfo), (addr), (length), (offset), (callback), 2) +#define DVDReadAsync(fileInfo, addr, length, offset, callback) \ + DVDReadAsyncPrio((fileInfo), (addr), (length), (offset), (callback), 2) #define DVDGetFileInfoStatus(fileInfo) DVDGetCommandBlockStatus(&(fileInfo)->cBlock) // Minimum transfer size. #define DVD_MIN_TRANSFER_SIZE 32 // DVD states. -#define DVD_STATE_FATAL_ERROR -1 -#define DVD_STATE_END 0 -#define DVD_STATE_BUSY 1 -#define DVD_STATE_WAITING 2 -#define DVD_STATE_COVER_CLOSED 3 -#define DVD_STATE_NO_DISK 4 -#define DVD_STATE_COVER_OPEN 5 -#define DVD_STATE_WRONG_DISK 6 +#define DVD_STATE_FATAL_ERROR -1 +#define DVD_STATE_END 0 +#define DVD_STATE_BUSY 1 +#define DVD_STATE_WAITING 2 +#define DVD_STATE_COVER_CLOSED 3 +#define DVD_STATE_NO_DISK 4 +#define DVD_STATE_COVER_OPEN 5 +#define DVD_STATE_WRONG_DISK 6 #define DVD_STATE_MOTOR_STOPPED 7 -#define DVD_STATE_PAUSING 8 -#define DVD_STATE_IGNORED 9 -#define DVD_STATE_CANCELED 10 -#define DVD_STATE_RETRY 11 +#define DVD_STATE_PAUSING 8 +#define DVD_STATE_IGNORED 9 +#define DVD_STATE_CANCELED 10 +#define DVD_STATE_RETRY 11 // File info states. #define DVD_FILEINFO_READY 0 -#define DVD_FILEINFO_BUSY 1 +#define DVD_FILEINFO_BUSY 1 // DVD results. -#define DVD_RESULT_GOOD 0 +#define DVD_RESULT_GOOD 0 #define DVD_RESULT_FATAL_ERROR -1 -#define DVD_RESULT_IGNORED -2 -#define DVD_RESULT_CANCELED -3 +#define DVD_RESULT_IGNORED -2 +#define DVD_RESULT_CANCELED -3 #define DVD_AIS_SUCCESS 0 diff --git a/include/jaudio_NES/streamctrl.h b/include/jaudio_NES/streamctrl.h index e2048d92..9cb51872 100644 --- a/include/jaudio_NES/streamctrl.h +++ b/include/jaudio_NES/streamctrl.h @@ -3,6 +3,44 @@ #include "types.h" +/* @unused */ +// Jac_PlayStreamBGM(s32, s32, s32); +// Jac_StopStreamBGM(s32, s32); +// Jac_VolMoveStreamBGM(s32, s32); + +#define JSTREAM_NO_TRACK_ID (-1) +#define JSTREAM_FADEOUT_TIMER (120) + +typedef struct JSTREAM_ { + s32 state; + s32 req_stream_id; + s32 now_stream_id; + f32 fadein_vol; + s32 fadein_vol_timer; + s32 _14; + s32 fadeout_timer; + f32 target_vol1; + s32 change_vol_timer1; + f32 stream_vol; + u32 total_samples; +} JSTREAM; + +typedef enum JSTREAM_STATE_ { + JSTREAM_STATE_STOPPED, + JSTREAM_STATE_REQUEST_STREAM, + JSTREAM_STATE_START, + JSTREAM_STATE_PLAYING, + JSTREAM_STATE_CANCELLED, + JSTREAM_STATE_FADEOUT, + JSTREAM_STATE_STOP, + JSTREAM_STATE_CLEANUP, + + JSTREAM_STATE_NUM +} JSTREAM_STATE; + +extern char J_STREAMNAME[][16]; +extern JSTREAM J_STREAM; + extern void StreamMain(void); #endif diff --git a/src/static/jaudio_NES/internal/streamctrl.c b/src/static/jaudio_NES/internal/streamctrl.c new file mode 100644 index 00000000..1423b852 --- /dev/null +++ b/src/static/jaudio_NES/internal/streamctrl.c @@ -0,0 +1,143 @@ +#include "jaudio_NES/streamctrl.h" + +#include "jaudio_NES/audiowork.h" +#include "jaudio_NES/rate.h" +#include "dolphin/ai.h" +#include "dolphin/dvd.h" + +char J_STREAMNAME[8][16] = { + "/stream00.adp", "/stream01.adp", "/stream02.adp", "/stream03.adp", + "/stream04.adp", "/stream05.adp", "/stream06.adp", "/stream07.adp", +}; + +// clang-format off +JSTREAM J_STREAM = { + JSTREAM_STATE_STOPPED, + JSTREAM_NO_TRACK_ID, JSTREAM_NO_TRACK_ID, + 0.0f, 0, + 0, + 0, + 0.0f, 0, + 0.0f, + 0 +}; +// clang-format on + +/* @fabricated -- necessary for float ordering */ +#pragma force_active on +MATCH_FORCESTRIP static f32 Jac_VolMoveStreamBGM(s32 l, s32 r) { + // AISetStreamVolLeft((s32)(f32)l); + // AISetStreamVolRight((s32)(f32)r); + return l; +} +#pragma force_active reset + +extern void StreamMain(void) { + static DVDFileInfo finfo; + static DVDCommandBlock cmd; + u32 streamed_samples; + u32 trigger; + + switch (J_STREAM.state) { + case JSTREAM_STATE_STOPPED: + break; + + case JSTREAM_STATE_REQUEST_STREAM: + J_STREAM.now_stream_id = J_STREAM.req_stream_id; + J_STREAM.req_stream_id = JSTREAM_NO_TRACK_ID; + if (J_STREAM.now_stream_id == JSTREAM_NO_TRACK_ID) { + J_STREAM.state = JSTREAM_STATE_STOPPED; + } else { + if (DVDOpen(J_STREAMNAME[J_STREAM.now_stream_id], &finfo) == FALSE) { + J_STREAM.now_stream_id = JSTREAM_NO_TRACK_ID; + J_STREAM.state = JSTREAM_STATE_STOPPED; + } else { + J_STREAM.total_samples = finfo.length; + J_STREAM.total_samples = + (J_STREAM.total_samples / 256) * 224; // TODO: should probably make these defines + AISetStreamSampleRate(AI_SAMPLERATE_48KHZ); + if (J_STREAM.fadein_vol_timer == 0) { + J_STREAM.stream_vol = J_STREAM.fadein_vol; + } else { + J_STREAM.stream_vol = 0.0f; + } + + AISetStreamVolLeft((s32)J_STREAM.stream_vol); + AISetStreamVolRight((s32)J_STREAM.stream_vol); + DVDPrepareStreamAsync(&finfo, 0, 0, nullptr); + J_STREAM.state = JSTREAM_STATE_START; + } + } + break; + + case JSTREAM_STATE_START: + if (DVDGetDriveStatus() == DVD_STATE_END) { + AIResetStreamSampleCount(); + AISetStreamPlayState(AI_STREAM_START); + J_STREAM.state = JSTREAM_STATE_PLAYING; + } + break; + + case JSTREAM_STATE_PLAYING: + streamed_samples = AIGetStreamSampleCount(); + trigger = AIGetStreamTrigger(); + + if (J_STREAM.fadein_vol_timer != 0) { + f32 vol = J_STREAM.fadein_vol; + vol -= J_STREAM.stream_vol; + vol /= (f32)J_STREAM.fadein_vol_timer; + J_STREAM.stream_vol += vol; + J_STREAM.fadein_vol_timer--; + AISetStreamVolLeft((s32)J_STREAM.stream_vol); + AISetStreamVolRight((s32)J_STREAM.stream_vol); + } + + if (J_STREAM.change_vol_timer1 != 0) { + f32 vol = J_STREAM.target_vol1; + vol -= J_STREAM.stream_vol; + vol /= (f32)J_STREAM.change_vol_timer1; + J_STREAM.stream_vol += vol; + J_STREAM.change_vol_timer1--; + AISetStreamVolLeft((s32)J_STREAM.stream_vol); + AISetStreamVolRight((s32)J_STREAM.stream_vol); + } + + if ((J_STREAM.total_samples - streamed_samples) < (JAC_FRAMESAMPLES * JSTREAM_FADEOUT_TIMER)) { + J_STREAM.state = JSTREAM_STATE_FADEOUT; + J_STREAM.fadeout_timer = JSTREAM_FADEOUT_TIMER; + } + break; + + case JSTREAM_STATE_CANCELLED: + case JSTREAM_STATE_FADEOUT: + u32 streamed_samples = AIGetStreamSampleCount(); + if (J_STREAM.fadeout_timer != 0 && (J_STREAM.total_samples - streamed_samples) != 0) { + f32 vol = -J_STREAM.stream_vol; + vol /= (f32)J_STREAM.fadeout_timer; + J_STREAM.stream_vol += vol; + J_STREAM.fadeout_timer--; + AISetStreamVolLeft((s32)J_STREAM.stream_vol); + AISetStreamVolRight((s32)J_STREAM.stream_vol); + } else { + DVDCancelStream(&cmd); + J_STREAM.state = JSTREAM_STATE_STOP; + } + break; + + case JSTREAM_STATE_STOP: + if (DVDGetDriveStatus() == DVD_STATE_END) { + AISetStreamPlayState(AI_STREAM_STOP); + J_STREAM.state = JSTREAM_STATE_CLEANUP; + } + break; + + case JSTREAM_STATE_CLEANUP: + if (DVDGetDriveStatus() == DVD_STATE_END) { + DVDClose(&finfo); + J_STREAM.now_stream_id = -1; + J_STREAM.state = JSTREAM_STATE_REQUEST_STREAM; + AISetStreamPlayState(AI_STREAM_STOP); + } + break; + } +} From 2ec1e23fe5bdefe8593a27437c9c25a1fc702d93 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Sun, 9 Jun 2024 20:29:22 -0400 Subject: [PATCH 025/234] Implement & link jaudio_NES/[dspbuf.c, cpubuf.c] --- config/dol_slices.yml | 9 ++ include/jaudio_NES/audiocommon.h | 6 +- include/jaudio_NES/cpubuf.h | 3 +- include/jaudio_NES/dspbuf.h | 3 +- include/jaudio_NES/dspdriver.h | 8 ++ include/jaudio_NES/dspinterface.h | 1 + include/jaudio_NES/dspproc.h | 1 + include/jaudio_NES/ipldec.h | 8 ++ include/jaudio_NES/neosthread.h | 3 + include/jaudio_NES/playercall.h | 4 + include/jaudio_NES/rate.h | 1 + src/static/jaudio_NES/internal/audiothread.c | 4 +- src/static/jaudio_NES/internal/cpubuf.c | 93 ++++++++++++++++ src/static/jaudio_NES/internal/dspbuf.c | 111 +++++++++++++++++++ src/static/jaudio_NES/internal/neosthread.c | 2 +- src/static/jaudio_NES/internal/playercall.c | 71 ++++++------ 16 files changed, 284 insertions(+), 44 deletions(-) create mode 100644 include/jaudio_NES/dspdriver.h create mode 100644 include/jaudio_NES/ipldec.h create mode 100644 src/static/jaudio_NES/internal/cpubuf.c create mode 100644 src/static/jaudio_NES/internal/dspbuf.c diff --git a/config/dol_slices.yml b/config/dol_slices.yml index 2cae983b..bbf18cb8 100644 --- a/config/dol_slices.yml +++ b/config/dol_slices.yml @@ -89,6 +89,15 @@ jaudio_NES/internal/streamctrl.c: .data: [0x800d01a8, 0x800d0278] .bss: [0x80186440, 0x801864b0] .sdata2: [0x80218dc0, 0x80218dd0] +jaudio_NES/internal/dspbuf.c: + .text: [0x80019760, 0x80019ae0] + .rodata: [0x800aa558, 0x800aa570] + .bss: [0x801864b0, 0x801864c0] + .sbss: [0x80218478, 0x80218488] +jaudio_NES/internal/cpubuf.c: + .text: [0x80019ae0, 0x80019dc0] + .bss: [0x801864c0, 0x801864d0] + .sbss: [0x80218488, 0x80218498] jaudio_NES/internal/playercall.c: .text: [0x80019dc0, 0x8001a0c0] .bss: [0x801864d0,0x80186590] diff --git a/include/jaudio_NES/audiocommon.h b/include/jaudio_NES/audiocommon.h index 6165526d..d62dd1d4 100644 --- a/include/jaudio_NES/audiocommon.h +++ b/include/jaudio_NES/audiocommon.h @@ -20,9 +20,9 @@ extern "C" { (u32)((((a0) & 0xFF) << 24) | (((a1) & 0xFF) << 16) | (((a2) & 0xFF) << 8) | (((a3) & 0xFF) << 0)) typedef enum DSPBUF_EVENTS { - DSPBUF_EVENTS_0 = 0, - DSPBUF_EVENTS_1 = 1, - DSPBUF_EVENTS_2 = 2, + DSPBUF_EVENT_INIT = 0, + DSPBUF_EVENT_FRAME_END = 1, + DSPBUF_EVENT_MIX = 2, } DSPBUF_EVENTS; typedef enum SampleMedium { diff --git a/include/jaudio_NES/cpubuf.h b/include/jaudio_NES/cpubuf.h index a90de7e4..a834d4b0 100644 --- a/include/jaudio_NES/cpubuf.h +++ b/include/jaudio_NES/cpubuf.h @@ -2,9 +2,10 @@ #define CPUBUF_H #include "types.h" +#include "jaudio_NES/rate.h" #include "jaudio_NES/audiocommon.h" -extern u32 CpubufProcess(DSPBUF_EVENTS event); +extern s16* CpubufProcess(DSPBUF_EVENTS event); extern void CpuFrameEnd(void); extern s16* MixCpu(s32 nSamples); diff --git a/include/jaudio_NES/dspbuf.h b/include/jaudio_NES/dspbuf.h index c45a713e..0068df77 100644 --- a/include/jaudio_NES/dspbuf.h +++ b/include/jaudio_NES/dspbuf.h @@ -3,8 +3,9 @@ #include "types.h" #include "jaudio_NES/audiocommon.h" +#include "jaudio_NES/rate.h" -extern u32 DspbufProcess(DSPBUF_EVENTS event); +extern s16* DspbufProcess(DSPBUF_EVENTS event); extern s16* MixDsp(s32 nSamples); extern void UpdateDSP(void); extern void DspFrameEnd(void); diff --git a/include/jaudio_NES/dspdriver.h b/include/jaudio_NES/dspdriver.h new file mode 100644 index 00000000..0e3fbba6 --- /dev/null +++ b/include/jaudio_NES/dspdriver.h @@ -0,0 +1,8 @@ +#ifndef DSPDRIVER_H +#define DSPDRIVER_H + +#include "types.h" + +extern void UpdateDSPchannelAll(void); + +#endif diff --git a/include/jaudio_NES/dspinterface.h b/include/jaudio_NES/dspinterface.h index 0cc55ead..d1f35aea 100644 --- a/include/jaudio_NES/dspinterface.h +++ b/include/jaudio_NES/dspinterface.h @@ -4,5 +4,6 @@ #include "types.h" extern void DSP_InitBuffer(void); +extern void DSP_InvalChannelAll(void); #endif diff --git a/include/jaudio_NES/dspproc.h b/include/jaudio_NES/dspproc.h index 5bd9e1a3..018be422 100644 --- a/include/jaudio_NES/dspproc.h +++ b/include/jaudio_NES/dspproc.h @@ -4,5 +4,6 @@ #include "types.h" extern u32 DSPReleaseHalt(void); +extern void DsyncFrame(u32 subframes, u32 dspbuf_start, u32 dspbuf_end); #endif diff --git a/include/jaudio_NES/ipldec.h b/include/jaudio_NES/ipldec.h new file mode 100644 index 00000000..c86fc8c1 --- /dev/null +++ b/include/jaudio_NES/ipldec.h @@ -0,0 +1,8 @@ +#ifndef IPLDEC_H +#define IPLDEC_H + +#include "types.h" + +extern BOOL DspExtraTaskCheck(void); + +#endif diff --git a/include/jaudio_NES/neosthread.h b/include/jaudio_NES/neosthread.h index 17e552b3..c0600c44 100644 --- a/include/jaudio_NES/neosthread.h +++ b/include/jaudio_NES/neosthread.h @@ -4,6 +4,9 @@ #include "types.h" #include "jaudio_NES/audiostruct.h" +extern u32 Neos_Update(s16* dst); +extern void ImageLoaded(u32 param); +extern BOOL Neos_CheckBoot(void); extern void* neosproc(void* param); #endif diff --git a/include/jaudio_NES/playercall.h b/include/jaudio_NES/playercall.h index 1f242e98..9b9a5cab 100644 --- a/include/jaudio_NES/playercall.h +++ b/include/jaudio_NES/playercall.h @@ -16,4 +16,8 @@ extern s32 Jac_RegisterPlayerCallback(PlayerCallBack callback, void* arg); } #endif +/* C++ linkage, should these go in a different header file? */ +extern void PlayerCallback(); +extern void DspPlayerCallback(); + #endif diff --git a/include/jaudio_NES/rate.h b/include/jaudio_NES/rate.h index f063e142..ef121740 100644 --- a/include/jaudio_NES/rate.h +++ b/include/jaudio_NES/rate.h @@ -8,6 +8,7 @@ extern "C" { #endif extern u32 JAC_AI_SETTING; +extern u32 JAC_SUBFRAMES; extern u32 JAC_FRAMESAMPLES; extern u32 DAC_SIZE; diff --git a/src/static/jaudio_NES/internal/audiothread.c b/src/static/jaudio_NES/internal/audiothread.c index bafc71ca..5d3ffeb6 100644 --- a/src/static/jaudio_NES/internal/audiothread.c +++ b/src/static/jaudio_NES/internal/audiothread.c @@ -98,8 +98,8 @@ static void* audioproc(void* param) { Jac_Init(); Jac_InitSinTable(); ResetPlayerCallback(); - DspbufProcess(DSPBUF_EVENTS_0); - CpubufProcess(DSPBUF_EVENTS_0); + DspbufProcess(DSPBUF_EVENT_INIT); + CpubufProcess(DSPBUF_EVENT_INIT); DspBoot(); DSP_InitBuffer(); __DspReg(); diff --git a/src/static/jaudio_NES/internal/cpubuf.c b/src/static/jaudio_NES/internal/cpubuf.c new file mode 100644 index 00000000..684c5c44 --- /dev/null +++ b/src/static/jaudio_NES/internal/cpubuf.c @@ -0,0 +1,93 @@ +#include "jaudio_NES/cpubuf.h" + +#include "jaudio_NES/aictrl.h" +#include "jaudio_NES/audiothread.h" +#include "jaudio_NES/neosthread.h" +#include "jaudio_NES/playercall.h" +#include "jaudio_NES/dummyprobe.h" + +#define DSPBUF_NUM 3 + +static u8 write_buffer = 0; +static u8 read_buffer = 0; +static u8 dspstatus = 0; +static s16* dsp_buf[DSPBUF_NUM]; +static u32 dac_sync_counter = 0; + +extern s16* CpubufProcess(DSPBUF_EVENTS event) { + u32 i; + u32 j; + + switch (event) { + case DSPBUF_EVENT_INIT: + write_buffer = 2; + read_buffer = 0; + for (i = 0; i < DSPBUF_NUM; i++) { + dsp_buf[i] = (s16*)OSAlloc2(JAC_FRAMESAMPLES << 2); + for (j = 0; j < (JAC_FRAMESAMPLES << 1); j++) { + dsp_buf[i][j] = 0; + } + + DCStoreRange(dsp_buf[i], JAC_FRAMESAMPLES << 2); + } + + dspstatus = 0; + break; + case DSPBUF_EVENT_FRAME_END: + u8 write = write_buffer + 1; + + if (write == DSPBUF_NUM) { + write = 0; + } + + if (write == read_buffer) { + dspstatus = 0; + } else { + write_buffer = write; + if (Neos_Update(dsp_buf[write_buffer]) == TRUE) { + dspstatus = 1; + } + } + break; + case DSPBUF_EVENT_MIX: + u8 read = read_buffer + 1; + if (read == DSPBUF_NUM) { + read = 0; + } + + if (read == write_buffer) { + s16 left = dsp_buf[read_buffer][(JAC_FRAMESAMPLES / 2) - 1]; + s16 right = dsp_buf[read_buffer][JAC_FRAMESAMPLES - 1]; + + for (i = 0; i < JAC_FRAMESAMPLES; i++) { + dsp_buf[read_buffer][i] = right; + } + + for (i = JAC_FRAMESAMPLES; i < (JAC_FRAMESAMPLES << 1); i++) { + dsp_buf[read_buffer][i] = left; + } + + if (dspstatus == 0) { + CpubufProcess(DSPBUF_EVENT_FRAME_END); + } + } else { + read_buffer = read; + if (dspstatus == 0) { + CpubufProcess(DSPBUF_EVENT_FRAME_END); + } + } + + return dsp_buf[read_buffer]; + } + + return nullptr; +} + +extern s16* MixCpu(s32 n_samples) { + static s32 cur = 0; + return CpubufProcess(DSPBUF_EVENT_MIX); +} + +extern void CpuFrameEnd(void) { + CpubufProcess(DSPBUF_EVENT_FRAME_END); +} diff --git a/src/static/jaudio_NES/internal/dspbuf.c b/src/static/jaudio_NES/internal/dspbuf.c new file mode 100644 index 00000000..63108ef6 --- /dev/null +++ b/src/static/jaudio_NES/internal/dspbuf.c @@ -0,0 +1,111 @@ +#include "jaudio_NES/dspbuf.h" + +#include "jaudio_NES/aictrl.h" +#include "jaudio_NES/ipldec.h" +#include "jaudio_NES/audiothread.h" +#include "jaudio_NES/dspproc.h" +#include "jaudio_NES/dspdriver.h" +#include "jaudio_NES/dspinterface.h" +#include "jaudio_NES/playercall.h" +#include "jaudio_NES/dummyprobe.h" + +#define DSPBUF_NUM 3 + +static u8 write_buffer = 0; +static u8 read_buffer = 0; +static u8 dspstatus = 0; +static s16* dsp_buf[DSPBUF_NUM]; +static u32 dac_sync_counter = 0; + +extern s16* DspbufProcess(DSPBUF_EVENTS event) { + u32 i; + u32 j; + + switch (event) { + case DSPBUF_EVENT_INIT: + write_buffer = 2; + read_buffer = 0; + for (i = 0; i < DSPBUF_NUM; i++) { + dsp_buf[i] = (s16*)OSAlloc2(JAC_FRAMESAMPLES << 2); + for (j = 0; j < (JAC_FRAMESAMPLES << 1); j++) { + dsp_buf[i][j] = 0; + } + + DCStoreRange(dsp_buf[i], JAC_FRAMESAMPLES << 2); + } + + dspstatus = 0; + break; + case DSPBUF_EVENT_FRAME_END: + DspExtraTaskCheck(); + u8 write = write_buffer + 1; + + if (write == DSPBUF_NUM) { + write = 0; + } + + if (write == read_buffer) { + dspstatus = 0; + } else { + write_buffer = write; + DspSyncCountClear(JAC_SUBFRAMES); + Probe_Start(7, "DSP-MAIN"); + DsyncFrame(JAC_SUBFRAMES, (u32)dsp_buf[write_buffer], (u32)&dsp_buf[write_buffer][JAC_FRAMESAMPLES]); + dspstatus = 1; + UpdateDSP(); + } + break; + case DSPBUF_EVENT_MIX: + u8 read = read_buffer + 1; + if (read == DSPBUF_NUM) { + read = 0; + } + + if (read == write_buffer) { + s16 left = dsp_buf[read_buffer][(JAC_FRAMESAMPLES / 2) - 1]; + s16 right = dsp_buf[read_buffer][JAC_FRAMESAMPLES - 1]; + + for (i = 0; i < JAC_FRAMESAMPLES; i++) { + dsp_buf[read_buffer][i] = left; + } + + for (i = JAC_FRAMESAMPLES; i < (JAC_FRAMESAMPLES << 1); i++) { + dsp_buf[read_buffer][i] = right; + } + + if (dspstatus == 0) { + DspbufProcess(DSPBUF_EVENT_FRAME_END); + } + } else { + read_buffer = read; + DCInvalidateRange(dsp_buf[read_buffer], JAC_FRAMESAMPLES << 2); + if (dspstatus == 0) { + DspbufProcess(DSPBUF_EVENT_FRAME_END); + } + } + + return dsp_buf[read_buffer]; + } + + return nullptr; +} + +extern void UpdateDSP(void) { + dac_sync_counter++; + Probe_Start(3, "SFR-UPDATE"); + DSP_InvalChannelAll(); + DspPlayerCallback(); + UpdateDSPchannelAll(); + DSPReleaseHalt(); + PlayerCallback(); + Probe_Finish(3); +} + +extern s16* MixDsp(s32 n_samples) { + static s32 cur = 0; + return DspbufProcess(DSPBUF_EVENT_MIX); +} + +extern void DspFrameEnd(void) { + DspbufProcess(DSPBUF_EVENT_FRAME_END); +} diff --git a/src/static/jaudio_NES/internal/neosthread.c b/src/static/jaudio_NES/internal/neosthread.c index 73f93298..db0fe564 100644 --- a/src/static/jaudio_NES/internal/neosthread.c +++ b/src/static/jaudio_NES/internal/neosthread.c @@ -22,7 +22,7 @@ static u32 neosproc_mq_init = FALSE; static s16* tmp_buf = nullptr; static BOOL neos_ready = FALSE; -extern BOOL Neos_Update(s16* dst) { +extern u32 Neos_Update(s16* dst) { if (neosproc_mq_init) { if (OSSendMessage(&neosproc_mq, (OSMessage)dst, OS_MESSAGE_NOBLOCK) == TRUE) { return TRUE; diff --git a/src/static/jaudio_NES/internal/playercall.c b/src/static/jaudio_NES/internal/playercall.c index 8ae19009..58a13730 100644 --- a/src/static/jaudio_NES/internal/playercall.c +++ b/src/static/jaudio_NES/internal/playercall.c @@ -3,29 +3,29 @@ static PLAYER_CALL PLAYER_CALLLIST[16]; -extern void ResetPlayerCallback(){ +extern void ResetPlayerCallback() { int i; - for(i = 0; i < 16; i++){ + for (i = 0; i < 16; i++) { PLAYER_CALLLIST[i].callback = nullptr; } } -static s32 Jac_CheckPlayerCallback(PlayerCallBack callback, void* arg){ - int i; +static s32 Jac_CheckPlayerCallback(PlayerCallBack callback, void* arg) { + int i; - for(i = 0; i < 16; i++){ - if(PLAYER_CALLLIST[i].callback == callback && PLAYER_CALLLIST[i].arg == arg){ + for (i = 0; i < 16; i++) { + if (PLAYER_CALLLIST[i].callback == callback && PLAYER_CALLLIST[i].arg == arg) { return i; } - } + } return -1; } -extern s32 Jac_RegisterDspPlayerCallback(PlayerCallBack callback, void* arg){ - s32 idx = Jac_RegisterPlayerCallback(callback,arg); +extern s32 Jac_RegisterDspPlayerCallback(PlayerCallBack callback, void* arg) { + s32 idx = Jac_RegisterPlayerCallback(callback, arg); - if(idx == -1){ + if (idx == -1) { return -1; } @@ -34,23 +34,22 @@ extern s32 Jac_RegisterDspPlayerCallback(PlayerCallBack callback, void* arg){ return idx; } -extern s32 Jac_RegisterPlayerCallback(PlayerCallBack callback, void* arg){ - u32 i; +extern s32 Jac_RegisterPlayerCallback(PlayerCallBack callback, void* arg) { + u32 i; - for(i = 0; i < 16; i++){ - if(PLAYER_CALLLIST[i].callback == nullptr){ + for (i = 0; i < 16; i++) { + if (PLAYER_CALLLIST[i].callback == nullptr) { break; } - } + } - if(i == 16){ + if (i == 16) { return -1; } - - if(Jac_CheckPlayerCallback(callback,arg) != -1){ + + if (Jac_CheckPlayerCallback(callback, arg) != -1) { return -1; - } - else{ + } else { PLAYER_CALLLIST[i].callback = callback; PLAYER_CALLLIST[i].arg = arg; PLAYER_CALLLIST[i].DSP_mode = false; @@ -60,24 +59,24 @@ extern s32 Jac_RegisterPlayerCallback(PlayerCallBack callback, void* arg){ return -1; } -extern void PlayerCallback(){ - u32 i; +extern void PlayerCallback() { + u32 i; - for(i = 0; i < 16; i++){ + for (i = 0; i < 16; i++) { PlayerCallBack callback = PLAYER_CALLLIST[i].callback; - if(callback != nullptr && PLAYER_CALLLIST[i].DSP_mode == false && callback(PLAYER_CALLLIST[i].arg) == -1){ - PLAYER_CALLLIST[i].callback = nullptr; - } - } -} - -extern void DspPlayerCallback(){ - u32 i; - - for(i = 0; i < 16; i++){ - PlayerCallBack callback = PLAYER_CALLLIST[i].callback; - if(callback != nullptr && PLAYER_CALLLIST[i].DSP_mode == true && callback(PLAYER_CALLLIST[i].arg) == -1){ + if (callback != nullptr && PLAYER_CALLLIST[i].DSP_mode == false && callback(PLAYER_CALLLIST[i].arg) == -1) { PLAYER_CALLLIST[i].callback = nullptr; } } -} \ No newline at end of file +} + +extern void DspPlayerCallback() { + u32 i; + + for (i = 0; i < 16; i++) { + PlayerCallBack callback = PLAYER_CALLLIST[i].callback; + if (callback != nullptr && PLAYER_CALLLIST[i].DSP_mode == true && callback(PLAYER_CALLLIST[i].arg) == -1) { + PLAYER_CALLLIST[i].callback = nullptr; + } + } +} From 94587058b931dd567b62e1825df5ba28f82683ad Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Sun, 9 Jun 2024 20:36:14 -0400 Subject: [PATCH 026/234] Implement & link jaudio_NES/astest.c --- config/disasm_overrides.yml | 1 + config/dol_slices.yml | 2 ++ include/jaudio_NES/astest.h | 9 +++++++++ src/static/jaudio_NES/internal/astest.c | 5 +++++ 4 files changed, 17 insertions(+) create mode 100644 include/jaudio_NES/astest.h create mode 100644 src/static/jaudio_NES/internal/astest.c diff --git a/config/disasm_overrides.yml b/config/disasm_overrides.yml index 5b331fde..525ded38 100644 --- a/config/disasm_overrides.yml +++ b/config/disasm_overrides.yml @@ -8,6 +8,7 @@ symbol_aligns: 0x80019380: 32 0x80019760: 32 0x8001a0c0: 32 + 0x80026400: 32 0x80031d80: 32 0x80207458: 8 # align RunQueue to 0x001251d8 0x800b9140: 32 # align gam_win_moji1_tex to 32 bytes diff --git a/config/dol_slices.yml b/config/dol_slices.yml index bbf18cb8..e3d89f35 100644 --- a/config/dol_slices.yml +++ b/config/dol_slices.yml @@ -103,6 +103,8 @@ jaudio_NES/internal/playercall.c: .bss: [0x801864d0,0x80186590] jaudio_NES/internal/os.c: .text: [0x80026120, 0x80026300] +jaudio_NES/internal/astest.c: + .text: [0x80026300, 0x80026400] jaudio_NES/internal/random.c: .text: [0x80031ce0, 0x80031d80] .sdata: [0x80217c38, 0x80217c40] diff --git a/include/jaudio_NES/astest.h b/include/jaudio_NES/astest.h new file mode 100644 index 00000000..14b9a212 --- /dev/null +++ b/include/jaudio_NES/astest.h @@ -0,0 +1,9 @@ +#ifndef ASTEST_H +#define ASTEST_H + +#include "types.h" +#include "jaudio_NES/audiostruct.h" + +extern void CopyStc(commonch* dstStc, commonch* srcStc); + +#endif diff --git a/src/static/jaudio_NES/internal/astest.c b/src/static/jaudio_NES/internal/astest.c new file mode 100644 index 00000000..24e78783 --- /dev/null +++ b/src/static/jaudio_NES/internal/astest.c @@ -0,0 +1,5 @@ +#include "jaudio_NES/astest.h" + +extern void CopyStc(commonch* dstStc, commonch* srcStc) { + *dstStc = *srcStc; +} From d5dd0af4babd4c1c28f835303afb0c701626a9b1 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Mon, 10 Jun 2024 07:27:24 -0400 Subject: [PATCH 027/234] Implement & link jaudio_NES/sub_sys.c --- config/dol_slices.yml | 6 + include/jaudio_NES/audiocommon.h | 112 ++++ include/jaudio_NES/audiomacro.h | 9 + include/jaudio_NES/audiostruct.h | 68 ++- include/jaudio_NES/audiotable.h | 9 + include/jaudio_NES/audiowork.h | 12 + include/jaudio_NES/channel.h | 8 + include/jaudio_NES/driver.h | 9 + include/jaudio_NES/memory.h | 7 + include/jaudio_NES/sub_sys.h | 33 +- include/jaudio_NES/system.h | 28 + include/jaudio_NES/track.h | 10 + src/static/jaudio_NES/game/rhythm.c | 8 +- src/static/jaudio_NES/game/staff.c | 6 +- src/static/jaudio_NES/internal/sub_sys.c | 704 +++++++++++++++++++++++ 15 files changed, 985 insertions(+), 44 deletions(-) create mode 100644 include/jaudio_NES/audiomacro.h create mode 100644 include/jaudio_NES/audiotable.h create mode 100644 include/jaudio_NES/channel.h create mode 100644 include/jaudio_NES/driver.h create mode 100644 include/jaudio_NES/track.h create mode 100644 src/static/jaudio_NES/internal/sub_sys.c diff --git a/config/dol_slices.yml b/config/dol_slices.yml index e3d89f35..b19a5dd6 100644 --- a/config/dol_slices.yml +++ b/config/dol_slices.yml @@ -101,6 +101,12 @@ jaudio_NES/internal/cpubuf.c: jaudio_NES/internal/playercall.c: .text: [0x80019dc0, 0x8001a0c0] .bss: [0x801864d0,0x80186590] +jaudio_NES/internal/sub_sys.c: + .text: [0x80024ae0, 0x80026120] + .rodata: [0x800aa700, 0x800aa720] + .data: [0x800d0300, 0x800d0390] + .sbss: [0x80218510, 0x80218528] + .sdata2: [0x80218e48, 0x80218e60] jaudio_NES/internal/os.c: .text: [0x80026120, 0x80026300] jaudio_NES/internal/astest.c: diff --git a/include/jaudio_NES/audiocommon.h b/include/jaudio_NES/audiocommon.h index d62dd1d4..d1e688da 100644 --- a/include/jaudio_NES/audiocommon.h +++ b/include/jaudio_NES/audiocommon.h @@ -16,6 +16,14 @@ extern "C" { #define AUDIO_GROUP_MAX 5 #define AUDIO_SUBTRACK_NUM 16 +#define AUDIO_TATUMS_PER_BEAT 48 + +#define AUDIO_MUTE_FLAG_STOP_SAMPLES (1 << 3) +#define AUDIO_MUTE_FLAG_STOP_NOTE (1 << 4) +#define AUDIO_MUTE_FLAG_SOFTEN (1 << 5) +#define AUDIO_MUTE_FLAG_6 (1 << 6) +#define AUDIO_MUTE_FLAG_STOP_SCRIPT (1 << 7) + #define NA_MAKE_COMMAND(a0, a1, a2, a3) \ (u32)((((a0) & 0xFF) << 24) | (((a1) & 0xFF) << 16) | (((a2) & 0xFF) << 8) | (((a3) & 0xFF) << 0)) @@ -41,6 +49,110 @@ typedef enum AudioCacheLoadType { /* 4 */ CACHE_LOAD_EITHER_NOSYNC } AudioCacheLoadType; +typedef enum AdsrStatus { + /* 0 */ ADSR_STATUS_DISABLED, + /* 1 */ ADSR_STATUS_INITIAL, + /* 2 */ ADSR_STATUS_START_LOOP, + /* 3 */ ADSR_STATUS_LOOP, + /* 4 */ ADSR_STATUS_FADE, + /* 5 */ ADSR_STATUS_HANG, + /* 6 */ ADSR_STATUS_DECAY, + /* 7 */ ADSR_STATUS_RELEASE, + /* 8 */ ADSR_STATUS_SUSTAIN +} AdsrStatus; + +#define AUDIO_NOTE_RELEASE (1 << 0) +#define AUDIO_NOTE_SAMPLE_NOTES (1 << 1) + +#define AUDIOCMD_ALL_GROUPS 0xFF +#define AUDIOCMD_ALL_SUBTRACKS 0xFF + +typedef enum GroupState { + /* 0 */ GROUP_STATE_0, + /* 1 */ GROUP_STATE_FADE_IN, + /* 2 */ GROUP_STATE_FADE_OUT +} GroupState; + +/* Most of these are from the MM decomp */ +typedef enum AudioCmd { + /* 0x00 */ AUDIOCMD_NOOP, + + // SubTrack Commands + /* 0x01 */ AUDIOCMD_OP_SUB_SET_VOL_SCALE, + /* 0x02 */ AUDIOCMD_OP_SUB_SET_VOL, + /* 0x03 */ AUDIOCMD_OP_SUB_SET_PAN, + /* 0x04 */ AUDIOCMD_OP_SUB_SET_FREQ_SCALE, + /* 0x05 */ AUDIOCMD_OP_SUB_SET_REVERB_VOLUME, + /* 0x06 */ AUDIOCMD_OP_SUB_SET_PORT, + /* 0x07 */ AUDIOCMD_OP_SUB_SET_PAN_WEIGHT, + /* 0x08 */ AUDIOCMD_OP_SUB_SET_MUTE, + /* 0x09 */ AUDIOCMD_OP_SUB_SET_MUTE_FLAGS, + /* 0x0A */ AUDIOCMD_OP_SUB_SET_VIBRATO_DEPTH, + /* 0x0B */ AUDIOCMD_OP_SUB_SET_VIBRATO_RATE, + /* 0x0C */ AUDIOCMD_OP_SUB_SET_COMB_FILTER_SIZE, + /* 0x0D */ AUDIOCMD_OP_SUB_SET_COMB_FILTER_GAIN, + /* 0x0E */ AUDIOCMD_OP_SUB_SET_STEREO, + /* 0x0F */ AUDIOCMD_OP_SUB_SET_SET_START_POS, + /* 0x10 */ AUDIOCMD_OP_SUB_SET_SFX_STATE, + /* 0x11 */ AUDIOCMD_OP_SUB_SET_REVERB_INDEX, + /* 0x12 */ AUDIOCMD_OP_SUB_SET_SURROUND_EFFECT_INDEX, + /* 0x13 */ AUDIOCMD_OP_SUB_SET_FILTER, + /* 0x14 */ AUDIOCMD_OP_SUB_SET_GAIN, + /* 0x15 */ AUDIOCMD_OP_SUB_SET_TRANSPOSITION, + + // Group Commands + /* 0x41 */ AUDIOCMD_OP_GRP_FADE_VOLUME_SCALE = 0x41, + /* 0x46 */ AUDIOCMD_OP_GRP_SET_PORT = 0x46, + /* 0x47 */ AUDIOCMD_OP_GRP_SET_TEMPO, + /* 0x48 */ AUDIOCMD_OP_GRP_SET_TRANSPOSITION, + /* 0x49 */ AUDIOCMD_OP_GRP_CHANGE_TEMPO, + /* 0x4A */ AUDIOCMD_OP_GRP_FADE_TO_SET_VOLUME, + /* 0x4B */ AUDIOCMD_OP_GRP_FADE_TO_SCALED_VOLUME, + /* 0x4C */ AUDIOCMD_OP_GRP_RESET_VOLUME, + /* 0x4D */ AUDIOCMD_OP_GRP_SET_BEND, + /* 0x4E */ AUDIOCMD_OP_GRP_CHANGE_TEMPO_TICKS, + + // System Commands + /* 0x81 */ AUDIOCMD_PRELOAD_SEQ = 0x81, + /* 0x82 */ AUDIOCMD_START_SEQ, + /* 0x83 */ AUDIOCMD_STOP_SEQ, + /* 0x85 */ AUDIOCMD_START_SEQ_SKIP = 0x85, + /* 0x90 */ AUDIOCMD_SET_GROUP_MASK = 0x90, + + /* 0xE0 */ AUDIOCMD_SET_PERC_BANK = 0xE0, + /* 0xE1 */ AUDIOCMD_SET_EFFECT_BANK, + /* 0xE2 */ AUDIOCMD_SET_VOICE_BANK, + /* 0xE3 */ AUDIOCMD_CLEAR_STAY_CACHE, + /* 0xE4 */ AUDIOCMD_SET_CALLBACK, + /* 0xE5 */ AUDIOCMD_SET_EXTERNAL_POINTER, + /* 0xE6 */ AUDIOCMD_SET_DELAY_LINE_PARAM, + + /* 0xF0 */ AUDIOCMD_SET_SOUND_MODE = 0xF0, + /* 0xF1 */ AUDIOCMD_MUTE, + /* 0xF2 */ AUDIOCMD_UNMUTE, + /* 0xF3 */ AUDIOCMD_LOAD_VOICE_INSTRUMENT, + /* 0xF4 */ AUDIOCMD_PRELOADWAVE_BG, + /* 0xF5 */ AUDIOCMD_PRELOADBANK_BG, + /* 0xF6 */ AUDIOCMD_FLUSH_BANKS, + /* 0xF8 */ AUDIOCMD_SYS_STOP_PROCESSING = 0xF8, + /* 0xF9 */ AUDIOCMD_RESET_AUDIO_HEAP, + /* 0xFA */ AUDIOCMD_MAIN_GROUP_SUBPORT_CMD, + /* 0xFB */ AUDIOCMD_SET_VFRAME_CALLBACK, + /* 0xFC */ AUDIOCMD_PRELOADSEQ_BG, + /* 0xFD */ AUDIOCMD_MAIN_GROUP_SET_FREQ_SCALE, + /* 0xFE */ AUDIOCMD_FORCE_STOP_ALL_GROUPS, + /* 0xFF */ AUDIOCMD_MAIN_GROUP_SET_VOL_SCALE +} AudioCmd; + +typedef enum AUDIO_CALLBACKS { + /* 0x00 */ AUDIO_CALLBACK_SEQ_0, + /* 0x01 */ AUDIO_CALLBACK_SEQ_1, + /* 0x02 */ AUDIO_CALLBACK_SEQ_2, + /* 0x03 */ AUDIO_CALLBACK_SEQ_3, + /* 0xFE */ AUDIO_CALLBACK_DACOUT = 0xFE, + /* 0xFF */ AUDIO_CALLBACK_SOUND +} AUDIO_CALLBACKS; + #ifdef __cplusplus } #endif diff --git a/include/jaudio_NES/audiomacro.h b/include/jaudio_NES/audiomacro.h new file mode 100644 index 00000000..508b6b37 --- /dev/null +++ b/include/jaudio_NES/audiomacro.h @@ -0,0 +1,9 @@ +#ifndef AUDIOMACRO_H +#define AUDIOMACRO_H + +#include "types.h" +#include "jaudio_NES/sub_sys.h" + +#define AUDIOCMD_RESET_AUDIO_HEAP_CMD(spec_id) Nap_SetS32(NA_MAKE_COMMAND(AUDIOCMD_RESET_AUDIO_HEAP, 0, 0, 0), spec_id) + +#endif diff --git a/include/jaudio_NES/audiostruct.h b/include/jaudio_NES/audiostruct.h index f4d575aa..cc545b4e 100644 --- a/include/jaudio_NES/audiostruct.h +++ b/include/jaudio_NES/audiostruct.h @@ -39,11 +39,25 @@ typedef struct group_ group; /* sizeof(struct AudioPort_) == 0x8 */ typedef struct AudioPort_ { - /* 0x00 */ u8 cmd; - /* 0x01 */ u8 groupID; - /* 0x02 */ u8 subtrackID; - /* 0x03 */ u8 _03; - /* 0x04 */ u32 param; + union { + struct { + /* 0x00 */ u8 opcode; + /* 0x01 */ u8 arg0; + /* 0x02 */ u8 arg1; + /* 0x03 */ u8 arg2; + } command; + /* 0x00 */ u32 raw_cmd; + }; + union audioparam_ { + /* 0x04 */ s8 asS8; + /* 0x04 */ u8 asU8; + /* 0x04 */ s16 asS16; + /* 0x04 */ u16 asU16; + /* 0x04 */ u32 asU32; + /* 0x04 */ s32 asS32; + /* 0x04 */ f32 asF32; + /* 0x04 */ void* asVoidPtr; + } param; } AudioPort; /* sizeof(ALHeap) == 0x14 */ @@ -112,7 +126,17 @@ typedef struct wtstr_ { /* sizeof(phase) == 0x01 */ typedef struct phase_ { - /* 0x00 */ u8 _00; + union { + struct { + /* 0x00 */ u8 _unused : 2; + /* 0x00 */ u8 type : 2; + /* 0x00 */ u8 strong_right : 1; + /* 0x00 */ u8 strong_left : 1; + /* 0x00 */ u8 strong_reverb_right : 1; + /* 0x00 */ u8 strong_reverb_left : 1; + }; + /* 0x00 */ u8 asU8; + }; } phase; /* sizeof(sweep) == 0x0C */ @@ -159,7 +183,7 @@ typedef struct envp_ { /* 0x00 */ u8 hang : 1; /* 0x00 */ u8 decay : 1; /* 0x00 */ u8 release : 1; - /* 0x00 */ u8 status : 1; + /* 0x00 */ u8 status : 4; /* 0x01 */ u8 envelope_idx; /* 0x02 */ s16 delay; @@ -456,12 +480,13 @@ typedef struct sub_ { /* 0x0F */ u8 comb_filter_size; /* 0x10 */ u8 surround_effect_idx; /* 0x11 */ u8 channel_idx; - /* 0x12 */ vibparam vibrato_params; - /* 0x20 */ u16 delay; - /* 0x22 */ u16 comb_filter_gain; - /* 0x24 */ u16 unk24; - /* 0x26 */ s16 inst_or_wave; - /* 0x28 */ s16 transposition; + /* 0x12 */ u16 _12; + /* 0x14 */ vibparam vibrato_params; + /* 0x22 */ u16 delay; + /* 0x24 */ u16 comb_filter_gain; + /* 0x26 */ u16 _26; + /* 0x28 */ s16 inst_or_wave; + /* 0x2A */ s16 transposition; /* 0x2C */ f32 volume_scale; /* 0x30 */ f32 volume; /* 0x34 */ s32 pan; @@ -476,7 +501,7 @@ typedef struct sub_ { /* 0x64 */ seqplayer seq_player; /* 0x80 */ env adsr_env; /* 0x88 */ chnode channel_node; - /* 0xC8 */ s8 seq_script_io[8]; + /* 0xC8 */ s8 port[8]; /* 0xD0 */ u8* sfx_state; /* 0xD4 */ s16* filter; /* 0xD8 */ phase stereo_phase; @@ -528,7 +553,7 @@ struct group_ { /* 0x0DC */ s32 skip_ticks; /* 0x0E0 */ s32 script_counter; /* is u32 in MM decomp */ /* 0x0E4 */ u8 unkE4[0x158 - 0x0E4]; - /* 0x158 */ s8 seq_script_io[8]; + /* 0x158 */ s8 port[8]; }; /* sizeof(note) == 0x90 */ @@ -662,7 +687,7 @@ typedef struct audioparams_ { /* 0x0E */ s16 num_samples_per_update; /* 0x10 */ s16 num_samples_per_update_max; /* 0x12 */ s16 num_samples_per_update_min; - /* 0x14 */ s16 num_playing_sequences; + /* 0x14 */ s16 num_groups; /* 0x18 */ f32 resample_rate; /* 0x1C */ f32 updates_per_frame_inverse; /* 0x20 */ f32 updates_per_frame_inverse_scaled; @@ -857,27 +882,27 @@ typedef struct AudioGlobals { /* 0x377C */ u8* audio_heap_p; /* 0x3780 */ size_t audio_heap_size; /* 0x3784 */ channel* channels; - /* 0x3788 */ group groups[AUDIO_GROUP_MAX]; + /* 0x3788 */ struct group_ groups[AUDIO_GROUP_MAX]; /* 0x3E68 */ note notes[128]; /* 0x8668 */ sub null_sub_track; /* used for 'null' sub tracks */ /* 0x8748 */ group* groups_p[AUDIO_GROUP_MAX]; /* 0x877C */ s32 _877C; /* 0x8780 */ link note_link; /* 0x8790 */ chnode channel_node; /* main chnode */ - /* 0x87D0 */ group main_group; + /* 0x87D0 */ struct group_ main_group; /* 0x8930 */ sub main_sub; /* 0x8A30 */ u8 thread_cmd_write_pos; /* 0x8A31 */ u8 thread_cmd_read_pos; /* 0x8A32 */ u8 thread_cmd_queue_finished; /* 0x8A34 */ u16 thread_cmd_group_mask[AUDIO_GROUP_MAX]; - /* 0x8A40 */ OSMesgQueue* audio_reset_mq_p; + /* 0x8A40 */ OSMesgQueue* spec_change_mq_p; /* 0x8A44 */ OSMesgQueue* task_start_mq_p; /* 0x8A48 */ OSMesgQueue* thread_cmd_proc_mq_p; /* 0x8A4C */ OSMesgQueue task_start_mq; /* 0x8A64 */ OSMesgQueue thread_cmd_proc_mq; - /* 0x8A7C */ OSMesgQueue audio_reset_mq; + /* 0x8A7C */ OSMesgQueue spec_change_mq; /* 0x8A94 */ OSMesg task_start_msg_buf[1]; - /* 0x8A98 */ OSMesg audio_reset_msg_buf[1]; + /* 0x8A98 */ OSMesg spec_change_msg_buf[1]; /* 0x8A9C */ OSMesg thread_cmd_proc_msg_buf[4]; /* 0x8AAC */ AudioPort audio_port_cmds[256]; /* 0x92AC */ s32 _92AC; @@ -902,7 +927,6 @@ typedef struct PLAYER_CALL_ { u32 DSP_mode; } PLAYER_CALL; - #ifdef __cplusplus } #endif diff --git a/include/jaudio_NES/audiotable.h b/include/jaudio_NES/audiotable.h new file mode 100644 index 00000000..6928fc0a --- /dev/null +++ b/include/jaudio_NES/audiotable.h @@ -0,0 +1,9 @@ +#ifndef AUDIOTABLE_H +#define AUDIOTABLE_H + +#include "types.h" + +extern f32 PCENTTABLE[]; +extern f32 PCENTTABLE2[]; + +#endif diff --git a/include/jaudio_NES/audiowork.h b/include/jaudio_NES/audiowork.h index 37e0a550..0b8adff3 100644 --- a/include/jaudio_NES/audiowork.h +++ b/include/jaudio_NES/audiowork.h @@ -3,12 +3,24 @@ #include "types.h" #include "jaudio_NES/audiostruct.h" +#include "jaudio_NES/rate.h" +#include "jaudio_NES/audiotable.h" #ifdef __cplusplus extern "C" { #endif +typedef void (*VFRAME_CALLBACK)(void); +typedef u32 (*GRP_CALLBACK)(s8, sub*); +typedef void* (*SOUND_CALLBACK)(smzwavetable*, s32, s8, s32); +typedef Acmd* (*DACOUT_CALLBACK)(Acmd*, s32, s32); + extern AudioGlobals AG; +extern VFRAME_CALLBACK NA_VFRAME_CALLBACK; +// extern ??? NA_CALLBACK; +extern GRP_CALLBACK NA_GRP_CALLBACK; +extern SOUND_CALLBACK NA_SOUND_CALLBACK; +extern DACOUT_CALLBACK NA_DACOUT_CALLBACK; #ifdef __cplusplus } diff --git a/include/jaudio_NES/channel.h b/include/jaudio_NES/channel.h new file mode 100644 index 00000000..a808e496 --- /dev/null +++ b/include/jaudio_NES/channel.h @@ -0,0 +1,8 @@ +#ifndef CHANNEL_H +#define CHANNEL_H + +#include "types.h" + +extern s32 OverwriteBank(s32 type, s32 bankId, s32 idx, s32 voicetable); + +#endif diff --git a/include/jaudio_NES/driver.h b/include/jaudio_NES/driver.h new file mode 100644 index 00000000..b118a753 --- /dev/null +++ b/include/jaudio_NES/driver.h @@ -0,0 +1,9 @@ +#ifndef DRIVER_H +#define DRIVER_H + +#include "types.h" +#include "jaudio_NES/audiowork.h" + +extern Acmd* Nas_smzAudioFrame(Acmd* cmds, s32* processed_cmds, s16* pSamples, s32 nSamples); + +#endif diff --git a/include/jaudio_NES/memory.h b/include/jaudio_NES/memory.h index 28030c1e..c853ba66 100644 --- a/include/jaudio_NES/memory.h +++ b/include/jaudio_NES/memory.h @@ -6,5 +6,12 @@ extern void Nas_HeapInit(ALHeap* heap, u8* base, s32 len); extern void* Nas_HeapAlloc(ALHeap* heap, s32 size); +extern void Nas_SzStayDelete(s32 type); + +extern void Nas_SetDelayLineParam(s32 delayIdx, s32 param_type, s32 param_value, s32 init); + +extern void Nas_SetBPFilter(s16* filter, s32 lowpass_cutoff, s32 highpass_cutoff); + +extern s32 Nas_SpecChange(void); #endif diff --git a/include/jaudio_NES/sub_sys.h b/include/jaudio_NES/sub_sys.h index 5a88fe3f..aea7d2d3 100644 --- a/include/jaudio_NES/sub_sys.h +++ b/include/jaudio_NES/sub_sys.h @@ -2,23 +2,26 @@ #define SUB_SYS_H #include "types.h" -#include "jaudio_NES/audiostruct.h" +#include "jaudio_NES/audiowork.h" #include "PR/mbi.h" +extern void Nap_AudioPortInit(void); +extern void Nap_SetF32(u32 cmd, f32 param); +extern void Nap_SetS32(u32 cmd, s32 param); +extern void Nap_SetS8(u32 cmd, s8 param); +extern void Nap_SetU16(u32 cmd, u16 param); +extern s32 Nap_SendStart(void); +extern void Nap_FlushPort(void); +extern void Nap_Process1Command(AudioPort* port); +extern void Nap_AudioPortProcess(u32 msg); +extern s32 Nap_CheckSpecChange(void); +extern s32 Nap_StartSpecChange(s32 spec_id); +extern s32 Nap_StartReset(void); +extern s8 Nap_ReadSubPort(s32 groupId, s32 subtrackId, s32 portId); +extern s8 Nap_ReadGrpPort(s32 groupId, s32 portId); +extern void Nap_WaitVsync(void); +extern u32 Nap_GetRandom(void); +extern void Nas_InitGAudio(void); extern s32 CreateAudioTask(Acmd* cmds, s16* pSamples, u32 nSamples, s32 param_4); -extern void Nap_SetU16(u32 command, u16 value); -extern void Nap_SetU8(u32 command, u8 value); -extern void Nap_SetS8(u32 command, s8 value); -extern void Nap_SetF32(u32 command, f32 value); -extern void Nap_SetS32(u32 command, s32 value); - -extern s8 Nap_ReadSubPort(s32, s32, s32); -extern s8 Nap_ReadGrpPort(s32, s32); - -extern s32 Nap_SendStart(void); -extern void Nap_WaitVsync(void); - -extern s32 Nap_GetRandom(); - #endif diff --git a/include/jaudio_NES/system.h b/include/jaudio_NES/system.h index d554208b..37508029 100644 --- a/include/jaudio_NES/system.h +++ b/include/jaudio_NES/system.h @@ -2,8 +2,36 @@ #define SYSTEM_H #include "types.h" +#include "libultra/libultra.h" + +typedef enum SET_EXT_POINTER_TYPE { + EXT_POINTER_TYPE_ADDR, + EXT_POINTER_TYPE_SIZE, + + EXT_POINTER_TYPE_NUM +} SET_EXT_POINTER_TYPE; extern void Nas_InitAudio(u64* acmdBuf, s32 acmdBufSize); extern void Nas_FastCopy(u8* SrcAddr, u8* DestAdd, size_t size, s32 medium); +extern void Nas_StartMySeq(s32 group, s32 seq, s32 arg); +extern void Nas_StartSeq_Skip(s32 group, s32 seq, s32 skip_ticks); + +extern s32 Nas_LoadVoice(s32 progId, s32 instId, s32 percId); + +extern void Nas_PreLoadSeq(s32 seq, s32 flags, s32 param, OSMesgQueue* mq); + +extern s32 Nas_PreLoadWave_BG(s32 bankId, s32 param2, s32 param3, OSMesgQueue* mq); +extern s32 Nas_PreLoadBank_BG(s32 bankId, s32 param2, s32 param3, OSMesgQueue* mq); +extern s32 Nas_PreLoadSeq_BG(s32 seqId, s32 param2, s32 param3, OSMesgQueue* mq); + +extern void Nas_FlushBank(s32 seqId); + +extern void Nas_SetExtPointer(s32 type, s32 idx, s32 set_type, s32 param); + +extern void Nas_WaveDmaFrameWork(void); +extern void Nas_BgDmaFrameWork(s32 reset_status); +extern void MK_FrameWork(void); + +extern BOOL AUDIO_SYSTEM_READY; #endif diff --git a/include/jaudio_NES/track.h b/include/jaudio_NES/track.h new file mode 100644 index 00000000..88efcd3e --- /dev/null +++ b/include/jaudio_NES/track.h @@ -0,0 +1,10 @@ +#ifndef TRACK_H +#define TRACK_H + +#include "types.h" +#include "jaudio_NES/audiowork.h" + +extern void Nas_SeqSkip(group* group); +extern void Nas_ReleaseGroup_Force(group* group); + +#endif diff --git a/src/static/jaudio_NES/game/rhythm.c b/src/static/jaudio_NES/game/rhythm.c index b566f2c5..751b10f1 100644 --- a/src/static/jaudio_NES/game/rhythm.c +++ b/src/static/jaudio_NES/game/rhythm.c @@ -203,13 +203,13 @@ static s8 Na_GetRhythmSeNum(s8 num, sub* sub) { u32 rand; if (num == 0) { - num = 16 - sub->seq_script_io[4]; + num = 16 - sub->port[4]; if (num == 16) { num = 0; } } else { rand = Nap_GetRandom(); - switch (sub->seq_script_io[3]) { + switch (sub->port[3]) { case 0x14: case 0x15: case 0x16: @@ -430,8 +430,8 @@ static s8 Na_RhythmGrpProcess(s8 arg0, group* group) { ret = 0; } - group->seq_script_io[3] = r31; - group->seq_script_io[4] = (s8)((s32)(r31 * 0x64) / r29); + group->port[3] = r31; + group->port[4] = (s8)((s32)(r31 * 0x64) / r29); return ret; } diff --git a/src/static/jaudio_NES/game/staff.c b/src/static/jaudio_NES/game/staff.c index 27ef6664..0d15122e 100644 --- a/src/static/jaudio_NES/game/staff.c +++ b/src/static/jaudio_NES/game/staff.c @@ -39,9 +39,9 @@ extern void Na_GetStaffRollInfo(StaffRollInfo_c* info) { start_flag = FALSE; group = &AG.groups[sou_now_bgm_handle]; - if (group->seq_script_io[2] == 0) { + if (group->port[2] == 0) { info->staffroll_part = STAFFROLL_PART_MAIN; - } else if (group->seq_script_io[2] == 1) { + } else if (group->port[2] == 1) { info->staffroll_part = STAFFROLL_PART_FADEOUT; } else { info->staffroll_part = STAFFROLL_PART_INTRO; @@ -188,7 +188,7 @@ extern void Na_GetStaffRollInfo(StaffRollInfo_c* info) { info->mouth_num = mouth_num; /* sequence script itself controls blink flag? */ - if (group->seq_script_io[1] == 1) { + if (group->port[1] == 1) { blink = TRUE; } else { blink = FALSE; diff --git a/src/static/jaudio_NES/internal/sub_sys.c b/src/static/jaudio_NES/internal/sub_sys.c new file mode 100644 index 00000000..b8aa73cf --- /dev/null +++ b/src/static/jaudio_NES/internal/sub_sys.c @@ -0,0 +1,704 @@ +#include "jaudio_NES/sub_sys.h" + +#include "jaudio_NES/system.h" +#include "jaudio_NES/track.h" +#include "jaudio_NES/channel.h" +#include "jaudio_NES/memory.h" +#include "jaudio_NES/os.h" +#include "jaudio_NES/audiomacro.h" +#include "jaudio_NES/driver.h" +#include "dolphin/os.h" + +static void __Nas_GroupFadeOut(s32 group, s32 fadeout_timer); +static void __Nas_GroupFadeIn(s32 group, s32 fadein_timer); +static s32 Nap_SilenceCheck_Inner(s32 flags); +static void __SetGrpParam(group* group, AudioPort* port); +static void __SetSubParam(sub* subtrack, AudioPort* port); + +static void Nap_AudioSysProcess(AudioPort* port) { + group* group = AG.groups_p[port->command.arg0]; + s32 i; + + switch (port->command.opcode) { + case AUDIOCMD_PRELOAD_SEQ: + Nas_PreLoadSeq(port->command.arg1, port->command.arg2, port->param.asS32, &AG.external_load_queue); + break; + case AUDIOCMD_START_SEQ: + Nas_StartMySeq(port->command.arg0, port->command.arg1, port->command.arg2); + __Nas_GroupFadeIn(port->command.arg0, port->param.asS32); + break; + case AUDIOCMD_START_SEQ_SKIP: + Nas_StartSeq_Skip(port->command.arg0, port->command.arg1, port->param.asS32); + Nas_SeqSkip(group); + break; + case AUDIOCMD_STOP_SEQ: + if (group->flags.enabled) { + if (port->param.asS32 == 0) { + Nas_ReleaseGroup_Force(group); + } else { + __Nas_GroupFadeOut(port->command.arg0, port->param.asS32); + } + } + break; + case AUDIOCMD_SET_SOUND_MODE: + AG.sound_mode = (s8)port->param.asS32; + break; + case AUDIOCMD_MUTE: + if (port->command.arg0 == AUDIOCMD_ALL_GROUPS) { + for (i = 0; i < AG.audio_params.num_groups; i++) { + AG.groups[i].flags.muted = TRUE; + AG.groups[i].flags.recalculate_volume = TRUE; + } + } else { + group->flags.muted = TRUE; + group->flags.recalculate_volume = TRUE; + } + break; + case AUDIOCMD_UNMUTE: + if (port->param.asS32 == 1) { + for (i = 0; i < AG.num_channels; i++) { + channel* channel = &AG.channels[i]; + commonch* common_state = &channel->common_ch; + + if (common_state->enabled && channel->playback_ch.status == 0 && + (channel->playback_ch.current_parent_note->sub_track->mute_flags & + AUDIO_MUTE_FLAG_STOP_SAMPLES)) { + common_state->finished = TRUE; + } + } + } + + if (port->command.arg0 == AUDIOCMD_ALL_GROUPS) { + for (i = 0; i < AG.audio_params.num_groups; i++) { + AG.groups[i].flags.muted = FALSE; + AG.groups[i].flags.recalculate_volume = TRUE; + } + } else { + group->flags.muted = FALSE; + group->flags.recalculate_volume = TRUE; + } + break; + case AUDIOCMD_LOAD_VOICE_INSTRUMENT: + /* Synchronous load for voice (instrument) */ + Nas_LoadVoice(port->command.arg0, port->command.arg1, port->command.arg2); + break; + case AUDIOCMD_PRELOADWAVE_BG: + /* Async preload wave (samples) */ + Nas_PreLoadWave_BG(port->command.arg0, port->command.arg1, port->command.arg2, &AG.external_load_queue); + break; + case AUDIOCMD_PRELOADBANK_BG: + /* Async preload bank (instrument/sfx/percussion) */ + Nas_PreLoadBank_BG(port->command.arg0, port->command.arg1, port->command.arg2, &AG.external_load_queue); + break; + case AUDIOCMD_PRELOADSEQ_BG: + /* Async preload sequence */ + Nas_PreLoadSeq_BG(port->command.arg0, port->command.arg1, port->command.arg2, &AG.external_load_queue); + break; + case AUDIOCMD_FLUSH_BANKS: + /* Flush instrument banks */ + Nas_FlushBank(port->command.arg1); + break; + case AUDIOCMD_SET_GROUP_MASK: + AG.thread_cmd_group_mask[port->command.arg0] = port->param.asU16; + break; + case AUDIOCMD_RESET_AUDIO_HEAP: + AG.reset_status = 5; + AG.spec_id = port->param.asU32; + break; + case AUDIOCMD_MAIN_GROUP_SUBPORT_CMD: + if (port->param.asS32 == 0) { + AG.main_group.subtracks[0]->port[4] = -1; + } else { + AG.main_group.subtracks[0]->port[2] = port->command.arg1; + AG.main_group.subtracks[0]->port[1] = port->command.arg0; + AG.main_group.subtracks[0]->port[0] = port->command.arg2; + } + break; + case AUDIOCMD_MAIN_GROUP_SET_FREQ_SCALE: + s32 idx = 128 + port->param.asS32; + + AG.main_group.subtracks[0]->frequency_scale = PCENTTABLE2[idx]; + AG.main_group.subtracks[0]->changes.flags.frequency_scale = TRUE; + AG.main_group.subtracks[0]->vibrato_params.depth_target = port->command.arg2 * 4; + AG.main_group.subtracks[0]->vibrato_params.depth_change_delay = 32; + break; + case AUDIOCMD_MAIN_GROUP_SET_VOL_SCALE: + AG.main_group.subtracks[0]->volume_scale = port->param.asF32; + AG.main_group.subtracks[0]->changes.flags.volume = TRUE; + break; + case AUDIOCMD_SET_VFRAME_CALLBACK: + NA_VFRAME_CALLBACK = (VFRAME_CALLBACK)port->param.asU32; + break; + case AUDIOCMD_SET_CALLBACK: + if (port->command.arg2 == AUDIO_CALLBACK_SOUND) { + NA_SOUND_CALLBACK = (SOUND_CALLBACK)port->param.asU32; + } else if (port->command.arg2 == AUDIO_CALLBACK_DACOUT) { + NA_DACOUT_CALLBACK = (DACOUT_CALLBACK)port->param.asU32; + } else { + AG.seq_callbacks[port->command.arg2] = (SequenceCallback)port->param.asU32; + } + break; + case AUDIOCMD_SET_PERC_BANK: + case AUDIOCMD_SET_EFFECT_BANK: + case AUDIOCMD_SET_VOICE_BANK: + OverwriteBank(port->command.opcode - AUDIOCMD_SET_PERC_BANK, port->command.arg1, port->command.arg2, + port->param.asS32); + break; + case AUDIOCMD_FORCE_STOP_ALL_GROUPS: + s32 flags = port->param.asS32; + + if (flags == AUDIO_NOTE_RELEASE) { + for (i = 0; i < AG.audio_params.num_groups; i++) { + if (AG.groups[i].flags.enabled) { + Nas_ReleaseGroup_Force(&AG.groups[i]); + } + } + } + + Nap_SilenceCheck_Inner(flags); + break; + case AUDIOCMD_CLEAR_STAY_CACHE: + Nas_SzStayDelete(port->param.asS32); + break; + case AUDIOCMD_SET_EXTERNAL_POINTER: + Nas_SetExtPointer(port->command.arg0, port->command.arg1, port->command.arg2, port->param.asS32); + break; + case AUDIOCMD_SET_DELAY_LINE_PARAM: + Nas_SetDelayLineParam(port->command.arg1, port->command.arg0, port->param.asS32, FALSE); + break; + default: + break; + } +} + +static void __Nas_GroupFadeOut(s32 groupId, s32 fadeout_time) { + group* group = AG.groups_p[groupId]; + + if (fadeout_time == 0) { + fadeout_time = 1; + } + + group->fade_velocity = -(group->fade_volume / (f32)fadeout_time); + group->state = GROUP_STATE_FADE_OUT; + group->fade_timer = fadeout_time; +} + +static void __Nas_GroupFadeIn(s32 groupId, s32 fadein_time) { + + if (fadein_time != 0) { + group* group = AG.groups_p[groupId]; + group->fade_volume = 0.0f; + group->fade_velocity = 0.0f; + group->state = GROUP_STATE_FADE_IN; + group->stored_fade_timer = fadein_time; + group->fade_timer = fadein_time; + } +} + +extern void Nap_AudioPortInit(void) { + AG.thread_cmd_write_pos = 0; + AG.thread_cmd_read_pos = 0; + AG.thread_cmd_queue_finished = FALSE; + + AG.task_start_mq_p = &AG.task_start_mq; + AG.thread_cmd_proc_mq_p = &AG.thread_cmd_proc_mq; + AG.spec_change_mq_p = &AG.spec_change_mq; + + Z_osCreateMesgQueue(AG.task_start_mq_p, AG.task_start_msg_buf, ARRAY_COUNT(AG.task_start_msg_buf)); + Z_osCreateMesgQueue(AG.thread_cmd_proc_mq_p, AG.thread_cmd_proc_msg_buf, ARRAY_COUNT(AG.thread_cmd_proc_msg_buf)); + Z_osCreateMesgQueue(AG.spec_change_mq_p, AG.spec_change_msg_buf, ARRAY_COUNT(AG.spec_change_msg_buf)); + AG.spec_change_mq_p->validCount; +} + +static void Nap_PortSet(u32 data, s32* param_p) { + AudioPort* port_p = &AG.audio_port_cmds[AG.thread_cmd_write_pos & 0xFF]; + + port_p->raw_cmd = data; + port_p->param.asS32 = *param_p; + + AG.thread_cmd_write_pos++; + if (AG.thread_cmd_write_pos == AG.thread_cmd_read_pos) { + AG.thread_cmd_write_pos--; + } +} + +extern void Nap_SetF32(u32 cmd, f32 param) { + Nap_PortSet(cmd, (s32*)¶m); +} + +extern void Nap_SetS32(u32 cmd, s32 param) { + Nap_PortSet(cmd, (s32*)¶m); +} + +extern void Nap_SetS8(u32 cmd, s8 param) { + u32 mod_param = (param << 24); + + Nap_PortSet(cmd, (s32*)&mod_param); +} + +extern void Nap_SetU16(u32 cmd, u16 param) { + u32 mod_param = (param << 16); + + Nap_PortSet(cmd, (s32*)&mod_param); +} + +extern s32 Nap_SendStart(void) { + static u8 worst = 0; + s32 msg; + s32 res; + + if (AUDIO_SYSTEM_READY != TRUE) { + return -1; + } + + msg = ((AG.thread_cmd_read_pos & 0xFF) << 8) | (AG.thread_cmd_write_pos & 0xFF); + res = Z_osSendMesg(AG.thread_cmd_proc_mq_p, (OSMesg)msg, OS_MESG_NOBLOCK); + + if (res != -1) { + AG.thread_cmd_read_pos = AG.thread_cmd_write_pos; + } else { + OSReport("SendStart::Mesg Full Queue\n"); + return -1; + } + + return 0; +} + +extern void Nap_FlushPort(void) { + AG.thread_cmd_read_pos = AG.thread_cmd_write_pos; + AG.thread_cmd_queue_finished = FALSE; +} + +#define AUDIOCMD_GRP_PARAM_MASK 0x40 +#define AUDIOCMD_SYS_SEQ_MASK 0x80 +#define AUDIOCMD_SYS_MASK 0xF0 + +extern void Nap_Process1Command(AudioPort* port) { + group* group; + u16 mask; + s32 i; + if ((port->command.opcode & AUDIOCMD_SYS_MASK) >= AUDIOCMD_SET_PERC_BANK) { + Nap_AudioSysProcess(port); + } else if (port->command.arg0 < AG.audio_params.num_groups) { + group = AG.groups_p[port->command.arg0]; + + if ((port->command.opcode & AUDIOCMD_SYS_SEQ_MASK) != 0) { + Nap_AudioSysProcess(port); + } else if ((port->command.opcode & AUDIOCMD_GRP_PARAM_MASK) != 0) { + __SetGrpParam(group, port); + } else if (port->command.arg1 < AUDIO_SUBTRACK_NUM) { + __SetSubParam(group->subtracks[port->command.arg1], port); + } else if (port->command.arg1 == AUDIOCMD_ALL_SUBTRACKS) { + mask = AG.thread_cmd_group_mask[port->command.arg0]; + + /* Apply to all active subtracks */ + for (i = 0; i < AUDIO_SUBTRACK_NUM; i++) { + if ((mask & 1)) { + __SetSubParam(group->subtracks[i], port); + } + + mask = mask >> 1; + } + } + } +} + +extern void Nap_AudioPortProcess(u32 msg) { + static u8 begin = 0; + + if (AG.thread_cmd_queue_finished == FALSE) { + begin = (msg >> 8) & 0xFF; + } + + while (TRUE) { + u32 now = begin; + AudioPort* port; + + if (now == (msg & 0xFF)) { + AG.thread_cmd_queue_finished = FALSE; + return; + } + + port = &AG.audio_port_cmds[now]; + begin++; + if (port->command.opcode == AUDIOCMD_SYS_STOP_PROCESSING) { + AG.thread_cmd_queue_finished = TRUE; + break; + } + + Nap_Process1Command(port); + port->command.opcode = AUDIOCMD_NOOP; + } +} + +extern s32 Nap_CheckSpecChange(void) { + s32 msg; + s32 res = Z_osRecvMesg(AG.spec_change_mq_p, (OSMesg*)&msg, OS_MESG_NOBLOCK); + + if (res == -1) { + return 0; + } else if (msg != AG.spec_id) { + return -1; + } else { + return 1; + } +} + +static void __ClearSpecChangeQ(void) { + s32 msg; + s32 res; + + do { + res = Z_osRecvMesg(AG.spec_change_mq_p, (OSMesg*)&msg, OS_MESG_NOBLOCK); + } while (res != -1); +} + +extern s32 Nap_StartSpecChange(s32 spec_id) { + s32 reset_status; + OSMesg msg; + s32 res; + + __ClearSpecChangeQ(); + reset_status = AG.reset_status; + + if (reset_status != 0) { + Nap_FlushPort(); + if (AG.spec_id == spec_id) { + return -2; + } + + if (reset_status >= 3) { + AG.spec_id = spec_id & 0xFF; + return -3; + } + + Z_osRecvMesg(AG.spec_change_mq_p, &msg, OS_MESG_BLOCK); + } + + __ClearSpecChangeQ(); + AUDIOCMD_RESET_AUDIO_HEAP_CMD(spec_id); + return Nap_SendStart(); +} + +extern s32 Nap_StartReset(void) { + AG.reset_timer = 1; + if (AUDIO_SYSTEM_READY) { + Nap_StartSpecChange(0); + AG.reset_status = 0; + } + + return 0; +} + +extern s8 Nap_ReadSubPort(s32 groupId, s32 subtrackId, s32 portId) { + group* group = AG.groups_p[groupId]; + if (group == NULL) { + return -1; + } + + if (group->flags.enabled) { + return group->subtracks[subtrackId]->port[portId]; + } + + return -1; +} + +extern s8 Nap_ReadGrpPort(s32 groupId, s32 portId) { + return AG.groups_p[groupId]->port[portId]; +} + +static void __SetGrpParam(group* group, AudioPort* port) { + f32 fade_vol; + + switch (port->command.opcode) { + case AUDIOCMD_OP_GRP_FADE_VOLUME_SCALE: + if (group->fade_volume_scale != port->param.asF32) { + group->fade_volume_scale = port->param.asF32; + group->flags.recalculate_volume = TRUE; + } + break; + case AUDIOCMD_OP_GRP_SET_TEMPO: + group->tempo = port->param.asS32 * AUDIO_TATUMS_PER_BEAT; + break; + case AUDIOCMD_OP_GRP_CHANGE_TEMPO: + group->tempo_change = port->param.asS32 * AUDIO_TATUMS_PER_BEAT; + break; + case AUDIOCMD_OP_GRP_CHANGE_TEMPO_TICKS: + group->tempo_change = port->param.asS32; + break; + case AUDIOCMD_OP_GRP_SET_TRANSPOSITION: + group->transposition = port->param.asS8; + break; + case AUDIOCMD_OP_GRP_SET_PORT: + group->port[port->command.arg2] = port->param.asS8; + break; + case AUDIOCMD_OP_GRP_FADE_TO_SET_VOLUME: + fade_vol = (s32)port->command.arg1 / 127.0f; + goto apply_fade; + case AUDIOCMD_OP_GRP_FADE_TO_SCALED_VOLUME: + fade_vol = ((s32)port->command.arg1 / 100.0f) * group->fade_volume; + + /* dev chose to make this a goto label */ + apply_fade: + if (group->state != GROUP_STATE_FADE_OUT) { + group->volume = group->fade_volume; + if (port->param.asS32 == 0) { + group->fade_volume = fade_vol; + } else { + s32 fade_timer = port->param.asS32; + + group->fade_velocity = (fade_vol - group->fade_volume) / fade_timer; + group->state = GROUP_STATE_0; + group->fade_timer = fade_timer; + } + } + break; + case AUDIOCMD_OP_GRP_RESET_VOLUME: + if (group->state != GROUP_STATE_FADE_OUT) { + if (port->param.asS32 == 0) { + group->fade_volume = group->volume; + } else { + s32 fade_timer = port->param.asS32; + + group->fade_velocity = (group->volume - group->fade_volume) / fade_timer; + group->state = GROUP_STATE_0; + group->fade_timer = fade_timer; + } + } + break; + case AUDIOCMD_OP_GRP_SET_BEND: + group->bend = port->param.asF32; + if (group->bend == 1.0f) { + group->flags.apply_bend = FALSE; + } else { + group->flags.apply_bend = TRUE; + } + break; + default: + break; + } +} + +static void __SetSubParam(sub* subtrack, AudioPort* port) { + u8 filter_cutoff; + + switch (port->command.opcode) { + case AUDIOCMD_OP_SUB_SET_VOL_SCALE: + if (subtrack->volume_scale != port->param.asF32) { + subtrack->volume_scale = port->param.asF32; + subtrack->changes.flags.volume = TRUE; + } + break; + case AUDIOCMD_OP_SUB_SET_VOL: + if (subtrack->volume != port->param.asF32) { + subtrack->volume = port->param.asF32; + subtrack->changes.flags.volume = TRUE; + } + break; + case AUDIOCMD_OP_SUB_SET_PAN: + if (subtrack->new_pan != port->param.asS8) { + subtrack->new_pan = port->param.asS8; + subtrack->changes.flags.pan = TRUE; + } + break; + case AUDIOCMD_OP_SUB_SET_PAN_WEIGHT: + if (subtrack->new_pan != port->param.asS8) { + subtrack->pan_channel_weight = port->param.asS8; + subtrack->changes.flags.pan = TRUE; + } + break; + case AUDIOCMD_OP_SUB_SET_FREQ_SCALE: + if (subtrack->frequency_scale != port->param.asF32) { + subtrack->frequency_scale = port->param.asF32; + subtrack->changes.flags.frequency_scale = TRUE; + } + break; + case AUDIOCMD_OP_SUB_SET_REVERB_VOLUME: + if (subtrack->target_reverb_vol != port->param.asS8) { + subtrack->target_reverb_vol = port->param.asS8; + } + break; + case AUDIOCMD_OP_SUB_SET_REVERB_INDEX: + if (subtrack->reverb_idx != port->param.asS8) { + subtrack->reverb_idx = port->param.asS8; + } + break; + case AUDIOCMD_OP_SUB_SET_SURROUND_EFFECT_INDEX: + subtrack->surround_effect_idx = port->param.asS8; + break; + case AUDIOCMD_OP_SUB_SET_PORT: + if (port->command.arg2 < ARRAY_COUNT(subtrack->port)) { + subtrack->port[port->command.arg2] = port->param.asS8; + } + break; + case AUDIOCMD_OP_SUB_SET_MUTE: + subtrack->muted = port->param.asS8; + break; + case AUDIOCMD_OP_SUB_SET_MUTE_FLAGS: + subtrack->mute_flags = port->param.asS8; + break; + case AUDIOCMD_OP_SUB_SET_VIBRATO_DEPTH: + subtrack->vibrato_params.depth_target = port->param.asU8 * 8; + subtrack->vibrato_params.depth_change_delay = 1; + break; + case AUDIOCMD_OP_SUB_SET_VIBRATO_RATE: + subtrack->vibrato_params.rate_target = port->param.asU8 * 32; + subtrack->vibrato_params.rate_change_delay = 1; + break; + case AUDIOCMD_OP_SUB_SET_COMB_FILTER_SIZE: + subtrack->comb_filter_size = port->param.asU8; + break; + case AUDIOCMD_OP_SUB_SET_COMB_FILTER_GAIN: + subtrack->comb_filter_gain = port->param.asU16; + break; + case AUDIOCMD_OP_SUB_SET_STEREO: + subtrack->stereo_phase.asU8 = port->param.asU8; + break; + case AUDIOCMD_OP_SUB_SET_SET_START_POS: + subtrack->sample_start_pos = port->param.asS32; + break; + case AUDIOCMD_OP_SUB_SET_SFX_STATE: + subtrack->sfx_state = (u8*)port->param.asVoidPtr; + break; + case AUDIOCMD_OP_SUB_SET_FILTER: + filter_cutoff = port->command.arg2; + if (port->param.asS32 != 0) { + subtrack->filter = (s16*)port->param.asVoidPtr; + } + + if (subtrack->filter != nullptr) { + Nas_SetBPFilter(subtrack->filter, filter_cutoff >> 4, filter_cutoff & 0xF); + } + break; + case AUDIOCMD_OP_SUB_SET_GAIN: + subtrack->gain = port->param.asU8; + break; + case AUDIOCMD_OP_SUB_SET_TRANSPOSITION: + subtrack->transposition = port->param.asU8; + break; + default: + break; + } +} + +extern void Nap_WaitVsync(void) { + Z_osRecvMesg(AG.task_start_mq_p, (OSMesg*)0, OS_MESG_NOBLOCK); + Z_osRecvMesg(AG.task_start_mq_p, (OSMesg*)0, OS_MESG_BLOCK); +} + +static s32 Nap_SilenceCheck_Inner(s32 flags) { + playbackch* playback_chan; + commonch* common_chan; + s32 i; + s32 channelCount; + channel* channel; + wtstr* tuned_sample; + + channelCount = 0; + for (i = 0; i < AG.num_channels; i++) { + channel = &AG.channels[i]; + playback_chan = &channel->playback_ch; + if (channel->common_ch.enabled) { + common_chan = &channel->common_ch; + if (playback_chan->adsr_envp.status != ADSR_STATUS_DISABLED) { + if (flags >= AUDIO_NOTE_SAMPLE_NOTES) { + tuned_sample = common_chan->tuned_sample; + if ((tuned_sample == nullptr) || common_chan->is_synth_wave) { + continue; + } + + if (tuned_sample->wavetable->medium == MEDIUM_RAM) { + continue; + } + } + + if ((flags & AUDIO_NOTE_RELEASE) == AUDIO_NOTE_RELEASE) { + playback_chan->adsr_envp.fadeout_velocity = AG.audio_params.updates_per_frame_inverse; + playback_chan->adsr_envp.release = TRUE; + } + + channelCount++; + } + } + } + return channelCount; +} + +extern u32 Nap_GetRandom(void) { + static u32 get = 0x12345678; + static u32 oldGetCount = 0x11111111; + u32 tick = OSGetTick(); + + get = (get + AG.frame_audio_task_count + tick) * (AG.audio_random_seed + 0x01234567); + get = (get << 1) + oldGetCount + (get & 1); + oldGetCount = tick; + return get; +} + +extern void Nas_InitGAudio(void) { + Nap_AudioPortInit(); +} + +extern s32 CreateAudioTask(Acmd* cmds, s16* pSamples, u32 nSamples, s32 param_4) { + s32 i; + s32 max; + + AG.audio_random_seed = (AG.audio_random_seed + AG.frame_audio_task_count) * OSGetTick(); + AG.frame_audio_task_count++; + + Z_osSendMesg(AG.task_start_mq_p, (OSMesg)AG.frame_audio_task_count, OS_MESG_NOBLOCK); + + if (NA_VFRAME_CALLBACK != nullptr) { + (*NA_VFRAME_CALLBACK)(); + } + + for (i = 0; i < AG.current_frame_dma_count; i++) { + Z_osRecvMesg(&AG.cur_audio_frame_dma_queue, nullptr, OS_MESG_NOBLOCK); + } + + max = AG.cur_audio_frame_dma_queue.validCount; + if (max != 0) { + for (i = 0; i < max; i++) { + Z_osRecvMesg(&AG.cur_audio_frame_dma_queue, nullptr, OS_MESG_NOBLOCK); + } + } + + AG.current_frame_dma_count = 0; + Nas_WaveDmaFrameWork(); + Nas_BgDmaFrameWork(AG.reset_status); + MK_FrameWork(); + + if (AG.reset_status != 0 && Nas_SpecChange() == 0) { + if (AG.reset_status == 0) { + Z_osSendMesg(AG.spec_change_mq_p, (OSMesg)AG.spec_id, OS_MESG_NOBLOCK); + } + + return 0; + } else if (AG.reset_timer > 16) { + return 0; + } else { + s32 port_cmds; + s32 processed_cmds; + + if (AG.reset_timer != 0) { + AG.reset_timer++; + } + + port_cmds = 0; + if (AG.reset_status == 0) { + u32 msg; + + while (Z_osRecvMesg(AG.thread_cmd_proc_mq_p, (OSMesg*)&msg, OS_MESG_NOBLOCK) != -1) { + Nap_AudioPortProcess(msg); + port_cmds++; + } + + if (port_cmds == 0 && AG.thread_cmd_queue_finished) { + Nap_SendStart(); + } + } + + Nas_smzAudioFrame(cmds, &processed_cmds, pSamples, nSamples); + return processed_cmds; + } +} From 5d9a146bc3a4466e523b57ad18cf7d5d0f4c61d3 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Wed, 12 Jun 2024 17:34:59 +0200 Subject: [PATCH 028/234] link dvdthread --- common.py | 1 + config/disasm_overrides.yml | 2 + config/dol_slices.yml | 5 + include/jaudio_NES/dvdthread.h | 26 +- src/static/jaudio_NES/internal/dvdthread.c | 464 +++++++++++++++++++++ 5 files changed, 492 insertions(+), 6 deletions(-) create mode 100644 src/static/jaudio_NES/internal/dvdthread.c diff --git a/common.py b/common.py index 91a52029..1cb8c978 100644 --- a/common.py +++ b/common.py @@ -442,6 +442,7 @@ FAMICOM_BASE = CFLAGS + [ ] + DOL_DEFINES JAUDIO_BASE = CFLAGS + [ "-lang=c++", + "-char signed", "-sdata 8", "-sdata2 8", "-enum int", diff --git a/config/disasm_overrides.yml b/config/disasm_overrides.yml index 525ded38..8415cc47 100644 --- a/config/disasm_overrides.yml +++ b/config/disasm_overrides.yml @@ -10,6 +10,8 @@ symbol_aligns: 0x8001a0c0: 32 0x80026400: 32 0x80031d80: 32 + 0x8001ada0: 32 + 0x8018f1a8: 8 0x80207458: 8 # align RunQueue to 0x001251d8 0x800b9140: 32 # align gam_win_moji1_tex to 32 bytes 0x801f71c0: 32 # align texture_buffer_data to 32 bytes diff --git a/config/dol_slices.yml b/config/dol_slices.yml index b19a5dd6..8b2ff1d9 100644 --- a/config/dol_slices.yml +++ b/config/dol_slices.yml @@ -101,6 +101,11 @@ jaudio_NES/internal/cpubuf.c: jaudio_NES/internal/playercall.c: .text: [0x80019dc0, 0x8001a0c0] .bss: [0x801864d0,0x80186590] +jaudio_NES/internal/dvdthread.c: + .text: [0x8001a0c0, 0x8001ada0] + .data: [0x800d0278, 0x800d0298] + .bss: [0x80186590, 0x8018f1a8] + .sbss: [0x80218498, 0x802184e8] jaudio_NES/internal/sub_sys.c: .text: [0x80024ae0, 0x80026120] .rodata: [0x800aa700, 0x800aa720] diff --git a/include/jaudio_NES/dvdthread.h b/include/jaudio_NES/dvdthread.h index d5606c8a..f05e6c8f 100644 --- a/include/jaudio_NES/dvdthread.h +++ b/include/jaudio_NES/dvdthread.h @@ -5,12 +5,26 @@ #include "dolphin/dvd.h" typedef void (*Jac_DVDCallback)(u32); +typedef s32 (*TaskCallback)(void*); +typedef void (*ErrorCallback)(char*, u8* addr); + +extern void DVDT_ExtendPath(char* dst, char* ext); +extern s32 DVDT_AddTaskHigh(TaskCallback callback, void* stackp, size_t len); +extern s32 DVDT_AddTask(TaskCallback callback, void* stackp, size_t len); +extern void jac_dvdproc_init(); +extern void* jac_dvdproc(void*); +extern s32 DVDT_LoadtoARAM_Main(void* arg); +extern s32 DVDT_LoadtoARAM(u32 owner, char* name, u32 dst, u32 src, u32 length, u32* status, Jac_DVDCallback callback); +extern s32 DVDT_ARAMtoDRAM_Main(void* arg); +extern s32 DVDT_DRAMtoARAM_Main(void* arg); +extern s32 DVDT_ARAMtoDRAM(u32 owner, u32 dst, u32 src, u32 length, u32* status, Jac_DVDCallback callback); +extern s32 DVDT_DRAMtoARAM(u32 owner, u32 dst, u32 src, u32 length, u32* status, Jac_DVDCallback callback); +extern s32 DVDT_CheckFile(char* file); +extern void DVDT_CheckPass(u32 owner, u32* status, Jac_DVDCallback callback); +extern s32 Jac_CheckFile(char* file); +extern void Jac_RegisterDVDErrorCallback(ErrorCallback callback); +extern s32 Jac_RegisterFastOpen(char* file); +extern BOOL Jac_DVDOpen(char* name, DVDFileInfo* info); -extern s32 DVDT_LoadtoARAM(u32 owner, char* path, u32 dram, u32 aram, u32 len, u32* outLen, Jac_DVDCallback callback); -extern s32 DVDT_DRAMtoARAM(u32 owner, u32 dram, u32 aram, u32 len, u32* outLen, Jac_DVDCallback callback); -extern s32 DVDT_ARAMtoDRAM(u32 owner, u32 dram, u32 aram, u32 len, u32* outLen, Jac_DVDCallback callback); -extern u32 Jac_CheckFile(char* path); -extern void* jac_dvdproc(void* param); -extern void jac_dvdproc_init(void); #endif diff --git a/src/static/jaudio_NES/internal/dvdthread.c b/src/static/jaudio_NES/internal/dvdthread.c new file mode 100644 index 00000000..6866e7f1 --- /dev/null +++ b/src/static/jaudio_NES/internal/dvdthread.c @@ -0,0 +1,464 @@ +#include "jaudio_NES/dvdthread.h" +#include "jaudio_NES/sample.h" +#include "jaudio_NES/aictrl.h" +#include "dolphin/os.h" +#include "dolphin/dvd.h" +#include "dolphin/ar.h" +#include "dolphin/string.h" +#include "dolphin/os/OSTime.h" + +typedef struct DVDCall_ { + u32 owner; + char fileName[64]; + u32 dst; + u32 src; + u32 length; + u32* callbackStatus; + Jac_DVDCallback callback; +} DVDCall; + +static char audio_root_path[32] = ""; +static OSMessageQueue mq; +static s32 msgbuf[0x80]; +static u8 CALLSTACK[0x8000]; + +static u32 mq_init; +static size_t buffersize; +static u32 buffers; +static size_t next_buffersize; +static u8* next_buffertop; +static u32 next_buffers; +static u32 cur_q; +static OSThreadQueue dvdt_sleep; +static BOOL DVDT_PAUSE_FLAG; + +static ErrorCallback error_callback; +static u8* ADVD_BUFFER[2]; +static u32 buffer_load; + +static void __Alloc_DVDBuffer(); +static void __UpdateBuffer(); +static void __WriteBufferSize(u8* buf, u32 amount, u32 size); + +static void* GetCallStack() { + BOOL enable = OSDisableInterrupts(); + void* ret; + u32 pre = cur_q + 1; + + ret = &CALLSTACK[cur_q * 0x100]; + + cur_q = pre; + + if (pre == 0x80) { + cur_q = 0; + } + + OSRestoreInterrupts(enable); + + return ret; +} + +static s32 DVDReadMutex(DVDFileInfo* fileInfo, void* addr, s32 len, s32 offs, char* arg4) { + if (DVDT_PAUSE_FLAG == true) { + OSSleepThread(&dvdt_sleep); + } + + while (true) { + if (DVDReadPrio(fileInfo, addr, len, offs, 2) != -1 || error_callback == nullptr) { + break; + } + error_callback(arg4, (u8*)addr); + } +} + +extern void DVDT_ExtendPath(char* dst, char* ext) { + if (*audio_root_path != nullptr) { + strcpy(dst, audio_root_path); + if (*ext == '/') { + strcat(dst, ext + 1); + } else { + strcat(dst, ext); + } + } else { + strcpy(dst, ext); + } +} + +extern s32 DVDT_AddTaskHigh(TaskCallback callback, void* stackp, size_t len) { + if (mq_init == false) { + return 0; + } + + TaskCallback* stack = (TaskCallback*)GetCallStack(); + + Jac_bcopy(stackp, stack + 1, len); + + *stack = callback; + OSJamMessage(&mq, (OSMessage)stack, OS_MESSAGE_BLOCK); + + return 1; +} + +extern s32 DVDT_AddTask(TaskCallback callback, void* stackp, size_t len) { + if (mq_init == false) { + return 0; + } + + TaskCallback* stack = (TaskCallback*)GetCallStack(); + + Jac_bcopy(stackp, stack + 1, len); + + *stack = callback; + OSSendMessage(&mq, (OSMessage)stack, OS_MESSAGE_BLOCK); + + return 1; +} + +extern void jac_dvdproc_init() { + OSInitMessageQueue(&mq, (OSMessage*)msgbuf, ARRAY_COUNT(msgbuf)); + mq_init = 1; +} + +extern void* jac_dvdproc(void* arg) { + __Alloc_DVDBuffer(); + TaskCallback* callback; + + u8* buf = (u8*)OSAlloc2(0x10000); + + OSInitThreadQueue(&dvdt_sleep); + OSMessage msg; + while (true) { + while (true) { + OSReceiveMessage(&mq, &msg, OS_MESSAGE_BLOCK); + callback = (TaskCallback*)msg; + __UpdateBuffer(); + + if (buffersize == 0) { + __WriteBufferSize(buf, 2, 0x8000); + } + if (callback != nullptr) { + break; + }; + } + (*callback)(callback + 1); + } +} + +static void __DoError(DVDCall* call, u32 type) { + if (call->callbackStatus != nullptr) { + *call->callbackStatus = -1; + } + + if (call->callback != nullptr) { + call->callback(-1); + } +} + +static void __DoFinish(DVDCall* call, u32 arg) { + if (call->callbackStatus != nullptr) { + *call->callbackStatus = arg; + } + + if (call->callback != nullptr) { + call->callback(call->owner); + } +} +static void __DVDT_CheckBack(void* cb) { + DVDCall* callback = (DVDCall*)cb; + + __DoFinish(callback, callback->owner); +} + +static void __Alloc_DVDBuffer() { + if (buffersize == 0) { + int i; + + for (i = 0; i < buffers; i++) { + ADVD_BUFFER[i] = 0; + } + } +} + +static void __WriteBufferSize(u8* buf, u32 amount, u32 size) { + buffersize = size; + buffers = amount; + + int i; + int j = amount; + + for (i = 0; i < amount; i++, j--) { + ADVD_BUFFER[i] = buf; + buf += size; + } +} + +static void __UpdateBuffer() { + if (next_buffers != 0) { + __WriteBufferSize(next_buffertop, next_buffers, next_buffersize); + next_buffers = 0; + next_buffertop = nullptr; + } +} + +static vu32 buffer_full; + +static void ARAM_DMAfinish(u32 arg0) { + buffer_full -= 1; +} + +extern s32 DVDT_LoadtoARAM_Main(void* arg) { + DVDCall* call = (DVDCall*)arg; + static int arq_index = 0; + static DVDFileInfo finfo; + static ARQRequest req[4]; + + if (!Jac_DVDOpen(call->fileName, &finfo)) { + __DoError(call, 0); + return -1; + } + + u32 len = finfo.length; + if (len == 0) { + __DoError(call, 1); + return -1; + } + + if (call->length == 0) { + call->length = len; + + if (call->src != 0) { + call->length -= call->src; + } + } + + OSGetTick(); + + while (call->length != 0) { + u32 readSize; + u8* buf = ADVD_BUFFER[buffer_load]; + buffer_load = (buffer_load + 1) % buffers; + while (buffer_full == buffers) + ; + + if (call->length < buffersize) { + readSize = ALIGN_NEXT(call->length, 32); + len = DVDReadMutex(&finfo, buf, readSize, call->src, call->fileName); + + call->length = 0; + } else { + readSize = buffersize; + len = DVDReadMutex(&finfo, buf, buffersize, call->src, call->fileName); + + call->src += buffersize; + call->length -= buffersize; + } + + ARQPostRequest(&req[arq_index], 0x12345678, ARQ_TYPE_MRAM_TO_ARAM, ARQ_PRIORITY_HIGH, (u32)buf, call->dst, + readSize, ARAM_DMAfinish); + buffer_full++; + arq_index++; + arq_index &= 3; + call->dst += readSize; + } + + DVDClose(&finfo); + + while (buffer_full != 0) + ; + + OSGetTick(); + + __DoFinish(call, len); + + return 0; +} + +extern s32 DVDT_LoadtoARAM(u32 owner, char* name, u32 dst, u32 src, u32 length, u32* status, Jac_DVDCallback callback) { + DVDCall call; + void* cb = (void*)&call; + + call.owner = owner; + DVDT_ExtendPath(call.fileName, name); + + call.dst = dst; + call.callbackStatus = status; + if (status != 0) { + *status = 0; + } + + call.callback = callback; + call.src = src; + call.length = length; + + DVDT_AddTask(DVDT_LoadtoARAM_Main, cb, 0x58); + + return 0; +} + +static vu32 buffer_full2; + +static void ARAM_DMAfinish2(u32) { + buffer_full2 -= 1; +} + +extern s32 DVDT_ARAMtoDRAM_Main(void* arg) { + static ARQRequest req; + DVDCall* call = (DVDCall*)arg; + + buffer_full2++; + + ARQPostRequest(&req, (u32)call, ARQ_TYPE_ARAM_TO_MRAM, ARQ_PRIORITY_HIGH, call->src, call->dst, call->length, + ARAM_DMAfinish2); + + while (buffer_full2 != 0) + ; + + __DoFinish(call, call->length); + + return 0; +} + +extern s32 DVDT_DRAMtoARAM_Main(void* arg) { + static ARQRequest req; + DVDCall* call = (DVDCall*)arg; + + buffer_full2++; + + ARQPostRequest(&req, (u32)call, ARQ_TYPE_MRAM_TO_ARAM, ARQ_PRIORITY_HIGH, call->dst, call->src, call->length, + ARAM_DMAfinish2); + + while (buffer_full2 != 0) + ; + + __DoFinish(call, call->length); + + return 0; +} + +extern s32 DVDT_ARAMtoDRAM(u32 owner, u32 dst, u32 src, u32 length, u32* status, Jac_DVDCallback callback) { + DVDCall call; + void* cb = (void*)&call; + + call.owner = owner; + call.dst = dst; + call.callbackStatus = status; + + if (status != 0) { + *status = 0; + } + + call.callback = callback; + call.src = src; + call.length = length; + + DVDT_AddTaskHigh(DVDT_ARAMtoDRAM_Main, cb, 0x58); + + return 0; +} + +extern s32 DVDT_DRAMtoARAM(u32 owner, u32 dst, u32 src, u32 length, u32* status, Jac_DVDCallback callback) { + DVDCall call; + void* cb = (void*)&call; + + call.owner = owner; + call.dst = dst; + call.callbackStatus = status; + + if (status != 0) { + *status = 0; + } + + call.callback = callback; + call.src = src; + call.length = length; + + DVDT_AddTaskHigh(DVDT_DRAMtoARAM_Main, cb, 0x58); + + return 0; +} + +extern s32 DVDT_CheckFile(char* file) { + static DVDFileInfo finfo; + + char path[64]; + DVDT_ExtendPath(path, file); + + if (!Jac_DVDOpen(path, &finfo)) { + return 0; + } + u32 len = finfo.length; + + DVDClose(&finfo); + + return len; +} + +extern void DVDT_CheckPass(u32 owner, u32* status, Jac_DVDCallback callback) { + DVDCall call; + void* cb = (void*)&call; + + call.owner = owner; + call.callbackStatus = status; + call.callback = callback; + + DVDT_AddTask((TaskCallback)__DVDT_CheckBack, cb, 0x58); +} + +extern s32 Jac_CheckFile(char* file) { + static DVDFileInfo finfo; + + if (!Jac_DVDOpen(file, &finfo)) { + return 0; + } + u32 len = finfo.length; + + DVDClose(&finfo); + + return len; +} + +extern void Jac_RegisterDVDErrorCallback(ErrorCallback callback) { + error_callback = callback; + +} + +static u32 dvdfile_dics; +static char dvd_file[32][64]; +static u32 dvd_entrynum[32]; + +extern s32 Jac_RegisterFastOpen(char* file) { + int num; + if (strlen(file) > 63) { + return -1; + } + + int i; + + for (i = 0; i < dvdfile_dics; i++) { + if (!strcmp(dvd_file[i], file)) { + return dvd_entrynum[i]; + } + } + if (dvdfile_dics == 32) { + return -1; + } + + num = DVDConvertPathToEntrynum(file); + + if (num != -1) { + strcpy(dvd_file[dvdfile_dics], file); + dvd_entrynum[dvdfile_dics] = num; + dvdfile_dics++; + } + return num; +} + +extern BOOL Jac_DVDOpen(char* name, DVDFileInfo* info) { + int entry = Jac_RegisterFastOpen(name); + + if (entry == -1) { + return DVDOpen(name, info); + } else { + return DVDFastOpen(entry, info); + } +} From 5299baa10b845c9d6b944dcb5f08234cbb7ad5ec Mon Sep 17 00:00:00 2001 From: Prakxo Date: Wed, 12 Jun 2024 21:52:32 +0200 Subject: [PATCH 029/234] link dspboot --- config/disasm_overrides.yml | 1 + config/dol_slices.yml | 5 + include/dolphin/dsp.h | 1 + include/jaudio_NES/dspboot.h | 14 + include/jaudio_NES/dspproc.h | 1 + src/static/jaudio_NES/internal/dspboot.c | 380 +++++++++++++++++++++++ 6 files changed, 402 insertions(+) create mode 100644 src/static/jaudio_NES/internal/dspboot.c diff --git a/config/disasm_overrides.yml b/config/disasm_overrides.yml index 8415cc47..a8a46532 100644 --- a/config/disasm_overrides.yml +++ b/config/disasm_overrides.yml @@ -11,6 +11,7 @@ symbol_aligns: 0x80026400: 32 0x80031d80: 32 0x8001ada0: 32 + 0x8002cd20: 32 0x8018f1a8: 8 0x80207458: 8 # align RunQueue to 0x001251d8 0x800b9140: 32 # align gam_win_moji1_tex to 32 bytes diff --git a/config/dol_slices.yml b/config/dol_slices.yml index 8b2ff1d9..d889bc92 100644 --- a/config/dol_slices.yml +++ b/config/dol_slices.yml @@ -116,6 +116,11 @@ jaudio_NES/internal/os.c: .text: [0x80026120, 0x80026300] jaudio_NES/internal/astest.c: .text: [0x80026300, 0x80026400] +jaudio_NES/internal/dspboot.c: + .text: [0x8002c920, 0x8002cd20] + .rodata: [0x800aa780, 0x800aa7a0] + .data: [0x800d3b00, 0x800d5500] + .sdata2: [0x80218f08, 0x80218f10] jaudio_NES/internal/random.c: .text: [0x80031ce0, 0x80031d80] .sdata: [0x80217c38, 0x80217c40] diff --git a/include/dolphin/dsp.h b/include/dolphin/dsp.h index e3a5d43f..96e62398 100644 --- a/include/dolphin/dsp.h +++ b/include/dolphin/dsp.h @@ -53,6 +53,7 @@ void DSPHalt(); void DSPSendMailToDSP(u32 mail); u32 DSPCheckMailToDSP(); u32 DSPCheckMailFromDSP(); +u32 DSPReadMailFromDSP(); u32 DSPGetDMAStatus(); DSPTaskInfo* DSPAddTask(DSPTaskInfo* task); diff --git a/include/jaudio_NES/dspboot.h b/include/jaudio_NES/dspboot.h index 0839e0d4..326a00af 100644 --- a/include/jaudio_NES/dspboot.h +++ b/include/jaudio_NES/dspboot.h @@ -3,6 +3,20 @@ #include "types.h" +typedef struct STRUCT_DSP_TASK2 { + /* 0x00 */ u16* iram_mmem_addr; + /* 0x04 */ u32 iram_length; + /* 0x08 */ u16 iram_addr; + /* 0x0A */ u16* dram_mmem_addr; + /* 0x0E */ u32 dram_length; + /* 0x12 */ u16 dram_addr; + /* 0x16 */ u16 dsp_init_vector; +}DSPTaskInfo2; + +extern s32 __DSPCheckMXICBoot2(DSPTaskInfo2* task); +extern void DSPInit2(DSPTaskInfo2* task); extern void DspBoot(void); +extern u16 jdsp[]; + #endif diff --git a/include/jaudio_NES/dspproc.h b/include/jaudio_NES/dspproc.h index 018be422..8ab52eb0 100644 --- a/include/jaudio_NES/dspproc.h +++ b/include/jaudio_NES/dspproc.h @@ -5,5 +5,6 @@ extern u32 DSPReleaseHalt(void); extern void DsyncFrame(u32 subframes, u32 dspbuf_start, u32 dspbuf_end); +extern void DwaitFrame(); #endif diff --git a/src/static/jaudio_NES/internal/dspboot.c b/src/static/jaudio_NES/internal/dspboot.c new file mode 100644 index 00000000..bf9f38a8 --- /dev/null +++ b/src/static/jaudio_NES/internal/dspboot.c @@ -0,0 +1,380 @@ +#include "jaudio_NES/dspboot.h" +#include "jaudio_NES/dspproc.h" +#include "dolphin/dsp.h" +#include "dolphin/os.h" +#include "dolphin/hw_regs.h" + +u16 jdsp[] ATTRIBUTE_ALIGN(32) = { + 0x029F, 0x0010, 0x0000, 0x0000, 0x02FF, 0x0000, 0x02FF, 0x0000, 0x02FF, 0x0000, 0x02FF, 0x0000, 0x02FF, 0x0000, + 0x02FF, 0x0000, 0x1302, 0x1303, 0x1204, 0x1305, 0x1306, 0x8E00, 0x8C00, 0x8B00, 0x009E, 0xFFFF, 0x1D1E, 0x1D3E, + 0x1D5E, 0x1D7E, 0x0092, 0x00FF, 0x8100, 0x009F, 0x1000, 0x0080, 0x0000, 0x005F, 0x1B1E, 0x26FF, 0x16FC, 0x8888, + 0x16FD, 0x1111, 0x26FC, 0x02A0, 0x8000, 0x029C, 0x002C, 0x8100, 0x8900, 0x26FE, 0x02C0, 0x8000, 0x029C, 0x0031, + 0x27FF, 0x00FF, 0x0345, 0x1FFE, 0x0340, 0x00FF, 0x00FF, 0x0344, 0x1479, 0x0240, 0x007E, 0x0200, 0x0062, 0x00FE, + 0x0343, 0x1C1E, 0x170F, 0x009E, 0x8000, 0x00DC, 0x0343, 0x02BF, 0x005A, 0x029F, 0x0031, 0x26FE, 0x02C0, 0x8000, + 0x029C, 0x0051, 0x24FF, 0x1B1E, 0x1B1C, 0x02DF, 0x2EFC, 0x2CFD, 0x26FC, 0x02A0, 0x8000, 0x029C, 0x005C, 0x02DF, + 0x029F, 0x0049, 0x029F, 0x031D, 0x029F, 0x04BF, 0x029F, 0x0031, 0x029F, 0x00E1, 0x029F, 0x00F3, 0x029F, 0x06C4, + 0x029F, 0x0678, 0x029F, 0x06E0, 0x029F, 0x06A8, 0x029F, 0x0049, 0x029F, 0x0721, 0x029F, 0x0BA7, 0x029F, 0x0049, + 0x193E, 0x193C, 0x2FCD, 0x0F00, 0x2FC9, 0x2ECE, 0x2CCF, 0x1FE0, 0x1501, 0x2FCB, 0x02BF, 0x0091, 0x02DF, 0x193E, + 0x193C, 0x2FCD, 0x0F01, 0x029F, 0x0082, 0x26C9, 0x02A0, 0x0004, 0x029C, 0x0091, 0x02DF, 0x193E, 0x193C, 0x00FF, + 0xFFCD, 0x0F00, 0x00FF, 0xFFC9, 0x00FE, 0xFFCE, 0x00FC, 0xFFCF, 0x1FE0, 0x1501, 0x00FF, 0xFFCB, 0x02DF, 0x00DE, + 0xFFC9, 0x02A0, 0x0004, 0x029C, 0x00A7, 0x02DF, 0x193E, 0x193C, 0x0240, 0x7FFF, 0x02BF, 0x00BC, 0x007A, 0x00BA, + 0x26D3, 0x1B3E, 0x0000, 0x0000, 0x0000, 0x02DF, 0x1C3F, 0x009F, 0x0005, 0x2FD1, 0x1F5E, 0x1F1C, 0x2ED4, 0x2CD5, + 0x8900, 0x1FA0, 0x4C00, 0x0200, 0x0030, 0x2ED6, 0x2CD7, 0x1FDA, 0x1F98, 0x147F, 0x2ED8, 0x2CD9, 0x1F40, 0x02DF, + 0x193E, 0x193C, 0x0260, 0x8000, 0x02BF, 0x00BC, 0x007A, 0x00DF, 0x193E, 0x2ED3, 0x0000, 0x0000, 0x0000, 0x0000, + 0x02DF, 0x0080, 0x0346, 0x02BF, 0x0051, 0x02BF, 0x0051, 0x0081, 0x0346, 0x00DF, 0x0349, 0x0340, 0xFFFF, 0x00C0, + 0x0345, 0x02BF, 0x007E, 0x029F, 0x0049, 0x0080, 0x0346, 0x02BF, 0x0051, 0x02BF, 0x0051, 0x0081, 0x0346, 0x00DF, + 0x0349, 0x0340, 0xFFFF, 0x00C0, 0x0345, 0x02BF, 0x008B, 0x029F, 0x0049, 0x0092, 0x00FF, 0x2FD1, 0x0340, 0x0003, + 0x1F7F, 0x1F5E, 0x1F1C, 0x0200, 0x0010, 0x2ED4, 0x2CD5, 0x8900, 0x1FA0, 0x4C00, 0x0200, 0x0030, 0x2ED6, 0x2CD7, + 0x1FDA, 0x1F98, 0x1FFB, 0x7900, 0x02CA, 0x2ED8, 0x2CD9, 0x02DF, 0x1C23, 0x197E, 0x191B, 0xD858, 0x1120, 0x012A, + 0xDCD3, 0x6231, 0xDCD3, 0x6231, 0x4900, 0x1108, 0x0130, 0xDCD3, 0x6231, 0xDCD3, 0x6231, 0x02DF, 0x8F00, 0x1C03, + 0x00DB, 0x038E, 0x009A, 0x0004, 0x1978, 0xA843, 0xAE00, 0x1128, 0x0140, 0x38C3, 0xAE30, 0x38C3, 0xAE30, 0x8E00, + 0x02DF, 0x00F9, 0x0361, 0x1FC0, 0x0200, 0xFFFC, 0x1C1E, 0x1C5E, 0x0083, 0x043C, 0x197E, 0x197F, 0x80A2, 0x64A3, + 0x6530, 0x1B1F, 0x1C02, 0x8100, 0x00DE, 0x0402, 0x00FE, 0x0362, 0x1474, 0x1F7E, 0x1F3C, 0x8900, 0x00DD, 0x0430, + 0x1504, 0x0604, 0x0290, 0x01B8, 0x1FDD, 0x0082, 0x0C00, 0x1050, 0x4B2A, 0x1FBE, 0x00FE, 0x0360, 0x8900, 0x1FBE, + 0x009A, 0xFFF8, 0x009B, 0x00FC, 0x00D8, 0x0361, 0x0082, 0x0C00, 0x0083, 0x0C00, 0x195E, 0x3480, 0x1128, 0x017D, + 0x367A, 0x35B3, 0x3772, 0x34BB, 0x8A00, 0x0082, 0x0C00, 0x00DD, 0x0430, 0x1504, 0x1FE0, 0x8100, 0x00DE, 0x0362, + 0x1474, 0x1F7E, 0x1F3C, 0x8F00, 0x1943, 0x4BC3, 0x90C3, 0xF2C3, 0xF2C3, 0xF200, 0xFE00, 0x1C1F, 0x1943, 0x4BC3, + 0x90C3, 0x114E, 0x019F, 0xF2C3, 0xF2C3, 0xF231, 0x1C1F, 0x1943, 0x4BC3, 0x92C3, 0xF2C3, 0xF2C3, 0xF231, 0xFE00, + 0x1B3E, 0x8B00, 0x8E00, 0x00FE, 0x0433, 0x1C1F, 0x150C, 0x0340, 0x0FFF, 0x00FF, 0x0430, 0x0083, 0x043C, 0x191E, + 0x191F, 0x80A0, 0x64A1, 0x6533, 0x1B7F, 0x02DF, 0x1FE0, 0x1C1F, 0x1128, 0x01C1, 0x4B70, 0x1B3E, 0x1C1F, 0x4B70, + 0x1B3E, 0x1C1F, 0x029F, 0x01A7, 0x8A00, 0x0083, 0x03E8, 0x191E, 0x191A, 0x1006, 0x64A0, 0x1B7E, 0x1B7A, 0x0080, + 0x03E8, 0x0088, 0x0007, 0x1150, 0x01DE, 0x1C61, 0x84C3, 0xF2C3, 0xF2C3, 0xF2C3, 0xF2C3, 0xF2C3, 0xF2C3, 0xF2C3, + 0xF200, 0xFE00, 0x1B3E, 0x0088, 0xFFFF, 0x8B00, 0x02DF, 0x8A00, 0x05FE, 0x0083, 0x03E8, 0x191E, 0x191A, 0x005F, + 0x64A0, 0x1B7E, 0x1B7A, 0x0080, 0x03E8, 0x0501, 0x1D1F, 0x1150, 0x01F9, 0x1C61, 0x84C3, 0x005F, 0xF2C3, 0xF200, + 0xFE00, 0x1B3E, 0x0088, 0xFFFF, 0x8B00, 0x02DF, 0x0083, 0x03E8, 0x191E, 0x191A, 0x64A0, 0x64A0, 0x1B7E, 0x1B7A, + 0x0080, 0x03E8, 0x0088, 0x0003, 0x0085, 0x0000, 0x0087, 0x0000, 0x1FC2, 0x195B, 0x1959, 0x195F, 0x195A, 0x1C5E, + 0x1FDA, 0x1C61, 0x8A00, 0x8F00, 0x191A, 0xB850, 0xE250, 0xEA50, 0xE8E8, 0xB650, 0x1127, 0x0229, 0xE3A8, 0x197E, + 0xE850, 0xEAF8, 0xBF50, 0xE2A9, 0x197F, 0xEA50, 0xE8E8, 0xB650, 0xE3A8, 0x197E, 0xE850, 0xEAF8, 0xBF00, 0x1BFF, + 0x197F, 0x8E00, 0x8B00, 0x0088, 0xFFFF, 0x1B5B, 0x1B59, 0x1B5F, 0x1B5E, 0x02DF, 0x8100, 0x1F5E, 0x00D8, 0x0402, + 0x00DC, 0x0430, 0x0080, 0x0520, 0x00DF, 0x0480, 0x1501, 0x0340, 0x007E, 0x0300, 0x024F, 0x1C5F, 0x175F, 0x00FC, + 0x0430, 0x029F, 0x054A, 0x029F, 0x0270, 0x029F, 0x02AB, 0x029F, 0x0293, 0x029F, 0x0280, 0x029F, 0x02B9, 0x029F, + 0x026F, 0x029F, 0x02D7, 0x029F, 0x02DA, 0x029F, 0x026F, 0x029F, 0x026F, 0x029F, 0x02F8, 0x029F, 0x02B1, 0x029F, + 0x02B5, 0x029F, 0x026F, 0x029F, 0x026F, 0x029F, 0x026F, 0x02DF, 0x1401, 0x009B, 0xC000, 0x0099, 0x4000, 0x1150, + 0x027D, 0x02C0, 0x0001, 0x027C, 0x1B1B, 0x027D, 0x1B19, 0x4800, 0x147F, 0x02DF, 0x1402, 0x8900, 0x1FB8, 0x1501, + 0x009B, 0xC000, 0x0099, 0x4000, 0x1150, 0x0290, 0x02C0, 0x0003, 0x027C, 0x1B1B, 0x027D, 0x1B19, 0x4C00, 0x147E, + 0x02DF, 0x1401, 0x0081, 0x0CA0, 0x009B, 0xC000, 0x0099, 0x4000, 0x8900, 0x0082, 0x0000, 0x1150, 0x02A8, 0x02C0, + 0x0001, 0x027C, 0x1B1B, 0x027D, 0x1B19, 0x183D, 0x4900, 0x1FE2, 0x4C39, 0x147F, 0x02DF, 0x8900, 0x1FB8, 0x157F, + 0x1050, 0x4C20, 0x02DF, 0x0082, 0x0180, 0x029F, 0x02BB, 0x0082, 0x01C0, 0x029F, 0x02BB, 0x0082, 0x0140, 0x008A, + 0x003F, 0x0086, 0x0000, 0x1406, 0x8900, 0x1FB8, 0x1505, 0x009B, 0x003F, 0x009A, 0x0000, 0x3600, 0x1CDE, 0x001A, + 0x3400, 0x1150, 0x02D1, 0x4C4A, 0x3606, 0x1CDE, 0x340E, 0x1B19, 0x1FC2, 0x147A, 0x008A, 0xFFFF, 0x02DF, 0x1050, + 0x1B18, 0x02DF, 0x0082, 0x0100, 0x008A, 0x003F, 0x0086, 0x0000, 0x1406, 0x8900, 0x1FB8, 0x1505, 0x009B, 0x003F, + 0x009A, 0x0000, 0x3600, 0x1CDE, 0x001A, 0x3400, 0x1150, 0x02F2, 0x4C4A, 0x3606, 0x1CDE, 0x340E, 0x1B19, 0x1FC2, + 0x147A, 0x008A, 0xFFFF, 0x02DF, 0x0082, 0x0100, 0x008A, 0x003F, 0x0086, 0x0000, 0x0081, 0x0CA0, 0x1406, 0x8900, + 0x1FB8, 0x1505, 0x009B, 0x003F, 0x009A, 0x0000, 0x3600, 0x1CDE, 0x001A, 0x3400, 0x1150, 0x0317, 0x1939, 0xA000, + 0x140A, 0x4E00, 0x1476, 0x4C4A, 0x3606, 0x1CDE, 0x340E, 0x1B19, 0x1FC2, 0x147A, 0x008A, 0xFFFF, 0x02DF, 0x0080, + 0x0380, 0x02BF, 0x0051, 0x02BF, 0x0051, 0x02BF, 0x0051, 0x02BF, 0x0051, 0x0081, 0x0382, 0x009F, 0x0000, 0x0080, + 0x0200, 0x02BF, 0x007E, 0x0081, 0x0384, 0x009F, 0x0300, 0x0080, 0x0020, 0x02BF, 0x007E, 0x02BF, 0x03A0, 0x00DE, + 0x0345, 0x00FE, 0x0342, 0x02BF, 0x0AB1, 0x029F, 0x0049, 0x00DE, 0x0344, 0x1404, 0x0200, 0x03A8, 0x1C1E, 0x02BF, + 0x0051, 0x02BF, 0x0051, 0x02BF, 0x0051, 0x00DE, 0x0345, 0x1B1E, 0x00DE, 0x0344, 0x0200, 0x03A4, 0x1C1E, 0x8100, + 0x1B1E, 0x02DF, 0x00DE, 0x0344, 0x1404, 0x0200, 0x03B0, 0x1C1E, 0x02BF, 0x0051, 0x02BF, 0x0051, 0x02BF, 0x0051, + 0x02BF, 0x0051, 0x02DF, 0x0081, 0x034C, 0x009F, 0x0400, 0x0080, 0x00C0, 0x02BF, 0x007E, 0x02DF, 0x0081, 0x034C, + 0x009F, 0x0400, 0x0080, 0x0080, 0x0081, 0x034C, 0x193E, 0x193C, 0x0098, 0x0000, 0x7000, 0x02BF, 0x008D, 0x02DF, + 0x191E, 0x191A, 0x005F, 0x64A0, 0x1B7E, 0x1B7A, 0x02DF, 0x191E, 0x191A, 0x007F, 0x038E, 0x32B2, 0x65A0, 0x33BA, + 0x64A1, 0x0000, 0x02DF, 0x8A00, 0x157F, 0x1C20, 0x1C03, 0x193A, 0x9051, 0x925B, 0x007F, 0x039D, 0x4651, 0x92B2, + 0x4651, 0x92B2, 0x8B00, 0x02DF, 0x0083, 0xFFA0, 0x0080, 0x0300, 0x009F, 0x000E, 0x1108, 0x03AB, 0x191E, 0x1B7E, + 0x191E, 0x1B7E, 0x02DF, 0x0080, 0x0F40, 0x0082, 0x0D00, 0x0083, 0x0D60, 0x009F, 0x0028, 0x02BF, 0x0387, 0x8900, + 0x009E, 0x0050, 0x0080, 0x0CA0, 0x005E, 0x1B1F, 0x0080, 0x0F40, 0x005E, 0x1B1F, 0x0080, 0x0FA0, 0x005E, 0x1B1F, + 0x0080, 0x0B00, 0x005E, 0x1B1F, 0x0080, 0x09A0, 0x005E, 0x1B1F, 0x02DF, 0x00C0, 0x03A0, 0x191A, 0x00DF, 0x03A1, + 0x009B, 0x00A0, 0x0081, 0x0393, 0x18BC, 0xB871, 0xBC00, 0x0080, 0x0050, 0x0508, 0x02BF, 0x0080, 0x00DE, 0x0390, + 0x02A0, 0x0001, 0x029D, 0x03EE, 0x0080, 0x0398, 0x009E, 0x0008, 0x00C1, 0x03A1, 0x02BF, 0x01C4, 0x009F, 0x0050, + 0x00C0, 0x03A1, 0x8100, 0x00DE, 0x0394, 0xB100, 0x0295, 0x03FD, 0x1C7E, 0x00D8, 0x0395, 0x02BF, 0x0391, 0x009F, + 0x0050, 0x00C0, 0x03A1, 0x8100, 0x00DE, 0x0396, 0xB100, 0x0295, 0x040C, 0x1C7E, 0x00D8, 0x0397, 0x02BF, 0x0391, + 0x00DE, 0x0390, 0x02A0, 0x0002, 0x02DD, 0x0080, 0x0398, 0x009E, 0x0008, 0x00C1, 0x03A1, 0x02BF, 0x01C4, 0x02DF, + 0x009F, 0x0DC0, 0x00FF, 0x03A1, 0x009F, 0x03A8, 0x00FF, 0x03A2, 0x009F, 0x03A4, 0x00FF, 0x03A0, 0x1104, 0x044F, + 0x00C0, 0x03A2, 0x0083, 0x0390, 0x009F, 0x000E, 0x02BF, 0x0380, 0x00DA, 0x0390, 0x8600, 0x0295, 0x0440, 0x00DF, + 0x03A1, 0x1C7F, 0x0550, 0x1C1F, 0x009F, 0x0006, 0x02BF, 0x0380, 0x02BF, 0x03CF, 0x00DE, 0x03A2, 0x0410, 0x00FE, + 0x03A2, 0x00DE, 0x03A1, 0x0460, 0x00FE, 0x03A1, 0x00DE, 0x03A0, 0x7400, 0x00FE, 0x03A0, 0x0000, 0x02DF, 0x00C0, + 0x03A0, 0x181A, 0x8100, 0x181E, 0x00DB, 0x0391, 0x7400, 0xD100, 0x0270, 0x8100, 0x1B1E, 0x00DF, 0x03A1, 0x009B, + 0x00A0, 0x0081, 0x0393, 0x18BC, 0xB871, 0xBC00, 0x0080, 0x0050, 0x02BF, 0x008D, 0x02DF, 0x009F, 0x0DC0, 0x00FF, + 0x03A1, 0x009F, 0x03A8, 0x00FF, 0x03A2, 0x009F, 0x03A4, 0x00FF, 0x03A0, 0x1104, 0x0497, 0x00C0, 0x03A2, 0x0083, + 0x0390, 0x009F, 0x000E, 0x02BF, 0x0380, 0x00DA, 0x0390, 0x8600, 0x0295, 0x0488, 0x02BF, 0x0451, 0x00DE, 0x03A2, + 0x0410, 0x00FE, 0x03A2, 0x00DE, 0x03A1, 0x0460, 0x00FE, 0x03A1, 0x00DE, 0x03A0, 0x7400, 0x00FE, 0x03A0, 0x0000, + 0x02DF, 0x0081, 0x0386, 0x009F, 0x03A8, 0x0080, 0x0040, 0x02BF, 0x007E, 0x02DF, 0x191E, 0x189C, 0x4800, 0x1B1E, + 0x1B1C, 0x02DF, 0x8100, 0x26FE, 0x02C0, 0x8000, 0x029C, 0x04A9, 0x26FF, 0x02DF, 0x0080, 0x0388, 0x0081, 0x0051, + 0x173F, 0x00DE, 0x0344, 0x00FE, 0x0341, 0x00DE, 0x0345, 0x00FE, 0x038E, 0x173F, 0x02DF, 0x02BF, 0x04B0, 0x009E, + 0x8000, 0x00DC, 0x0341, 0x02BF, 0x005A, 0x8100, 0x00FE, 0x0355, 0x02BF, 0x0499, 0x00DE, 0x0341, 0x007E, 0x0675, + 0x02BF, 0x03AD, 0x02BF, 0x041A, 0x02BF, 0x0B77, 0x02BF, 0x04A8, 0x8100, 0x00FE, 0x0354, 0x00DE, 0x0342, 0x007E, + 0x0629, 0x00D8, 0x0354, 0x009A, 0x0180, 0x8100, 0x00DE, 0x0380, 0x00DC, 0x0381, 0x9000, 0x9400, 0x00FE, 0x034C, + 0x00FC, 0x034D, 0x02BF, 0x0367, 0x00DA, 0x0400, 0x8600, 0x0295, 0x0624, 0x00DA, 0x0401, 0x8600, 0x0294, 0x0624, + 0x00DA, 0x0433, 0x00FA, 0x03F8, 0x00DA, 0x0406, 0x8600, 0x0294, 0x0A1F, 0x8100, 0x00DE, 0x0480, 0x0605, 0x0295, + 0x0517, 0x0609, 0x0295, 0x0517, 0x0620, 0x0295, 0x088E, 0x0621, 0x0295, 0x0897, 0x0608, 0x0295, 0x0A27, 0x029F, + 0x023A, 0x00D8, 0x0402, 0x8100, 0x8900, 0x00DC, 0x0430, 0x8D00, 0x0099, 0x0050, 0xA000, 0xA400, 0x1404, 0x8C00, + 0x1FFE, 0x0083, 0x0580, 0x8100, 0x00DE, 0x0480, 0x0605, 0x0295, 0x053C, 0x00DA, 0x0481, 0x8600, 0x0295, 0x0540, + 0x00DA, 0x0489, 0x8100, 0x00DE, 0x048B, 0x3800, 0x0240, 0x000F, 0x0295, 0x0540, 0x02BF, 0x07C8, 0x029F, 0x0542, + 0x02BF, 0x0927, 0x0080, 0x0580, 0x0081, 0x0520, 0x0099, 0x0000, 0x02BF, 0x0143, 0x00DA, 0x04A8, 0x8600, 0x0295, + 0x0553, 0x0080, 0x0520, 0x02BF, 0x0B51, 0x009E, 0x0520, 0x00FE, 0x038F, 0x8900, 0x00DF, 0x0484, 0x0340, 0x001F, + 0xB900, 0x0295, 0x0583, 0x00DE, 0x038F, 0x5C00, 0x00FE, 0x038F, 0x1C7E, 0x0080, 0x0440, 0x05FE, 0x02BF, 0x0380, + 0x0080, 0x0490, 0x00C1, 0x038F, 0x8900, 0x00DF, 0x0484, 0x0340, 0x001F, 0x02BF, 0x01E3, 0x00DE, 0x038F, 0x0450, + 0x1C1E, 0x0083, 0x0440, 0x8900, 0x00DF, 0x0484, 0x0340, 0x001F, 0x05FE, 0x02BF, 0x0380, 0x00DE, 0x0484, 0x0240, + 0x0020, 0x0295, 0x05A5, 0x0080, 0x04A4, 0x00C1, 0x038F, 0x0082, 0x0454, 0x0083, 0x04A7, 0x18FA, 0x8600, 0x0294, + 0x05A3, 0x18FA, 0x8600, 0x0294, 0x05A3, 0x18FA, 0x8600, 0x0294, 0x05A3, 0x8100, 0x18FE, 0x0280, 0x7FFF, 0x0295, + 0x05A5, 0x02BF, 0x01FE, 0x8100, 0x1C9E, 0x1CDE, 0x7400, 0x1CFE, 0x8100, 0x00DE, 0x0407, 0xB100, 0x0295, 0x05BD, + 0x00C3, 0x038F, 0x0007, 0x0080, 0x0477, 0x0084, 0xFFFF, 0x0087, 0xFFFF, 0x199A, 0x6554, 0x005E, 0x65AD, 0x00DA, + 0x0485, 0x8600, 0x0295, 0x05D3, 0x8900, 0x0086, 0x0005, 0x0082, 0x040A, 0x1106, 0x05CB, 0x18DE, 0x147F, 0x4D36, + 0xB900, 0x0294, 0x05D3, 0x009A, 0x0001, 0x00FA, 0x0401, 0x8F00, 0x0086, 0x0002, 0x0082, 0x0408, 0x1106, 0x0603, + 0x8100, 0x195E, 0x1200, 0xB100, 0x0275, 0x1300, 0x1C7E, 0x195E, 0x195F, 0x5C00, 0x14FB, 0x1F5E, 0x1F1C, 0x185E, + 0x0240, 0x00FF, 0x1F7E, 0x185E, 0x1478, 0x009C, 0x0000, 0xD100, 0x0295, 0x05F8, 0x185E, 0x0272, 0x7400, 0x0271, + 0x7800, 0x1A5E, 0x0006, 0x00DE, 0x038F, 0x5600, 0x029D, 0x0601, 0x1C1E, 0x02BF, 0x0120, 0x0000, 0x1B5F, 0x000A, + 0x8E00, 0x8100, 0x00DE, 0x0407, 0xB100, 0x0295, 0x061A, 0x00C3, 0x038F, 0x0087, 0x004F, 0x001F, 0x0080, 0x0477, + 0x0084, 0xFFFF, 0x0087, 0xFFFF, 0x19FA, 0x6557, 0x005E, 0x65AF, 0x00DA, 0x0406, 0x8600, 0x0294, 0x0622, 0x8100, + 0x00FE, 0x0404, 0x02BF, 0x0370, 0x00DE, 0x0354, 0x7400, 0x00FE, 0x0354, 0x0000, 0x16FB, 0x0001, 0x02BF, 0x0AD2, + 0x02BF, 0x0AE5, 0x02BF, 0x0B3C, 0x0080, 0x09A0, 0x0083, 0x0D00, 0x009F, 0x0050, 0x0098, 0x5A82, 0x02BF, 0x0391, + 0x0080, 0x09A0, 0x0083, 0x0D60, 0x009F, 0x0050, 0x02BF, 0x0391, 0x0083, 0x0D00, 0x02BF, 0x0132, 0x0081, 0x0388, + 0x009F, 0x0D00, 0x0080, 0x0050, 0x02BF, 0x008B, 0x0080, 0x0FA0, 0x0083, 0x0D60, 0x009F, 0x0050, 0x0098, 0x8000, + 0x02BF, 0x0391, 0x0083, 0x0D60, 0x02BF, 0x0132, 0x0081, 0x038A, 0x009F, 0x0D60, 0x0080, 0x0050, 0x02BF, 0x008B, + 0x009A, 0x0000, 0x0098, 0x00A0, 0x0080, 0x0388, 0x02BF, 0x04A2, 0x0080, 0x038A, 0x02BF, 0x04A2, 0x02BF, 0x046B, + 0x0000, 0x0000, 0x029F, 0x0031, 0x0080, 0x0346, 0x02BF, 0x0051, 0x02BF, 0x0051, 0x0081, 0x0346, 0x193E, 0x193C, + 0x009F, 0x0400, 0x00C0, 0x0345, 0x02BF, 0x0080, 0x0081, 0x0348, 0x193E, 0x193C, 0x009F, 0x0800, 0x00C0, 0x0345, + 0x02BF, 0x0080, 0x0081, 0x0346, 0x193E, 0x193C, 0x009F, 0x0800, 0x00C0, 0x0345, 0x02BF, 0x008D, 0x0081, 0x0348, + 0x193E, 0x193C, 0x009F, 0x0400, 0x00C0, 0x0345, 0x02BF, 0x008D, 0x029F, 0x0049, 0x0080, 0x0346, 0x02BF, 0x0051, + 0x02BF, 0x0051, 0x0081, 0x0346, 0x193E, 0x193C, 0x009F, 0x0400, 0x00C0, 0x0345, 0x02BF, 0x0080, 0x0081, 0x0348, + 0x193E, 0x193C, 0x009F, 0x0400, 0x00C0, 0x0345, 0x02BF, 0x008D, 0x029F, 0x0049, 0x0080, 0x0346, 0x02BF, 0x0051, + 0x02BF, 0x0051, 0x0081, 0x0346, 0x193E, 0x193C, 0x009F, 0x0400, 0x00C0, 0x0345, 0x02BF, 0x00B0, 0x0081, 0x0348, + 0x193E, 0x193C, 0x009F, 0x0400, 0x00C0, 0x0345, 0x02BF, 0x008D, 0x029F, 0x0049, 0x0080, 0x0346, 0x02BF, 0x0051, + 0x02BF, 0x0051, 0x0081, 0x0346, 0x193E, 0x193C, 0x009F, 0x0400, 0x00C0, 0x0344, 0x02BF, 0x0080, 0x0081, 0x0348, + 0x193E, 0x193C, 0x009F, 0x0800, 0x00C0, 0x0344, 0x02BF, 0x0080, 0x0080, 0x0400, 0x0083, 0x0800, 0x0084, 0x0000, + 0x00DA, 0x0345, 0x00DF, 0x0344, 0x8F00, 0x197B, 0xB800, 0x197B, 0x007F, 0x070D, 0x199E, 0xBC00, 0x80B2, 0x0000, + 0x8E00, 0x0081, 0x0346, 0x193E, 0x193C, 0x009F, 0x0400, 0x00C0, 0x0344, 0x02BF, 0x008D, 0x009E, 0x8200, 0x00DC, + 0x0344, 0x02BF, 0x005A, 0x029F, 0x0031, 0x0080, 0x0346, 0x02BF, 0x0051, 0x0081, 0x0346, 0x009F, 0x0400, 0x00C0, + 0x0345, 0x02BF, 0x007E, 0x02BF, 0x8644, 0x029F, 0x0049, 0x009E, 0x0458, 0x2231, 0x4400, 0x1C1E, 0x1FDA, 0x3280, + 0x7400, 0x2232, 0x4400, 0x0090, 0x0000, 0x029F, 0x074E, 0x009E, 0x0458, 0x2231, 0x4400, 0x1C1E, 0x1FDA, 0x3280, + 0x7400, 0x2232, 0x4400, 0x0090, 0x0000, 0x8200, 0x0270, 0x1FDF, 0x1F3E, 0x02BF, 0x07BB, 0x2634, 0x2435, 0x7200, + 0x5300, 0x2E34, 0x2C35, 0x02DF, 0x8100, 0x2234, 0x2035, 0x4800, 0x147C, 0x2E36, 0x2C37, 0x2380, 0x8D00, 0xC810, + 0xAE00, 0x8C00, 0x2035, 0xF000, 0x4E00, 0x238C, 0x218D, 0x4A00, 0x2E38, 0x2C39, 0x1FD8, 0x0240, 0x000F, 0x2E31, + 0x268A, 0x248B, 0x5800, 0x2E3A, 0x2C3B, 0x02DF, 0x8100, 0x2601, 0xB100, 0x0294, 0x07AF, 0x2236, 0x2037, 0x8100, + 0x268A, 0x248B, 0x147C, 0x5800, 0x0295, 0x078B, 0x02BF, 0x0812, 0x0E10, 0x2E32, 0x8100, 0x2E31, 0x02DF, 0x228A, + 0x208B, 0x8100, 0x2634, 0x2435, 0x5800, 0x0290, 0x0798, 0x02BF, 0x0812, 0x263B, 0x029F, 0x0787, 0x8100, 0x2681, + 0xB100, 0x0295, 0x07B0, 0x2688, 0x2489, 0x2E34, 0x2C35, 0x0E10, 0x2E32, 0x02BF, 0x0758, 0x2682, 0x2E67, 0x2683, + 0x2E66, 0x8100, 0x00FE, 0x0362, 0x02BF, 0x0812, 0x02DF, 0x8100, 0x0081, 0x0458, 0x1010, 0x1B3E, 0x7400, 0x2E01, + 0x0E10, 0x2E32, 0x8100, 0x2E31, 0x02DF, 0xB100, 0x02D5, 0x04FE, 0x1F1E, 0x191E, 0x0291, 0x07C6, 0x191A, 0x0058, + 0x64A0, 0x6433, 0x1B7E, 0x02DF, 0x0092, 0x0004, 0x02BF, 0x0758, 0x8100, 0x00FE, 0x0362, 0x8100, 0x263A, 0x243B, + 0xB100, 0x0294, 0x07E5, 0x02BF, 0x0776, 0x2231, 0x8600, 0x0294, 0x07E2, 0x02BF, 0x073F, 0xB900, 0x0295, 0x080F, + 0x02BF, 0x0758, 0x8100, 0x263A, 0x243B, 0x1F1F, 0x009A, 0x0000, 0x5800, 0x0290, 0x07FC, 0x8100, 0x2631, 0xB100, + 0x0294, 0x07F6, 0x02BF, 0x0776, 0x2201, 0x8600, 0x0294, 0x080C, 0x02BF, 0x0731, 0x02BF, 0x0758, 0x029F, 0x07CF, + 0x8100, 0x2631, 0xB100, 0x0294, 0x0803, 0x02BF, 0x0776, 0x02BF, 0x073F, 0xB900, 0x0295, 0x080F, 0x02BF, 0x0758, + 0x029F, 0x07FC, 0x8100, 0x005F, 0x1B7E, 0x0092, 0x00FF, 0x02DF, 0x00FF, 0x0360, 0x00DA, 0x0362, 0x8600, 0x0294, + 0x0824, 0x0A01, 0x00FA, 0x0362, 0x2638, 0x2439, 0x009F, 0x0005, 0x02BF, 0x0105, 0x0092, 0x0004, 0x0080, 0xFFD3, + 0x0084, 0x0000, 0x199E, 0x1FFE, 0x1401, 0x0240, 0x001E, 0x0200, 0x0300, 0x1C3E, 0x157C, 0x0340, 0x000F, 0x0A11, + 0x5500, 0x8100, 0x2680, 0x0605, 0x0295, 0x0852, 0x009A, 0x00F0, 0x009B, 0x000F, 0x0082, 0x0370, 0x1998, 0x6000, + 0x1107, 0x0849, 0x3400, 0x1408, 0x6032, 0x3644, 0x140C, 0x6032, 0x3400, 0x1408, 0x6032, 0x3600, 0x140C, 0x1B5E, + 0x029F, 0x0872, 0x009A, 0xC000, 0x0082, 0x0370, 0x1998, 0x6000, 0x1103, 0x0865, 0x1408, 0x3400, 0x6032, 0x140A, + 0x3400, 0x6032, 0x140C, 0x3400, 0x6032, 0x140E, 0x3444, 0x6032, 0x1408, 0x3400, 0x6032, 0x140A, 0x3400, 0x6032, + 0x140C, 0x3400, 0x6032, 0x140E, 0x3400, 0x1B5E, 0x8F00, 0x1F7F, 0x2066, 0x2767, 0x193A, 0x1939, 0x0080, 0x0370, + 0x0081, 0x0458, 0x1C80, 0xA000, 0xEA70, 0x1108, 0x0888, 0x3A93, 0xA478, 0x1485, 0xE831, 0x3B92, 0xA570, 0x1585, + 0xEA39, 0x8E00, 0x8900, 0x00DF, 0x0360, 0x02DF, 0x8900, 0x009F, 0x0050, 0x0083, 0x0520, 0x02BF, 0x08A9, 0x029F, + 0x054A, 0x00D8, 0x0402, 0x8100, 0x8900, 0x00DC, 0x0430, 0x009A, 0x0050, 0x9000, 0x9400, 0x1404, 0x1FFE, 0x0083, + 0x0580, 0x02BF, 0x08A9, 0x029F, 0x0542, 0x0092, 0x0004, 0x8100, 0x263A, 0x243B, 0x1F1F, 0x009A, 0x0000, 0x5800, + 0x0290, 0x08C9, 0x8900, 0x00C0, 0x043B, 0x02BF, 0x08EE, 0x8100, 0x1FD8, 0x223B, 0x5400, 0x0007, 0x1979, 0x005E, + 0x1B79, 0x009F, 0x0001, 0x2F01, 0x8900, 0x2F3B, 0x0092, 0x00FF, 0x02DF, 0x2E3A, 0x2C3B, 0x8100, 0x8900, 0x268A, + 0x2734, 0x5C00, 0x2E36, 0x5000, 0x0290, 0x08E8, 0x00C0, 0x0436, 0x02BF, 0x08EE, 0x8100, 0x1FD8, 0x2236, 0x5400, + 0x1C1E, 0x8100, 0x2E34, 0x2688, 0x2489, 0x2E8C, 0x2C8D, 0x02BF, 0x08EE, 0x0092, 0x00FF, 0x02DF, 0x1C18, 0x02BF, + 0x08EE, 0x0092, 0x00FF, 0x02DF, 0x8100, 0x1FC0, 0xB100, 0x02D5, 0x8900, 0x2734, 0x0340, 0x0001, 0x009B, 0x0000, + 0x1F3F, 0x268C, 0x248D, 0x8900, 0x2534, 0x1501, 0x4C00, 0x5A00, 0x5A00, 0x1C20, 0x1FE0, 0x0502, 0x1C1F, 0x009F, + 0x0A00, 0x0092, 0x00FF, 0x02BF, 0x0080, 0x0092, 0x0004, 0x2734, 0x1F61, 0x4700, 0x2F34, 0x0080, 0x0A00, 0x8900, + 0x1FF9, 0xB900, 0x0274, 0x0008, 0x8900, 0x1FE1, 0x191E, 0x0701, 0x0293, 0x0925, 0x191A, 0x05FE, 0x005F, 0x64A0, + 0x1B7E, 0x1B7A, 0x02DF, 0x1B7E, 0x02DF, 0x0092, 0x0004, 0x2201, 0x8600, 0x0294, 0x0958, 0x2204, 0x8600, 0x02B4, + 0x09AC, 0x2231, 0x8600, 0x0295, 0x094D, 0x009E, 0x0458, 0x4400, 0x1C1E, 0x0E10, 0x5400, 0x1F7E, 0x02BF, 0x07BB, + 0xD900, 0x0292, 0x094C, 0x0295, 0x0948, 0x2631, 0x4C00, 0x2E31, 0x029F, 0x09A9, 0x8100, 0x2E31, 0x029F, 0x09A9, + 0x5700, 0x8100, 0x2605, 0xB100, 0x0295, 0x0969, 0x8100, 0x2E05, 0x2281, 0x8600, 0x0294, 0x095F, 0x8100, 0x005F, + 0x1B7E, 0x7400, 0x2E01, 0x029F, 0x09A9, 0x2688, 0x2489, 0x2E34, 0x2C35, 0x02BF, 0x09B1, 0x2682, 0x2483, 0x2E67, + 0x2C66, 0x00FF, 0x0360, 0x2638, 0x2439, 0x009F, 0x0005, 0x02BF, 0x0105, 0x0092, 0x0004, 0x8900, 0x00FF, 0x0362, + 0x00DF, 0x0360, 0x02BF, 0x09CA, 0x8100, 0x00DE, 0x0362, 0x2280, 0x4400, 0x00FE, 0x0362, 0x8100, 0x263A, 0x243B, + 0x0A01, 0x0081, 0x0405, 0x7A00, 0xB100, 0x0275, 0x1A3A, 0x2E3A, 0x2C3B, 0x0710, 0x0293, 0x0997, 0x05F0, 0x2205, + 0x8600, 0x0294, 0x0952, 0x029F, 0x0978, 0x0275, 0x8900, 0x2F31, 0x1FC3, 0x04F0, 0x1C1E, 0x0083, 0x0458, 0x0E10, + 0x02BF, 0x07BB, 0x2638, 0x2439, 0x00D8, 0x0362, 0x7000, 0x2C39, 0x2E38, 0x0092, 0x00FF, 0x02DF, 0x8100, 0x2E34, + 0x2E35, 0x2E66, 0x2E67, 0x2334, 0x2135, 0x268A, 0x248B, 0x5A00, 0x147C, 0x2E3A, 0x2C3B, 0x2634, 0x2435, 0x147C, + 0x2280, 0xC010, 0x9600, 0xF000, 0x4E00, 0x238C, 0x218D, 0x4A00, 0x2E38, 0x2C39, 0x8100, 0x2E05, 0x2E31, 0x02DF, + 0x00FF, 0x0360, 0x0080, 0xFFD3, 0x0084, 0x0000, 0x199E, 0x1FFE, 0x1401, 0x0240, 0x001E, 0x0200, 0x0300, 0x1C3E, + 0x157C, 0x0340, 0x000F, 0x0A11, 0x5500, 0x009A, 0x00F0, 0x009B, 0x000F, 0x0082, 0x0370, 0x1998, 0x6000, 0x1107, + 0x09EC, 0x3400, 0x1408, 0x6032, 0x3644, 0x140C, 0x6032, 0x3400, 0x1408, 0x6032, 0x3600, 0x140C, 0x1B5E, 0x8F00, + 0x1F7F, 0x2066, 0x2767, 0x193A, 0x1939, 0x0080, 0x0370, 0x1C80, 0xA000, 0xEA70, 0x3A93, 0xA478, 0x1485, 0xE833, + 0x3B92, 0xA570, 0x1585, 0xEA3B, 0x1106, 0x0A0F, 0x3A93, 0xA478, 0x1485, 0xE833, 0x3B92, 0xA570, 0x1585, 0xEA3B, + 0x3A93, 0xA478, 0x1485, 0xE833, 0x3B92, 0xA500, 0x1585, 0x1B7F, 0x2E66, 0x2F67, 0x8E00, 0x8900, 0x00DF, 0x0360, + 0x02DF, 0x0083, 0x0520, 0x00DE, 0x0433, 0x1050, 0x1B7E, 0x029F, 0x054A, 0x0092, 0x0004, 0x2002, 0x8100, 0x8900, + 0x2430, 0x8D00, 0x0099, 0x0050, 0xA000, 0xA400, 0x1404, 0x8C00, 0x1FFE, 0x0083, 0x0580, 0x2201, 0x8600, 0x0294, + 0x0A4A, 0x2204, 0x8600, 0x02B4, 0x0A93, 0x8100, 0x2605, 0xB100, 0x0295, 0x0A57, 0x8100, 0x2E05, 0x2281, 0x8600, + 0x0294, 0x0A51, 0x8100, 0x005F, 0x1B7E, 0x7400, 0x2E01, 0x029F, 0x0A8F, 0x2688, 0x2489, 0x2E34, 0x2C35, 0x02BF, + 0x0A96, 0x00FF, 0x0360, 0x2638, 0x2439, 0x009F, 0x0005, 0x02BF, 0x0105, 0x0092, 0x0004, 0x00DF, 0x0360, 0x8100, + 0x263A, 0xB100, 0x0294, 0x0A76, 0x263B, 0x5C00, 0x0290, 0x0A76, 0x223B, 0x02BF, 0x0AA7, 0x5500, 0x009A, 0x0001, + 0x00FA, 0x0405, 0x029F, 0x0A44, 0x1F5F, 0x02BF, 0x0AA7, 0x00FA, 0x0362, 0x8100, 0x263A, 0x243B, 0x1570, 0x0A01, + 0x0081, 0x0405, 0x5C00, 0xB100, 0x0275, 0x1A3A, 0x2E3A, 0x2C3B, 0x2638, 0x2439, 0x00D8, 0x0362, 0x7000, 0x2C39, + 0x2E38, 0x0092, 0x00FF, 0x029F, 0x0542, 0x8100, 0x2E34, 0x2E35, 0x2334, 0x2135, 0x268A, 0x248B, 0x5A00, 0x2E3A, + 0x2C3B, 0x2634, 0x2435, 0x238C, 0x218D, 0x4A00, 0x2E38, 0x2C39, 0x8100, 0x2E05, 0x02DF, 0x0080, 0xFFD3, 0x0084, + 0x0000, 0x007A, 0x0AAF, 0x199E, 0x1488, 0x1B7E, 0x02DF, 0x009E, 0xFFFF, 0x00FE, 0x03F2, 0x8100, 0x00FE, 0x03F0, + 0x00FE, 0x03F6, 0x009E, 0x0100, 0x00FE, 0x03F7, 0x00DA, 0x03F7, 0x009E, 0x8000, 0x5400, 0x00FE, 0x03F5, 0x009E, + 0x0030, 0x00FE, 0x03F3, 0x009E, 0x0010, 0x00FE, 0x03F4, 0x009E, 0x0096, 0x00FE, 0x03F1, 0x02DF, 0x0080, 0x0B00, + 0x8100, 0x00DE, 0x03F0, 0x8900, 0xB100, 0x0275, 0x0550, 0x00FF, 0x03F0, 0x0200, 0x0B60, 0x1C7E, 0x009F, 0x004E, + 0x02BF, 0x0380, 0x02DF, 0x00DE, 0x03F1, 0x0200, 0x0B60, 0x1C7E, 0x8100, 0x8900, 0x009F, 0x00A0, 0x00DE, 0x03F1, + 0x5D00, 0x009E, 0x0050, 0x0750, 0x0270, 0x5D00, 0x00DA, 0x03F2, 0x8600, 0x0290, 0x0B17, 0x00DE, 0x03F3, 0x5C00, + 0x0293, 0x0B02, 0x029F, 0x0B1C, 0x00DB, 0x03F7, 0x009E, 0x8000, 0x4600, 0x029F, 0x0B0E, 0x00DB, 0x03F7, 0x009E, + 0x8000, 0x5600, 0x00FE, 0x03F5, 0x1FDA, 0x7C00, 0x1F5E, 0x00FE, 0x03F2, 0x029F, 0x0B1C, 0x00DE, 0x03F4, 0x5D00, + 0x0293, 0x0B09, 0x8900, 0x00DD, 0x03F5, 0x1501, 0x8100, 0x00DC, 0x03F6, 0x008B, 0x009F, 0x0080, 0x0B00, 0x0099, + 0x0000, 0x1150, 0x0B30, 0x1878, 0x4C00, 0x1CFE, 0x001F, 0x1FD9, 0x1B18, 0x009F, 0x0B60, 0x1FC3, 0x5C00, 0x00FE, + 0x03F1, 0x00FC, 0x03F6, 0x008B, 0xFFFF, 0x02DF, 0x009F, 0x0050, 0x0080, 0x0B00, 0x0083, 0x0D60, 0x0098, 0x3FFF, + 0x02BF, 0x0391, 0x009F, 0x0050, 0x0080, 0x0B00, 0x0083, 0x0D00, 0x0098, 0x3FFF, 0x02BF, 0x0391, 0x02DF, 0x8A00, + 0x8F00, 0x8100, 0x00DE, 0x0404, 0xB100, 0x0295, 0x0B5E, 0x8100, 0x00FE, 0x0478, 0x00FE, 0x0479, 0x00DF, 0x0479, + 0x00DB, 0x0478, 0x0099, 0x0000, 0x0084, 0x0000, 0x1150, 0x0B6F, 0x199E, 0x5C7C, 0xC000, 0x6E00, 0x1488, 0x4A00, + 0x1B1E, 0x1F7E, 0x00FB, 0x0478, 0x00FF, 0x0479, 0x8B00, 0x8E00, 0x02DF, 0x0080, 0x01BE, 0x1918, 0x191A, 0x0080, + 0x0180, 0x0083, 0x0180, 0x9070, 0x1FFE, 0x1120, 0x0B88, 0x7C00, 0xD450, 0x6533, 0xC550, 0x1501, 0x643B, 0x0080, + 0x01FE, 0x191A, 0x1918, 0x0080, 0x01C0, 0x0083, 0x01C0, 0x1FF8, 0x9070, 0xF800, 0x0240, 0x01FF, 0x0260, 0x2000, + 0x02BF, 0x0B9B, 0x02DF, 0xB900, 0x0272, 0x7C00, 0x1F7E, 0x4700, 0x1110, 0x0BA5, 0x473B, 0x473B, 0x473B, 0x473B, + 0x02DF, 0x1306, 0x0092, 0x00FF, 0x0088, 0xFFFF, 0x0089, 0xFFFF, 0x008A, 0xFFFF, 0x008B, 0xFFFF, 0x8E00, 0x8B00, + 0x8C00, 0x0080, 0x0346, 0x02BF, 0x0051, 0x0081, 0x0346, 0x009F, 0x0500, 0x0080, 0x0010, 0x02BF, 0x007E, 0x02BF, + 0x0BCF, 0x8E00, 0x0081, 0x0508, 0x009F, 0x0520, 0x0080, 0x0004, 0x02BF, 0x008B, 0x1206, 0x029F, 0x0049, 0x8100, + 0x0081, 0x0510, 0x1020, 0x1B3E, 0x00DF, 0x1456, 0x0340, 0xFFD0, 0x8417, 0x0080, 0x0500, 0x00DE, 0x0500, 0x00FE, + 0x0520, 0x00DE, 0x0501, 0x00FE, 0x0521, 0x0086, 0x0000, 0x0082, 0x051F, 0x00DE, 0x15F6, 0x1408, 0x00DF, 0x1766, + 0x0340, 0x00FF, 0x1F5F, 0x02BF, 0x88E5, 0x1F1C, 0x811E, 0x191E, 0x1478, 0x1FFC, 0x1F5E, 0x02BF, 0x8809, 0x02BF, + 0x8723, 0x0006, 0x8106, 0x00DE, 0x166C, 0x1404, 0x0240, 0xFF00, 0x00DF, 0x1231, 0x1578, 0x0340, 0x00FF, 0x1F5F, + 0x02BF, 0x88E5, 0x1F1C, 0x811E, 0x191E, 0x1478, 0x1FFC, 0x1F5E, 0x02BF, 0x8809, 0x02BF, 0x8723, 0x8100, 0x8900, + 0x00D1, 0x0505, 0x9900, 0x8200, 0x0295, 0x0C30, 0x0291, 0x0C3E, 0x0082, 0x0510, 0x0086, 0x0001, 0x00D0, 0x171B, + 0x9100, 0x7D00, 0x4D00, 0x1501, 0x1F5F, 0x00DF, 0x0503, 0x1504, 0x02BF, 0x8809, 0x029F, 0x0C4D, 0x0082, 0x0511, + 0x00DF, 0x0503, 0x1501, 0x1F5F, 0x00DE, 0x1043, 0x0240, 0xFFF0, 0x02BF, 0x88E5, 0x029F, 0x0C4D, 0x0082, 0x0510, + 0x0086, 0x0001, 0x00D0, 0x1285, 0x9100, 0x4D00, 0x1501, 0x00DE, 0x0503, 0x1404, 0x1F5E, 0x02BF, 0x8809, 0x0083, + 0x0513, 0x1B7E, 0x8923, 0x0083, 0x0513, 0x00DF, 0x0507, 0x00DE, 0x11B8, 0x0240, 0xFFF0, 0x1F5E, 0x02BF, 0x81F4, + 0xF100, 0x02BF, 0x8458, 0x8F00, 0x0082, 0x0515, 0x00DE, 0x0506, 0x00DA, 0x165B, 0x02BF, 0x88E5, 0x14FD, 0x1403, + 0x1B5E, 0x1B5C, 0x0082, 0x0516, 0x00DE, 0x1723, 0x14F4, 0x00DA, 0x166B, 0x02BF, 0x88E5, 0xB100, 0x0290, 0x0C79, + 0x8100, 0x14FD, 0x8E00, 0x00DF, 0x1491, 0x0340, 0xD0F0, 0x1CBF, 0x00DF, 0x1468, 0x00D1, 0x11FC, 0x157C, 0x1CDF, + 0x00D1, 0x11B8, 0x9900, 0x1418, 0x1478, 0x1F5E, 0x1FFE, 0x1F65, 0x3600, 0x1402, 0x1F66, 0x3700, 0x1501, 0x4C00, + 0x1518, 0x9900, 0x3500, 0x4C00, 0x00DF, 0x0512, 0x3F00, 0x00FF, 0x0512, 0x1470, 0x00DF, 0x0511, 0x3F00, 0x00FF, + 0x0511, 0x1FA5, 0x1501, 0x1FE6, 0xF100, 0x15F8, 0xF500, 0x1F5F, 0x1F7D, 0x8100, 0x00DE, 0x0511, 0x3400, 0x8900, + 0x00DF, 0x0512, 0x3500, 0x4C00, 0x00DF, 0x0512, 0x1578, 0x4C00, 0x8900, 0x1FFE, 0x1508, 0x3B00, 0x00DE, 0x0511, + 0x3E00, 0x00DF, 0x0512, 0x3B00, 0x1CBF, 0x00DA, 0x15F1, 0x3500, 0x0295, 0x0CDD, 0x00DF, 0x10E2, 0x1508, 0x1F5F, + 0x00DF, 0x103B, 0x7900, 0x3900, 0x3080, 0x00FE, 0x0522, 0x00DC, 0x1229, 0x00DD, 0x11F8, 0x5C00, 0xF000, 0x1FE5, + 0x3080, 0x029F, 0x0CF0, 0x00DF, 0x10CA, 0x1508, 0x1F5F, 0x00DF, 0x1043, 0x7500, 0x3900, 0x3080, 0x00FE, 0x0522, + 0x00DC, 0x1259, 0x00DD, 0x16FE, 0x4C00, 0xF000, 0x1FE5, 0x3080, 0x00FE, 0x0523, 0x02DF, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, +}; + +extern s32 __DSPCheckMXICBoot2(DSPTaskInfo2* task) { + u32 mail; + + while (DSPCheckMailFromDSP() == 0); + mail = DSPReadMailFromDSP(); + + if((mail + 0x7F8F0000) == 0xFEED){ + DSPSendMailToDSP(0x80F3A001); + while (DSPCheckMailToDSP() != 0); + + DSPSendMailToDSP((u32)task->iram_mmem_addr); + while (DSPCheckMailToDSP() != 0); + + DSPSendMailToDSP(0x80F3A002); + while (DSPCheckMailToDSP() != 0); + + DSPSendMailToDSP(task->iram_length); + while (DSPCheckMailToDSP() != 0); + + DSPSendMailToDSP(0x80F3C002); + while (DSPCheckMailToDSP() != 0); + + DSPSendMailToDSP(task->iram_addr); + while (DSPCheckMailToDSP() != 0); + + DSPSendMailToDSP(0x80F3B002); + while (DSPCheckMailToDSP() != 0); + + DSPSendMailToDSP(0); + while (DSPCheckMailToDSP() != 0); + + DSPSendMailToDSP(0x80F3D001); + while (DSPCheckMailToDSP() != 0); + + DSPSendMailToDSP(task->dsp_init_vector); + while (DSPCheckMailToDSP() != 0); + + return 1; + } + + if((mail + 0x3F010000) == 0 || (mail + 0x3F010000) == 1){ + DSPSendMailToDSP(0xC0028073); + while (DSPCheckMailToDSP() != 0); + + DSPSendMailToDSP(0xC000FFCE); + while (DSPCheckMailToDSP() != 0); + + DSPSendMailToDSP((u32)task->iram_mmem_addr >> 16 | 0xC0010000); + while (DSPCheckMailToDSP() != 0); + + DSPSendMailToDSP(0xC000FFCF); + while (DSPCheckMailToDSP() != 0); + + DSPSendMailToDSP((u16)task->iram_mmem_addr | 0xC0010000); + while (DSPCheckMailToDSP() != 0); + + DSPSendMailToDSP(0xC000FFCD); + while (DSPCheckMailToDSP() != 0); + + DSPSendMailToDSP(task->iram_addr | 0xC0010000); + while (DSPCheckMailToDSP() != 0); + + DSPSendMailToDSP(0xC000FFC9); + while (DSPCheckMailToDSP() != 0); + + DSPSendMailToDSP(0xC0010002); + while (DSPCheckMailToDSP() != 0); + + DSPSendMailToDSP(0xC000FFCB); + while (DSPCheckMailToDSP() != 0); + + DSPSendMailToDSP(task->iram_length | 0xC0010000); + while (DSPCheckMailToDSP() != 0); + + DSPSendMailToDSP(0xC0028073); + while (DSPCheckMailToDSP() != 0); + + DSPSendMailToDSP(task->dsp_init_vector | 0xC0020000); + while (DSPCheckMailToDSP() != 0); + + return 1; + } + + return 0; +} + + +extern void DSPInit() { + +} + + +extern void DSPInit2 (DSPTaskInfo2* task){ + BOOL enable; + u16 tmp; + + enable = OSDisableInterrupts(); + __OSUnmaskInterrupts(OS_INTRMASK_DSP_DSP); + + tmp = __DSPRegs[DSP_CONTROL_STATUS]; + tmp = (tmp & ~0xA8)| 0x800; + __DSPRegs[DSP_CONTROL_STATUS] = tmp; + + tmp = __DSPRegs[DSP_CONTROL_STATUS]; + tmp = (tmp & ~0xAC) ; + __DSPRegs[DSP_CONTROL_STATUS] = tmp; + + OSRestoreInterrupts(enable); + + if(__DSPCheckMXICBoot2(task) != 1){ + OSPanic("mxic.c", 357,"DSPInit(): MXIC Boot failed."); + } +} + + +void DspBoot(){ + DSPTaskInfo2 task; + + task.iram_mmem_addr = jdsp; + task.iram_length = sizeof(jdsp); + task.iram_addr = 0; + task.dram_mmem_addr = jdsp; + task.dram_length = 0x100; + task.dram_addr = 0; + + task.dsp_init_vector = 0; + DSPInit2(&task); + + while(DSPCheckMailFromDSP() == 0); + DSPReadMailFromDSP(); + DSPCheckMailFromDSP(); + DwaitFrame(); +} From 0896b19994bde7330dfe94da9736199ce8e8ad41 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Thu, 13 Jun 2024 00:23:42 +0200 Subject: [PATCH 030/234] link dspproc --- config/disasm_overrides.yml | 2 +- config/dol_slices.yml | 3 + src/static/jaudio_NES/internal/dspproc.c | 92 ++++++++++++++++++++++++ 3 files changed, 96 insertions(+), 1 deletion(-) create mode 100644 src/static/jaudio_NES/internal/dspproc.c diff --git a/config/disasm_overrides.yml b/config/disasm_overrides.yml index a8a46532..e5db3a93 100644 --- a/config/disasm_overrides.yml +++ b/config/disasm_overrides.yml @@ -11,7 +11,7 @@ symbol_aligns: 0x80026400: 32 0x80031d80: 32 0x8001ada0: 32 - 0x8002cd20: 32 + 0x8002cfe0: 32 0x8018f1a8: 8 0x80207458: 8 # align RunQueue to 0x001251d8 0x800b9140: 32 # align gam_win_moji1_tex to 32 bytes diff --git a/config/dol_slices.yml b/config/dol_slices.yml index d889bc92..7a23d418 100644 --- a/config/dol_slices.yml +++ b/config/dol_slices.yml @@ -121,6 +121,9 @@ jaudio_NES/internal/dspboot.c: .rodata: [0x800aa780, 0x800aa7a0] .data: [0x800d3b00, 0x800d5500] .sdata2: [0x80218f08, 0x80218f10] +jaudio_NES/internal/dspproc.c: + .text: [0x8002cd20, 0x8002cfe0] + .sdata: [0x80217c18, 0x80217c20] jaudio_NES/internal/random.c: .text: [0x80031ce0, 0x80031d80] .sdata: [0x80217c38, 0x80217c40] diff --git a/src/static/jaudio_NES/internal/dspproc.c b/src/static/jaudio_NES/internal/dspproc.c new file mode 100644 index 00000000..8f97c5ed --- /dev/null +++ b/src/static/jaudio_NES/internal/dspproc.c @@ -0,0 +1,92 @@ +#include "jaudio_NES/dspproc.h" +#include "dolphin/dsp.h" + +static u16 DSP_MIXERLEVEL = 0x4000; + +extern s32 DSPSendCommands(u32* commands, u32 count) { + if (DSPCheckMailToDSP() != 0) { + return -1; + } + if (DSPCheckMailFromDSP() != 0) { + return -1; + } + + int i; + + for (i = 0; i < count; i++) { + DSPSendMailToDSP(commands[i]); + + while (DSPCheckMailToDSP() != 0); + } + + return 0; +} + +extern u32 DSPReleaseHalt() { + while (DSPCheckMailToDSP() != 0); + DSPSendMailToDSP(0); + if (DSPCheckMailFromDSP() != 0) { + DSPReadMailFromDSP(); + } + + return 0x88881357; +} + +extern void DSPWaitFinish() { + do { + while (DSPCheckMailFromDSP() == 0); + } while ((DSPReadMailFromDSP() + 0x77780000) == 0x1357); +} + +extern void DsetupTable(u32 arg0, u32 arg1, u32 arg2, u32 arg3, u32 arg4) { + u32 commands[5]; + + commands[0] = (arg0 & 0xFFFF) | 0x81000000; + commands[1] = arg1; + commands[2] = arg2; + commands[3] = arg3; + commands[4] = arg4; + + DSPSendCommands(commands, ARRAY_COUNT(commands)); + DSPWaitFinish(); +} + +extern void DsyncFrame(u32 subframes, u32 dspbuf_start, u32 dspbuf_end){ + u32 commands[3]; + + commands[0] = (subframes << 16 & 0xFF0000) | 0x82000000 | DSP_MIXERLEVEL; + commands[1] = dspbuf_start; + commands[2] = dspbuf_end; + + DSPSendCommands(commands, ARRAY_COUNT(commands)); + DSPWaitFinish(); +} + +extern void DwaitFrame(){ + u32 commands[1]; + + commands[0] = 0x80000000; + DSPSendCommands(commands, ARRAY_COUNT(commands)); + DSPWaitFinish(); +} + +extern void DiplSec(u32 arg0){ + u32 commands[2]; + + commands[0] = 0x8B000008; + commands[1] = arg0; + DSPSendCommands(commands, ARRAY_COUNT(commands)); + DSPWaitFinish(); +} + +extern void DagbSec(u32 arg0){ + u32 commands[2]; + + commands[0] = 0x8C000008; + commands[1] = arg0; + DSPSendCommands(commands, ARRAY_COUNT(commands)); + DSPWaitFinish(); +} + + + From 0aa45868bb99922080ea59f28ed8290caea4f173 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Fri, 14 Jun 2024 13:24:55 -0400 Subject: [PATCH 031/234] Implement & link jaudio_NES/track.c --- config/disasm_overrides.yml | 4 +- config/dol_slices.yml | 6 + include/jaudio_NES/audiocommon.h | 65 +- include/jaudio_NES/audiostruct.h | 80 +- include/jaudio_NES/audiotable.h | 7 + include/jaudio_NES/audiowork.h | 4 +- include/jaudio_NES/channel.h | 15 + include/jaudio_NES/effect.h | 12 + include/jaudio_NES/memory.h | 3 + include/jaudio_NES/system.h | 10 + include/jaudio_NES/track.h | 13 +- src/static/jaudio_NES/internal/track.c | 2252 ++++++++++++++++++++++++ 12 files changed, 2426 insertions(+), 45 deletions(-) create mode 100644 include/jaudio_NES/effect.h create mode 100644 src/static/jaudio_NES/internal/track.c diff --git a/config/disasm_overrides.yml b/config/disasm_overrides.yml index 525ded38..a2b85821 100644 --- a/config/disasm_overrides.yml +++ b/config/disasm_overrides.yml @@ -9,6 +9,7 @@ symbol_aligns: 0x80019760: 32 0x8001a0c0: 32 0x80026400: 32 + 0x8002c920: 32 # __DSPCheckMXICBoot2__FP16STRUCT_DSP_TASK2 0x80031d80: 32 0x80207458: 8 # align RunQueue to 0x001251d8 0x800b9140: 32 # align gam_win_moji1_tex to 32 bytes @@ -16,4 +17,5 @@ symbol_aligns: 0x800daaa0: 32 # align texture_cache_data_func to 32 bytes 0x80206f30: 16 # malloc.c align 16 bytes 0x800ab260: 32 - 0x801864b0: 8 # dspbuf align 8 (not sure why this doesn't happen) + 0x800d3b00: 32 # dspboot data section has alignment to 32 + 0x801864b0: 8 # dspbuf align 8 (not sure why this doesn't happen) \ No newline at end of file diff --git a/config/dol_slices.yml b/config/dol_slices.yml index b19a5dd6..e7a78d46 100644 --- a/config/dol_slices.yml +++ b/config/dol_slices.yml @@ -111,6 +111,12 @@ jaudio_NES/internal/os.c: .text: [0x80026120, 0x80026300] jaudio_NES/internal/astest.c: .text: [0x80026300, 0x80026400] +jaudio_NES/internal/track.c: + .text: [0x80028e60, 0x8002c920] + .rodata: [0x800aa720, 0x800aa780] + .data: [0x800d36f0, 0x800d3b00] + .sbss: [0x80218540, 0x80218548] + .sdata2: [0x80218ec8, 0x80218f08] jaudio_NES/internal/random.c: .text: [0x80031ce0, 0x80031d80] .sdata: [0x80217c38, 0x80217c40] diff --git a/include/jaudio_NES/audiocommon.h b/include/jaudio_NES/audiocommon.h index d1e688da..4012025c 100644 --- a/include/jaudio_NES/audiocommon.h +++ b/include/jaudio_NES/audiocommon.h @@ -15,13 +15,16 @@ extern "C" { #define AUDIO_GROUP_MAX 5 #define AUDIO_SUBTRACK_NUM 16 +#define AUDIO_NOTE_MAX 128 #define AUDIO_TATUMS_PER_BEAT 48 +#define AUDIO_GROUP_ALL_SUBTRACKS (0xFFFF) + #define AUDIO_MUTE_FLAG_STOP_SAMPLES (1 << 3) -#define AUDIO_MUTE_FLAG_STOP_NOTE (1 << 4) +#define AUDIO_MUTE_FLAG_STOP_SUBTRACK (1 << 4) #define AUDIO_MUTE_FLAG_SOFTEN (1 << 5) -#define AUDIO_MUTE_FLAG_6 (1 << 6) +#define AUDIO_MUTE_FLAG_STOP_NOTE (1 << 6) #define AUDIO_MUTE_FLAG_STOP_SCRIPT (1 << 7) #define NA_MAKE_COMMAND(a0, a1, a2, a3) \ @@ -41,6 +44,13 @@ typedef enum SampleMedium { /* 5 */ MEDIUM_RAM_UNLOADED = 5 } SampleMedium; +typedef enum AudioCacheType { + /* 0 */ CACHE_TEMPORARY, + /* 1 */ CACHE_PERSISTENT, + /* 2 */ CACHE_EITHER, + /* 3 */ CACHE_PERMANENT +} AudioCacheType; + typedef enum AudioCacheLoadType { /* 0 */ CACHE_LOAD_PERMANENT, /* 1 */ CACHE_LOAD_PERSISTENT, @@ -49,6 +59,15 @@ typedef enum AudioCacheLoadType { /* 4 */ CACHE_LOAD_EITHER_NOSYNC } AudioCacheLoadType; +typedef enum AudioLoadStatus { + /* 0 */ LOAD_STATUS_NOT_LOADED, + /* 1 */ LOAD_STATUS_IN_PROGRESS, + /* 2 */ LOAD_STATUS_COMPLETE, + /* 3 */ LOAD_STATUS_DISCARDABLE, + /* 4 */ LOAD_STATUS_MAYBE_DISCARDABLE, + /* 5 */ LOAD_STATUS_PERMANENT +} AudioLoadStatus; + typedef enum AdsrStatus { /* 0 */ ADSR_STATUS_DISABLED, /* 1 */ ADSR_STATUS_INITIAL, @@ -61,6 +80,31 @@ typedef enum AdsrStatus { /* 8 */ ADSR_STATUS_SUSTAIN } AdsrStatus; +typedef enum PortamentoMode { + /* 0 */ PORTAMENTO_MODE_OFF, + /* 1 */ PORTAMENTO_MODE_1, + /* 2 */ PORTAMENTO_MODE_2, + /* 3 */ PORTAMENTO_MODE_3, + /* 4 */ PORTAMENTO_MODE_4, + /* 5 */ PORTAMENTO_MODE_5, + /* 6 */ PORTAMENTO_MODE_6, + /* 7 */ PORTAMENTO_MODE_7, + /* 8 */ PORTAMENTO_MODE_8, // might be PORTAMENTO_MODE_NUM +} PortamentoMode; + +typedef enum SampleBankTableType { + /* 0 */ SEQUENCE_TABLE, + /* 1 */ BANK_TABLE, + /* 2 */ WAVE_TABLE +} SampleBankTableType; + +#define VOICE_TYPE_PERCUSSION 0 +#define VOICE_TYPE_SOUND_EFF 1 +#define VOICE_TYPE_INSTRUMENT_START 2 + +#define AUDIO_SWEEP_IS_SPECIAL(s) ((s).mode & 0x80) +#define AUDIO_SWEEP_MODE(s) ((s).mode & ~0x80) + #define AUDIO_NOTE_RELEASE (1 << 0) #define AUDIO_NOTE_SAMPLE_NOTES (1 << 1) @@ -144,6 +188,23 @@ typedef enum AudioCmd { /* 0xFF */ AUDIOCMD_MAIN_GROUP_SET_VOL_SCALE } AudioCmd; +typedef enum SeqCmd { + SEQCMD_BRANCH_REL_NOT_EQ_ZERO = 0xF2, + SEQCMD_BRANCH_REL_EQ_ZERO = 0xF3, + SEQCMD_BRANCH_REL = 0xF4, + SEQCMD_BRANCH_ABS_GREQ_ZERO = 0xF5, + SEQCMD_BREAK = 0xF6, + SEQCMD_LOOP_END = 0xF7, + SEQCMD_LOOP = 0xF8, + SEQCMD_BRANCH_ABS_NOT_EQ_ZERO = 0xF9, + SEQCMD_BRANCH_ABS_EQ_ZERO = 0xFA, + SEQCMD_BRANCH_ABS = 0xFB, + SEQCMD_CALL = 0xFC, + SEQCMD_DELAY_N_FRAMES = 0xFD, + SEQCMD_DELAY_1_FRAME = 0xFE, + SEQCMD_STOP_SCRIPT = 0xFF, +} SeqCmd; + typedef enum AUDIO_CALLBACKS { /* 0x00 */ AUDIO_CALLBACK_SEQ_0, /* 0x01 */ AUDIO_CALLBACK_SEQ_1, diff --git a/include/jaudio_NES/audiostruct.h b/include/jaudio_NES/audiostruct.h index cc545b4e..96000601 100644 --- a/include/jaudio_NES/audiostruct.h +++ b/include/jaudio_NES/audiostruct.h @@ -26,10 +26,10 @@ struct link_ { /* sizeof(struct chnode_) == 0x40 */ struct chnode_ { - /* 0x00 */ link globalUse; - /* 0x10 */ link globalFree; - /* 0x20 */ link globalRelease; - /* 0x30 */ link globalReleaseWait; + /* 0x00 */ link freeList; + /* 0x10 */ link releaseList; + /* 0x20 */ link relwaitList; + /* 0x30 */ link useList; }; /* forward declared */ @@ -301,9 +301,9 @@ typedef struct playbackch_ { /* 0x06 */ s16 adsr_volume_scale_unused; /* 0x08 */ f32 portamento_frequency_scale; /* 0x0C */ f32 vibrato_frequency_scale; - /* 0x10 */ note* wanted_parent_note; + /* 0x10 */ note* previous_parent_note; /* 0x14 */ note* current_parent_note; - /* 0x18 */ note* previous_parent_note; + /* 0x18 */ note* wanted_parent_note; /* 0x1C */ playbackparams params; /* 0x34 */ envp adsr_envp; /* 0x54 */ sweep portamento_sweep; @@ -434,14 +434,14 @@ typedef struct delay_ { /* 0x2A0 */ adpcmloop adpcm_loop; } delay; -/* sizeof(seqplayer) == 0x1C */ -typedef struct seqplayer_ { +/* sizeof(macro) == 0x1C */ +typedef struct macro_ { /* 0x00 */ u8* pc; /* 0x04 */ u8* stack[4]; /* 0x14 */ u8 remaining_loop_iters[4]; /* 0x18 */ u8 depth; /* 0x19 */ s8 value; -} seqplayer; +} macro; /* SubTrack struct */ /* sizeof(sub) == 0xE0 */ @@ -469,7 +469,7 @@ typedef struct sub_ { /* 0x04 */ u8 target_reverb_vol; /* 0x05 */ u8 note_priority; /* 0x06 */ u8 priority2; - /* 0x07 */ u8 inst_id; + /* 0x07 */ u8 bank_id; /* 0x08 */ u8 reverb_idx; /* 0x09 */ u8 book_ofs; /* 0x0A */ u8 new_pan; @@ -479,12 +479,12 @@ typedef struct sub_ { /* 0x0E */ u8 gate_time_random_variance; /* 0x0F */ u8 comb_filter_size; /* 0x10 */ u8 surround_effect_idx; - /* 0x11 */ u8 channel_idx; - /* 0x12 */ u16 _12; + /* 0x11 */ u8 subtrack_idx; + /* 0x12 */ u8 note_semitone; /* 0x14 */ vibparam vibrato_params; /* 0x22 */ u16 delay; /* 0x24 */ u16 comb_filter_gain; - /* 0x26 */ u16 _26; + /* 0x26 */ u16 dynamic_value; /* 0x28 */ s16 inst_or_wave; /* 0x2A */ s16 transposition; /* 0x2C */ f32 volume_scale; @@ -498,7 +498,7 @@ typedef struct sub_ { /* 0x4C */ voicetable* voicetable; /* 0x50 */ group* group; /* 0x54 */ struct note_* note_layers[4]; - /* 0x64 */ seqplayer seq_player; + /* 0x64 */ macro macro_player; /* 0x80 */ env adsr_env; /* 0x88 */ chnode channel_node; /* 0xC8 */ s8 port[8]; @@ -506,7 +506,8 @@ typedef struct sub_ { /* 0xD4 */ s16* filter; /* 0xD8 */ phase stereo_phase; /* 0xDC */ s32 sample_start_pos; - /* 0xE0 */ u8 _unk[0x100 - 0x0E0]; + /* 0xE0 */ s32 _E0; + /* 0xE4 */ u8 _unk[0x100 - 0x0E4]; } sub; /* sizeof(group) == 0x160 */ @@ -526,7 +527,7 @@ struct group_ { /* 0x002 */ u8 note_alloc_policy; /* 0x003 */ u8 mute_flags; /* 0x004 */ u8 seq_id; - /* 0x005 */ u8 default_bank; + /* 0x005 */ u8 bank_id; /* 0x006 */ u8 unk006; /* 0x007 */ s8 group_idx; /* 0x008 */ u16 tempo; @@ -546,7 +547,7 @@ struct group_ { /* 0x030 */ f32 applied_fade_volume; /* 0x034 */ f32 bend; /* 0x038 */ sub* subtracks[AUDIO_SUBTRACK_NUM]; - /* 0x078 */ seqplayer seq_player; + /* 0x078 */ macro macro_player; /* 0x094 */ u8* short_note_velocity_tbl; /* 0x098 */ u8* short_note_gate_time_tbl; /* 0x09C */ chnode channel_node; @@ -576,24 +577,27 @@ struct note_ { /* 0x08 */ u8 surround_effect_idx; /* 0x09 */ u8 target_reverb_volume; - struct { - /* 0x0A */ u16 bit0 : 1; - /* 0x0A */ u16 bit1 : 1; - /* 0x0A */ u16 bit2 : 1; - /* 0x0A */ u16 use_vibrato : 1; - /* 0x0A */ u16 bit4 : 1; - /* 0x0A */ u16 bit5 : 1; - /* 0x0A */ u16 bit6 : 1; - /* 0x0A */ u16 bit7 : 1; - /* 0x0B */ u16 bit8 : 1; - /* 0x0B */ u16 bit9 : 1; - /* 0x0B */ u16 bitA : 1; - /* 0x0B */ u16 bitB : 1; - /* 0x0B */ u16 bitC : 1; - /* 0x0B */ u16 bitD : 1; - /* 0x0B */ u16 bitE : 1; - /* 0x0B */ u16 bitF : 1; - }; + union { + struct { + /* 0x0A */ u16 bit0 : 1; + /* 0x0A */ u16 bit1 : 1; + /* 0x0A */ u16 bit2 : 1; + /* 0x0A */ u16 use_vibrato : 1; + /* 0x0A */ u16 add_subtrack_transposition : 1; + /* 0x0A */ u16 bit5 : 1; + /* 0x0A */ u16 bit6 : 1; + /* 0x0A */ u16 bit7 : 1; + /* 0x0B */ u16 bit8 : 1; + /* 0x0B */ u16 bit9 : 1; + /* 0x0B */ u16 bitA : 1; + /* 0x0B */ u16 bitB : 1; + /* 0x0B */ u16 bitC : 1; + /* 0x0B */ u16 bitD : 1; + /* 0x0B */ u16 bitE : 1; + /* 0x0B */ u16 bitF : 1; + } flags; + /* 0x0A */ u16 asU16; + } _0A; /* 0x0C */ vibparam vibrato_params; /* 0x1A */ s16 delay; @@ -615,7 +619,7 @@ struct note_ { /* 0x58 */ voicetable* instrument; /* 0x5C */ wtstr* tuned_sample; /* 0x60 */ sub* sub_track; - /* 0x64 */ seqplayer seq_player; + /* 0x64 */ macro macro_player; /* 0x80 */ link link; }; @@ -883,10 +887,10 @@ typedef struct AudioGlobals { /* 0x3780 */ size_t audio_heap_size; /* 0x3784 */ channel* channels; /* 0x3788 */ struct group_ groups[AUDIO_GROUP_MAX]; - /* 0x3E68 */ note notes[128]; + /* 0x3E68 */ note notes[AUDIO_NOTE_MAX]; /* 0x8668 */ sub null_sub_track; /* used for 'null' sub tracks */ /* 0x8748 */ group* groups_p[AUDIO_GROUP_MAX]; - /* 0x877C */ s32 _877C; + /* 0x877C */ s32 sample_state_offset; /* 0x8780 */ link note_link; /* 0x8790 */ chnode channel_node; /* main chnode */ /* 0x87D0 */ struct group_ main_group; diff --git a/include/jaudio_NES/audiotable.h b/include/jaudio_NES/audiotable.h index 6928fc0a..855d8f54 100644 --- a/include/jaudio_NES/audiotable.h +++ b/include/jaudio_NES/audiotable.h @@ -2,8 +2,15 @@ #define AUDIOTABLE_H #include "types.h" +#include "jaudio_NES/audiostruct.h" extern f32 PCENTTABLE[]; extern f32 PCENTTABLE2[]; +extern envdat DEFAULT_ENV[]; +extern f32 PITCHTABLE[]; +extern u8 DEFAULT_VTABLE[]; +extern u8 DEFAULT_GTABLE[]; + +extern u8 BDB_SEQDATA[]; #endif diff --git a/include/jaudio_NES/audiowork.h b/include/jaudio_NES/audiowork.h index 0b8adff3..4dc14f8f 100644 --- a/include/jaudio_NES/audiowork.h +++ b/include/jaudio_NES/audiowork.h @@ -11,13 +11,13 @@ extern "C" { #endif typedef void (*VFRAME_CALLBACK)(void); -typedef u32 (*GRP_CALLBACK)(s8, sub*); +typedef u32 (*GRP_CALLBACK)(s8, group*); typedef void* (*SOUND_CALLBACK)(smzwavetable*, s32, s8, s32); typedef Acmd* (*DACOUT_CALLBACK)(Acmd*, s32, s32); extern AudioGlobals AG; extern VFRAME_CALLBACK NA_VFRAME_CALLBACK; -// extern ??? NA_CALLBACK; +extern SequenceCallback NA_CALLBACK; extern GRP_CALLBACK NA_GRP_CALLBACK; extern SOUND_CALLBACK NA_SOUND_CALLBACK; extern DACOUT_CALLBACK NA_DACOUT_CALLBACK; diff --git a/include/jaudio_NES/channel.h b/include/jaudio_NES/channel.h index a808e496..74610bfb 100644 --- a/include/jaudio_NES/channel.h +++ b/include/jaudio_NES/channel.h @@ -2,7 +2,22 @@ #define CHANNEL_H #include "types.h" +#include "jaudio_NES/audiowork.h" extern s32 OverwriteBank(s32 type, s32 bankId, s32 idx, s32 voicetable); +extern channel* Nas_AllocationOnRequest(note* n); + +extern wtstr* NoteToVoice(voicetable* voicetbl, s32 note); +extern voicetable* ProgToVp(s32 prog, s32 note); +extern percvoicetable* PercToPp(s32 perc, s32 note); +extern veffvoicetable* VpercToVep(s32 vperc, s32 note); + +extern void Nas_UpdateChannel(void); + +extern void Nas_DeAllocAllVoices(chnode* node); +extern void Nas_AllocVoices(chnode* node, s32 num); +extern void Nas_InitChNode(chnode* node); +extern void Nas_Release_Channel(note* n); +extern void Nas_Release_Channel_Force(note* n); #endif diff --git a/include/jaudio_NES/effect.h b/include/jaudio_NES/effect.h new file mode 100644 index 00000000..df419d8d --- /dev/null +++ b/include/jaudio_NES/effect.h @@ -0,0 +1,12 @@ +#ifndef EFFECT_H +#define EFFECT_H + +#include "types.h" +#include "jaudio_NES/audiowork.h" + +extern void Nas_ChannelModInit(channel* ch); +extern void Nas_SweepInit(channel* ch); + +extern void Nas_MainCtrl(group* grp); + +#endif diff --git a/include/jaudio_NES/memory.h b/include/jaudio_NES/memory.h index c853ba66..10312c7b 100644 --- a/include/jaudio_NES/memory.h +++ b/include/jaudio_NES/memory.h @@ -6,6 +6,9 @@ extern void Nas_HeapInit(ALHeap* heap, u8* base, s32 len); extern void* Nas_HeapAlloc(ALHeap* heap, s32 size); +extern void* Nas_HeapAlloc_CL(ALHeap*, s32 size); + +extern u32 Nas_SzCacheCheck(s32 type, s32 cache_type, s32 id); extern void Nas_SzStayDelete(s32 type); extern void Nas_SetDelayLineParam(s32 delayIdx, s32 param_type, s32 param_value, s32 init); diff --git a/include/jaudio_NES/system.h b/include/jaudio_NES/system.h index 37508029..552ff26f 100644 --- a/include/jaudio_NES/system.h +++ b/include/jaudio_NES/system.h @@ -32,6 +32,16 @@ extern void Nas_WaveDmaFrameWork(void); extern void Nas_BgDmaFrameWork(s32 reset_status); extern void MK_FrameWork(void); +extern BOOL Nas_CheckIDseq(s32 id); +extern BOOL Nas_CheckIDbank(s32 id); + +extern void Nas_WriteIDseq(s32 id, s32 type); +extern void Nas_WriteIDbank(s32 id, s32 type); + +extern s32 VoiceLoad(s32 bank_id, u32 inst_id, s8* done_p); +extern s32 SeqLoad(s32 seq_id, u8* ram_addr, s8* done_p); +extern void MK_load(s32 type, s32 id, u8* done_p); + extern BOOL AUDIO_SYSTEM_READY; #endif diff --git a/include/jaudio_NES/track.h b/include/jaudio_NES/track.h index 88efcd3e..94811dd5 100644 --- a/include/jaudio_NES/track.h +++ b/include/jaudio_NES/track.h @@ -4,7 +4,16 @@ #include "types.h" #include "jaudio_NES/audiowork.h" -extern void Nas_SeqSkip(group* group); -extern void Nas_ReleaseGroup_Force(group* group); +extern void Nas_ReleaseNoteTrack(note* note); +extern void Nas_ReleaseSubTrack(sub* subtrack); +extern void Nas_ReleaseGroup_Force(group* grp); +extern void Nas_ReleaseGroup(group* grp); +extern void Nas_AddList(link* root, link* list); +extern void* Nas_GetList(link* root); +extern void Nas_MySeqMain(u32 frames_left); +extern void Nas_SeqSkip(group* grp); +extern void Nas_InitMySeq(group* grp); +extern void Nas_AssignSubTrack(s32 group_idx); +extern void Nas_InitPlayer(void); #endif diff --git a/src/static/jaudio_NES/internal/track.c b/src/static/jaudio_NES/internal/track.c new file mode 100644 index 00000000..ab3afac0 --- /dev/null +++ b/src/static/jaudio_NES/internal/track.c @@ -0,0 +1,2252 @@ +#include "jaudio_NES/track.h" + +#include "jaudio_NES/audiotable.h" +#include "jaudio_NES/channel.h" +#include "jaudio_NES/effect.h" +#include "jaudio_NES/memory.h" +#include "jaudio_NES/sub_sys.h" +#include "jaudio_NES/system.h" +#include "dolphin/os.h" + +#define COMMON_SCRIPT_END -1 + +/** + * SCOM_TABLE is a table for each sequence instruction + * that contains both how many arguments an instruction takes, as well + * as the type of each argument + * + * SCOM_TABLE is bitpacked as follows: + * abcUUUnn + * + * n - number of arguments that the sequence instruction takes + * + * a - bitFlag for the type of arg0 if it exists + * b - bitFlag for the type of arg1 if it exists + * c - bitFlag for the type of arg2 if it exists + * + * bitFlag on - argument is s16 + * bitFlag off - argument is u8 + * + * U - Unused + */ + +// CMD_ARGS_(NUMBER_OF_ARGS) +#define CMD_ARGS_0() 0 +#define CMD_ARGS_1(arg0Type) (((sizeof(arg0Type) - 1) << 7) | 1) +#define CMD_ARGS_2(arg0Type, arg1Type) (((sizeof(arg0Type) - 1) << 7) | ((sizeof(arg1Type) - 1) << 6) | 2) +#define CMD_ARGS_3(arg0Type, arg1Type, arg2Type) \ + (((sizeof(arg0Type) - 1) << 7) | ((sizeof(arg1Type) - 1) << 6) | ((sizeof(arg2Type) - 1) << 5) | 3) + +#define SCOM_TYPE_U8 0 +#define SCOM_TYPE_S16 1 + +static u8 SCOM_TABLE[] = { + CMD_ARGS_1(s16), // 0xA0 (channel:) + CMD_ARGS_0(), // 0xA1 (channel:) + CMD_ARGS_1(s16), // 0xA2 (channel:) + CMD_ARGS_0(), // 0xA3 (channel:) + CMD_ARGS_1(u8), // 0xA4 (channel:) + CMD_ARGS_0(), // 0xA5 (channel:) + CMD_ARGS_2(u8, s16), // 0xA6 (channel:) + CMD_ARGS_1(u8), // 0xA7 (channel:) + CMD_ARGS_0(), // 0xA8 (channel: random range large) THIS ONE + CMD_ARGS_0(), // 0xA9 () + CMD_ARGS_0(), // 0xAA () + CMD_ARGS_0(), // 0xAB () + CMD_ARGS_0(), // 0xAC () + CMD_ARGS_0(), // 0xAD () + CMD_ARGS_0(), // 0xAE () + CMD_ARGS_0(), // 0xAF () + CMD_ARGS_1(s16), // 0xB0 (channel: set filter) + CMD_ARGS_0(), // 0xB1 (channel: clear filter) + CMD_ARGS_1(s16), // 0xB2 (channel: dynread sequence large) + CMD_ARGS_1(u8), // 0xB3 (channel: load filter) + CMD_ARGS_0(), // 0xB4 (channel: set dyntable large) + CMD_ARGS_0(), // 0xB5 (channel: read dyntable large) + CMD_ARGS_0(), // 0xB6 (channel: read dyntable) + CMD_ARGS_1(s16), // 0xB7 (channel: random large) + CMD_ARGS_1(u8), // 0xB8 (channel: random) + CMD_ARGS_1(u8), // 0xB9 (channel: set velocity random variance) + CMD_ARGS_1(u8), // 0xBA (channel: set gatetime random variance) + CMD_ARGS_2(u8, s16), // 0xBB (channel:) + CMD_ARGS_1(s16), // 0xBC (channel: add large) + CMD_ARGS_1(s16), // 0xBD (channel:) + CMD_ARGS_1(u8), // 0xBE (channel:) + CMD_ARGS_0(), // 0xBF () + CMD_ARGS_0(), // 0xC0 () + CMD_ARGS_1(u8), // 0xC1 (channel: set instrument) + CMD_ARGS_1(s16), // 0xC2 (channel: set dyntable) + CMD_ARGS_0(), // 0xC3 (channel: large notes off) + CMD_ARGS_0(), // 0xC4 (channel: large notes on) + CMD_ARGS_0(), // 0xC5 (channel: dyn set dyntable) + CMD_ARGS_1(u8), // 0xC6 (channel: set soundFont) + CMD_ARGS_2(u8, s16), // 0xC7 (channel: write into sequence script) + CMD_ARGS_1(u8), // 0xC8 (channel: subtract -> set value) + CMD_ARGS_1(u8), // 0xC9 (channel: `bit and` -> set value) + CMD_ARGS_1(u8), // 0xCA (channel: set mute behavior) + CMD_ARGS_1(s16), // 0xCB (channel: read sequence -> set value) + CMD_ARGS_1(u8), // 0xCC (channel: set value) + CMD_ARGS_1(u8), // 0xCD (channel: disable channel) + CMD_ARGS_1(s16), // 0xCE (channel:) + CMD_ARGS_1(s16), // 0xCF (channel: write large into sequence script) + CMD_ARGS_1(u8), // 0xD0 (channel: stereo headset effects) + CMD_ARGS_1(u8), // 0xD1 (channel: set note allocation policy) + CMD_ARGS_1(u8), // 0xD2 (channel: set sustain) + CMD_ARGS_1(u8), // 0xD3 (channel: large bend pitch) + CMD_ARGS_1(u8), // 0xD4 (channel: set reverb) + CMD_ARGS_1(u8), // 0xD5 () + CMD_ARGS_1(u8), // 0xD6 () + CMD_ARGS_1(u8), // 0xD7 (channel: set vibrato rate) + CMD_ARGS_1(u8), // 0xD8 (channel: set vibrato depth) + CMD_ARGS_1(u8), // 0xD9 (channel: set decay index) + CMD_ARGS_1(s16), // 0xDA (channel: set envelope) + CMD_ARGS_1(u8), // 0xDB (channel: transpose) + CMD_ARGS_1(u8), // 0xDC (channel: set pan mix) + CMD_ARGS_1(u8), // 0xDD (channel: set pan) + CMD_ARGS_1(s16), // 0xDE (channel: set freqscale) + CMD_ARGS_1(u8), // 0xDF (channel: set volume) + CMD_ARGS_1(u8), // 0xE0 (channel: set volume scale) + CMD_ARGS_3(u8, u8, u8), // 0xE1 (channel: set vibratorate linear) + CMD_ARGS_3(u8, u8, u8), // 0xE2 (channel: set vibrato depth linear) + CMD_ARGS_1(u8), // 0xE3 (channel: set vibrato delay) + CMD_ARGS_0(), // 0xE4 (channel: dyncall) + CMD_ARGS_1(u8), // 0xE5 (channel: set reverb index) + CMD_ARGS_1(u8), // 0xE6 (channel: set book offset) + CMD_ARGS_1(s16), // 0xE7 (channel:) + CMD_ARGS_3(u8, u8, u8), // 0xE8 (channel:) + CMD_ARGS_1(u8), // 0xE9 (channel: set note priority) + CMD_ARGS_0(), // 0xEA (channel: stop script) + CMD_ARGS_2(u8, u8), // 0xEB (channel: set soundFont and instrument) + CMD_ARGS_0(), // 0xEC (channel: reset vibrato) + CMD_ARGS_1(u8), // 0xED (channel: set hilo gain) + CMD_ARGS_1(u8), // 0xEE (channel: small bend pitch) + CMD_ARGS_2(s16, u8), // 0xEF () + CMD_ARGS_0(), // 0xF0 (channel: unreserve notes) + CMD_ARGS_1(u8), // 0xF1 (channel: reserve notes) + // Control flow instructions (>= 0xF2) can only have 0 or 1 args + CMD_ARGS_1(u8), // 0xF2 (branch relative if less than zero) + CMD_ARGS_1(u8), // 0xF3 (branch relative if equal to zero) + CMD_ARGS_1(u8), // 0xF4 (jump relative) + CMD_ARGS_1(s16), // 0xF5 (branch if greater than or equal to zero) + CMD_ARGS_0(), // 0xF6 (break) + CMD_ARGS_0(), // 0xF7 (loop end) + CMD_ARGS_1(u8), // 0xF8 (loop) + CMD_ARGS_1(s16), // 0xF9 (branch if less than zero) + CMD_ARGS_1(s16), // 0xFA (branch if equal to zero) + CMD_ARGS_1(s16), // 0xFB (jump) + CMD_ARGS_1(s16), // 0xFC (call and jump to a function) + CMD_ARGS_0(), // 0xFD (delay n frames) + CMD_ARGS_0(), // 0xFE (delay 1 frame) + CMD_ARGS_0(), // 0xFF (end script) +}; + +#define SCOM_GET_ARG_NUM(cmd) (SCOM_TABLE[(cmd)] & 3) +#define SCOM_GET_TYPE(cmd, argno) (SCOM_TABLE[(cmd)] & (1 << (7 - (argno & 3)))) + +static u8 Nas_ReadByteData(macro* macro); +static s16 Nas_ReadWordData(macro* macro); +static u16 Nas_ReadLengthData(macro* macro); +static void __Stop_Note(note* n); +static s32 __SetNote(note* n, s32 cmd); +static s32 __Command_Seq(note* n); +static s32 __SetVoice(note* n, s32 cmd); +static s32 __SetChannel(note* n, s32 cmd); +static u8 Nas_ProgramChanger(sub* subtrack, u8 prog_id, voicetable** inst_pp, env* adsr_env); + +static u16 Convert_Com(macro* macro, u8 cmd) { + u16 val = 0; + + if ((u8)SCOM_GET_ARG_NUM(cmd - 0xA0) == 1) { + if (SCOM_GET_TYPE(cmd - 0xA0, 0) == SCOM_TYPE_U8) { + val = Nas_ReadByteData(macro); + } else { + val = Nas_ReadWordData(macro); + } + } + + return val; +} + +static s32 Common_Com(group* group, macro* macro, s32 cmd, s32 arg) { + u8 iters; + u16 abs; + s8 rel; + + switch (cmd) { + case SEQCMD_STOP_SCRIPT: + if (macro->depth == 0) { + return COMMON_SCRIPT_END; + } + + macro->pc = macro->stack[--macro->depth]; + break; + case SEQCMD_DELAY_N_FRAMES: + return Nas_ReadLengthData(macro); + case SEQCMD_DELAY_1_FRAME: + return 1; + case SEQCMD_CALL: + macro->stack[macro->depth++] = macro->pc; + macro->pc = group->seq_data + (arg & 0xFFFF); + break; + case SEQCMD_LOOP: + macro->remaining_loop_iters[macro->depth] = arg & 0xFF; + macro->stack[macro->depth++] = macro->pc; + break; + case SEQCMD_LOOP_END: + iters = macro->remaining_loop_iters[macro->depth - 1]; + iters--; + macro->remaining_loop_iters[macro->depth - 1] = iters; + if (iters != 0) { + macro->pc = macro->stack[macro->depth - 1]; + } else { + macro->depth--; + } + break; + case SEQCMD_BREAK: + macro->depth--; + break; + case SEQCMD_BRANCH_ABS_GREQ_ZERO: + case SEQCMD_BRANCH_ABS_NOT_EQ_ZERO: + case SEQCMD_BRANCH_ABS_EQ_ZERO: + case SEQCMD_BRANCH_ABS: + abs = arg & 0xFFFF; + if (cmd == SEQCMD_BRANCH_ABS_EQ_ZERO && macro->value != 0) { + break; + } else if (cmd == SEQCMD_BRANCH_ABS_NOT_EQ_ZERO && macro->value >= 0) { + break; + } else if (cmd == SEQCMD_BRANCH_ABS_GREQ_ZERO && macro->value < 0) { + break; + } else { + macro->pc = group->seq_data + abs; + } + break; + case SEQCMD_BRANCH_REL_NOT_EQ_ZERO: + case SEQCMD_BRANCH_REL_EQ_ZERO: + case SEQCMD_BRANCH_REL: + rel = (s8)(arg & 0xFF); + if (cmd == SEQCMD_BRANCH_REL_EQ_ZERO && macro->value != 0) { + break; + } else if (cmd == SEQCMD_BRANCH_REL_NOT_EQ_ZERO && macro->value >= 0) { + break; + } else { + macro->pc += rel; + } + break; + } + + return 0; +} + +static void Nas_InitSubTrack(sub* subtrack) { + s32 i; + + if (subtrack != &AG.null_sub_track) { + subtrack->transposition = 0; + subtrack->enabled = FALSE; + subtrack->finished = FALSE; + subtrack->stop_script = FALSE; + // subtrack->muted = FALSE; + subtrack->has_instrument = FALSE; + subtrack->stereo_effects = FALSE; + subtrack->large_notes = FALSE; + subtrack->book_ofs = 0; + subtrack->stereo_phase.asU8 = 0; + subtrack->changes.as_byte = 0xFF; + subtrack->macro_player.depth = 0; + subtrack->volume = 1.0f; + subtrack->volume_scale = 1.0f; + subtrack->new_pan = 64; + subtrack->frequency_scale = 1.0f; + subtrack->pan_channel_weight = 128; + subtrack->surround_effect_idx = 0xFF; + subtrack->velocity_random_variance = 0; + subtrack->gate_time_random_variance = 0; + subtrack->channel = nullptr; + subtrack->reverb_idx = 0; + subtrack->target_reverb_vol = 0; + subtrack->gain = 0; + subtrack->note_priority = 3; + subtrack->priority2 = 1; + subtrack->delay = 0; + + subtrack->adsr_env.envelope = DEFAULT_ENV; + subtrack->adsr_env.decay_idx = 240; + subtrack->adsr_env.sustain = 0; + + subtrack->vibrato_params.rate_target = 2048; + subtrack->vibrato_params.rate_start = 2048; + subtrack->vibrato_params.depth_target = 0; + subtrack->vibrato_params.depth_start = 0; + subtrack->vibrato_params.rate_change_delay = 0; + subtrack->vibrato_params.depth_change_delay = 0; + subtrack->vibrato_params.delay = 0; + + subtrack->filter = nullptr; + subtrack->comb_filter_gain = 0; + subtrack->comb_filter_size = 0; + + for (i = 0; i < ARRAY_COUNT(subtrack->port); i++) { + subtrack->port[i] = -1; + } + + subtrack->unused = FALSE; + Nas_InitChNode(&subtrack->channel_node); + subtrack->sample_start_pos = 0; + subtrack->_E0 = 0; + subtrack->sfx_state = nullptr; + } +} + +static s32 Nas_EntryNoteTrack(sub* subtrack, int note_idx) { + note* entry_note; + + if (subtrack->note_layers[note_idx] == nullptr) { + entry_note = (note*)Nas_GetList(&AG.note_link); + subtrack->note_layers[note_idx] = entry_note; + if (entry_note == nullptr) { + subtrack->note_layers[note_idx] = nullptr; + return -1; + } + } else { + Nas_Release_Channel(subtrack->note_layers[note_idx]); + } + + entry_note = subtrack->note_layers[note_idx]; + entry_note->sub_track = subtrack; + entry_note->adsr_env = subtrack->adsr_env; + entry_note->adsr_env.decay_idx = 0; + entry_note->target_reverb_volume = subtrack->target_reverb_vol; + entry_note->enabled = TRUE; + entry_note->finished = FALSE; + entry_note->muted = FALSE; + entry_note->continuous = FALSE; + entry_note->_00bit3 = FALSE; + entry_note->ignore_drum_pan = FALSE; + entry_note->_00bit1 = FALSE; + entry_note->note_properties_need_init = FALSE; + entry_note->stereo_phase.asU8 = 0; + entry_note->portamento_sweep.mode = 0; + entry_note->macro_player.depth = 0; + entry_note->gate_time = 128; + + entry_note->frequency_scale = 1.0f; + entry_note->bend = 1.0f; + entry_note->velocity_square2 = 0.0f; + + entry_note->pan = 64; + entry_note->surround_effect_idx = 128; + entry_note->transposition = 0; + entry_note->delay = 0; + entry_note->gate_delay = 0; + entry_note->delay2 = 0; + entry_note->channel = nullptr; + entry_note->instrument = nullptr; + entry_note->inst_or_wave = -1; + entry_note->_0A.asU16 = 0xFFFF; + + entry_note->vibrato_params.rate_target = 2048; + entry_note->vibrato_params.rate_start = 2048; + entry_note->vibrato_params.depth_target = 0; + entry_note->vibrato_params.depth_start = 0; + entry_note->vibrato_params.rate_change_delay = 0; + entry_note->vibrato_params.depth_change_delay = 0; + entry_note->vibrato_params.delay = 0; + + return 0; +} + +extern void Nas_ReleaseNoteTrack(note* note) { + if (note != nullptr) { + if (note->sub_track != &AG.null_sub_track && note->sub_track->group->flags.finished == TRUE) { + Nas_Release_Channel_Force(note); + } else { + Nas_Release_Channel(note); + } + + note->enabled = FALSE; + note->finished = TRUE; + } +} + +static void Nas_CloseNoteTrack(sub* subtrack, s32 note_idx) { + note* note = subtrack->note_layers[note_idx]; + + if (note != nullptr) { + Nas_AddList(&AG.note_link, ¬e->link); + Nas_ReleaseNoteTrack(note); + subtrack->note_layers[note_idx] = nullptr; + } +} + +extern void Nas_ReleaseSubTrack(sub* subtrack) { + s32 i; + + subtrack->finished = TRUE; + for (i = 0; i < ARRAY_COUNT(subtrack->note_layers); i++) { + Nas_CloseNoteTrack(subtrack, i); + } + + Nas_DeAllocAllVoices(&subtrack->channel_node); + subtrack->enabled = FALSE; +} + +static void Nas_AllocSub(group* grp, u16 subtrack_enable_flags) { + s32 i; + + for (i = 0; i < AUDIO_SUBTRACK_NUM; i++) { + if ((subtrack_enable_flags & 1) != 0) { + sub* subtrack = grp->subtracks[i]; + + subtrack->bank_id = grp->bank_id; + subtrack->mute_flags = grp->mute_flags; + subtrack->note_alloc_policy = grp->note_alloc_policy; + } + + subtrack_enable_flags = subtrack_enable_flags >> 1; + } +} + +static void Nas_DeAllocSub(group* grp, u16 subtrack_dealloc_flags) { + s32 i; + + for (i = 0; i < AUDIO_SUBTRACK_NUM; i++) { + sub* subtrack = grp->subtracks[i]; + + if (subtrack != &AG.null_sub_track) { + Nas_ReleaseSubTrack(subtrack); + } + } +} + +static void Nas_OpenSub(group* grp, u8 subtrack_idx, u8* script) { + sub* subtrack = grp->subtracks[subtrack_idx]; + s32 i; + + subtrack->enabled = TRUE; + subtrack->finished = FALSE; + subtrack->macro_player.depth = 0; + subtrack->macro_player.pc = script; + subtrack->delay = 0; + + for (i = 0; i < ARRAY_COUNT(subtrack->note_layers); i++) { + if (subtrack->note_layers[i] != nullptr) { + Nas_CloseNoteTrack(subtrack, i); + } + } +} + +extern void Nas_ReleaseGroup_Force(group* grp) { + grp->flags.finished = TRUE; + Nas_ReleaseGroup(grp); +} + +extern void Nas_ReleaseGroup(group* grp) { + Nas_DeAllocSub(grp, AUDIO_GROUP_ALL_SUBTRACKS); + Nas_DeAllocAllVoices(&grp->channel_node); + if (grp->flags.enabled) { + grp->flags.enabled = FALSE; + grp->flags.finished = TRUE; + + if (Nas_CheckIDseq(grp->seq_id)) { + Nas_WriteIDseq(grp->seq_id, LOAD_STATUS_DISCARDABLE); + } + + if (Nas_CheckIDbank(grp->bank_id)) { + Nas_WriteIDbank(grp->bank_id, LOAD_STATUS_MAYBE_DISCARDABLE); + } + + if (AG.bank_heap.auto_heap.entries[0].id == grp->bank_id) { + AG.bank_heap.auto_heap.use_entry_idx = 1; + } else if (AG.bank_heap.auto_heap.entries[1].id == grp->bank_id) { + AG.bank_heap.auto_heap.use_entry_idx = 0; + } + } +} + +extern void Nas_AddList(link* root, link* list) { + if (list->next != nullptr) { + static BOOL first = TRUE; + + if (first) { + OSReport("GLOBAL USE %x\n", &AG.channel_node.useList); + OSReport("GLOBAL FREE %x\n", &AG.channel_node.freeList); + OSReport("GLOBAL RELEASE %x\n", &AG.channel_node.releaseList); + OSReport("GLOBAL RELWAIT %x\n", &AG.channel_node.relwaitList); + first = FALSE; + } + + OSReport("List %x\n", list); + OSReport("Root %x\n", root); + } else { + root->next->prev = list; + list->next = root->next; + list->prev = root; + root->next = list; + root->numAfter++; + list->pNode = root->pNode; + } +} + +extern void* Nas_GetList(link* root) { + link* list = root->next; + + if (list == root) { + return nullptr; + } + + list->next->prev = root; + root->next = list->next; + list->next = nullptr; + root->numAfter--; + return list->pData; +} + +static void Nas_InitNoteList(void) { + s32 i; + + AG.note_link.next = &AG.note_link; + AG.note_link.prev = &AG.note_link; + AG.note_link.numAfter = 0; + AG.note_link.pNode = nullptr; + + for (i = 0; i < AUDIO_NOTE_MAX; i++) { + AG.notes[i].link.pData = &AG.notes[i]; + AG.notes[i].link.next = nullptr; + Nas_AddList(&AG.note_link, &AG.notes[i].link); + } +} + +static u8 Nas_ReadByteData(macro* m) { + return *m->pc++; +} + +static s16 Nas_ReadWordData(macro* m) { + s16 data = (*m->pc++) << 8; + + data = data | (*m->pc++); + return data; +} + +#define Nas_LENGTH_IS_U16(d) ((d) & 0x80) +static u16 Nas_ReadLengthData(macro* m) { + u16 data = (*m->pc++); + + if (Nas_LENGTH_IS_U16(data)) { + data = (data << 8) & 0x7F00; + data = (*m->pc++) | data; + } + + return data; +} +#undef Nas_LENGTH_IS_U16 + +static void Nas_NoteSeq(note* n) { + if (n->enabled) { + if (n->delay > 1) { + n->delay--; + + if (n->muted == FALSE && n->delay <= n->gate_delay) { + Nas_Release_Channel(n); + n->muted = TRUE; + } + } else { + s32 cmd; + + __Stop_Note(n); + + do { + cmd = __Command_Seq(n); + if (cmd == COMMON_SCRIPT_END) { + return; + } + + cmd = __SetNote(n, cmd); + } while (cmd == -1 && n->delay == 0); + + if (cmd != -1) { + cmd = __SetVoice(n, cmd); + } + + if (cmd != -1) { + __SetChannel(n, cmd); + } + + if (n->muted == TRUE) { + if (n->channel != nullptr || n->continuous) { + Nas_Release_Channel(n); + } + } + } + } +} + +static void __Stop_Note(note* n) { + s32 mode; + + if (n->continuous == FALSE) { + Nas_Release_Channel(n); + } else if (n->channel != nullptr && n->channel->playback_ch.wanted_parent_note == n) { + Nas_Release_Channel(n); + } + + switch (AUDIO_SWEEP_MODE(n->portamento_sweep)) { + case PORTAMENTO_MODE_1: + case PORTAMENTO_MODE_2: + case PORTAMENTO_MODE_6: + n->portamento_sweep.mode = 0; + break; + } + + n->note_properties_need_init = TRUE; +} + +static s32 __SetChannel(note* n, s32 same_sample) { + if (n->continuous == TRUE && n->_00bit1 == TRUE) { + return 0; + } + + if (n->continuous != TRUE || n->channel == nullptr || n->_00bit3 == FALSE || same_sample != TRUE || + n->channel->playback_ch.current_parent_note != n) { + if (same_sample == FALSE) { + Nas_Release_Channel(n); + } + + n->channel = Nas_AllocationOnRequest(n); + if (n->channel != nullptr) { + if (n->channel->playback_ch.current_parent_note == n) { + Nas_ChannelModInit(n->channel); + } + } + } + + if (n->channel != nullptr && n->channel->playback_ch.current_parent_note == n) { + Nas_SweepInit(n->channel); + } + + return 0; +} + +static s32 __Command_Seq(note* n) { + macro* m = &n->macro_player; + sub* subtrack = n->sub_track; + group* grp = subtrack->group; + sweep* port_sweep; + u8 cmd; + u8 cmdArgU8; + u32 tmp; + u16 cmdArgU16; + u16 velocity; + + while (TRUE) { + cmd = Nas_ReadByteData(m); + + if (cmd <= 0xC0) { + return cmd; + } + + if (cmd >= SEQCMD_BRANCH_REL_NOT_EQ_ZERO) { + cmdArgU16 = Convert_Com(m, cmd); + + if (Common_Com(grp, m, cmd, cmdArgU16) == 0) { + continue; // keep processing + } + + /* stop processing script */ + Nas_ReleaseNoteTrack(n); + return COMMON_SCRIPT_END; + } + + switch (cmd) { + case 0xC1: + case 0xCA: + cmdArgU8 = *m->pc++; + if (cmd == 0xC1) { + n->velocity_square = (f32)(cmdArgU8 * cmdArgU8) / (f32)(127 * 127); + } else { + n->pan = cmdArgU8; + } + break; + case 0xC2: + case 0xC9: + cmdArgU8 = *m->pc++; + if (cmd == 0xC9) { + n->gate_time = cmdArgU8; + } else { + n->transposition = cmdArgU8; + } + break; + case 0xC4: + case 0xC5: + n->continuous = cmd == 0xC4; + n->_00bit1 = FALSE; + Nas_Release_Channel(n); + break; + case 0xC3: + n->short_note_default_delay = Nas_ReadLengthData(m); + break; + case 0xC6: + cmdArgU8 = Nas_ReadByteData(m); + if (cmdArgU8 >= 0x7E) { + if (cmdArgU8 == 0x7E) { + // effect/sfx + n->inst_or_wave = 1; + } else if (cmdArgU8 == 0x7F) { + // percussion/drum + n->inst_or_wave = 0; + } else { + // synth wave + n->inst_or_wave = cmdArgU8; + n->instrument = nullptr; + } + + if (cmdArgU8 == 0xFF) { + n->adsr_env.decay_idx = 0; + } + } else { + // voice/instrument + cmd = Nas_ProgramChanger(subtrack, cmdArgU8, &n->instrument, &n->adsr_env); + n->inst_or_wave = cmd; + if (cmd == 0) { + n->inst_or_wave = 0xFF; + } + } + break; + case 0xC7: + n->portamento_sweep.mode = Nas_ReadByteData(m); + cmdArgU8 = Nas_ReadByteData(m); + cmdArgU8 = cmdArgU8 + subtrack->transposition; + cmdArgU8 = cmdArgU8 + n->transposition; + cmdArgU8 = cmdArgU8 + grp->transposition; + + switch (AUDIO_SWEEP_MODE(n->portamento_sweep)) { + case PORTAMENTO_MODE_6: + case PORTAMENTO_MODE_7: + break; + default: + if ((u8)cmdArgU8 > 127) { + cmdArgU8 = (u8)0; + } + break; + } + + n->portamento_target_note = (u8)cmdArgU8; + if (AUDIO_SWEEP_IS_SPECIAL(n->portamento_sweep)) { + n->portamento_time = *m->pc++; + } else { + n->portamento_time = Nas_ReadLengthData(m); + } + break; + case 0xC8: + n->portamento_sweep.mode = PORTAMENTO_MODE_OFF; + break; + case 0xCB: + n->adsr_env.envelope = (envdat*)(grp->seq_data + (Nas_ReadWordData(m) & 0xFFFF)); + // fallthrough 0xCB -> 0xCF + case 0xCF: + n->adsr_env.decay_idx = Nas_ReadByteData(m); + break; + case 0xCC: + n->ignore_drum_pan = TRUE; + break; + case 0xCD: + n->stereo_phase.asU8 = Nas_ReadByteData(m); + break; + case 0xCE: + cmdArgU8 = 128 + Nas_ReadByteData(m); + n->bend = PCENTTABLE2[cmdArgU8]; + break; + case 0xF0: + cmdArgU16 = Nas_ReadWordData(m); + n->_0A.asU16 &= cmdArgU16 ^ 0xFFFF; + break; + case 0xF1: + n->surround_effect_idx = Nas_ReadByteData(m); + break; + default: + switch (cmd & 0xF0) { + case 0xD0: + velocity = grp->short_note_velocity_tbl[cmd & 0xF]; + n->velocity_square = (f32)(velocity * velocity) / (f32)(127 * 127); + break; + case 0xE0: + n->gate_time = grp->short_note_gate_time_tbl[cmd & 0xF]; + break; + } + } + } +} + +static s32 __SetVoice(note* n, s32 arg) { + u8 semitone; + s32 same_sample; + s32 inst_or_wave; + sweep* port_sweep; + f32 freq_scale; + f32 freq_scale2; + wtstr* tuned_sample; + voicetable* instrument; + percvoicetable* percussion; + veffvoicetable* effect; + sub* subtrack; + group* grp; + u16 effect_id; + s32 velocity; + s32 semitone2; + s32 speed; + s32 speed2; + f32 tuning; + f32 t0; + f32 t1; + f32 freq0; + f32 freq1; + f32 time; + + semitone = arg; + same_sample = TRUE; + inst_or_wave = n->inst_or_wave; + subtrack = n->sub_track; + grp = subtrack->group; + + if (inst_or_wave == 0xFF) { + if (subtrack->has_instrument == FALSE) { + return COMMON_SCRIPT_END; + } + + inst_or_wave = subtrack->inst_or_wave; + } + + switch (inst_or_wave) { + case VOICE_TYPE_PERCUSSION: + semitone = semitone + n->transposition; + if (n->_0A.flags.add_subtrack_transposition) { + semitone = semitone + subtrack->transposition; + } + + n->semitone = semitone; + percussion = PercToPp(subtrack->bank_id, semitone); + + /* Mute note and exit if percussion doesn't exist or the subtrack is muted */ + if (percussion == nullptr || subtrack->muted) { + n->muted = TRUE; + n->delay2 = n->delay; + return COMMON_SCRIPT_END; + } + + n->adsr_env.envelope = percussion->envelope; + n->adsr_env.decay_idx = percussion->adsr_decay_idx; + if (n->ignore_drum_pan == FALSE) { + n->pan = percussion->pan; + } + n->tuned_sample = &percussion->tuned_sample; + n->frequency_scale = n->tuned_sample->tuning; + break; + case VOICE_TYPE_SOUND_EFF: + effect_id = (semitone + (n->transposition << 6)); + n->semitone = semitone; + effect = VpercToVep(subtrack->bank_id, effect_id); + + /* Mute note and exit if sfx doesn't exist or the subtrack is muted */ + if (effect == nullptr || subtrack->muted) { + n->muted = TRUE; + n->delay2 = n->delay + 1; + return COMMON_SCRIPT_END; + } + + n->tuned_sample = &effect->tuned_sample; + n->frequency_scale = n->tuned_sample->tuning; + break; + default: // voices/instruments + semitone = semitone + grp->transposition + n->transposition; + if (n->_0A.flags.add_subtrack_transposition) { + semitone = semitone + subtrack->transposition; + } + + n->semitone = semitone; + if (semitone > 127 || subtrack->muted) { + n->muted = TRUE; + if (subtrack->muted) { + subtrack->note_semitone = n->semitone; + } + + return COMMON_SCRIPT_END; + } + + if (n->inst_or_wave == 0xFF) { + instrument = subtrack->voicetable; + } else { + instrument = n->instrument; + } + + if (n->portamento_sweep.mode != PORTAMENTO_MODE_OFF) { + port_sweep = &n->portamento_sweep; + + switch (AUDIO_SWEEP_MODE(*port_sweep)) { + case PORTAMENTO_MODE_6: + case PORTAMENTO_MODE_7: + velocity = semitone; + break; + default: + velocity = semitone > n->portamento_target_note ? semitone : n->portamento_target_note; + break; + } + + // velocity = + if (instrument != nullptr) { + tuned_sample = NoteToVoice(instrument, velocity); + same_sample = n->tuned_sample == tuned_sample; + n->tuned_sample = tuned_sample; + tuning = n->tuned_sample->tuning; + } else { + n->tuned_sample = nullptr; + tuning = 1.0f; + if (inst_or_wave >= 0xC0) { + n->tuned_sample = &AG.synth_delay[inst_or_wave - 0xC0].tuned_sample; + } + } + + t0 = tuning * PITCHTABLE[semitone]; + semitone2 = (s8)n->portamento_target_note; + switch (AUDIO_SWEEP_MODE(*port_sweep)) { + case PORTAMENTO_MODE_6: + case PORTAMENTO_MODE_7: + semitone2 += semitone; + break; + } + if (semitone2 < 0) { + semitone2 = 0; + } + if (semitone2 > 127) { + semitone2 = 127; + } + + t1 = tuning * PITCHTABLE[semitone2]; + + switch (AUDIO_SWEEP_MODE(*port_sweep)) { + case PORTAMENTO_MODE_1: + case PORTAMENTO_MODE_3: + case PORTAMENTO_MODE_5: + case PORTAMENTO_MODE_6: + case PORTAMENTO_MODE_7: + freq_scale2 = t0; + freq_scale = t1; + break; + case PORTAMENTO_MODE_2: + case PORTAMENTO_MODE_4: + freq_scale = t0; + freq_scale2 = t1; + break; + default: + freq_scale = t0; + freq_scale2 = t0; + break; + } + + port_sweep->extent = (freq_scale2 / freq_scale) - 1.0f; + + if (AUDIO_SWEEP_IS_SPECIAL(*port_sweep)) { + speed = (grp->tempo * 0x8000) / AG.max_tempo; + + if (n->delay != 0) { + speed = (speed * 0x100) / (n->delay * n->portamento_time); + } + } else { + speed = (2 * 0x10000) / (n->portamento_time * AG.audio_params.updates_per_frame); + } + + if (speed >= 0x7FFF) { + speed = 0x7FFF; + } else if (speed <= 0) { + speed = 1; + } + + port_sweep->speed = speed; + port_sweep->current = 0; + n->frequency_scale = freq_scale; + if (AUDIO_SWEEP_MODE(*port_sweep) == PORTAMENTO_MODE_5) { + n->portamento_target_note = semitone; + } + } else { + if (instrument != nullptr) { + tuned_sample = NoteToVoice(instrument, semitone); + same_sample = n->tuned_sample == tuned_sample; + n->tuned_sample = tuned_sample; + n->frequency_scale = PITCHTABLE[semitone] * n->tuned_sample->tuning; + } else { + n->tuned_sample = nullptr; + n->frequency_scale = PITCHTABLE[semitone]; + if (inst_or_wave >= 0xC0) { + n->tuned_sample = &AG.synth_delay[inst_or_wave - 0xC0].tuned_sample; + } + } + } + + break; + } + + n->delay2 = n->delay; + n->frequency_scale *= n->bend; + + if (n->delay == 0) { + if (n->tuned_sample != nullptr) { + time = n->tuned_sample->wavetable->loop->loop_end; + } else { + time = 0.0f; + } + + time *= grp->tempo; + time *= AG._2894; + time /= n->frequency_scale; + + if (time > (f32)0x7FFE) { + time = (f32)0x7FFE; + } + + n->delay = (u16)(s32)time + 1; + n->gate_delay = 0; + + if (n->portamento_sweep.mode != PORTAMENTO_MODE_OFF) { + if (AUDIO_SWEEP_IS_SPECIAL(*port_sweep)) { + speed2 = (grp->tempo * 0x8000) / AG.max_tempo; + speed2 = (speed2 * 0x100) / (n->delay * n->portamento_time); + if (speed2 >= 0x7FFF) { + speed2 = 0x7FFF; + } else if (speed2 <= 0) { + speed2 = 1; + } + + port_sweep->speed = speed2; + } + } + } + + subtrack->note_semitone = n->semitone; + return same_sample; +} + +static s32 __SetNote(note* n, s32 cmd) { + macro* m = &n->macro_player; + u16 delay; + s32 velocity; + sub* subtrack = n->sub_track; + group* grp = subtrack->group; + s32 int_delta; + f32 float_delta; + + if (cmd == 0xC0) { + n->delay = Nas_ReadLengthData(m); + n->muted = TRUE; + n->_00bit1 = FALSE; + return COMMON_SCRIPT_END; + } + + n->muted = FALSE; + if (subtrack->large_notes == TRUE) { + switch (cmd & 0xC0) { + case 0x00: + delay = Nas_ReadLengthData(m); + velocity = *m->pc++; + n->gate_time = *m->pc++; + n->last_delay = delay; + break; + case 0x40: + delay = Nas_ReadLengthData(m); + velocity = *m->pc++; + n->gate_time = 0; + n->last_delay = delay; + break; + case 0x80: + delay = n->last_delay; + velocity = *m->pc++; + n->gate_time = *m->pc++; + break; + } + + if (velocity > 127 || velocity < 0) { + velocity = 127; + } + + n->velocity_square = ((f32)velocity * (f32)velocity) / ((f32)127 * (f32)127); + cmd -= (cmd & 0xC0); + } else { + switch (cmd & 0xC0) { + case 0x00: + delay = Nas_ReadLengthData(m); + n->last_delay = delay; + break; + case 0x40: + delay = n->short_note_default_delay; + break; + case 0x80: + delay = n->last_delay; + break; + } + + cmd -= (cmd & 0xC0); + } + + if (subtrack->velocity_random_variance != 0) { + float_delta = n->velocity_square * (AG.audio_random_seed % subtrack->velocity_random_variance) / 100.0f; + if (AG.audio_random_seed & 0x8000) { + float_delta = -float_delta; + } + + n->velocity_square2 = n->velocity_square + float_delta; + if (n->velocity_square2 < 0.0f) { + n->velocity_square2 = 0.0f; + } else if (n->velocity_square2 > 1.0f) { + n->velocity_square2 = 1.0f; + } + } else { + n->velocity_square2 = n->velocity_square; + } + + n->delay = delay; + n->gate_delay = (n->gate_time * delay) >> 8; + + if (subtrack->gate_time_random_variance != 0) { + /* @BUG - should be gate_time_random_variance (longstanding bug) */ + int_delta = (n->gate_delay * (AG.audio_random_seed % subtrack->velocity_random_variance)) / 100; + if (AG.audio_random_seed & 0x4000) { + int_delta = -int_delta; + } + + n->gate_delay += int_delta; + if (n->gate_delay < 0) { + n->gate_delay = 0; + } else if (n->gate_delay > n->delay) { + n->gate_delay = n->delay; + } + } + + if (grp->flags.muted && (subtrack->mute_flags & (AUDIO_MUTE_FLAG_STOP_SUBTRACK | AUDIO_MUTE_FLAG_STOP_NOTE))) { + n->muted = TRUE; + return COMMON_SCRIPT_END; + } + + if (grp->skip_ticks != 0) { + n->muted = TRUE; + return COMMON_SCRIPT_END; + } + + return cmd; +} + +static void Nas_PriorityChanger(sub* subtrack, u8 prio) { + u8 prio0 = prio & 0xF; + u8 prio1; + + if (prio0) { + subtrack->note_priority = prio0; + } + + prio1 = (u8)(prio >> 4); + if (prio1) { + subtrack->priority2 = prio1; + } + + if (subtrack->note_priority < 2) { + subtrack->note_priority = 2; + } + + if (subtrack->priority2 < 1) { + subtrack->note_priority = 1; + } +} + +static u8 Nas_ProgramChanger(sub* subtrack, u8 prog_id, voicetable** inst_pp, env* adsr_env) { + voicetable* inst_p = ProgToVp(subtrack->bank_id, prog_id); + + if (inst_p == nullptr) { + *inst_pp = nullptr; + return 0; + } else { + adsr_env->envelope = inst_p->envelope; + adsr_env->decay_idx = inst_p->adsr_decay_idx; + *inst_pp = inst_p; + + prog_id += VOICE_TYPE_INSTRUMENT_START; + return prog_id; + } +} + +static void Nas_SubVoiceSet(sub* subtrack, u8 inst_id) { + if (inst_id >= 128) { + /* synth waves */ + subtrack->inst_or_wave = inst_id; + subtrack->voicetable = nullptr; + } else if (inst_id == 0x7F) { + /* percussion */ + subtrack->inst_or_wave = VOICE_TYPE_PERCUSSION; + subtrack->voicetable = (voicetable*)1; + } else if (inst_id == 0x7E) { + /* sound effect */ + subtrack->inst_or_wave = VOICE_TYPE_SOUND_EFF; + subtrack->voicetable = (voicetable*)2; + } else { + u8 inst_or_wave; + + /* instrument */ + inst_or_wave = Nas_ProgramChanger(subtrack, inst_id, &subtrack->voicetable, &subtrack->adsr_env); + subtrack->inst_or_wave = inst_or_wave; + if (inst_or_wave == 0) { + /* failed to load the instrument */ + subtrack->has_instrument = FALSE; + return; + } + } + + subtrack->has_instrument = TRUE; +} + +static void Nas_SubVolumeSet(sub* subtrack, u8 volume) { + subtrack->volume = (f32)(s32)volume / 127.0f; +} + +static void Nas_SubSeq(sub* subtrack) { + u8 cmd; + u8 cmdArgU8; + s32 i; + u8* data; + group* grp; + macro* m; + s16 temp1; + u16 cmdArgU16; + u32 cmdArgs[3]; + s8 cmdArgS8; + u8 lo_bits; + u8 hi_bits; + u8* seq_data; + u32 new_var2; + s32 new_var3; + + if (subtrack->stop_script == FALSE) { + grp = subtrack->group; + + if (grp->flags.muted && (subtrack->mute_flags & AUDIO_MUTE_FLAG_STOP_SCRIPT)) { + return; + } + + if (subtrack->delay > 1) { + subtrack->delay--; + } else { + /* Sub-Track sequence command process loop */ + while (TRUE) { + m = &subtrack->macro_player; + cmd = Nas_ReadByteData(m); + if (cmd >= 0xA0) { + /* Load command arguments */ + hi_bits = SCOM_TABLE[(u8)cmd - 0xA0]; + lo_bits = hi_bits & 3; + + for (i = 0; i < lo_bits; i++) { + if ((hi_bits & 0x80) == SCOM_TYPE_U8) { + cmdArgs[i] = Nas_ReadByteData(m); + } else { + cmdArgs[i] = Nas_ReadWordData(m); + } + + hi_bits = hi_bits << 1; + } + + if (cmd >= 0xF2) { + s32 delay = Common_Com(grp, m, cmd, cmdArgs[0]); + + if (delay != 0) { + if (delay == COMMON_SCRIPT_END) { + Nas_ReleaseSubTrack(subtrack); + } else { + subtrack->delay = delay; + } + + break; + } + } else { + switch ((u8)cmd) { + case 0xEA: // stop subtrack seq script + subtrack->stop_script = TRUE; + goto note_seq; + case 0xF1: // alloc voices + Nas_DeAllocAllVoices(&subtrack->channel_node); + Nas_AllocVoices(&subtrack->channel_node, cmdArgs[0] & 0xFF); + break; + case 0xF0: // dealloc voices + Nas_DeAllocAllVoices(&subtrack->channel_node); + break; + case 0xC2: // set dynamic table + subtrack->dyn_tbl = (unsigned char(*)[][2]) & grp->seq_data[(u16)cmdArgs[0]]; + break; + case 0xC5: // jump to entry in dynamic table + if (m->value != -1) { + data = (*subtrack->dyn_tbl)[m->value]; + cmdArgU16 = (u16)((data[0] << 8) + data[1]); + m->pc = (u8*)&grp->seq_data[cmdArgU16]; + } + break; + case 0xEB: // Load subtrack bank and set instruments + cmdArgU8 = cmdArgs[0]; + if (grp->bank_id != 0xFF) { + cmdArgU16 = AG.map_header[grp->seq_id]; + lo_bits = ((u8*)AG.map_header)[cmdArgU16]; + cmdArgU8 = ((u8*)AG.map_header)[cmdArgU16 + lo_bits - cmdArgU8]; + } + + if (Nas_SzCacheCheck(BANK_TABLE, CACHE_EITHER, cmdArgU8)) { + subtrack->bank_id = cmdArgU8; + } + + cmdArgs[0] = cmdArgs[1]; + // fallthrough 0xEB -> 0xC1 + case 0xC1: // Set subtrack voice + Nas_SubVoiceSet(subtrack, cmdArgs[0]); + break; + case 0xC3: // turn off large notes + subtrack->large_notes = FALSE; + break; + case 0xC4: // turn on large notes + subtrack->large_notes = TRUE; + break; + case 0xDF: // set volume + cmdArgU8 = (u8)cmdArgs[0]; + Nas_SubVolumeSet(subtrack, cmdArgU8); + subtrack->changes.flags.volume = TRUE; + break; + case 0xE0: // set volume scale + cmdArgU8 = (u8)cmdArgs[0]; + subtrack->volume_scale = (f32)(s32)cmdArgU8 / 128.0f; + subtrack->changes.flags.volume = TRUE; + break; + case 0xDE: // set frequency scale + cmdArgU16 = (u16)cmdArgs[0]; + subtrack->frequency_scale = (f32)(s32)cmdArgU16 / (f32)0x8000; + subtrack->changes.flags.frequency_scale = TRUE; + break; + case 0xD3: // large bend pitch + cmdArgU8 = (u8)cmdArgs[0]; + cmdArgU8 += 128; + subtrack->frequency_scale = PCENTTABLE[cmdArgU8]; + subtrack->changes.flags.frequency_scale = TRUE; + break; + case 0xEE: // small bend pitch + cmdArgU8 = 128 + (u8)cmdArgs[0]; + subtrack->frequency_scale = PCENTTABLE2[cmdArgU8]; + subtrack->changes.flags.frequency_scale = TRUE; + break; + case 0xDD: // set pan + cmdArgU8 = (u8)cmdArgs[0]; + subtrack->new_pan = cmdArgU8; + subtrack->changes.flags.pan = TRUE; + break; + case 0xDC: // set pan mix/channel weight + cmdArgU8 = (u8)cmdArgs[0]; + subtrack->pan_channel_weight = cmdArgU8; + subtrack->changes.flags.pan = TRUE; + break; + case 0xDB: // set transposition + cmdArgS8 = (s8)cmdArgs[0]; + subtrack->transposition = cmdArgS8; + break; + case 0xDA: // set envelope + cmdArgU16 = (u16)cmdArgs[0]; + subtrack->adsr_env.envelope = (envdat*)&grp->seq_data[cmdArgU16]; + break; + case 0xD9: // set decay index + cmdArgU8 = (u8)cmdArgs[0]; + subtrack->adsr_env.decay_idx = cmdArgU8; + break; + case 0xD8: // set vibrato depth + cmdArgU8 = (u8)cmdArgs[0]; + subtrack->vibrato_params.depth_target = cmdArgU8 * 8; + subtrack->vibrato_params.depth_start = 0; + subtrack->vibrato_params.depth_change_delay = 0; + break; + case 0xD7: // set vibrato rate + cmdArgU8 = (u8)cmdArgs[0]; + subtrack->vibrato_params.rate_target = cmdArgU8 * 32; + subtrack->vibrato_params.rate_start = cmdArgU8 * 32; + subtrack->vibrato_params.rate_change_delay = 0; + break; + case 0xE2: // set vibrato depth linear + cmdArgU8 = (u8)cmdArgs[0]; + subtrack->vibrato_params.depth_start = cmdArgU8 * 8; + cmdArgU8 = (u8)cmdArgs[1]; + subtrack->vibrato_params.depth_target = cmdArgU8 * 8; + cmdArgU8 = (u8)cmdArgs[2]; + subtrack->vibrato_params.depth_change_delay = cmdArgU8 * 16; + break; + case 0xE1: // set vibrato rate linear + cmdArgU8 = (u8)cmdArgs[0]; + subtrack->vibrato_params.rate_start = cmdArgU8 * 32; + cmdArgU8 = (u8)cmdArgs[1]; + subtrack->vibrato_params.rate_target = cmdArgU8 * 32; + cmdArgU8 = (u8)cmdArgs[2]; + subtrack->vibrato_params.rate_change_delay = cmdArgU8 * 16; + break; + case 0xE3: // set vibrato delay + cmdArgU8 = (u8)cmdArgs[0]; + subtrack->vibrato_params.delay = cmdArgU8 * 16; + break; + case 0xD4: // set reverb volume + cmdArgU8 = (u8)cmdArgs[0]; + subtrack->target_reverb_vol = cmdArgU8; + break; + case 0xC6: // set bank + cmdArgU8 = cmdArgs[0]; + if (grp->bank_id != 0xFF) { + cmdArgU16 = AG.map_header[grp->seq_id]; + lo_bits = ((u8*)AG.map_header)[cmdArgU16]; + cmdArgU8 = ((u8*)AG.map_header)[cmdArgU16 + lo_bits - cmdArgU8]; + } + + if (Nas_SzCacheCheck(BANK_TABLE, CACHE_EITHER, cmdArgU8)) { + subtrack->bank_id = cmdArgU8; + } + break; + case 0xC7: // write to sequence script + cmdArgU8 = (u8)cmdArgs[0]; + cmdArgU16 = (u16)cmdArgs[1]; + seq_data = &grp->seq_data[cmdArgU16]; + seq_data[0] = (u8)m->value + cmdArgU8; + break; + case 0xC8: // subtract macro value + case 0xCC: // set macro value + case 0xC9: // bit& macro value + cmdArgS8 = (s8)cmdArgs[0]; + if (cmd == 0xC8) { + m->value -= cmdArgS8; + } else if (cmd == 0xCC) { + m->value = cmdArgS8; + } else { + m->value &= cmdArgS8; + } + break; + case 0xCD: // disable subtrack + cmdArgU8 = (u8)cmdArgs[0]; + Nas_ReleaseSubTrack(grp->subtracks[cmdArgU8]); + break; + case 0xCA: // set mute flags + cmdArgU8 = (u8)cmdArgs[0]; + subtrack->mute_flags = cmdArgU8; + subtrack->changes.flags.volume = TRUE; + break; + case 0xCB: // load macro register value from table + cmdArgU16 = (u16)cmdArgs[0]; + m->value = grp->seq_data[(u32)(cmdArgU16 + m->value)]; + break; + case 0xCE: // set stored sequence data index + cmdArgU16 = (u16)cmdArgs[0]; + subtrack->dynamic_value = cmdArgU16; + break; + case 0xCF: // write u16 into sequence script + cmdArgU16 = (u16)cmdArgs[0]; + seq_data = &grp->seq_data[cmdArgU16]; + seq_data[0] = (subtrack->dynamic_value >> 8) & 0xFF; + seq_data[1] = subtrack->dynamic_value & 0xFF; + break; + case 0xD0: // stereo phase effects + cmdArgU8 = (u8)cmdArgs[0]; + if (cmdArgU8 & 0x80) { + subtrack->stereo_effects = TRUE; + } else { + subtrack->stereo_effects = FALSE; + } + + subtrack->stereo_phase.asU8 = cmdArgU8 & 0x7F; + break; + case 0xD1: // set note allocation policy + cmdArgU8 = (u8)cmdArgs[0]; + subtrack->note_alloc_policy = cmdArgU8; + break; + case 0xD2: // set sustain + cmdArgU8 = (u8)cmdArgs[0]; + subtrack->adsr_env.sustain = cmdArgU8; + break; + case 0xE5: // set reverb index + cmdArgU8 = (u8)cmdArgs[0]; + subtrack->reverb_idx = cmdArgU8; + break; + case 0xE4: // dynamic call + if (m->value != -1) { + data = (*subtrack->dyn_tbl)[m->value]; + /* @BUG - missing stack depth bounds check */ + m->stack[m->depth++] = m->pc; + cmdArgU16 = (u16)((data[0] << 8) + data[1]); + m->pc = &grp->seq_data[cmdArgU16]; + } + break; + case 0xE6: // set book ofs + cmdArgU8 = (u8)cmdArgs[0]; + subtrack->book_ofs = cmdArgU8; + break; + case 0xE7: // + cmdArgU16 = (u16)cmdArgs[0]; + data = &grp->seq_data[cmdArgU16]; + subtrack->mute_flags = data[0]; + subtrack->note_alloc_policy = data[1]; + Nas_PriorityChanger(subtrack, data[2]); + subtrack->transposition = (s8)data[3]; + subtrack->new_pan = data[4]; + subtrack->pan_channel_weight = data[5]; + subtrack->target_reverb_vol = data[6]; + subtrack->reverb_idx = data[7]; + /* @BUG - didn't update reverb state as changed */ + subtrack->changes.flags.pan = TRUE; + break; + case 0xE8: // + subtrack->mute_flags = cmdArgs[0]; + subtrack->note_alloc_policy = cmdArgs[1]; + cmdArgU8 = (u8)cmdArgs[2]; + Nas_PriorityChanger(subtrack, cmdArgU8); + subtrack->transposition = (s8)Nas_ReadByteData(m); + subtrack->new_pan = Nas_ReadByteData(m); + subtrack->pan_channel_weight = Nas_ReadByteData(m); + subtrack->target_reverb_vol = Nas_ReadByteData(m); + subtrack->reverb_idx = Nas_ReadByteData(m); + /* @BUG - didn't update reverb state as changed */ + subtrack->changes.flags.pan = TRUE; + break; + case 0xEC: // reset vibrato + subtrack->frequency_scale = 1.0f; + subtrack->vibrato_params.depth_target = 0; + subtrack->vibrato_params.depth_start = 0; + subtrack->vibrato_params.depth_change_delay = 0; + subtrack->vibrato_params.rate_target = 0; + subtrack->vibrato_params.rate_start = 0; + subtrack->vibrato_params.rate_change_delay = 0; + subtrack->filter = nullptr; + subtrack->gain = 0; + subtrack->adsr_env.sustain = 0; + subtrack->velocity_random_variance = 0; + subtrack->gate_time_random_variance = 0; + subtrack->comb_filter_size = 0; + subtrack->comb_filter_gain = 0; + subtrack->book_ofs = 0; + subtrack->sample_start_pos = 0; + subtrack->_E0 = 0; + break; + case 0xE9: // set priority + cmdArgU8 = (u8)cmdArgs[0]; + Nas_PriorityChanger(subtrack, cmdArgU8); + break; + case 0xED: // set gain + cmdArgU8 = (u8)cmdArgs[0]; + subtrack->gain = cmdArgU8; + break; + case 0xB0: // set filter + cmdArgU16 = (u16)cmdArgs[0]; + data = &grp->seq_data[cmdArgU16]; + subtrack->filter = (s16*)data; + break; + case 0xB1: // clear filter + subtrack->filter = nullptr; + break; + case 0xB3: // load filter + cmdArgU8 = (u8)cmdArgs[0]; + if (subtrack->filter != nullptr) { + lo_bits = (cmdArgU8 >> 4) & 0xF; + cmdArgU8 &= 0xF; + Nas_SetBPFilter(subtrack->filter, lo_bits, cmdArgU8); + } + break; + case 0xB2: // load dynamic idx + cmdArgU16 = (u16)cmdArgs[0]; + subtrack->dynamic_value = *(u16*)&grp->seq_data[cmdArgU16 + m->value * 2]; + break; + case 0xB4: // set dynamic table + subtrack->dyn_tbl = (unsigned char(*)[][2]) & grp->seq_data[subtrack->dynamic_value]; + break; + case 0xB5: // read from dynamic table + subtrack->dynamic_value = ((u16*)subtrack->dyn_tbl)[m->value]; + break; + case 0xB6: // read to macro register from dynamic table + m->value = (*subtrack->dyn_tbl)[0][m->value]; + break; + case 0xB7: // random dynamic value + if (cmdArgs[0] == 0) { + subtrack->dynamic_value = Nap_GetRandom(); + } else { + subtrack->dynamic_value = Nap_GetRandom() % cmdArgs[0]; + } + break; + case 0xB8: // macro register random value + if (cmdArgs[0] == 0) { + m->value = Nap_GetRandom(); + } else { + m->value = Nap_GetRandom() % cmdArgs[0]; + } + break; + case 0xB9: // set velocity random variance + cmdArgU8 = (u8)cmdArgs[0]; + subtrack->velocity_random_variance = cmdArgU8; + break; + case 0xBA: // set gate time random variance + cmdArgU8 = (u8)cmdArgs[0]; + subtrack->gate_time_random_variance = cmdArgU8; + break; + case 0xBB: // set comb filter size & gain + cmdArgU8 = (u8)cmdArgs[0]; + subtrack->comb_filter_size = cmdArgU8; + cmdArgU16 = (u16)cmdArgs[1]; + subtrack->comb_filter_gain = cmdArgU16; + break; + case 0xBC: // Add to dynamic value + subtrack->dynamic_value += cmdArgs[0]; + break; + case 0xA8: // Dynamic value bit shift & negate (when s16), differs from OoT and MM + new_var2 = (subtrack->dynamic_value & 0x7F); + new_var2 |= 0x8000 | ((subtrack->dynamic_value & 0x7FC0) << 1); + subtrack->dynamic_value = new_var2; + break; + case 0xBD: // set sample start pos + subtrack->sample_start_pos = cmdArgs[0]; + break; + case 0xBE: // call custom sequence callback and update macro register value + if (cmdArgs[0] <= 4) { + if (AG.seq_callbacks[cmdArgs[0]] != nullptr) { + NA_CALLBACK = AG.seq_callbacks[cmdArgs[0]]; + m->value = (*NA_CALLBACK)(m->value, subtrack); + } + } + break; + case 0xA0: // read from sfx state using macro register value as index + case 0xA1: // read from sfx state using dynamic value as index + case 0xA2: // write to sfx state using macro register value as index + case 0xA3: // write to sfx state using dynamic value as index + if (cmd == 0xA0 || cmd == 0xA2) { + cmdArgU16 = cmdArgs[0]; + } else { + cmdArgU16 = subtrack->dynamic_value; + } + + if (subtrack->sfx_state != nullptr) { + if (cmd == 0xA0 || cmd == 0xA1) { + m->value = subtrack->sfx_state[cmdArgU16]; + } else { + subtrack->sfx_state[cmdArgU16] = m->value; + } + } + break; + case 0xA4: // set surround effect index + subtrack->surround_effect_idx = cmdArgs[0]; + break; + case 0xA5: // add subtrack index to macro register value + m->value += subtrack->subtrack_idx; + break; + case 0xA6: // Set value in sequence data to macro register value plus arg value + cmdArgU8 = (u8)cmdArgs[0]; + cmdArgU16 = (u16)cmdArgs[1]; + seq_data = &grp->seq_data[cmdArgU16 + subtrack->subtrack_idx]; + *seq_data = (u8)m->value + cmdArgU8; + break; + case 0xA7: // manipulate macro register value + u32 shift = (cmdArgs[0] & 0xF); + lo_bits = (m->value & 0x80); + new_var2 = (cmdArgs[0] & 0x80); + new_var3 = (cmdArgs[0] & 0x40); + + if (new_var2 == 0) { + cmdArgU8 = m->value << shift; + } else { + cmdArgU8 = m->value >> shift; + } + + if (new_var3) { + cmdArgU8 &= (u8)~0x80; + cmdArgU8 |= lo_bits; + } + + m->value = cmdArgU8; + break; + } + } + // continue; + } else if (cmd >= 0x70) { + s32 hi_bits = (cmd & (u8)~7); + lo_bits = cmd; + lo_bits &= ~0xF8; + + /* if command is not in range [0x70, 0x77] and the lower 4 bits are >= 4, set them to be 0xY0*/ + if (hi_bits != 0x70 && lo_bits >= ARRAY_COUNT(subtrack->note_layers)) { + lo_bits = 0; + } + + switch (hi_bits) { + // [0x80 - 0x83] + case 0x80: // macro register value = subtrack->note_layers[idx]->finished + if (subtrack->note_layers[lo_bits] != nullptr) { + m->value = subtrack->note_layers[lo_bits]->finished; + } else { + m->value = -1; + } + break; + // [0x88 - 0x8B] + case 0x88: // start note layer and initialize note macro pc + cmdArgU16 = Nas_ReadWordData(m); + if (Nas_EntryNoteTrack(subtrack, lo_bits) == 0) { + subtrack->note_layers[lo_bits]->macro_player.pc = &grp->seq_data[cmdArgU16]; + } + break; + // [0x90 - 0x93] + case 0x90: // stop note layer + Nas_CloseNoteTrack(subtrack, lo_bits); + break; + // [0x98 - 0x9B] + case 0x98: // start note layer and initialize note macro pc from data at macro register offset + if (m->value != -1) { + if (Nas_EntryNoteTrack(subtrack, lo_bits) != -1) { + data = (*subtrack->dyn_tbl)[m->value]; + cmdArgU16 = (u16)((data[0] << 8) + data[1]); + subtrack->note_layers[lo_bits]->macro_player.pc = &grp->seq_data[cmdArgU16]; + } + } + break; + // [0x70 - 0x77] + case 0x70: // write macro register value into subtrack port + subtrack->port[lo_bits] = m->value; + break; + // [0x78 - 0x7B] + case 0x78: // start note layer and initialize note macro pc from subtrack pc and rel offset + temp1 = Nas_ReadWordData(m); + if (Nas_EntryNoteTrack(subtrack, lo_bits) == 0) { + subtrack->note_layers[lo_bits]->macro_player.pc = m->pc + temp1; + } + break; + } + } else { + /* Process commands 0x00 - 0x6F */ + lo_bits = cmd & 0xF; // each command has 16 indicies which come from the lower 4 bits + switch (cmd & 0xF0) { + // [0x00, 0x0F] + case 0x00: // set delay + subtrack->delay = lo_bits; + if (lo_bits == 0) { + break; /* clear delay, continue processing */ + } else { + goto note_seq; /* delay > 0 so stop processing subtrack commands for now */ + } + // [0x10, 0x17] & [0x18, 0x1F] + case 0x10: // load new wave samples + if (lo_bits < 8) { + subtrack->port[lo_bits] = -1; // clear port + /* Load samples from bank with inst id being macro's register value, load result in + * port[lo_bits] */ + VoiceLoad(subtrack->bank_id, m->value, &subtrack->port[lo_bits]); + } else { + lo_bits -= 8; + subtrack->port[lo_bits] = -1; + /* Load synth? samples based on dynamic value */ + VoiceLoad(subtrack->bank_id, 0x100 + subtrack->dynamic_value, &subtrack->port[lo_bits]); + } + break; + // [0x60, 0x6F] (only 0x60, 0x67 are valid) + case 0x60: // read port value into macro register value + m->value = subtrack->port[lo_bits]; + if (lo_bits < 2) { + subtrack->port[lo_bits] = -1; + } + break; + // [0x50, 0x5F] (only 0x50, 0x57 are valid) + case 0x50: // subtrack port value from macro register value + m->value -= subtrack->port[lo_bits]; + break; + // [0x20, 0x2F] + case 0x20: // start subtrack + cmdArgU16 = (u16)Nas_ReadWordData(m); + Nas_OpenSub(grp, lo_bits, &grp->seq_data[cmdArgU16]); + break; + // [0x30, 0x3F] + case 0x30: // set subtrack port to this subtrack's macro register value + cmdArgU8 = Nas_ReadByteData(m); + grp->subtracks[lo_bits]->port[cmdArgU8] = m->value; + break; + // [0x40, 0x4F] + case 0x40: // set this subtrack's macro register value to other subtrack's port + cmdArgU8 = Nas_ReadByteData(m); + m->value = grp->subtracks[lo_bits]->port[cmdArgU8]; + break; + } + } + } + } + } + +note_seq: + for (i = 0; i < ARRAY_COUNT(subtrack->note_layers); i++) { + if (subtrack->note_layers[i] != nullptr) { + Nas_NoteSeq(subtrack->note_layers[i]); + } + } +} + +static void Nas_GroupSeq(group* grp) { + u8 cmd; + u8 cmd_lo_bits; + macro* m; + s16 tempS; + u16 temp; + s32 i; + s32 value; + u8* data1; + u8* data2; + u8* data3; + u8* data4; + s32 tempo_change; + sub* subtrack; + u16* new_var; + s32 delay; + f32 tempf32; + s8 argS8; + s16 argS16; + u8 argU8; + + if (grp->flags.enabled) { + if (Nas_CheckIDseq(grp->seq_id) == FALSE || Nas_CheckIDbank(grp->bank_id) == FALSE) { + Nas_CheckIDseq(grp->seq_id); + Nas_CheckIDseq(grp->bank_id); + Nas_ReleaseGroup(grp); + } else { + Nas_WriteIDseq(grp->seq_id, LOAD_STATUS_COMPLETE); + Nas_WriteIDbank(grp->bank_id, LOAD_STATUS_COMPLETE); + + if (grp->flags.muted && (grp->mute_flags & AUDIO_MUTE_FLAG_STOP_SCRIPT)) { + return; + } + + grp->script_counter++; + tempo_change = grp->tempo + grp->tempo_change; + if (tempo_change > AG.max_tempo) { + tempo_change = AG.max_tempo; + } + + grp->tempo_acceleration += tempo_change; + if (grp->tempo_acceleration < AG.max_tempo) { + return; + } + + grp->tempo_acceleration -= (u16)AG.max_tempo; + grp->unk016++; + + if (grp->flags.stop_seq_script == TRUE) { + return; + } + + if (grp->delay > 1) { + grp->delay--; + } else { + m = &grp->macro_player; + grp->flags.recalculate_volume = TRUE; + + /* Sequence group commands processing loop */ + while (TRUE) { + cmd = Nas_ReadByteData(m); + if (cmd >= 0xF2) { + u16 arg = Convert_Com(m, cmd); + delay = Common_Com(grp, m, cmd, arg); + + if (delay != 0) { + /* Group is on delay or script has exited */ + if (delay == COMMON_SCRIPT_END) { + Nas_ReleaseGroup(grp); + } else { + grp->delay = delay; + } + + break; + } + } else if (cmd >= 0xC0) { + switch (cmd) { + case 0xF1: // reserve voices + Nas_DeAllocAllVoices(&grp->channel_node); + cmd = Nas_ReadByteData(m); + Nas_AllocVoices(&grp->channel_node, (u8)cmd); + break; + case 0xF0: // release voices + Nas_DeAllocAllVoices(&grp->channel_node); + break; + case 0xDF: // absolute transposition + grp->transposition = 0; + // fallthrough 0xDF -> 0xDE + case 0xDE: // relative transposition + argU8 = Nas_ReadByteData(m); + grp->transposition = grp->transposition + (s8)argU8; + break; + case 0xDD: // set tempo + grp->tempo = Nas_ReadByteData(m) * AUDIO_TATUMS_PER_BEAT; + if (grp->tempo > AG.max_tempo) { + grp->tempo = AG.max_tempo; + } + if ((s16)grp->tempo < 1) { + grp->tempo = 1; + } + break; + case 0xDC: // adjust tempo relative + grp->tempo_change = (s8)Nas_ReadByteData(m) * AUDIO_TATUMS_PER_BEAT; + break; + case 0xDA: // change volume + cmd = Nas_ReadByteData(m); + temp = Nas_ReadWordData(m); + switch (cmd) { + case GROUP_STATE_0: + case GROUP_STATE_FADE_IN: + if (grp->state != GROUP_STATE_FADE_OUT) { + grp->stored_fade_timer = temp; + grp->state = cmd; + } + break; + case GROUP_STATE_FADE_OUT: + grp->fade_timer = temp; + grp->state = cmd; + grp->fade_velocity = -grp->fade_volume / (f32)(s32)grp->fade_timer; + break; + } + break; + case 0xDB: // set volume + tempf32 = (s32)Nas_ReadByteData(m) / 127.0f; + switch (grp->state) { + case GROUP_STATE_FADE_IN: + grp->fade_volume = 0.0f; + grp->state = GROUP_STATE_0; + // fallthrough GROUP_STATE_FADE_IN + case GROUP_STATE_0: + temp = grp->stored_fade_timer; + grp->fade_timer = temp; + if (temp != 0) { + grp->fade_velocity = + (tempf32 - grp->fade_volume) / (f32)(s32)grp->fade_timer; + } else { + grp->fade_volume = tempf32; + } + break; + + case GROUP_STATE_FADE_OUT: + break; + } + break; + case 0xD9: // set volume scale + grp->fade_volume_scale = (s8)Nas_ReadByteData(m) / 127.0f; + break; + case 0xD7: // initialize subtracks + temp = Nas_ReadWordData(m); + Nas_AllocSub(grp, temp); + break; + case 0xD6: // [ineffective] - disable subtracks + Nas_ReadWordData(m); + break; + case 0xD5: // set mute scale + grp->mute_volume_scale = (s8)Nas_ReadByteData(m) / 127.0f; + break; + case 0xD4: // mute + grp->flags.muted = TRUE; + break; + case 0xD3: // set mute behaivor + grp->mute_flags = Nas_ReadByteData(m); + break; + case 0xD1: // set short note gate-time table + case 0xD2: // set short note velocity table + temp = Nas_ReadWordData(m); + data3 = &grp->seq_data[temp]; + if (cmd == 0xD2) { + grp->short_note_velocity_tbl = data3; + } else { + grp->short_note_gate_time_tbl = data3; + } + break; + case 0xD0: // set note allocation policy + grp->note_alloc_policy = Nas_ReadByteData(m); + break; + case 0xCE: // set macro register value to random value + cmd = Nas_ReadByteData(m); + if (cmd == 0) { + /* 0-255 */ + m->value = (AG.audio_random_seed >> 2) & 0xFF; + } else { + /* 0-N */ + m->value = (AG.audio_random_seed >> 2) % cmd; + } + break; + case 0xCD: // dynamic look-up table call + temp = Nas_ReadWordData(m); + if (m->value != -1 && m->depth != 3) { + data1 = &grp->seq_data[(u32)(temp + (m->value << 1))]; + m->stack[m->depth++] = m->pc; + temp = (data1[0] << 8) + data1[1]; + m->pc = &grp->seq_data[temp]; + } + break; + case 0xCC: // set macro register value + m->value = Nas_ReadByteData(m); + break; + case 0xC9: // macro register bit mask + m->value &= Nas_ReadByteData(m); + break; + case 0xC8: // macro register subtraction + m->value -= Nas_ReadByteData(m); + break; + case 0xC7: // write macro register value to sequence data + cmd = Nas_ReadByteData(m); + temp = Nas_ReadWordData(m); + data2 = &grp->seq_data[temp]; + data2[0] = (u8)m->value + cmd; + break; + case 0xC2: // dynamic lookup branch (no return) + temp = Nas_ReadWordData(m); + if (m->value != -1) { + data4 = &grp->seq_data[(u32)(temp + (m->value << 1))]; + temp = (data4[0] << 8) + data4[1]; + m->pc = &grp->seq_data[temp]; + } + break; + case 0xC6: // stop script + grp->flags.stop_seq_script = TRUE; + return; + case 0xC5: // + grp->unk016 = Nas_ReadWordData(m); + break; + case 0xEF: // + Nas_ReadWordData(m); + Nas_ReadByteData(m); + break; + case 0xC4: // start sequence script + /* Get sequence group index */ + cmd = Nas_ReadByteData(m); + if (cmd == 0xFF) { + cmd = grp->group_idx; + } + + Nas_StartMySeq(cmd, Nas_ReadByteData(m), 0); + if (cmd == (u8)grp->group_idx) { + return; // stop processing since we just used this group for a new sequence + } + break; + case 0xC3: // mute subtracks from u16 bitfield + temp = Nas_ReadWordData(m); + if (m->value != -1) { + new_var = (u16*)(grp->seq_data + (u32)(temp + m->value * 2)); + temp = *new_var; + for (i = 0; i < ARRAY_COUNT(grp->subtracks); i++) { + grp->subtracks[i]->muted = temp & 1; + temp = temp >> 1; + } + } + break; + } + } else if (cmd == 0xBE) { + cmd = Nas_ReadByteData(m); + if (cmd <= 4) { + if (AG.seq_callbacks[cmd] != nullptr) { + NA_GRP_CALLBACK = (GRP_CALLBACK)AG.seq_callbacks[cmd]; + m->value = (*(GRP_CALLBACK)AG.seq_callbacks[cmd])(m->value, grp); + } + } else { + break; + } + } else { + /* Commands 0x00 - 0xBD & 0xBF */ + cmd_lo_bits = cmd & 0x0F; + switch (cmd & 0xF0) { + // [0x00, 0x0F] + case 0x00: // macro register value = !subtrack->enabled + m->value = grp->subtracks[cmd_lo_bits]->enabled ^ TRUE; + break; + // [0x50, 0x57] @BUG - ([0x58, 0x5F] end here but would result in undefined behavior) + case 0x50: // macro register subtract port value + m->value -= grp->port[cmd_lo_bits]; + break; + // [0x70, 0x77] @BUG - ([0x78, 0x7F] end here but would result in undefined behavior) + case 0x70: // write macro register value into port + grp->port[cmd_lo_bits] = m->value; + break; + // [0x80, 0x87] @BUG - ([0x88, 0x8F] end here but would result in undefined behavior) + case 0x80: // read macro register value from port + m->value = grp->port[cmd_lo_bits]; + if (cmd_lo_bits < 2) { + grp->port[cmd_lo_bits] = -1; + } + break; + // [0x40, 0x4F] + case 0x40: // disable subtrack + Nas_ReleaseSubTrack(grp->subtracks[cmd_lo_bits]); + break; + // [0x90, 0x9F] + case 0x90: // start subtrack w/ absolute script address + temp = Nas_ReadWordData(m); + Nas_OpenSub(grp, cmd_lo_bits, &grp->seq_data[temp]); + break; + // [0xA0, 0xAF] + case 0xA0: // start subtrack w/ relative script address + tempS = Nas_ReadWordData(m); + Nas_OpenSub(grp, cmd_lo_bits, &m->pc[tempS]); + break; + // [0xB0, 0xB7] @BUG - ([0xB8, 0xBF] end here but would result in undefined behavior) + case 0xB0: // load sequence + cmd = Nas_ReadByteData(m); + temp = Nas_ReadWordData(m); + data2 = &grp->seq_data[temp]; + SeqLoad(cmd, data2, &grp->port[cmd_lo_bits]); + break; + // [0x60, 0x67] @BUG - ([0x68, 0x6F] end here but would result in undefined behavior) + case 0x60: // async load + cmd = (u8)Nas_ReadByteData(m); + argU8 = Nas_ReadByteData(m); + MK_load(cmd, argU8, (u8*)&grp->port[cmd_lo_bits]); + break; + } + } + } + } + + for (i = 0; i < AUDIO_SUBTRACK_NUM; i++) { + subtrack = grp->subtracks[i]; + if (subtrack->enabled) { + Nas_SubSeq(subtrack); + } + } + } + } +} + +extern void Nas_MySeqMain(u32 frames_left) { + group* grp; + group* main_grp; + u32 i; + + AG.sample_state_offset = (AG.audio_params.updates_per_frame - (frames_left + 1)) * AG.num_channels; + for (i = 0; i < AG.audio_params.num_groups; i++) { + grp = &AG.groups[i]; + + if (grp->flags.enabled == TRUE) { + Nas_GroupSeq(grp); + Nas_MainCtrl(grp); + } + } + + main_grp = &AG.main_group; + Nas_GroupSeq(main_grp); + Nas_MainCtrl(main_grp); + Nas_UpdateChannel(); +} + +extern void Nas_SeqSkip(group* grp) { + while (grp->skip_ticks > 0) { + Nas_GroupSeq(grp); + Nas_MainCtrl(grp); + grp->skip_ticks--; + } +} + +extern void Nas_InitMySeq(group* grp) { + s32 i; + + Nas_ReleaseGroup(grp); + grp->flags.stop_seq_script = FALSE; + grp->delay = 0; + grp->state = GROUP_STATE_FADE_IN; + grp->fade_timer = 0; + grp->stored_fade_timer = 0; + grp->tempo_acceleration = 0; + grp->tempo = 120 * AUDIO_TATUMS_PER_BEAT; + grp->tempo_change = 0; + grp->fade_volume = 1.0f; + grp->fade_velocity = 0.0f; + grp->volume = 0.0f; + grp->mute_volume_scale = 0.5f; + grp->transposition = 0; + grp->note_alloc_policy = 0; + grp->short_note_velocity_tbl = DEFAULT_VTABLE; + grp->short_note_gate_time_tbl = DEFAULT_GTABLE; + grp->script_counter = 0; + grp->unk016 = 0; + + for (i = 0; i < AUDIO_SUBTRACK_NUM; i++) { + Nas_InitSubTrack(grp->subtracks[i]); + } +} + +extern void Nas_AssignSubTrack(s32 group_idx) { + sub* subtrack; + group* grp = &AG.groups[group_idx]; + s32 i; + s32 j; + + for (i = 0; i < AUDIO_SUBTRACK_NUM; i++) { + grp->subtracks[i] = (sub*)Nas_HeapAlloc_CL(&AG.misc_heap, sizeof(sub)); + if (grp->subtracks[i] == nullptr) { + grp->subtracks[i] = &AG.null_sub_track; + } else { + subtrack = grp->subtracks[i]; + subtrack->group = grp; + subtrack->subtrack_idx = i; + subtrack->enabled = FALSE; + + for (j = 0; j < ARRAY_COUNT(subtrack->note_layers); j++) { + subtrack->note_layers[j] = nullptr; + } + } + + Nas_InitSubTrack(grp->subtracks[i]); + } +} + +static void __InitGroup(group* grp) { + s32 i; + s32 j; + + for (i = 0; i < AUDIO_SUBTRACK_NUM; i++) { + grp->subtracks[i] = &AG.null_sub_track; + } + + grp->flags.enabled = FALSE; + grp->flags.muted = FALSE; + grp->flags.bank_dma_in_progress = FALSE; + grp->flags.sequence_dma_in_progress = FALSE; + grp->flags.apply_bend = FALSE; + + for (j = 0; j < ARRAY_COUNT(grp->port); j++) { + grp->port[j] = -1; + } + + grp->mute_flags = AUDIO_MUTE_FLAG_SOFTEN | AUDIO_MUTE_FLAG_STOP_NOTE; + grp->fade_volume_scale = 1.0f; + grp->bend = 1.0f; + + Nas_InitChNode(&grp->channel_node); + Nas_InitMySeq(grp); +} + +extern void Nas_InitPlayer(void) { + group* grp; + sub* subtrack; + s32 i; + + Nas_InitNoteList(); + for (i = 0; i < AUDIO_NOTE_MAX; i++) { + AG.notes[i].sub_track = nullptr; + AG.notes[i].enabled = FALSE; + } + + for (i = 0; i < AUDIO_GROUP_MAX; i++) { + AG.groups_p[i] = &AG.groups[i]; + __InitGroup(&AG.groups[i]); + } + + grp = &AG.main_group; + __InitGroup(grp); + + subtrack = &AG.main_sub; + subtrack->group = grp; + subtrack->enabled = FALSE; + for (i = 0; i < ARRAY_COUNT(subtrack->note_layers); i++) { + subtrack->note_layers[i] = nullptr; + } + Nas_InitSubTrack(&AG.main_sub); + + grp->subtracks[0] = &AG.main_sub; + grp->seq_id = 0xFF; + grp->bank_id = 0xFF; + grp->seq_data = BDB_SEQDATA; + grp->macro_player.pc = BDB_SEQDATA; + grp->macro_player.depth = 0; + grp->delay = 0; + grp->flags.enabled = TRUE; + grp->flags.finished = FALSE; + grp->skip_ticks = 0; +} From f33dca5074194587e55e120694c4e49b53528a4a Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Fri, 21 Jun 2024 10:17:51 -0400 Subject: [PATCH 032/234] Add player request union members --- include/m_player.h | 631 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 623 insertions(+), 8 deletions(-) diff --git a/include/m_player.h b/include/m_player.h index d8d2c40c..f2422d5b 100644 --- a/include/m_player.h +++ b/include/m_player.h @@ -508,6 +508,451 @@ enum { mPlayer_BED_ACTION_NUM }; +typedef struct player_request_return_demo_s { + int prev_main_index; + f32 time; +} mPlayer_request_return_demo_c; + +typedef struct player_request_wait_s { + f32 morph_speed; + f32 _04; + int flags; +} mPlayer_request_wait_c; + +typedef struct player_request_talk_s { + ACTOR* talk_actor; + int turn_flag; + f32 morph_speed; + int umbrella_flag; +} mPlayer_request_talk_c; + +typedef struct player_request_hold_s { + int ftr_no; + s16 angle_y; + xyz_t player_pos; + f32 morph_speed; + int flags; +} mPlayer_request_hold_c; + +typedef struct player_request_recieve_wait_s { + ACTOR* talk_actor; + int turn_flag; + int prev_main_index; + mActor_name_t item; + int on_surface_flag; +} mPlayer_request_recieve_wait_c; + +typedef struct player_request_give_s { + ACTOR* talk_actor; + int turn_flag; + int prev_main_index; + mActor_name_t item; + int mode; + int present_flag; + int on_surface_flag; +} mPlayer_request_give_c; + +typedef struct player_request_sitdown_s { + s16 angle; + xyz_t pos; + int ftrID; +} mPlayer_request_sitdown_c; + +typedef struct player_request_close_funriture_s { + int anim_idx; +} mPlayer_request_close_furniture_c; + +typedef struct player_request_lie_bed_s { + int direct; + s16 angle; + xyz_t wpos; + int ftr_name; +} mPlayer_request_lie_bed_c; + +typedef struct player_request_door_s { + s16 angle_y; + xyz_t player_pos; + int type; + u32 label; +} mPlayer_request_door_c; + +typedef struct player_request_outdoor_s { + int type; + int is_start_demo; +} mPlayer_request_outdoor_c; + +typedef struct player_request_demo_wait_s { + int umbrella_flag; + int _04; +} mPlayer_request_demo_wait_c; + +typedef struct player_request_demo_walk_s { + f32 goal_pos_x; + f32 goal_pos_z; + f32 speed; + int _0C; +} mPlayer_request_demo_walk_c; + +typedef struct player_request_demo_geton_train_s { + s16 angle_y; + xyz_t player_pos; +} mPlayer_request_demo_geton_train_c; + +typedef struct player_request_demo_getoff_train_s { + s16 angle_y; + xyz_t player_pos; +} mPlayer_request_demo_getoff_train_c; + +typedef struct player_request_rotate_octagon_s { + ACTOR* talk_actor; + int turn_flag; + int prev_main_index; + xyz_t pos; + s16 angle_y; +} mPlayer_request_rotate_octagon_c; + +typedef struct player_request_wash_car_s { + xyz_t car_pos; + xyz_t orig_pos; + s16 orig_angle_y; + ACTOR* parent_actor; +} mPlayer_request_wash_car_c; + +typedef struct player_request_throw_money_s { + xyz_t pos; + s16 angle_y; +} mPlayer_request_throw_money_c; + +typedef struct player_request_pray_s { + xyz_t pos; + s16 angle_y; +} mPlayer_request_pray_c; + +typedef struct player_request_mail_jump_s { + xyz_t pos; + s16 angle_y; +} mPlayer_request_mail_jump_c; + +typedef struct player_request_shock_s { + f32 timer; + s16 target_angle_y; + u8 bee_chase_bgm_flag; + int axe_broke_flag; +} mPlayer_request_shock_c; + +typedef struct player_request_push_snowball_s { + u32 type; + int wade_type; +} mPlayer_request_push_snowball_c; + +typedef struct player_request_stung_mosquito_s { + u32 label; +} mPlayer_request_stung_mosquito_c; + +typedef struct player_request_switch_on_lighthouse_s { + s16 angle_y; + xyz_t pos; +} mPlayer_request_switch_on_lighthouse_c; + +typedef struct player_request_demo_geton_boat_s { + xyz_t pos; + s16 angle_y; +} mPlayer_request_demo_geton_boat_c; + +typedef struct player_request_demo_getoff_boat_standup_s { + xyz_t pos; + s16 angle_y; +} mPlayer_request_demo_getoff_boat_standup_c; + +typedef struct player_request_demo_get_golden_item_s { + u32 label; +} mPlayer_request_demo_get_golden_item_c; + +// + +typedef struct player_request_walk_s { + xyz_t pos; + f32 morph_speed; + int flags; +} mPlayer_request_walk_c; + +typedef struct player_request_run_s { + f32 morph_speed; + int flags; +} mPlayer_request_run_c; + +typedef struct player_request_dash_s { + f32 morph_speed; + int flags; +} mPlayer_request_dash_c; + +typedef struct player_request_turn_dash_s { + s16 target_angle_y; +} mPlayer_request_turn_dash_c; + +typedef struct player_request_fall_s { + f32 morph_speed; + int flags; +} mPlayer_request_fall_c; + +typedef struct player_request_wade_s { + int dir; +} mPlayer_request_wade_c; + +typedef struct player_request_wade_snowball_s { + int dir; + xyz_t pos; + u32 label; +} mPlayer_request_wade_snowball_c; + +typedef struct player_request_push_s { + int ftrNo; + s16 angle_y; + xyz_t player_pos; +} mPlayer_request_push_c; + +typedef struct player_request_pull_s { + int ftrNo; + s16 angle_y; + xyz_t start_pos; + xyz_t end_pos; + xyz_t ofs; +} mPlayer_request_pull_c; + +typedef struct player_request_rotate_furniture_s { + int ftrNo; + s16 angle_y; + xyz_t player_pos; + int rotate_type; +} mPlayer_request_rotate_furniture_c; + +typedef struct player_request_wait_open_furniture_s { + int anim_idx; +} mPlayer_request_wait_open_furniture_c; + +typedef struct player_request_wait_close_furniture_s { + int anim_idx; +} mPlayer_request_wait_close_furniture_c; + +typedef struct player_request_roll_bed_s { + int move_dir; +} mPlayer_request_roll_bed_c; + +typedef struct player_request_standup_bed_s { + int move_dir; +} mPlayer_request_standup_bed_c; + +typedef struct player_request_pickup_s { + int inv_slot; + mActor_name_t item; + xyz_t end_pos; + xyz_t start_pos; + int flag; +} mPlayer_request_pickup_c; + +typedef struct player_request_pickup_jump_s { + int inv_slot; + mActor_name_t item; + xyz_t start_pos; + int flag; +} mPlayer_request_pickup_jump_c; + +typedef struct player_request_pickup_furniture_s { + int inv_slot; + mActor_name_t item; + xyz_t start_pos; +} mPlayer_request_pickup_furniture_c; + +typedef struct player_request_pickup_exchange_s { + xyz_t end_pos; + mActor_name_t item; +} mPlayer_request_pickup_exchange_c; + +typedef struct player_request_sitdown_wait_s { + int ftrID; +} mPlayer_request_sitdown_wait_c; + +typedef struct player_request_standup_s { + int ftrID; +} mPlayer_request_standup_c; + +typedef struct player_request_swing_axe_s { + xyz_t goal_pos; + mActor_name_t hit_item; + u16 axe_damage_no; + int hit_ut_x; + int hit_ut_z; + int break_flag; +} mPlayer_request_swing_axe_c; + +typedef struct player_request_reflect_axe_s { + xyz_t goal_pos; + mActor_name_t hit_item; + u16 axe_damage_no; + ACTOR* hit_actor; + int _14; + int break_flag; +} mPlayer_request_reflect_axe_c; + +typedef struct player_request_notice_net_s { + int _00; +} mPlayer_request_notice_net_c; + +typedef struct player_request_putaway_net_s { + int _00; +} mPlayer_request_putaway_net_c; + +typedef struct player_request_cast_rod_s { + xyz_t bobber_target_pos; +} mPlayer_request_cast_rod_c; + +typedef struct player_request_notice_rod_s { + s16 angle_y; +} mPlayer_request_notice_rod_c; + +typedef struct player_request_putaway_rod_s { + s16 angle_y; + int _04; +} mPlayer_request_putaway_rod_c; + +typedef struct player_request_dig_scoop_s { + xyz_t dig_pos; + mActor_name_t item; +} mPlayer_request_dig_scoop_c; + +typedef struct player_request_fill_scoop_s { + xyz_t dig_pos; +} mPlayer_request_fill_scoop_c; + +typedef struct player_request_reflect_scoop_s { + xyz_t dig_pos; + mActor_name_t item; + ACTOR* hit_actor; +} mPlayer_request_reflect_scoop_c; + +typedef struct player_request_putin_scoop_s { + xyz_t dig_pos; + mActor_name_t item; + int _10; +} mPlayer_request_putin_scoop_c; + +typedef struct player_request_putaway_scoop_s { + xyz_t dig_pos; + mActor_name_t item; + int _10; +} mPlayer_request_putaway_scoop_c; + +typedef struct player_request_get_scoop_s { + xyz_t dig_pos; + mActor_name_t item; +} mPlayer_request_get_scoop_c; + +typedef struct player_request_recieve_stretch_s { + ACTOR* talk_actor; + int turn_flag; + int prev_main_index; + mActor_name_t item; + int on_surface_flag; +} mPlayer_request_recieve_stretch_c; + +typedef struct player_request_recieve_s { + ACTOR* talk_actor; + int turn_flag; + int prev_main_index; + mActor_name_t item; + int on_surface_flag; +} mPlayer_request_recieve_c; + +typedef struct player_request_recieve_putaway_s { + ACTOR* talk_actor; + int turn_flag; + int prev_main_index; + mActor_name_t item; + int on_surface_flag; +} mPlayer_request_recieve_putaway_c; + +typedef struct player_request_give_wait_s { + ACTOR* talk_actor; + int turn_flag; + int prev_main_index; + mActor_name_t item; + int on_surface_flag; // TODO: verify this flag is correct +} mPlayer_request_give_wait_c; + +typedef struct player_request_demo_wade_s { + int dir; +} mPlayer_request_demo_wade_c; + +typedef struct player_request_release_creature_gyoei_s { + s16 angle_y; + s16 _02; +} mPlayer_request_release_creature_gyoei_c; + +typedef struct player_request_release_creature_insect_s { + xyz_t pos; + int type; +} mPlayer_request_release_creature_insect_c; + +typedef struct player_request_release_creature_balloon_s { + int _00; +} mPlayer_request_release_creature_balloon_c; + +typedef union { + mPlayer_request_release_creature_gyoei_c gyoei; + mPlayer_request_release_creature_insect_c insect; + mPlayer_request_release_creature_balloon_c balloon; +} mPlayer_request_release_creature_u; + +typedef struct player_request_release_creature_s { + int type; + mPlayer_request_release_creature_u data; + ACTOR* actor; +} mPlayer_request_release_creature_c; + +typedef struct player_request_shake_tree_s { + xyz_t pos; + mActor_name_t item; + int ut_x; + int ut_z; +} mPlayer_request_shake_tree_c; + +typedef struct player_request_ready_pitfall_s { + xyz_t pos; +} mPlayer_request_ready_pitfall_c; + +typedef struct player_request_remove_grass_s { + xyz_t start_pos; + xyz_t end_pos; +} mPlayer_request_remove_grass_c; + +typedef struct player_request_change_cloth_s { + ACTOR* talk_actor; + int turn_flag; + int prev_main_index; + mActor_name_t cloth_item; + u16 cloth_idx; + int _10; +} mPlayer_request_change_cloth_c; + +typedef struct player_request_swing_fan_s { + int anim_idx; +} mPlayer_request_swing_fan_c; + +typedef struct player_request_radio_exercise_s { + int anim_idx; + f32 morph_speed; +} mPlayer_request_radio_exercise_c; + +typedef struct player_request_demo_geton_boat_wade_s { + int dir; + f32 speed; // TODO: check this +} mPlayer_request_demo_geton_boat_wade_c; + +typedef struct player_request_demo_getoff_boat_s { + xyz_t pos; + s16 angle_y; +} mPlayer_request_demo_getoff_boat_c; + typedef struct player_request_give_from_submenu_s { xyz_t unused; // assumed based on size mActor_name_t item; @@ -547,12 +992,106 @@ typedef struct { ACTOR* speak_actor; } mPlayer_request_demo_wait_from_submenu_c; -typedef struct { - int direct; - s16 angle; - xyz_t wpos; - int ftr_name; -} mPlayer_request_lie_bed_c; +typedef union { + mPlayer_request_give_from_submenu_c give_from_submenu; + mPlayer_request_putin_scoop_from_submenu_data_c putin_scoop_from_submenu; + mPlayer_request_release_creature_gyoei_from_submenu_c release_creature_gyoei_from_submenu; + mPlayer_request_release_creature_insect_from_submenu_c release_creature_insect_from_submenu; + mPlayer_request_release_creature_balloon_from_submenu_c release_creature_balloon_from_submenu; + mPlayer_request_demo_wait_from_submenu_c demo_wait_from_submenu; + mPlayer_request_return_demo_c return_demo; + mPlayer_request_wait_c wait; + mPlayer_request_talk_c talk; + mPlayer_request_hold_c hold; + mPlayer_request_recieve_wait_c recieve_wait; + mPlayer_request_give_c give; + mPlayer_request_sitdown_c sitdown; + mPlayer_request_close_furniture_c close_furniture; + mPlayer_request_lie_bed_c lie_bed; + mPlayer_request_door_c door; + mPlayer_request_outdoor_c outdoor; + mPlayer_request_demo_wait_c demo_wait; + mPlayer_request_demo_walk_c demo_walk; + mPlayer_request_demo_geton_train_c demo_geton_train; + mPlayer_request_demo_getoff_train_c demo_getoff_train; + mPlayer_request_rotate_octagon_c rotate_octagon; + mPlayer_request_wash_car_c wash_car; + mPlayer_request_throw_money_c throw_money; + mPlayer_request_pray_c pray; + mPlayer_request_mail_jump_c mail_jump; + mPlayer_request_shock_c shock; + mPlayer_request_push_snowball_c push_snowball; + mPlayer_request_stung_mosquito_c stung_mosquito; + mPlayer_request_switch_on_lighthouse_c switch_on_lighthouse; + mPlayer_request_demo_geton_boat_c demo_geton_boat; + mPlayer_request_demo_getoff_boat_standup_c demo_getoff_boat_standup; + mPlayer_request_demo_get_golden_item_c demo_get_golden_item; + mPlayer_request_walk_c walk; + mPlayer_request_run_c run; + mPlayer_request_dash_c dash; + mPlayer_request_turn_dash_c turn_dash; + mPlayer_request_fall_c fall; + mPlayer_request_wade_c wade; + mPlayer_request_wade_snowball_c wade_snowball; + mPlayer_request_push_c push; + mPlayer_request_pull_c pull; + mPlayer_request_rotate_furniture_c rotate_furniture; + mPlayer_request_wait_open_furniture_c wait_open_furniture; + mPlayer_request_wait_close_furniture_c wait_close_furniture; + mPlayer_request_roll_bed_c roll_bed; + mPlayer_request_standup_bed_c standup_bed; + mPlayer_request_pickup_c pickup; + mPlayer_request_pickup_jump_c pickup_jump; + mPlayer_request_pickup_furniture_c pickup_furniture; + mPlayer_request_pickup_exchange_c pickup_exchange; + mPlayer_request_sitdown_wait_c sitdown_wait; + mPlayer_request_standup_c standup; + mPlayer_request_swing_axe_c swing_axe; + mPlayer_request_reflect_axe_c reflect_axe; + mPlayer_request_notice_net_c notice_net; + mPlayer_request_putaway_net_c putaway_net; + mPlayer_request_cast_rod_c cast_rod; + mPlayer_request_notice_rod_c notice_rod; + mPlayer_request_putaway_rod_c putaway_rod; + mPlayer_request_dig_scoop_c dig_scoop; + mPlayer_request_fill_scoop_c fill_scoop; + mPlayer_request_reflect_scoop_c reflect_scoop; + mPlayer_request_putin_scoop_c putin_scoop; + mPlayer_request_putaway_scoop_c putaway_scoop; + mPlayer_request_get_scoop_c get_scoop; + mPlayer_request_recieve_stretch_c recieve_stretch; + mPlayer_request_recieve_c recieve; + mPlayer_request_recieve_putaway_c recieve_putaway; + mPlayer_request_give_wait_c give_wait; + mPlayer_request_demo_wade_c demo_wade; + mPlayer_request_release_creature_c release_creature; + mPlayer_request_shake_tree_c shake_tree; + mPlayer_request_ready_pitfall_c ready_pitfall; + mPlayer_request_remove_grass_c remove_grass; + mPlayer_request_change_cloth_c change_cloth; + mPlayer_request_swing_fan_c swing_fan; + mPlayer_request_radio_exercise_c radio_exercise; + mPlayer_request_demo_geton_boat_wade_c demo_geton_boat_wade; + mPlayer_request_demo_getoff_boat_c demo_getoff_boat; + u64 align; // TODO: is this necessary? it makes the size correct for this and mPlayer_request_main_data +} mPlayer_request_backup_u; + +typedef struct player_request_takeout_item_s { + mPlayer_request_backup_u request_data; + int request_main_index; +} mPlayer_request_takeout_item_c; + +typedef struct player_request_putin_item_s { + mPlayer_request_backup_u request_data; + int request_main_index; +} mPlayer_request_putin_item_c; + +typedef struct player_request_knock_door_s { + mPlayer_request_backup_u request_data; + int request_main_index; + xyz_t pos; + s16 angle_y; +} mPlayer_request_knock_door_c; typedef union { mPlayer_request_give_from_submenu_c give_from_submenu; @@ -561,9 +1100,85 @@ typedef union { mPlayer_request_release_creature_insect_from_submenu_c release_creature_insect_from_submenu; mPlayer_request_release_creature_balloon_from_submenu_c release_creature_balloon_from_submenu; mPlayer_request_demo_wait_from_submenu_c demo_wait_from_submenu; + mPlayer_request_return_demo_c return_demo; + mPlayer_request_wait_c wait; + mPlayer_request_talk_c talk; + mPlayer_request_hold_c hold; + mPlayer_request_recieve_wait_c recieve_wait; + mPlayer_request_give_c give; + mPlayer_request_sitdown_c sitdown; + mPlayer_request_close_furniture_c close_furniture; mPlayer_request_lie_bed_c lie_bed; - /* TODO: others */ - u8 force_size[72]; // TEMP + mPlayer_request_door_c door; + mPlayer_request_outdoor_c outdoor; + mPlayer_request_demo_wait_c demo_wait; + mPlayer_request_demo_walk_c demo_walk; + mPlayer_request_demo_geton_train_c demo_geton_train; + mPlayer_request_demo_getoff_train_c demo_getoff_train; + mPlayer_request_rotate_octagon_c rotate_octagon; + mPlayer_request_wash_car_c wash_car; + mPlayer_request_throw_money_c throw_money; + mPlayer_request_pray_c pray; + mPlayer_request_mail_jump_c mail_jump; + mPlayer_request_shock_c shock; + mPlayer_request_push_snowball_c push_snowball; + mPlayer_request_stung_mosquito_c stung_mosquito; + mPlayer_request_switch_on_lighthouse_c switch_on_lighthouse; + mPlayer_request_demo_geton_boat_c demo_geton_boat; + mPlayer_request_demo_getoff_boat_standup_c demo_getoff_boat_standup; + mPlayer_request_demo_get_golden_item_c demo_get_golden_item; + mPlayer_request_walk_c walk; + mPlayer_request_run_c run; + mPlayer_request_dash_c dash; + mPlayer_request_turn_dash_c turn_dash; + mPlayer_request_fall_c fall; + mPlayer_request_wade_c wade; + mPlayer_request_wade_snowball_c wade_snowball; + mPlayer_request_push_c push; + mPlayer_request_pull_c pull; + mPlayer_request_rotate_furniture_c rotate_furniture; + mPlayer_request_wait_open_furniture_c wait_open_furniture; + mPlayer_request_wait_close_furniture_c wait_close_furniture; + mPlayer_request_roll_bed_c roll_bed; + mPlayer_request_standup_bed_c standup_bed; + mPlayer_request_pickup_c pickup; + mPlayer_request_pickup_jump_c pickup_jump; + mPlayer_request_pickup_furniture_c pickup_furniture; + mPlayer_request_pickup_exchange_c pickup_exchange; + mPlayer_request_sitdown_wait_c sitdown_wait; + mPlayer_request_standup_c standup; + mPlayer_request_swing_axe_c swing_axe; + mPlayer_request_reflect_axe_c reflect_axe; + mPlayer_request_notice_net_c notice_net; + mPlayer_request_putaway_net_c putaway_net; + mPlayer_request_cast_rod_c cast_rod; + mPlayer_request_notice_rod_c notice_rod; + mPlayer_request_putaway_rod_c putaway_rod; + mPlayer_request_dig_scoop_c dig_scoop; + mPlayer_request_fill_scoop_c fill_scoop; + mPlayer_request_reflect_scoop_c reflect_scoop; + mPlayer_request_putin_scoop_c putin_scoop; + mPlayer_request_putaway_scoop_c putaway_scoop; + mPlayer_request_get_scoop_c get_scoop; + mPlayer_request_recieve_stretch_c recieve_stretch; + mPlayer_request_recieve_c recieve; + mPlayer_request_recieve_putaway_c recieve_putaway; + mPlayer_request_give_wait_c give_wait; + mPlayer_request_demo_wade_c demo_wade; + mPlayer_request_release_creature_c release_creature; + mPlayer_request_shake_tree_c shake_tree; + mPlayer_request_ready_pitfall_c ready_pitfall; + mPlayer_request_remove_grass_c remove_grass; + mPlayer_request_change_cloth_c change_cloth; + mPlayer_request_swing_fan_c swing_fan; + mPlayer_request_radio_exercise_c radio_exercise; + mPlayer_request_demo_geton_boat_wade_c demo_geton_boat_wade; + mPlayer_request_demo_getoff_boat_c demo_getoff_boat; + mPlayer_request_takeout_item_c takeout_item; + mPlayer_request_putin_item_c putin_item; + mPlayer_request_knock_door_c knock_door; + /* TODO: others? */ + // u8 force_size[72]; // TEMP } mPlayer_request_main_data; typedef struct { From 77b27f0ea23ac150931b2080def9c1f5690748a1 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Tue, 25 Jun 2024 22:51:14 -0400 Subject: [PATCH 033/234] Implement & link ac_intro_demo --- config/rel_slices.yml | 5 + include/ac_boat_demo.h | 93 +++++----- include/ac_intro_demo.h | 35 ++-- include/ac_train1.h | 9 +- include/audio_defs.h | 110 +++++++++++- include/m_collision_bg.h | 1 + include/m_common_data.h | 2 +- include/m_demo.h | 192 ++++++++++---------- include/m_event.h | 2 + include/m_player.h | 54 +++++- include/m_player_lib.h | 3 + src/ac_boat_demo.c | 54 +++--- src/ac_haniwa_move.c_inc | 2 +- src/ac_intro_demo.c | 96 ++++++++++ src/ac_intro_demo_move.c_inc | 331 +++++++++++++++++++++++++++++++++++ src/ac_my_house_move.c_inc | 6 +- src/ac_my_room.c | 14 +- src/ac_my_room_move.c_inc | 2 +- 18 files changed, 806 insertions(+), 205 deletions(-) create mode 100644 src/ac_intro_demo.c create mode 100644 src/ac_intro_demo_move.c_inc diff --git a/config/rel_slices.yml b/config/rel_slices.yml index 1445f1fe..ed713397 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -445,6 +445,11 @@ ac_haniwa.c: .text: [0x80427624, 0x80428F64] .rodata: [0x806440B8, 0x806440F8] .data: [0x80683D08, 0x80683E98] +ac_intro_demo.c: + .text: [0x8042A97C, 0x8042B65C] + .rodata: [0x80644128, 0x80644158] + .data: [0x80684208, 0x806842E0] + .bss: [0x812F9C50, 0x812F9C60] ac_mbg.c: .text: [0x8042DCA0, 0x8042DEC8] .rodata: [0x80644218, 0x80644238] diff --git a/include/ac_boat_demo.h b/include/ac_boat_demo.h index 9f2a6885..8ef8c672 100644 --- a/include/ac_boat_demo.h +++ b/include/ac_boat_demo.h @@ -17,65 +17,65 @@ extern "C" { #define aBTD_PROGRAM_SIZE 0x15244 enum { - aBTD_ACTION_SENDO_BIRTH_WAIT, - aBTD_ACTION_PL_RIDE_ON_START_WAIT, - aBTD_ACTION_PL_RIDE_ON_END_WAIT, - aBTD_ACTION_START_CALL_END_WAIT, - aBTD_ACTION_SONG_BGM_START_WAIT, - aBTD_ACTION_SING_SENDO_START_WAIT, - aBTD_ACTION_SING_SENDO_MSG_SET_WAIT, - aBTD_ACTION_SENDO_DIALOGUE_START_WAIT, - aBTD_ACTION_SING_SENDO_START_WAIT2, - aBTD_ACTION_MOVE_BOAT_END_WAIT, - aBTD_ACTION_TOUCH_WHARF_END_WAIT, - aBTD_ACTION_PL_RIDE_OFF_START_WAIT, - aBTD_ACTION_PL_RIDE_OFF_END_WAIT, - aBTD_ACTION_ANCHOR_WAIT, + aBTD_ACTION_SENDO_BIRTH_WAIT, + aBTD_ACTION_PL_RIDE_ON_START_WAIT, + aBTD_ACTION_PL_RIDE_ON_END_WAIT, + aBTD_ACTION_START_CALL_END_WAIT, + aBTD_ACTION_SONG_BGM_START_WAIT, + aBTD_ACTION_SING_SENDO_START_WAIT, + aBTD_ACTION_SING_SENDO_MSG_SET_WAIT, + aBTD_ACTION_SENDO_DIALOGUE_START_WAIT, + aBTD_ACTION_SING_SENDO_START_WAIT2, + aBTD_ACTION_MOVE_BOAT_END_WAIT, + aBTD_ACTION_TOUCH_WHARF_END_WAIT, + aBTD_ACTION_PL_RIDE_OFF_START_WAIT, + aBTD_ACTION_PL_RIDE_OFF_END_WAIT, + aBTD_ACTION_ANCHOR_WAIT, - aBTD_ACTION_NUM + aBTD_ACTION_NUM }; enum { - aBTD_DEMO_PL_RIDE_ON_START, - aBTD_DEMO_PL_RIDE_ON_END, - aBTD_DEMO_START_CALL_END, - aBTD_DEMO_MOVE_BOAT_END, - aBTD_DEMO_TOUCH_WHARF_END, - aBTD_DEMO_PL_RIDE_OFF_START, - aBTD_DEMO_PL_RIDE_OFF_END, - aBTD_DEMO_ANCHOR, + aBTD_DEMO_PL_RIDE_ON_START, + aBTD_DEMO_PL_RIDE_ON_END, + aBTD_DEMO_START_CALL_END, + aBTD_DEMO_MOVE_BOAT_END, + aBTD_DEMO_TOUCH_WHARF_END, + aBTD_DEMO_PL_RIDE_OFF_START, + aBTD_DEMO_PL_RIDE_OFF_END, + aBTD_DEMO_ANCHOR, - aBTD_DEMO_NUM + aBTD_DEMO_NUM }; typedef struct boat_demo_s BOAT_DEMO_ACTOR; -#define aBTD_GET_DEMO_ACTOR() (BOAT_DEMO_ACTOR*)(Common_Get(clip).demo_clip2->class) +#define aBTD_GET_DEMO_ACTOR() (BOAT_DEMO_ACTOR*)(Common_Get(clip).demo_clip2->demo_class) typedef void (*aBTD_PROC)(BOAT_DEMO_ACTOR*, GAME_PLAY*); struct boat_demo_s { - ACTOR actor_class; - int action; - aBTD_PROC action_proc; - int demo_act; - int song_bgm_timer; - BOAT_ACTOR* boat_actor; - NPC_SENDO_ACTOR* npc_sendo_actor; - EV_CASTAWAY_ACTOR* castaway_actor; - int at_island; - xyz_t passenger_ofs; - f32 boat_speed; - int island_npc_info_registered; - u8* island_gba_loader_p; - u8* island_gba_program_p; - u8 player_pattern; - u8 sing_dialog_ofs; - u8 sing_2nd_part; - u8 sing_2nd_part_bgm_no; - int sing_msg_no; - u16 touch_wharf_timer; - u8 touching_wharf; + ACTOR actor_class; + int action; + aBTD_PROC action_proc; + int demo_act; + int song_bgm_timer; + BOAT_ACTOR* boat_actor; + NPC_SENDO_ACTOR* npc_sendo_actor; + EV_CASTAWAY_ACTOR* castaway_actor; + int at_island; + xyz_t passenger_ofs; + f32 boat_speed; + int island_npc_info_registered; + u8* island_gba_loader_p; + u8* island_gba_program_p; + u8 player_pattern; + u8 sing_dialog_ofs; + u8 sing_2nd_part; + u8 sing_2nd_part_bgm_no; + int sing_msg_no; + u16 touch_wharf_timer; + u8 touching_wharf; }; extern ACTOR_PROFILE Boat_Demo_Profile; @@ -85,4 +85,3 @@ extern ACTOR_PROFILE Boat_Demo_Profile; #endif #endif - diff --git a/include/ac_intro_demo.h b/include/ac_intro_demo.h index c6ca0164..da49acbf 100644 --- a/include/ac_intro_demo.h +++ b/include/ac_intro_demo.h @@ -3,34 +3,47 @@ #include "types.h" #include "m_actor.h" +#include "ac_npc_rcn_guide.h" +#include "ac_npc_station_master.h" +#include "ac_train1.h" +#include "m_demo.h" #ifdef __cplusplus extern "C" { #endif +#define aID_PLR_START_X_POS (mFI_BK_WORLDSIZE_X_F * 3 + 1.25f * mFI_UT_WORLDSIZE_X_F) +#define aID_PLR_START_Z_POS (mFI_BK_WORLDSIZE_Z_F * 1 + 3 * mFI_UT_WORLDSIZE_Z_F) + +#define aID_OFF_UT_X_POS (mFI_BK_WORLDSIZE_X_F * 3 + 7 * mFI_UT_WORLDSIZE_X_F + mFI_UT_WORLDSIZE_HALF_X_F) +#define aID_OFF_UT_Z_POS (mFI_BK_WORLDSIZE_Z_F * 1 + 5 * mFI_UT_WORLDSIZE_Z_F) /* A @ 5 */ + +#define aID_OUT_OF_STATION_Z_POS (mFI_BK_WORLDSIZE_Z_F * 1 + 8.25f * mFI_UT_WORLDSIZE_Z_F) + enum { - aID_STATE_0, + aID_STATE_INITIAL, aID_STATE_TAKEN_HOUSE, aID_STATE_FREE_HOUSE, - // more? aID_STATE_NUM }; -typedef struct actor_intor_demo_s INTRO_DEMO_ACTOR; +typedef struct actor_intro_demo_s INTRO_DEMO_ACTOR; -struct actor_intor_demo_s { +typedef void (*aID_ACT_PROC)(INTRO_DEMO_ACTOR*, GAME_PLAY*); + +struct actor_intro_demo_s { ACTOR actor_class; int action; - int rcn_action; - void (*action_proc)(ACTOR*, GAME*); - void* train1_actor_p; // TODO: correct type - void* station_master_actor_p; // TODO: correct type - void* rcn_guide_actor_p; // TODO: correct type + int next_action; + aID_ACT_PROC action_proc; + TRAIN1_ACTOR* train1_actor_p; + ACTOR* station_master_actor_p; // TODO: correct type + ACTOR* rcn_guide_actor_p; // TODO: correct type int player_in_intro_demo; int player_intro_demo_state; - int selected_house; - int _198; + int house_idx; + int talk_flag; u8 first_field_bgm_state; int _1A0; int _1A4; diff --git a/include/ac_train1.h b/include/ac_train1.h index c90c33a4..a8f979c4 100644 --- a/include/ac_train1.h +++ b/include/ac_train1.h @@ -10,7 +10,7 @@ extern "C" { #endif -typedef struct train1_s{ +typedef struct train1_s { ACTOR actor_class; int anim_state; cKF_SkeletonInfo_R_c keyframe; @@ -20,13 +20,13 @@ typedef struct train1_s{ u8 pad4[0x2b4 - 0x2A0]; int tr_action; int player_pass_exists; - int player_pass_leaving; //Not sure about this one + int player_pass_leaving; // Not sure about this one int unk2c0; ACTOR* tr_actor_p; f32 tr_speed; f32 tr0_pos; - u8 pad2[0x2D8-0x2CC]; -}TRAIN1_ACTOR; + u8 pad2[0x2D8 - 0x2CC]; +} TRAIN1_ACTOR; extern ACTOR_PROFILE Train1_Profile; @@ -35,4 +35,3 @@ extern ACTOR_PROFILE Train1_Profile; #endif #endif - diff --git a/include/audio_defs.h b/include/audio_defs.h index 7872a54e..f49c1f1e 100644 --- a/include/audio_defs.h +++ b/include/audio_defs.h @@ -154,7 +154,115 @@ typedef enum audio_sound_effects { } AudioSE; typedef enum bgm_e { - BGM_AEROBICS = 27, + BGM_SILENCE, + BGM_FIELD_00, + BGM_FIELD_01, + BGM_FIELD_02, + BGM_FIELD_03, + BGM_FIELD_04, + BGM_FIELD_05, + BGM_FIELD_06, + BGM_FIELD_07, + BGM_FIELD_08, + BGM_FIELD_09, + BGM_FIELD_10, + BGM_FIELD_11, + BGM_FIELD_12, + BGM_FIELD_13, + BGM_FIELD_14, + BGM_FIELD_15, + BGM_FIELD_16, + BGM_FIELD_17, + BGM_FIELD_18, + BGM_FIELD_19, + BGM_FIELD_20, + BGM_FIELD_21, + BGM_FIELD_22, + BGM_FIELD_23, + BGM_BROKERS_SHOP, + BGM_FORTUNE_TELLER, + BGM_SPORTSFAIR_AEROBICS, + BGM_SPORTSFAIR_FOOTRACE, + BGM_SPORTSFAIR_BALLTOSS, + BGM_HARVEST_MOON, + BGM_NEW_YEARS_1HR, + BGM_NEW_YEARS_30MIN, + BGM_NEW_YEARS_10MIN, + BGM_NEW_YEARS_5MIN, + BGM_NEW_YEARS_NOW, + BGM_NEW_YEARS_DAY, + BGM_SHOP1, + BGM_SHOP2, + BGM_SHOP3, + BGM_DIG_ITEM, + BGM_POST_OFFICE0, + BGM_INTRO_TRAIN, + BGM_INTRO_KK, + BGM_SHOP0, + BGM_POLICE_BOX, + BGM_SAVE, + BGM_INTRO_ARRIVE, + BGM_INTRO_STATION, + BGM_INTRO_RCN_GUIDE, + BGM_INTRO_SELECT_HOUSE, + BGM_INTRO_SELECT_HOUSE2, + BGM_INTRO_FIND_SHOP, + BGM_INTRO_CHORES, + BGM_XMAS_EVE, + BGM_FIREWORKS_FESTIVAL, + BGM_CHERRY_BLOSSOM_FESTIVAL, + BGM_NEW_YEARS_PARTY, + BGM_KK_HAZURE0, + BGM_NEW_YEARS_WISH, + BGM_SPORTSFAIR_TUGOFWAR, + BGM_NEW_YEARS_MORNING, + BGM_POST_OFFICE1, + BGM_TRAIN_PULL_INTO_TOWN, + BGM_TRAIN_BOARD, + BGM_ENTER_HOUSE, + BGM_RESET, + BGM_BEE_CHASE, + BGM_BEE_STUNG, + BGM_RAIN, + BGM_TITLE, + BGM_TRAIN_ARRIVAL_WAIT, + BGM_INTRO_NEW_TOWN, + BGM_INTRO_CHORES_COMPLETE, + BGM_DEBT_PAID, + BGM_ALL_INSECTS, + BGM_ALL_FISH, + BGM_KAMAKURA, + BGM_RESET2, + BGM_SHOP0_LATE, + BGM_SHOP1_LATE, + BGM_SHOP2_LATE, + BGM_SHOP3_LATE, + BGM_NINTENDO0, + BGM_NINTENDO1, + BGM_NINTENDO2, + BGM_NINTENDO3, + BGM_NINTENDO4, + BGM_MUSEUM, + BGM_TAILORS, + BGM_90, + BGM_ISLAND, + BGM_KAPPA_SONG0, + BGM_KAPPA_SONG1, + BGM_KAPPA_SONG2, + BGM_KAPPA_SONG3, + BGM_KAPPA_SONG4, + BGM_KAPPA_SONG5, + BGM_KAPPA_SONG6, + BGM_KAPPA_SONG7, + BGM_KAPPA_SONG8, + BGM_KAPPA_SONG9, + BGM_KAPPA_SONG10, + BGM_KAPPA_SONG11, + BGM_KAPPA_SONG12, + BGM_KAPPA_SONG13, + BGM_KAPPA_SONG14, + BGM_KAPPA_SONG15, + // TODO: others BGM_MD0 = 128, } BGM_e; diff --git a/include/m_collision_bg.h b/include/m_collision_bg.h index 3c4b3e6d..81840748 100644 --- a/include/m_collision_bg.h +++ b/include/m_collision_bg.h @@ -297,6 +297,7 @@ extern void mCoBG_InitBlockBgCheckMode(); extern void mCoBG_InitDecalCircle(); extern void mCoBG_CalcTimerDecalCircle(); +extern int mCoBG_ChangeBlockBgCheckMode(int mode); extern f32 mCoBG_GetWaterHeight_File(xyz_t wpos, char* file, int line); #define mCoBG_GetWaterHeight(wpos) mCoBG_GetWaterHeight_File(wpos, __FILE__, __LINE__) diff --git a/include/m_common_data.h b/include/m_common_data.h index 4718ff49..43a32fb7 100644 --- a/include/m_common_data.h +++ b/include/m_common_data.h @@ -243,7 +243,7 @@ typedef struct common_data_s { /* 0x028598 */ int event_keep_flags[4]; /* 0x0285A8 */ u8 _285A8[0x0285BE - 0x0285A8]; /* 0x0285BE */ s8 player_actor_exists; - /* 0x0285BF */ s8 payment_completed_type; + /* 0x0285BF */ s8 complete_payment_type; /* 0x0285C0 */ s8 player_decoy_flag; /* 0x0285C1 */ u8 _285C1; /* 0x0285C2 */ u8 make_npc2_actor; diff --git a/include/m_demo.h b/include/m_demo.h index 2747d3df..0262c1de 100644 --- a/include/m_demo.h +++ b/include/m_demo.h @@ -24,142 +24,142 @@ extern "C" { #define mDemo_WINDOW_COLOR_A 255 enum { - mDemo_STATE_WAIT, - mDemo_STATE_READY, - mDemo_STATE_RUN, - // ??? - mDemo_STATE_STOP = 9, + mDemo_STATE_WAIT, + mDemo_STATE_READY, + mDemo_STATE_RUN, + // ??? + mDemo_STATE_STOP = 9, - mDemo_STATE_NUM + mDemo_STATE_NUM }; enum { - mDemo_DIRECT_N, - mDemo_DIRECT_NE, - mDemo_DIRECT_E, - mDemo_DIRECT_SE, - mDemo_DIRECT_S, - mDemo_DIRECT_SW, - mDemo_DIRECT_W, - mDemo_DIRECT_NW, + mDemo_DIRECT_N, + mDemo_DIRECT_NE, + mDemo_DIRECT_E, + mDemo_DIRECT_SE, + mDemo_DIRECT_S, + mDemo_DIRECT_SW, + mDemo_DIRECT_W, + mDemo_DIRECT_NW, - mDemo_DIRECT_NUM + mDemo_DIRECT_NUM }; enum demo_type { - mDemo_TYPE_NONE, - mDemo_TYPE_SCROLL, - mDemo_TYPE_2, - mDemo_TYPE_DOOR, - mDemo_TYPE_4, - mDemo_TYPE_SCROLL2, - mDemo_TYPE_DOOR2, - mDemo_TYPE_TALK, - mDemo_TYPE_SPEAK, - mDemo_TYPE_REPORT, - mDemo_TYPE_SPEECH, - mDemo_TYPE_OUTDOOR, - mDemo_TYPE_12, - mDemo_TYPE_EVENTMSG, - mDemo_TYPE_EVENTMSG2, - mDemo_TYPE_15, - mDemo_TYPE_SCROLL3, + mDemo_TYPE_NONE, + mDemo_TYPE_SCROLL, + mDemo_TYPE_2, + mDemo_TYPE_DOOR, + mDemo_TYPE_4, + mDemo_TYPE_SCROLL2, + mDemo_TYPE_DOOR2, + mDemo_TYPE_TALK, + mDemo_TYPE_SPEAK, + mDemo_TYPE_REPORT, + mDemo_TYPE_SPEECH, + mDemo_TYPE_OUTDOOR, + mDemo_TYPE_12, + mDemo_TYPE_EVENTMSG, + mDemo_TYPE_EVENTMSG2, + mDemo_TYPE_15, + mDemo_TYPE_SCROLL3, - mDemo_TYPE_NUM + mDemo_TYPE_NUM }; enum demo_order_type { - mDemo_ORDER_PLAYER, - mDemo_ORDER_1, - mDemo_ORDER_2, - mDemo_ORDER_3, - mDemo_ORDER_NPC0, - mDemo_ORDER_NPC1, - mDemo_ORDER_NPC2, - mDemo_ORDER_7, - mDemo_ORDER_8, - mDemo_ORDER_QUEST, + mDemo_ORDER_PLAYER, + mDemo_ORDER_1, + mDemo_ORDER_2, + mDemo_ORDER_3, + mDemo_ORDER_NPC0, + mDemo_ORDER_NPC1, + mDemo_ORDER_NPC2, + mDemo_ORDER_7, + mDemo_ORDER_8, + mDemo_ORDER_QUEST, - mDemo_ORDER_NUM + mDemo_ORDER_NUM }; typedef void (*mDemo_REQUEST_PROC)(ACTOR*); typedef struct demo_clip_s { - void* class; - int type; /* 0 = none?, 1 = intro_demo, 2 = ride_off_demo */ + void* demo_class; + int type; /* 0 = none?, 1 = intro_demo, 2 = ride_off_demo */ } mDemo_Clip_c; enum demo_clip_type { - mDemo_CLIP_TYPE_NONE, - mDemo_CLIP_TYPE_INTRO_DEMO, - mDemo_CLIP_TYPE_RIDE_OFF_DEMO, - mDemo_CLIP_TYPE_PRESENT_DEMO, - mDemo_CLIP_TYPE_BOAT_DEMO, - mDemo_CLIP_TYPE_RESET_DEMO, + mDemo_CLIP_TYPE_NONE, + mDemo_CLIP_TYPE_INTRO_DEMO, + mDemo_CLIP_TYPE_RIDE_OFF_DEMO, + mDemo_CLIP_TYPE_PRESENT_DEMO, + mDemo_CLIP_TYPE_BOAT_DEMO, + mDemo_CLIP_TYPE_RESET_DEMO, - mDemo_CLIP_TYPE_NUM + mDemo_CLIP_TYPE_NUM }; typedef struct demo_req_s { - ACTOR* actor; - int type; - mDemo_REQUEST_PROC proc; - f32 talk_weight; + ACTOR* actor; + int type; + mDemo_REQUEST_PROC proc; + f32 talk_weight; } mDemo_Request_c; typedef struct demo_door_data_s { - int type; + int type; - struct { - f32 size; - int direct; - } house_info; + struct { + f32 size; + int direct; + } house_info; } mDemo_door_data_c; typedef struct demo_emsg_data_s { - int msg_no; - rgba_t window_color; - int msg_delay_timer; - int scene_delay_timer; - Door_data_c door_data; - u8 _24[4]; // unused? + int msg_no; + rgba_t window_color; + int msg_delay_timer; + int scene_delay_timer; + Door_data_c door_data; + u8 _24[4]; // unused? } mDemo_emsg_data_c; typedef struct demo_talk_data_s { - int msg_no; - int turn; - int use_zoom_sound; - int display_name; - int change_player; - int return_get_golden_axe_demo; - int return_demo_wait; - rgba_t window_color; - u8 actor_saved_weight; + int msg_no; + int turn; + int use_zoom_sound; + int display_name; + int change_player; + int return_get_golden_axe_demo; + int return_demo_wait; + rgba_t window_color; + u8 actor_saved_weight; } mDemo_talk_data_c; typedef struct demo_data_s { - ACTOR* speaker_actor; - ACTOR* listen_actor; - int speaker_able; - int listen_able; - u16 order_data[mDemo_ORDER_NUM][mDemo_ORDER_VALUE_MAX]; - s8 change_player_destiny; - int state; - mDemo_Request_c current; - mDemo_Request_c request[mDemo_REQUEST_NUM]; - int request_num; - int priority_type; - int camera_type; - int keep_camera_type; + ACTOR* speaker_actor; + ACTOR* listen_actor; + int speaker_able; + int listen_able; + u16 order_data[mDemo_ORDER_NUM][mDemo_ORDER_VALUE_MAX]; + s8 change_player_destiny; + int state; + mDemo_Request_c current; + mDemo_Request_c request[mDemo_REQUEST_NUM]; + int request_num; + int priority_type; + int camera_type; + int keep_camera_type; - union { - mDemo_door_data_c door; - mDemo_emsg_data_c emsg; - mDemo_talk_data_c talk; - } data; + union { + mDemo_door_data_c door; + mDemo_emsg_data_c emsg; + mDemo_talk_data_c talk; + } data; - mDemo_Request_c request_save; + mDemo_Request_c request_save; } mDemo_Data_c; extern ACTOR* mDemo_Get_talk_actor(); diff --git a/include/m_event.h b/include/m_event.h index 09cca249..bdcbe859 100644 --- a/include/m_event.h +++ b/include/m_event.h @@ -571,7 +571,9 @@ typedef struct event_common_save_data { extern void mEv_clear_status(int event, s16 status); extern int mEv_CheckFirstJob(); +extern void mEv_UnSetFirstJob(); extern int mEv_CheckFirstIntro(); +extern void mEv_UnSetFirstIntro(); extern int mEv_CheckArbeit(); extern int mEv_CheckTitleDemo(); extern int mEv_check_status(int event, s16 status); diff --git a/include/m_player.h b/include/m_player.h index f2422d5b..1cb16ff9 100644 --- a/include/m_player.h +++ b/include/m_player.h @@ -11,6 +11,12 @@ extern "C" { #endif +#define mPlayer_DEBT0 17400 /* Buy house */ +#define mPlayer_DEBT1 148000 /* 1st upgrade main floor */ +#define mPlayer_DEBT2 398000 /* 2nd upgrade main floor */ +#define mPlayer_DEBT3 49800 /* Basement */ +#define mPlayer_DEBT4 798000 /* Upper floor */ + typedef struct player_actor_s PLAYER_ACTOR; #define mPlayer_FORCE_POSITION_ANGLE_NONE 0 @@ -33,6 +39,14 @@ enum { mPlayer_ADDRESSABLE_NUM }; +enum { + mPlayer_COMPLETE_PAYMENT_TYPE_NONE, + mPlayer_COMPLETE_PAYMENT_TYPE_ARBEIT, + mPlayer_COMPLETE_PAYMENT_TYPE_HOUSE, + + mPlayer_COMPLETE_PAYMENT_TYPE_NUM +}; + enum { mPlayer_INDEX_DMA, mPlayer_INDEX_INTRO, @@ -668,8 +682,6 @@ typedef struct player_request_demo_get_golden_item_s { u32 label; } mPlayer_request_demo_get_golden_item_c; -// - typedef struct player_request_walk_s { xyz_t pos; f32 morph_speed; @@ -1181,6 +1193,38 @@ typedef union { // u8 force_size[72]; // TEMP } mPlayer_request_main_data; +/* Current main state data structs */ + +typedef struct player_main_intro_s { + f32 timer; +} mPlayer_main_intro_c; + +typedef struct player_main_return_demo_s { + f32 timer; + f32 max_timer; + int prev_main_index; +} mPlayer_main_return_demo_c; + +typedef struct player_main_return_outdoor_s { + f32 timer; + f32 max_timer; + int prev_main_index; +} mPlayer_main_return_outdoor_c; + +typedef struct player_main_return_outdoor2_s { + f32 timer; + f32 max_timer; + int prev_main_index; +} mPlayer_main_return_outdoor2_c; + +typedef union { + mPlayer_main_intro_c intro; + mPlayer_main_return_demo_c return_demo; + mPlayer_main_return_outdoor_c return_outdoor; + mPlayer_main_return_outdoor2_c return_outdoor2; + u8 force_size[72]; // TEMP +} mPlayer_main_data; + typedef struct { int requested_main_index; int requested_index_pending; @@ -1212,9 +1256,9 @@ struct player_actor_s { /* 0x0D0C */ int requested_main_index_priority; /* 0x0D10 */ int requested_main_index_changed; /* 0x0D14 */ int settled_requested_main_index_priority; - /* 0x0D18 */ u8 main_index_data[72]; // TODO: Union of many types... - /* 0x0D60 */ u8 requested_main_index_data[72]; // TODO: Union of many types... - /* 0x0DA8 */ u8 _0DA8[0x1010 - 0x0DA8]; /* TODO: finish */ + /* 0x0D18 */ mPlayer_main_data main_data; // TODO: Union of many types... + /* 0x0D60 */ mPlayer_request_main_data requested_main_index_data; // Union of many types... + /* 0x0DA8 */ u8 _0DA8[0x1010 - 0x0DA8]; /* TODO: finish */ /* 0x1010 */ ClObjPipe_c col_pipe; /* 0x102C */ xyz_t head_pos; /* 0x1038 */ xyz_t feel_pos; diff --git a/include/m_player_lib.h b/include/m_player_lib.h index c5ad6a6d..2b884b06 100644 --- a/include/m_player_lib.h +++ b/include/m_player_lib.h @@ -97,6 +97,9 @@ extern u8* mPlib_get_player_tex_p(GAME* game); extern u16* mPlib_get_player_pallet_p(GAME* game); extern u16* mPlib_get_player_face_pallet_p(GAME* game); extern int mPlib_Check_scoop_after(GAME* game, xyz_t* pos, mActor_name_t* item, ACTOR** hit_actor, int gold_shovel); +extern int mPlib_request_main_demo_standing_train_type1(GAME* game); +extern void mPlib_Set_unable_wade(int unable); +extern int mPlib_request_main_demo_getoff_train_type1(GAME* game); extern mPlayer_change_data_from_submenu_c* mPlib_Get_change_data_from_submenu_p(); diff --git a/src/ac_boat_demo.c b/src/ac_boat_demo.c index f742ab32..26c700ae 100644 --- a/src/ac_boat_demo.c +++ b/src/ac_boat_demo.c @@ -15,17 +15,17 @@ static void aBTD_actor_dt(ACTOR* actorx, GAME* game); static void aBTD_actor_move(ACTOR* actorx, GAME* game); ACTOR_PROFILE Boat_Demo_Profile = { - mAc_PROFILE_BOAT_DEMO, - ACTOR_PART_CONTROL, - ACTOR_STATE_CAN_MOVE_IN_DEMO_SCENES | ACTOR_STATE_NO_MOVE_WHILE_CULLED, - EMPTY_NO, - ACTOR_OBJ_BANK_KEEP, - sizeof(BOAT_DEMO_ACTOR), - &aBTD_actor_ct, - &aBTD_actor_dt, - &aBTD_actor_move, - mActor_NONE_PROC1, - NULL + mAc_PROFILE_BOAT_DEMO, + ACTOR_PART_CONTROL, + ACTOR_STATE_CAN_MOVE_IN_DEMO_SCENES | ACTOR_STATE_NO_MOVE_WHILE_CULLED, + EMPTY_NO, + ACTOR_OBJ_BANK_KEEP, + sizeof(BOAT_DEMO_ACTOR), + &aBTD_actor_ct, + &aBTD_actor_dt, + &aBTD_actor_move, + mActor_NONE_PROC1, + NULL, }; static mDemo_Clip_c aBTD_clip; @@ -46,28 +46,28 @@ extern u8 aBTD_island_ldr[]; static void aBTD_setupAction(BOAT_DEMO_ACTOR* boat_demo, GAME_PLAY* play, int action); static void aBTD_actor_ct(ACTOR* actorx, GAME* game) { - BOAT_DEMO_ACTOR* boat_demo = (BOAT_DEMO_ACTOR*)actorx; - GAME_PLAY* play = (GAME_PLAY*)game; + BOAT_DEMO_ACTOR* boat_demo = (BOAT_DEMO_ACTOR*)actorx; + GAME_PLAY* play = (GAME_PLAY*)game; - Common_Get(clip).demo_clip2 = &aBTD_clip; - bzero(&aBTD_clip, sizeof(aBTD_clip)); - Common_Get(clip).demo_clip2->class = boat_demo; - Common_Get(clip).demo_clip2->type = mDemo_CLIP_TYPE_BOAT_DEMO; - boat_demo->island_gba_loader_p = aBTD_island_ldr; - boat_demo->island_gba_program_p = aBTD_island_prg; + Common_Get(clip).demo_clip2 = &aBTD_clip; + bzero(&aBTD_clip, sizeof(aBTD_clip)); + Common_Get(clip).demo_clip2->demo_class = boat_demo; + Common_Get(clip).demo_clip2->type = mDemo_CLIP_TYPE_BOAT_DEMO; + boat_demo->island_gba_loader_p = aBTD_island_ldr; + boat_demo->island_gba_program_p = aBTD_island_prg; - if (mFI_CheckBlockKind(play->block_table.block_x, play->block_table.block_z, mRF_BLOCKKIND_ISLAND) == TRUE) { - boat_demo->at_island = TRUE; - boat_demo->island_npc_info_registered = TRUE; - } + if (mFI_CheckBlockKind(play->block_table.block_x, play->block_table.block_z, mRF_BLOCKKIND_ISLAND) == TRUE) { + boat_demo->at_island = TRUE; + boat_demo->island_npc_info_registered = TRUE; + } - aBTD_setupAction(boat_demo, play, aBTD_ACTION_SENDO_BIRTH_WAIT); + aBTD_setupAction(boat_demo, play, aBTD_ACTION_SENDO_BIRTH_WAIT); } static void aBTD_actor_dt(ACTOR* actorx, GAME* game) { - if (Common_Get(clip).demo_clip2 != NULL) { - Common_Get(clip).demo_clip2 = NULL; - } + if (Common_Get(clip).demo_clip2 != NULL) { + Common_Get(clip).demo_clip2 = NULL; + } } #include "../src/ac_boat_demo_move.c_inc" diff --git a/src/ac_haniwa_move.c_inc b/src/ac_haniwa_move.c_inc index 5b9d94fc..d307efa5 100644 --- a/src/ac_haniwa_move.c_inc +++ b/src/ac_haniwa_move.c_inc @@ -108,7 +108,7 @@ static int aHNW_check_house_door(ACTOR* actor, GAME* game) { mDemo_Clip_c* demo_clip = Common_Get(clip).demo_clip; if (demo_clip != NULL) { - INTRO_DEMO_ACTOR* demo_class = (INTRO_DEMO_ACTOR*)demo_clip->class; + INTRO_DEMO_ACTOR* demo_class = (INTRO_DEMO_ACTOR*)demo_clip->demo_class; if (demo_class != NULL && demo_clip->type == mDemo_CLIP_TYPE_INTRO_DEMO && mEv_CheckFirstIntro() && demo_class->player_intro_demo_state != 0) { res = TRUE; diff --git a/src/ac_intro_demo.c b/src/ac_intro_demo.c new file mode 100644 index 00000000..59da20b7 --- /dev/null +++ b/src/ac_intro_demo.c @@ -0,0 +1,96 @@ +#include "ac_intro_demo.h" + +#include "m_name_table.h" +#include "m_common_data.h" +#include "libultra/libultra.h" +#include "m_event.h" +#include "m_play.h" +#include "m_bgm.h" +#include "m_player_lib.h" +#include "m_house.h" + +enum { + aID_ACT_FIRST_SET, + aID_ACT_TRAIN_BIRTH_WAIT, + aID_ACT_RIDE_TRAIN, + aID_ACT_RIDE_OFF_PLAYER, + aID_ACT_WALK_ONE_UNIT, + aID_ACT_GO_OUT_OF_STATION, + aID_ACT_BIRTH_RCN_GUIDE, + aID_ACT_FIRST_TALK_END_WAIT, + aID_ACT_WALK_AFTER_RCN_GUIDE, + aID_ACT_IN_HOUSE, + aID_ACT_DECIDE_HOUSE, + aID_ACT_RETIRE_RCN_GUIDE_WAIT, + aID_ACT_FIRST_JOB, + + aID_ACT_NUM +}; + +static void aID_actor_ct(ACTOR* actorx, GAME* game); +static void aID_actor_dt(ACTOR* actorx, GAME* game); +static void aID_actor_move(ACTOR* actorx, GAME* game); + +// clang-format off +ACTOR_PROFILE Intro_Demo_Profile = { + mAc_PROFILE_INTRO_DEMO, + ACTOR_PART_CONTROL, + ACTOR_STATE_CAN_MOVE_IN_DEMO_SCENES | ACTOR_STATE_NO_MOVE_WHILE_CULLED, + EMPTY_NO, + ACTOR_OBJ_BANK_KEEP, + sizeof(INTRO_DEMO_ACTOR), + &aID_actor_ct, + &aID_actor_dt, + &aID_actor_move, + mActor_NONE_PROC1, + NULL, +}; +// clang-format on + +static mDemo_Clip_c aID_clip; + +static void aID_setupAction(INTRO_DEMO_ACTOR* intro_demo, GAME_PLAY* play, int action); + +static void aID_actor_ct(ACTOR* actorx, GAME* game) { + INTRO_DEMO_ACTOR* intro_demo = (INTRO_DEMO_ACTOR*)actorx; + GAME_PLAY* play = (GAME_PLAY*)game; + + Common_Get(clip).demo_clip = &aID_clip; + bzero(&aID_clip, sizeof(aID_clip)); + Common_Get(clip).demo_clip->demo_class = actorx; + Common_Get(clip).demo_clip->type = mDemo_CLIP_TYPE_INTRO_DEMO; + + if (mEv_CheckFirstIntro() == TRUE) { + if (Common_Get(field_type) == mFI_FIELDTYPE_FG) { + switch (mFI_GET_TYPE(Common_Get(last_field_id))) { + case mFI_FIELD_PLAYER0_ROOM: + intro_demo->_1A4 = TRUE; + intro_demo->next_action = aID_ACT_DECIDE_HOUSE; + aID_setupAction(intro_demo, play, aID_ACT_BIRTH_RCN_GUIDE); + mBGMPsComp_make_ps_demo(BGM_INTRO_STATION, 0x168); + break; + default: + aID_setupAction(intro_demo, play, 0); + break; + } + } else { + aID_setupAction(intro_demo, play, aID_ACT_IN_HOUSE); + } + } else { + aID_setupAction(intro_demo, play, aID_ACT_FIRST_JOB); + } +} + +static void aID_actor_dt(ACTOR* actorx, GAME* game) { + INTRO_DEMO_ACTOR* intro_demo = (INTRO_DEMO_ACTOR*)actorx; + + if (Common_Get(clip).demo_clip != NULL) { + Common_Get(clip).demo_clip = NULL; + } + + if (intro_demo->first_field_bgm_state == 2) { + mBGMPsComp_delete_ps_fieldSuddenEv(BGM_INTRO_SELECT_HOUSE2, 0x168); + } +} + +#include "../src/ac_intro_demo_move.c_inc" diff --git a/src/ac_intro_demo_move.c_inc b/src/ac_intro_demo_move.c_inc new file mode 100644 index 00000000..efa097ac --- /dev/null +++ b/src/ac_intro_demo_move.c_inc @@ -0,0 +1,331 @@ +static void aID_change_player_demo_standing_train(GAME* game) { + if (mPlib_get_player_actor_main_index(game) != mPlayer_INDEX_DEMO_STANDING_TRAIN) { + mPlib_request_main_demo_standing_train_type1(game); + } +} + +static void aID_set_first_field_bgm(INTRO_DEMO_ACTOR* intro_demo) { + mBGMPsComp_make_ps_fieldSuddenEv(BGM_INTRO_SELECT_HOUSE2, 0x168, 1); + mBGMPsComp_scene_mode(1); + intro_demo->first_field_bgm_state = 2; +} + +static void aID_check_set_first_field_bgm(INTRO_DEMO_ACTOR* intro_demo) { + if (intro_demo->first_field_bgm_state == 1 && sAdo_BgmFadeoutCheck() == TRUE) { + aID_set_first_field_bgm(intro_demo); + } +} + +static void aID_first_set(INTRO_DEMO_ACTOR* intro_demo, GAME_PLAY* play) { + Common_Set(train_coming_flag, 3); + aID_change_player_demo_standing_train(&play->game); + aID_setupAction(intro_demo, play, aID_ACT_TRAIN_BIRTH_WAIT); +} + +static void aID_train_birth_wait(INTRO_DEMO_ACTOR* intro_demo, GAME_PLAY* play) { + TRAIN1_ACTOR* train = (TRAIN1_ACTOR*)Actor_info_fgName_search(&play->actor_info, TRAIN1, ACTOR_PART_ITEM); + + aID_change_player_demo_standing_train(&play->game); + if (train != NULL) { + intro_demo->train1_actor_p = train; + train->player_pass_exists = TRUE; + aID_setupAction(intro_demo, play, aID_ACT_RIDE_TRAIN); + } +} + +static void aID_ride_train(INTRO_DEMO_ACTOR* intro_demo, GAME_PLAY* play) { + TRAIN1_ACTOR* train = intro_demo->train1_actor_p; + + aID_change_player_demo_standing_train(&play->game); + if (train->tr_action == 5) { + aID_setupAction(intro_demo, play, aID_ACT_RIDE_OFF_PLAYER); + } +} + +static void aID_ride_off_player(INTRO_DEMO_ACTOR* intro_demo, GAME_PLAY* play) { + ACTOR* station_master = intro_demo->station_master_actor_p; + + if (intro_demo->_1A0 == 0) { + /* Wait for the station master to speak to the player */ + if (mDemo_Check(mDemo_TYPE_SPEAK, station_master) == TRUE) { + intro_demo->_1A0 = 1; + } + } else { + /* Wait for the station master to be done speaking to the player */ + if (mDemo_Check(mDemo_TYPE_SPEAK, station_master) == FALSE) { + aID_setupAction(intro_demo, play, aID_ACT_WALK_ONE_UNIT); + } + } +} + +static void aID_walk_one_unit(INTRO_DEMO_ACTOR* intro_demo, GAME_PLAY* play) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR(play); + + if (player != NULL) { + if (player->actor_class.world.position.z >= aID_OFF_UT_Z_POS) { + /* Reached target position */ + aID_setupAction(intro_demo, play, aID_ACT_GO_OUT_OF_STATION); + } else { + /* Walk to A-3 @ 5Z, 7.5X */ + mPlib_Set_goal_player_demo_walk(aID_OFF_UT_X_POS, aID_OFF_UT_Z_POS, 2.5f); + } + } +} + +static void aID_go_out_of_station(INTRO_DEMO_ACTOR* intro_demo, GAME_PLAY* play) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR(play); + + if (player != NULL) { + if (player->actor_class.world.position.z >= aID_OUT_OF_STATION_Z_POS) { + mPlib_request_main_demo_wait_type1(&play->game, 0, NULL); + intro_demo->next_action = aID_ACT_FIRST_TALK_END_WAIT; + aID_setupAction(intro_demo, play, aID_ACT_BIRTH_RCN_GUIDE); + } + } +} + +static void aID_birth_rcn_guide(INTRO_DEMO_ACTOR* intro_demo, GAME_PLAY* play) { + static mActor_name_t rcn_name[] = { SP_NPC_RCN_GUIDE, SP_NPC_RCN_GUIDE_1, SP_NPC_RCN_GUIDE_2, SP_NPC_RCN_GUIDE_3 }; + static int restart_ux[] = { 6, 9, 6, 9 }; + static int restart_uz[] = { 5, 5, 12, 12 }; + static f32 restartOffsetX[] = { 10.0f, -10.0f, 10.0f, -10.0f }; + mActor_name_t name = rcn_name[mSP_GetShopLevel()]; + int type; + int data; + int ux; + int uz; + f32 ofsX; + f32 ofsZ; + s16 param; + int house_idx; + ACTOR* rcn_actor; + + if (intro_demo->_1A4 == TRUE) { + house_idx = Common_Get(last_field_id) - mFI_FIELD_PLAYER0_ROOM; + intro_demo->house_idx = house_idx; + ux = restart_ux[house_idx]; + uz = restart_uz[house_idx]; + ofsX = restartOffsetX[house_idx]; + ofsZ = 8.0f; + if (mPr_NullCheckPersonalID(&Save_Get(homes[house_idx]).ownerID) == TRUE) { + param = aID_STATE_TAKEN_HOUSE; + } else { + param = aID_STATE_FREE_HOUSE; + } + data = 3; + type = 2; + } else { + data = 3; + type = 1; + ux = 8; + uz = 15; + ofsX = 0.0f; + ofsZ = 0.0f; + param = aID_STATE_INITIAL; + } + + if (Common_Get(clip).npc_clip->setupActor_proc(play, name, -1, -1, param, data, type, ux, uz) == TRUE) { + rcn_actor = Actor_info_fgName_search(&play->actor_info, name, ACTOR_PART_NPC); + intro_demo->rcn_guide_actor_p = rcn_actor; + rcn_actor->world.position.x += ofsX; + rcn_actor->world.position.z += ofsZ; + aID_setupAction(intro_demo, play, intro_demo->next_action); + } +} + +static void aID_first_talk_end_wait(INTRO_DEMO_ACTOR* intro_demo, GAME_PLAY* play) { + if (intro_demo->talk_flag == TRUE) { + intro_demo->talk_flag = FALSE; + aID_setupAction(intro_demo, play, aID_ACT_WALK_AFTER_RCN_GUIDE); + } +} + +static void aID_walk_after_rcn_guide(INTRO_DEMO_ACTOR* intro_demo, GAME_PLAY* play) { + static f32 rate_table[] = { 1.0f, 0.6f }; + NPC_ACTOR* rcn_guide = (NPC_ACTOR*)intro_demo->rcn_guide_actor_p; + f32 rate = rate_table[rcn_guide->actor_class.player_distance_xz < 80.0f] * rcn_guide->actor_class.speed; + + /* Walk the player to the raccoon guide NPC's position */ + mPlib_Set_goal_player_demo_walk(rcn_guide->actor_class.world.position.x, rcn_guide->actor_class.world.position.z, + rate); + + /* If we've finished our action then stop walking and move on */ + if (((NPC_ACTOR*)intro_demo->rcn_guide_actor_p)->action.idx == 0) { + mPlib_request_main_wait_type3(&play->game); + aID_setupAction(intro_demo, play, aID_ACT_DECIDE_HOUSE); + } +} + +static void aID_decide_house(INTRO_DEMO_ACTOR* intro_demo, GAME_PLAY* play) { + if (intro_demo->talk_flag == TRUE) { + aID_setupAction(intro_demo, play, aID_ACT_RETIRE_RCN_GUIDE_WAIT); + } +} + +static void aID_retire_rcn_guide_wait(INTRO_DEMO_ACTOR* intro_demo, GAME_PLAY* play) { + mQst_errand_c* errand; + + if (intro_demo->rcn_guide_actor_p == NULL) { + mPlib_request_main_wait_type3(&play->game); + mHS_set_use(Common_Get(player_no), intro_demo->house_idx); + + mPr_SetItemCollectBit(Now_Private->cloth.item); + mPr_SetItemCollectBit(FTR_TAPEDECK); + mPr_SetItemCollectBit(ITM_CARPET_START + + Save_Get(homes[intro_demo->house_idx]).floors[0].wall_floor.flooring_idx); + mPr_SetItemCollectBit(ITM_WALL_START + + Save_Get(homes[intro_demo->house_idx]).floors[0].wall_floor.wallpaper_idx); + + mHm_SetNowHome(); + mPlib_Set_unable_wade(FALSE); + mCoBG_ChangeBlockBgCheckMode(0); + mEv_UnSetFirstIntro(); + Now_Private->inventory.loan = mPlayer_DEBT0; + errand = mQst_GetFirstJobData(); + mQst_SetFirstJobStart(errand); + aID_setupAction(intro_demo, play, aID_ACT_FIRST_JOB); + } + + aID_check_set_first_field_bgm(intro_demo); +} + +static void aID_first_job(INTRO_DEMO_ACTOR* intro_demo, GAME_PLAY* play) { + if (intro_demo->_1A8 == TRUE) { + mQst_errand_c* errand = mQst_GetFirstJobData(); + + mQst_ClearErrand(errand, 1); + mEv_UnSetFirstJob(); + mTM_off_renew_time(1); + Actor_delete(&intro_demo->actor_class); + Common_Set(complete_payment_type, mPlayer_COMPLETE_PAYMENT_TYPE_ARBEIT); + play->event.day = 0; + } else { + aID_check_set_first_field_bgm(intro_demo); + } +} + +static void aID_first_set_init(INTRO_DEMO_ACTOR* intro_demo, GAME_PLAY* play) { + Actor_data* player_data = play->player_data; + + mBGMPsComp_make_ps_demo(BGM_INTRO_ARRIVE, 0x168); + mBGMPsComp_scene_mode(9); + player_data->position.x = aID_PLR_START_X_POS; + player_data->position.z = aID_PLR_START_Z_POS; +} + +static void aID_train_birth_wait_init(INTRO_DEMO_ACTOR* intro_demo, GAME_PLAY* play) { + xyz_t center_pos; + + center_pos.x = 2180.0f; + center_pos.z = 820.0f; + center_pos.y = mCoBG_GetBgY_OnlyCenter_FromWpos2(center_pos, -35.0f); + Camera2_request_main_demo_fromNowPos2(play, ¢er_pos, 0.0f, 0.0f, 0.0f, 9); +} + +static void aID_ride_off_player_init(INTRO_DEMO_ACTOR* intro_demo, GAME_PLAY* play) { + static xyz_t enter_pos = { 2180.0f, 0.0f, 820.0f }; + TRAIN1_ACTOR* train = intro_demo->train1_actor_p; + ACTOR* station_master = Actor_info_fgName_search(&play->actor_info, SP_NPC_STATION_MASTER, ACTOR_PART_NPC); + + intro_demo->station_master_actor_p = station_master; + train->player_pass_exists = FALSE; + mPlib_request_main_demo_getoff_train_type1(&play->game); + intro_demo->_1A0 = 0; + mCoBG_SetAttribute(enter_pos, mCoBG_ATTRIBUTE_STONE); +} + +static void aID_walk_one_unit_init(INTRO_DEMO_ACTOR* intro_demo, GAME_PLAY* play) { + mPlib_request_main_demo_walk_type1(&play->game, 2220.0f, 840.0f, 2.5f, 0); +} + +static void aID_go_out_of_station_init(INTRO_DEMO_ACTOR* intro_demo, GAME_PLAY* play) { + mPlib_request_main_wait_type3(&play->game); + Camera2_request_main_normal(play, 0, 9); +} + +static void aID_walk_after_rcn_guide_init(INTRO_DEMO_ACTOR* intro_demo, GAME_PLAY* play) { + ACTOR* rcn_guide = intro_demo->rcn_guide_actor_p; + + /* Walk the player to the raccoon guide NPC's position */ + mPlib_request_main_demo_walk_type1(&play->game, rcn_guide->world.position.x, rcn_guide->world.position.z, + rcn_guide->speed * 0.6f, 0); +} + +static void aID_decide_house_init(INTRO_DEMO_ACTOR* intro_demo, GAME_PLAY* play) { + mPlib_Set_unable_wade(TRUE); /* We can't switch acres */ + mCoBG_ChangeBlockBgCheckMode(1); /* Acre BG check mode altered */ +} + +static void aID_retire_rcn_guide_wait_init(INTRO_DEMO_ACTOR* intro_demo, GAME_PLAY* play) { + mPlib_request_main_demo_wait_type1(&play->game, 0, NULL); + mBGMPsComp_delete_ps_demo(BGM_INTRO_SELECT_HOUSE, 0x168); + mBGMPsComp_make_ps_fc_quiet(0x2D0); + intro_demo->first_field_bgm_state = 1; +} + +static void aID_first_job_init(INTRO_DEMO_ACTOR* intro_demo, GAME_PLAY* play) { + mQst_errand_c* errand = mQst_GetFirstJobData(); + + if (errand->base.quest_kind == mQst_ERRAND_FIRSTJOB_CHANGE_CLOTH || + errand->base.quest_kind == mQst_ERRAND_FIRSTJOB_START || + (errand->base.quest_kind == mQst_ERRAND_FIRSTJOB_PLANT_FLOWER && errand->base.progress == 1)) { + if (Common_Get(field_type) == mFI_FIELD_FG && intro_demo->first_field_bgm_state == 0) { + aID_set_first_field_bgm(intro_demo); + } + } +} + +typedef void (*aID_INIT_PROC)(INTRO_DEMO_ACTOR*, GAME_PLAY*); + +static void aID_init_proc(INTRO_DEMO_ACTOR* intro_demo, GAME_PLAY* play, int act) { + // clang-format off + static aID_INIT_PROC init_proc[] = { + &aID_first_set_init, + &aID_train_birth_wait_init, + (aID_INIT_PROC)&none_proc1, + &aID_ride_off_player_init, + &aID_walk_one_unit_init, + &aID_go_out_of_station_init, + (aID_INIT_PROC)&none_proc1, + (aID_INIT_PROC)&none_proc1, + &aID_walk_after_rcn_guide_init, + (aID_INIT_PROC)&none_proc1, + &aID_decide_house_init, + &aID_retire_rcn_guide_wait_init, + &aID_first_job_init, + }; + // clang-format on + + (*init_proc[act])(intro_demo, play); +} + +static void aID_setupAction(INTRO_DEMO_ACTOR* intro_demo, GAME_PLAY* play, int act) { + // clang-format off + static aID_ACT_PROC process[] = { + &aID_first_set, + &aID_train_birth_wait, + &aID_ride_train, + &aID_ride_off_player, + &aID_walk_one_unit, + &aID_go_out_of_station, + &aID_birth_rcn_guide, + &aID_first_talk_end_wait, + &aID_walk_after_rcn_guide, + (aID_ACT_PROC)&none_proc1, + &aID_decide_house, + &aID_retire_rcn_guide_wait, + &aID_first_job, + }; + // clang-format on + + intro_demo->action_proc = process[act]; + intro_demo->action = act; + aID_init_proc(intro_demo, play, act); +} + +static void aID_actor_move(ACTOR* actorx, GAME* game) { + INTRO_DEMO_ACTOR* intro_demo = (INTRO_DEMO_ACTOR*)actorx; + GAME_PLAY* play = (GAME_PLAY*)game; + + (*intro_demo->action_proc)(intro_demo, play); +} diff --git a/src/ac_my_house_move.c_inc b/src/ac_my_house_move.c_inc index c5e42c11..73d0fded 100644 --- a/src/ac_my_house_move.c_inc +++ b/src/ac_my_house_move.c_inc @@ -200,7 +200,7 @@ static int aMHS_check_player_in_intro_demo(STRUCTURE_ACTOR* my_house, GAME_PLAY* return 0; } - intro_demo = (INTRO_DEMO_ACTOR*)clip->class; + intro_demo = (INTRO_DEMO_ACTOR*)clip->demo_class; if (intro_demo == NULL || clip->type != mDemo_CLIP_TYPE_INTRO_DEMO || mEv_CheckFirstIntro() == FALSE) { return 0; } @@ -214,7 +214,7 @@ static int aMHS_check_player_in_intro_demo(STRUCTURE_ACTOR* my_house, GAME_PLAY* my_house->arg3_f = TRUE; action = my_house->action; - intro_demo->selected_house = action; + intro_demo->house_idx = action; intro_demo->player_intro_demo_state = mPr_NullCheckPersonalID(&Save_Get(homes[action]).ownerID) ? aID_STATE_TAKEN_HOUSE : aID_STATE_FREE_HOUSE; return 2; @@ -400,7 +400,7 @@ static void aMHS_open_door(STRUCTURE_ACTOR* my_house, GAME_PLAY* play) { aMHS_goto_next_pl_scene(play, my_house); if (Common_Get(clip).demo_clip != NULL && Common_Get(clip).demo_clip->type == mDemo_CLIP_TYPE_INTRO_DEMO) { - demo_class = Common_Get(clip).demo_clip->class; + demo_class = Common_Get(clip).demo_clip->demo_class; if (demo_class != NULL) { intro_demo = (INTRO_DEMO_ACTOR*)demo_class; diff --git a/src/ac_my_room.c b/src/ac_my_room.c index b9e98172..cf152b2d 100644 --- a/src/ac_my_room.c +++ b/src/ac_my_room.c @@ -1101,7 +1101,7 @@ static void aMR_MiniDiskCommonDt(FTR_ACTOR* ftr_actor, ACTOR* actorx) { my_room->bgm_info.last_md_no = -1; /* Don't delete for aerobics radio music */ - if (my_room->bgm_info.md_no != BGM_AEROBICS) { + if (my_room->bgm_info.md_no != BGM_SPORTSFAIR_AEROBICS) { mBGMPsComp_MDPlayerPos_delete(); } } @@ -1134,7 +1134,7 @@ static void aMR_ChangeMDBgm(ACTOR* actorx, FTR_ACTOR* ftr_actor) { if (my_room->bgm_info.md_no != -1) { mBGMPsComp_make_ps_room(my_room->bgm_info.md_no, 0); - if (my_room->bgm_info.md_no != BGM_AEROBICS) { + if (my_room->bgm_info.md_no != BGM_SPORTSFAIR_AEROBICS) { mBGMPsComp_MDPlayerPos_make(); } @@ -1150,12 +1150,12 @@ static void aMR_ChangeMDBgm(ACTOR* actorx, FTR_ACTOR* ftr_actor) { my_room->bgm_info.last_md_no = my_room->bgm_info.md_no; } else { mBGMPsComp_delete_ps_room(my_room->bgm_info.last_md_no, 0); - if (my_room->bgm_info.last_md_no != BGM_AEROBICS) { + if (my_room->bgm_info.last_md_no != BGM_SPORTSFAIR_AEROBICS) { mBGMPsComp_MDPlayerPos_delete(); } mBGMPsComp_make_ps_room(my_room->bgm_info.md_no, 0); - if (my_room->bgm_info.md_no != BGM_AEROBICS) { + if (my_room->bgm_info.md_no != BGM_SPORTSFAIR_AEROBICS) { mBGMPsComp_MDPlayerPos_make(); } @@ -2209,7 +2209,7 @@ extern mActor_name_t aMR_FurnitureFg_to_FurnitureFgWithDirect(mActor_name_t item extern void aMR_RadioCommonMove(FTR_ACTOR* ftr_actor, ACTOR* actorx) { if (ftr_actor->haniwa_state == 1) { - aMR_ReserveBgm(actorx, BGM_AEROBICS, ftr_actor, 0); + aMR_ReserveBgm(actorx, BGM_SPORTSFAIR_AEROBICS, ftr_actor, 0); ftr_actor->haniwa_state = 0; } else if (ftr_actor->switch_changed_flag) { if (ftr_actor->switch_bit == FALSE) { @@ -2219,7 +2219,7 @@ extern void aMR_RadioCommonMove(FTR_ACTOR* ftr_actor, ACTOR* actorx) { ftr_actor->switch_bit = FALSE; } else { aMR_OneMDSwitchOn_TheOtherSwitchOff(ftr_actor); - aMR_ReserveBgm(actorx, BGM_AEROBICS, ftr_actor, 0); + aMR_ReserveBgm(actorx, BGM_SPORTSFAIR_AEROBICS, ftr_actor, 0); aMR_ChangeMDBgm(actorx, ftr_actor); ftr_actor->switch_bit = TRUE; } @@ -2227,7 +2227,7 @@ extern void aMR_RadioCommonMove(FTR_ACTOR* ftr_actor, ACTOR* actorx) { } extern int aMR_RadioBgmNow(void) { - if (mBGMPsComp_execute_bgm_num_get() == BGM_AEROBICS) { + if (mBGMPsComp_execute_bgm_num_get() == BGM_SPORTSFAIR_AEROBICS) { return TRUE; } diff --git a/src/ac_my_room_move.c_inc b/src/ac_my_room_move.c_inc index 5e552eda..7a87261f 100644 --- a/src/ac_my_room_move.c_inc +++ b/src/ac_my_room_move.c_inc @@ -2885,7 +2885,7 @@ static void My_Room_Actor_move(ACTOR* actorx, GAME* game) { if (md_ftr_actor != NULL) { u16 md_angle = md_ftr_actor->s_angle_y; - if (my_room->bgm_info.md_no != BGM_AEROBICS) { + if (my_room->bgm_info.md_no != BGM_SPORTSFAIR_AEROBICS) { mBGMPsComp_MDPlayerPos_param_set(&md_ftr_actor->position, md_angle, aMR_Fname2ConpoIndex(md_ftr_actor->name), (u32)md_ftr_actor); } From 2469485be9416d95c7c75e92f3ce1a44d63eb7f0 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Thu, 27 Jun 2024 18:03:54 -0400 Subject: [PATCH 034/234] Implement & link ac_npc_rcn_guide --- config/rel_slices.yml | 4 + include/ac_intro_demo.h | 2 +- include/ac_npc.h | 634 +++++++++++++++------------- include/ac_npc_rcn_guide.h | 22 +- include/m_msg.h | 5 + include/m_player.h | 28 +- include/m_player_lib.h | 3 +- src/ac_br_shop_move.c_inc | 8 +- src/ac_buggy_move.c_inc | 14 +- src/ac_my_house_move.c_inc | 4 +- src/ac_npc_rcn_guide.c | 161 +++++++ src/ac_npc_rcn_guide_move.c_inc | 39 ++ src/ac_npc_rcn_guide_schedule.c_inc | 406 ++++++++++++++++++ src/ac_npc_rcn_guide_talk.c_inc | 170 ++++++++ src/ac_shop_move.c_inc | 2 +- 15 files changed, 1183 insertions(+), 319 deletions(-) create mode 100644 src/ac_npc_rcn_guide.c create mode 100644 src/ac_npc_rcn_guide_move.c_inc create mode 100644 src/ac_npc_rcn_guide_schedule.c_inc create mode 100644 src/ac_npc_rcn_guide_talk.c_inc diff --git a/config/rel_slices.yml b/config/rel_slices.yml index ed713397..ca0fa774 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -757,6 +757,10 @@ ac_npc_curator.c: ac_npc_engineer.c: .text: [0x80552984, 0x80552B5C] .data: [0x806A61C8, 0x806A6208] +ac_npc_rcn_guide.c: + .text: [0x8056EED0, 0x8056FFF0] + .rodata: [0x806499C0, 0x806499E8] + .data: [0x806BEE20, 0x806BF028] ac_npc_rtc.c: .text: [0x80573044, 0x80574134] .rodata: [0x80649A08, 0x80649A40] diff --git a/include/ac_intro_demo.h b/include/ac_intro_demo.h index da49acbf..42a71c8a 100644 --- a/include/ac_intro_demo.h +++ b/include/ac_intro_demo.h @@ -40,7 +40,7 @@ struct actor_intro_demo_s { TRAIN1_ACTOR* train1_actor_p; ACTOR* station_master_actor_p; // TODO: correct type ACTOR* rcn_guide_actor_p; // TODO: correct type - int player_in_intro_demo; + int player_in_house; int player_intro_demo_state; int house_idx; int talk_flag; diff --git a/include/ac_npc.h b/include/ac_npc.h index 039bed33..7b1534b4 100644 --- a/include/ac_npc.h +++ b/include/ac_npc.h @@ -27,40 +27,40 @@ extern "C" { typedef struct ac_npc_clip_s aNPC_Clip_c; typedef struct npc_draw_data_s { - s16 model_bank; - s16 texture_bank; - u8 _04[0x68]; // TODO + s16 model_bank; + s16 texture_bank; + u8 _04[0x68]; // TODO } aNPC_draw_data_c; enum { - aNPC_ATTENTION_TYPE_NONE, - aNPC_ATTENTION_TYPE_ACTOR, - aNPC_ATTENTION_TYPE_POSITION, + aNPC_ATTENTION_TYPE_NONE, + aNPC_ATTENTION_TYPE_ACTOR, + aNPC_ATTENTION_TYPE_POSITION, - aNPC_ATTENTION_TYPE_NUM -}; - -enum { - aNPC_THINK_WAIT, - aNPC_THINK_WANDER, - aNPC_THINK_WANDER2, - aNPC_THINK_GO_HOME, - aNPC_THINK_INTO_HOUSE, - aNPC_THINK_LEAVE_HOUSE, - aNPC_THINK_IN_BLOCK, - aNPC_THINK_PITFALL, - aNPC_THINK_SLEEP, - aNPC_THINK_SPECIAL, - - aNPC_THINK_NUM + aNPC_ATTENTION_TYPE_NUM }; enum { - aNPC_THINK_TYPE_INIT, - aNPC_THINK_TYPE_CHK_INTERRUPT, - aNPC_THINK_TYPE_MAIN, + aNPC_THINK_WAIT, + aNPC_THINK_WANDER, + aNPC_THINK_WANDER2, + aNPC_THINK_GO_HOME, + aNPC_THINK_INTO_HOUSE, + aNPC_THINK_LEAVE_HOUSE, + aNPC_THINK_IN_BLOCK, + aNPC_THINK_PITFALL, + aNPC_THINK_SLEEP, + aNPC_THINK_SPECIAL, - aNPC_THINK_TYPE_NUM + aNPC_THINK_NUM +}; + +enum { + aNPC_THINK_TYPE_INIT, + aNPC_THINK_TYPE_CHK_INTERRUPT, + aNPC_THINK_TYPE_MAIN, + + aNPC_THINK_TYPE_NUM }; typedef void (*aNPC_TALK_REQUEST_PROC)(ACTOR*, GAME*); @@ -68,13 +68,13 @@ typedef int (*aNPC_TALK_INIT_PROC)(ACTOR*, GAME*); typedef int (*aNPC_TALK_END_CHECK_PROC)(ACTOR*, GAME*); typedef struct npc_ct_data_s { - mActor_proc move_proc; - mActor_proc draw_proc; - int _08; - aNPC_TALK_REQUEST_PROC talk_request_proc; - aNPC_TALK_INIT_PROC talk_init_proc; - aNPC_TALK_END_CHECK_PROC talk_end_check_proc; - int _18; + mActor_proc move_proc; + mActor_proc draw_proc; + int _08; + aNPC_TALK_REQUEST_PROC talk_request_proc; + aNPC_TALK_INIT_PROC talk_init_proc; + aNPC_TALK_END_CHECK_PROC talk_end_check_proc; + int _18; } aNPC_ct_data_c; typedef int (*aNPC_SETUP_ACTOR_PROC)(GAME_PLAY*, mActor_name_t, s8, int, s16, int, int, int, int); @@ -101,115 +101,152 @@ typedef int (*aNPC_CLIP_THINK_PROC)(NPC_ACTOR*, GAME_PLAY*, int, int); typedef int (*aNPC_FORCE_CALL_REQ_PROC)(NPC_ACTOR*, int); struct ac_npc_clip_s { - /* 0x000 */ aNPC_SETUP_ACTOR_PROC setupActor_proc; - /* 0x004 */ void* _004; - /* 0x008 */ aNPC_FREE_OVERLAY_AREA_PROC free_overlay_area_proc; - /* 0x00C */ aNPC_GET_ACTOR_AREA_PROC get_actor_area_proc; - /* 0x010 */ aNPC_FREE_ACTOR_AREA_PROC free_actor_area_proc; - /* 0x014 */ aNPC_DMA_DRAW_DATA_PROC dma_draw_data_proc; - /* 0x018 */ aNPC_SET_ATTENTION_REQUEST_PROC set_attention_request_proc; - /* 0x01C */ void* _01C[(0x0CC - 0x01C) / sizeof(void*)]; - /* 0x0CC */ aNPC_BIRTH_CHECK_PROC birth_check_proc; - /* 0x0D0 */ aNPC_CT_PROC ct_proc; - /* 0x0D4 */ aNPC_DT_PROC dt_proc; - /* 0x0D8 */ aNPC_SAVE_PROC save_proc; - /* 0x0DC */ aNPC_INIT_PROC init_proc; - /* 0x0E0 */ aNPC_MOVE_PROC move_proc; - /* 0x0E4 */ aNPC_MOVE_BEFORE_PROC move_before_proc; - /* 0x0E8 */ aNPC_MOVE_AFTER_PROC move_after_proc; - /* 0x0EC */ void* _0EC; - /* 0x0F0 */ void* _0F0; - /* 0x0F4 */ aNPC_DRAW_PROC draw_proc; - /* 0x0F8 */ aNPC_REBUILD_DMA_PROC rebuild_dma_proc; - /* 0x0FC */ void* _0FC[(0x114 - 0x0FC) / sizeof(void*)]; - /* 0x114 */ aNPC_ANIMATION_INIT_PROC animation_init_proc; - /* 0x118 */ aNPC_CHG_SCHEDULE_PROC chg_schedule_proc; - /* 0x11C */ void* _11C; - /* 0x120 */ aNPC_CLIP_THINK_PROC think_proc; - /* 0x124 */ aNPC_FORCE_CALL_REQ_PROC force_call_req_proc; - /* 0x128 */ void* _128; + /* 0x000 */ aNPC_SETUP_ACTOR_PROC setupActor_proc; + /* 0x004 */ void* _004; + /* 0x008 */ aNPC_FREE_OVERLAY_AREA_PROC free_overlay_area_proc; + /* 0x00C */ aNPC_GET_ACTOR_AREA_PROC get_actor_area_proc; + /* 0x010 */ aNPC_FREE_ACTOR_AREA_PROC free_actor_area_proc; + /* 0x014 */ aNPC_DMA_DRAW_DATA_PROC dma_draw_data_proc; + /* 0x018 */ aNPC_SET_ATTENTION_REQUEST_PROC set_attention_request_proc; + /* 0x01C */ void* _01C[(0x0CC - 0x01C) / sizeof(void*)]; + /* 0x0CC */ aNPC_BIRTH_CHECK_PROC birth_check_proc; + /* 0x0D0 */ aNPC_CT_PROC ct_proc; + /* 0x0D4 */ aNPC_DT_PROC dt_proc; + /* 0x0D8 */ aNPC_SAVE_PROC save_proc; + /* 0x0DC */ aNPC_INIT_PROC init_proc; + /* 0x0E0 */ aNPC_MOVE_PROC move_proc; + /* 0x0E4 */ aNPC_MOVE_BEFORE_PROC move_before_proc; + /* 0x0E8 */ aNPC_MOVE_AFTER_PROC move_after_proc; + /* 0x0EC */ void* _0EC; + /* 0x0F0 */ void* _0F0; + /* 0x0F4 */ aNPC_DRAW_PROC draw_proc; + /* 0x0F8 */ aNPC_REBUILD_DMA_PROC rebuild_dma_proc; + /* 0x0FC */ void* _0FC[(0x114 - 0x0FC) / sizeof(void*)]; + /* 0x114 */ aNPC_ANIMATION_INIT_PROC animation_init_proc; + /* 0x118 */ aNPC_CHG_SCHEDULE_PROC chg_schedule_proc; + /* 0x11C */ void* _11C; + /* 0x120 */ aNPC_CLIP_THINK_PROC think_proc; + /* 0x124 */ aNPC_FORCE_CALL_REQ_PROC force_call_req_proc; + /* 0x128 */ void* _128; }; typedef struct npc_info_s { - Animal_c* animal; - mNpc_NpcList_c* list; - mNPS_schedule_c* schedule; - mNpc_EventNpc_c* event; - mNpc_MaskNpc_c* mask; - mActor_name_t npc_name; + Animal_c* animal; + mNpc_NpcList_c* list; + mNPS_schedule_c* schedule; + mNpc_EventNpc_c* event; + mNpc_MaskNpc_c* mask; + mActor_name_t npc_name; } NpcActorInfo_c; typedef struct npc_animation_s { - cKF_SkeletonInfo_R_c keyframe; - s_xyz work[27]; - s_xyz morph[27]; - int _1B4; - s8 animation_id; + cKF_SkeletonInfo_R_c keyframe; + s_xyz work[27]; + s_xyz morph[27]; + int _1B4; + s8 animation_id; } aNPC_ANIMATION_c; /* TODO: draw data */ typedef struct npc_draw_info_s { - /* 0x000 */ int main_animation_frame; - /* 0x004 */ int _04; // TODO: figure out where this is set - /* 0x008 */ int main_animation_frame_changed; - /* 0x00C */ int _08; // TODO: figure out where this is set - /* 0x010 */ int _0C; // TODO: figure out where this is set - /* 0x014 */ aNPC_ANIMATION_c main_animation; - /* 0x1D0 */ aNPC_ANIMATION_c sub_animation0; - /* 0x38C */ aNPC_ANIMATION_c sub_animation1; - /* 0x548 */ u8 _548[0x580 - 0x548]; - /* 0x580 */ int animation_id; - /* 0x584 */ int texture_bank_idx; - /* 0x588 */ u8 _588[0x5B9 - 0x588]; - /* 0x5B9 */ u8 _5B9; - /* 0x5BA */ u8 _5BA; - /* 0x5BB */ u8 _5BB; - /* 0x5BC */ u8 _5BC; - /* 0x5BD */ u8 _5BD; - /* 0x5BE */ u8 _5BE; - /* 0x5BE */ u8 _5BF[0x5D0 - 0x5BF]; - /* 0x5D0 */ f32 animation_speed; - /* 0x5D4 */ u8 _5D4[0x630 - 0x5D4]; + /* 0x000 */ int main_animation_frame; + /* 0x004 */ int _04; // TODO: figure out where this is set + /* 0x008 */ int main_animation_frame_changed; + /* 0x00C */ int _08; // TODO: figure out where this is set + /* 0x010 */ int _0C; // TODO: figure out where this is set + /* 0x014 */ aNPC_ANIMATION_c main_animation; + /* 0x1D0 */ aNPC_ANIMATION_c sub_animation0; + /* 0x38C */ aNPC_ANIMATION_c sub_animation1; + /* 0x548 */ u8 _548[0x580 - 0x548]; + /* 0x580 */ int animation_id; + /* 0x584 */ int texture_bank_idx; + /* 0x588 */ u8 _588[0x5B9 - 0x588]; + /* 0x5B9 */ u8 _5B9; + /* 0x5BA */ u8 _5BA; + /* 0x5BB */ u8 _5BB; + /* 0x5BC */ u8 _5BC; + /* 0x5BD */ u8 _5BD; + /* 0x5BE */ u8 _5BE; + /* 0x5BE */ u8 _5BF[0x5D0 - 0x5BF]; + /* 0x5D0 */ f32 animation_speed; + /* 0x5D4 */ u8 _5D4[0x630 - 0x5D4]; } aNPC_draw_info_c; typedef void (*aNPC_THINK_PROC)(NPC_ACTOR*, GAME_PLAY*, int); #define aNPC_THINK_INTERRUPT_FRIENDSHIP (1 << 0) -#define aNPC_THINK_INTERRUPT_FATIGUE (1 << 1) -#define aNPC_THINK_INTERRUPT_OBSTANCE (1 << 2) -#define aNPC_THINK_INTERRUPT_ENTRANCE (1 << 3) +#define aNPC_THINK_INTERRUPT_FATIGUE (1 << 1) +#define aNPC_THINK_INTERRUPT_OBSTANCE (1 << 2) +#define aNPC_THINK_INTERRUPT_ENTRANCE (1 << 3) typedef struct npc_think_info_s { - int idx; - u8 end_flag; - u8 force_call_flag; - u16 force_call_timer; - int force_call_msg_no; - u8 force_call_camera_type; - aNPC_THINK_PROC think_proc; - u32 interrupt_flags; + int idx; + u8 end_flag; + u8 force_call_flag; + u16 force_call_timer; + int force_call_msg_no; + u8 force_call_camera_type; + aNPC_THINK_PROC think_proc; + u32 interrupt_flags; } aNPC_think_info_c; typedef void (*aNPC_SCHEDULE_PROC)(NPC_ACTOR*, GAME_PLAY*, int); typedef struct npc_schedule_info_s { - u8 type; - u8 state; - mNPS_schedule_c schedule; - aNPC_SCHEDULE_PROC schedule_proc; + u8 type; + u8 state; + mNPS_schedule_c schedule; + aNPC_SCHEDULE_PROC schedule_proc; } aNPC_schedule_info_c; enum { - aNPC_ACT_OBJ_NONE, - aNPC_ACT_OBJ_PLAYER, - aNPC_ACT_OBJ_ANY_NPC, - aNPC_ACT_OBJ_TARGET_NPC, - aNPC_ACT_OBJ_4, - aNPC_ACT_OBJ_5, - aNPC_ACT_OBJ_INSECT, - aNPC_ACT_OBJ_FISH, + aNPC_ACT_OBJ_DEFAULT, + aNPC_ACT_OBJ_PLAYER, + aNPC_ACT_OBJ_ANY_NPC, + aNPC_ACT_OBJ_TARGET_NPC, + aNPC_ACT_OBJ_4, + aNPC_ACT_OBJ_5, + aNPC_ACT_OBJ_INSECT, + aNPC_ACT_OBJ_FISH, - aNPC_ACT_OBJ_NUM + aNPC_ACT_OBJ_NUM +}; + +enum { + aNPC_ACT_TYPE_DEFAULT, + aNPC_ACT_TYPE_AVOID, + aNPC_ACT_TYPE_SEARCH, + aNPC_ACT_TYPE_TO_POINT, + + aNPC_ACT_TYPE_NUM +}; + +enum { + aNPC_ACT_WAIT, + aNPC_ACT_WALK, + aNPC_ACT_WALK2, + aNPC_ACT_TURN, + aNPC_ACT_TURN2, + aNPC_ACT_CHASE_INSECT, + aNPC_ACT_CHASE_INSECT2, + aNPC_ACT_GREETING, + aNPC_ACT_TALK, + aNPC_ACT_INTO_HOUSE, + aNPC_ACT_LEAVE_HOUSE, + aNPC_ACT_UMB_OPEN, + aNPC_ACT_UMB_CLOSE, + aNPC_ACT_ENSOU, + aNPC_ACT_TALK2, + aNPC_ACT_REACT_TOOL, + aNPC_ACT_CLAP, + aNPC_ACT_TRANS, + aNPC_ACT_GET, + aNPC_ACT_GET2, + aNPC_ACT_PITFALL, + aNPC_ACT_REVIVE, + aNPC_ACT_SPECIAL, + + aNPC_ACT_NUM }; typedef void (*aNPC_ACTION_PROC)(NPC_ACTOR*, GAME_PLAY*, int); @@ -217,174 +254,174 @@ typedef void (*aNPC_ACTION_PROC)(NPC_ACTOR*, GAME_PLAY*, int); #define aNPC_ACTION_END_STEP 0xFF typedef struct npc_action_s { - u8 priority; - u8 idx; - u8 step; - u8 type; - u8 prev_priority; - u8 prev_step; - s16 act_timer; - u8 feel; - u8 act_obj; - u16 act_obj_id; - s16 move_x; - s16 move_z; - aNPC_ACTION_PROC act_proc; + u8 priority; + u8 idx; + u8 step; + u8 type; + u8 prev_priority; + u8 prev_step; + s16 act_timer; + u8 feel; + u8 act_obj; + u16 act_obj_id; + s16 move_x; + s16 move_z; + aNPC_ACTION_PROC act_proc; } aNPC_action_c; typedef struct npc_request_s { - u8 act_priority; - u8 act_idx; - u8 act_type; - u16 act_args[6]; - u8 umb_flag; - u8 _11; - u8 head_priority; - u8 head_type; - ACTOR* head_target; - xyz_t head_pos; + u8 act_priority; + u8 act_idx; + u8 act_type; + u16 act_args[6]; + u8 umb_flag; + u8 _11; + u8 head_priority; + u8 head_type; + ACTOR* head_target; + xyz_t head_pos; } aNPC_request_c; -#define aNPC_COND_DEMO_SKIP_MOVE_RANGE_CHECK (1 << 0) /* 0x0001 */ -#define aNPC_COND_DEMO_SKIP_MOVE_CIRCLE_REV (1 << 1) /* 0x0002 */ -#define aNPC_COND_DEMO_SKIP_MOVE_Y (1 << 2) /* 0x0004 */ -#define aNPC_COND_DEMO_SKIP_OBJ_COL_CHECK (1 << 3) /* 0x0008 */ -#define aNPC_COND_DEMO_SKIP_BGCHECK (1 << 4) /* 0x0010 */ -#define aNPC_COND_DEMO_SKIP_FORWARD_CHECK (1 << 5) /* 0x0020 */ -#define aNPC_COND_DEMO_SKIP_ITEM (1 << 6) /* 0x0040 */ -#define aNPC_COND_DEMO_SKIP_TALK_CHECK (1 << 7) /* 0x0080 */ -#define aNPC_COND_DEMO_SKIP_HEAD_LOOKAT (1 << 8) /* 0x0100 */ -#define aNPC_COND_DEMO_SKIP_ENTRANCE_CHECK (1 << 9) /* 0x0200 */ -#define aNPC_COND_DEMO_SKIP_KUTIPAKU (1 << 10) /* 0x0400 */ -#define aNPC_COND_DEMO_SKIP_FOOTSTEPS (1 << 11) /* 0x0800 */ -#define aNPC_COND_DEMO_SKIP_FEEL_CHECK (1 << 12) /* 0x1000 */ -#define aNPC_COND_DEMO_SKIP_LOVE_CHECK (1 << 13) /* 0x2000 */ -#define aNPC_COND_DEMO_SKIP_FOOTSTEPS_VFX (1 << 14) /* 0x4000 */ -#define aNPC_COND_DEMO_SKIP_UZAI_CHECK (1 << 15) /* 0x8000 */ +#define aNPC_COND_DEMO_SKIP_MOVE_RANGE_CHECK (1 << 0) /* 0x0001 */ +#define aNPC_COND_DEMO_SKIP_MOVE_CIRCLE_REV (1 << 1) /* 0x0002 */ +#define aNPC_COND_DEMO_SKIP_MOVE_Y (1 << 2) /* 0x0004 */ +#define aNPC_COND_DEMO_SKIP_OBJ_COL_CHECK (1 << 3) /* 0x0008 */ +#define aNPC_COND_DEMO_SKIP_BGCHECK (1 << 4) /* 0x0010 */ +#define aNPC_COND_DEMO_SKIP_FORWARD_CHECK (1 << 5) /* 0x0020 */ +#define aNPC_COND_DEMO_SKIP_ITEM (1 << 6) /* 0x0040 */ +#define aNPC_COND_DEMO_SKIP_TALK_CHECK (1 << 7) /* 0x0080 */ +#define aNPC_COND_DEMO_SKIP_HEAD_LOOKAT (1 << 8) /* 0x0100 */ +#define aNPC_COND_DEMO_SKIP_ENTRANCE_CHECK (1 << 9) /* 0x0200 */ +#define aNPC_COND_DEMO_SKIP_KUTIPAKU (1 << 10) /* 0x0400 */ +#define aNPC_COND_DEMO_SKIP_FOOTSTEPS (1 << 11) /* 0x0800 */ +#define aNPC_COND_DEMO_SKIP_FEEL_CHECK (1 << 12) /* 0x1000 */ +#define aNPC_COND_DEMO_SKIP_LOVE_CHECK (1 << 13) /* 0x2000 */ +#define aNPC_COND_DEMO_SKIP_FOOTSTEPS_VFX (1 << 14) /* 0x4000 */ +#define aNPC_COND_DEMO_SKIP_UZAI_CHECK (1 << 15) /* 0x8000 */ typedef struct npc_condition_s { - u8 hide_flg; - u8 hide_request; - u8 action; - u8 talk_condition; - u8 greeting_flag; - u8 entrance_flag; - u16 fatigue; - int feel_tim; - int _0C; - u32 demo_flg; - u32 talk_demo_flg_save; - u32 trans_demo_flg_save; - u8 appear_flag; - u8 appear_rotation; - u8 pitfall_flag; - u32 actor_state_save; - int _24; - int _28; - int _2C; - s8* friendship; - int over_friendship; - mActor_name_t* under_fg_p; - int ut_x; - int ut_z; + u8 hide_flg; + u8 hide_request; + u8 action; + u8 talk_condition; + u8 greeting_flag; + u8 entrance_flag; + u16 fatigue; + int feel_tim; + int _0C; + u32 demo_flg; + u32 talk_demo_flg_save; + u32 trans_demo_flg_save; + u8 appear_flag; + u8 appear_rotation; + u8 pitfall_flag; + u32 actor_state_save; + int _24; + int _28; + int _2C; + s8* friendship; + int over_friendship; + mActor_name_t* under_fg_p; + int ut_x; + int ut_z; } aNPC_condition_info_c; typedef struct npc_uzai_s { - int step; - u8 tool; - u8 flag; - u8 cross; + int step; + u8 tool; + u8 flag; + u8 cross; } aNPC_uzai_c; typedef struct npc_hand_s { - u8 item_type; - u8 requested_item_type; - mActor_name_t item; - u8 after_mode; - u8 present_flag; - u8 umbrella_disabled_flag; - u8 umbrella_type; - ACTOR* item_actor_p; - ACTOR* prev_item_actor_p; - xyz_t pos; + u8 item_type; + u8 requested_item_type; + mActor_name_t item; + u8 after_mode; + u8 present_flag; + u8 umbrella_disabled_flag; + u8 umbrella_type; + ACTOR* item_actor_p; + ACTOR* prev_item_actor_p; + xyz_t pos; } aNPC_hand_c; typedef struct npc_head_s { - s16 angle_x; - s16 angle_y; - s16 angle_add_x; - s16 angle_add_y; - s16 _08; - u8 lock_flag; - u8 target_type; - ACTOR* target; - xyz_t pos; + s16 angle_x; + s16 angle_y; + s16 angle_add_x; + s16 angle_add_y; + s16 _08; + u8 lock_flag; + u8 target_type; + ACTOR* target; + xyz_t pos; } aNPC_head_c; enum { - aNPC_FOOT_LEFT, - aNPC_FOOT_RIGHT, + aNPC_FOOT_LEFT, + aNPC_FOOT_RIGHT, - aNPC_FOOT_NUM + aNPC_FOOT_NUM }; typedef struct npc_movement_s { - f32 max_speed; - f32 acceleration; - f32 deceleration; - f32 target_pos_x; - f32 target_pos_z; - f32 avoid_pos_x; - f32 avoid_pos_z; - s16 move_timer; - u8 avoid_direction; - u8 range_type; - f32 range_center_x; - f32 range_center_z; - f32 range_radius; - s16 mv_angl; - s16 mv_add_angl; - f32 arrival_area_radius; - ACTOR* target; - s8 movement_ut_x; - s8 movement_ut_z; - s16 body_angle; - u8 override_body_angle_flag; - u8 demo_move_timer; + f32 max_speed; + f32 acceleration; + f32 deceleration; + f32 target_pos_x; + f32 target_pos_z; + f32 avoid_pos_x; + f32 avoid_pos_z; + s16 move_timer; + u8 avoid_direction; + u8 range_type; + f32 range_center_x; + f32 range_center_z; + f32 range_radius; + s16 mv_angl; + s16 mv_add_angl; + f32 arrival_area_radius; + ACTOR* target; + s8 movement_ut_x; + s8 movement_ut_z; + s16 body_angle; + u8 override_body_angle_flag; + u8 demo_move_timer; } aNPC_movement_c; typedef struct npc_collision_s { - ClObjPipe_c pipe; - f32 BGcheck_radius; - u8 collision_flag; - u8 priority; - u8 turn_flag; - u16 _24; - s16 turn_angle; - f32 bg_rev_add; + ClObjPipe_c pipe; + f32 BGcheck_radius; + u8 collision_flag; + u8 priority; + u8 turn_flag; + u16 _24; + s16 turn_angle; + f32 bg_rev_add; } aNPC_collision_c; typedef struct npc_actor_talk_info_s { - aNPC_TALK_REQUEST_PROC talk_request_proc; - aNPC_TALK_INIT_PROC talk_init_proc; - aNPC_TALK_END_CHECK_PROC talk_end_check_proc; - u8 type; - u8 default_act; - u8 demo_code; - u8 turn; - s16 default_animation; - s16 default_turn_animation; - s16 melody_inst; - s16 npc_voice_id; - u8 feel; - u8 memory; - u8 kutipaku_timer; // frames of mouth movement animation + aNPC_TALK_REQUEST_PROC talk_request_proc; + aNPC_TALK_INIT_PROC talk_init_proc; + aNPC_TALK_END_CHECK_PROC talk_end_check_proc; + u8 type; + u8 default_act; + u8 demo_code; + u8 turn; + s16 default_animation; + s16 default_turn_animation; + s16 melody_inst; + s16 npc_voice_id; + u8 feel; + u8 memory; + u8 kutipaku_timer; // frames of mouth movement animation } aNPC_talk_info_c; typedef struct npc_accessory_s { - s16 type; - s16 pos_joint_idx; // might be better suited as base_joint_idx? - ACTOR* accessory; + s16 type; + s16 pos_joint_idx; // might be better suited as base_joint_idx? + ACTOR* accessory; } aNPC_accessory_c; /* Used for think, schedule, action, & talk */ @@ -392,66 +429,66 @@ typedef void (*aNPC_PROC)(NPC_ACTOR* npc_actorx, GAME_PLAY* play, int schedule_i typedef void (*aNPC_SUB_PROC)(NPC_ACTOR* npc_actorx, GAME_PLAY* play); enum { - aNPC_SCHEDULE_TYPE_FIELD, - aNPC_SCHEDULE_TYPE_IN_HOUSE, - aNPC_SCHEDULE_TYPE_SLEEP, - aNPC_SCHEDULE_TYPE_STAND, - aNPC_SCHEDULE_TYPE_WANDER, - aNPC_SCHEDULE_TYPE_WALK_WANDER, - aNPC_SCHEDULE_TYPE_SPECIAL, + aNPC_SCHEDULE_TYPE_FIELD, + aNPC_SCHEDULE_TYPE_IN_HOUSE, + aNPC_SCHEDULE_TYPE_SLEEP, + aNPC_SCHEDULE_TYPE_STAND, + aNPC_SCHEDULE_TYPE_WANDER, + aNPC_SCHEDULE_TYPE_WALK_WANDER, + aNPC_SCHEDULE_TYPE_SPECIAL, - aNPC_SCHEDULE_TYPE_NUM + aNPC_SCHEDULE_TYPE_NUM }; struct npc_actor_s { - ACTOR actor_class; - s_xyz _174; - NpcActorInfo_c npc_info; - aNPC_draw_info_c draw; - aNPC_think_info_c think; - aNPC_schedule_info_c schedule; - aNPC_action_c action; - aNPC_request_c request; - f32 eye_y; - aNPC_condition_info_c condition_info; - aNPC_uzai_c uzai; - aNPC_hand_c left_hand; - aNPC_hand_c right_hand; - aNPC_head_c head; - xyz_t feet[aNPC_FOOT_NUM]; - mActor_proc move_proc; - mActor_proc draw_proc; - ACTOR* palActor; - int palActorIgnoreTimer; - aNPC_movement_c movement; - aNPC_collision_c collision; - aNPC_talk_info_c talk_info; - aNPC_accessory_c accessory; - int act_react_tool_timer; - int _98C; - int _990; + ACTOR actor_class; + s_xyz _174; + NpcActorInfo_c npc_info; + aNPC_draw_info_c draw; + aNPC_think_info_c think; + aNPC_schedule_info_c schedule; + aNPC_action_c action; + aNPC_request_c request; + f32 eye_y; + aNPC_condition_info_c condition_info; + aNPC_uzai_c uzai; + aNPC_hand_c left_hand; + aNPC_hand_c right_hand; + aNPC_head_c head; + xyz_t feet[aNPC_FOOT_NUM]; + mActor_proc move_proc; + mActor_proc draw_proc; + ACTOR* palActor; + int palActorIgnoreTimer; + aNPC_movement_c movement; + aNPC_collision_c collision; + aNPC_talk_info_c talk_info; + aNPC_accessory_c accessory; + int act_react_tool_timer; + int _98C; + int _990; }; typedef struct npc_control_cloth_s { - u8 dma_flag; - u8 init_flag; - s16 _02; - mActor_name_t cloth_item; - u8 in_use_count; - Object_Bank_c texture_bank; - Object_Bank_c palette_bank; + u8 dma_flag; + u8 init_flag; + s16 _02; + mActor_name_t cloth_item; + u8 in_use_count; + Object_Bank_c texture_bank; + Object_Bank_c palette_bank; } aNPC_cloth_c; typedef struct npc_control_actor_s { - ACTOR* actor_class; - aNPC_cloth_c cloth[10]; - u8 _8F4[0x9D8 - 0x8F4]; // TODO + ACTOR* actor_class; + aNPC_cloth_c cloth[10]; + u8 _8F4[0x9D8 - 0x8F4]; // TODO } NPC_CONTROL_ACTOR; -typedef struct npc_destruct_table_proc{ +typedef struct npc_destruct_table_proc { aNPC_SUB_PROC unk0; aNPC_SUB_PROC unk4; -}NPC_DT_PROCS; +} NPC_DT_PROCS; extern ACTOR_PROFILE Npc_Profile; @@ -460,4 +497,3 @@ extern ACTOR_PROFILE Npc_Profile; #endif #endif - diff --git a/include/ac_npc_rcn_guide.h b/include/ac_npc_rcn_guide.h index 3cd95614..97d863d7 100644 --- a/include/ac_npc_rcn_guide.h +++ b/include/ac_npc_rcn_guide.h @@ -3,11 +3,32 @@ #include "types.h" #include "m_actor.h" +#include "ac_npc.h" #ifdef __cplusplus extern "C" { #endif +typedef struct npc_rcn_guide_s NPC_RCN_GUIDE_ACTOR; + +typedef void (*aNRG_THINK_PROC)(NPC_RCN_GUIDE_ACTOR*, GAME_PLAY*); +typedef void (*aNRG_TALK_PROC)(NPC_RCN_GUIDE_ACTOR*, GAME_PLAY*); + +/* sizeof(NPC_RCN_GUIDE_ACTOR) == 0x9B4 */ +struct npc_rcn_guide_s { + /* 0x000 */ NPC_ACTOR npc_class; + /* 0x994 */ int think_idx; + /* 0x998 */ int next_think_idx; + /* 0x99C */ aNRG_THINK_PROC think_proc; + /* 0x9A0 */ int talk_idx; + /* 0x9A4 */ aNRG_TALK_PROC talk_proc; + /* 0x9A8 */ u8 talk_proc_idx; + /* 0x9A9 */ u8 path; + /* 0x9AA */ u8 melody_copy; + /* 0x9AC */ int shop_bx; + /* 0x9B0 */ int shop_bz; +}; + extern ACTOR_PROFILE Npc_Rcn_Guide_Profile; #ifdef __cplusplus @@ -15,4 +36,3 @@ extern ACTOR_PROFILE Npc_Rcn_Guide_Profile; #endif #endif - diff --git a/include/m_msg.h b/include/m_msg.h index 0a87615a..8a0b065d 100644 --- a/include/m_msg.h +++ b/include/m_msg.h @@ -362,8 +362,13 @@ extern void mMsg_sound_unset_voice_silent(mMsg_Window_c* msg_p, int update_mode) #define mMsg_CHECK_MAINNORMALCONTINUE() mMsg_Check_MainNormalContinue(mMsg_Get_base_window_p()) #define mMsg_CHECK_MAINDISAPPEAR() mMsg_Check_MainDisappear(mMsg_Get_base_window_p()) #define mMsg_CHECK_MAINHIDE() mMsg_Check_MainHide(mMsg_Get_base_window_p()) +#define mMsg_CHECK_MAIN_WAIT() mMsg_Check_main_wait(mMsg_Get_base_window_p()) #define mMsg_REQUEST_MAIN_DISAPPEAR() mMsg_request_main_disappear(mMsg_Get_base_window_p()) +#define mMsg_REQUEST_MAIN_DISAPPEAR_WAIT_TYPE1() mMsg_request_main_disappear_wait_type1(mMsg_Get_base_window_p()) +#define mMsg_REQUEST_MAIN_APPEAR() mMsg_request_main_appear(mMsg_Get_base_window_p()) +#define mMsg_REQUEST_MAIN_APPEAR_WAIT_TYPE1() mMsg_request_main_appear_wait_type1(mMsg_Get_base_window_p()); +#define mMsg_REQUEST_MAIN_APPEAR_WAIT_TYPE2() mMsg_request_main_appear_wait_type2(mMsg_Get_base_window_p()); #ifdef __cplusplus } diff --git a/include/m_player.h b/include/m_player.h index 1cb16ff9..fe5e86b3 100644 --- a/include/m_player.h +++ b/include/m_player.h @@ -1267,7 +1267,33 @@ struct player_actor_s { /* 0x105C */ xyz_t left_hand_pos; /* 0x1068 */ MtxF right_hand_mtx; /* 0x10A8 */ MtxF left_hand_mtx; - /* 0x10E8 */ u8 _10E8[0x1270 - 0x10E8]; + /* 0x10E8 */ u8 _10E8[0x11FC - 0x10E8]; // TODO + /* 0x11FC */ int crash_snowball_for_wade; + /* 0x1200 */ xyz_t snowball_dist; + /* 0x120C */ int wade_request_flag; + /* 0x1210 */ u16 cancel_wade_timer; + /* 0x1214 */ int cancel_wade_flag; + /* 0x1218 */ f32 geton_boat_wade; + /* 0x121C */ u16 frame_timer; + /* 0x121E */ s8 bee_chase_bgm_flag; + /* 0x121F */ s8 status_for_bee; + /* 0x1220 */ void* angle_force_speak_label; + /* 0x1224 */ int player_sunburn_rankup; + /* 0x1228 */ int player_sunburn_rankdown; + /* 0x122C */ u8 radio_exercise_command_ring_buffer[8]; + /* 0x1234 */ s8 radio_exercise_ring_buffer_cmd_num; + /* 0x1238 */ int radio_exercise_command_ring_buffer_index; + /* 0x123C */ int radio_exercise_continue_cmd_idx; + /* 0x1240 */ f32 radio_exercise_cmd_timer; + /* 0x1244 */ int old_sound_frame_counter; + /* 0x1248 */ s16 boat_angleZ; + /* 0x124C */ int change_color_request; + /* 0x1250 */ int change_color_flag; + /* 0x1254 */ f32 change_color_timer; + /* 0x1258 */ int change_color_rgb[3]; + /* 0x1264 */ int change_color_near; + /* 0x1268 */ int change_color_far; + /* 0x126C */ int refuse_pickup_knife_fork_flag; /* 0x1270 */ int (*request_main_invade_all_proc)(GAME*, int); /* 0x1274 */ int (*request_main_refuse_all_proc)(GAME*, int); /* 0x1278 */ int (*request_main_return_demo_all_proc)(GAME*, int, f32, int); diff --git a/include/m_player_lib.h b/include/m_player_lib.h index 2b884b06..00fe9ebc 100644 --- a/include/m_player_lib.h +++ b/include/m_player_lib.h @@ -63,7 +63,7 @@ extern int mPlib_check_player_outdoor_start(GAME* game); extern void mPlib_Set_change_color_request(); extern int mPlib_check_player_open_umbrella(GAME_PLAY* play); extern int mPlib_Check_UKI_COMEBACK_STATUS(); -extern int mPlib_check_player_actor_main_index_OutDoorMove(GAME_PLAY* play); +extern int mPlib_check_player_actor_main_index_OutDoorMove(GAME* game); extern int mPlib_request_main_close_furniture_type1(GAME* game); extern int mPlib_request_main_shock_type1(GAME* game, f32 time, s16 angle_y, int axe_swing); extern int mPlib_request_main_hold_type1(GAME* game, int ftr_no, int player_direct, const xyz_t* player_pos); @@ -100,6 +100,7 @@ extern int mPlib_Check_scoop_after(GAME* game, xyz_t* pos, mActor_name_t* item, extern int mPlib_request_main_demo_standing_train_type1(GAME* game); extern void mPlib_Set_unable_wade(int unable); extern int mPlib_request_main_demo_getoff_train_type1(GAME* game); +extern int mPlib_check_player_actor_main_index_OutDoorMove2(GAME* game); extern mPlayer_change_data_from_submenu_c* mPlib_Get_change_data_from_submenu_p(); diff --git a/src/ac_br_shop_move.c_inc b/src/ac_br_shop_move.c_inc index 3a21815c..7aa57ac4 100644 --- a/src/ac_br_shop_move.c_inc +++ b/src/ac_br_shop_move.c_inc @@ -37,9 +37,9 @@ static void change_FGUnit(ACTOR* actor, int type) { static void aBRS_set_bgOffset(STRUCTURE_ACTOR* windmill, int idx) { static mCoBG_OffsetTable_c height_table_ct[9] = { - {0x64, 9, 9, 9, 9, 9, 0}, {0x64, 9, 9, 9, 9, 9, 0}, {0x64, 9, 9, 9, 9, 9, 0}, - {0x64, 9, 9, 9, 9, 9, 0}, {0x64, 9, 9, 9, 9, 9, 0}, {0x64, 9, 9, 9, 9, 9, 0}, - {0x64, 9, 9, 9, 9, 9, 0}, {0x64, 9, 9, 9, 9, 9, 0}, {0x64, 9, 9, 9, 9, 9, 0}, + { 0x64, 9, 9, 9, 9, 9, 0 }, { 0x64, 9, 9, 9, 9, 9, 0 }, { 0x64, 9, 9, 9, 9, 9, 0 }, + { 0x64, 9, 9, 9, 9, 9, 0 }, { 0x64, 9, 9, 9, 9, 9, 0 }, { 0x64, 9, 9, 9, 9, 9, 0 }, + { 0x64, 9, 9, 9, 9, 9, 0 }, { 0x64, 9, 9, 9, 9, 9, 0 }, { 0x64, 9, 9, 9, 9, 9, 0 }, }; static mCoBG_OffsetTable_c* height_table[2] = { @@ -182,7 +182,7 @@ static void aBRS_open_wait(STRUCTURE_ACTOR* actor, GAME_PLAY* play) { if (actor == GET_PLAYER_ACTOR_NOW()->get_door_label_proc(gamePT)) { aBRS_rewrite_out_data(&actor->actor_class, play); goto_other_scene(play, &aBRS_br_shop_door_data, 1); - } else if (mPlib_check_player_actor_main_index_OutDoorMove(play) == 0) { + } else if (mPlib_check_player_actor_main_index_OutDoorMove(&play->game) == 0) { if (aBRS_check_player(&actor->actor_class, play) == 0) { if (aBRS_open_check(&actor->actor_class) != 2) { aBRS_setup_action(actor, 2); diff --git a/src/ac_buggy_move.c_inc b/src/ac_buggy_move.c_inc index ad2a442c..150d291e 100644 --- a/src/ac_buggy_move.c_inc +++ b/src/ac_buggy_move.c_inc @@ -132,7 +132,8 @@ static int aBGY_check_player2(GAME_PLAY* play) { y = player->actor_class.world.angle.y; res = 0; - if ((y > DEG2SHORT_ANGLE2(135.0f)) && (y < DEG2SHORT_ANGLE2(225.0f)) && (player->actor_class.speed > 0.0f)) { // 0x6000 && 0xA000 + if ((y > DEG2SHORT_ANGLE2(135.0f)) && (y < DEG2SHORT_ANGLE2(225.0f)) && + (player->actor_class.speed > 0.0f)) { // 0x6000 && 0xA000 res = 1; } @@ -230,7 +231,7 @@ static void aBGY_open_wait(STRUCTURE_ACTOR* buggy, GAME_PLAY* play) { return; } - if (mPlib_check_player_actor_main_index_OutDoorMove(play) != FALSE) { + if (mPlib_check_player_actor_main_index_OutDoorMove(&play->game) != FALSE) { return; } @@ -264,12 +265,7 @@ static void aBGY_open_door(STRUCTURE_ACTOR* buggy, GAME_PLAY* play) { } static void aBGY_setup_action(STRUCTURE_ACTOR* buggy, int action) { - static aSTR_MOVE_PROC process[] = { - &aBGY_close_wait, - &aBGY_open_wait, - &aBGY_close_door, - &aBGY_open_door - }; + static aSTR_MOVE_PROC process[] = { &aBGY_close_wait, &aBGY_open_wait, &aBGY_close_door, &aBGY_open_door }; static cKF_Animation_R_c* animation[] = { &cKF_ba_r_obj_s_uranai, &cKF_ba_r_obj_w_uranai }; static f32 start_idx[] = { 1.0f, 17.0f, 17.0f, 1.0f }; @@ -314,7 +310,7 @@ static void aBGY_actor_move(ACTOR* actor, GAME* game) { (mDemo_Check(mDemo_TYPE_SCROLL3, &player->actor_class) == FALSE) && ((bx1 != bx2) || (bz1 != bz2))) { Actor_delete(actor); } else { - + buggy->keyframe_state = cKF_SkeletonInfo_R_play(&buggy->keyframe); buggy->action_proc(buggy, play); diff --git a/src/ac_my_house_move.c_inc b/src/ac_my_house_move.c_inc index 73d0fded..c72d921e 100644 --- a/src/ac_my_house_move.c_inc +++ b/src/ac_my_house_move.c_inc @@ -205,7 +205,7 @@ static int aMHS_check_player_in_intro_demo(STRUCTURE_ACTOR* my_house, GAME_PLAY* return 0; } - if (my_house->arg3_f == TRUE && intro_demo->player_in_intro_demo == TRUE) { + if (my_house->arg3_f == TRUE && intro_demo->player_in_house == TRUE) { return 1; } @@ -405,7 +405,7 @@ static void aMHS_open_door(STRUCTURE_ACTOR* my_house, GAME_PLAY* play) { if (demo_class != NULL) { intro_demo = (INTRO_DEMO_ACTOR*)demo_class; - intro_demo->player_in_intro_demo = FALSE; + intro_demo->player_in_house = FALSE; } } diff --git a/src/ac_npc_rcn_guide.c b/src/ac_npc_rcn_guide.c new file mode 100644 index 00000000..34f1eaf4 --- /dev/null +++ b/src/ac_npc_rcn_guide.c @@ -0,0 +1,161 @@ +#include "ac_npc_rcn_guide.h" + +#include "m_play.h" +#include "m_name_table.h" +#include "libultra/libultra.h" +#include "m_common_data.h" +#include "m_player_lib.h" +#include "m_bgm.h" +#include "m_msg.h" +#include "m_font.h" +#include "m_house.h" +#include "ac_intro_demo.h" + +/* sizeof(aNRG_talk_data_c) == 0x0C */ +typedef struct rcn_guide_talk_data_s { + /* 0x00 */ int msg_no; + /* 0x04 */ u8 turn_flag; + /* 0x05 */ u8 camera_type; + /* 0x06 */ u8 melody_flag; + /* 0x08 */ aNRG_TALK_PROC talk_proc; +} aNRG_talk_data_c; + +enum { + aNRC_THINK_CALL, + aNRC_THINK_APPROACH, + aNRG_THINK_INTRODUCE, + aNRC_THINK_TURN, + aNRC_THINK_TAKE_WITH, + aNRC_THINK_EXPLAIN, + aNRC_THINK_DECIDE_HOUSE_WAIT, + aNRC_THINK_STOP_WADE, + aNRC_THINK_BEFORE_OPEN_DOOR_TALK, + aNRC_THINK_BEFORE_OPEN_DOOR_TALK2, + aNRC_THINK_ENTER_WAIT, + aNRC_THINK_RESTART_WAIT, + aNRC_THINK_RESTART_TALK, + aNRC_THINK_DECIDE_HOUSE, + aNRC_THINK_EXIT_TURN, + aNRC_THINK_EXIT, + aNRC_THINK_WAIT, + + aNRC_THINK_NUM +}; + +enum { + aNRG_FORCE_TALK_CALL, + aNRG_FORCE_TALK_INTRODUCE, + aNRG_FORCE_TALK_EXPLAIN, + aNRG_FORCE_TALK_STOP_WADE, + aNRG_FORCE_TALK_BEFORE_OPEN_DOOR_TALK, + aNRG_FORCE_TALK_BEFORE_OPEN_DOOR2_TALK, + aNRG_FORCE_TALK_HOUSE_TAKEN, + aNRG_FORCE_TALK_HOUSE_VACANT, + + aNRG_FORCE_TALK_NUM +}; + +enum { + aNRG_NORM_TALK_DECIDE_HOUSE, + + aNRG_NORM_TALK_NUM +}; + +static void aNRG_actor_ct(ACTOR* actorx, GAME* game); +static void aNRG_actor_save(ACTOR* actorx, GAME* game); +static void aNRG_actor_dt(ACTOR* actorx, GAME* game); +static void aNRG_actor_init(ACTOR* actorx, GAME* game); +static void aNRG_actor_draw(ACTOR* actorx, GAME* game); +static void aNRG_actor_move(ACTOR* actorx, GAME* game); + +// clang-format off +ACTOR_PROFILE Npc_Rcn_Guide_Profile = { + mAc_PROFILE_NPC_RCN_GUIDE, + ACTOR_PART_NPC, + ACTOR_STATE_CAN_MOVE_IN_DEMO_SCENES | ACTOR_STATE_NO_MOVE_WHILE_CULLED, + SP_NPC_RCN_GUIDE, + ACTOR_OBJ_BANK_KEEP, + sizeof(NPC_RCN_GUIDE_ACTOR), + &aNRG_actor_ct, + &aNRG_actor_dt, + &aNRG_actor_init, + mActor_NONE_PROC1, + &aNRG_actor_save, +}; +// clang-format on + +static void aNRG_force_talk_request(ACTOR* actorx, GAME* game); +static int aNRG_talk_init(ACTOR* actorx, GAME* game); +static int aNRG_talk_end_chk(ACTOR* actorx, GAME* game); + +static void aNRG_schedule_proc(NPC_ACTOR* nactorx, GAME_PLAY* game, int sched_idx); +static void aNRG_setup_think_proc(NPC_RCN_GUIDE_ACTOR* rcn_guide, GAME_PLAY* play, int think_idx); + +static void aNRG_actor_ct(ACTOR* actorx, GAME* game) { + // clang-format off + static aNPC_ct_data_c ct_data = { + &aNRG_actor_move, + &aNRG_actor_draw, + 5, + &aNRG_force_talk_request, + &aNRG_talk_init, + &aNRG_talk_end_chk, + 0, + }; + // clang-format on + + NPC_RCN_GUIDE_ACTOR* rcn_guide = (NPC_RCN_GUIDE_ACTOR*)actorx; + GAME_PLAY* play = (GAME_PLAY*)game; + PLAYER_ACTOR* player; + s16 angle_y; + + if (Common_Get(clip).npc_clip->birth_check_proc(actorx, &play->game) == TRUE) { + rcn_guide->npc_class.schedule.schedule_proc = &aNRG_schedule_proc; + Common_Get(clip).npc_clip->ct_proc(actorx, &play->game, &ct_data); + rcn_guide->npc_class.collision.priority = 2; + rcn_guide->melody_copy = rcn_guide->npc_class.talk_info.melody_inst; + + /* Set shop acre */ + mFI_BlockKind2BkNum(&rcn_guide->shop_bx, &rcn_guide->shop_bz, mRF_BLOCKKIND_SHOP); + + rcn_guide->npc_class.draw.main_animation.keyframe.morph_counter = 0.0f; + rcn_guide->npc_class.actor_class.status_data.weight = 255; + + player = GET_PLAYER_ACTOR(play); + if (player != NULL) { + angle_y = search_position_angleY(&rcn_guide->npc_class.actor_class.world.position, + &player->actor_class.world.position); + } else { + angle_y = 0; + } + + rcn_guide->npc_class.actor_class.shape_info.rotation.y = angle_y; + rcn_guide->npc_class.actor_class.world.angle.y = angle_y; + } +} + +static void aNRG_actor_save(ACTOR* actorx, GAME* game) { + Common_Get(clip).npc_clip->save_proc(actorx, game); +} + +static void aNRG_actor_dt(ACTOR* actorx, GAME* game) { + NPC_RCN_GUIDE_ACTOR* rcn_guide = (NPC_RCN_GUIDE_ACTOR*)actorx; + + if (rcn_guide->think_idx == 16) { + mBGMPsComp_delete_ps_demo(BGM_INTRO_STATION, 0x168); + } + + Common_Get(clip).npc_clip->dt_proc(actorx, game); +} + +static void aNRG_actor_init(ACTOR* actorx, GAME* game) { + Common_Get(clip).npc_clip->init_proc(actorx, game); +} + +static void aNRG_actor_draw(ACTOR* actorx, GAME* game) { + Common_Get(clip).npc_clip->draw_proc(actorx, game); +} + +#include "../src/ac_npc_rcn_guide_move.c_inc" +#include "../src/ac_npc_rcn_guide_talk.c_inc" +#include "../src/ac_npc_rcn_guide_schedule.c_inc" diff --git a/src/ac_npc_rcn_guide_move.c_inc b/src/ac_npc_rcn_guide_move.c_inc new file mode 100644 index 00000000..06812005 --- /dev/null +++ b/src/ac_npc_rcn_guide_move.c_inc @@ -0,0 +1,39 @@ +static int aNRG_set_request_act(NPC_RCN_GUIDE_ACTOR* rcn_guide, u8 act_prio, u8 act_idx, u8 act_type, u16 obj, int x, + int z) { + u16 args[6]; + int res = FALSE; + + if (act_prio >= rcn_guide->npc_class.request.act_priority) { + bzero(args, sizeof(args)); + args[0] = obj; + args[2] = x; + args[3] = z; + rcn_guide->npc_class.request.act_priority = act_prio; + rcn_guide->npc_class.request.act_idx = act_idx; + rcn_guide->npc_class.request.act_type = act_type; + mem_copy((u8*)rcn_guide->npc_class.request.act_args, (u8*)args, sizeof(args)); + res = TRUE; + } + + return res; +} + +static void aNRG_set_house_master_name(int house_idx) { + mMsg_SET_FREE_STR(mMsg_FREE_STR0, Save_Get(private[mHS_get_pl_no(house_idx)]).player_ID.player_name, + PLAYER_NAME_LEN); +} + +static void aNRG_set_shop_address(NPC_RCN_GUIDE_ACTOR* rcn_guide) { + static u8 choume_str[] = { 'Q', 'A', 'B', 'C', 'D', 'E', 'F' }; + u8 str[1]; + + /* Set the row (Z) string */ + mMsg_SET_FREE_STR(mMsg_FREE_STR1, &choume_str[rcn_guide->shop_bz], 1); + /* Set the column (X) string */ + mFont_UnintToString(str, sizeof(str), rcn_guide->shop_bx, sizeof(str), TRUE, FALSE, TRUE); + mMsg_SET_FREE_STR(mMsg_FREE_STR2, str, sizeof(str)); +} + +static void aNRG_actor_move(ACTOR* actorx, GAME* game) { + Common_Get(clip).npc_clip->move_proc(actorx, game); +} diff --git a/src/ac_npc_rcn_guide_schedule.c_inc b/src/ac_npc_rcn_guide_schedule.c_inc new file mode 100644 index 00000000..fd4963e1 --- /dev/null +++ b/src/ac_npc_rcn_guide_schedule.c_inc @@ -0,0 +1,406 @@ +typedef void (*aNRG_THINK_INIT_PROC)(NPC_RCN_GUIDE_ACTOR*, GAME_PLAY*); + +typedef struct npc_rcn_guide_setup_think_s { + aNRG_THINK_PROC think_proc; + aNRG_THINK_INIT_PROC think_init_proc; + aNPC_TALK_REQUEST_PROC talk_request_proc; + u8 talk_idx; + u8 next_think_idx; +} aNRG_setup_think_c; + +static void aNRG_approach(NPC_RCN_GUIDE_ACTOR* rcn_guide, GAME_PLAY* play) { + if (rcn_guide->npc_class.action.step == aNPC_ACTION_END_STEP && rcn_guide->npc_class.action.idx == 2) { + aNRG_setup_think_proc(rcn_guide, play, aNRG_THINK_INTRODUCE); + } +} + +static void aNRG_turn(NPC_RCN_GUIDE_ACTOR* rcn_guide, GAME_PLAY* play) { + if (rcn_guide->npc_class.action.step == aNPC_ACTION_END_STEP && rcn_guide->npc_class.action.idx == 3) { + aNRG_setup_think_proc(rcn_guide, play, rcn_guide->next_think_idx); + } +} + +static void aNRG_take_with(NPC_RCN_GUIDE_ACTOR* rcn_guide, GAME_PLAY* play) { + if (rcn_guide->npc_class.action.step == aNPC_ACTION_END_STEP && rcn_guide->npc_class.action.idx == 2) { + int path = rcn_guide->path; + + if (path >= 1) { + aNRG_setup_think_proc(rcn_guide, play, aNRC_THINK_EXPLAIN); + } else { + aNRG_set_request_act(rcn_guide, 4, aNPC_ACT_WALK2, aNPC_ACT_TYPE_TO_POINT, aNPC_ACT_OBJ_DEFAULT, 2240, + 1500); + path++; + } + + rcn_guide->path = path; + } +} + +static void aNRG_decide_house_wait(NPC_RCN_GUIDE_ACTOR* rcn_guide, GAME_PLAY* play) { + int next_think_idx = -1; + + if (GET_PLAYER_ACTOR_NOW()->cancel_wade_flag) { + next_think_idx = 7; + } else if (Common_Get(clip).demo_clip != NULL && Common_Get(clip).demo_clip->type == mDemo_CLIP_TYPE_INTRO_DEMO) { + ACTOR* demo_actor = (ACTOR*)Common_Get(clip).demo_clip->demo_class; + + if (demo_actor != NULL) { + INTRO_DEMO_ACTOR* intro_demo = (INTRO_DEMO_ACTOR*)demo_actor; + + switch (intro_demo->player_intro_demo_state) { + case 1: + next_think_idx = aNRC_THINK_BEFORE_OPEN_DOOR_TALK; + break; + case 2: + next_think_idx = aNRC_THINK_BEFORE_OPEN_DOOR_TALK2; + break; + } + } + } + + if (next_think_idx >= 0) { + aNRG_setup_think_proc(rcn_guide, play, next_think_idx); + } +} + +static void aNRG_enter_wait(NPC_RCN_GUIDE_ACTOR* rcn_guide, GAME_PLAY* play) { + if (Common_Get(clip).demo_clip != NULL && Common_Get(clip).demo_clip->type == mDemo_CLIP_TYPE_INTRO_DEMO) { + ACTOR* demo_actor = (ACTOR*)Common_Get(clip).demo_clip->demo_class; + + if (demo_actor != NULL) { + INTRO_DEMO_ACTOR* intro_demo = (INTRO_DEMO_ACTOR*)demo_actor; + + intro_demo->player_in_house = TRUE; + aNRG_setup_think_proc(rcn_guide, play, aNRC_THINK_WAIT); + } + } +} + +static void aNRG_exit(NPC_RCN_GUIDE_ACTOR* rcn_guide, GAME_PLAY* play) { + static s16 moveX[] = { 2240, 2240, 2240, 2240 }; + static s16 moveZ[] = { 1900, 1980, 1300, 1220 }; + + if (rcn_guide->npc_class.action.step == aNPC_ACTION_END_STEP) { + f32 posZ = rcn_guide->npc_class.actor_class.world.position.z; + int idx; + + if (posZ < 1540.0f) { + if (posZ <= 1220.0f) { + idx = -1; + } else if (posZ <= 1300.0f) { + idx = 3; + } else { + idx = 2; + } + } else { + if (posZ >= 1980.0f) { + idx = -1; + } else if (posZ >= 1900.0f) { + idx = 1; + } else { + idx = 0; + } + } + + if (idx == -1) { + if (Common_Get(clip).demo_clip != NULL && Common_Get(clip).demo_clip->type == mDemo_CLIP_TYPE_INTRO_DEMO) { + ACTOR* demo_actor = (ACTOR*)Common_Get(clip).demo_clip->demo_class; + + if (demo_actor != NULL) { + INTRO_DEMO_ACTOR* intro_demo = (INTRO_DEMO_ACTOR*)demo_actor; + + intro_demo->rcn_guide_actor_p = NULL; + Actor_delete(&rcn_guide->npc_class.actor_class); + play->submenu.disable_start_btn_flag = FALSE; + } + } + } else { + aNRG_set_request_act(rcn_guide, 4, aNPC_ACT_WALK2, aNPC_ACT_TYPE_TO_POINT, aNPC_ACT_OBJ_DEFAULT, moveX[idx], + moveZ[idx]); + } + } +} + +static void aNRG_restart_wait(NPC_RCN_GUIDE_ACTOR* rcn_guide, GAME_PLAY* play) { + int think_idx; + + if (mPlib_check_player_actor_main_index_OutDoorMove2(&play->game) == FALSE) { + switch (rcn_guide->npc_class.actor_class.actor_specific) { + case 1: + think_idx = aNRC_THINK_DECIDE_HOUSE; + break; + default: + think_idx = aNRC_THINK_RESTART_TALK; + break; + } + + aNRG_setup_think_proc(rcn_guide, play, think_idx); + } +} + +static void aNRG_think_main_proc(NPC_ACTOR* nactorx, GAME_PLAY* play) { + NPC_RCN_GUIDE_ACTOR* rcn_guide = (NPC_RCN_GUIDE_ACTOR*)nactorx; + + (*rcn_guide->think_proc)(rcn_guide, play); +} + +static void aNRG_think_init_proc(NPC_ACTOR* nactorx, GAME_PLAY* play) { + NPC_RCN_GUIDE_ACTOR* rcn_guide = (NPC_RCN_GUIDE_ACTOR*)nactorx; + int think_idx; + + switch (rcn_guide->npc_class.actor_class.actor_specific) { + case 1: + case 2: + think_idx = aNRC_THINK_RESTART_WAIT; + break; + default: + think_idx = aNRC_THINK_CALL; + break; + } + + aNRG_setup_think_proc(rcn_guide, play, think_idx); + rcn_guide->npc_class.condition_info.hide_request = FALSE; +} + +static void aNRG_call_init(NPC_RCN_GUIDE_ACTOR* rcn_guide, GAME_PLAY* play) { + s16 angle_y = atans_table(980.0f - rcn_guide->npc_class.actor_class.world.position.z, + 2320.0f - rcn_guide->npc_class.actor_class.world.position.x); + + rcn_guide->npc_class.actor_class.shape_info.rotation.y = angle_y; + rcn_guide->npc_class.actor_class.world.angle.y = angle_y; +} + +static void aNRG_approach_init(NPC_RCN_GUIDE_ACTOR* rcn_guide, GAME_PLAY* play) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR(play); + f32 x; + f32 z; + + /* Player cannot open the start menu */ + play->submenu.disable_start_btn_flag = TRUE; + /* Make the player stand around waiting */ + mPlib_request_main_demo_wait_type1(&play->game, 0, NULL); + + if (player != NULL) { + /* Move to a bit below where the player is */ + x = player->actor_class.world.position.x; + z = player->actor_class.world.position.z + 70.0f; + } else { + /* Move to a predefined position -- how would the player even be NULL? */ + x = 2320.0f; + z = 1050.0f; + } + + /* Request action to move to desired location */ + aNRG_set_request_act(rcn_guide, 4, aNPC_ACT_WALK2, aNPC_ACT_TYPE_TO_POINT, aNPC_ACT_OBJ_DEFAULT, x, z); +} + +static void aNRG_introduce_init(NPC_RCN_GUIDE_ACTOR* rcn_guide, GAME_PLAY* play) { + aNRG_set_request_act(rcn_guide, 4, aNPC_ACT_WAIT, aNPC_ACT_TYPE_DEFAULT, aNPC_ACT_OBJ_DEFAULT, 0, 0); +} + +static void aNRG_turn_init(NPC_RCN_GUIDE_ACTOR* rcn_guide, GAME_PLAY* play) { + mPlib_request_main_demo_wait_type1(&play->game, 0, NULL); + aNRG_set_request_act(rcn_guide, 4, aNPC_ACT_TURN, aNPC_ACT_TYPE_TO_POINT, aNPC_ACT_OBJ_DEFAULT, 2240, 1300); +} + +static void aNRG_take_with_init(NPC_RCN_GUIDE_ACTOR* rcn_guide, GAME_PLAY* play) { + if (Common_Get(clip).demo_clip != NULL && Common_Get(clip).demo_clip->type == mDemo_CLIP_TYPE_INTRO_DEMO) { + ACTOR* demo_actor = (ACTOR*)Common_Get(clip).demo_clip->demo_class; + + if (demo_actor != NULL) { + INTRO_DEMO_ACTOR* intro_demo = (INTRO_DEMO_ACTOR*)demo_actor; + + intro_demo->talk_flag = TRUE; + } + } + + aNRG_set_request_act(rcn_guide, 4, aNPC_ACT_WALK2, aNPC_ACT_TYPE_TO_POINT, aNPC_ACT_OBJ_DEFAULT, 2240, 1300); +} + +static void aNRG_before_open_door_talk2_init(NPC_RCN_GUIDE_ACTOR* rcn_guide, GAME_PLAY* play) { + INTRO_DEMO_ACTOR* intro_demo = (INTRO_DEMO_ACTOR*)Common_Get(clip).demo_clip->demo_class; + + aNRG_set_house_master_name(intro_demo->house_idx); +} + +static void aNRG_exit_turn_init(NPC_RCN_GUIDE_ACTOR* rcn_guide, GAME_PLAY* play) { + static s16 moveX[] = { 2240, 2240 }; + static s16 moveZ[] = { 1900, 1300 }; + int idx = 0; + + if (rcn_guide->npc_class.actor_class.world.position.z < 1540.0f) { + idx = 1; + } + + aNRG_set_request_act(rcn_guide, 4, aNPC_ACT_TURN, aNPC_ACT_TYPE_TO_POINT, aNPC_ACT_OBJ_DEFAULT, moveX[idx], + moveZ[idx]); + if (Common_Get(clip).demo_clip != NULL && Common_Get(clip).demo_clip->type == mDemo_CLIP_TYPE_INTRO_DEMO) { + ACTOR* demo_actor = (ACTOR*)Common_Get(clip).demo_clip->demo_class; + + if (demo_actor != NULL) { + INTRO_DEMO_ACTOR* intro_demo = (INTRO_DEMO_ACTOR*)demo_actor; + + intro_demo->talk_flag = TRUE; + } + } + rcn_guide->next_think_idx = 15; +} + +static void aNRG_setup_think_proc(NPC_RCN_GUIDE_ACTOR* rcn_guide, GAME_PLAY* play, int think_idx) { + // clang-format off + static aNRG_setup_think_c dt_tbl[] = { + { + (aNRG_THINK_PROC)&none_proc1, + &aNRG_call_init, + &aNRG_force_talk_request, + aNRG_FORCE_TALK_CALL, + aNRC_THINK_APPROACH, + }, + { + &aNRG_approach, + &aNRG_approach_init, + (aNPC_TALK_REQUEST_PROC)&none_proc1, + aNRG_FORCE_TALK_CALL, + aNRC_THINK_APPROACH, + }, + { + (aNRG_THINK_PROC)&none_proc1, + &aNRG_introduce_init, + &aNRG_force_talk_request, + aNRG_FORCE_TALK_INTRODUCE, + aNRC_THINK_TURN, + }, + { + &aNRG_turn, + &aNRG_turn_init, + (aNPC_TALK_REQUEST_PROC)&none_proc1, + aNRG_FORCE_TALK_CALL, + aNRC_THINK_TAKE_WITH, + }, + { + &aNRG_take_with, + &aNRG_take_with_init, + (aNPC_TALK_REQUEST_PROC)&none_proc1, + aNRG_FORCE_TALK_CALL, + aNRC_THINK_TAKE_WITH, + }, + { + (aNRG_THINK_PROC)&none_proc1, + (aNRG_THINK_INIT_PROC)&none_proc1, + &aNRG_force_talk_request, + aNRG_FORCE_TALK_EXPLAIN, + aNRC_THINK_DECIDE_HOUSE_WAIT, + }, + { + &aNRG_decide_house_wait, + &aNRG_introduce_init, + &aNRG_norm_talk_request, + aNRG_NORM_TALK_DECIDE_HOUSE, + aNRC_THINK_DECIDE_HOUSE_WAIT, + }, + { + (aNRG_THINK_PROC)&none_proc1, + (aNRG_THINK_INIT_PROC)&none_proc1, + &aNRG_force_talk_request, + aNRG_FORCE_TALK_STOP_WADE, + aNRC_THINK_DECIDE_HOUSE_WAIT, + }, + { + (aNRG_THINK_PROC)&none_proc1, + (aNRG_THINK_INIT_PROC)&none_proc1, + &aNRG_force_talk_request, + aNRG_FORCE_TALK_BEFORE_OPEN_DOOR_TALK, + aNRC_THINK_ENTER_WAIT, + }, + { + (aNRG_THINK_PROC)&none_proc1, + &aNRG_before_open_door_talk2_init, + &aNRG_force_talk_request, + aNRG_FORCE_TALK_BEFORE_OPEN_DOOR2_TALK, + aNRC_THINK_ENTER_WAIT, + }, + { + &aNRG_enter_wait, + (aNRG_THINK_INIT_PROC)&none_proc1, + (aNPC_TALK_REQUEST_PROC)&none_proc1, + aNRG_FORCE_TALK_CALL, + aNRC_THINK_ENTER_WAIT, + }, + { + &aNRG_restart_wait, + (aNRG_THINK_INIT_PROC)&none_proc1, + (aNPC_TALK_REQUEST_PROC)&none_proc1, + aNRG_FORCE_TALK_CALL, + aNRC_THINK_RESTART_WAIT, + }, + { + (aNRG_THINK_PROC)&none_proc1, + (aNRG_THINK_INIT_PROC)&none_proc1, + &aNRG_force_talk_request, + aNRG_FORCE_TALK_HOUSE_TAKEN, + aNRC_THINK_DECIDE_HOUSE_WAIT, + }, + { + (aNRG_THINK_PROC)&none_proc1, + (aNRG_THINK_INIT_PROC)&none_proc1, + &aNRG_force_talk_request, + aNRG_FORCE_TALK_HOUSE_VACANT, + aNRC_THINK_DECIDE_HOUSE_WAIT, + }, + { + &aNRG_turn, + &aNRG_exit_turn_init, + (aNPC_TALK_REQUEST_PROC)&none_proc1, + aNRG_FORCE_TALK_CALL, + aNRC_THINK_EXIT_TURN, + }, + { + &aNRG_exit, + (aNRG_THINK_INIT_PROC)&none_proc1, + (aNPC_TALK_REQUEST_PROC)&none_proc1, + aNRG_FORCE_TALK_CALL, + aNRC_THINK_EXIT, + }, + { + (aNRG_THINK_PROC)&none_proc1, + (aNRG_THINK_INIT_PROC)&none_proc1, + (aNPC_TALK_REQUEST_PROC)&none_proc1, + aNRG_FORCE_TALK_CALL, + aNRC_THINK_WAIT, + }, + }; + // clang-format on + aNRG_setup_think_c* think_data = &dt_tbl[think_idx]; + + rcn_guide->think_idx = think_idx; + rcn_guide->think_proc = think_data->think_proc; + rcn_guide->npc_class.talk_info.talk_request_proc = think_data->talk_request_proc; + rcn_guide->talk_idx = think_data->talk_idx; + rcn_guide->next_think_idx = think_data->next_think_idx; + (*think_data->think_init_proc)(rcn_guide, play); +} + +static void aNRG_think_proc(NPC_ACTOR* nactorx, GAME_PLAY* play, int type) { + static aNPC_SUB_PROC think_proc[] = { &aNRG_think_init_proc, &aNRG_think_main_proc }; + + (*think_proc[type])(nactorx, play); +} + +static void aNRG_schedule_init_proc(NPC_ACTOR* nactorx, GAME_PLAY* play) { + nactorx->think.think_proc = &aNRG_think_proc; + Common_Get(clip).npc_clip->think_proc(nactorx, play, aNPC_THINK_SPECIAL, 0); +} + +static void aNRG_schedule_main_proc(NPC_ACTOR* nactorx, GAME_PLAY* play) { + int res = Common_Get(clip).npc_clip->think_proc(nactorx, play, -1, 1); + + if (res == 0) { + Common_Get(clip).npc_clip->think_proc(nactorx, play, -1, 2); + } +} + +static void aNRG_schedule_proc(NPC_ACTOR* nactorx, GAME_PLAY* play, int type) { + static aNPC_SUB_PROC sche_proc[] = { &aNRG_schedule_init_proc, &aNRG_schedule_main_proc }; + + (*sche_proc[type])(nactorx, play); +} diff --git a/src/ac_npc_rcn_guide_talk.c_inc b/src/ac_npc_rcn_guide_talk.c_inc new file mode 100644 index 00000000..45e45bfb --- /dev/null +++ b/src/ac_npc_rcn_guide_talk.c_inc @@ -0,0 +1,170 @@ +enum { + aNRG_TALK_DEMAND_PAYMENT, + aNRG_TALK_MENU_OPEN_WAIT, + aNRG_TALK_MENU_CLOSE_WAIT, + aNRG_TALK_DEMO_START_WAIT, + aNRG_TALK_DEMO_END_WAIT, + aNRG_TALK_FINISHED, + + aNRG_TALK_NUM +}; + +static void aNRG_demand_payment_change_talk_proc(NPC_RCN_GUIDE_ACTOR* rcn_guide, int talk_proc_idx); + +static void aNRG_demand_payment_talk_proc(NPC_RCN_GUIDE_ACTOR* rcn_guide, GAME_PLAY* play) { + u16 order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); + + if (order != 0) { + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + mMsg_REQUEST_MAIN_DISAPPEAR_WAIT_TYPE1(); + aNRG_demand_payment_change_talk_proc(rcn_guide, aNRG_TALK_MENU_OPEN_WAIT); + } +} + +static void aNRG_menu_open_wait_talk_proc(NPC_RCN_GUIDE_ACTOR* rcn_guide, GAME_PLAY* play) { + if (mMsg_CHECK_MAIN_WAIT() == TRUE) { + Submenu* submenu = &play->submenu; + int idx = mPr_GetPossessionItemIdxWithCond(Now_Private, ITM_MONEY_1000, mPr_ITEM_COND_QUEST); + + mSM_open_submenu(submenu, mSM_OVL_INVENTORY, mSM_IV_OPEN_QUEST, idx); + mMsg_SET_LOCKCONTINUE(); + aNRG_demand_payment_change_talk_proc(rcn_guide, aNRG_TALK_MENU_CLOSE_WAIT); + } +} + +static void aNRG_menu_close_wait_talk_proc(NPC_RCN_GUIDE_ACTOR* rcn_guide, GAME_PLAY* play) { + Submenu* submenu = &play->submenu; + + if (submenu->open_flag == FALSE) { + if (submenu->item_p->item == EMPTY_NO) { + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + + mMsg_request_main_appear_wait_type1(msg_p); + mMsg_ChangeMsgData(msg_p, 0x07EB); /* 'You better pay it all back, or I will have to...' */ + mMsg_Set_ForceNext(msg_p); + mMsg_Unset_LockContinue(msg_p); + aNRG_demand_payment_change_talk_proc(rcn_guide, aNRG_TALK_DEMAND_PAYMENT); /* Go back to first state */ + } else { + aNRG_demand_payment_change_talk_proc(rcn_guide, aNRG_TALK_DEMO_START_WAIT); /* Handed over the Bells */ + } + } +} + +static void aNRG_demo_start_wait_talk_proc(NPC_RCN_GUIDE_ACTOR* rcn_guide, GAME_PLAY* play) { + if (Common_Get(clip).handOverItem_clip->request_mode == aHOI_REQUEST_TRANS_WAIT) { + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 1, 3); + aNRG_demand_payment_change_talk_proc(rcn_guide, aNRG_TALK_DEMO_END_WAIT); + } +} + +static void aNRG_demo_end_wait_talk_proc(NPC_RCN_GUIDE_ACTOR* rcn_guide, GAME_PLAY* play) { + if (Common_Get(clip).handOverItem_clip->master_actor == NULL) { + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + + aNRG_set_shop_address(rcn_guide); + rcn_guide->next_think_idx = 14; + mMsg_request_main_appear_wait_type1(msg_p); + mMsg_Set_ForceNext(msg_p); + aNRG_demand_payment_change_talk_proc(rcn_guide, aNRG_TALK_FINISHED); + } +} + +static void aNRG_demand_payment_change_talk_proc(NPC_RCN_GUIDE_ACTOR* rcn_guide, int talk_proc_idx) { + // clang-format off + static aNRG_TALK_PROC talk_proc[] = { + &aNRG_demand_payment_talk_proc, + &aNRG_menu_open_wait_talk_proc, + &aNRG_menu_close_wait_talk_proc, + &aNRG_demo_start_wait_talk_proc, + &aNRG_demo_end_wait_talk_proc, + (aNRG_TALK_PROC)&none_proc1, + }; + // clang-format on + + rcn_guide->talk_proc = talk_proc[talk_proc_idx]; +} + +static void aNRG_set_force_talk_info(ACTOR* actorx) { + // clang-format off + static aNRG_talk_data_c dt_tbl[] = { + { 0x07DE, TRUE, CAMERA2_PROCESS_NORMAL, TRUE, (aNRG_TALK_PROC)&none_proc1 }, /* Step down from train station */ + { 0x07DF, TRUE, CAMERA2_PROCESS_TALK, FALSE, (aNRG_TALK_PROC)&none_proc1 }, /* Ask about call from Rover */ + { 0x07E1, TRUE, CAMERA2_PROCESS_TALK, FALSE, (aNRG_TALK_PROC)&none_proc1 }, /* Show houses */ + { 0x07E2, TRUE, CAMERA2_PROCESS_NORMAL, FALSE, (aNRG_TALK_PROC)&none_proc1 }, /* Player tries leaving acre */ + { 0x07E4, FALSE, CAMERA2_PROCESS_NORMAL, FALSE, (aNRG_TALK_PROC)&none_proc1 }, /* Player enters empty house */ + { 0x07E3, FALSE, CAMERA2_PROCESS_NORMAL, FALSE, (aNRG_TALK_PROC)&none_proc1 }, /* Player enters taken house */ + { 0x07E5, TRUE, CAMERA2_PROCESS_TALK, TRUE, (aNRG_TALK_PROC)&none_proc1 }, /* Player exits taken house */ + { 0x07E6, TRUE, CAMERA2_PROCESS_TALK, TRUE, &aNRG_demand_payment_talk_proc }, /* Player exits empty house */ + }; + // clang-format on + + NPC_RCN_GUIDE_ACTOR* rcn_guide = (NPC_RCN_GUIDE_ACTOR*)actorx; + int talk_idx = rcn_guide->talk_idx; + aNRG_talk_data_c* data = &dt_tbl[talk_idx]; + + mDemo_Set_msg_num(data->msg_no); + mDemo_Set_talk_turn(data->turn_flag); + mDemo_Set_camera(data->camera_type); + rcn_guide->talk_proc_idx = aNRG_TALK_DEMAND_PAYMENT; + rcn_guide->talk_proc = data->talk_proc; + if (data->melody_flag == TRUE) { + rcn_guide->npc_class.talk_info.melody_inst = rcn_guide->melody_copy; + } else { + rcn_guide->npc_class.talk_info.melody_inst = 0; + } + + if (talk_idx == 0) { + mBGMPsComp_make_ps_quiet(0); + } +} + +static void aNRG_force_talk_request(ACTOR* actorx, GAME* game) { + mDemo_Request(mDemo_TYPE_SPEAK, actorx, &aNRG_set_force_talk_info); +} + +static void aNRG_set_norm_talk_info(ACTOR* actorx) { + static aNRG_talk_data_c dt_tbl[] = { + { 0x0820, TRUE, CAMERA2_PROCESS_TALK, FALSE, (aNRG_TALK_PROC)&none_proc1 }, /* Normal talk about houses */ + }; + + NPC_RCN_GUIDE_ACTOR* rcn_guide = (NPC_RCN_GUIDE_ACTOR*)actorx; + aNRG_talk_data_c* data = &dt_tbl[rcn_guide->talk_idx]; + + mDemo_Set_msg_num(data->msg_no); + mDemo_Set_talk_turn(data->turn_flag); + mDemo_Set_camera(data->camera_type); + rcn_guide->talk_proc_idx = aNRG_TALK_DEMAND_PAYMENT; + rcn_guide->talk_proc = data->talk_proc; + if (data->melody_flag == TRUE) { + rcn_guide->npc_class.talk_info.melody_inst = rcn_guide->melody_copy; + } else { + rcn_guide->npc_class.talk_info.melody_inst = 0; + } +} + +static void aNRG_norm_talk_request(ACTOR* actorx, GAME* game) { + mDemo_Request(mDemo_TYPE_TALK, actorx, &aNRG_set_norm_talk_info); +} + +static int aNRG_talk_init(ACTOR* actorx, GAME* game) { + NPC_RCN_GUIDE_ACTOR* rcn_guide = (NPC_RCN_GUIDE_ACTOR*)actorx; + + rcn_guide->npc_class.talk_info.talk_request_proc = (aNPC_TALK_REQUEST_PROC)&none_proc1; + mDemo_Set_ListenAble(); + return TRUE; +} + +static int aNRG_talk_end_chk(ACTOR* actorx, GAME* game) { + NPC_RCN_GUIDE_ACTOR* rcn_guide = (NPC_RCN_GUIDE_ACTOR*)actorx; + GAME_PLAY* play = (GAME_PLAY*)game; + int res = FALSE; + + (*rcn_guide->talk_proc)(rcn_guide, play); + if (mDemo_Check(mDemo_TYPE_SPEAK, actorx) == FALSE && mDemo_Check(mDemo_TYPE_TALK, actorx) == FALSE) { + /* We're done talking so move onto the next schedule step */ + aNRG_setup_think_proc(rcn_guide, play, rcn_guide->next_think_idx); + res = TRUE; + } + + return res; +} diff --git a/src/ac_shop_move.c_inc b/src/ac_shop_move.c_inc index 67a2669e..1444a046 100644 --- a/src/ac_shop_move.c_inc +++ b/src/ac_shop_move.c_inc @@ -234,7 +234,7 @@ static void aSHOP_open_wait(STRUCTURE_ACTOR* shop, GAME_PLAY* play) { actor = &shop->actor_class; game = &play->game; - if (mPlib_check_player_actor_main_index_OutDoorMove(play) != FALSE) { + if (mPlib_check_player_actor_main_index_OutDoorMove(&play->game) != FALSE) { return; } From 39b78bb289a80927d6c1b7b5faaeb15a421be0bf Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Thu, 27 Jun 2024 18:29:50 -0400 Subject: [PATCH 035/234] Misc fixes and improvements for intro demo --- include/audio_defs.h | 2 +- src/ac_intro_demo.c | 4 ++-- src/ac_intro_demo_move.c_inc | 4 ++-- src/ac_npc_rcn_guide.c | 5 +++-- src/ac_npc_rcn_guide_schedule.c_inc | 5 +++-- src/ac_npc_rcn_guide_talk.c_inc | 2 +- 6 files changed, 12 insertions(+), 10 deletions(-) diff --git a/include/audio_defs.h b/include/audio_defs.h index f49c1f1e..b7061c33 100644 --- a/include/audio_defs.h +++ b/include/audio_defs.h @@ -202,12 +202,12 @@ typedef enum bgm_e { BGM_POLICE_BOX, BGM_SAVE, BGM_INTRO_ARRIVE, - BGM_INTRO_STATION, BGM_INTRO_RCN_GUIDE, BGM_INTRO_SELECT_HOUSE, BGM_INTRO_SELECT_HOUSE2, BGM_INTRO_FIND_SHOP, BGM_INTRO_CHORES, + BGM_HALLOWEEN, BGM_XMAS_EVE, BGM_FIREWORKS_FESTIVAL, BGM_CHERRY_BLOSSOM_FESTIVAL, diff --git a/src/ac_intro_demo.c b/src/ac_intro_demo.c index 59da20b7..83a54b03 100644 --- a/src/ac_intro_demo.c +++ b/src/ac_intro_demo.c @@ -67,7 +67,7 @@ static void aID_actor_ct(ACTOR* actorx, GAME* game) { intro_demo->_1A4 = TRUE; intro_demo->next_action = aID_ACT_DECIDE_HOUSE; aID_setupAction(intro_demo, play, aID_ACT_BIRTH_RCN_GUIDE); - mBGMPsComp_make_ps_demo(BGM_INTRO_STATION, 0x168); + mBGMPsComp_make_ps_demo(BGM_INTRO_RCN_GUIDE, 0x168); break; default: aID_setupAction(intro_demo, play, 0); @@ -89,7 +89,7 @@ static void aID_actor_dt(ACTOR* actorx, GAME* game) { } if (intro_demo->first_field_bgm_state == 2) { - mBGMPsComp_delete_ps_fieldSuddenEv(BGM_INTRO_SELECT_HOUSE2, 0x168); + mBGMPsComp_delete_ps_fieldSuddenEv(BGM_INTRO_FIND_SHOP, 0x168); } } diff --git a/src/ac_intro_demo_move.c_inc b/src/ac_intro_demo_move.c_inc index efa097ac..bef95a73 100644 --- a/src/ac_intro_demo_move.c_inc +++ b/src/ac_intro_demo_move.c_inc @@ -5,7 +5,7 @@ static void aID_change_player_demo_standing_train(GAME* game) { } static void aID_set_first_field_bgm(INTRO_DEMO_ACTOR* intro_demo) { - mBGMPsComp_make_ps_fieldSuddenEv(BGM_INTRO_SELECT_HOUSE2, 0x168, 1); + mBGMPsComp_make_ps_fieldSuddenEv(BGM_INTRO_FIND_SHOP, 0x168, 1); mBGMPsComp_scene_mode(1); intro_demo->first_field_bgm_state = 2; } @@ -258,7 +258,7 @@ static void aID_decide_house_init(INTRO_DEMO_ACTOR* intro_demo, GAME_PLAY* play) static void aID_retire_rcn_guide_wait_init(INTRO_DEMO_ACTOR* intro_demo, GAME_PLAY* play) { mPlib_request_main_demo_wait_type1(&play->game, 0, NULL); - mBGMPsComp_delete_ps_demo(BGM_INTRO_SELECT_HOUSE, 0x168); + mBGMPsComp_delete_ps_demo(BGM_INTRO_SELECT_HOUSE2, 0x168); mBGMPsComp_make_ps_fc_quiet(0x2D0); intro_demo->first_field_bgm_state = 1; } diff --git a/src/ac_npc_rcn_guide.c b/src/ac_npc_rcn_guide.c index 34f1eaf4..97c9b91e 100644 --- a/src/ac_npc_rcn_guide.c +++ b/src/ac_npc_rcn_guide.c @@ -141,8 +141,9 @@ static void aNRG_actor_save(ACTOR* actorx, GAME* game) { static void aNRG_actor_dt(ACTOR* actorx, GAME* game) { NPC_RCN_GUIDE_ACTOR* rcn_guide = (NPC_RCN_GUIDE_ACTOR*)actorx; - if (rcn_guide->think_idx == 16) { - mBGMPsComp_delete_ps_demo(BGM_INTRO_STATION, 0x168); + /* Stop playing the initial intro music when destruct due to entering a house */ + if (rcn_guide->think_idx == aNRC_THINK_WAIT) { + mBGMPsComp_delete_ps_demo(BGM_INTRO_RCN_GUIDE, 0x168); } Common_Get(clip).npc_clip->dt_proc(actorx, game); diff --git a/src/ac_npc_rcn_guide_schedule.c_inc b/src/ac_npc_rcn_guide_schedule.c_inc index fd4963e1..c8abd00c 100644 --- a/src/ac_npc_rcn_guide_schedule.c_inc +++ b/src/ac_npc_rcn_guide_schedule.c_inc @@ -40,7 +40,8 @@ static void aNRG_decide_house_wait(NPC_RCN_GUIDE_ACTOR* rcn_guide, GAME_PLAY* pl int next_think_idx = -1; if (GET_PLAYER_ACTOR_NOW()->cancel_wade_flag) { - next_think_idx = 7; + /* Player is trying to leave the acre, so let them know they can't */ + next_think_idx = aNRC_THINK_STOP_WADE; } else if (Common_Get(clip).demo_clip != NULL && Common_Get(clip).demo_clip->type == mDemo_CLIP_TYPE_INTRO_DEMO) { ACTOR* demo_actor = (ACTOR*)Common_Get(clip).demo_clip->demo_class; @@ -243,7 +244,7 @@ static void aNRG_exit_turn_init(NPC_RCN_GUIDE_ACTOR* rcn_guide, GAME_PLAY* play) intro_demo->talk_flag = TRUE; } } - rcn_guide->next_think_idx = 15; + rcn_guide->next_think_idx = aNRC_THINK_EXIT; } static void aNRG_setup_think_proc(NPC_RCN_GUIDE_ACTOR* rcn_guide, GAME_PLAY* play, int think_idx) { diff --git a/src/ac_npc_rcn_guide_talk.c_inc b/src/ac_npc_rcn_guide_talk.c_inc index 45e45bfb..27277609 100644 --- a/src/ac_npc_rcn_guide_talk.c_inc +++ b/src/ac_npc_rcn_guide_talk.c_inc @@ -62,7 +62,7 @@ static void aNRG_demo_end_wait_talk_proc(NPC_RCN_GUIDE_ACTOR* rcn_guide, GAME_PL mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); aNRG_set_shop_address(rcn_guide); - rcn_guide->next_think_idx = 14; + rcn_guide->next_think_idx = aNRC_THINK_EXIT_TURN; mMsg_request_main_appear_wait_type1(msg_p); mMsg_Set_ForceNext(msg_p); aNRG_demand_payment_change_talk_proc(rcn_guide, aNRG_TALK_FINISHED); From 992754701cb9c9ca9185f7aa5d9bc100d007699b Mon Sep 17 00:00:00 2001 From: Prakxo Date: Sun, 30 Jun 2024 22:26:20 +0200 Subject: [PATCH 036/234] have OSRTCTime as the og struct --- include/lb_rtc.h | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/include/lb_rtc.h b/include/lb_rtc.h index 89c1987b..418dc094 100644 --- a/include/lb_rtc.h +++ b/include/lb_rtc.h @@ -15,6 +15,16 @@ extern "C" { #define lbRTC_YEAR_MIN 1901 #define lbRTC_YEAR_MAX 2099 +typedef struct OSRTCTime { // from lbrtc library in N64 + u8 sec; + u8 min; + u8 hour; + u8 day; + u8 weekday; + u8 month; + u16 year; +} OSRTCTime; + typedef u8 lbRTC_sec_t; typedef u8 lbRTC_min_t; typedef u8 lbRTC_hour_t; @@ -23,17 +33,7 @@ typedef u8 lbRTC_weekday_t; typedef u8 lbRTC_month_t; typedef u16 lbRTC_year_t; -typedef struct lbRTC_datetime_s { - lbRTC_sec_t sec; - lbRTC_min_t min; - lbRTC_hour_t hour; - lbRTC_day_t day; - lbRTC_weekday_t weekday; - lbRTC_month_t month; - lbRTC_year_t year; -} lbRTC_time_c; /* Name leaked in lbRTC_time_c_save_data_check */ - -typedef lbRTC_time_c OSRTCTime; +typedef OSRTCTime lbRTC_time_c; /* Name leaked in lbRTC_time_c_save_data_check */ typedef struct lbRTC_ymd_s { lbRTC_year_t year; From 4cd184b3b21dc784080aa5a49192e1b44cc49cbb Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Sun, 30 Jun 2024 22:02:44 -0400 Subject: [PATCH 037/234] Implement & link ac_npc_rcn_guide2 --- config/rel_slices.yml | 4 + include/ac_npc.h | 11 +- include/ac_npc_rcn_guide2.h | 22 +- include/ac_shop_design.h | 20 +- include/m_clip.h | 9 +- include/m_demo.h | 2 +- include/m_name_table.h | 5 + include/m_player.h | 2 +- include/m_quest.h | 8 +- src/ac_npc_rcn_guide2.c | 229 ++++ src/ac_npc_rcn_guide2_move.c_inc | 30 + src/ac_npc_rcn_guide2_schedule.c_inc | 374 +++++++ src/ac_npc_rcn_guide2_talk.c_inc | 912 +++++++++++++++ src/m_quest.c | 1529 +++++++++++++------------- 14 files changed, 2362 insertions(+), 795 deletions(-) create mode 100644 src/ac_npc_rcn_guide2.c create mode 100644 src/ac_npc_rcn_guide2_move.c_inc create mode 100644 src/ac_npc_rcn_guide2_schedule.c_inc create mode 100644 src/ac_npc_rcn_guide2_talk.c_inc diff --git a/config/rel_slices.yml b/config/rel_slices.yml index ca0fa774..c7ac2e83 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -761,6 +761,10 @@ ac_npc_rcn_guide.c: .text: [0x8056EED0, 0x8056FFF0] .rodata: [0x806499C0, 0x806499E8] .data: [0x806BEE20, 0x806BF028] +ac_npc_rcn_guide2.c: + .text: [0x8056FFF0, 0x80572050] + .rodata: [0x806499E8, 0x806499F0] + .data: [0x806BF028, 0x806BF4F8] ac_npc_rtc.c: .text: [0x80573044, 0x80574134] .rodata: [0x80649A08, 0x80649A40] diff --git a/include/ac_npc.h b/include/ac_npc.h index 7b1534b4..644e6fad 100644 --- a/include/ac_npc.h +++ b/include/ac_npc.h @@ -160,7 +160,16 @@ typedef struct npc_draw_info_s { /* 0x548 */ u8 _548[0x580 - 0x548]; /* 0x580 */ int animation_id; /* 0x584 */ int texture_bank_idx; - /* 0x588 */ u8 _588[0x5B9 - 0x588]; + /* 0x588 */ u8 _588[0x5B0 - 0x588]; + /* 0x5B0 */ u8 draw_type; + /* 0x5B1 */ u8 _5B1; + /* 0x5B2 */ u8 _5B2; + /* 0x5B3 */ u8 _5B3; + /* 0x5B4 */ u8 _5B4; + /* 0x5B5 */ u8 _5B5; + /* 0x5B6 */ u8 _5B6; + /* 0x5B7 */ u8 _5B7; + /* 0x5B8 */ u8 _5B8; /* 0x5B9 */ u8 _5B9; /* 0x5BA */ u8 _5BA; /* 0x5BB */ u8 _5BB; diff --git a/include/ac_npc_rcn_guide2.h b/include/ac_npc_rcn_guide2.h index 57514077..aefe1068 100644 --- a/include/ac_npc_rcn_guide2.h +++ b/include/ac_npc_rcn_guide2.h @@ -3,11 +3,32 @@ #include "types.h" #include "m_actor.h" +#include "ac_npc.h" #ifdef __cplusplus extern "C" { #endif +typedef struct npc_rcn_guide2_s NPC_RCN_GUIDE2_ACTOR; + +typedef void (*aNRG2_THINK_PROC)(NPC_RCN_GUIDE2_ACTOR*, GAME_PLAY*); +typedef void (*aNRG2_TALK_PROC)(NPC_RCN_GUIDE2_ACTOR*); + +/* sizeof(NPC_RCN_GUIDE2_ACTOR) == 0x9BC */ +struct npc_rcn_guide2_s { + /* 0x000 */ NPC_ACTOR npc_class; + /* 0x994 */ int _994; + /* 0x998 */ int think_idx; + /* 0x99C */ int next_think_idx; + /* 0x9A0 */ aNRG2_THINK_PROC think_proc; + /* 0x9A4 */ int talk_idx; + /* 0x9A8 */ int talk_proc_idx; + /* 0x9AC */ aNRG2_TALK_PROC talk_proc; + /* 0x9B0 */ int counter; + /* 0x9B4 */ int daily_speak_flag; + /* 0x9B8 */ int can_ask_again_flag; +}; + extern ACTOR_PROFILE Npc_Rcn_Guide2_Profile; #ifdef __cplusplus @@ -15,4 +36,3 @@ extern ACTOR_PROFILE Npc_Rcn_Guide2_Profile; #endif #endif - diff --git a/include/ac_shop_design.h b/include/ac_shop_design.h index 70db2115..9a0a3a03 100644 --- a/include/ac_shop_design.h +++ b/include/ac_shop_design.h @@ -8,6 +8,25 @@ extern "C" { #endif +typedef struct shop_design_actor_s SHOP_DESIGN_ACTOR; + +typedef mActor_name_t (*aSD_UNITNUM2ITEMNO_PROC)(int ut_x, int ut_z); +typedef int (*aSD_REPORTGOODSSALE_PROC)(int ut_x, int ut_z); + +typedef struct shop_design_clip_s { + SHOP_DESIGN_ACTOR* design_actor; + aSD_UNITNUM2ITEMNO_PROC unitNum2ItemNo_proc; + aSD_REPORTGOODSSALE_PROC reportGoodsSale_proc; +} aSD_Clip_c; + +struct shop_design_actor_s { + ACTOR actor_class; + mActor_name_t* goods_list; + int goods_list_count; + int goods_list_max; + aSD_Clip_c clip; +}; + extern ACTOR_PROFILE Shop_Design_Profile; #ifdef __cplusplus @@ -15,4 +34,3 @@ extern ACTOR_PROFILE Shop_Design_Profile; #endif #endif - diff --git a/include/m_clip.h b/include/m_clip.h index 68bba9de..c308b0b8 100644 --- a/include/m_clip.h +++ b/include/m_clip.h @@ -24,6 +24,7 @@ #include "ac_handOverItem.h" #include "ac_quest_manager_clip.h" #include "ac_shop_goods_h.h" +#include "ac_shop_design.h" #ifdef __cplusplus extern "C" { @@ -43,7 +44,13 @@ typedef struct clip_s { /* 0x038 */ void* _038; /* 0x03C */ void* _03C; /* 0x040 */ aNPC_Clip_c* npc_clip; - /* 0x044 */ void* _044[(0x060 - 0x044) / sizeof(void*)]; + /* 0x044 */ void* _044; + /* 0x048 */ void* _048; + /* 0x04C */ void* _04C; + /* 0x050 */ void* _050; + /* 0x054 */ aSD_Clip_c* shop_design_clip; + /* 0x058 */ void* _058; + /* 0x05C */ void* _05C; /* 0x060 */ aSM_Clip_c* shop_manekin_clip; /* 0x064 */ void* _064; /* 0x068 */ CLIP_NONE_PROC _068; diff --git a/include/m_demo.h b/include/m_demo.h index 0262c1de..ed016798 100644 --- a/include/m_demo.h +++ b/include/m_demo.h @@ -49,7 +49,7 @@ enum { enum demo_type { mDemo_TYPE_NONE, mDemo_TYPE_SCROLL, - mDemo_TYPE_2, + mDemo_TYPE_EXITSCENE, mDemo_TYPE_DOOR, mDemo_TYPE_4, mDemo_TYPE_SCROLL2, diff --git a/include/m_name_table.h b/include/m_name_table.h index 88d74367..cd1930e9 100644 --- a/include/m_name_table.h +++ b/include/m_name_table.h @@ -594,6 +594,10 @@ extern int mNT_check_unknown(mActor_name_t item_no); #define FTR_DRACAENA_NORTH 0x13B2 #define FTR_DRACAENA_WEST 0x13B3 +#define FTR_MANHOLE_COVER 0x1444 + +#define FTR_BATH_MAT 0x154C + #define HANIWA_START 0x15B0 #define FTR_HANIWA000_SOUTH (HANIWA_START + 0) #define FTR_HANIWA000_EAST (HANIWA_START + 1) @@ -2174,6 +2178,7 @@ extern int mNT_check_unknown(mActor_name_t item_no); #define DOOR1 (DOOR0 + 1) /* 0x4001 */ #define EXIT_DOOR 0x4080 +#define EXIT_DOOR1 (EXIT_DOOR + 1) /* 0x4081 */ #define NPC_HOUSE_START 0x5000 #define NPC_HOUSE000 NPC_HOUSE_START diff --git a/include/m_player.h b/include/m_player.h index fe5e86b3..5b67d843 100644 --- a/include/m_player.h +++ b/include/m_player.h @@ -1368,7 +1368,7 @@ struct player_actor_s { /* 0x138C */ int a_btn_pressed; /* 0x1390 */ int a_btn_triggers_submenu; /* 0x1394 */ mActor_name_t item_in_front; /* item directly in front of the player */ - /* 0x1398 */ xyz_t foward_ut_pos; /* wpos of unit in front of player */ + /* 0x1398 */ xyz_t forward_ut_pos; /* wpos of unit in front of player */ /* 0x13A4 */ s8 update_scene_bg_mode; }; diff --git a/include/m_quest.h b/include/m_quest.h index 4074d193..1cb37261 100644 --- a/include/m_quest.h +++ b/include/m_quest.h @@ -223,13 +223,13 @@ extern void mQst_SetFirstJobStart(mQst_errand_c* errand); extern void mQst_SetFirstJobChangeCloth(mQst_errand_c* errand, mActor_name_t item); extern void mQst_SetFirstJobSeed(mQst_errand_c* errand); extern void mQst_SetFirstJobHello(mQst_errand_c* errand); -extern void mQst_SetFirstJobFurniture(mQst_errand_c* errand, AnmPersonalID_c* pid, mActor_name_t item, u8 slot); +extern void mQst_SetFirstJobFurniture(mQst_errand_c* errand, AnmPersonalID_c* pid, mActor_name_t item, int slot); extern void mQst_SetFirstJobLetter(mQst_errand_c* errand, AnmPersonalID_c* pid); extern void mQst_SetFirstJobLetter2(mQst_errand_c* errand, AnmPersonalID_c* pid); extern void mQst_SetFirstJobOpenQuest(mQst_errand_c* errand); -extern void mQst_SetFirstJobCarpet(mQst_errand_c* errand, AnmPersonalID_c* pid, mActor_name_t item, u8 slot); -extern void mQst_SetFirstJobAxe(mQst_errand_c* errand, AnmPersonalID_c* pid, mActor_name_t item, u8 slot); -extern void mQst_SetFirstJobAxe2(mQst_errand_c* errand, AnmPersonalID_c* pid, mActor_name_t item, u8 slot); +extern void mQst_SetFirstJobCarpet(mQst_errand_c* errand, AnmPersonalID_c* pid, mActor_name_t item, int slot); +extern void mQst_SetFirstJobAxe(mQst_errand_c* errand, AnmPersonalID_c* pid, mActor_name_t item, int slot); +extern void mQst_SetFirstJobAxe2(mQst_errand_c* errand, AnmPersonalID_c* pid, mActor_name_t item, int slot); extern void mQst_SetFirstJobNotice(mQst_errand_c* errand); extern int mQst_GetRandom(int max); extern void mQst_GetGoods_common(mActor_name_t* item, AnmPersonalID_c* pid, int category, mActor_name_t* exist_table, diff --git a/src/ac_npc_rcn_guide2.c b/src/ac_npc_rcn_guide2.c new file mode 100644 index 00000000..95531d34 --- /dev/null +++ b/src/ac_npc_rcn_guide2.c @@ -0,0 +1,229 @@ +#include "ac_npc_rcn_guide2.h" + +#include "m_common_data.h" +#include "m_bgm.h" +#include "m_player_lib.h" +#include "m_font.h" +#include "m_msg.h" +#include "m_soncho.h" +#include "ac_intro_demo.h" + +enum { + aNRG2_JOB1, + aNRG2_JOB2, + aNRG2_JOB3, + aNRG2_JOB4, + aNRG2_JOB5, + aNRG2_JOB6, + aNRG2_JOB7, + aNRG2_JOB8, + aNRG2_JOB9, + aNRG2_JOB10, + aNRG2_JOB11, + + aNRG2_JOB_NUM +}; + +enum { + aNRG2_NORM_TALK_JOB1_START, + aNRG2_NORM_TALK_JOB2_START, + aNRG2_NORM_TALK_JOB3_START, + aNRG2_NORM_TALK_JOB4_START, + aNRG2_NORM_TALK_JOB5_START, + aNRG2_NORM_TALK_JOB5_2_START, + aNRG2_NORM_TALK_JOB6_START, + aNRG2_NORM_TALK_JOB7_START, + aNRG2_NORM_TALK_JOB10_START, + aNRG2_NORM_TALK_JOB11_START, + + aNRG2_NORM_TALK_JOB1_REFUSE, + aNRG2_NORM_TALK_JOB2_REFUSE, + aNRG2_NORM_TALK_JOB3_REFUSE, + aNRG2_NORM_TALK_JOB4_REFUSE, + aNRG2_NORM_TALK_JOB5_REFUSE, + aNRG2_NORM_TALK_JOB5_2_REFUSE, + aNRG2_NORM_TALK_JOB6_REFUSE, + aNRG2_NORM_TALK_JOB7_REFUSE, + + aNRG2_NORM_TALK_J1_CONT1, + aNRG2_NORM_TALK_J1_CONT2, + aNRG2_NORM_TALK_J1_CONT3, + + aNRG2_NORM_TALK_J2_CONT1, + + aNRG2_NORM_TALK_J3_CONT1, + aNRG2_NORM_TALK_J3_CONT2, + + aNRG2_NORM_TALK_J4_CONT1, + aNRG2_NORM_TALK_J4_CONT2, + aNRG2_NORM_TALK_J5_CONT3, + + aNRG2_NORM_TALK_J5_CONT1, + aNRG2_NORM_TALK_J5_CONT2, + + aNRG2_NORM_TALK_J6_CONT1, + aNRG2_NORM_TALK_J6_CONT2, + + aNRG2_NORM_TALK_J7_CONT1, + + aNRG2_NORM_TALK_J10_CONT1, + + aNRG2_NORM_TALK_J11_CONT1, + + aNRG2_NORM_TALK_J1_END, + aNRG2_NORM_TALK_J2_END, + aNRG2_NORM_TALK_J3_END, + aNRG2_NORM_TALK_J4_END, + aNRG2_NORM_TALK_J5_END, + aNRG2_NORM_TALK_J6_END, + aNRG2_NORM_TALK_J7_END, + aNRG2_NORM_TALK_J10_END, + aNRG2_NORM_TALK_J11_END, + + aNRG2_NORM_TALK_AGAIN, + + aNRG2_NORM_TALK_NUM +}; + +enum { + aNRG2_FORCE_TALK_SAY_HELLO, + aNRG2_FORCE_TALK_SAY_HELLO2, + aNRG2_FORCE_TALK_SAY_HELLO_SP, + aNRG2_FORCE_TALK_CLOTH_CHK, + aNRG2_FORCE_TALK_UPSTAIR_CHK, + + aNRG2_FORCE_TALK_NUM +}; + +enum { + aNRG2_THINK_SAY_HELLO, + aNRG2_THINK_SAY_HELLO2, + aNRG2_THINK_SAY_HELLO3, + aNRG2_THINK_SEND_AWAY, + aNRG2_THINK_TALK_START_WAIT, + aNRG2_THINK_JOB_START_WAIT, + aNRG2_THINK_ALL_JOB_END, + + aNRG2_THINK_NUM +}; + +enum { + aNRG2_TALK_SAY_HELLO, + aNRG2_TALK_SAY_HELLO_SP, + aNRG2_TALK_SAY_HELLO_SP2, + aNRG2_TALK_CLOTH_CHK, + aNRG2_TALK_TALK_END_WAIT, + aNRG2_TALK_DEMO_START_WAIT, + aNRG2_TALK_DEMO_END_WAIT, + aNRG2_TALK_DEMO_END_WAIT2, + aNRG2_TALK_JOB_START, + aNRG2_TALK_JOB_END, + aNRG2_TALK_3RD_JOB_END, + aNRG2_TALK_DEMO2_START_WAIT, + aNRG2_TALK_DEMO2_START_WAIT2, + aNRG2_TALK_DEMO2_END, + aNRG2_TALK_GIVE_NEW_PAPER, + aNRG2_TALK_CHECK_MORE_PAPER, + aNRG2_TALK_DECIDE_NEW_TARGET, + aNRG2_TALK_DEMO3_START_WAIT, + aNRG2_TALK_DEMO3_START_WAIT2, + aNRG2_TALK_DEMO3_END_WAIT, + aNRG2_TALK_ALL_JOB_END, + + aNRG2_TALK_NUM +}; + +typedef struct rcn_guide2_talk_info_s { + int msg_no; + aNRG2_TALK_PROC talk_proc; +} aNRG2_talk_info_c; + +static void aNRG2_actor_ct(ACTOR* actorx, GAME* game); +static void aNRG2_actor_save(ACTOR* actorx, GAME* game); +static void aNRG2_actor_dt(ACTOR* actorx, GAME* game); +static void aNRG2_actor_init(ACTOR* actorx, GAME* game); +static void aNRG2_actor_draw(ACTOR* actorx, GAME* game); +static void aNRG2_actor_move(ACTOR* actorx, GAME* game); + +// clang-format off +ACTOR_PROFILE Npc_Rcn_Guide2_Profile = { + mAc_PROFILE_NPC_RCN_GUIDE2, + ACTOR_PART_NPC, + ACTOR_STATE_NONE, + SP_NPC_RCN_GUIDE2, + ACTOR_OBJ_BANK_KEEP, + sizeof(NPC_RCN_GUIDE2_ACTOR), + &aNRG2_actor_ct, + &aNRG2_actor_dt, + &aNRG2_actor_init, + mActor_NONE_PROC1, + &aNRG2_actor_save, +}; +// clang-format on + +static void aNRG2_change_talk_proc(NPC_RCN_GUIDE2_ACTOR* rcn_guide2, int talk_proc_idx); +static void aNRG2_force_talk_request(ACTOR* actorx, GAME* game); +static int aNRG2_talk_init(ACTOR* actorx, GAME* game); +static int aNRG2_talk_end_chk(ACTOR* actorx, GAME* game); + +static void aNRG2_schedule_proc(NPC_ACTOR* nactorx, GAME_PLAY* game, int sched_idx); +static void aNRG2_setup_think_proc(NPC_RCN_GUIDE2_ACTOR* rcn_guide2, GAME_PLAY* play, int think_idx); + +static void aNRG2_actor_ct(ACTOR* actorx, GAME* game) { + // clang-format off + static aNPC_ct_data_c ct_data = { + &aNRG2_actor_move, + &aNRG2_actor_draw, + 5, + &aNRG2_force_talk_request, + &aNRG2_talk_init, + &aNRG2_talk_end_chk, + 1, + }; + // clang-format on + + NPC_RCN_GUIDE2_ACTOR* rcn_guide2 = (NPC_RCN_GUIDE2_ACTOR*)actorx; + + if (Common_Get(clip).npc_clip->birth_check_proc(actorx, game) == TRUE) { + int shop_type = 0; + + switch (actorx->npc_id) { + case SP_NPC_RCN_GUIDE2: + shop_type = 0; + break; + case SP_NPC_RCN_GUIDE2_1: + shop_type = 1; + break; + case SP_NPC_RCN_GUIDE2_2: + shop_type = 2; + break; + case SP_NPC_RCN_GUIDE2_3: + shop_type = 3; + break; + } + + rcn_guide2->npc_class.draw.draw_type = shop_type; + rcn_guide2->npc_class.schedule.schedule_proc = &aNRG2_schedule_proc; + Common_Get(clip).npc_clip->ct_proc(actorx, game, &ct_data); + } +} + +static void aNRG2_actor_save(ACTOR* actorx, GAME* game) { + Common_Get(clip).npc_clip->save_proc(actorx, game); +} + +static void aNRG2_actor_dt(ACTOR* actorx, GAME* game) { + Common_Get(clip).npc_clip->dt_proc(actorx, game); +} + +static void aNRG2_actor_init(ACTOR* actorx, GAME* game) { + Common_Get(clip).npc_clip->init_proc(actorx, game); +} + +static void aNRG2_actor_draw(ACTOR* actorx, GAME* game) { + Common_Get(clip).npc_clip->draw_proc(actorx, game); +} + +#include "../src/ac_npc_rcn_guide2_move.c_inc" +#include "../src/ac_npc_rcn_guide2_talk.c_inc" +#include "../src/ac_npc_rcn_guide2_schedule.c_inc" diff --git a/src/ac_npc_rcn_guide2_move.c_inc b/src/ac_npc_rcn_guide2_move.c_inc new file mode 100644 index 00000000..08775226 --- /dev/null +++ b/src/ac_npc_rcn_guide2_move.c_inc @@ -0,0 +1,30 @@ +static void aNRG2_set_exit_info(ACTOR* actorx) { + GAME_PLAY* play = (GAME_PLAY*)gamePT; + + if (goto_other_scene(play, Common_GetPointer(structure_exit_door_data), TRUE) != 1) { + mDemo_End(actorx); + } else { + mBGMPsComp_scene_mode(14); + mBGMPsComp_make_ps_wipe(0x195); + } +} + +static void aNRG2_exit_check(ACTOR* actorx, GAME_PLAY* play) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR(play); + + if (player != NULL && player->item_in_front == EXIT_DOOR1 && play->fb_wipe_mode == 0) { + mDemo_Request(mDemo_TYPE_EXITSCENE, actorx, &aNRG2_set_exit_info); + } +} + +static void aNRG2_actor_move(ACTOR* actorx, GAME* game) { + NPC_RCN_GUIDE2_ACTOR* rcn_guide2 = (NPC_RCN_GUIDE2_ACTOR*)actorx; + GAME_PLAY* play = (GAME_PLAY*)game; + + if (rcn_guide2->npc_class.action.idx == aNPC_ACT_WAIT) { + rcn_guide2->npc_class.action.step = aNPC_ACTION_END_STEP; + } + + Common_Get(clip).npc_clip->move_proc(actorx, game); + aNRG2_exit_check(actorx, play); +} diff --git a/src/ac_npc_rcn_guide2_schedule.c_inc b/src/ac_npc_rcn_guide2_schedule.c_inc new file mode 100644 index 00000000..f83eba0f --- /dev/null +++ b/src/ac_npc_rcn_guide2_schedule.c_inc @@ -0,0 +1,374 @@ +static int aNRG2_setup_j1_cont(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + int talk_idx = aNRG2_NORM_TALK_J1_CONT1; + + if (mPr_GetPossessionItemIdxWithCond(Now_Private, ITM_CLOTH016, mPr_ITEM_COND_NORMAL) == -1) { + if (mPr_GetPossessionItemIdx(Now_Private, EMPTY_NO) == -1) { + talk_idx = aNRG2_NORM_TALK_J1_CONT3; + } else { + talk_idx = aNRG2_NORM_TALK_J1_CONT2; + } + } + + return talk_idx; +} + +static int aNRG2_setup_j2_cont(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + int talk_idx = aNRG2_NORM_TALK_J2_CONT1; + + if (rcn_guide2->can_ask_again_flag == TRUE) { + talk_idx = aNRG2_NORM_TALK_AGAIN; + } + + return talk_idx; +} + +static int aNRG2_setup_j3_cont(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + mQst_errand_c* errand_p = mQst_GetFirstJobData(); + int talk_idx = aNRG2_NORM_TALK_J3_CONT1; + + if (mQst_CheckRemoveTarget(errand_p) == TRUE) { + talk_idx = aNRG2_NORM_TALK_J3_CONT2; + } else if (rcn_guide2->can_ask_again_flag == TRUE) { + talk_idx = aNRG2_NORM_TALK_AGAIN; + } + + return talk_idx; +} + +static int aNRG2_setup_j4_cont(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + mQst_errand_c* errand_p = mQst_GetFirstJobData(); + int talk_idx = aNRG2_NORM_TALK_J4_CONT1; + + if (rcn_guide2->can_ask_again_flag == TRUE) { + talk_idx = aNRG2_NORM_TALK_AGAIN; + } else if (mQst_CheckRemoveTarget(errand_p) == TRUE) { + talk_idx = aNRG2_NORM_TALK_J4_CONT2; + } else if (errand_p->base.progress == 3) { + talk_idx = aNRG2_NORM_TALK_J5_CONT3; + } + + return talk_idx; +} + +static int aNRG2_setup_j5_cont(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + mQst_errand_c* errand_p = mQst_GetFirstJobData(); + int talk_idx = aNRG2_NORM_TALK_J5_CONT1; + + if (mQst_CheckRemoveTarget(errand_p) == TRUE) { + talk_idx = aNRG2_NORM_TALK_J5_CONT2; + } + + return talk_idx; +} + +static int aNRG2_setup_j6_cont(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + mQst_errand_c* errand_p = mQst_GetFirstJobData(); + int talk_idx = aNRG2_NORM_TALK_J6_CONT1; + + if (mQst_CheckRemoveTarget(errand_p) == TRUE) { + talk_idx = aNRG2_NORM_TALK_J6_CONT2; + } else if (rcn_guide2->can_ask_again_flag == TRUE) { + talk_idx = aNRG2_NORM_TALK_AGAIN; + } + + return talk_idx; +} + +static int aNRG2_setup_j7_cont(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + int talk_idx = aNRG2_NORM_TALK_J7_CONT1; + + if (rcn_guide2->can_ask_again_flag == TRUE) { + talk_idx = aNRG2_NORM_TALK_AGAIN; + } + + return talk_idx; +} + +static int aNRG2_setup_j10_cont(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + return aNRG2_NORM_TALK_J10_CONT1; +} + +static int aNRG2_setup_j11_cont(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + return aNRG2_NORM_TALK_J11_CONT1; +} + +typedef int (*aNRG2_SETUP_JOB_CONT_PROC)(NPC_RCN_GUIDE2_ACTOR*); + +static void aNRG2_setup_job_cont(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + // clang-format off + static aNRG2_SETUP_JOB_CONT_PROC setup_job_cont_proc[] = { + &aNRG2_setup_j1_cont, + &aNRG2_setup_j2_cont, + &aNRG2_setup_j3_cont, + &aNRG2_setup_j4_cont, + &aNRG2_setup_j5_cont, + &aNRG2_setup_j6_cont, + &aNRG2_setup_j7_cont, + &aNRG2_setup_j4_cont, + &aNRG2_setup_j6_cont, + &aNRG2_setup_j10_cont, + &aNRG2_setup_j11_cont, + }; + // clang-format on + + mQst_errand_c* errand_p = mQst_GetFirstJobData(); + int idx = errand_p->base.quest_kind - mQst_ERRAND_FIRSTJOB_CHANGE_CLOTH; + + rcn_guide2->talk_idx = (*setup_job_cont_proc[idx])(rcn_guide2); +} + +static void aNRG2_talk_start_wait(NPC_RCN_GUIDE2_ACTOR* rcn_guide2, GAME_PLAY* play) { + // clang-format off + static int job_end_talk_idx[] = { + aNRG2_NORM_TALK_J1_END, + aNRG2_NORM_TALK_J2_END, + aNRG2_NORM_TALK_J3_END, + aNRG2_NORM_TALK_J4_END, + aNRG2_NORM_TALK_J5_END, + aNRG2_NORM_TALK_J6_END, + aNRG2_NORM_TALK_J7_END, + aNRG2_NORM_TALK_J4_END, + aNRG2_NORM_TALK_J6_END, + aNRG2_NORM_TALK_J10_END, + aNRG2_NORM_TALK_J11_END, + }; + // clang-format on + + mQst_errand_c* errand_p = mQst_GetFirstJobData(); + int idx = errand_p->base.quest_kind - mQst_ERRAND_FIRSTJOB_CHANGE_CLOTH; + + if (mQst_CheckFirstJobFin(errand_p) == TRUE) { + rcn_guide2->talk_idx = job_end_talk_idx[idx]; + rcn_guide2->can_ask_again_flag = FALSE; + } else { + aNRG2_setup_job_cont(rcn_guide2); + } +} + +static void aNRG2_job_start_wait(NPC_RCN_GUIDE2_ACTOR* rcn_guide2, GAME_PLAY* play) { + // clang-format off + static int job_start_talk_idx[] = { + aNRG2_NORM_TALK_JOB1_START, + aNRG2_NORM_TALK_JOB2_START, + aNRG2_NORM_TALK_JOB3_START, + aNRG2_NORM_TALK_JOB4_START, + aNRG2_NORM_TALK_JOB5_START, + aNRG2_NORM_TALK_JOB6_START, + aNRG2_NORM_TALK_JOB7_START, + aNRG2_NORM_TALK_JOB4_START, + aNRG2_NORM_TALK_JOB6_START, + aNRG2_NORM_TALK_JOB10_START, + aNRG2_NORM_TALK_JOB11_START, + }; + // clang-format on + + // clang-format off + static int job_start_refuse_talk_idx[] = { + aNRG2_NORM_TALK_JOB1_REFUSE, + aNRG2_NORM_TALK_JOB2_REFUSE, + aNRG2_NORM_TALK_JOB3_REFUSE, + aNRG2_NORM_TALK_JOB4_REFUSE, + aNRG2_NORM_TALK_JOB5_REFUSE, + aNRG2_NORM_TALK_JOB6_REFUSE, + aNRG2_NORM_TALK_JOB7_REFUSE, + aNRG2_NORM_TALK_JOB4_REFUSE, + aNRG2_NORM_TALK_JOB6_REFUSE, + -1, + -1, + }; + // clang-format on + + mQst_errand_c* errand_p = mQst_GetFirstJobData(); + int idx = errand_p->base.quest_kind - mQst_ERRAND_FIRSTJOB_CHANGE_CLOTH; + + if (aNRG2_check_job_start() == TRUE) { + rcn_guide2->talk_idx = job_start_talk_idx[idx]; + } else { + rcn_guide2->talk_idx = job_start_refuse_talk_idx[idx]; + } +} + +static void aNRG2_all_job_end(NPC_RCN_GUIDE2_ACTOR* rcn_guide2, GAME_PLAY* play) { + if (play->fb_wipe_mode == 0) { + rcn_guide2->counter++; + + if (rcn_guide2->counter > 60) { + aNRG2_setup_think_proc(rcn_guide2, play, aNRG2_THINK_SEND_AWAY); + } + } +} + +static void aNRG2_think_main_proc(NPC_ACTOR* nactorx, GAME_PLAY* play) { + NPC_RCN_GUIDE2_ACTOR* rcn_guide2 = (NPC_RCN_GUIDE2_ACTOR*)nactorx; + + if (nactorx->action.step == aNPC_ACTION_END_STEP) { + (*rcn_guide2->think_proc)(rcn_guide2, play); + } +} + +static void aNRG2_think_init_proc(NPC_ACTOR* nactorx, GAME_PLAY* play) { + NPC_RCN_GUIDE2_ACTOR* rcn_guide2 = (NPC_RCN_GUIDE2_ACTOR*)nactorx; + mQst_errand_c* errand_p = mQst_GetFirstJobData(); + int think_idx; + + rcn_guide2->npc_class.condition_info.hide_request = FALSE; + rcn_guide2->npc_class.actor_class.status_data.weight = 255; + rcn_guide2->npc_class.actor_class.shape_info.rotation.y = rcn_guide2->npc_class.actor_class.player_angle_y; + rcn_guide2->npc_class.actor_class.world.angle.y = rcn_guide2->npc_class.actor_class.player_angle_y; + + if (Common_Get(quest).work == 0) { + Common_Get(quest).work = 1; + rcn_guide2->daily_speak_flag = TRUE; + + if (errand_p->base.quest_kind == mQst_ERRAND_FIRSTJOB_START) { + if (Now_Private->cloth.item == ITM_CLOTH016) { + aNRG2_setup_job(aNRG2_JOB2); + think_idx = aNRG2_THINK_SAY_HELLO3; + } else { + aNRG2_setup_job(aNRG2_JOB1); + think_idx = aNRG2_THINK_SAY_HELLO; + } + } else { + think_idx = aNRG2_THINK_SAY_HELLO2; + } + } else if (errand_p->base.progress == 1) { + think_idx = aNRG2_THINK_JOB_START_WAIT; + } else { + think_idx = aNRG2_THINK_TALK_START_WAIT; + } + + if (Save_Get(scene_no) == SCENE_DEPART) { + /* Replace the upstairs warps with reserve items */ + mFI_UtNumtoFGSet_common(RSV_POLICE_ITEM_0, 7, 1, FALSE); + mFI_UtNumtoFGSet_common(RSV_POLICE_ITEM_0, 8, 1, FALSE); + } + + aNRG2_setup_think_proc(rcn_guide2, play, think_idx); +} + +static void aNRG2_send_away_init(NPC_RCN_GUIDE2_ACTOR* rcn_guide2, GAME_PLAY* play) { + goto_other_scene(play, Common_GetPointer(structure_exit_door_data), 1); + mBGMPsComp_scene_mode(14); +} + +static void aNRG2_talk_start_wait_init(NPC_RCN_GUIDE2_ACTOR* rcn_guide2, GAME_PLAY* play) { + aNRG2_talk_start_wait(rcn_guide2, play); +} + +static void aNRG2_job_start_wait_init(NPC_RCN_GUIDE2_ACTOR* rcn_guide2, GAME_PLAY* play) { + aNRG2_job_start_wait(rcn_guide2, play); +} + +static void aNRG2_all_job_end_init(NPC_RCN_GUIDE2_ACTOR* rcn_guide2, GAME_PLAY* play) { + INTRO_DEMO_ACTOR* intro_demo; + + mPlib_request_main_demo_wait_type1(&play->game, 0, NULL); + intro_demo = + (INTRO_DEMO_ACTOR*)Actor_info_name_search(&play->actor_info, mAc_PROFILE_INTRO_DEMO, ACTOR_PART_CONTROL); + intro_demo->_1A8 = TRUE; +} + +typedef void (*aNRG2_THINK_INIT_PROC)(NPC_RCN_GUIDE2_ACTOR*, GAME_PLAY*); + +typedef struct rcn_guide2_think_data_s { + aNRG2_THINK_PROC think_proc; + aNRG2_THINK_INIT_PROC think_init_proc; + aNPC_TALK_REQUEST_PROC talk_request_proc; + u8 talk_idx; + u8 next_think_idx; +} aNRG2_think_data_c; + +static void aNRG2_setup_think_proc(NPC_RCN_GUIDE2_ACTOR* rcn_guide2, GAME_PLAY* play, int think_idx) { + // clang-format off + static aNRG2_think_data_c dt_tbl[] = { + { + (aNRG2_THINK_PROC)&none_proc1, + (aNRG2_THINK_INIT_PROC)&none_proc1, + &aNRG2_force_talk_request, + aNRG2_FORCE_TALK_SAY_HELLO, + aNRG2_THINK_SEND_AWAY, + }, + { + (aNRG2_THINK_PROC)&none_proc1, + (aNRG2_THINK_INIT_PROC)&none_proc1, + &aNRG2_force_talk_request, + aNRG2_FORCE_TALK_SAY_HELLO2, + aNRG2_THINK_SEND_AWAY, + }, + { + (aNRG2_THINK_PROC)&none_proc1, + (aNRG2_THINK_INIT_PROC)&none_proc1, + &aNRG2_force_talk_request, + aNRG2_FORCE_TALK_SAY_HELLO_SP, + aNRG2_THINK_SEND_AWAY, + }, + { + (aNRG2_THINK_PROC)&none_proc1, + &aNRG2_send_away_init, + (aNPC_TALK_REQUEST_PROC)&none_proc1, + 0, + aNRG2_THINK_SEND_AWAY, + }, + { + &aNRG2_talk_start_wait, + &aNRG2_talk_start_wait_init, + &aNRG2_norm_talk_request, + aNRG2_NORM_TALK_JOB1_START, + aNRG2_THINK_TALK_START_WAIT, + }, + { + &aNRG2_job_start_wait, + &aNRG2_job_start_wait_init, + &aNRG2_norm_talk_request, + aNRG2_NORM_TALK_JOB1_START, + aNRG2_THINK_JOB_START_WAIT, + }, + { + &aNRG2_all_job_end, + &aNRG2_all_job_end_init, + (aNPC_TALK_REQUEST_PROC)&none_proc1, + 0, + aNRG2_THINK_ALL_JOB_END, + }, + }; + // clang-format on + + aNRG2_think_data_c* data = &dt_tbl[think_idx]; + static u16 arg_data[6] = { 0, 0, 0, 0, 0, 0 }; + + rcn_guide2->think_idx = think_idx; + rcn_guide2->think_proc = data->think_proc; + rcn_guide2->npc_class.talk_info.talk_request_proc = data->talk_request_proc; + rcn_guide2->talk_idx = data->talk_idx; + rcn_guide2->next_think_idx = data->next_think_idx; + rcn_guide2->npc_class.request.act_priority = 1; + rcn_guide2->npc_class.request.act_idx = aNPC_ACT_WAIT; + rcn_guide2->npc_class.request.act_type = aNPC_ACT_TYPE_DEFAULT; + mem_copy((u8*)rcn_guide2->npc_class.request.act_args, (u8*)arg_data, sizeof(arg_data)); + (*data->think_init_proc)(rcn_guide2, play); +} + +static void aNRG2_think_proc(NPC_ACTOR* nactorx, GAME_PLAY* play, int proc_type) { + static aNPC_SUB_PROC think_proc[] = { &aNRG2_think_init_proc, &aNRG2_think_main_proc }; + + (*think_proc[proc_type])(nactorx, play); +} + +static void aNRG2_schedule_init_proc(NPC_ACTOR* nactorx, GAME_PLAY* play) { + nactorx->think.think_proc = &aNRG2_think_proc; + Common_Get(clip).npc_clip->think_proc(nactorx, play, aNPC_THINK_IN_BLOCK, 0); +} + +static void aNRG2_schedule_main_proc(NPC_ACTOR* nactorx, GAME_PLAY* play) { + int res = Common_Get(clip).npc_clip->think_proc(nactorx, play, -1, 1); + + if (res == 0) { + Common_Get(clip).npc_clip->think_proc(nactorx, play, -1, 2); + } +} + +static void aNRG2_schedule_proc(NPC_ACTOR* nactorx, GAME_PLAY* play, int proc_type) { + static aNPC_SUB_PROC sche_proc[] = { &aNRG2_schedule_init_proc, &aNRG2_schedule_main_proc }; + + (*sche_proc[proc_type])(nactorx, play); +} diff --git a/src/ac_npc_rcn_guide2_talk.c_inc b/src/ac_npc_rcn_guide2_talk.c_inc new file mode 100644 index 00000000..fdabbd42 --- /dev/null +++ b/src/ac_npc_rcn_guide2_talk.c_inc @@ -0,0 +1,912 @@ +static void aNRG2_set_str_j3(void) { + static u8 choume_str[] = { 'Q', 'A', 'B', 'C', 'D', 'E', 'F' }; + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + mQst_errand_c* errand_p = mQst_GetFirstJobData(); + AnmPersonalID_c* to_id_p = &errand_p->recipient; + int idx = mNpc_SearchAnimalinfo(Save_Get(animals), to_id_p->npc_id, ANIMAL_NUM_MAX); + u8 str[ANIMAL_NAME_LEN]; + + if (idx != -1) { + /* Set msg string 3 & 4 to acre Z & X respectively */ + Anmhome_c* home_p = &Save_Get(animals[idx]).home_info; + + mMsg_Set_free_str(msg_p, mMsg_FREE_STR3, &choume_str[home_p->block_z], 1); + mFont_UnintToString(str, sizeof(str), home_p->block_x, sizeof(str), TRUE, FALSE, TRUE); + mMsg_Set_free_str(msg_p, mMsg_FREE_STR4, str, sizeof(str)); + } + + mNpc_GetNpcWorldNameAnm(str, to_id_p); + mMsg_Set_free_str_cl(msg_p, mMsg_FREE_STR5, str, sizeof(str), 1); +} + +static void aNRG2_set_str_j4(void) { + int bx; + int bz; + u8 str[1]; + + /* Set recipient home acre */ + aNRG2_set_str_j3(); + /* Set post office acre string */ + mFI_BlockKind2BkNum(&bx, &bz, mRF_BLOCKKIND_POSTOFFICE); + mFont_UnintToString(str, sizeof(str), bx, sizeof(str), TRUE, FALSE, TRUE); + /* We only care about the X acre since the post office is always in the A row */ + mMsg_SET_FREE_STR(mMsg_FREE_STR6, str, sizeof(str)); +} + +typedef void (*aNRG2_SET_STR_PROC)(void); + +static void aNRG2_set_str_proc(void) { + static aNRG2_SET_STR_PROC process[] = { + (aNRG2_SET_STR_PROC)&none_proc1, + (aNRG2_SET_STR_PROC)&none_proc1, + &aNRG2_set_str_j3, + &aNRG2_set_str_j4, + &aNRG2_set_str_j3, + &aNRG2_set_str_j3, + (aNRG2_SET_STR_PROC)&none_proc1, + &aNRG2_set_str_j4, + &aNRG2_set_str_j3, + (aNRG2_SET_STR_PROC)&none_proc1, + (aNRG2_SET_STR_PROC)&none_proc1, + }; + + mQst_errand_c* errand_p = mQst_GetFirstJobData(); + int idx = errand_p->base.quest_kind - mQst_ERRAND_FIRSTJOB_CHANGE_CLOTH; + + /* Set the current job strings, index is job quest idx relative to first job */ + (*process[idx])(); +} + +static void aNRG2_set_possession(void) { + // clang-format off + static mActor_name_t set_item[] = { + ITM_CLOTH016, + ITM_WHITE_PANSY_BAG, + EMPTY_NO, + ITM_PAPER55, + EMPTY_NO, + ITM_AXE, + EMPTY_NO, + ITM_PAPER55, + ITM_AXE, + EMPTY_NO, + EMPTY_NO, + }; + // clang-format on + mQst_errand_c* errand_p = mQst_GetFirstJobData(); + u32 job_kind = errand_p->base.quest_kind - mQst_ERRAND_FIRSTJOB_CHANGE_CLOTH; + + if (job_kind == aNRG2_JOB2) { + int i; + /* Give player 7 random flower bags */ + for (i = 0; i < 7; i++) { + mActor_name_t item = ITM_WHITE_PANSY_BAG + RANDOM(9); + + mPr_SetFreePossessionItem(Now_Private, item, mPr_ITEM_COND_NORMAL); + } + + /* Give player 3 saplings */ + for (i = 0; i < 3; i++) { + mPr_SetFreePossessionItem(Now_Private, ITM_SAPLING, mPr_ITEM_COND_NORMAL); + } + } else { + switch (job_kind) { + case aNRG2_JOB3: + case aNRG2_JOB5: + /* Set the random errand item with quest condition */ + mPr_SetFreePossessionItem(Now_Private, errand_p->item, mPr_ITEM_COND_QUEST); + break; + case aNRG2_JOB1: + case aNRG2_JOB4: + case aNRG2_JOB7: + case aNRG2_JOB8: + /* Set the static job item with normal condition */ + mPr_SetFreePossessionItem(Now_Private, set_item[job_kind], mPr_ITEM_COND_NORMAL); + break; + case aNRG2_JOB2: + case aNRG2_JOB6: + case aNRG2_JOB9: + default: + /* Set the static job item with quest condition */ + mPr_SetFreePossessionItem(Now_Private, set_item[job_kind], mPr_ITEM_COND_QUEST); + break; + case aNRG2_JOB10: + case aNRG2_JOB11: + break; + } + } +} + +static int aNRG2_check_job_start(void) { + mQst_errand_c* errand_p = mQst_GetFirstJobData(); + int res = FALSE; + u32 free_slots = mPr_GetPossessionItemSum(Now_Private, EMPTY_NO); + + switch (errand_p->base.quest_kind) { + case mQst_ERRAND_FIRSTJOB_PLANT_FLOWER: + /* Need at least 10 inventory slots free for the planting chore */ + if (free_slots >= 10) { + res = TRUE; + } + break; + case mQst_ERRAND_FIRSTJOB_POST_NOTICE: + case mQst_ERRAND_FIRSTJOB_INTRODUCTIONS: + case mQst_ERRAND_FIRSTJOB_OPEN: + /* These chores have no items and thus can always be started */ + res = TRUE; + break; + default: + /* Default requires at least one free inventory slot */ + if (free_slots > 0) { + res = TRUE; + } + break; + } + + return res; +} + +/* Is this a typo of setup? */ +static void aNRG2_stepup_j1(u32 kind, NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + mQst_errand_c* errand_p = mQst_GetFirstJobData(); + + /* Job 1: change into 'work clothes' */ + mQst_SetFirstJobChangeCloth(errand_p, ITM_CLOTH016); +} + +static void aNRG2_stepup_j2(u32 kind, NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + mQst_errand_c* errand_p = mQst_GetFirstJobData(); + + /* Job 2: plant flower seeds & tree saplings */ + mQst_SetFirstJobSeed(errand_p); +} + +static void aNRG2_stepup_j3(u32 kind, NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + /* List of 'no good' furniture, seemingly only ones you can walk on? */ + static mActor_name_t ng_list[] = { FTR_MANHOLE_COVER, FTR_BATH_MAT }; + mQst_errand_c* errand_p; + AnmPersonalID_c* anm_pid_p; + mActor_name_t ftr; + u32 free_idx; + + /* Get first job quest data */ + errand_p = mQst_GetFirstJobData(); + + /* Get first free inventory slot index */ + free_idx = mPr_GetPossessionItemIdx(Now_Private, EMPTY_NO); + + /* Get an unused target villager for delivery target */ + anm_pid_p = mNpc_GetOtherAnimalPersonalID(errand_p->info.first_job.used_ids, errand_p->info.first_job.used_num); + + /* Roll random ABC list furniture to be delivered */ + mSP_SelectRandomItem_New(NULL, &ftr, 1, ng_list, ARRAY_COUNT(ng_list), mSP_KIND_FURNITURE, mSP_LISTTYPE_ABC, FALSE); + + /* Job 3: deliver furniture */ + mQst_SetFirstJobFurniture(errand_p, anm_pid_p, ftr, free_idx); +} + +static void aNRG2_stepup_j4(u32 kind, NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + mQst_errand_c* errand_p; + AnmPersonalID_c* anm_pid_p; + + // Get first job quest data + errand_p = mQst_GetFirstJobData(); + + // Get an unused target villager for letter recipient + anm_pid_p = mNpc_GetOtherAnimalPersonalID(errand_p->info.first_job.used_ids, errand_p->info.first_job.used_num); + + // Force a memory with the animal in the event the player hasn't spoken to them yet + // This could happen if an animal moves in before the chore is started, + // but after the introductions sequence is finished. + // This prevents the case where the recipient would not be listed + // in the recipient menu despite being assigned by Nook. + mNpc_SetAnimalPersonalID2Memory(anm_pid_p); + + // Job 4: send letter + if (kind == aNRG2_JOB4) { + mQst_SetFirstJobLetter(errand_p, anm_pid_p); + } else { + mQst_SetFirstJobLetter2(errand_p, anm_pid_p); + } + + // Allow Nook to remind the player about this chore + rcn_guide2->can_ask_again_flag = TRUE; +} + +static void aNRG2_stepup_j5(u32 kind, NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + mQst_errand_c* errand_p; + AnmPersonalID_c* anm_pid_p; + mActor_name_t ftr; + u32 free_idx; + + /* Get first job quest data */ + errand_p = mQst_GetFirstJobData(); + + /* Get first free inventory slot index */ + free_idx = mPr_GetPossessionItemIdx(Now_Private, EMPTY_NO); + + /* Get an unused target villager for delivery target */ + anm_pid_p = mNpc_GetOtherAnimalPersonalID(errand_p->info.first_job.used_ids, errand_p->info.first_job.used_num); + + /* Roll random ABC list carpet to be delivered */ + mSP_SelectRandomItem_New(NULL, &ftr, 1, NULL, 0, mSP_KIND_CARPET, mSP_LISTTYPE_ABC, FALSE); + + /* Job 5: deliver carpet */ + mQst_SetFirstJobCarpet(errand_p, anm_pid_p, ftr, free_idx); +} + +static void aNRG2_stepup_j6(u32 kind, NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + mQst_errand_c* errand_p; + u32 free_idx; + + // Get first job quest data + errand_p = mQst_GetFirstJobData(); + + // Get the first free inventory slot + free_idx = mPr_GetPossessionItemIdx(Now_Private, EMPTY_NO); + + // Job 5: deliver axe + if (kind == aNRG2_JOB6) { + mQst_SetFirstJobAxe(errand_p, &errand_p->info.first_job.used_ids[1], ITM_AXE, free_idx); + } else { + mQst_SetFirstJobAxe2(errand_p, &errand_p->info.first_job.used_ids[1], ITM_AXE, free_idx); + } +} + +static void aNRG2_stepup_j7(u32 kind, NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + mQst_errand_c* errand_p = mQst_GetFirstJobData(); + + /* Job 7: post on notice board */ + mQst_SetFirstJobNotice(errand_p); +} + +static void aNRG2_stepup_j10(u32 kind, NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + mQst_errand_c* errand_p = mQst_GetFirstJobData(); + + /* Job 10: introductions */ + mQst_SetFirstJobHello(errand_p); +} + +static void aNRG2_stepup_j11(u32 kind, NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + mQst_errand_c* errand_p = mQst_GetFirstJobData(); + + /* Job 11: open quest */ + mQst_SetFirstJobOpenQuest(errand_p); +} + +typedef void (*aNRG2_STEPUP_PROC)(u32, NPC_RCN_GUIDE2_ACTOR*); + +static void aNRG2_stepup_job(NPC_RCN_GUIDE2_ACTOR* rcn_guide2, u32 job_kind) { + // clang-format off + static aNRG2_STEPUP_PROC stepup_job_proc[] = { + &aNRG2_stepup_j1, + &aNRG2_stepup_j2, + &aNRG2_stepup_j3, + &aNRG2_stepup_j4, + &aNRG2_stepup_j5, + &aNRG2_stepup_j6, + &aNRG2_stepup_j7, + &aNRG2_stepup_j4, + &aNRG2_stepup_j6, + &aNRG2_stepup_j10, + &aNRG2_stepup_j11, + }; + // clang-format on + + mQst_errand_c* errand_p = mQst_GetFirstJobData(); + + if (errand_p->base.progress == 1) { + (*stepup_job_proc[job_kind])(job_kind, rcn_guide2); + aNRG2_set_str_proc(); + } +} + +static void aNRG2_setup_job(int job_kind) { + // clang-format off + static u32 kind[] = { + mQst_ERRAND_FIRSTJOB_CHANGE_CLOTH, + mQst_ERRAND_FIRSTJOB_PLANT_FLOWER, + mQst_ERRAND_FIRSTJOB_DELIVER_FTR, + mQst_ERRAND_FIRSTJOB_SEND_LETTER, + mQst_ERRAND_FIRSTJOB_DELIVER_CARPET, + mQst_ERRAND_FIRSTJOB_DELIVER_AXE, + mQst_ERRAND_FIRSTJOB_POST_NOTICE, + mQst_ERRAND_FIRSTJOB_SEND_LETTER2, + mQst_ERRAND_FIRSTJOB_DELIVER_AXE2, + mQst_ERRAND_FIRSTJOB_INTRODUCTIONS, + mQst_ERRAND_FIRSTJOB_OPEN, + }; + // clang-format on + + mQst_errand_c* errand_p = mQst_GetFirstJobData(); + + errand_p->base.quest_kind = kind[job_kind]; + errand_p->base.progress = 1; +} + +static void aNRG2_say_hello_talk_proc(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + // clang-format off + static int job_start_msg_no[] = { + 0x07F1, + 0x07F6, + 0x07FB, + 0x0802, + 0x080C, + 0x0813, + 0x0818, + 0x0802, + 0x0813, + 0x0821, + 0x0827, + }; + // clang-format on + + // clang-format off + static int job_start_refuse_msg_no[] = { + 0x07F0, + 0x07F5, + 0x07FA, + 0x07FA, + 0x07FA, + 0x07FA, + 0x0818, + 0x07FA, + 0x07FA, + -1, + -1, + }; + // clang-format on + + static int next_talk_idx[] = { aNRG2_TALK_DEMO_START_WAIT, aNRG2_TALK_TALK_END_WAIT }; + + mMsg_Window_c* msg_p; + mQst_errand_c* errand_p; + int msg_no; + int talk_idx; + int job_kind; + + msg_p = mMsg_Get_base_window_p(); + errand_p = mQst_GetFirstJobData(); + if (errand_p->base.progress == 1) { + job_kind = errand_p->base.quest_kind - mQst_ERRAND_FIRSTJOB_CHANGE_CLOTH; + if (aNRG2_check_job_start() == TRUE) { + /* The next job can be started */ + + // Initial setup + aNRG2_stepup_job(rcn_guide2, job_kind); + // Set quest items if necessary + aNRG2_set_possession(); + // Setup params + msg_no = job_start_msg_no[job_kind]; + rcn_guide2->next_think_idx = aNRG2_THINK_TALK_START_WAIT; + talk_idx = 0; + } else { + /* The next job can't be started */ + msg_no = job_start_refuse_msg_no[job_kind]; + rcn_guide2->next_think_idx = aNRG2_THINK_JOB_START_WAIT; + talk_idx = 1; + } + + mMsg_Set_continue_msg_num(msg_p, msg_no); + aNRG2_change_talk_proc(rcn_guide2, next_talk_idx[talk_idx]); + } else { + /* We're still in the middle of a job? */ + rcn_guide2->next_think_idx = aNRG2_THINK_TALK_START_WAIT; + mMsg_Set_CancelNormalContinue(msg_p); + aNRG2_change_talk_proc(rcn_guide2, aNRG2_TALK_TALK_END_WAIT); + } +} + +static void aNRG2_say_hello_sp_talk_proc(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + /* Special message on first meeting at shop if player is already wearing uniform */ + mMsg_SET_CONTINUE_MSG_NUM(0x0837); + aNRG2_change_talk_proc(rcn_guide2, aNRG2_TALK_SAY_HELLO_SP2); +} + +static void aNRG2_say_hello_sp2_talk_proc(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + if (mMsg_GET_MSG_NUM() == 0x0837) { + aNRG2_say_hello_talk_proc(rcn_guide2); + } +} + +static void aNRG2_cloth_chk_talk_proc(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + mQst_errand_c* errand_p = mQst_GetFirstJobData(); + + if (errand_p->base.progress == 1) { + rcn_guide2->next_think_idx = aNRG2_THINK_JOB_START_WAIT; + } else { + rcn_guide2->next_think_idx = aNRG2_THINK_TALK_START_WAIT; + } + + aNRG2_change_talk_proc(rcn_guide2, aNRG2_TALK_TALK_END_WAIT); +} + +static void aNRG2_demo_start_wait_talk_proc(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + /* List of display items for each job */ + static mActor_name_t itemNo[] = { + ITM_CLOTH016, /* work uniform */ + ITM_WHITE_PANSY_BAG, /* flower bag */ + FTR_FAN, /* furniture */ + ITM_PAPER55, /* simple paper */ + ITM_CARPET00, /* carpet */ + ITM_AXE, /* axe */ + EMPTY_NO, /* no item */ + ITM_PAPER55, /* simple paper */ + ITM_AXE, /* axe */ + EMPTY_NO, /* no item */ + EMPTY_NO, /* no item */ + }; + + int order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 1); + + if (order == 4) { + mQst_errand_c* errand_p = mQst_GetFirstJobData(); + u32 kind = errand_p->base.quest_kind - mQst_ERRAND_FIRSTJOB_CHANGE_CLOTH; + + /* Set params for hand over item */ + mDemo_Set_OrderValue(mDemo_ORDER_NPC1, 0, itemNo[kind]); + mDemo_Set_OrderValue(mDemo_ORDER_NPC1, 1, 7); + mDemo_Set_OrderValue(mDemo_ORDER_NPC1, 2, 0); + /* Don't let the player continue dialog */ + mMsg_SET_LOCKCONTINUE(); + aNRG2_change_talk_proc(rcn_guide2, aNRG2_TALK_DEMO_END_WAIT); + } +} + +static void aNRG2_demo_end_wait_talk_proc(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + /* Wait for the hand over process item to start */ + if (rcn_guide2->npc_class.action.idx == 10 && Common_Get(clip).handOverItem_clip->master_actor != NULL) { + aNRG2_change_talk_proc(rcn_guide2, aNRG2_TALK_DEMO_END_WAIT2); + } +} + +static void aNRG2_demo_end_wait2_talk_proc(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + /* Wait for the hand over item process to finish */ + if (Common_Get(clip).handOverItem_clip->master_actor == NULL) { + /* Allow player to continue dialog */ + mMsg_UNSET_LOCKCONTINUE(); + aNRG2_change_talk_proc(rcn_guide2, aNRG2_TALK_TALK_END_WAIT); + } +} + +static void aNRG2_job_start_talk_proc(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + mQst_errand_c* errand_p = mQst_GetFirstJobData(); + int talk_proc_idx; + + /* Setup job quest info */ + aNRG2_stepup_job(rcn_guide2, errand_p->base.quest_kind - mQst_ERRAND_FIRSTJOB_CHANGE_CLOTH); + /* Give the player the necessary item(s) for the job */ + aNRG2_set_possession(); + + if (errand_p->base.quest_kind == mQst_ERRAND_FIRSTJOB_INTRODUCTIONS || + errand_p->base.quest_kind == mQst_ERRAND_FIRSTJOB_OPEN) { + talk_proc_idx = aNRG2_TALK_TALK_END_WAIT; + } else { + talk_proc_idx = aNRG2_TALK_DEMO_START_WAIT; + } + + aNRG2_change_talk_proc(rcn_guide2, talk_proc_idx); + rcn_guide2->next_think_idx = aNRG2_THINK_TALK_START_WAIT; +} + +static void aNRG2_job_end_talk_proc(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + static int next_job_no[] = { + aNRG2_JOB2, aNRG2_JOB3, aNRG2_JOB4, aNRG2_JOB11, aNRG2_JOB6, aNRG2_JOB7, + aNRG2_JOB7, aNRG2_JOB9, aNRG2_JOB7, aNRG2_JOB3, aNRG2_JOB5, + }; + mQst_errand_c* errand_p = mQst_GetFirstJobData(); + int next_job; + + /* If the finished quest was the planting flowers & saplings job & the player hasn't spoken to all villagers & + * Tortimer, then set the job to introductions. + */ + if (errand_p->base.quest_kind == mQst_ERRAND_FIRSTJOB_PLANT_FLOWER && + (mNpc_CheckFriendAllAnimal(&Now_Private->player_ID) == FALSE || mSC_check_ArbeitPlayer() == FALSE)) { + next_job = aNRG2_JOB10; + } else { + next_job = next_job_no[errand_p->base.quest_kind - mQst_ERRAND_FIRSTJOB_CHANGE_CLOTH]; + } + + aNRG2_setup_job(next_job); + aNRG2_change_talk_proc(rcn_guide2, aNRG2_TALK_SAY_HELLO); +} + +static void aNRG2_3rd_job_end_talk_proc(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + u16 order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); + + /* Hand over the map */ + if (order != 0) { + aNRG2_job_end_talk_proc(rcn_guide2); + + /* Set params for hand over item */ + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 1, 2); + mDemo_Set_OrderValue(mDemo_ORDER_NPC1, 0, ITM_TOWN_MAP); + mDemo_Set_OrderValue(mDemo_ORDER_NPC1, 1, 7); + mDemo_Set_OrderValue(mDemo_ORDER_NPC1, 2, 0); + + /* Enable map flag */ + Common_Set(map_flag, TRUE); + + /* Clear demo order */ + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + } +} + +static void aNRG2_demo2_start_wait_talk_proc(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + u16 order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); + + /* Take quest item back from player */ + if (order != 0) { + mQst_errand_c* errand_p = mQst_GetFirstJobData(); + int idx = mPr_GetPossessionItemIdxWithCond(Now_Private, errand_p->item, mPr_ITEM_COND_QUEST); + + // This is bad, if you somehow don't have the quest item, the first item in your inventory will be deleted + if (idx == -1) { + idx = 0; + } + + /* Clear item */ + mPr_SetPossessionItem(Now_Private, idx, 0, mPr_ITEM_COND_NORMAL); + + /* Clear demo order */ + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + + /* Prevent player from continuing dialogue */ + mMsg_SET_LOCKCONTINUE(); + + /* Tell the player to play hand over animation */ + mPlib_request_main_give_type1(gamePT, errand_p->item, 7, FALSE, FALSE); + + aNRG2_setup_job(errand_p->base.quest_kind - mQst_ERRAND_FIRSTJOB_CHANGE_CLOTH); + aNRG2_change_talk_proc(rcn_guide2, aNRG2_TALK_DEMO2_START_WAIT2); + } +} + +static void aNRG2_demo2_start_wait2_talk_proc(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + /* Wait for hand over item request mode */ + if (Common_Get(clip).handOverItem_clip->request_mode == aHOI_REQUEST_TRANS_WAIT) { + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 1, 3); + aNRG2_change_talk_proc(rcn_guide2, aNRG2_TALK_DEMO2_END); + } +} + +static void aNRG2_demo2_end_wait_talk_proc(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + /* Wait for hand over item to finish */ + if (Common_Get(clip).handOverItem_clip->master_actor == NULL) { + /* Allow player to continue the dialogue now */ + mMsg_UNSET_LOCKCONTINUE(); + aNRG2_job_start_talk_proc(rcn_guide2); + } +} + +static void aNRG2_give_new_paper_talk_proc(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + + if (aNRG2_check_job_start() == TRUE) { + /* Give another piece of stationery to the player */ + mMsg_Set_continue_msg_num(msg_p, 0x0805); // 'Here! Here's another piece of paper.' + aNRG2_job_start_talk_proc(rcn_guide2); + rcn_guide2->can_ask_again_flag = TRUE; + } else { + /* Player has full pockets so tell them */ + mMsg_Set_continue_msg_num(msg_p, 0x07FA); // '...What have we here?' + aNRG2_change_talk_proc(rcn_guide2, aNRG2_TALK_TALK_END_WAIT); + rcn_guide2->can_ask_again_flag = FALSE; + } +} + +static void aNRG2_check_more_paper_talk_proc(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + u16 order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); + mQst_errand_c* errand_p; + + if (order != 0) { + /* Clear the demo order */ + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + + switch (mChoice_GET_CHOSENUM()) { + case mChoice_CHOICE0: + /* Player asked for more paper, so give them some if they have inv space */ + errand_p = mQst_GetFirstJobData(); + aNRG2_give_new_paper_talk_proc(rcn_guide2); + errand_p->base.progress = 2; + break; + case mChoice_CHOICE1: + /* Player said they don't need more paper */ + aNRG2_change_talk_proc(rcn_guide2, aNRG2_TALK_TALK_END_WAIT); + rcn_guide2->can_ask_again_flag = FALSE; + break; + } + } +} + +static void aNRG2_decide_new_target_talk_proc(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + u16 order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); + mQst_errand_c* errand_p; + + if (order != 0) { + errand_p = mQst_GetFirstJobData(); + + /* Clear the demo order */ + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + + aNRG2_setup_job(errand_p->base.quest_kind - mQst_ERRAND_FIRSTJOB_CHANGE_CLOTH); + aNRG2_stepup_job(rcn_guide2, errand_p->base.quest_kind - mQst_ERRAND_FIRSTJOB_CHANGE_CLOTH); + aNRG2_change_talk_proc(rcn_guide2, aNRG2_TALK_CHECK_MORE_PAPER); + } +} + +static void aNRG2_demo3_start_wait_talk_proc(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + u16 order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); + mQst_errand_c* errand_p; + int idx; + + if (order != 0) { + errand_p = mQst_GetFirstJobData(); + idx = mPr_GetPossessionItemIdxWithCond(Now_Private, errand_p->item, mPr_ITEM_COND_QUEST); + + if (idx == -1) { + /* If the job's tool item can't be found then try the player's equipped item */ + if (Now_Private->equipment == errand_p->item) { + Now_Private->equipment = EMPTY_NO; + } + } else { + mPr_SetPossessionItem(Now_Private, idx, EMPTY_NO, mPr_ITEM_COND_NORMAL); + } + + /* Clear the demo order */ + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + + mMsg_SET_LOCKCONTINUE(); + mPlib_request_main_give_type1(gamePT, errand_p->item, 7, FALSE, FALSE); + aNRG2_setup_job(aNRG2_JOB8); + aNRG2_change_talk_proc(rcn_guide2, aNRG2_TALK_DEMO3_START_WAIT2); + } +} + +static void aNRG2_all_job_end_talk_proc(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + rcn_guide2->next_think_idx = aNRG2_THINK_ALL_JOB_END; + aNRG2_change_talk_proc(rcn_guide2, aNRG2_TALK_TALK_END_WAIT); +} + +static void aNRG2_change_talk_proc(NPC_RCN_GUIDE2_ACTOR* rcn_guide2, int talk_proc_idx) { + // clang-format off + static aNRG2_TALK_PROC proc[] = { + &aNRG2_say_hello_talk_proc, + &aNRG2_say_hello_sp_talk_proc, + &aNRG2_say_hello_sp2_talk_proc, + &aNRG2_cloth_chk_talk_proc, + (aNRG2_TALK_PROC)&none_proc1, + &aNRG2_demo_start_wait_talk_proc, + &aNRG2_demo_end_wait_talk_proc, + &aNRG2_demo_end_wait2_talk_proc, + &aNRG2_job_start_talk_proc, + &aNRG2_job_end_talk_proc, + &aNRG2_3rd_job_end_talk_proc, + &aNRG2_demo2_start_wait_talk_proc, + &aNRG2_demo2_start_wait2_talk_proc, + &aNRG2_demo2_end_wait_talk_proc, + &aNRG2_give_new_paper_talk_proc, + &aNRG2_check_more_paper_talk_proc, + &aNRG2_decide_new_target_talk_proc, + &aNRG2_demo3_start_wait_talk_proc, + &aNRG2_demo2_start_wait2_talk_proc, + &aNRG2_demo2_end_wait_talk_proc, + &aNRG2_all_job_end_talk_proc, + }; + // clang-format on + + rcn_guide2->talk_proc = proc[talk_proc_idx]; +} + +static void aNRG2_set_goods_talk_info(ACTOR* actorx) { + NPC_RCN_GUIDE2_ACTOR* rcn_guide2 = (NPC_RCN_GUIDE2_ACTOR*)actorx; + int msg_no = 0x081C; + + /* Check if it's a raffle day */ + if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_FUKUBIKI) { + msg_no = 0x0833; + } + + mDemo_Set_msg_num(msg_no); + mDemo_Set_talk_turn(TRUE); + rcn_guide2->talk_proc = (aNRG2_TALK_PROC)&none_proc1; +} + +static int aNRG2_goods_talk_request(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + int res = FALSE; + + if (player != NULL) { + int ux; + int uz; + mActor_name_t item; + + mFI_Wpos2UtNum(&ux, &uz, player->forward_ut_pos); + item = Common_Get(clip).shop_design_clip->unitNum2ItemNo_proc(ux, uz); + if (player->a_btn_pressed == TRUE && item != EXIT_DOOR1 && item != EMPTY_NO && item != RSV_WALL_NO && + item != RSV_NO && item != DOOR0) { + /* Player interacted with shop goods, tell them they're inaccessible currently */ + NPC_RCN_GUIDE2_ACTOR* rcn_guide2 = (NPC_RCN_GUIDE2_ACTOR*)actorx; + + mDemo_Request(mDemo_TYPE_SPEAK, actorx, &aNRG2_set_goods_talk_info); + rcn_guide2->talk_proc_idx = 0; + res = TRUE; + } + } + + return res; +} + +static int aNRG2_cloth_check(void) { + mQst_errand_c* errand_p = mQst_GetFirstJobData(); + int res = FALSE; + + if (errand_p->base.quest_kind > mQst_ERRAND_FIRSTJOB_CHANGE_CLOTH && + errand_p->info.first_job.wrong_cloth == FALSE && Now_Private->cloth.item != ITM_CLOTH016) { + /* Player changed out of work uniform on the job, now they get a stern talking to! */ + res = TRUE; + } + + return res; +} + +static int aNRG2_check_upstair(void) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_NOW(); + u16 angle_y = player->actor_class.shape_info.rotation.y; + int res = FALSE; + + if (angle_y > DEG2SHORT_ANGLE2(135.0f) && angle_y < DEG2SHORT_ANGLE2(225.0f) && + player->item_in_front == RSV_POLICE_ITEM_0) { + res = TRUE; + } + + return res; +} + +static void aNRG2_set_force_talk_info(ACTOR* actorx) { + static aNRG2_talk_info_c dt_tbl[] = { + { 0x07EE, &aNRG2_say_hello_talk_proc }, /* 'Well, finally you arrive!' */ + { 0x07EF, &aNRG2_say_hello_talk_proc }, /* 'So you're back again today?' */ + { 0x07EE, &aNRG2_say_hello_sp_talk_proc }, /* 'Well, finally you arrive!' (already wearing work uniform) */ + { 0x0832, &aNRG2_cloth_chk_talk_proc }, /* 'Why did you change out of your uniform, hm?' */ + { 0x0834, (aNRG2_TALK_PROC)&none_proc1 }, /* 'Stop right there!' (Going up to 2nd floor) */ + }; + + aNRG2_talk_info_c* data; + NPC_RCN_GUIDE2_ACTOR* rcn_guide2 = (NPC_RCN_GUIDE2_ACTOR*)actorx; + mQst_errand_c* errand_p = mQst_GetFirstJobData(); + int talk_idx; + + /* Figure out our talk state */ + if (aNRG2_cloth_check() == TRUE) { + talk_idx = aNRG2_FORCE_TALK_CLOTH_CHK; // Player changed out of their work uniform + errand_p->info.first_job.wrong_cloth = TRUE; + } else if (aNRG2_check_upstair() == TRUE) { + talk_idx = aNRG2_FORCE_TALK_UPSTAIR_CHK; // Player tried going upstairs in Nookington's + } else { + talk_idx = rcn_guide2->talk_idx; + } + data = &dt_tbl[talk_idx]; + + /* If assigning a new job then set the necessary text strings */ + if (mQst_CheckFirstJobFin(errand_p) == FALSE) { + aNRG2_set_str_proc(); + } + + /* Apply the relevant data */ + mDemo_Set_msg_num(data->msg_no); + mDemo_Set_talk_turn(TRUE); + rcn_guide2->talk_proc = data->talk_proc; +} + +static void aNRG2_force_talk_request(ACTOR* actorx, GAME* game) { + NPC_RCN_GUIDE2_ACTOR* rcn_guide2 = (NPC_RCN_GUIDE2_ACTOR*)actorx; + + mDemo_Request(mDemo_TYPE_SPEAK, actorx, &aNRG2_set_force_talk_info); + rcn_guide2->talk_proc_idx = 0; +} + +static void aNRG2_set_norm_talk_info(ACTOR* actorx) { + // clang-format off + static aNRG2_talk_info_c dt_tbl[] = { + { 0x07F1, &aNRG2_job_start_talk_proc }, + { 0x07F6, &aNRG2_job_start_talk_proc }, + { 0x07FB, &aNRG2_job_start_talk_proc }, + { 0x0802, &aNRG2_job_start_talk_proc }, + { 0x080C, &aNRG2_job_start_talk_proc }, + { 0x0830, &aNRG2_job_start_talk_proc }, + { 0x0813, &aNRG2_job_start_talk_proc }, + { 0x0818, &aNRG2_job_start_talk_proc }, + { 0x0821, &aNRG2_job_start_talk_proc }, + { 0x0827, &aNRG2_job_start_talk_proc }, + { 0x07F0, (aNRG2_TALK_PROC)&none_proc1 }, + { 0x07F5, (aNRG2_TALK_PROC)&none_proc1 }, + { 0x07FA, (aNRG2_TALK_PROC)&none_proc1 }, + { 0x07FA, (aNRG2_TALK_PROC)&none_proc1 }, + { 0x07FA, (aNRG2_TALK_PROC)&none_proc1 }, + { 0x0826, (aNRG2_TALK_PROC)&none_proc1 }, + { 0x07FA, (aNRG2_TALK_PROC)&none_proc1 }, + { 0x0818, (aNRG2_TALK_PROC)&none_proc1 }, + { 0x07F3, (aNRG2_TALK_PROC)&none_proc1 }, + { 0x081F, &aNRG2_job_start_talk_proc }, + { 0x0835, (aNRG2_TALK_PROC)&none_proc1 }, + { 0x07F8, (aNRG2_TALK_PROC)&none_proc1 }, + { 0x07FE, (aNRG2_TALK_PROC)&none_proc1 }, + { 0x07FF, &aNRG2_demo2_start_wait_talk_proc }, + { 0x0807, &aNRG2_check_more_paper_talk_proc }, + { 0x0808, &aNRG2_decide_new_target_talk_proc }, + { 0x0804, &aNRG2_give_new_paper_talk_proc }, + { 0x080F, (aNRG2_TALK_PROC)&none_proc1 }, + { 0x0810, &aNRG2_demo2_start_wait_talk_proc }, + { 0x0815, (aNRG2_TALK_PROC)&none_proc1 }, + { 0x0816, &aNRG2_demo3_start_wait_talk_proc }, + { 0x0819, (aNRG2_TALK_PROC)&none_proc1 }, + { 0x0822, (aNRG2_TALK_PROC)&none_proc1 }, + { 0x0829, (aNRG2_TALK_PROC)&none_proc1 }, + { 0x07F4, &aNRG2_job_end_talk_proc }, + { 0x07F9, &aNRG2_job_end_talk_proc }, + { 0x0801, &aNRG2_3rd_job_end_talk_proc }, + { 0x080B, &aNRG2_job_end_talk_proc }, + { 0x0812, &aNRG2_job_end_talk_proc }, + { 0x0818, &aNRG2_job_end_talk_proc }, + { 0x081A, &aNRG2_all_job_end_talk_proc }, + { 0x0828, &aNRG2_job_end_talk_proc }, + { 0x0830, &aNRG2_job_end_talk_proc }, + { 0x0836, (aNRG2_TALK_PROC)&none_proc1 }, + }; + // clang-format on + + NPC_RCN_GUIDE2_ACTOR* rcn_guide2 = (NPC_RCN_GUIDE2_ACTOR*)actorx; + int talk_idx = rcn_guide2->talk_idx; + aNRG2_talk_info_c* data = &dt_tbl[talk_idx]; + mQst_errand_c* errand_p = mQst_GetFirstJobData(); + + if (talk_idx >= aNRG2_NORM_TALK_J1_CONT1 && talk_idx <= aNRG2_NORM_TALK_J11_CONT1) { + rcn_guide2->can_ask_again_flag = TRUE; + } + + if (mQst_CheckFirstJobFin(errand_p) == FALSE) { + aNRG2_set_str_proc(); + } + + mDemo_Set_msg_num(data->msg_no); + rcn_guide2->talk_proc = data->talk_proc; +} + +static void aNRG2_norm_talk_request(ACTOR* actorx, GAME* game) { + NPC_RCN_GUIDE2_ACTOR* rcn_guide2 = (NPC_RCN_GUIDE2_ACTOR*)actorx; + + if (aNRG2_goods_talk_request(actorx, game) == FALSE) { + if (aNRG2_cloth_check() == TRUE) { + aNRG2_force_talk_request(actorx, game); + } else if (aNRG2_check_upstair() == TRUE) { + aNRG2_force_talk_request(actorx, game); + } else { + mDemo_Request(mDemo_TYPE_TALK, actorx, &aNRG2_set_norm_talk_info); + rcn_guide2->talk_proc_idx = 0; + } + } +} + +static int aNRG2_talk_init(ACTOR* actorx, GAME* game) { + NPC_RCN_GUIDE2_ACTOR* rcn_guide2 = (NPC_RCN_GUIDE2_ACTOR*)actorx; + + rcn_guide2->npc_class.talk_info.talk_request_proc = (aNPC_TALK_REQUEST_PROC)&none_proc1; + mDemo_Set_ListenAble(); + return TRUE; +} + +static int aNRG2_talk_end_chk(ACTOR* actorx, GAME* game) { + NPC_RCN_GUIDE2_ACTOR* rcn_guide2 = (NPC_RCN_GUIDE2_ACTOR*)actorx; + GAME_PLAY* play = (GAME_PLAY*)game; + int res = FALSE; + + (*rcn_guide2->talk_proc)(rcn_guide2); + + if (mDemo_Check(mDemo_TYPE_SPEAK, actorx) == FALSE && mDemo_Check(mDemo_TYPE_TALK, actorx) == FALSE) { + aNRG2_setup_think_proc(rcn_guide2, play, rcn_guide2->next_think_idx); + res = TRUE; + } + + return res; +} diff --git a/src/m_quest.c b/src/m_quest.c index 790a020c..f7076d73 100644 --- a/src/m_quest.c +++ b/src/m_quest.c @@ -13,1114 +13,1073 @@ #include "m_common_data.h" typedef struct grab_s { - mActor_name_t item; - int pocket_idx; - int type; - mQst_delivery_c delivery; + mActor_name_t item; + int pocket_idx; + int type; + mQst_delivery_c delivery; } mQst_grab_c; -static lbRTC_day_t l_delivery_limit[4] = { - 2, - 2, - 2, - 2 -}; +static lbRTC_day_t l_delivery_limit[4] = { 2, 2, 2, 2 }; -static lbRTC_day_t l_errand_limit[mQst_ERRAND_NUM] = { - 2, - 2, - 2, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 -}; +static lbRTC_day_t l_errand_limit[mQst_ERRAND_NUM] = { 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; static lbRTC_day_t l_contest_limit[mQst_CONTEST_KIND_NUM] = { - 1, // mQst_CONTEST_KIND_FRUIT - 1, // mQst_CONTEST_KIND_SOCCER - 1, // mQst_CONTEST_KIND_SNOWMAN - 3, // mQst_CONTEST_KIND_FLOWER - 3, // mQst_CONTEST_KIND_FISH - 3, // mQst_CONTEST_KIND_INSECT - 2 // mQst_CONTEST_KIND_LETTER + 1, // mQst_CONTEST_KIND_FRUIT + 1, // mQst_CONTEST_KIND_SOCCER + 1, // mQst_CONTEST_KIND_SNOWMAN + 3, // mQst_CONTEST_KIND_FLOWER + 3, // mQst_CONTEST_KIND_FISH + 3, // mQst_CONTEST_KIND_INSECT + 2 // mQst_CONTEST_KIND_LETTER }; static lbRTC_day_t l_contest_fin_limit[mQst_CONTEST_KIND_NUM] = { - 3, // mQst_CONTEST_KIND_FRUIT - 3, // mQst_CONTEST_KIND_SOCCER - 3, // mQst_CONTEST_KIND_SNOWMAN - 3, // mQst_CONTEST_KIND_FLOWER - 3, // mQst_CONTEST_KIND_FISH - 3, // mQst_CONTEST_KIND_INSECT - 2 // mQst_CONTEST_KIND_LETTER + 3, // mQst_CONTEST_KIND_FRUIT + 3, // mQst_CONTEST_KIND_SOCCER + 3, // mQst_CONTEST_KIND_SNOWMAN + 3, // mQst_CONTEST_KIND_FLOWER + 3, // mQst_CONTEST_KIND_FISH + 3, // mQst_CONTEST_KIND_INSECT + 2 // mQst_CONTEST_KIND_LETTER }; -static lbRTC_day_t* l_limit_table[mQst_QUEST_TYPE_NUM] = { - l_delivery_limit, - l_errand_limit, - l_contest_limit -}; +static lbRTC_day_t* l_limit_table[mQst_QUEST_TYPE_NUM] = { l_delivery_limit, l_errand_limit, l_contest_limit }; static int l_limit_table_max[mQst_QUEST_TYPE_NUM] = { - 4, // mQst_QUEST_TYPE_DELIVERY - 15, // mQst_QUEST_TYPE_ERRAND - mQst_CONTEST_KIND_NUM // mQst_QUEST_TYPE_CONTEST + 4, // mQst_QUEST_TYPE_DELIVERY + 15, // mQst_QUEST_TYPE_ERRAND + mQst_CONTEST_KIND_NUM // mQst_QUEST_TYPE_CONTEST }; extern void mQst_ClearQuestInfo(mQst_base_c* quest) { - bzero(quest, sizeof(mQst_base_c)); - quest->quest_type = mQst_QUEST_TYPE_NONE; + bzero(quest, sizeof(mQst_base_c)); + quest->quest_type = mQst_QUEST_TYPE_NONE; } extern void mQst_ClearDelivery(mQst_delivery_c* delivery, int num) { - int i; - - for (i = 0; i < num; i++) { - mQst_ClearQuestInfo(&delivery->base); - mNpc_ClearAnimalPersonalID(&delivery->recipient); - mNpc_ClearAnimalPersonalID(&delivery->sender); + int i; - delivery++; - } + for (i = 0; i < num; i++) { + mQst_ClearQuestInfo(&delivery->base); + mNpc_ClearAnimalPersonalID(&delivery->recipient); + mNpc_ClearAnimalPersonalID(&delivery->sender); + + delivery++; + } } extern void mQst_ClearErrand(mQst_errand_c* errand, int num) { - int i; + int i; - for (i = 0; i < num; i++) { - mQst_ClearQuestInfo(&errand->base); - mNpc_ClearAnimalPersonalID(&errand->recipient); - mNpc_ClearAnimalPersonalID(&errand->sender); + for (i = 0; i < num; i++) { + mQst_ClearQuestInfo(&errand->base); + mNpc_ClearAnimalPersonalID(&errand->recipient); + mNpc_ClearAnimalPersonalID(&errand->sender); - errand->item = EMPTY_NO; - errand->pockets_idx = -1; - errand->errand_type = mQst_ERRAND_TYPE_NONE; + errand->item = EMPTY_NO; + errand->pockets_idx = -1; + errand->errand_type = mQst_ERRAND_TYPE_NONE; - bzero(&errand->info, sizeof(mQst_errand_info_u)); + bzero(&errand->info, sizeof(mQst_errand_info_u)); - errand++; - } + errand++; + } } extern void mQst_ClearContest(mQst_contest_c* contest) { - mQst_ClearQuestInfo(&contest->base); - contest->requested_item = EMPTY_NO; - mPr_ClearPersonalID(&contest->player_id); - contest->type = mQst_QUEST_TYPE_NONE; - bzero(&contest->info, sizeof(mQst_contest_info_u)); + mQst_ClearQuestInfo(&contest->base); + contest->requested_item = EMPTY_NO; + mPr_ClearPersonalID(&contest->player_id); + contest->type = mQst_QUEST_TYPE_NONE; + bzero(&contest->info, sizeof(mQst_contest_info_u)); } extern void mQst_ClearNotSaveQuest(mQst_not_saved_c* not_saved) { - bzero(not_saved, sizeof(mQst_not_saved_c)); + bzero(not_saved, sizeof(mQst_not_saved_c)); } extern void mQst_CopyQuestInfo(mQst_base_c* dst, mQst_base_c* src) { - dst->quest_type = src->quest_type; - dst->quest_kind = src->quest_kind; - dst->time_limit_enabled = src->time_limit_enabled; - dst->progress = src->progress; - dst->give_reward = src->give_reward; + dst->quest_type = src->quest_type; + dst->quest_kind = src->quest_kind; + dst->time_limit_enabled = src->time_limit_enabled; + dst->progress = src->progress; + dst->give_reward = src->give_reward; - lbRTC_TimeCopy(&dst->time_limit, &src->time_limit); + lbRTC_TimeCopy(&dst->time_limit, &src->time_limit); } extern void mQst_CopyDelivery(mQst_delivery_c* dst, mQst_delivery_c* src) { - mQst_CopyQuestInfo(&dst->base, &src->base); - mNpc_CopyAnimalPersonalID(&dst->recipient, &src->recipient); - mNpc_CopyAnimalPersonalID(&dst->sender, &src->sender); + mQst_CopyQuestInfo(&dst->base, &src->base); + mNpc_CopyAnimalPersonalID(&dst->recipient, &src->recipient); + mNpc_CopyAnimalPersonalID(&dst->sender, &src->sender); } extern void mQst_CopyErrand(mQst_errand_c* dst, mQst_errand_c* src) { - u8* info_src_p = (u8*)&src->info; - u8* info_dst_p = (u8*)&dst->info; - int i; - - mQst_CopyQuestInfo(&dst->base, &src->base); - mNpc_CopyAnimalPersonalID(&dst->recipient, &src->recipient); - mNpc_CopyAnimalPersonalID(&dst->sender, &src->sender); - dst->item = src->item; - dst->pockets_idx = src->pockets_idx; - dst->errand_type = src->errand_type; - //dst->info = src->info; + u8* info_src_p = (u8*)&src->info; + u8* info_dst_p = (u8*)&dst->info; + int i; - /* what the fuck guys */ - for (i = 0; i < sizeof(mQst_errand_info_u); i++) { - *info_dst_p = *info_src_p; - info_dst_p++; - info_src_p++; - } + mQst_CopyQuestInfo(&dst->base, &src->base); + mNpc_CopyAnimalPersonalID(&dst->recipient, &src->recipient); + mNpc_CopyAnimalPersonalID(&dst->sender, &src->sender); + dst->item = src->item; + dst->pockets_idx = src->pockets_idx; + dst->errand_type = src->errand_type; + // dst->info = src->info; + + /* what the fuck guys */ + for (i = 0; i < sizeof(mQst_errand_info_u); i++) { + *info_dst_p = *info_src_p; + info_dst_p++; + info_src_p++; + } } extern int mQst_CheckFreeQuest(mQst_base_c* quest) { - int res = FALSE; - if (quest->quest_type == mQst_QUEST_TYPE_NONE) { - res = TRUE; - } + int res = FALSE; + if (quest->quest_type == mQst_QUEST_TYPE_NONE) { + res = TRUE; + } - return res; + return res; } extern int mQst_CheckLimitOver(mQst_base_c* quest) { - lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); - lbRTC_time_c temp; - int res = FALSE; + lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); + lbRTC_time_c temp; + int res = FALSE; - if (quest->time_limit_enabled == TRUE) { - if (lbRTC_IsOverTime(&quest->time_limit, rtc_time) == lbRTC_OVER) { - res = TRUE; - } - else if (quest->quest_type < mQst_QUEST_TYPE_NONE) { - if (lbRTC_GetIntervalDays(&quest->time_limit, rtc_time) >= mQst_MAX_TIME_LIMIT_DAYS) { - res = TRUE; - } - else { - int type = quest->quest_type; - u32 kind = quest->quest_kind; - - if ((u32)quest->quest_kind < l_limit_table_max[type]) { - int days = l_limit_table[type][quest->quest_kind]; - - if (type == mQst_QUEST_TYPE_CONTEST && quest->progress == 0) { - days += l_contest_fin_limit[kind]; - } - - lbRTC_TimeCopy(&temp, &quest->time_limit); - lbRTC_Sub_DD(&temp, days); - - if (lbRTC_IsOverTime(rtc_time, &temp) == lbRTC_OVER) { + if (quest->time_limit_enabled == TRUE) { + if (lbRTC_IsOverTime(&quest->time_limit, rtc_time) == lbRTC_OVER) { res = TRUE; - } - } - } - } - } + } else if (quest->quest_type < mQst_QUEST_TYPE_NONE) { + if (lbRTC_GetIntervalDays(&quest->time_limit, rtc_time) >= mQst_MAX_TIME_LIMIT_DAYS) { + res = TRUE; + } else { + int type = quest->quest_type; + u32 kind = quest->quest_kind; - return res; + if ((u32)quest->quest_kind < l_limit_table_max[type]) { + int days = l_limit_table[type][quest->quest_kind]; + + if (type == mQst_QUEST_TYPE_CONTEST && quest->progress == 0) { + days += l_contest_fin_limit[kind]; + } + + lbRTC_TimeCopy(&temp, &quest->time_limit); + lbRTC_Sub_DD(&temp, days); + + if (lbRTC_IsOverTime(rtc_time, &temp) == lbRTC_OVER) { + res = TRUE; + } + } + } + } + } + + return res; } extern int mQst_GetOccuredDeliveryIdx(int delivery_kind) { - int idx = -1; - int i; - mQst_delivery_c* delivery = Common_Get(now_private)->deliveries; + int idx = -1; + int i; + mQst_delivery_c* delivery = Common_Get(now_private)->deliveries; - for (i = 0; i < mPr_DELIVERY_QUEST_NUM; i++) { - if (mQst_CheckFreeQuest(&delivery->base) == FALSE && delivery->base.quest_type == mQst_QUEST_TYPE_DELIVERY && (u32)delivery->base.quest_kind == delivery_kind) { - idx = i; - break; + for (i = 0; i < mPr_DELIVERY_QUEST_NUM; i++) { + if (mQst_CheckFreeQuest(&delivery->base) == FALSE && delivery->base.quest_type == mQst_QUEST_TYPE_DELIVERY && + (u32)delivery->base.quest_kind == delivery_kind) { + idx = i; + break; + } + + delivery++; } - delivery++; - } - - return idx; + return idx; } static int mQst_GetDeliveryIdxbyItemIdx(int idx) { - int d_idx = -1; + int d_idx = -1; - if (idx >= 0 && idx < mPr_POCKETS_SLOT_COUNT && mQst_CheckFreeQuest(&Common_Get(now_private)->deliveries[idx].base) == FALSE) { - d_idx = idx; - } + if (idx >= 0 && idx < mPr_POCKETS_SLOT_COUNT && + mQst_CheckFreeQuest(&Common_Get(now_private)->deliveries[idx].base) == FALSE) { + d_idx = idx; + } - return d_idx; + return d_idx; } static int mQst_GetErrandIdxbyItemIdx(int idx) { - int d_idx = -1; - int i; - mQst_errand_c* errand; - mActor_name_t item; + int d_idx = -1; + int i; + mQst_errand_c* errand; + mActor_name_t item; - if (idx >= 0 && idx < mPr_POCKETS_SLOT_COUNT) { - Private_c* priv = Common_Get(now_private); + if (idx >= 0 && idx < mPr_POCKETS_SLOT_COUNT) { + Private_c* priv = Common_Get(now_private); - if (mPr_GET_ITEM_COND(priv->inventory.item_conditions, idx) == mPr_ITEM_COND_QUEST) { - errand = priv->errands; - item = priv->inventory.pockets[idx]; + if (mPr_GET_ITEM_COND(priv->inventory.item_conditions, idx) == mPr_ITEM_COND_QUEST) { + errand = priv->errands; + item = priv->inventory.pockets[idx]; - for (i = 0; i < mPr_ERRAND_QUEST_NUM; i++) { - if (mQst_CheckFreeQuest(&errand->base) == FALSE && errand->pockets_idx == idx && errand->item == item) { - d_idx = i; - break; + for (i = 0; i < mPr_ERRAND_QUEST_NUM; i++) { + if (mQst_CheckFreeQuest(&errand->base) == FALSE && errand->pockets_idx == idx && errand->item == item) { + d_idx = i; + break; + } + + errand++; + } } - - errand++; - } } - } - return d_idx; + return d_idx; } extern int mQst_ClearQuestbyPossessionIdx(int idx) { - int res = FALSE; + int res = FALSE; - if (idx >= 0 && idx < mPr_POCKETS_SLOT_COUNT) { - if (mQst_GetDeliveryIdxbyItemIdx(idx) != -1) { - mQst_ClearDelivery(Common_Get(now_private)->deliveries + idx, 1); - res = TRUE; + if (idx >= 0 && idx < mPr_POCKETS_SLOT_COUNT) { + if (mQst_GetDeliveryIdxbyItemIdx(idx) != -1) { + mQst_ClearDelivery(Common_Get(now_private)->deliveries + idx, 1); + res = TRUE; + } else { + int errand_idx = mQst_GetErrandIdxbyItemIdx(idx); + + if (errand_idx != -1) { + mQst_ClearErrand(Common_Get(now_private)->errands + errand_idx, 1); + res = TRUE; + } + } } - else { - int errand_idx = mQst_GetErrandIdxbyItemIdx(idx); - - if (errand_idx != -1) { - mQst_ClearErrand(Common_Get(now_private)->errands + errand_idx, 1); - res = TRUE; - } - } - } - return res; + return res; } extern int mQst_CheckLimitbyPossessionIdx(int idx) { - int res = FALSE; + int res = FALSE; - if (idx >= 0 && idx < mPr_POCKETS_SLOT_COUNT) { - mQst_delivery_c* delivery = Common_Get(now_private)->deliveries + idx; - mQst_errand_c* errand = Common_Get(now_private)->errands; - mActor_name_t item = Common_Get(now_private)->inventory.pockets[idx]; + if (idx >= 0 && idx < mPr_POCKETS_SLOT_COUNT) { + mQst_delivery_c* delivery = Common_Get(now_private)->deliveries + idx; + mQst_errand_c* errand = Common_Get(now_private)->errands; + mActor_name_t item = Common_Get(now_private)->inventory.pockets[idx]; - if (item != EMPTY_NO) { - if (mQst_CheckFreeQuest(&delivery->base) == FALSE && mQst_CheckLimitOver(&delivery->base) == TRUE) { - res = TRUE; - } + if (item != EMPTY_NO) { + if (mQst_CheckFreeQuest(&delivery->base) == FALSE && mQst_CheckLimitOver(&delivery->base) == TRUE) { + res = TRUE; + } - if (res == FALSE) { - int i; + if (res == FALSE) { + int i; - for (i = 0; i < mPr_ERRAND_QUEST_NUM; i++) { - if (mQst_CheckFreeQuest(&errand->base) == FALSE && errand->pockets_idx == idx && item == errand->item && mQst_CheckLimitOver(&errand->base) == TRUE) { - res = TRUE; - break; - } + for (i = 0; i < mPr_ERRAND_QUEST_NUM; i++) { + if (mQst_CheckFreeQuest(&errand->base) == FALSE && errand->pockets_idx == idx && + item == errand->item && mQst_CheckLimitOver(&errand->base) == TRUE) { + res = TRUE; + break; + } - errand++; + errand++; + } + } } - } } - } - return res; + return res; } static mQst_grab_c l_mqst_grab; static void mQst_ClearGrabItemInfo_common(mQst_grab_c* grab) { - grab->item = RSV_NO; - grab->pocket_idx = -1; - grab->type = mQst_QUEST_TYPE_NONE; - mQst_ClearDelivery(&grab->delivery, 1); + grab->item = RSV_NO; + grab->pocket_idx = -1; + grab->type = mQst_QUEST_TYPE_NONE; + mQst_ClearDelivery(&grab->delivery, 1); } extern void mQst_ClearGrabItemInfo() { - mQst_ClearGrabItemInfo_common(&l_mqst_grab); + mQst_ClearGrabItemInfo_common(&l_mqst_grab); } extern void mQst_CheckGrabItem(mActor_name_t item, int pocket_idx) { - Private_c* priv = Common_Get(now_private); - mQst_grab_c* grab = &l_mqst_grab; - mQst_delivery_c* delivery = priv->deliveries; - mQst_errand_c* errand = priv->errands; - u32 item_cond = priv->inventory.item_conditions; - int i; + Private_c* priv = Common_Get(now_private); + mQst_grab_c* grab = &l_mqst_grab; + mQst_delivery_c* delivery = priv->deliveries; + mQst_errand_c* errand = priv->errands; + u32 item_cond = priv->inventory.item_conditions; + int i; - if (pocket_idx >= 0 && pocket_idx < mPr_POCKETS_SLOT_COUNT) { - mQst_ClearGrabItemInfo_common(grab); - delivery += pocket_idx; + if (pocket_idx >= 0 && pocket_idx < mPr_POCKETS_SLOT_COUNT) { + mQst_ClearGrabItemInfo_common(grab); + delivery += pocket_idx; - if (mQst_CheckFreeQuest(&delivery->base) == FALSE) { - grab->item = item; - grab->pocket_idx = pocket_idx; - grab->type = mQst_QUEST_TYPE_DELIVERY; - mQst_CopyDelivery(&grab->delivery, delivery); - mQst_ClearDelivery(delivery, 1); - } - - if ((u32)grab->type == mQst_QUEST_TYPE_NONE && mPr_GET_ITEM_COND(item_cond, pocket_idx) == mPr_ITEM_COND_QUEST) { - - for (i = 0; i < mPr_ERRAND_QUEST_NUM; i++) { - if (mQst_CheckFreeQuest(&errand->base) == FALSE && errand->pockets_idx == pocket_idx && errand->item == item) { - grab->item = item; - grab->pocket_idx = i; - grab->type = mQst_QUEST_TYPE_ERRAND; - - break; + if (mQst_CheckFreeQuest(&delivery->base) == FALSE) { + grab->item = item; + grab->pocket_idx = pocket_idx; + grab->type = mQst_QUEST_TYPE_DELIVERY; + mQst_CopyDelivery(&grab->delivery, delivery); + mQst_ClearDelivery(delivery, 1); } - errand++; - } - } + if ((u32)grab->type == mQst_QUEST_TYPE_NONE && + mPr_GET_ITEM_COND(item_cond, pocket_idx) == mPr_ITEM_COND_QUEST) { - if ((u32)grab->type == mQst_QUEST_TYPE_NONE && item != EMPTY_NO) { - grab->item = item; + for (i = 0; i < mPr_ERRAND_QUEST_NUM; i++) { + if (mQst_CheckFreeQuest(&errand->base) == FALSE && errand->pockets_idx == pocket_idx && + errand->item == item) { + grab->item = item; + grab->pocket_idx = i; + grab->type = mQst_QUEST_TYPE_ERRAND; + + break; + } + + errand++; + } + } + + if ((u32)grab->type == mQst_QUEST_TYPE_NONE && item != EMPTY_NO) { + grab->item = item; + } } - } } extern void mQst_CheckPutItem(mActor_name_t item, int pocket_idx) { - Private_c* priv = Common_Get(now_private); - mQst_delivery_c t_delivery; - mQst_delivery_c* deliveries = priv->deliveries; - mQst_errand_c* errands = priv->errands; - mQst_grab_c* grab = &l_mqst_grab; - mActor_name_t slot_item; - int grab_idx = grab->pocket_idx; + Private_c* priv = Common_Get(now_private); + mQst_delivery_c t_delivery; + mQst_delivery_c* deliveries = priv->deliveries; + mQst_errand_c* errands = priv->errands; + mQst_grab_c* grab = &l_mqst_grab; + mActor_name_t slot_item; + int grab_idx = grab->pocket_idx; - if (pocket_idx >= 0 && pocket_idx < mPr_POCKETS_SLOT_COUNT) { - slot_item = priv->inventory.pockets[pocket_idx]; + if (pocket_idx >= 0 && pocket_idx < mPr_POCKETS_SLOT_COUNT) { + slot_item = priv->inventory.pockets[pocket_idx]; - if (grab->item != RSV_NO && item == grab->item) { - switch (grab->type) { - case mQst_QUEST_TYPE_DELIVERY: - { + if (grab->item != RSV_NO && item == grab->item) { + switch (grab->type) { + case mQst_QUEST_TYPE_DELIVERY: { - mQst_CopyDelivery(&t_delivery, &grab->delivery); - mQst_CheckGrabItem(slot_item, pocket_idx); - mQst_CopyDelivery(deliveries + pocket_idx, &t_delivery); + mQst_CopyDelivery(&t_delivery, &grab->delivery); + mQst_CheckGrabItem(slot_item, pocket_idx); + mQst_CopyDelivery(deliveries + pocket_idx, &t_delivery); - break; + break; + } + + case mQst_QUEST_TYPE_ERRAND: { + mQst_CheckGrabItem(slot_item, pocket_idx); + errands[grab_idx].pockets_idx = pocket_idx; + + break; + } + + default: { + mQst_CheckGrabItem(slot_item, pocket_idx); + + break; + } + } + } else { + mQst_CheckGrabItem(slot_item, pocket_idx); } - - case mQst_QUEST_TYPE_ERRAND: - { - mQst_CheckGrabItem(slot_item, pocket_idx); - errands[grab_idx].pockets_idx = pocket_idx; - - break; - } - - default: - { - mQst_CheckGrabItem(slot_item, pocket_idx); - - break; - } - } } - else { - mQst_CheckGrabItem(slot_item, pocket_idx); - } - } } extern int mQst_CheckNpcExistbyItemIdx(int idx, int sender_or_receipient) { - int res = FALSE; + int res = FALSE; - if (idx >= 0 && idx < mPr_POCKETS_SLOT_COUNT) { - int delivery_idx = mQst_GetDeliveryIdxbyItemIdx(idx); - if (delivery_idx != -1) { - mQst_delivery_c* delivery = Common_Get(now_private)->deliveries + delivery_idx; - if (sender_or_receipient == mQst_CHECK_NPC_RECEIPIENT) { - if (mNpc_SearchAnimalPersonalID(&delivery->recipient) != -1) { - res = TRUE; + if (idx >= 0 && idx < mPr_POCKETS_SLOT_COUNT) { + int delivery_idx = mQst_GetDeliveryIdxbyItemIdx(idx); + if (delivery_idx != -1) { + mQst_delivery_c* delivery = Common_Get(now_private)->deliveries + delivery_idx; + if (sender_or_receipient == mQst_CHECK_NPC_RECEIPIENT) { + if (mNpc_SearchAnimalPersonalID(&delivery->recipient) != -1) { + res = TRUE; + } + } else { + if (mNpc_SearchAnimalPersonalID(&delivery->sender) != -1) { + res = TRUE; + } + } + } else { + int errand_idx = mQst_GetErrandIdxbyItemIdx(idx); + + if (errand_idx != -1) { + mQst_errand_c* errand = Common_Get(now_private)->errands + errand_idx; + if (sender_or_receipient == mQst_CHECK_NPC_RECEIPIENT) { + if (mNpc_SearchAnimalPersonalID(&errand->recipient) != -1) { + res = TRUE; + } + } else { + if (mNpc_SearchAnimalPersonalID(&errand->sender) != -1) { + res = TRUE; + } + } + } } - } - else { - if (mNpc_SearchAnimalPersonalID(&delivery->sender) != -1) { - res = TRUE; - } - } } - else { - int errand_idx = mQst_GetErrandIdxbyItemIdx(idx); - if (errand_idx != -1) { - mQst_errand_c* errand = Common_Get(now_private)->errands + errand_idx; - if (sender_or_receipient == mQst_CHECK_NPC_RECEIPIENT) { - if (mNpc_SearchAnimalPersonalID(&errand->recipient) != -1) { - res = TRUE; - } - } - else { - if (mNpc_SearchAnimalPersonalID(&errand->sender) != -1) { - res = TRUE; - } - } - } - } - } - - return res; + return res; } extern int mQst_GetToFromName(u8* to_name, u8* from_name, int idx) { - int res = FALSE; + int res = FALSE; - if (idx >= 0 && idx < mPr_POCKETS_SLOT_COUNT) { - int delivery_idx = mQst_GetDeliveryIdxbyItemIdx(idx); + if (idx >= 0 && idx < mPr_POCKETS_SLOT_COUNT) { + int delivery_idx = mQst_GetDeliveryIdxbyItemIdx(idx); - if (delivery_idx != -1) { - mQst_delivery_c* delivery = Common_Get(now_private)->deliveries + delivery_idx; - - mNpc_GetNpcWorldNameAnm(to_name, &delivery->recipient); - mNpc_GetNpcWorldNameAnm(from_name, &delivery->sender); + if (delivery_idx != -1) { + mQst_delivery_c* delivery = Common_Get(now_private)->deliveries + delivery_idx; - res = TRUE; - } - else { - int errand_idx = mQst_GetErrandIdxbyItemIdx(idx); + mNpc_GetNpcWorldNameAnm(to_name, &delivery->recipient); + mNpc_GetNpcWorldNameAnm(from_name, &delivery->sender); - if (errand_idx != -1) { - mQst_errand_c* errand = Common_Get(now_private)->errands + errand_idx; - - mNpc_GetNpcWorldNameAnm(to_name, &errand->recipient); + res = TRUE; + } else { + int errand_idx = mQst_GetErrandIdxbyItemIdx(idx); - if (mEv_CheckFirstJob() == TRUE && errand->errand_type == mQst_ERRAND_TYPE_FIRST_JOB) { - mNpc_GetActorWorldName(from_name, SP_NPC_SHOP_MASTER); + if (errand_idx != -1) { + mQst_errand_c* errand = Common_Get(now_private)->errands + errand_idx; + + mNpc_GetNpcWorldNameAnm(to_name, &errand->recipient); + + if (mEv_CheckFirstJob() == TRUE && errand->errand_type == mQst_ERRAND_TYPE_FIRST_JOB) { + mNpc_GetActorWorldName(from_name, SP_NPC_SHOP_MASTER); + } else { + mNpc_GetNpcWorldNameAnm(from_name, &errand->sender); + } + + res = TRUE; + } } - else { - mNpc_GetNpcWorldNameAnm(from_name, &errand->sender); - } - - res = TRUE; - } } - } - return res; + return res; } extern int mQst_GetOccuredContestIdx(int kind) { - Animal_c* animal = Save_Get(animals); - int res = -1; - int i; + Animal_c* animal = Save_Get(animals); + int res = -1; + int i; - for (i = 0; i < ANIMAL_NUM_MAX; i++) { - if (animal->contest_quest.base.quest_type == mQst_QUEST_TYPE_CONTEST && (u32)animal->contest_quest.base.quest_kind == kind) { - res = i; - break; + for (i = 0; i < ANIMAL_NUM_MAX; i++) { + if (animal->contest_quest.base.quest_type == mQst_QUEST_TYPE_CONTEST && + (u32)animal->contest_quest.base.quest_kind == kind) { + res = i; + break; + } + + animal++; } - animal++; - } - - return res; + return res; } extern int mQst_GetFlowerSeedNum(int block_x, int block_z) { - return mFI_GetItemNumOnBlockInField(block_x, block_z, FLOWER_LEAVES_PANSIES0, FLOWER_TULIP2); + return mFI_GetItemNumOnBlockInField(block_x, block_z, FLOWER_LEAVES_PANSIES0, FLOWER_TULIP2); } extern int mQst_GetFlowerNum(int block_x, int block_z) { - return mFI_GetItemNumOnBlockInField(block_x, block_z, FLOWER_PANSIES0, FLOWER_TULIP2); + return mFI_GetItemNumOnBlockInField(block_x, block_z, FLOWER_PANSIES0, FLOWER_TULIP2); } extern int mQst_GetNullNoNum(int block_x, int block_z) { - return mFI_GetItemNumOnBlockInField(block_x, block_z, EMPTY_NO, EMPTY_NO); + return mFI_GetItemNumOnBlockInField(block_x, block_z, EMPTY_NO, EMPTY_NO); } extern void mQst_SetItemNameStr(mActor_name_t item, int string_no) { - u8 name[mIN_ITEM_NAME_LEN]; + u8 name[mIN_ITEM_NAME_LEN]; - if (item != EMPTY_NO) { - int article_no; - - mIN_copy_name_str(name, item); - article_no = mIN_get_item_article(item); - mMsg_Set_item_str_art(mMsg_Get_base_window_p(), string_no, name, mIN_ITEM_NAME_LEN, article_no); - } + if (item != EMPTY_NO) { + int article_no; + + mIN_copy_name_str(name, item); + article_no = mIN_get_item_article(item); + mMsg_Set_item_str_art(mMsg_Get_base_window_p(), string_no, name, mIN_ITEM_NAME_LEN, article_no); + } } extern void mQst_SetItemNameFreeStr(mActor_name_t item, int string_no) { - u8 name[mIN_ITEM_NAME_LEN]; + u8 name[mIN_ITEM_NAME_LEN]; - if (item != EMPTY_NO) { - int article_no; - - mIN_copy_name_str(name, item); - article_no = mIN_get_item_article(item); - mMsg_Set_free_str_art(mMsg_Get_base_window_p(), string_no, name, mIN_ITEM_NAME_LEN, article_no); - } + if (item != EMPTY_NO) { + int article_no; + + mIN_copy_name_str(name, item); + article_no = mIN_get_item_article(item); + mMsg_Set_free_str_art(mMsg_Get_base_window_p(), string_no, name, mIN_ITEM_NAME_LEN, article_no); + } } static mActor_name_t mQst_GetPresent(int rank) { - int category = -1; - int list = -1; - mActor_name_t item = 0; + int category = -1; + int list = -1; + mActor_name_t item = 0; - switch (rank) { - case mQst_LETTER_RANK_3: - case mQst_LETTER_RANK_7: - category = mSP_KIND_CLOTH; - list = mSP_LISTTYPE_ABC; - break; + switch (rank) { + case mQst_LETTER_RANK_3: + case mQst_LETTER_RANK_7: + category = mSP_KIND_CLOTH; + list = mSP_LISTTYPE_ABC; + break; - case mQst_LETTER_RANK_4: - category = mSP_KIND_FURNITURE; - list = mSP_LISTTYPE_ABC; - break; - - case mQst_LETTER_RANK_5: - { - list = mSP_LISTTYPE_ABC; + case mQst_LETTER_RANK_4: + category = mSP_KIND_FURNITURE; + list = mSP_LISTTYPE_ABC; + break; - if ((mQst_GetRandom(4) & 1) == 0) { - category = mSP_KIND_CARPET; - } - else { - category = mSP_KIND_WALLPAPER; - } + case mQst_LETTER_RANK_5: { + list = mSP_LISTTYPE_ABC; - break; + if ((mQst_GetRandom(4) & 1) == 0) { + category = mSP_KIND_CARPET; + } else { + category = mSP_KIND_WALLPAPER; + } + + break; + } + + case mQst_LETTER_RANK_6: + item = Save_Get(fruit); + break; + + case mQst_LETTER_RANK_8: + category = mSP_KIND_CLOTH; + list = mSP_LISTTYPE_RARE; + break; + + case mQst_LETTER_RANK_9: + item = mFI_GetOtherFruit(); + break; + + case mQst_LETTER_RANK_10: + category = mSP_KIND_FURNITURE; + list = mSP_LISTTYPE_RARE; + break; + + case mQst_LETTER_RANK_11: { + list = mSP_LISTTYPE_RARE; + + if ((mQst_GetRandom(4) & 1) == 0) { + category = mSP_KIND_CARPET; + } else { + category = mSP_KIND_WALLPAPER; + } + + break; + } } - case mQst_LETTER_RANK_6: - item = Save_Get(fruit); - break; - - case mQst_LETTER_RANK_8: - category = mSP_KIND_CLOTH; - list = mSP_LISTTYPE_RARE; - break; - - case mQst_LETTER_RANK_9: - item = mFI_GetOtherFruit(); - break; - - case mQst_LETTER_RANK_10: - category = mSP_KIND_FURNITURE; - list = mSP_LISTTYPE_RARE; - break; - - case mQst_LETTER_RANK_11: - { - list = mSP_LISTTYPE_RARE; - - if ((mQst_GetRandom(4) & 1) == 0) { - category = mSP_KIND_CARPET; - } - else { - category = mSP_KIND_WALLPAPER; - } - - break; + if (category != -1 && list != -1) { + mSP_SelectRandomItem_New(NULL, &item, 1, NULL, 0, category, list, FALSE); } - } - if (category != -1 && list != -1) { - mSP_SelectRandomItem_New(NULL, &item, 1, NULL, 0, category, list, FALSE); - } - - return item; + return item; } -static void mQst_GetRemailData(Mail_c* letter, PersonalID_c* recipient_id, AnmPersonalID_c* sender_id, int rank, mActor_name_t present) { - int handbill_no; - int looks = sender_id->looks; - u8 name_buf[mIN_ITEM_NAME_LEN]; - u8 header[MAIL_HEADER2_LEN]; - u8 footer[MAIL_FOOTER2_LEN]; - int header_back_pos; - - mMl_clear_mail(letter); - handbill_no = 0x75 + (rank * mNpc_LOOKS_NUM + looks); - mNpc_GetNpcWorldNameAnm(name_buf, sender_id); - mHandbill_Set_free_str(mHandbill_FREE_STR6, name_buf, ANIMAL_NAME_LEN); +static void mQst_GetRemailData(Mail_c* letter, PersonalID_c* recipient_id, AnmPersonalID_c* sender_id, int rank, + mActor_name_t present) { + int handbill_no; + int looks = sender_id->looks; + u8 name_buf[mIN_ITEM_NAME_LEN]; + u8 header[MAIL_HEADER2_LEN]; + u8 footer[MAIL_FOOTER2_LEN]; + int header_back_pos; - if (present != EMPTY_NO) { - mIN_copy_name_str(name_buf, present); - mHandbill_Set_free_str(mHandbill_FREE_STR0, name_buf, mIN_ITEM_NAME_LEN); - } + mMl_clear_mail(letter); + handbill_no = 0x75 + (rank * mNpc_LOOKS_NUM + looks); + mNpc_GetNpcWorldNameAnm(name_buf, sender_id); + mHandbill_Set_free_str(mHandbill_FREE_STR6, name_buf, ANIMAL_NAME_LEN); - mHandbill_Load_HandbillFromRom2(header, MAIL_HEADER2_LEN, &header_back_pos, footer, MAIL_FOOTER2_LEN, letter->content.body, handbill_no); - mem_copy(letter->content.header, header, MAIL_HEADER_LEN); - mem_copy(letter->content.footer, footer, MAIL_FOOTER_LEN); - letter->content.header_back_start = header_back_pos; - letter->content.font = mMl_FONT_0; - letter->content.mail_type = 0; + if (present != EMPTY_NO) { + mIN_copy_name_str(name_buf, present); + mHandbill_Set_free_str(mHandbill_FREE_STR0, name_buf, mIN_ITEM_NAME_LEN); + } - mPr_CopyPersonalID(&letter->header.recipient.personalID, recipient_id); - letter->header.recipient.type = mMl_NAME_TYPE_PLAYER; + mHandbill_Load_HandbillFromRom2(header, MAIL_HEADER2_LEN, &header_back_pos, footer, MAIL_FOOTER2_LEN, + letter->content.body, handbill_no); + mem_copy(letter->content.header, header, MAIL_HEADER_LEN); + mem_copy(letter->content.footer, footer, MAIL_FOOTER_LEN); + letter->content.header_back_start = header_back_pos; + letter->content.font = mMl_FONT_0; + letter->content.mail_type = 0; - mMl_set_mail_name_npcinfo(&letter->header.sender, sender_id); - - letter->content.paper_type = (ITM_PAPER22 - ITM_PAPER_START); // festive paper - letter->present = present; + mPr_CopyPersonalID(&letter->header.recipient.personalID, recipient_id); + letter->header.recipient.type = mMl_NAME_TYPE_PLAYER; + + mMl_set_mail_name_npcinfo(&letter->header.sender, sender_id); + + letter->content.paper_type = (ITM_PAPER22 - ITM_PAPER_START); // festive paper + letter->present = present; } extern int mQst_SendRemail(mQst_contest_c* contest, AnmPersonalID_c* sender_id) { - PersonalID_c* recipient_id = &contest->player_id; - mHm_hs_c* house; - int res = FALSE; + PersonalID_c* recipient_id = &contest->player_id; + mHm_hs_c* house; + int res = FALSE; - if (mPr_NullCheckPersonalID(recipient_id) == FALSE) { - int priv_idx = mPr_GetPrivateIdx(recipient_id); + if (mPr_NullCheckPersonalID(recipient_id) == FALSE) { + int priv_idx = mPr_GetPrivateIdx(recipient_id); - if (priv_idx != -1) { - house = Save_GetPointer(homes[mHS_get_arrange_idx(priv_idx)]); + if (priv_idx != -1) { + house = Save_GetPointer(homes[mHS_get_arrange_idx(priv_idx)]); - if (mPr_CheckCmpPersonalID(recipient_id, &house->ownerID) == TRUE) { - int free_mail_idx = mMl_chk_mail_free_space(house->mailbox, HOME_MAILBOX_SIZE); + if (mPr_CheckCmpPersonalID(recipient_id, &house->ownerID) == TRUE) { + int free_mail_idx = mMl_chk_mail_free_space(house->mailbox, HOME_MAILBOX_SIZE); - if (free_mail_idx != -1) { - Mail_c letter; + if (free_mail_idx != -1) { + Mail_c letter; - mQst_GetRemailData(&letter, recipient_id, sender_id, contest->info.letter_data.score, contest->info.letter_data.present); - mMl_copy_mail(&house->mailbox[free_mail_idx], &letter); + mQst_GetRemailData(&letter, recipient_id, sender_id, contest->info.letter_data.score, + contest->info.letter_data.present); + mMl_copy_mail(&house->mailbox[free_mail_idx], &letter); - res = TRUE; + res = TRUE; + } + } } - } } - } - return res; + return res; } static u8 mQst_GetMailRank(u8* body, mActor_name_t present) { - u8 rank = mQst_LETTER_RANK_MIN; - int length = 0; - u8 score_bonus = mNpc_CheckNormalMail_length(&length, body); + u8 rank = mQst_LETTER_RANK_MIN; + int length = 0; + u8 score_bonus = mNpc_CheckNormalMail_length(&length, body); - if (length >= mQst_LETTER_GOOD_LENGTH) { - rank = mQst_LETTER_RANK_2; - } - else if (length >= mQst_LETTER_OKAY_LENGTH) { - rank = mQst_LETTER_RANK_1; - } + if (length >= mQst_LETTER_GOOD_LENGTH) { + rank = mQst_LETTER_RANK_2; + } else if (length >= mQst_LETTER_OKAY_LENGTH) { + rank = mQst_LETTER_RANK_1; + } - if (score_bonus >= mNpc_LETTER_RANK_OK) { - rank += mQst_LETTER_SCORE_BONUS; - } + if (score_bonus >= mNpc_LETTER_RANK_OK) { + rank += mQst_LETTER_SCORE_BONUS; + } - if (present != EMPTY_NO) { - rank += mQst_LETTER_PRESENT_BONUS; - } + if (present != EMPTY_NO) { + rank += mQst_LETTER_PRESENT_BONUS; + } - return rank; + return rank; } extern void mQst_SetReceiveLetter(mQst_contest_c* contest, PersonalID_c* sender_id, u8* body, mActor_name_t present) { - if ( - contest->base.quest_type == mQst_QUEST_TYPE_CONTEST && - contest->base.quest_kind == mQst_CONTEST_KIND_LETTER && - mPr_NullCheckPersonalID(&contest->player_id) == TRUE && - contest->base.progress == 2 - ) { - mPr_CopyPersonalID(&contest->player_id, sender_id); - contest->base.progress = 1; - contest->info.letter_data.score = mQst_GetMailRank(body, present); - contest->info.letter_data.present = mQst_GetPresent(contest->info.letter_data.score); - } + if (contest->base.quest_type == mQst_QUEST_TYPE_CONTEST && contest->base.quest_kind == mQst_CONTEST_KIND_LETTER && + mPr_NullCheckPersonalID(&contest->player_id) == TRUE && contest->base.progress == 2) { + mPr_CopyPersonalID(&contest->player_id, sender_id); + contest->base.progress = 1; + contest->info.letter_data.score = mQst_GetMailRank(body, present); + contest->info.letter_data.present = mQst_GetPresent(contest->info.letter_data.score); + } } extern mQst_errand_c* mQst_GetFirstJobData() { - mQst_errand_c* errand = Common_Get(now_private)->errands; - mQst_errand_c* errand_p = errand; - int i; - int j; - mQst_errand_c* selected_errand = NULL; + mQst_errand_c* errand = Common_Get(now_private)->errands; + mQst_errand_c* errand_p = errand; + int i; + int j; + mQst_errand_c* selected_errand = NULL; - /* Try to find any current 'first job' errand quest */ - for (i = 0; i < mPr_ERRAND_QUEST_NUM; i++) { - if (errand_p->base.quest_type == mQst_QUEST_TYPE_ERRAND && errand_p->errand_type == mQst_ERRAND_TYPE_FIRST_JOB) { - selected_errand = errand_p; - break; + /* Try to find any current 'first job' errand quest */ + for (i = 0; i < mPr_ERRAND_QUEST_NUM; i++) { + if (errand_p->base.quest_type == mQst_QUEST_TYPE_ERRAND && + errand_p->errand_type == mQst_ERRAND_TYPE_FIRST_JOB) { + selected_errand = errand_p; + break; + } + + errand_p++; } - errand_p++; - } + if (selected_errand == NULL) { + /* Try to find a free quest slot */ - if (selected_errand == NULL) { - /* Try to find a free quest slot */ + for (j = 0; j < mPr_ERRAND_QUEST_NUM; j++) { + if (mQst_CheckFreeQuest(&errand->base) == TRUE) { + selected_errand = errand; + break; + } - for (j = 0; j < mPr_ERRAND_QUEST_NUM; j++) { - if (mQst_CheckFreeQuest(&errand->base) == TRUE) { - selected_errand = errand; - break; - } - - errand++; + errand++; + } } - } - - return selected_errand; /* This can be NULL */ + return selected_errand; /* This can be NULL */ } static int mQst_CheckFirstJobQuest(mQst_errand_c* errand) { - if (errand != NULL && errand->base.quest_type == mQst_QUEST_TYPE_ERRAND && errand->errand_type == mQst_ERRAND_TYPE_FIRST_JOB) { - return TRUE; - } + if (errand != NULL && errand->base.quest_type == mQst_QUEST_TYPE_ERRAND && + errand->errand_type == mQst_ERRAND_TYPE_FIRST_JOB) { + return TRUE; + } - return FALSE; + return FALSE; } extern int mQst_CheckFirstJobQuestbyItemIdx(int idx) { - int res = FALSE; + int res = FALSE; - if (idx >= 0 && idx < mPr_POCKETS_SLOT_COUNT) { - int errand_idx = mQst_GetErrandIdxbyItemIdx(idx); - - if (errand_idx != -1) { - res = mQst_CheckFirstJobQuest(Common_Get(now_private)->errands + errand_idx); + if (idx >= 0 && idx < mPr_POCKETS_SLOT_COUNT) { + int errand_idx = mQst_GetErrandIdxbyItemIdx(idx); + + if (errand_idx != -1) { + res = mQst_CheckFirstJobQuest(Common_Get(now_private)->errands + errand_idx); + } } - } - return res; + return res; } extern int mQst_CheckFirstJobFin(mQst_errand_c* errand) { - int res = FALSE; + int res = FALSE; - if (errand->base.progress == 0) { - res = TRUE; - } + if (errand->base.progress == 0) { + res = TRUE; + } - return res; + return res; } extern int mQst_CheckRemoveTarget(mQst_errand_c* errand) { - int res = FALSE; - - if (errand != NULL && mNpc_SearchAnimalinfo(Save_Get(animals), errand->recipient.npc_id, ANIMAL_NUM_MAX) == -1) { - res = TRUE; - } + int res = FALSE; - return res; + if (errand != NULL && mNpc_SearchAnimalinfo(Save_Get(animals), errand->recipient.npc_id, ANIMAL_NUM_MAX) == -1) { + res = TRUE; + } + + return res; } extern void mQst_SetFirstJobStart(mQst_errand_c* errand) { - int i; + int i; - if (errand != NULL) { - mQst_ClearErrand(errand, 1); - errand->base.quest_type = mQst_QUEST_TYPE_ERRAND; - errand->base.quest_kind = mQst_ERRAND_FIRSTJOB_START; - errand->base.progress = 0; - errand->errand_type = mQst_ERRAND_TYPE_FIRST_JOB; - - for (i = 0; i < mQst_ERRAND_FIRST_JOB_ANIMAL_NUM; i++) { - mNpc_ClearAnimalPersonalID(errand->info.first_job.used_ids + i); + if (errand != NULL) { + mQst_ClearErrand(errand, 1); + errand->base.quest_type = mQst_QUEST_TYPE_ERRAND; + errand->base.quest_kind = mQst_ERRAND_FIRSTJOB_START; + errand->base.progress = 0; + errand->errand_type = mQst_ERRAND_TYPE_FIRST_JOB; + + for (i = 0; i < mQst_ERRAND_FIRST_JOB_ANIMAL_NUM; i++) { + mNpc_ClearAnimalPersonalID(errand->info.first_job.used_ids + i); + } } - } } extern void mQst_SetFirstJobChangeCloth(mQst_errand_c* errand, mActor_name_t item) { - if (errand == NULL) { - return; - } + if (errand == NULL) { + return; + } - errand->base.quest_type = mQst_QUEST_TYPE_ERRAND; - errand->base.quest_kind = mQst_ERRAND_FIRSTJOB_CHANGE_CLOTH; - errand->base.time_limit_enabled = FALSE; - errand->base.progress = 2; - errand->base.give_reward = FALSE; + errand->base.quest_type = mQst_QUEST_TYPE_ERRAND; + errand->base.quest_kind = mQst_ERRAND_FIRSTJOB_CHANGE_CLOTH; + errand->base.time_limit_enabled = FALSE; + errand->base.progress = 2; + errand->base.give_reward = FALSE; - errand->errand_type = mQst_ERRAND_TYPE_FIRST_JOB; - errand->item = item; + errand->errand_type = mQst_ERRAND_TYPE_FIRST_JOB; + errand->item = item; } extern void mQst_SetFirstJobSeed(mQst_errand_c* errand) { - if (errand == NULL) { - return; - } + if (errand == NULL) { + return; + } - errand->base.quest_type = mQst_QUEST_TYPE_ERRAND; - errand->base.quest_kind = mQst_ERRAND_FIRSTJOB_PLANT_FLOWER; - errand->base.time_limit_enabled = FALSE; - errand->base.progress = 2; - errand->base.give_reward = FALSE; + errand->base.quest_type = mQst_QUEST_TYPE_ERRAND; + errand->base.quest_kind = mQst_ERRAND_FIRSTJOB_PLANT_FLOWER; + errand->base.time_limit_enabled = FALSE; + errand->base.progress = 2; + errand->base.give_reward = FALSE; - errand->errand_type = mQst_ERRAND_TYPE_FIRST_JOB; + errand->errand_type = mQst_ERRAND_TYPE_FIRST_JOB; } extern void mQst_SetFirstJobHello(mQst_errand_c* errand) { - if (errand == NULL) { - return; - } + if (errand == NULL) { + return; + } - errand->base.quest_type = mQst_QUEST_TYPE_ERRAND; - errand->base.quest_kind = mQst_ERRAND_FIRSTJOB_INTRODUCTIONS; - errand->base.time_limit_enabled = FALSE; - errand->base.progress = 2; - errand->base.give_reward = FALSE; - - errand->errand_type = mQst_ERRAND_TYPE_FIRST_JOB; -} - -extern void mQst_SetFirstJobFurniture(mQst_errand_c* errand, AnmPersonalID_c* pid, mActor_name_t item, u8 slot) { - if (errand != NULL) { errand->base.quest_type = mQst_QUEST_TYPE_ERRAND; - errand->base.quest_kind = mQst_ERRAND_FIRSTJOB_DELIVER_FTR; + errand->base.quest_kind = mQst_ERRAND_FIRSTJOB_INTRODUCTIONS; errand->base.time_limit_enabled = FALSE; errand->base.progress = 2; errand->base.give_reward = FALSE; - mNpc_CopyAnimalPersonalID(&errand->recipient, pid); - mNpc_CopyAnimalPersonalID(&errand->info.first_job.used_ids[0], pid); - errand->info.first_job.used_num = 1; - errand->pockets_idx = slot; errand->errand_type = mQst_ERRAND_TYPE_FIRST_JOB; - errand->item = item; - } +} + +extern void mQst_SetFirstJobFurniture(mQst_errand_c* errand, AnmPersonalID_c* pid, mActor_name_t item, int slot) { + if (errand != NULL) { + errand->base.quest_type = mQst_QUEST_TYPE_ERRAND; + errand->base.quest_kind = mQst_ERRAND_FIRSTJOB_DELIVER_FTR; + errand->base.time_limit_enabled = FALSE; + errand->base.progress = 2; + errand->base.give_reward = FALSE; + + mNpc_CopyAnimalPersonalID(&errand->recipient, pid); + mNpc_CopyAnimalPersonalID(&errand->info.first_job.used_ids[0], pid); + errand->info.first_job.used_num = 1; + errand->pockets_idx = slot; + errand->errand_type = mQst_ERRAND_TYPE_FIRST_JOB; + errand->item = item; + } } static void mQst_SetFirstJobLetter_common(mQst_errand_c* errand, AnmPersonalID_c* pid, u8 kind) { - if (errand != NULL) { - errand->base.quest_type = mQst_QUEST_TYPE_ERRAND; - errand->base.quest_kind = (u32)kind; - errand->base.time_limit_enabled = FALSE; - errand->base.progress = 2; - errand->base.give_reward = FALSE; + if (errand != NULL) { + errand->base.quest_type = mQst_QUEST_TYPE_ERRAND; + errand->base.quest_kind = (u32)kind; + errand->base.time_limit_enabled = FALSE; + errand->base.progress = 2; + errand->base.give_reward = FALSE; - mNpc_CopyAnimalPersonalID(&errand->recipient, pid); - errand->errand_type = mQst_ERRAND_TYPE_FIRST_JOB; - mNpc_CopyAnimalPersonalID(&errand->info.first_job.used_ids[1], pid); - errand->info.first_job.used_num = 2; - } + mNpc_CopyAnimalPersonalID(&errand->recipient, pid); + errand->errand_type = mQst_ERRAND_TYPE_FIRST_JOB; + mNpc_CopyAnimalPersonalID(&errand->info.first_job.used_ids[1], pid); + errand->info.first_job.used_num = 2; + } } extern void mQst_SetFirstJobLetter(mQst_errand_c* errand, AnmPersonalID_c* pid) { - mQst_SetFirstJobLetter_common(errand, pid, mQst_ERRAND_FIRSTJOB_SEND_LETTER); + mQst_SetFirstJobLetter_common(errand, pid, mQst_ERRAND_FIRSTJOB_SEND_LETTER); } extern void mQst_SetFirstJobLetter2(mQst_errand_c* errand, AnmPersonalID_c* pid) { - mQst_SetFirstJobLetter_common(errand, pid, mQst_ERRAND_FIRSTJOB_SEND_LETTER2); + mQst_SetFirstJobLetter_common(errand, pid, mQst_ERRAND_FIRSTJOB_SEND_LETTER2); } extern void mQst_SetFirstJobOpenQuest(mQst_errand_c* errand) { - if (errand != NULL) { - errand->base.quest_type = mQst_QUEST_TYPE_ERRAND; - errand->base.quest_kind = mQst_ERRAND_FIRSTJOB_OPEN; - errand->base.time_limit_enabled = FALSE; - errand->base.progress = 2; - errand->base.give_reward = FALSE; + if (errand != NULL) { + errand->base.quest_type = mQst_QUEST_TYPE_ERRAND; + errand->base.quest_kind = mQst_ERRAND_FIRSTJOB_OPEN; + errand->base.time_limit_enabled = FALSE; + errand->base.progress = 2; + errand->base.give_reward = FALSE; - mNpc_ClearAnimalPersonalID(&errand->recipient); - errand->errand_type = mQst_ERRAND_TYPE_FIRST_JOB; - mEv_EventON(mEv_SAVED_FJOPENQUEST_PLR0 + Common_Get(player_no)); - } + mNpc_ClearAnimalPersonalID(&errand->recipient); + errand->errand_type = mQst_ERRAND_TYPE_FIRST_JOB; + mEv_EventON(mEv_SAVED_FJOPENQUEST_PLR0 + Common_Get(player_no)); + } } -extern void mQst_SetFirstJobCarpet(mQst_errand_c* errand, AnmPersonalID_c* pid, mActor_name_t item, u8 slot) { - if (errand != NULL) { - errand->base.quest_type = mQst_QUEST_TYPE_ERRAND; - errand->base.quest_kind = mQst_ERRAND_FIRSTJOB_DELIVER_CARPET; - errand->base.time_limit_enabled = FALSE; - errand->base.progress = 2; - errand->base.give_reward = FALSE; +extern void mQst_SetFirstJobCarpet(mQst_errand_c* errand, AnmPersonalID_c* pid, mActor_name_t item, int slot) { + if (errand != NULL) { + errand->base.quest_type = mQst_QUEST_TYPE_ERRAND; + errand->base.quest_kind = mQst_ERRAND_FIRSTJOB_DELIVER_CARPET; + errand->base.time_limit_enabled = FALSE; + errand->base.progress = 2; + errand->base.give_reward = FALSE; - mNpc_CopyAnimalPersonalID(&errand->recipient, pid); - errand->pockets_idx = slot; - errand->errand_type = mQst_ERRAND_TYPE_FIRST_JOB; - errand->item = item; - } + mNpc_CopyAnimalPersonalID(&errand->recipient, pid); + errand->pockets_idx = slot; + errand->errand_type = mQst_ERRAND_TYPE_FIRST_JOB; + errand->item = item; + } } -static void mQst_SetFirstJobAxe_common(mQst_errand_c* errand, AnmPersonalID_c* pid, mActor_name_t item, u8 slot, u8 kind) { - if (errand != NULL) { - errand->base.quest_type = mQst_QUEST_TYPE_ERRAND; - errand->base.quest_kind = kind; - errand->base.time_limit_enabled = FALSE; - errand->base.progress = 2; - errand->base.give_reward = FALSE; +static void mQst_SetFirstJobAxe_common(mQst_errand_c* errand, AnmPersonalID_c* pid, mActor_name_t item, int slot, + u8 kind) { + if (errand != NULL) { + errand->base.quest_type = mQst_QUEST_TYPE_ERRAND; + errand->base.quest_kind = kind; + errand->base.time_limit_enabled = FALSE; + errand->base.progress = 2; + errand->base.give_reward = FALSE; - mNpc_CopyAnimalPersonalID(&errand->recipient, pid); - errand->pockets_idx = slot; - errand->errand_type = mQst_ERRAND_TYPE_FIRST_JOB; - errand->item = item; - } + mNpc_CopyAnimalPersonalID(&errand->recipient, pid); + errand->pockets_idx = slot; + errand->errand_type = mQst_ERRAND_TYPE_FIRST_JOB; + errand->item = item; + } } -extern void mQst_SetFirstJobAxe(mQst_errand_c* errand, AnmPersonalID_c* pid, mActor_name_t item, u8 slot) { - mQst_SetFirstJobAxe_common(errand, pid, item, slot, mQst_ERRAND_FIRSTJOB_DELIVER_AXE); +extern void mQst_SetFirstJobAxe(mQst_errand_c* errand, AnmPersonalID_c* pid, mActor_name_t item, int slot) { + mQst_SetFirstJobAxe_common(errand, pid, item, slot, mQst_ERRAND_FIRSTJOB_DELIVER_AXE); } -extern void mQst_SetFirstJobAxe2(mQst_errand_c* errand, AnmPersonalID_c* pid, mActor_name_t item, u8 slot) { - mQst_SetFirstJobAxe_common(errand, pid, item, slot, mQst_ERRAND_FIRSTJOB_DELIVER_AXE2); +extern void mQst_SetFirstJobAxe2(mQst_errand_c* errand, AnmPersonalID_c* pid, mActor_name_t item, int slot) { + mQst_SetFirstJobAxe_common(errand, pid, item, slot, mQst_ERRAND_FIRSTJOB_DELIVER_AXE2); } extern void mQst_SetFirstJobNotice(mQst_errand_c* errand) { - if (errand != NULL) { - errand->base.quest_type = mQst_QUEST_TYPE_ERRAND; - errand->base.quest_kind = mQst_ERRAND_FIRSTJOB_POST_NOTICE; - errand->base.time_limit_enabled = FALSE; - errand->base.progress = 2; - errand->base.give_reward = FALSE; + if (errand != NULL) { + errand->base.quest_type = mQst_QUEST_TYPE_ERRAND; + errand->base.quest_kind = mQst_ERRAND_FIRSTJOB_POST_NOTICE; + errand->base.time_limit_enabled = FALSE; + errand->base.progress = 2; + errand->base.give_reward = FALSE; - mNpc_ClearAnimalPersonalID(&errand->recipient); - errand->errand_type = mQst_ERRAND_TYPE_FIRST_JOB; - } + mNpc_ClearAnimalPersonalID(&errand->recipient); + errand->errand_type = mQst_ERRAND_TYPE_FIRST_JOB; + } } extern int mQst_GetRandom(int max) { - return RANDOM(max); + return RANDOM(max); } -extern void mQst_GetGoods_common(mActor_name_t* item, AnmPersonalID_c* pid, int category, mActor_name_t* exist_table, int exist_num, int list) { - int generate_random_item = 1; +extern void mQst_GetGoods_common(mActor_name_t* item, AnmPersonalID_c* pid, int category, mActor_name_t* exist_table, + int exist_num, int list) { + int generate_random_item = 1; - if (category == mSP_KIND_FURNITURE) { - generate_random_item = RANDOM(10); - } - - /* 1/10 chance to roll an item from the villager's house if the "goods" kind is furniture */ - if (generate_random_item != 0) { - mSP_SelectRandomItem_New(NULL, item, 1, exist_table, exist_num, category, list, FALSE); - } - else { - *item = mNpc_GetNpcFurniture(pid); - - if (*item == EMPTY_NO) { - mSP_SelectRandomItem_New(NULL, item, 1, exist_table, exist_num, category, list, FALSE); + if (category == mSP_KIND_FURNITURE) { + generate_random_item = RANDOM(10); + } + + /* 1/10 chance to roll an item from the villager's house if the "goods" kind is furniture */ + if (generate_random_item != 0) { + mSP_SelectRandomItem_New(NULL, item, 1, exist_table, exist_num, category, list, FALSE); + } else { + *item = mNpc_GetNpcFurniture(pid); + + if (*item == EMPTY_NO) { + mSP_SelectRandomItem_New(NULL, item, 1, exist_table, exist_num, category, list, FALSE); + } } - } } extern int mQst_CheckSoccerTarget(ACTOR* actor) { - int res = FALSE; + int res = FALSE; - if (actor != NULL && actor->part == ACTOR_PART_NPC) { - int npc_idx = mQst_GetOccuredContestIdx(mQst_CONTEST_KIND_SOCCER); + if (actor != NULL && actor->part == ACTOR_PART_NPC) { + int npc_idx = mQst_GetOccuredContestIdx(mQst_CONTEST_KIND_SOCCER); - if (npc_idx != -1) { - Animal_c* animal = Save_GetPointer(animals[npc_idx]); - - if (animal->contest_quest.base.progress == 2) { - res = mNpc_CheckCmpAnimalPersonalID(&animal->id, &((NPC_ACTOR*)actor)->npc_info.animal->id); - } + if (npc_idx != -1) { + Animal_c* animal = Save_GetPointer(animals[npc_idx]); + + if (animal->contest_quest.base.progress == 2) { + res = mNpc_CheckCmpAnimalPersonalID(&animal->id, &((NPC_ACTOR*)actor)->npc_info.animal->id); + } + } } - } - return res; + return res; } extern void mQst_NextSoccer(ACTOR* actor) { - mQst_contest_c* contest; - int looks = mNpc_LOOKS_GIRL; - NPC_ACTOR* npc_actor = (NPC_ACTOR*)actor; - int npc_idx = mQst_GetOccuredContestIdx(mQst_CONTEST_KIND_SOCCER); - + mQst_contest_c* contest; + int looks = mNpc_LOOKS_GIRL; + NPC_ACTOR* npc_actor = (NPC_ACTOR*)actor; + int npc_idx = mQst_GetOccuredContestIdx(mQst_CONTEST_KIND_SOCCER); - if (npc_idx != -1 && npc_actor != NULL) { - contest = &Save_Get(animals[npc_idx]).contest_quest; - - if (contest->base.progress == 2 && Common_Get(clip).npc_clip != NULL) { - Animal_c* animal = npc_actor->npc_info.animal; + if (npc_idx != -1 && npc_actor != NULL) { + contest = &Save_Get(animals[npc_idx]).contest_quest; - if (animal != NULL) { - looks = animal->id.looks; - } + if (contest->base.progress == 2 && Common_Get(clip).npc_clip != NULL) { + Animal_c* animal = npc_actor->npc_info.animal; - if ((*Common_Get(clip).npc_clip->force_call_req_proc)(npc_actor, 0x0D8B + looks) == TRUE) { - contest->base.progress = 1; - mPr_CopyPersonalID(&contest->player_id, &Common_Get(now_private)->player_ID); - } + if (animal != NULL) { + looks = animal->id.looks; + } + + if ((*Common_Get(clip).npc_clip->force_call_req_proc)(npc_actor, 0x0D8B + looks) == TRUE) { + contest->base.progress = 1; + mPr_CopyPersonalID(&contest->player_id, &Common_Get(now_private)->player_ID); + } + } } - } } /* @unused int? mQst_CheckBallKeep(...?) */ extern void mQst_NextSnowman(xyz_t snowman_pos) { - int npc_idx = mQst_GetOccuredContestIdx(mQst_CONTEST_KIND_SNOWMAN); - int block_x; - int block_z; + int npc_idx = mQst_GetOccuredContestIdx(mQst_CONTEST_KIND_SNOWMAN); + int block_x; + int block_z; - if (npc_idx != -1) { - mQst_contest_c* contest; - Animal_c* animal = Save_GetPointer(animals[npc_idx]); - - contest = &animal->contest_quest; + if (npc_idx != -1) { + mQst_contest_c* contest; + Animal_c* animal = Save_GetPointer(animals[npc_idx]); - if (contest->base.progress == 1) { - if (mFI_Wpos2BlockNum(&block_x, &block_z, snowman_pos) == TRUE && animal->home_info.block_x == block_x && animal->home_info.block_z == block_z) { - mPr_CopyPersonalID(&contest->player_id, &Common_Get(now_private)->player_ID); - } + contest = &animal->contest_quest; + + if (contest->base.progress == 1) { + if (mFI_Wpos2BlockNum(&block_x, &block_z, snowman_pos) == TRUE && animal->home_info.block_x == block_x && + animal->home_info.block_z == block_z) { + mPr_CopyPersonalID(&contest->player_id, &Common_Get(now_private)->player_ID); + } + } } - } } - extern void mQst_BackSnowman(xyz_t snowman_pos) { - int npc_idx = mQst_GetOccuredContestIdx(mQst_CONTEST_KIND_SNOWMAN); - int block_x; - int block_z; + int npc_idx = mQst_GetOccuredContestIdx(mQst_CONTEST_KIND_SNOWMAN); + int block_x; + int block_z; - if (npc_idx != -1) { - mQst_contest_c* contest; - Animal_c* animal = Save_GetPointer(animals[npc_idx]); - - contest = &animal->contest_quest; + if (npc_idx != -1) { + mQst_contest_c* contest; + Animal_c* animal = Save_GetPointer(animals[npc_idx]); - if (contest->base.progress == 1) { - if (mFI_Wpos2BlockNum(&block_x, &block_z, snowman_pos) == TRUE && animal->home_info.block_x == block_x && animal->home_info.block_z == block_z) { - mPr_ClearPersonalID(&contest->player_id); - } + contest = &animal->contest_quest; + + if (contest->base.progress == 1) { + if (mFI_Wpos2BlockNum(&block_x, &block_z, snowman_pos) == TRUE && animal->home_info.block_x == block_x && + animal->home_info.block_z == block_z) { + mPr_ClearPersonalID(&contest->player_id); + } + } } - } } extern void mQst_PrintQuestInfo(gfxprint_t* gfxprint) { - Private_c* priv = Common_Get(now_private); - mQst_delivery_c* delivery; - mQst_errand_c* errand; - Animal_c* animal = Save_Get(animals); - int i; + Private_c* priv = Common_Get(now_private); + mQst_delivery_c* delivery; + mQst_errand_c* errand; + Animal_c* animal = Save_Get(animals); + int i; - if (priv != NULL) { - delivery = priv->deliveries; - errand = priv->errands; - } - else { - delivery = Save_Get(private[0]).deliveries; - errand = Save_Get(private[0]).errands; - } - - gfxprint_color(gfxprint, 220, 50, 50, 255); - gfxprint_locate8x8(gfxprint, 3, 4); - - for (i = 0; i < mPr_DELIVERY_QUEST_NUM; i++) { - if (i < 5 || i >= 10) { - gfxprint_color(gfxprint, 220, 50, 50, 255); - } - else { - gfxprint_color(gfxprint, 50, 50, 220, 255); + if (priv != NULL) { + delivery = priv->deliveries; + errand = priv->errands; + } else { + delivery = Save_Get(private[0]).deliveries; + errand = Save_Get(private[0]).errands; } - if (delivery[i].base.quest_type == mQst_QUEST_TYPE_DELIVERY) { - gfxprint_printf(gfxprint, "%x", delivery[i].base.quest_kind); - } - else { - gfxprint_printf(gfxprint, "*"); - } - } + gfxprint_color(gfxprint, 220, 50, 50, 255); + gfxprint_locate8x8(gfxprint, 3, 4); - gfxprint_color(gfxprint, 50, 50, 220, 255); + for (i = 0; i < mPr_DELIVERY_QUEST_NUM; i++) { + if (i < 5 || i >= 10) { + gfxprint_color(gfxprint, 220, 50, 50, 255); + } else { + gfxprint_color(gfxprint, 50, 50, 220, 255); + } - for (i = 0; i < mPr_ERRAND_QUEST_NUM; i++) { - if (errand[i].base.quest_type == mQst_QUEST_TYPE_ERRAND) { - gfxprint_printf(gfxprint, "%x", errand[i].base.quest_kind); - } - else { - gfxprint_printf(gfxprint, "*"); - } - } - - for (i = 0; i < ANIMAL_NUM_MAX; i++) { - if (i < 5 || i >= 10) { - gfxprint_color(gfxprint, 220, 50, 50, 255); - } - else { - gfxprint_color(gfxprint, 50, 50, 220, 255); + if (delivery[i].base.quest_type == mQst_QUEST_TYPE_DELIVERY) { + gfxprint_printf(gfxprint, "%x", delivery[i].base.quest_kind); + } else { + gfxprint_printf(gfxprint, "*"); + } } - if (animal[i].contest_quest.base.quest_type == mQst_QUEST_TYPE_CONTEST) { - gfxprint_printf(gfxprint, "%x", animal[i].contest_quest.base.quest_kind); + gfxprint_color(gfxprint, 50, 50, 220, 255); + + for (i = 0; i < mPr_ERRAND_QUEST_NUM; i++) { + if (errand[i].base.quest_type == mQst_QUEST_TYPE_ERRAND) { + gfxprint_printf(gfxprint, "%x", errand[i].base.quest_kind); + } else { + gfxprint_printf(gfxprint, "*"); + } } - else { - gfxprint_printf(gfxprint, "*"); + + for (i = 0; i < ANIMAL_NUM_MAX; i++) { + if (i < 5 || i >= 10) { + gfxprint_color(gfxprint, 220, 50, 50, 255); + } else { + gfxprint_color(gfxprint, 50, 50, 220, 255); + } + + if (animal[i].contest_quest.base.quest_type == mQst_QUEST_TYPE_CONTEST) { + gfxprint_printf(gfxprint, "%x", animal[i].contest_quest.base.quest_kind); + } else { + gfxprint_printf(gfxprint, "*"); + } } - } } From df9b4cf4b14fe66d7ab86bdaa3ae9fc612b28961 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Sun, 30 Jun 2024 22:10:49 -0400 Subject: [PATCH 038/234] Fully match m_island --- src/m_island.c | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/src/m_island.c b/src/m_island.c index 2f70197d..b79d6e9e 100644 --- a/src/m_island.c +++ b/src/m_island.c @@ -749,8 +749,6 @@ static void mISL_toHole(mActor_name_t* fg, u16* deposit, int bx, int bz) { } } -/* @nonmatching */ -#ifndef MUST_MATCH extern void mISL_agb_to_gc(Island_c* gc, Island_agb_c* agb) { int island_x_blocks[mISL_FG_BLOCK_X_NUM]; int i; @@ -762,7 +760,7 @@ extern void mISL_agb_to_gc(Island_c* gc, Island_agb_c* agb) { mISL_agb_to_gc_cottage(&gc->cottage, &agb->cottage); bcopy(&agb->flag_design, &gc->flag_design, sizeof(mNW_original_design_c)); mISL_agb_to_gc_animal(&gc->animal, &agb->animal); - mISL_short((u16*)gc->deposit, (u16*)agb->deposit, sizeof(gc->deposit) / sizeof(u16)); + mISL_short(gc->deposit[0], agb->deposit[0], sizeof(gc->deposit) / sizeof(u16)); bcopy(agb->bg_data, gc->bg_data, sizeof(gc->bg_data)); mISL_gc_to_agb_time(&gc->renew_time, &agb->renew_time); gc->last_song_to_island = agb->last_song_to_island; @@ -773,18 +771,12 @@ extern void mISL_agb_to_gc(Island_c* gc, Island_agb_c* agb) { mFI_GetIslandBlockNumX(island_x_blocks); for (i = 0; i < mISL_FG_BLOCK_X_NUM; i++) { - int idx = i + island_x_blocks[0]; - mActor_name_t* fg_p = &gc->fgblock[0][i].items[0][0]; - u16* deposit_p = (u16*)&gc->deposit[(u16)i]; // the access to deposit is strange, casting to u16 is - // incorrect but it makes all other instructions correct + /* This may be fakematch */ + int x = i + 1; - mISL_toHole(fg_p, deposit_p, idx, mISL_BLOCK_Z); + mISL_toHole((mActor_name_t*)&gc->fgblock[0][i], gc->deposit[--x], (i) + island_x_blocks[0], + mISL_BLOCK_Z); } } } } -#else -extern asm void mISL_agb_to_gc(Island_c* gc, Island_agb_c* agb) { -#include "asm/803b5948.s" -} -#endif From 10bc56ca80d9e043b8d88237a0307aeea65e193e Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Mon, 1 Jul 2024 15:20:02 -0400 Subject: [PATCH 039/234] Implement & link ac_shop_design --- config/rel_slices.yml | 3 + include/m_event.h | 4 +- include/m_name_table.h | 25 +++ src/ac_shop_design.c | 451 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 482 insertions(+), 1 deletion(-) create mode 100644 src/ac_shop_design.c diff --git a/config/rel_slices.yml b/config/rel_slices.yml index c7ac2e83..507e9785 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -521,6 +521,9 @@ ac_set_ovl_insect.c: .rodata: [0x80644E00, 0x80644E28] .data: [0x8068CDE8, 0x8068E3C0] .bss: [0x812FD048, 0x812FD270] +ac_shop_design.c: + .text: [0x8049C748, 0x8049D51C] + .data: [0x8068E3C0, 0x8068E430] ac_t_anrium1.c: .text: [0x804A7750, 0x804A78A4] .data: [0x8068E9C8, 0x8068EA08] diff --git a/include/m_event.h b/include/m_event.h index bdcbe859..026cbf41 100644 --- a/include/m_event.h +++ b/include/m_event.h @@ -399,10 +399,12 @@ typedef union { mEv_dozaemon_c dozaemon; } mEv_weekly_u; +#define mEv_BARGIN_ITEM_NUM 5 + typedef struct bargin_event_s { lbRTC_time_c start_time; lbRTC_time_c end_time; - mActor_name_t items[5]; + mActor_name_t items[mEv_BARGIN_ITEM_NUM]; int kind; } mEv_bargin_c; diff --git a/include/m_name_table.h b/include/m_name_table.h index cd1930e9..c5fd2277 100644 --- a/include/m_name_table.h +++ b/include/m_name_table.h @@ -2795,6 +2795,31 @@ extern int mNT_check_unknown(mActor_name_t item_no); #define RSV_POLICE_ITEM_31 0xF147 #define RSV_POLICE_ITEM_END 0xF148 +#define RSV_SHOP_PAPER 0xFE00 +#define RSV_SHOP_CLOTH 0xFE01 +#define RSV_SHOP_FTR 0xFE02 +#define RSV_SHOP_CARPET 0xFE03 +#define RSV_SHOP_WALL 0xFE04 +#define RSV_SHOP_HALLOWEEN 0xFE05 +#define RSV_SHOP_TOOL 0xFE06 +#define RSV_SHOP_EVENT 0xFE07 +#define RSV_SHOP_PLANT 0xFE08 +#define RSV_SHOP_RARE 0xFE09 +#define RSV_SHOP_UMBRELLA 0xFE0A +#define RSV_SHOP_PAINT 0xFE0B +#define RSV_SHOP_SIGNBOARD 0xFE0C +#define RSV_SHOP_FE0D 0xFE0D +#define RSV_SHOP_SOLD_PAPER 0xFE0E +#define RSV_SHOP_SOLD_CLOTH 0xFE0F +#define RSV_SHOP_SOLD_FTR 0xFE10 +#define RSV_SHOP_SOLD_CARPET 0xFE11 +#define RSV_SHOP_SOLD_WALL 0xFE12 +#define RSV_SHOP_SOLD_PLANT 0xFE13 +#define RSV_SHOP_SOLD_TOOL 0xFE14 +#define RSV_SHOP_SOLD_RARE 0xFE15 +#define RSV_SHOP_SOLD_UMBRELLA 0xFE16 +#define RSV_SHOP_SOLD_PAINT 0xFE17 +#define RSV_SHOP_SOLD_SIGNBOARD 0xFE18 #define RSV_DOOR 0xFE1B #define RSV_FE1C 0xFE1C #define RSV_FE1F 0xFE1F diff --git a/src/ac_shop_design.c b/src/ac_shop_design.c new file mode 100644 index 00000000..5db792a1 --- /dev/null +++ b/src/ac_shop_design.c @@ -0,0 +1,451 @@ +#include "ac_shop_design.h" + +#include "m_common_data.h" +#include "m_name_table.h" + +static void Shop_Design_Actor_ct(ACTOR* actorx, GAME* game); +static void Shop_Design_Actor_dt(ACTOR* actorx, GAME* game); +static void Shop_Design_Actor_move(ACTOR* actorx, GAME* game); +static void Shop_Design_Actor_draw(ACTOR* actorx, GAME* game); + +ACTOR_PROFILE Shop_Design_Profile = { + mAc_PROFILE_SHOP_DESIGN, + ACTOR_PART_CONTROL, + ACTOR_STATE_NO_DRAW_WHILE_CULLED | ACTOR_STATE_NO_MOVE_WHILE_CULLED, + EMPTY_NO, + ACTOR_OBJ_BANK_KEEP, + sizeof(SHOP_DESIGN_ACTOR), + &Shop_Design_Actor_ct, + &Shop_Design_Actor_dt, + &Shop_Design_Actor_move, + &Shop_Design_Actor_draw, + NULL, +}; + +static mActor_name_t aSD_ItemName2ReservePointName(mActor_name_t item) { + int tanuki_shop_status = Common_Get(tanuki_shop_status); + + if (tanuki_shop_status == mSP_TANUKI_SHOP_STATUS_EVENT) { + return RSV_SHOP_EVENT; + } + + if (item == ITM_SIGNBOARD) { + return RSV_SHOP_SIGNBOARD; + } + + if (ITEM_IS_FTR(item)) { + return RSV_SHOP_FTR; + } + + if (item == RSV_SHOP_SOLD_FTR) { + return RSV_SHOP_FTR; + } + + if ((item >= ITM_PAPER_START && item <= ITM_PAPER_END) || (item >= ITM_DIARY00 && item <= ITM_DIARY15)) { + return RSV_SHOP_PAPER; + } + + if (item == RSV_SHOP_SOLD_PAPER) { + return RSV_SHOP_PAPER; + } + + if (item >= ITM_CARPET_START && item <= (ITM_CARPET_END - 4)) { + return RSV_SHOP_CARPET; + } + + if (item == RSV_SHOP_SOLD_CARPET) { + return RSV_SHOP_CARPET; + } + + if (item >= ITM_WALL_START && item <= (ITM_WALL_END - 4)) { + return RSV_SHOP_WALL; + } + + if (item == RSV_SHOP_SOLD_WALL) { + return RSV_SHOP_WALL; + } + + if (item >= ITM_CLOTH_START && item <= ITM_CLOTH_END) { + return RSV_SHOP_CLOTH; + } + + if (item == RSV_SHOP_SOLD_CLOTH) { + return RSV_SHOP_CLOTH; + } + + if (item >= ITM_TOOL_START && item <= ITM_TOOL_END) { + if (item >= ITM_UMBRELLA_START && item <= (ITM_UMBRELLA_END - 1)) { + return RSV_SHOP_UMBRELLA; + } + + if (item >= ITM_RED_PAINT && item <= ITM_BROWN_PAINT) { + return RSV_SHOP_PAINT; + } + + /* @BUG - this is impossible to reach, maybe signboard used to be in the TOOL category before? */ + if (item == ITM_SIGNBOARD) { + return RSV_SHOP_SIGNBOARD; + } + + return RSV_SHOP_TOOL; + } + + if (item == RSV_SHOP_SOLD_TOOL) { + return RSV_SHOP_TOOL; + } + + if (item == RSV_SHOP_SOLD_UMBRELLA) { + return RSV_SHOP_UMBRELLA; + } + + if (item == RSV_SHOP_SOLD_PAINT) { + return RSV_SHOP_PAINT; + } + + if (item == RSV_SHOP_SOLD_SIGNBOARD) { + return RSV_SHOP_SIGNBOARD; + } + + if ((item >= ITM_SAPLING && item <= ITM_CEDAR_SAPLING) || + ((item >= ITM_WHITE_PANSY_BAG && item <= ITM_YELLOW_TULIP_BAG && + tanuki_shop_status == mSP_TANUKI_SHOP_STATUS_HALLOWEEN))) { + return RSV_SHOP_HALLOWEEN; + } + + if ((item >= ITM_WHITE_PANSY_BAG && item <= ITM_YELLOW_TULIP_BAG) || item == ITM_FOOD_CANDY) { + return RSV_SHOP_PLANT; + } + + return EMPTY_NO; +} + +static void aSD_MakeHukubukuroFg(void) { + static mActor_name_t reserve_table[] = { + RSV_SHOP_TOOL, RSV_SHOP_SIGNBOARD, RSV_SHOP_PAINT, RSV_SHOP_PAPER, RSV_SHOP_HALLOWEEN, RSV_SHOP_PLANT, + }; + int n = Save_Get(shop).flowers_candy_grab_bag_count; + int i; + + /* Search all reserve items */ + for (i = 0; i < ARRAY_COUNT(reserve_table); i++) { + /* Replace all reserve items of this type to grab bags */ + while (n > 0 && mSP_SetGoods2ReservedPoint(ITM_HUKUBUKURO_BAG, reserve_table[i]) != FALSE) { + n--; + } + } + + /* Search all reserve items */ + for (i = 0; i < ARRAY_COUNT(reserve_table); i++) { + /* Replace any left with reserve RSV_SHOP_SOLD_PLANT */ + while (mSP_SetGoods2ReservedPoint(RSV_SHOP_SOLD_PLANT, reserve_table[i]) != FALSE) {} + } +} + +static void aSD_MakePlantFg_normal(void) { + while (mSP_SetGoods2ReservedPoint(RSV_SHOP_SOLD_PLANT, RSV_SHOP_HALLOWEEN) != FALSE) {} + while (mSP_SetGoods2ReservedPoint(RSV_SHOP_SOLD_PLANT, RSV_SHOP_PLANT) != FALSE) {} +} + +static void aSD_MakePlantFg_hal(void) { + int n = Save_Get(shop).flowers_candy_grab_bag_count; + + /* Fill plant spots with candy */ + while (n > 0 && mSP_SetGoods2ReservedPoint(ITM_FOOD_CANDY, RSV_SHOP_PLANT) != FALSE) { + n--; + } + + /* Clear the remaining plant reserve spots */ + while (mSP_SetGoods2ReservedPoint(RSV_SHOP_SOLD_PLANT, RSV_SHOP_PLANT) != FALSE) {} +} + +static void aSD_MakePlantFg(void) { + if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_HALLOWEEN) { + aSD_MakePlantFg_hal(); + } else { + aSD_MakePlantFg_normal(); + } +} + +static void aSD_MakeGoodsFg(mActor_name_t* goods_p, int count) { + int i; + + for (i = 0; i < count; i++) { + if (goods_p[i] != EMPTY_NO) { + mActor_name_t reserve_name = aSD_ItemName2ReservePointName(goods_p[i]); + + if (reserve_name != EMPTY_NO) { + mSP_SetGoods2ReservedPoint(goods_p[i], reserve_name); + } + } + } +} + +/* Mispelling of 'rare' */ +static void aSD_MakeReaGoodsFg(mActor_name_t item) { + if (item != EMPTY_NO) { + mSP_SetGoods2ReservedPoint(item, RSV_SHOP_RARE); + } +} + +static void aSD_MakeLotteryGoodsFg(mActor_name_t* lottery_items) { + mSP_SetGoods2ReservedPoint(lottery_items[2], RSV_SHOP_FTR); + mSP_SetGoods2ReservedPoint(lottery_items[0], RSV_SHOP_FTR); + mSP_SetGoods2ReservedPoint(lottery_items[1], RSV_SHOP_FTR); +} + +static mActor_name_t aSD_UnitNum2ItemNo(int ux, int uz); +static int aSD_ReportGoodsSales(int ux, int uz); + +static void aSD_SetClipProc(ACTOR* actorx, int clear) { + SHOP_DESIGN_ACTOR* shop_design = (SHOP_DESIGN_ACTOR*)actorx; + + if (clear) { + Common_Get(clip).shop_design_clip = NULL; + } else { + Common_Get(clip).shop_design_clip = &shop_design->clip; + shop_design->clip.design_actor = shop_design; + shop_design->clip.unitNum2ItemNo_proc = &aSD_UnitNum2ItemNo; + shop_design->clip.reportGoodsSale_proc = &aSD_ReportGoodsSales; + } +} + +static void aSD_GetGoodsInfo(SHOP_DESIGN_ACTOR* shop_design) { + if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_EVENT) { + int count = 0; + int i; + + shop_design->goods_list = Save_Get(event_save_data).special.event.bargin.items; + shop_design->goods_list_max = mEv_BARGIN_ITEM_NUM; + for (i = 0; i < mEv_BARGIN_ITEM_NUM; i++) { + if (shop_design->goods_list[i] != EMPTY_NO) { + count++; + } + } + shop_design->goods_list_count = count; + } else { + shop_design->goods_list = Save_Get(shop).items; + shop_design->goods_list_count = mSP_CountElementInGoodsList(); + shop_design->goods_list_max = mSP_GOODS_COUNT; + } + + /* Check if player is from a different town and, if so, set the flag for Nookington's */ + mSP_SetNewVisitor(); +} + +static void aSD_SetReservedPointFill000(void) { + mActor_name_t* fg_p = mFI_BkNumtoUtFGTop(0, 0); + int i; + + for (i = 0; i < UT_TOTAL_NUM; i++) { + if (fg_p[i] >= RSV_SHOP_PAPER && fg_p[i] <= RSV_SHOP_SIGNBOARD) { + fg_p[i] = RSV_NO; // TODO: I suppose RSV_NO is actually called 'FILL000' + } + } +} + +static void Shop_Design_Actor_ct(ACTOR* actorx, GAME* game) { + SHOP_DESIGN_ACTOR* shop_design = (SHOP_DESIGN_ACTOR*)actorx; + GAME_PLAY* play = (GAME_PLAY*)game; + int scene_no = Save_Get(scene_no); + + actorx->actor_specific = -1; // no valid shop type + if (scene_no == SCENE_SHOP0) { + actorx->actor_specific = 0; + } else if (scene_no == SCENE_CONVENI) { + actorx->actor_specific = 1; + } else if (scene_no == SCENE_SUPER) { + actorx->actor_specific = 2; + } else if (scene_no == SCENE_DEPART) { + actorx->actor_specific = 3; + } + + /* Check if the shop is currently having the monthly lottery raffle */ + if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_FUKUBIKI && actorx->actor_specific != -1) { + /* garagara likely referes to ガラガラ抽選 or 'raffle drum/rattle lottery' */ + static xyz_t garagara_set_table[] = { + { 160.0f, 60.0f, 190.0f }, /* Nook's Cranny */ + { 240.0f, 60.0f, 190.0f }, /* Nook 'n' Go */ + { 240.0f, 60.0f, 350.0f }, /* Nookway */ + { 240.0f, 60.0f, 350.0f }, /* Nookington's */ + { 160.0f, 60.0f, 180.0f }, /* Nookington's 2nd floor? */ + }; + + /* Make the raffle drum actor */ + Actor_info_make_actor(&play->actor_info, game, mAc_PROFILE_GARAGARA, + garagara_set_table[actorx->actor_specific].x, + garagara_set_table[actorx->actor_specific].y, + garagara_set_table[actorx->actor_specific].z, 0, 0, 0, -1, -1, -1, EMPTY_NO, 0, -1, -1); + } + + if (scene_no == SCENE_SHOP0 || scene_no == SCENE_CONVENI || scene_no == SCENE_SUPER || scene_no == SCENE_DEPART || + scene_no == SCENE_DEPART_2) { + aSD_GetGoodsInfo(shop_design); + if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_FUKUBIKI) { + aSD_MakeLotteryGoodsFg(Save_Get(shop).lottery_items); + } else { + aSD_MakeGoodsFg(shop_design->goods_list, shop_design->goods_list_count); + if (Common_Get(tanuki_shop_status) != mSP_TANUKI_SHOP_STATUS_EVENT) { + aSD_MakeReaGoodsFg(Save_Get(shop).rare_item); + if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_HUKUBUKURO_SALE) { + aSD_MakeHukubukuroFg(); + } else { + aSD_MakePlantFg(); + } + } + } + + aSD_SetReservedPointFill000(); + aSD_SetClipProc(actorx, FALSE); + } +} + +static void Shop_Design_Actor_dt(ACTOR* actorx, GAME* game) { + aSD_SetClipProc(actorx, TRUE); +} + +static void Shop_Design_Actor_draw(ACTOR* actorx, GAME* game) { + // nothing +} + +static void Shop_Design_Actor_move(ACTOR* actorx, GAME* game) { + // nothing +} + +static mActor_name_t aSD_UnitNum2ItemNo(int ux, int uz) { + int bx = ux / UT_X_NUM; + int bz = uz / UT_Z_NUM; + mActor_name_t* fg_p = mFI_BkNumtoUtFGTop(bx, bz); + int local_ux = ux - bx * UT_X_NUM; + int local_uz = uz - bz * UT_Z_NUM; + mActor_name_t item = fg_p[local_ux + local_uz * UT_X_NUM]; + + if ((item >= RSV_SHOP_FE0D && item <= RSV_SHOP_SOLD_SIGNBOARD)) { + return RSV_NO; + } + + if ( + // clang-format off + ITEM_IS_FTR(item) || + (item >= ITM_PAPER_START && item <= ITM_PAPER_END) || + (item >= ITM_CARPET_START && item <= ITM_CARPET_END - 4) || + (item >= ITM_WALL_START && item <= ITM_WALL_END - 4) || + (item >= ITM_CLOTH_START && item <= ITM_CLOTH_END) || + (item >= ITM_TOOL_START && item <= ITM_TOOL_END) || + (item >= ITM_SAPLING && item <= ITM_CEDAR_SAPLING) || + (item >= ITM_WHITE_PANSY_BAG && item <= ITM_YELLOW_TULIP_BAG) || + (item >= ITM_DIARY00 && item <= ITM_DIARY15) || + (item == ITM_FOOD_CANDY) || + (item == RSV_FE1F) || + (item == ITM_HUKUBUKURO_BAG) || + (item == ITM_SIGNBOARD) + // clang-format on + ) { + if (item == RSV_FE1F) { + if (Common_Get(clip).my_room_clip != NULL) { + mActor_name_t ftr_item; + + Common_Get(clip).my_room_clip->unitNum2ftrItemNoftrId_proc(&ftr_item, NULL, ux, uz, mCoBG_LAYER0); + return ftr_item; + } else { + return RSV_NO; + } + } else { + return item; + } + } else { + return RSV_NO; + } +} + +static int aSD_ReportGoodsSales(int ux, int uz) { + mActor_name_t item = aSD_UnitNum2ItemNo(ux, uz); + u32 price = mSP_ItemNo2ItemPrice(item); + mActor_name_t rsv_item = EMPTY_NO; + + if (Common_Get(clip).shop_design_clip != NULL) { + SHOP_DESIGN_ACTOR* shop_design = Common_Get(clip).shop_design_clip->design_actor; + + mSP_PlusSales(price); + if (item == ITM_HUKUBUKURO_BAG) { + mSP_ShopSaleReport(item, shop_design->goods_list, shop_design->goods_list_max, RSV_SHOP_SOLD_PLANT); + mFI_UtNumtoFGSet_common(RSV_SHOP_SOLD_PLANT, ux, uz, FALSE); + return FALSE; + } else if ((item >= ITM_SAPLING && item <= ITM_CEDAR_SAPLING) || + (item >= ITM_WHITE_PANSY_BAG && item <= ITM_YELLOW_TULIP_BAG) || item == ITM_FOOD_CANDY) { + if (mSP_ShopSaleReport(item, shop_design->goods_list, shop_design->goods_list_max, RSV_SHOP_SOLD_PLANT)) { + return TRUE; + } else { + mFI_UtNumtoFGSet_common(RSV_SHOP_SOLD_PLANT, ux, uz, FALSE); + return FALSE; + } + } else if (item >= ITM_CLOTH_START && item <= ITM_CLOTH_END) { + mSP_ShopSaleReport(item, shop_design->goods_list, shop_design->goods_list_max, RSV_SHOP_SOLD_CLOTH); + Common_Get(clip).shop_manekin_clip->change2naked_manekin_proc(ux, uz); + mFI_UtNumtoFGSet_common(RSV_NO, ux, uz, FALSE); + return FALSE; + } else if (ITEM_IS_FTR(item) && Common_Get(clip).my_room_clip != NULL) { + mActor_name_t ftr_item; + int ftrID; + + Common_Get(clip).my_room_clip->unitNum2ftrItemNoftrId_proc(&ftr_item, &ftrID, ux, uz, mCoBG_LAYER0); + Common_Get(clip).my_room_clip->ftrId2extinguishFtr_proc(ftrID); + if (item == Save_Get(shop).rare_item) { + rsv_item = RSV_SHOP_SOLD_RARE; + } else { + rsv_item = RSV_SHOP_SOLD_FTR; + } + } + + if (item >= ITM_CARPET_START && item <= (ITM_CARPET_END - 4)) { + rsv_item = RSV_SHOP_SOLD_CARPET; + } + + if (item >= ITM_WALL_START && item <= (ITM_WALL_END - 4)) { + rsv_item = RSV_SHOP_SOLD_WALL; + } + + if (item == ITM_SIGNBOARD) { + rsv_item = RSV_SHOP_SOLD_SIGNBOARD; + } + + if (item >= ITM_TOOL_START && item <= ITM_TOOL_END) { + if (item >= ITM_UMBRELLA_START && item <= (ITM_UMBRELLA_END - 1)) { + if (Common_Get(clip).shop_umbrella_clip != NULL) { + Common_Get(clip).shop_umbrella_clip->delete_umbrella_proc(ux, uz); + } + + rsv_item = RSV_SHOP_SOLD_UMBRELLA; + } else if (item >= ITM_RED_PAINT && item <= ITM_BROWN_PAINT) { + rsv_item = RSV_SHOP_SOLD_PAINT; + } else if (item == ITM_SIGNBOARD) { + rsv_item = RSV_SHOP_SOLD_SIGNBOARD; + } else { + rsv_item = RSV_SHOP_SOLD_TOOL; + } + } + + if (item >= ITM_PAPER_START && item <= ITM_PAPER_END) { + return TRUE; + } + + if (item >= ITM_DIARY00 && item <= ITM_DIARY15) { + rsv_item = RSV_SHOP_SOLD_PAPER; + } + + if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_EVENT && mEv_CheckEvent(mEv_SPNPC_SHOP) == FALSE) { + return FALSE; + } + + if (rsv_item != EMPTY_NO) { + if (mSP_ShopSaleReport(item, shop_design->goods_list, shop_design->goods_list_max, rsv_item)) { + return TRUE; + } + + mFI_UtNumtoFGSet_common(rsv_item, ux, uz, FALSE); + } + + return FALSE; + } else { + return FALSE; + } +} From c8af224c66aebf59ec408b9daa50e0b10b7fe273 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Mon, 1 Jul 2024 18:10:34 -0400 Subject: [PATCH 040/234] Replace yaz0 with orthrus, automatically [de]compress. --- .gitignore | 1 + README.MD | 44 ++++++++++++++++++++------------------------ common.py | 5 +++++ configure.py | 10 ++++++++++ tools/orthrus | Bin 0 -> 770232 bytes tools/orthrus.exe | Bin 0 -> 570368 bytes tools/yaz0 | Bin 42784 -> 0 bytes tools/yaz0.exe | Bin 527980 -> 0 bytes 8 files changed, 36 insertions(+), 24 deletions(-) create mode 100755 tools/orthrus create mode 100644 tools/orthrus.exe delete mode 100755 tools/yaz0 delete mode 100644 tools/yaz0.exe diff --git a/.gitignore b/.gitignore index eac6f531..1b91f113 100644 --- a/.gitignore +++ b/.gitignore @@ -13,6 +13,7 @@ dump/* *.arc *.ctx ctx.* +!tools/orthrus.exe build.ninja ac-decomp.code-workspace assets/ diff --git a/README.MD b/README.MD index 196b7c63..0e8f649d 100644 --- a/README.MD +++ b/README.MD @@ -17,41 +17,37 @@ Use `--recursive` when cloning to have ppcdis in the repository. ### Docker -1. [Dump a copy of the game](./docs/extract_game.md) and extract **main.dol** and **foresta.rel.szs**. -2. Decompress **foresta.rel.szs** with yaz0 found in *tools/* (`yaz0 -d foresta.rel.szs foresta.rel`). -3. Place **main.dol** and **foresta.rel** in *dump/*. -4. Place **forest_1st.arc** and **forest_2nd.arc** in *dump/*. -5. Download the [CodeWarrior 1.3.2 and 1.2.5n compilers](https://files.decomp.dev/compilers_20230715.zip) and extract them to *tools/1.3.2/* and *tools/1.2.5n/*, respectively. -6. Download the [CodeWarrior 1.3.2r compiler](https://mega.nz/file/WuBFTCLT#TmB5R4-1mEFkk4G1Vjn9_cHXRD9wOIH9CtOLaVSWEas) and extract it to *tools/1.3.2r/*. -7. Install Docker. -8. Build the Docker image (`docker build -t ac-decomp .`). -9. Run configure.py (`docker run --rm -v ${PWD}:/ac-decomp ac-decomp python3 configure.py`). -10. Run build.py (`docker run --rm -v ${PWD}:/ac-decomp ac-decomp python3 build.py`). +1. [Dump a copy of the game](./docs/extract_game.md) and extract all files. +2. Place **main.dol**, **foresta.rel.szs**, **forest_1st.arc**, and **forest_2nd.arc** in *dump/*. +3. Download the [CodeWarrior 1.3.2 and 1.2.5n compilers](https://files.decomp.dev/compilers_20230715.zip) and extract them to *tools/1.3.2/* and *tools/1.2.5n/*, respectively. +4. Download the [CodeWarrior 1.3.2r compiler](https://mega.nz/file/WuBFTCLT#TmB5R4-1mEFkk4G1Vjn9_cHXRD9wOIH9CtOLaVSWEas) and extract it to *tools/1.3.2r/*. +5. Install Docker. +6. Build the Docker image (`docker build -t ac-decomp .`). +7. Run configure.py (`docker run --rm -v ${PWD}:/ac-decomp ac-decomp python3 configure.py`). +8. Run build.py (`docker run --rm -v ${PWD}:/ac-decomp ac-decomp python3 build.py`). ### Build manually > ℹ️ When building manually from a work directory originally used for Docker, you will need to run `sudo ninja -t clean` for the build to execute properly. -1. [Dump a copy of the game](./docs/extract_game.md) and extract **main.dol** and **foresta.rel.szs**. -2. Decompress **foresta.rel.szs** with yaz0 found in *tools/* (`yaz0 -d foresta.rel.szs foresta.rel`). -3. Place **main.dol** and **foresta.rel** in *dump/*. -4. Place **forest_1st.arc** and **forest_2nd.arc** in *dump/*. -5. Download the [CodeWarrior 1.3.2 and 1.2.5n compilers](https://files.decomp.dev/compilers_20230715.zip) and extract them to *tools/1.3.2/* and *tools/1.2.5n/*, respectively. -6. Download the [CodeWarrior 1.3.2r compiler](https://mega.nz/file/WuBFTCLT#TmB5R4-1mEFkk4G1Vjn9_cHXRD9wOIH9CtOLaVSWEas) and extract it to *tools/1.3.2r/*. -7. Install Python, pip, and [ninja](https://github.com/ninja-build/ninja/wiki/Pre-built-Ninja-packages#package-managers) using your package manager of choice. -8. Install Python modules from requirements.txt (`pip install -r requirements.txt`). -9. Install [wibo](https://github.com/decompals/wibo) +1. [Dump a copy of the game](./docs/extract_game.md) and extract all files. +2. Place **main.dol**, **foresta.rel.szs**, **forest_1st.arc**, and **forest_2nd.arc** in *dump/*. +3. Download the [CodeWarrior 1.3.2 and 1.2.5n compilers](https://files.decomp.dev/compilers_20230715.zip) and extract them to *tools/1.3.2/* and *tools/1.2.5n/*, respectively. +4. Download the [CodeWarrior 1.3.2r compiler](https://mega.nz/file/WuBFTCLT#TmB5R4-1mEFkk4G1Vjn9_cHXRD9wOIH9CtOLaVSWEas) and extract it to *tools/1.3.2r/*. +5. Install Python, pip, and [ninja](https://github.com/ninja-build/ninja/wiki/Pre-built-Ninja-packages#package-managers) using your package manager of choice. +6. Install Python modules from requirements.txt (`pip install -r requirements.txt`). +7. Install [wibo](https://github.com/decompals/wibo) - Wibo is a lightweight Wine replacement that's tailor-made for use with decomp projects. Regular Wine can be used if preferred, but for the purposes of this guide, these instructions will use wibo. - Download [the latest GitHub release](https://github.com/decompals/wibo/releases/latest) and run `install ./wibo /usr/bin` to install it to your system. -10. Install devkitPPC. +8. Install devkitPPC. - To get devkitPPC, you'll need [devkitPro Pacman](https://devkitpro.org/wiki/devkitPro_pacman#Installing_devkitPro_Pacman). - Run `dkp-pacman -S devkitPPC` once dkp-pacman is installed to install devkitPPC. - Set the `DEVKITPPC` environment variable to */opt/devkitpro/devkitPPC*. -11. Set the `N64_SDK` environment variable to the path of your libultra or equivalent headers. If you need headers, you can use the ones from [ultralib](https://github.com/decompals/ultralib). +9. Set the `N64_SDK` environment variable to the path of your libultra or equivalent headers. If you need headers, you can use the ones from [ultralib](https://github.com/decompals/ultralib). - Headers should be located at `$N64_SDK/ultra/usr/include`. - - You may need to modify `Gpopmtx`'s `param` member to be `unsigned int` in **gbi.h**. -12. Run `python3 configure.py`. -13. Run `python3 build.py`. + - You must modify `Gpopmtx`'s `param` member to be `unsigned int` in **gbi.h**. +10. Run `python3 configure.py`. +11. Run `python3 build.py`. ## Quick Guides - [Dumping Game Files](./docs/extract_game.md) diff --git a/common.py b/common.py index 1cb8c978..bdd6122f 100644 --- a/common.py +++ b/common.py @@ -209,6 +209,7 @@ FORCEFILESGEN = f"{PYTHON} {PPCDIS}/forcefilesgen.py" TOOLS = "tools" CODEWARRIOR = os.path.join(TOOLS, "1.3.2") CODEWARRIOR_RODATA_POOL_FIX = os.path.join(TOOLS, "1.3.2r") +ORTHRUS = os.path.join(TOOLS, "orthrus") SDK_CW = os.path.join(TOOLS, "1.2.5n") CC = os.path.join(CODEWARRIOR, "mwcceppc.exe") CC_R = os.path.join(CODEWARRIOR_RODATA_POOL_FIX, "mwcceppc.exe") @@ -219,6 +220,8 @@ if platform != "win32": CC_R = f"wibo {CC_R}" OCC = f"wibo {OCC}" LD = f"wibo {LD}" +else: + ORTHRUS = os.path.join(TOOLS, "orthrus.exe") # DevkitPPC DEVKITPPC = os.environ.get("DEVKITPPC") @@ -255,6 +258,7 @@ REL_DISASM_OVERRIDES = f"{CONFIG}/rel_disasm_overrides.yml" # Binaries DOL = f"{ORIG}/static.dol" # read in python code REL = f"{ORIG}/foresta.rel" # read in python code +REL_SZS = f"{ORIG}/foresta.rel.szs" DOL_YML = f"{CONFIG}/dol.yml" REL_YML = f"{CONFIG}/rel.yml" DOL_SHA = f"{ORIG}/static.dol.sha1" @@ -288,6 +292,7 @@ DOL_ELF = f"{BUILDDIR}/static.elf" REL_PLF = f"{BUILDDIR}/foresta.plf" DOL_OUT = f"{OUTDIR}/static.dol" REL_OUT = f"{OUTDIR}/foresta.rel" +REL_SZS_OUT = f"{OUTDIR}/foresta.rel.szs" DOL_MAP = f"{OUTDIR}/static.map" REL_MAP = f"{OUTDIR}/foresta.map" diff --git a/configure.py b/configure.py index 7735de22..42841acd 100644 --- a/configure.py +++ b/configure.py @@ -11,6 +11,7 @@ import pickle import re from io import StringIO +import subprocess from sys import executable as PYTHON, platform from typing import List, Tuple from ninja_syntax import Writer @@ -30,6 +31,10 @@ assert os.path.exists("tools/1.3.2/mwcceppc.exe") and \ os.path.exists("tools/1.2.5n/mwcceppc.exe"), \ "Error: Codewarrior not found!" +# Check if foresta.rel.szs exists but not foresta.rel, and if so, decompress +if not os.path.exists(c.REL) and os.path.exists(c.REL_SZS): + subprocess.call([f'./{c.ORTHRUS}', 'ncompress', 'yaz0', '-d', c.REL_SZS, c.REL]) + # Check binaries were added assert os.path.exists(c.DOL) and os.path.exists(c.REL), \ "Error: Base binaries not found!" @@ -905,6 +910,11 @@ n.build( inputs = c.REL_SHA, implicit = [c.REL_OUT] ) + +# Compress foresta.rel +if os.path.exists(c.REL_OUT): + subprocess.call([f'./{c.ORTHRUS}', 'ncompress', 'yaz0', '-c', c.REL_OUT, c.REL_SZS_OUT]) + n.default(c.REL_OK) # Optional full binary disassembly diff --git a/tools/orthrus b/tools/orthrus new file mode 100755 index 0000000000000000000000000000000000000000..8c559c2521889140d980961c30191889272a4a0b GIT binary patch literal 770232 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 (IPgKQ7 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⁢I(4F=@Y49I`-2t$SMATKzcJ#@M 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 zird=N UOCEdkMH(nYI}Y|bIQLE-xrpt7xEi7 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

os<#qvdZQ_!MbF|vP^n;QF=^=Nw%&9qDDZLw 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ë#RN=u<3}dKPvEI?6kZB%?rs*!; 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%0DtI1 zxX$be8tP5vi0otGI=^iy2Ch@Y4fG;#odVKi;5tP>0)qf%iEy0+go)-C#b=8|kXcXc zwjf8~72rC*h~?W5!*wD;rTC)}x{LSB0LOK1q*{RMd<5lNs1nRB4cGbCi83Bvb6n?k z00RB+I{e+F>xknz7coDr$8nvc_f(fLOp2&GUYkc7$L08WkFqag-vLwBhGz5pk~oP$ zMV!^=1SIV4!uuMk1~k=%FHk$rE;<;_7i^=I+xPsh+{)bY^6KJqTD6BIYw?pqQ zt?IL;+(}lMKsP?Bo3g- zSuEgA#}7;RTiA?0MY^sM<^Tbg)i`vq+ViF^jWk3MOZqdv zGz_uaEAeI&Ci?F=G1|{ST_h=@E@p>DPM#P<{O5{)hlTUQ(@;AlsZK)}2LNdELpl(Z zrXh@^si*;Aq;L!Es8`}k2g_X&HX<$pxxI+D;Wm+ik|u;vhGGy#*kTYy#AZ?j`0+Ann?&F1bGhweU@jB2GzTuC>q_P##$5e}M#Sb5fP)BQ#E6UNx?L`!t0zJ0z(v%yL@uJ1ub7K?B}Edr zh`QJnaS>g6w0dX-NnAwjPv;_PkH8eEsx(y&TtsbJgNvw*(Xxr7HJOX3?Q3umwUIY? zO?v7F-ebe5w)v67g76?xQJR6t<2&gx*~>}yIe%qVsQ~&F^P+)J$1N<+Qb`CoQtRp zDO^NtSc8kGjY(WYOHJY;YJ&p8=tBZr#JG&ZCW(t!&uDTH>-kJBVm+Uv1PU%-kJBVm+UnvEU-sGn!n)dOnkjsC{d35tE#fOQ@NH;3C%b zMYuU|5$hWbE@F~VoB-tf6&EqdNM}WQ>qIXjxQI!{2$ExR5z~y(4Mo*pX@QHF>enbW zeS!uTG1VW@+7v(zT*Op!RJk&Pi$;YpFq9vGI#8fLzUlA8E)g&5A)KI}iOtqRT4K8A;FOiFw>Q3e&CfToq zi@0Vvy_0pz1Q&75a#1@{jSgJIH48;EQ-#1qT(gkPMO@o%aS_+FN9!RPIk<>x7KzqE z6ag1;%_3LCMSS+P7-t`F5wER%8$U66 z?@jyJj$qSfkJ zc8LX>g;3A}jexy`X)>xO1pWH1)hn?SS60K%Zi zHlb`|4aw^fY~K*jdMC*&IIv+Wtz)j#i=O0qh`@>CcO6GpCR+!dAm2Cj%)^6yqbJ5r z92sZpz!M}pp2?j={>r9~${?ov@Qs*XR}}*W@OXwci?=oSI-Z5(vk%I_3_@I{P0ze* zy6C|`K8yT+2k8Nx5NpWY>s`B1NMR&ZFU?ganRoqlwBz&H12U6kSCxd9GH<68Mk0Y0 zV|5u1jl3Jy@56%Sv(LO!BymN8+Dp?^+Y7hR66dq0WFaA-wu4eQErrf%-{^RCc$|4h zo9Ia#W;=a(Ual!p%i4K+^brY5b`~BsTe_+dFTWY0F#x2cLvxm24G^E}VT_l#^5I|~n#`9JT`(pC%uID zjd{LiQ>HSM=pNQ70|)R#offYq4$c;kCX9U+$v`s`aPvb} zsP-S=%lGhM8*h}`jBnH(zlqIGAFrz*hekcn@w^X>x->t97Y-MupVRoE(t13{L?%ahMP71pXVTwvLNde80pY*B3 z6rI4ErBILpdj|Q2bF9?)yf<0E+LoSEb3H8&zyB={>^IUL4s+8BtMtBx+Sgec3y=u| zo*z0PNp#qt6^wgJNhJIqw!@=gB$+~v&sZ*QP7ahfHgR--WnSO@25Jc5r?BjPwRUN$ zw#Y}!?8v;e@jKKoRw&hH=50uc2uCoFSD#tt?M0Hp0K+!-u*^G}sBnR%_Oi_5e5w*G z)mAP{&auop`E)O4L0QN{%9=ehd7fn+%C=CI`Re(}m9sPsA=BZNDdKKy@6q2tgK1n8 z%Z3)XiKY+ZBzqe^>-h3{%>`PbpGV+l@M-$E++k0{c^RK(Z`9k%TK-OkKf^AYY+`m@%m)*I4?fMkv&=CF{{`U`2H_&MsD^|l8UFPNe z(~bdSbN_~~>0QtNnu>d*vm6S${G3+z8CpG2&E(=@RkWnA;Tfz^KKpj(TJ(z3v_~&L z|LeK9Tw9%9*tt~0kf`Uhnu~I$t>T7{{%zYxd$l?-Sr*OUr?Jhl$iDtK?5xqu zzMe()^*_WZASa?oT)%?hY>O<5?CTT{DUQ)?)3`!pk$wGZh&54ccA908eLaVoxAC$l zIJ2;HnPriEy#vu>7+hJMnwvd`g2=v3vktv==kKphtuEngd5L9_eVw9Bo*0ISA7v|Z z)uq~*sfAUnbQamye+P3bC>iJ!Lq+y=QY%V5zc6p8$i7Z$uT)tU+1IbbLhbO@@vP5# z4DU0-yIV;ti|p%rU_Rijlfx6U$i99vA_pnLhZbg$ef@S?ON#LH&RGlyrpO4*v$`^S z9@}vh7lbUbug@ZW%8T}+8W5btfZ#V_{{-PL;BS-Ik5ZI7v002Tq}^JTp+Xkf*Z&y> z8rA5+EV8eEnD5%CW@KNdJ&(M}YK-EFES^R7^$$X7UYVR3>Z@YJpPxnc^?R|o8ZQoE z9OLTb40ai^uTyJ8jE^9t9gFPi6v|L&y2k0HS!7@5jh6YMt}L>zH=?SR-Yl}Oe~c;> zYrwL|zE0DqQALn_oqhm>qJ3gOFyG&e7j+vz_I19Ov5DxI4Z@39fFPu1lgkCx!P833 zwLmG)=~JX*xPeUZTNu8s)I_DJa25r&>FK7qsfGCqm<`2(kk&5t!1RruTXF#fdjgR#RN6`bpD{0g*A zH7Yna&`xW^I_0R~+>tzAcW#iQf^$ck7f>c-1*-P%@hP#gIVw1J=O(JujEPafxw~4Z zHdElEf^$PM?u-h~4a>M16`VWH1C=l%Mg=!iHqzo|4&OUIz#3lHMH?o=2L(4g*v;FH z7$V&85clPBxifPMll0nzDDiOdUHB0mgf;xl49ValJcvm?in!tDiWA)P8T{=ELfY$P zdoZzo-G*;+3mwEtlY@!$OzcQCR4*#aF=xD?6@4{yS`OoO-{(d9<$%<9PaC=2%Nq5~;2Hh3R;I$7|BtG9)? z!xp;UdQ_i;+TJtzG#5m=AN2fSa#5m=A zr#LThbsx)@_@vJ#_p^MtNJVkTPz&wBSAHr8ScVUQ&R4RZ#Ecq9$lz5$mOs@(-y0}> zd4|7T%<`v2=rDyuzW4l$2u&cAi+)$-?B6W~ItM-i2cIMDBXeAHA7g!_mz5fkL2jMsPUz$_o5c%F4k?%cdBug{@OQ&CD zQTg5*k?)lo_s^njXo&_e zHzMD=8I|Lj8TQgQ{f>xiYvfd_@OQ=J4(6vW zboi;Z;D@x0#dz#Pr=0QF;Y>%v^|WtN#%qTdudVgu@!H|6^u)$%hcA%|9)Bc^*ACB_ zmGe=23FEax2Mz+9C4T$6Tr7wL^^8cHQQ9?GSnF zT|HqiZHV#O+7=tH9bPi!D;lpIUcRy-&Uoz*dF=IqtT|pgL>_zB9<3f)fjeG1L>_zX zPadxwzRdK9;Zv%rXuNia@!GngI^(s&mz&0D*?8+n$YUQOkG-z9&Uoz*dF-{3H~469 zYKZaLj+W3GF<#p-@k5Zt?9kf>ymYQymp8@_Ig3m$7_cVnLc;CcK9=?5P9tN#z+{i9lpsl z)ETcGB9FbU$sMm9{;Z?ApBk?nzOBA58m}E9kA1x*RO7Wnl@X0?GSnF*Pb!nS$wzYt2bUdL>_xxqjq9|o0Z2t#CYwxJ~a$B#CYxcMmb(P zd~dQ*oB-tfX}os$%gIJMD~chwa)@Y%@!CnVjt1|j@!BEs*ryqj#%qV~tK-*0JoO10 zNwNtH8y?k71i1FH~R&vPk+9Aekr~0h%+9C4T zui@n5wZji5`}h@4v;;L?J47D)q$;@;r!PKUJN#%JlV~haL&bRQ)cVYo#(3>iUu?W~ zh&=YG?)Z4^5P9sA>}!qJ4w1)x&2oAt>z0Y}+H01J+L3B>7_Yr%p=f5R5XNh-SxAr9 z4w1)xZF@9cJ47D)HSN)Qh(?a_+G`ex)~KRUyB}L9Adoom6z8e zn?sD(UbEbZE6rmc{@(vdZN}PQy!NwSDr2oMUi;aXH|CG=+DYY;$7_dwRNqaP7CBx! zL>~M46(^0?4nJMLRKj@e@G~hz%<<&4N?A@bO3i=*1(wL|2w*Vfp0?eMFnTz9;7_?IbGbG&x=HPcjo zymp8@_I%OO$7_ceubp5?7_S{7kA39SH-6@L?GWR&BTID4XO6}WFdF&%o%6RP%dF&$(EpEbi?GSnFBTt?2+9C4TldnJzl^QokUH$8G z;b2$LhrouBvzM1=F-A7(^u4nyr2g9tCuf&dRww5~|Lt8Oh(2U7=6MXGw$X81rL)k$ zDBBSp?drIH3+8d0Mi+(0x|+V@mXEd+jF5Xw%)JSvDBfZ1p zB3@`5S-?Y?+S2%f8U!Am5K@OB(Xa~MIlaun5g}K!jNCUhJU+j_wgmZZA#Z5JQ#?d4 zOSAB3SJM(!y*E;=vSUKs(%9#W2oJ|at=sT$C~@3Co(Hl64Pe`OC}B-Y3?k1QOe87%81eY+5v8c$rD2S8CE zm09?Xo|gOh`cfTZHQ@3<1{z#pj6+YOr^UME>7jI06Z7Zh7cS1T!X#hRGGR$YYQ0E# zN~|*nmi7^6U$N8+2RuVknRAL2xsiB*;|o#zx6JsV89?J@!l~j9V~WmRQoJJ@p9xY& zKVpaJ(HQbc=L|0r4aj-(He7t0DGpr132lCI4u{#iJXVX}GY!M57`%1&AS>SApz9P{ zCXzm6NP~lPibRcSyA@k}U2u@F#gTHqtBkE+=p&K_f5Q~UYCpD0X8@c{R+efQ>RDV2 zj2cyNLudqbg7CwuXU^b>W^sGIj*RX29#iM*7q4S;W1TvXt^4;J9f^xqCNJrH1I2f& zvn#;K@X}?qg#YM>l$l#;gH1-k5tWBrsb4l#To14-=Z-BboMXjf%|^LCkp)iC{EItU z43W6IwIxM9XT@JJMQjR@1b3Mgcefg)j&dYhqE*;~XQD0m! zEk?#?R{X0J<(L=?S3FWQDmO~XOw(^nk?F!RiK{W%#bsx&x&`p88hgcoS&-A zArtr6g=uQwMaQ>L9nZ(Q9oyK?sU!e|Yrk|pfJ%i{}&78mDmlS20v z=yPMmmv)utGF9eJ=#Nhf4Y9W7j@v2HcW4~fgW*G?W5@7_dX%-bh&VsB>+=L_YqjHa z2(z|=5u}L9i_=y#1k}RM2CS{ki1JY6Z#NZn5@2l|Mp&JFRTh`FPDAX+4dyZ(=hJ&w zTPac4%i79`!amkk5rSm;M^_cr)>RteTWN^WavYk$eo$8&*4Axm5cu(d@p92htrrHq zDaH2MU@U;#CL4_qT|$mhKJwWq*0#wJjxEehU!38*pXDade+wGDs=Eq&e_|mKgl#p=Tu{(4mhSGxG36=BaWkQVQyi` zwj6aVe2dtYV~#~_PTMu;xa8ijO?Nsbb3@zCyBw$7=(cIdF%HTBpWLdd9F@Jt?Y56Q(Tx+|>(&w>IQ%9C+>gJ9v zTBl6M$n4b0>Qb$$&$IU?$piCewd1}d2R|48h*0>g4f@OZGe*|-qE3Fp6aA8Qenq!m z6F{Qvzd zOaG7V2Z)&dKY+2`_`mO7=F|WEfSj>_z8yv%KMQ#bL&Oe^_Z?$-ni?1#Ju!;Wwqzmv z^*Z{dvidgBMAT(L6L@Tf9r^T zsAu5NFgq;1pBM!ygY{`)puc+J@SW&EW&O&bLjx3|s+8vl1^SM#qx^rm;bX_>E1u7d zp$irzMr4jjQ-J@g%$abWZ$_3^xdCI^Rx z299E<{qTpz)bOFPyWkMDVzBH01u)6F`F-Rt?)ev{#uhKL&W~?2enhByoz55Z7*V>@ zQTNN8clH_zesIjw&r^9j*7mEo65LrDr*=b;^OB`WsMrbwNX z^z(0-b$;j?qY%wr4A~wS?_-^xxYp5V(Qp7CVx4o>84~5ki)IvFZzzYRFU&62cyhbW zrwl>#HJR%2&ctGSS?7CqX~iuEdDjhE9;8jG_Ur$01u;AMW1_RN$0#?9dsS>*nSHGD z^HSq49#qFxaVNHPnSS6d;XP#hvSghv-rF&SpGV!ofdslqrmAI{z^}Ca+8OjtsB6zfp`5RUVq3rYfh90$%inbbi;goLHpdQ42nPqfxwnb_rdm z_u$b-ZAsMr1yiP!uGAieZ!*f@_M|qmgx4&m(NQzMOkI_ozhN52&*It8{N(H$dTJ>L zIBlfD%|;FVXmXd24Pt2Y;5<5V=+|%Ot4#ylXkbH$CHh-aiF)W{(k<3`?0``-b;j`Q zPc?of{kEwc!h@6*N)JAEc6Eh!%5?tpExau6Iv>O@YwH*)eb=ZMBG3BCO0O_`&Q*9X zD{U})!c|=Dk{<4AJCUpllG&{q!stW&gvOLB& z;~BFPoR)ibeid8ydb4-??_z9WmGDNTTg+Z<62|c^7Jve! zCtX35kmrcfZnICDE@0SUxN$kmN|2N^-~K=GJ)_zrod-1gif2vV`jfQ+7|DYI6MjEABBQnV$E4sp&?e1x?@<^FUAGxGvVuc zl^-i4FSfY97@S|`^ar{J?0Q?=*++NBYJ5ajC5Tm}wk@?s*7b(C0jD*&%bLPi=>gvT zz`9-2(I39D*492wKM9e_HBeXse(}&M#_3oHTcirdI@BZ%5 zm~Q5#?jDQDebdy>EZ2TKF4H&=I?~bMAb$~dPsCi}p&T+f%SZ3(nN#=4RI8bmyZat# zfp_M;xC(*2|69igS|W!-;}D(++5FEDQn@snh5zP3W`K=yZaf5g%8lLfzlRCF`n{rzM?-SKt*sCio| zSAgGQcK^Pq@P@C3(sbWs-n7a>cWLuU!yv~|BV zNfkFJV;5)Xms9tP%0{<_ssQQE7tjfGnRWkKvMjDAVyhmJV^zdmkg6hfrMTE-UYM25 zx=LKKEb^pY-gVj>L zZ9Y}#L%%gf0nj;Bw4h7o69oDlq;5pMXbJ(Vtxh|$?@ajRG{b3>sk@yOuluy`s& z&#&+Zulws;jcs(#68MI^Z(80NeMeTq+tkt83P0C~@p;{&+l*~Tg1WkmqL-L@Oj-An zriCu0wWXEIs*`p7ADNwmk&4?X`J7|@`^^48^;`sRG2(IBQMUeC^P+621N`C1`X_~f zcmCk!1HC+KgB&)+Hw(S`b9@}{J{;;Bs1mq=Z4}oKF;dKu`}#*u46}`*A1Xn|`&$^r zOq83Avdbwxi}6E9^Se=8GZLz}2V?aIkX2(qEQ&bsC-_dD7@8PHMdDHUX6T{-= zlu@=(oZb_BM}|&}jNHpMigR~@p|3xxM0RDwR|)7E4(}1++wCyk84>Xz9_L32t`zetVpNYhC|Iv-7p_6}N-ncr(K0q4+}yM7OXFCH zh2=A6!NT9%+cNIaN?{r&2ex^0Ba!;T&P9yi#Kmg!7CxQtq$e1}D?5W1DA?w$oMYF- zqiplG(#tSzzOV%YUspIwd-HZ)$_u;$TUO_1aS}nzSBaR%4#>*)vdvdF(!$)r3N+KN z<15E%c`P%Fw`P!ddGn5jgNPO~6L=EnUK!#5)L^ zf2!~mEFX~bSnudj$TW{c({vZ_!4d_KMj*qsQ7xNa-SB3VZ>35wyLt50T&MvZi3caE zi}XM4&^N#Ky00h7w2#>42fD63Nn2<){%+TGOwWOQ38E@S!!P4TW%KKL|2${T2Xe3Nop>w%5CE5-1-k*OnPF$7Fvy;nb znfHM%dd;nuZKK(FAIyFgv%VTX0IMj0N}p_7#_aRik3AzW%t1(tb2X5!xM8A))9^gi zL{PhY_E)86M|H6_yYIkFRkd^YUf~aCy+8Imwpmp5w;8k*{PQ0D-j4v(cySWF&NxPx z_j#`*D*T|V@Y?g38D{ha!I-`4dL%%==Q=9)Dp^|wfKcZBcQ5-+1g~#@5&mqUKR4jd zPSSSWj&CnTv3Y!MIDv`mBfs?WU8nJ-w3D%aLv+^#Oq|>W>?=OIUX6(-@Z}x&T=z*# z)V7KR&m5##{jS&ayBL?W`@2v!Az8%+e0F~W6aDydm?pl0iCKJ^!Dr7)WZ@tGQO5Rq zcV|}d_msC^R^6~gR{eIW`nSBM-uq>tK%`jXV%^_zukdF??>=iwRnfJ)e{I?^J14_oAr)Uwl-x^V68RWqQFn<1uf)=XoE( z`n-T&9B8_Wc%3icXV3lK)qH}^7bNYYsaxs9K^#iv-Q+dbu(5B&aXO8ge+raU0H;%R z(!E*QF6^zIonB(doU(ytc`Lr&;%)vYzTS500`q3Qt3J-Z<3dWfeQ(}tV-lR+avEn`ekvJ77J-{SD#P6f?-k*E_O#3-fYXh)ht4*4v70_+lpoaP z|5S!=MEMyWzB}_@=nRDv1nj_{OZ6~R?6(FiOCKF<&&c@3=uA#cmLFGJaE@rhhaYjz z;LGP|g3gtX??XZad~T#Y^S@*b?CrSw@LIg=?)wpaH4eM~g3nHh-mrj3_K~;0eAi`s z@or@7Um@*!B_}~>;A3%u`sBFiCPM|`PPM|`CbpjQdG83rKbT4M{HT-WSP@yXG zXC|<7hLJ=C&l8cOqkIic5DnoC_}fVO9r&`2{vh~vOgAmBSOpq8J0Rw>pLj+bZ_U-J zNQr?LYK+~^GQSia+$JndsEq!3kA56QTh1_V!}T=RAK<|M9zLx@(s&N-wcw3r{{;!X z@ZP?xcxe&?M|Ikl_k^l-91_){UMkqKav5jirp>exx7~z;9iJASf5vOtOPlW@1RkK^ zBz_7sy^yxjA7b)TJhT^~J1Nw7GxiHU#iivrT#A}oDVTYrx2c9ScCDSXNivTdY`b1A zG8Pw;fXu%E#~gh!?=3KDmpS(4_0RipcWFiZtba}i-RL$fef5k;vE?^>9xIX0eopRY zm165Y+#2QB?>zsjhSQ2nkMZ1cGL6U`_Cf4G`u7N}?X%CimAyD6@{43j=*;l0kkEnsw+k8u>*s$S*?CCJ#;|ba3*EWRPEE81)pCj1g$K?~>U^ zGRQANYDKB%&HN%6BzzX*AED~V;0U*yAx9Pk=tevu6F zi~Ki44pM~Y7s(*M$ZsQZj3PYQKnD3mC^ACxH1dmNkYD6mh$Fv<+K(y=NCx>uHevtx z;WqqTC-$SAU!+Oz)+oP72Khx^iUN6PyiY8H{33VoT^rSm{33kMvj&y6K;;+7Aiu~h zDBYyz5it%l!F_xN`9*jGrI5@ol0kkEise{?$S;yXevvnz zs^;Dd@{1h8dec&(VX_SJi_kP`R1xGCIf_Uq+9&dh(0(Z7b$*cy@{3Tcf=xsxR6k^x znIBTK$vF8%T9#p?PwN-pY#=?JTBLaoA?37RmNEo`#`ar54E! zwA0$Kc9~ivdn8ZAa@;_}cG1U|J=**)@Pw>|sy&BK2kSIbi)8QIM3tH`!KcaI)k3wI z0;ecthh*GIEs`CU@#8oOkKjo}_Bapt;nz@qQ+41}-@pjREy?$i-je%rV+Z|W&x0f& zvb|BOVYxqVZ2la&RE@Ym_T>IT2)Xbhs4@4I#?4>G|Di5^NcM{5zS`LQqxi*E$YWUm zNW!2r3<$*N`el~;OHoHfm!hX(>ZOa^*BXlt6meQ$rO*%Gf`uzr@mOno;M6$#9P&WC z%isPHELwhK&#?uJWXrwVZ$6G0A+T2j-Xj8Geq^5r{GtdH@+132;Fm<8k{`KI1l}tG zz4?)wMBtZ2U`L*YC7?fDuKg4KI@&C|^TU_=mX}!WSH$%G{8(+K4{P>5zwwjM572Z! zrr$57UqI6XnErs6zKy1jVETh%`VN{tis=uD>4P*qhUq88^x^z~T!5#<4Eyu_OS@U_ zSH)5u!_*#@`>>cA!PH)s`^f)G+?#;Mag^!f)iXWQGdgE<&5SHritkI-;W)A59F`^7 zRw7x7Bp(R`S(Zk!h%5;mKEjdg0)Y_1#%#jrkPyy=B!sXW;S3=p+$2C?!?j+{uv}r; zB@4^(f4@4qs(X4yhTrq>_w%$o^}SzJ*Im`sUw^L%9YSaevp+0ChY`Af*&h+1qX=Ed z><2|?Ha-A8Df^=$bTU3LiqOYI=!W>f7(yQxp;yKSjv(|25xO-#Fh9%ePm0hRfFblL z5xNW5B(on9p?4z{ggz}o_s8+kp#882d?Y@wo!OrefrsJ)ttj0iBJ??gP`b~G(BlZ9 zbdQSAzafOuJtjhD5yJO~pA(^{5!%Y^&x_DA@qtO?>kA_Ezv(9QumrO*2XJOFGe-;) z_!<-~`on1PIETVT0#a6o_K!r=yKLc9%9a0E$lq-j^}x@?E^<(D6mG`oZa)#w{U)?~ zZsr&Ve=5L_2+$pWGV0R;eaMHpv41A;&)F=jc!Fq_3oD)=niRt>PY}&fE(c^ZHi%%g z(EZTL z2sIDg53P-mO>jpwVmYE$FN^aGbU$KZRO==-ZqpNZe*?N73COoPYV`%(4{gJ!4B~x| zN{?9H`1%aGA6l2$`qzja;Ry=S&n=!ph2-psRVIFc8LyHI23lFHs#+{T6l}wL z2(i|46n?sEcreO?=d)NUNl~#DQE&Mpe)2Wd!6LOE--E`|;kzKS2?*mYCW{>^qu+KJ zp7X-o@PWk+3sD1!1ZPidLWtTRsvYiaZQIt)5()d-$ht*H;yw6a#-55KZ$U~d&fU7% z$0CUrA{b-Kgt|Q)ak`+KsG}%}*Wr)MnGn273CdX+P5&QO;bEK-xa_N5mY_1)$(&V+ z)U+l`Q2gFCj{_4z&Jq;AZxwZ(des9sOHdpvLDcxB^f*3Ywko%j(sk{?%)V7Db1Xi{hqn-(7Q#?`XkvHw}fB5`g(-8ai$a@)6wxKSw`A1BUI`*yK-Vz)vk!h=~d2*=5={W_st z;--rQ=Ji5W7N=3wClh#sNFc$5I{q7lZj~D!OVXQ!tVZn=-YlY~MR>S(Wd2%apAo{k z<-3W%O)WxL_wR@nzZ`ut(YXB3v15k(Ezx2c8Hu~#uuxP1*1J2SMKn5ada=x3Kt*k6g()M0H~z84RowAOt!8l!N6E$_)rjEtUQ_T$l*zAu*GC!#Sv9Pgrh zU=jYB4Bt;-)Y8{w_#q0T)ZdWd$0>}gJt@OyDU8MVn=<@N24QSOz9qw0h#|mUrKDd-kkRi+$zdTuR=+PLvqFN*{=1ai zASB4{St+^IVqzAeT?3z%EY?W9`HRsi+AW;7dum~D1a5uoFGW+-y%Uh2MTP9kQnund zgvgXmsFX4+(yz9+_J2mpUW>J%>|#ufZ&Vs(ERwTvx6c+iw5N~s=R!XyYWND`Mq`wM zx#{nRt47#D4YGv&Y*AIF0@E+w#s6Gzng~rha%@2 z{5JHro?8u(vvonXgJBP1g+XRdR7K+GoDzq3bsrAuER6?KXW5|6;yO9hSvIJ%I08TZ zB4I&|H7FKJ8`N1kaem_f>MR@7Sz3z-GcaQr%FI4yDv(!S@^jGL)7`bN>F z`^Bb?V6speE_Id->MWg50qQIp)LB~5&6}vaU0r)Ip8E!j&JOAa3lb(Rh4EUo3E&az*T3yR#3 z2bsNnJs9Dj&NAZrsIzQPXK6GKb(Rh4EUlDFon_w~jC-lGY*1(ER9vUQqD6-W+V>3# zV^;eXQ_oMGWxvKmMK5!yvusdj>03xL6)$y`eQU0YOPytdIx8psRf9uaz1#$}d!P&T z3F<7ZlZQIX26dKJ;zjgQXW5|6(h338SvIJ%v_b*uEF08WTG3CPWrI4)gZinnY*1%u z1;rVlhXkmza$yV`Sm_Sz!A@FuOUJGU)LDfT1)mf2K%G@cPf=&tpw23!CvS|+)g6Tu z#f_l{>a0QuD(Wm7)LDh}_?MNnrIQWQ6a z9;mYl>4_Ud57b#&PZMGdb`1^DrpcIPL7f$(30K-4>MZ+ROXw*^A{*3M1rzL*)LAyD zvw{@G7?<}a>MR@7SwV_4EAn*;TdAIIxCOJ{8?5N^D7cEC&I(GA6oaUxdwGs-psg(E9LtOD7z_hKVLSevzAU*sDe5xuPSLs>MR@7S$Xw5)LAyD zvzE~0)LAyDvx4;aiYI4#e3!$!0jRU`s$%+T-__HFQ|JOpqO-Ui71UXI(=!VV>a4ta zIn-G;sI&5F=Tc|cpw0?XUy3@*26fhw@!Za%iG%Da26WnTiDJtR*99 z>MR@7Sxc+C)LAyDvzAnM%ON^BsI!)gqN@zO9&ZcIApNHKEc>zlm(+~XfI921&y`UsP-p%1@s0a~Ix8rCfBV1{m}c;-JkT{v zwKCA%i5~F9!rFYrkPl0s&MKU65OtRQ<-)N7sI%;^MX4qNS$SaI!mkMq0X{Fot3NPrOvWJouzenseR;FIBqmme5jW?%La9p zPA!Kz%l@7T7o^UzL7k;jGE`0KEF08WTB$H~mJRAGuA84a%La8;fJy*$mJRAGS5t5N z#D|6QC=S$Fu8OsIy!h z%5DI4mJRAGSEm4VmJRAG(kqdSSDk(E%p%yXcG@3LRXw&2C$D4!iSL;3Qax2d76c?2 zJu)?m_v%6rA_0P*5<#1Sb5n@$kPt*UJ~DR{#{2fCg)9ac>^HeXRlI2z!XgrmoRq@P z2w@3?_>{?hL$6&8!e@SSpk`ns<(EhTJtr4;CjQ5pP$+r+~ z9R#=)UM}NpMyli(j?FJ-WmJKL@{{_o2>(=t<18YmwTyPKA5S^YTT4gg&U)BqQ!+L9 zk=%+Sau)6%>gyjC4|)2q9Ugmel+KEiDGQq6o`OoC5P(vBA<8A??6?H{OuSbWQr7%T zCE#Zw^{|(psdN{A$GpnV&qVL#DsL}~Z@@Q+1^Ah&U9Zvs{7hvVYCeY21nIc$%gQ!N z9rBo>ID^VZcvh?F>saC8)kQua%FMr;_3$&5gP)042Zxjcw*>f^v{dsmCBV<5f+Ar` zfS<{gikfjD@H4qk4nI=@{7f39@8eaCCcw|+Mc~ARK6p)lpGgBb{7eb(Ga0ZTZAyTj zNeeY+isUd#fS)NpjCuq=lg4@Za??1k$k6e_TUg>TAMWR8N`Rk9-$XI8s2u*<2O9iL z3Gg%Nh<<*i1o)XWYVtEBz|UkLUVf$o_?a{~=;dchfS*Z&$g1LCN`Rk91A-sJ#lX*` zG1vPmOMstA%S9aSz+&9xXG(ydNvjwn7%TyPra(mUGbMH>gK@#GkpMqaV03!9FZh`f z;AaX{5&TRE@H1&Rm!ByCekP3z_gT_^Ndo*#8tNb?Ufjj*DV6{~lSWX#dj&sJ0{l#d z9IyX#`I!>nXVN+zex?NYnKVRpj(&co1o)Y}8aez-3Gg#%6_=kW0e&X0nDa9wz|Z6r zOMa#V_?a{Sr-s6{4F&+S;TL9vJVA2@Zpmr`H2Im5HGu$_>QaFK=;zV` zkgjFiRfQ!pHBG#h0{EGdwI+t8h>s5#9lM2ECKPy8iu$TEGQcZ0lEg_1ZDY@JS zNSEr#2A^E@0+wtv5V&G-^KqV6uK1afD-5~dXG*U0i)6=3t`dN#A(Njex!SA-4?k0K zjUUqdOv$xg%*)S|To;H6AIr)0UeM)dN^bB1++z;-nUWj5a;j#~;K29@jBuMwj0~U* zex_toE=Zgp$<0!Zt(3vflx#NDbNQK)Ehg?=V3MsShTasomL%IuElfOAMA}y*x0nE; zizOm?z9~kB@bWVyx0Rl3}#WLC6S^9rA45I4<5kJlssf=jnHny}!#l`zBtH}V6#Pu|i};!N|KMk$|B0W8{||m9`k(lj z=zqb_M89_7AeqIu%;jgIkmP6LDx9B*ektejB@|Fc7Nr!xyBWdHL;>Pw;u^%yBz}OO zN&Emm6ITI0lMsNPi3|3DpGipYD@DHqKNJ0;m$#gsi2|ITiGCRTOcYf7O!V8s&qM;r z&m?{dekS^@_?hUpVq{uP0nN`uAg5@X z;%BM?Ka+kIPp1%4)t7z|8R;Ae6H zan@v_;Ae8tZVj}tD)2M8h(8`+@H4rv$nGCgj{7hBgXEN0C z@iSF{pUF@w#LrX(ekQKUN2-sXsS5l|x~kDv4SuF7@H1%)Yr4tLR0Vz}4SM;Rs=&{r zF%Lge75JGn6v)q11%4*2;^k+m0zZ?+a`>65z|W*%$8l1m zlNZwbOx56L@?ercs2coCLhhwsa`~C6!Ouk7p!$6LOx56L5(@OD0i}ThZemiZ20xSM zj+~#V8vINiX*V1e>PO9L@H2T~!P)HcGgX71DM*1n^giw~4T7I3NJ(s=tHI9{gsK_= zKT{CQ9XnTppGkw1Z_dwD4SpsqHu#yU!Os)~pc8*6U!rTdpDB;3!TrE82c;VCYvKj7e7%Ui!@whI(g^SPik~S1ekKjcNTeYmf}bf6b@`bx;AhIw;E%|H zpD6==rUE$H1pG`~!Nbp#0Y8(DM*We~Hf6xiq{V7-Vj1u=<%%hmCpb{Y3h*--vzb!!tP**&AO{4?VB>-XIfH=+70|n=b(pv41Ol9NX0Xlr83}W(xA$D5I<7} z{7hVvzwcU#pD6==rrdNrbqju`f*Mpt@G~u;gYto&i7Scb_G~^L78WSt(aeK@pGl|e z=V!`*pGl+i9E4?;+=OMo&!mB1ex?lgnYfNwQTUWUho30}ekPrmpPwlMekP52`I$1{ zXVMs7VWmZu%g>YnKa*CWrPSnSss%q&0IK71VnX#m`g=ex^LA;Ag4@KNBhN z!yjxuaLU7$NwXcpB6 zkc5|?sZLD%0eX_3sZLDx0SaDzraCdb2k1$DraCcq2PkNMraF0)ky|K}pQ%nv(LpIm zex^Dx^#*9<;b*E7Gi^lxKU4i%D@H*}Qfcrr)!)rsB(lm;gP*DXZCnUvbvgV@^>2?X zM-n!rQ|;qtTE2Soi@aja&$N8?C0?=QXIj3xhs*hcJ_}WDQu`nm}XF!Zv-zz_y!ME8F}ziCu|!oBm=b9+8UYi$t2MR|~h{i%QN~E|a2H z2@!V?z9}n(l#zFuH)~>8R}0;@eX;*cS`JOC1;yHWvJV@0~M3!u$684 zcLQsb7_Wj>*80B&MsfHpTIstHa;DTq&H=%@A^&TF?{Xe_?7KPK(F>CcoiqjcBjK3EVaDBF;{nKZuRR3o8e2#` z?zKrCBe@u3jNEIFK~_RC>0bLLgjeynrhDx-Lb?~OiibyC_u6#pm{sg^uT9btOE@(S zaId`&=_C}47YJVW+JvSRdd%-$o6tsya`)QzL$J;&4sx$ex-AOg?zKMz$u_IlaIgJw zNOqFMb+7#}BzsBXy4NO2Ki$*kUi(*&!@ag@N7o59+-orO(8=RoyPS$iy;CZc{};mlqQfQJ(L3%#GABkw zb7Cv_-=`qSb*~L4wD`JlShYA`rkvRKAvN7=+ZcaNtO$RT)%a7v$6;lTd+iZmRfcpWT$Xdvl^d!ZA#RXx$dq|)@-0<43uBFP8Zg}lm>ZvTQ8(w@f$PL`=HzvQ0 z>^ZR^pfz5vypfG{JKzt{iP2D0nDojU*}*X-RbF``d$_oqn(7qdRx^7V|3S_5${Xol zPKXrofg8C}iL_VV$Uue$6x6g=-pF8vh7@EIxn6lALuI0V)NoT?c_aH3pq=mXK^r-+ zj%IHprvZ!;`F4kfb>v_z4Rg})d*zLMH9_Oz9KG^JTQ}2~h;om*4&3f;!HuJP+xNjy z4Rda{cq5bwM#ZjuLjzZVgk>yL@f`<)b@vpwr7$X)jG`Gcd}WiJJzJjh-4QdIPB8fRDHCm*+l z%ijONjcfw)dcrNIN$1rnDpjY?6Yh(E38C_YOD&mJweEVttfl6ySiQe*`fo^a`gN^E+&V29P@cp27%`|$8_KvQ{%zTF&#L^;=9XQ9->G;*~ zg*`dPbY@H??kljMb4&-$F?FKn;2hI=ff>Q)9MgewOr4qlbKMa-aE|HM%5{$Ez&U1) zR$k|r4xD59wN2-k4xD59@c_?-4xD3ZwH)V|4xD3ZSUUC)-T;MXk6h=N4xD42OBA1T zOb5;}b+jd&V>)n-=~s7)hhE@!j_JTTrq&O3j_JJE)Dga_R8p>UOb5;}bwUN4V>)n- zsTJM4iOSoR;~dku!Bj8c9MgewOr0+8@UAC72hK5lSU_)tb4;HSA6w*8iJW6PaE|H2 z^Ek(J;2hJZ=`AOBj_JTTrq=Q~$8_Kv(+`T=xW3mMIL9^Wm^zjG&M}=^Og+DIOb5;}bt$hV`_x}=a>$hV`_y0&M_T0 z$JB~`=a>$hV|q}(b4&-$F|~s73Z#bwoMYy~7&dJX)9o=a_}`lygi6 z&M^z=Nmr4r%(B$>!VGf*Q7E%;9h8~<_7SdDBF&#L^)Ov-SV>)n-8KensVjkz14xD2a)KfkO9XQ7< ztSFshI&h8|q$nl;d4KYX=)gH?W?1;T&`6l({oN=lum#-E@U2oMYxql{BPtOb5;}^Xhq= zV>)n-xr8Qnj_JTTW{@6V@kCF+yAJLg(}8o$ysDVKxN}Sg&N1^UiO%A7R5-`Xt7;Y+ z&N1`qA*SWlJRsS>z?_EbBO0Ul~kP$&N0vZW-1b# zV=fs^Wm`kSamP2%MILBNvimozpj_JTT=8{oz+*-P6?8f}wH^3Y? z$NcM4(e4}_ILAEq_}Y!61Lv4a#_Ky*=a>$hWB%=_8Kr@9%)dSzqf~H?`Pauc?hogf zLGgo~V>(|ftj$*pKCdtb&M^xo9ON9+`Eub{0nRZUIL8dUk?9=M`Dy_rk8?~1&M||M z!<6cGj_EvMss=m9bl@CQCl}}((}8nLtsA*Q=u9DX|rUU1gT8Ed~=l+s8aE_@}e5lts zrUU1gS~bTxrt>`$?(gXCI@FJYB{)aV@sjSqIi^m@P&J)nI&hAul?pq@bk0iM{LV2Q zILGA4c~t_OV>)n->1yhYpXnUafpbh(#oh9mt}h)p$8DwuXB2r07{DbPE5lvS{Pa4L9n6h zHeOyzV=#McWcDb&mu1e~LY_t@CskqJ){tC)ZX-_csTrdE1scnFb;HVEL&=HNH$XK= z6Ayz84kZ-!H#jSPZ{z>)$ZhB0J>ezzQ$a7sSh|oqOy!7zd}s1bS4i3GJCoEi(t-!C zp5f+{S+$u;+&3O>{10LK;KliyDrPOK-fWRlOe(=-2(DHqPEaD(W>3Lv$f|GnBhra{ zAAc&nDBjpN#x7lf_d!r))_MHhFRL0OHacrX(I&)*RZY`3Qr61lq?bT-J_~7vk|wp` zDe#ptYwb!x<6$OqQLBuRhI$6k@40g}W?g4}7j<~UT2Y*{s80H4o%!KP#+DuJoSKsE z{;ccjsY|@+BF1jSwG4#i^JG5s!ZI2JH}7EV1TKj23H@=9ZCWoXPvC{ei{OytD6YCc z$U7VmH(97oZ z6uMr$+@g$(jTzk0VB2#N1CH&h-T9p8Pvy-u3;#z*b)WCh& z^6fJ4V+1x_Ap^*K=tYRTvPKFh=fk+XHNNp$2?ykS)A(FA%lMyoMJUmL1DU8Ngqn?m@XuF_4ln`l~@8D;Xncrui1`X!>%Rrb}o zrnC5;uJV>;>|4mS&1fe7`&+yn8=YJDn=IbeZA4kI6B!!r9b#5V$9W-#2lnsd$3^{vUHd!x;2j7LJ<0;2 zb9k6pPV`w`{1LUvSy9+@%%Oq`#6`TAjCWYZW6yma)z@qOf2c1kR-=DgB^{Pi``5y# z1N^&>Dos{E_;V20^OM(QvC@auZTb;{p_nr@GdfBNsmBzO zNfOr-@^MJ^lEgKIBuPKr(`O3#N629csoK#sScEBL6WS*l+k(Hvq8+`akR`fVJ*JR1 zAwnFOYYN%Ro7PPkrjWelSwz`pnWm6?5xc}|3i%sK&}#}wy%940yfJr*g&wvlcn2ks zVG2ny8-(T^!{84OJz|CLMpC8R6tW-Xrd%phND3oGC4njA0Z3w^f5H@!+9475nnIE+ zjVhu67>$+VX3-dRn~?1_g)I9=DAHB_BWUI^g)F0DQty;XWym@Eunr5OT-bFIy|9bqoupHQZmFk&xpt9uzld>b zayzD}XzUNju&r$+pGGhmJAxSegN#{NC-Nc8U@Q529)ZTH!nCaa@-ata~skLvzqhZ9go@_@}B0Po= z{oLYFDzv@h`FOOhbnP8Q-*xRBdHZve+dJ}s#e>}5k)om#Q;+GyPd+#uW|Ns5i>1R) zBPU@3Y<$SWVu#A;clZDa__u#7c36leNW^`^vDkzVT?bKKGs!ZVkUj(ren+ZFpPA%4 zfeE29lccsvsS0<^B&n`VsW6j_!!8k17XM3kay7J>TdDS3xdofwSImxNv$KS7F1H&$P8wZT4@P0Nv-JSjrWe>U^7Xr zzJ!^iR^%OC+l0YP(uW1~Mwm(Zl=u*&hhJqT>B9?{N%}Os<#f#?wN`+cq#qQy(Y6jS zlQdKU%p^5hz)Vsr1)E6*;kjm#TFX7H7cFXVh?AM5)(bL|)TroX9y3Wlh}Y77GfBUS z$4t@>2AN4}odRZ(T8S4i*Gy6?!iCaD$F`(ZsKU?!OhW7q_l zNfuHx%_IxynP!rO^rX?CFq15#XqrhD(lgB@3+c%l3p2?=il&)lAwAPfvXGvgBW|Bdg(oC_-wJe00WI;XG`V3~0g%u4m$sk2B0m%C+Gsz%D_eHmx zN0>T}7Bl=2OgPCYe{?wTd!KabPBySKl?>QZ^wllgz8^Ca#oWCYe{+O<91%_M{L_=+cbf@vn1R~6HjYbKdj zDc4Lguc}#Sm`Uc<3pA6=s~v168KizLW|B+B(~YdR4lt8kGM?LyRHuWPA*GzJ0b&r|klIm_bL??%t&IhjfR^{E)M3CtwVJ-%U32s6ng z!8{xFjail5(1vXC|{E#h+>ZYEhs6^~dQ`v(TP z_H|q}Y-9&!l7(XBF_R38;y07btCV9V8Kj9RHONd-tL8V8)H-?1B(+K&GfAxwY$mDk z0%nq0No|ACV8LdRS~ahkq*f_lCYh_0YbL36_&Vn^gyd$DTE&Ovnn`NaKr=}V8@7+Z zW|D!beltm}w6vKd*Y(;!dMq1ZCK;fT$4t`I)EhrfVlb0*RopF~#|RQ;lCFlEh(`lv zk{*pfGs(OfrkSLxRKQHq)uHU>F_Uz4mN1hfy)t?kauC)e@<=?0Q``Zk_(P3&uckP~ z9dL>}IB|73#T{^plR$EcJKz+jpvx)lfK!|VCa1UqPH~cXIK>@sij&a8Deiz%oP?57 z+ySRJ1tq7r15R-Yx}4$;IK@dIImI1tic?T>iaX#Gr(lgB`X)|s2b|(0ayi8vaEg;a zaf&Jq zZg6ekqmrvw%sHB_+5+Rh*efWdNpV}oZ_AwL%j~O!eUY7O)6V}O?J`PW1Q&0Ra`#?+ z{X^Y-``UYCO{kIfw{h&U@3zC(&8caoIE4r{Ir_d((IB5$cU` zavN>P?-lY@=w_&jKKOvoP2qllZ4xPX zvG)sXvxqmicm(g<%)37z@D>p_7yp33+v4yIyroUv@&GribpBP8?|juZ$Kbz@IUf|# zZBi;aI0nFng#6+-=ad|Tzai(tLbNmP-j_Ka5jX6N!*aGmktDzpYZAu8&VvHnEz{-> zaR-FKEOS08T4=8c663+-0&_kluzsDXSvTIt1$M~5RJ2bB=y1GehK8xMM*pP9_EC3` z4;&w9pB|%ujXZuzpi^<`pn_Rx1_m9@L+QFJF`{PG(90c5&ZpB34LUWc1!^?@27@gc zE1<`mucX&}6lkb)=>{6|X*Z{yJ2>A>FC%;2Xe@=lsxVrGIX_RIM;S=lPItzExh>1| zA3Zfs-xA0%%ACtHF`8#H2PWqhz-r6QC7dgS(4CIdhYX^0u;$;BsruiwDA_*HZ!l+X zreqJEq z>K3)!RabK*!nJ&D*bsVo~g_lZzrq!SJ>nBLyROa+*0;2ms3=Z;&1lEI}`un_rOk>=nX< z8W*|uboSLblz-Kg0yO&STH@=e#FVvEp)VBF=M2U8oPlo+3n}Z*8H%fgx;@Yj)2rRX z(zR8|t|XbvRJ%l^v{?AaNJ}@=T#LK~>9~wHr5mLV5pC_CzIJ-%#55}#;W^~)eFZ6? zi+n)jox57)OmxZ%eAzb3fE4FXd0G~hN7y&x%0Few+b6JoNvf>!zvLjAccuK&aPCdo zSovwMn42<}r))zPUW(`T$m%KgYy40fx+wx7U@eR%t#CPfa4e| zpLL8Bm9Q>m2nS|IF&t2&sa=cXbM8?p9qpLs6!5fgI>16g@(A}0>-Cgb?T zP3+>!7fcm{H=ULLAP*wH@hRV(G!i#r3cmL8+w#El0URbw>Knhzqtd&$fUob$FRw6e z&@nPSnw{#+E*za1>%f--sF4qtxL{n7F7L~em7b_mQ)Y*tzM7d`Uq z6uwx>%Hb=T8#i22Wu$s=WO9Lz#M!AVD?e#Mw6fD@gx6wFQE}&Hrdatm{2E;+N2eCW z=XFwLQ?-$P|Kx0zI9*x!EBxXf7>Bd+pZLX{GmA$kFI_c8GT7b?9mVh+Ltex@^l-|6 z<>!m^tl{RgHEk&D9+_VN!!8&=rdj#*CL(KxcKLFC_>2itBOO5<9GqM@x^HG6i>YJ| zZFp*ErhRsH3L7BWO5i;UE59yNL#vbUBhDG96Qxy0NYc?hghisaePD2Jdr#K@OOy#Y zpW5|2!4l1D$nEAkfAVsX$;0OQZ!L*$CWKg(WgIi@cVI;d!`y0_~ty9G0jxF#vpgz9AZn<85V@2~dt$X&4gG_1DxSo!O04liBY0pw@_eku zEV0&$bqo4VGLAlunCk*jLCcv~?*%*OMka_BlO;BI0Zy{8aFQi9dgWBj^z=+0`z1D+ z7|{+*j$#TN87F?|L{lzEH1dhfQjSj1(K$YUU}g#_vP83~-r3RD+dfKPE~{amXfbi` z0+VPpG4v(@`__^~o2i9~hl)u1io_NZKy;jJcYEHHWnNnBv6 z(6sB8=0X$c=;*|D{n!pwQ{MXO3{sk;In}7tE}znFEQ(%@-98Pl z_|43DRrdH)c#U{f_WD#*b$YeBeOj_Lyh@k*l+23uYF^>fl$GvP>hURgx{g=1H&>N+ zBd^vzpO)LAUbQ}-nrdCIR=-c{keCO(N>_T6Fp3o{C%yp>PUA)?h>FRdHyw zA*EbX)eR2qVHF=VkwL7J)ITZ?tugdvZs?4fRkW|mMcin=F~J@5lt6<$io-VQ zpPu`TdbIfKfS@~OJ!^}&%IN3Ro`jaM11fbXwRrFq9 z#KDq~oxtv5dJGT8)AMvZRPk|B0jH$Lj!chCPT_Qn7^A6@5*HdNbfU|h+S?8LnC@vj zJk#66iW^M@n%q%QB1byum!JRN^*PS!bR;D!FQr%7;vp6Fw6q{M5)P ze#~51YaT;VWcPHXa@G%tV<>v|sr-%)laoW`ZR!ZJucwP#B+b*x(=v>&vd8CVv!kr? z`w_l0rMkTe?$T8G?@EDAcab5yOGA~hO4~eIgq&W8vdU|H(r&!3Gm5a?Ja9xL`5d;N z7EYe(*Mb$qgPJPTA@hV%ry{m3mG$NUq()Wb9|psNyc);NgGb8uh zPpHIR7!05jyxBZTr02!KnZ>zLq_y2VNhDwh-v(wESmgtLK*W%9L}iP4jz|j_8Vr68 zcd^Ph3Pki>IT|o-j$^u;V^u@4@1iC^Q#&IjcG(qL&8|>AW~r`_N7d~V)mf!Vor3$? z%2Ja2JgWM=W?%GzZLGS)Jmc1A4<2-@pE7%o2SdbL&8|UXW@KUXD65__I|J3rf%bv! z_I*RFy3uTD${zOUv#k0fezC~)HD=SR!r-?5Vm2hnc~0*$TSH2r{9E(fmfsSG=M!1} z{5#L89rJvY6Nig?PnmL2ZUcSVL}wK{oS5_o%xd113(#{as*BaEiRMI-i!JsS#Qr?Dh|@8w`89Xu zYIe}>SQ?YCnzWOXl&V|mkF4gOa}_YH$tEj_<;3p7#Jg~c)!dK|(y#MsexIwuS5@A5 zS+8lme@{rYKEEwJ8^(Cs1)N zpB>X`BT|iT7jY9}ryii!aMWjxdXgt}XsF*szv7G9IoPN65H(NwW13)DvB;Xbr|c#; zfSHmnCTpsT%}T*Qnt}fU-Yc%igS4@l5BMOr`>ihVrX~SId8rRE`twhGkZi7sQnSjb zS=_8Omzq^RxC;(HIcL3k?o3?~;-|*4O-O;N8=ZP#W)v@MQaw5NZWHd!f%nYJ9?jCB zl}un?jt1u=*9v_(3iKSI@%|jV_gal!nS;`<`&#wfpBl))O}^sPU=G|dMrV66^Fz7t z6b{HG&%1mgOzqFn5-&o)`zzmQs&oF-fxN0FiF4|pRO8)IywsbSo`hi?OC9#6;BCzj z59n>lBOc7tilZLL--2Tv)Yp1h59n>VaSvv;+JpxYT~gQjQ4i{E&q)vFX{_gap@4?E zR%+;Kb^FPb3CWWacaYSZn=>gzc4t}Yqb5R$=~5)rQv_}I2%?t&siS@=z0X*jci#}D zo-((36wRvu`tH;>%pD*0r$;dh(W}HPOWkJf_e_Z5J!^v0j@mdN^*nP&=)u}p>hpQQ zEi84Bxi!QiN%wSif%<_w?@E2hhvSh2&%m-m_II;X%G^YfJ*FI9EOniU?4O%tsgU{X z0EvD~O5J1bIRWijoCJk1M$8|A0kz{xJ1Zdzp|(hw0} zmj|Wu2AosOvs8^~S0Ll_N94Ve(}d3y#L*^SmJ0ONlPZ(QKnH&;^`Sy4*p-@lWPb{Di$4@n;Ae-a2TT(H ze;TC1tw!n8jHOyls{o}th{F=vw58q>go+Ky;E73ka!NfnWgKg$1VD~GgF~QGEcIY8 zEY=fItGlIrfY=48Byv`Y6B%=1R%)JA;-p7KPFk1?NJ+c`7@wp8@ItA_r#+RDd&7x2 z{urOSH4{)WS4-NIq#A0M)}nU%`8nyKAHRE_Fc;Z?rdmK8Q*WdQwT_< z>mN1v4uOM~S<;2YUNrU=-}MQ>?}W0$z*t+ z+LK-2a}8bt(;ypIWz-!3YIPgHDe)Yc7Nj09RcI;A&Mll$hpg!@numlgitUtq&yl{@ zJP%awMewz7KfN1CZ!i~S58B0Fo}?cT3jFW~n-84wu#7ZS;nhN)*zFs_H%9FpUHH;s z@CpXzS#6!;fjc?}`g&QdIENC}J02Y0Ne*?>M-;499y#USVyL~pi`9xXBOr-`1KmSi z_!_cHWJOH;0eT1ediM7sAu-tpDD)zQ{k`HNumM&pruP87-93H%{a3MCF?R5W*N4?@!A-=>bh8ek#_i#BMDOf3{ z7lb8+8WgNv_6xs)Je8bh^|EJ>Uo^ak8a_fM$8ZZsz z*1(bT92H~jn~=_jBx0!_ml1@2*4N6`Jq(5UU5vc|*NP7zu>LFf^CpB|him<}5%?i~ ze2)S@L7=6BvCX*1zWj0gtsCyfYp3ZGSmVXZw~ocRIV`mNRU5PJvHlY#;m>Rkwfl04 zhkw?YHyt96;qs{3x@R@j=ha9SuTNzi-^c5?aqjqt(t2O%2l3I-d!X@7Tn)TB@8{L| z1BB1w;??%w@@A1|ply91-icd@Y9oQa+7dz4wt=c`xvI7ns{Rj&s&YDEdXI}&)k;Em zeQknh11?@)SKb0e_jkEj2w|0k_|c^`^fI`vW?M>pF?oHP$~`)E)a}gef-% zKSvJgv-@VCQTHUIZ$S~>giG}Qml^&4<-GrY6WBL!iB`Fhx61z^{CkqUjynD;66ATW zu?uP7;w2iAw~gLPC3=-C5e57uI+mwI!hb#0t1Ol9F>1|PG-w-TEO=Aq|Ex1Fxmp!r zju&A$AHwsz2s}%xWEA@_W$C!g5(WHO+J3HC!V{hPlE*s2tNYgVVmSPRo3ERmL&Jet zN7h`1y1E<{)JYY^Cz~;MATTS-hrk}RN!kH)tkDcRj2@aOvdQrput zcz6GlM64Dn`BV{~89sr#d<>WD?m&2V{{cj2aq;f%?8cD5#ixf&_^|;O{`vabF7ZOr z>flxIjP!VYr&|Ry)Y_V9rb(}uJyDgjpN4{E|J0wvdLWr zjWa*cDXgc}>=x+Wj7zU-Z8ynCW`Av=u5yua?*uNr)`*F3>+GbtJd+cuz z{v|HnV=qFaZMb-k9mbDqD3vXEMKP6~X7az~J1a;sJ&JdH>i^{j%GqzBYP0E8_}awy<|cdMI$&eH+uAvliMz6 zB5B-1oLJ=4_R-Ni~aH*<=YCQx)VfnETi`B5Pn#tT;*BG3Iz z&iKFAitml_Vr}1^gYZoSt0Xug<-|uYp(mdJ1I)4_zeWM$;eH@$DgVxwv% zXJomLkI&Kuar|#8_zj!HjEf$?|E*}FiWo+LT;pn+OHv!o!241o#T){b2e_< zPOjH~+lslVjS_2uGdwwSWO1CegwsWrhR{{vEP9TGGsSbrJVK*LKU^ChMkp5Jn`RbX z#=%5vcpN-aEL_LYG=g}zX5o4stV2|!Pf3TDb4eqjFOJVoUdO@>T(BxOyl`xGoOahN z+{n{h$3pbcJ`1nN+=n~H)vjDMDYIHjDJ%X~vd%Q4*A-#((br{G>v9U-gt7WkTt(x@ z!0pqzbt`1wLHJ3M!SvxcguBX+T2nXnzqpF$vI}6pVb+!e-Q;?RPT?wfz3dY^kigGS zN2P-Oq~v{4POj=}aX}s~Vu$e*iwV6HQ+Z3NbyeuatTc3@k*58!kID!`LYY&jL}OI# z(O4XJEdL1RUAn>#MbZg!=uMY>q_q4q_@A!urz2^0JGLn{dp%~{zvIMWj<8u_r}sAv zu*YQ`q%lFzzyAvuVBvKA(}02o7(+F=1B?Rh01G$NK7mMo#Q+N_#tVBQeGQU|?4`ud zebmwIqcMsUjm=Zka~Xlr7~LxWIE z4kPtEXpFrjI79fgXcCnkFVadV~u>yutO0sG124`!k;Z| zpbd$xEu-9p7G1%*syC1TVem&mVf~s5DY2M6CO$8-ZF_ubW(3qD37bz0S4|=PS3AuRvT9NZ-4dZ} zsCwADe@_<+y|(h}kVRvk2A-K~R#YIN*chA; z;02fUykZJsK-`DeEAW#K2#aH;K{{c5EdF7n zRs|Xgv21`{VtNAYV?DI&IuzFg6!Ph1G*cMJqCy^CM!mv=DCjfGXf`k*K1>iA)sPSTbGyDxSl*-9d*6+-m^mOgpGqe{OGV>#agL~wJ`NOM)$3l?F2#y~a5 zbF{7ua}J*1n6*v_HnD^*C*rNQ!by~?E@740;m#tO58Xb5=bY>W9`j(hfR8JfRc6=H z2*_1&=QXR`uBBcbW6Kj(#EyRp2{!l>6ss`RZn0fU(^8JclvXLRYiX`){4Fw>qjzL- z0UWN(O4_x7cLI*asjzElOtT`I&VPy=@kz)wD?*eMIjR(uAp2<1j_9++7#{E$In=jj z`0DK3j1KLiZ%MG3S7>Jz&a+4oQWCrfB)?a9`cRU6Bm2<*WO4}b3`ShR%s%dxhDDWR zAd3Rd!v%~Iz!(ItPGkZw;y5`q!xCor=p<`2!}vCVwJ5=Ua0Sm{OLT(mRH8nt+gx%3 zb9VQ4vvg6vb*uy}IL-4`bY+w}Hj8Dc6BP~ckd4sDNmew-L$MhDP=X9+iiWtPBsRY| zHkO?p#`hC4^`iY8NyIQOp+_O|0WPRwA-ZeP!7x>{s`jg*UqBX?0T~{kk1&R>6E&{| z(^))QT875rEb3k3{M&~xJ5N2}$!U>U)p3gobk`p77`_+XivC$=-j~D*Cx>%&JV8p| z=w|G5xK@ZkUmdTfK|g*u&Y*Cupkg4swWRt{2p%9Ie-^Bc?|2HUV%HTY1g;h0VX!(5 zUmG}r>SgQ~J$QG5L+@1Fq1Y??8GEV^|Id$rV|EyaD$_XcP7CnDL7WKTTJ<=lajQ07 zPV-Rs^bOaqmdhQ!H^TUCjfdClEM@G~D92j5A@$9RI8@^`RG9rZ2VF@QpW=r3Hx|~OcnR&A zUxYLIow(M_A_J$&kby~+gV)9rG*3|u)_=1{RQeb2Xtn{*vXE^6L22s->kyR(@3vmD zPiTyZR$+fYT9ij-m6q_D`WnuZzk+M6oH|QOszma?ddb>RzR-~B>N;eYlHYW$+RcBKz#G?rw~Yf=^6F~daJh(a!5X}}F@YHg{0D#^b0D{}o5NR#*h3jSnI>e7 zJWeelQr{u*ni?D^2jKG(|8WXEJpg}1;$<6AdVxnyfBYr4*{t~q2~oyRaY){?PxcV1 zgExpcq1Z{)Kbl`5VH&F+3Ap83B!1^w#=fPZuXamR)+dENMF_kZKW@i`k=KLZtK8IDijmq+V)1*C+66}eZ6V3| z^Z2zD$M@`yi1fcA;$dX|EpEhFidY_Z{#1o*+yZFmFkWNf+Cs>MZ-OLz`mXD@z6(E| zhWJrj=RbhJ)=%Nj;UkRg!?o>u2;j+!byfoTJ_1`tQT@2K{sw`2@Z)Y0^vcE&?J*FF zHKJAcaBlhn-cQtbiWb1zBcx@0Fc$eP(%bw;Kuu#9Rk$|)27%l0<0f3&;thCV0M++F z?ZP4i!lz$z{rbChi)7@yi4#BEg-@Ge=GY={L%DbiF=ZasZQ&r=jo;5i7R9VlAs;Eo)SMzAQ^erT&acxk;gaGSL4}=tfmD^?BQkH6N0-`G57O z8`KYKq4e|{uD>l*%xZzz z-mV8Mwp9zmC&ek1^{5lIqL^DQ`VTBc2sP7CyND0cN1YBDq&w)m+xn6dBefma`F_c% zp%bKw+a1LCvQtB={l(v+=wEi$&`$gk>d8B>)kwt3XfU%&cVH(sET2=xV*Kf1huXm7 zIXf#vSm)^Yk)}GnT~0A$nwgLpKHx+X7mIqBrL^(SIzzK7O)>|ZReF*+;G9qSzZ3oJ zpK+}!q5KXzd`%CX-n%L(!lkqu3Z3p*$7^8NSw@B1JdOysnl_$?-IKhZ#hyV;TGLK( z9qzYz3eel2a|f=?hY|Q4emp~gK?L?pFxG)<^IimAiXYeG+Cm9jcnXrx>HhWC$aG(h zFtuMB+An4@w>Cn$P1p zYHA?#8xq~L5zBx?X}j3%*y6$b)tuNh;;6!w!}Z{3@wJ#oULYawuuu?|u5ua6mx6j0r=wwt2S zmJ38}e@;|3YMZh_wcQk5sRvI}bPElhAET7t!6j;YYt%bZqQzI?ew!;$jgLU*lejiV5lCH&#{gWLe~(B<@nehvze3>c_;DAm zEtJ584bY{*bG=Mg)%KQrgXd1ENQ37DZtbn@4@#7V&FvgDhs_ryN^NnkL}}RkRLZF> zzG$Q=+Ts}_RzO?u`B(M-pGBgx7l{`6f!iXK)iyp|{VZ}GO;2Z0{O{sw<8#!{B26?$ z)lcF44c7|TQvEEljr7J5Jb+8=vVIoXOKsSA4Cg$!*6}&|*Ad=^H$!ke3HdDkOoY$k z>1jM};A$?BeT_2m9$fUuf=8ySXcRYZl^|8w!yM#`@?`^3F7}cG#lN) z{S5!sy2?8P&@v?Zea*>^18S?&|)FNATPNo&gH&&G9I*HP~ZZz)IYs7kcPOLi& z^kIea4GyLG2?IT=P<6-k)y6>MRA=2PfSja56{fOLKTnTHIeB3EutXzy2In6 z*uIL6Q4?8B&Ha2d+ZZmR>HP*nHUN0NAO-; zYxzE>E)t{UL#L-!VyjahiBnR=3ouND%6h9+#f)y{n=he*%#ZbKik_VhnMa+0srP!aip9M8FEL=9DG%t9G)f4 z0cJgDM-R&^CAc=No}X+~g?`X(<{f_#4;8pJCgd2~NeScM_mB^9)bWVTH)X$p)-Q3X zqmD=H8p=iJ^zK#sDCZG-Egf@UTe9gqnHE3gxIhNvDM#pd4b2!k<=%v?IU9q`UZc9% zS#h)GP(fq3I&uFxyN#YALN8z|rpG9_oix4y^h>x_ zP#Np&T~w@#PvS`!R~Ij9oqYufL#G?p;tX(wEjJruD{-3@Hh)8VH_gCzt?hRFk4Shkoe}&FnRy1+7DDt{LH{W{)Z^NHGjyJo z(J?3Te_LM-;Y~oV$Ay3EhnqzD!|0yqnz{h|Nnnhg1h9M#;Qw{_{}BFfq2(0+Z$sfd z4|gZ|ys#LKva@KTR(>?R80JkR9`P2#ZS=q<=A6awZkix=$Vao6gn5j#|22 z1~ERz`RaOu7BK4{!hCL|C&HJ@pZvXnb-U2IbjJ&rbw^kjdzjCkJco~kqO2S1sL0e~ zp>;Y_kA*JgnR0LY)ll&*c&ro;qF)cWxBZ6rc`+YBPr}9pO=^w~+(?;cSr5X#1F%Jh zt*u8Uu?|4gK%!QdZ=r)d7+OyuQ7;dQESR}IF*-}%XIgI!MJ?I@wDR9;{|^}xao!rb zkg{zqXD1Ma-mpToEfn3kS+w#x$|n92x&28|=-{c|ET6UzK`lI>k!JnvY2#O{ZT)M4C>;0TGt_L!p;I39*4`{;?r{8J8Q6JL^}=40|gc@%*`G z*2}EuSvhMRbaVa}$~pEmFSGcBGlATU;u2YWnYDqk_#O!E!nJ9g>;tc$+Sv;;rg`l6 z@FsI(sE*1Pro-9RVOXAQ47EK$!+&awg*JyWWRSAsB;?H@agaoFHqG%6@W)X~YIH9)%n&3No2LfyU5pTb7 zHPH;1mT6mTHjYW*tD)*`l=dqD-3y&};M#m00?C(RX~VU73W0h2n8C%G|81KdEd7Wm zch${*GUU@-ZnpGR`OKNy(%rPS-yjcf@ZyC3v(C^qZ}R~_pT%9@i)-^N0^fca4)Jkq zeK7*pz8otNuC1>|;0>?9Ye8IF-;6-ZEAbSHYwJA-Ja7{_0IsbMBJlQC;dCC?)<+O{ z$E$HVkBe8!yJQwD)`-1?bwfDWM_Hh1X}kqCEVy{Jd;~x4rT|sTeXl_P7rXpxNYB1h zR85O01UrrdwtgMJwtvD2KQ7jMR;o}vyauqGXqx|I$nW8DReLl+{pm7Y=QQ`ZQy04; z?Vv?*m0WpV&#@zO3o|E1nfgC|N2H<`yZdQcOx6Fzui`Q(qW_9-s<`5EBtcj4K(bf9 zo0b2SRy6cVBYpW_@y?1X{x1rvQ(Q$yOM6bhW`5?_5!^xiAHNf~g}L|G!psO${}+vy zQ8GL$>i^>Qik@*=vY7ZAxiwS{%S==xt3e(79Sw7NUYp0r@PG3t+uTeh>0{0KbYK{t z1kh&z`~!h4ZA}3pl$t%$FB<51A<^{J{n#c-6ZTMEYxR)dT0N|cX+sm~63h%CETXyA z>mgyij{nGNtC6-hcI@-Gu^sy(|GR>s`s`>C=Gw01Iz+yft-@(r~Rz zBRBITrKxGiYib%*CZWfU41+g=n?BeJiFQPBw&KtCaK)bB6%+LsncDZR`7$se4r+Ij7)79nbKX9+%Ph=VPyJkKz3}8k%5_cvL>}* zWJ;KdCXGyO7@7LS!pPKyk*OcxMy585ObLi;Bh$#%6x~oY4>y&JzP2(OrmRqd#+8v| z6h@L%??scC0veqsE$b|lim}Rp!0ek=l0vK)COY4;qNEoqhF!>sF;Gi=%Zihrq?nST zV3LA~VhN@wR8@SEIsazGeu7lexb=(hzw=@MzrzpNF-qvp&bO@;fv60cJBDF33fi6F z&bD^utPPb>3p=;t&w3l*39!g={0G$|lM@Ts>3N~HE>uk@#HOrK$tI`aPgv`&BRR}- zVco%#M6{#XlQ0YwiLDRSyZ~}oi^1S*E_;kit^E-y)Y&V=h@Zx9`e&W_KK2RaN0_z0 zntqL9x_=I?@$fxG1Ea_jazR;S#Twe;34)<{6|pwB7zSJ5uOnam67bW z(|Bu)D}m>mLzPrBBgr}yjzGUVjamE{u#D8xDrQZ=H_4!WnCSoVK@rW zeiDz4%z+-xx;jbHqTBEXSAryIl3b6_3%LZF!>gB(=wk?e5Lfbz1ETmpLbH7ax2nLZ z^dkJdk~ZU&or4AkgU-<+=u>IXXu;ba@_m!G&OzE z?TCmgfjaIfq8fc3LI-eFe^*BR4RV9~MX)zMAIYHMrss|ibC2Aj?Y8j=sYR;4Oxy@} z+JT64r)~UBUqqUp!Bq|}AjnqGcyE3ko_%nYqxH6Jq#ke^La)Ji)qJoObb>q5xU9a+c-m_Gls;=$?{C>Q@Kfd$%oJ^nh zea@+~R-HQMeVmfvFX|om@qUU> zQU8t~f1wB!b;nz=_Ccs#9#GU(86YT>ZZpeQy%0Yrlx{RDR?XrEh0+aXjD5NqUCw@t z1^YjJEx=a<&uJ|%AP4_<>qO&iAJU(s>f!wlEDl2Bd^4%w;y_y!d>2IsTV#_(Nu zu^UwaZa1nT%5GGTlijEu=XRq?pxKQoQJ&psc)(!v%o28^;Y%XarqXUSJji3xZZw?X zG0ko?Jj5jdcBA28u5s-~!@IelhK0y(G`uH74IQNwo~gWjd`mDpU(OI{NdQA1%Qw;@2WOcES(B3K%QwhdNnUn@8UZVXYD%Up-%KpuS|GE4a+!htYC{eBoTT~|RFUG^TFZXnd} z-v$xy##g@={zwS*`*WKht0ma3ThU?&^(Y2p%Se{^Aoh(ufX>Ad;krhWgif5is(vCj zgB8(rYe?{=+h93?P(Lv_0pH;3T1hy0J9d^3xR9=JI!Skb7;6*+F5L|2Hj>6a0(KHE z#i)evJQC*a#JU8b9xIX)ykaNr2DuMH{bi`w2|hO8@iCkjBfwt6IKiv>_{U*9h){nB z7d;W9oPO|0m;@ozAA(m&jx4%Q)R6q;pJMFA2=&xM5UwO)$)~}xL&C}20eoq5{2 zL^EmL{~0Xn5b6)p<#}~J|5xnIdy7zNfZX?u-$AEF-ERufnUTg;;)X#!i zj2YMS`t1G!Hh&Q6=aAv`<%IkC7h%hTP(OzZuji$|@5|WYLZ~N$^Xw=mtGS++{|rp| zGKBhhP$*r#FhMoDo_Eo`Uxg_GLVXW2{5gOop zF8nBPywbE=yo4+}fNv&d58yi%Ib?E!Vcz;eseqqimQP1!oNbyNFOcG?X(2_qwwUJa zFOp*9jXFPUny`t#2t{Md_AeZs$-*ha_?%(BVnPZ>C*ih{gp`iU zgYV2_R!pKF8)n~#n>RDQVVd8$R0+6C$PS+S3DZog3`Ryrb9A4$)--!^I(GU1j3z&A znp69wboAi#47rq`7XN9Q*)btrz775JS-C=mabG1~MDB>JDaUI;4w~zq#5)bbiam%t zf*;?c$i;{xe}bDm!b(cAY7UYQAoezdRWC)P=chP(L|FA2MBauUZ>GozM1F}MKc&b? zM9%#g-V6{{-Gaz|{CE*U*^n&YClI+@MzBRq1?*T}jRH130u5XJxGemSD8|+h z{CBd8u+K~ICbMD}RfzC!NB$=fSo1Y9&!-_Bg}Mc=O;@FKGZ~4BGrzpXh5pfSDf6SwN88ot|0Sl4O@LoVyGm| z-;oij)}NfqP_@pH)%v}LSXQOAx`QZ{cM8hmJc+oHH;u}pQ6jDd;&~F`Hq9AQOAU9- zqosy8Pio%+?VF^QH$1QKJ}vFtdfM=br{H1Kd{FACvJVKo)I6bSo^tYK%^`Usq!cVB z>N}4)b%3C94HXVpKLn5fj-k>A+RQTMeJ5g@e zwIwHhPcA>rztR9-asaIPEP3;#0rF!yKVDdW#m18eo#WMjL|f>BF37n zacvqXEiWo+X~+i{HNj8yGEfs#NhK8_j0@2;cbZ@=mZki0OHJV1eN^S}K0X31=G2EU+}6vb^_sJ2>D`LOP77bV zwPLN+!k3_}$ZIWMQMJ+=!MZ4A(u!s5x=Qg2Px*BT`gsZ#3C!p;*{OIHnb<@Zq~b4Jie)4UsS6 z2L-bek*n~7f{9(aji&)m!Q6?+8vLMO?l5Dg9nKvdojHz^K1Jjt1<;=zL9eh^o&LYE zf%lvb^EO>323!Yq5dF)cqW{=_-T&rc9=7fN!NWZ4BrSfJhn*zfVIFppXulbUDuRi| z*-6Sj%%h#8MGo_5Cn;lMI9Y`c^Jph2@Gy^dk|?n%i?)+=mL}GBk_sH=(M}SbvjrXI z(N2=@aE@;<6*|nLog^O~=gj!b9_=KNLOaaEPEy`s9(Ixf4)bUyiQ3&xVFL2qAonnj zc7xPm9_|0A+ORp?Swl{Ix#mDeJRs}ZX3bX&8Mdi3XrJ&8b7X^B#~cl{i9ZiLt|yzsVE zkZ9X4@ScVcJBHe|BuLcsOT1$t(1Bq~9UbUhir8+FpuTH)eZP&^{Rj+S7@M5do`+8v z23+Xzj40GI zB=k+{M6v<}KS;QB1>5Wy zP=d4Y14fMISy)IXCy7UDbcTf=6mpB?_^clB^M}7_#9sz%Imsr*Sok3$dJEz$JS`HA zPvd+#{HRfKH>BNVbe&0je29g=D=uvrWxCDDV?tVP069H%1dbi^lQ1GUAk16C-!rU3 z$S0=M#8U2Rzb~{&r9C`7rD=a4v`tdW!jBvAuOqWoqil2@UrF1nVV@A#O-jYWKQyWz z0(iSoCYip%KQbB~h2$cVOcK9K_{T=_aY(vJvcM%z3dsOnGfSU6BkLNNjQqq{R)+bq z*Kqpr@P65kcN=TZL;sXo?f6?R`cW!nCsv@(Ww&OfC>H*>5qk>~*v@$Pgpqgw?^-A4 zPZ|m8c?-`ZkwX@XY(6Z)pE5#wpsJW38Sm-HraM_Ae2)>sezdQ$RyF2_^^2R^FkJ85s_E;3r2`sv?`mz-!ej3%2ZsRg&#J`D2^PJ3ib9MgD7ce?EU2oenlw5k zsHzITzvRZt`AEbSNLFf53zYJ`&Qj|SkmMU+{RC1l&Z!;;&F~0P{1wu0cA&ejvj;Rz z?aNoA|4Xg)_#5AXKM6h$tFwDM28Ob29sDB?v64>vO6Y3#;$Q)sJFFyCO|@Y)nTc^8 z?}}2gFbB{lT5;l3va=$NG#0C(Y_CD6Wp!D~0RVhxoRwU>iZaz@ygOORu1d;HS7gY} zy`)FVyC!C_4cj%4%BH8rj;lFlgcPA;yZzBr1swJbD={{WlH9TgL^ zbYK-}q=?VV(o2+RW?oI1(!mCrF@Vj?t4ULuX`nd++4$u2er|?>sYeVh3oxA;k`18d z6HK)6vC%PBI;<2#tTe%s@w;^C?pC@zBRf~Y^W)!or2Ba3o@F$T34xty@B+C8d8PNq zXfog#L`Qv!h0@enD8s|VDwZ7>8f4by(`nF0IL%nJ(Wv21jqWy#zZ5tDjrboi2r9BY z>C6y5g)ua^kHw;6X5vx2EZSYz_ddj;IkSPH%x)L)10rsre{P06qNR z!aQp`8TuVA6e30FKT$g0IeHb{P+p}{QA_Him}R%Eqt8YPAwMiHyS;@*eNr_zf5j=o zVL7$6EJ+@hCB4e@jH3uijIQ@yE-R3Fka*Yw$e z)L^E+udOGIj}%2Gbrju#cc=8sSoE+Cz{hq|_)JVD-IGrBb?kFW#G+HhV7Owszmr9$ zbr5}vC)?5A)|1L~pt;0VJNx(aWrxzess7<17M;=YslBO=VR}UH@6@CRQ=RIAHEx2- z^#r@qohi4`SaddD$(zM{&AEJ3TVG%QzBYV5$i2{f0IIWXKr~-!umd+2&?R;ZrrI*N z@hs${JJY>xZb$O&Zl}9m9k8%Fs|&6-$S|Bp>cn52Ik9r){4n`zv%j zKCP9(N5|r>GL7y?A;lZL;>L6K8nH_z|%%2w3>b_dbJMk!-#Z}r27VjhunN$rUUtacQbi;o-SZCz9J9Ar=T-KUYVzFA0EWR zExog^e-Puf8{t`f44O=}Dyqv}(U5UnxrCUgfnO$Pga9?fcy3 zxJK6w_q7cTfsiySF5^_`bvmd!-JTi*P@8(!2J5@pGDDd&G2m&av*_z}R0qEQrQKVH z2HW~F;*(<0H|V&`zRXanH`}(SZC`IczO52{qplUB%vJtNz7m6z*O(7d%&+V6A%jC5 z**$H$kok#xr7VCug0I&xQrkW}G=wqdj--FpLA*01L@ueLH|PM~+&;jKI$#(d40FET z<^#S-2lk{pJ9_#vDYbNuzS*bkA4th(o}9IB(E;t$|AYENV>5aa>nV+s+K(P8P?BcFb;O(YF-`iVFkx_To5kVc>2mj*}PO!lLge z4ipy#?w!SP;=;h)TpTAayp=`YRU9ZT4BWem-& zB^Zf&TK~`xo(O8HzjqNF7G~+*;a(Pf-(o;8E_2|m!9Z~Xkk?0HS@iwEK)NgP5$}}o z1HnKnjJmwQ4;BVG3kv8}29qc5Jd1v~ z2-L|}KtEChN{B4hydAq(^v)u<_Wpi65>+|xS`;bn{T~g+@h6@b3Haz?4<8117lGpT z)z(gLpZ`$=B*uUXd zeswSNsU@UyJK0V5=_RCduBSTlGfPP1TudeU>=F{u+Z{gpgnw=caHk$( zkl(w6Bu*_vlFu(8Nn2MJameq>c4NPzA5U5*4}6!EJ^>p2!gI+*8&Y3FJ0nrwXLQL7B% z#g;|yD~_f|OI9wszE&KHS1j@RhId4*IA1TGsyo$&FZbdr(OQyk6i7m4k=@6l_ZI>6 zV5v_V3;5zR-v1v6M&gz_G?>Q9G$qCd?PENsL*+ubqaQB=d}l$t6MR$0@E1V!a*5@% zSd%}bL*zR&zvHWW$G3Dq8$RQU=L+BR=^w^hKZ`!B>#;!2>`4!Gbc>F_v#PBR-~EU_ zqJz{j7#&922KeGH_BDFjFmq{z@ogQtv!}luJ4CcVr_VcN&{W9nJ31tT)1tGPIyZjYQtBYqmStjpEldqKa}pmdluivkA6>wwhf>( z!+mH8@j}6(-`CXx9qH6wsu9+I`3u1x6o9s626~;x`r|q%)kn|VtZaOIPXnKR&StuY zhr~w86B0W>>76B*=pDIx_JcaHb?1e2_EX2mew4_^HKe=n^JMmf263*J$#%94waH9= zs3Dw8Jcu9p5P0e8K*!MiROa#HB8b#p33^fk(Z~FH+j?jc;FTCNPGWwdVW_y+)6trV zZ%9Xfs$pb4vMao;^D}{~$PNzmWS#f$3_g?2M`@~kcqiKweR*R|vI%?cLpYKIc}HXU zpRrHR><%3E;)~_&;JP0I;XS_IJ_aw0=qrWZgdPVCI2M$jb;Tw}5YPAP#?`uW77^U`w~j?wAI{6~3i0JtZ}-6`B?t z3yh4TABC6!BLf=uW+6|akQ1u1?`n+C0^5YWd+LVBKu}S|Hz2XI(%AeIK&4h)BcMS@ zybLy$Qbu8ahqHU0?khWL0YYC!@dQvzkqc?ax0!4_C`Lco70$HNT7I7S79gmLs#>fmVT>g$BAab_FbQa)hB==#yn zJ7kh3V!1QgLPj+7#H|9^v>phfJyZ#l5>=BZ#Zl5T0-r#EF~aDKFoN0@Dy2ppz!zZ9 zPYikTfA}7C3u173+7(I?;Ot+)#0p`}eiE(!BZ@eO=wSrD=qqL|HO`li@>7%{Y^1(ouA(!*U1+N|gf+tc_$%f*l71DEdk~s& z<@-#Va&LPY4h#q_$nI-qbtOtooT1+^`Out%W(=X37!V&2vWF1=3dvx}^?+&9m>l?T z7?2<|!<6emGfL&V6VVTm2v%ATn&mV#euwC25(4LTByY zGA26fdXwKqHZ6$GN;;i&!Fu!pI{$jJmfE`qd3GaEUtMpmq+YoJ(N`igA0x*&(R|PU z9lYZZAcK+j4Q3^^>BYZCT7(u*YTRH}QxT|nZ!qiV=W%EbBT)0+U^bAb6xMiuBN4jl zM$vn(h3Lfy&FJqpiT=Li58&NHIE}p6ApX2*ep^=KbZXX1WW-QE@TlScjCYukb=15c zLh9QP#Q2>!a6q)l4l#f)ofB>HIj2qPPZ4dh!>p$^c>+nli9i!#hq;DCul*z3LlByA z$3It$)E$34!*-_``9mv)r;@t2C-KmtiJ@258}uBDe@vj9>kCPDRLPif54C5Q{*TjtN(_F7Q*_M zBXR^kW)a}X{AF1P8sr;FWsj>7k3oPh6yO`#qF+~UTqS++5)%SCefKR#U?d7(_b0wg>kR{BxIZzCD*g1<5NU2rvS z+Hr(tvS|H{Q9;Axam4TEG7P8R7zvV{FbsAr0?pmu7<@WEjp#2B&R8`oD$9H3Ng26c z+>1EtFWP8k`slX9inGYLO|;U$j7azfrz|bg{HyQB2X*cW~`xly(na` zE(Bh$4~cs14;$=72+cF_9R85OAK*75{uUua%|2w*P=3i0gC!8CiSH0id^w^c2#qtF zkodz!1r-6$cKHBpZNuH;x3ZkZ0FD1AjPR`+Fywbbvo&I{%?KO9vctc+jo*UFfrzc8 zv@ekgL;YxkhW;5}G(vw;`Rqd;dnlh9z4=5#-Ex_Tsrb6n;m|Af=G9b`dyJ|s6nEXt z&|HP&FGV<&H0y7J(zJ){>Zrx&d`~uORk%(^K-C_o|SjY&W`6zPh7E|zI#Jjl+ z*>#I$@jT*FB*Sz|i|O`7L_f<#$Sy6WTOw+(N(6DAPmB3>F$CRQh-;*cB+bET#19J@ zCT7}LNx~Z-xSk7f;k40Avd<#^A3}!vSK4SLVWVxZl?Zf`zu4f*gDyndNhJBMdJO(J zxEi7>NQ}AOWAJAG7@~J0oRN|(O+$%pxf5zFxI^@WLEXI>(`$#pZ7*9;{BuR?vaPVY zL(h$j$rZ_y{8rgC#V(?5yA6T<87FDXor!c$E~7d7GhFsDgfp>}esVPphM6*hO(L9$ zHhi*`Bp*iXR)lT1@K5==upW*@)d<_@&BXXAfAH=`ypLq)kEi(E?-PjKMH1Nn|HbRS zvch2X2;0z7|HZ3+8Da-W!f&ShUixlC-+^$(+hqBvMYh}{Bah%V@No!eQoS@rlM0T2 z8}5@@svtDrrX9p1KAUZ)cMI|4x+P*zMrVUL>lVHoqgHF@rj7#eV%}(XOo~Rsl7as- zPSQH)OpMzX*HVN02qpV26&O{$f;UL2(qL@}+lZ9wrMwE)Ao>y#aZ2f{s>sr;y~vg8N_?4OOH1?m*q@$x=9#OOaUN~mOE3g4L8?}W7Rj5BGsO8Lh=Jl?_nrvB zdxGPr^n`;41&#d{@}LO8gMyUo9R9YsFa--$G}vf`K_xsJkJHgrnqFw}(Z=6OZTAY& zo_pRHUP+C9YZpb%$AG(p8%b|@`jBXf@L71eBMGXjHOH1eY3gq&wR3ad5SFbHLu#J# zQYoPB6$PdO!OTB5GDXY^7gQMQw&2}_m*%2Ur!?)t^#F4-jSZ(+N|YN*9TPUR%&dsm z1Px6f?dBm^Ws+-2MPv()@8%yyK(vD}c!wbOxC^Ltl>f%}s5tm%oIJP{V*$Jm>_->} z-$J;Ma1T^M*IjWBazBNX8$Kkf-7M;5Kz7lU_`@)wEd0;r^$xh zDoRw3Nhk*3wpCkOoJ||NWnMrXuezaK=4PDiI1{C=z-8x=-z)+zbx!7Ls2@(LFRFV$ zmHMqfzZrp-`m^})X$00u*ST7C_eC_-E~q$_{!h_mx*G6@V(XXT$J0ph3xqA#$pjao z8Z9W2cer)jtf{%m8ERCK3+N7Xhn%}(PSyT~eAYb))!7Mytw-2SxCbPTe`V6RCGs-p_iKVh%_Vc zmzpX37^4Wi)I{pg>lAi=1h*0j@r}#63pooXSem#|romn;{wu3C<2x@$DhlzLWohg* z9m5wJ<$qk0HqM$uxw`^{-+Q>eOa0wJdFP-OMq7Jt0+{M zy$D_RPoxzjr?NA!OGOOGr#}~t;j87YNvrI|e>sA8V(FF~0uzwqQf9Vp{3)W(!lf+O zg-lTuYCOY!ADKX(m^`PJ5?O6#gk#@E$^10|+c$b7f)z}7E&VbEBiM=MkL&Oml)$*8 zln9g}RixdEF*QWv%Hl3OoL)H09{*qHO-ZT!oO<&P*_*3TJ^HuvsMed(HxM29L#Uob zN9qL9tI##eUBxVJlo;Pcas4$jPJS1Kh+wa*BuT%nN8h~>p>%4LK8;ec zh7w_Uft5+AO}`(4@_y>zsI>xrS)zre>pX5*|Lo~1iPWD{2je3xe8K;`5UN16IHq;* zKQ>(*4^YsAQ!fWk-w;;?c!2txKTSA)jw6?dbr^q33p#(AaQ>`EWvmrZToTTo=TYZG z$thDgf0}UqoWSxrEToR}rwQjzl3OH~&YvcnKd*$WoMdqRG~xXDF2q}STIKv{!uj(~ zNV~a9D0lvZV>!RHW!Rd3lL_ZfDp0urWWMvK3FpsI%G=C@^XD1ppNO>$f6IcLKg;oag~u3qlR3_x zCY(R7MS>`F+|A5{^JhQrS|?{XfAXGZCCXV%Ie(gP{=68e%U$PB6V9K%qYPc=PZQ3c zG#Vk}r?7DTG~xWo2Plc8^QQ^tPm+by^1>L3n&3P2--`Nr&M`SCo>4IY2rLM|M_hM;iEBQnq&>)T1Pt!*Jx{ zRg|eN6NVU(U6quZuHX*Cksc}cISfa7rCd1-NBX#+iYCx0Sm@WY&?;K*dwq9FBSp%0 zSBgBoyL7_?%;URDw>-##eRoCK)$LI8-IWU0MOXRm($f{$xeDCJgbTeu>{&*)VV{F; ztuQ5uS=F&_Ja+4ZORQB>D|$w_#9FoDw#l_ynN`Q55gt90S@m&BiY}s?%3l2Bb5gm) zTFKD=pp8PLNEC6v%(?nN2TWIA*a4Gc0v#~92G-!h3NX(B)6JY)2?~9l1Ez~2w~GJ= zOc%hd@?a+y=zv)m1}iS*fa!u@BDe$xOc%dI2TV6XfCHvq>A0S`PGWGt^rM0uF!NB3 z%VdxPrXTHh!1U{byyM`2>B5w!qp<&!4w$Zb$qtxHNfO|I=_Xr}1EwGDR8JX->JFQ5 zz;yA-Mpgl(P4P>0jPQq02-kfL4w!C6i#TAqK&Nb?Y1;!GFkSc}4wx>G4|vyY4i1<; zUBGCB1Evqeryv>Oa~EYeVEXh$958)IZ#{)+DjYCfRDc7fUnxrCdQrduQ-cIJV7l5O z4wx<|*a0(0pYMR_q8vLw(W5>GOcxjAfaz+*DDyaA`jr@*eg{lH#N&YJR|Yv?x|kvk zm@bG{(dRY^2TT`GzyZ?*EaHIa0)redJ=!1#Oc$Um&)q2j2h4mmrcICoW-*}dfLRQu zJ75;WNq0oyfLRQvJ75;W=?<91aPq>!0karTcfc%$(;YC2;pBzkFbN0DVnE#ivlvcy zz;tnoIba4M;qQ^>fLRph__e_Svp7(5zzhP48-Tn%caMMrW)RRZp?BN^;D8wfbgc0m zARI6Y0R!FL;DA{W@AzA3E;4YyEQoj9!j!iO954%loy-*&4wwbOPR_!63=WtDp-#R6 z3J1)BP(r}mUpZhF#N|0)E`oF%FoSUXi6=&a?tobkirbgtfLRcf?|@kls#h8gm<4fx z4wwbe!48-~@TE9lE}G8mWOwNR2h2s&IpatTIyhi1n#j4BN(2YYMH6`)Fc*h=955G! zJM|EQ91fU^CUI&ZlE49T(IiW9z%tg~ZD+kQyo|{%1IAA{e ze6(7@0rT0X*RBr-%%Jpz9WaZb>CvJ&U>1WGcEBu_s(=G#U=k{e?tobkl;?mMgv2d1 z$N|%Z7IwgNF$EnkT}S~3OcxOBfa&UsIAFRUwG2jw1v_B6(1H$_E~JP9WQk~?6!5T7>R0n>#BI$*l$MIA5$p?(KU7qqwoCdYccD?L7waKH?J6mYS0n@ z^0>3%aknVg^|-U)aYyhZ&YQW_!;J=6J^c4ekrUeCH7~-Z zwM}k32n}WWUm|)or2Lv#cRMJA~P;sO}(;Wg~5^tG$Jp(h(_e|5gR568g_&?>}`m>mn773 zBWtNgovAW%cZQq&NiUIj~S1Zs$Q6^*c);V^jvcbWt!ekwJ@#Z3k~521msl~_(g z=;w$&Ng_3b5?e@o9uADpLRb?vYC@;s>di++CYe!NMYF0I$Mndv&Zc5vo^v*MIn(P) zYzWO0FK8J!E+*N}5q}W^W^edJ6TVv0a-G!t5z?1x8nm3Towc;eCMESvqiM(KTTjD5>eeky zTQ+Ukv}x;>O--jAKI=^UnO~U7oj;z#S@Xmwq9e1T2hTsY{jAeSIo@!4Hm4n!nm%nHonqyupMeiDj2}Ji=vil;Haa_x7>xLi;@9-y{m;oNXh7aTACZIU zikI*sKb#-Vvd}-n>?=&R2LZNU%9_Nn0(rJpL06;e3R?w@VH5{h1(Dou6+|Omw+ebY z;`vrVw?q1W!zzd-aAB(;(iXM~BCW?N=!*~(unHoq*DB~fNW4}-4?^O#3i>uAUaKII z1X%@za4XpR|Ez)vS_Sd(39BI9-#)7#-pg2|2&*8nnG7}v3e#|{yas`AAd-0vf_@E2o_ zCDjaqNc@i*1gVUD20_%k5pK&_Nya)~#I<y$78J_{ zn+3(PKC_@onntH$^-#ycjrb2kQ>XMNjT9-fASuc-3j!?9EC{l~WDqt4m0{C80 zA+w;uFzhWTvmh75tt1xZWq0vQGz)SQ1egW+l>vqrFbnddg3W^RP({sx{Aj;fkY68U zvjMXp7Zzw1Lj3Y!7BZ8YI9h$ki4x3vxlhW-;$oNg9W4CgTmDhAZef{NjEv!G%)k6BPLpl%ja z45ym~xwys5f`X7ZN6j+}DvHz1f{Ft*v!EcLxB=pmVU}So^>%CvE=b{<1z$|F#=`{lym<27G?pc`yJ@?$S+Q2O6+2^Cx3T8pi zKD~B*m<0u;FKiZ63{8&~%`B)Gw6IxFu~Y@jf&!EH&4LPo^2~yQkhrA=nFYDf!e&7( zrl47n3n^e0TF@-Wg%mLh$_M3}1-Tghobws}aI+v6 z;?w4v1-Z~bvmjT!s98`T)NdB#f)+Om;@IM5K>?5gW80W@{}0%Pr+>!DbDD5Y$!#UJH_*w)bvWjIEkcr8%xpiM^uI^^mn7pBGuzK0 z>zomMg*}6iB>RjV@rwWpH5=?1h#I)X%(>iRrVq075Xhe4JWkTl*kZ6M1a7==e%(B- z`4FOCCy_EzXY_9Dbj8k*@Vc7cl(mg`I1H~Dni7{;%_A# z`R&F<`Q~?++L|{tGd6KDlPBbPeH&o(&p1g15-q(cMlJmrRO1r}NivMtw2}@F|BC1z zNkomh>9mWQaL&69M1BaOo?9%cr+MP}4f8nG;@!42N|`MHayi1Pzsu`Vg;telRb5f% ztKAi--6i18v7dQn88yy4O4*pr%6f1+mV`;C56bl58UW~@agv%&R3%YISN{U8{0RhJ zl|(aDrER^zb|56VjmkOH&F@9@CK9P`u3kan>Q;kA5t^=+MIREEVXG&mV68GSMyDaO z%vfDUg)vV|HjudkGn#q)TBN)NVa>;6>hn;xS_D)Mt%|NcVWD=$=9RF9B91Kl--`eD z;r~qlm`ArGOSbAOGI=+W!ZfA_qlyA-OPY7!e+sZUX`aOY6v|I+XvsG%`HV@XCHL+4 zr<#_){A6PKj1dgK?8Nl`?16=;(dT4gvgt~3Z@{GD|BNf?I61-_|5-2z1#`*-7>%Eg7g|uvff3U-dw$i2U!aTVhq5M4A)dXP`*I+zTFf$G8 z!~l)px1RG)9l_i8c$6*y+{>dB0*?||LHRAFLf}y%xo$BP0*?}%`YMa55O|cx@Wg8| z6#|bEnVM)8Q}`|gzqIAyQ3`=ai3(JJM=1mzr8(piY%vuAj}mEvEv7=?Q6jBlF%<%j z(!&r0SWJb$qeNKOVk!h4rNI@Q2AD5MWO0R zAWKL;iSNL8XILdwlSZcmRo3J8H{7^mEJd=2MOBMfJ^b(AA;~wE`W2-4#!_S<=NP|) z+n1lhSAl2XZ|ofWiSv1w@EX5_JMC9PSFMa+!l`Pi4Xc*MFX65zB@1(aG=2&1tY|l(n+(i$hlmnq{?h8vXhG| zsSl1KZ4C=g;y=I~OPk2RD$+<1x3q~|qC~ExO=PfvW(r`grA;K$KywAM085+5kgT|x zN6OMBGOQFnOPk2kHnQF6`7&jR@u@rAi6 zvhTBA=#@(QK5KuTSlIVj`5IJV69~z)&YDAFUVTUo+<{zmJeBL z+0#0R8?O|#*0N`G{1U9S?9258K5H#|HeZ=%k49fMZUF`Js*H7Xsu;0`(9^<;}$YuPW!hdb57DDYcr*&uOp z>ltjVWrM`Y#fZaGm6c8&TX*0Mq3`&8y0(C|mi;;%ly9wNUmL9VT5H*_*HMM7wd^y@5VYQP7$Q3n*U z*0SHE1O3)o_M3fLzqOYA79F6DsoW_6Yc02&N{y-Ex7M=%tvFCwYuW!^9H*?c?32ZD zj**6u(Io4YCJBkC9wU+(P;y7ikW#3#J=U8jm?`(v zi{q5Fmi-zv4+c8t zZB7|st>unvx7N^39#0EpYpq2SITurjV6C-iBG+2WzGo?L$6Cw&+!Elv`2cIJMGNHALd*+TYb}~& zQEM&x3(qAN*S^Sxwbs&0;o3FXu+~~M-IA@f>@WW#xoNe5wbrvQl~yZQYd!n)+Vx?r z6_h^MTFbt#IGP?U(pt;@T5)KwwU+($;;90xwd`*cNTOS7+4mO#d91bU2ZE8frTVS4 z><4vdu(g)`O&t?xtz|!?LjtU|>~HCSd}}THVO?LqTFZV!2dQ-~IxOE>%l@_w4Yby> zzoSD6SZmpj27$cRTK0E!41b9D?6H{rm=5u2z1CXx_jG8UwU+&TU0u{#%l<(DsBW!g zKdys{TWi@*NNiziEgK|Gd@gz+0oGdf;~LUk`03VKHb|WEGt+IcY*=eK2qzN{0@hj{ zM4q*l{o^7CWvyjDseuYuYuP{1FmxLUu-3AFs$q&)YuP`OxTRQYm4U>G*RdGbwbm*F zi4(y?g9G?>30UGlpbTSz^7c3##WdjiC>{M+(GRt^Wm2p(OgpuS8!L$iW|^zV_73+9 zrRgTz)|u+WhI(y!&&1Tw@tNFQJFFkFM>b_QXYsk519LOEQC4wk-Aj-@2s7tkHb_jm zGn*csIy5zXbc$7u@S@h@6d~I-cYJEp)!ZrSOqz7Zws9C|^zXkcH#*O%p2^b;<__d$b5o-^R&_xr{~}vh)d{bd zeT3#x9ECazx+H_+ePx&%BsHX(`SxP z&5s=G%Z*Q?^z-P$cb0iG7?_Y>%H;YpkSNTC*iKghEp}{f7sy0<=sdi3I?;n|T zbRW}onT6Te>2Y4~WwE?8e3%><8O`C?7sqT>^Ew0#H+pb(dWy{8s(w^J(>*dZMk%}E zTIO2H)DhH{RozfPjS)XTGJ#VzR`sg_klqD+Sdmp-oX{@NF@o7R*_)d`I6c;Z?=hl9 z?$q^s==6?Ejf_*y@oG=f$w_t3s5+`^(7xTd$r(yn67FY8=D=P9T`1@Nk!G2oyKkHTYdz-4Li9oht72%8*8=v2PS56?Z;{K zzQ!-^fxQB&`l(;sDNatSQgvE39n*)04r2O_p)BG)bZ@<;#!MK^&CR8!Cgz=DY))!` zu93O?9H(;@ZCgmarU#)A@O@PH}G_kt-_G0oJ!gz|+YRb+7gSk1H z=VO~$tS(To1>A{&imfb`6bgQxo^_upEY?u>3~wbmXwSBdqaV~0hsBoZIw<)3fVGEH zspSH|n^Lsb3atRLO;&0mdW7s0d}S=Q%BSd_o*biUH~Qpi6tGy6rsmLbT982Bnmb_Sjmz83r;Pll)dZfoT<6=T~8A zp^~ll>e5pKlelG)HO&#EYz@?Qk$EADo#It?&W?VrS}N42Xr1Nt!70 zQoT)AYY!MIv3P>S&e9=t+jVMlwyx>u=q#W=~*virw_tg#0%;6K~!^kQE4Aa_J$X9u@9s- zv=_O{hm?)(1@-tqo}uG~_U1$RF!G}Md?=?!y|8{CO!cl8HQ+<-7570e=n@YIvskI+ zjc?GSr+K3QVrFGL`kk{AP6k3h@SM@#v>esL?KbeOoSH=%KY&M+{7i&M(a7vhIC$UywRAb z_YJ1HV6RTU(Tu6V-L%JZHAT}sJ*l1Ov}c~tV!dsdT|kIjVUU+10irC)*O9$g^G}av zW{$J!Pp{NoBGg)^`kY2hN-G_;Uaki9u=~c07mg`ZklltSW>~yv0_(akZ9u zAU8XQ2Oq1RSd%Z6OUCNY=sKqqmo;lCKzc$(vM{w?t4XQUG>tPuJ6ZKdbxj6qHd;ee z?_HEzg3t1aAP21R!iMd>6V(Jj9zEe|(y(V2dcUoYwEv)+1(_M`}9n`0v z;i}Wrq^e(k?^lS+$(M=hvr(8eCs@oH*3!vs`;aqF_ax6qX%=W=4yTCT#2`^nicv^xRR?Lskukj4q$zi!(5n| z968=cZ@x9l^eu5p?7XMd%=lIAdw9)bKApTd)ZC!9!~5}krSk?_1#NQA8ftz}!k0S^&Uz}leAM=Yvsb8pfy{Zf@d#m1&B|c0RNt#l z;e=sUTzgWNi+XF?r*v&*VP*!tteSdE-@&JAs%`qZkN7q6b&b`9y&LtT)3aluByZ3a z{31Qrw5fZWzVD8)#kVEe;iz5rw9vr4suxGf*@^iB*~4?k4o_w`;h*njQ~%2(KiDjS zb%t2|uLQOy-HtKVo7vmj!|MN5M?2bLnG69A%F~B&azM9ov0kY+j66u+^jMD7x8^Ib zn!%pl)I9DRu<_OcF^h==WYDVwLV#zmz8Q;8jr00U-JRDt;sGcxAIb_`1S*`%MiDR@W0IPqYoup%f zq@$wU5OGG78*^bJ62_N{xJdW>{LCO73DcN4=*gb6Lqh|O_8Y#Wotb{MhNyqopHf#= zmWiUNYsz7Q&A>_3VYOv?qhKP*nZW9I70_&9^>_MI&hT4X?#)dqkmMCUjW(Wt>Ql+? zN>u1gPTk@Z?TiY&$usR4I>s3u>{0KX$z3Kt!H|7I0BUXw>iOwW93Ccn^7LK0x;Ia~ zb9&}rjy6zb27P%5x4O*HC6|En?~|f|h%v zq64YqLBEvF))wZR)5_$d`cjXQc>$?oEcq>c#fSCjK|Gu2SUbm(H|Xm z;R9cp(j?E)7p*c8Awd_}(mjF6}r^f7_ z#^W)0W}I*Ei`AYhzCd3MtD6%`UaGHkm6%eATHI4iO#^DZzVKD))eNAGKbE|^7zC?Q zeU0qTfiCfvVgSB(nEZ%tj^fXQAecd;hq%#Ea^6f!du|UZjouD_T zBt9wW?iQ;I24*LwxrJ5oZ*VDG|T@`R;4MBDMuzscxkPENht?~pxbhl^maj&pI5tG%U`K^Ac(1AA{ zSOL&IRg9ox`UwKP2dRa~w{=BoYIK^OIYQ~&?Pi)q#q@^4R$^CruveT4(fJjQ@RCn8 zYi+b=c4TIT?@h~<(H~?sd`#`k&GUPWu+K{lwrFif3iWgw#4a)In6l(YbO=34$qqto zvNqhOZxT9MET`l-N5gIUexN!Rfu|IX({{3kQ}u_kN1Nh@Ck-DF0KWNy#RqnI*fME0 z#hZoP3;Kp&U)|P`%8~;(TP~gTu(;1F9bZqY$G_4f*dxb+4ga5hM1&Dr+hOqPD6 z2HWUJak;qDCbIDL8>C%U93x&boXQL_YsEVg&3)jV89S<;MQp{*Wf2gNuB@d3mgOcgYWW!6!rc)Q)Fo$1@!`c^TS-#BAl-)6esYHw*FkUh&|_ zQ6cZ)az0b=q?p3n2hC?SDcCAGF8lzwD~WH4ijlDr+hVYP1#e_Y^Cp}xfk97xD0US^ ze~U83=?76>a`G4$G!@~pG0NAS(oea(PxA0ZtREwbCdxwPfIZe?In=B>#B+FulfxN^ zujbzg%`TF*Y6D$Jk=jwQ>7Q|OjYz#n*-LrqOC=>>NWOYm<9Yo`!tIRzw~2#l@E^4mL|1m(tHKFc>K2d2@N z=nnJrNGYe7dLz=TmpjuCZsqaaBa_$-NAx1XfQiSTakytU1{ZtiJWw3{^S;`LflJ0Xo7(7Ly&3&geC|G>C#>T zLK6gpBrP}W$$j|2_@p$P)Q0p7KWfY1a1A@BKo0zwl6gu9ShBOo+E zK=^yg@MsS{W4J)Z7A6P?X*6mCgeC|G`2f`j2u%n=aNGf@6L#w!? z3CRWTZK#n8S`serZK#Ro*$S#S;=K*6X|Pe45GM@`zkV6jP*Mnn->{OJ&!G^kwjvfa zY>j;C&Wz5}{(Z@Y75{}CA{NaPrIRFrCFgRTk}49xlAT;!MNPOKPl;L7Z#y}al zcok);%bd@ziZ*e<>hr5Y?qi^g^vb5{TR5EU!iql9#|6cx5<|m1{e3&R@nGrZ)A@`f z0kay7nod-uM7mB|HyZK#Fr3P>Juv0OI(TSsAB$OIW?~wvn`qZ084_4Ivw@;4+AiV; zMBJju33-W@)*3fUNEVk|jnV4Z!-yv6b#gO{*3^oIrRWwGtrfR0uHDL_bvzp3(KA`J zK2Ax|!Zgc&f}i}Zp|~2O$38^#B;c>bEPAOBS$GOduEyxN5G|(% zb0MzAD!N_n0fJwVI#Fj=v~OFt6FMQ}?27j7E!1_2hcL^(p=^U)k>5hqK!x-Ov%#+T zex#0AcksV-B`2L=SG2*d_;s#)i2tQKwSp*iMH}pjl#P-*?20zn6)CY&NOnaV?22?j zC06W;HrN&EDoU=gE81XJ{5r;lt0Hzq8|;d@^e9*@Nep&HpIERf+F)1oD>%EN4R%FR z)VS=5W!viMj#r3X(HgHQ`7JuP5WAuUc12eo%&usGU6Et**cC0XD{>8}UIN$^EwC%P znRCvq0Cq(S?20amIF)u2ZP6YWwRUu;@Dgnu)&b=BO=ha;o^-0OV_()G# z(M9>#6|L9gD@AD>iX;o{iduRfyP^elMORyZUC{!&q6^ArSG2AT)_d6%EwC%PxfEts zwBDfO{OpPr*cIJe#3*yv6)mtU`jxQ#?(1yFeGxX`sSLBO%ZE7ZiWb-v^V09j45fPc z4qkc?8}t^~6qZ?=gk8~klMeK=D_USzbgu)g zpIy-cyP^wFv@-6L0J~zo8q)@wtb;pK;1i+!2X@6`IK{4LfnBi} zPF{F3v))!5C@u^f*cFRqsMr-PuqzhB$qR2`7T6Vw0mX%Z1G{1|oMKnBz^+&fCojB} zSzuQz1{4aEe{g0=uG%b9n|csi7ed7Q!xPxP9kf|L_2_z^)jC1QUwqTe#MH z7r`lZMGNeTMKkP`?1~oH6@!4{1|Y9b?1~oH6@!3uSLC+a=x&H}q)L9mm#0^d;t>}8X)z^=G>zTBhB0=r^CC?O=f zq6K!vf;bPmq6K!vMUb3b(fVjGjz96lNKovG*4;&*xP5VUMGNeTLD%K^i80^|RIn=+ zgzA+ByJA6H9=oCicEy6|e0D_(?219~V75b-BhCW5;-cxC!K0=7^b*oJ<46rUuq!V8 zVk!~X6&Fq9vMX9(S6m$Kuq#?%S6meC)I$t%uq!T_#BDN+dS-!LanU4;vMX9(SA6!l zXnh8D#igfrc?d1AD=wO@9}WuH;UT9y;FT`?$qFuS64UvV^lV(|M4v%s!cJmbEO;X#}(%T3}b?STA*=Fy#>Yz!umQ10VtHiWb-v9i+SP^JE5gMF-+6`E>3?3+##x!pX#g z0K1|Gk;krRfnBj6La{4aU{`cN1=tlWuq!$kDsBL~q6KzE2UCPy(E__7;mWgvLp@pN zJv;+)}+m@N{U7tFrKa>uag zA@nBn@YBTU4Xoh!8He?%#cfGDkVZ5;ttK-rm@JBSb9P1M37?pqm=Ym!bStbdYRs1#1~E={tm? zJlcPB3TAG?OcO7Hjg_suzLZBMcX(t5pE1la>t-QOqL34+vhQk)TfjD9lb^bwWS~fA zS+8$w{samav7Q3YWJwSbFN2Mxlu^jv;jH`vP4^&ivKW7+!(0KfO+LnofnBoA3Xp9Q z+())q+0GA)^2j#%QRR)5?_5)yY_rCp2nitDtU9$WgY-cd#}}eyCQ&$jqsw@ zkg1b!*LO5`iaK*6C=c0Y3}lPvd$-#X+{| zD&h;!kZn3r z(K3z-WSfpEk8CpzvQ1Y@#*V5*;~?AgYG9F1J_vD;ZMup)vd#ERsje0boNY%>nB zO;_h9+l+&3)78TNkVr;3*=8JMo0>*=mMaf|ILJ0#CE4=jT(ZqL$TnRiimC`T;~?8~ z6@u){(SdB!)j6*G;IfHna*-xYmT3nZvduWiHnpT0*=8JMn}M2cVayu`*=C?#P^HB| zwi&2)9W&w}+YE#VvduWiHeGc-*=8JMo338?LP=xvILJ0#71>iNE9W@KHeC(cw_A{H z#zD5J$#X$un{kkBx)=}HW*lUjt}2LZGY+y%FCvd@GY+y%7vhj@#zD5}6?3x9ILJ1= zVoA0c2ic~pfQPD=Y%_juy{4AS0-bC#4zf)*y-v0n2ic~pkvBKoIHW^Q9AulWT3N9! zO12pX*(N2c;g-Uj8!Ayz6T*>pjh}2YQ7Pp7hVR}8Sfa`+=j4%zm?qT8HWP78q3#AO zk!A*EnRGi5gAJrxot!$}=oct0{G|%|uj<-?(*=AyyuEV2<&ktC>IF(v10K6$hd#%t4z#D)iR%#-8gebDj#44Xc^5Y~L zeR4GlSfWYOz^>jY$7-)!k!>c{XmUZenP~QlyHWM3l9r^odWSfc8@|8sJ zmN;F?v6RxtHWO#)@O-k(#3o(ueZV9(>pG04z-LKfi;lvLhpI^Hio{l3f#l*5kvLNq zV?cPxHWS-)bs*Vh;w&AalWiu>)-^iWW@5WfgP}g-kZmS*__RbCD9rL%;vAojy#Mhq zlvJ0AbMw`LY%_75Pou~-6X*LBiXDT1B>*X!9u?YDSi5 z_o);eBTIDnH34LsiOwL9k8CrM@`3WmHWOVwL_XPOVy6$1Pqvxp_CZv0db>F7Lj{p- zCNB1Y^oI6kx66kNBHK*#_&}bazY}3^_r2yHcD^+BhwIJJcrBrGapoU=KI(UG?RDyGb?Vf)1lvqf!)SC#H`ht9&2c%EY6RO%GG(On!8SVy zwwa`>`y|+A=NC?^%G1zXu+2__Z6?*y!8SVywwdIl!fAFAY_pQ#ZB6N1f^AlES0))} zfGWE7|E_o1FyP%w}W)1$Gi_Gs(^d+w3IRrpuc!*k&ieHs{GN`dGm> zI|;U#DpWhzW+%ZmQ-vl7w%JLr%~Yw0f^BvZY%^7CqF|ey1lvp%n<&_3C&4yT#f}wh zvy)((u4rON)kTQgU9ingf^8RWsOTC&4z8BH3V@odnxV^2P<*>?GJ`k{yC=b`oqeNvsiUvy)((Nr4){HaiKn znG~oIY_pSKn@Is66`#1|ItjL!5W**k&d*8*HUlppcbjJ?1*+a0+fC>{7t(-pf5NtC+ ziXJ?&19t6Od^sHY_nFbLRj_?Y;%G+nf^GH?Y%|H$G-ES;55YFGIq~sc55YE*9FBhDV4FPz+e|Vl!8Usc zwwWZyJ5mMP>>=2ua=3O+(-r6>?PP{ zb%`W6VK2cpt8?RMhrI;btj=@6HhT%SS)C!92`&k_UV?2_=LKQQz91cJvzK6-)g?2* zHhT%SSzRE8t#iHTCD>+lfl9E=UV?2_XW~quFY5IYY_oP&a#GAy^!8Usdwy9%-;{@C6CD^7b=G4WiV4J-J+e|fI6>PJY zV4In$sd$>b1l!EkOlJ~oGgC33Nh;W8FTpll{didMYUO$fwplahtXwa_HZxfj^ds12 ztqiIVY%`OS!e@eQX0m*+&0d0Sx?~UXbg<1{f^DWiK0erHAHg?7D_Rem~5 zV;{jbtFo&?HTDr~v#NxPS_j$quuXjg+pH>}9cz+Lu+6IcRM^Hof^AmiW`Z;J5p1(6 zKONPok6@cs+3EO=eFWRA&K@7bv5#PzRi*r)-1uOdeFWQ_plB+PSFVp>o35C{HGjYy zf^GH@Y%|?LCfH^l!8TKw0(1gLf^DYqGOI|i%~V$P3KDEHm0PuX1lvqyW>=12o2k6? zsu656m4ii>_^-)G3AUNa&8{cGHdA?-#Uj{dI;+M)5p2_yNWdD~hx!P%nPjc;cAVHa z(?_t)M3RS8hPx}*N3hK#M~x-3AlPO$O9xVY1l!D}W@BmQ`UtjptO5ji>m%4^QY0Nw zGuKD3&DvS2N3hK#Q|p)n+w3FQ<^*|X<@yM=IYH*xxjuqzCYd2@r0^ivyZQ*WnaQsX zw%JFp&7?p&*k&KWHj^9$+w3FQW+o-s>Gct8Gm{ku+w3FQX041^*k!8U7U zr-E(v5p2^H@zOdOga0CO?48g@u+0=Vi;HEX1i>~_MFP`8PgS8*u+2V#Z6>@eZmANk zG6dV~BiQEnp;t-;|E4~IZ63Fj){S7BCr}PNCfH_DuzKVK+e|X!k=F{g*+;NVSJIt# z9WU5sAHg=qx0``2!8VUsLUSb8=5fj}KZ0$#LVme3%E#|{50vr2Hv0&+nY3ITY_pGG zn@Mge*k&KWHj|9n!8ZE{w&}{G0aYv5W*@;elg6rpZT1mtGs(>c+w3FQW|HS5Z20_f zCD>*k!8Vg35~b;2o0AE)StB8tKyIp+A>LCglYNm3wmH??p=#tO!8WG`lhgPvT(HflUS`y2A{%UT zs%QK)%7tK?Q$4e7P)N%5{jz8Nzb6>qKBwu{fD6B&BOO!wZHT?%R1!9C$`x|`YGuX)b{_T1YJ~1~;AVIG=Jk6< z`L5aCUHT<}{*1St{-&DQTGiZ)xAlIO+^F~*e`h3ZY}&SMJ4YZyX1sCF&Kpz@sYeE^$a=FB+b!;Cb~*p9xYX=^S8C2E32}JOEmYIL{0G)vP5jfh zlC_RdsB8Fts>=O(97#2PnCHvq^0UkBag85Q`p@}4_Y+~7Xzo9!lK&wYczdXOMRwo=iteTVW=;13w^BL(H$SOs;Lk|c|Cy)vEeNZfi+}Si zT>~E^Pyc70(U;r6jOudtUI=gc*9$GXoljFPAll&i^*3(ZzG>TzpDDC#4AnTCZ^uD} zl8h9_5oY6~2>Rx8`G%JN!MfEIUvYoM6z%$v)Btk%*1obJQS9Jvq{8)ae7DLdbNRMO ze@{+>`9h$jVy1~E*GcuT@*l{(&cQgh?B58+8!?e1DSjp(uL19U?bK)+i9pssa+^G86WuJ~jA#^6*+8l0hMYv*(a%oi)b{5uMIV1^=1uC?m! z0p&0DzkF+cPO-gYij#}2`L_C&ZeTGxS1K(f3GUaGGsO!^i%aL1R<;AHQ*!#TA=UcS zXcFa>Uf-TK#ge5wIe8L_%{f!{uPfWn1IHUkP;q zo;0lKojFzJDy$yRZNktT)cnw9R`*F0vjC9IbThlVI%Q5(JtS)dAn7B`tXZg#TykY|xwBrwnw_0pvqDcUw~%hNLoBU(|)U)?R-xo9fGdVT)s6(!ALxU{x(tsBV2 z)#>(HApKgKJ2RftC5w{hODmKHCekXj7Roip7*?)c{(xbVQn=I- zFFEWuMIdc)vX;NS(oP!3I{cb;I%H%KVapW^?WTIbsh%`a_$BO3PY$lkYh@0(+~o9> z_)bE4*16o&Sc*)GrO5Pw3aC7mz>TwnnnA@Gp>xNg1H@)B{M@Y2Q95IGCXG^avUnw& zIVFQe4*O2clyaCgH%ZE(nFd#lW>vEMn3!VIzzp+=(l85Y^_euLQY4`Q_E4xHMxDlZ z{gLx2v}hWK3B==1VN==jok<=wT2dI%8aF6}YEzSEwmVkbUV`S@6i7U#oz8fPyW%D8 zPUBF_2zt^J&*g+vmFa*~>Dg5wl~_(ST8Y0;%K|!sHq+C+sR3}z^U#X?0ka?gvSy0C zir>wO`7CCIWc?)?C%}R1!kZMkNi;p{RlA>^)nw+CWi$-Fl$ofPqD@)ARLNZsAc1^9 zq;dw^d@GaEDA1C^D&Yp);@vBHB^|_i0`F*#Yk(c60J2U21Wv;+bKRL9Na-1en?g0v zqQaH>vTVUKqsd{uj_kpU%sM&Jof?w7=x|BXGNl~N!-kw(N(q?$N|NLJ6Rdf%vcJeW zd`y#*Vw!A;Rr6M_nzvOe^X=6VuS3c^;vx}jUPJEktJ>{V=$=r(t%onro6%H(widQ8 z)?+7Ua;c`=DX|_qHQk?x^O!`QK}0A#XeCZUd$M_t*EM5BpPY)WIn!fnK;u~{1kVz` z!=SXLaUAyl?_w(#V?&$AhW2V~=%~hq<89@B&S;R`&P+>>CfUwRueF`&&u(XCXgf1= zQSQ>PrxH$$Tg)`lUD&H4CL!~5X(82dmOmDYHr{Jyq`PmuJ}V$I9KM)A>V^tW3c@lw z`V$z>f1qRFN?DYOZ3~VgBq$~BG;W9Nxf7C1)`gVPGEKPU1WC*zGh52+QaQBwc_P{` z(!&0miktC3l{Q(~y@{MBAA{hg)X;~fdLop5Qzd|^l&M;JW?Blx+OM`TDa?T(B?Cn9 zOqA0gux6+9pgDdUeo94Q64fWhgHuy#d%SH)X*Fr~b#gd(GK`MBbc_S_vC5$xOJx;2 z<4X^w7Vq*nU6-vWi=mC#YE&($>eI48JN3BRltz+l-bu{RsFaVaPVJT7nwxj8Fr4YE zqRlCNp&Vy$Fg>1Mw}hmW1*9ezR4j(qsl64M@N?lJC$murWgYl1J;#7AI>4uF&@wp- zrCmV*K5KF&p%j+Jm%vKd6x*ONIR{fRd0K;V;LhQ7lD9#(#5mO&<5XL$xU_r4rK8eN z&@(%$(ScoQ)$YT~gC4KO_G+UN^9wgnpUrny(>B{F>8T(HGD>XddRnaFN-s$axnWBE zv5Gq*D~Mu)bCn>PRZ9@f&dQ%Tl0T;afpXd^4?l>}2wfNEH@Bh~Gn5o&3GVYkVK;LX zJ}r~riQ)7L=Wzz5V3j<>8xQ7tnH+O~Vq4a%jY@ z6(502S9nW4p;?V^dAe-aX0HGyxr-8JA1vV)k7pXM%`gpU>5@ztmMfRLG*iYU)nqJ* zDr;UX{+i`4jma4e<_Vc!W%sOz0-;%R1t)=J6;5K6N)^r+Bf@4aV~xm^rs-e{#SWSQ z8T|nKl)?Dqgkdddm7Vo3)EQpPIA6v6zn2G@W3isp;T;EgZWSG8p_Dt&^V~X9XL4HJ zkb^NmgXc+96x#z_E1omQo54!MRGAJ>&7RQpk2|58Q8gg8g_RS!Sqa9@&Ms+pdEfjL`y5D^-U44n16t@G zp%%TRId6t#IFdN~*i>@jc<)7alwQt%GxZ@x|K#jC)*D_;gGXlJ;6xZO(<)un+Q*hm zR-s~(n&PeNTD2JS)7jIK)t>H`SUZ&d6h6$T2+klJ!x<7A4i%jh*HRC&)8fm^JGL4L z>qWPaSUh!{yaLTDM%sC4`F)yiK9@V)KLmDtMh5F3np|%Fv9a#tc=O4Xu7%M-E@m0} zFNQZpjLNSfCl8CB;;}th?Ki{A!D~2aMe}EK9Xl{gIVQeOt-?d7nO-5~6i0_SoCONw=foHfHmB(1)Eabxrkv7O(Tpodep;n;++PL7{ciA# z>Y00Tn$MI|(;G-b03Xft%wXE%=tEyvm?L@ows8oWWw25%PQe_PVbw zU+r%+Io74{-%4+>r>41zra3Lkgr=v#fYcM$!G)_rc}#ztX$O{&D4~IQOyoFFfvEN; za~dlZofz~!K=IbvL0ZM6@Fn%U{x&b+IH#pJ&gqG0mo^u6s`F#cV$)k|7)6Em1hvld z8F)lIpQ=q0ydusKSk4NZ$B)zxjIFj9BaU2RjJR)A`Z&jP&U0N7(>l-Z!-W4WfH3W_8vTF44jCI`$ z-1^5Z1SzkAw9q}7#T?HPqnIUnN8e-mp?OucF%4?J$`G3Oi*1Tgp?N$ilq+mIpu(gq zS8b_AmDY5=xN=(-RoaCr9oYq}lJcE3P^BxA290L@Lp;NZeG5E}QK&a?WfEH1ne-)0 zTCbC1m2TP%v|1TPdGb0OxsTbeiW^!I~ni z?Ti$|nV)5U1C^G9$D9w-Gn>qWpP@Vka})rOK=*v5T66RQ*Xx^SSE|&~0T!h>TF~P% zw*o@iIoVcxx96rSqjFY8A4~Re+GjlA3)0-xH?~-Ys#x=M;v%^c5MGy#6X_SK%XDwc z618`EWjFztL7H$Kz@IyDj+4<$l4}5QizuREH9`H9<{cl{r1qniWpzaE0AvzaDBS-u zNlfSXjJ-Cm$u2{cl#bHtA@Zot5T=*N#aJUf9WPN{62q$9pLoC-U)!8(Lit6ISF*h1GY;x*Y^ylR9=G_(W2Z)Ww1awXJ|AYja z$4~HQl#8D_}I^)YaN zR<+EWT|<|FMWz(eQz|&dj1$c;-mwPJ`0p5V{Ib>%uhk@*v6hQu+eO`2IMU3^V}$pJ zk1-G{l$Px0jX7CgvDo#&v4_N#e=>gX2@CefhU;ls2k`1N-ls`9NzH&9AS(=wa8)}-2W}>mRE{7hd`5Zx*6q8t zkzfe7#rMT2>vIXQbmO+o{(1Ahjk`iJUC_j)%_BZ%<0w(^{o_qH?%6!LXOn-~vUlsI zN})ZYo3?Ge$!BaQsNc?w;n}sNdj5U$?%l-jr|ga`H}2Z%({}lz-SEq20SSZrT_cxkDq`lQg<_$E`c=*pa;Nyy=#$o3i z`Nuu(8`|Mn-%+kiHGte_F^&XQgE#Hnx@~m+)*VY7LD+n*p^$6wp{LBhi%16 zR@uDygM8kaj`sHUPTLpdZPS}J#pRn+b&9&AzL4Pzuh+STpxYa@&)oDT}9>t^kqJqs!G}m`Da4G$5oIP&5?VH z^tZ}(^4fH#?JT~Q-rr)Ilv{i{V-~G+_IwRHTvUU3LzS%>xYStq$TgdOXgx(YxDik!%~? zZ)d2+VT!G__A_f;k!eS*-DjumB7fO+*V*Z=}UR>aCpN2iO>!Sm8#(bc%ip2qzk!AZ`*0J9FS?(2U zo^%*o03-Gnhrs3DKV+g?$o*>WFevoWy~Tbov7^JbX{r#Hz-*%H&QZO{G>jc9_xJN- zlm_b@>dqUs`6mh%arPWC!Q>v6Osf`fPJr!!nQTskPDOgY0+vq*v_r317A$kOae|SHoIy}!ReuEE<+%?DmmuRR$!QKHn ze9YRH?HRmTQyR8yX74aX?r^iW(UYOkw|=L~F)NC8{+XIsd+@+P>NJ@@fF0${TlNng z8Dy5`D>;bSP53Es%9m{CAQL#qSk`GM(M!A;pxr~6PIKoo)Va>F)XpQe_rS32_zgSd zzyJ&=G6OIh^Bov!JcH)@ZP(Sdd#&xdRztAew9$Ofc3

1hgFmJ{pGnHkZ$&psQbE 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


0N(Wf8?959*xwK%FBb%U5ybJQX2 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 OpjCHOaBKOlrvC+O9>og) From f45411a7beb66a21197bea55d2ab3a54fcfd0b39 Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Tue, 2 Jul 2024 07:20:35 +0000 Subject: [PATCH 041/234] Dockerfile: temporarily roll back wibo to last working version --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index e18d145e..c0d33680 100644 --- a/Dockerfile +++ b/Dockerfile @@ -16,7 +16,7 @@ RUN pip install -r /temp/requirements.txt RUN rm -rf /temp # --- wibo installation --- -RUN wget https://github.com/decompals/wibo/releases/latest/download/wibo +RUN wget https://github.com/decompals/wibo/releases/download/0.6.13/wibo RUN install ./wibo /usr/bin RUN rm wibo From 0c641e5318bc767b5f7bf3c027b33609d55ac9c9 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Wed, 3 Jul 2024 19:17:50 -0400 Subject: [PATCH 042/234] Move compression code to build.py, simplify readme --- README.MD | 30 ++++++++++++++---------------- build.py | 10 ++++++++++ configure.py | 9 --------- 3 files changed, 24 insertions(+), 25 deletions(-) diff --git a/README.MD b/README.MD index 0e8f649d..2c0ac959 100644 --- a/README.MD +++ b/README.MD @@ -19,12 +19,11 @@ Use `--recursive` when cloning to have ppcdis in the repository. 1. [Dump a copy of the game](./docs/extract_game.md) and extract all files. 2. Place **main.dol**, **foresta.rel.szs**, **forest_1st.arc**, and **forest_2nd.arc** in *dump/*. -3. Download the [CodeWarrior 1.3.2 and 1.2.5n compilers](https://files.decomp.dev/compilers_20230715.zip) and extract them to *tools/1.3.2/* and *tools/1.2.5n/*, respectively. -4. Download the [CodeWarrior 1.3.2r compiler](https://mega.nz/file/WuBFTCLT#TmB5R4-1mEFkk4G1Vjn9_cHXRD9wOIH9CtOLaVSWEas) and extract it to *tools/1.3.2r/*. -5. Install Docker. -6. Build the Docker image (`docker build -t ac-decomp .`). -7. Run configure.py (`docker run --rm -v ${PWD}:/ac-decomp ac-decomp python3 configure.py`). -8. Run build.py (`docker run --rm -v ${PWD}:/ac-decomp ac-decomp python3 build.py`). +3. Download the [CodeWarrior 1.3.2, 1.3.2r, and 1.2.5n compilers](https://files.decomp.dev/compilers_latest.zip) and extract them to *tools/1.3.2/*, *tools/1.3.2r/*, and *tools/1.2.5n/*, respectively. +4. Install Docker. +5. Build the Docker image (`docker build -t ac-decomp .`). +6. Run configure.py (`docker run --rm -v ${PWD}:/ac-decomp ac-decomp python3 configure.py`). +7. Run build.py (`docker run --rm -v ${PWD}:/ac-decomp ac-decomp python3 build.py`). ### Build manually @@ -32,22 +31,21 @@ Use `--recursive` when cloning to have ppcdis in the repository. 1. [Dump a copy of the game](./docs/extract_game.md) and extract all files. 2. Place **main.dol**, **foresta.rel.szs**, **forest_1st.arc**, and **forest_2nd.arc** in *dump/*. -3. Download the [CodeWarrior 1.3.2 and 1.2.5n compilers](https://files.decomp.dev/compilers_20230715.zip) and extract them to *tools/1.3.2/* and *tools/1.2.5n/*, respectively. -4. Download the [CodeWarrior 1.3.2r compiler](https://mega.nz/file/WuBFTCLT#TmB5R4-1mEFkk4G1Vjn9_cHXRD9wOIH9CtOLaVSWEas) and extract it to *tools/1.3.2r/*. -5. Install Python, pip, and [ninja](https://github.com/ninja-build/ninja/wiki/Pre-built-Ninja-packages#package-managers) using your package manager of choice. -6. Install Python modules from requirements.txt (`pip install -r requirements.txt`). -7. Install [wibo](https://github.com/decompals/wibo) +3. Download the [CodeWarrior 1.3.2, 1.3.2r, and 1.2.5n compilers](https://files.decomp.dev/compilers_latest.zip) and extract them to *tools/1.3.2/*, *tools/1.3.2r/*, and *tools/1.2.5n/*, respectively. +4. Install Python, pip, and [ninja](https://github.com/ninja-build/ninja/wiki/Pre-built-Ninja-packages#package-managers) using your package manager of choice. +5. Install Python modules from requirements.txt (`pip install -r requirements.txt`). +6. Install version 0.6.13 of [wibo](https://github.com/decompals/wibo) - Wibo is a lightweight Wine replacement that's tailor-made for use with decomp projects. Regular Wine can be used if preferred, but for the purposes of this guide, these instructions will use wibo. - - Download [the latest GitHub release](https://github.com/decompals/wibo/releases/latest) and run `install ./wibo /usr/bin` to install it to your system. -8. Install devkitPPC. + - Download [version 0.6.13 GitHub release](https://github.com/decompals/wibo/releases/tag/0.6.13) and run `install ./wibo /usr/bin` to install it to your system. +7. Install devkitPPC. - To get devkitPPC, you'll need [devkitPro Pacman](https://devkitpro.org/wiki/devkitPro_pacman#Installing_devkitPro_Pacman). - Run `dkp-pacman -S devkitPPC` once dkp-pacman is installed to install devkitPPC. - Set the `DEVKITPPC` environment variable to */opt/devkitpro/devkitPPC*. -9. Set the `N64_SDK` environment variable to the path of your libultra or equivalent headers. If you need headers, you can use the ones from [ultralib](https://github.com/decompals/ultralib). +8. Set the `N64_SDK` environment variable to the path of your libultra or equivalent headers. If you need headers, you can use the ones from [ultralib](https://github.com/decompals/ultralib). - Headers should be located at `$N64_SDK/ultra/usr/include`. - You must modify `Gpopmtx`'s `param` member to be `unsigned int` in **gbi.h**. -10. Run `python3 configure.py`. -11. Run `python3 build.py`. +9. Run `python3 configure.py`. +10. Run `python3 build.py`. ## Quick Guides - [Dumping Game Files](./docs/extract_game.md) diff --git a/build.py b/build.py index d41e0f33..c62b1169 100644 --- a/build.py +++ b/build.py @@ -3,6 +3,7 @@ import sys import os import hashlib import argparse +import common as c # List of Ninja build targets NINJA_BUILD_TARGETS = [ ['src/data/bin1', 'out/forest_1st.arc', 'dump/forest_1st.arc'], ['src/data/bin2', 'out/forest_2nd.arc', 'dump/forest_2nd.arc'] ] @@ -92,10 +93,19 @@ if __name__ == "__main__": else: print(f"No changes in {target[0]}, skipping build.") try: + # Check if foresta.rel.szs exists but not foresta.rel, and if so, decompress + if not os.path.exists(c.REL) and os.path.exists(c.REL_SZS): + print("Decompressing foresta.rel.szs to foresta.rel") + subprocess.call([f'./{c.ORTHRUS}', 'ncompress', 'yaz0', '-d', c.REL_SZS, c.REL]) + if args.v: subprocess.run(['ninja', '-v'], check=True) else: subprocess.run(['ninja'], check=True) + # Compress foresta.rel + if os.path.exists(c.REL_OUT): + print("Compressing foresta.rel to foresta.rel.szs") + subprocess.call([f'./{c.ORTHRUS}', 'ncompress', 'yaz0', '-c', c.REL_OUT, c.REL_SZS_OUT]) except subprocess.CalledProcessError as e: print(f"Error running Ninja build") sys.exit(1) diff --git a/configure.py b/configure.py index 42841acd..f0e32ef4 100644 --- a/configure.py +++ b/configure.py @@ -11,7 +11,6 @@ import pickle import re from io import StringIO -import subprocess from sys import executable as PYTHON, platform from typing import List, Tuple from ninja_syntax import Writer @@ -31,10 +30,6 @@ assert os.path.exists("tools/1.3.2/mwcceppc.exe") and \ os.path.exists("tools/1.2.5n/mwcceppc.exe"), \ "Error: Codewarrior not found!" -# Check if foresta.rel.szs exists but not foresta.rel, and if so, decompress -if not os.path.exists(c.REL) and os.path.exists(c.REL_SZS): - subprocess.call([f'./{c.ORTHRUS}', 'ncompress', 'yaz0', '-d', c.REL_SZS, c.REL]) - # Check binaries were added assert os.path.exists(c.DOL) and os.path.exists(c.REL), \ "Error: Base binaries not found!" @@ -911,10 +906,6 @@ n.build( implicit = [c.REL_OUT] ) -# Compress foresta.rel -if os.path.exists(c.REL_OUT): - subprocess.call([f'./{c.ORTHRUS}', 'ncompress', 'yaz0', '-c', c.REL_OUT, c.REL_SZS_OUT]) - n.default(c.REL_OK) # Optional full binary disassembly From 26cc5387a02683a0a2e28eaa3ae4c54f9c84dfd3 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Wed, 3 Jul 2024 23:04:32 -0400 Subject: [PATCH 043/234] Switch ppcdis to Cuyler36/ppcdis fork for future updates --- tools/ppcdis | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/ppcdis b/tools/ppcdis index 774b5942..ef416a97 160000 --- a/tools/ppcdis +++ b/tools/ppcdis @@ -1 +1 @@ -Subproject commit 774b5942155c3d841c3bf449e8a69324e2f64495 +Subproject commit ef416a97fd2bc8ebc93f85abad928bc1f3ba52de From f6f7e8dc2c400460a560ab71a8bea13f37d8043f Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Thu, 4 Jul 2024 06:50:57 +0000 Subject: [PATCH 044/234] Update Dockerfile to latest Ubuntu LTS --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index c0d33680..4f9692b0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM ubuntu:22.04 as build +FROM ubuntu:24.04 as build # --- basic package installation --- RUN apt-get update && \ From 38dd02eeadcf0a1c167665a1594122df13cd02ee Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Thu, 4 Jul 2024 07:31:28 +0000 Subject: [PATCH 045/234] Add fixes for Ubuntu 24.04 in Dockerfile --- Dockerfile | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/Dockerfile b/Dockerfile index 4f9692b0..0535d2bc 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,7 +12,8 @@ RUN apt-get update && \ # --- python package installation --- COPY ./requirements.txt /temp/requirements.txt COPY ./tools/ppcdis/requirements.txt /temp/tools/ppcdis/requirements.txt -RUN pip install -r /temp/requirements.txt +# why bother setting up a venv for this, right? ¯\_(ツ)_/¯ +RUN pip install --break-system-packages -r /temp/requirements.txt RUN rm -rf /temp # --- wibo installation --- @@ -23,26 +24,26 @@ RUN rm wibo # --- devkitpro installation --- RUN wget https://apt.devkitpro.org/install-devkitpro-pacman RUN chmod +x install-devkitpro-pacman -## assume yes for in-script apt commands +# assume yes for in-script apt commands RUN sed -i 's/^apt-get.*$/& -y/g' install-devkitpro-pacman -## now do dkp-pacman installation +# now do dkp-pacman installation RUN ./install-devkitpro-pacman RUN rm install-devkitpro-pacman -## workaround for a dumb WSL bug that happens with Windows Docker. if we don't do this, devkitPPC installation fails on Windows. +# workaround for a dumb WSL bug that happens with Windows Docker. if we don't do this, devkitPPC installation fails on Windows. RUN if [ ! -e /etc/mtab ]; then ln -s /proc/self/mounts /etc/mtab; fi -## and finally, we get to install devkitPPC +# and finally, we get to install devkitPPC RUN dkp-pacman -S devkitPPC --noconfirm -## dear fucking god this is hacky but it works (needed otherwise next step fails) -RUN rm /usr/bin/cpp /usr/bin/g++ -## set devkitPPC executables as the default ones +# dear fucking god this is hacky but it works (needed otherwise next step fails) +RUN rm /usr/bin/cpp /usr/bin/g++ /lib/cpp +# set devkitPPC executables as the default ones RUN for file in $(find "/opt/devkitpro/devkitPPC/bin" -type f -name 'powerpc-eabi*'); do new_file=$(basename "$file" | sed 's/powerpc-eabi-//g'); update-alternatives --install "/usr/bin/$new_file" "$new_file" "$file" 0; done # --- stage ultralib headers --- RUN mkdir -p /N64_SDK/ultra/usr/ RUN git clone https://github.com/decompals/ultralib.git /N64_SDK/ultra/usr/ -## dockerfile does not seem to support extglob, so this monstrous command works around it to delete all of ultralib except the headers we need. +# dockerfile does not seem to support extglob, so this monstrous command works around it to delete all of ultralib except the headers we need. RUN cd /N64_SDK/ultra/usr/ && find -type f -maxdepth 1 -delete && find . -not -name 'include' -type d -maxdepth 1 -exec rm -r "{}" \; -## modify Gpopmtx's param member to be unsigned int +# modify Gpopmtx's param member to be unsigned int RUN sed -i 's/unsigned char param:8;/unsigned int param:8;/g' /N64_SDK/ultra/usr/include/PR/gbi.h # --- set up work directory and env vars --- From 8da2e86ff6a7542237962b7966642196e21df54e Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Thu, 4 Jul 2024 15:26:35 -0400 Subject: [PATCH 046/234] Move decompression logic to configure.py --- build.py | 5 ----- configure.py | 6 ++++++ 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/build.py b/build.py index c62b1169..61407a5d 100644 --- a/build.py +++ b/build.py @@ -93,11 +93,6 @@ if __name__ == "__main__": else: print(f"No changes in {target[0]}, skipping build.") try: - # Check if foresta.rel.szs exists but not foresta.rel, and if so, decompress - if not os.path.exists(c.REL) and os.path.exists(c.REL_SZS): - print("Decompressing foresta.rel.szs to foresta.rel") - subprocess.call([f'./{c.ORTHRUS}', 'ncompress', 'yaz0', '-d', c.REL_SZS, c.REL]) - if args.v: subprocess.run(['ninja', '-v'], check=True) else: diff --git a/configure.py b/configure.py index f0e32ef4..926f7b12 100644 --- a/configure.py +++ b/configure.py @@ -9,6 +9,7 @@ import json import os import pickle import re +import subprocess from io import StringIO from sys import executable as PYTHON, platform @@ -30,6 +31,11 @@ assert os.path.exists("tools/1.3.2/mwcceppc.exe") and \ os.path.exists("tools/1.2.5n/mwcceppc.exe"), \ "Error: Codewarrior not found!" +# Check if foresta.rel.szs exists but not foresta.rel, and if so, decompress +if not os.path.exists(c.REL) and os.path.exists(c.REL_SZS): + print("Decompressing foresta.rel.szs to foresta.rel") + subprocess.call([f'./{c.ORTHRUS}', 'ncompress', 'yaz0', '-d', c.REL_SZS, c.REL]) + # Check binaries were added assert os.path.exists(c.DOL) and os.path.exists(c.REL), \ "Error: Base binaries not found!" From bfea3513e6e848cb55160b134740a83f3d98fb57 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Thu, 4 Jul 2024 17:52:37 -0400 Subject: [PATCH 047/234] Improve ac_train_door, ac_train_window & rename private --- include/ac_train_door.h | 20 +- include/ac_train_window.h | 6 +- include/audio_defs.h | 3 + include/m_common_data.h | 2 +- src/ac_animal_logo_misc.c | 4 +- src/ac_douzou_move.c_inc | 4 +- src/ac_haniwa_move.c_inc | 2 +- src/ac_museum_fossil.c | 7 +- src/ac_museum_picture.c | 2 +- src/ac_my_house_draw.c_inc | 4 +- src/ac_npc_curator_move.c_inc | 1524 +++++------ src/ac_npc_rcn_guide_move.c_inc | 2 +- src/ac_train_door.c | 47 +- src/ac_train_window.c | 638 +++-- src/ftr/ac_myfmanekin.c | 4 +- src/ftr/ac_myfumbrella.c | 4 +- src/m_all_grow_ovl.c | 2 +- src/m_calendar.c | 613 +++-- src/m_event.c | 4207 +++++++++++++++---------------- src/m_home.c | 714 +++--- src/m_house.c | 108 +- src/m_mail.c | 451 ++-- src/m_map_ovl.c | 1614 +++++------- src/m_museum.c | 983 ++++---- src/m_needlework.c | 372 ++- src/m_npc.c | 16 +- src/m_post_office.c | 819 +++--- src/m_private.c | 2026 ++++++++------- src/m_quest.c | 4 +- src/m_room_type.c | 4 +- src/m_shop.c | 3990 ++++++++++++++--------------- src/m_start_data_init.c | 8 +- src/m_trademark.c | 538 ++-- src/player_select.c | 414 ++- src/save_check_MYK.c_inc | 2 +- src/save_check_NSW.c_inc | 335 ++- src/save_check_YSD.c_inc | 123 +- src/save_check_komatu.c_inc | 134 +- src/save_menu.c | 330 ++- 39 files changed, 9460 insertions(+), 10620 deletions(-) diff --git a/include/ac_train_door.h b/include/ac_train_door.h index 59d630fd..e783d6b8 100644 --- a/include/ac_train_door.h +++ b/include/ac_train_door.h @@ -9,18 +9,17 @@ extern "C" { #endif +#define aTRD_JOINT_NUM 5 typedef struct traindoor_s { - ACTOR actor_class; - u8 pad [0x17C - 0x174]; - cKF_SkeletonInfo_R_c keyframe; - u8 pad2 [0x210 - 0x1ed]; - s_xyz work; - u8 pad3 [0x22e - 0x216]; - s_xyz target; - u8 pad4[0x24c - 0x234]; - int idle; -}TRAINDOOR_ACTOR; + /* 0x000 */ ACTOR actor_class; + /* 0x178 */ u8 pad[0x17C - 0x174]; + /* 0x17C */ cKF_SkeletonInfo_R_c keyframe; + /* 0x1EC */ u8 pad2[0x210 - 0x1EC]; + /* 0x210 */ s_xyz work[aTRD_JOINT_NUM]; + /* 0x22E */ s_xyz target[aTRD_JOINT_NUM]; + /* 0x24C */ int open_flag; +} TRAINDOOR_ACTOR; extern ACTOR_PROFILE TrainDoor_Profile; @@ -29,4 +28,3 @@ extern ACTOR_PROFILE TrainDoor_Profile; #endif #endif - diff --git a/include/ac_train_window.h b/include/ac_train_window.h index 8fd831d6..dd3b80ba 100644 --- a/include/ac_train_window.h +++ b/include/ac_train_window.h @@ -15,8 +15,7 @@ typedef int (*TRAIN_WINDOW_DRAW_TYPE)(ACTOR*, GAME*); #define CRV_DEBUG_GREEN_VALUE 89 #define CRV_DEBUG_BLUE_VALUE 90 - -typedef struct train_window_s{ +typedef struct train_window_s { ACTOR actor_class; TRAIN_WINDOW_DRAW_TYPE draw_type; s16 pallete_id; @@ -34,7 +33,7 @@ typedef struct train_window_s{ f32 scroll_speed; s_xyz pos; f32 lod_factor; -}TRAIN_WINDOW_ACTOR; +} TRAIN_WINDOW_ACTOR; extern ACTOR_PROFILE Train_Window_Profile; @@ -43,4 +42,3 @@ extern ACTOR_PROFILE Train_Window_Profile; #endif #endif - diff --git a/include/audio_defs.h b/include/audio_defs.h index b7061c33..d24a07ab 100644 --- a/include/audio_defs.h +++ b/include/audio_defs.h @@ -115,6 +115,9 @@ typedef enum audio_sound_effects { NA_SE_TOILE_CHAIR_SIT = 0x410, + NA_SE_TRAINDOOR0 = 0x412, + NA_SE_TRAINDOOR1, + NA_SE_BED_IN = 0x415, NA_SE_BED_NEGAERI, NA_SE_BED_OUT, diff --git a/include/m_common_data.h b/include/m_common_data.h index 43a32fb7..721a54af 100644 --- a/include/m_common_data.h +++ b/include/m_common_data.h @@ -86,7 +86,7 @@ typedef struct Save_s { /* 0x00001A */ u16 copy_protect; /* 'unique' value between [1, 65520] used for copy protection (see mCD_get_land_copyProtect) */ /* 0x00001C */ u8 pad_1C[4]; - /* 0x000020 */ Private_c private[PLAYER_NUM]; /* player data */ + /* 0x000020 */ Private_c private_data[PLAYER_NUM]; /* player data */ /* 0x009120 */ mLd_land_info_c land_info; /* town name & id */ /* 0x00912C */ mNtc_board_post_c noticeboard[mNtc_BOARD_POST_COUNT]; /* noticeboard posts */ /* 0x009CE4 */ u8 pad_9CE4[4]; diff --git a/src/ac_animal_logo_misc.c b/src/ac_animal_logo_misc.c index 64a2d1b2..d469dcbb 100644 --- a/src/ac_animal_logo_misc.c +++ b/src/ac_animal_logo_misc.c @@ -21,7 +21,7 @@ extern void flash_rom_and_player_info_clear() { bzero(save, sizeof(Save)); mFRm_ClearSaveCheckData(Save_GetPointer(save_check)); - priv_p = Save_GetPointer(private[0]); + priv_p = Save_GetPointer(private_data[0]); for (i = 0; i < PLAYER_NUM; i++) { mPr_ClearPrivateInfo(priv_p); priv_p++; @@ -96,7 +96,7 @@ extern void title_action_data_init_start_select(GAME_PLAY* play) { mCD_LoadLand(); mCPk_InitPak(0); - Common_Set(now_private, Save_GetPointer(private[0])); + Common_Set(now_private, Save_GetPointer(private_data[0])); Common_Set(player_no, 0); mTD_rtc_reserve(); diff --git a/src/ac_douzou_move.c_inc b/src/ac_douzou_move.c_inc index fdeb2659..175f5d24 100644 --- a/src/ac_douzou_move.c_inc +++ b/src/ac_douzou_move.c_inc @@ -15,7 +15,7 @@ static int aDOU_set_check(int house_no) { int player_no = mHS_get_pl_no(house_no); - Private_c* priv = Save_GetPointer(private[player_no]); + Private_c* priv = Save_GetPointer(private_data[player_no]); mHm_hs_c* house = Save_GetPointer(homes[house_no]); if (mEv_CheckTitleDemo() != 0 && mEv_CheckTitleDemo() != -1 && mEv_CheckTitleDemo() != -9) { @@ -35,7 +35,7 @@ static int aDOU_get_color(int house_no) { static int aDOU_get_douzou_type(int house_no) { int player_no = mHS_get_pl_no(house_no); - Private_c* priv = Save_GetPointer(private[player_no]); + Private_c* priv = Save_GetPointer(private_data[player_no]); s8 sex = mPr_SEX_MALE; s8 face = mPr_FACE_TYPE0; diff --git a/src/ac_haniwa_move.c_inc b/src/ac_haniwa_move.c_inc index d307efa5..789cadf3 100644 --- a/src/ac_haniwa_move.c_inc +++ b/src/ac_haniwa_move.c_inc @@ -9,7 +9,7 @@ static int aHNW_set_save_permission() { if (player_no < PLAYER_NUM) { int arrange_idx = mHS_get_arrange_idx(player_no); house = Save_GetPointer(homes[arrange_idx]); - pid = &Save_Get(private[player_no]).player_ID; + pid = &Save_Get(private_data[player_no]).player_ID; if (mPr_NullCheckPersonalID(pid) != TRUE && mPr_CheckCmpPersonalID(pid, &house->ownerID) == TRUE) { res = TRUE; diff --git a/src/ac_museum_fossil.c b/src/ac_museum_fossil.c index 3e3aba65..5d5f7f73 100644 --- a/src/ac_museum_fossil.c +++ b/src/ac_museum_fossil.c @@ -119,9 +119,10 @@ static void Museum_Fossil_Actor_move(ACTOR* actorx, GAME* game) { /* 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); + mMsg_Set_free_str( + mMsg_Get_base_window_p(), mMsg_FREE_STR0, + Save_Get(private_data[mMmd_DONATOR_PLR_IDX(donator)]).player_ID.player_name, + PLAYER_NAME_LEN); } } diff --git a/src/ac_museum_picture.c b/src/ac_museum_picture.c index 476fd740..34981d03 100644 --- a/src/ac_museum_picture.c +++ b/src/ac_museum_picture.c @@ -194,7 +194,7 @@ static void Museum_Picture_Actor_move(ACTOR* actorx, GAME* game) { /* 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, + Save_Get(private_data[mMmd_DONATOR_PLR_IDX(donator)]).player_ID.player_name, PLAYER_NAME_LEN); } } diff --git a/src/ac_my_house_draw.c_inc b/src/ac_my_house_draw.c_inc index 2e18f5fe..4a340995 100644 --- a/src/ac_my_house_draw.c_inc +++ b/src/ac_my_house_draw.c_inc @@ -239,8 +239,8 @@ static void aMHS_actor_draw(ACTOR* actorx, GAME* game) { gSPSegment(gfx++, G_MWO_SEGMENT_A, obj_myhome_mark_pal); } else { int org_idx = door_original & 7; - u16* pal = mNW_PaletteIdx2Palette(Save_Get(private[pl_no]).my_org[org_idx].palette); - u8* tex = Save_Get(private[pl_no]).my_org[org_idx].design.data; + u16* pal = mNW_PaletteIdx2Palette(Save_Get(private_data[pl_no]).my_org[org_idx].palette); + u8* tex = Save_Get(private_data[pl_no]).my_org[org_idx].design.data; gSPSegment(gfx++, G_MWO_SEGMENT_9, tex); gSPSegment(gfx++, G_MWO_SEGMENT_A, pal); diff --git a/src/ac_npc_curator_move.c_inc b/src/ac_npc_curator_move.c_inc index 51868beb..ac6dc697 100644 --- a/src/ac_npc_curator_move.c_inc +++ b/src/ac_npc_curator_move.c_inc @@ -1,1177 +1,1015 @@ static void aCR_set_animation(NPC_CURATOR_ACTOR* curator, int action) { - static int animeSeqNo[] = { 5, 5, 9 }; + static int animeSeqNo[] = { 5, 5, 9 }; - (*Common_Get(clip).npc_clip->animation_init_proc)((ACTOR*)curator, animeSeqNo[action], FALSE); + (*Common_Get(clip).npc_clip->animation_init_proc)((ACTOR*)curator, animeSeqNo[action], FALSE); } static void aCR_set_request_act(NPC_CURATOR_ACTOR* curator) { - curator->npc_class.request.act_priority = 4; - curator->npc_class.request.act_idx = 16; - curator->npc_class.request.act_type = 2; + curator->npc_class.request.act_priority = 4; + curator->npc_class.request.act_idx = 16; + curator->npc_class.request.act_type = 2; } static int aCR_check_sleep_time() { - int res = FALSE; + int res = FALSE; - if (Common_Get(time.now_sec) >= aCR_SLEEP_TIME_START && Common_Get(time.now_sec) < aCR_SLEEP_TIME_END) { - res = TRUE; - } + if (Common_Get(time.now_sec) >= aCR_SLEEP_TIME_START && Common_Get(time.now_sec) < aCR_SLEEP_TIME_END) { + res = TRUE; + } - return res; + return res; } static void aCR_sleep_wait(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - curator->sleep_wait_timer--; + curator->sleep_wait_timer--; - if (curator->sleep_wait_timer <= 0) { - aCR_setupAction(curator, play, aCR_ACTION_SLEEP); // Go back to sleep - } + if (curator->sleep_wait_timer <= 0) { + aCR_setupAction(curator, play, aCR_ACTION_SLEEP); // Go back to sleep + } } static void aCR_wait_init(NPC_CURATOR_ACTOR* curator) { - curator->npc_class.condition_info.demo_flg = 0; - curator->npc_class.head.angle_add_y = DEG2SHORT_ANGLE(5.625f); - curator->npc_class.movement.mv_angl = DEG2SHORT_ANGLE(0.0f); - curator->npc_class.movement.mv_add_angl = DEG2SHORT_ANGLE(5.625f); + curator->npc_class.condition_info.demo_flg = 0; + curator->npc_class.head.angle_add_y = DEG2SHORT_ANGLE(5.625f); + curator->npc_class.movement.mv_angl = DEG2SHORT_ANGLE(0.0f); + curator->npc_class.movement.mv_add_angl = DEG2SHORT_ANGLE(5.625f); } static void aCR_sleep_wait_init(NPC_CURATOR_ACTOR* curator) { - aCR_wait_init(curator); - curator->sleep_wait_timer = aCR_SLEEP_WAIT_TIMER; + aCR_wait_init(curator); + curator->sleep_wait_timer = aCR_SLEEP_WAIT_TIMER; } static void aCR_sleep_init(NPC_CURATOR_ACTOR* curator) { - curator->npc_class.condition_info.demo_flg = aNPC_COND_DEMO_SKIP_HEAD_LOOKAT; - curator->npc_class.head.angle_add_y = DEG2SHORT_ANGLE(1.40625f); - curator->_9B0 = 0; + curator->npc_class.condition_info.demo_flg = aNPC_COND_DEMO_SKIP_HEAD_LOOKAT; + curator->npc_class.head.angle_add_y = DEG2SHORT_ANGLE(1.40625f); + curator->_9B0 = 0; } typedef void (*aCR_INIT_PROC)(NPC_CURATOR_ACTOR*); static void aCR_setupAction(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play, int action) { - static aCR_ACT_PROC process[aCR_ACTION_NUM] = { - (aCR_ACT_PROC)&none_proc1, - &aCR_sleep_wait, - (aCR_ACT_PROC)&none_proc1 - }; + static aCR_ACT_PROC process[aCR_ACTION_NUM] = { (aCR_ACT_PROC)&none_proc1, &aCR_sleep_wait, + (aCR_ACT_PROC)&none_proc1 }; - static aCR_INIT_PROC init_proc[aCR_ACTION_NUM] = { - &aCR_wait_init, - &aCR_sleep_wait_init, - &aCR_sleep_init - }; + static aCR_INIT_PROC init_proc[aCR_ACTION_NUM] = { &aCR_wait_init, &aCR_sleep_wait_init, &aCR_sleep_init }; - aCR_set_animation(curator, action); - curator->action = action; - curator->action_proc = process[action]; - (*init_proc[action])(curator); + aCR_set_animation(curator, action); + curator->action = action; + curator->action_proc = process[action]; + (*init_proc[action])(curator); } static void aCR_act_chg_data_proc(NPC_ACTOR* actorx, GAME_PLAY* play) { - NPC_CURATOR_ACTOR* curator = (NPC_CURATOR_ACTOR*)actorx; + NPC_CURATOR_ACTOR* curator = (NPC_CURATOR_ACTOR*)actorx; - curator->npc_class.action.act_obj = aNPC_ACT_OBJ_PLAYER; + curator->npc_class.action.act_obj = aNPC_ACT_OBJ_PLAYER; } static void aCR_act_init_proc(NPC_ACTOR* actorx, GAME_PLAY* play) { - NPC_CURATOR_ACTOR* curator = (NPC_CURATOR_ACTOR*)actorx; - int action; + NPC_CURATOR_ACTOR* curator = (NPC_CURATOR_ACTOR*)actorx; + int action; - if (curator->action == aCR_ACTION_WAIT) { - if (aCR_check_sleep_time() == TRUE) { - action = aCR_ACTION_SLEEP_WAIT; + if (curator->action == aCR_ACTION_WAIT) { + if (aCR_check_sleep_time() == TRUE) { + action = aCR_ACTION_SLEEP_WAIT; + } else { + action = aCR_ACTION_WAIT; + } + } else { + if (aCR_check_sleep_time() == TRUE) { + action = aCR_ACTION_SLEEP; + } else { + action = aCR_ACTION_WAIT; + } } - else { - action = aCR_ACTION_WAIT; - } - } - else { - if (aCR_check_sleep_time() == TRUE) { - action = aCR_ACTION_SLEEP; - } - else { - action = aCR_ACTION_WAIT; - } - } - actorx->action.step = 0; - aCR_setupAction(curator, play, action); + actorx->action.step = 0; + aCR_setupAction(curator, play, action); } static void aCR_act_main_proc(NPC_ACTOR* actorx, GAME_PLAY* play) { - NPC_CURATOR_ACTOR* curator = (NPC_CURATOR_ACTOR*)actorx; - - (*curator->action_proc)(curator, play); + NPC_CURATOR_ACTOR* curator = (NPC_CURATOR_ACTOR*)actorx; + + (*curator->action_proc)(curator, play); } static void aCR_act_proc(NPC_ACTOR* actorx, GAME_PLAY* play, int action) { - static aCR_ACTION_PROC act_proc[aCR_ACTION_NUM] = { - &aCR_act_init_proc, - &aCR_act_chg_data_proc, - &aCR_act_main_proc - }; + static aCR_ACTION_PROC act_proc[aCR_ACTION_NUM] = { &aCR_act_init_proc, &aCR_act_chg_data_proc, + &aCR_act_main_proc }; - (*act_proc[action])(actorx, play); + (*act_proc[action])(actorx, play); } static void aCR_think_main_proc(NPC_ACTOR* actorx, GAME_PLAY* play) { - NPC_CURATOR_ACTOR* curator = (NPC_CURATOR_ACTOR*)actorx; + NPC_CURATOR_ACTOR* curator = (NPC_CURATOR_ACTOR*)actorx; - if (curator->npc_class.action.step == aNPC_ACTION_END_STEP) { - aCR_set_request_act(curator); - } - else if (curator->npc_class.action.idx == 16) { - if (aCR_check_sleep_time() == TRUE) { - if (curator->action == aCR_ACTION_WAIT) { - aCR_setupAction(curator, play, aCR_ACTION_SLEEP_WAIT); - } + if (curator->npc_class.action.step == aNPC_ACTION_END_STEP) { + aCR_set_request_act(curator); + } else if (curator->npc_class.action.idx == 16) { + if (aCR_check_sleep_time() == TRUE) { + if (curator->action == aCR_ACTION_WAIT) { + aCR_setupAction(curator, play, aCR_ACTION_SLEEP_WAIT); + } + } else if (curator->action == aCR_ACTION_SLEEP) { + aCR_setupAction(curator, play, aCR_ACTION_WAIT); + } } - else if (curator->action == aCR_ACTION_SLEEP) { - aCR_setupAction(curator, play, aCR_ACTION_WAIT); - } - } } static void aCR_think_init_proc(NPC_ACTOR* actorx, GAME_PLAY* play) { - NPC_CURATOR_ACTOR* curator = (NPC_CURATOR_ACTOR*)actorx; - int action; + NPC_CURATOR_ACTOR* curator = (NPC_CURATOR_ACTOR*)actorx; + int action; - if (aCR_check_sleep_time() == TRUE) { - action = aCR_ACTION_SLEEP; - } - else { - action = aCR_ACTION_WAIT; - } + if (aCR_check_sleep_time() == TRUE) { + action = aCR_ACTION_SLEEP; + } else { + action = aCR_ACTION_WAIT; + } - curator->action = action; - curator->npc_class.action.act_proc = &aCR_act_proc; - aCR_set_request_act(curator); + curator->action = action; + curator->npc_class.action.act_proc = &aCR_act_proc; + aCR_set_request_act(curator); } typedef void (*aCR_THINK_PROC)(NPC_ACTOR*, GAME_PLAY*); static void aCR_think_proc(NPC_ACTOR* actorx, GAME_PLAY* play, int think_idx) { - static aCR_THINK_PROC think_proc[2] = { - &aCR_think_init_proc, - &aCR_think_main_proc - }; + static aCR_THINK_PROC think_proc[2] = { &aCR_think_init_proc, &aCR_think_main_proc }; - (*think_proc[think_idx])(actorx, play); + (*think_proc[think_idx])(actorx, play); } static void aCR_schedule_init_proc(NPC_ACTOR* actorx, GAME_PLAY* play) { - actorx->think.think_proc = &aCR_think_proc; - actorx->condition_info.hide_request = FALSE; - (*Common_Get(clip).npc_clip->think_proc)(actorx, play, aNPC_THINK_IN_BLOCK, aNPC_THINK_TYPE_INIT); + actorx->think.think_proc = &aCR_think_proc; + actorx->condition_info.hide_request = FALSE; + (*Common_Get(clip).npc_clip->think_proc)(actorx, play, aNPC_THINK_IN_BLOCK, aNPC_THINK_TYPE_INIT); } static void aCR_schedule_main_proc(NPC_ACTOR* actorx, GAME_PLAY* play) { - if ((*Common_Get(clip).npc_clip->think_proc)(actorx, play, -1, aNPC_THINK_TYPE_CHK_INTERRUPT) == FALSE) { - (*Common_Get(clip).npc_clip->think_proc)(actorx, play, -1, aNPC_THINK_TYPE_MAIN); - } + if ((*Common_Get(clip).npc_clip->think_proc)(actorx, play, -1, aNPC_THINK_TYPE_CHK_INTERRUPT) == FALSE) { + (*Common_Get(clip).npc_clip->think_proc)(actorx, play, -1, aNPC_THINK_TYPE_MAIN); + } } typedef void (*aCR_SCHEDULE_PROC)(NPC_ACTOR*, GAME_PLAY*); static void aCR_schedule_proc(NPC_ACTOR* actorx, GAME_PLAY* play, int proc_idx) { - static aCR_SCHEDULE_PROC sched_proc[] = { - &aCR_schedule_init_proc, - &aCR_schedule_main_proc - }; + static aCR_SCHEDULE_PROC sched_proc[] = { &aCR_schedule_init_proc, &aCR_schedule_main_proc }; - (*sched_proc[proc_idx])(actorx, play); + (*sched_proc[proc_idx])(actorx, play); } enum { - aCR_FOSSIL_TYPE_TRICERA, - aCR_FOSSIL_TYPE_TREX, - aCR_FOSSIL_TYPE_APATO, - aCR_FOSSIL_TYPE_STEGO, - aCR_FOSSIL_TYPE_PTERA, - aCR_FOSSIL_TYPE_PLESIO, - aCR_FOSSIL_TYPE_MAMMOTH, + aCR_FOSSIL_TYPE_TRICERA, + aCR_FOSSIL_TYPE_TREX, + aCR_FOSSIL_TYPE_APATO, + aCR_FOSSIL_TYPE_STEGO, + aCR_FOSSIL_TYPE_PTERA, + aCR_FOSSIL_TYPE_PLESIO, + aCR_FOSSIL_TYPE_MAMMOTH, - aCR_FOSSIL_TYPE_NUM + aCR_FOSSIL_TYPE_NUM }; static int aCR_get_fossil_type(mActor_name_t item) { - static int fossil_ftr_start[aCR_FOSSIL_TYPE_NUM] = { - FTR_DINO_TRICERA_SKULL, - FTR_DINO_TREX_SKULL, - FTR_DINO_APATO_SKULL, - FTR_DINO_STEGO_SKULL, - FTR_DINO_PTERA_SKULL, - FTR_DINO_PLESIO_SKULL, - FTR_DINO_MAMMOTH_SKULL - }; + static int fossil_ftr_start[aCR_FOSSIL_TYPE_NUM] = { FTR_DINO_TRICERA_SKULL, FTR_DINO_TREX_SKULL, + FTR_DINO_APATO_SKULL, FTR_DINO_STEGO_SKULL, + FTR_DINO_PTERA_SKULL, FTR_DINO_PLESIO_SKULL, + FTR_DINO_MAMMOTH_SKULL }; - static int fossil_ftr_end[aCR_FOSSIL_TYPE_NUM] = { - FTR_DINO_TRICERA_BODY+3, - FTR_DINO_TREX_BODY+3, - FTR_DINO_APATO_BODY+3, - FTR_DINO_STEGO_BODY+3, - FTR_DINO_PTERA_LEFT_WING+3, - FTR_DINO_PLESIO_TORSO+3, - FTR_DINO_MAMMOTH_TORSO+3 - }; + static int fossil_ftr_end[aCR_FOSSIL_TYPE_NUM] = { FTR_DINO_TRICERA_BODY + 3, FTR_DINO_TREX_BODY + 3, + FTR_DINO_APATO_BODY + 3, FTR_DINO_STEGO_BODY + 3, + FTR_DINO_PTERA_LEFT_WING + 3, FTR_DINO_PLESIO_TORSO + 3, + FTR_DINO_MAMMOTH_TORSO + 3 }; - int res = -1; - int i; + int res = -1; + int i; - for (i = 0; i < aCR_FOSSIL_TYPE_NUM; i++) { - if (item >= fossil_ftr_start[i] && item <= fossil_ftr_end[i]) { - res = i; - break; + for (i = 0; i < aCR_FOSSIL_TYPE_NUM; i++) { + if (item >= fossil_ftr_start[i] && item <= fossil_ftr_end[i]) { + res = i; + break; + } } - } - return res; + return res; } typedef struct { - int count; - mActor_name_t* parts; + int count; + mActor_name_t* parts; } aCR_fossil_part_c; #define aCR_GetFossilPartDonator(item_no) \ - mMmd_FossilInfo(((item_no) >= FTR_DINO_START && (item_no) <= FTR_DINO_END) ? FTR_IDX_2_NO((item_no - FTR_DINO_START)) : 0) -#define aCR_GetArtDonator(item_no) \ - mMmd_ArtInfo(((item_no) >= FTR_PAINTING0 && (item_no) <= FTR_PAINTING14_WEST) ? FTR_IDX_2_NO((item_no - FTR_PAINTING0)) : 0) + mMmd_FossilInfo( \ + ((item_no) >= FTR_DINO_START && (item_no) <= FTR_DINO_END) ? FTR_IDX_2_NO((item_no - FTR_DINO_START)) : 0) +#define aCR_GetArtDonator(item_no) \ + mMmd_ArtInfo(((item_no) >= FTR_PAINTING0 && (item_no) <= FTR_PAINTING14_WEST) \ + ? FTR_IDX_2_NO((item_no - FTR_PAINTING0)) \ + : 0) #define aCR_GetInsectDonator(item_no) \ - mMmd_InsectInfo(((item_no) >= ITM_INSECT_START && (item_no) < ITM_INSECT_END) ? (item_no - ITM_INSECT_START) : 0) + mMmd_InsectInfo(((item_no) >= ITM_INSECT_START && (item_no) < ITM_INSECT_END) ? (item_no - ITM_INSECT_START) : 0) #define aCR_GetFishDonator(item_no) \ - mMmd_FishInfo(((item_no) >= ITM_FISH_START && (item_no) <= ITM_FISH_END) ? (item_no - ITM_FISH_START) : 0) + mMmd_FishInfo(((item_no) >= ITM_FISH_START && (item_no) <= ITM_FISH_END) ? (item_no - ITM_FISH_START) : 0) static int aCR_chk_fossil_parts_complete_sub(int type) { - static mActor_name_t trikera_parts[] = { FTR_DINO_TRICERA_SKULL, FTR_DINO_TRICERA_TAIL, FTR_DINO_TRICERA_BODY }; - static mActor_name_t trex_parts[] = { FTR_DINO_TREX_SKULL, FTR_DINO_TREX_TAIL, FTR_DINO_TREX_BODY }; - static mActor_name_t bront_parts[] = { FTR_DINO_APATO_SKULL, FTR_DINO_APATO_TAIL, FTR_DINO_APATO_BODY }; - static mActor_name_t stego_parts[] = { FTR_DINO_STEGO_SKULL, FTR_DINO_STEGO_TAIL, FTR_DINO_STEGO_BODY }; - static mActor_name_t ptera_parts[] = { FTR_DINO_PTERA_SKULL, FTR_DINO_PTERA_RIGHT_WING, FTR_DINO_PTERA_LEFT_WING }; - static mActor_name_t hutaba_parts[] = { FTR_DINO_PLESIO_SKULL, FTR_DINO_PLESIO_NECK, FTR_DINO_PLESIO_TORSO }; - static mActor_name_t mammoth_parts[] = { FTR_DINO_MAMMOTH_SKULL, FTR_DINO_MAMMOTH_TORSO }; - static aCR_fossil_part_c fossil_parts[aCR_FOSSIL_TYPE_NUM] = { - { ARRAY_COUNT(trikera_parts), trikera_parts }, - { ARRAY_COUNT(trex_parts), trex_parts }, - { ARRAY_COUNT(bront_parts), bront_parts }, - { ARRAY_COUNT(stego_parts), stego_parts }, - { ARRAY_COUNT(ptera_parts), ptera_parts }, - { ARRAY_COUNT(hutaba_parts), hutaba_parts }, - { ARRAY_COUNT(mammoth_parts), mammoth_parts } - }; + static mActor_name_t trikera_parts[] = { FTR_DINO_TRICERA_SKULL, FTR_DINO_TRICERA_TAIL, FTR_DINO_TRICERA_BODY }; + static mActor_name_t trex_parts[] = { FTR_DINO_TREX_SKULL, FTR_DINO_TREX_TAIL, FTR_DINO_TREX_BODY }; + static mActor_name_t bront_parts[] = { FTR_DINO_APATO_SKULL, FTR_DINO_APATO_TAIL, FTR_DINO_APATO_BODY }; + static mActor_name_t stego_parts[] = { FTR_DINO_STEGO_SKULL, FTR_DINO_STEGO_TAIL, FTR_DINO_STEGO_BODY }; + static mActor_name_t ptera_parts[] = { FTR_DINO_PTERA_SKULL, FTR_DINO_PTERA_RIGHT_WING, FTR_DINO_PTERA_LEFT_WING }; + static mActor_name_t hutaba_parts[] = { FTR_DINO_PLESIO_SKULL, FTR_DINO_PLESIO_NECK, FTR_DINO_PLESIO_TORSO }; + static mActor_name_t mammoth_parts[] = { FTR_DINO_MAMMOTH_SKULL, FTR_DINO_MAMMOTH_TORSO }; + static aCR_fossil_part_c fossil_parts[aCR_FOSSIL_TYPE_NUM] = { + { ARRAY_COUNT(trikera_parts), trikera_parts }, { ARRAY_COUNT(trex_parts), trex_parts }, + { ARRAY_COUNT(bront_parts), bront_parts }, { ARRAY_COUNT(stego_parts), stego_parts }, + { ARRAY_COUNT(ptera_parts), ptera_parts }, { ARRAY_COUNT(hutaba_parts), hutaba_parts }, + { ARRAY_COUNT(mammoth_parts), mammoth_parts } + }; - aCR_fossil_part_c* fossil_part = &fossil_parts[type]; - int i = fossil_part->count; - mActor_name_t* fossil_part_p = fossil_part->parts; - int res = TRUE; + aCR_fossil_part_c* fossil_part = &fossil_parts[type]; + int i = fossil_part->count; + mActor_name_t* fossil_part_p = fossil_part->parts; + int res = TRUE; - while (i != 0) { - int valid = aCR_GetFossilPartDonator(*fossil_part_p) >= mMmd_DONATOR_PLAYER1 - && aCR_GetFossilPartDonator(*fossil_part_p) <= mMmd_DONATOR_DELETED_PLAYER; - - if (!valid) { - res = FALSE; - break; + while (i != 0) { + int valid = aCR_GetFossilPartDonator(*fossil_part_p) >= mMmd_DONATOR_PLAYER1 && + aCR_GetFossilPartDonator(*fossil_part_p) <= mMmd_DONATOR_DELETED_PLAYER; + + if (!valid) { + res = FALSE; + break; + } + + fossil_part_p++; + i--; } - - fossil_part_p++; - i--; - } - return res; + return res; } static void aCR_chk_fossil_parts_complete(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - static int msg_no_table[aCR_FOSSIL_TYPE_NUM] = { - 0x2F78, - 0x2F79, - 0x2F7A, - 0x2F7B, - 0x2F7C, - 0x2F7D, - 0x2F7E - }; - - int fossil_type = aCR_get_fossil_type(play->submenu.item_p->item); - int msg_no = 0x2F84; + static int msg_no_table[aCR_FOSSIL_TYPE_NUM] = { 0x2F78, 0x2F79, 0x2F7A, 0x2F7B, 0x2F7C, 0x2F7D, 0x2F7E }; - if (fossil_type != -1 && aCR_chk_fossil_parts_complete_sub(fossil_type) == TRUE) { - msg_no = msg_no_table[fossil_type]; - } + int fossil_type = aCR_get_fossil_type(play->submenu.item_p->item); + int msg_no = 0x2F84; - mMsg_Set_continue_msg_num(mMsg_Get_base_window_p(), msg_no); - curator->msg_no = msg_no; - (*curator->setupTalkAction_proc)(curator, play, aCR_TALK_THANKS_FOSSIL_MSG_END_WAIT); + if (fossil_type != -1 && aCR_chk_fossil_parts_complete_sub(fossil_type) == TRUE) { + msg_no = msg_no_table[fossil_type]; + } + + mMsg_Set_continue_msg_num(mMsg_Get_base_window_p(), msg_no); + curator->msg_no = msg_no; + (*curator->setupTalkAction_proc)(curator, play, aCR_TALK_THANKS_FOSSIL_MSG_END_WAIT); } static void aCR_chk_fossil_complete(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - static int msg_no[] = { 0x2F73, 0x2F85 }; - static int next_act_idx[] = { aCR_TALK_CHK_CONTINUE_TO_DONATE3, aCR_TALK_CHK_ALL_COMPLETE }; + static int msg_no[] = { 0x2F73, 0x2F85 }; + static int next_act_idx[] = { aCR_TALK_CHK_CONTINUE_TO_DONATE3, aCR_TALK_CHK_ALL_COMPLETE }; - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - int complete = FALSE; + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + int complete = FALSE; - if (mMmd_CountDisplayedFossil() == mMmd_FOSSIL_NUM) { - complete = TRUE; - } + if (mMmd_CountDisplayedFossil() == mMmd_FOSSIL_NUM) { + complete = TRUE; + } - mMsg_Set_continue_msg_num(msg_p, msg_no[complete]); - curator->msg_no = msg_no[complete]; - (*curator->setupTalkAction_proc)(curator, play, next_act_idx[complete]); + mMsg_Set_continue_msg_num(msg_p, msg_no[complete]); + curator->msg_no = msg_no[complete]; + (*curator->setupTalkAction_proc)(curator, play, next_act_idx[complete]); } static void aCR_chk_art_complete(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - static int msg_no[] = { 0x2F73, 0x2F75 }; - static int next_act_idx[] = { aCR_TALK_CHK_CONTINUE_TO_DONATE3, aCR_TALK_CHK_ALL_COMPLETE }; + static int msg_no[] = { 0x2F73, 0x2F75 }; + static int next_act_idx[] = { aCR_TALK_CHK_CONTINUE_TO_DONATE3, aCR_TALK_CHK_ALL_COMPLETE }; - int complete = FALSE; + int complete = FALSE; - if (mMmd_CountDisplayedArt() == mMmd_ART_NUM) { - complete = TRUE; - } + if (mMmd_CountDisplayedArt() == mMmd_ART_NUM) { + complete = TRUE; + } - mMsg_Set_continue_msg_num(mMsg_Get_base_window_p(), msg_no[complete]); - curator->msg_no = msg_no[complete]; - (*curator->setupTalkAction_proc)(curator, play, next_act_idx[complete]); + mMsg_Set_continue_msg_num(mMsg_Get_base_window_p(), msg_no[complete]); + curator->msg_no = msg_no[complete]; + (*curator->setupTalkAction_proc)(curator, play, next_act_idx[complete]); } static void aCR_chk_fish_complete(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - static int msg_no[] = { 0x2F73, 0x2F8A }; - static int next_act_idx[] = { aCR_TALK_CHK_CONTINUE_TO_DONATE3, aCR_TALK_CHK_ALL_COMPLETE }; + static int msg_no[] = { 0x2F73, 0x2F8A }; + static int next_act_idx[] = { aCR_TALK_CHK_CONTINUE_TO_DONATE3, aCR_TALK_CHK_ALL_COMPLETE }; - int complete = FALSE; + int complete = FALSE; - if (mMmd_CountDisplayedFish() == mMmd_FISH_NUM) { - complete = TRUE; - } + if (mMmd_CountDisplayedFish() == mMmd_FISH_NUM) { + complete = TRUE; + } - mMsg_Set_continue_msg_num(mMsg_Get_base_window_p(), msg_no[complete]); - curator->msg_no = msg_no[complete]; - (*curator->setupTalkAction_proc)(curator, play, next_act_idx[complete]); + mMsg_Set_continue_msg_num(mMsg_Get_base_window_p(), msg_no[complete]); + curator->msg_no = msg_no[complete]; + (*curator->setupTalkAction_proc)(curator, play, next_act_idx[complete]); } static void aCR_chk_insect_complete(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - static int msg_no[] = { 0x2F73, 0x2F88 }; - static int next_act_idx[] = { aCR_TALK_CHK_CONTINUE_TO_DONATE3, aCR_TALK_CHK_ALL_COMPLETE }; + static int msg_no[] = { 0x2F73, 0x2F88 }; + static int next_act_idx[] = { aCR_TALK_CHK_CONTINUE_TO_DONATE3, aCR_TALK_CHK_ALL_COMPLETE }; - int complete = FALSE; + int complete = FALSE; - if (mMmd_CountDisplayedInsect() == mMmd_INSECT_NUM) { - complete = TRUE; - } + if (mMmd_CountDisplayedInsect() == mMmd_INSECT_NUM) { + complete = TRUE; + } - mMsg_Set_continue_msg_num(mMsg_Get_base_window_p(), msg_no[complete]); - curator->msg_no = msg_no[complete]; - (*curator->setupTalkAction_proc)(curator, play, next_act_idx[complete]); + mMsg_Set_continue_msg_num(mMsg_Get_base_window_p(), msg_no[complete]); + curator->msg_no = msg_no[complete]; + (*curator->setupTalkAction_proc)(curator, play, next_act_idx[complete]); } static void aCR_set_after_explain_insect(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - static int msg_no[] = { - 0x3A56, - 0x3A56, - 0x3A56, - 0x3A56, - 0x3A57, - 0x3A57, - 0x3A5D, - 0x3A57, - 0x3A5E, - 0x3A58, - 0x3A58, - 0x3A58, - 0x3A5F, - 0x3A59, - 0x3A59, - 0x3A5A, - 0x3A5A, - 0x3A5A, - 0x3A5A, - 0x3A5B, - 0x3A5B, - 0x3A5B, - 0x3A61, - 0x3A62, - 0x3A5C, - 0x3A5C, - 0x3A63, - 0x3A64, - 0x3A56, - 0x3A5B, - 0x3A5B, - 0x3A60, - 0x3A6B, - 0x3A69, - 0x3A65, - 0x3A6C, - 0x3A68, - 0x3A6A, - 0x3A66, - 0x3A67 - }; + static int msg_no[] = { 0x3A56, 0x3A56, 0x3A56, 0x3A56, 0x3A57, 0x3A57, 0x3A5D, 0x3A57, 0x3A5E, 0x3A58, + 0x3A58, 0x3A58, 0x3A5F, 0x3A59, 0x3A59, 0x3A5A, 0x3A5A, 0x3A5A, 0x3A5A, 0x3A5B, + 0x3A5B, 0x3A5B, 0x3A61, 0x3A62, 0x3A5C, 0x3A5C, 0x3A63, 0x3A64, 0x3A56, 0x3A5B, + 0x3A5B, 0x3A60, 0x3A6B, 0x3A69, 0x3A65, 0x3A6C, 0x3A68, 0x3A6A, 0x3A66, 0x3A67 }; - int insect_type = curator->donated_item - ITM_INSECT_START; + int insect_type = curator->donated_item - ITM_INSECT_START; - if (insect_type < 0 || insect_type >= INSECT_ONLY_NUM) { - insect_type = 0; - } + if (insect_type < 0 || insect_type >= INSECT_ONLY_NUM) { + insect_type = 0; + } - mMsg_Set_continue_msg_num(mMsg_Get_base_window_p(), msg_no[insect_type]); - curator->msg_no = msg_no[insect_type]; - (*curator->setupTalkAction_proc)(curator, play, aCR_TALK_AFTER_EXPLAIN_INSECT); + mMsg_Set_continue_msg_num(mMsg_Get_base_window_p(), msg_no[insect_type]); + curator->msg_no = msg_no[insect_type]; + (*curator->setupTalkAction_proc)(curator, play, aCR_TALK_AFTER_EXPLAIN_INSECT); } static void aCR_set_item_name_str(mActor_name_t item) { - u8 item_str[mIN_ITEM_NAME_LEN]; + u8 item_str[mIN_ITEM_NAME_LEN]; - mIN_copy_name_str(item_str, item); - mMsg_Set_item_str_art(mMsg_Get_base_window_p(), mMsg_FREE_STR0, item_str, sizeof(item_str), mIN_get_item_article(item)); + mIN_copy_name_str(item_str, item); + mMsg_Set_item_str_art(mMsg_Get_base_window_p(), mMsg_FREE_STR0, item_str, sizeof(item_str), + mIN_get_item_article(item)); } static void aCR_set_other_player_name_str(int player_no) { - mMsg_Set_free_str(mMsg_Get_base_window_p(), mMsg_FREE_STR0, Save_Get(private[player_no]).player_ID.player_name, PLAYER_NAME_LEN); + mMsg_Set_free_str(mMsg_Get_base_window_p(), mMsg_FREE_STR0, Save_Get(private_data[player_no]).player_ID.player_name, + PLAYER_NAME_LEN); } static int aCR_countDisplayed() { - return mMmd_CountDisplayedFossil() + mMmd_CountDisplayedArt() + mMmd_CountDisplayedInsect() + mMmd_CountDisplayedFish(); + return mMmd_CountDisplayedFossil() + mMmd_CountDisplayedArt() + mMmd_CountDisplayedInsect() + + mMmd_CountDisplayedFish(); } static int aCR_get_msg_no_after_talk() { - static int msg_no[] = { 0x2F58, 0x2F59, 0x2F5A, 0x2F5B }; - int displayed = aCR_countDisplayed(); - int idx; + static int msg_no[] = { 0x2F58, 0x2F59, 0x2F5A, 0x2F5B }; + int displayed = aCR_countDisplayed(); + int idx; - if (displayed == 0) { - idx = 0; - } - else if (displayed <= 36) { - idx = 1; - } - else if (displayed <= 84) { - idx = 2; - } - else { - idx = 3; - } + if (displayed == 0) { + idx = 0; + } else if (displayed <= 36) { + idx = 1; + } else if (displayed <= 84) { + idx = 2; + } else { + idx = 3; + } - return msg_no[idx]; + return msg_no[idx]; } static int aCR_get_idx_to_donate_fossil(mActor_name_t item) { - int donator = aCR_GetFossilPartDonator(item); + int donator = aCR_GetFossilPartDonator(item); - if (donator == (Common_Get(player_no) + 1)) { - return 4; - } - - switch (donator) { - case mMmd_DONATOR_NONE: - { - switch (item) { - case FTR_FOSSIL_TRILOBITE: - return 17; - case FTR_FOSSIL_AMMONITE: - return 18; - case FTR_FOSSIL_EGG: - return 19; - case FTR_FOSSIL_TRACK: - return 20; - case FTR_FOSSIL_AMBER: - return 21; - default: - return 16; - } + if (donator == (Common_Get(player_no) + 1)) { + return 4; } - case mMmd_DONATOR_DELETED_PLAYER: - return 12; - } + switch (donator) { + case mMmd_DONATOR_NONE: { + switch (item) { + case FTR_FOSSIL_TRILOBITE: + return 17; + case FTR_FOSSIL_AMMONITE: + return 18; + case FTR_FOSSIL_EGG: + return 19; + case FTR_FOSSIL_TRACK: + return 20; + case FTR_FOSSIL_AMBER: + return 21; + default: + return 16; + } + } - aCR_set_other_player_name_str(donator - 1); - return 8; + case mMmd_DONATOR_DELETED_PLAYER: + return 12; + } + + aCR_set_other_player_name_str(donator - 1); + return 8; } static int aCR_get_idx_to_donate_art(mActor_name_t item) { - int donator = aCR_GetArtDonator(item); + int donator = aCR_GetArtDonator(item); - switch (item) { - case FTR_PAINTING15_UNUSED: - case FTR_PAINTING16_UNUSED: - return 1; - } + switch (item) { + case FTR_PAINTING15_UNUSED: + case FTR_PAINTING16_UNUSED: + return 1; + } - if (donator == (Common_Get(player_no) + 1)) { - return 5; - } - - switch (donator) { - case mMmd_DONATOR_NONE: - return 22 + RANDOM(3); - case mMmd_DONATOR_DELETED_PLAYER: - return 13; - } + if (donator == (Common_Get(player_no) + 1)) { + return 5; + } - aCR_set_other_player_name_str(donator - 1); - return 9; + switch (donator) { + case mMmd_DONATOR_NONE: + return 22 + RANDOM(3); + case mMmd_DONATOR_DELETED_PLAYER: + return 13; + } + + aCR_set_other_player_name_str(donator - 1); + return 9; } static int aCR_get_idx_to_donate_insect(mActor_name_t item) { - int donator = aCR_GetInsectDonator(item); - int res; + int donator = aCR_GetInsectDonator(item); + int res; - if (donator == (Common_Get(player_no) + 1)) { - res = 7; - } - else { - switch (donator) { - case mMmd_DONATOR_NONE: - { - /* Is it a cockroach? */ - if (item == ITM_INSECT28) { - res = 26; - } - else { - res = 25; - } - break; + if (donator == (Common_Get(player_no) + 1)) { + res = 7; + } else { + switch (donator) { + case mMmd_DONATOR_NONE: { + /* Is it a cockroach? */ + if (item == ITM_INSECT28) { + res = 26; + } else { + res = 25; + } + break; + } + + case mMmd_DONATOR_DELETED_PLAYER: + res = 15; + break; + + default: + aCR_set_other_player_name_str(donator - 1); + res = 11; + break; + } } - case mMmd_DONATOR_DELETED_PLAYER: - res = 15; - break; - - default: - aCR_set_other_player_name_str(donator - 1); - res = 11; - break; - } - } - - return res; + return res; } static int aCR_get_idx_to_donate_fish(mActor_name_t item) { - int donator = aCR_GetFishDonator(item); + int donator = aCR_GetFishDonator(item); - if (donator == (Common_Get(player_no) + 1)) { - return 6; - } - - switch (donator) { - case mMmd_DONATOR_NONE: - return 27; + if (donator == (Common_Get(player_no) + 1)) { + return 6; + } - case mMmd_DONATOR_DELETED_PLAYER: - return 14; - } + switch (donator) { + case mMmd_DONATOR_NONE: + return 27; - aCR_set_other_player_name_str(donator - 1); - return 10; + case mMmd_DONATOR_DELETED_PLAYER: + return 14; + } + + aCR_set_other_player_name_str(donator - 1); + return 10; } static void aCR_after_talk_start_wait(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - if (mMsg_Check_MainNormalContinue(msg_p) == TRUE) { - int msg_no = aCR_get_msg_no_after_talk(); - - mMsg_Set_continue_msg_num(msg_p, msg_no); - (*curator->setupTalkAction_proc)(curator, play, aCR_TALK_END_WAIT); - } + if (mMsg_Check_MainNormalContinue(msg_p) == TRUE) { + int msg_no = aCR_get_msg_no_after_talk(); + + mMsg_Set_continue_msg_num(msg_p, msg_no); + (*curator->setupTalkAction_proc)(curator, play, aCR_TALK_END_WAIT); + } } static void aCR_chk_request(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - int talk_act; + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + int talk_act; - if (mMsg_Get_msg_num(msg_p) == 0x2F50 && mMsg_Check_MainNormalContinue(msg_p) == TRUE) { - switch (mChoice_Get_ChoseNum(mChoice_Get_base_window_p())) { - case mChoice_CHOICE0: - talk_act = aCR_TALK_MENU_OPEN_WAIT; - break; - case mChoice_CHOICE1: - talk_act = aCR_TALK_CHK_DECIDE_TO_DONATE; - break; - case mChoice_CHOICE2: - talk_act = aCR_TALK_AFTER_TALK_START_WAIT; - break; - default: - talk_act = aCR_TALK_END_WAIT; - break; + if (mMsg_Get_msg_num(msg_p) == 0x2F50 && mMsg_Check_MainNormalContinue(msg_p) == TRUE) { + switch (mChoice_Get_ChoseNum(mChoice_Get_base_window_p())) { + case mChoice_CHOICE0: + talk_act = aCR_TALK_MENU_OPEN_WAIT; + break; + case mChoice_CHOICE1: + talk_act = aCR_TALK_CHK_DECIDE_TO_DONATE; + break; + case mChoice_CHOICE2: + talk_act = aCR_TALK_AFTER_TALK_START_WAIT; + break; + default: + talk_act = aCR_TALK_END_WAIT; + break; + } + + (*curator->setupTalkAction_proc)(curator, play, talk_act); } - - (*curator->setupTalkAction_proc)(curator, play, talk_act); - } } static void aCR_chk_decide_to_donate(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - int talk_act; + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + int talk_act; - if (mMsg_Get_msg_num(msg_p) == 0x2F5F && mMsg_Check_MainNormalContinue(msg_p) == TRUE) { - switch (mChoice_Get_ChoseNum(mChoice_Get_base_window_p())) { - case mChoice_CHOICE0: - talk_act = aCR_TALK_CHK_DECIDE_TO_DONATE2; - break; - case mChoice_CHOICE1: - talk_act = aCR_TALK_END_WAIT; - break; - default: - talk_act = aCR_TALK_END_WAIT; - break; + if (mMsg_Get_msg_num(msg_p) == 0x2F5F && mMsg_Check_MainNormalContinue(msg_p) == TRUE) { + switch (mChoice_Get_ChoseNum(mChoice_Get_base_window_p())) { + case mChoice_CHOICE0: + talk_act = aCR_TALK_CHK_DECIDE_TO_DONATE2; + break; + case mChoice_CHOICE1: + talk_act = aCR_TALK_END_WAIT; + break; + default: + talk_act = aCR_TALK_END_WAIT; + break; + } + + (*curator->setupTalkAction_proc)(curator, play, talk_act); } - - (*curator->setupTalkAction_proc)(curator, play, talk_act); - } } static void aCR_chk_decide_to_donate2(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - int talk_act; + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + int talk_act; - if (mMsg_Get_msg_num(msg_p) == 0x2F60 && mMsg_Check_MainNormalContinue(msg_p) == TRUE) { - switch (mChoice_Get_ChoseNum(mChoice_Get_base_window_p())) { - case mChoice_CHOICE0: - talk_act = aCR_TALK_MENU_OPEN_WAIT; - break; - case mChoice_CHOICE1: - talk_act = aCR_TALK_END_WAIT; - break; - default: - talk_act = aCR_TALK_END_WAIT; - break; + if (mMsg_Get_msg_num(msg_p) == 0x2F60 && mMsg_Check_MainNormalContinue(msg_p) == TRUE) { + switch (mChoice_Get_ChoseNum(mChoice_Get_base_window_p())) { + case mChoice_CHOICE0: + talk_act = aCR_TALK_MENU_OPEN_WAIT; + break; + case mChoice_CHOICE1: + talk_act = aCR_TALK_END_WAIT; + break; + default: + talk_act = aCR_TALK_END_WAIT; + break; + } + + (*curator->setupTalkAction_proc)(curator, play, talk_act); } - - (*curator->setupTalkAction_proc)(curator, play, talk_act); - } } static void aCR_menu_open_wait(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - if (mMsg_Check_MainNormalContinue(mMsg_Get_base_window_p()) == TRUE) { - (*curator->setupTalkAction_proc)(curator, play, aCR_TALK_MSG_WIN_CLOSE_WAIT); - } + if (mMsg_Check_MainNormalContinue(mMsg_Get_base_window_p()) == TRUE) { + (*curator->setupTalkAction_proc)(curator, play, aCR_TALK_MSG_WIN_CLOSE_WAIT); + } } static void aCR_msg_win_close_wait(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - if (mMsg_Check_main_wait(mMsg_Get_base_window_p()) == TRUE) { - (*curator->setupTalkAction_proc)(curator, play, aCR_TALK_MENU_CLOSE_WAIT); - } + if (mMsg_Check_main_wait(mMsg_Get_base_window_p()) == TRUE) { + (*curator->setupTalkAction_proc)(curator, play, aCR_TALK_MENU_CLOSE_WAIT); + } } static void aCR_menu_close_wait(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - int talk_act; + int talk_act; - if (play->submenu.open_flag == FALSE) { - talk_act = aCR_TALK_GET_DEMO_START_WAIT; + if (play->submenu.open_flag == FALSE) { + talk_act = aCR_TALK_GET_DEMO_START_WAIT; - if (play->submenu.item_p->item == EMPTY_NO) { - talk_act = aCR_TALK_MSG_WIN_OPEN_WAIT; + if (play->submenu.item_p->item == EMPTY_NO) { + talk_act = aCR_TALK_MSG_WIN_OPEN_WAIT; + } + + (*curator->setupTalkAction_proc)(curator, play, talk_act); } - - (*curator->setupTalkAction_proc)(curator, play, talk_act); - } } static void aCR_get_demo_start_wait(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - if (Common_Get(clip).handOverItem_clip->request_mode == aHOI_REQUEST_TRANS_WAIT) { - (*curator->setupTalkAction_proc)(curator, play, aCR_TALK_GET_DEMO_END_WAIT); - } + if (Common_Get(clip).handOverItem_clip->request_mode == aHOI_REQUEST_TRANS_WAIT) { + (*curator->setupTalkAction_proc)(curator, play, aCR_TALK_GET_DEMO_END_WAIT); + } } static void aCR_get_demo_end_wait(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - if (Common_Get(clip).handOverItem_clip->request_mode == aHOI_REQUEST_GET_PULL_WAIT) { - curator->npc_class.talk_info.default_animation = 30; - (*curator->setupTalkAction_proc)(curator, play, aCR_TALK_MSG_WIN_OPEN_WAIT); - } + if (Common_Get(clip).handOverItem_clip->request_mode == aHOI_REQUEST_GET_PULL_WAIT) { + curator->npc_class.talk_info.default_animation = 30; + (*curator->setupTalkAction_proc)(curator, play, aCR_TALK_MSG_WIN_OPEN_WAIT); + } } -#define aCR_IS_FOSSIL(item) \ - ((item) >= FTR_DINO_START && (item) <= FTR_DINO_END) +#define aCR_IS_FOSSIL(item) ((item) >= FTR_DINO_START && (item) <= FTR_DINO_END) -#define aCR_IS_ART(item) \ - ((item) >= FTR_PAINTING0 && (item) <= FTR_PAINTING14_WEST) +#define aCR_IS_ART(item) ((item) >= FTR_PAINTING0 && (item) <= FTR_PAINTING14_WEST) -#define aCR_IS_INSECT(item) \ - ((item) >= ITM_INSECT_START && (item) < ITM_INSECT_END) +#define aCR_IS_INSECT(item) ((item) >= ITM_INSECT_START && (item) < ITM_INSECT_END) -#define aCR_IS_FISH(item) \ - ((item) >= ITM_FISH_START && (item) <= ITM_FISH_END) +#define aCR_IS_FISH(item) ((item) >= ITM_FISH_START && (item) <= ITM_FISH_END) typedef struct { - int msg_no; - int talk_act; + int msg_no; + int talk_act; } aCR_donate_act_c; static void aCR_msg_win_open_wait(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - static aCR_donate_act_c donate_act[] = { - { 0x2F63, aCR_TALK_END_WAIT }, - { 0x3A83, aCR_TALK_RETURN_DEMO_START_WAIT }, - { 0x2F64, aCR_TALK_RETURN_DEMO_START_WAIT }, - { 0x2F65, aCR_TALK_RETURN_DEMO_START_WAIT }, - { 0x2F6B, aCR_TALK_RETURN_DEMO_START_WAIT2 }, - { 0x2F6C, aCR_TALK_RETURN_DEMO_START_WAIT2 }, - { 0x2F6D, aCR_TALK_RETURN_DEMO_START_WAIT2 }, - { 0x2F6E, aCR_TALK_RETURN_DEMO_START_WAIT2 }, - { 0x2F67, aCR_TALK_RETURN_DEMO_START_WAIT2 }, - { 0x2F68, aCR_TALK_RETURN_DEMO_START_WAIT2 }, - { 0x2F69, aCR_TALK_RETURN_DEMO_START_WAIT2 }, - { 0x2F6A, aCR_TALK_RETURN_DEMO_START_WAIT2 }, - { 0x2F90, aCR_TALK_RETURN_DEMO_START_WAIT2 }, - { 0x2F91, aCR_TALK_RETURN_DEMO_START_WAIT2 }, - { 0x2F92, aCR_TALK_RETURN_DEMO_START_WAIT2 }, - { 0x2F93, aCR_TALK_RETURN_DEMO_START_WAIT2 }, - { 0x2F8F, aCR_TALK_PUTAWAY_DEMO_START_WAIT2 }, - { 0x2F7F, aCR_TALK_PUTAWAY_DEMO_START_WAIT3 }, - { 0x2F80, aCR_TALK_PUTAWAY_DEMO_START_WAIT3 }, - { 0x2F81, aCR_TALK_PUTAWAY_DEMO_START_WAIT3 }, - { 0x2F82, aCR_TALK_PUTAWAY_DEMO_START_WAIT3 }, - { 0x2F83, aCR_TALK_PUTAWAY_DEMO_START_WAIT3 }, - { 0x2F70, aCR_TALK_PUTAWAY_DEMO_START_WAIT }, - { 0x2F71, aCR_TALK_PUTAWAY_DEMO_START_WAIT }, - { 0x2F72, aCR_TALK_PUTAWAY_DEMO_START_WAIT }, - { 0x2F86, aCR_TALK_PUTAWAY_DEMO_START_WAIT5 }, - { 0x2F87, aCR_TALK_PUTAWAY_DEMO_START_WAIT4 }, - { 0x2F89, aCR_TALK_PUTAWAY_DEMO_START_WAIT5_2 } - }; + static aCR_donate_act_c donate_act[] = { { 0x2F63, aCR_TALK_END_WAIT }, + { 0x3A83, aCR_TALK_RETURN_DEMO_START_WAIT }, + { 0x2F64, aCR_TALK_RETURN_DEMO_START_WAIT }, + { 0x2F65, aCR_TALK_RETURN_DEMO_START_WAIT }, + { 0x2F6B, aCR_TALK_RETURN_DEMO_START_WAIT2 }, + { 0x2F6C, aCR_TALK_RETURN_DEMO_START_WAIT2 }, + { 0x2F6D, aCR_TALK_RETURN_DEMO_START_WAIT2 }, + { 0x2F6E, aCR_TALK_RETURN_DEMO_START_WAIT2 }, + { 0x2F67, aCR_TALK_RETURN_DEMO_START_WAIT2 }, + { 0x2F68, aCR_TALK_RETURN_DEMO_START_WAIT2 }, + { 0x2F69, aCR_TALK_RETURN_DEMO_START_WAIT2 }, + { 0x2F6A, aCR_TALK_RETURN_DEMO_START_WAIT2 }, + { 0x2F90, aCR_TALK_RETURN_DEMO_START_WAIT2 }, + { 0x2F91, aCR_TALK_RETURN_DEMO_START_WAIT2 }, + { 0x2F92, aCR_TALK_RETURN_DEMO_START_WAIT2 }, + { 0x2F93, aCR_TALK_RETURN_DEMO_START_WAIT2 }, + { 0x2F8F, aCR_TALK_PUTAWAY_DEMO_START_WAIT2 }, + { 0x2F7F, aCR_TALK_PUTAWAY_DEMO_START_WAIT3 }, + { 0x2F80, aCR_TALK_PUTAWAY_DEMO_START_WAIT3 }, + { 0x2F81, aCR_TALK_PUTAWAY_DEMO_START_WAIT3 }, + { 0x2F82, aCR_TALK_PUTAWAY_DEMO_START_WAIT3 }, + { 0x2F83, aCR_TALK_PUTAWAY_DEMO_START_WAIT3 }, + { 0x2F70, aCR_TALK_PUTAWAY_DEMO_START_WAIT }, + { 0x2F71, aCR_TALK_PUTAWAY_DEMO_START_WAIT }, + { 0x2F72, aCR_TALK_PUTAWAY_DEMO_START_WAIT }, + { 0x2F86, aCR_TALK_PUTAWAY_DEMO_START_WAIT5 }, + { 0x2F87, aCR_TALK_PUTAWAY_DEMO_START_WAIT4 }, + { 0x2F89, aCR_TALK_PUTAWAY_DEMO_START_WAIT5_2 } }; - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - mActor_name_t item; - int act_idx; - aCR_donate_act_c* donate_act_p; + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + mActor_name_t item; + int act_idx; + aCR_donate_act_c* donate_act_p; - if (mMsg_Check_not_series_main_wait(msg_p) == TRUE) { - act_idx = 0; - item = play->submenu.item_p->item; + if (mMsg_Check_not_series_main_wait(msg_p) == TRUE) { + act_idx = 0; + item = play->submenu.item_p->item; - if (item != EMPTY_NO) { - if (aCR_IS_FOSSIL(item) == TRUE) { - act_idx = aCR_get_idx_to_donate_fossil(item); - } - else if (aCR_IS_ART(item) == TRUE) { - act_idx = aCR_get_idx_to_donate_art(item); - } - else if (aCR_IS_INSECT(item) == TRUE) { - act_idx = aCR_get_idx_to_donate_insect(item); - } - else if (aCR_IS_FISH(item) == TRUE) { - act_idx = aCR_get_idx_to_donate_fish(item); - } - else if (item == ITM_FOSSIL) { - act_idx = 3; - } - else { - act_idx = 2; - } + if (item != EMPTY_NO) { + if (aCR_IS_FOSSIL(item) == TRUE) { + act_idx = aCR_get_idx_to_donate_fossil(item); + } else if (aCR_IS_ART(item) == TRUE) { + act_idx = aCR_get_idx_to_donate_art(item); + } else if (aCR_IS_INSECT(item) == TRUE) { + act_idx = aCR_get_idx_to_donate_insect(item); + } else if (aCR_IS_FISH(item) == TRUE) { + act_idx = aCR_get_idx_to_donate_fish(item); + } else if (item == ITM_FOSSIL) { + act_idx = 3; + } else { + act_idx = 2; + } - aCR_set_item_name_str(item); + aCR_set_item_name_str(item); + } + + donate_act_p = &donate_act[act_idx]; + curator->donated_item = item; + mMsg_Set_continue_msg_num(msg_p, donate_act_p->msg_no); + mMsg_Set_ForceNext(msg_p); + (*curator->setupTalkAction_proc)(curator, play, donate_act_p->talk_act); } - - donate_act_p = &donate_act[act_idx]; - curator->donated_item = item; - mMsg_Set_continue_msg_num(msg_p, donate_act_p->msg_no); - mMsg_Set_ForceNext(msg_p); - (*curator->setupTalkAction_proc)(curator, play, donate_act_p->talk_act); - } } static void aCR_return_demo_start_wait(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - int order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 1); + int order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 1); - if (order == 10) { - int talk_act = aCR_TALK_RETURN_DEMO_END_WAIT; + if (order == 10) { + int talk_act = aCR_TALK_RETURN_DEMO_END_WAIT; - if (curator->talk_act_idx != aCR_TALK_RETURN_DEMO_START_WAIT) { - talk_act = aCR_TALK_RETURN_DEMO_END_WAIT2; + if (curator->talk_act_idx != aCR_TALK_RETURN_DEMO_START_WAIT) { + talk_act = aCR_TALK_RETURN_DEMO_END_WAIT2; + } + + (*curator->setupTalkAction_proc)(curator, play, talk_act); } - - (*curator->setupTalkAction_proc)(curator, play, talk_act); - } } static void aCR_return_demo_end_wait(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - if (Common_Get(clip).handOverItem_clip->master_actor == NULL) { - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - int talk_act = aCR_TALK_CHK_CONTINUE_TO_DONATE; + if (Common_Get(clip).handOverItem_clip->master_actor == NULL) { + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + int talk_act = aCR_TALK_CHK_CONTINUE_TO_DONATE; - if (curator->talk_act_idx != aCR_TALK_RETURN_DEMO_END_WAIT) { - talk_act = aCR_TALK_CHK_CONTINUE_TO_DONATE2; + if (curator->talk_act_idx != aCR_TALK_RETURN_DEMO_END_WAIT) { + talk_act = aCR_TALK_CHK_CONTINUE_TO_DONATE2; + } + + curator->npc_class.talk_info.default_animation = -1; + mMsg_Unset_LockContinue(msg_p); + (*curator->setupTalkAction_proc)(curator, play, talk_act); } - - curator->npc_class.talk_info.default_animation = -1; - mMsg_Unset_LockContinue(msg_p); - (*curator->setupTalkAction_proc)(curator, play, talk_act); - } } static void aCR_chk_continue_to_donate(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - static int chk_msg_num[] = { 0x2F66, 0x2F6F, 0x2F73 }; + static int chk_msg_num[] = { 0x2F66, 0x2F6F, 0x2F73 }; - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - int donate_idx = curator->talk_act_idx - aCR_TALK_CHK_CONTINUE_TO_DONATE; + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + int donate_idx = curator->talk_act_idx - aCR_TALK_CHK_CONTINUE_TO_DONATE; - if (chk_msg_num[donate_idx] == mMsg_Get_msg_num(msg_p) && mMsg_Check_MainNormalContinue(msg_p)) { - int talk_act = aCR_TALK_END_WAIT; - int msg_no; + if (chk_msg_num[donate_idx] == mMsg_Get_msg_num(msg_p) && mMsg_Check_MainNormalContinue(msg_p)) { + int talk_act = aCR_TALK_END_WAIT; + int msg_no; - if (mChoice_Get_ChoseNum(mChoice_Get_base_window_p()) == mChoice_CHOICE0) { - talk_act = aCR_TALK_MENU_OPEN_WAIT; - msg_no = 0x2F62; + if (mChoice_Get_ChoseNum(mChoice_Get_base_window_p()) == mChoice_CHOICE0) { + talk_act = aCR_TALK_MENU_OPEN_WAIT; + msg_no = 0x2F62; + } else { + msg_no = aCR_get_msg_no_after_talk(); + } + + if (curator->talk_act_idx != aCR_TALK_CHK_CONTINUE_TO_DONATE3) { + mMsg_Set_continue_msg_num(msg_p, msg_no); + } + + (*curator->setupTalkAction_proc)(curator, play, talk_act); } - else { - msg_no = aCR_get_msg_no_after_talk(); - } - - if (curator->talk_act_idx != aCR_TALK_CHK_CONTINUE_TO_DONATE3) { - mMsg_Set_continue_msg_num(msg_p, msg_no); - } - - (*curator->setupTalkAction_proc)(curator, play, talk_act); - } } static void aCR_putaway_demo_start_wait(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - int order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 1); - - if (order == 14) { - (*curator->setupTalkAction_proc)(curator, play, curator->talk_act_idx + (aCR_TALK_PUTAWAY_DEMO_END_WAIT - aCR_TALK_PUTAWAY_DEMO_START_WAIT)); - } + int order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 1); + + if (order == 14) { + (*curator->setupTalkAction_proc)( + curator, play, curator->talk_act_idx + (aCR_TALK_PUTAWAY_DEMO_END_WAIT - aCR_TALK_PUTAWAY_DEMO_START_WAIT)); + } } static void aCR_putaway_demo_start_wait5_2(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - static int msg_no[FISH_NUM + 1] = { - 0x3A6D, - 0x3A6E, - 0x3A6D, - 0x3A80, - 0x3A6D, - 0x3A6D, - 0x3A6E, - 0x3A6F, - 0x3A6D, - 0x3A70, - 0x3A71, - 0x3A6D, - 0x3A6E, - 0x3A72, - 0x3A6D, - 0x3A6D, - 0x3A6D, - 0x3A73, - 0x3A6E, - 0x3A81, - 0x3A6E, - 0x3A74, - 0x3A6D, - 0x3A7D, - 0x3A75, - 0x3A76, - 0x3A6E, - 0x3A6E, - 0x3A7E, - 0x3A77, - 0x3A7D, - 0x3A79, - 0x3A7C, - 0x3A82, - 0x3A77, - 0x3A7F, - 0x3A6D, - 0x3A7A, - 0x3A7B, - 0x3A78 - // uninitialized entry here - }; + static int msg_no[FISH_NUM + 1] = { + 0x3A6D, 0x3A6E, 0x3A6D, 0x3A80, 0x3A6D, 0x3A6D, 0x3A6E, 0x3A6F, 0x3A6D, 0x3A70, 0x3A71, 0x3A6D, 0x3A6E, 0x3A72, + 0x3A6D, 0x3A6D, 0x3A6D, 0x3A73, 0x3A6E, 0x3A81, 0x3A6E, 0x3A74, 0x3A6D, 0x3A7D, 0x3A75, 0x3A76, 0x3A6E, 0x3A6E, + 0x3A7E, 0x3A77, 0x3A7D, 0x3A79, 0x3A7C, 0x3A82, 0x3A77, 0x3A7F, 0x3A6D, 0x3A7A, 0x3A7B, 0x3A78 + // uninitialized entry here + }; - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - if (mMsg_Get_msg_num(msg_p) == 0x2F89) { - int fish_type = curator->donated_item - ITM_FISH_START; + if (mMsg_Get_msg_num(msg_p) == 0x2F89) { + int fish_type = curator->donated_item - ITM_FISH_START; - if (fish_type < 0 || fish_type >= (FISH_NUM + 1)) { - fish_type = 0; + if (fish_type < 0 || fish_type >= (FISH_NUM + 1)) { + fish_type = 0; + } + + mMsg_Set_continue_msg_num(msg_p, msg_no[fish_type]); + (*curator->setupTalkAction_proc)(curator, play, aCR_TALK_PUTAWAY_DEMO_START_WAIT6); } - - mMsg_Set_continue_msg_num(msg_p, msg_no[fish_type]); - (*curator->setupTalkAction_proc)(curator, play, aCR_TALK_PUTAWAY_DEMO_START_WAIT6); - } } static void aCR_putaway_demo_end_wait(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - if (Common_Get(clip).handOverItem_clip->master_actor == NULL) { - curator->npc_class.talk_info.default_animation = -1; - mMsg_Unset_LockContinue(mMsg_Get_base_window_p()); + if (Common_Get(clip).handOverItem_clip->master_actor == NULL) { + curator->npc_class.talk_info.default_animation = -1; + mMsg_Unset_LockContinue(mMsg_Get_base_window_p()); - switch (curator->talk_act_idx) { - case aCR_TALK_PUTAWAY_DEMO_END_WAIT: - aCR_chk_art_complete(curator, play); - break; - case aCR_TALK_PUTAWAY_DEMO_END_WAIT2: - aCR_chk_fossil_parts_complete(curator, play); - break; - case aCR_TALK_PUTAWAY_DEMO_END_WAIT3: - aCR_chk_fossil_complete(curator, play); - break; - case aCR_TALK_PUTAWAY_DEMO_END_WAIT4: - aCR_chk_insect_complete(curator, play); - break; - case aCR_TALK_PUTAWAY_DEMO_END_WAIT5: - aCR_set_after_explain_insect(curator, play); - break; - case aCR_TALK_PUTAWAY_DEMO_END_WAIT6: - aCR_chk_fish_complete(curator, play); - break; + switch (curator->talk_act_idx) { + case aCR_TALK_PUTAWAY_DEMO_END_WAIT: + aCR_chk_art_complete(curator, play); + break; + case aCR_TALK_PUTAWAY_DEMO_END_WAIT2: + aCR_chk_fossil_parts_complete(curator, play); + break; + case aCR_TALK_PUTAWAY_DEMO_END_WAIT3: + aCR_chk_fossil_complete(curator, play); + break; + case aCR_TALK_PUTAWAY_DEMO_END_WAIT4: + aCR_chk_insect_complete(curator, play); + break; + case aCR_TALK_PUTAWAY_DEMO_END_WAIT5: + aCR_set_after_explain_insect(curator, play); + break; + case aCR_TALK_PUTAWAY_DEMO_END_WAIT6: + aCR_chk_fish_complete(curator, play); + break; + } } - } } static void aCR_after_explain_insect(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - if (curator->msg_no == mMsg_Get_msg_num(msg_p) && mMsg_Check_MainNormalContinue(msg_p)) { - aCR_chk_insect_complete(curator, play); - } + if (curator->msg_no == mMsg_Get_msg_num(msg_p) && mMsg_Check_MainNormalContinue(msg_p)) { + aCR_chk_insect_complete(curator, play); + } } static void aCR_thanks_fossil_msg_end_wait(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - if (curator->msg_no == mMsg_Get_msg_num(msg_p) && mMsg_Check_MainNormalContinue(msg_p)) { - aCR_chk_fossil_complete(curator, play); - } + if (curator->msg_no == mMsg_Get_msg_num(msg_p) && mMsg_Check_MainNormalContinue(msg_p)) { + aCR_chk_fossil_complete(curator, play); + } } static void aCR_chk_all_complete(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - static int msg_no[] = { 0x2F76, 0x2F77 }; - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + static int msg_no[] = { 0x2F76, 0x2F77 }; + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - if (curator->msg_no == mMsg_Get_msg_num(msg_p) && mMsg_Check_MainNormalContinue(msg_p) == TRUE) { - int msg_idx = 0; + if (curator->msg_no == mMsg_Get_msg_num(msg_p) && mMsg_Check_MainNormalContinue(msg_p) == TRUE) { + int msg_idx = 0; - if (aCR_countDisplayed() == (mMmd_FOSSIL_NUM + mMmd_ART_NUM + mMmd_INSECT_NUM + mMmd_FISH_NUM)) { - mMsm_SetCompMail(); - msg_idx = 1; + if (aCR_countDisplayed() == (mMmd_FOSSIL_NUM + mMmd_ART_NUM + mMmd_INSECT_NUM + mMmd_FISH_NUM)) { + mMsm_SetCompMail(); + msg_idx = 1; + } + + mMsg_Set_continue_msg_num(msg_p, msg_no[msg_idx]); + (*curator->setupTalkAction_proc)(curator, play, aCR_TALK_END_WAIT); } - - mMsg_Set_continue_msg_num(msg_p, msg_no[msg_idx]); - (*curator->setupTalkAction_proc)(curator, play, aCR_TALK_END_WAIT); - } } static void aCR_msg_win_close_wait_init(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - mMsg_request_main_disappear_wait_type1(mMsg_Get_base_window_p()); + mMsg_request_main_disappear_wait_type1(mMsg_Get_base_window_p()); } static void aCR_menu_close_wait_init(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - mSM_open_submenu(&play->submenu, mSM_OVL_INVENTORY, mSM_IV_OPEN_CURATOR, 0); + mSM_open_submenu(&play->submenu, mSM_OVL_INVENTORY, mSM_IV_OPEN_CURATOR, 0); } static void aCR_get_demo_end_wait_init(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 1, 3); - Common_Get(clip).handOverItem_clip->player_after_mode = 8; + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 1, 3); + Common_Get(clip).handOverItem_clip->player_after_mode = 8; } static void aCR_msg_win_open_wait_init(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - mMsg_request_main_appear_wait_type1(msg_p); - mMsg_Unset_LockContinue(msg_p); + mMsg_request_main_appear_wait_type1(msg_p); + mMsg_Unset_LockContinue(msg_p); } static void aCR_return_demo_end_wait_init(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - mMsg_Set_LockContinue(mMsg_Get_base_window_p()); + mMsg_Set_LockContinue(mMsg_Get_base_window_p()); } static void aCR_putaway_demo_end_wait_init(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - Submenu_Item_c* sm_item_p = play->submenu.item_p; + Submenu_Item_c* sm_item_p = play->submenu.item_p; - if (mMmd_RequestMuseumDisplay(sm_item_p->item) == TRUE) { - mPr_SetPossessionItem(Common_Get(now_private), sm_item_p->slot_no, EMPTY_NO, mPr_ITEM_COND_NORMAL); - } + if (mMmd_RequestMuseumDisplay(sm_item_p->item) == TRUE) { + mPr_SetPossessionItem(Common_Get(now_private), sm_item_p->slot_no, EMPTY_NO, mPr_ITEM_COND_NORMAL); + } - mMsg_Set_LockContinue(mMsg_Get_base_window_p()); + mMsg_Set_LockContinue(mMsg_Get_base_window_p()); } typedef void (*aCR_TALK_INIT_PROC)(NPC_CURATOR_ACTOR*, GAME_PLAY*); static void aCR_talk_init_proc(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play, int talk_act) { - static aCR_TALK_INIT_PROC init_proc[aCR_TALK_NUM] = { - (aCR_TALK_INIT_PROC)none_proc1, - (aCR_TALK_INIT_PROC)none_proc1, - (aCR_TALK_INIT_PROC)none_proc1, - (aCR_TALK_INIT_PROC)none_proc1, - (aCR_TALK_INIT_PROC)none_proc1, - (aCR_TALK_INIT_PROC)none_proc1, - &aCR_msg_win_close_wait_init, - &aCR_menu_close_wait_init, - (aCR_TALK_INIT_PROC)none_proc1, - &aCR_get_demo_end_wait_init, - &aCR_msg_win_open_wait_init, - (aCR_TALK_INIT_PROC)none_proc1, - (aCR_TALK_INIT_PROC)none_proc1, - &aCR_return_demo_end_wait_init, - &aCR_return_demo_end_wait_init, - (aCR_TALK_INIT_PROC)none_proc1, - (aCR_TALK_INIT_PROC)none_proc1, - (aCR_TALK_INIT_PROC)none_proc1, - (aCR_TALK_INIT_PROC)none_proc1, - (aCR_TALK_INIT_PROC)none_proc1, - (aCR_TALK_INIT_PROC)none_proc1, - (aCR_TALK_INIT_PROC)none_proc1, - (aCR_TALK_INIT_PROC)none_proc1, - (aCR_TALK_INIT_PROC)none_proc1, - (aCR_TALK_INIT_PROC)none_proc1, - &aCR_putaway_demo_end_wait_init, - &aCR_putaway_demo_end_wait_init, - &aCR_putaway_demo_end_wait_init, - &aCR_putaway_demo_end_wait_init, - &aCR_putaway_demo_end_wait_init, - &aCR_putaway_demo_end_wait_init, - (aCR_TALK_INIT_PROC)none_proc1, - (aCR_TALK_INIT_PROC)none_proc1, - (aCR_TALK_INIT_PROC)none_proc1 - }; + static aCR_TALK_INIT_PROC init_proc[aCR_TALK_NUM] = { + (aCR_TALK_INIT_PROC)none_proc1, (aCR_TALK_INIT_PROC)none_proc1, (aCR_TALK_INIT_PROC)none_proc1, + (aCR_TALK_INIT_PROC)none_proc1, (aCR_TALK_INIT_PROC)none_proc1, (aCR_TALK_INIT_PROC)none_proc1, + &aCR_msg_win_close_wait_init, &aCR_menu_close_wait_init, (aCR_TALK_INIT_PROC)none_proc1, + &aCR_get_demo_end_wait_init, &aCR_msg_win_open_wait_init, (aCR_TALK_INIT_PROC)none_proc1, + (aCR_TALK_INIT_PROC)none_proc1, &aCR_return_demo_end_wait_init, &aCR_return_demo_end_wait_init, + (aCR_TALK_INIT_PROC)none_proc1, (aCR_TALK_INIT_PROC)none_proc1, (aCR_TALK_INIT_PROC)none_proc1, + (aCR_TALK_INIT_PROC)none_proc1, (aCR_TALK_INIT_PROC)none_proc1, (aCR_TALK_INIT_PROC)none_proc1, + (aCR_TALK_INIT_PROC)none_proc1, (aCR_TALK_INIT_PROC)none_proc1, (aCR_TALK_INIT_PROC)none_proc1, + (aCR_TALK_INIT_PROC)none_proc1, &aCR_putaway_demo_end_wait_init, &aCR_putaway_demo_end_wait_init, + &aCR_putaway_demo_end_wait_init, &aCR_putaway_demo_end_wait_init, &aCR_putaway_demo_end_wait_init, + &aCR_putaway_demo_end_wait_init, (aCR_TALK_INIT_PROC)none_proc1, (aCR_TALK_INIT_PROC)none_proc1, + (aCR_TALK_INIT_PROC)none_proc1 + }; - (*init_proc[talk_act])(curator, play); + (*init_proc[talk_act])(curator, play); } static void aCR_setupTalkAction(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play, int talk_act) { - static aCR_TALK_ACT_PROC process[aCR_TALK_NUM] = { - (aCR_TALK_INIT_PROC)&none_proc1, - &aCR_after_talk_start_wait, - &aCR_chk_request, - &aCR_chk_decide_to_donate, - &aCR_chk_decide_to_donate2, - &aCR_menu_open_wait, - &aCR_msg_win_close_wait, - &aCR_menu_close_wait, - &aCR_get_demo_start_wait, - &aCR_get_demo_end_wait, - &aCR_msg_win_open_wait, - &aCR_return_demo_start_wait, - &aCR_return_demo_start_wait, - &aCR_return_demo_end_wait, - &aCR_return_demo_end_wait, - &aCR_chk_continue_to_donate, - &aCR_chk_continue_to_donate, - &aCR_chk_continue_to_donate, - &aCR_putaway_demo_start_wait, - &aCR_putaway_demo_start_wait, - &aCR_putaway_demo_start_wait, - &aCR_putaway_demo_start_wait, - &aCR_putaway_demo_start_wait, - &aCR_putaway_demo_start_wait, - &aCR_putaway_demo_start_wait5_2, - &aCR_putaway_demo_end_wait, - &aCR_putaway_demo_end_wait, - &aCR_putaway_demo_end_wait, - &aCR_putaway_demo_end_wait, - &aCR_putaway_demo_end_wait, - &aCR_putaway_demo_end_wait, - &aCR_after_explain_insect, - &aCR_thanks_fossil_msg_end_wait, - &aCR_chk_all_complete - }; + static aCR_TALK_ACT_PROC process[aCR_TALK_NUM] = { (aCR_TALK_INIT_PROC)&none_proc1, + &aCR_after_talk_start_wait, + &aCR_chk_request, + &aCR_chk_decide_to_donate, + &aCR_chk_decide_to_donate2, + &aCR_menu_open_wait, + &aCR_msg_win_close_wait, + &aCR_menu_close_wait, + &aCR_get_demo_start_wait, + &aCR_get_demo_end_wait, + &aCR_msg_win_open_wait, + &aCR_return_demo_start_wait, + &aCR_return_demo_start_wait, + &aCR_return_demo_end_wait, + &aCR_return_demo_end_wait, + &aCR_chk_continue_to_donate, + &aCR_chk_continue_to_donate, + &aCR_chk_continue_to_donate, + &aCR_putaway_demo_start_wait, + &aCR_putaway_demo_start_wait, + &aCR_putaway_demo_start_wait, + &aCR_putaway_demo_start_wait, + &aCR_putaway_demo_start_wait, + &aCR_putaway_demo_start_wait, + &aCR_putaway_demo_start_wait5_2, + &aCR_putaway_demo_end_wait, + &aCR_putaway_demo_end_wait, + &aCR_putaway_demo_end_wait, + &aCR_putaway_demo_end_wait, + &aCR_putaway_demo_end_wait, + &aCR_putaway_demo_end_wait, + &aCR_after_explain_insect, + &aCR_thanks_fossil_msg_end_wait, + &aCR_chk_all_complete }; - curator->talk_act_idx = talk_act; - curator->talk_proc = process[talk_act]; - aCR_talk_init_proc(curator, play, talk_act); + curator->talk_act_idx = talk_act; + curator->talk_proc = process[talk_act]; + aCR_talk_init_proc(curator, play, talk_act); } static void aCR_set_talk_info(ACTOR* actorx) { - static int msg_no[2][2][2][3] = { - { - { { 0x2F8B, 0x2F8C, 0x2F8C }, { 0x2F8D, 0x2F95, 0x2F8E } }, - { { 0x2F4E, 0x2F4F, 0x2F4F }, { 0x2F51, 0x2F96, 0x2F52 } } - }, - { - { { 0x2F53, 0x2F54, 0x2F54 }, { 0x2F55, 0x2F94, 0x2F56 } }, - { { 0x2F53, 0x2F54, 0x2F54 }, { 0x2F55, 0x2F94, 0x2F56 } } - } - }; + static int msg_no[2][2][2][3] = { { { { 0x2F8B, 0x2F8C, 0x2F8C }, { 0x2F8D, 0x2F95, 0x2F8E } }, + { { 0x2F4E, 0x2F4F, 0x2F4F }, { 0x2F51, 0x2F96, 0x2F52 } } }, + { { { 0x2F53, 0x2F54, 0x2F54 }, { 0x2F55, 0x2F94, 0x2F56 } }, + { { 0x2F53, 0x2F54, 0x2F54 }, { 0x2F55, 0x2F94, 0x2F56 } } } }; - NPC_CURATOR_ACTOR* curator = (NPC_CURATOR_ACTOR*)actorx; + NPC_CURATOR_ACTOR* curator = (NPC_CURATOR_ACTOR*)actorx; - int talk_act = aCR_TALK_END_WAIT; - int sel_msg_no; + int talk_act = aCR_TALK_END_WAIT; + int sel_msg_no; - if (Common_Get(clip).aprilfool_control_clip != NULL && Common_Get(clip).aprilfool_control_clip->talk_chk_proc(SP_NPC_CURATOR) == FALSE) { - sel_msg_no = (*Common_Get(clip).aprilfool_control_clip->get_msg_num_proc)(SP_NPC_CURATOR, TRUE); - } - else { - int completed = FALSE; - int not_foreigner = FALSE; - int not_first_talk = FALSE; - int action_idx = 0; + if (Common_Get(clip).aprilfool_control_clip != NULL && + Common_Get(clip).aprilfool_control_clip->talk_chk_proc(SP_NPC_CURATOR) == FALSE) { + sel_msg_no = (*Common_Get(clip).aprilfool_control_clip->get_msg_num_proc)(SP_NPC_CURATOR, TRUE); + } else { + int completed = FALSE; + int not_foreigner = FALSE; + int not_first_talk = FALSE; + int action_idx = 0; - if (aCR_countDisplayed() == (mMmd_FOSSIL_NUM + mMmd_ART_NUM + mMmd_INSECT_NUM + mMmd_FISH_NUM)) { - completed = TRUE; - } - - if (mLd_PlayerManKindCheck() == FALSE) { - not_foreigner = TRUE; - } - - if (aNPC_SPNPC_BIT_GET(Common_Get(spnpc_first_talk_flags), aNPC_SPNPC_BIT_CURATOR)) { - not_first_talk = TRUE; - } - - if (aCR_check_sleep_time() == TRUE) { - if (curator->action == aCR_ACTION_SLEEP_WAIT) { - action_idx = 1; - } - } - else { - action_idx = 2; - } - - if (completed == FALSE) { - if (not_foreigner == FALSE) { - if (not_first_talk == FALSE) { - talk_act = aCR_TALK_AFTER_TALK_START_WAIT; + if (aCR_countDisplayed() == (mMmd_FOSSIL_NUM + mMmd_ART_NUM + mMmd_INSECT_NUM + mMmd_FISH_NUM)) { + completed = TRUE; } - } - else { - talk_act = aCR_TALK_CHK_REQUEST; - } + + if (mLd_PlayerManKindCheck() == FALSE) { + not_foreigner = TRUE; + } + + if (aNPC_SPNPC_BIT_GET(Common_Get(spnpc_first_talk_flags), aNPC_SPNPC_BIT_CURATOR)) { + not_first_talk = TRUE; + } + + if (aCR_check_sleep_time() == TRUE) { + if (curator->action == aCR_ACTION_SLEEP_WAIT) { + action_idx = 1; + } + } else { + action_idx = 2; + } + + if (completed == FALSE) { + if (not_foreigner == FALSE) { + if (not_first_talk == FALSE) { + talk_act = aCR_TALK_AFTER_TALK_START_WAIT; + } + } else { + talk_act = aCR_TALK_CHK_REQUEST; + } + } + + sel_msg_no = msg_no[completed][not_foreigner][not_first_talk][action_idx]; } - sel_msg_no = msg_no[completed][not_foreigner][not_first_talk][action_idx]; - } - - mDemo_Set_msg_num(sel_msg_no); - curator->talk_act_idx = talk_act; + mDemo_Set_msg_num(sel_msg_no); + curator->talk_act_idx = talk_act; } static void aCR_talk_request(ACTOR* actorx, GAME* game) { - mDemo_Request(mDemo_TYPE_TALK, actorx, &aCR_set_talk_info); + mDemo_Request(mDemo_TYPE_TALK, actorx, &aCR_set_talk_info); } static int aCR_talk_init(ACTOR* actorx, GAME* game) { - NPC_CURATOR_ACTOR* curator = (NPC_CURATOR_ACTOR*)actorx; - GAME_PLAY* play = (GAME_PLAY*)game; + NPC_CURATOR_ACTOR* curator = (NPC_CURATOR_ACTOR*)actorx; + GAME_PLAY* play = (GAME_PLAY*)game; - (*curator->setupTalkAction_proc)(curator, play, curator->talk_act_idx); - mDemo_Set_ListenAble(); - aNPC_SPNPC_BIT_SET(Common_Get(spnpc_first_talk_flags), aNPC_SPNPC_BIT_CURATOR); - curator->npc_class.head.angle_add_y = DEG2SHORT_ANGLE(5.625f); - curator->action = aCR_ACTION_WAIT; + (*curator->setupTalkAction_proc)(curator, play, curator->talk_act_idx); + mDemo_Set_ListenAble(); + aNPC_SPNPC_BIT_SET(Common_Get(spnpc_first_talk_flags), aNPC_SPNPC_BIT_CURATOR); + curator->npc_class.head.angle_add_y = DEG2SHORT_ANGLE(5.625f); + curator->action = aCR_ACTION_WAIT; - return TRUE; + return TRUE; } static int aCR_talk_end_chk(ACTOR* actorx, GAME* game) { - NPC_CURATOR_ACTOR* curator = (NPC_CURATOR_ACTOR*)actorx; - GAME_PLAY* play = (GAME_PLAY*)game; - int res = FALSE; + NPC_CURATOR_ACTOR* curator = (NPC_CURATOR_ACTOR*)actorx; + GAME_PLAY* play = (GAME_PLAY*)game; + int res = FALSE; - (*curator->talk_proc)(curator, play); + (*curator->talk_proc)(curator, play); - if (mDemo_Check(mDemo_TYPE_TALK, actorx) == FALSE) { - res = TRUE; - } + if (mDemo_Check(mDemo_TYPE_TALK, actorx) == FALSE) { + res = TRUE; + } - return res; + return res; } static void aCR_actor_move(ACTOR* actorx, GAME* game) { - (*Common_Get(clip).npc_clip->move_proc)(actorx, game); + (*Common_Get(clip).npc_clip->move_proc)(actorx, game); } diff --git a/src/ac_npc_rcn_guide_move.c_inc b/src/ac_npc_rcn_guide_move.c_inc index 06812005..8a72a78c 100644 --- a/src/ac_npc_rcn_guide_move.c_inc +++ b/src/ac_npc_rcn_guide_move.c_inc @@ -19,7 +19,7 @@ static int aNRG_set_request_act(NPC_RCN_GUIDE_ACTOR* rcn_guide, u8 act_prio, u8 } static void aNRG_set_house_master_name(int house_idx) { - mMsg_SET_FREE_STR(mMsg_FREE_STR0, Save_Get(private[mHS_get_pl_no(house_idx)]).player_ID.player_name, + mMsg_SET_FREE_STR(mMsg_FREE_STR0, Save_Get(private_data[mHS_get_pl_no(house_idx)]).player_ID.player_name, PLAYER_NAME_LEN); } diff --git a/src/ac_train_door.c b/src/ac_train_door.c index 8fe35bf7..6af90349 100644 --- a/src/ac_train_door.c +++ b/src/ac_train_door.c @@ -20,72 +20,69 @@ ACTOR_PROFILE TrainDoor_Profile = { &aTRD_actor_dt, &aTRD_actor_move, &aTRD_actor_draw, - NULL + NULL, }; extern cKF_Skeleton_R_c cKF_bs_r_obj_romtrain_door; extern cKF_Animation_R_c cKF_ba_r_obj_romtrain_door; -static void aTRD_actor_ct(ACTOR* actor, GAME* game){ +static void aTRD_actor_ct(ACTOR* actor, GAME* game) { TRAINDOOR_ACTOR* traindoor = (TRAINDOOR_ACTOR*)actor; - cKF_SkeletonInfo_R_ct(&traindoor->keyframe, &cKF_bs_r_obj_romtrain_door, NULL, &traindoor->work, &traindoor->target); - cKF_SkeletonInfo_R_init(&traindoor->keyframe,traindoor->keyframe.skeleton, &cKF_ba_r_obj_romtrain_door,1.0f,51.0f,1.0f, - 0.0f,0.0f,0,NULL); + cKF_SkeletonInfo_R_ct(&traindoor->keyframe, &cKF_bs_r_obj_romtrain_door, NULL, traindoor->work, traindoor->target); + cKF_SkeletonInfo_R_init(&traindoor->keyframe, traindoor->keyframe.skeleton, &cKF_ba_r_obj_romtrain_door, 1.0f, + 51.0f, 1.0f, 0.0f, 0.0f, 0, NULL); traindoor->keyframe.morph_counter = 0.0f; cKF_SkeletonInfo_R_play(&traindoor->keyframe); } -static void aTRD_actor_dt(ACTOR* actor, GAME* game){ +static void aTRD_actor_dt(ACTOR* actor, GAME* game) { TRAINDOOR_ACTOR* traindoor = (TRAINDOOR_ACTOR*)actor; cKF_SkeletonInfo_R_dt(&traindoor->keyframe); } -static void aTRD_set_door_SE(ACTOR* actor){ +static void aTRD_set_door_SE(ACTOR* actor) { TRAINDOOR_ACTOR* traindoor = (TRAINDOOR_ACTOR*)actor; - static f32 chk_pat[] = {2.0f, 27.0f}; - static u16 se_no[] = {1042, 1043,0, 0,0,0, 0,0,0}; + static f32 chk_pat[] = { 2.0f, 27.0f }; + static u16 se_no[] = { NA_SE_TRAINDOOR0, NA_SE_TRAINDOOR1 }; int i; - for(i = 0; i < 2; i++){ - - if(cKF_FrameControl_passCheck_now(&traindoor->keyframe.frame_control,chk_pat[i]) != 0){ + for (i = 0; i < 2; i++) { + if (cKF_FrameControl_passCheck_now(&traindoor->keyframe.frame_control, chk_pat[i])) { sAdo_OngenTrgStart(se_no[i], &traindoor->actor_class.world.position); - return; + break; } } } -static void aTRD_actor_move(ACTOR* actor, GAME* game){ +static void aTRD_actor_move(ACTOR* actor, GAME* game) { TRAINDOOR_ACTOR* traindoor = (TRAINDOOR_ACTOR*)actor; - if(traindoor->idle == 1){ - traindoor->idle = 0; + if (traindoor->open_flag == TRUE) { + traindoor->open_flag = FALSE; traindoor->keyframe.frame_control.speed = 0.5f; } - if(cKF_SkeletonInfo_R_play(&traindoor->keyframe) == 1){ + if (cKF_SkeletonInfo_R_play(&traindoor->keyframe) == cKF_FRAMECONTROL_REPEAT) { traindoor->keyframe.frame_control.current_frame = traindoor->keyframe.frame_control.start_frame; traindoor->keyframe.frame_control.speed = 0.0f; } + aTRD_set_door_SE(actor); } -static void aTRD_actor_draw(ACTOR* actor, GAME* game){ +static void aTRD_actor_draw(ACTOR* actor, GAME* game) { TRAINDOOR_ACTOR* traindoor = (TRAINDOOR_ACTOR*)actor; cKF_SkeletonInfo_R_c* keyf = &traindoor->keyframe; - Gfx* mtx; Mtx* mtxp; - - mtx = GRAPH_ALLOC(game->graph, (u32) keyf->skeleton->num_shown_joints * 64); - mtxp = (Mtx*)mtx; - if(mtxp != NULL){ + mtxp = GRAPH_ALLOC_TYPE(game->graph, Mtx, (u32)keyf->skeleton->num_shown_joints); + if (mtxp != NULL) { _texture_z_light_fog_prim(game->graph); texture_z_light_prim_xlu_disp(game->graph); - cKF_Si3_draw_R_SV(game,keyf, mtxp, NULL,NULL,NULL); + cKF_Si3_draw_R_SV(game, keyf, mtxp, NULL, NULL, NULL); } -} \ No newline at end of file +} diff --git a/src/ac_train_window.c b/src/ac_train_window.c index 0a8413eb..0d354e21 100644 --- a/src/ac_train_window.c +++ b/src/ac_train_window.c @@ -7,175 +7,170 @@ #include "m_play.h" #include "sys_matrix.h" - -u16 aTrainWindow_tree_pal_table[15][16]= { -{ -0x0724,0xA443, -0xBCA4,0xDD25, -0xF5E7,0xF209, -0xFECD,0x0545, -0x9885,0xA0C5, -0xAD05,0xBD66, -0xCDE8,0xD2FA, -0xE77C,0xF3BE -}, -{ -0x0724,0xA443, -0xBCA4,0xDD25, -0xF5E7,0xF209, -0xFECD,0x0655, -0x98C5,0xA105, -0xB165,0xC1E6, -0xD268,0xD2FA, -0xE77C,0xF3BE -}, -{ -0x0724,0xA443, -0xBCA4,0xDD25, -0xF5E7,0xF209, -0xFECD,0x0464, -0x90C3,0x9504, -0xA184,0xAA05, -0xB287,0xD2FA, -0xE77C,0xF3BE -}, -{ -0x0724,0xA443, -0xBCA4,0xDD25, -0xF5E7,0xF209, -0xFECD,0x0164, -0x80E5,0x8145, -0x89A4,0x9A60, -0xB300,0xD380, -0xEFE8,0x8000 -}, -{ -0x0724,0xA443, -0xBCA4,0xDD25, -0xF5E7,0xF209, -0xFECD,0x0C37, -0xB086,0xC8A7, -0xE0C7,0xF109, -0xF98C,0xFE10, -0xFF18,0x8000 -}, -{ -0x0724,0xA443, -0xBCA4,0xDD25, -0xF5E7,0xF209, -0xFECD,0x0066, -0x80C9,0x8127, -0x8186,0x8202, -0x82C1,0x9380, -0xCBE8,0x8000 -}, -{ -0x0724,0xA443, -0xBCA4,0xDD25, -0xF5E7,0xF209, -0xFECD,0x0058, -0x80C9,0x80E8, -0x8148,0x81C8, -0x8268,0x9326, -0xC3EB,0x8000 -}, -{ -0x0724,0xA443, -0xBCA4,0xDD25, -0xF5E7,0xF209, -0xFECD,0x0353, -0x8CC2,0x9102, -0x9963,0xA5C4, -0xB242,0xC6E4, -0xDB88,0x8000 -}, -{ -0x0724,0xA443, -0xBCA4,0xDD25, -0xF5E7,0xF209, -0xFECD,0x0564, -0x90C5,0x9924, -0xA984,0xBA03, -0xD2A3,0xE304, -0xEF6A,0x8000 -}, -{ -0x0724,0xA443, -0xBCA4,0xDD25, -0xF5E7,0xF209, -0xFECD,0x0842, -0xA463,0xB4A2, -0xC502,0xD961, -0xE9E1,0xF682, -0xFF26,0x8000 -}, -{ -0x0724,0xA443, -0xBCA4,0xDD25, -0xF5E7,0xF209, -0xFECD,0x0814, -0xB024,0xC044, -0xCC85,0xE0C6, -0xF128,0xFE0B, -0xFEEB,0x8000 -}, -{ -0x0724,0xA443, -0xBCA4,0xDD25, -0xF5E7,0xF209, -0xFECD,0x0734, -0xA484,0xAC83, -0xBCC4,0xD503, -0xE985,0xF629, -0xFF0E,0x8000 -}, -{ -0x0724,0xA443, -0xBCA4,0xDD25, -0xF5E7,0xF209, -0xFECD,0x0635, -0xA085,0xA8C5, -0xB505,0xC566, -0xD5E8,0xEE8A, -0xFF2C,0x8000 -}, -{ -0x0724,0xA443, -0xBCA4,0xDD25, -0xF5E7,0xF209, -0xFECD,0x0545, -0x9885,0xA0C5, -0xAD05,0xBD66, -0xCDE8,0xD2FA, -0xE77C,0xF3BE -}, -{ -0x0724,0xA443, -0xBCA4,0xDD25, -0xF5E7,0xF209, -0xFECD,0x0545, -0x9885,0xA0C5, -0xAD05,0xBD66, -0xCDE8,0xD2FA, -0xE77C,0xF3BE -} +// clang-format off +static u16 aTrainWindow_tree_pal_table[15][16] ATTRIBUTE_ALIGN(32) = { + { + 0x0724,0xA443, + 0xBCA4,0xDD25, + 0xF5E7,0xF209, + 0xFECD,0x0545, + 0x9885,0xA0C5, + 0xAD05,0xBD66, + 0xCDE8,0xD2FA, + 0xE77C,0xF3BE + }, + { + 0x0724,0xA443, + 0xBCA4,0xDD25, + 0xF5E7,0xF209, + 0xFECD,0x0655, + 0x98C5,0xA105, + 0xB165,0xC1E6, + 0xD268,0xD2FA, + 0xE77C,0xF3BE + }, + { + 0x0724,0xA443, + 0xBCA4,0xDD25, + 0xF5E7,0xF209, + 0xFECD,0x0464, + 0x90C3,0x9504, + 0xA184,0xAA05, + 0xB287,0xD2FA, + 0xE77C,0xF3BE + }, + { + 0x0724,0xA443, + 0xBCA4,0xDD25, + 0xF5E7,0xF209, + 0xFECD,0x0164, + 0x80E5,0x8145, + 0x89A4,0x9A60, + 0xB300,0xD380, + 0xEFE8,0x8000 + }, + { + 0x0724,0xA443, + 0xBCA4,0xDD25, + 0xF5E7,0xF209, + 0xFECD,0x0C37, + 0xB086,0xC8A7, + 0xE0C7,0xF109, + 0xF98C,0xFE10, + 0xFF18,0x8000 + }, + { + 0x0724,0xA443, + 0xBCA4,0xDD25, + 0xF5E7,0xF209, + 0xFECD,0x0066, + 0x80C9,0x8127, + 0x8186,0x8202, + 0x82C1,0x9380, + 0xCBE8,0x8000 + }, + { + 0x0724,0xA443, + 0xBCA4,0xDD25, + 0xF5E7,0xF209, + 0xFECD,0x0058, + 0x80C9,0x80E8, + 0x8148,0x81C8, + 0x8268,0x9326, + 0xC3EB,0x8000 + }, + { + 0x0724,0xA443, + 0xBCA4,0xDD25, + 0xF5E7,0xF209, + 0xFECD,0x0353, + 0x8CC2,0x9102, + 0x9963,0xA5C4, + 0xB242,0xC6E4, + 0xDB88,0x8000 + }, + { + 0x0724,0xA443, + 0xBCA4,0xDD25, + 0xF5E7,0xF209, + 0xFECD,0x0564, + 0x90C5,0x9924, + 0xA984,0xBA03, + 0xD2A3,0xE304, + 0xEF6A,0x8000 + }, + { + 0x0724,0xA443, + 0xBCA4,0xDD25, + 0xF5E7,0xF209, + 0xFECD,0x0842, + 0xA463,0xB4A2, + 0xC502,0xD961, + 0xE9E1,0xF682, + 0xFF26,0x8000 + }, + { + 0x0724,0xA443, + 0xBCA4,0xDD25, + 0xF5E7,0xF209, + 0xFECD,0x0814, + 0xB024,0xC044, + 0xCC85,0xE0C6, + 0xF128,0xFE0B, + 0xFEEB,0x8000 + }, + { + 0x0724,0xA443, + 0xBCA4,0xDD25, + 0xF5E7,0xF209, + 0xFECD,0x0734, + 0xA484,0xAC83, + 0xBCC4,0xD503, + 0xE985,0xF629, + 0xFF0E,0x8000 + }, + { + 0x0724,0xA443, + 0xBCA4,0xDD25, + 0xF5E7,0xF209, + 0xFECD,0x0635, + 0xA085,0xA8C5, + 0xB505,0xC566, + 0xD5E8,0xEE8A, + 0xFF2C,0x8000 + }, + { + 0x0724,0xA443, + 0xBCA4,0xDD25, + 0xF5E7,0xF209, + 0xFECD,0x0545, + 0x9885,0xA0C5, + 0xAD05,0xBD66, + 0xCDE8,0xD2FA, + 0xE77C,0xF3BE + }, + { + 0x0724,0xA443, + 0xBCA4,0xDD25, + 0xF5E7,0xF209, + 0xFECD,0x0545, + 0x9885,0xA0C5, + 0xAD05,0xBD66, + 0xCDE8,0xD2FA, + 0xE77C,0xF3BE + }, }; +// clang-format on -EVW_ANIME_SCROLL aTrainWindow_out_cloud = { - 0, -2, - 64, 64 -}; +static EVW_ANIME_SCROLL aTrainWindow_out_cloud = { 0, -2, 64, 64 }; -EVW_ANIME_DATA aTrainWindow_evw_anime_data = { - -2, EVW_ANIME_TYPE_SCROLL1, &aTrainWindow_out_cloud -}; +static EVW_ANIME_DATA aTrainWindow_evw_anime_data = { -2, EVW_ANIME_TYPE_SCROLL1, &aTrainWindow_out_cloud }; static void Train_Window_Actor_ct(ACTOR*, GAME*); static void Train_Window_Actor_dt(ACTOR*, GAME*); static void Train_Window_Actor_move(ACTOR*, GAME*); static void Train_Window_Actor_draw(ACTOR*, GAME*); - ACTOR_PROFILE Train_Window_Profile = { mAc_PROFILE_TRAIN_WINDOW, ACTOR_PART_ITEM, @@ -187,10 +182,9 @@ ACTOR_PROFILE Train_Window_Profile = { &Train_Window_Actor_dt, &Train_Window_Actor_move, &Train_Window_Actor_draw, - NULL + NULL, }; - static int aTrainWindow_NoDraw(ACTOR*, GAME*); static int aTrainWindow_DrawGoneOutTunnel(ACTOR*, GAME*); static int aTrainWindow_DrawInTunnel(ACTOR*, GAME*); @@ -201,83 +195,37 @@ extern Gfx rom_train_out_bgcloud_modelT[]; extern Gfx rom_train_out_bgtree_modelT[]; extern Gfx rom_train_out_shineglass_modelT[]; - -static int aTrainWindow_GetTreePalletIdx(){ +static int aTrainWindow_GetTreePalletIdx() { static u8 till_data[15][2] = { - { - 0x02,0x03 - }, - { - 0x02,0x11 - }, - { - 0x02,0x18 - }, - { - 0x04,0x03 - }, - { - 0x04,0x08 - }, - { - 0x07,0x16 - }, - { - 0x09,0x0F - }, - { - 0x0A,0x05 - }, - { - 0x0A,0x17 - }, - { - 0x0B,0x07 - }, - { - 0x0B,0x0E - }, - { - 0x0B,0x1C - }, - { - 0x0C,0x0A - }, - { - 0x0C,0x11 - }, - { - 0x0C,0x1F - } + { 0x02, 0x03 }, { 0x02, 0x11 }, { 0x02, 0x18 }, { 0x04, 0x03 }, { 0x04, 0x08 }, + { 0x07, 0x16 }, { 0x09, 0x0F }, { 0x0A, 0x05 }, { 0x0A, 0x17 }, { 0x0B, 0x07 }, + { 0x0B, 0x0E }, { 0x0B, 0x1C }, { 0x0C, 0x0A }, { 0x0C, 0x11 }, { 0x0C, 0x1F }, }; - + int i; lbRTC_month_t month = Common_Get(time.rtc_time.month); lbRTC_day_t day = Common_Get(time.rtc_time.day); - - for(i = 0; i < 15; i++){ + + for (i = 0; i < 15; i++) { if (month < till_data[i][0]) { return i; } - + if (month == till_data[i][0] && day <= till_data[i][1]) { return i; } } - + return 0; } +static void Train_Window_Actor_ct(ACTOR* actor, GAME* game) { + TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR*)actor; - -static void Train_Window_Actor_ct(ACTOR* actor, GAME* game){ - TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR* )actor; - - switch(Save_Get(scene_no)){ - case 49: - - case 15: - window->draw_type = aTrainWindow_NoDraw; + switch (Save_Get(scene_no)) { + case SCENE_START_DEMO: + case SCENE_START_DEMO3: + window->draw_type = &aTrainWindow_NoDraw; window->Single_Scrollx = 0; window->Single_Scrolly = 0; window->Two_Scrollx1 = 0; @@ -285,10 +233,10 @@ static void Train_Window_Actor_ct(ACTOR* actor, GAME* game){ window->Two_Scrollx2 = 0; window->Two_Scrolly2 = 0; window->scroll_speed = 0.07f; - break; + break; - case 16: - window->draw_type = aTrainWindow_DrawGoneOutTunnel; + case SCENE_START_DEMO2: + window->draw_type = &aTrainWindow_DrawGoneOutTunnel; window->Single_Scrollx = 1000; window->Single_Scrolly = 0; window->Two_Scrollx1 = 1000; @@ -296,7 +244,7 @@ static void Train_Window_Actor_ct(ACTOR* actor, GAME* game){ window->Two_Scrollx2 = 0; window->Two_Scrolly2 = 0; window->scroll_speed = 1.0f; - break; + break; } window->pallete_id = aTrainWindow_GetTreePalletIdx(); window->current_pallete = aTrainWindow_tree_pal_table[window->pallete_id]; @@ -304,72 +252,66 @@ static void Train_Window_Actor_ct(ACTOR* actor, GAME* game){ window->TreeScrolly = 0; window->pos.x = 0; window->pos.y = 0; - window->pos.z = 0; + window->pos.z = 0; window->xlu_alpha = 254.0f; } -static void Train_Window_Actor_dt(ACTOR* actor, GAME* game){ - +static void Train_Window_Actor_dt(ACTOR* actor, GAME* game) { } -static u8 aTW_GetNowAlpha(){ - - if((Common_Get(time.now_sec) >= 14400) && (Common_Get(time.now_sec) < 72000)){ - if(Common_Get(time.now_sec) < 43200){ +static u8 aTW_GetNowAlpha() { + + if ((Common_Get(time.now_sec) >= 14400) && (Common_Get(time.now_sec) < 72000)) { + if (Common_Get(time.now_sec) < 43200) { return 255.0f * ((f32)(Common_Get(time.now_sec) - 14400) / 28800.0f); } return 255.0f * (1.0f - ((f32)(Common_Get(time.now_sec) - 43200) / 28800.0f)); - } - else if(Common_Get(time.now_sec) < 14400) { + } else if (Common_Get(time.now_sec) < 14400) { return 200.0f * (1.0f - (0.5f + ((f32)Common_Get(time.now_sec) / 28800.0f))); - } - else{ - return 200.0f * ((f32)Common_Get(time.now_sec - 72000) / 28800.0f); + } else { + return 200.0f * ((f32)Common_Get(time.now_sec - 72000) / 28800.0f); } } -static void Train_Window_Actor_move(ACTOR* actor, GAME* game){ - TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR* )actor; +static void Train_Window_Actor_move(ACTOR* actor, GAME* game) { + TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR*)actor; f32 alpha; - + window->TreeScrollx += 5; add_calc(&window->xlu_alpha, aTW_GetNowAlpha(), window->scroll_speed, 50.0f, 1.0f); - if((Common_Get(time.now_sec) < 14400) || (Common_Get(time.now_sec) >= 72000)){ + if ((Common_Get(time.now_sec) < 14400) || (Common_Get(time.now_sec) >= 72000)) { alpha = 0.0f; - } - else if(Common_Get(time.now_sec) >= 43200){ + } else if (Common_Get(time.now_sec) >= 43200) { alpha = 160.0f + (-160.0f * ((f32)(Common_Get(time.now_sec) - 43200) / 28800.0f)); - } - else{ - alpha = 160.0f * ((f32)(Common_Get(time.now_sec) -14400) / 28800.0f); + } else { + alpha = 160.0f * ((f32)(Common_Get(time.now_sec) - 14400) / 28800.0f); } add_calc(&window->lod_factor, alpha, 0.3f, 50.0f, 1.0f); } -static int aTrainWindow_OperateScrollLimit(int a, int b, int c){ - - b >>= 1; - if(b != 0){ - if(b > 0){ - if(a+b > c){ +static int aTrainWindow_OperateScrollLimit(int a, int b, int c) { + b >>= 1; + if (b != 0) { + if (b > 0) { + if (a + b > c) { return c; } - return a+b; + return a + b; } - if(b >= 0){ - return a; + if (b >= 0) { + return a; } - if(a+b < c){ + if (a + b < c) { return c; } - return a+b; + return a + b; } return a; } -static Gfx* aTrainWindow_TileScroll(u32* x, u32* y, int xamt,int yamt, int xend, int yend, -int width, int height, GRAPH** graph){ +static Gfx* aTrainWindow_TileScroll(u32* x, u32* y, int xamt, int yamt, int xend, int yend, int width, int height, + GRAPH** graph) { *x = aTrainWindow_OperateScrollLimit(*x, xamt, xend); *y = aTrainWindow_OperateScrollLimit(*y, yamt, yend); @@ -377,9 +319,9 @@ int width, int height, GRAPH** graph){ return tex_scroll2(*graph, *x, *y, width, height); } -static Gfx* aTrainWindow_TileScroll2(u32* x1, u32* y1, int x1amt, int y1amt, int x1end, int y1end, int width1, int height1, -u32* x2, u32* y2, int x2amt, int y2amt, int x2end, int y2end, int width2, int height2, GRAPH** graph){ - +static Gfx* aTrainWindow_TileScroll2(u32* x1, u32* y1, int x1amt, int y1amt, int x1end, int y1end, int width1, + int height1, u32* x2, u32* y2, int x2amt, int y2amt, int x2end, int y2end, + int width2, int height2, GRAPH** graph) { *x1 = aTrainWindow_OperateScrollLimit(*x1, x1amt, x1end); *y1 = aTrainWindow_OperateScrollLimit(*y1, y1amt, y1end); @@ -389,22 +331,20 @@ u32* x2, u32* y2, int x2amt, int y2amt, int x2end, int y2end, int width2, int he return two_tex_scroll(*graph, 0, *x1, *y1, width1, height1, 1, *x2, *y2, width2, height2); } -static int aTrainWindow_DrawGoneOutTunnel(ACTOR* actor, GAME* game){ - TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR* )actor; - +static int aTrainWindow_DrawGoneOutTunnel(ACTOR* actor, GAME* game) { + TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR*)actor; + GRAPH** graph = &game->graph; Gfx* ssc; Gfx* tsc; - - ssc = aTrainWindow_TileScroll(&window->Single_Scrollx,&window->Single_Scrolly, - 0,0,1000,0, 64, 32, graph); - tsc = aTrainWindow_TileScroll2(&window->Two_Scrollx1, &window->Two_Scrolly1, 0,0,1000, 0, 64, 8, - &window->Two_Scrollx2, &window->Two_Scrolly2, 0,0,0,0,16,16,graph); - if((ssc == NULL) || (tsc == NULL)){ + ssc = aTrainWindow_TileScroll(&window->Single_Scrollx, &window->Single_Scrolly, 0, 0, 1000, 0, 64, 32, graph); + tsc = aTrainWindow_TileScroll2(&window->Two_Scrollx1, &window->Two_Scrolly1, 0, 0, 1000, 0, 64, 8, + &window->Two_Scrollx2, &window->Two_Scrolly2, 0, 0, 0, 0, 16, 16, graph); + + if ((ssc == NULL) || (tsc == NULL)) { return 0; - } - else{ + } else { OPEN_DISP(*graph); gSPSegment(NOW_POLY_OPA_DISP++, 11, ssc); @@ -412,7 +352,7 @@ static int aTrainWindow_DrawGoneOutTunnel(ACTOR* actor, GAME* game){ gSPSegment(NOW_POLY_OPA_DISP++, 12, tsc); gSPSegment(NOW_POLY_XLU_DISP++, 12, tsc); - + CLOSE_DISP(*graph); return 1; @@ -420,21 +360,19 @@ static int aTrainWindow_DrawGoneOutTunnel(ACTOR* actor, GAME* game){ } static int aTrainWindow_DrawGoingOutTunnel(ACTOR* actor, GAME* game) { - TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR* )actor; - + TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR*)actor; + Gfx* tsc; Gfx* ssc; GRAPH** graph = &game->graph; - - ssc = aTrainWindow_TileScroll(&window->Single_Scrollx,&window->Single_Scrolly, - 30,0,1000,0, 64, 32, graph); - tsc = aTrainWindow_TileScroll2(&window->Two_Scrollx1, &window->Two_Scrolly1, 30,0,1000, 0, 64, 8, - &window->Two_Scrollx2, &window->Two_Scrolly2, 0,0,0,0,16,16,graph); - if((ssc == NULL) || (tsc == NULL)){ + ssc = aTrainWindow_TileScroll(&window->Single_Scrollx, &window->Single_Scrolly, 30, 0, 1000, 0, 64, 32, graph); + tsc = aTrainWindow_TileScroll2(&window->Two_Scrollx1, &window->Two_Scrolly1, 30, 0, 1000, 0, 64, 8, + &window->Two_Scrollx2, &window->Two_Scrolly2, 0, 0, 0, 0, 16, 16, graph); + + if ((ssc == NULL) || (tsc == NULL)) { return 0; - } - else{ + } else { OPEN_DISP(*graph); gSPSegment(NOW_POLY_OPA_DISP++, 11, ssc); @@ -442,10 +380,10 @@ static int aTrainWindow_DrawGoingOutTunnel(ACTOR* actor, GAME* game) { gSPSegment(NOW_POLY_OPA_DISP++, 12, tsc); gSPSegment(NOW_POLY_XLU_DISP++, 12, tsc); - + CLOSE_DISP(*graph); - if(((int)window->Single_Scrollx == 1000) && ((int)window->Two_Scrollx1 == 1000)){ + if (((int)window->Single_Scrollx == 1000) && ((int)window->Two_Scrollx1 == 1000)) { window->draw_type = aTrainWindow_DrawGoneOutTunnel; window->pallete_id = aTrainWindow_GetTreePalletIdx(); window->current_pallete = aTrainWindow_tree_pal_table[window->pallete_id]; @@ -455,28 +393,26 @@ static int aTrainWindow_DrawGoingOutTunnel(ACTOR* actor, GAME* game) { } } -static int aTrainWindow_NoDraw(ACTOR* actor, GAME* game){ - TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR* )actor; +static int aTrainWindow_NoDraw(ACTOR* actor, GAME* game) { + TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR*)actor; window->draw_type = aTrainWindow_DrawInTunnel; return 0; } -static int aTrainWindow_DrawInTunnel(ACTOR* actor, GAME* game){ - TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR* )actor; - +static int aTrainWindow_DrawInTunnel(ACTOR* actor, GAME* game) { + TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR*)actor; + Gfx* tsc; Gfx* ssc; GRAPH** graph = &game->graph; - - ssc = aTrainWindow_TileScroll(&window->Single_Scrollx,&window->Single_Scrolly, - 0,0,1000,0, 64, 32, graph); - tsc = aTrainWindow_TileScroll2(&window->Two_Scrollx1, &window->Two_Scrolly1, 0,0,1000, 0, 64, 8, - &window->Two_Scrollx2, &window->Two_Scrolly2, 0,0,0,0,16,16,graph); - if((ssc == NULL) || (tsc == NULL)){ + ssc = aTrainWindow_TileScroll(&window->Single_Scrollx, &window->Single_Scrolly, 0, 0, 1000, 0, 64, 32, graph); + tsc = aTrainWindow_TileScroll2(&window->Two_Scrollx1, &window->Two_Scrolly1, 0, 0, 1000, 0, 64, 8, + &window->Two_Scrollx2, &window->Two_Scrolly2, 0, 0, 0, 0, 16, 16, graph); + + if ((ssc == NULL) || (tsc == NULL)) { return 0; - } - else{ + } else { OPEN_DISP(*graph); gSPSegment(NOW_POLY_OPA_DISP++, 11, ssc); @@ -484,96 +420,94 @@ static int aTrainWindow_DrawInTunnel(ACTOR* actor, GAME* game){ gSPSegment(NOW_POLY_OPA_DISP++, 12, tsc); gSPSegment(NOW_POLY_XLU_DISP++, 12, tsc); - + CLOSE_DISP(*graph); - if(Common_Get(sunlight_flag) != 0){ + if (Common_Get(sunlight_flag) != 0) { window->pallete_id = aTrainWindow_GetTreePalletIdx(); window->current_pallete = aTrainWindow_tree_pal_table[window->pallete_id]; window->draw_type = aTrainWindow_DrawGoingOutTunnel; - } return 1; } } -static void aTrainWindow_SetLightPrimColorDetail(GAME* game, u32 r, u32 g, u32 b, int l, int poly_a, int xlu_a){ +static void aTrainWindow_SetLightPrimColorDetail(GAME* game, u32 r, u32 g, u32 b, int l, int poly_a, int xlu_a) { GAME_PLAY* play = (GAME_PLAY*)game; int i; int current_color; u8 color[3]; GRAPH* graph; - for(i = 0; i < 3; i++){ + for (i = 0; i < 3; i++) { current_color = play->global_light.ambientColor[i] + play->kankyo.base_light.sun_color[i]; - switch(i){ + switch (i) { case 0: current_color += r; - break; + break; case 1: current_color += g; - break; + break; case 2: current_color += b; - break; + break; } - if(current_color < 0){ + if (current_color < 0) { current_color = 0; - }else if(current_color >= 256){ + } else if (current_color >= 256) { current_color = 255; } color[i] = current_color; } - if(l < 0){ + if (l < 0) { l = 0; - }else if(l > 255){ + } else if (l > 255) { l = 255; } - if(poly_a < 0){ + if (poly_a < 0) { poly_a = 0; - }else if(poly_a > 255){ + } else if (poly_a > 255) { poly_a = 255; } - if(xlu_a < 0){ + if (xlu_a < 0) { xlu_a = 0; - }else if(xlu_a > 255){ + } else if (xlu_a > 255) { xlu_a = 255; } - + graph = play->game.graph; - - OPEN_DISP(graph); + + OPEN_DISP(graph); gDPSetPrimColor(NOW_POLY_OPA_DISP++, 0, l, color[0], color[1], color[2], poly_a); - gDPSetPrimColor(NOW_POLY_XLU_DISP++, 0, l, color[0], color[1], color[2], xlu_a); + gDPSetPrimColor(NOW_POLY_XLU_DISP++, 0, l, color[0], color[1], color[2], xlu_a); CLOSE_DISP(graph); - } -static void aTrainWindow_SetTreeTextureScroll(ACTOR* actor, GAME* game){ - TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR* )actor; +static void aTrainWindow_SetTreeTextureScroll(ACTOR* actor, GAME* game) { + TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR*)actor; Gfx* tree; GRAPH** graph = &game->graph; - + tree = tex_scroll2(*graph, window->TreeScrollx, window->TreeScrolly, 128, 32); - OPEN_DISP(*graph); + OPEN_DISP(*graph); + + gSPSegment(NOW_POLY_OPA_DISP++, 8, tree); + gSPSegment(NOW_POLY_XLU_DISP++, 8, tree); - gSPSegment(NOW_POLY_OPA_DISP++,8, tree); - gSPSegment(NOW_POLY_XLU_DISP++,8, tree); - CLOSE_DISP(*graph); } -static void Train_Window_Actor_draw(ACTOR* actor, GAME* game){ +static void Train_Window_Actor_draw(ACTOR* actor, GAME* game) { GAME_PLAY* play = (GAME_PLAY*)game; - TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR* )actor; - + TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR*)actor; + GRAPH* graph = game->graph; - Matrix_translate(0.0f,0.0f,0.0f,FALSE); + Matrix_translate(0.0f, 0.0f, 0.0f, FALSE); Matrix_scale(0.05f, 0.05f, 0.05f, TRUE); - + OPEN_DISP(graph); gSPMatrix(NOW_POLY_OPA_DISP++, _Matrix_to_Mtx_new(game->graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); @@ -582,23 +516,23 @@ static void Train_Window_Actor_draw(ACTOR* actor, GAME* game){ _texture_z_light_fog_prim(game->graph); _texture_z_light_fog_prim_xlu(game->graph); - - if(window->draw_type(actor,game) != 0){ - aTrainWindow_SetLightPrimColorDetail(game, 0,0,0,127,255,(u8)window->xlu_alpha); - gSPSegment(NOW_POLY_XLU_DISP++,10, window->current_pallete); - Evw_Anime_Set(play, &aTrainWindow_evw_anime_data); - aTrainWindow_SetLightPrimColorDetail(game,0,0,0,43,255,window->xlu_alpha); - gSPDisplayList(NOW_POLY_OPA_DISP++,rom_train_out_tunnel_model); - aTrainWindow_SetLightPrimColorDetail(game,0,0,0,127,255,window->xlu_alpha); - gSPDisplayList(NOW_POLY_OPA_DISP++,rom_train_out_bgsky_model); - aTrainWindow_SetLightPrimColorDetail(game,0,0,0,127,255,window->xlu_alpha); - gSPDisplayList(NOW_POLY_XLU_DISP++,rom_train_out_bgcloud_modelT); + if (window->draw_type(actor, game) != 0) { + aTrainWindow_SetLightPrimColorDetail(game, 0, 0, 0, 127, 255, (u8)window->xlu_alpha); + gSPSegment(NOW_POLY_XLU_DISP++, 10, window->current_pallete); + Evw_Anime_Set(play, &aTrainWindow_evw_anime_data); + aTrainWindow_SetLightPrimColorDetail(game, 0, 0, 0, 43, 255, window->xlu_alpha); + gSPDisplayList(NOW_POLY_OPA_DISP++, rom_train_out_tunnel_model); + aTrainWindow_SetLightPrimColorDetail(game, 0, 0, 0, 127, 255, window->xlu_alpha); + gSPDisplayList(NOW_POLY_OPA_DISP++, rom_train_out_bgsky_model); + aTrainWindow_SetLightPrimColorDetail(game, 0, 0, 0, 127, 255, window->xlu_alpha); + gSPDisplayList(NOW_POLY_XLU_DISP++, rom_train_out_bgcloud_modelT); aTrainWindow_SetTreeTextureScroll(actor, game); - aTrainWindow_SetLightPrimColorDetail(game, GETREG(CRV, CRV_DEBUG_RED_VALUE) -80 ,GETREG(CRV, CRV_DEBUG_GREEN_VALUE) -70 ,GETREG(CRV, CRV_DEBUG_BLUE_VALUE) -160, GETREG(CRV,CRV_DEBUG_LOD_VALUE) + 27,255, window->xlu_alpha); - gSPDisplayList(NOW_POLY_XLU_DISP++,rom_train_out_bgtree_modelT); - aTrainWindow_SetLightPrimColorDetail(game,0,0,0,window->lod_factor,255,window->xlu_alpha); - gSPDisplayList(NOW_POLY_XLU_DISP++,rom_train_out_shineglass_modelT); - + aTrainWindow_SetLightPrimColorDetail( + game, GETREG(CRV, CRV_DEBUG_RED_VALUE) - 80, GETREG(CRV, CRV_DEBUG_GREEN_VALUE) - 70, + GETREG(CRV, CRV_DEBUG_BLUE_VALUE) - 160, GETREG(CRV, CRV_DEBUG_LOD_VALUE) + 27, 255, window->xlu_alpha); + gSPDisplayList(NOW_POLY_XLU_DISP++, rom_train_out_bgtree_modelT); + aTrainWindow_SetLightPrimColorDetail(game, 0, 0, 0, window->lod_factor, 255, window->xlu_alpha); + gSPDisplayList(NOW_POLY_XLU_DISP++, rom_train_out_shineglass_modelT); } CLOSE_DISP(graph); -} \ No newline at end of file +} diff --git a/src/ftr/ac_myfmanekin.c b/src/ftr/ac_myfmanekin.c index 2f461c97..0147a570 100644 --- a/src/ftr/ac_myfmanekin.c +++ b/src/ftr/ac_myfmanekin.c @@ -27,8 +27,8 @@ static void aMyfmanekin_dma(mActor_name_t ftr_name, u8* data) { int player_no = mHS_get_pl_no(house_no); u32 manekin_no = ((ftr_name - FTR_CLOTH_MANNIQUIN_MY_ORIGINAL0) >> 2); - mNW_CopyOriginalTexture(data, &Save_Get(private[player_no]).my_org[manekin_no & 7]); - mNW_CopyOriginalPalette(data + mNW_DESIGN_TEX_SIZE, &Save_Get(private[player_no]).my_org[manekin_no & 7]); + mNW_CopyOriginalTexture(data, &Save_Get(private_data[player_no]).my_org[manekin_no & 7]); + mNW_CopyOriginalPalette(data + mNW_DESIGN_TEX_SIZE, &Save_Get(private_data[player_no]).my_org[manekin_no & 7]); } static aFTR_vtable_c aMyfmanekin_func = { diff --git a/src/ftr/ac_myfumbrella.c b/src/ftr/ac_myfumbrella.c index acd72ed6..81288d50 100644 --- a/src/ftr/ac_myfumbrella.c +++ b/src/ftr/ac_myfumbrella.c @@ -27,8 +27,8 @@ static void aMFU_dma(mActor_name_t ftr_name, u8* data) { int player_no = mHS_get_pl_no(house_no); u32 manekin_no = ((ftr_name - FTR_MYUMBRELLA_START) >> 2); - mNW_CopyOriginalTexture(data, &Save_Get(private[player_no]).my_org[manekin_no & 7]); - mNW_CopyOriginalPalette(data + mNW_DESIGN_TEX_SIZE, &Save_Get(private[player_no]).my_org[manekin_no & 7]); + mNW_CopyOriginalTexture(data, &Save_Get(private_data[player_no]).my_org[manekin_no & 7]); + mNW_CopyOriginalPalette(data + mNW_DESIGN_TEX_SIZE, &Save_Get(private_data[player_no]).my_org[manekin_no & 7]); } static aFTR_vtable_c aMFU_func = { diff --git a/src/m_all_grow_ovl.c b/src/m_all_grow_ovl.c index 68ba573e..c1eea0af 100644 --- a/src/m_all_grow_ovl.c +++ b/src/m_all_grow_ovl.c @@ -2499,7 +2499,7 @@ static void mAGrw_SpoilAllPossession(int spoil_kabu) { int k; if (spoil_kabu == TRUE) { - priv = Save_Get(private); + priv = Save_Get(private_data); for (i = 0; i < PLAYER_NUM; i++) { mAGrw_SpoilPossession(priv->inventory.pockets, mPr_POCKETS_SLOT_COUNT); diff --git a/src/m_calendar.c b/src/m_calendar.c index 460eba3a..5376da5c 100644 --- a/src/m_calendar.c +++ b/src/m_calendar.c @@ -4,387 +4,360 @@ #include "m_common_data.h" static void mCD_calendar_clear_interval(mCD_player_calendar_c* calendar, int interval) { - u8 months[lbRTC_MONTHS_MAX]; - int i; + u8 months[lbRTC_MONTHS_MAX]; + int i; - for (i = 0; i < lbRTC_MONTHS_MAX; i++) { - months[i] = 0; - } - - for (i = 0; i < interval; i++) { - months[(calendar->month + i) % lbRTC_MONTHS_MAX] = 1; - } - - for (i = 0; i > interval; i--) { - months[(calendar->month + (lbRTC_MONTHS_MAX - 1) + i) % lbRTC_MONTHS_MAX] = 1; - } - - for (i = 0; i < lbRTC_MONTHS_MAX; i++) { - if (months[i] == 1) { - calendar->played_days[i] = 0; - calendar->event_days[i] = 0; + for (i = 0; i < lbRTC_MONTHS_MAX; i++) { + months[i] = 0; } - } - if (months[lbRTC_JUNE - 1] == 1) { - calendar->event_flags &= ~mCD_FLAG_MOTHERS_DAY; // 1 - } + for (i = 0; i < interval; i++) { + months[(calendar->month + i) % lbRTC_MONTHS_MAX] = 1; + } - if (months[lbRTC_JULY - 1] == 1) { - calendar->event_flags &= ~mCD_FLAG_TOWN_DAY; // 2 - } + for (i = 0; i > interval; i--) { + months[(calendar->month + (lbRTC_MONTHS_MAX - 1) + i) % lbRTC_MONTHS_MAX] = 1; + } - if (months[lbRTC_AUGUST - 1] == 1) { - calendar->event_flags &= ~(mCD_FLAG_METEOR_SHOWER | mCD_FLAG_FOUNDERS_DAY); // 12 (4 | 8) - } + for (i = 0; i < lbRTC_MONTHS_MAX; i++) { + if (months[i] == 1) { + calendar->played_days[i] = 0; + calendar->event_days[i] = 0; + } + } - if (months[lbRTC_SEPTEMBER - 1] == 1) { - calendar->event_flags &= ~mCD_FLAG_HARVEST_MOON_9; // 16 - } + if (months[lbRTC_JUNE - 1] == 1) { + calendar->event_flags &= ~mCD_FLAG_MOTHERS_DAY; // 1 + } - if (months[lbRTC_OCTOBER - 1] == 1) { - calendar->event_flags &= ~mCD_FLAG_HARVEST_MOON_10; // 32 - } + if (months[lbRTC_JULY - 1] == 1) { + calendar->event_flags &= ~mCD_FLAG_TOWN_DAY; // 2 + } - if (months[lbRTC_NOVEMBER - 1] == 1) { - calendar->event_flags &= ~mCD_FLAG_OFFICERS_DAY; // 64 - } + if (months[lbRTC_AUGUST - 1] == 1) { + calendar->event_flags &= ~(mCD_FLAG_METEOR_SHOWER | mCD_FLAG_FOUNDERS_DAY); // 12 (4 | 8) + } + + if (months[lbRTC_SEPTEMBER - 1] == 1) { + calendar->event_flags &= ~mCD_FLAG_HARVEST_MOON_9; // 16 + } + + if (months[lbRTC_OCTOBER - 1] == 1) { + calendar->event_flags &= ~mCD_FLAG_HARVEST_MOON_10; // 32 + } + + if (months[lbRTC_NOVEMBER - 1] == 1) { + calendar->event_flags &= ~mCD_FLAG_OFFICERS_DAY; // 64 + } } -static void mCD_calendar_clear_day(mCD_player_calendar_c* calendar, lbRTC_year_t year, lbRTC_month_t month, lbRTC_day_t day) { - lbRTC_day_t days = lbRTC_GetDaysByMonth(year, month); - int i; +static void mCD_calendar_clear_day(mCD_player_calendar_c* calendar, lbRTC_year_t year, lbRTC_month_t month, + lbRTC_day_t day) { + lbRTC_day_t days = lbRTC_GetDaysByMonth(year, month); + int i; - if (days != day) { - u32 days_bitfield = 0; - for (i = day; i < 31; i++) { - days_bitfield |= (1 << i); + if (days != day) { + u32 days_bitfield = 0; + for (i = day; i < 31; i++) { + days_bitfield |= (1 << i); + } + + calendar->played_days[month - 1] &= ~days_bitfield; + calendar->event_days[month - 1] &= ~days_bitfield; + + switch (month) { + case lbRTC_JUNE: { + lbRTC_weekday_t weekday = lbRTC_Week(year, month, day + 1); + + /* Calculate the current week and verify it's not the last week */ + if ((day - weekday) / lbRTC_WEEK + 1 < 3) { + calendar->event_flags &= ~mCD_FLAG_MOTHERS_DAY; + } + + break; + } + + case lbRTC_JULY: { + if (day < Save_Get(town_day)) { + calendar->event_flags &= ~mCD_FLAG_TOWN_DAY; + } + + break; + } + + case lbRTC_AUGUST: { + if (day < 12) { + calendar->event_flags &= ~mCD_FLAG_METEOR_SHOWER; + } + + if (day < 21) { + calendar->event_flags &= ~mCD_FLAG_FOUNDERS_DAY; + } + + break; + } + + case lbRTC_SEPTEMBER: { + lbRTC_ymd_c harvest_moon_day; + + lbRk_HarvestMoonDay(&harvest_moon_day, year); + + if (month == harvest_moon_day.month && day < harvest_moon_day.day) { + calendar->event_flags &= ~mCD_FLAG_HARVEST_MOON_9; + } + + break; + } + + case lbRTC_OCTOBER: { + lbRTC_ymd_c harvest_moon_day; + + lbRk_HarvestMoonDay(&harvest_moon_day, year); + + if (month == harvest_moon_day.month && day < harvest_moon_day.day) { + calendar->event_flags &= ~mCD_FLAG_HARVEST_MOON_10; + } + + break; + } + + case lbRTC_NOVEMBER: { + if (day < 11) { + calendar->event_flags &= ~mCD_FLAG_OFFICERS_DAY; + } + + break; + } + } } - - calendar->played_days[month - 1] &= ~days_bitfield; - calendar->event_days[month - 1] &= ~days_bitfield; - - switch (month) { - case lbRTC_JUNE: - { - lbRTC_weekday_t weekday = lbRTC_Week(year, month, day + 1); - - /* Calculate the current week and verify it's not the last week */ - if ((day - weekday) / lbRTC_WEEK + 1 < 3) { - calendar->event_flags &= ~mCD_FLAG_MOTHERS_DAY; - } - - break; - } - - case lbRTC_JULY: - { - if (day < Save_Get(town_day)) { - calendar->event_flags &= ~mCD_FLAG_TOWN_DAY; - } - - break; - } - - case lbRTC_AUGUST: - { - if (day < 12) { - calendar->event_flags &= ~mCD_FLAG_METEOR_SHOWER; - } - - if (day < 21) { - calendar->event_flags &= ~mCD_FLAG_FOUNDERS_DAY; - } - - break; - } - - case lbRTC_SEPTEMBER: - { - lbRTC_ymd_c harvest_moon_day; - - lbRk_HarvestMoonDay(&harvest_moon_day, year); - - if (month == harvest_moon_day.month && day < harvest_moon_day.day) { - calendar->event_flags &= ~mCD_FLAG_HARVEST_MOON_9; - } - - break; - } - - case lbRTC_OCTOBER: - { - lbRTC_ymd_c harvest_moon_day; - - lbRk_HarvestMoonDay(&harvest_moon_day, year); - - if (month == harvest_moon_day.month && day < harvest_moon_day.day) { - calendar->event_flags &= ~mCD_FLAG_HARVEST_MOON_10; - } - - break; - } - - case lbRTC_NOVEMBER: - { - if (day < 11) { - calendar->event_flags &= ~mCD_FLAG_OFFICERS_DAY; - } - - break; - } - } - } } static int mCD_GetIntervalMonths(lbRTC_year_t y0, lbRTC_month_t m0, lbRTC_year_t y1, lbRTC_month_t m1) { - return (m1 - m0) + (y1 - y0) * lbRTC_MONTHS_MAX; + return (m1 - m0) + (y1 - y0) * lbRTC_MONTHS_MAX; } extern void mCD_calendar_clear(int player_no) { - Private_c* priv = Save_Get(private); + Private_c* priv = Save_Get(private_data); - if (player_no == -1) { - player_no = Common_Get(player_no); - } + if (player_no == -1) { + player_no = Common_Get(player_no); + } - if (player_no != mPr_FOREIGNER) { - mem_clear((u8*)&priv[player_no].calendar, sizeof(mCD_player_calendar_c), 0); - } + if (player_no != mPr_FOREIGNER) { + mem_clear((u8*)&priv[player_no].calendar, sizeof(mCD_player_calendar_c), 0); + } } static int mCD_calendar_check_harvest_moon_viewing(mCD_player_calendar_c* calendar, lbRTC_month_t month) { - int res = FALSE; + int res = FALSE; - switch (month) { - case lbRTC_SEPTEMBER: - { - if ((calendar->event_flags & mCD_FLAG_HARVEST_MOON_9) != 0) { - res = TRUE; - } + switch (month) { + case lbRTC_SEPTEMBER: { + if ((calendar->event_flags & mCD_FLAG_HARVEST_MOON_9) != 0) { + res = TRUE; + } - break; + break; + } + + case lbRTC_OCTOBER: { + if ((calendar->event_flags & mCD_FLAG_HARVEST_MOON_10) != 0) { + res = TRUE; + } + + break; + } } - case lbRTC_OCTOBER: - { - if ((calendar->event_flags & mCD_FLAG_HARVEST_MOON_10) != 0) { - res = TRUE; - } - - break; - } - } - - return res; + return res; } extern void mCD_calendar_check_delete(int player_no, lbRTC_year_t year, lbRTC_month_t month, lbRTC_day_t day) { - if (player_no == -1) { - player_no = Common_Get(player_no); - } - - if (player_no != mPr_FOREIGNER) { - mCD_player_calendar_c* calendar = &Save_Get(private[player_no]).calendar; - - if (calendar->year == 0) { - mCD_calendar_clear(-1); + if (player_no == -1) { + player_no = Common_Get(player_no); } - else { - int interval = mCD_GetIntervalMonths(calendar->year, calendar->month, year, month); - if (interval >= lbRTC_MONTHS_MAX || interval <= -lbRTC_MONTHS_MAX) { - mCD_calendar_clear(-1); // clear entire calendar since interval is >= 1 year - } - else { - if (interval != 0) { - mCD_calendar_clear_interval(calendar, interval); // clear only interval months + if (player_no != mPr_FOREIGNER) { + mCD_player_calendar_c* calendar = &Save_Get(private_data[player_no]).calendar; + + if (calendar->year == 0) { + mCD_calendar_clear(-1); + } else { + int interval = mCD_GetIntervalMonths(calendar->year, calendar->month, year, month); + + if (interval >= lbRTC_MONTHS_MAX || interval <= -lbRTC_MONTHS_MAX) { + mCD_calendar_clear(-1); // clear entire calendar since interval is >= 1 year + } else { + if (interval != 0) { + mCD_calendar_clear_interval(calendar, interval); // clear only interval months + } + + mCD_calendar_clear_day(calendar, year, month, day); // clear days + } } - - mCD_calendar_clear_day(calendar, year, month, day); // clear days - } } - } } extern void mCD_calendar_wellcome_on() { - mCD_player_calendar_c* calendar = &Common_Get(now_private)->calendar; + mCD_player_calendar_c* calendar = &Common_Get(now_private)->calendar; - if (Common_Get(player_no) != mPr_FOREIGNER) { - lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); + if (Common_Get(player_no) != mPr_FOREIGNER) { + lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); - mCD_calendar_check_delete(-1, rtc_time->year, rtc_time->month, rtc_time->day); - calendar->played_days[rtc_time->month - 1] |= (1 << (rtc_time->day - 1)); - calendar->year = rtc_time->year; - calendar->month = rtc_time->month; - } + mCD_calendar_check_delete(-1, rtc_time->year, rtc_time->month, rtc_time->day); + calendar->played_days[rtc_time->month - 1] |= (1 << (rtc_time->day - 1)); + calendar->year = rtc_time->year; + calendar->month = rtc_time->month; + } } extern void mCD_calendar_event_on(lbRTC_year_t year, lbRTC_month_t month, lbRTC_day_t day, u8 event) { - if (Common_Get(player_no) != mPr_FOREIGNER) { - mCD_player_calendar_c* calendar; + if (Common_Get(player_no) != mPr_FOREIGNER) { + mCD_player_calendar_c* calendar; - mCD_calendar_check_delete(-1, year, month, day); - calendar = &Save_Get(private[Common_Get(player_no)]).calendar; + mCD_calendar_check_delete(-1, year, month, day); + calendar = &Save_Get(private_data[Common_Get(player_no)]).calendar; - switch (event) { - case 11: - { - calendar->event_flags |= mCD_FLAG_MOTHERS_DAY; + switch (event) { + case 11: { + calendar->event_flags |= mCD_FLAG_MOTHERS_DAY; - break; - } + break; + } - case 4: - { - calendar->event_flags |= mCD_FLAG_TOWN_DAY; + case 4: { + calendar->event_flags |= mCD_FLAG_TOWN_DAY; - break; - } + break; + } - case 16: - { - calendar->event_flags |= mCD_FLAG_METEOR_SHOWER; + case 16: { + calendar->event_flags |= mCD_FLAG_METEOR_SHOWER; - break; - } + break; + } - case 1: - { - calendar->event_flags |= mCD_FLAG_FOUNDERS_DAY; + case 1: { + calendar->event_flags |= mCD_FLAG_FOUNDERS_DAY; - break; - } + break; + } - case 17: - { - switch (month) { - case lbRTC_SEPTEMBER: - { - calendar->event_flags |= mCD_FLAG_HARVEST_MOON_9; + case 17: { + switch (month) { + case lbRTC_SEPTEMBER: { + calendar->event_flags |= mCD_FLAG_HARVEST_MOON_9; - break; - } + break; + } - case lbRTC_OCTOBER: - { - calendar->event_flags |= mCD_FLAG_HARVEST_MOON_10; + case lbRTC_OCTOBER: { + calendar->event_flags |= mCD_FLAG_HARVEST_MOON_10; - break; - } + break; + } + } + + break; + } + + case 19: { + calendar->event_flags |= mCD_FLAG_OFFICERS_DAY; + + break; + } + + case 255: { + break; + } + + default: { + calendar->event_days[month - 1] |= (1 << (day - 1)); + + break; + } } - - break; - } - - case 19: - { - calendar->event_flags |= mCD_FLAG_OFFICERS_DAY; - - break; - } - - case 255: - { - break; - } - - default: - { - calendar->event_days[month - 1] |= (1 << (day - 1)); - - break; - } } - } } extern int mCD_calendar_event_check(lbRTC_year_t year, lbRTC_month_t month, lbRTC_day_t day, int player_no, u8 event) { - int res = FALSE; + int res = FALSE; - if (player_no == -1) { - player_no = Common_Get(player_no); - } - - if (player_no != mPr_FOREIGNER) { - lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); - - int interval = (rtc_time->month - month) + (rtc_time->year - year) * lbRTC_MONTHS_MAX; - - if (interval >= 0 && interval < lbRTC_MONTHS_MAX) { - mCD_player_calendar_c* calendar = &Save_Get(private[player_no]).calendar; - - switch (event) { - case 11: - { - if (calendar->event_flags & mCD_FLAG_MOTHERS_DAY) { - res = TRUE; - } - - break; - } - - case 4: - { - if (calendar->event_flags & mCD_FLAG_TOWN_DAY) { - res = TRUE; - } - - break; - } - - case 16: - { - if (calendar->event_flags & mCD_FLAG_METEOR_SHOWER) { - res = TRUE; - } - - break; - } - - case 1: - { - if (calendar->event_flags & mCD_FLAG_FOUNDERS_DAY) { - res = TRUE; - } - - break; - } - - case 17: - { - if (mCD_calendar_check_harvest_moon_viewing(calendar, month) == TRUE) { - res = TRUE; - } - - break; - } - - case 19: - { - if (calendar->event_flags & mCD_FLAG_OFFICERS_DAY) { - res = TRUE; - } - - break; - } - - case 255: - { - break; - } - - default: - { - if (calendar->event_days[month - 1] & (1 << (day - 1))) { - res = TRUE; - } - - break; - } - } + if (player_no == -1) { + player_no = Common_Get(player_no); } - } - return res; + if (player_no != mPr_FOREIGNER) { + lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); + + int interval = (rtc_time->month - month) + (rtc_time->year - year) * lbRTC_MONTHS_MAX; + + if (interval >= 0 && interval < lbRTC_MONTHS_MAX) { + mCD_player_calendar_c* calendar = &Save_Get(private_data[player_no]).calendar; + + switch (event) { + case 11: { + if (calendar->event_flags & mCD_FLAG_MOTHERS_DAY) { + res = TRUE; + } + + break; + } + + case 4: { + if (calendar->event_flags & mCD_FLAG_TOWN_DAY) { + res = TRUE; + } + + break; + } + + case 16: { + if (calendar->event_flags & mCD_FLAG_METEOR_SHOWER) { + res = TRUE; + } + + break; + } + + case 1: { + if (calendar->event_flags & mCD_FLAG_FOUNDERS_DAY) { + res = TRUE; + } + + break; + } + + case 17: { + if (mCD_calendar_check_harvest_moon_viewing(calendar, month) == TRUE) { + res = TRUE; + } + + break; + } + + case 19: { + if (calendar->event_flags & mCD_FLAG_OFFICERS_DAY) { + res = TRUE; + } + + break; + } + + case 255: { + break; + } + + default: { + if (calendar->event_days[month - 1] & (1 << (day - 1))) { + res = TRUE; + } + + break; + } + } + } + } + + return res; } diff --git a/src/m_event.c b/src/m_event.c index c0b351d8..d2af204c 100644 --- a/src/m_event.c +++ b/src/m_event.c @@ -11,11 +11,11 @@ #include "m_soncho.h" enum { - mEv_INIT_NO_RENEWAL, - mEv_INIT_RENEWAL, - mEv_INIT_FORCE_RENEWAL, + mEv_INIT_NO_RENEWAL, + mEv_INIT_RENEWAL, + mEv_INIT_FORCE_RENEWAL, - mEv_INIT_NUM + mEv_INIT_NUM }; static int n_today_events = 0; @@ -26,849 +26,788 @@ static lbRTC_year_t weekday1st_year = 0; static lbRTC_weekday_t weekday1st[lbRTC_MONTHS_MAX]; typedef union ymdh { - struct { - u8 year; - u8 month; - u8 day; - u8 hour; - }; - u32 raw; + struct { + u8 year; + u8 month; + u8 day; + u8 hour; + }; + u32 raw; } mEv_ymdh_u; extern void mEv_ClearSpecialEvent(mEv_special_c* special_event) { - special_event->type = -1; - bzero(&special_event->event, sizeof(mEv_special_u)); - bzero(Common_GetPointer(special_event_common), sizeof(mEv_event_common_u)); + special_event->type = -1; + bzero(&special_event->event, sizeof(mEv_special_u)); + bzero(Common_GetPointer(special_event_common), sizeof(mEv_event_common_u)); } extern void mEv_ClearEventKabuPeddler(mEv_kabu_peddler_c* kabu_peddler) { - if (kabu_peddler != NULL) { - mPr_ClearAnyPersonalID(kabu_peddler->spoken_pids, TOTAL_PLAYER_NUM); - } + if (kabu_peddler != NULL) { + mPr_ClearAnyPersonalID(kabu_peddler->spoken_pids, TOTAL_PLAYER_NUM); + } } extern void mEv_ClearEventSaveInfo(mEv_event_save_c* save_event) { - mEv_ClearSpecialEvent(&save_event->special); - mEv_ClearEventKabuPeddler(&save_event->weekly.kabu_peddler); - save_event->flags = 0; + mEv_ClearSpecialEvent(&save_event->special); + mEv_ClearEventKabuPeddler(&save_event->weekly.kabu_peddler); + save_event->flags = 0; } extern void mEv_ClearEventInfo() { - mEv_event_save_c* event_save = Save_GetPointer(event_save_data); - u32* event_flag = Common_Get(event_flags); - int i; + mEv_event_save_c* event_save = Save_GetPointer(event_save_data); + u32* event_flag = Common_Get(event_flags); + int i; - for (i = 0; i < mEv_EVENT_TYPE_NUM; i++) { - event_flag[0] = 0; - event_flag++; - } + for (i = 0; i < mEv_EVENT_TYPE_NUM; i++) { + event_flag[0] = 0; + event_flag++; + } - Common_Get(event_flags[1]) = event_save->flags; - Common_Get(event_common).fieldday_event_id = -1; - Common_Get(event_common).fieldday_event_over_status = -1; + Common_Get(event_flags[1]) = event_save->flags; + Common_Get(event_common).fieldday_event_id = -1; + Common_Get(event_common).fieldday_event_over_status = -1; } extern void mEv_EventON(u32 event_kind) { - u32 type = mEv_GET_TYPE(event_kind); + u32 type = mEv_GET_TYPE(event_kind); - if (type < mEv_EVENT_TYPE_NUM) { - u32* flag_p = Common_GetPointer(event_flags[type]); - *flag_p |= (1 << mEv_GET_SUBTYPE(event_kind)); + if (type < mEv_EVENT_TYPE_NUM) { + u32* flag_p = Common_GetPointer(event_flags[type]); + *flag_p |= (1 << mEv_GET_SUBTYPE(event_kind)); - if (type == mEv_SAVED_EVENT) { - Save_Get(event_save_data).flags = *flag_p; + if (type == mEv_SAVED_EVENT) { + Save_Get(event_save_data).flags = *flag_p; + } } - } } extern void mEv_EventOFF(u32 event_kind) { - u32 type = mEv_GET_TYPE(event_kind); + u32 type = mEv_GET_TYPE(event_kind); - if (type < mEv_EVENT_TYPE_NUM) { - u32* flag_p = Common_GetPointer(event_flags[type]); - u32 mask = 1 << mEv_GET_SUBTYPE(event_kind); - - *flag_p &= ~mask; - if (type == mEv_SAVED_EVENT) { - Save_Get(event_save_data).flags = *flag_p; + if (type < mEv_EVENT_TYPE_NUM) { + u32* flag_p = Common_GetPointer(event_flags[type]); + u32 mask = 1 << mEv_GET_SUBTYPE(event_kind); + + *flag_p &= ~mask; + if (type == mEv_SAVED_EVENT) { + Save_Get(event_save_data).flags = *flag_p; + } } - } } extern int mEv_CheckEvent(u32 event_kind) { - u32 type = mEv_GET_TYPE(event_kind); - int res = FALSE; + u32 type = mEv_GET_TYPE(event_kind); + int res = FALSE; - if (type < mEv_EVENT_TYPE_NUM) { - u32* flags_p = Common_GetPointer(event_flags[type]); - - if (((*flags_p) >> mEv_GET_SUBTYPE(event_kind)) & 1) { - res = TRUE; + if (type < mEv_EVENT_TYPE_NUM) { + u32* flags_p = Common_GetPointer(event_flags[type]); + + if (((*flags_p) >> mEv_GET_SUBTYPE(event_kind)) & 1) { + res = TRUE; + } } - } - return res; + return res; } extern void mEv_ClearPersonalEventFlag(int player_no) { - mEv_EventOFF(mEv_SAVED_FIRSTJOB_PLR0 + player_no); - mEv_EventOFF(mEv_SAVED_FIRSTINTRO_PLR0 + player_no); - mEv_EventOFF(mEv_SAVED_HRAWAIT_PLR0 + player_no); - mEv_EventOFF(mEv_SAVED_HRATALK_PLR0 + player_no); - mEv_EventOFF(mEv_SAVED_FJOPENQUEST_PLR0 + player_no); - mEv_EventOFF(mEv_SAVED_GATEWAY_PLR0 + player_no); + mEv_EventOFF(mEv_SAVED_FIRSTJOB_PLR0 + player_no); + mEv_EventOFF(mEv_SAVED_FIRSTINTRO_PLR0 + player_no); + mEv_EventOFF(mEv_SAVED_HRAWAIT_PLR0 + player_no); + mEv_EventOFF(mEv_SAVED_HRATALK_PLR0 + player_no); + mEv_EventOFF(mEv_SAVED_FJOPENQUEST_PLR0 + player_no); + mEv_EventOFF(mEv_SAVED_GATEWAY_PLR0 + player_no); - { - aAPC_event_save_data_c* data = (aAPC_event_save_data_c*)mEv_get_save_area(mEv_EVENT_APRILFOOLS_DAY, 0); + { + aAPC_event_save_data_c* data = (aAPC_event_save_data_c*)mEv_get_save_area(mEv_EVENT_APRILFOOLS_DAY, 0); - if (data != NULL) { - data->talk_bitfield[player_no] = 0; + if (data != NULL) { + data->talk_bitfield[player_no] = 0; + } } - } } extern void mEv_SetFirstJob() { - if (Common_Get(player_no) < PLAYER_NUM) { - u32 ev = mEv_SAVED_FIRSTJOB_PLR0; + if (Common_Get(player_no) < PLAYER_NUM) { + u32 ev = mEv_SAVED_FIRSTJOB_PLR0; - ev += Common_Get(player_no); - mEv_EventON(ev); - } + ev += Common_Get(player_no); + mEv_EventON(ev); + } } extern int mEv_CheckRealArbeit() { - u32 player_no = Common_Get(player_no); - int res = FALSE; - - if ( - player_no < PLAYER_NUM && - ( - mEv_CheckEvent(mEv_SAVED_FIRSTJOB_PLR0 + player_no) == TRUE || - mEv_CheckEvent( mEv_SAVED_HRAWAIT_PLR0 + player_no) == TRUE - ) - ) { - res = TRUE; - } + u32 player_no = Common_Get(player_no); + int res = FALSE; - return res; + if (player_no < PLAYER_NUM && (mEv_CheckEvent(mEv_SAVED_FIRSTJOB_PLR0 + player_no) == TRUE || + mEv_CheckEvent(mEv_SAVED_HRAWAIT_PLR0 + player_no) == TRUE)) { + res = TRUE; + } + + return res; } extern int mEv_CheckArbeit() { - u32 player_no = Common_Get(player_no); - int res = FALSE; - - if ( - player_no < PLAYER_NUM && - ( - mEv_CheckEvent(mEv_SAVED_FIRSTJOB_PLR0 + player_no) == TRUE || - mEv_CheckEvent( mEv_SAVED_HRAWAIT_PLR0 + player_no) == TRUE || - mEv_CheckEvent( mEv_SAVED_HRATALK_PLR0 + player_no) == TRUE - ) - ) { - res = TRUE; - } + u32 player_no = Common_Get(player_no); + int res = FALSE; - return res; + if (player_no < PLAYER_NUM && (mEv_CheckEvent(mEv_SAVED_FIRSTJOB_PLR0 + player_no) == TRUE || + mEv_CheckEvent(mEv_SAVED_HRAWAIT_PLR0 + player_no) == TRUE || + mEv_CheckEvent(mEv_SAVED_HRATALK_PLR0 + player_no) == TRUE)) { + res = TRUE; + } + + return res; } extern int mFI_CheckFirstJob() { - u32 player_no = Common_Get(player_no); - int res = FALSE; - - if (player_no < PLAYER_NUM) { - u32 ev = mEv_SAVED_FIRSTJOB_PLR0; - ev += player_no; - - if (mEv_CheckEvent(ev) == TRUE) { - res = TRUE; - } - } + u32 player_no = Common_Get(player_no); + int res = FALSE; - return res; + if (player_no < PLAYER_NUM) { + u32 ev = mEv_SAVED_FIRSTJOB_PLR0; + ev += player_no; + + if (mEv_CheckEvent(ev) == TRUE) { + res = TRUE; + } + } + + return res; } extern void mEv_UnSetFirstJob() { - u32 player_no = Common_Get(player_no); + u32 player_no = Common_Get(player_no); - if (player_no < PLAYER_NUM) { - mEv_EventOFF(mEv_SAVED_FIRSTJOB_PLR0 + player_no); - mEv_EventON(mEv_SAVED_HRAWAIT_PLR0 + player_no); - } + if (player_no < PLAYER_NUM) { + mEv_EventOFF(mEv_SAVED_FIRSTJOB_PLR0 + player_no); + mEv_EventON(mEv_SAVED_HRAWAIT_PLR0 + player_no); + } } extern void mEv_SetFirstIntro() { - u32 player_no = Common_Get(player_no); + u32 player_no = Common_Get(player_no); - if (player_no < PLAYER_NUM) { - u32 ev = mEv_SAVED_FIRSTINTRO_PLR0; - ev += player_no; - - mEv_EventON(ev); - } + if (player_no < PLAYER_NUM) { + u32 ev = mEv_SAVED_FIRSTINTRO_PLR0; + ev += player_no; + + mEv_EventON(ev); + } } extern int mEv_CheckFirstIntro() { - u32 player_no = Common_Get(player_no); - int res = FALSE; + u32 player_no = Common_Get(player_no); + int res = FALSE; - if (player_no < PLAYER_NUM) { - u32 ev = mEv_SAVED_FIRSTINTRO_PLR0; - ev += player_no; - - if (mEv_CheckEvent(ev) == TRUE) { - res = TRUE; + if (player_no < PLAYER_NUM) { + u32 ev = mEv_SAVED_FIRSTINTRO_PLR0; + ev += player_no; + + if (mEv_CheckEvent(ev) == TRUE) { + res = TRUE; + } } - } - return res; + return res; } extern void mEv_UnSetFirstIntro() { - u32 player_no = Common_Get(player_no); + u32 player_no = Common_Get(player_no); - if (player_no < PLAYER_NUM) { - u32 ev = mEv_SAVED_FIRSTINTRO_PLR0; - ev += player_no; - mEv_EventOFF(ev); - } + if (player_no < PLAYER_NUM) { + u32 ev = mEv_SAVED_FIRSTINTRO_PLR0; + ev += player_no; + mEv_EventOFF(ev); + } } extern void mEv_SetGateway() { - u32 player_no = Common_Get(player_no); + u32 player_no = Common_Get(player_no); - if (player_no < TOTAL_PLAYER_NUM) { - u32 ev = mEv_SAVED_GATEWAY_PLR0; - ev += player_no; - mEv_EventON(ev); - } + if (player_no < TOTAL_PLAYER_NUM) { + u32 ev = mEv_SAVED_GATEWAY_PLR0; + ev += player_no; + mEv_EventON(ev); + } } extern int mEv_CheckGateway() { - u32 player_no = Common_Get(player_no); - int res = FALSE; + u32 player_no = Common_Get(player_no); + int res = FALSE; - if (player_no < TOTAL_PLAYER_NUM) { - u32 ev = mEv_SAVED_GATEWAY_PLR0; - ev += player_no; + if (player_no < TOTAL_PLAYER_NUM) { + u32 ev = mEv_SAVED_GATEWAY_PLR0; + ev += player_no; - if (mEv_CheckEvent(ev) == TRUE) { - res = TRUE; + if (mEv_CheckEvent(ev) == TRUE) { + res = TRUE; + } } - } - return res; + return res; } extern void mEv_UnSetGateway() { - u32 player_no = Common_Get(player_no); + u32 player_no = Common_Get(player_no); - if (player_no < TOTAL_PLAYER_NUM) { - u32 ev = mEv_SAVED_GATEWAY_PLR0; - ev += player_no; - - mEv_EventOFF(ev); - } + if (player_no < TOTAL_PLAYER_NUM) { + u32 ev = mEv_SAVED_GATEWAY_PLR0; + ev += player_no; + + mEv_EventOFF(ev); + } } static int title_demo_number = -1; extern int mEv_CheckTitleDemo() { - return title_demo_number; + return title_demo_number; } extern void mEv_SetTitleDemo(int demo_number) { - title_demo_number = demo_number; + title_demo_number = demo_number; } extern void mEv_RenewalDataEveryDay() { - if (mTM_check_renew_time(mTM_RENEW_TIME_DAILY) == TRUE) { - int i; - - for (i = 0; i < PLAYER_NUM; i++) { - - u32 check_event = mEv_SAVED_HRAWAIT_PLR0 + i; - if (mEv_CheckEvent(check_event) == TRUE) { - /* After a new day starts, turn off all players' 'wait a day' HRA event and turn on talk to Tom Nook HRA event */ - mEv_EventOFF(check_event); - mEv_EventON(mEv_SAVED_HRATALK_PLR0 + i); - } + if (mTM_check_renew_time(mTM_RENEW_TIME_DAILY) == TRUE) { + int i; + + for (i = 0; i < PLAYER_NUM; i++) { + + u32 check_event = mEv_SAVED_HRAWAIT_PLR0 + i; + if (mEv_CheckEvent(check_event) == TRUE) { + /* After a new day starts, turn off all players' 'wait a day' HRA event and turn on talk to Tom Nook HRA + * event */ + mEv_EventOFF(check_event); + mEv_EventON(mEv_SAVED_HRATALK_PLR0 + i); + } + } } - } } extern void mEv_GetEventWeather(s16* weather, s16* intensity) { - intensity[0] = mEnv_WEATHER_INTENSITY_HEAVY; + intensity[0] = mEnv_WEATHER_INTENSITY_HEAVY; - if (mEv_check_schedule(mEv_EVENT_WEATHER_CLEAR)) { - weather[0] = mEnv_WEATHER_CLEAR; - } - else if (mEv_check_schedule(mEv_EVENT_WEATHER_SNOW)) { - weather[0] = mEnv_WEATHER_SNOW; - } - else if (mEv_check_schedule(mEv_EVENT_WEATHER_SPORTS_FAIR)) { - weather[0] = mEnv_WEATHER_CLEAR; - } - else { - weather[0] = -1; // no event weather - } + if (mEv_check_schedule(mEv_EVENT_WEATHER_CLEAR)) { + weather[0] = mEnv_WEATHER_CLEAR; + } else if (mEv_check_schedule(mEv_EVENT_WEATHER_SNOW)) { + weather[0] = mEnv_WEATHER_SNOW; + } else if (mEv_check_schedule(mEv_EVENT_WEATHER_SPORTS_FAIR)) { + weather[0] = mEnv_WEATHER_CLEAR; + } else { + weather[0] = -1; // no event weather + } } #include "m_event_schedule.c_inc" static int event_rumor_table[] = { - mEv_EVENT_RUMOR_NEW_YEARS_DAY, - mEv_EVENT_RUMOR_KAMAKURA, - mEv_EVENT_RUMOR_VALENTINES_DAY, - mEv_EVENT_RUMOR_GROUNDHOG_DAY, - mEv_EVENT_RUMOR_APRILFOOLS_DAY, - mEv_EVENT_RUMOR_CHERRY_BLOSSOM_FESTIVAL, - mEv_EVENT_RUMOR_SPRING_SPORTS_FAIR, - mEv_EVENT_RUMOR_HARVEST_FESTIVAL, - mEv_EVENT_76, - mEv_EVENT_RUMOR_FISHING_TOURNEY_1, - mEv_EVENT_TALK_FISHING_TOURNEY_1, - mEv_EVENT_RUMOR_MORNING_AEROBICS, - mEv_EVENT_TALK_MORNING_AEROBICS, - mEv_EVENT_RUMOR_FIREWORKS_SHOW, - mEv_EVENT_76, - mEv_EVENT_RUMOR_METEOR_SHOWER, - mEv_EVENT_RUMOR_HARVEST_MOON_DAY, - mEv_EVENT_RUMOR_FALL_SPORTS_FAIR, - mEv_EVENT_RUMOR_MUSHROOM_SEASON, - mEv_EVENT_TALK_MUSHROOM_SEASON, - mEv_EVENT_RUMOR_HALLOWEEN, - mEv_EVENT_RUMOR_FISHING_TOURNEY_2, - mEv_EVENT_TALK_FISHING_TOURNEY_2, - mEv_EVENT_RUMOR_TOY_DAY, - mEv_EVENT_RUMOR_NEW_YEARS_EVE_COUNTDOWN + mEv_EVENT_RUMOR_NEW_YEARS_DAY, mEv_EVENT_RUMOR_KAMAKURA, mEv_EVENT_RUMOR_VALENTINES_DAY, + mEv_EVENT_RUMOR_GROUNDHOG_DAY, mEv_EVENT_RUMOR_APRILFOOLS_DAY, mEv_EVENT_RUMOR_CHERRY_BLOSSOM_FESTIVAL, + mEv_EVENT_RUMOR_SPRING_SPORTS_FAIR, mEv_EVENT_RUMOR_HARVEST_FESTIVAL, mEv_EVENT_76, + mEv_EVENT_RUMOR_FISHING_TOURNEY_1, mEv_EVENT_TALK_FISHING_TOURNEY_1, mEv_EVENT_RUMOR_MORNING_AEROBICS, + mEv_EVENT_TALK_MORNING_AEROBICS, mEv_EVENT_RUMOR_FIREWORKS_SHOW, mEv_EVENT_76, + mEv_EVENT_RUMOR_METEOR_SHOWER, mEv_EVENT_RUMOR_HARVEST_MOON_DAY, mEv_EVENT_RUMOR_FALL_SPORTS_FAIR, + mEv_EVENT_RUMOR_MUSHROOM_SEASON, mEv_EVENT_TALK_MUSHROOM_SEASON, mEv_EVENT_RUMOR_HALLOWEEN, + mEv_EVENT_RUMOR_FISHING_TOURNEY_2, mEv_EVENT_TALK_FISHING_TOURNEY_2, mEv_EVENT_RUMOR_TOY_DAY, + mEv_EVENT_RUMOR_NEW_YEARS_EVE_COUNTDOWN }; static int n_event_rumors = ARRAY_COUNT(event_rumor_table); -static u16 special_event_types[] = { - mEv_EVENT_SHOP_SALE, - mEv_EVENT_DESIGNER, - mEv_EVENT_BROKER_SALE, - mEv_EVENT_ARTIST, - mEv_EVENT_CARPET_PEDDLER, - mEv_EVENT_GYPSY -}; +static u16 special_event_types[] = { mEv_EVENT_SHOP_SALE, mEv_EVENT_DESIGNER, mEv_EVENT_BROKER_SALE, + mEv_EVENT_ARTIST, mEv_EVENT_CARPET_PEDDLER, mEv_EVENT_GYPSY }; static int n_special_event_type = ARRAY_COUNT(special_event_types); static int last_day_of_month(lbRTC_month_t month) { - static lbRTC_day_t last_day[lbRTC_MONTHS_MAX] = { - 31, 28, 31, 30, - 31, 30, 31, 31, - 30, 31, 30, 31 - }; + static lbRTC_day_t last_day[lbRTC_MONTHS_MAX] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; - lbRTC_year_t year = Common_Get(time.rtc_time.year); - lbRTC_day_t day = last_day[month - 1]; + lbRTC_year_t year = Common_Get(time.rtc_time.year); + lbRTC_day_t day = last_day[month - 1]; - if (month != lbRTC_FEBRUARY) { - return day; - } - else if (lbRTC_IS_LEAPYEAR(year)) { - return 29; - } - else { - return 28; - } + if (month != lbRTC_FEBRUARY) { + return day; + } else if (lbRTC_IS_LEAPYEAR(year)) { + return 29; + } else { + return 28; + } } static void init_weekday1st() { - lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); - lbRTC_month_t month; - lbRTC_month_t temp; - lbRTC_month_t i; - int weekday; + lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); + lbRTC_month_t month; + lbRTC_month_t temp; + lbRTC_month_t i; + int weekday; - month = rtc_time->month & 0xF; - weekday1st_year = rtc_time->year; + month = rtc_time->month & 0xF; + weekday1st_year = rtc_time->year; - weekday = (rtc_time->weekday + (1 - rtc_time->day)) % lbRTC_WEEK; - if (weekday < 0) { - weekday += lbRTC_WEEK; - } - - weekday1st[month] = weekday; - - for (i = month, temp = month + 1; temp <= lbRTC_MONTHS_MAX; i++, temp++) { - int last = last_day_of_month(i); - int t = (weekday1st[i] + (u8)last) % lbRTC_WEEK; - - if (t < 0) { - t += lbRTC_WEEK; - } - - weekday1st[temp] = t; - } - - for (temp = month - 1, i = month; temp >= lbRTC_JANUARY; i--, temp--) { - lbRTC_day_t last_day = last_day_of_month(temp); - - weekday = (weekday1st[i] - last_day) % lbRTC_WEEK; + weekday = (rtc_time->weekday + (1 - rtc_time->day)) % lbRTC_WEEK; if (weekday < 0) { - weekday += lbRTC_WEEK; + weekday += lbRTC_WEEK; } - weekday1st[temp] = weekday; - } + weekday1st[month] = weekday; + + for (i = month, temp = month + 1; temp <= lbRTC_MONTHS_MAX; i++, temp++) { + int last = last_day_of_month(i); + int t = (weekday1st[i] + (u8)last) % lbRTC_WEEK; + + if (t < 0) { + t += lbRTC_WEEK; + } + + weekday1st[temp] = t; + } + + for (temp = month - 1, i = month; temp >= lbRTC_JANUARY; i--, temp--) { + lbRTC_day_t last_day = last_day_of_month(temp); + + weekday = (weekday1st[i] - last_day) % lbRTC_WEEK; + if (weekday < 0) { + weekday += lbRTC_WEEK; + } + + weekday1st[temp] = weekday; + } } static int check_date_range(u16 date, u16 lower_bound, u16 upper_bound) { - int res; + int res; - if (lower_bound > upper_bound) { - res = FALSE; - if (lower_bound <= date || date <= upper_bound) { - res = TRUE; + if (lower_bound > upper_bound) { + res = FALSE; + if (lower_bound <= date || date <= upper_bound) { + res = TRUE; + } + } else { + res = FALSE; + if (lower_bound <= date && date <= upper_bound) { + res = TRUE; + } } - } - else { - res = FALSE; - if (lower_bound <= date && date <= upper_bound) { - res = TRUE; - } - } - return res; + return res; } static int check_ymdh_range(u32 ymdh, u32 lower_bound, u32 upper_bound) { - int res = FALSE; + int res = FALSE; - if (lower_bound <= ymdh && ymdh <= upper_bound) { - res = TRUE; - } + if (lower_bound <= ymdh && ymdh <= upper_bound) { + res = TRUE; + } - return res; + return res; } static u16 after_n_day(u16 month_day, int n_day) { - mEv_MonthDay_u after; - u8 day; + mEv_MonthDay_u after; + u8 day; - after.raw = month_day; + after.raw = month_day; - if (n_day >= 0) { - day = last_day_of_month(after.month); + if (n_day >= 0) { + day = last_day_of_month(after.month); - after.day = after.day + n_day; - if (after.day > day) { - if (after.month == lbRTC_DECEMBER) { - after.month = lbRTC_JANUARY; - } - else { - after.month++; - } + after.day = after.day + n_day; + if (after.day > day) { + if (after.month == lbRTC_DECEMBER) { + after.month = lbRTC_JANUARY; + } else { + after.month++; + } - after.day -= day; + after.day -= day; + } + } else { + after.day = after.day + n_day; + if ((after.day & 0x80) != 0 || after.day == 0) { + if (after.month == lbRTC_JANUARY) { + after.month = lbRTC_DECEMBER; + } else { + after.month--; + } + + day = last_day_of_month(after.month); + after.day += day; + } } - } - else { - after.day = after.day + n_day; - if ((after.day & 0x80) != 0 || after.day == 0) { - if (after.month == lbRTC_JANUARY) { - after.month = lbRTC_DECEMBER; - } - else { - after.month--; - } - day = last_day_of_month(after.month); - after.day += day; - } - } - - return after.raw; + return after.raw; } extern lbRTC_day_t mEv_get_next_weekday(lbRTC_weekday_t weekday) { - lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); - lbRTC_weekday_t next_weekday; - lbRTC_day_t day; - lbRTC_day_t last_day; + lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); + lbRTC_weekday_t next_weekday; + lbRTC_day_t day; + lbRTC_day_t last_day; - if (weekday >= rtc_time->weekday) { - day = rtc_time->day + (weekday - rtc_time->weekday); - } - else { - day = rtc_time->day + (lbRTC_WEEK - (rtc_time->weekday - weekday)); - } + if (weekday >= rtc_time->weekday) { + day = rtc_time->day + (weekday - rtc_time->weekday); + } else { + day = rtc_time->day + (lbRTC_WEEK - (rtc_time->weekday - weekday)); + } - last_day = last_day_of_month(rtc_time->month); + last_day = last_day_of_month(rtc_time->month); - if (day > last_day) { - day -= last_day; - } + if (day > last_day) { + day -= last_day; + } - return day; + return day; } -#define mEv_date_decode_weekday(day) ((day) & 0b00000111) // 0-6 (which weekday, Sunday-Saturday) +#define mEv_date_decode_weekday(day) ((day) & 0b00000111) // 0-6 (which weekday, Sunday-Saturday) #define mEv_date_decode_week(day) (((day) & 0b00111000) >> 3) // 0-5 (which week of the month, 1st, 2nd, 3rd, ...) static lbRTC_day_t m_weekday2day(lbRTC_month_t month, u8 day_enc) { - lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); - int week = mEv_date_decode_week(day_enc); // get the week of the month - int weekday = mEv_date_decode_weekday(day_enc); // get the weekday - lbRTC_day_t day = 0; - int last_day = last_day_of_month(month); + lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); + int week = mEv_date_decode_week(day_enc); // get the week of the month + int weekday = mEv_date_decode_weekday(day_enc); // get the weekday + lbRTC_day_t day = 0; + int last_day = last_day_of_month(month); - if (week == mEv_SCHEDULE_EVERY_WEEK) { - if (month > rtc_time->month) { - week = 1; /* 1st week of this month */ - } - else if (month < rtc_time->month) { - week = mEv_SCHEDULE_LAST_WEEKDAY_OF_MONTH; /* last weekday of the month */ - } - else { - day = rtc_time->day - (rtc_time->weekday - weekday); + if (week == mEv_SCHEDULE_EVERY_WEEK) { + if (month > rtc_time->month) { + week = 1; /* 1st week of this month */ + } else if (month < rtc_time->month) { + week = mEv_SCHEDULE_LAST_WEEKDAY_OF_MONTH; /* last weekday of the month */ + } else { + day = rtc_time->day - (rtc_time->weekday - weekday); - if (day > (u8)last_day) { - week = mEv_SCHEDULE_LAST_WEEKDAY_OF_MONTH; - } - else { - week = 0; /* cleared */ - } + if (day > (u8)last_day) { + week = mEv_SCHEDULE_LAST_WEEKDAY_OF_MONTH; + } else { + week = 0; /* cleared */ + } + } } - } - if (week == mEv_SCHEDULE_LAST_WEEKDAY_OF_MONTH) { - lbRTC_day_t d = last_day; - int t_day = (-1 + d + weekday1st[month]) % lbRTC_WEEK; /* get the weekday of the first day of next month */ + if (week == mEv_SCHEDULE_LAST_WEEKDAY_OF_MONTH) { + lbRTC_day_t d = last_day; + int t_day = (-1 + d + weekday1st[month]) % lbRTC_WEEK; /* get the weekday of the first day of next month */ - if (weekday <= t_day) { - day = d - (t_day - weekday); - } - else { - day = (d - (t_day - weekday)) - lbRTC_WEEK; - } - } - else if (week != 0) { - int t_day = weekday1st[month]; + if (weekday <= t_day) { + day = d - (t_day - weekday); + } else { + day = (d - (t_day - weekday)) - lbRTC_WEEK; + } + } else if (week != 0) { + int t_day = weekday1st[month]; - if (weekday >= t_day) { - day = 1 + (week - 1) * lbRTC_WEEK + (weekday - t_day); + if (weekday >= t_day) { + day = 1 + (week - 1) * lbRTC_WEEK + (weekday - t_day); + } else { + day = 1 + week * lbRTC_WEEK + (weekday - t_day); + } } - else { - day = 1 + week * lbRTC_WEEK + (weekday - t_day); - } - } - return day; + return day; } static lbRTC_weekday_t weekday1st[lbRTC_MONTHS_MAX]; extern int mEv_weekday2day(lbRTC_month_t month, int week, int weekday) { - lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); - lbRTC_day_t day = 0; + lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); + lbRTC_day_t day = 0; - if (week == mEv_SCHEDULE_EVERY_WEEK) { - if (month > rtc_time->month) { - week = 1; /* 1st week of this month */ + if (week == mEv_SCHEDULE_EVERY_WEEK) { + if (month > rtc_time->month) { + week = 1; /* 1st week of this month */ + } else if (month < rtc_time->month) { + week = mEv_SCHEDULE_LAST_WEEKDAY_OF_MONTH; /* last weekday of the month */ + } else { + day = rtc_time->day - (rtc_time->weekday - weekday); + week = 0; /* cleared */ + } } - else if (month < rtc_time->month) { - week = mEv_SCHEDULE_LAST_WEEKDAY_OF_MONTH; /* last weekday of the month */ - } - else { - day = rtc_time->day - (rtc_time->weekday - weekday); - week = 0; /* cleared */ - } - } - if (week == mEv_SCHEDULE_LAST_WEEKDAY_OF_MONTH) { - lbRTC_day_t last_day = last_day_of_month(month); - int t_day = (-1 + last_day + weekday1st[month]) % lbRTC_WEEK; /* get the weekday of the first day of next month */ + if (week == mEv_SCHEDULE_LAST_WEEKDAY_OF_MONTH) { + lbRTC_day_t last_day = last_day_of_month(month); + int t_day = + (-1 + last_day + weekday1st[month]) % lbRTC_WEEK; /* get the weekday of the first day of next month */ - if (weekday <= t_day) { - day = last_day - (t_day - weekday); - } - else { - day = (last_day - (t_day - weekday)) - lbRTC_WEEK; - } - } - else if (week != 0) { - int t_day = weekday1st[month]; + if (weekday <= t_day) { + day = last_day - (t_day - weekday); + } else { + day = (last_day - (t_day - weekday)) - lbRTC_WEEK; + } + } else if (week != 0) { + int t_day = weekday1st[month]; - if (weekday >= t_day) { - day = 1 + (week - 1) * lbRTC_WEEK + (weekday - t_day); + if (weekday >= t_day) { + day = 1 + (week - 1) * lbRTC_WEEK + (weekday - t_day); + } else { + day = 1 + week * lbRTC_WEEK + (weekday - t_day); + } } - else { - day = 1 + week * lbRTC_WEEK + (weekday - t_day); - } - } - return day; + return day; } static int get_end_time(u32 active_hours) { - int hour; - int i; + int hour; + int i; - if ((active_hours & ((1 << 24) - 1)) == 0) { - return -1; /* no active hours */ - } - - hour = 23; - for (i = 0; i < 24; i++) { - if ((active_hours & (1 << 23)) != 0) { - break; + if ((active_hours & ((1 << 24) - 1)) == 0) { + return -1; /* no active hours */ } - active_hours <<= 1; /* move hours left by one bit, MSB is latest hour */ - hour--; - } + hour = 23; + for (i = 0; i < 24; i++) { + if ((active_hours & (1 << 23)) != 0) { + break; + } - return hour; + active_hours <<= 1; /* move hours left by one bit, MSB is latest hour */ + hour--; + } + + return hour; } static mEv_event_today_c event_today[mEv_TODAY_EVENT_NUM]; static u8 index_today[mEv_EVENT_NUM]; extern int mEv_get_end_time(int event_type) { - u8 idx = index_today[event_type]; - mEv_event_today_c* ev_today = &event_today[idx]; + u8 idx = index_today[event_type]; + mEv_event_today_c* ev_today = &event_today[idx]; - if (idx == 0xFF) { - return -1; - } - else { - return get_end_time(ev_today->active_hours); - } + if (idx == 0xFF) { + return -1; + } else { + return get_end_time(ev_today->active_hours); + } } static int search_empty_event_today() { - int i; + int i; - for (i = 0; i < mEv_TODAY_EVENT_NUM; i++) { - if (event_today[i].type == -1) { - return i; + for (i = 0; i < mEv_TODAY_EVENT_NUM; i++) { + if (event_today[i].type == -1) { + return i; + } } - } - return i; + return i; } static int add_event_today(u16 month_day, mEv_schedule_c* schedule) { - mEv_event_today_c* ev_today; - u8 idx = index_today[schedule->type]; - int res = FALSE; + mEv_event_today_c* ev_today; + u8 idx = index_today[schedule->type]; + int res = FALSE; - if (idx != 0xFF) { - ev_today = &event_today[idx]; - res = FALSE; - } - else { - int idx = search_empty_event_today(); + if (idx != 0xFF) { + ev_today = &event_today[idx]; + res = FALSE; + } else { + int idx = search_empty_event_today(); - if (idx >= mEv_TODAY_EVENT_NUM) { - return FALSE; - } - - index_today[schedule->type] = idx; - ev_today = &event_today[idx]; - n_today_events++; - } + if (idx >= mEv_TODAY_EVENT_NUM) { + return FALSE; + } - { - u8 start_hour = schedule->date[0].d.hour; - u8 end_hour = schedule->date[1].d.hour; - u32 n; - lbRTC_hour_t i; - - if ((start_hour & mEv_SCHEDULE_TODAY) != 0) { - ev_today->begin_date.raw = month_day; - ev_today->end_date.raw = month_day; - start_hour &= ~mEv_SCHEDULE_TODAY; - end_hour &= ~mEv_SCHEDULE_TODAY; - } - else { - ev_today->begin_date.raw = schedule->date[0].md; - ev_today->end_date.raw = schedule->date[1].md; + index_today[schedule->type] = idx; + ev_today = &event_today[idx]; + n_today_events++; } - if ((start_hour & mEv_SCHEDULE_MULTIDAY) != 0) { - start_hour &= ~mEv_SCHEDULE_MULTIDAY; - end_hour &= ~mEv_SCHEDULE_MULTIDAY; + { + u8 start_hour = schedule->date[0].d.hour; + u8 end_hour = schedule->date[1].d.hour; + u32 n; + lbRTC_hour_t i; - if (month_day != schedule->date[0].md) { - start_hour = 0; - } + if ((start_hour & mEv_SCHEDULE_TODAY) != 0) { + ev_today->begin_date.raw = month_day; + ev_today->end_date.raw = month_day; + start_hour &= ~mEv_SCHEDULE_TODAY; + end_hour &= ~mEv_SCHEDULE_TODAY; + } else { + ev_today->begin_date.raw = schedule->date[0].md; + ev_today->end_date.raw = schedule->date[1].md; + } - if (month_day != schedule->date[1].md) { - end_hour = 23; - } + if ((start_hour & mEv_SCHEDULE_MULTIDAY) != 0) { + start_hour &= ~mEv_SCHEDULE_MULTIDAY; + end_hour &= ~mEv_SCHEDULE_MULTIDAY; + + if (month_day != schedule->date[0].md) { + start_hour = 0; + } + + if (month_day != schedule->date[1].md) { + end_hour = 23; + } + } + + n = 1; + for (i = 0; i < 24; i++) { + if (start_hour <= i && i <= end_hour) { + ev_today->active_hours |= n; + } + + n <<= 1; + } } - n = 1; - for (i = 0; i < 24; i++) { - if (start_hour <= i && i <= end_hour) { - ev_today->active_hours |= n; - } + ev_today->type = schedule->type; + ev_today->status |= mEv_STATUS_EXIST; - n <<= 1; - } - } - - ev_today->type = schedule->type; - ev_today->status |= mEv_STATUS_EXIST; - - return res; + return res; } static int check_and_clear_event_today(Event_c* event, int type) { - u8 idx = index_today[type]; + u8 idx = index_today[type]; - if (idx != 0xFF) { - mEv_event_today_c* today_event = &event_today[idx]; + if (idx != 0xFF) { + mEv_event_today_c* today_event = &event_today[idx]; - if ((today_event->status & mEv_STATUS_EXIST) == FALSE) { - int flags = 0; - mEv_place_data_c* place = mEv_get_common_place(today_event->type, 81); + if ((today_event->status & mEv_STATUS_EXIST) == FALSE) { + int flags = 0; + mEv_place_data_c* place = mEv_get_common_place(today_event->type, 81); - if (place != NULL && place->block.x == event->block_x && place->block.z == event->block_z) { - flags |= 0b00000001; // 1, in the block the event is supposed to exist - } + if (place != NULL && place->block.x == event->block_x && place->block.z == event->block_z) { + flags |= 0b00000001; // 1, in the block the event is supposed to exist + } - if (mEv_check_status(today_event->type, mEv_STATUS_RUN)) { - flags |= 0b00000010; // 2, event is currently running - today_event->active_hours = 0x20000000; - } + if (mEv_check_status(today_event->type, mEv_STATUS_RUN)) { + flags |= 0b00000010; // 2, event is currently running + today_event->active_hours = 0x20000000; + } - if (type == today_event->type && flags == 0) { - today_event->type = -1; - today_event->active_hours = 0; - today_event->end_date.raw = 0; - today_event->status = 0; - n_today_events--; - index_today[type] = 0xFF; + if (type == today_event->type && flags == 0) { + today_event->type = -1; + today_event->active_hours = 0; + today_event->end_date.raw = 0; + today_event->status = 0; + n_today_events--; + index_today[type] = 0xFF; - return TRUE; - } + return TRUE; + } + } } - } - return FALSE; + return FALSE; } static int delete_too_short_event(Event_c* event, int type, u32 date) { - u8 idx = index_today[type]; + u8 idx = index_today[type]; - if (idx != 0xFF) { - mEv_event_today_c* today_event = &event_today[idx]; - mEv_schedule_date_u new_date; + if (idx != 0xFF) { + mEv_event_today_c* today_event = &event_today[idx]; + mEv_schedule_date_u new_date; - switch (today_event->type) { - case mEv_EVENT_NEW_YEARS_DAY: - case mEv_EVENT_GROUNDHOG_DAY: - case mEv_EVENT_SPORTS_FAIR_BALL_TOSS: - case mEv_EVENT_SPORTS_FAIR_AEROBICS: - case mEv_EVENT_SPORTS_FAIR_TUG_OF_WAR: - case mEv_EVENT_SPORTS_FAIR_FOOT_RACE: - case mEv_EVENT_CHERRY_BLOSSOM_FESTIVAL: - case mEv_EVENT_FISHING_TOURNEY_1: - case mEv_EVENT_FIREWORKS_SHOW: - case mEv_EVENT_MORNING_AEROBICS: - case mEv_EVENT_HARVEST_MOON_FESTIVAL: - case mEv_EVENT_FISHING_TOURNEY_2: - case mEv_EVENT_HARVEST_FESTIVAL: - { - new_date.raw = date; - new_date.d.hour = mEv_get_end_time(today_event->type); + switch (today_event->type) { + case mEv_EVENT_NEW_YEARS_DAY: + case mEv_EVENT_GROUNDHOG_DAY: + case mEv_EVENT_SPORTS_FAIR_BALL_TOSS: + case mEv_EVENT_SPORTS_FAIR_AEROBICS: + case mEv_EVENT_SPORTS_FAIR_TUG_OF_WAR: + case mEv_EVENT_SPORTS_FAIR_FOOT_RACE: + case mEv_EVENT_CHERRY_BLOSSOM_FESTIVAL: + case mEv_EVENT_FISHING_TOURNEY_1: + case mEv_EVENT_FIREWORKS_SHOW: + case mEv_EVENT_MORNING_AEROBICS: + case mEv_EVENT_HARVEST_MOON_FESTIVAL: + case mEv_EVENT_FISHING_TOURNEY_2: + case mEv_EVENT_HARVEST_FESTIVAL: { + new_date.raw = date; + new_date.d.hour = mEv_get_end_time(today_event->type); - break; - } + break; + } - case mEv_EVENT_HALLOWEEN: - case mEv_EVENT_TOY_DAY_JINGLE: - case mEv_EVENT_NEW_YEARS_EVE_COUNTDOWN: - { - new_date.raw = 0; - new_date.md = today_event->end_date.raw; - new_date.d.hour = mEv_get_end_time(today_event->type); + case mEv_EVENT_HALLOWEEN: + case mEv_EVENT_TOY_DAY_JINGLE: + case mEv_EVENT_NEW_YEARS_EVE_COUNTDOWN: { + new_date.raw = 0; + new_date.md = today_event->end_date.raw; + new_date.d.hour = mEv_get_end_time(today_event->type); - break; - } + break; + } - default: - { - return FALSE; - } + default: { + return FALSE; + } + } + + if (new_date.raw != date) { + return FALSE; + } + + if (Common_Get(time.rtc_time).min < 55) { + return FALSE; + } + + Common_Get(event_common).too_short = type; } - if (new_date.raw != date) { - return FALSE; - } - - if (Common_Get(time.rtc_time).min < 55) { - return FALSE; - } - - Common_Get(event_common).too_short = type; - } - - return TRUE; + return TRUE; } static void init_today_event() { - int i; + int i; - for (i = 0; i < mEv_TODAY_EVENT_NUM; i++) { - mEv_event_today_c* ev_today = &event_today[i]; - - ev_today->type = -1; - ev_today->active_hours = 0; - ev_today->begin_date.raw = ev_today->end_date.raw = 0; - ev_today->status = 0; - } + for (i = 0; i < mEv_TODAY_EVENT_NUM; i++) { + mEv_event_today_c* ev_today = &event_today[i]; - n_today_events = 0; - for (i = 0; i < mEv_EVENT_NUM; i++) { - index_today[i] = 0xFF; - } + ev_today->type = -1; + ev_today->active_hours = 0; + ev_today->begin_date.raw = ev_today->end_date.raw = 0; + ev_today->status = 0; + } + + n_today_events = 0; + for (i = 0; i < mEv_EVENT_NUM; i++) { + index_today[i] = 0xFF; + } } static void init_time_seat() { - int i; + int i; - for (i = 0; i < mEv_TODAY_EVENT_NUM; i++) { - mEv_event_today_c* ev_today = &event_today[i]; - - ev_today->active_hours = 0; - ev_today->begin_date.raw = ev_today->end_date.raw = 0; - ev_today->status &= ~mEv_STATUS_EXIST; - } + for (i = 0; i < mEv_TODAY_EVENT_NUM; i++) { + mEv_event_today_c* ev_today = &event_today[i]; + + ev_today->active_hours = 0; + ev_today->begin_date.raw = ev_today->end_date.raw = 0; + ev_today->status &= ~mEv_STATUS_EXIST; + } } static int get_special_event_end_time(s16 event_type) { - int end_time = 0; + int end_time = 0; - switch (event_type) { - case mEv_EVENT_DESIGNER: - end_time = 5; - break; - case mEv_EVENT_ARTIST: - end_time = 5; - break; - case mEv_EVENT_CARPET_PEDDLER: - end_time = 5; - break; - case mEv_EVENT_GYPSY: - end_time = 20; - break; - case mEv_EVENT_BROKER_SALE: - end_time = 17; - break; - case mEv_EVENT_SHOP_SALE: - end_time = 23; - break; - } + switch (event_type) { + case mEv_EVENT_DESIGNER: + end_time = 5; + break; + case mEv_EVENT_ARTIST: + end_time = 5; + break; + case mEv_EVENT_CARPET_PEDDLER: + end_time = 5; + break; + case mEv_EVENT_GYPSY: + end_time = 20; + break; + case mEv_EVENT_BROKER_SALE: + end_time = 17; + break; + case mEv_EVENT_SHOP_SALE: + end_time = 23; + break; + } - return end_time; + return end_time; } #define mEv_MonthDay(m, d) (((u8)(m) << 8) | ((u8)(d))) @@ -879,693 +818,656 @@ static int get_special_event_end_time(s16 event_type) { #define mEv_YearMonthDayHour(y, m, d, h) ((u32)(((u8)(y) << 24) | ((u8)(m) << 16) | ((u8)(d) << 8) | ((u8)(h)))) -/* @nonmatching TODO: This function needs a lot of help matching. Current best scratch: https://decomp.me/scratch/0EXoP */ +/* @nonmatching TODO: This function needs a lot of help matching. Current best scratch: https://decomp.me/scratch/0EXoP + */ static int init_special_event(int new_event) { - lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); - mEv_special_c* special_ev = &Save_Get(event_save_data).special; - int res = FALSE; + lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); + mEv_special_c* special_ev = &Save_Get(event_save_data).special; + int res = FALSE; - switch (Common_Get(last_scene_no)) { - case SCENE_BUGGY: - case SCENE_BROKER_SHOP: - { - if (gamePT->frame_counter == 0) { - return FALSE; - } - - break; - } - } - - switch (Save_Get(scene_no)) { - case SCENE_BUGGY: - case SCENE_BROKER_SHOP: - return FALSE; - - case SCENE_SHOP0: - case SCENE_CONVENI: - case SCENE_SUPER: - case SCENE_DEPART: - case SCENE_DEPART_2: - { - if (Save_Get(event_save_common).special_event.type == mEv_EVENT_SHOP_SALE) { - return FALSE; - } - } - - // fallthrough case - default: - { - mEv_ymdh_u rtc_ymdh; - mEv_ymdh_u special_ymdh; - mEv_ymdh_u special_end_ymdh; - mEv_MonthDay_u special_monthday; - mEv_schedule_date_u rtc_sched; - u16 special_end_monthday; - u16 sale_day_monthday; - mEv_save_common_data_c* ev_save_common = Save_GetPointer(event_save_common); - - //u16 rtc_monthday = mEv_MonthDay(Common_Get(time.rtc_time.month), Common_Get(time.rtc_time.day)); - //u32 rtc_ymdh = (u32)(((Common_Get(time.rtc_time.year) % 100) << 24) | (rtc_monthday << 8) | Common_Get(time.rtc_time.hour)); - // u32 special_ymdh = (u32)(((Save_Get(event_year_ymd.year) % 100) << 24) | (Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL0] << 8)); - // u32 special_end_ymdh = (u32)( - // (((Save_Get(event_year_ymd.year) % 100) - ((Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL2] < Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL0] && rtc_monthday < Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL0]) ? 1 : 2)) << 24) | - // (Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL0] << 8) | - // (u8)get_special_event_end_time(Save_Get(event_save_common).special_event.type) - // ); - - rtc_sched.raw = 0; - rtc_sched.d.month = rtc_time->month; - rtc_sched.d.day = rtc_time->day; - - rtc_ymdh.raw = (rtc_sched.md) << 8; - rtc_ymdh.year = rtc_time->year % 100; - rtc_ymdh.hour = rtc_time->hour; - - special_ymdh.raw = ev_save_common->dates[mEv_SAVE_DATE_SPECIAL0] << 8; - special_ymdh.year = Save_Get(event_year) % 100; - - //special_end_ymdh.raw = (special_ymdh.month_day.raw) << 8; - special_end_ymdh.year = (Save_Get(event_year) % 100) + ((ev_save_common->dates[mEv_SAVE_DATE_SPECIAL0] > ev_save_common->dates[mEv_SAVE_DATE_SPECIAL2] && ev_save_common->dates[mEv_SAVE_DATE_SPECIAL0] > rtc_sched.md) ? 0 : -1); - special_end_ymdh.hour = get_special_event_end_time(ev_save_common->special_event.type); - - - if (check_ymdh_range(rtc_ymdh.raw, special_ymdh.raw, special_end_ymdh.raw) == FALSE || new_event) { - int seed = Common_Get(now_private)->player_ID.player_id; - s16 type; - int next_event_day_gap; - - res |= TRUE; - mEv_ClearSpecialEvent(special_ev); - seed += 1 + rtc_time->year - rtc_time->month + rtc_time->day + rtc_time->hour; - /* Sale Day */ - sale_day_monthday = after_n_day(((lbRTC_NOVEMBER) << 8) | m_weekday2day(lbRTC_NOVEMBER, mEv_SCHEDULE_4TH_WEEKDAY(lbRTC_THURSDAY)), 1); - - do { - sad_label: - /* Select a new unique random event */ - do { - type = special_event_types[seed % n_special_event_type]; - seed++; - } while (type == Save_Get(event_save_common).special_event.type); - - mFAs_SetFieldRank(); - next_event_day_gap = 1 + - ((rtc_time->day + rtc_time->month * rtc_time->sec) % - ((mFAs_FIELDRANK_SIX + 1) - mFAs_GetFieldRank())); - - if (next_event_day_gap == 1) { - next_event_day_gap = 2; // minimum of 2 days between special events + switch (Common_Get(last_scene_no)) { + case SCENE_BUGGY: + case SCENE_BROKER_SHOP: { + if (gamePT->frame_counter == 0) { + return FALSE; } - special_monthday.raw = after_n_day(rtc_sched.md, next_event_day_gap); - if ((u16)rtc_sched.md <= sale_day_monthday && (u16)sale_day_monthday <= (u32)special_monthday.raw) { - /* Force the next special event to be Crazy Redd since Sale Day falls between now and the rolled event date */ - special_monthday.raw = sale_day_monthday; - type = mEv_EVENT_BROKER_SALE; - } - - /* Set event start hour */ - Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL3] = 6; - - switch (type) { - case mEv_EVENT_GYPSY: - break; - - case mEv_EVENT_SHOP_SALE: - { - lbRTC_day_t last_day = last_day_of_month(special_monthday.month); - - if ( - special_monthday.day != last_day && - (special_monthday.raw < mEv_MonthDay(lbRTC_JANUARY, 1) || special_monthday.raw > mEv_MonthDay(lbRTC_JANUARY, 3)) && - mEv_CheckEvent(mEv_SAVED_RENEWSHOP) != TRUE - ) { - /* Set shop sale starting hour randomly between 12PM and 7PM */ - Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL3] = 12 + RANDOM(8); - goto hate_gotos; - } - goto sad_label; - } - - case mEv_EVENT_BROKER_SALE: - { - if (special_monthday.raw != mEv_MonthDay(lbRTC_JULY, 4)) { - /* Set broker sale start hour to 6PM when it's not the Fireworks Festival */ - Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL3] = 18; - goto hate_gotos; - } - goto sad_label; - } - - default: - goto hate_gotos; - break; - } - } while (special_monthday.raw == mEv_MonthDay(lbRTC_DECEMBER, 31)); - - Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL3] = 21; // default event start time is 9pm? - - hate_gotos: - { - mEv_save_common_data_c* ev_save_common = Save_GetPointer(event_save_common); - u16 year; - - special_end_monthday = after_n_day(special_monthday.raw, type != mEv_EVENT_SHOP_SALE); // ?? - year = rtc_time->year; - ev_save_common->special_event.type = type; - ev_save_common->dates[mEv_SAVE_DATE_SPECIAL0] = rtc_sched.md; // current date - ev_save_common->dates[mEv_SAVE_DATE_SPECIAL1] = special_monthday.raw; // start date - ev_save_common->dates[mEv_SAVE_DATE_SPECIAL2] = special_end_monthday; // end date - Save_Set(event_year, year); - Save_Get(post_office).leaflet_recipient_flags.event_flags = 0b1111; // deliver leaflet to all players if necessary for event + break; } - } - break; } - } - return res; + switch (Save_Get(scene_no)) { + case SCENE_BUGGY: + case SCENE_BROKER_SHOP: + return FALSE; + + case SCENE_SHOP0: + case SCENE_CONVENI: + case SCENE_SUPER: + case SCENE_DEPART: + case SCENE_DEPART_2: { + if (Save_Get(event_save_common).special_event.type == mEv_EVENT_SHOP_SALE) { + return FALSE; + } + } + + // fallthrough case + default: { + mEv_ymdh_u rtc_ymdh; + mEv_ymdh_u special_ymdh; + mEv_ymdh_u special_end_ymdh; + mEv_MonthDay_u special_monthday; + mEv_schedule_date_u rtc_sched; + u16 special_end_monthday; + u16 sale_day_monthday; + mEv_save_common_data_c* ev_save_common = Save_GetPointer(event_save_common); + + // u16 rtc_monthday = mEv_MonthDay(Common_Get(time.rtc_time.month), Common_Get(time.rtc_time.day)); + // u32 rtc_ymdh = (u32)(((Common_Get(time.rtc_time.year) % 100) << 24) | (rtc_monthday << 8) | + // Common_Get(time.rtc_time.hour)); + // u32 special_ymdh = (u32)(((Save_Get(event_year_ymd.year) % 100) << 24) | + // (Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL0] << 8)); u32 special_end_ymdh = (u32)( + // (((Save_Get(event_year_ymd.year) % 100) - ((Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL2] + // < Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL0] && rtc_monthday < + // Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL0]) ? 1 : 2)) << 24) | + // (Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL0] << 8) | + // (u8)get_special_event_end_time(Save_Get(event_save_common).special_event.type) + // ); + + rtc_sched.raw = 0; + rtc_sched.d.month = rtc_time->month; + rtc_sched.d.day = rtc_time->day; + + rtc_ymdh.raw = (rtc_sched.md) << 8; + rtc_ymdh.year = rtc_time->year % 100; + rtc_ymdh.hour = rtc_time->hour; + + special_ymdh.raw = ev_save_common->dates[mEv_SAVE_DATE_SPECIAL0] << 8; + special_ymdh.year = Save_Get(event_year) % 100; + + // special_end_ymdh.raw = (special_ymdh.month_day.raw) << 8; + special_end_ymdh.year = + (Save_Get(event_year) % 100) + + ((ev_save_common->dates[mEv_SAVE_DATE_SPECIAL0] > ev_save_common->dates[mEv_SAVE_DATE_SPECIAL2] && + ev_save_common->dates[mEv_SAVE_DATE_SPECIAL0] > rtc_sched.md) + ? 0 + : -1); + special_end_ymdh.hour = get_special_event_end_time(ev_save_common->special_event.type); + + if (check_ymdh_range(rtc_ymdh.raw, special_ymdh.raw, special_end_ymdh.raw) == FALSE || new_event) { + int seed = Common_Get(now_private)->player_ID.player_id; + s16 type; + int next_event_day_gap; + + res |= TRUE; + mEv_ClearSpecialEvent(special_ev); + seed += 1 + rtc_time->year - rtc_time->month + rtc_time->day + rtc_time->hour; + /* Sale Day */ + sale_day_monthday = after_n_day( + ((lbRTC_NOVEMBER) << 8) | m_weekday2day(lbRTC_NOVEMBER, mEv_SCHEDULE_4TH_WEEKDAY(lbRTC_THURSDAY)), + 1); + + do { + sad_label: + /* Select a new unique random event */ + do { + type = special_event_types[seed % n_special_event_type]; + seed++; + } while (type == Save_Get(event_save_common).special_event.type); + + mFAs_SetFieldRank(); + next_event_day_gap = 1 + ((rtc_time->day + rtc_time->month * rtc_time->sec) % + ((mFAs_FIELDRANK_SIX + 1) - mFAs_GetFieldRank())); + + if (next_event_day_gap == 1) { + next_event_day_gap = 2; // minimum of 2 days between special events + } + + special_monthday.raw = after_n_day(rtc_sched.md, next_event_day_gap); + if ((u16)rtc_sched.md <= sale_day_monthday && (u16)sale_day_monthday <= (u32)special_monthday.raw) { + /* Force the next special event to be Crazy Redd since Sale Day falls between now and the rolled + * event date */ + special_monthday.raw = sale_day_monthday; + type = mEv_EVENT_BROKER_SALE; + } + + /* Set event start hour */ + Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL3] = 6; + + switch (type) { + case mEv_EVENT_GYPSY: + break; + + case mEv_EVENT_SHOP_SALE: { + lbRTC_day_t last_day = last_day_of_month(special_monthday.month); + + if (special_monthday.day != last_day && + (special_monthday.raw < mEv_MonthDay(lbRTC_JANUARY, 1) || + special_monthday.raw > mEv_MonthDay(lbRTC_JANUARY, 3)) && + mEv_CheckEvent(mEv_SAVED_RENEWSHOP) != TRUE) { + /* Set shop sale starting hour randomly between 12PM and 7PM */ + Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL3] = 12 + RANDOM(8); + goto hate_gotos; + } + goto sad_label; + } + + case mEv_EVENT_BROKER_SALE: { + if (special_monthday.raw != mEv_MonthDay(lbRTC_JULY, 4)) { + /* Set broker sale start hour to 6PM when it's not the Fireworks Festival */ + Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL3] = 18; + goto hate_gotos; + } + goto sad_label; + } + + default: + goto hate_gotos; + break; + } + } while (special_monthday.raw == mEv_MonthDay(lbRTC_DECEMBER, 31)); + + Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL3] = 21; // default event start time is 9pm? + + hate_gotos: { + mEv_save_common_data_c* ev_save_common = Save_GetPointer(event_save_common); + u16 year; + + special_end_monthday = after_n_day(special_monthday.raw, type != mEv_EVENT_SHOP_SALE); // ?? + year = rtc_time->year; + ev_save_common->special_event.type = type; + ev_save_common->dates[mEv_SAVE_DATE_SPECIAL0] = rtc_sched.md; // current date + ev_save_common->dates[mEv_SAVE_DATE_SPECIAL1] = special_monthday.raw; // start date + ev_save_common->dates[mEv_SAVE_DATE_SPECIAL2] = special_end_monthday; // end date + Save_Set(event_year, year); + Save_Get(post_office).leaflet_recipient_flags.event_flags = + 0b1111; // deliver leaflet to all players if necessary for event + } + } + break; + } + } + + return res; } static int update_special_event(mEv_schedule_c* sched) { - s16 type = Save_Get(event_save_common).special_event.type; - int active = TRUE; - - switch (sched->type) { - case mEv_EVENT_ARTIST: - case mEv_EVENT_BROKER_SALE: - case mEv_EVENT_DESIGNER: - case mEv_EVENT_GYPSY: - case mEv_EVENT_SHOP_SALE: - case mEv_EVENT_CARPET_PEDDLER: - { - if (type != sched->type) { - sched->date[1].raw = 0; - sched->date[0].raw = 0; - active = FALSE; - } - break; + s16 type = Save_Get(event_save_common).special_event.type; + int active = TRUE; + + switch (sched->type) { + case mEv_EVENT_ARTIST: + case mEv_EVENT_BROKER_SALE: + case mEv_EVENT_DESIGNER: + case mEv_EVENT_GYPSY: + case mEv_EVENT_SHOP_SALE: + case mEv_EVENT_CARPET_PEDDLER: { + if (type != sched->type) { + sched->date[1].raw = 0; + sched->date[0].raw = 0; + active = FALSE; + } + break; + } + + case mEv_EVENT_HANDBILL_SHOP_SALE: { + if (type != mEv_EVENT_SHOP_SALE) { + sched->date[1].raw = 0; + sched->date[0].raw = 0; + active = FALSE; + } + break; + } + + case mEv_EVENT_HANDBILL_BROKER: { + if (type != mEv_EVENT_BROKER_SALE) { + sched->date[1].raw = 0; + sched->date[0].raw = 0; + active = FALSE; + } + break; + } + + default: + active = FALSE; + break; } - case mEv_EVENT_HANDBILL_SHOP_SALE: - { - if (type != mEv_EVENT_SHOP_SALE) { - sched->date[1].raw = 0; - sched->date[0].raw = 0; - active = FALSE; - } - break; - } - - case mEv_EVENT_HANDBILL_BROKER: - { - if (type != mEv_EVENT_BROKER_SALE) { - sched->date[1].raw = 0; - sched->date[0].raw = 0; - active = FALSE; - } - break; - } - - default: - active = FALSE; - break; - } - - return active; + return active; } extern u16 mEv_get_bargain_day() { - u16 bargain_day = 0; + u16 bargain_day = 0; - if (Save_Get(event_save_common).special_event.type == mEv_EVENT_SHOP_SALE) { - bargain_day = Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL1]; - } + if (Save_Get(event_save_common).special_event.type == mEv_EVENT_SHOP_SALE) { + bargain_day = Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL1]; + } - return bargain_day; + return bargain_day; } static int is_special_event_valid() { - mEv_schedule_date_u date; + mEv_schedule_date_u date; - date.raw = 0; - date.d.month = Common_Get(time.rtc_time.month); - date.d.day = Common_Get(time.rtc_time.day); + date.raw = 0; + date.d.month = Common_Get(time.rtc_time.month); + date.d.day = Common_Get(time.rtc_time.day); - return check_date_range( - date.md, - Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL0], - Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL2] - ); + return check_date_range(date.md, Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL0], + Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL2]); } extern u16 mEv_get_special_event_day() { - u16 day = 0; + u16 day = 0; - if (is_special_event_valid()) { - day = Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL1]; - } + if (is_special_event_valid()) { + day = Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL1]; + } - return day; + return day; } extern u16 mEv_get_special_event_type() { - u16 type = 0; + u16 type = 0; - if (is_special_event_valid()) { - type = Save_Get(event_save_common).special_event.type; - } + if (is_special_event_valid()) { + type = Save_Get(event_save_common).special_event.type; + } - return type; + return type; } extern int mEv_get_event_place(int event, int* bx, int* bz) { - mEv_place_data_c* place; + mEv_place_data_c* place; - if (mEv_check_status(event, mEv_STATUS_RUN) != FALSE) { - place = mEv_get_common_place(event, 81); + if (mEv_check_status(event, mEv_STATUS_RUN) != FALSE) { + place = mEv_get_common_place(event, 81); - if (place != NULL) { - *bx = place->block.x; - *bz = place->block.z; - return TRUE; + if (place != NULL) { + *bx = place->block.x; + *bz = place->block.z; + return TRUE; + } } - } - return FALSE; + return FALSE; } extern int mEv_bridge_time_check() { - lbRTC_time_c rtc_time = Common_Get(time.rtc_time); + lbRTC_time_c rtc_time = Common_Get(time.rtc_time); - return lbRTC_IsEqualDate( - Save_Get(bridge).build_date.year, Save_Get(bridge).build_date.month, Save_Get(bridge).build_date.day, - rtc_time.year, rtc_time.month, rtc_time.day - ); + return lbRTC_IsEqualDate(Save_Get(bridge).build_date.year, Save_Get(bridge).build_date.month, + Save_Get(bridge).build_date.day, rtc_time.year, rtc_time.month, rtc_time.day); } static void init_weekly_event() { - u16 sched_date; - lbRTC_time_c* rtc_time = &Common_Get(time.rtc_time); - mEv_kabu_peddler_c* kabu_peddler_data = &Save_Get(event_save_data).weekly.kabu_peddler; - mEv_MonthDay_u today_date; - u8 flag = 0; - u16 ghost_date; - u16 ghost_date2; - u16 monday_date; - u16 friday_date; - u16* event_dates = Save_Get(event_save_common).dates; + u16 sched_date; + lbRTC_time_c* rtc_time = &Common_Get(time.rtc_time); + mEv_kabu_peddler_c* kabu_peddler_data = &Save_Get(event_save_data).weekly.kabu_peddler; + mEv_MonthDay_u today_date; + u8 flag = 0; + u16 ghost_date; + u16 ghost_date2; + u16 monday_date; + u16 friday_date; + u16* event_dates = Save_Get(event_save_common).dates; - today_date.month = rtc_time->month; - today_date.day = rtc_time->day; - sched_date = event_dates[mEv_SAVE_DATE_WEEKLY]; - - switch (rtc_time->weekday) { - case lbRTC_SUNDAY: - { - /* Update Joan's data */ - if (today_date.raw != sched_date) { - mEv_ClearEventKabuPeddler(kabu_peddler_data); - sched_date = today_date.raw; - event_dates[mEv_SAVE_DATE_WEEKLY] = sched_date; - Save_Get(event_save_common).weekly_event.type = mEv_EVENT_KABU_PEDDLER; - flag = 1; - } - break; + today_date.month = rtc_time->month; + today_date.day = rtc_time->day; + sched_date = event_dates[mEv_SAVE_DATE_WEEKLY]; + + switch (rtc_time->weekday) { + case lbRTC_SUNDAY: { + /* Update Joan's data */ + if (today_date.raw != sched_date) { + mEv_ClearEventKabuPeddler(kabu_peddler_data); + sched_date = today_date.raw; + event_dates[mEv_SAVE_DATE_WEEKLY] = sched_date; + Save_Get(event_save_common).weekly_event.type = mEv_EVENT_KABU_PEDDLER; + flag = 1; + } + break; + } + + case lbRTC_SATURDAY: { + /* Update K.K. Slider's data */ + if (today_date.raw != sched_date) { + sched_date = today_date.raw; + event_dates[mEv_SAVE_DATE_WEEKLY] = sched_date; + Save_Get(event_save_common).weekly_event.type = mEv_EVENT_KK_SLIDER; + flag = 1; + } + break; + } + + default: { + monday_date = after_n_day(today_date.raw, lbRTC_MONDAY - rtc_time->weekday); + friday_date = after_n_day(today_date.raw, lbRTC_FRIDAY - rtc_time->weekday); + + /* Check if we should reschedule Gulliver */ + if (sched_date == 0 || check_date_range(sched_date, monday_date, friday_date) == FALSE) { + u8 ofs = 1 + (today_date.raw + rtc_time->hour) % 5; + /* Schedule a new date for the event between Monday & Friday */ + sched_date = after_n_day(today_date.raw, ofs - rtc_time->weekday); + event_dates[mEv_SAVE_DATE_WEEKLY] = sched_date; + Save_Get(event_save_common).weekly_event.type = mEv_EVENT_DOZAEMON; // Gulliver + Save_Get(event_save_common).dozaemon_completed = FALSE; + } + + /* Check if Guillver should spawn today */ + if (sched_date == today_date.raw) { + flag = mEv_EVENT_DOZAEMON; + } + + break; + } } - case lbRTC_SATURDAY: - { - /* Update K.K. Slider's data */ - if (today_date.raw != sched_date) { - sched_date = today_date.raw; - event_dates[mEv_SAVE_DATE_WEEKLY] = sched_date; - Save_Get(event_save_common).weekly_event.type = mEv_EVENT_KK_SLIDER; - flag = 1; - } - break; + /* Check if we should schedule Tortimer's 3rd bridge event */ + if (rtc_time->weekday == lbRTC_SATURDAY || (rtc_time->weekday != lbRTC_SUNDAY && sched_date != today_date.raw)) { + /* Gulliver wasn't scheduled today, so check the criteria is met */ + if (Common_Get(player_no) != mPr_FOREIGNER && Save_Get(now_npc_max) >= ANIMAL_NUM_MAX && + Save_Get(bridge).exists != TRUE && mSC_LightHouse_travel_check() == FALSE) { + flag = mEv_EVENT_SONCHO_BRIDGE_MAKE; + } + + /* Update bridge location seed and date */ + if (flag == mEv_EVENT_SONCHO_BRIDGE_MAKE && Save_Get(event_save_common).bridge_day != today_date.raw) { + Save_Get(event_save_common).bridge_day = today_date.raw; + Save_Get(event_save_common).bridge_flags.raw++; + } } - default: - { - monday_date = after_n_day(today_date.raw, lbRTC_MONDAY - rtc_time->weekday); - friday_date = after_n_day(today_date.raw, lbRTC_FRIDAY - rtc_time->weekday); - - /* Check if we should reschedule Gulliver */ - if (sched_date == 0 || check_date_range(sched_date, monday_date, friday_date) == FALSE) { - u8 ofs = 1 + (today_date.raw + rtc_time->hour) % 5; - /* Schedule a new date for the event between Monday & Friday */ - sched_date = after_n_day(today_date.raw, ofs - rtc_time->weekday); - event_dates[mEv_SAVE_DATE_WEEKLY] = sched_date; - Save_Get(event_save_common).weekly_event.type = mEv_EVENT_DOZAEMON; // Gulliver - Save_Get(event_save_common).dozaemon_completed = FALSE; - } - - /* Check if Guillver should spawn today */ - if (sched_date == today_date.raw) { - flag = mEv_EVENT_DOZAEMON; - } - - break; - } - } - - /* Check if we should schedule Tortimer's 3rd bridge event */ - if (rtc_time->weekday == lbRTC_SATURDAY || (rtc_time->weekday != lbRTC_SUNDAY && sched_date != today_date.raw)) { - /* Gulliver wasn't scheduled today, so check the criteria is met */ - if ( - Common_Get(player_no) != mPr_FOREIGNER && - Save_Get(now_npc_max) >= ANIMAL_NUM_MAX && - Save_Get(bridge).exists != TRUE && - mSC_LightHouse_travel_check() == FALSE - ) { - flag = mEv_EVENT_SONCHO_BRIDGE_MAKE; + /* Check if Blanca should spawn */ + if (flag != mEv_EVENT_DOZAEMON && flag != mEv_EVENT_SONCHO_BRIDGE_MAKE && + (mGH_check_birth2() || mMC_check_birth())) { + flag = mEv_EVENT_MASK_NPC; } - /* Update bridge location seed and date */ - if (flag == mEv_EVENT_SONCHO_BRIDGE_MAKE && Save_Get(event_save_common).bridge_day != today_date.raw) { - Save_Get(event_save_common).bridge_day = today_date.raw; - Save_Get(event_save_common).bridge_flags.raw++; + /* Initialize Wisp */ + Save_Get(event_save_common).weekly_event.flags = flag; + Save_Get(event_save_common).ghost_event_type = mEv_EVENT_NUM; // Wisp is not set to spawn + ghost_date = Save_Get(event_save_common).ghost_day; + monday_date = after_n_day(today_date.raw, -lbRTC_WEEK); + friday_date = after_n_day(today_date.raw, 4); + + /* Check if we should refresh Wisp's spawn date */ + if (ghost_date == 0 || check_date_range(ghost_date, monday_date, friday_date) == FALSE) { + ghost_date = after_n_day(today_date.raw, 2 + RANDOM(3)); + Save_Get(event_save_common).ghost_day = ghost_date; } - } - /* Check if Blanca should spawn */ - if ( - flag != mEv_EVENT_DOZAEMON && - flag != mEv_EVENT_SONCHO_BRIDGE_MAKE && - (mGH_check_birth2() || mMC_check_birth()) - ) { - flag = mEv_EVENT_MASK_NPC; - } - - /* Initialize Wisp */ - Save_Get(event_save_common).weekly_event.flags = flag; - Save_Get(event_save_common).ghost_event_type = mEv_EVENT_NUM; // Wisp is not set to spawn - ghost_date = Save_Get(event_save_common).ghost_day; - monday_date = after_n_day(today_date.raw, -lbRTC_WEEK); - friday_date = after_n_day(today_date.raw, 4); - - /* Check if we should refresh Wisp's spawn date */ - if (ghost_date == 0 || check_date_range(ghost_date, monday_date, friday_date) == FALSE) { - ghost_date = after_n_day(today_date.raw, 2 + RANDOM(3)); - Save_Get(event_save_common).ghost_day = ghost_date; - } - - /* Spawn Wisp if his scheduled appearance date is within [today-7, today] */ - if (check_date_range(ghost_date, monday_date, today_date.raw)) { - Save_Get(event_save_common).ghost_event_type = mEv_EVENT_GHOST; - } + /* Spawn Wisp if his scheduled appearance date is within [today-7, today] */ + if (check_date_range(ghost_date, monday_date, today_date.raw)) { + Save_Get(event_save_common).ghost_event_type = mEv_EVENT_GHOST; + } } static void update_soncho_event(mEv_schedule_c* sched) { - switch (sched->type) { - case mEv_EVENT_SONCHO_VACATION_JANUARY: - case mEv_EVENT_SONCHO_VACATION_FEBRUARY: - { - if (mSC_LightHouse_Event_Start() == FALSE) { - sched->date[1].raw = 0; - sched->date[0].raw = 0; - } + switch (sched->type) { + case mEv_EVENT_SONCHO_VACATION_JANUARY: + case mEv_EVENT_SONCHO_VACATION_FEBRUARY: { + if (mSC_LightHouse_Event_Start() == FALSE) { + sched->date[1].raw = 0; + sched->date[0].raw = 0; + } - break; + break; + } + + case mEv_EVENT_SONCHO_FISHING_TOURNEY_1: { + if (Save_Get(event_save_common).soncho_event_type != 0xFF) { + sched->date[1].raw = 0; + sched->date[0].raw = 0; + } + + break; + } + + case mEv_EVENT_SONCHO_FISHING_TOURNEY_2: { + if (Save_Get(event_save_common).soncho_event_type != 0xFF) { + sched->date[1].raw = 0; + sched->date[0].raw = 0; + } + + break; + } } - - case mEv_EVENT_SONCHO_FISHING_TOURNEY_1: - { - if (Save_Get(event_save_common).soncho_event_type != 0xFF) { - sched->date[1].raw = 0; - sched->date[0].raw = 0; - } - - break; - } - - case mEv_EVENT_SONCHO_FISHING_TOURNEY_2: - { - if (Save_Get(event_save_common).soncho_event_type != 0xFF) { - sched->date[1].raw = 0; - sched->date[0].raw = 0; - } - - break; - } - } } static void update_soncho_event2(mEv_schedule_c* sched) { - switch (sched->type) { - case mEv_EVENT_SONCHO_VACATION_JANUARY: - case mEv_EVENT_SONCHO_VACATION_FEBRUARY: - case mEv_EVENT_SONCHO_NEW_YEARS_DAY: - case mEv_EVENT_SONCHO_GROUNDHOG_DAY: - case mEv_EVENT_SONCHO_SPRING_SPORTS_FAIR: - case mEv_EVENT_SONCHO_APRILFOOLS_DAY: - case mEv_EVENT_SONCHO_CHERRY_BLOSSOM_FESTIVAL: - case mEv_EVENT_SONCHO_NATURE_DAY: - case mEv_EVENT_SONCHO_SPRING_CLEANING: - case mEv_EVENT_SONCHO_MOTHERS_DAY: - case mEv_EVENT_SONCHO_GRADUATION_DAY: - case mEv_EVENT_SONCHO_FATHERS_DAY: - case mEv_EVENT_SONCHO_FISHING_TOURNEY_1: - case mEv_EVENT_SONCHO_TOWN_DAY: - case mEv_EVENT_SONCHO_FIREWORKS_SHOW: - case mEv_EVENT_SONCHO_METEOR_SHOWER: - case mEv_EVENT_SONCHO_FOUNDERS_DAY: - case mEv_EVENT_SONCHO_LABOR_DAY: - case mEv_EVENT_SONCHO_FALL_SPORTS_FAIR: - case mEv_EVENT_SONCHO_HARVEST_MOON_FESTIVAL: - case mEv_EVENT_SONCHO_EXPLORERS_DAY: - case mEv_EVENT_SONCHO_HALLOWEEN: - case mEv_EVENT_SONCHO_MAYORS_DAY: - case mEv_EVENT_SONCHO_OFFICERS_DAY: - case mEv_EVENT_SONCHO_FISHING_TOURNEY_2: - case mEv_EVENT_SONCHO_HARVEST_FESTIVAL: - case mEv_EVENT_SONCHO_SALE_DAY: - case mEv_EVENT_SONCHO_SNOW_DAY: - case mEv_EVENT_SONCHO_TOY_DAY: - case mEv_EVENT_TALK_NEW_YEARS_COUNTDOWN: - { - if (Save_Get(event_save_common).weekly_event.flags == mEv_EVENT_SONCHO_BRIDGE_MAKE) { - Save_Get(event_save_common).weekly_event.flags = 0; - } + switch (sched->type) { + case mEv_EVENT_SONCHO_VACATION_JANUARY: + case mEv_EVENT_SONCHO_VACATION_FEBRUARY: + case mEv_EVENT_SONCHO_NEW_YEARS_DAY: + case mEv_EVENT_SONCHO_GROUNDHOG_DAY: + case mEv_EVENT_SONCHO_SPRING_SPORTS_FAIR: + case mEv_EVENT_SONCHO_APRILFOOLS_DAY: + case mEv_EVENT_SONCHO_CHERRY_BLOSSOM_FESTIVAL: + case mEv_EVENT_SONCHO_NATURE_DAY: + case mEv_EVENT_SONCHO_SPRING_CLEANING: + case mEv_EVENT_SONCHO_MOTHERS_DAY: + case mEv_EVENT_SONCHO_GRADUATION_DAY: + case mEv_EVENT_SONCHO_FATHERS_DAY: + case mEv_EVENT_SONCHO_FISHING_TOURNEY_1: + case mEv_EVENT_SONCHO_TOWN_DAY: + case mEv_EVENT_SONCHO_FIREWORKS_SHOW: + case mEv_EVENT_SONCHO_METEOR_SHOWER: + case mEv_EVENT_SONCHO_FOUNDERS_DAY: + case mEv_EVENT_SONCHO_LABOR_DAY: + case mEv_EVENT_SONCHO_FALL_SPORTS_FAIR: + case mEv_EVENT_SONCHO_HARVEST_MOON_FESTIVAL: + case mEv_EVENT_SONCHO_EXPLORERS_DAY: + case mEv_EVENT_SONCHO_HALLOWEEN: + case mEv_EVENT_SONCHO_MAYORS_DAY: + case mEv_EVENT_SONCHO_OFFICERS_DAY: + case mEv_EVENT_SONCHO_FISHING_TOURNEY_2: + case mEv_EVENT_SONCHO_HARVEST_FESTIVAL: + case mEv_EVENT_SONCHO_SALE_DAY: + case mEv_EVENT_SONCHO_SNOW_DAY: + case mEv_EVENT_SONCHO_TOY_DAY: + case mEv_EVENT_TALK_NEW_YEARS_COUNTDOWN: { + if (Save_Get(event_save_common).weekly_event.flags == mEv_EVENT_SONCHO_BRIDGE_MAKE) { + Save_Get(event_save_common).weekly_event.flags = 0; + } - break; + break; + } } - } - /* Update the event type to prefer these events over the fishing tourney event if they coincide */ - switch (sched->type) { - case mEv_EVENT_SONCHO_FATHERS_DAY: - case mEv_EVENT_SONCHO_OFFICERS_DAY: - Save_Get(event_save_common).soncho_event_type = sched->type; - break; - } + /* Update the event type to prefer these events over the fishing tourney event if they coincide */ + switch (sched->type) { + case mEv_EVENT_SONCHO_FATHERS_DAY: + case mEv_EVENT_SONCHO_OFFICERS_DAY: + Save_Get(event_save_common).soncho_event_type = sched->type; + break; + } } static void update_sports_fair(mEv_schedule_c* sched, lbRTC_day_t* equinox_day) { - lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); + lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); - switch (sched->type) { - case mEv_EVENT_SPRING_EQUINOX: - case mEv_EVENT_SONCHO_SPRING_SPORTS_FAIR: - { - if ( - rtc_time->month != lbRTC_MARCH || - rtc_time->day != lbRk_VernalEquinoxDay(rtc_time->year) - ) { - sched->date[1].raw = 0; - sched->date[0].raw = 0; - } - else { - sched->date[0].d.day = rtc_time->day; - sched->date[1].d.day = rtc_time->day; - *equinox_day = rtc_time->day; - } + switch (sched->type) { + case mEv_EVENT_SPRING_EQUINOX: + case mEv_EVENT_SONCHO_SPRING_SPORTS_FAIR: { + if (rtc_time->month != lbRTC_MARCH || rtc_time->day != lbRk_VernalEquinoxDay(rtc_time->year)) { + sched->date[1].raw = 0; + sched->date[0].raw = 0; + } else { + sched->date[0].d.day = rtc_time->day; + sched->date[1].d.day = rtc_time->day; + *equinox_day = rtc_time->day; + } - break; + break; + } + + case mEv_EVENT_RUMOR_SPRING_SPORTS_FAIR: { + int vernal_day = lbRk_VernalEquinoxDay(rtc_time->year); + + sched->date[0].d.day = vernal_day - 10; + sched->date[1].d.day = vernal_day - 1; + break; + } + + case mEv_EVENT_AUTUMN_EQUINOX: + case mEv_EVENT_SONCHO_FALL_SPORTS_FAIR: { + if (rtc_time->month != lbRTC_SEPTEMBER || rtc_time->day != lbRk_AutumnalEquinoxDay(rtc_time->year)) { + sched->date[1].raw = 0; + sched->date[0].raw = 0; + } else { + sched->date[0].d.day = rtc_time->day; + sched->date[1].d.day = rtc_time->day; + *equinox_day = rtc_time->day; + } + + break; + } + + case mEv_EVENT_RUMOR_FALL_SPORTS_FAIR: { + int autumnal_day = lbRk_AutumnalEquinoxDay(rtc_time->year); + + sched->date[0].d.day = autumnal_day - 10; + sched->date[1].d.day = autumnal_day - 1; + break; + } + + case mEv_EVENT_SPORTS_FAIR_BALL_TOSS: + case mEv_EVENT_SPORTS_FAIR_AEROBICS: + case mEv_EVENT_SPORTS_FAIR_TUG_OF_WAR: + case mEv_EVENT_SPORTS_FAIR_FOOT_RACE: + case mEv_EVENT_SPORTS_FAIR: + case mEv_EVENT_WEATHER_SPORTS_FAIR: { + if (*equinox_day == 0) { + sched->date[1].raw = 0; + sched->date[0].raw = 0; + } else { + sched->date[0].d.day = *equinox_day; + sched->date[1].d.day = *equinox_day; + } + + break; + } } - - case mEv_EVENT_RUMOR_SPRING_SPORTS_FAIR: - { - int vernal_day = lbRk_VernalEquinoxDay(rtc_time->year); - - sched->date[0].d.day = vernal_day - 10; - sched->date[1].d.day = vernal_day - 1; - break; - } - - case mEv_EVENT_AUTUMN_EQUINOX: - case mEv_EVENT_SONCHO_FALL_SPORTS_FAIR: - { - if ( - rtc_time->month != lbRTC_SEPTEMBER || - rtc_time->day != lbRk_AutumnalEquinoxDay(rtc_time->year) - ) { - sched->date[1].raw = 0; - sched->date[0].raw = 0; - } - else { - sched->date[0].d.day = rtc_time->day; - sched->date[1].d.day = rtc_time->day; - *equinox_day = rtc_time->day; - } - - break; - } - - case mEv_EVENT_RUMOR_FALL_SPORTS_FAIR: - { - int autumnal_day = lbRk_AutumnalEquinoxDay(rtc_time->year); - - sched->date[0].d.day = autumnal_day - 10; - sched->date[1].d.day = autumnal_day - 1; - break; - } - - case mEv_EVENT_SPORTS_FAIR_BALL_TOSS: - case mEv_EVENT_SPORTS_FAIR_AEROBICS: - case mEv_EVENT_SPORTS_FAIR_TUG_OF_WAR: - case mEv_EVENT_SPORTS_FAIR_FOOT_RACE: - case mEv_EVENT_SPORTS_FAIR: - case mEv_EVENT_WEATHER_SPORTS_FAIR: - { - if (*equinox_day == 0) { - sched->date[1].raw = 0; - sched->date[0].raw = 0; - } - else { - sched->date[0].d.day = *equinox_day; - sched->date[1].d.day = *equinox_day; - } - - break; - } - } } static void update_event_rumor(mEv_schedule_c* sched) { - lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); - int equinox_day; + lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); + int equinox_day; - switch (sched->type) { - case mEv_EVENT_RUMOR_SPRING_SPORTS_FAIR: - { - equinox_day = lbRk_VernalEquinoxDay(rtc_time->year); - sched->date[0].d.day = equinox_day - 10; - sched->date[1].d.day = equinox_day - 1; - break; + switch (sched->type) { + case mEv_EVENT_RUMOR_SPRING_SPORTS_FAIR: { + equinox_day = lbRk_VernalEquinoxDay(rtc_time->year); + sched->date[0].d.day = equinox_day - 10; + sched->date[1].d.day = equinox_day - 1; + break; + } + + case mEv_EVENT_TALK_FISHING_TOURNEY_1: + sched->date[1].d.day = + lbRTC_Weekly_day(rtc_time->year, lbRTC_JUNE, mEv_SCHEDULE_LAST_WEEKDAY_OF_MONTH, lbRTC_SUNDAY); + break; + + case mEv_EVENT_RUMOR_HARVEST_MOON_DAY: { + lbRTC_ymd_c harvest_moon_ymd; + lbRTC_time_c harvest_moon_day; + lbRTC_day_t beg_day; + lbRTC_month_t beg_month; + lbRTC_day_t end_day; + lbRTC_month_t end_month; + + lbRk_HarvestMoonDay(&harvest_moon_ymd, rtc_time->year); + harvest_moon_day.year = harvest_moon_ymd.year; + harvest_moon_day.month = harvest_moon_ymd.month; + harvest_moon_day.day = harvest_moon_ymd.day; + + /* Calculate rumor end date */ + lbRTC_Sub_DD(&harvest_moon_day, 1); + end_month = harvest_moon_day.month; + end_day = harvest_moon_day.day; + + /* Calculate rumor start date */ + lbRTC_Sub_DD(&harvest_moon_day, lbRTC_WEEK - 1); + + beg_month = harvest_moon_day.month; + beg_day = harvest_moon_day.day; + sched->date[0].d.month = beg_month; + sched->date[0].d.day = beg_day; + sched->date[1].d.month = end_month; + sched->date[1].d.day = end_day; + break; + } + + case mEv_EVENT_RUMOR_FALL_SPORTS_FAIR: { + equinox_day = lbRk_AutumnalEquinoxDay(rtc_time->year); + sched->date[0].d.day = equinox_day - 10; + sched->date[1].d.day = equinox_day - 1; + break; + } + + case mEv_EVENT_TALK_FISHING_TOURNEY_2: + sched->date[1].d.day = + lbRTC_Weekly_day(rtc_time->year, lbRTC_NOVEMBER, mEv_SCHEDULE_LAST_WEEKDAY_OF_MONTH, lbRTC_SUNDAY); + break; + + case mEv_EVENT_RUMOR_HARVEST_FESTIVAL: + sched->date[1].d.day = + lbRTC_Weekly_day(rtc_time->year, lbRTC_NOVEMBER, 4, lbRTC_THURSDAY) - 1; // 4th Thursday in November + break; } - - case mEv_EVENT_TALK_FISHING_TOURNEY_1: - sched->date[1].d.day = lbRTC_Weekly_day(rtc_time->year, lbRTC_JUNE, mEv_SCHEDULE_LAST_WEEKDAY_OF_MONTH, lbRTC_SUNDAY); - break; - - case mEv_EVENT_RUMOR_HARVEST_MOON_DAY: - { - lbRTC_ymd_c harvest_moon_ymd; - lbRTC_time_c harvest_moon_day; - lbRTC_day_t beg_day; - lbRTC_month_t beg_month; - lbRTC_day_t end_day; - lbRTC_month_t end_month; - - lbRk_HarvestMoonDay(&harvest_moon_ymd, rtc_time->year); - harvest_moon_day.year = harvest_moon_ymd.year; - harvest_moon_day.month = harvest_moon_ymd.month; - harvest_moon_day.day = harvest_moon_ymd.day; - - /* Calculate rumor end date */ - lbRTC_Sub_DD(&harvest_moon_day, 1); - end_month = harvest_moon_day.month; - end_day = harvest_moon_day.day; - - /* Calculate rumor start date */ - lbRTC_Sub_DD(&harvest_moon_day, lbRTC_WEEK - 1); - - beg_month = harvest_moon_day.month; - beg_day = harvest_moon_day.day; - sched->date[0].d.month = beg_month; - sched->date[0].d.day = beg_day; - sched->date[1].d.month = end_month; - sched->date[1].d.day = end_day; - break; - } - - case mEv_EVENT_RUMOR_FALL_SPORTS_FAIR: - { - equinox_day = lbRk_AutumnalEquinoxDay(rtc_time->year); - sched->date[0].d.day = equinox_day - 10; - sched->date[1].d.day = equinox_day - 1; - break; - } - - case mEv_EVENT_TALK_FISHING_TOURNEY_2: - sched->date[1].d.day = lbRTC_Weekly_day(rtc_time->year, lbRTC_NOVEMBER, mEv_SCHEDULE_LAST_WEEKDAY_OF_MONTH, lbRTC_SUNDAY); - break; - - case mEv_EVENT_RUMOR_HARVEST_FESTIVAL: - sched->date[1].d.day = lbRTC_Weekly_day(rtc_time->year, lbRTC_NOVEMBER, 4, lbRTC_THURSDAY) - 1; // 4th Thursday in November - break; - } } static void update_weekly_event(mEv_schedule_c* sched) { - s16 type = Save_Get(event_save_common).weekly_event.type; + s16 type = Save_Get(event_save_common).weekly_event.type; - switch (sched->type) { - case mEv_EVENT_KK_SLIDER: - case mEv_EVENT_KABU_PEDDLER: - { - if (type != sched->type) { - sched->date[1].raw = 0; - sched->date[0].raw = 0; - } + switch (sched->type) { + case mEv_EVENT_KK_SLIDER: + case mEv_EVENT_KABU_PEDDLER: { + if (type != sched->type) { + sched->date[1].raw = 0; + sched->date[0].raw = 0; + } - break; + break; + } + + case mEv_EVENT_DOZAEMON: { + if (Save_Get(event_save_common).weekly_event.flags == mEv_EVENT_SONCHO_BRIDGE_MAKE || type != sched->type) { + sched->date[1].raw = 0; + sched->date[0].raw = 0; + } + + break; + } + + case mEv_EVENT_SONCHO_BRIDGE_MAKE: + case mEv_EVENT_MASK_NPC: { + if (Save_Get(event_save_common).weekly_event.flags != sched->type) { + sched->date[1].raw = 0; + sched->date[0].raw = 0; + } + + break; + } + + case mEv_EVENT_BRIDGE_MAKE: { + if (Save_Get(bridge).pending != TRUE || Save_Get(bridge).exists || mEv_bridge_time_check() == lbRTC_OVER) { + sched->date[1].raw = 0; + sched->date[0].raw = 0; + } + + break; + } + + case mEv_EVENT_GHOST: { + if (Save_Get(event_save_common).ghost_event_type != mEv_EVENT_GHOST) { + sched->date[1].raw = 0; + sched->date[0].raw = 0; + } + + break; + } } - - case mEv_EVENT_DOZAEMON: - { - if (Save_Get(event_save_common).weekly_event.flags == mEv_EVENT_SONCHO_BRIDGE_MAKE || type != sched->type) { - sched->date[1].raw = 0; - sched->date[0].raw = 0; - } - - break; - } - - case mEv_EVENT_SONCHO_BRIDGE_MAKE: - case mEv_EVENT_MASK_NPC: - { - if (Save_Get(event_save_common).weekly_event.flags != sched->type) { - sched->date[1].raw = 0; - sched->date[0].raw = 0; - } - - break; - } - - case mEv_EVENT_BRIDGE_MAKE: - { - if (Save_Get(bridge).pending != TRUE || Save_Get(bridge).exists || mEv_bridge_time_check() == lbRTC_OVER) { - sched->date[1].raw = 0; - sched->date[0].raw = 0; - } - - break; - } - - case mEv_EVENT_GHOST: - { - if (Save_Get(event_save_common).ghost_event_type != mEv_EVENT_GHOST) { - sched->date[1].raw = 0; - sched->date[0].raw = 0; - } - - break; - } - } } // forward declarations @@ -1573,20 +1475,20 @@ static int clear_active(int type); static int set_active(int type); static void update_active(Event_c* event) { - mEv_place_data_c* place_data; + mEv_place_data_c* place_data; mEv_event_today_c* today_event; int hour = Common_Get(time.rtc_time.hour); int i; /* Update active events */ for (i = 0; i < mEv_TODAY_EVENT_NUM; i++) { - today_event = &event_today[i]; + today_event = &event_today[i]; if (today_event->type != -1 && index_today[today_event->type] != 0xFF) { if (mEv_check_status(today_event->type, mEv_STATUS_ERROR) != FALSE) { continue; } - + if (today_event->type == mEv_EVENT_SPORTS_FAIR && Common_Get(event_common).fieldday_event_over_status != today_event->type) { if (clear_active(today_event->type)) { @@ -1602,19 +1504,15 @@ static void update_active(Event_c* event) { } today_event->active_hours &= ~mEv_EVENT_HOUR_START_EVENT; - } - else if ( - today_event->type >= mEv_EVENT_ARTIST && today_event->type <= mEv_EVENT_CARPET_PEDDLER && - today_event->type == Save_Get(event_save_common).delete_event_id - ) { + } else if (today_event->type >= mEv_EVENT_ARTIST && today_event->type <= mEv_EVENT_CARPET_PEDDLER && + today_event->type == Save_Get(event_save_common).delete_event_id) { if (clear_active(today_event->type)) { event->changed_num++; } Save_Get(event_save_common).delete_event_id = 0; today_event->active_hours = mEv_EVENT_HOUR_CLEAR_EVENT; - } - else if ((today_event->active_hours & (1 << hour))) { + } else if ((today_event->active_hours & (1 << hour))) { if (Common_Get(event_common).fieldday_event_over_status != -1 && (today_event->type == mEv_EVENT_SPORTS_FAIR_BALL_TOSS || today_event->type == mEv_EVENT_SPORTS_FAIR_TUG_OF_WAR || @@ -1627,18 +1525,15 @@ static void update_active(Event_c* event) { } if (today_event->type != 0 && today_event->type == Common_Get(event_common).too_short) { today_event->active_hours |= mEv_EVENT_HOUR_TOO_SHORT_EVENT; - } - else if (set_active(today_event->type)) { + } else if (set_active(today_event->type)) { event->changed_num++; } - } - else { + } else { place_data = mEv_get_common_place(today_event->type, 81); if (today_event->type != 0 && today_event->type == Common_Get(event_common).too_short) { Common_Get(event_common).too_short = 0; - } - else if (place_data != NULL) { + } else if (place_data != NULL) { if (place_data->block.x != event->block_x || place_data->block.z != event->block_z) { if (clear_active(today_event->type)) { event->changed_num++; @@ -1649,7 +1544,7 @@ static void update_active(Event_c* event) { event->changed_num++; } } - } + } } if ((today_event->active_hours & mEv_EVENT_HOUR_CLEAR_EVENT) && @@ -1668,370 +1563,360 @@ static void update_active(Event_c* event) { } static u32 decode_date(u32 d) { - mEv_schedule_date_u date; - mEv_save_common_data_c* ev_common = Save_GetPointer(event_save_common); - lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); - int month; - int day; - int hour; + mEv_schedule_date_u date; + mEv_save_common_data_c* ev_common = Save_GetPointer(event_save_common); + lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); + int month; + int day; + int hour; - date.raw = d; + date.raw = d; - /* Process month */ - month = date.d.month; - if ((month & mEv_SCHEDULE_USE_SAVE_MONTH)) { - date.md = Save_Get(event_save_common).dates[month & 0xF]; - } - else if ((month & mEv_SCHEDULE_NOW_MONTH)) { - date.d.month = rtc_time->month; - } - else if ((month & mEv_SCHEDULE_HARVEST_MOON_DATE)) { - lbRTC_ymd_c harvest_moon_ymd; + /* Process month */ + month = date.d.month; + if ((month & mEv_SCHEDULE_USE_SAVE_MONTH)) { + date.md = Save_Get(event_save_common).dates[month & 0xF]; + } else if ((month & mEv_SCHEDULE_NOW_MONTH)) { + date.d.month = rtc_time->month; + } else if ((month & mEv_SCHEDULE_HARVEST_MOON_DATE)) { + lbRTC_ymd_c harvest_moon_ymd; - lbRk_HarvestMoonDay(&harvest_moon_ymd, rtc_time->year); - date.d.month = harvest_moon_ymd.month; - date.d.day = harvest_moon_ymd.day; - } - - /* Process day */ - day = date.d.day; - if ((day & mEv_SCHEDULE_WEEKLY)) { - date.d.day = m_weekday2day(date.d.month, day & ~mEv_SCHEDULE_DAY_AFTER); - - if ((day & mEv_SCHEDULE_DAY_AFTER)) { - date.md = after_n_day(date.md, 1); + lbRk_HarvestMoonDay(&harvest_moon_ymd, rtc_time->year); + date.d.month = harvest_moon_ymd.month; + date.d.day = harvest_moon_ymd.day; } - } - else if ((day & mEv_SCHEDULE_LAST_DAY_OF_MONTH)) { - date.d.day = last_day_of_month(date.d.month); - } - else if ((day & mEv_SCHEDULE_TOWN_DAY)) { - date.d.day = (date.d.day & ~mEv_SCHEDULE_TOWN_DAY) | Save_Get(town_day); - } - /* Process hour */ - hour = date.d.hour; - if ((hour & mEv_SCHEDULE_USE_SAVE_SLOT_VALUE)) { - date.d.hour = Save_Get(event_save_common).dates[(hour & 0x1F) % 8] | (hour & 0xC0); - } + /* Process day */ + day = date.d.day; + if ((day & mEv_SCHEDULE_WEEKLY)) { + date.d.day = m_weekday2day(date.d.month, day & ~mEv_SCHEDULE_DAY_AFTER); - return date.raw; + if ((day & mEv_SCHEDULE_DAY_AFTER)) { + date.md = after_n_day(date.md, 1); + } + } else if ((day & mEv_SCHEDULE_LAST_DAY_OF_MONTH)) { + date.d.day = last_day_of_month(date.d.month); + } else if ((day & mEv_SCHEDULE_TOWN_DAY)) { + date.d.day = (date.d.day & ~mEv_SCHEDULE_TOWN_DAY) | Save_Get(town_day); + } + + /* Process hour */ + hour = date.d.hour; + if ((hour & mEv_SCHEDULE_USE_SAVE_SLOT_VALUE)) { + date.d.hour = Save_Get(event_save_common).dates[(hour & 0x1F) % 8] | (hour & 0xC0); + } + + return date.raw; } static int set_one_time_active(int event) { - u8 idx = index_today[event]; + u8 idx = index_today[event]; - if (idx != 0xFF) { - mEv_event_today_c* ev_today = &event_today[idx]; - ev_today->active_hours |= mEv_EVENT_HOUR_START_EVENT; - return TRUE; - } + if (idx != 0xFF) { + mEv_event_today_c* ev_today = &event_today[idx]; + ev_today->active_hours |= mEv_EVENT_HOUR_START_EVENT; + return TRUE; + } - return FALSE; + return FALSE; } static int first_enter_check() { - switch (Common_Get(last_scene_no)) { - case SCENE_START_DEMO: - case SCENE_START_DEMO2: - case SCENE_PLAYERSELECT: - case SCENE_PLAYERSELECT_2: - case SCENE_PLAYERSELECT_3: - case SCENE_PLAYERSELECT_SAVE: - case SCENE_START_DEMO3: - return TRUE; + switch (Common_Get(last_scene_no)) { + case SCENE_START_DEMO: + case SCENE_START_DEMO2: + case SCENE_PLAYERSELECT: + case SCENE_PLAYERSELECT_2: + case SCENE_PLAYERSELECT_3: + case SCENE_PLAYERSELECT_SAVE: + case SCENE_START_DEMO3: + return TRUE; - default: - return FALSE; - } + default: + return FALSE; + } } static int effective_scene() { - switch (Save_Get(scene_no)) { - case SCENE_START_DEMO: - case SCENE_START_DEMO2: - case SCENE_PLAYERSELECT: - case SCENE_PLAYERSELECT_2: - case SCENE_PLAYERSELECT_3: - case SCENE_PLAYERSELECT_SAVE: - case SCENE_START_DEMO3: - return FALSE; + switch (Save_Get(scene_no)) { + case SCENE_START_DEMO: + case SCENE_START_DEMO2: + case SCENE_PLAYERSELECT: + case SCENE_PLAYERSELECT_2: + case SCENE_PLAYERSELECT_3: + case SCENE_PLAYERSELECT_SAVE: + case SCENE_START_DEMO3: + return FALSE; - default: - return TRUE; - } + default: + return TRUE; + } } static void update_schedule_today(Event_c* event) { - int month; - u8 equinox_day = 0; - mEv_schedule_date_u today_date; - mEv_MonthDay_u birthday_date; - mEv_schedule_c sched; - lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); - mEv_schedule_c* sched_p = &sched; - Private_c* priv = &Save_Get(private[Common_Get(player_no)]); - int i; - int type; + int month; + u8 equinox_day = 0; + mEv_schedule_date_u today_date; + mEv_MonthDay_u birthday_date; + mEv_schedule_c sched; + lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); + mEv_schedule_c* sched_p = &sched; + Private_c* priv = &Save_Get(private_data[Common_Get(player_no)]); + int i; + int type; - if (mEv_ArbeitPlayer_kari(Common_Get(player_no)) == FALSE) { - month = rtc_time->month; + if (mEv_ArbeitPlayer_kari(Common_Get(player_no)) == FALSE) { + month = rtc_time->month; - today_date.d.month = month; - today_date.d.day = rtc_time->day; - today_date.d.hour = rtc_time->hour; - today_date.d._2 = 0; - Save_Get(event_save_common).dates[mEv_SAVE_DATE_TODAY] = today_date.md; + today_date.d.month = month; + today_date.d.day = rtc_time->day; + today_date.d.hour = rtc_time->hour; + today_date.d._2 = 0; + Save_Get(event_save_common).dates[mEv_SAVE_DATE_TODAY] = today_date.md; - birthday_date.month = priv->birthday.month; - birthday_date.day = priv->birthday.day; - Save_Get(event_save_common).dates[mEv_SAVE_DATE_BIRTHDAY] = birthday_date.raw; + birthday_date.month = priv->birthday.month; + birthday_date.day = priv->birthday.day; + Save_Get(event_save_common).dates[mEv_SAVE_DATE_BIRTHDAY] = birthday_date.raw; - Save_Get(event_save_common).soncho_event_type = 0xFF; + Save_Get(event_save_common).soncho_event_type = 0xFF; - /* Process every event */ - for (i = 0; i < ARRAY_COUNT(event_schedule_data); i++) { - memcpy(sched_p, &event_schedule_data[i], sizeof(mEv_schedule_c)); - - /* Perform necessary adjustments */ - update_soncho_event(sched_p); - update_sports_fair(sched_p, &equinox_day); - update_event_rumor(sched_p); - update_special_event(sched_p); - update_weekly_event(sched_p); + /* Process every event */ + for (i = 0; i < ARRAY_COUNT(event_schedule_data); i++) { + memcpy(sched_p, &event_schedule_data[i], sizeof(mEv_schedule_c)); - if (sched.type == mEv_EVENT_SUMMER_CAMPER) { - mEv_MonthDay_u camper_date; + /* Perform necessary adjustments */ + update_soncho_event(sched_p); + update_sports_fair(sched_p, &equinox_day); + update_event_rumor(sched_p); + update_special_event(sched_p); + update_weekly_event(sched_p); - switch (month) { - case lbRTC_JUNE: - case lbRTC_JULY: - case lbRTC_AUGUST: - sched.date[0].d.month = today_date.d.month; - break; + if (sched.type == mEv_EVENT_SUMMER_CAMPER) { + mEv_MonthDay_u camper_date; + + switch (month) { + case lbRTC_JUNE: + case lbRTC_JULY: + case lbRTC_AUGUST: + sched.date[0].d.month = today_date.d.month; + break; + } + + sched.date[0].raw = decode_date(sched.date[0].raw); + camper_date.month = sched.date[0].d.month; + camper_date.day = sched.date[0].d.day; + + /* Move back to the previous week if processing on Sunday */ + if (rtc_time->weekday == lbRTC_SUNDAY) { + camper_date.raw = after_n_day(camper_date.raw, -lbRTC_WEEK); + sched.date[0].d.month = camper_date.month; + sched.date[0].d.day = camper_date.day; + } + + /* Summer campers only stick around for one day */ + camper_date.raw = after_n_day(camper_date.raw, 1); + sched.date[1].d.month = camper_date.month; + sched.date[1].d.day = camper_date.day; + } else { + sched.date[0].raw = decode_date(sched.date[0].raw); + sched.date[1].raw = decode_date(sched.date[1].raw); + } + + /* Check & add event if it is currently active */ + if (check_date_range(today_date.md, sched.date[0].md, sched.date[1].md)) { + update_soncho_event2(sched_p); + add_event_today(today_date.md, sched_p); + } } - sched.date[0].raw = decode_date(sched.date[0].raw); - camper_date.month = sched.date[0].d.month; - camper_date.day = sched.date[0].d.day; - - /* Move back to the previous week if processing on Sunday */ - if (rtc_time->weekday == lbRTC_SUNDAY) { - camper_date.raw = after_n_day(camper_date.raw, -lbRTC_WEEK); - sched.date[0].d.month = camper_date.month; - sched.date[0].d.day = camper_date.day; + type = 0; + switch (Common_Get(last_scene_no)) { + case SCENE_KAMAKURA: + type = mEv_EVENT_KAMAKURA; + break; + case SCENE_BROKER_SHOP: + type = mEv_EVENT_BROKER_SALE; + break; + case SCENE_BUGGY: + type = mEv_EVENT_GYPSY; + break; + case SCENE_SHOP0: + case SCENE_CONVENI: + case SCENE_SUPER: + case SCENE_DEPART: + case SCENE_DEPART_2: + if (mEv_CheckEvent(mEv_SPNPC_EVENT)) { + type = mEv_EVENT_SHOP_SALE; + } + break; + case SCENE_TENT: + type = mEv_EVENT_SUMMER_CAMPER; + break; } - /* Summer campers only stick around for one day */ - camper_date.raw = after_n_day(camper_date.raw, 1); - sched.date[1].d.month = camper_date.month; - sched.date[1].d.day = camper_date.day; - } - else { - sched.date[0].raw = decode_date(sched.date[0].raw); - sched.date[1].raw = decode_date(sched.date[1].raw); - } + if (type != 0 && gamePT->frame_counter == 0) { + mEv_schedule_c new_ev_sched = { { + { 100, 0, 0, 23 }, + { 100, 0, 0, 0 }, + }, + 0, + 0 }; - /* Check & add event if it is currently active */ - if (check_date_range(today_date.md, sched.date[0].md, sched.date[1].md)) { - update_soncho_event2(sched_p); - add_event_today(today_date.md, sched_p); - } - } - - type = 0; - switch (Common_Get(last_scene_no)) { - case SCENE_KAMAKURA: - type = mEv_EVENT_KAMAKURA; - break; - case SCENE_BROKER_SHOP: - type = mEv_EVENT_BROKER_SALE; - break; - case SCENE_BUGGY: - type = mEv_EVENT_GYPSY; - break; - case SCENE_SHOP0: - case SCENE_CONVENI: - case SCENE_SUPER: - case SCENE_DEPART: - case SCENE_DEPART_2: - if (mEv_CheckEvent(mEv_SPNPC_EVENT)) { - type = mEv_EVENT_SHOP_SALE; + new_ev_sched.type = type; + new_ev_sched.date[1].d.month = rtc_time->month; + new_ev_sched.date[0].d.month = rtc_time->month; + new_ev_sched.date[1].d.day = rtc_time->day; + new_ev_sched.date[0].d.day = rtc_time->day; + add_event_today(today_date.md, &new_ev_sched); + set_one_time_active(type); } - break; - case SCENE_TENT: - type = mEv_EVENT_SUMMER_CAMPER; - break; - } - if (type != 0 && gamePT->frame_counter == 0) { - mEv_schedule_c new_ev_sched = { - { - { 100, 0, 0, 23 }, - { 100, 0, 0, 0 }, - }, - 0, - 0 - }; - - new_ev_sched.type = type; - new_ev_sched.date[1].d.month = rtc_time->month; - new_ev_sched.date[0].d.month = rtc_time->month; - new_ev_sched.date[1].d.day = rtc_time->day; - new_ev_sched.date[0].d.day = rtc_time->day; - add_event_today(today_date.md, &new_ev_sched); - set_one_time_active(type); - } - - type = 0; - switch (Save_Get(scene_no)) { - case SCENE_KAMAKURA: - type = mEv_EVENT_KAMAKURA; - break; - case SCENE_BROKER_SHOP: - type = mEv_EVENT_BROKER_SALE; - break; - case SCENE_BUGGY: - type = mEv_EVENT_GYPSY; - break; - case SCENE_SHOP0: - case SCENE_CONVENI: - case SCENE_SUPER: - case SCENE_DEPART: - case SCENE_DEPART_2: - if (mEv_CheckEvent(mEv_SPNPC_EVENT)) { - type = mEv_EVENT_SHOP_SALE; + type = 0; + switch (Save_Get(scene_no)) { + case SCENE_KAMAKURA: + type = mEv_EVENT_KAMAKURA; + break; + case SCENE_BROKER_SHOP: + type = mEv_EVENT_BROKER_SALE; + break; + case SCENE_BUGGY: + type = mEv_EVENT_GYPSY; + break; + case SCENE_SHOP0: + case SCENE_CONVENI: + case SCENE_SUPER: + case SCENE_DEPART: + case SCENE_DEPART_2: + if (mEv_CheckEvent(mEv_SPNPC_EVENT)) { + type = mEv_EVENT_SHOP_SALE; + } + break; + case SCENE_TENT: + type = mEv_EVENT_SUMMER_CAMPER; + break; } - break; - case SCENE_TENT: - type = mEv_EVENT_SUMMER_CAMPER; - break; - } - if (type != 0) { - mEv_schedule_c new_ev_sched = { - { - { 100, 0, 0, 23 }, - { 100, 0, 0, 0 }, - }, - 0, - 0 - }; + if (type != 0) { + mEv_schedule_c new_ev_sched = { { + { 100, 0, 0, 23 }, + { 100, 0, 0, 0 }, + }, + 0, + 0 }; - new_ev_sched.type = type; - new_ev_sched.date[1].d.month = rtc_time->month; - new_ev_sched.date[0].d.month = rtc_time->month; - new_ev_sched.date[1].d.day = rtc_time->day; - new_ev_sched.date[0].d.day = rtc_time->day; - add_event_today(today_date.md, &new_ev_sched); - } + new_ev_sched.type = type; + new_ev_sched.date[1].d.month = rtc_time->month; + new_ev_sched.date[0].d.month = rtc_time->month; + new_ev_sched.date[1].d.day = rtc_time->day; + new_ev_sched.date[0].d.day = rtc_time->day; + add_event_today(today_date.md, &new_ev_sched); + } - if (first_enter_check()) { - for (i = 0; i < mEv_EVENT_NUM; i++) { - delete_too_short_event(event, i, today_date.raw); - } - } + if (first_enter_check()) { + for (i = 0; i < mEv_EVENT_NUM; i++) { + delete_too_short_event(event, i, today_date.raw); + } + } - for (i = 0; i < mEv_EVENT_NUM; i++) { - check_and_clear_event_today(event, i); + for (i = 0; i < mEv_EVENT_NUM; i++) { + check_and_clear_event_today(event, i); + } } - } } static void calc_start_block(int* bx, int* bz) { - if (Common_Get(door_data).next_scene_id == 0) { - *bx = 3; - *bz = 2; + if (Common_Get(door_data).next_scene_id == 0) { + *bx = 3; + *bz = 2; - if (Common_Get(clip).demo_clip != NULL && Common_Get(clip).demo_clip->type == mDemo_CLIP_TYPE_RIDE_OFF_DEMO) { - *bz = 1; + if (Common_Get(clip).demo_clip != NULL && Common_Get(clip).demo_clip->type == mDemo_CLIP_TYPE_RIDE_OFF_DEMO) { + *bz = 1; + } + } else if (Common_Get(door_data).next_scene_id == SCENE_RANDOM_NPC_TEST) { + *bx = Common_Get(door_data).exit_position.x / mFI_BK_WORLDSIZE_X; + *bz = Common_Get(door_data).exit_position.z / mFI_BK_WORLDSIZE_Z; } - } - else if (Common_Get(door_data).next_scene_id == SCENE_RANDOM_NPC_TEST) { - *bx = Common_Get(door_data).exit_position.x / mFI_BK_WORLDSIZE_X; - *bz = Common_Get(door_data).exit_position.z / mFI_BK_WORLDSIZE_Z; - } } static void init_event(Event_c* event, int renewal_flag) { - event->month = 99; - event->day = 99; - event->hour = 99; - event->state = 0; - event->_02 = 0; - event->changed_num = 0; - event->block_z = 0; - event->block_x = 0; + event->month = 99; + event->day = 99; + event->hour = 99; + event->state = 0; + event->_02 = 0; + event->changed_num = 0; + event->block_z = 0; + event->block_x = 0; - calc_start_block(&event->block_x, &event->block_z); - funeral = FALSE; - dead = FALSE; - init_today_event(); + calc_start_block(&event->block_x, &event->block_z); + funeral = FALSE; + dead = FALSE; + init_today_event(); - if (renewal_flag != mEv_INIT_NO_RENEWAL) { - mEv_RenewalDataEveryDay(); - init_weekday1st(); - - if (init_special_event(FALSE)) { - Save_Get(event_save_common).special_event.flags = 1; + if (renewal_flag != mEv_INIT_NO_RENEWAL) { + mEv_RenewalDataEveryDay(); + init_weekday1st(); + + if (init_special_event(FALSE)) { + Save_Get(event_save_common).special_event.flags = 1; + } + + init_weekly_event(); + + if (mEv_LivePlayer(Common_Get(player_no)) && mEv_LiveSonchoPresent() == FALSE) { + update_schedule_today(event); + event->month = Common_Get(time.rtc_time.month); + event->day = Common_Get(time.rtc_time.day); + event->hour = Common_Get(time.rtc_time.hour); + update_active(event); + update_save_area(); + } } - - init_weekly_event(); - - if (mEv_LivePlayer(Common_Get(player_no)) && mEv_LiveSonchoPresent() == FALSE) { - update_schedule_today(event); - event->month = Common_Get(time.rtc_time.month); - event->day = Common_Get(time.rtc_time.day); - event->hour = Common_Get(time.rtc_time.hour); - update_active(event); - update_save_area(); - } - } } extern void mEv_init(Event_c* event) { - int renewal_flag = mEv_INIT_NO_RENEWAL; + int renewal_flag = mEv_INIT_NO_RENEWAL; - if (mEv_CheckTitleDemo() == 0 && effective_scene()) { - renewal_flag = mEv_INIT_RENEWAL; - } + if (mEv_CheckTitleDemo() == 0 && effective_scene()) { + renewal_flag = mEv_INIT_RENEWAL; + } - init_event(event, renewal_flag); + init_event(event, renewal_flag); } extern void mEv_init_force(Event_c* event) { - int renewal_flag = mEv_INIT_NO_RENEWAL; + int renewal_flag = mEv_INIT_NO_RENEWAL; - if (mEv_CheckTitleDemo() == 0) { - renewal_flag = mEv_INIT_FORCE_RENEWAL; - } + if (mEv_CheckTitleDemo() == 0) { + renewal_flag = mEv_INIT_FORCE_RENEWAL; + } - init_event(event, renewal_flag); + init_event(event, renewal_flag); } extern void mEv_2nd_init(Event_c* event) { - /* Disable morning aerobics if it is scheduled and the weather is rain */ - if (Common_Get(weather) == mEnv_WEATHER_RAIN) { - u8 index = index_today[mEv_EVENT_MORNING_AEROBICS]; + /* Disable morning aerobics if it is scheduled and the weather is rain */ + if (Common_Get(weather) == mEnv_WEATHER_RAIN) { + u8 index = index_today[mEv_EVENT_MORNING_AEROBICS]; - if (index != 0xFF) { - mEv_event_today_c* ev_today = &event_today[index]; - - mEv_clear_status(mEv_EVENT_MORNING_AEROBICS, mEv_STATUS_ACTIVE); - ev_today->type = -1; - index_today[mEv_EVENT_MORNING_AEROBICS] = 0xFF; + if (index != 0xFF) { + mEv_event_today_c* ev_today = &event_today[index]; + + mEv_clear_status(mEv_EVENT_MORNING_AEROBICS, mEv_STATUS_ACTIVE); + ev_today->type = -1; + index_today[mEv_EVENT_MORNING_AEROBICS] = 0xFF; + } } - } } extern int mEv_PlayerOK() { - int res = FALSE; + int res = FALSE; - if (mPlib_able_player_warp_forEvent() && mPlib_Get_unable_wade() == FALSE) { - res = TRUE; - } + if (mPlib_able_player_warp_forEvent() && mPlib_Get_unable_wade() == FALSE) { + res = TRUE; + } - return res; + return res; } extern void mEv_run(Event_c* event) { @@ -2091,301 +1976,297 @@ extern void mEv_run(Event_c* event) { } } -static mActor_name_t l_ev_structure_table[] = { - BROKER_TENT, - FORTUNE_TENT, - DESIGNER_CAR, - KAMAKURA, - SAKURA_TABLE0, - AEROBICS_RADIO, - FIREWORKS_STALL0, - FIREWORKS_STALL1, - NEWYEAR_SHRINE0, - NEWYEAR_SHRINE1, - NEWYEAR_TABLE, - NEWYEAR_COUNTDOWN0, - NEWYEAR_COUNTDOWN1, - SPORTSFAIR_BALLS_RED, - SPORTSFAIR_BALLS_WHITE, - SPORTSFAIR_BASKET_RED, - SPORTSFAIR_BASKET_WHITE, - FISHCHECK_STAND0, - FISHCHECK_STAND1, - GHOG, - TENT, - SAKURA_TABLE1 -}; +static mActor_name_t l_ev_structure_table[] = { BROKER_TENT, + FORTUNE_TENT, + DESIGNER_CAR, + KAMAKURA, + SAKURA_TABLE0, + AEROBICS_RADIO, + FIREWORKS_STALL0, + FIREWORKS_STALL1, + NEWYEAR_SHRINE0, + NEWYEAR_SHRINE1, + NEWYEAR_TABLE, + NEWYEAR_COUNTDOWN0, + NEWYEAR_COUNTDOWN1, + SPORTSFAIR_BALLS_RED, + SPORTSFAIR_BALLS_WHITE, + SPORTSFAIR_BASKET_RED, + SPORTSFAIR_BASKET_WHITE, + FISHCHECK_STAND0, + FISHCHECK_STAND1, + GHOG, + TENT, + SAKURA_TABLE1 }; static int num_of_l_ev_structure = ARRAY_COUNT(l_ev_structure_table); extern void mEv_finish(Event_c* event) { - int ut_x; - int ut_z; - int bx; - int bz; - int i; - int bx_max = mFI_GetBlockXMax() - 1; - int bz_max = mFI_GetBlockZMax() - 1; + int ut_x; + int ut_z; + int bx; + int bz; + int i; + int bx_max = mFI_GetBlockXMax() - 1; + int bz_max = mFI_GetBlockZMax() - 1; - if (mFI_GET_TYPE(mFI_GetFieldId()) == mFI_FIELD_FG) { + if (mFI_GET_TYPE(mFI_GetFieldId()) == mFI_FIELD_FG) { - for (i = 0; i < num_of_l_ev_structure; i++) { - for (bx = 1; bx < bx_max; bx++) { - for (bz = 1; bz < bz_max; bz++) { - int ut; - mActor_name_t structure = l_ev_structure_table[i]; - - for (ut = 0; mFI_SearchFGInBlock(&ut_x, &ut_z, structure, bx, bz); ut) { - mFI_SetFGStructure_common(structure, bx, bz, ut_x, ut_z, mFI_SET_STRUCTURE_REMOVE); - ut++; - if (ut > UT_TOTAL_NUM) { - break; + for (i = 0; i < num_of_l_ev_structure; i++) { + for (bx = 1; bx < bx_max; bx++) { + for (bz = 1; bz < bz_max; bz++) { + int ut; + mActor_name_t structure = l_ev_structure_table[i]; + + for (ut = 0; mFI_SearchFGInBlock(&ut_x, &ut_z, structure, bx, bz); ut) { + mFI_SetFGStructure_common(structure, bx, bz, ut_x, ut_z, mFI_SET_STRUCTURE_REMOVE); + ut++; + if (ut > UT_TOTAL_NUM) { + break; + } + } + } } - } } - } } - } } extern int mEv_check_schedule(int event) { - int hour = Common_Get(time.rtc_time.hour); - u8 index = index_today[event]; - mEv_event_today_c* ev_today = &event_today[index]; + int hour = Common_Get(time.rtc_time.hour); + u8 index = index_today[event]; + mEv_event_today_c* ev_today = &event_today[index]; + + if (index == 0xFF) { + return FALSE; + } + + if ((ev_today->status & mEv_STATUS_STOP)) { + return FALSE; + } + + if ((ev_today->active_hours & mEv_EVENT_HOUR_TOO_SHORT_EVENT)) { + return FALSE; + } + + if ((ev_today->active_hours & (1 << hour)) != 0) { + return TRUE; + } - if (index == 0xFF) { return FALSE; - } - - if ((ev_today->status & mEv_STATUS_STOP)) { - return FALSE; - } - - if ((ev_today->active_hours & mEv_EVENT_HOUR_TOO_SHORT_EVENT)) { - return FALSE; - } - - if ((ev_today->active_hours & (1 << hour)) != 0) { - return TRUE; - } - - return FALSE; } extern int mEv_check_run_today(int event) { - u8 index = index_today[event]; - mEv_event_today_c* ev_today = &event_today[index]; + u8 index = index_today[event]; + mEv_event_today_c* ev_today = &event_today[index]; + + if (index == 0xFF) { + return FALSE; + } + + if ((ev_today->status & mEv_STATUS_STOP)) { + return FALSE; + } + + if (ev_today->active_hours != 0) { + return TRUE; + } - if (index == 0xFF) { return FALSE; - } - - if ((ev_today->status & mEv_STATUS_STOP)) { - return FALSE; - } - - if (ev_today->active_hours != 0) { - return TRUE; - } - - return FALSE; } extern void mEv_set_status(int event, s16 status) { - u8 index = index_today[event]; - mEv_event_today_c* ev_today = &event_today[index]; + u8 index = index_today[event]; + mEv_event_today_c* ev_today = &event_today[index]; - if (index != 0xFF) { - if (status == mEv_STATUS_ERROR) { - ev_today->status = 0; + if (index != 0xFF) { + if (status == mEv_STATUS_ERROR) { + ev_today->status = 0; + } + + status_edge |= status; + ev_today->status |= status; } - - status_edge |= status; - ev_today->status |= status; - } } static int set_active(int event) { - u8 index = index_today[event]; - mEv_event_today_c* ev_today = &event_today[index]; - int res = FALSE; + u8 index = index_today[event]; + mEv_event_today_c* ev_today = &event_today[index]; + int res = FALSE; - if (index != 0xFF) { - if ((ev_today->status & mEv_STATUS_ACTIVE) == 0) { - res = TRUE; // status updated + if (index != 0xFF) { + if ((ev_today->status & mEv_STATUS_ACTIVE) == 0) { + res = TRUE; // status updated + } + + status_edge |= mEv_STATUS_ACTIVE; + ev_today->status |= mEv_STATUS_ACTIVE; } - status_edge |= mEv_STATUS_ACTIVE; - ev_today->status |= mEv_STATUS_ACTIVE; - } - - return res; + return res; } extern void mEv_clear_status(int event, s16 status) { - u8 index = index_today[event]; - mEv_event_today_c* ev_today = &event_today[index]; + u8 index = index_today[event]; + mEv_event_today_c* ev_today = &event_today[index]; - if (index != 0xFF) { - ev_today->status &= ~status; - } + if (index != 0xFF) { + ev_today->status &= ~status; + } } static int clear_active(int event) { - u8 index = index_today[event]; - mEv_event_today_c* ev_today = &event_today[index]; - int res = FALSE; + u8 index = index_today[event]; + mEv_event_today_c* ev_today = &event_today[index]; + int res = FALSE; - if (index != 0xFF) { - if ((ev_today->status & mEv_STATUS_ACTIVE) != 0) { - res = TRUE; // status updated + if (index != 0xFF) { + if ((ev_today->status & mEv_STATUS_ACTIVE) != 0) { + res = TRUE; // status updated + } + + ev_today->status &= ~mEv_STATUS_ACTIVE; } - ev_today->status &= ~mEv_STATUS_ACTIVE; - } - - return res; + return res; } extern int mEv_check_status(int event, s16 status) { - u8 index = index_today[event]; - mEv_event_today_c* ev_today = &event_today[index]; + u8 index = index_today[event]; + mEv_event_today_c* ev_today = &event_today[index]; - if (index == 0xFF) { - return FALSE; - } + if (index == 0xFF) { + return FALSE; + } - /* Default to 'false' if the event is in an error state */ - if (status != mEv_STATUS_ERROR && (ev_today->status & mEv_STATUS_ERROR)) { - return FALSE; - } + /* Default to 'false' if the event is in an error state */ + if (status != mEv_STATUS_ERROR && (ev_today->status & mEv_STATUS_ERROR)) { + return FALSE; + } - return (ev_today->status & status) != 0; + return (ev_today->status & status) != 0; } extern int mEv_check_status_edge(s16 status) { - /* @BUG - developers almost certainly meant to use & here instead of | */ - #ifndef BUGFIXES - if ((status_edge | status) != 0) { - #else - if ((status_edge & status) != 0) { - #endif - return TRUE; - } +/* @BUG - developers almost certainly meant to use & here instead of | */ +#ifndef BUGFIXES + if ((status_edge | status) != 0) { +#else + if ((status_edge & status) != 0) { +#endif + return TRUE; + } - return FALSE; + return FALSE; } extern void mEv_set_keep(int event) { - int flags = Common_Get(event_keep_flags[event >> 5]); - flags |= (1 << (event & 0x1F)); - Common_Set(event_keep_flags[event >> 5], flags); + int flags = Common_Get(event_keep_flags[event >> 5]); + flags |= (1 << (event & 0x1F)); + Common_Set(event_keep_flags[event >> 5], flags); } extern void mEv_clear_keep(int event) { - int flags = Common_Get(event_keep_flags[event >> 5]); - flags &= ~(1 << (event & 0x1F)); - Common_Set(event_keep_flags[event >> 5], flags); + int flags = Common_Get(event_keep_flags[event >> 5]); + flags &= ~(1 << (event & 0x1F)); + Common_Set(event_keep_flags[event >> 5], flags); } extern int mEv_check_keep(int event) { - if ((Common_Get(event_keep_flags[event >> 5]) & (1 << (event & 0x1F)))) { - return TRUE; - } + if ((Common_Get(event_keep_flags[event >> 5]) & (1 << (event & 0x1F)))) { + return TRUE; + } - return FALSE; + return FALSE; } extern u8* mEv_reserve_save_area(int type, u8 id) { - lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); - int index = index_today[type]; - mEv_event_today_c* ev_today = &event_today[index]; - mEv_save_common_data_c* ev_save_common = Save_GetPointer(event_save_common); - int i; - int free_slot_idx = -1; - u8* data; - u8* ret; - int exist_slot = -1; + lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); + int index = index_today[type]; + mEv_event_today_c* ev_today = &event_today[index]; + mEv_save_common_data_c* ev_save_common = Save_GetPointer(event_save_common); + int i; + int free_slot_idx = -1; + u8* data; + u8* ret; + int exist_slot = -1; - for (i = 0; i < mEv_AREA_NUM; i++) { - if (((1 << i) & ev_save_common->area_use_bitfield) == 0) { - free_slot_idx = i; - continue; - } - else if (id != mEv_EVENT_NUM && ev_save_common->area[i].info.id == mEv_EVENT_NUM) { - exist_slot = i; - } - - if (type == ev_save_common->area[i].info.type && id == ev_save_common->area[i].info.id) { - free_slot_idx = i; - break; - } - } + for (i = 0; i < mEv_AREA_NUM; i++) { + if (((1 << i) & ev_save_common->area_use_bitfield) == 0) { + free_slot_idx = i; + continue; + } else if (id != mEv_EVENT_NUM && ev_save_common->area[i].info.id == mEv_EVENT_NUM) { + exist_slot = i; + } - if (free_slot_idx == -1 && exist_slot != -1) { - free_slot_idx = exist_slot; - } - - if (free_slot_idx != -1) { - mEv_area_c* const area = &ev_save_common->area[free_slot_idx]; - mEv_info_c* const info = &area->info; - ev_save_common->area_use_bitfield |= (1 << free_slot_idx); - ev_save_common->area[free_slot_idx].info.type = type; - ev_save_common->area[free_slot_idx].info.id = id; - - // issue seems to stem from ev_today->begin_date.month being used twice which promotes it to r11? - if ((u16)ev_today->begin_date.month > (u32)ev_today->end_date.month && (u16)ev_today->begin_date.month > (u32)rtc_time->month) { - ev_save_common->area[free_slot_idx].info.year = rtc_time->year - 1; - } - else { - ev_save_common->area[free_slot_idx].info.year = rtc_time->year; + if (type == ev_save_common->area[i].info.type && id == ev_save_common->area[i].info.id) { + free_slot_idx = i; + break; + } } - data = (u8*)ev_save_common->area[free_slot_idx].data; - ev_save_common->area[free_slot_idx].info.year = rtc_time->year; // ???? - ev_save_common->area[free_slot_idx].info.start_date.month = ev_today->begin_date.month; - ev_save_common->area[free_slot_idx].info.start_date.day = ev_today->begin_date.day; - ev_save_common->area[free_slot_idx].info.end_date.month = ev_today->end_date.month; - ev_save_common->area[free_slot_idx].info.end_date.day = ev_today->end_date.day; - memset(data, 0, sizeof(ev_save_common->area[free_slot_idx].data)); - ret = data; - } - else { - ret = NULL; - } + if (free_slot_idx == -1 && exist_slot != -1) { + free_slot_idx = exist_slot; + } - return ret; + if (free_slot_idx != -1) { + mEv_area_c* const area = &ev_save_common->area[free_slot_idx]; + mEv_info_c* const info = &area->info; + ev_save_common->area_use_bitfield |= (1 << free_slot_idx); + ev_save_common->area[free_slot_idx].info.type = type; + ev_save_common->area[free_slot_idx].info.id = id; + + // issue seems to stem from ev_today->begin_date.month being used twice which promotes it to r11? + if ((u16)ev_today->begin_date.month > (u32)ev_today->end_date.month && + (u16)ev_today->begin_date.month > (u32)rtc_time->month) { + ev_save_common->area[free_slot_idx].info.year = rtc_time->year - 1; + } else { + ev_save_common->area[free_slot_idx].info.year = rtc_time->year; + } + + data = (u8*)ev_save_common->area[free_slot_idx].data; + ev_save_common->area[free_slot_idx].info.year = rtc_time->year; // ???? + ev_save_common->area[free_slot_idx].info.start_date.month = ev_today->begin_date.month; + ev_save_common->area[free_slot_idx].info.start_date.day = ev_today->begin_date.day; + ev_save_common->area[free_slot_idx].info.end_date.month = ev_today->end_date.month; + ev_save_common->area[free_slot_idx].info.end_date.day = ev_today->end_date.day; + memset(data, 0, sizeof(ev_save_common->area[free_slot_idx].data)); + ret = data; + } else { + ret = NULL; + } + + return ret; } extern u8* mEv_get_save_area(int type, u8 id) { - mEv_save_common_data_c* ev_save_common = Save_GetPointer(event_save_common); - int i; + mEv_save_common_data_c* ev_save_common = Save_GetPointer(event_save_common); + int i; - for (i = 0; i < mEv_AREA_NUM; i++) { - if (((1 << i) & ev_save_common->area_use_bitfield) != 0) { - if (type == ev_save_common->area[i].info.type && id == ev_save_common->area[i].info.id) { - return (u8*)ev_save_common->area[i].data; - } + for (i = 0; i < mEv_AREA_NUM; i++) { + if (((1 << i) & ev_save_common->area_use_bitfield) != 0) { + if (type == ev_save_common->area[i].info.type && id == ev_save_common->area[i].info.id) { + return (u8*)ev_save_common->area[i].data; + } + } } - } - return NULL; + return NULL; } extern int mEv_clear_save_area(int type, u8 id) { - mEv_save_common_data_c* ev_save_common = Save_GetPointer(event_save_common); - int i; + mEv_save_common_data_c* ev_save_common = Save_GetPointer(event_save_common); + int i; - for (i = 0; i < mEv_AREA_NUM; i++) { - if (((1 << i) & ev_save_common->area_use_bitfield) != 0) { - if (type == ev_save_common->area[i].info.type && id == ev_save_common->area[i].info.id) { - ev_save_common->area_use_bitfield &= ~(1 << i); - return sizeof(ev_save_common->area[i].data); - } + for (i = 0; i < mEv_AREA_NUM; i++) { + if (((1 << i) & ev_save_common->area_use_bitfield) != 0) { + if (type == ev_save_common->area[i].info.type && id == ev_save_common->area[i].info.id) { + ev_save_common->area_use_bitfield &= ~(1 << i); + return sizeof(ev_save_common->area[i].data); + } + } } - } - return 0; + return 0; } static int update_save_area() { @@ -2428,413 +2309,369 @@ static int update_save_area() { } extern u8* mEv_reserve_common_area(int type, u8 id) { - mEv_common_data_c* ev_common = Common_GetPointer(event_common); - int i; - int exist_slot = -1; - u8* data; - u8* res; + mEv_common_data_c* ev_common = Common_GetPointer(event_common); + int i; + int exist_slot = -1; + u8* data; + u8* res; - for (i = 0; i < mEv_AREA_NUM; i++) { - if (((1 << i) & ev_common->area_use_bitfield) == 0) { - exist_slot = i; + for (i = 0; i < mEv_AREA_NUM; i++) { + if (((1 << i) & ev_common->area_use_bitfield) == 0) { + exist_slot = i; + } else if (type == ev_common->area[i].info.type && id == ev_common->area[i].info.id) { + exist_slot = i; + break; + } } - else if (type == ev_common->area[i].info.type && id == ev_common->area[i].info.id) { - exist_slot = i; - break; + + if (exist_slot != -1) { + ev_common->area_use_bitfield |= (1 << exist_slot); + data = (u8*)ev_common->area[exist_slot].data; + ev_common->area[exist_slot].info.type = type; + ev_common->area[exist_slot].info.id = id; + memset(data, 0, sizeof(ev_common->area[exist_slot].data)); + res = data; + } else { + res = NULL; } - } - if (exist_slot != -1) { - ev_common->area_use_bitfield |= (1 << exist_slot); - data = (u8*)ev_common->area[exist_slot].data; - ev_common->area[exist_slot].info.type = type; - ev_common->area[exist_slot].info.id = id; - memset(data, 0, sizeof(ev_common->area[exist_slot].data)); - res = data; - } - else { - res = NULL; - } - - return res; + return res; } extern u8* mEv_get_common_area(int type, u8 id) { - mEv_common_data_c* ev_common = Common_GetPointer(event_common); - int i; + mEv_common_data_c* ev_common = Common_GetPointer(event_common); + int i; - for (i = 0; i < mEv_AREA_NUM; i++) { - if (((1 << i) & ev_common->area_use_bitfield) != 0) { - if (type == ev_common->area[i].info.type && id == ev_common->area[i].info.id) { - return (u8*)ev_common->area[i].data; - } + for (i = 0; i < mEv_AREA_NUM; i++) { + if (((1 << i) & ev_common->area_use_bitfield) != 0) { + if (type == ev_common->area[i].info.type && id == ev_common->area[i].info.id) { + return (u8*)ev_common->area[i].data; + } + } } - } - return NULL; + return NULL; } extern int mEv_clear_common_area(int type, u8 id) { - mEv_common_data_c* ev_common = Common_GetPointer(event_common); - int i; + mEv_common_data_c* ev_common = Common_GetPointer(event_common); + int i; - for (i = 0; i < mEv_AREA_NUM; i++) { - if (((1 << i) & ev_common->area_use_bitfield) != 0) { - if (type == ev_common->area[i].info.type && id == ev_common->area[i].info.id) { - ev_common->area_use_bitfield &= ~(1 << i); - return sizeof(ev_common->area[i].data); - } + for (i = 0; i < mEv_AREA_NUM; i++) { + if (((1 << i) & ev_common->area_use_bitfield) != 0) { + if (type == ev_common->area[i].info.type && id == ev_common->area[i].info.id) { + ev_common->area_use_bitfield &= ~(1 << i); + return sizeof(ev_common->area[i].data); + } + } } - } - return 0; + return 0; } extern mEv_place_data_c* mEv_reserve_common_place(int type, u8 id) { - mEv_common_data_c* ev_common = Common_GetPointer(event_common); - int i; - int exist_slot = -1; - mEv_place_data_c* data; - mEv_place_data_c* res; + mEv_common_data_c* ev_common = Common_GetPointer(event_common); + int i; + int exist_slot = -1; + mEv_place_data_c* data; + mEv_place_data_c* res; - for (i = 0; i < mEv_PLACE_NUM; i++) { - if (((1 << i) & ev_common->place_use_bitfield) == 0) { - exist_slot = i; + for (i = 0; i < mEv_PLACE_NUM; i++) { + if (((1 << i) & ev_common->place_use_bitfield) == 0) { + exist_slot = i; + } else if (type == ev_common->place[i].info.type && id == ev_common->place[i].info.id) { + exist_slot = i; + break; + } } - else if (type == ev_common->place[i].info.type && id == ev_common->place[i].info.id) { - exist_slot = i; - break; + + if (exist_slot != -1) { + ev_common->place_use_bitfield |= (1 << exist_slot); + data = &ev_common->place[exist_slot].data; + ev_common->place[exist_slot].info.type = type; + ev_common->place[exist_slot].info.id = id; + memset(data, 0, sizeof(ev_common->place[exist_slot].data)); + res = data; + } else { + res = NULL; } - } - if (exist_slot != -1) { - ev_common->place_use_bitfield |= (1 << exist_slot); - data = &ev_common->place[exist_slot].data; - ev_common->place[exist_slot].info.type = type; - ev_common->place[exist_slot].info.id = id; - memset(data, 0, sizeof(ev_common->place[exist_slot].data)); - res = data; - } - else { - res = NULL; - } - - return res; + return res; } extern mEv_place_data_c* mEv_get_common_place(int type, u8 id) { - mEv_common_data_c* ev_common = Common_GetPointer(event_common); - int i; + mEv_common_data_c* ev_common = Common_GetPointer(event_common); + int i; - for (i = 0; i < mEv_PLACE_NUM; i++) { - if (((1 << i) & ev_common->place_use_bitfield) != 0) { - if (type == ev_common->place[i].info.type && id == ev_common->place[i].info.id) { - return &ev_common->place[i].data; - } + for (i = 0; i < mEv_PLACE_NUM; i++) { + if (((1 << i) & ev_common->place_use_bitfield) != 0) { + if (type == ev_common->place[i].info.type && id == ev_common->place[i].info.id) { + return &ev_common->place[i].data; + } + } } - } - return NULL; + return NULL; } extern int mEv_clear_common_place(int type, u8 id) { - mEv_common_data_c* ev_common = Common_GetPointer(event_common); - int i; + mEv_common_data_c* ev_common = Common_GetPointer(event_common); + int i; - for (i = 0; i < mEv_PLACE_NUM; i++) { - if (((1 << i) & ev_common->place_use_bitfield) != 0) { - if (type == ev_common->place[i].info.type && id == ev_common->place[i].info.id) { - ev_common->place_use_bitfield &= ~(1 << i); - return sizeof(ev_common->place[i].data); - } + for (i = 0; i < mEv_PLACE_NUM; i++) { + if (((1 << i) & ev_common->place_use_bitfield) != 0) { + if (type == ev_common->place[i].info.type && id == ev_common->place[i].info.id) { + ev_common->place_use_bitfield &= ~(1 << i); + return sizeof(ev_common->place[i].data); + } + } } - } - return 0; + return 0; } extern int mEv_use_block_by_other_event(int type, BlockOrUnit_c* block) { - mEv_common_data_c* ev_common = Common_GetPointer(event_common); - int i; + mEv_common_data_c* ev_common = Common_GetPointer(event_common); + int i; - for (i = 0; i < mEv_PLACE_NUM; i++) { - if (((1 << i) & ev_common->place_use_bitfield) != 0) { - if ( - ev_common->place[i].data.block.x == block->x && - ev_common->place[i].data.block.z == block->z && - ev_common->place[i].info.type != type - ) { - return TRUE; - } + for (i = 0; i < mEv_PLACE_NUM; i++) { + if (((1 << i) & ev_common->place_use_bitfield) != 0) { + if (ev_common->place[i].data.block.x == block->x && ev_common->place[i].data.block.z == block->z && + ev_common->place[i].info.type != type) { + return TRUE; + } + } } - } - return FALSE; + return FALSE; } extern void mEv_erase_FG_all_in_common_place() { - mEv_common_data_c* ev_common = Common_GetPointer(event_common); - int i; + mEv_common_data_c* ev_common = Common_GetPointer(event_common); + int i; - for (i = 0; i < mEv_PLACE_NUM; i++) { - if (((1 << i) & ev_common->place_use_bitfield) != 0) { - mEv_place_data_c* place_data = &ev_common->place[i].data; - - if (ITEM_NAME_GET_TYPE(place_data->actor_name) == NAME_TYPE_STRUCT) { - mFI_SetFGStructure_common( - place_data->actor_name, - place_data->block.x, - place_data->block.z, - place_data->unit.x, - place_data->unit.z, - mFI_SET_STRUCTURE_REMOVE - ); - } + for (i = 0; i < mEv_PLACE_NUM; i++) { + if (((1 << i) & ev_common->place_use_bitfield) != 0) { + mEv_place_data_c* place_data = &ev_common->place[i].data; + + if (ITEM_NAME_GET_TYPE(place_data->actor_name) == NAME_TYPE_STRUCT) { + mFI_SetFGStructure_common(place_data->actor_name, place_data->block.x, place_data->block.z, + place_data->unit.x, place_data->unit.z, mFI_SET_STRUCTURE_REMOVE); + } + } } - } } static int n_rumor = 0; static int rumor_table[40]; extern void mEv_clear_rumor() { - n_rumor = 0; + n_rumor = 0; } extern int mEv_spread_rumor(int type) { - rumor_table[n_rumor++] = type; - return n_rumor; + rumor_table[n_rumor++] = type; + return n_rumor; } extern int mEv_get_rumor() { - if (n_rumor != 0) { - return rumor_table[gamePT->frame_counter % n_rumor] | mEv_SET(mEv_TYPE3_EVENT, 0); - } + if (n_rumor != 0) { + return rumor_table[gamePT->frame_counter % n_rumor] | mEv_SET(mEv_TYPE3_EVENT, 0); + } - return 0; + return 0; } extern void mEv_actor_dying_message(int type, ACTOR* actor) { - xyz_t pos = actor->world.position; - mEv_common_data_c* ev_common = Common_GetPointer(event_common); - mActor_name_t actor_name = actor->npc_id; - int i; + xyz_t pos = actor->world.position; + mEv_common_data_c* ev_common = Common_GetPointer(event_common); + mActor_name_t actor_name = actor->npc_id; + int i; - for (i = 0; i < mEv_PLACE_NUM; i++) { - if (((1 << i) & ev_common->place_use_bitfield) != 0) { - mEv_place_data_c* place_data = &ev_common->place[i].data; - - if ( - ev_common->place[i].info.type == type && - place_data->actor_name == actor_name - ) { - /* Check if the actor world position should be transferred to event data */ - if (place_data->flag & 1) { - mFI_Wpos2BlockNum(&place_data->block.x, &place_data->block.z, pos); - mFI_Wpos2UtNum_inBlock(&place_data->unit.x, &place_data->unit.z, pos); + for (i = 0; i < mEv_PLACE_NUM; i++) { + if (((1 << i) & ev_common->place_use_bitfield) != 0) { + mEv_place_data_c* place_data = &ev_common->place[i].data; + + if (ev_common->place[i].info.type == type && place_data->actor_name == actor_name) { + /* Check if the actor world position should be transferred to event data */ + if (place_data->flag & 1) { + mFI_Wpos2BlockNum(&place_data->block.x, &place_data->block.z, pos); + mFI_Wpos2UtNum_inBlock(&place_data->unit.x, &place_data->unit.z, pos); + } + + funeral = TRUE; + break; + } } - - funeral = TRUE; - break; - } } - } - mEv_set_status(type, mEv_STATUS_STOP); - dead = 3; + mEv_set_status(type, mEv_STATUS_STOP); + dead = 3; } extern int mEv_LiveSonchoPresent() { - if (Common_Get(demo_profiles[1]) == mAc_PROFILE_PRESENT_DEMO) { - return TRUE; - } + if (Common_Get(demo_profiles[1]) == mAc_PROFILE_PRESENT_DEMO) { + return TRUE; + } - if (Common_Get(clip).demo_clip2 != NULL && Common_Get(clip).demo_clip2->type == mDemo_CLIP_TYPE_PRESENT_DEMO) { - return TRUE; - } + if (Common_Get(clip).demo_clip2 != NULL && Common_Get(clip).demo_clip2->type == mDemo_CLIP_TYPE_PRESENT_DEMO) { + return TRUE; + } - return FALSE; + return FALSE; } extern int mEv_LivePlayer(u32 player_no) { - if (mEv_CheckTitleDemo() != 0) { - return FALSE; - } - - if (Common_Get(reset_flag) != 0) { - return FALSE; - } - - if (player_no < mPr_FOREIGNER) { - if ( - mEv_CheckEvent(mEv_SAVED_GATEWAY_PLR0 + player_no) == TRUE || - mEv_CheckEvent(mEv_SAVED_FIRSTINTRO_PLR0 + player_no) == TRUE - ) { - return FALSE; + if (mEv_CheckTitleDemo() != 0) { + return FALSE; } - } - else if (player_no < mPr_PLAYER_NUM) { - if (mEv_CheckEvent(mEv_SAVED_GATEWAY_PLR0 + player_no) == TRUE) { - return FALSE; - } - } - else { - return FALSE; - } - return TRUE; + if (Common_Get(reset_flag) != 0) { + return FALSE; + } + + if (player_no < mPr_FOREIGNER) { + if (mEv_CheckEvent(mEv_SAVED_GATEWAY_PLR0 + player_no) == TRUE || + mEv_CheckEvent(mEv_SAVED_FIRSTINTRO_PLR0 + player_no) == TRUE) { + return FALSE; + } + } else if (player_no < mPr_PLAYER_NUM) { + if (mEv_CheckEvent(mEv_SAVED_GATEWAY_PLR0 + player_no) == TRUE) { + return FALSE; + } + } else { + return FALSE; + } + + return TRUE; } extern int mEv_ArbeitPlayer_kari(u32 player_no) { - if (player_no < mPr_FOREIGNER && mEv_CheckEvent(mEv_SAVED_FIRSTJOB_PLR0 + player_no) == TRUE) { - return TRUE; - } + if (player_no < mPr_FOREIGNER && mEv_CheckEvent(mEv_SAVED_FIRSTJOB_PLR0 + player_no) == TRUE) { + return TRUE; + } - return FALSE; + return FALSE; } extern int mEv_ArbeitPlayer(u32 player_no) { - if ( - player_no < mPr_FOREIGNER && - (mEv_CheckEvent(mEv_SAVED_FIRSTJOB_PLR0 + player_no) == TRUE || - mEv_CheckEvent(mEv_SAVED_HRAWAIT_PLR0 + player_no) == TRUE) - ) { - return TRUE; - } + if (player_no < mPr_FOREIGNER && (mEv_CheckEvent(mEv_SAVED_FIRSTJOB_PLR0 + player_no) == TRUE || + mEv_CheckEvent(mEv_SAVED_HRAWAIT_PLR0 + player_no) == TRUE)) { + return TRUE; + } - return FALSE; + return FALSE; } extern void mEv_make_new_special_event() { - lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); - mEv_schedule_c sched; - mEv_schedule_date_u today_date; - mEv_schedule_c* sched_p = &sched; + lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); + mEv_schedule_c sched; + mEv_schedule_date_u today_date; + mEv_schedule_c* sched_p = &sched; - today_date.d.month = rtc_time->month; - today_date.d.day = rtc_time->day; - today_date.d._2 = 0; - today_date.d.hour = rtc_time->hour; + today_date.d.month = rtc_time->month; + today_date.d.day = rtc_time->day; + today_date.d._2 = 0; + today_date.d.hour = rtc_time->hour; - if (init_special_event(TRUE)) { - int i; + if (init_special_event(TRUE)) { + int i; - Save_Get(event_save_common).special_event.flags = 1; - for (i = 0; i < ARRAY_COUNT(event_schedule_data); i++) { - memcpy(sched_p, &event_schedule_data[i], sizeof(mEv_schedule_c)); + Save_Get(event_save_common).special_event.flags = 1; + for (i = 0; i < ARRAY_COUNT(event_schedule_data); i++) { + memcpy(sched_p, &event_schedule_data[i], sizeof(mEv_schedule_c)); - if (update_special_event(sched_p)) { - sched.date[0].raw = decode_date(sched.date[0].raw); - sched.date[1].raw = decode_date(sched.date[1].raw); + if (update_special_event(sched_p)) { + sched.date[0].raw = decode_date(sched.date[0].raw); + sched.date[1].raw = decode_date(sched.date[1].raw); - if (check_date_range(today_date.md, sched.date[0].md, sched.date[1].md)) { - add_event_today(today_date.md, sched_p); + if (check_date_range(today_date.md, sched.date[0].md, sched.date[1].md)) { + add_event_today(today_date.md, sched_p); + } + } } - } } - } } extern int mEv_GetMonth(Event_c* event) { - return event->month; + return event->month; } extern int mEv_GetDay(Event_c* event) { - return event->day; + return event->day; } extern int mEv_GetHour(Event_c* event) { - return event->hour; + return event->hour; } extern void mEv_debug_print4f(gfxprint_t* gfxprint) { - //int x = 0; - int i; - int event_idx = 0; + // int x = 0; + int i; + int event_idx = 0; - for (i = 0; i < mEv_TODAY_EVENT_NUM; i++) { - if (event_today[i].type != -1 && mEv_check_status(event_today[i].type, mEv_STATUS_ACTIVE)) { - gfxprint_color(gfxprint, 245, 200, 170, 255); - gfxprint_locate8x8(gfxprint, 3 + event_idx * 3, 5); - gfxprint_printf(gfxprint, "%3d", event_today[i].type); - event_idx++; - //x += 3; + for (i = 0; i < mEv_TODAY_EVENT_NUM; i++) { + if (event_today[i].type != -1 && mEv_check_status(event_today[i].type, mEv_STATUS_ACTIVE)) { + gfxprint_color(gfxprint, 245, 200, 170, 255); + gfxprint_locate8x8(gfxprint, 3 + event_idx * 3, 5); + gfxprint_printf(gfxprint, "%3d", event_today[i].type); + event_idx++; + // x += 3; - if (event_idx >= 9) { - if (mEv_check_status(event_today[i].type, mEv_STATUS_ERROR) == FALSE) { - gfxprint_color(gfxprint, 245, 150, 120, 255); + if (event_idx >= 9) { + if (mEv_check_status(event_today[i].type, mEv_STATUS_ERROR) == FALSE) { + gfxprint_color(gfxprint, 245, 150, 120, 255); + } else if (mEv_check_status(event_today[i].type, mEv_STATUS_RUN)) { + gfxprint_color(gfxprint, 180, 150, 160, 255); + } else { + gfxprint_color(gfxprint, 140, 120, 120, 255); + } + + gfxprint_locate8x8(gfxprint, 9 + event_idx * 3, 5); + gfxprint_printf(gfxprint, "+"); + break; + } } - else if (mEv_check_status(event_today[i].type, mEv_STATUS_RUN)) { - gfxprint_color(gfxprint, 180, 150, 160, 255); - } - else { - gfxprint_color(gfxprint, 140, 120, 120, 255); - } - - gfxprint_locate8x8(gfxprint, 9 + event_idx * 3, 5); - gfxprint_printf(gfxprint, "+"); - break; - } - } - } } extern void mEv_sp_debug_print4f(gfxprint_t* gfxprint) { - gfxprint_color(gfxprint, 245, 200, 170, 255); - gfxprint_locate8x8(gfxprint, 3, 11); - gfxprint_printf( - gfxprint, - "%3d %02d-%02d-%02d", - Save_Get(event_save_common).special_event.type, - Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL0] & 0xFF, // event rtc (current) day - Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL1] & 0xFF, // event begin day - Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL2] & 0xFF // event end day - ); + gfxprint_color(gfxprint, 245, 200, 170, 255); + gfxprint_locate8x8(gfxprint, 3, 11); + gfxprint_printf(gfxprint, "%3d %02d-%02d-%02d", Save_Get(event_save_common).special_event.type, + Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL0] & 0xFF, // event rtc (current) day + Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL1] & 0xFF, // event begin day + Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL2] & 0xFF // event end day + ); - gfxprint_locate8x8(gfxprint, 30, 11); - gfxprint_printf( - gfxprint, - "%c%c%c%c%c%c%c%c", - mEv_CheckTitleDemo() ? 'T' : '.', - mEv_CheckFirstIntro() ? 'F' : '.', - mEv_CheckGateway() ? 'G' : '.', - mEv_CheckRealArbeit() ? 'R' : '.', - mEv_CheckArbeit() ? 'A' : '.', - mDemo_CheckDemo() ? 'D' : '.', - !mEv_PlayerOK() ? 'P' : '.', - !mEv_LivePlayer(Common_Get(player_no)) ? 'L' : '.' - ); + gfxprint_locate8x8(gfxprint, 30, 11); + gfxprint_printf(gfxprint, "%c%c%c%c%c%c%c%c", mEv_CheckTitleDemo() ? 'T' : '.', mEv_CheckFirstIntro() ? 'F' : '.', + mEv_CheckGateway() ? 'G' : '.', mEv_CheckRealArbeit() ? 'R' : '.', mEv_CheckArbeit() ? 'A' : '.', + mDemo_CheckDemo() ? 'D' : '.', !mEv_PlayerOK() ? 'P' : '.', + !mEv_LivePlayer(Common_Get(player_no)) ? 'L' : '.'); } extern int mEv_change(Event_c* event) { - return event->changed_num; + return event->changed_num; } extern int mEv_get_special_event_state() { - int special_events[] = { - mEv_EVENT_SHOP_SALE, - mEv_EVENT_DESIGNER, - mEv_EVENT_BROKER_SALE, - mEv_EVENT_ARTIST, - mEv_EVENT_CARPET_PEDDLER, - mEv_EVENT_GYPSY - }; + int special_events[] = { mEv_EVENT_SHOP_SALE, mEv_EVENT_DESIGNER, mEv_EVENT_BROKER_SALE, + mEv_EVENT_ARTIST, mEv_EVENT_CARPET_PEDDLER, mEv_EVENT_GYPSY }; - int active = FALSE; - int res = mEv_SPECIAL_STATE_UNSCHEDULED; - mEv_ymdh_u event_date_start; - mEv_ymdh_u today_date; - mEv_ymdh_u event_date; - mEv_ymdh_u today_date_start; - int event_type; + int active = FALSE; + int res = mEv_SPECIAL_STATE_UNSCHEDULED; + mEv_ymdh_u event_date_start; + mEv_ymdh_u today_date; + mEv_ymdh_u event_date; + mEv_ymdh_u today_date_start; + int event_type; - if (Save_Get(event_save_data).special.type <= mEv_SPNPC_END) { - event_type = special_events[Save_Get(event_save_data).special.type]; - } - else { - return FALSE; - } + if (Save_Get(event_save_data).special.type <= mEv_SPNPC_END) { + event_type = special_events[Save_Get(event_save_data).special.type]; + } else { + return FALSE; + } today_date.year = 0; today_date.month = Common_Get(time.rtc_time.month); @@ -2853,261 +2690,239 @@ extern int mEv_get_special_event_state() { event_date_start.hour = 0; if (event_type == mEv_EVENT_SHOP_SALE) { - if (event_date.raw == today_date.raw) { + if (event_date.raw == today_date.raw) { + active = TRUE; + } + } else if (mEv_check_status(event_type, mEv_STATUS_ACTIVE)) { active = TRUE; - } - } - else if (mEv_check_status(event_type, mEv_STATUS_ACTIVE)) { - active = TRUE; } if (active) { - res = mEv_SPECIAL_STATE_ACTIVE; - } - else if (check_ymdh_range(today_date.raw, event_date_start.raw, event_date.raw)) { - res = mEv_SPECIAL_STATE_SCHEDULED_TODAY; - } - else if (Save_Get(event_save_data).special.type != 0xFFFFFFFF && event_date_start.raw > today_date_start.raw) { - res = mEv_SPECIAL_STATE_SCHEDULED_LATER; + res = mEv_SPECIAL_STATE_ACTIVE; + } else if (check_ymdh_range(today_date.raw, event_date_start.raw, event_date.raw)) { + res = mEv_SPECIAL_STATE_SCHEDULED_TODAY; + } else if (Save_Get(event_save_data).special.type != 0xFFFFFFFF && event_date_start.raw > today_date_start.raw) { + res = mEv_SPECIAL_STATE_SCHEDULED_LATER; } - return res; + return res; } extern int mEv_snowman_born_check() { - mEv_ymdh_u snowman_date; - mEv_ymdh_u today_date; - mEv_ymdh_u snowman_date_end; + mEv_ymdh_u snowman_date; + mEv_ymdh_u today_date; + mEv_ymdh_u snowman_date_end; - today_date.year = Common_Get(time.rtc_time).year % 100; - today_date.month = Common_Get(time.rtc_time).month; - today_date.day = Common_Get(time.rtc_time).day; - today_date.hour = Common_Get(time.rtc_time).hour; + today_date.year = Common_Get(time.rtc_time).year % 100; + today_date.month = Common_Get(time.rtc_time).month; + today_date.day = Common_Get(time.rtc_time).day; + today_date.hour = Common_Get(time.rtc_time).hour; - snowman_date.year = Save_Get(snowman_year); - snowman_date.month = Save_Get(snowman_month); - snowman_date.day = Save_Get(snowman_day); - snowman_date.hour = Save_Get(snowman_hour); - - snowman_date_end.raw = snowman_date.raw; - snowman_date_end.hour = 5; + snowman_date.year = Save_Get(snowman_year); + snowman_date.month = Save_Get(snowman_month); + snowman_date.day = Save_Get(snowman_day); + snowman_date.hour = Save_Get(snowman_hour); - if (snowman_date.hour >= 6) { - mEv_MonthDay_u snowman_monthday; - mEv_MonthDay_u next_monthday; + snowman_date_end.raw = snowman_date.raw; + snowman_date_end.hour = 5; - snowman_monthday.month = snowman_date.month; - snowman_monthday.day = snowman_date.day; - next_monthday.raw = after_n_day(snowman_monthday.raw, 1); + if (snowman_date.hour >= 6) { + mEv_MonthDay_u snowman_monthday; + mEv_MonthDay_u next_monthday; - if (next_monthday.raw == mEv_MonthDay(lbRTC_JANUARY, 1)) { - snowman_date_end.year = (snowman_date_end.year + 1) % 100; + snowman_monthday.month = snowman_date.month; + snowman_monthday.day = snowman_date.day; + next_monthday.raw = after_n_day(snowman_monthday.raw, 1); + + if (next_monthday.raw == mEv_MonthDay(lbRTC_JANUARY, 1)) { + snowman_date_end.year = (snowman_date_end.year + 1) % 100; + } + + snowman_date_end.month = next_monthday.month; + snowman_date_end.day = next_monthday.day; } - snowman_date_end.month = next_monthday.month; - snowman_date_end.day = next_monthday.day; - } + if (check_ymdh_range(today_date.raw, snowman_date.raw, snowman_date_end.raw)) { + return FALSE; + } - if (check_ymdh_range(today_date.raw, snowman_date.raw, snowman_date_end.raw)) { - return FALSE; - } - - return TRUE; + return TRUE; } extern int mEv_someone_died() { - return dead; + return dead; } extern void mEv_special_event_soldout(int type) { - GAME_PLAY* play = (GAME_PLAY*)gamePT; - mEv_event_today_c* ev_today; - int i; + GAME_PLAY* play = (GAME_PLAY*)gamePT; + mEv_event_today_c* ev_today; + int i; - for (i = 0; i < mEv_TODAY_EVENT_NUM; i++) { - ev_today = &event_today[i]; - - if ( - ev_today->type != -1 && - index_today[ev_today->type] != 0xFF && - mEv_check_status(ev_today->type, mEv_STATUS_ERROR) == FALSE && - ev_today->type == type - ) { - if (clear_active(ev_today->type)) { - play->event.changed_num++; - } + for (i = 0; i < mEv_TODAY_EVENT_NUM; i++) { + ev_today = &event_today[i]; - ev_today->active_hours = mEv_EVENT_HOUR_CLEAR_EVENT; + if (ev_today->type != -1 && index_today[ev_today->type] != 0xFF && + mEv_check_status(ev_today->type, mEv_STATUS_ERROR) == FALSE && ev_today->type == type) { + if (clear_active(ev_today->type)) { + play->event.changed_num++; + } + + ev_today->active_hours = mEv_EVENT_HOUR_CLEAR_EVENT; + } } - } } extern void mEv_toland_clear_common() { - int* keep_flags = Common_Get(event_keep_flags); - int i; + int* keep_flags = Common_Get(event_keep_flags); + int i; - for (i = 0; i < ARRAY_COUNT(Common_Get(event_keep_flags)); i++) { - keep_flags[i] = 0; - } + for (i = 0; i < ARRAY_COUNT(Common_Get(event_keep_flags)); i++) { + keep_flags[i] = 0; + } - mem_clear(Common_GetPointer(event_common), sizeof(Common_Get(event_common)), 0); - mem_clear(Common_GetPointer(special_event_common), sizeof(Common_Get(special_event_common)), 0); + mem_clear(Common_GetPointer(event_common), sizeof(Common_Get(event_common)), 0); + mem_clear(Common_GetPointer(special_event_common), sizeof(Common_Get(special_event_common)), 0); } extern void mGH_animal_return_init() { - mem_clear(Save_GetPointer(return_animal), sizeof(Save_Get(return_animal)), 0); - Save_Get(return_animal).npc_id = EMPTY_NO; // ?? + mem_clear(Save_GetPointer(return_animal), sizeof(Save_Get(return_animal)), 0); + Save_Get(return_animal).npc_id = EMPTY_NO; // ?? } extern int mGH_check_birth2() { - lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); - Anmret_c* return_animal = Save_GetPointer(return_animal); - lbRTC_time_c time; - - if (return_animal->npc_id == EMPTY_NO) { + lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); + Anmret_c* return_animal = Save_GetPointer(return_animal); + lbRTC_time_c time; + + if (return_animal->npc_id == EMPTY_NO) { + return FALSE; + } + + /* Check that it's been less than 1 week since go home event was scheduled */ + lbRTC_TimeCopy(&time, &return_animal->renew_time); + lbRTC_Add_DD(&time, lbRTC_WEEK); + + if (lbRTC_IsEqualDate(time.year, time.month, time.day, rtc_time->year, rtc_time->month, rtc_time->day) == + lbRTC_LESS) { + return TRUE; + } + return FALSE; - } - - /* Check that it's been less than 1 week since go home event was scheduled */ - lbRTC_TimeCopy(&time, &return_animal->renew_time); - lbRTC_Add_DD(&time, lbRTC_WEEK); - - if ( - lbRTC_IsEqualDate( - time.year, time.month, time.day, - rtc_time->year, rtc_time->month, rtc_time->day - ) == lbRTC_LESS - ) { - return TRUE; - } - - return FALSE; } extern int mGH_check_birth() { - if ((Save_Get(return_animal).talk_bit & (1 << Common_Get(player_no))) != 0) { - return FALSE; - } + if ((Save_Get(return_animal).talk_bit & (1 << Common_Get(player_no))) != 0) { + return FALSE; + } - return mGH_check_birth2(); + return mGH_check_birth2(); } extern void mGH_check_delete() { - lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); - Anmret_c* return_animal = Save_GetPointer(return_animal); - Private_c* priv = Save_Get(private); + lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); + Anmret_c* return_animal = Save_GetPointer(return_animal); + Private_c* priv = Save_Get(private_data); - if (return_animal->npc_id != EMPTY_NO) { - if (Save_Get(npc_force_go_home) == TRUE) { - mGH_animal_return_init(); - } - else { - lbRTC_time_c time; + if (return_animal->npc_id != EMPTY_NO) { + if (Save_Get(npc_force_go_home) == TRUE) { + mGH_animal_return_init(); + } else { + lbRTC_time_c time; - lbRTC_TimeCopy(&time, &return_animal->renew_time); - /* Devs did this to fix a 'bug' with lbRTC_Add_DD which only allows going at most one month in the future */ - lbRTC_Add_DD(&time, 20); - lbRTC_Add_DD(&time, 20); - lbRTC_Add_DD(&time, 20); + lbRTC_TimeCopy(&time, &return_animal->renew_time); + /* Devs did this to fix a 'bug' with lbRTC_Add_DD which only allows going at most one month in the future */ + lbRTC_Add_DD(&time, 20); + lbRTC_Add_DD(&time, 20); + lbRTC_Add_DD(&time, 20); - if ( - lbRTC_IsEqualDate( - time.year, time.month, time.day, - rtc_time->year, rtc_time->month, rtc_time->day - ) != lbRTC_OVER - ) { - mGH_animal_return_init(); - } - else { - int i; + if (lbRTC_IsEqualDate(time.year, time.month, time.day, rtc_time->year, rtc_time->month, rtc_time->day) != + lbRTC_OVER) { + mGH_animal_return_init(); + } else { + int i; - if (mNpc_SearchAnimalinfo(Save_Get(animals), return_animal->npc_id, ANIMAL_NUM_MAX) != -1) { - mGH_animal_return_init(); // don't allow this animal to visit if a "version" of it lives in town + if (mNpc_SearchAnimalinfo(Save_Get(animals), return_animal->npc_id, ANIMAL_NUM_MAX) != -1) { + mGH_animal_return_init(); // don't allow this animal to visit if a "version" of it lives in town + } + + for (i = 0; i < PLAYER_NUM; i++) { + if (mPr_NullCheckPersonalID(&priv->player_ID) == FALSE && + (return_animal->talk_bit & (1 << i)) == 0) { + return; + } + + priv++; + } + + mGH_animal_return_init(); + } } - - for (i = 0; i < PLAYER_NUM; i++) { - if (mPr_NullCheckPersonalID(&priv->player_ID) == FALSE && (return_animal->talk_bit & (1 << i)) == 0) { - return; - } - - priv++; - } - - mGH_animal_return_init(); - } } - } } extern void mMC_mask_cat_init() { - MaskCat_c* mask_cat = Save_GetPointer(mask_cat); - u8 cloth_no = mask_cat->cloth_no; + MaskCat_c* mask_cat = Save_GetPointer(mask_cat); + u8 cloth_no = mask_cat->cloth_no; - mem_clear(mask_cat, sizeof(Save_Get(mask_cat)), 0); - mPr_ClearPersonalID(&mask_cat->design.creator_pid); - Save_Get(mask_cat).cloth_no = cloth_no; + mem_clear(mask_cat, sizeof(Save_Get(mask_cat)), 0); + mPr_ClearPersonalID(&mask_cat->design.creator_pid); + Save_Get(mask_cat).cloth_no = cloth_no; } extern int mMC_check_birth() { - if (Save_Get(mask_cat).design.creator_pid.player_id == 0xFFFF) { + if (Save_Get(mask_cat).design.creator_pid.player_id == 0xFFFF) { + return FALSE; + } + + if (Save_Get(mask_cat).talk_idx >= mMC_TALK_IDX_MAX) { + /* Talked more than the maximum amount of times allowed */ + mMC_mask_cat_init(); + return TRUE; + } + return FALSE; - } - - if (Save_Get(mask_cat).talk_idx >= mMC_TALK_IDX_MAX) { - /* Talked more than the maximum amount of times allowed */ - mMC_mask_cat_init(); - return TRUE; - } - - return FALSE; } extern int mMC_check_birth_day() { - switch (Common_Get(time.rtc_time.weekday)) { - case lbRTC_SUNDAY: - case lbRTC_MONDAY: - case lbRTC_WEDNESDAY: - case lbRTC_FRIDAY: - return FALSE; - - default: - return mMC_check_birth(); - } + switch (Common_Get(time.rtc_time.weekday)) { + case lbRTC_SUNDAY: + case lbRTC_MONDAY: + case lbRTC_WEDNESDAY: + case lbRTC_FRIDAY: + return FALSE; + + default: + return mMC_check_birth(); + } } extern void mMC_check_delete() { - MaskCat_c* mask_cat = Save_GetPointer(mask_cat); - lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); + MaskCat_c* mask_cat = Save_GetPointer(mask_cat); + lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); - if (mask_cat->design.creator_pid.player_id != 0xFFFF) { - lbRTC_time_c max_time; - lbRTC_time_c min_time; + if (mask_cat->design.creator_pid.player_id != 0xFFFF) { + lbRTC_time_c max_time; + lbRTC_time_c min_time; - lbRTC_TimeCopy(&max_time, &mask_cat->time); - lbRTC_TimeCopy(&min_time, &mask_cat->time); + lbRTC_TimeCopy(&max_time, &mask_cat->time); + lbRTC_TimeCopy(&min_time, &mask_cat->time); - lbRTC_Add_DD(&max_time, lbRTC_WEEK); - lbRTC_Sub_DD(&min_time, lbRTC_WEEK); + lbRTC_Add_DD(&max_time, lbRTC_WEEK); + lbRTC_Sub_DD(&min_time, lbRTC_WEEK); - if ( - mask_cat->talk_idx >= mMC_TALK_IDX_MAX || - lbRTC_IsEqualDate( - max_time.year, max_time.month, max_time.day, - rtc_time->year, rtc_time->month, rtc_time->day - ) != lbRTC_OVER || - lbRTC_IsEqualDate( - min_time.year, min_time.month, min_time.day, - rtc_time->year, rtc_time->month, rtc_time->day - ) != lbRTC_LESS - ) { - mMC_mask_cat_init(); + if (mask_cat->talk_idx >= mMC_TALK_IDX_MAX || + lbRTC_IsEqualDate(max_time.year, max_time.month, max_time.day, rtc_time->year, rtc_time->month, + rtc_time->day) != lbRTC_OVER || + lbRTC_IsEqualDate(min_time.year, min_time.month, min_time.day, rtc_time->year, rtc_time->month, + rtc_time->day) != lbRTC_LESS) { + mMC_mask_cat_init(); + } } - } } extern void mMC_set_time() { - MaskCat_c* mask_cat = Save_GetPointer(mask_cat); - lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); + MaskCat_c* mask_cat = Save_GetPointer(mask_cat); + lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); - lbRTC_TimeCopy(&mask_cat->time, rtc_time); + lbRTC_TimeCopy(&mask_cat->time, rtc_time); } diff --git a/src/m_home.c b/src/m_home.c index 047af196..5572b6ae 100644 --- a/src/m_home.c +++ b/src/m_home.c @@ -15,504 +15,582 @@ /* upstairs room base unit layout */ static mActor_name_t l_player_room_2_utinfo[UT_X_NUM * UT_Z_NUM] = { - RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - DOOR0, RSV_WALL_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO + RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, DOOR0, RSV_WALL_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, + RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO }; /* basement room base unit layout */ static mActor_name_t l_player_room_bm_utinfo[UT_X_NUM * UT_Z_NUM] = { - RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, RSV_WALL_NO, DOOR0, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO + RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, + RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, RSV_WALL_NO, DOOR0, + RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, + RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO }; /* small main room base unit layout */ static mActor_name_t l_proom_s_tmp[UT_X_NUM * UT_Z_NUM] = { - RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, RSV_WALL_NO, DOOR0, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, RSV_WALL_NO, EXIT_DOOR, EXIT_DOOR, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO + RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, + RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, RSV_WALL_NO, DOOR0, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, RSV_DOOR, + RSV_DOOR, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EXIT_DOOR, EXIT_DOOR, RSV_WALL_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO }; /* medium main room base unit layout */ static mActor_name_t l_proom_m_tmp[UT_X_NUM * UT_Z_NUM] = { - RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, RSV_WALL_NO, DOOR0, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EXIT_DOOR, EXIT_DOOR, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO + RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, + RSV_WALL_NO, RSV_WALL_NO, DOOR0, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, RSV_WALL_NO, + RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EXIT_DOOR, EXIT_DOOR, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO }; /* large main room base unit layout */ static mActor_name_t l_proom_l_tmp[UT_X_NUM * UT_Z_NUM] = { - RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, DOOR1, RSV_WALL_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, RSV_WALL_NO, DOOR0, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EXIT_DOOR, EXIT_DOOR, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO + RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, + RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + RSV_WALL_NO, DOOR1, RSV_WALL_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, RSV_WALL_NO, DOOR0, + RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, RSV_WALL_NO, + RSV_WALL_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, + EXIT_DOOR, EXIT_DOOR, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, + RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO }; /* island cottage base unit layout */ static mActor_name_t l_proom_cottage_tmp[UT_X_NUM * UT_Z_NUM] = { - RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EXIT_DOOR, EXIT_DOOR, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO + RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, + RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, + RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, RSV_WALL_NO, EXIT_DOOR, EXIT_DOOR, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, + RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO }; #define HANIWA_MSG_LINES 4 // TODO: fix me - /** * @brief Clears the save data for a given home. - * + * * @param home_no Index of the home which will be cleared (0-3). **/ extern void mHm_ClearHomeInfo(int home_no) { - static int haniwa_msg[HANIWA_MSG_LINES] = { 0x76A, 0x76B, 0x76C, 0x76D }; /* These are probably defines somewhere from auto-gen */ + static int haniwa_msg[HANIWA_MSG_LINES] = { 0x76A, 0x76B, 0x76C, + 0x76D }; /* These are probably defines somewhere from auto-gen */ - int no; - mHm_hs_c* home; - u8 haniwa_msg_buf[HANIWA_MESSAGE_LEN]; - u16* item_p; - u16* src_p; - int i; - u8* haniwa_msg_p; - int j; + int no; + mHm_hs_c* home; + u8 haniwa_msg_buf[HANIWA_MESSAGE_LEN]; + u16* item_p; + u16* src_p; + int i; + u8* haniwa_msg_p; + int j; - no = home_no & 3; - home = Save_GetPointer(homes[no]); - bzero(home, sizeof(mHm_hs_c)); - mPr_ClearPersonalID(&home->ownerID); - bcopy(l_proom_s_tmp, home->floors[mHm_ROOM_MAIN].layer_main.items, (UT_X_NUM * UT_Z_NUM) * sizeof(u16)); - home->floors[mHm_ROOM_MAIN].layer_main.ftr_switch = 0; - *((u32*)&home->floors[mHm_ROOM_MAIN].layer_main.ftr_switch + 1) = 0; /* ftr_switch might be a union? */ - *((u32*)&home->floors[mHm_ROOM_MAIN].layer_main.ftr_switch + 0) = 0; + no = home_no & 3; + home = Save_GetPointer(homes[no]); + bzero(home, sizeof(mHm_hs_c)); + mPr_ClearPersonalID(&home->ownerID); + bcopy(l_proom_s_tmp, home->floors[mHm_ROOM_MAIN].layer_main.items, (UT_X_NUM * UT_Z_NUM) * sizeof(u16)); + home->floors[mHm_ROOM_MAIN].layer_main.ftr_switch = 0; + *((u32*)&home->floors[mHm_ROOM_MAIN].layer_main.ftr_switch + 1) = 0; /* ftr_switch might be a union? */ + *((u32*)&home->floors[mHm_ROOM_MAIN].layer_main.ftr_switch + 0) = 0; - item_p = (u16*)home->floors[mHm_ROOM_BASEMENT].layer_main.items; - src_p = l_player_room_bm_utinfo; - for (i = 0; i < UT_X_NUM * UT_Z_NUM; i++) { - *item_p++ = *src_p++; - } + item_p = (u16*)home->floors[mHm_ROOM_BASEMENT].layer_main.items; + src_p = l_player_room_bm_utinfo; + for (i = 0; i < UT_X_NUM * UT_Z_NUM; i++) { + *item_p++ = *src_p++; + } - item_p = ((u16*)home->floors[mHm_ROOM_UPPER].layer_main.items); - src_p = l_player_room_2_utinfo; - for (i = 0; i < UT_X_NUM * UT_Z_NUM; i++) { - *item_p++ = *src_p++; - } + item_p = ((u16*)home->floors[mHm_ROOM_UPPER].layer_main.items); + src_p = l_player_room_2_utinfo; + for (i = 0; i < UT_X_NUM * UT_Z_NUM; i++) { + *item_p++ = *src_p++; + } - mMl_clear_mail_box(home->mailbox, HOME_MAILBOX_SIZE); - Save_Set(homes[no].outlook_pal, no); - Save_Set(homes[no].next_outlook_pal, no); - mCkRh_InitGokiSaveData_1Room_ByHomeData(home); - mHm_SetDefaultPlayerRoomData(no); + mMl_clear_mail_box(home->mailbox, HOME_MAILBOX_SIZE); + Save_Set(homes[no].outlook_pal, no); + Save_Set(homes[no].next_outlook_pal, no); + mCkRh_InitGokiSaveData_1Room_ByHomeData(home); + mHm_SetDefaultPlayerRoomData(no); - haniwa_msg_p = home->haniwa.message; - for (j = 0; j < HANIWA_MSG_LINES; j++) { - int len; + haniwa_msg_p = home->haniwa.message; + for (j = 0; j < HANIWA_MSG_LINES; j++) { + int len; - mString_Load_StringFromRom(haniwa_msg_buf, HANIWA_MESSAGE_LEN, haniwa_msg[j]); - len = mMl_strlen(haniwa_msg_buf, HANIWA_MESSAGE_LEN, CHAR_SPACE); - haniwa_msg_buf[len] = CHAR_NEW_LINE; - mem_copy(haniwa_msg_p, haniwa_msg_buf, len + 1); - haniwa_msg_p += len + 1; - } + mString_Load_StringFromRom(haniwa_msg_buf, HANIWA_MESSAGE_LEN, haniwa_msg[j]); + len = mMl_strlen(haniwa_msg_buf, HANIWA_MESSAGE_LEN, CHAR_SPACE); + haniwa_msg_buf[len] = CHAR_NEW_LINE; + mem_copy(haniwa_msg_p, haniwa_msg_buf, len + 1); + haniwa_msg_p += len + 1; + } - Save_Set(keep_house_size[no], 0); - Save_Set(homes[no].door_original, 0xFF); + Save_Set(keep_house_size[no], 0); + Save_Set(homes[no].door_original, 0xFF); } /** * @brief Clears save data for all homes. **/ extern void mHm_ClearAllHomeInfo() { - int i; + int i; - for (i = 0; i < PLAYER_NUM; i++) { - mHm_ClearHomeInfo(i); - } + for (i = 0; i < PLAYER_NUM; i++) { + mHm_ClearHomeInfo(i); + } } /** * @brief Sets common_data's 'now_home' pointer to the current player's home. **/ extern void mHm_SetNowHome() { - mHm_hs_c* now_home = NULL; + mHm_hs_c* now_home = NULL; - if (Common_Get(player_no) < PLAYER_NUM) { - now_home = Save_GetPointer(homes[mHS_get_arrange_idx(Common_Get(player_no))]); - } + if (Common_Get(player_no) < PLAYER_NUM) { + now_home = Save_GetPointer(homes[mHS_get_arrange_idx(Common_Get(player_no))]); + } - Common_Set(now_home, now_home); + Common_Set(now_home, now_home); } /* sizeof(mHm_player_room_default_data_c) == 0x10 */ typedef struct { - /* 0x00 */ u8 wall_num; - /* 0x01 */ u8 floor_num; - /* 0x04 */ int item_ut_x; - /* 0x08 */ int item_ut_z; - /* 0x0C */ mActor_name_t item; + /* 0x00 */ u8 wall_num; + /* 0x01 */ u8 floor_num; + /* 0x04 */ int item_ut_x; + /* 0x08 */ int item_ut_z; + /* 0x0C */ mActor_name_t item; } mHm_player_room_default_data_c; /* list of default properties for each house */ static mHm_player_room_default_data_c l_mHm_player_room_default_data[PLAYER_NUM] = { - { 3, 38, 4, 1, FTR_TAPEDECK }, /* Top-left house, stone wall & old flooring */ - { 41, 42, 4, 1, FTR_TAPEDECK }, /* Top-right house, wood panelling & steel flooring */ - { 55, 5, 4, 1, FTR_TAPEDECK }, /* Bottom-left house, shanty wall & birch flooring */ - { 42, 34, 4, 1, FTR_TAPEDECK } /* Bottom-right house, concrete wall & charcoal tile */ + { 3, 38, 4, 1, FTR_TAPEDECK }, /* Top-left house, stone wall & old flooring */ + { 41, 42, 4, 1, FTR_TAPEDECK }, /* Top-right house, wood panelling & steel flooring */ + { 55, 5, 4, 1, FTR_TAPEDECK }, /* Bottom-left house, shanty wall & birch flooring */ + { 42, 34, 4, 1, FTR_TAPEDECK } /* Bottom-right house, concrete wall & charcoal tile */ }; /** * @brief Sets the default data for a given home. - * + * * @param home_no Index of the home which will receive the default data **/ extern void mHm_SetDefaultPlayerRoomData(int home_no) { - int i; + int i; - int ut_x = l_mHm_player_room_default_data[home_no & 3].item_ut_x; - int ut_z = l_mHm_player_room_default_data[home_no & 3].item_ut_z; + int ut_x = l_mHm_player_room_default_data[home_no & 3].item_ut_x; + int ut_z = l_mHm_player_room_default_data[home_no & 3].item_ut_z; - Save_Set(homes[home_no & 3].floors[mHm_ROOM_MAIN].layer_main.items[ut_z][ut_x], l_mHm_player_room_default_data[home_no & 3].item); - Save_Set(homes[home_no & 3].floors[mHm_ROOM_MAIN].layer_main.items[1][1], FTR_ORANGEBOX); - Save_Set(homes[home_no & 3].floors[mHm_ROOM_MAIN].layer_secondary.items[1][1], ITM_DIARY00); + Save_Set(homes[home_no & 3].floors[mHm_ROOM_MAIN].layer_main.items[ut_z][ut_x], + l_mHm_player_room_default_data[home_no & 3].item); + Save_Set(homes[home_no & 3].floors[mHm_ROOM_MAIN].layer_main.items[1][1], FTR_ORANGEBOX); + Save_Set(homes[home_no & 3].floors[mHm_ROOM_MAIN].layer_secondary.items[1][1], ITM_DIARY00); - for (i = 0; i < mHm_ROOM_NUM; i++) { - Save_Set(homes[home_no & 3].floors[i].wall_floor.flooring_idx, l_mHm_player_room_default_data[home_no & 3].floor_num); - Save_Set(homes[home_no & 3].floors[i].wall_floor.wallpaper_idx, l_mHm_player_room_default_data[home_no & 3].wall_num); - } + for (i = 0; i < mHm_ROOM_NUM; i++) { + Save_Set(homes[home_no & 3].floors[i].wall_floor.flooring_idx, + l_mHm_player_room_default_data[home_no & 3].floor_num); + Save_Set(homes[home_no & 3].floors[i].wall_floor.wallpaper_idx, + l_mHm_player_room_default_data[home_no & 3].wall_num); + } } /** * @brief Initializes the home's owner id to the given player's id. - * + * * @param home Pointer to the mHm_hs_c home which will be updated * @param player_no Index of the player whose id will be used **/ extern void mHm_InitHomeInfo(mHm_hs_c* home, int player_no) { - mPr_CopyPersonalID(&home->ownerID, Save_GetPointer(private[player_no].player_ID)); + mPr_CopyPersonalID(&home->ownerID, Save_GetPointer(private_data[player_no].player_ID)); } /** * @brief Sets/clears the wall and door layout for a given room. - * + * * @param dst Pointer to the room item actor data * @param roomtype Type of room to select correct room data (0-3) * @param set when TRUE copy data, when FALSE clear data **/ static void mHm_ChangeWallDoorFG(mActor_name_t* dst, int roomtype, int set) { - static mActor_name_t* player_room_tmp_table[mHm_ROOMTYPE_NUM] = { - l_proom_s_tmp, /* small room layout (default) */ - l_proom_m_tmp, /* medium room layout */ - l_proom_l_tmp, /* large room layout */ - l_proom_cottage_tmp /* island cottage layout */ - }; + static mActor_name_t* player_room_tmp_table[mHm_ROOMTYPE_NUM] = { + l_proom_s_tmp, /* small room layout (default) */ + l_proom_m_tmp, /* medium room layout */ + l_proom_l_tmp, /* large room layout */ + l_proom_cottage_tmp /* island cottage layout */ + }; - mActor_name_t* src; - int i; + mActor_name_t* src; + int i; - if (roomtype < mHm_ROOMTYPE_SMALL || roomtype >= mHm_ROOMTYPE_NUM) { - roomtype = mHm_ROOMTYPE_SMALL; - } - - src = player_room_tmp_table[roomtype]; - for (i = 0; i < UT_X_NUM * UT_Z_NUM; i++) { - if (*src != EMPTY_NO) { - if (set == FALSE) { - *dst = EMPTY_NO; /* clear */ - } - else { - *dst = *src; /* set */ - } + if (roomtype < mHm_ROOMTYPE_SMALL || roomtype >= mHm_ROOMTYPE_NUM) { + roomtype = mHm_ROOMTYPE_SMALL; } - src++; - dst++; - } + src = player_room_tmp_table[roomtype]; + for (i = 0; i < UT_X_NUM * UT_Z_NUM; i++) { + if (*src != EMPTY_NO) { + if (set == FALSE) { + *dst = EMPTY_NO; /* clear */ + } else { + *dst = *src; /* set */ + } + } + + src++; + dst++; + } } /** * @brief Clears the wall & door data for a room. - * + * * @param items Pointer to the room actor items * @param roomtype Type of room to clear **/ static void mHm_EraseWallDoor(mActor_name_t* items, int roomtype) { - mHm_ChangeWallDoorFG(items, roomtype, FALSE); + mHm_ChangeWallDoorFG(items, roomtype, FALSE); } /** * @brief Sets the wall & door data for a room. - * + * * @param items Pointer to the room actor items * @param roomtype Type of room to clear **/ static void mHm_SetWallDoor(mActor_name_t* items, int roomtype) { - mHm_ChangeWallDoorFG(items, roomtype, TRUE); + mHm_ChangeWallDoorFG(items, roomtype, TRUE); } /** * @brief Updates the wall & door data for the main room. - * + * * @param home Pointer to the mHm_hs_c home to update * @param home_size Size of the home (0-4, but only 1-4 should be used for this function) **/ static void mHm_RehouseWallDoor(mHm_hs_c* home, int home_size) { - static int room_size[mHm_HOMESIZE_NUM] = { - mHm_ROOMTYPE_SMALL, /* mHm_HOMESIZE_SMALL */ - mHm_ROOMTYPE_MEDIUM, /* mHm_HOMESIZE_MEDIUM */ - mHm_ROOMTYPE_LARGE, /* mHm_HOMESIZE_LARGE */ - mHm_ROOMTYPE_LARGE, /* mHm_HOMESIZE_UPPER */ - mHm_ROOMTYPE_SMALL /* mHm_HOMESIZE_STATUE */ - }; + static int room_size[mHm_HOMESIZE_NUM] = { + mHm_ROOMTYPE_SMALL, /* mHm_HOMESIZE_SMALL */ + mHm_ROOMTYPE_MEDIUM, /* mHm_HOMESIZE_MEDIUM */ + mHm_ROOMTYPE_LARGE, /* mHm_HOMESIZE_LARGE */ + mHm_ROOMTYPE_LARGE, /* mHm_HOMESIZE_UPPER */ + mHm_ROOMTYPE_SMALL /* mHm_HOMESIZE_STATUE */ + }; - int new_size; - int old_size; + int new_size; + int old_size; - if (home_size < mHm_HOMESIZE_MEDIUM || home_size >= mHm_HOMESIZE_NUM) { - home_size = mHm_HOMESIZE_MEDIUM; - } + if (home_size < mHm_HOMESIZE_MEDIUM || home_size >= mHm_HOMESIZE_NUM) { + home_size = mHm_HOMESIZE_MEDIUM; + } - old_size = room_size[home_size - 1]; - new_size = room_size[home_size]; + old_size = room_size[home_size - 1]; + new_size = room_size[home_size]; - mHm_EraseWallDoor((u16*)home->floors[mHm_ROOM_MAIN].layer_main.items, old_size); - mHm_EraseWallDoor((u16*)home->floors[mHm_ROOM_MAIN].layer_secondary.items, old_size); - mHm_SetWallDoor((u16*)home->floors[mHm_ROOM_MAIN].layer_main.items, new_size); - mHm_SetWallDoor((u16*)home->floors[mHm_ROOM_MAIN].layer_secondary.items, new_size); + mHm_EraseWallDoor((u16*)home->floors[mHm_ROOM_MAIN].layer_main.items, old_size); + mHm_EraseWallDoor((u16*)home->floors[mHm_ROOM_MAIN].layer_secondary.items, old_size); + mHm_SetWallDoor((u16*)home->floors[mHm_ROOM_MAIN].layer_main.items, new_size); + mHm_SetWallDoor((u16*)home->floors[mHm_ROOM_MAIN].layer_secondary.items, new_size); } -#define CHECK_ORDER_DATE(home, rtc_time) \ - ((home)->size_info.upgrade_order_date.day != (rtc_time)->day || \ - (home)->size_info.upgrade_order_date.month != (rtc_time)->month || \ - (home)->size_info.upgrade_order_date.year != (rtc_time)->year) +#define CHECK_ORDER_DATE(home, rtc_time) \ + ((home)->size_info.upgrade_order_date.day != (rtc_time)->day || \ + (home)->size_info.upgrade_order_date.month != (rtc_time)->month || \ + (home)->size_info.upgrade_order_date.year != (rtc_time)->year) /** * @brief Check if any house should be updated, and if so, update it. **/ extern void mHm_CheckRehouseOrder() { - mHm_hs_c* home = Save_Get(homes); - lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); - int i; + mHm_hs_c* home = Save_Get(homes); + lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); + int i; - for (i = 0; i < PLAYER_NUM; i++) { - if (mPr_NullCheckPersonalID(&home->ownerID) == FALSE) { - if (home->outlook_pal != home->next_outlook_pal) { - home->outlook_pal = home->next_outlook_pal; - } + for (i = 0; i < PLAYER_NUM; i++) { + if (mPr_NullCheckPersonalID(&home->ownerID) == FALSE) { + if (home->outlook_pal != home->next_outlook_pal) { + home->outlook_pal = home->next_outlook_pal; + } - if (home->size_info.size != home->size_info.next_size && home->size_info.next_size < mHm_HOMESIZE_STATUE) { - if (CHECK_ORDER_DATE(home, rtc_time)) { - home->outlook_pal = home->ordered_outlook_pal; - home->next_outlook_pal = home->ordered_outlook_pal; - home->size_info.size = home->size_info.next_size; - home->size_info.renew = TRUE; - mHm_RehouseWallDoor(home, home->size_info.size); + if (home->size_info.size != home->size_info.next_size && home->size_info.next_size < mHm_HOMESIZE_STATUE) { + if (CHECK_ORDER_DATE(home, rtc_time)) { + home->outlook_pal = home->ordered_outlook_pal; + home->next_outlook_pal = home->ordered_outlook_pal; + home->size_info.size = home->size_info.next_size; + home->size_info.renew = TRUE; + mHm_RehouseWallDoor(home, home->size_info.size); + } + } else { + if (home->size_info.basement_ordered) { + if (CHECK_ORDER_DATE(home, rtc_time)) { + mHm_SetBasement(i); + home->size_info.renew = TRUE; + } + } else if (home->size_info.statue_ordered == TRUE) { + if (CHECK_ORDER_DATE(home, rtc_time)) { + home->size_info.next_size = mHm_HOMESIZE_STATUE; + } + } + } } - } - else { - if (home->size_info.basement_ordered) { - if (CHECK_ORDER_DATE(home, rtc_time)) { - mHm_SetBasement(i); - home->size_info.renew = TRUE; - } - } - else if (home->size_info.statue_ordered == TRUE) { - if (CHECK_ORDER_DATE(home, rtc_time)) { - home->size_info.next_size = mHm_HOMESIZE_STATUE; - } - } - } + home++; } - home++; - } - for (i = 0; i < PLAYER_NUM; i++) { - u32* state_flags = Save_GetPointer(private[i].state_flags); - *state_flags &= (~0x200); /* TODO: these need an enum/defines */ - } + for (i = 0; i < PLAYER_NUM; i++) { + u32* state_flags = Save_GetPointer(private_data[i].state_flags); + *state_flags &= (~0x200); /* TODO: these need an enum/defines */ + } } /** * @brief Stores the player's current house size for later. - * + * * @param player_no Index of the player whose house size will be saved * @return TRUE/FALSE house size was kept **/ extern int mHm_KeepHouseSize(u8 player_no) { - int arrange_idx; - mHm_hs_c* home; - u8* keep_house_size; - int res = FALSE; + int arrange_idx; + mHm_hs_c* home; + u8* keep_house_size; + int res = FALSE; - if (player_no < PLAYER_NUM) { - arrange_idx = mHS_get_arrange_idx(player_no); - home = Save_GetPointer(homes[arrange_idx]); - keep_house_size = Save_GetPointer(keep_house_size[arrange_idx]); - - res = TRUE; + if (player_no < PLAYER_NUM) { + arrange_idx = mHS_get_arrange_idx(player_no); + home = Save_GetPointer(homes[arrange_idx]); + keep_house_size = Save_GetPointer(keep_house_size[arrange_idx]); - /* I don't think this is a union or struct due to the unused first bit */ - /* But maybe... perhaps they used a pad bit for the topmost bit unlike other structs */ - *keep_house_size = 0; - *keep_house_size |= home->size_info.size; - *keep_house_size |= home->size_info.next_size << 3; - *keep_house_size |= home->size_info.renew << 6; - } + res = TRUE; - return res; + /* I don't think this is a union or struct due to the unused first bit */ + /* But maybe... perhaps they used a pad bit for the topmost bit unlike other structs */ + *keep_house_size = 0; + *keep_house_size |= home->size_info.size; + *keep_house_size |= home->size_info.next_size << 3; + *keep_house_size |= home->size_info.renew << 6; + } + + return res; } /** * @brief Checks whether the kept house size for a player is the same as the actual size. - * + * * @param player_no The index of the player whose house will be checked * @returns TRUE/FALSE house size and keep house size are the same **/ extern int mHm_CheckKeepHouseSize(u8 player_no) { - int arrange_idx; - mHm_hs_c* home; - u8* keep_house_size; - int res = FALSE; + int arrange_idx; + mHm_hs_c* home; + u8* keep_house_size; + int res = FALSE; - if (player_no < PLAYER_NUM) { - arrange_idx = mHS_get_arrange_idx(player_no); - keep_house_size = Save_GetPointer(keep_house_size[arrange_idx]); - home = Save_Get(homes + arrange_idx); + if (player_no < PLAYER_NUM) { + arrange_idx = mHS_get_arrange_idx(player_no); + keep_house_size = Save_GetPointer(keep_house_size[arrange_idx]); + home = Save_Get(homes + arrange_idx); - if ((*keep_house_size & 7) == home->size_info.size && - ((*keep_house_size >> 3) & 7) == home->size_info.next_size && - ((*keep_house_size >> 6) & 1) == home->size_info.renew) { - res = TRUE; + if ((*keep_house_size & 7) == home->size_info.size && + ((*keep_house_size >> 3) & 7) == home->size_info.next_size && + ((*keep_house_size >> 6) & 1) == home->size_info.renew) { + res = TRUE; + } } - } - return res; + return res; } /** * @brief Updates player house flags to include basement - * + * * @param home_no Index of the house whose basement flag will be enabled * @return TRUE/FALSE was flag set **/ extern int mHm_SetBasement(u8 home_no) { - if (home_no < PLAYER_NUM) { - mHm_flg_c* flags = Save_GetPointer(homes[home_no].flags); - if (flags->has_basement == FALSE) { - flags->has_basement = TRUE; - return TRUE; + if (home_no < PLAYER_NUM) { + mHm_flg_c* flags = Save_GetPointer(homes[home_no].flags); + if (flags->has_basement == FALSE) { + flags->has_basement = TRUE; + return TRUE; + } } - } - return FALSE; + return FALSE; } /** * @brief Sets the default island cottage data - * + * * @param cottage Pointer to the mHm_cottage_c cottage which will receive the default data **/ static void mHm_SetDefaultCottageData(mHm_cottage_c* cottage) { - if (cottage == NULL) { - return; - } + if (cottage == NULL) { + return; + } - cottage->room.wall_floor.flooring_idx = 13; - cottage->room.wall_floor.wallpaper_idx = 13; + cottage->room.wall_floor.flooring_idx = 13; + cottage->room.wall_floor.wallpaper_idx = 13; - cottage->room.layer_main.items[3][3] = FTR_REDALOHASHIRT; - cottage->room.layer_main.items[3][6] = FTR_BLUEALOHASHIRT; - cottage->room.layer_main.items[6][3] = FTR_REDALOHASHIRT; - cottage->room.layer_main.items[6][6] = FTR_BLUEALOHASHIRT; + cottage->room.layer_main.items[3][3] = FTR_REDALOHASHIRT; + cottage->room.layer_main.items[3][6] = FTR_BLUEALOHASHIRT; + cottage->room.layer_main.items[6][3] = FTR_REDALOHASHIRT; + cottage->room.layer_main.items[6][6] = FTR_BLUEALOHASHIRT; } /** * @brief Initialize an mHm_cottage_c cottage. - * + * * @param cottage Pointer to the mHm_cottage_c which will be initialized **/ extern void mHm_InitCottage(mHm_cottage_c* cottage) { - if (cottage != NULL) { - bzero(cottage, sizeof(mHm_cottage_c)); - mHm_SetWallDoor((u16*)cottage->room.layer_main.items, mHm_ROOMTYPE_COTTAGE); - mCkRh_InitGokiSaveData_IslandPlayerRoom(); - mHm_SetDefaultCottageData(cottage); - } + if (cottage != NULL) { + bzero(cottage, sizeof(mHm_cottage_c)); + mHm_SetWallDoor((u16*)cottage->room.layer_main.items, mHm_ROOMTYPE_COTTAGE); + mCkRh_InitGokiSaveData_IslandPlayerRoom(); + mHm_SetDefaultCottageData(cottage); + } } diff --git a/src/m_house.c b/src/m_house.c index ecf3c974..eb332b4d 100644 --- a/src/m_house.c +++ b/src/m_house.c @@ -11,7 +11,7 @@ /** * @brief Initializes the `house_arrangement` variable to its default state. - * + * * The default state is: * Player0: House0 * Player1: House1 @@ -19,98 +19,100 @@ * Player3: House3 **/ extern void mHS_house_init() { - Save_Set(house_arrangement, DEFAULT_ARRANGEMENT); + Save_Set(house_arrangement, DEFAULT_ARRANGEMENT); } /** * @brief Retrieves the house arrangement value for a given player index. - * + * * @return The house index for the player. **/ extern int mHS_get_arrange_idx(int player_no) { - return ARRANGE_GET(player_no); + return ARRANGE_GET(player_no); } /** * @brief Returns the index of the player who owns the house index from `house_arrangement`. - * + * * @return The owning player index for the house. **/ extern int mHS_get_pl_no(int house_no) { - int i; - u32 arrangement = Save_Get(house_arrangement); + int i; + u32 arrangement = Save_Get(house_arrangement); - for (i = 0; i < PLAYER_NUM; i++) { - if ((arrangement & 3) == house_no) { - break; + for (i = 0; i < PLAYER_NUM; i++) { + if ((arrangement & 3) == house_no) { + break; + } + + arrangement >>= 2; } - arrangement >>= 2; - } - - return i; + return i; } /** * @brief Returns the index of the player who owns a house by checking house owner IDs. - * + * * @return The owning player index for the house. **/ extern int mHS_get_pl_no_detail(int home_no) { - mHm_hs_c* home = Save_Get(homes + (home_no & 3)); + mHm_hs_c* home = Save_Get(homes + (home_no & 3)); - if (mPr_NullCheckPersonalID(&home->ownerID) == FALSE) { - int i; - for (i = 0; i < PLAYER_NUM; i++) { - if (mPr_CheckCmpPersonalID(&home->ownerID, Save_GetPointer(private[i].player_ID))) { - return i; - } + if (mPr_NullCheckPersonalID(&home->ownerID) == FALSE) { + int i; + for (i = 0; i < PLAYER_NUM; i++) { + if (mPr_CheckCmpPersonalID(&home->ownerID, Save_GetPointer(private_data[i].player_ID))) { + return i; + } + } } - } - return -1; + return -1; } /* TODO: this probably had some macro.. maybe refactor? */ /** * @brief Sets the house arrangement value for `player_no` to `house_no`. - * + * * This function also swaps houses with whichever player is set in house_arrangement * with the house currently assigned to `player_no`. - * + * * @return TRUE when successfully set, FALSE otherwise. **/ extern int mHS_set_use(int player_no, int house_no) { - int now_player_no; - u32 house_arrangement; - int mask; - int plr_shift; - int new_shift; - int res = FALSE; + int now_player_no; + u32 house_arrangement; + int mask; + int plr_shift; + int new_shift; + int res = FALSE; - if (player_no < PLAYER_NUM && house_no < PLAYER_NUM) { - now_player_no = mHS_get_pl_no(house_no); - if (mPr_NullCheckPersonalID(Save_GetPointer(homes[house_no].ownerID)) == TRUE) { - if (now_player_no != player_no) { - plr_shift = player_no * 2; - new_shift = now_player_no * 2; - house_arrangement = Save_Get(house_arrangement); - - /* create bitmask to clear previous saved indices */ - mask = 0xffffffff; - mask ^= (3 << plr_shift) | (3 << new_shift); /* Remove the bits relating to both player indicies */ + if (player_no < PLAYER_NUM && house_no < PLAYER_NUM) { + now_player_no = mHS_get_pl_no(house_no); + if (mPr_NullCheckPersonalID(Save_GetPointer(homes[house_no].ownerID)) == TRUE) { + if (now_player_no != player_no) { + plr_shift = player_no * 2; + new_shift = now_player_no * 2; + house_arrangement = Save_Get(house_arrangement); - /* Swap the player who currently owns our selected house with whatever house our player "owns" currently */ - Save_Set(house_arrangement, ( - ((house_arrangement & mask) | /* Clear old values */ - (((house_arrangement >> plr_shift) & 3)) << new_shift) | /* move current player house idx to old player house idx */ - (house_no << plr_shift))); /* set current player new house idx */ - } + /* create bitmask to clear previous saved indices */ + mask = 0xffffffff; + mask ^= (3 << plr_shift) | (3 << new_shift); /* Remove the bits relating to both player indicies */ - mHm_InitHomeInfo(Save_Get(homes + house_no), player_no); - res = TRUE; + /* Swap the player who currently owns our selected house with whatever house our player "owns" currently + */ + Save_Set(house_arrangement, + (((house_arrangement & mask) | /* Clear old values */ + (((house_arrangement >> plr_shift) & 3)) + << new_shift) | /* move current player house idx to old player house idx */ + (house_no << plr_shift))); /* set current player new house idx */ + } + + mHm_InitHomeInfo(Save_Get(homes + house_no), player_no); + res = TRUE; + } } - } - return res; + return res; } diff --git a/src/m_mail.c b/src/m_mail.c index 63b8c4e8..046d0ffc 100644 --- a/src/m_mail.c +++ b/src/m_mail.c @@ -16,365 +16,354 @@ static u8 footer[MAIL_FOOTER2_LEN]; static u8 header[MAIL_HEADER2_LEN]; extern int mMl_strlen(u8* str, int size, u8 end_char) { - u32 end_p = size + (u32)str; - int i; + u32 end_p = size + (u32)str; + int i; - end_p--; - for (size; size != 0; size--) { - - if (*(u8*)end_p != end_char) { - return size; - } - end_p--; - } + for (size; size != 0; size--) { - return 0; + if (*(u8*)end_p != end_char) { + return size; + } + + end_p--; + } + + return 0; } extern int mMl_strlen2(int* found, u8* str, int size, u8 end_char) { - int len = 0; + int len = 0; - if (found != NULL) { - *found = FALSE; - } - - for (size; size != 0; size--) { - len++; - if (*str == end_char) { - if (found != NULL) { - *found = TRUE; - } - break; + if (found != NULL) { + *found = FALSE; } - str++; - } + for (size; size != 0; size--) { + len++; + if (*str == end_char) { + if (found != NULL) { + *found = TRUE; + } + break; + } - return len; + str++; + } + + return len; } extern void mMl_clear_mail_header(Mail_hdr_c* header) { - mPr_ClearPersonalID(&header->recipient.personalID); - header->recipient.type = mMl_NAME_TYPE_CLEAR; + mPr_ClearPersonalID(&header->recipient.personalID); + header->recipient.type = mMl_NAME_TYPE_CLEAR; - mPr_ClearPersonalID(&header->sender.personalID); - header->sender.type = mMl_NAME_TYPE_CLEAR; + mPr_ClearPersonalID(&header->sender.personalID); + header->sender.type = mMl_NAME_TYPE_CLEAR; } extern void mMl_clear_mail(Mail_c* mail) { - bzero(mail, sizeof(Mail_c)); - mMl_clear_mail_header(&mail->header); - mem_clear(mail->content.header, MAIL_HEADER_LEN + MAIL_BODY_LEN + MAIL_FOOTER_LEN, CHAR_SPACE); - mail->content.font = -1; + bzero(mail, sizeof(Mail_c)); + mMl_clear_mail_header(&mail->header); + mem_clear(mail->content.header, MAIL_HEADER_LEN + MAIL_BODY_LEN + MAIL_FOOTER_LEN, CHAR_SPACE); + mail->content.font = -1; } extern void mMl_clear_mail_box(Mail_c* mail, int num) { - while (num != 0) { - num--; - mMl_clear_mail(mail); - mail++; - } + while (num != 0) { + num--; + mMl_clear_mail(mail); + mail++; + } } extern int mMl_check_not_used_mail(Mail_c* mail) { - int res = FALSE; - if (mail->content.font == 0xFF) { - res = TRUE; - } + int res = FALSE; + if (mail->content.font == 0xFF) { + res = TRUE; + } - return res; + return res; } extern void mMl_copy_header_name(Mail_c* dst, Mail_c* src) { - dst->header.recipient.type = src->header.recipient.type; - mPr_CopyPersonalID(&dst->header.recipient.personalID, &src->header.recipient.personalID); + dst->header.recipient.type = src->header.recipient.type; + mPr_CopyPersonalID(&dst->header.recipient.personalID, &src->header.recipient.personalID); } extern void mMl_set_to_plname(Mail_c* mail, PersonalID_c* pid) { - mPr_CopyPersonalID(&mail->header.recipient.personalID, pid); - mail->header.recipient.type = mMl_NAME_TYPE_PLAYER; + mPr_CopyPersonalID(&mail->header.recipient.personalID, pid); + mail->header.recipient.type = mMl_NAME_TYPE_PLAYER; } extern void mMl_set_playername(Mail_c* mail, PersonalID_c* pid) { - mPr_CopyPersonalID(&mail->header.sender.personalID, pid); - mail->header.sender.type = mMl_NAME_TYPE_PLAYER; + mPr_CopyPersonalID(&mail->header.sender.personalID, pid); + mail->header.sender.type = mMl_NAME_TYPE_PLAYER; } extern void mMl_init_mail(Mail_c* mail, PersonalID_c* pid) { - mMl_clear_mail(mail); - mMl_set_playername(mail, pid); - mail->content.font = mMl_FONT_SEND; - mail->content.mail_type = 0; - mail->content.paper_type = 0; + mMl_clear_mail(mail); + mMl_set_playername(mail, pid); + mail->content.font = mMl_FONT_SEND; + mail->content.mail_type = 0; + mail->content.paper_type = 0; } extern int mMl_chk_mail_free_space(Mail_c* mail, int num) { - int free_idx; + int free_idx; - for (free_idx = 0; free_idx < num; free_idx++) { - if (mMl_check_not_used_mail(mail) == TRUE) { - return free_idx; + for (free_idx = 0; free_idx < num; free_idx++) { + if (mMl_check_not_used_mail(mail) == TRUE) { + return free_idx; + } + + mail++; } - mail++; - } - - return -1; + return -1; } extern int mMl_count_use_mail_space(Mail_c* mail, int num) { - int used = 0; - int i; + int used = 0; + int i; - for (i = 0; i < num; i++) { - if (mMl_check_not_used_mail(mail) != TRUE) { - used++; + for (i = 0; i < num; i++) { + if (mMl_check_not_used_mail(mail) != TRUE) { + used++; + } + + mail++; } - mail++; - } - - return used; + return used; } extern void mMl_copy_mail(Mail_c* dst, Mail_c* src) { - mem_copy((u8*)dst, (u8*)src, sizeof(Mail_c)); + mem_copy((u8*)dst, (u8*)src, sizeof(Mail_c)); } extern void mMl_clear_mail_header_common(Mail_hs_c* header) { - header->header_back_start = -1; - header->unknown = 0; - mem_clear(header->header, MAIL_HEADER_LEN, CHAR_SPACE); - mem_clear(header->footer, MAIL_FOOTER_LEN, CHAR_SPACE); + header->header_back_start = -1; + header->unknown = 0; + mem_clear(header->header, MAIL_HEADER_LEN, CHAR_SPACE); + mem_clear(header->footer, MAIL_FOOTER_LEN, CHAR_SPACE); } extern void mMl_set_mail_name_npcinfo(Mail_nm_c* name, AnmPersonalID_c* anm_pid) { - u8 animal_name[PLAYER_NAME_LEN]; - - name->type = mMl_NAME_TYPE_NPC; - mNpc_GetNpcWorldNameAnm(animal_name, anm_pid); - mPr_CopyPlayerName(name->personalID.player_name, animal_name); - name->personalID.land_id = anm_pid->land_id; - mLd_CopyLandName(name->personalID.land_name, anm_pid->land_name); - name->personalID.player_id = (((anm_pid->npc_id & 0xFF) << 8) | anm_pid->name_id); + u8 animal_name[PLAYER_NAME_LEN]; + + name->type = mMl_NAME_TYPE_NPC; + mNpc_GetNpcWorldNameAnm(animal_name, anm_pid); + mPr_CopyPlayerName(name->personalID.player_name, animal_name); + name->personalID.land_id = anm_pid->land_id; + mLd_CopyLandName(name->personalID.land_name, anm_pid->land_name); + name->personalID.player_id = (((anm_pid->npc_id & 0xFF) << 8) | anm_pid->name_id); } extern int mMl_get_npcinfo_from_mail_name(AnmPersonalID_c* anm_pid, Mail_nm_c* name) { - int res = FALSE; + int res = FALSE; - if (name->type == mMl_NAME_TYPE_NPC) { - anm_pid->npc_id = ((name->personalID.player_id & 0xFF00) >> 8) | NPC_START; - anm_pid->land_id = name->personalID.land_id; - mLd_CopyLandName(anm_pid->land_name, name->personalID.land_name); - anm_pid->name_id = name->personalID.player_id; - anm_pid->looks = mNpc_GetLooks(anm_pid->npc_id); + if (name->type == mMl_NAME_TYPE_NPC) { + anm_pid->npc_id = ((name->personalID.player_id & 0xFF00) >> 8) | NPC_START; + anm_pid->land_id = name->personalID.land_id; + mLd_CopyLandName(anm_pid->land_name, name->personalID.land_name); + anm_pid->name_id = name->personalID.player_id; + anm_pid->looks = mNpc_GetLooks(anm_pid->npc_id); - res = TRUE; - } + res = TRUE; + } - return res; + return res; } extern int mMl_hunt_for_send_address(Mail_c* mail) { - int i; + int i; - if (mail->header.recipient.type != mMl_NAME_TYPE_PLAYER) { - return -1; - } - - for (i = 0; i < mHS_HOUSE_NUM; i++) { - if (mPr_CheckCmpPersonalID(&Save_Get(homes[i]).ownerID, &mail->header.recipient.personalID) == TRUE) { - return i; + if (mail->header.recipient.type != mMl_NAME_TYPE_PLAYER) { + return -1; } - } - return -1; + for (i = 0; i < mHS_HOUSE_NUM; i++) { + if (mPr_CheckCmpPersonalID(&Save_Get(homes[i]).ownerID, &mail->header.recipient.personalID) == TRUE) { + return i; + } + } + + return -1; } extern int mMl_check_send_mail(Mail_c* mail) { - return mail->content.font == mMl_FONT_SEND; + return mail->content.font == mMl_FONT_SEND; } extern int mMl_check_set_present_myself(Mail_c* mail) { - u8 font = mail->content.font; + u8 font = mail->content.font; - if (font == mMl_FONT_SEND || font == mMl_FONT_3 || font == mMl_FONT_4) { - return TRUE; - } + if (font == mMl_FONT_SEND || font == mMl_FONT_3 || font == mMl_FONT_4) { + return TRUE; + } - return FALSE; + return FALSE; } static void mMl_load_mail_data(Mail_c* mail, int mail_no) { - int header_back_start; + int header_back_start; - mHandbill_Load_HandbillFromRom(mail->content.header, &header_back_start, mail->content.footer, mail->content.body, mail_no); - mail->content.header_back_start = header_back_start; + mHandbill_Load_HandbillFromRom(mail->content.header, &header_back_start, mail->content.footer, mail->content.body, + mail_no); + mail->content.header_back_start = header_back_start; } /* TODO: fix bss ordering */ static void mMl_load_mail_data2(Mail_c* mail, int mail_no) { - //static u8 header[MAIL_HEADER2_LEN]; - //static u8 footer[MAIL_FOOTER2_LEN]; - int header_back_start; + // static u8 header[MAIL_HEADER2_LEN]; + // static u8 footer[MAIL_FOOTER2_LEN]; + int header_back_start; - mHandbill_Load_HandbillFromRom2(header, MAIL_HEADER2_LEN, &header_back_start, footer, MAIL_FOOTER2_LEN, mail->content.body, mail_no); + mHandbill_Load_HandbillFromRom2(header, MAIL_HEADER2_LEN, &header_back_start, footer, MAIL_FOOTER2_LEN, + mail->content.body, mail_no); - bcopy(header, mail->content.header, MAIL_HEADER_LEN); - bcopy(footer, mail->content.footer, MAIL_FOOTER_LEN); - mail->content.header_back_start = header_back_start; + bcopy(header, mail->content.header, MAIL_HEADER_LEN); + bcopy(footer, mail->content.footer, MAIL_FOOTER_LEN); + mail->content.header_back_start = header_back_start; } -static void mMl_get_mail_to_player_com(Mail_c* mail, PersonalID_c* recipient_pid, mActor_name_t present, mActor_name_t paper, u8* sender_name, int mail_no, u32 proc_type, u8 mail_type) { - static void (*get_proc[2])(Mail_c*, int) = { &mMl_load_mail_data, &mMl_load_mail_data2 }; - proc_type %= 2; - - mMl_clear_mail(mail); - (*get_proc[proc_type])(mail, mail_no); - mail->content.font = mMl_FONT_0; - mail->content.mail_type = mail_type; - - mPr_CopyPersonalID(&mail->header.recipient.personalID, recipient_pid); - mail->header.recipient.type = mMl_NAME_TYPE_PLAYER; +static void mMl_get_mail_to_player_com(Mail_c* mail, PersonalID_c* recipient_pid, mActor_name_t present, + mActor_name_t paper, u8* sender_name, int mail_no, u32 proc_type, u8 mail_type) { + static void (*get_proc[2])(Mail_c*, int) = { &mMl_load_mail_data, &mMl_load_mail_data2 }; + proc_type %= 2; - mPr_ClearPersonalID(&mail->header.sender.personalID); - mPr_CopyPlayerName(mail->header.sender.personalID.player_name, sender_name); - mail->header.sender.type = mMl_NAME_TYPE_MUSEUM; - - mail->present = present; - mail->content.paper_type = (paper - ITM_PAPER_START) % PAPER_UNIQUE_NUM; + mMl_clear_mail(mail); + (*get_proc[proc_type])(mail, mail_no); + mail->content.font = mMl_FONT_0; + mail->content.mail_type = mail_type; + + mPr_CopyPersonalID(&mail->header.recipient.personalID, recipient_pid); + mail->header.recipient.type = mMl_NAME_TYPE_PLAYER; + + mPr_ClearPersonalID(&mail->header.sender.personalID); + mPr_CopyPlayerName(mail->header.sender.personalID.player_name, sender_name); + mail->header.sender.type = mMl_NAME_TYPE_MUSEUM; + + mail->present = present; + mail->content.paper_type = (paper - ITM_PAPER_START) % PAPER_UNIQUE_NUM; } -static int mMl_send_mail_box_com(PersonalID_c* recipient_pid, int player_no, Mail_c* mail, mActor_name_t present, mActor_name_t paper, int mail_no, u8* sender_name, u32 proc_type, u8 mail_type) { - mHm_hs_c* house; - int res = FALSE; +static int mMl_send_mail_box_com(PersonalID_c* recipient_pid, int player_no, Mail_c* mail, mActor_name_t present, + mActor_name_t paper, int mail_no, u8* sender_name, u32 proc_type, u8 mail_type) { + mHm_hs_c* house; + int res = FALSE; - house = Save_GetPointer(homes[mHS_get_arrange_idx(player_no)]); + house = Save_GetPointer(homes[mHS_get_arrange_idx(player_no)]); - if (mPr_CheckCmpPersonalID(recipient_pid, &house->ownerID) == TRUE) { - int free_idx = mMl_chk_mail_free_space(house->mailbox, HOME_MAILBOX_SIZE); - if (free_idx != -1) { - mMl_get_mail_to_player_com(mail, recipient_pid, present, paper, sender_name, mail_no, proc_type, mail_type); - mMl_copy_mail(house->mailbox + free_idx, mail); - res = TRUE; + if (mPr_CheckCmpPersonalID(recipient_pid, &house->ownerID) == TRUE) { + int free_idx = mMl_chk_mail_free_space(house->mailbox, HOME_MAILBOX_SIZE); + if (free_idx != -1) { + mMl_get_mail_to_player_com(mail, recipient_pid, present, paper, sender_name, mail_no, proc_type, mail_type); + mMl_copy_mail(house->mailbox + free_idx, mail); + res = TRUE; + } } - } - return res; + return res; } -extern int mMl_send_mail_box(PersonalID_c* recipient_pid, int player_no, Mail_c* mail, mActor_name_t present, mActor_name_t paper, int mail_no, u8* sender_name, u32 proc_type) { - return mMl_send_mail_box_com(recipient_pid, player_no, mail, present, paper, mail_no, sender_name, proc_type, 0); +extern int mMl_send_mail_box(PersonalID_c* recipient_pid, int player_no, Mail_c* mail, mActor_name_t present, + mActor_name_t paper, int mail_no, u8* sender_name, u32 proc_type) { + return mMl_send_mail_box_com(recipient_pid, player_no, mail, present, paper, mail_no, sender_name, proc_type, 0); } -static int mMl_send_mail_postoffice_com(Mail_c* mail, PersonalID_c* recipient_pid, int player_no, mActor_name_t present, mActor_name_t paper, int mail_no, u8* sender_name, u32 proc_type, u8 mail_type) { - int res = FALSE; +static int mMl_send_mail_postoffice_com(Mail_c* mail, PersonalID_c* recipient_pid, int player_no, mActor_name_t present, + mActor_name_t paper, int mail_no, u8* sender_name, u32 proc_type, + u8 mail_type) { + int res = FALSE; - if (mPO_get_keep_mail_sum() < mPO_MAIL_STORAGE_SIZE) { - mMl_get_mail_to_player_com(mail, recipient_pid, present, paper, sender_name, mail_no, proc_type, mail_type); - res = mPO_receipt_proc(mail, mPO_SENDTYPE_MAIL); - } + if (mPO_get_keep_mail_sum() < mPO_MAIL_STORAGE_SIZE) { + mMl_get_mail_to_player_com(mail, recipient_pid, present, paper, sender_name, mail_no, proc_type, mail_type); + res = mPO_receipt_proc(mail, mPO_SENDTYPE_MAIL); + } - return res; + return res; } -extern int mMl_send_mail_postoffice(PersonalID_c* recipient_pid, int player_no, mActor_name_t present, mActor_name_t paper, int mail_no, u8* sender_name, u32 proc_type, u8 mail_type) { - return mMl_send_mail_postoffice_com(&l_ml_mail, recipient_pid, player_no, present, paper, mail_no, sender_name, proc_type, mail_type); +extern int mMl_send_mail_postoffice(PersonalID_c* recipient_pid, int player_no, mActor_name_t present, + mActor_name_t paper, int mail_no, u8* sender_name, u32 proc_type, u8 mail_type) { + return mMl_send_mail_postoffice_com(&l_ml_mail, recipient_pid, player_no, present, paper, mail_no, sender_name, + proc_type, mail_type); } -static int mMl_send_mail_com(PersonalID_c* recipient_pid, int player_no, mActor_name_t present, mActor_name_t paper, int mail_no, u8* sender_name, u32 proc_type, u8 mail_type) { - Mail_c* mail = &l_ml_mail; - int res = mMl_send_mail_box_com(recipient_pid, player_no, mail, present, paper, mail_no, sender_name, proc_type, mail_type); - if (res != TRUE) { - res = mMl_send_mail_postoffice_com(mail, recipient_pid, player_no, present, paper, mail_no, sender_name, proc_type, mail_type); - } +static int mMl_send_mail_com(PersonalID_c* recipient_pid, int player_no, mActor_name_t present, mActor_name_t paper, + int mail_no, u8* sender_name, u32 proc_type, u8 mail_type) { + Mail_c* mail = &l_ml_mail; + int res = mMl_send_mail_box_com(recipient_pid, player_no, mail, present, paper, mail_no, sender_name, proc_type, + mail_type); + if (res != TRUE) { + res = mMl_send_mail_postoffice_com(mail, recipient_pid, player_no, present, paper, mail_no, sender_name, + proc_type, mail_type); + } - return res; + return res; } -extern int mMl_send_mail(PersonalID_c* recipient_pid, int player_no, mActor_name_t present, mActor_name_t paper, int mail_no, u8* sender_name, u32 proc_type) { - return mMl_send_mail_com(recipient_pid, player_no, present, paper, mail_no, sender_name, proc_type, 0); +extern int mMl_send_mail(PersonalID_c* recipient_pid, int player_no, mActor_name_t present, mActor_name_t paper, + int mail_no, u8* sender_name, u32 proc_type) { + return mMl_send_mail_com(recipient_pid, player_no, present, paper, mail_no, sender_name, proc_type, 0); } typedef struct post_office_gift_info_s { - int mail_no; - mActor_name_t present; - mActor_name_t paper; - int player_received_flag; - u32 required_balance; + int mail_no; + mActor_name_t present; + mActor_name_t paper; + int player_received_flag; + u32 required_balance; } mMl_PostOffice_Info_c; static mMl_PostOffice_Info_c l_mml_postoffice_info[mMl_POSTOFFICE_GIFT_NUM] = { - { - 0x0246, - FTR_TISSUE, - ITM_PAPER00, - mPr_FLAG_POSTOFFICE_GIFT0, - 1000000 - }, - { - 0x0247, - FTR_PIGGY_BANK, - ITM_PAPER00, - mPr_FLAG_POSTOFFICE_GIFT1, - 10000000 - }, - { - 0x0248, - FTR_MAILBOX, - ITM_PAPER00, - mPr_FLAG_POSTOFFICE_GIFT2, - 100000000 - }, - { - 0x0249, - FTR_POST_MODEL, - ITM_PAPER00, - mPr_FLAG_POSTOFFICE_GIFT3, - 999999999 - } + { 0x0246, FTR_TISSUE, ITM_PAPER00, mPr_FLAG_POSTOFFICE_GIFT0, 1000000 }, + { 0x0247, FTR_PIGGY_BANK, ITM_PAPER00, mPr_FLAG_POSTOFFICE_GIFT1, 10000000 }, + { 0x0248, FTR_MAILBOX, ITM_PAPER00, mPr_FLAG_POSTOFFICE_GIFT2, 100000000 }, + { 0x0249, FTR_POST_MODEL, ITM_PAPER00, mPr_FLAG_POSTOFFICE_GIFT3, 999999999 } }; static void mMl_send_postoffice_mail() { - //static u8 free_str[16]; // TODO: fix bss ordering - static u8 debug_name[PLAYER_NAME_LEN] = { 0x91, 0x92, 0x93, 0x94, 0x95, 0x91, 0x00, 0x00 }; + // static u8 free_str[16]; // TODO: fix bss ordering + static u8 debug_name[PLAYER_NAME_LEN] = { 0x91, 0x92, 0x93, 0x94, 0x95, 0x91, 0x00, 0x00 }; - Private_c* priv = Save_Get(private); - mMl_PostOffice_Info_c* po_info; - int town_name_len; - int i; + Private_c* priv = Save_Get(private_data); + mMl_PostOffice_Info_c* po_info; + int town_name_len; + int i; - town_name_len = mLd_GetLandNameStringAddMura(free_str); - mHandbill_Set_free_str(0, free_str, town_name_len); + town_name_len = mLd_GetLandNameStringAddMura(free_str); + mHandbill_Set_free_str(0, free_str, town_name_len); - for (i = 0; i < PLAYER_NUM; i++) { - if (mPr_NullCheckPersonalID(&priv->player_ID) == FALSE) { - int j; + for (i = 0; i < PLAYER_NUM; i++) { + if (mPr_NullCheckPersonalID(&priv->player_ID) == FALSE) { + int j; - mHandbill_Set_free_str(1, priv->player_ID.player_name, PLAYER_NAME_LEN); - po_info = l_mml_postoffice_info; - for (j = 0; j < mMl_POSTOFFICE_GIFT_NUM; j++) { - if ((priv->bank_account >= po_info->required_balance) && - (priv->state_flags & po_info->player_received_flag) == FALSE - ) { - int res = mMl_send_mail_com(&priv->player_ID, i, po_info->present, po_info->paper, po_info->mail_no, debug_name, 0, 10); + mHandbill_Set_free_str(1, priv->player_ID.player_name, PLAYER_NAME_LEN); + po_info = l_mml_postoffice_info; + for (j = 0; j < mMl_POSTOFFICE_GIFT_NUM; j++) { + if ((priv->bank_account >= po_info->required_balance) && + (priv->state_flags & po_info->player_received_flag) == FALSE) { + int res = mMl_send_mail_com(&priv->player_ID, i, po_info->present, po_info->paper, po_info->mail_no, + debug_name, 0, 10); - if (res == TRUE) { - priv->state_flags |= po_info->player_received_flag; - } + if (res == TRUE) { + priv->state_flags |= po_info->player_received_flag; + } - break; + break; + } + + po_info++; + } } - po_info++; - } + priv++; } - - priv++; - } } extern void mMl_start_send_mail() { - mMl_send_postoffice_mail(); + mMl_send_postoffice_mail(); } diff --git a/src/m_map_ovl.c b/src/m_map_ovl.c index bf107cc2..16a5d08b 100644 --- a/src/m_map_ovl.c +++ b/src/m_map_ovl.c @@ -89,134 +89,48 @@ extern u8 kan_tizu_c7r1b_TA_tex_txt[]; extern u8 kan_tizu_mwf_TA_tex_txt[]; static u8* l_map_texture[mFM_BLOCK_TYPE_NUM] = { - kan_tizu_f_TA_tex_txt, - kan_tizu_f_TA_tex_txt, - kan_tizu_f_TA_tex_txt, - kan_tizu_f_TA_tex_txt, - kan_tizu_f_TA_tex_txt, - kan_tizu_f_TA_tex_txt, - kan_tizu_f_TA_tex_txt, - kan_tizu_f_TA_tex_txt, - kan_tizu_f_TA_tex_txt, - kan_tizu_f_TA_tex_txt, - kan_tizu_f_TA_tex_txt, - kan_tizu_tst1_TA_tex_txt, - kan_tizu_t_TA_tex_txt, - kan_tizu_tr1_TA_tex_txt, - kan_tizu_fmh_TA_tex_txt, - kan_tizu_c1_TA_tex_txt, - kan_tizu_c2_TA_tex_txt, - kan_tizu_c3_TA_tex_txt, - kan_tizu_c4_TA_tex_txt, - kan_tizu_c5_TA_tex_txt, - kan_tizu_c6_TA_tex_txt, - kan_tizu_c7_TA_tex_txt, - kan_tizu_c1r1_TA_tex_txt, - kan_tizu_c2r1_TA_tex_txt, - kan_tizu_c3r1_TA_tex_txt, - kan_tizu_c4r1_TA_tex_txt, - kan_tizu_c5r1_TA_tex_txt, - kan_tizu_c6r1_TA_tex_txt, - kan_tizu_c7r1_TA_tex_txt, - kan_tizu_c1r2_TA_tex_txt, - kan_tizu_c2r2_TA_tex_txt, - kan_tizu_c3r2_TA_tex_txt, - kan_tizu_c4r2_TA_tex_txt, - kan_tizu_c5r2_TA_tex_txt, - kan_tizu_c1r2_TA_tex_txt, - kan_tizu_c4r2_TA_tex_txt, - kan_tizu_c5r2_TA_tex_txt, - kan_tizu_c6r3_TA_tex_txt, - kan_tizu_c7r3_TA_tex_txt, - kan_tizu_f_TA_tex_txt, - kan_tizu_r1_TA_tex_txt, - kan_tizu_r2_TA_tex_txt, - kan_tizu_r2_TA_tex_txt, - kan_tizu_r4_TA_tex_txt, - kan_tizu_r5_TA_tex_txt, - kan_tizu_r6_TA_tex_txt, - kan_tizu_r7_TA_tex_txt, - kan_tizu_r1b_TA_tex_txt, - kan_tizu_r2b_TA_tex_txt, - kan_tizu_r2b_TA_tex_txt, - kan_tizu_r4b_TA_tex_txt, - kan_tizu_r5b_TA_tex_txt, - kan_tizu_r6b_TA_tex_txt, - kan_tizu_r7b_TA_tex_txt, - kan_tizu_c1s_TA_tex_txt, - kan_tizu_c2s_TA_tex_txt, - kan_tizu_c3s_TA_tex_txt, - kan_tizu_c4s_TA_tex_txt, - kan_tizu_c5s_TA_tex_txt, - kan_tizu_c6s_TA_tex_txt, - kan_tizu_c7s_TA_tex_txt, - kan_tizu_f_TA_tex_txt, - kan_tizu_f_TA_tex_txt, - kan_tizu_m_TA_tex_txt, - kan_tizu_mr1_TA_tex_txt, - kan_tizu_fsh_TA_tex_txt, - kan_tizu_fpk_TA_tex_txt, - kan_tizu_fpo_TA_tex_txt, - kan_tizu_fko_TA_tex_txt, - kan_tizu_pr1_TA_tex_txt, - kan_tizu_pr2_TA_tex_txt, - kan_tizu_pr2_TA_tex_txt, - kan_tizu_pr4_TA_tex_txt, - kan_tizu_pr5_TA_tex_txt, - kan_tizu_pr6_TA_tex_txt, - kan_tizu_pr7_TA_tex_txt, - kan_tizu_f_TA_tex_txt, - kan_tizu_r1_TA_tex_txt, - kan_tizu_c1_TA_tex_txt, - kan_tizu_c1_TA_tex_txt, - kan_tizu_c1_TA_tex_txt, - kan_tizu_c1_TA_tex_txt, - kan_tizu_mr1b_TA_tex_txt, - kan_tizu_mr1_TA_tex_txt, - kan_tizu_fmu_TA_tex_txt, - kan_tizu_fta_TA_tex_txt, - kan_tizu_tr1b_TA_tex_txt, - kan_tizu_c1r2b_TA_tex_txt, - kan_tizu_c3r1b_TA_tex_txt, - kan_tizu_c4r1b_TA_tex_txt, - kan_tizu_c4r2b_TA_tex_txt, - kan_tizu_c5r2b_TA_tex_txt, - kan_tizu_c6r1b_TA_tex_txt, - kan_tizu_c7r1b_TA_tex_txt, - kan_tizu_c7r1b_TA_tex_txt, - kan_tizu_c7r1b_TA_tex_txt, - kan_tizu_c7r1b_TA_tex_txt, - kan_tizu_c7r1b_TA_tex_txt, - kan_tizu_c7r1b_TA_tex_txt, - kan_tizu_c7r1b_TA_tex_txt, - kan_tizu_mwf_TA_tex_txt, - kan_tizu_mwf_TA_tex_txt, - kan_tizu_mwf_TA_tex_txt, - kan_tizu_mwf_TA_tex_txt, - kan_tizu_mwf_TA_tex_txt, - kan_tizu_c1r2b_TA_tex_txt, - kan_tizu_c4r2b_TA_tex_txt, - kan_tizu_c5r2b_TA_tex_txt + kan_tizu_f_TA_tex_txt, kan_tizu_f_TA_tex_txt, kan_tizu_f_TA_tex_txt, kan_tizu_f_TA_tex_txt, + kan_tizu_f_TA_tex_txt, kan_tizu_f_TA_tex_txt, kan_tizu_f_TA_tex_txt, kan_tizu_f_TA_tex_txt, + kan_tizu_f_TA_tex_txt, kan_tizu_f_TA_tex_txt, kan_tizu_f_TA_tex_txt, kan_tizu_tst1_TA_tex_txt, + kan_tizu_t_TA_tex_txt, kan_tizu_tr1_TA_tex_txt, kan_tizu_fmh_TA_tex_txt, kan_tizu_c1_TA_tex_txt, + kan_tizu_c2_TA_tex_txt, kan_tizu_c3_TA_tex_txt, kan_tizu_c4_TA_tex_txt, kan_tizu_c5_TA_tex_txt, + kan_tizu_c6_TA_tex_txt, kan_tizu_c7_TA_tex_txt, kan_tizu_c1r1_TA_tex_txt, kan_tizu_c2r1_TA_tex_txt, + kan_tizu_c3r1_TA_tex_txt, kan_tizu_c4r1_TA_tex_txt, kan_tizu_c5r1_TA_tex_txt, kan_tizu_c6r1_TA_tex_txt, + kan_tizu_c7r1_TA_tex_txt, kan_tizu_c1r2_TA_tex_txt, kan_tizu_c2r2_TA_tex_txt, kan_tizu_c3r2_TA_tex_txt, + kan_tizu_c4r2_TA_tex_txt, kan_tizu_c5r2_TA_tex_txt, kan_tizu_c1r2_TA_tex_txt, kan_tizu_c4r2_TA_tex_txt, + kan_tizu_c5r2_TA_tex_txt, kan_tizu_c6r3_TA_tex_txt, kan_tizu_c7r3_TA_tex_txt, kan_tizu_f_TA_tex_txt, + kan_tizu_r1_TA_tex_txt, kan_tizu_r2_TA_tex_txt, kan_tizu_r2_TA_tex_txt, kan_tizu_r4_TA_tex_txt, + kan_tizu_r5_TA_tex_txt, kan_tizu_r6_TA_tex_txt, kan_tizu_r7_TA_tex_txt, kan_tizu_r1b_TA_tex_txt, + kan_tizu_r2b_TA_tex_txt, kan_tizu_r2b_TA_tex_txt, kan_tizu_r4b_TA_tex_txt, kan_tizu_r5b_TA_tex_txt, + kan_tizu_r6b_TA_tex_txt, kan_tizu_r7b_TA_tex_txt, kan_tizu_c1s_TA_tex_txt, kan_tizu_c2s_TA_tex_txt, + kan_tizu_c3s_TA_tex_txt, kan_tizu_c4s_TA_tex_txt, kan_tizu_c5s_TA_tex_txt, kan_tizu_c6s_TA_tex_txt, + kan_tizu_c7s_TA_tex_txt, kan_tizu_f_TA_tex_txt, kan_tizu_f_TA_tex_txt, kan_tizu_m_TA_tex_txt, + kan_tizu_mr1_TA_tex_txt, kan_tizu_fsh_TA_tex_txt, kan_tizu_fpk_TA_tex_txt, kan_tizu_fpo_TA_tex_txt, + kan_tizu_fko_TA_tex_txt, kan_tizu_pr1_TA_tex_txt, kan_tizu_pr2_TA_tex_txt, kan_tizu_pr2_TA_tex_txt, + kan_tizu_pr4_TA_tex_txt, kan_tizu_pr5_TA_tex_txt, kan_tizu_pr6_TA_tex_txt, kan_tizu_pr7_TA_tex_txt, + kan_tizu_f_TA_tex_txt, kan_tizu_r1_TA_tex_txt, kan_tizu_c1_TA_tex_txt, kan_tizu_c1_TA_tex_txt, + kan_tizu_c1_TA_tex_txt, kan_tizu_c1_TA_tex_txt, kan_tizu_mr1b_TA_tex_txt, kan_tizu_mr1_TA_tex_txt, + kan_tizu_fmu_TA_tex_txt, kan_tizu_fta_TA_tex_txt, kan_tizu_tr1b_TA_tex_txt, kan_tizu_c1r2b_TA_tex_txt, + kan_tizu_c3r1b_TA_tex_txt, kan_tizu_c4r1b_TA_tex_txt, kan_tizu_c4r2b_TA_tex_txt, kan_tizu_c5r2b_TA_tex_txt, + kan_tizu_c6r1b_TA_tex_txt, kan_tizu_c7r1b_TA_tex_txt, kan_tizu_c7r1b_TA_tex_txt, kan_tizu_c7r1b_TA_tex_txt, + kan_tizu_c7r1b_TA_tex_txt, kan_tizu_c7r1b_TA_tex_txt, kan_tizu_c7r1b_TA_tex_txt, kan_tizu_c7r1b_TA_tex_txt, + kan_tizu_mwf_TA_tex_txt, kan_tizu_mwf_TA_tex_txt, kan_tizu_mwf_TA_tex_txt, kan_tizu_mwf_TA_tex_txt, + kan_tizu_mwf_TA_tex_txt, kan_tizu_c1r2b_TA_tex_txt, kan_tizu_c4r2b_TA_tex_txt, kan_tizu_c5r2b_TA_tex_txt }; -static u8 l_map_pal[mFM_BLOCK_TYPE_NUM] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0 -}; +static u8 l_map_pal[mFM_BLOCK_TYPE_NUM] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0 }; static u8 pluss_bridge[mFM_BLOCK_TYPE_NUM] = { - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x56, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x58, 0x59, 0xff, 0x5c, 0x5d, 0x57, 0xff, 0xff, - 0x5a, 0x5b, 0x69, 0x6a, 0x6b, 0xff, 0xff, 0xff, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0x52, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x56, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x58, 0x59, 0xff, 0x5c, 0x5d, 0x57, 0xff, 0xff, 0x5a, 0x5b, 0x69, 0x6a, + 0x6b, 0xff, 0xff, 0xff, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x52, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; extern Gfx kan_win_model[]; @@ -242,19 +156,13 @@ extern mMP_HousePos_c mMP_house_pos_list[]; extern Gfx kan_win_mode[]; -static u16 kan_tizu1_pal[16] ATTRIBUTE_ALIGN(32) = { - 0x0000, 0xc3b0, 0x9e87, 0xd294, 0xca52, 0xbdef, 0xb5ad, 0xb9ce, - 0xa2e8, 0xb18c, 0xa705, 0xdaff, 0xab4a, 0xffff, 0xb635, 0xbe9f -}; +static u16 kan_tizu1_pal[16] ATTRIBUTE_ALIGN(32) = { 0x0000, 0xc3b0, 0x9e87, 0xd294, 0xca52, 0xbdef, 0xb5ad, 0xb9ce, + 0xa2e8, 0xb18c, 0xa705, 0xdaff, 0xab4a, 0xffff, 0xb635, 0xbe9f }; -static u16 kan_tizu2_pal[16] ATTRIBUTE_ALIGN(32) = { - 0x0000, 0xc3b0, 0x9e87, 0xc94a, 0xe70d, 0xe1ce, 0xb5ad, 0xb195, - 0xf390, 0xb18c, 0xa705, 0xffff, 0xd54a, 0xdaff, 0xb635, 0xbe9f -}; +static u16 kan_tizu2_pal[16] ATTRIBUTE_ALIGN(32) = { 0x0000, 0xc3b0, 0x9e87, 0xc94a, 0xe70d, 0xe1ce, 0xb5ad, 0xb195, + 0xf390, 0xb18c, 0xa705, 0xffff, 0xd54a, 0xdaff, 0xb635, 0xbe9f }; -static u16* l_kan_tizu_pal[2] = { - kan_tizu1_pal, kan_tizu2_pal -}; +static u16* l_kan_tizu_pal[2] = { kan_tizu1_pal, kan_tizu2_pal }; extern u8 kan_win_suuji1_tex_rgb_ia8[]; extern u8 kan_win_suuji2_tex_rgb_ia8[]; @@ -263,11 +171,8 @@ extern u8 kan_win_suuji4_tex_rgb_ia8[]; extern u8 kan_win_suuji5_tex_rgb_ia8[]; static u8* kan_win_evw_anime_1_tex_table[FG_BLOCK_X_NUM] = { - kan_win_suuji1_tex_rgb_ia8, - kan_win_suuji2_tex_rgb_ia8, - kan_win_suuji3_tex_rgb_ia8, - kan_win_suuji4_tex_rgb_ia8, - kan_win_suuji5_tex_rgb_ia8, + kan_win_suuji1_tex_rgb_ia8, kan_win_suuji2_tex_rgb_ia8, kan_win_suuji3_tex_rgb_ia8, + kan_win_suuji4_tex_rgb_ia8, kan_win_suuji5_tex_rgb_ia8, }; extern u8 kan_win_a_tex_rgb_ia8[]; @@ -278,12 +183,8 @@ extern u8 kan_win_e_tex_rgb_ia8[]; extern u8 kan_win_f_tex_rgb_ia8[]; static u8* kan_win_evw_anime_2_tex_table[FG_BLOCK_Z_NUM] = { - kan_win_a_tex_rgb_ia8, - kan_win_b_tex_rgb_ia8, - kan_win_c_tex_rgb_ia8, - kan_win_d_tex_rgb_ia8, - kan_win_e_tex_rgb_ia8, - kan_win_f_tex_rgb_ia8, + kan_win_a_tex_rgb_ia8, kan_win_b_tex_rgb_ia8, kan_win_c_tex_rgb_ia8, + kan_win_d_tex_rgb_ia8, kan_win_e_tex_rgb_ia8, kan_win_f_tex_rgb_ia8, }; extern Gfx kan_win_npcT_1_model[]; @@ -294,17 +195,9 @@ extern Gfx kan_win_npc2T_1_model[]; extern Gfx kan_win_npc2T_2_model[]; extern Gfx kan_win_npc2T_3_model[]; -static Gfx* kan_win_npcT_table[] = { - kan_win_npcT_1_model, - kan_win_npcT_2_model, - kan_win_npcT_3_model -}; +static Gfx* kan_win_npcT_table[] = { kan_win_npcT_1_model, kan_win_npcT_2_model, kan_win_npcT_3_model }; -static Gfx* kan_win_npc2T_table[] = { - kan_win_npc2T_1_model, - kan_win_npc2T_2_model, - kan_win_npc2T_3_model -}; +static Gfx* kan_win_npc2T_table[] = { kan_win_npc2T_1_model, kan_win_npc2T_2_model, kan_win_npc2T_3_model }; extern Gfx kan_win_genzaiT_model[]; @@ -324,1053 +217,860 @@ extern Gfx kan_win_mu_model[]; extern Gfx kan_win_ta_model[]; extern Gfx kan_win_funeT_model[]; -static mMP_LabelWord_c mMP_label_word_npc = { - -92.0f, -19.0f, - NULL, 0 -}; +static mMP_LabelWord_c mMP_label_word_npc = { -92.0f, -19.0f, NULL, 0 }; -static mMP_Label_c mMP_label_npc = { - -98.0f, -24.0f, - kan_win_npcT_1_model, - { &mMP_label_word_npc, NULL } -}; +static mMP_Label_c mMP_label_npc = { -98.0f, -24.0f, kan_win_npcT_1_model, { &mMP_label_word_npc, NULL } }; -static mMP_LabelWord_c mMP_label_word_player = { - -92.0f, -21.5f, - NULL, 0 -}; +static mMP_LabelWord_c mMP_label_word_player = { -92.0f, -21.5f, NULL, 0 }; -static mMP_Label_c mMP_label_player = { - -98.0f, -26.5f, - kan_win_playerT_model, - { &mMP_label_word_player, NULL } -}; +static mMP_Label_c mMP_label_player = { -98.0f, -26.5f, kan_win_playerT_model, { &mMP_label_word_player, NULL } }; static u8 mMP_label_str_shop[4] = { CHAR_S, CHAR_h, CHAR_o, CHAR_p }; -static mMP_LabelWord_c mMP_label_word_shop = { - -83.0f, -25.0f, - mMP_label_str_shop, 4 -}; +static mMP_LabelWord_c mMP_label_word_shop = { -83.0f, -25.0f, mMP_label_str_shop, 4 }; -static mMP_Label_c mMP_label_shop = { - -93.0f, -30.0f, - kan_win_omiseT_model, - { &mMP_label_word_shop, NULL } -}; +static mMP_Label_c mMP_label_shop = { -93.0f, -30.0f, kan_win_omiseT_model, { &mMP_label_word_shop, NULL } }; static u8 mMP_label_str_police[6] = { CHAR_P, CHAR_o, CHAR_l, CHAR_i, CHAR_c, CHAR_e }; -static mMP_LabelWord_c mMP_label_word_police = { - -83.0f, -19.0f, - mMP_label_str_police, 6 -}; +static mMP_LabelWord_c mMP_label_word_police = { -83.0f, -19.0f, mMP_label_str_police, 6 }; static u8 mMP_label_str_police2[7] = { CHAR_S, CHAR_t, CHAR_a, CHAR_t, CHAR_i, CHAR_o, CHAR_n }; -static mMP_LabelWord_c mMP_label_word_police2 = { - -83.0f, -31.0f, - mMP_label_str_police2, 7 -}; +static mMP_LabelWord_c mMP_label_word_police2 = { -83.0f, -31.0f, mMP_label_str_police2, 7 }; static mMP_Label_c mMP_label_police = { - -93.0f, -30.0f, - kan_win_koubanT_model, - { &mMP_label_word_police, &mMP_label_word_police2 } + -93.0f, -30.0f, kan_win_koubanT_model, { &mMP_label_word_police, &mMP_label_word_police2 } }; static u8 mMP_label_str_post[4] = { CHAR_P, CHAR_o, CHAR_s, CHAR_t }; -static mMP_LabelWord_c mMP_label_word_post = { - -83.0f, -19.0f, - mMP_label_str_post, 4 -}; +static mMP_LabelWord_c mMP_label_word_post = { -83.0f, -19.0f, mMP_label_str_post, 4 }; static u8 mMP_label_str_post2[6] = { CHAR_O, CHAR_f, CHAR_f, CHAR_i, CHAR_c, CHAR_e }; -static mMP_LabelWord_c mMP_label_word_post2 = { - -83.0f, -31.0f, - mMP_label_str_post2, 6 -}; +static mMP_LabelWord_c mMP_label_word_post2 = { -83.0f, -31.0f, mMP_label_str_post2, 6 }; static mMP_Label_c mMP_label_post = { - -93.0f, -30.0f, - kan_win_yuuT_model, - { &mMP_label_word_post, &mMP_label_word_post2 } + -93.0f, -30.0f, kan_win_yuuT_model, { &mMP_label_word_post, &mMP_label_word_post2 } }; static u8 mMP_label_str_shrine[7] = { CHAR_W, CHAR_i, CHAR_s, CHAR_h, CHAR_i, CHAR_n, CHAR_g }; -static mMP_LabelWord_c mMP_label_word_shrine = { - -83.0f, -19.0f, - mMP_label_str_shrine, 7 -}; +static mMP_LabelWord_c mMP_label_word_shrine = { -83.0f, -19.0f, mMP_label_str_shrine, 7 }; static u8 mMP_label_str_shrine2[4] = { CHAR_W, CHAR_e, CHAR_l, CHAR_l }; -static mMP_LabelWord_c mMP_label_word_shrine2 = { - -83.0f, -31.0f, - mMP_label_str_shrine2, 4 -}; +static mMP_LabelWord_c mMP_label_word_shrine2 = { -83.0f, -31.0f, mMP_label_str_shrine2, 4 }; static mMP_Label_c mMP_label_shrine = { - -93.0f, -30.0f, - kan_win_yashiroT_model, - { &mMP_label_word_shrine, & mMP_label_word_shrine2 } + -93.0f, -30.0f, kan_win_yashiroT_model, { &mMP_label_word_shrine, &mMP_label_word_shrine2 } }; static u8 mMP_label_str_station[5] = { CHAR_T, CHAR_r, CHAR_a, CHAR_i, CHAR_n }; -static mMP_LabelWord_c mMP_label_word_station = { - -83.0f, -19.0f, - mMP_label_str_station, 5 -}; +static mMP_LabelWord_c mMP_label_word_station = { -83.0f, -19.0f, mMP_label_str_station, 5 }; static u8 mMP_label_str_station2[7] = { CHAR_S, CHAR_t, CHAR_a, CHAR_t, CHAR_i, CHAR_o, CHAR_n }; -static mMP_LabelWord_c mMP_label_word_station2 = { - -83.0f, -31.0f, - mMP_label_str_station2, 7 -}; +static mMP_LabelWord_c mMP_label_word_station2 = { -83.0f, -31.0f, mMP_label_str_station2, 7 }; static mMP_Label_c mMP_label_station = { - -93.0f, -31.0f, - kan_win_ekiT_model, - { &mMP_label_word_station, &mMP_label_word_station2 } + -93.0f, -31.0f, kan_win_ekiT_model, { &mMP_label_word_station, &mMP_label_word_station2 } }; static u8 mMP_label_str_junk[4] = { CHAR_D, CHAR_u, CHAR_m, CHAR_p }; -static mMP_LabelWord_c mMP_label_word_junk = { - -83.0f, -25.0f, - mMP_label_str_junk, 4 -}; +static mMP_LabelWord_c mMP_label_word_junk = { -83.0f, -25.0f, mMP_label_str_junk, 4 }; -static mMP_Label_c mMP_label_junk = { - -93.0f, -30.0f, - kan_win_gomiT_model, - { &mMP_label_word_junk, NULL } -}; +static mMP_Label_c mMP_label_junk = { -93.0f, -30.0f, kan_win_gomiT_model, { &mMP_label_word_junk, NULL } }; static u8 mMP_label_str_museum[6] = { CHAR_M, CHAR_u, CHAR_s, CHAR_e, CHAR_u, CHAR_m }; -static mMP_LabelWord_c mMP_label_word_museum = { - -83.0f, -25.0f, - mMP_label_str_museum, 6 -}; +static mMP_LabelWord_c mMP_label_word_museum = { -83.0f, -25.0f, mMP_label_str_museum, 6 }; -static mMP_Label_c mMP_label_museum = { - -93.0f, -30.0f, - kan_win_mu_model, - { &mMP_label_word_museum, NULL } -}; +static mMP_Label_c mMP_label_museum = { -93.0f, -30.0f, kan_win_mu_model, { &mMP_label_word_museum, NULL } }; static u8 mMP_label_str_needle[6] = { CHAR_T, CHAR_a, CHAR_i, CHAR_l, CHAR_o, CHAR_r }; -static mMP_LabelWord_c mMP_label_word_needle = { - -83.0f, -25.0f, - mMP_label_str_needle, 6 -}; +static mMP_LabelWord_c mMP_label_word_needle = { -83.0f, -25.0f, mMP_label_str_needle, 6 }; -static mMP_Label_c mMP_label_needle = { - -93.0f, -30.0f, - kan_win_ta_model, - { &mMP_label_word_needle, NULL } -}; +static mMP_Label_c mMP_label_needle = { -93.0f, -30.0f, kan_win_ta_model, { &mMP_label_word_needle, NULL } }; static u8 mMP_label_str_port[4] = { CHAR_D, CHAR_o, CHAR_c, CHAR_k }; -static mMP_LabelWord_c mMP_label_word_port = { - -83.0f, -25.0f, - mMP_label_str_port, 4 -}; +static mMP_LabelWord_c mMP_label_word_port = { -83.0f, -25.0f, mMP_label_str_port, 4 }; -static mMP_Label_c mMP_label_port = { - -93.0f, -30.0f, - kan_win_funeT_model, - { &mMP_label_word_port, NULL } -}; +static mMP_Label_c mMP_label_port = { -93.0f, -30.0f, kan_win_funeT_model, { &mMP_label_word_port, NULL } }; -static mMP_Label_c* mMP_label_data[mMP_LABEL_NUM] = { - &mMP_label_npc, - &mMP_label_player, - &mMP_label_shop, - &mMP_label_police, - &mMP_label_post, - &mMP_label_shrine, - &mMP_label_station, - &mMP_label_junk, - &mMP_label_museum, - &mMP_label_needle, - &mMP_label_port -}; +static mMP_Label_c* mMP_label_data[mMP_LABEL_NUM] = { &mMP_label_npc, &mMP_label_player, &mMP_label_shop, + &mMP_label_police, &mMP_label_post, &mMP_label_shrine, + &mMP_label_station, &mMP_label_junk, &mMP_label_museum, + &mMP_label_needle, &mMP_label_port }; static int mMP_check_layer(f32 y) { - int layer; + int layer; - switch (mCoBG_Height2GetLayer(y)) { - case mCoBG_LAYER0: - layer = 2; - break; - case mCoBG_LAYER1: - layer = 1; - break; - case mCoBG_LAYER2: - layer = 0; - break; - default: - layer = 1; - break; - } + switch (mCoBG_Height2GetLayer(y)) { + case mCoBG_LAYER0: + layer = 2; + break; + case mCoBG_LAYER1: + layer = 1; + break; + case mCoBG_LAYER2: + layer = 0; + break; + default: + layer = 1; + break; + } - if (mRF_CheckFieldStep3() == FALSE) { - layer--; - } + if (mRF_CheckFieldStep3() == FALSE) { + layer--; + } - if (layer < 0) { - layer = 0; - } + if (layer < 0) { + layer = 0; + } - return layer; + return layer; } static int mMP_check_bg_kind(u8 kind) { - int res = TRUE; - if (kind <= 8 || kind == 0x3D || kind == 0x3E || kind == 9 || kind == 10) { - res = FALSE; - } + int res = TRUE; + if (kind <= 8 || kind == 0x3D || kind == 0x3E || kind == 9 || kind == 10) { + res = FALSE; + } - return res; + return res; } static void mMP_make_max_no_table(int* max_no_table, int count) { - int bz; - int i; - int j = 0; + int bz; + int i; + int j = 0; - for (i = 0; i < count; i++) { - max_no_table[i] = 39; - } - - //i = BLOCKXZ_2_BLOCKIDX(0, 1); - for (bz = 1; bz < mMP_BLOCKZ_MAX; bz++) { - u8 type; - int bx; - for (bx = 1; bx < mMP_BLOCKX_MAX; bx++) { - type = g_block_type_p[BLOCKXZ_2_BLOCKIDX(bx, bz)]; - if (mMP_check_bg_kind(type) == TRUE) { - max_no_table[0] = type; - - if (Save_Get(bridge.exists) && - Save_Get(bridge.block_x) == bx && - Save_Get(bridge.block_z) == bz && - pluss_bridge[type] != 0xFF - ) { - max_no_table[0] = pluss_bridge[type]; - } - - max_no_table++; - j++; - } - - if (j >= count) { - return; - } + for (i = 0; i < count; i++) { + max_no_table[i] = 39; + } + + // i = BLOCKXZ_2_BLOCKIDX(0, 1); + for (bz = 1; bz < mMP_BLOCKZ_MAX; bz++) { + u8 type; + int bx; + for (bx = 1; bx < mMP_BLOCKX_MAX; bx++) { + type = g_block_type_p[BLOCKXZ_2_BLOCKIDX(bx, bz)]; + if (mMP_check_bg_kind(type) == TRUE) { + max_no_table[0] = type; + + if (Save_Get(bridge.exists) && Save_Get(bridge.block_x) == bx && Save_Get(bridge.block_z) == bz && + pluss_bridge[type] != 0xFF) { + max_no_table[0] = pluss_bridge[type]; + } + + max_no_table++; + j++; + } + + if (j >= count) { + return; + } + } } - } } static void mMP_dma_texture(u8** texture_pp, int type) { - *texture_pp = l_map_texture[type]; + *texture_pp = l_map_texture[type]; } static void mMP_set_map_texture_pal(mMP_Overlay_c* map_ovl) { - int max_no_table[FG_BLOCK_TOTAL_NUM]; - int i; + int max_no_table[FG_BLOCK_TOTAL_NUM]; + int i; - mMP_make_max_no_table(max_no_table, FG_BLOCK_TOTAL_NUM); - for (i = 0; i < FG_BLOCK_TOTAL_NUM; i++) { - map_ovl->map_pal[i] = l_map_pal[max_no_table[i]]; - mMP_dma_texture(&map_ovl->map_texture[i], max_no_table[i]); - } + mMP_make_max_no_table(max_no_table, FG_BLOCK_TOTAL_NUM); + for (i = 0; i < FG_BLOCK_TOTAL_NUM; i++) { + map_ovl->map_pal[i] = l_map_pal[max_no_table[i]]; + mMP_dma_texture(&map_ovl->map_texture[i], max_no_table[i]); + } } static mActor_name_t mMP_GetFgBlockName(mMP_Overlay_c* map_ovl, int block_x, int block_z) { - return map_ovl->combination_table[Save_Get(combi_table[block_z][block_x]).combination_type].fg_id; + return map_ovl->combination_table[Save_Get(combi_table[block_z][block_x]).combination_type].fg_id; } static void mMP_set_house_data(mMP_Overlay_c* map_ovl, mSM_MenuInfo_c* menu) { - static u8 akiya_str[PLAYER_NAME_LEN] = { CHAR_f, CHAR_r, CHAR_e, CHAR_e, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE }; + static u8 akiya_str[PLAYER_NAME_LEN] = { CHAR_f, CHAR_r, CHAR_e, CHAR_e, + CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE }; - mMP_ResidentInfo_c* resident_p = &map_ovl->player_info[0]; - mMP_LabelInfo_c* player_block_label = &map_ovl->label_info[1][2]; - Private_c* priv = Save_Get(private); - mMP_HousePos_c* house_pos2; - Animal_c* animal = Save_Get(animals); - int residents; - int i; + mMP_ResidentInfo_c* resident_p = &map_ovl->player_info[0]; + mMP_LabelInfo_c* player_block_label = &map_ovl->label_info[1][2]; + Private_c* priv = Save_Get(private_data); + mMP_HousePos_c* house_pos2; + Animal_c* animal = Save_Get(animals); + int residents; + int i; - /* Process player resident info first */ + /* Process player resident info first */ - player_block_label->label_cnt = PLAYER_NUM; - player_block_label->label_no = mMP_LABEL_PLAYER; + player_block_label->label_cnt = PLAYER_NUM; + player_block_label->label_no = mMP_LABEL_PLAYER; - residents = 0; - for (i = 0; i < PLAYER_NUM; i++) { - if (mPr_CheckPrivate(priv) == TRUE && - (Common_Get(now_private) != priv || mEv_CheckFirstIntro() == FALSE) - ) { - mPr_CopyPlayerName(resident_p->name, priv->player_ID.player_name); - resident_p->sex = priv->gender; - resident_p->house_layer = 0; - resident_p->house_idx = 0; + residents = 0; + for (i = 0; i < PLAYER_NUM; i++) { + if (mPr_CheckPrivate(priv) == TRUE && (Common_Get(now_private) != priv || mEv_CheckFirstIntro() == FALSE)) { + mPr_CopyPlayerName(resident_p->name, priv->player_ID.player_name); + resident_p->sex = priv->gender; + resident_p->house_layer = 0; + resident_p->house_idx = 0; - player_block_label->residents[residents] = resident_p; - residents++; - resident_p++; - } - - priv++; - } - - for (residents; residents < PLAYER_NUM; residents++, resident_p++) { - mPr_CopyPlayerName(resident_p->name, akiya_str); - resident_p->sex = -1; - resident_p->house_layer = 0; - - player_block_label->residents[residents] = resident_p; - } - - house_pos2 = mMP_house_pos_list; - /* Process animal resident info next */ - resident_p = &map_ovl->animal_info[0]; - residents = 0; - - for (i = 0; i < ANIMAL_NUM_MAX; i++, animal++, resident_p++) { - if (mNpc_CheckFreeAnimalInfo(animal) == FALSE) { - Anmhome_c* home = &animal->home_info; - mNpc_GetNpcWorldNameAnm(resident_p->name, &animal->id); - resident_p->sex = mNpc_GetLooks2Sex(animal->id.looks); - resident_p->house_layer = mMP_check_layer(Common_Get(npclist[i].house_position.y)); - - { - mActor_name_t fgblock_name = mMP_GetFgBlockName(map_ovl, home->block_x, home->block_z); - mMP_HousePos_c* house_pos = house_pos2; - mMP_HousePos_Entry_c* pos_info = house_pos[0].entries; - - for (house_pos; house_pos->fgblock_name != 0x03B8; house_pos++) { - if (fgblock_name == house_pos->fgblock_name) { - int j; - pos_info = house_pos->entries; - - for (j = 0; j < 3; j++, pos_info++) { - if (pos_info->ut_x == home->ut_x && pos_info->ut_z == home->ut_z - 1) { - break; - } - } - - if (j == 3) { - pos_info = &house_pos->entries[0]; // default - } - - break; - } + player_block_label->residents[residents] = resident_p; + residents++; + resident_p++; } - resident_p->house_idx = pos_info->idx; - } - - { - int bx = home->block_x - 1; - int bz = home->block_z - 1; - mMP_LabelInfo_c* label_info = &map_ovl->label_info[bz][bx]; - - label_info->residents[label_info->label_cnt] = resident_p; - label_info->label_cnt++; - label_info->label_no = mMP_LABEL_NPC; - } + priv++; } - } - /* Sort villager houses by layer, with lower layers coming first */ - { - mMP_ResidentInfo_c* resident; - mMP_ResidentInfo_c* next_resident; - mMP_LabelInfo_c* label_info = (mMP_LabelInfo_c*)map_ovl->label_info; - for (i = 0; i < FG_BLOCK_TOTAL_NUM; i++) { - if (label_info->label_no == mMP_LABEL_NPC && label_info->label_cnt > 1) { - - int j; - for (j = 0; j < label_info->label_cnt - 1; j++) { - - resident = label_info->residents[j]; - next_resident = label_info->residents[j + 1]; + for (residents; residents < PLAYER_NUM; residents++, resident_p++) { + mPr_CopyPlayerName(resident_p->name, akiya_str); + resident_p->sex = -1; + resident_p->house_layer = 0; - if (resident->house_layer > next_resident->house_layer) { - label_info->residents[j] = next_resident; - label_info->residents[j + 1] = resident; - j = -1; - } + player_block_label->residents[residents] = resident_p; + } + + house_pos2 = mMP_house_pos_list; + /* Process animal resident info next */ + resident_p = &map_ovl->animal_info[0]; + residents = 0; + + for (i = 0; i < ANIMAL_NUM_MAX; i++, animal++, resident_p++) { + if (mNpc_CheckFreeAnimalInfo(animal) == FALSE) { + Anmhome_c* home = &animal->home_info; + mNpc_GetNpcWorldNameAnm(resident_p->name, &animal->id); + resident_p->sex = mNpc_GetLooks2Sex(animal->id.looks); + resident_p->house_layer = mMP_check_layer(Common_Get(npclist[i].house_position.y)); + + { + mActor_name_t fgblock_name = mMP_GetFgBlockName(map_ovl, home->block_x, home->block_z); + mMP_HousePos_c* house_pos = house_pos2; + mMP_HousePos_Entry_c* pos_info = house_pos[0].entries; + + for (house_pos; house_pos->fgblock_name != 0x03B8; house_pos++) { + if (fgblock_name == house_pos->fgblock_name) { + int j; + pos_info = house_pos->entries; + + for (j = 0; j < 3; j++, pos_info++) { + if (pos_info->ut_x == home->ut_x && pos_info->ut_z == home->ut_z - 1) { + break; + } + } + + if (j == 3) { + pos_info = &house_pos->entries[0]; // default + } + + break; + } + } + + resident_p->house_idx = pos_info->idx; + } + + { + int bx = home->block_x - 1; + int bz = home->block_z - 1; + mMP_LabelInfo_c* label_info = &map_ovl->label_info[bz][bx]; + + label_info->residents[label_info->label_cnt] = resident_p; + label_info->label_cnt++; + label_info->label_no = mMP_LABEL_NPC; + } + } + } + + /* Sort villager houses by layer, with lower layers coming first */ + { + mMP_ResidentInfo_c* resident; + mMP_ResidentInfo_c* next_resident; + mMP_LabelInfo_c* label_info = (mMP_LabelInfo_c*)map_ovl->label_info; + for (i = 0; i < FG_BLOCK_TOTAL_NUM; i++) { + if (label_info->label_no == mMP_LABEL_NPC && label_info->label_cnt > 1) { + + int j; + for (j = 0; j < label_info->label_cnt - 1; j++) { + + resident = label_info->residents[j]; + next_resident = label_info->residents[j + 1]; + + if (resident->house_layer > next_resident->house_layer) { + label_info->residents[j] = next_resident; + label_info->residents[j + 1] = resident; + j = -1; + } + } + } + + label_info++; } - } - - label_info++; } - } } static void mMP_set_field_data(mMP_Overlay_c* map_ovl) { - mMP_LabelInfo_c* label_info = (mMP_LabelInfo_c*)map_ovl->label_info; - int* block_kind_p = g_block_kind_p + BLOCKXZ_2_BLOCKIDX(1, 1); // start at the first non-border acre - int bx; - int bz; + mMP_LabelInfo_c* label_info = (mMP_LabelInfo_c*)map_ovl->label_info; + int* block_kind_p = g_block_kind_p + BLOCKXZ_2_BLOCKIDX(1, 1); // start at the first non-border acre + int bx; + int bz; + for (bz = 0; bz < FG_BLOCK_Z_NUM; bz++) { + for (bx = 0; bx < FG_BLOCK_X_NUM; bx++) { + if (label_info->label_cnt <= 0) { + int kind = *block_kind_p; - for (bz = 0; bz < FG_BLOCK_Z_NUM; bz++) { - for (bx = 0; bx < FG_BLOCK_X_NUM; bx++) { - if (label_info->label_cnt <= 0) { - int kind = *block_kind_p; + if (kind & mRF_BLOCKKIND_SHOP) { + label_info->label_no = mMP_LABEL_SHOP; + label_info->label_cnt = 2; + } else if (kind & mRF_BLOCKKIND_POLICE) { + label_info->label_no = mMP_LABEL_POLICE; + label_info->label_cnt = 2; + } else if (kind & mRF_BLOCKKIND_POSTOFFICE) { + label_info->label_no = mMP_LABEL_POST; + label_info->label_cnt = 2; + } else if (kind & mRF_BLOCKKIND_SHRINE) { + label_info->label_no = mMP_LABEL_SHRINE; + label_info->label_cnt = 2; + } else if (kind & mRF_BLOCKKIND_STATION) { + label_info->label_no = mMP_LABEL_STATION; + label_info->label_cnt = 2; + } else if (kind & mRF_BLOCKKIND_DUMP) { + label_info->label_no = mMP_LABEL_JUNK; + label_info->label_cnt = 2; + } else if (kind & mRF_BLOCKKIND_MUSEUM) { + label_info->label_no = mMP_LABEL_MUSEUM; + label_info->label_cnt = 2; + } else if (kind & mRF_BLOCKKIND_TAILORS) { + label_info->label_no = mMP_LABEL_NEEDLE; + label_info->label_cnt = 2; + } else if (kind & mRF_BLOCKKIND_DOCK) { + label_info->label_no = mMP_LABEL_PORT; + label_info->label_cnt = 2; + } + } - if (kind & mRF_BLOCKKIND_SHOP) { - label_info->label_no = mMP_LABEL_SHOP; - label_info->label_cnt = 2; - } - else if (kind & mRF_BLOCKKIND_POLICE) { - label_info->label_no = mMP_LABEL_POLICE; - label_info->label_cnt = 2; - } - else if (kind & mRF_BLOCKKIND_POSTOFFICE) { - label_info->label_no = mMP_LABEL_POST; - label_info->label_cnt = 2; - } - else if (kind & mRF_BLOCKKIND_SHRINE) { - label_info->label_no = mMP_LABEL_SHRINE; - label_info->label_cnt = 2; - } - else if (kind & mRF_BLOCKKIND_STATION) { - label_info->label_no = mMP_LABEL_STATION; - label_info->label_cnt = 2; - } - else if (kind & mRF_BLOCKKIND_DUMP) { - label_info->label_no = mMP_LABEL_JUNK; - label_info->label_cnt = 2; - } - else if (kind & mRF_BLOCKKIND_MUSEUM) { - label_info->label_no = mMP_LABEL_MUSEUM; - label_info->label_cnt = 2; - } - else if (kind & mRF_BLOCKKIND_TAILORS) { - label_info->label_no = mMP_LABEL_NEEDLE; - label_info->label_cnt = 2; - } - else if (kind & mRF_BLOCKKIND_DOCK) { - label_info->label_no = mMP_LABEL_PORT; - label_info->label_cnt = 2; - } - } - - label_info++; - block_kind_p++; + label_info++; + block_kind_p++; + } + + block_kind_p += 2; // skip X border acres } - - block_kind_p += 2; // skip X border acres - } } static void mMP_set_init_data(mMP_Overlay_c* map_ovl, mSM_MenuInfo_c* menu_info) { - mMP_LabelInfo_c* label_info = (mMP_LabelInfo_c*)map_ovl->label_info; - PLAYER_ACTOR* player = get_player_actor_withoutCheck((GAME_PLAY*)gamePT); - int block_x; - int block_z; - int i; + mMP_LabelInfo_c* label_info = (mMP_LabelInfo_c*)map_ovl->label_info; + PLAYER_ACTOR* player = get_player_actor_withoutCheck((GAME_PLAY*)gamePT); + int block_x; + int block_z; + int i; - if (Common_Get(field_type) != mFI_FIELDTYPE2_FG && Common_Get(door_data.next_scene_id) != 0) { - xyz_t pos; + if (Common_Get(field_type) != mFI_FIELDTYPE2_FG && Common_Get(door_data.next_scene_id) != 0) { + xyz_t pos; - xyz_t_move_s_xyz(&pos, Common_GetPointer(structure_exit_door_data.exit_position)); - mFI_Wpos2BlockNum(&block_x, &block_z, pos); - } - else { - mFI_Wpos2BlockNum(&block_x, &block_z, player->actor_class.world.position); - } + xyz_t_move_s_xyz(&pos, Common_GetPointer(structure_exit_door_data.exit_position)); + mFI_Wpos2BlockNum(&block_x, &block_z, pos); + } else { + mFI_Wpos2BlockNum(&block_x, &block_z, player->actor_class.world.position); + } - map_ovl->player_bx = block_x - 1; - map_ovl->player_bz = block_z - 1; + map_ovl->player_bx = block_x - 1; + map_ovl->player_bz = block_z - 1; - map_ovl->sel_bx = map_ovl->player_bx; - map_ovl->sel_bz = map_ovl->player_bz; + map_ovl->sel_bx = map_ovl->player_bx; + map_ovl->sel_bz = map_ovl->player_bz; - map_ovl->map_cursor_current_xpos = (f32)map_ovl->player_bx * mMP_BLOCK_SIZE_F; - map_ovl->map_cursor_current_zpos = -(f32)map_ovl->player_bz * mMP_BLOCK_SIZE_F; + map_ovl->map_cursor_current_xpos = (f32)map_ovl->player_bx * mMP_BLOCK_SIZE_F; + map_ovl->map_cursor_current_zpos = -(f32)map_ovl->player_bz * mMP_BLOCK_SIZE_F; - map_ovl->cursor_frame = 0; - - map_ovl->map_cursor_target_xpos = map_ovl->map_cursor_current_xpos; - map_ovl->map_cursor_target_zpos = map_ovl->map_cursor_current_zpos; + map_ovl->cursor_frame = 0; - mMP_set_map_texture_pal(map_ovl); + map_ovl->map_cursor_target_xpos = map_ovl->map_cursor_current_xpos; + map_ovl->map_cursor_target_zpos = map_ovl->map_cursor_current_zpos; - for (i = 0; i < FG_BLOCK_TOTAL_NUM; i++) { - label_info->label_cnt = 0; - label_info++; - } + mMP_set_map_texture_pal(map_ovl); - mMP_set_house_data(map_ovl, menu_info); - mMP_set_field_data(map_ovl); + for (i = 0; i < FG_BLOCK_TOTAL_NUM; i++) { + label_info->label_cnt = 0; + label_info++; + } - map_ovl->land_name_str_len = mMl_strlen(Save_Get(land_info.name), LAND_NAME_SIZE, CHAR_SPACE); + mMP_set_house_data(map_ovl, menu_info); + mMP_set_field_data(map_ovl); + + map_ovl->land_name_str_len = mMl_strlen(Save_Get(land_info.name), LAND_NAME_SIZE, CHAR_SPACE); } static void mMP_move_Move(Submenu* submenu, mSM_MenuInfo_c* menu) { - (*submenu->overlay->move_Move_proc)(submenu, menu); + (*submenu->overlay->move_Move_proc)(submenu, menu); } static void mMP_move_Play(Submenu* submenu, mSM_MenuInfo_c* menu) { - Submenu_Overlay_c* ovl = submenu->overlay; - int trigger = ovl->menu_control.trigger; - mMP_Overlay_c* map_ovl = ovl->map_ovl; - int cursor_moved = FALSE; + Submenu_Overlay_c* ovl = submenu->overlay; + int trigger = ovl->menu_control.trigger; + mMP_Overlay_c* map_ovl = ovl->map_ovl; + int cursor_moved = FALSE; - if ((trigger & (BUTTON_A | BUTTON_B | BUTTON_START)) || (menu->data0 == 1 && (trigger & BUTTON_X))) { - (*ovl->move_chg_base_proc)(menu, mSM_MOVE_OUT_TOP); - sAdo_SysTrgStart(0x17D); - } - else if (trigger & BUTTON_CLEFT) { - if (map_ovl->sel_bx != 0) { - map_ovl->sel_bx--; - map_ovl->map_cursor_target_xpos -= mMP_BLOCK_SIZE_F; - cursor_moved = TRUE; + if ((trigger & (BUTTON_A | BUTTON_B | BUTTON_START)) || (menu->data0 == 1 && (trigger & BUTTON_X))) { + (*ovl->move_chg_base_proc)(menu, mSM_MOVE_OUT_TOP); + sAdo_SysTrgStart(0x17D); + } else if (trigger & BUTTON_CLEFT) { + if (map_ovl->sel_bx != 0) { + map_ovl->sel_bx--; + map_ovl->map_cursor_target_xpos -= mMP_BLOCK_SIZE_F; + cursor_moved = TRUE; + } + } else if (trigger & BUTTON_CDOWN) { + if (map_ovl->sel_bz < FG_BLOCK_Z_NUM - 1) { + map_ovl->sel_bz++; + map_ovl->map_cursor_target_zpos -= mMP_BLOCK_SIZE_F; + cursor_moved = TRUE; + } + } else if (trigger & BUTTON_CUP) { + if (map_ovl->sel_bz != 0) { + map_ovl->sel_bz--; + map_ovl->map_cursor_target_zpos += mMP_BLOCK_SIZE_F; + cursor_moved = TRUE; + } + } else if (trigger & BUTTON_CRIGHT) { + if (map_ovl->sel_bx < FG_BLOCK_X_NUM - 1) { + map_ovl->sel_bx++; + map_ovl->map_cursor_target_xpos += mMP_BLOCK_SIZE_F; + cursor_moved = TRUE; + } } - } - else if (trigger & BUTTON_CDOWN) { - if (map_ovl->sel_bz < FG_BLOCK_Z_NUM - 1) { - map_ovl->sel_bz++; - map_ovl->map_cursor_target_zpos -= mMP_BLOCK_SIZE_F; - cursor_moved = TRUE; - } - } - else if (trigger & BUTTON_CUP) { - if (map_ovl->sel_bz != 0) { - map_ovl->sel_bz--; - map_ovl->map_cursor_target_zpos += mMP_BLOCK_SIZE_F; - cursor_moved = TRUE; - } - } - else if (trigger & BUTTON_CRIGHT) { - if (map_ovl->sel_bx < FG_BLOCK_X_NUM - 1) { - map_ovl->sel_bx++; - map_ovl->map_cursor_target_xpos += mMP_BLOCK_SIZE_F; - cursor_moved = TRUE; - } - } - if (cursor_moved == TRUE) { - menu->proc_status = 2; // TODO: enum & name - sAdo_SysTrgStart(NA_SE_CURSOL); - } + if (cursor_moved == TRUE) { + menu->proc_status = 2; // TODO: enum & name + sAdo_SysTrgStart(NA_SE_CURSOL); + } - map_ovl->cursor_frame++; - if (map_ovl->cursor_frame >= mMP_CURSOR_FRAMES) { - map_ovl->cursor_frame %= mMP_CURSOR_FRAMES; - } - else if (map_ovl->cursor_frame < 0) { - map_ovl->cursor_frame = 0; - } + map_ovl->cursor_frame++; + if (map_ovl->cursor_frame >= mMP_CURSOR_FRAMES) { + map_ovl->cursor_frame %= mMP_CURSOR_FRAMES; + } else if (map_ovl->cursor_frame < 0) { + map_ovl->cursor_frame = 0; + } } static void mMP_move_Wait(Submenu* submenu, mSM_MenuInfo_c* menu) { - mMP_Overlay_c* map_ovl = submenu->overlay->map_ovl; - f32 x_remain = add_calc(&map_ovl->map_cursor_current_xpos, map_ovl->map_cursor_target_xpos, 0.7f, 19.0f, 1.8f); - f32 z_remain = add_calc(&map_ovl->map_cursor_current_zpos, map_ovl->map_cursor_target_zpos, 0.7f, 19.0f, 1.8f); + mMP_Overlay_c* map_ovl = submenu->overlay->map_ovl; + f32 x_remain = add_calc(&map_ovl->map_cursor_current_xpos, map_ovl->map_cursor_target_xpos, 0.7f, 19.0f, 1.8f); + f32 z_remain = add_calc(&map_ovl->map_cursor_current_zpos, map_ovl->map_cursor_target_zpos, 0.7f, 19.0f, 1.8f); - if (fabsf(x_remain) < 0.1f && fabsf(z_remain) < 0.1f) { - menu->proc_status = 1; - } + if (fabsf(x_remain) < 0.1f && fabsf(z_remain) < 0.1f) { + menu->proc_status = 1; + } } static void mMP_move_End(Submenu* submenu, mSM_MenuInfo_c* menu) { - (*submenu->overlay->move_End_proc)(submenu, menu); + (*submenu->overlay->move_End_proc)(submenu, menu); } typedef void (*mMP_MOVE_PROC)(Submenu*, mSM_MenuInfo_c*); static void mMP_map_ovl_move(Submenu* submenu) { - static mMP_MOVE_PROC ovl_move_proc[5] = { - &mMP_move_Move, - &mMP_move_Play, - &mMP_move_Wait, - (mMP_MOVE_PROC)&none_proc1, - &mMP_move_End - }; + static mMP_MOVE_PROC ovl_move_proc[5] = { &mMP_move_Move, &mMP_move_Play, &mMP_move_Wait, + (mMP_MOVE_PROC)&none_proc1, &mMP_move_End }; - Submenu_Overlay_c* ovl = submenu->overlay; - mSM_MenuInfo_c* menu = &ovl->menu_info[mSM_OVL_MAP]; + Submenu_Overlay_c* ovl = submenu->overlay; + mSM_MenuInfo_c* menu = &ovl->menu_info[mSM_OVL_MAP]; - (*menu->pre_move_func)(submenu); - (*ovl_move_proc[menu->proc_status])(submenu, menu); + (*menu->pre_move_func)(submenu); + (*ovl_move_proc[menu->proc_status])(submenu, menu); } static void mMP_map_draw_init() { - kan_win_wakuT_model_p = kan_win_wakuT_model; - kan_win_waku1T_model_p = kan_waku_w1T_model; - kan_win_waku2T_model_p = kan_waku_w2T_model; - kan_win_waku3T_model_p = kan_waku_w3T_model; - kan_win_waku4T_model_p = kan_waku_w4T_model; - kan_win_color0_mode_p = kan_win_color0_mode; - kan_win_color1_mode_p = kan_win_color1_mode; + kan_win_wakuT_model_p = kan_win_wakuT_model; + kan_win_waku1T_model_p = kan_waku_w1T_model; + kan_win_waku2T_model_p = kan_waku_w2T_model; + kan_win_waku3T_model_p = kan_waku_w3T_model; + kan_win_waku4T_model_p = kan_waku_w4T_model; + kan_win_color0_mode_p = kan_win_color0_mode; + kan_win_color1_mode_p = kan_win_color1_mode; } static int mMP_get_label_cnt(mMP_LabelInfo_c* label_info) { - int label_no = label_info->label_no; - if (label_no == mMP_LABEL_NPC || label_no == mMP_LABEL_PLAYER) { - return label_info->label_cnt; - } + int label_no = label_info->label_no; + if (label_no == mMP_LABEL_NPC || label_no == mMP_LABEL_PLAYER) { + return label_info->label_cnt; + } - return 1; + return 1; } static void mMP_set_house_dl(GRAPH* graph, mMP_Overlay_c* map_ovl, f32 pos_x, f32 pos_y) { - static f32 offset_x[3] = { 5.0f, 13.0f, 17.0f }; - static f32 offset_y[3] = { -4.0f, -11.0f, -18.0f }; + static f32 offset_x[3] = { 5.0f, 13.0f, 17.0f }; + static f32 offset_y[3] = { -4.0f, -11.0f, -18.0f }; - mMP_LabelInfo_c* label_info; - f32 y; - f32 base_x; - f32 temp_x; - f32 base_y; - mMP_ResidentInfo_c** resident_p; - int bz; - int bx; - int i; - Gfx* gfx; + mMP_LabelInfo_c* label_info; + f32 y; + f32 base_x; + f32 temp_x; + f32 base_y; + mMP_ResidentInfo_c** resident_p; + int bz; + int bx; + int i; + Gfx* gfx; - label_info = (mMP_LabelInfo_c*)map_ovl->label_info; + label_info = (mMP_LabelInfo_c*)map_ovl->label_info; - base_y = (pos_y + 45.7f) + (0.5f * mMP_BLOCK_SIZE_F); - base_x = (pos_x + 11.7f) - (0.5f * mMP_BLOCK_SIZE_F); + base_y = (pos_y + 45.7f) + (0.5f * mMP_BLOCK_SIZE_F); + base_x = (pos_x + 11.7f) - (0.5f * mMP_BLOCK_SIZE_F); - OPEN_DISP(graph); + OPEN_DISP(graph); - gfx = NOW_POLY_OPA_DISP; - gSPDisplayList(gfx++, kan_win_mode); + gfx = NOW_POLY_OPA_DISP; + gSPDisplayList(gfx++, kan_win_mode); - /* draw all villager houses */ + /* draw all villager houses */ - for (bz = 0; bz < FG_BLOCK_Z_NUM; bz++) { - temp_x = (pos_x + 11.7f) - (0.5f * mMP_BLOCK_SIZE_F); - for (bx = 0; bx < FG_BLOCK_X_NUM; bx++) { - if (label_info->label_no == mMP_LABEL_NPC) { - resident_p = label_info->residents; + for (bz = 0; bz < FG_BLOCK_Z_NUM; bz++) { + temp_x = (pos_x + 11.7f) - (0.5f * mMP_BLOCK_SIZE_F); + for (bx = 0; bx < FG_BLOCK_X_NUM; bx++) { + if (label_info->label_no == mMP_LABEL_NPC) { + resident_p = label_info->residents; - for (i = 0; i < label_info->label_cnt; i++) { - Matrix_scale(16.0f, 16.0f, 1.0f, 0); - Matrix_translate( - temp_x + offset_x[(*resident_p)->house_idx % 3], - base_y + offset_y[(*resident_p)->house_idx / 3], - 140.0f, - 1 - ); + for (i = 0; i < label_info->label_cnt; i++) { + Matrix_scale(16.0f, 16.0f, 1.0f, 0); + Matrix_translate(temp_x + offset_x[(*resident_p)->house_idx % 3], + base_y + offset_y[(*resident_p)->house_idx / 3], 140.0f, 1); - gSPMatrix(gfx++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(gfx++, kan_win_npc2T_table[(*resident_p)->house_layer]); + gSPMatrix(gfx++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(gfx++, kan_win_npc2T_table[(*resident_p)->house_layer]); - resident_p++; + resident_p++; + } + } + + temp_x += mMP_BLOCK_SIZE_F; + label_info++; } - } - temp_x += mMP_BLOCK_SIZE_F; - label_info++; + base_y -= mMP_BLOCK_SIZE_F; + // base_x = x_save; } - base_y -= mMP_BLOCK_SIZE_F; - //base_x = x_save; - } + /* draw "current acre" icon */ - /* draw "current acre" icon */ + Matrix_scale(16.0f, 16.0f, 1.0f, 0); + Matrix_translate( + ((pos_x + 11.7f) - (0.5f * mMP_BLOCK_SIZE_F) + (f32)map_ovl->player_bx * mMP_BLOCK_SIZE_F) + 3.0f + 5.0f, + (pos_y + 45.7f - (0.5f * mMP_BLOCK_SIZE_F) - (f32)map_ovl->player_bz * mMP_BLOCK_SIZE_F) + 4.0f + 5.0f, 140.0f, + 1); - Matrix_scale(16.0f, 16.0f, 1.0f, 0); - Matrix_translate( - ((pos_x + 11.7f) - (0.5f * mMP_BLOCK_SIZE_F) + (f32)map_ovl->player_bx * mMP_BLOCK_SIZE_F) + 3.0f + 5.0f, - (pos_y + 45.7f - (0.5f * mMP_BLOCK_SIZE_F) - (f32)map_ovl->player_bz * mMP_BLOCK_SIZE_F) + 4.0f + 5.0f, - 140.0f, - 1 - ); + gSPMatrix(gfx++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(gfx++, kan_win_genzaiT_model); - gSPMatrix(gfx++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(gfx++, kan_win_genzaiT_model); - - SET_POLY_OPA_DISP(gfx); - CLOSE_DISP(graph); + SET_POLY_OPA_DISP(gfx); + CLOSE_DISP(graph); } static void mMP_set_map_dl(GRAPH* graph, mMP_Overlay_c* map_ovl) { - int bz; - int bx; - int block = 0; - Gfx* gfx; + int bz; + int bx; + int block = 0; + Gfx* gfx; - OPEN_DISP(graph); + OPEN_DISP(graph); - gfx = NOW_POLY_OPA_DISP; - - gDPSetTextureAdjustMode(gfx++, G_TA_DOLPHIN); - gSPDisplayList(gfx++, kan_tizu_mode); - - Matrix_push(); - Matrix_translate(11.7f, 45.7f, 0.0f, 1); + gfx = NOW_POLY_OPA_DISP; - for (bz = 0; bz < FG_BLOCK_Z_NUM; bz++) { - for (bx = 0; bx < FG_BLOCK_X_NUM; bx++) { - gSPSegment(gfx++, G_MWO_SEGMENT_8, map_ovl->map_texture[block]); - gSPSegment(gfx++, G_MWO_SEGMENT_9, l_kan_tizu_pal[map_ovl->map_pal[block]]); - gSPMatrix(gfx++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(gfx++, kan_tizu_model); + gDPSetTextureAdjustMode(gfx++, G_TA_DOLPHIN); + gSPDisplayList(gfx++, kan_tizu_mode); - /* move right one acre */ - Matrix_translate(mMP_BLOCK_SIZE_F, 0.0f, 0.0f, 1); - block++; + Matrix_push(); + Matrix_translate(11.7f, 45.7f, 0.0f, 1); + + for (bz = 0; bz < FG_BLOCK_Z_NUM; bz++) { + for (bx = 0; bx < FG_BLOCK_X_NUM; bx++) { + gSPSegment(gfx++, G_MWO_SEGMENT_8, map_ovl->map_texture[block]); + gSPSegment(gfx++, G_MWO_SEGMENT_9, l_kan_tizu_pal[map_ovl->map_pal[block]]); + gSPMatrix(gfx++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(gfx++, kan_tizu_model); + + /* move right one acre */ + Matrix_translate(mMP_BLOCK_SIZE_F, 0.0f, 0.0f, 1); + block++; + } + + /* move left to '1' acre and down one acre */ + Matrix_translate((-mMP_BLOCK_SIZE_F) * FG_BLOCK_X_NUM, -mMP_BLOCK_SIZE_F, 0.0f, 1); } - /* move left to '1' acre and down one acre */ - Matrix_translate((-mMP_BLOCK_SIZE_F) * FG_BLOCK_X_NUM, -mMP_BLOCK_SIZE_F, 0.0f, 1); - } + Matrix_pull(); + gDPSetTextureAdjustMode(gfx++, G_TA_N64); - Matrix_pull(); - gDPSetTextureAdjustMode(gfx++, G_TA_N64); - - SET_POLY_OPA_DISP(gfx); - CLOSE_DISP(graph); + SET_POLY_OPA_DISP(gfx); + CLOSE_DISP(graph); } static void mMP_set_cursol_dl(GRAPH* graph, mMP_Overlay_c* map_ovl, f32 base_x, f32 base_y) { - static int col_g[mMP_CURSOR_FRAMES] = { - 0, - 1, - 2, - 5, - 10, - 20, - 50, - 75, - 90, - 100, - 90, - 75, - 50, - 20, - 10, - 5, - 2, - 1 - }; + static int col_g[mMP_CURSOR_FRAMES] = { 0, 1, 2, 5, 10, 20, 50, 75, 90, 100, 90, 75, 50, 20, 10, 5, 2, 1 }; - static f32 cursol_scale[mMP_CURSOR_FRAMES] = { - 1.0f, - 1.015f, - 1.03f, - 1.04f, - 1.05f, - 1.06f, - 1.07f, - 1.08f, - 1.09f, - 1.1f, - 1.09f, - 1.08f, - 1.07f, - 1.06f, - 1.05f, - 1.04f, - 1.03f, - 1.015f - }; + static f32 cursol_scale[mMP_CURSOR_FRAMES] = { 1.0f, 1.015f, 1.03f, 1.04f, 1.05f, 1.06f, 1.07f, 1.08f, 1.09f, + 1.1f, 1.09f, 1.08f, 1.07f, 1.06f, 1.05f, 1.04f, 1.03f, 1.015f }; - f32 x = map_ovl->map_cursor_current_xpos + base_x; - f32 y = map_ovl->map_cursor_current_zpos + base_y; - int frame = map_ovl->cursor_frame; - Gfx* gfx; + f32 x = map_ovl->map_cursor_current_xpos + base_x; + f32 y = map_ovl->map_cursor_current_zpos + base_y; + int frame = map_ovl->cursor_frame; + Gfx* gfx; - Matrix_scale(16.0f, 16.0f, 1.0f, 0); - Matrix_translate(x + 11.7f, y + 45.7f, 140.0f, 1); + Matrix_scale(16.0f, 16.0f, 1.0f, 0); + Matrix_translate(x + 11.7f, y + 45.7f, 140.0f, 1); - Matrix_scale(cursol_scale[frame], cursol_scale[frame], 1.0f, 1); + Matrix_scale(cursol_scale[frame], cursol_scale[frame], 1.0f, 1); - OPEN_DISP(graph); + OPEN_DISP(graph); - gfx = NOW_POLY_OPA_DISP; + gfx = NOW_POLY_OPA_DISP; - gSPMatrix(gfx++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gDPSetPrimColor(gfx++, 0, 255, 255, col_g[frame], 255, 255); - gSPDisplayList(gfx++, kan_win_cursorT_model); + gSPMatrix(gfx++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gDPSetPrimColor(gfx++, 0, 255, 255, col_g[frame], 255, 255); + gSPDisplayList(gfx++, kan_win_cursorT_model); - SET_POLY_OPA_DISP(gfx); + SET_POLY_OPA_DISP(gfx); - CLOSE_DISP(graph); + CLOSE_DISP(graph); } static void mMP_set_label_dl(GAME* game, mMP_LabelInfo_c* label_info, f32 xpos, f32 ypos) { - mMP_Label_c* label = mMP_label_data[label_info->label_no]; + mMP_Label_c* label = mMP_label_data[label_info->label_no]; - if (label != NULL) { - mMP_ResidentInfo_c** resident_p = label_info->residents; - mMP_LabelWord_c* word; - f32 base_x = 160.0f + xpos; - f32 base_y = 120.0f - ypos; - int i; + if (label != NULL) { + mMP_ResidentInfo_c** resident_p = label_info->residents; + mMP_LabelWord_c* word; + f32 base_x = 160.0f + xpos; + f32 base_y = 120.0f - ypos; + int i; - for (i = 0; i < mMP_LABEL_WORD_NUM; i++) { - word = label->words[i]; + for (i = 0; i < mMP_LABEL_WORD_NUM; i++) { + word = label->words[i]; - if (word != NULL) { - if (word->str == NULL) { - /* draw resident name label (villagers, players) */ - int j; + if (word != NULL) { + if (word->str == NULL) { + /* draw resident name label (villagers, players) */ + int j; - for (j = 0; j < label_info->label_cnt; j++) { - int width = mFont_GetStringWidth((*resident_p)->name, PLAYER_NAME_LEN, TRUE); - f32 scale_x = 54.0f / width; + for (j = 0; j < label_info->label_cnt; j++) { + int width = mFont_GetStringWidth((*resident_p)->name, PLAYER_NAME_LEN, TRUE); + f32 scale_x = 54.0f / width; - if (scale_x > 0.75f) { - scale_x = 0.75f; + if (scale_x > 0.75f) { + scale_x = 0.75f; + } + + if (resident_p[0]->sex != -1) { + mFont_SetLineStrings(game, resident_p[0]->name, PLAYER_NAME_LEN, base_x + word->ofs_x, + base_y - word->ofs_y, 255, 75, 40, 255, FALSE, TRUE, scale_x, 0.75f, + mFont_MODE_POLY); + } else { + mFont_SetLineStrings(game, resident_p[0]->name, PLAYER_NAME_LEN, base_x + word->ofs_x, + base_y - word->ofs_y, 165, 145, 140, 255, FALSE, TRUE, scale_x, 0.75f, + mFont_MODE_POLY); + } + + resident_p++; + base_y += 12.0f; + } + } else { + /* draw building name */ + mFont_SetLineStrings(game, word->str, word->str_len, base_x + word->ofs_x, base_y - word->ofs_y, + 120, 95, 205, 255, FALSE, TRUE, 0.75f, 0.75f, mFont_MODE_POLY); + } } - - if (resident_p[0]->sex != -1) { - mFont_SetLineStrings( - game, - resident_p[0]->name, PLAYER_NAME_LEN, - base_x + word->ofs_x, base_y - word->ofs_y, - 255, 75, 40, 255, - FALSE, TRUE, - scale_x, 0.75f, - mFont_MODE_POLY - ); - } - else { - mFont_SetLineStrings( - game, - resident_p[0]->name, PLAYER_NAME_LEN, - base_x + word->ofs_x, base_y - word->ofs_y, - 165, 145, 140, 255, - FALSE, TRUE, - scale_x, 0.75f, - mFont_MODE_POLY - ); - } - - resident_p++; - base_y += 12.0f; - } } - else { - /* draw building name */ - mFont_SetLineStrings( - game, - word->str, word->str_len, - base_x + word->ofs_x, base_y - word->ofs_y, - 120, 95, 205, 255, - FALSE, TRUE, - 0.75f, 0.75f, - mFont_MODE_POLY - ); - } - } } - } } static void mMP_set_base_dl(GRAPH* graph, mSM_MenuInfo_c* menu) { - Gfx* gfx; - - OPEN_DISP(graph); - gfx = NOW_POLY_OPA_DISP; - - if (menu->data0 == 0) { - gSPSegment(gfx++, G_MWO_SEGMENT_B, kan_win_color0_mode_p); - } - else { - gSPSegment(gfx++, G_MWO_SEGMENT_B, kan_win_color1_mode_p); - } - - gSPMatrix(gfx++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(gfx++, kan_win_model); - - SET_POLY_OPA_DISP(gfx); - CLOSE_DISP(graph); -} - -static void mMP_set_win_dl(GRAPH* graph, mMP_Overlay_c* map_ovl, mMP_LabelInfo_c* label_info) { - int label_count = label_info->label_cnt; - Gfx* gfx; - - OPEN_DISP(graph); - gfx = NOW_POLY_OPA_DISP; - - /* move X-acre number texture into segment 8 and Z-acre character texture int segment 9 */ - gSPSegment(gfx++, G_MWO_SEGMENT_8, kan_win_evw_anime_1_tex_table[map_ovl->sel_bx]); - gSPSegment(gfx++, G_MWO_SEGMENT_9, kan_win_evw_anime_2_tex_table[map_ovl->sel_bz]); - - /* move label area texture into segment 10 based on number of labels */ - if (label_count == 4) { - gSPSegment(gfx++, G_MWO_SEGMENT_A, kan_win_waku4T_model_p); - } - else if (label_count == 3) { - gSPSegment(gfx++, G_MWO_SEGMENT_A, kan_win_waku3T_model_p); - } - else if (label_count == 1) { - gSPSegment(gfx++, G_MWO_SEGMENT_A, kan_win_wakuT_model_p); - } - else if (label_count == 0) { - gSPSegment(gfx++, G_MWO_SEGMENT_A, kan_win_waku1T_model_p); - } - else { /* label_count == 2 */ - gSPSegment(gfx++, G_MWO_SEGMENT_A, kan_win_waku2T_model_p); - } - - gSPMatrix(gfx++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(gfx++, kan_win_model2); - - SET_POLY_OPA_DISP(gfx); - CLOSE_DISP(graph); -} - -static void mMP_set_label_top_dl(GRAPH* graph, mMP_LabelInfo_c* label_info) { - mMP_Label_c* label = mMP_label_data[label_info->label_no]; - mMP_ResidentInfo_c** resident_p; - - if (label != NULL) { - int count = mMP_get_label_cnt(label_info); - int i; Gfx* gfx; OPEN_DISP(graph); gfx = NOW_POLY_OPA_DISP; - Matrix_push(); - Matrix_translate(label->ofs_x, label->ofs_y, 0.0f, 1); - - if (label_info->label_no == mMP_LABEL_NPC) { - resident_p = label_info->residents; - } - else { - resident_p = NULL; + if (menu->data0 == 0) { + gSPSegment(gfx++, G_MWO_SEGMENT_B, kan_win_color0_mode_p); + } else { + gSPSegment(gfx++, G_MWO_SEGMENT_B, kan_win_color1_mode_p); } - for (i = 0; i < count; i++) { - gSPMatrix(gfx++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - - if (resident_p != NULL && *resident_p != NULL && (*resident_p)->house_layer != 0) { - gSPDisplayList(gfx++, kan_win_npcT_table[(*resident_p)->house_layer]); - resident_p++; - } - else { - gSPDisplayList(gfx++, label->gfx); - - if (resident_p != NULL) { - resident_p++; - } - } - - Matrix_translate(0.0f, -12.0f, 0.0f, 1); - } - - Matrix_pull(); + gSPMatrix(gfx++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(gfx++, kan_win_model); SET_POLY_OPA_DISP(gfx); CLOSE_DISP(graph); - } +} + +static void mMP_set_win_dl(GRAPH* graph, mMP_Overlay_c* map_ovl, mMP_LabelInfo_c* label_info) { + int label_count = label_info->label_cnt; + Gfx* gfx; + + OPEN_DISP(graph); + gfx = NOW_POLY_OPA_DISP; + + /* move X-acre number texture into segment 8 and Z-acre character texture int segment 9 */ + gSPSegment(gfx++, G_MWO_SEGMENT_8, kan_win_evw_anime_1_tex_table[map_ovl->sel_bx]); + gSPSegment(gfx++, G_MWO_SEGMENT_9, kan_win_evw_anime_2_tex_table[map_ovl->sel_bz]); + + /* move label area texture into segment 10 based on number of labels */ + if (label_count == 4) { + gSPSegment(gfx++, G_MWO_SEGMENT_A, kan_win_waku4T_model_p); + } else if (label_count == 3) { + gSPSegment(gfx++, G_MWO_SEGMENT_A, kan_win_waku3T_model_p); + } else if (label_count == 1) { + gSPSegment(gfx++, G_MWO_SEGMENT_A, kan_win_wakuT_model_p); + } else if (label_count == 0) { + gSPSegment(gfx++, G_MWO_SEGMENT_A, kan_win_waku1T_model_p); + } else { /* label_count == 2 */ + gSPSegment(gfx++, G_MWO_SEGMENT_A, kan_win_waku2T_model_p); + } + + gSPMatrix(gfx++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(gfx++, kan_win_model2); + + SET_POLY_OPA_DISP(gfx); + CLOSE_DISP(graph); +} + +static void mMP_set_label_top_dl(GRAPH* graph, mMP_LabelInfo_c* label_info) { + mMP_Label_c* label = mMP_label_data[label_info->label_no]; + mMP_ResidentInfo_c** resident_p; + + if (label != NULL) { + int count = mMP_get_label_cnt(label_info); + int i; + Gfx* gfx; + + OPEN_DISP(graph); + gfx = NOW_POLY_OPA_DISP; + + Matrix_push(); + Matrix_translate(label->ofs_x, label->ofs_y, 0.0f, 1); + + if (label_info->label_no == mMP_LABEL_NPC) { + resident_p = label_info->residents; + } else { + resident_p = NULL; + } + + for (i = 0; i < count; i++) { + gSPMatrix(gfx++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + if (resident_p != NULL && *resident_p != NULL && (*resident_p)->house_layer != 0) { + gSPDisplayList(gfx++, kan_win_npcT_table[(*resident_p)->house_layer]); + resident_p++; + } else { + gSPDisplayList(gfx++, label->gfx); + + if (resident_p != NULL) { + resident_p++; + } + } + + Matrix_translate(0.0f, -12.0f, 0.0f, 1); + } + + Matrix_pull(); + + SET_POLY_OPA_DISP(gfx); + CLOSE_DISP(graph); + } } static void mMP_set_dl(Submenu* submenu, GAME* game, mSM_MenuInfo_c* menu) { - static u8 land_color[2][4] = { - { 255, 0, 255, 255 }, - { 60, 60, 255, 255 }, - }; + static u8 land_color[2][4] = { + { 255, 0, 255, 255 }, + { 60, 60, 255, 255 }, + }; - GRAPH* graph = game->graph; - mMP_Overlay_c* map_ovl = submenu->overlay->map_ovl; - u8* col = land_color[menu->data0]; - mMP_LabelInfo_c* label_info = &map_ovl->label_info[map_ovl->sel_bz][map_ovl->sel_bx]; - u8* land_name; - f32 xpos = menu->position[0]; - f32 ypos = menu->position[1]; - f32 str_xpos; - f32 str_ypos; + GRAPH* graph = game->graph; + mMP_Overlay_c* map_ovl = submenu->overlay->map_ovl; + u8* col = land_color[menu->data0]; + mMP_LabelInfo_c* label_info = &map_ovl->label_info[map_ovl->sel_bz][map_ovl->sel_bx]; + u8* land_name; + f32 xpos = menu->position[0]; + f32 ypos = menu->position[1]; + f32 str_xpos; + f32 str_ypos; + Matrix_scale(16.0f, 16.0f, 1.0f, 0); + Matrix_translate(xpos, ypos, 140.0f, 1); - Matrix_scale(16.0f, 16.0f, 1.0f, 0); - Matrix_translate(xpos, ypos, 140.0f, 1); + mMP_set_base_dl(graph, menu); + mMP_set_map_dl(graph, map_ovl); + mMP_set_win_dl(graph, map_ovl, label_info); + mMP_set_label_top_dl(graph, label_info); + mMP_set_house_dl(graph, map_ovl, xpos, ypos); + mMP_set_cursol_dl(graph, map_ovl, xpos, ypos); - mMP_set_base_dl(graph, menu); - mMP_set_map_dl(graph, map_ovl); - mMP_set_win_dl(graph, map_ovl, label_info); - mMP_set_label_top_dl(graph, label_info); - mMP_set_house_dl(graph, map_ovl, xpos, ypos); - mMP_set_cursol_dl(graph, map_ovl, xpos, ypos); + (*submenu->overlay->set_char_matrix_proc)(graph); - (*submenu->overlay->set_char_matrix_proc)(graph); + /* draw town name */ + land_name = Save_Get(land_info.name); + str_xpos = (xpos + -136.0f) + 24.0f; + str_ypos = (ypos + 102.0f) + -29.0f; + mFont_SetLineStrings(game, land_name, map_ovl->land_name_str_len, str_xpos + 160.0f, 120.0f - str_ypos, col[0], + col[1], col[2], 255, FALSE, TRUE, 1.0f, 1.0f, mFont_MODE_POLY); - /* draw town name */ - land_name = Save_Get(land_info.name); - str_xpos = (xpos + -136.0f) + 24.0f; - str_ypos = (ypos + 102.0f) + -29.0f; - mFont_SetLineStrings( - game, - land_name, map_ovl->land_name_str_len, - str_xpos + 160.0f, 120.0f - str_ypos, - col[0], col[1], col[2], 255, - FALSE, TRUE, - 1.0f, 1.0f, - mFont_MODE_POLY - ); - - mMP_set_label_dl(game, label_info, xpos, ypos); + mMP_set_label_dl(game, label_info, xpos, ypos); } static void mMP_map_ovl_draw(Submenu* submenu, GAME* game) { - Submenu_Overlay_c* overlay = submenu->overlay; - mSM_MenuInfo_c* menu = &overlay->menu_info[mSM_OVL_MAP]; + Submenu_Overlay_c* overlay = submenu->overlay; + mSM_MenuInfo_c* menu = &overlay->menu_info[mSM_OVL_MAP]; - (*menu->pre_draw_func)(submenu, game); - mMP_set_dl(submenu, game, menu); + (*menu->pre_draw_func)(submenu, game); + mMP_set_dl(submenu, game, menu); } extern void mMP_map_ovl_set_proc(Submenu* submenu) { - Submenu_Overlay_c* overlay = submenu->overlay; + Submenu_Overlay_c* overlay = submenu->overlay; - overlay->menu_control.menu_move_func = &mMP_map_ovl_move; - overlay->menu_control.menu_draw_func = &mMP_map_ovl_draw; + overlay->menu_control.menu_move_func = &mMP_map_ovl_move; + overlay->menu_control.menu_draw_func = &mMP_map_ovl_draw; } static void mMP_map_ovl_init(Submenu* submenu) { - Submenu_Overlay_c* overlay = submenu->overlay; - mSM_MenuInfo_c* menu = &overlay->menu_info[mSM_OVL_MAP]; + Submenu_Overlay_c* overlay = submenu->overlay; + mSM_MenuInfo_c* menu = &overlay->menu_info[mSM_OVL_MAP]; - overlay->menu_control.animation_flag = FALSE; - (*submenu->overlay->move_chg_base_proc)(menu, mSM_MOVE_IN_TOP); + overlay->menu_control.animation_flag = FALSE; + (*submenu->overlay->move_chg_base_proc)(menu, mSM_MOVE_IN_TOP); - sAdo_SysTrgStart(0x17C); - mMP_set_init_data(submenu->overlay->map_ovl, menu); + sAdo_SysTrgStart(0x17C); + mMP_set_init_data(submenu->overlay->map_ovl, menu); } extern void mMP_map_ovl_construct(Submenu* submenu) { - Submenu_Overlay_c* overlay = submenu->overlay; + Submenu_Overlay_c* overlay = submenu->overlay; - if (overlay->map_ovl == NULL) { - overlay->map_ovl = (mMP_Overlay_c*)zelda_malloc(sizeof(mMP_Overlay_c)); - mem_clear((u8*)overlay->map_ovl, sizeof(mMP_Overlay_c), 0); - overlay->map_ovl->combination_table = data_combi_table; - mMP_map_draw_init(); - } + if (overlay->map_ovl == NULL) { + overlay->map_ovl = (mMP_Overlay_c*)zelda_malloc(sizeof(mMP_Overlay_c)); + mem_clear((u8*)overlay->map_ovl, sizeof(mMP_Overlay_c), 0); + overlay->map_ovl->combination_table = data_combi_table; + mMP_map_draw_init(); + } - mMP_map_ovl_init(submenu); - mMP_map_ovl_set_proc(submenu); + mMP_map_ovl_init(submenu); + mMP_map_ovl_set_proc(submenu); } extern void mMP_map_ovl_destruct(Submenu* submenu) { - mMP_Overlay_c* map_ovl = submenu->overlay->map_ovl; + mMP_Overlay_c* map_ovl = submenu->overlay->map_ovl; - if (map_ovl != NULL) { - zelda_free(map_ovl); - } + if (map_ovl != NULL) { + zelda_free(map_ovl); + } - submenu->overlay->map_ovl = NULL; + submenu->overlay->map_ovl = NULL; } diff --git a/src/m_museum.c b/src/m_museum.c index 7ee06e1b..116bc243 100644 --- a/src/m_museum.c +++ b/src/m_museum.c @@ -12,666 +12,653 @@ #include "m_random_field_h.h" #include "m_common_data.h" -static u8 l_museum_name_str[PLAYER_NAME_LEN] = { CHAR_M, CHAR_u, CHAR_s, CHAR_e, CHAR_u, CHAR_m, CHAR_SPACE, CHAR_SPACE }; /* "Museum " */ +static u8 l_museum_name_str[PLAYER_NAME_LEN] = { + CHAR_M, CHAR_u, CHAR_s, CHAR_e, CHAR_u, CHAR_m, CHAR_SPACE, CHAR_SPACE +}; /* "Museum " */ static u8 present_name[mIN_ITEM_NAME_LEN]; /* TODO: reversed bss order */ static Mail_c l_mmsm_mail; extern void mMsm_ClearRecord(mMsm_record_c* record) { - bzero(record, sizeof(mMsm_record_c)); + bzero(record, sizeof(mMsm_record_c)); } extern void mMsm_GetMuseumMailName(Mail_nm_c* name) { - mPr_ClearPersonalID(&name->personalID); - mPr_CopyPlayerName(name->personalID.player_name, l_museum_name_str); - name->type = mMl_NAME_TYPE_MUSEUM; + mPr_ClearPersonalID(&name->personalID); + mPr_CopyPlayerName(name->personalID.player_name, l_museum_name_str); + name->type = mMl_NAME_TYPE_MUSEUM; } static void mMsm_OrderInformationMail() { - Private_c* priv = Save_Get(private); - int i; + Private_c* priv = Save_Get(private_data); + int i; - for (i = 0; i < PLAYER_NUM; i++) { - if (mPr_NullCheckPersonalID(&priv->player_ID) == FALSE && mPr_CheckMuseumAddress(priv) == FALSE) { - priv->museum_record.send_info_mail = TRUE; + for (i = 0; i < PLAYER_NUM; i++) { + if (mPr_NullCheckPersonalID(&priv->player_ID) == FALSE && mPr_CheckMuseumAddress(priv) == FALSE) { + priv->museum_record.send_info_mail = TRUE; + } + + priv++; } - - priv++; - } } extern void mMsm_SendInformationMail() { - Private_c* priv = Save_Get(private); - int i; + Private_c* priv = Save_Get(private_data); + int i; - for (i = 0; i < PLAYER_NUM; i++) { - if (mPr_NullCheckPersonalID(&priv->player_ID) == FALSE && mPr_CheckMuseumInfoMail(priv)) { - if (mMl_send_mail_box(&priv->player_ID, i, &l_mmsm_mail, EMPTY_NO, ITM_PAPER24, mMl_MUSEUM_INFO_MAIL_NO, l_museum_name_str, mMl_DATA2) == TRUE) { - priv->museum_record.contacted = TRUE; - priv->museum_record.send_info_mail = FALSE; - } + for (i = 0; i < PLAYER_NUM; i++) { + if (mPr_NullCheckPersonalID(&priv->player_ID) == FALSE && mPr_CheckMuseumInfoMail(priv)) { + if (mMl_send_mail_box(&priv->player_ID, i, &l_mmsm_mail, EMPTY_NO, ITM_PAPER24, mMl_MUSEUM_INFO_MAIL_NO, + l_museum_name_str, mMl_DATA2) == TRUE) { + priv->museum_record.contacted = TRUE; + priv->museum_record.send_info_mail = FALSE; + } + } + + priv++; } - - priv++; - } } static void mMsm_GetFossil(mActor_name_t* fossil) { - static int hit_table[mMsm_FOSSIL_TYPE_NUM] = { FALSE, TRUE }; + static int hit_table[mMsm_FOSSIL_TYPE_NUM] = { FALSE, TRUE }; - *fossil = mSP_RandomOneFossilSelect(hit_table[RANDOM(mMsm_FOSSIL_TYPE_NUM)]); + *fossil = mSP_RandomOneFossilSelect(hit_table[RANDOM(mMsm_FOSSIL_TYPE_NUM)]); } static int mMsm_GetFossilMailNo(mActor_name_t fossil) { - static int mail_no_table[25] = { - 0x10E, 0x110, 0x10F, 0x111, - 0x113, 0x112, 0x114, 0x116, - 0x115, 0x117, 0x119, 0x118, - 0x11A, 0x11B, 0x11C, 0x11D, - 0x11E, 0x11F, 0x120, 0x121, - 0x126, 0x125, 0x123, 0x124, - 0x122 - }; + static int mail_no_table[25] = { 0x10E, 0x110, 0x10F, 0x111, 0x113, 0x112, 0x114, 0x116, 0x115, + 0x117, 0x119, 0x118, 0x11A, 0x11B, 0x11C, 0x11D, 0x11E, 0x11F, + 0x120, 0x121, 0x126, 0x125, 0x123, 0x124, 0x122 }; - int type = 0; // invalid item - - if (fossil >= FTR_DINO_TRICERA_SKULL && fossil <= FTR_DINO_TRILOBITE_WEST) { - type = 1; // valid fossil - } + int type = 0; // invalid item - return mail_no_table[type != 0 ? (fossil - FTR_DINO_TRICERA_SKULL) >> 2 : 0]; + if (fossil >= FTR_DINO_TRICERA_SKULL && fossil <= FTR_DINO_TRILOBITE_WEST) { + type = 1; // valid fossil + } + + return mail_no_table[type != 0 ? (fossil - FTR_DINO_TRICERA_SKULL) >> 2 : 0]; } static void mMsm_GetRemailAddIdx(int* add, int* shift, int idx) { - *add = (idx << 2) / 8; - *shift = idx - (*add * 2); + *add = (idx << 2) / 8; + *shift = idx - (*add * 2); } static int mMsm_Idx2RemailKind(mMsm_remail_info_c* remail_info, int idx) { - int kind = -1; - int add = 0; - int shift = 0; + int kind = -1; + int add = 0; + int shift = 0; - if (remail_info != NULL && idx >= 0 && idx < mMsm_REMAIL_SLOTS) { - mMsm_GetRemailAddIdx(&add, &shift, idx); - kind = (remail_info->types[add] >> (shift << 2)) & 7; - } + if (remail_info != NULL && idx >= 0 && idx < mMsm_REMAIL_SLOTS) { + mMsm_GetRemailAddIdx(&add, &shift, idx); + kind = (remail_info->types[add] >> (shift << 2)) & 7; + } - return kind; + return kind; } static int mMsm_GetRemailFreeIdx(mMsm_remail_info_c* remail_info) { - int idx = -1; + int idx = -1; - if (remail_info != NULL) { - int i; + if (remail_info != NULL) { + int i; - for (i = 0; i < mMsm_REMAIL_SLOTS; i++) { - int kind = mMsm_Idx2RemailKind(remail_info, i); - - if (kind == mMsm_REMAIL_KIND_CLEAR || kind >= mMsm_REMAIL_KIND_NUM) { - idx = i; - break; - } + for (i = 0; i < mMsm_REMAIL_SLOTS; i++) { + int kind = mMsm_Idx2RemailKind(remail_info, i); + + if (kind == mMsm_REMAIL_KIND_CLEAR || kind >= mMsm_REMAIL_KIND_NUM) { + idx = i; + break; + } + } } - } - return idx; + return idx; } static void mMsm_Idx2SetRemailInfo(mMsm_remail_info_c* remail_info, int idx, int remail_type, mActor_name_t item_no) { - int slot_idx = 0; - int nibble = 0; + int slot_idx = 0; + int nibble = 0; - if (remail_info != NULL && idx >= 0 && idx < mMsm_REMAIL_SLOTS) { - int i; - - mMsm_GetRemailAddIdx(&slot_idx, &nibble, idx); - i = slot_idx; + if (remail_info != NULL && idx >= 0 && idx < mMsm_REMAIL_SLOTS) { + int i; - if (nibble == 0) { - u8 raw = remail_info->types[i]; - remail_info->types[i] = (raw & 0xF0) | remail_type & 7; + mMsm_GetRemailAddIdx(&slot_idx, &nibble, idx); + i = slot_idx; + + if (nibble == 0) { + u8 raw = remail_info->types[i]; + remail_info->types[i] = (raw & 0xF0) | remail_type & 7; + } else { + u8 raw = remail_info->types[i]; + remail_info->types[i] = (raw & 0x0F) | (remail_type & 7) << 4; + } + + remail_info->items[idx] = item_no; } - else { - u8 raw = remail_info->types[i]; - remail_info->types[i] = (raw & 0x0F) | (remail_type & 7) << 4; - } - - remail_info->items[idx] = item_no; - } } static void mMsm_Idx2ClearRemailInfo(mMsm_remail_info_c* remail_info, int idx) { - mMsm_Idx2SetRemailInfo(remail_info, idx, mMsm_REMAIL_KIND_CLEAR, EMPTY_NO); + mMsm_Idx2SetRemailInfo(remail_info, idx, mMsm_REMAIL_KIND_CLEAR, EMPTY_NO); } static void mMsm_PushRemailInfo(mMsm_remail_info_c* remail_info) { - int active = TRUE; + int active = TRUE; - if (remail_info != NULL) { - while (active == TRUE) { - int first_free_idx; - - active = FALSE; - first_free_idx = mMsm_GetRemailFreeIdx(remail_info); + if (remail_info != NULL) { + while (active == TRUE) { + int first_free_idx; - if (first_free_idx != -1) { - int used_slot_idx = first_free_idx + 1; + active = FALSE; + first_free_idx = mMsm_GetRemailFreeIdx(remail_info); - /* Count up until we've found the first used slot or reach the end */ - while (used_slot_idx < mMsm_REMAIL_SLOTS) { - int remail_type = mMsm_Idx2RemailKind(remail_info, used_slot_idx); + if (first_free_idx != -1) { + int used_slot_idx = first_free_idx + 1; - if (remail_type > mMsm_REMAIL_KIND_CLEAR && remail_type < mMsm_REMAIL_KIND_NUM) { - mMsm_Idx2SetRemailInfo(remail_info, first_free_idx, remail_type, remail_info->items[used_slot_idx]); - mMsm_Idx2ClearRemailInfo(remail_info, used_slot_idx); - active = TRUE; /* Continue searching */ - break; - } + /* Count up until we've found the first used slot or reach the end */ + while (used_slot_idx < mMsm_REMAIL_SLOTS) { + int remail_type = mMsm_Idx2RemailKind(remail_info, used_slot_idx); - used_slot_idx++; + if (remail_type > mMsm_REMAIL_KIND_CLEAR && remail_type < mMsm_REMAIL_KIND_NUM) { + mMsm_Idx2SetRemailInfo(remail_info, first_free_idx, remail_type, + remail_info->items[used_slot_idx]); + mMsm_Idx2ClearRemailInfo(remail_info, used_slot_idx); + active = TRUE; /* Continue searching */ + break; + } + + used_slot_idx++; + } + } } - } } - } } static void mMsm_SetRemailInfo(mMsm_remail_info_c* remail_info, Private_c* priv, mActor_name_t item) { - int kind = mMsm_REMAIL_KIND_CLEAR; + int kind = mMsm_REMAIL_KIND_CLEAR; - if (item != EMPTY_NO) { - int free_idx; - int private_idx = mPr_GetPrivateIdx(&priv->player_ID); + if (item != EMPTY_NO) { + int free_idx; + int private_idx = mPr_GetPrivateIdx(&priv->player_ID); - if (private_idx == -1) { - kind = mMsm_REMAIL_KIND_FOREIGNER; - } - else { - switch (mMmd_GetDisplayInfo(item)) { - case mMmd_DISPLAY_CANNOT_DONATE: - { - kind = mMsm_REMAIL_KIND_CANNOT_DONATE; - break; + if (private_idx == -1) { + kind = mMsm_REMAIL_KIND_FOREIGNER; + } else { + switch (mMmd_GetDisplayInfo(item)) { + case mMmd_DISPLAY_CANNOT_DONATE: { + kind = mMsm_REMAIL_KIND_CANNOT_DONATE; + break; + } + + case mMmd_DISPLAY_CAN_DONATE: { + kind = mMsm_REMAIL_KIND_DONATED; + mMmd_RequestMuseumDisplay(item); + break; + } + + case mMmd_DISPLAY_ALREADY_DONATED: { + kind = mMsm_REMAIL_KIND_ALREADY_DONATED; + break; + } + } } - case mMmd_DISPLAY_CAN_DONATE: - { - kind = mMsm_REMAIL_KIND_DONATED; - mMmd_RequestMuseumDisplay(item); - break; + free_idx = mMsm_GetRemailFreeIdx(remail_info); + if (free_idx != -1) { + mMsm_Idx2SetRemailInfo(remail_info, free_idx, kind, item); } - - case mMmd_DISPLAY_ALREADY_DONATED: - { - kind = mMsm_REMAIL_KIND_ALREADY_DONATED; - break; - } - } } - - free_idx = mMsm_GetRemailFreeIdx(remail_info); - if (free_idx != -1) { - mMsm_Idx2SetRemailInfo(remail_info, free_idx, kind, item); - } - } } static void mMsm_SendResultMail() { - static int remail_no_table[mMsm_REMAIL_KIND_NUM - 1] = { 0x22D, 0x22B, 0x22C, 0x22E }; - //static u8 present_name[mIN_ITEM_NAME_LEN]; /* TODO: reversed bss order */ + static int remail_no_table[mMsm_REMAIL_KIND_NUM - 1] = { 0x22D, 0x22B, 0x22C, 0x22E }; + // static u8 present_name[mIN_ITEM_NAME_LEN]; /* TODO: reversed bss order */ - int send_num[PLAYER_NUM]; - Private_c* priv_p = Save_Get(private); - Private_c* priv = priv_p; - mActor_name_t present; - u8 send_flags = 0b1111; - mActor_name_t fossil = EMPTY_NO; - mMsm_remail_info_c* remail_info; - int idx; - int i; + int send_num[PLAYER_NUM]; + Private_c* priv_p = Save_Get(private_data); + Private_c* priv = priv_p; + mActor_name_t present; + u8 send_flags = 0b1111; + mActor_name_t fossil = EMPTY_NO; + mMsm_remail_info_c* remail_info; + int idx; + int i; - bzero(send_num, PLAYER_NUM * sizeof(int)); + bzero(send_num, PLAYER_NUM * sizeof(int)); - /* Send 'remail' info */ - for (i = 0; i < PLAYER_NUM; i++) { - if (mPr_NullCheckPersonalID(&priv->player_ID) == FALSE) { - mMsm_record_c* record = &priv->museum_record; - if (record->contacted == TRUE) { - int landname_len; - mActor_name_t item; - - remail_info = &record->remail_info; - for (idx = 0; idx < mMsm_REMAIL_SLOTS; idx++) { - int remail_kind; - - present = EMPTY_NO; - remail_kind = mMsm_Idx2RemailKind(remail_info, idx); - - if (remail_kind <= mMsm_REMAIL_KIND_CLEAR || remail_kind >= mMsm_REMAIL_KIND_NUM) { - break; /* Reached end of populated remail slots */ - } - - landname_len = mMsg_Get_Length_String(Save_Get(land_info.name), LAND_NAME_SIZE); - mHandbill_Set_free_str(mHandbill_FREE_STR0, Save_Get(land_info.name), landname_len); - - item = remail_info->items[idx]; - if (item != EMPTY_NO) { - mIN_copy_name_str(present_name, item); - mHandbill_Set_free_str(mHandbill_FREE_STR1, present_name, mIN_ITEM_NAME_LEN); - - if (remail_kind != mMsm_REMAIL_KIND_DONATED) { - present = remail_info->items[idx]; - } - } - - if (mMl_send_mail(&priv->player_ID, i, present, ITM_PAPER24, remail_no_table[remail_kind - 1], l_museum_name_str, mMl_DATA2)) { - mMsm_Idx2ClearRemailInfo(remail_info, idx); - send_num[i]++; - - if (send_num[i] >= mMsm_MAX_MAIL) { - send_flags &= ~(1 << i); - break; - } - } - else { - /* If attempted mail was unable to be received, remove this player from the send pool and stop processing */ - send_flags &= ~(1 << i); - break; - } - } - - mMsm_PushRemailInfo(remail_info); - } - else { - send_flags &= ~(1 << i); - } - } - else { - send_flags &= ~(1 << i); - } - - priv++; - } - - /* Send fossil mail */ - while (send_flags != 0) { - priv = priv_p; + /* Send 'remail' info */ for (i = 0; i < PLAYER_NUM; i++) { - if (((send_flags >> i) & 1) == 1) { - mMsm_record_c* record = &priv->museum_record; - if (record->stored_fossil_num != 0) { - int mail_no; - - mMsm_GetFossil(&fossil); - mail_no = mMsm_GetFossilMailNo(fossil); + if (mPr_NullCheckPersonalID(&priv->player_ID) == FALSE) { + mMsm_record_c* record = &priv->museum_record; + if (record->contacted == TRUE) { + int landname_len; + mActor_name_t item; - if (mMl_send_mail(&priv->player_ID, i, fossil, ITM_PAPER24, mail_no, l_museum_name_str, mMl_DATA2)) { - record->stored_fossil_num--; - send_num[i]++; + remail_info = &record->remail_info; + for (idx = 0; idx < mMsm_REMAIL_SLOTS; idx++) { + int remail_kind; - if (send_num[i] >= mMsm_MAX_MAIL) { - send_flags &= ~(1 << i); + present = EMPTY_NO; + remail_kind = mMsm_Idx2RemailKind(remail_info, idx); + + if (remail_kind <= mMsm_REMAIL_KIND_CLEAR || remail_kind >= mMsm_REMAIL_KIND_NUM) { + break; /* Reached end of populated remail slots */ + } + + landname_len = mMsg_Get_Length_String(Save_Get(land_info.name), LAND_NAME_SIZE); + mHandbill_Set_free_str(mHandbill_FREE_STR0, Save_Get(land_info.name), landname_len); + + item = remail_info->items[idx]; + if (item != EMPTY_NO) { + mIN_copy_name_str(present_name, item); + mHandbill_Set_free_str(mHandbill_FREE_STR1, present_name, mIN_ITEM_NAME_LEN); + + if (remail_kind != mMsm_REMAIL_KIND_DONATED) { + present = remail_info->items[idx]; + } + } + + if (mMl_send_mail(&priv->player_ID, i, present, ITM_PAPER24, remail_no_table[remail_kind - 1], + l_museum_name_str, mMl_DATA2)) { + mMsm_Idx2ClearRemailInfo(remail_info, idx); + send_num[i]++; + + if (send_num[i] >= mMsm_MAX_MAIL) { + send_flags &= ~(1 << i); + break; + } + } else { + /* If attempted mail was unable to be received, remove this player from the send pool and stop + * processing */ + send_flags &= ~(1 << i); + break; + } + } + + mMsm_PushRemailInfo(remail_info); + } else { + send_flags &= ~(1 << i); } - } - else { + } else { send_flags &= ~(1 << i); - } } - else { - send_flags &= ~(1 << i); - } - } - priv++; + priv++; + } + + /* Send fossil mail */ + while (send_flags != 0) { + priv = priv_p; + for (i = 0; i < PLAYER_NUM; i++) { + if (((send_flags >> i) & 1) == 1) { + mMsm_record_c* record = &priv->museum_record; + if (record->stored_fossil_num != 0) { + int mail_no; + + mMsm_GetFossil(&fossil); + mail_no = mMsm_GetFossilMailNo(fossil); + + if (mMl_send_mail(&priv->player_ID, i, fossil, ITM_PAPER24, mail_no, l_museum_name_str, + mMl_DATA2)) { + record->stored_fossil_num--; + send_num[i]++; + + if (send_num[i] >= mMsm_MAX_MAIL) { + send_flags &= ~(1 << i); + } + } else { + send_flags &= ~(1 << i); + } + } else { + send_flags &= ~(1 << i); + } + } + + priv++; + } } - } } extern void mMsm_SendMuseumMail(Mail_c* mail) { - Mail_nm_c* sender_name; - Private_c* priv = NULL; + Mail_nm_c* sender_name; + Private_c* priv = NULL; - if (mail != NULL && Common_Get(now_private) != NULL && mail->header.sender.type == mMl_NAME_TYPE_PLAYER) { - sender_name = &mail->header.sender; + if (mail != NULL && Common_Get(now_private) != NULL && mail->header.sender.type == mMl_NAME_TYPE_PLAYER) { + sender_name = &mail->header.sender; - if (mPr_NullCheckPersonalID(&sender_name->personalID) == FALSE) { - if (mPr_CheckCmpPersonalID(&sender_name->personalID, &Common_Get(now_private)->player_ID) == TRUE) { - priv = Common_Get(now_private); - } - else { - int priv_idx = mPr_GetPrivateIdx(&sender_name->personalID); - - if (priv_idx != -1) { - priv = Save_Get(private + priv_idx); - } - } + if (mPr_NullCheckPersonalID(&sender_name->personalID) == FALSE) { + if (mPr_CheckCmpPersonalID(&sender_name->personalID, &Common_Get(now_private)->player_ID) == TRUE) { + priv = Common_Get(now_private); + } else { + int priv_idx = mPr_GetPrivateIdx(&sender_name->personalID); - if (priv != NULL) { - mActor_name_t present = mail->present; - - if (present != EMPTY_NO && present != RSV_NO) { - mMsm_record_c* record = &priv->museum_record; - - if (present == ITM_FOSSIL) { - u8 stored_fossils = record->stored_fossil_num; - - if (stored_fossils < mMsm_REMAIL_SLOTS) { - record->stored_fossil_num = stored_fossils + 1; + if (priv_idx != -1) { + priv = Save_Get(private_data + priv_idx); + } + } + + if (priv != NULL) { + mActor_name_t present = mail->present; + + if (present != EMPTY_NO && present != RSV_NO) { + mMsm_record_c* record = &priv->museum_record; + + if (present == ITM_FOSSIL) { + u8 stored_fossils = record->stored_fossil_num; + + if (stored_fossils < mMsm_REMAIL_SLOTS) { + record->stored_fossil_num = stored_fossils + 1; + } + } else { + mMsm_SetRemailInfo(&record->remail_info, priv, present); + record->remail_pending = TRUE; + } + } } - } - else { - mMsm_SetRemailInfo(&record->remail_info, priv, present); - record->remail_pending = TRUE; - } } - } } - } } extern int mMsm_GetDepositAbleNum(mActor_name_t* fg_items, mCoBG_Collision_u* col_data) { - int depositable_num = 0; - int i; + int depositable_num = 0; + int i; - if (fg_items != NULL && col_data != NULL) { - for (i = 0; i < UT_TOTAL_NUM; i++) { - if (*fg_items == EMPTY_NO && mCoBG_CheckHole_OrgAttr(col_data->data.unit_attribute)) { - depositable_num++; - } + if (fg_items != NULL && col_data != NULL) { + for (i = 0; i < UT_TOTAL_NUM; i++) { + if (*fg_items == EMPTY_NO && mCoBG_CheckHole_OrgAttr(col_data->data.unit_attribute)) { + depositable_num++; + } - fg_items++; - col_data++; + fg_items++; + col_data++; + } } - } - return depositable_num; + return depositable_num; } static int mMsm_GetDepositAbleNum_cancel(mActor_name_t* fg_items, mCoBG_Collision_u* col_data, u16* cancel_ut) { - int depositable_num = 0; - int ut_z; + int depositable_num = 0; + int ut_z; + + if (fg_items != NULL && col_data != NULL) { + for (ut_z = 0; ut_z < UT_Z_NUM; ut_z++) { + int ut_x; + for (ut_x = 0; ut_x < UT_X_NUM; ut_x++) { + if ((((*cancel_ut) >> ut_x) & 1) != TRUE && *fg_items == EMPTY_NO && + mCoBG_CheckHole_OrgAttr(col_data->data.unit_attribute)) { + depositable_num++; + } + + fg_items++; + col_data++; + } + + cancel_ut++; + } + } + + return depositable_num; +} + +extern void mMsm_DepositItemBlock_cancel(mActor_name_t* fg_items, mActor_name_t deposit_item, + mCoBG_Collision_u* col_data, u16* deposit, u16* cancel_ut, u8 valid_ut_count) { + int deposit_idx = RANDOM(valid_ut_count); + int ut_z; - if (fg_items != NULL && col_data != NULL) { for (ut_z = 0; ut_z < UT_Z_NUM; ut_z++) { - int ut_x; - for (ut_x = 0; ut_x < UT_X_NUM; ut_x++) { - if ((((*cancel_ut) >> ut_x) & 1) != TRUE && *fg_items == EMPTY_NO && mCoBG_CheckHole_OrgAttr(col_data->data.unit_attribute)) { - depositable_num++; + int ut_x; + + for (ut_x = 0; ut_x < UT_X_NUM; ut_x++) { + if ((((*cancel_ut) >> ut_x) & 1) != TRUE && *fg_items == EMPTY_NO && + mCoBG_CheckHole_OrgAttr(col_data->data.unit_attribute)) { + if (deposit_idx == 0) { + *fg_items = deposit_item; + ut_z = UT_Z_NUM; // break out of outer loop + *deposit |= (1 << ut_x); + break; + } else { + deposit_idx--; + } + } + + fg_items++; + col_data++; + } + + deposit++; + cancel_ut++; + } +} + +extern void mMsm_DepositItemBlock(mActor_name_t* fg_items, mActor_name_t item, int block_x, int block_z, u16* deposit, + u8 valid_ut_count) { + mCoBG_Collision_u* col_data = mFI_GetBkNum2ColTop(block_x, block_z); + int deposit_idx = RANDOM(valid_ut_count); + int ut; + + for (ut = 0; ut < UT_TOTAL_NUM; ut++) { + if (*fg_items == EMPTY_NO && mCoBG_CheckHole_OrgAttr(col_data->data.unit_attribute)) { + if (deposit_idx == 0) { + int ut_x = ut & (UT_X_NUM - 1); + int ut_z = ut >> 4; + + if (item != ITM_PITFALL) { + *fg_items = item; + deposit[ut_z] |= (1 << ut_x); + } else { + int hole_num = mCoBG_BnumUnum2HoleNumber(block_x, block_z, ut_x, ut_z); + + if (hole_num != -1) { + *fg_items = BURIED_PITFALL_START + hole_num; + } + } + + break; + } else { + deposit_idx--; + } } fg_items++; col_data++; - } - - cancel_ut++; } - } - - return depositable_num; } -extern void mMsm_DepositItemBlock_cancel(mActor_name_t* fg_items, mActor_name_t deposit_item, mCoBG_Collision_u* col_data, u16* deposit, u16* cancel_ut, u8 valid_ut_count) { - int deposit_idx = RANDOM(valid_ut_count); - int ut_z; - - for (ut_z = 0; ut_z < UT_Z_NUM; ut_z++) { - int ut_x; - - for (ut_x = 0; ut_x < UT_X_NUM; ut_x++) { - if ((((*cancel_ut) >> ut_x) & 1) != TRUE && *fg_items == EMPTY_NO && mCoBG_CheckHole_OrgAttr(col_data->data.unit_attribute)) { - if (deposit_idx == 0) { - *fg_items = deposit_item; - ut_z = UT_Z_NUM; // break out of outer loop - *deposit |= (1 << ut_x); - break; - } - else { - deposit_idx--; - } - } - - fg_items++; - col_data++; - } - - deposit++; - cancel_ut++; - } -} - -extern void mMsm_DepositItemBlock(mActor_name_t* fg_items, mActor_name_t item, int block_x, int block_z, u16* deposit, u8 valid_ut_count) { - mCoBG_Collision_u* col_data = mFI_GetBkNum2ColTop(block_x, block_z); - int deposit_idx = RANDOM(valid_ut_count); - int ut; - - for (ut = 0; ut < UT_TOTAL_NUM; ut++) { - if (*fg_items == EMPTY_NO && mCoBG_CheckHole_OrgAttr(col_data->data.unit_attribute)) { - if (deposit_idx == 0) { - int ut_x = ut & (UT_X_NUM - 1); - int ut_z = ut >> 4; - - if (item != ITM_PITFALL) { - *fg_items = item; - deposit[ut_z] |= (1 << ut_x); - } - else { - int hole_num = mCoBG_BnumUnum2HoleNumber(block_x, block_z, ut_x, ut_z); - - if (hole_num != -1) { - *fg_items = BURIED_PITFALL_START + hole_num; - } - } - - break; - } - else { - deposit_idx--; - } - } - - fg_items++; - col_data++; - } -} - -static void mMsm_DepositFossilBlock(mActor_name_t* fg_items, mCoBG_Collision_u* col_data, u16* deposit, u16* cancel, u8 valid_ut_count) { - mMsm_DepositItemBlock_cancel(fg_items, ITM_FOSSIL, col_data, deposit, cancel, valid_ut_count); +static void mMsm_DepositFossilBlock(mActor_name_t* fg_items, mCoBG_Collision_u* col_data, u16* deposit, u16* cancel, + u8 valid_ut_count) { + mMsm_DepositItemBlock_cancel(fg_items, ITM_FOSSIL, col_data, deposit, cancel, valid_ut_count); } static void mMsm_DepositFossilBlockLine(int line, u16* cancel_ut) { - /* NOTE: line is a column (of Z-acres, for example the 1 column) */ + /* NOTE: line is a column (of Z-acres, for example the 1 column) */ - int depositable_acres; - u8 depositable_line[FG_BLOCK_Z_NUM]; - u16* cancel_ut_p; - int block_x = line + 1; - int block_z; + int depositable_acres; + u8 depositable_line[FG_BLOCK_Z_NUM]; + u16* cancel_ut_p; + int block_x = line + 1; + int block_z; - cancel_ut_p = cancel_ut; - depositable_acres = 0; - bzero(depositable_line, FG_BLOCK_Z_NUM * sizeof(u8)); - - for (block_z = 0; block_z < FG_BLOCK_Z_NUM; block_z++) { - int bad_acre = mFI_CheckBlockKind_OR( - block_x, block_z + 1, - mRF_BLOCKKIND_PLAYER | mRF_BLOCKKIND_SHRINE | mRF_BLOCKKIND_STATION | mRF_BLOCKKIND_POOL | mRF_BLOCKKIND_DUMP - ); - - if (bad_acre == FALSE) { - depositable_line[block_z] = mMsm_GetDepositAbleNum_cancel(Save_Get(fg[block_z][line]).items[0], mFI_GetBkNum2ColTop(block_x, block_z + 1), cancel_ut); - - if (depositable_line[block_z] != 0) { - depositable_acres++; - } - } - - cancel_ut += UT_Z_NUM * FG_BLOCK_X_NUM; - } - - if (depositable_acres > 0) { - int selected_z_acre; - - cancel_ut = cancel_ut_p; - selected_z_acre = RANDOM(depositable_acres); + cancel_ut_p = cancel_ut; + depositable_acres = 0; + bzero(depositable_line, FG_BLOCK_Z_NUM * sizeof(u8)); for (block_z = 0; block_z < FG_BLOCK_Z_NUM; block_z++) { - if (depositable_line[block_z] != 0) { - if (selected_z_acre == 0) { - mMsm_DepositFossilBlock(Save_Get(fg[block_z][line]).items[0], mFI_GetBkNum2ColTop(block_x, block_z + 1), Save_Get(deposit[line + block_z * FG_BLOCK_X_NUM]), cancel_ut, depositable_line[block_z]); - return; - } - else { - selected_z_acre--; - } - } + int bad_acre = mFI_CheckBlockKind_OR(block_x, block_z + 1, + mRF_BLOCKKIND_PLAYER | mRF_BLOCKKIND_SHRINE | mRF_BLOCKKIND_STATION | + mRF_BLOCKKIND_POOL | mRF_BLOCKKIND_DUMP); - cancel_ut += UT_Z_NUM * FG_BLOCK_X_NUM; + if (bad_acre == FALSE) { + depositable_line[block_z] = mMsm_GetDepositAbleNum_cancel( + Save_Get(fg[block_z][line]).items[0], mFI_GetBkNum2ColTop(block_x, block_z + 1), cancel_ut); + + if (depositable_line[block_z] != 0) { + depositable_acres++; + } + } + + cancel_ut += UT_Z_NUM * FG_BLOCK_X_NUM; + } + + if (depositable_acres > 0) { + int selected_z_acre; + + cancel_ut = cancel_ut_p; + selected_z_acre = RANDOM(depositable_acres); + + for (block_z = 0; block_z < FG_BLOCK_Z_NUM; block_z++) { + if (depositable_line[block_z] != 0) { + if (selected_z_acre == 0) { + mMsm_DepositFossilBlock( + Save_Get(fg[block_z][line]).items[0], mFI_GetBkNum2ColTop(block_x, block_z + 1), + Save_Get(deposit[line + block_z * FG_BLOCK_X_NUM]), cancel_ut, depositable_line[block_z]); + return; + } else { + selected_z_acre--; + } + } + + cancel_ut += UT_Z_NUM * FG_BLOCK_X_NUM; + } } - } } extern int mMsm_RecordDepositFossil(u8* record, mActor_name_t item, int block_x) { - int res = FALSE; + int res = FALSE; - if (item == ITM_FOSSIL) { - *record |= (1 << block_x); - res = TRUE; - } + if (item == ITM_FOSSIL) { + *record |= (1 << block_x); + res = TRUE; + } - return res; + return res; } extern u8 mMsm_GetDepositBlockNum(u8 record) { - u8 deposit_block_num = 0; - int block_x; + u8 deposit_block_num = 0; + int block_x; - for (block_x = 0; block_x < FG_BLOCK_X_NUM; block_x++) { - if (((record >> (block_x + 1)) & 1) == TRUE) { - deposit_block_num++; + for (block_x = 0; block_x < FG_BLOCK_X_NUM; block_x++) { + if (((record >> (block_x + 1)) & 1) == TRUE) { + deposit_block_num++; + } } - } - return deposit_block_num; + return deposit_block_num; } extern void mMsm_DepositFossil(u8 deposit_record, int fossil_count, u16* cancel_ut, int send_order_info) { - int deposit_count; - u16* cancel_ut_p = cancel_ut; - u8 already_deposited = mMsm_GetDepositBlockNum(deposit_record); - u8 available_blocks; - - if (fossil_count < mMsm_DEPOSIT_FOSSIL_MAX) { - deposit_count = mMsm_DEPOSIT_FOSSIL_MAX - fossil_count; - available_blocks = FG_BLOCK_X_NUM - already_deposited; + int deposit_count; + u16* cancel_ut_p = cancel_ut; + u8 already_deposited = mMsm_GetDepositBlockNum(deposit_record); + u8 available_blocks; - while (deposit_count > 0 && available_blocks != 0) { - int selected_row; - int block_x; + if (fossil_count < mMsm_DEPOSIT_FOSSIL_MAX) { + deposit_count = mMsm_DEPOSIT_FOSSIL_MAX - fossil_count; + available_blocks = FG_BLOCK_X_NUM - already_deposited; - cancel_ut = cancel_ut_p; - selected_row = RANDOM(available_blocks); - - for (block_x = 0; block_x < FG_BLOCK_X_NUM; block_x++) { - if (((deposit_record >> (block_x + 1)) & 1) == FALSE) { - if (selected_row <= 0) { - mMsm_DepositFossilBlockLine(block_x, cancel_ut); - available_blocks--; - deposit_record |= (1 << (block_x + 1)); - break; - } - else { - selected_row--; - } + while (deposit_count > 0 && available_blocks != 0) { + int selected_row; + int block_x; + + cancel_ut = cancel_ut_p; + selected_row = RANDOM(available_blocks); + + for (block_x = 0; block_x < FG_BLOCK_X_NUM; block_x++) { + if (((deposit_record >> (block_x + 1)) & 1) == FALSE) { + if (selected_row <= 0) { + mMsm_DepositFossilBlockLine(block_x, cancel_ut); + available_blocks--; + deposit_record |= (1 << (block_x + 1)); + break; + } else { + selected_row--; + } + } + + cancel_ut += UT_Z_NUM; + } + + deposit_count--; } - cancel_ut += UT_Z_NUM; - } - - deposit_count--; + if (send_order_info) { + mMsm_OrderInformationMail(); + } } - if (send_order_info) { - mMsm_OrderInformationMail(); - } - } - - mMsm_SendResultMail(); - mMsm_SendInformationMail(); + mMsm_SendResultMail(); + mMsm_SendInformationMail(); } static void mMsm_SetPrivateCompMail(Private_c* priv, int flag) { - if (priv != NULL) { - priv->state_flags |= flag; - } + if (priv != NULL) { + priv->state_flags |= flag; + } } static int mMsm_CheckSendCompMail() { - Private_c* priv = Save_Get(private); - int res = FALSE; - int i; - - for (i = 0; i < PLAYER_NUM; i++) { - if (mPr_NullCheckPersonalID(&priv->player_ID) == FALSE && (priv->state_flags & mPr_FLAG_MUSEUM_COMP_HANDBILL_SCHEDULED)) { - res = TRUE; - break; + Private_c* priv = Save_Get(private_data); + int res = FALSE; + int i; + + for (i = 0; i < PLAYER_NUM; i++) { + if (mPr_NullCheckPersonalID(&priv->player_ID) == FALSE && + (priv->state_flags & mPr_FLAG_MUSEUM_COMP_HANDBILL_SCHEDULED)) { + res = TRUE; + break; + } + + priv++; } - priv++; - } - - return res; + return res; } static void mMsm_SetSendCompMail() { - Private_c* priv = Save_Get(private); - int i; + Private_c* priv = Save_Get(private_data); + int i; - for (i = 0; i < PLAYER_NUM; i++) { - if (mPr_NullCheckPersonalID(&priv->player_ID) == FALSE) { - mMsm_SetPrivateCompMail(priv, mPr_FLAG_MUSEUM_COMP_HANDBILL_SCHEDULED); + for (i = 0; i < PLAYER_NUM; i++) { + if (mPr_NullCheckPersonalID(&priv->player_ID) == FALSE) { + mMsm_SetPrivateCompMail(priv, mPr_FLAG_MUSEUM_COMP_HANDBILL_SCHEDULED); + } + + priv++; } - - priv++; - } } extern void mMsm_SetCompMail() { - if ( - mMsm_CheckSendCompMail() == FALSE && - mMmd_CountDisplayedFossil() == mMmd_FOSSIL_NUM && - mMmd_CountDisplayedArt() == mMmd_ART_NUM && - mMmd_CountDisplayedInsect() == mMmd_INSECT_NUM && - mMmd_CountDisplayedFish() == mMmd_FISH_NUM - ) { - mMsm_SetSendCompMail(); - } + if (mMsm_CheckSendCompMail() == FALSE && mMmd_CountDisplayedFossil() == mMmd_FOSSIL_NUM && + mMmd_CountDisplayedArt() == mMmd_ART_NUM && mMmd_CountDisplayedInsect() == mMmd_INSECT_NUM && + mMmd_CountDisplayedFish() == mMmd_FISH_NUM) { + mMsm_SetSendCompMail(); + } } extern void mMsm_SendCompMail() { - Private_c* priv = Save_Get(private); - int state_flags; - int i; + Private_c* priv = Save_Get(private_data); + int state_flags; + int i; - for (i = 0; i < PLAYER_NUM; i++) { - state_flags = priv->state_flags; - if (mPr_NullCheckPersonalID(&priv->player_ID) == FALSE) { - /* Send completion letter & reward if scheduled but not yet received. */ - - if ( - (state_flags & mPr_FLAG_MUSEUM_COMP_HANDBILL_SCHEDULED) != 0 && - (state_flags & mPr_FLAG_MUSEUM_COMP_HANDBILL_RECEIVED) == 0 - ) { - int land_name_len = mMsg_Get_Length_String(Save_Get(land_info.name), LAND_NAME_SIZE); - - mHandbill_Set_free_str(mHandbill_FREE_STR0, Save_Get(land_info.name), land_name_len); + for (i = 0; i < PLAYER_NUM; i++) { + state_flags = priv->state_flags; + if (mPr_NullCheckPersonalID(&priv->player_ID) == FALSE) { + /* Send completion letter & reward if scheduled but not yet received. */ - if (mMl_send_mail_postoffice(&priv->player_ID, i, FTR_MUSEUM_MODEL, ITM_PAPER24, 0x22F, l_museum_name_str, mMl_DATA2, mMl_TYPE_MAIL) == TRUE) { - mMsm_SetPrivateCompMail(priv, mPr_FLAG_MUSEUM_COMP_HANDBILL_RECEIVED); + if ((state_flags & mPr_FLAG_MUSEUM_COMP_HANDBILL_SCHEDULED) != 0 && + (state_flags & mPr_FLAG_MUSEUM_COMP_HANDBILL_RECEIVED) == 0) { + int land_name_len = mMsg_Get_Length_String(Save_Get(land_info.name), LAND_NAME_SIZE); + + mHandbill_Set_free_str(mHandbill_FREE_STR0, Save_Get(land_info.name), land_name_len); + + if (mMl_send_mail_postoffice(&priv->player_ID, i, FTR_MUSEUM_MODEL, ITM_PAPER24, 0x22F, + l_museum_name_str, mMl_DATA2, mMl_TYPE_MAIL) == TRUE) { + mMsm_SetPrivateCompMail(priv, mPr_FLAG_MUSEUM_COMP_HANDBILL_RECEIVED); + } + } } - } - } - priv++; - } + priv++; + } } diff --git a/src/m_needlework.c b/src/m_needlework.c index 0d158fc2..e3721607 100644 --- a/src/m_needlework.c +++ b/src/m_needlework.c @@ -9,371 +9,351 @@ /** * @brief Initializes all designs' palette indexes for a player. - * + * * @param player_no The index of the player whose designs will be updated **/ static void mNW_InitMyOriginalPallet(int player_no) { - static u8 pal_table[mPr_ORIGINAL_DESIGN_COUNT] = { - 0, 8, 7, 7, - 0, 0, 0, 0 - }; + static u8 pal_table[mPr_ORIGINAL_DESIGN_COUNT] = { 0, 8, 7, 7, 0, 0, 0, 0 }; - int i; + int i; - for (i = 0; i < mPr_ORIGINAL_DESIGN_COUNT; i++) { - Save_Set(private[player_no & 3].my_org[i & 7].palette, pal_table[i]); - } + for (i = 0; i < mPr_ORIGINAL_DESIGN_COUNT; i++) { + Save_Set(private_data[player_no & 3].my_org[i & 7].palette, pal_table[i]); + } } /** * @brief Initializes all designs' names for a player. - * + * * @param player_no The index of the player whose designs will be renamed **/ static void mNW_InitMyOriginalName(int player_no) { - int i; + int i; - player_no &= 3; - for (i = 0; i < mPr_ORIGINAL_DESIGN_COUNT; i++) { - /* TODO: define for the string index? */ - mString_Load_StringFromRom( - Save_Get(private[player_no].my_org[i & 7].name), - mNW_ORIGINAL_DESIGN_NAME_LEN, - 0x6DF + i - ); - } + player_no &= 3; + for (i = 0; i < mPr_ORIGINAL_DESIGN_COUNT; i++) { + /* TODO: define for the string index? */ + mString_Load_StringFromRom(Save_Get(private_data[player_no].my_org[i & 7].name), mNW_ORIGINAL_DESIGN_NAME_LEN, + 0x6DF + i); + } } /** * @brief Initializes all designs' textures for a player. - * + * * @param player_no The index of the player whose designs will be updated **/ static void mNW_InitMyOriginalTexture(int player_no) { - int i; + int i; - player_no &= 3; - for (i = 0; i < mNW_DEFAULT_ORIGINAL_TEX_NUM; i++) { - _JW_GetResourceAram( - JW_GetAramAddress(27) + i * mNW_DESIGN_TEX_SIZE, - Save_Get(private[player_no].my_org[i & 7].design.data), - mNW_DESIGN_TEX_SIZE - ); - } + player_no &= 3; + for (i = 0; i < mNW_DEFAULT_ORIGINAL_TEX_NUM; i++) { + _JW_GetResourceAram(JW_GetAramAddress(27) + i * mNW_DESIGN_TEX_SIZE, + Save_Get(private_data[player_no].my_org[i & 7].design.data), mNW_DESIGN_TEX_SIZE); + } } /** * @brief Initializes all designs for all players. **/ extern void mNW_InitMyOriginal() { - int i; + int i; - for (i = 0; i < PLAYER_NUM; i++) { - mNW_InitOneMyOriginal(i); - } + for (i = 0; i < PLAYER_NUM; i++) { + mNW_InitOneMyOriginal(i); + } } /** * @brief Initializes a single player's designs. - * + * * @param player_no The index of the player whose designs will be initialized. **/ extern void mNW_InitOneMyOriginal(int player_no) { - int i; + int i; - mNW_InitMyOriginalPallet(player_no & 3); - mNW_InitMyOriginalName(player_no & 3); - mNW_InitMyOriginalTexture(player_no & 3); + mNW_InitMyOriginalPallet(player_no & 3); + mNW_InitMyOriginalName(player_no & 3); + mNW_InitMyOriginalTexture(player_no & 3); - for (i = mNW_DEFAULT_ORIGINAL_TEX_NUM; i < mPr_ORIGINAL_DESIGN_COUNT; i++) { - mNW_InitOriginalData(Save_Get(private[player_no].my_org + (i & 7))); - } + for (i = mNW_DEFAULT_ORIGINAL_TEX_NUM; i < mPr_ORIGINAL_DESIGN_COUNT; i++) { + mNW_InitOriginalData(Save_Get(private_data[player_no].my_org + (i & 7))); + } } /** * @brief Copies a default design texture into the supplied buffer. - * + * * @param dst The destination design texture buffer * @param tex_no The index of the texture to retrieve (0-7) **/ static void mNW_CopyNeedleworkDefaultTexture(u8* dst, int tex_no) { - u32 addr = JW_GetAramAddress(28); - _JW_GetResourceAram( - addr + (tex_no & 7) * mNW_DESIGN_TEX_SIZE, - dst, - mNW_DESIGN_TEX_SIZE - ); + u32 addr = JW_GetAramAddress(28); + _JW_GetResourceAram(addr + (tex_no & 7) * mNW_DESIGN_TEX_SIZE, dst, mNW_DESIGN_TEX_SIZE); } /** * @brief Initializes all Able Sisters' designs to their default textures. **/ static void mNW_InitNeedleworkTexture() { - int i; + int i; - for (i = 0; i < mNW_TOTAL_DESIGN_NUM; i++) { - mNW_CopyNeedleworkDefaultTexture(Save_Get(needlework.original_design[i & 7].design.data), i); - } + for (i = 0; i < mNW_TOTAL_DESIGN_NUM; i++) { + mNW_CopyNeedleworkDefaultTexture(Save_Get(needlework.original_design[i & 7].design.data), i); + } } /** * @brief Initializes all Able Sisters' designs to their default palettes. **/ static void mNW_InitNeedleworkPelatteNo() { - static u8 pal_table[mNW_TOTAL_DESIGN_NUM] = { - 7, 1, 10, 3, - 6, 0, 6, 7 - }; + static u8 pal_table[mNW_TOTAL_DESIGN_NUM] = { 7, 1, 10, 3, 6, 0, 6, 7 }; - int i; + int i; - for (i = 0; i < mNW_TOTAL_DESIGN_NUM; i++) { - Save_Set(needlework.original_design[i & 7].palette, pal_table[i]); - } + for (i = 0; i < mNW_TOTAL_DESIGN_NUM; i++) { + Save_Set(needlework.original_design[i & 7].palette, pal_table[i]); + } } /** * @brief Initializes all Able Sisters' designs to their default names. **/ static void mNW_InitNeedleworkTextureName() { - int i; + int i; - for (i = 0; i < mNW_TOTAL_DESIGN_NUM; i++) { - mString_Load_StringFromRom( - Save_Get(needlework.original_design[i & 7].name), - mNW_ORIGINAL_DESIGN_NAME_LEN, - 0x6E7 + i - ); - } + for (i = 0; i < mNW_TOTAL_DESIGN_NUM; i++) { + mString_Load_StringFromRom(Save_Get(needlework.original_design[i & 7].name), mNW_ORIGINAL_DESIGN_NAME_LEN, + 0x6E7 + i); + } } /** * @brief Initializes all Able Sisters' designs to their default data. **/ extern void mNW_InitNeedleworkData() { - mNW_InitNeedleworkTexture(); - mNW_InitNeedleworkPelatteNo(); - mNW_InitNeedleworkTextureName(); + mNW_InitNeedleworkTexture(); + mNW_InitNeedleworkPelatteNo(); + mNW_InitNeedleworkTextureName(); } /** * @brief Converts a design texture from GBA format to GC format. - * + * * @param agb Pointer to the source GBA texture * @param gc Pointer to the destination GC texture **/ extern void mNW_AGB_to_GC_texture(u8* agb, u8* gc) { - int i; + int i; - for (i = 0; i < mNW_DESIGN_TEX_SIZE; i++) { - u8 src = *agb++; - *gc++ = (((src >> 4) & 0xF) | ((src & 0xF) << 4)); - } + for (i = 0; i < mNW_DESIGN_TEX_SIZE; i++) { + u8 src = *agb++; + *gc++ = (((src >> 4) & 0xF) | ((src & 0xF) << 4)); + } } /** * @brief Converts a design texture from GC format to GBA format. - * + * * @param gc Pointer to the source GC texture * @param agb Pointer to the destination GBA texture **/ extern void mNW_GC_to_Agb_texture(u8* gc, u8* agb) { - mNW_AGB_to_GC_texture(gc, agb); + mNW_AGB_to_GC_texture(gc, agb); } /* RGB5A3 color palettes for each pattern palette aligned to 32 bytes */ /* These are aligned to 32 bytes for transfering to-and-from ARAM */ static u16 needlework0_pal[16] ATTRIBUTE_ALIGN(32) = { - ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFCE4A4A), ARGB8_to_RGB5A3(0xFFDE8442), ARGB8_to_RGB5A3(0xFFE7AD18), - ARGB8_to_RGB5A3(0xFFE7C621), ARGB8_to_RGB5A3(0xFFD6DE18), ARGB8_to_RGB5A3(0xFFB5E718), ARGB8_to_RGB5A3(0xFF84D652), - ARGB8_to_RGB5A3(0xFF39C66B), ARGB8_to_RGB5A3(0xFF29ADC6), ARGB8_to_RGB5A3(0xFF427BEF), ARGB8_to_RGB5A3(0xFF6B4AE7), - ARGB8_to_RGB5A3(0xFF945ACE), ARGB8_to_RGB5A3(0xFFBD42B5), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF), + ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFCE4A4A), ARGB8_to_RGB5A3(0xFFDE8442), ARGB8_to_RGB5A3(0xFFE7AD18), + ARGB8_to_RGB5A3(0xFFE7C621), ARGB8_to_RGB5A3(0xFFD6DE18), ARGB8_to_RGB5A3(0xFFB5E718), ARGB8_to_RGB5A3(0xFF84D652), + ARGB8_to_RGB5A3(0xFF39C66B), ARGB8_to_RGB5A3(0xFF29ADC6), ARGB8_to_RGB5A3(0xFF427BEF), ARGB8_to_RGB5A3(0xFF6B4AE7), + ARGB8_to_RGB5A3(0xFF945ACE), ARGB8_to_RGB5A3(0xFFBD42B5), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF), }; static u16 needlework1_pal[16] ATTRIBUTE_ALIGN(32) = { - ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFFF8C8C), ARGB8_to_RGB5A3(0xFFFFCE84), ARGB8_to_RGB5A3(0xFFFFE75A), - ARGB8_to_RGB5A3(0xFFFFF763), ARGB8_to_RGB5A3(0xFFFFFF84), ARGB8_to_RGB5A3(0xFFDEFF52), ARGB8_to_RGB5A3(0xFFB5FF84), - ARGB8_to_RGB5A3(0xFF7BF7AD), ARGB8_to_RGB5A3(0xFF63E7F7), ARGB8_to_RGB5A3(0xFF84C6FF), ARGB8_to_RGB5A3(0xFFA59CFF), - ARGB8_to_RGB5A3(0xFFD69CFF), ARGB8_to_RGB5A3(0xFFFF9CF7), ARGB8_to_RGB5A3(0xFF8C8C8C), ARGB8_to_RGB5A3(0xFFFFFFFF), + ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFFF8C8C), ARGB8_to_RGB5A3(0xFFFFCE84), ARGB8_to_RGB5A3(0xFFFFE75A), + ARGB8_to_RGB5A3(0xFFFFF763), ARGB8_to_RGB5A3(0xFFFFFF84), ARGB8_to_RGB5A3(0xFFDEFF52), ARGB8_to_RGB5A3(0xFFB5FF84), + ARGB8_to_RGB5A3(0xFF7BF7AD), ARGB8_to_RGB5A3(0xFF63E7F7), ARGB8_to_RGB5A3(0xFF84C6FF), ARGB8_to_RGB5A3(0xFFA59CFF), + ARGB8_to_RGB5A3(0xFFD69CFF), ARGB8_to_RGB5A3(0xFFFF9CF7), ARGB8_to_RGB5A3(0xFF8C8C8C), ARGB8_to_RGB5A3(0xFFFFFFFF), }; static u16 needlework2_pal[16] ATTRIBUTE_ALIGN(32) = { - ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFF9C1818), ARGB8_to_RGB5A3(0xFFAD5208), ARGB8_to_RGB5A3(0xFFB57B00), - ARGB8_to_RGB5A3(0xFFB59400), ARGB8_to_RGB5A3(0xFFA5AD00), ARGB8_to_RGB5A3(0xFF84B500), ARGB8_to_RGB5A3(0xFF52A531), - ARGB8_to_RGB5A3(0xFF089439), ARGB8_to_RGB5A3(0xFF007B94), ARGB8_to_RGB5A3(0xFF104ABD), ARGB8_to_RGB5A3(0xFF3918AD), - ARGB8_to_RGB5A3(0xFF5A2994), ARGB8_to_RGB5A3(0xFF8C087B), ARGB8_to_RGB5A3(0xFF080808), ARGB8_to_RGB5A3(0xFFFFFFFF), + ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFF9C1818), ARGB8_to_RGB5A3(0xFFAD5208), ARGB8_to_RGB5A3(0xFFB57B00), + ARGB8_to_RGB5A3(0xFFB59400), ARGB8_to_RGB5A3(0xFFA5AD00), ARGB8_to_RGB5A3(0xFF84B500), ARGB8_to_RGB5A3(0xFF52A531), + ARGB8_to_RGB5A3(0xFF089439), ARGB8_to_RGB5A3(0xFF007B94), ARGB8_to_RGB5A3(0xFF104ABD), ARGB8_to_RGB5A3(0xFF3918AD), + ARGB8_to_RGB5A3(0xFF5A2994), ARGB8_to_RGB5A3(0xFF8C087B), ARGB8_to_RGB5A3(0xFF080808), ARGB8_to_RGB5A3(0xFFFFFFFF), }; static u16 needlework3_pal[16] ATTRIBUTE_ALIGN(32) = { - ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFF42945A), ARGB8_to_RGB5A3(0xFF73C68C), ARGB8_to_RGB5A3(0xFF94E7AD), - ARGB8_to_RGB5A3(0xFF008C7B), ARGB8_to_RGB5A3(0xFF5AB5AD), ARGB8_to_RGB5A3(0xFF84C6C6), ARGB8_to_RGB5A3(0xFF2173A5), - ARGB8_to_RGB5A3(0xFF4A9CCE), ARGB8_to_RGB5A3(0xFF6BADDE), ARGB8_to_RGB5A3(0xFF7384BD), ARGB8_to_RGB5A3(0xFF6B73AD), - ARGB8_to_RGB5A3(0xFF525294), ARGB8_to_RGB5A3(0xFF39397B), ARGB8_to_RGB5A3(0xFF181863), ARGB8_to_RGB5A3(0xFFFFFFFF), + ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFF42945A), ARGB8_to_RGB5A3(0xFF73C68C), ARGB8_to_RGB5A3(0xFF94E7AD), + ARGB8_to_RGB5A3(0xFF008C7B), ARGB8_to_RGB5A3(0xFF5AB5AD), ARGB8_to_RGB5A3(0xFF84C6C6), ARGB8_to_RGB5A3(0xFF2173A5), + ARGB8_to_RGB5A3(0xFF4A9CCE), ARGB8_to_RGB5A3(0xFF6BADDE), ARGB8_to_RGB5A3(0xFF7384BD), ARGB8_to_RGB5A3(0xFF6B73AD), + ARGB8_to_RGB5A3(0xFF525294), ARGB8_to_RGB5A3(0xFF39397B), ARGB8_to_RGB5A3(0xFF181863), ARGB8_to_RGB5A3(0xFFFFFFFF), }; static u16 needlework4_pal[16] ATTRIBUTE_ALIGN(32) = { - ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFF9C8452), ARGB8_to_RGB5A3(0xFFBD945A), ARGB8_to_RGB5A3(0xFFD6BD84), - ARGB8_to_RGB5A3(0xFF9C5252), ARGB8_to_RGB5A3(0xFFCE7363), ARGB8_to_RGB5A3(0xFFEF9C8C), ARGB8_to_RGB5A3(0xFF8C6384), - ARGB8_to_RGB5A3(0xFFA584B5), ARGB8_to_RGB5A3(0xFFDEB5DE), ARGB8_to_RGB5A3(0xFFBD8484), ARGB8_to_RGB5A3(0xFFAD736B), - ARGB8_to_RGB5A3(0xFF945252), ARGB8_to_RGB5A3(0xFF7B3939), ARGB8_to_RGB5A3(0xFF631810), ARGB8_to_RGB5A3(0xFFFFFFFF), + ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFF9C8452), ARGB8_to_RGB5A3(0xFFBD945A), ARGB8_to_RGB5A3(0xFFD6BD84), + ARGB8_to_RGB5A3(0xFF9C5252), ARGB8_to_RGB5A3(0xFFCE7363), ARGB8_to_RGB5A3(0xFFEF9C8C), ARGB8_to_RGB5A3(0xFF8C6384), + ARGB8_to_RGB5A3(0xFFA584B5), ARGB8_to_RGB5A3(0xFFDEB5DE), ARGB8_to_RGB5A3(0xFFBD8484), ARGB8_to_RGB5A3(0xFFAD736B), + ARGB8_to_RGB5A3(0xFF945252), ARGB8_to_RGB5A3(0xFF7B3939), ARGB8_to_RGB5A3(0xFF631810), ARGB8_to_RGB5A3(0xFFFFFFFF), }; static u16 needlework5_pal[16] ATTRIBUTE_ALIGN(32) = { - ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFEF5A00), ARGB8_to_RGB5A3(0xFFFF9C42), ARGB8_to_RGB5A3(0xFFFFCE84), - ARGB8_to_RGB5A3(0xFFFFEFA5), ARGB8_to_RGB5A3(0xFF8C4A29), ARGB8_to_RGB5A3(0xFFB57B5A), ARGB8_to_RGB5A3(0xFFE7AD8C), - ARGB8_to_RGB5A3(0xFFFFDEBD), ARGB8_to_RGB5A3(0xFF318CFF), ARGB8_to_RGB5A3(0xFF63B5FF), ARGB8_to_RGB5A3(0xFF9CDEFF), - ARGB8_to_RGB5A3(0xFFC6E7FF), ARGB8_to_RGB5A3(0xFF6B6B6B), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF), + ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFEF5A00), ARGB8_to_RGB5A3(0xFFFF9C42), ARGB8_to_RGB5A3(0xFFFFCE84), + ARGB8_to_RGB5A3(0xFFFFEFA5), ARGB8_to_RGB5A3(0xFF8C4A29), ARGB8_to_RGB5A3(0xFFB57B5A), ARGB8_to_RGB5A3(0xFFE7AD8C), + ARGB8_to_RGB5A3(0xFFFFDEBD), ARGB8_to_RGB5A3(0xFF318CFF), ARGB8_to_RGB5A3(0xFF63B5FF), ARGB8_to_RGB5A3(0xFF9CDEFF), + ARGB8_to_RGB5A3(0xFFC6E7FF), ARGB8_to_RGB5A3(0xFF6B6B6B), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF), }; static u16 needlework6_pal[16] ATTRIBUTE_ALIGN(32) = { - ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFF39B542), ARGB8_to_RGB5A3(0xFF63DE5A), ARGB8_to_RGB5A3(0xFF8CEF84), - ARGB8_to_RGB5A3(0xFFB5FFAD), ARGB8_to_RGB5A3(0xFF2121C6), ARGB8_to_RGB5A3(0xFF5252F7), ARGB8_to_RGB5A3(0xFF8484FF), - ARGB8_to_RGB5A3(0xFFB5B5FF), ARGB8_to_RGB5A3(0xFFCE3939), ARGB8_to_RGB5A3(0xFFDE6B6B), ARGB8_to_RGB5A3(0xFFE78C9C), - ARGB8_to_RGB5A3(0xFFEFBDBD), ARGB8_to_RGB5A3(0xFF6B6B6B), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF), + ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFF39B542), ARGB8_to_RGB5A3(0xFF63DE5A), ARGB8_to_RGB5A3(0xFF8CEF84), + ARGB8_to_RGB5A3(0xFFB5FFAD), ARGB8_to_RGB5A3(0xFF2121C6), ARGB8_to_RGB5A3(0xFF5252F7), ARGB8_to_RGB5A3(0xFF8484FF), + ARGB8_to_RGB5A3(0xFFB5B5FF), ARGB8_to_RGB5A3(0xFFCE3939), ARGB8_to_RGB5A3(0xFFDE6B6B), ARGB8_to_RGB5A3(0xFFE78C9C), + ARGB8_to_RGB5A3(0xFFEFBDBD), ARGB8_to_RGB5A3(0xFF6B6B6B), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF), }; static u16 needlework7_pal[16] ATTRIBUTE_ALIGN(32) = { - ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFF082100), ARGB8_to_RGB5A3(0xFF425A39), ARGB8_to_RGB5A3(0xFF6B8463), - ARGB8_to_RGB5A3(0xFF9CB594), ARGB8_to_RGB5A3(0xFF5A2900), ARGB8_to_RGB5A3(0xFF7B4A21), ARGB8_to_RGB5A3(0xFFA5734A), - ARGB8_to_RGB5A3(0xFFD6A57B), ARGB8_to_RGB5A3(0xFF947B00), ARGB8_to_RGB5A3(0xFFB59439), ARGB8_to_RGB5A3(0xFFCEB56B), - ARGB8_to_RGB5A3(0xFFDED69C), ARGB8_to_RGB5A3(0xFF6B6B6B), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF), + ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFF082100), ARGB8_to_RGB5A3(0xFF425A39), ARGB8_to_RGB5A3(0xFF6B8463), + ARGB8_to_RGB5A3(0xFF9CB594), ARGB8_to_RGB5A3(0xFF5A2900), ARGB8_to_RGB5A3(0xFF7B4A21), ARGB8_to_RGB5A3(0xFFA5734A), + ARGB8_to_RGB5A3(0xFFD6A57B), ARGB8_to_RGB5A3(0xFF947B00), ARGB8_to_RGB5A3(0xFFB59439), ARGB8_to_RGB5A3(0xFFCEB56B), + ARGB8_to_RGB5A3(0xFFDED69C), ARGB8_to_RGB5A3(0xFF6B6B6B), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF), }; static u16 needlework8_pal[16] ATTRIBUTE_ALIGN(32) = { - ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFF2121FF), ARGB8_to_RGB5A3(0xFFFF2121), ARGB8_to_RGB5A3(0xFFD6D600), - ARGB8_to_RGB5A3(0xFF6363FF), ARGB8_to_RGB5A3(0xFFFF6363), ARGB8_to_RGB5A3(0xFFD6D663), ARGB8_to_RGB5A3(0xFF9494FF), - ARGB8_to_RGB5A3(0xFFFF9494), ARGB8_to_RGB5A3(0xFFD6D694), ARGB8_to_RGB5A3(0xFFADADFF), ARGB8_to_RGB5A3(0xFFFFADAD), - ARGB8_to_RGB5A3(0xFFE7E7AD), ARGB8_to_RGB5A3(0xFF6B6B6B), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF), + ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFF2121FF), ARGB8_to_RGB5A3(0xFFFF2121), ARGB8_to_RGB5A3(0xFFD6D600), + ARGB8_to_RGB5A3(0xFF6363FF), ARGB8_to_RGB5A3(0xFFFF6363), ARGB8_to_RGB5A3(0xFFD6D663), ARGB8_to_RGB5A3(0xFF9494FF), + ARGB8_to_RGB5A3(0xFFFF9494), ARGB8_to_RGB5A3(0xFFD6D694), ARGB8_to_RGB5A3(0xFFADADFF), ARGB8_to_RGB5A3(0xFFFFADAD), + ARGB8_to_RGB5A3(0xFFE7E7AD), ARGB8_to_RGB5A3(0xFF6B6B6B), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF), }; static u16 needlework9_pal[16] ATTRIBUTE_ALIGN(32) = { - ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFF21A521), ARGB8_to_RGB5A3(0xFF39ADFF), ARGB8_to_RGB5A3(0xFF9C52EF), - ARGB8_to_RGB5A3(0xFF52BD52), ARGB8_to_RGB5A3(0xFF5AC6FF), ARGB8_to_RGB5A3(0xFFB59CFF), ARGB8_to_RGB5A3(0xFF6BD673), - ARGB8_to_RGB5A3(0xFF8CE7FF), ARGB8_to_RGB5A3(0xFFCEB5FF), ARGB8_to_RGB5A3(0xFF94DEAD), ARGB8_to_RGB5A3(0xFFBDF7FF), - ARGB8_to_RGB5A3(0xFFD6CEFF), ARGB8_to_RGB5A3(0xFF6B6B6B), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF), + ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFF21A521), ARGB8_to_RGB5A3(0xFF39ADFF), ARGB8_to_RGB5A3(0xFF9C52EF), + ARGB8_to_RGB5A3(0xFF52BD52), ARGB8_to_RGB5A3(0xFF5AC6FF), ARGB8_to_RGB5A3(0xFFB59CFF), ARGB8_to_RGB5A3(0xFF6BD673), + ARGB8_to_RGB5A3(0xFF8CE7FF), ARGB8_to_RGB5A3(0xFFCEB5FF), ARGB8_to_RGB5A3(0xFF94DEAD), ARGB8_to_RGB5A3(0xFFBDF7FF), + ARGB8_to_RGB5A3(0xFFD6CEFF), ARGB8_to_RGB5A3(0xFF6B6B6B), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF), }; static u16 needlework10_pal[16] ATTRIBUTE_ALIGN(32) = { - ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFD60000), ARGB8_to_RGB5A3(0xFFFFBD00), ARGB8_to_RGB5A3(0xFFEFF731), - ARGB8_to_RGB5A3(0xFF4ACE42), ARGB8_to_RGB5A3(0xFF299C29), ARGB8_to_RGB5A3(0xFF528CBD), ARGB8_to_RGB5A3(0xFF424AAD), - ARGB8_to_RGB5A3(0xFF9452D6), ARGB8_to_RGB5A3(0xFFF77BDE), ARGB8_to_RGB5A3(0xFFA59439), ARGB8_to_RGB5A3(0xFF9C4242), - ARGB8_to_RGB5A3(0xFF5A3139), ARGB8_to_RGB5A3(0xFF6B6B6B), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF), + ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFD60000), ARGB8_to_RGB5A3(0xFFFFBD00), ARGB8_to_RGB5A3(0xFFEFF731), + ARGB8_to_RGB5A3(0xFF4ACE42), ARGB8_to_RGB5A3(0xFF299C29), ARGB8_to_RGB5A3(0xFF528CBD), ARGB8_to_RGB5A3(0xFF424AAD), + ARGB8_to_RGB5A3(0xFF9452D6), ARGB8_to_RGB5A3(0xFFF77BDE), ARGB8_to_RGB5A3(0xFFA59439), ARGB8_to_RGB5A3(0xFF9C4242), + ARGB8_to_RGB5A3(0xFF5A3139), ARGB8_to_RGB5A3(0xFF6B6B6B), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF), }; static u16 needlework11_pal[16] ATTRIBUTE_ALIGN(32) = { - ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFE7CE18), ARGB8_to_RGB5A3(0xFF21C618), ARGB8_to_RGB5A3(0xFFFF6B00), - ARGB8_to_RGB5A3(0xFF0000FF), ARGB8_to_RGB5A3(0xFF9400BD), ARGB8_to_RGB5A3(0xFFE7CE18), ARGB8_to_RGB5A3(0xFF00A500), - ARGB8_to_RGB5A3(0xFFCE4200), ARGB8_to_RGB5A3(0xFF0000D6), ARGB8_to_RGB5A3(0xFF5A008C), ARGB8_to_RGB5A3(0xFF9C8C18), - ARGB8_to_RGB5A3(0xFF008400), ARGB8_to_RGB5A3(0xFFA52100), ARGB8_to_RGB5A3(0xFF0000A5), ARGB8_to_RGB5A3(0xFF4A005A), + ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFE7CE18), ARGB8_to_RGB5A3(0xFF21C618), ARGB8_to_RGB5A3(0xFFFF6B00), + ARGB8_to_RGB5A3(0xFF0000FF), ARGB8_to_RGB5A3(0xFF9400BD), ARGB8_to_RGB5A3(0xFFE7CE18), ARGB8_to_RGB5A3(0xFF00A500), + ARGB8_to_RGB5A3(0xFFCE4200), ARGB8_to_RGB5A3(0xFF0000D6), ARGB8_to_RGB5A3(0xFF5A008C), ARGB8_to_RGB5A3(0xFF9C8C18), + ARGB8_to_RGB5A3(0xFF008400), ARGB8_to_RGB5A3(0xFFA52100), ARGB8_to_RGB5A3(0xFF0000A5), ARGB8_to_RGB5A3(0xFF4A005A), }; static u16 needlework12_pal[16] ATTRIBUTE_ALIGN(32) = { - ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFFF2121), ARGB8_to_RGB5A3(0xFFE7D600), ARGB8_to_RGB5A3(0xFFF739BD), - ARGB8_to_RGB5A3(0xFF00D69C), ARGB8_to_RGB5A3(0xFF107310), ARGB8_to_RGB5A3(0xFFC62121), ARGB8_to_RGB5A3(0xFFBDA500), - ARGB8_to_RGB5A3(0xFFCE3994), ARGB8_to_RGB5A3(0xFF009C6B), ARGB8_to_RGB5A3(0xFF214A21), ARGB8_to_RGB5A3(0xFF8C2121), - ARGB8_to_RGB5A3(0xFF846B00), ARGB8_to_RGB5A3(0xFF941863), ARGB8_to_RGB5A3(0xFF00734A), ARGB8_to_RGB5A3(0xFF183918), + ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFFF2121), ARGB8_to_RGB5A3(0xFFE7D600), ARGB8_to_RGB5A3(0xFFF739BD), + ARGB8_to_RGB5A3(0xFF00D69C), ARGB8_to_RGB5A3(0xFF107310), ARGB8_to_RGB5A3(0xFFC62121), ARGB8_to_RGB5A3(0xFFBDA500), + ARGB8_to_RGB5A3(0xFFCE3994), ARGB8_to_RGB5A3(0xFF009C6B), ARGB8_to_RGB5A3(0xFF214A21), ARGB8_to_RGB5A3(0xFF8C2121), + ARGB8_to_RGB5A3(0xFF846B00), ARGB8_to_RGB5A3(0xFF941863), ARGB8_to_RGB5A3(0xFF00734A), ARGB8_to_RGB5A3(0xFF183918), }; static u16 needlework13_pal[16] ATTRIBUTE_ALIGN(32) = { - ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFEFD6D6), ARGB8_to_RGB5A3(0xFFDEC6C6), ARGB8_to_RGB5A3(0xFFCEB5B5), - ARGB8_to_RGB5A3(0xFFBDA5A5), ARGB8_to_RGB5A3(0xFFAD9494), ARGB8_to_RGB5A3(0xFF9C8484), ARGB8_to_RGB5A3(0xFF8C7373), - ARGB8_to_RGB5A3(0xFF7B6363), ARGB8_to_RGB5A3(0xFF6B5252), ARGB8_to_RGB5A3(0xFF5A4242), ARGB8_to_RGB5A3(0xFF4A3131), - ARGB8_to_RGB5A3(0xFF392121), ARGB8_to_RGB5A3(0xFF291010), ARGB8_to_RGB5A3(0xFF180000), ARGB8_to_RGB5A3(0xFF100000), + ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFEFD6D6), ARGB8_to_RGB5A3(0xFFDEC6C6), ARGB8_to_RGB5A3(0xFFCEB5B5), + ARGB8_to_RGB5A3(0xFFBDA5A5), ARGB8_to_RGB5A3(0xFFAD9494), ARGB8_to_RGB5A3(0xFF9C8484), ARGB8_to_RGB5A3(0xFF8C7373), + ARGB8_to_RGB5A3(0xFF7B6363), ARGB8_to_RGB5A3(0xFF6B5252), ARGB8_to_RGB5A3(0xFF5A4242), ARGB8_to_RGB5A3(0xFF4A3131), + ARGB8_to_RGB5A3(0xFF392121), ARGB8_to_RGB5A3(0xFF291010), ARGB8_to_RGB5A3(0xFF180000), ARGB8_to_RGB5A3(0xFF100000), }; static u16 needlework14_pal[16] ATTRIBUTE_ALIGN(32) = { - ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFEFEFEF), ARGB8_to_RGB5A3(0xFFDEDEDE), ARGB8_to_RGB5A3(0xFFCECECE), - ARGB8_to_RGB5A3(0xFFBDBDBD), ARGB8_to_RGB5A3(0xFFADADAD), ARGB8_to_RGB5A3(0xFF9C9C9C), ARGB8_to_RGB5A3(0xFF8C8C8C), - ARGB8_to_RGB5A3(0xFF7B7B7B), ARGB8_to_RGB5A3(0xFF6B6B6B), ARGB8_to_RGB5A3(0xFF5A5A5A), ARGB8_to_RGB5A3(0xFF4A4A4A), - ARGB8_to_RGB5A3(0xFF393939), ARGB8_to_RGB5A3(0xFF292929), ARGB8_to_RGB5A3(0xFF181818), ARGB8_to_RGB5A3(0xFF101010), + ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFEFEFEF), ARGB8_to_RGB5A3(0xFFDEDEDE), ARGB8_to_RGB5A3(0xFFCECECE), + ARGB8_to_RGB5A3(0xFFBDBDBD), ARGB8_to_RGB5A3(0xFFADADAD), ARGB8_to_RGB5A3(0xFF9C9C9C), ARGB8_to_RGB5A3(0xFF8C8C8C), + ARGB8_to_RGB5A3(0xFF7B7B7B), ARGB8_to_RGB5A3(0xFF6B6B6B), ARGB8_to_RGB5A3(0xFF5A5A5A), ARGB8_to_RGB5A3(0xFF4A4A4A), + ARGB8_to_RGB5A3(0xFF393939), ARGB8_to_RGB5A3(0xFF292929), ARGB8_to_RGB5A3(0xFF181818), ARGB8_to_RGB5A3(0xFF101010), }; static u16 needlework15_pal[16] ATTRIBUTE_ALIGN(32) = { - ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFEF7B7B), ARGB8_to_RGB5A3(0xFFD61818), ARGB8_to_RGB5A3(0xFFF79418), - ARGB8_to_RGB5A3(0xFFE7E752), ARGB8_to_RGB5A3(0xFF006B00), ARGB8_to_RGB5A3(0xFF39B539), ARGB8_to_RGB5A3(0xFF0039B5), - ARGB8_to_RGB5A3(0xFF399CFF), ARGB8_to_RGB5A3(0xFF940094), ARGB8_to_RGB5A3(0xFFFF6BFF), ARGB8_to_RGB5A3(0xFF944208), - ARGB8_to_RGB5A3(0xFFEF9C5A), ARGB8_to_RGB5A3(0xFFFFC694), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF), + ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFEF7B7B), ARGB8_to_RGB5A3(0xFFD61818), ARGB8_to_RGB5A3(0xFFF79418), + ARGB8_to_RGB5A3(0xFFE7E752), ARGB8_to_RGB5A3(0xFF006B00), ARGB8_to_RGB5A3(0xFF39B539), ARGB8_to_RGB5A3(0xFF0039B5), + ARGB8_to_RGB5A3(0xFF399CFF), ARGB8_to_RGB5A3(0xFF940094), ARGB8_to_RGB5A3(0xFFFF6BFF), ARGB8_to_RGB5A3(0xFF944208), + ARGB8_to_RGB5A3(0xFFEF9C5A), ARGB8_to_RGB5A3(0xFFFFC694), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF), }; static u16* mNW_needlework_pallet_table[mNW_PALETTE_COUNT] = { - needlework0_pal, needlework1_pal, needlework2_pal, needlework3_pal, - needlework4_pal, needlework5_pal, needlework6_pal, needlework7_pal, - needlework8_pal, needlework9_pal, needlework10_pal, needlework11_pal, - needlework12_pal, needlework13_pal, needlework14_pal, needlework15_pal + needlework0_pal, needlework1_pal, needlework2_pal, needlework3_pal, needlework4_pal, needlework5_pal, + needlework6_pal, needlework7_pal, needlework8_pal, needlework9_pal, needlework10_pal, needlework11_pal, + needlework12_pal, needlework13_pal, needlework14_pal, needlework15_pal }; /** * @brief Gets a pointer to the requested palette color data. - * + * * @param palette_idx Index of the palette to retrieve (0-15) * @return Palette color data pointer **/ extern u16* mNW_PaletteIdx2Palette(int palette_idx) { - return mNW_needlework_pallet_table[palette_idx & 15]; + return mNW_needlework_pallet_table[palette_idx & 15]; } /** * @brief Copies one design class to another and updates data cache. - * + * * @param dst Destination design class * @param src Source design class **/ extern void mNW_CopyOriginalTextureClass(mNW_original_design_c* dst, mNW_original_design_c* src) { - bcopy(src, dst, sizeof(mNW_original_design_c)); - DCStoreRangeNoSync(dst->design.data, mNW_DESIGN_TEX_SIZE); + bcopy(src, dst, sizeof(mNW_original_design_c)); + DCStoreRangeNoSync(dst->design.data, mNW_DESIGN_TEX_SIZE); } /** * @brief Copies a design's texture data to a block of memory and updates data cache. - * + * * @param dst Destination pointer * @param src Source design class **/ extern void mNW_CopyOriginalTexture(void* dst, mNW_original_design_c* src) { - if (dst != NULL) { - bcopy(src->design.data, dst, mNW_DESIGN_TEX_SIZE); - DCStoreRangeNoSync(dst, mNW_DESIGN_TEX_SIZE); - } + if (dst != NULL) { + bcopy(src->design.data, dst, mNW_DESIGN_TEX_SIZE); + DCStoreRangeNoSync(dst, mNW_DESIGN_TEX_SIZE); + } } /** * @brief Copies a design's palette colors to a block of memory and updates data cache. - * + * * @param dst Destination pointer * @param src Source design class **/ extern void mNW_CopyOriginalPalette(void* dst, mNW_original_design_c* src) { - if (dst != NULL) { - bcopy(mNW_PaletteIdx2Palette(src->palette), dst, 16 * sizeof(u16)); - DCStoreRangeNoSync(dst, 16 * sizeof(u16)); - } + if (dst != NULL) { + bcopy(mNW_PaletteIdx2Palette(src->palette), dst, 16 * sizeof(u16)); + DCStoreRangeNoSync(dst, 16 * sizeof(u16)); + } } /** * @brief Copies a block of memory to a design's texture data and updates data cache. - * + * * @param dst The destination design class * @param src Source data pointer **/ extern void mNW_OverWriteOriginalTexture(mNW_original_design_c* dst, u8* src) { - if (src != NULL) { - u8* tex = dst->design.data; - bcopy(src, tex, mNW_DESIGN_TEX_SIZE); - DCStoreRangeNoSync(tex, mNW_DESIGN_TEX_SIZE); - } + if (src != NULL) { + u8* tex = dst->design.data; + bcopy(src, tex, mNW_DESIGN_TEX_SIZE); + DCStoreRangeNoSync(tex, mNW_DESIGN_TEX_SIZE); + } } /** * @brief Copies a block of memory to a design's name. - * + * * @param dst The destination design class * @param src Source name pointer **/ extern void mNW_OverWriteOriginalName(mNW_original_design_c* dst, u8* src) { - if (src != NULL) { - bcopy(src, dst->name, mNW_ORIGINAL_DESIGN_NAME_LEN); - } + if (src != NULL) { + bcopy(src, dst->name, mNW_ORIGINAL_DESIGN_NAME_LEN); + } } /* swap buffer for original design */ @@ -381,48 +361,48 @@ static mNW_original_design_c mNW_swap_work; /** * @brief Swaps two design classes' data in memory and updates data cache. - * + * * @param org0 First design class * @param org1 Second design class **/ extern void mNW_SwapOriginalData(mNW_original_design_c* org0, mNW_original_design_c* org1) { - bcopy(org0, &mNW_swap_work, sizeof(mNW_original_design_c)); - bcopy(org1, org0, sizeof(mNW_original_design_c)); - bcopy(&mNW_swap_work, org1, sizeof(mNW_original_design_c)); - DCStoreRangeNoSync(org0->design.data, mNW_DESIGN_TEX_SIZE); - DCStoreRangeNoSync(org1->design.data, mNW_DESIGN_TEX_SIZE); + bcopy(org0, &mNW_swap_work, sizeof(mNW_original_design_c)); + bcopy(org1, org0, sizeof(mNW_original_design_c)); + bcopy(&mNW_swap_work, org1, sizeof(mNW_original_design_c)); + DCStoreRangeNoSync(org0->design.data, mNW_DESIGN_TEX_SIZE); + DCStoreRangeNoSync(org1->design.data, mNW_DESIGN_TEX_SIZE); } /** * @brief Initializes a design class to 'blank' data. - * + * * @param design The design which will be initialized **/ extern void mNW_InitOriginalData(mNW_original_design_c* design) { - static u8 name[mNW_ORIGINAL_DESIGN_NAME_LEN] = "blank "; + static u8 name[mNW_ORIGINAL_DESIGN_NAME_LEN] = "blank "; - u8* tex; - mNW_OverWriteOriginalName(design, name); - tex = design->design.data; - mem_clear(tex, mNW_DESIGN_TEX_SIZE, 0xFF); - DCStoreRangeNoSync(tex, mNW_DESIGN_TEX_SIZE); - design->palette = 0; + u8* tex; + mNW_OverWriteOriginalName(design, name); + tex = design->design.data; + mem_clear(tex, mNW_DESIGN_TEX_SIZE, 0xFF); + DCStoreRangeNoSync(tex, mNW_DESIGN_TEX_SIZE); + design->palette = 0; } /** * @brief Initializes a player's design related data to the default state. - * + * * @param player_no The index of the player whose design data will be initialized **/ extern void mNW_InitPrivateOriginalData(int player_no) { - int i; - Private_c* private = Save_Get(private + player_no); + int i; + Private_c* private = Save_Get(private_data + player_no); - for (i = 0; i < mPr_ORIGINAL_DESIGN_COUNT; i++) { - private->my_org_no_table[i] = i; - } + for (i = 0; i < mPr_ORIGINAL_DESIGN_COUNT; i++) { + private->my_org_no_table[i] = i; + } - for (i = 0; i < mPr_ORIGINAL_DESIGN_COUNT; i++) { - mNW_InitOriginalData(private->my_org + i); - } + for (i = 0; i < mPr_ORIGINAL_DESIGN_COUNT; i++) { + mNW_InitOriginalData(private->my_org + i); + } } diff --git a/src/m_npc.c b/src/m_npc.c index e0af6a8d..9c70f023 100644 --- a/src/m_npc.c +++ b/src/m_npc.c @@ -410,7 +410,7 @@ extern void mNpc_RenewalAnimalMemory() { for (j = 0; j < ANIMAL_MEMORY_NUM; j++) { if (mNpc_CheckFreeAnimalMemory(memory) == FALSE && mLd_CheckThisLand(memory->memory_player_id.land_name, memory->memory_player_id.land_id) == TRUE) { - priv = Save_Get(private); + priv = Save_Get(private_data); for (k = 0; k < PLAYER_NUM; k++) { if (mPr_NullCheckPersonalID(&priv->player_ID) == FALSE && @@ -481,7 +481,7 @@ extern int mNpc_GetOldPlayerAnimalMemoryIdx(Anmmem_c* memory, int num) { for (i = 0; i < num; i++) { if (mNpc_CheckFreeAnimalMemory(memory) == FALSE && mLd_CheckThisLand(memory->memory_player_id.land_name, memory->memory_player_id.land_id) == TRUE) { - priv = Save_Get(private); + priv = Save_Get(private_data); for (j = 0; j < PLAYER_NUM; j++) { if (mPr_NullCheckPersonalID(&priv->player_ID) == FALSE && @@ -756,7 +756,7 @@ static int mNpc_GetAnimalMemoryFriend_Land_Sex(Anmmem_c* memory, int num, int se if (mNpc_CheckFreeAnimalMemory(memory) == FALSE) { priv_idx = mPr_GetPrivateIdx(&memory->memory_player_id); - if (priv_idx != -1 && Save_Get(private[priv_idx]).gender == sex && + if (priv_idx != -1 && Save_Get(private_data[priv_idx]).gender == sex && mNpc_SelectBestFriend(&best_friend, memory, &best_friendship) == TRUE) { res = i; } @@ -3176,7 +3176,7 @@ static int mNpc_DecideRemoveAnimalNo_Friend(Animal_c* animal, int ignored_idx, i n_players = 0; num_possible = 0; remove_bitfield = 0; - priv_p = Save_Get(private); + priv_p = Save_Get(private_data); for (i = 0; i < PLAYER_NUM; i++) { if (mPr_NullCheckPersonalID(&priv_p->player_ID) == FALSE) { @@ -3190,7 +3190,7 @@ static int mNpc_DecideRemoveAnimalNo_Friend(Animal_c* animal, int ignored_idx, i for (i = 0; i < ANIMAL_NUM_MAX; i++) { if (mNpc_CheckFreeAnimalInfo(animal) == FALSE && i != ignored_idx) { met = 0; - priv_p = Save_Get(private); + priv_p = Save_Get(private_data); for (j = 0; j < PLAYER_NUM; j++) { if (mPr_NullCheckPersonalID(&priv_p->player_ID) == FALSE) { @@ -3456,7 +3456,7 @@ extern void mNpc_FirstClearGoodbyMail() { } static void mNpc_SetGoodbyAnimalMail(Anm_GoodbyMail_c* goodby_mail, AnmPersonalID_c* anm_id) { - Private_c* priv = Save_Get(private); + Private_c* priv = Save_Get(private_data); int i; if (anm_id != NULL && mNpc_CheckFreeAnimalPersonalID(anm_id) == FALSE) { @@ -3519,7 +3519,7 @@ static int mNpc_SendGoodbyAnimalMailOne(Mail_c* mail, PersonalID_c* pid, int pla } static void mNpc_SendGoodbyAnimalMail(Anm_GoodbyMail_c* goodby_mail) { - Private_c* priv = Save_Get(private); + Private_c* priv = Save_Get(private_data); int i; if (mNpc_CheckFreeAnimalPersonalID(&goodby_mail->id) == FALSE) { @@ -7083,7 +7083,7 @@ static int mNpc_SendHPMail_analysis(PersonalID_c* pid, AnmPersonalID_c* anm_id, } extern void mNpc_SendHPMail() { - Private_c* priv = Save_Get(private); + Private_c* priv = Save_Get(private_data); Private_c* priv_p; Animal_c* animal = Save_Get(animals); AnmHPMail_c* hp_mail; diff --git a/src/m_post_office.c b/src/m_post_office.c index de5390b0..5fb900d1 100644 --- a/src/m_post_office.c +++ b/src/m_post_office.c @@ -17,524 +17,517 @@ #include "m_scene_table.h" static int mPO_keep_contents(Mail_c* mail) { - int res = FALSE; + int res = FALSE; - int free_idx = mMl_chk_mail_free_space(Save_Get(post_office).mail, mPO_MAIL_STORAGE_SIZE); - if (free_idx >= 0) { - mMl_copy_mail(Save_Get(post_office).mail + free_idx, mail); - mMl_clear_mail(mail); - res = TRUE; - } + int free_idx = mMl_chk_mail_free_space(Save_Get(post_office).mail, mPO_MAIL_STORAGE_SIZE); + if (free_idx >= 0) { + mMl_copy_mail(Save_Get(post_office).mail + free_idx, mail); + mMl_clear_mail(mail); + res = TRUE; + } - return res; + return res; } extern int mPO_count_mail(int house_no) { - int used = mMl_count_use_mail_space(Save_Get(homes[house_no]).mailbox, HOME_MAILBOX_SIZE); - Mail_c* mail = Save_Get(post_office).mail; - int i; + int used = mMl_count_use_mail_space(Save_Get(homes[house_no]).mailbox, HOME_MAILBOX_SIZE); + Mail_c* mail = Save_Get(post_office).mail; + int i; - for (i = 0; i < mPO_MAIL_STORAGE_SIZE; i++) { - if (house_no == mMl_hunt_for_send_address(mail)) { - used++; + for (i = 0; i < mPO_MAIL_STORAGE_SIZE; i++) { + if (house_no == mMl_hunt_for_send_address(mail)) { + used++; + } + + mail++; } - - mail++; - } - return used; + return used; } extern int mPO_get_keep_mail_sum() { - PostOffice_c* post_office = Save_GetPointer(post_office); + PostOffice_c* post_office = Save_GetPointer(post_office); - return post_office->keep_mail_sum_players + post_office->keep_mail_sum_npcs; + return post_office->keep_mail_sum_players + post_office->keep_mail_sum_npcs; } static void mPO_adjust_keep_mail() { - Mail_c* mail = Save_Get(post_office).mail; - int i; - s16 recipient_flags = 0; - s16 keep_mail_player_num = 0; + Mail_c* mail = Save_Get(post_office).mail; + int i; + s16 recipient_flags = 0; + s16 keep_mail_player_num = 0; - for (i = 0; i < mPO_MAIL_STORAGE_SIZE; i++) { - if (mMl_check_not_used_mail(mail) == FALSE) { - int house_idx = mMl_hunt_for_send_address(mail); - if (house_idx != -1) { - keep_mail_player_num++; - recipient_flags |= (1 << house_idx); - } - else { - mMl_clear_mail(mail); - } + for (i = 0; i < mPO_MAIL_STORAGE_SIZE; i++) { + if (mMl_check_not_used_mail(mail) == FALSE) { + int house_idx = mMl_hunt_for_send_address(mail); + if (house_idx != -1) { + keep_mail_player_num++; + recipient_flags |= (1 << house_idx); + } else { + mMl_clear_mail(mail); + } + } + mail++; } - mail++; - } - Save_Set(post_office.mail_recipient_flags, recipient_flags); - Save_Set(post_office.keep_mail_sum_players, keep_mail_player_num); - Save_Set(post_office.keep_mail_sum_npcs, 0); + Save_Set(post_office.mail_recipient_flags, recipient_flags); + Save_Set(post_office.keep_mail_sum_players, keep_mail_player_num); + Save_Set(post_office.keep_mail_sum_npcs, 0); } static int mPO_receipt_check_mail(Mail_c* mail) { - int res = FALSE; + int res = FALSE; - switch (mail->header.recipient.type) { - case mMl_NAME_TYPE_PLAYER: - { - int house_idx = mMl_hunt_for_send_address(mail); - if (house_idx != -1 && mPO_count_mail(house_idx) < HOME_MAILBOX_SIZE) { - res = mPO_keep_contents(mail); - if (res == TRUE) { - Save_Get(post_office.mail_recipient_flags) |= (1 << house_idx); - Save_Get(post_office.keep_mail_sum_players)++; - } - } + switch (mail->header.recipient.type) { + case mMl_NAME_TYPE_PLAYER: { + int house_idx = mMl_hunt_for_send_address(mail); + if (house_idx != -1 && mPO_count_mail(house_idx) < HOME_MAILBOX_SIZE) { + res = mPO_keep_contents(mail); + if (res == TRUE) { + Save_Get(post_office.mail_recipient_flags) |= (1 << house_idx); + Save_Get(post_office.keep_mail_sum_players)++; + } + } - break; - } - - case mMl_NAME_TYPE_NPC: - { - if (mNpc_ReceiveHPMail(mail) == FALSE) { - mNpc_SendMailtoNpc(mail); - } - - res = mPO_keep_contents(mail); - if (res == TRUE) { - Save_Get(post_office).keep_mail_sum_npcs++; - } - - break; - } - - case mMl_NAME_TYPE_MUSEUM: - { - mMsm_SendMuseumMail(mail); - mMl_clear_mail(mail); - - Save_Get(post_office).keep_mail_sum_npcs++; - res = TRUE; - - break; - } - } - - return res; -} - -extern int mPO_receipt_proc(Mail_c* mail, int send_type) { - int res = FALSE; - - switch (send_type) { - case mPO_SENDTYPE_MAIL: - { - res = mPO_receipt_check_mail(mail); - break; - } - - case mPO_SENDTYPE_LEAFLET: - { - mMl_copy_mail(&Save_Get(post_office).leaflet, mail); - Save_Set(post_office.leaflet_recipient_flags.leaflet_flags, 0); - res = TRUE; - break; - } - - case mPO_SENDTYPE_EVENT_LEAFLET: - { - mMl_copy_mail(&Save_Get(post_office).event_leaflet, mail); - Save_Set(post_office.leaflet_recipient_flags.event_flags, 0); - res = TRUE; - break; - } - } - - return res; -} - -static int mPO_copy_contents(int house_no, Mail_c* mail) { - int res = FALSE; - int free_slot = mMl_chk_mail_free_space(Save_Get(homes[house_no]).mailbox, HOME_MAILBOX_SIZE); - - if (free_slot >= 0) { - mMl_copy_mail(Save_Get(homes[house_no]).mailbox + free_slot, mail); - res = TRUE; - } - - return res; -} - -static void mPO_delivery_mail_with_item(Mail_c* mail, int mail_no, mActor_name_t present, PersonalID_c* pid) { - int header_back_start; - - mHandbill_Load_HandbillFromRom(mail->content.header, &header_back_start, mail->content.footer, mail->content.body, mail_no); - - mail->content.font = mMl_FONT_0; - mail->content.header_back_start = header_back_start; - mail->content.mail_type = 7; - mail->content.paper_type = ITM_PAPER55; - mail->present = present; - - mMl_set_to_plname(mail, pid); -} - -static int mPO_delivery_mail_with_order_ftr_sub(int house_no, PersonalID_c* pid, mPr_catalog_order_c* order) { - Mail_c mail; - u8 item_name[mIN_ITEM_NAME_LEN]; - - mMl_clear_mail(&mail); - mIN_copy_name_str(item_name, order->item); - mHandbill_Set_free_str(0, item_name, mIN_ITEM_NAME_LEN); - mPO_delivery_mail_with_item(&mail, 0x049 + order->shop_level, order->item, pid); - return mPO_copy_contents(house_no, &mail); -} - -static void mPO_delivery_mail_with_order_ftr(int house_no, int player_no) { - Private_c* priv = Save_GetPointer(private[player_no]); - - if (priv->exists == TRUE) { - mPr_catalog_order_c* order = priv->catalog_orders; - int i; - - for (i = 0; i < mPr_CATALOG_ORDER_NUM; i++) { - if (order->item != EMPTY_NO) { - if (mPO_delivery_mail_with_order_ftr_sub(house_no, &priv->player_ID, order) == FALSE) { - return; - } - - order->item = EMPTY_NO; - } - - order++; - } - } -} - -static void mPO_delivery_mail_with_ticket_set_free_str(lbRTC_month_t month) { - u8 month_str[9]; - u8 day_str[4]; - - int days = lbRTC_GetDaysByMonth(Common_Get(time.rtc_time.year), month); - mString_Load_MonthStringFromRom(month_str, month); - mString_Load_DayStringFromRom(day_str, days); - mHandbill_Set_free_str(4, month_str, 9); - mHandbill_Set_free_str(5, day_str, 4); -} - -static int mPO_delivery_mail_with_ticket_sub(int house_no, PersonalID_c* pid, mActor_name_t present) { - Mail_c mail; - - mMl_clear_mail(&mail); - mPO_delivery_mail_with_item(&mail, 0x057, present, pid); - return mPO_copy_contents(house_no, &mail); -} - -static void mPO_delivery_mail_with_ticket(int house_no, int player_no) { - mActor_name_t ticket; - Private_c* priv = Save_GetPointer(private[player_no]); - - if (priv->exists == TRUE) { - int ticket_num = priv->inventory.lotto_ticket_mail_storage; - - if (ticket_num != 0) { - int minus_ticket; - mActor_name_t ticket_id; - lbRTC_month_t ticket_month = priv->inventory.lotto_ticket_expiry_month; - - mPO_delivery_mail_with_ticket_set_free_str(ticket_month); - ticket = ITM_TICKET_START + (ticket_month - 1) * 8; - - for (ticket_num; ticket_num != 0; ticket_num -= minus_ticket) { - minus_ticket = ticket_num < 5 ? ticket_num : 5; - ticket_id = ticket + minus_ticket - 1; - if (mPO_delivery_mail_with_ticket_sub(house_no, &priv->player_ID, ticket_id) == FALSE) { - break; - } - } - } - - priv->inventory.lotto_ticket_mail_storage = ticket_num; - } -} - -static int mPO_delivery_mail_sub(int house_no) { - PostOffice_c* post_office; - Mail_c* po_mail; - int i; - int res = TRUE; - - po_mail = Save_Get(post_office).mail; - post_office = Save_GetPointer(post_office); - - for (i = 0; i < mPO_MAIL_STORAGE_SIZE; i++, po_mail++) { - if (mMl_check_not_used_mail(po_mail) == FALSE) { - int dst_house_no = mMl_hunt_for_send_address(po_mail); - if (dst_house_no != -1) { - if (house_no == mPO_DELIVER_ALL_HOUSES || dst_house_no == house_no) { - if (mPO_copy_contents(dst_house_no, po_mail) == TRUE) { - post_office->keep_mail_sum_players--; - mMl_clear_mail(po_mail); - } - else { - res = FALSE; // failed to deliver the mail, house mailbox is likely full - } - } - } - else { - switch (po_mail->header.recipient.type) { - case mMl_NAME_TYPE_PLAYER: - post_office->keep_mail_sum_players--; break; } - mMl_clear_mail(po_mail); - } - } - } + case mMl_NAME_TYPE_NPC: { + if (mNpc_ReceiveHPMail(mail) == FALSE) { + mNpc_SendMailtoNpc(mail); + } - Save_Set(post_office.keep_mail_sum_npcs, 0); - return res; + res = mPO_keep_contents(mail); + if (res == TRUE) { + Save_Get(post_office).keep_mail_sum_npcs++; + } + + break; + } + + case mMl_NAME_TYPE_MUSEUM: { + mMsm_SendMuseumMail(mail); + mMl_clear_mail(mail); + + Save_Get(post_office).keep_mail_sum_npcs++; + res = TRUE; + + break; + } + } + + return res; +} + +extern int mPO_receipt_proc(Mail_c* mail, int send_type) { + int res = FALSE; + + switch (send_type) { + case mPO_SENDTYPE_MAIL: { + res = mPO_receipt_check_mail(mail); + break; + } + + case mPO_SENDTYPE_LEAFLET: { + mMl_copy_mail(&Save_Get(post_office).leaflet, mail); + Save_Set(post_office.leaflet_recipient_flags.leaflet_flags, 0); + res = TRUE; + break; + } + + case mPO_SENDTYPE_EVENT_LEAFLET: { + mMl_copy_mail(&Save_Get(post_office).event_leaflet, mail); + Save_Set(post_office.leaflet_recipient_flags.event_flags, 0); + res = TRUE; + break; + } + } + + return res; +} + +static int mPO_copy_contents(int house_no, Mail_c* mail) { + int res = FALSE; + int free_slot = mMl_chk_mail_free_space(Save_Get(homes[house_no]).mailbox, HOME_MAILBOX_SIZE); + + if (free_slot >= 0) { + mMl_copy_mail(Save_Get(homes[house_no]).mailbox + free_slot, mail); + res = TRUE; + } + + return res; +} + +static void mPO_delivery_mail_with_item(Mail_c* mail, int mail_no, mActor_name_t present, PersonalID_c* pid) { + int header_back_start; + + mHandbill_Load_HandbillFromRom(mail->content.header, &header_back_start, mail->content.footer, mail->content.body, + mail_no); + + mail->content.font = mMl_FONT_0; + mail->content.header_back_start = header_back_start; + mail->content.mail_type = 7; + mail->content.paper_type = ITM_PAPER55; + mail->present = present; + + mMl_set_to_plname(mail, pid); +} + +static int mPO_delivery_mail_with_order_ftr_sub(int house_no, PersonalID_c* pid, mPr_catalog_order_c* order) { + Mail_c mail; + u8 item_name[mIN_ITEM_NAME_LEN]; + + mMl_clear_mail(&mail); + mIN_copy_name_str(item_name, order->item); + mHandbill_Set_free_str(0, item_name, mIN_ITEM_NAME_LEN); + mPO_delivery_mail_with_item(&mail, 0x049 + order->shop_level, order->item, pid); + return mPO_copy_contents(house_no, &mail); +} + +static void mPO_delivery_mail_with_order_ftr(int house_no, int player_no) { + Private_c* priv = Save_GetPointer(private_data[player_no]); + + if (priv->exists == TRUE) { + mPr_catalog_order_c* order = priv->catalog_orders; + int i; + + for (i = 0; i < mPr_CATALOG_ORDER_NUM; i++) { + if (order->item != EMPTY_NO) { + if (mPO_delivery_mail_with_order_ftr_sub(house_no, &priv->player_ID, order) == FALSE) { + return; + } + + order->item = EMPTY_NO; + } + + order++; + } + } +} + +static void mPO_delivery_mail_with_ticket_set_free_str(lbRTC_month_t month) { + u8 month_str[9]; + u8 day_str[4]; + + int days = lbRTC_GetDaysByMonth(Common_Get(time.rtc_time.year), month); + mString_Load_MonthStringFromRom(month_str, month); + mString_Load_DayStringFromRom(day_str, days); + mHandbill_Set_free_str(4, month_str, 9); + mHandbill_Set_free_str(5, day_str, 4); +} + +static int mPO_delivery_mail_with_ticket_sub(int house_no, PersonalID_c* pid, mActor_name_t present) { + Mail_c mail; + + mMl_clear_mail(&mail); + mPO_delivery_mail_with_item(&mail, 0x057, present, pid); + return mPO_copy_contents(house_no, &mail); +} + +static void mPO_delivery_mail_with_ticket(int house_no, int player_no) { + mActor_name_t ticket; + Private_c* priv = Save_GetPointer(private_data[player_no]); + + if (priv->exists == TRUE) { + int ticket_num = priv->inventory.lotto_ticket_mail_storage; + + if (ticket_num != 0) { + int minus_ticket; + mActor_name_t ticket_id; + lbRTC_month_t ticket_month = priv->inventory.lotto_ticket_expiry_month; + + mPO_delivery_mail_with_ticket_set_free_str(ticket_month); + ticket = ITM_TICKET_START + (ticket_month - 1) * 8; + + for (ticket_num; ticket_num != 0; ticket_num -= minus_ticket) { + minus_ticket = ticket_num < 5 ? ticket_num : 5; + ticket_id = ticket + minus_ticket - 1; + if (mPO_delivery_mail_with_ticket_sub(house_no, &priv->player_ID, ticket_id) == FALSE) { + break; + } + } + } + + priv->inventory.lotto_ticket_mail_storage = ticket_num; + } +} + +static int mPO_delivery_mail_sub(int house_no) { + PostOffice_c* post_office; + Mail_c* po_mail; + int i; + int res = TRUE; + + po_mail = Save_Get(post_office).mail; + post_office = Save_GetPointer(post_office); + + for (i = 0; i < mPO_MAIL_STORAGE_SIZE; i++, po_mail++) { + if (mMl_check_not_used_mail(po_mail) == FALSE) { + int dst_house_no = mMl_hunt_for_send_address(po_mail); + if (dst_house_no != -1) { + if (house_no == mPO_DELIVER_ALL_HOUSES || dst_house_no == house_no) { + if (mPO_copy_contents(dst_house_no, po_mail) == TRUE) { + post_office->keep_mail_sum_players--; + mMl_clear_mail(po_mail); + } else { + res = FALSE; // failed to deliver the mail, house mailbox is likely full + } + } + } else { + switch (po_mail->header.recipient.type) { + case mMl_NAME_TYPE_PLAYER: + post_office->keep_mail_sum_players--; + break; + } + + mMl_clear_mail(po_mail); + } + } + } + + Save_Set(post_office.keep_mail_sum_npcs, 0); + return res; } static void mPO_delivery_one_address_mail(int house_no) { - if (mPO_delivery_mail_sub(house_no) == TRUE) { - s16 mask = (1 << house_no) ^ 0b1111; - Save_Get(post_office.mail_recipient_flags) &= mask; // clear out delivered houses - } + if (mPO_delivery_mail_sub(house_no) == TRUE) { + s16 mask = (1 << house_no) ^ 0b1111; + Save_Get(post_office.mail_recipient_flags) &= mask; // clear out delivered houses + } } static void mPO_delivery_one_address_special_mail(int house_no) { - int player_no = mHS_get_pl_no(house_no); + int player_no = mHS_get_pl_no(house_no); - mPO_delivery_mail_with_ticket(house_no, player_no); - mPO_delivery_mail_with_order_ftr(house_no, player_no); + mPO_delivery_mail_with_ticket(house_no, player_no); + mPO_delivery_mail_with_order_ftr(house_no, player_no); } static void mPO_delivery_one_address_leaflet(s16* leaflet_received_flags, Mail_c* leaflet, int house_no) { - if ((((*leaflet_received_flags) >> house_no) & 1) == FALSE) { - mHm_hs_c* house = Save_GetPointer(homes[house_no]); + if ((((*leaflet_received_flags) >> house_no) & 1) == FALSE) { + mHm_hs_c* house = Save_GetPointer(homes[house_no]); - if (house->ownerID.land_id == 0xFFFF) { - *leaflet_received_flags |= (1 << house_no); // unclaimed houses are marked "received" - } - else { - int player_no = mHS_get_pl_no(house_no); - if (player_no < mPr_FOREIGNER && mEv_ArbeitPlayer(player_no) == FALSE) { - mMl_set_to_plname(leaflet, &house->ownerID); - if (mPO_copy_contents(house_no, leaflet) == TRUE) { - *leaflet_received_flags |= (1 << house_no); + if (house->ownerID.land_id == 0xFFFF) { + *leaflet_received_flags |= (1 << house_no); // unclaimed houses are marked "received" + } else { + int player_no = mHS_get_pl_no(house_no); + if (player_no < mPr_FOREIGNER && mEv_ArbeitPlayer(player_no) == FALSE) { + mMl_set_to_plname(leaflet, &house->ownerID); + if (mPO_copy_contents(house_no, leaflet) == TRUE) { + *leaflet_received_flags |= (1 << house_no); + } + } } - } } - } } static void mPO_delivery_one_address_event_leaflet(int house_no) { - Mail_c* ev_leaflet = &Save_Get(post_office).event_leaflet; - int special_type = mEv_get_special_event_type(); - int leaflet_event_type; + Mail_c* ev_leaflet = &Save_Get(post_office).event_leaflet; + int special_type = mEv_get_special_event_type(); + int leaflet_event_type; - switch (ev_leaflet->content.mail_type) { - case mMl_TYPE_SHOP_SALE_LEAFLET: - leaflet_event_type = mEv_EVENT_SHOP_SALE; - break; + switch (ev_leaflet->content.mail_type) { + case mMl_TYPE_SHOP_SALE_LEAFLET: + leaflet_event_type = mEv_EVENT_SHOP_SALE; + break; - case mMl_TYPE_BROKER_SALE_LEAFLET: - leaflet_event_type = mEv_EVENT_BROKER_SALE; - break; + case mMl_TYPE_BROKER_SALE_LEAFLET: + leaflet_event_type = mEv_EVENT_BROKER_SALE; + break; - default: - leaflet_event_type = -1; - break; - } + default: + leaflet_event_type = -1; + break; + } - if (leaflet_event_type == special_type) { - mPO_delivery_one_address_leaflet(&Save_Get(post_office).leaflet_recipient_flags.event_flags, ev_leaflet, house_no); - } + if (leaflet_event_type == special_type) { + mPO_delivery_one_address_leaflet(&Save_Get(post_office).leaflet_recipient_flags.event_flags, ev_leaflet, + house_no); + } } extern int mPO_delivery_one_address(int house_no) { - mPO_delivery_one_address_mail(house_no); - mPO_delivery_one_address_leaflet(&Save_Get(post_office).leaflet_recipient_flags.leaflet_flags, &Save_Get(post_office).leaflet, house_no); - mPO_delivery_one_address_event_leaflet(house_no); + mPO_delivery_one_address_mail(house_no); + mPO_delivery_one_address_leaflet(&Save_Get(post_office).leaflet_recipient_flags.leaflet_flags, + &Save_Get(post_office).leaflet, house_no); + mPO_delivery_one_address_event_leaflet(house_no); } static void mPO_delivery_mail() { - mPO_delivery_mail_sub(mPO_DELIVER_ALL_HOUSES); - mPO_adjust_keep_mail(); + mPO_delivery_mail_sub(mPO_DELIVER_ALL_HOUSES); + mPO_adjust_keep_mail(); } static void mPO_delivery_leaflet() { - int house_no; + int house_no; - for (house_no = 0; house_no < mHS_HOUSE_NUM; house_no++) { - mPO_delivery_one_address_leaflet(&Save_Get(post_office).leaflet_recipient_flags.leaflet_flags, &Save_Get(post_office).leaflet, house_no); - mPO_delivery_one_address_event_leaflet(house_no); - } + for (house_no = 0; house_no < mHS_HOUSE_NUM; house_no++) { + mPO_delivery_one_address_leaflet(&Save_Get(post_office).leaflet_recipient_flags.leaflet_flags, + &Save_Get(post_office).leaflet, house_no); + mPO_delivery_one_address_event_leaflet(house_no); + } } extern void mPO_delivery_all_address_proc() { - mPO_delivery_mail(); - mPO_delivery_leaflet(); + mPO_delivery_mail(); + mPO_delivery_leaflet(); } static int mPO_make_post_man(GAME_PLAY* play) { - static int bx_add[2] = { -1, 1 }; - static int ux_table[2] = { UT_X_NUM - 1, 0 }; + static int bx_add[2] = { -1, 1 }; + static int ux_table[2] = { UT_X_NUM - 1, 0 }; - int pl_block_x; - int pl_block_z; - u32 block_kind; + int pl_block_x; + int pl_block_z; + u32 block_kind; - int po_block_x; - int po_block_z; - int res = FALSE; + int po_block_x; + int po_block_z; + int res = FALSE; - if (Save_Get(scene_no) == SCENE_FG) { - mFI_BlockKind2BkNum(&pl_block_x, &pl_block_z, mRF_BLOCKKIND_PLAYER); - block_kind = mFI_BkNum2BlockKind(play->block_table.block_x, play->block_table.block_z); + if (Save_Get(scene_no) == SCENE_FG) { + mFI_BlockKind2BkNum(&pl_block_x, &pl_block_z, mRF_BLOCKKIND_PLAYER); + block_kind = mFI_BkNum2BlockKind(play->block_table.block_x, play->block_table.block_z); - if (block_kind != mRF_BLOCKKIND_NONE) { - if ((block_kind & mRF_BLOCKKIND_PLAYER) != 0) { - int bx_add_idx; - int spawned_postman; + if (block_kind != mRF_BLOCKKIND_NONE) { + if ((block_kind & mRF_BLOCKKIND_PLAYER) != 0) { + int bx_add_idx; + int spawned_postman; - mFI_BlockKind2BkNum(&po_block_x, &po_block_z, mRF_BLOCKKIND_POSTOFFICE); - bx_add_idx = pl_block_x >= po_block_x ? 0 : 1; - spawned_postman = (*Common_Get(clip).npc_clip->setupActor_proc)(play, SP_NPC_POST_MAN, -1, -1, 0, play->block_table.block_x + bx_add[bx_add_idx], play->block_table.block_z, ux_table[bx_add_idx], 7); + mFI_BlockKind2BkNum(&po_block_x, &po_block_z, mRF_BLOCKKIND_POSTOFFICE); + bx_add_idx = pl_block_x >= po_block_x ? 0 : 1; + spawned_postman = (*Common_Get(clip).npc_clip->setupActor_proc)( + play, SP_NPC_POST_MAN, -1, -1, 0, play->block_table.block_x + bx_add[bx_add_idx], + play->block_table.block_z, ux_table[bx_add_idx], 7); - if (spawned_postman == TRUE) { - res = TRUE; - } - } - else if ((block_kind & mRF_BLOCKKIND_POSTOFFICE) != 0) { - if (Common_Get(force_mail_delivery_flag) == TRUE) { - int post_utx; - int post_utz; - int spawned_postman; - ACTOR* post_office_structure = Actor_info_fgName_search(&play->actor_info, POST_OFFICE, ACTOR_PART_ITEM); + if (spawned_postman == TRUE) { + res = TRUE; + } + } else if ((block_kind & mRF_BLOCKKIND_POSTOFFICE) != 0) { + if (Common_Get(force_mail_delivery_flag) == TRUE) { + int post_utx; + int post_utz; + int spawned_postman; + ACTOR* post_office_structure = + Actor_info_fgName_search(&play->actor_info, POST_OFFICE, ACTOR_PART_ITEM); - if (post_office_structure != NULL) { - mFI_Wpos2UtNum_inBlock(&post_utx, &post_utz, post_office_structure->world.position); - spawned_postman = (*Common_Get(clip).npc_clip->setupActor_proc)(play, SP_NPC_POST_MAN, -1, -1, 1, play->block_table.block_x, play->block_table.block_z, post_utx - 3, post_utz); + if (post_office_structure != NULL) { + mFI_Wpos2UtNum_inBlock(&post_utx, &post_utz, post_office_structure->world.position); + spawned_postman = (*Common_Get(clip).npc_clip->setupActor_proc)( + play, SP_NPC_POST_MAN, -1, -1, 1, play->block_table.block_x, play->block_table.block_z, + post_utx - 3, post_utz); - if (spawned_postman == TRUE) { - res = TRUE; + if (spawned_postman == TRUE) { + res = TRUE; + } + } + } + } else { + mPO_delivery_all_address_proc(); + res = TRUE; } - } + } else { + mPO_delivery_all_address_proc(); + res = TRUE; } - } - else { + } else { mPO_delivery_all_address_proc(); res = TRUE; - } } - else { - mPO_delivery_all_address_proc(); - res = TRUE; - } - } - else { - mPO_delivery_all_address_proc(); - res = TRUE; - } - return res; + return res; } static void mPO_set_next_delivery_time(lbRTC_time_c* time) { - if (time->hour < 9) { - time->hour = 9; - } - else if (time->hour < 17) { - time->hour = 17; - } - else { - lbRTC_Add_DD(time, 1); - time->hour = 9; - } + if (time->hour < 9) { + time->hour = 9; + } else if (time->hour < 17) { + time->hour = 17; + } else { + lbRTC_Add_DD(time, 1); + time->hour = 9; + } - time->min = 0; - time->sec = 0; - lbRTC_TimeCopy(&Save_Get(post_office).delivery_time, time); + time->min = 0; + time->sec = 0; + lbRTC_TimeCopy(&Save_Get(post_office).delivery_time, time); } static void mPO_delivery_proc(GAME_PLAY* play) { - lbRTC_time_c time; + lbRTC_time_c time; - lbRTC_TimeCopy(&time, Common_GetPointer(time.rtc_time)); + lbRTC_TimeCopy(&time, Common_GetPointer(time.rtc_time)); - if ((lbRTC_IsOverTime(&Save_Get(post_office).delivery_time, &time) == lbRTC_OVER || Common_Get(force_mail_delivery_flag) == TRUE) && - (mPO_make_post_man(play) == TRUE) - ) { - mPO_set_next_delivery_time(&time); - Common_Set(force_mail_delivery_flag, FALSE); - } + if ((lbRTC_IsOverTime(&Save_Get(post_office).delivery_time, &time) == lbRTC_OVER || + Common_Get(force_mail_delivery_flag) == TRUE) && + (mPO_make_post_man(play) == TRUE)) { + mPO_set_next_delivery_time(&time); + Common_Set(force_mail_delivery_flag, FALSE); + } } static void mPO_first_delivery_proc() { - int deliver = FALSE; - lbRTC_time_c time; + int deliver = FALSE; + lbRTC_time_c time; - lbRTC_TimeCopy(&time, Common_GetPointer(time.rtc_time)); + lbRTC_TimeCopy(&time, Common_GetPointer(time.rtc_time)); - if (lbRTC_IsOverTime(&Save_Get(post_office).delivery_time, &time) == lbRTC_OVER || Common_Get(force_mail_delivery_flag) == TRUE) { - deliver = TRUE; - mPO_set_next_delivery_time(&time); - Common_Set(force_mail_delivery_flag, FALSE); - } + if (lbRTC_IsOverTime(&Save_Get(post_office).delivery_time, &time) == lbRTC_OVER || + Common_Get(force_mail_delivery_flag) == TRUE) { + deliver = TRUE; + mPO_set_next_delivery_time(&time); + Common_Set(force_mail_delivery_flag, FALSE); + } - if (deliver == TRUE) { - mPO_delivery_mail(); - } + if (deliver == TRUE) { + mPO_delivery_mail(); + } - if (mLd_PlayerManKindCheck() == FALSE) { - int house_no = mHS_get_arrange_idx(Common_Get(player_no)); - mPO_delivery_one_address_special_mail(house_no); - } + if (mLd_PlayerManKindCheck() == FALSE) { + int house_no = mHS_get_arrange_idx(Common_Get(player_no)); + mPO_delivery_one_address_special_mail(house_no); + } - if (deliver == TRUE) { - mPO_delivery_leaflet(); - } + if (deliver == TRUE) { + mPO_delivery_leaflet(); + } } extern void mPO_business_proc(GAME_PLAY* play) { - if ((Common_Get(clip).demo_clip == NULL && Common_Get(clip).demo_clip2 == NULL) || - (Common_Get(clip).demo_clip != NULL && Common_Get(clip).demo_clip->type == mDemo_CLIP_TYPE_INTRO_DEMO) - ) { - int scene = Save_Get(scene_no); + if ((Common_Get(clip).demo_clip == NULL && Common_Get(clip).demo_clip2 == NULL) || + (Common_Get(clip).demo_clip != NULL && Common_Get(clip).demo_clip->type == mDemo_CLIP_TYPE_INTRO_DEMO)) { + int scene = Save_Get(scene_no); - switch (scene) { - default: - mPO_delivery_proc(play); - break; + switch (scene) { + default: + mPO_delivery_proc(play); + break; - case SCENE_PLAYERSELECT: - case SCENE_PLAYERSELECT_2: - case SCENE_PLAYERSELECT_3: - case SCENE_PLAYERSELECT_SAVE: - case SCENE_TITLE_DEMO: - return; + case SCENE_PLAYERSELECT: + case SCENE_PLAYERSELECT_2: + case SCENE_PLAYERSELECT_3: + case SCENE_PLAYERSELECT_SAVE: + case SCENE_TITLE_DEMO: + return; + } } - } } extern void mPO_first_work() { - lbRTC_time_c* time = &Save_Get(save_check).time; - if (mTM_AreTimesEqual(time, &mTM_rtcTime_clear_code) == FALSE && lbRTC_IsOverRTC(time) == FALSE) { - Common_Set(force_mail_delivery_flag, TRUE); - } + lbRTC_time_c* time = &Save_Get(save_check).time; + if (mTM_AreTimesEqual(time, &mTM_rtcTime_clear_code) == FALSE && lbRTC_IsOverRTC(time) == FALSE) { + Common_Set(force_mail_delivery_flag, TRUE); + } - mPO_first_delivery_proc(); - mPO_adjust_keep_mail(); + mPO_first_delivery_proc(); + mPO_adjust_keep_mail(); } extern void mPO_post_office_init() { - bzero(Save_GetPointer(post_office), sizeof(PostOffice_c)); - mMl_clear_mail_box(Save_Get(post_office).mail, mPO_MAIL_STORAGE_SIZE); - mMl_clear_mail(&Save_Get(post_office).leaflet); - mMl_clear_mail(&Save_Get(post_office).event_leaflet); - Save_Get(post_office).leaflet_recipient_flags.raw = 0x000F000F; - lbRTC_TimeCopy(&Save_Get(post_office).delivery_time, Common_GetPointer(time.rtc_time)); + bzero(Save_GetPointer(post_office), sizeof(PostOffice_c)); + mMl_clear_mail_box(Save_Get(post_office).mail, mPO_MAIL_STORAGE_SIZE); + mMl_clear_mail(&Save_Get(post_office).leaflet); + mMl_clear_mail(&Save_Get(post_office).event_leaflet); + Save_Get(post_office).leaflet_recipient_flags.raw = 0x000F000F; + lbRTC_TimeCopy(&Save_Get(post_office).delivery_time, Common_GetPointer(time.rtc_time)); } diff --git a/src/m_private.c b/src/m_private.c index c478a8a3..e4a55652 100644 --- a/src/m_private.c +++ b/src/m_private.c @@ -22,1478 +22,1466 @@ static Mail_c l_mpr_mail; Private_c g_foreigner_private; extern void mPr_ClearPlayerName(u8* buf) { - mem_clear(buf, PLAYER_NAME_LEN, CHAR_SPACE); + mem_clear(buf, PLAYER_NAME_LEN, CHAR_SPACE); } extern void mPr_CopyPlayerName(u8* dst, u8* src) { - mem_copy(dst, src, PLAYER_NAME_LEN); + mem_copy(dst, src, PLAYER_NAME_LEN); } extern int mPr_NullCheckPlayerName(u8* name_p) { - int res = FALSE; - int i; + int res = FALSE; + int i; - for (i = 0; i < PLAYER_NAME_LEN; i++) { - if (name_p[0] != CHAR_SPACE) { - break; + for (i = 0; i < PLAYER_NAME_LEN; i++) { + if (name_p[0] != CHAR_SPACE) { + break; + } + name_p++; } - name_p++; - } - if (i == PLAYER_NAME_LEN) { - res = TRUE; - } + if (i == PLAYER_NAME_LEN) { + res = TRUE; + } - return res; + return res; } extern int mPr_CheckCmpPlayerName(u8* name0, u8* name1) { - int res = FALSE; + int res = FALSE; - if (mPr_NullCheckPlayerName(name0) == FALSE && mPr_NullCheckPlayerName(name1) == FALSE) { - res = mem_cmp(name0, name1, PLAYER_NAME_LEN); - } + if (mPr_NullCheckPlayerName(name0) == FALSE && mPr_NullCheckPlayerName(name1) == FALSE) { + res = mem_cmp(name0, name1, PLAYER_NAME_LEN); + } - return res; + return res; } extern int mPr_GetPlayerName(u8* buf, int player_no) { - PersonalID_c* pid; - int res = FALSE; + PersonalID_c* pid; + int res = FALSE; - if (mLd_PlayerManKindCheckNo(player_no) == FALSE) { - pid = &Save_Get(private[player_no]).player_ID; + if (mLd_PlayerManKindCheckNo(player_no) == FALSE) { + pid = &Save_Get(private_data[player_no]).player_ID; - if (mPr_NullCheckPersonalID(pid) == FALSE) { - mPr_CopyPlayerName(buf, pid->player_name); - res = TRUE; + if (mPr_NullCheckPersonalID(pid) == FALSE) { + mPr_CopyPlayerName(buf, pid->player_name); + res = TRUE; + } + } else if (mLd_PlayerManKindCheckNo(Common_Get(player_no)) == TRUE) { + mPr_CopyPlayerName(buf, Common_Get(now_private)->player_ID.player_name); + res = TRUE; } - } - else if (mLd_PlayerManKindCheckNo(Common_Get(player_no)) == TRUE) { - mPr_CopyPlayerName(buf, Common_Get(now_private)->player_ID.player_name); - res = TRUE; - } - return res; + return res; } extern int mPr_NullCheckPersonalID(PersonalID_c* pid) { - int res = FALSE; + int res = FALSE; - if (pid->land_id == 0xFFFF && mPr_NullCheckPlayerName(pid->player_name) == TRUE) { - res = TRUE; - } + if (pid->land_id == 0xFFFF && mPr_NullCheckPlayerName(pid->player_name) == TRUE) { + res = TRUE; + } - return res; + return res; } extern void mPr_ClearPersonalID(PersonalID_c* pid) { - mPr_ClearPlayerName(pid->player_name); - mLd_ClearLandName(pid->land_name); - pid->land_id = 0xFFFF; - pid->player_id = 0xFFFF; + mPr_ClearPlayerName(pid->player_name); + mLd_ClearLandName(pid->land_name); + pid->land_id = 0xFFFF; + pid->player_id = 0xFFFF; } extern void mPr_ClearAnyPersonalID(PersonalID_c* pid, int count) { - for (count; count != 0; count--) { - mPr_ClearPersonalID(pid); - pid++; - } + for (count; count != 0; count--) { + mPr_ClearPersonalID(pid); + pid++; + } } extern void mPr_CopyPersonalID(PersonalID_c* dst, PersonalID_c* src) { - mem_copy((u8*)dst, (u8*)src, sizeof(PersonalID_c)); + mem_copy((u8*)dst, (u8*)src, sizeof(PersonalID_c)); } extern int mPr_CheckCmpPersonalID(PersonalID_c* pid0, PersonalID_c* pid1) { - int res = FALSE; + int res = FALSE; - if ( - pid0->land_id == pid1->land_id && - pid0->player_id == pid1->player_id && - mLd_CheckCmpLandName(pid0->land_name, pid1->land_name) == TRUE && - mPr_CheckCmpPlayerName(pid0->player_name, pid1->player_name) == TRUE - ) { - res = TRUE; - } + if (pid0->land_id == pid1->land_id && pid0->player_id == pid1->player_id && + mLd_CheckCmpLandName(pid0->land_name, pid1->land_name) == TRUE && + mPr_CheckCmpPlayerName(pid0->player_name, pid1->player_name) == TRUE) { + res = TRUE; + } - return res; + return res; } // TODO: this might actually be file-local but I'm not sure, DnM+ inlined it extern void mPr_ClearPrivateBirthday(mPr_birthday_c* birthday) { - birthday->year = 0xFFFF; - birthday->month = 0xFF; - birthday->day = 0xFF; + birthday->year = 0xFFFF; + birthday->month = 0xFF; + birthday->day = 0xFF; } extern void mPr_ClearAnimalMemory(mPr_animal_memory_c* memory) { - memory->npc_id = 0xFFFF; - mLd_ClearLandName(memory->land_name); + memory->npc_id = 0xFFFF; + mLd_ClearLandName(memory->land_name); } extern void mPr_ClearPrivateInfo(Private_c* private_info) { - bzero(private_info, sizeof(Private_c)); + bzero(private_info, sizeof(Private_c)); - mPr_ClearPersonalID(&private_info->player_ID); - private_info->gender = mPr_SEX_MALE; - mQst_ClearDelivery(private_info->deliveries, mPr_DELIVERY_QUEST_NUM); - mQst_ClearErrand(private_info->errands, mPr_ERRAND_QUEST_NUM); - mMl_clear_mail_box(private_info->mail, mPr_INVENTORY_MAIL_COUNT); - mMl_clear_mail_header_common(&private_info->saved_mail_header); - mPlib_change_player_cloth_info_lv2(private_info, ITM_CLOTH001); - mNpc_ClearAnimalPersonalID(&private_info->stored_anm_id); - mPr_ClearPrivateBirthday(&private_info->birthday); - private_info->backgound_texture = ITM_CLOTH226; - mNpc_ClearRemail(&private_info->remail); - mPr_ClearAnimalMemory(&private_info->animal_memory); - mPr_ClearMapInfo(private_info->maps, mPr_FOREIGN_MAP_COUNT); - mMsm_ClearRecord(&private_info->museum_record); - private_info->state_flags = 1; + mPr_ClearPersonalID(&private_info->player_ID); + private_info->gender = mPr_SEX_MALE; + mQst_ClearDelivery(private_info->deliveries, mPr_DELIVERY_QUEST_NUM); + mQst_ClearErrand(private_info->errands, mPr_ERRAND_QUEST_NUM); + mMl_clear_mail_box(private_info->mail, mPr_INVENTORY_MAIL_COUNT); + mMl_clear_mail_header_common(&private_info->saved_mail_header); + mPlib_change_player_cloth_info_lv2(private_info, ITM_CLOTH001); + mNpc_ClearAnimalPersonalID(&private_info->stored_anm_id); + mPr_ClearPrivateBirthday(&private_info->birthday); + private_info->backgound_texture = ITM_CLOTH226; + mNpc_ClearRemail(&private_info->remail); + mPr_ClearAnimalMemory(&private_info->animal_memory); + mPr_ClearMapInfo(private_info->maps, mPr_FOREIGN_MAP_COUNT); + mMsm_ClearRecord(&private_info->museum_record); + private_info->state_flags = 1; } static int mPr_GetRandomFace() { - return (fqrand() * (f32)mPr_FACE_TYPE_NUM); + return (fqrand() * (f32)mPr_FACE_TYPE_NUM); } static int mPr_GetRandomOriginalFace() { - Private_c* priv = Save_Get(private); - Private_c* pr2; - - //Private_c* pr2; - int j; - int player_exist_num = 0; - int face; - int i; + Private_c* priv = Save_Get(private_data); + Private_c* pr2; - { - Private_c* pr = priv; - for (i = 0; i < PLAYER_NUM; i++) { - if (pr != NULL && mPr_NullCheckPersonalID(&pr->player_ID) == FALSE) { - player_exist_num++; - } - pr++; - } - } + // Private_c* pr2; + int j; + int player_exist_num = 0; + int face; + int i; - face = RANDOM(mPr_FACE_TYPE_NUM - player_exist_num); - for (player_exist_num; player_exist_num > 0; player_exist_num--) { - pr2 = priv; - for (j = 0; j < PLAYER_NUM; j++) { - if (pr2 != NULL && mPr_NullCheckPersonalID(&pr2->player_ID) == FALSE && pr2->face == face) { - face++; - - if (face >= mPr_FACE_TYPE_NUM) { - face = mPr_FACE_TYPE0; + { + Private_c* pr = priv; + for (i = 0; i < PLAYER_NUM; i++) { + if (pr != NULL && mPr_NullCheckPersonalID(&pr->player_ID) == FALSE) { + player_exist_num++; + } + pr++; } - break; - } - - pr2++; } - } - return face; + face = RANDOM(mPr_FACE_TYPE_NUM - player_exist_num); + for (player_exist_num; player_exist_num > 0; player_exist_num--) { + pr2 = priv; + for (j = 0; j < PLAYER_NUM; j++) { + if (pr2 != NULL && mPr_NullCheckPersonalID(&pr2->player_ID) == FALSE && pr2->face == face) { + face++; + + if (face >= mPr_FACE_TYPE_NUM) { + face = mPr_FACE_TYPE0; + } + break; + } + + pr2++; + } + } + + return face; } -static mActor_name_t mPr_boy_cloth_table[8] = { ITM_CLOTH000, ITM_CLOTH001, ITM_CLOTH002, ITM_CLOTH003, ITM_CLOTH004, ITM_CLOTH005, ITM_CLOTH006, ITM_CLOTH007 }; -static mActor_name_t mPr_girl_cloth_table[8] = { ITM_CLOTH008, ITM_CLOTH009, ITM_CLOTH010, ITM_CLOTH011, ITM_CLOTH012, ITM_CLOTH013, ITM_CLOTH014, ITM_CLOTH015 }; +static mActor_name_t mPr_boy_cloth_table[8] = { ITM_CLOTH000, ITM_CLOTH001, ITM_CLOTH002, ITM_CLOTH003, + ITM_CLOTH004, ITM_CLOTH005, ITM_CLOTH006, ITM_CLOTH007 }; +static mActor_name_t mPr_girl_cloth_table[8] = { ITM_CLOTH008, ITM_CLOTH009, ITM_CLOTH010, ITM_CLOTH011, + ITM_CLOTH012, ITM_CLOTH013, ITM_CLOTH014, ITM_CLOTH015 }; static mActor_name_t mPr_GetRandomCloth(u8 sex) { - static mActor_name_t* cloth_table[mPr_SEX_NUM] = { mPr_boy_cloth_table, mPr_girl_cloth_table }; - static int cloth_max[mPr_SEX_NUM] = { 8, 8 }; + static mActor_name_t* cloth_table[mPr_SEX_NUM] = { mPr_boy_cloth_table, mPr_girl_cloth_table }; + static int cloth_max[mPr_SEX_NUM] = { 8, 8 }; - u8 s = sex; - int sel_cloth; - mActor_name_t* t; - mActor_name_t cloth; + u8 s = sex; + int sel_cloth; + mActor_name_t* t; + mActor_name_t cloth; - if (s >= mPr_SEX_NUM) { - s = mPr_SEX_MALE; - } + if (s >= mPr_SEX_NUM) { + s = mPr_SEX_MALE; + } - t = cloth_table[s]; - sel_cloth = RANDOM(cloth_max[s]); - cloth = t[sel_cloth]; - return cloth; + t = cloth_table[s]; + sel_cloth = RANDOM(cloth_max[s]); + cloth = t[sel_cloth]; + return cloth; } extern void mPr_SetNowPrivateCloth() { - Private_c* priv = Common_Get(now_private); + Private_c* priv = Common_Get(now_private); - if (priv != NULL) { - mPlib_change_player_cloth_info_lv2(priv, mPr_GetRandomCloth(priv->gender)); - } + if (priv != NULL) { + mPlib_change_player_cloth_info_lv2(priv, mPr_GetRandomCloth(priv->gender)); + } } extern void mPr_InitPrivateInfo(Private_c* priv) { - mLd_land_info_c* land_info = Save_GetPointer(land_info); - Private_c* o_priv = Save_Get(private); - int id_existed = FALSE; - int face = mPr_GetRandomOriginalFace(); - int pid; - int i; + mLd_land_info_c* land_info = Save_GetPointer(land_info); + Private_c* o_priv = Save_Get(private_data); + int id_existed = FALSE; + int face = mPr_GetRandomOriginalFace(); + int pid; + int i; - priv->player_ID.land_id = land_info->id; - mLd_CopyLandName(priv->player_ID.land_name, land_info->name); - - pid = fqrand() * 253.0f; + priv->player_ID.land_id = land_info->id; + mLd_CopyLandName(priv->player_ID.land_name, land_info->name); - for (i = 0; i < PLAYER_NUM - 1; i++) { - int j; + pid = fqrand() * 253.0f; - for (j = 0; j < PLAYER_NUM; j++) { - if ((u16)pid == o_priv[j].player_ID.player_id) { - id_existed = TRUE; - pid++; // move to next PID - break; - } + for (i = 0; i < PLAYER_NUM - 1; i++) { + int j; + + for (j = 0; j < PLAYER_NUM; j++) { + if ((u16)pid == o_priv[j].player_ID.player_id) { + id_existed = TRUE; + pid++; // move to next PID + break; + } + } + + if (id_existed == FALSE) { + break; + } + + id_existed = FALSE; } - if (id_existed == FALSE) { - break; + priv->player_ID.player_id = 0xF000 | pid; + priv->exists = TRUE; + mPlib_change_player_cloth_info_lv2(priv, mPr_GetRandomCloth(mPr_SEX_MALE)); + priv->gender = mPr_SEX_MALE; + priv->inventory.loan = 100; + priv->face = face; + + for (i = 0; i < mPr_ORIGINAL_DESIGN_COUNT; i++) { + priv->my_org_no_table[i] = i; } - - id_existed = FALSE; - } - - priv->player_ID.player_id = 0xF000 | pid; - priv->exists = TRUE; - mPlib_change_player_cloth_info_lv2(priv, mPr_GetRandomCloth(mPr_SEX_MALE)); - priv->gender = mPr_SEX_MALE; - priv->inventory.loan = 100; - priv->face = face; - - for (i = 0; i < mPr_ORIGINAL_DESIGN_COUNT; i++) { - priv->my_org_no_table[i] = i; - } } extern void mPr_CopyPrivateInfo(Private_c* dst, Private_c* src) { - bcopy(src, dst, sizeof(Private_c)); + bcopy(src, dst, sizeof(Private_c)); } extern int mPr_CheckPrivate(Private_c* priv) { - int res = FALSE; + int res = FALSE; - if (mLd_CHECK_LAND_ID(priv->player_ID.land_id)) { - res = TRUE; - } + if (mLd_CHECK_LAND_ID(priv->player_ID.land_id)) { + res = TRUE; + } - return res; + return res; } extern int mPr_CheckCmpPrivate(Private_c* priv0, Private_c* priv1) { - int res = FALSE; + int res = FALSE; - if (mPr_CheckCmpPersonalID(&priv0->player_ID, &priv1->player_ID) == TRUE) { - res = TRUE; - } + if (mPr_CheckCmpPersonalID(&priv0->player_ID, &priv1->player_ID) == TRUE) { + res = TRUE; + } - return res; + return res; } extern int mPr_GetPrivateIdx(PersonalID_c* pid) { - Private_c* priv = Save_Get(private); - int res = -1; + Private_c* priv = Save_Get(private_data); + int res = -1; - if (mPr_NullCheckPersonalID(pid) == FALSE) { - int i; + if (mPr_NullCheckPersonalID(pid) == FALSE) { + int i; - for (i = 0; i < PLAYER_NUM; i++) { - if (mPr_CheckCmpPersonalID(pid, &priv->player_ID) == TRUE) { - res = i; - break; - } + for (i = 0; i < PLAYER_NUM; i++) { + if (mPr_CheckCmpPersonalID(pid, &priv->player_ID) == TRUE) { + res = i; + break; + } - priv++; + priv++; + } } - } - return res; + return res; } extern int mPr_GetPossessionItemIdx(Private_c* priv, mActor_name_t item) { - int idx = -1; - - if (priv != NULL) { - mActor_name_t* pockets = priv->inventory.pockets; - int i; + int idx = -1; - for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { - mActor_name_t it = *pockets; - if (it == item) { - idx = i; - break; - } + if (priv != NULL) { + mActor_name_t* pockets = priv->inventory.pockets; + int i; - pockets++; + for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { + mActor_name_t it = *pockets; + if (it == item) { + idx = i; + break; + } + + pockets++; + } } - } - return idx; + return idx; } extern int mPr_GetPossessionItemIdxWithCond(Private_c* priv, mActor_name_t item, u32 cond) { - int idx = -1; - - if (priv != NULL) { - mActor_name_t* pockets = priv->inventory.pockets; - int i; + int idx = -1; - for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { - mActor_name_t it = *pockets; - if (it == item && cond == mPr_GET_ITEM_COND(priv->inventory.item_conditions, i)) { - idx = i; - break; - } + if (priv != NULL) { + mActor_name_t* pockets = priv->inventory.pockets; + int i; - pockets++; + for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { + mActor_name_t it = *pockets; + if (it == item && cond == mPr_GET_ITEM_COND(priv->inventory.item_conditions, i)) { + idx = i; + break; + } + + pockets++; + } } - } - return idx; + return idx; } -extern int mPr_GetPossessionItemIdxFGTypeWithCond_cancel(Private_c* priv, mActor_name_t fg_type, u32 cond, mActor_name_t cancel_item) { - int idx = -1; - - if (priv != NULL) { - mActor_name_t* pockets = priv->inventory.pockets; - int i; +extern int mPr_GetPossessionItemIdxFGTypeWithCond_cancel(Private_c* priv, mActor_name_t fg_type, u32 cond, + mActor_name_t cancel_item) { + int idx = -1; - for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { - if (ITEM_NAME_GET_TYPE(*pockets) == fg_type && cond == mPr_GET_ITEM_COND(priv->inventory.item_conditions, i) && *pockets != cancel_item) { - idx = i; - break; - } - - pockets++; + if (priv != NULL) { + mActor_name_t* pockets = priv->inventory.pockets; + int i; + + for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { + if (ITEM_NAME_GET_TYPE(*pockets) == fg_type && + cond == mPr_GET_ITEM_COND(priv->inventory.item_conditions, i) && *pockets != cancel_item) { + idx = i; + break; + } + + pockets++; + } } - } - return idx; + return idx; } extern int mPr_GetPossessionItemIdxItem1Category(Private_c* priv, u8 item1_type) { - int idx = -1; - - if (priv != NULL) { - mActor_name_t* pockets = priv->inventory.pockets; - int i; + int idx = -1; - for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { - if (ITEM_NAME_GET_TYPE(*pockets) == NAME_TYPE_ITEM1 && GET_NAME_ITEM1_CATEGORY(*pockets) == item1_type) { - idx = i; - break; - } - pockets++; + if (priv != NULL) { + mActor_name_t* pockets = priv->inventory.pockets; + int i; + + for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { + if (ITEM_NAME_GET_TYPE(*pockets) == NAME_TYPE_ITEM1 && GET_NAME_ITEM1_CATEGORY(*pockets) == item1_type) { + idx = i; + break; + } + pockets++; + } } - } - return idx; + return idx; } -extern int mPr_GetPossessionItemIdxItem1CategoryWithCond_cancel(Private_c* priv, u8 item1_type, u32 cond, mActor_name_t cancel_item) { - int idx = -1; - - if (priv != NULL) { - mActor_name_t* pockets = priv->inventory.pockets; - int i; +extern int mPr_GetPossessionItemIdxItem1CategoryWithCond_cancel(Private_c* priv, u8 item1_type, u32 cond, + mActor_name_t cancel_item) { + int idx = -1; - for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { - if (ITEM_NAME_GET_TYPE(*pockets) == NAME_TYPE_ITEM1 && GET_NAME_ITEM1_CATEGORY(*pockets) == item1_type && cond == mPr_GET_ITEM_COND(priv->inventory.item_conditions, i) && *pockets != cancel_item) { - idx = i; - break; - } - pockets++; + if (priv != NULL) { + mActor_name_t* pockets = priv->inventory.pockets; + int i; + + for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { + if (ITEM_NAME_GET_TYPE(*pockets) == NAME_TYPE_ITEM1 && GET_NAME_ITEM1_CATEGORY(*pockets) == item1_type && + cond == mPr_GET_ITEM_COND(priv->inventory.item_conditions, i) && *pockets != cancel_item) { + idx = i; + break; + } + pockets++; + } } - } - return idx; + return idx; } -extern int mPr_GetPossessionItemIdxKindWithCond(Private_c* priv, mActor_name_t kind_start, mActor_name_t kind_end, u32 cond) { - int idx = -1; - - if (priv != NULL) { - mActor_name_t* pockets = priv->inventory.pockets; - int i; +extern int mPr_GetPossessionItemIdxKindWithCond(Private_c* priv, mActor_name_t kind_start, mActor_name_t kind_end, + u32 cond) { + int idx = -1; - for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { - if (*pockets >= kind_start && *pockets < kind_end && cond == mPr_GET_ITEM_COND(priv->inventory.item_conditions, i)) { - idx = i; - break; - } - pockets++; + if (priv != NULL) { + mActor_name_t* pockets = priv->inventory.pockets; + int i; + + for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { + if (*pockets >= kind_start && *pockets < kind_end && + cond == mPr_GET_ITEM_COND(priv->inventory.item_conditions, i)) { + idx = i; + break; + } + pockets++; + } } - } - return idx; + return idx; } extern int mPr_GetPossessionItemSum(Private_c* priv, mActor_name_t item) { - int sum = 0; + int sum = 0; - if (priv != NULL) { - mActor_name_t* pockets = priv->inventory.pockets; - int i; + if (priv != NULL) { + mActor_name_t* pockets = priv->inventory.pockets; + int i; - for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { - if (*pockets == item) { - sum++; - } - pockets++; + for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { + if (*pockets == item) { + sum++; + } + pockets++; + } } - } - return sum; + return sum; } extern int mPr_GetPossessionItemSumWithCond(Private_c* priv, mActor_name_t item, u32 cond) { - int sum = 0; + int sum = 0; - if (priv != NULL) { - mActor_name_t* pockets = priv->inventory.pockets; - int i; + if (priv != NULL) { + mActor_name_t* pockets = priv->inventory.pockets; + int i; - for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { - if (*pockets == item && cond == mPr_GET_ITEM_COND(priv->inventory.item_conditions, i)) { - sum++; - } - pockets++; + for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { + if (*pockets == item && cond == mPr_GET_ITEM_COND(priv->inventory.item_conditions, i)) { + sum++; + } + pockets++; + } } - } - return sum; + return sum; } -extern int mPr_GetPossessionItemSumFGTypeWithCond_cancel(Private_c* priv, mActor_name_t fg_type, u32 cond, mActor_name_t cancel_item) { - int sum = 0; +extern int mPr_GetPossessionItemSumFGTypeWithCond_cancel(Private_c* priv, mActor_name_t fg_type, u32 cond, + mActor_name_t cancel_item) { + int sum = 0; - if (priv != NULL) { - mActor_name_t* pockets = priv->inventory.pockets; - int i; + if (priv != NULL) { + mActor_name_t* pockets = priv->inventory.pockets; + int i; - for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { - if (ITEM_NAME_GET_TYPE(*pockets) == fg_type && cond == mPr_GET_ITEM_COND(priv->inventory.item_conditions, i) && *pockets != cancel_item) { - sum++; - } - pockets++; + for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { + if (ITEM_NAME_GET_TYPE(*pockets) == fg_type && + cond == mPr_GET_ITEM_COND(priv->inventory.item_conditions, i) && *pockets != cancel_item) { + sum++; + } + pockets++; + } } - } - return sum; + return sum; } -extern int mPr_GetPossessionItemSumItemCategoryWithCond_cancel(Private_c* priv, u8 item1_type, u32 cond, mActor_name_t cancel_item) { - int sum = 0; +extern int mPr_GetPossessionItemSumItemCategoryWithCond_cancel(Private_c* priv, u8 item1_type, u32 cond, + mActor_name_t cancel_item) { + int sum = 0; - if (priv != NULL) { - mActor_name_t* pockets = priv->inventory.pockets; - int i; + if (priv != NULL) { + mActor_name_t* pockets = priv->inventory.pockets; + int i; - for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { - if (ITEM_NAME_GET_TYPE(*pockets) == NAME_TYPE_ITEM1 && GET_NAME_ITEM1_CATEGORY(*pockets) == item1_type && cond == mPr_GET_ITEM_COND(priv->inventory.item_conditions, i) && *pockets != cancel_item) { - sum++; - } - pockets++; + for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { + if (ITEM_NAME_GET_TYPE(*pockets) == NAME_TYPE_ITEM1 && GET_NAME_ITEM1_CATEGORY(*pockets) == item1_type && + cond == mPr_GET_ITEM_COND(priv->inventory.item_conditions, i) && *pockets != cancel_item) { + sum++; + } + pockets++; + } } - } - return sum; + return sum; } extern int mPr_GetPossessionItemSumItemCategoryWithCond(Private_c* priv, u8 item1_type, u32 cond) { - int sum = 0; + int sum = 0; - if (priv != NULL) { - mActor_name_t* pockets = priv->inventory.pockets; - int i; + if (priv != NULL) { + mActor_name_t* pockets = priv->inventory.pockets; + int i; - for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { - if (ITEM_NAME_GET_TYPE(*pockets) == NAME_TYPE_ITEM1 && GET_NAME_ITEM1_CATEGORY(*pockets) == item1_type && cond == mPr_GET_ITEM_COND(priv->inventory.item_conditions, i)) { - sum++; - } - pockets++; + for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { + if (ITEM_NAME_GET_TYPE(*pockets) == NAME_TYPE_ITEM1 && GET_NAME_ITEM1_CATEGORY(*pockets) == item1_type && + cond == mPr_GET_ITEM_COND(priv->inventory.item_conditions, i)) { + sum++; + } + pockets++; + } } - } - return sum; + return sum; } -extern int mPr_GetPossessionItemSumKindWithCond(Private_c* priv, mActor_name_t kind_start, mActor_name_t kind_end, u32 cond) { - int sum = 0; +extern int mPr_GetPossessionItemSumKindWithCond(Private_c* priv, mActor_name_t kind_start, mActor_name_t kind_end, + u32 cond) { + int sum = 0; - if (priv != NULL) { - mActor_name_t* pockets = priv->inventory.pockets; - int i; + if (priv != NULL) { + mActor_name_t* pockets = priv->inventory.pockets; + int i; - for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { - if (*pockets >= kind_start && *pockets < kind_end && cond == mPr_GET_ITEM_COND(priv->inventory.item_conditions, i)) { - sum++; - } - pockets++; + for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { + if (*pockets >= kind_start && *pockets < kind_end && + cond == mPr_GET_ITEM_COND(priv->inventory.item_conditions, i)) { + sum++; + } + pockets++; + } } - } - return sum; + return sum; } extern void mPr_SetItemCollectBit(mActor_name_t item) { - mActor_name_t ftr_item_no = mRmTp_Item1ItemNo2FtrItemNo_AtPlayerRoom(item, 0); - int item_type; + mActor_name_t ftr_item_no = mRmTp_Item1ItemNo2FtrItemNo_AtPlayerRoom(item, 0); + int item_type; - if ((ftr_item_no >= FTR_FISH00 && ftr_item_no <= FTR_FISH39_WEST) || (ftr_item_no >= FTR_INSECT00 && ftr_item_no <= FTR_INSECT39_WEST)) { - return; - } + if ((ftr_item_no >= FTR_FISH00 && ftr_item_no <= FTR_FISH39_WEST) || + (ftr_item_no >= FTR_INSECT00 && ftr_item_no <= FTR_INSECT39_WEST)) { + return; + } - item_type = ITEM_NAME_GET_TYPE(ftr_item_no); + item_type = ITEM_NAME_GET_TYPE(ftr_item_no); - if (item_type == NAME_TYPE_FTR0 || item_type == NAME_TYPE_FTR1) { - int ftr_idx = mRmTp_FtrItemNo2FtrIdx(ftr_item_no); + if (item_type == NAME_TYPE_FTR0 || item_type == NAME_TYPE_FTR1) { + int ftr_idx = mRmTp_FtrItemNo2FtrIdx(ftr_item_no); if (ftr_idx >= 0 && ftr_idx < FTR_NUM) { - Common_Get(now_private)->furniture_collected_bitfield[ftr_idx >> 5] |= (1 << (ftr_idx & 31)); + Common_Get(now_private)->furniture_collected_bitfield[ftr_idx >> 5] |= (1 << (ftr_idx & 31)); } - - } - else if (item_type == NAME_TYPE_ITEM1) { - int category = ITEM_NAME_GET_CAT(ftr_item_no); + + } else if (item_type == NAME_TYPE_ITEM1) { + int category = ITEM_NAME_GET_CAT(ftr_item_no); if (category == ITEM1_CAT_PAPER) { - int idx = (ftr_item_no - ITM_PAPER_START) % 64; // 64 unique stationery - Common_Get(now_private)->paper_collected_bitfield[idx >> 5] |= (1 << (idx & 31)); + int idx = (ftr_item_no - ITM_PAPER_START) % 64; // 64 unique stationery + Common_Get(now_private)->paper_collected_bitfield[idx >> 5] |= (1 << (idx & 31)); + } else if (category == ITEM1_CAT_CARPET) { + int idx = ftr_item_no - ITM_CARPET_START; + Common_Get(now_private)->carpet_collected_bitfield[idx >> 5] |= (1 << (idx & 31)); + } else if (category == ITEM1_CAT_WALL) { + int idx = ftr_item_no - ITM_WALL_START; + Common_Get(now_private)->wall_collected_bitfield[idx >> 5] |= (1 << (idx & 31)); + } else if (category == ITEM1_CAT_MINIDISK) { + mActor_name_t idx = + ftr_item_no - ITM_MINIDISK_START; // why is this one u16, probably mActor_name_t type or something? + Common_Get(now_private)->music_collected_bitfield[idx >> 5] |= (1 << (idx & 31)); } - else if (category == ITEM1_CAT_CARPET) { - int idx = ftr_item_no - ITM_CARPET_START; - Common_Get(now_private)->carpet_collected_bitfield[idx >> 5] |= (1 << (idx & 31)); - } - else if (category == ITEM1_CAT_WALL) { - int idx = ftr_item_no - ITM_WALL_START; - Common_Get(now_private)->wall_collected_bitfield[idx >> 5] |= (1 << (idx & 31)); - } - else if (category == ITEM1_CAT_MINIDISK) { - mActor_name_t idx = ftr_item_no - ITM_MINIDISK_START; // why is this one u16, probably mActor_name_t type or something? - Common_Get(now_private)->music_collected_bitfield[idx >> 5] |= (1 << (idx & 31)); - } - } + } } extern mActor_name_t mPr_DummyPresentToTruePresent() { - mActor_name_t true_present = EMPTY_NO; + mActor_name_t true_present = EMPTY_NO; - /* 80% chance of rolling furniture from town's rare list */ - if (RANDOM(5) != 0) { - mSP_SelectRandomItem_New(NULL, &true_present, 1, NULL, 0, mSP_KIND_FURNITURE, mSP_LISTTYPE_RARE, FALSE); - } + /* 80% chance of rolling furniture from town's rare list */ + if (RANDOM(5) != 0) { + mSP_SelectRandomItem_New(NULL, &true_present, 1, NULL, 0, mSP_KIND_FURNITURE, mSP_LISTTYPE_RARE, FALSE); + } - /* 20% (and default case) to get random non-native fruit */ - if (true_present == EMPTY_NO) { - true_present = mFI_GetOtherFruit(); - } + /* 20% (and default case) to get random non-native fruit */ + if (true_present == EMPTY_NO) { + true_present = mFI_GetOtherFruit(); + } - return true_present; + return true_present; } extern void mPr_SetPossessionItem(Private_c* priv, int idx, mActor_name_t item, u32 cond) { - switch (item) { - case ITM_PRESENT: - { - item = mPr_DummyPresentToTruePresent(); - cond = mPr_ITEM_COND_PRESENT; - break; + switch (item) { + case ITM_PRESENT: { + item = mPr_DummyPresentToTruePresent(); + cond = mPr_ITEM_COND_PRESENT; + break; + } + + case ITM_GOLDEN_NET_PRESENT: { + item = ITM_GOLDEN_NET; + cond = mPr_ITEM_COND_PRESENT; + break; + } + + case ITM_GOLDEN_AXE_PRESENT: { + item = ITM_GOLDEN_AXE; + cond = mPr_ITEM_COND_PRESENT; + break; + } + + case ITM_GOLDEN_SHOVEL_PRESENT: { + item = ITM_GOLDEN_SHOVEL; + cond = mPr_ITEM_COND_PRESENT; + break; + } + + case ITM_GOLDEN_ROD_PRESENT: { + item = ITM_GOLDEN_ROD; + cond = mPr_ITEM_COND_PRESENT; + break; + } } - case ITM_GOLDEN_NET_PRESENT: - { - item = ITM_GOLDEN_NET; - cond = mPr_ITEM_COND_PRESENT; - break; + priv->inventory.pockets[idx] = item; + priv->inventory.item_conditions = + ((priv->inventory.item_conditions & (~(u32)(mPr_ITEM_COND_NUM << (idx * 2)))) | (cond << (idx * 2))); + + if (cond == mPr_ITEM_COND_NORMAL) { + mPr_SetItemCollectBit(item); } - - case ITM_GOLDEN_AXE_PRESENT: - { - item = ITM_GOLDEN_AXE; - cond = mPr_ITEM_COND_PRESENT; - break; - } - - case ITM_GOLDEN_SHOVEL_PRESENT: - { - item = ITM_GOLDEN_SHOVEL; - cond = mPr_ITEM_COND_PRESENT; - break; - } - - case ITM_GOLDEN_ROD_PRESENT: - { - item = ITM_GOLDEN_ROD; - cond = mPr_ITEM_COND_PRESENT; - break; - } - } - - priv->inventory.pockets[idx] = item; - priv->inventory.item_conditions = ((priv->inventory.item_conditions & (~(u32)(mPr_ITEM_COND_NUM << (idx * 2)))) | (cond << (idx * 2))); - - if (cond == mPr_ITEM_COND_NORMAL) { - mPr_SetItemCollectBit(item); - } } extern int mPr_SetFreePossessionItem(Private_c* priv, mActor_name_t item, u32 cond) { - int idx = mPr_GetPossessionItemIdx(priv, EMPTY_NO); - int res; + int idx = mPr_GetPossessionItemIdx(priv, EMPTY_NO); + int res; - if (idx == -1) { - res = FALSE; - } - else { - mPr_SetPossessionItem(priv, idx, item, cond); - res = TRUE; - } + if (idx == -1) { + res = FALSE; + } else { + mPr_SetPossessionItem(priv, idx, item, cond); + res = TRUE; + } - return res; + return res; } extern void mPr_AddFirstJobHint(Private_c* priv) { - int hints = priv->hint_count + 1; - if ((hints & 0x7F) >= 10) { - hints = 0x80; // signal all hints have been given - } + int hints = priv->hint_count + 1; + if ((hints & 0x7F) >= 10) { + hints = 0x80; // signal all hints have been given + } - priv->hint_count = hints; + priv->hint_count = hints; } extern int mPr_GetFirstJobHintTime(Private_c* priv) { - return priv->hint_count & 0x7F; + return priv->hint_count & 0x7F; } extern int mPr_CheckFirstJobHint(Private_c* priv) { - return (priv->hint_count & 0x80) >> 7; + return (priv->hint_count & 0x80) >> 7; } extern s16 mPr_GetMoneyPower() { - s16 money_power = Common_Get(money_power); - Private_c* priv = Common_Get(now_private); + s16 money_power = Common_Get(money_power); + Private_c* priv = Common_Get(now_private); - if (priv != NULL) { - switch (priv->destiny.type) { - case mPr_DESTINY_MONEY_LUCK: - { - money_power += 100; - break; - } + if (priv != NULL) { + switch (priv->destiny.type) { + case mPr_DESTINY_MONEY_LUCK: { + money_power += 100; + break; + } - case mPr_DESTINY_BAD_LUCK: - { - money_power -= 50; - break; - } + case mPr_DESTINY_BAD_LUCK: { + money_power -= 50; + break; + } + } } - } - if (money_power < mPr_MONEY_POWER_MIN) { - money_power = mPr_MONEY_POWER_MIN; - } + if (money_power < mPr_MONEY_POWER_MIN) { + money_power = mPr_MONEY_POWER_MIN; + } - return money_power; + return money_power; } extern s16 mPr_GetGoodsPower() { - s16 goods_power = Common_Get(goods_power); - Private_c* priv = Common_Get(now_private); + s16 goods_power = Common_Get(goods_power); + Private_c* priv = Common_Get(now_private); - if (priv != NULL) { - switch (priv->destiny.type) { - case mPr_DESTINY_GOODS_LUCK: - { - goods_power += 30; - break; - } + if (priv != NULL) { + switch (priv->destiny.type) { + case mPr_DESTINY_GOODS_LUCK: { + goods_power += 30; + break; + } - case mPr_DESTINY_BAD_LUCK: - { - goods_power -= 30; - break; - } + case mPr_DESTINY_BAD_LUCK: { + goods_power -= 30; + break; + } + } } - } - if (goods_power > mPr_GOODS_POWER_MAX) { - return mPr_GOODS_POWER_MAX; - } - - if (goods_power < mPr_GOODS_POWER_MIN) { - goods_power = mPr_GOODS_POWER_MIN; - } + if (goods_power > mPr_GOODS_POWER_MAX) { + return mPr_GOODS_POWER_MAX; + } - return goods_power; + if (goods_power < mPr_GOODS_POWER_MIN) { + goods_power = mPr_GOODS_POWER_MIN; + } + + return goods_power; } extern int mPr_CheckMuseumAddress(Private_c* priv) { - int res = FALSE; + int res = FALSE; - if (priv != NULL && priv->museum_record.contacted) { - res = TRUE; - } + if (priv != NULL && priv->museum_record.contacted) { + res = TRUE; + } - return res; + return res; } extern int mPr_CheckMuseumInfoMail(Private_c* priv) { - int res = FALSE; + int res = FALSE; - if (priv != NULL && priv->museum_record.send_info_mail) { - res = TRUE; - } + if (priv != NULL && priv->museum_record.send_info_mail) { + res = TRUE; + } - return res; + return res; } extern Private_c* mPr_GetForeignerP() { - return &g_foreigner_private; + return &g_foreigner_private; } extern int mPr_LoadPak_and_SetPrivateInfo2(Private_c* unused_private, u8 player_no) { - Private_c* priv; - int res = FALSE; + Private_c* priv; + int res = FALSE; - if (player_no < mPr_FOREIGNER) { - u32 loan; - mHm_hs_c* house; - Private_c* priv = Save_Get(private + player_no); - if (mPr_CheckCmpPrivate(priv, &g_foreigner_private) == TRUE) { - house = Save_GetPointer(homes[mHS_get_arrange_idx(player_no)]); - loan = priv->inventory.loan; - mPr_CopyPrivateInfo(priv, &g_foreigner_private); - if (mHm_CheckKeepHouseSize(player_no) == FALSE || house->size_info.next_size == mHm_HOMESIZE_STATUE) { - priv->inventory.loan = loan; - } + if (player_no < mPr_FOREIGNER) { + u32 loan; + mHm_hs_c* house; + Private_c* priv = Save_Get(private_data + player_no); + if (mPr_CheckCmpPrivate(priv, &g_foreigner_private) == TRUE) { + house = Save_GetPointer(homes[mHS_get_arrange_idx(player_no)]); + loan = priv->inventory.loan; + mPr_CopyPrivateInfo(priv, &g_foreigner_private); + if (mHm_CheckKeepHouseSize(player_no) == FALSE || house->size_info.next_size == mHm_HOMESIZE_STATUE) { + priv->inventory.loan = loan; + } - res = TRUE; - Common_Set(now_private, priv); - Common_Set(player_no, player_no); - } - } - else { - mHm_hs_c* house; - int exist_player; - u32 loan; - int i; - - priv = Save_Get(private); - for (i = 0; i < PLAYER_NUM; i++) { - exist_player = mPr_CheckCmpPrivate(priv, &g_foreigner_private); - if (exist_player == TRUE) { - house = Save_GetPointer(homes[mHS_get_arrange_idx(i)]); - loan = priv->inventory.loan; + res = TRUE; + Common_Set(now_private, priv); + Common_Set(player_no, player_no); + } + } else { + mHm_hs_c* house; + int exist_player; + u32 loan; + int i; - g_foreigner_private.museum_record.contacted = priv->museum_record.contacted; - mPr_CopyPrivateInfo(priv, &g_foreigner_private); + priv = Save_Get(private_data); + for (i = 0; i < PLAYER_NUM; i++) { + exist_player = mPr_CheckCmpPrivate(priv, &g_foreigner_private); + if (exist_player == TRUE) { + house = Save_GetPointer(homes[mHS_get_arrange_idx(i)]); + loan = priv->inventory.loan; - if (mHm_CheckKeepHouseSize(i) == FALSE || house->size_info.next_size == mHm_HOMESIZE_STATUE) { - priv->inventory.loan = loan; + g_foreigner_private.museum_record.contacted = priv->museum_record.contacted; + mPr_CopyPrivateInfo(priv, &g_foreigner_private); + + if (mHm_CheckKeepHouseSize(i) == FALSE || house->size_info.next_size == mHm_HOMESIZE_STATUE) { + priv->inventory.loan = loan; + } + + res = TRUE; + Common_Set(now_private, priv); + Common_Set(player_no, i); + break; + } + + priv++; } - res = TRUE; - Common_Set(now_private, priv); - Common_Set(player_no, i); - break; - } - - priv++; + if (exist_player == FALSE) { + res = TRUE; + Common_Set(now_private, &g_foreigner_private); + Common_Set(player_no, mPr_FOREIGNER); + } } - if (exist_player == FALSE) { - res = TRUE; - Common_Set(now_private, &g_foreigner_private); - Common_Set(player_no, mPr_FOREIGNER); - } - } - - return res; + return res; } extern void mPr_ClearMotherMailInfo(mPr_mother_mail_info_c* mother_mail) { - mother_mail->date = mTM_rtcTime_ymd_clear_code; - bzero(&mother_mail->data, sizeof(mPr_mother_mail_data_c)); + mother_mail->date = mTM_rtcTime_ymd_clear_code; + bzero(&mother_mail->data, sizeof(mPr_mother_mail_data_c)); } static int mPr_GetMotherMailPaperType(int month, int day) { - static u8 paper_table[lbRTC_MONTHS_MAX] = { - 13, 49, 32, 12, 62, 14, 19, 11, 59, 46, 47, 17 - }; + static u8 paper_table[lbRTC_MONTHS_MAX] = { 13, 49, 32, 12, 62, 14, 19, 11, 59, 46, 47, 17 }; - Private_c* priv = Common_Get(now_private); - int paper; + Private_c* priv = Common_Get(now_private); + int paper; - /* TODO: should paper be enums? */ - if (priv->birthday.month == month && priv->birthday.day == day) { - paper = 1; - } - else if (month == lbRTC_JANUARY && day == 1) { - paper = 63; - } - else if (month == lbRTC_AUGUST && day == 8) { - paper = 48; - } - else if (month == lbRTC_DECEMBER && day == 24) { - paper = 23; - } - else { - int idx = month - 1; - paper = paper_table[idx]; - } + /* TODO: should paper be enums? */ + if (priv->birthday.month == month && priv->birthday.day == day) { + paper = 1; + } else if (month == lbRTC_JANUARY && day == 1) { + paper = 63; + } else if (month == lbRTC_AUGUST && day == 8) { + paper = 48; + } else if (month == lbRTC_DECEMBER && day == 24) { + paper = 23; + } else { + int idx = month - 1; + paper = paper_table[idx]; + } - return paper - 1; + return paper - 1; } static void mPr_GetMotherMail(Mail_c* mail, PersonalID_c* pid, mActor_name_t present, int stationery, int mail_no) { - int header_back_pos; + int header_back_pos; - mMl_clear_mail(mail); - mHandbill_Load_HandbillFromRom(mail->content.header, &header_back_pos, mail->content.footer, mail->content.body, mail_no); - mail->content.header_back_start = header_back_pos; - mail->content.font = 0; // TODO: enum - mail->content.mail_type = 4; // TODO: enum, this is "from mom" - mMl_set_to_plname(mail, pid); - mail->present = present; - mail->content.paper_type = stationery; + mMl_clear_mail(mail); + mHandbill_Load_HandbillFromRom(mail->content.header, &header_back_pos, mail->content.footer, mail->content.body, + mail_no); + mail->content.header_back_start = header_back_pos; + mail->content.font = 0; // TODO: enum + mail->content.mail_type = 4; // TODO: enum, this is "from mom" + mMl_set_to_plname(mail, pid); + mail->present = present; + mail->content.paper_type = stationery; } -static int mPr_SendMotherMailPost(PersonalID_c* pid, int player_no, mActor_name_t present, int stationery, int mail_no) { - Mail_c* mail; - mHm_hs_c* home; - int res = FALSE; +static int mPr_SendMotherMailPost(PersonalID_c* pid, int player_no, mActor_name_t present, int stationery, + int mail_no) { + Mail_c* mail; + mHm_hs_c* home; + int res = FALSE; - mail = &l_mpr_mail; - home = Save_GetPointer(homes[mHS_get_arrange_idx(player_no)]); + mail = &l_mpr_mail; + home = Save_GetPointer(homes[mHS_get_arrange_idx(player_no)]); - if (mPr_CheckCmpPersonalID(pid, &home->ownerID) == TRUE) { - int mailbox_idx = mMl_chk_mail_free_space(home->mailbox, HOME_MAILBOX_SIZE); - if (mailbox_idx != -1) { - mPr_GetMotherMail(mail, pid, present, stationery, mail_no); - mMl_copy_mail(&home->mailbox[mailbox_idx], mail); - res = TRUE; + if (mPr_CheckCmpPersonalID(pid, &home->ownerID) == TRUE) { + int mailbox_idx = mMl_chk_mail_free_space(home->mailbox, HOME_MAILBOX_SIZE); + if (mailbox_idx != -1) { + mPr_GetMotherMail(mail, pid, present, stationery, mail_no); + mMl_copy_mail(&home->mailbox[mailbox_idx], mail); + res = TRUE; + } else if (mPO_get_keep_mail_sum() < mPO_MAIL_STORAGE_SIZE) { + mPr_GetMotherMail(mail, pid, present, stationery, mail_no); + res = mPO_receipt_proc(mail, mPO_SENDTYPE_MAIL); + } } - else if (mPO_get_keep_mail_sum() < mPO_MAIL_STORAGE_SIZE) { - mPr_GetMotherMail(mail, pid, present, stationery, mail_no); - res = mPO_receipt_proc(mail, mPO_SENDTYPE_MAIL); - } - } - return res; + return res; } static int mPr_SendMotherMailDate(mPr_mother_mail_info_c* mother_mail, lbRTC_time_c* send_time) { - mActor_name_t present = EMPTY_NO; - int mail_no = -1; - int res = FALSE; + mActor_name_t present = EMPTY_NO; + int mail_no = -1; + int res = FALSE; - if (Common_Get(now_private)->birthday.month == send_time->month && Common_Get(now_private)->birthday.day == send_time->day) { - mail_no = 0x184 + RANDOM(mPr_MOTHER_MAIL_MONTHLY_NUM); - present = FTR_BIRTHDAY_CAKE; - } - else if (send_time->month == send_time->day) { - int letter_num = (send_time->month - 1) * mPr_MOTHER_MAIL_MONTHLY_NUM + RANDOM(mPr_MOTHER_MAIL_MONTHLY_NUM); - mail_no = 0x164 + letter_num; - - if (send_time->month == lbRTC_JANUARY) { - present = ITM_MONEY_10000; - } - else if (letter_num == 18) { // TODO: these probably have enums... - present = ITM_FOOD_MUSHROOM; - } - } - else { - if (send_time->month == lbRTC_APRIL && send_time->day == 1) { - mail_no = 0x180; // April Fools - } - else if (mEv_check_status(mEv_EVENT_MOTHERS_DAY, mEv_STATUS_ACTIVE) == TRUE) { - mail_no = 0x17C; - } - else if (mEv_check_status(mEv_EVENT_FATHERS_DAY, mEv_STATUS_ACTIVE) == TRUE) { - mail_no = 0x17E; - } - else if (send_time->month == lbRTC_DECEMBER && send_time->day == 24) { - mail_no = 0x182; // Toy Day (Christmas) - mSP_SelectRandomItem_New(NULL, &present, 1, NULL, 0, mSP_KIND_FURNITURE, mSP_LISTTYPE_ABC, FALSE); - } + if (Common_Get(now_private)->birthday.month == send_time->month && + Common_Get(now_private)->birthday.day == send_time->day) { + mail_no = 0x184 + RANDOM(mPr_MOTHER_MAIL_MONTHLY_NUM); + present = FTR_BIRTHDAY_CAKE; + } else if (send_time->month == send_time->day) { + int letter_num = (send_time->month - 1) * mPr_MOTHER_MAIL_MONTHLY_NUM + RANDOM(mPr_MOTHER_MAIL_MONTHLY_NUM); + mail_no = 0x164 + letter_num; - if (mail_no != -1) { - /* Randomize between two letter variants */ - mail_no += RANDOM(mPr_MOTHER_MAIL_MONTHLY_NUM); - } + if (send_time->month == lbRTC_JANUARY) { + present = ITM_MONEY_10000; + } else if (letter_num == 18) { // TODO: these probably have enums... + present = ITM_FOOD_MUSHROOM; + } + } else { + if (send_time->month == lbRTC_APRIL && send_time->day == 1) { + mail_no = 0x180; // April Fools + } else if (mEv_check_status(mEv_EVENT_MOTHERS_DAY, mEv_STATUS_ACTIVE) == TRUE) { + mail_no = 0x17C; + } else if (mEv_check_status(mEv_EVENT_FATHERS_DAY, mEv_STATUS_ACTIVE) == TRUE) { + mail_no = 0x17E; + } else if (send_time->month == lbRTC_DECEMBER && send_time->day == 24) { + mail_no = 0x182; // Toy Day (Christmas) + mSP_SelectRandomItem_New(NULL, &present, 1, NULL, 0, mSP_KIND_FURNITURE, mSP_LISTTYPE_ABC, FALSE); + } + + if (mail_no != -1) { + /* Randomize between two letter variants */ + mail_no += RANDOM(mPr_MOTHER_MAIL_MONTHLY_NUM); + } } - if (mail_no != -1) { - if (mPr_SendMotherMailPost(&Common_Get(now_private)->player_ID, Common_Get(player_no), present, mPr_GetMotherMailPaperType(send_time->month, send_time->day), mail_no) == TRUE) { - mTM_set_renew_time(&mother_mail->date, send_time); + if (mail_no != -1) { + if (mPr_SendMotherMailPost(&Common_Get(now_private)->player_ID, Common_Get(player_no), present, + mPr_GetMotherMailPaperType(send_time->month, send_time->day), mail_no) == TRUE) { + mTM_set_renew_time(&mother_mail->date, send_time); + } + + res = TRUE; } - res = TRUE; - } - - return res; + return res; } static int mPr_CheckMotherMailMonthly(mPr_mother_mail_data_c* send_data, int month, int idx) { - if (month == lbRTC_AUGUST) { - return (send_data->august >> (idx)) & 1; // August gets its own byte because it has more than two event letters - } - else { - int shift = (month - 1) * 2; - int slot = shift / 8; - shift -= slot * 8; - idx += shift; + if (month == lbRTC_AUGUST) { + return (send_data->august >> (idx)) & 1; // August gets its own byte because it has more than two event letters + } else { + int shift = (month - 1) * 2; + int slot = shift / 8; + shift -= slot * 8; + idx += shift; - return (send_data->monthly[slot] >> idx) & 1; - } + return (send_data->monthly[slot] >> idx) & 1; + } } static int mPr_GetMotherMailMonthlyNotSendNum(mPr_mother_mail_data_c* send_data, int month) { - int slot; - int not_send_num = 0; - int i; + int slot; + int not_send_num = 0; + int i; - if (month == lbRTC_AUGUST) { - for (i = 0; i < 8; i++) { - if (((send_data->august >> i) & 1) == 0) { - not_send_num++; - } + if (month == lbRTC_AUGUST) { + for (i = 0; i < 8; i++) { + if (((send_data->august >> i) & 1) == 0) { + not_send_num++; + } + } + } else { + u8 byte; + int shift = (month - 1) * 2; + slot = shift / 8; + shift -= slot * 8; + byte = send_data->monthly[slot]; + + for (i = 0; i < 2; i++) { + if (((byte >> shift) & 1) == 0) { + not_send_num++; + shift++; + } + } } - } - else { - u8 byte; - int shift = (month - 1) * 2; - slot = shift / 8; - shift -= slot * 8; - byte = send_data->monthly[slot]; - for (i = 0; i < 2; i++) { - if (((byte >> shift) & 1) == 0) { - not_send_num++; - shift++; - } - } - } - - return not_send_num; + return not_send_num; } static void mPr_SetMotherMailMonthly(mPr_mother_mail_data_c* send_data, int month, int idx) { - if (month == lbRTC_AUGUST) { - send_data->august |= 1 << idx; - } - else { - /* TODO: almost certainly a fake match */ - u8* s; - int slot; - int shift; - - shift = (month - 1) * 2; - slot = ((month - 1) * 2) / 8; - shift -= slot * 8; - idx += shift; + if (month == lbRTC_AUGUST) { + send_data->august |= 1 << idx; + } else { + /* TODO: almost certainly a fake match */ + u8* s; + int slot; + int shift; - s = send_data->monthly + slot; - *s |= 1 << idx; - } + shift = (month - 1) * 2; + slot = ((month - 1) * 2) / 8; + shift -= slot * 8; + idx += shift; + + s = send_data->monthly + slot; + *s |= 1 << idx; + } } -static void mPr_GetMotherMailMonthlyData(mPr_mother_mail_data_c* send_data, int* mail_no, mActor_name_t* present, int* event_no, int month, int not_send_num) { - static int mail_start_no_table[mTM_SEASON_NUM] = { 0x18C, 0x192, 0x186, 0x19E }; - static mActor_name_t may_2_item_table[1] = { ITM_CLOTH105 }; // fortune shirt - static mActor_name_t december_2_item_table[6] = { - ITM_CLOTH108, // aurora knit - ITM_CLOTH109, // winter sweater - ITM_CLOTH110, // go-go shirt - ITM_CLOTH144, // deer shirt - ITM_CLOTH145, // blue check shirt - ITM_CLOTH156 // fish knit - }; +static void mPr_GetMotherMailMonthlyData(mPr_mother_mail_data_c* send_data, int* mail_no, mActor_name_t* present, + int* event_no, int month, int not_send_num) { + static int mail_start_no_table[mTM_SEASON_NUM] = { 0x18C, 0x192, 0x186, 0x19E }; + static mActor_name_t may_2_item_table[1] = { ITM_CLOTH105 }; // fortune shirt + static mActor_name_t december_2_item_table[6] = { + ITM_CLOTH108, // aurora knit + ITM_CLOTH109, // winter sweater + ITM_CLOTH110, // go-go shirt + ITM_CLOTH144, // deer shirt + ITM_CLOTH145, // blue check shirt + ITM_CLOTH156 // fish knit + }; - int max; - int mail_start_idx; - int selected_event; - int i; - - *present = EMPTY_NO; - mail_start_idx = 3; + int max; + int mail_start_idx; + int selected_event; + int i; - if (month <= lbRTC_FEBRUARY) { + *present = EMPTY_NO; mail_start_idx = 3; - } - else if (month <= lbRTC_MAY) { - mail_start_idx = 0; - } - else if (month <= lbRTC_AUGUST) { - mail_start_idx = 1; - } - else if (month <= lbRTC_NOVEMBER) { - mail_start_idx = 2; - } - *mail_no = mail_start_no_table[mail_start_idx]; - - selected_event = RANDOM(not_send_num); - max = mPr_MOTHER_MAIL_MONTHLY_NUM; - if (month == lbRTC_AUGUST) { - max = 8; - } - - for (i = 0; i < max; i++) { - if (mPr_CheckMotherMailMonthly(send_data, month, i) == FALSE) { - if (selected_event <= 0) { - *event_no = i; - break; - } - - selected_event--; + if (month <= lbRTC_FEBRUARY) { + mail_start_idx = 3; + } else if (month <= lbRTC_MAY) { + mail_start_idx = 0; + } else if (month <= lbRTC_AUGUST) { + mail_start_idx = 1; + } else if (month <= lbRTC_NOVEMBER) { + mail_start_idx = 2; } - } - *mail_no += *event_no + (month - 1 - mail_start_idx * 3) * 2; + *mail_no = mail_start_no_table[mail_start_idx]; - if (month == lbRTC_MAY && *event_no == 1) { - *present = may_2_item_table[RANDOM(1)]; - } - else if (month == lbRTC_DECEMBER) { - if (*event_no == 0) { - *present = ITM_FOOD_APPLE; + selected_event = RANDOM(not_send_num); + max = mPr_MOTHER_MAIL_MONTHLY_NUM; + if (month == lbRTC_AUGUST) { + max = 8; } - else { - *present = december_2_item_table[RANDOM(6)]; + + for (i = 0; i < max; i++) { + if (mPr_CheckMotherMailMonthly(send_data, month, i) == FALSE) { + if (selected_event <= 0) { + *event_no = i; + break; + } + + selected_event--; + } + } + + *mail_no += *event_no + (month - 1 - mail_start_idx * 3) * 2; + + if (month == lbRTC_MAY && *event_no == 1) { + *present = may_2_item_table[RANDOM(1)]; + } else if (month == lbRTC_DECEMBER) { + if (*event_no == 0) { + *present = ITM_FOOD_APPLE; + } else { + *present = december_2_item_table[RANDOM(6)]; + } + } else if (month == lbRTC_NOVEMBER) { + *present = ITM_FOOD_MUSHROOM; } - } - else if (month == lbRTC_NOVEMBER) { - *present = ITM_FOOD_MUSHROOM; - } } static int mPr_GetMotherMailNormalNotSendNum(mPr_mother_mail_data_c* send_data) { - int not_send_num = 0; - int i; - int j; + int not_send_num = 0; + int i; + int j; - for (i = 0; i < mPr_MOTHER_MAIL_NORMAL_NUM; i++) { - for (j = 0; j < 8; j++) { - if (((send_data->normal[i] >> j) & 1) == 0) { - not_send_num++; - } + for (i = 0; i < mPr_MOTHER_MAIL_NORMAL_NUM; i++) { + for (j = 0; j < 8; j++) { + if (((send_data->normal[i] >> j) & 1) == 0) { + not_send_num++; + } + } } - } - return not_send_num; + return not_send_num; } static void mPr_SetMotherMailNormal(mPr_mother_mail_data_c* send_data, int idx) { - int slot = idx / 8; - idx -= (idx / 8) * 8; - send_data->normal[slot] |= (1 << idx); + int slot = idx / 8; + idx -= (idx / 8) * 8; + send_data->normal[slot] |= (1 << idx); } static int mPr_CheckMotherMailNormal(mPr_mother_mail_data_c* send_data, int idx) { - int slot = idx / 8; - idx -= (idx / 8) * 8; - return (send_data->normal[slot] >> idx) & 1; + int slot = idx / 8; + idx -= (idx / 8) * 8; + return (send_data->normal[slot] >> idx) & 1; } // TODO: we need to make an enum for each player mother mail event id -static void mPr_GetMotherMailNormalData(mPr_mother_mail_data_c* send_data, int* mail_no, mActor_name_t* present, int* event_no, int no_send_num) { - int selected_event; - int i; +static void mPr_GetMotherMailNormalData(mPr_mother_mail_data_c* send_data, int* mail_no, mActor_name_t* present, + int* event_no, int no_send_num) { + int selected_event; + int i; - *event_no = -1; - selected_event = RANDOM(no_send_num); + *event_no = -1; + selected_event = RANDOM(no_send_num); - for (i = 0; i < 56; i++) { - if (mPr_CheckMotherMailNormal(send_data, i) == FALSE) { - if (selected_event <= 0) { - *event_no = i; - break; - } + for (i = 0; i < 56; i++) { + if (mPr_CheckMotherMailNormal(send_data, i) == FALSE) { + if (selected_event <= 0) { + *event_no = i; + break; + } - selected_event--; + selected_event--; + } } - } - *mail_no = 0x12C + *event_no; + *mail_no = 0x12C + *event_no; - switch (*event_no) { - case 1: - case 16: - mSP_SelectRandomItem_New(NULL, present, 1, NULL, 0, mSP_KIND_CLOTH, mSP_LISTTYPE_ABC, FALSE); - break; + switch (*event_no) { + case 1: + case 16: + mSP_SelectRandomItem_New(NULL, present, 1, NULL, 0, mSP_KIND_CLOTH, mSP_LISTTYPE_ABC, FALSE); + break; - case 3: - case 21: - case 22: - case 47: - *present = mFI_GetOtherFruit(); - break; + case 3: + case 21: + case 22: + case 47: + *present = mFI_GetOtherFruit(); + break; - case 12: - *present = ITM_MONEY_1000; - break; + case 12: + *present = ITM_MONEY_1000; + break; - case 37: - *present = FTR_PAPA_BEAR; - break; + case 37: + *present = FTR_PAPA_BEAR; + break; - case 38: - *present = FTR_DRACAENA; - break; + case 38: + *present = FTR_DRACAENA; + break; - case 40: - mSP_RandomUmbSelect(present, 1); - break; + case 40: + mSP_RandomUmbSelect(present, 1); + break; - default: - *present = EMPTY_NO; - break; - } + default: + *present = EMPTY_NO; + break; + } } static void mPr_SendMotherMailNormal(mPr_mother_mail_info_c* mother_mail, lbRTC_time_c* send_time) { - int mail_no = -1; - int monthly_not_send_num = 0; - int event_no; - mActor_name_t present = EMPTY_NO; + int mail_no = -1; + int monthly_not_send_num = 0; + int event_no; + mActor_name_t present = EMPTY_NO; - if (RANDOM(100) < 20) { - int not_send_num = mPr_GetMotherMailNormalNotSendNum(&mother_mail->data); - if (not_send_num == 0) { - bzero(&mother_mail->data, sizeof(mPr_mother_mail_data_c)); - monthly_not_send_num = mPr_GetMotherMailMonthlyNotSendNum(&mother_mail->data, send_time->month); + if (RANDOM(100) < 20) { + int not_send_num = mPr_GetMotherMailNormalNotSendNum(&mother_mail->data); + if (not_send_num == 0) { + bzero(&mother_mail->data, sizeof(mPr_mother_mail_data_c)); + monthly_not_send_num = mPr_GetMotherMailMonthlyNotSendNum(&mother_mail->data, send_time->month); + } + + if (monthly_not_send_num > 0) { + mPr_GetMotherMailMonthlyData(&mother_mail->data, &mail_no, &present, &event_no, send_time->month, + monthly_not_send_num); + + if (mPr_SendMotherMailPost(&Common_Get(now_private)->player_ID, Common_Get(player_no), present, + mPr_GetMotherMailPaperType(send_time->month, send_time->day), mail_no) == TRUE) { + mPr_SetMotherMailMonthly(&mother_mail->data, send_time->month, event_no); + } + } else { + mPr_GetMotherMailNormalData(&mother_mail->data, &mail_no, &present, &event_no, not_send_num); + + if (mPr_SendMotherMailPost(&Common_Get(now_private)->player_ID, Common_Get(player_no), present, + mPr_GetMotherMailPaperType(send_time->month, send_time->day), mail_no) == TRUE) { + mPr_SetMotherMailNormal(&mother_mail->data, event_no); + } + } } - if (monthly_not_send_num > 0) { - mPr_GetMotherMailMonthlyData(&mother_mail->data, &mail_no, &present, &event_no, send_time->month, monthly_not_send_num); - - if (mPr_SendMotherMailPost(&Common_Get(now_private)->player_ID, Common_Get(player_no), present, mPr_GetMotherMailPaperType(send_time->month, send_time->day), mail_no) == TRUE) { - mPr_SetMotherMailMonthly(&mother_mail->data, send_time->month, event_no); - } - } - else { - mPr_GetMotherMailNormalData(&mother_mail->data, &mail_no, &present, &event_no, not_send_num); - - if (mPr_SendMotherMailPost(&Common_Get(now_private)->player_ID, Common_Get(player_no), present, mPr_GetMotherMailPaperType(send_time->month, send_time->day), mail_no) == TRUE) { - mPr_SetMotherMailNormal(&mother_mail->data, event_no); - } - } - } - - mTM_set_renew_time(&mother_mail->date, send_time); + mTM_set_renew_time(&mother_mail->date, send_time); } static void mPr_SendMotherMail(mPr_mother_mail_info_c* mother_mail, lbRTC_time_c* send_time) { - if (mPr_SendMotherMailDate(mother_mail, send_time) == FALSE) { - mPr_SendMotherMailNormal(mother_mail, send_time); - } + if (mPr_SendMotherMailDate(mother_mail, send_time) == FALSE) { + mPr_SendMotherMailNormal(mother_mail, send_time); + } } extern void mPr_SendMailFromMother() { - Private_c* priv = Common_Get(now_private); - u8 player_no = Common_Get(player_no); - lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); - - if (mLd_PlayerManKindCheckNo(player_no) == FALSE && priv != NULL && mPr_NullCheckPersonalID(&priv->player_ID) == FALSE) { - mPr_mother_mail_info_c* mother_mail = Save_GetPointer(mother_mail[player_no]); - lbRTC_ymd_c* mail_date = &mother_mail->date; + Private_c* priv = Common_Get(now_private); + u8 player_no = Common_Get(player_no); + lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); - if (mail_date->year != mTM_rtcTime_ymd_clear_code.year && mail_date->month != mTM_rtcTime_ymd_clear_code.month && mail_date->day != mTM_rtcTime_ymd_clear_code.day) { - if (mail_date->year != rtc_time->year || mail_date->month != rtc_time->month || mail_date->day != rtc_time->day) { - mPr_SendMotherMail(mother_mail, rtc_time); - } + if (mLd_PlayerManKindCheckNo(player_no) == FALSE && priv != NULL && + mPr_NullCheckPersonalID(&priv->player_ID) == FALSE) { + mPr_mother_mail_info_c* mother_mail = Save_GetPointer(mother_mail[player_no]); + lbRTC_ymd_c* mail_date = &mother_mail->date; + + if (mail_date->year != mTM_rtcTime_ymd_clear_code.year && + mail_date->month != mTM_rtcTime_ymd_clear_code.month && mail_date->day != mTM_rtcTime_ymd_clear_code.day) { + if (mail_date->year != rtc_time->year || mail_date->month != rtc_time->month || + mail_date->day != rtc_time->day) { + mPr_SendMotherMail(mother_mail, rtc_time); + } + } else { + mTM_set_renew_time(mail_date, rtc_time); + } } - else { - mTM_set_renew_time(mail_date, rtc_time); - } - } } static void mPr_GetForeingerAnimalMail(Mail_c* mail, Private_c* priv, mPr_animal_memory_c* anm_mem) { - AnmPersonalID_c anm_pid; - int mail_no; - u8 npc_name[ANIMAL_NAME_LEN]; - u8 header[40]; - u8 footer[48]; - int ofs; - u8 looks; - int header_back_start; + AnmPersonalID_c anm_pid; + int mail_no; + u8 npc_name[ANIMAL_NAME_LEN]; + u8 header[40]; + u8 footer[48]; + int ofs; + u8 looks; + int header_back_start; - looks = mNpc_GetLooks(anm_mem->npc_id); - ofs = RANDOM(3); - mail_no = 0xFC; - mail_no += ofs + looks * 3; - mHandbill_Set_free_str(0, priv->player_ID.player_name, PLAYER_NAME_LEN); // player's name - mNpc_LoadNpcNameString(npc_name, anm_mem->npc_id); - mHandbill_Set_free_str(1, npc_name, ANIMAL_NAME_LEN); // animal's name - mHandbill_Set_free_str(2, anm_mem->land_name, LAND_NAME_SIZE); // animal's current town name - mHandbill_Set_free_str(3, priv->player_ID.land_name, LAND_NAME_SIZE); // player's town name - mHandbill_Load_HandbillFromRom2(header, 40, &header_back_start, footer, 48, mail->content.body, mail_no); - mem_copy(mail->content.header, header, mHandbill_HEADER_LEN); - mem_copy(mail->content.footer, footer, mHandbill_FOOTER_LEN); + looks = mNpc_GetLooks(anm_mem->npc_id); + ofs = RANDOM(3); + mail_no = 0xFC; + mail_no += ofs + looks * 3; + mHandbill_Set_free_str(0, priv->player_ID.player_name, PLAYER_NAME_LEN); // player's name + mNpc_LoadNpcNameString(npc_name, anm_mem->npc_id); + mHandbill_Set_free_str(1, npc_name, ANIMAL_NAME_LEN); // animal's name + mHandbill_Set_free_str(2, anm_mem->land_name, LAND_NAME_SIZE); // animal's current town name + mHandbill_Set_free_str(3, priv->player_ID.land_name, LAND_NAME_SIZE); // player's town name + mHandbill_Load_HandbillFromRom2(header, 40, &header_back_start, footer, 48, mail->content.body, mail_no); + mem_copy(mail->content.header, header, mHandbill_HEADER_LEN); + mem_copy(mail->content.footer, footer, mHandbill_FOOTER_LEN); - mail->content.header_back_start = header_back_start; - mail->content.font = 0; - mail->content.mail_type = 0; - mail->present = EMPTY_NO; - mail->content.paper_type = mNpc_GetPaperType(); + mail->content.header_back_start = header_back_start; + mail->content.font = 0; + mail->content.mail_type = 0; + mail->present = EMPTY_NO; + mail->content.paper_type = mNpc_GetPaperType(); - anm_pid.npc_id = anm_mem->npc_id; - anm_pid.land_id = mLd_BITMASK; - mLd_CopyLandName(anm_pid.land_name, anm_mem->land_name); - anm_pid.name_id = anm_mem->npc_id; - anm_pid.looks = looks; + anm_pid.npc_id = anm_mem->npc_id; + anm_pid.land_id = mLd_BITMASK; + mLd_CopyLandName(anm_pid.land_name, anm_mem->land_name); + anm_pid.name_id = anm_mem->npc_id; + anm_pid.looks = looks; - mMl_set_mail_name_npcinfo(&mail->header.sender, &anm_pid); - mPr_CopyPersonalID(&mail->header.recipient.personalID, &priv->player_ID); - mail->header.recipient.type = mMl_NAME_TYPE_PLAYER; + mMl_set_mail_name_npcinfo(&mail->header.sender, &anm_pid); + mPr_CopyPersonalID(&mail->header.recipient.personalID, &priv->player_ID); + mail->header.recipient.type = mMl_NAME_TYPE_PLAYER; } extern void mPr_SendForeingerAnimalMail(Private_c* priv) { - Mail_c* mail = &l_mpr_mail; - mPr_animal_memory_c* anm_mem = &priv->animal_memory; + Mail_c* mail = &l_mpr_mail; + mPr_animal_memory_c* anm_mem = &priv->animal_memory; - if (mLd_PlayerManKindCheck() == FALSE) { - if (anm_mem->npc_id != RSV_NO && ITEM_NAME_GET_TYPE(anm_mem->npc_id) == NAME_TYPE_NPC && mPO_get_keep_mail_sum() < mPO_MAIL_STORAGE_SIZE) { - mMl_clear_mail(mail); - mPr_GetForeingerAnimalMail(mail, priv, anm_mem); - mPO_receipt_proc(mail, mPO_SENDTYPE_MAIL); - mPr_ClearAnimalMemory(anm_mem); + if (mLd_PlayerManKindCheck() == FALSE) { + if (anm_mem->npc_id != RSV_NO && ITEM_NAME_GET_TYPE(anm_mem->npc_id) == NAME_TYPE_NPC && + mPO_get_keep_mail_sum() < mPO_MAIL_STORAGE_SIZE) { + mMl_clear_mail(mail); + mPr_GetForeingerAnimalMail(mail, priv, anm_mem); + mPO_receipt_proc(mail, mPO_SENDTYPE_MAIL); + mPr_ClearAnimalMemory(anm_mem); + } } - } } extern void mPr_StartSetCompleteTalkInfo() { - if (mSM_CHECK_ALL_FISH_GET()) { - Common_Get(now_private)->complete_fish_insect_flags |= (1 << 0); - } + if (mSM_CHECK_ALL_FISH_GET()) { + Common_Get(now_private)->complete_fish_insect_flags |= (1 << 0); + } - if (mSM_CHECK_ALL_INSECT_GET()) { - Common_Get(now_private)->complete_fish_insect_flags |= (1 << 2); - } + if (mSM_CHECK_ALL_INSECT_GET()) { + Common_Get(now_private)->complete_fish_insect_flags |= (1 << 2); + } } static void mPr_SetCompleteTalk(u8* comp_insect_fish_flags, int type) { - *comp_insect_fish_flags |= (1 << (type * 2) + 1); + *comp_insect_fish_flags |= (1 << (type * 2) + 1); } static int mPr_GetCompleteTalk(u8 comp_insect_fish_flags, int type) { - return (comp_insect_fish_flags >> ((type * 2) + 1)) & 1; + return (comp_insect_fish_flags >> ((type * 2) + 1)) & 1; } extern void mPr_SetFishCompleteTalk() { - mPr_SetCompleteTalk(&Common_Get(now_private)->complete_fish_insect_flags, 0); + mPr_SetCompleteTalk(&Common_Get(now_private)->complete_fish_insect_flags, 0); } extern int mPr_CheckFishCompleteTalk(u8 player_no) { - int res = FALSE; + int res = FALSE; - if (player_no < mPr_FOREIGNER && mPr_GetCompleteTalk(Save_Get(private[player_no]).complete_fish_insect_flags, 0) == TRUE) { - res = TRUE; - } + if (player_no < mPr_FOREIGNER && + mPr_GetCompleteTalk(Save_Get(private_data[player_no]).complete_fish_insect_flags, 0) == TRUE) { + res = TRUE; + } - return res; + return res; } extern void mPr_SetInsectCompleteTalk() { - mPr_SetCompleteTalk(&Common_Get(now_private)->complete_fish_insect_flags, 1); + mPr_SetCompleteTalk(&Common_Get(now_private)->complete_fish_insect_flags, 1); } extern int mPr_CheckInsectCompleteTalk(u8 player_no) { - int res = FALSE; + int res = FALSE; - if (player_no < mPr_FOREIGNER && mPr_GetCompleteTalk(Save_Get(private[player_no]).complete_fish_insect_flags, 1) == TRUE) { - res = TRUE; - } + if (player_no < mPr_FOREIGNER && + mPr_GetCompleteTalk(Save_Get(private_data[player_no]).complete_fish_insect_flags, 1) == TRUE) { + res = TRUE; + } - return res; + return res; } static int mPr_GetTalkPermission(u8 comp_insect_fish_flags, int type) { - int base = type * 2; - int talk = base + 1; + int base = type * 2; + int talk = base + 1; - int res = FALSE; - if (((comp_insect_fish_flags >> base) & 1) == 0 || ((comp_insect_fish_flags >> talk) & 1) == 0) { - res = TRUE; - } + int res = FALSE; + if (((comp_insect_fish_flags >> base) & 1) == 0 || ((comp_insect_fish_flags >> talk) & 1) == 0) { + res = TRUE; + } - return res; + return res; } extern int mPr_GetFishCompTalkPermission() { - int res = FALSE; + int res = FALSE; - if (mSM_CHECK_ALL_FISH_GET()) { - res = mPr_GetTalkPermission(Common_Get(now_private)->complete_fish_insect_flags, 0); - } + if (mSM_CHECK_ALL_FISH_GET()) { + res = mPr_GetTalkPermission(Common_Get(now_private)->complete_fish_insect_flags, 0); + } - return res; + return res; } extern int mPr_GetInsectCompTalkPermission() { - int res = FALSE; + int res = FALSE; - if (mSM_CHECK_ALL_INSECT_GET()) { - res = mPr_GetTalkPermission(Common_Get(now_private)->complete_fish_insect_flags, 1); - } + if (mSM_CHECK_ALL_INSECT_GET()) { + res = mPr_GetTalkPermission(Common_Get(now_private)->complete_fish_insect_flags, 1); + } - return res; + return res; } extern void mPr_ClearMapInfo(mPr_map_info_c* map_info, int max) { - for (max; max != 0; max--) { - mLd_ClearLandName(map_info->land_name); - map_info->land_id = 0; - map_info++; - } + for (max; max != 0; max--) { + mLd_ClearLandName(map_info->land_name); + map_info->land_id = 0; + map_info++; + } } static void mPr_CopyMapInfo(mPr_map_info_c* dst, mPr_map_info_c* src) { - mem_copy((u8*)dst, (u8*)src, sizeof(mPr_map_info_c)); + mem_copy((u8*)dst, (u8*)src, sizeof(mPr_map_info_c)); } static void mPr_SetMapThisLand(mPr_map_info_c* map_info) { - if (map_info != NULL) { - mLd_CopyLandName(map_info->land_name, Save_Get(land_info).name); - map_info->land_id = Save_Get(land_info).id; - } + if (map_info != NULL) { + mLd_CopyLandName(map_info->land_name, Save_Get(land_info).name); + map_info->land_id = Save_Get(land_info).id; + } } static int mPr_GetMapFreeIdx(mPr_map_info_c* map_info, int max) { - int res = -1; - int i; - - for (i = 0; i < max; i++) { - if (!mLd_CheckId(map_info->land_id) || mLd_NullCheckLandName(map_info->land_name) == TRUE) { - res = i; - break; - } - - map_info++; - } - - return res; -} - -static int mPr_GetLandMapIdx(mPr_map_info_c* map_info, int max, mLd_land_info_c* land_info) { - int res = -1; - - if (map_info != NULL && land_info != NULL) { + int res = -1; int i; for (i = 0; i < max; i++) { - if (mLd_CheckCmpLand(map_info->land_name, map_info->land_id, land_info->name, land_info->id) == TRUE) { - res = i; - break; - } + if (!mLd_CheckId(map_info->land_id) || mLd_NullCheckLandName(map_info->land_name) == TRUE) { + res = i; + break; + } - map_info++; + map_info++; } - } - return res; + return res; +} + +static int mPr_GetLandMapIdx(mPr_map_info_c* map_info, int max, mLd_land_info_c* land_info) { + int res = -1; + + if (map_info != NULL && land_info != NULL) { + int i; + + for (i = 0; i < max; i++) { + if (mLd_CheckCmpLand(map_info->land_name, map_info->land_id, land_info->name, land_info->id) == TRUE) { + res = i; + break; + } + + map_info++; + } + } + + return res; } extern int mPr_GetThisLandMapIdx(mPr_map_info_c* map_info, int max) { - return mPr_GetLandMapIdx(map_info, max, Save_GetPointer(land_info)); + return mPr_GetLandMapIdx(map_info, max, Save_GetPointer(land_info)); } static void mPr_PushMapInfo(mPr_map_info_c* map_info, int max) { - if (map_info != NULL) { - max--; + if (map_info != NULL) { + max--; - if (max > 0) { - for (max; max > 0; max--) { - mPr_CopyMapInfo(map_info, map_info + 1); - map_info++; - } + if (max > 0) { + for (max; max > 0; max--) { + mPr_CopyMapInfo(map_info, map_info + 1); + map_info++; + } + } + + mPr_ClearMapInfo(map_info, 1); } - - mPr_ClearMapInfo(map_info, 1); - } } extern void mPr_SetNewMap(mPr_map_info_c* map_info, int max) { - if (map_info != NULL && mPr_GetThisLandMapIdx(map_info, max) == -1) { - int free_idx = mPr_GetMapFreeIdx(map_info, max); - if (free_idx != -1) { - map_info += free_idx; - } - else { - mPr_PushMapInfo(map_info, max); - free_idx = max - 1; - map_info += free_idx; - } + if (map_info != NULL && mPr_GetThisLandMapIdx(map_info, max) == -1) { + int free_idx = mPr_GetMapFreeIdx(map_info, max); + if (free_idx != -1) { + map_info += free_idx; + } else { + mPr_PushMapInfo(map_info, max); + free_idx = max - 1; + map_info += free_idx; + } - if (map_info != NULL) { - mPr_SetMapThisLand(map_info); + if (map_info != NULL) { + mPr_SetMapThisLand(map_info); + } } - } } extern void mPr_RenewalMapInfo(mPr_map_info_c* map_info, int max, mLd_land_info_c* land_info) { - mPr_map_info_c map_save; + mPr_map_info_c map_save; - int map_idx = mPr_GetLandMapIdx(map_info, max, land_info); - if (map_idx != -1) { - mPr_CopyMapInfo(&map_save, map_info + map_idx); - mPr_PushMapInfo(map_info + map_idx, max - map_idx); - - map_idx = mPr_GetMapFreeIdx(map_info, max); + int map_idx = mPr_GetLandMapIdx(map_info, max, land_info); if (map_idx != -1) { - mPr_CopyMapInfo(map_info + map_idx, &map_save); + mPr_CopyMapInfo(&map_save, map_info + map_idx); + mPr_PushMapInfo(map_info + map_idx, max - map_idx); + + map_idx = mPr_GetMapFreeIdx(map_info, max); + if (map_idx != -1) { + mPr_CopyMapInfo(map_info + map_idx, &map_save); + } } - } } extern void mPr_RandomSetPlayerData_title_demo() { - Private_c* priv = Common_Get(now_private); - int i; + Private_c* priv = Common_Get(now_private); + int i; - priv->gender = RANDOM(4); // why not RANDOM(2)??? - priv->gender &= 1; - mPlib_change_player_cloth_info_lv2(priv, mPr_GetRandomCloth(priv->gender)); - priv->face = mPr_GetRandomFace(); + priv->gender = RANDOM(4); // why not RANDOM(2)??? + priv->gender &= 1; + mPlib_change_player_cloth_info_lv2(priv, mPr_GetRandomCloth(priv->gender)); + priv->face = mPr_GetRandomFace(); - for (i = 0; i < mHS_HOUSE_NUM; i++) { - Save_Get(homes[i]).door_original = -1; - } + for (i = 0; i < mHS_HOUSE_NUM; i++) { + Save_Get(homes[i]).door_original = -1; + } } extern void mPr_PrintMapInfo_debug(gfxprint_t* gfxprint) { - Private_c* priv = Common_Get(now_private); - mPr_map_info_c* map_info; - int i; + Private_c* priv = Common_Get(now_private); + mPr_map_info_c* map_info; + int i; - if (priv != NULL) { - map_info = priv->maps; - gfxprint_color(gfxprint, 30, 100, 100, 255); - gfxprint_locate8x8(gfxprint, 3, 21); - gfxprint_printf(gfxprint, "%04x ", Save_Get(land_info).id); + if (priv != NULL) { + map_info = priv->maps; + gfxprint_color(gfxprint, 30, 100, 100, 255); + gfxprint_locate8x8(gfxprint, 3, 21); + gfxprint_printf(gfxprint, "%04x ", Save_Get(land_info).id); - gfxprint_locate8x8(gfxprint, 3, 22); - gfxprint_color(gfxprint, 30, 200, 70, 255); + gfxprint_locate8x8(gfxprint, 3, 22); + gfxprint_color(gfxprint, 30, 200, 70, 255); - for (i = 0; i < mPr_FOREIGN_MAP_COUNT; i++) { - if (i == 4) { - gfxprint_locate8x8(gfxprint, 3, 23); - } + for (i = 0; i < mPr_FOREIGN_MAP_COUNT; i++) { + if (i == 4) { + gfxprint_locate8x8(gfxprint, 3, 23); + } - if (mLd_CheckId(map_info->land_id) == TRUE) { - gfxprint_printf(gfxprint, "%04x ", map_info->land_id); - } - else { - gfxprint_printf(gfxprint, "**** "); - } + if (mLd_CheckId(map_info->land_id) == TRUE) { + gfxprint_printf(gfxprint, "%04x ", map_info->land_id); + } else { + gfxprint_printf(gfxprint, "**** "); + } - map_info++; + map_info++; + } } - } } diff --git a/src/m_quest.c b/src/m_quest.c index f7076d73..8c82288f 100644 --- a/src/m_quest.c +++ b/src/m_quest.c @@ -1038,8 +1038,8 @@ extern void mQst_PrintQuestInfo(gfxprint_t* gfxprint) { delivery = priv->deliveries; errand = priv->errands; } else { - delivery = Save_Get(private[0]).deliveries; - errand = Save_Get(private[0]).errands; + delivery = Save_Get(private_data[0]).deliveries; + errand = Save_Get(private_data[0]).errands; } gfxprint_color(gfxprint, 220, 50, 50, 255); diff --git a/src/m_room_type.c b/src/m_room_type.c index 2559faa2..20e5cd8d 100644 --- a/src/m_room_type.c +++ b/src/m_room_type.c @@ -2110,7 +2110,7 @@ extern void mRmTp_CopyWallData(u8* dst, int wall_no) { int room_idx = mRmTp_GetPlayerRoomIdx(); int valid2 = mHS_get_pl_no_detail(room_idx) >= 0 && mHS_get_pl_no_detail(room_idx) < PLAYER_NUM; int player_no = valid2 ? mHS_get_pl_no_detail(room_idx) : 0; - mNW_original_design_c* original = &Save_Get(private[player_no]).my_org[tex_idx & 7]; + mNW_original_design_c* original = &Save_Get(private_data[player_no]).my_org[tex_idx & 7]; mNW_CopyOriginalPalette(dst, original); mNW_CopyOriginalTexture(dst + mNW_PALETTE_SIZE, original); @@ -2137,7 +2137,7 @@ extern void mRmTp_CopyFloorData(u8* dst, int floor_no) { int room_idx = mRmTp_GetPlayerRoomIdx(); int valid2 = mHS_get_pl_no_detail(room_idx) >= 0 && mHS_get_pl_no_detail(room_idx) < PLAYER_NUM; int player_no = valid2 ? mHS_get_pl_no_detail(room_idx) : 0; - mNW_original_design_c* original = &Save_Get(private[player_no]).my_org[tex_idx & 7]; + mNW_original_design_c* original = &Save_Get(private_data[player_no]).my_org[tex_idx & 7]; mNW_CopyOriginalPalette(dst, original); mNW_CopyOriginalTexture(dst + mNW_PALETTE_SIZE, original); diff --git a/src/m_shop.c b/src/m_shop.c index b7b12558..b373110d 100644 --- a/src/m_shop.c +++ b/src/m_shop.c @@ -17,655 +17,582 @@ extern mActor_name_t* mSP_cloth_list[]; extern mActor_name_t* mSP_carpet_list[]; extern mActor_name_t* mSP_wall_list[]; -static mActor_name_t diary_listA[6] = { - ITM_DIARY01, ITM_DIARY04, ITM_DIARY07, ITM_DIARY10, ITM_DIARY13, EMPTY_NO -}; +static mActor_name_t diary_listA[6] = { ITM_DIARY01, ITM_DIARY04, ITM_DIARY07, ITM_DIARY10, ITM_DIARY13, EMPTY_NO }; -static mActor_name_t diary_listB[6] = { - ITM_DIARY02, ITM_DIARY05, ITM_DIARY08, ITM_DIARY11, ITM_DIARY14, EMPTY_NO -}; +static mActor_name_t diary_listB[6] = { ITM_DIARY02, ITM_DIARY05, ITM_DIARY08, ITM_DIARY11, ITM_DIARY14, EMPTY_NO }; -static mActor_name_t diary_listC[7] = { - ITM_DIARY03, ITM_DIARY06, ITM_DIARY09, ITM_DIARY12, ITM_DIARY15, ITM_DIARY00, EMPTY_NO -}; +static mActor_name_t diary_listC[7] = { ITM_DIARY03, ITM_DIARY06, ITM_DIARY09, ITM_DIARY12, + ITM_DIARY15, ITM_DIARY00, EMPTY_NO }; -static mActor_name_t* mSP_diary_list[mSP_LIST_NUM] = { - diary_listA, - diary_listB, - diary_listC, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL -}; +static mActor_name_t* mSP_diary_list[mSP_LIST_NUM] = { diary_listA, diary_listB, diary_listC, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL }; -static mActor_name_t** mSP_goods_seg_inf[mSP_KIND_EXTENDED_MAX] = { - mSP_ftr_list, - mSP_binsen_list, - mSP_cloth_list, - mSP_carpet_list, - mSP_wall_list, - mSP_diary_list -}; +static mActor_name_t** mSP_goods_seg_inf[mSP_KIND_EXTENDED_MAX] = { mSP_ftr_list, mSP_binsen_list, mSP_cloth_list, + mSP_carpet_list, mSP_wall_list, mSP_diary_list }; static void mSP_InitItemTable(mActor_name_t* item_table, int count) { - int i; + int i; - if (item_table == NULL) { - return; - } + if (item_table == NULL) { + return; + } - for (i = 0; i < count; i++) { - *item_table++ = EMPTY_NO; - } + for (i = 0; i < count; i++) { + *item_table++ = EMPTY_NO; + } } static mActor_name_t* mSP_SelectListFromPriority(mActor_name_t** lists, u8* priorities, int list_type) { - mActor_name_t* list = NULL; + mActor_name_t* list = NULL; - switch (list_type) { - case mSP_LISTTYPE_EVENT: - list = lists[mSP_LIST_EVENT]; - break; - case mSP_LISTTYPE_TRAIN: - list = lists[mSP_LIST_TRAIN]; - break; - case mSP_LISTTYPE_LOTTERY: - list = lists[mSP_LIST_LOTTERY]; - break; - case mSP_LISTTYPE_HALLOWEEN: - list = lists[mSP_LIST_HALLOWEEN]; - break; - case mSP_LISTTYPE_HALLOWEEN2: - list = lists[mSP_LIST_HALLOWEEN2]; - break; - case mSP_LISTTYPE_PRESENT: - list = lists[mSP_LIST_PRESENT]; - break; - case mSP_LISTTYPE_CHRISTMAS: - list = lists[mSP_LIST_CHRISTMAS]; - break; - case mSP_LISTTYPE_SNOW: - list = lists[mSP_LIST_SNOW]; - break; - case mSP_LISTTYPE_JONASON: - list = lists[mSP_LIST_JONASON]; - break; - case mSP_LISTTYPE_POSTOFFICE: - list = lists[mSP_LIST_POSTOFFICE]; - break; - case mSP_LISTTYPE_NINTENDO64: - list = lists[mSP_LIST_NINTENDO64]; - break; - case mSP_LISTTYPE_SPECIALPRESENT: - list = lists[mSP_LIST_SPECIALPRESENT]; - break; - case mSP_LISTTYPE_ISLAND: - list = lists[mSP_LIST_ISLAND]; - break; - case mSP_LISTTYPE_ISLANDFAMICOM: - list = lists[mSP_LIST_ISLANDFAMICOM]; - break; - case mSP_LISTTYPE_HOMEPAGE: - list = lists[mSP_LIST_HOMEPAGE]; - break; - case mSP_LISTTYPE_EVENTPRESENTCHUMON: - list = lists[mSP_LIST_EVENTPRESENTCHUMON]; - break; - case mSP_LISTTYPE_KAMAKURA: - list = lists[mSP_LIST_KAMAKURA]; - break; - case mSP_LISTTYPE_HARVEST: - list = lists[mSP_LIST_HARVEST]; - break; - case mSP_LISTTYPE_MARIO: - list = lists[mSP_LIST_MARIO]; - break; - case mSP_LISTTYPE_TENT: - list = lists[mSP_LIST_TENT]; - break; + switch (list_type) { + case mSP_LISTTYPE_EVENT: + list = lists[mSP_LIST_EVENT]; + break; + case mSP_LISTTYPE_TRAIN: + list = lists[mSP_LIST_TRAIN]; + break; + case mSP_LISTTYPE_LOTTERY: + list = lists[mSP_LIST_LOTTERY]; + break; + case mSP_LISTTYPE_HALLOWEEN: + list = lists[mSP_LIST_HALLOWEEN]; + break; + case mSP_LISTTYPE_HALLOWEEN2: + list = lists[mSP_LIST_HALLOWEEN2]; + break; + case mSP_LISTTYPE_PRESENT: + list = lists[mSP_LIST_PRESENT]; + break; + case mSP_LISTTYPE_CHRISTMAS: + list = lists[mSP_LIST_CHRISTMAS]; + break; + case mSP_LISTTYPE_SNOW: + list = lists[mSP_LIST_SNOW]; + break; + case mSP_LISTTYPE_JONASON: + list = lists[mSP_LIST_JONASON]; + break; + case mSP_LISTTYPE_POSTOFFICE: + list = lists[mSP_LIST_POSTOFFICE]; + break; + case mSP_LISTTYPE_NINTENDO64: + list = lists[mSP_LIST_NINTENDO64]; + break; + case mSP_LISTTYPE_SPECIALPRESENT: + list = lists[mSP_LIST_SPECIALPRESENT]; + break; + case mSP_LISTTYPE_ISLAND: + list = lists[mSP_LIST_ISLAND]; + break; + case mSP_LISTTYPE_ISLANDFAMICOM: + list = lists[mSP_LIST_ISLANDFAMICOM]; + break; + case mSP_LISTTYPE_HOMEPAGE: + list = lists[mSP_LIST_HOMEPAGE]; + break; + case mSP_LISTTYPE_EVENTPRESENTCHUMON: + list = lists[mSP_LIST_EVENTPRESENTCHUMON]; + break; + case mSP_LISTTYPE_KAMAKURA: + list = lists[mSP_LIST_KAMAKURA]; + break; + case mSP_LISTTYPE_HARVEST: + list = lists[mSP_LIST_HARVEST]; + break; + case mSP_LISTTYPE_MARIO: + list = lists[mSP_LIST_MARIO]; + break; + case mSP_LISTTYPE_TENT: + list = lists[mSP_LIST_TENT]; + break; - case mSP_LISTTYPE_ABC: - default: - { - int i; + case mSP_LISTTYPE_ABC: + default: { + int i; - for (i = 0; i < 3; i++, priorities++) { - if (list_type == priorities[0]) { - switch (i) { - case mSP_LISTTYPE_COMMON: - list = lists[mSP_LIST_A]; - break; - case mSP_LISTTYPE_UNCOMMON: - list = lists[mSP_LIST_B]; - break; - case mSP_LISTTYPE_RARE: - list = lists[mSP_LIST_C]; - break; - } + for (i = 0; i < 3; i++, priorities++) { + if (list_type == priorities[0]) { + switch (i) { + case mSP_LISTTYPE_COMMON: + list = lists[mSP_LIST_A]; + break; + case mSP_LISTTYPE_UNCOMMON: + list = lists[mSP_LIST_B]; + break; + case mSP_LISTTYPE_RARE: + list = lists[mSP_LIST_C]; + break; + } + } + } + break; } - } - break; } - } - if (list == NULL) { - list = lists[mSP_LIST_A]; - } + if (list == NULL) { + list = lists[mSP_LIST_A]; + } - return list; + return list; } -static void mSP_SetSeasonFTR_local_december(mActor_name_t* item_table, int count, mActor_name_t ftr0, mActor_name_t ftr1) { - if (count > 1) { - item_table[0] = ftr0; - item_table[1] = ftr1; - } - else if (fqrand() < 0.5f) { - item_table[0] = ftr0; - } - else { - item_table[0] = ftr1; - } +static void mSP_SetSeasonFTR_local_december(mActor_name_t* item_table, int count, mActor_name_t ftr0, + mActor_name_t ftr1) { + if (count > 1) { + item_table[0] = ftr0; + item_table[1] = ftr1; + } else if (fqrand() < 0.5f) { + item_table[0] = ftr0; + } else { + item_table[0] = ftr1; + } } static void mSP_SetSeasonFTR(mActor_name_t* item_table, int count) { - lbRTC_time_c rtc_time = Common_Get(time.rtc_time); - lbRTC_month_t month = rtc_time.month; - lbRTC_day_t day = rtc_time.day; + lbRTC_time_c rtc_time = Common_Get(time.rtc_time); + lbRTC_month_t month = rtc_time.month; + lbRTC_day_t day = rtc_time.day; - if (count > 0 && month == lbRTC_DECEMBER) { - - if (day <= 24) { - mSP_SetSeasonFTR_local_december(item_table, count, FTR_FESTIVE_TREE, FTR_BIG_FESTIVE_TREE); + if (count > 0 && month == lbRTC_DECEMBER) { + + if (day <= 24) { + mSP_SetSeasonFTR_local_december(item_table, count, FTR_FESTIVE_TREE, FTR_BIG_FESTIVE_TREE); + } else if (day >= 26) { + mSP_SetSeasonFTR_local_december(item_table, count, FTR_FESTIVE_CANDLE, FTR_FESTIVE_FLAG); + } } - else if (day >= 26) { - mSP_SetSeasonFTR_local_december(item_table, count, FTR_FESTIVE_CANDLE, FTR_FESTIVE_FLAG); - } - } } static mActor_name_t* mSP_GetItemList(mActor_name_t** lists, u8* priorities, int list_type) { - if (list_type == mSP_LISTTYPE_ABC) { - int abc_roll = RANDOM(100); - int goods_power = mPr_GetGoodsPower(); - int rare_chance; - int uncommon_chance; + if (list_type == mSP_LISTTYPE_ABC) { + int abc_roll = RANDOM(100); + int goods_power = mPr_GetGoodsPower(); + int rare_chance; + int uncommon_chance; - if (goods_power < 0) { - uncommon_chance = goods_power + 40; /* [10%, 39%] */ - rare_chance = 5; /* always 5% chance */ - /* common_chance = [85%, 66%] */ - } - else { - rare_chance = goods_power + 5; /* [5%, 55%] */ - uncommon_chance = rare_chance + 35; /* always 35% chance */ - /* common_chance = [60%, 10%]*/ - } + if (goods_power < 0) { + uncommon_chance = goods_power + 40; /* [10%, 39%] */ + rare_chance = 5; /* always 5% chance */ + /* common_chance = [85%, 66%] */ + } else { + rare_chance = goods_power + 5; /* [5%, 55%] */ + uncommon_chance = rare_chance + 35; /* always 35% chance */ + /* common_chance = [60%, 10%]*/ + } - if (abc_roll < rare_chance) { - return mSP_SelectListFromPriority(lists, priorities, mSP_LISTTYPE_RARE); + if (abc_roll < rare_chance) { + return mSP_SelectListFromPriority(lists, priorities, mSP_LISTTYPE_RARE); + } else if (abc_roll < uncommon_chance) { + return mSP_SelectListFromPriority(lists, priorities, mSP_LISTTYPE_UNCOMMON); + } else { + return mSP_SelectListFromPriority(lists, priorities, mSP_LISTTYPE_COMMON); + } + } else { + return mSP_SelectListFromPriority(lists, priorities, list_type); } - else if (abc_roll < uncommon_chance) { - return mSP_SelectListFromPriority(lists, priorities, mSP_LISTTYPE_UNCOMMON); - } - else { - return mSP_SelectListFromPriority(lists, priorities, mSP_LISTTYPE_COMMON); - } - } - else { - return mSP_SelectListFromPriority(lists, priorities, list_type); - } } static int mSP_GoodsExistAlready(mActor_name_t* goods_table, int count, mActor_name_t item) { - int i; + int i; - if (goods_table != NULL) { - for (i = 0; i < count; i++) { - if (goods_table[i] == item) { - return TRUE; - } + if (goods_table != NULL) { + for (i = 0; i < count; i++) { + if (goods_table[i] == item) { + return TRUE; + } + } } - } - return FALSE; + return FALSE; } extern int mSP_CollectCheck(mActor_name_t item) { - mActor_name_t ftr_item = mRmTp_Item1ItemNo2FtrItemNo_AtPlayerRoom(item, FALSE); - u32* bitfield; - int idx; + mActor_name_t ftr_item = mRmTp_Item1ItemNo2FtrItemNo_AtPlayerRoom(item, FALSE); + u32* bitfield; + int idx; - bitfield = NULL; + bitfield = NULL; - switch (ITEM_NAME_GET_TYPE(ftr_item)) { - case NAME_TYPE_FTR0: - case NAME_TYPE_FTR1: - { - bitfield = Common_Get(now_private)->furniture_collected_bitfield; - idx = mRmTp_FtrItemNo2FtrIdx(ftr_item); - break; + switch (ITEM_NAME_GET_TYPE(ftr_item)) { + case NAME_TYPE_FTR0: + case NAME_TYPE_FTR1: { + bitfield = Common_Get(now_private)->furniture_collected_bitfield; + idx = mRmTp_FtrItemNo2FtrIdx(ftr_item); + break; + } + + case NAME_TYPE_ITEM1: { + switch (ITEM_NAME_GET_CAT(ftr_item)) { + case ITEM1_CAT_PAPER: { + bitfield = Common_Get(now_private)->paper_collected_bitfield; + idx = (ftr_item - ITM_PAPER_START) % PAPER_UNIQUE_NUM; + break; + } + + case ITEM1_CAT_WALL: { + bitfield = Common_Get(now_private)->wall_collected_bitfield; + idx = ftr_item - ITM_WALL_START; + break; + } + + case ITEM1_CAT_CARPET: { + bitfield = Common_Get(now_private)->carpet_collected_bitfield; + idx = ftr_item - ITM_CARPET_START; + break; + } + + case ITEM1_CAT_MINIDISK: { + bitfield = Common_Get(now_private)->music_collected_bitfield; + idx = (mActor_name_t)(ftr_item - ITM_MINIDISK_START); + break; + } + } + + break; + } } - case NAME_TYPE_ITEM1: - { - switch (ITEM_NAME_GET_CAT(ftr_item)) { - case ITEM1_CAT_PAPER: - { - bitfield = Common_Get(now_private)->paper_collected_bitfield; - idx = (ftr_item - ITM_PAPER_START) % PAPER_UNIQUE_NUM; - break; - } - - case ITEM1_CAT_WALL: - { - bitfield = Common_Get(now_private)->wall_collected_bitfield; - idx = ftr_item - ITM_WALL_START; - break; - } - - case ITEM1_CAT_CARPET: - { - bitfield = Common_Get(now_private)->carpet_collected_bitfield; - idx = ftr_item - ITM_CARPET_START; - break; - } - - case ITEM1_CAT_MINIDISK: - { - bitfield = Common_Get(now_private)->music_collected_bitfield; - idx = (mActor_name_t)(ftr_item - ITM_MINIDISK_START); - break; - } - } - - break; + if (bitfield == NULL) { + return FALSE; } - } - if (bitfield == NULL) { - return FALSE; - } - - return ((1 << (idx & 0x1F)) & bitfield[idx >> 5]) != 0; + return ((1 << (idx & 0x1F)) & bitfield[idx >> 5]) != 0; } static int mSP_CountElementInCommonList(mActor_name_t* list) { - int count = 0; + int count = 0; - for (list; list[0] != EMPTY_NO; list++, count++) { } + for (list; list[0] != EMPTY_NO; list++, count++) {} - return count; + return count; } static int mSP_CountElementInCommonList_collect(mActor_name_t* list, int* selected_idx, int uncollected_only) { - int count = 0; - int selected; - mActor_name_t* list_p; + int count = 0; + int selected; + mActor_name_t* list_p; - if (uncollected_only == FALSE) { - count = mSP_CountElementInCommonList(list); - selected_idx[0] = RANDOM(count); - - return count; - } + if (uncollected_only == FALSE) { + count = mSP_CountElementInCommonList(list); + selected_idx[0] = RANDOM(count); - /* Count all uncollected items in the list */ - for (list_p = list; list_p[0] != EMPTY_NO; list_p++) { - if (mSP_CollectCheck(list_p[0]) == FALSE) { - count++; + return count; } - } - if (count == 0) { + /* Count all uncollected items in the list */ + for (list_p = list; list_p[0] != EMPTY_NO; list_p++) { + if (mSP_CollectCheck(list_p[0]) == FALSE) { + count++; + } + } + + if (count == 0) { + selected_idx[0] = 0; + return 0; + } + + selected = RANDOM(count); selected_idx[0] = 0; - return 0; - } - - selected = RANDOM(count); - selected_idx[0] = 0; - for (list_p = list; list_p[0] != EMPTY_NO && selected > 0; list_p++) { - if (mSP_CollectCheck(list_p[0]) == FALSE) { - selected--; + for (list_p = list; list_p[0] != EMPTY_NO && selected > 0; list_p++) { + if (mSP_CollectCheck(list_p[0]) == FALSE) { + selected--; + } + + selected_idx[0]++; } - selected_idx[0]++; - } - - return count; + return count; } static int mSP_get_cloth_season() { - lbRTC_time_c rtc_time = Common_Get(time.rtc_time); - lbRTC_month_t month = rtc_time.month; - int res; + lbRTC_time_c rtc_time = Common_Get(time.rtc_time); + lbRTC_month_t month = rtc_time.month; + int res; - switch (month) { - case lbRTC_JANUARY: - res = mSP_CLOTH_SEASON_WINTER; - break; + switch (month) { + case lbRTC_JANUARY: + res = mSP_CLOTH_SEASON_WINTER; + break; - case lbRTC_FEBRUARY: - { - if (rtc_time.day > 24) { - res = mSP_CLOTH_SEASON_SPRING; - } - else { - res = mSP_CLOTH_SEASON_WINTER; - } + case lbRTC_FEBRUARY: { + if (rtc_time.day > 24) { + res = mSP_CLOTH_SEASON_SPRING; + } else { + res = mSP_CLOTH_SEASON_WINTER; + } - break; + break; + } + + case lbRTC_MARCH: + case lbRTC_APRIL: + res = mSP_CLOTH_SEASON_SPRING; + break; + + case lbRTC_MAY: { + if (rtc_time.day > 26) { + res = mSP_CLOTH_SEASON_SUMMER; + } else { + res = mSP_CLOTH_SEASON_SPRING; + } + + break; + } + + case lbRTC_JUNE: + case lbRTC_JULY: + res = mSP_CLOTH_SEASON_SUMMER; + break; + + case lbRTC_AUGUST: { + if (rtc_time.day > 26) { + res = mSP_CLOTH_SEASON_AUTUMN; + } else { + res = mSP_CLOTH_SEASON_SUMMER; + } + + break; + } + + case lbRTC_SEPTEMBER: + case lbRTC_OCTOBER: + res = mSP_CLOTH_SEASON_AUTUMN; + break; + + case lbRTC_NOVEMBER: { + if (rtc_time.day > 26) { + res = mSP_CLOTH_SEASON_WINTER; + } else { + res = mSP_CLOTH_SEASON_AUTUMN; + } + + break; + } + + case lbRTC_DECEMBER: + res = mSP_CLOTH_SEASON_WINTER; + break; } - case lbRTC_MARCH: - case lbRTC_APRIL: - res = mSP_CLOTH_SEASON_SPRING; - break; - - case lbRTC_MAY: - { - if (rtc_time.day > 26) { - res = mSP_CLOTH_SEASON_SUMMER; - } - else { - res = mSP_CLOTH_SEASON_SPRING; - } - - break; - } - - case lbRTC_JUNE: - case lbRTC_JULY: - res = mSP_CLOTH_SEASON_SUMMER; - break; - - case lbRTC_AUGUST: - { - if (rtc_time.day > 26) { - res = mSP_CLOTH_SEASON_AUTUMN; - } - else { - res = mSP_CLOTH_SEASON_SUMMER; - } - - break; - } - - case lbRTC_SEPTEMBER: - case lbRTC_OCTOBER: - res = mSP_CLOTH_SEASON_AUTUMN; - break; - - case lbRTC_NOVEMBER: - { - if (rtc_time.day > 26) { - res = mSP_CLOTH_SEASON_WINTER; - } - else { - res = mSP_CLOTH_SEASON_AUTUMN; - } - - break; - } - - case lbRTC_DECEMBER: - res = mSP_CLOTH_SEASON_WINTER; - break; - } - - return res; + return res; } extern u8 cloth_season_cnt[]; static int mSP_CountElementInClothList(int* selected) { - u8* count_p = cloth_season_cnt; - int cloth_season = mSP_get_cloth_season(); - int cloth_count = count_p[mSP_CLOTH_SEASON_ANY] + count_p[cloth_season]; - - selected[0] = RANDOM(cloth_count); // random cloth selected - - if (selected[0] >= cloth_season_cnt[mSP_CLOTH_SEASON_ANY]) { - int i; + u8* count_p = cloth_season_cnt; + int cloth_season = mSP_get_cloth_season(); + int cloth_count = count_p[mSP_CLOTH_SEASON_ANY] + count_p[cloth_season]; - /* seasonal cloths are sequential in the item lists, so add previous season counts to the selected index */ - for (i = mSP_CLOTH_SEASON_SPRING; i < cloth_season; i++) { - selected[0] += count_p[i]; + selected[0] = RANDOM(cloth_count); // random cloth selected + + if (selected[0] >= cloth_season_cnt[mSP_CLOTH_SEASON_ANY]) { + int i; + + /* seasonal cloths are sequential in the item lists, so add previous season counts to the selected index */ + for (i = mSP_CLOTH_SEASON_SPRING; i < cloth_season; i++) { + selected[0] += count_p[i]; + } } - } - return cloth_count; + return cloth_count; } static int mSP_CountElementInClothList_collect(mActor_name_t* list, int* selected, int uncollected_only) { - u8* count_p = cloth_season_cnt; + u8* count_p = cloth_season_cnt; - if (uncollected_only == FALSE) { - return mSP_CountElementInClothList(selected); - } - else { - int cloth_season; - int count; - mActor_name_t* list_p; - mActor_name_t* list_p2; - int uncollected_num; - int n; - int s; - int i; - cloth_season = mSP_get_cloth_season(); - uncollected_num = 0; - count = 0; + if (uncollected_only == FALSE) { + return mSP_CountElementInClothList(selected); + } else { + int cloth_season; + int count; + mActor_name_t* list_p; + mActor_name_t* list_p2; + int uncollected_num; + int n; + int s; + int i; + cloth_season = mSP_get_cloth_season(); + uncollected_num = 0; + count = 0; - for (list_p = list; count < count_p[mSP_CLOTH_SEASON_ANY] && list_p != NULL; list_p++) { - if (mSP_CollectCheck(list_p[0]) == FALSE) { - uncollected_num++; - } + for (list_p = list; count < count_p[mSP_CLOTH_SEASON_ANY] && list_p != NULL; list_p++) { + if (mSP_CollectCheck(list_p[0]) == FALSE) { + uncollected_num++; + } - count++; - } - - n = count_p[mSP_CLOTH_SEASON_ANY]; - for (i = mSP_CLOTH_SEASON_SPRING; i < cloth_season; i++) { - n += count_p[i]; // add intermediate season counts - } - - i = n; - s = n + count_p[cloth_season]; - list_p2 = list + (int)n; - for (list_p = list_p2; i < s && list_p != NULL; list_p++) { - if (mSP_CollectCheck(list_p[0]) == FALSE) { - uncollected_num++; - } - - i++; - } - - if (uncollected_num == 0) { - selected[0] = 0; - return 0; - } - else { - int selected_idx = RANDOM(uncollected_num); - - count = 0; - selected[0] = 0; - for (list; count < count_p[mSP_CLOTH_SEASON_ANY] && list != NULL && selected_idx > 0; list++) { - if (mSP_CollectCheck(list[0]) == FALSE) { - selected_idx--; + count++; } - selected[0]++; - count++; - } - - i = n; - for (list_p2; i < s && list_p2 != NULL && selected_idx > 0; list_p2++) { - if (mSP_CollectCheck(list_p2[0]) == FALSE) { - selected_idx--; + n = count_p[mSP_CLOTH_SEASON_ANY]; + for (i = mSP_CLOTH_SEASON_SPRING; i < cloth_season; i++) { + n += count_p[i]; // add intermediate season counts } - selected[0]++; - i++; - } - } + i = n; + s = n + count_p[cloth_season]; + list_p2 = list + (int)n; + for (list_p = list_p2; i < s && list_p != NULL; list_p++) { + if (mSP_CollectCheck(list_p[0]) == FALSE) { + uncollected_num++; + } - return uncollected_num; - } + i++; + } + + if (uncollected_num == 0) { + selected[0] = 0; + return 0; + } else { + int selected_idx = RANDOM(uncollected_num); + + count = 0; + selected[0] = 0; + for (list; count < count_p[mSP_CLOTH_SEASON_ANY] && list != NULL && selected_idx > 0; list++) { + if (mSP_CollectCheck(list[0]) == FALSE) { + selected_idx--; + } + + selected[0]++; + count++; + } + + i = n; + for (list_p2; i < s && list_p2 != NULL && selected_idx > 0; list_p2++) { + if (mSP_CollectCheck(list_p2[0]) == FALSE) { + selected_idx--; + } + + selected[0]++; + i++; + } + } + + return uncollected_num; + } } static int mSP_NoList(mActor_name_t* items_table, int count, mActor_name_t* list) { - if (list == NULL) { - int i; + if (list == NULL) { + int i; - for (i = 0; i < count; i++) { - items_table[0] = EMPTY_NO; - items_table++; + for (i = 0; i < count; i++) { + items_table[0] = EMPTY_NO; + items_table++; + } + + return TRUE; } - return TRUE; - } - - return FALSE; + return FALSE; } static void mSP_SetDummyItem(mActor_name_t* items_table, int count, int kind) { - mActor_name_t dummy_table[mSP_KIND_EXTENDED_MAX] = { - FTR_CLASSIC_WARDROBE, - ITM_PAPER00, - ITM_CLOTH000, - ITM_CARPET00, - ITM_WALL00, - ITM_DIARY00 - }; + mActor_name_t dummy_table[mSP_KIND_EXTENDED_MAX] = { FTR_CLASSIC_WARDROBE, ITM_PAPER00, ITM_CLOTH000, + ITM_CARPET00, ITM_WALL00, ITM_DIARY00 }; - mActor_name_t dummy_item = dummy_table[kind]; - int i; + mActor_name_t dummy_item = dummy_table[kind]; + int i; - for (i = 0; i < count; i++) { - items_table[i] = dummy_item; - } + for (i = 0; i < count; i++) { + items_table[i] = dummy_item; + } } -extern void mSP_SelectRandomItem_New( - GAME* game, - mActor_name_t* goods_table, - int goods_count, - mActor_name_t* goods_exist_table, - int goods_exist_count, - int category, - int list_type, - int uncollected_only -) { - mSP_InitItemTable(goods_table, goods_count); +extern void mSP_SelectRandomItem_New(GAME* game, mActor_name_t* goods_table, int goods_count, + mActor_name_t* goods_exist_table, int goods_exist_count, int category, + int list_type, int uncollected_only) { + mSP_InitItemTable(goods_table, goods_count); - if (goods_count != 0 && goods_table != NULL) { - if (goods_table != NULL) { - u8 abc_priorities[3]; - mActor_name_t** goods_seg_p = mSP_goods_seg_inf[category]; - int i = 0; + if (goods_count != 0 && goods_table != NULL) { + if (goods_table != NULL) { + u8 abc_priorities[3]; + mActor_name_t** goods_seg_p = mSP_goods_seg_inf[category]; + int i = 0; - mSP_GetGoodsPriority(abc_priorities, category); + mSP_GetGoodsPriority(abc_priorities, category); - while (i < goods_count) { - mActor_name_t* item_list_p = mSP_GetItemList(goods_seg_p, abc_priorities, list_type); - int list_item_count; - int selected_idx; + while (i < goods_count) { + mActor_name_t* item_list_p = mSP_GetItemList(goods_seg_p, abc_priorities, list_type); + int list_item_count; + int selected_idx; - if (mSP_NoList(goods_table, goods_count, item_list_p) != FALSE) { - mSP_SetDummyItem(goods_table, goods_count, category); - return; + if (mSP_NoList(goods_table, goods_count, item_list_p) != FALSE) { + mSP_SetDummyItem(goods_table, goods_count, category); + return; + } + + if (category == mSP_KIND_CLOTH && (list_type == mSP_LISTTYPE_ABC || list_type == mSP_LIST_A || + list_type == mSP_LIST_B || list_type == mSP_LIST_C)) { + list_item_count = mSP_CountElementInClothList_collect(item_list_p, &selected_idx, uncollected_only); + } else { + list_item_count = + mSP_CountElementInCommonList_collect(item_list_p, &selected_idx, uncollected_only); + } + + if (list_item_count == 0) { + mSP_InitItemTable(goods_table, goods_count); + return; + } + + if (mSP_GoodsExistAlready(goods_table, goods_count, item_list_p[selected_idx]) == FALSE && + mSP_GoodsExistAlready(goods_exist_table, goods_exist_count, item_list_p[selected_idx]) == FALSE && + Save_Get(shop).rare_item != item_list_p[selected_idx]) { + goods_table[i] = item_list_p[selected_idx]; + i++; + } else if (list_item_count < goods_count + goods_exist_count) { + /* forcibly add duplicate items if the list size is less than total possible goods */ + goods_table[i] = item_list_p[selected_idx]; + i++; + } + } + } else { + mSP_SetDummyItem(goods_table, goods_count, category); // ????? } - - if ( - category == mSP_KIND_CLOTH && - (list_type == mSP_LISTTYPE_ABC || list_type == mSP_LIST_A || list_type == mSP_LIST_B || list_type == mSP_LIST_C) - ) { - list_item_count = mSP_CountElementInClothList_collect(item_list_p, &selected_idx, uncollected_only); - } - else { - list_item_count = mSP_CountElementInCommonList_collect(item_list_p, &selected_idx, uncollected_only); - } - - if (list_item_count == 0) { - mSP_InitItemTable(goods_table, goods_count); - return; - } - - if ( - mSP_GoodsExistAlready(goods_table, goods_count, item_list_p[selected_idx]) == FALSE && - mSP_GoodsExistAlready(goods_exist_table, goods_exist_count, item_list_p[selected_idx]) == FALSE && - Save_Get(shop).rare_item != item_list_p[selected_idx] - ) { - goods_table[i] = item_list_p[selected_idx]; - i++; - } - else if (list_item_count < goods_count + goods_exist_count) { - /* forcibly add duplicate items if the list size is less than total possible goods */ - goods_table[i] = item_list_p[selected_idx]; - i++; - } - } } - else { - mSP_SetDummyItem(goods_table, goods_count, category); // ????? - } - } } static int mSP_CountPriceTableElement(u16* price_table) { - int n = 0; + int n = 0; - while (price_table[0] != 0xFFFF) { - price_table++; - n++; - } + while (price_table[0] != 0xFFFF) { + price_table++; + n++; + } - return n; + return n; } -extern int mSP_ShopSaleReport(mActor_name_t sold_item, mActor_name_t* goods_table, int goods_count, mActor_name_t rsv_item) { - int i; +extern int mSP_ShopSaleReport(mActor_name_t sold_item, mActor_name_t* goods_table, int goods_count, + mActor_name_t rsv_item) { + int i; - if (sold_item == ITM_HUKUBUKURO_BAG) { - Save_Get(shop).flowers_candy_grab_bag_count--; - return FALSE; - } - - if (sold_item == ITM_FOOD_CANDY) { - Save_Get(shop).flowers_candy_grab_bag_count--; - return FALSE; - } - - for (i = 0; i < goods_count; i++) { - if (sold_item == goods_table[i]) { - goods_table[i] = rsv_item; - return FALSE; + if (sold_item == ITM_HUKUBUKURO_BAG) { + Save_Get(shop).flowers_candy_grab_bag_count--; + return FALSE; + } + + if (sold_item == ITM_FOOD_CANDY) { + Save_Get(shop).flowers_candy_grab_bag_count--; + return FALSE; + } + + for (i = 0; i < goods_count; i++) { + if (sold_item == goods_table[i]) { + goods_table[i] = rsv_item; + return FALSE; + } + } + + if (sold_item == Save_Get(shop).rare_item) { + Save_Get(shop).rare_item = rsv_item; + return FALSE; } - } - if (sold_item == Save_Get(shop).rare_item) { - Save_Get(shop).rare_item = rsv_item; return FALSE; - } - - return FALSE; } extern u16 binsen_price_table[]; @@ -692,582 +619,507 @@ static u16* l_md_price_info = md_price_table; static u16* l_diary_price_info = diary_price_table; static u16* l_insect_price_info = insect_price_table; -static u16** l_price_info[ITEM1_CAT_NUM] = { - &l_binsen_price_info, - NULL, - &l_tool_price_info, - &l_fish_price_info, - &l_cloth_price_info, - NULL, - &l_carpet_price_info, - &l_wall_price_info, - &l_food_price_info, - &l_plant_price_info, - &l_md_price_info, - &l_diary_price_info, - NULL, - &l_insect_price_info, - NULL, - NULL -}; +static u16** l_price_info[ITEM1_CAT_NUM] = { &l_binsen_price_info, + NULL, + &l_tool_price_info, + &l_fish_price_info, + &l_cloth_price_info, + NULL, + &l_carpet_price_info, + &l_wall_price_info, + &l_food_price_info, + &l_plant_price_info, + &l_md_price_info, + &l_diary_price_info, + NULL, + &l_insect_price_info, + NULL, + NULL }; static mActor_name_t mSP_item1_start_idx_table[ITEM1_CAT_NUM] = { - ITM_PAPER_START, - ITM_MONEY_START, - ITM_TOOL_START, - ITM_FISH_START, - ITM_CLOTH_START, - ITM_ETC_START, - ITM_CARPET_START, - ITM_WALL_START, - ITM_FOOD_START, - ITM_ENV_START, - ITM_MINIDISK_START, - ITM_DIARY_START, - ITM_TICKET_START, - ITM_INSECT_START, - ITM_HUKUBUKURO_START, - ITM_KABU_START + ITM_PAPER_START, ITM_MONEY_START, ITM_TOOL_START, ITM_FISH_START, ITM_CLOTH_START, ITM_ETC_START, + ITM_CARPET_START, ITM_WALL_START, ITM_FOOD_START, ITM_ENV_START, ITM_MINIDISK_START, ITM_DIARY_START, + ITM_TICKET_START, ITM_INSECT_START, ITM_HUKUBUKURO_START, ITM_KABU_START }; extern u16 ftr_price_table[]; extern u32 mSP_ItemNo2ItemPrice(mActor_name_t item_no) { - static u32 shellfish_price_table[ITM_SHELL_END - ITM_SHELL_START] = { - 160, 80, 600, 120, 240, 1800, 1400, 1000 - }; + static u32 shellfish_price_table[ITM_SHELL_END - ITM_SHELL_START] = { 160, 80, 600, 120, 240, 1800, 1400, 1000 }; - lbRTC_time_c rtc_time = Common_Get(time.rtc_time); - lbRTC_year_t year = rtc_time.year; - u32 price = 0; + lbRTC_time_c rtc_time = Common_Get(time.rtc_time); + lbRTC_year_t year = rtc_time.year; + u32 price = 0; - if (item_no == ITM_HUKUBUKURO_BAG) { - return year; - } + if (item_no == ITM_HUKUBUKURO_BAG) { + return year; + } - item_no = mRmTp_FtrItemNo2Item1ItemNo(item_no, FALSE); - if (item_no >= ITM_SHELL0 && item_no <= ITM_SHELL7) { - u32 idx = item_no - ITM_SHELL0; - - return shellfish_price_table[idx % 8]; - } + item_no = mRmTp_FtrItemNo2Item1ItemNo(item_no, FALSE); + if (item_no >= ITM_SHELL0 && item_no <= ITM_SHELL7) { + u32 idx = item_no - ITM_SHELL0; - if (item_no == ITM_SIGNBOARD) { - return mSP_SIGNBOARD_PRICE; - } + return shellfish_price_table[idx % 8]; + } - switch (ITEM_NAME_GET_TYPE(item_no)) { - case NAME_TYPE_ITEM1: - { - u16** price_list_pp = l_price_info[ITEM_NAME_GET_CAT(item_no)]; + if (item_no == ITM_SIGNBOARD) { + return mSP_SIGNBOARD_PRICE; + } - if (price_list_pp != NULL && &price != NULL) { - u16* price_list_p = *price_list_pp; - int idx = item_no - mSP_item1_start_idx_table[ITEM_NAME_GET_CAT(item_no)]; + switch (ITEM_NAME_GET_TYPE(item_no)) { + case NAME_TYPE_ITEM1: { + u16** price_list_pp = l_price_info[ITEM_NAME_GET_CAT(item_no)]; - if (item_no >= ITM_PAPER_START && item_no <= (ITM_PAPER_END - 1)) { - int paper_idx = (item_no - ITM_PAPER_START); + if (price_list_pp != NULL && &price != NULL) { + u16* price_list_p = *price_list_pp; + int idx = item_no - mSP_item1_start_idx_table[ITEM_NAME_GET_CAT(item_no)]; - idx = (item_no - ITM_PAPER_START) % PAPER_UNIQUE_NUM; - if (idx < mSP_CountPriceTableElement(price_list_p)) { - price = price_list_p[idx]; - price = price * ((paper_idx / 64) + 1); - return price; - } - } + if (item_no >= ITM_PAPER_START && item_no <= (ITM_PAPER_END - 1)) { + int paper_idx = (item_no - ITM_PAPER_START); - if (idx < mSP_CountPriceTableElement(price_list_p)) { - switch (item_no) { - case ITM_FOOD_APPLE: - case ITM_FOOD_CHERRY: - case ITM_FOOD_PEAR: - case ITM_FOOD_PEACH: - case ITM_FOOD_ORANGE: - { - if (Save_Get(fruit) != item_no) { - return mSP_FOREIGN_FRUIT_PRICE; - } - - break; + idx = (item_no - ITM_PAPER_START) % PAPER_UNIQUE_NUM; + if (idx < mSP_CountPriceTableElement(price_list_p)) { + price = price_list_p[idx]; + price = price * ((paper_idx / 64) + 1); + return price; + } + } + + if (idx < mSP_CountPriceTableElement(price_list_p)) { + switch (item_no) { + case ITM_FOOD_APPLE: + case ITM_FOOD_CHERRY: + case ITM_FOOD_PEAR: + case ITM_FOOD_PEACH: + case ITM_FOOD_ORANGE: { + if (Save_Get(fruit) != item_no) { + return mSP_FOREIGN_FRUIT_PRICE; + } + + break; + } + } + + price = price_list_p[idx]; + return price; + } + + return 0; } - } - - price = price_list_p[idx]; - return price; + break; } - return 0; - } + case NAME_TYPE_FTR0: + case NAME_TYPE_FTR1: { + if (&price != NULL) { + int ftr_idx = mRmTp_FtrItemNo2FtrIdx(item_no); + u16* price_list_p = ftr_price_table; - break; - } + if (ftr_idx < mSP_CountPriceTableElement(price_list_p)) { + price = price_list_p[ftr_idx]; + return price; + } - case NAME_TYPE_FTR0: - case NAME_TYPE_FTR1: - { - if (&price != NULL) { - int ftr_idx = mRmTp_FtrItemNo2FtrIdx(item_no); - u16* price_list_p = ftr_price_table; + return 0; + } - if (ftr_idx < mSP_CountPriceTableElement(price_list_p)) { - price = price_list_p[ftr_idx]; - return price; + break; } - return 0; - } - - break; + default: { + return 0; + } } - default: - { - return 0; - } - } - - return 0; + return 0; } extern int mSP_SearchItemCategoryPriority(mActor_name_t item_no, int category, int list_type, GAME* game) { - u8 abc_priorities[3]; - mActor_name_t** lists_p = mSP_goods_seg_inf[category]; - mActor_name_t* list_p; - int count; - int i; + u8 abc_priorities[3]; + mActor_name_t** lists_p = mSP_goods_seg_inf[category]; + mActor_name_t* list_p; + int count; + int i; - mSP_GetGoodsPriority(abc_priorities, category); - list_p = mSP_GetItemList(lists_p, abc_priorities, list_type); - count = mSP_CountElementInCommonList(list_p); + mSP_GetGoodsPriority(abc_priorities, category); + list_p = mSP_GetItemList(lists_p, abc_priorities, list_type); + count = mSP_CountElementInCommonList(list_p); - if (list_p != NULL) { - for (i = 0; i < count; i++) { - if (item_no == list_p[i]) { - return TRUE; - } + if (list_p != NULL) { + for (i = 0; i < count; i++) { + if (item_no == list_p[i]) { + return TRUE; + } + } } - } - return FALSE; + return FALSE; } static int mSP_ItemNo2GoodsListCategory(mActor_name_t item_no) { - if (ITEM_IS_FTR(item_no)) { - return mSP_KIND_FURNITURE; - } - else if (item_no >= ITM_PAPER_START && item_no < ITM_PAPER_END) { - return mSP_KIND_PAPER; - } - else if (item_no >= ITM_CLOTH_START && item_no < ITM_CLOTH_END) { - return mSP_KIND_CLOTH; - } - else if (item_no >= ITM_WALL_START && item_no < ITM_WALL_END) { - return mSP_KIND_WALLPAPER; - } - else if (item_no >= ITM_CARPET_START && item_no < ITM_CARPET_END) { - return mSP_KIND_CARPET; - } - else if (item_no >= ITM_DIARY_START && item_no <= (ITM_DIARY_END-1)) { - return mSP_KIND_DIARY; - } + if (ITEM_IS_FTR(item_no)) { + return mSP_KIND_FURNITURE; + } else if (item_no >= ITM_PAPER_START && item_no < ITM_PAPER_END) { + return mSP_KIND_PAPER; + } else if (item_no >= ITM_CLOTH_START && item_no < ITM_CLOTH_END) { + return mSP_KIND_CLOTH; + } else if (item_no >= ITM_WALL_START && item_no < ITM_WALL_END) { + return mSP_KIND_WALLPAPER; + } else if (item_no >= ITM_CARPET_START && item_no < ITM_CARPET_END) { + return mSP_KIND_CARPET; + } else if (item_no >= ITM_DIARY_START && item_no <= (ITM_DIARY_END - 1)) { + return mSP_KIND_DIARY; + } - return -1; + return -1; } static u8 l_zakka_goods[mSP_GOODS_TYPE_NUM] = { - 1, // stationery - 1, // clothing - 1, // ABC ftr - 0, // rare ftr - 1, // carpet - 1, // wallpaper - 1, // ?? - 0, // ?? - 1, // saplings - 2, // tools - 2 // plants + 1, // stationery + 1, // clothing + 1, // ABC ftr + 0, // rare ftr + 1, // carpet + 1, // wallpaper + 1, // ?? + 0, // ?? + 1, // saplings + 2, // tools + 2 // plants }; static u8 l_conbini_goods[mSP_GOODS_TYPE_NUM] = { - 2, // stationery - 2, // clothing - 2, // ABC ftr - 0, // rare ftr - 1, // carpet - 1, // wallpaper - 1, // ?? - 0, // ?? - 1, // saplings - 3, // tools - 3 // plants + 2, // stationery + 2, // clothing + 2, // ABC ftr + 0, // rare ftr + 1, // carpet + 1, // wallpaper + 1, // ?? + 0, // ?? + 1, // saplings + 3, // tools + 3 // plants }; static u8 l_super_goods[mSP_GOODS_TYPE_NUM] = { - 2, // stationery - 3, // clothing - 3, // ABC ftr - 1, // rare ftr - 2, // carpet - 2, // wallpaper - 1, // ?? - 0, // ?? - 2, // saplings - 2, // tools - 4 // plants + 2, // stationery + 3, // clothing + 3, // ABC ftr + 1, // rare ftr + 2, // carpet + 2, // wallpaper + 1, // ?? + 0, // ?? + 2, // saplings + 2, // tools + 4 // plants }; static u8 l_dsuper_goods[mSP_GOODS_TYPE_NUM] = { - 4, // stationery - 5, // clothing - 5, // ABC ftr - 1, // rare ftr - 3, // carpet - 3, // wallpaper - 1, // ?? - 0, // ?? - 3, // saplings - 3, // tools - 5 // plants + 4, // stationery + 5, // clothing + 5, // ABC ftr + 1, // rare ftr + 3, // carpet + 3, // wallpaper + 1, // ?? + 0, // ?? + 3, // saplings + 3, // tools + 5 // plants }; -static u8* l_goods_count_table[mSP_SHOP_TYPE_NUM] = { - l_zakka_goods, - l_conbini_goods, - l_super_goods, - l_dsuper_goods -}; +static u8* l_goods_count_table[mSP_SHOP_TYPE_NUM] = { l_zakka_goods, l_conbini_goods, l_super_goods, l_dsuper_goods }; static void mSP_MakeRandomGoodsList(GAME* game, int* count, mActor_name_t* goods_list) { - int shop_level = mSP_GetShopLevel(); - u8* goods_count = l_goods_count_table[shop_level]; - Shop_c* shop = Save_GetPointer(shop); - mActor_name_t rare; + int shop_level = mSP_GetShopLevel(); + u8* goods_count = l_goods_count_table[shop_level]; + Shop_c* shop = Save_GetPointer(shop); + mActor_name_t rare; - /* roll rare furniture if the shop has one */ - if (goods_count[mSP_GOODS_TYPE_RARE_FTR] != 0) { - mSP_SelectRandomItem_New(game, &rare, 1, NULL, 0, mSP_KIND_FURNITURE, mSP_LISTTYPE_RARE, FALSE); - } - else { - rare = EMPTY_NO; - } - - Save_Get(shop).rare_item = rare; - - /* roll ABC list furniture */ - mSP_SelectRandomItem_New(game, goods_list + count[0], goods_count[mSP_GOODS_TYPE_FTR], NULL, 0, mSP_KIND_FURNITURE, mSP_LISTTYPE_ABC, FALSE); - mSP_SetSeasonFTR(goods_list + count[0], goods_count[mSP_GOODS_TYPE_FTR]); // replace with seasonal furniture if necessary - count[0] += goods_count[mSP_GOODS_TYPE_FTR]; - - /* check for grab bag sale */ - if (mSP_Chk_HukubukuroSail()) { - shop->flowers_candy_grab_bag_count += (s8)goods_count[mSP_GOODS_TYPE_PAPER]; - if (shop_level >= mSP_SHOP_TYPE_SUPER) { - shop->flowers_candy_grab_bag_count += 1; + /* roll rare furniture if the shop has one */ + if (goods_count[mSP_GOODS_TYPE_RARE_FTR] != 0) { + mSP_SelectRandomItem_New(game, &rare, 1, NULL, 0, mSP_KIND_FURNITURE, mSP_LISTTYPE_RARE, FALSE); + } else { + rare = EMPTY_NO; } - } - else { - /* no grab bag sale, so roll paper & diaries */ - mSP_SelectRandomItem_New(game, goods_list + count[0], goods_count[mSP_GOODS_TYPE_PAPER], NULL, 0, mSP_KIND_PAPER, mSP_LISTTYPE_ABC, FALSE); - count[0] += goods_count[mSP_GOODS_TYPE_PAPER]; - /* only roll diaries for Nookway or higher */ - if (shop_level >= mSP_SHOP_TYPE_SUPER) { - mSP_SelectRandomItem_New(game, goods_list + count[0], 1, NULL, 0, mSP_KIND_DIARY, mSP_LISTTYPE_ABC, FALSE); - count[0] += 1; + Save_Get(shop).rare_item = rare; + + /* roll ABC list furniture */ + mSP_SelectRandomItem_New(game, goods_list + count[0], goods_count[mSP_GOODS_TYPE_FTR], NULL, 0, mSP_KIND_FURNITURE, + mSP_LISTTYPE_ABC, FALSE); + mSP_SetSeasonFTR(goods_list + count[0], + goods_count[mSP_GOODS_TYPE_FTR]); // replace with seasonal furniture if necessary + count[0] += goods_count[mSP_GOODS_TYPE_FTR]; + + /* check for grab bag sale */ + if (mSP_Chk_HukubukuroSail()) { + shop->flowers_candy_grab_bag_count += (s8)goods_count[mSP_GOODS_TYPE_PAPER]; + if (shop_level >= mSP_SHOP_TYPE_SUPER) { + shop->flowers_candy_grab_bag_count += 1; + } + } else { + /* no grab bag sale, so roll paper & diaries */ + mSP_SelectRandomItem_New(game, goods_list + count[0], goods_count[mSP_GOODS_TYPE_PAPER], NULL, 0, + mSP_KIND_PAPER, mSP_LISTTYPE_ABC, FALSE); + count[0] += goods_count[mSP_GOODS_TYPE_PAPER]; + + /* only roll diaries for Nookway or higher */ + if (shop_level >= mSP_SHOP_TYPE_SUPER) { + mSP_SelectRandomItem_New(game, goods_list + count[0], 1, NULL, 0, mSP_KIND_DIARY, mSP_LISTTYPE_ABC, FALSE); + count[0] += 1; + } } - } - /* roll clothing */ - mSP_SelectRandomItem_New(game, goods_list + count[0], goods_count[mSP_GOODS_TYPE_CLOTH], NULL, 0, mSP_KIND_CLOTH, mSP_LISTTYPE_ABC, FALSE); - count[0] += goods_count[mSP_GOODS_TYPE_CLOTH]; + /* roll clothing */ + mSP_SelectRandomItem_New(game, goods_list + count[0], goods_count[mSP_GOODS_TYPE_CLOTH], NULL, 0, mSP_KIND_CLOTH, + mSP_LISTTYPE_ABC, FALSE); + count[0] += goods_count[mSP_GOODS_TYPE_CLOTH]; - /* roll carpets */ - mSP_SelectRandomItem_New(game, goods_list + count[0], goods_count[mSP_GOODS_TYPE_CARPET], NULL, 0, mSP_KIND_CARPET, mSP_LISTTYPE_ABC, FALSE); - count[0] += goods_count[mSP_GOODS_TYPE_CARPET]; + /* roll carpets */ + mSP_SelectRandomItem_New(game, goods_list + count[0], goods_count[mSP_GOODS_TYPE_CARPET], NULL, 0, mSP_KIND_CARPET, + mSP_LISTTYPE_ABC, FALSE); + count[0] += goods_count[mSP_GOODS_TYPE_CARPET]; - /* roll wallpaper */ - mSP_SelectRandomItem_New(game, goods_list + count[0], goods_count[mSP_GOODS_TYPE_WALL], NULL, 0, mSP_KIND_WALLPAPER, mSP_LISTTYPE_ABC, FALSE); - count[0] += goods_count[mSP_GOODS_TYPE_WALL]; + /* roll wallpaper */ + mSP_SelectRandomItem_New(game, goods_list + count[0], goods_count[mSP_GOODS_TYPE_WALL], NULL, 0, mSP_KIND_WALLPAPER, + mSP_LISTTYPE_ABC, FALSE); + count[0] += goods_count[mSP_GOODS_TYPE_WALL]; } extern int mSP_CountElementInGoodsList() { - mActor_name_t* items = Save_Get(shop).items; - int goods_count = 0; - int i; + mActor_name_t* items = Save_Get(shop).items; + int goods_count = 0; + int i; - for (i = 0; i < mSP_GOODS_COUNT; i++) { - if (items[i] != EMPTY_NO) { - goods_count++; + for (i = 0; i < mSP_GOODS_COUNT; i++) { + if (items[i] != EMPTY_NO) { + goods_count++; + } } - } - return goods_count; + return goods_count; } static void mSP_SelectTool(mActor_name_t* goods_list, int* count, int tool_num, int shop_level) { - static int table[4] = { ITM_SHOVEL, ITM_NET, ITM_ROD, ITM_AXE }; + static int table[4] = { ITM_SHOVEL, ITM_NET, ITM_ROD, ITM_AXE }; - int tools_added = 0; - u16 paint_idx = Save_Get(shop).shop_info.paint_color; - u32 sales_sum = Save_Get(shop).sales_sum; - f32 tool_max; + int tools_added = 0; + u16 paint_idx = Save_Get(shop).shop_info.paint_color; + u32 sales_sum = Save_Get(shop).sales_sum; + f32 tool_max; - /* tool lockout based on sales sum is only applicable to Nook's Cranny */ - if (shop_level > mSP_SHOP_TYPE_ZAKKA) { - tool_max = 4;/* shove, net, rod, axe */ - } - else if (sales_sum < mSP_NET_SALES_SUM) { - tool_max = 1; /* shovel only */ - } - else if (sales_sum < mSP_ROD_SALES_SUM) { - tool_max = 2; /* shovel, net */ - } - else if (sales_sum < mSP_AXE_SALES_SUM) { - tool_max = 3; /* shovel, net, rod */ - } - else { - tool_max = 4; /* shove, net, rod, axe */ - } - - if (tool_num > (int)tool_max) { - tool_num = (int)tool_max; - } - - /* - This implementation kind of sucks. - At best case there's a (1/4)^4 (~0.4%) chance of - rolling all four unique tools in a single go. - */ - while (tools_added < tool_num) { - int idx = RANDOM_F(tool_max); - mActor_name_t tool = table[idx]; - - /* Don't allow duplicate tools */ - if (mSP_GoodsExistAlready(goods_list, count[0], tool) == FALSE) { - goods_list[(int)count[0]] = tool; - tools_added++; - count[0]++; - } - } - - /* Add paint & signboard if shop is Nookway or greater */ - if (shop_level >= mSP_SHOP_TYPE_SUPER) { - if (paint_idx >= PAINT_NUM) { - paint_idx = 0; /* wrap over to beginning */ + /* tool lockout based on sales sum is only applicable to Nook's Cranny */ + if (shop_level > mSP_SHOP_TYPE_ZAKKA) { + tool_max = 4; /* shove, net, rod, axe */ + } else if (sales_sum < mSP_NET_SALES_SUM) { + tool_max = 1; /* shovel only */ + } else if (sales_sum < mSP_ROD_SALES_SUM) { + tool_max = 2; /* shovel, net */ + } else if (sales_sum < mSP_AXE_SALES_SUM) { + tool_max = 3; /* shovel, net, rod */ + } else { + tool_max = 4; /* shove, net, rod, axe */ } - goods_list[count[0]] = ITM_RED_PAINT + paint_idx; - paint_idx++; - Save_Get(shop).shop_info.paint_color = paint_idx; - count[0]++; - goods_list[count[0]] = ITM_SIGNBOARD; - count[0]++; - } + if (tool_num > (int)tool_max) { + tool_num = (int)tool_max; + } - /* Add umbrella */ - mSP_RandomUmbSelect(goods_list + count[0], 1); - count[0]++; + /* + This implementation kind of sucks. + At best case there's a (1/4)^4 (~0.4%) chance of + rolling all four unique tools in a single go. + */ + while (tools_added < tool_num) { + int idx = RANDOM_F(tool_max); + mActor_name_t tool = table[idx]; + + /* Don't allow duplicate tools */ + if (mSP_GoodsExistAlready(goods_list, count[0], tool) == FALSE) { + goods_list[(int)count[0]] = tool; + tools_added++; + count[0]++; + } + } + + /* Add paint & signboard if shop is Nookway or greater */ + if (shop_level >= mSP_SHOP_TYPE_SUPER) { + if (paint_idx >= PAINT_NUM) { + paint_idx = 0; /* wrap over to beginning */ + } + + goods_list[count[0]] = ITM_RED_PAINT + paint_idx; + paint_idx++; + Save_Get(shop).shop_info.paint_color = paint_idx; + count[0]++; + goods_list[count[0]] = ITM_SIGNBOARD; + count[0]++; + } + + /* Add umbrella */ + mSP_RandomUmbSelect(goods_list + count[0], 1); + count[0]++; } -static void mSP_SelectPlant(mActor_name_t* goods_list, int* count, int flower_count, int sapling_count, int shop_level) { - u8 flower_use[FLOWER_NUM]; - int i; +static void mSP_SelectPlant(mActor_name_t* goods_list, int* count, int flower_count, int sapling_count, + int shop_level) { + u8 flower_use[FLOWER_NUM]; + int i; - if (mSP_CheckHallowinDay()) { - Save_Get(shop).flowers_candy_grab_bag_count = flower_count; - flower_count = sapling_count; - sapling_count = 0; - } - - if (shop_level >= mSP_SHOP_TYPE_SUPER && sapling_count > 0) { - goods_list[count[0]] = ITM_CEDAR_SAPLING; - sapling_count--; - count[0] += 1; - } - - for (i = 0; i < sapling_count; i++) { - goods_list[count[0]] = ITM_SAPLING; - count[0] += 1; - } - - for (i = 0; i < FLOWER_NUM; i++) { - flower_use[i] = FALSE; - } - - while (flower_count > 0) { - int idx = RANDOM(FLOWER_NUM); - - if (flower_use[idx] == FALSE) { - goods_list[count[0]] = ITM_WHITE_PANSY_BAG + idx; - flower_use[idx] = TRUE; - flower_count--; - count[0] += 1; + if (mSP_CheckHallowinDay()) { + Save_Get(shop).flowers_candy_grab_bag_count = flower_count; + flower_count = sapling_count; + sapling_count = 0; + } + + if (shop_level >= mSP_SHOP_TYPE_SUPER && sapling_count > 0) { + goods_list[count[0]] = ITM_CEDAR_SAPLING; + sapling_count--; + count[0] += 1; + } + + for (i = 0; i < sapling_count; i++) { + goods_list[count[0]] = ITM_SAPLING; + count[0] += 1; + } + + for (i = 0; i < FLOWER_NUM; i++) { + flower_use[i] = FALSE; + } + + while (flower_count > 0) { + int idx = RANDOM(FLOWER_NUM); + + if (flower_use[idx] == FALSE) { + goods_list[count[0]] = ITM_WHITE_PANSY_BAG + idx; + flower_use[idx] = TRUE; + flower_count--; + count[0] += 1; + } } - } } static void mSP_MakeGoodsList(GAME* game) { - int count = 0; - mActor_name_t* shop_items = Save_Get(shop).items; - Shop_c* shop = Save_GetPointer(shop); - int shop_level = mSP_GetShopLevel(); - u8* goods_count = l_goods_count_table[shop_level]; - u8 tool_count = goods_count[mSP_GOODS_TYPE_TOOL]; - u8 flower_count = goods_count[mSP_GOODS_TYPE_PLANT]; - u8 sapling_count = goods_count[mSP_GOODS_TYPE_SAPLING]; + int count = 0; + mActor_name_t* shop_items = Save_Get(shop).items; + Shop_c* shop = Save_GetPointer(shop); + int shop_level = mSP_GetShopLevel(); + u8* goods_count = l_goods_count_table[shop_level]; + u8 tool_count = goods_count[mSP_GOODS_TYPE_TOOL]; + u8 flower_count = goods_count[mSP_GOODS_TYPE_PLANT]; + u8 sapling_count = goods_count[mSP_GOODS_TYPE_SAPLING]; - if (mSP_CheckFukubikiDay() == FALSE) { - if (mSP_Chk_HukubukuroSail() != FALSE) { - shop->flowers_candy_grab_bag_count = 0; + if (mSP_CheckFukubikiDay() == FALSE) { + if (mSP_Chk_HukubukuroSail() != FALSE) { + shop->flowers_candy_grab_bag_count = 0; + } + + mSP_MakeRandomGoodsList(game, &count, shop_items); + + if (mSP_Chk_HukubukuroSail() != FALSE) { + shop->flowers_candy_grab_bag_count += (s8)tool_count; + shop->flowers_candy_grab_bag_count += (s8)flower_count; + shop->flowers_candy_grab_bag_count += (s8)sapling_count; + + if (shop_level >= mSP_SHOP_TYPE_SUPER) { + shop->flowers_candy_grab_bag_count++; // add signboard & paint + shop->flowers_candy_grab_bag_count++; + } + } else { + mSP_SelectTool(shop_items, &count, tool_count, shop_level & 3); + mSP_SelectPlant(shop_items, &count, flower_count, sapling_count, shop_level & 3); + } } - - mSP_MakeRandomGoodsList(game, &count, shop_items); - - if (mSP_Chk_HukubukuroSail() != FALSE) { - shop->flowers_candy_grab_bag_count += (s8)tool_count; - shop->flowers_candy_grab_bag_count += (s8)flower_count; - shop->flowers_candy_grab_bag_count += (s8)sapling_count; - - if (shop_level >= mSP_SHOP_TYPE_SUPER) { - shop->flowers_candy_grab_bag_count++; // add signboard & paint - shop->flowers_candy_grab_bag_count++; - } - } - else { - mSP_SelectTool(shop_items, &count, tool_count, shop_level & 3); - mSP_SelectPlant(shop_items, &count, flower_count, sapling_count, shop_level & 3); - } - } } static void mSP_MakeLotteryList(GAME* game) { - mActor_name_t* lottery_items = Save_Get(shop).lottery_items; - mActor_name_t unobtained_lottery_item; + mActor_name_t* lottery_items = Save_Get(shop).lottery_items; + mActor_name_t unobtained_lottery_item; - mSP_SelectRandomItem_New( - game, - &unobtained_lottery_item, - 1, - NULL, - 0, - mSP_KIND_FURNITURE, - mSP_LISTTYPE_LOTTERY, - TRUE - ); + mSP_SelectRandomItem_New(game, &unobtained_lottery_item, 1, NULL, 0, mSP_KIND_FURNITURE, mSP_LISTTYPE_LOTTERY, + TRUE); - if (unobtained_lottery_item == EMPTY_NO) { - mSP_SelectRandomItem_New( - game, - lottery_items, - mSP_LOTTERY_ITEM_COUNT, - NULL, - 0, - mSP_KIND_FURNITURE, - mSP_LISTTYPE_LOTTERY, - FALSE - ); - } - else { - mSP_SelectRandomItem_New( - game, - lottery_items + 1, - mSP_LOTTERY_ITEM_COUNT - 1, - &unobtained_lottery_item, - 1, - mSP_KIND_FURNITURE, - mSP_LISTTYPE_LOTTERY, - FALSE - ); + if (unobtained_lottery_item == EMPTY_NO) { + mSP_SelectRandomItem_New(game, lottery_items, mSP_LOTTERY_ITEM_COUNT, NULL, 0, mSP_KIND_FURNITURE, + mSP_LISTTYPE_LOTTERY, FALSE); + } else { + mSP_SelectRandomItem_New(game, lottery_items + 1, mSP_LOTTERY_ITEM_COUNT - 1, &unobtained_lottery_item, 1, + mSP_KIND_FURNITURE, mSP_LISTTYPE_LOTTERY, FALSE); - lottery_items[0] = unobtained_lottery_item; - } + lottery_items[0] = unobtained_lottery_item; + } } extern int mSP_CheckExchangeDay2() { - Shop_c* shop = Save_GetPointer(shop); - lbRTC_time_c rtc_time = Common_Get(time.rtc_time); - int res = lbRTC_IsEqualTime( - &rtc_time, - &shop->exchange_time, - lbRTC_CHECK_DAYS | lbRTC_CHECK_MONTHS | lbRTC_CHECK_YEARS - ); + Shop_c* shop = Save_GetPointer(shop); + lbRTC_time_c rtc_time = Common_Get(time.rtc_time); + int res = + lbRTC_IsEqualTime(&rtc_time, &shop->exchange_time, lbRTC_CHECK_DAYS | lbRTC_CHECK_MONTHS | lbRTC_CHECK_YEARS); - return res == lbRTC_EQUAL; + return res == lbRTC_EQUAL; } extern int mSP_CheckExchangeMonth() { - Shop_c* shop = Save_GetPointer(shop); - lbRTC_time_c rtc_time = Common_Get(time.rtc_time); - int res = lbRTC_IsEqualTime( - &rtc_time, - &shop->exchange_time, - lbRTC_CHECK_MONTHS | lbRTC_CHECK_YEARS - ); + Shop_c* shop = Save_GetPointer(shop); + lbRTC_time_c rtc_time = Common_Get(time.rtc_time); + int res = lbRTC_IsEqualTime(&rtc_time, &shop->exchange_time, lbRTC_CHECK_MONTHS | lbRTC_CHECK_YEARS); - return res == lbRTC_EQUAL; + return res == lbRTC_EQUAL; } extern void mSP_NewExchangeDay() { - Save_Get(shop).exchange_time = Common_Get(time.rtc_time); + Save_Get(shop).exchange_time = Common_Get(time.rtc_time); } /* @unused size: 0x104 */ // ? mSP_SearchRareFurniture(...) extern void mSP_ShopItsumoChirashi(int house_no, int shop_level, mActor_name_t item, int type, int send_proc) { - static int rare_chirashi_bunmen[mSP_SHOP_TYPE_NUM][2] = { - { 18, 18 }, - { 19, 19 }, - { 21, 20 }, - { 23, 22 } - }; + static int rare_chirashi_bunmen[mSP_SHOP_TYPE_NUM][2] = { { 18, 18 }, { 19, 19 }, { 21, 20 }, { 23, 22 } }; - if (Save_Get(homes[house_no]).ownerID.land_id != 0xFFFF) { - int free_mail_idx = mMl_chk_mail_free_space(Save_Get(homes[house_no]).mailbox, HOME_MAILBOX_SIZE); + if (Save_Get(homes[house_no]).ownerID.land_id != 0xFFFF) { + int free_mail_idx = mMl_chk_mail_free_space(Save_Get(homes[house_no]).mailbox, HOME_MAILBOX_SIZE); - if (mEv_ArbeitPlayer(mHS_get_pl_no(house_no) & 3) != TRUE) { - u8 item_name_str[mIN_ITEM_NAME_LEN]; - Mail_c leaflet; - int header_back_start; + if (mEv_ArbeitPlayer(mHS_get_pl_no(house_no) & 3) != TRUE) { + u8 item_name_str[mIN_ITEM_NAME_LEN]; + Mail_c leaflet; + int header_back_start; - mIN_copy_name_str(item_name_str, item); - mHandbill_Set_free_str(mHandbill_FREE_STR7, item_name_str, mIN_ITEM_NAME_LEN); - mMl_clear_mail(&leaflet); - mHandbill_Load_HandbillFromRom( - leaflet.content.header, - &header_back_start, - leaflet.content.footer, - leaflet.content.body, - rare_chirashi_bunmen[shop_level][type & 1] - ); - leaflet.content.font = mMl_FONT_0; - leaflet.content.header_back_start = header_back_start; - leaflet.content.mail_type = mMl_TYPE_SHOP_SALE_LEAFLET; - leaflet.content.paper_type = ITM_PAPER55; // simple paper + mIN_copy_name_str(item_name_str, item); + mHandbill_Set_free_str(mHandbill_FREE_STR7, item_name_str, mIN_ITEM_NAME_LEN); + mMl_clear_mail(&leaflet); + mHandbill_Load_HandbillFromRom(leaflet.content.header, &header_back_start, leaflet.content.footer, + leaflet.content.body, rare_chirashi_bunmen[shop_level][type & 1]); + leaflet.content.font = mMl_FONT_0; + leaflet.content.header_back_start = header_back_start; + leaflet.content.mail_type = mMl_TYPE_SHOP_SALE_LEAFLET; + leaflet.content.paper_type = ITM_PAPER55; // simple paper - switch (send_proc) { - case mPO_SENDTYPE_MAIL: - { - mPO_receipt_proc(&leaflet, mPO_SENDTYPE_LEAFLET); + switch (send_proc) { + case mPO_SENDTYPE_MAIL: { + mPO_receipt_proc(&leaflet, mPO_SENDTYPE_LEAFLET); - break; + break; + } + + default: { + if (free_mail_idx >= 0) { + mPr_CopyPersonalID(&leaflet.header.recipient.personalID, + &Save_Get(private_data[mHS_get_pl_no(house_no) & 3]).player_ID); + leaflet.header.recipient.type = mMl_NAME_TYPE_PLAYER; + + mMl_copy_mail(Save_Get(homes[house_no]).mailbox + free_mail_idx, &leaflet); + } + + break; + } + } } - - default: - { - if (free_mail_idx >= 0) { - mPr_CopyPersonalID(&leaflet.header.recipient.personalID, &Save_Get(private[mHS_get_pl_no(house_no) & 3]).player_ID); - leaflet.header.recipient.type = mMl_NAME_TYPE_PLAYER; - - mMl_copy_mail(Save_Get(homes[house_no]).mailbox + free_mail_idx, &leaflet); - } - - break; - } - } } - } } extern void mSP_SetShopRareFurnitureChirashi(int player_no, mActor_name_t* goods_list, int goods_count, GAME* game) { @@ -1284,8 +1136,8 @@ extern void mSP_SetShopRareFurnitureChirashi(int player_no, mActor_name_t* goods } /* Check if we're on the last day of the month */ - if (Common_Get(time.rtc_time).day == lbRTC_GetDaysByMonth(Common_Get(time.rtc_time).year, - Common_Get(time.rtc_time).month)) { + if (Common_Get(time.rtc_time).day == + lbRTC_GetDaysByMonth(Common_Get(time.rtc_time).year, Common_Get(time.rtc_time).month)) { mCkRh_SavePlayTime(player_no); } else if (mEv_CheckEvent(mEv_SAVED_RENEWSHOP) == TRUE) { mCkRh_SavePlayTime(player_no); // shop was already 'renewed' today @@ -1297,46 +1149,40 @@ extern void mSP_SetShopRareFurnitureChirashi(int player_no, mActor_name_t* goods if (bargain_day != 0) { u32 month = mEv_TO_MONTH(bargain_day); u32 day = mEv_TO_DAY(bargain_day); - if (Common_Get(time.rtc_time).month == month && - Common_Get(time.rtc_time).day == day) { + if (Common_Get(time.rtc_time).month == month && Common_Get(time.rtc_time).day == day) { mCkRh_SavePlayTime(player_no); // shop 'bargin' event is active return; } } - + goki_time = Save_Get(homes[arrange_idx]).goki.time; lbRTC_Add_DD(&goki_time, 1); home = Save_GetPointer(homes[arrange_idx]); /* check if the current date & time is past the renew time */ - if (home->goki.time.year == rtc_time->year && - home->goki.time.month == rtc_time->month && - home->goki.time.day == rtc_time->day) return; - - if (goki_time.year == rtc_time->year && - goki_time.month == rtc_time->month && - goki_time.day == rtc_time->day && - goki_time.hour < mTM_FIELD_RENEW_HOUR) return; - - if (rtc_time->hour < mTM_FIELD_RENEW_HOUR || - rtc_time->hour > mSP_GetShopCloseTime()) return; + if (home->goki.time.year == rtc_time->year && home->goki.time.month == rtc_time->month && + home->goki.time.day == rtc_time->day) + return; - if (mSP_SearchItemCategoryPriority(Save_Get(shop).rare_item, - mSP_KIND_FURNITURE, - mSP_LISTTYPE_RARE, game)) { + if (goki_time.year == rtc_time->year && goki_time.month == rtc_time->month && goki_time.day == rtc_time->day && + goki_time.hour < mTM_FIELD_RENEW_HOUR) + return; + + if (rtc_time->hour < mTM_FIELD_RENEW_HOUR || rtc_time->hour > mSP_GetShopCloseTime()) + return; + + if (mSP_SearchItemCategoryPriority(Save_Get(shop).rare_item, mSP_KIND_FURNITURE, mSP_LISTTYPE_RARE, game)) { rare_item = Save_Get(shop).rare_item; is_rare_item = TRUE; } else { int i; - + /* spotlight item in shop wasn't the rare item, so check all * the goods for one */ for (i = 0; i < goods_count; i++) { - if (mSP_ItemNo2GoodsListCategory(goods_list[i]) == - mSP_KIND_FURNITURE) { - is_rare_item = mSP_SearchItemCategoryPriority( - goods_list[i], mSP_KIND_FURNITURE, - mSP_LISTTYPE_RARE, game); + if (mSP_ItemNo2GoodsListCategory(goods_list[i]) == mSP_KIND_FURNITURE) { + is_rare_item = + mSP_SearchItemCategoryPriority(goods_list[i], mSP_KIND_FURNITURE, mSP_LISTTYPE_RARE, game); if (is_rare_item != FALSE) { rare_item = goods_list[i]; @@ -1353,9 +1199,7 @@ extern void mSP_SetShopRareFurnitureChirashi(int player_no, mActor_name_t* goods int arrange_idx = mHS_get_arrange_idx(p); if (mHS_get_pl_no_detail(arrange_idx) != -1) { - mSP_ShopItsumoChirashi(arrange_idx, shop_level, - rare_item, is_rare_item, - mPO_SENDTYPE_LEAFLET); + mSP_ShopItsumoChirashi(arrange_idx, shop_level, rare_item, is_rare_item, mPO_SENDTYPE_LEAFLET); mCkRh_SavePlayTime(player_no); } } @@ -1363,1399 +1207,1269 @@ extern void mSP_SetShopRareFurnitureChirashi(int player_no, mActor_name_t* goods } extern void mSP_SetRenewalChiraswhi_AppoDay() { - static int chirashi_idx_appoday[mSP_SHOP_TYPE_NUM] = { 0x1B, 0x1B, 0x1C, 0x1D }; - Mail_c leaflet; - Mail_ct_c* content = &leaflet.content; - int header_back_start; + static int chirashi_idx_appoday[mSP_SHOP_TYPE_NUM] = { 0x1B, 0x1B, 0x1C, 0x1D }; + Mail_c leaflet; + Mail_ct_c* content = &leaflet.content; + int header_back_start; - if (Save_Get(shop).shop_info.upgrading_today && mEv_CheckEvent(mEv_SAVED_RENEWSHOP) == FALSE) { - int shop_level = mSP_GetRealShopLevel(); - int i; + if (Save_Get(shop).shop_info.upgrading_today && mEv_CheckEvent(mEv_SAVED_RENEWSHOP) == FALSE) { + int shop_level = mSP_GetRealShopLevel(); + int i; - for (i = 0; i < mHS_HOUSE_NUM; i++) { - int player_no = mHS_get_pl_no(i) & 3; - int free_mail_idx = mMl_chk_mail_free_space(Save_Get(homes[i]).mailbox, HOME_MAILBOX_SIZE); + for (i = 0; i < mHS_HOUSE_NUM; i++) { + int player_no = mHS_get_pl_no(i) & 3; + int free_mail_idx = mMl_chk_mail_free_space(Save_Get(homes[i]).mailbox, HOME_MAILBOX_SIZE); - if (free_mail_idx >= 0 && Save_Get(homes[i]).ownerID.land_id != 0xFFFF && mEv_ArbeitPlayer(player_no) == FALSE) { + if (free_mail_idx >= 0 && Save_Get(homes[i]).ownerID.land_id != 0xFFFF && + mEv_ArbeitPlayer(player_no) == FALSE) { - mMl_clear_mail(&leaflet); - mHandbill_Load_HandbillFromRom( - content->header, - &header_back_start, - content->footer, - content->body, - chirashi_idx_appoday[shop_level] - ); - leaflet.content.font = mMl_FONT_0; - leaflet.content.header_back_start = header_back_start; - leaflet.content.mail_type = mMl_TYPE_SHOP_SALE_LEAFLET; - leaflet.content.paper_type = ITM_PAPER55; // simple paper + mMl_clear_mail(&leaflet); + mHandbill_Load_HandbillFromRom(content->header, &header_back_start, content->footer, content->body, + chirashi_idx_appoday[shop_level]); + leaflet.content.font = mMl_FONT_0; + leaflet.content.header_back_start = header_back_start; + leaflet.content.mail_type = mMl_TYPE_SHOP_SALE_LEAFLET; + leaflet.content.paper_type = ITM_PAPER55; // simple paper - mPr_CopyPersonalID(&leaflet.header.recipient.personalID, &Save_Get(private[mHS_get_pl_no(i) & 3]).player_ID); - leaflet.header.recipient.type = mMl_NAME_TYPE_PLAYER; + mPr_CopyPersonalID(&leaflet.header.recipient.personalID, + &Save_Get(private_data[mHS_get_pl_no(i) & 3]).player_ID); + leaflet.header.recipient.type = mMl_NAME_TYPE_PLAYER; - mMl_copy_mail(Save_Get(homes[i]).mailbox + free_mail_idx, &leaflet); - } + mMl_copy_mail(Save_Get(homes[i]).mailbox + free_mail_idx, &leaflet); + } + } + + Save_Get(shop).shop_info.upgrading_today = FALSE; } - - Save_Get(shop).shop_info.upgrading_today = FALSE; - } } extern void mSP_ExchangeLineUp_InGame(GAME* game) { - if (mSP_CheckExchangeDay2()) { - if (mSP_CheckExchangeMonth()) { - mSP_LotteryLineUp_GameAlloc(game); - } + if (mSP_CheckExchangeDay2()) { + if (mSP_CheckExchangeMonth()) { + mSP_LotteryLineUp_GameAlloc(game); + } - mSP_NewExchangeDay(); - mSP_ExchangeLineUp_GameAlloc(game); - Save_Get(shop).shop_info.not_loaded_before = TRUE; - mSP_SetShopRareFurnitureChirashi(Common_Get(player_no), Save_Get(shop).items, mSP_GOODS_COUNT, game); - } + mSP_NewExchangeDay(); + mSP_ExchangeLineUp_GameAlloc(game); + Save_Get(shop).shop_info.not_loaded_before = TRUE; + mSP_SetShopRareFurnitureChirashi(Common_Get(player_no), Save_Get(shop).items, mSP_GOODS_COUNT, game); + } } extern void mSP_PlusSales(u32 sum) { - Save_Get(shop).sales_sum += sum; + Save_Get(shop).sales_sum += sum; - if (mSP_GetShopLevel() == mSP_SHOP_TYPE_ZAKKA) { - if (Save_Get(shop).sales_sum > mSP_COMBINI_SUM) { - Save_Get(shop).sales_sum = mSP_COMBINI_SUM; + if (mSP_GetShopLevel() == mSP_SHOP_TYPE_ZAKKA) { + if (Save_Get(shop).sales_sum > mSP_COMBINI_SUM) { + Save_Get(shop).sales_sum = mSP_COMBINI_SUM; + } + } else if (mSP_GetShopLevel() == mSP_SHOP_TYPE_COMBINI) { + if (Save_Get(shop).sales_sum > mSP_SUPER_SUM) { + Save_Get(shop).sales_sum = mSP_SUPER_SUM; + } + } else if (mSP_GetShopLevel() == mSP_SHOP_TYPE_SUPER) { + if (Save_Get(shop).sales_sum > mSP_DSUPER_SUM) { + Save_Get(shop).sales_sum = mSP_DSUPER_SUM; + } } - } - else if (mSP_GetShopLevel() == mSP_SHOP_TYPE_COMBINI) { - if (Save_Get(shop).sales_sum > mSP_SUPER_SUM) { - Save_Get(shop).sales_sum = mSP_SUPER_SUM; - } - } - else if (mSP_GetShopLevel() == mSP_SHOP_TYPE_SUPER) { - if (Save_Get(shop).sales_sum > mSP_DSUPER_SUM) { - Save_Get(shop).sales_sum = mSP_DSUPER_SUM; - } - } } /* @unused size: 0x74 */ // extern int mSP_GetVisitorCount() extern int mSP_SetNewVisitor() { - if (mLd_PlayerManKindCheck()) { - Save_Get(shop).visitor_flag = TRUE; - return TRUE; - } + if (mLd_PlayerManKindCheck()) { + Save_Get(shop).visitor_flag = TRUE; + return TRUE; + } - return FALSE; + return FALSE; } extern u32 mSP_GetSalesSum() { - return Save_Get(shop).sales_sum; + return Save_Get(shop).sales_sum; } extern int mSP_GetShopLevel() { - return Save_Get(shop).shop_info.shop_level; + return Save_Get(shop).shop_info.shop_level; } extern int mSP_RenewShopLevel() { - if (Save_Get(shop).shop_info.shop_level != (u8)mSP_GetRealShopLevel()) { - Save_Get(shop).shop_info.shop_level = mSP_GetRealShopLevel(); - return TRUE; - } + if (Save_Get(shop).shop_info.shop_level != (u8)mSP_GetRealShopLevel()) { + Save_Get(shop).shop_info.shop_level = mSP_GetRealShopLevel(); + return TRUE; + } - return FALSE; + return FALSE; } extern int mSP_GetRealShopLevel() { - u32 sales_sum = mSP_GetSalesSum(); - - if (sales_sum >= mSP_DSUPER_SUM && Save_Get(shop).visitor_flag != FALSE) { - return mSP_SHOP_TYPE_DSUPER; - } - else if (sales_sum >= mSP_SUPER_SUM) { - return mSP_SHOP_TYPE_SUPER; - } + u32 sales_sum = mSP_GetSalesSum(); - return sales_sum >= mSP_COMBINI_SUM ? mSP_SHOP_TYPE_COMBINI : mSP_SHOP_TYPE_ZAKKA; + if (sales_sum >= mSP_DSUPER_SUM && Save_Get(shop).visitor_flag != FALSE) { + return mSP_SHOP_TYPE_DSUPER; + } else if (sales_sum >= mSP_SUPER_SUM) { + return mSP_SHOP_TYPE_SUPER; + } + + return sales_sum >= mSP_COMBINI_SUM ? mSP_SHOP_TYPE_COMBINI : mSP_SHOP_TYPE_ZAKKA; } extern int mSP_GetGoodsPercent(int priority) { - int goods_power = mPr_GetGoodsPower(); + int goods_power = mPr_GetGoodsPower(); - if (priority >= 0 && priority <= mSP_PRIORITY_RARE) { - int rare; - int uncommon; + if (priority >= 0 && priority <= mSP_PRIORITY_RARE) { + int rare; + int uncommon; - if (goods_power < 0) { - uncommon = goods_power + 35 + 5; - rare = 5; - } - else { - rare = goods_power + 5; - uncommon = rare + 35; - } + if (goods_power < 0) { + uncommon = goods_power + 35 + 5; + rare = 5; + } else { + rare = goods_power + 5; + uncommon = rare + 35; + } - switch (priority) { - case mSP_PRIORITY_COMMON: - return 100 - uncommon; - case mSP_PRIORITY_UNCOMMON: - return uncommon - rare; - case mSP_PRIORITY_RARE: - return rare; - default: + switch (priority) { + case mSP_PRIORITY_COMMON: + return 100 - uncommon; + case mSP_PRIORITY_UNCOMMON: + return uncommon - rare; + case mSP_PRIORITY_RARE: + return rare; + default: + return 0; + } + } else { return 0; } - } - else { - return 0; - } } extern void mSP_PrintNowShopSalesSum(gfxprint_t* gfxprint) { - if (mFI_CheckFieldData()) { - int shop_level = mSP_GetShopLevel(); - int status = mSP_ShopOpen(); - u32 sales_sum = mSP_GetSalesSum(); - u32 working_sum; + if (mFI_CheckFieldData()) { + int shop_level = mSP_GetShopLevel(); + int status = mSP_ShopOpen(); + u32 sales_sum = mSP_GetSalesSum(); + u32 working_sum; - switch (shop_level) { - case mSP_SHOP_TYPE_ZAKKA: - working_sum = sales_sum; - break; - case mSP_SHOP_TYPE_COMBINI: - working_sum = sales_sum - mSP_COMBINI_SUM; - break; - case mSP_SHOP_TYPE_SUPER: - working_sum = sales_sum - mSP_SUPER_SUM; - break; - default: - working_sum = sales_sum - mSP_DSUPER_SUM; - break; + switch (shop_level) { + case mSP_SHOP_TYPE_ZAKKA: + working_sum = sales_sum; + break; + case mSP_SHOP_TYPE_COMBINI: + working_sum = sales_sum - mSP_COMBINI_SUM; + break; + case mSP_SHOP_TYPE_SUPER: + working_sum = sales_sum - mSP_SUPER_SUM; + break; + default: + working_sum = sales_sum - mSP_DSUPER_SUM; + break; + } + + gfxprint_color(gfxprint, 200, 200, 250, 255); + gfxprint_locate8x8(gfxprint, 3, 12); + + if (mEv_CheckEvent(mEv_SAVED_RENEWSHOP) == FALSE) { + gfxprint_printf(gfxprint, "%d %d %s", shop_level, working_sum, mSP_ShopStatus2String(status)); + + gfxprint_color(gfxprint, 200, 200, 250, 255); + gfxprint_printf(gfxprint, "A%2d,%2d,%2d,%2d,%2d", + mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_FURNITURE].a), + mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_WALLPAPER].a), + mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_CARPET].a), + mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_CLOTH].a), + mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_PAPER].a)); + } else { + gfxprint_color(gfxprint, 200, 100, 100, 255); + gfxprint_printf(gfxprint, "%d %d %s->%d.%d.%d", shop_level, working_sum, mSP_ShopStatus2String(status), + Save_Get(shop).renewal_time.year, Save_Get(shop).renewal_time.month, + Save_Get(shop).renewal_time.day); + + gfxprint_color(gfxprint, 200, 200, 250, 255); + gfxprint_printf(gfxprint, " A%2d,%2d,%2d,%2d,%2d", + mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_FURNITURE].a), + mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_WALLPAPER].a), + mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_CARPET].a), + mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_CLOTH].a), + mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_PAPER].a)); + } + + gfxprint_color(gfxprint, 200, 200, 250, 255); + gfxprint_locate8x8(gfxprint, 3, 13); + gfxprint_printf(gfxprint, "B%2d,%2d,%2d,%2d,%2d", + mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_FURNITURE].b), + mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_WALLPAPER].b), + mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_CARPET].b), + mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_CLOTH].b), + mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_PAPER].b)); + gfxprint_printf(gfxprint, "C%2d,%2d,%2d,%2d,%2d", + mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_FURNITURE].c), + mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_WALLPAPER].c), + mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_CARPET].c), + mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_CLOTH].c), + mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_PAPER].c)); } - - gfxprint_color(gfxprint, 200, 200, 250, 255); - gfxprint_locate8x8(gfxprint, 3, 12); - - if (mEv_CheckEvent(mEv_SAVED_RENEWSHOP) == FALSE) { - gfxprint_printf(gfxprint, "%d %d %s", shop_level, working_sum, mSP_ShopStatus2String(status)); - - gfxprint_color(gfxprint, 200, 200, 250, 255); - gfxprint_printf( - gfxprint, - "A%2d,%2d,%2d,%2d,%2d", - mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_FURNITURE].a), - mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_WALLPAPER].a), - mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_CARPET].a), - mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_CLOTH].a), - mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_PAPER].a) - ); - } - else { - gfxprint_color(gfxprint, 200, 100, 100, 255); - gfxprint_printf( - gfxprint, - "%d %d %s->%d.%d.%d", - shop_level, - working_sum, - mSP_ShopStatus2String(status), - Save_Get(shop).renewal_time.year, - Save_Get(shop).renewal_time.month, - Save_Get(shop).renewal_time.day - ); - - gfxprint_color(gfxprint, 200, 200, 250, 255); - gfxprint_printf( - gfxprint, - " A%2d,%2d,%2d,%2d,%2d", - mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_FURNITURE].a), - mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_WALLPAPER].a), - mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_CARPET].a), - mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_CLOTH].a), - mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_PAPER].a) - ); - } - - gfxprint_color(gfxprint, 200, 200, 250, 255); - gfxprint_locate8x8(gfxprint, 3, 13); - gfxprint_printf( - gfxprint, - "B%2d,%2d,%2d,%2d,%2d", - mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_FURNITURE].b), - mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_WALLPAPER].b), - mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_CARPET].b), - mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_CLOTH].b), - mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_PAPER].b) - ); - gfxprint_printf( - gfxprint, - "C%2d,%2d,%2d,%2d,%2d", - mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_FURNITURE].c), - mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_WALLPAPER].c), - mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_CARPET].c), - mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_CLOTH].c), - mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_PAPER].c) - ); - } } extern void mSP_GetGoodsPriority(u8* abc_priorities, int category) { - mSP_goods_priority_list_c* priorities = Save_Get(shop).priority_lists; + mSP_goods_priority_list_c* priorities = Save_Get(shop).priority_lists; - if (category == mSP_KIND_DIARY) { - category = mSP_KIND_FURNITURE; - } + if (category == mSP_KIND_DIARY) { + category = mSP_KIND_FURNITURE; + } - abc_priorities[0] = priorities[category].a; - abc_priorities[1] = priorities[category].b; - abc_priorities[2] = priorities[category].c; + abc_priorities[0] = priorities[category].a; + abc_priorities[1] = priorities[category].b; + abc_priorities[2] = priorities[category].c; } static void mSP_SetExchangeDay() { - Save_Get(shop).exchange_time = Common_Get(time.rtc_time); + Save_Get(shop).exchange_time = Common_Get(time.rtc_time); } static void mSP_InitGoods() { - Shop_c* shop = Save_GetPointer(shop); - mActor_name_t* items = shop->items; - int i; + Shop_c* shop = Save_GetPointer(shop); + mActor_name_t* items = shop->items; + int i; - for (i = 0; i < mSP_GOODS_COUNT; i++) { - *items++ = EMPTY_NO; - } + for (i = 0; i < mSP_GOODS_COUNT; i++) { + *items++ = EMPTY_NO; + } } extern void mSP_ExchangeLineUp_ZeldaMalloc() { - mSP_InitGoods(); - mSP_MakeGoodsList(NULL); - mSP_SetExchangeDay(); + mSP_InitGoods(); + mSP_MakeGoodsList(NULL); + mSP_SetExchangeDay(); } extern void mSP_LotteryLineUp_ZeldaMalloc() { - mSP_MakeLotteryList(NULL); + mSP_MakeLotteryList(NULL); } extern void mSP_ExchangeLineUp_GameAlloc(GAME* game) { - mSP_InitGoods(); - mSP_MakeGoodsList(game); - mSP_SetExchangeDay(); + mSP_InitGoods(); + mSP_MakeGoodsList(game); + mSP_SetExchangeDay(); } extern void mSP_LotteryLineUp_GameAlloc(GAME* game) { - mSP_MakeLotteryList(game); + mSP_MakeLotteryList(game); } extern void mSP_InitShopSaveData() { - Shop_c* shop = Save_GetPointer(shop); - PersonalID_c* pid = shop->unused_ids; - mActor_name_t* lottery_items = shop->lottery_items; - int i = 0; + Shop_c* shop = Save_GetPointer(shop); + PersonalID_c* pid = shop->unused_ids; + mActor_name_t* lottery_items = shop->lottery_items; + int i = 0; - while (i < mSP_PERSONAL_ID_COUNT) { - mPr_ClearPersonalID(pid); - pid++; - i++; - } + while (i < mSP_PERSONAL_ID_COUNT) { + mPr_ClearPersonalID(pid); + pid++; + i++; + } - mSP_InitGoods(); - Save_Get(shop).rare_item = EMPTY_NO; + mSP_InitGoods(); + Save_Get(shop).rare_item = EMPTY_NO; - for (i = 0; i < mSP_LOTTERY_ITEM_COUNT; i++) { - lottery_items[0] = EMPTY_NO; - lottery_items++; - } + for (i = 0; i < mSP_LOTTERY_ITEM_COUNT; i++) { + lottery_items[0] = EMPTY_NO; + lottery_items++; + } - Save_Get(shop).flowers_candy_grab_bag_count = 0; - shop->sales_sum = 0; - shop->exchange_time = Common_Get(time.rtc_time); - shop->exchange_time.month--; - shop->shop_info.shop_level = mSP_SHOP_TYPE_ZAKKA; - shop->renewal_time = shop->exchange_time; - shop->shop_info.upgrading_today = FALSE; - Save_Get(shop).visitor_flag = FALSE; + Save_Get(shop).flowers_candy_grab_bag_count = 0; + shop->sales_sum = 0; + shop->exchange_time = Common_Get(time.rtc_time); + shop->exchange_time.month--; + shop->shop_info.shop_level = mSP_SHOP_TYPE_ZAKKA; + shop->renewal_time = shop->exchange_time; + shop->shop_info.upgrading_today = FALSE; + Save_Get(shop).visitor_flag = FALSE; } static void mSP_DecideUniqueCommonList(mSP_goods_priority_list_c* priority_list) { - static mSP_goods_priority_list_c priority_candidate[6] = { - { mSP_PRIORITY_COMMON, mSP_PRIORITY_UNCOMMON, mSP_PRIORITY_RARE, 0 }, - { mSP_PRIORITY_COMMON, mSP_PRIORITY_RARE, mSP_PRIORITY_UNCOMMON, 0 }, - { mSP_PRIORITY_UNCOMMON, mSP_PRIORITY_COMMON, mSP_PRIORITY_RARE, 0 }, - { mSP_PRIORITY_RARE, mSP_PRIORITY_COMMON, mSP_PRIORITY_UNCOMMON, 0 }, - { mSP_PRIORITY_RARE, mSP_PRIORITY_UNCOMMON, mSP_PRIORITY_COMMON, 0 }, - { mSP_PRIORITY_UNCOMMON, mSP_PRIORITY_RARE, mSP_PRIORITY_COMMON, 0 } - }; + static mSP_goods_priority_list_c priority_candidate[6] = { + { mSP_PRIORITY_COMMON, mSP_PRIORITY_UNCOMMON, mSP_PRIORITY_RARE, 0 }, + { mSP_PRIORITY_COMMON, mSP_PRIORITY_RARE, mSP_PRIORITY_UNCOMMON, 0 }, + { mSP_PRIORITY_UNCOMMON, mSP_PRIORITY_COMMON, mSP_PRIORITY_RARE, 0 }, + { mSP_PRIORITY_RARE, mSP_PRIORITY_COMMON, mSP_PRIORITY_UNCOMMON, 0 }, + { mSP_PRIORITY_RARE, mSP_PRIORITY_UNCOMMON, mSP_PRIORITY_COMMON, 0 }, + { mSP_PRIORITY_UNCOMMON, mSP_PRIORITY_RARE, mSP_PRIORITY_COMMON, 0 } + }; - priority_list[0] = priority_candidate[RANDOM(6)]; + priority_list[0] = priority_candidate[RANDOM(6)]; } static void mSP_DecideGoodsCommonList() { - mSP_goods_priority_list_c* priority_lists = Save_Get(shop).priority_lists; + mSP_goods_priority_list_c* priority_lists = Save_Get(shop).priority_lists; - mSP_DecideUniqueCommonList(&priority_lists[mSP_KIND_FURNITURE]); - mSP_DecideUniqueCommonList(&priority_lists[mSP_KIND_PAPER]); - mSP_DecideUniqueCommonList(&priority_lists[mSP_KIND_CLOTH]); - mSP_DecideUniqueCommonList(&priority_lists[mSP_KIND_CARPET]); - mSP_DecideUniqueCommonList(&priority_lists[mSP_KIND_WALLPAPER]); + mSP_DecideUniqueCommonList(&priority_lists[mSP_KIND_FURNITURE]); + mSP_DecideUniqueCommonList(&priority_lists[mSP_KIND_PAPER]); + mSP_DecideUniqueCommonList(&priority_lists[mSP_KIND_CLOTH]); + mSP_DecideUniqueCommonList(&priority_lists[mSP_KIND_CARPET]); + mSP_DecideUniqueCommonList(&priority_lists[mSP_KIND_WALLPAPER]); } extern void mSP_ShopGameStartCt(GAME* game) { - mSP_DecideGoodsCommonList(); - mSP_InitShopSaveData(); - mSP_ExchangeLineUp_InGame(game); + mSP_DecideGoodsCommonList(); + mSP_InitShopSaveData(); + mSP_ExchangeLineUp_InGame(game); } extern mActor_name_t mSP_GetNowShopBgNum() { - switch (Save_Get(scene_no)) { - case SCENE_SHOP0: - { - if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_FUKUBIKI) { - return 0xFA; - } + switch (Save_Get(scene_no)) { + case SCENE_SHOP0: { + if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_FUKUBIKI) { + return 0xFA; + } - return 0xF8; + return 0xF8; + } + + case SCENE_CONVENI: { + if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_FUKUBIKI) { + return 0xFB; + } + + return 0xFE; + } + + case SCENE_SUPER: { + if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_FUKUBIKI) { + return 0xFC; + } + + return 0x102; + } + + case SCENE_DEPART: { + if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_FUKUBIKI) { + return 0xFD; + } + + return 0x100; + } + + case SCENE_DEPART_2: + return 0x101; + + default: + return 0xFE; } - - case SCENE_CONVENI: - { - if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_FUKUBIKI) { - return 0xFB; - } - - return 0xFE; - } - - case SCENE_SUPER: - { - if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_FUKUBIKI) { - return 0xFC; - } - - return 0x102; - } - - case SCENE_DEPART: - { - if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_FUKUBIKI) { - return 0xFD; - } - - return 0x100; - } - - case SCENE_DEPART_2: - return 0x101; - - default: - return 0xFE; - } } static int mSP_what_special_sale; extern int mSP_WhatSpecialSale() { - return mSP_what_special_sale; + return mSP_what_special_sale; } extern mActor_name_t mSP_GetNowShopFgNum() { - int event_kind = Save_Get(event_save_data).special.event.bargin.kind; - - switch (Save_Get(scene_no)) { - case SCENE_SHOP0: - { - if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_EVENT) { - if (event_kind == mSP_KIND_FURNITURE) { - mSP_what_special_sale = mSP_KIND_FURNITURE; - return 0x163; + int event_kind = Save_Get(event_save_data).special.event.bargin.kind; + + switch (Save_Get(scene_no)) { + case SCENE_SHOP0: { + if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_EVENT) { + if (event_kind == mSP_KIND_FURNITURE) { + mSP_what_special_sale = mSP_KIND_FURNITURE; + return 0x163; + } + + if (event_kind == mSP_KIND_CLOTH) { + mSP_what_special_sale = mSP_KIND_CLOTH; + return 0x166; + } + + if (event_kind == mSP_KIND_WALLPAPER) { + mSP_what_special_sale = mSP_KIND_WALLPAPER; + return 0x165; + } + + mSP_what_special_sale = mSP_KIND_CARPET; + return 0x164; + } + + if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_FUKUBIKI) { + return 0x14D; + } + + return 0x22; } - if (event_kind == mSP_KIND_CLOTH) { - mSP_what_special_sale = mSP_KIND_CLOTH; - return 0x166; + case SCENE_CONVENI: { + if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_EVENT) { + if (Save_Get(event_save_data).special.event.bargin.kind == mSP_KIND_FURNITURE) { + mSP_what_special_sale = mSP_KIND_FURNITURE; + return 0x167; + } + + if (Save_Get(event_save_data).special.event.bargin.kind == mSP_KIND_CLOTH) { + mSP_what_special_sale = mSP_KIND_CLOTH; + return 0x16A; + } + + if (Save_Get(event_save_data).special.event.bargin.kind == mSP_KIND_WALLPAPER) { + mSP_what_special_sale = mSP_KIND_WALLPAPER; + return 0x169; + } + + mSP_what_special_sale = mSP_KIND_CARPET; + return 0x168; + } + + if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_FUKUBIKI) { + return 0x14E; + } + + return 0x23; } - if (event_kind == mSP_KIND_WALLPAPER) { - mSP_what_special_sale = mSP_KIND_WALLPAPER; - return 0x165; + case SCENE_SUPER: { + if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_EVENT) { + if (Save_Get(event_save_data).special.event.bargin.kind == mSP_KIND_FURNITURE) { + mSP_what_special_sale = mSP_KIND_FURNITURE; + return 0x16B; + } + + if (Save_Get(event_save_data).special.event.bargin.kind == mSP_KIND_CLOTH) { + mSP_what_special_sale = mSP_KIND_CLOTH; + return 0x16E; + } + + if (Save_Get(event_save_data).special.event.bargin.kind == mSP_KIND_WALLPAPER) { + mSP_what_special_sale = mSP_KIND_WALLPAPER; + return 0x16D; + } + + mSP_what_special_sale = mSP_KIND_CARPET; + return 0x16C; + } + + if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_FUKUBIKI) { + return 0x14F; + } + + return 0x24; } - mSP_what_special_sale = mSP_KIND_CARPET; - return 0x164; - } + case SCENE_DEPART: { + if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_EVENT) { + return 0x16F; + } - if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_FUKUBIKI) { - return 0x14D; - } + if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_FUKUBIKI) { + return 0x150; + } - return 0x22; + return 0x25; + } + + case SCENE_DEPART_2: { + if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_EVENT) { + if (Save_Get(event_save_data).special.event.bargin.kind == mSP_KIND_FURNITURE) { + mSP_what_special_sale = mSP_KIND_FURNITURE; + return 0x170; + } + + if (Save_Get(event_save_data).special.event.bargin.kind == mSP_KIND_CLOTH) { + mSP_what_special_sale = mSP_KIND_CLOTH; + return 0x173; + } + + if (Save_Get(event_save_data).special.event.bargin.kind == mSP_KIND_WALLPAPER) { + mSP_what_special_sale = mSP_KIND_WALLPAPER; + return 0x172; + } + + mSP_what_special_sale = mSP_KIND_CARPET; + return 0x171; + } + + return 0x26; + } + + default: + return 0x25; } - - case SCENE_CONVENI: - { - if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_EVENT) { - if (Save_Get(event_save_data).special.event.bargin.kind == mSP_KIND_FURNITURE) { - mSP_what_special_sale = mSP_KIND_FURNITURE; - return 0x167; - } - - if (Save_Get(event_save_data).special.event.bargin.kind == mSP_KIND_CLOTH) { - mSP_what_special_sale = mSP_KIND_CLOTH; - return 0x16A; - } - - if (Save_Get(event_save_data).special.event.bargin.kind == mSP_KIND_WALLPAPER) { - mSP_what_special_sale = mSP_KIND_WALLPAPER; - return 0x169; - } - - mSP_what_special_sale = mSP_KIND_CARPET; - return 0x168; - } - - if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_FUKUBIKI) { - return 0x14E; - } - - return 0x23; - } - - case SCENE_SUPER: - { - if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_EVENT) { - if (Save_Get(event_save_data).special.event.bargin.kind == mSP_KIND_FURNITURE) { - mSP_what_special_sale = mSP_KIND_FURNITURE; - return 0x16B; - } - - if (Save_Get(event_save_data).special.event.bargin.kind == mSP_KIND_CLOTH) { - mSP_what_special_sale = mSP_KIND_CLOTH; - return 0x16E; - } - - if (Save_Get(event_save_data).special.event.bargin.kind == mSP_KIND_WALLPAPER) { - mSP_what_special_sale = mSP_KIND_WALLPAPER; - return 0x16D; - } - - mSP_what_special_sale = mSP_KIND_CARPET; - return 0x16C; - } - - if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_FUKUBIKI) { - return 0x14F; - } - - return 0x24; - } - - case SCENE_DEPART: - { - if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_EVENT) { - return 0x16F; - } - - if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_FUKUBIKI) { - return 0x150; - } - - return 0x25; - } - - case SCENE_DEPART_2: - { - if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_EVENT) { - if (Save_Get(event_save_data).special.event.bargin.kind == mSP_KIND_FURNITURE) { - mSP_what_special_sale = mSP_KIND_FURNITURE; - return 0x170; - } - - if (Save_Get(event_save_data).special.event.bargin.kind == mSP_KIND_CLOTH) { - mSP_what_special_sale = mSP_KIND_CLOTH; - return 0x173; - } - - if (Save_Get(event_save_data).special.event.bargin.kind == mSP_KIND_WALLPAPER) { - mSP_what_special_sale = mSP_KIND_WALLPAPER; - return 0x172; - } - - mSP_what_special_sale = mSP_KIND_CARPET; - return 0x171; - } - - return 0x26; - } - - default: - return 0x25; - } } extern lbRTC_hour_t mSP_GetShopOpenTime() { - static lbRTC_hour_t shop_open_time_table[mSP_SHOP_TYPE_NUM] = { - 9, - 7, - 9, - 9 - }; + static lbRTC_hour_t shop_open_time_table[mSP_SHOP_TYPE_NUM] = { 9, 7, 9, 9 }; - int shop_level = mSP_GetShopLevel(); + int shop_level = mSP_GetShopLevel(); - if (Common_Get(time.rtc_time).day == lbRTC_GetDaysByMonth(Common_Get(time.rtc_time).year, Common_Get(time.rtc_time).month)) { - return 10; // lottery starts at 10AM - } - else { - return shop_open_time_table[shop_level]; - } + if (Common_Get(time.rtc_time).day == + lbRTC_GetDaysByMonth(Common_Get(time.rtc_time).year, Common_Get(time.rtc_time).month)) { + return 10; // lottery starts at 10AM + } else { + return shop_open_time_table[shop_level]; + } } extern lbRTC_hour_t mSP_GetShopCloseTime() { - static lbRTC_hour_t shop_close_time_table[mSP_SHOP_TYPE_NUM] = { - 22, - 23, - 22, - 22 - }; + static lbRTC_hour_t shop_close_time_table[mSP_SHOP_TYPE_NUM] = { 22, 23, 22, 22 }; - return shop_close_time_table[mSP_GetShopLevel()]; + return shop_close_time_table[mSP_GetShopLevel()]; } extern lbRTC_hour_t mSP_GetShopCloseTime_Bgm() { - static lbRTC_hour_t shop_close_time_table[mSP_SHOP_TYPE_NUM] = { - 22, - 23, - 22, - 22 - }; + static lbRTC_hour_t shop_close_time_table[mSP_SHOP_TYPE_NUM] = { 22, 23, 22, 22 }; - return shop_close_time_table[mSP_GetShopLevel()]; + return shop_close_time_table[mSP_GetShopLevel()]; } extern int mSP_InRenewal() { - if (mEv_CheckEvent(mEv_SAVED_RENEWSHOP) == TRUE) { - lbRTC_time_c renew_time = Save_Get(shop).renewal_time; - lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); + if (mEv_CheckEvent(mEv_SAVED_RENEWSHOP) == TRUE) { + lbRTC_time_c renew_time = Save_Get(shop).renewal_time; + lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); - lbRTC_Sub_DD(&renew_time, 1); + lbRTC_Sub_DD(&renew_time, 1); - if ( - lbRTC_IsOverTime(&renew_time, rtc_time) == lbRTC_OVER || - lbRTC_IsEqualTime(rtc_time, &renew_time, lbRTC_CHECK_YEARS | lbRTC_CHECK_MONTHS | lbRTC_CHECK_DAYS) != FALSE - ) { - return TRUE; + if (lbRTC_IsOverTime(&renew_time, rtc_time) == lbRTC_OVER || + lbRTC_IsEqualTime(rtc_time, &renew_time, lbRTC_CHECK_YEARS | lbRTC_CHECK_MONTHS | lbRTC_CHECK_DAYS) != + FALSE) { + return TRUE; + } } - } - return FALSE; + return FALSE; } /* @unused size: 0xF0 */ // int mSP_CheckSpecialSalesSoldOut(...) extern int mSP_ShopOpen() { - lbRTC_time_c rtc_time = Common_Get(time.rtc_time); - lbRTC_hour_t now_hour; + lbRTC_time_c rtc_time = Common_Get(time.rtc_time); + lbRTC_hour_t now_hour; - if (mEv_CheckFirstJob()) { - return mSP_SHOP_STATUS_OPEN; // shop is forcefully open during chores - } - - if (mEv_CheckEvent(mEv_SPNPC_SHOP) == TRUE) { - lbRTC_time_c bargin_time = Save_Get(event_save_data).special.event.bargin.start_time; - - if (bargin_time.day == rtc_time.day) { - lbRTC_time_c end_time = Save_Get(event_save_data).special.event.bargin.end_time; - lbRTC_time_c start_time_pre = bargin_time; - lbRTC_time_c end_time_post = end_time; - now_hour = rtc_time.hour; - - lbRTC_Sub_hh(&start_time_pre, 1); - lbRTC_Add_hh(&end_time_post, 1); - - if (now_hour >= mTM_FIELD_RENEW_HOUR && now_hour < mSP_GetShopOpenTime()) { - return mSP_SHOP_STATUS_PRE; - } - - if (now_hour < mTM_FIELD_RENEW_HOUR || now_hour >= mSP_GetShopCloseTime()) { - return mSP_SHOP_STATUS_END; - } - - if (lbRTC_IsOverTime(&start_time_pre, &rtc_time) == lbRTC_LESS) { - return mSP_SHOP_STATUS_OPEN; - } - - if (lbRTC_IsOverTime(&bargin_time, &rtc_time) == lbRTC_LESS) { - return mSP_SHOP_STATUS_PREEVENT; - } - - if (lbRTC_IsOverTime(&end_time, &rtc_time) == lbRTC_LESS) { - return mSP_SHOP_STATUS_OPENEVENT; - } - - if (lbRTC_IsOverTime(&end_time_post, &rtc_time) == lbRTC_LESS) { - return mSP_SHOP_STATUS_ENDEVENT; - } - - return mSP_SHOP_STATUS_OPEN; + if (mEv_CheckFirstJob()) { + return mSP_SHOP_STATUS_OPEN; // shop is forcefully open during chores } - } - now_hour = rtc_time.hour; + if (mEv_CheckEvent(mEv_SPNPC_SHOP) == TRUE) { + lbRTC_time_c bargin_time = Save_Get(event_save_data).special.event.bargin.start_time; - if (mSP_InRenewal() != FALSE) { - return mSP_SHOP_STATUS_RENEW; - } + if (bargin_time.day == rtc_time.day) { + lbRTC_time_c end_time = Save_Get(event_save_data).special.event.bargin.end_time; + lbRTC_time_c start_time_pre = bargin_time; + lbRTC_time_c end_time_post = end_time; + now_hour = rtc_time.hour; - if (now_hour >= mSP_GetShopOpenTime() && now_hour < mSP_GetShopCloseTime()) { - return mSP_SHOP_STATUS_OPEN; - } + lbRTC_Sub_hh(&start_time_pre, 1); + lbRTC_Add_hh(&end_time_post, 1); - if (now_hour >= mTM_FIELD_RENEW_HOUR && now_hour < mSP_GetShopOpenTime()) { - return mSP_SHOP_STATUS_PRE; - } + if (now_hour >= mTM_FIELD_RENEW_HOUR && now_hour < mSP_GetShopOpenTime()) { + return mSP_SHOP_STATUS_PRE; + } - return mSP_SHOP_STATUS_END; + if (now_hour < mTM_FIELD_RENEW_HOUR || now_hour >= mSP_GetShopCloseTime()) { + return mSP_SHOP_STATUS_END; + } + + if (lbRTC_IsOverTime(&start_time_pre, &rtc_time) == lbRTC_LESS) { + return mSP_SHOP_STATUS_OPEN; + } + + if (lbRTC_IsOverTime(&bargin_time, &rtc_time) == lbRTC_LESS) { + return mSP_SHOP_STATUS_PREEVENT; + } + + if (lbRTC_IsOverTime(&end_time, &rtc_time) == lbRTC_LESS) { + return mSP_SHOP_STATUS_OPENEVENT; + } + + if (lbRTC_IsOverTime(&end_time_post, &rtc_time) == lbRTC_LESS) { + return mSP_SHOP_STATUS_ENDEVENT; + } + + return mSP_SHOP_STATUS_OPEN; + } + } + + now_hour = rtc_time.hour; + + if (mSP_InRenewal() != FALSE) { + return mSP_SHOP_STATUS_RENEW; + } + + if (now_hour >= mSP_GetShopOpenTime() && now_hour < mSP_GetShopCloseTime()) { + return mSP_SHOP_STATUS_OPEN; + } + + if (now_hour >= mTM_FIELD_RENEW_HOUR && now_hour < mSP_GetShopOpenTime()) { + return mSP_SHOP_STATUS_PRE; + } + + return mSP_SHOP_STATUS_END; } extern void mSP_RandomHaniwaSelect(mActor_name_t* haniwa_list, int count) { - int i; + int i; - for (i = 0; i < count; i++) { - haniwa_list[i] = EMPTY_NO; - } - - for (i = 0; i < count; i++) { - int set = FALSE; - - while (!set) { - mActor_name_t haniwa = HANIWA_START + (mActor_name_t)FTR_NO_2_IDX(RANDOM(HANIWA_NUM)); - - if (mSP_GoodsExistAlready(haniwa_list, count, haniwa) == FALSE) { - haniwa_list[i] = haniwa; - set = TRUE; - } - else if (count > HANIWA_NUM) { - haniwa_list[i] = haniwa; - set = TRUE; - } + for (i = 0; i < count; i++) { + haniwa_list[i] = EMPTY_NO; + } + + for (i = 0; i < count; i++) { + int set = FALSE; + + while (!set) { + mActor_name_t haniwa = HANIWA_START + (mActor_name_t)FTR_NO_2_IDX(RANDOM(HANIWA_NUM)); + + if (mSP_GoodsExistAlready(haniwa_list, count, haniwa) == FALSE) { + haniwa_list[i] = haniwa; + set = TRUE; + } else if (count > HANIWA_NUM) { + haniwa_list[i] = haniwa; + set = TRUE; + } + } } - } } extern void mSP_RandomMDSelect(mActor_name_t* md_list, int count) { - int i; + int i; - for (i = 0; i < count; i++) { - md_list[i] = EMPTY_NO; - } - - for (i = 0; i < count; i++) { - int set = FALSE; - - while (!set) { - mActor_name_t md = ITM_MINIDISK_START + RANDOM(NOT_SECRET_MD_NUM); - - if (mSP_GoodsExistAlready(md_list, count, md) == FALSE) { - md_list[i] = md; - set = TRUE; - } - else if (count > NOT_SECRET_MD_NUM) { - md_list[i] = md; - set = TRUE; - } + for (i = 0; i < count; i++) { + md_list[i] = EMPTY_NO; + } + + for (i = 0; i < count; i++) { + int set = FALSE; + + while (!set) { + mActor_name_t md = ITM_MINIDISK_START + RANDOM(NOT_SECRET_MD_NUM); + + if (mSP_GoodsExistAlready(md_list, count, md) == FALSE) { + md_list[i] = md; + set = TRUE; + } else if (count > NOT_SECRET_MD_NUM) { + md_list[i] = md; + set = TRUE; + } + } } - } } extern void mSP_RandomUmbSelect(mActor_name_t* umb_list, int count) { - int i; + int i; - for (i = 0; i < count; i++) { - umb_list[i] = EMPTY_NO; - } - - for (i = 0; i < count; i++) { - int set = FALSE; - - while (!set) { - mActor_name_t umb = ITM_UMBRELLA00 + RANDOM(UMBRELLA_NUM); - - if (mSP_GoodsExistAlready(umb_list, count, umb) == FALSE) { - umb_list[i] = umb; - set = TRUE; - } - else if (count > UMBRELLA_NUM) { - umb_list[i] = umb; - set = TRUE; - } + for (i = 0; i < count; i++) { + umb_list[i] = EMPTY_NO; + } + + for (i = 0; i < count; i++) { + int set = FALSE; + + while (!set) { + mActor_name_t umb = ITM_UMBRELLA00 + RANDOM(UMBRELLA_NUM); + + if (mSP_GoodsExistAlready(umb_list, count, umb) == FALSE) { + umb_list[i] = umb; + set = TRUE; + } else if (count > UMBRELLA_NUM) { + umb_list[i] = umb; + set = TRUE; + } + } } - } } static int mSP_CountBirth(u8 birth_type) { - int count = 0; - u8* birth_type_p = mRmTp_CheckFtrBirthInfoTop(); - int i; - - for (i = 0; i < FTR_NUM; i++) { - if (birth_type_p[0] == birth_type) { - count++; - } - - birth_type_p++; - } - - return count; -} - -static mActor_name_t mSP_FtrBirthIdx2ItemNo(u8 birth_type, int birth_idx) { - int count = 0; - u8* birth_type_p = mRmTp_CheckFtrBirthInfoTop(); - int i; - - for (i = 0; i < FTR_NUM; i++) { - if (birth_type_p[0] == birth_type) { - if (count == birth_idx) { - return mRmTp_FtrIdx2FtrItemNo(i, mRmTp_DIRECT_SOUTH); - } - - count++; - } - - birth_type_p++; - } - - return FTR_DINO_TREX_SKULL; -} - -extern mActor_name_t mSP_RandomOneFossilSelect(int multi_fossil) { - u8 birth_type = multi_fossil == FALSE ? mRmTp_BIRTH_TYPE_SINGLE_FOSSIL : mRmTp_BIRTH_TYPE_MULTI_FOSSIL; - int count = mSP_CountBirth(birth_type); - - return mSP_FtrBirthIdx2ItemNo(birth_type, RANDOM(count)); -} - -extern int mSP_Chk_HukubukuroSail() { - lbRTC_time_c rtc_time = Common_Get(time.rtc_time); - lbRTC_year_t year = rtc_time.year; - lbRTC_month_t month = rtc_time.month; - lbRTC_day_t day = rtc_time.day; - - if (month == lbRTC_NOVEMBER) { - int black_friday = lbRTC_Weekly_day(year, lbRTC_NOVEMBER, 4, lbRTC_THURSDAY) + 1; - - if (black_friday == day) { - return TRUE; - } - } - - return FALSE; -} - -extern int mSP_CheckFukubikiDay() { - lbRTC_time_c rtc_time = Common_Get(time.rtc_time); - lbRTC_year_t year = rtc_time.year; - lbRTC_month_t month = rtc_time.month; - lbRTC_day_t day = rtc_time.day; - lbRTC_day_t days_in_month = lbRTC_GetDaysByMonth(year, month); - - return days_in_month == day; -} - -extern int mSP_SetGoods2ReservedPoint(mActor_name_t goods, mActor_name_t reserved_no) { - mActor_name_t* shop_fg = mFI_BkNumtoUtFGTop(0, 0); - int i; - - for (i = 0; i < UT_TOTAL_NUM; i++) { - if (reserved_no == shop_fg[0]) { - mFI_UtNumtoFGSet_common(goods, i % UT_X_NUM, i / UT_X_NUM, FALSE); - return TRUE; - } - - shop_fg++; - } - - return FALSE; -} - -extern int mSP_CheckHallowinDay() { - int res = FALSE; - lbRTC_time_c rtc_time = Common_Get(time.rtc_time); - lbRTC_month_t month = rtc_time.month; - lbRTC_day_t day = rtc_time.day; - - if ( - month == lbRTC_OCTOBER && - day >= 16 && - day <= 30 - ) { - res = TRUE; - } - - return res; -} - -extern void mSP_SetTanukiShopStatus() { - if (mSP_ShopOpen() == mSP_SHOP_STATUS_OPENEVENT) { - Common_Set(tanuki_shop_status, mSP_TANUKI_SHOP_STATUS_EVENT); - } - else if (mSP_CheckFukubikiDay()) { - Common_Set(tanuki_shop_status, mSP_TANUKI_SHOP_STATUS_FUKUBIKI); - } - else if (mSP_Chk_HukubukuroSail()) { - Common_Set(tanuki_shop_status, mSP_TANUKI_SHOP_STATUS_HUKUBUKURO_SALE); - } - else if (mSP_CheckHallowinDay()) { - Common_Set(tanuki_shop_status, mSP_TANUKI_SHOP_STATUS_HALLOWEEN); - } - else { - Common_Set(tanuki_shop_status, mSP_TANUKI_SHOP_STATUS_NORMAL); - } -} - -static u32 mSP_sack_amount[MONEY_NUM] = { - 100, - 1000, - 10000, - 30000 -}; - -static mActor_name_t mSP_itemNo[MONEY_NUM] = { - ITM_MONEY_100, - ITM_MONEY_1000, - ITM_MONEY_10000, - ITM_MONEY_30000 -}; - -extern int mSP_money_check(u32 amount) { - u32 money = Common_Get(now_private)->inventory.wallet; - int res = FALSE; - - if (money < amount) { + int count = 0; + u8* birth_type_p = mRmTp_CheckFtrBirthInfoTop(); int i; - for (i = 0; i < MONEY_NUM; i++) { - int sack_num = mPr_GetPossessionItemSumWithCond(Common_Get(now_private), mSP_itemNo[i], mPr_ITEM_COND_NORMAL); + for (i = 0; i < FTR_NUM; i++) { + if (birth_type_p[0] == birth_type) { + count++; + } - money += sack_num * mSP_sack_amount[i]; - if (money >= amount) { - res = TRUE; - break; - } - } - } - else { - res = TRUE; - } - - return res; -} - -static u32 mSP_get_sell_price_sub(u32 money, u32 amount) { - u32 sack_num; - int i; - - for (i = 0; i < MONEY_NUM; i++) { - for (sack_num = mPr_GetPossessionItemSumWithCond(Common_Get(now_private), mSP_itemNo[i], mPr_ITEM_COND_NORMAL); sack_num != 0; sack_num--) { - int sack_idx = mPr_GetPossessionItemIdxWithCond(Common_Get(now_private), mSP_itemNo[i], mPr_ITEM_COND_NORMAL); - - mPr_SetPossessionItem(Common_Get(now_private), sack_idx, EMPTY_NO, mPr_ITEM_COND_NORMAL); - money += mSP_sack_amount[i]; - - if (money >= amount) { - return money - amount; - } - } - } - - return 0; -} - -extern void mSP_get_sell_price(u32 amount) { - u32 money = Common_Get(now_private)->inventory.wallet; - - if (money < amount) { - money = mSP_get_sell_price_sub(money, amount); - } - else { - money -= amount; - } - - Common_Get(now_private)->inventory.wallet = money; -} - -static int mSP_GetNonePossessionItemCount_InList(mActor_name_t* list, int category, u32* collect_bitfield) { - mActor_name_t* list_p; - - if (list != NULL) { - int count = 0; - - for (list_p = list; list_p[0] != EMPTY_NO; list_p++) { - int collect_idx; - - if (category == mSP_KIND_FURNITURE) { - collect_idx = mRmTp_FtrItemNo2FtrIdx(list_p[0]); - } - else if (category == mSP_KIND_CARPET) { - collect_idx = list_p[0] - ITM_CARPET_START; - } - else { - collect_idx = list_p[0] - ITM_WALL_START; - } - - if (((collect_bitfield[collect_idx >> 5] >> (collect_idx & 0x1F)) & 1) == 0) { - count++; - } + birth_type_p++; } return count; - } +} - return 0; +static mActor_name_t mSP_FtrBirthIdx2ItemNo(u8 birth_type, int birth_idx) { + int count = 0; + u8* birth_type_p = mRmTp_CheckFtrBirthInfoTop(); + int i; + + for (i = 0; i < FTR_NUM; i++) { + if (birth_type_p[0] == birth_type) { + if (count == birth_idx) { + return mRmTp_FtrIdx2FtrItemNo(i, mRmTp_DIRECT_SOUTH); + } + + count++; + } + + birth_type_p++; + } + + return FTR_DINO_TREX_SKULL; +} + +extern mActor_name_t mSP_RandomOneFossilSelect(int multi_fossil) { + u8 birth_type = multi_fossil == FALSE ? mRmTp_BIRTH_TYPE_SINGLE_FOSSIL : mRmTp_BIRTH_TYPE_MULTI_FOSSIL; + int count = mSP_CountBirth(birth_type); + + return mSP_FtrBirthIdx2ItemNo(birth_type, RANDOM(count)); +} + +extern int mSP_Chk_HukubukuroSail() { + lbRTC_time_c rtc_time = Common_Get(time.rtc_time); + lbRTC_year_t year = rtc_time.year; + lbRTC_month_t month = rtc_time.month; + lbRTC_day_t day = rtc_time.day; + + if (month == lbRTC_NOVEMBER) { + int black_friday = lbRTC_Weekly_day(year, lbRTC_NOVEMBER, 4, lbRTC_THURSDAY) + 1; + + if (black_friday == day) { + return TRUE; + } + } + + return FALSE; +} + +extern int mSP_CheckFukubikiDay() { + lbRTC_time_c rtc_time = Common_Get(time.rtc_time); + lbRTC_year_t year = rtc_time.year; + lbRTC_month_t month = rtc_time.month; + lbRTC_day_t day = rtc_time.day; + lbRTC_day_t days_in_month = lbRTC_GetDaysByMonth(year, month); + + return days_in_month == day; +} + +extern int mSP_SetGoods2ReservedPoint(mActor_name_t goods, mActor_name_t reserved_no) { + mActor_name_t* shop_fg = mFI_BkNumtoUtFGTop(0, 0); + int i; + + for (i = 0; i < UT_TOTAL_NUM; i++) { + if (reserved_no == shop_fg[0]) { + mFI_UtNumtoFGSet_common(goods, i % UT_X_NUM, i / UT_X_NUM, FALSE); + return TRUE; + } + + shop_fg++; + } + + return FALSE; +} + +extern int mSP_CheckHallowinDay() { + int res = FALSE; + lbRTC_time_c rtc_time = Common_Get(time.rtc_time); + lbRTC_month_t month = rtc_time.month; + lbRTC_day_t day = rtc_time.day; + + if (month == lbRTC_OCTOBER && day >= 16 && day <= 30) { + res = TRUE; + } + + return res; +} + +extern void mSP_SetTanukiShopStatus() { + if (mSP_ShopOpen() == mSP_SHOP_STATUS_OPENEVENT) { + Common_Set(tanuki_shop_status, mSP_TANUKI_SHOP_STATUS_EVENT); + } else if (mSP_CheckFukubikiDay()) { + Common_Set(tanuki_shop_status, mSP_TANUKI_SHOP_STATUS_FUKUBIKI); + } else if (mSP_Chk_HukubukuroSail()) { + Common_Set(tanuki_shop_status, mSP_TANUKI_SHOP_STATUS_HUKUBUKURO_SALE); + } else if (mSP_CheckHallowinDay()) { + Common_Set(tanuki_shop_status, mSP_TANUKI_SHOP_STATUS_HALLOWEEN); + } else { + Common_Set(tanuki_shop_status, mSP_TANUKI_SHOP_STATUS_NORMAL); + } +} + +static u32 mSP_sack_amount[MONEY_NUM] = { 100, 1000, 10000, 30000 }; + +static mActor_name_t mSP_itemNo[MONEY_NUM] = { ITM_MONEY_100, ITM_MONEY_1000, ITM_MONEY_10000, ITM_MONEY_30000 }; + +extern int mSP_money_check(u32 amount) { + u32 money = Common_Get(now_private)->inventory.wallet; + int res = FALSE; + + if (money < amount) { + int i; + + for (i = 0; i < MONEY_NUM; i++) { + int sack_num = + mPr_GetPossessionItemSumWithCond(Common_Get(now_private), mSP_itemNo[i], mPr_ITEM_COND_NORMAL); + + money += sack_num * mSP_sack_amount[i]; + if (money >= amount) { + res = TRUE; + break; + } + } + } else { + res = TRUE; + } + + return res; +} + +static u32 mSP_get_sell_price_sub(u32 money, u32 amount) { + u32 sack_num; + int i; + + for (i = 0; i < MONEY_NUM; i++) { + for (sack_num = mPr_GetPossessionItemSumWithCond(Common_Get(now_private), mSP_itemNo[i], mPr_ITEM_COND_NORMAL); + sack_num != 0; sack_num--) { + int sack_idx = + mPr_GetPossessionItemIdxWithCond(Common_Get(now_private), mSP_itemNo[i], mPr_ITEM_COND_NORMAL); + + mPr_SetPossessionItem(Common_Get(now_private), sack_idx, EMPTY_NO, mPr_ITEM_COND_NORMAL); + money += mSP_sack_amount[i]; + + if (money >= amount) { + return money - amount; + } + } + } + + return 0; +} + +extern void mSP_get_sell_price(u32 amount) { + u32 money = Common_Get(now_private)->inventory.wallet; + + if (money < amount) { + money = mSP_get_sell_price_sub(money, amount); + } else { + money -= amount; + } + + Common_Get(now_private)->inventory.wallet = money; +} + +static int mSP_GetNonePossessionItemCount_InList(mActor_name_t* list, int category, u32* collect_bitfield) { + mActor_name_t* list_p; + + if (list != NULL) { + int count = 0; + + for (list_p = list; list_p[0] != EMPTY_NO; list_p++) { + int collect_idx; + + if (category == mSP_KIND_FURNITURE) { + collect_idx = mRmTp_FtrItemNo2FtrIdx(list_p[0]); + } else if (category == mSP_KIND_CARPET) { + collect_idx = list_p[0] - ITM_CARPET_START; + } else { + collect_idx = list_p[0] - ITM_WALL_START; + } + + if (((collect_bitfield[collect_idx >> 5] >> (collect_idx & 0x1F)) & 1) == 0) { + count++; + } + } + + return count; + } + + return 0; } static mActor_name_t mSP_GetNonePossessionItem_InList(mActor_name_t* list, int category, u32* collect_bitfield) { - int none_count = mSP_GetNonePossessionItemCount_InList(list, category, collect_bitfield); + int none_count = mSP_GetNonePossessionItemCount_InList(list, category, collect_bitfield); - if (none_count != 0 && list != NULL) { - int selected_idx = RANDOM(none_count); - mActor_name_t* list_p; - int count = 0; + if (none_count != 0 && list != NULL) { + int selected_idx = RANDOM(none_count); + mActor_name_t* list_p; + int count = 0; - for (list_p = list; list_p[0] != EMPTY_NO; list_p++) { - int collect_idx; + for (list_p = list; list_p[0] != EMPTY_NO; list_p++) { + int collect_idx; - if (category == mSP_KIND_FURNITURE) { - collect_idx = mRmTp_FtrItemNo2FtrIdx(list_p[0]); - } - else if (category == mSP_KIND_CARPET) { - collect_idx = list_p[0] - ITM_CARPET_START; - } - else { - collect_idx = list_p[0] - ITM_WALL_START; - } + if (category == mSP_KIND_FURNITURE) { + collect_idx = mRmTp_FtrItemNo2FtrIdx(list_p[0]); + } else if (category == mSP_KIND_CARPET) { + collect_idx = list_p[0] - ITM_CARPET_START; + } else { + collect_idx = list_p[0] - ITM_WALL_START; + } - if (((collect_bitfield[collect_idx >> 5] >> (collect_idx & 0x1F)) & 1) == 0) { - if (selected_idx == count) { - return list_p[0]; + if (((collect_bitfield[collect_idx >> 5] >> (collect_idx & 0x1F)) & 1) == 0) { + if (selected_idx == count) { + return list_p[0]; + } else { + count++; + } + } } - else { - count++; - } - } } - } - return EMPTY_NO; + return EMPTY_NO; } static mActor_name_t mSP_GetNonePossessionItem_InLotteryFurniture(int player_no) { - return mSP_GetNonePossessionItem_InList( - mSP_ftr_list[mSP_LIST_LOTTERY], - mSP_KIND_FURNITURE, - (player_no >= 0 && player_no < PLAYER_NUM) ? - Save_Get(private[player_no]).furniture_collected_bitfield : - Common_Get(now_private)->furniture_collected_bitfield - ); + return mSP_GetNonePossessionItem_InList(mSP_ftr_list[mSP_LIST_LOTTERY], mSP_KIND_FURNITURE, + (player_no >= 0 && player_no < PLAYER_NUM) + ? Save_Get(private_data[player_no]).furniture_collected_bitfield + : Common_Get(now_private)->furniture_collected_bitfield); } static mActor_name_t mSP_GetNonePossessionItem_InEventFurniture(int player_no) { - return mSP_GetNonePossessionItem_InList( - mSP_ftr_list[mSP_LIST_EVENT], - mSP_KIND_FURNITURE, - (player_no >= 0 && player_no < PLAYER_NUM) ? - Save_Get(private[player_no]).furniture_collected_bitfield : - Common_Get(now_private)->furniture_collected_bitfield - ); + return mSP_GetNonePossessionItem_InList(mSP_ftr_list[mSP_LIST_EVENT], mSP_KIND_FURNITURE, + (player_no >= 0 && player_no < PLAYER_NUM) + ? Save_Get(private_data[player_no]).furniture_collected_bitfield + : Common_Get(now_private)->furniture_collected_bitfield); } /* @fabricated @unused */ static mActor_name_t mSP_GetNonePossessionItem_InEventWall(int player_no) { - return mSP_GetNonePossessionItem_InList( - mSP_ftr_list[mSP_LIST_EVENT], - mSP_KIND_WALLPAPER, - (player_no >= 0 && player_no < PLAYER_NUM) ? - Save_Get(private[player_no]).wall_collected_bitfield : - Common_Get(now_private)->wall_collected_bitfield - ); + return mSP_GetNonePossessionItem_InList(mSP_ftr_list[mSP_LIST_EVENT], mSP_KIND_WALLPAPER, + (player_no >= 0 && player_no < PLAYER_NUM) + ? Save_Get(private_data[player_no]).wall_collected_bitfield + : Common_Get(now_private)->wall_collected_bitfield); } /* @fabricated @unused */ static mActor_name_t mSP_GetNonePossessionItem_InEventCarpet(int player_no) { - return mSP_GetNonePossessionItem_InList( - mSP_ftr_list[mSP_LIST_EVENT], - mSP_KIND_CARPET, - (player_no >= 0 && player_no < PLAYER_NUM) ? - Save_Get(private[player_no]).carpet_collected_bitfield : - Common_Get(now_private)->carpet_collected_bitfield - ); + return mSP_GetNonePossessionItem_InList(mSP_ftr_list[mSP_LIST_EVENT], mSP_KIND_CARPET, + (player_no >= 0 && player_no < PLAYER_NUM) + ? Save_Get(private_data[player_no]).carpet_collected_bitfield + : Common_Get(now_private)->carpet_collected_bitfield); } /* @fabricated @unused */ static mActor_name_t mSP_GetNonePossessionItem_InABCFurniture(int player_no) { - // TODO: check this impl is right using func size -- they probably did the list calc in this func itself - u8 abc_priorities[3]; + // TODO: check this impl is right using func size -- they probably did the list calc in this func itself + u8 abc_priorities[3]; - mSP_GetGoodsPriority(abc_priorities, mSP_KIND_FURNITURE); + mSP_GetGoodsPriority(abc_priorities, mSP_KIND_FURNITURE); - return mSP_GetNonePossessionItem_InList( - mSP_GetItemList(mSP_ftr_list, abc_priorities, mSP_LISTTYPE_ABC), - mSP_KIND_FURNITURE, - (player_no >= 0 && player_no < PLAYER_NUM) ? - Save_Get(private[player_no]).furniture_collected_bitfield : - Common_Get(now_private)->furniture_collected_bitfield - ); + return mSP_GetNonePossessionItem_InList( + mSP_GetItemList(mSP_ftr_list, abc_priorities, mSP_LISTTYPE_ABC), mSP_KIND_FURNITURE, + (player_no >= 0 && player_no < PLAYER_NUM) ? Save_Get(private_data[player_no]).furniture_collected_bitfield + : Common_Get(now_private)->furniture_collected_bitfield); } -typedef mActor_name_t (*mSP_GET_NONE_POSSESSION_ITEM_PROC)(int); +typedef mActor_name_t (*mSP_GET_NONE_POSSESSION_ITEM_PROC)(int); -static mActor_name_t mSP_CarryOutAlternativeRandomSelect(mSP_GET_NONE_POSSESSION_ITEM_PROC proc0, mSP_GET_NONE_POSSESSION_ITEM_PROC proc1, int player_no) { - int rng = RANDOM(100); +static mActor_name_t mSP_CarryOutAlternativeRandomSelect(mSP_GET_NONE_POSSESSION_ITEM_PROC proc0, + mSP_GET_NONE_POSSESSION_ITEM_PROC proc1, int player_no) { + int rng = RANDOM(100); - if ((rng & 1)) { - mActor_name_t item = (*proc0)(player_no); + if ((rng & 1)) { + mActor_name_t item = (*proc0)(player_no); - if (item == EMPTY_NO) { - item = (*proc1)(player_no); + if (item == EMPTY_NO) { + item = (*proc1)(player_no); - if (item != EMPTY_NO) { - return item; - } + if (item != EMPTY_NO) { + return item; + } + } else { + return item; + } + } else { + mActor_name_t item = (*proc1)(player_no); + + if (item == EMPTY_NO) { + item = (*proc0)(player_no); + + if (item != EMPTY_NO) { + return item; + } + } else { + return item; + } } - else { - return item; - } - } - else { - mActor_name_t item = (*proc1)(player_no); - if (item == EMPTY_NO) { - item = (*proc0)(player_no); - - if (item != EMPTY_NO) { - return item; - } - } - else { - return item; - } - } - - return EMPTY_NO; + return EMPTY_NO; } static mActor_name_t mSP_CarryOutAlternativeRandomSelect_NoneNULL(int category0, int list0, int category1, int list1) { - int rng = RANDOM(100); - mActor_name_t item; + int rng = RANDOM(100); + mActor_name_t item; - if ((rng & 1)) { - mSP_SelectRandomItem_New(NULL, &item, 1, NULL, 0, category0, list0, FALSE); - return item; - } - else { - mSP_SelectRandomItem_New(NULL, &item, 1, NULL, 0, category1, list1, FALSE); - return item; - } + if ((rng & 1)) { + mSP_SelectRandomItem_New(NULL, &item, 1, NULL, 0, category0, list0, FALSE); + return item; + } else { + mSP_SelectRandomItem_New(NULL, &item, 1, NULL, 0, category1, list1, FALSE); + return item; + } } /* @unused size: 0xB8 */ // extern mActor_name_t mSP_SelectNpcBirthdayPresent(...) static void mSP_SelectNpcBirthdayPresent() { - // necessary to include for data - static int priority[6][3] = { - { mSP_PRIORITY_COMMON, mSP_PRIORITY_UNCOMMON, mSP_PRIORITY_RARE }, - { mSP_PRIORITY_COMMON, mSP_PRIORITY_RARE, mSP_PRIORITY_RARE }, // lol based on this, I think it should've been common, rare, uncommon - { mSP_PRIORITY_UNCOMMON, mSP_PRIORITY_COMMON, mSP_PRIORITY_RARE }, - { mSP_PRIORITY_UNCOMMON, mSP_PRIORITY_RARE, mSP_PRIORITY_COMMON }, - { mSP_PRIORITY_RARE, mSP_PRIORITY_COMMON, mSP_PRIORITY_UNCOMMON }, - { mSP_PRIORITY_RARE, mSP_PRIORITY_UNCOMMON, mSP_PRIORITY_COMMON } - }; + // necessary to include for data + static int priority[6][3] = { + { mSP_PRIORITY_COMMON, mSP_PRIORITY_UNCOMMON, mSP_PRIORITY_RARE }, + { mSP_PRIORITY_COMMON, mSP_PRIORITY_RARE, + mSP_PRIORITY_RARE }, // lol based on this, I think it should've been common, rare, uncommon + { mSP_PRIORITY_UNCOMMON, mSP_PRIORITY_COMMON, mSP_PRIORITY_RARE }, + { mSP_PRIORITY_UNCOMMON, mSP_PRIORITY_RARE, mSP_PRIORITY_COMMON }, + { mSP_PRIORITY_RARE, mSP_PRIORITY_COMMON, mSP_PRIORITY_UNCOMMON }, + { mSP_PRIORITY_RARE, mSP_PRIORITY_UNCOMMON, mSP_PRIORITY_COMMON } + }; } extern mActor_name_t mSP_SelectFishginPresent(int player_no) { - mActor_name_t item = mSP_CarryOutAlternativeRandomSelect(&mSP_GetNonePossessionItem_InLotteryFurniture, &mSP_GetNonePossessionItem_InEventFurniture, player_no); + mActor_name_t item = mSP_CarryOutAlternativeRandomSelect(&mSP_GetNonePossessionItem_InLotteryFurniture, + &mSP_GetNonePossessionItem_InEventFurniture, player_no); - if (item != EMPTY_NO) { - return item; - } + if (item != EMPTY_NO) { + return item; + } - return mSP_CarryOutAlternativeRandomSelect_NoneNULL(mSP_KIND_FURNITURE, mSP_LISTTYPE_LOTTERY, mSP_KIND_FURNITURE, mSP_LISTTYPE_EVENT); + return mSP_CarryOutAlternativeRandomSelect_NoneNULL(mSP_KIND_FURNITURE, mSP_LISTTYPE_LOTTERY, mSP_KIND_FURNITURE, + mSP_LISTTYPE_EVENT); } -mActor_name_t mSP_gc_famicom_table[8] = { - FTR_FAMICOM_CLU_CLU_LAND, - FTR_FAMICOM_BALLOON_FIGHT, - FTR_FAMICOM_DONKEY_KONG, - FTR_FAMICOM_DK_JR_MATCH, - FTR_FAMICOM_PINBALL, - FTR_FAMICOM_TENNIS, - FTR_FAMICOM_GOLF, - FTR_FAMICOM_EXCITEBIKE -}; +mActor_name_t mSP_gc_famicom_table[8] = { FTR_FAMICOM_CLU_CLU_LAND, FTR_FAMICOM_BALLOON_FIGHT, FTR_FAMICOM_DONKEY_KONG, + FTR_FAMICOM_DK_JR_MATCH, FTR_FAMICOM_PINBALL, FTR_FAMICOM_TENNIS, + FTR_FAMICOM_GOLF, FTR_FAMICOM_EXCITEBIKE }; /* @unused size: 0xDC */ // static mActor_name_t mSP_RandomOneFamicomSelect(...) static mActor_name_t mSP_AGBRandomFamicomSelect() { - mActor_name_t item = EMPTY_NO; + mActor_name_t item = EMPTY_NO; - mSP_SelectRandomItem_New(NULL, &item, 1, NULL, 0, mSP_KIND_FURNITURE, mSP_LISTTYPE_ISLANDFAMICOM, FALSE); - return item; + mSP_SelectRandomItem_New(NULL, &item, 1, NULL, 0, mSP_KIND_FURNITURE, mSP_LISTTYPE_ISLANDFAMICOM, FALSE); + return item; } static mActor_name_t mSP_GetRandomTrash() { - static mActor_name_t trash_table[3] = { ITM_DUST0_EMPTY_CAN, ITM_DUST1_BOOT, ITM_DUST2_OLD_TIRE }; + static mActor_name_t trash_table[3] = { ITM_DUST0_EMPTY_CAN, ITM_DUST1_BOOT, ITM_DUST2_OLD_TIRE }; - return trash_table[RANDOM(3)]; + return trash_table[RANDOM(3)]; } static void mSP_SelectRandomItemToAGB_Unit(mActor_name_t* item, xyz_t* wpos, int ut_x, int ut_z) { - switch (item[0]) { - case 0xFEB2: - { - item[0] = mSP_GetRandomTrash(); - break; + switch (item[0]) { + case 0xFEB2: { + item[0] = mSP_GetRandomTrash(); + break; + } + + case 0xFEA1: { + mSP_SelectRandomItem_New(NULL, item, 1, NULL, 0, mSP_KIND_FURNITURE, mSP_LISTTYPE_COMMON, FALSE); + break; + } + + case 0xFEA2: { + mSP_SelectRandomItem_New(NULL, item, 1, NULL, 0, mSP_KIND_FURNITURE, mSP_LISTTYPE_RARE, FALSE); + break; + } + + case 0xFEA3: { + if ((RANDOM(10) & 1)) { + mSP_SelectRandomItem_New(NULL, item, 1, NULL, 0, mSP_KIND_FURNITURE, mSP_LISTTYPE_EVENT, FALSE); + } else { + mSP_SelectRandomItem_New(NULL, item, 1, NULL, 0, mSP_KIND_FURNITURE, mSP_LISTTYPE_LOTTERY, FALSE); + } + + break; + } + + case 0xFEA5: { + mSP_SelectRandomItem_New(NULL, item, 1, NULL, 0, mSP_KIND_FURNITURE, mSP_LISTTYPE_ISLAND, FALSE); + break; + } + + case 0xFEA4: { + item[0] = mSP_AGBRandomFamicomSelect(); + break; + } + + case 0xFEA9: { + mSP_RandomUmbSelect(item, 1); + break; + } + + case 0xFEA6: { + item[0] = mSP_RandomOneFossilSelect((RANDOM(4) & 1)); + break; + } + + case 0xFEA7: { + mSP_RandomMDSelect(item, 1); + break; + } + + case 0xFEA8: { + mSP_RandomHaniwaSelect(item, 1); + break; + } + + case 0xFEAA: { + mSP_SelectRandomItem_New(NULL, item, 1, NULL, 0, mSP_KIND_CARPET, mSP_LISTTYPE_COMMON, FALSE); + break; + } + + case 0xFEAB: { + mSP_SelectRandomItem_New(NULL, item, 1, NULL, 0, mSP_KIND_CARPET, mSP_LISTTYPE_RARE, FALSE); + break; + } + + case 0xFEAC: { + mSP_SelectRandomItem_New(NULL, item, 1, NULL, 0, mSP_KIND_WALLPAPER, mSP_LISTTYPE_COMMON, FALSE); + break; + } + + case 0xFEAD: { + mSP_SelectRandomItem_New(NULL, item, 1, NULL, 0, mSP_KIND_WALLPAPER, mSP_LISTTYPE_RARE, FALSE); + break; + } + + case 0xFEAE: { + mSP_SelectRandomItem_New(NULL, item, 1, NULL, 0, mSP_KIND_CLOTH, mSP_LISTTYPE_COMMON, FALSE); + break; + } + + case 0xFEAF: { + mSP_SelectRandomItem_New(NULL, item, 1, NULL, 0, mSP_KIND_CLOTH, mSP_LISTTYPE_RARE, FALSE); + break; + } + + case 0xFEB0: { + int hole_no = mCoBG_GetHoleNumber(*wpos); + + if (hole_no != -1) { + item[0] = HOLE_START + (mActor_name_t)hole_no; + } else { + item[0] = EMPTY_NO; + } + + break; + } + + case 0xFEB1: { + item[0] = ITM_WHITE_PANSY_BAG + RANDOM(FLOWER_NUM); + break; + } + + case ITM_KABU_10: + case ITM_KABU_50: + case ITM_KABU_100: { + item[0] = ITM_KABU_SPOILED; // spoil any turnips + break; + } + + case 0xF11F: { + item[0] = ACTOR_PROP_VILLAGER_SIGNBOARD; + break; + } } - - case 0xFEA1: - { - mSP_SelectRandomItem_New(NULL, item, 1, NULL, 0, mSP_KIND_FURNITURE, mSP_LISTTYPE_COMMON, FALSE); - break; - } - - case 0xFEA2: - { - mSP_SelectRandomItem_New(NULL, item, 1, NULL, 0, mSP_KIND_FURNITURE, mSP_LISTTYPE_RARE, FALSE); - break; - } - - case 0xFEA3: - { - if ((RANDOM(10) & 1)) { - mSP_SelectRandomItem_New(NULL, item, 1, NULL, 0, mSP_KIND_FURNITURE, mSP_LISTTYPE_EVENT, FALSE); - } - else { - mSP_SelectRandomItem_New(NULL, item, 1, NULL, 0, mSP_KIND_FURNITURE, mSP_LISTTYPE_LOTTERY, FALSE); - } - - break; - } - - case 0xFEA5: - { - mSP_SelectRandomItem_New(NULL, item, 1, NULL, 0, mSP_KIND_FURNITURE, mSP_LISTTYPE_ISLAND, FALSE); - break; - } - - case 0xFEA4: - { - item[0] = mSP_AGBRandomFamicomSelect(); - break; - } - - case 0xFEA9: - { - mSP_RandomUmbSelect(item, 1); - break; - } - - case 0xFEA6: - { - item[0] = mSP_RandomOneFossilSelect((RANDOM(4) & 1)); - break; - } - - case 0xFEA7: - { - mSP_RandomMDSelect(item, 1); - break; - } - - case 0xFEA8: - { - mSP_RandomHaniwaSelect(item, 1); - break; - } - - case 0xFEAA: - { - mSP_SelectRandomItem_New(NULL, item, 1, NULL, 0, mSP_KIND_CARPET, mSP_LISTTYPE_COMMON, FALSE); - break; - } - - case 0xFEAB: - { - mSP_SelectRandomItem_New(NULL, item, 1, NULL, 0, mSP_KIND_CARPET, mSP_LISTTYPE_RARE, FALSE); - break; - } - - case 0xFEAC: - { - mSP_SelectRandomItem_New(NULL, item, 1, NULL, 0, mSP_KIND_WALLPAPER, mSP_LISTTYPE_COMMON, FALSE); - break; - } - - case 0xFEAD: - { - mSP_SelectRandomItem_New(NULL, item, 1, NULL, 0, mSP_KIND_WALLPAPER, mSP_LISTTYPE_RARE, FALSE); - break; - } - - case 0xFEAE: - { - mSP_SelectRandomItem_New(NULL, item, 1, NULL, 0, mSP_KIND_CLOTH, mSP_LISTTYPE_COMMON, FALSE); - break; - } - - case 0xFEAF: - { - mSP_SelectRandomItem_New(NULL, item, 1, NULL, 0, mSP_KIND_CLOTH, mSP_LISTTYPE_RARE, FALSE); - break; - } - - case 0xFEB0: - { - int hole_no = mCoBG_GetHoleNumber(*wpos); - - if (hole_no != -1) { - item[0] = HOLE_START + (mActor_name_t)hole_no; - } - else { - item[0] = EMPTY_NO; - } - - break; - } - - case 0xFEB1: - { - item[0] = ITM_WHITE_PANSY_BAG + RANDOM(FLOWER_NUM); - break; - } - - case ITM_KABU_10: - case ITM_KABU_50: - case ITM_KABU_100: - { - item[0] = ITM_KABU_SPOILED; // spoil any turnips - break; - } - - case 0xF11F: - { - item[0] = ACTOR_PROP_VILLAGER_SIGNBOARD; - break; - } - } } #ifndef MUST_MATCH /* @nonmatching - minor float load/store issue with xyz_t.z & weird scheduling issue */ extern void mSP_SelectRandomItemToAGB() { - int i; - int ut_x; - int ut_z; - xyz_t* wpos_p; - mActor_name_t* start_p; - mActor_name_t* item_p; - f32 x_pos; + int i; + int ut_x; + int ut_z; + xyz_t* wpos_p; + mActor_name_t* start_p; + mActor_name_t* item_p; + f32 x_pos; - xyz_t wpos = { 0.0f, 0.0f, 0.0f }; - int bx = 0; - int bz = 0; + xyz_t wpos = { 0.0f, 0.0f, 0.0f }; + int bx = 0; + int bz = 0; - mFI_BlockKind2BkNum(&bx, &bz, mRF_BLOCKKIND_ISLAND_LEFT); + mFI_BlockKind2BkNum(&bx, &bz, mRF_BLOCKKIND_ISLAND_LEFT); - /* convert all unit island items to valid items */ - for (i = 0; i < mISL_FG_BLOCK_X_NUM; i++) { - item_p = &Save_Get(island).fgblock[0][i].items[0][0]; - - mFI_BkNum2WposXZ(&wpos.x, &wpos.z, bx + i, bz); - wpos.x += mFI_UT_WORLDSIZE_HALF_X_F; - wpos.z += mFI_UT_WORLDSIZE_HALF_Z_F; - x_pos = wpos.x; + /* convert all unit island items to valid items */ + for (i = 0; i < mISL_FG_BLOCK_X_NUM; i++) { + item_p = &Save_Get(island).fgblock[0][i].items[0][0]; - for (ut_z = 0; ut_z < UT_Z_NUM; ut_z++) { - wpos.x = x_pos; + mFI_BkNum2WposXZ(&wpos.x, &wpos.z, bx + i, bz); + wpos.x += mFI_UT_WORLDSIZE_HALF_X_F; + wpos.z += mFI_UT_WORLDSIZE_HALF_Z_F; + x_pos = wpos.x; - for (ut_x = 0; ut_x < UT_X_NUM; ut_x++) { - // this matches instructions but out of order and wrong registers - mSP_SelectRandomItemToAGB_Unit(item_p, &wpos, ut_x, ut_z); - wpos.x += mFI_UT_WORLDSIZE_X_F; - item_p++; - } + for (ut_z = 0; ut_z < UT_Z_NUM; ut_z++) { + wpos.x = x_pos; - wpos.z += mFI_UT_WORLDSIZE_Z_F; - } - } + for (ut_x = 0; ut_x < UT_X_NUM; ut_x++) { + // this matches instructions but out of order and wrong registers + mSP_SelectRandomItemToAGB_Unit(item_p, &wpos, ut_x, ut_z); + wpos.x += mFI_UT_WORLDSIZE_X_F; + item_p++; + } - /* add correctly placed signboard actor */ - for (i = 0; i < mISL_FG_BLOCK_X_NUM; i++) { - start_p = &Save_Get(island).fgblock[0][i].items[0][0]; - item_p = &Save_Get(island).fgblock[0][i].items[0][0]; - - for (ut_z = 0; ut_z < UT_Z_NUM; ut_z++) { - for (ut_x = 0; ut_x < UT_X_NUM; ut_x++) { - if (item_p[0] == COTTAGE_NPC) { - start_p[((ut_x - 1) & 15) + (((ut_z + 1) & 0xF) << 4)] = ACTOR_PROP_VILLAGER_SIGNBOARD; + wpos.z += mFI_UT_WORLDSIZE_Z_F; } - - item_p++; - } } - } - /* remove incorrectly placed signboard actors */ - for (i = 0; i < mISL_FG_BLOCK_X_NUM; i++) { - start_p = &Save_Get(island).fgblock[0][i].items[0][0]; - item_p = &Save_Get(island).fgblock[0][i].items[0][0]; + /* add correctly placed signboard actor */ + for (i = 0; i < mISL_FG_BLOCK_X_NUM; i++) { + start_p = &Save_Get(island).fgblock[0][i].items[0][0]; + item_p = &Save_Get(island).fgblock[0][i].items[0][0]; - for (ut_z = 0; ut_z < UT_Z_NUM; ut_z++) { - for (ut_x = 0; ut_x < UT_X_NUM; ut_x++) { - if (item_p[0] == ACTOR_PROP_VILLAGER_SIGNBOARD && start_p[((ut_x + 1) & 15) + (((ut_z - 1) & 0xF) << 4)] != COTTAGE_NPC) { - item_p[0] = EMPTY_NO; + for (ut_z = 0; ut_z < UT_Z_NUM; ut_z++) { + for (ut_x = 0; ut_x < UT_X_NUM; ut_x++) { + if (item_p[0] == COTTAGE_NPC) { + start_p[((ut_x - 1) & 15) + (((ut_z + 1) & 0xF) << 4)] = ACTOR_PROP_VILLAGER_SIGNBOARD; + } + + item_p++; + } + } + } + + /* remove incorrectly placed signboard actors */ + for (i = 0; i < mISL_FG_BLOCK_X_NUM; i++) { + start_p = &Save_Get(island).fgblock[0][i].items[0][0]; + item_p = &Save_Get(island).fgblock[0][i].items[0][0]; + + for (ut_z = 0; ut_z < UT_Z_NUM; ut_z++) { + for (ut_x = 0; ut_x < UT_X_NUM; ut_x++) { + if (item_p[0] == ACTOR_PROP_VILLAGER_SIGNBOARD && + start_p[((ut_x + 1) & 15) + (((ut_z - 1) & 0xF) << 4)] != COTTAGE_NPC) { + item_p[0] = EMPTY_NO; + } + + item_p++; + } } - - item_p++; - } } - } } #else -const xyz_t lbl_806432b4 = {0.0f, 0.0f, 0.0f}; +const xyz_t lbl_806432b4 = { 0.0f, 0.0f, 0.0f }; REL_SYMBOL_AT(lbl_806432b4, 0x806432b4) #include "orderfloats/806432c0_806432c8.inc" extern asm void mSP_SelectRandomItemToAGB() { - #include "asm/803ebb44.s" +#include "asm/803ebb44.s" } #endif extern const char* mSP_ShopStatus2String(int status) { - static char dummy[] = "hahaha"; + static char dummy[] = "hahaha"; - static char* str_table[mSP_SHOP_STATUS_NUM] = { - "Pre", - "End", - "Opn", - "Rnw", - "PreEv", - "EndEv", - "OpnEv" - }; + static char* str_table[mSP_SHOP_STATUS_NUM] = { "Pre", "End", "Opn", "Rnw", "PreEv", "EndEv", "OpnEv" }; - if (status >= 0 && status < mSP_SHOP_STATUS_NUM) { - return str_table[status]; - } + if (status >= 0 && status < mSP_SHOP_STATUS_NUM) { + return str_table[status]; + } - return dummy; + return dummy; } extern mActor_name_t mSP_GetRandomStationToyItemNo() { - /* TODO: where does this go? DnM+ indicates no unused functions after this, but data appears after str_table in mSP_ShopStatus2String */ - static mActor_name_t train[2] = { - FTR_LOCOMOTIVE_MODEL, FTR_TRAIN_CAR_MODEL - }; + /* TODO: where does this go? DnM+ indicates no unused functions after this, but data appears after str_table in + * mSP_ShopStatus2String */ + static mActor_name_t train[2] = { FTR_LOCOMOTIVE_MODEL, FTR_TRAIN_CAR_MODEL }; - /* TODO: furniture item index enum/defines */ - return mRmTp_FtrIdx2FtrItemNo(0x42A + RANDOM(15), mRmTp_DIRECT_SOUTH); + /* TODO: furniture item index enum/defines */ + return mRmTp_FtrIdx2FtrItemNo(0x42A + RANDOM(15), mRmTp_DIRECT_SOUTH); } #include "../src/m_item_debug.c" diff --git a/src/m_start_data_init.c b/src/m_start_data_init.c index 9826b687..2ba4bcdc 100644 --- a/src/m_start_data_init.c +++ b/src/m_start_data_init.c @@ -183,7 +183,7 @@ static int mSDI_StartInitNew(GAME* game, int player_no, int malloc_flag) { osSyncPrintf("player no -- %d\n", player_no); Common_Set(player_no, player_no); - priv = Save_GetPointer(private[player_no]); + priv = Save_GetPointer(private_data[player_no]); Common_Set(now_private, priv); priv->gender = mPr_SEX_MALE; decide_fruit(Save_GetPointer(fruit)); @@ -211,7 +211,7 @@ static int mSDI_StartInitNew(GAME* game, int player_no, int malloc_flag) { /* Tree -> Cedar Tree */ mAGrw_ChangeTree2Cedar(); - priv_p = Save_Get(private); + priv_p = Save_Get(private_data); mMld_SetDefaultMelody(); mLd_LandDataInit(); @@ -292,7 +292,7 @@ static int mSDI_StartInitFrom(GAME* game, int player_no, int malloc_flag) { lbRTC_GetTime(Common_GetPointer(time.rtc_time)); if (mFRm_CheckSaveData() == TRUE) { - Private_c* priv = Save_Get(private + player_no); + Private_c* priv = Save_Get(private_data + player_no); if (mPr_CheckPrivate(priv) == TRUE) { @@ -349,7 +349,7 @@ static int mSDI_StartInitNewPlayer(GAME* game, int player_no, int malloc_flag) { lbRTC_GetTime(Common_GetPointer(time.rtc_time)); if (mFRm_CheckSaveData() == TRUE) { - Private_c* priv = Save_Get(private + player_no); + Private_c* priv = Save_Get(private_data + player_no); if (mPr_CheckPrivate(priv) != TRUE) { mPr_InitPrivateInfo(priv); diff --git a/src/m_trademark.c b/src/m_trademark.c index 5aa469ae..25773177 100644 --- a/src/m_trademark.c +++ b/src/m_trademark.c @@ -34,388 +34,328 @@ static int mTR_first_flag = TRUE; -static Door_data_c demo_1_door_data = { - SCENE_TITLE_DEMO, - 4, - FALSE, - 0, - { 2180, 200, 824 }, - EMPTY_NO, - 3, - {0,0,0} -}; +static Door_data_c demo_1_door_data = { SCENE_TITLE_DEMO, 4, FALSE, 0, { 2180, 200, 824 }, EMPTY_NO, 3, { 0, 0, 0 } }; -static Door_data_c demo_2_door_data = { - SCENE_TITLE_DEMO, - 4, - FALSE, - 0, - { 3218, 40, 3074 }, - EMPTY_NO, - 3, - {0,0,0} -}; +static Door_data_c demo_2_door_data = { SCENE_TITLE_DEMO, 4, FALSE, 0, { 3218, 40, 3074 }, EMPTY_NO, 3, { 0, 0, 0 } }; -static Door_data_c demo_3_door_data = { - SCENE_TITLE_DEMO, - 4, - FALSE, - 0, - { 2117, 160, 1488 }, - EMPTY_NO, - 3, - {0,0,0} -}; +static Door_data_c demo_3_door_data = { SCENE_TITLE_DEMO, 4, FALSE, 0, { 2117, 160, 1488 }, EMPTY_NO, 3, { 0, 0, 0 } }; -static Door_data_c demo_4_door_data = { - SCENE_TITLE_DEMO, - 4, - FALSE, - 0, - { 2899, 160, 1101 }, - EMPTY_NO, - 3, - {0,0,0} -}; +static Door_data_c demo_4_door_data = { SCENE_TITLE_DEMO, 4, FALSE, 0, { 2899, 160, 1101 }, EMPTY_NO, 3, { 0, 0, 0 } }; -static Door_data_c demo_5_door_data = { - SCENE_TITLE_DEMO, - 4, - FALSE, - 0, - { 1578, 40, 2472 }, - EMPTY_NO, - 3, - {0,0,0} -}; +static Door_data_c demo_5_door_data = { SCENE_TITLE_DEMO, 4, FALSE, 0, { 1578, 40, 2472 }, EMPTY_NO, 3, { 0, 0, 0 } }; -static Door_data_c* l_demo_door_data_table[mTD_TITLE_DEMO_NUM] = { - &demo_1_door_data, - &demo_2_door_data, - &demo_3_door_data, - &demo_4_door_data, - &demo_5_door_data -}; +static Door_data_c* l_demo_door_data_table[mTD_TITLE_DEMO_NUM] = { &demo_1_door_data, &demo_2_door_data, + &demo_3_door_data, &demo_4_door_data, + &demo_5_door_data }; -#define DEMO_NPC(name, bx, bz, utx, utz) { NPC_##name, (bx), (bz), (utx), (utz) } +#define DEMO_NPC(name, bx, bz, utx, utz) \ + { NPC_##name, (bx), (bz), (utx), (utz) } static mNpc_demo_npc_c demo_npc_list[] = { - DEMO_NPC(BOB, 1, 2, 3, 7), - DEMO_NPC(PAOLO, 1, 2, 8, 11), - DEMO_NPC(VESTA, 1, 4, 12, 11), - DEMO_NPC(JOEY, 2, 3, 5, 6), - DEMO_NPC(LOBO, 2, 3, 4, 12), - DEMO_NPC(CARRIE, 3, 5, 11, 5), - DEMO_NPC(TANK, 4, 3, 3, 12), - DEMO_NPC(BUZZ, 4, 4, 3, 4), - DEMO_NPC(RASHER, 4, 4, 12, 13), - DEMO_NPC(BIFF, 4, 6, 5, 6), - DEMO_NPC(SAMSON, 5, 2, 12, 4), - DEMO_NPC(JANE, 5, 2, 9, 11), - DEMO_NPC(TYBALT, 5, 4, 11, 4), - /* @BUG - mNpc_SetAnimalTitleDemo uses ANIMAL_NUM_MAX (15) but only 14 are set */ - #ifndef BUGFIXES - DEMO_NPC(CUBE, 5, 5, 5, 11) - #else - DEMO_NPC(CUBE, 5, 5, 5, 11), - { EMPTY_NO, 0, 0, 0, 0 } - #endif + DEMO_NPC(BOB, 1, 2, 3, 7), DEMO_NPC(PAOLO, 1, 2, 8, 11), DEMO_NPC(VESTA, 1, 4, 12, 11), + DEMO_NPC(JOEY, 2, 3, 5, 6), DEMO_NPC(LOBO, 2, 3, 4, 12), DEMO_NPC(CARRIE, 3, 5, 11, 5), + DEMO_NPC(TANK, 4, 3, 3, 12), DEMO_NPC(BUZZ, 4, 4, 3, 4), DEMO_NPC(RASHER, 4, 4, 12, 13), + DEMO_NPC(BIFF, 4, 6, 5, 6), DEMO_NPC(SAMSON, 5, 2, 12, 4), DEMO_NPC(JANE, 5, 2, 9, 11), + DEMO_NPC(TYBALT, 5, 4, 11, 4), +/* @BUG - mNpc_SetAnimalTitleDemo uses ANIMAL_NUM_MAX (15) but only 14 are set */ +#ifndef BUGFIXES + DEMO_NPC(CUBE, 5, 5, 5, 11) +#else + DEMO_NPC(CUBE, 5, 5, 5, 11), { EMPTY_NO, 0, 0, 0, 0 } +#endif }; static int demo_npc_num = sizeof(demo_npc_list) / sizeof(mNpc_demo_npc_c); static int set_npc_4_title_demo(GAME_TRADEMARK* trademark) { - Animal_c* animals = Save_Get(animals); - - mNpc_SetAnimalTitleDemo(demo_npc_list, animals, (GAME*)trademark); - mNpc_SetNpcList(Common_Get(npclist), animals, demo_npc_num, 0); + Animal_c* animals = Save_Get(animals); - return demo_npc_num; + mNpc_SetAnimalTitleDemo(demo_npc_list, animals, (GAME*)trademark); + mNpc_SetNpcList(Common_Get(npclist), animals, demo_npc_num, 0); + + return demo_npc_num; } typedef struct tradeday_s { - lbRTC_month_t month; - lbRTC_day_t day; - lbRTC_hour_t hour; - s16 weather; + lbRTC_month_t month; + lbRTC_day_t day; + lbRTC_hour_t hour; + s16 weather; } mTM_tradeday_c; static void mTM_demotime_set(int title_no) { - static mTM_tradeday_c tradeday_table[] = { - { lbRTC_APRIL, 6, 13, mEnv_WEATHER_SAKURA }, /* April 6th @ 1pm, Cherry Blossoms */ - { lbRTC_JUNE, 16, 13, mEnv_WEATHER_RAIN }, /* June 16th @ 1pm, Raining */ - { lbRTC_AUGUST, 1, 6, mEnv_WEATHER_CLEAR }, /* August 1st @ 6am, Clear */ - { lbRTC_NOVEMBER, 1, 16, mEnv_WEATHER_CLEAR }, /* November 1st @ 4pm, Clear */ - { lbRTC_FEBRUARY, 1, 2, mEnv_WEATHER_SNOW } /* February 1st @ 2am, Snowing */ - }; + static mTM_tradeday_c tradeday_table[] = { + { lbRTC_APRIL, 6, 13, mEnv_WEATHER_SAKURA }, /* April 6th @ 1pm, Cherry Blossoms */ + { lbRTC_JUNE, 16, 13, mEnv_WEATHER_RAIN }, /* June 16th @ 1pm, Raining */ + { lbRTC_AUGUST, 1, 6, mEnv_WEATHER_CLEAR }, /* August 1st @ 6am, Clear */ + { lbRTC_NOVEMBER, 1, 16, mEnv_WEATHER_CLEAR }, /* November 1st @ 4pm, Clear */ + { lbRTC_FEBRUARY, 1, 2, mEnv_WEATHER_SNOW } /* February 1st @ 2am, Snowing */ + }; - Common_Set(time.rtc_enabled, FALSE); - Common_Set(time.rtc_time.year, GAME_YEAR_MIN + 1); - Common_Set(time.rtc_time.min, 0); + Common_Set(time.rtc_enabled, FALSE); + Common_Set(time.rtc_time.year, GAME_YEAR_MIN + 1); + Common_Set(time.rtc_time.min, 0); - if (title_no != 0) { - Common_Set(time.rtc_time.month, tradeday_table[(title_no - 1)].month); - Common_Set(time.rtc_time.day, tradeday_table[(title_no - 1)].day); - Common_Set(time.rtc_time.hour, tradeday_table[(title_no - 1)].hour); - Common_Set(weather, tradeday_table[(title_no - 1)].weather); - } + if (title_no != 0) { + Common_Set(time.rtc_time.month, tradeday_table[(title_no - 1)].month); + Common_Set(time.rtc_time.day, tradeday_table[(title_no - 1)].day); + Common_Set(time.rtc_time.hour, tradeday_table[(title_no - 1)].hour); + Common_Set(weather, tradeday_table[(title_no - 1)].weather); + } } static void trademark_goto_demo_scene(GAME_TRADEMARK* trademark) { - int demo_no; - int i; - Private_c* n_private; - Save_t* save; - Private_c* private; + int demo_no; + int i; + Private_c* n_private; + Save_t* save; + Private_c* private; - save = Common_GetPointer(save.save); - mCPk_InitPak(0); - n_private = Save_Get(private); - Common_Set(now_private, n_private); + save = Common_GetPointer(save.save); + mCPk_InitPak(0); + n_private = Save_Get(private_data); + Common_Set(now_private, n_private); - if (mFRm_CheckSaveData() == FALSE) { - bzero(save, sizeof(Save_t)); - mFRm_ClearSaveCheckData(Save_GetPointer(save_check)); + if (mFRm_CheckSaveData() == FALSE) { + bzero(save, sizeof(Save_t)); + mFRm_ClearSaveCheckData(Save_GetPointer(save_check)); - private = n_private; - for (i = 0; i < PLAYER_NUM; i++) { - mPr_ClearPrivateInfo(private); - private++; + private = n_private; + for (i = 0; i < PLAYER_NUM; i++) { + mPr_ClearPrivateInfo(private); + private++; + } + + Save_Set(land_info.exists, TRUE); + Common_Set(house_owner_name, RSV_NO); + Common_Set(last_field_id, -1); } - Save_Set(land_info.exists, TRUE); - Common_Set(house_owner_name, RSV_NO); - Common_Set(last_field_id, -1); - } + mEv_ClearEventInfo(); - mEv_ClearEventInfo(); + demo_no = mEv_CheckTitleDemo(); + if (demo_no > 0) { + Door_data_c* demo_door_data = l_demo_door_data_table[demo_no - 1]; - demo_no = mEv_CheckTitleDemo(); - if (demo_no > 0) { - Door_data_c* demo_door_data = l_demo_door_data_table[demo_no - 1]; + Common_Set(door_data, *demo_door_data); + Common_Set(door_data.next_scene_id, demo_door_data->next_scene_id + 1); // go to next demo scene + mTM_demotime_set(demo_no); // set demo date, time, and weather + mPr_RandomSetPlayerData_title_demo(); // randomize player data + set_npc_4_title_demo(trademark); // set animals in the demo + Common_Set(transition.wipe_type, 3); + } - Common_Set(door_data, *demo_door_data); - Common_Set(door_data.next_scene_id, demo_door_data->next_scene_id + 1); // go to next demo scene - mTM_demotime_set(demo_no); // set demo date, time, and weather - mPr_RandomSetPlayerData_title_demo(); // randomize player data - set_npc_4_title_demo(trademark); // set animals in the demo - Common_Set(transition.wipe_type, 3); - } - - Save_Set(scene_no, SCENE_TITLE_DEMO); - mTM_set_season(); - Common_Set(submenu_disabled, TRUE); - GAME_GOTO_NEXT((GAME*)trademark, play, PLAY); + Save_Set(scene_no, SCENE_TITLE_DEMO); + mTM_set_season(); + Common_Set(submenu_disabled, TRUE); + GAME_GOTO_NEXT((GAME*)trademark, play, PLAY); } static void nintendo_logo_move(GAME_TRADEMARK* trademark) { - int timer; - int alpha2; - if (trademark->stage == 2) { - alpha2 = trademark->alpha2; - alpha2 += 0x880; - if (alpha2 >= 0xFF00) { - trademark->stage = 4; - alpha2 = 0xFF00; - } + int timer; + int alpha2; + if (trademark->stage == 2) { + alpha2 = trademark->alpha2; + alpha2 += 0x880; + if (alpha2 >= 0xFF00) { + trademark->stage = 4; + alpha2 = 0xFF00; + } - trademark->alpha2 = alpha2; - } - else if (trademark->stage == 4) { - if (trademark->logo_timer == 0) { - timer = 0; - } - else { - timer = --trademark->logo_timer; - } + trademark->alpha2 = alpha2; + } else if (trademark->stage == 4) { + if (trademark->logo_timer == 0) { + timer = 0; + } else { + timer = --trademark->logo_timer; + } - if (timer == 0) { - trademark->stage = 3; + if (timer == 0) { + trademark->stage = 3; + } } - } } static void nintendo_logo_draw(GAME_TRADEMARK* trademark) { - Gfx* gfx; - GRAPH* g = trademark->game.graph; - u8 a; + Gfx* gfx; + GRAPH* g = trademark->game.graph; + u8 a; - OPEN_DISP(g); - nintendo_logo_move(trademark); - gfx = NOW_POLY_OPA_DISP; - a = trademark->alpha2 >> 8; - make_dl_nintendo_logo(&gfx, a); - SET_POLY_OPA_DISP(gfx); - CLOSE_DISP(g); + OPEN_DISP(g); + nintendo_logo_move(trademark); + gfx = NOW_POLY_OPA_DISP; + a = trademark->alpha2 >> 8; + make_dl_nintendo_logo(&gfx, a); + SET_POLY_OPA_DISP(gfx); + CLOSE_DISP(g); } static void trademark_cancel(GAME_TRADEMARK* trademark) { - if (trademark->cancel != FALSE) { - return; - } + if (trademark->cancel != FALSE) { + return; + } - if (trademark->stage != 4) { - return; - } + if (trademark->stage != 4) { + return; + } - if (Common_Get(pad_connected) == FALSE) { - return; - } + if (Common_Get(pad_connected) == FALSE) { + return; + } - if ((gamePT->pads[0].on.button & BUTTON_START) != BUTTON_START) { - return; - } + if ((gamePT->pads[0].on.button & BUTTON_START) != BUTTON_START) { + return; + } - trademark->cancel = TRUE; + trademark->cancel = TRUE; } static void trademark_move(GAME_TRADEMARK* trademark) { - static u8 s_titlebgm[mTD_TITLE_DEMO_NUM] = { 83, 84, 85, 86, 87 }; // TODO: convert to enum/definitions + static u8 s_titlebgm[mTD_TITLE_DEMO_NUM] = { 83, 84, 85, 86, 87 }; // TODO: convert to enum/definitions - if (trademark->stage == 0) { - int titledemo_no = mTD_get_titledemo_no(); - mBGMPsComp_make_ps_lost_fanfare(s_titlebgm[titledemo_no], 360); - trademark->alpha = 0; - trademark->stage = 1; - } - - if (trademark->stage == 1) { - int move_timer; - if (trademark->move_timer == 0) { - move_timer = 0; - } - else { - move_timer = --trademark->move_timer; + if (trademark->stage == 0) { + int titledemo_no = mTD_get_titledemo_no(); + mBGMPsComp_make_ps_lost_fanfare(s_titlebgm[titledemo_no], 360); + trademark->alpha = 0; + trademark->stage = 1; } - if (move_timer == 0) { - trademark->stage = 2; - } - } + if (trademark->stage == 1) { + int move_timer; + if (trademark->move_timer == 0) { + move_timer = 0; + } else { + move_timer = --trademark->move_timer; + } - if (trademark->stage == 3 || trademark->cancel) { - if (trademark->alpha < 0xFF00) { - trademark->alpha += 0x880; + if (move_timer == 0) { + trademark->stage = 2; + } } - if (trademark->check != TRUE) { - trademark->check = TRUE; - } + if (trademark->stage == 3 || trademark->cancel) { + if (trademark->alpha < 0xFF00) { + trademark->alpha += 0x880; + } - if (trademark->alpha >= 0xFF00 && trademark->check == TRUE) { - trademark->alpha = 0xFF00; - trademark->stage = 5; + if (trademark->check != TRUE) { + trademark->check = TRUE; + } + + if (trademark->alpha >= 0xFF00 && trademark->check == TRUE) { + trademark->alpha = 0xFF00; + trademark->stage = 5; + } } - } } static void trademark_draw(GAME_TRADEMARK* trademark) { - GRAPH* g = trademark->game.graph; - Gfx* gfx; - - OPEN_DISP(g); + GRAPH* g = trademark->game.graph; + Gfx* gfx; - gSPSegment(NOW_POLY_OPA_DISP++, 0, 0); - DisplayList_initialize(g, 0, 0, 0, NULL); - if (mTR_first_flag == FALSE) { - if (trademark->stage >= 2) { - nintendo_logo_draw(trademark); + OPEN_DISP(g); + + gSPSegment(NOW_POLY_OPA_DISP++, 0, 0); + DisplayList_initialize(g, 0, 0, 0, NULL); + if (mTR_first_flag == FALSE) { + if (trademark->stage >= 2) { + nintendo_logo_draw(trademark); + } + + gfx = NOW_POLY_XLU_DISP; + fade_black_draw(&gfx, trademark->alpha >> 8); + SET_POLY_XLU_DISP(gfx); } - gfx = NOW_POLY_XLU_DISP; - fade_black_draw(&gfx, trademark->alpha >> 8); - SET_POLY_XLU_DISP(gfx); - } - - CLOSE_DISP(g); + CLOSE_DISP(g); } static void trademark_main(GAME* game) { - GAME_TRADEMARK* trademark = (GAME_TRADEMARK*)game; - GRAPH* g; + GAME_TRADEMARK* trademark = (GAME_TRADEMARK*)game; + GRAPH* g; - fqrand(); /* increment qrand seed every frame */ - trademark_cancel(trademark); - trademark_move(trademark); - trademark_draw(trademark); + fqrand(); /* increment qrand seed every frame */ + trademark_cancel(trademark); + trademark_move(trademark); + trademark_draw(trademark); - g = game->graph; - game_debug_draw_last(game, g); - game_draw_last(g); + g = game->graph; + game_debug_draw_last(game, g); + game_draw_last(g); - if (trademark->stage == 5) { - trademark->stage = 0; - trademark_goto_demo_scene(trademark); - mTR_first_flag = FALSE; - } + if (trademark->stage == 5) { + trademark->stage = 0; + trademark_goto_demo_scene(trademark); + mTR_first_flag = FALSE; + } } extern void trademark_cleanup(GAME* game) { - GAME_TRADEMARK* trademark = (GAME_TRADEMARK*)game; - mHm_hs_c* home = Save_Get(homes); - int i; + GAME_TRADEMARK* trademark = (GAME_TRADEMARK*)game; + mHm_hs_c* home = Save_Get(homes); + int i; - for (i = 0; i < PLAYER_NUM; i++) { - home->outlook_pal = i; - home->next_outlook_pal = i; + for (i = 0; i < PLAYER_NUM; i++) { + home->outlook_pal = i; + home->next_outlook_pal = i; - mMl_clear_mail_box(home->mailbox, HOME_MAILBOX_SIZE); - home++; - } + mMl_clear_mail_box(home->mailbox, HOME_MAILBOX_SIZE); + home++; + } - JW_SetLogoMode(0); - SoftResetEnable = TRUE; + JW_SetLogoMode(0); + SoftResetEnable = TRUE; } extern void trademark_init(GAME* game) { - GAME_TRADEMARK* trademark = (GAME_TRADEMARK*)game; - GRAPH* g = game->graph; + GAME_TRADEMARK* trademark = (GAME_TRADEMARK*)game; + GRAPH* g = game->graph; - common_data_reinit(); - mFI_SetClimate(mFI_CLIMATE_0); - game->exec = &trademark_main; - game->cleanup = &trademark_cleanup; - initView(&trademark->view, g); - new_Matrix(game); - trademark->alpha = 0xFF00; - trademark->alpha2 = 0; - trademark->logo_timer = 60; - trademark->move_timer = 16; - trademark->unused_254 = 0; - trademark->unused_210 = 0; - trademark->stage = 0; - trademark->unused_200.x = 0.0f; - trademark->unused_200.y = 0.0f; - trademark->unused_200.z = 0.0f; - trademark->unused_20c = 0.5f; - trademark->unused_25a62 = 0; - trademark->unused_25a64 = 5072; - trademark->unused_25a67 = 0; - trademark->cancel = FALSE; - trademark->check = FALSE; + common_data_reinit(); + mFI_SetClimate(mFI_CLIMATE_0); + game->exec = &trademark_main; + game->cleanup = &trademark_cleanup; + initView(&trademark->view, g); + new_Matrix(game); + trademark->alpha = 0xFF00; + trademark->alpha2 = 0; + trademark->logo_timer = 60; + trademark->move_timer = 16; + trademark->unused_254 = 0; + trademark->unused_210 = 0; + trademark->stage = 0; + trademark->unused_200.x = 0.0f; + trademark->unused_200.y = 0.0f; + trademark->unused_200.z = 0.0f; + trademark->unused_20c = 0.5f; + trademark->unused_25a62 = 0; + trademark->unused_25a64 = 5072; + trademark->unused_25a67 = 0; + trademark->cancel = FALSE; + trademark->check = FALSE; - if (mTR_first_flag) { - trademark->stage = 5; - } + if (mTR_first_flag) { + trademark->stage = 5; + } - SetGameFrame(1); - viBlack(FALSE); - JW_SetLogoMode(1); - mMsg_aram_init(); + SetGameFrame(1); + viBlack(FALSE); + JW_SetLogoMode(1); + mMsg_aram_init(); - Common_Set(player_no, 0); - Common_Set(player_data_mode, 0); - Common_Set(scene_from_title_demo, -1); - mNpc_ClearCacheName(); - mNpc_ClearInAnimal(); - mNpc_FirstClearGoodbyMail(); - mQst_ClearGrabItemInfo(); - mNpc_ClearIslandNpcRoomData(); - mCD_InitAll(); - mISL_ClearKeepIsland(); - mBI_ct(); - mFont_ct(); - mBGMPsComp_scene_mode(0); - mVibctl_init0(); - mFRm_clear_err_info(); - mEv_SetTitleDemo(mTD_demono_get()); + Common_Set(player_no, 0); + Common_Set(player_data_mode, 0); + Common_Set(scene_from_title_demo, -1); + mNpc_ClearCacheName(); + mNpc_ClearInAnimal(); + mNpc_FirstClearGoodbyMail(); + mQst_ClearGrabItemInfo(); + mNpc_ClearIslandNpcRoomData(); + mCD_InitAll(); + mISL_ClearKeepIsland(); + mBI_ct(); + mFont_ct(); + mBGMPsComp_scene_mode(0); + mVibctl_init0(); + mFRm_clear_err_info(); + mEv_SetTitleDemo(mTD_demono_get()); } diff --git a/src/player_select.c b/src/player_select.c index 889700ce..a6be9aa4 100644 --- a/src/player_select.c +++ b/src/player_select.c @@ -24,122 +24,115 @@ static u8 l_zaitaku_str[9] = { 0x3C, 0xEC, 0x01, 0x0F, 0x07, 0x10, 0xCA, 0x02, 0 static u8 l_yosokara_str[10] = { 0x60, 0x0E, 0x05, 0x7B, 0x00, 0x0E, 0xF7, 0x15, 0x06, 0x0F }; static void player_select_game_data_init(GAME_PLAYER_SELECT* player_select) { - int player_no = player_select->player_no; - mFI_ClearFieldData(); - if (mSDI_StartInitBefore((GAME*)player_select, player_no, mSDI_INIT_MODE_NEW, mSDI_MALLOC_FLAG_GAME) == TRUE) { - player_select->err_no = PLAYER_SELECT_INIT_ERR_SUCCESS; - } + int player_no = player_select->player_no; + mFI_ClearFieldData(); + if (mSDI_StartInitBefore((GAME*)player_select, player_no, mSDI_INIT_MODE_NEW, mSDI_MALLOC_FLAG_GAME) == TRUE) { + player_select->err_no = PLAYER_SELECT_INIT_ERR_SUCCESS; + } } static void player_select_game_data_init_save(GAME_PLAYER_SELECT* player_select) { - if (mSDI_StartInitBefore((GAME*)player_select, player_select->player_no, mSDI_INIT_MODE_FROM, mSDI_MALLOC_FLAG_GAME) == TRUE) { - player_select->err_no = PLAYER_SELECT_INIT_ERR_SUCCESS; - } - else { - player_select->err_no = PLAYER_SELECT_INIT_ERR_SAVE; - } + if (mSDI_StartInitBefore((GAME*)player_select, player_select->player_no, mSDI_INIT_MODE_FROM, + mSDI_MALLOC_FLAG_GAME) == TRUE) { + player_select->err_no = PLAYER_SELECT_INIT_ERR_SUCCESS; + } else { + player_select->err_no = PLAYER_SELECT_INIT_ERR_SAVE; + } } static void player_select_game_data_init_new_player(GAME_PLAYER_SELECT* player_select) { - if (mSDI_StartInitBefore((GAME*)player_select, player_select->player_no, mSDI_INIT_MODE_NEW_PLAYER, mSDI_MALLOC_FLAG_GAME) == TRUE) { - player_select->err_no = PLAYER_SELECT_INIT_ERR_SUCCESS; - } - else { - player_select->err_no = PLAYER_SELECT_INIT_ERR_SAVE; - } + if (mSDI_StartInitBefore((GAME*)player_select, player_select->player_no, mSDI_INIT_MODE_NEW_PLAYER, + mSDI_MALLOC_FLAG_GAME) == TRUE) { + player_select->err_no = PLAYER_SELECT_INIT_ERR_SUCCESS; + } else { + player_select->err_no = PLAYER_SELECT_INIT_ERR_SAVE; + } } static void player_select_game_data_init_pak(GAME_PLAYER_SELECT* player_select) { - if (mSDI_StartInitBefore((GAME*)player_select, player_select->player_no, mSDI_INIT_MODE_PAK, mSDI_MALLOC_FLAG_GAME) == TRUE) { - player_select->err_no = PLAYER_SELECT_INIT_ERR_SUCCESS; - } - else { - player_select->err_no = PLAYER_SELECT_INIT_ERR_PAK; - } + if (mSDI_StartInitBefore((GAME*)player_select, player_select->player_no, mSDI_INIT_MODE_PAK, + mSDI_MALLOC_FLAG_GAME) == TRUE) { + player_select->err_no = PLAYER_SELECT_INIT_ERR_SUCCESS; + } else { + player_select->err_no = PLAYER_SELECT_INIT_ERR_PAK; + } } static void player_select_game_data_init_err(GAME_PLAYER_SELECT* player_select) { - player_select->mode = PLAYER_SELECT_MODE_SELECTION; + player_select->mode = PLAYER_SELECT_MODE_SELECTION; } static PLAYER_SELECT_INIT_PROC l_init_proc[mSDI_INIT_MODE_NUM] = { - &player_select_game_data_init, - &player_select_game_data_init_new_player, - &player_select_game_data_init_save, - &player_select_game_data_init_pak, - &player_select_game_data_init_err + &player_select_game_data_init, &player_select_game_data_init_new_player, &player_select_game_data_init_save, + &player_select_game_data_init_pak, &player_select_game_data_init_err }; static void player_select_init_after(GAME_PLAYER_SELECT* player_select) { - mSDI_StartInitAfter((GAME*)player_select, FALSE, mSDI_MALLOC_FLAG_GAME); + mSDI_StartInitAfter((GAME*)player_select, FALSE, mSDI_MALLOC_FLAG_GAME); } static void player_select_next_mode(int* mode, int max) { - (*mode)++; - if (*mode >= max) { - *mode = 0; - } + (*mode)++; + if (*mode >= max) { + *mode = 0; + } } static void player_select_back_mode(int* mode, int max) { - (*mode)--; - if (*mode < 0) { - *mode = max - 1; - } + (*mode)--; + if (*mode < 0) { + *mode = max - 1; + } } static void player_select_move_main(GAME_PLAYER_SELECT* player_select) { - int mode = player_select->mode; + int mode = player_select->mode; - if (player_select->err_no == PLAYER_SELECT_INIT_ERR_NONE) { - if (chkTrigger(BUTTON_A)) { - int player_no = player_select->player_no; - if (mode == PLAYER_SELECT_MODE_SELECTION) { - player_select->mode = PLAYER_SELECT_MODE_PLAY; - } + if (player_select->err_no == PLAYER_SELECT_INIT_ERR_NONE) { + if (chkTrigger(BUTTON_A)) { + int player_no = player_select->player_no; + if (mode == PLAYER_SELECT_MODE_SELECTION) { + player_select->mode = PLAYER_SELECT_MODE_PLAY; + } - if (player_select->mode == PLAYER_SELECT_MODE_PLAY) { - (*player_select->init_procs[player_no])(player_select); - } + if (player_select->mode == PLAYER_SELECT_MODE_PLAY) { + (*player_select->init_procs[player_no])(player_select); + } + } + + if (chkTrigger(BUTTON_DDOWN) && player_select->mode == PLAYER_SELECT_MODE_SELECTION) { + if (player_select->land_exist == TRUE) { + player_select_next_mode(&player_select->player_no, SELECT_PLAYER_NUM); + } else { + player_select_next_mode(&player_select->player_no, PLAYER_NUM); + } + } + + if (chkTrigger(BUTTON_DUP) && player_select->mode == PLAYER_SELECT_MODE_SELECTION) { + if (player_select->land_exist == TRUE) { + player_select_back_mode(&player_select->player_no, SELECT_PLAYER_NUM); + } else { + player_select_back_mode(&player_select->player_no, PLAYER_NUM); + } + } + } else if (player_select->err_no == PLAYER_SELECT_INIT_ERR_SUCCESS) { + player_select_init_after(player_select); + GAME_GOTO_NEXT((GAME*)player_select, select, SELECT); + } else { + Common_Set(scene_from_title_demo, -1); + player_select->err_no = PLAYER_SELECT_INIT_ERR_NONE; + player_select->mode = PLAYER_SELECT_MODE_SELECTION; } - - if (chkTrigger(BUTTON_DDOWN) && player_select->mode == PLAYER_SELECT_MODE_SELECTION) { - if (player_select->land_exist == TRUE) { - player_select_next_mode(&player_select->player_no, SELECT_PLAYER_NUM); - } - else { - player_select_next_mode(&player_select->player_no, PLAYER_NUM); - } - } - - if (chkTrigger(BUTTON_DUP) && player_select->mode == PLAYER_SELECT_MODE_SELECTION) { - if (player_select->land_exist == TRUE) { - player_select_back_mode(&player_select->player_no, SELECT_PLAYER_NUM); - } - else { - player_select_back_mode(&player_select->player_no, PLAYER_NUM); - } - } - } - else if (player_select->err_no == PLAYER_SELECT_INIT_ERR_SUCCESS) { - player_select_init_after(player_select); - GAME_GOTO_NEXT((GAME*)player_select, select, SELECT); - } - else { - Common_Set(scene_from_title_demo, -1); - player_select->err_no = PLAYER_SELECT_INIT_ERR_NONE; - player_select->mode = PLAYER_SELECT_MODE_SELECTION; - } } static void str_add_word(u8* dst, const u8* word0, const u8* word1, int word0_len, int word1_len) { - for (word0_len; word0_len != 0; word0_len--) { - *dst++ = *word0++; - } + for (word0_len; word0_len != 0; word0_len--) { + *dst++ = *word0++; + } - for (word1_len; word1_len != 0; word1_len--) { - *dst++ = *word1++; - } + for (word1_len; word1_len != 0; word1_len--) { + *dst++ = *word1++; + } } static int l_ps_white_color[3] = { 250, 220, 100 }; @@ -149,186 +142,165 @@ static int l_ps_select_color[3] = { 200, 55, 55 }; static u8 _debug_player_select[10] = { 0xE4, 0xBA, 0x90, 0xB4, 0x90, 0x20, 0x0D, 0xC3, 0x0F, 0x07 }; static void player_select_draw_title(GAME_PLAYER_SELECT* player_select) { - mFont_SetMatrix(player_select->game.graph, mFont_MODE_FONT); - mFont_SetLineStrings_AndSpace( - (GAME*)player_select, - _debug_player_select, ARRAY_SIZE(_debug_player_select, u8), - 85.0f, 15.0f, - 200, 200, 200, 255, - FALSE, TRUE, 0, - 1.2f, 1.2f, - mFont_MODE_FONT - ); - mFont_UnSetMatrix(player_select->game.graph, mFont_MODE_FONT); + mFont_SetMatrix(player_select->game.graph, mFont_MODE_FONT); + mFont_SetLineStrings_AndSpace((GAME*)player_select, _debug_player_select, ARRAY_SIZE(_debug_player_select, u8), + 85.0f, 15.0f, 200, 200, 200, 255, FALSE, TRUE, 0, 1.2f, 1.2f, mFont_MODE_FONT); + mFont_UnSetMatrix(player_select->game.graph, mFont_MODE_FONT); } static void player_select_draw_player_no(GAME_PLAYER_SELECT* player_select) { - u8 name_buf[8 + SELECT_NAME_LEN]; - u8 pre_str[8] = { 0xED, 0xCA, 0x02, 0x15, 0xC3, 0x20, 0x20, 0x20 }; - int player_no = player_select->player_no; - int i; + u8 name_buf[8 + SELECT_NAME_LEN]; + u8 pre_str[8] = { 0xED, 0xCA, 0x02, 0x15, 0xC3, 0x20, 0x20, 0x20 }; + int player_no = player_select->player_no; + int i; - for (i = 0; i < PLAYER_NUM; i++) { - int* color; + for (i = 0; i < PLAYER_NUM; i++) { + int* color; - /* create text */ - mem_clear(name_buf, ARRAY_SIZE(name_buf, u8), CHAR_SPACE); - str_add_word(name_buf, pre_str, player_select->player_names[i], 8, SELECT_NAME_LEN); - - /* set player no */ - name_buf[6] = (u8)i | CHAR_ZERO; + /* create text */ + mem_clear(name_buf, ARRAY_SIZE(name_buf, u8), CHAR_SPACE); + str_add_word(name_buf, pre_str, player_select->player_names[i], 8, SELECT_NAME_LEN); - color = (player_no == i) ? l_ps_select_color : l_ps_white_color; + /* set player no */ + name_buf[6] = (u8)i | CHAR_ZERO; - mFont_SetMatrix(player_select->game.graph, mFont_MODE_FONT); - mFont_SetLineStrings_AndSpace( - (GAME*)player_select, - name_buf, ARRAY_SIZE(name_buf, u8), - 70.0f, 65.0f + 15.0f * i, - color[0], color[1], color[2], 255, - FALSE, TRUE, 0, - 0.8f, 0.8f, - mFont_MODE_FONT - ); - mFont_UnSetMatrix(player_select->game.graph, mFont_MODE_FONT); - } + color = (player_no == i) ? l_ps_select_color : l_ps_white_color; + + mFont_SetMatrix(player_select->game.graph, mFont_MODE_FONT); + mFont_SetLineStrings_AndSpace((GAME*)player_select, name_buf, ARRAY_SIZE(name_buf, u8), 70.0f, + 65.0f + 15.0f * i, color[0], color[1], color[2], 255, FALSE, TRUE, 0, 0.8f, 0.8f, + mFont_MODE_FONT); + mFont_UnSetMatrix(player_select->game.graph, mFont_MODE_FONT); + } } static void player_select_draw_yosokara(GAME_PLAYER_SELECT* player_select) { - u8* name = player_select->player_names[PLAYER_NUM]; - int* color = (player_select->player_no == PLAYER_NUM) ? l_ps_select_color : l_ps_white_color; + u8* name = player_select->player_names[PLAYER_NUM]; + int* color = (player_select->player_no == PLAYER_NUM) ? l_ps_select_color : l_ps_white_color; - mFont_SetMatrix(player_select->game.graph, mFont_MODE_FONT); - mFont_SetLineStrings_AndSpace( - (GAME*)player_select, - name, SELECT_NAME_LEN, - 70.0f, 65.0f + 15.0f * PLAYER_NUM, - color[0], color[1], color[2], 255, - FALSE, TRUE, 0, - 0.8f, 0.8f, - mFont_MODE_FONT - ); - mFont_UnSetMatrix(player_select->game.graph, mFont_MODE_FONT); + mFont_SetMatrix(player_select->game.graph, mFont_MODE_FONT); + mFont_SetLineStrings_AndSpace((GAME*)player_select, name, SELECT_NAME_LEN, 70.0f, 65.0f + 15.0f * PLAYER_NUM, + color[0], color[1], color[2], 255, FALSE, TRUE, 0, 0.8f, 0.8f, mFont_MODE_FONT); + mFont_UnSetMatrix(player_select->game.graph, mFont_MODE_FONT); } static void player_select_draw_main(GAME_PLAYER_SELECT* player_select) { - GRAPH* g = player_select->game.graph; + GRAPH* g = player_select->game.graph; - OPEN_DISP(g); + OPEN_DISP(g); - gSPSegment(NOW_POLY_OPA_DISP++, G_MWO_SEGMENT_0, 0); - gSPSegment(NOW_FONT_DISP++, G_MWO_SEGMENT_0, 0); + gSPSegment(NOW_POLY_OPA_DISP++, G_MWO_SEGMENT_0, 0); + gSPSegment(NOW_FONT_DISP++, G_MWO_SEGMENT_0, 0); - DisplayList_initialize(g, 0, 0, 0, NULL); + DisplayList_initialize(g, 0, 0, 0, NULL); - gDPPipeSync(NOW_POLY_OPA_DISP++); - - CLOSE_DISP(g); + gDPPipeSync(NOW_POLY_OPA_DISP++); - showView(&player_select->view, VIEW_UPDATE_ALL); - player_select_draw_title(player_select); - player_select_draw_player_no(player_select); - player_select_draw_yosokara(player_select); + CLOSE_DISP(g); + + showView(&player_select->view, VIEW_UPDATE_ALL); + player_select_draw_title(player_select); + player_select_draw_player_no(player_select); + player_select_draw_yosokara(player_select); } static void player_select_main(GAME* game) { - GAME_PLAYER_SELECT* player_select = (GAME_PLAYER_SELECT*)game; + GAME_PLAYER_SELECT* player_select = (GAME_PLAYER_SELECT*)game; - player_select_move_main(player_select); - player_select_draw_main(player_select); + player_select_move_main(player_select); + player_select_draw_main(player_select); - { - GRAPH* g = game->graph; - game_debug_draw_last(game, g); - game_draw_last(g); - } + { + GRAPH* g = game->graph; + game_debug_draw_last(game, g); + game_draw_last(g); + } } -extern void player_select_cleanup(GAME* game) { } +extern void player_select_cleanup(GAME* game) { +} extern void player_select_init(GAME* game) { - GAME_PLAYER_SELECT* player_select = (GAME_PLAYER_SELECT*)game; - GRAPH* g = game->graph; - int i; - - game->exec = &player_select_main; - game->cleanup = &player_select_cleanup; + GAME_PLAYER_SELECT* player_select = (GAME_PLAYER_SELECT*)game; + GRAPH* g = game->graph; + int i; - { - View* view = &player_select->view; - initView(view, g); - view->flag = VIEW_UPDATE_ORTHOGRAPHIC; - } + game->exec = &player_select_main; + game->cleanup = &player_select_cleanup; - new_Matrix(game); - SetGameFrame(1); - - player_select->player_no = 0; - player_select->err_no = PLAYER_SELECT_INIT_ERR_NONE; - player_select->mode = PLAYER_SELECT_MODE_SELECTION; - - for (i = 0; i < SELECT_PLAYER_NUM; i++) { - int j; - - for (j = 0; j < 6; j++) { - player_select->player_names[i][j] = mitouroku_str[j]; + { + View* view = &player_select->view; + initView(view, g); + view->flag = VIEW_UPDATE_ORTHOGRAPHIC; } - for (j = 6; j < SELECT_NAME_LEN; j++) { - player_select->player_names[i][j] = CHAR_SPACE; - } + new_Matrix(game); + SetGameFrame(1); - player_select->player_types[i] = PLAYER_SELECT_PLAYER_MODE_NO_SAVE; - } + player_select->player_no = 0; + player_select->err_no = PLAYER_SELECT_INIT_ERR_NONE; + player_select->mode = PLAYER_SELECT_MODE_SELECTION; - for (i = 0; i < LAND_NAME_SIZE; i++) { - player_select->land_name[i] = CHAR_SPACE; - } - player_select->land_exist = FALSE; + for (i = 0; i < SELECT_PLAYER_NUM; i++) { + int j; - if (mFRm_CheckSaveData() == TRUE) { - Private_c* private_p = Save_Get(private); - for (i = 0; i < PLAYER_NUM; i++) { - u8* name = player_select->player_names[i]; - - if (mPr_CheckPrivate(private_p) == TRUE) { - mPr_CopyPlayerName(name, private_p->player_ID.player_name); - - if (private_p->exists == FALSE) { - mem_copy(name + PLAYER_NAME_LEN, l_gaishutu_str, 10); - player_select->player_types[i] = PLAYER_SELECT_PLAYER_MODE_OUT; + for (j = 0; j < 6; j++) { + player_select->player_names[i][j] = mitouroku_str[j]; } - else { - mem_copy(name + PLAYER_NAME_LEN, l_zaitaku_str, 9); - player_select->player_types[i] = PLAYER_SELECT_PLAYER_MODE_HOME; - } - } - else { - player_select->player_types[i] = PLAYER_SELECT_PLAYER_MODE_UNREGISTERED; - } - private_p++; + for (j = 6; j < SELECT_NAME_LEN; j++) { + player_select->player_names[i][j] = CHAR_SPACE; + } + + player_select->player_types[i] = PLAYER_SELECT_PLAYER_MODE_NO_SAVE; } - mLd_CopyLandName(player_select->land_name, Save_Get(land_info.name)); - player_select->land_exist = TRUE; - } + for (i = 0; i < LAND_NAME_SIZE; i++) { + player_select->land_name[i] = CHAR_SPACE; + } + player_select->land_exist = FALSE; - for (i = 0; i < SELECT_PLAYER_NAME_EXTRA; i++) { - player_select->player_names[PLAYER_NUM][i] = l_yosokara_str[i]; - } + if (mFRm_CheckSaveData() == TRUE) { + Private_c* private_p = Save_Get(private_data); + for (i = 0; i < PLAYER_NUM; i++) { + u8* name = player_select->player_names[i]; - for (i = SELECT_PLAYER_NAME_EXTRA; i < SELECT_NAME_LEN; i++) { - player_select->player_names[PLAYER_NUM][i] = CHAR_SPACE; - } + if (mPr_CheckPrivate(private_p) == TRUE) { + mPr_CopyPlayerName(name, private_p->player_ID.player_name); - player_select->player_types[PLAYER_NUM] = PLAYER_SELECT_PLAYER_MODE_OUT; + if (private_p->exists == FALSE) { + mem_copy(name + PLAYER_NAME_LEN, l_gaishutu_str, 10); + player_select->player_types[i] = PLAYER_SELECT_PLAYER_MODE_OUT; + } else { + mem_copy(name + PLAYER_NAME_LEN, l_zaitaku_str, 9); + player_select->player_types[i] = PLAYER_SELECT_PLAYER_MODE_HOME; + } + } else { + player_select->player_types[i] = PLAYER_SELECT_PLAYER_MODE_UNREGISTERED; + } - for (i = 0; i < SELECT_PLAYER_NUM; i++) { - player_select->init_procs[i] = l_init_proc[player_select->player_types[i]]; - } + private_p++; + } - Common_Set(player_no, 0); - Common_Set(player_data_mode, 0); - Common_Set(scene_from_title_demo, -1); -} \ No newline at end of file + mLd_CopyLandName(player_select->land_name, Save_Get(land_info.name)); + player_select->land_exist = TRUE; + } + + for (i = 0; i < SELECT_PLAYER_NAME_EXTRA; i++) { + player_select->player_names[PLAYER_NUM][i] = l_yosokara_str[i]; + } + + for (i = SELECT_PLAYER_NAME_EXTRA; i < SELECT_NAME_LEN; i++) { + player_select->player_names[PLAYER_NUM][i] = CHAR_SPACE; + } + + player_select->player_types[PLAYER_NUM] = PLAYER_SELECT_PLAYER_MODE_OUT; + + for (i = 0; i < SELECT_PLAYER_NUM; i++) { + player_select->init_procs[i] = l_init_proc[player_select->player_types[i]]; + } + + Common_Set(player_no, 0); + Common_Set(player_data_mode, 0); + Common_Set(scene_from_title_demo, -1); +} diff --git a/src/save_check_MYK.c_inc b/src/save_check_MYK.c_inc index 23f9536c..e5211265 100644 --- a/src/save_check_MYK.c_inc +++ b/src/save_check_MYK.c_inc @@ -182,7 +182,7 @@ static int sSC_CheckSaveData_Needlework() { for (i = 0; i < PLAYER_NUM; i++) { for (j = 0; j < mPr_ORIGINAL_DESIGN_COUNT; j++) { - if (sSC_CheckOneOriginalData(Save_Get(private + i)->my_org + j) == FALSE) { + if (sSC_CheckOneOriginalData(Save_Get(private_data + i)->my_org + j) == FALSE) { mFRm_ERRORLINE(348); return sSC_MYK_ERR_NEEDLEWORK; } diff --git a/src/save_check_NSW.c_inc b/src/save_check_NSW.c_inc index f159b398..79922dec 100644 --- a/src/save_check_NSW.c_inc +++ b/src/save_check_NSW.c_inc @@ -1,244 +1,225 @@ static int sChk_lbRTC_ymd_c_NSW(lbRTC_ymd_c* ymd) { - int res = FALSE; + int res = FALSE; - if (ymd->year < GAME_YEAR_MIN + 1 || ymd->year > GAME_YEAR_MAX - 1) { - res = TRUE; - } - - if (ymd->month == 0 || ymd->month > lbRTC_MONTHS_MAX) { - res = TRUE; - } - - if (ymd->day == 0 || ymd->day > 31) { - res = TRUE; - } - - if (res == TRUE) { - if (ymd->year == 0 && ymd->month == 0 && ymd->day == 0) { - res = FALSE; + if (ymd->year < GAME_YEAR_MIN + 1 || ymd->year > GAME_YEAR_MAX - 1) { + res = TRUE; } - else if (ymd->year == mTM_rtcTime_ymd_clear_code.year && ymd->month == mTM_rtcTime_ymd_clear_code.month && ymd->day == mTM_rtcTime_ymd_clear_code.day) { - res = FALSE; + + if (ymd->month == 0 || ymd->month > lbRTC_MONTHS_MAX) { + res = TRUE; } - + + if (ymd->day == 0 || ymd->day > 31) { + res = TRUE; + } + if (res == TRUE) { - mFRm_set_errInfo(l_mfrm_err_info, 91, l_mfrm_now_color); - } - } + if (ymd->year == 0 && ymd->month == 0 && ymd->day == 0) { + res = FALSE; + } else if (ymd->year == mTM_rtcTime_ymd_clear_code.year && ymd->month == mTM_rtcTime_ymd_clear_code.month && + ymd->day == mTM_rtcTime_ymd_clear_code.day) { + res = FALSE; + } - return res; + if (res == TRUE) { + mFRm_set_errInfo(l_mfrm_err_info, 91, l_mfrm_now_color); + } + } + + return res; } static int sCck_CheckSaveData_radiocard_NSW(Private_c* priv) { - mPr_day_day_c* radiocard_p = &priv->radiocard; - int res; + mPr_day_day_c* radiocard_p = &priv->radiocard; + int res; - if (sChk_lbRTC_ymd_c_NSW(&radiocard_p->last_date)) { - mFRm_ERRORLINE(112); - res = TRUE; - } - else if (radiocard_p->days > mPr_RADIOCARD_MAX_DAYS) { - mFRm_ERRORLINE(121); - res = TRUE; - } - else { - res = FALSE; - } + if (sChk_lbRTC_ymd_c_NSW(&radiocard_p->last_date)) { + mFRm_ERRORLINE(112); + res = TRUE; + } else if (radiocard_p->days > mPr_RADIOCARD_MAX_DAYS) { + mFRm_ERRORLINE(121); + res = TRUE; + } else { + res = FALSE; + } - return res; + return res; } static int sCck_CheckSaveData_calendar_NSW(Private_c* priv) { - int res; + int res; - if (priv->calendar.edit > 1) { - mFRm_ERRORLINE(143); - res = TRUE; - } - else if (priv->calendar.pad_63 != 0) { - mFRm_ERRORLINE(151); - res = TRUE; - } - else if ( - ( - priv->calendar.year < GAME_YEAR_MIN + 1 || priv->calendar.year > GAME_YEAR_MAX - 1 || - priv->calendar.month == 0 || priv->calendar.month > lbRTC_DECEMBER - ) && - (priv->calendar.year != 0 || priv->calendar.month != 0) - ) { - mFRm_ERRORLINE(164); - res = TRUE; - } - else { - res = FALSE; - } + if (priv->calendar.edit > 1) { + mFRm_ERRORLINE(143); + res = TRUE; + } else if (priv->calendar.pad_63 != 0) { + mFRm_ERRORLINE(151); + res = TRUE; + } else if ((priv->calendar.year < GAME_YEAR_MIN + 1 || priv->calendar.year > GAME_YEAR_MAX - 1 || + priv->calendar.month == 0 || priv->calendar.month > lbRTC_DECEMBER) && + (priv->calendar.year != 0 || priv->calendar.month != 0)) { + mFRm_ERRORLINE(164); + res = TRUE; + } else { + res = FALSE; + } - return res; + return res; } static int sCck_CheckSaveData_deposit_NSW(Private_c* priv) { - int res; - int deposit = priv->bank_account; + int res; + int deposit = priv->bank_account; - if (deposit < 0 || deposit > mPr_DEPOSIT_MAX) { - mFRm_ERRORLINE(184); - res = TRUE; - } - else { - res = FALSE; - } + if (deposit < 0 || deposit > mPr_DEPOSIT_MAX) { + mFRm_ERRORLINE(184); + res = TRUE; + } else { + res = FALSE; + } - return res; + return res; } static int sCck_CheckSaveData_nw_visitor_NSW(Private_c* priv) { - mPr_day_day_c* nw_visitor_p = &priv->nw_visitor; - int res; + mPr_day_day_c* nw_visitor_p = &priv->nw_visitor; + int res; - if (sChk_lbRTC_ymd_c_NSW(&nw_visitor_p->last_date) != FALSE && nw_visitor_p->last_date.year != 0) { - mFRm_ERRORLINE(204); - res = TRUE; - } - else { - res = FALSE; - } + if (sChk_lbRTC_ymd_c_NSW(&nw_visitor_p->last_date) != FALSE && nw_visitor_p->last_date.year != 0) { + mFRm_ERRORLINE(204); + res = TRUE; + } else { + res = FALSE; + } - return res; + return res; } static int sCck_CheckSaveData_my_org_no_table_NSW(Private_c* priv) { - u8 my_org_no; - int field = 0; - int total = 0; - u8* my_org_no_table = priv->my_org_no_table; - int i; - int res; + u8 my_org_no; + int field = 0; + int total = 0; + u8* my_org_no_table = priv->my_org_no_table; + int i; + int res; - for (i = 0; i < mPr_ORIGINAL_DESIGN_COUNT; i++) { - my_org_no = my_org_no_table[i]; + for (i = 0; i < mPr_ORIGINAL_DESIGN_COUNT; i++) { + my_org_no = my_org_no_table[i]; - if (my_org_no >= mPr_ORIGINAL_DESIGN_COUNT) { - return TRUE; + if (my_org_no >= mPr_ORIGINAL_DESIGN_COUNT) { + return TRUE; + } + + total += my_org_no; + field |= (u16)(1 << my_org_no); } - total += my_org_no; - field |= (u16)(1 << my_org_no); - } + if ((u16)field != (u16)((1 << mPr_ORIGINAL_DESIGN_COUNT) - 1) && total != 0) { + mFRm_ERRORLINE(239); + res = TRUE; + } else { + res = FALSE; + } - if ((u16)field != (u16)((1 << mPr_ORIGINAL_DESIGN_COUNT) - 1) && total != 0) { - mFRm_ERRORLINE(239); - res = TRUE; - } - else { - res = FALSE; - } - - return res; + return res; } static int sCck_CheckSaveData_bridge_NSW() { - PlusBridge_c* bridge = Save_GetPointer(bridge); + PlusBridge_c* bridge = Save_GetPointer(bridge); - if (sChk_lbRTC_ymd_c_NSW(&bridge->build_date)) { - mFRm_ERRORLINE(259); - return TRUE; - } - else if (bridge->exists || bridge->pending) { - if ( - bridge->block_x == 0 || bridge->block_x > FG_BLOCK_X_NUM || - bridge->block_z == 0 || bridge->block_z > FG_BLOCK_Z_NUM - ) { - mFRm_ERRORLINE(271); - return TRUE; + if (sChk_lbRTC_ymd_c_NSW(&bridge->build_date)) { + mFRm_ERRORLINE(259); + return TRUE; + } else if (bridge->exists || bridge->pending) { + if (bridge->block_x == 0 || bridge->block_x > FG_BLOCK_X_NUM || bridge->block_z == 0 || + bridge->block_z > FG_BLOCK_Z_NUM) { + mFRm_ERRORLINE(271); + return TRUE; + } + } else if (bridge->block_x != 0 || bridge->block_z != 0) { + mFRm_ERRORLINE(280); + return TRUE; } - } - else if (bridge->block_x != 0 || bridge->block_z != 0) { - mFRm_ERRORLINE(280); - return TRUE; - } - return FALSE; + return FALSE; } static int sCck_CheckSaveData_fishRecord_NSW() { - mFR_record_c* record; - lbRTC_ymd_c ymd; - int i; + mFR_record_c* record; + lbRTC_ymd_c ymd; + int i; - for (i = 0; i < mFR_RECORD_NUM; i++) { - record = Save_Get(fishRecord + i); - mTM_set_renew_time(&ymd, &record->time); + for (i = 0; i < mFR_RECORD_NUM; i++) { + record = Save_Get(fishRecord + i); + mTM_set_renew_time(&ymd, &record->time); - if (record->size < 0) { - mFRm_ERRORLINE(307); - return TRUE; + if (record->size < 0) { + mFRm_ERRORLINE(307); + return TRUE; + } + + if (record->size != 0 && sChk_lbRTC_ymd_c_NSW(&ymd) == TRUE) { + mFRm_ERRORLINE(316); + return TRUE; + } } - if (record->size != 0 && sChk_lbRTC_ymd_c_NSW(&ymd) == TRUE) { - mFRm_ERRORLINE(316); - return TRUE; - } - } - - return FALSE; + return FALSE; } static int sCck_CheckSaveData_Anmret_NSW() { - Anmret_c* anmret = Save_GetPointer(return_animal); - int res; - lbRTC_ymd_c ymd; + Anmret_c* anmret = Save_GetPointer(return_animal); + int res; + lbRTC_ymd_c ymd; - if (anmret->npc_id != EMPTY_NO && ITEM_NAME_GET_TYPE(anmret->npc_id) != NAME_TYPE_NPC) { - mFRm_ERRORLINE(339); - res = TRUE; - } - else { - mTM_set_renew_time(&ymd, &anmret->renew_time); + if (anmret->npc_id != EMPTY_NO && ITEM_NAME_GET_TYPE(anmret->npc_id) != NAME_TYPE_NPC) { + mFRm_ERRORLINE(339); + res = TRUE; + } else { + mTM_set_renew_time(&ymd, &anmret->renew_time); - if (sChk_lbRTC_ymd_c_NSW(&ymd) == TRUE) { - mFRm_ERRORLINE(349); - res = TRUE; + if (sChk_lbRTC_ymd_c_NSW(&ymd) == TRUE) { + mFRm_ERRORLINE(349); + res = TRUE; + } else { + res = FALSE; + } } - else { - res = FALSE; - } - } - return res; + return res; } static int sCck_CheckSaveData_LightHouse_NSW() { - int res; + int res; - if (sChk_lbRTC_ymd_c_NSW(&Save_Get(LightHouse).renew_time) == TRUE) { - mFRm_ERRORLINE(368); - res = TRUE; - } - else { - res = FALSE; - } + if (sChk_lbRTC_ymd_c_NSW(&Save_Get(LightHouse).renew_time) == TRUE) { + mFRm_ERRORLINE(368); + res = TRUE; + } else { + res = FALSE; + } - return res; + return res; } static int sChk_CheckSaveData_NSW() { - int res = FALSE; - int i; + int res = FALSE; + int i; - for (i = 0; i < PLAYER_NUM; i++) { - Private_c* priv = Save_Get(private) + i; + for (i = 0; i < PLAYER_NUM; i++) { + Private_c* priv = Save_Get(private_data) + i; - res |= sCck_CheckSaveData_radiocard_NSW(priv); - res |= sCck_CheckSaveData_calendar_NSW(priv); - res |= sCck_CheckSaveData_deposit_NSW(priv); - res |= sCck_CheckSaveData_nw_visitor_NSW(priv); - res |= sCck_CheckSaveData_my_org_no_table_NSW(priv); - } + res |= sCck_CheckSaveData_radiocard_NSW(priv); + res |= sCck_CheckSaveData_calendar_NSW(priv); + res |= sCck_CheckSaveData_deposit_NSW(priv); + res |= sCck_CheckSaveData_nw_visitor_NSW(priv); + res |= sCck_CheckSaveData_my_org_no_table_NSW(priv); + } - res |= sCck_CheckSaveData_bridge_NSW(); - res |= sCck_CheckSaveData_fishRecord_NSW(); - res |= sCck_CheckSaveData_Anmret_NSW(); - res |= sCck_CheckSaveData_LightHouse_NSW(); + res |= sCck_CheckSaveData_bridge_NSW(); + res |= sCck_CheckSaveData_fishRecord_NSW(); + res |= sCck_CheckSaveData_Anmret_NSW(); + res |= sCck_CheckSaveData_LightHouse_NSW(); - return res; + return res; } diff --git a/src/save_check_YSD.c_inc b/src/save_check_YSD.c_inc index ebd91eec..dc845fc6 100644 --- a/src/save_check_YSD.c_inc +++ b/src/save_check_YSD.c_inc @@ -1,105 +1,78 @@ static int sCck_CheckSaveData_diary_body_YSD(Private_c* priv) { - return FALSE; + return FALSE; } static int sCCk_Check_ItemName(mActor_name_t item) { - /* TODO: do not hardcode this */ - static s16 item1_kinds[ITEM1_CAT_NUM] = { - 255, - 3, - 91, - 39, - 254, - 48, - 66, - 66, - 7, - 10, - 54, - 15, - 95, - 44, - 1, - 3 - }; + /* TODO: do not hardcode this */ + static s16 item1_kinds[ITEM1_CAT_NUM] = { 255, 3, 91, 39, 254, 48, 66, 66, 7, 10, 54, 15, 95, 44, 1, 3 }; - mActor_name_t item_name = (mActor_name_t)item; - int item_type = ITEM_NAME_GET_TYPE(item_name); - int res = FALSE; + mActor_name_t item_name = (mActor_name_t)item; + int item_type = ITEM_NAME_GET_TYPE(item_name); + int res = FALSE; - if (item_type == NAME_TYPE_ITEM1) { - int index = ITEM_NAME_GET_INDEX(item_name); - int category = ITEM_NAME_GET_CAT(item_name); - - if ( - index < 0 || - index > item1_kinds[category] || - item_name == ITM_SICKLE /* ??? why is this explicitly invalid... lol */ - ) { - res = TRUE; + if (item_type == NAME_TYPE_ITEM1) { + int index = ITEM_NAME_GET_INDEX(item_name); + int category = ITEM_NAME_GET_CAT(item_name); + + if (index < 0 || index > item1_kinds[category] || + item_name == ITM_SICKLE /* ??? why is this explicitly invalid... lol */ + ) { + res = TRUE; + } + } else if (item_name != EMPTY_NO && item_type != NAME_TYPE_FTR0 && item_type != NAME_TYPE_FTR1) { + mFRm_ERRORLINE(110); + res = TRUE; } - } - else if (item_name != EMPTY_NO && item_type != NAME_TYPE_FTR0 && item_type != NAME_TYPE_FTR1) { - mFRm_ERRORLINE(110); - res = TRUE; - } - return res; + return res; } static int sCCk_Check_ItemName_Possession(mActor_name_t item) { - int res = FALSE; + int res = FALSE; - if ( - sCCk_Check_ItemName(item) || - (item >= ITM_MY_ORG_UMBRELLA0 && item <= ITM_MY_ORG_UMBRELLA7) || - (item >= ITM_RED_PAINT && item <= ITM_BROWN_PAINT) || - item == ITM_PRESENT || - item == ITM_TOWN_MAP || - item == ITM_GOLDEN_NET_PRESENT || - item == ITM_GOLDEN_AXE_PRESENT || - item == ITM_GOLDEN_SHOVEL_PRESENT || - item == ITM_GOLDEN_ROD_PRESENT - ) { - mFRm_ERRORLINE(141); - res = TRUE; - } + if (sCCk_Check_ItemName(item) || (item >= ITM_MY_ORG_UMBRELLA0 && item <= ITM_MY_ORG_UMBRELLA7) || + (item >= ITM_RED_PAINT && item <= ITM_BROWN_PAINT) || item == ITM_PRESENT || item == ITM_TOWN_MAP || + item == ITM_GOLDEN_NET_PRESENT || item == ITM_GOLDEN_AXE_PRESENT || item == ITM_GOLDEN_SHOVEL_PRESENT || + item == ITM_GOLDEN_ROD_PRESENT) { + mFRm_ERRORLINE(141); + res = TRUE; + } - return res; + return res; } static int sCck_CheckSaveData_Item_YSD(Private_c* priv) { - int i; + int i; - for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { - sCCk_Check_ItemName_Possession(priv->inventory.pockets[i]); - } + for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { + sCCk_Check_ItemName_Possession(priv->inventory.pockets[i]); + } - return FALSE; + return FALSE; } static int sCck_CheckSaveData_Mail_YSD(Private_c* priv) { - int res = FALSE; - int i; + int res = FALSE; + int i; - for (i = 0; i < mPr_INVENTORY_MAIL_COUNT; i++) { - res |= sChk_Mail_c_sub(priv->mail + i, 0); - } + for (i = 0; i < mPr_INVENTORY_MAIL_COUNT; i++) { + res |= sChk_Mail_c_sub(priv->mail + i, 0); + } - return FALSE; + return FALSE; } static int sChk_CheckSaveData_YSD() { - int res = FALSE; - int i; + int res = FALSE; + int i; - for (i = 0; i < PLAYER_NUM; i++) { - Private_c* priv = Save_Get(private) + i; + for (i = 0; i < PLAYER_NUM; i++) { + Private_c* priv = Save_Get(private_data) + i; - res |= sCck_CheckSaveData_Item_YSD(priv); - res |= sCck_CheckSaveData_Mail_YSD(priv); - res |= sCck_CheckSaveData_diary_body_YSD(priv); - } + res |= sCck_CheckSaveData_Item_YSD(priv); + res |= sCck_CheckSaveData_Mail_YSD(priv); + res |= sCck_CheckSaveData_diary_body_YSD(priv); + } - return res; + return res; } diff --git a/src/save_check_komatu.c_inc b/src/save_check_komatu.c_inc index 049f502f..db06ef49 100644 --- a/src/save_check_komatu.c_inc +++ b/src/save_check_komatu.c_inc @@ -1,75 +1,75 @@ static int sChk_CheckSaveData_komatu() { - int i; - int j; + int i; + int j; - for (i = 0; i < PLAYER_NUM; i++) { - Private_c* priv = Save_Get(private) + i; + for (i = 0; i < PLAYER_NUM; i++) { + Private_c* priv = Save_Get(private_data) + i; - { - const u8 gender = priv->gender; - if (gender > mPr_SEX_FEMALE) { - return TRUE; - } - } - - { - s8 face = priv->face; - if (face < 0 || face >= mPr_FACE_TYPE_NUM) { - return TRUE; - } - } - - { - mPr_cloth_c* cloth = &priv->cloth; - u16 idx = cloth->idx; - mActor_name_t item; - - if (idx >= (256 + 8) || idx == 255) { - return TRUE; - } - - item = cloth->item; - if (item != EMPTY_NO) { - int valid_cloth = item == RSV_CLOTH || (item >= ITM_CLOTH000 && item < ITM_CLOTH_END); - - if (valid_cloth == FALSE) { - return TRUE; + { + const u8 gender = priv->gender; + if (gender > mPr_SEX_FEMALE) { + return TRUE; + } } - } - } - { - mPr_destiny_c* destiny = &priv->destiny; - - if (destiny->type >= mPr_DESTINY_NUM) { - return TRUE; - } - } - - { - mPr_sunburn_c* sunburn = &priv->sunburn; - s8 t = sunburn->rank; - s8 t2; - - if (t < 0 || t >= mPr_SUNBURN_RANK_NUM) { - return TRUE; - } - - t2 = sunburn->rankdown_days; - if (t2 < 0 || t2 > 2) { - return TRUE; - } - } - - { - u8 golden_items_collected = priv->golden_items_collected; - for (j = 4; j < 8; j++) { - if (golden_items_collected & ((u8)(1 << j))) { - return TRUE; + { + s8 face = priv->face; + if (face < 0 || face >= mPr_FACE_TYPE_NUM) { + return TRUE; + } } - } - } - } - return FALSE; + { + mPr_cloth_c* cloth = &priv->cloth; + u16 idx = cloth->idx; + mActor_name_t item; + + if (idx >= (256 + 8) || idx == 255) { + return TRUE; + } + + item = cloth->item; + if (item != EMPTY_NO) { + int valid_cloth = item == RSV_CLOTH || (item >= ITM_CLOTH000 && item < ITM_CLOTH_END); + + if (valid_cloth == FALSE) { + return TRUE; + } + } + } + + { + mPr_destiny_c* destiny = &priv->destiny; + + if (destiny->type >= mPr_DESTINY_NUM) { + return TRUE; + } + } + + { + mPr_sunburn_c* sunburn = &priv->sunburn; + s8 t = sunburn->rank; + s8 t2; + + if (t < 0 || t >= mPr_SUNBURN_RANK_NUM) { + return TRUE; + } + + t2 = sunburn->rankdown_days; + if (t2 < 0 || t2 > 2) { + return TRUE; + } + } + + { + u8 golden_items_collected = priv->golden_items_collected; + for (j = 4; j < 8; j++) { + if (golden_items_collected & ((u8)(1 << j))) { + return TRUE; + } + } + } + } + + return FALSE; } diff --git a/src/save_menu.c b/src/save_menu.c index 1098ba40..f18298d5 100644 --- a/src/save_menu.c +++ b/src/save_menu.c @@ -12,253 +12,239 @@ #include "m_common_data.h" static void save_menu_set_cursor_col(GAME_SAVE_MENU* save_menu) { - /* this was likely meant to be static */ - int cursor_col[10][3] = { - { 192, 120, 120 }, - { 224, 130, 130 }, - { 240, 150, 150 }, - { 255, 180, 180 }, - { 240, 150, 150 }, - { 224, 130, 130 }, - { 192, 120, 120 }, - { 128, 80, 80 }, - { 64, 64, 64 }, - { 128, 80, 80 }, - }; + /* this was likely meant to be static */ + int cursor_col[10][3] = { + { 192, 120, 120 }, { 224, 130, 130 }, { 240, 150, 150 }, { 255, 180, 180 }, { 240, 150, 150 }, + { 224, 130, 130 }, { 192, 120, 120 }, { 128, 80, 80 }, { 64, 64, 64 }, { 128, 80, 80 }, + }; - int (*dst)[3] = &save_menu->cursor_col[save_menu->mode]; - int (*color)[3] = &cursor_col[(u32)save_menu->frame / 4]; - int i; - for (i = 0; i < 3; i++) { - (*dst)[i] = (*color)[i]; - } + int(*dst)[3] = &save_menu->cursor_col[save_menu->mode]; + int(*color)[3] = &cursor_col[(u32)save_menu->frame / 4]; + int i; + for (i = 0; i < 3; i++) { + (*dst)[i] = (*color)[i]; + } } static void save_menu_reset_cursor_col(int (*color)[3]) { - int default_color[3] = { 40, 40, 40 }; - int i; + int default_color[3] = { 40, 40, 40 }; + int i; - for (i = 0; i < 3; i++) { - (*color)[i] = default_color[i]; - } + for (i = 0; i < 3; i++) { + (*color)[i] = default_color[i]; + } } typedef void (*SAVE_MENU_PROC)(GAME_SAVE_MENU*); static void save_menu_data_save_from(GAME_SAVE_MENU* save_menu) { - if ((int)Common_Get(player_no) != mPr_FOREIGNER) { - Common_Get(now_private)->exists = TRUE; - save_menu->error = SAVE_ERROR_EXIT; // OK - } - else { - save_menu->error = SAVE_ERROR_FLASHROM; // Player is foriegner - } + if ((int)Common_Get(player_no) != mPr_FOREIGNER) { + Common_Get(now_private)->exists = TRUE; + save_menu->error = SAVE_ERROR_EXIT; // OK + } else { + save_menu->error = SAVE_ERROR_FLASHROM; // Player is foriegner + } } static void save_menu_data_save_pak(GAME_SAVE_MENU* save_menu) { - Private_c* private = Common_Get(now_private); - if ((int)Common_Get(player_no) == mPr_FOREIGNER) { - AnmPersonalID_c* foriegn_id = mNpc_GetOtherAnimalPersonalID(NULL, 0); - if (foriegn_id != NULL) { - mNpc_CopyAnimalPersonalID(&private->stored_anm_id, foriegn_id); - } - } - - mCPk_PakOpen(mCPk_get_pkinfo(), 0); - if (mCPk_SavePak(Save_Get(private), Save_Get(animals), mCPk_get_pkinfo()) == TRUE) { - if (mLd_PlayerManKindCheck() == FALSE) { - Common_Get(now_private)->exists = FALSE; + Private_c* private = Common_Get(now_private); + if ((int)Common_Get(player_no) == mPr_FOREIGNER) { + AnmPersonalID_c* foriegn_id = mNpc_GetOtherAnimalPersonalID(NULL, 0); + if (foriegn_id != NULL) { + mNpc_CopyAnimalPersonalID(&private->stored_anm_id, foriegn_id); + } } - save_menu->error = SAVE_ERROR_EXIT; // OK - } - else { - save_menu->error = SAVE_ERROR_CPAK; // Failed to save to CPak - } + mCPk_PakOpen(mCPk_get_pkinfo(), 0); + if (mCPk_SavePak(Save_Get(private_data), Save_Get(animals), mCPk_get_pkinfo()) == TRUE) { + if (mLd_PlayerManKindCheck() == FALSE) { + Common_Get(now_private)->exists = FALSE; + } + + save_menu->error = SAVE_ERROR_EXIT; // OK + } else { + save_menu->error = SAVE_ERROR_CPAK; // Failed to save to CPak + } } static void save_menu_move_do_save(GAME_SAVE_MENU* save_menu) { - static SAVE_MENU_PROC save_proc[SAVE_MODE_NUM] = { &save_menu_data_save_from, &save_menu_data_save_pak }; + static SAVE_MENU_PROC save_proc[SAVE_MODE_NUM] = { &save_menu_data_save_from, &save_menu_data_save_pak }; - int mode = save_menu->mode; + int mode = save_menu->mode; - /* Check and save to select location */ - if (chkTrigger(BUTTON_A)) { - (*save_proc[mode])(save_menu); - } - - /* Check and change selected save mode */ - if (chkTrigger(BUTTON_R) || chkTrigger(BUTTON_DUP) || chkTrigger(BUTTON_DDOWN)) { - save_menu->frame = 0; - save_menu_reset_cursor_col(save_menu->cursor_col + mode); - save_menu->mode++; - - if (save_menu->mode >= SAVE_MODE_NUM) { - save_menu->mode = SAVE_MODE_BEGIN; + /* Check and save to select location */ + if (chkTrigger(BUTTON_A)) { + (*save_proc[mode])(save_menu); } - } - /* Check if should exit menu */ - if (chkTrigger(BUTTON_B)) { - save_menu->error = SAVE_ERROR_EXIT; // OK - } + /* Check and change selected save mode */ + if (chkTrigger(BUTTON_R) || chkTrigger(BUTTON_DUP) || chkTrigger(BUTTON_DDOWN)) { + save_menu->frame = 0; + save_menu_reset_cursor_col(save_menu->cursor_col + mode); + save_menu->mode++; + + if (save_menu->mode >= SAVE_MODE_NUM) { + save_menu->mode = SAVE_MODE_BEGIN; + } + } + + /* Check if should exit menu */ + if (chkTrigger(BUTTON_B)) { + save_menu->error = SAVE_ERROR_EXIT; // OK + } } static void save_menu_move_finish(GAME_SAVE_MENU* save_menu) { - GAME_GOTO_NEXT((GAME*)save_menu, trademark, TRADEMARK); + GAME_GOTO_NEXT((GAME*)save_menu, trademark, TRADEMARK); } static void save_menu_move_err(GAME_SAVE_MENU* save_menu) { - save_menu->error = SAVE_ERROR_NONE; // cleared + save_menu->error = SAVE_ERROR_NONE; // cleared } static void save_menu_move_main(GAME_SAVE_MENU* save_menu) { - static SAVE_MENU_PROC sub_proc[SAVE_ERROR_NUM] = { - &save_menu_move_do_save, - &save_menu_move_err, - &save_menu_move_err, - &save_menu_move_finish - }; + static SAVE_MENU_PROC sub_proc[SAVE_ERROR_NUM] = { &save_menu_move_do_save, &save_menu_move_err, + &save_menu_move_err, &save_menu_move_finish }; - int error = save_menu->error; + int error = save_menu->error; - if (error >= SAVE_ERROR_NONE && error < SAVE_ERROR_NUM) { - (*sub_proc[error])(save_menu); - } + if (error >= SAVE_ERROR_NONE && error < SAVE_ERROR_NUM) { + (*sub_proc[error])(save_menu); + } - save_menu_set_cursor_col(save_menu); - save_menu->frame++; + save_menu_set_cursor_col(save_menu); + save_menu->frame++; - if (save_menu->frame == 40) { - save_menu->frame = 0; - } + if (save_menu->frame == 40) { + save_menu->frame = 0; + } } static void save_menu_draw_title(GAME_SAVE_MENU* save_menu) { - /* This translates to 'セーブ メニュー' (save menu), the devs didn't bother translating it */ - u8 title[] = { 0x9E, 0x90, 0xDF, CHAR_SPACE, 0xB2, 0xA6, 0x8D, 0x90 }; + /* This translates to 'セーブ メニュー' (save menu), the devs didn't bother translating it */ + u8 title[] = { 0x9E, 0x90, 0xDF, CHAR_SPACE, 0xB2, 0xA6, 0x8D, 0x90 }; - mFont_SetMatrix(save_menu->game.graph, mFont_MODE_FONT); - mFont_SetLineStrings_AndSpace((GAME*)save_menu, title, ARRAY_SIZE(title, u8), 110.0f, 30.0f, 200, 50, 50, 255, FALSE, TRUE, FALSE, 1.1f, 1.1f, mFont_MODE_FONT); - mFont_UnSetMatrix(save_menu->game.graph, mFont_MODE_FONT); + mFont_SetMatrix(save_menu->game.graph, mFont_MODE_FONT); + mFont_SetLineStrings_AndSpace((GAME*)save_menu, title, ARRAY_SIZE(title, u8), 110.0f, 30.0f, 200, 50, 50, 255, + FALSE, TRUE, FALSE, 1.1f, 1.1f, mFont_MODE_FONT); + mFont_UnSetMatrix(save_menu->game.graph, mFont_MODE_FONT); } static void save_menu_draw_push_a(GAME_SAVE_MENU* save_menu) { - /* Push A Button */ - u8 push_a[] = { CHAR_P, CHAR_u, CHAR_s, CHAR_h, CHAR_SPACE, CHAR_A, CHAR_SPACE, CHAR_B, CHAR_u, CHAR_t, CHAR_t, CHAR_o, CHAR_n }; + /* Push A Button */ + u8 push_a[] = { CHAR_P, CHAR_u, CHAR_s, CHAR_h, CHAR_SPACE, CHAR_A, CHAR_SPACE, + CHAR_B, CHAR_u, CHAR_t, CHAR_t, CHAR_o, CHAR_n }; - mFont_SetMatrix(save_menu->game.graph, mFont_MODE_FONT); - mFont_SetLineStrings_AndSpace((GAME*)save_menu, push_a, ARRAY_SIZE(push_a, u8), 95.0f, 175.0f, 200, 200, 200, 255, FALSE, TRUE, FALSE, 0.8f, 0.8f, mFont_MODE_FONT); - mFont_UnSetMatrix(save_menu->game.graph, mFont_MODE_FONT); + mFont_SetMatrix(save_menu->game.graph, mFont_MODE_FONT); + mFont_SetLineStrings_AndSpace((GAME*)save_menu, push_a, ARRAY_SIZE(push_a, u8), 95.0f, 175.0f, 200, 200, 200, 255, + FALSE, TRUE, FALSE, 0.8f, 0.8f, mFont_MODE_FONT); + mFont_UnSetMatrix(save_menu->game.graph, mFont_MODE_FONT); } static void save_menu_draw_select_r(GAME_SAVE_MENU* save_menu) { - /* Select R Button */ - u8 select_r[] = { CHAR_S, CHAR_e, CHAR_l, CHAR_e, CHAR_c, CHAR_t, CHAR_SPACE, CHAR_R, CHAR_SPACE, CHAR_B, CHAR_u, CHAR_t, CHAR_t, CHAR_o, CHAR_n }; + /* Select R Button */ + u8 select_r[] = { CHAR_S, CHAR_e, CHAR_l, CHAR_e, CHAR_c, CHAR_t, CHAR_SPACE, CHAR_R, + CHAR_SPACE, CHAR_B, CHAR_u, CHAR_t, CHAR_t, CHAR_o, CHAR_n }; - mFont_SetMatrix(save_menu->game.graph, mFont_MODE_FONT); - mFont_SetLineStrings_AndSpace((GAME*)save_menu, select_r, ARRAY_SIZE(select_r, u8), 76.0f, 185.0f, 200, 200, 200, 255, FALSE, TRUE, FALSE, 0.8f, 0.8f, mFont_MODE_FONT); - mFont_UnSetMatrix(save_menu->game.graph, mFont_MODE_FONT); + mFont_SetMatrix(save_menu->game.graph, mFont_MODE_FONT); + mFont_SetLineStrings_AndSpace((GAME*)save_menu, select_r, ARRAY_SIZE(select_r, u8), 76.0f, 185.0f, 200, 200, 200, + 255, FALSE, TRUE, FALSE, 0.8f, 0.8f, mFont_MODE_FONT); + mFont_UnSetMatrix(save_menu->game.graph, mFont_MODE_FONT); } static void save_menu_draw_push_b(GAME_SAVE_MENU* save_menu) { - /* Push B Button to EXIT */ - u8 push_b[] = { CHAR_P, CHAR_u, CHAR_s, CHAR_h, CHAR_SPACE, CHAR_B, CHAR_SPACE, CHAR_B, CHAR_u, CHAR_t, CHAR_t, CHAR_o, CHAR_n, CHAR_SPACE, CHAR_t, CHAR_o, CHAR_SPACE, CHAR_E, CHAR_X, CHAR_I, CHAR_T }; + /* Push B Button to EXIT */ + u8 push_b[] = { CHAR_P, CHAR_u, CHAR_s, CHAR_h, CHAR_SPACE, CHAR_B, CHAR_SPACE, + CHAR_B, CHAR_u, CHAR_t, CHAR_t, CHAR_o, CHAR_n, CHAR_SPACE, + CHAR_t, CHAR_o, CHAR_SPACE, CHAR_E, CHAR_X, CHAR_I, CHAR_T }; - mFont_SetMatrix(save_menu->game.graph, mFont_MODE_FONT); - mFont_SetLineStrings_AndSpace((GAME*)save_menu, push_b, ARRAY_SIZE(push_b, u8), 50.0f, 210.0f, 200, 200, 200, 255, FALSE, TRUE, FALSE, 0.8f, 0.8f, mFont_MODE_FONT); - mFont_UnSetMatrix(save_menu->game.graph, mFont_MODE_FONT); + mFont_SetMatrix(save_menu->game.graph, mFont_MODE_FONT); + mFont_SetLineStrings_AndSpace((GAME*)save_menu, push_b, ARRAY_SIZE(push_b, u8), 50.0f, 210.0f, 200, 200, 200, 255, + FALSE, TRUE, FALSE, 0.8f, 0.8f, mFont_MODE_FONT); + mFont_UnSetMatrix(save_menu->game.graph, mFont_MODE_FONT); } static void save_menu_draw_select_mode(GAME_SAVE_MENU* save_menu) { - /* + /* - [0] = 'FlashRom にセーブ' "Save to FlashRom" - [1] = 'パック にセーブ ' "Save to Pak" + [0] = 'FlashRom にセーブ' "Save to FlashRom" + [1] = 'パック にセーブ ' "Save to Pak" - */ - u8 select_mode[SAVE_MODE_NUM][13] = { - { CHAR_F, CHAR_l, CHAR_a, CHAR_s, CHAR_h, CHAR_R, CHAR_o, CHAR_m, CHAR_SPACE, 0x15, 0x9E, 0x90, 0xDF }, - { 0xE2, 0x8F, 0x98, CHAR_SPACE, 0x15, 0x9E, 0x90, 0xDF, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE }, - }; + */ + u8 select_mode[SAVE_MODE_NUM][13] = { + { CHAR_F, CHAR_l, CHAR_a, CHAR_s, CHAR_h, CHAR_R, CHAR_o, CHAR_m, CHAR_SPACE, 0x15, 0x9E, 0x90, 0xDF }, + { 0xE2, 0x8F, 0x98, CHAR_SPACE, 0x15, 0x9E, 0x90, 0xDF, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, + CHAR_SPACE }, + }; - mFont_SetMatrix(save_menu->game.graph, mFont_MODE_FONT); - mFont_SetLineStrings_AndSpace( - (GAME*)save_menu, - select_mode[SAVE_MODE_FLASHROM], ARRAY_SIZE(select_mode[SAVE_MODE_FLASHROM], u8), - 60.0f, 85.0f, - save_menu->cursor_col[SAVE_MODE_FLASHROM][0], save_menu->cursor_col[SAVE_MODE_FLASHROM][1], save_menu->cursor_col[SAVE_MODE_FLASHROM][2], 255, - FALSE, TRUE, FALSE, - 1.2f, 1.2f, - mFont_MODE_FONT - ); - mFont_UnSetMatrix(save_menu->game.graph, mFont_MODE_FONT); + mFont_SetMatrix(save_menu->game.graph, mFont_MODE_FONT); + mFont_SetLineStrings_AndSpace( + (GAME*)save_menu, select_mode[SAVE_MODE_FLASHROM], ARRAY_SIZE(select_mode[SAVE_MODE_FLASHROM], u8), 60.0f, + 85.0f, save_menu->cursor_col[SAVE_MODE_FLASHROM][0], save_menu->cursor_col[SAVE_MODE_FLASHROM][1], + save_menu->cursor_col[SAVE_MODE_FLASHROM][2], 255, FALSE, TRUE, FALSE, 1.2f, 1.2f, mFont_MODE_FONT); + mFont_UnSetMatrix(save_menu->game.graph, mFont_MODE_FONT); - mFont_SetMatrix(save_menu->game.graph, mFont_MODE_FONT); - mFont_SetLineStrings_AndSpace( - (GAME*)save_menu, - select_mode[SAVE_MODE_CPAK], ARRAY_SIZE(select_mode[SAVE_MODE_CPAK], u8), - 100.0f, 125.0f, - save_menu->cursor_col[SAVE_MODE_CPAK][0], save_menu->cursor_col[SAVE_MODE_CPAK][1], save_menu->cursor_col[SAVE_MODE_CPAK][2], 255, - FALSE, TRUE, FALSE, - 1.2f, 1.2f, - mFont_MODE_FONT - ); - mFont_UnSetMatrix(save_menu->game.graph, mFont_MODE_FONT); + mFont_SetMatrix(save_menu->game.graph, mFont_MODE_FONT); + mFont_SetLineStrings_AndSpace( + (GAME*)save_menu, select_mode[SAVE_MODE_CPAK], ARRAY_SIZE(select_mode[SAVE_MODE_CPAK], u8), 100.0f, 125.0f, + save_menu->cursor_col[SAVE_MODE_CPAK][0], save_menu->cursor_col[SAVE_MODE_CPAK][1], + save_menu->cursor_col[SAVE_MODE_CPAK][2], 255, FALSE, TRUE, FALSE, 1.2f, 1.2f, mFont_MODE_FONT); + mFont_UnSetMatrix(save_menu->game.graph, mFont_MODE_FONT); } extern void save_menu_draw_main(GAME_SAVE_MENU* save_menu) { - GRAPH* g = save_menu->game.graph; + GRAPH* g = save_menu->game.graph; - OPEN_DISP(g); + OPEN_DISP(g); - gSPSegment(NOW_POLY_OPA_DISP++, G_MWO_SEGMENT_0, 0); - DisplayList_initialize(g, 0, 0, 0, NULL); - gDPPipeSync(NOW_POLY_OPA_DISP++); + gSPSegment(NOW_POLY_OPA_DISP++, G_MWO_SEGMENT_0, 0); + DisplayList_initialize(g, 0, 0, 0, NULL); + gDPPipeSync(NOW_POLY_OPA_DISP++); - CLOSE_DISP(g); + CLOSE_DISP(g); - showView(&save_menu->view, VIEW_UPDATE_ALL); - save_menu_draw_title(save_menu); - save_menu_draw_push_a(save_menu); - save_menu_draw_select_r(save_menu); - save_menu_draw_push_b(save_menu); - save_menu_draw_select_mode(save_menu); + showView(&save_menu->view, VIEW_UPDATE_ALL); + save_menu_draw_title(save_menu); + save_menu_draw_push_a(save_menu); + save_menu_draw_select_r(save_menu); + save_menu_draw_push_b(save_menu); + save_menu_draw_select_mode(save_menu); } static void save_menu_main(GAME* game) { - GRAPH* g; - GAME_SAVE_MENU* save_menu = (GAME_SAVE_MENU*)game; - save_menu_move_main(save_menu); - save_menu_draw_main(save_menu); + GRAPH* g; + GAME_SAVE_MENU* save_menu = (GAME_SAVE_MENU*)game; + save_menu_move_main(save_menu); + save_menu_draw_main(save_menu); - g = game->graph; - game_debug_draw_last(game, g); - game_draw_last(g); + g = game->graph; + game_debug_draw_last(game, g); + game_draw_last(g); } -extern void save_menu_cleanup(GAME* game) { } +extern void save_menu_cleanup(GAME* game) { +} extern void save_menu_init(GAME* game) { - GRAPH* g = game->graph; - View* view; - GAME_SAVE_MENU* save_menu = (GAME_SAVE_MENU*)game; - int i; + GRAPH* g = game->graph; + View* view; + GAME_SAVE_MENU* save_menu = (GAME_SAVE_MENU*)game; + int i; - game->exec = &save_menu_main; - game->cleanup = &save_menu_cleanup; + game->exec = &save_menu_main; + game->cleanup = &save_menu_cleanup; - view = &save_menu->view; - initView(view, g); - view->flag = VIEW_UPDATE_ORTHOGRAPHIC; - new_Matrix(game); - SetGameFrame(1); + view = &save_menu->view; + initView(view, g); + view->flag = VIEW_UPDATE_ORTHOGRAPHIC; + new_Matrix(game); + SetGameFrame(1); - save_menu->frame = 0; - save_menu->mode = SAVE_MODE_BEGIN; - save_menu->error = SAVE_ERROR_NONE; + save_menu->frame = 0; + save_menu->mode = SAVE_MODE_BEGIN; + save_menu->error = SAVE_ERROR_NONE; - for (i = 0; i < SAVE_MODE_NUM; i++) { - save_menu_reset_cursor_col(save_menu->cursor_col + i); - } + for (i = 0; i < SAVE_MODE_NUM; i++) { + save_menu_reset_cursor_col(save_menu->cursor_col + i); + } } From f7474d2ff9f05ec6ee44466047e15c3782f32c33 Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Fri, 5 Jul 2024 03:59:20 +0000 Subject: [PATCH 048/234] a few quality of life updates to the dockerfile --- Dockerfile | 1 - 1 file changed, 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 0535d2bc..3186b800 100644 --- a/Dockerfile +++ b/Dockerfile @@ -39,7 +39,6 @@ RUN rm /usr/bin/cpp /usr/bin/g++ /lib/cpp RUN for file in $(find "/opt/devkitpro/devkitPPC/bin" -type f -name 'powerpc-eabi*'); do new_file=$(basename "$file" | sed 's/powerpc-eabi-//g'); update-alternatives --install "/usr/bin/$new_file" "$new_file" "$file" 0; done # --- stage ultralib headers --- -RUN mkdir -p /N64_SDK/ultra/usr/ RUN git clone https://github.com/decompals/ultralib.git /N64_SDK/ultra/usr/ # dockerfile does not seem to support extglob, so this monstrous command works around it to delete all of ultralib except the headers we need. RUN cd /N64_SDK/ultra/usr/ && find -type f -maxdepth 1 -delete && find . -not -name 'include' -type d -maxdepth 1 -exec rm -r "{}" \; From 2a6303ca88671273530082212df36f4f85761da0 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Mon, 8 Jul 2024 00:29:34 -0400 Subject: [PATCH 049/234] Implement & link ac_npc_guide --- config/rel_slices.yml | 4 + include/ac_common.h | 32 + include/ac_haniwa.h | 93 +- include/ac_npc.h | 15 +- include/ac_npc_anim_def.h | 265 ++++ include/ac_npc_guide.h | 28 +- include/ac_t_keitai.h | 3 +- include/ac_tools.h | 145 ++- include/ac_train_door.h | 8 +- include/audio_defs.h | 6 +- include/m_event.h | 2 + src/ac_ev_castaway.c | 103 +- src/ac_ev_ghost_schedule.c_inc | 471 +++---- src/ac_ev_majin.c | 62 +- src/ac_ev_majin_move.c_inc | 20 +- src/ac_haniwa.c | 134 +- src/ac_haniwa_move.c_inc | 36 +- src/ac_ins_goki.c | 2 +- src/ac_ins_ka.c | 2 +- src/ac_npc_curator_move.c_inc | 4 +- src/ac_npc_guide.c | 152 +++ src/ac_npc_guide_animation.c_inc | 56 + src/ac_npc_guide_move.c_inc | 908 +++++++++++++ src/ac_npc_sendo_move.c_inc | 2077 ++++++++++++++---------------- src/ac_t_keitai.c | 231 ++-- src/ac_t_umbrella.c | 434 +++---- src/ac_tools.c | 112 +- src/ac_train_door.c | 27 +- src/m_event.c | 2 +- src/m_scene.c | 24 +- src/m_soncho.c | 2 +- 31 files changed, 3286 insertions(+), 2174 deletions(-) create mode 100644 include/ac_common.h create mode 100644 include/ac_npc_anim_def.h create mode 100644 src/ac_npc_guide.c create mode 100644 src/ac_npc_guide_animation.c_inc create mode 100644 src/ac_npc_guide_move.c_inc diff --git a/config/rel_slices.yml b/config/rel_slices.yml index 507e9785..aede44d1 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -760,6 +760,10 @@ ac_npc_curator.c: ac_npc_engineer.c: .text: [0x80552984, 0x80552B5C] .data: [0x806A61C8, 0x806A6208] +ac_npc_guide.c: + .text: [0x80552B5C, 0x80554B00] + .rodata: [0x80649620, 0x806496A0] + .data: [0x806A6208, 0x806A6508] ac_npc_rcn_guide.c: .text: [0x8056EED0, 0x8056FFF0] .rodata: [0x806499C0, 0x806499E8] diff --git a/include/ac_common.h b/include/ac_common.h new file mode 100644 index 00000000..2ca103d8 --- /dev/null +++ b/include/ac_common.h @@ -0,0 +1,32 @@ +#ifndef AC_COMMON_H +#define AC_COMMON_H + +#include "types.h" +#include "m_actor.h" +#include "c_keyframe.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* sizeof(aCM_anime_c) == 0x7C */ +typedef struct actor_common_anime_s { + /* 0x00 */ int cur_keyframe; + /* 0x04 */ int state; + /* 0x08 */ cKF_SkeletonInfo_R_c keyframe; + /* 0x78 */ int anime_no; +} aCMN_anime_c; + +/* sizeof(CMN_ACTOR) == 0x210 */ +typedef struct actor_common_s { + /* 0x000 */ ACTOR actor_class; + /* 0x174 */ aCMN_anime_c anime; + /* 0x1F0 */ ClObjPipe_c col_pipe; + /* 0x20C */ int act; +} CMN_ACTOR; + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/ac_haniwa.h b/include/ac_haniwa.h index 9f873902..fb250757 100644 --- a/include/ac_haniwa.h +++ b/include/ac_haniwa.h @@ -2,79 +2,71 @@ #define AC_HANIWA_H #include "types.h" -#include "m_actor.h" -#include "c_keyframe.h" +#include "ac_common.h" #include "m_collision_obj.h" #ifdef __cplusplus extern "C" { #endif +#define aHNW_JOINT_NUM 8 + typedef struct actor_haniwa_s HANIWA_ACTOR; typedef void (*HANIWA_ACTOR_PROC)(ACTOR*, GAME*); enum haniwa_msg { - aHNW_MSG_NO_OWNER, - aHNW_MSG_PROCEEDS, - aHNW_MSG_NORMAL, - aHNW_MSG_OTHER_OWNER, - aHNW_MSG_NEED_FRIEND, + aHNW_MSG_NO_OWNER, + aHNW_MSG_PROCEEDS, + aHNW_MSG_NORMAL, + aHNW_MSG_OTHER_OWNER, + aHNW_MSG_NEED_FRIEND, - aHNW_MSG_NUM + aHNW_MSG_NUM }; enum haniwa_handover { - aHNW_HANDOVER_YES, - aHNW_HANDOVER_NO, + aHNW_HANDOVER_YES, + aHNW_HANDOVER_NO, - aHNW_HANDOVER_NUM + aHNW_HANDOVER_NUM }; enum haniwa_action { - aHNW_ACTION_WAIT, - aHNW_ACTION_DANCE, - aHNW_ACTION_CHECK_PROCEEDS, - aHNW_ACTION_TALK_WITH_MASTER, - aHNW_ACTION_TALK_WITH_MASTER2, - aHNW_ACTION_TALK_END_WAIT, - aHNW_ACTION_MENU_OPEN_WAIT, - aHNW_ACTION_MENU_END_WAIT, - aHNW_ACTION_TALK_WITH_GUEST, - aHNW_ACTION_MENU_OPEN_WAIT_FOR_GUEST, - aHNW_ACTION_MENU_END_WAIT_FOR_GUEST, - aHNW_ACTION_ROOF_CHECK, - aHNW_ACTION_SAVE_CHECK, - aHNW_ACTION_SAVE_END_WAIT, - aHNW_ACTION_PL_APPROACH_DOOR, - aHNW_ACTION_DOOR_OPEN_WAIT, - aHNW_ACTION_DOOR_OPEN_TIMER, + aHNW_ACTION_WAIT, + aHNW_ACTION_DANCE, + aHNW_ACTION_CHECK_PROCEEDS, + aHNW_ACTION_TALK_WITH_MASTER, + aHNW_ACTION_TALK_WITH_MASTER2, + aHNW_ACTION_TALK_END_WAIT, + aHNW_ACTION_MENU_OPEN_WAIT, + aHNW_ACTION_MENU_END_WAIT, + aHNW_ACTION_TALK_WITH_GUEST, + aHNW_ACTION_MENU_OPEN_WAIT_FOR_GUEST, + aHNW_ACTION_MENU_END_WAIT_FOR_GUEST, + aHNW_ACTION_ROOF_CHECK, + aHNW_ACTION_SAVE_CHECK, + aHNW_ACTION_SAVE_END_WAIT, + aHNW_ACTION_PL_APPROACH_DOOR, + aHNW_ACTION_DOOR_OPEN_WAIT, + aHNW_ACTION_DOOR_OPEN_TIMER, - aHNW_ACTION_NUM + aHNW_ACTION_NUM }; +/* sizeof(HANIWA_ACTOR) == 0x288 */ struct actor_haniwa_s { - ACTOR actor_class; - - int saved_current_frame; - int keyframe_state; - - cKF_SkeletonInfo_R_c keyframe; - int animation_state; - - ClObjPipe_c col_pipe; - - int action; - char* bank_ram_start; - s_xyz keyframe_work_area[8]; - s_xyz keyframe_morph_area[8]; - HANIWA_ACTOR_PROC action_proc; - f32 anim_frame_speed; - int player_approach_door_stage; - u16 door_approach_frame; - u8 submenu_type; - u8 house_idx; - u8 playing_save_bgm; + /* 0x000 */ CMN_ACTOR common_actor_class; + /* 0x210 */ char* bank_ram_start; + /* 0x214 */ s_xyz keyframe_work_area[aHNW_JOINT_NUM]; + /* 0x244 */ s_xyz keyframe_morph_area[aHNW_JOINT_NUM]; + /* 0x274 */ HANIWA_ACTOR_PROC action_proc; + /* 0x278 */ f32 anim_frame_speed; + /* 0x27C */ int player_approach_door_stage; + /* 0x280 */ u16 door_approach_frame; + /* 0x282 */ u8 submenu_type; + /* 0x283 */ u8 house_idx; + /* 0x284 */ u8 playing_save_bgm; }; extern ACTOR_PROFILE Haniwa_Profile; @@ -84,4 +76,3 @@ extern ACTOR_PROFILE Haniwa_Profile; #endif #endif - diff --git a/include/ac_npc.h b/include/ac_npc.h index 644e6fad..14f9b8ed 100644 --- a/include/ac_npc.h +++ b/include/ac_npc.h @@ -9,6 +9,7 @@ #include "m_actor_dlftbls.h" #include "m_npc.h" #include "c_keyframe.h" +#include "ac_npc_anim_def.h" #ifdef __cplusplus extern "C" { @@ -94,6 +95,7 @@ typedef void (*aNPC_MOVE_AFTER_PROC)(ACTOR*, GAME*); typedef void (*aNPC_DRAW_PROC)(ACTOR*, GAME*); typedef void (*aNPC_REBUILD_DMA_PROC)(); +typedef void (*aNPC_TALK_DEMO_PROC)(ACTOR*); typedef void (*aNPC_ANIMATION_INIT_PROC)(ACTOR*, int, int); typedef void (*aNPC_CHG_SCHEDULE_PROC)(NPC_ACTOR*, GAME_PLAY*, u8); typedef int (*aNPC_CLIP_THINK_PROC)(NPC_ACTOR*, GAME_PLAY*, int, int); @@ -121,7 +123,8 @@ struct ac_npc_clip_s { /* 0x0F0 */ void* _0F0; /* 0x0F4 */ aNPC_DRAW_PROC draw_proc; /* 0x0F8 */ aNPC_REBUILD_DMA_PROC rebuild_dma_proc; - /* 0x0FC */ void* _0FC[(0x114 - 0x0FC) / sizeof(void*)]; + /* 0x0FC */ void* _0FC[(0x110 - 0x0FC) / sizeof(void*)]; + /* 0x110 */ aNPC_TALK_DEMO_PROC talk_demo_proc; /* 0x114 */ aNPC_ANIMATION_INIT_PROC animation_init_proc; /* 0x118 */ aNPC_CHG_SCHEDULE_PROC chg_schedule_proc; /* 0x11C */ void* _11C; @@ -150,10 +153,10 @@ typedef struct npc_animation_s { /* TODO: draw data */ typedef struct npc_draw_info_s { /* 0x000 */ int main_animation_frame; - /* 0x004 */ int _04; // TODO: figure out where this is set + /* 0x004 */ int main_animation_state; /* 0x008 */ int main_animation_frame_changed; - /* 0x00C */ int _08; // TODO: figure out where this is set - /* 0x010 */ int _0C; // TODO: figure out where this is set + /* 0x00C */ int sub_animation0_state; + /* 0x010 */ int sub_animation1_state; /* 0x014 */ aNPC_ANIMATION_c main_animation; /* 0x1D0 */ aNPC_ANIMATION_c sub_animation0; /* 0x38C */ aNPC_ANIMATION_c sub_animation1; @@ -178,7 +181,9 @@ typedef struct npc_draw_info_s { /* 0x5BE */ u8 _5BE; /* 0x5BE */ u8 _5BF[0x5D0 - 0x5BF]; /* 0x5D0 */ f32 animation_speed; - /* 0x5D4 */ u8 _5D4[0x630 - 0x5D4]; + /* 0x5D4 */ u8 _5D4[0x5D8 - 0x5D4]; + /* 0x5D8 */ xyz_t shadow_pos; + /* 0x5E4 */ u8 _5E4[0x630 - 0x5E4]; } aNPC_draw_info_c; typedef void (*aNPC_THINK_PROC)(NPC_ACTOR*, GAME_PLAY*, int); diff --git a/include/ac_npc_anim_def.h b/include/ac_npc_anim_def.h new file mode 100644 index 00000000..b98bd76b --- /dev/null +++ b/include/ac_npc_anim_def.h @@ -0,0 +1,265 @@ +#ifndef AC_NPC_ANIM_DEF_H +#define AC_NPC_ANIM_DEF_H + +#include "types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +enum { + aNPC_ANIM_RUN1, + aNPC_ANIM_WALK1, + aNPC_ANIM_WALK_KI1, + aNPC_ANIM_WALK_DO1, + aNPC_ANIM_WALK_AI1, + aNPC_ANIM_WAIT1, + aNPC_ANIM_WAIT_KI1, + aNPC_ANIM_WAIT_DO1, + aNPC_ANIM_WAIT_AI1, + aNPC_ANIM_WAIT_NEMU1, + aNPC_ANIM_AISATU1, + aNPC_ANIM_AISATU2, + aNPC_ANIM_AISATU3, + aNPC_ANIM_AISATU4, + aNPC_ANIM_GURATUKU1, + aNPC_ANIM_OTIRU1, + aNPC_ANIM_OTIRU2, + aNPC_ANIM_MOGAKU1, + aNPC_ANIM_DERU1, + aNPC_ANIM_DERU2, + aNPC_ANIM_TALK_TURN1, + aNPC_ANIM_TALK1, + aNPC_ANIM_OPEN1, + aNPC_ANIM_GO_OUT1, + aNPC_ANIM_UMB_OPEN1, + aNPC_ANIM_UMB_CLOSE1, + aNPC_ANIM_TRANSFER1, + aNPC_ANIM_TRANS_WAIT1, + aNPC_ANIM_GET1, + aNPC_ANIM_GET_PULL1, + aNPC_ANIM_GET_PULL_WAIT1, + aNPC_ANIM_GET_PUTAWAY1, + aNPC_ANIM_GET_EAT1, + aNPC_ANIM_GET_CHANGE1, + aNPC_ANIM_GET_RETURN1, + aNPC_ANIM_TRANSFER_F1, + aNPC_ANIM_TRANS_WAIT_F1, + aNPC_ANIM_GET_F1, + aNPC_ANIM_GET_PULL_F1, + aNPC_ANIM_GET_PULL_WAIT_F1, + aNPC_ANIM_GET_PUTAWAY_F1, + aNPC_ANIM_GET_RETURN_F1, + aNPC_ANIM_ESTIMATE_F1, + aNPC_ANIM_CONTRACT1, + aNPC_ANIM_CONTRACT2, + aNPC_ANIM_CONTRACT3, + aNPC_ANIM_NOT_CONTRACT1, + aNPC_ANIM_FLY1, + aNPC_ANIM_FLYAWAY1, + aNPC_ANIM_DELIVERY1, + aNPC_ANIM_KYORO1, + aNPC_ANIM_LANDING1, + aNPC_ANIM_LANDING2, + aNPC_ANIM_LANDING3, + aNPC_ANIM_OPEN_D1, + aNPC_ANIM_SITDOWN_D1, + aNPC_ANIM_SITDOWN_WAIT_D1, + aNPC_ANIM_STANDUP_D1, + aNPC_ANIM_OPEN_D2, + aNPC_ANIM_TO_DECK_D1, + aNPC_ANIM_KEITAI_ON1, + aNPC_ANIM_KEITAI_TALK1, + aNPC_ANIM_KEITAI_TALK2, + aNPC_ANIM_KEITAI_OFF1, + aNPC_ANIM_WAIT_E1, + aNPC_ANIM_ENSOU_E1, + aNPC_ANIM_BANZAI1, + aNPC_ANIM_CLAP1, + aNPC_ANIM_KOKKURI_D1, + aNPC_ANIM_KOKKURI_D2, + aNPC_ANIM_SAISEN1, + aNPC_ANIM_OMAIRI1, + aNPC_ANIM_SITDOWN_WAIT1, + aNPC_ANIM_SITDOWN_DRINK1, + aNPC_ANIM_SITDOWN_CLAP1, + aNPC_ANIM_DANCE1, + aNPC_ANIM_KUISINBO1, + aNPC_ANIM_SANBASI1, + aNPC_ANIM_WAIT_R1, + aNPC_ANIM_APPEAR1, + aNPC_ANIM_GO_UG1, + aNPC_ANIM_INTRO1_A, + aNPC_ANIM_INTRO1_B, + aNPC_ANIM_TAISOU1, + aNPC_ANIM_TAISOU2, + aNPC_ANIM_TAISOU3_A, + aNPC_ANIM_TAISOU3_B, + aNPC_ANIM_TAISOU4_A, + aNPC_ANIM_TAISOU4_B, + aNPC_ANIM_TAISOU5_A, + aNPC_ANIM_TAISOU5_B, + aNPC_ANIM_TAISOU6_A, + aNPC_ANIM_TAISOU6_B, + aNPC_ANIM_TAISOU7, + aNPC_ANIM_KIDUKU1, + aNPC_ANIM_KIDUKU2, + aNPC_ANIM_CRACKER_WAIT1, + aNPC_ANIM_CRACKER_FIRE1, + aNPC_ANIM_CRACKER_RUN1, + aNPC_ANIM_CRACKER_COUNT1, + aNPC_ANIM_WARMUP1, + aNPC_ANIM_READY1, + aNPC_ANIM_ASIHUMI1, + aNPC_ANIM_KOKERU1, + aNPC_ANIM_KOKERU_GETUP1, + aNPC_ANIM_TIRED1, + aNPC_ANIM_TAMAKOME1, + aNPC_ANIM_YOUI1, + aNPC_ANIM_DON1, + aNPC_ANIM_TUNAHIKI_AIKO1, + aNPC_ANIM_TUNAHIKI_YURI1, + aNPC_ANIM_TUNAHIKI_FURI1, + aNPC_ANIM_HATAFURI1, + aNPC_ANIM_TAMAHIROI1, + aNPC_ANIM_TAMANAGE1, + aNPC_ANIM_GETUP_SEG1, + aNPC_ANIM_GETUP_WAIT_SEG1, + aNPC_ANIM_PIKU_SEG1, + aNPC_ANIM_4HAKU_E1, + aNPC_ANIM_3HAKU_E1, + aNPC_ANIM_SEND_MAIL1, + aNPC_ANIM_TURI_WAIT1, + aNPC_ANIM_MISIN1, + aNPC_ANIM_WIPKOGU1, + aNPC_ANIM_WIPWAIT1, + aNPC_ANIM_WIPWAIT2, + aNPC_ANIM_GSTWAIT1, + aNPC_ANIM_GYAFUN1, + aNPC_ANIM_GYAFUN2, + aNPC_ANIM_TKYKYORO1, + aNPC_ANIM_MUKA1, + aNPC_ANIM_MUKA2, + aNPC_ANIM_GAAAN1, + aNPC_ANIM_GAAAN2, + aNPC_ANIM_SMILE1, + aNPC_ANIM_SMILE2, + aNPC_ANIM_HA1, + aNPC_ANIM_HA2, + aNPC_ANIM_PUNPUN1, + aNPC_ANIM_PUNPUN2, + aNPC_ANIM_A1, + aNPC_ANIM_A2, + aNPC_ANIM_ASERU1, + aNPC_ANIM_ASERU2, + aNPC_ANIM_BURUBURU1, + aNPC_ANIM_BURUBURU2, + aNPC_ANIM_GOUKYU1, + aNPC_ANIM_GOUKYU2, + aNPC_ANIM_HAPPY1, + aNPC_ANIM_HAPPY2, + aNPC_ANIM_HATE1, + aNPC_ANIM_HATE2, + aNPC_ANIM_HIRAMEKI1, + aNPC_ANIM_HIRAMEKI2, + aNPC_ANIM_HYUUU1, + aNPC_ANIM_HYUUU2, + aNPC_ANIM_LOVELOVE1, + aNPC_ANIM_LOVELOVE2, + aNPC_ANIM_MUUUUU1, + aNPC_ANIM_MUUUUU2, + aNPC_ANIM_OTIKOMU1, + aNPC_ANIM_OTIKOMU2, + aNPC_ANIM_SHITUREN1, + aNPC_ANIM_SHITUREN2, + aNPC_ANIM_WARUDAKUMI1, + aNPC_ANIM_WARUDAKUMI2, + aNPC_ANIM_NEBOKE1, + aNPC_ANIM_NEBOKE2, + aNPC_ANIM_LOVE1, + aNPC_ANIM_LOVE2, + aNPC_ANIM_NIKO1, + aNPC_ANIM_MUSU1, + aNPC_ANIM_KOMARI1, + aNPC_ANIM_HATE_F1, + aNPC_ANIM_HATE_F2, + aNPC_ANIM_HA_F1, + aNPC_ANIM_HA_F2, + aNPC_ANIM_HAPPY_F1, + aNPC_ANIM_HAPPY_F2, + aNPC_ANIM_ASERU_F1, + aNPC_ANIM_ASERU_F2, + aNPC_ANIM_MUUUUU_F1, + aNPC_ANIM_MUUUUU_F2, + aNPC_ANIM_LOVELOVE_F1, + aNPC_ANIM_LOVELOVE_F2, + aNPC_ANIM_A_F1, + aNPC_ANIM_A_F2, + aNPC_ANIM_SMILE_F1, + aNPC_ANIM_SMILE_F2, + aNPC_ANIM_KOMARI_F1, + aNPC_ANIM_NIKO_F1, + aNPC_ANIM_MUSU_F1, + aNPC_ANIM_HATE_I1, + aNPC_ANIM_HATE_I2, + aNPC_ANIM_HA_I1, + aNPC_ANIM_HA_I2, + aNPC_ANIM_HAPPY_I1, + aNPC_ANIM_HAPPY_I2, + aNPC_ANIM_ASERU_I1, + aNPC_ANIM_ASERU_I2, + aNPC_ANIM_MUUUUU_I1, + aNPC_ANIM_MUUUUU_I2, + aNPC_ANIM_LOVE_I1, + aNPC_ANIM_LOVE_I2, + aNPC_ANIM_SHITUREN_I1, + aNPC_ANIM_SHITUREN_I2, + aNPC_ANIM_KOMARI_I1, + aNPC_ANIM_NIKO_I1, + aNPC_ANIM_MUSU_I1, + aNPC_ANIM_SMILE_D1, + aNPC_ANIM_SMILE_D2, + aNPC_ANIM_GAAAN_D1, + aNPC_ANIM_GAAAN_D2, + aNPC_ANIM_HIRAMEKI_D1, + aNPC_ANIM_HIRAMEKI_D2, + aNPC_ANIM_HA_D1, + aNPC_ANIM_HA_D2, + aNPC_ANIM_MUSU_D1, + aNPC_ANIM_NIKO_D1, + aNPC_ANIM_KOMARI_D1, + aNPC_ANIM_HATE_D1, + aNPC_ANIM_HATE_D2, + aNPC_ANIM_PUNPUN_R1, + aNPC_ANIM_PUNPUN_R2, + aNPC_ANIM_MUSU_R1, + aNPC_ANIM_HYUUU_R1, + aNPC_ANIM_HYUUU_R2, + aNPC_ANIM_A_R1, + aNPC_ANIM_A_R2, + aNPC_ANIM_A2_R1, + aNPC_ANIM_AKIRERU_R1, + aNPC_ANIM_AKIRERU_R2, + aNPC_ANIM_MATAROU_R1, + aNPC_ANIM_MATAROU_R2, + aNPC_ANIM_GEKIDO_R1, + aNPC_ANIM_GEKIDO_R2, + aNPC_ANIM_HA_E1, + aNPC_ANIM_HA_E2, + aNPC_ANIM_KEIREI1, + aNPC_ANIM_KIEEEEI1, + aNPC_ANIM_KIEEEEI2, + aNPC_ANIM_UMBRELLA1, + aNPC_ANIM_UTIWA_WAIT1, + aNPC_ANIM_TUE1, + aNPC_ANIM_KUTIPAKU1, + aNPC_ANIM_KUTIPAKU2, + + aNPC_ANIM_NUM +}; + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/ac_npc_guide.h b/include/ac_npc_guide.h index 36356e76..2f6d661f 100644 --- a/include/ac_npc_guide.h +++ b/include/ac_npc_guide.h @@ -3,11 +3,38 @@ #include "types.h" #include "m_actor.h" +#include "ac_npc.h" #ifdef __cplusplus extern "C" { #endif +typedef struct npc_guide_actor_s NPC_GUIDE_ACTOR; + +typedef void (*aNGD_PROC)(NPC_GUIDE_ACTOR*, GAME_PLAY*); + +struct npc_guide_actor_s { + NPC_ACTOR npc_class; + int action; + int next_action; + aNGD_PROC proc; + int lock_camera_flag; + int camera_morph_counter; + s16 camera_move; + s8 camera_move_cnt; + s8 camera_move_set_counter; + f32 camera_move_y; + f32 camera_move_range; + s16 camera_tilt_cur_angle; + s16 camera_tilt_goal_angle; + s16 camera_tilt_add; + int answer_flags; + ACTOR* train_door_actor; + int obj_look_type; + f32 obj_dist_ground; + int camera_eyes_flag; +}; + extern ACTOR_PROFILE Npc_Guide_Profile; #ifdef __cplusplus @@ -15,4 +42,3 @@ extern ACTOR_PROFILE Npc_Guide_Profile; #endif #endif - diff --git a/include/ac_t_keitai.h b/include/ac_t_keitai.h index e4d0af20..4d4ca7c7 100644 --- a/include/ac_t_keitai.h +++ b/include/ac_t_keitai.h @@ -13,7 +13,7 @@ extern ACTOR_PROFILE T_Keitai_Profile; typedef void (*KEITAI_PROC)(ACTOR*); -typedef struct t_keitai_s{ +typedef struct t_keitai_s { TOOLS_ACTOR tools_class; KEITAI_PROC action_proc; int action; @@ -34,4 +34,3 @@ typedef struct t_keitai_action_anim_s { #endif #endif - diff --git a/include/ac_tools.h b/include/ac_tools.h index a12ef03d..7aca802a 100644 --- a/include/ac_tools.h +++ b/include/ac_tools.h @@ -12,78 +12,97 @@ extern "C" { extern ACTOR_PROFILE Tools_Profile; typedef enum { - TOOL_UMBRELLA0, - TOOL_UMBRELLA1, - TOOL_UMBRELLA2, - TOOL_UMBRELLA3, - TOOL_UMBRELLA4, - TOOL_UMBRELLA5, - TOOL_UMBRELLA6, - TOOL_UMBRELLA7, - TOOL_UMBRELLA8, - TOOL_UMBRELLA9, - TOOL_UMBRELLA10, - TOOL_UMBRELLA11, - TOOL_UMBRELLA12, - TOOL_UMBRELLA13, - TOOL_UMBRELLA14, - TOOL_UMBRELLA15, - TOOL_UMBRELLA16, - TOOL_UMBRELLA17, - TOOL_UMBRELLA18, - TOOL_UMBRELLA19, - TOOL_UMBRELLA20, - TOOL_UMBRELLA21, - TOOL_UMBRELLA22, - TOOL_UMBRELLA23, - TOOL_UMBRELLA24, - TOOL_UMBRELLA25, - TOOL_UMBRELLA26, - TOOL_UMBRELLA27, - TOOL_UMBRELLA28, - TOOL_UMBRELLA29, - TOOL_UMBRELLA30, - TOOL_UMBRELLA31, - TOOL_UMBRELLA32, - TOOL_KEITAI, - TOOL_UTIWA, - TOOL_HANABI, - TOOL_CRACKER, - TOOL_PISTOL, - TOOL_FLAG, - TOOL_TUMBLER, - TOOL_NPC_SAO, - TOOL_TAMA1, - TOOL_TAMA2, - TOOL_TAMA3, - TOOL_TAMA4 + TOOL_UMBRELLA0, + TOOL_UMBRELLA1, + TOOL_UMBRELLA2, + TOOL_UMBRELLA3, + TOOL_UMBRELLA4, + TOOL_UMBRELLA5, + TOOL_UMBRELLA6, + TOOL_UMBRELLA7, + TOOL_UMBRELLA8, + TOOL_UMBRELLA9, + TOOL_UMBRELLA10, + TOOL_UMBRELLA11, + TOOL_UMBRELLA12, + TOOL_UMBRELLA13, + TOOL_UMBRELLA14, + TOOL_UMBRELLA15, + TOOL_UMBRELLA16, + TOOL_UMBRELLA17, + TOOL_UMBRELLA18, + TOOL_UMBRELLA19, + TOOL_UMBRELLA20, + TOOL_UMBRELLA21, + TOOL_UMBRELLA22, + TOOL_UMBRELLA23, + TOOL_UMBRELLA24, + TOOL_UMBRELLA25, + TOOL_UMBRELLA26, + TOOL_UMBRELLA27, + TOOL_UMBRELLA28, + TOOL_UMBRELLA29, + TOOL_UMBRELLA30, + TOOL_UMBRELLA31, + TOOL_ORG_UMBRELLA0, + TOOL_ORG_UMBRELLA1, + TOOL_ORG_UMBRELLA2, + TOOL_ORG_UMBRELLA3, + TOOL_ORG_UMBRELLA4, + TOOL_ORG_UMBRELLA5, + TOOL_ORG_UMBRELLA6, + TOOL_ORG_UMBRELLA7, + TOOL_KEITAI, + TOOL_UTIWA, + TOOL_HANABI, + TOOL_CRACKER, + TOOL_PISTOL, + TOOL_FLAG, + TOOL_TUMBLER, + TOOL_NPC_SAO, + TOOL_TAMA1, + TOOL_TAMA2, + TOOL_TAMA3, + TOOL_TAMA4, + + aTOL_NUM } ToolName; -typedef struct tools_s{ - /* 0x000 */ ACTOR actor_class; - /* 0x174 */ int tool_name; - /* 0x178 */ MtxF matrix_work; - /* 0x1B8 */ int init_matrix; - /* 0x1BC */ int unk1BC; - /* 0x1C0 */ int work0; - /* 0x1C4 */ int work1; - /* 0x1C8 */ int work2; -}TOOLS_ACTOR; +enum { + aTOL_ACTION_WAIT, + aTOL_ACTION_TAKEOUT, + aTOL_ACTION_PUTAWAY, + aTOL_ACTION_DESTRUCT, + aTOL_ACTION_S_TAKEOUT, + aTOL_ACTION_SPECIAL, + + aTOL_ACTION_NUM +}; + +typedef struct tools_s { + /* 0x000 */ ACTOR actor_class; + /* 0x174 */ int tool_name; + /* 0x178 */ MtxF matrix_work; + /* 0x1B8 */ int init_matrix; + /* 0x1BC */ int unk1BC; + /* 0x1C0 */ int work0; + /* 0x1C4 */ int work1; + /* 0x1C8 */ int work2; +} TOOLS_ACTOR; + +typedef ACTOR* (*ToolBirthProc)(int, int, ACTOR*, GAME*, s16, int*); +typedef int (*ToolChgRequestModeProc)(ACTOR*, ACTOR*, int); -typedef TOOLS_ACTOR* (*ToolBirthProc)(int, int, TOOLS_ACTOR*, GAME_PLAY*, s16, int*); -typedef int (*ToolChgRequestModeProc)(ACTOR*, TOOLS_ACTOR*, int); - typedef struct ToolClip { - ToolBirthProc aTOL_birth_proc; - ToolChgRequestModeProc aTOL_chg_request_mode_proc; - int bank_id; + ToolBirthProc aTOL_birth_proc; + ToolChgRequestModeProc aTOL_chg_request_mode_proc; + int bank_id; } aTOL_Clip_c; -extern aTOL_Clip_c aTOL_clip; +extern aTOL_Clip_c aTOL_clip; #ifdef __cplusplus } #endif #endif - diff --git a/include/ac_train_door.h b/include/ac_train_door.h index e783d6b8..83658cac 100644 --- a/include/ac_train_door.h +++ b/include/ac_train_door.h @@ -2,8 +2,7 @@ #define AC_TRAIN_DOOR_H #include "types.h" -#include "m_actor.h" -#include "c_keyframe.h" +#include "ac_common.h" #ifdef __cplusplus extern "C" { @@ -12,10 +11,7 @@ extern "C" { #define aTRD_JOINT_NUM 5 typedef struct traindoor_s { - /* 0x000 */ ACTOR actor_class; - /* 0x178 */ u8 pad[0x17C - 0x174]; - /* 0x17C */ cKF_SkeletonInfo_R_c keyframe; - /* 0x1EC */ u8 pad2[0x210 - 0x1EC]; + /* 0x000 */ CMN_ACTOR common_actor_class; /* 0x210 */ s_xyz work[aTRD_JOINT_NUM]; /* 0x22E */ s_xyz target[aTRD_JOINT_NUM]; /* 0x24C */ int open_flag; diff --git a/include/audio_defs.h b/include/audio_defs.h index d24a07ab..6bb37d99 100644 --- a/include/audio_defs.h +++ b/include/audio_defs.h @@ -74,9 +74,11 @@ typedef enum audio_sound_effects { NA_SE_STONECOIN_ROLL = 0x7D, NA_SE_STONECOIN_DRAG = 0x7E, - NA_SE_A8 = 0xA8, + NA_SE_TRAIN_RIDE = 0x8D, - NA_SE_CF = 0xCF, + NA_SE_GOKI_MOVE = 0xA8, + + NA_SE_KA_BUZZ = 0xCF, NA_SE_ROD_STROKE = 0x109, NA_SE_ROD_BACK, diff --git a/include/m_event.h b/include/m_event.h index 026cbf41..7dfe6908 100644 --- a/include/m_event.h +++ b/include/m_event.h @@ -573,8 +573,10 @@ typedef struct event_common_save_data { extern void mEv_clear_status(int event, s16 status); extern int mEv_CheckFirstJob(); +extern void mEv_SetFirstJob(); extern void mEv_UnSetFirstJob(); extern int mEv_CheckFirstIntro(); +extern void mEv_SetFirstIntro(); extern void mEv_UnSetFirstIntro(); extern int mEv_CheckArbeit(); extern int mEv_CheckTitleDemo(); diff --git a/src/ac_ev_castaway.c b/src/ac_ev_castaway.c index 28c0b9d6..85a6dd0b 100644 --- a/src/ac_ev_castaway.c +++ b/src/ac_ev_castaway.c @@ -10,91 +10,80 @@ static void aECST_actor_draw(ACTOR* actorx, GAME* game); static void aECST_actor_save(ACTOR* actorx, GAME* game); ACTOR_PROFILE Ev_Castaway_Profile = { - mAc_PROFILE_EV_CASTAWAY, - ACTOR_PART_NPC, - ACTOR_STATE_CAN_MOVE_IN_DEMO_SCENES | ACTOR_STATE_NO_MOVE_WHILE_CULLED, - EMPTY_NO, - ACTOR_OBJ_BANK_KEEP, - sizeof(EV_CASTAWAY_ACTOR), - &aECST_actor_ct, - &aECST_actor_dt, - &aECST_actor_init, - mActor_NONE_PROC1, - &aECST_actor_save + mAc_PROFILE_EV_CASTAWAY, + ACTOR_PART_NPC, + ACTOR_STATE_CAN_MOVE_IN_DEMO_SCENES | ACTOR_STATE_NO_MOVE_WHILE_CULLED, + EMPTY_NO, + ACTOR_OBJ_BANK_KEEP, + sizeof(EV_CASTAWAY_ACTOR), + &aECST_actor_ct, + &aECST_actor_dt, + &aECST_actor_init, + mActor_NONE_PROC1, + &aECST_actor_save, }; static void aECST_schedule_proc(NPC_ACTOR* actorx, GAME_PLAY* play, int type); static void aECST_actor_ct(ACTOR* actorx, GAME* game) { - static aNPC_ct_data_c ct_data = { - &aECST_actor_move, - &aECST_actor_draw, - 5, - NULL, - NULL, - NULL, - 0 - }; + static aNPC_ct_data_c ct_data = { &aECST_actor_move, &aECST_actor_draw, 5, NULL, NULL, NULL, 0 }; - static xyz_t def_pos = { 3580.0f, 0.0f, 4670.0f }; // 'G-5' @ 9-4 - - EV_CASTAWAY_ACTOR* castaway = (EV_CASTAWAY_ACTOR*)actorx; + static xyz_t def_pos = { 3580.0f, 0.0f, 4670.0f }; // 'G-5' @ 9-4 - if ((*Common_Get(clip).npc_clip->birth_check_proc)(actorx, game) == TRUE) { - castaway->npc_class.schedule.schedule_proc = &aECST_schedule_proc; - (*Common_Get(clip).npc_clip->ct_proc)(actorx, game, &ct_data); - castaway->npc_class.condition_info.demo_flg = ~aNPC_COND_DEMO_SKIP_MOVE_Y; // is this a mistake? - castaway->npc_class.condition_info.hide_request = FALSE; - castaway->npc_class.palActorIgnoreTimer = -1; - aNPC_SPNPC_BIT_SET(Common_Get(spnpc_first_talk_flags), aNPC_SPNPC_BIT_DOZAEMON); - actorx->status_data.weight = 254; - actorx->gravity = 0.0f; - actorx->max_velocity_y = 0.0f; - actorx->shape_info.rotation.y = DEG2SHORT_ANGLE(68.027344f); // 0x3060 - actorx->world.angle.y = DEG2SHORT_ANGLE(68.027344f); // 0x3060 - castaway->npc_class.movement.mv_angl = DEG2SHORT_ANGLE(68.027344f); // 0x3060 - actorx->world.position = def_pos; - actorx->home.position = def_pos; - } + EV_CASTAWAY_ACTOR* castaway = (EV_CASTAWAY_ACTOR*)actorx; + + if ((*Common_Get(clip).npc_clip->birth_check_proc)(actorx, game) == TRUE) { + castaway->npc_class.schedule.schedule_proc = &aECST_schedule_proc; + (*Common_Get(clip).npc_clip->ct_proc)(actorx, game, &ct_data); + castaway->npc_class.condition_info.demo_flg = ~aNPC_COND_DEMO_SKIP_MOVE_Y; // is this a mistake? + castaway->npc_class.condition_info.hide_request = FALSE; + castaway->npc_class.palActorIgnoreTimer = -1; + aNPC_SPNPC_BIT_SET(Common_Get(spnpc_first_talk_flags), aNPC_SPNPC_BIT_DOZAEMON); + actorx->status_data.weight = 254; + actorx->gravity = 0.0f; + actorx->max_velocity_y = 0.0f; + actorx->shape_info.rotation.y = DEG2SHORT_ANGLE(68.027344f); // 0x3060 + actorx->world.angle.y = DEG2SHORT_ANGLE(68.027344f); // 0x3060 + castaway->npc_class.movement.mv_angl = DEG2SHORT_ANGLE(68.027344f); // 0x3060 + actorx->world.position = def_pos; + actorx->home.position = def_pos; + } } static void aECST_actor_save(ACTOR* actorx, GAME* game) { - (*Common_Get(clip).npc_clip->save_proc)(actorx, game); + (*Common_Get(clip).npc_clip->save_proc)(actorx, game); } static void aECST_actor_dt(ACTOR* actorx, GAME* game) { - (*Common_Get(clip).npc_clip->dt_proc)(actorx, game); + (*Common_Get(clip).npc_clip->dt_proc)(actorx, game); } static void aECST_actor_init(ACTOR* actorx, GAME* game) { - (*Common_Get(clip).npc_clip->init_proc)(actorx, game); + (*Common_Get(clip).npc_clip->init_proc)(actorx, game); } static void aECST_schedule_main_proc(NPC_ACTOR* actorx, GAME_PLAY* play) { - if (actorx->draw.animation_id != 116) { - (*Common_Get(clip).npc_clip->animation_init_proc)((ACTOR*)actorx, 116, 0); - } + if (actorx->draw.animation_id != 116) { + (*Common_Get(clip).npc_clip->animation_init_proc)((ACTOR*)actorx, aNPC_ANIM_GETUP_WAIT_SEG1, 0); + } } static void aECST_schedule_proc(NPC_ACTOR* actorx, GAME_PLAY* play, int type) { - static aNPC_SUB_PROC sched_proc[2] = { - (aNPC_SUB_PROC)&none_proc1, - aECST_schedule_main_proc - }; + static aNPC_SUB_PROC sched_proc[2] = { (aNPC_SUB_PROC)&none_proc1, aECST_schedule_main_proc }; - (*sched_proc[type])(actorx, play); + (*sched_proc[type])(actorx, play); } static void aECST_actor_move(ACTOR* actorx, GAME* game) { - EV_CASTAWAY_ACTOR* castaway = (EV_CASTAWAY_ACTOR*)actorx; - s16 cycle = castaway->bobbing_cycle; + EV_CASTAWAY_ACTOR* castaway = (EV_CASTAWAY_ACTOR*)actorx; + s16 cycle = castaway->bobbing_cycle; - cycle += 512; - actorx->position_speed.y = (actorx->home.position.y + 4.0f + sin_s(cycle) * 4.0f) - actorx->world.position.y; - castaway->bobbing_cycle = cycle; - (*Common_Get(clip).npc_clip->move_proc)(actorx, game); + cycle += 512; + actorx->position_speed.y = (actorx->home.position.y + 4.0f + sin_s(cycle) * 4.0f) - actorx->world.position.y; + castaway->bobbing_cycle = cycle; + (*Common_Get(clip).npc_clip->move_proc)(actorx, game); } static void aECST_actor_draw(ACTOR* actorx, GAME* game) { - (*Common_Get(clip).npc_clip->draw_proc)(actorx, game); + (*Common_Get(clip).npc_clip->draw_proc)(actorx, game); } diff --git a/src/ac_ev_ghost_schedule.c_inc b/src/ac_ev_ghost_schedule.c_inc index 0423ba3a..e8e0de76 100644 --- a/src/ac_ev_ghost_schedule.c_inc +++ b/src/ac_ev_ghost_schedule.c_inc @@ -1,376 +1,305 @@ static void aEGH_look_player(EV_GHOST_ACTOR* ghost, GAME_PLAY* play) { - if (ghost->npc_class.action.step == aNPC_ACTION_END_STEP) { - u8 action = 4; - s16 player_y = ghost->npc_class.actor_class.player_angle_y; - s16 rot_y = ghost->npc_class.actor_class.shape_info.rotation.y; - s16 diff = player_y - rot_y; - - if (ABS(diff) < DEG2SHORT_ANGLE(67.5f)) { - action = 0; - } + if (ghost->npc_class.action.step == aNPC_ACTION_END_STEP) { + u8 action = 4; + s16 player_y = ghost->npc_class.actor_class.player_angle_y; + s16 rot_y = ghost->npc_class.actor_class.shape_info.rotation.y; + s16 diff = player_y - rot_y; - aEGH_set_request_act(ghost, 4, action, 2, 1, 0, 0); - } + if (ABS(diff) < DEG2SHORT_ANGLE(67.5f)) { + action = 0; + } + + aEGH_set_request_act(ghost, 4, action, 2, 1, 0, 0); + } } static int aEGH_bitset_func(u16 bit) { - u32 player_no = Common_Get(player_no); - mEv_gst_c* ghost_save = (mEv_gst_c*)mEv_get_save_area(mEv_EVENT_GHOST, 54); - mEv_gst_common_c* ghost_common = (mEv_gst_common_c*)mEv_get_common_area(mEv_EVENT_GHOST, 55); + u32 player_no = Common_Get(player_no); + mEv_gst_c* ghost_save = (mEv_gst_c*)mEv_get_save_area(mEv_EVENT_GHOST, 54); + mEv_gst_common_c* ghost_common = (mEv_gst_common_c*)mEv_get_common_area(mEv_EVENT_GHOST, 55); - if (player_no == mPr_FOREIGNER) { - if (ghost_common != NULL) { - ghost_common->flags |= bit; - return TRUE; + if (player_no == mPr_FOREIGNER) { + if (ghost_common != NULL) { + ghost_common->flags |= bit; + return TRUE; + } + } else if (ghost_save != NULL) { + ghost_save->flags |= (u16)(bit << player_no); + return TRUE; } - } - else if (ghost_save != NULL) { - ghost_save->flags |= (u16)(bit << player_no); - return TRUE; - } - return FALSE; + return FALSE; } static int aEGH_bitclr_func(u16 bit) { - u32 player_no = Common_Get(player_no); - mEv_gst_c* ghost_save = (mEv_gst_c*)mEv_get_save_area(mEv_EVENT_GHOST, 54); - mEv_gst_common_c* ghost_common = (mEv_gst_common_c*)mEv_get_common_area(mEv_EVENT_GHOST, 55); + u32 player_no = Common_Get(player_no); + mEv_gst_c* ghost_save = (mEv_gst_c*)mEv_get_save_area(mEv_EVENT_GHOST, 54); + mEv_gst_common_c* ghost_common = (mEv_gst_common_c*)mEv_get_common_area(mEv_EVENT_GHOST, 55); - if (player_no == mPr_FOREIGNER) { - if (ghost_common != NULL) { - ghost_common->flags &= ~bit; - return TRUE; + if (player_no == mPr_FOREIGNER) { + if (ghost_common != NULL) { + ghost_common->flags &= ~bit; + return TRUE; + } + } else if (ghost_save != NULL) { + ghost_save->flags &= ~(u16)(bit << player_no); + return TRUE; } - } - else if (ghost_save != NULL) { - ghost_save->flags &= ~(u16)(bit << player_no); - return TRUE; - } - return FALSE; + return FALSE; } static u16 aEGH_bitcheck_func(u16 bit) { - u32 player_no = Common_Get(player_no); - mEv_gst_c* ghost_save = (mEv_gst_c*)mEv_get_save_area(mEv_EVENT_GHOST, 54); - mEv_gst_common_c* ghost_common = (mEv_gst_common_c*)mEv_get_common_area(mEv_EVENT_GHOST, 55); + u32 player_no = Common_Get(player_no); + mEv_gst_c* ghost_save = (mEv_gst_c*)mEv_get_save_area(mEv_EVENT_GHOST, 54); + mEv_gst_common_c* ghost_common = (mEv_gst_common_c*)mEv_get_common_area(mEv_EVENT_GHOST, 55); - if (player_no == mPr_FOREIGNER) { - if (ghost_common != NULL) { - return ghost_common->flags & bit; + if (player_no == mPr_FOREIGNER) { + if (ghost_common != NULL) { + return ghost_common->flags & bit; + } + } else if (ghost_save != NULL) { + return (u16)(bit << player_no) & ghost_save->flags; } - } - else if (ghost_save != NULL) { - return (u16)(bit << player_no) & ghost_save->flags; - } - return FALSE; + return FALSE; } static int aEGH_equal_block(EV_GHOST_ACTOR* ghost, GAME_PLAY* play) { - int bx; - int bz; + int bx; + int bz; - mFI_Wpos2BlockNum(&bx, &bz, GET_PLAYER_ACTOR(play)->actor_class.world.position); - return bx == ghost->npc_class.actor_class.block_x && bz == ghost->npc_class.actor_class.block_z; + mFI_Wpos2BlockNum(&bx, &bz, GET_PLAYER_ACTOR(play)->actor_class.world.position); + return bx == ghost->npc_class.actor_class.block_x && bz == ghost->npc_class.actor_class.block_z; } static int aEGH_time_over() { - return Common_Get(time.now_sec) > (4 * mTM_SECONDS_IN_HOUR); + return Common_Get(time.now_sec) > (4 * mTM_SECONDS_IN_HOUR); } static void aEGH_byebye_check(EV_GHOST_ACTOR* ghost, GAME_PLAY* play) { - ACTOR* actorx = (ACTOR*)ghost; + ACTOR* actorx = (ACTOR*)ghost; - if ( - mDemo_Check(mDemo_TYPE_TALK, actorx) == FALSE && - mDemo_Check(mDemo_TYPE_SPEAK, actorx) == FALSE && - aEGH_time_over() != FALSE - ) { - if (aEGH_equal_block(ghost, play)) { - switch (ghost->think_act) { - case aEGH_THINK_SPEAK: - { - aEGH_setup_think_proc(ghost, play, aEGH_THINK_BYEBYE); - ghost->msg_no = 0x2EDD; - ghost->npc_class.actor_class.talk_distance = 1000.0f; - ghost->_9AA = 1; - break; - } + if (mDemo_Check(mDemo_TYPE_TALK, actorx) == FALSE && mDemo_Check(mDemo_TYPE_SPEAK, actorx) == FALSE && + aEGH_time_over() != FALSE) { + if (aEGH_equal_block(ghost, play)) { + switch (ghost->think_act) { + case aEGH_THINK_SPEAK: { + aEGH_setup_think_proc(ghost, play, aEGH_THINK_BYEBYE); + ghost->msg_no = 0x2EDD; + ghost->npc_class.actor_class.talk_distance = 1000.0f; + ghost->_9AA = 1; + break; + } - case aEGH_THINK_NORMAL_WAIT: - case aEGH_THINK_IRAI_AF: - case aEGH_THINK_BYE: - case aEGH_THINK_WELCOM: - { - Actor_delete((ACTOR*)ghost); - break; + case aEGH_THINK_NORMAL_WAIT: + case aEGH_THINK_IRAI_AF: + case aEGH_THINK_BYE: + case aEGH_THINK_WELCOM: { + Actor_delete((ACTOR*)ghost); + break; + } + } + } else { + aEGH_setup_think_proc(ghost, play, aEGH_THINK_IRAI); } - } } - else { - aEGH_setup_think_proc(ghost, play, aEGH_THINK_IRAI); - } - } } static void aEGH_irai(EV_GHOST_ACTOR* ghost, GAME_PLAY* play) { - if (ghost->npc_class.actor_class.player_distance_xz > 220.0f) { - aEGH_setup_think_proc(ghost, play, aEGH_THINK_BYE); - } + if (ghost->npc_class.actor_class.player_distance_xz > 220.0f) { + aEGH_setup_think_proc(ghost, play, aEGH_THINK_BYE); + } } static void aEGH_bye(EV_GHOST_ACTOR* ghost, GAME_PLAY* play) { - if (ghost->npc_class.actor_class.player_distance_xz < 200.0f) { - aEGH_setup_think_proc(ghost, play, aEGH_THINK_WELCOM); - } + if (ghost->npc_class.actor_class.player_distance_xz < 200.0f) { + aEGH_setup_think_proc(ghost, play, aEGH_THINK_WELCOM); + } } static void aEGH_byebye(EV_GHOST_ACTOR* ghost, GAME_PLAY* play) { - if (ghost->alpha == 0) { - Actor_delete((ACTOR*)ghost); - } - else { - if (ghost->bye_bye_timer != 0) { - ghost->bye_bye_timer--; + if (ghost->alpha == 0) { + Actor_delete((ACTOR*)ghost); + } else { + if (ghost->bye_bye_timer != 0) { + ghost->bye_bye_timer--; - if (ghost->bye_bye_timer == 0) { - sAdo_SysTrgStart(0x16C); - } - } - else { - if (ghost->bye_bye_angle < 30000) { - ghost->bye_bye_angle += 60; - } + if (ghost->bye_bye_timer == 0) { + sAdo_SysTrgStart(0x16C); + } + } else { + if (ghost->bye_bye_angle < 30000) { + ghost->bye_bye_angle += 60; + } - ghost->npc_class.actor_class.shape_info.rotation.y += ghost->bye_bye_angle; - ghost->npc_class.actor_class.world.angle.y = ghost->npc_class.actor_class.shape_info.rotation.y; - ghost->npc_class.movement.mv_angl = ghost->npc_class.actor_class.world.angle.y; - ghost->npc_class.movement.mv_add_angl = 0; - } + ghost->npc_class.actor_class.shape_info.rotation.y += ghost->bye_bye_angle; + ghost->npc_class.actor_class.world.angle.y = ghost->npc_class.actor_class.shape_info.rotation.y; + ghost->npc_class.movement.mv_angl = ghost->npc_class.actor_class.world.angle.y; + ghost->npc_class.movement.mv_add_angl = 0; + } - if (ghost->bye_bye_scale_timer != 0) { - ghost->bye_bye_scale_timer--; + if (ghost->bye_bye_scale_timer != 0) { + ghost->bye_bye_scale_timer--; + } else { + ghost->npc_class.actor_class.scale.x += -0.00004f; + ghost->npc_class.actor_class.scale.z = ghost->npc_class.actor_class.scale.x; + } } - else { - ghost->npc_class.actor_class.scale.x += -0.00004f; - ghost->npc_class.actor_class.scale.z = ghost->npc_class.actor_class.scale.x; - } - } } static void aEGH_speak_byebye(EV_GHOST_ACTOR* ghost, GAME_PLAY* play) { - ACTOR* actorx = (ACTOR*)ghost; + ACTOR* actorx = (ACTOR*)ghost; - if ( - mDemo_Check(mDemo_TYPE_TALK, actorx) == FALSE && - mDemo_Check(mDemo_TYPE_SPEAK, actorx) == FALSE && - aEGH_equal_block(ghost, play) == FALSE - ) { - aEGH_setup_think_proc(ghost, play, aEGH_THINK_IRAI); - } + if (mDemo_Check(mDemo_TYPE_TALK, actorx) == FALSE && mDemo_Check(mDemo_TYPE_SPEAK, actorx) == FALSE && + aEGH_equal_block(ghost, play) == FALSE) { + aEGH_setup_think_proc(ghost, play, aEGH_THINK_IRAI); + } } static void aEGH_think_main_proc(NPC_ACTOR* actorx, GAME_PLAY* play) { - EV_GHOST_ACTOR* ghost = (EV_GHOST_ACTOR*)actorx; + EV_GHOST_ACTOR* ghost = (EV_GHOST_ACTOR*)actorx; - (*ghost->think_proc)(ghost, play); - aEGH_look_player(ghost, play); + (*ghost->think_proc)(ghost, play); + aEGH_look_player(ghost, play); } static void aEGH_think_init_proc(NPC_ACTOR* actorx, GAME_PLAY* play) { - EV_GHOST_ACTOR* ghost = (EV_GHOST_ACTOR*)actorx; - u8 think_act; + EV_GHOST_ACTOR* ghost = (EV_GHOST_ACTOR*)actorx; + u8 think_act; - if (ghost->_9AC) { - ghost->_9AC = FALSE; - } - else { - if (aEGH_bitcheck_func(aEGH_BIT_FOUND_GHOST)) { - ghost->alpha = 140; - think_act = aEGH_THINK_SPEAK; - } - else { - ghost->alpha = 0; - think_act = aEGH_THINK_IRAI_AF; - } + if (ghost->_9AC) { + ghost->_9AC = FALSE; + } else { + if (aEGH_bitcheck_func(aEGH_BIT_FOUND_GHOST)) { + ghost->alpha = 140; + think_act = aEGH_THINK_SPEAK; + } else { + ghost->alpha = 0; + think_act = aEGH_THINK_IRAI_AF; + } - actorx->actor_class.status_data.weight = 255; - actorx->condition_info.hide_request = FALSE; - aEGH_setup_think_proc(ghost, play, think_act); - actorx->condition_info.demo_flg = aNPC_COND_DEMO_SKIP_FOOTSTEPS_VFX | - aNPC_COND_DEMO_SKIP_FEEL_CHECK | - aNPC_COND_DEMO_SKIP_FOOTSTEPS | - aNPC_COND_DEMO_SKIP_ENTRANCE_CHECK | - aNPC_COND_DEMO_SKIP_HEAD_LOOKAT; - } + actorx->actor_class.status_data.weight = 255; + actorx->condition_info.hide_request = FALSE; + aEGH_setup_think_proc(ghost, play, think_act); + actorx->condition_info.demo_flg = aNPC_COND_DEMO_SKIP_FOOTSTEPS_VFX | aNPC_COND_DEMO_SKIP_FEEL_CHECK | + aNPC_COND_DEMO_SKIP_FOOTSTEPS | aNPC_COND_DEMO_SKIP_ENTRANCE_CHECK | + aNPC_COND_DEMO_SKIP_HEAD_LOOKAT; + } } static void aEGH_normal_wait_init(EV_GHOST_ACTOR* ghost, GAME_PLAY* play) { - (*Common_Get(clip).npc_clip->animation_init_proc)((ACTOR*)ghost, 126, FALSE); - ghost->npc_class.draw.main_animation.keyframe.frame_control.mode = cKF_FRAMECONTROL_REPEAT; - ghost->npc_class.action.idx = 0; - aEGH_set_request_act(ghost, 4, 0, 0, 0, 0, 0); + (*Common_Get(clip).npc_clip->animation_init_proc)((ACTOR*)ghost, aNPC_ANIM_GSTWAIT1, FALSE); + ghost->npc_class.draw.main_animation.keyframe.frame_control.mode = cKF_FRAMECONTROL_REPEAT; + ghost->npc_class.action.idx = 0; + aEGH_set_request_act(ghost, 4, 0, 0, 0, 0, 0); } static void aEGH_irai_init(EV_GHOST_ACTOR* ghost, GAME_PLAY* play) { - ghost->npc_class.actor_class.talk_distance = 80.0f; - aEGH_normal_wait_init(ghost, play); - ghost->msg_no = 0x2EE2; + ghost->npc_class.actor_class.talk_distance = 80.0f; + aEGH_normal_wait_init(ghost, play); + ghost->msg_no = 0x2EE2; } static void aEGH_irai_af_init(EV_GHOST_ACTOR* ghost, GAME_PLAY* play) { - ghost->npc_class.actor_class.talk_distance = 55.0f; - ghost->msg_no = 0x2EE7; - (*Common_Get(clip).npc_clip->chg_schedule_proc)((NPC_ACTOR*)ghost, play, 5); - ghost->npc_class.actor_class.status_data.weight = 80; + ghost->npc_class.actor_class.talk_distance = 55.0f; + ghost->msg_no = 0x2EE7; + (*Common_Get(clip).npc_clip->chg_schedule_proc)((NPC_ACTOR*)ghost, play, 5); + ghost->npc_class.actor_class.status_data.weight = 80; } static void aEGH_bye_init(EV_GHOST_ACTOR* ghost, GAME_PLAY* play) { - ghost->npc_class.actor_class.talk_distance = 280.0f; - aEGH_normal_wait_init(ghost, play); - ghost->msg_no = 0x2ED8; + ghost->npc_class.actor_class.talk_distance = 280.0f; + aEGH_normal_wait_init(ghost, play); + ghost->msg_no = 0x2ED8; } static void aEGH_welcom_init(EV_GHOST_ACTOR* ghost, GAME_PLAY* play) { - ghost->npc_class.actor_class.talk_distance = 200.0f; - aEGH_normal_wait_init(ghost, play); - ghost->msg_no = 0x2ED3; + ghost->npc_class.actor_class.talk_distance = 200.0f; + aEGH_normal_wait_init(ghost, play); + ghost->msg_no = 0x2ED3; } static void aEGH_byebye_init(EV_GHOST_ACTOR* ghost, GAME_PLAY* play) { - aEGH_bitclr_func(aEGH_BIT_FOUND_GHOST); - ghost->bye_bye_angle = -1000; - ghost->bye_bye_timer = 25; - ghost->bye_bye_scale_timer = 48; - ghost->bye_bye_transparency_delay_timer = 43; - aEGH_normal_wait_init(ghost, play); - ghost->npc_class.head.lock_flag = TRUE; + aEGH_bitclr_func(aEGH_BIT_FOUND_GHOST); + ghost->bye_bye_angle = -1000; + ghost->bye_bye_timer = 25; + ghost->bye_bye_scale_timer = 48; + ghost->bye_bye_transparency_delay_timer = 43; + aEGH_normal_wait_init(ghost, play); + ghost->npc_class.head.lock_flag = TRUE; } static aEGH_setup_c dt_tbl[aEGH_THINK_NUM] = { - { - aEGH_THINK_PROC_BYE, - aEGH_THINK_INIT_NORMAL_WAIT, - aEGH_TALK_REQUEST_NONE, - aEGH_TALK_END_WAIT, - aEGH_THINK_NORMAL_WAIT - }, - { - aEGH_THINK_PROC_BYEBYE, - aEGH_THINK_INIT_BYEBYE, - aEGH_TALK_REQUEST_NONE, - aEGH_TALK_END_WAIT, - aEGH_THINK_IRAI - }, + { aEGH_THINK_PROC_BYE, aEGH_THINK_INIT_NORMAL_WAIT, aEGH_TALK_REQUEST_NONE, aEGH_TALK_END_WAIT, + aEGH_THINK_NORMAL_WAIT }, + { aEGH_THINK_PROC_BYEBYE, aEGH_THINK_INIT_BYEBYE, aEGH_TALK_REQUEST_NONE, aEGH_TALK_END_WAIT, aEGH_THINK_IRAI }, - { - aEGH_THINK_PROC_NONE, - aEGH_THINK_INIT_WELCOM, - aEGH_TALK_REQUEST_FORCE, - aEGH_TALK_END_WAIT, - aEGH_THINK_WELCOM - }, + { aEGH_THINK_PROC_NONE, aEGH_THINK_INIT_WELCOM, aEGH_TALK_REQUEST_FORCE, aEGH_TALK_END_WAIT, aEGH_THINK_WELCOM }, - { - aEGH_THINK_PROC_BYE, - aEGH_THINK_INIT_BYE, - aEGH_TALK_REQUEST_FORCE, - aEGH_TALK_GIVE_ME_WAIT, - aEGH_THINK_NORMAL_WAIT - }, + { aEGH_THINK_PROC_BYE, aEGH_THINK_INIT_BYE, aEGH_TALK_REQUEST_FORCE, aEGH_TALK_GIVE_ME_WAIT, + aEGH_THINK_NORMAL_WAIT }, - { - aEGH_THINK_PROC_IRAI, - aEGH_THINK_INIT_IRAI, - aEGH_TALK_REQUEST_FORCE, - aEGH_TALK_SELECT_WAIT, - aEGH_THINK_SPEAK - }, + { aEGH_THINK_PROC_IRAI, aEGH_THINK_INIT_IRAI, aEGH_TALK_REQUEST_FORCE, aEGH_TALK_SELECT_WAIT, aEGH_THINK_SPEAK }, - { - aEGH_THINK_PROC_SPEAK_BYEBYE, - aEGH_THINK_INIT_NORMAL_WAIT, - aEGH_TALK_REQUEST_FORCE, - aEGH_TALK_SELECT_ROOF, - aEGH_THINK_IRAI - }, + { aEGH_THINK_PROC_SPEAK_BYEBYE, aEGH_THINK_INIT_NORMAL_WAIT, aEGH_TALK_REQUEST_FORCE, aEGH_TALK_SELECT_ROOF, + aEGH_THINK_IRAI }, - { - aEGH_THINK_PROC_NONE, - aEGH_THINK_INIT_IRAI_AF, - aEGH_TALK_REQUEST_NORM, - aEGH_TALK_END_WAIT, - aEGH_THINK_SPEAK - } + { aEGH_THINK_PROC_NONE, aEGH_THINK_INIT_IRAI_AF, aEGH_TALK_REQUEST_NORM, aEGH_TALK_END_WAIT, aEGH_THINK_SPEAK } }; -static aEGH_PROC proc_table[aEGH_THINK_PROC_NUM] = { - (aEGH_PROC)&none_proc1, - &aEGH_irai, - &aEGH_bye, - &aEGH_byebye, - &aEGH_speak_byebye -}; +static aEGH_PROC proc_table[aEGH_THINK_PROC_NUM] = { (aEGH_PROC)&none_proc1, &aEGH_irai, &aEGH_bye, &aEGH_byebye, + &aEGH_speak_byebye }; -static aEGH_PROC init_table[aEGH_THINK_INIT_NUM] = { - (aEGH_PROC)&none_proc1, - &aEGH_normal_wait_init, - &aEGH_irai_init, - &aEGH_irai_af_init, - &aEGH_bye_init, - &aEGH_welcom_init, - &aEGH_byebye_init -}; +static aEGH_PROC init_table[aEGH_THINK_INIT_NUM] = { (aEGH_PROC)&none_proc1, &aEGH_normal_wait_init, &aEGH_irai_init, + &aEGH_irai_af_init, &aEGH_bye_init, &aEGH_welcom_init, + &aEGH_byebye_init }; static void aEGH_setup_think_proc(EV_GHOST_ACTOR* ghost, GAME_PLAY* play, u8 think_act) { - static aNPC_TALK_REQUEST_PROC talk_request_table[aEGH_TALK_REQUEST_NUM] = { - (aNPC_TALK_REQUEST_PROC)&none_proc1, - &aEGH_norm_talk_request, - &aEGH_force_talk_request - }; - - aEGH_setup_c* data = &dt_tbl[think_act]; + static aNPC_TALK_REQUEST_PROC talk_request_table[aEGH_TALK_REQUEST_NUM] = { (aNPC_TALK_REQUEST_PROC)&none_proc1, + &aEGH_norm_talk_request, + &aEGH_force_talk_request }; - ghost->think_act = think_act; - ghost->think_proc = proc_table[data->think_proc]; - ghost->npc_class.talk_info.talk_request_proc = talk_request_table[data->talk_request_proc]; - ghost->talk_act = data->talk_act; - ghost->after_talk_think_act = data->talk_after_act; - (*init_table[data->think_init_proc])(ghost, play); - ghost->_9A7 = TRUE; + aEGH_setup_c* data = &dt_tbl[think_act]; + + ghost->think_act = think_act; + ghost->think_proc = proc_table[data->think_proc]; + ghost->npc_class.talk_info.talk_request_proc = talk_request_table[data->talk_request_proc]; + ghost->talk_act = data->talk_act; + ghost->after_talk_think_act = data->talk_after_act; + (*init_table[data->think_init_proc])(ghost, play); + ghost->_9A7 = TRUE; } static void aEGH_think_proc(NPC_ACTOR* actorx, GAME_PLAY* play, int think_type) { - switch (think_type) { - case 0: - aEGH_think_init_proc(actorx, play); - break; - case 1: - aEGH_think_main_proc(actorx, play); - break; - } + switch (think_type) { + case 0: + aEGH_think_init_proc(actorx, play); + break; + case 1: + aEGH_think_main_proc(actorx, play); + break; + } } static void aEGH_schedule_init_proc(NPC_ACTOR* actorx, GAME_PLAY* play) { - actorx->think.think_proc = &aEGH_think_proc; - (*Common_Get(clip).npc_clip->think_proc)(actorx, play, aNPC_THINK_SPECIAL, 0); + actorx->think.think_proc = &aEGH_think_proc; + (*Common_Get(clip).npc_clip->think_proc)(actorx, play, aNPC_THINK_SPECIAL, 0); } static void aEGH_schedule_main_proc(NPC_ACTOR* actorx, GAME_PLAY* play) { - if ((*Common_Get(clip).npc_clip->think_proc)(actorx, play, -1, 1) == FALSE) { - (*Common_Get(clip).npc_clip->think_proc)(actorx, play, -1, 2); - } + if ((*Common_Get(clip).npc_clip->think_proc)(actorx, play, -1, 1) == FALSE) { + (*Common_Get(clip).npc_clip->think_proc)(actorx, play, -1, 2); + } } static void aEGH_schedule_proc(NPC_ACTOR* actorx, GAME_PLAY* play, int sched_type) { - switch (sched_type) { - case 0: - aEGH_schedule_init_proc(actorx, play); - break; - case 1: - aEGH_schedule_main_proc(actorx, play); - break; - } + switch (sched_type) { + case 0: + aEGH_schedule_init_proc(actorx, play); + break; + case 1: + aEGH_schedule_main_proc(actorx, play); + break; + } } diff --git a/src/ac_ev_majin.c b/src/ac_ev_majin.c index 58bdfa11..82a995ac 100644 --- a/src/ac_ev_majin.c +++ b/src/ac_ev_majin.c @@ -9,17 +9,10 @@ extern void aEMJ_actor_init(ACTOR*, GAME*); extern void aEMJ_actor_save(ACTOR*, GAME*); ACTOR_PROFILE Ev_Majin_Profile = { - mAc_PROFILE_EV_MAJIN, - ACTOR_PART_NPC, - ACTOR_STATE_NO_DRAW_WHILE_CULLED | ACTOR_STATE_NO_MOVE_WHILE_CULLED, - SP_NPC_EV_MAJIN, - ACTOR_OBJ_BANK_KEEP, - sizeof(EV_NPCMAJIN_ACTOR), - aEMJ_actor_ct, - aEMJ_actor_dt, - aEMJ_actor_init, - NONE_ACTOR_PROC, - aEMJ_actor_save, + mAc_PROFILE_EV_MAJIN, ACTOR_PART_NPC, ACTOR_STATE_NO_DRAW_WHILE_CULLED | ACTOR_STATE_NO_MOVE_WHILE_CULLED, + SP_NPC_EV_MAJIN, ACTOR_OBJ_BANK_KEEP, sizeof(EV_NPCMAJIN_ACTOR), + aEMJ_actor_ct, aEMJ_actor_dt, aEMJ_actor_init, + NONE_ACTOR_PROC, aEMJ_actor_save, }; extern void aEMJ_actor_move(ACTOR*, GAME*); @@ -31,57 +24,50 @@ static void aEMJ_schedule_proc(NPC_ACTOR*, GAME_PLAY*, int); void aEMJ_actor_ct(ACTOR* actor, GAME* game) { static aNPC_ct_data_c ct_data = { - &aEMJ_actor_move, - &aEMJ_actor_draw, - 5, - mActor_NONE_PROC1, - &aEMJ_talk_init, - &aEMJ_talk_end_chk, - 0, + &aEMJ_actor_move, &aEMJ_actor_draw, 5, mActor_NONE_PROC1, &aEMJ_talk_init, &aEMJ_talk_end_chk, 0, }; EV_NPCMAJIN_ACTOR* majin = (EV_NPCMAJIN_ACTOR*)actor; - - if(Common_Get(clip.npc_clip)->birth_check_proc(actor,game) == TRUE){ + + if (Common_Get(clip.npc_clip)->birth_check_proc(actor, game) == TRUE) { majin->npc_class.schedule.schedule_proc = aEMJ_schedule_proc; - Common_Get(clip.npc_clip)->ct_proc(actor,game,&ct_data); + Common_Get(clip.npc_clip)->ct_proc(actor, game, &ct_data); majin->npc_class.head.lock_flag = 1; - majin->npc_class.talk_info.default_turn_animation = 0x4E; - majin->npc_class.talk_info.default_animation = 0x4E; + majin->npc_class.talk_info.default_turn_animation = aNPC_ANIM_WAIT_R1; + majin->npc_class.talk_info.default_animation = aNPC_ANIM_WAIT_R1; majin->npc_class.talk_info.turn = 2; } } void aEMJ_actor_save(ACTOR* actor, GAME* game) { - Common_Get(clip.npc_clip)->save_proc(actor,game); + Common_Get(clip.npc_clip)->save_proc(actor, game); } void aEMJ_actor_dt(ACTOR* actor, GAME* game) { - - if(Common_Get(clip.groundhog_control_clip) != NULL){ + + if (Common_Get(clip.groundhog_control_clip) != NULL) { Common_Get(clip.groundhog_control_clip)->groundhog_npc_actor = NULL; } - Common_Get(clip.npc_clip)->dt_proc(actor,game); - Common_Get(clip.effect_clip)->effect_kill_proc(0x5D, 0xFFFF); - + Common_Get(clip.npc_clip)->dt_proc(actor, game); + Common_Get(clip.effect_clip)->effect_kill_proc(eEC_EFFECT_RESET_HOLE, RSV_NO); } void aEMJ_actor_init(ACTOR* actor, GAME* game) { - Common_Get(clip.npc_clip)->init_proc(actor,game); + Common_Get(clip.npc_clip)->init_proc(actor, game); } -void aEMJ_set_animation(ACTOR* actor, int idx){ - static s16 animeSeqNo[] = {79,78,80}; - - Common_Get(clip.npc_clip)->animation_init_proc(actor,animeSeqNo[idx],0); +void aEMJ_set_animation(ACTOR* actor, int idx) { + static s16 animeSeqNo[] = { aNPC_ANIM_APPEAR1, aNPC_ANIM_WAIT_R1, aNPC_ANIM_GO_UG1 }; + + Common_Get(clip.npc_clip)->animation_init_proc(actor, animeSeqNo[idx], 0); } -void aEMJ_actor_move(ACTOR* actor, GAME* game){ - Common_Get(clip.npc_clip)->move_proc(actor,game); +void aEMJ_actor_move(ACTOR* actor, GAME* game) { + Common_Get(clip.npc_clip)->move_proc(actor, game); actor->shape_info.draw_shadow = 0; } void aEMJ_actor_draw(ACTOR* actor, GAME* game) { - Common_Get(clip.npc_clip)->draw_proc(actor,game); + Common_Get(clip.npc_clip)->draw_proc(actor, game); } -#include "../src/ac_ev_majin_move.c_inc" \ No newline at end of file +#include "../src/ac_ev_majin_move.c_inc" diff --git a/src/ac_ev_majin_move.c_inc b/src/ac_ev_majin_move.c_inc index 5d690c21..e82b754b 100644 --- a/src/ac_ev_majin_move.c_inc +++ b/src/ac_ev_majin_move.c_inc @@ -18,8 +18,8 @@ void aEMJ_act_init_proc(NPC_ACTOR* actor, GAME_PLAY* play) { } void aEMJ_act_proc(NPC_ACTOR* actor, GAME_PLAY* play, int idx) { - static aNPC_SUB_PROC act_proc[] = {aEMJ_act_init_proc, (aNPC_SUB_PROC)mActor_NONE_PROC1, - (aNPC_SUB_PROC)mActor_NONE_PROC1}; + static aNPC_SUB_PROC act_proc[] = { aEMJ_act_init_proc, (aNPC_SUB_PROC)mActor_NONE_PROC1, + (aNPC_SUB_PROC)mActor_NONE_PROC1 }; act_proc[idx](actor, play); } @@ -27,13 +27,13 @@ void aEMJ_act_proc(NPC_ACTOR* actor, GAME_PLAY* play, int idx) { void aEMJ_appear(NPC_ACTOR* actor, GAME_PLAY* play) { EV_NPCMAJIN_ACTOR* majin = (EV_NPCMAJIN_ACTOR*)actor; - if (majin->npc_class.draw._04 == 1) { + if (majin->npc_class.draw.main_animation_state == cKF_STATE_STOPPED) { aEMJ_setup_think_proc(actor, 1); } } void aEMJ_retire(NPC_ACTOR* actor, GAME_PLAY* play) { - if (actor->draw._04 == 1) { + if (actor->draw.main_animation_state == cKF_STATE_STOPPED) { ((NPC_ACTOR*)(actor->actor_class.parent_actor))->npc_info.animal = (Animal_c*)1; Actor_delete(&actor->actor_class); } @@ -64,9 +64,9 @@ void aEMJ_think_init_proc(ACTOR* actor, GAME* game) { void aEMJ_setup_think_proc(NPC_ACTOR* actor, int idx) { static NPC_DT_PROCS dt_tbl[] = { - {aEMJ_appear, (aNPC_SUB_PROC)none_proc1}, - {(aNPC_SUB_PROC)none_proc1, aEMJ_force_talk_request}, - {aEMJ_retire, (aNPC_SUB_PROC)none_proc1}, + { aEMJ_appear, (aNPC_SUB_PROC)none_proc1 }, + { (aNPC_SUB_PROC)none_proc1, aEMJ_force_talk_request }, + { aEMJ_retire, (aNPC_SUB_PROC)none_proc1 }, }; EV_NPCMAJIN_ACTOR* majin = (EV_NPCMAJIN_ACTOR*)actor; @@ -106,7 +106,7 @@ void aEMJ_schedule_main_proc(NPC_ACTOR* actor, GAME_PLAY* play) { } void aEMJ_schedule_proc(NPC_ACTOR* actor, GAME_PLAY* play, int idx) { - static aNPC_SUB_PROC sche_proc[] = {aEMJ_schedule_init_proc, aEMJ_schedule_main_proc}; + static aNPC_SUB_PROC sche_proc[] = { aEMJ_schedule_init_proc, aEMJ_schedule_main_proc }; sche_proc[idx](actor, play); } @@ -132,8 +132,8 @@ void aEMJ_set_force_talk_info() { mDemo_Set_msg_num(msg_num); } -void aEMJ_force_talk_request(NPC_ACTOR* actor, GAME_PLAY* play) { - mDemo_Request(10, &actor->actor_class, aEMJ_set_force_talk_info); +void aEMJ_force_talk_request(NPC_ACTOR* actor, GAME_PLAY* play) { + mDemo_Request(10, &actor->actor_class, aEMJ_set_force_talk_info); } int aEMJ_talk_init(ACTOR* actor, GAME* play) { diff --git a/src/ac_haniwa.c b/src/ac_haniwa.c index d5045fc8..37cd434d 100644 --- a/src/ac_haniwa.c +++ b/src/ac_haniwa.c @@ -32,107 +32,89 @@ static void aHNW_actor_init(ACTOR* actor, GAME* game); static void aHNW_actor_draw(ACTOR* actor, GAME* game); ACTOR_PROFILE Haniwa_Profile = { - mAc_PROFILE_HANIWA, - ACTOR_PART_BG, - ACTOR_STATE_NONE, - ACTOR_PROP_HANIWA0, - ACTOR_OBJ_BANK_12, - sizeof(HANIWA_ACTOR), + mAc_PROFILE_HANIWA, ACTOR_PART_BG, ACTOR_STATE_NONE, ACTOR_PROP_HANIWA0, ACTOR_OBJ_BANK_12, + sizeof(HANIWA_ACTOR), - &aHNW_actor_ct, - &aHNW_actor_dt, - &aHNW_actor_init, - (mActor_proc)&none_proc1, - NULL + &aHNW_actor_ct, &aHNW_actor_dt, &aHNW_actor_init, (mActor_proc)&none_proc1, NULL }; -static ClObjPipeData_c AcHaniwaCoInfoData = { - { 57, 32, ClObj_TYPE_PIPE }, - { 1 }, - { 20, 30, 0, { 0, 0, 0 } } -}; +static ClObjPipeData_c AcHaniwaCoInfoData = { { 57, 32, ClObj_TYPE_PIPE }, { 1 }, { 20, 30, 0, { 0, 0, 0 } } }; -static StatusData_c AcHaniwaStatusData = { - 0, - 20, 30, 0, - 254 -}; +static StatusData_c AcHaniwaStatusData = { 0, 20, 30, 0, 254 }; /* TODO: ct, dt, & draw are in their own TU */ static void aHNW_actor_ct(ACTOR* actor, GAME* game) { - HANIWA_ACTOR* haniwa = (HANIWA_ACTOR*)actor; - ClObjPipe_c* pipe; - cKF_SkeletonInfo_R_c* keyframe = &haniwa->keyframe; - GAME_PLAY* play = (GAME_PLAY*)game; + HANIWA_ACTOR* haniwa = (HANIWA_ACTOR*)actor; + ClObjPipe_c* pipe; + cKF_SkeletonInfo_R_c* keyframe = &haniwa->common_actor_class.anime.keyframe; + GAME_PLAY* play = (GAME_PLAY*)game; - cKF_SkeletonInfo_R_ct(keyframe, &cKF_bs_r_hnw, NULL, haniwa->keyframe_work_area, haniwa->keyframe_morph_area); + cKF_SkeletonInfo_R_ct(keyframe, &cKF_bs_r_hnw, NULL, haniwa->keyframe_work_area, haniwa->keyframe_morph_area); - pipe = &haniwa->col_pipe; - ClObjPipe_ct(game, pipe); - ClObjPipe_set5(game, pipe, actor, &AcHaniwaCoInfoData); - CollisionCheck_Status_set3(&haniwa->actor_class.status_data, &AcHaniwaStatusData); + pipe = &haniwa->common_actor_class.col_pipe; + ClObjPipe_ct(game, pipe); + ClObjPipe_set5(game, pipe, actor, &AcHaniwaCoInfoData); + CollisionCheck_Status_set3(&haniwa->common_actor_class.actor_class.status_data, &AcHaniwaStatusData); - { - Object_Bank_c* bank = &play->object_exchange.banks[actor->data_bank_id]; - haniwa->bank_ram_start = bank->ram_start; - } + { + Object_Bank_c* bank = &play->object_exchange.banks[actor->data_bank_id]; + haniwa->bank_ram_start = bank->ram_start; + } - haniwa->animation_state = 2; - haniwa->house_idx = actor->npc_id - ACTOR_PROP_HANIWA0; - actor->talk_distance = 43.0f; + haniwa->common_actor_class.anime.anime_no = 2; + haniwa->house_idx = actor->npc_id - ACTOR_PROP_HANIWA0; + actor->talk_distance = 43.0f; } static void aHNW_actor_dt(ACTOR* actor, GAME* game) { - HANIWA_ACTOR* haniwa = (HANIWA_ACTOR*)actor; - GAME_PLAY* play = (GAME_PLAY*)game; + HANIWA_ACTOR* haniwa = (HANIWA_ACTOR*)actor; + GAME_PLAY* play = (GAME_PLAY*)game; - if (haniwa->playing_save_bgm) { - mBGMPsComp_delete_ps_demo(0x41, 0x168); - } + if (haniwa->playing_save_bgm) { + mBGMPsComp_delete_ps_demo(0x41, 0x168); + } - cKF_SkeletonInfo_R_dt(&haniwa->keyframe); - ClObjPipe_dt(game, &haniwa->col_pipe); + cKF_SkeletonInfo_R_dt(&haniwa->common_actor_class.anime.keyframe); + ClObjPipe_dt(game, &haniwa->common_actor_class.col_pipe); } #include "../src/ac_haniwa_move.c_inc" static void aHNW_actor_draw(ACTOR* actor, GAME* game) { - static Gfx hnw_tex_model[] = { - gsDPLoadTLUT_Dolphin(15, 16, 1, hnw_face), - gsSPEndDisplayList(), - }; + static Gfx hnw_tex_model[] = { + gsDPLoadTLUT_Dolphin(15, 16, 1, hnw_face), + gsSPEndDisplayList(), + }; - HANIWA_ACTOR* haniwa = (HANIWA_ACTOR*)actor; - cKF_SkeletonInfo_R_c* keyframe = &haniwa->keyframe; - GRAPH* g = game->graph; - Mtx* m; - - m = GRAPH_ALLOC_TYPE(g, Mtx, keyframe->skeleton->num_shown_joints); + HANIWA_ACTOR* haniwa = (HANIWA_ACTOR*)actor; + cKF_SkeletonInfo_R_c* keyframe = &haniwa->common_actor_class.anime.keyframe; + GRAPH* g = game->graph; + Mtx* m; - if (m != NULL) { - Gfx* gfx; - int house_idx = haniwa->house_idx; - _texture_z_light_fog_prim(g); + m = GRAPH_ALLOC_TYPE(g, Mtx, keyframe->skeleton->num_shown_joints); - OPEN_DISP(g); - gfx = NOW_POLY_OPA_DISP; + if (m != NULL) { + Gfx* gfx; + int house_idx = haniwa->house_idx; + _texture_z_light_fog_prim(g); - gSPSegment(gfx++, G_MWO_SEGMENT_B, hnw_tmem_txt); + OPEN_DISP(g); + gfx = NOW_POLY_OPA_DISP; - if (mPr_NullCheckPersonalID(&Save_Get(homes[house_idx]).ownerID) != TRUE && - Common_Get(player_no) == mHS_get_pl_no(house_idx) - ) { - gDPSetPrimColor(gfx++, 0, 128, 255, 255, 255, 255); + gSPSegment(gfx++, G_MWO_SEGMENT_B, hnw_tmem_txt); + + if (mPr_NullCheckPersonalID(&Save_Get(homes[house_idx]).ownerID) != TRUE && + Common_Get(player_no) == mHS_get_pl_no(house_idx)) { + gDPSetPrimColor(gfx++, 0, 128, 255, 255, 255, 255); + } else { + gDPSetPrimColor(gfx++, 0, 128, 255, 255, 255, 255); + } + + gSPDisplayList(gfx++, hnw_tex_model); + + SET_POLY_OPA_DISP(gfx); + CLOSE_DISP(g); + + cKF_Si3_draw_R_SV(game, keyframe, m, NULL, NULL, actor); } - else { - gDPSetPrimColor(gfx++, 0, 128, 255, 255, 255, 255); - } - - gSPDisplayList(gfx++, hnw_tex_model); - - SET_POLY_OPA_DISP(gfx); - CLOSE_DISP(g); - - cKF_Si3_draw_R_SV(game, keyframe, m, NULL, NULL, actor); - } } diff --git a/src/ac_haniwa_move.c_inc b/src/ac_haniwa_move.c_inc index 789cadf3..f8480caa 100644 --- a/src/ac_haniwa_move.c_inc +++ b/src/ac_haniwa_move.c_inc @@ -646,11 +646,11 @@ static void aHNW_setupAction(ACTOR* actor, GAME* game, int action) { HANIWA_ACTOR* haniwa = (HANIWA_ACTOR*)actor; int house_idx = haniwa->house_idx; - int animation_state = haniwa->animation_state; + int animation_state = haniwa->common_actor_class.anime.anime_no; int no_owner = mPr_NullCheckPersonalID(&Save_Get(homes[house_idx]).ownerID); int owner_is_player = mHS_get_pl_no(house_idx) == Common_Get(player_no); - haniwa->action = action; + haniwa->common_actor_class.act = action; haniwa->action_proc = process[action]; if (action >= aHNW_ACTION_CHECK_PROCEEDS) { @@ -674,37 +674,39 @@ static void aHNW_setupAction(ACTOR* actor, GAME* game, int action) { } if (animation_state == 2) { - cKF_SkeletonInfo_R_init(&haniwa->keyframe, haniwa->keyframe.skeleton, &cKF_ba_r_hnw_move, 1.0f, 9.0f, 1.0f, - haniwa->anim_frame_speed, 0.0f, cKF_FRAMECONTROL_REPEAT, NULL); - haniwa->saved_current_frame = haniwa->keyframe.frame_control.current_frame; + cKF_SkeletonInfo_R_init(&haniwa->common_actor_class.anime.keyframe, + haniwa->common_actor_class.anime.keyframe.skeleton, &cKF_ba_r_hnw_move, 1.0f, 9.0f, + 1.0f, haniwa->anim_frame_speed, 0.0f, cKF_FRAMECONTROL_REPEAT, NULL); + haniwa->common_actor_class.anime.cur_keyframe = + haniwa->common_actor_class.anime.keyframe.frame_control.current_frame; } - haniwa->animation_state = 0; + haniwa->common_actor_class.anime.anime_no = 0; aHNW_init_proc(actor, game, action); if (no_owner && action < aHNW_ACTION_CHECK_PROCEEDS) { - haniwa->keyframe.frame_control.mode = cKF_FRAMECONTROL_STOP; + haniwa->common_actor_class.anime.keyframe.frame_control.mode = cKF_FRAMECONTROL_STOP; } else { - haniwa->keyframe.frame_control.mode = cKF_FRAMECONTROL_REPEAT; + haniwa->common_actor_class.anime.keyframe.frame_control.mode = cKF_FRAMECONTROL_REPEAT; } } static void aHNW_common_process(ACTOR* actor, GAME* game) { HANIWA_ACTOR* haniwa = (HANIWA_ACTOR*)actor; - cKF_SkeletonInfo_R_c* keyframe = &haniwa->keyframe; + cKF_SkeletonInfo_R_c* keyframe = &haniwa->common_actor_class.anime.keyframe; int house_idx = haniwa->house_idx; int no_owner = mPr_NullCheckPersonalID(&Save_Get(homes[house_idx]).ownerID); f32 target; if (no_owner == FALSE && keyframe->frame_control.mode == cKF_FRAMECONTROL_STOP) { - aHNW_setupAction((ACTOR*)haniwa, game, haniwa->action); + aHNW_setupAction((ACTOR*)haniwa, game, haniwa->common_actor_class.act); keyframe->frame_control.mode = cKF_FRAMECONTROL_REPEAT; - } else if (no_owner && haniwa->action < 2 && keyframe->frame_control.speed <= 0.1f) { + } else if (no_owner && haniwa->common_actor_class.act < 2 && keyframe->frame_control.speed <= 0.1f) { keyframe->frame_control.mode = cKF_FRAMECONTROL_STOP; } else { keyframe->frame_control.mode = cKF_FRAMECONTROL_REPEAT; } - if (no_owner == FALSE || haniwa->action >= aHNW_ACTION_CHECK_PROCEEDS) { + if (no_owner == FALSE || haniwa->common_actor_class.act >= aHNW_ACTION_CHECK_PROCEEDS) { aHNW_search_player((ACTOR*)haniwa); } else { aHNW_search_front((ACTOR*)haniwa, house_idx); @@ -724,13 +726,13 @@ static void aHNW_common_process(ACTOR* actor, GAME* game) { static void aHNW_actor_move(ACTOR* actor, GAME* game) { HANIWA_ACTOR* haniwa = (HANIWA_ACTOR*)actor; GAME_PLAY* play = (GAME_PLAY*)game; - cKF_SkeletonInfo_R_c* keyframe = &haniwa->keyframe; + cKF_SkeletonInfo_R_c* keyframe = &haniwa->common_actor_class.anime.keyframe; - haniwa->keyframe_state = cKF_SkeletonInfo_R_play(keyframe); + haniwa->common_actor_class.anime.state = cKF_SkeletonInfo_R_play(keyframe); (*haniwa->action_proc)((ACTOR*)haniwa, game); aHNW_common_process(actor, game); - CollisionCheck_Uty_ActorWorldPosSetPipeC(actor, &haniwa->col_pipe); - CollisionCheck_setOC(game, &play->collision_check, &haniwa->col_pipe.collision_obj); + CollisionCheck_Uty_ActorWorldPosSetPipeC(actor, &haniwa->common_actor_class.col_pipe); + CollisionCheck_setOC(game, &play->collision_check, &haniwa->common_actor_class.col_pipe.collision_obj); Actor_world_to_eye(actor, 50.0f); } @@ -743,6 +745,6 @@ static void aHNW_actor_init(ACTOR* actor, GAME* game) { actor->dw_proc = &aHNW_actor_draw; aHNW_setupAction((ACTOR*)haniwa, game, aHNW_ACTION_WAIT); // weird that we have to re-cast to ACTOR so fequently for matches - haniwa->keyframe.morph_counter = 0.0f; + haniwa->common_actor_class.anime.keyframe.morph_counter = 0.0f; aHNW_actor_move(actor, game); } diff --git a/src/ac_ins_goki.c b/src/ac_ins_goki.c index 1857804c..3e73789c 100644 --- a/src/ac_ins_goki.c +++ b/src/ac_ins_goki.c @@ -268,7 +268,7 @@ static void aIGK_move_on_flower(ACTOR* actorx, GAME* game) { aIGK_MOVE_TIMER(insect)--; if (aIGK_MOVE_TIMER(insect) <= 0) { - sAdo_OngenPos((u32)actorx, NA_SE_A8, &actorx->world.position); + sAdo_OngenPos((u32)actorx, NA_SE_GOKI_MOVE, &actorx->world.position); insect->timer = (int)(2 * (90.0f + RANDOM_F(90.0f))); aIGK_setupAction(insect, aIGK_ACTION_WAIT_ON_FLOWER, game); } else { diff --git a/src/ac_ins_ka.c b/src/ac_ins_ka.c index f899b9ae..1f68413d 100644 --- a/src/ac_ins_ka.c +++ b/src/ac_ins_ka.c @@ -283,7 +283,7 @@ static void aIKA_actor_move(ACTOR* actorx, GAME* game) { aIKA_setupAction(insect, aIKA_ACTION_LET_ESCAPE, game); } else { if (insect->action != aIKA_ACTION_ATTACK) { - sAdo_OngenPos((u32)actorx, NA_SE_CF, &actorx->world.position); + sAdo_OngenPos((u32)actorx, NA_SE_KA_BUZZ, &actorx->world.position); } if (insect->insect_flags.bit_3 == TRUE && insect->insect_flags.bit_2 == FALSE && diff --git a/src/ac_npc_curator_move.c_inc b/src/ac_npc_curator_move.c_inc index ac6dc697..99f76271 100644 --- a/src/ac_npc_curator_move.c_inc +++ b/src/ac_npc_curator_move.c_inc @@ -1,5 +1,5 @@ static void aCR_set_animation(NPC_CURATOR_ACTOR* curator, int action) { - static int animeSeqNo[] = { 5, 5, 9 }; + static int animeSeqNo[] = { aNPC_ANIM_WAIT1, aNPC_ANIM_WAIT1, aNPC_ANIM_WAIT_NEMU1 }; (*Common_Get(clip).npc_clip->animation_init_proc)((ACTOR*)curator, animeSeqNo[action], FALSE); } @@ -7,7 +7,7 @@ static void aCR_set_animation(NPC_CURATOR_ACTOR* curator, int action) { static void aCR_set_request_act(NPC_CURATOR_ACTOR* curator) { curator->npc_class.request.act_priority = 4; curator->npc_class.request.act_idx = 16; - curator->npc_class.request.act_type = 2; + curator->npc_class.request.act_type = aNPC_ACT_TYPE_SEARCH; } static int aCR_check_sleep_time() { diff --git a/src/ac_npc_guide.c b/src/ac_npc_guide.c new file mode 100644 index 00000000..b8fc7bf4 --- /dev/null +++ b/src/ac_npc_guide.c @@ -0,0 +1,152 @@ +#include "ac_npc_guide.h" + +#include "m_play.h" +#include "m_common_data.h" +#include "ac_train_door.h" +#include "m_player_lib.h" +#include "m_font.h" +#include "m_msg.h" +#include "m_timeIn_ovl.h" +#include "m_ledit_ovl.h" +#include "libultra/libultra.h" +#include "m_bgm.h" +#include "m_soncho.h" + +enum { + aNGD_ACTION_ENTER, + aNGD_ACTION_APPROACH, + aNGD_ACTION_TALK_START_WAIT, + aNGD_ACTION_TIME_CHECK, + aNGD_ACTION_SDON_AND_PB_WAIT, + aNGD_ACTION_TIME_MENU_OPEN_WAIT, + aNGD_ACTION_TIME_MENU_CLOSE_WAIT, + aNGD_ACTION_MSG_WIN_OPEN_WAIT, + aNGD_ACTION_CONFIRM_INPUT_DATA, + aNGD_ACTION_WAIT_PERMISSION, + aNGD_ACTION_SITDOWN, + aNGD_ACTION_PNAME_MENU_OPEN_WAIT, + aNGD_ACTION_PNAME_MENU_CLOSE_WAIT, + aNGD_ACTION_SEX_SELECT_WAIT, + aNGD_ACTION_SEX_SELECT_WAIT2, + aNGD_ACTION_SEX_SELECT_AFTER, + aNGD_ACTION_CNAME_MENU_OPEN_WAIT, + aNGD_ACTION_CNAME_MENU_CLOSE_WAIT, + aNGD_ACTION_STANDUP_START_WAIT, + aNGD_ACTION_STANDUP, + aNGD_ACTION_MOVE_READY, + aNGD_ACTION_MOVE_TO_AISLE, + aNGD_ACTION_MOVE_TO_DOOR, + aNGD_ACTION_MOVE_TO_DECK, + aNGD_ACTION_KEITAI_ON, + aNGD_ACTION_KEITAI_TALK, + aNGD_ACTION_KEITAI_OFF, + aNGD_ACTION_OPEN_DOOR, + aNGD_ACTION_RETURN_APPROACH, + aNGD_ACTION_LAST_TALK_START_WAIT, + aNGD_ACTION_SITDOWN2_START_WAIT, + aNGD_ACTION_SITDOWN2, + aNGD_ACTION_LAST_TALK_END_WAIT, + aNGD_ACTION_SCENE_CHANGE_WAIT, + + aNGD_ACTION_NUM +}; + +enum { + aNGD_OBJ_LOOK_TYPE_NORMAL, + aNGD_OBJ_LOOK_TYPE_TALK, + + aNGD_OBJ_LOOK_TYPE_NUM +}; + +static void aNGD_actor_ct(ACTOR* actorx, GAME* game); +static void aNGD_actor_dt(ACTOR* actorx, GAME* game); +static void aNGD_actor_init(ACTOR* actorx, GAME* game); +static void aNGD_actor_save(ACTOR* actorx, GAME* game); + +// clang-format off +ACTOR_PROFILE Npc_Guide_Profile = { + mAc_PROFILE_NPC_GUIDE, + ACTOR_PART_NPC, + ACTOR_STATE_NO_DRAW_WHILE_CULLED | ACTOR_STATE_NO_MOVE_WHILE_CULLED, + SP_NPC_GUIDE, + ACTOR_OBJ_BANK_KEEP, + sizeof(NPC_GUIDE_ACTOR), + &aNGD_actor_ct, + &aNGD_actor_dt, + &aNGD_actor_init, + mActor_NONE_PROC1, + &aNGD_actor_save, +}; +// clang-format on + +static void aNGD_actor_move(ACTOR* actorx, GAME* game); +static void aNGD_actor_draw(ACTOR* actorx, GAME* game); + +static void aNGD_setupAction(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play, int action); + +static void aNGD_actor_ct(ACTOR* actorx, GAME* game) { + static aNPC_ct_data_c ct_data = { &aNGD_actor_move, &aNGD_actor_draw, 0, NULL, NULL, NULL, 0 }; + NPC_GUIDE_ACTOR* guide = (NPC_GUIDE_ACTOR*)actorx; + GAME_PLAY* play = (GAME_PLAY*)game; + PLAYER_ACTOR* player; + + Common_Get(clip).npc_clip->ct_proc(actorx, game, &ct_data); + guide->npc_class.condition_info.hide_flg = FALSE; // show guide actor + guide->npc_class.condition_info.demo_flg = + aNPC_COND_DEMO_SKIP_ENTRANCE_CHECK | aNPC_COND_DEMO_SKIP_HEAD_LOOKAT | aNPC_COND_DEMO_SKIP_TALK_CHECK | + aNPC_COND_DEMO_SKIP_ITEM | aNPC_COND_DEMO_SKIP_FORWARD_CHECK | aNPC_COND_DEMO_SKIP_BGCHECK | + aNPC_COND_DEMO_SKIP_OBJ_COL_CHECK | aNPC_COND_DEMO_SKIP_MOVE_Y | aNPC_COND_DEMO_SKIP_MOVE_CIRCLE_REV | + aNPC_COND_DEMO_SKIP_MOVE_RANGE_CHECK; + guide->camera_morph_counter = 40; + guide->obj_look_type = aNGD_OBJ_LOOK_TYPE_NORMAL; + guide->npc_class.eye_y = 30.0f; + guide->camera_move_set_counter = 1; + guide->npc_class.palActorIgnoreTimer = -1; + guide->train_door_actor = Actor_info_fgName_search(&play->actor_info, TRAIN_DOOR, ACTOR_PART_BG); + guide->npc_class.actor_class.shape_info.draw_shadow = TRUE; + guide->npc_class.actor_class.world.position.z = 130.0f; + + /* Put the player into demo wait state */ + mPlib_request_main_demo_wait_type1(game, 0, NULL); + player = GET_PLAYER_ACTOR(play); + if (player != NULL) { + /* Make the player invisible during the intro train ride */ + player->actor_class.state_bitfield |= ACTOR_STATE_INVISIBLE; + } + + aNGD_setupAction(guide, play, aNGD_ACTION_ENTER); + + /* Play train noises sfx repeatedly */ + sAdo_SysLevStart(NA_SE_TRAIN_RIDE); + + /* Disable sunlight */ + Common_Set(sunlight_flag, FALSE); + + /* Turn on echo for sound effects */ + sAdo_TrgSeEcho(TRUE); + sAdo_LevSeEcho(TRUE); +} + +static void aNGD_actor_save(ACTOR* actorx, GAME* game) { + Common_Get(clip).npc_clip->save_proc(actorx, game); +} + +static void aNGD_actor_dt(ACTOR* actorx, GAME* game) { + /* Update all animals in town to have this town's info */ + mNpc_SetAnimalThisLand(Save_Get(animals), ANIMAL_NUM_MAX); + Common_Get(clip).npc_clip->dt_proc(actorx, game); + + /* Stop train noise sfx */ + sAdo_SysLevStop(NA_SE_TRAIN_RIDE); +} + +static void aNGD_actor_init(ACTOR* actorx, GAME* game) { + Common_Get(clip).npc_clip->init_proc(actorx, game); +} + +static void aNGD_actor_draw(ACTOR* actorx, GAME* game) { + Common_Get(clip).npc_clip->draw_proc(actorx, game); +} + +#include "../src/ac_npc_guide_animation.c_inc" +#include "../src/ac_npc_guide_move.c_inc" diff --git a/src/ac_npc_guide_animation.c_inc b/src/ac_npc_guide_animation.c_inc new file mode 100644 index 00000000..eb525a82 --- /dev/null +++ b/src/ac_npc_guide_animation.c_inc @@ -0,0 +1,56 @@ +typedef struct npc_guide_animation_s { + int anim_id; + int talk_flag; +} aNGD_anime_c; + +static void aNGD_set_animation(NPC_GUIDE_ACTOR* guide, int action) { + // clang-format off + static aNGD_anime_c anime[] = { + { aNPC_ANIM_OPEN_D1, FALSE }, + { aNPC_ANIM_WALK1, FALSE }, + { aNPC_ANIM_WAIT1, TRUE }, + { aNPC_ANIM_WAIT1, TRUE }, + { aNPC_ANIM_WAIT1, TRUE }, + { aNPC_ANIM_WAIT1, TRUE }, + { aNPC_ANIM_WAIT1, TRUE }, + { aNPC_ANIM_WAIT1, TRUE }, + { aNPC_ANIM_WAIT1, TRUE }, + { aNPC_ANIM_WAIT1, TRUE }, + { aNPC_ANIM_SITDOWN_D1, TRUE }, + { aNPC_ANIM_SITDOWN_WAIT_D1, TRUE }, + { aNPC_ANIM_SITDOWN_WAIT_D1, TRUE }, + { aNPC_ANIM_SITDOWN_WAIT_D1, TRUE }, + { aNPC_ANIM_SITDOWN_WAIT_D1, TRUE }, + { aNPC_ANIM_SITDOWN_WAIT_D1, TRUE }, + { aNPC_ANIM_SITDOWN_WAIT_D1, TRUE }, + { aNPC_ANIM_SITDOWN_WAIT_D1, TRUE }, + { aNPC_ANIM_SITDOWN_WAIT_D1, TRUE }, + { aNPC_ANIM_STANDUP_D1, FALSE }, + { aNPC_ANIM_WAIT1, FALSE }, + { aNPC_ANIM_WALK1, FALSE }, + { aNPC_ANIM_WALK1, FALSE }, + { aNPC_ANIM_TO_DECK_D1, FALSE }, + { aNPC_ANIM_KEITAI_ON1, FALSE }, + { aNPC_ANIM_KEITAI_TALK1, TRUE }, + { aNPC_ANIM_KEITAI_OFF1, FALSE }, + { aNPC_ANIM_OPEN_D2, FALSE }, + { aNPC_ANIM_WALK1, FALSE }, + { aNPC_ANIM_WAIT1, FALSE }, + { aNPC_ANIM_WAIT1, TRUE }, + { aNPC_ANIM_SITDOWN_D1, TRUE }, + { aNPC_ANIM_SITDOWN_WAIT_D1, TRUE }, + { aNPC_ANIM_SITDOWN_WAIT_D1, FALSE }, + }; + // clang-format on + + aNGD_anime_c* anime_info = &anime[action]; + int anim_id = anime_info->anim_id; + int talk_flag = anime_info->talk_flag; + + if ((action == 4 || action == 7 || action == 8) && guide->next_action != 5 && guide->next_action != 6) { + anim_id = aNPC_ANIM_SITDOWN_WAIT_D1; + talk_flag = TRUE; + } + + Common_Get(clip).npc_clip->animation_init_proc(&guide->npc_class.actor_class, anim_id, talk_flag); +} diff --git a/src/ac_npc_guide_move.c_inc b/src/ac_npc_guide_move.c_inc new file mode 100644 index 00000000..501839ba --- /dev/null +++ b/src/ac_npc_guide_move.c_inc @@ -0,0 +1,908 @@ +static void aNGD_set_camera(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + static s8 mov_def_cnt[] = { 3, 0 }; + static f32 obj_look_y_max[] = { 30.0f, 20.0f }; + static f32 obj_look_y_spd[] = { 0.5f, 2.5f }; + + xyz_t eye; + xyz_t pos; + xyz_t ground; + s16 move; + f32 moveX; + f32 moveY; + int obj_look_type = guide->obj_look_type; + s16 cur_angle; + f32 inter; + f32 sin; + f32 ground_y; + s16 angle; + + move = guide->camera_move; + guide->camera_move += 0xE20; + angle = move; + angle += 0xE20; + moveX = cos_s(angle) * 0.1f; + angle = move; + angle += 0xE20; + moveY = sin_s(angle) * guide->camera_move_range; + + if (guide->camera_move_y <= 0.0f && moveY >= 0.0f) { + s8 cnt = guide->camera_move_cnt; + + cnt--; + if (cnt < 0) { + s8 set_cnt = guide->camera_move_set_counter; + + set_cnt--; + if (set_cnt < 0) { + set_cnt = ARRAY_COUNT(mov_def_cnt) - 1; + } + + guide->camera_move_set_counter = set_cnt; + cnt = mov_def_cnt[set_cnt]; + guide->camera_move_range = 0.3f; + } else { + guide->camera_move_range *= 0.35f; + } + + guide->camera_move_cnt = cnt; + } + + guide->camera_move_y = moveY; + cur_angle = guide->camera_tilt_cur_angle; + chase_angle(&cur_angle, guide->camera_tilt_goal_angle, guide->camera_tilt_add); + guide->camera_tilt_cur_angle = cur_angle; + sin = sin_s(cur_angle); + + /* Set camera eye pos */ + eye.x = moveX + sin * 20.0f + 100.0f; + eye.y = moveY + sin * -5.0f + 80.0f; + eye.z = 400.0f; + + /* Move NPC head to current target */ + chase_f(&guide->npc_class.eye_y, obj_look_y_max[obj_look_type], obj_look_y_spd[obj_look_type] * 0.5f); + + /* Set ground pos */ + ground.x = guide->npc_class.draw.shadow_pos.x; + ground.z = guide->npc_class.draw.shadow_pos.z; + if (obj_look_type == aNGD_OBJ_LOOK_TYPE_TALK) { + /* Use the guide's NPC shadow position for Y */ + ground_y = guide->npc_class.draw.shadow_pos.y; + } else { + /* Get the ground position for Y */ + ground_y = mCoBG_GetBgY_OnlyCenter_FromWpos2(ground, 0.0f); + } + + chase_f(&guide->obj_dist_ground, ground_y, 0.5f); + ground.y = guide->obj_dist_ground; + + /* Set camera center pos */ + if (guide->lock_camera_flag == TRUE) { + pos.x = ground.x; + pos.y = ground.y + guide->npc_class.eye_y; + pos.z = ground.z; + } else if (mDemo_Check(mDemo_TYPE_SPEAK, &guide->npc_class.actor_class) == TRUE) { + int morph_counter = guide->camera_morph_counter; + f32 r; + + guide->camera_morph_counter = morph_counter - 1; + if ((morph_counter - 1) == 0) { + guide->lock_camera_flag = TRUE; + } + + r = (40.0f - (f32)(morph_counter - 1)) / 40.0f; + inter = cKF_HermitCalc(r, 1.0f, 0.0f, 1.0f, 3.2f, 0.0f); + + pos.x = (ground.x - 90.0f) * inter + 90.0f; + pos.y = ((ground.y + guide->npc_class.eye_y) - 80.0f) * inter + 80.0f; + pos.z = (ground.z - 280.0f) * inter + 280.0f; + } else { + /* Default position */ + pos.x = 90.0f; + pos.y = 80.0f; + pos.z = 280.0f; + } + + pos.x += moveX; + pos.y += moveY; + + Camera2_change_priority(play, 0); + Camera2_request_main_lock(play, &pos, &eye, 40.0f, 0, 60.0f, 800.0f, 5); +} + +static void aNGD_set_camera_eyes(NPC_GUIDE_ACTOR* guide) { + if (guide->camera_eyes_flag == TRUE) { + guide->npc_class.request.head_pos.x = 100.0f; + guide->npc_class.request.head_pos.y = guide->npc_class.actor_class.eye.position.y; + guide->npc_class.request.head_pos.z = 400.0f; + guide->npc_class.request.head_priority = 3; + guide->npc_class.request.head_type = 2; + } +} + +static void aNGD_set_walk_spd(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + guide->npc_class.movement.max_speed = 1.0f; + guide->npc_class.movement.acceleration = 0.1f; + guide->npc_class.movement.deceleration = 0.2f; +} + +static void aNGD_set_walk_spd2(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + guide->npc_class.movement.max_speed = 1.5f; + guide->npc_class.movement.acceleration = 0.15f; + guide->npc_class.movement.deceleration = 0.3f; +} + +static void aNGD_set_stop_spd(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + guide->npc_class.actor_class.speed = 0.0f; + guide->npc_class.movement.max_speed = 0.0f; + guide->npc_class.movement.acceleration = 0.0f; + guide->npc_class.movement.deceleration = 0.0f; +} + +static int aNGD_make_keitai(NPC_GUIDE_ACTOR* guide, GAME* game) { + int res = FALSE; + + if (guide->npc_class.right_hand.item_actor_p == NULL) { + if (Common_Get(clip).tools_clip != NULL) { + ACTOR* keitai = Common_Get(clip).tools_clip->aTOL_birth_proc(TOOL_KEITAI, aTOL_ACTION_TAKEOUT, + &guide->npc_class.actor_class, game, -1, NULL); + + if (keitai != NULL) { + guide->npc_class.right_hand.item_actor_p = keitai; + res = TRUE; + } + } + } else { + res = TRUE; + } + + return res; +} + +static int aNGD_chg_cond_keitai(NPC_GUIDE_ACTOR* guide, int cond) { + int res = FALSE; + + if (Common_Get(clip).tools_clip != NULL) { + if (Common_Get(clip).tools_clip->aTOL_chg_request_mode_proc( + &guide->npc_class.actor_class, guide->npc_class.right_hand.item_actor_p, cond) == TRUE) { + res = TRUE; + } + } + + return res; +} + +static void aNGD_talk_demo_proc(ACTOR* actorx) { + if (mDemo_Check(mDemo_TYPE_SPEAK, actorx) == TRUE) { + Common_Get(clip).npc_clip->talk_demo_proc(actorx); + } +} + +static void aNGD_check_talk_msg_no(NPC_GUIDE_ACTOR* guide) { + if (mDemo_Check(mDemo_TYPE_SPEAK, &guide->npc_class.actor_class) == TRUE) { + int msg_no = mMsg_GET_MSG_NUM(); + int flags; + + switch (msg_no) { + case 0x2AC9: + flags = (1 << 3); + break; + case 0x2ACD: + flags = (1 << 2); + break; + case 0x2ACF: + flags = (1 << 1); + break; + case 0x2AD3: + flags = (1 << 0); + break; + default: + flags = 0; + break; + } + + guide->answer_flags |= flags; + } +} + +static void aNGD_set_pl_face_type(NPC_GUIDE_ACTOR* guide) { + static int face_type_table[mPr_SEX_NUM][mPr_FACE_TYPE_NUM] = { + /* Male faces */ + { + mPr_FACE_TYPE5, + mPr_FACE_TYPE6, + mPr_FACE_TYPE1, + mPr_FACE_TYPE4, + mPr_FACE_TYPE0, + mPr_FACE_TYPE2, + mPr_FACE_TYPE7, + mPr_FACE_TYPE3, + }, + /* Female faces */ + { + mPr_FACE_TYPE0, + mPr_FACE_TYPE5, + mPr_FACE_TYPE2, + mPr_FACE_TYPE6, + mPr_FACE_TYPE4, + mPr_FACE_TYPE7, + mPr_FACE_TYPE3, + mPr_FACE_TYPE1, + }, + }; + + int answer_flags = guide->answer_flags; + int face_type; + + if ((answer_flags & 1) == 0) { + /* Select a random face for the player */ + face_type = RANDOM(mPr_FACE_TYPE_NUM); + } else { + /* Select a face based on choices */ + face_type = face_type_table[Now_Private->gender][answer_flags >> 1]; + } + + Now_Private->face = face_type; +} + +static void aNGD_calc_body_angl(NPC_GUIDE_ACTOR* guide, f32 pos_x, f32 pos_z) { + f32 dX = pos_x - guide->npc_class.actor_class.world.position.x; + f32 dZ = pos_z - guide->npc_class.actor_class.world.position.z; + s16 angl = atans_table(dZ, dX); + + chase_angle(&guide->npc_class.actor_class.shape_info.rotation.y, angl, DEG2SHORT_ANGLE2(11.25f)); + guide->npc_class.actor_class.world.angle.y = guide->npc_class.actor_class.shape_info.rotation.y; +} + +static void aNGD_set_default_talk_info(void) { + mDemo_Set_camera(CAMERA2_PROCESS_NUM); + mDemo_Set_talk_change_player(FALSE); + mDemo_Set_use_zoom_sound(TRUE); +} + +static void aNGD_enter(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + if (guide->npc_class.draw.main_animation_state == cKF_STATE_STOPPED) { + guide->camera_eyes_flag = TRUE; + aNGD_setupAction(guide, play, aNGD_ACTION_APPROACH); + } else if (cKF_FrameControl_passCheck_now(&guide->npc_class.draw.main_animation.keyframe.frame_control, 20.0f) == + TRUE) { + TRAINDOOR_ACTOR* train_door = (TRAINDOOR_ACTOR*)guide->train_door_actor; + + train_door->open_flag = TRUE; + } +} + +static void aNGD_approach(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + if (guide->npc_class.actor_class.world.position.z >= 290.0f) { + guide->npc_class.actor_class.world.position.z = 290.0f; + aNGD_setupAction(guide, play, aNGD_ACTION_TALK_START_WAIT); + } +} + +static void aNGD_set_talk_info_talk_start_wait(ACTOR* actorx) { + mDemo_Set_msg_num(0x2AC6); + aNGD_set_default_talk_info(); + ((NPC_GUIDE_ACTOR*)actorx)->obj_look_type = aNGD_OBJ_LOOK_TYPE_TALK; +} + +static void aNGD_talk_start_wait(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + ACTOR* actorx = (ACTOR*)guide; + + if (mDemo_Check(mDemo_TYPE_SPEAK, actorx) == TRUE) { + if (mDemo_Check_ListenAble() == FALSE && + chase_angle(&actorx->shape_info.rotation.y, actorx->player_angle_y, 0x400) == TRUE) { + guide->camera_eyes_flag = FALSE; + aNGD_setupAction(guide, play, aNGD_ACTION_TIME_CHECK); + mDemo_Set_ListenAble(); + } + } else { + mDemo_Request(mDemo_TYPE_SPEAK, actorx, &aNGD_set_talk_info_talk_start_wait); + } +} + +static void aNGD_time_check(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + if (mMsg_CHECK_MAINNORMALCONTINUE() == TRUE) { + switch (mChoice_GET_CHOSENUM()) { + case mChoice_CHOICE0: + aNGD_setupAction(guide, play, aNGD_ACTION_WAIT_PERMISSION); + break; + case mChoice_CHOICE1: + guide->next_action = aNGD_ACTION_TIME_MENU_OPEN_WAIT; + aNGD_setupAction(guide, play, aNGD_ACTION_SDON_AND_PB_WAIT); + break; + } + } +} + +static void aNGD_sdon_and_pb_wait(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + u16 order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); + + if (order != 0 && mMsg_CHECK_MAINNORMALCONTINUE()) { + aNGD_setupAction(guide, play, guide->next_action); + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + } +} + +static void aNGD_time_menu_open_wait(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + if (mMsg_CHECK_MAIN_WAIT() == TRUE) { + aNGD_setupAction(guide, play, guide->action + 1); + } +} + +static void aNGD_time_menu_close_wait(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + if (play->submenu.open_flag == FALSE) { + aNGD_setupAction(guide, play, aNGD_ACTION_MSG_WIN_OPEN_WAIT); + } +} + +static void aNGD_msg_win_open_wait(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + static int msg_no[] = { 0x2AE5, 0x2ACA, 0x2AE4 }; + static int next_act_idx[] = { + aNGD_ACTION_CONFIRM_INPUT_DATA, + aNGD_ACTION_SEX_SELECT_WAIT, + aNGD_ACTION_CONFIRM_INPUT_DATA, + }; + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + + if (mMsg_Check_not_series_main_wait(msg_p) == TRUE) { + int idx = -1; + + switch (guide->next_action) { + case aNGD_ACTION_TIME_MENU_CLOSE_WAIT: + idx = 0; + break; + case aNGD_ACTION_PNAME_MENU_CLOSE_WAIT: + idx = 1; + break; + case aNGD_ACTION_CNAME_MENU_CLOSE_WAIT: + idx = 2; + break; + } + + if (idx >= 0) { + mMsg_Unset_LockContinue(msg_p); + mMsg_Set_continue_msg_num(msg_p, msg_no[idx]); + mMsg_Set_ForceNext(msg_p); + aNGD_setupAction(guide, play, next_act_idx[idx]); + } + } +} + +static void aNGD_confirm_input_data(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + if (mMsg_CHECK_MAINNORMALCONTINUE() == TRUE) { + switch (mChoice_GET_CHOSENUM()) { + case mChoice_CHOICE0: + switch (guide->next_action) { + case aNGD_ACTION_TIME_MENU_CLOSE_WAIT: + aNGD_setupAction(guide, play, aNGD_ACTION_WAIT_PERMISSION); + break; + case aNGD_ACTION_CNAME_MENU_CLOSE_WAIT: + aNGD_setupAction(guide, play, aNGD_ACTION_STANDUP_START_WAIT); + break; + } + break; + case mChoice_CHOICE1: + switch (guide->next_action) { + case aNGD_ACTION_TIME_MENU_CLOSE_WAIT: + guide->next_action = aNGD_ACTION_TIME_MENU_OPEN_WAIT; + break; + case aNGD_ACTION_CNAME_MENU_CLOSE_WAIT: + guide->next_action = aNGD_ACTION_CNAME_MENU_OPEN_WAIT; + break; + } + + aNGD_setupAction(guide, play, aNGD_ACTION_SDON_AND_PB_WAIT); + break; + } + } +} + +static void aNGD_wait_permission(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + if (mMsg_CHECK_MAINNORMALCONTINUE() == TRUE) { + aNGD_setupAction(guide, play, aNGD_ACTION_SITDOWN); + } +} + +static void aNGD_sitdown(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + guide->npc_class.actor_class.world.position.x = 100.0f; + guide->npc_class.actor_class.world.position.z = 280.0f; + guide->npc_class.actor_class.shape_info.rotation.y = 0; + + /* Wait for the sit animation to finish before continuing */ + if (guide->npc_class.draw.main_animation_state == cKF_STATE_STOPPED) { + mMsg_UNSET_LOCKCONTINUE(); + guide->next_action = aNGD_ACTION_PNAME_MENU_OPEN_WAIT; + Common_Set(sunlight_flag, TRUE); // turn on the sunlight as we exit tunnel + /* Turn off echoes since we exited the tunnel */ + sAdo_TrgSeEcho(FALSE); + sAdo_LevSeEcho(FALSE); + aNGD_setupAction(guide, play, aNGD_ACTION_SDON_AND_PB_WAIT); + } +} + +static void aNGD_sex_select_wait(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + if (mMsg_CHECK_MAINNORMALCONTINUE() == TRUE) { + switch (mChoice_GET_CHOSENUM()) { + case mChoice_CHOICE0: // male + case mChoice_CHOICE1: // female + aNGD_setupAction(guide, play, aNGD_ACTION_SEX_SELECT_WAIT2); + break; + case mChoice_CHOICE2: // 'That's not right' + guide->next_action = aNGD_ACTION_PNAME_MENU_OPEN_WAIT; + aNGD_setupAction(guide, play, aNGD_ACTION_SDON_AND_PB_WAIT); + break; + } + } +} + +static void aNGD_sex_select_wait2(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + int order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); + + if (order != 0 && mMsg_CHECK_MAINNORMALCONTINUE() == TRUE) { + switch (mChoice_GET_CHOSENUM()) { + case mChoice_CHOICE0: // male + switch (order) { + case 1: // That's right + Now_Private->gender = mPr_SEX_MALE; + break; + case 2: // I'm not a boy + Now_Private->gender = mPr_SEX_FEMALE; + break; + } + + guide->next_action = aNGD_ACTION_CNAME_MENU_OPEN_WAIT; + aNGD_setupAction(guide, play, aNGD_ACTION_SDON_AND_PB_WAIT); + break; + case mChoice_CHOICE1: // female + switch (order) { + case 1: // That's right + Now_Private->gender = mPr_SEX_FEMALE; + break; + case 2: // I'm not a girl + Now_Private->gender = mPr_SEX_MALE; + break; + } + aNGD_setupAction(guide, play, aNGD_ACTION_SEX_SELECT_AFTER); + break; + } + + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + } +} + +static void aNGD_sex_select_after(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + u16 order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); + + if (order != 0 && mMsg_Check_MainNormalContinue(msg_p)) { + mMsg_Set_continue_msg_num(msg_p, 0x2AD8); + mMsg_Set_ForceNext(msg_p); + guide->next_action = aNGD_ACTION_CNAME_MENU_OPEN_WAIT; + aNGD_setupAction(guide, play, aNGD_ACTION_SDON_AND_PB_WAIT); + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + } +} + +static void aNGD_standup_start_wait(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + /* Wait for guide to stop speaking to us */ + if (mDemo_Check(mDemo_TYPE_SPEAK, &guide->npc_class.actor_class) == FALSE) { + guide->obj_look_type = aNGD_OBJ_LOOK_TYPE_NORMAL; + aNGD_setupAction(guide, play, aNGD_ACTION_STANDUP); + } +} + +static void aNGD_standup(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + /* Wait for animation to finish */ + if (guide->npc_class.draw.main_animation_state == cKF_STATE_STOPPED) { + aNGD_setupAction(guide, play, guide->next_action); + } +} + +static void aNGD_move_ready(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + guide->npc_class.actor_class.world.position.x = 100.0f; + guide->npc_class.actor_class.world.position.z = 300.0f; + aNGD_setupAction(guide, play, aNGD_ACTION_MOVE_TO_AISLE); +} + +static void aNGD_move_to_aisle(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + aNGD_calc_body_angl(guide, 140.0f, 290.0f); + if (guide->npc_class.actor_class.world.position.x > 140.0f) { + aNGD_setupAction(guide, play, aNGD_ACTION_MOVE_TO_DOOR); + } +} + +static void aNGD_move_to_door(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + aNGD_calc_body_angl(guide, 140.0f, 130.0f); + /* Check if we reached the door */ + if (guide->npc_class.actor_class.world.position.z < 130.0f) { + aNGD_setupAction(guide, play, aNGD_ACTION_MOVE_TO_DECK); + } + + /* Check if we should start rotating */ + if (guide->npc_class.draw.shadow_pos.z < 140.0f) { + guide->camera_tilt_goal_angle = DEG2SHORT_ANGLE2(90.0f); + guide->camera_tilt_add = DEG2SHORT_ANGLE2(2.8125f); + } +} + +static void aNGD_move_to_deck(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + if (cKF_FrameControl_passCheck_now(&guide->npc_class.draw.main_animation.keyframe.frame_control, 9.0f) == TRUE) { + TRAINDOOR_ACTOR* train_door = (TRAINDOOR_ACTOR*)guide->train_door_actor; + + train_door->open_flag = TRUE; + } + + /* Reuse standup state to wait for animation to finish */ + aNGD_standup(guide, play); +} + +static void aNGD_set_talk_info_keitai_on(ACTOR* actorx) { + mDemo_Set_msg_num(0x2AD0); + aNGD_set_default_talk_info(); +} + +static void aNGD_keitai_on(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + static f32 anmSpd[] = { 0.0f, 0.5f }; + int idx = aNGD_make_keitai(guide, &play->game); + + guide->npc_class.draw.main_animation.keyframe.frame_control.speed = anmSpd[idx]; + if (idx != 0) { + if (mDemo_Check(mDemo_TYPE_SPEAK, (ACTOR*)guide) == TRUE) { + if (mDemo_Check_ListenAble() == FALSE) { + mDemo_Set_ListenAble(); + } + } else { + /* Request to start speaking */ + mDemo_Request(mDemo_TYPE_SPEAK, (ACTOR*)guide, &aNGD_set_talk_info_keitai_on); + } + } + + /* Wait for animation to finish */ + if (guide->npc_class.draw.main_animation_state == cKF_STATE_STOPPED) { + aNGD_setupAction(guide, play, aNGD_ACTION_KEITAI_TALK); + } +} + +static void aNGD_keitai_talk(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + if (mDemo_Check(mDemo_TYPE_SPEAK, &guide->npc_class.actor_class) == FALSE) { + aNGD_setupAction(guide, play, aNGD_ACTION_KEITAI_OFF); + } else if (guide->npc_class.draw.main_animation_state == cKF_STATE_STOPPED) { + Common_Get(clip).npc_clip->animation_init_proc(&guide->npc_class.actor_class, aNPC_ANIM_KEITAI_TALK2, TRUE); + } +} + +static void aNGD_open_door(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + chase_angle(&guide->npc_class.actor_class.shape_info.rotation.y, DEG2SHORT_ANGLE2(-180.0f), + DEG2SHORT_ANGLE2(0.703125f)); + if (cKF_FrameControl_passCheck_now(&guide->npc_class.draw.main_animation.keyframe.frame_control, 22.0f) == TRUE) { + TRAINDOOR_ACTOR* train_door = (TRAINDOOR_ACTOR*)guide->train_door_actor; + + train_door->open_flag = TRUE; + if (guide->npc_class.draw.shadow_pos.z < 140.0f) { + guide->camera_tilt_goal_angle = 0; + guide->camera_tilt_add = 0x600; + } + } + + /* Reuse standup state to wait for animation to finish */ + aNGD_standup(guide, play); +} + +static void aNGD_return_approach(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + guide->npc_class.actor_class.world.position.x = 140.0f; + guide->npc_class.actor_class.world.angle.y = 0; + guide->npc_class.actor_class.shape_info.rotation.y = 0; + if (guide->npc_class.actor_class.world.position.z > 290.0f) { + aNGD_setupAction(guide, play, aNGD_ACTION_LAST_TALK_START_WAIT); + } +} + +static void aNGD_set_talk_info_last_talk_start_wait(ACTOR* actorx) { + mDemo_Set_msg_num(0x2AD1); + aNGD_set_default_talk_info(); + ((NPC_GUIDE_ACTOR*)actorx)->obj_look_type = aNGD_OBJ_LOOK_TYPE_TALK; +} + +static void aNGD_last_talk_start_wait(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + ACTOR* actorx = (ACTOR*)guide; + + if (mDemo_Check(mDemo_TYPE_SPEAK, actorx) == TRUE) { + if (mDemo_Check_ListenAble() == FALSE && + chase_angle(&actorx->shape_info.rotation.y, actorx->player_angle_y, 0x400) == TRUE) { + guide->camera_eyes_flag = FALSE; + aNGD_setupAction(guide, play, aNGD_ACTION_SITDOWN2_START_WAIT); + mDemo_Set_ListenAble(); + } + } else { + mDemo_Request(mDemo_TYPE_SPEAK, actorx, &aNGD_set_talk_info_last_talk_start_wait); + } +} + +static void aNGD_sitdown2_start_wait(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + u16 order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); + + if (order != 0) { + aNGD_setupAction(guide, play, aNGD_ACTION_SITDOWN2); + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + } +} + +static void aNGD_sitdown2(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + guide->npc_class.actor_class.world.position.x = 100.0f; + guide->npc_class.actor_class.world.position.z = 280.0f; + guide->npc_class.actor_class.shape_info.rotation.y = 0; + + /* Wait for animation to finish */ + aNGD_standup(guide, play); +} + +static void aNGD_last_talk_end_wait(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + if (mDemo_Check(mDemo_TYPE_SPEAK, &guide->npc_class.actor_class) == FALSE) { + aNGD_setupAction(guide, play, aNGD_ACTION_SCENE_CHANGE_WAIT); + } +} + +/* Init procs */ + +static void aNGD_time_menu_open_wait_init(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + + mMsg_Set_LockContinue(msg_p); + mMsg_request_main_disappear_wait_type1(msg_p); + guide->next_action = aNGD_ACTION_TIME_MENU_CLOSE_WAIT; +} + +static void aNGD_time_menu_close_wait_init(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + Submenu* submenu = &play->submenu; + + switch (guide->next_action) { + case aNGD_ACTION_TIME_MENU_CLOSE_WAIT: + mSM_open_submenu(submenu, mSM_OVL_TIMEIN, mTI_OVL_OPEN_INITIAL, 0); + break; + case aNGD_ACTION_PNAME_MENU_CLOSE_WAIT: + mSM_open_submenu(submenu, mSM_OVL_LEDIT, mLE_TYPE_PLAYER_NAME, 0); + break; + case aNGD_ACTION_CNAME_MENU_CLOSE_WAIT: + mSM_open_submenu(submenu, mSM_OVL_LEDIT, mLE_TYPE_COUNTRY_NAME, 0); + break; + } +} + +static void aNGD_msg_win_open_wait_init(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + mMsg_REQUEST_MAIN_APPEAR_WAIT_TYPE1(); +} + +static void aNGD_sitdown_init(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + mMsg_SET_LOCKCONTINUE(); +} + +static void aNGD_pname_menu_open_wait_init(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + + mMsg_Set_LockContinue(msg_p); + mMsg_request_main_disappear_wait_type1(msg_p); + guide->next_action = aNGD_ACTION_PNAME_MENU_CLOSE_WAIT; +} + +static void aNGD_cname_menu_open_wait_init(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + + mMsg_Set_LockContinue(msg_p); + mMsg_request_main_disappear_wait_type1(msg_p); + guide->next_action = aNGD_ACTION_CNAME_MENU_CLOSE_WAIT; +} + +static void aNGD_standup_init(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + guide->next_action = aNGD_ACTION_MOVE_READY; +} + +static void aNGD_move_ready_init(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + guide->npc_class.draw.main_animation.keyframe.morph_counter = 0.0f; +} + +static void aNGD_move_to_aisle_init(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + aNGD_set_walk_spd2(guide, play); +} + +static void aNGD_move_to_deck_init(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + aNGD_set_stop_spd(guide, play); + guide->npc_class.actor_class.world.position.x = 140.0f; + guide->npc_class.actor_class.world.position.z = 130.0f; + guide->next_action = aNGD_ACTION_KEITAI_ON; +} + +static void aNGD_keitai_off_init(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + aNGD_chg_cond_keitai(guide, aTOL_ACTION_PUTAWAY); + guide->next_action = aNGD_ACTION_OPEN_DOOR; +} + +static void aNGD_open_door_init(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + guide->next_action = aNGD_ACTION_RETURN_APPROACH; +} + +static void aNGD_return_approach_init(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + guide->camera_eyes_flag = TRUE; + aNGD_set_walk_spd2(guide, play); + guide->npc_class.draw.main_animation.keyframe.morph_counter = 0.0f; +} + +static void aNGD_sitdown2_start_wait_init(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); +} + +static void aNGD_sitdown2_init(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + guide->npc_class.draw.main_animation.keyframe.morph_counter = 0.0f; + guide->next_action = aNGD_ACTION_LAST_TALK_END_WAIT; +} + +static void aNGD_last_talk_end_wait_init(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + aNGD_chg_cond_keitai(guide, aTOL_ACTION_DESTRUCT); + guide->npc_class.right_hand.item_actor_p = NULL; +} + +static void aNGD_scene_change_wait_init(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + u8 term; + int town_day; + + /* Init next scene transition */ + goto_next_scene(play, 0, 1); + play->fb_wipe_type = 3; + Common_Get(transition).wipe_type = 4; + + /* Clear plant growth renew time */ + Save_Set(all_grow_renew_time, mTM_rtcTime_clear_code); + + /* Update player ID town info */ + if (Now_Private != NULL) { + mLd_CopyLandName(Now_Private->player_ID.land_name, Save_Get(land_info).name); + } + + /* Init island */ + bcopy(Save_GetPointer(land_info), &Save_Get(island).landinfo, sizeof(mLd_land_info_c)); // Copy the town's land info + mNpc_DecideIslandNpc(&Save_Get(island).animal); // Pick islander + + /* Update some renew time values to current rtc time */ + lbRTC_TimeCopy(Save_GetPointer(last_grow_time), Common_GetPointer(time.rtc_time)); + mTM_set_renew_time(Save_GetPointer(renew_time), Common_GetPointer(time.rtc_time)); + mTM_set_season(); // initialize the season + + /* Initialize first Stalk Market info */ + Kabu_decide_price_schedule(); + + /* Init Post Office */ + mPO_post_office_init(); + + /* Set insect term info */ + Save_Set(insect_term, Common_Get(time.rtc_time.month)); + Save_Set(insect_term_transition_offset, RANDOM(6)); + + /* Set fish term info */ + term = Common_Get(time.rtc_time.month) * 2; + if (Common_Get(time.rtc_time.day) > 15) { + term++; + } + Save_Set(gyoei_term, term); + Save_Set(gyoei_term_transition_offset, RANDOM(6)); + + /* Decide Town Day date */ + town_day = 1 + RANDOM(30); + if (town_day >= 4) { + town_day++; // add one to prevent conflict with Fireworks Festival (4th of July) + } + Save_Set(town_day, town_day); + + mSP_ShopGameStartCt(NULL); + mNtc_SetInitData(); + mPr_SetNowPrivateCloth(); + mEv_SetFirstJob(); + mEv_SetFirstIntro(); + mEnv_DecideWeather_FirstGameStart(); + mCD_calendar_clear(-1); + mCD_calendar_wellcome_on(); + mNpc_SetParentNameAllAnimal(); + aNGD_set_pl_face_type(guide); + Common_Set(submenu_disabled, TRUE); + mRmTp_SetDefaultLightSwitchData(1); + mBGMPsComp_make_ps_wipe(0x41C2); + mBGMPsComp_scene_mode(18); +} + +typedef void (*aNGD_INIT_PROC)(NPC_GUIDE_ACTOR*, GAME_PLAY*); + +static void aNGD_init_proc(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play, int action) { + static aNGD_INIT_PROC init_proc[] = { + (aNGD_INIT_PROC)&none_proc1, + &aNGD_set_walk_spd, + &aNGD_set_stop_spd, + (aNGD_INIT_PROC)&none_proc1, + (aNGD_INIT_PROC)&none_proc1, + &aNGD_time_menu_open_wait_init, + &aNGD_time_menu_close_wait_init, + &aNGD_msg_win_open_wait_init, + (aNGD_INIT_PROC)&none_proc1, + (aNGD_INIT_PROC)&none_proc1, + &aNGD_sitdown_init, + &aNGD_pname_menu_open_wait_init, + &aNGD_time_menu_close_wait_init, + (aNGD_INIT_PROC)&none_proc1, + (aNGD_INIT_PROC)&none_proc1, + (aNGD_INIT_PROC)&none_proc1, + &aNGD_cname_menu_open_wait_init, + &aNGD_time_menu_close_wait_init, + (aNGD_INIT_PROC)&none_proc1, + &aNGD_standup_init, + &aNGD_move_ready_init, + &aNGD_move_to_aisle_init, + (aNGD_INIT_PROC)&none_proc1, + &aNGD_move_to_deck_init, + (aNGD_INIT_PROC)&none_proc1, + (aNGD_INIT_PROC)&none_proc1, + &aNGD_keitai_off_init, + &aNGD_open_door_init, + &aNGD_return_approach_init, + &aNGD_set_stop_spd, + &aNGD_sitdown2_start_wait_init, + &aNGD_sitdown2_init, + &aNGD_last_talk_end_wait_init, + &aNGD_scene_change_wait_init, + }; + + (*init_proc[action])(guide, play); +} + +static void aNGD_setupAction(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play, int action) { + static aNGD_PROC process[] = { + &aNGD_enter, + &aNGD_approach, + &aNGD_talk_start_wait, + &aNGD_time_check, + &aNGD_sdon_and_pb_wait, + &aNGD_time_menu_open_wait, + &aNGD_time_menu_close_wait, + &aNGD_msg_win_open_wait, + &aNGD_confirm_input_data, + &aNGD_wait_permission, + &aNGD_sitdown, + &aNGD_time_menu_open_wait, + &aNGD_time_menu_close_wait, + &aNGD_sex_select_wait, + &aNGD_sex_select_wait2, + &aNGD_sex_select_after, + &aNGD_time_menu_open_wait, + &aNGD_time_menu_close_wait, + &aNGD_standup_start_wait, + &aNGD_standup, + &aNGD_move_ready, + &aNGD_move_to_aisle, + &aNGD_move_to_door, + &aNGD_move_to_deck, + &aNGD_keitai_on, + &aNGD_keitai_talk, + &aNGD_standup, + &aNGD_open_door, + &aNGD_return_approach, + &aNGD_last_talk_start_wait, + &aNGD_sitdown2_start_wait, + &aNGD_sitdown2, + &aNGD_last_talk_end_wait, + (aNGD_PROC)&none_proc1, + }; + + guide->action = action; + guide->proc = process[action]; + aNGD_set_animation(guide, action); + aNGD_init_proc(guide, play, action); +} + +static void aNGD_actor_move(ACTOR* actorx, GAME* game) { + NPC_GUIDE_ACTOR* guide = (NPC_GUIDE_ACTOR*)actorx; + GAME_PLAY* play = (GAME_PLAY*)game; + + Common_Get(clip).npc_clip->move_before_proc(actorx, game); + aNGD_talk_demo_proc(actorx); + aNGD_check_talk_msg_no(guide); + (*guide->proc)(guide, play); + Common_Get(clip).npc_clip->move_after_proc(actorx, game); + aNGD_set_camera(guide, play); + aNGD_set_camera_eyes(guide); + mSC_change_player_freeze(play); +} diff --git a/src/ac_npc_sendo_move.c_inc b/src/ac_npc_sendo_move.c_inc index 5a244707..acb82443 100644 --- a/src/ac_npc_sendo_move.c_inc +++ b/src/ac_npc_sendo_move.c_inc @@ -1,1463 +1,1290 @@ enum { - aSEN_TALK_END_WAIT, - aSEN_TALK_SING_END_WAIT, - aSEN_TALK_PL_RIDE_ON_CHECK, - aSEN_TALK_CHK_EXIST_ISLAND_DATA_IN_RAM, - aSEN_TALK_MSG_WIN_CLOSE_WAIT, - aSEN_TALK_GET_ISLAND_NAME_MENU_START_WAIT, - aSEN_TALK_GET_ISLAND_NAME_MENU_END_WAIT, - aSEN_TALK_MSG_WIN_OPEN_WAIT, - aSEN_TALK_PL_RIDE_ON_CHECK2, - aSEN_TALK_CHK_WRITE_FOR_AGB, - aSEN_TALK_CHK_REWRITE_FOR_AGB, - aSEN_TALK_TRANS_DATA_FOR_AGB_START_WAIT, - aSEN_TALK_TRANS_DATA_FOR_AGB_END_WAIT, - aSEN_TALK_TRANS_PRG_FOR_AGB_START_WAIT, - aSEN_TALK_TRANS_PRG_FOR_AGB_END_WAIT, - aSEN_TALK_TRANS_PRG2_FOR_AGB_END_WAIT, - aSEN_TALK_CHK_POWER_AGB, - aSEN_TALK_CHK_EXIST_ISLAND_DATA_IN_AGB, - aSEN_TALK_CHK_READ_AGB, - aSEN_TALK_CHK_RETRY_READ_AGB, - aSEN_TALK_CHK_USE_ISLAND_DATA_IN_RAM, - aSEN_TALK_CHK_POWER_AGB2, - aSEN_TALK_CHK_TRANS_ISLAND_DATA_FROM_AGB2, - aSEN_TALK_CHK_EXIST_ISLAND_DATA_IN_AGB2, - aSEN_TALK_CHK_READ_AGB2, - aSEN_TALK_CHK_POWER_AGB3, - aSEN_TALK_CHK_EXIST_ISLAND_DATA_IN_AGB3, - aSEN_TALK_CHK_READ_AGB3, + aSEN_TALK_END_WAIT, + aSEN_TALK_SING_END_WAIT, + aSEN_TALK_PL_RIDE_ON_CHECK, + aSEN_TALK_CHK_EXIST_ISLAND_DATA_IN_RAM, + aSEN_TALK_MSG_WIN_CLOSE_WAIT, + aSEN_TALK_GET_ISLAND_NAME_MENU_START_WAIT, + aSEN_TALK_GET_ISLAND_NAME_MENU_END_WAIT, + aSEN_TALK_MSG_WIN_OPEN_WAIT, + aSEN_TALK_PL_RIDE_ON_CHECK2, + aSEN_TALK_CHK_WRITE_FOR_AGB, + aSEN_TALK_CHK_REWRITE_FOR_AGB, + aSEN_TALK_TRANS_DATA_FOR_AGB_START_WAIT, + aSEN_TALK_TRANS_DATA_FOR_AGB_END_WAIT, + aSEN_TALK_TRANS_PRG_FOR_AGB_START_WAIT, + aSEN_TALK_TRANS_PRG_FOR_AGB_END_WAIT, + aSEN_TALK_TRANS_PRG2_FOR_AGB_END_WAIT, + aSEN_TALK_CHK_POWER_AGB, + aSEN_TALK_CHK_EXIST_ISLAND_DATA_IN_AGB, + aSEN_TALK_CHK_READ_AGB, + aSEN_TALK_CHK_RETRY_READ_AGB, + aSEN_TALK_CHK_USE_ISLAND_DATA_IN_RAM, + aSEN_TALK_CHK_POWER_AGB2, + aSEN_TALK_CHK_TRANS_ISLAND_DATA_FROM_AGB2, + aSEN_TALK_CHK_EXIST_ISLAND_DATA_IN_AGB2, + aSEN_TALK_CHK_READ_AGB2, + aSEN_TALK_CHK_POWER_AGB3, + aSEN_TALK_CHK_EXIST_ISLAND_DATA_IN_AGB3, + aSEN_TALK_CHK_READ_AGB3, - aSEN_TALK_NUM + aSEN_TALK_NUM }; enum { - aSEN_ACTION_TALK_START_WAIT, - aSEN_ACTION_TALK_START_WAIT2, + aSEN_ACTION_TALK_START_WAIT, + aSEN_ACTION_TALK_START_WAIT2, - /* TODO: finish */ + /* TODO: finish */ }; typedef struct npc_sendo_think_setup_s { - aSEN_PROC think_proc; - aSEN_PROC think_init_proc; - aNPC_TALK_REQUEST_PROC talk_request_proc; - u8 talk_act; - u8 next_action; - int animation_id; + aSEN_PROC think_proc; + aSEN_PROC think_init_proc; + aNPC_TALK_REQUEST_PROC talk_request_proc; + u8 talk_act; + u8 next_action; + int animation_id; } aSEN_think_setup_c; typedef struct npc_sendo_talk_request_s { - int msg_no; - u8 player_talk_turn; - u8 msg_camera_type; - u8 sendo_talk_turn; - u8 talk_act; + int msg_no; + u8 player_talk_turn; + u8 msg_camera_type; + u8 sendo_talk_turn; + u8 talk_act; } aSEN_talk_request_c; static void aSEN_set_anime_current(NPC_SENDO_ACTOR* sendo_actor) { - f32 length; - f32 start; - f32 a; + f32 length; + f32 start; + f32 a; - start = sendo_actor->npc_class.draw.main_animation.keyframe.frame_control.start_frame; - length = sendo_actor->npc_class.draw.main_animation.keyframe.frame_control.end_frame - start; - a = (start + sendo_actor->anime_progress * length) - sendo_actor->npc_class.draw.main_animation.keyframe.frame_control.current_frame; + start = sendo_actor->npc_class.draw.main_animation.keyframe.frame_control.start_frame; + length = sendo_actor->npc_class.draw.main_animation.keyframe.frame_control.end_frame - start; + a = (start + sendo_actor->anime_progress * length) - + sendo_actor->npc_class.draw.main_animation.keyframe.frame_control.current_frame; - if (a < 0) { - a += length; - } + if (a < 0) { + a += length; + } - sendo_actor->npc_class.draw.main_animation.keyframe.frame_control.speed = a; + sendo_actor->npc_class.draw.main_animation.keyframe.frame_control.speed = a; } static void aSEN_set_request_act(NPC_SENDO_ACTOR* sendo) { - sendo->npc_class.request.act_priority = 4; - sendo->npc_class.request.act_idx = 22; - sendo->npc_class.request.act_type = 2; + sendo->npc_class.request.act_priority = 4; + sendo->npc_class.request.act_idx = 22; + sendo->npc_class.request.act_type = 2; } static void aSEN_pl_ride_on_end_wait(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - BOAT_DEMO_ACTOR* boat_demo = boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; - u8 act; + BOAT_DEMO_ACTOR* boat_demo = boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; + u8 act; - if (boat_demo->action == aBTD_ACTION_START_CALL_END_WAIT) { - if (boat_demo->at_island == FALSE) { - mISL_ClearNowPlayerAction(); + if (boat_demo->action == aBTD_ACTION_START_CALL_END_WAIT) { + if (boat_demo->at_island == FALSE) { + mISL_ClearNowPlayerAction(); - if (sendo->use_island_data_in_ram == TRUE) { - act = 5; - } - else { - act = 4; - } + if (sendo->use_island_data_in_ram == TRUE) { + act = 5; + } else { + act = 4; + } + } else { + act = 6; + } + + aSEN_setup_think_proc(sendo, play, act); } - else { - act = 6; - } - - aSEN_setup_think_proc(sendo, play, act); - } } static void aSEN_sing_start_wait(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - BOAT_DEMO_ACTOR* boat_demo = boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; - u8 act; + BOAT_DEMO_ACTOR* boat_demo = boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; + u8 act; - if (boat_demo->action == aBTD_ACTION_SING_SENDO_MSG_SET_WAIT) { - if (boat_demo->at_island == FALSE) { - act = 8; - } - else { - act = 9; - } + if (boat_demo->action == aBTD_ACTION_SING_SENDO_MSG_SET_WAIT) { + if (boat_demo->at_island == FALSE) { + act = 8; + } else { + act = 9; + } - aSEN_setup_think_proc(sendo, play, act); - } + aSEN_setup_think_proc(sendo, play, act); + } } static void aSEN_touch_wharf_start_wait(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - BOAT_DEMO_ACTOR* boat_demo = boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; + BOAT_DEMO_ACTOR* boat_demo = boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; - if (boat_demo->action == aBTD_ACTION_TOUCH_WHARF_END_WAIT) { - aSEN_setup_think_proc(sendo, play, 11); - } + if (boat_demo->action == aBTD_ACTION_TOUCH_WHARF_END_WAIT) { + aSEN_setup_think_proc(sendo, play, 11); + } } static void aSEN_touch_wharf_end_wait(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - BOAT_DEMO_ACTOR* boat_demo = boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; - u8 act; + BOAT_DEMO_ACTOR* boat_demo = boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; + u8 act; - if (boat_demo->action == aBTD_ACTION_PL_RIDE_OFF_START_WAIT) { - if (boat_demo->at_island == FALSE) { - act = 12; - } - else { - act = 13; - } + if (boat_demo->action == aBTD_ACTION_PL_RIDE_OFF_START_WAIT) { + if (boat_demo->at_island == FALSE) { + act = 12; + } else { + act = 13; + } - mMsg_sound_unset_voice_silent(mMsg_Get_base_window_p(), TRUE); - aSEN_setup_think_proc(sendo, play, act); - } + mMsg_sound_unset_voice_silent(mMsg_Get_base_window_p(), TRUE); + aSEN_setup_think_proc(sendo, play, act); + } } static void aSEN_pl_ride_off_end_wait(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - static u32 destiny_pact[] = { - mISL_PLAYER_ACTION_DESTINY_POPULAR, - mISL_PLAYER_ACTION_DESTINY_UNPOPULAR, - mISL_PLAYER_ACTION_DESTINY_BAD_LUCK, - mISL_PLAYER_ACTION_DESTINY_MONEY_LUCK, - mISL_PLAYER_ACTION_DESTINY_GOODS_LUCK - }; + static u32 destiny_pact[] = { mISL_PLAYER_ACTION_DESTINY_POPULAR, mISL_PLAYER_ACTION_DESTINY_UNPOPULAR, + mISL_PLAYER_ACTION_DESTINY_BAD_LUCK, mISL_PLAYER_ACTION_DESTINY_MONEY_LUCK, + mISL_PLAYER_ACTION_DESTINY_GOODS_LUCK }; - static u32 sex_pact[] = { - mISL_PLAYER_ACTION_SEX_MALE, - mISL_PLAYER_ACTION_SEX_FEMALE - }; + static u32 sex_pact[] = { mISL_PLAYER_ACTION_SEX_MALE, mISL_PLAYER_ACTION_SEX_FEMALE }; - BOAT_DEMO_ACTOR* boat_demo = boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; - u8 act; + BOAT_DEMO_ACTOR* boat_demo = boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; + u8 act; - if (boat_demo->action == aBTD_ACTION_ANCHOR_WAIT) { - if (boat_demo->at_island == FALSE) { - u32 destiny = Common_Get(now_private)->destiny.type; - u32 sex = Common_Get(now_private)->gender; + if (boat_demo->action == aBTD_ACTION_ANCHOR_WAIT) { + if (boat_demo->at_island == FALSE) { + u32 destiny = Common_Get(now_private)->destiny.type; + u32 sex = Common_Get(now_private)->gender; - if (destiny != mPr_DESTINY_NORMAL) { - mISL_SetNowPlayerAction(destiny_pact[destiny - 1]); - } + if (destiny != mPr_DESTINY_NORMAL) { + mISL_SetNowPlayerAction(destiny_pact[destiny - 1]); + } - if (sex < mPr_SEX_NUM) { - mISL_SetNowPlayerAction(sex_pact[sex]); - } + if (sex < mPr_SEX_NUM) { + mISL_SetNowPlayerAction(sex_pact[sex]); + } - act = 15; + act = 15; + } else { + act = 16; + } + + aSEN_setup_think_proc(sendo, play, act); } - else { - act = 16; - } - - aSEN_setup_think_proc(sendo, play, act); - } } static void aSEN_think_main_proc(NPC_ACTOR* actorx, GAME_PLAY* play) { - NPC_SENDO_ACTOR* sendo = (NPC_SENDO_ACTOR*)actorx; + NPC_SENDO_ACTOR* sendo = (NPC_SENDO_ACTOR*)actorx; - if (sendo->npc_class.action.step == aNPC_ACTION_END_STEP && sendo->npc_class.action.idx != 22) { - aSEN_set_request_act(sendo); - } + if (sendo->npc_class.action.step == aNPC_ACTION_END_STEP && sendo->npc_class.action.idx != 22) { + aSEN_set_request_act(sendo); + } - (*sendo->action_proc)(sendo, play); + (*sendo->action_proc)(sendo, play); } static void aSEN_think_init_proc(NPC_ACTOR* actorx, GAME_PLAY* play) { - NPC_SENDO_ACTOR* sendo = (NPC_SENDO_ACTOR*)actorx; - BOAT_DEMO_ACTOR* boat_demo = boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; - u8 act; + NPC_SENDO_ACTOR* sendo = (NPC_SENDO_ACTOR*)actorx; + BOAT_DEMO_ACTOR* boat_demo = boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; + u8 act; - actorx->think.interrupt_flags = 0; - actorx->action.act_proc = (aNPC_ACTION_PROC)&none_proc1; + actorx->think.interrupt_flags = 0; + actorx->action.act_proc = (aNPC_ACTION_PROC)&none_proc1; - aSEN_set_request_act(sendo); - if (boat_demo->at_island == FALSE) { - if (mEnv_NowWeather() == mEnv_WEATHER_RAIN) { - act = 1; + aSEN_set_request_act(sendo); + if (boat_demo->at_island == FALSE) { + if (mEnv_NowWeather() == mEnv_WEATHER_RAIN) { + act = 1; + } else { + act = 0; + } + } else { + act = 2; } - else { - act = 0; - } - } - else { - act = 2; - } - aSEN_setup_think_proc(sendo, play, act); + aSEN_setup_think_proc(sendo, play, act); } static void aSEN_talk_start_wait_init(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - sendo->npc_class.condition_info.demo_flg = - aNPC_COND_DEMO_SKIP_LOVE_CHECK | aNPC_COND_DEMO_SKIP_FEEL_CHECK | aNPC_COND_DEMO_SKIP_FOOTSTEPS | - aNPC_COND_DEMO_SKIP_ENTRANCE_CHECK | aNPC_COND_DEMO_SKIP_ITEM | aNPC_COND_DEMO_SKIP_FORWARD_CHECK | - aNPC_COND_DEMO_SKIP_BGCHECK | aNPC_COND_DEMO_SKIP_MOVE_Y | aNPC_COND_DEMO_SKIP_MOVE_CIRCLE_REV | - aNPC_COND_DEMO_SKIP_MOVE_RANGE_CHECK; //0x3A77; + sendo->npc_class.condition_info.demo_flg = + aNPC_COND_DEMO_SKIP_LOVE_CHECK | aNPC_COND_DEMO_SKIP_FEEL_CHECK | aNPC_COND_DEMO_SKIP_FOOTSTEPS | + aNPC_COND_DEMO_SKIP_ENTRANCE_CHECK | aNPC_COND_DEMO_SKIP_ITEM | aNPC_COND_DEMO_SKIP_FORWARD_CHECK | + aNPC_COND_DEMO_SKIP_BGCHECK | aNPC_COND_DEMO_SKIP_MOVE_Y | aNPC_COND_DEMO_SKIP_MOVE_CIRCLE_REV | + aNPC_COND_DEMO_SKIP_MOVE_RANGE_CHECK; // 0x3A77; } static void aSEN_pl_ride_on_end_wait_init(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - BOAT_DEMO_ACTOR* boat_demo = boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; + BOAT_DEMO_ACTOR* boat_demo = boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; - boat_demo->demo_act = aBTD_DEMO_PL_RIDE_ON_END; + boat_demo->demo_act = aBTD_DEMO_PL_RIDE_ON_END; } static void aSEN_start_call_v_init(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - sendo->npc_class.talk_info.melody_inst = 0; - sendo->npc_class.condition_info.demo_flg = - aNPC_COND_DEMO_SKIP_LOVE_CHECK | aNPC_COND_DEMO_SKIP_FEEL_CHECK | aNPC_COND_DEMO_SKIP_FOOTSTEPS | - aNPC_COND_DEMO_SKIP_ENTRANCE_CHECK | aNPC_COND_DEMO_SKIP_HEAD_LOOKAT | aNPC_COND_DEMO_SKIP_ITEM | aNPC_COND_DEMO_SKIP_FORWARD_CHECK | - aNPC_COND_DEMO_SKIP_BGCHECK | aNPC_COND_DEMO_SKIP_MOVE_Y | aNPC_COND_DEMO_SKIP_MOVE_CIRCLE_REV | - aNPC_COND_DEMO_SKIP_MOVE_RANGE_CHECK; //0x3B77; + sendo->npc_class.talk_info.melody_inst = 0; + sendo->npc_class.condition_info.demo_flg = + aNPC_COND_DEMO_SKIP_LOVE_CHECK | aNPC_COND_DEMO_SKIP_FEEL_CHECK | aNPC_COND_DEMO_SKIP_FOOTSTEPS | + aNPC_COND_DEMO_SKIP_ENTRANCE_CHECK | aNPC_COND_DEMO_SKIP_HEAD_LOOKAT | aNPC_COND_DEMO_SKIP_ITEM | + aNPC_COND_DEMO_SKIP_FORWARD_CHECK | aNPC_COND_DEMO_SKIP_BGCHECK | aNPC_COND_DEMO_SKIP_MOVE_Y | + aNPC_COND_DEMO_SKIP_MOVE_CIRCLE_REV | aNPC_COND_DEMO_SKIP_MOVE_RANGE_CHECK; // 0x3B77; } static void aSEN_sing_start_wait_init(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - BOAT_DEMO_ACTOR* boat_demo = boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; + BOAT_DEMO_ACTOR* boat_demo = boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; - boat_demo->demo_act = aBTD_DEMO_MOVE_BOAT_END; - sendo->npc_class.talk_info.default_animation = 123; - sendo->npc_class.draw._5BE = 1; + boat_demo->demo_act = aBTD_DEMO_MOVE_BOAT_END; + sendo->npc_class.talk_info.default_animation = 123; + sendo->npc_class.draw._5BE = 1; } static void aSEN_touch_wharf_end_wait_init(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - sendo->npc_class.head.angle_add_x = 128; - sendo->npc_class.head.angle_add_y = 256; + sendo->npc_class.head.angle_add_x = 128; + sendo->npc_class.head.angle_add_y = 256; } static void aSEN_arrive_call_init(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - sendo->npc_class.head.angle_add_x = 512; - sendo->npc_class.head.angle_add_y = 1024; - sendo->npc_class.talk_info.default_animation = 124; - sendo->npc_class.draw._5BE = 0; + sendo->npc_class.head.angle_add_x = 512; + sendo->npc_class.head.angle_add_y = 1024; + sendo->npc_class.talk_info.default_animation = 124; + sendo->npc_class.draw._5BE = 0; } static void aSEN_pl_ride_off_end_wait_init(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - BOAT_DEMO_ACTOR* boat_demo = boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; + BOAT_DEMO_ACTOR* boat_demo = boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; - boat_demo->demo_act = aBTD_DEMO_PL_RIDE_OFF_END; + boat_demo->demo_act = aBTD_DEMO_PL_RIDE_OFF_END; } static void aSEN_out_of_service_init(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - sendo->npc_class.talk_info.melody_inst = 0x11A; + sendo->npc_class.talk_info.melody_inst = 0x11A; } static void aSEN_out_of_service2_init(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - sendo->npc_class.talk_info.default_animation = 125; - mISL_RestoreIsland(); - aSEN_out_of_service_init(sendo, play); - sendo->npc_class.condition_info.demo_flg = - aNPC_COND_DEMO_SKIP_LOVE_CHECK | aNPC_COND_DEMO_SKIP_FEEL_CHECK | aNPC_COND_DEMO_SKIP_FOOTSTEPS | - aNPC_COND_DEMO_SKIP_ENTRANCE_CHECK | aNPC_COND_DEMO_SKIP_ITEM | aNPC_COND_DEMO_SKIP_FORWARD_CHECK | - aNPC_COND_DEMO_SKIP_BGCHECK | aNPC_COND_DEMO_SKIP_MOVE_Y | aNPC_COND_DEMO_SKIP_MOVE_CIRCLE_REV | - aNPC_COND_DEMO_SKIP_MOVE_RANGE_CHECK; //0x3A77; + sendo->npc_class.talk_info.default_animation = 125; + mISL_RestoreIsland(); + aSEN_out_of_service_init(sendo, play); + sendo->npc_class.condition_info.demo_flg = + aNPC_COND_DEMO_SKIP_LOVE_CHECK | aNPC_COND_DEMO_SKIP_FEEL_CHECK | aNPC_COND_DEMO_SKIP_FOOTSTEPS | + aNPC_COND_DEMO_SKIP_ENTRANCE_CHECK | aNPC_COND_DEMO_SKIP_ITEM | aNPC_COND_DEMO_SKIP_FORWARD_CHECK | + aNPC_COND_DEMO_SKIP_BGCHECK | aNPC_COND_DEMO_SKIP_MOVE_Y | aNPC_COND_DEMO_SKIP_MOVE_CIRCLE_REV | + aNPC_COND_DEMO_SKIP_MOVE_RANGE_CHECK; // 0x3A77; } static void aSEN_norm_talk_request(ACTOR*, GAME*); static void aSEN_force_talk_request(ACTOR*, GAME*); static void aSEN_setup_think_proc(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play, u8 think_act) { - static aSEN_think_setup_c dt_tbl[] = { - { - (aSEN_PROC)&none_proc1, - aSEN_talk_start_wait_init, - aSEN_norm_talk_request, - 0, - 0, - 0x7C - }, - { - (aSEN_PROC)&none_proc1, - aSEN_talk_start_wait_init, - aSEN_norm_talk_request, - 1, - 1, - 0x7C - }, - { - (aSEN_PROC)&none_proc1, - aSEN_talk_start_wait_init, - aSEN_norm_talk_request, - 2, - 2, - 0x7C - }, - { - aSEN_pl_ride_on_end_wait, - aSEN_pl_ride_on_end_wait_init, - (aNPC_TALK_REQUEST_PROC)&none_proc1, - 0, - 3, - 0x7C - }, - { - (aSEN_PROC)&none_proc1, - aSEN_start_call_v_init, - aSEN_force_talk_request, - 0, - 7, - 0x7C - }, - { - (aSEN_PROC)&none_proc1, - aSEN_start_call_v_init, - aSEN_force_talk_request, - 1, - 7, - 0x7C - }, - { - (aSEN_PROC)&none_proc1, - aSEN_start_call_v_init, - aSEN_force_talk_request, - 2, - 7, - 0x7C - }, - { - aSEN_sing_start_wait, - aSEN_sing_start_wait_init, - (aNPC_TALK_REQUEST_PROC)&none_proc1, - 0, - 7, - 0x7B - }, - { - (aSEN_PROC)&none_proc1, - (aSEN_PROC)&none_proc1, - aSEN_force_talk_request, - 3, - 10, - 0x7B - }, - { - (aSEN_PROC)&none_proc1, - (aSEN_PROC)&none_proc1, - aSEN_force_talk_request, - 4, - 10, - 0x7B - }, - { - aSEN_touch_wharf_start_wait, - (aSEN_PROC)&none_proc1, - (aNPC_TALK_REQUEST_PROC)&none_proc1, - 0, - 10, - 0x7B - }, - { - aSEN_touch_wharf_end_wait, - aSEN_touch_wharf_end_wait_init, - (aNPC_TALK_REQUEST_PROC)&none_proc1, - 0, - 11, - 0x7C - }, - { - (aSEN_PROC)&none_proc1, - aSEN_arrive_call_init, - aSEN_force_talk_request, - 5, - 14, - 0x7C - }, - { - (aSEN_PROC)&none_proc1, - aSEN_arrive_call_init, - aSEN_force_talk_request, - 6, - 14, - 0x7C - }, - { - aSEN_pl_ride_off_end_wait, - aSEN_pl_ride_off_end_wait_init, - (aNPC_TALK_REQUEST_PROC)&none_proc1, - 0, - 14, - 0x7C - }, - { - (aSEN_PROC)&none_proc1, - aSEN_out_of_service_init, - aSEN_norm_talk_request, - 3, - 15, - 0x7C - }, - { - (aSEN_PROC)&none_proc1, - aSEN_out_of_service2_init, - aSEN_norm_talk_request, - 4, - 16, - 0x7D - } - }; - - aSEN_think_setup_c* data = &dt_tbl[think_act]; + static aSEN_think_setup_c dt_tbl[] = { + { (aSEN_PROC)&none_proc1, aSEN_talk_start_wait_init, aSEN_norm_talk_request, 0, 0, aNPC_ANIM_WIPWAIT1 }, + { (aSEN_PROC)&none_proc1, aSEN_talk_start_wait_init, aSEN_norm_talk_request, 1, 1, aNPC_ANIM_WIPWAIT1 }, + { (aSEN_PROC)&none_proc1, aSEN_talk_start_wait_init, aSEN_norm_talk_request, 2, 2, aNPC_ANIM_WIPWAIT1 }, + { aSEN_pl_ride_on_end_wait, aSEN_pl_ride_on_end_wait_init, (aNPC_TALK_REQUEST_PROC)&none_proc1, 0, 3, + aNPC_ANIM_WIPWAIT1 }, + { (aSEN_PROC)&none_proc1, aSEN_start_call_v_init, aSEN_force_talk_request, 0, 7, aNPC_ANIM_WIPWAIT1 }, + { (aSEN_PROC)&none_proc1, aSEN_start_call_v_init, aSEN_force_talk_request, 1, 7, aNPC_ANIM_WIPWAIT1 }, + { (aSEN_PROC)&none_proc1, aSEN_start_call_v_init, aSEN_force_talk_request, 2, 7, aNPC_ANIM_WIPWAIT1 }, + { aSEN_sing_start_wait, aSEN_sing_start_wait_init, (aNPC_TALK_REQUEST_PROC)&none_proc1, 0, 7, + aNPC_ANIM_WIPKOGU1 }, + { (aSEN_PROC)&none_proc1, (aSEN_PROC)&none_proc1, aSEN_force_talk_request, 3, 10, aNPC_ANIM_WIPKOGU1 }, + { (aSEN_PROC)&none_proc1, (aSEN_PROC)&none_proc1, aSEN_force_talk_request, 4, 10, aNPC_ANIM_WIPKOGU1 }, + { aSEN_touch_wharf_start_wait, (aSEN_PROC)&none_proc1, (aNPC_TALK_REQUEST_PROC)&none_proc1, 0, 10, + aNPC_ANIM_WIPKOGU1 }, + { aSEN_touch_wharf_end_wait, aSEN_touch_wharf_end_wait_init, (aNPC_TALK_REQUEST_PROC)&none_proc1, 0, 11, + aNPC_ANIM_WIPWAIT1 }, + { (aSEN_PROC)&none_proc1, aSEN_arrive_call_init, aSEN_force_talk_request, 5, 14, aNPC_ANIM_WIPWAIT1 }, + { (aSEN_PROC)&none_proc1, aSEN_arrive_call_init, aSEN_force_talk_request, 6, 14, aNPC_ANIM_WIPWAIT1 }, + { aSEN_pl_ride_off_end_wait, aSEN_pl_ride_off_end_wait_init, (aNPC_TALK_REQUEST_PROC)&none_proc1, 0, 14, + aNPC_ANIM_WIPWAIT1 }, + { (aSEN_PROC)&none_proc1, aSEN_out_of_service_init, aSEN_norm_talk_request, 3, 15, aNPC_ANIM_WIPWAIT1 }, + { (aSEN_PROC)&none_proc1, aSEN_out_of_service2_init, aSEN_norm_talk_request, 4, 16, aNPC_ANIM_WIPWAIT2 }, + }; - sendo->action = think_act; - sendo->action_proc = data->think_proc; - sendo->npc_class.talk_info.talk_request_proc = data->talk_request_proc; - sendo->talk_action = data->talk_act; - sendo->next_action = data->next_action; - (*Common_Get(clip).npc_clip->animation_init_proc)((ACTOR*)sendo, data->animation_id, FALSE); - (*data->think_init_proc)(sendo, play); + aSEN_think_setup_c* data = &dt_tbl[think_act]; + + sendo->action = think_act; + sendo->action_proc = data->think_proc; + sendo->npc_class.talk_info.talk_request_proc = data->talk_request_proc; + sendo->talk_action = data->talk_act; + sendo->next_action = data->next_action; + (*Common_Get(clip).npc_clip->animation_init_proc)((ACTOR*)sendo, data->animation_id, FALSE); + (*data->think_init_proc)(sendo, play); } static void aSEN_think_proc(NPC_ACTOR* actorx, GAME_PLAY* play, int think_act) { - static aNPC_SUB_PROC think_proc[] = { &aSEN_think_init_proc, &aSEN_think_main_proc }; + static aNPC_SUB_PROC think_proc[] = { &aSEN_think_init_proc, &aSEN_think_main_proc }; - (*think_proc[think_act])(actorx, play); + (*think_proc[think_act])(actorx, play); } static void aSEN_schedule_init_proc(NPC_ACTOR* npc_actorx, GAME_PLAY* play) { - npc_actorx->think.think_proc = &aSEN_think_proc; - npc_actorx->condition_info.hide_request = FALSE; - npc_actorx->palActorIgnoreTimer = -1; - npc_actorx->talk_info.default_animation = 124; - npc_actorx->actor_class.talk_distance = 60.0f; - npc_actorx->collision.priority = 1; - npc_actorx->actor_class.shape_info.draw_shadow = FALSE; - npc_actorx->actor_class.state_bitfield |= ACTOR_STATE_NO_MOVE_WHILE_CULLED; - npc_actorx->actor_class.status_data.weight = 254; - npc_actorx->draw._5B9 = 1; - npc_actorx->actor_class.shape_info.rotation.y = DEG2SHORT_ANGLE(80.0f); - npc_actorx->movement.mv_angl = DEG2SHORT_ANGLE(80.0f); + npc_actorx->think.think_proc = &aSEN_think_proc; + npc_actorx->condition_info.hide_request = FALSE; + npc_actorx->palActorIgnoreTimer = -1; + npc_actorx->talk_info.default_animation = 124; + npc_actorx->actor_class.talk_distance = 60.0f; + npc_actorx->collision.priority = 1; + npc_actorx->actor_class.shape_info.draw_shadow = FALSE; + npc_actorx->actor_class.state_bitfield |= ACTOR_STATE_NO_MOVE_WHILE_CULLED; + npc_actorx->actor_class.status_data.weight = 254; + npc_actorx->draw._5B9 = 1; + npc_actorx->actor_class.shape_info.rotation.y = DEG2SHORT_ANGLE(80.0f); + npc_actorx->movement.mv_angl = DEG2SHORT_ANGLE(80.0f); - (*Common_Get(clip).npc_clip->think_proc)(npc_actorx, play, aNPC_THINK_SPECIAL, aNPC_THINK_TYPE_INIT); + (*Common_Get(clip).npc_clip->think_proc)(npc_actorx, play, aNPC_THINK_SPECIAL, aNPC_THINK_TYPE_INIT); } static void aSEN_schedule_main_proc(NPC_ACTOR* npc_actorx, GAME_PLAY* play) { - if ((*Common_Get(clip).npc_clip->think_proc)(npc_actorx, play, -1, aNPC_THINK_TYPE_CHK_INTERRUPT) == FALSE) { - (*Common_Get(clip).npc_clip->think_proc)(npc_actorx, play, -1, aNPC_THINK_TYPE_MAIN); - } + if ((*Common_Get(clip).npc_clip->think_proc)(npc_actorx, play, -1, aNPC_THINK_TYPE_CHK_INTERRUPT) == FALSE) { + (*Common_Get(clip).npc_clip->think_proc)(npc_actorx, play, -1, aNPC_THINK_TYPE_MAIN); + } } static void aSEN_schedule_proc(NPC_ACTOR* npc_actorx, GAME_PLAY* play, int sched_type) { - static aNPC_SUB_PROC sche_proc[] = { &aSEN_schedule_init_proc, &aSEN_schedule_main_proc }; + static aNPC_SUB_PROC sche_proc[] = { &aSEN_schedule_init_proc, &aSEN_schedule_main_proc }; - (*sche_proc[sched_type])(npc_actorx, play); + (*sche_proc[sched_type])(npc_actorx, play); } static int aSEN_get_msg_no(NPC_SENDO_ACTOR* sendo, int msg_no) { - static int msg_base_no[2][mPr_SEX_NUM] = { - { 0x3091, 0x3163 }, - { 0x3096, 0x3168 } - }; + static int msg_base_no[2][mPr_SEX_NUM] = { { 0x3091, 0x3163 }, { 0x3096, 0x3168 } }; - int msg_base; - int msg; - int msg_index; + int msg_base; + int msg; + int msg_index; - if (msg_no == 0x3091 || msg_no == 0x3096) { - BOAT_DEMO_ACTOR* boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; - - msg_base = msg_base_no[boat_demo->at_island][Common_Get(now_private)->gender]; - msg = boat_demo->sing_msg_no; - msg_index = msg - msg_base; + if (msg_no == 0x3091 || msg_no == 0x3096) { + BOAT_DEMO_ACTOR* boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; - if (msg_index < 0 || msg_index >= 5) { - msg = msg_base; + msg_base = msg_base_no[boat_demo->at_island][Common_Get(now_private)->gender]; + msg = boat_demo->sing_msg_no; + msg_index = msg - msg_base; + + if (msg_index < 0 || msg_index >= 5) { + msg = msg_base; + } + } else if (Common_Get(now_private)->gender != mPr_SEX_MALE) { + msg = 210 + msg_no; + } else { + msg = msg_no; } - } - else if (Common_Get(now_private)->gender != mPr_SEX_MALE) { - msg = 210 + msg_no; - } - else { - msg = msg_no; - } - return msg; + return msg; } static void aSEN_agb_trans_se_proc(NPC_SENDO_ACTOR* sendo, int enable) { - if (enable == TRUE) { - if (sendo->agb_trans_se == FALSE) { - sAdo_SysLevStart(NA_SE_ITEM_HORIDASHI); - sendo->agb_trans_se = TRUE; + if (enable == TRUE) { + if (sendo->agb_trans_se == FALSE) { + sAdo_SysLevStart(NA_SE_ITEM_HORIDASHI); + sendo->agb_trans_se = TRUE; + } + } else { + if (sendo->agb_trans_se == TRUE) { + sAdo_SysLevStop(NA_SE_ITEM_HORIDASHI); + sendo->agb_trans_se = FALSE; + } } - } - else { - if (sendo->agb_trans_se == TRUE) { - sAdo_SysLevStop(NA_SE_ITEM_HORIDASHI); - sendo->agb_trans_se = FALSE; - } - } } static int aSEN_compare_ram_island_and_village() { - int res = FALSE; - int same_land_info = mLd_CheckCmpLand( - Save_Get(land_info).name, Save_Get(land_info).id, - Save_Get(island).landinfo.name, Save_Get(island).landinfo.id - ); + int res = FALSE; + int same_land_info = mLd_CheckCmpLand(Save_Get(land_info).name, Save_Get(land_info).id, + Save_Get(island).landinfo.name, Save_Get(island).landinfo.id); - if (same_land_info == TRUE) { - res = TRUE; - } + if (same_land_info == TRUE) { + res = TRUE; + } - return res; + return res; } static int aSEN_compare_ram_island_and_agb_island() { - int res = FALSE; - int agb_island_and_island_same_name = mLd_CheckCmpLandName(Common_Get(transfer_island).name, Save_Get(island).name); // Why bother checking this lol... + int res = FALSE; + int agb_island_and_island_same_name = mLd_CheckCmpLandName( + Common_Get(transfer_island).name, Save_Get(island).name); // Why bother checking this lol... - if (agb_island_and_island_same_name == TRUE) { - int agb_island_and_island_same_land = mLd_CheckCmpLand( - Common_Get(transfer_island).landinfo.name, Common_Get(transfer_island).landinfo.id, - Save_Get(island).landinfo.name, Save_Get(island).landinfo.id - ); + if (agb_island_and_island_same_name == TRUE) { + int agb_island_and_island_same_land = + mLd_CheckCmpLand(Common_Get(transfer_island).landinfo.name, Common_Get(transfer_island).landinfo.id, + Save_Get(island).landinfo.name, Save_Get(island).landinfo.id); - if (agb_island_and_island_same_land == TRUE) { - res = TRUE; + if (agb_island_and_island_same_land == TRUE) { + res = TRUE; + } } - } - return res; + return res; } static int aSEN_chk_exist_island_data_in_ram() { - int res = TRUE; + int res = TRUE; - if (Save_Get(island).renew_time.year == 0) { - lbRTC_TimeCopy(&Save_Get(island).renew_time, Common_GetPointer(time.rtc_time)); - res = FALSE; - } + if (Save_Get(island).renew_time.year == 0) { + lbRTC_TimeCopy(&Save_Get(island).renew_time, Common_GetPointer(time.rtc_time)); + res = FALSE; + } - return res; + return res; } static void aSEN_set_island_info_for_agb(Island_c* dst, Island_c* src) { - bcopy(src, dst, sizeof(Island_c)); - mAGrw_SpoilKabuIsland(dst); - mISL_gc_to_agb(Common_GetPointer(agb_island), dst); + bcopy(src, dst, sizeof(Island_c)); + mAGrw_SpoilKabuIsland(dst); + mISL_gc_to_agb(Common_GetPointer(agb_island), dst); } static void aSEN_setup_pl_ride_on(NPC_SENDO_ACTOR* sendo) { - sendo->next_action = 3; - mDemo_Set_talk_return_demo_wait(TRUE); + sendo->next_action = 3; + mDemo_Set_talk_return_demo_wait(TRUE); } static void aSEN_change_talk_proc(NPC_SENDO_ACTOR*, u8); static void aSEN_sing_end_wait_talk_proc(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - BOAT_DEMO_ACTOR* boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; + BOAT_DEMO_ACTOR* boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; - if (boat_demo->action == aBTD_ACTION_TOUCH_WHARF_END_WAIT && sendo->npc_class.draw.animation_id != 124) { - sendo->next_action = 11; - (*Common_Get(clip).npc_clip->animation_init_proc)((ACTOR*)sendo, 124, FALSE); - } + if (boat_demo->action == aBTD_ACTION_TOUCH_WHARF_END_WAIT && sendo->npc_class.draw.animation_id != 124) { + sendo->next_action = 11; + (*Common_Get(clip).npc_clip->animation_init_proc)((ACTOR*)sendo, 124, FALSE); + } } static void aSEN_pl_ride_on_check_talk_proc(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - if (mMsg_Check_MainNormalContinue(msg_p) == TRUE) { - switch (mChoice_Get_ChoseNum(mChoice_Get_base_window_p())) { - case mChoice_CHOICE0: - /* Player chose not to ride */ - mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); - mMsg_Set_LockContinue(msg_p); - mGcgba_InitVar(); - sendo->gba_comm_tries = 0; - aSEN_change_talk_proc(sendo, aSEN_TALK_CHK_POWER_AGB); - break; - case mChoice_CHOICE1: - /* Player chose to ride */ - mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); - mMsg_Set_continue_msg_num(msg_p, aSEN_get_msg_no(sendo, 0x3074)); - aSEN_change_talk_proc(sendo, aSEN_TALK_END_WAIT); - - break; + if (mMsg_Check_MainNormalContinue(msg_p) == TRUE) { + switch (mChoice_Get_ChoseNum(mChoice_Get_base_window_p())) { + case mChoice_CHOICE0: + /* Player chose not to ride */ + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + mMsg_Set_LockContinue(msg_p); + mGcgba_InitVar(); + sendo->gba_comm_tries = 0; + aSEN_change_talk_proc(sendo, aSEN_TALK_CHK_POWER_AGB); + break; + case mChoice_CHOICE1: + /* Player chose to ride */ + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + mMsg_Set_continue_msg_num(msg_p, aSEN_get_msg_no(sendo, 0x3074)); + aSEN_change_talk_proc(sendo, aSEN_TALK_END_WAIT); + + break; + } } - } } static void aSEN_chk_exist_island_data_in_ram_talk_proc(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - static u8 next_talk_idx[] = { aSEN_TALK_MSG_WIN_CLOSE_WAIT, aSEN_TALK_END_WAIT }; - static int msg_no[] = { 0x3079, 0x30BE }; + static u8 next_talk_idx[] = { aSEN_TALK_MSG_WIN_CLOSE_WAIT, aSEN_TALK_END_WAIT }; + static int msg_no[] = { 0x3079, 0x30BE }; - int order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); + int order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); - if (order != 0) { - int keep_island = -1; + if (order != 0) { + int keep_island = -1; - if (aSEN_chk_exist_island_data_in_ram() == FALSE) { - keep_island = 0; + if (aSEN_chk_exist_island_data_in_ram() == FALSE) { + keep_island = 0; + } else { + keep_island = 1; + mISL_KeepIsland(Save_GetPointer(island)); + } + + /* Why do they check against -1 here? */ + if (keep_island != -1) { + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + aSEN_setup_pl_ride_on(sendo); + mMsg_Unset_LockContinue(msg_p); + mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, msg_no[keep_island])); + mMsg_Set_ForceNext(msg_p); + aSEN_change_talk_proc(sendo, next_talk_idx[keep_island]); + } } - else { - keep_island = 1; - mISL_KeepIsland(Save_GetPointer(island)); - } - - /* Why do they check against -1 here? */ - if (keep_island != -1) { - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - - mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); - aSEN_setup_pl_ride_on(sendo); - mMsg_Unset_LockContinue(msg_p); - mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, msg_no[keep_island])); - mMsg_Set_ForceNext(msg_p); - aSEN_change_talk_proc(sendo, next_talk_idx[keep_island]); - } - } } static void aSEN_msg_win_close_wait_talk_proc(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - int order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); + int order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); - if (order != 0) { - mMsg_request_main_disappear_wait_type1(mMsg_Get_base_window_p()); - aSEN_change_talk_proc(sendo, aSEN_TALK_GET_ISLAND_NAME_MENU_START_WAIT); - } + if (order != 0) { + mMsg_request_main_disappear_wait_type1(mMsg_Get_base_window_p()); + aSEN_change_talk_proc(sendo, aSEN_TALK_GET_ISLAND_NAME_MENU_START_WAIT); + } } static void aSEN_get_island_name_menu_start_wait_talk_proc(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - if (mMsg_Check_main_wait(mMsg_Get_base_window_p()) == TRUE) { - mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); - mSM_open_submenu_new(&play->submenu, mSM_OVL_LEDIT, mLE_TYPE_ISLAND_NAME, 0, Save_Get(island).name); - aSEN_change_talk_proc(sendo, aSEN_TALK_GET_ISLAND_NAME_MENU_END_WAIT); - } + if (mMsg_Check_main_wait(mMsg_Get_base_window_p()) == TRUE) { + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + mSM_open_submenu_new(&play->submenu, mSM_OVL_LEDIT, mLE_TYPE_ISLAND_NAME, 0, Save_Get(island).name); + aSEN_change_talk_proc(sendo, aSEN_TALK_GET_ISLAND_NAME_MENU_END_WAIT); + } } static void aSEN_get_island_name_menu_end_wait_talk_proc(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - if (play->submenu.open_flag == FALSE) { - mISL_KeepIsland(Save_GetPointer(island)); - mMsg_request_main_appear_wait_type1(mMsg_Get_base_window_p()); - aSEN_change_talk_proc(sendo, aSEN_TALK_MSG_WIN_OPEN_WAIT); - } + if (play->submenu.open_flag == FALSE) { + mISL_KeepIsland(Save_GetPointer(island)); + mMsg_request_main_appear_wait_type1(mMsg_Get_base_window_p()); + aSEN_change_talk_proc(sendo, aSEN_TALK_MSG_WIN_OPEN_WAIT); + } } static void aSEN_msg_win_open_wait_talk_proc(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - if (mMsg_Check_not_series_main_wait(msg_p) == TRUE) { - mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, 0x30BE)); - mMsg_Set_free_str(mMsg_Get_base_window_p(), mMsg_FREE_STR0, Save_Get(island).name, mISL_ISLAND_NAME_LEN); - aSEN_change_talk_proc(sendo, aSEN_TALK_END_WAIT); - } + if (mMsg_Check_not_series_main_wait(msg_p) == TRUE) { + mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, 0x30BE)); + mMsg_Set_free_str(mMsg_Get_base_window_p(), mMsg_FREE_STR0, Save_Get(island).name, mISL_ISLAND_NAME_LEN); + aSEN_change_talk_proc(sendo, aSEN_TALK_END_WAIT); + } } static void aSEN_pl_ride_on_check2_talk_proc(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - if (mMsg_Check_MainNormalContinue(msg_p) == TRUE) { - switch (mChoice_Get_ChoseNum(mChoice_Get_base_window_p())) { - case mChoice_CHOICE0: - /* Player chose to ride */ - if (aSEN_compare_ram_island_and_village() == FALSE) { - mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); - mMsg_Set_LockContinue(msg_p); - mGcgba_InitVar(); - sendo->gba_comm_tries = 0; - aSEN_change_talk_proc(sendo, aSEN_TALK_CHK_POWER_AGB2); + if (mMsg_Check_MainNormalContinue(msg_p) == TRUE) { + switch (mChoice_Get_ChoseNum(mChoice_Get_base_window_p())) { + case mChoice_CHOICE0: + /* Player chose to ride */ + if (aSEN_compare_ram_island_and_village() == FALSE) { + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + mMsg_Set_LockContinue(msg_p); + mGcgba_InitVar(); + sendo->gba_comm_tries = 0; + aSEN_change_talk_proc(sendo, aSEN_TALK_CHK_POWER_AGB2); + } else { + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + mMsg_Set_continue_msg_num(msg_p, aSEN_get_msg_no(sendo, 0x3082)); + aSEN_change_talk_proc(sendo, aSEN_TALK_CHK_WRITE_FOR_AGB); + } + + mNpc_SetIslandGetFtrtoRoom(); + + break; + case mChoice_CHOICE1: + /* Player chose not to ride */ + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + mMsg_Set_continue_msg_num(msg_p, aSEN_get_msg_no(sendo, 0x3081)); + aSEN_change_talk_proc(sendo, aSEN_TALK_END_WAIT); + break; } - else { - mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); - mMsg_Set_continue_msg_num(msg_p, aSEN_get_msg_no(sendo, 0x3082)); - aSEN_change_talk_proc(sendo, aSEN_TALK_CHK_WRITE_FOR_AGB); - } - - mNpc_SetIslandGetFtrtoRoom(); - - break; - case mChoice_CHOICE1: - /* Player chose not to ride */ - mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); - mMsg_Set_continue_msg_num(msg_p, aSEN_get_msg_no(sendo, 0x3081)); - aSEN_change_talk_proc(sendo, aSEN_TALK_END_WAIT); - break; } - } } static void aSEN_chk_write_for_agb_talk_proc(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - int order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + int order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); - if (order != 0) { - switch (mChoice_Get_ChoseNum(mChoice_Get_base_window_p())) { - case mChoice_CHOICE0: - /* Player chose to send a copy of the island to the GBA */ - mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); - mMsg_Set_LockContinue(msg_p); - mMsg_Set_ForceNext(msg_p); - mGcgba_InitVar(); - sendo->gba_comm_tries = 0; - aSEN_change_talk_proc(sendo, aSEN_TALK_CHK_POWER_AGB3); - break; - case mChoice_CHOICE1: - /* Player chose not to send a copy of the island to the GBA */ - aSEN_setup_pl_ride_on(sendo); - mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); - mMsg_Set_continue_msg_num(msg_p, aSEN_get_msg_no(sendo, 0x3083)); - mMsg_Set_ForceNext(msg_p); - aSEN_change_talk_proc(sendo, aSEN_TALK_END_WAIT); - break; + if (order != 0) { + switch (mChoice_Get_ChoseNum(mChoice_Get_base_window_p())) { + case mChoice_CHOICE0: + /* Player chose to send a copy of the island to the GBA */ + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + mMsg_Set_LockContinue(msg_p); + mMsg_Set_ForceNext(msg_p); + mGcgba_InitVar(); + sendo->gba_comm_tries = 0; + aSEN_change_talk_proc(sendo, aSEN_TALK_CHK_POWER_AGB3); + break; + case mChoice_CHOICE1: + /* Player chose not to send a copy of the island to the GBA */ + aSEN_setup_pl_ride_on(sendo); + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + mMsg_Set_continue_msg_num(msg_p, aSEN_get_msg_no(sendo, 0x3083)); + mMsg_Set_ForceNext(msg_p); + aSEN_change_talk_proc(sendo, aSEN_TALK_END_WAIT); + break; + } } - } } static void aSEN_chk_rewrite_for_agb_talk_proc(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - static u8 next_talk_idx[] = { aSEN_TALK_TRANS_DATA_FOR_AGB_START_WAIT, aSEN_TALK_END_WAIT }; - int order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); + static u8 next_talk_idx[] = { aSEN_TALK_TRANS_DATA_FOR_AGB_START_WAIT, aSEN_TALK_END_WAIT }; + int order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); - if (order != 0) { - int keep_island = -1; + if (order != 0) { + int keep_island = -1; - switch (mChoice_Get_ChoseNum(mChoice_Get_base_window_p())) { - case mChoice_CHOICE0: - keep_island = 0; - break; - case mChoice_CHOICE1: - keep_island = 1; - mGcgba_EndComm(); - sendo->next_action = 2; - break; + switch (mChoice_Get_ChoseNum(mChoice_Get_base_window_p())) { + case mChoice_CHOICE0: + keep_island = 0; + break; + case mChoice_CHOICE1: + keep_island = 1; + mGcgba_EndComm(); + sendo->next_action = 2; + break; + } + + if (keep_island != -1) { + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + mMsg_Set_ForceNext(msg_p); + aSEN_change_talk_proc(sendo, next_talk_idx[keep_island]); + } } - - if (keep_island != -1) { - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - - mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); - mMsg_Set_ForceNext(msg_p); - aSEN_change_talk_proc(sendo, next_talk_idx[keep_island]); - } - } } static void aSEN_trans_data_for_agb_start_wait_talk_proc(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - int order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); + int order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); - if (order != 0) { - u8 talk_act; + if (order != 0) { + u8 talk_act; - mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); - mMsg_Set_LockContinue(mMsg_Get_base_window_p()); + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + mMsg_Set_LockContinue(mMsg_Get_base_window_p()); - if (sendo->talk_action == aSEN_TALK_TRANS_DATA_FOR_AGB_START_WAIT) { - aSEN_set_island_info_for_agb(Common_GetPointer(transfer_island), Save_GetPointer(island)); - talk_act = aSEN_TALK_TRANS_DATA_FOR_AGB_END_WAIT; + if (sendo->talk_action == aSEN_TALK_TRANS_DATA_FOR_AGB_START_WAIT) { + aSEN_set_island_info_for_agb(Common_GetPointer(transfer_island), Save_GetPointer(island)); + talk_act = aSEN_TALK_TRANS_DATA_FOR_AGB_END_WAIT; + } else { + talk_act = aSEN_TALK_TRANS_PRG_FOR_AGB_END_WAIT; + } + + mGcgba_InitVar(); + aSEN_change_talk_proc(sendo, talk_act); } - else { - talk_act = aSEN_TALK_TRANS_PRG_FOR_AGB_END_WAIT; - } - - mGcgba_InitVar(); - aSEN_change_talk_proc(sendo, talk_act); - } } static void aSEN_trans_data_for_agb_end_wait_talk_proc(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - switch (mGcgba_Send((u8*)Common_GetPointer(agb_island), sizeof(Common_Get(agb_island)))) { - case GBA2_GBA_STATE_SUCCESS: - { - /* Successfully sent to GBA */ - aSEN_agb_trans_se_proc(sendo, FALSE); - mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, 0x3083)); - mMsg_Unset_LockContinue(msg_p); - mMsg_Set_ForceNext(msg_p); - bcopy(Common_GetPointer(transfer_island), Save_GetPointer(island), sizeof(Island_c)); - aSEN_setup_pl_ride_on(sendo); - mGcgba_EndComm(); - aSEN_change_talk_proc(sendo, aSEN_TALK_END_WAIT); - break; - } + switch (mGcgba_Send((u8*)Common_GetPointer(agb_island), sizeof(Common_Get(agb_island)))) { + case GBA2_GBA_STATE_SUCCESS: { + /* Successfully sent to GBA */ + aSEN_agb_trans_se_proc(sendo, FALSE); + mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, 0x3083)); + mMsg_Unset_LockContinue(msg_p); + mMsg_Set_ForceNext(msg_p); + bcopy(Common_GetPointer(transfer_island), Save_GetPointer(island), sizeof(Island_c)); + aSEN_setup_pl_ride_on(sendo); + mGcgba_EndComm(); + aSEN_change_talk_proc(sendo, aSEN_TALK_END_WAIT); + break; + } - case GBA2_GBA_STATE_TRANSMITTING: - { - /* Sending data to GBA */ - aSEN_agb_trans_se_proc(sendo, TRUE); - break; - } + case GBA2_GBA_STATE_TRANSMITTING: { + /* Sending data to GBA */ + aSEN_agb_trans_se_proc(sendo, TRUE); + break; + } - default: - { - /* Failed to send data to GBA */ - aSEN_agb_trans_se_proc(sendo, FALSE); - mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, 0x308A)); - mMsg_Unset_LockContinue(msg_p); - mMsg_Set_ForceNext(msg_p); - bcopy(Save_GetPointer(island), Common_GetPointer(transfer_island), sizeof(Island_c)); - sendo->next_action = 2; - mGcgba_EndComm(); - aSEN_change_talk_proc(sendo, aSEN_TALK_END_WAIT); - break; + default: { + /* Failed to send data to GBA */ + aSEN_agb_trans_se_proc(sendo, FALSE); + mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, 0x308A)); + mMsg_Unset_LockContinue(msg_p); + mMsg_Set_ForceNext(msg_p); + bcopy(Save_GetPointer(island), Common_GetPointer(transfer_island), sizeof(Island_c)); + sendo->next_action = 2; + mGcgba_EndComm(); + aSEN_change_talk_proc(sendo, aSEN_TALK_END_WAIT); + break; + } } - } } static void aSEN_trans_prg_for_agb_end_wait_talk_proc(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - BOAT_DEMO_ACTOR* boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + BOAT_DEMO_ACTOR* boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; - switch (mGcgba_Boot(boat_demo->island_gba_loader_p, aBTD_LOADER_SIZE)) { - case GBA2_GBA_STATE_SUCCESS: - { - /* Successfully sent to GBA */ - aSEN_agb_trans_se_proc(sendo, TRUE); - mGcgba_InitVar(); - aSEN_change_talk_proc(sendo, aSEN_TALK_TRANS_PRG2_FOR_AGB_END_WAIT); - break; - } + switch (mGcgba_Boot(boat_demo->island_gba_loader_p, aBTD_LOADER_SIZE)) { + case GBA2_GBA_STATE_SUCCESS: { + /* Successfully sent to GBA */ + aSEN_agb_trans_se_proc(sendo, TRUE); + mGcgba_InitVar(); + aSEN_change_talk_proc(sendo, aSEN_TALK_TRANS_PRG2_FOR_AGB_END_WAIT); + break; + } - case GBA2_GBA_STATE_TRANSMITTING: - { - /* Sending data to GBA */ - aSEN_agb_trans_se_proc(sendo, TRUE); - break; - } + case GBA2_GBA_STATE_TRANSMITTING: { + /* Sending data to GBA */ + aSEN_agb_trans_se_proc(sendo, TRUE); + break; + } - default: - { - /* Failed to send data to GBA */ - aSEN_agb_trans_se_proc(sendo, FALSE); - mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, 0x308A)); - sendo->next_action = 2; - mMsg_Unset_LockContinue(msg_p); - mMsg_Set_ForceNext(msg_p); - mGcgba_EndComm(); - aSEN_change_talk_proc(sendo, aSEN_TALK_END_WAIT); - break; + default: { + /* Failed to send data to GBA */ + aSEN_agb_trans_se_proc(sendo, FALSE); + mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, 0x308A)); + sendo->next_action = 2; + mMsg_Unset_LockContinue(msg_p); + mMsg_Set_ForceNext(msg_p); + mGcgba_EndComm(); + aSEN_change_talk_proc(sendo, aSEN_TALK_END_WAIT); + break; + } } - } } static void aSEN_trans_prg2_for_agb_end_wait_talk_proc(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - BOAT_DEMO_ACTOR* boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + BOAT_DEMO_ACTOR* boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; - switch (mGcgba_Send(boat_demo->island_gba_program_p, aBTD_PROGRAM_SIZE)) { - case GBA2_GBA_STATE_SUCCESS: - { - /* Successfully sent to GBA */ - aSEN_agb_trans_se_proc(sendo, TRUE); - aSEN_set_island_info_for_agb(Common_GetPointer(transfer_island), Save_GetPointer(island)); - mGcgba_InitVar(); - aSEN_change_talk_proc(sendo, aSEN_TALK_TRANS_DATA_FOR_AGB_END_WAIT); - break; - } + switch (mGcgba_Send(boat_demo->island_gba_program_p, aBTD_PROGRAM_SIZE)) { + case GBA2_GBA_STATE_SUCCESS: { + /* Successfully sent to GBA */ + aSEN_agb_trans_se_proc(sendo, TRUE); + aSEN_set_island_info_for_agb(Common_GetPointer(transfer_island), Save_GetPointer(island)); + mGcgba_InitVar(); + aSEN_change_talk_proc(sendo, aSEN_TALK_TRANS_DATA_FOR_AGB_END_WAIT); + break; + } - case GBA2_GBA_STATE_TRANSMITTING: - { - /* Sending data to GBA */ - aSEN_agb_trans_se_proc(sendo, TRUE); - break; - } + case GBA2_GBA_STATE_TRANSMITTING: { + /* Sending data to GBA */ + aSEN_agb_trans_se_proc(sendo, TRUE); + break; + } - default: - { - /* Failed to send data to GBA */ - aSEN_agb_trans_se_proc(sendo, FALSE); - mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, 0x308A)); - sendo->next_action = 2; - mMsg_Unset_LockContinue(msg_p); - mMsg_Set_ForceNext(msg_p); - mGcgba_EndComm(); - aSEN_change_talk_proc(sendo, aSEN_TALK_END_WAIT); - break; + default: { + /* Failed to send data to GBA */ + aSEN_agb_trans_se_proc(sendo, FALSE); + mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, 0x308A)); + sendo->next_action = 2; + mMsg_Unset_LockContinue(msg_p); + mMsg_Set_ForceNext(msg_p); + mGcgba_EndComm(); + aSEN_change_talk_proc(sendo, aSEN_TALK_END_WAIT); + break; + } } - } } static void aSEN_chk_power_agb_talk_proc(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - switch (mGcgba_ConnectEnabled()) { - case GBA2_GBA_STATE_SUCCESS: - { - /* Successfully communicated with GBA */ - mGcgba_InitVar(); - aSEN_change_talk_proc(sendo, aSEN_TALK_CHK_EXIST_ISLAND_DATA_IN_AGB); - break; + switch (mGcgba_ConnectEnabled()) { + case GBA2_GBA_STATE_SUCCESS: { + /* Successfully communicated with GBA */ + mGcgba_InitVar(); + aSEN_change_talk_proc(sendo, aSEN_TALK_CHK_EXIST_ISLAND_DATA_IN_AGB); + break; + } + + case GBA2_GBA_STATE_TRANSMITTING: { + /* Communication in progress */ + break; + } + + default: { + /* Failed to communicate with GBA */ + + /* Try up to 5 times to connect with the GBA */ + sendo->gba_comm_tries++; + if (sendo->gba_comm_tries >= 5) { + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + + mMsg_Unset_LockContinue(msg_p); + mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, 0x3075)); + mMsg_Set_ForceNext(msg_p); + aSEN_change_talk_proc(sendo, aSEN_TALK_END_WAIT); + } else { + mGcgba_InitVar(); + } + + break; + } } - - case GBA2_GBA_STATE_TRANSMITTING: - { - /* Communication in progress */ - break; - } - - default: - { - /* Failed to communicate with GBA */ - - /* Try up to 5 times to connect with the GBA */ - sendo->gba_comm_tries++; - if (sendo->gba_comm_tries >= 5) { - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - - mMsg_Unset_LockContinue(msg_p); - mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, 0x3075)); - mMsg_Set_ForceNext(msg_p); - aSEN_change_talk_proc(sendo, aSEN_TALK_END_WAIT); - } - else{ - mGcgba_InitVar(); - } - - break; - } - } } static void aSEN_chk_exist_island_data_in_agb_talk_proc(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - switch (mGcgba_IsIsland()) { - case GBA2_GBA_STATE_SUCCESS: - { - /* Confirmed an island is loaded on the GBA */ - mGcgba_InitVar(); - aSEN_change_talk_proc(sendo, aSEN_TALK_CHK_READ_AGB); - break; - } + switch (mGcgba_IsIsland()) { + case GBA2_GBA_STATE_SUCCESS: { + /* Confirmed an island is loaded on the GBA */ + mGcgba_InitVar(); + aSEN_change_talk_proc(sendo, aSEN_TALK_CHK_READ_AGB); + break; + } - case GBA2_GBA_STATE_TRANSMITTING: - { - /* Communication in progress */ - break; - } + case GBA2_GBA_STATE_TRANSMITTING: { + /* Communication in progress */ + break; + } - default: - { - /* Failed to communicate with GBA */ - sendo->use_island_data_in_ram = TRUE; - mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 1); - aSEN_change_talk_proc(sendo, aSEN_TALK_CHK_EXIST_ISLAND_DATA_IN_RAM); - break; + default: { + /* Failed to communicate with GBA */ + sendo->use_island_data_in_ram = TRUE; + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 1); + aSEN_change_talk_proc(sendo, aSEN_TALK_CHK_EXIST_ISLAND_DATA_IN_RAM); + break; + } } - } } static void aSEN_chk_read_agb_talk_proc(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - static u8 next_talk_idx[] = { aSEN_TALK_END_WAIT, aSEN_TALK_CHK_RETRY_READ_AGB, aSEN_TALK_CHK_USE_ISLAND_DATA_IN_RAM }; - static int msg_no[] = { 0x3076, 0x3078, 0x30C0 }; - int talk_act = -1; + static u8 next_talk_idx[] = { aSEN_TALK_END_WAIT, aSEN_TALK_CHK_RETRY_READ_AGB, + aSEN_TALK_CHK_USE_ISLAND_DATA_IN_RAM }; + static int msg_no[] = { 0x3076, 0x3078, 0x30C0 }; + int talk_act = -1; - switch (mGcgba_Recv((u8*)Common_GetPointer(agb_island), sizeof(Common_Get(agb_island)))) { - case GBA2_GBA_STATE_SUCCESS: - { - /* Read the island from the GBA */ - if (Common_Get(agb_island).in_use == TRUE) { - talk_act = 2; - } - else { - mISL_KeepIsland(Save_GetPointer(island)); - mISL_agb_to_gc(Common_GetPointer(transfer_island), Common_GetPointer(agb_island)); - bcopy(Common_GetPointer(transfer_island), Save_GetPointer(island), sizeof(Island_c)); - aSEN_setup_pl_ride_on(sendo); - talk_act = 0; - } - break; + switch (mGcgba_Recv((u8*)Common_GetPointer(agb_island), sizeof(Common_Get(agb_island)))) { + case GBA2_GBA_STATE_SUCCESS: { + /* Read the island from the GBA */ + if (Common_Get(agb_island).in_use == TRUE) { + talk_act = 2; + } else { + mISL_KeepIsland(Save_GetPointer(island)); + mISL_agb_to_gc(Common_GetPointer(transfer_island), Common_GetPointer(agb_island)); + bcopy(Common_GetPointer(transfer_island), Save_GetPointer(island), sizeof(Island_c)); + aSEN_setup_pl_ride_on(sendo); + talk_act = 0; + } + break; + } + + case GBA2_GBA_STATE_TRANSMITTING: { + /* Communication in progress */ + break; + } + + default: { + /* Failed to communicate with GBA */ + talk_act = 1; + break; + } } - case GBA2_GBA_STATE_TRANSMITTING: - { - /* Communication in progress */ - break; + if (talk_act != -1) { + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + + mMsg_Unset_LockContinue(msg_p); + mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, msg_no[talk_act])); + mMsg_Set_ForceNext(msg_p); + mGcgba_EndComm(); + aSEN_change_talk_proc(sendo, next_talk_idx[talk_act]); } - - default: - { - /* Failed to communicate with GBA */ - talk_act = 1; - break; - } - } - - if (talk_act != -1) { - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - - mMsg_Unset_LockContinue(msg_p); - mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, msg_no[talk_act])); - mMsg_Set_ForceNext(msg_p); - mGcgba_EndComm(); - aSEN_change_talk_proc(sendo, next_talk_idx[talk_act]); - } } static void aSEN_chk_retry_read_agb_talk_proc(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - static u8 next_talk_idx[] = { aSEN_TALK_END_WAIT, aSEN_TALK_CHK_EXIST_ISLAND_DATA_IN_RAM }; - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - int order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); + static u8 next_talk_idx[] = { aSEN_TALK_END_WAIT, aSEN_TALK_CHK_EXIST_ISLAND_DATA_IN_RAM }; + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + int order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); - if (order != 0 && mMsg_Check_MainNormalContinue(msg_p) == TRUE) { - int keep_island = -1; + if (order != 0 && mMsg_Check_MainNormalContinue(msg_p) == TRUE) { + int keep_island = -1; - switch (mChoice_Get_ChoseNum(mChoice_Get_base_window_p())) { - case mChoice_CHOICE0: - mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); - keep_island = 0; - break; - case mChoice_CHOICE1: - keep_island = 1; - mMsg_Set_LockContinue(msg_p); - sendo->use_island_data_in_ram = TRUE; - break; + switch (mChoice_Get_ChoseNum(mChoice_Get_base_window_p())) { + case mChoice_CHOICE0: + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + keep_island = 0; + break; + case mChoice_CHOICE1: + keep_island = 1; + mMsg_Set_LockContinue(msg_p); + sendo->use_island_data_in_ram = TRUE; + break; + } + + if (keep_island != -1) { + aSEN_change_talk_proc(sendo, next_talk_idx[keep_island]); + } } - - if (keep_island != -1) { - aSEN_change_talk_proc(sendo, next_talk_idx[keep_island]); - } - } } static void aSEN_chk_use_island_data_in_ram_talk_proc(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - static u8 next_talk_idx[] = { aSEN_TALK_CHK_EXIST_ISLAND_DATA_IN_RAM, aSEN_TALK_END_WAIT }; - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - int order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); + static u8 next_talk_idx[] = { aSEN_TALK_CHK_EXIST_ISLAND_DATA_IN_RAM, aSEN_TALK_END_WAIT }; + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + int order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); - if (order != 0 && mMsg_Check_MainNormalContinue(msg_p) == TRUE) { - int keep_island = -1; + if (order != 0 && mMsg_Check_MainNormalContinue(msg_p) == TRUE) { + int keep_island = -1; - switch (mChoice_Get_ChoseNum(mChoice_Get_base_window_p())) { - case mChoice_CHOICE0: - keep_island = 0; - mMsg_Set_LockContinue(msg_p); - sendo->use_island_data_in_ram = TRUE; - break; - case mChoice_CHOICE1: - mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); - keep_island = 1; - break; + switch (mChoice_Get_ChoseNum(mChoice_Get_base_window_p())) { + case mChoice_CHOICE0: + keep_island = 0; + mMsg_Set_LockContinue(msg_p); + sendo->use_island_data_in_ram = TRUE; + break; + case mChoice_CHOICE1: + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + keep_island = 1; + break; + } + + if (keep_island != -1) { + aSEN_change_talk_proc(sendo, next_talk_idx[keep_island]); + } } - - if (keep_island != -1) { - aSEN_change_talk_proc(sendo, next_talk_idx[keep_island]); - } - } } static void aSEN_chk_power_agb2_talk_proc(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - switch (mGcgba_ConnectEnabled()) { - case GBA2_GBA_STATE_SUCCESS: - { - /* Successfully communicated with GBA */ - lbRTC_TimeCopy(&Save_Get(island).renew_time, Common_GetPointer(time.rtc_time)); - mGcgba_InitVar(); - aSEN_change_talk_proc(sendo, aSEN_TALK_CHK_EXIST_ISLAND_DATA_IN_AGB2); - break; + switch (mGcgba_ConnectEnabled()) { + case GBA2_GBA_STATE_SUCCESS: { + /* Successfully communicated with GBA */ + lbRTC_TimeCopy(&Save_Get(island).renew_time, Common_GetPointer(time.rtc_time)); + mGcgba_InitVar(); + aSEN_change_talk_proc(sendo, aSEN_TALK_CHK_EXIST_ISLAND_DATA_IN_AGB2); + break; + } + + case GBA2_GBA_STATE_TRANSMITTING: { + /* Communication in progress */ + break; + } + + default: { + /* Failed to communicate with GBA */ + + /* Try up to 5 times to connect with the GBA */ + sendo->gba_comm_tries++; + if (sendo->gba_comm_tries >= 5) { + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + + mMsg_Unset_LockContinue(msg_p); + mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, 0x3089)); + mMsg_Set_ForceNext(msg_p); + mGcgba_EndComm(); + aSEN_change_talk_proc(sendo, aSEN_TALK_CHK_TRANS_ISLAND_DATA_FROM_AGB2); + } else { + mGcgba_InitVar(); + } + + break; + } } - - case GBA2_GBA_STATE_TRANSMITTING: - { - /* Communication in progress */ - break; - } - - default: - { - /* Failed to communicate with GBA */ - - /* Try up to 5 times to connect with the GBA */ - sendo->gba_comm_tries++; - if (sendo->gba_comm_tries >= 5) { - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - - mMsg_Unset_LockContinue(msg_p); - mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, 0x3089)); - mMsg_Set_ForceNext(msg_p); - mGcgba_EndComm(); - aSEN_change_talk_proc(sendo, aSEN_TALK_CHK_TRANS_ISLAND_DATA_FROM_AGB2); - } - else{ - mGcgba_InitVar(); - } - - break; - } - } } static void aSEN_chk_trans_island_data_from_agb2_talk_proc(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - int order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); + int order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); - if (order != 0 && mMsg_Check_MainNormalContinue(mMsg_Get_base_window_p()) == TRUE) { - switch (mChoice_Get_ChoseNum(mChoice_Get_base_window_p())) { - case mChoice_CHOICE0: - mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); - aSEN_setup_pl_ride_on(sendo); - aSEN_change_talk_proc(sendo, aSEN_TALK_END_WAIT); - break; - case mChoice_CHOICE1: - mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); - aSEN_change_talk_proc(sendo, aSEN_TALK_END_WAIT); - break; + if (order != 0 && mMsg_Check_MainNormalContinue(mMsg_Get_base_window_p()) == TRUE) { + switch (mChoice_Get_ChoseNum(mChoice_Get_base_window_p())) { + case mChoice_CHOICE0: + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + aSEN_setup_pl_ride_on(sendo); + aSEN_change_talk_proc(sendo, aSEN_TALK_END_WAIT); + break; + case mChoice_CHOICE1: + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + aSEN_change_talk_proc(sendo, aSEN_TALK_END_WAIT); + break; + } } - } } static void aSEN_chk_exist_island_data_in_agb2_talk_proc(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - switch (mGcgba_IsIsland()) { - case GBA2_GBA_STATE_SUCCESS: - { - /* Confirmed an island is loaded on the GBA */ - mGcgba_InitVar(); - aSEN_change_talk_proc(sendo, aSEN_TALK_CHK_READ_AGB2); - break; - } + switch (mGcgba_IsIsland()) { + case GBA2_GBA_STATE_SUCCESS: { + /* Confirmed an island is loaded on the GBA */ + mGcgba_InitVar(); + aSEN_change_talk_proc(sendo, aSEN_TALK_CHK_READ_AGB2); + break; + } - case GBA2_GBA_STATE_TRANSMITTING: - { - /* Communication in progress */ - break; - } + case GBA2_GBA_STATE_TRANSMITTING: { + /* Communication in progress */ + break; + } - default: - { - /* Failed to communicate with GBA */ - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + default: { + /* Failed to communicate with GBA */ + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - mMsg_Unset_LockContinue(msg_p); - mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, 0x3086)); - mMsg_Set_ForceNext(msg_p); - aSEN_change_talk_proc(sendo, aSEN_TALK_TRANS_PRG_FOR_AGB_START_WAIT); - break; + mMsg_Unset_LockContinue(msg_p); + mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, 0x3086)); + mMsg_Set_ForceNext(msg_p); + aSEN_change_talk_proc(sendo, aSEN_TALK_TRANS_PRG_FOR_AGB_START_WAIT); + break; + } } - } } static void aSEN_chk_read_agb2_talk_proc(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - static u8 next_talk_idx[] = { aSEN_TALK_CHK_REWRITE_FOR_AGB, aSEN_TALK_TRANS_DATA_FOR_AGB_START_WAIT, aSEN_TALK_END_WAIT }; - static int msg_no[] = { 0x3087, 0x3086, 0x308A }; - int talk_act = -1; + static u8 next_talk_idx[] = { + aSEN_TALK_CHK_REWRITE_FOR_AGB, + aSEN_TALK_TRANS_DATA_FOR_AGB_START_WAIT, + aSEN_TALK_END_WAIT, + }; + static int msg_no[] = { 0x3087, 0x3086, 0x308A }; + int talk_act = -1; - switch (mGcgba_CheckRecv((u8*)Common_GetPointer(agb_island), sizeof(Common_Get(agb_island)))) { - case GBA2_GBA_STATE_SUCCESS: - { - /* Read the island from the GBA */ - mISL_agb_to_gc(Common_GetPointer(transfer_island), Common_GetPointer(agb_island)); - if (aSEN_compare_ram_island_and_agb_island() == TRUE) { - talk_act = 1; - } - else { - talk_act = 0; - } - break; + switch (mGcgba_CheckRecv((u8*)Common_GetPointer(agb_island), sizeof(Common_Get(agb_island)))) { + case GBA2_GBA_STATE_SUCCESS: { + /* Read the island from the GBA */ + mISL_agb_to_gc(Common_GetPointer(transfer_island), Common_GetPointer(agb_island)); + if (aSEN_compare_ram_island_and_agb_island() == TRUE) { + talk_act = 1; + } else { + talk_act = 0; + } + break; + } + + case GBA2_GBA_STATE_TRANSMITTING: { + /* Communication in progress */ + break; + } + + default: { + /* Failed to communicate with GBA */ + talk_act = 2; + sendo->next_action = 2; + break; + } } - case GBA2_GBA_STATE_TRANSMITTING: - { - /* Communication in progress */ - break; + if (talk_act != -1) { + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + + mMsg_Set_free_str(msg_p, mMsg_FREE_STR1, Common_Get(agb_island).name, mISL_ISLAND_NAME_LEN); + mMsg_Unset_LockContinue(msg_p); + mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, msg_no[talk_act])); + mMsg_Set_ForceNext(msg_p); + aSEN_change_talk_proc(sendo, next_talk_idx[talk_act]); } - - default: - { - /* Failed to communicate with GBA */ - talk_act = 2; - sendo->next_action = 2; - break; - } - } - - if (talk_act != -1) { - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - - mMsg_Set_free_str(msg_p, mMsg_FREE_STR1, Common_Get(agb_island).name, mISL_ISLAND_NAME_LEN); - mMsg_Unset_LockContinue(msg_p); - mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, msg_no[talk_act])); - mMsg_Set_ForceNext(msg_p); - aSEN_change_talk_proc(sendo, next_talk_idx[talk_act]); - } } static void aSEN_chk_power_agb3_talk_proc(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - switch (mGcgba_ConnectEnabled()) { - case GBA2_GBA_STATE_SUCCESS: - { - /* Successfully communicated with GBA */ - lbRTC_TimeCopy(&Save_Get(island).renew_time, Common_GetPointer(time.rtc_time)); - mGcgba_InitVar(); - aSEN_change_talk_proc(sendo, aSEN_TALK_CHK_EXIST_ISLAND_DATA_IN_AGB3); - break; + switch (mGcgba_ConnectEnabled()) { + case GBA2_GBA_STATE_SUCCESS: { + /* Successfully communicated with GBA */ + lbRTC_TimeCopy(&Save_Get(island).renew_time, Common_GetPointer(time.rtc_time)); + mGcgba_InitVar(); + aSEN_change_talk_proc(sendo, aSEN_TALK_CHK_EXIST_ISLAND_DATA_IN_AGB3); + break; + } + + case GBA2_GBA_STATE_TRANSMITTING: { + /* Communication in progress */ + break; + } + + default: { + /* Failed to communicate with GBA */ + + /* Try up to 5 times to connect with the GBA */ + sendo->gba_comm_tries++; + if (sendo->gba_comm_tries >= 5) { + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + + mMsg_Unset_LockContinue(msg_p); + mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, 0x3085)); + mMsg_Set_ForceNext(msg_p); + mGcgba_EndComm(); + aSEN_change_talk_proc(sendo, aSEN_TALK_END_WAIT); + } else { + mGcgba_InitVar(); + } + + break; + } } - - case GBA2_GBA_STATE_TRANSMITTING: - { - /* Communication in progress */ - break; - } - - default: - { - /* Failed to communicate with GBA */ - - /* Try up to 5 times to connect with the GBA */ - sendo->gba_comm_tries++; - if (sendo->gba_comm_tries >= 5) { - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - - mMsg_Unset_LockContinue(msg_p); - mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, 0x3085)); - mMsg_Set_ForceNext(msg_p); - mGcgba_EndComm(); - aSEN_change_talk_proc(sendo, aSEN_TALK_END_WAIT); - } - else{ - mGcgba_InitVar(); - } - - break; - } - } } static void aSEN_chk_exist_island_data_in_agb3_talk_proc(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - switch (mGcgba_IsIsland()) { - case GBA2_GBA_STATE_SUCCESS: - { - /* Confirmed an island is loaded on the GBA */ - mGcgba_InitVar(); - aSEN_change_talk_proc(sendo, aSEN_TALK_CHK_READ_AGB3); - break; - } + switch (mGcgba_IsIsland()) { + case GBA2_GBA_STATE_SUCCESS: { + /* Confirmed an island is loaded on the GBA */ + mGcgba_InitVar(); + aSEN_change_talk_proc(sendo, aSEN_TALK_CHK_READ_AGB3); + break; + } - case GBA2_GBA_STATE_TRANSMITTING: - { - /* Communication in progress */ - break; - } + case GBA2_GBA_STATE_TRANSMITTING: { + /* Communication in progress */ + break; + } - default: - { - /* Failed to communicate with GBA */ - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + default: { + /* Failed to communicate with GBA */ + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - mMsg_Unset_LockContinue(msg_p); - mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, 0x3086)); - mMsg_Set_ForceNext(msg_p); - aSEN_change_talk_proc(sendo, aSEN_TALK_TRANS_PRG_FOR_AGB_START_WAIT); - break; + mMsg_Unset_LockContinue(msg_p); + mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, 0x3086)); + mMsg_Set_ForceNext(msg_p); + aSEN_change_talk_proc(sendo, aSEN_TALK_TRANS_PRG_FOR_AGB_START_WAIT); + break; + } } - } } static void aSEN_chk_read_agb3_talk_proc(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - static u8 next_talk_idx[] = { aSEN_TALK_CHK_REWRITE_FOR_AGB, aSEN_TALK_TRANS_DATA_FOR_AGB_START_WAIT, aSEN_TALK_END_WAIT }; - static int msg_no[] = { 0x30BA, 0x3086, 0x308A }; - int talk_act = -1; + static u8 next_talk_idx[] = { aSEN_TALK_CHK_REWRITE_FOR_AGB, aSEN_TALK_TRANS_DATA_FOR_AGB_START_WAIT, + aSEN_TALK_END_WAIT }; + static int msg_no[] = { 0x30BA, 0x3086, 0x308A }; + int talk_act = -1; - switch (mGcgba_CheckRecv((u8*)Common_GetPointer(agb_island), sizeof(Common_Get(agb_island)))) { - case GBA2_GBA_STATE_SUCCESS: - { - /* Read the island from the GBA */ - mISL_agb_to_gc(Common_GetPointer(transfer_island), Common_GetPointer(agb_island)); - if (aSEN_compare_ram_island_and_agb_island() == TRUE) { - talk_act = 1; - } - else { - talk_act = 0; - } - break; + switch (mGcgba_CheckRecv((u8*)Common_GetPointer(agb_island), sizeof(Common_Get(agb_island)))) { + case GBA2_GBA_STATE_SUCCESS: { + /* Read the island from the GBA */ + mISL_agb_to_gc(Common_GetPointer(transfer_island), Common_GetPointer(agb_island)); + if (aSEN_compare_ram_island_and_agb_island() == TRUE) { + talk_act = 1; + } else { + talk_act = 0; + } + break; + } + + case GBA2_GBA_STATE_TRANSMITTING: { + /* Communication in progress */ + break; + } + + default: { + /* Failed to communicate with GBA */ + talk_act = 2; + sendo->next_action = 2; + break; + } } - case GBA2_GBA_STATE_TRANSMITTING: - { - /* Communication in progress */ - break; + if (talk_act != -1) { + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + + mMsg_Set_free_str(msg_p, mMsg_FREE_STR1, Common_Get(agb_island).name, mISL_ISLAND_NAME_LEN); + mMsg_Unset_LockContinue(msg_p); + mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, msg_no[talk_act])); + mMsg_Set_ForceNext(msg_p); + aSEN_change_talk_proc(sendo, next_talk_idx[talk_act]); } - - default: - { - /* Failed to communicate with GBA */ - talk_act = 2; - sendo->next_action = 2; - break; - } - } - - if (talk_act != -1) { - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - - mMsg_Set_free_str(msg_p, mMsg_FREE_STR1, Common_Get(agb_island).name, mISL_ISLAND_NAME_LEN); - mMsg_Unset_LockContinue(msg_p); - mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, msg_no[talk_act])); - mMsg_Set_ForceNext(msg_p); - aSEN_change_talk_proc(sendo, next_talk_idx[talk_act]); - } } static void aSEN_change_talk_proc(NPC_SENDO_ACTOR* sendo, u8 talk_idx) { - static aSEN_PROC talk_proc[aSEN_TALK_NUM] = { - (aSEN_PROC)&none_proc1, - aSEN_sing_end_wait_talk_proc, - aSEN_pl_ride_on_check_talk_proc, - aSEN_chk_exist_island_data_in_ram_talk_proc, - aSEN_msg_win_close_wait_talk_proc, - aSEN_get_island_name_menu_start_wait_talk_proc, - aSEN_get_island_name_menu_end_wait_talk_proc, - aSEN_msg_win_open_wait_talk_proc, - aSEN_pl_ride_on_check2_talk_proc, - aSEN_chk_write_for_agb_talk_proc, - aSEN_chk_rewrite_for_agb_talk_proc, - aSEN_trans_data_for_agb_start_wait_talk_proc, - aSEN_trans_data_for_agb_end_wait_talk_proc, - aSEN_trans_data_for_agb_start_wait_talk_proc, - aSEN_trans_prg_for_agb_end_wait_talk_proc, - aSEN_trans_prg2_for_agb_end_wait_talk_proc, - aSEN_chk_power_agb_talk_proc, - aSEN_chk_exist_island_data_in_agb_talk_proc, - aSEN_chk_read_agb_talk_proc, - aSEN_chk_retry_read_agb_talk_proc, - aSEN_chk_use_island_data_in_ram_talk_proc, - aSEN_chk_power_agb2_talk_proc, - aSEN_chk_trans_island_data_from_agb2_talk_proc, - aSEN_chk_exist_island_data_in_agb2_talk_proc, - aSEN_chk_read_agb2_talk_proc, - aSEN_chk_power_agb3_talk_proc, - aSEN_chk_exist_island_data_in_agb3_talk_proc, - aSEN_chk_read_agb3_talk_proc - }; + static aSEN_PROC talk_proc[aSEN_TALK_NUM] = { + (aSEN_PROC)&none_proc1, + aSEN_sing_end_wait_talk_proc, + aSEN_pl_ride_on_check_talk_proc, + aSEN_chk_exist_island_data_in_ram_talk_proc, + aSEN_msg_win_close_wait_talk_proc, + aSEN_get_island_name_menu_start_wait_talk_proc, + aSEN_get_island_name_menu_end_wait_talk_proc, + aSEN_msg_win_open_wait_talk_proc, + aSEN_pl_ride_on_check2_talk_proc, + aSEN_chk_write_for_agb_talk_proc, + aSEN_chk_rewrite_for_agb_talk_proc, + aSEN_trans_data_for_agb_start_wait_talk_proc, + aSEN_trans_data_for_agb_end_wait_talk_proc, + aSEN_trans_data_for_agb_start_wait_talk_proc, + aSEN_trans_prg_for_agb_end_wait_talk_proc, + aSEN_trans_prg2_for_agb_end_wait_talk_proc, + aSEN_chk_power_agb_talk_proc, + aSEN_chk_exist_island_data_in_agb_talk_proc, + aSEN_chk_read_agb_talk_proc, + aSEN_chk_retry_read_agb_talk_proc, + aSEN_chk_use_island_data_in_ram_talk_proc, + aSEN_chk_power_agb2_talk_proc, + aSEN_chk_trans_island_data_from_agb2_talk_proc, + aSEN_chk_exist_island_data_in_agb2_talk_proc, + aSEN_chk_read_agb2_talk_proc, + aSEN_chk_power_agb3_talk_proc, + aSEN_chk_exist_island_data_in_agb3_talk_proc, + aSEN_chk_read_agb3_talk_proc, + }; - sendo->talk_action = talk_idx; - sendo->talk_proc = talk_proc[talk_idx]; + sendo->talk_action = talk_idx; + sendo->talk_proc = talk_proc[talk_idx]; } static void aSEN_set_force_talk_info(ACTOR* actorx) { - static aSEN_talk_request_c dt_tbl[7] = { - { 0x3077, 0, CAMERA2_PROCESS_NORMAL, 2, aSEN_TALK_END_WAIT }, - { 0x30BF, 0, CAMERA2_PROCESS_NORMAL, 2, aSEN_TALK_END_WAIT }, - { 0x3084, 0, CAMERA2_PROCESS_NORMAL, 2, aSEN_TALK_END_WAIT }, - { 0x3091, 0, CAMERA2_PROCESS_NORMAL, 2, aSEN_TALK_SING_END_WAIT }, - { 0x3096, 0, CAMERA2_PROCESS_NORMAL, 2, aSEN_TALK_SING_END_WAIT }, - { 0x307A, 0, CAMERA2_PROCESS_NORMAL, 2, aSEN_TALK_END_WAIT }, - { 0x308B, 0, CAMERA2_PROCESS_NORMAL, 2, aSEN_TALK_END_WAIT } - }; + static aSEN_talk_request_c dt_tbl[7] = { + { 0x3077, 0, CAMERA2_PROCESS_NORMAL, 2, aSEN_TALK_END_WAIT }, + { 0x30BF, 0, CAMERA2_PROCESS_NORMAL, 2, aSEN_TALK_END_WAIT }, + { 0x3084, 0, CAMERA2_PROCESS_NORMAL, 2, aSEN_TALK_END_WAIT }, + { 0x3091, 0, CAMERA2_PROCESS_NORMAL, 2, aSEN_TALK_SING_END_WAIT }, + { 0x3096, 0, CAMERA2_PROCESS_NORMAL, 2, aSEN_TALK_SING_END_WAIT }, + { 0x307A, 0, CAMERA2_PROCESS_NORMAL, 2, aSEN_TALK_END_WAIT }, + { 0x308B, 0, CAMERA2_PROCESS_NORMAL, 2, aSEN_TALK_END_WAIT }, + }; - NPC_SENDO_ACTOR* sendo = (NPC_SENDO_ACTOR*)actorx; - aSEN_talk_request_c* talk_request = &dt_tbl[sendo->talk_action]; - - mDemo_Set_msg_num(aSEN_get_msg_no(sendo, talk_request->msg_no)); - mDemo_Set_talk_turn(talk_request->player_talk_turn); - mDemo_Set_camera(talk_request->msg_camera_type); - mDemo_Set_talk_change_player(0); - mMsg_Set_free_str(mMsg_Get_base_window_p(), mMsg_FREE_STR0, Save_Get(island).name, mISL_ISLAND_NAME_LEN); - sendo->npc_class.talk_info.turn = talk_request->sendo_talk_turn; - aSEN_change_talk_proc(sendo, talk_request->talk_act); -} - -static void aSEN_force_talk_request(ACTOR* actorx, GAME* game) { - mDemo_Request(mDemo_TYPE_SPEAK, actorx, &aSEN_set_force_talk_info); -} - -static void aSEN_set_norm_talk_info(ACTOR* actorx) { - static aSEN_talk_request_c dt_tbl[7] = { - { 0x3073, 1, CAMERA2_PROCESS_TALK, 1, aSEN_TALK_PL_RIDE_ON_CHECK }, - { 0x30B9, 1, CAMERA2_PROCESS_TALK, 1, aSEN_TALK_PL_RIDE_ON_CHECK }, - { 0x3080, 1, CAMERA2_PROCESS_TALK, 1, aSEN_TALK_PL_RIDE_ON_CHECK2 }, - { 0x307B, 1, CAMERA2_PROCESS_TALK, 1, aSEN_TALK_END_WAIT }, - { 0x308C, 1, CAMERA2_PROCESS_TALK, 0, aSEN_TALK_END_WAIT }, - // unused - // unused - }; - - NPC_SENDO_ACTOR* sendo = (NPC_SENDO_ACTOR*)actorx; - - if (Common_Get(clip).aprilfool_control_clip != NULL && (*Common_Get(clip).aprilfool_control_clip->talk_chk_proc)(SP_NPC_SENDO) == FALSE) { - int aprilfool_msg_no = (*Common_Get(clip).aprilfool_control_clip->get_msg_num_proc)(SP_NPC_SENDO, 1); - - mDemo_Set_msg_num(aprilfool_msg_no); - mDemo_Set_talk_turn(1); - mDemo_Set_camera(CAMERA2_PROCESS_TALK); - sendo->npc_class.talk_info.turn = 0; - aSEN_change_talk_proc(sendo, aSEN_TALK_END_WAIT); - } - else { + NPC_SENDO_ACTOR* sendo = (NPC_SENDO_ACTOR*)actorx; aSEN_talk_request_c* talk_request = &dt_tbl[sendo->talk_action]; mDemo_Set_msg_num(aSEN_get_msg_no(sendo, talk_request->msg_no)); mDemo_Set_talk_turn(talk_request->player_talk_turn); mDemo_Set_camera(talk_request->msg_camera_type); + mDemo_Set_talk_change_player(0); mMsg_Set_free_str(mMsg_Get_base_window_p(), mMsg_FREE_STR0, Save_Get(island).name, mISL_ISLAND_NAME_LEN); sendo->npc_class.talk_info.turn = talk_request->sendo_talk_turn; aSEN_change_talk_proc(sendo, talk_request->talk_act); - } +} + +static void aSEN_force_talk_request(ACTOR* actorx, GAME* game) { + mDemo_Request(mDemo_TYPE_SPEAK, actorx, &aSEN_set_force_talk_info); +} + +static void aSEN_set_norm_talk_info(ACTOR* actorx) { + static aSEN_talk_request_c dt_tbl[7] = { + { 0x3073, 1, CAMERA2_PROCESS_TALK, 1, aSEN_TALK_PL_RIDE_ON_CHECK }, + { 0x30B9, 1, CAMERA2_PROCESS_TALK, 1, aSEN_TALK_PL_RIDE_ON_CHECK }, + { 0x3080, 1, CAMERA2_PROCESS_TALK, 1, aSEN_TALK_PL_RIDE_ON_CHECK2 }, + { 0x307B, 1, CAMERA2_PROCESS_TALK, 1, aSEN_TALK_END_WAIT }, + { 0x308C, 1, CAMERA2_PROCESS_TALK, 0, aSEN_TALK_END_WAIT }, + // unused + // unused + }; + + NPC_SENDO_ACTOR* sendo = (NPC_SENDO_ACTOR*)actorx; + + if (Common_Get(clip).aprilfool_control_clip != NULL && + (*Common_Get(clip).aprilfool_control_clip->talk_chk_proc)(SP_NPC_SENDO) == FALSE) { + int aprilfool_msg_no = (*Common_Get(clip).aprilfool_control_clip->get_msg_num_proc)(SP_NPC_SENDO, 1); + + mDemo_Set_msg_num(aprilfool_msg_no); + mDemo_Set_talk_turn(1); + mDemo_Set_camera(CAMERA2_PROCESS_TALK); + sendo->npc_class.talk_info.turn = 0; + aSEN_change_talk_proc(sendo, aSEN_TALK_END_WAIT); + } else { + aSEN_talk_request_c* talk_request = &dt_tbl[sendo->talk_action]; + + mDemo_Set_msg_num(aSEN_get_msg_no(sendo, talk_request->msg_no)); + mDemo_Set_talk_turn(talk_request->player_talk_turn); + mDemo_Set_camera(talk_request->msg_camera_type); + mMsg_Set_free_str(mMsg_Get_base_window_p(), mMsg_FREE_STR0, Save_Get(island).name, mISL_ISLAND_NAME_LEN); + sendo->npc_class.talk_info.turn = talk_request->sendo_talk_turn; + aSEN_change_talk_proc(sendo, talk_request->talk_act); + } } static void aSEN_norm_talk_request(ACTOR* actorx, GAME* game) { - mDemo_Request(mDemo_TYPE_TALK, actorx, &aSEN_set_norm_talk_info); + mDemo_Request(mDemo_TYPE_TALK, actorx, &aSEN_set_norm_talk_info); } static int aSEN_talk_init(ACTOR* actorx, GAME* game) { - mDemo_Set_ListenAble(); - return TRUE; + mDemo_Set_ListenAble(); + return TRUE; } static int aSEN_talk_end_chk(ACTOR* actorx, GAME* game) { - NPC_SENDO_ACTOR* sendo = (NPC_SENDO_ACTOR*)actorx; - GAME_PLAY* play = (GAME_PLAY*)game; + NPC_SENDO_ACTOR* sendo = (NPC_SENDO_ACTOR*)actorx; + GAME_PLAY* play = (GAME_PLAY*)game; - int res = FALSE; - - (*sendo->talk_proc)(sendo, play); - if (mDemo_Check(mDemo_TYPE_SPEAK, actorx) == FALSE && mDemo_Check(mDemo_TYPE_TALK, actorx) == FALSE) { - aSEN_setup_think_proc(sendo, play, sendo->next_action); - res = TRUE; - } + int res = FALSE; - return res; + (*sendo->talk_proc)(sendo, play); + if (mDemo_Check(mDemo_TYPE_SPEAK, actorx) == FALSE && mDemo_Check(mDemo_TYPE_TALK, actorx) == FALSE) { + aSEN_setup_think_proc(sendo, play, sendo->next_action); + res = TRUE; + } + + return res; } static void aSEN_set_matrix(NPC_SENDO_ACTOR* sendo) { - BOAT_DEMO_ACTOR* boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; + BOAT_DEMO_ACTOR* boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; - if (boat_demo != NULL) { - BOAT_ACTOR* boat = (BOAT_ACTOR*)boat_demo->boat_actor; + if (boat_demo != NULL) { + BOAT_ACTOR* boat = (BOAT_ACTOR*)boat_demo->boat_actor; - if (boat != NULL) { - Matrix_translate(boat->actor_class.world.position.x, boat->actor_class.world.position.y, boat->actor_class.world.position.z, 0); - Matrix_RotateY(boat->actor_class.shape_info.rotation.y, 1); - Matrix_RotateZ(boat->actor_class.shape_info.rotation.z, 1); - Matrix_translate(-8.0f, 20.0f, -34.0f, 1); - Matrix_RotateY(sendo->npc_class.actor_class.shape_info.rotation.y, 1); - Matrix_get(&aSEN_matrix); - Matrix_Position_Zero(&sendo->npc_class.actor_class.world.position); + if (boat != NULL) { + Matrix_translate(boat->actor_class.world.position.x, boat->actor_class.world.position.y, + boat->actor_class.world.position.z, 0); + Matrix_RotateY(boat->actor_class.shape_info.rotation.y, 1); + Matrix_RotateZ(boat->actor_class.shape_info.rotation.z, 1); + Matrix_translate(-8.0f, 20.0f, -34.0f, 1); + Matrix_RotateY(sendo->npc_class.actor_class.shape_info.rotation.y, 1); + Matrix_get(&aSEN_matrix); + Matrix_Position_Zero(&sendo->npc_class.actor_class.world.position); - sendo->npc_class._174 = boat->actor_class.shape_info.rotation; + sendo->npc_class._174 = boat->actor_class.shape_info.rotation; + } } - } } static void aSEN_actor_move(ACTOR* actorx, GAME* game) { - NPC_SENDO_ACTOR* sendo = (NPC_SENDO_ACTOR*)actorx; + NPC_SENDO_ACTOR* sendo = (NPC_SENDO_ACTOR*)actorx; - aSEN_set_matrix(sendo); + aSEN_set_matrix(sendo); - if (sendo->npc_class.draw._5BE == 1) { - sAdos_GetKappaCounter(&sendo->kappa_counter); - aSEN_set_anime_current(sendo); - } + if (sendo->npc_class.draw._5BE == 1) { + sAdos_GetKappaCounter(&sendo->kappa_counter); + aSEN_set_anime_current(sendo); + } - (*Common_Get(clip).npc_clip->move_proc)(actorx, game); + (*Common_Get(clip).npc_clip->move_proc)(actorx, game); } diff --git a/src/ac_t_keitai.c b/src/ac_t_keitai.c index ed084420..151557d7 100644 --- a/src/ac_t_keitai.c +++ b/src/ac_t_keitai.c @@ -6,26 +6,14 @@ #include "m_rcp.h" #include "m_common_data.h" -enum { - aTKT_ACTION_WAIT, - aTKT_ACTION_TAKEOUT, - aTKT_ACTION_PUTAWAY, - aTKT_ACTION_DESTRUCT, - aTKT_ACTION_TAKEOUT2, - aTKT_ACTION_DELETED // Placeholder. Unknown use. -}; - extern cKF_Animation_R_c cKF_ba_r_tol_keitai_1_keitai_on1; extern cKF_Animation_R_c cKF_ba_r_tol_keitai_1_keitai_off1; extern cKF_Skeleton_R_c cKF_bs_r_tol_keitai_1; KEITAI_ACTION_ANIM aTKT_anm_dt[6] = { - { &cKF_ba_r_tol_keitai_1_keitai_on1, 1.0f, 1.0f }, - { &cKF_ba_r_tol_keitai_1_keitai_on1, 1.0f, 68.0f }, - { &cKF_ba_r_tol_keitai_1_keitai_off1, 1.0f, 61.0f}, - { &cKF_ba_r_tol_keitai_1_keitai_off1, 1.0f, 61.0f}, - { &cKF_ba_r_tol_keitai_1_keitai_on1, 1.0f, 68.0f}, - { NULL, 0.0f, 0.0f} + { &cKF_ba_r_tol_keitai_1_keitai_on1, 1.0f, 1.0f }, { &cKF_ba_r_tol_keitai_1_keitai_on1, 1.0f, 68.0f }, + { &cKF_ba_r_tol_keitai_1_keitai_off1, 1.0f, 61.0f }, { &cKF_ba_r_tol_keitai_1_keitai_off1, 1.0f, 61.0f }, + { &cKF_ba_r_tol_keitai_1_keitai_on1, 1.0f, 68.0f }, { NULL, 0.0f, 0.0f }, }; static void aTKT_actor_ct(ACTOR* actor, GAME* game); @@ -33,149 +21,148 @@ static void aTKT_actor_move(ACTOR* actor, GAME* game); static void aTKT_actor_draw(ACTOR* actor, GAME* game); ACTOR_PROFILE T_Keitai_Profile = { - mAc_PROFILE_T_KEITAI, - ACTOR_PART_BG, - ACTOR_STATE_NO_DRAW_WHILE_CULLED | ACTOR_STATE_NO_MOVE_WHILE_CULLED, - EMPTY_NO, - ACTOR_OBJ_BANK_KEITAI, - sizeof(KEITAI_ACTOR), - &aTKT_actor_ct, - NONE_ACTOR_PROC, - &aTKT_actor_move, - &aTKT_actor_draw, - NULL + mAc_PROFILE_T_KEITAI, + ACTOR_PART_BG, + ACTOR_STATE_NO_DRAW_WHILE_CULLED | ACTOR_STATE_NO_MOVE_WHILE_CULLED, + EMPTY_NO, + ACTOR_OBJ_BANK_KEITAI, + sizeof(KEITAI_ACTOR), + &aTKT_actor_ct, + NONE_ACTOR_PROC, + &aTKT_actor_move, + &aTKT_actor_draw, + NULL, }; static void aTKT_setupAction(KEITAI_ACTOR* actor, int action); static void aTKT_actor_ct(ACTOR* actor, GAME* game) { - KEITAI_ACTOR* keitai = (KEITAI_ACTOR*)actor; - cKF_SkeletonInfo_R_ct(&keitai->keyframe, &cKF_bs_r_tol_keitai_1, NULL, keitai->work, keitai->morph); - keitai->bank_ram_start = ((GAME_PLAY*)game)->object_exchange.banks[actor->data_bank_id].ram_start; - aTKT_setupAction(keitai, aTKT_ACTION_TAKEOUT); + KEITAI_ACTOR* keitai = (KEITAI_ACTOR*)actor; + cKF_SkeletonInfo_R_ct(&keitai->keyframe, &cKF_bs_r_tol_keitai_1, NULL, keitai->work, keitai->morph); + keitai->bank_ram_start = ((GAME_PLAY*)game)->object_exchange.banks[actor->data_bank_id].ram_start; + aTKT_setupAction(keitai, aTOL_ACTION_TAKEOUT); } static void aTKT_calc_scale(ACTOR* actor, int idx) { - static f32 start_scale[2] = { 0.0f, 1.0f }; - static f32 end_scale[2] = { 1.0f, 0.0f }; - static f32 start_chno[2] = { 10.0f, 33.0f }; - static f32 end_chno[2] = { 20.0f, 41.0f }; + static f32 start_scale[2] = { 0.0f, 1.0f }; + static f32 end_scale[2] = { 1.0f, 0.0f }; + static f32 start_chno[2] = { 10.0f, 33.0f }; + static f32 end_chno[2] = { 20.0f, 41.0f }; - f32 current_frame; - f32 starting_chno; - f32 ending_chno; - f32 starting_scale; - f32 ending_scale; - f32 scale; - KEITAI_ACTOR* keitai; + f32 current_frame; + f32 starting_chno; + f32 ending_chno; + f32 starting_scale; + f32 ending_scale; + f32 scale; + KEITAI_ACTOR* keitai; - keitai = (KEITAI_ACTOR*)actor; - current_frame = keitai->keyframe.frame_control.current_frame; - starting_chno = start_chno[idx]; - ending_chno = end_chno[idx]; - starting_scale = start_scale[idx]; - ending_scale = end_scale[idx]; - - if (current_frame < starting_chno) { - scale = starting_scale; - } else if (current_frame > ending_chno) { - scale = ending_scale; - } else { - scale = starting_scale + ((ending_scale - starting_scale) * ((current_frame - starting_chno) / (ending_chno - starting_chno))); - } - - actor->scale.x = scale; - actor->scale.y = scale; - actor->scale.z = scale; + keitai = (KEITAI_ACTOR*)actor; + current_frame = keitai->keyframe.frame_control.current_frame; + starting_chno = start_chno[idx]; + ending_chno = end_chno[idx]; + starting_scale = start_scale[idx]; + ending_scale = end_scale[idx]; + + if (current_frame < starting_chno) { + scale = starting_scale; + } else if (current_frame > ending_chno) { + scale = ending_scale; + } else { + scale = starting_scale + + ((ending_scale - starting_scale) * ((current_frame - starting_chno) / (ending_chno - starting_chno))); + } + + actor->scale.x = scale; + actor->scale.y = scale; + actor->scale.z = scale; } static void aTKT_takeout(ACTOR* actor) { - aTKT_calc_scale(actor, 0); + aTKT_calc_scale(actor, 0); } static void aTKT_putaway(ACTOR* actor) { - aTKT_calc_scale(actor, 1); + aTKT_calc_scale(actor, 1); } static void aTKT_destruct(ACTOR* actor) { - Actor_delete(actor); + Actor_delete(actor); } static void aTKT_s_takeout(ACTOR* actor) { - KEITAI_ACTOR* keitai = (KEITAI_ACTOR*)actor; + KEITAI_ACTOR* keitai = (KEITAI_ACTOR*)actor; - actor->scale.x = 1.0f; - actor->scale.y = 1.0f; - actor->scale.z = 1.0f; + actor->scale.x = 1.0f; + actor->scale.y = 1.0f; + actor->scale.z = 1.0f; - keitai->keyframe.frame_control.current_frame = keitai->keyframe.frame_control.end_frame; + keitai->keyframe.frame_control.current_frame = keitai->keyframe.frame_control.end_frame; } static void aTKT_setupAction(KEITAI_ACTOR* keitai, int action) { - static KEITAI_PROC action_process[] = {(KEITAI_PROC)none_proc1, aTKT_takeout, aTKT_putaway, aTKT_destruct, aTKT_s_takeout, NULL}; - - KEITAI_ACTION_ANIM *action_anim; - f32 starting_frame; - f32 ending_frame; + static KEITAI_PROC process[] = { + (KEITAI_PROC)none_proc1, aTKT_takeout, aTKT_putaway, aTKT_destruct, aTKT_s_takeout, NULL, + }; - keitai->action_proc = action_process[action]; - keitai->action = action; - keitai->tools_class.work0 = action; - - action_anim = &aTKT_anm_dt[action]; - starting_frame = action_anim->start_frame; - - cKF_SkeletonInfo_R_init( - &keitai->keyframe, keitai->keyframe.skeleton, - action_anim->animation, starting_frame, action_anim->end_frame, starting_frame, - 0.5f, 0.0f, cKF_FRAMECONTROL_STOP, NULL - ); + KEITAI_ACTION_ANIM* action_anim; + f32 starting_frame; + f32 ending_frame; + + keitai->action_proc = process[action]; + keitai->action = action; + keitai->tools_class.work0 = action; + + action_anim = &aTKT_anm_dt[action]; + starting_frame = action_anim->start_frame; + + cKF_SkeletonInfo_R_init(&keitai->keyframe, keitai->keyframe.skeleton, action_anim->animation, starting_frame, + action_anim->end_frame, starting_frame, 0.5f, 0.0f, cKF_FRAMECONTROL_STOP, NULL); } static void aTKT_actor_move(ACTOR* actor, GAME* game) { - KEITAI_ACTOR* keitai = (KEITAI_ACTOR*)actor; - int action = keitai->tools_class.work0; - if (action != keitai->action) { - aTKT_setupAction(keitai, action); - } + KEITAI_ACTOR* keitai = (KEITAI_ACTOR*)actor; + int action = keitai->tools_class.work0; + if (action != keitai->action) { + aTKT_setupAction(keitai, action); + } - cKF_SkeletonInfo_R_play(&keitai->keyframe); - keitai->action_proc(actor); + cKF_SkeletonInfo_R_play(&keitai->keyframe); + keitai->action_proc(actor); } static void aTKT_actor_draw(ACTOR* actor, GAME* game) { - cKF_SkeletonInfo_R_c* keyf; - GRAPH* graph; - Mtx* mtx; - Gfx* gfx; - KEITAI_ACTOR* keitai; + cKF_SkeletonInfo_R_c* keyf; + GRAPH* graph; + Mtx* mtx; + Gfx* gfx; + KEITAI_ACTOR* keitai; - keitai = (KEITAI_ACTOR*)actor; - keyf = &keitai->keyframe; - graph = game->graph; - mtx = GRAPH_ALLOC_TYPE(graph, Mtx, keyf->skeleton->num_shown_joints); + keitai = (KEITAI_ACTOR*)actor; + keyf = &keitai->keyframe; + graph = game->graph; + mtx = GRAPH_ALLOC_TYPE(graph, Mtx, keyf->skeleton->num_shown_joints); - if (mtx != NULL) { - if (keitai->tools_class.init_matrix == TRUE) { - Matrix_put(&keitai->tools_class.matrix_work); - Matrix_Position_Zero(&actor->world.position); - keitai->tools_class.init_matrix = FALSE; + if (mtx != NULL) { + if (keitai->tools_class.init_matrix == TRUE) { + Matrix_put(&keitai->tools_class.matrix_work); + Matrix_Position_Zero(&actor->world.position); + keitai->tools_class.init_matrix = FALSE; + } else { + Matrix_translate(actor->world.position.x, actor->world.position.y, actor->world.position.z, FALSE); + Matrix_scale(0.01f, 0.01f, 0.01f, TRUE); + } + + _texture_z_light_fog_prim_npc(graph); + + OPEN_DISP(graph); + + gfx = NOW_POLY_OPA_DISP; + Matrix_scale(actor->scale.x, actor->scale.y, actor->scale.z, TRUE); + gSPMatrix(gfx++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + SET_POLY_OPA_DISP(gfx); + + cKF_Si3_draw_R_SV(game, keyf, mtx, NULL, NULL, NULL); + CLOSE_DISP(graph); } - else { - Matrix_translate(actor->world.position.x, actor->world.position.y, actor->world.position.z, FALSE); - Matrix_scale(0.01f, 0.01f, 0.01f, TRUE); - } - - _texture_z_light_fog_prim_npc(graph); - - OPEN_DISP(graph); - - gfx = NOW_POLY_OPA_DISP; - Matrix_scale(actor->scale.x, actor->scale.y, actor->scale.z, TRUE); - gSPMatrix(gfx++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - SET_POLY_OPA_DISP(gfx); - - cKF_Si3_draw_R_SV(game, keyf, mtx, NULL, NULL, NULL); - CLOSE_DISP(graph); - } } diff --git a/src/ac_t_umbrella.c b/src/ac_t_umbrella.c index 6f520a89..edc5da0f 100644 --- a/src/ac_t_umbrella.c +++ b/src/ac_t_umbrella.c @@ -7,31 +7,29 @@ #include "m_common_data.h" enum { - aTUMB_ACTION_TAKEOUT_BEFORE, - aTUMB_ACTION_OPENING, // Placeholder. Unknown use. - aTUMB_ACTION_DELETED2, // Placeholder. Unknown use. - aTUMB_ACTION_DESTRUCT, - aTUMB_ACTION_DELETED3, // Placeholder. Unknown use. - aTUMB_ACTION_DELETED4 // Placeholder. Unknown use. + aTUMB_ACTION_TAKEOUT_BEFORE, + aTUMB_ACTION_OPENING, // Placeholder. Unknown use. + aTUMB_ACTION_DELETED2, // Placeholder. Unknown use. + aTUMB_ACTION_DESTRUCT, + aTUMB_ACTION_DELETED3, // Placeholder. Unknown use. + aTUMB_ACTION_DELETED4 // Placeholder. Unknown use. }; static void aTUMB_actor_ct(ACTOR* actor, GAME* game); static void aTUMB_actor_move(ACTOR* actor, GAME* game); static void aTUMB_actor_draw(ACTOR* actor, GAME* game); -ACTOR_PROFILE T_Umbrella_Profile = { - mAc_PROFILE_T_UMBRELLA, - ACTOR_PART_BG, - ACTOR_STATE_NO_DRAW_WHILE_CULLED | ACTOR_STATE_NO_MOVE_WHILE_CULLED, - EMPTY_NO, - ACTOR_OBJ_BANK_UMBRELLA, - sizeof(UMBRELLA_ACTOR), - &aTUMB_actor_ct, - NONE_ACTOR_PROC, - &aTUMB_actor_move, - &aTUMB_actor_draw, - NULL -}; +ACTOR_PROFILE T_Umbrella_Profile = { mAc_PROFILE_T_UMBRELLA, + ACTOR_PART_BG, + ACTOR_STATE_NO_DRAW_WHILE_CULLED | ACTOR_STATE_NO_MOVE_WHILE_CULLED, + EMPTY_NO, + ACTOR_OBJ_BANK_UMBRELLA, + sizeof(UMBRELLA_ACTOR), + &aTUMB_actor_ct, + NONE_ACTOR_PROC, + &aTUMB_actor_move, + &aTUMB_actor_draw, + NULL }; extern Gfx e_umb01_model[]; extern Gfx kasa_umb01_model[]; @@ -103,284 +101,244 @@ extern Gfx kasa_umb_w_model[]; static void aTUMB_setupAction(UMBRELLA_ACTOR* umbrella, int action); static void aTUMB_actor_ct(ACTOR* actor, GAME* game) { - UMBRELLA_ACTOR* umbrella = (UMBRELLA_ACTOR*)actor; - aTUMB_setupAction(umbrella, umbrella->tools_class.work0); + UMBRELLA_ACTOR* umbrella = (UMBRELLA_ACTOR*)actor; + aTUMB_setupAction(umbrella, umbrella->tools_class.work0); } static void aTUMB_OngenTrgStart_sub(ACTOR* actor, u16 id) { - sAdo_OngenTrgStart(id, &actor->world.position); + sAdo_OngenTrgStart(id, &actor->world.position); } static void aTUMB_OngenTrgStart(ACTOR* actor, int idx) { - switch(idx) { - case 1: - aTUMB_OngenTrgStart_sub(actor, 0x139); - break; - case 2: - aTUMB_OngenTrgStart_sub(actor, 0x10E); - break; - } + switch (idx) { + case 1: + aTUMB_OngenTrgStart_sub(actor, 0x139); + break; + case 2: + aTUMB_OngenTrgStart_sub(actor, 0x10E); + break; + } } static void aTUMB_calc_model_scale_sub(xyz_t* scale, UMBRELLA_ACTOR* umbrella, int idx) { - static f32 e_open_sect_table[6] = { 0.0f, 7.0f, 11.0f, 18.0f, 22.0f, 26.0f }; - static f32 e_open_scale_table[12] = { - 0.0f, 0.0f, 0.0f, 0.0f, 0.5f, 1.0f,0.5f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f - }; + static f32 e_open_sect_table[6] = { 0.0f, 7.0f, 11.0f, 18.0f, 22.0f, 26.0f }; + static f32 e_open_scale_table[12] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.5f, 1.0f, 0.5f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f }; - static f32 kasa_open_sect_table[4] = { 0.0f, 15.0f, 22.0f, 26.0f }; - static f32 kasa_open_scale_table[8] = { - 3.0f, 0.15f, 3.0f, 0.15f, 1.0f, 1.0f, 0.9, 1.0f - }; + static f32 kasa_open_sect_table[4] = { 0.0f, 15.0f, 22.0f, 26.0f }; + static f32 kasa_open_scale_table[8] = { 3.0f, 0.15f, 3.0f, 0.15f, 1.0f, 1.0f, 0.9, 1.0f }; - static UMBRELLA_DATA_TABLE open_data_table[2] = { - { 6, e_open_sect_table, e_open_scale_table }, - { 4, kasa_open_sect_table, kasa_open_scale_table } - }; + static UMBRELLA_DATA_TABLE open_data_table[2] = { { 6, e_open_sect_table, e_open_scale_table }, + { 4, kasa_open_sect_table, kasa_open_scale_table } }; - static f32 e_close_sect_table[6] = { 0.0f, 4.0f, 12.0f, 15.0f, 22.0f, 30.0f }; - static f32 e_close_scale_table[12] = { - 1.0f, 1.0f, 1.0f, 1.0f, 0.5f, 1.0f, 0.5f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f - }; + static f32 e_close_sect_table[6] = { 0.0f, 4.0f, 12.0f, 15.0f, 22.0f, 30.0f }; + static f32 e_close_scale_table[12] = { 1.0f, 1.0f, 1.0f, 1.0f, 0.5f, 1.0f, 0.5f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f }; - static f32 kasa_close_sect_table[4] = { 0.0f, 4.0f, 12.0f, 30.0f }; - static f32 kasa_close_scale_table[8] = { - 1.0f, 1.0f, 1.2f, 1.0f, 3.0f, 0.15f, 3.0f, 0.15f - }; + static f32 kasa_close_sect_table[4] = { 0.0f, 4.0f, 12.0f, 30.0f }; + static f32 kasa_close_scale_table[8] = { 1.0f, 1.0f, 1.2f, 1.0f, 3.0f, 0.15f, 3.0f, 0.15f }; - static UMBRELLA_DATA_TABLE close_data_table[2] = { - { 6, e_close_sect_table, e_close_scale_table }, - { 4, kasa_close_sect_table, kasa_close_scale_table } - }; + static UMBRELLA_DATA_TABLE close_data_table[2] = { { 6, e_close_sect_table, e_close_scale_table }, + { 4, kasa_close_sect_table, kasa_close_scale_table } }; - static UMBRELLA_DATA_TABLE* data_table[6] = { - open_data_table, open_data_table, close_data_table, close_data_table, open_data_table, NULL - }; + static UMBRELLA_DATA_TABLE* data_table[6] = { open_data_table, open_data_table, close_data_table, + close_data_table, open_data_table, NULL }; - f32 modifier_percentage; - f32 base_scale_x; - f32 base_scale_y; - f32 max_scale_y; - f32 max_scale_x; + f32 modifier_percentage; + f32 base_scale_x; + f32 base_scale_y; + f32 max_scale_y; + f32 max_scale_x; - int scale_idx_offset; - f32* scale_table; - int sector_idx; - int frame; - int corresponding_sector; - UMBRELLA_DATA_TABLE *table; - f32* sect_table; + int scale_idx_offset; + f32* scale_table; + int sector_idx; + int frame; + int corresponding_sector; + UMBRELLA_DATA_TABLE* table; + f32* sect_table; - corresponding_sector = 0; - table = data_table[umbrella->action] + idx; - sector_idx = table->table_length - 1; - frame = (int)umbrella->frame; - sect_table = table->sect_table + 1; + corresponding_sector = 0; + table = data_table[umbrella->action] + idx; + sector_idx = table->table_length - 1; + frame = (int)umbrella->frame; + sect_table = table->sect_table + 1; - for(sector_idx; sector_idx > 0; sector_idx--) { - if (frame <= (int)sect_table[0]) { - frame -= (int)sect_table[-1]; - break; - } + for (sector_idx; sector_idx > 0; sector_idx--) { + if (frame <= (int)sect_table[0]) { + frame -= (int)sect_table[-1]; + break; + } - sect_table++; - corresponding_sector++; - } + sect_table++; + corresponding_sector++; + } - scale_idx_offset = corresponding_sector * 2; - scale_table = table->scale_table; - base_scale_x = scale_table[scale_idx_offset]; - modifier_percentage = (f32) frame / (sect_table[0] - sect_table[-1]); - base_scale_y = scale_table[scale_idx_offset + 1]; - max_scale_y = scale_table[scale_idx_offset + 3]; - max_scale_x = scale_table[scale_idx_offset + 2]; + scale_idx_offset = corresponding_sector * 2; + scale_table = table->scale_table; + base_scale_x = scale_table[scale_idx_offset]; + modifier_percentage = (f32)frame / (sect_table[0] - sect_table[-1]); + base_scale_y = scale_table[scale_idx_offset + 1]; + max_scale_y = scale_table[scale_idx_offset + 3]; + max_scale_x = scale_table[scale_idx_offset + 2]; - scale->x = base_scale_x + modifier_percentage * (max_scale_x - base_scale_x); - scale->y = base_scale_y + modifier_percentage * (max_scale_y - base_scale_y); - scale->z = scale->y; + scale->x = base_scale_x + modifier_percentage * (max_scale_x - base_scale_x); + scale->y = base_scale_y + modifier_percentage * (max_scale_y - base_scale_y); + scale->z = scale->y; } static void aTUMB_calc_model_scale(UMBRELLA_ACTOR* umbrella) { - aTUMB_calc_model_scale_sub(&umbrella->scale_e, umbrella, 0); - aTUMB_calc_model_scale_sub(&umbrella->scale_kasa, umbrella, 1); + aTUMB_calc_model_scale_sub(&umbrella->scale_e, umbrella, 0); + aTUMB_calc_model_scale_sub(&umbrella->scale_kasa, umbrella, 1); } static void aTUMB_anime_proc(UMBRELLA_ACTOR* umbrella) { - static f32 max_anm[6] = { 0.0f, 26.0f, 30.0f, 30.0f, 26.0f, 0.0f }; + static f32 max_anm[6] = { 0.0f, 26.0f, 30.0f, 30.0f, 26.0f, 0.0f }; - f32 max_anm_for_action; - f32 next_frame; - int action; + f32 max_anm_for_action; + f32 next_frame; + int action; - action = umbrella->action; - max_anm_for_action = max_anm[action]; - next_frame = umbrella->frame; - next_frame += 0.5f; + action = umbrella->action; + max_anm_for_action = max_anm[action]; + next_frame = umbrella->frame; + next_frame += 0.5f; - if (next_frame >= max_anm_for_action) { - next_frame = max_anm_for_action; - } + if (next_frame >= max_anm_for_action) { + next_frame = max_anm_for_action; + } - if (action == aTUMB_ACTION_OPENING) { - umbrella->opened_fully = next_frame == max_anm_for_action; - } + if (action == aTUMB_ACTION_OPENING) { + umbrella->opened_fully = next_frame == max_anm_for_action; + } - umbrella->frame = next_frame; - aTUMB_calc_model_scale(umbrella); + umbrella->frame = next_frame; + aTUMB_calc_model_scale(umbrella); } static void aTUMB_takeout_before(ACTOR* actor) { - UMBRELLA_ACTOR* umbrella = (UMBRELLA_ACTOR*)actor; - if (umbrella->tools_class.unk1BC == TRUE) { - aTUMB_setupAction(umbrella, aTUMB_ACTION_OPENING); - } + UMBRELLA_ACTOR* umbrella = (UMBRELLA_ACTOR*)actor; + if (umbrella->tools_class.unk1BC == TRUE) { + aTUMB_setupAction(umbrella, aTUMB_ACTION_OPENING); + } } static void aTUMB_destruct(ACTOR* actor) { - Actor_delete(actor); + Actor_delete(actor); } void aTUMB_setupAction(UMBRELLA_ACTOR* umbrella, int action) { - static UMBRELLA_PROC process[] = { - aTUMB_takeout_before, (UMBRELLA_PROC)none_proc1, (UMBRELLA_PROC)none_proc1, aTUMB_destruct, (UMBRELLA_PROC)none_proc1, NULL - }; + static UMBRELLA_PROC process[] = { aTUMB_takeout_before, (UMBRELLA_PROC)none_proc1, (UMBRELLA_PROC)none_proc1, + aTUMB_destruct, (UMBRELLA_PROC)none_proc1, NULL }; - f32 frame; + f32 frame; - umbrella->action_proc = process[action]; - umbrella->action = action; - umbrella->tools_class.work0 = action; - - aTUMB_OngenTrgStart(&umbrella->tools_class.actor_class, action); + umbrella->action_proc = process[action]; + umbrella->action = action; + umbrella->tools_class.work0 = action; - if (action == aTUMB_ACTION_DELETED3) { - umbrella->opened_fully = TRUE; - frame = 26.0f; - } else { - frame = 0.0f; - } + aTUMB_OngenTrgStart(&umbrella->tools_class.actor_class, action); - umbrella->frame = frame; + if (action == aTUMB_ACTION_DELETED3) { + umbrella->opened_fully = TRUE; + frame = 26.0f; + } else { + frame = 0.0f; + } + + umbrella->frame = frame; } static void aTUMB_actor_move(ACTOR* actor, GAME* game) { - UMBRELLA_ACTOR* umbrella; - int action; + UMBRELLA_ACTOR* umbrella; + int action; - umbrella = (UMBRELLA_ACTOR*)actor; - action = umbrella->tools_class.work0; + umbrella = (UMBRELLA_ACTOR*)actor; + action = umbrella->tools_class.work0; - if (action != umbrella->action) { - aTUMB_setupAction(umbrella, action); - } + if (action != umbrella->action) { + aTUMB_setupAction(umbrella, action); + } - if (umbrella->action != aTUMB_ACTION_DESTRUCT) { - aTUMB_anime_proc(umbrella); - } + if (umbrella->action != aTUMB_ACTION_DESTRUCT) { + aTUMB_anime_proc(umbrella); + } - umbrella->action_proc(actor); + umbrella->action_proc(actor); } static void aTUMB_actor_draw(ACTOR* actor, GAME* game) { - static UMBRELLA_MODEL draw_dt[40] = { - { e_umb01_model, kasa_umb01_model }, - { e_umb02_model, kasa_umb02_model }, - { e_umb03_model, kasa_umb03_model }, - { e_umb04_model, kasa_umb04_model }, - { e_umb05_model, kasa_umb05_model }, - { e_umb06_model, kasa_umb06_model }, - { e_umb07_model, kasa_umb07_model }, - { e_umb08_model, kasa_umb08_model }, - { e_umb09_model, kasa_umb09_model }, - { e_umb10_model, kasa_umb10_model }, - { e_umb11_model, kasa_umb11_model }, - { e_umb12_model, kasa_umb12_model }, - { e_umb13_model, kasa_umb13_model }, - { e_umb14_model, kasa_umb14_model }, - { e_umb15_model, kasa_umb15_model }, - { e_umb16_model, kasa_umb16_model }, - { e_umb17_model, kasa_umb17_model }, - { e_umb18_model, kasa_umb18_model }, - { e_umb19_model, kasa_umb19_model }, - { e_umb20_model, kasa_umb20_model }, - { e_umb21_model, kasa_umb21_model }, - { e_umb22_model, kasa_umb22_model }, - { e_umb23_model, kasa_umb23_model }, - { e_umb24_model, kasa_umb24_model }, - { e_umb25_model, kasa_umb25_model }, - { e_umb26_model, kasa_umb26_model }, - { e_umb27_model, kasa_umb27_model }, - { e_umb28_model, kasa_umb28_model }, - { e_umb29_model, kasa_umb29_model }, - { e_umb30_model, kasa_umb30_model }, - { e_umb31_model, kasa_umb31_model }, - { e_umb32_model, kasa_umb32_model }, - { e_umb_w_model, kasa_umb_w_model }, - { e_umb_w_model, kasa_umb_w_model }, - { e_umb_w_model, kasa_umb_w_model }, - { e_umb_w_model, kasa_umb_w_model }, - { e_umb_w_model, kasa_umb_w_model }, - { e_umb_w_model, kasa_umb_w_model }, - { e_umb_w_model, kasa_umb_w_model }, - { e_umb_w_model, kasa_umb_w_model } - }; + static UMBRELLA_MODEL draw_dt[40] = { + { e_umb01_model, kasa_umb01_model }, { e_umb02_model, kasa_umb02_model }, { e_umb03_model, kasa_umb03_model }, + { e_umb04_model, kasa_umb04_model }, { e_umb05_model, kasa_umb05_model }, { e_umb06_model, kasa_umb06_model }, + { e_umb07_model, kasa_umb07_model }, { e_umb08_model, kasa_umb08_model }, { e_umb09_model, kasa_umb09_model }, + { e_umb10_model, kasa_umb10_model }, { e_umb11_model, kasa_umb11_model }, { e_umb12_model, kasa_umb12_model }, + { e_umb13_model, kasa_umb13_model }, { e_umb14_model, kasa_umb14_model }, { e_umb15_model, kasa_umb15_model }, + { e_umb16_model, kasa_umb16_model }, { e_umb17_model, kasa_umb17_model }, { e_umb18_model, kasa_umb18_model }, + { e_umb19_model, kasa_umb19_model }, { e_umb20_model, kasa_umb20_model }, { e_umb21_model, kasa_umb21_model }, + { e_umb22_model, kasa_umb22_model }, { e_umb23_model, kasa_umb23_model }, { e_umb24_model, kasa_umb24_model }, + { e_umb25_model, kasa_umb25_model }, { e_umb26_model, kasa_umb26_model }, { e_umb27_model, kasa_umb27_model }, + { e_umb28_model, kasa_umb28_model }, { e_umb29_model, kasa_umb29_model }, { e_umb30_model, kasa_umb30_model }, + { e_umb31_model, kasa_umb31_model }, { e_umb32_model, kasa_umb32_model }, { e_umb_w_model, kasa_umb_w_model }, + { e_umb_w_model, kasa_umb_w_model }, { e_umb_w_model, kasa_umb_w_model }, { e_umb_w_model, kasa_umb_w_model }, + { e_umb_w_model, kasa_umb_w_model }, { e_umb_w_model, kasa_umb_w_model }, { e_umb_w_model, kasa_umb_w_model }, + { e_umb_w_model, kasa_umb_w_model }, + }; - UMBRELLA_ACTOR* umbrella; - GRAPH* graph; - int umbrella_design_index; - int umbrella_name; - int tool_name; - UMBRELLA_MODEL* umbrella_model; - ACTOR* parent; - Gfx* gfx; + UMBRELLA_ACTOR* umbrella; + GRAPH* graph; + int umbrella_design_index; + int umbrella_name; + int tool_name; + UMBRELLA_MODEL* umbrella_model; + ACTOR* parent; + Gfx* gfx; - umbrella = (UMBRELLA_ACTOR*)actor; - parent = actor->parent_actor; - tool_name = umbrella->tools_class.tool_name; - graph = game->graph; - umbrella_model = &draw_dt[tool_name]; + umbrella = (UMBRELLA_ACTOR*)actor; + parent = actor->parent_actor; + tool_name = umbrella->tools_class.tool_name; + graph = game->graph; + umbrella_model = &draw_dt[tool_name]; - if (parent->drawn == FALSE || umbrella->tools_class.init_matrix == FALSE) { - return; - } - - Matrix_put(&umbrella->tools_class.matrix_work); - Matrix_Position_Zero(&umbrella->tools_class.actor_class.world.position); - - umbrella->tools_class.init_matrix = FALSE; - umbrella->tools_class.unk1BC = TRUE; - - _texture_z_light_fog_prim_npc(graph); - - OPEN_DISP(graph); - gfx = NOW_POLY_OPA_DISP; - - Matrix_rotateXYZ(0, -0x4000, 0, TRUE); - Matrix_scale(umbrella->scale_e.x, umbrella->scale_e.y, umbrella->scale_e.z, TRUE); - - gSPMatrix(gfx++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(gfx++, umbrella_model->model_e); - - Matrix_translate(4500.0f, 0.0f, 0.0f, TRUE); - Matrix_scale(umbrella->scale_kasa.x, umbrella->scale_kasa.y, umbrella->scale_kasa.z, TRUE); - - gSPMatrix(gfx++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - - if (tool_name >= TOOL_UMBRELLA32) { - umbrella_name = tool_name - TOOL_UMBRELLA32; - if (parent->part == ACTOR_PART_PLAYER) { - umbrella_name = (umbrella_name & 7); - gSPSegment(gfx++, G_MWO_SEGMENT_8, mNW_PaletteIdx2Palette(Player_Palette_Get(umbrella_name))); - gSPSegment(gfx++, G_MWO_SEGMENT_9, Player_Design_Get(umbrella_name)); + if (parent->drawn == FALSE || umbrella->tools_class.init_matrix == FALSE) { + return; } - else { - umbrella_name = umbrella_name & 3; - gSPSegment(gfx++, G_MWO_SEGMENT_8, mNW_PaletteIdx2Palette(Able_Sisters_Umbrella_Palette_Get(umbrella_name))); - gSPSegment(gfx++, G_MWO_SEGMENT_9, Able_Sisters_Umbrella_Design_Get(umbrella_name)); - } - } - gSPDisplayList(gfx++, umbrella_model->model_kasa); - SET_POLY_OPA_DISP(gfx); - CLOSE_DISP(graph); + Matrix_put(&umbrella->tools_class.matrix_work); + Matrix_Position_Zero(&umbrella->tools_class.actor_class.world.position); + + umbrella->tools_class.init_matrix = FALSE; + umbrella->tools_class.unk1BC = TRUE; + + _texture_z_light_fog_prim_npc(graph); + + OPEN_DISP(graph); + gfx = NOW_POLY_OPA_DISP; + + Matrix_rotateXYZ(0, -0x4000, 0, TRUE); + Matrix_scale(umbrella->scale_e.x, umbrella->scale_e.y, umbrella->scale_e.z, TRUE); + + gSPMatrix(gfx++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(gfx++, umbrella_model->model_e); + + Matrix_translate(4500.0f, 0.0f, 0.0f, TRUE); + Matrix_scale(umbrella->scale_kasa.x, umbrella->scale_kasa.y, umbrella->scale_kasa.z, TRUE); + + gSPMatrix(gfx++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + if (tool_name >= TOOL_ORG_UMBRELLA0) { + umbrella_name = tool_name - TOOL_ORG_UMBRELLA0; + if (parent->part == ACTOR_PART_PLAYER) { + umbrella_name = (umbrella_name & 7); + gSPSegment(gfx++, G_MWO_SEGMENT_8, mNW_PaletteIdx2Palette(Player_Palette_Get(umbrella_name))); + gSPSegment(gfx++, G_MWO_SEGMENT_9, Player_Design_Get(umbrella_name)); + } else { + umbrella_name = umbrella_name & 3; + gSPSegment(gfx++, G_MWO_SEGMENT_8, + mNW_PaletteIdx2Palette(Able_Sisters_Umbrella_Palette_Get(umbrella_name))); + gSPSegment(gfx++, G_MWO_SEGMENT_9, Able_Sisters_Umbrella_Design_Get(umbrella_name)); + } + } + + gSPDisplayList(gfx++, umbrella_model->model_kasa); + SET_POLY_OPA_DISP(gfx); + CLOSE_DISP(graph); } diff --git a/src/ac_tools.c b/src/ac_tools.c index 5fcfb6d2..19660eb4 100644 --- a/src/ac_tools.c +++ b/src/ac_tools.c @@ -10,7 +10,6 @@ static void aTOL_actor_dt(ACTOR*, GAME*); static void aTOL_init_clip_area(GAME* play); static void aTOL_free_clip_area(); - ACTOR_PROFILE Tools_Profile = { mAc_PROFILE_TOOLS, ACTOR_PART_CONTROL, @@ -25,124 +24,115 @@ ACTOR_PROFILE Tools_Profile = { NULL, }; -aTOL_Clip_c aTOL_clip; - - - -static void aTOL_actor_ct(ACTOR* actor, GAME* game){ +aTOL_Clip_c aTOL_clip; +static void aTOL_actor_ct(ACTOR* actor, GAME* game) { aTOL_init_clip_area(game); } -static void aTOL_actor_dt(ACTOR*, GAME*){ - +static void aTOL_actor_dt(ACTOR*, GAME*) { aTOL_free_clip_area(); } -static void aTOL_check_data_bank(int id, ACTOR* actor){ - +static void aTOL_check_data_bank(int id, ACTOR* actor) { ACTOR* kill; aTOL_Clip_c* clip; - if((actor->part == ACTOR_PART_PLAYER) && (id <= 0x1F)){ + if ((actor->part == ACTOR_PART_PLAYER) && (id <= 0x1F)) { clip = Common_Get(clip.tools_clip); - if(clip->bank_id != -1){ + if (clip->bank_id != -1) { kill = actor->child_actor; - if((kill != NULL) && (kill->data_bank_id == clip->bank_id)){ + if ((kill != NULL) && (kill->data_bank_id == clip->bank_id)) { Actor_delete(kill); } } } } -static TOOLS_ACTOR* aTOL_birth_proc(int name, int id, TOOLS_ACTOR* tool, - GAME_PLAY* play, s16 arg, int* arg5){ +static ACTOR* aTOL_birth_proc(int name, int id, ACTOR* tool, GAME* game, s16 arg, int* arg5) { static s16 profile_table[] = { - mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, - mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, - mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, - mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, - mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, - mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, - mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, - mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, - mAc_PROFILE_T_KEITAI, mAc_PROFILE_T_UTIWA, mAc_PROFILE_T_HANABI, mAc_PROFILE_T_CRACKER, mAc_PROFILE_T_PISTOL, - mAc_PROFILE_T_FLAG, mAc_PROFILE_T_TUMBLER, mAc_PROFILE_T_NPCSAO, mAc_PROFILE_T_TAMA, mAc_PROFILE_T_TAMA, - mAc_PROFILE_T_TAMA, mAc_PROFILE_T_TAMA, mAc_PROFILE_T_ANRIUM1, mAc_PROFILE_T_BAG1, mAc_PROFILE_T_BAG2, - mAc_PROFILE_T_BISCUS1, mAc_PROFILE_T_BISCUS2, mAc_PROFILE_T_BISCUS3, mAc_PROFILE_T_BISCUS4, mAc_PROFILE_T_HASU1, - mAc_PROFILE_T_HAT1, mAc_PROFILE_T_HAT2, mAc_PROFILE_T_HAT3, mAc_PROFILE_T_REI1, mAc_PROFILE_T_REI2, - mAc_PROFILE_T_ZINNIA1, mAc_PROFILE_T_ZINNIA2, mAc_PROFILE_T_COBRA1, + mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, + mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, + mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, + mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, + mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, + mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, + mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, + mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, + mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, + mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, + mAc_PROFILE_T_KEITAI, mAc_PROFILE_T_UTIWA, mAc_PROFILE_T_HANABI, mAc_PROFILE_T_CRACKER, + mAc_PROFILE_T_PISTOL, mAc_PROFILE_T_FLAG, mAc_PROFILE_T_TUMBLER, mAc_PROFILE_T_NPCSAO, + mAc_PROFILE_T_TAMA, mAc_PROFILE_T_TAMA, mAc_PROFILE_T_TAMA, mAc_PROFILE_T_TAMA, + mAc_PROFILE_T_ANRIUM1, mAc_PROFILE_T_BAG1, mAc_PROFILE_T_BAG2, mAc_PROFILE_T_BISCUS1, + mAc_PROFILE_T_BISCUS2, mAc_PROFILE_T_BISCUS3, mAc_PROFILE_T_BISCUS4, mAc_PROFILE_T_HASU1, + mAc_PROFILE_T_HAT1, mAc_PROFILE_T_HAT2, mAc_PROFILE_T_HAT3, mAc_PROFILE_T_REI1, + mAc_PROFILE_T_REI2, mAc_PROFILE_T_ZINNIA1, mAc_PROFILE_T_ZINNIA2, mAc_PROFILE_T_COBRA1, }; - + TOOLS_ACTOR* child; + GAME_PLAY* play = (GAME_PLAY*)game; - aTOL_check_data_bank(name, &tool->actor_class); + aTOL_check_data_bank(name, tool); - child = (TOOLS_ACTOR*)Actor_info_make_child_actor(&play->actor_info, &tool->actor_class, &play->game, - profile_table[name], 0.0f, 0.0f, 0.0f, 0, 0, 0, -1, 0, arg, -1); + child = (TOOLS_ACTOR*)Actor_info_make_child_actor(&play->actor_info, tool, game, profile_table[name], 0.0f, 0.0f, + 0.0f, 0, 0, 0, -1, 0, arg, -1); - if(child != NULL){ + if (child != NULL) { child->work0 = id; child->tool_name = name; } - - if(arg5 != NULL){ + if (arg5 != NULL) { *arg5 = -1; } - + + return &child->actor_class; } -static int aTOL_chg_request_mode_proc(ACTOR* actor ,TOOLS_ACTOR* tool, int id){ +static int aTOL_chg_request_mode_proc(ACTOR* actor, ACTOR* tool, int id) { + TOOLS_ACTOR* t_actor = (TOOLS_ACTOR*)tool; - if(actor != tool->actor_class.parent_actor){ - return 0; + if (actor != tool->parent_actor) { + return FALSE; } - tool->work0 = id; - return 1; + t_actor->work0 = id; + return TRUE; } -static void aTOL_secure_pl_umbrella_bank_area(GAME* game){ +static void aTOL_secure_pl_umbrella_bank_area(GAME* game) { GAME_PLAY* play = (GAME_PLAY*)game; Object_Exchange_c* exchange; int id; - + exchange = &play->object_exchange; id = exchange->bank_idx; - if(mSc_secure_exchange_keep_bank(exchange, 0, 0xC00) != NULL){ + if (mSc_secure_exchange_keep_bank(exchange, 0, 0xC00) != NULL) { Common_Set(clip.tools_clip->bank_id, id); - } - else{ + } else { Common_Set(clip.tools_clip->bank_id, -1); - } - } -static void aTOL_init_clip_area(GAME* game){ - - if(Common_Get(clip.tools_clip) == NULL){ - +static void aTOL_init_clip_area(GAME* game) { + if (Common_Get(clip.tools_clip) == NULL) { Common_Set(clip.tools_clip, &aTOL_clip); bzero(&aTOL_clip, sizeof(aTOL_Clip_c)); - Common_Set(clip.tools_clip->aTOL_birth_proc,aTOL_birth_proc); - Common_Set(clip.tools_clip->aTOL_chg_request_mode_proc,aTOL_chg_request_mode_proc); + Common_Set(clip.tools_clip->aTOL_birth_proc, aTOL_birth_proc); + Common_Set(clip.tools_clip->aTOL_chg_request_mode_proc, aTOL_chg_request_mode_proc); aTOL_secure_pl_umbrella_bank_area(game); } } - -static void aTOL_free_clip_area(){ - - if(Common_Get(clip.tools_clip) != NULL){ - +static void aTOL_free_clip_area() { + if (Common_Get(clip.tools_clip) != NULL) { Common_Set(clip.tools_clip, NULL); } -} \ No newline at end of file +} diff --git a/src/ac_train_door.c b/src/ac_train_door.c index 6af90349..ede88e21 100644 --- a/src/ac_train_door.c +++ b/src/ac_train_door.c @@ -29,17 +29,19 @@ extern cKF_Animation_R_c cKF_ba_r_obj_romtrain_door; static void aTRD_actor_ct(ACTOR* actor, GAME* game) { TRAINDOOR_ACTOR* traindoor = (TRAINDOOR_ACTOR*)actor; - cKF_SkeletonInfo_R_ct(&traindoor->keyframe, &cKF_bs_r_obj_romtrain_door, NULL, traindoor->work, traindoor->target); - cKF_SkeletonInfo_R_init(&traindoor->keyframe, traindoor->keyframe.skeleton, &cKF_ba_r_obj_romtrain_door, 1.0f, + cKF_SkeletonInfo_R_ct(&traindoor->common_actor_class.anime.keyframe, &cKF_bs_r_obj_romtrain_door, NULL, + traindoor->work, traindoor->target); + cKF_SkeletonInfo_R_init(&traindoor->common_actor_class.anime.keyframe, + traindoor->common_actor_class.anime.keyframe.skeleton, &cKF_ba_r_obj_romtrain_door, 1.0f, 51.0f, 1.0f, 0.0f, 0.0f, 0, NULL); - traindoor->keyframe.morph_counter = 0.0f; - cKF_SkeletonInfo_R_play(&traindoor->keyframe); + traindoor->common_actor_class.anime.keyframe.morph_counter = 0.0f; + cKF_SkeletonInfo_R_play(&traindoor->common_actor_class.anime.keyframe); } static void aTRD_actor_dt(ACTOR* actor, GAME* game) { TRAINDOOR_ACTOR* traindoor = (TRAINDOOR_ACTOR*)actor; - cKF_SkeletonInfo_R_dt(&traindoor->keyframe); + cKF_SkeletonInfo_R_dt(&traindoor->common_actor_class.anime.keyframe); } static void aTRD_set_door_SE(ACTOR* actor) { @@ -50,8 +52,8 @@ static void aTRD_set_door_SE(ACTOR* actor) { int i; for (i = 0; i < 2; i++) { - if (cKF_FrameControl_passCheck_now(&traindoor->keyframe.frame_control, chk_pat[i])) { - sAdo_OngenTrgStart(se_no[i], &traindoor->actor_class.world.position); + if (cKF_FrameControl_passCheck_now(&traindoor->common_actor_class.anime.keyframe.frame_control, chk_pat[i])) { + sAdo_OngenTrgStart(se_no[i], &traindoor->common_actor_class.actor_class.world.position); break; } } @@ -62,12 +64,13 @@ static void aTRD_actor_move(ACTOR* actor, GAME* game) { if (traindoor->open_flag == TRUE) { traindoor->open_flag = FALSE; - traindoor->keyframe.frame_control.speed = 0.5f; + traindoor->common_actor_class.anime.keyframe.frame_control.speed = 0.5f; } - if (cKF_SkeletonInfo_R_play(&traindoor->keyframe) == cKF_FRAMECONTROL_REPEAT) { - traindoor->keyframe.frame_control.current_frame = traindoor->keyframe.frame_control.start_frame; - traindoor->keyframe.frame_control.speed = 0.0f; + if (cKF_SkeletonInfo_R_play(&traindoor->common_actor_class.anime.keyframe) == cKF_FRAMECONTROL_REPEAT) { + traindoor->common_actor_class.anime.keyframe.frame_control.current_frame = + traindoor->common_actor_class.anime.keyframe.frame_control.start_frame; + traindoor->common_actor_class.anime.keyframe.frame_control.speed = 0.0f; } aTRD_set_door_SE(actor); @@ -76,7 +79,7 @@ static void aTRD_actor_move(ACTOR* actor, GAME* game) { static void aTRD_actor_draw(ACTOR* actor, GAME* game) { TRAINDOOR_ACTOR* traindoor = (TRAINDOOR_ACTOR*)actor; - cKF_SkeletonInfo_R_c* keyf = &traindoor->keyframe; + cKF_SkeletonInfo_R_c* keyf = &traindoor->common_actor_class.anime.keyframe; Mtx* mtxp; mtxp = GRAPH_ALLOC_TYPE(game->graph, Mtx, (u32)keyf->skeleton->num_shown_joints); diff --git a/src/m_event.c b/src/m_event.c index d2af204c..9ab07c94 100644 --- a/src/m_event.c +++ b/src/m_event.c @@ -161,7 +161,7 @@ extern int mEv_CheckArbeit() { return res; } -extern int mFI_CheckFirstJob() { +extern int mEv_CheckFirstJob() { u32 player_no = Common_Get(player_no); int res = FALSE; diff --git a/src/m_scene.c b/src/m_scene.c index 33e8ce51..36193f6e 100644 --- a/src/m_scene.c +++ b/src/m_scene.c @@ -320,17 +320,19 @@ static void Scene_Proc_Sound(GAME_PLAY* play, Scene_Word_u* data); typedef void (*mSc_SCENE_WORD_PROC)(GAME_PLAY*, Scene_Word_u*); extern void Scene_ct(GAME_PLAY* play, Scene_Word_u* scene_data) { - static mSc_SCENE_WORD_PROC Scene_Proc[mSc_SCENE_DATA_TYPE_NUM] = { &Scene_Proc_Player_Ptr, - &Scene_Proc_Ctrl_Actor_Ptr, - &Scene_Proc_Actor_Ptr, - &Scene_Proc_Object_Exchange_Bank_Ptr, - &Scene_Proc_Door_Data_Ptr, - &Scene_Proc_Field_ct, - &Scene_Proc_MyRoom_ct, - &Scene_Proc_ArrangeRoom_ct, - &Scene_Proc_ArrangeFurniture_ct, - &Scene_Proc_Sound, - NULL }; + static mSc_SCENE_WORD_PROC Scene_Proc[mSc_SCENE_DATA_TYPE_NUM] = { + &Scene_Proc_Player_Ptr, + &Scene_Proc_Ctrl_Actor_Ptr, + &Scene_Proc_Actor_Ptr, + &Scene_Proc_Object_Exchange_Bank_Ptr, + &Scene_Proc_Door_Data_Ptr, + &Scene_Proc_Field_ct, + &Scene_Proc_MyRoom_ct, + &Scene_Proc_ArrangeRoom_ct, + &Scene_Proc_ArrangeFurniture_ct, + &Scene_Proc_Sound, + NULL, + }; /* Initialize all scene data */ while (TRUE) { diff --git a/src/m_soncho.c b/src/m_soncho.c index e9464b80..3dfdf8dd 100644 --- a/src/m_soncho.c +++ b/src/m_soncho.c @@ -1088,7 +1088,7 @@ extern int mSC_LightHouse_travel_check() { } extern void mSC_change_player_freeze(GAME_PLAY* play) { - if (mPlib_get_player_actor_main_index((GAME*)play) != 74) { + if (mPlib_get_player_actor_main_index((GAME*)play) != mPlayer_INDEX_DEMO_WAIT) { mPlib_request_main_demo_wait_type1((GAME*)play, 0, NULL); } } From 8422652bbfd28cb14c42a6594a9cc60aa705c13e Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Mon, 8 Jul 2024 20:24:31 -0400 Subject: [PATCH 050/234] Implement & link ac_npc_guide2 --- config/rel_slices.yml | 4 + include/ac_npc_guide2.h | 28 +- src/ac_npc_guide2.c | 138 +++++ src/ac_npc_guide2_animation.c_inc | 45 ++ src/ac_npc_guide2_move.c_inc | 823 ++++++++++++++++++++++++++++++ src/ac_npc_guide_animation.c_inc | 5 +- 6 files changed, 1041 insertions(+), 2 deletions(-) create mode 100644 src/ac_npc_guide2.c create mode 100644 src/ac_npc_guide2_animation.c_inc create mode 100644 src/ac_npc_guide2_move.c_inc diff --git a/config/rel_slices.yml b/config/rel_slices.yml index aede44d1..f5705fbc 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -764,6 +764,10 @@ ac_npc_guide.c: .text: [0x80552B5C, 0x80554B00] .rodata: [0x80649620, 0x806496A0] .data: [0x806A6208, 0x806A6508] +ac_npc_guide2.c: + .text: [0x80554B00, 0x80556714] + .rodata: [0x806496A0, 0x80649720] + .data: [0x806A6508, 0x806A67E0] ac_npc_rcn_guide.c: .text: [0x8056EED0, 0x8056FFF0] .rodata: [0x806499C0, 0x806499E8] diff --git a/include/ac_npc_guide2.h b/include/ac_npc_guide2.h index f48a12ba..1cb62651 100644 --- a/include/ac_npc_guide2.h +++ b/include/ac_npc_guide2.h @@ -3,11 +3,38 @@ #include "types.h" #include "m_actor.h" +#include "ac_npc.h" #ifdef __cplusplus extern "C" { #endif +typedef struct npc_guide2_actor_s NPC_GUIDE2_ACTOR; + +typedef void (*aNG2_PROC)(NPC_GUIDE2_ACTOR*, GAME_PLAY*); + +struct npc_guide2_actor_s { + NPC_ACTOR npc_class; + int action; + int next_action; + aNG2_PROC proc; + int lock_camera_flag; + int camera_morph_counter; + s16 camera_move; + s8 camera_move_cnt; + s8 camera_move_set_counter; + f32 camera_move_y; + f32 camera_move_range; + s16 camera_tilt_cur_angle; + s16 camera_tilt_goal_angle; + s16 camera_tilt_add; + int answer_flags; + ACTOR* train_door_actor; + int obj_look_type; + f32 obj_dist_ground; + int camera_eyes_flag; +}; + extern ACTOR_PROFILE Npc_Guide2_Profile; #ifdef __cplusplus @@ -15,4 +42,3 @@ extern ACTOR_PROFILE Npc_Guide2_Profile; #endif #endif - diff --git a/src/ac_npc_guide2.c b/src/ac_npc_guide2.c new file mode 100644 index 00000000..73008c9b --- /dev/null +++ b/src/ac_npc_guide2.c @@ -0,0 +1,138 @@ +#include "ac_npc_guide2.h" + +#include "m_play.h" +#include "m_common_data.h" +#include "ac_train_door.h" +#include "m_player_lib.h" +#include "m_font.h" +#include "m_msg.h" +#include "m_timeIn_ovl.h" +#include "m_ledit_ovl.h" +#include "libultra/libultra.h" +#include "m_bgm.h" +#include "m_soncho.h" + +enum { + aNG2_ACTION_ENTER, + aNG2_ACTION_APPROACH, + aNG2_ACTION_TALK_START_WAIT, + aNG2_ACTION_WAIT_PERMISSION, + aNG2_ACTION_SITDOWN, + aNG2_ACTION_SDON_AND_PB_WAIT, + aNG2_ACTION_PNAME_MENU_OPEN_WAIT, + aNG2_ACTION_PNAME_MENU_CLOSE_WAIT, + aNG2_ACTION_MSG_WIN_OPEN_WAIT, + aNG2_ACTION_PNAME_NG, + aNG2_ACTION_SEX_SELECT_WAIT, + aNG2_ACTION_SEX_SELECT_WAIT2, + aNG2_ACTION_SEX_SELECT_AFTER, + aNG2_ACTION_STANDUP_START_WAIT, + aNG2_ACTION_STANDUP, + aNG2_ACTION_MOVE_READY, + aNG2_ACTION_MOVE_TO_AISLE, + aNG2_ACTION_MOVE_TO_DOOR, + aNG2_ACTION_MOVE_TO_DECK, + aNG2_ACTION_KEITAI_ON, + aNG2_ACTION_KEITAI_TALK, + aNG2_ACTION_KEITAI_OFF, + aNG2_ACTION_OPEN_DOOR, + aNG2_ACTION_RETURN_APPROACH, + aNG2_ACTION_LAST_TALK_START_WAIT, + aNG2_ACTION_SITDOWN2_START_WAIT, + aNG2_ACTION_SITDOWN2, + aNG2_ACTION_LAST_TALK_END_WAIT, + aNG2_ACTION_SCENE_CHANGE_WAIT, + + aNG2_ACTION_NUM +}; + +enum { + aNG2_OBJ_LOOK_TYPE_NORMAL, + aNG2_OBJ_LOOK_TYPE_TALK, + + aNG2_OBJ_LOOK_TYPE_NUM +}; + +static void aNG2_actor_ct(ACTOR* actorx, GAME* game); +static void aNG2_actor_dt(ACTOR* actorx, GAME* game); +static void aNG2_actor_init(ACTOR* actorx, GAME* game); +static void aNG2_actor_save(ACTOR* actorx, GAME* game); + +// clang-format off +ACTOR_PROFILE Npc_Guide2_Profile = { + mAc_PROFILE_NPC_GUIDE2, + ACTOR_PART_NPC, + ACTOR_STATE_NO_DRAW_WHILE_CULLED | ACTOR_STATE_NO_MOVE_WHILE_CULLED, + SP_NPC_GUIDE2, + ACTOR_OBJ_BANK_KEEP, + sizeof(NPC_GUIDE2_ACTOR), + &aNG2_actor_ct, + &aNG2_actor_dt, + &aNG2_actor_init, + mActor_NONE_PROC1, + &aNG2_actor_save, +}; +// clang-format on + +static void aNG2_actor_move(ACTOR* actorx, GAME* game); +static void aNG2_actor_draw(ACTOR* actorx, GAME* game); + +static void aNG2_setupAction(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play, int action); + +static void aNG2_actor_ct(ACTOR* actorx, GAME* game) { + static aNPC_ct_data_c ct_data = { &aNG2_actor_move, &aNG2_actor_draw, 0, NULL, NULL, NULL, 0 }; + NPC_GUIDE2_ACTOR* guide2 = (NPC_GUIDE2_ACTOR*)actorx; + GAME_PLAY* play = (GAME_PLAY*)game; + PLAYER_ACTOR* player; + + Common_Get(clip).npc_clip->ct_proc(actorx, game, &ct_data); + guide2->npc_class.condition_info.hide_flg = FALSE; // show guide2 actor + guide2->npc_class.condition_info.demo_flg = + aNPC_COND_DEMO_SKIP_ENTRANCE_CHECK | aNPC_COND_DEMO_SKIP_HEAD_LOOKAT | aNPC_COND_DEMO_SKIP_TALK_CHECK | + aNPC_COND_DEMO_SKIP_ITEM | aNPC_COND_DEMO_SKIP_FORWARD_CHECK | aNPC_COND_DEMO_SKIP_BGCHECK | + aNPC_COND_DEMO_SKIP_OBJ_COL_CHECK | aNPC_COND_DEMO_SKIP_MOVE_Y | aNPC_COND_DEMO_SKIP_MOVE_CIRCLE_REV | + aNPC_COND_DEMO_SKIP_MOVE_RANGE_CHECK; + guide2->camera_morph_counter = 40; + guide2->obj_look_type = aNG2_OBJ_LOOK_TYPE_NORMAL; + guide2->npc_class.eye_y = 30.0f; + guide2->camera_move_set_counter = 1; + guide2->npc_class.palActorIgnoreTimer = -1; + guide2->train_door_actor = Actor_info_fgName_search(&play->actor_info, TRAIN_DOOR, ACTOR_PART_BG); + guide2->npc_class.actor_class.shape_info.draw_shadow = TRUE; + guide2->npc_class.actor_class.world.position.z = 130.0f; + + /* Put the player into demo wait state */ + mPlib_request_main_demo_wait_type1(game, 0, NULL); + player = GET_PLAYER_ACTOR(play); + if (player != NULL) { + /* Make the player invisible during the intro train ride */ + player->actor_class.state_bitfield |= ACTOR_STATE_INVISIBLE; + } + + aNG2_setupAction(guide2, play, aNG2_ACTION_ENTER); + + /* Play train noises sfx repeatedly */ + sAdo_SysLevStart(NA_SE_TRAIN_RIDE); +} + +static void aNG2_actor_save(ACTOR* actorx, GAME* game) { + Common_Get(clip).npc_clip->save_proc(actorx, game); +} + +static void aNG2_actor_dt(ACTOR* actorx, GAME* game) { + Common_Get(clip).npc_clip->dt_proc(actorx, game); + + /* Stop train noise sfx */ + sAdo_SysLevStop(NA_SE_TRAIN_RIDE); +} + +static void aNG2_actor_init(ACTOR* actorx, GAME* game) { + Common_Get(clip).npc_clip->init_proc(actorx, game); +} + +static void aNG2_actor_draw(ACTOR* actorx, GAME* game) { + Common_Get(clip).npc_clip->draw_proc(actorx, game); +} + +#include "../src/ac_npc_guide2_animation.c_inc" +#include "../src/ac_npc_guide2_move.c_inc" diff --git a/src/ac_npc_guide2_animation.c_inc b/src/ac_npc_guide2_animation.c_inc new file mode 100644 index 00000000..d97d7618 --- /dev/null +++ b/src/ac_npc_guide2_animation.c_inc @@ -0,0 +1,45 @@ +typedef struct npc_guide_animation_s { + int anim_id; + int talk_flag; +} aNG2_anime_c; + +static void aNG2_set_animation(NPC_GUIDE2_ACTOR* guide2, int action) { + // clang-format off + static aNG2_anime_c anime[] = { + { aNPC_ANIM_OPEN_D1, FALSE }, + { aNPC_ANIM_WALK1, FALSE }, + { aNPC_ANIM_WAIT1, TRUE }, + { aNPC_ANIM_WAIT1, TRUE }, + { aNPC_ANIM_SITDOWN_D1, TRUE }, + { aNPC_ANIM_SITDOWN_WAIT_D1, TRUE }, + { aNPC_ANIM_SITDOWN_WAIT_D1, TRUE }, + { aNPC_ANIM_SITDOWN_WAIT_D1, TRUE }, + { aNPC_ANIM_SITDOWN_WAIT_D1, TRUE }, + { aNPC_ANIM_SITDOWN_WAIT_D1, TRUE }, + { aNPC_ANIM_SITDOWN_WAIT_D1, TRUE }, + { aNPC_ANIM_SITDOWN_WAIT_D1, TRUE }, + { aNPC_ANIM_SITDOWN_WAIT_D1, TRUE }, + { aNPC_ANIM_SITDOWN_WAIT_D1, TRUE }, + { aNPC_ANIM_STANDUP_D1, FALSE }, + { aNPC_ANIM_WAIT1, FALSE }, + { aNPC_ANIM_WALK1, FALSE }, + { aNPC_ANIM_WALK1, FALSE }, + { aNPC_ANIM_TO_DECK_D1, FALSE }, + { aNPC_ANIM_KEITAI_ON1, FALSE }, + { aNPC_ANIM_KEITAI_TALK1, TRUE }, + { aNPC_ANIM_KEITAI_OFF1, FALSE }, + { aNPC_ANIM_OPEN_D2, FALSE }, + { aNPC_ANIM_WALK1, FALSE }, + { aNPC_ANIM_WAIT1, FALSE }, + { aNPC_ANIM_WAIT1, TRUE }, + { aNPC_ANIM_SITDOWN_D1, TRUE }, + { aNPC_ANIM_SITDOWN_WAIT_D1, TRUE }, + { aNPC_ANIM_SITDOWN_WAIT_D1, FALSE }, + }; + // clang-format on + + aNG2_anime_c* anime_info = &anime[action]; + + Common_Get(clip).npc_clip->animation_init_proc(&guide2->npc_class.actor_class, anime_info->anim_id, + anime_info->talk_flag); +} diff --git a/src/ac_npc_guide2_move.c_inc b/src/ac_npc_guide2_move.c_inc new file mode 100644 index 00000000..b9fb762d --- /dev/null +++ b/src/ac_npc_guide2_move.c_inc @@ -0,0 +1,823 @@ +static void aNG2_set_camera(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + static s8 mov_def_cnt[] = { 3, 0 }; + static f32 obj_look_y_max[] = { 30.0f, 20.0f }; + static f32 obj_look_y_spd[] = { 0.5f, 2.5f }; + + xyz_t eye; + xyz_t pos; + xyz_t ground; + s16 move; + f32 moveX; + f32 moveY; + int obj_look_type = guide2->obj_look_type; + s16 cur_angle; + f32 inter; + f32 sin; + f32 ground_y; + s16 angle; + + move = guide2->camera_move; + guide2->camera_move += 0xE20; + angle = move; + angle += 0xE20; + moveX = cos_s(angle) * 0.1f; + angle = move; + angle += 0xE20; + moveY = sin_s(angle) * guide2->camera_move_range; + + if (guide2->camera_move_y <= 0.0f && moveY >= 0.0f) { + s8 cnt = guide2->camera_move_cnt; + + cnt--; + if (cnt < 0) { + s8 set_cnt = guide2->camera_move_set_counter; + + set_cnt--; + if (set_cnt < 0) { + set_cnt = ARRAY_COUNT(mov_def_cnt) - 1; + } + + guide2->camera_move_set_counter = set_cnt; + cnt = mov_def_cnt[set_cnt]; + guide2->camera_move_range = 0.3f; + } else { + guide2->camera_move_range *= 0.35f; + } + + guide2->camera_move_cnt = cnt; + } + + guide2->camera_move_y = moveY; + cur_angle = guide2->camera_tilt_cur_angle; + chase_angle(&cur_angle, guide2->camera_tilt_goal_angle, guide2->camera_tilt_add); + guide2->camera_tilt_cur_angle = cur_angle; + sin = sin_s(cur_angle); + + /* Set camera eye pos */ + eye.x = moveX + sin * 20.0f + 100.0f; + eye.y = moveY + sin * -5.0f + 80.0f; + eye.z = 400.0f; + + /* Move NPC head to current target */ + chase_f(&guide2->npc_class.eye_y, obj_look_y_max[obj_look_type], obj_look_y_spd[obj_look_type] * 0.5f); + + /* Set ground pos */ + ground.x = guide2->npc_class.draw.shadow_pos.x; + ground.z = guide2->npc_class.draw.shadow_pos.z; + if (obj_look_type == aNG2_OBJ_LOOK_TYPE_TALK) { + /* Use the guide2's NPC shadow position for Y */ + ground_y = guide2->npc_class.draw.shadow_pos.y; + } else { + /* Get the ground position for Y */ + ground_y = mCoBG_GetBgY_OnlyCenter_FromWpos2(ground, 0.0f); + } + + chase_f(&guide2->obj_dist_ground, ground_y, 0.5f); + ground.y = guide2->obj_dist_ground; + + /* Set camera center pos */ + if (guide2->lock_camera_flag == TRUE) { + pos.x = ground.x; + pos.y = ground.y + guide2->npc_class.eye_y; + pos.z = ground.z; + } else if (mDemo_Check(mDemo_TYPE_SPEAK, &guide2->npc_class.actor_class) == TRUE) { + int morph_counter = guide2->camera_morph_counter; + f32 r; + + guide2->camera_morph_counter = morph_counter - 1; + if ((morph_counter - 1) == 0) { + guide2->lock_camera_flag = TRUE; + } + + r = (40.0f - (f32)(morph_counter - 1)) / 40.0f; + inter = cKF_HermitCalc(r, 1.0f, 0.0f, 1.0f, 3.2f, 0.0f); + + pos.x = (ground.x - 90.0f) * inter + 90.0f; + pos.y = ((ground.y + guide2->npc_class.eye_y) - 80.0f) * inter + 80.0f; + pos.z = (ground.z - 280.0f) * inter + 280.0f; + } else { + /* Default position */ + pos.x = 90.0f; + pos.y = 80.0f; + pos.z = 280.0f; + } + + pos.x += moveX; + pos.y += moveY; + + Camera2_change_priority(play, 0); + Camera2_request_main_lock(play, &pos, &eye, 40.0f, 0, 60.0f, 800.0f, 5); +} + +static void aNG2_set_camera_eyes(NPC_GUIDE2_ACTOR* guide2) { + if (guide2->camera_eyes_flag == TRUE) { + guide2->npc_class.request.head_pos.x = 100.0f; + guide2->npc_class.request.head_pos.y = guide2->npc_class.actor_class.eye.position.y; + guide2->npc_class.request.head_pos.z = 400.0f; + guide2->npc_class.request.head_priority = 3; + guide2->npc_class.request.head_type = 2; + } +} + +static void aNG2_set_walk_spd(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + guide2->npc_class.movement.max_speed = 1.0f; + guide2->npc_class.movement.acceleration = 0.1f; + guide2->npc_class.movement.deceleration = 0.2f; +} + +static void aNG2_set_walk_spd2(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + guide2->npc_class.movement.max_speed = 1.5f; + guide2->npc_class.movement.acceleration = 0.15f; + guide2->npc_class.movement.deceleration = 0.3f; +} + +static void aNG2_set_stop_spd(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + guide2->npc_class.actor_class.speed = 0.0f; + guide2->npc_class.movement.max_speed = 0.0f; + guide2->npc_class.movement.acceleration = 0.0f; + guide2->npc_class.movement.deceleration = 0.0f; +} + +static int aNG2_make_keitai(NPC_GUIDE2_ACTOR* guide2, GAME* game) { + int res = FALSE; + + if (guide2->npc_class.right_hand.item_actor_p == NULL) { + if (Common_Get(clip).tools_clip != NULL) { + ACTOR* keitai = Common_Get(clip).tools_clip->aTOL_birth_proc( + TOOL_KEITAI, aTOL_ACTION_TAKEOUT, &guide2->npc_class.actor_class, game, -1, NULL); + + if (keitai != NULL) { + guide2->npc_class.right_hand.item_actor_p = keitai; + res = TRUE; + } + } + } else { + res = TRUE; + } + + return res; +} + +static int aNG2_chg_cond_keitai(NPC_GUIDE2_ACTOR* guide2, int cond) { + int res = FALSE; + + if (Common_Get(clip).tools_clip != NULL) { + if (Common_Get(clip).tools_clip->aTOL_chg_request_mode_proc( + &guide2->npc_class.actor_class, guide2->npc_class.right_hand.item_actor_p, cond) == TRUE) { + res = TRUE; + } + } + + return res; +} + +static void aNG2_talk_demo_proc(ACTOR* actorx) { + if (mDemo_Check(mDemo_TYPE_SPEAK, actorx) == TRUE) { + Common_Get(clip).npc_clip->talk_demo_proc(actorx); + } +} + +static u8* aNG2_getP_other_pl_name(void) { + Private_c* priv; + u32 player_no; + int i; + + player_no = Common_Get(player_no); + priv = Save_Get(private_data) + player_no; + + /* Search for players before this one's player no */ + for (i = player_no; i != 0; i--) { + priv--; + if (mPr_NullCheckPersonalID(&priv->player_ID) != TRUE) { + return priv->player_ID.player_name; + } + } + + priv = Save_Get(private_data) + player_no; + /* Search for players after this one's player no */ + for (i = (PLAYER_NUM - 1) - player_no; i != 0; i--) { + priv++; + if (mPr_NullCheckPersonalID(&priv->player_ID) != TRUE) { + return priv->player_ID.player_name; + } + } + + /* No other players to reference */ + return NULL; +} + +static int aNG2_check_pname(void) { + int ok = TRUE; + int i; + + for (i = 0; i < PLAYER_NUM; i++) { + Private_c* priv = Save_GetPointer(private_data[i]); + + if (i != Common_Get(player_no)) { + if (mem_cmp(Now_Private->player_ID.player_name, priv->player_ID.player_name, PLAYER_NAME_LEN) == TRUE) { + /* Another player has the same name in this town */ + ok = FALSE; + break; + } + } + } + + return ok; +} + +static void aNG2_check_talk_msg_no(NPC_GUIDE2_ACTOR* guide2) { + if (mDemo_Check(mDemo_TYPE_SPEAK, &guide2->npc_class.actor_class) == TRUE) { + int msg_no = mMsg_GET_MSG_NUM(); + int flags; + + switch (msg_no) { + case 0x2AC9: + flags = (1 << 3); + break; + case 0x2ADB: + flags = (1 << 2); + break; + case 0x2ADD: + flags = (1 << 1); + break; + case 0x2AD3: + flags = (1 << 0); + break; + default: + flags = 0; + break; + } + + guide2->answer_flags |= flags; + } +} + +static void aNG2_set_pl_face_type(NPC_GUIDE2_ACTOR* guide2) { + static int face_type_table[mPr_SEX_NUM][mPr_FACE_TYPE_NUM] = { + /* Male faces */ + { + mPr_FACE_TYPE5, + mPr_FACE_TYPE6, + mPr_FACE_TYPE1, + mPr_FACE_TYPE4, + mPr_FACE_TYPE0, + mPr_FACE_TYPE2, + mPr_FACE_TYPE7, + mPr_FACE_TYPE3, + }, + /* Female faces */ + { + mPr_FACE_TYPE0, + mPr_FACE_TYPE5, + mPr_FACE_TYPE2, + mPr_FACE_TYPE6, + mPr_FACE_TYPE4, + mPr_FACE_TYPE7, + mPr_FACE_TYPE3, + mPr_FACE_TYPE1, + }, + }; + + int answer_flags = guide2->answer_flags; + int face_type; + + if ((answer_flags & 1) == 0) { + /* Select a random face for the player */ + face_type = RANDOM(mPr_FACE_TYPE_NUM); + } else { + /* Select a face based on choices */ + face_type = face_type_table[Now_Private->gender][answer_flags >> 1]; + } + + Now_Private->face = face_type; +} + +static void aNG2_calc_body_angl(NPC_GUIDE2_ACTOR* guide2, f32 pos_x, f32 pos_z) { + f32 dX = pos_x - guide2->npc_class.actor_class.world.position.x; + f32 dZ = pos_z - guide2->npc_class.actor_class.world.position.z; + s16 angl = atans_table(dZ, dX); + + chase_angle(&guide2->npc_class.actor_class.shape_info.rotation.y, angl, DEG2SHORT_ANGLE2(11.25f)); + guide2->npc_class.actor_class.world.angle.y = guide2->npc_class.actor_class.shape_info.rotation.y; +} + +static void aNG2_set_default_talk_info(void) { + mDemo_Set_camera(CAMERA2_PROCESS_NUM); + mDemo_Set_talk_change_player(FALSE); + mDemo_Set_use_zoom_sound(TRUE); +} + +static void aNG2_enter(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + if (guide2->npc_class.draw.main_animation_state == cKF_STATE_STOPPED) { + guide2->camera_eyes_flag = TRUE; + aNG2_setupAction(guide2, play, aNG2_ACTION_APPROACH); + } else if (cKF_FrameControl_passCheck_now(&guide2->npc_class.draw.main_animation.keyframe.frame_control, 20.0f) == + TRUE) { + TRAINDOOR_ACTOR* train_door = (TRAINDOOR_ACTOR*)guide2->train_door_actor; + + train_door->open_flag = TRUE; + } +} + +static void aNG2_approach(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + if (guide2->npc_class.actor_class.world.position.z >= 290.0f) { + guide2->npc_class.actor_class.world.position.z = 290.0f; + aNG2_setupAction(guide2, play, aNG2_ACTION_TALK_START_WAIT); + } +} + +static void aNG2_set_talk_info_talk_start_wait(ACTOR* actorx) { + mMsg_SET_FREE_STR(mMsg_FREE_STR0, aNG2_getP_other_pl_name(), PLAYER_NAME_LEN); + mDemo_Set_msg_num(0x2AD5); + aNG2_set_default_talk_info(); + ((NPC_GUIDE2_ACTOR*)actorx)->obj_look_type = aNG2_OBJ_LOOK_TYPE_TALK; +} + +static void aNG2_talk_start_wait(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + ACTOR* actorx = (ACTOR*)guide2; + + if (mDemo_Check(mDemo_TYPE_SPEAK, actorx) == TRUE) { + if (mDemo_Check_ListenAble() == FALSE && + chase_angle(&actorx->shape_info.rotation.y, actorx->player_angle_y, 0x400) == TRUE) { + guide2->camera_eyes_flag = FALSE; + aNG2_setupAction(guide2, play, aNG2_ACTION_WAIT_PERMISSION); + mDemo_Set_ListenAble(); + } + } else { + mDemo_Request(mDemo_TYPE_SPEAK, actorx, &aNG2_set_talk_info_talk_start_wait); + } +} + +static void aNG2_wait_permission(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + if (mMsg_CHECK_MAINNORMALCONTINUE() == TRUE) { + aNG2_setupAction(guide2, play, aNG2_ACTION_SITDOWN); + } +} + +static void aNG2_sitdown(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + guide2->npc_class.actor_class.world.position.x = 100.0f; + guide2->npc_class.actor_class.world.position.z = 280.0f; + guide2->npc_class.actor_class.shape_info.rotation.y = 0; + + /* Wait for the sit animation to finish before continuing */ + if (guide2->npc_class.draw.main_animation_state == cKF_STATE_STOPPED) { + mMsg_UNSET_LOCKCONTINUE(); + guide2->next_action = aNG2_ACTION_PNAME_MENU_OPEN_WAIT; + aNG2_setupAction(guide2, play, aNG2_ACTION_SDON_AND_PB_WAIT); + } +} + +static void aNG2_sdon_and_pb_wait(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + u16 order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); + + if (order != 0 && mMsg_CHECK_MAINNORMALCONTINUE()) { + aNG2_setupAction(guide2, play, guide2->next_action); + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + } +} + +static void aNG2_pname_menu_open_wait(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + if (mMsg_CHECK_MAIN_WAIT() == TRUE) { + aNG2_setupAction(guide2, play, 7); + } +} + +static void aNG2_pname_menu_close_wait(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + if (play->submenu.open_flag == FALSE) { + aNG2_setupAction(guide2, play, 8); + } +} + +static void aNG2_msg_win_open_wait(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + static int msg_no[] = { 0x2ACA, 0x2AE2 }; + static int next_act_idx[] = { 10, 9 }; + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + + if (mMsg_Check_not_series_main_wait(msg_p) == TRUE) { + int idx = 0; + + mMsg_Unset_LockContinue(msg_p); + + /* Check if the player's name already exists in town */ + if (aNG2_check_pname() == FALSE) { + idx = 1; + } + + mMsg_Set_continue_msg_num(msg_p, msg_no[idx]); + mMsg_Set_ForceNext(msg_p); + aNG2_setupAction(guide2, play, next_act_idx[idx]); + } +} + +static void aNG2_sex_select_wait(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + if (mMsg_CHECK_MAINNORMALCONTINUE() == TRUE) { + switch (mChoice_GET_CHOSENUM()) { + case mChoice_CHOICE0: // male + case mChoice_CHOICE1: // female + aNG2_setupAction(guide2, play, aNG2_ACTION_SEX_SELECT_WAIT2); + break; + case mChoice_CHOICE2: // 'That's not right' + guide2->next_action = aNG2_ACTION_PNAME_MENU_OPEN_WAIT; + aNG2_setupAction(guide2, play, aNG2_ACTION_SDON_AND_PB_WAIT); + break; + } + } +} + +static void aNG2_sex_select_wait2(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + static int next_act_idx[] = { aNG2_ACTION_STANDUP_START_WAIT, aNG2_ACTION_SEX_SELECT_AFTER }; + int order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); + + if (order != 0) { + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + + if (mMsg_Check_MainNormalContinue(msg_p) == TRUE) { + int idx = -1; + + switch (mChoice_GET_CHOSENUM()) { + case mChoice_CHOICE0: // male + switch (order) { + case 1: // That's right + Now_Private->gender = mPr_SEX_MALE; + break; + case 2: // I'm not a boy + Now_Private->gender = mPr_SEX_FEMALE; + break; + } + + idx = 0; + mMsg_Set_continue_msg_num(msg_p, 0x2AD9); + mMsg_Set_ForceNext(msg_p); + break; + case mChoice_CHOICE1: // female + switch (order) { + case 1: // That's right + Now_Private->gender = mPr_SEX_FEMALE; + break; + case 2: // I'm not a girl + Now_Private->gender = mPr_SEX_MALE; + break; + } + idx = 1; + break; + } + + if (idx != -1) { + aNG2_setupAction(guide2, play, next_act_idx[idx]); + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + } + } + } +} + +static void aNG2_sex_select_after(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + u16 order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); + + if (order != 0 && mMsg_Check_MainNormalContinue(msg_p)) { + aNG2_setupAction(guide2, play, aNG2_ACTION_STANDUP_START_WAIT); + mMsg_Set_continue_msg_num(msg_p, 0x2AD9); + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + } +} + +static void aNG2_standup_start_wait(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + /* Wait for guide2 to stop speaking to us */ + if (mDemo_Check(mDemo_TYPE_SPEAK, &guide2->npc_class.actor_class) == FALSE) { + guide2->obj_look_type = aNG2_OBJ_LOOK_TYPE_NORMAL; + aNG2_setupAction(guide2, play, aNG2_ACTION_STANDUP); + } +} + +static void aNG2_standup(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + /* Wait for animation to finish */ + if (guide2->npc_class.draw.main_animation_state == cKF_STATE_STOPPED) { + aNG2_setupAction(guide2, play, guide2->next_action); + } +} + +static void aNG2_move_ready(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + guide2->npc_class.actor_class.world.position.x = 100.0f; + guide2->npc_class.actor_class.world.position.z = 300.0f; + aNG2_setupAction(guide2, play, aNG2_ACTION_MOVE_TO_AISLE); +} + +static void aNG2_move_to_aisle(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + aNG2_calc_body_angl(guide2, 140.0f, 290.0f); + if (guide2->npc_class.actor_class.world.position.x > 140.0f) { + aNG2_setupAction(guide2, play, aNG2_ACTION_MOVE_TO_DOOR); + } +} + +static void aNG2_move_to_door(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + aNG2_calc_body_angl(guide2, 140.0f, 130.0f); + /* Check if we reached the door */ + if (guide2->npc_class.actor_class.world.position.z < 130.0f) { + aNG2_setupAction(guide2, play, aNG2_ACTION_MOVE_TO_DECK); + } + + /* Check if we should start rotating */ + if (guide2->npc_class.draw.shadow_pos.z < 140.0f) { + guide2->camera_tilt_goal_angle = DEG2SHORT_ANGLE2(90.0f); + guide2->camera_tilt_add = DEG2SHORT_ANGLE2(2.8125f); + } +} + +static void aNG2_move_to_deck(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + if (cKF_FrameControl_passCheck_now(&guide2->npc_class.draw.main_animation.keyframe.frame_control, 9.0f) == TRUE) { + TRAINDOOR_ACTOR* train_door = (TRAINDOOR_ACTOR*)guide2->train_door_actor; + + train_door->open_flag = TRUE; + } + + /* Reuse standup state to wait for animation to finish */ + aNG2_standup(guide2, play); +} + +static void aNG2_set_talk_info_keitai_on(ACTOR* actorx) { + mDemo_Set_msg_num(0x2ADE); + aNG2_set_default_talk_info(); +} + +static void aNG2_keitai_on(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + static f32 anmSpd[] = { 0.0f, 0.5f }; + int idx = aNG2_make_keitai(guide2, &play->game); + + guide2->npc_class.draw.main_animation.keyframe.frame_control.speed = anmSpd[idx]; + if (idx != 0) { + if (mDemo_Check(mDemo_TYPE_SPEAK, (ACTOR*)guide2) == TRUE) { + if (mDemo_Check_ListenAble() == FALSE) { + mDemo_Set_ListenAble(); + } + } else { + /* Request to start speaking */ + mDemo_Request(mDemo_TYPE_SPEAK, (ACTOR*)guide2, &aNG2_set_talk_info_keitai_on); + } + } + + /* Wait for animation to finish */ + if (guide2->npc_class.draw.main_animation_state == cKF_STATE_STOPPED) { + aNG2_setupAction(guide2, play, aNG2_ACTION_KEITAI_TALK); + } +} + +static void aNG2_keitai_talk(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + if (mDemo_Check(mDemo_TYPE_SPEAK, &guide2->npc_class.actor_class) == FALSE) { + aNG2_setupAction(guide2, play, aNG2_ACTION_KEITAI_OFF); + } else if (guide2->npc_class.draw.main_animation_state == cKF_STATE_STOPPED) { + Common_Get(clip).npc_clip->animation_init_proc(&guide2->npc_class.actor_class, aNPC_ANIM_KEITAI_TALK2, TRUE); + } +} + +static void aNG2_open_door(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + chase_angle(&guide2->npc_class.actor_class.shape_info.rotation.y, DEG2SHORT_ANGLE2(-180.0f), + DEG2SHORT_ANGLE2(0.703125f)); + if (cKF_FrameControl_passCheck_now(&guide2->npc_class.draw.main_animation.keyframe.frame_control, 22.0f) == TRUE) { + TRAINDOOR_ACTOR* train_door = (TRAINDOOR_ACTOR*)guide2->train_door_actor; + + train_door->open_flag = TRUE; + if (guide2->npc_class.draw.shadow_pos.z < 140.0f) { + guide2->camera_tilt_goal_angle = 0; + guide2->camera_tilt_add = 0x600; + } + } + + /* Reuse standup state to wait for animation to finish */ + aNG2_standup(guide2, play); +} + +static void aNG2_return_approach(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + guide2->npc_class.actor_class.world.position.x = 140.0f; + guide2->npc_class.actor_class.world.angle.y = 0; + guide2->npc_class.actor_class.shape_info.rotation.y = 0; + if (guide2->npc_class.actor_class.world.position.z > 290.0f) { + aNG2_setupAction(guide2, play, aNG2_ACTION_LAST_TALK_START_WAIT); + } +} + +static void aNG2_set_talk_info_last_talk_start_wait(ACTOR* actorx) { + mDemo_Set_msg_num(0x2AD1); + aNG2_set_default_talk_info(); + ((NPC_GUIDE2_ACTOR*)actorx)->obj_look_type = aNG2_OBJ_LOOK_TYPE_TALK; +} + +static void aNG2_last_talk_start_wait(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + ACTOR* actorx = (ACTOR*)guide2; + + if (mDemo_Check(mDemo_TYPE_SPEAK, actorx) == TRUE) { + if (mDemo_Check_ListenAble() == FALSE && + chase_angle(&actorx->shape_info.rotation.y, actorx->player_angle_y, 0x400) == TRUE) { + guide2->camera_eyes_flag = FALSE; + aNG2_setupAction(guide2, play, aNG2_ACTION_SITDOWN2_START_WAIT); + mDemo_Set_ListenAble(); + } + } else { + mDemo_Request(mDemo_TYPE_SPEAK, actorx, &aNG2_set_talk_info_last_talk_start_wait); + } +} + +static void aNG2_sitdown2_start_wait(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + u16 order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); + + if (order != 0) { + aNG2_setupAction(guide2, play, aNG2_ACTION_SITDOWN2); + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + } +} + +static void aNG2_sitdown2(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + guide2->npc_class.actor_class.world.position.x = 100.0f; + guide2->npc_class.actor_class.world.position.z = 280.0f; + guide2->npc_class.actor_class.shape_info.rotation.y = 0; + + /* Wait for animation to finish */ + aNG2_standup(guide2, play); +} + +static void aNG2_last_talk_end_wait(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + if (mDemo_Check(mDemo_TYPE_SPEAK, &guide2->npc_class.actor_class) == FALSE) { + aNG2_setupAction(guide2, play, aNG2_ACTION_SCENE_CHANGE_WAIT); + } +} + +/* Init procs */ + +static void aNG2_sitdown_init(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + mMsg_SET_LOCKCONTINUE(); +} + +static void aNG2_pname_menu_open_wait_init(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + + mMsg_Set_LockContinue(msg_p); + mMsg_request_main_disappear_wait_type1(msg_p); +} + +static void aNG2_pname_menu_close_wait_init(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + Submenu* submenu = &play->submenu; + + mSM_open_submenu(submenu, mSM_OVL_LEDIT, mLE_TYPE_PLAYER_NAME, 0); +} + +static void aNG2_msg_win_open_wait_init(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + mMsg_REQUEST_MAIN_APPEAR_WAIT_TYPE1(); +} + +static void aNG2_pname_ng_init(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + guide2->next_action = 6; +} + +static void aNG2_standup_init(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + guide2->next_action = aNG2_ACTION_MOVE_READY; +} + +static void aNG2_move_ready_init(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + guide2->npc_class.draw.main_animation.keyframe.morph_counter = 0.0f; +} + +static void aNG2_move_to_aisle_init(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + aNG2_set_walk_spd2(guide2, play); +} + +static void aNG2_move_to_deck_init(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + aNG2_set_stop_spd(guide2, play); + guide2->npc_class.actor_class.world.position.x = 140.0f; + guide2->npc_class.actor_class.world.position.z = 130.0f; + guide2->next_action = aNG2_ACTION_KEITAI_ON; +} + +static void aNG2_keitai_off_init(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + aNG2_chg_cond_keitai(guide2, aTOL_ACTION_PUTAWAY); + guide2->next_action = aNG2_ACTION_OPEN_DOOR; +} + +static void aNG2_open_door_init(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + guide2->next_action = aNG2_ACTION_RETURN_APPROACH; +} + +static void aNG2_return_approach_init(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + guide2->camera_eyes_flag = TRUE; + aNG2_set_walk_spd2(guide2, play); + guide2->npc_class.draw.main_animation.keyframe.morph_counter = 0.0f; +} + +static void aNG2_sitdown2_start_wait_init(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); +} + +static void aNG2_sitdown2_init(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + guide2->npc_class.draw.main_animation.keyframe.morph_counter = 0.0f; + guide2->next_action = aNG2_ACTION_LAST_TALK_END_WAIT; +} + +static void aNG2_last_talk_end_wait_init(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + aNG2_chg_cond_keitai(guide2, aTOL_ACTION_DESTRUCT); + guide2->npc_class.right_hand.item_actor_p = NULL; +} + +static void aNG2_scene_change_wait_init(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + /* Init next scene transition */ + goto_next_scene(play, 0, 1); + play->fb_wipe_type = 3; + Common_Get(transition).wipe_type = 4; + + mEv_SetFirstJob(); + mEv_SetFirstIntro(); + mEnv_DecideWeather_NormalGameStart(); + aNG2_set_pl_face_type(guide2); + mPr_SetNowPrivateCloth(); + Common_Set(submenu_disabled, TRUE); + mBGMPsComp_make_ps_wipe(0x41C2); + mBGMPsComp_scene_mode(18); +} + +typedef void (*aNG2_INIT_PROC)(NPC_GUIDE2_ACTOR*, GAME_PLAY*); + +static void aNG2_init_proc(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play, int action) { + static aNG2_INIT_PROC init_proc[] = { + (aNG2_INIT_PROC)&none_proc1, + &aNG2_set_walk_spd, + &aNG2_set_stop_spd, + (aNG2_INIT_PROC)&none_proc1, + &aNG2_sitdown_init, + (aNG2_INIT_PROC)&none_proc1, + &aNG2_pname_menu_open_wait_init, + &aNG2_pname_menu_close_wait_init, + &aNG2_msg_win_open_wait_init, + &aNG2_pname_ng_init, + (aNG2_INIT_PROC)&none_proc1, + (aNG2_INIT_PROC)&none_proc1, + (aNG2_INIT_PROC)&none_proc1, + (aNG2_INIT_PROC)&none_proc1, + &aNG2_standup_init, + &aNG2_move_ready_init, + &aNG2_move_to_aisle_init, + (aNG2_INIT_PROC)&none_proc1, + &aNG2_move_to_deck_init, + (aNG2_INIT_PROC)&none_proc1, + (aNG2_INIT_PROC)&none_proc1, + &aNG2_keitai_off_init, + &aNG2_open_door_init, + &aNG2_return_approach_init, + &aNG2_set_stop_spd, + &aNG2_sitdown2_start_wait_init, + &aNG2_sitdown2_init, + &aNG2_last_talk_end_wait_init, + &aNG2_scene_change_wait_init, + }; + + (*init_proc[action])(guide2, play); +} + +static void aNG2_setupAction(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play, int action) { + static aNG2_PROC process[] = { + &aNG2_enter, + &aNG2_approach, + &aNG2_talk_start_wait, + &aNG2_wait_permission, + &aNG2_sitdown, + &aNG2_sdon_and_pb_wait, + &aNG2_pname_menu_open_wait, + &aNG2_pname_menu_close_wait, + &aNG2_msg_win_open_wait, + &aNG2_sdon_and_pb_wait, + &aNG2_sex_select_wait, + &aNG2_sex_select_wait2, + &aNG2_sex_select_after, + &aNG2_standup_start_wait, + &aNG2_standup, + &aNG2_move_ready, + &aNG2_move_to_aisle, + &aNG2_move_to_door, + &aNG2_move_to_deck, + &aNG2_keitai_on, + &aNG2_keitai_talk, + &aNG2_standup, + &aNG2_open_door, + &aNG2_return_approach, + &aNG2_last_talk_start_wait, + &aNG2_sitdown2_start_wait, + &aNG2_sitdown2, + &aNG2_last_talk_end_wait, + (aNG2_PROC)&none_proc1, + }; + + guide2->action = action; + guide2->proc = process[action]; + aNG2_set_animation(guide2, action); + aNG2_init_proc(guide2, play, action); +} + +static void aNG2_actor_move(ACTOR* actorx, GAME* game) { + NPC_GUIDE2_ACTOR* guide2 = (NPC_GUIDE2_ACTOR*)actorx; + GAME_PLAY* play = (GAME_PLAY*)game; + + Common_Get(clip).npc_clip->move_before_proc(actorx, game); + aNG2_talk_demo_proc(actorx); + aNG2_check_talk_msg_no(guide2); + (*guide2->proc)(guide2, play); + Common_Get(clip).npc_clip->move_after_proc(actorx, game); + aNG2_set_camera(guide2, play); + aNG2_set_camera_eyes(guide2); + mSC_change_player_freeze(play); +} diff --git a/src/ac_npc_guide_animation.c_inc b/src/ac_npc_guide_animation.c_inc index eb525a82..7c6b5279 100644 --- a/src/ac_npc_guide_animation.c_inc +++ b/src/ac_npc_guide_animation.c_inc @@ -47,7 +47,10 @@ static void aNGD_set_animation(NPC_GUIDE_ACTOR* guide, int action) { int anim_id = anime_info->anim_id; int talk_flag = anime_info->talk_flag; - if ((action == 4 || action == 7 || action == 8) && guide->next_action != 5 && guide->next_action != 6) { + if ((action == aNGD_ACTION_SDON_AND_PB_WAIT || action == aNGD_ACTION_MSG_WIN_OPEN_WAIT || + action == aNGD_ACTION_CONFIRM_INPUT_DATA) && + guide->next_action != aNGD_ACTION_TIME_MENU_OPEN_WAIT && + guide->next_action != aNGD_ACTION_TIME_MENU_CLOSE_WAIT) { anim_id = aNPC_ANIM_SITDOWN_WAIT_D1; talk_flag = TRUE; } From 4c4a34d1083ef20363388c0d570d1d8d57c1d56a Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Mon, 8 Jul 2024 22:09:19 -0400 Subject: [PATCH 051/234] Refactor & improvements for ac_npc_rtc --- include/ac_npc_rtc.h | 25 ++- include/m_choice.h | 2 + include/m_msg.h | 4 + src/ac_npc_rtc.c | 109 ++++++++---- src/ac_npc_rtc_talk.c.inc | 341 ++++++++++++++++++------------------- src/ac_npc_rtc_think.c.inc | 104 ++++++----- 6 files changed, 324 insertions(+), 261 deletions(-) diff --git a/include/ac_npc_rtc.h b/include/ac_npc_rtc.h index 5f19b3eb..e8269035 100644 --- a/include/ac_npc_rtc.h +++ b/include/ac_npc_rtc.h @@ -9,22 +9,22 @@ extern "C" { #endif -typedef struct actor_npc_rtc_s NPCRTC_ACTOR; +typedef struct actor_npc_rtc_s NPC_RTC_ACTOR; -typedef void (*aNPCRTC_SUB_PROC)(NPCRTC_ACTOR* rtc, GAME_PLAY* play); +typedef void (*aNRTC_PROC)(NPC_RTC_ACTOR* rtc, GAME_PLAY* play); -struct actor_npc_rtc_s{ +struct actor_npc_rtc_s { NPC_ACTOR npc_class; - int unk994; - int unk998; - aNPCRTC_SUB_PROC unk99C; - int unk9A0; + int talk_idx; + int unk998; + aNRTC_PROC talk_proc; + int talk_flag; int unk9A4; - int unk9A8; - int unk9AC; - int unk9B0; - int unk9B4; - int unk9B8; + int think_idx; + int counter; + int fade_timer; + int bgm_timer; + int first_talk_timer; }; extern ACTOR_PROFILE Npc_Rtc_Profile; @@ -34,4 +34,3 @@ extern ACTOR_PROFILE Npc_Rtc_Profile; #endif #endif - diff --git a/include/m_choice.h b/include/m_choice.h index bb496e99..33913ce0 100644 --- a/include/m_choice.h +++ b/include/m_choice.h @@ -124,6 +124,8 @@ extern void mChoice_no_b_set(mChoice_c* choice); extern void mChoice_no_b_close_set(mChoice_c* choice); /* Macros */ +#define mChoice_CHECK_MAIN_NORMAL() mChoice_check_main_normal(mChoice_Get_base_window_p()) + #define mChoice_GET_CHOSENUM() mChoice_Get_ChoseNum(mChoice_Get_base_window_p()) #define mChoice_CLEAR_CHOSENUM() mChoice_Clear_ChoseNum(mChoice_Get_base_window_p()) #define mChoice_NO_B_SET() mChoice_no_b_set(mChoice_Get_base_window_p()) diff --git a/include/m_msg.h b/include/m_msg.h index 8a0b065d..ea68c5f5 100644 --- a/include/m_msg.h +++ b/include/m_msg.h @@ -359,10 +359,14 @@ extern void mMsg_sound_unset_voice_silent(mMsg_Window_c* msg_p, int update_mode) #define mMsg_GET_MSG_NUM() mMsg_Get_msg_num(mMsg_Get_base_window_p()) +#define mMsg_SET_IDLING_REQ() mMsg_Set_idling_req(mMsg_Get_base_window_p()) + #define mMsg_CHECK_MAINNORMALCONTINUE() mMsg_Check_MainNormalContinue(mMsg_Get_base_window_p()) +#define mMsg_CHECK_MAINNORMAL() mMsg_Check_MainNormal(mMsg_Get_base_window_p()) #define mMsg_CHECK_MAINDISAPPEAR() mMsg_Check_MainDisappear(mMsg_Get_base_window_p()) #define mMsg_CHECK_MAINHIDE() mMsg_Check_MainHide(mMsg_Get_base_window_p()) #define mMsg_CHECK_MAIN_WAIT() mMsg_Check_main_wait(mMsg_Get_base_window_p()) +#define mMsg_CHECK_NOT_SERIES_MAIN_WAIT() mMsg_Check_not_series_main_wait(mMsg_Get_base_window_p()) #define mMsg_REQUEST_MAIN_DISAPPEAR() mMsg_request_main_disappear(mMsg_Get_base_window_p()) #define mMsg_REQUEST_MAIN_DISAPPEAR_WAIT_TYPE1() mMsg_request_main_disappear_wait_type1(mMsg_Get_base_window_p()) diff --git a/src/ac_npc_rtc.c b/src/ac_npc_rtc.c index 5de766fa..bf49f9d4 100644 --- a/src/ac_npc_rtc.c +++ b/src/ac_npc_rtc.c @@ -1,4 +1,5 @@ #include "ac_npc_rtc.h" + #include "m_name_table.h" #include "m_common_data.h" #include "m_player_lib.h" @@ -10,49 +11,96 @@ #include "boot.h" #include "m_string.h" #include "libultra/libultra.h" +#include "m_timeIn_ovl.h" -extern void aNRTC_actor_ct(ACTOR*, GAME*); -extern void aNRTC_actor_dt(ACTOR*, GAME*); -extern void aNRTC_actor_init(ACTOR*, GAME*); -extern void aNRTC_actor_save(ACTOR*, GAME*); +enum { + aNRTC_THINK_START, + aNRTC_THINK_TITLE, + aNRTC_THINK_DOOR, + aNRTC_THINK_CHECK, + aNRTC_THINK_IPMENU, + aNRTC_THINK_WAIT, -ACTOR_PROFILE Npc_Rtc_Profile = { - mAc_PROFILE_NPC_RTC, ACTOR_PART_NPC, ACTOR_STATE_NONE, SP_NPC_RTC, ACTOR_OBJ_BANK_KEEP, sizeof(NPCRTC_ACTOR), - aNRTC_actor_ct, aNRTC_actor_dt, aNRTC_actor_init, mActor_NONE_PROC1, aNRTC_actor_save, + aNRTC_THINK_NUM }; -extern void aNRTC_actor_move(ACTOR*, GAME*); -extern void aNRTC_actor_draw(ACTOR*, GAME*); +enum { + aNRTC_TALK_BREAK_DATA, + aNRTC_TALK_BREAK_DATA2, + aNRTC_TALK_RTC_ERR, + aNRTC_TALK_TIMER_OPEN_MSG_WAIT, + aNRTC_TALK_TIMER_OPEN_WAIT, + aNRTC_TALK_TIMER_CLOSE_WAIT, + aNRTC_TALK_DELETE_BF, + aNRTC_TALK_DELETE, + aNRTC_TALK_FORMAT_CHK, + aNRTC_TALK_FORMAT, + aNRTC_TALK_END, -extern int aNRTC_talk_init(ACTOR*, GAME*); -extern int aNRTC_talk_end_chk(ACTOR*, GAME*); + aNRTC_TALK_NUM +}; -extern void aNRTC_schedule_proc(NPC_ACTOR*, GAME_PLAY*, int); +static void aNRTC_actor_ct(ACTOR*, GAME*); +static void aNRTC_actor_dt(ACTOR*, GAME*); +static void aNRTC_actor_init(ACTOR*, GAME*); +static void aNRTC_actor_save(ACTOR*, GAME*); -extern void aNRTC_talk_request(ACTOR* actor, GAME*); +// clang-format off +ACTOR_PROFILE Npc_Rtc_Profile = { + mAc_PROFILE_NPC_RTC, + ACTOR_PART_NPC, + ACTOR_STATE_NONE, + SP_NPC_RTC, + ACTOR_OBJ_BANK_KEEP, + sizeof(NPC_RTC_ACTOR), + &aNRTC_actor_ct, + &aNRTC_actor_dt, + &aNRTC_actor_init, + mActor_NONE_PROC1, + &aNRTC_actor_save, +}; -extern void aNRTC_change_talk_proc(NPCRTC_ACTOR* rtc, int idx); +static void aNRTC_actor_move(ACTOR*, GAME*); +static void aNRTC_actor_draw(ACTOR*, GAME*); -u8 aNRTC_sound_mode[] = { 0x00, 0x01, 0x02, 0x00 }; -u8 aNRTC_voice_mode[] = { 0x00, 0x01, 0x02, 0x00 }; +static int aNRTC_talk_init(ACTOR*, GAME*); +static int aNRTC_talk_end_chk(ACTOR*, GAME*); -void aNRTC_actor_ct(ACTOR* actor, GAME* game) { - static aNPC_ct_data_c ct_data = { &aNRTC_actor_move, &aNRTC_actor_draw, 5, mActor_NONE_PROC1, - &aNRTC_talk_init, &aNRTC_talk_end_chk, 0 }; +static void aNRTC_schedule_proc(NPC_ACTOR*, GAME_PLAY*, int); - NPCRTC_ACTOR* rtc = (NPCRTC_ACTOR*)actor; +static void aNRTC_talk_request(ACTOR* actor, GAME*); + +static void aNRTC_change_talk_proc(NPC_RTC_ACTOR* rtc, int idx); + +static u8 aNRTC_sound_mode[] = { Config_SOUND_MODE_0, Config_SOUND_MODE_1, Config_SOUND_MODE_2 }; +static u8 aNRTC_voice_mode[] = { Config_VOICE_MODE_ANIMALESE, Config_VOICE_MODE_CLICK, Config_VOICE_MODE_SILENT }; + +static void aNRTC_actor_ct(ACTOR* actor, GAME* game) { + // clang-format off + static aNPC_ct_data_c ct_data = { + &aNRTC_actor_move, + &aNRTC_actor_draw, + 5, + mActor_NONE_PROC1, + &aNRTC_talk_init, + &aNRTC_talk_end_chk, + 0, + }; + // clang-format on + + NPC_RTC_ACTOR* rtc = (NPC_RTC_ACTOR*)actor; GAME_PLAY* play = (GAME_PLAY*)game; PLAYER_ACTOR* player; xyz_t center; xyz_t eye; if (Common_Get(clip.npc_clip)->birth_check_proc(actor, game) == TRUE) { - rtc->npc_class.schedule.schedule_proc = aNRTC_schedule_proc; + rtc->npc_class.schedule.schedule_proc = &aNRTC_schedule_proc; Common_Get(clip.npc_clip)->ct_proc(actor, game, &ct_data); actor->status_data.weight = MASSTYPE_IMMOVABLE; mPlib_request_main_demo_wait_type1(game, 0, NULL); player = GET_PLAYER_ACTOR(play); if (player != NULL) { - player->actor_class.state_bitfield |= 0x80; + player->actor_class.state_bitfield |= ACTOR_STATE_INVISIBLE; } center.x = 100.0f; @@ -70,30 +118,30 @@ void aNRTC_actor_ct(ACTOR* actor, GAME* game) { rtc->npc_class.condition_info.hide_request = 0; rtc->npc_class.talk_info.default_act = 9; rtc->npc_class.talk_info.melody_inst = 0; - rtc->unk9A0 = 0; + rtc->talk_flag = FALSE; } } -void aNRTC_actor_save(ACTOR* actor, GAME* game) { +static void aNRTC_actor_save(ACTOR* actor, GAME* game) { Common_Get(clip.npc_clip)->save_proc(actor, game); } -void aNRTC_actor_dt(ACTOR* actor, GAME* game) { +static void aNRTC_actor_dt(ACTOR* actor, GAME* game) { Common_Get(clip.npc_clip)->dt_proc(actor, game); } -void aNRTC_actor_init(ACTOR* actor, GAME* game) { +static void aNRTC_actor_init(ACTOR* actor, GAME* game) { Common_Get(clip.npc_clip)->init_proc(actor, game); } -void aNRTC_actor_move(ACTOR* actor, GAME* game) { +static void aNRTC_actor_move(ACTOR* actor, GAME* game) { StaffRollInfo_c info; f32 val = 0.5f; u8 arm_flag = TRUE; - NPCRTC_ACTOR* rtc = (NPCRTC_ACTOR*)actor; + NPC_RTC_ACTOR* rtc = (NPC_RTC_ACTOR*)actor; GAME_PLAY* play = (GAME_PLAY*)game; - if (rtc->npc_class.draw.animation_id == 0x76) { + if (rtc->npc_class.draw.animation_id == aNPC_ANIM_4HAKU_E1) { sAdos_GetStaffRollInfo(&info); if (info.staffroll_part != STAFFROLL_PART_FINISH) { val = 0.0f; @@ -109,10 +157,9 @@ void aNRTC_actor_move(ACTOR* actor, GAME* game) { mSC_change_player_freeze(play); } -void aNRTC_actor_draw(ACTOR* actor, GAME* game) { +static void aNRTC_actor_draw(ACTOR* actor, GAME* game) { Common_Get(clip.npc_clip)->draw_proc(actor, game); } #include "../src/ac_npc_rtc_think.c.inc" - #include "../src/ac_npc_rtc_talk.c.inc" diff --git a/src/ac_npc_rtc_talk.c.inc b/src/ac_npc_rtc_talk.c.inc index fb990e47..beee92a9 100644 --- a/src/ac_npc_rtc_talk.c.inc +++ b/src/ac_npc_rtc_talk.c.inc @@ -1,69 +1,67 @@ static void aNRTC_set_slot_name(int slot_id, int str_no) { u8 name[mIN_ITEM_NAME_LEN]; - mString_Load_StringFromRom(name, sizeof(name), 0x6CD + slot_id); - mMsg_Set_free_str(mMsg_Get_base_window_p(), str_no, name, sizeof(name)); + mString_Load_StringFromRom(name, sizeof(name), 0x06CD + slot_id); + mMsg_SET_FREE_STR(str_no, name, sizeof(name)); } -static void aNRTC_rtc_err(NPCRTC_ACTOR* rtc, GAME_PLAY* play) { - int num; - - if (mMsg_Check_MainNormalContinue(mMsg_Get_base_window_p()) == 1) { - num = mChoice_Get_ChoseNum(mChoice_Get_base_window_p()); - switch (num) { - case 0: - aNRTC_change_talk_proc(rtc, 3); +static void aNRTC_rtc_err(NPC_RTC_ACTOR* rtc, GAME_PLAY* play) { + if (mMsg_CHECK_MAINNORMALCONTINUE() == TRUE) { + switch (mChoice_GET_CHOSENUM()) { + case mChoice_CHOICE0: + aNRTC_change_talk_proc(rtc, aNRTC_TALK_TIMER_OPEN_MSG_WAIT); break; - case 1: - rtc->unk9A8 = 1; - aNRTC_change_talk_proc(rtc, 10); + case mChoice_CHOICE1: + rtc->think_idx = aNRTC_THINK_TITLE; + aNRTC_change_talk_proc(rtc, aNRTC_TALK_END); break; } } } -static void aNRTC_timer_open_msg_wait(NPCRTC_ACTOR* rtc, GAME_PLAY* play) { - int order = mDemo_Get_OrderValue(4, 9); +static void aNRTC_timer_open_msg_wait(NPC_RTC_ACTOR* rtc, GAME_PLAY* play) { + int order = mDemo_Get_OrderValue(mDemo_TYPE_4, 9); if (order == 1) { - if (mMsg_Check_MainNormalContinue(mMsg_Get_base_window_p()) == 1) { - mDemo_Set_OrderValue(4, 9, 0); - aNRTC_change_talk_proc(rtc, 4); - mMsg_request_main_disappear_wait_type1(mMsg_Get_base_window_p()); + if (mMsg_CHECK_MAINNORMALCONTINUE() == TRUE) { + mDemo_Set_OrderValue(mDemo_TYPE_4, 9, 0); + aNRTC_change_talk_proc(rtc, aNRTC_TALK_TIMER_OPEN_WAIT); + mMsg_REQUEST_MAIN_DISAPPEAR_WAIT_TYPE1(); } } } -static void aNRTC_timer_open_wait(NPCRTC_ACTOR* rtc, GAME_PLAY* play) { +static void aNRTC_timer_open_wait(NPC_RTC_ACTOR* rtc, GAME_PLAY* play) { Submenu* submenu = &play->submenu; - if (mMsg_Check_main_wait(mMsg_Get_base_window_p()) == 1) { - aNRTC_change_talk_proc(rtc, 5); - mSM_open_submenu(submenu, 3, 1, 0); - mMsg_request_main_appear_wait_type1(mMsg_Get_base_window_p()); + + if (mMsg_CHECK_MAIN_WAIT() == TRUE) { + aNRTC_change_talk_proc(rtc, aNRTC_THINK_WAIT); + mSM_open_submenu(submenu, mSM_OVL_TIMEIN, mTI_OVL_OPEN_INITIAL, 0); + mMsg_REQUEST_MAIN_APPEAR_WAIT_TYPE1(); } } -static void aNRTC_timer_close_wait(NPCRTC_ACTOR* rtc, GAME_PLAY* play) { +static void aNRTC_timer_close_wait(NPC_RTC_ACTOR* rtc, GAME_PLAY* play) { if (play->submenu.open_flag == FALSE) { - if (mMsg_Check_not_series_main_wait(mMsg_Get_base_window_p()) == 1) { - mMsg_Set_ForceNext(mMsg_Get_base_window_p()); - rtc->unk9A8 = 2; - aNRTC_change_talk_proc(rtc, 0xA); + if (mMsg_CHECK_NOT_SERIES_MAIN_WAIT() == TRUE) { + mMsg_SET_FORCENEXT(); + rtc->think_idx = aNRTC_THINK_DOOR; + aNRTC_change_talk_proc(rtc, aNRTC_TALK_END); } } } -static void aNRTC_delete_bf(NPCRTC_ACTOR* rtc, GAME_PLAY* play) { - int order = mDemo_Get_OrderValue(4, 9); +static void aNRTC_delete_bf(NPC_RTC_ACTOR* rtc, GAME_PLAY* play) { + int order = mDemo_Get_OrderValue(mDemo_TYPE_4, 9); - if ((mMsg_Check_MainNormalContinue(mMsg_Get_base_window_p()) == 1) && (order != 0)) { + if ((mMsg_CHECK_MAINNORMALCONTINUE() == TRUE) && (order != 0)) { - mMsg_Set_LockContinue(mMsg_Get_base_window_p()); - aNRTC_change_talk_proc(rtc, 7); + mMsg_SET_LOCKCONTINUE(); + aNRTC_change_talk_proc(rtc, aNRTC_TALK_DELETE); } } -static void aNRTC_delete(NPCRTC_ACTOR* rtc, GAME_PLAY* play) { +static void aNRTC_delete(NPC_RTC_ACTOR* rtc, GAME_PLAY* play) { mMsg_Window_c* window; int card; int card_ret; @@ -73,258 +71,251 @@ static void aNRTC_delete(NPCRTC_ACTOR* rtc, GAME_PLAY* play) { switch (card_ret) { case 0: - rtc->unk9A8 = 3; - mMsg_Set_continue_msg_num(window, 0x9DE); + rtc->think_idx = aNRTC_THINK_CHECK; + mMsg_Set_continue_msg_num(window, 0x09DE); break; case 22: case 2: - rtc->unk9A8 = 1; - mMsg_Set_continue_msg_num(window, 0x9DF); + rtc->think_idx = aNRTC_THINK_TITLE; + mMsg_Set_continue_msg_num(window, 0x09DF); break; case 25: return; case 15: - rtc->unk9A8 = 3; - mMsg_Set_continue_msg_num(window, 0x9E1); + rtc->think_idx = aNRTC_THINK_CHECK; + mMsg_Set_continue_msg_num(window, 0x09E1); break; default: - rtc->unk9A8 = 1; - mMsg_Set_continue_msg_num(window, 0x9DF); + rtc->think_idx = aNRTC_THINK_TITLE; + mMsg_Set_continue_msg_num(window, 0x09DF); break; } - if (card_ret != 0x19) { + if (card_ret != 25) { mMsg_Unset_LockContinue(window); - aNRTC_change_talk_proc(rtc, 10); + aNRTC_change_talk_proc(rtc, aNRTC_TALK_END); } } -static void aNRTC_format_chk(NPCRTC_ACTOR* rtc, GAME_PLAY* play) { - int num; - - if (mMsg_Check_MainNormalContinue(mMsg_Get_base_window_p()) == 1) { - aNRTC_change_talk_proc(rtc, 0xA); - num = mChoice_Get_ChoseNum(mChoice_Get_base_window_p()); - switch (num) { - case 0: - rtc->unk9A8 = 3; +static void aNRTC_format_chk(NPC_RTC_ACTOR* rtc, GAME_PLAY* play) { + if (mMsg_CHECK_MAINNORMALCONTINUE() == TRUE) { + aNRTC_change_talk_proc(rtc, aNRTC_TALK_END); + switch (mChoice_GET_CHOSENUM()) { + case mChoice_CHOICE0: + rtc->think_idx = aNRTC_THINK_CHECK; break; - case 1: - rtc->unk9A8 = 2; + case mChoice_CHOICE1: + rtc->think_idx = aNRTC_THINK_DOOR; break; - case 2: - rtc->unk9A8 = 1; + case mChoice_CHOICE2: + rtc->think_idx = aNRTC_THINK_TITLE; break; - case 3: - rtc->unk9A8 = 3; - aNRTC_change_talk_proc(rtc, 9); + case mChoice_CHOICE3: + rtc->think_idx = aNRTC_THINK_CHECK; + aNRTC_change_talk_proc(rtc, aNRTC_TALK_FORMAT); break; } } } -static void aNRTC_format(NPCRTC_ACTOR* rtc, GAME_PLAY* play) { +static void aNRTC_format(NPC_RTC_ACTOR* rtc, GAME_PLAY* play) { int order; mMsg_Window_c* window; - int card_ret; window = mMsg_Get_base_window_p(); - order = mDemo_Get_OrderValue(4, 9); + order = mDemo_Get_OrderValue(mDemo_TYPE_4, 9); switch (order) { case 1: - mDemo_Set_OrderValue(4, 9, 2); + mDemo_Set_OrderValue(mDemo_TYPE_4, 9, 2); mMsg_Set_LockContinue(window); break; case 2: - card_ret = mCD_card_format_bg(Common_Get(memcard_slot)); - switch (card_ret) { - case 1: - mMsg_Set_continue_msg_num(window, 0x9E9); + switch (mCD_card_format_bg(Common_Get(memcard_slot))) { + case mCD_RESULT_SUCCESS: + mMsg_Set_continue_msg_num(window, 0x09E9); mMsg_Unset_LockContinue(window); - aNRTC_change_talk_proc(rtc, 0xA); - rtc->unk9A8 = 3; - mDemo_Set_OrderValue(4, 9, 0); + aNRTC_change_talk_proc(rtc, aNRTC_TALK_END); + rtc->think_idx = aNRTC_THINK_CHECK; + mDemo_Set_OrderValue(mDemo_TYPE_4, 9, 0); break; - case -1: + case mCD_RESULT_ERROR: mMsg_Unset_LockContinue(window); - aNRTC_change_talk_proc(rtc, 0xA); - rtc->unk9A8 = 1; - mMsg_Set_continue_msg_num(window, 0x9E7); - mDemo_Set_OrderValue(4, 9, 0); - case 0: + aNRTC_change_talk_proc(rtc, aNRTC_TALK_END); + rtc->think_idx = aNRTC_THINK_TITLE; + mMsg_Set_continue_msg_num(window, 0x09E7); + mDemo_Set_OrderValue(mDemo_TYPE_4, 9, 0); + case mCD_RESULT_BUSY: break; } break; } } -static void aNRTC_break_data(NPCRTC_ACTOR* rtc, GAME_PLAY* play) { - int num; - - if (mMsg_Check_MainNormalContinue(mMsg_Get_base_window_p()) == 1) { - aNRTC_change_talk_proc(rtc, 0xA); - num = mChoice_Get_ChoseNum(mChoice_Get_base_window_p()); - switch (num) { - case 0: - rtc->unk9A8 = 3; +static void aNRTC_break_data(NPC_RTC_ACTOR* rtc, GAME_PLAY* play) { + if (mMsg_CHECK_MAINNORMALCONTINUE() == TRUE) { + aNRTC_change_talk_proc(rtc, aNRTC_TALK_END); + switch (mChoice_GET_CHOSENUM()) { + case mChoice_CHOICE0: + rtc->think_idx = aNRTC_THINK_CHECK; break; - case 1: - aNRTC_change_talk_proc(rtc, 6); + case mChoice_CHOICE1: + aNRTC_change_talk_proc(rtc, aNRTC_TALK_DELETE_BF); break; } } } -static void aNRTC_break_data_2(NPCRTC_ACTOR* rtc, GAME_PLAY* play) { - int num; - - if (mMsg_Check_MainNormalContinue(mMsg_Get_base_window_p()) == 1) { - aNRTC_change_talk_proc(rtc, 0xA); - num = mChoice_Get_ChoseNum(mChoice_Get_base_window_p()); - switch (num) { - case 0: - rtc->unk9A8 = 3; +static void aNRTC_break_data_2(NPC_RTC_ACTOR* rtc, GAME_PLAY* play) { + if (mMsg_CHECK_MAINNORMALCONTINUE() == TRUE) { + aNRTC_change_talk_proc(rtc, aNRTC_TALK_END); + switch (mChoice_GET_CHOSENUM()) { + case mChoice_CHOICE0: + rtc->think_idx = aNRTC_THINK_CHECK; break; - case 1: - rtc->unk9A8 = 2; + case mChoice_CHOICE1: + rtc->think_idx = aNRTC_THINK_DOOR; break; - case 2: - rtc->unk9A8 = 1; + case mChoice_CHOICE2: + rtc->think_idx = aNRTC_THINK_TITLE; break; - case 3: - rtc->unk9A8 = 4; + case mChoice_CHOICE3: + rtc->think_idx = aNRTC_THINK_IPMENU; break; } } } -static void aNRTC_change_talk_proc(NPCRTC_ACTOR* rtc, int idx) { - static aNPCRTC_SUB_PROC process[] = { - aNRTC_break_data, - aNRTC_break_data_2, - aNRTC_rtc_err, - aNRTC_timer_open_msg_wait, - aNRTC_timer_open_wait, - aNRTC_timer_close_wait, - aNRTC_delete_bf, - aNRTC_delete, - aNRTC_format_chk, - aNRTC_format, - (aNPCRTC_SUB_PROC)none_proc1, +static void aNRTC_change_talk_proc(NPC_RTC_ACTOR* rtc, int idx) { + // clang-format off + static aNRTC_PROC process[] = { + &aNRTC_break_data, + &aNRTC_break_data_2, + &aNRTC_rtc_err, + &aNRTC_timer_open_msg_wait, + &aNRTC_timer_open_wait, + &aNRTC_timer_close_wait, + &aNRTC_delete_bf, + &aNRTC_delete, + &aNRTC_format_chk, + &aNRTC_format, + (aNRTC_PROC)&none_proc1, }; - rtc->unk994 = idx; - rtc->unk99C = process[idx]; + // clang-format on + + rtc->talk_idx = idx; + rtc->talk_proc = process[idx]; } static void aNRTC_set_talk_info_talk_request() { int msg; switch (Common_Get(save_error_type)) { - case 0: - msg = 0x9CC; + case mFRm_ERROR_BAD_RTC: + msg = 0x09CC; break; - case 2: - msg = 0x9D1; + case mFRm_ERROR_DATA_CORRUPTED: + msg = 0x09D1; break; - case 6: - msg = 0x9DA; + case mFRm_ERROR_MEMCARD_INVALID: + msg = 0x09DA; break; - case 7: - msg = 0x9D8; + case mFRm_ERROR_MEMCARD_NO_SPACE: + msg = 0x09D8; break; - case 9: - msg = 0x9D4; + case mFRm_ERROR_NO_MEMCARD: + msg = 0x09D4; break; - case 1: - msg = 0x9E2; + case mFRm_ERROR_MEMCARD_TRAVELDATA_CONFLICT: + msg = 0x09E2; break; - case 4: - msg = 0x9E4; + case mFRm_ERROR_MEMCARD_DAMAGED: + msg = 0x09E4; break; - case 3: - msg = 0x9E3; + case mFRm_ERROR_MEMCARD_NO_FILES: + msg = 0x09E3; break; - case 5: - msg = 0x9E5; + case mFRm_ERROR_MEMCARD_FORMAT: + msg = 0x09E5; break; - case 8: - msg = 0x9E6; + case mFRm_ERROR_NOT_MEMCARD: + msg = 0x09E6; break; default: - msg = 0x9D4; + msg = 0x09D4; break; } + mDemo_Set_msg_num(msg); - mDemo_Set_camera(1); + mDemo_Set_camera(TRUE); } static void aNRTC_talk_request(ACTOR* actor, GAME* game) { - mDemo_Request(8, actor, aNRTC_set_talk_info_talk_request); + mDemo_Request(mDemo_TYPE_SPEAK, actor, &aNRTC_set_talk_info_talk_request); } static int aNRTC_talk_init(ACTOR* actor, GAME* game) { - NPCRTC_ACTOR* rtc = (NPCRTC_ACTOR*)actor; + NPC_RTC_ACTOR* rtc = (NPC_RTC_ACTOR*)actor; mDemo_Set_ListenAble(); aNRTC_set_slot_name(Common_Get(memcard_slot), mMsg_FREE_STR4); switch (Common_Get(save_error_type)) { - case 0: - aNRTC_change_talk_proc(rtc, 2); + case mFRm_ERROR_BAD_RTC: + aNRTC_change_talk_proc(rtc, aNRTC_TALK_RTC_ERR); break; - case 2: - aNRTC_change_talk_proc(rtc, 0); + case mFRm_ERROR_DATA_CORRUPTED: + aNRTC_change_talk_proc(rtc, aNRTC_TALK_BREAK_DATA); break; - case 5: - aNRTC_change_talk_proc(rtc, 8); + case mFRm_ERROR_MEMCARD_FORMAT: + aNRTC_change_talk_proc(rtc, aNRTC_TALK_FORMAT_CHK); break; default: - aNRTC_change_talk_proc(rtc, 1); + aNRTC_change_talk_proc(rtc, aNRTC_TALK_BREAK_DATA2); break; } rtc->npc_class.talk_info.talk_request_proc = mActor_NONE_PROC1; - mMsg_Set_idling_req(mMsg_Get_base_window_p()); - return 1; + mMsg_SET_IDLING_REQ(); + return TRUE; } static int aNRTC_talk_end_chk(ACTOR* actor, GAME* game) { - NPCRTC_ACTOR* rtc = (NPCRTC_ACTOR*)actor; + NPC_RTC_ACTOR* rtc = (NPC_RTC_ACTOR*)actor; GAME_PLAY* play = (GAME_PLAY*)game; - int res = 0; + int res = FALSE; mMsg_Window_c* window; window = mMsg_Get_base_window_p(); - rtc->unk99C(rtc, play); + (*rtc->talk_proc)(rtc, play); - if (mMsg_Check_idling_now(window) == 1) { + if (mMsg_Check_idling_now(window) == TRUE) { mMsg_request_main_disappear_wait_type1(window); aNRTC_think_init_proc(&rtc->npc_class, play); - rtc->unk9A0 = 0; - res = 1; - rtc->unk9B4 = 0x32; - rtc->unk9B0 = 0x4B; + rtc->talk_flag = FALSE; + res = TRUE; + rtc->bgm_timer = 50; + rtc->fade_timer = 75; bzero(&play->fade_color_value, sizeof(rgba8888_t)); } else { - int unk9AC; - unk9AC = rtc->unk9AC; - if ((mMsg_Check_MainNormal(mMsg_Get_base_window_p()) == 1) || - (((mChoice_check_main_normal(mChoice_Get_base_window_p()) == 1) != 0))) { - unk9AC++; - if (unk9AC > 0x258) { - unk9AC = 0x258; + int counter = rtc->counter; + + if ((mMsg_CHECK_MAINNORMAL() == TRUE) || (mChoice_CHECK_MAIN_NORMAL() == TRUE)) { + counter++; + if (counter > 600) { + counter = 600; } } else { - unk9AC = 0; + counter = 0; } - if (mDemo_Get_OrderValue(4, 0) == 0) { - if (unk9AC >= 0x258) { - if (rtc->npc_class.draw.animation_id != 0x76) { - mDemo_Set_OrderValue(4, 0, 0xFF); + + if (mDemo_Get_OrderValue(mDemo_TYPE_4, 0) == 0) { + if (counter >= 600) { + if (rtc->npc_class.draw.animation_id != aNPC_ANIM_4HAKU_E1) { + mDemo_Set_OrderValue(mDemo_TYPE_4, 0, 0xFF); } - } else if (rtc->npc_class.draw.animation_id == 0x76) { - mDemo_Set_OrderValue(4, 0, 0xFD); + } else if (rtc->npc_class.draw.animation_id == aNPC_ANIM_4HAKU_E1) { + mDemo_Set_OrderValue(mDemo_TYPE_4, 0, 0xFD); } } - rtc->unk9AC = unk9AC; + rtc->counter = counter; } return res; } diff --git a/src/ac_npc_rtc_think.c.inc b/src/ac_npc_rtc_think.c.inc index 0a879161..224d9eac 100644 --- a/src/ac_npc_rtc_think.c.inc +++ b/src/ac_npc_rtc_think.c.inc @@ -2,30 +2,40 @@ static void aNRTC_talk_request(ACTOR* actor, GAME*); static void aNRTC_think_start(NPC_ACTOR* actor, GAME_PLAY* play) { - NPCRTC_ACTOR* rtc = (NPCRTC_ACTOR*)actor; - if (rtc->unk9B8 > 0) { - rtc->unk9B8--; + NPC_RTC_ACTOR* rtc = (NPC_RTC_ACTOR*)actor; + if (rtc->first_talk_timer > 0) { + rtc->first_talk_timer--; } else { - rtc->unk9A0 = 1; - rtc->npc_class.talk_info.talk_request_proc = aNRTC_talk_request; - rtc->npc_class.condition_info.demo_flg = 0x100; + rtc->talk_flag = TRUE; + rtc->npc_class.talk_info.talk_request_proc = &aNRTC_talk_request; + rtc->npc_class.condition_info.demo_flg = aNPC_COND_DEMO_SKIP_HEAD_LOOKAT; } } static void aNRTC_think_title(NPC_ACTOR* actor, GAME_PLAY* play) { - NPCRTC_ACTOR* rtc = (NPCRTC_ACTOR*)actor; + NPC_RTC_ACTOR* rtc = (NPC_RTC_ACTOR*)actor; play->fb_wipe_type = 3; play->fb_fade_type = 4; mPlib_request_main_invade_type1(play); Actor_info_save_actor(play); - rtc->unk9A8 = 5; + rtc->think_idx = aNRTC_THINK_WAIT; } -Door_data_c door_data = { SCENE_PLAYERSELECT, 4, FALSE, 0, { 100, 0, 120 }, EMPTY_NO, 3, { 0, 0, 0 } }; +// clang-format off +static Door_data_c door_data = { + SCENE_PLAYERSELECT, + mSc_DIRECT_NORTH, + FALSE, + 0, + { 100, 0, 120 }, + EMPTY_NO, + 3, + { 0, 0, 0 }, +}; +// clang-format on static void aNRTC_think_door(NPC_ACTOR* actor, GAME_PLAY* play) { - if (sAdo_BgmFadeoutCheck() != 0) { goto_other_scene(play, &door_data, 1); Common_Set(transition.wipe_type, 3); @@ -33,54 +43,61 @@ static void aNRTC_think_door(NPC_ACTOR* actor, GAME_PLAY* play) { } static void aNRTC_think_check(NPC_ACTOR* actor, GAME_PLAY* play) { - NPCRTC_ACTOR* rtc = (NPCRTC_ACTOR*)actor; + NPC_RTC_ACTOR* rtc = (NPC_RTC_ACTOR*)actor; if (sAdo_BgmFadeoutCheck() != 0) { goto_other_scene(play, &door_data, 1); mCD_ReCheckLoadLand(play); Common_Set(transition.wipe_type, 3); - rtc->unk9A8 = 5; + rtc->think_idx = aNRTC_THINK_WAIT; } } static void aNRTC_think_ipmenu(NPC_ACTOR* actor, GAME_PLAY* play) { - NPCRTC_ACTOR* rtc = (NPCRTC_ACTOR*)actor; + NPC_RTC_ACTOR* rtc = (NPC_RTC_ACTOR*)actor; if (sAdo_BgmFadeoutCheck() != 0) { HotResetIplMenu(); - rtc->unk9A8 = 5; + rtc->think_idx = aNRTC_THINK_WAIT; } } -aNPC_SUB_PROC aNRTC_proc_table[] = { - aNRTC_think_start, aNRTC_think_title, aNRTC_think_door, - aNRTC_think_check, aNRTC_think_ipmenu, (aNPC_SUB_PROC)mActor_NONE_PROC1, +// clang-format off +static aNPC_SUB_PROC aNRTC_proc_table[] = { + &aNRTC_think_start, + &aNRTC_think_title, + &aNRTC_think_door, + &aNRTC_think_check, + &aNRTC_think_ipmenu, + (aNPC_SUB_PROC)mActor_NONE_PROC1, }; +// clang-format on static void aNRTC_think_main_proc(NPC_ACTOR* actor, GAME_PLAY* play) { - NPCRTC_ACTOR* rtc = (NPCRTC_ACTOR*)actor; - if (rtc->unk9B0 > 0) { - rtc->unk9B0--; - if (rtc->unk9B0 == 0) { + NPC_RTC_ACTOR* rtc = (NPC_RTC_ACTOR*)actor; + if (rtc->fade_timer > 0) { + rtc->fade_timer--; + if (rtc->fade_timer == 0) { play->fade_color_value.c.a = -1; - } else if (rtc->unk9B0 < 25) { - play->fade_color_value.c.a = 255.0f * (1.0f - (0.04f * rtc->unk9B0)); + } else if (rtc->fade_timer < 25) { + play->fade_color_value.c.a = 255.0f * (1.0f - (0.04f * rtc->fade_timer)); } - } else if (rtc->unk9A0 == 0) { - aNRTC_proc_table[rtc->unk9A8](actor, play); + } else if (rtc->talk_flag == 0) { + aNRTC_proc_table[rtc->think_idx](actor, play); } - if (rtc->unk9B4 == 0) { - if (rtc->unk9A8 == 1) { + + if (rtc->bgm_timer == 0) { + if (rtc->think_idx == 1) { mBGMPsComp_make_ps_wipe(0x21C2); } else { mBGMPsComp_make_ps_wipe(0x621C); } - rtc->unk9B4 = -2; - } else if (rtc->unk9B4 > 0) { - rtc->unk9B4--; + rtc->bgm_timer = -2; + } else if (rtc->bgm_timer > 0) { + rtc->bgm_timer--; } } static void aNRTC_think_init_proc(NPC_ACTOR* actor, GAME_PLAY* play) { - NPCRTC_ACTOR* rtc = (NPCRTC_ACTOR*)actor; + NPC_RTC_ACTOR* rtc = (NPC_RTC_ACTOR*)actor; rtc->npc_class.request.act_priority = 4; rtc->npc_class.request.act_idx = 8; rtc->npc_class.request.act_type = 0; @@ -88,34 +105,37 @@ static void aNRTC_think_init_proc(NPC_ACTOR* actor, GAME_PLAY* play) { static void aNRTC_think_proc(NPC_ACTOR* actor, GAME_PLAY* play, int idx) { static aNPC_SUB_PROC think_proc[] = { - aNRTC_think_init_proc, - aNRTC_think_main_proc, + &aNRTC_think_init_proc, + &aNRTC_think_main_proc, }; think_proc[idx](actor, play); } static void aNRTC_schedule_init_proc(NPC_ACTOR* actor, GAME_PLAY* play) { - NPCRTC_ACTOR* rtc = (NPCRTC_ACTOR*)actor; + NPC_RTC_ACTOR* rtc = (NPC_RTC_ACTOR*)actor; rtc->npc_class.draw._5BE = 1; - rtc->npc_class.talk_info.default_animation = 0x76; - rtc->unk9B4 = -1; - rtc->unk9B0 = 0; - rtc->unk9B8 = 0x5A; + rtc->npc_class.talk_info.default_animation = aNPC_ANIM_4HAKU_E1; + rtc->bgm_timer = -1; + rtc->fade_timer = 0; + rtc->first_talk_timer = 90; rtc->npc_class.think.think_proc = aNRTC_think_proc; - rtc->unk9A8 = 0; - Common_Get(clip.npc_clip)->think_proc(actor, play, 6, 0); + rtc->think_idx = 0; + Common_Get(clip.npc_clip)->think_proc(actor, play, aNPC_THINK_IN_BLOCK, 0); } static void aNRTC_schedule_main_proc(NPC_ACTOR* actor, GAME_PLAY* play) { - NPCRTC_ACTOR* rtc = (NPCRTC_ACTOR*)actor; + NPC_RTC_ACTOR* rtc = (NPC_RTC_ACTOR*)actor; if (Common_Get(clip.npc_clip)->think_proc(actor, play, -1, 1) == 0) { Common_Get(clip.npc_clip)->think_proc(actor, play, -1, 2); } } static void aNRTC_schedule_proc(NPC_ACTOR* actor, GAME_PLAY* play, int idx) { - static aNPC_SUB_PROC sche_proc[] = { aNRTC_schedule_init_proc, aNRTC_schedule_main_proc }; + static aNPC_SUB_PROC sche_proc[] = { + &aNRTC_schedule_init_proc, + &aNRTC_schedule_main_proc, + }; sche_proc[idx](actor, play); } From 1d8523641b9cf531b4ee18169b75f3a5321add5c Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Tue, 9 Jul 2024 21:14:58 -0400 Subject: [PATCH 052/234] Use proper enum value in mDemo_Set_camera call --- src/ac_npc_rtc_talk.c.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ac_npc_rtc_talk.c.inc b/src/ac_npc_rtc_talk.c.inc index beee92a9..a0725679 100644 --- a/src/ac_npc_rtc_talk.c.inc +++ b/src/ac_npc_rtc_talk.c.inc @@ -246,7 +246,7 @@ static void aNRTC_set_talk_info_talk_request() { } mDemo_Set_msg_num(msg); - mDemo_Set_camera(TRUE); + mDemo_Set_camera(CAMERA2_PROCESS_NORMAL); } static void aNRTC_talk_request(ACTOR* actor, GAME* game) { From 550c41f70f5ff6de8210c9ffd7720f40616a4886 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Wed, 10 Jul 2024 04:14:24 -0400 Subject: [PATCH 053/234] Implement & link padmgr --- config/rel_slices.yml | 4 + include/libultra/osContPad.h | 59 +++++- include/libultra/os_pfs.h | 30 +++ include/padmgr.h | 38 +++- src/padmgr.c | 372 +++++++++++++++++++++++++++++++++++ src/zurumode.c | 332 +++++++++++++++---------------- 6 files changed, 652 insertions(+), 183 deletions(-) create mode 100644 include/libultra/os_pfs.h create mode 100644 src/padmgr.c diff --git a/config/rel_slices.yml b/config/rel_slices.yml index f5705fbc..785d61a6 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -360,6 +360,10 @@ main.c: .text: [0x80407AE8, 0x80407CF4] .data: [0x8065F110, 0x8065F138] .bss: [0x812F4CC0, 0x812F5038] +padmgr.c: + .text: [0x80407CF4, 0x80408940] + .data: [0x8065F138, 0x8065F150] + .bss: [0x812F5038, 0x812F54A0] sys_math.c: .text: [0x80408940, 0x80408A44] .rodata: [0x806437C0, 0x806437D0] diff --git a/include/libultra/osContPad.h b/include/libultra/osContPad.h index 7192659b..510c7b4b 100644 --- a/include/libultra/osContPad.h +++ b/include/libultra/osContPad.h @@ -4,6 +4,8 @@ #define OS_CONT_PAD #include "types.h" +#include "libultra/os_pfs.h" +#include "dolphin/os/OSMessage.h" #ifdef __cplusplus extern "C" { @@ -11,20 +13,63 @@ extern "C" { #define MAXCONTROLLERS 4 +/* controller errors */ +#define CONT_NO_ERROR 0 +#define CONT_NO_RESPONSE_ERROR 0x8 +#define CONT_OVERRUN_ERROR 0x4 +#define CONT_RANGE_ERROR -1 + +/* Controller type */ +#define CONT_NONE 0x0000 +#define CONT_ABSOLUTE 0x0001 +#define CONT_RELATIVE 0x0002 +#define CONT_JOYPORT 0x0004 +#define CONT_EEPROM 0x8000 +#define CONT_EEP16K 0x4000 +#define CONT_TYPE_MASK 0x1f07 +#define CONT_TYPE_NORMAL 0x0005 +#define CONT_TYPE_MOUSE 0x0002 +#define CONT_TYPE_VOICE 0x0100 + +/* Controller status */ + +#define CONT_CARD_ON 0x01 +#define CONT_CARD_PULL 0x02 +#define CONT_ADDR_CRC_ER 0x04 +#define CONT_EEPROM_BUSY 0x80 + +/* Controller error number */ + +#define CONT_ERR_NO_CONTROLLER PFS_ERR_NOPACK /* 1 */ +#define CONT_ERR_CONTRFAIL CONT_OVERRUN_ERROR /* 4 */ +#define CONT_ERR_INVALID PFS_ERR_INVALID /* 5 */ +#define CONT_ERR_DEVICE PFS_ERR_DEVICE /* 11 */ +#define CONT_ERR_NOT_READY 12 +#define CONT_ERR_VOICE_MEMORY 13 +#define CONT_ERR_VOICE_WORD 14 +#define CONT_ERR_VOICE_NO_RESPONSE 15 + typedef struct { - u16 type; - u8 status; - u8 errno; + u16 type; + u8 status; + u8 errno; } OSContStatus; /* sizeof(OSContPad) == 6 */ typedef struct { - /* 0x00 */ u16 button; - /* 0x02 */ s8 stick_x; - /* 0x03 */ s8 stick_y; - /* 0x04 */ u8 errno; + /* 0x00 */ u16 button; + /* 0x02 */ s8 stick_x; + /* 0x03 */ s8 stick_y; + /* 0x04 */ u8 errno; } OSContPad; +extern s32 osContInit(OSMessageQueue* mq, u8* pattern_p, OSContStatus* status); +extern s32 osContStartQuery(OSMessageQueue* mq); +extern s32 osContStartReadData(OSMessageQueue* mq); +extern void osContGetQuery(OSContStatus* status); +extern s32 osContSetCh(u8 num_controllers); +extern void osContGetReadData(OSContPad* pad); + #ifdef __cplusplus } #endif diff --git a/include/libultra/os_pfs.h b/include/libultra/os_pfs.h new file mode 100644 index 00000000..085cd656 --- /dev/null +++ b/include/libultra/os_pfs.h @@ -0,0 +1,30 @@ +#ifndef OS_PFS_H +#define OS_PFS_H + +#include "types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* File System error number */ + +#define PFS_ERR_NOPACK 1 /* no memory card is plugged or */ +#define PFS_ERR_NEW_PACK 2 /* ram pack has been changed to a different one */ +#define PFS_ERR_INCONSISTENT 3 /* need to run Pfschecker*/ +#define PFS_ERR_CONTRFAIL CONT_OVERRUN_ERROR +#define PFS_ERR_INVALID 5 /* invalid parameter or file not exist*/ +#define PFS_ERR_BAD_DATA 6 /* the data read from pack are bad*/ +#define PFS_DATA_FULL 7 /* no free pages on ram pack*/ +#define PFS_DIR_FULL 8 /* no free directories on ram pack*/ +#define PFS_ERR_EXIST 9 /* file exists*/ +#define PFS_ERR_ID_FATAL 10 /* dead ram pack */ +#define PFS_ERR_DEVICE 11 /* wrong device type*/ +#define PFS_ERR_NO_GBCART 12 /* no gb cartridge (64GB-PAK) */ +#define PFS_ERR_NEW_GBCART 13 /* gb cartridge may be changed */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/padmgr.h b/include/padmgr.h index c6ffc24b..d64676e6 100644 --- a/include/padmgr.h +++ b/include/padmgr.h @@ -6,6 +6,7 @@ #include "libu64/pad.h" #include "dolphin/os/OSMessage.h" #include "libultra/osThread.h" +#include "libu64/pad.h" #ifdef __cplusplus extern "C" { @@ -13,6 +14,10 @@ extern "C" { #define PADMSGBUFCNT 8 +#define PADMGR_FLAG_HANDLE_RETRACE (1 << 0) +#define PADMGR_FLAG_HANDLE_PRENMI (1 << 1) +#define PADMGR_FLAG_DONE (1 << 2) + enum pads { PAD0, PAD1, @@ -22,6 +27,26 @@ enum pads { PAD_NUM }; +enum { + PADMGR_PAK_NONE, + PADMGR_PAK_RUMBLE, + PADMGR_PAK_CONTROLLER, + PADMGR_PAK_UNK, + + PADMGR_PAK_NUM +}; + +enum { + PADMGR_TYPE_NONE, + PADMGR_TYPE_CONTROLLER, + PADMGR_TYPE_2, + PADMGR_TYPE_MOUSE, + PADMGR_TYPE_VOICE_UNINTIALIZED, + PADMGR_TYPE_VOICE_INITIALIZED, + + PADMGR_TYPE_UNK = 255 +}; + typedef struct { u8 last_command; // PAD_MOTOR_* u8 now_command; // PAD_MOTOR_* @@ -43,22 +68,21 @@ typedef struct { /* 0x0008 */ void* callback_param; /* 0x000C */ void (*callback2)(void*); /* 0x0010 */ void* callback2_param; - /* 0x0014 */ OSContStatus pad_status[MAXCONTROLLERS]; /* 0x0024 */ OSMessage _msg24; /* 0x0028 */ OSMessage _msg28; /* 0x002C */ OSMessage _msgBuf2C[PADMSGBUFCNT]; - /* 0x004C */ OSMessageQueue _msgQueue4C; - /* 0x006C */ OSMessageQueue _msgQueue6C; + /* 0x004C */ OSMessageQueue serial_mq; + /* 0x006C */ OSMessageQueue controller_lock_mq; /* 0x008C */ OSMessageQueue _msgQueue8C; /* 0x00AC */ irqmgr_client_t irqclient; /* 0x00B4 */ u32 _unk0; /* maybe additional value in irqmgr_client_t? */ /* 0x00B8 */ OSThread thread; - /* 0x03C8 */ u8 _tmp[0x60]; // pad_t pads[MAXCONTROLLERS]; // TODO: figure out what's going on here. - /* 0x0428 */ OSContPad n64_pads[MAXCONTROLLERS]; /* Converted from PADStatus via JUTGamePad */ + /* 0x03C8 */ pad_t pads[MAXCONTROLLERS]; + /* 0x0428 */ OSContPad cur_pads[MAXCONTROLLERS]; /* Converted from PADStatus via JUTGamePad */ /* 0x0440 */ u8 num_controllers; - /* 0x0441 */ u8 device_type[4]; - /* 0x0445 */ u8 pak_type[4]; + /* 0x0441 */ u8 device_type[MAXCONTROLLERS]; + /* 0x0445 */ u8 pak_type[MAXCONTROLLERS]; /* 0x044A */ Rumble_t rumble; } padmgr; diff --git a/src/padmgr.c b/src/padmgr.c new file mode 100644 index 00000000..734ed075 --- /dev/null +++ b/src/padmgr.c @@ -0,0 +1,372 @@ +#include "padmgr.h" + +#include "libultra/libultra.h" +#include "m_debug.h" +#include "jsyswrap.h" + +static int frame = 0; +padmgr padmgr_class; +static padmgr* this = &padmgr_class; + +extern OSMessageQueue* padmgr_LockSerialMesgQ(void) { + OSMessageQueue* mq; + + osRecvMesg(&this->serial_mq, (OSMesg)&mq, OS_MESG_BLOCK); + return mq; +} + +extern void padmgr_UnlockSerialMesgQ(OSMessageQueue* mq) { + osSendMesg(&this->serial_mq, (OSMesg)mq, OS_MESG_BLOCK); +} + +static void padmgr_LockContData(void) { + osRecvMesg(&this->controller_lock_mq, NULL, OS_MESG_BLOCK); +} + +static void padmgr_UnlockContData(void) { + osSendMesg(&this->controller_lock_mq, (OSMesg)NULL, OS_MESG_BLOCK); +} + +static void padmgr_RumbleControl(void) { + Motor_t* motor = this->rumble.motors; + int i; + + for (i = 0; i < PAD_CONTROLLER_NUM; i++) { + if (this->device_type[i] == PADMGR_TYPE_CONTROLLER && this->rumble.cooldown_frames == 0) { + if (motor->last_command != motor->now_command) { + if (motor->now_command == PAD_MOTOR_STOP) { + motor->frames = 3; + } else { + motor->frames = 0; + } + + PADControlMotor(i, motor->now_command); + motor->last_command = motor->now_command; + } else { + if (motor->frames != 0) { + motor->frames--; + } + + if (motor->frames != 0) { + PADControlMotor(i, PAD_MOTOR_STOP); + } + } + } + + motor++; + } +} + +static void padmgr_RumbleStop(void) { + static u32 stop_command[PAD_CONTROLLER_NUM] = { PAD_MOTOR_STOP, PAD_MOTOR_STOP, PAD_MOTOR_STOP, PAD_MOTOR_STOP }; + int i; + + PADControlAllMotors(stop_command); + for (i = 0; i < PAD_CONTROLLER_NUM; i++) { + this->rumble.motors[i].last_command = PAD_MOTOR_STOP; + this->rumble.motors[i].now_command = PAD_MOTOR_STOP; + this->rumble.motors[i].frames = 0; + } +} + +extern void padmgr_force_stop_ON(void) { + this->rumble.cooldown_frames = 4; +} + +extern void padmgr_force_stop_OFF(void) { + this->rumble.cooldown_frames = 0; +} + +extern void padmgr_RumbleReset(void) { + this->rumble.cooldown_frames = -3; +} + +extern void padmgr_RumbleSet(int pad, int command) { + this->rumble.motors[pad].now_command = command; + if (command != PAD_MOTOR_RUMBLE) { + this->rumble.rumble_frames = 240; + } +} + +static void padmgr_PakConnectCheck(void) { + static int padno = 0; + int i; + + for (i = 0; i < this->num_controllers; i++) { + padno = (padno + 1) % this->num_controllers; + if (this->device_type[padno] == PADMGR_TYPE_CONTROLLER) { + if (this->pak_type[padno] != PADMGR_PAK_NONE) { + u8 status = this->pad_status[padno].status; + + if ((status & CONT_CARD_PULL) != 0 || (status & CONT_CARD_ON) == 0) { + this->pak_type[padno] = PADMGR_PAK_NONE; + } + } + + if (this->pak_type[padno] == PADMGR_PAK_NONE && (this->pad_status[padno].status & CONT_CARD_ON) != 0) { + this->pak_type[padno] = PADMGR_PAK_UNK; + } + break; + } + } +} + +static void padmgr_HandleDoneReadPadMsg(void) { + pad_t* pad = this->pads; + OSContPad* cur_pad = this->cur_pads; + int now; + int trigger; + int i; + + for (i = 0; i < this->num_controllers; i++) { + pad->last = pad->now; + if (this->device_type[i] == PADMGR_TYPE_CONTROLLER) { + switch (cur_pad->errno) { + case CONT_NO_ERROR: + pad->now = *cur_pad; + if (this->device_type[i] == PADMGR_TYPE_NONE) { + this->device_type[i] = PADMGR_TYPE_CONTROLLER; + } + break; + case CONT_OVERRUN_ERROR: + pad->now = pad->last; + break; + case CONT_NO_RESPONSE_ERROR: + pad->now.button = 0; + pad->now.stick_x = 0; + pad->now.stick_y = 0; + pad->now.errno = cur_pad->errno; + if (this->device_type[i] != PADMGR_TYPE_NONE) { + this->device_type[i] = PADMGR_TYPE_NONE; + this->pak_type[i] = PADMGR_PAK_NONE; + } + break; + } + } else { + pad->now.button = 0; + pad->now.stick_x = 0; + pad->now.stick_y = 0; + pad->now.errno = cur_pad->errno; + } + + /* Update buttons */ + trigger = pad->last.button ^ pad->now.button; + trigger |= GETREG(SREG, 16 + i); + pad->on.button |= (u16)(trigger & pad->now.button); + pad->off.button |= (u16)(trigger & pad->last.button); + + /* Update stick values */ + pad_correct_stick(pad); + pad->on.stick_x += (s8)(pad->now.stick_x - pad->last.stick_x); + pad->on.stick_y += (s8)(pad->now.stick_y - pad->last.stick_y); + + pad++; + cur_pad++; + } +} + +static void padmgr_ConnectCheck(void) { + int pattern = 0; + int i; + + for (i = 0; i < this->num_controllers; i++) { + if (this->pad_status[i].errno == CONT_NO_ERROR) { + int masked_type = this->pad_status[i].type & CONT_TYPE_MASK; + + switch (masked_type) { + case CONT_TYPE_NORMAL: + pattern |= 1 << i; + if (this->device_type[i] == PADMGR_TYPE_NONE) { + this->device_type[i] = PADMGR_TYPE_CONTROLLER; + } + break; + case CONT_TYPE_MOUSE: + if (this->device_type[i] == PADMGR_TYPE_NONE) { + this->device_type[i] = PADMGR_TYPE_MOUSE; + } + break; + case CONT_TYPE_VOICE: + if (this->device_type[i] == PADMGR_TYPE_NONE) { + this->device_type[i] = PADMGR_TYPE_VOICE_UNINTIALIZED; + this->pak_type[i] = PADMGR_PAK_NONE; + } + break; + default: + if (this->device_type[i] == PADMGR_TYPE_NONE) { + this->device_type[i] = PADMGR_TYPE_UNK; + } + break; + } + } else { + if (this->device_type[i] != PADMGR_TYPE_NONE) { + if (this->device_type[i] == PADMGR_TYPE_CONTROLLER) { + this->pak_type[i] = PADMGR_PAK_NONE; + } + + this->device_type[i] = PADMGR_TYPE_NONE; + } + } + } + + this->pad_pattern = pattern; +} + +static void padmgr_HandleRetraceMsg(void) { + OSMessageQueue* serial_mq; + + serial_mq = padmgr_LockSerialMesgQ(); + osContStartReadData(serial_mq); + + if (this->callback != NULL) { + (*this->callback)(this->callback_param); + } + + osRecvMesg(serial_mq, NULL, OS_MESG_BLOCK); + osContGetReadData(this->cur_pads); + + if (this->rumble.reset) { + bzero(this->cur_pads, sizeof(this->cur_pads)); + } + + osContStartQuery(serial_mq); + osRecvMesg(serial_mq, NULL, OS_MESG_BLOCK); + osContGetQuery(this->pad_status); + + padmgr_UnlockSerialMesgQ(serial_mq); + + padmgr_ConnectCheck(); + padmgr_LockContData(); + padmgr_HandleDoneReadPadMsg(); + + if (this->callback2 != NULL) { + (*this->callback2)(this->callback2_param); + } + + padmgr_UnlockContData(); + + if (this->rumble.cooldown_frames != 0) { + if (this->rumble.cooldown_frames > 1) { + this->rumble.cooldown_frames--; + padmgr_RumbleStop(); + } else if (this->rumble.cooldown_frames < 0) { + this->rumble.cooldown_frames++; + padmgr_RumbleStop(); + } + } else if (this->rumble.rumble_frames == 0) { + padmgr_RumbleStop(); + } else if (this->rumble.reset == FALSE) { + padmgr_RumbleControl(); + this->rumble.rumble_frames--; + } + + serial_mq = padmgr_LockSerialMesgQ(); + padmgr_PakConnectCheck(); + padmgr_UnlockSerialMesgQ(serial_mq); + frame++; +} + +static void padmgr_HandlePreNMIMsg(void) { + this->rumble.reset = TRUE; + padmgr_RumbleReset(); +} + +extern void padmgr_RequestPadData_NonLock(pad_t* pad, int flag) { + int i; + pad_t* padmgr_pad = this->pads; + pad_t* pad_p = pad; + int trigger; + + for (i = 0; i < this->num_controllers; i++) { + if (flag) { + /* Direct copy from padmgr */ + *pad_p = *padmgr_pad; + padmgr_pad->on.button = 0; + padmgr_pad->on.stick_x = 0; + padmgr_pad->on.stick_y = 0; + padmgr_pad->off.button = 0; + } else { + /* Only copy now from padmgr and update all other info from that */ + pad_p->last = pad_p->now; + pad_p->now = padmgr_pad->now; + trigger = pad_p->last.button ^ pad_p->now.button; + pad_p->on.button = trigger & pad_p->now.button; + pad_p->off.button = trigger & pad_p->last.button; + pad_correct_stick(pad_p); + pad_p->on.stick_x += (s8)(pad_p->now.stick_x - pad_p->last.stick_x); + pad_p->on.stick_y += (s8)(pad_p->now.stick_y - pad_p->last.stick_y); + } + + padmgr_pad++; + pad_p++; + } +} + +extern void padmgr_RequestPadData(pad_t* pad, int flag) { + padmgr_LockContData(); + padmgr_RequestPadData_NonLock(pad, flag); + padmgr_UnlockContData(); +} + +extern void padmgr_ClearPadData(pad_t* pad) { + int i; + + for (i = 0; i < this->num_controllers; i++) { + pad->last = pad->now; + pad->now.button = 0; + pad->now.stick_x = 0; + pad->now.stick_y = 0; + pad->on = pad->now; + pad->off = pad->now; + + pad++; + } +} + +static void padmgr_MainProc(void* arg) { + BOOL done = FALSE; + int flags; + + while (done == FALSE) { + VIWaitForRetrace(); + flags = PADMGR_FLAG_HANDLE_RETRACE; + + while (flags != 0) { + if ((flags & PADMGR_FLAG_DONE) != 0) { + flags &= ~PADMGR_FLAG_DONE; + done = TRUE; + } else if ((flags & PADMGR_FLAG_HANDLE_PRENMI) != 0) { + flags &= ~PADMGR_FLAG_HANDLE_PRENMI; + padmgr_HandlePreNMIMsg(); + } else if ((flags & PADMGR_FLAG_HANDLE_RETRACE) != 0) { + flags &= ~PADMGR_FLAG_HANDLE_RETRACE; + padmgr_HandleRetraceMsg(); + } + } + } +} + +extern void padmgr_Init(OSMessageQueue* mq) { + bzero(this, sizeof(padmgr)); + osCreateMesgQueue(&this->serial_mq, &this->_msg24, 1); + padmgr_UnlockSerialMesgQ(mq); + osCreateMesgQueue(&this->controller_lock_mq, &this->_msg28, 1); + padmgr_UnlockContData(); + osContInit(mq, &this->pad_pattern, this->pad_status); + this->num_controllers = MAXCONTROLLERS; + osContSetCh(this->num_controllers); +} + +extern void padmgr_Create(OSMessageQueue* serial_mq, OSId id, OSPri priority, void* stackend, size_t stack_size) { + padmgr_Init(serial_mq); + osCreateMesgQueue(&this->_msgQueue8C, this->_msgBuf2C, PADMSGBUFCNT); + osCreateThread2(&this->thread, id, &padmgr_MainProc, this, stackend, stack_size, priority); + osStartThread(&this->thread); +} + +extern int padmgr_isConnectedController(int idx) { + if (this->device_type[idx] == PADMGR_TYPE_CONTROLLER) { + return TRUE; + } + + return FALSE; +} diff --git a/src/zurumode.c b/src/zurumode.c index 3d39af0c..4d0b676c 100644 --- a/src/zurumode.c +++ b/src/zurumode.c @@ -9,10 +9,10 @@ static zuru_keycheck zuruKeyCheck; s32 zurumode_flag; static int zerucheck_init(zuru_keycheck* key_check) { - key_check->zurumode_enabled = FALSE; - key_check->state = ZURUMODE_STAGE_BEGIN_e; - key_check->progressing = ZURUMODE_RESET; - key_check->last_controller = 0; + key_check->zurumode_enabled = FALSE; + key_check->state = ZURUMODE_STAGE_BEGIN_e; + key_check->progressing = ZURUMODE_RESET; + key_check->last_controller = 0; } /** @@ -39,203 +39,197 @@ static int zerucheck_init(zuru_keycheck* key_check) { * returns int zurumodeEnabled */ static int zerucheck_key_check(zuru_keycheck* key_check, u32 controller) { - u32 controller_new; /* Buttons pressed on the current frame only */ - int state = key_check->state; /* Keycheck state */ - int progressing = key_check->progressing; /* Progressing through keycheck */ + u32 controller_new; /* Buttons pressed on the current frame only */ + int state = key_check->state; /* Keycheck state */ + int progressing = key_check->progressing; /* Progressing through keycheck */ - if (state != ZURUMODE_STAGE_FINAL_e) { - u16 controller_now = controller; - controller_new = - controller_now & (key_check->last_controller ^ controller_now); - key_check->last_controller = controller_now; + if (state != ZURUMODE_STAGE_FINAL_e) { + u16 controller_now = controller; + controller_new = controller_now & (key_check->last_controller ^ controller_now); + key_check->last_controller = controller_now; - if (controller_now == BUTTON_NONE && progressing == ZURUMODE_PROGRESSING) { - progressing = ZURUMODE_RESET; - } else if (controller_new != BUTTON_NONE) { - if (progressing == ZURUMODE_PROGRESSING) { - state = ZURUMODE_STAGE_BEGIN_e; - } + if (controller_now == BUTTON_NONE && progressing == ZURUMODE_PROGRESSING) { + progressing = ZURUMODE_RESET; + } else if (controller_new != BUTTON_NONE) { + if (progressing == ZURUMODE_PROGRESSING) { + state = ZURUMODE_STAGE_BEGIN_e; + } - switch (state) { - case ZURUMODE_STAGE_BEGIN_e: - /* L & R must be held first, then Z */ - if (controller_now == (BUTTON_R | BUTTON_L | BUTTON_Z) && - controller_new == BUTTON_Z) { - state = ZURUMODE_STAGE_1_e; - progressing = ZURUMODE_PROGRESSING; - } - break; + switch (state) { + case ZURUMODE_STAGE_BEGIN_e: + /* L & R must be held first, then Z */ + if (controller_now == (BUTTON_R | BUTTON_L | BUTTON_Z) && controller_new == BUTTON_Z) { + state = ZURUMODE_STAGE_1_e; + progressing = ZURUMODE_PROGRESSING; + } + break; - case ZURUMODE_STAGE_1_e: - if (controller_new == BUTTON_DUP) { - state = ZURUMODE_STAGE_2_e; - } else { - state = ZURUMODE_STAGE_BEGIN_e; - } - break; + case ZURUMODE_STAGE_1_e: + if (controller_new == BUTTON_DUP) { + state = ZURUMODE_STAGE_2_e; + } else { + state = ZURUMODE_STAGE_BEGIN_e; + } + break; - case ZURUMODE_STAGE_2_e: - if (controller_new == BUTTON_CDOWN) { - state = ZURUMODE_STAGE_3_e; - progressing = ZURUMODE_PROGRESSING; - } else { - state = ZURUMODE_STAGE_BEGIN_e; - } - break; + case ZURUMODE_STAGE_2_e: + if (controller_new == BUTTON_CDOWN) { + state = ZURUMODE_STAGE_3_e; + progressing = ZURUMODE_PROGRESSING; + } else { + state = ZURUMODE_STAGE_BEGIN_e; + } + break; - case ZURUMODE_STAGE_3_e: - if (controller_new == BUTTON_CUP) { - state = ZURUMODE_STAGE_4_e; - } else { - state = ZURUMODE_STAGE_BEGIN_e; - } - break; + case ZURUMODE_STAGE_3_e: + if (controller_new == BUTTON_CUP) { + state = ZURUMODE_STAGE_4_e; + } else { + state = ZURUMODE_STAGE_BEGIN_e; + } + break; - case ZURUMODE_STAGE_4_e: - if (controller_new == BUTTON_DDOWN) { - state = ZURUMODE_STAGE_5_e; - progressing = ZURUMODE_PROGRESSING; - } else { - state = ZURUMODE_STAGE_BEGIN_e; - } - break; + case ZURUMODE_STAGE_4_e: + if (controller_new == BUTTON_DDOWN) { + state = ZURUMODE_STAGE_5_e; + progressing = ZURUMODE_PROGRESSING; + } else { + state = ZURUMODE_STAGE_BEGIN_e; + } + break; - case ZURUMODE_STAGE_5_e: - if (controller_new == BUTTON_DLEFT) { - state = ZURUMODE_STAGE_6_e; - } else { - state = ZURUMODE_STAGE_BEGIN_e; - } - break; + case ZURUMODE_STAGE_5_e: + if (controller_new == BUTTON_DLEFT) { + state = ZURUMODE_STAGE_6_e; + } else { + state = ZURUMODE_STAGE_BEGIN_e; + } + break; - case ZURUMODE_STAGE_6_e: - if (controller_new == BUTTON_CLEFT) { - state = ZURUMODE_STAGE_7_e; - progressing = ZURUMODE_PROGRESSING; - } else { - state = ZURUMODE_STAGE_BEGIN_e; - } - break; + case ZURUMODE_STAGE_6_e: + if (controller_new == BUTTON_CLEFT) { + state = ZURUMODE_STAGE_7_e; + progressing = ZURUMODE_PROGRESSING; + } else { + state = ZURUMODE_STAGE_BEGIN_e; + } + break; - case ZURUMODE_STAGE_7_e: - if (controller_new == BUTTON_CRIGHT) { - state = ZURUMODE_STAGE_8_e; - } else { - state = ZURUMODE_STAGE_BEGIN_e; - } - break; + case ZURUMODE_STAGE_7_e: + if (controller_new == BUTTON_CRIGHT) { + state = ZURUMODE_STAGE_8_e; + } else { + state = ZURUMODE_STAGE_BEGIN_e; + } + break; - case ZURUMODE_STAGE_8_e: - if (controller_new == BUTTON_DRIGHT) { - state = ZURUMODE_STAGE_9_e; - progressing = ZURUMODE_PROGRESSING; - } else { - state = ZURUMODE_STAGE_BEGIN_e; - } - break; + case ZURUMODE_STAGE_8_e: + if (controller_new == BUTTON_DRIGHT) { + state = ZURUMODE_STAGE_9_e; + progressing = ZURUMODE_PROGRESSING; + } else { + state = ZURUMODE_STAGE_BEGIN_e; + } + break; - case ZURUMODE_STAGE_9_e: - if (controller_new == (BUTTON_B | BUTTON_A)) { - state = ZURUMODE_STAGE_10_e; - } else if (controller_new == BUTTON_A) { - state = ZURUMODE_STAGE_91_e; - } else if (controller_new == BUTTON_B) { - state = ZURUMODE_STAGE_92_e; - } else { - state = ZURUMODE_STAGE_BEGIN_e; - } - break; + case ZURUMODE_STAGE_9_e: + if (controller_new == (BUTTON_B | BUTTON_A)) { + state = ZURUMODE_STAGE_10_e; + } else if (controller_new == BUTTON_A) { + state = ZURUMODE_STAGE_91_e; + } else if (controller_new == BUTTON_B) { + state = ZURUMODE_STAGE_92_e; + } else { + state = ZURUMODE_STAGE_BEGIN_e; + } + break; - case ZURUMODE_STAGE_91_e: - if (controller_new == BUTTON_B) { - state = ZURUMODE_STAGE_10_e; - } else { - state = ZURUMODE_STAGE_BEGIN_e; - } - break; + case ZURUMODE_STAGE_91_e: + if (controller_new == BUTTON_B) { + state = ZURUMODE_STAGE_10_e; + } else { + state = ZURUMODE_STAGE_BEGIN_e; + } + break; - case ZURUMODE_STAGE_92_e: - if (controller_new == BUTTON_A) { - state = ZURUMODE_STAGE_10_e; - } else { - state = ZURUMODE_STAGE_BEGIN_e; - } - break; + case ZURUMODE_STAGE_92_e: + if (controller_new == BUTTON_A) { + state = ZURUMODE_STAGE_10_e; + } else { + state = ZURUMODE_STAGE_BEGIN_e; + } + break; - case ZURUMODE_STAGE_10_e: - if (controller_new == BUTTON_START) { - state = ZURUMODE_STAGE_FINAL_e; - } else { - state = ZURUMODE_STAGE_BEGIN_e; - } - break; - } + case ZURUMODE_STAGE_10_e: + if (controller_new == BUTTON_START) { + state = ZURUMODE_STAGE_FINAL_e; + } else { + state = ZURUMODE_STAGE_BEGIN_e; + } + break; + } + } } - } - if (state == ZURUMODE_STAGE_FINAL_e) { - /* Zurumode code has been correctly input */ - key_check->zurumode_enabled ^= TRUE; - key_check->state = ZURUMODE_STAGE_BEGIN_e; - key_check->progressing = ZURUMODE_RESET; - } else { - key_check->state = state; - key_check->progressing = progressing; - } + if (state == ZURUMODE_STAGE_FINAL_e) { + /* Zurumode code has been correctly input */ + key_check->zurumode_enabled ^= TRUE; + key_check->state = ZURUMODE_STAGE_BEGIN_e; + key_check->progressing = ZURUMODE_RESET; + } else { + key_check->state = state; + key_check->progressing = progressing; + } - return key_check->zurumode_enabled; + return key_check->zurumode_enabled; } static s32 zurumode_update() { - s32 flag_now; - s32 zurumode_now; + s32 flag_now; + s32 zurumode_now; - flag_now = zurumode_flag; - zurumode_flag = zurumode_now = (APPNMI_ZURUMODE_GET()) ? (APPNMI_ZURUMODE2_GET() ? 2 : 1) : 0; + flag_now = zurumode_flag; + zurumode_flag = zurumode_now = (APPNMI_ZURUMODE_GET()) ? (APPNMI_ZURUMODE2_GET() ? 2 : 1) : 0; - if (flag_now != zurumode_now) { - OSReport("zurumode_flag が %d から %d に変更されました\n", flag_now, - zurumode_now); - if (zurumode_flag != 0) { - if (APPNMI_TESTMODE_GET() || APPNMI_ZURUMODE_GET()) { - JC_JUTAssertion_changeDevice(3); - JC_JUTDbPrint_setVisible(JC_JUTDbPrint_getManager(), 1); - } - } else { - JC_JUTAssertion_changeDevice(2); - JC_JUTDbPrint_setVisible(JC_JUTDbPrint_getManager(), 0); + if (flag_now != zurumode_now) { + OSReport("zurumode_flag が %d から %d に変更されました\n", flag_now, zurumode_now); + if (zurumode_flag != 0) { + if (APPNMI_TESTMODE_GET() || APPNMI_ZURUMODE_GET()) { + JC_JUTAssertion_changeDevice(3); + JC_JUTDbPrint_setVisible(JC_JUTDbPrint_getManager(), 1); + } + } else { + JC_JUTAssertion_changeDevice(2); + JC_JUTDbPrint_setVisible(JC_JUTDbPrint_getManager(), 0); + } } - } - return zurumode_flag; + return zurumode_flag; } static void zurumode_callback(void* param) { - zerucheck_key_check(&zuruKeyCheck, (u32)(((padmgr*)param)->n64_pads[1].button)); - if (APPNMI_DEBUGMODE_GET() || - (APPNMI_TESTMODE_GET() && (padmgr_isConnectedController(1) != 0)) || - (zuruKeyCheck.zurumode_enabled != 0)) { - APPNMI_ZURUMODE_SET(); - } else { - APPNMI_ZURUMODE_CLR(); - } - if (APPNMI_DEBUGMODE_GET() && - (zuruKeyCheck.state != 0) && (zuruKeyCheck.zurumode_enabled == 0)) { - JW_JUTReport(60, 90, 1, "ZURU %d/%d", zuruKeyCheck.state, - zuruKeyCheck.progressing); - } + zerucheck_key_check(&zuruKeyCheck, (u32)(((padmgr*)param)->cur_pads[1].button)); + if (APPNMI_DEBUGMODE_GET() || (APPNMI_TESTMODE_GET() && (padmgr_isConnectedController(1) != 0)) || + (zuruKeyCheck.zurumode_enabled != 0)) { + APPNMI_ZURUMODE_SET(); + } else { + APPNMI_ZURUMODE_CLR(); + } + if (APPNMI_DEBUGMODE_GET() && (zuruKeyCheck.state != 0) && (zuruKeyCheck.zurumode_enabled == 0)) { + JW_JUTReport(60, 90, 1, "ZURU %d/%d", zuruKeyCheck.state, zuruKeyCheck.progressing); + } - zurumode_update(); + zurumode_update(); } extern void zurumode_init(void) { - zurumode_flag = 0; - zerucheck_init(&zuruKeyCheck); - zuruKeyCheck.zurumode_enabled = APPNMI_ZURUMODE_GET(); - padmgr_setClient2(zurumode_callback, &padmgr_class); - zurumode_update(); + zurumode_flag = 0; + zerucheck_init(&zuruKeyCheck); + zuruKeyCheck.zurumode_enabled = APPNMI_ZURUMODE_GET(); + padmgr_setClient2(zurumode_callback, &padmgr_class); + zurumode_update(); } extern void zurumode_cleanup(void) { - padmgr_removeClient2(zurumode_callback, &padmgr_class); - zurumode_flag = 0; + padmgr_removeClient2(zurumode_callback, &padmgr_class); + zurumode_flag = 0; } From 22d4bbfd62651d811b63a2dedbdb36a9059750fc Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Wed, 10 Jul 2024 19:08:49 -0400 Subject: [PATCH 054/234] Switch from 'iconv' to sjiswrap, remove reference to yaz0 tool --- .gitignore | 1 + common.py | 7 ++----- configure.py | 29 +++++++++++------------------ docs/extract_game.md | 6 ------ tools/sjiswrap.exe | Bin 0 -> 289792 bytes 5 files changed, 14 insertions(+), 29 deletions(-) create mode 100644 tools/sjiswrap.exe diff --git a/.gitignore b/.gitignore index 1b91f113..67f29a61 100644 --- a/.gitignore +++ b/.gitignore @@ -14,6 +14,7 @@ dump/* *.ctx ctx.* !tools/orthrus.exe +!tools/sjiswrap.exe build.ninja ac-decomp.code-workspace assets/ diff --git a/common.py b/common.py index bdd6122f..0554d158 100644 --- a/common.py +++ b/common.py @@ -215,11 +215,10 @@ CC = os.path.join(CODEWARRIOR, "mwcceppc.exe") CC_R = os.path.join(CODEWARRIOR_RODATA_POOL_FIX, "mwcceppc.exe") OCC = os.path.join(SDK_CW, "mwcceppc.exe") LD = os.path.join(CODEWARRIOR, "mwldeppc.exe") +SJISWRAP = f"{TOOLS}/sjiswrap.exe" if platform != "win32": - CC = f"wibo {CC}" - CC_R = f"wibo {CC_R}" - OCC = f"wibo {OCC}" LD = f"wibo {LD}" + SJISWRAP = f"wibo {SJISWRAP}" else: ORTHRUS = os.path.join(TOOLS, "orthrus.exe") @@ -236,8 +235,6 @@ PAL16DIS = f"{PYTHON} {TOOLS}/converters/pal16dis.py" # JSystem JKernel archive tool ARC_TOOL = f"{PYTHON} {TOOLS}/arc_tool.py" -ICONV = f"{PYTHON} tools/sjis.py" # TODO: get actual iconv working(?) - # N64 SDK path for GBI N64SDK = os.environ.get("N64_SDK") assert N64SDK != None, "N64_SDK is not defined as a system environment variable" diff --git a/configure.py b/configure.py index 926f7b12..c56be844 100644 --- a/configure.py +++ b/configure.py @@ -97,11 +97,11 @@ n.variable("ld", c.LD) n.variable("devkitppc", c.DEVKITPPC) n.variable("as", c.AS) n.variable("cpp", c.CPP) -n.variable("iconv", c.ICONV) n.variable("forcefilesgen", c.FORCEFILESGEN) n.variable("vtxdis", c.VTXDIS) n.variable("pal16dis", c.PAL16DIS) n.variable("arctool", c.ARC_TOOL) +n.variable("sjiswrap", c.SJISWRAP) n.newline() ############## @@ -121,7 +121,7 @@ n.newline() # Windows can't use && without this statement ALLOW_CHAIN = "cmd /c " if os.name == "nt" else "" -mwcc_cmd = ALLOW_CHAIN + f"$cpp -M $in -MF $out.d $cppflags && $cc $cflags -c $in -o $out" +mwcc_cmd = ALLOW_CHAIN + f"$cpp -M $in -MF $out.d $cppflags && $sjiswrap $cc $cflags -c $in -o $out" n.rule( "relextern", @@ -225,7 +225,7 @@ n.rule( n.rule( "ccs", - command = ALLOW_CHAIN + f"$cpp -M $in -MF $out.d $cppflags && $cc $cflags -S $in -o $out", + command = ALLOW_CHAIN + f"$cpp -M $in -MF $out.d $cppflags && $sjiswrap $cc $cflags -S $in -o $out", description = "CC -S $in", deps = "gcc", depfile = "$out.d" @@ -237,12 +237,6 @@ n.rule( description = "LD $out", ) -n.rule( - "iconv", - command = "$iconv $in $out", - description = "iconv $in", -) - n.rule( "forcefiles", command = "$forcefilesgen $in $out $forcefiles", @@ -267,6 +261,12 @@ n.rule( description = "$arctool -v $in $out" ) +n.rule( + "sjiswrap", + command = "$sjiswrap $in", + description = "sjiswrap $in", +) + ########## # Assets # ########## @@ -676,7 +676,6 @@ class CSource(Source): else: self.cflags = ctx.cflags self.cc = c.CC_R - self.iconv_path = f"$builddir/iconv/{path}" # Find generated includes with open(path, encoding="utf-8") as f: @@ -686,16 +685,10 @@ class CSource(Source): super().__init__(True, path, f"$builddir/{os.path.splitext(path)[0]}.o", gen_includes) def build(self): - n.build( - self.iconv_path, - rule="iconv", - inputs=self.src_path - ) - n.build( self.o_path, rule = "cc", - inputs = self.iconv_path, + inputs = self.src_path, implicit = [inc.path for inc in self.gen_includes], variables = { "cc" : self.cc, @@ -707,7 +700,7 @@ class CSource(Source): n.build( self.s_path, rule = "ccs", - inputs = self.iconv_path, + inputs = self.src_path, implicit = [inc.path for inc in self.gen_includes], variables = { "cflags" : self.cflags diff --git a/docs/extract_game.md b/docs/extract_game.md index 7befff7c..b7e6e645 100644 --- a/docs/extract_game.md +++ b/docs/extract_game.md @@ -40,12 +40,6 @@ Once files have been extracted you will need to copy the following files into th Make sure to rename `main.dol` to `static.dol`. -You will also need to decompress `foresta.rel.szs` using `yaz0` found in `tools/` using the following command: - -~~~~console -yaz0 -d foresta.rel.szs foresta.rel -~~~~ - It is recommended that you also copy the following symbol maps for reference: - `foresta.map` - `static.map` \ No newline at end of file diff --git a/tools/sjiswrap.exe b/tools/sjiswrap.exe new file mode 100644 index 0000000000000000000000000000000000000000..4ddb90693a705bfdc89dceb2846eeb6c905d7ca5 GIT binary patch literal 289792 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
EpA6E#UGKw39 z+Fpc@8JOd4s83?9f86a2Zq&|?yZ!#=4j)VZUygr)Bqh$4=zcIqsvCypyt1HOM&Fv_ z?i_HV`HTY z*AKIa(K~NFJAB6d=byH)X7+7Z_UqHzzrB6Mvheuq{nOvyYsc?~g-HDhF1uz&yivL_ z<{>``oeAF>bFVTFY)&KYuN#L6t&sH7SQ{1xo$xtz{4>sJ5kuem2H4Q5vs zw2*B18+%T%^Ol^{Y&#Sig}ZmRlZ&|brZMFB89tq?xxR7fW&biV$%xx4nkf6?=8GQ- z8~ydx^YoaQ=u5SQ@xj>CqO|F`pJR8?Jbh587d54i-Bve&v;QJ)E}k4Ue}6Cc zUVn7ul%X3Js;}}t3f8#9^77!b)voY&IV4Z@n5V~BS;^yUlt1i6` zuikBVx9jWChRk0c9{+NeNbl*b?auqZC_K}2ZR>s?(S}16OH$tl|FR+Rea_Nry!XfF z2rAwj6>f8b6+gH52CRk8|N66Qmv3Sl+xC{ymU7#42b~~)RExO!UWOD*N)1i92{!jiCCBTwY2_s2RUFP;sS*B7Q_;jqa`X9sQ&zpRH|;EI=Y&s~e$s7I zP`&f{yKVxj#^o%mLV{1IthQS;2fLlsOUm+yPrO^>%UUm^NBH_SJ1v;U$Sf@4_oN%8*J`c&*OxPON6Bjid~*Hq6*jcm|dku zj0d~>jL#UKGd|NzsXlDIkAJrNuE*%kzC=;(SKa@6Y}0GrXMV!G-~6OG6F+5s89R@i zHXktm3Ldu^G(U@-F+XemmH9byE&ROs1#=AV!_MQq*aZ9xHW?qpeDQCv%lOxTz%f_^ z?45cRKD+K>7w{o0kTem01Uq$<*gX6v>=OP2TY^8szQ%vWGV!p}NIN5Ux)^azUxtB91SuBh&)_0cP19pdG}_oyI8k$pzFNvnNDVxv+v7Jtz7jk%bq^?+*~hm zuGBApl~3=i^$qLWyH^!wRh>1wM13&V*ssD*>bJ`8xZkj!jlZweQGYLIazIT$xmB~( zR;!hP)QFpb?*gey<$lFW8<)-s8nFH-DA0O$P>}VBpc%p0)?(`lUUTr~;C;b|f-eO> z4d#T*2$>zyX6+KP)%v*gwUATRRplljFid7n(wrCA7;<|46FXP3XZ^t?Kehz%k4Z}k zZRcCrf4eBA;@9-YOTJGo)7;1Umie4rm%O}wot6eOnf1~9(8_N-VCSXglJ$?I&lhd? zJ28Ln`c(VpYkzW~Sr06|(mGh=VJhmJ)P`Z-xo?f%m;6Jpuj$!&h3wz#a@aRgbW=AL zKTcj6;Lc2|?=kXKnA3q`ULWCaUGl^0U@Oa@;2otk-j}sbvpD21|4Vla+vk%qx0C&G z#f!EM&Ell@b_KI~>v}@VlHHwQJikp%>*Cxq^C2Dkgk6&z&3;2=k+pa10C#DqIcx8H zZtD>%rz{6QR2z~4#RA6ksBPz0muOir4bqxdTx64H+s*mS`iH>PT6L_CwVGYbSc^3M zwS8fw_!F&*-qMTT-MFBNZ!eMZfUpd!o200D>MV=hs@{Lw`mQq7qBe01!R7` zy1nk~>W|l+3qDzS2&miNHM3*?`q;vsP5F7*6;GrFa3;a3qSYoY=%{r6nzvdktwOEe zw7$0r0Pry5VilDReEXY!6RcI+^Dbwzo7b3iF!3cvkmA?`a)%8zfOq z=D&sfY7K9q`;j90rWCynY+Z>(`5pFiww@6k7P3Yu4oHr+%4VVL|UvI7;=|i|-eaB)bAxtJL^O8DDOi;l^5-qdvD} zQTyZCkk%!+#zD)u&zrwn_Je$T_xFXH{YLzc1T6H^^WV{J6|5+43cnP-->@mRJ@!Q0 zgjovV8%zCk_lzXR(JWvBF;%cS|EBXqpGi@NBr?U8=(VBEB~MEG%d(cgu57LTsJpS| z_^COTVOxMI6LI6*K)AYW4IyKKp0!JrFkaRTqQ$5D@;T%BXQ zVnSoyIk9ZF#2kv@!ZsVX*rTx~ak4muosON0-4eTN@lFXpM$7FEBpgb(m~hZ;eqv+d zkBOY5*LHhC$@ce>eoLY!MeN)PG2i;URhb^ga z9@D`mttw6Ikmpe9pqB2Q9xYBz?@q5yKjLsT{d)&th9n~|qcY=(Lwm-r4xeOvk#QyC zWkyA2U*_Y?f~=3TzH%gG)3Rq~S7bkR+>*T~dyXjcB-4opqt>{*Y9*K-| zta3b^TwN-1j^$)H6*wKpYmcsVnxDJIDIhmEHz#*Rt~}R-+~@v_^>wXl&d0*O5jp1# zh57L|r9VXOg8-YEIL6}unp!d<6N^?p(Wc#94WL+vXs%k1dSjvsr=_HJ9s(M>WE3+=^i}om!l~sCeD=SYa z5}YX;D0@&QDSKA-qU=Ih>T*MYhbX4}s;EvPFaM<6I`8xHugk;ubK>upPjq@w{zmV| z@@$#ma-)RE1kv)Q<@4OLT4pWhuW((lXa%qMQsUkA))j$Cn^z?0reV>76dSU@UiNl{ zJeewGNDZa4r3>$|>nBZ*ICS zuD(<`S*EMCPp^+xZXRh}T6wRMBU3nU&ZcIzW?ry9?qn!?5>hSG5NyrR%(T{mZzY`vu3E^kkkEw*qV--D9?R0U)1y^ovJA; zWEHNG*UGoaKay{kACa5XK9n05A1&#qZ7zJjrm;4nac6Q%N&kWF!LUk?5y8k-(P>FNx#9gK`5J0wY7oV+`TD4{qu&o z-nZpW)rXy4$0l05Y0%ktWF=m0GDB*2O=Q#PSbeM{p)spkW95#n^1H01V2-mCqw zR_N`~^h9B|dQ_3$9My89zIyGpwKH2bu6>zv$gO1N^_6847C7JWHpnVnw{BgQ>*jUe zif$zAU-zPDsP^c(b3r}c2eTw3cJgP9KQ>)bN_PR+E-X0SC;En8{naTlcgcYwd0Qx^<{EEBNPD1BqqJXzPns!n2igYP2HHk_W@Ue)yF27=+k>_zZAHy??Q?v@ zi^JNe?JwGy>mAm!*N3k+2|LN#)A;R%q4oFHQ#U+cujQ+=!E^(*(kj4e!;bWR+j6sj z4g3wxor1_DPW^_(ZlsRU4a|AAacM$es|<(;xls~)YcnzWOhQAW)@ z+)WPpmYeK44{hAHsj+KqS6A1jE~_OUcYW5C?B3TE@9?9Yp_7IGF`Id-N!^U@b&HK# zHf8H|>vr39cZb%73c3%rD;j@oT~U?To!)(`q`q5Md~9)n_hIkCyw~1d?twmC`8O1A zIo-v}<-Gdz=4Z_wwNIKVn!jq!k{|NW6AwF!3*AdD<>q_5c3+X51yZ(*Lfb9BgW z&P#Kjd;HAnY@eC)Ce_krlH)_Ctnlgj?6fexi_KlWg3od_%K9p}D|AmvQ|KMm4h>DM z)6EkV9nG)(<^}58@;r|C2`MYci~Vc;14GjyKf%8ux7(?cbtu+WbNqWrpVt?VZqzbK zZGPtiGy^yJll`@PYMtHu7X)MlR0N#!|It4@;9WpOU{qjCU~J$r(OPRe=i|=e>?)4j zc}HM>;1KnDkIj@O${I>ZT}Q1JJ!0vWrTL7zOGV8ko~!d#yK|YJdf#VXPB+vlmfUu3 zm*_}BC2jfji;wu!@h=5cS+m4v`1?Wxn=-RKp)H{x ze#3ma=@riq)Rz6p=1G^6e(+8;-ICZd-ys+KqgFt_F(YLhv40*sbE3@j?Nu+V}w zzqGK`v%)6Ue#FaGvO#j(`AeSxpF#dQpIr&`=8BN1MRi3rMPC1uK)* z8)Udx-Lre;y;C@C{YKbUG%N3N)?*Kw3X;cZsal0w#lF=3Hn)t#N?~PSMo`uEZ1&12 z;+2srT=|@NQ9Yddk=HpJR~~uO;AC1eT|$Z!)d>7o)f}&RP$QHtk;_7Z<<*5%g)bD} zDLNEy{U*SId&Pc}-PrSA=u&PUZ?Y*`3|1AFaMszCNPAa3n(H zeuX!;etW%|uUUgn!*jRrtiw4*Gd6e?=O{!s^d4>ag16B7aARv@UI@+m@ES_X;@U+1 zyV_YThN~S`|5!DzwtemPwXJK{t+lEXNKQD9db#;Lc7Nz>V$rbfVSP%yu>PF$Pu@j7 zKf6qjWJ=ySySDCbT$E<$)7*F`ET%QBSuUTsdZFT2(w9xzQRxat?>G5V+%~l4wc57N zWc9_IQtb7a)^?-iWz)5_Kd$NZ2vDT@Br9&U32HHyxlJbCI#mwsOWJ9rzdLPc&sqF& zd-QstVlccR!)X2c$c5{FX=_~U)qbS?=;GGJ<;~)7(!}ZE2fdX#9!1k;9dtUCR_+wu zGRrO?p<-6%9D0I(M^Hy;hjjpH@xV1ztO03moLSY)3w`|*}1Rhr;X1x zE^Oc0d9-SR=uS>$=DTW3!ItbQ(MUG8>gQ@qbj>C?{$6p1HJ@kdecL1Ok>Ca>n> zq(eo8O-owt`}3`m8)HJ8ih_&w7cDLd(>r7C>b;&P_P>$yUCz|psku7AU$`C)dlp_B zrrUWf%qs6Qt502r^Y~e<{0(aaC{D zM4h*8Gw1iYw?rIpa!uV)9+j{q{*brA`>p)PrhEC1ocBqR6y2P=&Y$~S&v=&qTmDsN zXP*|I@AOi9wv&x@e)RT|=z4F>UFKcY^dLX3`8~zF`9iI3?aJndif==#y(?=o^W42h znOj09(}pz;GD#sPi{I+KFF&Ch;IovoK!CTX+w|7%^xhqDoFn5@NqQph@uHk|^WvI{ zBP(hXIg;k{j{DTt`PAAy4@h_Nb?TT{koTJ#r;;VQ-#F|MmhHbhHTScutByapm^zb0 z%$yvj7v#W#BfLQ?spk#nJg<`xq9$i=*9L>ty_plj2g9!Nmg>CEO?1!m`C;Mi2}frf zN=r>|oA{&E^U^y!S?yJux0c<$lQVYm4rDo3-SN2KF*7?byE5x`j$V#ho|DX8?X!oENk6pO@I? z+vUFubHLbRdZca++KXRfmU*) zA=PzF$zInZCB>B|T`!j0EV<}vhIOxum7q3*ZKnueGO+D&NWyzo^0RgHPkk-X{z_^rtqfBraeu&nvOU9 z&@|litm%2v?@jK_Rn0q_1>S+)$Gh}e@F2q$(-!BJ4DaBU;uh1jo7Qgke!kXn-H+ZI zQ;mK2t=2w!TTiqGhu-&5#vf|aU;Im(N4QqIe*3;agLa#CxAvI!#P;09r`kIgJFaJK zkd>rwsMzrRhF>;3-;nLg?Z~k?F~z&nzTuA^M zu3Ihlx_;?;-8ER^(cOX_AZ;X1PVaB|G~ybCAKuq;$mUz>B-%3Cm%3qL`FSVQ&#NET z$Ov|L{gp;n@NXIp%pj(aS;l-AU&ky7{et;D^CxDG=3dP~&5-nk9a~pXw6wIYX*IG; zS@~Mr=p!tR*l4ytdl`FbYAL&hy^g(zcbxqVd!e?2c5=|psvjm4Oyo_hP!vwm*X`FE z&@1vgoNLO-&^Mhdm^{}Y*Wgow!KwX;-%g!0tt~GkO~8GWKFBMZer?9v8FOdl&Gw)3 zdu8gJ<~iTa-6~hk-PoWt?_jITyhUwC*ZaaOV$J*m^OaEy(+Q>rOxK#aEs!icx6slo z#cZ18ZOc7zUMa^@ic3 zb1!)v^wD=+U;DG0rn>{*%6*-?z~?OW>p*Q|K0Z_(jT;S;CgP zVQUj+MV^0s*#A(dk>FiQhM$#p=(>jNqgfnYp}aj+l%|~=n|3E}AkD3`w^3VtW;$h! zUAmxTr1Ne1%=M-jalG_ocvGy{DkCa$evH2LMOkO&CC@Ec4h6!RUD^A?4Q%R67U!PN z3wD%>tHl*fB}NLdS@Q$&C2zZ|?v?<_Ypq!|FKTAa$*yI$CfsC`MJXIqN|~I`0Bbnb_;Ek(o++6=B3EKFW#{xHS&P(XStuqe=k-q(I`zR zFL8A*U0$pv{UYbiCUOQxwke1%I^N7ni)qcNm?8Zl{ilfwExe@FF=ne}(n(=6+PvkT z#MF2n6Mmcib`4DQ|Ssnk5q&zuMZdq=R{^ zp)cgihTX=88k&971S^(@=IqIM?04U4zM`|p-bPygLeE&5rD#_;mwc8o>=d%>fTMM2 zXvBKIirDbPAQzsD?Z%`bU+6|tS1I)`O~4!>oG3I)v;!Cn=wDosKyDmYa~rH?}ri`_$Y zgFCe@SW`oP3Hc@EUZp9|s$eAK%aGP!afmB(9rIGGSKueH<&X$Pm8DMeN4Y)CtDSwZdNtY4ZxW4d$i0G}J!M>b`3hm};`yr#7y zi5ukWN6p8~H5Bu>ss~i8D~WlPf2nK~kFQwo8rV8T@?^fE!Dd%aXxrDH9Ur;e+g_U$ z>}zUVb(y);Btk~5-2@Uu0Nu6HU_ z4IB&(*~82R3P%V<{8nB+$(h{t6o1I5DM0?lgDSZ>nfY&GL%PMh8`_$x!MJO!4mhWK z8k&!phjQNGjnuxxZ`l`c8QAAW0k z_DqY5`^Q1GH!Ek>NJ|4%-`oxDF`gg3p{nG_rm7pGwkVrr5zO-|U@pu}$O_k5xDEa^ zs*Jk=8HZdznB$*t*O0zt@_CI#S4L5@j}+YrjPo~eG5qY_O${SRW5W~L3Z^!^GhKu7 z-Q0tH$2`m^wDD{UElo6^)n$b}9Ia5q=2A0kAJy^pR9#`=Ih3TiEM4us;67#dx#xM; z`(_jk(fw54$saX(OU{boxVY7YBK2;`VR!qfFV%M^X%)*j)!fSy5rvKu7pJfeE5a*Z zbMh7>5xY%1Iq@coqRk-B>|Wm?zT%!_z5Fn9J-4k_H~M|tY*8B!nbnt(#lzRFs1+k| zK&x0IpfS)UHXx~ItVgVGtWgZ8@1K;Ggs&&m6YF=zLG|Q%NZjJX z0$Kyp>ZjMY0onpH>Sxx&_4Im1J+nT$o>kv1se4kdq~1xrfj+>fq!CH+v8J&Wu?a~l zmxZC~2b5lxae#yyQqiJfmeuYP|0!g^f& zg8Hm_c0H$_Ti-I)I(9SeN8IMP9x1(IePX?1!W1-xlhP-Jn8Hm#>Us72dO^Lgo)sIE zGB{;WPSl!GZ(GB0NiNl8x`l`=AAYX9l|%Tp>+Ldm7c!Q_(UaB?KMA~~9zmeMb! zZERw!bBd@wA@)4h0eBR99BUFwip3`~wr?hTqk~C?WJWZB{Ph+L!rg77rq&-c0p7tzFk)}*jrL~K- zk9CN3jCG22j&+H3jdhE4k8zT@$w)FUnV&337AB*~qU4<9WFQ6T2c!aNK!0EWFc267 zOe4)C%_1eoQeypLsj;+J|JZ=oz}TSJ;MkDZ(Acn8dTe+Mh-Jh^#4=+eW20iDV`E}t zW8-4uW7A^OV>4niW3ytjV{>A2WAkG3V+&$gv4t^Q42(6@zQ%|#QVfcbW0V**MvK8Q zdMp%Q5?>l$7GEA8j*rAg<16AT(<9EgHj^7i%H-2CI{`dp&2jdULAC5m7e=PoZ{E7IJ@u%WX$2ZAn zn$awyc}8MJi;R{Ttuk6?w8?0j(JrHXMu&`!8J#jZXLQNvn$azzdq$6po*BI|dS~>> z=$nz0k(`l|(Jv!4BQ2wU#(<208G|xzH$L6?OyiS{&o+)rZIs$LHNL@k*d(=SYO~bl zsfnpAQd_3BN^PCmCbey9yVUln9a1}{c1rD>+9kDXYPZzxsXbDAruItho!Te0Z)$St zx}>=O`-OvXjd1a}8Mthm3+Kb_!A&6u2x7t`LL9LXv5MH4G>yb0ogyXTTH>1HTHuD@ z#^N3mX5r@I*fk6VnJN{A=^Ce9$8COswfrT$0j3=e=+FrGnRkQhH1ZJ8;|u}lT? ze)jY1PuZWdzhu{ED_Qldmh6t~g-Cl`J6vnrFdTpzhg*Of$MoPrxN=+xt_-&XcNljF zcNBL5cM^9VcLsMBcMLa!FpYo`Bm^k|BSZ+_2~CO3h|P(Ai1ox6u?uM&X)b9_!?(sF z<&(~m&XCTN-qHraL*T*iFc@OAXQnd8GiA)L*(O$u)rsAieU#lC8I3GJaL90hTM!W} z6YLf|7km^pM+c%wVnl2ZpA}yd-xasTMq*<5VC87#1mzqhtYj$HDT`Fyab0koah-78 za1(F~aUc$ddycz>yN0`tyMeojdy0F8yN!E*n?;yOC?t3Z>j=LHzX?AHEr^SVb;Ks5 zrlhW<-lT`P`J{OyE{Q{uk)))(qz|NLq%Wkmr1zxPq*tWBq@Sd3r2j}SNN-4=NuNj` zNzX~|NPkFoDR(Gc;B+_xR>NAD%y2R$GGArC%zlyGm=(`bvCOPS>~8F??Bnbf2nm4@ zB0@lx3tkA)(V^&IbO<^O<%!RW+hgspvDh?hDmEG0sLWRts_v;@sJm(UY6fZsX#h=z zW`rhFQ>3wIH)s!P-)rycp6I^l#v2Y8)W);MKDfR(B94U1!Byav;a1?5<6^i(ushfS z>*`Sz4Bw)t23p zeVcuQ-3Doev_{$?JcNPJkkNwIf>(mKf_H+?!Y{%^bP_re%|J(?$zs0PB<_M`V^j>r z*cb=HV`PkrF|dUg4wK8-%4}tx_Los*{%Ia<^;-8^8`AqawVKq|-rM}iEH3<4k?B!H8^ z@!(i+1_*%@!Py`WWP%)UIEVvBgD{v4&IRdU7GVKlAwfgfLD)%1Bc>7u5eE|o64w$} z6W0*e5&Mx;Bn_!IGz{tkO@{hIIA{Pg8=3)SLUW<%P)}$OG#?rVO@PKi>Ch->G?WBQ zgr-6n&=9CEG!%M6`AB(2`HwQ6N}x`qE~L((;;56Ucq&MpK>a|Q4A;OV@G7_#UJ6&h zVYnDx2A9HKcsZQSU^3_o2E)fFVgwjNnNyk5m{XXOnL%cVS;q7+|I2R03b5QPFY5;@ zf!&wQXCrJK+rYlXKF7YvKF|Kd{*V2W{f6BEX^-S15hRS*5G_)ONDwb#M)D8?qC!d# z84^XLNI6o9gb)`pPB1|*R`5yiRmethD2U=w0?I@wC<~p3&PF*X38kU}@kQ};jD=NT zcFcnnVg*J%#2klecVZ$NAL4(%#$4s_{ZKbvvThvx%tF&#g$s8q)B1f^K zsPIZ*oOg_GwvX(q@$rl0#aoNl`p@{Q0-FLy0w)^Id&dHgvqQlp!8O4Z!KJ}@p%bBV zp%LNqa7K7=cxbpkj)GI+if~o9THIRPI-Crw0gFKuXazB_3M>L$pc9mX8qfpgfF>{u z=79k)1R6nzKqQa}IRqU+OVAVc6aEn<5XTb75XTb%Vmfg&aT@UeaW9cbf=DD1fg~j9 zNP3cibc1w_bd#ilG*B4QL*3P=n2ph^gVL{JfAf&9>Kij%6N z=2CO0T&j@Dr<$p~;Cb*IcrH8>hTsG6Uicck8{Pn4hEKqk;PdcV_$qt`-Ux4nufWG) zHiOULF(QmgMwC&_s9;nvdNAiQXEA3pcQO|+qb%_?VwS>IXx*#p>v*fzGEZDpI;_t}rw|JdKyF?L%{C(dxrC{7p7U`}UFGG_p1 z5N8OdC#MV28JU7iMy4WG)IffiWjv%{{E681BEpipPhMYxCA*+!6$Ufu}avM2` zoJY1JcaY77OWKP6Z{r*5_S}}5;he!7Pb+_3EK)g3tI@A30tEr zQ3+avmZJ)^8dae>)Q#4l5mbiCQ7c-A=Al7UgI1!Ys2R;gm1sY)P>hPL;*MBP>?!sN z`+{x8&SB57t=N9-0JaZ%g001_V^^_V*fDH3b{N}$-NcS#pRj}2UhFY;7dwNk!#-g5 zup8JTtX%Gwm&m>H3i(jwFy&a~TqUZ^Q65rWP~KMFR9;f9R;^Oisn)8Nt0rk`G!>dk zO}_Ss_Ote@_POq#Zn9yjVVdEz;grE>G#Gyy>&=kWXDzZevF))fw=J=4wk@`;wXL>o zv#qghv^}@i+gm%fI%*shj`fcHjylI~$7aVm$8yI;$1cZG$0o-C$4&>%rEv8oiacli z7XsG;mjl~_yMmj8JAx-emqWU8TY0bW)bNz>gz(Jp^ziQRt1vObiqzrO<2K+PgWJK4 z;6d;acp1D1-Up9@JHT7uL+}iE6Wjn^0*`@5z&qdt@Bz3Jq!LO9A;Ka8jyQujpSX~i zMO;9fLp(`5O*~3GOl(b}l1!vZ(p}Oz=n%9Dx&WPqc0ntkt?pt%MFjF^Yp)L|sH(N?k&|K;1wsrIKL+48k}V58s1t!7=zL{0fezKZoDI zci2r@%!SMa%-hT>%pcjkS!t}kEDLK<1ONNYYR(?U z7O*|+0=Ac3#CEfN>_T=2PH#>UCympFGmx{8Bj<=X2xm5D1_$GaIk_A@XBu)3>B39o z{YBm(jd<^oe@HXlC*%k60eOqmBVUpByvDpKf?0yKg8hOgf;8bUVUlowaJaCqaG)?l zm@51sjGY$&%5Mo|13aILQFXSjiws zx@453jbw;qt$dGst9+e&qkO%5mwbbKnH*65Z`hw&`C9o%`B=GAbw;&UwMBJabx5^U z)k8B(18TA~IL!jhTFo-ea?KLWQjK2g(z>-C?J4aE?NRM`P6aO z@xqbdeC}xMOmtpx+;n_$G;-c^TytD@JaAlfJal|$nDgOX2A9cYbS?CVJ@&$Dh0VQ< zz46{!-y)y7SXI2O_`Ls||6|}q;7Q<3;CbL(;J?7Lz^lNS;DzAf;L+fM(EQN(kfR(Q zUJ%X-FAO7*oXFY8yU3SFqv)#W-RQ$;xT2zhhTDp3g>Q}ThyMWf$EV?cf`jl~@J;a( z@qO_<@E!2&@xQ@1d?)-s{3kFO-xA*)-wpo-d=C!8560JnL-2`sGhrEFIbjLmJmDPS z1mP@!LSzylB7>Ms989v3>PR)Dhoo0fJ8~oP81i4}IrJH7O8yOXBEN>-L64zC@_XnF z^a2_{ZbtqGwI#<>6R1b1*QjTyN2!UlwlEc@!F0Giy&Jt3y)V5dy(9fCoJ8+OA4E^1 zx1uM~#S9vA6Jsl52V)y!17ka5H)9tgfk|MJnRwNu60Von*y$0^{1IdhONNON8c z!SN>ZhV#h0>AcxIkT;Jvo`>g6;tl2v;SJ<1Z3g!ta1cwF31=EG|grIPSkSNR& z&Js=&{uFjXJEL724!C1Qb49a7B+)q0bP*&PB-$$KD#{WOM3Y2cQM_oXXrgF_Xs~FO zsH3QxXqw0?E)?$+_rnHY1F`;CD)te}m6S_761PMs(Mxm^SW+s%B!v>Ggf3A_awI;9 zS7MM9G-P*`NzTY`$)Cw@%TLKK%Eu`U%D>8A%74nA${$LX>YXZ4{a*D*^+xre;rE=a zVQT0aSaU#gTys*hMYC12U$alMTXRISOH-uXq&=fOuf3ohr0c6o(hbzT)&cqf`my@n z`jPrE`ZWD8eUiSfeuSQEz#BLQwt-?`8L|yj1Kse<@YL|q@X+wW@Y-<8kZ<%DZyTGM z+M5c^$(F8`mX;QlBuk2=lck-dv!#cnm!-9(yQQaPyp?S&vmUn|wl=kOvvsz0w{^8m zvQ4plvNg7Uv^BB6YnX;Nwg0qzu{F2~5zcYW(ax^Usm=`NK<5l6>h{5;xTx-dE0s0cw2cpds}$BdOJ37=CJLD`!!n`my%m`

uf^l=WV{Bi#_RAP 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¦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 bu?U9^iiAeShza=5%v2Gi|K0vS!% literal 0 HcmV?d00001 From 35089a48e44b302a584e407fa8d7362bcc286c66 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Fri, 26 Jul 2024 14:37:51 -0400 Subject: [PATCH 055/234] Implement all of emu64, mostly matching --- include/dolphin/mtx.h | 47 +- include/dolphin/os/OSFastCast.h | 16 + include/libforest/emu64/emu64.hpp | 1193 +++-- include/libforest/emu64/emu64_wrapper.h | 2 + include/libforest/emu64/texture_cache.h | 29 +- include/libforest/gbi_extensions.h | 268 +- include/va_args.h | 8 +- src/static/libforest/emu64/emu64.cc | 4367 ++++++++++++++++++- src/static/libforest/emu64/emu64_print.cpp | 485 ++ src/static/libforest/emu64/emu64_util.cpp | 105 - src/static/libforest/emu64/emu64_utility.cc | 181 + 11 files changed, 5951 insertions(+), 750 deletions(-) create mode 100644 src/static/libforest/emu64/emu64_print.cpp delete mode 100644 src/static/libforest/emu64/emu64_util.cpp create mode 100644 src/static/libforest/emu64/emu64_utility.cc diff --git a/include/dolphin/mtx.h b/include/dolphin/mtx.h index 30f8c18a..b18ae3b2 100644 --- a/include/dolphin/mtx.h +++ b/include/dolphin/mtx.h @@ -7,13 +7,15 @@ extern "C" { #endif +#define MTX_PS + /////////////// TYPE DEFINES /////////////// -#define MTXDegToRad(a) ((a)*0.01745329252f) +#define MTXDegToRad(a) ((a) * 0.01745329252f) typedef struct { - f32 x; - f32 y; - f32 z; + f32 x; + f32 y; + f32 z; } Vec; typedef f32 Mtx34[3][4]; @@ -25,7 +27,7 @@ typedef f32 PSQuaternion[4]; typedef Mtx34 GC_Mtx; // TODO: fix this typedef struct Quaternion { - f32 x, y, z, w; + f32 x, y, z, w; } Quaternion; //////////////////////////////////////////// @@ -50,6 +52,9 @@ void PSMTXScale(GC_Mtx mtx, f32 xS, f32 yS, f32 zS); void PSMTXScaleApply(const GC_Mtx src, GC_Mtx dest, f32 xS, f32 yS, f32 zS); void PSMTXQuat(GC_Mtx mtx, const PSQuaternion* quat); +void PSVECNormalize(const Vec* src, Vec* dst); +void PSMTXMultVec(const GC_Mtx m, const Vec* src, Vec* dst); + //////////////////////////////////////////// //// PAIRED SINGLE MATRIX VEC FUNCTIONS //// @@ -72,15 +77,37 @@ void C_MTXLightOrtho(GC_Mtx mtx, f32 t, f32 b, f32 l, f32 r, f32 scaleS, f32 sca //////////////////////////////////////////// ////////////// MATRIX INLINES ////////////// -static inline void MTXSetPosition(GC_Mtx mtx, const Vec* pos) -{ - mtx[0][3] = pos->x; - mtx[1][3] = pos->y; - mtx[2][3] = pos->z; +static inline void MTXSetPosition(GC_Mtx mtx, const Vec* pos) { + mtx[0][3] = pos->x; + mtx[1][3] = pos->y; + mtx[2][3] = pos->z; } //////////////////////////////////////////// +#ifdef MTX_PS +#define MTXIdentity PSMTXIdentity +#define MTXCopy PSMTXCopy +#define MTXConcat PSMTXConcat +#define MTXConcatArray PSMTXConcatArray +#define MTXTranspose PSMTXTranspose +#define MTXInverse PSMTXInverse +#define MTXInvXpose PSMTXInvXpose + +#define MTXScale PSMTXScale +#define MTXTrans PSMTXTrans + +#define MTXMultVec PSMTXMultVec +#else +#define MTXIdentity C_MTXIdentity +#define MTXCopy C_MTXCopy +#define MTXConcat C_MTXConcat +#define MTXConcatArray C_MTXConcatArray +#define MTXTranspose C_MTXTranspose +#define MTXInverse C_MTXInverse +#define MTXInvXpose C_MTXInvXpose +#endif + #ifdef __cplusplus } #endif diff --git a/include/dolphin/os/OSFastCast.h b/include/dolphin/os/OSFastCast.h index d94587ce..8b573249 100644 --- a/include/dolphin/os/OSFastCast.h +++ b/include/dolphin/os/OSFastCast.h @@ -99,6 +99,22 @@ static inline void OSf32tos8(f32* f, s8* out) { *out = __OSf32tos8(*f); } +static inline float __OSs16tof32(register s16* s) { + register float f; + +#ifdef __MWERKS__ // clang-format off + asm { + psq_l f, 0(s), 1, 5 + } +#endif // clang-format on + + return f; +} + +static inline void OSs16tof32(register s16* s, volatile register f32* f) { + *f = __OSs16tof32(s); +} + ////////////////////////////////// #ifdef __cplusplus diff --git a/include/libforest/emu64/emu64.hpp b/include/libforest/emu64/emu64.hpp index 90f33886..a7d1fdf2 100644 --- a/include/libforest/emu64/emu64.hpp +++ b/include/libforest/emu64/emu64.hpp @@ -1,5 +1,5 @@ -#ifndef EMU64_H -#define EMU64_H +#ifndef EMU64_HPP +#define EMU64_HPP #include "types.h" #include "va_args.h" @@ -10,6 +10,8 @@ #include "dolphin/gx.h" #include "dolphin/mtx.h" #include "sys_ucode.h" +#include "libforest/emu64/emu64_wrapper.h" +#include "sys_ucode.h" #ifdef EMU64_DEBUG #define AFLAGS_MAX 100 @@ -35,7 +37,6 @@ #define EMU64_WARN_TIME 600 - #define EMU64_DIRTY_FLAG_PRIM_COLOR 0 #define EMU64_DIRTY_FLAG_ENV_COLOR 1 #define EMU64_DIRTY_FLAG_BLEND_COLOR 2 @@ -70,491 +71,857 @@ #define EMU64_DIRTY_FLAG_TEX_MTX 31 #define NUM_DIRTY_FLAGS 32 +#define AFLAGS_RUN_MODE 0 +#define AFLAGS_SETUP_ALL_TEVSTAGES 1 +#define AFLAGS_DECAL_OFFSET_MODE 2 /* 0 = default, 1 = <, 2 = >=, n = off */ +#define AFLAGS_SET_DIRTY_FLAGS 3 +#define AFLAGS_SKIP_ALPHA_COMPARE 4 +#define AFLAGS_SKIP_TEXTURE_CONV 5 +#define AFLAGS_PRINT_COMMAND_INFO 6 +#define AFLAGS_FORCE_ZMODE_COMPARE_FUNC_LEQUAL 7 +#define AFLAGS_FORCE_PIPE_SYNC 8 +#define AFLAGS_SKIP_TILE_SETUP 9 +#define AFLAGS_LIGHT_DISABLE_DIFFUSION 10 +#define AFLAGS_PROJECTION_CALC_W 11 +#ifdef ANIMAL_FOREST_PLUS +#define AFLAGS_FORCE_TEV_CYCLEFLAGS 11 +#endif +#define AFLAGS_COMBINE_AUTO 12 +#define AFLAGS_DISABLED_TEXOBJS 13 +#ifdef ANIMAL_FOREST_PLUS +#define AFLAGS_DECAL_OFFSETZ_VALUE 14 +#define AFLAGS_SKIP_PROJECTION_TRANSFORM 15 +#else +#define AFLAGS_SKIP_W_CALCULATION 14 +#define AFLAGS_USE_GUVECMULT 15 +#endif +#define AFLAGS_SKIP_TRI2_COUNT_VERTS 16 +#define AFLAGS_FORCE_VTX_FLAG_COPY 17 +#define ALFAGS_TEV_ALPHA_KONST 18 +#define AFLAGS_MIN_POLYGONS 19 +#define AFLAGS_MAX_POLYGONS 20 +#define AFLAGS_SET_CULLMODE 21 +#define AFLAGS_WIREFRAME 22 /* Draws wireframe over polygons */ +#define AFLAGS_SKIP_COMBINE_TEV 27 +#define AFLAGS_FORCE_TEV_COMBINE_MODE 28 /* 1 = force shade, 2 = force d1 = ENV, Ad1 = ONE */ +#define AFLAGS_SKIP_MTX_NORMALIZATION 23 +#define AFLAGS_COPY_POSITION_MTX 25 +#define AFLAGS_SKIP_COMBINE_TEV 27 +#define AFLAGS_FORCE_TEV_COMBINE_MODE 28 /* 1 = force shade, 2 = force d1 = ENV, Ad1 = ONE */ +#define AFLAGS_JUTREPORT_SEGMENT_STATS 29 +#define AFLAGS_VTX_NORMAL_MODIFY_TYPE 37 +#define AFLAGS_OVERRIDE_TEXEDGEALPHA 39 +#define AFLAGS_DO_TEXTURE_LINEAR_CONVERT 48 +#define AFLAGS_FORCE_WRAPMODE_REPEAT 49 +#define AFLAGS_SKIP_DRAW_RECTANGLE 50 +#define AFLAGS_FORCE_G_CYC_COPY 51 +#define AFLAGS_TEX_GEN_LOD_MODE 52 +#define AFLAGS_DITHERMODE 59 +#define AFLAGS_TEXMTX_LEFT_ADJUST 64 +#define AFLAGS_TEXMTX_TOP_ADJUST 65 +#define AFLAGS_LIGHT_FORCE_ATTN_MODE 72 +#define AFLAGS_LIGHT_POSITION_MULTIPLIER 73 +#define AFLAGS_LIGHT_MOVE_TO_MODEL_SPACE 74 +#define AFLAGS_LIGHT_OVERRIDE_ATTN_K0 75 +#define AFLAGS_LIGHT_OVERRIDE_ATTN_K1 76 +#define AFLAGS_LIGHT_OVERRIDE_ATTN_K2 77 + #define EMU64_TLUT_IA16 0x0000 #define EMU64_TLUT_RGBA5551 0x8000 +#define SOFTSPRITE_MTX_SEG 0x07 +#define ANIME_1_TXT_SEG 0x08 +#define ANIME_2_TXT_SEG 0x09 +#define ANIME_3_TXT_SEG 0x0A +#define ANIME_4_TXT_SEG 0x0B +#define ANIME_5_TXT_SEG 0x0C +#define ANIME_6_TXT_SEG 0x0D + +#define SEGMENT_SHIFT 24 + +#define SEG_2_SEGADDR(seg) (seg << SEGMENT_SHIFT) +#define SEG_EQUALS(seg_addr, seg) (seg_addr == SEG_2_SEGADDR(seg)) + /* TODO: figure out where this actually belongs */ namespace std { - typedef struct __va_list_struct __tag_va_List; +typedef struct __va_list_struct __tag_va_List; } +float fastcast_float(register unsigned char* s) { + register float f; + +#ifdef __MWERKS__ // clang-format off + asm { + psq_l f, 0(s), 1, 2 + } +#endif // clang-format on + + return f; +} + +float fastcast_float(register unsigned short* s) { + register float f; + +#ifdef __MWERKS__ // clang-format off + asm { + psq_l f, 0(s), 1, 3 + } +#endif // clang-format on + + return f; +} + +float fastcast_float(register signed char* s) { + register float f; + +#ifdef __MWERKS__ // clang-format off + asm { + psq_l f, 0(s), 1, 4 + } +#endif // clang-format on + + return f; +} + +float fastcast_float(register short* s) { + register float f; + +#ifdef __MWERKS__ // clang-format off + asm { + psq_l f, 0(s), 1, 5 + } +#endif // clang-format on + + return f; +} + +#define number(n) ARRAY_COUNT(n) + +void guMtxNormalize(GC_Mtx mtx); +void N64Mtx_to_DOLMtx(const Mtx* n64, MtxP gc); + typedef union { - GXColor color; - struct { - u8 r; - u8 g; - u8 b; - u8 a; - }; - u32 raw; + GXColor color; + struct { + u8 r; + u8 g; + u8 b; + u8 a; + } rgba; + u32 raw; } EmuColor; typedef struct { - Vec position; - union { - struct { - u16 _pad0:2; - u16 cull_z_greater:1; - u16 cull_z_lesser:1; - u16 cull_y_greater:1; - u16 cull_y_lesser:1; - u16 cull_x_greater:1; - u16 cull_x_lesser:1; - u16 _pad1:7; - u16 nonshared:1; + Vec position; + union { + struct { + u16 _pad0 : 2; + u16 cull_z_greater : 1; + u16 cull_z_lesser : 1; + u16 cull_y_greater : 1; + u16 cull_y_lesser : 1; + u16 cull_x_greater : 1; + u16 cull_x_lesser : 1; + u16 _pad1 : 7; + u16 nonshared : 1; + }; + u16 flag; }; - u16 flag; - }; - struct { - s16 s, t; - } tex_coords; - short pad; - Vec normal; - EmuColor color; + struct { + s16 s, t; + } tex_coords; + short pad; + Vec normal; + EmuColor color; } Vertex; typedef struct { - EmuColor color; - Vec position; + EmuColor color; + Vec position; - u8 unk[12]; + u8 unk[12]; - struct { - f32 kc, k1, kq; /*kc = k0, kq = k2 */ - } attenuation; + struct { + f32 kc, k1, kq; /*kc = k0, kq = k2 */ + } attenuation; } EmuLight; typedef struct { - void* img_addr; /* Texture RAM address */ - u16 width; /* Texture width */ - u16 height; /* Texture height */ - u8 format; /* Texture format */ - u8 size; /* Size in bpp */ - u8 tlut_name; /* Palette/TLUT idx */ - u8 pad; + void* img_addr; /* Texture RAM address */ + u16 width; /* Texture width */ + u16 height; /* Texture height */ + u8 format; /* Texture format */ + u8 size; /* Size in bpp */ + u8 tlut_name; /* Palette/TLUT idx */ + u8 pad; } emu64_texture_info; -static inline void get_blk_wd_ht(unsigned int siz, unsigned int* blk_wd, unsigned int* blk_ht) { - static u8 blk_tbl[4][2] = { - { 8, 8 }, // G_IM_SIZ_4b - { 8, 4 }, // G_IM_SIZ_8b - { 4, 4 }, // G_IM_SIZ_16b - { 4, 4 } // G_IM_SIZ_32b - }; +typedef union GXTexFmts { + GXTexFmt texfmt; + GXCITexFmt citexfmt; + u32 raw; +} GXTexFmts; - *blk_wd = blk_tbl[siz][0]; - *blk_ht = blk_tbl[siz][1]; +static inline void get_blk_wd_ht(unsigned int siz, unsigned int* blk_wd, unsigned int* blk_ht) { + static u8 blk_tbl[4][2] = { + { 8, 8 }, // G_IM_SIZ_4b + { 8, 4 }, // G_IM_SIZ_8b + { 4, 4 }, // G_IM_SIZ_16b + { 4, 4 } // G_IM_SIZ_32b + }; + + *blk_wd = blk_tbl[siz][0]; + *blk_ht = blk_tbl[siz][1]; } extern void get_dol_wd_ht(unsigned int siz, unsigned int in_wd, unsigned int in_ht, unsigned int* wd, unsigned int* ht); static inline unsigned int rgba5551_to_rgb5a3(unsigned int rgba5551) { - if ((rgba5551 & 1)) { - return 0x8000 | (rgba5551 >> 1); // no transparency so simply swap - } - else { - return ((rgba5551 >> 3) & 0xF0) | ((rgba5551 >> 4) & ~0xFF) | ((rgba5551 >> 2) & 0x0F); - } + unsigned int rgb5a3; + + switch (rgba5551 & 1) { + default: + rgb5a3 = 0x8000 | (rgba5551 >> 1); // no transparency so simply swap + break; + case 0: + rgb5a3 = ((rgba5551 >> 4) & ~0xFF) | ((rgba5551 >> 3) & 0xF0) | ((rgba5551 >> 2) & 0x0F); + break; + } + + return rgb5a3; } static inline unsigned int get_dol_tex_siz(unsigned int siz, unsigned int in_wd, unsigned int in_ht) { - unsigned int wd; - unsigned int ht; + unsigned int wd; + unsigned int ht; - get_dol_wd_ht(siz, in_wd, in_ht, &wd, &ht); - return ((wd * ht) << siz) / 2; + get_dol_wd_ht(siz, in_wd, in_ht, &wd, &ht); + return ((wd * ht) << siz) / 2; } -static inline unsigned int get_dol_tlut_size(unsigned int count) { - return ALIGN_NEXT(count * sizeof(u16), 32); +static inline unsigned int get_dol_tlut_siz(unsigned int count) { + unsigned int siz = count * sizeof(u16); + return ALIGN_NEXT(siz, 32); } -#define AFLAGS_COMBINE_AUTO 12 -#define ALFAGS_TEV_ALPHA_KONST 18 -#define AFLAGS_2TRIS 22 /* Draws the current polygon as two triangles */ -#define AFLAGS_SKIP_COMBINE_TEV 27 -#define AFLAGS_FORCE_TEV_COMBINE_MODE 28 /* 1 = force shade, 2 = force d1 = ENV, Ad1 = ONE */ - class aflags_c { -public: - #ifndef EMU64_DEBUG - - int getMaxArray() { return AFLAGS_MAX; } - void set(u32 idx, u8 val) { this->flags[idx] = val; } /* @fabricated */ - int operator[](u32 idx) { return this->flags[idx]; } /* @fabricated */ + public: +#ifdef AFLAGS_DEBUG + static u32 getMaxArray() { + return AFLAGS_MAX; + } + void set(unsigned int idx, u8 val) { + this->flags[idx] = val; + } /* @fabricated */ + u8 operator[](unsigned int idx) { + return this->flags[idx]; + } /* @fabricated */ - #else +#else + static u32 getMaxArray() { + return AFLAGS_MAX; + } + void set(unsigned int idx, u8 val) { + } + u8 operator[](unsigned int idx) { + return 0; + } +#endif - int getMaxArray() { return AFLAGS_MAX; } - void set(u32 idx, u8 val) { } - int operator[](u32 idx) { return 0; } - - #endif - -private: - int flags[AFLAGS_MAX]; + private: + int flags[AFLAGS_MAX]; }; class Texture { -public: - /* @weak */ - Texture(void* img_p, u16 w, u16 h, u8 fmt, u8 bpp) { - this->img_p = img_p; - this->width = w; - this->height = h; - this->n64_bpp = bpp; - this->n64_fmt = fmt; - this->blockX_size = EMU64_TEX_BLOCK_SIZE_X; - this->blockY_size = EMU64_TEX_BLOCK_SIZE_Y; - } - - /* @??? (maybe not weak?) */ - ~Texture() { }; - - /* @weak */ - u32 getOffset(int x, int y) { - const int size_x = sizeof(u16) * EMU64_TEX_BLOCK_SIZE_X; - const int size_y = sizeof(u16) * EMU64_TEX_BLOCK_SIZE_Y; - - return ((((u32)x / 8) + ((u32)(((u32)y / 8) * this->width) / 8)) * (size_x * size_y)) + - ((u32)y & 7) * size_x + - ((u32)x & 7); - } - - /* @weak */ - u32 getTexel(int block_x, int block_y) { - int x = (1 << this->blockX_size) - 1; - int y = (1 << this->blockY_size) - 1; - - block_x &= x; - block_y &= y; - - u32 ofs = this->getOffset(block_x, block_y); - - switch (this->n64_bpp) { - case G_IM_SIZ_4b: - { - u8* img_p = ((u8*)this->img_p) + ofs / 2; - if ((block_x & 1) == 0) { - return *img_p >> 4; - } - else { - return *img_p & 0xF; - } - } - - case G_IM_SIZ_8b: - { - return ((u8*)this->img_p)[ofs]; - } - - case G_IM_SIZ_16b: - { - return ((u16*)this->img_p)[ofs]; - } - - default: - { - return ((u32*)this->img_p)[ofs]; - } + public: + /* @weak */ + Texture(void* img_p, u16 w, u16 h, u8 fmt, u8 bpp) { + this->img_p = img_p; + this->width = w; + this->height = h; + this->n64_bpp = bpp; + this->n64_fmt = fmt; + this->blockX_size = EMU64_TEX_BLOCK_SIZE_X; + this->blockY_size = EMU64_TEX_BLOCK_SIZE_Y; } - } - /* @weak */ - void putTexel(int block_x, int block_y, u32 texel) { - int x = (1 << this->blockX_size) - 1; - int y = (1 << this->blockY_size) - 1; - - block_x &= x; - block_y &= y; + /* @??? (maybe not weak?) */ + ~Texture() {}; - u32 ofs = this->getOffset(block_x, block_y); + /* @weak */ + u32 getOffset(int x, int y) { + const int size_x = sizeof(u16) * EMU64_TEX_BLOCK_SIZE_X; + const int size_y = sizeof(u16) * EMU64_TEX_BLOCK_SIZE_Y; - switch (this->n64_bpp) { - case G_IM_SIZ_4b: - { - u8* img_p = ((u8*)this->img_p) + ofs / 2; - if ((block_x & 1) == 0) { - *img_p = (*img_p & 0x0F) | (texel << 4); - } - else { - *img_p = (*img_p & 0xF0) | (texel & 0xF); - } - } - - case G_IM_SIZ_8b: - { - ((u8*)this->img_p)[ofs] = texel; - } - - case G_IM_SIZ_16b: - { - ((u16*)this->img_p)[ofs] = texel; - } - - case G_IM_SIZ_32b: - { - ((u32*)this->img_p)[ofs] = texel; - } + return ((((u32)x / 8) + ((u32)(((u32)y / 8) * this->width) / 8)) * (size_x * size_y)) + ((u32)y & 7) * size_x + + ((u32)x & 7); } - } - /* Member variables */ - void* img_p; - u16 width; - u16 height; - u8 blockX_size; - u8 blockY_size; - u8 n64_fmt; - u8 n64_bpp; + /* @weak */ + u32 getTexel(int block_x, int block_y) { + int x = (1 << this->blockX_size) - 1; + int y = (1 << this->blockY_size) - 1; + + block_x &= x; + block_y &= y; + + u32 ofs = this->getOffset(block_x, block_y); + + switch (this->n64_bpp) { + case G_IM_SIZ_4b: { + u8* img_p = ((u8*)this->img_p) + ofs / 2; + if ((block_x & 1) == 0) { + return *img_p >> 4; + } else { + return *img_p & 0xF; + } + } + + case G_IM_SIZ_8b: { + return ((u8*)this->img_p)[ofs]; + } + + case G_IM_SIZ_16b: { + return ((u16*)this->img_p)[ofs]; + } + + default: { + return ((u32*)this->img_p)[ofs]; + } + } + } + + /* @weak */ + void putTexel(int block_x, int block_y, u32 texel) { + int x = (1 << this->blockX_size) - 1; + int y = (1 << this->blockY_size) - 1; + + block_x &= x; + block_y &= y; + + u32 ofs = this->getOffset(block_x, block_y); + + switch (this->n64_bpp) { + case G_IM_SIZ_4b: { + u8* img_p = ((u8*)this->img_p) + ofs / 2; + if ((block_x & 1) == 0) { + *img_p = (*img_p & 0x0F) | (texel << 4); + } else { + *img_p = (*img_p & 0xF0) | (texel & 0xF); + } + } + + case G_IM_SIZ_8b: { + ((u8*)this->img_p)[ofs] = texel; + } + + case G_IM_SIZ_16b: { + ((u16*)this->img_p)[ofs] = texel; + } + + case G_IM_SIZ_32b: { + ((u32*)this->img_p)[ofs] = texel; + } + } + } + + /* Member variables */ + void* img_p; + u16 width; + u16 height; + u8 blockX_size; + u8 blockY_size; + u8 n64_fmt; + u8 n64_bpp; }; +#define EMU64_PRINTF_ENABLED_FLAG (1 << 0) #define EMU64_PRINTF_FLAG (1 << 1) #define EMU64_PRINTF1_FLAG (1 << 2) #define EMU64_PRINTF2_FLAG (1 << 3) #define EMU64_PRINTF3_FLAG (1 << 4) class emu64_print { -public: - void Printf(const char* fmt, ...) { - va_list list; - - if ((this->print_flags & EMU64_PRINTF_FLAG)) { - va_start(list, fmt); - this->Vprintf(fmt, list); - va_end(list); + public: + void Printf(const char* fmt, ...) { + va_list list; + + if ((this->print_flags & EMU64_PRINTF_FLAG)) { + va_start(list, fmt); + this->Vprintf(fmt, list); + va_end(list); + } } - } - void Printf0(const char* fmt, ...) { - va_list list; + void Printf0(const char* fmt, ...) { + va_list list; - va_start(list, fmt); - this->Vprintf(fmt, list); - va_end(list); - } - - void Printf1(const char* fmt, ...) { - va_list list; - - if ((this->print_flags & EMU64_PRINTF1_FLAG)) { - va_start(list, fmt); - this->Vprintf(fmt, list); - va_end(list); + va_start(list, fmt); + this->Vprintf(fmt, list); + va_end(list); } - } - void Printf2(const char* fmt, ...) { - va_list list; - - if ((this->print_flags & EMU64_PRINTF2_FLAG)) { - va_start(list, fmt); - this->Vprintf(fmt, list); - va_end(list); + void Printf1(const char* fmt, ...) { + va_list list; + + if ((this->print_flags & EMU64_PRINTF1_FLAG)) { + va_start(list, fmt); + this->Vprintf(fmt, list); + va_end(list); + } } - } - void Printf3(const char* fmt, ...) { - va_list list; - - if ((this->print_flags & EMU64_PRINTF3_FLAG)) { - va_start(list, fmt); - this->Vprintf(fmt, list); - va_end(list); + void Printf2(const char* fmt, ...) { + va_list list; + + if ((this->print_flags & EMU64_PRINTF2_FLAG)) { + va_start(list, fmt); + this->Vprintf(fmt, list); + va_end(list); + } } - } -protected: - u8 print_flags; + void Printf3(const char* fmt, ...) { + va_list list; -private: - void Vprintf(const char* fmt, std::__tag_va_List* va_list) { vprintf(fmt, va_list); } + if ((this->print_flags & EMU64_PRINTF3_FLAG)) { + va_start(list, fmt); + this->Vprintf(fmt, list); + va_end(list); + } + } + + protected: + u8 print_flags; + + private: + void Vprintf(const char* fmt, std::__tag_va_List* va_list) { + vprintf(fmt, va_list); + } }; -#define EMU64_ASSERTLINE(cond, line) \ - if (!cond) { \ - this->panic(#cond, __FILE__, line); \ - } +#define EMU64_ASSERTLINE(cond, line) \ + if (!cond) { \ + this->panic(#cond, __FILE__, line); \ + } #define EMU64_ASSERT(cond) EMU64_PANICLINE(cond, __LINE__) -class emu64 : public emu64_print { -public: - void emu64_init(); - void printInfo(); - void panic(char* fmt, char* file, int line); - - void emu64_change_ucode(void* ucode_p); - void texconv_tile(u8* addr, u8* converted_addr, unsigned int wd, unsigned int fmt, unsigned int siz, unsigned int start_wd, unsigned int start_ht, unsigned int end_wd, unsigned int end_ht, unsigned int line_siz); - unsigned int tmem_swap(unsigned int ofs, unsigned int blk_siz) { return ofs ^ ((ofs / blk_siz) & 4); } - void tlutconv_rgba5551(u16* rgba5551_p, u16* rgb5a3_p, unsigned int count); - void tlutconv_ia16(u16* src_ia16_p, u16* dst_ia16_p, unsigned int count); - u8* texconv_tile_new(u8* addr, unsigned int wd, unsigned int fmt, unsigned int siz, unsigned int start_wd, unsigned int start_ht, unsigned int end_wd, unsigned int end_ht, unsigned int line_siz); - u16* tlutconv_new(u16* tlut, unsigned int tlut_fmt, unsigned int count); - void tlutconv(u16* src_tlut, u16* dst_tlut, unsigned int count, unsigned int tlut_fmt); - int replace_combine_to_tev(Gfx* g); - int combine_auto(); - int combine_tev(); - void combine_manual(); - const char* combine_name(u32 param, u32 type); - const char* combine_alpha(int param, int type); - void print_combine(u64 combine); +class emu64_print { + public: + void Printf(const char* fmt, ...) { + va_list list; - /* N64 texture format[N64 bit size] -> dol texture format */ - static u16 fmtxtbl[8][4]; - static char* warningString[EMU64_WARNING_COUNT]; - static int warningTime[EMU64_WARNING_COUNT]; - static bool displayWarning; + if ((this->print_flags & EMU64_PRINTF_FLAG)) { + va_start(list, fmt); + this->Vprintf(fmt, list); + va_end(list); + } + } -private: - /* 0x0000 */ // u8 emu64_print::print_flags; - /* 0x0001 */ u8 print_commands; - /* 0x0002 */ bool disable_polygons; - /* 0x0004 */ u32 err_count; - /* 0x0008 */ u32 cmds_processed; /* ??? */ - /* 0x000C */ u32 total_vertices; - /* 0x0010 */ u32 vtx_load_calls; - /* 0x0014 */ u32 triangles; - /* 0x0018 */ u32 double_triangles; - /* 0x001C */ u32 quads; - /* 0x0020 */ u32 lines; - /* 0x0024 */ u32 load_ucode_calls; - /* 0x0028 */ u32 num_unknown_cmds; - /* 0x002C */ u32 num_unknown_ucodes; - /* 0x0030 */ int polygons; - /* 0x0034 */ u32 cullDL_calls; - /* 0x0038 */ u32 cullDL_outside_obj_count; - /* 0x003C */ u32 cullDL_visible_obj_count; - /* 0x0040 */ Gfx* gfx_p; - /* 0x0048 */ Gfx gfx; - /* 0x0050 */ u8 gfx_cmd; - /* 0x0054 */ void* work_ptr; - /* 0x0058 */ int end_dl; - /* 0x005C */ s8 ucode_len; - /* 0x0060 */ ucode_info* ucode_info; - /* 0x0064 */ int ucode_type; // maybe? - /* 0x0068 */ int _0068; /* ??? */ - /* 0x006C */ void* segments[NUM_SEGMENTS]; - /* 0x00AC */ Gfx* DL_stack[DL_MAX_STACK_LEVEL]; - /* 0x00F4 */ s8 DL_stack_level; - /* 0x00F8 */ u32 othermode_high; - /* 0x00FC */ u32 othermode_low; - /* 0x0100 */ u32 geometry_mode; - /* 0x0104 */ u32 _0104; - /* 0x0108 */ Gfx combine; - /* 0x0110 */ emu64_texture_info texture_info[NUM_TILES]; - /* 0x0170 */ Gsetimg2 setimg2_cmds[NUM_TILES]; - /* 0x01B0 */ void* tlut_addresses[NUM_TLUTS]; - /* 0x01F0 */ GXTexObj tex_objs[NUM_TILES]; - /* 0x02F0 */ GXTlutObj tlut_objs[NUM_TLUTS]; - /* 0x03B0 */ bool use_dolphin_settile[NUM_TILES]; - /* 0x03B8 */ Gsettile settile_cmds[NUM_TILES]; - /* 0x03F8 */ Gsettile_dolphin settile_dolphin_cmds[NUM_TILES]; - /* 0x0438 */ Gsettilesize_dolphin settilesize_dolphin_cmds[NUM_TILES]; - /* 0x0478 */ Gsetimg_new now_setimg; - /* 0x0480 */ u8 tex_edge_alpha; + void Printf0(const char* fmt, ...) { + va_list list; - /* 0x0484 */ union { - u32 primdepth; - struct { - u16 primdepth_z; /* Z value */ - u16 primdepth_dz; /* Delta Z */ - }; - }; + va_start(list, fmt); + this->Vprintf(fmt, list); + va_end(list); + } - /* 0x0488 */ EmuColor primitive_color; /* GX_TEVREG1 */ - /* 0x048C */ EmuColor environment_color; /* GX_TEVREG2 */ - /* 0x0490 */ EmuColor blend_color; - /* 0x0494 */ EmuColor fog_color; - /* 0x0498 */ s16 fog_zmult; - /* 0x049A */ s16 fog_zoffset; - /* 0x049C */ EmuColor fill_color; - /* 0x04A0 */ EmuColor fill_tev_color; /* GX_TEVREG0 */ - /* 0x04A4 */ bool dirty_flags[NUM_DIRTY_FLAGS]; - /* 0x04C4 */ GC_Mtx original_projection_mtx; - /* 0x04F4 */ GC_Mtx position_mtx; - /* 0x0524 */ GC_Mtx model_view_mtx_stack[MTX_STACK_SIZE]; - /* 0x0704 */ GC_Mtx position_mtx_stack[MTX_STACK_SIZE]; - /* 0x08E4 */ Mtx44 projection_mtx; - /* 0x0924 */ struct { - struct { - s8 x, y, z; - } x; - struct { - s8 x, y, z; - } y; - } lookAt; - /* 0x092C */ f32 near; /* Near clipping plane */ - /* 0x0930 */ f32 far; /* Far clipping plane */ - /* 0x0934 */ GC_Mtx model_view_mtx; - /* 0x0964 */ GC_Mtx _0964; /* UNCONFIRMED TYPE */ - /* 0x0994 */ int mtx_stack_size; - /* 0x0998 */ Gtexture_internal texture_gfx; - /* 0x09A0 */ f32 texture_scale_s; /* x-scale */ - /* 0x09A4 */ f32 texture_scale_t; /* y-scale */ - /* 0x09A8 */ Mtx44 ortho_mtx; - /* 0x09E8 */ GXProjectionType projection_type; - /* 0x09EC */ GC_Mtx perspective_mtx; - /* 0x0A1C */ u32 _0A1C; - /* 0x0A20 */ u32 rdpHalf_1; - /* 0x0A24 */ EmuLight lights[NUM_LIGHTS]; - /* 0x0B64 */ u8 num_lights; - /* 0x0B68 */ u32 lookatx_cnt; - /* 0x0B6C */ u32 lookaty_cnt; - /* 0x0B70 */ u32 _0B70; - /* 0x0B74 */ u32 texconv_cnt; - /* 0x0B78 */ u32 vertex_cnt; - /* 0x0B7C */ u32 texconv_time; - /* 0x0B80 */ u32 rsprdp_time; - /* 0x0B84 */ u32 combine_time; - /* 0x0B88 */ u32 spvertex_time; - /* 0x0B8C */ u32 setup_time; - /* 0x0B90 */ u32 loadblock_time; - /* 0x0B94 */ u32 loadtlut_time; - /* 0x0B98 */ u32 matrix_time; - /* 0x0B9C */ u32 polygons_time; - /* 0x0BA0 */ u32 dirty_check_time; - /* 0x0BA4 */ u32 dirty_lightX_time; - /* 0x0BA8 */ u32 dirty_lightX_cnt; - /* 0x0BAC */ u32 dirty_light_time; - /* 0x0BB0 */ u32 dirty_light_cnt; - /* 0x0BB4 */ u32 dirty_tex_time; - /* 0x0BB8 */ u32 dirty_tex_cnt; - /* 0x0BBC */ u32 dirty_tex1_time; - /* 0x0BC0 */ u32 dirty_tex1_cnt; - /* 0x0BC4 */ u32 dirty_tex2_time; - /* 0x0BC8 */ u32 dirty_tex2_cnt; - /* 0x0BCC */ u32 dirty_texmtx_time; - /* 0x0BD0 */ u32 dirty_texmtx_cnt; - /* 0x0BD4 */ u32 dirty_proj_time; - /* 0x0BD8 */ u32 dirty_primcolor_time; - /* 0x0BDC */ u32 dirty_envcolor_time; - /* 0x0BE0 */ u32 dirty_fillcolor_time; - /* 0x0BE4 */ u32 dirty_combine_mode_time; - /* 0x0BE8 */ u32 dirty_othermodeh_time; - /* 0x0BEC */ u32 dirty_othermodel_time; - /* 0x0BF0 */ u32 dirty_geometory_time; /* Yes, the devs misspelt this */ - /* 0x0BF4 */ u32 setuptex_time; - /* 0x0BF8 */ struct { - u32 time; - u32 calls; - } command_info[NUM_COMMANDS]; - /* 0x0DF8 */ u32 texture_cache_select_time; - /* 0x0DFC */ u32 guMtxL2F_time; - /* 0x0E00 */ u32 guMtxL2F_cnt; - /* 0x0E04 */ u32 combine_auto_cnt[5]; - /* 0x0E18 */ bool using_nonshared_mtx; - /* 0x0E1C */ Vertex vertices[VTX_COUNT]; - /* 0x201C */ u8 texture_adjust_mode; - /* 0x2020 */ u32 resolved_addresses; - /* 0x2024 */ u32 _2024; - /* 0x2028 */ u32 _2028; - /* 0x202C */ u32 _202C; - /* 0x2030 */ u32 abnormal_addresses; - /* 0x2034 */ bool rdp_pipe_sync_needed; - /* 0x2035 */ bool segment_set; - /* 0x2038 */ Gfx* dl_history[DL_HISTORY_COUNT]; - /* 0x2078 */ u8 dl_history_start; + void Printf1(const char* fmt, ...) { + va_list list; + + if ((this->print_flags & EMU64_PRINTF1_FLAG)) { + va_start(list, fmt); + this->Vprintf(fmt, list); + va_end(list); + } + } + + void Printf2(const char* fmt, ...) { + va_list list; + + if ((this->print_flags & EMU64_PRINTF2_FLAG)) { + va_start(list, fmt); + this->Vprintf(fmt, list); + va_end(list); + } + } + + void Printf3(const char* fmt, ...) { + va_list list; + + if ((this->print_flags & EMU64_PRINTF3_FLAG)) { + va_start(list, fmt); + this->Vprintf(fmt, list); + va_end(list); + } + } + + protected: + u8 print_flags; + + private: + void Vprintf(const char* fmt, std::__tag_va_List* va_list) { + vprintf(fmt, va_list); + } }; +#define EMU64_ASSERTLINE(cond, line) \ + if (!(cond)) { \ + this->panic(#cond, __FILE__, line); \ + } + +#define EMU64_PRINTF(msg, ...) this->Printf0(msg, __VA_ARGS__); + +#ifdef EMU64_DEBUG +#define EMU64_WARN(msg) \ + if (this->print_commands) { \ + this->Printf1(msg); \ + } +#define EMU64_WARNF(msg, ...) \ + if (this->print_commands) { \ + this->Printf1(msg, __VA_ARGS__); \ + } + +#define EMU64_LOG(msg) \ + if (this->print_commands) { \ + this->Printf2(msg); \ + } +#define EMU64_LOGF(msg, ...) \ + if (this->print_commands) { \ + this->Printf2(msg, __VA_ARGS__); \ + } + +#define EMU64_INFO(msg) \ + if (this->print_commands) { \ + this->Printf3(msg); \ + } +#define EMU64_INFOF(msg, ...) \ + if (this->print_commands) { \ + this->Printf3(msg, __VA_ARGS__); \ + } + +#define EMU64_ASSERTLINE_DEBUG(cond, line) EMU64_ASSERTLINE(cond, line) +#else +#define EMU64_WARN(msg) +#define EMU64_WARNF(msg, ...) + +#define EMU64_LOG(msg) +#define EMU64_LOGF(msg, ...) + +#define EMU64_INFO(msg) +#define EMU64_INFOF(msg, ...) + +#define EMU64_ASSERTLINE_DEBUG(cond, line) \ + do { \ + } while (0) +#endif + +#define EMU64_ASSERT(cond) EMU64_ASSERTLINE(cond, __LINE__) + +#define EMU64_PRINT_MEMBER(member) \ + do { \ + this->Printf0(#member " = %u\n", this->##member); \ + } while (0) + +#ifdef EMU64_DEBUG +#define EMU64_TIMED_SEGMENT_BEGIN() \ + { \ + u32 __timer_start = osGetCount(); \ + do { \ + } while (0) +#define EMU64_TIMED_SEGMENT_END(stat) \ + this->#stat += (osGetCount() - __timer_start); \ + (void)__timer_start; \ + } \ + do { \ + } while (0) +#else +#define EMU64_TIMED_SEGMENT_BEGIN() +#define EMU64_TIMED_SEGMENT_END(stat) +#endif + +#define EMU64_CAN_DRAW_POLYGON() \ + (aflags[AFLAGS_MAX_POLYGONS] == 0 || \ + (aflags[AFLAGS_MIN_POLYGONS] <= this->polygons && this->polygons < aflags[AFLAGS_MAX_POLYGONS])) + +class emu64 : public emu64_print { + public: + void emu64_init(); + void emu64_cleanup(); + void printInfo(); + void panic(char* msg, char* file, int line); + + void emu64_change_ucode(void* ucode_p); + void texconv_tile(u8* addr, u8* converted_addr, unsigned int wd, unsigned int fmt, unsigned int siz, + unsigned int start_wd, unsigned int start_ht, unsigned int end_wd, unsigned int end_ht, + unsigned int line_siz); + unsigned int tmem_swap(unsigned int ofs, unsigned int blk_siz) { + return ofs ^ ((ofs / blk_siz) & 4); + } + void tlutconv_rgba5551(u16* rgba5551_p, u16* rgb5a3_p, unsigned int count); + void tlutconv_ia16(u16* src_ia16_p, u16* dst_ia16_p, unsigned int count); + u8* texconv_tile_new(u8* addr, unsigned int wd, unsigned int fmt, unsigned int siz, unsigned int start_wd, + unsigned int start_ht, unsigned int end_wd, unsigned int end_ht, unsigned int line_siz); + /* @weak */ + u8* texconv_block_new(u8* addr, unsigned int wd, unsigned int ht, unsigned int fmt, unsigned int size, + unsigned int line_siz) { + return this->texconv_tile_new(addr, wd, fmt, size, 0, 0, wd - 1, ht - 1, line_siz); + } + u16* tlutconv_new(u16* tlut, unsigned int tlut_fmt, unsigned int count); + void tlutconv(u16* src_tlut, u16* dst_tlut, unsigned int count, unsigned int tlut_fmt); + int replace_combine_to_tev(Gfx* g); + int combine_auto(); + int combine_tev(); + void combine_manual(); + void combine(); + void zmode(); + void blend_mode(); + void alpha_compare(); + void cullmode(); + void texture_gen(int tile); + void texture_matrix(); + void disp_matrix(GC_Mtx mtx); + const char* segchk(u32 seg); + const char* combine_name(u32 param, u32 type); + const char* combine_alpha(int param, int type); + const char* combine_tev_color_name(u32 color_param); + const char* combine_tev_alpha_name(u32 alpha_param); + void print_geomflags(u32 flags); + void show_render(u32 data); + void show_vtx(Vtx* vtx, int count, int begin); + void print_combine(u64 combine); + void print_combine_tev(u64 combine_tev); + void print_guMtxXFM1F_dol2(MtxP mtx, GXProjectionType type, float x, float y, float z); + u32 seg2k0(u32 seg); + void setup_texture_tile(int tile); + void setup_1tri_2tri_1quad(unsigned int vtx_idx); + void draw_1tri_2tri_1quad(unsigned int n_verts, ...); + void fill_rectangle(float x0, float y0, float x1, float y1); + void draw_rectangle(Gtexrect2* rect); + void dirty_check(int tile, int n_tiles, int do_texture_matrix); + void set_position(unsigned int v); + void set_position3(unsigned int v0, unsigned int v1, unsigned int v2); + void set_position4(unsigned int v0, unsigned int v1, unsigned int v2, unsigned int v3); + + /* F3DEX2_AC opcodes */ + void dl_G_SPNOOP(); + void dl_G_DL(); + void dl_G_RDPHALF_1(); + void dl_G_TEXRECT(); + void dl_G_LOAD_UCODE(); + void dl_G_ENDDL(); + void dl_G_SETTILE(); + void dl_G_SETTILE_DOLPHIN(); + void dl_G_LOADTILE(); + void dl_G_LOADBLOCK(); + void dl_G_SETTILESIZE(); + void dl_G_LOADTLUT(); + void dl_G_SETCOMBINE_NOTEV(); + void dl_G_SETCOMBINE(); + void dl_G_SETCOMBINE_TEV(); + void dl_G_SETOTHERMODE_H(); + void dl_G_SETOTHERMODE_L(); + void dl_G_RDPSETOTHERMODE(); /* gsDPSetOtherMode */ + void dl_G_SETSCISSOR(); + void dl_G_FILLRECT(); + void dl_G_SETCIMG(); + void dl_G_SETZIMG(); + void dl_G_SETTIMG(); + void dl_G_SETENVCOLOR(); + void dl_G_SETBLENDCOLOR(); + void dl_G_SETFOGCOLOR(); + void dl_G_SETFILLCOLOR(); + void dl_G_SETTEXEDGEALPHA(); + void dl_G_SETPRIMDEPTH(); + void dl_G_SETPRIMCOLOR(); + void dl_G_RDPFULLSYNC(); + void dl_G_RDPPIPESYNC(); + void dl_G_RDPTILESYNC(); + void dl_G_RDPLOADSYNC(); + void dl_G_NOOP(); + void dl_G_MTX(); + void dl_G_VTX(); + void dl_G_MODIFYVTX(); + void dl_G_LINE3D(); + void dl_G_TRI1(); + void dl_G_TRIN_INDEPEND(); + void dl_G_TRIN(); + void dl_G_QUADN(); + void dl_G_TRI2(); + void dl_G_QUAD(); + void dl_G_CULLDL(); + void dl_G_BRANCH_Z(); + void dl_G_TEXTURE(); + void dl_G_POPMTX(); + void dl_G_GEOMETRYMODE(); + void dl_G_MOVEWORD(); + void dl_G_MOVEMEM(); + void dl_G_SPECIAL_1(); + + u32 emu64_taskstart_r(Gfx* dl_p); + void emu64_taskstart(Gfx* dl_p); + void emu64_set_ucode_info(int len, ucode_info* info); + void emu64_set_first_ucode(void* ucode_p); + void emu64_set_verbose(int verbose); + + /* N64 texture format[N64 bit size] -> dol texture format */ + static const u16 fmtxtbl[8][4]; + static char* warningString[EMU64_WARNING_COUNT]; + static u32 warningTime[EMU64_WARNING_COUNT]; + static bool displayWarning; + + private: + /* 0x0000 */ // u8 emu64_print::print_flags; + /* 0x0001 */ s8 print_commands; + /* 0x0002 */ bool disable_polygons; + /* 0x0004 */ u32 err_count; + /* 0x0008 */ u32 cmds_processed; /* ??? */ + /* 0x000C */ u32 total_vertices; + /* 0x0010 */ u32 vtx_load_calls; + /* 0x0014 */ u32 triangles; + /* 0x0018 */ u32 double_triangles; + /* 0x001C */ u32 quads; + /* 0x0020 */ u32 lines; + /* 0x0024 */ u32 load_ucode_calls; + /* 0x0028 */ u32 num_unknown_cmds; + /* 0x002C */ u32 num_unknown_ucodes; + /* 0x0030 */ int polygons; + /* 0x0034 */ u32 cullDL_calls; + /* 0x0038 */ u32 cullDL_outside_obj_count; + /* 0x003C */ u32 cullDL_visible_obj_count; + /* 0x0040 */ Gfx* gfx_p; + /* 0x0048 */ Gfx gfx; + /* 0x0050 */ u8 gfx_cmd; + /* 0x0054 */ void* work_ptr; + /* 0x0058 */ int end_dl; + /* 0x005C */ s8 ucode_len; + /* 0x0060 */ ucode_info* ucode_info_p; + /* 0x0064 */ int ucode_type; // maybe? + /* 0x0068 */ int _0068; /* ??? */ + /* 0x006C */ u32 segments[NUM_SEGMENTS]; + /* 0x00AC */ u32 DL_stack[DL_MAX_STACK_LEVEL]; + /* 0x00F4 */ s8 DL_stack_level; + /* 0x00F8 */ u32 othermode_high; + /* 0x00FC */ u32 othermode_low; + /* 0x0100 */ u32 geometry_mode; + /* 0x0104 */ u32 _0104; + /* 0x0108 */ Gfx combine_gfx; + /* 0x0110 */ emu64_texture_info texture_info[NUM_TILES]; + /* 0x0170 */ Gsetimg2 setimg2_cmds[NUM_TILES]; + /* 0x01B0 */ void* tlut_addresses[NUM_TLUTS]; + /* 0x01F0 */ GXTexObj tex_objs[NUM_TILES]; + /* 0x02F0 */ GXTlutObj tlut_objs[NUM_TLUTS]; + /* 0x03B0 */ bool use_dolphin_settile[NUM_TILES]; + /* 0x03B8 */ Gsettile settile_cmds[NUM_TILES]; + /* 0x03F8 */ Gsettile_dolphin settile_dolphin_cmds[NUM_TILES]; + /* 0x0438 */ Gsettilesize_Dolphin settilesize_dolphin_cmds[NUM_TILES]; + /* 0x0478 */ Gsetimg_new now_setimg; + /* 0x0480 */ u8 tex_edge_alpha; + + /* 0x0484 */ union { + u32 primdepth; + struct { + u16 primdepth_z; /* Z value */ + u16 primdepth_dz; /* Delta Z */ + }; + }; + + /* 0x0488 */ EmuColor primitive_color; /* GX_TEVREG1 */ + /* 0x048C */ EmuColor environment_color; /* GX_TEVREG2 */ + /* 0x0490 */ EmuColor blend_color; + /* 0x0494 */ EmuColor fog_color; + /* 0x0498 */ s16 fog_zmult; + /* 0x049A */ s16 fog_zoffset; + /* 0x049C */ EmuColor fill_color; + /* 0x04A0 */ EmuColor fill_tev_color; /* GX_TEVREG0 */ + /* 0x04A4 */ bool dirty_flags[NUM_DIRTY_FLAGS]; + /* 0x04C4 */ GC_Mtx original_projection_mtx; + /* 0x04F4 */ GC_Mtx position_mtx; + /* 0x0524 */ GC_Mtx model_view_mtx_stack[MTX_STACK_SIZE]; + /* 0x0704 */ GC_Mtx position_mtx_stack[MTX_STACK_SIZE]; + /* 0x08E4 */ Mtx44 projection_mtx; + /* 0x0924 */ struct { + struct { + s8 x, y, z; + } x; + struct { + s8 x, y, z; + } y; + } lookAt; + /* 0x092C */ f32 near; /* Near clipping plane */ + /* 0x0930 */ f32 far; /* Far clipping plane */ + /* 0x0934 */ GC_Mtx model_view_mtx; + /* 0x0964 */ GC_Mtx _0964; /* UNCONFIRMED TYPE */ + /* 0x0994 */ int mtx_stack_size; + /* 0x0998 */ Gtexture_internal texture_gfx; + /* 0x09A0 */ f32 texture_scale_s; /* x-scale */ + /* 0x09A4 */ f32 texture_scale_t; /* y-scale */ + /* 0x09A8 */ Mtx44 ortho_mtx; + /* 0x09E8 */ GXProjectionType projection_type; + /* 0x09EC */ GC_Mtx perspective_mtx; + /* 0x0A1C */ u32 _0A1C; + /* 0x0A20 */ u32 rdpHalf_1; + /* 0x0A24 */ EmuLight lights[NUM_LIGHTS]; + /* 0x0B64 */ u8 num_lights; + /* 0x0B68 */ u32 lookatx_cnt; + /* 0x0B6C */ u32 lookaty_cnt; + /* 0x0B70 */ u32 _0B70; + /* 0x0B74 */ u32 texconv_cnt; + /* 0x0B78 */ u32 vertex_cnt; + /* 0x0B7C */ u32 texconv_time; + /* 0x0B80 */ u32 rsprdp_time; + /* 0x0B84 */ u32 combine_time; + /* 0x0B88 */ u32 spvertex_time; + /* 0x0B8C */ u32 setup_time; + /* 0x0B90 */ u32 loadblock_time; + /* 0x0B94 */ u32 loadtlut_time; + /* 0x0B98 */ u32 matrix_time; + /* 0x0B9C */ u32 polygons_time; + /* 0x0BA0 */ u32 dirty_check_time; + /* 0x0BA4 */ u32 dirty_lightX_time; + /* 0x0BA8 */ u32 dirty_lightX_cnt; + /* 0x0BAC */ u32 dirty_light_time; + /* 0x0BB0 */ u32 dirty_light_cnt; + /* 0x0BB4 */ u32 dirty_tex_time; + /* 0x0BB8 */ u32 dirty_tex_cnt; + /* 0x0BBC */ u32 dirty_tex1_time; + /* 0x0BC0 */ u32 dirty_tex1_cnt; + /* 0x0BC4 */ u32 dirty_tex2_time; + /* 0x0BC8 */ u32 dirty_tex2_cnt; + /* 0x0BCC */ u32 dirty_texmtx_time; + /* 0x0BD0 */ u32 dirty_texmtx_cnt; + /* 0x0BD4 */ u32 dirty_proj_time; + /* 0x0BD8 */ u32 dirty_primcolor_time; + /* 0x0BDC */ u32 dirty_envcolor_time; + /* 0x0BE0 */ u32 dirty_fillcolor_time; + /* 0x0BE4 */ u32 dirty_combine_mode_time; + /* 0x0BE8 */ u32 dirty_othermodeh_time; + /* 0x0BEC */ u32 dirty_othermodel_time; + /* 0x0BF0 */ u32 dirty_geometory_time; /* Yes, the devs misspelt this */ + /* 0x0BF4 */ u32 setuptex_time; + /* 0x0BF8 */ struct { + u32 time; + u32 calls; + } command_info[NUM_COMMANDS]; + /* 0x0DF8 */ u32 texture_cache_select_time; + /* 0x0DFC */ u32 guMtxL2F_time; + /* 0x0E00 */ u32 guMtxL2F_cnt; + /* 0x0E04 */ u32 combine_auto_cnt[5]; + /* 0x0E18 */ bool using_nonshared_mtx; + /* 0x0E1C */ Vertex vertices[VTX_COUNT]; + /* 0x201C */ u8 texture_adjust_mode; + /* 0x2020 */ u32 resolved_addresses; + /* 0x2024 */ u32 _2024; + /* 0x2028 */ u32 _2028; + /* 0x202C */ u32 _202C; + /* 0x2030 */ u32 abnormal_addresses; + /* 0x2034 */ bool rdp_pipe_sync_needed; + /* 0x2035 */ bool segment_set; + /* 0x2038 */ Gfx* dl_history[DL_HISTORY_COUNT]; + /* 0x2078 */ u8 dl_history_start; +}; + +typedef void (emu64::* dl_func)(void); + #endif diff --git a/include/libforest/emu64/emu64_wrapper.h b/include/libforest/emu64/emu64_wrapper.h index ad4225b0..c24db954 100644 --- a/include/libforest/emu64/emu64_wrapper.h +++ b/include/libforest/emu64/emu64_wrapper.h @@ -8,6 +8,8 @@ extern "C" { #endif +extern u8 FrameCansel; + extern void emu64_set_ucode_info(int count, ucode_info* ucode_info); extern void emu64_set_first_ucode(void* ucode); extern void emu64_taskstart(Gfx* gfx); diff --git a/include/libforest/emu64/texture_cache.h b/include/libforest/emu64/texture_cache.h index a056d4f9..4c1aee8d 100644 --- a/include/libforest/emu64/texture_cache.h +++ b/include/libforest/emu64/texture_cache.h @@ -7,12 +7,12 @@ #ifdef __cplusplus extern "C" { -#define TEX_CACHE_ALIGNMENT (32-1) /* 32 byte alignment */ +#define TEX_CACHE_ALIGNMENT (32 - 1) /* 32 byte alignment */ #define NUM_TEXTURE_CACHE_DATA 10 #define TEXTURE_CACHE_LIST_SIZE 256 #define TMEM_ENTRIES 128 -#define TEX_CACHE_ALIGN(n)((n + TEX_CACHE_ALIGNMENT) & ~TEX_CACHE_ALIGNMENT) +#define TEX_CACHE_ALIGN(n) ((n + TEX_CACHE_ALIGNMENT) & ~TEX_CACHE_ALIGNMENT) /* These would be initialized by the linker. TODO: Is there a better way to do this? */ extern void* _data_segment_start; @@ -22,16 +22,16 @@ typedef struct { void* addr; Gloadblock loadblock; Gloadtile loadtile; - Gsetimg_new setimg; + Gsetimg2 setimg2; } tmem_t; typedef struct { void* start; /* Start RAM address of cache */ - void* end; /* End RAM address of cache */ + void* end; /* End RAM address of cache */ } texture_cache_data_entry_t; typedef struct { - void* original; /* Original RAM address */ + void* original; /* Original RAM address */ void* converted; /* Converted RAM address */ } texture_cache_entry_t; @@ -49,19 +49,17 @@ typedef struct { typedef struct texture_cache_s { texture_cache_funcs* funcs; /* Pointer to texture cache funcs */ - u8* buffer_start; /* Start address of cache buffer */ - u8* buffer_end; /* End address of cache buffer */ - u8* buffer_current; /* Current write position of the cache buffer */ - u8* last_alloc_end; /* Points to end address from last cache alloc */ - u8* last_alloc_start; /* Points to the start address from last cache alloc */ - bool is_overflow; /* Set to true when the cache is full */ - u32 buffer_pos; /* Write index into cache buffer */ + u8* buffer_start; /* Start address of cache buffer */ + u8* buffer_end; /* End address of cache buffer */ + u8* buffer_current; /* Current write position of the cache buffer */ + u8* last_alloc_end; /* Points to end address from last cache alloc */ + u8* last_alloc_start; /* Points to the start address from last cache alloc */ + bool is_overflow; /* Set to true when the cache is full */ + u32 buffer_pos; /* Write index into cache buffer */ } texture_cache_t; /* TMEM map */ -//static tmem_t tmem_map[TMEM_ENTRIES]; - - +// static tmem_t tmem_map[TMEM_ENTRIES]; /* Shared alloc function */ void* texture_cache_alloc(texture_cache_t* cache, u32 size); @@ -74,7 +72,6 @@ int texture_cache_data_entry(void* original, void* converted); #define TEX_BUFFER_BSS_SIZE 0x1000 extern texture_cache_t* texture_cache_select(void* address); - } #endif diff --git a/include/libforest/gbi_extensions.h b/include/libforest/gbi_extensions.h index d1a39e1a..29b2a68c 100644 --- a/include/libforest/gbi_extensions.h +++ b/include/libforest/gbi_extensions.h @@ -98,7 +98,7 @@ extern "C" { #define G_DECAL_EQUAL 0x20 #define G_DECAL_ALWAYS 0x30 #define G_DECAL_SPECIAL 0x40 -#define G_DECAL_ALL G_DECAL_ALWAYS | G_DECAL_SPECIAL +#define G_DECAL_ALL (G_DECAL_ALWAYS | G_DECAL_SPECIAL) /* Indicies for G_SPECIAL_1 */ #define G_SPECIAL_NONE 0 @@ -192,7 +192,7 @@ extern "C" { #define COMBINER_TEV_GET_Ad1(words)((words.w0 >> 0) & 7) typedef struct { - int cmd:8; + unsigned int cmd:8; unsigned int a0:4; unsigned int c0:5; unsigned int Aa0:3; @@ -273,12 +273,12 @@ typedef struct { unsigned int sl:14; /* Start of S coordinate */ unsigned int slen:10; /* Length of S coordinate */ - unsigned int isDolphin:1; /* If true, format is Gsettilesize_dolphin. If false, format is Gsettilesize2 */ + s8 isDolphin:1; /* If true, format is Gsettilesize_Dolphin. If false, format is Gsettilesize2 */ unsigned int pad:4; unsigned int tile:3; /* Tile descriptor */ unsigned int tl:14; /* Start of T coordinate */ unsigned int tlen:10; /* Length of T coordinate */ -} Gsettilesize_dolphin; +} Gsettilesize_Dolphin; typedef struct { int cmd:8; /* Command */ @@ -314,8 +314,9 @@ typedef struct { unsigned int level:3; unsigned int tile:3; unsigned int on:8; /* Should be 7 bits w/ 1 bit padding, but emulator doesn't do this */ - unsigned short s:16; - unsigned short t:16; + + unsigned short s; + unsigned short t; } Gtexture_internal; typedef struct { @@ -334,6 +335,229 @@ typedef struct { unsigned int data; } Gmovemem; +typedef struct Gsettexedgealpha { + unsigned int cmd:8; + unsigned int unused0:24; + + unsigned int unused1:24; + unsigned int tex_edge_alpha:8; +} Gsettexedgealpha; + +typedef struct { + int cmd:8; + unsigned int x0:10; + unsigned int x0frac:2; + unsigned int y0:10; + unsigned int y0frac:2; + unsigned int pad:8; + unsigned int x1:10; + unsigned int x1frac:2; + unsigned int y1:10; + unsigned int y1frac:2; +} Gscissor; + +typedef struct { + int cmd:8; + unsigned int x0:10; + unsigned int x0frac:2; + unsigned int y0:10; + unsigned int y0frac:2; + unsigned int pad:8; + unsigned int x1:10; + unsigned int x1frac:2; + unsigned int y1:10; + unsigned int y1frac:2; +} Gfillrect2; + +typedef struct Gnoop { + unsigned int cmd: 8; + unsigned int tag: 8; + unsigned int param0: 16; + + unsigned int param1; +} Gnoop; + +typedef struct Gmtx { + unsigned int cmd: 8; + unsigned int par: 8; + unsigned int pad: 8; + unsigned int type: 8; + + unsigned int addr; +} Gmtx; + +typedef struct Gvtx { + unsigned int cmd: 8; + unsigned int pad0: 4; + unsigned int n: 8; + unsigned int pad1: 4; + unsigned int vn:8; + + unsigned int addr; +} Gvtx; + +typedef struct Gline3D_new { + unsigned int cmd: 8; + unsigned int v0: 8; + unsigned int v1: 8; + unsigned int wd: 8; + + unsigned int pad; +} Gline3D_new; + +typedef struct Gtri1 { + unsigned int cmd: 8; + unsigned int v0: 8; + unsigned int v1: 8; + unsigned int v2: 8; + + unsigned int pad; +} Gtri1; + +typedef struct Gtri2 { + int cmd: 8; + unsigned int t0v0: 8; + unsigned int t0v1: 8; + unsigned int t0v2: 8; + + unsigned int pad: 8; + unsigned int t1v0: 8; + unsigned int t1v1: 8; + unsigned int t1v2: 8; +} Gtri2; + +typedef struct Gtrin_independ { + unsigned int cmd: 8; // 32 + unsigned int count: 7; // 24 + unsigned int f2v2: 5; // 17 + unsigned int f2v1: 5; // 12 + unsigned int f2v0: 5; // 7 + unsigned int f1v2_1: 2; // 2 + + unsigned int f1v2_0: 3; // 32 + unsigned int f1v1: 5; // 29 + unsigned int f1v0: 5; // 24 + unsigned int f0v2: 5; // 19 + unsigned int f0v1: 5; // 14 + unsigned int f0v0: 5; // 9 + unsigned int pad: 3; // 4 + unsigned int is7bit: 1; // 1 +} Gtrin_independ; + +typedef struct Gtrin { + unsigned int f3v2: 5; // 32 + unsigned int f3v1: 5; // 27 + unsigned int f3v0: 5; // 22 + unsigned int f2v2: 5; // 17 + unsigned int f2v1: 5; // 12 + unsigned int f2v0: 5; // 7 + unsigned int f1v2_1: 2; // 2 + + unsigned int f1v2_0: 3; // 32 + unsigned int f1v1: 5; // 29 + unsigned int f1v0: 5; // 24 + unsigned int f0v2: 5; // 19 + unsigned int f0v1: 5; // 14 + unsigned int f0v0: 5; // 9 + unsigned int pad: 3; // 32 + unsigned int is7bit: 1; // 1 +} Gtrin; + +typedef struct Gtrin_7b { + unsigned int f2v2: 7; // 32 + unsigned int f2v1: 7; // 25 + unsigned int f2v0: 7; // 18 + unsigned int f1v2: 7; // 11 + unsigned int f1v1_1: 4; // 4 + + unsigned int f1v1_0: 3; // 32 + unsigned int f1v0: 7; // 29 + unsigned int f0v2: 7; // 22 + unsigned int f0v1: 7; // 15 + unsigned int f0v0: 7; // 8 + unsigned int is7bit: 1; // 1 +} Gtrin_7b; + +typedef struct Gquad_independ { + unsigned int cmd: 8; // 32 + unsigned int count: 7; // 24 + unsigned int unused: 5; // 17 + unsigned int f1v3: 5; // 12 + unsigned int f1v2: 5; // 7 + unsigned int f1v1_1: 2; // 2 + + unsigned int f1v1_0: 3; // 32 + unsigned int f1v0: 5; // 29 + unsigned int f0v3: 5; // 24 + unsigned int f0v2: 5; // 19 + unsigned int f0v1: 5; // 14 + unsigned int f0v0: 5; // 9 + unsigned int pad: 3; // 4 + unsigned int is7bit: 1; // 1 +} Gquad_independ; + +typedef struct Gquad { + unsigned int f2v3: 5; // 32 + unsigned int f2v2: 5; // 27 + unsigned int f2v1: 5; // 22 + unsigned int f2v0: 5; // 17 + unsigned int f1v3: 5; // 12 + unsigned int f1v2: 5; // 7 + unsigned int f1v1_1: 2; // 2 + + unsigned int f1v1_0: 3; // 32 + unsigned int f1v0: 5; // 29 + unsigned int f0v3: 5; // 24 + unsigned int f0v2: 5; // 19 + unsigned int f0v1: 5; // 14 + unsigned int f0v0: 5; // 9 + unsigned int pad: 3; // 4 + unsigned int is7bit: 1; // 1 +} Gquad; + +typedef struct Gquad_7b { + unsigned int f1v3: 7; // 32 + unsigned int f1v2: 7; // 25 + unsigned int f1v1: 7; // 18 + unsigned int f1v0_1: 4; // 11 + unsigned int f1v0_0: 3; // 7 + unsigned int pad: 4; // 4 + + unsigned int f0v3: 7; // 32 + unsigned int f0v2: 7; // 25 + unsigned int f0v1: 7; // 18 + unsigned int f0v0: 7; // 11 + unsigned int pad0: 3; // 4 + unsigned int is7bit: 1; // 1 +} Gquad_7b; + +typedef struct Gquad0 { + int cmd: 8; + unsigned int v0: 8; + unsigned int v1: 8; + unsigned int v2: 8; + + unsigned int pad: 24; + unsigned int v3: 8; +} Gquad0; + +typedef struct Gculldl { + int cmd: 8; + unsigned int pad0: 8; + unsigned int vstart: 16; + + unsigned int pad1: 16; + unsigned int vend: 16; +} Gculldl; + +typedef struct Gspecial1 { + int cmd: 8; + int mode: 8; + unsigned int param0: 16; + + unsigned int param1; +} Gspecial1; + typedef struct { unsigned char col[3]; unsigned char kc; @@ -363,22 +587,52 @@ typedef struct { } combiner_tev_alpha; /* New Command Macros */ +#define gDPParam2(cmd, tag, param, extra) \ +do { \ + Gfx* _g = (Gfx*)(pkt); \ + _g->words.w0 = (u32)(_SHIFTL(cmd, 24, 8) | _SHIFTL(tag, 16, 8) | _SHIFTL(param, 0, 16)); \ + _g->words.w1 = (u32)(extra); \ +} while(0) + #define gsDPParam2(cmd, tag, param, extra) \ {{ \ _SHIFTL(cmd, 24, 8) | _SHIFTL(tag, 16, 8) | _SHIFTL(param, 0, 16), extra \ }} -#define gsDPNoOpTag2(tag, param, extra) gsDPParam2(G_NOOP, tag, param, extra) +#define gDPNoOpTag2(tag, param, extra) gDPParam2(G_NOOP, tag, param, extra) +#define gsDPNoOpTag2(tag, param, extra) gsDPParam2(G_NOOP, tag, param, extra) + +#define gDPNoOpHere() gDPNoOpTag2(G_TAG_HERE, __LINE__, __FILE__) #define gsDPNoOpHere() gsDPNoOpTag2(G_TAG_HERE, __LINE__, __FILE__) + +#define gDPNoOpString(str, param) gDPNoOpTag2(G_TAG_STRING, param, str) #define gsDPNoOpString(str, param) gsDPNoOpTag2(G_TAG_STRING, param, str) + +#define gDPNoOpWord(word, param) gDPNoOpTag2(G_TAG_WORD, param, word) #define gsDPNoOpWord(word, param) gsDPNoOpTag2(G_TAG_WORD, param, word) + +#define gDPNoOpFloat(float, param) gDPNoOpTag2(G_TAG_FLOAT, param, float) #define gsDPNoOpFloat(float, param) gsDPNoOpTag2(G_TAG_FLOAT, param, float) + +#define gDPNoOpQuiet() gDPNoOpTag2(G_TAG_INFO, 0, 0) #define gsDPNoOpQuiet() gsDPNoOpTag2(G_TAG_INFO, 0, 0) + +#define gDPNoOpVerbose() gDPNoOpTag2(G_TAG_INFO, 0xF, 0) #define gsDPNoOpVerbose() gsDPNoOpTag2(G_TAG_INFO, 0xF, 0) + +#define gDPNoOpCallBack(callback, param) gDPNoOpTag2(G_TAG_CALLBACK, param, callback) #define gsDPNoOpCallBack(callback, param) gsDPNoOpTag2(G_TAG_CALLBACK, param, callback) + +#define gDPNoOpOpenDisp() gDPNoOpTag2(G_TAG_OPENDISP, __LINE__, __FILE__) #define gsDPNoOpOpenDisp() gsDPNoOpTag2(G_TAG_OPENDISP, __LINE__, __FILE__) + +#define gDPNoOpCloseDisp() gDPNoOpTag2(G_TAG_CLOSEDISP, __LINE__, __FILE__) #define gsDPNoOpCloseDisp() gsDPNoOpTag2(G_TAG_CLOSEDISP, __LINE__, __FILE__) + +#define gDPNoOpFill() gDPNoOpTag2(G_TAG_FILL, 0, 0) #define gsDPNoOpFill() gsDPNoOpTag2(G_TAG_FILL, 0, 0) + +#define gDPNoOpTag3(tag, extra, param) gDPNoOpTag2(tag, param, extra) #define gsDPNoOpTag3(tag, extra, param) gsDPNoOpTag2(tag, param, extra) #define G_TLUT_DOLPHIN 2 diff --git a/include/va_args.h b/include/va_args.h index 37d308cc..536fcb08 100644 --- a/include/va_args.h +++ b/include/va_args.h @@ -17,8 +17,14 @@ typedef struct __va_list_struct { typedef _va_list_struct __va_list[1]; +void* __va_arg(_va_list_struct* list, int type); + #define __va_start(list, fmt) __builtin_va_info(&list) -#define __va_arg(list, type) (*((type*)__va_arg(ap, _var_arg_typeof(type)))) +#ifdef __MWERKS__ +#define __va_arg(list, type) (*((type*)__va_arg(list, _var_arg_typeof(type)))) +#else +#define __va_arg(list, type) 0 +#endif #define va_start __va_start #define va_arg __va_arg #define va_end __va_end diff --git a/src/static/libforest/emu64/emu64.cc b/src/static/libforest/emu64/emu64.cc index 4717de0e..2f566c18 100644 --- a/src/static/libforest/emu64/emu64.cc +++ b/src/static/libforest/emu64/emu64.cc @@ -3,6 +3,17 @@ #include "libultra/libultra.h" #include "terminal.h" #include "boot.h" +#include "libc64/sprintf.h" +#include "dolphin/mtx.h" +#include "dolphin/os/OSFastCast.h" +#include "dolphin/os.h" +#include "va_args.h" +#include "jsyswrap.h" +#include "dolphin/PPCArch.h" + +#pragma inline_max_size(1000) + +#include "../src/static/libforest/emu64/emu64_utility.cc" static aflags_c aflags; @@ -18,33 +29,43 @@ static texture_cache_entry_t texture_cache_list[TEXTURE_CACHE_LIST_SIZE]; static texture_cache_data_entry_t texture_cache_data_entry_tbl[NUM_TEXTURE_CACHE_DATA]; static int texture_cache_data_entry_num = 0; -static texture_cache_funcs texture_cache_data_func = { &texture_cache_data_search, &texture_cache_data_entry, - &texture_cache_alloc }; +static texture_cache_funcs texture_cache_data_func = { + &texture_cache_data_search, + &texture_cache_data_entry, + &texture_cache_alloc, +}; -static texture_cache_t texture_cache_data = { &texture_cache_data_func, - &texture_buffer_data[0], - &texture_buffer_data[TEX_BUFFER_DATA_SIZE], - &texture_buffer_data[0], - nullptr, - nullptr, - FALSE, - 0 }; +static texture_cache_t texture_cache_data = { + &texture_cache_data_func, + &texture_buffer_data[0], + &texture_buffer_data[TEX_BUFFER_DATA_SIZE], + &texture_buffer_data[0], + nullptr, + nullptr, + FALSE, + 0, +}; /* .bss cache functions */ void* texture_cache_bss_search(void* addr); int texture_cache_bss_entry(void* original, void* converted); -static texture_cache_funcs texture_cache_bss_func = { &texture_cache_bss_search, &texture_cache_bss_entry, - &texture_cache_alloc }; +static texture_cache_funcs texture_cache_bss_func = { + &texture_cache_bss_search, + &texture_cache_bss_entry, + &texture_cache_alloc, +}; -static texture_cache_t texture_cache_bss = { &texture_cache_bss_func, - &texture_buffer_bss[0], - &texture_buffer_bss[TEX_BUFFER_BSS_SIZE], - &texture_buffer_bss[0], - nullptr, - nullptr, - FALSE, - 0 }; +static texture_cache_t texture_cache_bss = { + &texture_cache_bss_func, + &texture_buffer_bss[0], + &texture_buffer_bss[TEX_BUFFER_BSS_SIZE], + &texture_buffer_bss[0], + nullptr, + nullptr, + FALSE, + 0, +}; extern void emu64_texture_cache_data_entry_set(void* begin, void* end) { texture_cache_data_entry_t* entry = &texture_cache_data_entry_tbl[texture_cache_data_entry_num]; @@ -57,17 +78,17 @@ extern void emu64_texture_cache_data_entry_set(void* begin, void* end) { static texture_cache_t* texture_cache_select(void* addr) { int i; - if (aflags[5] < 1 && (addr < _f_rodata || addr > _e_data)) { - for (i = 0; i < texture_cache_data_entry_num; i++) { - if (addr >= texture_cache_data_entry_tbl[i].start && addr < texture_cache_data_entry_tbl[i].end) { - return &texture_cache_data; - } - } - - return &texture_cache_bss; + if (aflags[AFLAGS_SKIP_TEXTURE_CONV] >= 1 || (addr >= _f_rodata && addr <= _e_data)) { + return &texture_cache_data; } - return &texture_cache_data; + for (i = 0; i < texture_cache_data_entry_num; i++) { + if (addr >= texture_cache_data_entry_tbl[i].start && addr < texture_cache_data_entry_tbl[i].end) { + return &texture_cache_data; + } + } + + return &texture_cache_bss; } static bool texture_cache_is_overflow(texture_cache_t* cache) { @@ -162,7 +183,7 @@ extern void emu64_refresh() { } /* Helper function to convert N64 texture format to Dolphin format */ -u16 emu64::fmtxtbl[8][4] = { +const u16 emu64::fmtxtbl[8][4] = { { GX_TF_CMPR, -1, GX_TF_RGB5A3, GX_TF_RGBA8 }, /* G_IM_FMT_RGBA */ { -1, -1, -1, -1 }, /* G_IM_FMT_YUV */ { GX_TF_C4, GX_TF_C8, 0xA, -1 }, /* G_IM_FMT_CI */ @@ -387,51 +408,49 @@ void emu64::emu64_init() { this->texture_scale_t = 32.0f; } +void emu64::emu64_cleanup() { + GXSetColorUpdate(GX_TRUE); + GXSetAlphaUpdate(GX_TRUE); +} + void emu64::printInfo() { + int i; + // Display DL stack %d level. this->Printf0("DLスタック表示 %d level\n", this->DL_stack_level); - - for (int i = 0; i < this->DL_stack_level; i++) { - this->Printf0("%d %08x %08x\n", i, (u32)this->DL_stack[i], convert_partial_address((u32)this->DL_stack[i])); + for (i = 0; i < this->DL_stack_level; i++) { + this->Printf0("%d %08x %08x\n", i, this->DL_stack[i], convert_partial_address(this->DL_stack[i])); } // Display last 16 DLs. this->Printf0("最終16DL表示\n"); - for (int i = 0; i < DL_HISTORY_COUNT; i++) { - Gfx* gfx_p = this->dl_history[(this->dl_history_start + i) % DL_HISTORY_COUNT]; + for (i = 0; i < DL_HISTORY_COUNT; i++) { + Gfx* gfx = this->dl_history[(i + this->dl_history_start) % DL_HISTORY_COUNT]; // Print out the raw Gfx command - this->Printf0("%016llx ", *(u64*)gfx_p); + this->Printf0("%016llx ", gfx->force_structure_alignment); // Convert the second word to resolve the RAM address if it's a segment - this->Printf0(" %08x\n", convert_partial_address(gfx_p->words.w1)); + this->Printf0(" %08x\n", convert_partial_address(gfx->words.w1)); } // Display segment table. this->Printf0("セグメントテーブル表示\n"); - for (int i = 0; i < NUM_SEGMENTS; i++) { - this->Printf0("%2d %08x %08x\n", i, (u32)this->segments[i], convert_partial_address((u32)this->segments[i])); + for (i = 0; i < NUM_SEGMENTS; i++) { + this->Printf0("%2d %08x %08x\n", i, this->segments[i], convert_partial_address(this->segments[i])); } } -void emu64::panic(char* fmt, char* file, int line) { - if (file != nullptr) { - this->Printf0(VT_COL(RED, WHITE) "emu64 PANIC!! in %s line %d" VT_RST "\n", file, line); - } else { - this->Printf0(VT_COL(RED, WHITE) "emu64 PANIC!!" VT_RST "\n"); - } - - if (fmt != nullptr) { - this->Printf0("%s", fmt); - } - +void emu64::panic(char* msg, char* file, int line) { + this->Printf0(VT_COL(RED, WHITE) "emu64 PANIC!! in %s line %d" VT_RST "\n", file, line); + this->Printf0("%s", msg); this->printInfo(); } void emu64::emu64_change_ucode(void* ucode_p) { if (this->ucode_len != 0) { for (int i = 0; i < this->ucode_len; i++) { - if (ucode_p == this->ucode_info[i].ucode_p) { - this->ucode_type = this->ucode_info[i].type; + if (ucode_p == this->ucode_info_p[i].ucode_p) { + this->ucode_type = this->ucode_info_p[i].type; return; } } @@ -578,25 +597,39 @@ u8* emu64::texconv_tile_new(u8* addr, unsigned int wd, unsigned int fmt, unsigne } u16* emu64::tlutconv_new(u16* tlut, unsigned int tlut_fmt, unsigned int count) { + u16* converted_tlut; + u32 len; + texture_cache_t* texture_cache; + if (tlut == nullptr) { return nullptr; } - texture_cache_t* texture_cache = texture_cache_select(tlut); - u16* converted_tlut = (u16*)(*texture_cache->funcs->search)(tlut); + if (tlut_fmt == EMU64_TLUT_IA16) { + this->err_count++; + return nullptr; + } + + EMU64_TIMED_SEGMENT_BEGIN(); + + texture_cache = texture_cache_select(tlut); + converted_tlut = (u16*)(*texture_cache->funcs->search)(tlut); /* Check if we already converted this texture */ - if (converted_tlut == nullptr) { - u32 len = get_dol_tlut_size(count); + if (converted_tlut != nullptr) { + return converted_tlut; + } - converted_tlut = (u16*)(*texture_cache->funcs->alloc)(texture_cache, len); - if (converted_tlut != nullptr) { - /* Convert from N64 -> GC */ - this->tlutconv(tlut, converted_tlut, count, tlut_fmt); - /* Update cache & store entry */ - DCStoreRange(converted_tlut, len); - (*texture_cache->funcs->entry)(tlut, converted_tlut); - } + EMU64_TIMED_SEGMENT_END(texture_cache_select_time); + + len = get_dol_tlut_siz(count); + converted_tlut = (u16*)(*texture_cache->funcs->alloc)(texture_cache, len); + if (converted_tlut != nullptr) { + /* Convert from N64 -> GC */ + this->tlutconv(tlut, converted_tlut, count, tlut_fmt); + /* Update cache & store entry */ + DCStoreRange(converted_tlut, len); + (*texture_cache->funcs->entry)(tlut, converted_tlut); } return converted_tlut; @@ -610,12 +643,12 @@ void emu64::tlutconv(u16* src_tlut, u16* dst_tlut, unsigned int count, unsigned } } -static const combiner_tev_alpha tbla[8] = { { GX_CA_APREV, GX_CA_KONST }, { GX_CA_TEXA, GX_CA_TEXA }, - { GX_CA_TEXA, GX_CA_TEXA }, { GX_CA_A1, GX_CA_A1 }, - { GX_CA_RASA, GX_CA_RASA }, { GX_CA_A2, GX_CA_A2 }, - { GX_CA_KONST, GX_CA_A0 }, { GX_CA_ZERO, GX_CA_ZERO } }; +static const u8 tbla[8][2] = { + { GX_CA_APREV, GX_CA_KONST }, { GX_CA_TEXA, GX_CA_TEXA }, { GX_CA_TEXA, GX_CA_TEXA }, { GX_CA_A1, GX_CA_A1 }, + { GX_CA_RASA, GX_CA_RASA }, { GX_CA_A2, GX_CA_A2 }, { GX_CA_KONST, GX_CA_A0 }, { GX_CA_ZERO, GX_CA_ZERO }, +}; -static const combiner_tev_color tblc[32] = { +static const u8 tblc[32][4] = { { GX_CC_CPREV, GX_CC_CPREV, GX_CC_CPREV, GX_CC_CPREV }, { GX_CC_TEXC, GX_CC_TEXC, GX_CC_TEXC, GX_CC_TEXC }, { GX_CC_TEXC, GX_CC_TEXC, GX_CC_TEXC, GX_CC_TEXC }, { GX_CC_C1, GX_CC_C1, GX_CC_C1, GX_CC_C1 }, { GX_CC_RASC, GX_CC_RASC, GX_CC_RASC, GX_CC_RASC }, { GX_CC_C2, GX_CC_C2, GX_CC_C2, GX_CC_C2 }, @@ -631,11 +664,29 @@ static const combiner_tev_color tblc[32] = { { GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO }, { GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO }, { GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO }, { GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO }, { GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO }, { GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO }, - { GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO }, { GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO } + { GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO }, { GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO }, }; +/* TODO: @nonmatching */ int emu64::replace_combine_to_tev(Gfx* g) { Gsetcombine_new* setcombine = (Gsetcombine_new*)g; + Gsetcombine_tev sc_tev; + GXTevColorArg a_color; + GXTevColorArg b_color; + GXTevColorArg c_color; + GXTevColorArg d_color; + GXTevAlphaArg a_alpha; + GXTevAlphaArg b_alpha; + GXTevAlphaArg c_alpha; + GXTevAlphaArg d_alpha; + int a; + int b; + int c; + int d; + int Aa; + int Ab; + int Ac; + int Ad; if ((setcombine->a0 == G_CCMUX_TEXEL1 || setcombine->b0 == G_CCMUX_TEXEL1 || setcombine->c0 == G_CCMUX_TEXEL1 || setcombine->d0 == G_CCMUX_TEXEL1 || setcombine->c0 == G_CCMUX_TEXEL1_ALPHA) || @@ -649,29 +700,37 @@ int emu64::replace_combine_to_tev(Gfx* g) { return -1; } - Gsetcombine_tev sc_tev; + a = setcombine->a0; + b = setcombine->b0; + c = setcombine->c0; + d = setcombine->d0; - int a0_color0 = tblc[(int)setcombine->a0].color0; - int b0_color1 = tblc[(int)setcombine->b0].color1; - int c0_color2 = tblc[(int)setcombine->c0].color2; - int d0_color3 = tblc[(int)setcombine->d0].color3; + Aa = setcombine->Aa0; + Ab = setcombine->Ab0; + Ac = setcombine->Ac0; + Ad = setcombine->Ad0; - int Aa0_alpha0 = tbla[(int)setcombine->Aa0].alpha0; - int Ab0_alpha0 = tbla[(int)setcombine->Ab0].alpha0; - int Ac0_alpha1 = tbla[(int)setcombine->Ac0].alpha1; - int Ad0_alpha0 = tbla[(int)setcombine->Ad0].alpha0; + a_color = (GXTevColorArg)tblc[a][0]; + b_color = (GXTevColorArg)tblc[b][1]; + c_color = (GXTevColorArg)tblc[c][2]; + d_color = (GXTevColorArg)tblc[d][3]; + + a_alpha = (GXTevAlphaArg)tbla[Aa][0]; + b_alpha = (GXTevAlphaArg)tbla[Ab][0]; + c_alpha = (GXTevAlphaArg)tbla[Ac][1]; + d_alpha = (GXTevAlphaArg)tbla[Ad][0]; /* Set TEV color 0 */ - if (b0_color1 == TEV_ZERO) { - sc_tev.a0 = TEV_ZERO; - sc_tev.b0 = b0_color1; - sc_tev.c0 = c0_color2; - sc_tev.d0 = d0_color3; - } else if (b0_color1 == d0_color3) { - sc_tev.a0 = b0_color1; - sc_tev.b0 = a0_color0; - sc_tev.c0 = c0_color2; - sc_tev.d0 = TEV_ZERO; + if (b_color == GX_CC_ZERO) { + sc_tev.a0 = GX_CC_ZERO; + sc_tev.b0 = b_color; + sc_tev.c0 = c_color; + sc_tev.d0 = d_color; + } else if (b_color == d_color) { + sc_tev.a0 = b_color; + sc_tev.b0 = a_color; + sc_tev.c0 = c_color; + sc_tev.d0 = GX_CC_ZERO; } else { g->setcombine.cmd = G_SETCOMBINE_NOTEV; @@ -679,57 +738,67 @@ int emu64::replace_combine_to_tev(Gfx* g) { } /* Set TEV alpha 0 */ - if (Ab0_alpha0 == TEV_ALPHA_ZERO) { + if (a_alpha == TEV_ALPHA_ZERO) { sc_tev.Aa0 = TEV_ALPHA_ZERO; - sc_tev.Ab0 = Aa0_alpha0; - sc_tev.Ac0 = Ac0_alpha1; - sc_tev.Ad0 = Ad0_alpha0; - } else if (Ab0_alpha0 == Ad0_alpha0) { - sc_tev.Aa0 = Ab0_alpha0; - sc_tev.Ab0 = Aa0_alpha0; - sc_tev.Ac0 = Ac0_alpha1; + sc_tev.Ab0 = a_alpha; + sc_tev.Ac0 = c_alpha; + sc_tev.Ad0 = d_alpha; + } else if (b_alpha == d_alpha) { + sc_tev.Aa0 = b_alpha; + sc_tev.Ab0 = a_alpha; + sc_tev.Ac0 = c_alpha; sc_tev.Ad0 = TEV_ALPHA_ZERO; } else { g->setcombine.cmd = G_SETCOMBINE_NOTEV; return -1; } - int a1_color0 = tblc[(int)setcombine->a1].color0; - int b1_color1 = tblc[(int)setcombine->b1].color1; - int c1_color2 = tblc[(int)setcombine->c1].color2; - int d1_color3 = tblc[(int)setcombine->d1].color3; + a = setcombine->a1; + b = setcombine->b1; + c = setcombine->c1; + d = setcombine->d1; - int Aa1_alpha0 = tbla[(int)setcombine->Aa1].alpha0; - int Ab1_alpha0 = tbla[(int)setcombine->Ab1].alpha0; - int Ac1_alpha1 = tbla[(int)setcombine->Ac1].alpha1; - int Ad1_alpha0 = tbla[(int)setcombine->Ad1].alpha0; + Aa = setcombine->Aa1; + Ab = setcombine->Ab1; + Ac = setcombine->Ac1; + Ad = setcombine->Ad1; + + a_color = (GXTevColorArg)tblc[a][0]; + b_color = (GXTevColorArg)tblc[b][1]; + c_color = (GXTevColorArg)tblc[c][2]; + d_color = (GXTevColorArg)tblc[d][3]; + + a_alpha = (GXTevAlphaArg)tbla[Aa][0]; + b_alpha = (GXTevAlphaArg)tbla[Ab][0]; + c_alpha = (GXTevAlphaArg)tbla[Ac][1]; + d_alpha = (GXTevAlphaArg)tbla[Ad][0]; /* Set TEV color 1 */ - if (b1_color1 == TEV_ZERO) { - sc_tev.a1 = TEV_ZERO; - sc_tev.b1 = a1_color0; - sc_tev.c1 = c1_color2; - sc_tev.d1 = d1_color3; - } else if (b1_color1 == d1_color3) { - sc_tev.a1 = b1_color1; - sc_tev.b1 = a1_color0; - sc_tev.c1 = c1_color2; - sc_tev.d1 = TEV_ZERO; + if (b_color == GX_CC_ZERO) { + sc_tev.a1 = GX_CC_ZERO; + sc_tev.b1 = a_color; + sc_tev.c1 = c_color; + sc_tev.d1 = d_color; + } else if (b_color == d_color) { + sc_tev.a1 = b_color; + sc_tev.b1 = a_color; + sc_tev.c1 = c_color; + sc_tev.d1 = GX_CC_ZERO; } else { g->setcombine.cmd = G_SETCOMBINE_NOTEV; return -1; } /* Set TEV alpha 1 */ - if (Ab1_alpha0 == TEV_ALPHA_ZERO) { + if (b_alpha == TEV_ALPHA_ZERO) { sc_tev.Aa1 = TEV_ALPHA_ZERO; - sc_tev.Ab1 = Aa1_alpha0; - sc_tev.Ac1 = Ac1_alpha1; - sc_tev.Ad1 = Ad1_alpha0; - } else if (Ab1_alpha0 == Ad1_alpha0) { - sc_tev.Aa1 = Ab1_alpha0; - sc_tev.Ab1 = Aa1_alpha0; - sc_tev.Ac1 = Ac1_alpha1; + sc_tev.Ab1 = a_alpha; + sc_tev.Ac1 = c_alpha; + sc_tev.Ad1 = d_alpha; + } else if (b_alpha == d_alpha) { + sc_tev.Aa1 = b_alpha; + sc_tev.Ab1 = a_alpha; + sc_tev.Ac1 = c_alpha; sc_tev.Ad1 = TEV_ALPHA_ZERO; } else { g->setcombine.cmd = G_SETCOMBINE_NOTEV; @@ -743,112 +812,159 @@ int emu64::replace_combine_to_tev(Gfx* g) { } int emu64::combine_auto() { - Gsetcombine_new* setcombine = (Gsetcombine_new*)&this->combine; - bool two_cycle = (this->othermode_high & G_CYC_2CYCLE) != 0; + const Gsetcombine_new* const setcombine = (Gsetcombine_new*)&this->combine_gfx; + GXTevColorArg color_a; + GXTevColorArg color_b; + GXTevColorArg color_c; + GXTevColorArg color_d; + GXTevAlphaArg alpha_b; + GXTevAlphaArg alpha_a; + GXTevAlphaArg alpha_c; + GXTevAlphaArg alpha_d; + int a; + int b; + int c; + int d; + int Aa; + int Ab; + int Ac; + int Ad; - if (setcombine->a0 == G_CCMUX_TEXEL1 || setcombine->b0 == G_CCMUX_TEXEL1 || setcombine->c0 == G_CCMUX_TEXEL1 || - setcombine->d0 == G_CCMUX_TEXEL1 || setcombine->c0 == G_CCMUX_TEXEL1_ALPHA || - setcombine->Aa0 == G_ACMUX_TEXEL1 || setcombine->Ab0 == G_ACMUX_TEXEL1 || setcombine->Ac0 == G_ACMUX_TEXEL1 || - setcombine->Ad0 == G_ACMUX_TEXEL1 || - two_cycle && - (setcombine->a1 == G_CCMUX_TEXEL1 || setcombine->b1 == G_CCMUX_TEXEL1 || setcombine->c1 == G_CCMUX_TEXEL1 || - setcombine->d1 == G_CCMUX_TEXEL1 || setcombine->c1 == G_CCMUX_TEXEL1_ALPHA || - setcombine->Aa1 == G_ACMUX_TEXEL1 || setcombine->Ab1 == G_ACMUX_TEXEL1 || - setcombine->Ac1 == G_ACMUX_TEXEL1 || setcombine->Ad1 == G_ACMUX_TEXEL1)) { + int stage; + int tevstages; + GXTevStageID color_stages; + GXTevStageID alpha_stages; + + int two_cycle = (this->othermode_high & G_CYC_2CYCLE) != 0; + + if ((setcombine->a0 == G_CCMUX_TEXEL1 || setcombine->b0 == G_CCMUX_TEXEL1 || setcombine->c0 == G_CCMUX_TEXEL1 || + setcombine->d0 == G_CCMUX_TEXEL1 || setcombine->c0 == G_CCMUX_TEXEL1_ALPHA || + setcombine->Aa0 == G_ACMUX_TEXEL1 || setcombine->Ab0 == G_ACMUX_TEXEL1 || setcombine->Ac0 == G_ACMUX_TEXEL1 || + setcombine->Ad0 == G_ACMUX_TEXEL1) || + (two_cycle && (setcombine->a1 == G_CCMUX_TEXEL1 || setcombine->b1 == G_CCMUX_TEXEL1 || + setcombine->c1 == G_CCMUX_TEXEL1 || setcombine->d1 == G_CCMUX_TEXEL1 || + setcombine->c1 == G_CCMUX_TEXEL1_ALPHA) || + setcombine->Aa1 == G_ACMUX_TEXEL1 || setcombine->Ab1 == G_ACMUX_TEXEL1 || setcombine->Ac1 == G_ACMUX_TEXEL1 || + setcombine->Ad1 == G_ACMUX_TEXEL1)) { return -1; } - int stage = GX_TEVSTAGE0; + stage = GX_TEVSTAGE0; - GXTevColorArg a = (GXTevColorArg)tblc[setcombine->b0].color1; /* b0 */ - GXTevColorArg b = (GXTevColorArg)tblc[setcombine->a0].color0; /* a0 */ - GXTevColorArg c = (GXTevColorArg)tblc[setcombine->c0].color2; /* c0 */ - GXTevColorArg d = (GXTevColorArg)tblc[setcombine->d0].color3; /* d0 */ + a = setcombine->a0; + b = setcombine->b0; + c = setcombine->c0; + d = setcombine->d0; - GXTevAlphaArg alpha_b = (GXTevAlphaArg)tbla[setcombine->Aa0].alpha0; /* Aa0 */ - GXTevAlphaArg alpha_a = (GXTevAlphaArg)tbla[setcombine->Ab0].alpha0; /* Ab0 */ - GXTevAlphaArg alpha_c = (GXTevAlphaArg)tbla[setcombine->Ac0].alpha1; /* Ac0 */ - GXTevAlphaArg alpha_d = (GXTevAlphaArg)tbla[setcombine->Ad0].alpha0; /* Ad0 */ + Aa = setcombine->Aa0; + Ab = setcombine->Ab0; + Ac = setcombine->Ac0; + Ad = setcombine->Ad0; - int color_stages, tevstages; - if (a == GX_CC_ZERO) { - GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, b, c, d); - color_stages = 1; - } else if (a == d) { - GXSetTevColorIn(GX_TEVSTAGE0, a, b, c, GX_CC_ZERO); - color_stages = 1; + color_b = (GXTevColorArg)tblc[a][0]; /* a0 */ + color_a = (GXTevColorArg)tblc[b][1]; /* b0 */ + color_c = (GXTevColorArg)tblc[c][2]; /* c0 */ + color_d = (GXTevColorArg)tblc[d][3]; /* d0 */ + + alpha_b = (GXTevAlphaArg)tbla[Aa][0]; /* Aa0 */ + alpha_a = (GXTevAlphaArg)tbla[Ab][0]; /* Ab0 */ + alpha_c = (GXTevAlphaArg)tbla[Ac][1]; /* Ac0 */ + alpha_d = (GXTevAlphaArg)tbla[Ad][0]; /* Ad0 */ + + if (color_a == GX_CC_ZERO) { + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, color_b, color_c, color_d); + color_stages = (GXTevStageID)1; + } else if (color_a == color_d) { + GXSetTevColorIn(GX_TEVSTAGE0, color_a, color_b, color_c, GX_CC_ZERO); + color_stages = (GXTevStageID)1; } else { - GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, b, c, d); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, color_b, color_c, color_d); + color_stages = (GXTevStageID)1; GXSetTevColorOp(GX_TEVSTAGE1, GX_TEV_SUB, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); - GXSetTevColorIn(GX_TEVSTAGE1, GX_CC_ZERO, a, c, GX_CC_CPREV); - color_stages = 2; + GXSetTevColorIn(GX_TEVSTAGE1, GX_CC_ZERO, color_a, color_c, GX_CC_CPREV); + color_stages = (GXTevStageID)((int)color_stages + 1); } if (alpha_a == GX_CA_ZERO) { GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, alpha_b, alpha_c, alpha_d); - tevstages = 1; + alpha_stages = (GXTevStageID)1; } else if (alpha_a == alpha_d) { GXSetTevAlphaIn(GX_TEVSTAGE0, alpha_a, alpha_b, alpha_c, GX_CA_ZERO); - tevstages = 1; + alpha_stages = (GXTevStageID)1; } else { GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, alpha_b, alpha_c, alpha_d); + alpha_stages = (GXTevStageID)1; GXSetTevAlphaOp(GX_TEVSTAGE1, GX_TEV_SUB, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); GXSetTevAlphaIn(GX_TEVSTAGE1, GX_CA_ZERO, alpha_a, alpha_c, GX_CA_APREV); - tevstages = 2; + alpha_stages = (GXTevStageID)(alpha_stages + 1); } - if (tevstages < color_stages) { - tevstages = color_stages; + if (color_stages > alpha_stages) { + alpha_stages = color_stages; } - for (stage; stage < tevstages; stage++) { + tevstages = alpha_stages; + for (stage; stage < alpha_stages; stage++) { GXSetTevOrder((GXTevStageID)stage, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); } if (two_cycle) { - GXTevColorArg a2 = (GXTevColorArg)tblc[setcombine->b1].color1; /* b1 */ - GXTevColorArg b2 = (GXTevColorArg)tblc[setcombine->a1].color0; /* a1 */ - GXTevColorArg c2 = (GXTevColorArg)tblc[setcombine->c1].color2; /* c1 */ - GXTevColorArg d2 = (GXTevColorArg)tblc[setcombine->d1].color3; /* d1 */ + a = setcombine->a1; + b = setcombine->b1; + c = setcombine->c1; + d = setcombine->d1; - GXTevAlphaArg alpha_b2 = (GXTevAlphaArg)tbla[setcombine->Aa1].alpha0; /* Aa1 */ - GXTevAlphaArg alpha_a2 = (GXTevAlphaArg)tbla[setcombine->Ab1].alpha0; /* Ab1 */ - GXTevAlphaArg alpha_c2 = (GXTevAlphaArg)tbla[setcombine->Ac1].alpha1; /* Ac1 */ - GXTevAlphaArg alpha_d2 = (GXTevAlphaArg)tbla[setcombine->Ad1].alpha0; /* Ad1 */ + Aa = setcombine->Aa1; + Ab = setcombine->Ab1; + Ac = setcombine->Ac1; + Ad = setcombine->Ad1; - /* @BUG - Is this alpha_c2 != GX_CC_ZERO check supposed to be alpha_c2 != GX_CA_ZERO? */ - if (c2 != GX_CC_ZERO || d2 != GX_CC_CPREV || alpha_c2 != GX_CC_ZERO || alpha_d2 != GX_CA_APREV) { - if (a2 == GX_CC_ZERO) { - GXSetTevColorIn((GXTevStageID)stage, GX_CC_ZERO, b2, c2, d2); - color_stages = stage + 1; - } else if (a2 == d2) { - GXSetTevColorIn((GXTevStageID)stage, a2, b2, c2, GX_CC_ZERO); - color_stages = stage + 1; + GXTevColorArg color_b = (GXTevColorArg)tblc[a][0]; /* a1 */ + GXTevColorArg color_a = (GXTevColorArg)tblc[b][1]; /* b1 */ + GXTevColorArg color_c = (GXTevColorArg)tblc[c][2]; /* c1 */ + GXTevColorArg color_d = (GXTevColorArg)tblc[d][3]; /* d1 */ + + GXTevAlphaArg alpha_b = (GXTevAlphaArg)tbla[Aa][0]; /* Aa1 */ + GXTevAlphaArg alpha_a = (GXTevAlphaArg)tbla[Ab][0]; /* Ab1 */ + GXTevAlphaArg alpha_c = (GXTevAlphaArg)tbla[Ac][1]; /* Ac1 */ + GXTevAlphaArg alpha_d = (GXTevAlphaArg)tbla[Ad][0]; /* Ad1 */ + + /* @BUG - Is this alpha_c != GX_CC_ZERO check supposed to be alpha_c != GX_CA_ZERO? */ + if (color_c != GX_CC_ZERO || color_d != GX_CC_CPREV || alpha_c != GX_CC_ZERO || alpha_d != GX_CA_APREV) { + if (color_a == GX_CC_ZERO) { + GXSetTevColorIn((GXTevStageID)stage, GX_CC_ZERO, color_b, color_c, color_d); + color_stages = (GXTevStageID)(stage + 1); + } else if (color_a == color_d) { + GXSetTevColorIn((GXTevStageID)stage, color_a, color_b, color_c, GX_CC_ZERO); + color_stages = (GXTevStageID)(stage + 1); } else { - GXSetTevColorIn((GXTevStageID)stage, GX_CC_ZERO, b2, c2, d2); - GXSetTevColorOp((GXTevStageID)(stage + 1), GX_TEV_SUB, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); - GXSetTevColorIn((GXTevStageID)(stage + 1), GX_CC_ZERO, a2, c2, GX_CC_CPREV); - color_stages = stage + 2; + GXSetTevColorIn((GXTevStageID)stage, GX_CC_ZERO, color_b, color_c, color_d); + color_stages = (GXTevStageID)(stage + 1); + GXSetTevColorOp(color_stages, GX_TEV_SUB, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevColorIn(color_stages, GX_CC_ZERO, color_a, color_c, GX_CC_CPREV); + color_stages = (GXTevStageID)((int)color_stages + 1); } - if (alpha_a2 == GX_CA_ZERO) { - GXSetTevAlphaIn((GXTevStageID)stage, GX_CA_ZERO, alpha_b2, alpha_c2, alpha_d2); - tevstages = stage + 1; - } else if (alpha_a2 == alpha_d2) { - GXSetTevAlphaIn((GXTevStageID)stage, alpha_a2, alpha_b2, alpha_c2, GX_CA_ZERO); - tevstages = stage + 1; + if (alpha_a == GX_CA_ZERO) { + GXSetTevAlphaIn((GXTevStageID)stage, GX_CA_ZERO, alpha_b, alpha_c, alpha_d); + alpha_stages = (GXTevStageID)(stage + 1); + } else if (alpha_a == alpha_d) { + GXSetTevAlphaIn((GXTevStageID)stage, alpha_a, alpha_b, alpha_c, GX_CA_ZERO); + alpha_stages = (GXTevStageID)(stage + 1); } else { - GXSetTevAlphaIn((GXTevStageID)stage, GX_CA_ZERO, alpha_b2, alpha_c2, alpha_d2); - GXSetTevAlphaOp((GXTevStageID)(stage + 1), GX_TEV_SUB, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); - GXSetTevAlphaIn((GXTevStageID)(stage + 1), GX_CA_ZERO, alpha_a2, alpha_c2, GX_CA_APREV); - tevstages = stage + 2; + GXSetTevAlphaIn((GXTevStageID)stage, GX_CA_ZERO, alpha_b, alpha_c, alpha_d); + alpha_stages = (GXTevStageID)(stage + 1); + GXSetTevAlphaOp(alpha_stages, GX_TEV_SUB, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(alpha_stages, GX_CA_ZERO, alpha_a, alpha_c, GX_CA_APREV); + alpha_stages = (GXTevStageID)((int)alpha_stages + 1); } - if (tevstages < color_stages) { - tevstages = color_stages; + if (color_stages > alpha_stages) { + alpha_stages = color_stages; } - for (stage; stage < tevstages; stage++) { + tevstages = alpha_stages; + for (stage; stage < alpha_stages; stage++) { GXSetTevOrder((GXTevStageID)stage, GX_TEXCOORD1, GX_TEXMAP1, GX_COLOR0A0); } } @@ -861,9 +977,9 @@ int emu64::combine_auto() { } int emu64::combine_tev() { - Gsetcombine_tev combine_tev = *((Gsetcombine_tev*)&this->combine); + Gsetcombine_tev combine_tev = *((Gsetcombine_tev*)&this->combine_gfx); - if (((this->combine.words.w0 >> 24) & 0xFF) == G_SETCOMBINE_TEV) { + if (((this->combine_gfx.words.w0 >> 24) & 0xFF) == G_SETCOMBINE_TEV) { if (aflags[AFLAGS_FORCE_TEV_COMBINE_MODE] != 0) { if (aflags[AFLAGS_FORCE_TEV_COMBINE_MODE] == 1) { static u32 c = TEV_SHADE; @@ -952,7 +1068,7 @@ int emu64::combine_tev() { (GXTevAlphaArg)combine_tev.Ac0, (GXTevAlphaArg)combine_tev.Ad0); if ((this->othermode_high & G_CYC_2CYCLE) == 0 || - ((this->combine.words.w1 & 0xFFFF) == 0xFFF0 && ((this->combine.words.w0 & 0xFFF) == 0xFF8))) { + ((this->combine_gfx.words.w1 & 0xFFFF) == 0xFFF0 && ((this->combine_gfx.words.w0 & 0xFFF) == 0xFF8))) { GXSetNumTexGens(1); GXSetNumTevStages(1); @@ -986,7 +1102,7 @@ int emu64::combine_tev() { GXSetTevAlphaIn(GX_TEVSTAGE2, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST); } - if (aflags[ALFAGS_TEV_ALPHA_KONST] != 0 || aflags[AFLAGS_2TRIS] != 0) { + if (aflags[ALFAGS_TEV_ALPHA_KONST] != 0 || aflags[AFLAGS_WIREFRAME] != 0) { GXSetTevAlphaIn(GX_TEVSTAGE1, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST); } } @@ -1008,7 +1124,7 @@ static u64 highlow_errs[NUM_COMBINER_HIGHLOW_ERRS]; #define COMBINE_CONSTEXPR(mode0, mode1) (gsDPSetCombineLERPInline(mode0, mode1)) void emu64::combine_manual() { - u64 combine_mode = *(u64*)&this->combine; + u64 combine_mode = *(u64*)&this->combine_gfx; switch (combine_mode) { case gsDPSetCombineLERPInline(TEXEL0, 0, SHADE, TEXEL0, 0, 0, 0, TEXEL0, SHADE, ENVIRONMENT, PRIMITIVE, @@ -1445,7 +1561,8 @@ void emu64::combine_manual() { highlow_errs[i] = combine_mode; this->err_count++; /* ### Unsupported combine mode ###\ncase 0x%16llx:// */ - this->Printf0(VT_COL(YELLOW, BLACK) "### 未対応のコンバインモードです ###\ncase 0x%16llx:// ", combine_mode); + this->Printf0(VT_COL(YELLOW, BLACK) "### 未対応のコンバインモードです ###\ncase 0x%16llx:// ", + combine_mode); this->print_combine(combine_mode); this->Printf0("\n" VT_RST); } @@ -1461,3 +1578,3857 @@ void emu64::combine_manual() { } } } + +void emu64::combine() { + if ((u8)this->combine_gfx.setcombine.cmd == G_SETCOMBINE_TEV) { + this->combine_tev(); + } else { + GXSetNumTexGens(2); + GXSetNumTevStages(1); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ONE); + GXSetTevColorIn(GX_TEVSTAGE1, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_CPREV); + GXSetTevColorIn(GX_TEVSTAGE2, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_CPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST); + GXSetTevAlphaIn(GX_TEVSTAGE1, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_APREV); + GXSetTevAlphaIn(GX_TEVSTAGE2, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_APREV); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + GXSetTevOrder(GX_TEVSTAGE1, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + GXSetTevOrder(GX_TEVSTAGE2, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevColorOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevColorOp(GX_TEVSTAGE2, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaOp(GX_TEVSTAGE2, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + + int manual = TRUE; + + if (aflags[AFLAGS_COMBINE_AUTO] && this->combine_auto() == 0) { + manual = FALSE; + } + + if (manual) { + this->combine_manual(); + } + + if (aflags[ALFAGS_TEV_ALPHA_KONST] || aflags[AFLAGS_WIREFRAME]) { + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST); + GXSetTevAlphaIn(GX_TEVSTAGE1, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST); + GXSetTevAlphaIn(GX_TEVSTAGE2, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST); + } + } +} + +/* TODO: @nonmatching */ +void emu64::setup_texture_tile(int tile) { + u16 stride; + u16 sizes; + u16 sizet; + u16 o_width; + u16 o_height; + u32 tile_ht; + u32 tile_wd; + u32 width; + u32 twd0; + u32 tht0; + u32 height; + void* orig_addr; + void* converted_addr; + Gsettile* settile; + Gloadblock* loadblock; + u8* tmem_addr; + Gloadtile* loadtile; + Gsetimg_new* setimg_new; + unsigned int w; + unsigned int h; + GXTexFmts dol_fmt; + + EMU64_TIMED_SEGMENT_BEGIN(); + settile = &this->settile_cmds[tile]; + if (settile->line == 0) { + return; + } + + u32 tmem = settile->tmem; + EMU64_ASSERTLINE(tmem / 4 < number(tmem_map), 2862); + + tmem_addr = (u8*)tmem_map[tmem / 4].addr; + loadblock = &tmem_map[tmem / 4].loadblock; + loadtile = &tmem_map[tmem / 4].loadtile; + setimg_new = (Gsetimg_new*)&tmem_map[tmem / 4].setimg2; + + if (tmem_addr == nullptr) { + this->err_count++; + return; + } + + int shift = (4 - settile->siz); + stride = settile->line << shift; + sizes = settile->masks != 0 ? (1 << settile->masks) : (1 << 10); + sizet = settile->maskt != 0 ? (1 << settile->maskt) : (1 << 10); + + if (setimg_new->setimg2.isDolphin) { + width = EXPAND_WIDTH(setimg_new->setimg2.wd); + height = EXPAND_HEIGHT(setimg_new->setimg2.ht); + } else { + int wd = setimg_new->setimg2.wd; + if (wd == 0) { + wd = loadblock->th; + if (wd == 0) { + width = stride; + height = (u16)((((loadblock->sh) + 1) << (2 - settile->siz)) / stride); + } else { + width = (u16)(((1 << (15 - settile->siz)) - 1) / wd + 1); + height = (u16)((((loadblock->sh) + 1) << (2 - settile->siz)) / width); + } + } else { + width = (u16)(((wd + 1) << setimg_new->setimg.siz) >> settile->siz); + height = 0; + } + } + + dol_fmt.raw = cvtN64ToDol(this->settile_cmds[tile].fmt, settile->siz); + + if (setimg_new->setimg2.isDolphin) { + twd0 = width; + tht0 = height; + orig_addr = tmem_addr; + converted_addr = tmem_addr; + } else { + if (setimg_new->setimg2.wd == 0) { + twd0 = width; + orig_addr = tmem_addr; + tht0 = height; + + if (this->settile_cmds[tile].ct != 0) { + u32 tlen = this->settilesize_dolphin_cmds[tile].tlen + 1; + if (height > tlen) { + tht0 = tlen; + } + } + + if (tht0 > sizet) { + tht0 = sizet; + } + + if (tmem_addr == this->texture_info[tile].img_addr) { + /* Translation: ### This tile is already loaded: %08x\n */ + EMU64_INFOF("### このタイルはすでにロードされています %08x\n", tmem_addr); + + if ((this->settile_cmds[tile].fmt != G_IM_FMT_CI || + this->texture_info[tile].tlut_name == this->settile_cmds[tile].palette) && + aflags[AFLAGS_SKIP_TILE_SETUP] != 0) { + /* Translation: ### Skip tile setup\n */ + EMU64_INFO("### タイルの設定はスキップします\n"); + return; + } + } + + u32 t; + if (loadblock->th) { + t = 0; + } else { + t = this->settile_cmds[tile].line; + } + + converted_addr = this->texconv_block_new(tmem_addr, width, height, this->settile_cmds[tile].fmt, + this->settile_cmds[tile].siz, t); + } else { + // Issue is here + u32 w0 = loadtile->sl << setimg_new->setimg.siz; + w0 >>= this->settile_cmds[tile].siz; + u32 h0 = loadtile->tl; + + u32 w1 = loadtile->sh << setimg_new->setimg.siz; + w1 >>= this->settile_cmds[tile].siz; + u32 h1 = loadtile->th; + + tile_wd = w1 / 4 - w0 / 4; + tile_ht = h1 / 4 - h0 / 4; + twd0 = tile_wd + 1; + tht0 = tile_ht + 1; + + u32 ofs0 = ((w0 / 4) + width * (loadtile->tl / 4)); + u32 ofs1 = ofs0 << this->settile_cmds[tile].siz; + orig_addr = tmem_addr + ofs1 / 2; + + if (orig_addr == this->texture_info[tile].img_addr) { + /* Translation: ### This tile is already loaded: %08x\n */ + EMU64_INFOF("### このタイルはすでにロードされています %08x\n", tmem_addr); + + if ((this->settile_cmds[tile].fmt != G_IM_FMT_CI || + this->texture_info[tile].tlut_name == this->settile_cmds[tile].palette) && + aflags[AFLAGS_SKIP_TILE_SETUP] != 0) { + /* Translation: ### Skip tile setup\n */ + EMU64_INFO("### タイルの設定はスキップします\n"); + return; + } + } + + converted_addr = this->texconv_tile_new(tmem_addr, width, this->settile_cmds[tile].fmt, + this->settile_cmds[tile].siz, 0, 0, tile_wd, tile_ht, 0); + } + } + + if ((this->geometry_mode & G_TEXTURE_GEN_LINEAR) != 0 && aflags[AFLAGS_DO_TEXTURE_LINEAR_CONVERT] != 0) { + converted_addr = TextureLinearConvert(converted_addr, twd0, tht0, this->settile_cmds[tile].fmt, + this->settile_cmds[tile].siz); + } + + /* TODO: Go back and rename a lot of these variables */ + EMU64_INFOF("\n : setup_texture_tile %s %s SIZE0=%dx? SIZE0X=%dx%d SIZE7=%dx%d TILE=%dx%d\n", + get_fmt_str(this->settile_cmds[tile].fmt), get_siz_str(this->settile_cmds[tile].siz), stride, sizes, + sizet, o_width, o_height, width, height); + + if (converted_addr == nullptr) { + this->Printf0("TEXTURE OVER!!\n"); + this->err_count++; + return; + } + + if (setimg_new->setimg2.isDolphin == FALSE) { + /* Translation: Texture conversion %08x %s %s %dx%d .data %d .bss %d\n */ + EMU64_WARNF("テクスチャ変換 %08x %s %s %dx%d .data %d .bss %d\n", tmem_addr, + get_fmt_str(this->settile_cmds[tile].fmt), get_siz_str(this->settile_cmds[tile].siz), width, height, + (s32)texture_cache_data.buffer_current - (s32)texture_cache_data.buffer_start, + (s32)texture_cache_bss.buffer_current - (s32)texture_cache_bss.buffer_start); + } + + /* Convert to GC width & height */ + if (setimg_new->setimg2.isDolphin == FALSE) { + get_dol_wd_ht(this->settile_cmds[tile].siz, twd0, tht0, &w, &h); + } else { + w = twd0; + h = tht0; + } + + GXTexWrapMode wrap_s = GX_CLAMP; + GXTexWrapMode wrap_t = GX_CLAMP; + + /* X wrapmode */ + switch (w) { + case 4: + case 8: + case 16: + case 32: + case 64: + case 128: + case 256: + case 512: + if (this->settile_cmds[tile].cs != 0) { + int tw = EXPAND_WIDTH(this->settilesize_dolphin_cmds[tile].slen); + if (this->settile_cmds[tile].ms && w < tw) { + wrap_s = GX_MIRROR; + } else { + wrap_s = GX_CLAMP; + } + } else { + if (this->settile_cmds[tile].ms != 0) { + wrap_s = GX_MIRROR; + } else { + wrap_s = GX_REPEAT; + } + } + break; + default: + wrap_s = GX_CLAMP; + break; + } + + /* Y wrapmode */ + switch (h) { + case 4: + case 8: + case 16: + case 32: + case 64: + case 128: + case 256: + case 512: + if (this->settile_cmds[tile].ct != 0) { + int th = EXPAND_WIDTH(this->settilesize_dolphin_cmds[tile].tlen); + if (this->settile_cmds[tile].mt && h < th) { + wrap_t = GX_MIRROR; + } else { + wrap_t = GX_CLAMP; + } + } else { + if (this->settile_cmds[tile].mt != 0) { + wrap_t = GX_MIRROR; + } else { + wrap_t = GX_REPEAT; + } + } + break; + default: + wrap_t = GX_CLAMP; + break; + } + + this->texture_info[tile].img_addr = orig_addr; + this->texture_info[tile].format = this->settile_cmds[tile].fmt; + this->texture_info[tile].size = this->settile_cmds[tile].siz; + this->texture_info[tile].width = w; + this->texture_info[tile].height = h; + + if (this->settile_cmds[tile].fmt == G_IM_FMT_CI) { + int pal = this->settile_cmds[tile].palette; + this->texture_info[tile].tlut_name = pal; + GXInitTexObjCI(&this->tex_objs[tile], converted_addr, w, h, dol_fmt.citexfmt, wrap_s, wrap_t, GX_FALSE, pal); + EMU64_INFOF("GXInitTexObjCI tile_no=%d %dx%d pal_no=%d\n", tile, w, h, this->settile_cmds[tile].palette); + } else { + this->texture_info[tile].tlut_name = 0xFF; + GXInitTexObj(&this->tex_objs[tile], converted_addr, w, h, dol_fmt.texfmt, wrap_s, wrap_t, GX_FALSE); + EMU64_INFOF("GXInitTexObj tile_no=%d %dx%d\n", tile, w, h); + } + + if (((this->othermode_high & G_TF_BILERP) == 0 || (this->othermode_high & G_CYC_COPY) != 0 || + (aflags[AFLAGS_TEX_GEN_LOD_MODE] == 1)) && + aflags[AFLAGS_TEX_GEN_LOD_MODE] != 2) { + GXInitTexObjLOD(&this->tex_objs[tile], GX_NEAR, GX_NEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1); + } else if (aflags[AFLAGS_TEX_GEN_LOD_MODE] == 3) { + GXInitTexObjLOD(&this->tex_objs[tile], GX_NEAR, GX_NEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_TRUE, GX_ANISO_1); + } + + GXLoadTexObj(&this->tex_objs[tile], (GXTexMapID)tile); + EMU64_TIMED_SEGMENT_END(setuptex_time); +} + +void emu64::blend_mode() { + if ((this->othermode_low & ZMODE_DEC) == ZMODE_DEC && + (this->geometry_mode & G_DECAL_ALL) == (G_DECAL_GEQUAL | G_DECAL_SPECIAL)) { + GXSetBlendMode(GX_BM_NONE, GX_BL_ONE, GX_BL_ZERO, GX_LO_NOOP); + } else if ((this->othermode_low & ZMODE_DEC) == ZMODE_DEC && + (this->geometry_mode & G_DECAL_ALL) == G_DECAL_SPECIAL) { + GXSetBlendMode(GX_BM_BLEND, GX_BL_DSTALPHA, GX_BL_INVDSTALPHA, GX_LO_NOOP); + } else if ((this->othermode_low & (IM_RD | FORCE_BL)) == (IM_RD | FORCE_BL)) { + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); + } else { + GXSetBlendMode(GX_BM_NONE, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); + } +} + +void emu64::alpha_compare() { + u32 gequal = + ((this->othermode_low & (AA_EN | CVG_X_ALPHA | ALPHA_CVG_SEL)) == (AA_EN | CVG_X_ALPHA | ALPHA_CVG_SEL) && + (this->othermode_low & (CVG_DST_SAVE | ZMODE_XLU)) == 0); + + u32 ac_threshold = (this->othermode_low & G_AC_DITHER) == G_AC_THRESHOLD; + u8 tex_edge_alpha = this->tex_edge_alpha; + if (aflags[AFLAGS_OVERRIDE_TEXEDGEALPHA] != 0) { + tex_edge_alpha = (u8)aflags[AFLAGS_OVERRIDE_TEXEDGEALPHA]; + } + + GXCompare comp1 = gequal ? GX_GEQUAL : GX_ALWAYS; + GXCompare comp0 = ac_threshold ? GX_GEQUAL : GX_ALWAYS; + GXSetAlphaCompare(comp0, this->blend_color.rgba.a, GX_AOP_AND, comp1, tex_edge_alpha); + GXSetZCompLoc(ac_threshold == 0 && !gequal); +} + +void emu64::zmode() { + static u8 compare_enable = GX_FALSE; + static GXCompare compare_func = GX_NEVER; + static u8 update_enable = GX_FALSE; + static u8 zcomp = GX_FALSE; + + if ((this->othermode_low & Z_CMP) != 0) { + compare_enable = GX_TRUE; + if ((this->othermode_low & ZMODE_DEC) == ZMODE_DEC) { + u32 decal_mode = this->geometry_mode & G_DECAL_ALWAYS; + + compare_func = + (decal_mode == G_DECAL_LEQUAL) + ? GX_LEQUAL + : ((decal_mode == G_DECAL_GEQUAL) ? GX_GEQUAL + : ((decal_mode == G_DECAL_EQUAL) ? GX_EQUAL : GX_ALWAYS)); + if (aflags[AFLAGS_DECAL_OFFSET_MODE] != 0) { + compare_func = (aflags[AFLAGS_DECAL_OFFSET_MODE] == 1) + ? GX_LEQUAL + : ((aflags[AFLAGS_DECAL_OFFSET_MODE] == 2) + ? GX_GEQUAL + : ((aflags[AFLAGS_DECAL_OFFSET_MODE] == 3) ? GX_EQUAL : GX_ALWAYS)); + } + + if ((this->geometry_mode & G_DECAL_SPECIAL) != 0) { + if (decal_mode == G_DECAL_GEQUAL) { + GXSetColorUpdate(GX_FALSE); + GXSetAlphaUpdate(GX_TRUE); + } else if (decal_mode == G_DECAL_LEQUAL) { + GXSetColorUpdate(GX_TRUE); + GXSetAlphaUpdate(GX_FALSE); + } else { + GXSetColorUpdate(GX_TRUE); + GXSetAlphaUpdate(GX_FALSE); + } + } else { + GXSetColorUpdate(GX_TRUE); + GXSetAlphaUpdate(GX_FALSE); + } + } else { + compare_func = GX_LESS; + } + + update_enable = (this->othermode_low & Z_UPD) != 0; + zcomp = false; + } else { + if ((this->othermode_low & Z_UPD) != 0) { + compare_enable = GX_TRUE; + compare_func = GX_ALWAYS; + update_enable = GX_TRUE; + zcomp = false; + } else { + + compare_enable = GX_FALSE; + compare_func = GX_ALWAYS; + update_enable = GX_FALSE; + zcomp = true; + } + } + + if (aflags[AFLAGS_WIREFRAME] != 0) { + compare_enable = GX_FALSE; + } + + GXSetZMode(compare_enable, compare_func, update_enable); +} + +void emu64::cullmode() { + GXCullMode cullmode; + if (aflags[AFLAGS_SET_CULLMODE] == 0) { + /* Cull modes seem to be inverted between N64 and GC */ + cullmode = (GXCullMode)(((this->geometry_mode >> 8) & (G_CULL_FRONT >> 8)) | + ((this->geometry_mode >> 10) & (G_CULL_BACK >> 10))); + } else if (aflags[AFLAGS_SET_CULLMODE] == 1) { /* Inverse mapping mode */ + switch (this->geometry_mode & G_CULL_BOTH) { + case G_CULL_FRONT: + cullmode = GX_CULL_BACK; + break; + case G_CULL_BACK: + cullmode = GX_CULL_FRONT; + break; + case G_CULL_BOTH: + cullmode = GX_CULL_ALL; + break; + default: + cullmode = GX_CULL_NONE; + break; + } + } else if (aflags[AFLAGS_SET_CULLMODE] == 2) { /* Direct mapping mode */ + switch (this->geometry_mode & G_CULL_BOTH) { + case G_CULL_BACK: + cullmode = GX_CULL_BACK; + break; + case G_CULL_FRONT: + cullmode = GX_CULL_FRONT; + break; + case G_CULL_BOTH: + cullmode = GX_CULL_ALL; + break; + default: + cullmode = GX_CULL_NONE; + break; + } + } else { /* Directly set cull mode. 3 = GX_CULL_FRONT, 4 = GX_CULL_BACK, 5 = GX_CULL_ALL */ + cullmode = (GXCullMode)(aflags[AFLAGS_SET_CULLMODE] - 2); + } + + /* Culling is disabled when 2 tris mode is active */ + if (aflags[AFLAGS_WIREFRAME] != 0) { + cullmode = GX_CULL_NONE; + } + + GXSetCullMode(cullmode); +} + +void emu64::texture_gen(int tex) { + // clang-format off + static const float shift_tbl[] = { + 1.0f, + 2.0f, + 4.0f, + 8.0f, + 16.0f, + 32.0f, + 64.0f, + 128.0f, + 256.0f, + 512.0f, + 1024.0f, + 1.0f / 32.0f, /* 0.03125f */ + 1.0f / 16.0f, /* 0.0625f */ + 1.0f / 8.0f, /* 0.125f */ + 1.0f / 4.0f, /* 0.25f */ + 1.0f / 2.0f /* 0.5f */ + }; + // clang-format on + + GC_Mtx mm; /* Model-view matrix */ + GC_Mtx ml; /* Look-at matrix */ + GC_Mtx mf; /* Finalized texture matrix */ + GC_Mtx ms; /* Scale matrix */ + GC_Mtx mt; /* Translation matrix */ + GC_Mtx mn; /* Scale-Translation normalization matrix */ + + /* Setup lookat matrix */ + + /* LookAt X */ + ml[0][0] = (f32)this->lookAt.x.x / 128.0f; /* 0.0078125f */ + ml[0][1] = (f32)this->lookAt.x.y / 128.0f; + ml[0][2] = (f32)this->lookAt.x.z / 128.0f; + ml[0][3] = 0.0f; + + /* LookAt Y */ + ml[1][0] = (f32)this->lookAt.y.x / 128.0f; + ml[1][1] = (f32)this->lookAt.y.y / 128.0f; + ml[1][2] = (f32)this->lookAt.y.z / 128.0f; + ml[1][3] = 0.0f; + + /* LookAt Z */ + ml[2][0] = 0.0f; + ml[2][1] = 0.0f; + ml[2][2] = 1.0f; + ml[2][3] = 0.0f; + + MTXIdentity(mf); + + /* This is dead code, as the aflag to utilize it is only present in DnM+ */ + MTXCopy(this->model_view_mtx_stack[this->mtx_stack_size], mm); + guMtxNormalize(mm); + mm[0][3] = 0.0f; + mm[1][3] = 0.0f; + mm[2][3] = 0.0f; + + /* Apply look-at and default translation & scale */ + MTXScale(ms, 0.5f, 0.5f, 0.0f); + MTXTrans(mt, 0.5f, 0.5f, 1.0f); + MTXConcat(mt, ms, mn); + MTXConcat(mn, ml, mf); + + /* Apply texture scaling */ + float x = ((64.0f * 32768.0f) / this->texture_scale_s) / 64.0f; + float y = ((64.0f * 32768.0f) / this->texture_scale_t) / 64.0f; + + MTXScale(ms, x, y, 1.0f); /* 2,097,152 = 2^21, 1/64 = 0.015625 */ + MTXConcat(ms, mf, mf); + + /* Apply texture shift */ + MTXScale(ms, 1.0f / shift_tbl[this->settile_cmds[tex].shifts], 1.0f / shift_tbl[this->settile_cmds[tex].shiftt], + 1.0f); + MTXConcat(ms, mf, mf); + + /* Apply texture position */ + u16 sl = this->settilesize_dolphin_cmds[tex].sl; + u16 tl = this->settilesize_dolphin_cmds[tex].tl; + float x0 = fastcast_float(&sl) / 16.0f; + float y0 = fastcast_float(&tl) / 16.0f; + + MTXTrans(mt, -x0, -y0, 0.0f); + MTXConcat(mt, mf, mf); + + /* Convert size to be in units of texture width & height */ + float x1 = 1.0f / fastcast_float(&this->texture_info[tex].width); + float y1 = 1.0f / fastcast_float(&this->texture_info[tex].height); + MTXScale(ms, x1, y1, 1.0f); + MTXConcat(ms, mf, mf); + + /* Load texture */ + GXTexMtx id = (GXTexMtx)(GX_TEXMTX0 + tex * 3); + GXLoadTexMtxImm(mf, id, GX_MTX3x4); + GXSetTexCoordGen((GXTexCoordID)tex, GX_TG_MTX3x4, GX_TG_NRM, id); +} + +void emu64::texture_matrix() { + // clang-format off + static const float shift_tbl[] = { + 1.0f, + 2.0f, + 4.0f, + 8.0f, + 16.0f, + 32.0f, + 64.0f, + 128.0f, + 256.0f, + 512.0f, + 1024.0f, + 1.0f / 32.0f, /* 0.03125f */ + 1.0f / 16.0f, /* 0.0625f */ + 1.0f / 8.0f, /* 0.125f */ + 1.0f / 4.0f, /* 0.25f */ + 1.0f / 2.0f /* 0.5f */ + }; + // clang-format on + + EMU64_ASSERTLINE_DEBUG(this, 4036); + if (this->texture_gfx.on != 0) { + GC_Mtx m; + u16 uls0; + u16 ult0; + + f32 bilerp_adjust; /* bilerp center adjust */ + float muls; + float mult; + float lrs; + float lrt; + + float x32; + float y32; + + if ((this->texture_adjust_mode == 1 || (this->othermode_high & G_TF_BILERP) == 0 || + (this->othermode_high & G_CYC_COPY) != 0 || aflags[AFLAGS_TEX_GEN_LOD_MODE] == 1) && + aflags[AFLAGS_TEX_GEN_LOD_MODE] != 2) { + bilerp_adjust = 0.0f; + } else { + bilerp_adjust = 8.0f; + } + + static float scaleS = 0.5f; + static float scaleT = -0.5f; + static float transS = 0.5f; + static float transT = 0.5f; + + x32 = this->texture_scale_s; + y32 = this->texture_scale_t; + + if (this->use_dolphin_settile[0] == true) { + this->settile_cmds[0].shifts = this->settile_dolphin_cmds[0].shift_s; + this->settile_cmds[0].shiftt = this->settile_dolphin_cmds[0].shift_t; + } + + if (this->use_dolphin_settile[1] == true) { + this->settile_cmds[1].shifts = this->settile_dolphin_cmds[1].shift_s; + this->settile_cmds[1].shiftt = this->settile_dolphin_cmds[1].shift_t; + } + + EMU64_ASSERTLINE_DEBUG(this, 4092); + if (this->texture_info[0].width != 0 && this->texture_info[0].height != 0) { + float uls = x32 * shift_tbl[this->settile_cmds[0].shifts]; + float ult = y32 * shift_tbl[this->settile_cmds[0].shiftt]; + + uls0 = this->settilesize_dolphin_cmds[0].sl; + ult0 = this->settilesize_dolphin_cmds[0].tl; + + muls = uls * ((fastcast_float(&uls0) - bilerp_adjust) * (1.0f / 16.0f)); /* 0.0625f */ + mult = ult * ((fastcast_float(&ult0) - bilerp_adjust) * (1.0f / 16.0f)); /* 0.0625f */ + lrs = muls + (uls * fastcast_float(&this->texture_info[0].width)); + lrt = mult + (ult * fastcast_float(&this->texture_info[0].height)); + + if (mult == lrt) { + OSReport(VT_COL(RED, WHITE) "mult = %8.3f lrt = %8.3f ult0 = %d y32 = %8.3f texobj[0].ht = %d\n" VT_RST, + mult, lrt, ult0, y32, this->texture_info[0].height); + } + + if (muls == lrs) { + OSReport(VT_COL(RED, WHITE) "muls = %8.3f lrs = %8.3f uls0 = %d x32 = %8.3f texobj[0].wd = %d\n" VT_RST, + muls, lrs, uls0, x32, this->texture_info[0].width); + } + + C_MTXLightOrtho(m, mult, lrt, muls, lrs, scaleS, scaleT, transS, transT); + GXLoadTexMtxImm(m, GX_TEXMTX0, GX_MTX2x4); + GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_TEXMTX0); + + if ((this->geometry_mode & G_TEXTURE_GEN) != 0) { + this->texture_gen(0); + } + } + + /* Setup texture tile 1 */ + if (this->texture_info[1].width != 0 && this->texture_info[1].height != 0) { + float uls = x32 * shift_tbl[this->settile_cmds[1].shifts]; + float ult = y32 * shift_tbl[this->settile_cmds[1].shiftt]; + + uls0 = this->settilesize_dolphin_cmds[1].sl; + ult0 = this->settilesize_dolphin_cmds[1].tl; + + muls = uls * ((fastcast_float(&uls0) - bilerp_adjust) * (1.0f / 16.0f)); /* 0.0625f */ + mult = ult * ((fastcast_float(&ult0) - bilerp_adjust) * (1.0f / 16.0f)); /* 0.0625f */ + lrs = muls + (uls * fastcast_float(&this->texture_info[1].width)); + lrt = mult + (ult * fastcast_float(&this->texture_info[1].height)); + + if (mult == lrt) { + OSReport(VT_COL(RED, WHITE) "mult = %8.3f lrt = %8.3f ult0 = %d y32 = %8.3f texobj[1].ht = %d\n" VT_RST, + mult, lrt, ult0, y32, this->texture_info[1].height); + } + + if (muls == lrs) { + OSReport(VT_COL(RED, WHITE) "muls = %8.3f lrs = %8.3f uls0 = %d x32 = %8.3f texobj[1].wd = %d\n" VT_RST, + muls, lrs, uls0, x32, this->texture_info[1].width); + } + + C_MTXLightOrtho(m, mult, lrt, muls, lrs, scaleS, scaleT, transS, transT); + GXLoadTexMtxImm(m, GX_TEXMTX1, GX_MTX2x4); + GXSetTexCoordGen(GX_TEXCOORD1, GX_TG_MTX2x4, GX_TG_TEX0, GX_TEXMTX1); + + if ((this->geometry_mode & G_TEXTURE_GEN) != 0) { + this->texture_gen(1); + } + } + } +} + +void emu64::set_position(unsigned int vtx) { + Vertex* emu_vtx = &this->vertices[vtx]; + + if (this->using_nonshared_mtx && (emu_vtx->flag & MTX_NONSHARED) == MTX_SHARED) { + /* Translation: The nonshared triangle group is broken because a shared vertex is mixed in with the nonshared + * triangle group! */ + this->Printf0("非シェアードの三角形群にシェアードの頂点が混ざっているので破綻しました!\n"); + } + + if ((emu_vtx->flag & MTX_NONSHARED) != MTX_SHARED) { + if (!this->using_nonshared_mtx) { + GC_Mtx& m = this->position_mtx_stack[this->mtx_stack_size]; + + if (aflags[AFLAGS_USE_GUVECMULT]) { + guMtxXFM1F_dol(m, emu_vtx->position.x, emu_vtx->position.y, emu_vtx->position.z, &emu_vtx->position.x, + &emu_vtx->position.y, &emu_vtx->position.z); + guMtxXFM1F_dol(this->model_view_mtx, emu_vtx->normal.x, emu_vtx->normal.y, emu_vtx->normal.z, + &emu_vtx->normal.x, &emu_vtx->normal.y, &emu_vtx->normal.z); + } else { + MTXMultVec(m, &emu_vtx->position, &emu_vtx->position); + MTXMultVec(this->model_view_mtx, &emu_vtx->normal, &emu_vtx->normal); + } + + emu_vtx->flag |= MTX_NONSHARED; + /* Translation: Nonshared vertices are mixed with the shared triangle group */ + EMU64_LOG("シェアードの三角形群に非シェアードの頂点が混ざっている\n"); + } else if ((this->geometry_mode & G_TEXTURE_GEN) != 0) { + + if (aflags[AFLAGS_USE_GUVECMULT]) { + guMtxXFM1F_dol(this->model_view_mtx, emu_vtx->normal.x, emu_vtx->normal.y, emu_vtx->normal.z, + &emu_vtx->normal.x, &emu_vtx->normal.y, &emu_vtx->normal.z); + } else { + MTXMultVec(this->model_view_mtx, &emu_vtx->normal, &emu_vtx->normal); + } + + /* Translation: Reflection mapping applied to nonshared vertex */ + EMU64_LOG("シェアードじゃない反射マッピングの頂点\n"); + } + } + + if ((this->othermode_low & ZMODE_DEC) == ZMODE_DEC && (this->geometry_mode & G_ZBUFFER) != 0 && + (this->geometry_mode & G_DECAL_EQUAL) == 0) { + Vec tmp; + float ox, oy, oz; + float ow; + float x, y, z, w; + u32 decal_mode = (this->geometry_mode & G_DECAL_ALWAYS); + + if ((emu_vtx->flag & MTX_NONSHARED) != MTX_SHARED) { + + if (aflags[AFLAGS_USE_GUVECMULT]) { + guMtxXFM1F_dol(this->position_mtx_stack[this->mtx_stack_size], emu_vtx->position.x, emu_vtx->position.y, + emu_vtx->position.z, &ox, &oy, &oz); + } else { + MTXMultVec(this->position_mtx_stack[this->mtx_stack_size], &emu_vtx->position, &tmp); + ox = tmp.x; + oy = tmp.y; + oz = tmp.z; + } + } else { + ox = emu_vtx->position.x; + oy = emu_vtx->position.y; + oz = emu_vtx->position.z; + } + + if (aflags[AFLAGS_SKIP_W_CALCULATION] == 0) { + guMtxXFM1F_dol2w(this->projection_mtx, this->projection_type, ox, oy, oz, &x, &y, &z, &w); + z /= w; + } else { + guMtxXFM1F_dol2(this->projection_mtx, this->projection_type, ox, oy, oz, &x, &y, &z); + w = 1.0f; + } + + if (decal_mode == 0) { + z -= 0.0001f; + } else if (decal_mode == G_DECAL_GEQUAL) { + z += 0.0001f; + } + + z *= w; + if (aflags[AFLAGS_PROJECTION_CALC_W]) { + guMtxXFM1F_dol6w(this->projection_mtx, this->projection_type, x, y, z, w, &ox, &oy, &oz, &ow); + + ox /= ow; + oy /= ow; + oz /= ow; + } else { + guMtxXFM1F_dol6w1(this->projection_mtx, this->projection_type, x, y, z, w, &ox, &oy, &oz); + } + + if ((emu_vtx->flag & MTX_NONSHARED) != MTX_SHARED) { + f32 fx, fy, fz; + guMtxXFM1F_dol7(this->position_mtx_stack[this->mtx_stack_size], ox, oy, oz, &fx, &fy, &fz); + GXPosition3f32(fx, fy, fz); + } else { + GXPosition3f32(ox, oy, oz); + } + } else { + GXPosition3f32(emu_vtx->position.x, emu_vtx->position.y, emu_vtx->position.z); + } + + /* If geometry mode lighting is enabled, write vertex normals */ + if ((this->geometry_mode & G_LIGHTING) != 0) { + GXNormal3f32(emu_vtx->normal.x, emu_vtx->normal.y, emu_vtx->normal.z); + } + + /* Vertex color */ + GXColor1u32(emu_vtx->color.raw); + + /* If texture is on, write texture coordinates */ + if (this->texture_gfx.on != G_OFF) { + GXTexCoord2s16(emu_vtx->tex_coords.s, emu_vtx->tex_coords.t); + } +} + +void emu64::set_position3(unsigned int v0, unsigned int v1, unsigned int v2) { + int wireframe = aflags[AFLAGS_WIREFRAME]; + + if (wireframe) { + GXBegin(GX_LINESTRIP, GX_VTXFMT0, 4); + } + + if (EMU64_CAN_DRAW_POLYGON()) { + this->set_position(v0); + this->set_position(v1); + this->set_position(v2); + } else { + this->set_position(v0); + this->set_position(v0); + this->set_position(v0); + } + + if (wireframe) { + this->set_position(v0); + GXEnd(); + } +} + +void emu64::set_position4(unsigned int v0, unsigned int v1, unsigned int v2, unsigned int v3) { + int wireframe = aflags[AFLAGS_WIREFRAME]; + + if (wireframe) { + GXBegin(GX_LINESTRIP, GX_VTXFMT0, 5); + } + + if (EMU64_CAN_DRAW_POLYGON()) { + this->set_position(v0); + this->set_position(v1); + this->set_position(v2); + this->set_position(v3); + } else { + this->set_position(v0); + this->set_position(v0); + this->set_position(v0); + this->set_position(v0); + } + + if (wireframe) { + this->set_position(v0); + GXEnd(); + } +} + +void emu64::setup_1tri_2tri_1quad(unsigned int vtx_idx) { + EMU64_TIMED_SEGMENT_BEGIN(); + + Vertex* vtx_p = &this->vertices[vtx_idx]; + + if ((vtx_p->flag & MTX_NONSHARED) == MTX_SHARED) { + EMU64_LOG("setup_1tri_2tri_1quad シェアード\n"); /* Translation: setup_1tri_2tri_1quad shared */ + GXSetCurrentMtx(SHARED_MTX); + this->using_nonshared_mtx = false; + } else { + EMU64_LOG("setup_1tri_2tri_1quad ノンシェアード\n"); /* Translation: setup_1tri_2tri_1quad nonshared */ + GXSetCurrentMtx(NONSHARED_MTX); + this->using_nonshared_mtx = true; + } + + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_CLR_RGBA, GX_F32, 0); + if ((this->geometry_mode & G_LIGHTING) != 0) { + GXSetVtxDesc(GX_VA_NRM, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_CLR_RGB, GX_F32, 0); + GXSetVtxDesc(GX_VA_CLR0, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); + } else { + GXSetVtxDesc(GX_VA_CLR0, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); + } + + if (this->texture_gfx.on != G_OFF) { + GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_CLR_RGBA, GX_RGBA4, 0); + } + + EMU64_TIMED_SEGMENT_END(setup_time); +} + +void emu64::draw_1tri_2tri_1quad(unsigned int n_verts, ...) { + va_list list; + unsigned int v0; + unsigned int v1; + unsigned int v2; + unsigned int v3; + + va_start(list, n_verts); + + /* 1 Quad */ + if (n_verts == 4) { + if ((aflags[2] & 3) == 0) { + if (aflags[22] == 0) { + GXBegin(GX_QUADS, GX_VTXFMT0, n_verts); + } + + v0 = va_arg(list, unsigned int); + v1 = va_arg(list, unsigned int); + v2 = va_arg(list, unsigned int); + v3 = va_arg(list, unsigned int); + this->set_position4(v0, v1, v2, v3); + + if (aflags[22] == 0) { + GXEnd(); + } + + goto exit; + } + } + + /* 1 Triangle */ + if (n_verts == 3) { + if ((aflags[2] & 1) == 0) { + if (aflags[22] == 0) { + GXBegin(GX_TRIANGLES, GX_VTXFMT0, n_verts); + } + + v0 = va_arg(list, unsigned int); + v1 = va_arg(list, unsigned int); + v2 = va_arg(list, unsigned int); + this->set_position3(v0, v1, v2); + + if (aflags[22] == 0) { + GXEnd(); + } + + goto exit; + } + } + + /* 2 Triangles */ + if (n_verts == 6) { + if ((aflags[2] & 2) == 0) { + if (aflags[22] == 0) { + GXBegin(GX_TRIANGLES, GX_VTXFMT0, n_verts); + } + + v0 = va_arg(list, unsigned int); + v1 = va_arg(list, unsigned int); + v2 = va_arg(list, unsigned int); + this->set_position3(v0, v1, v2); + + v0 = va_arg(list, unsigned int); + v1 = va_arg(list, unsigned int); + v2 = va_arg(list, unsigned int); + this->set_position3(v0, v1, v2); + + if (aflags[22] == 0) { + GXEnd(); + } + + goto exit; + } + } + +exit: + this->rdp_pipe_sync_needed = TRUE; +} + +/* aflag dirty settings */ +#define DIRTY_SET_ALL -1 +#define DIRTY_SET_NONE 0 +#define DIRTY_SET_TILE 1 + +/* Dirty flag macros */ +#define IS_DIRTY(flag) (this->dirty_flags[flag] != false) +#define CLEAR_DIRTY(flag) (this->dirty_flags[flag] = false) +#define SET_DIRTY(flag) (this->dirty_flags[flag] = true) + +void emu64::fill_rectangle(float x0, float y0, float x1, float y1) { + if ((this->othermode_high & G_CYC_COPY) != 0) { + x1 += 1.0f; + y1 += 1.0f; + + GXSetNumTevStages(1); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_C0); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + GXSetZMode(GX_FALSE, GX_NEVER, GX_FALSE); + this->dirty_flags[EMU64_DIRTY_FLAG_COMBINE] = true; + this->dirty_flags[EMU64_DIRTY_FLAG_OTHERMODE_HIGH] = true; + this->dirty_flags[EMU64_DIRTY_FLAG_OTHERMODE_LOW] = true; + } else { + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); + GXSetTevOrder(GX_TEVSTAGE1, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); + } + + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, GX_LIGHT_NULL, GX_DF_NONE, GX_AF_NONE); + this->dirty_flags[EMU64_DIRTY_FLAG_LIGHTING] = true; + GXSetNumTexGens(0); + GXSetProjection(this->ortho_mtx, GX_ORTHOGRAPHIC); + GXSetCurrentMtx(GX_PNMTX0); + + this->using_nonshared_mtx = false; + this->dirty_flags[EMU64_DIRTY_FLAG_PROJECTION_MTX] = true; + + x0 = x0 * (1.0f / 320.0f) - 1.0f; + y0 = y0 * (1.0f / 240.0f) - -1.0f; + x1 = x1 * (1.0f / 320.0f) - 1.0f; + y1 = y1 * (1.0f / 240.0f) - -1.0f; + + GXSetCullMode(GX_CULL_NONE); + this->dirty_flags[EMU64_DIRTY_FLAG_GEOMETRYMODE] = true; + + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_CLR_RGB, GX_F32, 0); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition2f32(x0, y0); + GXPosition2f32(x1, y0); + GXPosition2f32(x1, y1); + GXPosition2f32(x0, y1); + GXEnd(); + + this->rdp_pipe_sync_needed = true; +} + +void emu64::draw_rectangle(Gtexrect2* texrect) { + float x0; + float y0; + float x1; + float y1; + float s0; + float t0; + float s1; + float t1; + + float xh = texrect->xh / 4.0f; + float yh = texrect->yh / 4.0f; + float xl = texrect->xl / 4.0f; + float yl = texrect->yl / 4.0f; + float s = texrect->s / 32.0f; + float t = texrect->t / 32.0f; + int tile = texrect->tile; + float dsdx = texrect->dsdx / 1024.0f; + float dtdy = texrect->dtdy / 1024.0f; + + if (((this->othermode_high & G_CYC_COPY) != 0 && aflags[AFLAGS_FORCE_G_CYC_COPY] == FALSE) || + aflags[AFLAGS_FORCE_G_CYC_COPY] == TRUE) { + xl += 1.0f; + yl += 1.0f; + GXSetNumTevStages(1); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_TEXC); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_TEXA); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR_NULL); + GXSetZMode(GX_FALSE, GX_NEVER, GX_FALSE); + this->dirty_flags[EMU64_DIRTY_FLAG_COMBINE] = true; + this->dirty_flags[EMU64_DIRTY_FLAG_OTHERMODE_HIGH] = true; + this->dirty_flags[EMU64_DIRTY_FLAG_OTHERMODE_LOW] = true; + } + + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, GX_LIGHT_NULL, GX_DF_NONE, GX_AF_NONE); + this->dirty_flags[EMU64_DIRTY_FLAG_LIGHTING] = true; + + float s_end = s + dsdx * (xl - xh); + float t_end = t + dtdy * (yl - yh); + + float center; + if ((this->texture_adjust_mode == G_TA_DOLPHIN || (this->othermode_high & G_TF_BILERP) == 0 || + (this->othermode_high & G_CYC_COPY) != 0 || aflags[AFLAGS_TEX_GEN_LOD_MODE] == 1) && + aflags[AFLAGS_TEX_GEN_LOD_MODE] != 2) { + center = 0.0f; + } else { + center = 0.5f; + } + + s0 = (center + (s - this->settilesize_dolphin_cmds[tile].sl / 16.0f)) / (int)this->texture_info[tile].width; + t0 = (center + (t - this->settilesize_dolphin_cmds[tile].tl / 16.0f)) / (int)this->texture_info[tile].height; + s1 = (center + (s_end - this->settilesize_dolphin_cmds[tile].sl / 16.0f)) / (int)this->texture_info[tile].width; + t1 = (center + (t_end - this->settilesize_dolphin_cmds[tile].tl / 16.0f)) / (int)this->texture_info[tile].height; + + GXSetProjection(this->ortho_mtx, GX_ORTHOGRAPHIC); + GXSetCurrentMtx(GX_PNMTX0); + + this->using_nonshared_mtx = false; + this->dirty_flags[EMU64_DIRTY_FLAG_PROJECTION_MTX] = true; + + x0 = xh * (1.0f / 320.0f) - 1.0f; + y0 = yh * (1.0f / 240.0f) - -1.0f; + x1 = xl * (1.0f / 320.0f) - 1.0f; + y1 = yl * (1.0f / 240.0f) - -1.0f; + + GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, (GXTexMapID)tile, GX_COLOR_NULL); + + if (((this->othermode_high & G_CYC_COPY) == 0 || aflags[AFLAGS_FORCE_G_CYC_COPY] != FALSE) && + aflags[AFLAGS_FORCE_G_CYC_COPY] != TRUE) { + GXSetTexCoordGen(GX_TEXCOORD1, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY); + GXSetTevOrder(GX_TEVSTAGE1, GX_TEXCOORD1, (GXTexMapID)((tile + 1) & 7), GX_COLOR_NULL); + } + + GXSetCullMode(GX_CULL_NONE); + this->dirty_flags[EMU64_DIRTY_FLAG_GEOMETRYMODE] = true; + + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_CLR_RGB, GX_F32, GX_FALSE); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_CLR_RGBA, GX_F32, GX_FALSE); + + if (aflags[AFLAGS_WIREFRAME]) { + GXBegin(GX_LINESTRIP, GX_VTXFMT0, 5); + GXPosition2f32(x0, y0); + GXTexCoord2f32(s0, t0); + GXPosition2f32(x1, y0); + GXTexCoord2f32(s1, t0); + GXPosition2f32(x1, y1); + GXTexCoord2f32(s1, t1); + GXPosition2f32(x0, y1); + GXTexCoord2f32(s0, t1); + GXPosition2f32(x0, y0); + GXTexCoord2f32(s0, t0); + GXEnd(); + } else { + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition2f32(x0, y0); + GXTexCoord2f32(s0, t0); + GXPosition2f32(x1, y0); + GXTexCoord2f32(s1, t0); + GXPosition2f32(x1, y1); + GXTexCoord2f32(s1, t1); + GXPosition2f32(x0, y1); + GXTexCoord2f32(s0, t1); + GXEnd(); + } + + this->rdp_pipe_sync_needed = true; +} + +void emu64::dirty_check(int tile, int n_tiles, int do_texture_matrix) { + if (aflags[AFLAGS_SET_DIRTY_FLAGS] != DIRTY_SET_NONE) { + if ((int)aflags[AFLAGS_SET_DIRTY_FLAGS] == DIRTY_SET_ALL) { + // memset(this->dirty_flags, TRUE, NUM_DIRTY_FLAGS); + } + + if (aflags[AFLAGS_SET_DIRTY_FLAGS] <= (NUM_DIRTY_FLAGS + DIRTY_SET_TILE - 1)) { + SET_DIRTY(aflags[AFLAGS_SET_DIRTY_FLAGS] - 1); + } + } + + EMU64_TIMED_SEGMENT_BEGIN(); + EMU64_ASSERTLINE_DEBUG(this, 4826); + + if (IS_DIRTY(EMU64_DIRTY_FLAG_PRIM_COLOR)) { + EMU64_TIMED_SEGMENT_BEGIN(); + CLEAR_DIRTY(EMU64_DIRTY_FLAG_PRIM_COLOR); + GXSetTevColor(GX_TEVREG1, this->primitive_color.color); + EMU64_TIMED_SEGMENT_END(dirty_primcolor_time); + } + + EMU64_ASSERTLINE_DEBUG(this, 4833); + + if (IS_DIRTY(EMU64_DIRTY_FLAG_ENV_COLOR)) { + EMU64_TIMED_SEGMENT_BEGIN(); + CLEAR_DIRTY(EMU64_DIRTY_FLAG_ENV_COLOR); + GXSetTevColor(GX_TEVREG2, this->environment_color.color); + EMU64_TIMED_SEGMENT_END(dirty_envcolor_time); + } + + EMU64_ASSERTLINE_DEBUG(this, 4840); + + if (IS_DIRTY(EMU64_DIRTY_FLAG_FOG)) { + /** + * Othermode lower's upper 16 bits are the cycle dependent "blender" register. + * The calculation can have two phases over two cycles, and the params are as such: + * P0P0|P1P1|A0A0|A1A1|M0M0|M1M1|B0B0|B1B1 + * + * The emulator is checking if the first cycle's P0 value (upper most two bits) is G_BL_CLR_FOG. + * This is equivalent to the standard GLB_c1 macro's m1a parameter. + */ + if ((this->othermode_low >> 30) == G_BL_CLR_FOG && (this->geometry_mode & G_FOG) != 0 && this->fog_zmult != 0 && + this->fog_zmult != 0 && aflags[4] == 0) { + /* The developers checked fog_zmult twice in all versions. Maybe it should've been fog_zoffset? */ + /* N64 fog position min-max calculations */ + int min = 500 - (this->fog_zoffset * 500) / this->fog_zmult; + int max = 128000 / this->fog_zmult + min; + + CLEAR_DIRTY(EMU64_DIRTY_FLAG_FOG); + + /* Calculate startz & endz fog parameters */ + f32 startz = + -guMtxXFM1F_dol3(this->projection_mtx, this->projection_type, ((f32)(u32)min - 1000.0f) / 1064.0f); + f32 endz = + -guMtxXFM1F_dol3(this->projection_mtx, this->projection_type, ((f32)(u32)max - 1000.0f) / 1016.0f); + + GXSetFog(GX_FOG_PERSP_LIN, startz, endz, this->near, this->far, this->fog_color.color); + } else { + GXSetFog(GX_FOG_NONE, 0.0f, 0.0f, 0.0f, 0.0f, this->fog_color.color); + } + } + + EMU64_ASSERTLINE_DEBUG(this, 4864); + + if (IS_DIRTY(EMU64_DIRTY_FLAG_FILL_TEV_COLOR) || IS_DIRTY(EMU64_DIRTY_FLAG_FILL_COLOR)) { + EMU64_TIMED_SEGMENT_BEGIN(); + CLEAR_DIRTY(EMU64_DIRTY_FLAG_FILL_COLOR); + CLEAR_DIRTY(EMU64_DIRTY_FLAG_FILL_TEV_COLOR); + GXSetTevColor(GX_TEVREG0, this->fill_tev_color.color); + EMU64_TIMED_SEGMENT_END(dirty_fillcolor_time); + } + + EMU64_ASSERTLINE_DEBUG(this, 4872); + if (IS_DIRTY(EMU64_DIRTY_FLAG_COMBINE) || IS_DIRTY(EMU64_DIRTY_FLAG_OTHERMODE_HIGH)) { + EMU64_TIMED_SEGMENT_BEGIN(); + CLEAR_DIRTY(EMU64_DIRTY_FLAG_COMBINE); + this->combine(); + EMU64_TIMED_SEGMENT_END(dirty_combine_mode_time); + } + + EMU64_ASSERTLINE_DEBUG(this, 4826); // TODO: check DnM+ line number + if (IS_DIRTY(EMU64_DIRTY_FLAG_OTHERMODE_HIGH)) { + EMU64_TIMED_SEGMENT_BEGIN(); + CLEAR_DIRTY(EMU64_DIRTY_FLAG_OTHERMODE_HIGH); + EMU64_TIMED_SEGMENT_END(dirty_othermodeh_time); + } + + EMU64_ASSERTLINE_DEBUG(this, 4826); // TODO: check DnM+ line number + if (IS_DIRTY(EMU64_DIRTY_FLAG_OTHERMODE_LOW) || IS_DIRTY(EMU64_DIRTY_FLAG_GEOMETRYMODE)) { + this->zmode(); + this->blend_mode(); + + if (IS_DIRTY(EMU64_DIRTY_FLAG_OTHERMODE_LOW)) { + EMU64_TIMED_SEGMENT_BEGIN(); + CLEAR_DIRTY(EMU64_DIRTY_FLAG_OTHERMODE_LOW); + this->alpha_compare(); + EMU64_TIMED_SEGMENT_END(dirty_othermodel_time); + } + + if (IS_DIRTY(EMU64_DIRTY_FLAG_GEOMETRYMODE)) { + EMU64_TIMED_SEGMENT_BEGIN(); + CLEAR_DIRTY(EMU64_DIRTY_FLAG_GEOMETRYMODE); + this->cullmode(); + EMU64_TIMED_SEGMENT_END(dirty_geometory_time); + } + } + + EMU64_ASSERTLINE_DEBUG(this, 4826); // TODO: Check DnM+ line number + + /* Lights block */ + if (IS_DIRTY(EMU64_DIRTY_FLAG_LIGHTS)) { + EMU64_TIMED_SEGMENT_BEGIN(); + CLEAR_DIRTY(EMU64_DIRTY_FLAG_LIGHTS); + SET_DIRTY(EMU64_DIRTY_FLAG_LIGHTING); + int i; + for (i = 0; i < this->num_lights; i++) { + EmuLight* l = &this->lights[i]; + GXLightObj light_obj; + GXInitLightPos(&light_obj, l->position.x, l->position.y, l->position.z); + GXInitLightDir(&light_obj, 0.0f, 0.0f, 0.0f); + GXInitLightAttn(&light_obj, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f); + + if (l->attenuation.kc) { + GXInitLightDir(&light_obj, 1.0f, 0.0f, 0.0f); + GXInitLightAttn(&light_obj, 0.0f, 0.0f, 0.0f, /* a */ + l->attenuation.kc, l->attenuation.k1, l->attenuation.kq /* k */ + ); + } + + GXInitLightColor(&light_obj, l->color.color); + GXLoadLightObjImm(&light_obj, (GXLightID)(1 << i)); + } + + GXSetChanAmbColor(GX_COLOR0A0, this->lights[i].color.color); + EMU64_TIMED_SEGMENT_END(dirty_lightX_time); + this->dirty_lightX_cnt++; + } + + /* Lighting block */ + if (IS_DIRTY(EMU64_DIRTY_FLAG_LIGHTING)) { + EMU64_TIMED_SEGMENT_BEGIN(); + CLEAR_DIRTY(EMU64_DIRTY_FLAG_LIGHTING); + if ((this->geometry_mode & G_LIGHTING) != 0) { + if (aflags[AFLAGS_LIGHT_DISABLE_DIFFUSION] != 0) { + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, GX_LIGHT_NULL, GX_DF_NONE, GX_AF_NONE); + } else { + if ((this->geometry_mode & G_LIGHTING_POSITIONAL) != 0) { + GXSetChanCtrl(GX_COLOR0, GX_TRUE, GX_SRC_REG, GX_SRC_REG, (1 << num_lights) - 1, GX_DF_CLAMP, + GX_AF_SPOT); + } else { + GXSetChanCtrl(GX_COLOR0, GX_TRUE, GX_SRC_REG, GX_SRC_REG, (1 << num_lights) - 1, GX_DF_CLAMP, + GX_AF_NONE); + } + + GXSetChanCtrl(GX_ALPHA0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, GX_LIGHT_NULL, GX_DF_NONE, GX_AF_NONE); + } + } else { + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, GX_LIGHT_NULL, GX_DF_NONE, GX_AF_NONE); + } + + EMU64_TIMED_SEGMENT_END(dirty_light_time); + this->dirty_light_cnt++; + } + + /* Texture block */ + EMU64_ASSERTLINE_DEBUG(this, 4957); + if (do_texture_matrix >= 0) { + EMU64_TIMED_SEGMENT_BEGIN(); + /* Flags TEXTURE0/1 are checked but not set in any version of the emulator. Not sure on the names. */ + if (IS_DIRTY(EMU64_DIRTY_FLAG_TEX_TILE0) || IS_DIRTY(EMU64_DIRTY_FLAG_21) || + IS_DIRTY(EMU64_DIRTY_FLAG_TEX_TILE1) || IS_DIRTY(EMU64_DIRTY_FLAG_22)) { + SET_DIRTY(EMU64_DIRTY_FLAG_TEX_MTX); + } + + int end_tile = tile + n_tiles + 1; + for (int i = tile; i <= end_tile; i++) { + int t = i & 7; + if (IS_DIRTY(EMU64_DIRTY_FLAG_TEX_TILE0 + t) || IS_DIRTY(EMU64_DIRTY_FLAG_21 + t)) { + EMU64_TIMED_SEGMENT_BEGIN(); + CLEAR_DIRTY(EMU64_DIRTY_FLAG_TEX_TILE0 + t); + CLEAR_DIRTY(EMU64_DIRTY_FLAG_21 + t); + + if (this->use_dolphin_settile[t] == true) { + Gsettile_dolphin* settile_dol_cmd; + emu64_texture_info* tex_info_p; + u16 height; + u16 width; + u32 wrap_s; + u32 wrap_t; + void* img_addr; + GXTexFmts dol_fmt; + + settile_dol_cmd = &this->settile_dolphin_cmds[t]; + tex_info_p = &this->texture_info[t]; + wrap_s = settile_dol_cmd->wrap_s; + wrap_t = settile_dol_cmd->wrap_t; + height = tex_info_p->height; + width = tex_info_p->width; + img_addr = tex_info_p->img_addr; + + dol_fmt.raw = cvtN64ToDol(tex_info_p->format, tex_info_p->size); + if (((u32)img_addr & 0x1F) != 0) { + /* Translation: Texture (%08x) alignment isn't 32 bytes */ + this->Printf0("テクスチャ(%08x)のアライメントが32バイトになっていません\n", img_addr); + img_addr = (void*)((u32)img_addr & ~0x1F); + } + + if ((this->geometry_mode & G_TEXTURE_GEN_LINEAR) != 0 && + aflags[AFLAGS_DO_TEXTURE_LINEAR_CONVERT] != 0) { + img_addr = TextureLinearConvert(img_addr, width, height, tex_info_p->format, tex_info_p->size); + } + + if (tex_info_p->format == G_IM_FMT_CI) { + GXInitTexObjCI(&this->tex_objs[t], img_addr, width, height, dol_fmt.citexfmt, + (GXTexWrapMode)wrap_s, (GXTexWrapMode)wrap_t, GX_FALSE, + settile_dol_cmd->tlut_name); + } else { + GXInitTexObj(&this->tex_objs[t], img_addr, width, height, dol_fmt.texfmt, (GXTexWrapMode)wrap_s, + (GXTexWrapMode)wrap_t, GX_FALSE); + } + + if (((this->othermode_high & G_TF_BILERP) == 0 || (this->othermode_high & G_CYC_COPY) != 0 || + aflags[AFLAGS_TEX_GEN_LOD_MODE] == 1) && + aflags[AFLAGS_TEX_GEN_LOD_MODE] != 2) { + GXInitTexObjLOD(&this->tex_objs[t], GX_NEAR, GX_NEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, + GX_ANISO_1); + } else if (aflags[AFLAGS_TEX_GEN_LOD_MODE] == 3) { + GXInitTexObjLOD(&this->tex_objs[t], GX_NEAR, GX_NEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_TRUE, + GX_ANISO_1); + } + + GXLoadTexObj(&this->tex_objs[t], (GXTexMapID)t); + EMU64_TIMED_SEGMENT_END(dirty_tex1_time); + this->dirty_tex1_cnt++; + } else { + /* N64 texture tile */ + this->setup_texture_tile(t); + EMU64_TIMED_SEGMENT_END(dirty_tex2_time); + this->dirty_tex2_cnt++; + } + + this->dirty_tex_cnt++; + } + } + + EMU64_ASSERTLINE_DEBUG(this, 5026); + if (IS_DIRTY(EMU64_DIRTY_FLAG_TEX_MTX) && do_texture_matrix != FALSE) { + CLEAR_DIRTY(EMU64_DIRTY_FLAG_TEX_MTX); + EMU64_TIMED_SEGMENT_BEGIN(); + this->texture_matrix(); + this->dirty_texmtx_cnt++; + EMU64_TIMED_SEGMENT_END(dirty_texmtx_time); + } + + EMU64_TIMED_SEGMENT_END(dirty_tex_time); + } + + EMU64_ASSERTLINE_DEBUG(this, 5040); + if (IS_DIRTY(EMU64_DIRTY_FLAG_PROJECTION_MTX)) { + EMU64_TIMED_SEGMENT_BEGIN(); + CLEAR_DIRTY(EMU64_DIRTY_FLAG_PROJECTION_MTX); + GXSetProjection(this->projection_mtx, this->projection_type); + EMU64_TIMED_SEGMENT_END(dirty_proj_time); + } + + EMU64_ASSERTLINE_DEBUG(this, 5047); + EMU64_TIMED_SEGMENT_END(dirty_check_time); + EMU64_ASSERTLINE_DEBUG(this, 5049); +} + +/* Commands */ +void emu64::dl_G_SPNOOP() { +#ifdef EMU64_DEBUG + if (this->print_commands != false) { + this->Printf2("gsSPNoOp(),"); + } +#endif +} + +void emu64::dl_G_DL(void) { + static char s[256]; + Gfx* gfx = this->gfx_p; + + this->work_ptr = (void*)this->seg2k0(gfx->dma.addr); + + switch (gfx->dma.par) { + case G_DL_PUSH: + if (this->segment_set != false) { + this->segment_set = false; + sprintf(s, "%s", this->segchk(gfx->dma.addr)); + this->Printf0(VT_COL(RED, WHITE) "gsSPDisplayList(%s),\n" VT_RST, s); + emu64::warningString[EMU64_WARN_IDX_DL] = s; + emu64::warningTime[EMU64_WARN_IDX_DL] = EMU64_WARN_TIME; + emu64::displayWarning = true; + } + + if (this->DL_stack_level < DL_MAX_STACK_LEVEL) { + this->DL_stack[this->DL_stack_level++] = (u32)(this->gfx_p + 1); + } else { + this->err_count++; + this->Printf0("*** DL stack overflow ***\n"); + } + + this->gfx_p = (Gfx*)((int)this->work_ptr - sizeof(Gfx)); + break; + case G_DL_NOPUSH: + this->gfx_p = (Gfx*)((u32)this->work_ptr - sizeof(Gfx)); + break; + default: + if (this->disable_polygons == false) { + GXCallDisplayList(this->work_ptr, gfx->dma.len); + } + break; + } +} + +void emu64::dl_G_RDPHALF_1(void) { + this->rdpHalf_1 = this->gfx.words.w1; +} + +void emu64::dl_G_TEXRECT() { + Gtexrect2* texrect_p = (Gtexrect2*)this->gfx_p; + +#ifdef EMU64_DEBUG + if (this->print_commands != false) { + this->Printf2("gsSPTextureRectangle(%d,%d,%d,%d,%d,%d,%d,%d,%d),", + texrect_p->xh, /* TODO: check if this is just wrong, or Gtexrect2 flips xh/yh with xl/yl */ + texrect_p->yh, texrect_p->xl, texrect_p->yl, texrect_p->tile, texrect_p->s, texrect_p->t, + texrect_p->dsdx, texrect_p->dtdy); + } +#endif + + if (this->disable_polygons == false) { + this->dirty_check(texrect_p->tile, 0, 0); + +#ifdef EMU64_DEBUG + if (aflags[AFLAGS_SKIP_DRAW_RECTANGLE] == 0) { +#endif + this->draw_rectangle(texrect_p); +#ifdef EMU64_DEBUG + } +#endif + } + + this->gfx_p += 2; /* Increment by two here, the emulator will increment by another for the full Gtexrect2 size */ +} + +void emu64::dl_G_LOAD_UCODE() { +#ifdef EMU64_DEBUG + u16 uc_dsize = this->gfx.words.w0 & 0xFFFF; + if (uc_dsize == 0x7FF) { + if (this->print_commands != false) { + this->Printf1("gsSPLoadUcode(%s, 0x%08x),", segchk(this->gfx.words.w1), this->rdpHalf_1); + } + } else if (this->print_commands != false) { + this->Printf1("gsSPLoadUcodeEx(%s, 0x%08x, 0x%05x),", this->segchk(this->gfx.words.w1), this->rdpHalf_1, + uc_dsize + 1); + } +#endif + + this->emu64_change_ucode((void*)this->seg2k0(this->gfx.words.w1)); + this->load_ucode_calls++; +} + +void emu64::dl_G_ENDDL() { +#ifdef EMU64_DEBUG + + if (this->print_commands) { + this->Printf1("gsSPEndDisplayList(),"); + } + +#endif + + if (this->DL_stack_level <= 0) { + this->end_dl = TRUE; + } else { + /* subtract one because emulator will add one after processing */ + this->gfx_p = (Gfx*)this->DL_stack[--this->DL_stack_level] - 1; + } +} + +void emu64::dl_G_SETTILE() { + Gsettile* settile = (Gsettile*)this->gfx_p; + +#ifdef EMU64_DEBUG + if (this->print_commands != false) { + const char* s_wrapmode; + int s_wrap = settile->ms + (settile->cs << 1); + if (s_wrap == G_TX_WRAP) { + s_wrapmode = "G_TX_WRAP"; + } else if (s_wrap == G_TX_MIRROR) { + s_wrapmode = "G_TX_MIRROR"; + } else if (s_wrap == G_TX_CLAMP) { + s_wrapmode = "G_TX_CLAMP"; + } else { /* s_wrap == G_TX_MIRROR|G_TX_CLAMP */ + s_wrapmode = "G_TX_MIRROR|G_TX_CLAMP"; + } + + const char* t_wrapmode; + int t_wrap = settile->mt + (settile->ct << 1); + if (t_wrap == G_TX_WRAP) { + t_wrapmode = "G_TX_WRAP"; + } else if (t_wrap == G_TX_MIRROR) { + t_wrapmode = "G_TX_MIRROR"; + } else if (t_wrap == G_TX_CLAMP) { + t_wrapmode = "G_TX_CLAMP"; + } else { /* t_wrap == G_TX_MIRROR|G_TX_CLAMP */ + t_wrapmode = "G_TX_MIRROR|G_TX_CLAMP"; + } + + const char* s_siz; + int siz = settile->siz; + if (siz == G_IM_SIZ_4b) { + s_siz = "4b"; + } else if (siz == G_IM_SIZ_8b) { + s_siz = "8b"; + } else if (siz == G_IM_SIZ_16b) { + s_siz = "16b"; + } else { /* siz == G_IM_SIZ_32b */ + s_siz = "32b"; + } + + const char* s_fmt; + int fmt = settile->fmt; + if (fmt == G_IM_FMT_RGBA) { + s_fmt = "RGBA"; + } else if (fmt == G_IM_FMT_YUV) { + s_fmt = "YUV"; + } else if (fmt == G_IM_FMT_CI) { + s_fmt = "CI"; + } else if (fmt == G_IM_FMT_IA) { + s_fmt = "IA"; + } else { /* fmt == G_IM_FMT_I */ + s_fmt = "I"; + } + + this->Printf2("gsDPSetTile(G_IM_FMT_%s, G_IM_SIZ_%s,%d,%d,%d,%d,%s,%d,%d,%s,%d,%d),", s_fmt, s_siz, + settile->line, settile->tmem, settile->tile, settile->palette, t_wrapmode, settile->maskt, + settile->shiftt, s_wrapmode, settile->masks, settile->shifts); + } +#endif + + this->use_dolphin_settile[settile->tile] = false; + bzero(&this->settile_dolphin_cmds[settile->tile], sizeof(Gsettile_dolphin)); + this->settile_cmds[settile->tile] = *settile; + this->dirty_flags[EMU64_DIRTY_FLAG_TEX_TILE0 + settile->tile] = true; +} + +void emu64::dl_G_SETTILE_DOLPHIN() { + Gsettile_dolphin* settile_dolphin = (Gsettile_dolphin*)this->gfx_p; + +#ifdef EMU64_DEBUG + if (this->print_commands != false) { + this->Printf2("gsDPSetTile_Dolphin(G_TF_%s,%d,%d,GX_%s,GX_%s,%d,%d),", dolfmttbl[settile_dolphin->dol_fmt], + settile_dolphin->tile, settile_dolphin->tlut_name, doltexwrapmode[settile_dolphin->wrap_s], + doltexwrapmode[settile_dolphin->wrap_t], settile_dolphin->shift_s, settile_dolphin->shift_t); + } +#endif + + this->use_dolphin_settile[settile_dolphin->tile] = true; + this->settile_dolphin_cmds[settile_dolphin->tile] = *settile_dolphin; + bzero(&this->settile_cmds[settile_dolphin->tile], sizeof(Gsettile)); + this->setimg2_cmds[settile_dolphin->tile] = this->now_setimg.setimg2; + + /* Setup tile size using S (X): [0, width - 1], T (Y): [0, height - 1] */ + this->settilesize_dolphin_cmds[settile_dolphin->tile].sl = 0; + this->settilesize_dolphin_cmds[settile_dolphin->tile].tl = 0; + this->settilesize_dolphin_cmds[settile_dolphin->tile].slen = this->now_setimg.setimg2.wd; + this->settilesize_dolphin_cmds[settile_dolphin->tile].tlen = EXPAND_HEIGHT(this->now_setimg.setimg2.ht) - 1; + + /* Set texture info for use in GC texture object initialization */ + this->texture_info[settile_dolphin->tile].img_addr = (void*)this->now_setimg.setimg2.imgaddr; + this->texture_info[settile_dolphin->tile].format = this->now_setimg.setimg2.fmt; + this->texture_info[settile_dolphin->tile].size = this->now_setimg.setimg2.siz; + this->texture_info[settile_dolphin->tile].width = EXPAND_WIDTH(this->now_setimg.setimg2.wd); + this->texture_info[settile_dolphin->tile].height = EXPAND_HEIGHT(this->now_setimg.setimg2.ht); + + /* Mark texture tile as dirty */ + this->dirty_flags[EMU64_DIRTY_FLAG_TEX_TILE0 + settile_dolphin->tile] = true; +} + +void emu64::dl_G_LOADTILE() { + Gloadtile& loadtile = this->gfx_p->loadtile; + +#ifdef EMU64_DEBUG + if (this->print_commands) { + this->Printf2("gsDPLoadTile(%d,%d,%d,%d,%d),", loadtile->tile, loadtile->sl, loadtile->tl, loadtile->sh, + loadtile->th); + } +#endif + + /* Check if this image does not support gsDPLoadTile() */ + if (this->now_setimg.setimg2.isDolphin != false) + return; + + /* Determine tmem base address */ + u32 dram = this->now_setimg.setimg2.imgaddr; + dram += ((loadtile.tl / 4) * EXPAND_WIDTH(this->now_setimg.setimg2.wd) + (loadtile.sl / 4) + << this->now_setimg.setimg2.siz) / + 2; + +#ifdef EMU64_DEBUG + if (this->print_commands) { + this->Printf2("\n [%d %d]-[%d %d] tmem=%d dram=%08x\n", sl, tl, loadtile.sh / 4, loadtile.tl / 4, tmem, dram); + } +#endif + + int tmem_idx = this->settile_cmds[loadtile.tile].tmem / 4; + + /* Copy setup values to tmem */ + tmem_map[tmem_idx].addr = (void*)dram; + tmem_map[tmem_idx].loadtile = loadtile; + tmem_map[tmem_idx].setimg2 = this->now_setimg.setimg2; + +#ifdef EMU64_DEBUG + if (this->print_commands) { + this->Printf3("tmem_map[%d]=%08x\n", tmem_idx, addr); + } +#endif +} + +void emu64::dl_G_LOADBLOCK() { + int tmem_idx; + Gloadblock* loadblock = (Gloadblock*)this->gfx_p; + u32 addr; + int i; + +#ifdef EMU64_DEBUG + u32 start = osGetCount(); + + if (this->print_commands) { + this->Printf2("gsDPLoadBlock(%d,%d,%d,%d,%d),", loadblock->tile, loadblock->sl, loadblock->tl, loadblock->sh, + loadblock->th); + } +#endif + + if (this->now_setimg.setimg2.isDolphin != false) + return; /* Does not support LOAD commands */ + + tmem_idx = this->settile_cmds[loadblock->tile].tmem / 4; + addr = this->now_setimg.setimg2.imgaddr; + for (i = tmem_idx; i < tmem_idx + (loadblock->sh + 1) / 16; i++) { + tmem_map[i].addr = (void*)addr; + tmem_map[i].loadblock = *loadblock; + tmem_map[i].setimg2 = this->now_setimg.setimg2; + addr += 16 * sizeof(u16); + } + +#ifdef EMU64_DEBUG + this->loadblock_time += (osGetCount() - start); +#endif +} + +void emu64::dl_G_SETTILESIZE() { + Gsettilesize* settilesize = (Gsettilesize*)this->gfx_p; + Gsettilesize_Dolphin* settilesize_dolphin = (Gsettilesize_Dolphin*)this->gfx_p; + + if (settilesize_dolphin->isDolphin) { +#ifdef EMU64_DEBUG + /* Seems they checked it twice in source code... */ + if (this->print_commands != false && this->print_commands != false) { + this->Printf2("gsDPSetTileSize_Dolphin(%d,%d,%d,%d,%d),", settilesize_dolphin->tile, + settilesize_dolphin->sl, settilesize_dolphin->tl, settilesize_dolphin->slen, + settilesize_dolphin->tlen); + } +#endif + + this->settilesize_dolphin_cmds[settilesize_dolphin->tile] = *(Gsettilesize_Dolphin*)this->gfx_p; + } else { /* Gsettilesize */ + u16 s_len = (((settilesize->sh) - (settilesize->sl)) >> 2) + 1; + u16 t_len = ((settilesize->th - (settilesize->tl)) >> 2) + 1; + +#ifdef EMU64_DEBUG + if (this->print_commands != false) { + if (this->print_commands != false) { + this->Printf2("gsDPSetTileSize(%d,%d,%d,%d,%d),", settilesize->tile, settilesize->sl, settilesize->tl, + settilesize->sh, settilesize->th); + } + + if (this->print_commands != false) { + this->Printf2(" /* %dx%d */", s_len, t_len + 1); + } + } +#endif + + /* Convert from N64 Gsettilesize to Gsettilesize_dolphin */ + this->settilesize_dolphin_cmds[settilesize->tile].sl = settilesize->sl * 4; + this->settilesize_dolphin_cmds[settilesize->tile].tl = settilesize->tl * 4; + this->settilesize_dolphin_cmds[settilesize->tile].slen = s_len - 1; + this->settilesize_dolphin_cmds[settilesize->tile].tlen = t_len - 1; + this->settilesize_dolphin_cmds[settilesize->tile].tile = settilesize->tile; + } + + /* Mark texture tile as dirty */ + this->dirty_flags[EMU64_DIRTY_FLAG_TEX_TILE0 + settilesize_dolphin->tile] = true; +} + +void emu64::dl_G_LOADTLUT() { + Gloadtlut_dolphin* loadtlut_dol = (Gloadtlut_dolphin*)this->gfx_p; + u16 count; + void* tlut_addr; + u32 tlut_name; + void* aligned_addr; + + EMU64_TIMED_SEGMENT_BEGIN(); + + if (loadtlut_dol->type == 2) { + EMU64_LOGF("gsDPLoadTLUT_Dolphin(%d, %d, %s),", loadtlut_dol->tlut_name, loadtlut_dol->count, + this->segchk(loadtlut_dol->tlut_addr)); + + if (this->disable_polygons == false) { + count = loadtlut_dol->count & 0x3FFF; + tlut_name = loadtlut_dol->tlut_name; + tlut_addr = (void*)this->seg2k0(loadtlut_dol->tlut_addr); + + if (tlut_addr == this->tlut_addresses[tlut_name]) { + /* Translation: ### Same TLUT address */ + EMU64_INFO("### 同じTLUTアドレスです\n"); + } else { /* tlut_addr != this->tlut_addresses[tlut_name] */ + aligned_addr = tlut_addr; + + this->tlut_addresses[tlut_name] = tlut_addr; + if (tlut_addr != nullptr) { + if (((u32)tlut_addr & (0x1F)) != 0) { + /* The alignment of the palette (%08x) is not 32 bytes. */ + EMU64_PRINTF( + VT_COL(RED, WHITE) "パレット(%08x)のアライメントが32バイトになっていません\n" VT_RST, + tlut_addr) + + aligned_addr = (void*)((u32)tlut_addr & (~0x1F)); + } + + GXInitTlutObj(&this->tlut_objs[tlut_name], aligned_addr, GX_TL_RGB5A3, count); + GXLoadTlut(&this->tlut_objs[tlut_name], tlut_name); + + EMU64_INFOF("GXInitTlutObj %08x %d pal_no=%d\n", tlut_addr, count, tlut_name); + } + } + } + } else { + Gfx* loadtlut = this->gfx_p; + + EMU64_LOGF("gsDPLoadTLUTCmd(%d,%d),", loadtlut->loadtlut.tile, (loadtlut->words.w1 >> 14) & 0x3FF); + + Gsettile* settile_p = &this->settile_cmds[loadtlut->loadtlut.tile]; + + if (this->disable_polygons == false) { + u16 count = ((loadtlut->words.w1 >> 14) & 0x3FF) + 1; + void* tlut; + u32 addr = this->now_setimg.setimg2.imgaddr; + u32 tlut_name = (settile_p->tmem / 16) & 0xF; + + if (addr == (u32)this->tlut_addresses[tlut_name]) { + /* Translation: ### Same TLUT address %08x %d */ + EMU64_INFOF("### 同じTLUTアドレスです %08x %d\n", addr, tlut_name); + } else { + /* Convert TLUT */ + if (this->now_setimg.setimg2.isDolphin) { + tlut = (void*)addr; + } else { + tlut = this->tlutconv_new((u16*)addr, EMU64_TLUT_RGBA5551, count); + } + + if (tlut != nullptr) { + while (count != 0) { + tlut_addresses[tlut_name] = (void*)addr; + GXInitTlutObj(&this->tlut_objs[tlut_name], tlut, GX_TL_RGB5A3, count); + GXLoadTlut(&this->tlut_objs[tlut_name], tlut_name); + + EMU64_INFOF("GXInitTlutObj %08x %d pal_no=%d\n", addr, (u16)count, tlut_name); + + tlut_name++; + count -= 16; + addr += 16 * sizeof(u16); + tlut = ((u16*)tlut) + 16; + } + } + } + } + } + + EMU64_TIMED_SEGMENT_END(loadtlut_time); +} + +void emu64::dl_G_SETCOMBINE_NOTEV() { + u64* combine = (u64*)&this->gfx; + s8 print_commands = this->print_commands; + + if (print_commands) { + this->print_combine(*combine); + } + + /* Update combiner settings only if it changed */ + ((Gsetcombine_new*)combine)->cmd = G_SETCOMBINE; + if (*(u64*)&this->combine_gfx != *combine) { + *(u64*)&this->combine_gfx = *combine; + this->dirty_flags[EMU64_DIRTY_FLAG_COMBINE] = true; + } +} + +void emu64::dl_G_SETCOMBINE() { + u64* combine = (u64*)&this->gfx; + s8 print_commands = this->print_commands; + + if (print_commands) { + this->print_combine(*combine); + } + + /* Update combiner settings only if it changed */ + if (*(u64*)&this->combine_gfx != *combine) { + *(u64*)&this->combine_gfx = *combine; + this->dirty_flags[EMU64_DIRTY_FLAG_COMBINE] = true; + } + + /* N64 Combiner -> GC TEV */ + if (this->gfx_cmd != G_SETCOMBINE_NOTEV && aflags[AFLAGS_SKIP_COMBINE_TEV] == 0) { + this->replace_combine_to_tev(this->gfx_p); + } +} + +void emu64::dl_G_SETCOMBINE_TEV() { + u64* combine_tev = (u64*)&this->gfx; + s8 print_commands = this->print_commands; + + if (print_commands) { + this->print_combine_tev(*combine_tev); + } + + /* Update combiner settings only if it changed */ + if (*(u64*)&this->combine_gfx != *combine_tev) { + *(u64*)&this->combine_gfx = *combine_tev; + this->dirty_flags[EMU64_DIRTY_FLAG_COMBINE] = true; + } +} + +typedef struct { + const char* name; + int val; +} OtherModeOpt; + +typedef struct { + char* name; + int shift; + int len; + OtherModeOpt opts[4]; +} OthermodeParameterInfo; + +static const OthermodeParameterInfo h_tbl[] = { + { + "SetAlphaDither", + 4, + 2, + { + { "G_AD_PATTERN", 0 << 4 }, + { "G_AD_NOPATTERN", 1 << 4 }, + { "G_AD_NOISE", 2 << 4 }, + { "G_AD_DISABLE", 3 << 4 }, + }, + }, + { + "SetColorDither", + 6, + 2, + { + { "G_CD_MAGICSQ", 0 << 6 }, + { "G_CD_BAYER", 1 << 6 }, + { "G_CD_NOISE", 2 << 6 }, + { "G_CD_DISABLE", 3 << 6 }, + }, + }, + { + "SetCombineKey", + 8, + 1, + { + { "G_CK_NONE", 0 << 8 }, + { "G_CK_KEY", 1 << 8 }, + { "-1", -1 }, + { "-1", -1 }, + }, + }, + { + "SetTextureConvert", + 9, + 3, + { + { "G_TC_CONV", 0 << 9 }, + { "G_TC_FILTCONV", 5 << 9 }, + { "G_TC_FILT", 6 << 9 }, + { "-1", -1 }, + }, + }, + { + "SetTextureFilter", + 12, + 2, + { + { "G_TF_POINT", 0 << 12 }, + { "G_TF_AVERAGE", 3 << 12 }, + { "G_TF_BILERP", 2 << 12 }, + { "-1", -1 }, + }, + }, + { + "SetTextureLUT", + 14, + 2, + { + { "G_TT_NONE", 0 << 14 }, + { "G_TT_RGBA16", 2 << 14 }, + { "G_TT_IA16", 3 << 14 }, + { "-1", -1 }, + }, + }, + { + "SetTextureLOD", + 16, + 1, + { + { "G_TL_TILE", 0 << 16 }, + { "G_TL_LOD", 1 << 16 }, + { "-1", -1 }, + { "-1", -1 }, + }, + }, + { + "SetTextureDetail", + 17, + 2, + { + { "G_TD_CLAMP", 0 << 17 }, + { "G_TD_SHARPEN", 1 << 17 }, + { "G_TD_DETAIL", 2 << 17 }, + { "-1", -1 }, + }, + }, + { + "SetTexturePersp", + 19, + 1, + { + { "G_TP_PERSP", 0 << 19 }, + { "G_TP_NONE", 1 << 19 }, + { "-1", -1 }, + { "-1", -1 }, + }, + }, + { + "SetCycleType", + 20, + 2, + { + { "G_CYC_1CYCLE", 0 << 20 }, + { "G_CYC_2CYCLE", 1 << 20 }, + { "G_CYC_COPY", 2 << 20 }, + { "G_CYC_FILL", 3 << 20 }, + }, + }, + { + "PipelineMode", + 23, + 1, + { + { "G_PM_1PRIMITIVE", 1 << 23 }, + { "G_PM_NPRIMITIVE", 0 << 23 }, + { "-1", -1 }, + { "-1", -1 }, + }, + }, +}; + +void emu64::dl_G_SETOTHERMODE_H() { + GsetothermodeH* othermodeH = &this->gfx.setothermodeH; + u32 sft; + u32 len; + u32 data; + + len = othermodeH->len + 1; + sft = (32 - othermodeH->sft) - len; + data = othermodeH->data; + + if ((this->print_commands & EMU64_PRINTF2_FLAG) != 0) { + for (int i = 0; i < ARRAY_COUNT(h_tbl); i++) { + const OthermodeParameterInfo* info = &h_tbl[i]; + + if (sft == info->shift) { + for (int opt = 0; opt < 4; opt++) { + if (data == info->opts[opt].val) { + EMU64_LOGF("gsDP%s(%s),", info->name, info->opts[i].name); + goto exit; + } + } + } + + info++; + } + + /* We didn't find the param */ + EMU64_LOGF("gsSPSetOtherModeH(%d, %d, 0x%08x),", sft, len, data); + } + +exit: + if (this->othermode_high != (data | (this->othermode_high & (1 - (1 << len) << sft) - 1u))) { + this->othermode_high = (data | (this->othermode_high & (1 - (1 << len) << sft) - 1u)); + this->dirty_flags[EMU64_DIRTY_FLAG_OTHERMODE_HIGH] = true; + } +} + +static const OthermodeParameterInfo l_tbl[] = { + { + "gsDPSetAlphaCompare", + 0, + 2, + { + { "G_AC_NONE", 0 << 0 }, + { "G_AC_THRESHOLD", 1 << 0 }, + { "G_AC_DITHER", 3 << 0 }, + { "-1", -1 }, + }, + }, + { + "gsDPSetDepthSource", + 2, + 1, + { + { "G_ZS_PIXEL", 0 << 2 }, + { "G_ZS_PRIM", 1 << 2 }, + { "-1", -1 }, + { "-1", -1 }, + }, + }, +}; + +void emu64::dl_G_SETOTHERMODE_L() { + u32 sft; + u32 len; + u32 data; + + len = this->gfx.setothermodeL.len + 1; + sft = (32 - this->gfx.setothermodeL.sft) - len; + data = this->gfx.setothermodeL.data; + + if ((this->print_commands & EMU64_PRINTF2_FLAG) != 0) { + if ((int)sft == G_MDSFT_RENDERMODE) { + this->show_render(data); + } else { + for (int i = 0; i < ARRAY_COUNT(l_tbl); i++) { + const OthermodeParameterInfo* info = &l_tbl[i]; + if (sft == info->shift) { + for (int opt = 0; opt < 4; opt++) { + if (data == info->opts[opt].val) { + EMU64_LOGF("gsDP%s(%s),", info->name, info->opts[i].name); + goto exit; + } + } + } + } + } + + /* We didn't find the param */ + EMU64_LOGF("gsSPSetOtherModeL(%d, %d, 0x%08x),", sft, len, data); + } + +exit: + u32 othermode = data | (this->othermode_low & (1 - (1 << len) << sft) - 1u); + if (this->othermode_low != othermode) { + this->dirty_flags[EMU64_DIRTY_FLAG_FOG] = true; + this->othermode_low = othermode; + this->dirty_flags[EMU64_DIRTY_FLAG_OTHERMODE_LOW] = true; + } +} + +void emu64::dl_G_RDPSETOTHERMODE() { + /* Debug output */ + if ((this->print_commands & EMU64_PRINTF_ENABLED_FLAG) != 0) { + EMU64_LOG("gsDPSetOtherMode("); + + /* Process high commands first */ + u32 h = this->gfx.words.w0 & 0xFFFFFF; + for (int i = 0; i < ARRAY_COUNT(h_tbl); i++) { + const OthermodeParameterInfo* info = &h_tbl[i]; + u32 mask = (0xFFFFFFFF >> (32 - info->len)) << info->shift; + u32 param = h & mask; + + for (int opt = 0; opt < 4; opt++) { + if (param == info->opts[opt].val) { + EMU64_LOGF("%s%s", info->opts[opt].name, i < NUM_OTHERMODE_HIGH_CMDS - 1 ? "|" : ""); + goto h_found; + } + } + + EMU64_LOGF("%08x(%08x:%08x)%s", param, h, mask, i < NUM_OTHERMODE_HIGH_CMDS - 1 ? "|" : ""); + h_found: + continue; + } + + EMU64_LOG(", "); + + /* Process low commands */ + u32 l = this->gfx.words.w1; + for (int i = 0; i < ARRAY_COUNT(l_tbl); i++) { + const OthermodeParameterInfo* info = &l_tbl[i]; + u32 mask = (0xFFFFFFFF >> (32 - info->len)) << info->shift; + u32 param = l & mask; + + for (int opt = 0; opt < 4; opt++) { + if (param == info->opts[opt].val) { + EMU64_LOGF("%s%s", info->opts[opt].name, i < NUM_OTHERMODE_LOW_CMDS - 1 ? "|" : ""); + goto l_found; + } + } + + EMU64_LOGF("%08x(%08x:%08x)%s", param, h, mask, i < NUM_OTHERMODE_LOW_CMDS - 1 ? "|" : ""); + l_found: + continue; + } + + EMU64_LOG("),"); + } + + /* Actual command processing */ + u32 othermode_h = this->gfx.words.w0 & 0xFFFFFF; + if (this->othermode_high != othermode_h) { + this->othermode_high = othermode_h; + this->dirty_flags[EMU64_DIRTY_FLAG_OTHERMODE_HIGH] = true; + } + + if (this->othermode_low != this->gfx.words.w1) { + this->dirty_flags[EMU64_DIRTY_FLAG_FOG] = true; + this->othermode_low = this->gfx.words.w1; + this->dirty_flags[EMU64_DIRTY_FLAG_OTHERMODE_LOW] = true; + } +} + +void emu64::dl_G_SETSCISSOR() { + u8 print_commands = this->print_commands; + Gscissor* scissor = (Gscissor*)this->gfx_p; + +#ifdef EMU64_DEBUG + + if (print_commands & EMU64_PRINT_FLAG_ENABLE != 0) { + const char* mode; + if (scissor->pad == G_SC_NON_INTERLACE) { + mode = "G_SC_NON_INTERLACE"; + } else if (scissor->pad == G_SC_ODD_INTERLACE) { + mode = "G_SC_ODD_INTERLACE"; + } else if (scissor->pad == G_SC_EVEN_INTERLACE) { + mode = "G_SC_EVEN_INTERLACE"; + } else { + mode = "???"; + } + + int x0frac = scissor->x0frac; + int y0frac = scissor->y0frac; + int x1frac = scissor->x1frac; + int y1frac = scissor->y1frac; + + if ((x0frac | y0frac | x1frac | y1frac) == 0) { + if (print_commands != false) { + this->Printf2("gsDPSetScissor(%s, %d, %d, %d, %d),", mode, scissor->x0, scissor->y0, scissor->x1, + scissor->y1); + } + } else if (print_commands != false) { + this->Printf2("gsDPSetScissorFrac(%s, %d, %d, %d, %d),", mode, scissor->x0 * 4 + x0frac, + scissor->y0 * 4 + y0frac, scissor->x1 * 4 + x1frac, scissor->y1 * 4 + y1frac); + } + } + +#endif + + /* NOTE: fractional scissor components are ignored */ + if (this->disable_polygons == false) { + GXSetScissor(scissor->x0, scissor->y0, scissor->x1, scissor->y1); + } +} + +void emu64::dl_G_FILLRECT() { + Gfillrect2* fillrect = (Gfillrect2*)this->gfx_p; + + EMU64_LOGF("gsDPFillRectangle(%d, %d, %d, %d),", fillrect->x1, fillrect->y1, fillrect->x0, fillrect->y0); + + if (this->disable_polygons == false) { + this->dirty_check(-1, -1, 0); + this->fill_rectangle(fillrect->x1, fillrect->y1, fillrect->x0, fillrect->y0); + } +} + +void emu64::dl_G_SETCIMG() { +#ifdef EMU64_DEBUG + if (this->print_commands & EMU64_PRINT_FLAG_ENABLE != 0) { + u32 fmt = this->gfx.setimg.fmt; + u32 siz = this->gfx.setimg.siz; + + if (this->print_commands != false) { + const char* s_siz; + const char* s_fmt; + + if (siz == G_IM_SIZ_4b) { + s_siz = "4b"; + } else if (siz == G_IM_SIZ_8b) { + s_siz = "8b"; + } else if (siz == G_IM_SIZ_16b) { + s_siz = "16b"; + } else { + s_siz = "32b"; + } + + if (fmt == G_IM_FMT_RGBA) { + s_fmt = "RBGA"; + } else if (fmt == G_IM_FMT_YUV) { + s_fmt = "YUV"; + } else if (fmt == G_IM_FMT_CI) { + s_fmt = "CI"; + } else if (fmt == G_IM_FMT_IA) { + s_fmt = "IA"; + } else { + s_fmt = "I"; + } + + this->Printf1("gsDPSetColorImage(G_IM_FMT_%s, G_IM_SIZ_%s, %d, %s),", s_fmt, s_siz, + EXPAND_WIDTH(this->gfx.setimg.wd), this->segchk(this->gfx.setimg.dram)); + } + } +#endif +} + +void emu64::dl_G_SETZIMG() { + EMU64_WARNF("gsDPSetDepthImage(%s),", this->segchk(this->gfx.setimg.dram)); +} + +static char* doltexwrapmode[] = { "CLAMP", "REPEAT", "MIRROR", "?" }; + +static char* dolfmttbl2[4][5] = { + { "CMPR", "Z", "CI", "IA", "I" }, + { "RGBA?", "Z", "CI", "IA", "I" }, + { "RGB4A3", "YUV", "CI", "IA", "RGB565" }, + { "RGBA8888", "Z", "CI?", "IA?", "RGB?" }, +}; + +static char* dolfmttbl[] = { "I4", "I8", "IA4", "IA8", "RGB565", "RGB5A3", "RGBA8", "CMPR" }; + +void emu64::dl_G_SETTIMG() { + Gsetimg2* setimg2 = (Gsetimg2*)this->gfx_p; + +#ifdef EMU64_DEBUG + if (this->print_commands & EMU64_PRINT_FLAG_ENABLE) { + if (setimg2->isDolphin == FALSE) { + Gsetimg* setimg = (Gsetimg*)setimg2; + if (this->print_commands != false) { + const char* s_siz; + const char* s_fmt; + + u32 siz = setimg->siz; + u32 fmt = setimg->fmt; + + if (siz == G_IM_SIZ_4b) { + s_siz = "4b"; + } else if (siz == G_IM_SIZ_8b) { + s_siz = "8b"; + } else if (siz == G_IM_SIZ_16b) { + s_siz = "16b"; + } else { + s_siz = "32b"; + } + + if (fmt == G_IM_FMT_RGBA) { + s_fmt = "RBGA"; + } else if (fmt == G_IM_FMT_YUV) { + s_fmt = "YUV"; + } else if (fmt == G_IM_FMT_CI) { + s_fmt = "CI"; + } else if (fmt == G_IM_FMT_IA) { + s_fmt = "IA"; + } else { + s_fmt = "I"; + } + + this->Printf2("gsDPSetTextureImage(G_IM_FMT_%s, G_IM_SIZ_%s, %d, %s),", s_fmt, s_siz, + EXPAND_WIDTH(setimg->wd), this->segchk(setimg->dram)); + } + } else if (this->print_commands) { + const char* s_siz; + u32 siz = setimg2->siz; + + if (siz == G_IM_SIZ_4b) { + s_siz = "4b"; + } else if (siz == G_IM_SIZ_8b) { + s_siz = "8b"; + } else if (siz == G_IM_SIZ_16b) { + s_siz = "16b"; + } else { + s_siz = "32b"; + } + + this->Printf2("gsDPSetTextureImage_Dolphin(G_IM_FMT_%s, G_IM_SIZ_%s, %d, %d, %s),", + dolfmttbl2[setimg2->siz][setimg2->fmt], s_siz, EXPAND_WIDTH(setimg2->wd), + EXPAND_HEIGHT(setimg2->ht), this->segchk(setimg2->imgaddr)); + } + } +#endif + + this->now_setimg.setimg2 = *setimg2; + this->now_setimg.setimg2.imgaddr = (u32)this->seg2k0(setimg2->imgaddr); +} + +void emu64::dl_G_SETENVCOLOR() { + EMU64_LOGF("gsDPSetEnvColor(%d, %d, %d, %d),", (this->gfx.setcolor.color >> 24) & 0xFF, + (this->gfx.setcolor.color >> 16) & 0xFF, (this->gfx.setcolor.color >> 8) & 0xFF, + (this->gfx.setcolor.color >> 0) & 0xFF); + + if (this->environment_color.raw != this->gfx.setcolor.color) { + this->environment_color.raw = this->gfx.setcolor.color; + this->dirty_flags[EMU64_DIRTY_FLAG_ENV_COLOR] = true; + } +} + +void emu64::dl_G_SETBLENDCOLOR() { + EMU64_LOGF("gsDPSetBlendColor(%d, %d, %d, %d),", (this->gfx.setcolor.color >> 24) & 0xFF, + (this->gfx.setcolor.color >> 16) & 0xFF, (this->gfx.setcolor.color >> 8) & 0xFF, + (this->gfx.setcolor.color >> 0) & 0xFF); + + if (this->blend_color.raw != this->gfx.setcolor.color) { + this->blend_color.raw = this->gfx.setcolor.color; + this->dirty_flags[EMU64_DIRTY_FLAG_BLEND_COLOR] = true; + } +} + +void emu64::dl_G_SETFOGCOLOR() { + EMU64_LOGF("gsDPSetFogColor(%d, %d, %d, %d),", (this->gfx.setcolor.color >> 24) & 0xFF, + (this->gfx.setcolor.color >> 16) & 0xFF, (this->gfx.setcolor.color >> 8) & 0xFF, + (this->gfx.setcolor.color >> 0) & 0xFF); + + if (this->fog_color.raw != this->gfx.setcolor.color) { + this->fog_color.raw = this->gfx.setcolor.color; + this->dirty_flags[EMU64_DIRTY_FLAG_FOG] = true; + } +} + +void emu64::dl_G_SETFILLCOLOR() { + EMU64_LOGF("gsDPSetFillColor(0x%08x),", this->gfx.setcolor.color); + + if (this->fill_color.raw != this->gfx.setcolor.color) { + this->fill_color.raw = this->gfx.setcolor.color; + + u16* color = (u16*)&this->gfx.setcolor.color; + this->fill_tev_color.color.r = (*color >> 8) & 0xF8; + this->fill_tev_color.color.g = (*color >> 3) & 0xF8; + this->fill_tev_color.color.b = (*color << 2) & 0xF8; + + this->dirty_flags[EMU64_DIRTY_FLAG_FILL_COLOR] = true; + this->dirty_flags[EMU64_DIRTY_FLAG_FILL_TEV_COLOR] = true; + } +} + +void emu64::dl_G_SETTEXEDGEALPHA(void) { + Gsettexedgealpha* gfx = (Gsettexedgealpha*)&this->gfx; + + this->tex_edge_alpha = gfx->tex_edge_alpha; + this->dirty_flags[EMU64_DIRTY_FLAG_OTHERMODE_LOW] = TRUE; +} + +void emu64::dl_G_SETPRIMDEPTH() { + EMU64_LOGF("gsDPSetPrimDepth(%d, %d),", (u16)(this->gfx.words.w1 >> 16), (u16)this->gfx.words.w1); + + this->primdepth = this->gfx.words.w1; +} + +void emu64::dl_G_SETPRIMCOLOR() { + EMU64_LOGF("gsDPSetPrimColor(%d, %d, %d, %d, %d, %d),", this->gfx.setcolor.prim_min_level, + this->gfx.setcolor.prim_level, (this->gfx.setcolor.color >> 24) & 0xFF, + (this->gfx.setcolor.color >> 16) & 0xFF, (this->gfx.setcolor.color >> 8) & 0xFF, + (this->gfx.setcolor.color >> 0) & 0xFF); + + if (this->primitive_color.raw != this->gfx.setcolor.color) { + this->primitive_color.raw = this->gfx.setcolor.color; + this->dirty_flags[EMU64_DIRTY_FLAG_PRIM_COLOR] = true; + } + + if (this->fill_tev_color.color.a != this->gfx.setcolor.prim_level) { + this->fill_tev_color.color.a = this->gfx.setcolor.prim_level; + this->dirty_flags[EMU64_DIRTY_FLAG_FILL_TEV_COLOR] = true; + } +} + +void emu64::dl_G_RDPFULLSYNC() { + EMU64_WARN("gsDPFullSync(),"); +} + +void emu64::dl_G_RDPPIPESYNC() { + EMU64_LOG("gsDPPipeSync(),"); + + if (aflags[AFLAGS_FORCE_PIPE_SYNC] == 1 || (aflags[AFLAGS_FORCE_PIPE_SYNC] == 0 && this->rdp_pipe_sync_needed)) { + this->rdp_pipe_sync_needed = false; + } +} + +void emu64::dl_G_RDPTILESYNC() { + EMU64_LOG("gsDPTileSync(),"); +} + +void emu64::dl_G_RDPLOADSYNC() { + EMU64_LOG("gsDPLoadSync(),"); +} + +void emu64::dl_G_NOOP() { + Gnoop* noop = (Gnoop*)&this->gfx; + + switch (noop->tag) { + case G_TAG_NONE: + if (this->gfx.words.w1 == 0) { + EMU64_LOG("gsDPNoOp(),"); + } else { + EMU64_LOGF("gsDPNoOpTag(%08x),", noop->param1); + } + break; + case G_TAG_HERE: + EMU64_WARNF("gsDPNoOpHere([%s:%d]),", (char*)noop->param1, noop->param0); + break; + case G_TAG_STRING: + EMU64_WARNF("gsDPNoOpString(%c%s%c, %d),", '"', (char*)noop->param1, '"', noop->param0); + break; + case G_TAG_WORD: + EMU64_WARNF("gsDPNoOpWord(0x%08x, %d),", noop->param1, noop->param0); + break; + case G_TAG_FLOAT: + EMU64_WARNF("gsDPNoOpFloat(%8.3f, %d),", *(f32*)&noop->param1, noop->param0); + break; + case G_TAG_INFO: + if (noop->param0 == 0) { + EMU64_WARN("gsDPNoOpQuiet(),"); + } else { + EMU64_WARN("gsDPNoOpVerbose(),"); + } + + this->print_commands = noop->param0; + break; + case G_TAG_CALLBACK: +/* They forgot to pass arguments here */ +#ifdef EMU64_FIX_NOOP_CALLBACK_LOG + EMU64_WARNF("gsDPNoOpCallBack(%08x,%d),", noop->param1, noop->param0); +#else + EMU64_WARN("gsDPNoOpCallBack(%08x,%d),"); +#endif + break; + case G_TAG_OPENDISP: + EMU64_WARNF("gsDPNoOpOpenDisp([%s:%d]),", noop->param1, noop->param0); + break; + case G_TAG_CLOSEDISP: + EMU64_WARNF("gsDPNoOpCloseDisp([%s:%d]),", noop->param1, noop->param0); + break; + case G_TAG_FILL: + EMU64_WARN("gsDPNoOpFill(), /* ### 何じゃコリャ */"); /* Rough translation: ### What the hell */ + this->num_unknown_cmds++; + break; + default: + EMU64_WARNF("gsDPNoOpTag3(%02x, %08x, %04x),", tag, noop->param1, noop->param0); + break; + } +} + +typedef struct { + u32 mask; + char* enabled; + char* disabled; +} MatrixInfo; + +static const MatrixInfo gmtxtbl[] = { + { (1 << 2), "G_MTX_PROJECTION", "G_MTX_MODELVIEW" }, + { (1 << 1), "G_MTX_LOAD", "G_MTX_MUL" }, + { (1 << 0), "G_MTX_PUSH", "G_MTX_NOPUSH" }, +}; + +void emu64::dl_G_MTX() { + if (this->print_commands & EMU64_PRINTF_ENABLED_FLAG) { + Gwords gfx_copy = this->gfx_p->words; + EMU64_LOGF("gsSPMatrix(%s, 0", this->segchk(gfx_copy.w1)); + + for (int i = 0; i < ARRAY_COUNT(gmtxtbl); i++) { + EMU64_LOGF("|%s", ((((Gmtx*)this->gfx_p)->type ^ G_MTX_PUSH) & gmtxtbl[i].mask) == 0 ? gmtxtbl[i].disabled + : gmtxtbl[i].enabled); + } + + EMU64_LOG("),"); + + if ((this->print_commands & EMU64_PRINTF3_FLAG) != 0) { + EMU64_LOGF("%08x %08x %08x\n", gfx_copy.w1, this->seg2k0(gfx_copy.w1), this->seg2k0(gfx_copy.w1)); + this->disp_matrix((MtxP)this->seg2k0(gfx_copy.w1)); + } + } + + if (this->disable_polygons == false) { + EMU64_TIMED_SEGMENT_BEGIN(); + + Gmtx* mtx_gfx = (Gmtx*)this->gfx_p; + Mtx_t* mtx = + (Mtx_t*)this->seg2k0(mtx_gfx->addr); /* Matrix is in N64 s16.16 format. (First 8 elements are s16 integer + components, second 8 elements are s16 fractional components) */ + GC_Mtx mtx34; + Mtx44 mtx44; /* float-based matrix */ + + /* Convert our s16.u16 matrix into a f32 matrix. */ + N64Mtx_to_DOLMtx((Mtx*)mtx, mtx34); + + if ((mtx_gfx->type & G_MTX_PROJECTION) != G_MTX_MODELVIEW) { /* Projection */ + N64Mtx_to_DOLMtx((Mtx*)mtx, mtx44); + if ((mtx_gfx->type & G_MTX_LOAD) != G_MTX_MUL) { + if ((u16)(*mtx)[1][3] == 0) { /* If the last entry is 0, this should be a perspective projection. + Otherwise, it's likely an orthographic projection. */ + this->near = mtx44[2][3] * ((mtx44[2][2] + 1.0f) / (mtx44[2][2] - 1.0f) - 1.0f) / 2.0f; + this->far = this->near * ((mtx44[2][2] - 1.0f) / (mtx44[2][2] + 1.0f) + 1.0f); + mtx44[2][2] = this->near / (this->near - this->far); + mtx44[2][3] = (this->near * this->far) / (this->near - this->far); + bcopy(mtx34, this->original_projection_mtx, sizeof(this->original_projection_mtx)); + bcopy(mtx44, this->position_mtx, sizeof(Mtx44)); + this->projection_type = GX_PERSPECTIVE; + } else { /* Orthographic projection */ + this->near = (mtx44[2][3] + 1.0f) / mtx44[2][2]; + this->far = (mtx44[2][3] - 1.0f) / mtx44[2][2]; + mtx44[2][2] = 1.0f / (this->near - this->far); + mtx44[2][3] = this->far / (this->near - this->far); + bcopy(mtx34, this->original_projection_mtx, sizeof(this->original_projection_mtx)); + /* @BUG - this overwrites part of the first entry in model_view_mtx_stack */ + bcopy(mtx44, this->position_mtx, sizeof(Mtx44)); + this->projection_type = GX_ORTHOGRAPHIC; + } + + MTXIdentity(this->position_mtx); + this->dirty_flags[EMU64_DIRTY_FLAG_PROJECTION_MTX] = true; + this->dirty_flags[EMU64_DIRTY_FLAG_FOG] = true; + } else { + bcopy(mtx44, &this->position_mtx, sizeof(GC_Mtx)); /* Last row of Mtx44 is ignored */ + } + } else { /* Modelview */ + GC_Mtx& concat_src = this->model_view_mtx_stack[this->mtx_stack_size]; + + if ((mtx_gfx->type & G_MTX_PUSH) == G_MTX_NOPUSH) { + if (this->mtx_stack_size < MTX_STACK_SIZE - 1) { + this->mtx_stack_size++; + } else { + this->Printf0("gsSPMatrix StackOverflow.\n"); + this->err_count++; + } + } + + GC_Mtx& model_view_src = this->model_view_mtx_stack[this->mtx_stack_size]; + if ((mtx_gfx->type & G_MTX_LOAD) != G_MTX_MUL) { + bcopy(mtx34, model_view_src, sizeof(GC_Mtx)); + } else { + MTXConcat(concat_src, mtx34, model_view_src); + } + + if (aflags[AFLAGS_COPY_POSITION_MTX] == 0) { + GC_Mtx& src = this->model_view_mtx_stack[mtx_stack_size]; + + for (int i = 0; i < 3; i++) { + this->model_view_mtx[i][0] = src[i][0]; + this->model_view_mtx[i][1] = src[i][1]; + this->model_view_mtx[i][2] = src[i][2]; + this->model_view_mtx[i][3] = 0.0f; + } + } else { + MTXCopy(this->model_view_mtx_stack[this->mtx_stack_size], this->model_view_mtx); + this->model_view_mtx[0][3] = 0.0f; + this->model_view_mtx[1][3] = 0.0f; + this->model_view_mtx[2][3] = 0.0f; + } + + if (aflags[AFLAGS_SKIP_MTX_NORMALIZATION] == 0 || this->geometry_mode & G_TEXTURE_GEN != 0) { + /* Normalize matrix */ + guMtxNormalize(this->model_view_mtx); + } + + GXLoadNrmMtxImm(this->model_view_mtx, NONSHARED_MTX); + } + + this->dirty_flags[EMU64_DIRTY_FLAG_POSITION_MTX] = true; + if (this->dirty_flags[EMU64_DIRTY_FLAG_POSITION_MTX] != false) { + this->dirty_flags[EMU64_DIRTY_FLAG_POSITION_MTX] = false; + MTXConcat(position_mtx, this->model_view_mtx_stack[mtx_stack_size], + this->position_mtx_stack[mtx_stack_size]); + GXLoadPosMtxImm(this->position_mtx_stack[this->mtx_stack_size], NONSHARED_MTX); + } + + EMU64_TIMED_SEGMENT_END(matrix_time); + } +} + +void emu64::dl_G_VTX() { + EMU64_TIMED_SEGMENT_BEGIN(); + + Gvtx* vtx_gfx = (Gvtx*)&this->gfx; + u32 n = vtx_gfx->n; /* number of vertices */ + int vn = vtx_gfx->vn; + u32 v0 = (vn >> 1) - n; /* first vertex to load */ + + this->total_vertices += n; + + this->vtx_load_calls++; + + if ((this->print_commands & EMU64_PRINTF_ENABLED_FLAG)) { + EMU64_LOGF("gsSPVertex(%s, %d, %d),", this->segchk(this->gfx.dma.addr), n, v0); + if ((this->print_commands & EMU64_PRINTF3_FLAG) != 0) { + this->work_ptr = (void*)this->seg2k0(this->gfx.dma.addr); + this->show_vtx((Vtx*)work_ptr, n, v0); + } + } + + if (this->disable_polygons == false) { + Vtx* vtx_p = (Vtx*)this->seg2k0(this->gfx.dma.addr); + Vertex* emu_vtx_p = &this->vertices[v0]; + + GC_Mtx& position_mtx = this->position_mtx_stack[this->mtx_stack_size]; + if ((this->print_commands & (1 << 5)) != 0) { + /* NOTE: They print a 4x4 matrix, but position matrix is only 3x4. */ + this->disp_matrix(position_mtx); + } + + while (n != 0) { + /* Convert position */ + OSs16tof32(&vtx_p->n.ob[0], &emu_vtx_p->position.x); + OSs16tof32(&vtx_p->n.ob[1], &emu_vtx_p->position.y); + OSs16tof32(&vtx_p->n.ob[2], &emu_vtx_p->position.z); + + /* Flag */ + if (aflags[AFLAGS_FORCE_VTX_FLAG_COPY] == 0 && (this->geometry_mode & G_TEXTURE_GEN) != 0) { + emu_vtx_p->flag = MTX_SHARED; + } else { + emu_vtx_p->flag = vtx_p->n.flag & MTX_NONSHARED; + } + + /* Texture Coordinates */ + emu_vtx_p->tex_coords.s = vtx_p->n.tc[0]; + emu_vtx_p->tex_coords.t = vtx_p->n.tc[1]; + + /* Normal */ + emu_vtx_p->normal.x = fastcast_float(&vtx_p->n.n[0]); + emu_vtx_p->normal.y = fastcast_float(&vtx_p->n.n[1]); + emu_vtx_p->normal.z = fastcast_float(&vtx_p->n.n[2]); + + /* Check vertex normal modification type. In AC/e+ only VECNormalize is utilized. */ + if (aflags[AFLAGS_VTX_NORMAL_MODIFY_TYPE] == 0 && (this->geometry_mode & G_TEXTURE_GEN) != 0) { + PSVECNormalize(&emu_vtx_p->normal, &emu_vtx_p->normal); + } else if (aflags[AFLAGS_VTX_NORMAL_MODIFY_TYPE] == 2) { + emu_vtx_p->normal.x *= (1.0f / 120.0f); + emu_vtx_p->normal.y *= (1.0f / 120.0f); + emu_vtx_p->normal.z *= (1.0f / 120.0f); + } else if (aflags[AFLAGS_VTX_NORMAL_MODIFY_TYPE] == 3) { + emu_vtx_p->normal.x *= (1.0f / 128.0f); + emu_vtx_p->normal.y *= (1.0f / 128.0f); + emu_vtx_p->normal.z *= (1.0f / 128.0f); + } + + /* Convert vectors to correct space */ + if ((emu_vtx_p->flag & MTX_NONSHARED) == MTX_SHARED) { + PSMTXMultVec(position_mtx, &emu_vtx_p->position, + &emu_vtx_p->position); /* Position -> Projection Matrix */ + PSMTXMultVec(this->model_view_mtx, &emu_vtx_p->normal, &emu_vtx_p->normal); /* Normal -> View Matrix */ + } + + /* Color */ + emu_vtx_p->color.raw = *(u32*)(&vtx_p->v.cn[0]); + + vtx_p++; + emu_vtx_p++; + n--; + } + } + + EMU64_TIMED_SEGMENT_END(spvertex_time); +} + +void emu64::dl_G_MODIFYVTX() { +#ifdef EMU64_DEBUG + if (this->print_commands != false) { + u8 where = this->gfx.dma.par; + const char* s_where; + if (where == G_MWO_POINT_RGBA) { + s_where = "RGBA"; + } else if (where == G_MWO_POINT_ST) { + s_where = "ST"; + } else if (where == G_MWO_POINT_XYSCREEN) { + s_where = "XYSCREEN"; + } else if (where == G_MWO_POINT_ZSCREEN) { + s_where = "ZSCREEN"; + } else { + s_where = "???"; + } + + this->Printf2("gsSPModifyVertex(%d, G_MWO_POINT_%s, %08x),", (u16)(this->gfx.words.w0), s_where, + this->gfx.words.w1); + } +#endif + +/* This is broken. G_MODIFYVTX modifies a single vertex. They use the "where" component instead of adding one. */ +#ifdef EMU64_FIX_MODIFYVTX_LOADED_COUNT + this->total_vertices++; +#else + this->total_vertices += this->gfx.dma.par; +#endif + + this->vtx_load_calls++; + this->Printf0("gsSPModifyVertexはサポートされていません\n"); /* Translation: gsSPModifyVertex is unsupported */ +} + +void emu64::dl_G_LINE3D() { + Gline3D_new* line = (Gline3D_new*)&this->gfx; + + if (line->wd == 0) { + EMU64_LOGF("gsSPLine3D(%d, %d),", line->v0, line->v1); + } else { + EMU64_LOGF("gsSPLineW3D(%d, %d, %d),", line->v0, line->v1, line->wd); + } + + this->lines++; + this->Printf0("gsSPLine3Dはサポートされていません"); /* Translation: gsSPLine3D is unsupported */ +} + +void emu64::dl_G_TRI1() { + Gtri1 tri_gfx = *(Gtri1*)this->gfx_p; + u32 v0 = tri_gfx.v0 / 2; + u32 v1 = tri_gfx.v1 / 2; + u32 v2 = tri_gfx.v2 / 2; + + EMU64_TIMED_SEGMENT_BEGIN(); + + EMU64_LOGF("gsSP1Triangle(%d, %d, %d, 0),", v0, v1, v2); + + if (aflags[AFLAGS_MAX_POLYGONS] != 0) { + EMU64_LOGF(" [%d] @@@", this->polygons); + } + + if (this->disable_polygons == false && EMU64_CAN_DRAW_POLYGON()) { + this->dirty_check(this->texture_gfx.tile, this->texture_gfx.level, TRUE); + this->setup_1tri_2tri_1quad(v0); + this->draw_1tri_2tri_1quad(3, v0, v1, v2); + } + + this->triangles++; + this->polygons++; + + EMU64_TIMED_SEGMENT_END(polygons_time); +} + +void emu64::dl_G_TRIN_INDEPEND() { + this->dl_G_TRIN(); +} + +void emu64::dl_G_TRIN() { + Gtrin* g; + int n_faces; + int first_pass = TRUE; + Gtrin_independ* trin_independ_gfx = (Gtrin_independ*)this->gfx_p; + + EMU64_TIMED_SEGMENT_BEGIN(); + + this->dirty_check(this->texture_gfx.tile, this->texture_gfx.level, TRUE); + this->setup_1tri_2tri_1quad(trin_independ_gfx->f0v0); + n_faces = trin_independ_gfx->count + 1; + int n_verts = n_faces * 3; + + EMU64_LOGF("gsSPNTriangles(%d),\n", n_faces); + if (aflags[AFLAGS_WIREFRAME] == 0) { + GXBegin(GX_TRIANGLES, GX_VTXFMT0, n_verts); + } + + while (n_faces > 0) { + g = (Gtrin*)this->gfx_p; + + if ((((Gfx*)g)->words.w1 & POLY_BITMASK) == POLY_5b) { + this->gfx_p++; + /* 5 bits per vertex index, first pass = 3 faces, consecutive passes = 4 faces */ + this->set_position3(g->f0v0, g->f0v1, g->f0v2); + this->polygons++; + EMU64_LOGF("gsSPNTriangleData1(%d, %d, %d, 0),\n", g->f0v0, g->f0v1, g->f0v2); + + n_faces--; + if (n_faces == 0) + break; + + // issue here with the combination of the two parts + int v2 = ((g->f1v2_1 << 3) | g->f1v2_0); + this->set_position3(g->f1v0, g->f1v1, v2); + this->polygons++; + EMU64_LOGF("gsSPNTriangleData1(%d, %d, %d, 0),\n", g->f1v0, g->f1v1, v2); + + n_faces--; + if (n_faces == 0) + break; + + this->set_position3(g->f2v0, g->f2v1, g->f2v2); + this->polygons++; + EMU64_LOGF("gsSPNTriangleData1(%d, %d, %d, 0),\n", g->f2v0, g->f2v1, g->f2v2); + + n_faces--; + if (n_faces == 0) + break; + + /* Only 3 faces on the first pass */ + if (first_pass) { + first_pass = FALSE; + } else { + this->set_position3(g->f3v0, g->f3v1, g->f3v2); + this->polygons++; + EMU64_LOGF("gsSPNTriangleData1(%d, %d, %d, 0),\n", g->f3v0, g->f3v1, g->f3v2); + + n_faces--; + if (n_faces == 0) + break; + } + } else { + Gtrin_7b* g7b = (Gtrin_7b*)g; + this->gfx_p++; + + /* 7 bits per vertex index, max 3 faces per Gfx */ + this->set_position3(g7b->f0v0, g7b->f0v1, g7b->f0v2); +#ifdef EMU64_FIXES + this->polygons++; +#endif + EMU64_LOGF("gsSPNTriangleData1(%d, %d, %d, 0),\n", g7b->f0v0, g7b->f0v1, g7b->f0v2); + + n_faces--; + if (n_faces == 0) + break; + + // issue here with the combination of the two parts + int v1 = (g7b->f1v1_1 << 3) | g7b->f1v1_0; + this->set_position3(g7b->f1v0, v1, g7b->f1v2); + +#ifdef EMU64_FIXES + this->polygons++; +#endif + EMU64_LOGF("gsSPNTriangleData1(%d, %d, %d, 0),\n", g7b->f1v0, v1, g7b->f1v2); + + n_faces--; + if (n_faces == 0) + break; + + /* Only 2 faces on the first pass */ + if (first_pass) { + first_pass = FALSE; + } else { + this->set_position3(g7b->f2v0, g7b->f2v1, g7b->f2v2); +#ifdef EMU64_FIXES + this->polygons++; +#endif + EMU64_LOGF("gsSPNTriangleData1(%d, %d, %d, 0),\n", g7b->f2v0, g7b->f2v1, g7b->f2v2); + + n_faces--; + if (n_faces == 0) + break; + } + } + } + + this->gfx_p += (int)n_faces - 1; /* Should equate to gfx_p--, as the emulator will increment it once. */ + EMU64_TIMED_SEGMENT_END(polygons_time); + this->rdp_pipe_sync_needed = true; +} + +void emu64::dl_G_QUADN() { + Gquad* g; + int n_faces; + int first_pass = TRUE; + Gquad_independ* quad_independ = (Gquad_independ*)this->gfx_p; + + EMU64_TIMED_SEGMENT_BEGIN(); + + this->dirty_check(this->texture_gfx.tile, this->texture_gfx.level, TRUE); + this->setup_1tri_2tri_1quad(quad_independ->f0v0); + n_faces = quad_independ->count + 1; + int n_verts = n_faces * 4; + + EMU64_LOGF("gsSPNQuadrangles(%d),\n", n_faces); + if (aflags[AFLAGS_WIREFRAME] == 0) { + GXBegin(GX_QUADS, GX_VTXFMT0, n_verts); + } + + while (n_faces > 0) { + g = (Gquad*)this->gfx_p; + if ((((Gfx*)g)->words.w1 & POLY_BITMASK) == POLY_5b) { + this->gfx_p++; + /* 5 bits per vertex index, first pass = 2 faces, consecutive passes = 3 faces */ + this->set_position4(g->f0v0, g->f0v1, g->f0v2, g->f0v3); + this->polygons++; + EMU64_LOGF("gsSPNQuadrangleData1(%d, %d, %d, %d, 0),\n", g->f0v0, g->f0v1, g->f0v2, g->f0v3); + + n_faces--; + if (n_faces == 0) + break; + + int v1 = (g->f1v1_1 << 3) | g->f1v1_0; + this->set_position4(g->f1v0, v1, g->f1v2, g->f1v3); + this->polygons++; + EMU64_LOGF("gsSPNQuadrangleData1(%d, %d, %d, %d, 0),\n", g->f1v0, v1, g->f1v2, g->f1v3); + + n_faces--; + if (n_faces == 0) + break; + + /* Only 2 faces on the first pass */ + if (first_pass) { + first_pass = FALSE; + } else { + this->set_position4(g->f2v0, g->f2v1, g->f2v2, g->f2v3); + this->polygons++; + EMU64_LOGF("gsSPNQuadrangleData1(%d, %d, %d, %d, 0),\n", g->f2v0, g->f2v1, g->f2v2, g->f2v3); + + n_faces--; + if (n_faces == 0) + break; + } + } else { + Gquad_7b* g7b = (Gquad_7b*)g; + this->gfx_p++; + /* 7 bits per vertex index, max 2 faces per Gfx */ + this->set_position4(g7b->f0v0, g7b->f0v1, g7b->f0v2, g7b->f0v3); +#ifdef EMU64_FIXES + this->polygons++; +#endif + EMU64_LOGF("gsSPNQuadrangleData1(%d, %d, %d, %d, 0),\n", g7b->f0v0, g7b->f0v1, g7b->f0v2, g7b->f0v3); + + n_faces--; + if (n_faces == 0) + break; + + /* Only 1 face on the first pass */ + if (first_pass) { + first_pass = FALSE; + } else { + int v0 = (g7b->f1v0_1 << 3) | (g7b->f1v0_0); + this->set_position4(v0, g7b->f1v1, g7b->f1v2, g7b->f1v3); +#ifdef EMU64_FIXES + this->polygons++; +#endif + EMU64_LOGF("gsSPNQuadrangleData1(%d, %d, %d, %d, 0),\n", v0, g7b->f1v1, g7b->f1v2, g7b->f1v3); + + n_faces--; + if (n_faces == 0) + break; + } + } + } + + this->gfx_p += (int)n_faces - 1; /* Should equate to gfx_p--, as the emulator will increment it once. */ + EMU64_TIMED_SEGMENT_END(polygons_time); + this->rdp_pipe_sync_needed = true; +} + +void emu64::dl_G_TRI2() { + int unused[2]; + u32 commands; + u32 v0; + u32 v1; + u32 v2; + u32 v3; + u32 v4; + u32 v5; + + /** + * NOTE: Looks like the devs made an optimization by counting up all TRI2 & TRI1 + * calls in sequence and executing them in one call. Probably an early version of + * TRIN/TRIN_INDEPEND which seem to dominate AC's display list polygon calls. + */ + + if (this->disable_polygons || aflags[AFLAGS_MAX_POLYGONS] || aflags[AFLAGS_WIREFRAME]) { + Gtri2 tris = *((Gtri2*)&this->gfx_p->words); + + v0 = tris.t0v0 / 2; + v1 = tris.t0v1 / 2; + v2 = tris.t0v2 / 2; + v3 = tris.t1v0 / 2; + v4 = tris.t1v1 / 2; + v5 = tris.t1v2 / 2; + + EMU64_TIMED_SEGMENT_BEGIN(); + + EMU64_LOGF("gsSP2Triangles(%d, %d, %d, 0, %d, %d, %d, 0),", v0, v1, v2, v3, v4, v5); + + if (aflags[AFLAGS_MAX_POLYGONS] != 0) { + EMU64_LOGF(" [%d] @@@", this->polygons); + } + + if (!this->disable_polygons && EMU64_CAN_DRAW_POLYGON()) { + this->dirty_check(this->texture_gfx.tile, this->texture_gfx.level, TRUE); + this->setup_1tri_2tri_1quad(v0); + this->draw_1tri_2tri_1quad(6, v0, v1, v2, v3, v4, v5); + } + + this->double_triangles++; + this->polygons++; +#ifdef EMU64_DEBUG + this->polygons_time += (osGetCount() - start); +#endif + } else { + /* Count up all the vertices */ + commands = 0; + int n_verts = 0; + + int i = 0; + while (TRUE) { + if (this->gfx_p[i].tri.cmd == G_TRI2) { + n_verts += 6; + } else if (this->gfx_p[i].tri.cmd == G_TRI1) { + n_verts += 3; + } else { + break; + } + i++; + commands++; + } + + this->dirty_check(this->texture_gfx.tile, this->texture_gfx.level, TRUE); + u64 t_g; + t_g = *(u64*)&this->gfx_p->words; + Gtri2* tri2 = (Gtri2*)&t_g; + this->setup_1tri_2tri_1quad(tri2->t0v0 / 2); + +#ifdef EMU64_DEBUG + u32 start = osGetCount(); +#endif + + if (aflags[AFLAGS_WIREFRAME] == 0) { + GXBegin(GX_TRIANGLES, GX_VTXFMT0, n_verts); + } + + for (u32 i = 0; i < commands; i++) { + Gtri2 g = *(Gtri2*)&this->gfx_p[i].words; + u32 v0 = g.t0v0 / 2; + u32 v1 = g.t0v1 / 2; + u32 v2 = g.t0v2 / 2; + this->set_position3(v0, v1, v2); + if (this->gfx_p[i].tri.cmd == G_TRI2) { + u32 v3 = g.t1v0 / 2; + u32 v4 = g.t1v1 / 2; + u32 v5 = g.t1v2 / 2; + + EMU64_LOGF("gsSP2Triangles(%d, %d, %d, 0, %d, %d, %d, 0),", v0, v1, v2, v3, v4, v5); + + this->set_position3(v3, v4, v5); + } else { + EMU64_LOGF("gsSP1Triangle(%d, %d, %d, 0),", v0, v1, v2); + } + } + + this->gfx_p += (commands - 1); + EMU64_TIMED_SEGMENT_END(polygons_time); + } + + this->rdp_pipe_sync_needed = true; +} + +void emu64::dl_G_QUAD() { + Gquad0 q = *(Gquad0*)&this->gfx_p->words; + u32 v0 = q.v0 / 2; + u32 v1 = q.v1 / 2; + u32 v2 = q.v2 / 2; + u32 v3 = q.v3 / 2; + + EMU64_TIMED_SEGMENT_BEGIN(); + + EMU64_LOGF("gsSP1Quadrangle(%d, %d, %d, %d, 0),", v0, v1, v2, v3); + + if (aflags[AFLAGS_MAX_POLYGONS]) { + EMU64_LOGF(" [%d] @@@", this->polygons); + } + + if (this->disable_polygons == false && EMU64_CAN_DRAW_POLYGON()) { + this->setup_1tri_2tri_1quad(v0); + this->draw_1tri_2tri_1quad(4, v0, v1, v2, v3); + } + + this->polygons++; + this->quads++; + EMU64_TIMED_SEGMENT_END(polygons_time); +} + +void emu64::dl_G_CULLDL() { + f32 ox; + f32 oy; + f32 oz; + u32 vstart = ((Gculldl*)&this->gfx)->vstart / 2; + u32 vend = ((Gculldl*)&this->gfx)->vend / 2; + u32 mask; + u32 i; + Vertex* vtx; + + EMU64_WARNF("gsSPCullDisplayList(%d, %d),", vstart, vend); + + EMU64_LOG("vn mask x y z \n"); + + mask = G_CULL_Z_GREATERTHAN | G_CULL_Z_LESSTHAN | G_CULL_Y_GREATERTHAN | G_CULL_Y_LESSTHAN | G_CULL_X_GREATERTHAN | + G_CULL_X_LESSTHAN; /* 0x3F00 */ + + for (i = vstart; i <= vend; i++) { + vtx = &this->vertices[i]; + + /* Vertex position -> camera space calculations */ + if ((vtx->flag & MTX_NONSHARED) == MTX_SHARED) { +#ifdef EMU64_DEBUG + if (this->print_commands != false) { + this->print_guMtxXFM1F_dol2(this->projection_mtx, this->projection_type, vtx->position.x, + vtx->position.y, vtx->position.z); + } +#endif + + guMtxXFM1F_dol2(this->projection_mtx, this->projection_type, vtx->position.x, vtx->position.y, + vtx->position.z, &ox, &oy, &oz); + } else { + /* MTX_NONSHARED */ + Vec oVec; + if (aflags[AFLAGS_USE_GUVECMULT] == 0) { + PSMTXMultVec(this->position_mtx_stack[this->mtx_stack_size], &vtx->position, &oVec); + } else { + guMtxXFM1F_dol(this->position_mtx_stack[this->mtx_stack_size], vtx->position.x, vtx->position.y, + vtx->position.z, &oVec.x, &oVec.y, &oVec.z); + } + +#ifdef EMU64_DEBUG + if (this->print_commands != false) { + this->print_guMtxXFM1F_dol2(this->projection_mtx, this->projection_type, oVec.x, oVec.y, oVec.z); + } +#endif + + f32 x = oVec.x; + f32 y = oVec.y; + f32 z = oVec.z; + + guMtxXFM1F_dol2(this->projection_mtx, this->projection_type, x, y, z, &ox, &oy, &oz); + } + + /* Assign culling flags to vertex */ + if (ox < -1.0f) { + vtx->flag |= G_CULL_X_LESSTHAN; + } else if (ox > 1.0f) { + vtx->flag |= G_CULL_X_GREATERTHAN; + } + + if (oy < -1.0f) { + vtx->flag |= G_CULL_Y_LESSTHAN; + } else if (oy > 1.0f) { + vtx->flag |= G_CULL_Y_GREATERTHAN; + } + + if (oz > 0.0f) { + vtx->flag |= G_CULL_Z_LESSTHAN; + } else if (oz < -1.0f) { + vtx->flag |= G_CULL_Z_GREATERTHAN; + } + + EMU64_LOGF("%2d %04x %1d%1d%1d%1d%1d%1d %1d %6.3f %6.3f %6.3f %8.2f %8.2f %8.2f \n", vstart, vtx->flag, + vtx->cull_z_greater, vtx->cull_z_lesser, vtx->cull_y_greater, vtx->cull_y_lesser, + vtx->cull_x_greater, vtx->cull_x_lesser, vtx->nonshared, ox, oy, oz +/* The devs seem to have forgotten to add the last three float values */ +#ifdef EMU64_FIX_CULL_INFO_LOG + , + vtx->position.x, vtx->position.y, vtx->position.z /* Not sure if this is correct. */ +#endif + ); + + /* Update culled state */ + mask &= vtx->flag; + + /* TODO: An optimization here would be to break immediately if culling occurs? */ + /* I'm not sure if these flags are checked anywhere else. */ + } + + this->cullDL_calls++; + if (mask != 0) { + EMU64_LOGF("カリングされました mask=%02x\n", mask); /* Translation: Was culled mask=%02x */ + + if (this->DL_stack_level <= 0) { + this->end_dl = true; + } else { + this->gfx_p = (Gfx*)this->DL_stack[--DL_stack_level] - 1; + } + + this->cullDL_outside_obj_count++; + } else { + EMU64_LOG("カリングされませんでした\n"); /* Translation: Wasn't culled */ + this->cullDL_visible_obj_count++; + } +} + +void emu64::dl_G_BRANCH_Z() { + this->work_ptr = (void*)this->seg2k0(this->rdpHalf_1); + EMU64_WARNF("gsSPBranchLessZraw(%s, %d, 0x%08x),", this->segchk(this->rdpHalf_1), (this->gfx.words.w0 / 2) & 0x7FF, + this->gfx.words.w1); + + this->gfx_p = (Gfx*)((int)this->work_ptr - sizeof(Gfx)); + /* Translation: gsSPBranchLessZraw isn't implemented yet */ + this->Printf0("gsSPBranchLessZrawはまだインプリメントされていません\n"); +} + +#define TEXTURE_SCALE 32.0f +#define TEXTURE_SCALE_CONV TEXTURE_SCALE * 65536.0f + +void emu64::dl_G_TEXTURE() { + Gtexture_internal* texture = (Gtexture_internal*)&this->gfx; + +#ifdef EMU64_DEBUG + if (this->print_commands != false) { + if (texture->xparam == 0) { + EMU64_LOGF("gsSPTexture(%d, %d, %d, %d, %s),", texture->s, texture->t, texture->level, texture->tile, + texture->on ? "G_ON" : "G_OFF"); + } else { + EMU64_LOGF("gsSPTextureL(%d, %d, %d, %d, %d, %s),", texture->s, texture->t, texture->level, texture->xparam, + texture->tile, texture->on ? "G_ON" : "G_OFF"); + } + } +#endif + + Gfx* t = (Gfx*)&this->texture_gfx; + if ((*(u64*)t) != (*(u64*)&this->gfx)) { + *(u64*)&this->texture_gfx = *(u64*)texture; + this->dirty_flags[EMU64_DIRTY_FLAG_TEX] = true; + + if (this->texture_gfx.s == 0) { + this->texture_scale_s = TEXTURE_SCALE; + } else { + this->texture_scale_s = TEXTURE_SCALE_CONV / fastcast_float(&this->texture_gfx.s); + } + + if (this->texture_gfx.t == 0) { + this->texture_scale_t = TEXTURE_SCALE; + } else { + this->texture_scale_t = TEXTURE_SCALE_CONV / fastcast_float(&this->texture_gfx.t); + } + } +} + +void emu64::dl_G_POPMTX() { + u32 n = this->gfx_p->words.w1 >> 6; + +#ifdef EMU64_DEBUG + if (this->print_commands != false) { + if (n == 1) { + EMU64_LOG("gsSPPopMatrix(G_MTX_MODELVIEW),"); + } else { + EMU64_LOGF("gsSPPopMatrix(G_MTX_MODELVIEW, %d),", n); + } + } +#endif + + this->mtx_stack_size -= n; + this->dirty_flags[EMU64_DIRTY_FLAG_POSITION_MTX] = true; +} + +void emu64::dl_G_GEOMETRYMODE() { + u32 clear = this->gfx.words.w0 & 0x00FFFFFF; + u32 set = this->gfx.words.w1 & 0x00FFFFFF; + + if (this->print_commands) { + if (clear == 0) { + EMU64_LOG("gsSPLoadGeometryMode("); + this->print_geomflags(set); + EMU64_LOG("),"); + } else if (set == 0) { + EMU64_LOG("gsSPClearGeometryMode("); + this->print_geomflags(~clear); + EMU64_LOG("),"); + } else if (clear == 0xFFFFFF) { + EMU64_LOG("gsSPSetGeometryMode("); + this->print_geomflags(set); + EMU64_LOG("),"); + } else { + EMU64_LOG("gsSPGeometryMode("); + this->print_geomflags(~clear); + EMU64_LOG(", "); + this->print_geomflags(set); + EMU64_LOG("),"); + } + } + + u32 flags = set | (this->geometry_mode & clear); + if (this->geometry_mode != flags) { + if ((this->geometry_mode ^ flags) & (G_LIGHTING | G_LIGHTING_POSITIONAL)) { + this->dirty_flags[EMU64_DIRTY_FLAG_LIGHTING] = true; + } + + if ((this->geometry_mode ^ flags) & G_FOG) { + this->dirty_flags[EMU64_DIRTY_FLAG_FOG] = true; + } + + if ((this->geometry_mode ^ flags) & G_TEXTURE_GEN) { + this->dirty_flags[EMU64_DIRTY_FLAG_TEX_TILE0] = true; + this->dirty_flags[EMU64_DIRTY_FLAG_TEX_TILE1] = true; + this->dirty_flags[EMU64_DIRTY_FLAG_TEX_TILE2] = true; + this->dirty_flags[EMU64_DIRTY_FLAG_TEX_TILE3] = true; + this->dirty_flags[EMU64_DIRTY_FLAG_TEX_TILE4] = true; + this->dirty_flags[EMU64_DIRTY_FLAG_TEX_TILE5] = true; + this->dirty_flags[EMU64_DIRTY_FLAG_TEX_TILE6] = true; + this->dirty_flags[EMU64_DIRTY_FLAG_TEX_TILE7] = true; + } + + this->geometry_mode = flags; + this->dirty_flags[EMU64_DIRTY_FLAG_GEOMETRYMODE] = true; + } +} + +/* TODO: where should these go? s1, s2, and s3 are after but these are after s */ +static emu64 emu64_class; +char* emu64::warningString[EMU64_WARNING_COUNT]; +u32 emu64::warningTime[EMU64_WARNING_COUNT]; + +void emu64::dl_G_MOVEWORD() { + static char s1[20]; + static char s2[64]; + static char s3[64]; + Gmoveword* moveword = (Gmoveword*)this->gfx_p; + + switch (moveword->index) { + case G_MW_SEGMENT: { + u32 segment = moveword->offset / 4; + EMU64_WARNF("gsSPSegmentA(%d, 0x%08x),", segment, moveword->data); + this->segments[segment] = (0x80000000 + (moveword->data & 0x0FFFFFFF)); + if (segment >= NUM_SEGMENTS || + (moveword->data != 0 && (moveword->data < 0x80000000 || moveword->data > 0x83000000))) { + sprintf(s1, "gsSPSegmentA no=%d", segment); + sprintf(s2, "base=%s", this->segchk(moveword->data)); + sprintf(s3, "gfxp=%s", this->segchk((u32)this->gfx_p)); + emu64::warningString[0] = "SPSegment found Illigal Address."; + emu64::warningString[1] = s1; + emu64::warningString[2] = s2; + emu64::warningString[3] = s3; + emu64::warningTime[0] = EMU64_WARN_TIME; + emu64::warningTime[1] = EMU64_WARN_TIME; + emu64::warningTime[2] = EMU64_WARN_TIME; + emu64::warningTime[3] = EMU64_WARN_TIME; + + this->segment_set = true; + OSReport(VT_COL(RED, WHTIE) "%s\n%s\n%s\n" VT_RST, s1, s2, s3); + } + } break; + + case G_MW_CLIP: { + EMU64_LOGF("gsSPClipRatio(FRUSTRATIO_%d), ", moveword->data == 0 ? 0 : moveword->data); + this->gfx_p += + 3; /* gsSPClipRatio generates four moveword instructions, so skip three. Emulator will skip last one. */ + } break; + + case G_MW_NUMLIGHT: { + u32 num_lights = moveword->data / 24; + EMU64_LOGF("gsSPNumLights(%d), ", num_lights); + if (this->num_lights != num_lights) { + this->num_lights = num_lights; + this->dirty_flags[EMU64_DIRTY_FLAG_LIGHTS] = true; + } + } break; + + case G_MW_LIGHTCOL: { + int light = (moveword->offset & 0xF0) / 32; + +/* Seems like the devs used the light table index as the enum number */ +/* TODO: This could be correct. Investigate if they changed the light definitions. */ +#ifdef EMU64_FIX_MOVEWORD_LIGHT_NUM_LOG + EMU64_LOGF("gsSPLightColor(LIGHT_%d, %08x), ", (moveword->offset / 0x18) + 1, moveword->data); +#else + EMU64_LOGF("gsSPLightColor(LIGHT_%d, %08x), ", light + 1, moveword->data); +#endif + + this->gfx_p++; /* gsSPLightColor generates two commands */ + + GXColor* color = (GXColor*)&((Gmoveword*)&this->gfx)->data; + this->lights[light].color.rgba.r = color->r; + this->lights[light].color.rgba.g = color->g; + this->lights[light].color.rgba.b = color->b; + + this->dirty_flags[EMU64_DIRTY_FLAG_LIGHTS] = true; + } break; + + case G_MW_FOG: { + s16 fm = (s16)(moveword->data >> 16); /* z multiplier */ + s16 fo = (s16)moveword->data; /* z offset */ + int min = 500 - (fo * 500) / fm; + EMU64_LOGF("gsSPFogFactor(%d, %d),", fm, fo); + EMU64_LOGF("gsSPFogPosition(%d, %d),", min, 128000 / fm + min); + + this->fog_zmult = fm; + this->fog_zoffset = fo; + this->dirty_flags[EMU64_DIRTY_FLAG_FOG] = true; + } break; + + case G_MW_PERSPNORM: { + EMU64_LOGF("gsSPPerspNormalize(%d),", moveword->data); + } break; + + default: { + EMU64_LOGF("gsMoveWd(%d, %d, %d), /* ### what */", moveword->index, moveword->offset, moveword->data); + + this->num_unknown_cmds++; + this->Printf0("未知の命令に出くわした\n"); /* Translation: Came across an unknown command */ + } break; + } +} + +void emu64::dl_G_MOVEMEM() { + Gmovemem* movemem = (Gmovemem*)this->gfx_p; + u8 param = movemem->index; + switch (movemem->index) { + case G_MV_VIEWPORT: { + this->work_ptr = (void*)this->seg2k0(movemem->data); + Vp_t* vp = (Vp_t*)this->work_ptr; + +#ifdef EMU64_DEBUG + if (this->print_commands != false) { + EMU64_LOGF("gsSPViewport(%s),", this->segchk(movemem->data)); + EMU64_INFOF("\t# vscale=[%d %d %d %d], ", vp->vscale[0], vp->vscale[1], vp->vscale[2], vp->vscale[3]); + EMU64_INFOF("vtrans=[%d %d %d %d] ", vp->vtrans[0], vp->vtrans[1], vp->vtrans[2], vp->vtrans[3]); + } +#endif + + if (!this->disable_polygons) { + f32 left = ((f32)(vp->vtrans[0] - vp->vscale[0]) / 2.0f); + f32 top = ((f32)(vp->vtrans[1] - vp->vscale[1]) / 2.0f); + f32 wd = (f32)vp->vscale[0] / 2.0f; + f32 ht = (f32)vp->vscale[1] / 2.0f; + f32 nearz = ((f32)(vp->vscale[2] - vp->vtrans[2]) * 2.0f) / 1023.0f; + f32 farz = ((f32)vp->vscale[2] * 2.0f) / 1023.0f; + + EMU64_INFOF("GXSetViewport %7.3f %7.3f %7.3f %7.3f %7.3f %7.3f\n", left, top, wd, ht, nearz, farz); + + GXSetViewport(left, top, wd, ht, nearz, farz); + } + break; + } + + case G_MV_MATRIX: { + EMU64_LOGF("gsSPForceMatrix(%s),", this->segchk(movemem->data)); + this->gfx_p++; /* Generates two commands */ + this->Printf0("gsSPForceMatrixはサポートしてません\n"); /* Translation: gsSPForceMatrix isn't supported */ + break; + } + + case G_MV_LIGHT: { + switch (movemem->offset * 8) { + case G_MVO_LOOKATX: { + EMU64_LOGF("gsSPLookAtX(%s),", this->segchk(movemem->data)); + LookAt* la = (LookAt*)this->seg2k0(movemem->data); + EMU64_INFOF(" /* {%3d,%3d,%3d} */", la->l->l.dir[0], la->l->l.dir[1], la->l->l.dir[2]); + this->lookAt.x.x = la->l->l.dir[0]; + this->lookAt.x.y = la->l->l.dir[1]; + this->lookAt.x.z = la->l->l.dir[2]; + this->lookatx_cnt++; + break; + } + + case G_MVO_LOOKATY: { + EMU64_LOGF("gsSPLookAtY(%s),", this->segchk(movemem->data)); + LookAt* la = (LookAt*)this->seg2k0(movemem->data); + EMU64_INFOF(" /* {%3d,%3d,%3d} */", la->l->l.dir[0], la->l->l.dir[1], la->l->l.dir[2]); + this->lookAt.y.x = la->l->l.dir[0]; + this->lookAt.y.y = la->l->l.dir[1]; + this->lookAt.y.z = la->l->l.dir[2]; + this->lookaty_cnt++; + break; + } + + default: { + Light_new* light = (Light_new*)this->seg2k0(movemem->data); + int idx = movemem->offset * 8 - 24; + idx /= 24; /* Idx should be 1 - 8. There's more bithacks going on here, but I think it's compiler + generated */ + EMU64_LOGF("gsSPLight(%s, %d),", this->segchk(movemem->data), idx); + EMU64_INFOF("no = %d color=[%3d %3d %3d],", idx, light->l.col[0], light->l.col[1], light->l.col[2]); + + /* Convert index to 0 based */ + int l_idx = (idx - 1); + l_idx &= (NUM_LIGHTS - 1); + + this->dirty_flags[EMU64_DIRTY_FLAG_LIGHTS] = true; + + this->lights[l_idx].color.rgba.r = light->l.col[0]; + this->lights[l_idx].color.rgba.g = light->l.col[1]; + this->lights[l_idx].color.rgba.b = light->l.col[2]; + + if (light->l.pad1 != 0) { + EMU64_INFOF(" position=[%+6d %+6d %+6d],", light->p.pos[0], light->p.pos[1], light->p.pos[2]); + EMU64_INFOF(" kc=%3d kl=%3d kq=%3d", light->p.kc, light->p.kl, light->p.kq); + + this->lights[l_idx].position.x = fastcast_float(&light->p.pos[0]); + this->lights[l_idx].position.y = fastcast_float(&light->p.pos[1]); + this->lights[l_idx].position.z = fastcast_float(&light->p.pos[2]); + this->lights[l_idx].attenuation.kc = fastcast_float(&light->p.kc) / 256.0f * 16.0f + 0.5f; + this->lights[l_idx].attenuation.k1 = fastcast_float(&light->p.kl) / 256.0f * 0.5f; + this->lights[l_idx].attenuation.kq = fastcast_float(&light->p.kq) / 256.0f * 0.000488f; + + if (aflags[AFLAGS_LIGHT_MOVE_TO_MODEL_SPACE] != 0) { + PSMTXMultVec(this->position_mtx_stack[this->mtx_stack_size], &this->lights[l_idx].position, + &this->lights[l_idx].position); + } + } else { + f32 position_mult = 10000.0f; + if (aflags[AFLAGS_LIGHT_POSITION_MULTIPLIER] != 0) { + position_mult = (f32)(aflags[AFLAGS_LIGHT_POSITION_MULTIPLIER]) / 100.0f; + } + + EMU64_INFOF(" normal=[%+4d %+4d %+4d] pad1=%d", light->l.dir[0], light->l.dir[1], + light->l.dir[2], light->l.pad1); + + this->lights[l_idx].position.x = fastcast_float(&light->l.dir[0]) * position_mult; + this->lights[l_idx].position.y = fastcast_float(&light->l.dir[1]) * position_mult; + this->lights[l_idx].position.z = fastcast_float(&light->l.dir[2]) * position_mult; + this->lights[l_idx].attenuation.kc = 0.0f; + this->lights[l_idx].attenuation.k1 = 0.0f; + this->lights[l_idx].attenuation.kq = 0.0; + } + EMU64_INFOF("\n"); + break; + } + } + + break; + } + + default: { + /* Invalid/Unknown MOVEMEM command */ + EMU64_WARNF("gsMoveMem(%s, %d, %d, %d), /* ### what? */", this->segchk(movemem->data), + ((movemem->length >> 3) + 1) * 8, movemem->index, movemem->offset); + + this->num_unknown_cmds++; + this->Printf0("未知の命令に出くわした\n"); /* Came across an unknown command */ + break; + } + } +} + +void emu64::dl_G_SPECIAL_1() { + Gspecial1* special = (Gspecial1*)&this->gfx; + + if (special->mode == G_SPECIAL_TA_MODE) { + EMU64_LOGF("gsDPSetTextureAdjustMode(%s),", special->param0 == 0 ? "G_TA_N64" : "G_TA_DOLPHIN"); + this->texture_adjust_mode = special->param0; + } else { + EMU64_LOGF("gsDPSpecial_1(0x%02x, 0x%04x, 0x%08x),", special->mode, special->param0, special->param1); + } +} + +bool emu64::displayWarning = false; +u8 FrameCansel = false; + +static dl_func dl_func_tbl[NUM_COMMANDS] = { + &emu64::dl_G_SETTEXEDGEALPHA, + &emu64::dl_G_SETCOMBINE_NOTEV, + &emu64::dl_G_SETCOMBINE_TEV, + &emu64::dl_G_NOOP, + &emu64::dl_G_SETTILE_DOLPHIN, + &emu64::dl_G_NOOP, + &emu64::dl_G_NOOP, + &emu64::dl_G_SPECIAL_1, + &emu64::dl_G_NOOP, + &emu64::dl_G_TEXTURE, + &emu64::dl_G_POPMTX, + &emu64::dl_G_GEOMETRYMODE, + &emu64::dl_G_MTX, + &emu64::dl_G_MOVEWORD, + &emu64::dl_G_MOVEMEM, + &emu64::dl_G_LOAD_UCODE, + &emu64::dl_G_DL, + &emu64::dl_G_ENDDL, + &emu64::dl_G_SPNOOP, + &emu64::dl_G_RDPHALF_1, + &emu64::dl_G_SETOTHERMODE_L, + &emu64::dl_G_SETOTHERMODE_H, + &emu64::dl_G_TEXRECT, + &emu64::dl_G_NOOP, + &emu64::dl_G_RDPLOADSYNC, + &emu64::dl_G_RDPPIPESYNC, + &emu64::dl_G_RDPTILESYNC, + &emu64::dl_G_RDPFULLSYNC, + &emu64::dl_G_NOOP, + &emu64::dl_G_NOOP, + &emu64::dl_G_NOOP, + &emu64::dl_G_SETSCISSOR, + &emu64::dl_G_SETPRIMDEPTH, + &emu64::dl_G_RDPSETOTHERMODE, + &emu64::dl_G_LOADTLUT, + &emu64::dl_G_NOOP, + &emu64::dl_G_SETTILESIZE, + &emu64::dl_G_LOADBLOCK, + &emu64::dl_G_LOADTILE, + &emu64::dl_G_SETTILE, + &emu64::dl_G_FILLRECT, + &emu64::dl_G_SETFILLCOLOR, + &emu64::dl_G_SETFOGCOLOR, + &emu64::dl_G_SETBLENDCOLOR, + &emu64::dl_G_SETPRIMCOLOR, + &emu64::dl_G_SETENVCOLOR, + &emu64::dl_G_SETCOMBINE, + &emu64::dl_G_SETTIMG, + &emu64::dl_G_SETZIMG, + &emu64::dl_G_SETCIMG, + &emu64::dl_G_NOOP, + &emu64::dl_G_VTX, + &emu64::dl_G_MODIFYVTX, + &emu64::dl_G_CULLDL, + &emu64::dl_G_BRANCH_Z, + &emu64::dl_G_TRI1, + &emu64::dl_G_TRI2, + &emu64::dl_G_QUAD, + &emu64::dl_G_LINE3D, + &emu64::dl_G_TRIN, + &emu64::dl_G_TRIN_INDEPEND, + &emu64::dl_G_NOOP, + &emu64::dl_G_NOOP, + &emu64::dl_G_QUADN, +}; + +u32 emu64::emu64_taskstart_r(Gfx* dl_p) { + this->gfx_p = dl_p; + EMU64_INFO("*** emu64taskstart ***\n"); + OSInitFastCast(); + this->end_dl = false; + + while (!this->end_dl && !FrameCansel) { + this->cmds_processed++; + EMU64_INFOF("%08x:", this->gfx_p); + this->gfx = *this->gfx_p; + this->gfx_cmd = this->gfx.dma.cmd; + this->dl_history[this->dl_history_start++] = this->gfx_p; + if (this->dl_history_start >= DL_HISTORY_COUNT) { + this->dl_history_start = 0; + } + + this->work_ptr = nullptr; + + if (this->print_commands) { + EMU64_INFOF("%08x-%08x:", this->gfx.words.w0, this->gfx.words.w1); + for (u32 i = 0; i < this->DL_stack_level; i++) { + EMU64_WARN(" "); + } + } + + u8 cmd_index = this->gfx_cmd - G_FIRST_CMD; + if (cmd_index < NUM_COMMANDS) { + if (dl_func_tbl[cmd_index] != nullptr) { + EMU64_TIMED_SEGMENT_BEGIN(); + (this->*dl_func_tbl[cmd_index])(); + EMU64_TIMED_SEGMENT_END(command_info[cmd_index].time); + // likely fakematch + u32* p = (u32*)&this->command_info; + p[(u32)cmd_index * 2 + 1]++; + } + } else { + this->Printf0( + "予期しないコマンドがありました。中断します。\n"); /* There was an unexpected command. Aborting. */ + break; + } + + EMU64_INFO("\n"); + this->gfx_p++; + } + + if (FrameCansel != FALSE) { + this->Printf0("フレームキャンセル\n"); /* Translation: Frame cancel. */ + } + + return this->err_count; +} + +#define EMU64_RUN_MODE_SKIP -1 +#define EMU64_RUN_MODE_NORMAL 0 +#define EMU64_RUN_MODE_VERBOSE \ + EMU64_PRINT_LEVEL0_FLAG | EMU64_PRINT_LEVEL1_FLAG | EMU64_PRINT_LEVEL2_FLAG | EMU64_PRINT_LEVEL3_FLAG | \ + EMU64_PRINT_LEVEL4_FLAG + +void emu64::emu64_taskstart(Gfx* dl_p) { + static u8 flag = 0; + + PPCSync(); + if ((int)aflags[AFLAGS_RUN_MODE] != EMU64_RUN_MODE_SKIP) { + if (aflags[AFLAGS_RUN_MODE] != EMU64_RUN_MODE_NORMAL) { + this->emu64_set_verbose(aflags[AFLAGS_RUN_MODE]); + aflags.set(AFLAGS_RUN_MODE, EMU64_RUN_MODE_NORMAL); + } + + EMU64_TIMED_SEGMENT_BEGIN(); + this->emu64_taskstart_r(dl_p); + EMU64_TIMED_SEGMENT_END(rsprdp_time); + + if (aflags[AFLAGS_JUTREPORT_SEGMENT_STATS] == TRUE) { + JW_JUTReport(40, 100, 1, "%d/%d/%d/%d/%d", this->resolved_addresses, this->_2024, this->_2028, this->_202C, + this->abnormal_addresses); + } + + if (aflags[AFLAGS_PRINT_COMMAND_INFO] != 0) { + aflags.set(AFLAGS_PRINT_COMMAND_INFO, 0); + +#ifdef EMU64_DEBUG_PRINTINFO + this->Printf0("CMD TIMES CALLS TIMES/CALLS\n"); +#endif + + for (int i = 0; i < NUM_COMMANDS; i++) { + if (this->command_info[i].calls != 0) { + this->Printf0("%02X %6d %4d %6d\n", (u8)(i + G_FIRST_CMD), /* Command */ + this->command_info[i].time, /* Total time */ + this->command_info[i].calls, /* Total calls */ + this->command_info[i].time / this->command_info[i].time /* Average command time */ + ); + } + } + +#ifdef EMU64_DEBUG_PRINTINFO + EMU64_PRINT_MEMBER(lookatx_cnt); + EMU64_PRINT_MEMBER(lookaty_cnt); + EMU64_PRINT_MEMBER(texconv_cnt); + EMU64_PRINT_MEMBER(vertex_cnt); + EMU64_PRINT_MEMBER(texconv_time); + EMU64_PRINT_MEMBER(rsprdp_time); + EMU64_PRINT_MEMBER(combine_time); + EMU64_PRINT_MEMBER(spvertex_time); + EMU64_PRINT_MEMBER(setup_time); + EMU64_PRINT_MEMBER(loadblock_time); + EMU64_PRINT_MEMBER(loadtlut_time); + EMU64_PRINT_MEMBER(matrix_time); + this->Printf0("polygons = %u/%u/%u/%u\n", this->polygons, this->double_triangles, this->triangles, + this->quads); + EMU64_PRINT_MEMBER(polygons_time); + EMU64_PRINT_MEMBER(dirty_check_time); +#ifndef ANIMAL_FOREST_PLUS + EMU64_PRINT_MEMBER(dirty_lightX_time); + EMU64_PRINT_MEMBER(dirty_lightX_cnt); +#endif + EMU64_PRINT_MEMBER(dirty_light_time); + EMU64_PRINT_MEMBER(dirty_light_cnt); + EMU64_PRINT_MEMBER(dirty_tex_time); + EMU64_PRINT_MEMBER(dirty_tex_cnt); + EMU64_PRINT_MEMBER(dirty_tex1_time); + EMU64_PRINT_MEMBER(dirty_tex1_cnt); + EMU64_PRINT_MEMBER(dirty_tex2_time); + EMU64_PRINT_MEMBER(dirty_tex2_cnt); + EMU64_PRINT_MEMBER(dirty_texmtx_time); + EMU64_PRINT_MEMBER(dirty_texmtx_cnt); + EMU64_PRINT_MEMBER(dirty_proj_time); + EMU64_PRINT_MEMBER(dirty_primcolor_time); + EMU64_PRINT_MEMBER(dirty_envcolor_time); + EMU64_PRINT_MEMBER(dirty_fillcolor_time); + EMU64_PRINT_MEMBER(dirty_combine_mode_time); + EMU64_PRINT_MEMBER(dirty_othermodeh_time); + EMU64_PRINT_MEMBER(dirty_othermodel_time); + EMU64_PRINT_MEMBER(dirty_geometory_time); + EMU64_PRINT_MEMBER(setuptex_time); + EMU64_PRINT_MEMBER(texture_cache_select_time); + EMU64_PRINT_MEMBER(guMtxL2F_time); + EMU64_PRINT_MEMBER(guMtxL2F_cnt); + EMU64_PRINT_MEMBER(combine_auto_cnt[0]); + EMU64_PRINT_MEMBER(combine_auto_cnt[1]); + EMU64_PRINT_MEMBER(combine_auto_cnt[2]); + EMU64_PRINT_MEMBER(combine_auto_cnt[3]); + EMU64_PRINT_MEMBER(combine_auto_cnt[4]); +#endif + } + + if (emu64::displayWarning != false) { + for (u32 i = 0; i < EMU64_WARNING_COUNT; i++) { + if (emu64::warningString[i] != nullptr) { + JW_JUTReport(40, i * 16 + 80, 1, "%s", emu64::warningString[i]); + if (emu64::warningTime[i] == 0) { + emu64::warningString[i] = nullptr; + } + } + } + } + } +} + +void emu64::emu64_set_ucode_info(int len, ucode_info* info) { + this->ucode_len = len; + this->ucode_info_p = info; +} + +void emu64::emu64_set_first_ucode(void* ucode_p) { + this->emu64_change_ucode(ucode_p); +} + +void emu64::emu64_set_verbose(int verbose) { + this->print_commands = verbose; + this->print_flags = verbose; +} + +/* C wrapper methods */ + +extern void emu64_init(void) { + emu64_class.emu64_init(); +} + +extern void emu64_cleanup(void) { + emu64_class.emu64_cleanup(); +} + +extern void emu64_taskstart(Gfx* gfx) { + emu64_class.emu64_taskstart(gfx); +} + +extern void emu64_set_ucode_info(int len, ucode_info* info) { + emu64_class.emu64_set_ucode_info(len, info); +} + +extern void emu64_set_first_ucode(void* ucode_p) { + emu64_class.emu64_set_first_ucode(ucode_p); +} + +extern void emu64_set_aflags(unsigned int idx, u8 value) { + if (idx > 0 && idx < aflags_c::getMaxArray()) { + aflags.set(idx, value); + } +} + +extern u8 emu64_get_aflags(unsigned int idx) { + if (idx > 0 && idx < aflags_c::getMaxArray()) { + return aflags[idx]; + } + + return 0; +} diff --git a/src/static/libforest/emu64/emu64_print.cpp b/src/static/libforest/emu64/emu64_print.cpp new file mode 100644 index 00000000..6280a06c --- /dev/null +++ b/src/static/libforest/emu64/emu64_print.cpp @@ -0,0 +1,485 @@ +#include "emu64.hpp" + +#include "boot.h" + +static const char kakko[] = "/\\/\\||||||||\\/\\/"; + +void emu64::disp_matrix(GC_Mtx mtx) { + for (int i = 0; i < 4; i++) { + if (mtx != nullptr) { + for (int x = 0; x < 4; x++) { + this->Printf("%10.3f", mtx[i][x]); + } + } + + this->Printf("\n", kakko[3 + i * 4]); + } +} + +const char* emu64::segchk(u32 segment) { + static char str[64]; + char buf[30]; + const char str0[] = "anime_4_txt+%4u"; + const char str1[] = "anime_6_model+sizeof(Mtx)*%2u"; + + u32 partial_addr = (u32)seg2k0(segment); + u32 addr = convert_partial_address(partial_addr); + + str[0] = '\0'; + if (segment == partial_addr) { + if (addr == partial_addr) { + snprintf(str, sizeof(str), "0x%08x", segment); + } else { + snprintf(str, sizeof(str), "0x%08x /* PADDR=0x%08x */", segment, partial_addr); + } + } else { + const char* s; + if (SEG_EQUALS(segment, SOFTSPRITE_MTX_SEG)) { + s = "softsprite_mtx"; + } else if (SEG_EQUALS(segment, ANIME_1_TXT_SEG)) { + s = "anime_1_txt"; + } else if (SEG_EQUALS(segment, ANIME_2_TXT_SEG)) { + s = "anime_2_txt"; + } else if (SEG_EQUALS(segment, ANIME_3_TXT_SEG)) { + s = "anime_3_txt"; + } else if (SEG_EQUALS(segment, ANIME_4_TXT_SEG)) { + s = "anime_4_txt"; + } else if (SEG_EQUALS(segment, ANIME_5_TXT_SEG)) { + s = "anime_5_txt"; + } else if (SEG_EQUALS(segment, ANIME_6_TXT_SEG)) { + s = "anime_6_txt"; + } else if (SEG_EQUALS(segment, ANIME_1_TXT_SEG)) { + s = "anime_1_model"; + } else if (SEG_EQUALS(segment, ANIME_2_TXT_SEG)) { + s = "anime_2_model"; + } else if (SEG_EQUALS(segment, ANIME_3_TXT_SEG)) { + s = "anime_3_model"; + } else if (SEG_EQUALS(segment, ANIME_4_TXT_SEG)) { + s = "anime_4_model"; + } else if (SEG_EQUALS(segment, ANIME_5_TXT_SEG)) { + s = "anime_5_model"; + } else if (SEG_EQUALS(segment, ANIME_6_TXT_SEG)) { + s = "anime_6_model"; + } else if (segment > SEG_2_SEGADDR(ANIME_4_TXT_SEG) && segment < (SEG_2_SEGADDR(ANIME_4_TXT_SEG) + 0x800)) { + snprintf(buf, sizeof(buf) - 1, str0, segment - SEG_2_SEGADDR(ANIME_4_TXT_SEG)); + s = buf; + } else { + if (segment > 0xD000000 && segment < 0xD000408) { + int comb = segment - 0x0D000000; + snprintf(buf, sizeof(buf) - 1, str1, comb / (int)sizeof(Mtx)); + s = buf; + } else { + s = nullptr; + } + } + + if (addr == partial_addr) { + if (s != nullptr) { + snprintf(str, sizeof(str), "%s /* 0x%08x */", s, partial_addr); + } else { + snprintf(str, sizeof(str), "0x%08x /* ### 0x%08x */", segment, partial_addr); + } + } else { + if (s != nullptr) { + snprintf(str, sizeof(str), "%s /* 0x%08x PADDR=0x%08x */", s, partial_addr, addr); + } else { + snprintf(str, sizeof(str), "0x%08x /* ### 0x%08x PADDR=0x%08x */", segment, partial_addr, addr); + } + } + } + + return str; +} + +const char* emu64::combine_name(u32 param, u32 type) { + const char* ret; + switch (param) { + case 0: + ret = "COMBINED"; + break; + case 1: + ret = "TEXEL0"; + break; + case 2: + ret = "TEXEL1"; + break; + case 3: + ret = "PRIMITIVE"; + break; + case 4: + ret = "SHADE"; + break; + case 5: + ret = "ENVIRONMENT"; + break; + case 6: + ret = (type == COMBINER_PARAM_B) ? "CENTER" : ((type == COMBINER_PARAM_C) ? "SCALE" : "1"); + break; + case 7: + ret = (type == COMBINER_PARAM_A) + ? "NOISE" + : ((type == COMBINER_PARAM_B) ? "K4" : ((type == COMBINER_PARAM_C) ? "COMBINED_ALPHA" : "0")); + break; + default: + if (type == COMBINER_PARAM_C) { + switch (param) { + case 8: + ret = "TEXEL0_ALPHA"; + break; + case 9: + ret = "TEXEL1_ALPHA"; + break; + case 10: + ret = "PRIMITIVE_ALPHA"; + break; + case 11: + ret = "SHADE_ALPHA"; + break; + case 12: + ret = "ENV_ALPHA"; + break; + case 13: + ret = "LOD_FRACTION"; + break; + case 14: + ret = "PRIM_LOD_FRAC"; + break; + case 15: + ret = "K5"; + break; + default: + ret = "0"; + break; + } + } else { + ret = "0"; + } + break; + } + return ret; +} + +const char* emu64::combine_alpha(int param, int type) { + const char* ret; + + switch (param) { + case 0: + ret = (type == COMBINER_PARAM_C) ? "LOD_FRACTION" : "COMBINED"; + break; + case 1: + ret = "TEXEL0"; + break; + case 2: + ret = "TEXEL1"; + break; + case 3: + ret = "PRIMITIVE"; + break; + case 4: + ret = "SHADE"; + break; + case 5: + ret = "ENVIRONMENT"; + break; + case 6: + ret = (type == COMBINER_PARAM_C) ? "PRIM_LOD_FRAC" : "1"; + break; + case 7: + ret = "0"; + break; + /* There should be a default case here, but they forgot it. */ + /* It returns a pointer to the emu64 class instead. */ +#ifdef EMU64_FIX_COMBINE_NAME_RETURN_VALUES + default: + ret = "0"; + break; +#endif + } + + return ret; +} + +const char* emu64::combine_tev_color_name(u32 color_param) { + const char* ret; + + switch (color_param) { + case 0: + ret = "COMBINED"; + break; + case 1: + ret = "COMBINED_ALPHA"; + break; + case 2: + ret = "(FILL)"; + break; + case 3: + ret = "PRIM_LOD_FRAC"; + break; + case 4: + ret = "PRIMITIVE"; + break; + case 5: + ret = "PRIMITIVE_ALPHA"; + break; + case 6: + ret = "ENVIRONMENT"; + break; + case 7: + ret = "ENV_ALPHA"; + break; + case 8: + ret = "TEXEL0"; + break; + case 9: + ret = "TEXEL0_ALPHA"; + break; + case 10: + ret = "SHADE"; + break; + case 11: + ret = "SHADE_ALPHA"; + break; + case 12: + ret = "1"; + break; + case 13: + ret = "(HALF)"; + break; + case 14: + ret = "(KONST)"; + break; + case 15: + ret = "0"; + break; + /* There should be a default case here, but they forgot it. */ + /* It returns a pointer to the emu64 class instead. */ +#ifdef EMU64_FIX_COMBINE_NAME_RETURN_VALUES + default: + ret = "0"; + break; +#endif + } +} + +const char* emu64::combine_tev_alpha_name(u32 alpha_param) { + const char* ret; + + switch (alpha_param) { + case 0: + ret = "COMBINED"; + break; + case 1: + ret = "PRIM_LOD_FRAC"; + break; + case 2: + ret = "PRIMITIVE"; + break; + case 3: + ret = "ENVIRONMENT"; + break; + case 4: + ret = "TEXEL0"; + break; + case 5: + ret = "SHADE"; + break; + case 6: + ret = "1"; + break; + case 7: + ret = "0"; + break; + /* There should be a default case here, but they forgot it. */ + /* It returns a pointer to the emu64 class instead. */ +#ifdef EMU64_FIX_COMBINE_NAME_RETURN_VALUES + default: + ret = "0"; + break; +#endif + } + + return ret; +} + +typedef struct { + u32 value; + char* name; + u32 mask; +} GeometryModeParameterInfo; + +#define NUM_GEOMETRYMODE_FLAGS 16 +static const GeometryModeParameterInfo geomtbl[NUM_GEOMETRYMODE_FLAGS] = { + { G_ZBUFFER, "G_ZBUFFER", G_ZBUFFER }, + { G_TEXTURE_ENABLE, "G_TEXTURE_ENABLE", G_TEXTURE_ENABLE }, + { G_SHADE, "G_SHADE", G_SHADE }, + { G_SHADING_SMOOTH, "G_SHADING_SMOOTH", G_SHADING_SMOOTH }, + { G_CULL_FRONT, "G_CULL_FRONT", G_CULL_FRONT }, + { G_CULL_BACK, "G_CULL_BACK", G_CULL_BACK }, + { G_FOG, "G_FOG", G_FOG }, + { G_LIGHTING, "G_LIGHTING", G_LIGHTING }, + { G_TEXTURE_GEN, "G_TEXTURE_GEN", G_TEXTURE_GEN }, + { G_TEXTURE_GEN_LINEAR, "G_TEXTURE_GEN_LINEAR", G_TEXTURE_GEN_LINEAR }, + { G_LOD, "G_LOD", G_LOD }, + { G_LIGHTING_POSITIONAL, "G_LIGHTING_POSITIONAL", G_LIGHTING_POSITIONAL }, + { G_DECAL_EQUAL, "G_DECAL_EQUAL", G_DECAL_ALWAYS }, + { G_DECAL_GEQUAL, "G_DECAL_GEQUAL", G_DECAL_ALWAYS }, + { G_DECAL_ALWAYS, "G_DECAL_ALWAYS", G_DECAL_ALWAYS }, + { G_DECAL_SPECIAL, "G_DECAL_SPECIAL", G_DECAL_SPECIAL } +}; + +void emu64::print_geomflags(u32 flags) { + u32 i; + int empty = TRUE; + + for (i = 0; i < NUM_GEOMETRYMODE_FLAGS; i++) { + if ((flags & geomtbl[i].mask) == geomtbl[i].value) { + if (empty) { + empty = FALSE; + } else { + this->Printf("|"); + } + + this->Printf("%s", geomtbl[i].name); + } + } + + if (empty) { + this->Printf("0"); + } +} + +typedef struct { + char* name; + u32 value; + u32 mask; +} RendermodeInfo; + +void emu64::show_render(u32 data) { + static const RendermodeInfo flags[] = { + { "AA_EN", AA_EN, AA_EN }, + { "Z_CMP", Z_CMP, Z_CMP }, + { "Z_UPD", Z_UPD, Z_UPD }, + { "IM_RD", IM_RD, IM_RD }, + { "CLR_ON_CVG", CLR_ON_CVG, CLR_ON_CVG }, + { "CVG_DST_CLAMP", CVG_DST_CLAMP, CVG_DST_SAVE }, + { "CVG_DST_WRAP", CVG_DST_WRAP, CVG_DST_SAVE }, + { "CVG_DST_FULL", CVG_DST_FULL, CVG_DST_SAVE }, + { "CVG_DST_SAVE", CVG_DST_SAVE, CVG_DST_SAVE }, + { "ZMODE_OPA", ZMODE_OPA, ZMODE_DEC }, + { "ZMODE_INTER", ZMODE_INTER, ZMODE_DEC }, + { "ZMODE_XLU", ZMODE_XLU, ZMODE_DEC }, + { "ZMODE_DEC", ZMODE_DEC, ZMODE_DEC }, + { "CVG_X_ALPHA", CVG_X_ALPHA, CVG_X_ALPHA }, + { "ALPHA_CVG_SEL", ALPHA_CVG_SEL, ALPHA_CVG_SEL }, + { "FORCE_BL", FORCE_BL, FORCE_BL }, + }; + + static const char* const m[4][4] = { + { "G_BL_CLR_IN", "G_BL_CLR_MEM", "G_BL_CLR_BL", "G_BL_CLR_FOG" }, + { "G_BL_A_SHADE", "G_BL_0", "G_BL_A_IN", "G_BL_A_FOG" }, + { "G_BL_CLR_IN", "G_BL_CLR_MEM", "G_BL_CLR_BL", "G_BL_CLR_FOG" }, + { "G_BL_A_MEM", "G_BL_0", "G_BL_1MA", "G_BL_1" }, + }; + + EMU64_LOG("\ngsDPSetRenderBlender(\n"); + + u32 c1 = (data >> 18) & 0x3333; + u32 c2 = (data >> 16) & 0x3333; + + for (u32 i = 0; i < ARRAY_COUNT(flags); i++) { + if ((data & flags[i].mask) == flags[i].value) { + this->Printf("%s|", flags[i].name); + } + } + + this->Printf("\nGBL_c1(%s, %s, %s, %s)|", m[0][(c1 >> 12) & 3], m[1][(c1 >> 8) & 3], m[2][(c1 >> 4) & 3], + m[3][c1 & 3]); + + this->Printf("\nGBL_c2(%s, %s, %s, %s)", m[0][(c2 >> 12) & 3], m[1][(c2 >> 8) & 3], m[2][(c2 >> 4) & 3], + m[3][c2 & 3]); + + EMU64_LOG("\n),"); +} + +void emu64::show_vtx(Vtx* vtx, int count, int begin) { + for (int i = 0; i < count; i++, vtx++) { + if ((this->geometry_mode & G_LIGHTING) != 0) { + Vtx_tn* p_vtx = &vtx->n; + + // clang-format off + this->Printf( + "\n{{%6d, %6d, %6d, %d, %6d, %6d, %4d, %4d, %4d, %3d}}, /* vc%02d */", + p_vtx->ob[0], p_vtx->ob[1], p_vtx->ob[2], /* Position */ + p_vtx->flag, /* Flag */ + p_vtx->tc[0], p_vtx->tc[1], /* Texture Coordinates */ + p_vtx->n[0], p_vtx->n[1], p_vtx->n[2], /* Normal */ + p_vtx->a, /* Alpha */ + begin + i /* Vertex # */ + ); + // clang-format on + } else { + Vtx_t* p_vtx = &vtx->v; + + // clang-format off + this->Printf( + "\n{{%6d, %6d, %6d, %d, %6d, %6d, %4d, %4d, %4d, %3d}}, /* vn%02d */", + p_vtx->ob[0], p_vtx->ob[1], p_vtx->ob[2], /* Position */ + p_vtx->flag, /* Flag */ + p_vtx->tc[0], p_vtx->tc[1], /* Texture Coordinates */ + p_vtx->cn[0], p_vtx->cn[1], p_vtx->cn[2], p_vtx->cn[3], /* Color */ + begin + i /* Vertex # */ + ); + // clang-format on + } + } +} + +void emu64::print_combine(u64 cmd) { + Gsetcombine_new* combine = (Gsetcombine_new*)&cmd; + this->Printf0( + "gsDPSetCombineLERP(%s,%s,%s,%s, %s,%s,%s,%s, %s,%s,%s,%s, %s,%s,%s,%s),", + this->combine_name(combine->a0, COMBINER_PARAM_A), this->combine_name(combine->b0, COMBINER_PARAM_B), + this->combine_name(combine->c0, COMBINER_PARAM_C), this->combine_name(combine->d0, COMBINER_PARAM_D), + this->combine_alpha(combine->Aa0, COMBINER_PARAM_A), this->combine_alpha(combine->Ab0, COMBINER_PARAM_B), + this->combine_alpha(combine->Ac0, COMBINER_PARAM_C), this->combine_alpha(combine->Ad0, COMBINER_PARAM_D), + this->combine_name(combine->a1, COMBINER_PARAM_A), this->combine_name(combine->b1, COMBINER_PARAM_B), + this->combine_name(combine->c1, COMBINER_PARAM_C), this->combine_name(combine->d1, COMBINER_PARAM_D), + this->combine_alpha(combine->Aa1, COMBINER_PARAM_A), this->combine_alpha(combine->Ab1, COMBINER_PARAM_B), + this->combine_alpha(combine->Ac1, COMBINER_PARAM_C), this->combine_alpha(combine->Ad1, COMBINER_PARAM_D)); +} + +void emu64::print_combine_tev(u64 combine_tev) { + Gsetcombine_tev* c_tev = (Gsetcombine_tev*)&combine_tev; + + this->Printf0("gsDPSetCombineTev(%s,%s,%s,%s, %s,%s,%s,%s, %s,%s,%s,%s, %s,%s,%s,%s),", + this->combine_tev_color_name(c_tev->a0), this->combine_tev_color_name(c_tev->b0), + this->combine_tev_color_name(c_tev->c0), this->combine_tev_color_name(c_tev->d0), + this->combine_tev_alpha_name(c_tev->Aa0), this->combine_tev_alpha_name(c_tev->Ab0), + this->combine_tev_alpha_name(c_tev->Ac0), this->combine_tev_alpha_name(c_tev->Ad0), + this->combine_tev_color_name(c_tev->a1), this->combine_tev_color_name(c_tev->b1), + this->combine_tev_color_name(c_tev->c1), this->combine_tev_color_name(c_tev->d1), + this->combine_tev_alpha_name(c_tev->Aa1), this->combine_tev_alpha_name(c_tev->Ab1), + this->combine_tev_alpha_name(c_tev->Ac1), this->combine_tev_alpha_name(c_tev->Ad1)); +} + +void emu64::print_guMtxXFM1F_dol2(MtxP mtx, GXProjectionType type, float x, float y, float z) { + if (type == GX_PERSPECTIVE) { + float s = -1.0f / z; + + float x0 = mtx[0][0] * x * s - mtx[0][2]; + float y0 = mtx[1][1] * y * s - mtx[1][2]; + float z0 = mtx[2][3] * s - mtx[2][2]; + + EMU64_LOGF("%8.3f * %8.3f * %8.3f - %8.3f = %8.3f\n", mtx[0][0], x, s, mtx[0][2], x0); + EMU64_LOGF("%8.3f * %8.3f * %8.3f - %8.3f = %8.3f\n", mtx[1][1], y, s, mtx[1][2], y0); + EMU64_LOGF("%8.3f * %8.3f - %8.3f = %8.3f\n", mtx[2][3], s, mtx[2][2], z0); + } else { + float x0 = mtx[0][0] * x + mtx[0][3]; + float y0 = mtx[1][1] * y + mtx[1][3]; + float z0 = mtx[2][2] * z + mtx[2][3]; + + EMU64_LOGF("%8.3f * %8.3f + %8.3f = %8.3f\n", mtx[0][0], x, mtx[0][3], x0); + EMU64_LOGF("%8.3f * %8.3f + %8.3f = %8.3f\n", mtx[1][1], x, mtx[1][3], y0); + EMU64_LOGF("%8.3f * %8.3f + %8.3f = %8.3f\n", mtx[2][2], x, mtx[2][3], z0); + } +} diff --git a/src/static/libforest/emu64/emu64_util.cpp b/src/static/libforest/emu64/emu64_util.cpp deleted file mode 100644 index 77b10f3b..00000000 --- a/src/static/libforest/emu64/emu64_util.cpp +++ /dev/null @@ -1,105 +0,0 @@ -#include "emu64.hpp" - -const char* emu64::combine_name(u32 param, u32 type) { - switch (param) { - case 0: - return "COMBINED"; - case 1: - return "TEXEL0"; - case 2: - return "TEXEL1"; - case 3: - return "PRIMITIVE"; - case 4: - return "SHADE"; - case 5: - return "ENVIRONMENT"; - case 6: - if (type == COMBINER_PARAM_B) { - return "CENTER"; - } else if (type == COMBINER_PARAM_C) { - return "SCALE"; - } else { - return "1"; - } - case 7: - if (type == COMBINER_PARAM_A) { - return "NOISE"; - } else if (type == COMBINER_PARAM_B) { - return "K4"; - } else if (type == COMBINER_PARAM_C) { - return "COMBINED_ALPHA"; - } else { - return "0"; - } - } - - if (type != COMBINER_PARAM_C) { - return "0"; - } - - switch (param) { - case 8: - return "TEXEL0_ALPHA"; - case 9: - return "TEXEL1_ALPHA"; - case 10: - return "PRIMITIVE_ALPHA"; - case 11: - return "SHADE_ALPHA"; - case 12: - return "ENV_ALPHA"; - case 13: - return "LOD_FRACTION"; - case 14: - return "PRIM_LOD_FRAC"; - case 15: - return "K5"; - default: - return "0"; - } -} - -const char* emu64::combine_alpha(int param, int type) { - switch (param) { - case 0: - return type == COMBINER_PARAM_C ? "LOD_FRACTION" : "COMBINED"; - case 1: - return "TEXEL0"; - case 2: - return "TEXEL1"; - case 3: - return "PRIMITIVE"; - case 4: - return "SHADE"; - case 5: - return "ENVIRONMENT"; - case 6: - return type == COMBINER_PARAM_C ? "PRIM_LOD_FRAC" : "1"; - case 7: - return "0"; - } - -/* There should be a default case here, but they forgot it. */ -/* It returns a pointer to the emu64 class instead. */ -#ifdef EMU64_FIX_COMBINE_NAME_RETURN_VALUES - return "0"; -#endif -} - -void emu64::print_combine(u64 combine) { - Gsetcombine_new* setcombine = (Gsetcombine_new*)&combine; - this->Printf0( - "gsDPSetCombineLERP(%s,%s,%s,%s, %s,%s,%s,%s, %s,%s,%s,%s, %s,%s,%s,%s),", - this->combine_name(setcombine->a0, COMBINER_PARAM_A), this->combine_name(setcombine->b0, COMBINER_PARAM_B), - this->combine_name(setcombine->c0, COMBINER_PARAM_C), this->combine_name(setcombine->d0, COMBINER_PARAM_D), - - this->combine_alpha(setcombine->Aa0, COMBINER_PARAM_A), this->combine_alpha(setcombine->Ab0, COMBINER_PARAM_B), - this->combine_alpha(setcombine->Ac0, COMBINER_PARAM_C), this->combine_alpha(setcombine->Ad0, COMBINER_PARAM_D), - - this->combine_name(setcombine->a1, COMBINER_PARAM_A), this->combine_name(setcombine->b1, COMBINER_PARAM_B), - this->combine_name(setcombine->c1, COMBINER_PARAM_C), this->combine_name(setcombine->d1, COMBINER_PARAM_D), - - this->combine_alpha(setcombine->Aa1, COMBINER_PARAM_A), this->combine_alpha(setcombine->Ab1, COMBINER_PARAM_B), - this->combine_alpha(setcombine->Ac1, COMBINER_PARAM_C), this->combine_alpha(setcombine->Ad1, COMBINER_PARAM_D)); -} diff --git a/src/static/libforest/emu64/emu64_utility.cc b/src/static/libforest/emu64/emu64_utility.cc new file mode 100644 index 00000000..0a95f801 --- /dev/null +++ b/src/static/libforest/emu64/emu64_utility.cc @@ -0,0 +1,181 @@ +#include "libforest/emu64/emu64.hpp" + +#include "boot.h" +#include "terminal.h" +#include "MSL_C/w_math.h" + +u32 emu64::seg2k0(u32 segadr) { + u32 k0; + + if ((segadr >> 28) == 0) { + if (segadr < 0x03000000) { + this->Printf0(VT_COL(RED, WHITE) "segadr=%08x" VT_RST "\n", segadr); + this->panic("segadr is over 0x03000000.", __FILE__, 20); + k0 = segadr + 0x80000000; + } else { + k0 = (u32)this->segments[(segadr >> 24) & 0xF] + (segadr & 0xFFFFFF); + } + this->resolved_addresses++; + } else { + k0 = segadr; + } + + if ((k0 >> 31) == 0 || k0 < 0x80000000 || k0 >= 0x83000000) { + this->Printf0("異常なアドレスです。%08x -> %08x\n", segadr, k0); + this->panic("異常なアドレスです。", __FILE__, 77); + this->abnormal_addresses++; + } + + return k0; +} + +/* @unused void guMtxXFMWF(MtxP, float, float, float, float, float, float*, float*, float*, float*) */ + +/* @unused void guMtxXFM1F(MtxP, float, float, float, float, float*, float*, float*) */ + +void guMtxXFM1F_dol(MtxP mtx, float x, float y, float z, float* ox, float* oy, float* oz) { + *ox = mtx[0][0] * x + mtx[0][1] * y + mtx[0][2] * z + mtx[0][3]; + *oy = mtx[1][0] * x + mtx[1][1] * y + mtx[1][2] * z + mtx[1][3]; + *oz = mtx[2][0] * x + mtx[2][1] * y + mtx[2][2] * z + mtx[2][3]; +} + +void guMtxXFM1F_dol7(MtxP mtx, float x, float y, float z, float* ox, float* oy, float* oz) { + GC_Mtx inv; + + PSMTXInverse(mtx, inv); + *ox = inv[0][0] * x + inv[0][1] * y + inv[0][2] * z + inv[0][3]; + *oy = inv[1][0] * x + inv[1][1] * y + inv[1][2] * z + inv[1][3]; + *oz = inv[2][0] * x + inv[2][1] * y + inv[2][2] * z + inv[2][3]; +} + +void guMtxXFM1F_dol2(MtxP mtx, GXProjectionType type, float x, float y, float z, float* ox, float* oy, float* oz) { + if (type == GX_PERSPECTIVE) { + f32 s = -1.0f / z; + + *ox = mtx[0][0] * x * s - mtx[0][2]; + *oy = mtx[1][1] * y * s - mtx[1][2]; + *oz = mtx[2][3] * s - mtx[2][2]; + } else { + *ox = mtx[0][0] * x + mtx[0][3]; + *oy = mtx[1][1] * y + mtx[1][3]; + *oz = mtx[2][2] * z + mtx[2][3]; + } +} + +void guMtxXFM1F_dol2w(MtxP mtx, GXProjectionType type, float x, float y, float z, float* ox, float* oy, float* oz, + float* ow) { + if (type == GX_PERSPECTIVE) { + *ox = mtx[0][0] * x + mtx[0][2] * z; + *oy = mtx[1][1] * y + mtx[1][2] * z; + *oz = mtx[2][3] + mtx[2][2] * z; + *ow = -z; + } else { + *ox = mtx[0][0] * x + mtx[0][3]; + *oy = mtx[1][1] * y + mtx[1][3]; + *oz = mtx[2][2] * z + mtx[2][3]; + *ow = 1.0f; + } +} + +float guMtxXFM1F_dol3(MtxP mtx, GXProjectionType type, float z) { + if (type == GX_PERSPECTIVE) { + return -mtx[2][3] / (z + mtx[2][2]); + } else { + return (z - mtx[2][3]) / mtx[2][2]; + } +} + +void guMtxXFM1F_dol6w(MtxP mtx, GXProjectionType type, float x, float y, float z, float w, float* ox, float* oy, + float* oz, float* ow) { + if (type == GX_PERSPECTIVE) { + float xScale = mtx[0][0]; + float yScale = mtx[1][1]; + float zScale = mtx[2][2]; + + float xRatioScaling = mtx[0][2]; + float yRatioScaling = mtx[1][2]; + float zSkew = mtx[2][3]; + + *ox = (yScale * zSkew * (x + xRatioScaling * w)) / (xScale * (yScale * zSkew)); + *oy = (xScale * zSkew * (y + yRatioScaling * w)) / (xScale * (yScale * zSkew)); + *oz = -w; + *ow = (xScale * yScale * (z + zScale * w)) / (xScale * (yScale * zSkew)); + } else { + float xScale = mtx[0][0]; + float xSkew = mtx[0][3]; + + float yScale = mtx[1][1]; + float ySkew = mtx[1][3]; + + float zScale = mtx[2][2]; + float zSkew = mtx[2][3]; + + float n = 1.0f / (xScale * yScale * zScale); + + *ox = n * (yScale * zScale * (x - xSkew)); + *oy = n * (zScale * xScale * (y - ySkew)); + *oz = n * (xScale * yScale * (z - zSkew)); + *ow = 1.0f; + } +} + +void guMtxXFM1F_dol6w1(MtxP mtx, GXProjectionType type, float x, float y, float z, float w, float* ox, float* oy, + float* oz) { + if (type == GX_PERSPECTIVE) { + float xScale = mtx[0][0]; + float yScale = mtx[1][1]; + float zScale = mtx[2][2]; + + float xRatioScaling = mtx[0][2]; + float yRatioScaling = mtx[1][2]; + float zSkew = mtx[2][3]; + + float temp_f7 = 1.0f / (xScale * yScale * (z + (zScale * w))); + + *ox = temp_f7 * (yScale * zSkew * (x + (xRatioScaling * w))); + *oy = temp_f7 * (xScale * zSkew * (y + (yRatioScaling * w))); + *oz = temp_f7 * (yScale * zSkew * xScale * -w); + } else { + float translateX = mtx[0][3]; + float translateY = mtx[1][3]; + float translateZ = mtx[2][3]; + + float scaleX = mtx[0][0]; + float scaleY = mtx[1][1]; + float scaleZ = mtx[2][2]; + + *ox = (x - translateX) / scaleX; + *oy = (y - translateY) / scaleY; + *oz = (z - translateZ) / scaleZ; + } +} + +/* @unused void guMtxXFMWL(N64Mtx*, float, float, float, float, float*, float*, float*, float*) */ + +void guMtxNormalize(GC_Mtx mtx) { + for (int i = 0; i < 3; i++) { + float magnitude = sqrtf(mtx[i][0] * mtx[i][0] + mtx[i][1] * mtx[i][1] + mtx[i][2] * mtx[i][2]); + + mtx[i][0] *= 1.0f / magnitude; + mtx[i][1] *= 1.0f / magnitude; + mtx[i][2] *= 1.0f / magnitude; + } +} + +/* TODO: Mtx -> N64Mtx, GC_Mtx -> Mtx */ +void N64Mtx_to_DOLMtx(const Mtx* n64, MtxP gc) { + s16* fixed = ((s16*)n64) + 0; + u16* frac = ((u16*)n64) + 16; + int i; + + for (i = 0; i < 4; i++) { + gc[0][i] = fastcast_float(&fixed[0]) + fastcast_float(&frac[0]) * (1.0f / 65536.0f); + gc[1][i] = fastcast_float(&fixed[1]) + fastcast_float(&frac[1]) * (1.0f / 65536.0f); + gc[2][i] = fastcast_float(&fixed[2]) + fastcast_float(&frac[2]) * (1.0f / 65536.0f); + + fixed += 4; + frac += 4; + } +} + +/* @unused my_guMtxL2F(MtxP, const N64Mtx*) */ From ced2b772fb8378716bb06bdebb6b67996d327a9c Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Sat, 27 Jul 2024 12:29:23 -0400 Subject: [PATCH 056/234] Minor emu64 score improvements --- src/static/libforest/emu64/emu64.cc | 30 +++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/src/static/libforest/emu64/emu64.cc b/src/static/libforest/emu64/emu64.cc index 2f566c18..aad3a1eb 100644 --- a/src/static/libforest/emu64/emu64.cc +++ b/src/static/libforest/emu64/emu64.cc @@ -469,8 +469,12 @@ extern void get_dol_wd_ht(unsigned int siz, unsigned int in_wd, unsigned int in_ unsigned int blk_ht; get_blk_wd_ht(siz, &blk_wd, &blk_ht); - *wd = in_wd + (blk_wd - 1) & ~(blk_wd - 1); - *ht = in_ht + (blk_ht - 1) & ~(blk_ht - 1); + + unsigned int w = blk_wd - 1; + unsigned int h = blk_ht - 1; + + *wd = in_wd + w & ~w; + *ht = in_ht + h & ~h; } void emu64::texconv_tile(u8* addr, u8* converted_addr, unsigned int wd, unsigned int fmt, unsigned int siz, @@ -580,17 +584,19 @@ u8* emu64::texconv_tile_new(u8* addr, unsigned int wd, unsigned int fmt, unsigne u8* converted_addr = (u8*)(*texture_cache->funcs->search)(addr); /* Check if we already converted this texture */ - if (converted_addr == nullptr) { - u32 len = get_dol_tex_siz(siz, (end_wd - start_wd) + 1, (end_ht - start_ht) + 1); + if (converted_addr != nullptr) { + return converted_addr; + } - converted_addr = (u8*)(*texture_cache->funcs->alloc)(texture_cache, len); - if (converted_addr != nullptr) { - /* Convert from N64 -> GC */ - this->texconv_tile(addr, converted_addr, wd, fmt, siz, start_wd, start_ht, end_wd, end_ht, line_siz); - /* Update cache & store entry */ - DCStoreRange(converted_addr, len); - (*texture_cache->funcs->entry)(addr, converted_addr); - } + u32 len = get_dol_tex_siz(siz, (end_wd - start_wd) + 1, (end_ht - start_ht) + 1); + + converted_addr = (u8*)(*texture_cache->funcs->alloc)(texture_cache, len); + if (converted_addr != nullptr) { + /* Convert from N64 -> GC */ + this->texconv_tile(addr, converted_addr, wd, fmt, siz, start_wd, start_ht, end_wd, end_ht, line_siz); + /* Update cache & store entry */ + DCStoreRange(converted_addr, len); + (*texture_cache->funcs->entry)(addr, converted_addr); } return converted_addr; From 7d514cae561345b80fc1d6c1b7b4c5b249a312bf Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Sat, 27 Jul 2024 21:44:33 -0400 Subject: [PATCH 057/234] Implement & link all NPC draw data --- config/assets.yml | 8017 +++++++++++ config/rel_slices.yml | 698 + include/ac_npc.h | 34 +- src/data/npc/model/mdl/ant_1.c | 704 + src/data/npc/model/mdl/bea_1.c | 665 + src/data/npc/model/mdl/bev_1.c | 782 ++ src/data/npc/model/mdl/boa_1.c | 856 ++ src/data/npc/model/mdl/bpt_1.c | 800 ++ src/data/npc/model/mdl/brd_1.c | 744 ++ src/data/npc/model/mdl/bul_1.c | 741 ++ src/data/npc/model/mdl/cat_1.c | 651 + src/data/npc/model/mdl/cbr_1.c | 748 ++ src/data/npc/model/mdl/chn_1.c | 850 ++ src/data/npc/model/mdl/cml_1.c | 803 ++ src/data/npc/model/mdl/cow_1.c | 742 ++ src/data/npc/model/mdl/crd_1.c | 774 ++ src/data/npc/model/mdl/dog_1.c | 715 + src/data/npc/model/mdl/duk_1.c | 713 + src/data/npc/model/mdl/elp_1.c | 743 ++ src/data/npc/model/mdl/end_1.c | 799 ++ src/data/npc/model/mdl/flg_1.c | 585 + src/data/npc/model/mdl/fob_1.c | 819 ++ src/data/npc/model/mdl/fox_1.c | 740 ++ src/data/npc/model/mdl/goa_1.c | 705 + src/data/npc/model/mdl/gor_1.c | 837 ++ src/data/npc/model/mdl/grf_1.c | 854 ++ src/data/npc/model/mdl/gst_1.c | 456 + src/data/npc/model/mdl/hem_1.c | 678 + src/data/npc/model/mdl/hgh_1.c | 872 ++ src/data/npc/model/mdl/hgs_1.c | 872 ++ src/data/npc/model/mdl/hip_1.c | 823 ++ src/data/npc/model/mdl/hrs_1.c | 791 ++ src/data/npc/model/mdl/kab_1.c | 713 + src/data/npc/model/mdl/kal_1.c | 637 + src/data/npc/model/mdl/kgr_1.c | 845 ++ src/data/npc/model/mdl/lon_1.c | 814 ++ src/data/npc/model/mdl/lrc_1.c | 744 ++ src/data/npc/model/mdl/mka_1.c | 657 + src/data/npc/model/mdl/mnk_1.c | 827 ++ src/data/npc/model/mdl/mob_1.c | 613 + src/data/npc/model/mdl/mol_1.c | 630 + src/data/npc/model/mdl/mos_1.c | 630 + src/data/npc/model/mdl/mus_1.c | 743 ++ src/data/npc/model/mdl/oct_1.c | 828 ++ src/data/npc/model/mdl/ost_1.c | 801 ++ src/data/npc/model/mdl/owl_1.c | 866 ++ src/data/npc/model/mdl/pbr_1.c | 776 ++ src/data/npc/model/mdl/pga_1.c | 869 ++ src/data/npc/model/mdl/pgb_1.c | 865 ++ src/data/npc/model/mdl/pgn_1.c | 744 ++ src/data/npc/model/mdl/pig_1.c | 626 + src/data/npc/model/mdl/pkn_1.c | 600 + src/data/npc/model/mdl/pla_1.c | 789 ++ src/data/npc/model/mdl/plb_1.c | 865 ++ src/data/npc/model/mdl/plc_1.c | 757 ++ src/data/npc/model/mdl/plj_1.c | 723 + src/data/npc/model/mdl/rbt_1.c | 683 + src/data/npc/model/mdl/rcc_1.c | 780 ++ src/data/npc/model/mdl/rcd_1.c | 747 ++ src/data/npc/model/mdl/rcf_1.c | 900 ++ src/data/npc/model/mdl/rcn_1.c | 749 ++ src/data/npc/model/mdl/rcs_1.c | 767 ++ src/data/npc/model/mdl/rhn_1.c | 896 ++ src/data/npc/model/mdl/seg_1.c | 850 ++ src/data/npc/model/mdl/shp_1.c | 609 + src/data/npc/model/mdl/snt_1.c | 708 + src/data/npc/model/mdl/squ_1.c | 753 ++ src/data/npc/model/mdl/tig_1.c | 766 ++ src/data/npc/model/mdl/ttl_1.c | 730 + src/data/npc/model/mdl/tuk_1.c | 962 ++ src/data/npc/model/mdl/wip_1.c | 720 + src/data/npc/model/mdl/wls_1.c | 862 ++ src/data/npc/model/mdl/wol_1.c | 688 + src/data/npc/model/mdl/xct_1.c | 636 + src/data/npc/model/mdl/xsq_1.c | 753 ++ src/data/npc/model/tex/ant_1.c | 40 + src/data/npc/model/tex/ant_2.c | 40 + src/data/npc/model/tex/ant_3.c | 40 + src/data/npc/model/tex/ant_4.c | 40 + src/data/npc/model/tex/ant_5.c | 40 + src/data/npc/model/tex/bea_1.c | 64 + src/data/npc/model/tex/bea_10.c | 64 + src/data/npc/model/tex/bea_2.c | 64 + src/data/npc/model/tex/bea_3.c | 64 + src/data/npc/model/tex/bea_5.c | 64 + src/data/npc/model/tex/bea_6.c | 64 + src/data/npc/model/tex/bea_7.c | 64 + src/data/npc/model/tex/bea_8.c | 64 + src/data/npc/model/tex/bea_9.c | 64 + src/data/npc/model/tex/bev_1.c | 40 + src/data/npc/model/tex/boa_1.c | 40 + src/data/npc/model/tex/bpt_1.c | 40 + src/data/npc/model/tex/brd_1.c | 40 + src/data/npc/model/tex/brd_10.c | 40 + src/data/npc/model/tex/brd_11.c | 40 + src/data/npc/model/tex/brd_2.c | 40 + src/data/npc/model/tex/brd_3.c | 40 + src/data/npc/model/tex/brd_4.c | 40 + src/data/npc/model/tex/brd_5.c | 40 + src/data/npc/model/tex/brd_6.c | 40 + src/data/npc/model/tex/brd_7.c | 40 + src/data/npc/model/tex/brd_8.c | 40 + src/data/npc/model/tex/brd_9.c | 40 + src/data/npc/model/tex/bul_1.c | 64 + src/data/npc/model/tex/bul_2.c | 64 + src/data/npc/model/tex/bul_3.c | 64 + src/data/npc/model/tex/bul_4.c | 64 + src/data/npc/model/tex/cat_1.c | 64 + src/data/npc/model/tex/cat_10.c | 64 + src/data/npc/model/tex/cat_11.c | 64 + src/data/npc/model/tex/cat_12.c | 64 + src/data/npc/model/tex/cat_13.c | 64 + src/data/npc/model/tex/cat_14.c | 64 + src/data/npc/model/tex/cat_15.c | 64 + src/data/npc/model/tex/cat_2.c | 64 + src/data/npc/model/tex/cat_3.c | 64 + src/data/npc/model/tex/cat_4.c | 64 + src/data/npc/model/tex/cat_5.c | 64 + src/data/npc/model/tex/cat_6.c | 64 + src/data/npc/model/tex/cat_7.c | 64 + src/data/npc/model/tex/cat_8.c | 64 + src/data/npc/model/tex/cat_9.c | 64 + src/data/npc/model/tex/cbr_1.c | 64 + src/data/npc/model/tex/cbr_10.c | 64 + src/data/npc/model/tex/cbr_11.c | 64 + src/data/npc/model/tex/cbr_2.c | 64 + src/data/npc/model/tex/cbr_3.c | 64 + src/data/npc/model/tex/cbr_4.c | 64 + src/data/npc/model/tex/cbr_5.c | 64 + src/data/npc/model/tex/cbr_6.c | 64 + src/data/npc/model/tex/cbr_7.c | 64 + src/data/npc/model/tex/cbr_8.c | 64 + src/data/npc/model/tex/cbr_9.c | 64 + src/data/npc/model/tex/chn_1.c | 40 + src/data/npc/model/tex/chn_2.c | 40 + src/data/npc/model/tex/chn_3.c | 40 + src/data/npc/model/tex/chn_4.c | 40 + src/data/npc/model/tex/chn_5.c | 40 + src/data/npc/model/tex/chn_6.c | 40 + src/data/npc/model/tex/chn_7.c | 40 + src/data/npc/model/tex/chn_8.c | 40 + src/data/npc/model/tex/chn_9.c | 40 + src/data/npc/model/tex/cml_1.c | 40 + src/data/npc/model/tex/cow_1.c | 64 + src/data/npc/model/tex/cow_2.c | 64 + src/data/npc/model/tex/cow_3.c | 64 + src/data/npc/model/tex/cow_4.c | 64 + src/data/npc/model/tex/crd_1.c | 40 + src/data/npc/model/tex/crd_2.c | 40 + src/data/npc/model/tex/crd_3.c | 40 + src/data/npc/model/tex/crd_4.c | 40 + src/data/npc/model/tex/dog_1.c | 64 + src/data/npc/model/tex/dog_10.c | 64 + src/data/npc/model/tex/dog_2.c | 64 + src/data/npc/model/tex/dog_3.c | 64 + src/data/npc/model/tex/dog_4.c | 64 + src/data/npc/model/tex/dog_5.c | 64 + src/data/npc/model/tex/dog_6.c | 64 + src/data/npc/model/tex/dog_7.c | 64 + src/data/npc/model/tex/dog_8.c | 64 + src/data/npc/model/tex/dog_9.c | 64 + src/data/npc/model/tex/duk_1.c | 64 + src/data/npc/model/tex/duk_10.c | 64 + src/data/npc/model/tex/duk_11.c | 64 + src/data/npc/model/tex/duk_2.c | 64 + src/data/npc/model/tex/duk_3.c | 64 + src/data/npc/model/tex/duk_4.c | 64 + src/data/npc/model/tex/duk_5.c | 64 + src/data/npc/model/tex/duk_6.c | 64 + src/data/npc/model/tex/duk_7.c | 64 + src/data/npc/model/tex/duk_8.c | 64 + src/data/npc/model/tex/duk_9.c | 64 + src/data/npc/model/tex/elp_1.c | 64 + src/data/npc/model/tex/elp_2.c | 64 + src/data/npc/model/tex/elp_3.c | 64 + src/data/npc/model/tex/elp_4.c | 64 + src/data/npc/model/tex/elp_5.c | 64 + src/data/npc/model/tex/elp_6.c | 64 + src/data/npc/model/tex/elp_7.c | 64 + src/data/npc/model/tex/end_1.c | 64 + src/data/npc/model/tex/flg_1.c | 64 + src/data/npc/model/tex/flg_10.c | 64 + src/data/npc/model/tex/flg_11.c | 64 + src/data/npc/model/tex/flg_12.c | 64 + src/data/npc/model/tex/flg_13.c | 64 + src/data/npc/model/tex/flg_2.c | 64 + src/data/npc/model/tex/flg_3.c | 64 + src/data/npc/model/tex/flg_4.c | 64 + src/data/npc/model/tex/flg_5.c | 64 + src/data/npc/model/tex/flg_6.c | 64 + src/data/npc/model/tex/flg_7.c | 64 + src/data/npc/model/tex/flg_8.c | 64 + src/data/npc/model/tex/flg_9.c | 64 + src/data/npc/model/tex/fob_1.c | 40 + src/data/npc/model/tex/fox_1.c | 40 + src/data/npc/model/tex/goa_1.c | 64 + src/data/npc/model/tex/goa_2.c | 64 + src/data/npc/model/tex/goa_3.c | 64 + src/data/npc/model/tex/goa_4.c | 64 + src/data/npc/model/tex/goa_5.c | 64 + src/data/npc/model/tex/goa_6.c | 64 + src/data/npc/model/tex/gor_1.c | 64 + src/data/npc/model/tex/gor_2.c | 64 + src/data/npc/model/tex/gor_3.c | 64 + src/data/npc/model/tex/gor_4.c | 64 + src/data/npc/model/tex/gor_5.c | 64 + src/data/npc/model/tex/grf_1.c | 40 + src/data/npc/model/tex/gst_1.c | 64 + src/data/npc/model/tex/hem_1.c | 8 + src/data/npc/model/tex/hgh_1.c | 40 + src/data/npc/model/tex/hgs_1.c | 40 + src/data/npc/model/tex/hip_1.c | 40 + src/data/npc/model/tex/hip_2.c | 40 + src/data/npc/model/tex/hip_3.c | 40 + src/data/npc/model/tex/hip_4.c | 40 + src/data/npc/model/tex/hip_5.c | 40 + src/data/npc/model/tex/hip_6.c | 40 + src/data/npc/model/tex/hip_7.c | 40 + src/data/npc/model/tex/hrs_1.c | 40 + src/data/npc/model/tex/hrs_2.c | 40 + src/data/npc/model/tex/hrs_3.c | 40 + src/data/npc/model/tex/hrs_4.c | 40 + src/data/npc/model/tex/hrs_5.c | 40 + src/data/npc/model/tex/hrs_6.c | 40 + src/data/npc/model/tex/hrs_7.c | 40 + src/data/npc/model/tex/hrs_8.c | 40 + src/data/npc/model/tex/kab_1.c | 40 + src/data/npc/model/tex/kal_1.c | 64 + src/data/npc/model/tex/kal_2.c | 64 + src/data/npc/model/tex/kal_3.c | 64 + src/data/npc/model/tex/kal_4.c | 64 + src/data/npc/model/tex/kal_5.c | 64 + src/data/npc/model/tex/kal_6.c | 64 + src/data/npc/model/tex/kgr_1.c | 40 + src/data/npc/model/tex/kgr_2.c | 40 + src/data/npc/model/tex/kgr_3.c | 40 + src/data/npc/model/tex/kgr_4.c | 40 + src/data/npc/model/tex/kgr_5.c | 40 + src/data/npc/model/tex/kgr_6.c | 40 + src/data/npc/model/tex/lon_1.c | 64 + src/data/npc/model/tex/lon_2.c | 64 + src/data/npc/model/tex/lon_3.c | 64 + src/data/npc/model/tex/lon_4.c | 64 + src/data/npc/model/tex/lrc_1.c | 40 + src/data/npc/model/tex/mka_1.c | 8 + src/data/npc/model/tex/mnk_1.c | 64 + src/data/npc/model/tex/mob_1.c | 64 + src/data/npc/model/tex/mol_1.c | 64 + src/data/npc/model/tex/mos_1.c | 64 + src/data/npc/model/tex/mus_1.c | 64 + src/data/npc/model/tex/mus_10.c | 64 + src/data/npc/model/tex/mus_2.c | 64 + src/data/npc/model/tex/mus_3.c | 64 + src/data/npc/model/tex/mus_4.c | 64 + src/data/npc/model/tex/mus_5.c | 64 + src/data/npc/model/tex/mus_6.c | 64 + src/data/npc/model/tex/mus_7.c | 64 + src/data/npc/model/tex/mus_8.c | 64 + src/data/npc/model/tex/mus_9.c | 64 + src/data/npc/model/tex/oct_1.c | 40 + src/data/npc/model/tex/ost_1.c | 40 + src/data/npc/model/tex/ost_2.c | 40 + src/data/npc/model/tex/ost_3.c | 40 + src/data/npc/model/tex/ost_4.c | 40 + src/data/npc/model/tex/owl_1.c | 40 + src/data/npc/model/tex/pbr_1.c | 40 + src/data/npc/model/tex/pbr_2.c | 40 + src/data/npc/model/tex/pbr_3.c | 40 + src/data/npc/model/tex/pbr_4.c | 40 + src/data/npc/model/tex/pbr_5.c | 40 + src/data/npc/model/tex/pga_1.c | 40 + src/data/npc/model/tex/pgb_1.c | 40 + src/data/npc/model/tex/pgn_1.c | 40 + src/data/npc/model/tex/pgn_2.c | 40 + src/data/npc/model/tex/pgn_3.c | 40 + src/data/npc/model/tex/pgn_4.c | 40 + src/data/npc/model/tex/pgn_5.c | 40 + src/data/npc/model/tex/pgn_6.c | 40 + src/data/npc/model/tex/pgn_7.c | 40 + src/data/npc/model/tex/pgn_8.c | 40 + src/data/npc/model/tex/pig_1.c | 64 + src/data/npc/model/tex/pig_10.c | 64 + src/data/npc/model/tex/pig_11.c | 64 + src/data/npc/model/tex/pig_2.c | 64 + src/data/npc/model/tex/pig_3.c | 64 + src/data/npc/model/tex/pig_4.c | 64 + src/data/npc/model/tex/pig_5.c | 64 + src/data/npc/model/tex/pig_6.c | 64 + src/data/npc/model/tex/pig_7.c | 64 + src/data/npc/model/tex/pig_8.c | 64 + src/data/npc/model/tex/pig_9.c | 64 + src/data/npc/model/tex/pkn_1.c | 8 + src/data/npc/model/tex/pla_1.c | 64 + src/data/npc/model/tex/plb_1.c | 40 + src/data/npc/model/tex/plc_1.c | 64 + src/data/npc/model/tex/plj_1.c | 64 + src/data/npc/model/tex/rbt_1.c | 64 + src/data/npc/model/tex/rbt_10.c | 64 + src/data/npc/model/tex/rbt_11.c | 64 + src/data/npc/model/tex/rbt_2.c | 64 + src/data/npc/model/tex/rbt_3.c | 64 + src/data/npc/model/tex/rbt_4.c | 64 + src/data/npc/model/tex/rbt_5.c | 64 + src/data/npc/model/tex/rbt_6.c | 64 + src/data/npc/model/tex/rbt_7.c | 64 + src/data/npc/model/tex/rbt_8.c | 64 + src/data/npc/model/tex/rbt_9.c | 64 + src/data/npc/model/tex/rcc_1.c | 40 + src/data/npc/model/tex/rcd_1.c | 40 + src/data/npc/model/tex/rcf_1.c | 40 + src/data/npc/model/tex/rcn_1.c | 40 + src/data/npc/model/tex/rcs_1.c | 40 + src/data/npc/model/tex/rhn_1.c | 64 + src/data/npc/model/tex/rhn_2.c | 64 + src/data/npc/model/tex/rhn_3.c | 64 + src/data/npc/model/tex/rhn_4.c | 64 + src/data/npc/model/tex/seg_1.c | 40 + src/data/npc/model/tex/shp_1.c | 64 + src/data/npc/model/tex/shp_2.c | 64 + src/data/npc/model/tex/shp_3.c | 64 + src/data/npc/model/tex/shp_4.c | 64 + src/data/npc/model/tex/shp_5.c | 64 + src/data/npc/model/tex/shp_6.c | 64 + src/data/npc/model/tex/snt_1.c | 64 + src/data/npc/model/tex/squ_1.c | 64 + src/data/npc/model/tex/squ_10.c | 64 + src/data/npc/model/tex/squ_11.c | 64 + src/data/npc/model/tex/squ_2.c | 64 + src/data/npc/model/tex/squ_3.c | 64 + src/data/npc/model/tex/squ_4.c | 64 + src/data/npc/model/tex/squ_5.c | 64 + src/data/npc/model/tex/squ_6.c | 64 + src/data/npc/model/tex/squ_7.c | 64 + src/data/npc/model/tex/squ_8.c | 64 + src/data/npc/model/tex/squ_9.c | 64 + src/data/npc/model/tex/tig_1.c | 40 + src/data/npc/model/tex/tig_2.c | 40 + src/data/npc/model/tex/tig_3.c | 40 + src/data/npc/model/tex/tig_4.c | 40 + src/data/npc/model/tex/ttl_1.c | 40 + src/data/npc/model/tex/tuk_1.c | 40 + src/data/npc/model/tex/wip_1.c | 64 + src/data/npc/model/tex/wls_1.c | 40 + src/data/npc/model/tex/wol_1.c | 40 + src/data/npc/model/tex/wol_2.c | 40 + src/data/npc/model/tex/wol_3.c | 40 + src/data/npc/model/tex/wol_4.c | 40 + src/data/npc/model/tex/wol_5.c | 40 + src/data/npc/model/tex/wol_6.c | 40 + src/data/npc/model/tex/xct_1.c | 64 + src/data/npc/model/tex/xsq_1.c | 64 + src/data/npc/npc_draw_data.c | 21349 ++++++++++++++++++++++++++++++ tools/tmp.py | 5371 ++++++++ 353 files changed, 104897 insertions(+), 3 deletions(-) create mode 100644 src/data/npc/model/mdl/ant_1.c create mode 100644 src/data/npc/model/mdl/bea_1.c create mode 100644 src/data/npc/model/mdl/bev_1.c create mode 100644 src/data/npc/model/mdl/boa_1.c create mode 100644 src/data/npc/model/mdl/bpt_1.c create mode 100644 src/data/npc/model/mdl/brd_1.c create mode 100644 src/data/npc/model/mdl/bul_1.c create mode 100644 src/data/npc/model/mdl/cat_1.c create mode 100644 src/data/npc/model/mdl/cbr_1.c create mode 100644 src/data/npc/model/mdl/chn_1.c create mode 100644 src/data/npc/model/mdl/cml_1.c create mode 100644 src/data/npc/model/mdl/cow_1.c create mode 100644 src/data/npc/model/mdl/crd_1.c create mode 100644 src/data/npc/model/mdl/dog_1.c create mode 100644 src/data/npc/model/mdl/duk_1.c create mode 100644 src/data/npc/model/mdl/elp_1.c create mode 100644 src/data/npc/model/mdl/end_1.c create mode 100644 src/data/npc/model/mdl/flg_1.c create mode 100644 src/data/npc/model/mdl/fob_1.c create mode 100644 src/data/npc/model/mdl/fox_1.c create mode 100644 src/data/npc/model/mdl/goa_1.c create mode 100644 src/data/npc/model/mdl/gor_1.c create mode 100644 src/data/npc/model/mdl/grf_1.c create mode 100644 src/data/npc/model/mdl/gst_1.c create mode 100644 src/data/npc/model/mdl/hem_1.c create mode 100644 src/data/npc/model/mdl/hgh_1.c create mode 100644 src/data/npc/model/mdl/hgs_1.c create mode 100644 src/data/npc/model/mdl/hip_1.c create mode 100644 src/data/npc/model/mdl/hrs_1.c create mode 100644 src/data/npc/model/mdl/kab_1.c create mode 100644 src/data/npc/model/mdl/kal_1.c create mode 100644 src/data/npc/model/mdl/kgr_1.c create mode 100644 src/data/npc/model/mdl/lon_1.c create mode 100644 src/data/npc/model/mdl/lrc_1.c create mode 100644 src/data/npc/model/mdl/mka_1.c create mode 100644 src/data/npc/model/mdl/mnk_1.c create mode 100644 src/data/npc/model/mdl/mob_1.c create mode 100644 src/data/npc/model/mdl/mol_1.c create mode 100644 src/data/npc/model/mdl/mos_1.c create mode 100644 src/data/npc/model/mdl/mus_1.c create mode 100644 src/data/npc/model/mdl/oct_1.c create mode 100644 src/data/npc/model/mdl/ost_1.c create mode 100644 src/data/npc/model/mdl/owl_1.c create mode 100644 src/data/npc/model/mdl/pbr_1.c create mode 100644 src/data/npc/model/mdl/pga_1.c create mode 100644 src/data/npc/model/mdl/pgb_1.c create mode 100644 src/data/npc/model/mdl/pgn_1.c create mode 100644 src/data/npc/model/mdl/pig_1.c create mode 100644 src/data/npc/model/mdl/pkn_1.c create mode 100644 src/data/npc/model/mdl/pla_1.c create mode 100644 src/data/npc/model/mdl/plb_1.c create mode 100644 src/data/npc/model/mdl/plc_1.c create mode 100644 src/data/npc/model/mdl/plj_1.c create mode 100644 src/data/npc/model/mdl/rbt_1.c create mode 100644 src/data/npc/model/mdl/rcc_1.c create mode 100644 src/data/npc/model/mdl/rcd_1.c create mode 100644 src/data/npc/model/mdl/rcf_1.c create mode 100644 src/data/npc/model/mdl/rcn_1.c create mode 100644 src/data/npc/model/mdl/rcs_1.c create mode 100644 src/data/npc/model/mdl/rhn_1.c create mode 100644 src/data/npc/model/mdl/seg_1.c create mode 100644 src/data/npc/model/mdl/shp_1.c create mode 100644 src/data/npc/model/mdl/snt_1.c create mode 100644 src/data/npc/model/mdl/squ_1.c create mode 100644 src/data/npc/model/mdl/tig_1.c create mode 100644 src/data/npc/model/mdl/ttl_1.c create mode 100644 src/data/npc/model/mdl/tuk_1.c create mode 100644 src/data/npc/model/mdl/wip_1.c create mode 100644 src/data/npc/model/mdl/wls_1.c create mode 100644 src/data/npc/model/mdl/wol_1.c create mode 100644 src/data/npc/model/mdl/xct_1.c create mode 100644 src/data/npc/model/mdl/xsq_1.c create mode 100644 src/data/npc/model/tex/ant_1.c create mode 100644 src/data/npc/model/tex/ant_2.c create mode 100644 src/data/npc/model/tex/ant_3.c create mode 100644 src/data/npc/model/tex/ant_4.c create mode 100644 src/data/npc/model/tex/ant_5.c create mode 100644 src/data/npc/model/tex/bea_1.c create mode 100644 src/data/npc/model/tex/bea_10.c create mode 100644 src/data/npc/model/tex/bea_2.c create mode 100644 src/data/npc/model/tex/bea_3.c create mode 100644 src/data/npc/model/tex/bea_5.c create mode 100644 src/data/npc/model/tex/bea_6.c create mode 100644 src/data/npc/model/tex/bea_7.c create mode 100644 src/data/npc/model/tex/bea_8.c create mode 100644 src/data/npc/model/tex/bea_9.c create mode 100644 src/data/npc/model/tex/bev_1.c create mode 100644 src/data/npc/model/tex/boa_1.c create mode 100644 src/data/npc/model/tex/bpt_1.c create mode 100644 src/data/npc/model/tex/brd_1.c create mode 100644 src/data/npc/model/tex/brd_10.c create mode 100644 src/data/npc/model/tex/brd_11.c create mode 100644 src/data/npc/model/tex/brd_2.c create mode 100644 src/data/npc/model/tex/brd_3.c create mode 100644 src/data/npc/model/tex/brd_4.c create mode 100644 src/data/npc/model/tex/brd_5.c create mode 100644 src/data/npc/model/tex/brd_6.c create mode 100644 src/data/npc/model/tex/brd_7.c create mode 100644 src/data/npc/model/tex/brd_8.c create mode 100644 src/data/npc/model/tex/brd_9.c create mode 100644 src/data/npc/model/tex/bul_1.c create mode 100644 src/data/npc/model/tex/bul_2.c create mode 100644 src/data/npc/model/tex/bul_3.c create mode 100644 src/data/npc/model/tex/bul_4.c create mode 100644 src/data/npc/model/tex/cat_1.c create mode 100644 src/data/npc/model/tex/cat_10.c create mode 100644 src/data/npc/model/tex/cat_11.c create mode 100644 src/data/npc/model/tex/cat_12.c create mode 100644 src/data/npc/model/tex/cat_13.c create mode 100644 src/data/npc/model/tex/cat_14.c create mode 100644 src/data/npc/model/tex/cat_15.c create mode 100644 src/data/npc/model/tex/cat_2.c create mode 100644 src/data/npc/model/tex/cat_3.c create mode 100644 src/data/npc/model/tex/cat_4.c create mode 100644 src/data/npc/model/tex/cat_5.c create mode 100644 src/data/npc/model/tex/cat_6.c create mode 100644 src/data/npc/model/tex/cat_7.c create mode 100644 src/data/npc/model/tex/cat_8.c create mode 100644 src/data/npc/model/tex/cat_9.c create mode 100644 src/data/npc/model/tex/cbr_1.c create mode 100644 src/data/npc/model/tex/cbr_10.c create mode 100644 src/data/npc/model/tex/cbr_11.c create mode 100644 src/data/npc/model/tex/cbr_2.c create mode 100644 src/data/npc/model/tex/cbr_3.c create mode 100644 src/data/npc/model/tex/cbr_4.c create mode 100644 src/data/npc/model/tex/cbr_5.c create mode 100644 src/data/npc/model/tex/cbr_6.c create mode 100644 src/data/npc/model/tex/cbr_7.c create mode 100644 src/data/npc/model/tex/cbr_8.c create mode 100644 src/data/npc/model/tex/cbr_9.c create mode 100644 src/data/npc/model/tex/chn_1.c create mode 100644 src/data/npc/model/tex/chn_2.c create mode 100644 src/data/npc/model/tex/chn_3.c create mode 100644 src/data/npc/model/tex/chn_4.c create mode 100644 src/data/npc/model/tex/chn_5.c create mode 100644 src/data/npc/model/tex/chn_6.c create mode 100644 src/data/npc/model/tex/chn_7.c create mode 100644 src/data/npc/model/tex/chn_8.c create mode 100644 src/data/npc/model/tex/chn_9.c create mode 100644 src/data/npc/model/tex/cml_1.c create mode 100644 src/data/npc/model/tex/cow_1.c create mode 100644 src/data/npc/model/tex/cow_2.c create mode 100644 src/data/npc/model/tex/cow_3.c create mode 100644 src/data/npc/model/tex/cow_4.c create mode 100644 src/data/npc/model/tex/crd_1.c create mode 100644 src/data/npc/model/tex/crd_2.c create mode 100644 src/data/npc/model/tex/crd_3.c create mode 100644 src/data/npc/model/tex/crd_4.c create mode 100644 src/data/npc/model/tex/dog_1.c create mode 100644 src/data/npc/model/tex/dog_10.c create mode 100644 src/data/npc/model/tex/dog_2.c create mode 100644 src/data/npc/model/tex/dog_3.c create mode 100644 src/data/npc/model/tex/dog_4.c create mode 100644 src/data/npc/model/tex/dog_5.c create mode 100644 src/data/npc/model/tex/dog_6.c create mode 100644 src/data/npc/model/tex/dog_7.c create mode 100644 src/data/npc/model/tex/dog_8.c create mode 100644 src/data/npc/model/tex/dog_9.c create mode 100644 src/data/npc/model/tex/duk_1.c create mode 100644 src/data/npc/model/tex/duk_10.c create mode 100644 src/data/npc/model/tex/duk_11.c create mode 100644 src/data/npc/model/tex/duk_2.c create mode 100644 src/data/npc/model/tex/duk_3.c create mode 100644 src/data/npc/model/tex/duk_4.c create mode 100644 src/data/npc/model/tex/duk_5.c create mode 100644 src/data/npc/model/tex/duk_6.c create mode 100644 src/data/npc/model/tex/duk_7.c create mode 100644 src/data/npc/model/tex/duk_8.c create mode 100644 src/data/npc/model/tex/duk_9.c create mode 100644 src/data/npc/model/tex/elp_1.c create mode 100644 src/data/npc/model/tex/elp_2.c create mode 100644 src/data/npc/model/tex/elp_3.c create mode 100644 src/data/npc/model/tex/elp_4.c create mode 100644 src/data/npc/model/tex/elp_5.c create mode 100644 src/data/npc/model/tex/elp_6.c create mode 100644 src/data/npc/model/tex/elp_7.c create mode 100644 src/data/npc/model/tex/end_1.c create mode 100644 src/data/npc/model/tex/flg_1.c create mode 100644 src/data/npc/model/tex/flg_10.c create mode 100644 src/data/npc/model/tex/flg_11.c create mode 100644 src/data/npc/model/tex/flg_12.c create mode 100644 src/data/npc/model/tex/flg_13.c create mode 100644 src/data/npc/model/tex/flg_2.c create mode 100644 src/data/npc/model/tex/flg_3.c create mode 100644 src/data/npc/model/tex/flg_4.c create mode 100644 src/data/npc/model/tex/flg_5.c create mode 100644 src/data/npc/model/tex/flg_6.c create mode 100644 src/data/npc/model/tex/flg_7.c create mode 100644 src/data/npc/model/tex/flg_8.c create mode 100644 src/data/npc/model/tex/flg_9.c create mode 100644 src/data/npc/model/tex/fob_1.c create mode 100644 src/data/npc/model/tex/fox_1.c create mode 100644 src/data/npc/model/tex/goa_1.c create mode 100644 src/data/npc/model/tex/goa_2.c create mode 100644 src/data/npc/model/tex/goa_3.c create mode 100644 src/data/npc/model/tex/goa_4.c create mode 100644 src/data/npc/model/tex/goa_5.c create mode 100644 src/data/npc/model/tex/goa_6.c create mode 100644 src/data/npc/model/tex/gor_1.c create mode 100644 src/data/npc/model/tex/gor_2.c create mode 100644 src/data/npc/model/tex/gor_3.c create mode 100644 src/data/npc/model/tex/gor_4.c create mode 100644 src/data/npc/model/tex/gor_5.c create mode 100644 src/data/npc/model/tex/grf_1.c create mode 100644 src/data/npc/model/tex/gst_1.c create mode 100644 src/data/npc/model/tex/hem_1.c create mode 100644 src/data/npc/model/tex/hgh_1.c create mode 100644 src/data/npc/model/tex/hgs_1.c create mode 100644 src/data/npc/model/tex/hip_1.c create mode 100644 src/data/npc/model/tex/hip_2.c create mode 100644 src/data/npc/model/tex/hip_3.c create mode 100644 src/data/npc/model/tex/hip_4.c create mode 100644 src/data/npc/model/tex/hip_5.c create mode 100644 src/data/npc/model/tex/hip_6.c create mode 100644 src/data/npc/model/tex/hip_7.c create mode 100644 src/data/npc/model/tex/hrs_1.c create mode 100644 src/data/npc/model/tex/hrs_2.c create mode 100644 src/data/npc/model/tex/hrs_3.c create mode 100644 src/data/npc/model/tex/hrs_4.c create mode 100644 src/data/npc/model/tex/hrs_5.c create mode 100644 src/data/npc/model/tex/hrs_6.c create mode 100644 src/data/npc/model/tex/hrs_7.c create mode 100644 src/data/npc/model/tex/hrs_8.c create mode 100644 src/data/npc/model/tex/kab_1.c create mode 100644 src/data/npc/model/tex/kal_1.c create mode 100644 src/data/npc/model/tex/kal_2.c create mode 100644 src/data/npc/model/tex/kal_3.c create mode 100644 src/data/npc/model/tex/kal_4.c create mode 100644 src/data/npc/model/tex/kal_5.c create mode 100644 src/data/npc/model/tex/kal_6.c create mode 100644 src/data/npc/model/tex/kgr_1.c create mode 100644 src/data/npc/model/tex/kgr_2.c create mode 100644 src/data/npc/model/tex/kgr_3.c create mode 100644 src/data/npc/model/tex/kgr_4.c create mode 100644 src/data/npc/model/tex/kgr_5.c create mode 100644 src/data/npc/model/tex/kgr_6.c create mode 100644 src/data/npc/model/tex/lon_1.c create mode 100644 src/data/npc/model/tex/lon_2.c create mode 100644 src/data/npc/model/tex/lon_3.c create mode 100644 src/data/npc/model/tex/lon_4.c create mode 100644 src/data/npc/model/tex/lrc_1.c create mode 100644 src/data/npc/model/tex/mka_1.c create mode 100644 src/data/npc/model/tex/mnk_1.c create mode 100644 src/data/npc/model/tex/mob_1.c create mode 100644 src/data/npc/model/tex/mol_1.c create mode 100644 src/data/npc/model/tex/mos_1.c create mode 100644 src/data/npc/model/tex/mus_1.c create mode 100644 src/data/npc/model/tex/mus_10.c create mode 100644 src/data/npc/model/tex/mus_2.c create mode 100644 src/data/npc/model/tex/mus_3.c create mode 100644 src/data/npc/model/tex/mus_4.c create mode 100644 src/data/npc/model/tex/mus_5.c create mode 100644 src/data/npc/model/tex/mus_6.c create mode 100644 src/data/npc/model/tex/mus_7.c create mode 100644 src/data/npc/model/tex/mus_8.c create mode 100644 src/data/npc/model/tex/mus_9.c create mode 100644 src/data/npc/model/tex/oct_1.c create mode 100644 src/data/npc/model/tex/ost_1.c create mode 100644 src/data/npc/model/tex/ost_2.c create mode 100644 src/data/npc/model/tex/ost_3.c create mode 100644 src/data/npc/model/tex/ost_4.c create mode 100644 src/data/npc/model/tex/owl_1.c create mode 100644 src/data/npc/model/tex/pbr_1.c create mode 100644 src/data/npc/model/tex/pbr_2.c create mode 100644 src/data/npc/model/tex/pbr_3.c create mode 100644 src/data/npc/model/tex/pbr_4.c create mode 100644 src/data/npc/model/tex/pbr_5.c create mode 100644 src/data/npc/model/tex/pga_1.c create mode 100644 src/data/npc/model/tex/pgb_1.c create mode 100644 src/data/npc/model/tex/pgn_1.c create mode 100644 src/data/npc/model/tex/pgn_2.c create mode 100644 src/data/npc/model/tex/pgn_3.c create mode 100644 src/data/npc/model/tex/pgn_4.c create mode 100644 src/data/npc/model/tex/pgn_5.c create mode 100644 src/data/npc/model/tex/pgn_6.c create mode 100644 src/data/npc/model/tex/pgn_7.c create mode 100644 src/data/npc/model/tex/pgn_8.c create mode 100644 src/data/npc/model/tex/pig_1.c create mode 100644 src/data/npc/model/tex/pig_10.c create mode 100644 src/data/npc/model/tex/pig_11.c create mode 100644 src/data/npc/model/tex/pig_2.c create mode 100644 src/data/npc/model/tex/pig_3.c create mode 100644 src/data/npc/model/tex/pig_4.c create mode 100644 src/data/npc/model/tex/pig_5.c create mode 100644 src/data/npc/model/tex/pig_6.c create mode 100644 src/data/npc/model/tex/pig_7.c create mode 100644 src/data/npc/model/tex/pig_8.c create mode 100644 src/data/npc/model/tex/pig_9.c create mode 100644 src/data/npc/model/tex/pkn_1.c create mode 100644 src/data/npc/model/tex/pla_1.c create mode 100644 src/data/npc/model/tex/plb_1.c create mode 100644 src/data/npc/model/tex/plc_1.c create mode 100644 src/data/npc/model/tex/plj_1.c create mode 100644 src/data/npc/model/tex/rbt_1.c create mode 100644 src/data/npc/model/tex/rbt_10.c create mode 100644 src/data/npc/model/tex/rbt_11.c create mode 100644 src/data/npc/model/tex/rbt_2.c create mode 100644 src/data/npc/model/tex/rbt_3.c create mode 100644 src/data/npc/model/tex/rbt_4.c create mode 100644 src/data/npc/model/tex/rbt_5.c create mode 100644 src/data/npc/model/tex/rbt_6.c create mode 100644 src/data/npc/model/tex/rbt_7.c create mode 100644 src/data/npc/model/tex/rbt_8.c create mode 100644 src/data/npc/model/tex/rbt_9.c create mode 100644 src/data/npc/model/tex/rcc_1.c create mode 100644 src/data/npc/model/tex/rcd_1.c create mode 100644 src/data/npc/model/tex/rcf_1.c create mode 100644 src/data/npc/model/tex/rcn_1.c create mode 100644 src/data/npc/model/tex/rcs_1.c create mode 100644 src/data/npc/model/tex/rhn_1.c create mode 100644 src/data/npc/model/tex/rhn_2.c create mode 100644 src/data/npc/model/tex/rhn_3.c create mode 100644 src/data/npc/model/tex/rhn_4.c create mode 100644 src/data/npc/model/tex/seg_1.c create mode 100644 src/data/npc/model/tex/shp_1.c create mode 100644 src/data/npc/model/tex/shp_2.c create mode 100644 src/data/npc/model/tex/shp_3.c create mode 100644 src/data/npc/model/tex/shp_4.c create mode 100644 src/data/npc/model/tex/shp_5.c create mode 100644 src/data/npc/model/tex/shp_6.c create mode 100644 src/data/npc/model/tex/snt_1.c create mode 100644 src/data/npc/model/tex/squ_1.c create mode 100644 src/data/npc/model/tex/squ_10.c create mode 100644 src/data/npc/model/tex/squ_11.c create mode 100644 src/data/npc/model/tex/squ_2.c create mode 100644 src/data/npc/model/tex/squ_3.c create mode 100644 src/data/npc/model/tex/squ_4.c create mode 100644 src/data/npc/model/tex/squ_5.c create mode 100644 src/data/npc/model/tex/squ_6.c create mode 100644 src/data/npc/model/tex/squ_7.c create mode 100644 src/data/npc/model/tex/squ_8.c create mode 100644 src/data/npc/model/tex/squ_9.c create mode 100644 src/data/npc/model/tex/tig_1.c create mode 100644 src/data/npc/model/tex/tig_2.c create mode 100644 src/data/npc/model/tex/tig_3.c create mode 100644 src/data/npc/model/tex/tig_4.c create mode 100644 src/data/npc/model/tex/ttl_1.c create mode 100644 src/data/npc/model/tex/tuk_1.c create mode 100644 src/data/npc/model/tex/wip_1.c create mode 100644 src/data/npc/model/tex/wls_1.c create mode 100644 src/data/npc/model/tex/wol_1.c create mode 100644 src/data/npc/model/tex/wol_2.c create mode 100644 src/data/npc/model/tex/wol_3.c create mode 100644 src/data/npc/model/tex/wol_4.c create mode 100644 src/data/npc/model/tex/wol_5.c create mode 100644 src/data/npc/model/tex/wol_6.c create mode 100644 src/data/npc/model/tex/xct_1.c create mode 100644 src/data/npc/model/tex/xsq_1.c create mode 100644 src/data/npc/npc_draw_data.c create mode 100644 tools/tmp.py diff --git a/config/assets.yml b/config/assets.yml index 96ff6057..a9da8621 100644 --- a/config/assets.yml +++ b/config/assets.yml @@ -579,3 +579,8020 @@ config/rel.yml: type: pal16 # ac_koinobori + # NPC draw data assets + npc/mdl/bev_1_v: + addrs: [0x806E03A0, 0x806E1DF0] + type: vtx + npc/tex/bev_1_pal: + addrs: [0x806E27E0, 0x806E2800] + type: pal16 + npc/tex/bev_1_eye1_TA_tex_txt: + addrs: [0x806E2800, 0x806E2900] + npc/tex/bev_1_eye2_TA_tex_txt: + addrs: [0x806E2900, 0x806E2A00] + npc/tex/bev_1_eye3_TA_tex_txt: + addrs: [0x806E2A00, 0x806E2B00] + npc/tex/bev_1_eye4_TA_tex_txt: + addrs: [0x806E2B00, 0x806E2C00] + npc/tex/bev_1_eye5_TA_tex_txt: + addrs: [0x806E2C00, 0x806E2D00] + npc/tex/bev_1_eye6_TA_tex_txt: + addrs: [0x806E2D00, 0x806E2E00] + npc/tex/bev_1_eye7_TA_tex_txt: + addrs: [0x806E2E00, 0x806E2F00] + npc/tex/bev_1_eye8_TA_tex_txt: + addrs: [0x806E2F00, 0x806E3000] + npc/tex/bev_1_tmem_txt: + addrs: [0x806E3000, 0x806E3500] + npc/mdl/ant_1_v: + addrs: [0x806E3838, 0x806E4F68] + type: vtx + npc/tex/ant_1_pal: + addrs: [0x806E5920, 0x806E5940] + type: pal16 + npc/tex/ant_1_eye1_TA_tex_txt: + addrs: [0x806E5940, 0x806E5A40] + npc/tex/ant_1_eye2_TA_tex_txt: + addrs: [0x806E5A40, 0x806E5B40] + npc/tex/ant_1_eye3_TA_tex_txt: + addrs: [0x806E5B40, 0x806E5C40] + npc/tex/ant_1_eye4_TA_tex_txt: + addrs: [0x806E5C40, 0x806E5D40] + npc/tex/ant_1_eye5_TA_tex_txt: + addrs: [0x806E5D40, 0x806E5E40] + npc/tex/ant_1_eye6_TA_tex_txt: + addrs: [0x806E5E40, 0x806E5F40] + npc/tex/ant_1_eye7_TA_tex_txt: + addrs: [0x806E5F40, 0x806E6040] + npc/tex/ant_1_eye8_TA_tex_txt: + addrs: [0x806E6040, 0x806E6140] + npc/tex/ant_1_tmem_txt: + addrs: [0x806E6140, 0x806E6640] + npc/tex/ant_2_pal: + addrs: [0x806E6640, 0x806E6660] + type: pal16 + npc/tex/ant_2_eye1_TA_tex_txt: + addrs: [0x806E6660, 0x806E6760] + npc/tex/ant_2_eye2_TA_tex_txt: + addrs: [0x806E6760, 0x806E6860] + npc/tex/ant_2_eye3_TA_tex_txt: + addrs: [0x806E6860, 0x806E6960] + npc/tex/ant_2_eye4_TA_tex_txt: + addrs: [0x806E6960, 0x806E6A60] + npc/tex/ant_2_eye5_TA_tex_txt: + addrs: [0x806E6A60, 0x806E6B60] + npc/tex/ant_2_eye6_TA_tex_txt: + addrs: [0x806E6B60, 0x806E6C60] + npc/tex/ant_2_eye7_TA_tex_txt: + addrs: [0x806E6C60, 0x806E6D60] + npc/tex/ant_2_eye8_TA_tex_txt: + addrs: [0x806E6D60, 0x806E6E60] + npc/tex/ant_2_tmem_txt: + addrs: [0x806E6E60, 0x806E7360] + npc/tex/ant_3_pal: + addrs: [0x806E7360, 0x806E7380] + type: pal16 + npc/tex/ant_3_eye1_TA_tex_txt: + addrs: [0x806E7380, 0x806E7480] + npc/tex/ant_3_eye2_TA_tex_txt: + addrs: [0x806E7480, 0x806E7580] + npc/tex/ant_3_eye3_TA_tex_txt: + addrs: [0x806E7580, 0x806E7680] + npc/tex/ant_3_eye4_TA_tex_txt: + addrs: [0x806E7680, 0x806E7780] + npc/tex/ant_3_eye5_TA_tex_txt: + addrs: [0x806E7780, 0x806E7880] + npc/tex/ant_3_eye6_TA_tex_txt: + addrs: [0x806E7880, 0x806E7980] + npc/tex/ant_3_eye7_TA_tex_txt: + addrs: [0x806E7980, 0x806E7A80] + npc/tex/ant_3_eye8_TA_tex_txt: + addrs: [0x806E7A80, 0x806E7B80] + npc/tex/ant_3_tmem_txt: + addrs: [0x806E7B80, 0x806E8080] + npc/tex/ant_4_pal: + addrs: [0x806E8080, 0x806E80A0] + type: pal16 + npc/tex/ant_4_eye1_TA_tex_txt: + addrs: [0x806E80A0, 0x806E81A0] + npc/tex/ant_4_eye2_TA_tex_txt: + addrs: [0x806E81A0, 0x806E82A0] + npc/tex/ant_4_eye3_TA_tex_txt: + addrs: [0x806E82A0, 0x806E83A0] + npc/tex/ant_4_eye4_TA_tex_txt: + addrs: [0x806E83A0, 0x806E84A0] + npc/tex/ant_4_eye5_TA_tex_txt: + addrs: [0x806E84A0, 0x806E85A0] + npc/tex/ant_4_eye6_TA_tex_txt: + addrs: [0x806E85A0, 0x806E86A0] + npc/tex/ant_4_eye7_TA_tex_txt: + addrs: [0x806E86A0, 0x806E87A0] + npc/tex/ant_4_eye8_TA_tex_txt: + addrs: [0x806E87A0, 0x806E88A0] + npc/tex/ant_4_tmem_txt: + addrs: [0x806E88A0, 0x806E8DA0] + npc/tex/ant_5_pal: + addrs: [0x806E8DA0, 0x806E8DC0] + type: pal16 + npc/tex/ant_5_eye1_TA_tex_txt: + addrs: [0x806E8DC0, 0x806E8EC0] + npc/tex/ant_5_eye2_TA_tex_txt: + addrs: [0x806E8EC0, 0x806E8FC0] + npc/tex/ant_5_eye3_TA_tex_txt: + addrs: [0x806E8FC0, 0x806E90C0] + npc/tex/ant_5_eye4_TA_tex_txt: + addrs: [0x806E90C0, 0x806E91C0] + npc/tex/ant_5_eye5_TA_tex_txt: + addrs: [0x806E91C0, 0x806E92C0] + npc/tex/ant_5_eye6_TA_tex_txt: + addrs: [0x806E92C0, 0x806E93C0] + npc/tex/ant_5_eye7_TA_tex_txt: + addrs: [0x806E93C0, 0x806E94C0] + npc/tex/ant_5_eye8_TA_tex_txt: + addrs: [0x806E94C0, 0x806E95C0] + npc/tex/ant_5_tmem_txt: + addrs: [0x806E95C0, 0x806E9AC0] + npc/mdl/wls_1_v: + addrs: [0x806E9AC0, 0x806EB510] + type: vtx + npc/tex/wls_1_pal: + addrs: [0x806EC000, 0x806EC020] + type: pal16 + npc/tex/wls_1_eye1_TA_tex_txt: + addrs: [0x806EC020, 0x806EC120] + npc/tex/wls_1_eye2_TA_tex_txt: + addrs: [0x806EC120, 0x806EC220] + npc/tex/wls_1_eye3_TA_tex_txt: + addrs: [0x806EC220, 0x806EC320] + npc/tex/wls_1_eye4_TA_tex_txt: + addrs: [0x806EC320, 0x806EC420] + npc/tex/wls_1_eye5_TA_tex_txt: + addrs: [0x806EC420, 0x806EC520] + npc/tex/wls_1_eye6_TA_tex_txt: + addrs: [0x806EC520, 0x806EC620] + npc/tex/wls_1_eye7_TA_tex_txt: + addrs: [0x806EC620, 0x806EC720] + npc/tex/wls_1_eye8_TA_tex_txt: + addrs: [0x806EC720, 0x806EC820] + npc/tex/wls_1_tmem_txt: + addrs: [0x806EC820, 0x806ECFA0] + npc/mdl/bea_1_v: + addrs: [0x806EF078, 0x806F0798] + type: vtx + npc/tex/bea_1_pal: + addrs: [0x806F1040, 0x806F1060] + type: pal16 + npc/tex/bea_1_eye1_TA_tex_txt: + addrs: [0x806F1060, 0x806F1160] + npc/tex/bea_1_eye2_TA_tex_txt: + addrs: [0x806F1160, 0x806F1260] + npc/tex/bea_1_eye3_TA_tex_txt: + addrs: [0x806F1260, 0x806F1360] + npc/tex/bea_1_eye4_TA_tex_txt: + addrs: [0x806F1360, 0x806F1460] + npc/tex/bea_1_eye5_TA_tex_txt: + addrs: [0x806F1460, 0x806F1560] + npc/tex/bea_1_eye6_TA_tex_txt: + addrs: [0x806F1560, 0x806F1660] + npc/tex/bea_1_eye7_TA_tex_txt: + addrs: [0x806F1660, 0x806F1760] + npc/tex/bea_1_eye8_TA_tex_txt: + addrs: [0x806F1760, 0x806F1860] + npc/tex/bea_1_mouth1_TA_tex_txt: + addrs: [0x806F1860, 0x806F1960] + npc/tex/bea_1_mouth2_TA_tex_txt: + addrs: [0x806F1960, 0x806F1A60] + npc/tex/bea_1_mouth3_TA_tex_txt: + addrs: [0x806F1A60, 0x806F1B60] + npc/tex/bea_1_mouth4_TA_tex_txt: + addrs: [0x806F1B60, 0x806F1C60] + npc/tex/bea_1_mouth5_TA_tex_txt: + addrs: [0x806F1C60, 0x806F1D60] + npc/tex/bea_1_mouth6_TA_tex_txt: + addrs: [0x806F1D60, 0x806F1E60] + npc/tex/bea_1_tmem_txt: + addrs: [0x806F1E60, 0x806F2260] + npc/tex/bea_2_pal: + addrs: [0x806F2260, 0x806F2280] + type: pal16 + npc/tex/bea_2_eye1_TA_tex_txt: + addrs: [0x806F2280, 0x806F2380] + npc/tex/bea_2_eye2_TA_tex_txt: + addrs: [0x806F2380, 0x806F2480] + npc/tex/bea_2_eye3_TA_tex_txt: + addrs: [0x806F2480, 0x806F2580] + npc/tex/bea_2_eye4_TA_tex_txt: + addrs: [0x806F2580, 0x806F2680] + npc/tex/bea_2_eye5_TA_tex_txt: + addrs: [0x806F2680, 0x806F2780] + npc/tex/bea_2_eye6_TA_tex_txt: + addrs: [0x806F2780, 0x806F2880] + npc/tex/bea_2_eye7_TA_tex_txt: + addrs: [0x806F2880, 0x806F2980] + npc/tex/bea_2_eye8_TA_tex_txt: + addrs: [0x806F2980, 0x806F2A80] + npc/tex/bea_2_mouth1_TA_tex_txt: + addrs: [0x806F2A80, 0x806F2B80] + npc/tex/bea_2_mouth2_TA_tex_txt: + addrs: [0x806F2B80, 0x806F2C80] + npc/tex/bea_2_mouth3_TA_tex_txt: + addrs: [0x806F2C80, 0x806F2D80] + npc/tex/bea_2_mouth4_TA_tex_txt: + addrs: [0x806F2D80, 0x806F2E80] + npc/tex/bea_2_mouth5_TA_tex_txt: + addrs: [0x806F2E80, 0x806F2F80] + npc/tex/bea_2_mouth6_TA_tex_txt: + addrs: [0x806F2F80, 0x806F3080] + npc/tex/bea_2_tmem_txt: + addrs: [0x806F3080, 0x806F3480] + npc/tex/bea_3_pal: + addrs: [0x806F3480, 0x806F34A0] + type: pal16 + npc/tex/bea_3_eye1_TA_tex_txt: + addrs: [0x806F34A0, 0x806F35A0] + npc/tex/bea_3_eye2_TA_tex_txt: + addrs: [0x806F35A0, 0x806F36A0] + npc/tex/bea_3_eye3_TA_tex_txt: + addrs: [0x806F36A0, 0x806F37A0] + npc/tex/bea_3_eye4_TA_tex_txt: + addrs: [0x806F37A0, 0x806F38A0] + npc/tex/bea_3_eye5_TA_tex_txt: + addrs: [0x806F38A0, 0x806F39A0] + npc/tex/bea_3_eye6_TA_tex_txt: + addrs: [0x806F39A0, 0x806F3AA0] + npc/tex/bea_3_eye7_TA_tex_txt: + addrs: [0x806F3AA0, 0x806F3BA0] + npc/tex/bea_3_eye8_TA_tex_txt: + addrs: [0x806F3BA0, 0x806F3CA0] + npc/tex/bea_3_mouth1_TA_tex_txt: + addrs: [0x806F3CA0, 0x806F3DA0] + npc/tex/bea_3_mouth2_TA_tex_txt: + addrs: [0x806F3DA0, 0x806F3EA0] + npc/tex/bea_3_mouth3_TA_tex_txt: + addrs: [0x806F3EA0, 0x806F3FA0] + npc/tex/bea_3_mouth4_TA_tex_txt: + addrs: [0x806F3FA0, 0x806F40A0] + npc/tex/bea_3_mouth5_TA_tex_txt: + addrs: [0x806F40A0, 0x806F41A0] + npc/tex/bea_3_mouth6_TA_tex_txt: + addrs: [0x806F41A0, 0x806F42A0] + npc/tex/bea_3_tmem_txt: + addrs: [0x806F42A0, 0x806F46A0] + npc/tex/bea_5_pal: + addrs: [0x806F46A0, 0x806F46C0] + type: pal16 + npc/tex/bea_5_eye1_TA_tex_txt: + addrs: [0x806F46C0, 0x806F47C0] + npc/tex/bea_5_eye2_TA_tex_txt: + addrs: [0x806F47C0, 0x806F48C0] + npc/tex/bea_5_eye3_TA_tex_txt: + addrs: [0x806F48C0, 0x806F49C0] + npc/tex/bea_5_eye4_TA_tex_txt: + addrs: [0x806F49C0, 0x806F4AC0] + npc/tex/bea_5_eye5_TA_tex_txt: + addrs: [0x806F4AC0, 0x806F4BC0] + npc/tex/bea_5_eye6_TA_tex_txt: + addrs: [0x806F4BC0, 0x806F4CC0] + npc/tex/bea_5_eye7_TA_tex_txt: + addrs: [0x806F4CC0, 0x806F4DC0] + npc/tex/bea_5_eye8_TA_tex_txt: + addrs: [0x806F4DC0, 0x806F4EC0] + npc/tex/bea_5_mouth1_TA_tex_txt: + addrs: [0x806F4EC0, 0x806F4FC0] + npc/tex/bea_5_mouth2_TA_tex_txt: + addrs: [0x806F4FC0, 0x806F50C0] + npc/tex/bea_5_mouth3_TA_tex_txt: + addrs: [0x806F50C0, 0x806F51C0] + npc/tex/bea_5_mouth4_TA_tex_txt: + addrs: [0x806F51C0, 0x806F52C0] + npc/tex/bea_5_mouth5_TA_tex_txt: + addrs: [0x806F52C0, 0x806F53C0] + npc/tex/bea_5_mouth6_TA_tex_txt: + addrs: [0x806F53C0, 0x806F54C0] + npc/tex/bea_5_tmem_txt: + addrs: [0x806F54C0, 0x806F58C0] + npc/tex/bea_6_pal: + addrs: [0x806F58C0, 0x806F58E0] + type: pal16 + npc/tex/bea_6_eye1_TA_tex_txt: + addrs: [0x806F58E0, 0x806F59E0] + npc/tex/bea_6_eye2_TA_tex_txt: + addrs: [0x806F59E0, 0x806F5AE0] + npc/tex/bea_6_eye3_TA_tex_txt: + addrs: [0x806F5AE0, 0x806F5BE0] + npc/tex/bea_6_eye4_TA_tex_txt: + addrs: [0x806F5BE0, 0x806F5CE0] + npc/tex/bea_6_eye5_TA_tex_txt: + addrs: [0x806F5CE0, 0x806F5DE0] + npc/tex/bea_6_eye6_TA_tex_txt: + addrs: [0x806F5DE0, 0x806F5EE0] + npc/tex/bea_6_eye7_TA_tex_txt: + addrs: [0x806F5EE0, 0x806F5FE0] + npc/tex/bea_6_eye8_TA_tex_txt: + addrs: [0x806F5FE0, 0x806F60E0] + npc/tex/bea_6_mouth1_TA_tex_txt: + addrs: [0x806F60E0, 0x806F61E0] + npc/tex/bea_6_mouth2_TA_tex_txt: + addrs: [0x806F61E0, 0x806F62E0] + npc/tex/bea_6_mouth3_TA_tex_txt: + addrs: [0x806F62E0, 0x806F63E0] + npc/tex/bea_6_mouth4_TA_tex_txt: + addrs: [0x806F63E0, 0x806F64E0] + npc/tex/bea_6_mouth5_TA_tex_txt: + addrs: [0x806F64E0, 0x806F65E0] + npc/tex/bea_6_mouth6_TA_tex_txt: + addrs: [0x806F65E0, 0x806F66E0] + npc/tex/bea_6_tmem_txt: + addrs: [0x806F66E0, 0x806F6AE0] + npc/tex/bea_7_pal: + addrs: [0x806F6AE0, 0x806F6B00] + type: pal16 + npc/tex/bea_7_eye1_TA_tex_txt: + addrs: [0x806F6B00, 0x806F6C00] + npc/tex/bea_7_eye2_TA_tex_txt: + addrs: [0x806F6C00, 0x806F6D00] + npc/tex/bea_7_eye3_TA_tex_txt: + addrs: [0x806F6D00, 0x806F6E00] + npc/tex/bea_7_eye4_TA_tex_txt: + addrs: [0x806F6E00, 0x806F6F00] + npc/tex/bea_7_eye5_TA_tex_txt: + addrs: [0x806F6F00, 0x806F7000] + npc/tex/bea_7_eye6_TA_tex_txt: + addrs: [0x806F7000, 0x806F7100] + npc/tex/bea_7_eye7_TA_tex_txt: + addrs: [0x806F7100, 0x806F7200] + npc/tex/bea_7_eye8_TA_tex_txt: + addrs: [0x806F7200, 0x806F7300] + npc/tex/bea_7_mouth1_TA_tex_txt: + addrs: [0x806F7300, 0x806F7400] + npc/tex/bea_7_mouth2_TA_tex_txt: + addrs: [0x806F7400, 0x806F7500] + npc/tex/bea_7_mouth3_TA_tex_txt: + addrs: [0x806F7500, 0x806F7600] + npc/tex/bea_7_mouth4_TA_tex_txt: + addrs: [0x806F7600, 0x806F7700] + npc/tex/bea_7_mouth5_TA_tex_txt: + addrs: [0x806F7700, 0x806F7800] + npc/tex/bea_7_mouth6_TA_tex_txt: + addrs: [0x806F7800, 0x806F7900] + npc/tex/bea_7_tmem_txt: + addrs: [0x806F7900, 0x806F7D00] + npc/tex/bea_8_pal: + addrs: [0x806F7D00, 0x806F7D20] + type: pal16 + npc/tex/bea_8_eye1_TA_tex_txt: + addrs: [0x806F7D20, 0x806F7E20] + npc/tex/bea_8_eye2_TA_tex_txt: + addrs: [0x806F7E20, 0x806F7F20] + npc/tex/bea_8_eye3_TA_tex_txt: + addrs: [0x806F7F20, 0x806F8020] + npc/tex/bea_8_eye4_TA_tex_txt: + addrs: [0x806F8020, 0x806F8120] + npc/tex/bea_8_eye5_TA_tex_txt: + addrs: [0x806F8120, 0x806F8220] + npc/tex/bea_8_eye6_TA_tex_txt: + addrs: [0x806F8220, 0x806F8320] + npc/tex/bea_8_eye7_TA_tex_txt: + addrs: [0x806F8320, 0x806F8420] + npc/tex/bea_8_eye8_TA_tex_txt: + addrs: [0x806F8420, 0x806F8520] + npc/tex/bea_8_mouth1_TA_tex_txt: + addrs: [0x806F8520, 0x806F8620] + npc/tex/bea_8_mouth2_TA_tex_txt: + addrs: [0x806F8620, 0x806F8720] + npc/tex/bea_8_mouth3_TA_tex_txt: + addrs: [0x806F8720, 0x806F8820] + npc/tex/bea_8_mouth4_TA_tex_txt: + addrs: [0x806F8820, 0x806F8920] + npc/tex/bea_8_mouth5_TA_tex_txt: + addrs: [0x806F8920, 0x806F8A20] + npc/tex/bea_8_mouth6_TA_tex_txt: + addrs: [0x806F8A20, 0x806F8B20] + npc/tex/bea_8_tmem_txt: + addrs: [0x806F8B20, 0x806F8F20] + npc/tex/bea_9_pal: + addrs: [0x806F8F20, 0x806F8F40] + type: pal16 + npc/tex/bea_9_eye1_TA_tex_txt: + addrs: [0x806F8F40, 0x806F9040] + npc/tex/bea_9_eye2_TA_tex_txt: + addrs: [0x806F9040, 0x806F9140] + npc/tex/bea_9_eye3_TA_tex_txt: + addrs: [0x806F9140, 0x806F9240] + npc/tex/bea_9_eye4_TA_tex_txt: + addrs: [0x806F9240, 0x806F9340] + npc/tex/bea_9_eye5_TA_tex_txt: + addrs: [0x806F9340, 0x806F9440] + npc/tex/bea_9_eye6_TA_tex_txt: + addrs: [0x806F9440, 0x806F9540] + npc/tex/bea_9_eye7_TA_tex_txt: + addrs: [0x806F9540, 0x806F9640] + npc/tex/bea_9_eye8_TA_tex_txt: + addrs: [0x806F9640, 0x806F9740] + npc/tex/bea_9_mouth1_TA_tex_txt: + addrs: [0x806F9740, 0x806F9840] + npc/tex/bea_9_mouth2_TA_tex_txt: + addrs: [0x806F9840, 0x806F9940] + npc/tex/bea_9_mouth3_TA_tex_txt: + addrs: [0x806F9940, 0x806F9A40] + npc/tex/bea_9_mouth4_TA_tex_txt: + addrs: [0x806F9A40, 0x806F9B40] + npc/tex/bea_9_mouth5_TA_tex_txt: + addrs: [0x806F9B40, 0x806F9C40] + npc/tex/bea_9_mouth6_TA_tex_txt: + addrs: [0x806F9C40, 0x806F9D40] + npc/tex/bea_9_tmem_txt: + addrs: [0x806F9D40, 0x806FA140] + npc/tex/bea_10_pal: + addrs: [0x806FA140, 0x806FA160] + type: pal16 + npc/tex/bea_10_eye1_TA_tex_txt: + addrs: [0x806FA160, 0x806FA260] + npc/tex/bea_10_eye2_TA_tex_txt: + addrs: [0x806FA260, 0x806FA360] + npc/tex/bea_10_eye3_TA_tex_txt: + addrs: [0x806FA360, 0x806FA460] + npc/tex/bea_10_eye4_TA_tex_txt: + addrs: [0x806FA460, 0x806FA560] + npc/tex/bea_10_eye5_TA_tex_txt: + addrs: [0x806FA560, 0x806FA660] + npc/tex/bea_10_eye6_TA_tex_txt: + addrs: [0x806FA660, 0x806FA760] + npc/tex/bea_10_eye7_TA_tex_txt: + addrs: [0x806FA760, 0x806FA860] + npc/tex/bea_10_eye8_TA_tex_txt: + addrs: [0x806FA860, 0x806FA960] + npc/tex/bea_10_mouth1_TA_tex_txt: + addrs: [0x806FA960, 0x806FAA60] + npc/tex/bea_10_mouth2_TA_tex_txt: + addrs: [0x806FAA60, 0x806FAB60] + npc/tex/bea_10_mouth3_TA_tex_txt: + addrs: [0x806FAB60, 0x806FAC60] + npc/tex/bea_10_mouth4_TA_tex_txt: + addrs: [0x806FAC60, 0x806FAD60] + npc/tex/bea_10_mouth5_TA_tex_txt: + addrs: [0x806FAD60, 0x806FAE60] + npc/tex/bea_10_mouth6_TA_tex_txt: + addrs: [0x806FAE60, 0x806FAF60] + npc/tex/bea_10_tmem_txt: + addrs: [0x806FAF60, 0x806FB360] + npc/mdl/pbr_1_v: + addrs: [0x8076DFA8, 0x8076F6E8] + type: vtx + npc/tex/pbr_1_pal: + addrs: [0x80770180, 0x807701A0] + type: pal16 + npc/tex/pbr_1_eye1_TA_tex_txt: + addrs: [0x807701A0, 0x807702A0] + npc/tex/pbr_1_eye2_TA_tex_txt: + addrs: [0x807702A0, 0x807703A0] + npc/tex/pbr_1_eye3_TA_tex_txt: + addrs: [0x807703A0, 0x807704A0] + npc/tex/pbr_1_eye4_TA_tex_txt: + addrs: [0x807704A0, 0x807705A0] + npc/tex/pbr_1_eye5_TA_tex_txt: + addrs: [0x807705A0, 0x807706A0] + npc/tex/pbr_1_eye6_TA_tex_txt: + addrs: [0x807706A0, 0x807707A0] + npc/tex/pbr_1_eye7_TA_tex_txt: + addrs: [0x807707A0, 0x807708A0] + npc/tex/pbr_1_eye8_TA_tex_txt: + addrs: [0x807708A0, 0x807709A0] + npc/tex/pbr_1_tmem_txt: + addrs: [0x807709A0, 0x80770EA0] + npc/tex/pbr_2_pal: + addrs: [0x80770EA0, 0x80770EC0] + type: pal16 + npc/tex/pbr_2_eye1_TA_tex_txt: + addrs: [0x80770EC0, 0x80770FC0] + npc/tex/pbr_2_eye2_TA_tex_txt: + addrs: [0x80770FC0, 0x807710C0] + npc/tex/pbr_2_eye3_TA_tex_txt: + addrs: [0x807710C0, 0x807711C0] + npc/tex/pbr_2_eye4_TA_tex_txt: + addrs: [0x807711C0, 0x807712C0] + npc/tex/pbr_2_eye5_TA_tex_txt: + addrs: [0x807712C0, 0x807713C0] + npc/tex/pbr_2_eye6_TA_tex_txt: + addrs: [0x807713C0, 0x807714C0] + npc/tex/pbr_2_eye7_TA_tex_txt: + addrs: [0x807714C0, 0x807715C0] + npc/tex/pbr_2_eye8_TA_tex_txt: + addrs: [0x807715C0, 0x807716C0] + npc/tex/pbr_2_tmem_txt: + addrs: [0x807716C0, 0x80771BC0] + npc/tex/pbr_3_pal: + addrs: [0x80771BC0, 0x80771BE0] + type: pal16 + npc/tex/pbr_3_eye1_TA_tex_txt: + addrs: [0x80771BE0, 0x80771CE0] + npc/tex/pbr_3_eye2_TA_tex_txt: + addrs: [0x80771CE0, 0x80771DE0] + npc/tex/pbr_3_eye3_TA_tex_txt: + addrs: [0x80771DE0, 0x80771EE0] + npc/tex/pbr_3_eye4_TA_tex_txt: + addrs: [0x80771EE0, 0x80771FE0] + npc/tex/pbr_3_eye5_TA_tex_txt: + addrs: [0x80771FE0, 0x807720E0] + npc/tex/pbr_3_eye6_TA_tex_txt: + addrs: [0x807720E0, 0x807721E0] + npc/tex/pbr_3_eye7_TA_tex_txt: + addrs: [0x807721E0, 0x807722E0] + npc/tex/pbr_3_eye8_TA_tex_txt: + addrs: [0x807722E0, 0x807723E0] + npc/tex/pbr_3_tmem_txt: + addrs: [0x807723E0, 0x807728E0] + npc/tex/pbr_4_pal: + addrs: [0x807728E0, 0x80772900] + type: pal16 + npc/tex/pbr_4_eye1_TA_tex_txt: + addrs: [0x80772900, 0x80772A00] + npc/tex/pbr_4_eye2_TA_tex_txt: + addrs: [0x80772A00, 0x80772B00] + npc/tex/pbr_4_eye3_TA_tex_txt: + addrs: [0x80772B00, 0x80772C00] + npc/tex/pbr_4_eye4_TA_tex_txt: + addrs: [0x80772C00, 0x80772D00] + npc/tex/pbr_4_eye5_TA_tex_txt: + addrs: [0x80772D00, 0x80772E00] + npc/tex/pbr_4_eye6_TA_tex_txt: + addrs: [0x80772E00, 0x80772F00] + npc/tex/pbr_4_eye7_TA_tex_txt: + addrs: [0x80772F00, 0x80773000] + npc/tex/pbr_4_eye8_TA_tex_txt: + addrs: [0x80773000, 0x80773100] + npc/tex/pbr_4_tmem_txt: + addrs: [0x80773100, 0x80773600] + npc/tex/pbr_5_pal: + addrs: [0x80773600, 0x80773620] + type: pal16 + npc/tex/pbr_5_eye1_TA_tex_txt: + addrs: [0x80773620, 0x80773720] + npc/tex/pbr_5_eye2_TA_tex_txt: + addrs: [0x80773720, 0x80773820] + npc/tex/pbr_5_eye3_TA_tex_txt: + addrs: [0x80773820, 0x80773920] + npc/tex/pbr_5_eye4_TA_tex_txt: + addrs: [0x80773920, 0x80773A20] + npc/tex/pbr_5_eye5_TA_tex_txt: + addrs: [0x80773A20, 0x80773B20] + npc/tex/pbr_5_eye6_TA_tex_txt: + addrs: [0x80773B20, 0x80773C20] + npc/tex/pbr_5_eye7_TA_tex_txt: + addrs: [0x80773C20, 0x80773D20] + npc/tex/pbr_5_eye8_TA_tex_txt: + addrs: [0x80773D20, 0x80773E20] + npc/tex/pbr_5_tmem_txt: + addrs: [0x80773E20, 0x80774320] + npc/mdl/brd_1_v: + addrs: [0x80774320, 0x80775920] + type: vtx + npc/tex/brd_1_pal: + addrs: [0x80776360, 0x80776380] + type: pal16 + npc/tex/brd_1_eye1_TA_tex_txt: + addrs: [0x80776380, 0x80776480] + npc/tex/brd_1_eye2_TA_tex_txt: + addrs: [0x80776480, 0x80776580] + npc/tex/brd_1_eye3_TA_tex_txt: + addrs: [0x80776580, 0x80776680] + npc/tex/brd_1_eye4_TA_tex_txt: + addrs: [0x80776680, 0x80776780] + npc/tex/brd_1_eye5_TA_tex_txt: + addrs: [0x80776780, 0x80776880] + npc/tex/brd_1_eye6_TA_tex_txt: + addrs: [0x80776880, 0x80776980] + npc/tex/brd_1_eye7_TA_tex_txt: + addrs: [0x80776980, 0x80776A80] + npc/tex/brd_1_eye8_TA_tex_txt: + addrs: [0x80776A80, 0x80776B80] + npc/tex/brd_1_tmem_txt: + addrs: [0x80776B80, 0x80777080] + npc/tex/brd_2_pal: + addrs: [0x80777080, 0x807770A0] + type: pal16 + npc/tex/brd_2_eye1_TA_tex_txt: + addrs: [0x807770A0, 0x807771A0] + npc/tex/brd_2_eye2_TA_tex_txt: + addrs: [0x807771A0, 0x807772A0] + npc/tex/brd_2_eye3_TA_tex_txt: + addrs: [0x807772A0, 0x807773A0] + npc/tex/brd_2_eye4_TA_tex_txt: + addrs: [0x807773A0, 0x807774A0] + npc/tex/brd_2_eye5_TA_tex_txt: + addrs: [0x807774A0, 0x807775A0] + npc/tex/brd_2_eye6_TA_tex_txt: + addrs: [0x807775A0, 0x807776A0] + npc/tex/brd_2_eye7_TA_tex_txt: + addrs: [0x807776A0, 0x807777A0] + npc/tex/brd_2_eye8_TA_tex_txt: + addrs: [0x807777A0, 0x807778A0] + npc/tex/brd_2_tmem_txt: + addrs: [0x807778A0, 0x80777DA0] + npc/tex/brd_11_pal: + addrs: [0x80777DA0, 0x80777DC0] + type: pal16 + npc/tex/brd_11_eye1_TA_tex_txt: + addrs: [0x80777DC0, 0x80777EC0] + npc/tex/brd_11_eye2_TA_tex_txt: + addrs: [0x80777EC0, 0x80777FC0] + npc/tex/brd_11_eye3_TA_tex_txt: + addrs: [0x80777FC0, 0x807780C0] + npc/tex/brd_11_eye4_TA_tex_txt: + addrs: [0x807780C0, 0x807781C0] + npc/tex/brd_11_eye5_TA_tex_txt: + addrs: [0x807781C0, 0x807782C0] + npc/tex/brd_11_eye6_TA_tex_txt: + addrs: [0x807782C0, 0x807783C0] + npc/tex/brd_11_eye7_TA_tex_txt: + addrs: [0x807783C0, 0x807784C0] + npc/tex/brd_11_eye8_TA_tex_txt: + addrs: [0x807784C0, 0x807785C0] + npc/tex/brd_11_tmem_txt: + addrs: [0x807785C0, 0x80778AC0] + npc/tex/brd_3_pal: + addrs: [0x80778AC0, 0x80778AE0] + type: pal16 + npc/tex/brd_3_eye1_TA_tex_txt: + addrs: [0x80778AE0, 0x80778BE0] + npc/tex/brd_3_eye2_TA_tex_txt: + addrs: [0x80778BE0, 0x80778CE0] + npc/tex/brd_3_eye3_TA_tex_txt: + addrs: [0x80778CE0, 0x80778DE0] + npc/tex/brd_3_eye4_TA_tex_txt: + addrs: [0x80778DE0, 0x80778EE0] + npc/tex/brd_3_eye5_TA_tex_txt: + addrs: [0x80778EE0, 0x80778FE0] + npc/tex/brd_3_eye6_TA_tex_txt: + addrs: [0x80778FE0, 0x807790E0] + npc/tex/brd_3_eye7_TA_tex_txt: + addrs: [0x807790E0, 0x807791E0] + npc/tex/brd_3_eye8_TA_tex_txt: + addrs: [0x807791E0, 0x807792E0] + npc/tex/brd_3_tmem_txt: + addrs: [0x807792E0, 0x807797E0] + npc/tex/brd_4_pal: + addrs: [0x807797E0, 0x80779800] + type: pal16 + npc/tex/brd_4_eye1_TA_tex_txt: + addrs: [0x80779800, 0x80779900] + npc/tex/brd_4_eye2_TA_tex_txt: + addrs: [0x80779900, 0x80779A00] + npc/tex/brd_4_eye3_TA_tex_txt: + addrs: [0x80779A00, 0x80779B00] + npc/tex/brd_4_eye4_TA_tex_txt: + addrs: [0x80779B00, 0x80779C00] + npc/tex/brd_4_eye5_TA_tex_txt: + addrs: [0x80779C00, 0x80779D00] + npc/tex/brd_4_eye6_TA_tex_txt: + addrs: [0x80779D00, 0x80779E00] + npc/tex/brd_4_eye7_TA_tex_txt: + addrs: [0x80779E00, 0x80779F00] + npc/tex/brd_4_eye8_TA_tex_txt: + addrs: [0x80779F00, 0x8077A000] + npc/tex/brd_4_tmem_txt: + addrs: [0x8077A000, 0x8077A500] + npc/tex/brd_5_pal: + addrs: [0x8077A500, 0x8077A520] + type: pal16 + npc/tex/brd_5_eye1_TA_tex_txt: + addrs: [0x8077A520, 0x8077A620] + npc/tex/brd_5_eye2_TA_tex_txt: + addrs: [0x8077A620, 0x8077A720] + npc/tex/brd_5_eye3_TA_tex_txt: + addrs: [0x8077A720, 0x8077A820] + npc/tex/brd_5_eye4_TA_tex_txt: + addrs: [0x8077A820, 0x8077A920] + npc/tex/brd_5_eye5_TA_tex_txt: + addrs: [0x8077A920, 0x8077AA20] + npc/tex/brd_5_eye6_TA_tex_txt: + addrs: [0x8077AA20, 0x8077AB20] + npc/tex/brd_5_eye7_TA_tex_txt: + addrs: [0x8077AB20, 0x8077AC20] + npc/tex/brd_5_eye8_TA_tex_txt: + addrs: [0x8077AC20, 0x8077AD20] + npc/tex/brd_5_tmem_txt: + addrs: [0x8077AD20, 0x8077B220] + npc/tex/brd_6_pal: + addrs: [0x8077B220, 0x8077B240] + type: pal16 + npc/tex/brd_6_eye1_TA_tex_txt: + addrs: [0x8077B240, 0x8077B340] + npc/tex/brd_6_eye2_TA_tex_txt: + addrs: [0x8077B340, 0x8077B440] + npc/tex/brd_6_eye3_TA_tex_txt: + addrs: [0x8077B440, 0x8077B540] + npc/tex/brd_6_eye4_TA_tex_txt: + addrs: [0x8077B540, 0x8077B640] + npc/tex/brd_6_eye5_TA_tex_txt: + addrs: [0x8077B640, 0x8077B740] + npc/tex/brd_6_eye6_TA_tex_txt: + addrs: [0x8077B740, 0x8077B840] + npc/tex/brd_6_eye7_TA_tex_txt: + addrs: [0x8077B840, 0x8077B940] + npc/tex/brd_6_eye8_TA_tex_txt: + addrs: [0x8077B940, 0x8077BA40] + npc/tex/brd_6_tmem_txt: + addrs: [0x8077BA40, 0x8077BF40] + npc/tex/brd_7_pal: + addrs: [0x8077BF40, 0x8077BF60] + type: pal16 + npc/tex/brd_7_eye1_TA_tex_txt: + addrs: [0x8077BF60, 0x8077C060] + npc/tex/brd_7_eye2_TA_tex_txt: + addrs: [0x8077C060, 0x8077C160] + npc/tex/brd_7_eye3_TA_tex_txt: + addrs: [0x8077C160, 0x8077C260] + npc/tex/brd_7_eye4_TA_tex_txt: + addrs: [0x8077C260, 0x8077C360] + npc/tex/brd_7_eye5_TA_tex_txt: + addrs: [0x8077C360, 0x8077C460] + npc/tex/brd_7_eye6_TA_tex_txt: + addrs: [0x8077C460, 0x8077C560] + npc/tex/brd_7_eye7_TA_tex_txt: + addrs: [0x8077C560, 0x8077C660] + npc/tex/brd_7_eye8_TA_tex_txt: + addrs: [0x8077C660, 0x8077C760] + npc/tex/brd_7_tmem_txt: + addrs: [0x8077C760, 0x8077CC60] + npc/tex/brd_8_pal: + addrs: [0x8077CC60, 0x8077CC80] + type: pal16 + npc/tex/brd_8_eye1_TA_tex_txt: + addrs: [0x8077CC80, 0x8077CD80] + npc/tex/brd_8_eye2_TA_tex_txt: + addrs: [0x8077CD80, 0x8077CE80] + npc/tex/brd_8_eye3_TA_tex_txt: + addrs: [0x8077CE80, 0x8077CF80] + npc/tex/brd_8_eye4_TA_tex_txt: + addrs: [0x8077CF80, 0x8077D080] + npc/tex/brd_8_eye5_TA_tex_txt: + addrs: [0x8077D080, 0x8077D180] + npc/tex/brd_8_eye6_TA_tex_txt: + addrs: [0x8077D180, 0x8077D280] + npc/tex/brd_8_eye7_TA_tex_txt: + addrs: [0x8077D280, 0x8077D380] + npc/tex/brd_8_eye8_TA_tex_txt: + addrs: [0x8077D380, 0x8077D480] + npc/tex/brd_8_tmem_txt: + addrs: [0x8077D480, 0x8077D980] + npc/tex/brd_9_pal: + addrs: [0x8077D980, 0x8077D9A0] + type: pal16 + npc/tex/brd_9_eye1_TA_tex_txt: + addrs: [0x8077D9A0, 0x8077DAA0] + npc/tex/brd_9_eye2_TA_tex_txt: + addrs: [0x8077DAA0, 0x8077DBA0] + npc/tex/brd_9_eye3_TA_tex_txt: + addrs: [0x8077DBA0, 0x8077DCA0] + npc/tex/brd_9_eye4_TA_tex_txt: + addrs: [0x8077DCA0, 0x8077DDA0] + npc/tex/brd_9_eye5_TA_tex_txt: + addrs: [0x8077DDA0, 0x8077DEA0] + npc/tex/brd_9_eye6_TA_tex_txt: + addrs: [0x8077DEA0, 0x8077DFA0] + npc/tex/brd_9_eye7_TA_tex_txt: + addrs: [0x8077DFA0, 0x8077E0A0] + npc/tex/brd_9_eye8_TA_tex_txt: + addrs: [0x8077E0A0, 0x8077E1A0] + npc/tex/brd_9_tmem_txt: + addrs: [0x8077E1A0, 0x8077E6A0] + npc/tex/brd_10_pal: + addrs: [0x8077E6A0, 0x8077E6C0] + type: pal16 + npc/tex/brd_10_eye1_TA_tex_txt: + addrs: [0x8077E6C0, 0x8077E7C0] + npc/tex/brd_10_eye2_TA_tex_txt: + addrs: [0x8077E7C0, 0x8077E8C0] + npc/tex/brd_10_eye3_TA_tex_txt: + addrs: [0x8077E8C0, 0x8077E9C0] + npc/tex/brd_10_eye4_TA_tex_txt: + addrs: [0x8077E9C0, 0x8077EAC0] + npc/tex/brd_10_eye5_TA_tex_txt: + addrs: [0x8077EAC0, 0x8077EBC0] + npc/tex/brd_10_eye6_TA_tex_txt: + addrs: [0x8077EBC0, 0x8077ECC0] + npc/tex/brd_10_eye7_TA_tex_txt: + addrs: [0x8077ECC0, 0x8077EDC0] + npc/tex/brd_10_eye8_TA_tex_txt: + addrs: [0x8077EDC0, 0x8077EEC0] + npc/tex/brd_10_tmem_txt: + addrs: [0x8077EEC0, 0x8077F3C0] + npc/mdl/fox_1_v: + addrs: [0x807D5FE8, 0x807D76E8] + type: vtx + npc/tex/fox_1_pal: + addrs: [0x807D80A0, 0x807D80C0] + type: pal16 + npc/tex/fox_1_eye1_TA_tex_txt: + addrs: [0x807D80C0, 0x807D81C0] + npc/tex/fox_1_eye2_TA_tex_txt: + addrs: [0x807D81C0, 0x807D82C0] + npc/tex/fox_1_eye3_TA_tex_txt: + addrs: [0x807D82C0, 0x807D83C0] + npc/tex/fox_1_eye4_TA_tex_txt: + addrs: [0x807D83C0, 0x807D84C0] + npc/tex/fox_1_eye5_TA_tex_txt: + addrs: [0x807D84C0, 0x807D85C0] + npc/tex/fox_1_eye6_TA_tex_txt: + addrs: [0x807D85C0, 0x807D86C0] + npc/tex/fox_1_eye7_TA_tex_txt: + addrs: [0x807D86C0, 0x807D87C0] + npc/tex/fox_1_eye8_TA_tex_txt: + addrs: [0x807D87C0, 0x807D88C0] + npc/tex/fox_1_tmem_txt: + addrs: [0x807D88C0, 0x807D8FC0] + npc/mdl/bul_1_v: + addrs: [0x807D8FC0, 0x807DA640] + type: vtx + npc/tex/bul_1_pal: + addrs: [0x807DAFC0, 0x807DAFE0] + type: pal16 + npc/tex/bul_1_eye1_TA_tex_txt: + addrs: [0x807DAFE0, 0x807DB0E0] + npc/tex/bul_1_eye2_TA_tex_txt: + addrs: [0x807DB0E0, 0x807DB1E0] + npc/tex/bul_1_eye3_TA_tex_txt: + addrs: [0x807DB1E0, 0x807DB2E0] + npc/tex/bul_1_eye4_TA_tex_txt: + addrs: [0x807DB2E0, 0x807DB3E0] + npc/tex/bul_1_eye5_TA_tex_txt: + addrs: [0x807DB3E0, 0x807DB4E0] + npc/tex/bul_1_eye6_TA_tex_txt: + addrs: [0x807DB4E0, 0x807DB5E0] + npc/tex/bul_1_eye7_TA_tex_txt: + addrs: [0x807DB5E0, 0x807DB6E0] + npc/tex/bul_1_eye8_TA_tex_txt: + addrs: [0x807DB6E0, 0x807DB7E0] + npc/tex/bul_1_mouth1_TA_tex_txt: + addrs: [0x807DB7E0, 0x807DB8E0] + npc/tex/bul_1_mouth2_TA_tex_txt: + addrs: [0x807DB8E0, 0x807DB9E0] + npc/tex/bul_1_mouth3_TA_tex_txt: + addrs: [0x807DB9E0, 0x807DBAE0] + npc/tex/bul_1_mouth4_TA_tex_txt: + addrs: [0x807DBAE0, 0x807DBBE0] + npc/tex/bul_1_mouth5_TA_tex_txt: + addrs: [0x807DBBE0, 0x807DBCE0] + npc/tex/bul_1_mouth6_TA_tex_txt: + addrs: [0x807DBCE0, 0x807DBDE0] + npc/tex/bul_1_tmem_txt: + addrs: [0x807DBDE0, 0x807DC1E0] + npc/tex/bul_2_pal: + addrs: [0x807DC1E0, 0x807DC200] + type: pal16 + npc/tex/bul_2_eye1_TA_tex_txt: + addrs: [0x807DC200, 0x807DC300] + npc/tex/bul_2_eye2_TA_tex_txt: + addrs: [0x807DC300, 0x807DC400] + npc/tex/bul_2_eye3_TA_tex_txt: + addrs: [0x807DC400, 0x807DC500] + npc/tex/bul_2_eye4_TA_tex_txt: + addrs: [0x807DC500, 0x807DC600] + npc/tex/bul_2_eye5_TA_tex_txt: + addrs: [0x807DC600, 0x807DC700] + npc/tex/bul_2_eye6_TA_tex_txt: + addrs: [0x807DC700, 0x807DC800] + npc/tex/bul_2_eye7_TA_tex_txt: + addrs: [0x807DC800, 0x807DC900] + npc/tex/bul_2_eye8_TA_tex_txt: + addrs: [0x807DC900, 0x807DCA00] + npc/tex/bul_2_mouth1_TA_tex_txt: + addrs: [0x807DCA00, 0x807DCB00] + npc/tex/bul_2_mouth2_TA_tex_txt: + addrs: [0x807DCB00, 0x807DCC00] + npc/tex/bul_2_mouth3_TA_tex_txt: + addrs: [0x807DCC00, 0x807DCD00] + npc/tex/bul_2_mouth4_TA_tex_txt: + addrs: [0x807DCD00, 0x807DCE00] + npc/tex/bul_2_mouth5_TA_tex_txt: + addrs: [0x807DCE00, 0x807DCF00] + npc/tex/bul_2_mouth6_TA_tex_txt: + addrs: [0x807DCF00, 0x807DD000] + npc/tex/bul_2_tmem_txt: + addrs: [0x807DD000, 0x807DD400] + npc/tex/bul_3_pal: + addrs: [0x807DD400, 0x807DD420] + type: pal16 + npc/tex/bul_3_eye1_TA_tex_txt: + addrs: [0x807DD420, 0x807DD520] + npc/tex/bul_3_eye2_TA_tex_txt: + addrs: [0x807DD520, 0x807DD620] + npc/tex/bul_3_eye3_TA_tex_txt: + addrs: [0x807DD620, 0x807DD720] + npc/tex/bul_3_eye4_TA_tex_txt: + addrs: [0x807DD720, 0x807DD820] + npc/tex/bul_3_eye5_TA_tex_txt: + addrs: [0x807DD820, 0x807DD920] + npc/tex/bul_3_eye6_TA_tex_txt: + addrs: [0x807DD920, 0x807DDA20] + npc/tex/bul_3_eye7_TA_tex_txt: + addrs: [0x807DDA20, 0x807DDB20] + npc/tex/bul_3_eye8_TA_tex_txt: + addrs: [0x807DDB20, 0x807DDC20] + npc/tex/bul_3_mouth1_TA_tex_txt: + addrs: [0x807DDC20, 0x807DDD20] + npc/tex/bul_3_mouth2_TA_tex_txt: + addrs: [0x807DDD20, 0x807DDE20] + npc/tex/bul_3_mouth3_TA_tex_txt: + addrs: [0x807DDE20, 0x807DDF20] + npc/tex/bul_3_mouth4_TA_tex_txt: + addrs: [0x807DDF20, 0x807DE020] + npc/tex/bul_3_mouth5_TA_tex_txt: + addrs: [0x807DE020, 0x807DE120] + npc/tex/bul_3_mouth6_TA_tex_txt: + addrs: [0x807DE120, 0x807DE220] + npc/tex/bul_3_tmem_txt: + addrs: [0x807DE220, 0x807DE620] + npc/tex/bul_4_pal: + addrs: [0x807DE620, 0x807DE640] + type: pal16 + npc/tex/bul_4_eye1_TA_tex_txt: + addrs: [0x807DE640, 0x807DE740] + npc/tex/bul_4_eye2_TA_tex_txt: + addrs: [0x807DE740, 0x807DE840] + npc/tex/bul_4_eye3_TA_tex_txt: + addrs: [0x807DE840, 0x807DE940] + npc/tex/bul_4_eye4_TA_tex_txt: + addrs: [0x807DE940, 0x807DEA40] + npc/tex/bul_4_eye5_TA_tex_txt: + addrs: [0x807DEA40, 0x807DEB40] + npc/tex/bul_4_eye6_TA_tex_txt: + addrs: [0x807DEB40, 0x807DEC40] + npc/tex/bul_4_eye7_TA_tex_txt: + addrs: [0x807DEC40, 0x807DED40] + npc/tex/bul_4_eye8_TA_tex_txt: + addrs: [0x807DED40, 0x807DEE40] + npc/tex/bul_4_mouth1_TA_tex_txt: + addrs: [0x807DEE40, 0x807DEF40] + npc/tex/bul_4_mouth2_TA_tex_txt: + addrs: [0x807DEF40, 0x807DF040] + npc/tex/bul_4_mouth3_TA_tex_txt: + addrs: [0x807DF040, 0x807DF140] + npc/tex/bul_4_mouth4_TA_tex_txt: + addrs: [0x807DF140, 0x807DF240] + npc/tex/bul_4_mouth5_TA_tex_txt: + addrs: [0x807DF240, 0x807DF340] + npc/tex/bul_4_mouth6_TA_tex_txt: + addrs: [0x807DF340, 0x807DF440] + npc/tex/bul_4_tmem_txt: + addrs: [0x807DF440, 0x807DF840] + npc/mdl/cml_1_v: + addrs: [0x807DF840, 0x807E1470] + type: vtx + npc/tex/cml_1_pal: + addrs: [0x807E1EC0, 0x807E1EE0] + type: pal16 + npc/tex/cml_1_eye1_TA_tex_txt: + addrs: [0x807E1EE0, 0x807E1FE0] + npc/tex/cml_1_eye2_TA_tex_txt: + addrs: [0x807E1FE0, 0x807E20E0] + npc/tex/cml_1_eye3_TA_tex_txt: + addrs: [0x807E20E0, 0x807E21E0] + npc/tex/cml_1_eye4_TA_tex_txt: + addrs: [0x807E21E0, 0x807E22E0] + npc/tex/cml_1_eye5_TA_tex_txt: + addrs: [0x807E22E0, 0x807E23E0] + npc/tex/cml_1_eye6_TA_tex_txt: + addrs: [0x807E23E0, 0x807E24E0] + npc/tex/cml_1_eye7_TA_tex_txt: + addrs: [0x807E24E0, 0x807E25E0] + npc/tex/cml_1_eye8_TA_tex_txt: + addrs: [0x807E25E0, 0x807E26E0] + npc/tex/cml_1_tmem_txt: + addrs: [0x807E26E0, 0x807E2E60] + npc/mdl/cat_1_v: + addrs: [0x807E2E60, 0x807E4290] + type: vtx + npc/tex/cat_1_pal: + addrs: [0x807E4BC0, 0x807E4BE0] + type: pal16 + npc/tex/cat_1_eye1_TA_tex_txt: + addrs: [0x807E4BE0, 0x807E4CE0] + npc/tex/cat_1_eye2_TA_tex_txt: + addrs: [0x807E4CE0, 0x807E4DE0] + npc/tex/cat_1_eye3_TA_tex_txt: + addrs: [0x807E4DE0, 0x807E4EE0] + npc/tex/cat_1_eye4_TA_tex_txt: + addrs: [0x807E4EE0, 0x807E4FE0] + npc/tex/cat_1_eye5_TA_tex_txt: + addrs: [0x807E4FE0, 0x807E50E0] + npc/tex/cat_1_eye6_TA_tex_txt: + addrs: [0x807E50E0, 0x807E51E0] + npc/tex/cat_1_eye7_TA_tex_txt: + addrs: [0x807E51E0, 0x807E52E0] + npc/tex/cat_1_eye8_TA_tex_txt: + addrs: [0x807E52E0, 0x807E53E0] + npc/tex/cat_1_mouth1_TA_tex_txt: + addrs: [0x807E53E0, 0x807E54E0] + npc/tex/cat_1_mouth2_TA_tex_txt: + addrs: [0x807E54E0, 0x807E55E0] + npc/tex/cat_1_mouth3_TA_tex_txt: + addrs: [0x807E55E0, 0x807E56E0] + npc/tex/cat_1_mouth4_TA_tex_txt: + addrs: [0x807E56E0, 0x807E57E0] + npc/tex/cat_1_mouth5_TA_tex_txt: + addrs: [0x807E57E0, 0x807E58E0] + npc/tex/cat_1_mouth6_TA_tex_txt: + addrs: [0x807E58E0, 0x807E59E0] + npc/tex/cat_1_tmem_txt: + addrs: [0x807E59E0, 0x807E5DE0] + npc/tex/cat_2_pal: + addrs: [0x807E5DE0, 0x807E5E00] + type: pal16 + npc/tex/cat_2_eye1_TA_tex_txt: + addrs: [0x807E5E00, 0x807E5F00] + npc/tex/cat_2_eye2_TA_tex_txt: + addrs: [0x807E5F00, 0x807E6000] + npc/tex/cat_2_eye3_TA_tex_txt: + addrs: [0x807E6000, 0x807E6100] + npc/tex/cat_2_eye4_TA_tex_txt: + addrs: [0x807E6100, 0x807E6200] + npc/tex/cat_2_eye5_TA_tex_txt: + addrs: [0x807E6200, 0x807E6300] + npc/tex/cat_2_eye6_TA_tex_txt: + addrs: [0x807E6300, 0x807E6400] + npc/tex/cat_2_eye7_TA_tex_txt: + addrs: [0x807E6400, 0x807E6500] + npc/tex/cat_2_eye8_TA_tex_txt: + addrs: [0x807E6500, 0x807E6600] + npc/tex/cat_2_mouth1_TA_tex_txt: + addrs: [0x807E6600, 0x807E6700] + npc/tex/cat_2_mouth2_TA_tex_txt: + addrs: [0x807E6700, 0x807E6800] + npc/tex/cat_2_mouth3_TA_tex_txt: + addrs: [0x807E6800, 0x807E6900] + npc/tex/cat_2_mouth4_TA_tex_txt: + addrs: [0x807E6900, 0x807E6A00] + npc/tex/cat_2_mouth5_TA_tex_txt: + addrs: [0x807E6A00, 0x807E6B00] + npc/tex/cat_2_mouth6_TA_tex_txt: + addrs: [0x807E6B00, 0x807E6C00] + npc/tex/cat_2_tmem_txt: + addrs: [0x807E6C00, 0x807E7000] + npc/tex/cat_11_pal: + addrs: [0x807E7000, 0x807E7020] + type: pal16 + npc/tex/cat_11_eye1_TA_tex_txt: + addrs: [0x807E7020, 0x807E7120] + npc/tex/cat_11_eye2_TA_tex_txt: + addrs: [0x807E7120, 0x807E7220] + npc/tex/cat_11_eye3_TA_tex_txt: + addrs: [0x807E7220, 0x807E7320] + npc/tex/cat_11_eye4_TA_tex_txt: + addrs: [0x807E7320, 0x807E7420] + npc/tex/cat_11_eye5_TA_tex_txt: + addrs: [0x807E7420, 0x807E7520] + npc/tex/cat_11_eye6_TA_tex_txt: + addrs: [0x807E7520, 0x807E7620] + npc/tex/cat_11_eye7_TA_tex_txt: + addrs: [0x807E7620, 0x807E7720] + npc/tex/cat_11_eye8_TA_tex_txt: + addrs: [0x807E7720, 0x807E7820] + npc/tex/cat_11_mouth1_TA_tex_txt: + addrs: [0x807E7820, 0x807E7920] + npc/tex/cat_11_mouth2_TA_tex_txt: + addrs: [0x807E7920, 0x807E7A20] + npc/tex/cat_11_mouth3_TA_tex_txt: + addrs: [0x807E7A20, 0x807E7B20] + npc/tex/cat_11_mouth4_TA_tex_txt: + addrs: [0x807E7B20, 0x807E7C20] + npc/tex/cat_11_mouth5_TA_tex_txt: + addrs: [0x807E7C20, 0x807E7D20] + npc/tex/cat_11_mouth6_TA_tex_txt: + addrs: [0x807E7D20, 0x807E7E20] + npc/tex/cat_11_tmem_txt: + addrs: [0x807E7E20, 0x807E8220] + npc/tex/cat_12_pal: + addrs: [0x807E8220, 0x807E8240] + type: pal16 + npc/tex/cat_12_eye1_TA_tex_txt: + addrs: [0x807E8240, 0x807E8340] + npc/tex/cat_12_eye2_TA_tex_txt: + addrs: [0x807E8340, 0x807E8440] + npc/tex/cat_12_eye3_TA_tex_txt: + addrs: [0x807E8440, 0x807E8540] + npc/tex/cat_12_eye4_TA_tex_txt: + addrs: [0x807E8540, 0x807E8640] + npc/tex/cat_12_eye5_TA_tex_txt: + addrs: [0x807E8640, 0x807E8740] + npc/tex/cat_12_eye6_TA_tex_txt: + addrs: [0x807E8740, 0x807E8840] + npc/tex/cat_12_eye7_TA_tex_txt: + addrs: [0x807E8840, 0x807E8940] + npc/tex/cat_12_eye8_TA_tex_txt: + addrs: [0x807E8940, 0x807E8A40] + npc/tex/cat_12_mouth1_TA_tex_txt: + addrs: [0x807E8A40, 0x807E8B40] + npc/tex/cat_12_mouth2_TA_tex_txt: + addrs: [0x807E8B40, 0x807E8C40] + npc/tex/cat_12_mouth3_TA_tex_txt: + addrs: [0x807E8C40, 0x807E8D40] + npc/tex/cat_12_mouth4_TA_tex_txt: + addrs: [0x807E8D40, 0x807E8E40] + npc/tex/cat_12_mouth5_TA_tex_txt: + addrs: [0x807E8E40, 0x807E8F40] + npc/tex/cat_12_mouth6_TA_tex_txt: + addrs: [0x807E8F40, 0x807E9040] + npc/tex/cat_12_tmem_txt: + addrs: [0x807E9040, 0x807E9440] + npc/tex/cat_13_pal: + addrs: [0x807E9440, 0x807E9460] + type: pal16 + npc/tex/cat_13_eye1_TA_tex_txt: + addrs: [0x807E9460, 0x807E9560] + npc/tex/cat_13_eye2_TA_tex_txt: + addrs: [0x807E9560, 0x807E9660] + npc/tex/cat_13_eye3_TA_tex_txt: + addrs: [0x807E9660, 0x807E9760] + npc/tex/cat_13_eye4_TA_tex_txt: + addrs: [0x807E9760, 0x807E9860] + npc/tex/cat_13_eye5_TA_tex_txt: + addrs: [0x807E9860, 0x807E9960] + npc/tex/cat_13_eye6_TA_tex_txt: + addrs: [0x807E9960, 0x807E9A60] + npc/tex/cat_13_eye7_TA_tex_txt: + addrs: [0x807E9A60, 0x807E9B60] + npc/tex/cat_13_eye8_TA_tex_txt: + addrs: [0x807E9B60, 0x807E9C60] + npc/tex/cat_13_mouth1_TA_tex_txt: + addrs: [0x807E9C60, 0x807E9D60] + npc/tex/cat_13_mouth2_TA_tex_txt: + addrs: [0x807E9D60, 0x807E9E60] + npc/tex/cat_13_mouth3_TA_tex_txt: + addrs: [0x807E9E60, 0x807E9F60] + npc/tex/cat_13_mouth4_TA_tex_txt: + addrs: [0x807E9F60, 0x807EA060] + npc/tex/cat_13_mouth5_TA_tex_txt: + addrs: [0x807EA060, 0x807EA160] + npc/tex/cat_13_mouth6_TA_tex_txt: + addrs: [0x807EA160, 0x807EA260] + npc/tex/cat_13_tmem_txt: + addrs: [0x807EA260, 0x807EA660] + npc/tex/cat_14_pal: + addrs: [0x807EA660, 0x807EA680] + type: pal16 + npc/tex/cat_14_eye1_TA_tex_txt: + addrs: [0x807EA680, 0x807EA780] + npc/tex/cat_14_eye2_TA_tex_txt: + addrs: [0x807EA780, 0x807EA880] + npc/tex/cat_14_eye3_TA_tex_txt: + addrs: [0x807EA880, 0x807EA980] + npc/tex/cat_14_eye4_TA_tex_txt: + addrs: [0x807EA980, 0x807EAA80] + npc/tex/cat_14_eye5_TA_tex_txt: + addrs: [0x807EAA80, 0x807EAB80] + npc/tex/cat_14_eye6_TA_tex_txt: + addrs: [0x807EAB80, 0x807EAC80] + npc/tex/cat_14_eye7_TA_tex_txt: + addrs: [0x807EAC80, 0x807EAD80] + npc/tex/cat_14_eye8_TA_tex_txt: + addrs: [0x807EAD80, 0x807EAE80] + npc/tex/cat_14_mouth1_TA_tex_txt: + addrs: [0x807EAE80, 0x807EAF80] + npc/tex/cat_14_mouth2_TA_tex_txt: + addrs: [0x807EAF80, 0x807EB080] + npc/tex/cat_14_mouth3_TA_tex_txt: + addrs: [0x807EB080, 0x807EB180] + npc/tex/cat_14_mouth4_TA_tex_txt: + addrs: [0x807EB180, 0x807EB280] + npc/tex/cat_14_mouth5_TA_tex_txt: + addrs: [0x807EB280, 0x807EB380] + npc/tex/cat_14_mouth6_TA_tex_txt: + addrs: [0x807EB380, 0x807EB480] + npc/tex/cat_14_tmem_txt: + addrs: [0x807EB480, 0x807EB880] + npc/tex/cat_15_pal: + addrs: [0x807EB880, 0x807EB8A0] + type: pal16 + npc/tex/cat_15_eye1_TA_tex_txt: + addrs: [0x807EB8A0, 0x807EB9A0] + npc/tex/cat_15_eye2_TA_tex_txt: + addrs: [0x807EB9A0, 0x807EBAA0] + npc/tex/cat_15_eye3_TA_tex_txt: + addrs: [0x807EBAA0, 0x807EBBA0] + npc/tex/cat_15_eye4_TA_tex_txt: + addrs: [0x807EBBA0, 0x807EBCA0] + npc/tex/cat_15_eye5_TA_tex_txt: + addrs: [0x807EBCA0, 0x807EBDA0] + npc/tex/cat_15_eye6_TA_tex_txt: + addrs: [0x807EBDA0, 0x807EBEA0] + npc/tex/cat_15_eye7_TA_tex_txt: + addrs: [0x807EBEA0, 0x807EBFA0] + npc/tex/cat_15_eye8_TA_tex_txt: + addrs: [0x807EBFA0, 0x807EC0A0] + npc/tex/cat_15_mouth1_TA_tex_txt: + addrs: [0x807EC0A0, 0x807EC1A0] + npc/tex/cat_15_mouth2_TA_tex_txt: + addrs: [0x807EC1A0, 0x807EC2A0] + npc/tex/cat_15_mouth3_TA_tex_txt: + addrs: [0x807EC2A0, 0x807EC3A0] + npc/tex/cat_15_mouth4_TA_tex_txt: + addrs: [0x807EC3A0, 0x807EC4A0] + npc/tex/cat_15_mouth5_TA_tex_txt: + addrs: [0x807EC4A0, 0x807EC5A0] + npc/tex/cat_15_mouth6_TA_tex_txt: + addrs: [0x807EC5A0, 0x807EC6A0] + npc/tex/cat_15_tmem_txt: + addrs: [0x807EC6A0, 0x807ECAA0] + npc/tex/cat_3_pal: + addrs: [0x807ECAA0, 0x807ECAC0] + type: pal16 + npc/tex/cat_3_eye1_TA_tex_txt: + addrs: [0x807ECAC0, 0x807ECBC0] + npc/tex/cat_3_eye2_TA_tex_txt: + addrs: [0x807ECBC0, 0x807ECCC0] + npc/tex/cat_3_eye3_TA_tex_txt: + addrs: [0x807ECCC0, 0x807ECDC0] + npc/tex/cat_3_eye4_TA_tex_txt: + addrs: [0x807ECDC0, 0x807ECEC0] + npc/tex/cat_3_eye5_TA_tex_txt: + addrs: [0x807ECEC0, 0x807ECFC0] + npc/tex/cat_3_eye6_TA_tex_txt: + addrs: [0x807ECFC0, 0x807ED0C0] + npc/tex/cat_3_eye7_TA_tex_txt: + addrs: [0x807ED0C0, 0x807ED1C0] + npc/tex/cat_3_eye8_TA_tex_txt: + addrs: [0x807ED1C0, 0x807ED2C0] + npc/tex/cat_3_mouth1_TA_tex_txt: + addrs: [0x807ED2C0, 0x807ED3C0] + npc/tex/cat_3_mouth2_TA_tex_txt: + addrs: [0x807ED3C0, 0x807ED4C0] + npc/tex/cat_3_mouth3_TA_tex_txt: + addrs: [0x807ED4C0, 0x807ED5C0] + npc/tex/cat_3_mouth4_TA_tex_txt: + addrs: [0x807ED5C0, 0x807ED6C0] + npc/tex/cat_3_mouth5_TA_tex_txt: + addrs: [0x807ED6C0, 0x807ED7C0] + npc/tex/cat_3_mouth6_TA_tex_txt: + addrs: [0x807ED7C0, 0x807ED8C0] + npc/tex/cat_3_tmem_txt: + addrs: [0x807ED8C0, 0x807EDCC0] + npc/tex/cat_4_pal: + addrs: [0x807EDCC0, 0x807EDCE0] + type: pal16 + npc/tex/cat_4_eye1_TA_tex_txt: + addrs: [0x807EDCE0, 0x807EDDE0] + npc/tex/cat_4_eye2_TA_tex_txt: + addrs: [0x807EDDE0, 0x807EDEE0] + npc/tex/cat_4_eye3_TA_tex_txt: + addrs: [0x807EDEE0, 0x807EDFE0] + npc/tex/cat_4_eye4_TA_tex_txt: + addrs: [0x807EDFE0, 0x807EE0E0] + npc/tex/cat_4_eye5_TA_tex_txt: + addrs: [0x807EE0E0, 0x807EE1E0] + npc/tex/cat_4_eye6_TA_tex_txt: + addrs: [0x807EE1E0, 0x807EE2E0] + npc/tex/cat_4_eye7_TA_tex_txt: + addrs: [0x807EE2E0, 0x807EE3E0] + npc/tex/cat_4_eye8_TA_tex_txt: + addrs: [0x807EE3E0, 0x807EE4E0] + npc/tex/cat_4_mouth1_TA_tex_txt: + addrs: [0x807EE4E0, 0x807EE5E0] + npc/tex/cat_4_mouth2_TA_tex_txt: + addrs: [0x807EE5E0, 0x807EE6E0] + npc/tex/cat_4_mouth3_TA_tex_txt: + addrs: [0x807EE6E0, 0x807EE7E0] + npc/tex/cat_4_mouth4_TA_tex_txt: + addrs: [0x807EE7E0, 0x807EE8E0] + npc/tex/cat_4_mouth5_TA_tex_txt: + addrs: [0x807EE8E0, 0x807EE9E0] + npc/tex/cat_4_mouth6_TA_tex_txt: + addrs: [0x807EE9E0, 0x807EEAE0] + npc/tex/cat_4_tmem_txt: + addrs: [0x807EEAE0, 0x807EEEE0] + npc/tex/cat_5_pal: + addrs: [0x807EEEE0, 0x807EEF00] + type: pal16 + npc/tex/cat_5_eye1_TA_tex_txt: + addrs: [0x807EEF00, 0x807EF000] + npc/tex/cat_5_eye2_TA_tex_txt: + addrs: [0x807EF000, 0x807EF100] + npc/tex/cat_5_eye3_TA_tex_txt: + addrs: [0x807EF100, 0x807EF200] + npc/tex/cat_5_eye4_TA_tex_txt: + addrs: [0x807EF200, 0x807EF300] + npc/tex/cat_5_eye5_TA_tex_txt: + addrs: [0x807EF300, 0x807EF400] + npc/tex/cat_5_eye6_TA_tex_txt: + addrs: [0x807EF400, 0x807EF500] + npc/tex/cat_5_eye7_TA_tex_txt: + addrs: [0x807EF500, 0x807EF600] + npc/tex/cat_5_eye8_TA_tex_txt: + addrs: [0x807EF600, 0x807EF700] + npc/tex/cat_5_mouth1_TA_tex_txt: + addrs: [0x807EF700, 0x807EF800] + npc/tex/cat_5_mouth2_TA_tex_txt: + addrs: [0x807EF800, 0x807EF900] + npc/tex/cat_5_mouth3_TA_tex_txt: + addrs: [0x807EF900, 0x807EFA00] + npc/tex/cat_5_mouth4_TA_tex_txt: + addrs: [0x807EFA00, 0x807EFB00] + npc/tex/cat_5_mouth5_TA_tex_txt: + addrs: [0x807EFB00, 0x807EFC00] + npc/tex/cat_5_mouth6_TA_tex_txt: + addrs: [0x807EFC00, 0x807EFD00] + npc/tex/cat_5_tmem_txt: + addrs: [0x807EFD00, 0x807F0100] + npc/tex/cat_6_pal: + addrs: [0x807F0100, 0x807F0120] + type: pal16 + npc/tex/cat_6_eye1_TA_tex_txt: + addrs: [0x807F0120, 0x807F0220] + npc/tex/cat_6_eye2_TA_tex_txt: + addrs: [0x807F0220, 0x807F0320] + npc/tex/cat_6_eye3_TA_tex_txt: + addrs: [0x807F0320, 0x807F0420] + npc/tex/cat_6_eye4_TA_tex_txt: + addrs: [0x807F0420, 0x807F0520] + npc/tex/cat_6_eye5_TA_tex_txt: + addrs: [0x807F0520, 0x807F0620] + npc/tex/cat_6_eye6_TA_tex_txt: + addrs: [0x807F0620, 0x807F0720] + npc/tex/cat_6_eye7_TA_tex_txt: + addrs: [0x807F0720, 0x807F0820] + npc/tex/cat_6_eye8_TA_tex_txt: + addrs: [0x807F0820, 0x807F0920] + npc/tex/cat_6_mouth1_TA_tex_txt: + addrs: [0x807F0920, 0x807F0A20] + npc/tex/cat_6_mouth2_TA_tex_txt: + addrs: [0x807F0A20, 0x807F0B20] + npc/tex/cat_6_mouth3_TA_tex_txt: + addrs: [0x807F0B20, 0x807F0C20] + npc/tex/cat_6_mouth4_TA_tex_txt: + addrs: [0x807F0C20, 0x807F0D20] + npc/tex/cat_6_mouth5_TA_tex_txt: + addrs: [0x807F0D20, 0x807F0E20] + npc/tex/cat_6_mouth6_TA_tex_txt: + addrs: [0x807F0E20, 0x807F0F20] + npc/tex/cat_6_tmem_txt: + addrs: [0x807F0F20, 0x807F1320] + npc/tex/cat_7_pal: + addrs: [0x807F1320, 0x807F1340] + type: pal16 + npc/tex/cat_7_eye1_TA_tex_txt: + addrs: [0x807F1340, 0x807F1440] + npc/tex/cat_7_eye2_TA_tex_txt: + addrs: [0x807F1440, 0x807F1540] + npc/tex/cat_7_eye3_TA_tex_txt: + addrs: [0x807F1540, 0x807F1640] + npc/tex/cat_7_eye4_TA_tex_txt: + addrs: [0x807F1640, 0x807F1740] + npc/tex/cat_7_eye5_TA_tex_txt: + addrs: [0x807F1740, 0x807F1840] + npc/tex/cat_7_eye6_TA_tex_txt: + addrs: [0x807F1840, 0x807F1940] + npc/tex/cat_7_eye7_TA_tex_txt: + addrs: [0x807F1940, 0x807F1A40] + npc/tex/cat_7_eye8_TA_tex_txt: + addrs: [0x807F1A40, 0x807F1B40] + npc/tex/cat_7_mouth1_TA_tex_txt: + addrs: [0x807F1B40, 0x807F1C40] + npc/tex/cat_7_mouth2_TA_tex_txt: + addrs: [0x807F1C40, 0x807F1D40] + npc/tex/cat_7_mouth3_TA_tex_txt: + addrs: [0x807F1D40, 0x807F1E40] + npc/tex/cat_7_mouth4_TA_tex_txt: + addrs: [0x807F1E40, 0x807F1F40] + npc/tex/cat_7_mouth5_TA_tex_txt: + addrs: [0x807F1F40, 0x807F2040] + npc/tex/cat_7_mouth6_TA_tex_txt: + addrs: [0x807F2040, 0x807F2140] + npc/tex/cat_7_tmem_txt: + addrs: [0x807F2140, 0x807F2540] + npc/tex/cat_8_pal: + addrs: [0x807F2540, 0x807F2560] + type: pal16 + npc/tex/cat_8_eye1_TA_tex_txt: + addrs: [0x807F2560, 0x807F2660] + npc/tex/cat_8_eye2_TA_tex_txt: + addrs: [0x807F2660, 0x807F2760] + npc/tex/cat_8_eye3_TA_tex_txt: + addrs: [0x807F2760, 0x807F2860] + npc/tex/cat_8_eye4_TA_tex_txt: + addrs: [0x807F2860, 0x807F2960] + npc/tex/cat_8_eye5_TA_tex_txt: + addrs: [0x807F2960, 0x807F2A60] + npc/tex/cat_8_eye6_TA_tex_txt: + addrs: [0x807F2A60, 0x807F2B60] + npc/tex/cat_8_eye7_TA_tex_txt: + addrs: [0x807F2B60, 0x807F2C60] + npc/tex/cat_8_eye8_TA_tex_txt: + addrs: [0x807F2C60, 0x807F2D60] + npc/tex/cat_8_mouth1_TA_tex_txt: + addrs: [0x807F2D60, 0x807F2E60] + npc/tex/cat_8_mouth2_TA_tex_txt: + addrs: [0x807F2E60, 0x807F2F60] + npc/tex/cat_8_mouth3_TA_tex_txt: + addrs: [0x807F2F60, 0x807F3060] + npc/tex/cat_8_mouth4_TA_tex_txt: + addrs: [0x807F3060, 0x807F3160] + npc/tex/cat_8_mouth5_TA_tex_txt: + addrs: [0x807F3160, 0x807F3260] + npc/tex/cat_8_mouth6_TA_tex_txt: + addrs: [0x807F3260, 0x807F3360] + npc/tex/cat_8_tmem_txt: + addrs: [0x807F3360, 0x807F3760] + npc/tex/cat_9_pal: + addrs: [0x807F3760, 0x807F3780] + type: pal16 + npc/tex/cat_9_eye1_TA_tex_txt: + addrs: [0x807F3780, 0x807F3880] + npc/tex/cat_9_eye2_TA_tex_txt: + addrs: [0x807F3880, 0x807F3980] + npc/tex/cat_9_eye3_TA_tex_txt: + addrs: [0x807F3980, 0x807F3A80] + npc/tex/cat_9_eye4_TA_tex_txt: + addrs: [0x807F3A80, 0x807F3B80] + npc/tex/cat_9_eye5_TA_tex_txt: + addrs: [0x807F3B80, 0x807F3C80] + npc/tex/cat_9_eye6_TA_tex_txt: + addrs: [0x807F3C80, 0x807F3D80] + npc/tex/cat_9_eye7_TA_tex_txt: + addrs: [0x807F3D80, 0x807F3E80] + npc/tex/cat_9_eye8_TA_tex_txt: + addrs: [0x807F3E80, 0x807F3F80] + npc/tex/cat_9_mouth1_TA_tex_txt: + addrs: [0x807F3F80, 0x807F4080] + npc/tex/cat_9_mouth2_TA_tex_txt: + addrs: [0x807F4080, 0x807F4180] + npc/tex/cat_9_mouth3_TA_tex_txt: + addrs: [0x807F4180, 0x807F4280] + npc/tex/cat_9_mouth4_TA_tex_txt: + addrs: [0x807F4280, 0x807F4380] + npc/tex/cat_9_mouth5_TA_tex_txt: + addrs: [0x807F4380, 0x807F4480] + npc/tex/cat_9_mouth6_TA_tex_txt: + addrs: [0x807F4480, 0x807F4580] + npc/tex/cat_9_tmem_txt: + addrs: [0x807F4580, 0x807F4980] + npc/tex/cat_10_pal: + addrs: [0x807F4980, 0x807F49A0] + type: pal16 + npc/tex/cat_10_eye1_TA_tex_txt: + addrs: [0x807F49A0, 0x807F4AA0] + npc/tex/cat_10_eye2_TA_tex_txt: + addrs: [0x807F4AA0, 0x807F4BA0] + npc/tex/cat_10_eye3_TA_tex_txt: + addrs: [0x807F4BA0, 0x807F4CA0] + npc/tex/cat_10_eye4_TA_tex_txt: + addrs: [0x807F4CA0, 0x807F4DA0] + npc/tex/cat_10_eye5_TA_tex_txt: + addrs: [0x807F4DA0, 0x807F4EA0] + npc/tex/cat_10_eye6_TA_tex_txt: + addrs: [0x807F4EA0, 0x807F4FA0] + npc/tex/cat_10_eye7_TA_tex_txt: + addrs: [0x807F4FA0, 0x807F50A0] + npc/tex/cat_10_eye8_TA_tex_txt: + addrs: [0x807F50A0, 0x807F51A0] + npc/tex/cat_10_mouth1_TA_tex_txt: + addrs: [0x807F51A0, 0x807F52A0] + npc/tex/cat_10_mouth2_TA_tex_txt: + addrs: [0x807F52A0, 0x807F53A0] + npc/tex/cat_10_mouth3_TA_tex_txt: + addrs: [0x807F53A0, 0x807F54A0] + npc/tex/cat_10_mouth4_TA_tex_txt: + addrs: [0x807F54A0, 0x807F55A0] + npc/tex/cat_10_mouth5_TA_tex_txt: + addrs: [0x807F55A0, 0x807F56A0] + npc/tex/cat_10_mouth6_TA_tex_txt: + addrs: [0x807F56A0, 0x807F57A0] + npc/tex/cat_10_tmem_txt: + addrs: [0x807F57A0, 0x807F5BA0] + npc/mdl/chn_1_v: + addrs: [0x807F5BA0, 0x807F77C0] + type: vtx + npc/tex/chn_1_pal: + addrs: [0x807F8360, 0x807F8380] + type: pal16 + npc/tex/chn_1_eye1_TA_tex_txt: + addrs: [0x807F8380, 0x807F8480] + npc/tex/chn_1_eye2_TA_tex_txt: + addrs: [0x807F8480, 0x807F8580] + npc/tex/chn_1_eye3_TA_tex_txt: + addrs: [0x807F8580, 0x807F8680] + npc/tex/chn_1_eye4_TA_tex_txt: + addrs: [0x807F8680, 0x807F8780] + npc/tex/chn_1_eye5_TA_tex_txt: + addrs: [0x807F8780, 0x807F8880] + npc/tex/chn_1_eye6_TA_tex_txt: + addrs: [0x807F8880, 0x807F8980] + npc/tex/chn_1_eye7_TA_tex_txt: + addrs: [0x807F8980, 0x807F8A80] + npc/tex/chn_1_eye8_TA_tex_txt: + addrs: [0x807F8A80, 0x807F8B80] + npc/tex/chn_1_tmem_txt: + addrs: [0x807F8B80, 0x807F9040] + npc/tex/chn_2_pal: + addrs: [0x807F9040, 0x807F9060] + type: pal16 + npc/tex/chn_2_eye1_TA_tex_txt: + addrs: [0x807F9060, 0x807F9160] + npc/tex/chn_2_eye2_TA_tex_txt: + addrs: [0x807F9160, 0x807F9260] + npc/tex/chn_2_eye3_TA_tex_txt: + addrs: [0x807F9260, 0x807F9360] + npc/tex/chn_2_eye4_TA_tex_txt: + addrs: [0x807F9360, 0x807F9460] + npc/tex/chn_2_eye5_TA_tex_txt: + addrs: [0x807F9460, 0x807F9560] + npc/tex/chn_2_eye6_TA_tex_txt: + addrs: [0x807F9560, 0x807F9660] + npc/tex/chn_2_eye7_TA_tex_txt: + addrs: [0x807F9660, 0x807F9760] + npc/tex/chn_2_eye8_TA_tex_txt: + addrs: [0x807F9760, 0x807F9860] + npc/tex/chn_2_tmem_txt: + addrs: [0x807F9860, 0x807F9D20] + npc/tex/chn_3_pal: + addrs: [0x807F9D20, 0x807F9D40] + type: pal16 + npc/tex/chn_3_eye1_TA_tex_txt: + addrs: [0x807F9D40, 0x807F9E40] + npc/tex/chn_3_eye2_TA_tex_txt: + addrs: [0x807F9E40, 0x807F9F40] + npc/tex/chn_3_eye3_TA_tex_txt: + addrs: [0x807F9F40, 0x807FA040] + npc/tex/chn_3_eye4_TA_tex_txt: + addrs: [0x807FA040, 0x807FA140] + npc/tex/chn_3_eye5_TA_tex_txt: + addrs: [0x807FA140, 0x807FA240] + npc/tex/chn_3_eye6_TA_tex_txt: + addrs: [0x807FA240, 0x807FA340] + npc/tex/chn_3_eye7_TA_tex_txt: + addrs: [0x807FA340, 0x807FA440] + npc/tex/chn_3_eye8_TA_tex_txt: + addrs: [0x807FA440, 0x807FA540] + npc/tex/chn_3_tmem_txt: + addrs: [0x807FA540, 0x807FAA00] + npc/tex/chn_4_pal: + addrs: [0x807FAA00, 0x807FAA20] + type: pal16 + npc/tex/chn_4_eye1_TA_tex_txt: + addrs: [0x807FAA20, 0x807FAB20] + npc/tex/chn_4_eye2_TA_tex_txt: + addrs: [0x807FAB20, 0x807FAC20] + npc/tex/chn_4_eye3_TA_tex_txt: + addrs: [0x807FAC20, 0x807FAD20] + npc/tex/chn_4_eye4_TA_tex_txt: + addrs: [0x807FAD20, 0x807FAE20] + npc/tex/chn_4_eye5_TA_tex_txt: + addrs: [0x807FAE20, 0x807FAF20] + npc/tex/chn_4_eye6_TA_tex_txt: + addrs: [0x807FAF20, 0x807FB020] + npc/tex/chn_4_eye7_TA_tex_txt: + addrs: [0x807FB020, 0x807FB120] + npc/tex/chn_4_eye8_TA_tex_txt: + addrs: [0x807FB120, 0x807FB220] + npc/tex/chn_4_tmem_txt: + addrs: [0x807FB220, 0x807FB6E0] + npc/tex/chn_5_pal: + addrs: [0x807FB6E0, 0x807FB700] + type: pal16 + npc/tex/chn_5_eye1_TA_tex_txt: + addrs: [0x807FB700, 0x807FB800] + npc/tex/chn_5_eye2_TA_tex_txt: + addrs: [0x807FB800, 0x807FB900] + npc/tex/chn_5_eye3_TA_tex_txt: + addrs: [0x807FB900, 0x807FBA00] + npc/tex/chn_5_eye4_TA_tex_txt: + addrs: [0x807FBA00, 0x807FBB00] + npc/tex/chn_5_eye5_TA_tex_txt: + addrs: [0x807FBB00, 0x807FBC00] + npc/tex/chn_5_eye6_TA_tex_txt: + addrs: [0x807FBC00, 0x807FBD00] + npc/tex/chn_5_eye7_TA_tex_txt: + addrs: [0x807FBD00, 0x807FBE00] + npc/tex/chn_5_eye8_TA_tex_txt: + addrs: [0x807FBE00, 0x807FBF00] + npc/tex/chn_5_tmem_txt: + addrs: [0x807FBF00, 0x807FC3C0] + npc/tex/chn_6_pal: + addrs: [0x807FC3C0, 0x807FC3E0] + type: pal16 + npc/tex/chn_6_eye1_TA_tex_txt: + addrs: [0x807FC3E0, 0x807FC4E0] + npc/tex/chn_6_eye2_TA_tex_txt: + addrs: [0x807FC4E0, 0x807FC5E0] + npc/tex/chn_6_eye3_TA_tex_txt: + addrs: [0x807FC5E0, 0x807FC6E0] + npc/tex/chn_6_eye4_TA_tex_txt: + addrs: [0x807FC6E0, 0x807FC7E0] + npc/tex/chn_6_eye5_TA_tex_txt: + addrs: [0x807FC7E0, 0x807FC8E0] + npc/tex/chn_6_eye6_TA_tex_txt: + addrs: [0x807FC8E0, 0x807FC9E0] + npc/tex/chn_6_eye7_TA_tex_txt: + addrs: [0x807FC9E0, 0x807FCAE0] + npc/tex/chn_6_eye8_TA_tex_txt: + addrs: [0x807FCAE0, 0x807FCBE0] + npc/tex/chn_6_tmem_txt: + addrs: [0x807FCBE0, 0x807FD0A0] + npc/tex/chn_7_pal: + addrs: [0x807FD0A0, 0x807FD0C0] + type: pal16 + npc/tex/chn_7_eye1_TA_tex_txt: + addrs: [0x807FD0C0, 0x807FD1C0] + npc/tex/chn_7_eye2_TA_tex_txt: + addrs: [0x807FD1C0, 0x807FD2C0] + npc/tex/chn_7_eye3_TA_tex_txt: + addrs: [0x807FD2C0, 0x807FD3C0] + npc/tex/chn_7_eye4_TA_tex_txt: + addrs: [0x807FD3C0, 0x807FD4C0] + npc/tex/chn_7_eye5_TA_tex_txt: + addrs: [0x807FD4C0, 0x807FD5C0] + npc/tex/chn_7_eye6_TA_tex_txt: + addrs: [0x807FD5C0, 0x807FD6C0] + npc/tex/chn_7_eye7_TA_tex_txt: + addrs: [0x807FD6C0, 0x807FD7C0] + npc/tex/chn_7_eye8_TA_tex_txt: + addrs: [0x807FD7C0, 0x807FD8C0] + npc/tex/chn_7_tmem_txt: + addrs: [0x807FD8C0, 0x807FDD80] + npc/tex/chn_8_pal: + addrs: [0x807FDD80, 0x807FDDA0] + type: pal16 + npc/tex/chn_8_eye1_TA_tex_txt: + addrs: [0x807FDDA0, 0x807FDEA0] + npc/tex/chn_8_eye2_TA_tex_txt: + addrs: [0x807FDEA0, 0x807FDFA0] + npc/tex/chn_8_eye3_TA_tex_txt: + addrs: [0x807FDFA0, 0x807FE0A0] + npc/tex/chn_8_eye4_TA_tex_txt: + addrs: [0x807FE0A0, 0x807FE1A0] + npc/tex/chn_8_eye5_TA_tex_txt: + addrs: [0x807FE1A0, 0x807FE2A0] + npc/tex/chn_8_eye6_TA_tex_txt: + addrs: [0x807FE2A0, 0x807FE3A0] + npc/tex/chn_8_eye7_TA_tex_txt: + addrs: [0x807FE3A0, 0x807FE4A0] + npc/tex/chn_8_eye8_TA_tex_txt: + addrs: [0x807FE4A0, 0x807FE5A0] + npc/tex/chn_8_tmem_txt: + addrs: [0x807FE5A0, 0x807FEA60] + npc/tex/chn_9_pal: + addrs: [0x807FEA60, 0x807FEA80] + type: pal16 + npc/tex/chn_9_eye1_TA_tex_txt: + addrs: [0x807FEA80, 0x807FEB80] + npc/tex/chn_9_eye2_TA_tex_txt: + addrs: [0x807FEB80, 0x807FEC80] + npc/tex/chn_9_eye3_TA_tex_txt: + addrs: [0x807FEC80, 0x807FED80] + npc/tex/chn_9_eye4_TA_tex_txt: + addrs: [0x807FED80, 0x807FEE80] + npc/tex/chn_9_eye5_TA_tex_txt: + addrs: [0x807FEE80, 0x807FEF80] + npc/tex/chn_9_eye6_TA_tex_txt: + addrs: [0x807FEF80, 0x807FF080] + npc/tex/chn_9_eye7_TA_tex_txt: + addrs: [0x807FF080, 0x807FF180] + npc/tex/chn_9_eye8_TA_tex_txt: + addrs: [0x807FF180, 0x807FF280] + npc/tex/chn_9_tmem_txt: + addrs: [0x807FF280, 0x807FF740] + npc/mdl/cbr_1_v: + addrs: [0x807FF740, 0x80800CE0] + type: vtx + npc/tex/cbr_1_pal: + addrs: [0x80801620, 0x80801640] + type: pal16 + npc/tex/cbr_1_eye1_TA_tex_txt: + addrs: [0x80801640, 0x80801740] + npc/tex/cbr_1_eye2_TA_tex_txt: + addrs: [0x80801740, 0x80801840] + npc/tex/cbr_1_eye3_TA_tex_txt: + addrs: [0x80801840, 0x80801940] + npc/tex/cbr_1_eye4_TA_tex_txt: + addrs: [0x80801940, 0x80801A40] + npc/tex/cbr_1_eye5_TA_tex_txt: + addrs: [0x80801A40, 0x80801B40] + npc/tex/cbr_1_eye6_TA_tex_txt: + addrs: [0x80801B40, 0x80801C40] + npc/tex/cbr_1_eye7_TA_tex_txt: + addrs: [0x80801C40, 0x80801D40] + npc/tex/cbr_1_eye8_TA_tex_txt: + addrs: [0x80801D40, 0x80801E40] + npc/tex/cbr_1_mouth1_TA_tex_txt: + addrs: [0x80801E40, 0x80801F40] + npc/tex/cbr_1_mouth2_TA_tex_txt: + addrs: [0x80801F40, 0x80802040] + npc/tex/cbr_1_mouth3_TA_tex_txt: + addrs: [0x80802040, 0x80802140] + npc/tex/cbr_1_mouth4_TA_tex_txt: + addrs: [0x80802140, 0x80802240] + npc/tex/cbr_1_mouth5_TA_tex_txt: + addrs: [0x80802240, 0x80802340] + npc/tex/cbr_1_mouth6_TA_tex_txt: + addrs: [0x80802340, 0x80802440] + npc/tex/cbr_1_tmem_txt: + addrs: [0x80802440, 0x80802840] + npc/tex/cbr_2_pal: + addrs: [0x80802840, 0x80802860] + type: pal16 + npc/tex/cbr_2_eye1_TA_tex_txt: + addrs: [0x80802860, 0x80802960] + npc/tex/cbr_2_eye2_TA_tex_txt: + addrs: [0x80802960, 0x80802A60] + npc/tex/cbr_2_eye3_TA_tex_txt: + addrs: [0x80802A60, 0x80802B60] + npc/tex/cbr_2_eye4_TA_tex_txt: + addrs: [0x80802B60, 0x80802C60] + npc/tex/cbr_2_eye5_TA_tex_txt: + addrs: [0x80802C60, 0x80802D60] + npc/tex/cbr_2_eye6_TA_tex_txt: + addrs: [0x80802D60, 0x80802E60] + npc/tex/cbr_2_eye7_TA_tex_txt: + addrs: [0x80802E60, 0x80802F60] + npc/tex/cbr_2_eye8_TA_tex_txt: + addrs: [0x80802F60, 0x80803060] + npc/tex/cbr_2_mouth1_TA_tex_txt: + addrs: [0x80803060, 0x80803160] + npc/tex/cbr_2_mouth2_TA_tex_txt: + addrs: [0x80803160, 0x80803260] + npc/tex/cbr_2_mouth3_TA_tex_txt: + addrs: [0x80803260, 0x80803360] + npc/tex/cbr_2_mouth4_TA_tex_txt: + addrs: [0x80803360, 0x80803460] + npc/tex/cbr_2_mouth5_TA_tex_txt: + addrs: [0x80803460, 0x80803560] + npc/tex/cbr_2_mouth6_TA_tex_txt: + addrs: [0x80803560, 0x80803660] + npc/tex/cbr_2_tmem_txt: + addrs: [0x80803660, 0x80803A60] + npc/tex/cbr_11_pal: + addrs: [0x80803A60, 0x80803A80] + type: pal16 + npc/tex/cbr_11_eye1_TA_tex_txt: + addrs: [0x80803A80, 0x80803B80] + npc/tex/cbr_11_eye2_TA_tex_txt: + addrs: [0x80803B80, 0x80803C80] + npc/tex/cbr_11_eye3_TA_tex_txt: + addrs: [0x80803C80, 0x80803D80] + npc/tex/cbr_11_eye4_TA_tex_txt: + addrs: [0x80803D80, 0x80803E80] + npc/tex/cbr_11_eye5_TA_tex_txt: + addrs: [0x80803E80, 0x80803F80] + npc/tex/cbr_11_eye6_TA_tex_txt: + addrs: [0x80803F80, 0x80804080] + npc/tex/cbr_11_eye7_TA_tex_txt: + addrs: [0x80804080, 0x80804180] + npc/tex/cbr_11_eye8_TA_tex_txt: + addrs: [0x80804180, 0x80804280] + npc/tex/cbr_11_mouth1_TA_tex_txt: + addrs: [0x80804280, 0x80804380] + npc/tex/cbr_11_mouth2_TA_tex_txt: + addrs: [0x80804380, 0x80804480] + npc/tex/cbr_11_mouth3_TA_tex_txt: + addrs: [0x80804480, 0x80804580] + npc/tex/cbr_11_mouth4_TA_tex_txt: + addrs: [0x80804580, 0x80804680] + npc/tex/cbr_11_mouth5_TA_tex_txt: + addrs: [0x80804680, 0x80804780] + npc/tex/cbr_11_mouth6_TA_tex_txt: + addrs: [0x80804780, 0x80804880] + npc/tex/cbr_11_tmem_txt: + addrs: [0x80804880, 0x80804C80] + npc/tex/cbr_3_pal: + addrs: [0x80804C80, 0x80804CA0] + type: pal16 + npc/tex/cbr_3_eye1_TA_tex_txt: + addrs: [0x80804CA0, 0x80804DA0] + npc/tex/cbr_3_eye2_TA_tex_txt: + addrs: [0x80804DA0, 0x80804EA0] + npc/tex/cbr_3_eye3_TA_tex_txt: + addrs: [0x80804EA0, 0x80804FA0] + npc/tex/cbr_3_eye4_TA_tex_txt: + addrs: [0x80804FA0, 0x808050A0] + npc/tex/cbr_3_eye5_TA_tex_txt: + addrs: [0x808050A0, 0x808051A0] + npc/tex/cbr_3_eye6_TA_tex_txt: + addrs: [0x808051A0, 0x808052A0] + npc/tex/cbr_3_eye7_TA_tex_txt: + addrs: [0x808052A0, 0x808053A0] + npc/tex/cbr_3_eye8_TA_tex_txt: + addrs: [0x808053A0, 0x808054A0] + npc/tex/cbr_3_mouth1_TA_tex_txt: + addrs: [0x808054A0, 0x808055A0] + npc/tex/cbr_3_mouth2_TA_tex_txt: + addrs: [0x808055A0, 0x808056A0] + npc/tex/cbr_3_mouth3_TA_tex_txt: + addrs: [0x808056A0, 0x808057A0] + npc/tex/cbr_3_mouth4_TA_tex_txt: + addrs: [0x808057A0, 0x808058A0] + npc/tex/cbr_3_mouth5_TA_tex_txt: + addrs: [0x808058A0, 0x808059A0] + npc/tex/cbr_3_mouth6_TA_tex_txt: + addrs: [0x808059A0, 0x80805AA0] + npc/tex/cbr_3_tmem_txt: + addrs: [0x80805AA0, 0x80805EA0] + npc/tex/cbr_4_pal: + addrs: [0x80805EA0, 0x80805EC0] + type: pal16 + npc/tex/cbr_4_eye1_TA_tex_txt: + addrs: [0x80805EC0, 0x80805FC0] + npc/tex/cbr_4_eye2_TA_tex_txt: + addrs: [0x80805FC0, 0x808060C0] + npc/tex/cbr_4_eye3_TA_tex_txt: + addrs: [0x808060C0, 0x808061C0] + npc/tex/cbr_4_eye4_TA_tex_txt: + addrs: [0x808061C0, 0x808062C0] + npc/tex/cbr_4_eye5_TA_tex_txt: + addrs: [0x808062C0, 0x808063C0] + npc/tex/cbr_4_eye6_TA_tex_txt: + addrs: [0x808063C0, 0x808064C0] + npc/tex/cbr_4_eye7_TA_tex_txt: + addrs: [0x808064C0, 0x808065C0] + npc/tex/cbr_4_eye8_TA_tex_txt: + addrs: [0x808065C0, 0x808066C0] + npc/tex/cbr_4_mouth1_TA_tex_txt: + addrs: [0x808066C0, 0x808067C0] + npc/tex/cbr_4_mouth2_TA_tex_txt: + addrs: [0x808067C0, 0x808068C0] + npc/tex/cbr_4_mouth3_TA_tex_txt: + addrs: [0x808068C0, 0x808069C0] + npc/tex/cbr_4_mouth4_TA_tex_txt: + addrs: [0x808069C0, 0x80806AC0] + npc/tex/cbr_4_mouth5_TA_tex_txt: + addrs: [0x80806AC0, 0x80806BC0] + npc/tex/cbr_4_mouth6_TA_tex_txt: + addrs: [0x80806BC0, 0x80806CC0] + npc/tex/cbr_4_tmem_txt: + addrs: [0x80806CC0, 0x808070C0] + npc/tex/cbr_5_pal: + addrs: [0x808070C0, 0x808070E0] + type: pal16 + npc/tex/cbr_5_eye1_TA_tex_txt: + addrs: [0x808070E0, 0x808071E0] + npc/tex/cbr_5_eye2_TA_tex_txt: + addrs: [0x808071E0, 0x808072E0] + npc/tex/cbr_5_eye3_TA_tex_txt: + addrs: [0x808072E0, 0x808073E0] + npc/tex/cbr_5_eye4_TA_tex_txt: + addrs: [0x808073E0, 0x808074E0] + npc/tex/cbr_5_eye5_TA_tex_txt: + addrs: [0x808074E0, 0x808075E0] + npc/tex/cbr_5_eye6_TA_tex_txt: + addrs: [0x808075E0, 0x808076E0] + npc/tex/cbr_5_eye7_TA_tex_txt: + addrs: [0x808076E0, 0x808077E0] + npc/tex/cbr_5_eye8_TA_tex_txt: + addrs: [0x808077E0, 0x808078E0] + npc/tex/cbr_5_mouth1_TA_tex_txt: + addrs: [0x808078E0, 0x808079E0] + npc/tex/cbr_5_mouth2_TA_tex_txt: + addrs: [0x808079E0, 0x80807AE0] + npc/tex/cbr_5_mouth3_TA_tex_txt: + addrs: [0x80807AE0, 0x80807BE0] + npc/tex/cbr_5_mouth4_TA_tex_txt: + addrs: [0x80807BE0, 0x80807CE0] + npc/tex/cbr_5_mouth5_TA_tex_txt: + addrs: [0x80807CE0, 0x80807DE0] + npc/tex/cbr_5_mouth6_TA_tex_txt: + addrs: [0x80807DE0, 0x80807EE0] + npc/tex/cbr_5_tmem_txt: + addrs: [0x80807EE0, 0x808082E0] + npc/tex/cbr_6_pal: + addrs: [0x808082E0, 0x80808300] + type: pal16 + npc/tex/cbr_6_eye1_TA_tex_txt: + addrs: [0x80808300, 0x80808400] + npc/tex/cbr_6_eye2_TA_tex_txt: + addrs: [0x80808400, 0x80808500] + npc/tex/cbr_6_eye3_TA_tex_txt: + addrs: [0x80808500, 0x80808600] + npc/tex/cbr_6_eye4_TA_tex_txt: + addrs: [0x80808600, 0x80808700] + npc/tex/cbr_6_eye5_TA_tex_txt: + addrs: [0x80808700, 0x80808800] + npc/tex/cbr_6_eye6_TA_tex_txt: + addrs: [0x80808800, 0x80808900] + npc/tex/cbr_6_eye7_TA_tex_txt: + addrs: [0x80808900, 0x80808A00] + npc/tex/cbr_6_eye8_TA_tex_txt: + addrs: [0x80808A00, 0x80808B00] + npc/tex/cbr_6_mouth1_TA_tex_txt: + addrs: [0x80808B00, 0x80808C00] + npc/tex/cbr_6_mouth2_TA_tex_txt: + addrs: [0x80808C00, 0x80808D00] + npc/tex/cbr_6_mouth3_TA_tex_txt: + addrs: [0x80808D00, 0x80808E00] + npc/tex/cbr_6_mouth4_TA_tex_txt: + addrs: [0x80808E00, 0x80808F00] + npc/tex/cbr_6_mouth5_TA_tex_txt: + addrs: [0x80808F00, 0x80809000] + npc/tex/cbr_6_mouth6_TA_tex_txt: + addrs: [0x80809000, 0x80809100] + npc/tex/cbr_6_tmem_txt: + addrs: [0x80809100, 0x80809500] + npc/tex/cbr_7_pal: + addrs: [0x80809500, 0x80809520] + type: pal16 + npc/tex/cbr_7_eye1_TA_tex_txt: + addrs: [0x80809520, 0x80809620] + npc/tex/cbr_7_eye2_TA_tex_txt: + addrs: [0x80809620, 0x80809720] + npc/tex/cbr_7_eye3_TA_tex_txt: + addrs: [0x80809720, 0x80809820] + npc/tex/cbr_7_eye4_TA_tex_txt: + addrs: [0x80809820, 0x80809920] + npc/tex/cbr_7_eye5_TA_tex_txt: + addrs: [0x80809920, 0x80809A20] + npc/tex/cbr_7_eye6_TA_tex_txt: + addrs: [0x80809A20, 0x80809B20] + npc/tex/cbr_7_eye7_TA_tex_txt: + addrs: [0x80809B20, 0x80809C20] + npc/tex/cbr_7_eye8_TA_tex_txt: + addrs: [0x80809C20, 0x80809D20] + npc/tex/cbr_7_mouth1_TA_tex_txt: + addrs: [0x80809D20, 0x80809E20] + npc/tex/cbr_7_mouth2_TA_tex_txt: + addrs: [0x80809E20, 0x80809F20] + npc/tex/cbr_7_mouth3_TA_tex_txt: + addrs: [0x80809F20, 0x8080A020] + npc/tex/cbr_7_mouth4_TA_tex_txt: + addrs: [0x8080A020, 0x8080A120] + npc/tex/cbr_7_mouth5_TA_tex_txt: + addrs: [0x8080A120, 0x8080A220] + npc/tex/cbr_7_mouth6_TA_tex_txt: + addrs: [0x8080A220, 0x8080A320] + npc/tex/cbr_7_tmem_txt: + addrs: [0x8080A320, 0x8080A720] + npc/tex/cbr_8_pal: + addrs: [0x8080A720, 0x8080A740] + type: pal16 + npc/tex/cbr_8_eye1_TA_tex_txt: + addrs: [0x8080A740, 0x8080A840] + npc/tex/cbr_8_eye2_TA_tex_txt: + addrs: [0x8080A840, 0x8080A940] + npc/tex/cbr_8_eye3_TA_tex_txt: + addrs: [0x8080A940, 0x8080AA40] + npc/tex/cbr_8_eye4_TA_tex_txt: + addrs: [0x8080AA40, 0x8080AB40] + npc/tex/cbr_8_eye5_TA_tex_txt: + addrs: [0x8080AB40, 0x8080AC40] + npc/tex/cbr_8_eye6_TA_tex_txt: + addrs: [0x8080AC40, 0x8080AD40] + npc/tex/cbr_8_eye7_TA_tex_txt: + addrs: [0x8080AD40, 0x8080AE40] + npc/tex/cbr_8_eye8_TA_tex_txt: + addrs: [0x8080AE40, 0x8080AF40] + npc/tex/cbr_8_mouth1_TA_tex_txt: + addrs: [0x8080AF40, 0x8080B040] + npc/tex/cbr_8_mouth2_TA_tex_txt: + addrs: [0x8080B040, 0x8080B140] + npc/tex/cbr_8_mouth3_TA_tex_txt: + addrs: [0x8080B140, 0x8080B240] + npc/tex/cbr_8_mouth4_TA_tex_txt: + addrs: [0x8080B240, 0x8080B340] + npc/tex/cbr_8_mouth5_TA_tex_txt: + addrs: [0x8080B340, 0x8080B440] + npc/tex/cbr_8_mouth6_TA_tex_txt: + addrs: [0x8080B440, 0x8080B540] + npc/tex/cbr_8_tmem_txt: + addrs: [0x8080B540, 0x8080B940] + npc/tex/cbr_9_pal: + addrs: [0x8080B940, 0x8080B960] + type: pal16 + npc/tex/cbr_9_eye1_TA_tex_txt: + addrs: [0x8080B960, 0x8080BA60] + npc/tex/cbr_9_eye2_TA_tex_txt: + addrs: [0x8080BA60, 0x8080BB60] + npc/tex/cbr_9_eye3_TA_tex_txt: + addrs: [0x8080BB60, 0x8080BC60] + npc/tex/cbr_9_eye4_TA_tex_txt: + addrs: [0x8080BC60, 0x8080BD60] + npc/tex/cbr_9_eye5_TA_tex_txt: + addrs: [0x8080BD60, 0x8080BE60] + npc/tex/cbr_9_eye6_TA_tex_txt: + addrs: [0x8080BE60, 0x8080BF60] + npc/tex/cbr_9_eye7_TA_tex_txt: + addrs: [0x8080BF60, 0x8080C060] + npc/tex/cbr_9_eye8_TA_tex_txt: + addrs: [0x8080C060, 0x8080C160] + npc/tex/cbr_9_mouth1_TA_tex_txt: + addrs: [0x8080C160, 0x8080C260] + npc/tex/cbr_9_mouth2_TA_tex_txt: + addrs: [0x8080C260, 0x8080C360] + npc/tex/cbr_9_mouth3_TA_tex_txt: + addrs: [0x8080C360, 0x8080C460] + npc/tex/cbr_9_mouth4_TA_tex_txt: + addrs: [0x8080C460, 0x8080C560] + npc/tex/cbr_9_mouth5_TA_tex_txt: + addrs: [0x8080C560, 0x8080C660] + npc/tex/cbr_9_mouth6_TA_tex_txt: + addrs: [0x8080C660, 0x8080C760] + npc/tex/cbr_9_tmem_txt: + addrs: [0x8080C760, 0x8080CB60] + npc/tex/cbr_10_pal: + addrs: [0x8080CB60, 0x8080CB80] + type: pal16 + npc/tex/cbr_10_eye1_TA_tex_txt: + addrs: [0x8080CB80, 0x8080CC80] + npc/tex/cbr_10_eye2_TA_tex_txt: + addrs: [0x8080CC80, 0x8080CD80] + npc/tex/cbr_10_eye3_TA_tex_txt: + addrs: [0x8080CD80, 0x8080CE80] + npc/tex/cbr_10_eye4_TA_tex_txt: + addrs: [0x8080CE80, 0x8080CF80] + npc/tex/cbr_10_eye5_TA_tex_txt: + addrs: [0x8080CF80, 0x8080D080] + npc/tex/cbr_10_eye6_TA_tex_txt: + addrs: [0x8080D080, 0x8080D180] + npc/tex/cbr_10_eye7_TA_tex_txt: + addrs: [0x8080D180, 0x8080D280] + npc/tex/cbr_10_eye8_TA_tex_txt: + addrs: [0x8080D280, 0x8080D380] + npc/tex/cbr_10_mouth1_TA_tex_txt: + addrs: [0x8080D380, 0x8080D480] + npc/tex/cbr_10_mouth2_TA_tex_txt: + addrs: [0x8080D480, 0x8080D580] + npc/tex/cbr_10_mouth3_TA_tex_txt: + addrs: [0x8080D580, 0x8080D680] + npc/tex/cbr_10_mouth4_TA_tex_txt: + addrs: [0x8080D680, 0x8080D780] + npc/tex/cbr_10_mouth5_TA_tex_txt: + addrs: [0x8080D780, 0x8080D880] + npc/tex/cbr_10_mouth6_TA_tex_txt: + addrs: [0x8080D880, 0x8080D980] + npc/tex/cbr_10_tmem_txt: + addrs: [0x8080D980, 0x8080DD80] + npc/mdl/rcc_1_v: + addrs: [0x8080E628, 0x8080FBD8] + type: vtx + npc/tex/rcc_1_pal: + addrs: [0x80810620, 0x80810640] + type: pal16 + npc/tex/rcc_1_eye1_TA_tex_txt: + addrs: [0x80810640, 0x80810740] + npc/tex/rcc_1_eye2_TA_tex_txt: + addrs: [0x80810740, 0x80810840] + npc/tex/rcc_1_eye3_TA_tex_txt: + addrs: [0x80810840, 0x80810940] + npc/tex/rcc_1_eye4_TA_tex_txt: + addrs: [0x80810940, 0x80810A40] + npc/tex/rcc_1_eye5_TA_tex_txt: + addrs: [0x80810A40, 0x80810B40] + npc/tex/rcc_1_eye6_TA_tex_txt: + addrs: [0x80810B40, 0x80810C40] + npc/tex/rcc_1_eye7_TA_tex_txt: + addrs: [0x80810C40, 0x80810D40] + npc/tex/rcc_1_eye8_TA_tex_txt: + addrs: [0x80810D40, 0x80810E40] + npc/tex/rcc_1_tmem_txt: + addrs: [0x80810E40, 0x80811500] + npc/mdl/cow_1_v: + addrs: [0x80811500, 0x80812B30] + type: vtx + npc/tex/cow_1_pal: + addrs: [0x808134E0, 0x80813500] + type: pal16 + npc/tex/cow_1_eye1_TA_tex_txt: + addrs: [0x80813500, 0x80813600] + npc/tex/cow_1_eye2_TA_tex_txt: + addrs: [0x80813600, 0x80813700] + npc/tex/cow_1_eye3_TA_tex_txt: + addrs: [0x80813700, 0x80813800] + npc/tex/cow_1_eye4_TA_tex_txt: + addrs: [0x80813800, 0x80813900] + npc/tex/cow_1_eye5_TA_tex_txt: + addrs: [0x80813900, 0x80813A00] + npc/tex/cow_1_eye6_TA_tex_txt: + addrs: [0x80813A00, 0x80813B00] + npc/tex/cow_1_eye7_TA_tex_txt: + addrs: [0x80813B00, 0x80813C00] + npc/tex/cow_1_eye8_TA_tex_txt: + addrs: [0x80813C00, 0x80813D00] + npc/tex/cow_1_mouth1_TA_tex_txt: + addrs: [0x80813D00, 0x80813E00] + npc/tex/cow_1_mouth2_TA_tex_txt: + addrs: [0x80813E00, 0x80813F00] + npc/tex/cow_1_mouth3_TA_tex_txt: + addrs: [0x80813F00, 0x80814000] + npc/tex/cow_1_mouth4_TA_tex_txt: + addrs: [0x80814000, 0x80814100] + npc/tex/cow_1_mouth5_TA_tex_txt: + addrs: [0x80814100, 0x80814200] + npc/tex/cow_1_mouth6_TA_tex_txt: + addrs: [0x80814200, 0x80814300] + npc/tex/cow_1_tmem_txt: + addrs: [0x80814300, 0x80814700] + npc/tex/cow_2_pal: + addrs: [0x80814700, 0x80814720] + type: pal16 + npc/tex/cow_2_eye1_TA_tex_txt: + addrs: [0x80814720, 0x80814820] + npc/tex/cow_2_eye2_TA_tex_txt: + addrs: [0x80814820, 0x80814920] + npc/tex/cow_2_eye3_TA_tex_txt: + addrs: [0x80814920, 0x80814A20] + npc/tex/cow_2_eye4_TA_tex_txt: + addrs: [0x80814A20, 0x80814B20] + npc/tex/cow_2_eye5_TA_tex_txt: + addrs: [0x80814B20, 0x80814C20] + npc/tex/cow_2_eye6_TA_tex_txt: + addrs: [0x80814C20, 0x80814D20] + npc/tex/cow_2_eye7_TA_tex_txt: + addrs: [0x80814D20, 0x80814E20] + npc/tex/cow_2_eye8_TA_tex_txt: + addrs: [0x80814E20, 0x80814F20] + npc/tex/cow_2_mouth1_TA_tex_txt: + addrs: [0x80814F20, 0x80815020] + npc/tex/cow_2_mouth2_TA_tex_txt: + addrs: [0x80815020, 0x80815120] + npc/tex/cow_2_mouth3_TA_tex_txt: + addrs: [0x80815120, 0x80815220] + npc/tex/cow_2_mouth4_TA_tex_txt: + addrs: [0x80815220, 0x80815320] + npc/tex/cow_2_mouth5_TA_tex_txt: + addrs: [0x80815320, 0x80815420] + npc/tex/cow_2_mouth6_TA_tex_txt: + addrs: [0x80815420, 0x80815520] + npc/tex/cow_2_tmem_txt: + addrs: [0x80815520, 0x80815920] + npc/tex/cow_3_pal: + addrs: [0x80815920, 0x80815940] + type: pal16 + npc/tex/cow_3_eye1_TA_tex_txt: + addrs: [0x80815940, 0x80815A40] + npc/tex/cow_3_eye2_TA_tex_txt: + addrs: [0x80815A40, 0x80815B40] + npc/tex/cow_3_eye3_TA_tex_txt: + addrs: [0x80815B40, 0x80815C40] + npc/tex/cow_3_eye4_TA_tex_txt: + addrs: [0x80815C40, 0x80815D40] + npc/tex/cow_3_eye5_TA_tex_txt: + addrs: [0x80815D40, 0x80815E40] + npc/tex/cow_3_eye6_TA_tex_txt: + addrs: [0x80815E40, 0x80815F40] + npc/tex/cow_3_eye7_TA_tex_txt: + addrs: [0x80815F40, 0x80816040] + npc/tex/cow_3_eye8_TA_tex_txt: + addrs: [0x80816040, 0x80816140] + npc/tex/cow_3_mouth1_TA_tex_txt: + addrs: [0x80816140, 0x80816240] + npc/tex/cow_3_mouth2_TA_tex_txt: + addrs: [0x80816240, 0x80816340] + npc/tex/cow_3_mouth3_TA_tex_txt: + addrs: [0x80816340, 0x80816440] + npc/tex/cow_3_mouth4_TA_tex_txt: + addrs: [0x80816440, 0x80816540] + npc/tex/cow_3_mouth5_TA_tex_txt: + addrs: [0x80816540, 0x80816640] + npc/tex/cow_3_mouth6_TA_tex_txt: + addrs: [0x80816640, 0x80816740] + npc/tex/cow_3_tmem_txt: + addrs: [0x80816740, 0x80816B40] + npc/tex/cow_4_pal: + addrs: [0x80816B40, 0x80816B60] + type: pal16 + npc/tex/cow_4_eye1_TA_tex_txt: + addrs: [0x80816B60, 0x80816C60] + npc/tex/cow_4_eye2_TA_tex_txt: + addrs: [0x80816C60, 0x80816D60] + npc/tex/cow_4_eye3_TA_tex_txt: + addrs: [0x80816D60, 0x80816E60] + npc/tex/cow_4_eye4_TA_tex_txt: + addrs: [0x80816E60, 0x80816F60] + npc/tex/cow_4_eye5_TA_tex_txt: + addrs: [0x80816F60, 0x80817060] + npc/tex/cow_4_eye6_TA_tex_txt: + addrs: [0x80817060, 0x80817160] + npc/tex/cow_4_eye7_TA_tex_txt: + addrs: [0x80817160, 0x80817260] + npc/tex/cow_4_eye8_TA_tex_txt: + addrs: [0x80817260, 0x80817360] + npc/tex/cow_4_mouth1_TA_tex_txt: + addrs: [0x80817360, 0x80817460] + npc/tex/cow_4_mouth2_TA_tex_txt: + addrs: [0x80817460, 0x80817560] + npc/tex/cow_4_mouth3_TA_tex_txt: + addrs: [0x80817560, 0x80817660] + npc/tex/cow_4_mouth4_TA_tex_txt: + addrs: [0x80817660, 0x80817760] + npc/tex/cow_4_mouth5_TA_tex_txt: + addrs: [0x80817760, 0x80817860] + npc/tex/cow_4_mouth6_TA_tex_txt: + addrs: [0x80817860, 0x80817960] + npc/tex/cow_4_tmem_txt: + addrs: [0x80817960, 0x80817D60] + npc/mdl/crd_1_v: + addrs: [0x80817D60, 0x808194F0] + type: vtx + npc/tex/crd_1_pal: + addrs: [0x80819F00, 0x80819F20] + type: pal16 + npc/tex/crd_1_eye1_TA_tex_txt: + addrs: [0x80819F20, 0x8081A020] + npc/tex/crd_1_eye2_TA_tex_txt: + addrs: [0x8081A020, 0x8081A120] + npc/tex/crd_1_eye3_TA_tex_txt: + addrs: [0x8081A120, 0x8081A220] + npc/tex/crd_1_eye4_TA_tex_txt: + addrs: [0x8081A220, 0x8081A320] + npc/tex/crd_1_eye5_TA_tex_txt: + addrs: [0x8081A320, 0x8081A420] + npc/tex/crd_1_eye6_TA_tex_txt: + addrs: [0x8081A420, 0x8081A520] + npc/tex/crd_1_eye7_TA_tex_txt: + addrs: [0x8081A520, 0x8081A620] + npc/tex/crd_1_eye8_TA_tex_txt: + addrs: [0x8081A620, 0x8081A720] + npc/tex/crd_1_tmem_txt: + addrs: [0x8081A720, 0x8081AC20] + npc/tex/crd_2_pal: + addrs: [0x8081AC20, 0x8081AC40] + type: pal16 + npc/tex/crd_2_eye1_TA_tex_txt: + addrs: [0x8081AC40, 0x8081AD40] + npc/tex/crd_2_eye2_TA_tex_txt: + addrs: [0x8081AD40, 0x8081AE40] + npc/tex/crd_2_eye3_TA_tex_txt: + addrs: [0x8081AE40, 0x8081AF40] + npc/tex/crd_2_eye4_TA_tex_txt: + addrs: [0x8081AF40, 0x8081B040] + npc/tex/crd_2_eye5_TA_tex_txt: + addrs: [0x8081B040, 0x8081B140] + npc/tex/crd_2_eye6_TA_tex_txt: + addrs: [0x8081B140, 0x8081B240] + npc/tex/crd_2_eye7_TA_tex_txt: + addrs: [0x8081B240, 0x8081B340] + npc/tex/crd_2_eye8_TA_tex_txt: + addrs: [0x8081B340, 0x8081B440] + npc/tex/crd_2_tmem_txt: + addrs: [0x8081B440, 0x8081B940] + npc/tex/crd_3_pal: + addrs: [0x8081B940, 0x8081B960] + type: pal16 + npc/tex/crd_3_eye1_TA_tex_txt: + addrs: [0x8081B960, 0x8081BA60] + npc/tex/crd_3_eye2_TA_tex_txt: + addrs: [0x8081BA60, 0x8081BB60] + npc/tex/crd_3_eye3_TA_tex_txt: + addrs: [0x8081BB60, 0x8081BC60] + npc/tex/crd_3_eye4_TA_tex_txt: + addrs: [0x8081BC60, 0x8081BD60] + npc/tex/crd_3_eye5_TA_tex_txt: + addrs: [0x8081BD60, 0x8081BE60] + npc/tex/crd_3_eye6_TA_tex_txt: + addrs: [0x8081BE60, 0x8081BF60] + npc/tex/crd_3_eye7_TA_tex_txt: + addrs: [0x8081BF60, 0x8081C060] + npc/tex/crd_3_eye8_TA_tex_txt: + addrs: [0x8081C060, 0x8081C160] + npc/tex/crd_3_tmem_txt: + addrs: [0x8081C160, 0x8081C660] + npc/tex/crd_4_pal: + addrs: [0x8081C660, 0x8081C680] + type: pal16 + npc/tex/crd_4_eye1_TA_tex_txt: + addrs: [0x8081C680, 0x8081C780] + npc/tex/crd_4_eye2_TA_tex_txt: + addrs: [0x8081C780, 0x8081C880] + npc/tex/crd_4_eye3_TA_tex_txt: + addrs: [0x8081C880, 0x8081C980] + npc/tex/crd_4_eye4_TA_tex_txt: + addrs: [0x8081C980, 0x8081CA80] + npc/tex/crd_4_eye5_TA_tex_txt: + addrs: [0x8081CA80, 0x8081CB80] + npc/tex/crd_4_eye6_TA_tex_txt: + addrs: [0x8081CB80, 0x8081CC80] + npc/tex/crd_4_eye7_TA_tex_txt: + addrs: [0x8081CC80, 0x8081CD80] + npc/tex/crd_4_eye8_TA_tex_txt: + addrs: [0x8081CD80, 0x8081CE80] + npc/tex/crd_4_tmem_txt: + addrs: [0x8081CE80, 0x8081D380] + npc/mdl/owl_1_v: + addrs: [0x8081D380, 0x8081EE10] + type: vtx + npc/tex/owl_1_pal: + addrs: [0x8081F9C0, 0x8081F9E0] + type: pal16 + npc/tex/owl_1_eye1_TA_tex_txt: + addrs: [0x8081F9E0, 0x8081FAE0] + npc/tex/owl_1_eye2_TA_tex_txt: + addrs: [0x8081FAE0, 0x8081FBE0] + npc/tex/owl_1_eye3_TA_tex_txt: + addrs: [0x8081FBE0, 0x8081FCE0] + npc/tex/owl_1_eye4_TA_tex_txt: + addrs: [0x8081FCE0, 0x8081FDE0] + npc/tex/owl_1_eye5_TA_tex_txt: + addrs: [0x8081FDE0, 0x8081FEE0] + npc/tex/owl_1_eye6_TA_tex_txt: + addrs: [0x8081FEE0, 0x8081FFE0] + npc/tex/owl_1_eye7_TA_tex_txt: + addrs: [0x8081FFE0, 0x808200E0] + npc/tex/owl_1_eye8_TA_tex_txt: + addrs: [0x808200E0, 0x808201E0] + npc/tex/owl_1_tmem_txt: + addrs: [0x808201E0, 0x80820820] + npc/mdl/rcd_1_v: + addrs: [0x80820820, 0x80821D40] + type: vtx + npc/tex/rcd_1_pal: + addrs: [0x80822720, 0x80822740] + type: pal16 + npc/tex/rcd_1_eye1_TA_tex_txt: + addrs: [0x80822740, 0x80822840] + npc/tex/rcd_1_eye2_TA_tex_txt: + addrs: [0x80822840, 0x80822940] + npc/tex/rcd_1_eye3_TA_tex_txt: + addrs: [0x80822940, 0x80822A40] + npc/tex/rcd_1_eye4_TA_tex_txt: + addrs: [0x80822A40, 0x80822B40] + npc/tex/rcd_1_eye5_TA_tex_txt: + addrs: [0x80822B40, 0x80822C40] + npc/tex/rcd_1_eye6_TA_tex_txt: + addrs: [0x80822C40, 0x80822D40] + npc/tex/rcd_1_eye7_TA_tex_txt: + addrs: [0x80822D40, 0x80822E40] + npc/tex/rcd_1_eye8_TA_tex_txt: + addrs: [0x80822E40, 0x80822F40] + npc/tex/rcd_1_tmem_txt: + addrs: [0x80822F40, 0x80823580] + npc/mdl/grf_1_v: + addrs: [0x80823580, 0x80825060] + type: vtx + npc/tex/grf_1_pal: + addrs: [0x80825B40, 0x80825B60] + type: pal16 + npc/tex/grf_1_eye1_TA_tex_txt: + addrs: [0x80825B60, 0x80825C60] + npc/tex/grf_1_eye2_TA_tex_txt: + addrs: [0x80825C60, 0x80825D60] + npc/tex/grf_1_eye3_TA_tex_txt: + addrs: [0x80825D60, 0x80825E60] + npc/tex/grf_1_eye4_TA_tex_txt: + addrs: [0x80825E60, 0x80825F60] + npc/tex/grf_1_eye5_TA_tex_txt: + addrs: [0x80825F60, 0x80826060] + npc/tex/grf_1_eye6_TA_tex_txt: + addrs: [0x80826060, 0x80826160] + npc/tex/grf_1_eye7_TA_tex_txt: + addrs: [0x80826160, 0x80826260] + npc/tex/grf_1_eye8_TA_tex_txt: + addrs: [0x80826260, 0x80826360] + npc/tex/grf_1_tmem_txt: + addrs: [0x80826360, 0x80826A60] + npc/mdl/dog_1_v: + addrs: [0x80826A60, 0x80828110] + type: vtx + npc/tex/dog_1_pal: + addrs: [0x80828A40, 0x80828A60] + type: pal16 + npc/tex/dog_1_eye1_TA_tex_txt: + addrs: [0x80828A60, 0x80828B60] + npc/tex/dog_1_eye2_TA_tex_txt: + addrs: [0x80828B60, 0x80828C60] + npc/tex/dog_1_eye3_TA_tex_txt: + addrs: [0x80828C60, 0x80828D60] + npc/tex/dog_1_eye4_TA_tex_txt: + addrs: [0x80828D60, 0x80828E60] + npc/tex/dog_1_eye5_TA_tex_txt: + addrs: [0x80828E60, 0x80828F60] + npc/tex/dog_1_eye6_TA_tex_txt: + addrs: [0x80828F60, 0x80829060] + npc/tex/dog_1_eye7_TA_tex_txt: + addrs: [0x80829060, 0x80829160] + npc/tex/dog_1_eye8_TA_tex_txt: + addrs: [0x80829160, 0x80829260] + npc/tex/dog_1_mouth1_TA_tex_txt: + addrs: [0x80829260, 0x80829360] + npc/tex/dog_1_mouth2_TA_tex_txt: + addrs: [0x80829360, 0x80829460] + npc/tex/dog_1_mouth3_TA_tex_txt: + addrs: [0x80829460, 0x80829560] + npc/tex/dog_1_mouth4_TA_tex_txt: + addrs: [0x80829560, 0x80829660] + npc/tex/dog_1_mouth5_TA_tex_txt: + addrs: [0x80829660, 0x80829760] + npc/tex/dog_1_mouth6_TA_tex_txt: + addrs: [0x80829760, 0x80829860] + npc/tex/dog_1_tmem_txt: + addrs: [0x80829860, 0x80829C60] + npc/tex/dog_2_pal: + addrs: [0x80829C60, 0x80829C80] + type: pal16 + npc/tex/dog_2_eye1_TA_tex_txt: + addrs: [0x80829C80, 0x80829D80] + npc/tex/dog_2_eye2_TA_tex_txt: + addrs: [0x80829D80, 0x80829E80] + npc/tex/dog_2_eye3_TA_tex_txt: + addrs: [0x80829E80, 0x80829F80] + npc/tex/dog_2_eye4_TA_tex_txt: + addrs: [0x80829F80, 0x8082A080] + npc/tex/dog_2_eye5_TA_tex_txt: + addrs: [0x8082A080, 0x8082A180] + npc/tex/dog_2_eye6_TA_tex_txt: + addrs: [0x8082A180, 0x8082A280] + npc/tex/dog_2_eye7_TA_tex_txt: + addrs: [0x8082A280, 0x8082A380] + npc/tex/dog_2_eye8_TA_tex_txt: + addrs: [0x8082A380, 0x8082A480] + npc/tex/dog_2_mouth1_TA_tex_txt: + addrs: [0x8082A480, 0x8082A580] + npc/tex/dog_2_mouth2_TA_tex_txt: + addrs: [0x8082A580, 0x8082A680] + npc/tex/dog_2_mouth3_TA_tex_txt: + addrs: [0x8082A680, 0x8082A780] + npc/tex/dog_2_mouth4_TA_tex_txt: + addrs: [0x8082A780, 0x8082A880] + npc/tex/dog_2_mouth5_TA_tex_txt: + addrs: [0x8082A880, 0x8082A980] + npc/tex/dog_2_mouth6_TA_tex_txt: + addrs: [0x8082A980, 0x8082AA80] + npc/tex/dog_2_tmem_txt: + addrs: [0x8082AA80, 0x8082AE80] + npc/tex/dog_3_pal: + addrs: [0x8082AE80, 0x8082AEA0] + type: pal16 + npc/tex/dog_3_eye1_TA_tex_txt: + addrs: [0x8082AEA0, 0x8082AFA0] + npc/tex/dog_3_eye2_TA_tex_txt: + addrs: [0x8082AFA0, 0x8082B0A0] + npc/tex/dog_3_eye3_TA_tex_txt: + addrs: [0x8082B0A0, 0x8082B1A0] + npc/tex/dog_3_eye4_TA_tex_txt: + addrs: [0x8082B1A0, 0x8082B2A0] + npc/tex/dog_3_eye5_TA_tex_txt: + addrs: [0x8082B2A0, 0x8082B3A0] + npc/tex/dog_3_eye6_TA_tex_txt: + addrs: [0x8082B3A0, 0x8082B4A0] + npc/tex/dog_3_eye7_TA_tex_txt: + addrs: [0x8082B4A0, 0x8082B5A0] + npc/tex/dog_3_eye8_TA_tex_txt: + addrs: [0x8082B5A0, 0x8082B6A0] + npc/tex/dog_3_mouth1_TA_tex_txt: + addrs: [0x8082B6A0, 0x8082B7A0] + npc/tex/dog_3_mouth2_TA_tex_txt: + addrs: [0x8082B7A0, 0x8082B8A0] + npc/tex/dog_3_mouth3_TA_tex_txt: + addrs: [0x8082B8A0, 0x8082B9A0] + npc/tex/dog_3_mouth4_TA_tex_txt: + addrs: [0x8082B9A0, 0x8082BAA0] + npc/tex/dog_3_mouth5_TA_tex_txt: + addrs: [0x8082BAA0, 0x8082BBA0] + npc/tex/dog_3_mouth6_TA_tex_txt: + addrs: [0x8082BBA0, 0x8082BCA0] + npc/tex/dog_3_tmem_txt: + addrs: [0x8082BCA0, 0x8082C0A0] + npc/tex/dog_4_pal: + addrs: [0x8082C0A0, 0x8082C0C0] + type: pal16 + npc/tex/dog_4_eye1_TA_tex_txt: + addrs: [0x8082C0C0, 0x8082C1C0] + npc/tex/dog_4_eye2_TA_tex_txt: + addrs: [0x8082C1C0, 0x8082C2C0] + npc/tex/dog_4_eye3_TA_tex_txt: + addrs: [0x8082C2C0, 0x8082C3C0] + npc/tex/dog_4_eye4_TA_tex_txt: + addrs: [0x8082C3C0, 0x8082C4C0] + npc/tex/dog_4_eye5_TA_tex_txt: + addrs: [0x8082C4C0, 0x8082C5C0] + npc/tex/dog_4_eye6_TA_tex_txt: + addrs: [0x8082C5C0, 0x8082C6C0] + npc/tex/dog_4_eye7_TA_tex_txt: + addrs: [0x8082C6C0, 0x8082C7C0] + npc/tex/dog_4_eye8_TA_tex_txt: + addrs: [0x8082C7C0, 0x8082C8C0] + npc/tex/dog_4_mouth1_TA_tex_txt: + addrs: [0x8082C8C0, 0x8082C9C0] + npc/tex/dog_4_mouth2_TA_tex_txt: + addrs: [0x8082C9C0, 0x8082CAC0] + npc/tex/dog_4_mouth3_TA_tex_txt: + addrs: [0x8082CAC0, 0x8082CBC0] + npc/tex/dog_4_mouth4_TA_tex_txt: + addrs: [0x8082CBC0, 0x8082CCC0] + npc/tex/dog_4_mouth5_TA_tex_txt: + addrs: [0x8082CCC0, 0x8082CDC0] + npc/tex/dog_4_mouth6_TA_tex_txt: + addrs: [0x8082CDC0, 0x8082CEC0] + npc/tex/dog_4_tmem_txt: + addrs: [0x8082CEC0, 0x8082D2C0] + npc/tex/dog_5_pal: + addrs: [0x8082D2C0, 0x8082D2E0] + type: pal16 + npc/tex/dog_5_eye1_TA_tex_txt: + addrs: [0x8082D2E0, 0x8082D3E0] + npc/tex/dog_5_eye2_TA_tex_txt: + addrs: [0x8082D3E0, 0x8082D4E0] + npc/tex/dog_5_eye3_TA_tex_txt: + addrs: [0x8082D4E0, 0x8082D5E0] + npc/tex/dog_5_eye4_TA_tex_txt: + addrs: [0x8082D5E0, 0x8082D6E0] + npc/tex/dog_5_eye5_TA_tex_txt: + addrs: [0x8082D6E0, 0x8082D7E0] + npc/tex/dog_5_eye6_TA_tex_txt: + addrs: [0x8082D7E0, 0x8082D8E0] + npc/tex/dog_5_eye7_TA_tex_txt: + addrs: [0x8082D8E0, 0x8082D9E0] + npc/tex/dog_5_eye8_TA_tex_txt: + addrs: [0x8082D9E0, 0x8082DAE0] + npc/tex/dog_5_mouth1_TA_tex_txt: + addrs: [0x8082DAE0, 0x8082DBE0] + npc/tex/dog_5_mouth2_TA_tex_txt: + addrs: [0x8082DBE0, 0x8082DCE0] + npc/tex/dog_5_mouth3_TA_tex_txt: + addrs: [0x8082DCE0, 0x8082DDE0] + npc/tex/dog_5_mouth4_TA_tex_txt: + addrs: [0x8082DDE0, 0x8082DEE0] + npc/tex/dog_5_mouth5_TA_tex_txt: + addrs: [0x8082DEE0, 0x8082DFE0] + npc/tex/dog_5_mouth6_TA_tex_txt: + addrs: [0x8082DFE0, 0x8082E0E0] + npc/tex/dog_5_tmem_txt: + addrs: [0x8082E0E0, 0x8082E4E0] + npc/tex/dog_6_pal: + addrs: [0x8082E4E0, 0x8082E500] + type: pal16 + npc/tex/dog_6_eye1_TA_tex_txt: + addrs: [0x8082E500, 0x8082E600] + npc/tex/dog_6_eye2_TA_tex_txt: + addrs: [0x8082E600, 0x8082E700] + npc/tex/dog_6_eye3_TA_tex_txt: + addrs: [0x8082E700, 0x8082E800] + npc/tex/dog_6_eye4_TA_tex_txt: + addrs: [0x8082E800, 0x8082E900] + npc/tex/dog_6_eye5_TA_tex_txt: + addrs: [0x8082E900, 0x8082EA00] + npc/tex/dog_6_eye6_TA_tex_txt: + addrs: [0x8082EA00, 0x8082EB00] + npc/tex/dog_6_eye7_TA_tex_txt: + addrs: [0x8082EB00, 0x8082EC00] + npc/tex/dog_6_eye8_TA_tex_txt: + addrs: [0x8082EC00, 0x8082ED00] + npc/tex/dog_6_mouth1_TA_tex_txt: + addrs: [0x8082ED00, 0x8082EE00] + npc/tex/dog_6_mouth2_TA_tex_txt: + addrs: [0x8082EE00, 0x8082EF00] + npc/tex/dog_6_mouth3_TA_tex_txt: + addrs: [0x8082EF00, 0x8082F000] + npc/tex/dog_6_mouth4_TA_tex_txt: + addrs: [0x8082F000, 0x8082F100] + npc/tex/dog_6_mouth5_TA_tex_txt: + addrs: [0x8082F100, 0x8082F200] + npc/tex/dog_6_mouth6_TA_tex_txt: + addrs: [0x8082F200, 0x8082F300] + npc/tex/dog_6_tmem_txt: + addrs: [0x8082F300, 0x8082F700] + npc/tex/dog_7_pal: + addrs: [0x8082F700, 0x8082F720] + type: pal16 + npc/tex/dog_7_eye1_TA_tex_txt: + addrs: [0x8082F720, 0x8082F820] + npc/tex/dog_7_eye2_TA_tex_txt: + addrs: [0x8082F820, 0x8082F920] + npc/tex/dog_7_eye3_TA_tex_txt: + addrs: [0x8082F920, 0x8082FA20] + npc/tex/dog_7_eye4_TA_tex_txt: + addrs: [0x8082FA20, 0x8082FB20] + npc/tex/dog_7_eye5_TA_tex_txt: + addrs: [0x8082FB20, 0x8082FC20] + npc/tex/dog_7_eye6_TA_tex_txt: + addrs: [0x8082FC20, 0x8082FD20] + npc/tex/dog_7_eye7_TA_tex_txt: + addrs: [0x8082FD20, 0x8082FE20] + npc/tex/dog_7_eye8_TA_tex_txt: + addrs: [0x8082FE20, 0x8082FF20] + npc/tex/dog_7_mouth1_TA_tex_txt: + addrs: [0x8082FF20, 0x80830020] + npc/tex/dog_7_mouth2_TA_tex_txt: + addrs: [0x80830020, 0x80830120] + npc/tex/dog_7_mouth3_TA_tex_txt: + addrs: [0x80830120, 0x80830220] + npc/tex/dog_7_mouth4_TA_tex_txt: + addrs: [0x80830220, 0x80830320] + npc/tex/dog_7_mouth5_TA_tex_txt: + addrs: [0x80830320, 0x80830420] + npc/tex/dog_7_mouth6_TA_tex_txt: + addrs: [0x80830420, 0x80830520] + npc/tex/dog_7_tmem_txt: + addrs: [0x80830520, 0x80830920] + npc/tex/dog_8_pal: + addrs: [0x80830920, 0x80830940] + type: pal16 + npc/tex/dog_8_eye1_TA_tex_txt: + addrs: [0x80830940, 0x80830A40] + npc/tex/dog_8_eye2_TA_tex_txt: + addrs: [0x80830A40, 0x80830B40] + npc/tex/dog_8_eye3_TA_tex_txt: + addrs: [0x80830B40, 0x80830C40] + npc/tex/dog_8_eye4_TA_tex_txt: + addrs: [0x80830C40, 0x80830D40] + npc/tex/dog_8_eye5_TA_tex_txt: + addrs: [0x80830D40, 0x80830E40] + npc/tex/dog_8_eye6_TA_tex_txt: + addrs: [0x80830E40, 0x80830F40] + npc/tex/dog_8_eye7_TA_tex_txt: + addrs: [0x80830F40, 0x80831040] + npc/tex/dog_8_eye8_TA_tex_txt: + addrs: [0x80831040, 0x80831140] + npc/tex/dog_8_mouth1_TA_tex_txt: + addrs: [0x80831140, 0x80831240] + npc/tex/dog_8_mouth2_TA_tex_txt: + addrs: [0x80831240, 0x80831340] + npc/tex/dog_8_mouth3_TA_tex_txt: + addrs: [0x80831340, 0x80831440] + npc/tex/dog_8_mouth4_TA_tex_txt: + addrs: [0x80831440, 0x80831540] + npc/tex/dog_8_mouth5_TA_tex_txt: + addrs: [0x80831540, 0x80831640] + npc/tex/dog_8_mouth6_TA_tex_txt: + addrs: [0x80831640, 0x80831740] + npc/tex/dog_8_tmem_txt: + addrs: [0x80831740, 0x80831B40] + npc/tex/dog_9_pal: + addrs: [0x80831B40, 0x80831B60] + type: pal16 + npc/tex/dog_9_eye1_TA_tex_txt: + addrs: [0x80831B60, 0x80831C60] + npc/tex/dog_9_eye2_TA_tex_txt: + addrs: [0x80831C60, 0x80831D60] + npc/tex/dog_9_eye3_TA_tex_txt: + addrs: [0x80831D60, 0x80831E60] + npc/tex/dog_9_eye4_TA_tex_txt: + addrs: [0x80831E60, 0x80831F60] + npc/tex/dog_9_eye5_TA_tex_txt: + addrs: [0x80831F60, 0x80832060] + npc/tex/dog_9_eye6_TA_tex_txt: + addrs: [0x80832060, 0x80832160] + npc/tex/dog_9_eye7_TA_tex_txt: + addrs: [0x80832160, 0x80832260] + npc/tex/dog_9_eye8_TA_tex_txt: + addrs: [0x80832260, 0x80832360] + npc/tex/dog_9_mouth1_TA_tex_txt: + addrs: [0x80832360, 0x80832460] + npc/tex/dog_9_mouth2_TA_tex_txt: + addrs: [0x80832460, 0x80832560] + npc/tex/dog_9_mouth3_TA_tex_txt: + addrs: [0x80832560, 0x80832660] + npc/tex/dog_9_mouth4_TA_tex_txt: + addrs: [0x80832660, 0x80832760] + npc/tex/dog_9_mouth5_TA_tex_txt: + addrs: [0x80832760, 0x80832860] + npc/tex/dog_9_mouth6_TA_tex_txt: + addrs: [0x80832860, 0x80832960] + npc/tex/dog_9_tmem_txt: + addrs: [0x80832960, 0x80832D60] + npc/tex/dog_10_pal: + addrs: [0x80832D60, 0x80832D80] + type: pal16 + npc/tex/dog_10_eye1_TA_tex_txt: + addrs: [0x80832D80, 0x80832E80] + npc/tex/dog_10_eye2_TA_tex_txt: + addrs: [0x80832E80, 0x80832F80] + npc/tex/dog_10_eye3_TA_tex_txt: + addrs: [0x80832F80, 0x80833080] + npc/tex/dog_10_eye4_TA_tex_txt: + addrs: [0x80833080, 0x80833180] + npc/tex/dog_10_eye5_TA_tex_txt: + addrs: [0x80833180, 0x80833280] + npc/tex/dog_10_eye6_TA_tex_txt: + addrs: [0x80833280, 0x80833380] + npc/tex/dog_10_eye7_TA_tex_txt: + addrs: [0x80833380, 0x80833480] + npc/tex/dog_10_eye8_TA_tex_txt: + addrs: [0x80833480, 0x80833580] + npc/tex/dog_10_mouth1_TA_tex_txt: + addrs: [0x80833580, 0x80833680] + npc/tex/dog_10_mouth2_TA_tex_txt: + addrs: [0x80833680, 0x80833780] + npc/tex/dog_10_mouth3_TA_tex_txt: + addrs: [0x80833780, 0x80833880] + npc/tex/dog_10_mouth4_TA_tex_txt: + addrs: [0x80833880, 0x80833980] + npc/tex/dog_10_mouth5_TA_tex_txt: + addrs: [0x80833980, 0x80833A80] + npc/tex/dog_10_mouth6_TA_tex_txt: + addrs: [0x80833A80, 0x80833B80] + npc/tex/dog_10_tmem_txt: + addrs: [0x80833B80, 0x80833F80] + npc/mdl/seg_1_v: + addrs: [0x80833F80, 0x808357E0] + type: vtx + npc/tex/seg_1_pal: + addrs: [0x80836300, 0x80836320] + type: pal16 + npc/tex/seg_1_eye1_TA_tex_txt: + addrs: [0x80836320, 0x80836420] + npc/tex/seg_1_eye2_TA_tex_txt: + addrs: [0x80836420, 0x80836520] + npc/tex/seg_1_eye3_TA_tex_txt: + addrs: [0x80836520, 0x80836620] + npc/tex/seg_1_eye4_TA_tex_txt: + addrs: [0x80836620, 0x80836720] + npc/tex/seg_1_eye5_TA_tex_txt: + addrs: [0x80836720, 0x80836820] + npc/tex/seg_1_eye6_TA_tex_txt: + addrs: [0x80836820, 0x80836920] + npc/tex/seg_1_eye7_TA_tex_txt: + addrs: [0x80836920, 0x80836A20] + npc/tex/seg_1_eye8_TA_tex_txt: + addrs: [0x80836A20, 0x80836B20] + npc/tex/seg_1_tmem_txt: + addrs: [0x80836B20, 0x80837160] + npc/mdl/duk_1_v: + addrs: [0x80837160, 0x808386E0] + type: vtx + npc/tex/duk_1_pal: + addrs: [0x80839080, 0x808390A0] + type: pal16 + npc/tex/duk_1_eye1_TA_tex_txt: + addrs: [0x808390A0, 0x808391A0] + npc/tex/duk_1_eye2_TA_tex_txt: + addrs: [0x808391A0, 0x808392A0] + npc/tex/duk_1_eye3_TA_tex_txt: + addrs: [0x808392A0, 0x808393A0] + npc/tex/duk_1_eye4_TA_tex_txt: + addrs: [0x808393A0, 0x808394A0] + npc/tex/duk_1_eye5_TA_tex_txt: + addrs: [0x808394A0, 0x808395A0] + npc/tex/duk_1_eye6_TA_tex_txt: + addrs: [0x808395A0, 0x808396A0] + npc/tex/duk_1_eye7_TA_tex_txt: + addrs: [0x808396A0, 0x808397A0] + npc/tex/duk_1_eye8_TA_tex_txt: + addrs: [0x808397A0, 0x808398A0] + npc/tex/duk_1_mouth1_TA_tex_txt: + addrs: [0x808398A0, 0x808399A0] + npc/tex/duk_1_mouth2_TA_tex_txt: + addrs: [0x808399A0, 0x80839AA0] + npc/tex/duk_1_mouth3_TA_tex_txt: + addrs: [0x80839AA0, 0x80839BA0] + npc/tex/duk_1_mouth4_TA_tex_txt: + addrs: [0x80839BA0, 0x80839CA0] + npc/tex/duk_1_mouth5_TA_tex_txt: + addrs: [0x80839CA0, 0x80839DA0] + npc/tex/duk_1_mouth6_TA_tex_txt: + addrs: [0x80839DA0, 0x80839EA0] + npc/tex/duk_1_tmem_txt: + addrs: [0x80839EA0, 0x8083A2A0] + npc/tex/duk_2_pal: + addrs: [0x8083A2A0, 0x8083A2C0] + type: pal16 + npc/tex/duk_2_eye1_TA_tex_txt: + addrs: [0x8083A2C0, 0x8083A3C0] + npc/tex/duk_2_eye2_TA_tex_txt: + addrs: [0x8083A3C0, 0x8083A4C0] + npc/tex/duk_2_eye3_TA_tex_txt: + addrs: [0x8083A4C0, 0x8083A5C0] + npc/tex/duk_2_eye4_TA_tex_txt: + addrs: [0x8083A5C0, 0x8083A6C0] + npc/tex/duk_2_eye5_TA_tex_txt: + addrs: [0x8083A6C0, 0x8083A7C0] + npc/tex/duk_2_eye6_TA_tex_txt: + addrs: [0x8083A7C0, 0x8083A8C0] + npc/tex/duk_2_eye7_TA_tex_txt: + addrs: [0x8083A8C0, 0x8083A9C0] + npc/tex/duk_2_eye8_TA_tex_txt: + addrs: [0x8083A9C0, 0x8083AAC0] + npc/tex/duk_2_mouth1_TA_tex_txt: + addrs: [0x8083AAC0, 0x8083ABC0] + npc/tex/duk_2_mouth2_TA_tex_txt: + addrs: [0x8083ABC0, 0x8083ACC0] + npc/tex/duk_2_mouth3_TA_tex_txt: + addrs: [0x8083ACC0, 0x8083ADC0] + npc/tex/duk_2_mouth4_TA_tex_txt: + addrs: [0x8083ADC0, 0x8083AEC0] + npc/tex/duk_2_mouth5_TA_tex_txt: + addrs: [0x8083AEC0, 0x8083AFC0] + npc/tex/duk_2_mouth6_TA_tex_txt: + addrs: [0x8083AFC0, 0x8083B0C0] + npc/tex/duk_2_tmem_txt: + addrs: [0x8083B0C0, 0x8083B4C0] + npc/tex/duk_11_pal: + addrs: [0x8083B4C0, 0x8083B4E0] + type: pal16 + npc/tex/duk_11_eye1_TA_tex_txt: + addrs: [0x8083B4E0, 0x8083B5E0] + npc/tex/duk_11_eye2_TA_tex_txt: + addrs: [0x8083B5E0, 0x8083B6E0] + npc/tex/duk_11_eye3_TA_tex_txt: + addrs: [0x8083B6E0, 0x8083B7E0] + npc/tex/duk_11_eye4_TA_tex_txt: + addrs: [0x8083B7E0, 0x8083B8E0] + npc/tex/duk_11_eye5_TA_tex_txt: + addrs: [0x8083B8E0, 0x8083B9E0] + npc/tex/duk_11_eye6_TA_tex_txt: + addrs: [0x8083B9E0, 0x8083BAE0] + npc/tex/duk_11_eye7_TA_tex_txt: + addrs: [0x8083BAE0, 0x8083BBE0] + npc/tex/duk_11_eye8_TA_tex_txt: + addrs: [0x8083BBE0, 0x8083BCE0] + npc/tex/duk_11_mouth1_TA_tex_txt: + addrs: [0x8083BCE0, 0x8083BDE0] + npc/tex/duk_11_mouth2_TA_tex_txt: + addrs: [0x8083BDE0, 0x8083BEE0] + npc/tex/duk_11_mouth3_TA_tex_txt: + addrs: [0x8083BEE0, 0x8083BFE0] + npc/tex/duk_11_mouth4_TA_tex_txt: + addrs: [0x8083BFE0, 0x8083C0E0] + npc/tex/duk_11_mouth5_TA_tex_txt: + addrs: [0x8083C0E0, 0x8083C1E0] + npc/tex/duk_11_mouth6_TA_tex_txt: + addrs: [0x8083C1E0, 0x8083C2E0] + npc/tex/duk_11_tmem_txt: + addrs: [0x8083C2E0, 0x8083C6E0] + npc/tex/duk_3_pal: + addrs: [0x8083C6E0, 0x8083C700] + type: pal16 + npc/tex/duk_3_eye1_TA_tex_txt: + addrs: [0x8083C700, 0x8083C800] + npc/tex/duk_3_eye2_TA_tex_txt: + addrs: [0x8083C800, 0x8083C900] + npc/tex/duk_3_eye3_TA_tex_txt: + addrs: [0x8083C900, 0x8083CA00] + npc/tex/duk_3_eye4_TA_tex_txt: + addrs: [0x8083CA00, 0x8083CB00] + npc/tex/duk_3_eye5_TA_tex_txt: + addrs: [0x8083CB00, 0x8083CC00] + npc/tex/duk_3_eye6_TA_tex_txt: + addrs: [0x8083CC00, 0x8083CD00] + npc/tex/duk_3_eye7_TA_tex_txt: + addrs: [0x8083CD00, 0x8083CE00] + npc/tex/duk_3_eye8_TA_tex_txt: + addrs: [0x8083CE00, 0x8083CF00] + npc/tex/duk_3_mouth1_TA_tex_txt: + addrs: [0x8083CF00, 0x8083D000] + npc/tex/duk_3_mouth2_TA_tex_txt: + addrs: [0x8083D000, 0x8083D100] + npc/tex/duk_3_mouth3_TA_tex_txt: + addrs: [0x8083D100, 0x8083D200] + npc/tex/duk_3_mouth4_TA_tex_txt: + addrs: [0x8083D200, 0x8083D300] + npc/tex/duk_3_mouth5_TA_tex_txt: + addrs: [0x8083D300, 0x8083D400] + npc/tex/duk_3_mouth6_TA_tex_txt: + addrs: [0x8083D400, 0x8083D500] + npc/tex/duk_3_tmem_txt: + addrs: [0x8083D500, 0x8083D900] + npc/tex/duk_4_pal: + addrs: [0x8083D900, 0x8083D920] + type: pal16 + npc/tex/duk_4_eye1_TA_tex_txt: + addrs: [0x8083D920, 0x8083DA20] + npc/tex/duk_4_eye2_TA_tex_txt: + addrs: [0x8083DA20, 0x8083DB20] + npc/tex/duk_4_eye3_TA_tex_txt: + addrs: [0x8083DB20, 0x8083DC20] + npc/tex/duk_4_eye4_TA_tex_txt: + addrs: [0x8083DC20, 0x8083DD20] + npc/tex/duk_4_eye5_TA_tex_txt: + addrs: [0x8083DD20, 0x8083DE20] + npc/tex/duk_4_eye6_TA_tex_txt: + addrs: [0x8083DE20, 0x8083DF20] + npc/tex/duk_4_eye7_TA_tex_txt: + addrs: [0x8083DF20, 0x8083E020] + npc/tex/duk_4_eye8_TA_tex_txt: + addrs: [0x8083E020, 0x8083E120] + npc/tex/duk_4_mouth1_TA_tex_txt: + addrs: [0x8083E120, 0x8083E220] + npc/tex/duk_4_mouth2_TA_tex_txt: + addrs: [0x8083E220, 0x8083E320] + npc/tex/duk_4_mouth3_TA_tex_txt: + addrs: [0x8083E320, 0x8083E420] + npc/tex/duk_4_mouth4_TA_tex_txt: + addrs: [0x8083E420, 0x8083E520] + npc/tex/duk_4_mouth5_TA_tex_txt: + addrs: [0x8083E520, 0x8083E620] + npc/tex/duk_4_mouth6_TA_tex_txt: + addrs: [0x8083E620, 0x8083E720] + npc/tex/duk_4_tmem_txt: + addrs: [0x8083E720, 0x8083EB20] + npc/tex/duk_5_pal: + addrs: [0x8083EB20, 0x8083EB40] + type: pal16 + npc/tex/duk_5_eye1_TA_tex_txt: + addrs: [0x8083EB40, 0x8083EC40] + npc/tex/duk_5_eye2_TA_tex_txt: + addrs: [0x8083EC40, 0x8083ED40] + npc/tex/duk_5_eye3_TA_tex_txt: + addrs: [0x8083ED40, 0x8083EE40] + npc/tex/duk_5_eye4_TA_tex_txt: + addrs: [0x8083EE40, 0x8083EF40] + npc/tex/duk_5_eye5_TA_tex_txt: + addrs: [0x8083EF40, 0x8083F040] + npc/tex/duk_5_eye6_TA_tex_txt: + addrs: [0x8083F040, 0x8083F140] + npc/tex/duk_5_eye7_TA_tex_txt: + addrs: [0x8083F140, 0x8083F240] + npc/tex/duk_5_eye8_TA_tex_txt: + addrs: [0x8083F240, 0x8083F340] + npc/tex/duk_5_mouth1_TA_tex_txt: + addrs: [0x8083F340, 0x8083F440] + npc/tex/duk_5_mouth2_TA_tex_txt: + addrs: [0x8083F440, 0x8083F540] + npc/tex/duk_5_mouth3_TA_tex_txt: + addrs: [0x8083F540, 0x8083F640] + npc/tex/duk_5_mouth4_TA_tex_txt: + addrs: [0x8083F640, 0x8083F740] + npc/tex/duk_5_mouth5_TA_tex_txt: + addrs: [0x8083F740, 0x8083F840] + npc/tex/duk_5_mouth6_TA_tex_txt: + addrs: [0x8083F840, 0x8083F940] + npc/tex/duk_5_tmem_txt: + addrs: [0x8083F940, 0x8083FD40] + npc/tex/duk_6_pal: + addrs: [0x8083FD40, 0x8083FD60] + type: pal16 + npc/tex/duk_6_eye1_TA_tex_txt: + addrs: [0x8083FD60, 0x8083FE60] + npc/tex/duk_6_eye2_TA_tex_txt: + addrs: [0x8083FE60, 0x8083FF60] + npc/tex/duk_6_eye3_TA_tex_txt: + addrs: [0x8083FF60, 0x80840060] + npc/tex/duk_6_eye4_TA_tex_txt: + addrs: [0x80840060, 0x80840160] + npc/tex/duk_6_eye5_TA_tex_txt: + addrs: [0x80840160, 0x80840260] + npc/tex/duk_6_eye6_TA_tex_txt: + addrs: [0x80840260, 0x80840360] + npc/tex/duk_6_eye7_TA_tex_txt: + addrs: [0x80840360, 0x80840460] + npc/tex/duk_6_eye8_TA_tex_txt: + addrs: [0x80840460, 0x80840560] + npc/tex/duk_6_mouth1_TA_tex_txt: + addrs: [0x80840560, 0x80840660] + npc/tex/duk_6_mouth2_TA_tex_txt: + addrs: [0x80840660, 0x80840760] + npc/tex/duk_6_mouth3_TA_tex_txt: + addrs: [0x80840760, 0x80840860] + npc/tex/duk_6_mouth4_TA_tex_txt: + addrs: [0x80840860, 0x80840960] + npc/tex/duk_6_mouth5_TA_tex_txt: + addrs: [0x80840960, 0x80840A60] + npc/tex/duk_6_mouth6_TA_tex_txt: + addrs: [0x80840A60, 0x80840B60] + npc/tex/duk_6_tmem_txt: + addrs: [0x80840B60, 0x80840F60] + npc/tex/duk_7_pal: + addrs: [0x80840F60, 0x80840F80] + type: pal16 + npc/tex/duk_7_eye1_TA_tex_txt: + addrs: [0x80840F80, 0x80841080] + npc/tex/duk_7_eye2_TA_tex_txt: + addrs: [0x80841080, 0x80841180] + npc/tex/duk_7_eye3_TA_tex_txt: + addrs: [0x80841180, 0x80841280] + npc/tex/duk_7_eye4_TA_tex_txt: + addrs: [0x80841280, 0x80841380] + npc/tex/duk_7_eye5_TA_tex_txt: + addrs: [0x80841380, 0x80841480] + npc/tex/duk_7_eye6_TA_tex_txt: + addrs: [0x80841480, 0x80841580] + npc/tex/duk_7_eye7_TA_tex_txt: + addrs: [0x80841580, 0x80841680] + npc/tex/duk_7_eye8_TA_tex_txt: + addrs: [0x80841680, 0x80841780] + npc/tex/duk_7_mouth1_TA_tex_txt: + addrs: [0x80841780, 0x80841880] + npc/tex/duk_7_mouth2_TA_tex_txt: + addrs: [0x80841880, 0x80841980] + npc/tex/duk_7_mouth3_TA_tex_txt: + addrs: [0x80841980, 0x80841A80] + npc/tex/duk_7_mouth4_TA_tex_txt: + addrs: [0x80841A80, 0x80841B80] + npc/tex/duk_7_mouth5_TA_tex_txt: + addrs: [0x80841B80, 0x80841C80] + npc/tex/duk_7_mouth6_TA_tex_txt: + addrs: [0x80841C80, 0x80841D80] + npc/tex/duk_7_tmem_txt: + addrs: [0x80841D80, 0x80842180] + npc/tex/duk_8_pal: + addrs: [0x80842180, 0x808421A0] + type: pal16 + npc/tex/duk_8_eye1_TA_tex_txt: + addrs: [0x808421A0, 0x808422A0] + npc/tex/duk_8_eye2_TA_tex_txt: + addrs: [0x808422A0, 0x808423A0] + npc/tex/duk_8_eye3_TA_tex_txt: + addrs: [0x808423A0, 0x808424A0] + npc/tex/duk_8_eye4_TA_tex_txt: + addrs: [0x808424A0, 0x808425A0] + npc/tex/duk_8_eye5_TA_tex_txt: + addrs: [0x808425A0, 0x808426A0] + npc/tex/duk_8_eye6_TA_tex_txt: + addrs: [0x808426A0, 0x808427A0] + npc/tex/duk_8_eye7_TA_tex_txt: + addrs: [0x808427A0, 0x808428A0] + npc/tex/duk_8_eye8_TA_tex_txt: + addrs: [0x808428A0, 0x808429A0] + npc/tex/duk_8_mouth1_TA_tex_txt: + addrs: [0x808429A0, 0x80842AA0] + npc/tex/duk_8_mouth2_TA_tex_txt: + addrs: [0x80842AA0, 0x80842BA0] + npc/tex/duk_8_mouth3_TA_tex_txt: + addrs: [0x80842BA0, 0x80842CA0] + npc/tex/duk_8_mouth4_TA_tex_txt: + addrs: [0x80842CA0, 0x80842DA0] + npc/tex/duk_8_mouth5_TA_tex_txt: + addrs: [0x80842DA0, 0x80842EA0] + npc/tex/duk_8_mouth6_TA_tex_txt: + addrs: [0x80842EA0, 0x80842FA0] + npc/tex/duk_8_tmem_txt: + addrs: [0x80842FA0, 0x808433A0] + npc/tex/duk_9_pal: + addrs: [0x808433A0, 0x808433C0] + type: pal16 + npc/tex/duk_9_eye1_TA_tex_txt: + addrs: [0x808433C0, 0x808434C0] + npc/tex/duk_9_eye2_TA_tex_txt: + addrs: [0x808434C0, 0x808435C0] + npc/tex/duk_9_eye3_TA_tex_txt: + addrs: [0x808435C0, 0x808436C0] + npc/tex/duk_9_eye4_TA_tex_txt: + addrs: [0x808436C0, 0x808437C0] + npc/tex/duk_9_eye5_TA_tex_txt: + addrs: [0x808437C0, 0x808438C0] + npc/tex/duk_9_eye6_TA_tex_txt: + addrs: [0x808438C0, 0x808439C0] + npc/tex/duk_9_eye7_TA_tex_txt: + addrs: [0x808439C0, 0x80843AC0] + npc/tex/duk_9_eye8_TA_tex_txt: + addrs: [0x80843AC0, 0x80843BC0] + npc/tex/duk_9_mouth1_TA_tex_txt: + addrs: [0x80843BC0, 0x80843CC0] + npc/tex/duk_9_mouth2_TA_tex_txt: + addrs: [0x80843CC0, 0x80843DC0] + npc/tex/duk_9_mouth3_TA_tex_txt: + addrs: [0x80843DC0, 0x80843EC0] + npc/tex/duk_9_mouth4_TA_tex_txt: + addrs: [0x80843EC0, 0x80843FC0] + npc/tex/duk_9_mouth5_TA_tex_txt: + addrs: [0x80843FC0, 0x808440C0] + npc/tex/duk_9_mouth6_TA_tex_txt: + addrs: [0x808440C0, 0x808441C0] + npc/tex/duk_9_tmem_txt: + addrs: [0x808441C0, 0x808445C0] + npc/tex/duk_10_pal: + addrs: [0x808445C0, 0x808445E0] + type: pal16 + npc/tex/duk_10_eye1_TA_tex_txt: + addrs: [0x808445E0, 0x808446E0] + npc/tex/duk_10_eye2_TA_tex_txt: + addrs: [0x808446E0, 0x808447E0] + npc/tex/duk_10_eye3_TA_tex_txt: + addrs: [0x808447E0, 0x808448E0] + npc/tex/duk_10_eye4_TA_tex_txt: + addrs: [0x808448E0, 0x808449E0] + npc/tex/duk_10_eye5_TA_tex_txt: + addrs: [0x808449E0, 0x80844AE0] + npc/tex/duk_10_eye6_TA_tex_txt: + addrs: [0x80844AE0, 0x80844BE0] + npc/tex/duk_10_eye7_TA_tex_txt: + addrs: [0x80844BE0, 0x80844CE0] + npc/tex/duk_10_eye8_TA_tex_txt: + addrs: [0x80844CE0, 0x80844DE0] + npc/tex/duk_10_mouth1_TA_tex_txt: + addrs: [0x80844DE0, 0x80844EE0] + npc/tex/duk_10_mouth2_TA_tex_txt: + addrs: [0x80844EE0, 0x80844FE0] + npc/tex/duk_10_mouth3_TA_tex_txt: + addrs: [0x80844FE0, 0x808450E0] + npc/tex/duk_10_mouth4_TA_tex_txt: + addrs: [0x808450E0, 0x808451E0] + npc/tex/duk_10_mouth5_TA_tex_txt: + addrs: [0x808451E0, 0x808452E0] + npc/tex/duk_10_mouth6_TA_tex_txt: + addrs: [0x808452E0, 0x808453E0] + npc/tex/duk_10_tmem_txt: + addrs: [0x808453E0, 0x808457E0] + npc/mdl/elp_1_v: + addrs: [0x80845830, 0x80846FF0] + type: vtx + npc/tex/elp_1_pal: + addrs: [0x808479A0, 0x808479C0] + type: pal16 + npc/tex/elp_1_eye1_TA_tex_txt: + addrs: [0x808479C0, 0x80847AC0] + npc/tex/elp_1_eye2_TA_tex_txt: + addrs: [0x80847AC0, 0x80847BC0] + npc/tex/elp_1_eye3_TA_tex_txt: + addrs: [0x80847BC0, 0x80847CC0] + npc/tex/elp_1_eye4_TA_tex_txt: + addrs: [0x80847CC0, 0x80847DC0] + npc/tex/elp_1_eye5_TA_tex_txt: + addrs: [0x80847DC0, 0x80847EC0] + npc/tex/elp_1_eye6_TA_tex_txt: + addrs: [0x80847EC0, 0x80847FC0] + npc/tex/elp_1_eye7_TA_tex_txt: + addrs: [0x80847FC0, 0x808480C0] + npc/tex/elp_1_eye8_TA_tex_txt: + addrs: [0x808480C0, 0x808481C0] + npc/tex/elp_1_mouth1_TA_tex_txt: + addrs: [0x808481C0, 0x808482C0] + npc/tex/elp_1_mouth2_TA_tex_txt: + addrs: [0x808482C0, 0x808483C0] + npc/tex/elp_1_mouth3_TA_tex_txt: + addrs: [0x808483C0, 0x808484C0] + npc/tex/elp_1_mouth4_TA_tex_txt: + addrs: [0x808484C0, 0x808485C0] + npc/tex/elp_1_mouth5_TA_tex_txt: + addrs: [0x808485C0, 0x808486C0] + npc/tex/elp_1_mouth6_TA_tex_txt: + addrs: [0x808486C0, 0x808487C0] + npc/tex/elp_1_tmem_txt: + addrs: [0x808487C0, 0x80848BC0] + npc/tex/elp_2_pal: + addrs: [0x80848BC0, 0x80848BE0] + type: pal16 + npc/tex/elp_2_eye1_TA_tex_txt: + addrs: [0x80848BE0, 0x80848CE0] + npc/tex/elp_2_eye2_TA_tex_txt: + addrs: [0x80848CE0, 0x80848DE0] + npc/tex/elp_2_eye3_TA_tex_txt: + addrs: [0x80848DE0, 0x80848EE0] + npc/tex/elp_2_eye4_TA_tex_txt: + addrs: [0x80848EE0, 0x80848FE0] + npc/tex/elp_2_eye5_TA_tex_txt: + addrs: [0x80848FE0, 0x808490E0] + npc/tex/elp_2_eye6_TA_tex_txt: + addrs: [0x808490E0, 0x808491E0] + npc/tex/elp_2_eye7_TA_tex_txt: + addrs: [0x808491E0, 0x808492E0] + npc/tex/elp_2_eye8_TA_tex_txt: + addrs: [0x808492E0, 0x808493E0] + npc/tex/elp_2_mouth1_TA_tex_txt: + addrs: [0x808493E0, 0x808494E0] + npc/tex/elp_2_mouth2_TA_tex_txt: + addrs: [0x808494E0, 0x808495E0] + npc/tex/elp_2_mouth3_TA_tex_txt: + addrs: [0x808495E0, 0x808496E0] + npc/tex/elp_2_mouth4_TA_tex_txt: + addrs: [0x808496E0, 0x808497E0] + npc/tex/elp_2_mouth5_TA_tex_txt: + addrs: [0x808497E0, 0x808498E0] + npc/tex/elp_2_mouth6_TA_tex_txt: + addrs: [0x808498E0, 0x808499E0] + npc/tex/elp_2_tmem_txt: + addrs: [0x808499E0, 0x80849DE0] + npc/tex/elp_3_pal: + addrs: [0x80849DE0, 0x80849E00] + type: pal16 + npc/tex/elp_3_eye1_TA_tex_txt: + addrs: [0x80849E00, 0x80849F00] + npc/tex/elp_3_eye2_TA_tex_txt: + addrs: [0x80849F00, 0x8084A000] + npc/tex/elp_3_eye3_TA_tex_txt: + addrs: [0x8084A000, 0x8084A100] + npc/tex/elp_3_eye4_TA_tex_txt: + addrs: [0x8084A100, 0x8084A200] + npc/tex/elp_3_eye5_TA_tex_txt: + addrs: [0x8084A200, 0x8084A300] + npc/tex/elp_3_eye6_TA_tex_txt: + addrs: [0x8084A300, 0x8084A400] + npc/tex/elp_3_eye7_TA_tex_txt: + addrs: [0x8084A400, 0x8084A500] + npc/tex/elp_3_eye8_TA_tex_txt: + addrs: [0x8084A500, 0x8084A600] + npc/tex/elp_3_mouth1_TA_tex_txt: + addrs: [0x8084A600, 0x8084A700] + npc/tex/elp_3_mouth2_TA_tex_txt: + addrs: [0x8084A700, 0x8084A800] + npc/tex/elp_3_mouth3_TA_tex_txt: + addrs: [0x8084A800, 0x8084A900] + npc/tex/elp_3_mouth4_TA_tex_txt: + addrs: [0x8084A900, 0x8084AA00] + npc/tex/elp_3_mouth5_TA_tex_txt: + addrs: [0x8084AA00, 0x8084AB00] + npc/tex/elp_3_mouth6_TA_tex_txt: + addrs: [0x8084AB00, 0x8084AC00] + npc/tex/elp_3_tmem_txt: + addrs: [0x8084AC00, 0x8084B000] + npc/tex/elp_4_pal: + addrs: [0x8084B000, 0x8084B020] + type: pal16 + npc/tex/elp_4_eye1_TA_tex_txt: + addrs: [0x8084B020, 0x8084B120] + npc/tex/elp_4_eye2_TA_tex_txt: + addrs: [0x8084B120, 0x8084B220] + npc/tex/elp_4_eye3_TA_tex_txt: + addrs: [0x8084B220, 0x8084B320] + npc/tex/elp_4_eye4_TA_tex_txt: + addrs: [0x8084B320, 0x8084B420] + npc/tex/elp_4_eye5_TA_tex_txt: + addrs: [0x8084B420, 0x8084B520] + npc/tex/elp_4_eye6_TA_tex_txt: + addrs: [0x8084B520, 0x8084B620] + npc/tex/elp_4_eye7_TA_tex_txt: + addrs: [0x8084B620, 0x8084B720] + npc/tex/elp_4_eye8_TA_tex_txt: + addrs: [0x8084B720, 0x8084B820] + npc/tex/elp_4_mouth1_TA_tex_txt: + addrs: [0x8084B820, 0x8084B920] + npc/tex/elp_4_mouth2_TA_tex_txt: + addrs: [0x8084B920, 0x8084BA20] + npc/tex/elp_4_mouth3_TA_tex_txt: + addrs: [0x8084BA20, 0x8084BB20] + npc/tex/elp_4_mouth4_TA_tex_txt: + addrs: [0x8084BB20, 0x8084BC20] + npc/tex/elp_4_mouth5_TA_tex_txt: + addrs: [0x8084BC20, 0x8084BD20] + npc/tex/elp_4_mouth6_TA_tex_txt: + addrs: [0x8084BD20, 0x8084BE20] + npc/tex/elp_4_tmem_txt: + addrs: [0x8084BE20, 0x8084C220] + npc/tex/elp_5_pal: + addrs: [0x8084C220, 0x8084C240] + type: pal16 + npc/tex/elp_5_eye1_TA_tex_txt: + addrs: [0x8084C240, 0x8084C340] + npc/tex/elp_5_eye2_TA_tex_txt: + addrs: [0x8084C340, 0x8084C440] + npc/tex/elp_5_eye3_TA_tex_txt: + addrs: [0x8084C440, 0x8084C540] + npc/tex/elp_5_eye4_TA_tex_txt: + addrs: [0x8084C540, 0x8084C640] + npc/tex/elp_5_eye5_TA_tex_txt: + addrs: [0x8084C640, 0x8084C740] + npc/tex/elp_5_eye6_TA_tex_txt: + addrs: [0x8084C740, 0x8084C840] + npc/tex/elp_5_eye7_TA_tex_txt: + addrs: [0x8084C840, 0x8084C940] + npc/tex/elp_5_eye8_TA_tex_txt: + addrs: [0x8084C940, 0x8084CA40] + npc/tex/elp_5_mouth1_TA_tex_txt: + addrs: [0x8084CA40, 0x8084CB40] + npc/tex/elp_5_mouth2_TA_tex_txt: + addrs: [0x8084CB40, 0x8084CC40] + npc/tex/elp_5_mouth3_TA_tex_txt: + addrs: [0x8084CC40, 0x8084CD40] + npc/tex/elp_5_mouth4_TA_tex_txt: + addrs: [0x8084CD40, 0x8084CE40] + npc/tex/elp_5_mouth5_TA_tex_txt: + addrs: [0x8084CE40, 0x8084CF40] + npc/tex/elp_5_mouth6_TA_tex_txt: + addrs: [0x8084CF40, 0x8084D040] + npc/tex/elp_5_tmem_txt: + addrs: [0x8084D040, 0x8084D440] + npc/tex/elp_6_pal: + addrs: [0x8084D440, 0x8084D460] + type: pal16 + npc/tex/elp_6_eye1_TA_tex_txt: + addrs: [0x8084D460, 0x8084D560] + npc/tex/elp_6_eye2_TA_tex_txt: + addrs: [0x8084D560, 0x8084D660] + npc/tex/elp_6_eye3_TA_tex_txt: + addrs: [0x8084D660, 0x8084D760] + npc/tex/elp_6_eye4_TA_tex_txt: + addrs: [0x8084D760, 0x8084D860] + npc/tex/elp_6_eye5_TA_tex_txt: + addrs: [0x8084D860, 0x8084D960] + npc/tex/elp_6_eye6_TA_tex_txt: + addrs: [0x8084D960, 0x8084DA60] + npc/tex/elp_6_eye7_TA_tex_txt: + addrs: [0x8084DA60, 0x8084DB60] + npc/tex/elp_6_eye8_TA_tex_txt: + addrs: [0x8084DB60, 0x8084DC60] + npc/tex/elp_6_mouth1_TA_tex_txt: + addrs: [0x8084DC60, 0x8084DD60] + npc/tex/elp_6_mouth2_TA_tex_txt: + addrs: [0x8084DD60, 0x8084DE60] + npc/tex/elp_6_mouth3_TA_tex_txt: + addrs: [0x8084DE60, 0x8084DF60] + npc/tex/elp_6_mouth4_TA_tex_txt: + addrs: [0x8084DF60, 0x8084E060] + npc/tex/elp_6_mouth5_TA_tex_txt: + addrs: [0x8084E060, 0x8084E160] + npc/tex/elp_6_mouth6_TA_tex_txt: + addrs: [0x8084E160, 0x8084E260] + npc/tex/elp_6_tmem_txt: + addrs: [0x8084E260, 0x8084E660] + npc/tex/elp_7_pal: + addrs: [0x8084E660, 0x8084E680] + type: pal16 + npc/tex/elp_7_eye1_TA_tex_txt: + addrs: [0x8084E680, 0x8084E780] + npc/tex/elp_7_eye2_TA_tex_txt: + addrs: [0x8084E780, 0x8084E880] + npc/tex/elp_7_eye3_TA_tex_txt: + addrs: [0x8084E880, 0x8084E980] + npc/tex/elp_7_eye4_TA_tex_txt: + addrs: [0x8084E980, 0x8084EA80] + npc/tex/elp_7_eye5_TA_tex_txt: + addrs: [0x8084EA80, 0x8084EB80] + npc/tex/elp_7_eye6_TA_tex_txt: + addrs: [0x8084EB80, 0x8084EC80] + npc/tex/elp_7_eye7_TA_tex_txt: + addrs: [0x8084EC80, 0x8084ED80] + npc/tex/elp_7_eye8_TA_tex_txt: + addrs: [0x8084ED80, 0x8084EE80] + npc/tex/elp_7_mouth1_TA_tex_txt: + addrs: [0x8084EE80, 0x8084EF80] + npc/tex/elp_7_mouth2_TA_tex_txt: + addrs: [0x8084EF80, 0x8084F080] + npc/tex/elp_7_mouth3_TA_tex_txt: + addrs: [0x8084F080, 0x8084F180] + npc/tex/elp_7_mouth4_TA_tex_txt: + addrs: [0x8084F180, 0x8084F280] + npc/tex/elp_7_mouth5_TA_tex_txt: + addrs: [0x8084F280, 0x8084F380] + npc/tex/elp_7_mouth6_TA_tex_txt: + addrs: [0x8084F380, 0x8084F480] + npc/tex/elp_7_tmem_txt: + addrs: [0x8084F480, 0x8084F880] + npc/mdl/flg_1_v: + addrs: [0x80857D80, 0x80858FC0] + type: vtx + npc/tex/flg_1_pal: + addrs: [0x808597E0, 0x80859800] + type: pal16 + npc/tex/flg_1_eye1_TA_tex_txt: + addrs: [0x80859800, 0x80859900] + npc/tex/flg_1_eye2_TA_tex_txt: + addrs: [0x80859900, 0x80859A00] + npc/tex/flg_1_eye3_TA_tex_txt: + addrs: [0x80859A00, 0x80859B00] + npc/tex/flg_1_eye4_TA_tex_txt: + addrs: [0x80859B00, 0x80859C00] + npc/tex/flg_1_eye5_TA_tex_txt: + addrs: [0x80859C00, 0x80859D00] + npc/tex/flg_1_eye6_TA_tex_txt: + addrs: [0x80859D00, 0x80859E00] + npc/tex/flg_1_eye7_TA_tex_txt: + addrs: [0x80859E00, 0x80859F00] + npc/tex/flg_1_eye8_TA_tex_txt: + addrs: [0x80859F00, 0x8085A000] + npc/tex/flg_1_mouth1_TA_tex_txt: + addrs: [0x8085A000, 0x8085A100] + npc/tex/flg_1_mouth2_TA_tex_txt: + addrs: [0x8085A100, 0x8085A200] + npc/tex/flg_1_mouth3_TA_tex_txt: + addrs: [0x8085A200, 0x8085A300] + npc/tex/flg_1_mouth4_TA_tex_txt: + addrs: [0x8085A300, 0x8085A400] + npc/tex/flg_1_mouth5_TA_tex_txt: + addrs: [0x8085A400, 0x8085A500] + npc/tex/flg_1_mouth6_TA_tex_txt: + addrs: [0x8085A500, 0x8085A600] + npc/tex/flg_1_tmem_txt: + addrs: [0x8085A600, 0x8085AA00] + npc/tex/flg_2_pal: + addrs: [0x8085AA00, 0x8085AA20] + type: pal16 + npc/tex/flg_2_eye1_TA_tex_txt: + addrs: [0x8085AA20, 0x8085AB20] + npc/tex/flg_2_eye2_TA_tex_txt: + addrs: [0x8085AB20, 0x8085AC20] + npc/tex/flg_2_eye3_TA_tex_txt: + addrs: [0x8085AC20, 0x8085AD20] + npc/tex/flg_2_eye4_TA_tex_txt: + addrs: [0x8085AD20, 0x8085AE20] + npc/tex/flg_2_eye5_TA_tex_txt: + addrs: [0x8085AE20, 0x8085AF20] + npc/tex/flg_2_eye6_TA_tex_txt: + addrs: [0x8085AF20, 0x8085B020] + npc/tex/flg_2_eye7_TA_tex_txt: + addrs: [0x8085B020, 0x8085B120] + npc/tex/flg_2_eye8_TA_tex_txt: + addrs: [0x8085B120, 0x8085B220] + npc/tex/flg_2_mouth1_TA_tex_txt: + addrs: [0x8085B220, 0x8085B320] + npc/tex/flg_2_mouth2_TA_tex_txt: + addrs: [0x8085B320, 0x8085B420] + npc/tex/flg_2_mouth3_TA_tex_txt: + addrs: [0x8085B420, 0x8085B520] + npc/tex/flg_2_mouth4_TA_tex_txt: + addrs: [0x8085B520, 0x8085B620] + npc/tex/flg_2_mouth5_TA_tex_txt: + addrs: [0x8085B620, 0x8085B720] + npc/tex/flg_2_mouth6_TA_tex_txt: + addrs: [0x8085B720, 0x8085B820] + npc/tex/flg_2_tmem_txt: + addrs: [0x8085B820, 0x8085BC20] + npc/tex/flg_11_pal: + addrs: [0x8085BC20, 0x8085BC40] + type: pal16 + npc/tex/flg_11_eye1_TA_tex_txt: + addrs: [0x8085BC40, 0x8085BD40] + npc/tex/flg_11_eye2_TA_tex_txt: + addrs: [0x8085BD40, 0x8085BE40] + npc/tex/flg_11_eye3_TA_tex_txt: + addrs: [0x8085BE40, 0x8085BF40] + npc/tex/flg_11_eye4_TA_tex_txt: + addrs: [0x8085BF40, 0x8085C040] + npc/tex/flg_11_eye5_TA_tex_txt: + addrs: [0x8085C040, 0x8085C140] + npc/tex/flg_11_eye6_TA_tex_txt: + addrs: [0x8085C140, 0x8085C240] + npc/tex/flg_11_eye7_TA_tex_txt: + addrs: [0x8085C240, 0x8085C340] + npc/tex/flg_11_eye8_TA_tex_txt: + addrs: [0x8085C340, 0x8085C440] + npc/tex/flg_11_mouth1_TA_tex_txt: + addrs: [0x8085C440, 0x8085C540] + npc/tex/flg_11_mouth2_TA_tex_txt: + addrs: [0x8085C540, 0x8085C640] + npc/tex/flg_11_mouth3_TA_tex_txt: + addrs: [0x8085C640, 0x8085C740] + npc/tex/flg_11_mouth4_TA_tex_txt: + addrs: [0x8085C740, 0x8085C840] + npc/tex/flg_11_mouth5_TA_tex_txt: + addrs: [0x8085C840, 0x8085C940] + npc/tex/flg_11_mouth6_TA_tex_txt: + addrs: [0x8085C940, 0x8085CA40] + npc/tex/flg_11_tmem_txt: + addrs: [0x8085CA40, 0x8085CE40] + npc/tex/flg_12_pal: + addrs: [0x8085CE40, 0x8085CE60] + type: pal16 + npc/tex/flg_12_eye1_TA_tex_txt: + addrs: [0x8085CE60, 0x8085CF60] + npc/tex/flg_12_eye2_TA_tex_txt: + addrs: [0x8085CF60, 0x8085D060] + npc/tex/flg_12_eye3_TA_tex_txt: + addrs: [0x8085D060, 0x8085D160] + npc/tex/flg_12_eye4_TA_tex_txt: + addrs: [0x8085D160, 0x8085D260] + npc/tex/flg_12_eye5_TA_tex_txt: + addrs: [0x8085D260, 0x8085D360] + npc/tex/flg_12_eye6_TA_tex_txt: + addrs: [0x8085D360, 0x8085D460] + npc/tex/flg_12_eye7_TA_tex_txt: + addrs: [0x8085D460, 0x8085D560] + npc/tex/flg_12_eye8_TA_tex_txt: + addrs: [0x8085D560, 0x8085D660] + npc/tex/flg_12_mouth1_TA_tex_txt: + addrs: [0x8085D660, 0x8085D760] + npc/tex/flg_12_mouth2_TA_tex_txt: + addrs: [0x8085D760, 0x8085D860] + npc/tex/flg_12_mouth3_TA_tex_txt: + addrs: [0x8085D860, 0x8085D960] + npc/tex/flg_12_mouth4_TA_tex_txt: + addrs: [0x8085D960, 0x8085DA60] + npc/tex/flg_12_mouth5_TA_tex_txt: + addrs: [0x8085DA60, 0x8085DB60] + npc/tex/flg_12_mouth6_TA_tex_txt: + addrs: [0x8085DB60, 0x8085DC60] + npc/tex/flg_12_tmem_txt: + addrs: [0x8085DC60, 0x8085DFE0] + npc/tex/flg_13_pal: + addrs: [0x8085DFE0, 0x8085E000] + type: pal16 + npc/tex/flg_13_eye1_TA_tex_txt: + addrs: [0x8085E000, 0x8085E100] + npc/tex/flg_13_eye2_TA_tex_txt: + addrs: [0x8085E100, 0x8085E200] + npc/tex/flg_13_eye3_TA_tex_txt: + addrs: [0x8085E200, 0x8085E300] + npc/tex/flg_13_eye4_TA_tex_txt: + addrs: [0x8085E300, 0x8085E400] + npc/tex/flg_13_eye5_TA_tex_txt: + addrs: [0x8085E400, 0x8085E500] + npc/tex/flg_13_eye6_TA_tex_txt: + addrs: [0x8085E500, 0x8085E600] + npc/tex/flg_13_eye7_TA_tex_txt: + addrs: [0x8085E600, 0x8085E700] + npc/tex/flg_13_eye8_TA_tex_txt: + addrs: [0x8085E700, 0x8085E800] + npc/tex/flg_13_mouth1_TA_tex_txt: + addrs: [0x8085E800, 0x8085E900] + npc/tex/flg_13_mouth2_TA_tex_txt: + addrs: [0x8085E900, 0x8085EA00] + npc/tex/flg_13_mouth3_TA_tex_txt: + addrs: [0x8085EA00, 0x8085EB00] + npc/tex/flg_13_mouth4_TA_tex_txt: + addrs: [0x8085EB00, 0x8085EC00] + npc/tex/flg_13_mouth5_TA_tex_txt: + addrs: [0x8085EC00, 0x8085ED00] + npc/tex/flg_13_mouth6_TA_tex_txt: + addrs: [0x8085ED00, 0x8085EE00] + npc/tex/flg_13_tmem_txt: + addrs: [0x8085EE00, 0x8085F200] + npc/tex/flg_3_pal: + addrs: [0x8085F200, 0x8085F220] + type: pal16 + npc/tex/flg_3_eye1_TA_tex_txt: + addrs: [0x8085F220, 0x8085F320] + npc/tex/flg_3_eye2_TA_tex_txt: + addrs: [0x8085F320, 0x8085F420] + npc/tex/flg_3_eye3_TA_tex_txt: + addrs: [0x8085F420, 0x8085F520] + npc/tex/flg_3_eye4_TA_tex_txt: + addrs: [0x8085F520, 0x8085F620] + npc/tex/flg_3_eye5_TA_tex_txt: + addrs: [0x8085F620, 0x8085F720] + npc/tex/flg_3_eye6_TA_tex_txt: + addrs: [0x8085F720, 0x8085F820] + npc/tex/flg_3_eye7_TA_tex_txt: + addrs: [0x8085F820, 0x8085F920] + npc/tex/flg_3_eye8_TA_tex_txt: + addrs: [0x8085F920, 0x8085FA20] + npc/tex/flg_3_mouth1_TA_tex_txt: + addrs: [0x8085FA20, 0x8085FB20] + npc/tex/flg_3_mouth2_TA_tex_txt: + addrs: [0x8085FB20, 0x8085FC20] + npc/tex/flg_3_mouth3_TA_tex_txt: + addrs: [0x8085FC20, 0x8085FD20] + npc/tex/flg_3_mouth4_TA_tex_txt: + addrs: [0x8085FD20, 0x8085FE20] + npc/tex/flg_3_mouth5_TA_tex_txt: + addrs: [0x8085FE20, 0x8085FF20] + npc/tex/flg_3_mouth6_TA_tex_txt: + addrs: [0x8085FF20, 0x80860020] + npc/tex/flg_3_tmem_txt: + addrs: [0x80860020, 0x80860420] + npc/tex/flg_4_pal: + addrs: [0x80860420, 0x80860440] + type: pal16 + npc/tex/flg_4_eye1_TA_tex_txt: + addrs: [0x80860440, 0x80860540] + npc/tex/flg_4_eye2_TA_tex_txt: + addrs: [0x80860540, 0x80860640] + npc/tex/flg_4_eye3_TA_tex_txt: + addrs: [0x80860640, 0x80860740] + npc/tex/flg_4_eye4_TA_tex_txt: + addrs: [0x80860740, 0x80860840] + npc/tex/flg_4_eye5_TA_tex_txt: + addrs: [0x80860840, 0x80860940] + npc/tex/flg_4_eye6_TA_tex_txt: + addrs: [0x80860940, 0x80860A40] + npc/tex/flg_4_eye7_TA_tex_txt: + addrs: [0x80860A40, 0x80860B40] + npc/tex/flg_4_eye8_TA_tex_txt: + addrs: [0x80860B40, 0x80860C40] + npc/tex/flg_4_mouth1_TA_tex_txt: + addrs: [0x80860C40, 0x80860D40] + npc/tex/flg_4_mouth2_TA_tex_txt: + addrs: [0x80860D40, 0x80860E40] + npc/tex/flg_4_mouth3_TA_tex_txt: + addrs: [0x80860E40, 0x80860F40] + npc/tex/flg_4_mouth4_TA_tex_txt: + addrs: [0x80860F40, 0x80861040] + npc/tex/flg_4_mouth5_TA_tex_txt: + addrs: [0x80861040, 0x80861140] + npc/tex/flg_4_mouth6_TA_tex_txt: + addrs: [0x80861140, 0x80861240] + npc/tex/flg_4_tmem_txt: + addrs: [0x80861240, 0x80861640] + npc/tex/flg_5_pal: + addrs: [0x80861640, 0x80861660] + type: pal16 + npc/tex/flg_5_eye1_TA_tex_txt: + addrs: [0x80861660, 0x80861760] + npc/tex/flg_5_eye2_TA_tex_txt: + addrs: [0x80861760, 0x80861860] + npc/tex/flg_5_eye3_TA_tex_txt: + addrs: [0x80861860, 0x80861960] + npc/tex/flg_5_eye4_TA_tex_txt: + addrs: [0x80861960, 0x80861A60] + npc/tex/flg_5_eye5_TA_tex_txt: + addrs: [0x80861A60, 0x80861B60] + npc/tex/flg_5_eye6_TA_tex_txt: + addrs: [0x80861B60, 0x80861C60] + npc/tex/flg_5_eye7_TA_tex_txt: + addrs: [0x80861C60, 0x80861D60] + npc/tex/flg_5_eye8_TA_tex_txt: + addrs: [0x80861D60, 0x80861E60] + npc/tex/flg_5_mouth1_TA_tex_txt: + addrs: [0x80861E60, 0x80861F60] + npc/tex/flg_5_mouth2_TA_tex_txt: + addrs: [0x80861F60, 0x80862060] + npc/tex/flg_5_mouth3_TA_tex_txt: + addrs: [0x80862060, 0x80862160] + npc/tex/flg_5_mouth4_TA_tex_txt: + addrs: [0x80862160, 0x80862260] + npc/tex/flg_5_mouth5_TA_tex_txt: + addrs: [0x80862260, 0x80862360] + npc/tex/flg_5_mouth6_TA_tex_txt: + addrs: [0x80862360, 0x80862460] + npc/tex/flg_5_tmem_txt: + addrs: [0x80862460, 0x80862860] + npc/tex/flg_6_pal: + addrs: [0x80862860, 0x80862880] + type: pal16 + npc/tex/flg_6_eye1_TA_tex_txt: + addrs: [0x80862880, 0x80862980] + npc/tex/flg_6_eye2_TA_tex_txt: + addrs: [0x80862980, 0x80862A80] + npc/tex/flg_6_eye3_TA_tex_txt: + addrs: [0x80862A80, 0x80862B80] + npc/tex/flg_6_eye4_TA_tex_txt: + addrs: [0x80862B80, 0x80862C80] + npc/tex/flg_6_eye5_TA_tex_txt: + addrs: [0x80862C80, 0x80862D80] + npc/tex/flg_6_eye6_TA_tex_txt: + addrs: [0x80862D80, 0x80862E80] + npc/tex/flg_6_eye7_TA_tex_txt: + addrs: [0x80862E80, 0x80862F80] + npc/tex/flg_6_eye8_TA_tex_txt: + addrs: [0x80862F80, 0x80863080] + npc/tex/flg_6_mouth1_TA_tex_txt: + addrs: [0x80863080, 0x80863180] + npc/tex/flg_6_mouth2_TA_tex_txt: + addrs: [0x80863180, 0x80863280] + npc/tex/flg_6_mouth3_TA_tex_txt: + addrs: [0x80863280, 0x80863380] + npc/tex/flg_6_mouth4_TA_tex_txt: + addrs: [0x80863380, 0x80863480] + npc/tex/flg_6_mouth5_TA_tex_txt: + addrs: [0x80863480, 0x80863580] + npc/tex/flg_6_mouth6_TA_tex_txt: + addrs: [0x80863580, 0x80863680] + npc/tex/flg_6_tmem_txt: + addrs: [0x80863680, 0x80863A80] + npc/tex/flg_7_pal: + addrs: [0x80863A80, 0x80863AA0] + type: pal16 + npc/tex/flg_7_eye1_TA_tex_txt: + addrs: [0x80863AA0, 0x80863BA0] + npc/tex/flg_7_eye2_TA_tex_txt: + addrs: [0x80863BA0, 0x80863CA0] + npc/tex/flg_7_eye3_TA_tex_txt: + addrs: [0x80863CA0, 0x80863DA0] + npc/tex/flg_7_eye4_TA_tex_txt: + addrs: [0x80863DA0, 0x80863EA0] + npc/tex/flg_7_eye5_TA_tex_txt: + addrs: [0x80863EA0, 0x80863FA0] + npc/tex/flg_7_eye6_TA_tex_txt: + addrs: [0x80863FA0, 0x808640A0] + npc/tex/flg_7_eye7_TA_tex_txt: + addrs: [0x808640A0, 0x808641A0] + npc/tex/flg_7_eye8_TA_tex_txt: + addrs: [0x808641A0, 0x808642A0] + npc/tex/flg_7_mouth1_TA_tex_txt: + addrs: [0x808642A0, 0x808643A0] + npc/tex/flg_7_mouth2_TA_tex_txt: + addrs: [0x808643A0, 0x808644A0] + npc/tex/flg_7_mouth3_TA_tex_txt: + addrs: [0x808644A0, 0x808645A0] + npc/tex/flg_7_mouth4_TA_tex_txt: + addrs: [0x808645A0, 0x808646A0] + npc/tex/flg_7_mouth5_TA_tex_txt: + addrs: [0x808646A0, 0x808647A0] + npc/tex/flg_7_mouth6_TA_tex_txt: + addrs: [0x808647A0, 0x808648A0] + npc/tex/flg_7_tmem_txt: + addrs: [0x808648A0, 0x80864CA0] + npc/tex/flg_8_pal: + addrs: [0x80864CA0, 0x80864CC0] + type: pal16 + npc/tex/flg_8_eye1_TA_tex_txt: + addrs: [0x80864CC0, 0x80864DC0] + npc/tex/flg_8_eye2_TA_tex_txt: + addrs: [0x80864DC0, 0x80864EC0] + npc/tex/flg_8_eye3_TA_tex_txt: + addrs: [0x80864EC0, 0x80864FC0] + npc/tex/flg_8_eye4_TA_tex_txt: + addrs: [0x80864FC0, 0x808650C0] + npc/tex/flg_8_eye5_TA_tex_txt: + addrs: [0x808650C0, 0x808651C0] + npc/tex/flg_8_eye6_TA_tex_txt: + addrs: [0x808651C0, 0x808652C0] + npc/tex/flg_8_eye7_TA_tex_txt: + addrs: [0x808652C0, 0x808653C0] + npc/tex/flg_8_eye8_TA_tex_txt: + addrs: [0x808653C0, 0x808654C0] + npc/tex/flg_8_mouth1_TA_tex_txt: + addrs: [0x808654C0, 0x808655C0] + npc/tex/flg_8_mouth2_TA_tex_txt: + addrs: [0x808655C0, 0x808656C0] + npc/tex/flg_8_mouth3_TA_tex_txt: + addrs: [0x808656C0, 0x808657C0] + npc/tex/flg_8_mouth4_TA_tex_txt: + addrs: [0x808657C0, 0x808658C0] + npc/tex/flg_8_mouth5_TA_tex_txt: + addrs: [0x808658C0, 0x808659C0] + npc/tex/flg_8_mouth6_TA_tex_txt: + addrs: [0x808659C0, 0x80865AC0] + npc/tex/flg_8_tmem_txt: + addrs: [0x80865AC0, 0x80865EC0] + npc/tex/flg_9_pal: + addrs: [0x80865EC0, 0x80865EE0] + type: pal16 + npc/tex/flg_9_eye1_TA_tex_txt: + addrs: [0x80865EE0, 0x80865FE0] + npc/tex/flg_9_eye2_TA_tex_txt: + addrs: [0x80865FE0, 0x808660E0] + npc/tex/flg_9_eye3_TA_tex_txt: + addrs: [0x808660E0, 0x808661E0] + npc/tex/flg_9_eye4_TA_tex_txt: + addrs: [0x808661E0, 0x808662E0] + npc/tex/flg_9_eye5_TA_tex_txt: + addrs: [0x808662E0, 0x808663E0] + npc/tex/flg_9_eye6_TA_tex_txt: + addrs: [0x808663E0, 0x808664E0] + npc/tex/flg_9_eye7_TA_tex_txt: + addrs: [0x808664E0, 0x808665E0] + npc/tex/flg_9_eye8_TA_tex_txt: + addrs: [0x808665E0, 0x808666E0] + npc/tex/flg_9_mouth1_TA_tex_txt: + addrs: [0x808666E0, 0x808667E0] + npc/tex/flg_9_mouth2_TA_tex_txt: + addrs: [0x808667E0, 0x808668E0] + npc/tex/flg_9_mouth3_TA_tex_txt: + addrs: [0x808668E0, 0x808669E0] + npc/tex/flg_9_mouth4_TA_tex_txt: + addrs: [0x808669E0, 0x80866AE0] + npc/tex/flg_9_mouth5_TA_tex_txt: + addrs: [0x80866AE0, 0x80866BE0] + npc/tex/flg_9_mouth6_TA_tex_txt: + addrs: [0x80866BE0, 0x80866CE0] + npc/tex/flg_9_tmem_txt: + addrs: [0x80866CE0, 0x808670E0] + npc/tex/flg_10_pal: + addrs: [0x808670E0, 0x80867100] + type: pal16 + npc/tex/flg_10_eye1_TA_tex_txt: + addrs: [0x80867100, 0x80867200] + npc/tex/flg_10_eye2_TA_tex_txt: + addrs: [0x80867200, 0x80867300] + npc/tex/flg_10_eye3_TA_tex_txt: + addrs: [0x80867300, 0x80867400] + npc/tex/flg_10_eye4_TA_tex_txt: + addrs: [0x80867400, 0x80867500] + npc/tex/flg_10_eye5_TA_tex_txt: + addrs: [0x80867500, 0x80867600] + npc/tex/flg_10_eye6_TA_tex_txt: + addrs: [0x80867600, 0x80867700] + npc/tex/flg_10_eye7_TA_tex_txt: + addrs: [0x80867700, 0x80867800] + npc/tex/flg_10_eye8_TA_tex_txt: + addrs: [0x80867800, 0x80867900] + npc/tex/flg_10_mouth1_TA_tex_txt: + addrs: [0x80867900, 0x80867A00] + npc/tex/flg_10_mouth2_TA_tex_txt: + addrs: [0x80867A00, 0x80867B00] + npc/tex/flg_10_mouth3_TA_tex_txt: + addrs: [0x80867B00, 0x80867C00] + npc/tex/flg_10_mouth4_TA_tex_txt: + addrs: [0x80867C00, 0x80867D00] + npc/tex/flg_10_mouth5_TA_tex_txt: + addrs: [0x80867D00, 0x80867E00] + npc/tex/flg_10_mouth6_TA_tex_txt: + addrs: [0x80867E00, 0x80867F00] + npc/tex/flg_10_tmem_txt: + addrs: [0x80867F00, 0x80868300] + npc/mdl/rcf_1_v: + addrs: [0x80868300, 0x80869E30] + type: vtx + npc/tex/rcf_1_pal: + addrs: [0x8086A9A0, 0x8086A9C0] + type: pal16 + npc/tex/rcf_1_eye1_TA_tex_txt: + addrs: [0x8086A9C0, 0x8086AAC0] + npc/tex/rcf_1_eye2_TA_tex_txt: + addrs: [0x8086AAC0, 0x8086ABC0] + npc/tex/rcf_1_eye3_TA_tex_txt: + addrs: [0x8086ABC0, 0x8086ACC0] + npc/tex/rcf_1_eye4_TA_tex_txt: + addrs: [0x8086ACC0, 0x8086ADC0] + npc/tex/rcf_1_eye5_TA_tex_txt: + addrs: [0x8086ADC0, 0x8086AEC0] + npc/tex/rcf_1_eye6_TA_tex_txt: + addrs: [0x8086AEC0, 0x8086AFC0] + npc/tex/rcf_1_eye7_TA_tex_txt: + addrs: [0x8086AFC0, 0x8086B0C0] + npc/tex/rcf_1_eye8_TA_tex_txt: + addrs: [0x8086B0C0, 0x8086B1C0] + npc/tex/rcf_1_tmem_txt: + addrs: [0x8086B1C0, 0x8086B8C0] + npc/mdl/gst_1_v: + addrs: [0x8086CB08, 0x8086DC18] + type: vtx + npc/tex/gst_1_pal: + addrs: [0x8086E180, 0x8086E1A0] + type: pal16 + npc/tex/gst_1_eye1_TA_tex_txt: + addrs: [0x8086E1A0, 0x8086E2A0] + npc/tex/gst_1_eye2_TA_tex_txt: + addrs: [0x8086E2A0, 0x8086E3A0] + npc/tex/gst_1_eye3_TA_tex_txt: + addrs: [0x8086E3A0, 0x8086E4A0] + npc/tex/gst_1_eye4_TA_tex_txt: + addrs: [0x8086E4A0, 0x8086E5A0] + npc/tex/gst_1_eye5_TA_tex_txt: + addrs: [0x8086E5A0, 0x8086E6A0] + npc/tex/gst_1_eye6_TA_tex_txt: + addrs: [0x8086E6A0, 0x8086E7A0] + npc/tex/gst_1_eye7_TA_tex_txt: + addrs: [0x8086E7A0, 0x8086E8A0] + npc/tex/gst_1_eye8_TA_tex_txt: + addrs: [0x8086E8A0, 0x8086E9A0] + npc/tex/gst_1_mouth1_TA_tex_txt: + addrs: [0x8086E9A0, 0x8086EAA0] + npc/tex/gst_1_mouth2_TA_tex_txt: + addrs: [0x8086EAA0, 0x8086EBA0] + npc/tex/gst_1_mouth3_TA_tex_txt: + addrs: [0x8086EBA0, 0x8086ECA0] + npc/tex/gst_1_mouth4_TA_tex_txt: + addrs: [0x8086ECA0, 0x8086EDA0] + npc/tex/gst_1_mouth5_TA_tex_txt: + addrs: [0x8086EDA0, 0x8086EEA0] + npc/tex/gst_1_mouth6_TA_tex_txt: + addrs: [0x8086EEA0, 0x8086EFA0] + npc/tex/gst_1_tmem_txt: + addrs: [0x8086EFA0, 0x8086F120] + npc/mdl/goa_1_v: + addrs: [0x80871730, 0x80872D70] + type: vtx + npc/tex/goa_1_pal: + addrs: [0x80873700, 0x80873720] + type: pal16 + npc/tex/goa_1_eye1_TA_tex_txt: + addrs: [0x80873720, 0x80873820] + npc/tex/goa_1_eye2_TA_tex_txt: + addrs: [0x80873820, 0x80873920] + npc/tex/goa_1_eye3_TA_tex_txt: + addrs: [0x80873920, 0x80873A20] + npc/tex/goa_1_eye4_TA_tex_txt: + addrs: [0x80873A20, 0x80873B20] + npc/tex/goa_1_eye5_TA_tex_txt: + addrs: [0x80873B20, 0x80873C20] + npc/tex/goa_1_eye6_TA_tex_txt: + addrs: [0x80873C20, 0x80873D20] + npc/tex/goa_1_eye7_TA_tex_txt: + addrs: [0x80873D20, 0x80873E20] + npc/tex/goa_1_eye8_TA_tex_txt: + addrs: [0x80873E20, 0x80873F20] + npc/tex/goa_1_mouth1_TA_tex_txt: + addrs: [0x80873F20, 0x80874020] + npc/tex/goa_1_mouth2_TA_tex_txt: + addrs: [0x80874020, 0x80874120] + npc/tex/goa_1_mouth3_TA_tex_txt: + addrs: [0x80874120, 0x80874220] + npc/tex/goa_1_mouth4_TA_tex_txt: + addrs: [0x80874220, 0x80874320] + npc/tex/goa_1_mouth5_TA_tex_txt: + addrs: [0x80874320, 0x80874420] + npc/tex/goa_1_mouth6_TA_tex_txt: + addrs: [0x80874420, 0x80874520] + npc/tex/goa_1_tmem_txt: + addrs: [0x80874520, 0x80874920] + npc/tex/goa_2_pal: + addrs: [0x80874920, 0x80874940] + type: pal16 + npc/tex/goa_2_eye1_TA_tex_txt: + addrs: [0x80874940, 0x80874A40] + npc/tex/goa_2_eye2_TA_tex_txt: + addrs: [0x80874A40, 0x80874B40] + npc/tex/goa_2_eye3_TA_tex_txt: + addrs: [0x80874B40, 0x80874C40] + npc/tex/goa_2_eye4_TA_tex_txt: + addrs: [0x80874C40, 0x80874D40] + npc/tex/goa_2_eye5_TA_tex_txt: + addrs: [0x80874D40, 0x80874E40] + npc/tex/goa_2_eye6_TA_tex_txt: + addrs: [0x80874E40, 0x80874F40] + npc/tex/goa_2_eye7_TA_tex_txt: + addrs: [0x80874F40, 0x80875040] + npc/tex/goa_2_eye8_TA_tex_txt: + addrs: [0x80875040, 0x80875140] + npc/tex/goa_2_mouth1_TA_tex_txt: + addrs: [0x80875140, 0x80875240] + npc/tex/goa_2_mouth2_TA_tex_txt: + addrs: [0x80875240, 0x80875340] + npc/tex/goa_2_mouth3_TA_tex_txt: + addrs: [0x80875340, 0x80875440] + npc/tex/goa_2_mouth4_TA_tex_txt: + addrs: [0x80875440, 0x80875540] + npc/tex/goa_2_mouth5_TA_tex_txt: + addrs: [0x80875540, 0x80875640] + npc/tex/goa_2_mouth6_TA_tex_txt: + addrs: [0x80875640, 0x80875740] + npc/tex/goa_2_tmem_txt: + addrs: [0x80875740, 0x80875B40] + npc/tex/goa_3_pal: + addrs: [0x80875B40, 0x80875B60] + type: pal16 + npc/tex/goa_3_eye1_TA_tex_txt: + addrs: [0x80875B60, 0x80875C60] + npc/tex/goa_3_eye2_TA_tex_txt: + addrs: [0x80875C60, 0x80875D60] + npc/tex/goa_3_eye3_TA_tex_txt: + addrs: [0x80875D60, 0x80875E60] + npc/tex/goa_3_eye4_TA_tex_txt: + addrs: [0x80875E60, 0x80875F60] + npc/tex/goa_3_eye5_TA_tex_txt: + addrs: [0x80875F60, 0x80876060] + npc/tex/goa_3_eye6_TA_tex_txt: + addrs: [0x80876060, 0x80876160] + npc/tex/goa_3_eye7_TA_tex_txt: + addrs: [0x80876160, 0x80876260] + npc/tex/goa_3_eye8_TA_tex_txt: + addrs: [0x80876260, 0x80876360] + npc/tex/goa_3_mouth1_TA_tex_txt: + addrs: [0x80876360, 0x80876460] + npc/tex/goa_3_mouth2_TA_tex_txt: + addrs: [0x80876460, 0x80876560] + npc/tex/goa_3_mouth3_TA_tex_txt: + addrs: [0x80876560, 0x80876660] + npc/tex/goa_3_mouth4_TA_tex_txt: + addrs: [0x80876660, 0x80876760] + npc/tex/goa_3_mouth5_TA_tex_txt: + addrs: [0x80876760, 0x80876860] + npc/tex/goa_3_mouth6_TA_tex_txt: + addrs: [0x80876860, 0x80876960] + npc/tex/goa_3_tmem_txt: + addrs: [0x80876960, 0x80876D60] + npc/tex/goa_4_pal: + addrs: [0x80876D60, 0x80876D80] + type: pal16 + npc/tex/goa_4_eye1_TA_tex_txt: + addrs: [0x80876D80, 0x80876E80] + npc/tex/goa_4_eye2_TA_tex_txt: + addrs: [0x80876E80, 0x80876F80] + npc/tex/goa_4_eye3_TA_tex_txt: + addrs: [0x80876F80, 0x80877080] + npc/tex/goa_4_eye4_TA_tex_txt: + addrs: [0x80877080, 0x80877180] + npc/tex/goa_4_eye5_TA_tex_txt: + addrs: [0x80877180, 0x80877280] + npc/tex/goa_4_eye6_TA_tex_txt: + addrs: [0x80877280, 0x80877380] + npc/tex/goa_4_eye7_TA_tex_txt: + addrs: [0x80877380, 0x80877480] + npc/tex/goa_4_eye8_TA_tex_txt: + addrs: [0x80877480, 0x80877580] + npc/tex/goa_4_mouth1_TA_tex_txt: + addrs: [0x80877580, 0x80877680] + npc/tex/goa_4_mouth2_TA_tex_txt: + addrs: [0x80877680, 0x80877780] + npc/tex/goa_4_mouth3_TA_tex_txt: + addrs: [0x80877780, 0x80877880] + npc/tex/goa_4_mouth4_TA_tex_txt: + addrs: [0x80877880, 0x80877980] + npc/tex/goa_4_mouth5_TA_tex_txt: + addrs: [0x80877980, 0x80877A80] + npc/tex/goa_4_mouth6_TA_tex_txt: + addrs: [0x80877A80, 0x80877B80] + npc/tex/goa_4_tmem_txt: + addrs: [0x80877B80, 0x80877F80] + npc/tex/goa_5_pal: + addrs: [0x80877F80, 0x80877FA0] + type: pal16 + npc/tex/goa_5_eye1_TA_tex_txt: + addrs: [0x80877FA0, 0x808780A0] + npc/tex/goa_5_eye2_TA_tex_txt: + addrs: [0x808780A0, 0x808781A0] + npc/tex/goa_5_eye3_TA_tex_txt: + addrs: [0x808781A0, 0x808782A0] + npc/tex/goa_5_eye4_TA_tex_txt: + addrs: [0x808782A0, 0x808783A0] + npc/tex/goa_5_eye5_TA_tex_txt: + addrs: [0x808783A0, 0x808784A0] + npc/tex/goa_5_eye6_TA_tex_txt: + addrs: [0x808784A0, 0x808785A0] + npc/tex/goa_5_eye7_TA_tex_txt: + addrs: [0x808785A0, 0x808786A0] + npc/tex/goa_5_eye8_TA_tex_txt: + addrs: [0x808786A0, 0x808787A0] + npc/tex/goa_5_mouth1_TA_tex_txt: + addrs: [0x808787A0, 0x808788A0] + npc/tex/goa_5_mouth2_TA_tex_txt: + addrs: [0x808788A0, 0x808789A0] + npc/tex/goa_5_mouth3_TA_tex_txt: + addrs: [0x808789A0, 0x80878AA0] + npc/tex/goa_5_mouth4_TA_tex_txt: + addrs: [0x80878AA0, 0x80878BA0] + npc/tex/goa_5_mouth5_TA_tex_txt: + addrs: [0x80878BA0, 0x80878CA0] + npc/tex/goa_5_mouth6_TA_tex_txt: + addrs: [0x80878CA0, 0x80878DA0] + npc/tex/goa_5_tmem_txt: + addrs: [0x80878DA0, 0x808791A0] + npc/tex/goa_6_pal: + addrs: [0x808791A0, 0x808791C0] + type: pal16 + npc/tex/goa_6_eye1_TA_tex_txt: + addrs: [0x808791C0, 0x808792C0] + npc/tex/goa_6_eye2_TA_tex_txt: + addrs: [0x808792C0, 0x808793C0] + npc/tex/goa_6_eye3_TA_tex_txt: + addrs: [0x808793C0, 0x808794C0] + npc/tex/goa_6_eye4_TA_tex_txt: + addrs: [0x808794C0, 0x808795C0] + npc/tex/goa_6_eye5_TA_tex_txt: + addrs: [0x808795C0, 0x808796C0] + npc/tex/goa_6_eye6_TA_tex_txt: + addrs: [0x808796C0, 0x808797C0] + npc/tex/goa_6_eye7_TA_tex_txt: + addrs: [0x808797C0, 0x808798C0] + npc/tex/goa_6_eye8_TA_tex_txt: + addrs: [0x808798C0, 0x808799C0] + npc/tex/goa_6_mouth1_TA_tex_txt: + addrs: [0x808799C0, 0x80879AC0] + npc/tex/goa_6_mouth2_TA_tex_txt: + addrs: [0x80879AC0, 0x80879BC0] + npc/tex/goa_6_mouth3_TA_tex_txt: + addrs: [0x80879BC0, 0x80879CC0] + npc/tex/goa_6_mouth4_TA_tex_txt: + addrs: [0x80879CC0, 0x80879DC0] + npc/tex/goa_6_mouth5_TA_tex_txt: + addrs: [0x80879DC0, 0x80879EC0] + npc/tex/goa_6_mouth6_TA_tex_txt: + addrs: [0x80879EC0, 0x80879FC0] + npc/tex/goa_6_tmem_txt: + addrs: [0x80879FC0, 0x8087A3C0] + npc/mdl/gor_1_v: + addrs: [0x8087A3C0, 0x8087BE90] + type: vtx + npc/tex/gor_1_pal: + addrs: [0x8087C960, 0x8087C980] + type: pal16 + npc/tex/gor_1_eye1_TA_tex_txt: + addrs: [0x8087C980, 0x8087CA80] + npc/tex/gor_1_eye2_TA_tex_txt: + addrs: [0x8087CA80, 0x8087CB80] + npc/tex/gor_1_eye3_TA_tex_txt: + addrs: [0x8087CB80, 0x8087CC80] + npc/tex/gor_1_eye4_TA_tex_txt: + addrs: [0x8087CC80, 0x8087CD80] + npc/tex/gor_1_eye5_TA_tex_txt: + addrs: [0x8087CD80, 0x8087CE80] + npc/tex/gor_1_eye6_TA_tex_txt: + addrs: [0x8087CE80, 0x8087CF80] + npc/tex/gor_1_eye7_TA_tex_txt: + addrs: [0x8087CF80, 0x8087D080] + npc/tex/gor_1_eye8_TA_tex_txt: + addrs: [0x8087D080, 0x8087D180] + npc/tex/gor_1_mouth1_TA_tex_txt: + addrs: [0x8087D180, 0x8087D280] + npc/tex/gor_1_mouth2_TA_tex_txt: + addrs: [0x8087D280, 0x8087D380] + npc/tex/gor_1_mouth3_TA_tex_txt: + addrs: [0x8087D380, 0x8087D480] + npc/tex/gor_1_mouth4_TA_tex_txt: + addrs: [0x8087D480, 0x8087D580] + npc/tex/gor_1_mouth5_TA_tex_txt: + addrs: [0x8087D580, 0x8087D680] + npc/tex/gor_1_mouth6_TA_tex_txt: + addrs: [0x8087D680, 0x8087D780] + npc/tex/gor_1_tmem_txt: + addrs: [0x8087D780, 0x8087DB80] + npc/tex/gor_2_pal: + addrs: [0x8087DB80, 0x8087DBA0] + type: pal16 + npc/tex/gor_2_eye1_TA_tex_txt: + addrs: [0x8087DBA0, 0x8087DCA0] + npc/tex/gor_2_eye2_TA_tex_txt: + addrs: [0x8087DCA0, 0x8087DDA0] + npc/tex/gor_2_eye3_TA_tex_txt: + addrs: [0x8087DDA0, 0x8087DEA0] + npc/tex/gor_2_eye4_TA_tex_txt: + addrs: [0x8087DEA0, 0x8087DFA0] + npc/tex/gor_2_eye5_TA_tex_txt: + addrs: [0x8087DFA0, 0x8087E0A0] + npc/tex/gor_2_eye6_TA_tex_txt: + addrs: [0x8087E0A0, 0x8087E1A0] + npc/tex/gor_2_eye7_TA_tex_txt: + addrs: [0x8087E1A0, 0x8087E2A0] + npc/tex/gor_2_eye8_TA_tex_txt: + addrs: [0x8087E2A0, 0x8087E3A0] + npc/tex/gor_2_mouth1_TA_tex_txt: + addrs: [0x8087E3A0, 0x8087E4A0] + npc/tex/gor_2_mouth2_TA_tex_txt: + addrs: [0x8087E4A0, 0x8087E5A0] + npc/tex/gor_2_mouth3_TA_tex_txt: + addrs: [0x8087E5A0, 0x8087E6A0] + npc/tex/gor_2_mouth4_TA_tex_txt: + addrs: [0x8087E6A0, 0x8087E7A0] + npc/tex/gor_2_mouth5_TA_tex_txt: + addrs: [0x8087E7A0, 0x8087E8A0] + npc/tex/gor_2_mouth6_TA_tex_txt: + addrs: [0x8087E8A0, 0x8087E9A0] + npc/tex/gor_2_tmem_txt: + addrs: [0x8087E9A0, 0x8087EDA0] + npc/tex/gor_3_pal: + addrs: [0x8087EDA0, 0x8087EDC0] + type: pal16 + npc/tex/gor_3_eye1_TA_tex_txt: + addrs: [0x8087EDC0, 0x8087EEC0] + npc/tex/gor_3_eye2_TA_tex_txt: + addrs: [0x8087EEC0, 0x8087EFC0] + npc/tex/gor_3_eye3_TA_tex_txt: + addrs: [0x8087EFC0, 0x8087F0C0] + npc/tex/gor_3_eye4_TA_tex_txt: + addrs: [0x8087F0C0, 0x8087F1C0] + npc/tex/gor_3_eye5_TA_tex_txt: + addrs: [0x8087F1C0, 0x8087F2C0] + npc/tex/gor_3_eye6_TA_tex_txt: + addrs: [0x8087F2C0, 0x8087F3C0] + npc/tex/gor_3_eye7_TA_tex_txt: + addrs: [0x8087F3C0, 0x8087F4C0] + npc/tex/gor_3_eye8_TA_tex_txt: + addrs: [0x8087F4C0, 0x8087F5C0] + npc/tex/gor_3_mouth1_TA_tex_txt: + addrs: [0x8087F5C0, 0x8087F6C0] + npc/tex/gor_3_mouth2_TA_tex_txt: + addrs: [0x8087F6C0, 0x8087F7C0] + npc/tex/gor_3_mouth3_TA_tex_txt: + addrs: [0x8087F7C0, 0x8087F8C0] + npc/tex/gor_3_mouth4_TA_tex_txt: + addrs: [0x8087F8C0, 0x8087F9C0] + npc/tex/gor_3_mouth5_TA_tex_txt: + addrs: [0x8087F9C0, 0x8087FAC0] + npc/tex/gor_3_mouth6_TA_tex_txt: + addrs: [0x8087FAC0, 0x8087FBC0] + npc/tex/gor_3_tmem_txt: + addrs: [0x8087FBC0, 0x8087FFC0] + npc/tex/gor_4_pal: + addrs: [0x8087FFC0, 0x8087FFE0] + type: pal16 + npc/tex/gor_4_eye1_TA_tex_txt: + addrs: [0x8087FFE0, 0x808800E0] + npc/tex/gor_4_eye2_TA_tex_txt: + addrs: [0x808800E0, 0x808801E0] + npc/tex/gor_4_eye3_TA_tex_txt: + addrs: [0x808801E0, 0x808802E0] + npc/tex/gor_4_eye4_TA_tex_txt: + addrs: [0x808802E0, 0x808803E0] + npc/tex/gor_4_eye5_TA_tex_txt: + addrs: [0x808803E0, 0x808804E0] + npc/tex/gor_4_eye6_TA_tex_txt: + addrs: [0x808804E0, 0x808805E0] + npc/tex/gor_4_eye7_TA_tex_txt: + addrs: [0x808805E0, 0x808806E0] + npc/tex/gor_4_eye8_TA_tex_txt: + addrs: [0x808806E0, 0x808807E0] + npc/tex/gor_4_mouth1_TA_tex_txt: + addrs: [0x808807E0, 0x808808E0] + npc/tex/gor_4_mouth2_TA_tex_txt: + addrs: [0x808808E0, 0x808809E0] + npc/tex/gor_4_mouth3_TA_tex_txt: + addrs: [0x808809E0, 0x80880AE0] + npc/tex/gor_4_mouth4_TA_tex_txt: + addrs: [0x80880AE0, 0x80880BE0] + npc/tex/gor_4_mouth5_TA_tex_txt: + addrs: [0x80880BE0, 0x80880CE0] + npc/tex/gor_4_mouth6_TA_tex_txt: + addrs: [0x80880CE0, 0x80880DE0] + npc/tex/gor_4_tmem_txt: + addrs: [0x80880DE0, 0x808811E0] + npc/tex/gor_5_pal: + addrs: [0x808811E0, 0x80881200] + type: pal16 + npc/tex/gor_5_eye1_TA_tex_txt: + addrs: [0x80881200, 0x80881300] + npc/tex/gor_5_eye2_TA_tex_txt: + addrs: [0x80881300, 0x80881400] + npc/tex/gor_5_eye3_TA_tex_txt: + addrs: [0x80881400, 0x80881500] + npc/tex/gor_5_eye4_TA_tex_txt: + addrs: [0x80881500, 0x80881600] + npc/tex/gor_5_eye5_TA_tex_txt: + addrs: [0x80881600, 0x80881700] + npc/tex/gor_5_eye6_TA_tex_txt: + addrs: [0x80881700, 0x80881800] + npc/tex/gor_5_eye7_TA_tex_txt: + addrs: [0x80881800, 0x80881900] + npc/tex/gor_5_eye8_TA_tex_txt: + addrs: [0x80881900, 0x80881A00] + npc/tex/gor_5_mouth1_TA_tex_txt: + addrs: [0x80881A00, 0x80881B00] + npc/tex/gor_5_mouth2_TA_tex_txt: + addrs: [0x80881B00, 0x80881C00] + npc/tex/gor_5_mouth3_TA_tex_txt: + addrs: [0x80881C00, 0x80881D00] + npc/tex/gor_5_mouth4_TA_tex_txt: + addrs: [0x80881D00, 0x80881E00] + npc/tex/gor_5_mouth5_TA_tex_txt: + addrs: [0x80881E00, 0x80881F00] + npc/tex/gor_5_mouth6_TA_tex_txt: + addrs: [0x80881F00, 0x80882000] + npc/tex/gor_5_tmem_txt: + addrs: [0x80882000, 0x80882400] + npc/mdl/xct_1_v: + addrs: [0x80882400, 0x808837B0] + type: vtx + npc/tex/xct_1_pal: + addrs: [0x80884080, 0x808840A0] + type: pal16 + npc/tex/xct_1_eye1_TA_tex_txt: + addrs: [0x808840A0, 0x808841A0] + npc/tex/xct_1_eye2_TA_tex_txt: + addrs: [0x808841A0, 0x808842A0] + npc/tex/xct_1_eye3_TA_tex_txt: + addrs: [0x808842A0, 0x808843A0] + npc/tex/xct_1_eye4_TA_tex_txt: + addrs: [0x808843A0, 0x808844A0] + npc/tex/xct_1_eye5_TA_tex_txt: + addrs: [0x808844A0, 0x808845A0] + npc/tex/xct_1_eye6_TA_tex_txt: + addrs: [0x808845A0, 0x808846A0] + npc/tex/xct_1_eye7_TA_tex_txt: + addrs: [0x808846A0, 0x808847A0] + npc/tex/xct_1_eye8_TA_tex_txt: + addrs: [0x808847A0, 0x808848A0] + npc/tex/xct_1_mouth1_TA_tex_txt: + addrs: [0x808848A0, 0x808849A0] + npc/tex/xct_1_mouth2_TA_tex_txt: + addrs: [0x808849A0, 0x80884AA0] + npc/tex/xct_1_mouth3_TA_tex_txt: + addrs: [0x80884AA0, 0x80884BA0] + npc/tex/xct_1_mouth4_TA_tex_txt: + addrs: [0x80884BA0, 0x80884CA0] + npc/tex/xct_1_mouth5_TA_tex_txt: + addrs: [0x80884CA0, 0x80884DA0] + npc/tex/xct_1_mouth6_TA_tex_txt: + addrs: [0x80884DA0, 0x80884EA0] + npc/tex/xct_1_tmem_txt: + addrs: [0x80884EA0, 0x80885420] + npc/mdl/bpt_1_v: + addrs: [0x80894928, 0x80896008] + type: vtx + npc/tex/bpt_1_pal: + addrs: [0x80896A80, 0x80896AA0] + type: pal16 + npc/tex/bpt_1_eye1_TA_tex_txt: + addrs: [0x80896AA0, 0x80896BA0] + npc/tex/bpt_1_eye2_TA_tex_txt: + addrs: [0x80896BA0, 0x80896CA0] + npc/tex/bpt_1_eye3_TA_tex_txt: + addrs: [0x80896CA0, 0x80896DA0] + npc/tex/bpt_1_eye4_TA_tex_txt: + addrs: [0x80896DA0, 0x80896EA0] + npc/tex/bpt_1_eye5_TA_tex_txt: + addrs: [0x80896EA0, 0x80896FA0] + npc/tex/bpt_1_eye6_TA_tex_txt: + addrs: [0x80896FA0, 0x808970A0] + npc/tex/bpt_1_eye7_TA_tex_txt: + addrs: [0x808970A0, 0x808971A0] + npc/tex/bpt_1_eye8_TA_tex_txt: + addrs: [0x808971A0, 0x808972A0] + npc/tex/bpt_1_tmem_txt: + addrs: [0x808972A0, 0x808979A0] + npc/mdl/pkn_1_v: + addrs: [0x808979A0, 0x80898BA0] + type: vtx + npc/tex/pkn_1_pal: + addrs: [0x808993E0, 0x80899400] + type: pal16 + npc/tex/pkn_1_tmem_txt: + addrs: [0x80899400, 0x80899A80] + npc/mdl/hem_1_v: + addrs: [0x8089BA80, 0x8089CF50] + type: vtx + npc/tex/hem_1_pal: + addrs: [0x8089D6E0, 0x8089D700] + type: pal16 + npc/tex/hem_1_tmem_txt: + addrs: [0x8089D700, 0x8089DE40] + npc/mdl/hip_1_v: + addrs: [0x8089DE40, 0x8089FAA0] + type: vtx + npc/tex/hip_1_pal: + addrs: [0x808A0560, 0x808A0580] + type: pal16 + npc/tex/hip_1_eye1_TA_tex_txt: + addrs: [0x808A0580, 0x808A0680] + npc/tex/hip_1_eye2_TA_tex_txt: + addrs: [0x808A0680, 0x808A0780] + npc/tex/hip_1_eye3_TA_tex_txt: + addrs: [0x808A0780, 0x808A0880] + npc/tex/hip_1_eye4_TA_tex_txt: + addrs: [0x808A0880, 0x808A0980] + npc/tex/hip_1_eye5_TA_tex_txt: + addrs: [0x808A0980, 0x808A0A80] + npc/tex/hip_1_eye6_TA_tex_txt: + addrs: [0x808A0A80, 0x808A0B80] + npc/tex/hip_1_eye7_TA_tex_txt: + addrs: [0x808A0B80, 0x808A0C80] + npc/tex/hip_1_eye8_TA_tex_txt: + addrs: [0x808A0C80, 0x808A0D80] + npc/tex/hip_1_tmem_txt: + addrs: [0x808A0D80, 0x808A1280] + npc/tex/hip_2_pal: + addrs: [0x808A1280, 0x808A12A0] + type: pal16 + npc/tex/hip_2_eye1_TA_tex_txt: + addrs: [0x808A12A0, 0x808A13A0] + npc/tex/hip_2_eye2_TA_tex_txt: + addrs: [0x808A13A0, 0x808A14A0] + npc/tex/hip_2_eye3_TA_tex_txt: + addrs: [0x808A14A0, 0x808A15A0] + npc/tex/hip_2_eye4_TA_tex_txt: + addrs: [0x808A15A0, 0x808A16A0] + npc/tex/hip_2_eye5_TA_tex_txt: + addrs: [0x808A16A0, 0x808A17A0] + npc/tex/hip_2_eye6_TA_tex_txt: + addrs: [0x808A17A0, 0x808A18A0] + npc/tex/hip_2_eye7_TA_tex_txt: + addrs: [0x808A18A0, 0x808A19A0] + npc/tex/hip_2_eye8_TA_tex_txt: + addrs: [0x808A19A0, 0x808A1AA0] + npc/tex/hip_2_tmem_txt: + addrs: [0x808A1AA0, 0x808A1FA0] + npc/tex/hip_3_pal: + addrs: [0x808A1FA0, 0x808A1FC0] + type: pal16 + npc/tex/hip_3_eye1_TA_tex_txt: + addrs: [0x808A1FC0, 0x808A20C0] + npc/tex/hip_3_eye2_TA_tex_txt: + addrs: [0x808A20C0, 0x808A21C0] + npc/tex/hip_3_eye3_TA_tex_txt: + addrs: [0x808A21C0, 0x808A22C0] + npc/tex/hip_3_eye4_TA_tex_txt: + addrs: [0x808A22C0, 0x808A23C0] + npc/tex/hip_3_eye5_TA_tex_txt: + addrs: [0x808A23C0, 0x808A24C0] + npc/tex/hip_3_eye6_TA_tex_txt: + addrs: [0x808A24C0, 0x808A25C0] + npc/tex/hip_3_eye7_TA_tex_txt: + addrs: [0x808A25C0, 0x808A26C0] + npc/tex/hip_3_eye8_TA_tex_txt: + addrs: [0x808A26C0, 0x808A27C0] + npc/tex/hip_3_tmem_txt: + addrs: [0x808A27C0, 0x808A2CC0] + npc/tex/hip_4_pal: + addrs: [0x808A2CC0, 0x808A2CE0] + type: pal16 + npc/tex/hip_4_eye1_TA_tex_txt: + addrs: [0x808A2CE0, 0x808A2DE0] + npc/tex/hip_4_eye2_TA_tex_txt: + addrs: [0x808A2DE0, 0x808A2EE0] + npc/tex/hip_4_eye3_TA_tex_txt: + addrs: [0x808A2EE0, 0x808A2FE0] + npc/tex/hip_4_eye4_TA_tex_txt: + addrs: [0x808A2FE0, 0x808A30E0] + npc/tex/hip_4_eye5_TA_tex_txt: + addrs: [0x808A30E0, 0x808A31E0] + npc/tex/hip_4_eye6_TA_tex_txt: + addrs: [0x808A31E0, 0x808A32E0] + npc/tex/hip_4_eye7_TA_tex_txt: + addrs: [0x808A32E0, 0x808A33E0] + npc/tex/hip_4_eye8_TA_tex_txt: + addrs: [0x808A33E0, 0x808A34E0] + npc/tex/hip_4_tmem_txt: + addrs: [0x808A34E0, 0x808A39E0] + npc/tex/hip_5_pal: + addrs: [0x808A39E0, 0x808A3A00] + type: pal16 + npc/tex/hip_5_eye1_TA_tex_txt: + addrs: [0x808A3A00, 0x808A3B00] + npc/tex/hip_5_eye2_TA_tex_txt: + addrs: [0x808A3B00, 0x808A3C00] + npc/tex/hip_5_eye3_TA_tex_txt: + addrs: [0x808A3C00, 0x808A3D00] + npc/tex/hip_5_eye4_TA_tex_txt: + addrs: [0x808A3D00, 0x808A3E00] + npc/tex/hip_5_eye5_TA_tex_txt: + addrs: [0x808A3E00, 0x808A3F00] + npc/tex/hip_5_eye6_TA_tex_txt: + addrs: [0x808A3F00, 0x808A4000] + npc/tex/hip_5_eye7_TA_tex_txt: + addrs: [0x808A4000, 0x808A4100] + npc/tex/hip_5_eye8_TA_tex_txt: + addrs: [0x808A4100, 0x808A4200] + npc/tex/hip_5_tmem_txt: + addrs: [0x808A4200, 0x808A4700] + npc/tex/hip_6_pal: + addrs: [0x808A4700, 0x808A4720] + type: pal16 + npc/tex/hip_6_eye1_TA_tex_txt: + addrs: [0x808A4720, 0x808A4820] + npc/tex/hip_6_eye2_TA_tex_txt: + addrs: [0x808A4820, 0x808A4920] + npc/tex/hip_6_eye3_TA_tex_txt: + addrs: [0x808A4920, 0x808A4A20] + npc/tex/hip_6_eye4_TA_tex_txt: + addrs: [0x808A4A20, 0x808A4B20] + npc/tex/hip_6_eye5_TA_tex_txt: + addrs: [0x808A4B20, 0x808A4C20] + npc/tex/hip_6_eye6_TA_tex_txt: + addrs: [0x808A4C20, 0x808A4D20] + npc/tex/hip_6_eye7_TA_tex_txt: + addrs: [0x808A4D20, 0x808A4E20] + npc/tex/hip_6_eye8_TA_tex_txt: + addrs: [0x808A4E20, 0x808A4F20] + npc/tex/hip_6_tmem_txt: + addrs: [0x808A4F20, 0x808A5420] + npc/tex/hip_7_pal: + addrs: [0x808A5420, 0x808A5440] + type: pal16 + npc/tex/hip_7_eye1_TA_tex_txt: + addrs: [0x808A5440, 0x808A5540] + npc/tex/hip_7_eye2_TA_tex_txt: + addrs: [0x808A5540, 0x808A5640] + npc/tex/hip_7_eye3_TA_tex_txt: + addrs: [0x808A5640, 0x808A5740] + npc/tex/hip_7_eye4_TA_tex_txt: + addrs: [0x808A5740, 0x808A5840] + npc/tex/hip_7_eye5_TA_tex_txt: + addrs: [0x808A5840, 0x808A5940] + npc/tex/hip_7_eye6_TA_tex_txt: + addrs: [0x808A5940, 0x808A5A40] + npc/tex/hip_7_eye7_TA_tex_txt: + addrs: [0x808A5A40, 0x808A5B40] + npc/tex/hip_7_eye8_TA_tex_txt: + addrs: [0x808A5B40, 0x808A5C40] + npc/tex/hip_7_tmem_txt: + addrs: [0x808A5C40, 0x808A6140] + npc/mdl/hrs_1_v: + addrs: [0x808A6140, 0x808A7A70] + type: vtx + npc/tex/hrs_1_pal: + addrs: [0x808A8520, 0x808A8540] + type: pal16 + npc/tex/hrs_1_eye1_TA_tex_txt: + addrs: [0x808A8540, 0x808A8640] + npc/tex/hrs_1_eye2_TA_tex_txt: + addrs: [0x808A8640, 0x808A8740] + npc/tex/hrs_1_eye3_TA_tex_txt: + addrs: [0x808A8740, 0x808A8840] + npc/tex/hrs_1_eye4_TA_tex_txt: + addrs: [0x808A8840, 0x808A8940] + npc/tex/hrs_1_eye5_TA_tex_txt: + addrs: [0x808A8940, 0x808A8A40] + npc/tex/hrs_1_eye6_TA_tex_txt: + addrs: [0x808A8A40, 0x808A8B40] + npc/tex/hrs_1_eye7_TA_tex_txt: + addrs: [0x808A8B40, 0x808A8C40] + npc/tex/hrs_1_eye8_TA_tex_txt: + addrs: [0x808A8C40, 0x808A8D40] + npc/tex/hrs_1_tmem_txt: + addrs: [0x808A8D40, 0x808A92C0] + npc/tex/hrs_2_pal: + addrs: [0x808A92C0, 0x808A92E0] + type: pal16 + npc/tex/hrs_2_eye1_TA_tex_txt: + addrs: [0x808A92E0, 0x808A93E0] + npc/tex/hrs_2_eye2_TA_tex_txt: + addrs: [0x808A93E0, 0x808A94E0] + npc/tex/hrs_2_eye3_TA_tex_txt: + addrs: [0x808A94E0, 0x808A95E0] + npc/tex/hrs_2_eye4_TA_tex_txt: + addrs: [0x808A95E0, 0x808A96E0] + npc/tex/hrs_2_eye5_TA_tex_txt: + addrs: [0x808A96E0, 0x808A97E0] + npc/tex/hrs_2_eye6_TA_tex_txt: + addrs: [0x808A97E0, 0x808A98E0] + npc/tex/hrs_2_eye7_TA_tex_txt: + addrs: [0x808A98E0, 0x808A99E0] + npc/tex/hrs_2_eye8_TA_tex_txt: + addrs: [0x808A99E0, 0x808A9AE0] + npc/tex/hrs_2_tmem_txt: + addrs: [0x808A9AE0, 0x808AA060] + npc/tex/hrs_3_pal: + addrs: [0x808AA060, 0x808AA080] + type: pal16 + npc/tex/hrs_3_eye1_TA_tex_txt: + addrs: [0x808AA080, 0x808AA180] + npc/tex/hrs_3_eye2_TA_tex_txt: + addrs: [0x808AA180, 0x808AA280] + npc/tex/hrs_3_eye3_TA_tex_txt: + addrs: [0x808AA280, 0x808AA380] + npc/tex/hrs_3_eye4_TA_tex_txt: + addrs: [0x808AA380, 0x808AA480] + npc/tex/hrs_3_eye5_TA_tex_txt: + addrs: [0x808AA480, 0x808AA580] + npc/tex/hrs_3_eye6_TA_tex_txt: + addrs: [0x808AA580, 0x808AA680] + npc/tex/hrs_3_eye7_TA_tex_txt: + addrs: [0x808AA680, 0x808AA780] + npc/tex/hrs_3_eye8_TA_tex_txt: + addrs: [0x808AA780, 0x808AA880] + npc/tex/hrs_3_tmem_txt: + addrs: [0x808AA880, 0x808AAE00] + npc/tex/hrs_4_pal: + addrs: [0x808AAE00, 0x808AAE20] + type: pal16 + npc/tex/hrs_4_eye1_TA_tex_txt: + addrs: [0x808AAE20, 0x808AAF20] + npc/tex/hrs_4_eye2_TA_tex_txt: + addrs: [0x808AAF20, 0x808AB020] + npc/tex/hrs_4_eye3_TA_tex_txt: + addrs: [0x808AB020, 0x808AB120] + npc/tex/hrs_4_eye4_TA_tex_txt: + addrs: [0x808AB120, 0x808AB220] + npc/tex/hrs_4_eye5_TA_tex_txt: + addrs: [0x808AB220, 0x808AB320] + npc/tex/hrs_4_eye6_TA_tex_txt: + addrs: [0x808AB320, 0x808AB420] + npc/tex/hrs_4_eye7_TA_tex_txt: + addrs: [0x808AB420, 0x808AB520] + npc/tex/hrs_4_eye8_TA_tex_txt: + addrs: [0x808AB520, 0x808AB620] + npc/tex/hrs_4_tmem_txt: + addrs: [0x808AB620, 0x808ABBA0] + npc/tex/hrs_5_pal: + addrs: [0x808ABBA0, 0x808ABBC0] + type: pal16 + npc/tex/hrs_5_eye1_TA_tex_txt: + addrs: [0x808ABBC0, 0x808ABCC0] + npc/tex/hrs_5_eye2_TA_tex_txt: + addrs: [0x808ABCC0, 0x808ABDC0] + npc/tex/hrs_5_eye3_TA_tex_txt: + addrs: [0x808ABDC0, 0x808ABEC0] + npc/tex/hrs_5_eye4_TA_tex_txt: + addrs: [0x808ABEC0, 0x808ABFC0] + npc/tex/hrs_5_eye5_TA_tex_txt: + addrs: [0x808ABFC0, 0x808AC0C0] + npc/tex/hrs_5_eye6_TA_tex_txt: + addrs: [0x808AC0C0, 0x808AC1C0] + npc/tex/hrs_5_eye7_TA_tex_txt: + addrs: [0x808AC1C0, 0x808AC2C0] + npc/tex/hrs_5_eye8_TA_tex_txt: + addrs: [0x808AC2C0, 0x808AC3C0] + npc/tex/hrs_5_tmem_txt: + addrs: [0x808AC3C0, 0x808AC940] + npc/tex/hrs_6_pal: + addrs: [0x808AC940, 0x808AC960] + type: pal16 + npc/tex/hrs_6_eye1_TA_tex_txt: + addrs: [0x808AC960, 0x808ACA60] + npc/tex/hrs_6_eye2_TA_tex_txt: + addrs: [0x808ACA60, 0x808ACB60] + npc/tex/hrs_6_eye3_TA_tex_txt: + addrs: [0x808ACB60, 0x808ACC60] + npc/tex/hrs_6_eye4_TA_tex_txt: + addrs: [0x808ACC60, 0x808ACD60] + npc/tex/hrs_6_eye5_TA_tex_txt: + addrs: [0x808ACD60, 0x808ACE60] + npc/tex/hrs_6_eye6_TA_tex_txt: + addrs: [0x808ACE60, 0x808ACF60] + npc/tex/hrs_6_eye7_TA_tex_txt: + addrs: [0x808ACF60, 0x808AD060] + npc/tex/hrs_6_eye8_TA_tex_txt: + addrs: [0x808AD060, 0x808AD160] + npc/tex/hrs_6_tmem_txt: + addrs: [0x808AD160, 0x808AD6E0] + npc/tex/hrs_7_pal: + addrs: [0x808AD6E0, 0x808AD700] + type: pal16 + npc/tex/hrs_7_eye1_TA_tex_txt: + addrs: [0x808AD700, 0x808AD800] + npc/tex/hrs_7_eye2_TA_tex_txt: + addrs: [0x808AD800, 0x808AD900] + npc/tex/hrs_7_eye3_TA_tex_txt: + addrs: [0x808AD900, 0x808ADA00] + npc/tex/hrs_7_eye4_TA_tex_txt: + addrs: [0x808ADA00, 0x808ADB00] + npc/tex/hrs_7_eye5_TA_tex_txt: + addrs: [0x808ADB00, 0x808ADC00] + npc/tex/hrs_7_eye6_TA_tex_txt: + addrs: [0x808ADC00, 0x808ADD00] + npc/tex/hrs_7_eye7_TA_tex_txt: + addrs: [0x808ADD00, 0x808ADE00] + npc/tex/hrs_7_eye8_TA_tex_txt: + addrs: [0x808ADE00, 0x808ADF00] + npc/tex/hrs_7_tmem_txt: + addrs: [0x808ADF00, 0x808AE480] + npc/tex/hrs_8_pal: + addrs: [0x808AE480, 0x808AE4A0] + type: pal16 + npc/tex/hrs_8_eye1_TA_tex_txt: + addrs: [0x808AE4A0, 0x808AE5A0] + npc/tex/hrs_8_eye2_TA_tex_txt: + addrs: [0x808AE5A0, 0x808AE6A0] + npc/tex/hrs_8_eye3_TA_tex_txt: + addrs: [0x808AE6A0, 0x808AE7A0] + npc/tex/hrs_8_eye4_TA_tex_txt: + addrs: [0x808AE7A0, 0x808AE8A0] + npc/tex/hrs_8_eye5_TA_tex_txt: + addrs: [0x808AE8A0, 0x808AE9A0] + npc/tex/hrs_8_eye6_TA_tex_txt: + addrs: [0x808AE9A0, 0x808AEAA0] + npc/tex/hrs_8_eye7_TA_tex_txt: + addrs: [0x808AEAA0, 0x808AEBA0] + npc/tex/hrs_8_eye8_TA_tex_txt: + addrs: [0x808AEBA0, 0x808AECA0] + npc/tex/hrs_8_tmem_txt: + addrs: [0x808AECA0, 0x808AF220] + npc/mdl/plj_1_v: + addrs: [0x808B8D00, 0x808BA3A0] + type: vtx + npc/tex/plj_1_pal: + addrs: [0x808BAD00, 0x808BAD20] + type: pal16 + npc/tex/plj_1_eye1_TA_tex_txt: + addrs: [0x808BAD20, 0x808BAE20] + npc/tex/plj_1_eye2_TA_tex_txt: + addrs: [0x808BAE20, 0x808BAF20] + npc/tex/plj_1_eye3_TA_tex_txt: + addrs: [0x808BAF20, 0x808BB020] + npc/tex/plj_1_eye4_TA_tex_txt: + addrs: [0x808BB020, 0x808BB120] + npc/tex/plj_1_eye5_TA_tex_txt: + addrs: [0x808BB120, 0x808BB220] + npc/tex/plj_1_eye6_TA_tex_txt: + addrs: [0x808BB220, 0x808BB320] + npc/tex/plj_1_eye7_TA_tex_txt: + addrs: [0x808BB320, 0x808BB420] + npc/tex/plj_1_eye8_TA_tex_txt: + addrs: [0x808BB420, 0x808BB520] + npc/tex/plj_1_mouth1_TA_tex_txt: + addrs: [0x808BB520, 0x808BB620] + npc/tex/plj_1_mouth2_TA_tex_txt: + addrs: [0x808BB620, 0x808BB720] + npc/tex/plj_1_mouth3_TA_tex_txt: + addrs: [0x808BB720, 0x808BB820] + npc/tex/plj_1_mouth4_TA_tex_txt: + addrs: [0x808BB820, 0x808BB920] + npc/tex/plj_1_mouth5_TA_tex_txt: + addrs: [0x808BB920, 0x808BBA20] + npc/tex/plj_1_mouth6_TA_tex_txt: + addrs: [0x808BBA20, 0x808BBB20] + npc/tex/plj_1_tmem_txt: + addrs: [0x808BBB20, 0x808BC1A0] + npc/mdl/xsq_1_v: + addrs: [0x808BC1A0, 0x808BD890] + type: vtx + npc/tex/xsq_1_pal: + addrs: [0x808BE240, 0x808BE260] + type: pal16 + npc/tex/xsq_1_eye1_TA_tex_txt: + addrs: [0x808BE260, 0x808BE360] + npc/tex/xsq_1_eye2_TA_tex_txt: + addrs: [0x808BE360, 0x808BE460] + npc/tex/xsq_1_eye3_TA_tex_txt: + addrs: [0x808BE460, 0x808BE560] + npc/tex/xsq_1_eye4_TA_tex_txt: + addrs: [0x808BE560, 0x808BE660] + npc/tex/xsq_1_eye5_TA_tex_txt: + addrs: [0x808BE660, 0x808BE760] + npc/tex/xsq_1_eye6_TA_tex_txt: + addrs: [0x808BE760, 0x808BE860] + npc/tex/xsq_1_eye7_TA_tex_txt: + addrs: [0x808BE860, 0x808BE960] + npc/tex/xsq_1_eye8_TA_tex_txt: + addrs: [0x808BE960, 0x808BEA60] + npc/tex/xsq_1_mouth1_TA_tex_txt: + addrs: [0x808BEA60, 0x808BEB60] + npc/tex/xsq_1_mouth2_TA_tex_txt: + addrs: [0x808BEB60, 0x808BEC60] + npc/tex/xsq_1_mouth3_TA_tex_txt: + addrs: [0x808BEC60, 0x808BED60] + npc/tex/xsq_1_mouth4_TA_tex_txt: + addrs: [0x808BED60, 0x808BEE60] + npc/tex/xsq_1_mouth5_TA_tex_txt: + addrs: [0x808BEE60, 0x808BEF60] + npc/tex/xsq_1_mouth6_TA_tex_txt: + addrs: [0x808BEF60, 0x808BF060] + npc/tex/xsq_1_tmem_txt: + addrs: [0x808BF060, 0x808BF660] + npc/mdl/boa_1_v: + addrs: [0x808C88A8, 0x808CA4F8] + type: vtx + npc/tex/boa_1_pal: + addrs: [0x808CAF60, 0x808CAF80] + type: pal16 + npc/tex/boa_1_eye1_TA_tex_txt: + addrs: [0x808CAF80, 0x808CB080] + npc/tex/boa_1_eye2_TA_tex_txt: + addrs: [0x808CB080, 0x808CB180] + npc/tex/boa_1_eye3_TA_tex_txt: + addrs: [0x808CB180, 0x808CB280] + npc/tex/boa_1_eye4_TA_tex_txt: + addrs: [0x808CB280, 0x808CB380] + npc/tex/boa_1_eye5_TA_tex_txt: + addrs: [0x808CB380, 0x808CB480] + npc/tex/boa_1_eye6_TA_tex_txt: + addrs: [0x808CB480, 0x808CB580] + npc/tex/boa_1_eye7_TA_tex_txt: + addrs: [0x808CB580, 0x808CB680] + npc/tex/boa_1_eye8_TA_tex_txt: + addrs: [0x808CB680, 0x808CB780] + npc/tex/boa_1_tmem_txt: + addrs: [0x808CB780, 0x808CBD40] + npc/mdl/kgr_1_v: + addrs: [0x808CBD40, 0x808CD830] + type: vtx + npc/tex/kgr_1_pal: + addrs: [0x808CE3E0, 0x808CE400] + type: pal16 + npc/tex/kgr_1_eye1_TA_tex_txt: + addrs: [0x808CE400, 0x808CE500] + npc/tex/kgr_1_eye2_TA_tex_txt: + addrs: [0x808CE500, 0x808CE600] + npc/tex/kgr_1_eye3_TA_tex_txt: + addrs: [0x808CE600, 0x808CE700] + npc/tex/kgr_1_eye4_TA_tex_txt: + addrs: [0x808CE700, 0x808CE800] + npc/tex/kgr_1_eye5_TA_tex_txt: + addrs: [0x808CE800, 0x808CE900] + npc/tex/kgr_1_eye6_TA_tex_txt: + addrs: [0x808CE900, 0x808CEA00] + npc/tex/kgr_1_eye7_TA_tex_txt: + addrs: [0x808CEA00, 0x808CEB00] + npc/tex/kgr_1_eye8_TA_tex_txt: + addrs: [0x808CEB00, 0x808CEC00] + npc/tex/kgr_1_tmem_txt: + addrs: [0x808CEC00, 0x808CF040] + npc/tex/kgr_2_pal: + addrs: [0x808CF040, 0x808CF060] + type: pal16 + npc/tex/kgr_2_eye1_TA_tex_txt: + addrs: [0x808CF060, 0x808CF160] + npc/tex/kgr_2_eye2_TA_tex_txt: + addrs: [0x808CF160, 0x808CF260] + npc/tex/kgr_2_eye3_TA_tex_txt: + addrs: [0x808CF260, 0x808CF360] + npc/tex/kgr_2_eye4_TA_tex_txt: + addrs: [0x808CF360, 0x808CF460] + npc/tex/kgr_2_eye5_TA_tex_txt: + addrs: [0x808CF460, 0x808CF560] + npc/tex/kgr_2_eye6_TA_tex_txt: + addrs: [0x808CF560, 0x808CF660] + npc/tex/kgr_2_eye7_TA_tex_txt: + addrs: [0x808CF660, 0x808CF760] + npc/tex/kgr_2_eye8_TA_tex_txt: + addrs: [0x808CF760, 0x808CF860] + npc/tex/kgr_2_tmem_txt: + addrs: [0x808CF860, 0x808CFCA0] + npc/tex/kgr_3_pal: + addrs: [0x808CFCA0, 0x808CFCC0] + type: pal16 + npc/tex/kgr_3_eye1_TA_tex_txt: + addrs: [0x808CFCC0, 0x808CFDC0] + npc/tex/kgr_3_eye2_TA_tex_txt: + addrs: [0x808CFDC0, 0x808CFEC0] + npc/tex/kgr_3_eye3_TA_tex_txt: + addrs: [0x808CFEC0, 0x808CFFC0] + npc/tex/kgr_3_eye4_TA_tex_txt: + addrs: [0x808CFFC0, 0x808D00C0] + npc/tex/kgr_3_eye5_TA_tex_txt: + addrs: [0x808D00C0, 0x808D01C0] + npc/tex/kgr_3_eye6_TA_tex_txt: + addrs: [0x808D01C0, 0x808D02C0] + npc/tex/kgr_3_eye7_TA_tex_txt: + addrs: [0x808D02C0, 0x808D03C0] + npc/tex/kgr_3_eye8_TA_tex_txt: + addrs: [0x808D03C0, 0x808D04C0] + npc/tex/kgr_3_tmem_txt: + addrs: [0x808D04C0, 0x808D0900] + npc/tex/kgr_4_pal: + addrs: [0x808D0900, 0x808D0920] + type: pal16 + npc/tex/kgr_4_eye1_TA_tex_txt: + addrs: [0x808D0920, 0x808D0A20] + npc/tex/kgr_4_eye2_TA_tex_txt: + addrs: [0x808D0A20, 0x808D0B20] + npc/tex/kgr_4_eye3_TA_tex_txt: + addrs: [0x808D0B20, 0x808D0C20] + npc/tex/kgr_4_eye4_TA_tex_txt: + addrs: [0x808D0C20, 0x808D0D20] + npc/tex/kgr_4_eye5_TA_tex_txt: + addrs: [0x808D0D20, 0x808D0E20] + npc/tex/kgr_4_eye6_TA_tex_txt: + addrs: [0x808D0E20, 0x808D0F20] + npc/tex/kgr_4_eye7_TA_tex_txt: + addrs: [0x808D0F20, 0x808D1020] + npc/tex/kgr_4_eye8_TA_tex_txt: + addrs: [0x808D1020, 0x808D1120] + npc/tex/kgr_4_tmem_txt: + addrs: [0x808D1120, 0x808D1560] + npc/tex/kgr_5_pal: + addrs: [0x808D1560, 0x808D1580] + type: pal16 + npc/tex/kgr_5_eye1_TA_tex_txt: + addrs: [0x808D1580, 0x808D1680] + npc/tex/kgr_5_eye2_TA_tex_txt: + addrs: [0x808D1680, 0x808D1780] + npc/tex/kgr_5_eye3_TA_tex_txt: + addrs: [0x808D1780, 0x808D1880] + npc/tex/kgr_5_eye4_TA_tex_txt: + addrs: [0x808D1880, 0x808D1980] + npc/tex/kgr_5_eye5_TA_tex_txt: + addrs: [0x808D1980, 0x808D1A80] + npc/tex/kgr_5_eye6_TA_tex_txt: + addrs: [0x808D1A80, 0x808D1B80] + npc/tex/kgr_5_eye7_TA_tex_txt: + addrs: [0x808D1B80, 0x808D1C80] + npc/tex/kgr_5_eye8_TA_tex_txt: + addrs: [0x808D1C80, 0x808D1D80] + npc/tex/kgr_5_tmem_txt: + addrs: [0x808D1D80, 0x808D21C0] + npc/tex/kgr_6_pal: + addrs: [0x808D21C0, 0x808D21E0] + type: pal16 + npc/tex/kgr_6_eye1_TA_tex_txt: + addrs: [0x808D21E0, 0x808D22E0] + npc/tex/kgr_6_eye2_TA_tex_txt: + addrs: [0x808D22E0, 0x808D23E0] + npc/tex/kgr_6_eye3_TA_tex_txt: + addrs: [0x808D23E0, 0x808D24E0] + npc/tex/kgr_6_eye4_TA_tex_txt: + addrs: [0x808D24E0, 0x808D25E0] + npc/tex/kgr_6_eye5_TA_tex_txt: + addrs: [0x808D25E0, 0x808D26E0] + npc/tex/kgr_6_eye6_TA_tex_txt: + addrs: [0x808D26E0, 0x808D27E0] + npc/tex/kgr_6_eye7_TA_tex_txt: + addrs: [0x808D27E0, 0x808D28E0] + npc/tex/kgr_6_eye8_TA_tex_txt: + addrs: [0x808D28E0, 0x808D29E0] + npc/tex/kgr_6_tmem_txt: + addrs: [0x808D29E0, 0x808D2E20] + npc/mdl/fob_1_v: + addrs: [0x808D2E20, 0x808D4850] + type: vtx + npc/tex/fob_1_pal: + addrs: [0x808D5360, 0x808D5380] + type: pal16 + npc/tex/fob_1_eye1_TA_tex_txt: + addrs: [0x808D5380, 0x808D5480] + npc/tex/fob_1_eye2_TA_tex_txt: + addrs: [0x808D5480, 0x808D5580] + npc/tex/fob_1_eye3_TA_tex_txt: + addrs: [0x808D5580, 0x808D5680] + npc/tex/fob_1_eye4_TA_tex_txt: + addrs: [0x808D5680, 0x808D5780] + npc/tex/fob_1_eye5_TA_tex_txt: + addrs: [0x808D5780, 0x808D5880] + npc/tex/fob_1_eye6_TA_tex_txt: + addrs: [0x808D5880, 0x808D5980] + npc/tex/fob_1_eye7_TA_tex_txt: + addrs: [0x808D5980, 0x808D5A80] + npc/tex/fob_1_eye8_TA_tex_txt: + addrs: [0x808D5A80, 0x808D5B80] + npc/tex/fob_1_tmem_txt: + addrs: [0x808D5B80, 0x808D62C0] + npc/mdl/kal_1_v: + addrs: [0x808D62C0, 0x808D7950] + type: vtx + npc/tex/kal_1_pal: + addrs: [0x808D81E0, 0x808D8200] + type: pal16 + npc/tex/kal_1_eye1_TA_tex_txt: + addrs: [0x808D8200, 0x808D8300] + npc/tex/kal_1_eye2_TA_tex_txt: + addrs: [0x808D8300, 0x808D8400] + npc/tex/kal_1_eye3_TA_tex_txt: + addrs: [0x808D8400, 0x808D8500] + npc/tex/kal_1_eye4_TA_tex_txt: + addrs: [0x808D8500, 0x808D8600] + npc/tex/kal_1_eye5_TA_tex_txt: + addrs: [0x808D8600, 0x808D8700] + npc/tex/kal_1_eye6_TA_tex_txt: + addrs: [0x808D8700, 0x808D8800] + npc/tex/kal_1_eye7_TA_tex_txt: + addrs: [0x808D8800, 0x808D8900] + npc/tex/kal_1_eye8_TA_tex_txt: + addrs: [0x808D8900, 0x808D8A00] + npc/tex/kal_1_mouth1_TA_tex_txt: + addrs: [0x808D8A00, 0x808D8B00] + npc/tex/kal_1_mouth2_TA_tex_txt: + addrs: [0x808D8B00, 0x808D8C00] + npc/tex/kal_1_mouth3_TA_tex_txt: + addrs: [0x808D8C00, 0x808D8D00] + npc/tex/kal_1_mouth4_TA_tex_txt: + addrs: [0x808D8D00, 0x808D8E00] + npc/tex/kal_1_mouth5_TA_tex_txt: + addrs: [0x808D8E00, 0x808D8F00] + npc/tex/kal_1_mouth6_TA_tex_txt: + addrs: [0x808D8F00, 0x808D9000] + npc/tex/kal_1_tmem_txt: + addrs: [0x808D9000, 0x808D9480] + npc/tex/kal_2_pal: + addrs: [0x808D9480, 0x808D94A0] + type: pal16 + npc/tex/kal_2_eye1_TA_tex_txt: + addrs: [0x808D94A0, 0x808D95A0] + npc/tex/kal_2_eye2_TA_tex_txt: + addrs: [0x808D95A0, 0x808D96A0] + npc/tex/kal_2_eye3_TA_tex_txt: + addrs: [0x808D96A0, 0x808D97A0] + npc/tex/kal_2_eye4_TA_tex_txt: + addrs: [0x808D97A0, 0x808D98A0] + npc/tex/kal_2_eye5_TA_tex_txt: + addrs: [0x808D98A0, 0x808D99A0] + npc/tex/kal_2_eye6_TA_tex_txt: + addrs: [0x808D99A0, 0x808D9AA0] + npc/tex/kal_2_eye7_TA_tex_txt: + addrs: [0x808D9AA0, 0x808D9BA0] + npc/tex/kal_2_eye8_TA_tex_txt: + addrs: [0x808D9BA0, 0x808D9CA0] + npc/tex/kal_2_mouth1_TA_tex_txt: + addrs: [0x808D9CA0, 0x808D9DA0] + npc/tex/kal_2_mouth2_TA_tex_txt: + addrs: [0x808D9DA0, 0x808D9EA0] + npc/tex/kal_2_mouth3_TA_tex_txt: + addrs: [0x808D9EA0, 0x808D9FA0] + npc/tex/kal_2_mouth4_TA_tex_txt: + addrs: [0x808D9FA0, 0x808DA0A0] + npc/tex/kal_2_mouth5_TA_tex_txt: + addrs: [0x808DA0A0, 0x808DA1A0] + npc/tex/kal_2_mouth6_TA_tex_txt: + addrs: [0x808DA1A0, 0x808DA2A0] + npc/tex/kal_2_tmem_txt: + addrs: [0x808DA2A0, 0x808DA720] + npc/tex/kal_3_pal: + addrs: [0x808DA720, 0x808DA740] + type: pal16 + npc/tex/kal_3_eye1_TA_tex_txt: + addrs: [0x808DA740, 0x808DA840] + npc/tex/kal_3_eye2_TA_tex_txt: + addrs: [0x808DA840, 0x808DA940] + npc/tex/kal_3_eye3_TA_tex_txt: + addrs: [0x808DA940, 0x808DAA40] + npc/tex/kal_3_eye4_TA_tex_txt: + addrs: [0x808DAA40, 0x808DAB40] + npc/tex/kal_3_eye5_TA_tex_txt: + addrs: [0x808DAB40, 0x808DAC40] + npc/tex/kal_3_eye6_TA_tex_txt: + addrs: [0x808DAC40, 0x808DAD40] + npc/tex/kal_3_eye7_TA_tex_txt: + addrs: [0x808DAD40, 0x808DAE40] + npc/tex/kal_3_eye8_TA_tex_txt: + addrs: [0x808DAE40, 0x808DAF40] + npc/tex/kal_3_mouth1_TA_tex_txt: + addrs: [0x808DAF40, 0x808DB040] + npc/tex/kal_3_mouth2_TA_tex_txt: + addrs: [0x808DB040, 0x808DB140] + npc/tex/kal_3_mouth3_TA_tex_txt: + addrs: [0x808DB140, 0x808DB240] + npc/tex/kal_3_mouth4_TA_tex_txt: + addrs: [0x808DB240, 0x808DB340] + npc/tex/kal_3_mouth5_TA_tex_txt: + addrs: [0x808DB340, 0x808DB440] + npc/tex/kal_3_mouth6_TA_tex_txt: + addrs: [0x808DB440, 0x808DB540] + npc/tex/kal_3_tmem_txt: + addrs: [0x808DB540, 0x808DB9C0] + npc/tex/kal_4_pal: + addrs: [0x808DB9C0, 0x808DB9E0] + type: pal16 + npc/tex/kal_4_eye1_TA_tex_txt: + addrs: [0x808DB9E0, 0x808DBAE0] + npc/tex/kal_4_eye2_TA_tex_txt: + addrs: [0x808DBAE0, 0x808DBBE0] + npc/tex/kal_4_eye3_TA_tex_txt: + addrs: [0x808DBBE0, 0x808DBCE0] + npc/tex/kal_4_eye4_TA_tex_txt: + addrs: [0x808DBCE0, 0x808DBDE0] + npc/tex/kal_4_eye5_TA_tex_txt: + addrs: [0x808DBDE0, 0x808DBEE0] + npc/tex/kal_4_eye6_TA_tex_txt: + addrs: [0x808DBEE0, 0x808DBFE0] + npc/tex/kal_4_eye7_TA_tex_txt: + addrs: [0x808DBFE0, 0x808DC0E0] + npc/tex/kal_4_eye8_TA_tex_txt: + addrs: [0x808DC0E0, 0x808DC1E0] + npc/tex/kal_4_mouth1_TA_tex_txt: + addrs: [0x808DC1E0, 0x808DC2E0] + npc/tex/kal_4_mouth2_TA_tex_txt: + addrs: [0x808DC2E0, 0x808DC3E0] + npc/tex/kal_4_mouth3_TA_tex_txt: + addrs: [0x808DC3E0, 0x808DC4E0] + npc/tex/kal_4_mouth4_TA_tex_txt: + addrs: [0x808DC4E0, 0x808DC5E0] + npc/tex/kal_4_mouth5_TA_tex_txt: + addrs: [0x808DC5E0, 0x808DC6E0] + npc/tex/kal_4_mouth6_TA_tex_txt: + addrs: [0x808DC6E0, 0x808DC7E0] + npc/tex/kal_4_tmem_txt: + addrs: [0x808DC7E0, 0x808DCC60] + npc/tex/kal_5_pal: + addrs: [0x808DCC60, 0x808DCC80] + type: pal16 + npc/tex/kal_5_eye1_TA_tex_txt: + addrs: [0x808DCC80, 0x808DCD80] + npc/tex/kal_5_eye2_TA_tex_txt: + addrs: [0x808DCD80, 0x808DCE80] + npc/tex/kal_5_eye3_TA_tex_txt: + addrs: [0x808DCE80, 0x808DCF80] + npc/tex/kal_5_eye4_TA_tex_txt: + addrs: [0x808DCF80, 0x808DD080] + npc/tex/kal_5_eye5_TA_tex_txt: + addrs: [0x808DD080, 0x808DD180] + npc/tex/kal_5_eye6_TA_tex_txt: + addrs: [0x808DD180, 0x808DD280] + npc/tex/kal_5_eye7_TA_tex_txt: + addrs: [0x808DD280, 0x808DD380] + npc/tex/kal_5_eye8_TA_tex_txt: + addrs: [0x808DD380, 0x808DD480] + npc/tex/kal_5_mouth1_TA_tex_txt: + addrs: [0x808DD480, 0x808DD580] + npc/tex/kal_5_mouth2_TA_tex_txt: + addrs: [0x808DD580, 0x808DD680] + npc/tex/kal_5_mouth3_TA_tex_txt: + addrs: [0x808DD680, 0x808DD780] + npc/tex/kal_5_mouth4_TA_tex_txt: + addrs: [0x808DD780, 0x808DD880] + npc/tex/kal_5_mouth5_TA_tex_txt: + addrs: [0x808DD880, 0x808DD980] + npc/tex/kal_5_mouth6_TA_tex_txt: + addrs: [0x808DD980, 0x808DDA80] + npc/tex/kal_5_tmem_txt: + addrs: [0x808DDA80, 0x808DDF00] + npc/tex/kal_6_pal: + addrs: [0x808DDF00, 0x808DDF20] + type: pal16 + npc/tex/kal_6_eye1_TA_tex_txt: + addrs: [0x808DDF20, 0x808DE020] + npc/tex/kal_6_eye2_TA_tex_txt: + addrs: [0x808DE020, 0x808DE120] + npc/tex/kal_6_eye3_TA_tex_txt: + addrs: [0x808DE120, 0x808DE220] + npc/tex/kal_6_eye4_TA_tex_txt: + addrs: [0x808DE220, 0x808DE320] + npc/tex/kal_6_eye5_TA_tex_txt: + addrs: [0x808DE320, 0x808DE420] + npc/tex/kal_6_eye6_TA_tex_txt: + addrs: [0x808DE420, 0x808DE520] + npc/tex/kal_6_eye7_TA_tex_txt: + addrs: [0x808DE520, 0x808DE620] + npc/tex/kal_6_eye8_TA_tex_txt: + addrs: [0x808DE620, 0x808DE720] + npc/tex/kal_6_mouth1_TA_tex_txt: + addrs: [0x808DE720, 0x808DE820] + npc/tex/kal_6_mouth2_TA_tex_txt: + addrs: [0x808DE820, 0x808DE920] + npc/tex/kal_6_mouth3_TA_tex_txt: + addrs: [0x808DE920, 0x808DEA20] + npc/tex/kal_6_mouth4_TA_tex_txt: + addrs: [0x808DEA20, 0x808DEB20] + npc/tex/kal_6_mouth5_TA_tex_txt: + addrs: [0x808DEB20, 0x808DEC20] + npc/tex/kal_6_mouth6_TA_tex_txt: + addrs: [0x808DEC20, 0x808DED20] + npc/tex/kal_6_tmem_txt: + addrs: [0x808DED20, 0x808DF1A0] + npc/mdl/lon_1_v: + addrs: [0x808E1A10, 0x808E3530] + type: vtx + npc/tex/lon_1_pal: + addrs: [0x808E3F80, 0x808E3FA0] + type: pal16 + npc/tex/lon_1_eye1_TA_tex_txt: + addrs: [0x808E3FA0, 0x808E40A0] + npc/tex/lon_1_eye2_TA_tex_txt: + addrs: [0x808E40A0, 0x808E41A0] + npc/tex/lon_1_eye3_TA_tex_txt: + addrs: [0x808E41A0, 0x808E42A0] + npc/tex/lon_1_eye4_TA_tex_txt: + addrs: [0x808E42A0, 0x808E43A0] + npc/tex/lon_1_eye5_TA_tex_txt: + addrs: [0x808E43A0, 0x808E44A0] + npc/tex/lon_1_eye6_TA_tex_txt: + addrs: [0x808E44A0, 0x808E45A0] + npc/tex/lon_1_eye7_TA_tex_txt: + addrs: [0x808E45A0, 0x808E46A0] + npc/tex/lon_1_eye8_TA_tex_txt: + addrs: [0x808E46A0, 0x808E47A0] + npc/tex/lon_1_mouth1_TA_tex_txt: + addrs: [0x808E47A0, 0x808E48A0] + npc/tex/lon_1_mouth2_TA_tex_txt: + addrs: [0x808E48A0, 0x808E49A0] + npc/tex/lon_1_mouth3_TA_tex_txt: + addrs: [0x808E49A0, 0x808E4AA0] + npc/tex/lon_1_mouth4_TA_tex_txt: + addrs: [0x808E4AA0, 0x808E4BA0] + npc/tex/lon_1_mouth5_TA_tex_txt: + addrs: [0x808E4BA0, 0x808E4CA0] + npc/tex/lon_1_mouth6_TA_tex_txt: + addrs: [0x808E4CA0, 0x808E4DA0] + npc/tex/lon_1_tmem_txt: + addrs: [0x808E4DA0, 0x808E5260] + npc/tex/lon_2_pal: + addrs: [0x808E5260, 0x808E5280] + type: pal16 + npc/tex/lon_2_eye1_TA_tex_txt: + addrs: [0x808E5280, 0x808E5380] + npc/tex/lon_2_eye2_TA_tex_txt: + addrs: [0x808E5380, 0x808E5480] + npc/tex/lon_2_eye3_TA_tex_txt: + addrs: [0x808E5480, 0x808E5580] + npc/tex/lon_2_eye4_TA_tex_txt: + addrs: [0x808E5580, 0x808E5680] + npc/tex/lon_2_eye5_TA_tex_txt: + addrs: [0x808E5680, 0x808E5780] + npc/tex/lon_2_eye6_TA_tex_txt: + addrs: [0x808E5780, 0x808E5880] + npc/tex/lon_2_eye7_TA_tex_txt: + addrs: [0x808E5880, 0x808E5980] + npc/tex/lon_2_eye8_TA_tex_txt: + addrs: [0x808E5980, 0x808E5A80] + npc/tex/lon_2_mouth1_TA_tex_txt: + addrs: [0x808E5A80, 0x808E5B80] + npc/tex/lon_2_mouth2_TA_tex_txt: + addrs: [0x808E5B80, 0x808E5C80] + npc/tex/lon_2_mouth3_TA_tex_txt: + addrs: [0x808E5C80, 0x808E5D80] + npc/tex/lon_2_mouth4_TA_tex_txt: + addrs: [0x808E5D80, 0x808E5E80] + npc/tex/lon_2_mouth5_TA_tex_txt: + addrs: [0x808E5E80, 0x808E5F80] + npc/tex/lon_2_mouth6_TA_tex_txt: + addrs: [0x808E5F80, 0x808E6080] + npc/tex/lon_2_tmem_txt: + addrs: [0x808E6080, 0x808E6540] + npc/tex/lon_3_pal: + addrs: [0x808E6540, 0x808E6560] + type: pal16 + npc/tex/lon_3_eye1_TA_tex_txt: + addrs: [0x808E6560, 0x808E6660] + npc/tex/lon_3_eye2_TA_tex_txt: + addrs: [0x808E6660, 0x808E6760] + npc/tex/lon_3_eye3_TA_tex_txt: + addrs: [0x808E6760, 0x808E6860] + npc/tex/lon_3_eye4_TA_tex_txt: + addrs: [0x808E6860, 0x808E6960] + npc/tex/lon_3_eye5_TA_tex_txt: + addrs: [0x808E6960, 0x808E6A60] + npc/tex/lon_3_eye6_TA_tex_txt: + addrs: [0x808E6A60, 0x808E6B60] + npc/tex/lon_3_eye7_TA_tex_txt: + addrs: [0x808E6B60, 0x808E6C60] + npc/tex/lon_3_eye8_TA_tex_txt: + addrs: [0x808E6C60, 0x808E6D60] + npc/tex/lon_3_mouth1_TA_tex_txt: + addrs: [0x808E6D60, 0x808E6E60] + npc/tex/lon_3_mouth2_TA_tex_txt: + addrs: [0x808E6E60, 0x808E6F60] + npc/tex/lon_3_mouth3_TA_tex_txt: + addrs: [0x808E6F60, 0x808E7060] + npc/tex/lon_3_mouth4_TA_tex_txt: + addrs: [0x808E7060, 0x808E7160] + npc/tex/lon_3_mouth5_TA_tex_txt: + addrs: [0x808E7160, 0x808E7260] + npc/tex/lon_3_mouth6_TA_tex_txt: + addrs: [0x808E7260, 0x808E7360] + npc/tex/lon_3_tmem_txt: + addrs: [0x808E7360, 0x808E7820] + npc/tex/lon_4_pal: + addrs: [0x808E7820, 0x808E7840] + type: pal16 + npc/tex/lon_4_eye1_TA_tex_txt: + addrs: [0x808E7840, 0x808E7940] + npc/tex/lon_4_eye2_TA_tex_txt: + addrs: [0x808E7940, 0x808E7A40] + npc/tex/lon_4_eye3_TA_tex_txt: + addrs: [0x808E7A40, 0x808E7B40] + npc/tex/lon_4_eye4_TA_tex_txt: + addrs: [0x808E7B40, 0x808E7C40] + npc/tex/lon_4_eye5_TA_tex_txt: + addrs: [0x808E7C40, 0x808E7D40] + npc/tex/lon_4_eye6_TA_tex_txt: + addrs: [0x808E7D40, 0x808E7E40] + npc/tex/lon_4_eye7_TA_tex_txt: + addrs: [0x808E7E40, 0x808E7F40] + npc/tex/lon_4_eye8_TA_tex_txt: + addrs: [0x808E7F40, 0x808E8040] + npc/tex/lon_4_mouth1_TA_tex_txt: + addrs: [0x808E8040, 0x808E8140] + npc/tex/lon_4_mouth2_TA_tex_txt: + addrs: [0x808E8140, 0x808E8240] + npc/tex/lon_4_mouth3_TA_tex_txt: + addrs: [0x808E8240, 0x808E8340] + npc/tex/lon_4_mouth4_TA_tex_txt: + addrs: [0x808E8340, 0x808E8440] + npc/tex/lon_4_mouth5_TA_tex_txt: + addrs: [0x808E8440, 0x808E8540] + npc/tex/lon_4_mouth6_TA_tex_txt: + addrs: [0x808E8540, 0x808E8640] + npc/tex/lon_4_tmem_txt: + addrs: [0x808E8640, 0x808E8B00] + npc/mdl/mos_1_v: + addrs: [0x808EAEA0, 0x808EC2C0] + type: vtx + npc/tex/mos_1_pal: + addrs: [0x808ECAE0, 0x808ECB00] + type: pal16 + npc/tex/mos_1_eye1_TA_tex_txt: + addrs: [0x808ECB00, 0x808ECC00] + npc/tex/mos_1_eye2_TA_tex_txt: + addrs: [0x808ECC00, 0x808ECD00] + npc/tex/mos_1_eye3_TA_tex_txt: + addrs: [0x808ECD00, 0x808ECE00] + npc/tex/mos_1_eye4_TA_tex_txt: + addrs: [0x808ECE00, 0x808ECF00] + npc/tex/mos_1_eye5_TA_tex_txt: + addrs: [0x808ECF00, 0x808ED000] + npc/tex/mos_1_eye6_TA_tex_txt: + addrs: [0x808ED000, 0x808ED100] + npc/tex/mos_1_eye7_TA_tex_txt: + addrs: [0x808ED100, 0x808ED200] + npc/tex/mos_1_eye8_TA_tex_txt: + addrs: [0x808ED200, 0x808ED300] + npc/tex/mos_1_mouth1_TA_tex_txt: + addrs: [0x808ED300, 0x808ED400] + npc/tex/mos_1_mouth2_TA_tex_txt: + addrs: [0x808ED400, 0x808ED500] + npc/tex/mos_1_mouth3_TA_tex_txt: + addrs: [0x808ED500, 0x808ED600] + npc/tex/mos_1_mouth4_TA_tex_txt: + addrs: [0x808ED600, 0x808ED700] + npc/tex/mos_1_mouth5_TA_tex_txt: + addrs: [0x808ED700, 0x808ED800] + npc/tex/mos_1_mouth6_TA_tex_txt: + addrs: [0x808ED800, 0x808ED900] + npc/tex/mos_1_tmem_txt: + addrs: [0x808ED900, 0x808EDF80] + npc/mdl/mol_1_v: + addrs: [0x808EDF80, 0x808EF3A0] + type: vtx + npc/tex/mol_1_pal: + addrs: [0x808EFBC0, 0x808EFBE0] + type: pal16 + npc/tex/mol_1_eye1_TA_tex_txt: + addrs: [0x808EFBE0, 0x808EFCE0] + npc/tex/mol_1_eye2_TA_tex_txt: + addrs: [0x808EFCE0, 0x808EFDE0] + npc/tex/mol_1_eye3_TA_tex_txt: + addrs: [0x808EFDE0, 0x808EFEE0] + npc/tex/mol_1_eye4_TA_tex_txt: + addrs: [0x808EFEE0, 0x808EFFE0] + npc/tex/mol_1_eye5_TA_tex_txt: + addrs: [0x808EFFE0, 0x808F00E0] + npc/tex/mol_1_eye6_TA_tex_txt: + addrs: [0x808F00E0, 0x808F01E0] + npc/tex/mol_1_eye7_TA_tex_txt: + addrs: [0x808F01E0, 0x808F02E0] + npc/tex/mol_1_eye8_TA_tex_txt: + addrs: [0x808F02E0, 0x808F03E0] + npc/tex/mol_1_mouth1_TA_tex_txt: + addrs: [0x808F03E0, 0x808F04E0] + npc/tex/mol_1_mouth2_TA_tex_txt: + addrs: [0x808F04E0, 0x808F05E0] + npc/tex/mol_1_mouth3_TA_tex_txt: + addrs: [0x808F05E0, 0x808F06E0] + npc/tex/mol_1_mouth4_TA_tex_txt: + addrs: [0x808F06E0, 0x808F07E0] + npc/tex/mol_1_mouth5_TA_tex_txt: + addrs: [0x808F07E0, 0x808F08E0] + npc/tex/mol_1_mouth6_TA_tex_txt: + addrs: [0x808F08E0, 0x808F09E0] + npc/tex/mol_1_tmem_txt: + addrs: [0x808F09E0, 0x808F1060] + npc/mdl/lrc_1_v: + addrs: [0x808F1060, 0x808F25A0] + type: vtx + npc/tex/lrc_1_pal: + addrs: [0x808F2F60, 0x808F2F80] + type: pal16 + npc/tex/lrc_1_eye1_TA_tex_txt: + addrs: [0x808F2F80, 0x808F3080] + npc/tex/lrc_1_eye2_TA_tex_txt: + addrs: [0x808F3080, 0x808F3180] + npc/tex/lrc_1_eye3_TA_tex_txt: + addrs: [0x808F3180, 0x808F3280] + npc/tex/lrc_1_eye4_TA_tex_txt: + addrs: [0x808F3280, 0x808F3380] + npc/tex/lrc_1_eye5_TA_tex_txt: + addrs: [0x808F3380, 0x808F3480] + npc/tex/lrc_1_eye6_TA_tex_txt: + addrs: [0x808F3480, 0x808F3580] + npc/tex/lrc_1_eye7_TA_tex_txt: + addrs: [0x808F3580, 0x808F3680] + npc/tex/lrc_1_eye8_TA_tex_txt: + addrs: [0x808F3680, 0x808F3780] + npc/tex/lrc_1_tmem_txt: + addrs: [0x808F3780, 0x808F3E00] + npc/mdl/mka_1_v: + addrs: [0x808F3E00, 0x808F5280] + type: vtx + npc/tex/mka_1_pal: + addrs: [0x808F5BC0, 0x808F5BE0] + type: pal16 + npc/tex/mka_1_tmem_txt: + addrs: [0x808F5BE0, 0x808F6060] + npc/mdl/mus_1_v: + addrs: [0x808F6EA8, 0x808F86A8] + type: vtx + npc/tex/mus_1_pal: + addrs: [0x808F90C0, 0x808F90E0] + type: pal16 + npc/tex/mus_1_eye1_TA_tex_txt: + addrs: [0x808F90E0, 0x808F91E0] + npc/tex/mus_1_eye2_TA_tex_txt: + addrs: [0x808F91E0, 0x808F92E0] + npc/tex/mus_1_eye3_TA_tex_txt: + addrs: [0x808F92E0, 0x808F93E0] + npc/tex/mus_1_eye4_TA_tex_txt: + addrs: [0x808F93E0, 0x808F94E0] + npc/tex/mus_1_eye5_TA_tex_txt: + addrs: [0x808F94E0, 0x808F95E0] + npc/tex/mus_1_eye6_TA_tex_txt: + addrs: [0x808F95E0, 0x808F96E0] + npc/tex/mus_1_eye7_TA_tex_txt: + addrs: [0x808F96E0, 0x808F97E0] + npc/tex/mus_1_eye8_TA_tex_txt: + addrs: [0x808F97E0, 0x808F98E0] + npc/tex/mus_1_mouth1_TA_tex_txt: + addrs: [0x808F98E0, 0x808F99E0] + npc/tex/mus_1_mouth2_TA_tex_txt: + addrs: [0x808F99E0, 0x808F9AE0] + npc/tex/mus_1_mouth3_TA_tex_txt: + addrs: [0x808F9AE0, 0x808F9BE0] + npc/tex/mus_1_mouth4_TA_tex_txt: + addrs: [0x808F9BE0, 0x808F9CE0] + npc/tex/mus_1_mouth5_TA_tex_txt: + addrs: [0x808F9CE0, 0x808F9DE0] + npc/tex/mus_1_mouth6_TA_tex_txt: + addrs: [0x808F9DE0, 0x808F9EE0] + npc/tex/mus_1_tmem_txt: + addrs: [0x808F9EE0, 0x808FA2E0] + npc/tex/mus_2_pal: + addrs: [0x808FA2E0, 0x808FA300] + type: pal16 + npc/tex/mus_2_eye1_TA_tex_txt: + addrs: [0x808FA300, 0x808FA400] + npc/tex/mus_2_eye2_TA_tex_txt: + addrs: [0x808FA400, 0x808FA500] + npc/tex/mus_2_eye3_TA_tex_txt: + addrs: [0x808FA500, 0x808FA600] + npc/tex/mus_2_eye4_TA_tex_txt: + addrs: [0x808FA600, 0x808FA700] + npc/tex/mus_2_eye5_TA_tex_txt: + addrs: [0x808FA700, 0x808FA800] + npc/tex/mus_2_eye6_TA_tex_txt: + addrs: [0x808FA800, 0x808FA900] + npc/tex/mus_2_eye7_TA_tex_txt: + addrs: [0x808FA900, 0x808FAA00] + npc/tex/mus_2_eye8_TA_tex_txt: + addrs: [0x808FAA00, 0x808FAB00] + npc/tex/mus_2_mouth1_TA_tex_txt: + addrs: [0x808FAB00, 0x808FAC00] + npc/tex/mus_2_mouth2_TA_tex_txt: + addrs: [0x808FAC00, 0x808FAD00] + npc/tex/mus_2_mouth3_TA_tex_txt: + addrs: [0x808FAD00, 0x808FAE00] + npc/tex/mus_2_mouth4_TA_tex_txt: + addrs: [0x808FAE00, 0x808FAF00] + npc/tex/mus_2_mouth5_TA_tex_txt: + addrs: [0x808FAF00, 0x808FB000] + npc/tex/mus_2_mouth6_TA_tex_txt: + addrs: [0x808FB000, 0x808FB100] + npc/tex/mus_2_tmem_txt: + addrs: [0x808FB100, 0x808FB500] + npc/tex/mus_3_pal: + addrs: [0x808FB500, 0x808FB520] + type: pal16 + npc/tex/mus_3_eye1_TA_tex_txt: + addrs: [0x808FB520, 0x808FB620] + npc/tex/mus_3_eye2_TA_tex_txt: + addrs: [0x808FB620, 0x808FB720] + npc/tex/mus_3_eye3_TA_tex_txt: + addrs: [0x808FB720, 0x808FB820] + npc/tex/mus_3_eye4_TA_tex_txt: + addrs: [0x808FB820, 0x808FB920] + npc/tex/mus_3_eye5_TA_tex_txt: + addrs: [0x808FB920, 0x808FBA20] + npc/tex/mus_3_eye6_TA_tex_txt: + addrs: [0x808FBA20, 0x808FBB20] + npc/tex/mus_3_eye7_TA_tex_txt: + addrs: [0x808FBB20, 0x808FBC20] + npc/tex/mus_3_eye8_TA_tex_txt: + addrs: [0x808FBC20, 0x808FBD20] + npc/tex/mus_3_mouth1_TA_tex_txt: + addrs: [0x808FBD20, 0x808FBE20] + npc/tex/mus_3_mouth2_TA_tex_txt: + addrs: [0x808FBE20, 0x808FBF20] + npc/tex/mus_3_mouth3_TA_tex_txt: + addrs: [0x808FBF20, 0x808FC020] + npc/tex/mus_3_mouth4_TA_tex_txt: + addrs: [0x808FC020, 0x808FC120] + npc/tex/mus_3_mouth5_TA_tex_txt: + addrs: [0x808FC120, 0x808FC220] + npc/tex/mus_3_mouth6_TA_tex_txt: + addrs: [0x808FC220, 0x808FC320] + npc/tex/mus_3_tmem_txt: + addrs: [0x808FC320, 0x808FC720] + npc/tex/mus_4_pal: + addrs: [0x808FC720, 0x808FC740] + type: pal16 + npc/tex/mus_4_eye1_TA_tex_txt: + addrs: [0x808FC740, 0x808FC840] + npc/tex/mus_4_eye2_TA_tex_txt: + addrs: [0x808FC840, 0x808FC940] + npc/tex/mus_4_eye3_TA_tex_txt: + addrs: [0x808FC940, 0x808FCA40] + npc/tex/mus_4_eye4_TA_tex_txt: + addrs: [0x808FCA40, 0x808FCB40] + npc/tex/mus_4_eye5_TA_tex_txt: + addrs: [0x808FCB40, 0x808FCC40] + npc/tex/mus_4_eye6_TA_tex_txt: + addrs: [0x808FCC40, 0x808FCD40] + npc/tex/mus_4_eye7_TA_tex_txt: + addrs: [0x808FCD40, 0x808FCE40] + npc/tex/mus_4_eye8_TA_tex_txt: + addrs: [0x808FCE40, 0x808FCF40] + npc/tex/mus_4_mouth1_TA_tex_txt: + addrs: [0x808FCF40, 0x808FD040] + npc/tex/mus_4_mouth2_TA_tex_txt: + addrs: [0x808FD040, 0x808FD140] + npc/tex/mus_4_mouth3_TA_tex_txt: + addrs: [0x808FD140, 0x808FD240] + npc/tex/mus_4_mouth4_TA_tex_txt: + addrs: [0x808FD240, 0x808FD340] + npc/tex/mus_4_mouth5_TA_tex_txt: + addrs: [0x808FD340, 0x808FD440] + npc/tex/mus_4_mouth6_TA_tex_txt: + addrs: [0x808FD440, 0x808FD540] + npc/tex/mus_4_tmem_txt: + addrs: [0x808FD540, 0x808FD940] + npc/tex/mus_5_pal: + addrs: [0x808FD940, 0x808FD960] + type: pal16 + npc/tex/mus_5_eye1_TA_tex_txt: + addrs: [0x808FD960, 0x808FDA60] + npc/tex/mus_5_eye2_TA_tex_txt: + addrs: [0x808FDA60, 0x808FDB60] + npc/tex/mus_5_eye3_TA_tex_txt: + addrs: [0x808FDB60, 0x808FDC60] + npc/tex/mus_5_eye4_TA_tex_txt: + addrs: [0x808FDC60, 0x808FDD60] + npc/tex/mus_5_eye5_TA_tex_txt: + addrs: [0x808FDD60, 0x808FDE60] + npc/tex/mus_5_eye6_TA_tex_txt: + addrs: [0x808FDE60, 0x808FDF60] + npc/tex/mus_5_eye7_TA_tex_txt: + addrs: [0x808FDF60, 0x808FE060] + npc/tex/mus_5_eye8_TA_tex_txt: + addrs: [0x808FE060, 0x808FE160] + npc/tex/mus_5_mouth1_TA_tex_txt: + addrs: [0x808FE160, 0x808FE260] + npc/tex/mus_5_mouth2_TA_tex_txt: + addrs: [0x808FE260, 0x808FE360] + npc/tex/mus_5_mouth3_TA_tex_txt: + addrs: [0x808FE360, 0x808FE460] + npc/tex/mus_5_mouth4_TA_tex_txt: + addrs: [0x808FE460, 0x808FE560] + npc/tex/mus_5_mouth5_TA_tex_txt: + addrs: [0x808FE560, 0x808FE660] + npc/tex/mus_5_mouth6_TA_tex_txt: + addrs: [0x808FE660, 0x808FE760] + npc/tex/mus_5_tmem_txt: + addrs: [0x808FE760, 0x808FEB60] + npc/tex/mus_6_pal: + addrs: [0x808FEB60, 0x808FEB80] + type: pal16 + npc/tex/mus_6_eye1_TA_tex_txt: + addrs: [0x808FEB80, 0x808FEC80] + npc/tex/mus_6_eye2_TA_tex_txt: + addrs: [0x808FEC80, 0x808FED80] + npc/tex/mus_6_eye3_TA_tex_txt: + addrs: [0x808FED80, 0x808FEE80] + npc/tex/mus_6_eye4_TA_tex_txt: + addrs: [0x808FEE80, 0x808FEF80] + npc/tex/mus_6_eye5_TA_tex_txt: + addrs: [0x808FEF80, 0x808FF080] + npc/tex/mus_6_eye6_TA_tex_txt: + addrs: [0x808FF080, 0x808FF180] + npc/tex/mus_6_eye7_TA_tex_txt: + addrs: [0x808FF180, 0x808FF280] + npc/tex/mus_6_eye8_TA_tex_txt: + addrs: [0x808FF280, 0x808FF380] + npc/tex/mus_6_mouth1_TA_tex_txt: + addrs: [0x808FF380, 0x808FF480] + npc/tex/mus_6_mouth2_TA_tex_txt: + addrs: [0x808FF480, 0x808FF580] + npc/tex/mus_6_mouth3_TA_tex_txt: + addrs: [0x808FF580, 0x808FF680] + npc/tex/mus_6_mouth4_TA_tex_txt: + addrs: [0x808FF680, 0x808FF780] + npc/tex/mus_6_mouth5_TA_tex_txt: + addrs: [0x808FF780, 0x808FF880] + npc/tex/mus_6_mouth6_TA_tex_txt: + addrs: [0x808FF880, 0x808FF980] + npc/tex/mus_6_tmem_txt: + addrs: [0x808FF980, 0x808FFD80] + npc/tex/mus_7_pal: + addrs: [0x808FFD80, 0x808FFDA0] + type: pal16 + npc/tex/mus_7_eye1_TA_tex_txt: + addrs: [0x808FFDA0, 0x808FFEA0] + npc/tex/mus_7_eye2_TA_tex_txt: + addrs: [0x808FFEA0, 0x808FFFA0] + npc/tex/mus_7_eye3_TA_tex_txt: + addrs: [0x808FFFA0, 0x809000A0] + npc/tex/mus_7_eye4_TA_tex_txt: + addrs: [0x809000A0, 0x809001A0] + npc/tex/mus_7_eye5_TA_tex_txt: + addrs: [0x809001A0, 0x809002A0] + npc/tex/mus_7_eye6_TA_tex_txt: + addrs: [0x809002A0, 0x809003A0] + npc/tex/mus_7_eye7_TA_tex_txt: + addrs: [0x809003A0, 0x809004A0] + npc/tex/mus_7_eye8_TA_tex_txt: + addrs: [0x809004A0, 0x809005A0] + npc/tex/mus_7_mouth1_TA_tex_txt: + addrs: [0x809005A0, 0x809006A0] + npc/tex/mus_7_mouth2_TA_tex_txt: + addrs: [0x809006A0, 0x809007A0] + npc/tex/mus_7_mouth3_TA_tex_txt: + addrs: [0x809007A0, 0x809008A0] + npc/tex/mus_7_mouth4_TA_tex_txt: + addrs: [0x809008A0, 0x809009A0] + npc/tex/mus_7_mouth5_TA_tex_txt: + addrs: [0x809009A0, 0x80900AA0] + npc/tex/mus_7_mouth6_TA_tex_txt: + addrs: [0x80900AA0, 0x80900BA0] + npc/tex/mus_7_tmem_txt: + addrs: [0x80900BA0, 0x80900FA0] + npc/tex/mus_8_pal: + addrs: [0x80900FA0, 0x80900FC0] + type: pal16 + npc/tex/mus_8_eye1_TA_tex_txt: + addrs: [0x80900FC0, 0x809010C0] + npc/tex/mus_8_eye2_TA_tex_txt: + addrs: [0x809010C0, 0x809011C0] + npc/tex/mus_8_eye3_TA_tex_txt: + addrs: [0x809011C0, 0x809012C0] + npc/tex/mus_8_eye4_TA_tex_txt: + addrs: [0x809012C0, 0x809013C0] + npc/tex/mus_8_eye5_TA_tex_txt: + addrs: [0x809013C0, 0x809014C0] + npc/tex/mus_8_eye6_TA_tex_txt: + addrs: [0x809014C0, 0x809015C0] + npc/tex/mus_8_eye7_TA_tex_txt: + addrs: [0x809015C0, 0x809016C0] + npc/tex/mus_8_eye8_TA_tex_txt: + addrs: [0x809016C0, 0x809017C0] + npc/tex/mus_8_mouth1_TA_tex_txt: + addrs: [0x809017C0, 0x809018C0] + npc/tex/mus_8_mouth2_TA_tex_txt: + addrs: [0x809018C0, 0x809019C0] + npc/tex/mus_8_mouth3_TA_tex_txt: + addrs: [0x809019C0, 0x80901AC0] + npc/tex/mus_8_mouth4_TA_tex_txt: + addrs: [0x80901AC0, 0x80901BC0] + npc/tex/mus_8_mouth5_TA_tex_txt: + addrs: [0x80901BC0, 0x80901CC0] + npc/tex/mus_8_mouth6_TA_tex_txt: + addrs: [0x80901CC0, 0x80901DC0] + npc/tex/mus_8_tmem_txt: + addrs: [0x80901DC0, 0x809021C0] + npc/tex/mus_9_pal: + addrs: [0x809021C0, 0x809021E0] + type: pal16 + npc/tex/mus_9_eye1_TA_tex_txt: + addrs: [0x809021E0, 0x809022E0] + npc/tex/mus_9_eye2_TA_tex_txt: + addrs: [0x809022E0, 0x809023E0] + npc/tex/mus_9_eye3_TA_tex_txt: + addrs: [0x809023E0, 0x809024E0] + npc/tex/mus_9_eye4_TA_tex_txt: + addrs: [0x809024E0, 0x809025E0] + npc/tex/mus_9_eye5_TA_tex_txt: + addrs: [0x809025E0, 0x809026E0] + npc/tex/mus_9_eye6_TA_tex_txt: + addrs: [0x809026E0, 0x809027E0] + npc/tex/mus_9_eye7_TA_tex_txt: + addrs: [0x809027E0, 0x809028E0] + npc/tex/mus_9_eye8_TA_tex_txt: + addrs: [0x809028E0, 0x809029E0] + npc/tex/mus_9_mouth1_TA_tex_txt: + addrs: [0x809029E0, 0x80902AE0] + npc/tex/mus_9_mouth2_TA_tex_txt: + addrs: [0x80902AE0, 0x80902BE0] + npc/tex/mus_9_mouth3_TA_tex_txt: + addrs: [0x80902BE0, 0x80902CE0] + npc/tex/mus_9_mouth4_TA_tex_txt: + addrs: [0x80902CE0, 0x80902DE0] + npc/tex/mus_9_mouth5_TA_tex_txt: + addrs: [0x80902DE0, 0x80902EE0] + npc/tex/mus_9_mouth6_TA_tex_txt: + addrs: [0x80902EE0, 0x80902FE0] + npc/tex/mus_9_tmem_txt: + addrs: [0x80902FE0, 0x809033E0] + npc/tex/mus_10_pal: + addrs: [0x809033E0, 0x80903400] + type: pal16 + npc/tex/mus_10_eye1_TA_tex_txt: + addrs: [0x80903400, 0x80903500] + npc/tex/mus_10_eye2_TA_tex_txt: + addrs: [0x80903500, 0x80903600] + npc/tex/mus_10_eye3_TA_tex_txt: + addrs: [0x80903600, 0x80903700] + npc/tex/mus_10_eye4_TA_tex_txt: + addrs: [0x80903700, 0x80903800] + npc/tex/mus_10_eye5_TA_tex_txt: + addrs: [0x80903800, 0x80903900] + npc/tex/mus_10_eye6_TA_tex_txt: + addrs: [0x80903900, 0x80903A00] + npc/tex/mus_10_eye7_TA_tex_txt: + addrs: [0x80903A00, 0x80903B00] + npc/tex/mus_10_eye8_TA_tex_txt: + addrs: [0x80903B00, 0x80903C00] + npc/tex/mus_10_mouth1_TA_tex_txt: + addrs: [0x80903C00, 0x80903D00] + npc/tex/mus_10_mouth2_TA_tex_txt: + addrs: [0x80903D00, 0x80903E00] + npc/tex/mus_10_mouth3_TA_tex_txt: + addrs: [0x80903E00, 0x80903F00] + npc/tex/mus_10_mouth4_TA_tex_txt: + addrs: [0x80903F00, 0x80904000] + npc/tex/mus_10_mouth5_TA_tex_txt: + addrs: [0x80904000, 0x80904100] + npc/tex/mus_10_mouth6_TA_tex_txt: + addrs: [0x80904100, 0x80904200] + npc/tex/mus_10_tmem_txt: + addrs: [0x80904200, 0x80904600] + npc/mdl/hgh_1_v: + addrs: [0x80911E70, 0x80913B10] + type: vtx + npc/tex/hgh_1_pal: + addrs: [0x80914620, 0x80914640] + type: pal16 + npc/tex/hgh_1_eye1_TA_tex_txt: + addrs: [0x80914640, 0x80914740] + npc/tex/hgh_1_eye2_TA_tex_txt: + addrs: [0x80914740, 0x80914840] + npc/tex/hgh_1_eye3_TA_tex_txt: + addrs: [0x80914840, 0x80914940] + npc/tex/hgh_1_eye4_TA_tex_txt: + addrs: [0x80914940, 0x80914A40] + npc/tex/hgh_1_eye5_TA_tex_txt: + addrs: [0x80914A40, 0x80914B40] + npc/tex/hgh_1_eye6_TA_tex_txt: + addrs: [0x80914B40, 0x80914C40] + npc/tex/hgh_1_eye7_TA_tex_txt: + addrs: [0x80914C40, 0x80914D40] + npc/tex/hgh_1_eye8_TA_tex_txt: + addrs: [0x80914D40, 0x80914E40] + npc/tex/hgh_1_tmem_txt: + addrs: [0x80914E40, 0x80915500] + npc/mdl/hgs_1_v: + addrs: [0x80915500, 0x80917180] + type: vtx + npc/tex/hgs_1_pal: + addrs: [0x80917C80, 0x80917CA0] + type: pal16 + npc/tex/hgs_1_eye1_TA_tex_txt: + addrs: [0x80917CA0, 0x80917DA0] + npc/tex/hgs_1_eye2_TA_tex_txt: + addrs: [0x80917DA0, 0x80917EA0] + npc/tex/hgs_1_eye3_TA_tex_txt: + addrs: [0x80917EA0, 0x80917FA0] + npc/tex/hgs_1_eye4_TA_tex_txt: + addrs: [0x80917FA0, 0x809180A0] + npc/tex/hgs_1_eye5_TA_tex_txt: + addrs: [0x809180A0, 0x809181A0] + npc/tex/hgs_1_eye6_TA_tex_txt: + addrs: [0x809181A0, 0x809182A0] + npc/tex/hgs_1_eye7_TA_tex_txt: + addrs: [0x809182A0, 0x809183A0] + npc/tex/hgs_1_eye8_TA_tex_txt: + addrs: [0x809183A0, 0x809184A0] + npc/tex/hgs_1_tmem_txt: + addrs: [0x809184A0, 0x80918B60] + npc/mdl/oct_1_v: + addrs: [0x80977CB0, 0x80979A30] + type: vtx + npc/tex/oct_1_pal: + addrs: [0x8097A460, 0x8097A480] + type: pal16 + npc/tex/oct_1_eye1_TA_tex_txt: + addrs: [0x8097A480, 0x8097A580] + npc/tex/oct_1_eye2_TA_tex_txt: + addrs: [0x8097A580, 0x8097A680] + npc/tex/oct_1_eye3_TA_tex_txt: + addrs: [0x8097A680, 0x8097A780] + npc/tex/oct_1_eye4_TA_tex_txt: + addrs: [0x8097A780, 0x8097A880] + npc/tex/oct_1_eye5_TA_tex_txt: + addrs: [0x8097A880, 0x8097A980] + npc/tex/oct_1_eye6_TA_tex_txt: + addrs: [0x8097A980, 0x8097AA80] + npc/tex/oct_1_eye7_TA_tex_txt: + addrs: [0x8097AA80, 0x8097AB80] + npc/tex/oct_1_eye8_TA_tex_txt: + addrs: [0x8097AB80, 0x8097AC80] + npc/tex/oct_1_tmem_txt: + addrs: [0x8097AC80, 0x8097AE80] + npc/mdl/ost_1_v: + addrs: [0x8097AE80, 0x8097C650] + type: vtx + npc/tex/ost_1_pal: + addrs: [0x8097D100, 0x8097D120] + type: pal16 + npc/tex/ost_1_eye1_TA_tex_txt: + addrs: [0x8097D120, 0x8097D220] + npc/tex/ost_1_eye2_TA_tex_txt: + addrs: [0x8097D220, 0x8097D320] + npc/tex/ost_1_eye3_TA_tex_txt: + addrs: [0x8097D320, 0x8097D420] + npc/tex/ost_1_eye4_TA_tex_txt: + addrs: [0x8097D420, 0x8097D520] + npc/tex/ost_1_eye5_TA_tex_txt: + addrs: [0x8097D520, 0x8097D620] + npc/tex/ost_1_eye6_TA_tex_txt: + addrs: [0x8097D620, 0x8097D720] + npc/tex/ost_1_eye7_TA_tex_txt: + addrs: [0x8097D720, 0x8097D820] + npc/tex/ost_1_eye8_TA_tex_txt: + addrs: [0x8097D820, 0x8097D920] + npc/tex/ost_1_tmem_txt: + addrs: [0x8097D920, 0x8097DE60] + npc/tex/ost_2_pal: + addrs: [0x8097DE60, 0x8097DE80] + type: pal16 + npc/tex/ost_2_eye1_TA_tex_txt: + addrs: [0x8097DE80, 0x8097DF80] + npc/tex/ost_2_eye2_TA_tex_txt: + addrs: [0x8097DF80, 0x8097E080] + npc/tex/ost_2_eye3_TA_tex_txt: + addrs: [0x8097E080, 0x8097E180] + npc/tex/ost_2_eye4_TA_tex_txt: + addrs: [0x8097E180, 0x8097E280] + npc/tex/ost_2_eye5_TA_tex_txt: + addrs: [0x8097E280, 0x8097E380] + npc/tex/ost_2_eye6_TA_tex_txt: + addrs: [0x8097E380, 0x8097E480] + npc/tex/ost_2_eye7_TA_tex_txt: + addrs: [0x8097E480, 0x8097E580] + npc/tex/ost_2_eye8_TA_tex_txt: + addrs: [0x8097E580, 0x8097E680] + npc/tex/ost_2_tmem_txt: + addrs: [0x8097E680, 0x8097EBC0] + npc/tex/ost_3_pal: + addrs: [0x8097EBC0, 0x8097EBE0] + type: pal16 + npc/tex/ost_3_eye1_TA_tex_txt: + addrs: [0x8097EBE0, 0x8097ECE0] + npc/tex/ost_3_eye2_TA_tex_txt: + addrs: [0x8097ECE0, 0x8097EDE0] + npc/tex/ost_3_eye3_TA_tex_txt: + addrs: [0x8097EDE0, 0x8097EEE0] + npc/tex/ost_3_eye4_TA_tex_txt: + addrs: [0x8097EEE0, 0x8097EFE0] + npc/tex/ost_3_eye5_TA_tex_txt: + addrs: [0x8097EFE0, 0x8097F0E0] + npc/tex/ost_3_eye6_TA_tex_txt: + addrs: [0x8097F0E0, 0x8097F1E0] + npc/tex/ost_3_eye7_TA_tex_txt: + addrs: [0x8097F1E0, 0x8097F2E0] + npc/tex/ost_3_eye8_TA_tex_txt: + addrs: [0x8097F2E0, 0x8097F3E0] + npc/tex/ost_3_tmem_txt: + addrs: [0x8097F3E0, 0x8097F920] + npc/tex/ost_4_pal: + addrs: [0x8097F920, 0x8097F940] + type: pal16 + npc/tex/ost_4_eye1_TA_tex_txt: + addrs: [0x8097F940, 0x8097FA40] + npc/tex/ost_4_eye2_TA_tex_txt: + addrs: [0x8097FA40, 0x8097FB40] + npc/tex/ost_4_eye3_TA_tex_txt: + addrs: [0x8097FB40, 0x8097FC40] + npc/tex/ost_4_eye4_TA_tex_txt: + addrs: [0x8097FC40, 0x8097FD40] + npc/tex/ost_4_eye5_TA_tex_txt: + addrs: [0x8097FD40, 0x8097FE40] + npc/tex/ost_4_eye6_TA_tex_txt: + addrs: [0x8097FE40, 0x8097FF40] + npc/tex/ost_4_eye7_TA_tex_txt: + addrs: [0x8097FF40, 0x80980040] + npc/tex/ost_4_eye8_TA_tex_txt: + addrs: [0x80980040, 0x80980140] + npc/tex/ost_4_tmem_txt: + addrs: [0x80980140, 0x80980680] + npc/mdl/pgn_1_v: + addrs: [0x80980F28, 0x80982708] + type: vtx + npc/tex/pgn_1_pal: + addrs: [0x80983140, 0x80983160] + type: pal16 + npc/tex/pgn_1_eye1_TA_tex_txt: + addrs: [0x80983160, 0x80983260] + npc/tex/pgn_1_eye2_TA_tex_txt: + addrs: [0x80983260, 0x80983360] + npc/tex/pgn_1_eye3_TA_tex_txt: + addrs: [0x80983360, 0x80983460] + npc/tex/pgn_1_eye4_TA_tex_txt: + addrs: [0x80983460, 0x80983560] + npc/tex/pgn_1_eye5_TA_tex_txt: + addrs: [0x80983560, 0x80983660] + npc/tex/pgn_1_eye6_TA_tex_txt: + addrs: [0x80983660, 0x80983760] + npc/tex/pgn_1_eye7_TA_tex_txt: + addrs: [0x80983760, 0x80983860] + npc/tex/pgn_1_eye8_TA_tex_txt: + addrs: [0x80983860, 0x80983960] + npc/tex/pgn_1_tmem_txt: + addrs: [0x80983960, 0x80983EE0] + npc/tex/pgn_2_pal: + addrs: [0x80983EE0, 0x80983F00] + type: pal16 + npc/tex/pgn_2_eye1_TA_tex_txt: + addrs: [0x80983F00, 0x80984000] + npc/tex/pgn_2_eye2_TA_tex_txt: + addrs: [0x80984000, 0x80984100] + npc/tex/pgn_2_eye3_TA_tex_txt: + addrs: [0x80984100, 0x80984200] + npc/tex/pgn_2_eye4_TA_tex_txt: + addrs: [0x80984200, 0x80984300] + npc/tex/pgn_2_eye5_TA_tex_txt: + addrs: [0x80984300, 0x80984400] + npc/tex/pgn_2_eye6_TA_tex_txt: + addrs: [0x80984400, 0x80984500] + npc/tex/pgn_2_eye7_TA_tex_txt: + addrs: [0x80984500, 0x80984600] + npc/tex/pgn_2_eye8_TA_tex_txt: + addrs: [0x80984600, 0x80984700] + npc/tex/pgn_2_tmem_txt: + addrs: [0x80984700, 0x80984C80] + npc/tex/pgn_3_pal: + addrs: [0x80984C80, 0x80984CA0] + type: pal16 + npc/tex/pgn_3_eye1_TA_tex_txt: + addrs: [0x80984CA0, 0x80984DA0] + npc/tex/pgn_3_eye2_TA_tex_txt: + addrs: [0x80984DA0, 0x80984EA0] + npc/tex/pgn_3_eye3_TA_tex_txt: + addrs: [0x80984EA0, 0x80984FA0] + npc/tex/pgn_3_eye4_TA_tex_txt: + addrs: [0x80984FA0, 0x809850A0] + npc/tex/pgn_3_eye5_TA_tex_txt: + addrs: [0x809850A0, 0x809851A0] + npc/tex/pgn_3_eye6_TA_tex_txt: + addrs: [0x809851A0, 0x809852A0] + npc/tex/pgn_3_eye7_TA_tex_txt: + addrs: [0x809852A0, 0x809853A0] + npc/tex/pgn_3_eye8_TA_tex_txt: + addrs: [0x809853A0, 0x809854A0] + npc/tex/pgn_3_tmem_txt: + addrs: [0x809854A0, 0x80985A20] + npc/tex/pgn_4_pal: + addrs: [0x80985A20, 0x80985A40] + type: pal16 + npc/tex/pgn_4_eye1_TA_tex_txt: + addrs: [0x80985A40, 0x80985B40] + npc/tex/pgn_4_eye2_TA_tex_txt: + addrs: [0x80985B40, 0x80985C40] + npc/tex/pgn_4_eye3_TA_tex_txt: + addrs: [0x80985C40, 0x80985D40] + npc/tex/pgn_4_eye4_TA_tex_txt: + addrs: [0x80985D40, 0x80985E40] + npc/tex/pgn_4_eye5_TA_tex_txt: + addrs: [0x80985E40, 0x80985F40] + npc/tex/pgn_4_eye6_TA_tex_txt: + addrs: [0x80985F40, 0x80986040] + npc/tex/pgn_4_eye7_TA_tex_txt: + addrs: [0x80986040, 0x80986140] + npc/tex/pgn_4_eye8_TA_tex_txt: + addrs: [0x80986140, 0x80986240] + npc/tex/pgn_4_tmem_txt: + addrs: [0x80986240, 0x809867C0] + npc/tex/pgn_5_pal: + addrs: [0x809867C0, 0x809867E0] + type: pal16 + npc/tex/pgn_5_eye1_TA_tex_txt: + addrs: [0x809867E0, 0x809868E0] + npc/tex/pgn_5_eye2_TA_tex_txt: + addrs: [0x809868E0, 0x809869E0] + npc/tex/pgn_5_eye3_TA_tex_txt: + addrs: [0x809869E0, 0x80986AE0] + npc/tex/pgn_5_eye4_TA_tex_txt: + addrs: [0x80986AE0, 0x80986BE0] + npc/tex/pgn_5_eye5_TA_tex_txt: + addrs: [0x80986BE0, 0x80986CE0] + npc/tex/pgn_5_eye6_TA_tex_txt: + addrs: [0x80986CE0, 0x80986DE0] + npc/tex/pgn_5_eye7_TA_tex_txt: + addrs: [0x80986DE0, 0x80986EE0] + npc/tex/pgn_5_eye8_TA_tex_txt: + addrs: [0x80986EE0, 0x80986FE0] + npc/tex/pgn_5_tmem_txt: + addrs: [0x80986FE0, 0x80987560] + npc/tex/pgn_6_pal: + addrs: [0x80987560, 0x80987580] + type: pal16 + npc/tex/pgn_6_eye1_TA_tex_txt: + addrs: [0x80987580, 0x80987680] + npc/tex/pgn_6_eye2_TA_tex_txt: + addrs: [0x80987680, 0x80987780] + npc/tex/pgn_6_eye3_TA_tex_txt: + addrs: [0x80987780, 0x80987880] + npc/tex/pgn_6_eye4_TA_tex_txt: + addrs: [0x80987880, 0x80987980] + npc/tex/pgn_6_eye5_TA_tex_txt: + addrs: [0x80987980, 0x80987A80] + npc/tex/pgn_6_eye6_TA_tex_txt: + addrs: [0x80987A80, 0x80987B80] + npc/tex/pgn_6_eye7_TA_tex_txt: + addrs: [0x80987B80, 0x80987C80] + npc/tex/pgn_6_eye8_TA_tex_txt: + addrs: [0x80987C80, 0x80987D80] + npc/tex/pgn_6_tmem_txt: + addrs: [0x80987D80, 0x80988300] + npc/tex/pgn_7_pal: + addrs: [0x80988300, 0x80988320] + type: pal16 + npc/tex/pgn_7_eye1_TA_tex_txt: + addrs: [0x80988320, 0x80988420] + npc/tex/pgn_7_eye2_TA_tex_txt: + addrs: [0x80988420, 0x80988520] + npc/tex/pgn_7_eye3_TA_tex_txt: + addrs: [0x80988520, 0x80988620] + npc/tex/pgn_7_eye4_TA_tex_txt: + addrs: [0x80988620, 0x80988720] + npc/tex/pgn_7_eye5_TA_tex_txt: + addrs: [0x80988720, 0x80988820] + npc/tex/pgn_7_eye6_TA_tex_txt: + addrs: [0x80988820, 0x80988920] + npc/tex/pgn_7_eye7_TA_tex_txt: + addrs: [0x80988920, 0x80988A20] + npc/tex/pgn_7_eye8_TA_tex_txt: + addrs: [0x80988A20, 0x80988B20] + npc/tex/pgn_7_tmem_txt: + addrs: [0x80988B20, 0x809890A0] + npc/tex/pgn_8_pal: + addrs: [0x809890A0, 0x809890C0] + type: pal16 + npc/tex/pgn_8_eye1_TA_tex_txt: + addrs: [0x809890C0, 0x809891C0] + npc/tex/pgn_8_eye2_TA_tex_txt: + addrs: [0x809891C0, 0x809892C0] + npc/tex/pgn_8_eye3_TA_tex_txt: + addrs: [0x809892C0, 0x809893C0] + npc/tex/pgn_8_eye4_TA_tex_txt: + addrs: [0x809893C0, 0x809894C0] + npc/tex/pgn_8_eye5_TA_tex_txt: + addrs: [0x809894C0, 0x809895C0] + npc/tex/pgn_8_eye6_TA_tex_txt: + addrs: [0x809895C0, 0x809896C0] + npc/tex/pgn_8_eye7_TA_tex_txt: + addrs: [0x809896C0, 0x809897C0] + npc/tex/pgn_8_eye8_TA_tex_txt: + addrs: [0x809897C0, 0x809898C0] + npc/tex/pgn_8_tmem_txt: + addrs: [0x809898C0, 0x80989E40] + npc/mdl/pig_1_v: + addrs: [0x80989E40, 0x8098B230] + type: vtx + npc/tex/pig_1_pal: + addrs: [0x8098BAC0, 0x8098BAE0] + type: pal16 + npc/tex/pig_1_eye1_TA_tex_txt: + addrs: [0x8098BAE0, 0x8098BBE0] + npc/tex/pig_1_eye2_TA_tex_txt: + addrs: [0x8098BBE0, 0x8098BCE0] + npc/tex/pig_1_eye3_TA_tex_txt: + addrs: [0x8098BCE0, 0x8098BDE0] + npc/tex/pig_1_eye4_TA_tex_txt: + addrs: [0x8098BDE0, 0x8098BEE0] + npc/tex/pig_1_eye5_TA_tex_txt: + addrs: [0x8098BEE0, 0x8098BFE0] + npc/tex/pig_1_eye6_TA_tex_txt: + addrs: [0x8098BFE0, 0x8098C0E0] + npc/tex/pig_1_eye7_TA_tex_txt: + addrs: [0x8098C0E0, 0x8098C1E0] + npc/tex/pig_1_eye8_TA_tex_txt: + addrs: [0x8098C1E0, 0x8098C2E0] + npc/tex/pig_1_mouth1_TA_tex_txt: + addrs: [0x8098C2E0, 0x8098C3E0] + npc/tex/pig_1_mouth2_TA_tex_txt: + addrs: [0x8098C3E0, 0x8098C4E0] + npc/tex/pig_1_mouth3_TA_tex_txt: + addrs: [0x8098C4E0, 0x8098C5E0] + npc/tex/pig_1_mouth4_TA_tex_txt: + addrs: [0x8098C5E0, 0x8098C6E0] + npc/tex/pig_1_mouth5_TA_tex_txt: + addrs: [0x8098C6E0, 0x8098C7E0] + npc/tex/pig_1_mouth6_TA_tex_txt: + addrs: [0x8098C7E0, 0x8098C8E0] + npc/tex/pig_1_tmem_txt: + addrs: [0x8098C8E0, 0x8098CC60] + npc/tex/pig_2_pal: + addrs: [0x8098CC60, 0x8098CC80] + type: pal16 + npc/tex/pig_2_eye1_TA_tex_txt: + addrs: [0x8098CC80, 0x8098CD80] + npc/tex/pig_2_eye2_TA_tex_txt: + addrs: [0x8098CD80, 0x8098CE80] + npc/tex/pig_2_eye3_TA_tex_txt: + addrs: [0x8098CE80, 0x8098CF80] + npc/tex/pig_2_eye4_TA_tex_txt: + addrs: [0x8098CF80, 0x8098D080] + npc/tex/pig_2_eye5_TA_tex_txt: + addrs: [0x8098D080, 0x8098D180] + npc/tex/pig_2_eye6_TA_tex_txt: + addrs: [0x8098D180, 0x8098D280] + npc/tex/pig_2_eye7_TA_tex_txt: + addrs: [0x8098D280, 0x8098D380] + npc/tex/pig_2_eye8_TA_tex_txt: + addrs: [0x8098D380, 0x8098D480] + npc/tex/pig_2_mouth1_TA_tex_txt: + addrs: [0x8098D480, 0x8098D580] + npc/tex/pig_2_mouth2_TA_tex_txt: + addrs: [0x8098D580, 0x8098D680] + npc/tex/pig_2_mouth3_TA_tex_txt: + addrs: [0x8098D680, 0x8098D780] + npc/tex/pig_2_mouth4_TA_tex_txt: + addrs: [0x8098D780, 0x8098D880] + npc/tex/pig_2_mouth5_TA_tex_txt: + addrs: [0x8098D880, 0x8098D980] + npc/tex/pig_2_mouth6_TA_tex_txt: + addrs: [0x8098D980, 0x8098DA80] + npc/tex/pig_2_tmem_txt: + addrs: [0x8098DA80, 0x8098DE00] + npc/tex/pig_11_pal: + addrs: [0x8098DE00, 0x8098DE20] + type: pal16 + npc/tex/pig_11_eye1_TA_tex_txt: + addrs: [0x8098DE20, 0x8098DF20] + npc/tex/pig_11_eye2_TA_tex_txt: + addrs: [0x8098DF20, 0x8098E020] + npc/tex/pig_11_eye3_TA_tex_txt: + addrs: [0x8098E020, 0x8098E120] + npc/tex/pig_11_eye4_TA_tex_txt: + addrs: [0x8098E120, 0x8098E220] + npc/tex/pig_11_eye5_TA_tex_txt: + addrs: [0x8098E220, 0x8098E320] + npc/tex/pig_11_eye6_TA_tex_txt: + addrs: [0x8098E320, 0x8098E420] + npc/tex/pig_11_eye7_TA_tex_txt: + addrs: [0x8098E420, 0x8098E520] + npc/tex/pig_11_eye8_TA_tex_txt: + addrs: [0x8098E520, 0x8098E620] + npc/tex/pig_11_mouth1_TA_tex_txt: + addrs: [0x8098E620, 0x8098E720] + npc/tex/pig_11_mouth2_TA_tex_txt: + addrs: [0x8098E720, 0x8098E820] + npc/tex/pig_11_mouth3_TA_tex_txt: + addrs: [0x8098E820, 0x8098E920] + npc/tex/pig_11_mouth4_TA_tex_txt: + addrs: [0x8098E920, 0x8098EA20] + npc/tex/pig_11_mouth5_TA_tex_txt: + addrs: [0x8098EA20, 0x8098EB20] + npc/tex/pig_11_mouth6_TA_tex_txt: + addrs: [0x8098EB20, 0x8098EC20] + npc/tex/pig_11_tmem_txt: + addrs: [0x8098EC20, 0x8098EFA0] + npc/tex/pig_3_pal: + addrs: [0x8098EFA0, 0x8098EFC0] + type: pal16 + npc/tex/pig_3_eye1_TA_tex_txt: + addrs: [0x8098EFC0, 0x8098F0C0] + npc/tex/pig_3_eye2_TA_tex_txt: + addrs: [0x8098F0C0, 0x8098F1C0] + npc/tex/pig_3_eye3_TA_tex_txt: + addrs: [0x8098F1C0, 0x8098F2C0] + npc/tex/pig_3_eye4_TA_tex_txt: + addrs: [0x8098F2C0, 0x8098F3C0] + npc/tex/pig_3_eye5_TA_tex_txt: + addrs: [0x8098F3C0, 0x8098F4C0] + npc/tex/pig_3_eye6_TA_tex_txt: + addrs: [0x8098F4C0, 0x8098F5C0] + npc/tex/pig_3_eye7_TA_tex_txt: + addrs: [0x8098F5C0, 0x8098F6C0] + npc/tex/pig_3_eye8_TA_tex_txt: + addrs: [0x8098F6C0, 0x8098F7C0] + npc/tex/pig_3_mouth1_TA_tex_txt: + addrs: [0x8098F7C0, 0x8098F8C0] + npc/tex/pig_3_mouth2_TA_tex_txt: + addrs: [0x8098F8C0, 0x8098F9C0] + npc/tex/pig_3_mouth3_TA_tex_txt: + addrs: [0x8098F9C0, 0x8098FAC0] + npc/tex/pig_3_mouth4_TA_tex_txt: + addrs: [0x8098FAC0, 0x8098FBC0] + npc/tex/pig_3_mouth5_TA_tex_txt: + addrs: [0x8098FBC0, 0x8098FCC0] + npc/tex/pig_3_mouth6_TA_tex_txt: + addrs: [0x8098FCC0, 0x8098FDC0] + npc/tex/pig_3_tmem_txt: + addrs: [0x8098FDC0, 0x80990140] + npc/tex/pig_4_pal: + addrs: [0x80990140, 0x80990160] + type: pal16 + npc/tex/pig_4_eye1_TA_tex_txt: + addrs: [0x80990160, 0x80990260] + npc/tex/pig_4_eye2_TA_tex_txt: + addrs: [0x80990260, 0x80990360] + npc/tex/pig_4_eye3_TA_tex_txt: + addrs: [0x80990360, 0x80990460] + npc/tex/pig_4_eye4_TA_tex_txt: + addrs: [0x80990460, 0x80990560] + npc/tex/pig_4_eye5_TA_tex_txt: + addrs: [0x80990560, 0x80990660] + npc/tex/pig_4_eye6_TA_tex_txt: + addrs: [0x80990660, 0x80990760] + npc/tex/pig_4_eye7_TA_tex_txt: + addrs: [0x80990760, 0x80990860] + npc/tex/pig_4_eye8_TA_tex_txt: + addrs: [0x80990860, 0x80990960] + npc/tex/pig_4_mouth1_TA_tex_txt: + addrs: [0x80990960, 0x80990A60] + npc/tex/pig_4_mouth2_TA_tex_txt: + addrs: [0x80990A60, 0x80990B60] + npc/tex/pig_4_mouth3_TA_tex_txt: + addrs: [0x80990B60, 0x80990C60] + npc/tex/pig_4_mouth4_TA_tex_txt: + addrs: [0x80990C60, 0x80990D60] + npc/tex/pig_4_mouth5_TA_tex_txt: + addrs: [0x80990D60, 0x80990E60] + npc/tex/pig_4_mouth6_TA_tex_txt: + addrs: [0x80990E60, 0x80990F60] + npc/tex/pig_4_tmem_txt: + addrs: [0x80990F60, 0x809912E0] + npc/tex/pig_5_pal: + addrs: [0x809912E0, 0x80991300] + type: pal16 + npc/tex/pig_5_eye1_TA_tex_txt: + addrs: [0x80991300, 0x80991400] + npc/tex/pig_5_eye2_TA_tex_txt: + addrs: [0x80991400, 0x80991500] + npc/tex/pig_5_eye3_TA_tex_txt: + addrs: [0x80991500, 0x80991600] + npc/tex/pig_5_eye4_TA_tex_txt: + addrs: [0x80991600, 0x80991700] + npc/tex/pig_5_eye5_TA_tex_txt: + addrs: [0x80991700, 0x80991800] + npc/tex/pig_5_eye6_TA_tex_txt: + addrs: [0x80991800, 0x80991900] + npc/tex/pig_5_eye7_TA_tex_txt: + addrs: [0x80991900, 0x80991A00] + npc/tex/pig_5_eye8_TA_tex_txt: + addrs: [0x80991A00, 0x80991B00] + npc/tex/pig_5_mouth1_TA_tex_txt: + addrs: [0x80991B00, 0x80991C00] + npc/tex/pig_5_mouth2_TA_tex_txt: + addrs: [0x80991C00, 0x80991D00] + npc/tex/pig_5_mouth3_TA_tex_txt: + addrs: [0x80991D00, 0x80991E00] + npc/tex/pig_5_mouth4_TA_tex_txt: + addrs: [0x80991E00, 0x80991F00] + npc/tex/pig_5_mouth5_TA_tex_txt: + addrs: [0x80991F00, 0x80992000] + npc/tex/pig_5_mouth6_TA_tex_txt: + addrs: [0x80992000, 0x80992100] + npc/tex/pig_5_tmem_txt: + addrs: [0x80992100, 0x80992480] + npc/tex/pig_6_pal: + addrs: [0x80992480, 0x809924A0] + type: pal16 + npc/tex/pig_6_eye1_TA_tex_txt: + addrs: [0x809924A0, 0x809925A0] + npc/tex/pig_6_eye2_TA_tex_txt: + addrs: [0x809925A0, 0x809926A0] + npc/tex/pig_6_eye3_TA_tex_txt: + addrs: [0x809926A0, 0x809927A0] + npc/tex/pig_6_eye4_TA_tex_txt: + addrs: [0x809927A0, 0x809928A0] + npc/tex/pig_6_eye5_TA_tex_txt: + addrs: [0x809928A0, 0x809929A0] + npc/tex/pig_6_eye6_TA_tex_txt: + addrs: [0x809929A0, 0x80992AA0] + npc/tex/pig_6_eye7_TA_tex_txt: + addrs: [0x80992AA0, 0x80992BA0] + npc/tex/pig_6_eye8_TA_tex_txt: + addrs: [0x80992BA0, 0x80992CA0] + npc/tex/pig_6_mouth1_TA_tex_txt: + addrs: [0x80992CA0, 0x80992DA0] + npc/tex/pig_6_mouth2_TA_tex_txt: + addrs: [0x80992DA0, 0x80992EA0] + npc/tex/pig_6_mouth3_TA_tex_txt: + addrs: [0x80992EA0, 0x80992FA0] + npc/tex/pig_6_mouth4_TA_tex_txt: + addrs: [0x80992FA0, 0x809930A0] + npc/tex/pig_6_mouth5_TA_tex_txt: + addrs: [0x809930A0, 0x809931A0] + npc/tex/pig_6_mouth6_TA_tex_txt: + addrs: [0x809931A0, 0x809932A0] + npc/tex/pig_6_tmem_txt: + addrs: [0x809932A0, 0x80993620] + npc/tex/pig_7_pal: + addrs: [0x80993620, 0x80993640] + type: pal16 + npc/tex/pig_7_eye1_TA_tex_txt: + addrs: [0x80993640, 0x80993740] + npc/tex/pig_7_eye2_TA_tex_txt: + addrs: [0x80993740, 0x80993840] + npc/tex/pig_7_eye3_TA_tex_txt: + addrs: [0x80993840, 0x80993940] + npc/tex/pig_7_eye4_TA_tex_txt: + addrs: [0x80993940, 0x80993A40] + npc/tex/pig_7_eye5_TA_tex_txt: + addrs: [0x80993A40, 0x80993B40] + npc/tex/pig_7_eye6_TA_tex_txt: + addrs: [0x80993B40, 0x80993C40] + npc/tex/pig_7_eye7_TA_tex_txt: + addrs: [0x80993C40, 0x80993D40] + npc/tex/pig_7_eye8_TA_tex_txt: + addrs: [0x80993D40, 0x80993E40] + npc/tex/pig_7_mouth1_TA_tex_txt: + addrs: [0x80993E40, 0x80993F40] + npc/tex/pig_7_mouth2_TA_tex_txt: + addrs: [0x80993F40, 0x80994040] + npc/tex/pig_7_mouth3_TA_tex_txt: + addrs: [0x80994040, 0x80994140] + npc/tex/pig_7_mouth4_TA_tex_txt: + addrs: [0x80994140, 0x80994240] + npc/tex/pig_7_mouth5_TA_tex_txt: + addrs: [0x80994240, 0x80994340] + npc/tex/pig_7_mouth6_TA_tex_txt: + addrs: [0x80994340, 0x80994440] + npc/tex/pig_7_tmem_txt: + addrs: [0x80994440, 0x809947C0] + npc/tex/pig_8_pal: + addrs: [0x809947C0, 0x809947E0] + type: pal16 + npc/tex/pig_8_eye1_TA_tex_txt: + addrs: [0x809947E0, 0x809948E0] + npc/tex/pig_8_eye2_TA_tex_txt: + addrs: [0x809948E0, 0x809949E0] + npc/tex/pig_8_eye3_TA_tex_txt: + addrs: [0x809949E0, 0x80994AE0] + npc/tex/pig_8_eye4_TA_tex_txt: + addrs: [0x80994AE0, 0x80994BE0] + npc/tex/pig_8_eye5_TA_tex_txt: + addrs: [0x80994BE0, 0x80994CE0] + npc/tex/pig_8_eye6_TA_tex_txt: + addrs: [0x80994CE0, 0x80994DE0] + npc/tex/pig_8_eye7_TA_tex_txt: + addrs: [0x80994DE0, 0x80994EE0] + npc/tex/pig_8_eye8_TA_tex_txt: + addrs: [0x80994EE0, 0x80994FE0] + npc/tex/pig_8_mouth1_TA_tex_txt: + addrs: [0x80994FE0, 0x809950E0] + npc/tex/pig_8_mouth2_TA_tex_txt: + addrs: [0x809950E0, 0x809951E0] + npc/tex/pig_8_mouth3_TA_tex_txt: + addrs: [0x809951E0, 0x809952E0] + npc/tex/pig_8_mouth4_TA_tex_txt: + addrs: [0x809952E0, 0x809953E0] + npc/tex/pig_8_mouth5_TA_tex_txt: + addrs: [0x809953E0, 0x809954E0] + npc/tex/pig_8_mouth6_TA_tex_txt: + addrs: [0x809954E0, 0x809955E0] + npc/tex/pig_8_tmem_txt: + addrs: [0x809955E0, 0x80995960] + npc/tex/pig_9_pal: + addrs: [0x80995960, 0x80995980] + type: pal16 + npc/tex/pig_9_eye1_TA_tex_txt: + addrs: [0x80995980, 0x80995A80] + npc/tex/pig_9_eye2_TA_tex_txt: + addrs: [0x80995A80, 0x80995B80] + npc/tex/pig_9_eye3_TA_tex_txt: + addrs: [0x80995B80, 0x80995C80] + npc/tex/pig_9_eye4_TA_tex_txt: + addrs: [0x80995C80, 0x80995D80] + npc/tex/pig_9_eye5_TA_tex_txt: + addrs: [0x80995D80, 0x80995E80] + npc/tex/pig_9_eye6_TA_tex_txt: + addrs: [0x80995E80, 0x80995F80] + npc/tex/pig_9_eye7_TA_tex_txt: + addrs: [0x80995F80, 0x80996080] + npc/tex/pig_9_eye8_TA_tex_txt: + addrs: [0x80996080, 0x80996180] + npc/tex/pig_9_mouth1_TA_tex_txt: + addrs: [0x80996180, 0x80996280] + npc/tex/pig_9_mouth2_TA_tex_txt: + addrs: [0x80996280, 0x80996380] + npc/tex/pig_9_mouth3_TA_tex_txt: + addrs: [0x80996380, 0x80996480] + npc/tex/pig_9_mouth4_TA_tex_txt: + addrs: [0x80996480, 0x80996580] + npc/tex/pig_9_mouth5_TA_tex_txt: + addrs: [0x80996580, 0x80996680] + npc/tex/pig_9_mouth6_TA_tex_txt: + addrs: [0x80996680, 0x80996780] + npc/tex/pig_9_tmem_txt: + addrs: [0x80996780, 0x80996B00] + npc/tex/pig_10_pal: + addrs: [0x80996B00, 0x80996B20] + type: pal16 + npc/tex/pig_10_eye1_TA_tex_txt: + addrs: [0x80996B20, 0x80996C20] + npc/tex/pig_10_eye2_TA_tex_txt: + addrs: [0x80996C20, 0x80996D20] + npc/tex/pig_10_eye3_TA_tex_txt: + addrs: [0x80996D20, 0x80996E20] + npc/tex/pig_10_eye4_TA_tex_txt: + addrs: [0x80996E20, 0x80996F20] + npc/tex/pig_10_eye5_TA_tex_txt: + addrs: [0x80996F20, 0x80997020] + npc/tex/pig_10_eye6_TA_tex_txt: + addrs: [0x80997020, 0x80997120] + npc/tex/pig_10_eye7_TA_tex_txt: + addrs: [0x80997120, 0x80997220] + npc/tex/pig_10_eye8_TA_tex_txt: + addrs: [0x80997220, 0x80997320] + npc/tex/pig_10_mouth1_TA_tex_txt: + addrs: [0x80997320, 0x80997420] + npc/tex/pig_10_mouth2_TA_tex_txt: + addrs: [0x80997420, 0x80997520] + npc/tex/pig_10_mouth3_TA_tex_txt: + addrs: [0x80997520, 0x80997620] + npc/tex/pig_10_mouth4_TA_tex_txt: + addrs: [0x80997620, 0x80997720] + npc/tex/pig_10_mouth5_TA_tex_txt: + addrs: [0x80997720, 0x80997820] + npc/tex/pig_10_mouth6_TA_tex_txt: + addrs: [0x80997820, 0x80997920] + npc/tex/pig_10_tmem_txt: + addrs: [0x80997920, 0x80997CA0] + npc/mdl/pla_1_v: + addrs: [0x80997CA0, 0x80999950] + type: vtx + npc/mdl/plc_1_v: + addrs: [0x8099A318, 0x8099BA48] + type: vtx + npc/tex/plc_1_pal: + addrs: [0x8099C420, 0x8099C440] + type: pal16 + npc/tex/plc_1_eye1_TA_tex_txt: + addrs: [0x8099C440, 0x8099C540] + npc/tex/plc_1_eye2_TA_tex_txt: + addrs: [0x8099C540, 0x8099C640] + npc/tex/plc_1_eye3_TA_tex_txt: + addrs: [0x8099C640, 0x8099C740] + npc/tex/plc_1_eye4_TA_tex_txt: + addrs: [0x8099C740, 0x8099C840] + npc/tex/plc_1_eye5_TA_tex_txt: + addrs: [0x8099C840, 0x8099C940] + npc/tex/plc_1_eye6_TA_tex_txt: + addrs: [0x8099C940, 0x8099CA40] + npc/tex/plc_1_eye7_TA_tex_txt: + addrs: [0x8099CA40, 0x8099CB40] + npc/tex/plc_1_eye8_TA_tex_txt: + addrs: [0x8099CB40, 0x8099CC40] + npc/tex/plc_1_mouth1_TA_tex_txt: + addrs: [0x8099CC40, 0x8099CD40] + npc/tex/plc_1_mouth2_TA_tex_txt: + addrs: [0x8099CD40, 0x8099CE40] + npc/tex/plc_1_mouth3_TA_tex_txt: + addrs: [0x8099CE40, 0x8099CF40] + npc/tex/plc_1_mouth4_TA_tex_txt: + addrs: [0x8099CF40, 0x8099D040] + npc/tex/plc_1_mouth5_TA_tex_txt: + addrs: [0x8099D040, 0x8099D140] + npc/tex/plc_1_mouth6_TA_tex_txt: + addrs: [0x8099D140, 0x8099D240] + npc/tex/plc_1_tmem_txt: + addrs: [0x8099D240, 0x8099D900] + npc/tex/pla_1_pal: + addrs: [0x8099D900, 0x8099D920] + type: pal16 + npc/tex/pla_1_eye1_TA_tex_txt: + addrs: [0x8099D920, 0x8099DA20] + npc/tex/pla_1_eye2_TA_tex_txt: + addrs: [0x8099DA20, 0x8099DB20] + npc/tex/pla_1_eye3_TA_tex_txt: + addrs: [0x8099DB20, 0x8099DC20] + npc/tex/pla_1_eye4_TA_tex_txt: + addrs: [0x8099DC20, 0x8099DD20] + npc/tex/pla_1_eye5_TA_tex_txt: + addrs: [0x8099DD20, 0x8099DE20] + npc/tex/pla_1_eye6_TA_tex_txt: + addrs: [0x8099DE20, 0x8099DF20] + npc/tex/pla_1_eye7_TA_tex_txt: + addrs: [0x8099DF20, 0x8099E020] + npc/tex/pla_1_eye8_TA_tex_txt: + addrs: [0x8099E020, 0x8099E120] + npc/tex/pla_1_mouth1_TA_tex_txt: + addrs: [0x8099E120, 0x8099E220] + npc/tex/pla_1_mouth2_TA_tex_txt: + addrs: [0x8099E220, 0x8099E320] + npc/tex/pla_1_mouth3_TA_tex_txt: + addrs: [0x8099E320, 0x8099E420] + npc/tex/pla_1_mouth4_TA_tex_txt: + addrs: [0x8099E420, 0x8099E520] + npc/tex/pla_1_mouth5_TA_tex_txt: + addrs: [0x8099E520, 0x8099E620] + npc/tex/pla_1_mouth6_TA_tex_txt: + addrs: [0x8099E620, 0x8099E720] + npc/tex/pla_1_tmem_txt: + addrs: [0x8099E720, 0x8099ECA0] + npc/mdl/pga_1_v: + addrs: [0x8099ECA0, 0x809A06C0] + type: vtx + npc/tex/pga_1_pal: + addrs: [0x809A11A0, 0x809A11C0] + type: pal16 + npc/tex/pga_1_eye1_TA_tex_txt: + addrs: [0x809A11C0, 0x809A12C0] + npc/tex/pga_1_eye2_TA_tex_txt: + addrs: [0x809A12C0, 0x809A13C0] + npc/tex/pga_1_eye3_TA_tex_txt: + addrs: [0x809A13C0, 0x809A14C0] + npc/tex/pga_1_eye4_TA_tex_txt: + addrs: [0x809A14C0, 0x809A15C0] + npc/tex/pga_1_eye5_TA_tex_txt: + addrs: [0x809A15C0, 0x809A16C0] + npc/tex/pga_1_eye6_TA_tex_txt: + addrs: [0x809A16C0, 0x809A17C0] + npc/tex/pga_1_eye7_TA_tex_txt: + addrs: [0x809A17C0, 0x809A18C0] + npc/tex/pga_1_eye8_TA_tex_txt: + addrs: [0x809A18C0, 0x809A19C0] + npc/tex/pga_1_tmem_txt: + addrs: [0x809A19C0, 0x809A2000] + npc/mdl/pgb_1_v: + addrs: [0x809A2000, 0x809A3990] + type: vtx + npc/tex/pgb_1_pal: + addrs: [0x809A4460, 0x809A4480] + type: pal16 + npc/tex/pgb_1_eye1_TA_tex_txt: + addrs: [0x809A4480, 0x809A4580] + npc/tex/pgb_1_eye2_TA_tex_txt: + addrs: [0x809A4580, 0x809A4680] + npc/tex/pgb_1_eye3_TA_tex_txt: + addrs: [0x809A4680, 0x809A4780] + npc/tex/pgb_1_eye4_TA_tex_txt: + addrs: [0x809A4780, 0x809A4880] + npc/tex/pgb_1_eye5_TA_tex_txt: + addrs: [0x809A4880, 0x809A4980] + npc/tex/pgb_1_eye6_TA_tex_txt: + addrs: [0x809A4980, 0x809A4A80] + npc/tex/pgb_1_eye7_TA_tex_txt: + addrs: [0x809A4A80, 0x809A4B80] + npc/tex/pgb_1_eye8_TA_tex_txt: + addrs: [0x809A4B80, 0x809A4C80] + npc/tex/pgb_1_tmem_txt: + addrs: [0x809A4C80, 0x809A5400] + npc/mdl/plb_1_v: + addrs: [0x809A5400, 0x809A6E80] + type: vtx + npc/tex/plb_1_pal: + addrs: [0x809A7980, 0x809A79A0] + type: pal16 + npc/tex/plb_1_eye1_TA_tex_txt: + addrs: [0x809A79A0, 0x809A7AA0] + npc/tex/plb_1_eye2_TA_tex_txt: + addrs: [0x809A7AA0, 0x809A7BA0] + npc/tex/plb_1_eye3_TA_tex_txt: + addrs: [0x809A7BA0, 0x809A7CA0] + npc/tex/plb_1_eye4_TA_tex_txt: + addrs: [0x809A7CA0, 0x809A7DA0] + npc/tex/plb_1_eye5_TA_tex_txt: + addrs: [0x809A7DA0, 0x809A7EA0] + npc/tex/plb_1_eye6_TA_tex_txt: + addrs: [0x809A7EA0, 0x809A7FA0] + npc/tex/plb_1_eye7_TA_tex_txt: + addrs: [0x809A7FA0, 0x809A80A0] + npc/tex/plb_1_eye8_TA_tex_txt: + addrs: [0x809A80A0, 0x809A81A0] + npc/tex/plb_1_tmem_txt: + addrs: [0x809A81A0, 0x809A8920] + npc/mdl/rbt_1_v: + addrs: [0x809A8920, 0x809A9EC0] + type: vtx + npc/tex/rbt_1_pal: + addrs: [0x809AA7C0, 0x809AA7E0] + type: pal16 + npc/tex/rbt_1_eye1_TA_tex_txt: + addrs: [0x809AA7E0, 0x809AA8E0] + npc/tex/rbt_1_eye2_TA_tex_txt: + addrs: [0x809AA8E0, 0x809AA9E0] + npc/tex/rbt_1_eye3_TA_tex_txt: + addrs: [0x809AA9E0, 0x809AAAE0] + npc/tex/rbt_1_eye4_TA_tex_txt: + addrs: [0x809AAAE0, 0x809AABE0] + npc/tex/rbt_1_eye5_TA_tex_txt: + addrs: [0x809AABE0, 0x809AACE0] + npc/tex/rbt_1_eye6_TA_tex_txt: + addrs: [0x809AACE0, 0x809AADE0] + npc/tex/rbt_1_eye7_TA_tex_txt: + addrs: [0x809AADE0, 0x809AAEE0] + npc/tex/rbt_1_eye8_TA_tex_txt: + addrs: [0x809AAEE0, 0x809AAFE0] + npc/tex/rbt_1_mouth1_TA_tex_txt: + addrs: [0x809AAFE0, 0x809AB0E0] + npc/tex/rbt_1_mouth2_TA_tex_txt: + addrs: [0x809AB0E0, 0x809AB1E0] + npc/tex/rbt_1_mouth3_TA_tex_txt: + addrs: [0x809AB1E0, 0x809AB2E0] + npc/tex/rbt_1_mouth4_TA_tex_txt: + addrs: [0x809AB2E0, 0x809AB3E0] + npc/tex/rbt_1_mouth5_TA_tex_txt: + addrs: [0x809AB3E0, 0x809AB4E0] + npc/tex/rbt_1_mouth6_TA_tex_txt: + addrs: [0x809AB4E0, 0x809AB5E0] + npc/tex/rbt_1_tmem_txt: + addrs: [0x809AB5E0, 0x809AB9E0] + npc/tex/rbt_2_pal: + addrs: [0x809AB9E0, 0x809ABA00] + type: pal16 + npc/tex/rbt_2_eye1_TA_tex_txt: + addrs: [0x809ABA00, 0x809ABB00] + npc/tex/rbt_2_eye2_TA_tex_txt: + addrs: [0x809ABB00, 0x809ABC00] + npc/tex/rbt_2_eye3_TA_tex_txt: + addrs: [0x809ABC00, 0x809ABD00] + npc/tex/rbt_2_eye4_TA_tex_txt: + addrs: [0x809ABD00, 0x809ABE00] + npc/tex/rbt_2_eye5_TA_tex_txt: + addrs: [0x809ABE00, 0x809ABF00] + npc/tex/rbt_2_eye6_TA_tex_txt: + addrs: [0x809ABF00, 0x809AC000] + npc/tex/rbt_2_eye7_TA_tex_txt: + addrs: [0x809AC000, 0x809AC100] + npc/tex/rbt_2_eye8_TA_tex_txt: + addrs: [0x809AC100, 0x809AC200] + npc/tex/rbt_2_mouth1_TA_tex_txt: + addrs: [0x809AC200, 0x809AC300] + npc/tex/rbt_2_mouth2_TA_tex_txt: + addrs: [0x809AC300, 0x809AC400] + npc/tex/rbt_2_mouth3_TA_tex_txt: + addrs: [0x809AC400, 0x809AC500] + npc/tex/rbt_2_mouth4_TA_tex_txt: + addrs: [0x809AC500, 0x809AC600] + npc/tex/rbt_2_mouth5_TA_tex_txt: + addrs: [0x809AC600, 0x809AC700] + npc/tex/rbt_2_mouth6_TA_tex_txt: + addrs: [0x809AC700, 0x809AC800] + npc/tex/rbt_2_tmem_txt: + addrs: [0x809AC800, 0x809ACC00] + npc/tex/rbt_11_pal: + addrs: [0x809ACC00, 0x809ACC20] + type: pal16 + npc/tex/rbt_11_eye1_TA_tex_txt: + addrs: [0x809ACC20, 0x809ACD20] + npc/tex/rbt_11_eye2_TA_tex_txt: + addrs: [0x809ACD20, 0x809ACE20] + npc/tex/rbt_11_eye3_TA_tex_txt: + addrs: [0x809ACE20, 0x809ACF20] + npc/tex/rbt_11_eye4_TA_tex_txt: + addrs: [0x809ACF20, 0x809AD020] + npc/tex/rbt_11_eye5_TA_tex_txt: + addrs: [0x809AD020, 0x809AD120] + npc/tex/rbt_11_eye6_TA_tex_txt: + addrs: [0x809AD120, 0x809AD220] + npc/tex/rbt_11_eye7_TA_tex_txt: + addrs: [0x809AD220, 0x809AD320] + npc/tex/rbt_11_eye8_TA_tex_txt: + addrs: [0x809AD320, 0x809AD420] + npc/tex/rbt_11_mouth1_TA_tex_txt: + addrs: [0x809AD420, 0x809AD520] + npc/tex/rbt_11_mouth2_TA_tex_txt: + addrs: [0x809AD520, 0x809AD620] + npc/tex/rbt_11_mouth3_TA_tex_txt: + addrs: [0x809AD620, 0x809AD720] + npc/tex/rbt_11_mouth4_TA_tex_txt: + addrs: [0x809AD720, 0x809AD820] + npc/tex/rbt_11_mouth5_TA_tex_txt: + addrs: [0x809AD820, 0x809AD920] + npc/tex/rbt_11_mouth6_TA_tex_txt: + addrs: [0x809AD920, 0x809ADA20] + npc/tex/rbt_11_tmem_txt: + addrs: [0x809ADA20, 0x809ADE20] + npc/tex/rbt_3_pal: + addrs: [0x809ADE20, 0x809ADE40] + type: pal16 + npc/tex/rbt_3_eye1_TA_tex_txt: + addrs: [0x809ADE40, 0x809ADF40] + npc/tex/rbt_3_eye2_TA_tex_txt: + addrs: [0x809ADF40, 0x809AE040] + npc/tex/rbt_3_eye3_TA_tex_txt: + addrs: [0x809AE040, 0x809AE140] + npc/tex/rbt_3_eye4_TA_tex_txt: + addrs: [0x809AE140, 0x809AE240] + npc/tex/rbt_3_eye5_TA_tex_txt: + addrs: [0x809AE240, 0x809AE340] + npc/tex/rbt_3_eye6_TA_tex_txt: + addrs: [0x809AE340, 0x809AE440] + npc/tex/rbt_3_eye7_TA_tex_txt: + addrs: [0x809AE440, 0x809AE540] + npc/tex/rbt_3_eye8_TA_tex_txt: + addrs: [0x809AE540, 0x809AE640] + npc/tex/rbt_3_mouth1_TA_tex_txt: + addrs: [0x809AE640, 0x809AE740] + npc/tex/rbt_3_mouth2_TA_tex_txt: + addrs: [0x809AE740, 0x809AE840] + npc/tex/rbt_3_mouth3_TA_tex_txt: + addrs: [0x809AE840, 0x809AE940] + npc/tex/rbt_3_mouth4_TA_tex_txt: + addrs: [0x809AE940, 0x809AEA40] + npc/tex/rbt_3_mouth5_TA_tex_txt: + addrs: [0x809AEA40, 0x809AEB40] + npc/tex/rbt_3_mouth6_TA_tex_txt: + addrs: [0x809AEB40, 0x809AEC40] + npc/tex/rbt_3_tmem_txt: + addrs: [0x809AEC40, 0x809AF040] + npc/tex/rbt_4_pal: + addrs: [0x809AF040, 0x809AF060] + type: pal16 + npc/tex/rbt_4_eye1_TA_tex_txt: + addrs: [0x809AF060, 0x809AF160] + npc/tex/rbt_4_eye2_TA_tex_txt: + addrs: [0x809AF160, 0x809AF260] + npc/tex/rbt_4_eye3_TA_tex_txt: + addrs: [0x809AF260, 0x809AF360] + npc/tex/rbt_4_eye4_TA_tex_txt: + addrs: [0x809AF360, 0x809AF460] + npc/tex/rbt_4_eye5_TA_tex_txt: + addrs: [0x809AF460, 0x809AF560] + npc/tex/rbt_4_eye6_TA_tex_txt: + addrs: [0x809AF560, 0x809AF660] + npc/tex/rbt_4_eye7_TA_tex_txt: + addrs: [0x809AF660, 0x809AF760] + npc/tex/rbt_4_eye8_TA_tex_txt: + addrs: [0x809AF760, 0x809AF860] + npc/tex/rbt_4_mouth1_TA_tex_txt: + addrs: [0x809AF860, 0x809AF960] + npc/tex/rbt_4_mouth2_TA_tex_txt: + addrs: [0x809AF960, 0x809AFA60] + npc/tex/rbt_4_mouth3_TA_tex_txt: + addrs: [0x809AFA60, 0x809AFB60] + npc/tex/rbt_4_mouth4_TA_tex_txt: + addrs: [0x809AFB60, 0x809AFC60] + npc/tex/rbt_4_mouth5_TA_tex_txt: + addrs: [0x809AFC60, 0x809AFD60] + npc/tex/rbt_4_mouth6_TA_tex_txt: + addrs: [0x809AFD60, 0x809AFE60] + npc/tex/rbt_4_tmem_txt: + addrs: [0x809AFE60, 0x809B0260] + npc/tex/rbt_5_pal: + addrs: [0x809B0260, 0x809B0280] + type: pal16 + npc/tex/rbt_5_eye1_TA_tex_txt: + addrs: [0x809B0280, 0x809B0380] + npc/tex/rbt_5_eye2_TA_tex_txt: + addrs: [0x809B0380, 0x809B0480] + npc/tex/rbt_5_eye3_TA_tex_txt: + addrs: [0x809B0480, 0x809B0580] + npc/tex/rbt_5_eye4_TA_tex_txt: + addrs: [0x809B0580, 0x809B0680] + npc/tex/rbt_5_eye5_TA_tex_txt: + addrs: [0x809B0680, 0x809B0780] + npc/tex/rbt_5_eye6_TA_tex_txt: + addrs: [0x809B0780, 0x809B0880] + npc/tex/rbt_5_eye7_TA_tex_txt: + addrs: [0x809B0880, 0x809B0980] + npc/tex/rbt_5_eye8_TA_tex_txt: + addrs: [0x809B0980, 0x809B0A80] + npc/tex/rbt_5_mouth1_TA_tex_txt: + addrs: [0x809B0A80, 0x809B0B80] + npc/tex/rbt_5_mouth2_TA_tex_txt: + addrs: [0x809B0B80, 0x809B0C80] + npc/tex/rbt_5_mouth3_TA_tex_txt: + addrs: [0x809B0C80, 0x809B0D80] + npc/tex/rbt_5_mouth4_TA_tex_txt: + addrs: [0x809B0D80, 0x809B0E80] + npc/tex/rbt_5_mouth5_TA_tex_txt: + addrs: [0x809B0E80, 0x809B0F80] + npc/tex/rbt_5_mouth6_TA_tex_txt: + addrs: [0x809B0F80, 0x809B1080] + npc/tex/rbt_5_tmem_txt: + addrs: [0x809B1080, 0x809B1480] + npc/tex/rbt_6_pal: + addrs: [0x809B1480, 0x809B14A0] + type: pal16 + npc/tex/rbt_6_eye1_TA_tex_txt: + addrs: [0x809B14A0, 0x809B15A0] + npc/tex/rbt_6_eye2_TA_tex_txt: + addrs: [0x809B15A0, 0x809B16A0] + npc/tex/rbt_6_eye3_TA_tex_txt: + addrs: [0x809B16A0, 0x809B17A0] + npc/tex/rbt_6_eye4_TA_tex_txt: + addrs: [0x809B17A0, 0x809B18A0] + npc/tex/rbt_6_eye5_TA_tex_txt: + addrs: [0x809B18A0, 0x809B19A0] + npc/tex/rbt_6_eye6_TA_tex_txt: + addrs: [0x809B19A0, 0x809B1AA0] + npc/tex/rbt_6_eye7_TA_tex_txt: + addrs: [0x809B1AA0, 0x809B1BA0] + npc/tex/rbt_6_eye8_TA_tex_txt: + addrs: [0x809B1BA0, 0x809B1CA0] + npc/tex/rbt_6_mouth1_TA_tex_txt: + addrs: [0x809B1CA0, 0x809B1DA0] + npc/tex/rbt_6_mouth2_TA_tex_txt: + addrs: [0x809B1DA0, 0x809B1EA0] + npc/tex/rbt_6_mouth3_TA_tex_txt: + addrs: [0x809B1EA0, 0x809B1FA0] + npc/tex/rbt_6_mouth4_TA_tex_txt: + addrs: [0x809B1FA0, 0x809B20A0] + npc/tex/rbt_6_mouth5_TA_tex_txt: + addrs: [0x809B20A0, 0x809B21A0] + npc/tex/rbt_6_mouth6_TA_tex_txt: + addrs: [0x809B21A0, 0x809B22A0] + npc/tex/rbt_6_tmem_txt: + addrs: [0x809B22A0, 0x809B26A0] + npc/tex/rbt_7_pal: + addrs: [0x809B26A0, 0x809B26C0] + type: pal16 + npc/tex/rbt_7_eye1_TA_tex_txt: + addrs: [0x809B26C0, 0x809B27C0] + npc/tex/rbt_7_eye2_TA_tex_txt: + addrs: [0x809B27C0, 0x809B28C0] + npc/tex/rbt_7_eye3_TA_tex_txt: + addrs: [0x809B28C0, 0x809B29C0] + npc/tex/rbt_7_eye4_TA_tex_txt: + addrs: [0x809B29C0, 0x809B2AC0] + npc/tex/rbt_7_eye5_TA_tex_txt: + addrs: [0x809B2AC0, 0x809B2BC0] + npc/tex/rbt_7_eye6_TA_tex_txt: + addrs: [0x809B2BC0, 0x809B2CC0] + npc/tex/rbt_7_eye7_TA_tex_txt: + addrs: [0x809B2CC0, 0x809B2DC0] + npc/tex/rbt_7_eye8_TA_tex_txt: + addrs: [0x809B2DC0, 0x809B2EC0] + npc/tex/rbt_7_mouth1_TA_tex_txt: + addrs: [0x809B2EC0, 0x809B2FC0] + npc/tex/rbt_7_mouth2_TA_tex_txt: + addrs: [0x809B2FC0, 0x809B30C0] + npc/tex/rbt_7_mouth3_TA_tex_txt: + addrs: [0x809B30C0, 0x809B31C0] + npc/tex/rbt_7_mouth4_TA_tex_txt: + addrs: [0x809B31C0, 0x809B32C0] + npc/tex/rbt_7_mouth5_TA_tex_txt: + addrs: [0x809B32C0, 0x809B33C0] + npc/tex/rbt_7_mouth6_TA_tex_txt: + addrs: [0x809B33C0, 0x809B34C0] + npc/tex/rbt_7_tmem_txt: + addrs: [0x809B34C0, 0x809B38C0] + npc/tex/rbt_8_pal: + addrs: [0x809B38C0, 0x809B38E0] + type: pal16 + npc/tex/rbt_8_eye1_TA_tex_txt: + addrs: [0x809B38E0, 0x809B39E0] + npc/tex/rbt_8_eye2_TA_tex_txt: + addrs: [0x809B39E0, 0x809B3AE0] + npc/tex/rbt_8_eye3_TA_tex_txt: + addrs: [0x809B3AE0, 0x809B3BE0] + npc/tex/rbt_8_eye4_TA_tex_txt: + addrs: [0x809B3BE0, 0x809B3CE0] + npc/tex/rbt_8_eye5_TA_tex_txt: + addrs: [0x809B3CE0, 0x809B3DE0] + npc/tex/rbt_8_eye6_TA_tex_txt: + addrs: [0x809B3DE0, 0x809B3EE0] + npc/tex/rbt_8_eye7_TA_tex_txt: + addrs: [0x809B3EE0, 0x809B3FE0] + npc/tex/rbt_8_eye8_TA_tex_txt: + addrs: [0x809B3FE0, 0x809B40E0] + npc/tex/rbt_8_mouth1_TA_tex_txt: + addrs: [0x809B40E0, 0x809B41E0] + npc/tex/rbt_8_mouth2_TA_tex_txt: + addrs: [0x809B41E0, 0x809B42E0] + npc/tex/rbt_8_mouth3_TA_tex_txt: + addrs: [0x809B42E0, 0x809B43E0] + npc/tex/rbt_8_mouth4_TA_tex_txt: + addrs: [0x809B43E0, 0x809B44E0] + npc/tex/rbt_8_mouth5_TA_tex_txt: + addrs: [0x809B44E0, 0x809B45E0] + npc/tex/rbt_8_mouth6_TA_tex_txt: + addrs: [0x809B45E0, 0x809B46E0] + npc/tex/rbt_8_tmem_txt: + addrs: [0x809B46E0, 0x809B4AE0] + npc/tex/rbt_9_pal: + addrs: [0x809B4AE0, 0x809B4B00] + type: pal16 + npc/tex/rbt_9_eye1_TA_tex_txt: + addrs: [0x809B4B00, 0x809B4C00] + npc/tex/rbt_9_eye2_TA_tex_txt: + addrs: [0x809B4C00, 0x809B4D00] + npc/tex/rbt_9_eye3_TA_tex_txt: + addrs: [0x809B4D00, 0x809B4E00] + npc/tex/rbt_9_eye4_TA_tex_txt: + addrs: [0x809B4E00, 0x809B4F00] + npc/tex/rbt_9_eye5_TA_tex_txt: + addrs: [0x809B4F00, 0x809B5000] + npc/tex/rbt_9_eye6_TA_tex_txt: + addrs: [0x809B5000, 0x809B5100] + npc/tex/rbt_9_eye7_TA_tex_txt: + addrs: [0x809B5100, 0x809B5200] + npc/tex/rbt_9_eye8_TA_tex_txt: + addrs: [0x809B5200, 0x809B5300] + npc/tex/rbt_9_mouth1_TA_tex_txt: + addrs: [0x809B5300, 0x809B5400] + npc/tex/rbt_9_mouth2_TA_tex_txt: + addrs: [0x809B5400, 0x809B5500] + npc/tex/rbt_9_mouth3_TA_tex_txt: + addrs: [0x809B5500, 0x809B5600] + npc/tex/rbt_9_mouth4_TA_tex_txt: + addrs: [0x809B5600, 0x809B5700] + npc/tex/rbt_9_mouth5_TA_tex_txt: + addrs: [0x809B5700, 0x809B5800] + npc/tex/rbt_9_mouth6_TA_tex_txt: + addrs: [0x809B5800, 0x809B5900] + npc/tex/rbt_9_tmem_txt: + addrs: [0x809B5900, 0x809B5D00] + npc/tex/rbt_10_pal: + addrs: [0x809B5D00, 0x809B5D20] + type: pal16 + npc/tex/rbt_10_eye1_TA_tex_txt: + addrs: [0x809B5D20, 0x809B5E20] + npc/tex/rbt_10_eye2_TA_tex_txt: + addrs: [0x809B5E20, 0x809B5F20] + npc/tex/rbt_10_eye3_TA_tex_txt: + addrs: [0x809B5F20, 0x809B6020] + npc/tex/rbt_10_eye4_TA_tex_txt: + addrs: [0x809B6020, 0x809B6120] + npc/tex/rbt_10_eye5_TA_tex_txt: + addrs: [0x809B6120, 0x809B6220] + npc/tex/rbt_10_eye6_TA_tex_txt: + addrs: [0x809B6220, 0x809B6320] + npc/tex/rbt_10_eye7_TA_tex_txt: + addrs: [0x809B6320, 0x809B6420] + npc/tex/rbt_10_eye8_TA_tex_txt: + addrs: [0x809B6420, 0x809B6520] + npc/tex/rbt_10_mouth1_TA_tex_txt: + addrs: [0x809B6520, 0x809B6620] + npc/tex/rbt_10_mouth2_TA_tex_txt: + addrs: [0x809B6620, 0x809B6720] + npc/tex/rbt_10_mouth3_TA_tex_txt: + addrs: [0x809B6720, 0x809B6820] + npc/tex/rbt_10_mouth4_TA_tex_txt: + addrs: [0x809B6820, 0x809B6920] + npc/tex/rbt_10_mouth5_TA_tex_txt: + addrs: [0x809B6920, 0x809B6A20] + npc/tex/rbt_10_mouth6_TA_tex_txt: + addrs: [0x809B6A20, 0x809B6B20] + npc/tex/rbt_10_tmem_txt: + addrs: [0x809B6B20, 0x809B6F20] + npc/mdl/mob_1_v: + addrs: [0x809B6F20, 0x809B82D0] + type: vtx + npc/tex/mob_1_pal: + addrs: [0x809B8AA0, 0x809B8AC0] + type: pal16 + npc/tex/mob_1_eye1_TA_tex_txt: + addrs: [0x809B8AC0, 0x809B8BC0] + npc/tex/mob_1_eye2_TA_tex_txt: + addrs: [0x809B8BC0, 0x809B8CC0] + npc/tex/mob_1_eye3_TA_tex_txt: + addrs: [0x809B8CC0, 0x809B8DC0] + npc/tex/mob_1_eye4_TA_tex_txt: + addrs: [0x809B8DC0, 0x809B8EC0] + npc/tex/mob_1_eye5_TA_tex_txt: + addrs: [0x809B8EC0, 0x809B8FC0] + npc/tex/mob_1_eye6_TA_tex_txt: + addrs: [0x809B8FC0, 0x809B90C0] + npc/tex/mob_1_eye7_TA_tex_txt: + addrs: [0x809B90C0, 0x809B91C0] + npc/tex/mob_1_eye8_TA_tex_txt: + addrs: [0x809B91C0, 0x809B92C0] + npc/tex/mob_1_mouth1_TA_tex_txt: + addrs: [0x809B92C0, 0x809B93C0] + npc/tex/mob_1_mouth2_TA_tex_txt: + addrs: [0x809B93C0, 0x809B94C0] + npc/tex/mob_1_mouth3_TA_tex_txt: + addrs: [0x809B94C0, 0x809B95C0] + npc/tex/mob_1_mouth4_TA_tex_txt: + addrs: [0x809B95C0, 0x809B96C0] + npc/tex/mob_1_mouth5_TA_tex_txt: + addrs: [0x809B96C0, 0x809B97C0] + npc/tex/mob_1_mouth6_TA_tex_txt: + addrs: [0x809B97C0, 0x809B98C0] + npc/tex/mob_1_tmem_txt: + addrs: [0x809B98C0, 0x809B9F40] + npc/mdl/rhn_1_v: + addrs: [0x809BA340, 0x809BBF40] + type: vtx + npc/tex/rhn_1_pal: + addrs: [0x809BCB00, 0x809BCB20] + type: pal16 + npc/tex/rhn_1_eye1_TA_tex_txt: + addrs: [0x809BCB20, 0x809BCC20] + npc/tex/rhn_1_eye2_TA_tex_txt: + addrs: [0x809BCC20, 0x809BCD20] + npc/tex/rhn_1_eye3_TA_tex_txt: + addrs: [0x809BCD20, 0x809BCE20] + npc/tex/rhn_1_eye4_TA_tex_txt: + addrs: [0x809BCE20, 0x809BCF20] + npc/tex/rhn_1_eye5_TA_tex_txt: + addrs: [0x809BCF20, 0x809BD020] + npc/tex/rhn_1_eye6_TA_tex_txt: + addrs: [0x809BD020, 0x809BD120] + npc/tex/rhn_1_eye7_TA_tex_txt: + addrs: [0x809BD120, 0x809BD220] + npc/tex/rhn_1_eye8_TA_tex_txt: + addrs: [0x809BD220, 0x809BD320] + npc/tex/rhn_1_mouth1_TA_tex_txt: + addrs: [0x809BD320, 0x809BD420] + npc/tex/rhn_1_mouth2_TA_tex_txt: + addrs: [0x809BD420, 0x809BD520] + npc/tex/rhn_1_mouth3_TA_tex_txt: + addrs: [0x809BD520, 0x809BD620] + npc/tex/rhn_1_mouth4_TA_tex_txt: + addrs: [0x809BD620, 0x809BD720] + npc/tex/rhn_1_mouth5_TA_tex_txt: + addrs: [0x809BD720, 0x809BD820] + npc/tex/rhn_1_mouth6_TA_tex_txt: + addrs: [0x809BD820, 0x809BD920] + npc/tex/rhn_1_tmem_txt: + addrs: [0x809BD920, 0x809BDD20] + npc/tex/rhn_2_pal: + addrs: [0x809BDD20, 0x809BDD40] + type: pal16 + npc/tex/rhn_2_eye1_TA_tex_txt: + addrs: [0x809BDD40, 0x809BDE40] + npc/tex/rhn_2_eye2_TA_tex_txt: + addrs: [0x809BDE40, 0x809BDF40] + npc/tex/rhn_2_eye3_TA_tex_txt: + addrs: [0x809BDF40, 0x809BE040] + npc/tex/rhn_2_eye4_TA_tex_txt: + addrs: [0x809BE040, 0x809BE140] + npc/tex/rhn_2_eye5_TA_tex_txt: + addrs: [0x809BE140, 0x809BE240] + npc/tex/rhn_2_eye6_TA_tex_txt: + addrs: [0x809BE240, 0x809BE340] + npc/tex/rhn_2_eye7_TA_tex_txt: + addrs: [0x809BE340, 0x809BE440] + npc/tex/rhn_2_eye8_TA_tex_txt: + addrs: [0x809BE440, 0x809BE540] + npc/tex/rhn_2_mouth1_TA_tex_txt: + addrs: [0x809BE540, 0x809BE640] + npc/tex/rhn_2_mouth2_TA_tex_txt: + addrs: [0x809BE640, 0x809BE740] + npc/tex/rhn_2_mouth3_TA_tex_txt: + addrs: [0x809BE740, 0x809BE840] + npc/tex/rhn_2_mouth4_TA_tex_txt: + addrs: [0x809BE840, 0x809BE940] + npc/tex/rhn_2_mouth5_TA_tex_txt: + addrs: [0x809BE940, 0x809BEA40] + npc/tex/rhn_2_mouth6_TA_tex_txt: + addrs: [0x809BEA40, 0x809BEB40] + npc/tex/rhn_2_tmem_txt: + addrs: [0x809BEB40, 0x809BEF40] + npc/tex/rhn_3_pal: + addrs: [0x809BEF40, 0x809BEF60] + type: pal16 + npc/tex/rhn_3_eye1_TA_tex_txt: + addrs: [0x809BEF60, 0x809BF060] + npc/tex/rhn_3_eye2_TA_tex_txt: + addrs: [0x809BF060, 0x809BF160] + npc/tex/rhn_3_eye3_TA_tex_txt: + addrs: [0x809BF160, 0x809BF260] + npc/tex/rhn_3_eye4_TA_tex_txt: + addrs: [0x809BF260, 0x809BF360] + npc/tex/rhn_3_eye5_TA_tex_txt: + addrs: [0x809BF360, 0x809BF460] + npc/tex/rhn_3_eye6_TA_tex_txt: + addrs: [0x809BF460, 0x809BF560] + npc/tex/rhn_3_eye7_TA_tex_txt: + addrs: [0x809BF560, 0x809BF660] + npc/tex/rhn_3_eye8_TA_tex_txt: + addrs: [0x809BF660, 0x809BF760] + npc/tex/rhn_3_mouth1_TA_tex_txt: + addrs: [0x809BF760, 0x809BF860] + npc/tex/rhn_3_mouth2_TA_tex_txt: + addrs: [0x809BF860, 0x809BF960] + npc/tex/rhn_3_mouth3_TA_tex_txt: + addrs: [0x809BF960, 0x809BFA60] + npc/tex/rhn_3_mouth4_TA_tex_txt: + addrs: [0x809BFA60, 0x809BFB60] + npc/tex/rhn_3_mouth5_TA_tex_txt: + addrs: [0x809BFB60, 0x809BFC60] + npc/tex/rhn_3_mouth6_TA_tex_txt: + addrs: [0x809BFC60, 0x809BFD60] + npc/tex/rhn_3_tmem_txt: + addrs: [0x809BFD60, 0x809C0160] + npc/tex/rhn_4_pal: + addrs: [0x809C0160, 0x809C0180] + type: pal16 + npc/tex/rhn_4_eye1_TA_tex_txt: + addrs: [0x809C0180, 0x809C0280] + npc/tex/rhn_4_eye2_TA_tex_txt: + addrs: [0x809C0280, 0x809C0380] + npc/tex/rhn_4_eye3_TA_tex_txt: + addrs: [0x809C0380, 0x809C0480] + npc/tex/rhn_4_eye4_TA_tex_txt: + addrs: [0x809C0480, 0x809C0580] + npc/tex/rhn_4_eye5_TA_tex_txt: + addrs: [0x809C0580, 0x809C0680] + npc/tex/rhn_4_eye6_TA_tex_txt: + addrs: [0x809C0680, 0x809C0780] + npc/tex/rhn_4_eye7_TA_tex_txt: + addrs: [0x809C0780, 0x809C0880] + npc/tex/rhn_4_eye8_TA_tex_txt: + addrs: [0x809C0880, 0x809C0980] + npc/tex/rhn_4_mouth1_TA_tex_txt: + addrs: [0x809C0980, 0x809C0A80] + npc/tex/rhn_4_mouth2_TA_tex_txt: + addrs: [0x809C0A80, 0x809C0B80] + npc/tex/rhn_4_mouth3_TA_tex_txt: + addrs: [0x809C0B80, 0x809C0C80] + npc/tex/rhn_4_mouth4_TA_tex_txt: + addrs: [0x809C0C80, 0x809C0D80] + npc/tex/rhn_4_mouth5_TA_tex_txt: + addrs: [0x809C0D80, 0x809C0E80] + npc/tex/rhn_4_mouth6_TA_tex_txt: + addrs: [0x809C0E80, 0x809C0F80] + npc/tex/rhn_4_tmem_txt: + addrs: [0x809C0F80, 0x809C1380] + npc/mdl/snt_1_v: + addrs: [0x809C9148, 0x809CA508] + type: vtx + npc/tex/snt_1_pal: + addrs: [0x809CAD40, 0x809CAD60] + type: pal16 + npc/tex/snt_1_eye1_TA_tex_txt: + addrs: [0x809CAD60, 0x809CAE60] + npc/tex/snt_1_eye2_TA_tex_txt: + addrs: [0x809CAE60, 0x809CAF60] + npc/tex/snt_1_eye3_TA_tex_txt: + addrs: [0x809CAF60, 0x809CB060] + npc/tex/snt_1_eye4_TA_tex_txt: + addrs: [0x809CB060, 0x809CB160] + npc/tex/snt_1_eye5_TA_tex_txt: + addrs: [0x809CB160, 0x809CB260] + npc/tex/snt_1_eye6_TA_tex_txt: + addrs: [0x809CB260, 0x809CB360] + npc/tex/snt_1_eye7_TA_tex_txt: + addrs: [0x809CB360, 0x809CB460] + npc/tex/snt_1_eye8_TA_tex_txt: + addrs: [0x809CB460, 0x809CB560] + npc/tex/snt_1_mouth1_TA_tex_txt: + addrs: [0x809CB560, 0x809CB660] + npc/tex/snt_1_mouth2_TA_tex_txt: + addrs: [0x809CB660, 0x809CB760] + npc/tex/snt_1_mouth3_TA_tex_txt: + addrs: [0x809CB760, 0x809CB860] + npc/tex/snt_1_mouth4_TA_tex_txt: + addrs: [0x809CB860, 0x809CB960] + npc/tex/snt_1_mouth5_TA_tex_txt: + addrs: [0x809CB960, 0x809CBA60] + npc/tex/snt_1_mouth6_TA_tex_txt: + addrs: [0x809CBA60, 0x809CBB60] + npc/tex/snt_1_tmem_txt: + addrs: [0x809CBB60, 0x809CC1E0] + npc/mdl/wip_1_v: + addrs: [0x809CC1E0, 0x809CD8E0] + type: vtx + npc/tex/wip_1_pal: + addrs: [0x809CE180, 0x809CE1A0] + type: pal16 + npc/tex/wip_1_eye1_TA_tex_txt: + addrs: [0x809CE1A0, 0x809CE2A0] + npc/tex/wip_1_eye2_TA_tex_txt: + addrs: [0x809CE2A0, 0x809CE3A0] + npc/tex/wip_1_eye3_TA_tex_txt: + addrs: [0x809CE3A0, 0x809CE4A0] + npc/tex/wip_1_eye4_TA_tex_txt: + addrs: [0x809CE4A0, 0x809CE5A0] + npc/tex/wip_1_eye5_TA_tex_txt: + addrs: [0x809CE5A0, 0x809CE6A0] + npc/tex/wip_1_eye6_TA_tex_txt: + addrs: [0x809CE6A0, 0x809CE7A0] + npc/tex/wip_1_eye7_TA_tex_txt: + addrs: [0x809CE7A0, 0x809CE8A0] + npc/tex/wip_1_eye8_TA_tex_txt: + addrs: [0x809CE8A0, 0x809CE9A0] + npc/tex/wip_1_mouth1_TA_tex_txt: + addrs: [0x809CE9A0, 0x809CEAA0] + npc/tex/wip_1_mouth2_TA_tex_txt: + addrs: [0x809CEAA0, 0x809CEBA0] + npc/tex/wip_1_mouth3_TA_tex_txt: + addrs: [0x809CEBA0, 0x809CECA0] + npc/tex/wip_1_mouth4_TA_tex_txt: + addrs: [0x809CECA0, 0x809CEDA0] + npc/tex/wip_1_mouth5_TA_tex_txt: + addrs: [0x809CEDA0, 0x809CEEA0] + npc/tex/wip_1_mouth6_TA_tex_txt: + addrs: [0x809CEEA0, 0x809CEFA0] + npc/tex/wip_1_tmem_txt: + addrs: [0x809CEFA0, 0x809CF560] + npc/mdl/shp_1_v: + addrs: [0x809CF560, 0x809D09C0] + type: vtx + npc/tex/shp_1_pal: + addrs: [0x809D11A0, 0x809D11C0] + type: pal16 + npc/tex/shp_1_eye1_TA_tex_txt: + addrs: [0x809D11C0, 0x809D12C0] + npc/tex/shp_1_eye2_TA_tex_txt: + addrs: [0x809D12C0, 0x809D13C0] + npc/tex/shp_1_eye3_TA_tex_txt: + addrs: [0x809D13C0, 0x809D14C0] + npc/tex/shp_1_eye4_TA_tex_txt: + addrs: [0x809D14C0, 0x809D15C0] + npc/tex/shp_1_eye5_TA_tex_txt: + addrs: [0x809D15C0, 0x809D16C0] + npc/tex/shp_1_eye6_TA_tex_txt: + addrs: [0x809D16C0, 0x809D17C0] + npc/tex/shp_1_eye7_TA_tex_txt: + addrs: [0x809D17C0, 0x809D18C0] + npc/tex/shp_1_eye8_TA_tex_txt: + addrs: [0x809D18C0, 0x809D19C0] + npc/tex/shp_1_mouth1_TA_tex_txt: + addrs: [0x809D19C0, 0x809D1AC0] + npc/tex/shp_1_mouth2_TA_tex_txt: + addrs: [0x809D1AC0, 0x809D1BC0] + npc/tex/shp_1_mouth3_TA_tex_txt: + addrs: [0x809D1BC0, 0x809D1CC0] + npc/tex/shp_1_mouth4_TA_tex_txt: + addrs: [0x809D1CC0, 0x809D1DC0] + npc/tex/shp_1_mouth5_TA_tex_txt: + addrs: [0x809D1DC0, 0x809D1EC0] + npc/tex/shp_1_mouth6_TA_tex_txt: + addrs: [0x809D1EC0, 0x809D1FC0] + npc/tex/shp_1_tmem_txt: + addrs: [0x809D1FC0, 0x809D23C0] + npc/tex/shp_2_pal: + addrs: [0x809D23C0, 0x809D23E0] + type: pal16 + npc/tex/shp_2_eye1_TA_tex_txt: + addrs: [0x809D23E0, 0x809D24E0] + npc/tex/shp_2_eye2_TA_tex_txt: + addrs: [0x809D24E0, 0x809D25E0] + npc/tex/shp_2_eye3_TA_tex_txt: + addrs: [0x809D25E0, 0x809D26E0] + npc/tex/shp_2_eye4_TA_tex_txt: + addrs: [0x809D26E0, 0x809D27E0] + npc/tex/shp_2_eye5_TA_tex_txt: + addrs: [0x809D27E0, 0x809D28E0] + npc/tex/shp_2_eye6_TA_tex_txt: + addrs: [0x809D28E0, 0x809D29E0] + npc/tex/shp_2_eye7_TA_tex_txt: + addrs: [0x809D29E0, 0x809D2AE0] + npc/tex/shp_2_eye8_TA_tex_txt: + addrs: [0x809D2AE0, 0x809D2BE0] + npc/tex/shp_2_mouth1_TA_tex_txt: + addrs: [0x809D2BE0, 0x809D2CE0] + npc/tex/shp_2_mouth2_TA_tex_txt: + addrs: [0x809D2CE0, 0x809D2DE0] + npc/tex/shp_2_mouth3_TA_tex_txt: + addrs: [0x809D2DE0, 0x809D2EE0] + npc/tex/shp_2_mouth4_TA_tex_txt: + addrs: [0x809D2EE0, 0x809D2FE0] + npc/tex/shp_2_mouth5_TA_tex_txt: + addrs: [0x809D2FE0, 0x809D30E0] + npc/tex/shp_2_mouth6_TA_tex_txt: + addrs: [0x809D30E0, 0x809D31E0] + npc/tex/shp_2_tmem_txt: + addrs: [0x809D31E0, 0x809D35E0] + npc/tex/shp_3_pal: + addrs: [0x809D35E0, 0x809D3600] + type: pal16 + npc/tex/shp_3_eye1_TA_tex_txt: + addrs: [0x809D3600, 0x809D3700] + npc/tex/shp_3_eye2_TA_tex_txt: + addrs: [0x809D3700, 0x809D3800] + npc/tex/shp_3_eye3_TA_tex_txt: + addrs: [0x809D3800, 0x809D3900] + npc/tex/shp_3_eye4_TA_tex_txt: + addrs: [0x809D3900, 0x809D3A00] + npc/tex/shp_3_eye5_TA_tex_txt: + addrs: [0x809D3A00, 0x809D3B00] + npc/tex/shp_3_eye6_TA_tex_txt: + addrs: [0x809D3B00, 0x809D3C00] + npc/tex/shp_3_eye7_TA_tex_txt: + addrs: [0x809D3C00, 0x809D3D00] + npc/tex/shp_3_eye8_TA_tex_txt: + addrs: [0x809D3D00, 0x809D3E00] + npc/tex/shp_3_mouth1_TA_tex_txt: + addrs: [0x809D3E00, 0x809D3F00] + npc/tex/shp_3_mouth2_TA_tex_txt: + addrs: [0x809D3F00, 0x809D4000] + npc/tex/shp_3_mouth3_TA_tex_txt: + addrs: [0x809D4000, 0x809D4100] + npc/tex/shp_3_mouth4_TA_tex_txt: + addrs: [0x809D4100, 0x809D4200] + npc/tex/shp_3_mouth5_TA_tex_txt: + addrs: [0x809D4200, 0x809D4300] + npc/tex/shp_3_mouth6_TA_tex_txt: + addrs: [0x809D4300, 0x809D4400] + npc/tex/shp_3_tmem_txt: + addrs: [0x809D4400, 0x809D4800] + npc/tex/shp_4_pal: + addrs: [0x809D4800, 0x809D4820] + type: pal16 + npc/tex/shp_4_eye1_TA_tex_txt: + addrs: [0x809D4820, 0x809D4920] + npc/tex/shp_4_eye2_TA_tex_txt: + addrs: [0x809D4920, 0x809D4A20] + npc/tex/shp_4_eye3_TA_tex_txt: + addrs: [0x809D4A20, 0x809D4B20] + npc/tex/shp_4_eye4_TA_tex_txt: + addrs: [0x809D4B20, 0x809D4C20] + npc/tex/shp_4_eye5_TA_tex_txt: + addrs: [0x809D4C20, 0x809D4D20] + npc/tex/shp_4_eye6_TA_tex_txt: + addrs: [0x809D4D20, 0x809D4E20] + npc/tex/shp_4_eye7_TA_tex_txt: + addrs: [0x809D4E20, 0x809D4F20] + npc/tex/shp_4_eye8_TA_tex_txt: + addrs: [0x809D4F20, 0x809D5020] + npc/tex/shp_4_mouth1_TA_tex_txt: + addrs: [0x809D5020, 0x809D5120] + npc/tex/shp_4_mouth2_TA_tex_txt: + addrs: [0x809D5120, 0x809D5220] + npc/tex/shp_4_mouth3_TA_tex_txt: + addrs: [0x809D5220, 0x809D5320] + npc/tex/shp_4_mouth4_TA_tex_txt: + addrs: [0x809D5320, 0x809D5420] + npc/tex/shp_4_mouth5_TA_tex_txt: + addrs: [0x809D5420, 0x809D5520] + npc/tex/shp_4_mouth6_TA_tex_txt: + addrs: [0x809D5520, 0x809D5620] + npc/tex/shp_4_tmem_txt: + addrs: [0x809D5620, 0x809D5A20] + npc/tex/shp_5_pal: + addrs: [0x809D5A20, 0x809D5A40] + type: pal16 + npc/tex/shp_5_eye1_TA_tex_txt: + addrs: [0x809D5A40, 0x809D5B40] + npc/tex/shp_5_eye2_TA_tex_txt: + addrs: [0x809D5B40, 0x809D5C40] + npc/tex/shp_5_eye3_TA_tex_txt: + addrs: [0x809D5C40, 0x809D5D40] + npc/tex/shp_5_eye4_TA_tex_txt: + addrs: [0x809D5D40, 0x809D5E40] + npc/tex/shp_5_eye5_TA_tex_txt: + addrs: [0x809D5E40, 0x809D5F40] + npc/tex/shp_5_eye6_TA_tex_txt: + addrs: [0x809D5F40, 0x809D6040] + npc/tex/shp_5_eye7_TA_tex_txt: + addrs: [0x809D6040, 0x809D6140] + npc/tex/shp_5_eye8_TA_tex_txt: + addrs: [0x809D6140, 0x809D6240] + npc/tex/shp_5_mouth1_TA_tex_txt: + addrs: [0x809D6240, 0x809D6340] + npc/tex/shp_5_mouth2_TA_tex_txt: + addrs: [0x809D6340, 0x809D6440] + npc/tex/shp_5_mouth3_TA_tex_txt: + addrs: [0x809D6440, 0x809D6540] + npc/tex/shp_5_mouth4_TA_tex_txt: + addrs: [0x809D6540, 0x809D6640] + npc/tex/shp_5_mouth5_TA_tex_txt: + addrs: [0x809D6640, 0x809D6740] + npc/tex/shp_5_mouth6_TA_tex_txt: + addrs: [0x809D6740, 0x809D6840] + npc/tex/shp_5_tmem_txt: + addrs: [0x809D6840, 0x809D6C40] + npc/tex/shp_6_pal: + addrs: [0x809D6C40, 0x809D6C60] + type: pal16 + npc/tex/shp_6_eye1_TA_tex_txt: + addrs: [0x809D6C60, 0x809D6D60] + npc/tex/shp_6_eye2_TA_tex_txt: + addrs: [0x809D6D60, 0x809D6E60] + npc/tex/shp_6_eye3_TA_tex_txt: + addrs: [0x809D6E60, 0x809D6F60] + npc/tex/shp_6_eye4_TA_tex_txt: + addrs: [0x809D6F60, 0x809D7060] + npc/tex/shp_6_eye5_TA_tex_txt: + addrs: [0x809D7060, 0x809D7160] + npc/tex/shp_6_eye6_TA_tex_txt: + addrs: [0x809D7160, 0x809D7260] + npc/tex/shp_6_eye7_TA_tex_txt: + addrs: [0x809D7260, 0x809D7360] + npc/tex/shp_6_eye8_TA_tex_txt: + addrs: [0x809D7360, 0x809D7460] + npc/tex/shp_6_mouth1_TA_tex_txt: + addrs: [0x809D7460, 0x809D7560] + npc/tex/shp_6_mouth2_TA_tex_txt: + addrs: [0x809D7560, 0x809D7660] + npc/tex/shp_6_mouth3_TA_tex_txt: + addrs: [0x809D7660, 0x809D7760] + npc/tex/shp_6_mouth4_TA_tex_txt: + addrs: [0x809D7760, 0x809D7860] + npc/tex/shp_6_mouth5_TA_tex_txt: + addrs: [0x809D7860, 0x809D7960] + npc/tex/shp_6_mouth6_TA_tex_txt: + addrs: [0x809D7960, 0x809D7A60] + npc/tex/shp_6_tmem_txt: + addrs: [0x809D7A60, 0x809D7E60] + npc/mdl/rcn_1_v: + addrs: [0x809D7E60, 0x809D94B0] + type: vtx + npc/tex/rcn_1_pal: + addrs: [0x809D9E80, 0x809D9EA0] + type: pal16 + npc/tex/rcn_1_eye1_TA_tex_txt: + addrs: [0x809D9EA0, 0x809D9FA0] + npc/tex/rcn_1_eye2_TA_tex_txt: + addrs: [0x809D9FA0, 0x809DA0A0] + npc/tex/rcn_1_eye3_TA_tex_txt: + addrs: [0x809DA0A0, 0x809DA1A0] + npc/tex/rcn_1_eye4_TA_tex_txt: + addrs: [0x809DA1A0, 0x809DA2A0] + npc/tex/rcn_1_eye5_TA_tex_txt: + addrs: [0x809DA2A0, 0x809DA3A0] + npc/tex/rcn_1_eye6_TA_tex_txt: + addrs: [0x809DA3A0, 0x809DA4A0] + npc/tex/rcn_1_eye7_TA_tex_txt: + addrs: [0x809DA4A0, 0x809DA5A0] + npc/tex/rcn_1_eye8_TA_tex_txt: + addrs: [0x809DA5A0, 0x809DA6A0] + npc/tex/rcn_1_tmem_txt: + addrs: [0x809DA6A0, 0x809DACE0] + npc/mdl/kab_1_v: + addrs: [0x80A001B0, 0x80A01A70] + type: vtx + npc/tex/kab_1_pal: + addrs: [0x80A023A0, 0x80A023C0] + type: pal16 + npc/tex/kab_1_eye1_TA_tex_txt: + addrs: [0x80A023C0, 0x80A024C0] + npc/tex/kab_1_eye2_TA_tex_txt: + addrs: [0x80A024C0, 0x80A025C0] + npc/tex/kab_1_eye3_TA_tex_txt: + addrs: [0x80A025C0, 0x80A026C0] + npc/tex/kab_1_eye4_TA_tex_txt: + addrs: [0x80A026C0, 0x80A027C0] + npc/tex/kab_1_eye5_TA_tex_txt: + addrs: [0x80A027C0, 0x80A028C0] + npc/tex/kab_1_eye6_TA_tex_txt: + addrs: [0x80A028C0, 0x80A029C0] + npc/tex/kab_1_eye7_TA_tex_txt: + addrs: [0x80A029C0, 0x80A02AC0] + npc/tex/kab_1_eye8_TA_tex_txt: + addrs: [0x80A02AC0, 0x80A02BC0] + npc/tex/kab_1_tmem_txt: + addrs: [0x80A02BC0, 0x80A02FC0] + npc/mdl/ttl_1_v: + addrs: [0x80B38FC0, 0x80B3A410] + type: vtx + npc/tex/ttl_1_pal: + addrs: [0x80B3ADE0, 0x80B3AE00] + type: pal16 + npc/tex/ttl_1_eye1_TA_tex_txt: + addrs: [0x80B3AE00, 0x80B3AF00] + npc/tex/ttl_1_eye2_TA_tex_txt: + addrs: [0x80B3AF00, 0x80B3B000] + npc/tex/ttl_1_eye3_TA_tex_txt: + addrs: [0x80B3B000, 0x80B3B100] + npc/tex/ttl_1_eye4_TA_tex_txt: + addrs: [0x80B3B100, 0x80B3B200] + npc/tex/ttl_1_eye5_TA_tex_txt: + addrs: [0x80B3B200, 0x80B3B300] + npc/tex/ttl_1_eye6_TA_tex_txt: + addrs: [0x80B3B300, 0x80B3B400] + npc/tex/ttl_1_eye7_TA_tex_txt: + addrs: [0x80B3B400, 0x80B3B500] + npc/tex/ttl_1_eye8_TA_tex_txt: + addrs: [0x80B3B500, 0x80B3B600] + npc/tex/ttl_1_tmem_txt: + addrs: [0x80B3B600, 0x80B3BD40] + npc/mdl/squ_1_v: + addrs: [0x80B3BD40, 0x80B3D430] + type: vtx + npc/tex/squ_1_pal: + addrs: [0x80B3DDE0, 0x80B3DE00] + type: pal16 + npc/tex/squ_1_eye1_TA_tex_txt: + addrs: [0x80B3DE00, 0x80B3DF00] + npc/tex/squ_1_eye2_TA_tex_txt: + addrs: [0x80B3DF00, 0x80B3E000] + npc/tex/squ_1_eye3_TA_tex_txt: + addrs: [0x80B3E000, 0x80B3E100] + npc/tex/squ_1_eye4_TA_tex_txt: + addrs: [0x80B3E100, 0x80B3E200] + npc/tex/squ_1_eye5_TA_tex_txt: + addrs: [0x80B3E200, 0x80B3E300] + npc/tex/squ_1_eye6_TA_tex_txt: + addrs: [0x80B3E300, 0x80B3E400] + npc/tex/squ_1_eye7_TA_tex_txt: + addrs: [0x80B3E400, 0x80B3E500] + npc/tex/squ_1_eye8_TA_tex_txt: + addrs: [0x80B3E500, 0x80B3E600] + npc/tex/squ_1_mouth1_TA_tex_txt: + addrs: [0x80B3E600, 0x80B3E700] + npc/tex/squ_1_mouth2_TA_tex_txt: + addrs: [0x80B3E700, 0x80B3E800] + npc/tex/squ_1_mouth3_TA_tex_txt: + addrs: [0x80B3E800, 0x80B3E900] + npc/tex/squ_1_mouth4_TA_tex_txt: + addrs: [0x80B3E900, 0x80B3EA00] + npc/tex/squ_1_mouth5_TA_tex_txt: + addrs: [0x80B3EA00, 0x80B3EB00] + npc/tex/squ_1_mouth6_TA_tex_txt: + addrs: [0x80B3EB00, 0x80B3EC00] + npc/tex/squ_1_tmem_txt: + addrs: [0x80B3EC00, 0x80B3F000] + npc/tex/squ_2_pal: + addrs: [0x80B3F000, 0x80B3F020] + type: pal16 + npc/tex/squ_2_eye1_TA_tex_txt: + addrs: [0x80B3F020, 0x80B3F120] + npc/tex/squ_2_eye2_TA_tex_txt: + addrs: [0x80B3F120, 0x80B3F220] + npc/tex/squ_2_eye3_TA_tex_txt: + addrs: [0x80B3F220, 0x80B3F320] + npc/tex/squ_2_eye4_TA_tex_txt: + addrs: [0x80B3F320, 0x80B3F420] + npc/tex/squ_2_eye5_TA_tex_txt: + addrs: [0x80B3F420, 0x80B3F520] + npc/tex/squ_2_eye6_TA_tex_txt: + addrs: [0x80B3F520, 0x80B3F620] + npc/tex/squ_2_eye7_TA_tex_txt: + addrs: [0x80B3F620, 0x80B3F720] + npc/tex/squ_2_eye8_TA_tex_txt: + addrs: [0x80B3F720, 0x80B3F820] + npc/tex/squ_2_mouth1_TA_tex_txt: + addrs: [0x80B3F820, 0x80B3F920] + npc/tex/squ_2_mouth2_TA_tex_txt: + addrs: [0x80B3F920, 0x80B3FA20] + npc/tex/squ_2_mouth3_TA_tex_txt: + addrs: [0x80B3FA20, 0x80B3FB20] + npc/tex/squ_2_mouth4_TA_tex_txt: + addrs: [0x80B3FB20, 0x80B3FC20] + npc/tex/squ_2_mouth5_TA_tex_txt: + addrs: [0x80B3FC20, 0x80B3FD20] + npc/tex/squ_2_mouth6_TA_tex_txt: + addrs: [0x80B3FD20, 0x80B3FE20] + npc/tex/squ_2_tmem_txt: + addrs: [0x80B3FE20, 0x80B40220] + npc/tex/squ_11_pal: + addrs: [0x80B40220, 0x80B40240] + type: pal16 + npc/tex/squ_11_eye1_TA_tex_txt: + addrs: [0x80B40240, 0x80B40340] + npc/tex/squ_11_eye2_TA_tex_txt: + addrs: [0x80B40340, 0x80B40440] + npc/tex/squ_11_eye3_TA_tex_txt: + addrs: [0x80B40440, 0x80B40540] + npc/tex/squ_11_eye4_TA_tex_txt: + addrs: [0x80B40540, 0x80B40640] + npc/tex/squ_11_eye5_TA_tex_txt: + addrs: [0x80B40640, 0x80B40740] + npc/tex/squ_11_eye6_TA_tex_txt: + addrs: [0x80B40740, 0x80B40840] + npc/tex/squ_11_eye7_TA_tex_txt: + addrs: [0x80B40840, 0x80B40940] + npc/tex/squ_11_eye8_TA_tex_txt: + addrs: [0x80B40940, 0x80B40A40] + npc/tex/squ_11_mouth1_TA_tex_txt: + addrs: [0x80B40A40, 0x80B40B40] + npc/tex/squ_11_mouth2_TA_tex_txt: + addrs: [0x80B40B40, 0x80B40C40] + npc/tex/squ_11_mouth3_TA_tex_txt: + addrs: [0x80B40C40, 0x80B40D40] + npc/tex/squ_11_mouth4_TA_tex_txt: + addrs: [0x80B40D40, 0x80B40E40] + npc/tex/squ_11_mouth5_TA_tex_txt: + addrs: [0x80B40E40, 0x80B40F40] + npc/tex/squ_11_mouth6_TA_tex_txt: + addrs: [0x80B40F40, 0x80B41040] + npc/tex/squ_11_tmem_txt: + addrs: [0x80B41040, 0x80B41440] + npc/tex/squ_3_pal: + addrs: [0x80B41440, 0x80B41460] + type: pal16 + npc/tex/squ_3_eye1_TA_tex_txt: + addrs: [0x80B41460, 0x80B41560] + npc/tex/squ_3_eye2_TA_tex_txt: + addrs: [0x80B41560, 0x80B41660] + npc/tex/squ_3_eye3_TA_tex_txt: + addrs: [0x80B41660, 0x80B41760] + npc/tex/squ_3_eye4_TA_tex_txt: + addrs: [0x80B41760, 0x80B41860] + npc/tex/squ_3_eye5_TA_tex_txt: + addrs: [0x80B41860, 0x80B41960] + npc/tex/squ_3_eye6_TA_tex_txt: + addrs: [0x80B41960, 0x80B41A60] + npc/tex/squ_3_eye7_TA_tex_txt: + addrs: [0x80B41A60, 0x80B41B60] + npc/tex/squ_3_eye8_TA_tex_txt: + addrs: [0x80B41B60, 0x80B41C60] + npc/tex/squ_3_mouth1_TA_tex_txt: + addrs: [0x80B41C60, 0x80B41D60] + npc/tex/squ_3_mouth2_TA_tex_txt: + addrs: [0x80B41D60, 0x80B41E60] + npc/tex/squ_3_mouth3_TA_tex_txt: + addrs: [0x80B41E60, 0x80B41F60] + npc/tex/squ_3_mouth4_TA_tex_txt: + addrs: [0x80B41F60, 0x80B42060] + npc/tex/squ_3_mouth5_TA_tex_txt: + addrs: [0x80B42060, 0x80B42160] + npc/tex/squ_3_mouth6_TA_tex_txt: + addrs: [0x80B42160, 0x80B42260] + npc/tex/squ_3_tmem_txt: + addrs: [0x80B42260, 0x80B42660] + npc/tex/squ_4_pal: + addrs: [0x80B42660, 0x80B42680] + type: pal16 + npc/tex/squ_4_eye1_TA_tex_txt: + addrs: [0x80B42680, 0x80B42780] + npc/tex/squ_4_eye2_TA_tex_txt: + addrs: [0x80B42780, 0x80B42880] + npc/tex/squ_4_eye3_TA_tex_txt: + addrs: [0x80B42880, 0x80B42980] + npc/tex/squ_4_eye4_TA_tex_txt: + addrs: [0x80B42980, 0x80B42A80] + npc/tex/squ_4_eye5_TA_tex_txt: + addrs: [0x80B42A80, 0x80B42B80] + npc/tex/squ_4_eye6_TA_tex_txt: + addrs: [0x80B42B80, 0x80B42C80] + npc/tex/squ_4_eye7_TA_tex_txt: + addrs: [0x80B42C80, 0x80B42D80] + npc/tex/squ_4_eye8_TA_tex_txt: + addrs: [0x80B42D80, 0x80B42E80] + npc/tex/squ_4_mouth1_TA_tex_txt: + addrs: [0x80B42E80, 0x80B42F80] + npc/tex/squ_4_mouth2_TA_tex_txt: + addrs: [0x80B42F80, 0x80B43080] + npc/tex/squ_4_mouth3_TA_tex_txt: + addrs: [0x80B43080, 0x80B43180] + npc/tex/squ_4_mouth4_TA_tex_txt: + addrs: [0x80B43180, 0x80B43280] + npc/tex/squ_4_mouth5_TA_tex_txt: + addrs: [0x80B43280, 0x80B43380] + npc/tex/squ_4_mouth6_TA_tex_txt: + addrs: [0x80B43380, 0x80B43480] + npc/tex/squ_4_tmem_txt: + addrs: [0x80B43480, 0x80B43880] + npc/tex/squ_5_pal: + addrs: [0x80B43880, 0x80B438A0] + type: pal16 + npc/tex/squ_5_eye1_TA_tex_txt: + addrs: [0x80B438A0, 0x80B439A0] + npc/tex/squ_5_eye2_TA_tex_txt: + addrs: [0x80B439A0, 0x80B43AA0] + npc/tex/squ_5_eye3_TA_tex_txt: + addrs: [0x80B43AA0, 0x80B43BA0] + npc/tex/squ_5_eye4_TA_tex_txt: + addrs: [0x80B43BA0, 0x80B43CA0] + npc/tex/squ_5_eye5_TA_tex_txt: + addrs: [0x80B43CA0, 0x80B43DA0] + npc/tex/squ_5_eye6_TA_tex_txt: + addrs: [0x80B43DA0, 0x80B43EA0] + npc/tex/squ_5_eye7_TA_tex_txt: + addrs: [0x80B43EA0, 0x80B43FA0] + npc/tex/squ_5_eye8_TA_tex_txt: + addrs: [0x80B43FA0, 0x80B440A0] + npc/tex/squ_5_mouth1_TA_tex_txt: + addrs: [0x80B440A0, 0x80B441A0] + npc/tex/squ_5_mouth2_TA_tex_txt: + addrs: [0x80B441A0, 0x80B442A0] + npc/tex/squ_5_mouth3_TA_tex_txt: + addrs: [0x80B442A0, 0x80B443A0] + npc/tex/squ_5_mouth4_TA_tex_txt: + addrs: [0x80B443A0, 0x80B444A0] + npc/tex/squ_5_mouth5_TA_tex_txt: + addrs: [0x80B444A0, 0x80B445A0] + npc/tex/squ_5_mouth6_TA_tex_txt: + addrs: [0x80B445A0, 0x80B446A0] + npc/tex/squ_5_tmem_txt: + addrs: [0x80B446A0, 0x80B44AA0] + npc/tex/squ_6_pal: + addrs: [0x80B44AA0, 0x80B44AC0] + type: pal16 + npc/tex/squ_6_eye1_TA_tex_txt: + addrs: [0x80B44AC0, 0x80B44BC0] + npc/tex/squ_6_eye2_TA_tex_txt: + addrs: [0x80B44BC0, 0x80B44CC0] + npc/tex/squ_6_eye3_TA_tex_txt: + addrs: [0x80B44CC0, 0x80B44DC0] + npc/tex/squ_6_eye4_TA_tex_txt: + addrs: [0x80B44DC0, 0x80B44EC0] + npc/tex/squ_6_eye5_TA_tex_txt: + addrs: [0x80B44EC0, 0x80B44FC0] + npc/tex/squ_6_eye6_TA_tex_txt: + addrs: [0x80B44FC0, 0x80B450C0] + npc/tex/squ_6_eye7_TA_tex_txt: + addrs: [0x80B450C0, 0x80B451C0] + npc/tex/squ_6_eye8_TA_tex_txt: + addrs: [0x80B451C0, 0x80B452C0] + npc/tex/squ_6_mouth1_TA_tex_txt: + addrs: [0x80B452C0, 0x80B453C0] + npc/tex/squ_6_mouth2_TA_tex_txt: + addrs: [0x80B453C0, 0x80B454C0] + npc/tex/squ_6_mouth3_TA_tex_txt: + addrs: [0x80B454C0, 0x80B455C0] + npc/tex/squ_6_mouth4_TA_tex_txt: + addrs: [0x80B455C0, 0x80B456C0] + npc/tex/squ_6_mouth5_TA_tex_txt: + addrs: [0x80B456C0, 0x80B457C0] + npc/tex/squ_6_mouth6_TA_tex_txt: + addrs: [0x80B457C0, 0x80B458C0] + npc/tex/squ_6_tmem_txt: + addrs: [0x80B458C0, 0x80B45CC0] + npc/tex/squ_7_pal: + addrs: [0x80B45CC0, 0x80B45CE0] + type: pal16 + npc/tex/squ_7_eye1_TA_tex_txt: + addrs: [0x80B45CE0, 0x80B45DE0] + npc/tex/squ_7_eye2_TA_tex_txt: + addrs: [0x80B45DE0, 0x80B45EE0] + npc/tex/squ_7_eye3_TA_tex_txt: + addrs: [0x80B45EE0, 0x80B45FE0] + npc/tex/squ_7_eye4_TA_tex_txt: + addrs: [0x80B45FE0, 0x80B460E0] + npc/tex/squ_7_eye5_TA_tex_txt: + addrs: [0x80B460E0, 0x80B461E0] + npc/tex/squ_7_eye6_TA_tex_txt: + addrs: [0x80B461E0, 0x80B462E0] + npc/tex/squ_7_eye7_TA_tex_txt: + addrs: [0x80B462E0, 0x80B463E0] + npc/tex/squ_7_eye8_TA_tex_txt: + addrs: [0x80B463E0, 0x80B464E0] + npc/tex/squ_7_mouth1_TA_tex_txt: + addrs: [0x80B464E0, 0x80B465E0] + npc/tex/squ_7_mouth2_TA_tex_txt: + addrs: [0x80B465E0, 0x80B466E0] + npc/tex/squ_7_mouth3_TA_tex_txt: + addrs: [0x80B466E0, 0x80B467E0] + npc/tex/squ_7_mouth4_TA_tex_txt: + addrs: [0x80B467E0, 0x80B468E0] + npc/tex/squ_7_mouth5_TA_tex_txt: + addrs: [0x80B468E0, 0x80B469E0] + npc/tex/squ_7_mouth6_TA_tex_txt: + addrs: [0x80B469E0, 0x80B46AE0] + npc/tex/squ_7_tmem_txt: + addrs: [0x80B46AE0, 0x80B46EE0] + npc/tex/squ_8_pal: + addrs: [0x80B46EE0, 0x80B46F00] + type: pal16 + npc/tex/squ_8_eye1_TA_tex_txt: + addrs: [0x80B46F00, 0x80B47000] + npc/tex/squ_8_eye2_TA_tex_txt: + addrs: [0x80B47000, 0x80B47100] + npc/tex/squ_8_eye3_TA_tex_txt: + addrs: [0x80B47100, 0x80B47200] + npc/tex/squ_8_eye4_TA_tex_txt: + addrs: [0x80B47200, 0x80B47300] + npc/tex/squ_8_eye5_TA_tex_txt: + addrs: [0x80B47300, 0x80B47400] + npc/tex/squ_8_eye6_TA_tex_txt: + addrs: [0x80B47400, 0x80B47500] + npc/tex/squ_8_eye7_TA_tex_txt: + addrs: [0x80B47500, 0x80B47600] + npc/tex/squ_8_eye8_TA_tex_txt: + addrs: [0x80B47600, 0x80B47700] + npc/tex/squ_8_mouth1_TA_tex_txt: + addrs: [0x80B47700, 0x80B47800] + npc/tex/squ_8_mouth2_TA_tex_txt: + addrs: [0x80B47800, 0x80B47900] + npc/tex/squ_8_mouth3_TA_tex_txt: + addrs: [0x80B47900, 0x80B47A00] + npc/tex/squ_8_mouth4_TA_tex_txt: + addrs: [0x80B47A00, 0x80B47B00] + npc/tex/squ_8_mouth5_TA_tex_txt: + addrs: [0x80B47B00, 0x80B47C00] + npc/tex/squ_8_mouth6_TA_tex_txt: + addrs: [0x80B47C00, 0x80B47D00] + npc/tex/squ_8_tmem_txt: + addrs: [0x80B47D00, 0x80B48100] + npc/tex/squ_9_pal: + addrs: [0x80B48100, 0x80B48120] + type: pal16 + npc/tex/squ_9_eye1_TA_tex_txt: + addrs: [0x80B48120, 0x80B48220] + npc/tex/squ_9_eye2_TA_tex_txt: + addrs: [0x80B48220, 0x80B48320] + npc/tex/squ_9_eye3_TA_tex_txt: + addrs: [0x80B48320, 0x80B48420] + npc/tex/squ_9_eye4_TA_tex_txt: + addrs: [0x80B48420, 0x80B48520] + npc/tex/squ_9_eye5_TA_tex_txt: + addrs: [0x80B48520, 0x80B48620] + npc/tex/squ_9_eye6_TA_tex_txt: + addrs: [0x80B48620, 0x80B48720] + npc/tex/squ_9_eye7_TA_tex_txt: + addrs: [0x80B48720, 0x80B48820] + npc/tex/squ_9_eye8_TA_tex_txt: + addrs: [0x80B48820, 0x80B48920] + npc/tex/squ_9_mouth1_TA_tex_txt: + addrs: [0x80B48920, 0x80B48A20] + npc/tex/squ_9_mouth2_TA_tex_txt: + addrs: [0x80B48A20, 0x80B48B20] + npc/tex/squ_9_mouth3_TA_tex_txt: + addrs: [0x80B48B20, 0x80B48C20] + npc/tex/squ_9_mouth4_TA_tex_txt: + addrs: [0x80B48C20, 0x80B48D20] + npc/tex/squ_9_mouth5_TA_tex_txt: + addrs: [0x80B48D20, 0x80B48E20] + npc/tex/squ_9_mouth6_TA_tex_txt: + addrs: [0x80B48E20, 0x80B48F20] + npc/tex/squ_9_tmem_txt: + addrs: [0x80B48F20, 0x80B49320] + npc/tex/squ_10_pal: + addrs: [0x80B49320, 0x80B49340] + type: pal16 + npc/tex/squ_10_eye1_TA_tex_txt: + addrs: [0x80B49340, 0x80B49440] + npc/tex/squ_10_eye2_TA_tex_txt: + addrs: [0x80B49440, 0x80B49540] + npc/tex/squ_10_eye3_TA_tex_txt: + addrs: [0x80B49540, 0x80B49640] + npc/tex/squ_10_eye4_TA_tex_txt: + addrs: [0x80B49640, 0x80B49740] + npc/tex/squ_10_eye5_TA_tex_txt: + addrs: [0x80B49740, 0x80B49840] + npc/tex/squ_10_eye6_TA_tex_txt: + addrs: [0x80B49840, 0x80B49940] + npc/tex/squ_10_eye7_TA_tex_txt: + addrs: [0x80B49940, 0x80B49A40] + npc/tex/squ_10_eye8_TA_tex_txt: + addrs: [0x80B49A40, 0x80B49B40] + npc/tex/squ_10_mouth1_TA_tex_txt: + addrs: [0x80B49B40, 0x80B49C40] + npc/tex/squ_10_mouth2_TA_tex_txt: + addrs: [0x80B49C40, 0x80B49D40] + npc/tex/squ_10_mouth3_TA_tex_txt: + addrs: [0x80B49D40, 0x80B49E40] + npc/tex/squ_10_mouth4_TA_tex_txt: + addrs: [0x80B49E40, 0x80B49F40] + npc/tex/squ_10_mouth5_TA_tex_txt: + addrs: [0x80B49F40, 0x80B4A040] + npc/tex/squ_10_mouth6_TA_tex_txt: + addrs: [0x80B4A040, 0x80B4A140] + npc/tex/squ_10_tmem_txt: + addrs: [0x80B4A140, 0x80B4A540] + npc/mdl/mnk_1_v: + addrs: [0x80B4A540, 0x80B4BD90] + type: vtx + npc/tex/mnk_1_pal: + addrs: [0x80B4C800, 0x80B4C820] + type: pal16 + npc/tex/mnk_1_eye1_TA_tex_txt: + addrs: [0x80B4C820, 0x80B4C920] + npc/tex/mnk_1_eye2_TA_tex_txt: + addrs: [0x80B4C920, 0x80B4CA20] + npc/tex/mnk_1_eye3_TA_tex_txt: + addrs: [0x80B4CA20, 0x80B4CB20] + npc/tex/mnk_1_eye4_TA_tex_txt: + addrs: [0x80B4CB20, 0x80B4CC20] + npc/tex/mnk_1_eye5_TA_tex_txt: + addrs: [0x80B4CC20, 0x80B4CD20] + npc/tex/mnk_1_eye6_TA_tex_txt: + addrs: [0x80B4CD20, 0x80B4CE20] + npc/tex/mnk_1_eye7_TA_tex_txt: + addrs: [0x80B4CE20, 0x80B4CF20] + npc/tex/mnk_1_eye8_TA_tex_txt: + addrs: [0x80B4CF20, 0x80B4D020] + npc/tex/mnk_1_mouth1_TA_tex_txt: + addrs: [0x80B4D020, 0x80B4D120] + npc/tex/mnk_1_mouth2_TA_tex_txt: + addrs: [0x80B4D120, 0x80B4D220] + npc/tex/mnk_1_mouth3_TA_tex_txt: + addrs: [0x80B4D220, 0x80B4D320] + npc/tex/mnk_1_mouth4_TA_tex_txt: + addrs: [0x80B4D320, 0x80B4D420] + npc/tex/mnk_1_mouth5_TA_tex_txt: + addrs: [0x80B4D420, 0x80B4D520] + npc/tex/mnk_1_mouth6_TA_tex_txt: + addrs: [0x80B4D520, 0x80B4D620] + npc/tex/mnk_1_tmem_txt: + addrs: [0x80B4D620, 0x80B4DC20] + npc/mdl/rcs_1_v: + addrs: [0x80C09AC0, 0x80C0B1C0] + type: vtx + npc/tex/rcs_1_pal: + addrs: [0x80C0BBC0, 0x80C0BBE0] + type: pal16 + npc/tex/rcs_1_eye1_TA_tex_txt: + addrs: [0x80C0BBE0, 0x80C0BCE0] + npc/tex/rcs_1_eye2_TA_tex_txt: + addrs: [0x80C0BCE0, 0x80C0BDE0] + npc/tex/rcs_1_eye3_TA_tex_txt: + addrs: [0x80C0BDE0, 0x80C0BEE0] + npc/tex/rcs_1_eye4_TA_tex_txt: + addrs: [0x80C0BEE0, 0x80C0BFE0] + npc/tex/rcs_1_eye5_TA_tex_txt: + addrs: [0x80C0BFE0, 0x80C0C0E0] + npc/tex/rcs_1_eye6_TA_tex_txt: + addrs: [0x80C0C0E0, 0x80C0C1E0] + npc/tex/rcs_1_eye7_TA_tex_txt: + addrs: [0x80C0C1E0, 0x80C0C2E0] + npc/tex/rcs_1_eye8_TA_tex_txt: + addrs: [0x80C0C2E0, 0x80C0C3E0] + npc/tex/rcs_1_tmem_txt: + addrs: [0x80C0C3E0, 0x80C0C960] + npc/mdl/tig_1_v: + addrs: [0x80C2C9F8, 0x80C2E4B8] + type: vtx + npc/tex/tig_1_pal: + addrs: [0x80C2EEA0, 0x80C2EEC0] + type: pal16 + npc/tex/tig_1_eye1_TA_tex_txt: + addrs: [0x80C2EEC0, 0x80C2EFC0] + npc/tex/tig_1_eye2_TA_tex_txt: + addrs: [0x80C2EFC0, 0x80C2F0C0] + npc/tex/tig_1_eye3_TA_tex_txt: + addrs: [0x80C2F0C0, 0x80C2F1C0] + npc/tex/tig_1_eye4_TA_tex_txt: + addrs: [0x80C2F1C0, 0x80C2F2C0] + npc/tex/tig_1_eye5_TA_tex_txt: + addrs: [0x80C2F2C0, 0x80C2F3C0] + npc/tex/tig_1_eye6_TA_tex_txt: + addrs: [0x80C2F3C0, 0x80C2F4C0] + npc/tex/tig_1_eye7_TA_tex_txt: + addrs: [0x80C2F4C0, 0x80C2F5C0] + npc/tex/tig_1_eye8_TA_tex_txt: + addrs: [0x80C2F5C0, 0x80C2F6C0] + npc/tex/tig_1_tmem_txt: + addrs: [0x80C2F6C0, 0x80C2FC40] + npc/tex/tig_2_pal: + addrs: [0x80C2FC40, 0x80C2FC60] + type: pal16 + npc/tex/tig_2_eye1_TA_tex_txt: + addrs: [0x80C2FC60, 0x80C2FD60] + npc/tex/tig_2_eye2_TA_tex_txt: + addrs: [0x80C2FD60, 0x80C2FE60] + npc/tex/tig_2_eye3_TA_tex_txt: + addrs: [0x80C2FE60, 0x80C2FF60] + npc/tex/tig_2_eye4_TA_tex_txt: + addrs: [0x80C2FF60, 0x80C30060] + npc/tex/tig_2_eye5_TA_tex_txt: + addrs: [0x80C30060, 0x80C30160] + npc/tex/tig_2_eye6_TA_tex_txt: + addrs: [0x80C30160, 0x80C30260] + npc/tex/tig_2_eye7_TA_tex_txt: + addrs: [0x80C30260, 0x80C30360] + npc/tex/tig_2_eye8_TA_tex_txt: + addrs: [0x80C30360, 0x80C30460] + npc/tex/tig_2_tmem_txt: + addrs: [0x80C30460, 0x80C309E0] + npc/tex/tig_3_pal: + addrs: [0x80C309E0, 0x80C30A00] + type: pal16 + npc/tex/tig_3_eye1_TA_tex_txt: + addrs: [0x80C30A00, 0x80C30B00] + npc/tex/tig_3_eye2_TA_tex_txt: + addrs: [0x80C30B00, 0x80C30C00] + npc/tex/tig_3_eye3_TA_tex_txt: + addrs: [0x80C30C00, 0x80C30D00] + npc/tex/tig_3_eye4_TA_tex_txt: + addrs: [0x80C30D00, 0x80C30E00] + npc/tex/tig_3_eye5_TA_tex_txt: + addrs: [0x80C30E00, 0x80C30F00] + npc/tex/tig_3_eye6_TA_tex_txt: + addrs: [0x80C30F00, 0x80C31000] + npc/tex/tig_3_eye7_TA_tex_txt: + addrs: [0x80C31000, 0x80C31100] + npc/tex/tig_3_eye8_TA_tex_txt: + addrs: [0x80C31100, 0x80C31200] + npc/tex/tig_3_tmem_txt: + addrs: [0x80C31200, 0x80C31780] + npc/tex/tig_4_pal: + addrs: [0x80C31780, 0x80C317A0] + type: pal16 + npc/tex/tig_4_eye1_TA_tex_txt: + addrs: [0x80C317A0, 0x80C318A0] + npc/tex/tig_4_eye2_TA_tex_txt: + addrs: [0x80C318A0, 0x80C319A0] + npc/tex/tig_4_eye3_TA_tex_txt: + addrs: [0x80C319A0, 0x80C31AA0] + npc/tex/tig_4_eye4_TA_tex_txt: + addrs: [0x80C31AA0, 0x80C31BA0] + npc/tex/tig_4_eye5_TA_tex_txt: + addrs: [0x80C31BA0, 0x80C31CA0] + npc/tex/tig_4_eye6_TA_tex_txt: + addrs: [0x80C31CA0, 0x80C31DA0] + npc/tex/tig_4_eye7_TA_tex_txt: + addrs: [0x80C31DA0, 0x80C31EA0] + npc/tex/tig_4_eye8_TA_tex_txt: + addrs: [0x80C31EA0, 0x80C31FA0] + npc/tex/tig_4_tmem_txt: + addrs: [0x80C31FA0, 0x80C32520] + npc/mdl/end_1_v: + addrs: [0x80C45A08, 0x80C47658] + type: vtx + npc/tex/end_1_pal: + addrs: [0x80C480C0, 0x80C480E0] + type: pal16 + npc/tex/end_1_eye1_TA_tex_txt: + addrs: [0x80C480E0, 0x80C481E0] + npc/tex/end_1_eye2_TA_tex_txt: + addrs: [0x80C481E0, 0x80C482E0] + npc/tex/end_1_eye3_TA_tex_txt: + addrs: [0x80C482E0, 0x80C483E0] + npc/tex/end_1_eye4_TA_tex_txt: + addrs: [0x80C483E0, 0x80C484E0] + npc/tex/end_1_eye5_TA_tex_txt: + addrs: [0x80C484E0, 0x80C485E0] + npc/tex/end_1_eye6_TA_tex_txt: + addrs: [0x80C485E0, 0x80C486E0] + npc/tex/end_1_eye7_TA_tex_txt: + addrs: [0x80C486E0, 0x80C487E0] + npc/tex/end_1_eye8_TA_tex_txt: + addrs: [0x80C487E0, 0x80C488E0] + npc/tex/end_1_mouth1_TA_tex_txt: + addrs: [0x80C488E0, 0x80C489E0] + npc/tex/end_1_mouth2_TA_tex_txt: + addrs: [0x80C489E0, 0x80C48AE0] + npc/tex/end_1_mouth3_TA_tex_txt: + addrs: [0x80C48AE0, 0x80C48BE0] + npc/tex/end_1_mouth4_TA_tex_txt: + addrs: [0x80C48BE0, 0x80C48CE0] + npc/tex/end_1_mouth5_TA_tex_txt: + addrs: [0x80C48CE0, 0x80C48DE0] + npc/tex/end_1_mouth6_TA_tex_txt: + addrs: [0x80C48DE0, 0x80C48EE0] + npc/tex/end_1_tmem_txt: + addrs: [0x80C48EE0, 0x80C493A0] + npc/mdl/tuk_1_v: + addrs: [0x80C4B710, 0x80C4D460] + type: vtx + npc/tex/tuk_1_pal: + addrs: [0x80C4E080, 0x80C4E0A0] + type: pal16 + npc/tex/tuk_1_eye1_TA_tex_txt: + addrs: [0x80C4E0A0, 0x80C4E1A0] + npc/tex/tuk_1_eye2_TA_tex_txt: + addrs: [0x80C4E1A0, 0x80C4E2A0] + npc/tex/tuk_1_eye3_TA_tex_txt: + addrs: [0x80C4E2A0, 0x80C4E3A0] + npc/tex/tuk_1_eye4_TA_tex_txt: + addrs: [0x80C4E3A0, 0x80C4E4A0] + npc/tex/tuk_1_eye5_TA_tex_txt: + addrs: [0x80C4E4A0, 0x80C4E5A0] + npc/tex/tuk_1_eye6_TA_tex_txt: + addrs: [0x80C4E5A0, 0x80C4E6A0] + npc/tex/tuk_1_eye7_TA_tex_txt: + addrs: [0x80C4E6A0, 0x80C4E7A0] + npc/tex/tuk_1_eye8_TA_tex_txt: + addrs: [0x80C4E7A0, 0x80C4E8A0] + npc/tex/tuk_1_tmem_txt: + addrs: [0x80C4E8A0, 0x80C4EF20] + npc/mdl/wol_1_v: + addrs: [0x80C4F588, 0x80C50CE8] + type: vtx + npc/tex/wol_1_pal: + addrs: [0x80C51660, 0x80C51680] + type: pal16 + npc/tex/wol_1_eye1_TA_tex_txt: + addrs: [0x80C51680, 0x80C51780] + npc/tex/wol_1_eye2_TA_tex_txt: + addrs: [0x80C51780, 0x80C51880] + npc/tex/wol_1_eye3_TA_tex_txt: + addrs: [0x80C51880, 0x80C51980] + npc/tex/wol_1_eye4_TA_tex_txt: + addrs: [0x80C51980, 0x80C51A80] + npc/tex/wol_1_eye5_TA_tex_txt: + addrs: [0x80C51A80, 0x80C51B80] + npc/tex/wol_1_eye6_TA_tex_txt: + addrs: [0x80C51B80, 0x80C51C80] + npc/tex/wol_1_eye7_TA_tex_txt: + addrs: [0x80C51C80, 0x80C51D80] + npc/tex/wol_1_eye8_TA_tex_txt: + addrs: [0x80C51D80, 0x80C51E80] + npc/tex/wol_1_tmem_txt: + addrs: [0x80C51E80, 0x80C52280] + npc/tex/wol_2_pal: + addrs: [0x80C52280, 0x80C522A0] + type: pal16 + npc/tex/wol_2_eye1_TA_tex_txt: + addrs: [0x80C522A0, 0x80C523A0] + npc/tex/wol_2_eye2_TA_tex_txt: + addrs: [0x80C523A0, 0x80C524A0] + npc/tex/wol_2_eye3_TA_tex_txt: + addrs: [0x80C524A0, 0x80C525A0] + npc/tex/wol_2_eye4_TA_tex_txt: + addrs: [0x80C525A0, 0x80C526A0] + npc/tex/wol_2_eye5_TA_tex_txt: + addrs: [0x80C526A0, 0x80C527A0] + npc/tex/wol_2_eye6_TA_tex_txt: + addrs: [0x80C527A0, 0x80C528A0] + npc/tex/wol_2_eye7_TA_tex_txt: + addrs: [0x80C528A0, 0x80C529A0] + npc/tex/wol_2_eye8_TA_tex_txt: + addrs: [0x80C529A0, 0x80C52AA0] + npc/tex/wol_2_tmem_txt: + addrs: [0x80C52AA0, 0x80C52EA0] + npc/tex/wol_3_pal: + addrs: [0x80C52EA0, 0x80C52EC0] + type: pal16 + npc/tex/wol_3_eye1_TA_tex_txt: + addrs: [0x80C52EC0, 0x80C52FC0] + npc/tex/wol_3_eye2_TA_tex_txt: + addrs: [0x80C52FC0, 0x80C530C0] + npc/tex/wol_3_eye3_TA_tex_txt: + addrs: [0x80C530C0, 0x80C531C0] + npc/tex/wol_3_eye4_TA_tex_txt: + addrs: [0x80C531C0, 0x80C532C0] + npc/tex/wol_3_eye5_TA_tex_txt: + addrs: [0x80C532C0, 0x80C533C0] + npc/tex/wol_3_eye6_TA_tex_txt: + addrs: [0x80C533C0, 0x80C534C0] + npc/tex/wol_3_eye7_TA_tex_txt: + addrs: [0x80C534C0, 0x80C535C0] + npc/tex/wol_3_eye8_TA_tex_txt: + addrs: [0x80C535C0, 0x80C536C0] + npc/tex/wol_3_tmem_txt: + addrs: [0x80C536C0, 0x80C53AC0] + npc/tex/wol_4_pal: + addrs: [0x80C53AC0, 0x80C53AE0] + type: pal16 + npc/tex/wol_4_eye1_TA_tex_txt: + addrs: [0x80C53AE0, 0x80C53BE0] + npc/tex/wol_4_eye2_TA_tex_txt: + addrs: [0x80C53BE0, 0x80C53CE0] + npc/tex/wol_4_eye3_TA_tex_txt: + addrs: [0x80C53CE0, 0x80C53DE0] + npc/tex/wol_4_eye4_TA_tex_txt: + addrs: [0x80C53DE0, 0x80C53EE0] + npc/tex/wol_4_eye5_TA_tex_txt: + addrs: [0x80C53EE0, 0x80C53FE0] + npc/tex/wol_4_eye6_TA_tex_txt: + addrs: [0x80C53FE0, 0x80C540E0] + npc/tex/wol_4_eye7_TA_tex_txt: + addrs: [0x80C540E0, 0x80C541E0] + npc/tex/wol_4_eye8_TA_tex_txt: + addrs: [0x80C541E0, 0x80C542E0] + npc/tex/wol_4_tmem_txt: + addrs: [0x80C542E0, 0x80C546E0] + npc/tex/wol_5_pal: + addrs: [0x80C546E0, 0x80C54700] + type: pal16 + npc/tex/wol_5_eye1_TA_tex_txt: + addrs: [0x80C54700, 0x80C54800] + npc/tex/wol_5_eye2_TA_tex_txt: + addrs: [0x80C54800, 0x80C54900] + npc/tex/wol_5_eye3_TA_tex_txt: + addrs: [0x80C54900, 0x80C54A00] + npc/tex/wol_5_eye4_TA_tex_txt: + addrs: [0x80C54A00, 0x80C54B00] + npc/tex/wol_5_eye5_TA_tex_txt: + addrs: [0x80C54B00, 0x80C54C00] + npc/tex/wol_5_eye6_TA_tex_txt: + addrs: [0x80C54C00, 0x80C54D00] + npc/tex/wol_5_eye7_TA_tex_txt: + addrs: [0x80C54D00, 0x80C54E00] + npc/tex/wol_5_eye8_TA_tex_txt: + addrs: [0x80C54E00, 0x80C54F00] + npc/tex/wol_5_tmem_txt: + addrs: [0x80C54F00, 0x80C55300] + npc/tex/wol_6_pal: + addrs: [0x80C55300, 0x80C55320] + type: pal16 + npc/tex/wol_6_eye1_TA_tex_txt: + addrs: [0x80C55320, 0x80C55420] + npc/tex/wol_6_eye2_TA_tex_txt: + addrs: [0x80C55420, 0x80C55520] + npc/tex/wol_6_eye3_TA_tex_txt: + addrs: [0x80C55520, 0x80C55620] + npc/tex/wol_6_eye4_TA_tex_txt: + addrs: [0x80C55620, 0x80C55720] + npc/tex/wol_6_eye5_TA_tex_txt: + addrs: [0x80C55720, 0x80C55820] + npc/tex/wol_6_eye6_TA_tex_txt: + addrs: [0x80C55820, 0x80C55920] + npc/tex/wol_6_eye7_TA_tex_txt: + addrs: [0x80C55920, 0x80C55A20] + npc/tex/wol_6_eye8_TA_tex_txt: + addrs: [0x80C55A20, 0x80C55B20] + npc/tex/wol_6_tmem_txt: + addrs: [0x80C55B20, 0x80C55F20] diff --git a/config/rel_slices.yml b/config/rel_slices.yml index 785d61a6..d7971df2 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -1194,6 +1194,704 @@ f_furniture.c: ac_weather_fine.c: .data: [0x806D1DA0, 0x806D1DB8] +# dataobject.obj NPC draw data TUs +data/npc/model/mdl/bev_1.c: + .data: [0x806E03A0, 0x806E27D0] +data/npc/model/tex/bev_1.c: + .data: [0x806E27E0, 0x806E3500] +data/npc/model/mdl/ant_1.c: + .data: [0x806E3838, 0x806E5910] +data/npc/model/tex/ant_1.c: + .data: [0x806E5920, 0x806E6640] +data/npc/model/tex/ant_2.c: + .data: [0x806E6640, 0x806E7360] +data/npc/model/tex/ant_3.c: + .data: [0x806E7360, 0x806E8080] +data/npc/model/tex/ant_4.c: + .data: [0x806E8080, 0x806E8DA0] +data/npc/model/tex/ant_5.c: + .data: [0x806E8DA0, 0x806E9AC0] +data/npc/model/mdl/wls_1.c: + .data: [0x806E9AC0, 0x806EBFF0] +data/npc/model/tex/wls_1.c: + .data: [0x806EC000, 0x806ECFA0] +data/npc/model/mdl/bea_1.c: + .data: [0x806EF078, 0x806F1030] +data/npc/model/tex/bea_1.c: + .data: [0x806F1040, 0x806F2260] +data/npc/model/tex/bea_2.c: + .data: [0x806F2260, 0x806F3480] +data/npc/model/tex/bea_3.c: + .data: [0x806F3480, 0x806F46A0] +data/npc/model/tex/bea_5.c: + .data: [0x806F46A0, 0x806F58C0] +data/npc/model/tex/bea_6.c: + .data: [0x806F58C0, 0x806F6AE0] +data/npc/model/tex/bea_7.c: + .data: [0x806F6AE0, 0x806F7D00] +data/npc/model/tex/bea_8.c: + .data: [0x806F7D00, 0x806F8F20] +data/npc/model/tex/bea_9.c: + .data: [0x806F8F20, 0x806FA140] +data/npc/model/tex/bea_10.c: + .data: [0x806FA140, 0x806FB360] +data/npc/model/mdl/pbr_1.c: + .data: [0x8076DFA8, 0x80770178] +data/npc/model/tex/pbr_1.c: + .data: [0x80770180, 0x80770EA0] +data/npc/model/tex/pbr_2.c: + .data: [0x80770EA0, 0x80771BC0] +data/npc/model/tex/pbr_3.c: + .data: [0x80771BC0, 0x807728E0] +data/npc/model/tex/pbr_4.c: + .data: [0x807728E0, 0x80773600] +data/npc/model/tex/pbr_5.c: + .data: [0x80773600, 0x80774320] +data/npc/model/mdl/brd_1.c: + .data: [0x80774320, 0x80776358] +data/npc/model/tex/brd_1.c: + .data: [0x80776360, 0x80777080] +data/npc/model/tex/brd_2.c: + .data: [0x80777080, 0x80777DA0] +data/npc/model/tex/brd_11.c: + .data: [0x80777DA0, 0x80778AC0] +data/npc/model/tex/brd_3.c: + .data: [0x80778AC0, 0x807797E0] +data/npc/model/tex/brd_4.c: + .data: [0x807797E0, 0x8077A500] +data/npc/model/tex/brd_5.c: + .data: [0x8077A500, 0x8077B220] +data/npc/model/tex/brd_6.c: + .data: [0x8077B220, 0x8077BF40] +data/npc/model/tex/brd_7.c: + .data: [0x8077BF40, 0x8077CC60] +data/npc/model/tex/brd_8.c: + .data: [0x8077CC60, 0x8077D980] +data/npc/model/tex/brd_9.c: + .data: [0x8077D980, 0x8077E6A0] +data/npc/model/tex/brd_10.c: + .data: [0x8077E6A0, 0x8077F3C0] +data/npc/model/mdl/fox_1.c: + .data: [0x807D5FE8, 0x807D8098] +data/npc/model/tex/fox_1.c: + .data: [0x807D80A0, 0x807D8FC0] +data/npc/model/mdl/bul_1.c: + .data: [0x807D8FC0, 0x807DAFB0] +data/npc/model/tex/bul_1.c: + .data: [0x807DAFC0, 0x807DC1E0] +data/npc/model/tex/bul_2.c: + .data: [0x807DC1E0, 0x807DD400] +data/npc/model/tex/bul_3.c: + .data: [0x807DD400, 0x807DE620] +data/npc/model/tex/bul_4.c: + .data: [0x807DE620, 0x807DF840] +data/npc/model/mdl/cml_1.c: + .data: [0x807DF840, 0x807E1EA8] +data/npc/model/tex/cml_1.c: + .data: [0x807E1EC0, 0x807E2E60] +data/npc/model/mdl/cat_1.c: + .data: [0x807E2E60, 0x807E4BB0] +data/npc/model/tex/cat_1.c: + .data: [0x807E4BC0, 0x807E5DE0] +data/npc/model/tex/cat_2.c: + .data: [0x807E5DE0, 0x807E7000] +data/npc/model/tex/cat_11.c: + .data: [0x807E7000, 0x807E8220] +data/npc/model/tex/cat_12.c: + .data: [0x807E8220, 0x807E9440] +data/npc/model/tex/cat_13.c: + .data: [0x807E9440, 0x807EA660] +data/npc/model/tex/cat_14.c: + .data: [0x807EA660, 0x807EB880] +data/npc/model/tex/cat_15.c: + .data: [0x807EB880, 0x807ECAA0] +data/npc/model/tex/cat_3.c: + .data: [0x807ECAA0, 0x807EDCC0] +data/npc/model/tex/cat_4.c: + .data: [0x807EDCC0, 0x807EEEE0] +data/npc/model/tex/cat_5.c: + .data: [0x807EEEE0, 0x807F0100] +data/npc/model/tex/cat_6.c: + .data: [0x807F0100, 0x807F1320] +data/npc/model/tex/cat_7.c: + .data: [0x807F1320, 0x807F2540] +data/npc/model/tex/cat_8.c: + .data: [0x807F2540, 0x807F3760] +data/npc/model/tex/cat_9.c: + .data: [0x807F3760, 0x807F4980] +data/npc/model/tex/cat_10.c: + .data: [0x807F4980, 0x807F5BA0] +data/npc/model/mdl/chn_1.c: + .data: [0x807F5BA0, 0x807F8348] +data/npc/model/tex/chn_1.c: + .data: [0x807F8360, 0x807F9040] +data/npc/model/tex/chn_2.c: + .data: [0x807F9040, 0x807F9D20] +data/npc/model/tex/chn_3.c: + .data: [0x807F9D20, 0x807FAA00] +data/npc/model/tex/chn_4.c: + .data: [0x807FAA00, 0x807FB6E0] +data/npc/model/tex/chn_5.c: + .data: [0x807FB6E0, 0x807FC3C0] +data/npc/model/tex/chn_6.c: + .data: [0x807FC3C0, 0x807FD0A0] +data/npc/model/tex/chn_7.c: + .data: [0x807FD0A0, 0x807FDD80] +data/npc/model/tex/chn_8.c: + .data: [0x807FDD80, 0x807FEA60] +data/npc/model/tex/chn_9.c: + .data: [0x807FEA60, 0x807FF740] +data/npc/model/mdl/cbr_1.c: + .data: [0x807FF740, 0x80801620] +data/npc/model/tex/cbr_1.c: + .data: [0x80801620, 0x80802840] +data/npc/model/tex/cbr_2.c: + .data: [0x80802840, 0x80803A60] +data/npc/model/tex/cbr_11.c: + .data: [0x80803A60, 0x80804C80] +data/npc/model/tex/cbr_3.c: + .data: [0x80804C80, 0x80805EA0] +data/npc/model/tex/cbr_4.c: + .data: [0x80805EA0, 0x808070C0] +data/npc/model/tex/cbr_5.c: + .data: [0x808070C0, 0x808082E0] +data/npc/model/tex/cbr_6.c: + .data: [0x808082E0, 0x80809500] +data/npc/model/tex/cbr_7.c: + .data: [0x80809500, 0x8080A720] +data/npc/model/tex/cbr_8.c: + .data: [0x8080A720, 0x8080B940] +data/npc/model/tex/cbr_9.c: + .data: [0x8080B940, 0x8080CB60] +data/npc/model/tex/cbr_10.c: + .data: [0x8080CB60, 0x8080DD80] +data/npc/model/mdl/rcc_1.c: + .data: [0x8080E628, 0x80810608] +data/npc/model/tex/rcc_1.c: + .data: [0x80810620, 0x80811500] +data/npc/model/mdl/cow_1.c: + .data: [0x80811500, 0x808134E0] +data/npc/model/tex/cow_1.c: + .data: [0x808134E0, 0x80814700] +data/npc/model/tex/cow_2.c: + .data: [0x80814700, 0x80815920] +data/npc/model/tex/cow_3.c: + .data: [0x80815920, 0x80816B40] +data/npc/model/tex/cow_4.c: + .data: [0x80816B40, 0x80817D60] +data/npc/model/mdl/crd_1.c: + .data: [0x80817D60, 0x80819EE8] +data/npc/model/tex/crd_1.c: + .data: [0x80819F00, 0x8081AC20] +data/npc/model/tex/crd_2.c: + .data: [0x8081AC20, 0x8081B940] +data/npc/model/tex/crd_3.c: + .data: [0x8081B940, 0x8081C660] +data/npc/model/tex/crd_4.c: + .data: [0x8081C660, 0x8081D380] +data/npc/model/mdl/owl_1.c: + .data: [0x8081D380, 0x8081F9A8] +data/npc/model/tex/owl_1.c: + .data: [0x8081F9C0, 0x80820820] +data/npc/model/mdl/rcd_1.c: + .data: [0x80820820, 0x80822720] +data/npc/model/tex/rcd_1.c: + .data: [0x80822720, 0x80823580] +data/npc/model/mdl/grf_1.c: + .data: [0x80823580, 0x80825B28] +data/npc/model/tex/grf_1.c: + .data: [0x80825B40, 0x80826A60] +data/npc/model/mdl/dog_1.c: + .data: [0x80826A60, 0x80828A40] +data/npc/model/tex/dog_1.c: + .data: [0x80828A40, 0x80829C60] +data/npc/model/tex/dog_2.c: + .data: [0x80829C60, 0x8082AE80] +data/npc/model/tex/dog_3.c: + .data: [0x8082AE80, 0x8082C0A0] +data/npc/model/tex/dog_4.c: + .data: [0x8082C0A0, 0x8082D2C0] +data/npc/model/tex/dog_5.c: + .data: [0x8082D2C0, 0x8082E4E0] +data/npc/model/tex/dog_6.c: + .data: [0x8082E4E0, 0x8082F700] +data/npc/model/tex/dog_7.c: + .data: [0x8082F700, 0x80830920] +data/npc/model/tex/dog_8.c: + .data: [0x80830920, 0x80831B40] +data/npc/model/tex/dog_9.c: + .data: [0x80831B40, 0x80832D60] +data/npc/model/tex/dog_10.c: + .data: [0x80832D60, 0x80833F80] +data/npc/model/mdl/seg_1.c: + .data: [0x80833F80, 0x808362E8] +data/npc/model/tex/seg_1.c: + .data: [0x80836300, 0x80837160] +data/npc/model/mdl/duk_1.c: + .data: [0x80837160, 0x80839070] +data/npc/model/tex/duk_1.c: + .data: [0x80839080, 0x8083A2A0] +data/npc/model/tex/duk_2.c: + .data: [0x8083A2A0, 0x8083B4C0] +data/npc/model/tex/duk_11.c: + .data: [0x8083B4C0, 0x8083C6E0] +data/npc/model/tex/duk_3.c: + .data: [0x8083C6E0, 0x8083D900] +data/npc/model/tex/duk_4.c: + .data: [0x8083D900, 0x8083EB20] +data/npc/model/tex/duk_5.c: + .data: [0x8083EB20, 0x8083FD40] +data/npc/model/tex/duk_6.c: + .data: [0x8083FD40, 0x80840F60] +data/npc/model/tex/duk_7.c: + .data: [0x80840F60, 0x80842180] +data/npc/model/tex/duk_8.c: + .data: [0x80842180, 0x808433A0] +data/npc/model/tex/duk_9.c: + .data: [0x808433A0, 0x808445C0] +data/npc/model/tex/duk_10.c: + .data: [0x808445C0, 0x808457E0] +data/npc/model/mdl/elp_1.c: + .data: [0x80845830, 0x808479A0] +data/npc/model/tex/elp_1.c: + .data: [0x808479A0, 0x80848BC0] +data/npc/model/tex/elp_2.c: + .data: [0x80848BC0, 0x80849DE0] +data/npc/model/tex/elp_3.c: + .data: [0x80849DE0, 0x8084B000] +data/npc/model/tex/elp_4.c: + .data: [0x8084B000, 0x8084C220] +data/npc/model/tex/elp_5.c: + .data: [0x8084C220, 0x8084D440] +data/npc/model/tex/elp_6.c: + .data: [0x8084D440, 0x8084E660] +data/npc/model/tex/elp_7.c: + .data: [0x8084E660, 0x8084F880] +data/npc/model/mdl/flg_1.c: + .data: [0x80857D80, 0x808597E0] +data/npc/model/tex/flg_1.c: + .data: [0x808597E0, 0x8085AA00] +data/npc/model/tex/flg_2.c: + .data: [0x8085AA00, 0x8085BC20] +data/npc/model/tex/flg_11.c: + .data: [0x8085BC20, 0x8085CE40] +data/npc/model/tex/flg_12.c: + .data: [0x8085CE40, 0x8085DFE0] +data/npc/model/tex/flg_13.c: + .data: [0x8085DFE0, 0x8085F200] +data/npc/model/tex/flg_3.c: + .data: [0x8085F200, 0x80860420] +data/npc/model/tex/flg_4.c: + .data: [0x80860420, 0x80861640] +data/npc/model/tex/flg_5.c: + .data: [0x80861640, 0x80862860] +data/npc/model/tex/flg_6.c: + .data: [0x80862860, 0x80863A80] +data/npc/model/tex/flg_7.c: + .data: [0x80863A80, 0x80864CA0] +data/npc/model/tex/flg_8.c: + .data: [0x80864CA0, 0x80865EC0] +data/npc/model/tex/flg_9.c: + .data: [0x80865EC0, 0x808670E0] +data/npc/model/tex/flg_10.c: + .data: [0x808670E0, 0x80868300] +data/npc/model/mdl/rcf_1.c: + .data: [0x80868300, 0x8086A9A0] +data/npc/model/tex/rcf_1.c: + .data: [0x8086A9A0, 0x8086B8C0] +data/npc/model/mdl/gst_1.c: + .data: [0x8086CB08, 0x8086E180] +data/npc/model/tex/gst_1.c: + .data: [0x8086E180, 0x8086F120] +data/npc/model/mdl/goa_1.c: + .data: [0x80871730, 0x808736E8] +data/npc/model/tex/goa_1.c: + .data: [0x80873700, 0x80874920] +data/npc/model/tex/goa_2.c: + .data: [0x80874920, 0x80875B40] +data/npc/model/tex/goa_3.c: + .data: [0x80875B40, 0x80876D60] +data/npc/model/tex/goa_4.c: + .data: [0x80876D60, 0x80877F80] +data/npc/model/tex/goa_5.c: + .data: [0x80877F80, 0x808791A0] +data/npc/model/tex/goa_6.c: + .data: [0x808791A0, 0x8087A3C0] +data/npc/model/mdl/gor_1.c: + .data: [0x8087A3C0, 0x8087C948] +data/npc/model/tex/gor_1.c: + .data: [0x8087C960, 0x8087DB80] +data/npc/model/tex/gor_2.c: + .data: [0x8087DB80, 0x8087EDA0] +data/npc/model/tex/gor_3.c: + .data: [0x8087EDA0, 0x8087FFC0] +data/npc/model/tex/gor_4.c: + .data: [0x8087FFC0, 0x808811E0] +data/npc/model/tex/gor_5.c: + .data: [0x808811E0, 0x80882400] +data/npc/model/mdl/xct_1.c: + .data: [0x80882400, 0x80884068] +data/npc/model/tex/xct_1.c: + .data: [0x80884080, 0x80885420] +data/npc/model/mdl/bpt_1.c: + .data: [0x80894928, 0x80896A80] +data/npc/model/tex/bpt_1.c: + .data: [0x80896A80, 0x808979A0] +data/npc/model/mdl/pkn_1.c: + .data: [0x808979A0, 0x808993C8] +data/npc/model/tex/pkn_1.c: + .data: [0x808993E0, 0x80899A80] +data/npc/model/mdl/hem_1.c: + .data: [0x8089BA80, 0x8089D6E0] +data/npc/model/tex/hem_1.c: + .data: [0x8089D6E0, 0x8089DE40] +data/npc/model/mdl/hip_1.c: + .data: [0x8089DE40, 0x808A0558] +data/npc/model/tex/hip_1.c: + .data: [0x808A0560, 0x808A1280] +data/npc/model/tex/hip_2.c: + .data: [0x808A1280, 0x808A1FA0] +data/npc/model/tex/hip_3.c: + .data: [0x808A1FA0, 0x808A2CC0] +data/npc/model/tex/hip_4.c: + .data: [0x808A2CC0, 0x808A39E0] +data/npc/model/tex/hip_5.c: + .data: [0x808A39E0, 0x808A4700] +data/npc/model/tex/hip_6.c: + .data: [0x808A4700, 0x808A5420] +data/npc/model/tex/hip_7.c: + .data: [0x808A5420, 0x808A6140] +data/npc/model/mdl/hrs_1.c: + .data: [0x808A6140, 0x808A8508] +data/npc/model/tex/hrs_1.c: + .data: [0x808A8520, 0x808A92C0] +data/npc/model/tex/hrs_2.c: + .data: [0x808A92C0, 0x808AA060] +data/npc/model/tex/hrs_3.c: + .data: [0x808AA060, 0x808AAE00] +data/npc/model/tex/hrs_4.c: + .data: [0x808AAE00, 0x808ABBA0] +data/npc/model/tex/hrs_5.c: + .data: [0x808ABBA0, 0x808AC940] +data/npc/model/tex/hrs_6.c: + .data: [0x808AC940, 0x808AD6E0] +data/npc/model/tex/hrs_7.c: + .data: [0x808AD6E0, 0x808AE480] +data/npc/model/tex/hrs_8.c: + .data: [0x808AE480, 0x808AF220] +data/npc/model/mdl/plj_1.c: + .data: [0x808B8D00, 0x808BAD00] +data/npc/model/tex/plj_1.c: + .data: [0x808BAD00, 0x808BC1A0] +data/npc/model/mdl/xsq_1.c: + .data: [0x808BC1A0, 0x808BE240] +data/npc/model/tex/xsq_1.c: + .data: [0x808BE240, 0x808BF660] +data/npc/model/mdl/boa_1.c: + .data: [0x808C88A8, 0x808CAF48] +data/npc/model/tex/boa_1.c: + .data: [0x808CAF60, 0x808CBD40] +data/npc/model/mdl/kgr_1.c: + .data: [0x808CBD40, 0x808CE3C8] +data/npc/model/tex/kgr_1.c: + .data: [0x808CE3E0, 0x808CF040] +data/npc/model/tex/kgr_2.c: + .data: [0x808CF040, 0x808CFCA0] +data/npc/model/tex/kgr_3.c: + .data: [0x808CFCA0, 0x808D0900] +data/npc/model/tex/kgr_4.c: + .data: [0x808D0900, 0x808D1560] +data/npc/model/tex/kgr_5.c: + .data: [0x808D1560, 0x808D21C0] +data/npc/model/tex/kgr_6.c: + .data: [0x808D21C0, 0x808D2E20] +data/npc/model/mdl/fob_1.c: + .data: [0x808D2E20, 0x808D5360] +data/npc/model/tex/fob_1.c: + .data: [0x808D5360, 0x808D62C0] +data/npc/model/mdl/kal_1.c: + .data: [0x808D62C0, 0x808D81D8] +data/npc/model/tex/kal_1.c: + .data: [0x808D81E0, 0x808D9480] +data/npc/model/tex/kal_2.c: + .data: [0x808D9480, 0x808DA720] +data/npc/model/tex/kal_3.c: + .data: [0x808DA720, 0x808DB9C0] +data/npc/model/tex/kal_4.c: + .data: [0x808DB9C0, 0x808DCC60] +data/npc/model/tex/kal_5.c: + .data: [0x808DCC60, 0x808DDF00] +data/npc/model/tex/kal_6.c: + .data: [0x808DDF00, 0x808DF1A0] +data/npc/model/mdl/lon_1.c: + .data: [0x808E1A10, 0x808E3F78] +data/npc/model/tex/lon_1.c: + .data: [0x808E3F80, 0x808E5260] +data/npc/model/tex/lon_2.c: + .data: [0x808E5260, 0x808E6540] +data/npc/model/tex/lon_3.c: + .data: [0x808E6540, 0x808E7820] +data/npc/model/tex/lon_4.c: + .data: [0x808E7820, 0x808E8B00] +data/npc/model/mdl/mos_1.c: + .data: [0x808EAEA0, 0x808ECAC8] +data/npc/model/tex/mos_1.c: + .data: [0x808ECAE0, 0x808EDF80] +data/npc/model/mdl/mol_1.c: + .data: [0x808EDF80, 0x808EFBA8] +data/npc/model/tex/mol_1.c: + .data: [0x808EFBC0, 0x808F1060] +data/npc/model/mdl/lrc_1.c: + .data: [0x808F1060, 0x808F2F50] +data/npc/model/tex/lrc_1.c: + .data: [0x808F2F60, 0x808F3E00] +data/npc/model/mdl/mka_1.c: + .data: [0x808F3E00, 0x808F5BA8] +data/npc/model/tex/mka_1.c: + .data: [0x808F5BC0, 0x808F6060] +data/npc/model/mdl/mus_1.c: + .data: [0x808F6EA8, 0x808F90B0] +data/npc/model/tex/mus_1.c: + .data: [0x808F90C0, 0x808FA2E0] +data/npc/model/tex/mus_2.c: + .data: [0x808FA2E0, 0x808FB500] +data/npc/model/tex/mus_3.c: + .data: [0x808FB500, 0x808FC720] +data/npc/model/tex/mus_4.c: + .data: [0x808FC720, 0x808FD940] +data/npc/model/tex/mus_5.c: + .data: [0x808FD940, 0x808FEB60] +data/npc/model/tex/mus_6.c: + .data: [0x808FEB60, 0x808FFD80] +data/npc/model/tex/mus_7.c: + .data: [0x808FFD80, 0x80900FA0] +data/npc/model/tex/mus_8.c: + .data: [0x80900FA0, 0x809021C0] +data/npc/model/tex/mus_9.c: + .data: [0x809021C0, 0x809033E0] +data/npc/model/tex/mus_10.c: + .data: [0x809033E0, 0x80904600] +data/npc/model/mdl/hgh_1.c: + .data: [0x80911E70, 0x80914610] +data/npc/model/tex/hgh_1.c: + .data: [0x80914620, 0x80915500] +data/npc/model/mdl/hgs_1.c: + .data: [0x80915500, 0x80917C80] +data/npc/model/tex/hgs_1.c: + .data: [0x80917C80, 0x80918B60] +data/npc/model/mdl/oct_1.c: + .data: [0x80977CB0, 0x8097A460] +data/npc/model/tex/oct_1.c: + .data: [0x8097A460, 0x8097AE80] +data/npc/model/mdl/ost_1.c: + .data: [0x8097AE80, 0x8097D100] +data/npc/model/tex/ost_1.c: + .data: [0x8097D100, 0x8097DE60] +data/npc/model/tex/ost_2.c: + .data: [0x8097DE60, 0x8097EBC0] +data/npc/model/tex/ost_3.c: + .data: [0x8097EBC0, 0x8097F920] +data/npc/model/tex/ost_4.c: + .data: [0x8097F920, 0x80980680] +data/npc/model/mdl/pgn_1.c: + .data: [0x80980F28, 0x80983140] +data/npc/model/tex/pgn_1.c: + .data: [0x80983140, 0x80983EE0] +data/npc/model/tex/pgn_2.c: + .data: [0x80983EE0, 0x80984C80] +data/npc/model/tex/pgn_3.c: + .data: [0x80984C80, 0x80985A20] +data/npc/model/tex/pgn_4.c: + .data: [0x80985A20, 0x809867C0] +data/npc/model/tex/pgn_5.c: + .data: [0x809867C0, 0x80987560] +data/npc/model/tex/pgn_6.c: + .data: [0x80987560, 0x80988300] +data/npc/model/tex/pgn_7.c: + .data: [0x80988300, 0x809890A0] +data/npc/model/tex/pgn_8.c: + .data: [0x809890A0, 0x80989E40] +data/npc/model/mdl/pig_1.c: + .data: [0x80989E40, 0x8098BAC0] +data/npc/model/tex/pig_1.c: + .data: [0x8098BAC0, 0x8098CC60] +data/npc/model/tex/pig_2.c: + .data: [0x8098CC60, 0x8098DE00] +data/npc/model/tex/pig_11.c: + .data: [0x8098DE00, 0x8098EFA0] +data/npc/model/tex/pig_3.c: + .data: [0x8098EFA0, 0x80990140] +data/npc/model/tex/pig_4.c: + .data: [0x80990140, 0x809912E0] +data/npc/model/tex/pig_5.c: + .data: [0x809912E0, 0x80992480] +data/npc/model/tex/pig_6.c: + .data: [0x80992480, 0x80993620] +data/npc/model/tex/pig_7.c: + .data: [0x80993620, 0x809947C0] +data/npc/model/tex/pig_8.c: + .data: [0x809947C0, 0x80995960] +data/npc/model/tex/pig_9.c: + .data: [0x80995960, 0x80996B00] +data/npc/model/tex/pig_10.c: + .data: [0x80996B00, 0x80997CA0] +data/npc/model/mdl/pla_1.c: + .data: [0x80997CA0, 0x8099A318] +data/npc/model/mdl/plc_1.c: + .data: [0x8099A318, 0x8099C410] +data/npc/model/tex/plc_1.c: + .data: [0x8099C420, 0x8099D900] +data/npc/model/tex/pla_1.c: + .data: [0x8099D900, 0x8099ECA0] +data/npc/model/mdl/pga_1.c: + .data: [0x8099ECA0, 0x809A11A0] +data/npc/model/tex/pga_1.c: + .data: [0x809A11A0, 0x809A2000] +data/npc/model/mdl/pgb_1.c: + .data: [0x809A2000, 0x809A4450] +data/npc/model/tex/pgb_1.c: + .data: [0x809A4460, 0x809A5400] +data/npc/model/mdl/plb_1.c: + .data: [0x809A5400, 0x809A7980] +data/npc/model/tex/plb_1.c: + .data: [0x809A7980, 0x809A8920] +data/npc/model/mdl/rbt_1.c: + .data: [0x809A8920, 0x809AA7B8] +data/npc/model/tex/rbt_1.c: + .data: [0x809AA7C0, 0x809AB9E0] +data/npc/model/tex/rbt_2.c: + .data: [0x809AB9E0, 0x809ACC00] +data/npc/model/tex/rbt_11.c: + .data: [0x809ACC00, 0x809ADE20] +data/npc/model/tex/rbt_3.c: + .data: [0x809ADE20, 0x809AF040] +data/npc/model/tex/rbt_4.c: + .data: [0x809AF040, 0x809B0260] +data/npc/model/tex/rbt_5.c: + .data: [0x809B0260, 0x809B1480] +data/npc/model/tex/rbt_6.c: + .data: [0x809B1480, 0x809B26A0] +data/npc/model/tex/rbt_7.c: + .data: [0x809B26A0, 0x809B38C0] +data/npc/model/tex/rbt_8.c: + .data: [0x809B38C0, 0x809B4AE0] +data/npc/model/tex/rbt_9.c: + .data: [0x809B4AE0, 0x809B5D00] +data/npc/model/tex/rbt_10.c: + .data: [0x809B5D00, 0x809B6F20] +data/npc/model/mdl/mob_1.c: + .data: [0x809B6F20, 0x809B8AA0] +data/npc/model/tex/mob_1.c: + .data: [0x809B8AA0, 0x809B9F40] +data/npc/model/mdl/rhn_1.c: + .data: [0x809BA340, 0x809BCAF0] +data/npc/model/tex/rhn_1.c: + .data: [0x809BCB00, 0x809BDD20] +data/npc/model/tex/rhn_2.c: + .data: [0x809BDD20, 0x809BEF40] +data/npc/model/tex/rhn_3.c: + .data: [0x809BEF40, 0x809C0160] +data/npc/model/tex/rhn_4.c: + .data: [0x809C0160, 0x809C1380] +data/npc/model/mdl/snt_1.c: + .data: [0x809C9148, 0x809CAD30] +data/npc/model/tex/snt_1.c: + .data: [0x809CAD40, 0x809CC1E0] +data/npc/model/mdl/wip_1.c: + .data: [0x809CC1E0, 0x809CE170] +data/npc/model/tex/wip_1.c: + .data: [0x809CE180, 0x809CF560] +data/npc/model/mdl/shp_1.c: + .data: [0x809CF560, 0x809D11A0] +data/npc/model/tex/shp_1.c: + .data: [0x809D11A0, 0x809D23C0] +data/npc/model/tex/shp_2.c: + .data: [0x809D23C0, 0x809D35E0] +data/npc/model/tex/shp_3.c: + .data: [0x809D35E0, 0x809D4800] +data/npc/model/tex/shp_4.c: + .data: [0x809D4800, 0x809D5A20] +data/npc/model/tex/shp_5.c: + .data: [0x809D5A20, 0x809D6C40] +data/npc/model/tex/shp_6.c: + .data: [0x809D6C40, 0x809D7E60] +data/npc/model/mdl/rcn_1.c: + .data: [0x809D7E60, 0x809D9E80] +data/npc/model/tex/rcn_1.c: + .data: [0x809D9E80, 0x809DACE0] +data/npc/model/mdl/kab_1.c: + .data: [0x80A001B0, 0x80A02398] +data/npc/model/tex/kab_1.c: + .data: [0x80A023A0, 0x80A02FC0] +data/npc/model/mdl/ttl_1.c: + .data: [0x80B38FC0, 0x80B3ADD8] +data/npc/model/tex/ttl_1.c: + .data: [0x80B3ADE0, 0x80B3BD40] +data/npc/model/mdl/squ_1.c: + .data: [0x80B3BD40, 0x80B3DDE0] +data/npc/model/tex/squ_1.c: + .data: [0x80B3DDE0, 0x80B3F000] +data/npc/model/tex/squ_2.c: + .data: [0x80B3F000, 0x80B40220] +data/npc/model/tex/squ_11.c: + .data: [0x80B40220, 0x80B41440] +data/npc/model/tex/squ_3.c: + .data: [0x80B41440, 0x80B42660] +data/npc/model/tex/squ_4.c: + .data: [0x80B42660, 0x80B43880] +data/npc/model/tex/squ_5.c: + .data: [0x80B43880, 0x80B44AA0] +data/npc/model/tex/squ_6.c: + .data: [0x80B44AA0, 0x80B45CC0] +data/npc/model/tex/squ_7.c: + .data: [0x80B45CC0, 0x80B46EE0] +data/npc/model/tex/squ_8.c: + .data: [0x80B46EE0, 0x80B48100] +data/npc/model/tex/squ_9.c: + .data: [0x80B48100, 0x80B49320] +data/npc/model/tex/squ_10.c: + .data: [0x80B49320, 0x80B4A540] +data/npc/model/mdl/mnk_1.c: + .data: [0x80B4A540, 0x80B4C7F8] +data/npc/model/tex/mnk_1.c: + .data: [0x80B4C800, 0x80B4DC20] +data/npc/model/mdl/rcs_1.c: + .data: [0x80C09AC0, 0x80C0BBA8] +data/npc/model/tex/rcs_1.c: + .data: [0x80C0BBC0, 0x80C0C960] +data/npc/model/mdl/tig_1.c: + .data: [0x80C2C9F8, 0x80C2EE88] +data/npc/model/tex/tig_1.c: + .data: [0x80C2EEA0, 0x80C2FC40] +data/npc/model/tex/tig_2.c: + .data: [0x80C2FC40, 0x80C309E0] +data/npc/model/tex/tig_3.c: + .data: [0x80C309E0, 0x80C31780] +data/npc/model/tex/tig_4.c: + .data: [0x80C31780, 0x80C32520] +data/npc/model/mdl/end_1.c: + .data: [0x80C45A08, 0x80C480A8] +data/npc/model/tex/end_1.c: + .data: [0x80C480C0, 0x80C493A0] +data/npc/model/mdl/tuk_1.c: + .data: [0x80C4B710, 0x80C4E080] +data/npc/model/tex/tuk_1.c: + .data: [0x80C4E080, 0x80C4EF20] +data/npc/model/mdl/wol_1.c: + .data: [0x80C4F588, 0x80C51650] +data/npc/model/tex/wol_1.c: + .data: [0x80C51660, 0x80C52280] +data/npc/model/tex/wol_2.c: + .data: [0x80C52280, 0x80C52EA0] +data/npc/model/tex/wol_3.c: + .data: [0x80C52EA0, 0x80C53AC0] +data/npc/model/tex/wol_4.c: + .data: [0x80C53AC0, 0x80C546E0] +data/npc/model/tex/wol_5.c: + .data: [0x80C546E0, 0x80C55300] +data/npc/model/tex/wol_6.c: + .data: [0x80C55300, 0x80C55F20] + # dataobject.obj files data/field/bg/flower/obj_flower.c: diff --git a/include/ac_npc.h b/include/ac_npc.h index 14f9b8ed..710264a2 100644 --- a/include/ac_npc.h +++ b/include/ac_npc.h @@ -27,10 +27,38 @@ extern "C" { typedef struct ac_npc_clip_s aNPC_Clip_c; +#define aNPC_EYE_TEX_NUM 8 +#define aNPC_MOUTH_TEX_NUM 6 + +/* sizeof(aNPC_draw_tex_data_c) == 0x4C */ +typedef struct ac_npc_draw_data_tex_s { + /* 0x00 */ u8* texture; // main animal texture + /* 0x04 */ u16* palette; // palette for animal + /* 0x08 */ u8* eye_texture[aNPC_EYE_TEX_NUM]; + /* 0x28 */ u8* mouth_texture[aNPC_MOUTH_TEX_NUM]; + /* 0x40 */ int _40; + /* 0x44 */ int _44; + /* 0x48 */ int _48; +} aNPC_draw_tex_data_c; + +/* sizeof(aNPC_draw_data_c) == 0x6C */ typedef struct npc_draw_data_s { - s16 model_bank; - s16 texture_bank; - u8 _04[0x68]; // TODO + /* 0x00 */ s16 model_bank; + /* 0x02 */ s16 texture_bank; + /* 0x04 */ cKF_Skeleton_R_c* model_skeleton; + /* 0x08 */ aNPC_draw_tex_data_c tex_data; + /* 0x54 */ f32 scale; + /* 0x58 */ int talk_type; + /* 0x5C */ u8 species_sub_idx; // index into the current species type + /* 0x5D */ u8 umbrella_type; // default umbrella type -- only used for special NPCs + /* 0x5E */ u8 eye_height; // height of "eye" from the ground + /* 0x5F */ u8 _5F; + /* 0x60 */ u16 _60; + /* 0x62 */ u16 voice_type; // voice/melody type + /* 0x64 */ s16 col_radius; // collision pipe radius + /* 0x66 */ s16 col_height; // collision pipe height + /* 0x68 */ s16 accessory_type; // type of accessory + /* 0x6A */ s16 accessory_joint; // joint the accessory is attached to } aNPC_draw_data_c; enum { diff --git a/src/data/npc/model/mdl/ant_1.c b/src/data/npc/model/mdl/ant_1.c new file mode 100644 index 00000000..7134431f --- /dev/null +++ b/src/data/npc/model/mdl/ant_1.c @@ -0,0 +1,704 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx ant_1_v[] = { +#include "assets/npc/mdl/ant_1_v.inc" +}; + +static Gfx head_ant_model[] = { +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&ant_1_v[21], 8, 0), +gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 48, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&ant_1_v[29], 22, 8), +gsSPNTrianglesInit_5b( + 9, // tri count + 4, 6, 8, // tri0 + 4, 10, 9, // tri1 + 1, 12, 11 // tri2 +), +gsSPNTriangles_5b( + 1, 14, 13, // tri0 + 4, 16, 15, // tri1 + 7, 4, 17, // tri2 + 1, 7, 18 // tri3 +), +gsSPNTriangles_5b( + 7, 19, 20, // tri0 + 3, 1, 21, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 5, // tri count + 0, 2, 22, // tri0 + 5, 0, 23, // tri1 + 0, 24, 25 // tri2 +), +gsSPNTriangles_5b( + 2, 26, 27, // tri0 + 5, 28, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&ant_1_v[51], 27, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 0, 5 // tri2 +), +gsSPNTriangles_5b( + 5, 6, 4, // tri0 + 5, 7, 6, // tri1 + 2, 8, 0, // tri2 + 0, 8, 5 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 19, // tri count + 9, 10, 11, // tri0 + 9, 12, 13, // tri1 + 14, 15, 9 // tri2 +), +gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 19, 20, 11, // tri1 + 21, 22, 23, // tri2 + 12, 9, 15 // tri3 +), +gsSPNTriangles_5b( + 24, 14, 25, // tri0 + 26, 24, 25, // tri1 + 9, 13, 21, // tri2 + 17, 16, 21 // tri3 +), +gsSPNTriangles_5b( + 25, 14, 9, // tri0 + 16, 10, 9, // tri1 + 21, 13, 22, // tri2 + 25, 11, 20 // tri3 +), +gsSPNTriangles_5b( + 9, 11, 25, // tri0 + 21, 16, 9, // tri1 + 25, 20, 26, // tri2 + 23, 17, 21 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 48, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&ant_1_v[78], 28, 0), +gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 0, 4 // tri2 +), +gsSPNTriangles_5b( + 5, 3, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 6, 7, 8, // tri0 + 8, 9, 6, // tri1 + 10, 11, 12 // tri2 +), +gsSPNTriangles_5b( + 12, 13, 10, // tri0 + 11, 10, 6, // tri1 + 11, 6, 9, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 8, // tri count + 14, 15, 16, // tri0 + 17, 16, 15, // tri1 + 18, 19, 20 // tri2 +), +gsSPNTriangles_5b( + 21, 22, 23, // tri0 + 15, 14, 18, // tri1 + 18, 20, 21, // tri2 + 22, 21, 20 // tri3 +), +gsSPNTriangles_5b( + 14, 19, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 2, // tri count + 24, 25, 26, // tri0 + 24, 27, 25, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&ant_1_v[106], 9, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 4, 5, 3 // tri2 +), +gsSPNTriangles_5b( + 5, 6, 3, // tri0 + 0, 7, 1, // tri1 + 3, 8, 2, // tri2 + 2, 8, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx mouth_ant_model[] = { +gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&ant_1_v[0], 7, 0), +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&ant_1_v[7], 14, 7), +gsSPNTrianglesInit_5b( + 5, // tri count + 3, 2, 7, // tri0 + 0, 5, 8, // tri1 + 1, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 11, // tri0 + 2, 1, 12, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 3, // tri count + 6, 13, 14, // tri0 + 4, 15, 16, // tri1 + 4, 17, 6 // tri2 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 18, 19, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_ant_model[] = { +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&ant_1_v[151], 5, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&ant_1_v[156], 16, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 0, 1, 11, // tri0 + 2, 4, 12, // tri1 + 0, 13, 14, // tri2 + 3, 0, 15 // tri3 +), +gsSPNTriangles_5b( + 4, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 20, 19, 18, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_ant_model[] = { +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&ant_1_v[172], 4, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&ant_1_v[176], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 2, 0, 8 // tri2 +), +gsSPNTriangles_5b( + 3, 2, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 1, 3, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_ant_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&ant_1_v[115], 5, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&ant_1_v[120], 16, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 +), +gsSPNTriangles_5b( + 3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_ant_model[] = { +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&ant_1_v[136], 4, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&ant_1_v[140], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_ant_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&ant_1_v[187], 7, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&ant_1_v[194], 22, 7), +gsSPNTrianglesInit_5b( + 14, // tri count + 6, 7, 8, // tri0 + 4, 9, 1, // tri1 + 5, 0, 10 // tri2 +), +gsSPNTriangles_5b( + 2, 6, 11, // tri0 + 6, 3, 12, // tri1 + 1, 13, 14, // tri2 + 0, 15, 16 // tri3 +), +gsSPNTriangles_5b( + 0, 17, 18, // tri0 + 1, 20, 19, // tri1 + 2, 21, 22, // tri2 + 2, 23, 0 // tri3 +), +gsSPNTriangles_5b( + 3, 24, 25, // tri0 + 6, 26, 27, // tri1 + 3, 1, 28, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&ant_1_v[216], 13, 0), +gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 5, 6, 4 // tri2 +), +gsSPNTriangles_5b( + 0, 7, 8, // tri0 + 9, 8, 7, // tri1 + 6, 5, 10, // tri2 + 10, 5, 11 // tri3 +), +gsSPNTriangles_5b( + 4, 3, 5, // tri0 + 9, 12, 8, // tri1 + 8, 1, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail1_ant_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&ant_1_v[229], 30, 0), +gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 2, 4, 0 // tri2 +), +gsSPNTriangles_5b( + 3, 5, 6, // tri0 + 7, 8, 4, // tri1 + 2, 9, 7, // tri2 + 10, 7, 9 // tri3 +), +gsSPNTriangles_5b( + 10, 8, 7, // tri0 + 6, 11, 9, // tri1 + 1, 5, 3, // tri2 + 3, 9, 2 // tri3 +), +gsSPNTriangles_5b( + 7, 4, 2, // tri0 + 11, 6, 12, // tri1 + 9, 3, 6, // tri2 + 9, 11, 10 // tri3 +), +gsSPNTriangles_5b( + 12, 10, 11, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 2, // tri count + 13, 14, 15, // tri0 + 15, 16, 13, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 16, // tri count + 17, 18, 19, // tri0 + 19, 18, 20, // tri1 + 19, 21, 17 // tri2 +), +gsSPNTriangles_5b( + 20, 22, 23, // tri0 + 24, 25, 21, // tri1 + 19, 26, 24, // tri2 + 27, 24, 26 // tri3 +), +gsSPNTriangles_5b( + 27, 25, 24, // tri0 + 23, 28, 26, // tri1 + 18, 22, 20, // tri2 + 20, 26, 19 // tri3 +), +gsSPNTriangles_5b( + 24, 21, 19, // tri0 + 28, 23, 29, // tri1 + 26, 20, 23, // tri2 + 26, 28, 27 // tri3 +), +gsSPNTriangles_5b( + 29, 27, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_ant_model[] = { +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&ant_1_v[308], 5, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&ant_1_v[313], 18, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 0, 5, // tri0 + 0, 7, 6, // tri1 + 2, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 0, 1, 10, // tri0 + 1, 2, 11, // tri1 + 2, 4, 12, // tri2 + 1, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 21, 17, 22 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_ant_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&ant_1_v[331], 4, 0), +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&ant_1_v[335], 22, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 2, 4, // tri0 + 1, 5, 6, // tri1 + 2, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 1, 9, // tri0 + 0, 11, 10, // tri1 + 0, 3, 12, // tri2 + 0, 13, 1 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 14, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 17, 18, 19, // tri0 + 20, 21, 22, // tri1 + 18, 23, 19 // tri2 +), +gsSPNTriangles_5b( + 24, 22, 21, // tri0 + 24, 21, 17, // tri1 + 17, 19, 24, // tri2 + 22, 25, 20 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_ant_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&ant_1_v[259], 5, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&ant_1_v[264], 18, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 3, 5, // tri0 + 0, 7, 6, // tri1 + 2, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 10, // tri0 + 2, 1, 11, // tri1 + 4, 2, 12, // tri2 + 1, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 21, 15, 22 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_ant_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&ant_1_v[282], 4, 0), +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&ant_1_v[286], 22, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 2, 3, 4, // tri0 + 1, 5, 6, // tri1 + 2, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 1, 2, 9, // tri0 + 0, 11, 10, // tri1 + 3, 0, 12, // tri2 + 1, 13, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 14, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 17, 18, 19, // tri0 + 20, 21, 22, // tri1 + 17, 23, 18 // tri2 +), +gsSPNTriangles_5b( + 21, 20, 24, // tri0 + 19, 21, 24, // tri1 + 24, 17, 19, // tri2 + 22, 25, 20 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx base_ant_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&ant_1_v[357], 14, 0), +gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 2, 1 // tri2 +), +gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 2, 7, // tri1 + 10, 0, 2, // tri2 + 4, 11, 12 // tri3 +), +gsSPNTriangles_5b( + 5, 4, 13, // tri0 + 4, 12, 13, // tri1 + 3, 5, 9, // tri2 + 9, 8, 3 // tri3 +), +gsSPNTriangles_5b( + 9, 10, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_ant_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_ant_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-550,0 }, + /* joint 3 */ { Lfoot1_ant_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_ant_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,550,0 }, + /* joint 7 */ { Rfoot1_ant_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_ant_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,-900 }, + /* joint 11 */ { tail1_ant_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_ant_model, 3, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 750,-850,0 }, + /* joint 15 */ { Larm1_ant_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_ant_model, 0, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 750,850,0 }, + /* joint 18 */ { Rarm1_ant_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_ant_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 1099,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 1000,0,1800 }, + /* joint 23 */ { mouth_ant_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_ant_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1100,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_ant_1 = { 26, 13, cKF_je_r_ant_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/bea_1.c b/src/data/npc/model/mdl/bea_1.c new file mode 100644 index 00000000..b9665e68 --- /dev/null +++ b/src/data/npc/model/mdl/bea_1.c @@ -0,0 +1,665 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx bea_1_v[] = { +#include "assets/npc/mdl/bea_1_v.inc" +}; + +static Gfx head_bea_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&bea_1_v[0], 24, 0), +gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 0, 5 // tri2 +), +gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 6, 8, 3, // tri1 + 9, 5, 10, // tri2 + 3, 8, 2 // tri3 +), +gsSPNTriangles_5b( + 10, 5, 11, // tri0 + 5, 0, 2, // tri1 + 8, 7, 12, // tri2 + 10, 11, 13 // tri3 +), +gsSPNTriangles_5b( + 2, 11, 5, // tri0 + 8, 11, 2, // tri1 + 12, 11, 8, // tri2 + 13, 11, 12 // tri3 +), +gsSPNTriangles_5b( + 14, 15, 6, // tri0 + 14, 6, 3, // tri1 + 14, 3, 16, // tri2 + 6, 15, 7 // tri3 +), +gsSPNTriangles_5b( + 16, 3, 1, // tri0 + 16, 1, 17, // tri1 + 17, 1, 18, // tri2 + 0, 19, 18 // tri3 +), +gsSPNTriangles_5b( + 16, 17, 20, // tri0 + 13, 12, 21, // tri1 + 22, 15, 14, // tri2 + 15, 23, 7 // tri3 +), +gsSPNTriangles_5b( + 18, 1, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&bea_1_v[24], 15, 0), +gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 3, 2, 4 // tri2 +), +gsSPNTriangles_5b( + 2, 1, 5, // tri0 + 2, 6, 7, // tri1 + 7, 8, 2, // tri2 + 5, 6, 2 // tri3 +), +gsSPNTriangles_5b( + 8, 7, 9, // tri0 + 8, 10, 11, // tri1 + 12, 5, 1, // tri2 + 13, 14, 1 // tri3 +), +gsSPNTriangles_5b( + 8, 11, 4, // tri0 + 0, 13, 1, // tri1 + 2, 8, 4, // tri2 + 9, 10, 8 // tri3 +), +gsSPNTriangles_5b( + 1, 14, 12, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&bea_1_v[39], 18, 0), +gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 4, 6 // tri2 +), +gsSPNTriangles_5b( + 1, 3, 7, // tri0 + 8, 6, 9, // tri1 + 8, 9, 10, // tri2 + 7, 8, 10 // tri3 +), +gsSPNTriangles_5b( + 1, 0, 3, // tri0 + 8, 7, 5, // tri1 + 8, 5, 6, // tri2 + 3, 5, 7 // tri3 +), +gsSPNTriangles_5b( + 3, 0, 4, // tri0 + 11, 4, 0, // tri1 + 9, 6, 11, // tri2 + 12, 11, 0 // tri3 +), +gsSPNTriangles_5b( + 11, 13, 9, // tri0 + 6, 4, 14, // tri1 + 12, 0, 15, // tri2 + 9, 16, 17 // tri3 +), +gsSPNTriangles_5b( + 17, 10, 9, // tri0 + 2, 15, 0, // tri1 + 9, 13, 16, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&bea_1_v[57], 26, 0), +gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 0, 5 // tri2 +), +gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 9, 8, 10, // tri1 + 11, 12, 13, // tri2 + 10, 13, 9 // tri3 +), +gsSPNTriangles_5b( + 11, 13, 10, // tri0 + 14, 15, 16, // tri1 + 17, 18, 19, // tri2 + 7, 10, 8 // tri3 +), +gsSPNTriangles_5b( + 7, 11, 10, // tri0 + 16, 20, 21, // tri1 + 16, 21, 14, // tri2 + 19, 22, 23 // tri3 +), +gsSPNTriangles_5b( + 19, 23, 17, // tri0 + 24, 3, 1, // tri1 + 2, 3, 25, // tri2 + 25, 5, 2 // tri3 +), +gsSPNTriangles_5b( + 5, 0, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_bea_model[] = { +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&bea_1_v[120], 6, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&bea_1_v[126], 13, 6), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 6, 7, // tri0 + 4, 5, 8, // tri1 + 1, 4, 9 // tri2 +), +gsSPNTriangles_5b( + 5, 10, 11, // tri0 + 3, 2, 12, // tri1 + 4, 13, 14, // tri2 + 5, 3, 15 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 16, 17, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_bea_model[] = { +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&bea_1_v[139], 6, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&bea_1_v[145], 12, 6), +gsSPNTrianglesInit_5b( + 8, // tri count + 4, 6, 7, // tri0 + 0, 8, 9, // tri1 + 1, 10, 11 // tri2 +), +gsSPNTriangles_5b( + 2, 12, 13, // tri0 + 1, 0, 14, // tri1 + 2, 1, 15, // tri2 + 5, 3, 16 // tri3 +), +gsSPNTriangles_5b( + 0, 4, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_bea_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&bea_1_v[83], 6, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&bea_1_v[89], 13, 6), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 6, 7, // tri0 + 5, 4, 8, // tri1 + 4, 1, 9 // tri2 +), +gsSPNTriangles_5b( + 5, 10, 11, // tri0 + 2, 3, 12, // tri1 + 4, 13, 14, // tri2 + 3, 5, 15 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 16, 17, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_bea_model[] = { +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&bea_1_v[102], 6, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&bea_1_v[108], 12, 6), +gsSPNTrianglesInit_5b( + 8, // tri count + 4, 6, 7, // tri0 + 0, 8, 9, // tri1 + 1, 10, 11 // tri2 +), +gsSPNTriangles_5b( + 2, 12, 13, // tri0 + 0, 1, 14, // tri1 + 1, 2, 15, // tri2 + 3, 5, 16 // tri3 +), +gsSPNTriangles_5b( + 4, 0, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_bea_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&bea_1_v[157], 10, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&bea_1_v[167], 21, 10), +gsSPNTrianglesInit_5b( + 14, // tri count + 0, 2, 10, // tri0 + 3, 11, 12, // tri1 + 4, 6, 13 // tri2 +), +gsSPNTriangles_5b( + 7, 1, 14, // tri0 + 9, 15, 16, // tri1 + 6, 9, 17, // tri2 + 4, 18, 19 // tri3 +), +gsSPNTriangles_5b( + 8, 20, 21, // tri0 + 8, 3, 22, // tri1 + 2, 23, 24, // tri2 + 8, 25, 2 // tri3 +), +gsSPNTriangles_5b( + 2, 26, 27, // tri0 + 9, 7, 28, // tri1 + 1, 29, 30, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&bea_1_v[188], 21, 10), +gsSPNTrianglesInit_5b( + 3, // tri count + 3, 11, 10, // tri0 + 3, 5, 12, // tri1 + 9, 13, 14 // tri2 +), +gsSPNTrianglesInit_5b( + 13, // tri count + 15, 16, 17, // tri0 + 17, 18, 15, // tri1 + 16, 15, 19 // tri2 +), +gsSPNTriangles_5b( + 16, 19, 20, // tri0 + 21, 22, 23, // tri1 + 24, 25, 23, // tri2 + 26, 23, 25 // tri3 +), +gsSPNTriangles_5b( + 23, 26, 27, // tri0 + 23, 27, 21, // tri1 + 23, 22, 28, // tri2 + 23, 28, 24 // tri3 +), +gsSPNTriangles_5b( + 19, 29, 30, // tri0 + 20, 19, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail1_bea_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&bea_1_v[209], 5, 0), +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&bea_1_v[214], 20, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 5, 6, // tri0 + 2, 7, 8, // tri1 + 3, 9, 2 // tri2 +), +gsSPNTriangles_5b( + 0, 2, 10, // tri0 + 1, 11, 12, // tri1 + 4, 1, 13, // tri2 + 0, 14, 15 // tri3 +), +gsSPNTrianglesInit_5b( + 4, // tri count + 16, 17, 18, // tri0 + 19, 16, 20, // tri1 + 21, 22, 23 // tri2 +), +gsSPNTriangles_5b( + 24, 17, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_bea_model[] = { +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&bea_1_v[285], 5, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&bea_1_v[290], 20, 5), +gsSPNTrianglesInit_5b( + 10, // tri count + 3, 5, 6, // tri0 + 1, 7, 8, // tri1 + 3, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 1, 4, 11, // tri0 + 2, 12, 13, // tri1 + 3, 0, 14, // tri2 + 3, 15, 16 // tri3 +), +gsSPNTriangles_5b( + 2, 17, 0, // tri0 + 4, 3, 18, // tri1 + 1, 19, 20, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 21, 22, 23, // tri0 + 21, 23, 24, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_bea_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&bea_1_v[310], 7, 0), +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&bea_1_v[317], 19, 7), +gsSPNTrianglesInit_5b( + 11, // tri count + 2, 7, 4, // tri0 + 2, 0, 8, // tri1 + 3, 9, 1 // tri2 +), +gsSPNTriangles_5b( + 4, 10, 5, // tri0 + 4, 11, 12, // tri1 + 3, 6, 13, // tri2 + 5, 14, 15 // tri3 +), +gsSPNTriangles_5b( + 4, 17, 16, // tri0 + 0, 18, 19, // tri1 + 6, 5, 20, // tri2 + 3, 21, 22 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 23, 24, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_bea_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&bea_1_v[234], 5, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&bea_1_v[239], 20, 5), +gsSPNTrianglesInit_5b( + 10, // tri count + 3, 5, 6, // tri0 + 1, 7, 8, // tri1 + 3, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 4, 1, 11, // tri0 + 2, 12, 13, // tri1 + 0, 14, 15, // tri2 + 0, 3, 16 // tri3 +), +gsSPNTriangles_5b( + 0, 17, 2, // tri0 + 3, 4, 18, // tri1 + 1, 19, 20, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 21, 22, 23, // tri0 + 21, 23, 24, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_bea_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&bea_1_v[259], 7, 0), +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&bea_1_v[266], 19, 7), +gsSPNTrianglesInit_5b( + 11, // tri count + 4, 7, 2, // tri0 + 0, 2, 8, // tri1 + 1, 9, 3 // tri2 +), +gsSPNTriangles_5b( + 5, 10, 4, // tri0 + 4, 11, 12, // tri1 + 6, 3, 13, // tri2 + 5, 14, 15 // tri3 +), +gsSPNTriangles_5b( + 4, 17, 16, // tri0 + 0, 18, 19, // tri1 + 5, 6, 20, // tri2 + 3, 21, 22 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 23, 24, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx base_bea_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&bea_1_v[336], 20, 0), +gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 5, 4, // tri1 + 11, 12, 13, // tri2 + 5, 14, 6 // tri3 +), +gsSPNTriangles_5b( + 0, 3, 14, // tri0 + 5, 15, 14, // tri1 + 13, 16, 17, // tri2 + 17, 18, 9 // tri3 +), +gsSPNTriangles_5b( + 14, 15, 0, // tri0 + 9, 19, 17, // tri1 + 17, 19, 13, // tri2 + 13, 12, 16 // tri3 +), +gsSPNTriangles_5b( + 7, 9, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&bea_1_v[356], 14, 0), +gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 8, 5, 7, // tri0 + 6, 9, 10, // tri1 + 8, 9, 5, // tri2 + 6, 10, 7 // tri3 +), +gsSPNTriangles_5b( + 3, 4, 11, // tri0 + 12, 11, 4, // tri1 + 3, 1, 0, // tri2 + 13, 1, 3 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_bea_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_bea_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-500,0 }, + /* joint 3 */ { Lfoot1_bea_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_bea_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,500,0 }, + /* joint 7 */ { Rfoot1_bea_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_bea_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 325,0,-973 }, + /* joint 11 */ { tail1_bea_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_bea_model, 3, cKF_JOINT_FLAG_DISP_OPA, 939,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 775,-700,0 }, + /* joint 15 */ { Larm1_bea_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_bea_model, 0, cKF_JOINT_FLAG_DISP_OPA, 703,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 775,700,0 }, + /* joint 18 */ { Rarm1_bea_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_bea_model, 1, cKF_JOINT_FLAG_DISP_OPA, 700,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 700,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 1265,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,600 }, + /* joint 23 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_bea_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1500,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_bea_1 = { 26, 12, cKF_je_r_bea_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/bev_1.c b/src/data/npc/model/mdl/bev_1.c new file mode 100644 index 00000000..1c6f2ace --- /dev/null +++ b/src/data/npc/model/mdl/bev_1.c @@ -0,0 +1,782 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx bev_1_v[] = { +#include "assets/npc/mdl/bev_1_v.inc" +}; + +static Gfx head_bev_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&bev_1_v[0], 29, 0), +gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 0, 5, 3 // tri2 +), +gsSPNTriangles_5b( + 2, 5, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 13, // tri count + 6, 7, 8, // tri0 + 9, 10, 11, // tri1 + 12, 13, 14 // tri2 +), +gsSPNTriangles_5b( + 12, 15, 13, // tri0 + 16, 17, 18, // tri1 + 16, 18, 19, // tri2 + 14, 20, 12 // tri3 +), +gsSPNTriangles_5b( + 11, 21, 9, // tri0 + 8, 22, 6, // tri1 + 23, 24, 25, // tri2 + 26, 27, 23 // tri3 +), +gsSPNTriangles_5b( + 23, 28, 26, // tri0 + 25, 28, 23, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&bev_1_v[29], 29, 0), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 0, 4, 5 // tri2 +), +gsSPNTriangles_5b( + 3, 6, 7, // tri0 + 0, 8, 9, // tri1 + 10, 11, 3, // tri2 + 2, 11, 10 // tri3 +), +gsSPNTriangles_5b( + 3, 0, 12, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 13, // tri count + 13, 14, 15, // tri0 + 16, 17, 14, // tri1 + 14, 18, 19 // tri2 +), +gsSPNTriangles_5b( + 14, 19, 16, // tri0 + 14, 17, 20, // tri1 + 20, 15, 14, // tri2 + 21, 22, 16 // tri3 +), +gsSPNTriangles_5b( + 16, 19, 23, // tri0 + 23, 24, 21, // tri1 + 13, 18, 14, // tri2 + 22, 17, 16 // tri3 +), +gsSPNTriangles_5b( + 21, 16, 23, // tri0 + 15, 25, 13, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 26, 27, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPVertex(&bev_1_v[58], 30, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 14, 15, 16, // tri2 + 8, 17, 18 // tri3 +), +gsSPNTriangles_5b( + 12, 19, 17, // tri0 + 1, 4, 3, // tri1 + 20, 21, 22, // tri2 + 23, 2, 1 // tri3 +), +gsSPNTriangles_5b( + 19, 1, 0, // tri0 + 24, 2, 21, // tri1 + 20, 14, 24, // tri2 + 17, 10, 13 // tri3 +), +gsSPNTriangles_5b( + 17, 0, 18, // tri0 + 18, 0, 24, // tri1 + 0, 17, 19, // tri2 + 2, 24, 0 // tri3 +), +gsSPNTriangles_5b( + 23, 21, 2, // tri0 + 19, 12, 4, // tri1 + 25, 8, 16, // tri2 + 25, 16, 26 // tri3 +), +gsSPNTriangles_5b( + 13, 12, 17, // tri0 + 24, 21, 20, // tri1 + 7, 22, 21, // tri2 + 5, 4, 12 // tri3 +), +gsSPNTriangles_5b( + 5, 6, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 27, 28, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPVertex(&bev_1_v[88], 19, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 9, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 +), +gsSPNTriangles_5b( + 4, 3, 7, // tri0 + 8, 9, 6, // tri1 + 10, 11, 1, // tri2 + 12, 13, 14 // tri3 +), +gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 17, 16, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&bev_1_v[107], 18, 0), +gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 5, 11, 12, // tri1 + 2, 13, 0, // tri2 + 11, 14, 9 // tri3 +), +gsSPNTriangles_5b( + 8, 15, 16, // tri0 + 5, 17, 3, // tri1 + 15, 8, 2, // tri2 + 2, 1, 15 // tri3 +), +gsSPNTriangles_5b( + 12, 17, 5, // tri0 + 8, 16, 6, // tri1 + 10, 12, 11, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 60), +gsSPVertex(&bev_1_v[125], 23, 0), +gsSPNTrianglesInit_5b( + 27, // tri count + 0, 1, 2, // tri0 + 3, 1, 4, // tri1 + 5, 1, 3 // tri2 +), +gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 9, 10, 11, // tri1 + 12, 7, 6, // tri2 + 5, 13, 14 // tri3 +), +gsSPNTriangles_5b( + 2, 1, 5, // tri0 + 9, 15, 5, // tri1 + 5, 14, 7, // tri2 + 16, 3, 17 // tri3 +), +gsSPNTriangles_5b( + 17, 9, 16, // tri0 + 18, 19, 20, // tri1 + 7, 12, 5, // tri2 + 5, 16, 9 // tri3 +), +gsSPNTriangles_5b( + 2, 6, 0, // tri0 + 4, 17, 3, // tri1 + 17, 4, 10, // tri2 + 21, 14, 13 // tri3 +), +gsSPNTriangles_5b( + 22, 8, 7, // tri0 + 15, 13, 5, // tri1 + 13, 15, 21, // tri2 + 3, 16, 5 // tri3 +), +gsSPNTriangles_5b( + 8, 0, 6, // tri0 + 10, 9, 17, // tri1 + 5, 12, 2, // tri2 + 6, 2, 12 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&bev_1_v[148], 18, 0), +gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 4, 3 // tri2 +), +gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 4, 10, 11, // tri1 + 4, 6, 12, // tri2 + 4, 13, 10 // tri3 +), +gsSPNTriangles_5b( + 5, 14, 3, // tri0 + 14, 5, 0, // tri1 + 6, 9, 8, // tri2 + 11, 5, 4 // tri3 +), +gsSPNTriangles_5b( + 5, 11, 1, // tri0 + 8, 12, 6, // tri1 + 15, 9, 6, // tri2 + 15, 16, 9 // tri3 +), +gsSPNTriangles_5b( + 1, 0, 5, // tri0 + 15, 6, 3, // tri1 + 12, 13, 4, // tri2 + 0, 17, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_bev_model[] = { +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&bev_1_v[202], 5, 0), +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&bev_1_v[207], 16, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 0, 1, 11, // tri0 + 2, 4, 12, // tri1 + 0, 13, 14, // tri2 + 3, 0, 15 // tri3 +), +gsSPNTriangles_5b( + 4, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 20, 19, 18, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_bev_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&bev_1_v[223], 4, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&bev_1_v[227], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 1, 4, 5, // tri0 + 2, 6, 7, // tri1 + 0, 2, 8 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 9, // tri0 + 0, 11, 10, // tri1 + 1, 13, 12, // tri2 + 3, 1, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_bev_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&bev_1_v[166], 5, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&bev_1_v[171], 16, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 +), +gsSPNTriangles_5b( + 3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_bev_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&bev_1_v[187], 4, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&bev_1_v[191], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 1, 6, 7, // tri1 + 1, 0, 8 // tri2 +), +gsSPNTriangles_5b( + 0, 3, 9, // tri0 + 0, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 2, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_bev_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&bev_1_v[238], 11, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&bev_1_v[249], 12, 11), +gsSPNTrianglesInit_5b( + 8, // tri count + 3, 11, 12, // tri0 + 4, 13, 8, // tri1 + 3, 8, 14 // tri2 +), +gsSPNTriangles_5b( + 8, 15, 16, // tri0 + 7, 18, 17, // tri1 + 7, 6, 19, // tri2 + 4, 7, 20 // tri3 +), +gsSPNTriangles_5b( + 6, 21, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&bev_1_v[261], 18, 11), +gsSPNTrianglesInit_5b( + 9, // tri count + 1, 0, 11, // tri0 + 9, 10, 12, // tri1 + 5, 13, 14 // tri2 +), +gsSPNTriangles_5b( + 5, 9, 15, // tri0 + 10, 1, 16, // tri1 + 2, 17, 18, // tri2 + 0, 2, 19 // tri3 +), +gsSPNTriangles_5b( + 10, 20, 21, // tri0 + 1, 22, 23, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 2, // tri count + 24, 25, 26, // tri0 + 27, 28, 24, // tri1 + 0, 0, 0 // tri2 +), +gsSPVertex(&bev_1_v[279], 18, 0), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 2, 7, 0, // tri0 + 5, 1, 0, // tri1 + 0, 3, 5, // tri2 + 1, 8, 2 // tri3 +), +gsSPNTriangles_5b( + 1, 5, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 8, // tri count + 9, 10, 11, // tri0 + 11, 12, 9, // tri1 + 13, 10, 9 // tri2 +), +gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 11, 14, 16, // tri1 + 11, 17, 14, // tri2 + 10, 17, 11 // tri3 +), +gsSPNTriangles_5b( + 16, 12, 11, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail1_bev_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&bev_1_v[317], 3, 0), +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&bev_1_v[320], 11, 3), +gsSPNTrianglesInit_5b( + 7, // tri count + 1, 3, 4, // tri0 + 1, 0, 5, // tri1 + 2, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 0, 8, 9, // tri0 + 0, 2, 10, // tri1 + 1, 11, 12, // tri2 + 2, 1, 13 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail2_bev_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&bev_1_v[297], 4, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&bev_1_v[301], 16, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 3, 4, // tri0 + 3, 0, 5, // tri1 + 1, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 2, 10, 1, // tri1 + 1, 11, 0, // tri2 + 3, 12, 13 // tri3 +), +gsSPNTriangles_5b( + 3, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 16, 17, 18, // tri0 + 18, 19, 16, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_bev_model[] = { +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&bev_1_v[362], 5, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&bev_1_v[367], 17, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 4, 0, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 1, 2, 10, // tri0 + 2, 3, 11, // tri1 + 3, 4, 12, // tri2 + 2, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_bev_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&bev_1_v[384], 9, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 1, 5, 2 // tri2 +), +gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 6, 8, 0, // tri1 + 0, 2, 6, // tri2 + 4, 5, 1 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_bev_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&bev_1_v[331], 5, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&bev_1_v[336], 17, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 4, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 1, 10, // tri0 + 3, 2, 11, // tri1 + 4, 3, 12, // tri2 + 2, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_bev_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&bev_1_v[353], 9, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 0, 5, 1 // tri2 +), +gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 2, 6, 8, // tri1 + 8, 0, 2, // tri2 + 1, 5, 3 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx base_bev_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&bev_1_v[393], 28, 0), +gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 5 // tri2 +), +gsSPNTriangles_5b( + 7, 8, 0, // tri0 + 9, 10, 11, // tri1 + 9, 12, 6, // tri2 + 13, 14, 6 // tri3 +), +gsSPNTriangles_5b( + 15, 13, 12, // tri0 + 9, 16, 12, // tri1 + 15, 12, 16, // tri2 + 6, 12, 13 // tri3 +), +gsSPNTriangles_5b( + 6, 10, 9, // tri0 + 3, 17, 4, // tri1 + 13, 18, 19, // tri2 + 14, 19, 20 // tri3 +), +gsSPNTriangles_5b( + 15, 18, 13, // tri0 + 14, 13, 19, // tri1 + 21, 16, 22, // tri2 + 1, 23, 2 // tri3 +), +gsSPNTriangles_5b( + 15, 21, 18, // tri0 + 24, 25, 26, // tri1 + 22, 9, 11, // tri2 + 11, 10, 27 // tri3 +), +gsSPNTriangles_5b( + 16, 9, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_bev_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_bev_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-370,0 }, + /* joint 3 */ { Lfoot1_bev_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_bev_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,370,0 }, + /* joint 7 */ { Rfoot1_bev_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_bev_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,-1100 }, + /* joint 11 */ { tail1_bev_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_bev_model, 0, cKF_JOINT_FLAG_DISP_OPA, 1100,0,0 }, + /* joint 13 */ { chest_bev_model, 3, cKF_JOINT_FLAG_DISP_OPA, 325,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 550,-800,0 }, + /* joint 15 */ { Larm1_bev_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_bev_model, 0, cKF_JOINT_FLAG_DISP_OPA, 401,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 550,800,0 }, + /* joint 18 */ { Rarm1_bev_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_bev_model, 1, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 399,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 776,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 650,0,300 }, + /* joint 23 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_bev_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1499,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_bev_1 = { 26, 13, cKF_je_r_bev_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/boa_1.c b/src/data/npc/model/mdl/boa_1.c new file mode 100644 index 00000000..3b00111f --- /dev/null +++ b/src/data/npc/model/mdl/boa_1.c @@ -0,0 +1,856 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx boa_1_v[] = { +#include "assets/npc/mdl/boa_1_v.inc" +}; + +static Gfx head_boa_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&boa_1_v[26], 28, 0), +gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 4, // tri count + 4, 5, 6, // tri0 + 7, 5, 4, // tri1 + 8, 5, 7 // tri2 +), +gsSPNTriangles_5b( + 6, 5, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 2, // tri count + 10, 11, 12, // tri0 + 12, 13, 10, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000180, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 10, // tri count + 14, 15, 16, // tri0 + 15, 17, 18, // tri1 + 17, 15, 14 // tri2 +), +gsSPNTriangles_5b( + 17, 14, 19, // tri0 + 17, 19, 20, // tri1 + 18, 16, 15, // tri2 + 16, 18, 20 // tri3 +), +gsSPNTriangles_5b( + 14, 16, 19, // tri0 + 20, 18, 17, // tri1 + 20, 19, 16, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 10, // tri count + 21, 22, 23, // tri0 + 24, 25, 22, // tri1 + 23, 22, 25 // tri2 +), +gsSPNTriangles_5b( + 26, 23, 25, // tri0 + 27, 26, 25, // tri1 + 22, 21, 24, // tri2 + 27, 24, 21 // tri3 +), +gsSPNTriangles_5b( + 26, 21, 23, // tri0 + 25, 24, 27, // tri1 + 21, 26, 27, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&boa_1_v[54], 22, 0), +gsSPNTrianglesInit_5b( + 27, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 3, 6 // tri2 +), +gsSPNTriangles_5b( + 6, 7, 4, // tri0 + 8, 1, 6, // tri1 + 5, 9, 3, // tri2 + 3, 9, 10 // tri3 +), +gsSPNTriangles_5b( + 0, 11, 7, // tri0 + 0, 12, 11, // tri1 + 10, 8, 3, // tri2 + 13, 2, 14 // tri3 +), +gsSPNTriangles_5b( + 7, 15, 16, // tri0 + 17, 18, 1, // tri1 + 19, 20, 21, // tri2 + 21, 13, 14 // tri3 +), +gsSPNTriangles_5b( + 2, 1, 18, // tri0 + 15, 7, 11, // tri1 + 13, 21, 20, // tri2 + 15, 11, 19 // tri3 +), +gsSPNTriangles_5b( + 16, 4, 7, // tri0 + 14, 2, 18, // tri1 + 19, 11, 20, // tri2 + 1, 8, 17 // tri3 +), +gsSPNTriangles_5b( + 7, 6, 0, // tri0 + 0, 6, 1, // tri1 + 6, 3, 8, // tri2 + 0, 2, 12 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsSPVertex(&boa_1_v[76], 21, 0), +gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 5, 9, 3, // tri0 + 10, 2, 11, // tri1 + 12, 6, 13, // tri2 + 5, 8, 7 // tri3 +), +gsSPNTriangles_5b( + 4, 8, 5, // tri0 + 14, 11, 2, // tri1 + 6, 12, 15, // tri2 + 1, 14, 2 // tri3 +), +gsSPNTriangles_5b( + 6, 15, 7, // tri0 + 3, 9, 16, // tri1 + 17, 18, 13, // tri2 + 1, 0, 16 // tri3 +), +gsSPNTriangles_5b( + 13, 18, 12, // tri0 + 16, 0, 19, // tri1 + 10, 20, 17, // tri2 + 11, 20, 10 // tri3 +), +gsSPNTriangles_5b( + 16, 19, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&boa_1_v[97], 32, 0), +gsSPNTrianglesInit_5b( + 27, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 12, 13, 1, // tri1 + 14, 15, 16, // tri2 + 3, 9, 17 // tri3 +), +gsSPNTriangles_5b( + 4, 3, 18, // tri0 + 19, 8, 7, // tri1 + 20, 21, 22, // tri2 + 23, 20, 11 // tri3 +), +gsSPNTriangles_5b( + 9, 3, 10, // tri0 + 20, 23, 21, // tri1 + 1, 0, 12, // tri2 + 11, 20, 24 // tri3 +), +gsSPNTriangles_5b( + 1, 22, 25, // tri0 + 1, 25, 2, // tri1 + 26, 23, 11, // tri2 + 13, 22, 1 // tri3 +), +gsSPNTriangles_5b( + 11, 24, 9, // tri0 + 8, 27, 17, // tri1 + 17, 27, 3, // tri2 + 28, 29, 30 // tri3 +), +gsSPNTriangles_5b( + 8, 0, 6, // tri0 + 2, 6, 0, // tri1 + 22, 13, 24, // tri2 + 22, 24, 20 // tri3 +), +gsSPVertex(&boa_1_v[128], 27, 0), +gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 0, 4, 1 // tri2 +), +gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 11, 0, 3, // tri2 + 12, 8, 10 // tri3 +), +gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 14, 13, 16, // tri1 + 17, 18, 19, // tri2 + 20, 21, 22 // tri3 +), +gsSPNTriangles_5b( + 22, 23, 20, // tri0 + 5, 24, 6, // tri1 + 23, 25, 20, // tri2 + 15, 26, 13 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx mouth_boa_model[] = { +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&boa_1_v[0], 6, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 24, 15, GX_MIRROR, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&boa_1_v[6], 20, 6), +gsSPNTrianglesInit_5b( + 10, // tri count + 3, 4, 6, // tri0 + 5, 2, 7, // tri1 + 2, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 2, 1, 10, // tri0 + 1, 11, 12, // tri1 + 0, 13, 14, // tri2 + 3, 15, 16 // tri3 +), +gsSPNTriangles_5b( + 0, 3, 17, // tri0 + 1, 18, 19, // tri1 + 1, 0, 20, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 21, 22, 23, // tri0 + 23, 24, 25, // tri1 + 23, 25, 21 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_boa_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&boa_1_v[189], 4, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&boa_1_v[193], 16, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 4, 5, // tri0 + 1, 6, 7, // tri1 + 2, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 1, 10, 11, // tri0 + 0, 2, 12, // tri1 + 0, 13, 1, // tri2 + 2, 3, 14 // tri3 +), +gsSPNTriangles_5b( + 3, 1, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 16, 17, 18, // tri0 + 19, 18, 17, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_boa_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&boa_1_v[209], 3, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&boa_1_v[212], 11, 3), +gsSPNTrianglesInit_5b( + 7, // tri count + 2, 3, 1, // tri0 + 0, 5, 4, // tri1 + 2, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 0, 10, 11, // tri1 + 2, 0, 12, // tri2 + 0, 1, 13 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_boa_model[] = { +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&boa_1_v[155], 4, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&boa_1_v[159], 16, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 4, 5, // tri0 + 1, 6, 7, // tri1 + 2, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 1, 10, 11, // tri0 + 2, 0, 12, // tri1 + 1, 13, 0, // tri2 + 3, 2, 14 // tri3 +), +gsSPNTriangles_5b( + 1, 3, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_boa_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&boa_1_v[175], 3, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&boa_1_v[178], 11, 3), +gsSPNTrianglesInit_5b( + 7, // tri count + 1, 3, 2, // tri0 + 0, 5, 4, // tri1 + 2, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 0, 10, 11, // tri1 + 0, 2, 12, // tri2 + 1, 0, 13 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_boa_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&boa_1_v[223], 10, 0), +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&boa_1_v[233], 20, 10), +gsSPNTrianglesInit_5b( + 13, // tri count + 2, 5, 10, // tri0 + 5, 6, 11, // tri1 + 1, 12, 13 // tri2 +), +gsSPNTriangles_5b( + 3, 14, 15, // tri0 + 3, 2, 16, // tri1 + 4, 17, 18, // tri2 + 0, 4, 19 // tri3 +), +gsSPNTriangles_5b( + 7, 20, 21, // tri0 + 0, 22, 23, // tri1 + 6, 8, 24, // tri2 + 7, 1, 25 // tri3 +), +gsSPNTriangles_5b( + 8, 26, 27, // tri0 + 5, 28, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&boa_1_v[253], 4, 10), +gsSPNTrianglesInit_5b( + 3, // tri count + 1, 9, 10, // tri0 + 9, 0, 11, // tri1 + 5, 12, 13 // tri2 +), +gsSPVertex(&boa_1_v[257], 23, 0), +gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 3, 7, 0, // tri0 + 0, 7, 8, // tri1 + 9, 10, 11, // tri2 + 1, 12, 13 // tri3 +), +gsSPNTriangles_5b( + 0, 8, 12, // tri0 + 9, 14, 15, // tri1 + 15, 10, 9, // tri2 + 0, 12, 1 // tri3 +), +gsSPNTriangles_5b( + 10, 16, 11, // tri0 + 11, 17, 9, // tri1 + 11, 18, 17, // tri2 + 14, 19, 15 // tri3 +), +gsSPNTriangles_5b( + 3, 20, 7, // tri0 + 16, 10, 15, // tri1 + 5, 21, 22, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 24, 15, GX_REPEAT, GX_CLAMP, 0, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&boa_1_v[280], 31, 0), +gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 0 // tri2 +), +gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 9, 10, 7, // tri1 + 9, 7, 6, // tri2 + 11, 0, 5 // tri3 +), +gsSPNTriangles_5b( + 2, 7, 10, // tri0 + 2, 10, 3, // tri1 + 2, 8, 7, // tri2 + 1, 8, 2 // tri3 +), +gsSPNTriangles_5b( + 8, 1, 12, // tri0 + 13, 10, 9, // tri1 + 12, 1, 0, // tri2 + 12, 0, 11 // tri3 +), +gsSPNTriangles_5b( + 14, 3, 10, // tri0 + 14, 4, 3, // tri1 + 10, 13, 14, // tri2 + 0, 3, 4 // tri3 +), +gsSPNTriangles_5b( + 9, 15, 13, // tri0 + 5, 16, 11, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 20, 18, 17, // tri1 + 0, 0, 0 // tri2 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 21, 22, 23, // tri0 + 24, 22, 21, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000180, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 8, // tri count + 25, 26, 27, // tri0 + 26, 25, 28, // tri1 + 26, 29, 27 // tri2 +), +gsSPNTriangles_5b( + 29, 26, 28, // tri0 + 30, 25, 27, // tri1 + 25, 30, 28, // tri2 + 29, 30, 27 // tri3 +), +gsSPNTriangles_5b( + 30, 29, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&boa_1_v[311], 30, 0), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 3, 2 // tri2 +), +gsSPNTriangles_5b( + 0, 3, 5, // tri0 + 3, 0, 2, // tri1 + 4, 1, 5, // tri2 + 1, 4, 2 // tri3 +), +gsSPNTriangles_5b( + 1, 0, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 8, // tri count + 6, 7, 8, // tri0 + 9, 10, 11, // tri1 + 10, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 6, 9, 11, // tri0 + 9, 6, 8, // tri1 + 10, 7, 11, // tri2 + 7, 10, 8 // tri3 +), +gsSPNTriangles_5b( + 7, 6, 11, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 24, 15, GX_MIRROR, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 178, 178, 178, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 12, 13, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 18, 19, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 21, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 24, 25, 26, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 27, 28, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_boa_model[] = { +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&boa_1_v[382], 6, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&boa_1_v[388], 14, 6), +gsSPNTrianglesInit_5b( + 5, // tri count + 2, 4, 6, // tri0 + 0, 2, 7, // tri1 + 4, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 0, 11, 10, // tri0 + 2, 12, 13, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 2, // tri count + 3, 5, 14, // tri0 + 5, 1, 15, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 3, // tri count + 16, 17, 18, // tri0 + 18, 17, 19, // tri1 + 16, 19, 17 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_boa_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&boa_1_v[402], 8, 0), +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&boa_1_v[410], 13, 8), +gsSPNTrianglesInit_5b( + 9, // tri count + 6, 8, 9, // tri0 + 7, 4, 10, // tri1 + 5, 11, 12 // tri2 +), +gsSPNTriangles_5b( + 2, 6, 13, // tri0 + 0, 2, 14, // tri1 + 3, 15, 5, // tri2 + 3, 16, 17 // tri3 +), +gsSPNTriangles_5b( + 3, 1, 18, // tri0 + 2, 19, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_boa_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&boa_1_v[341], 6, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&boa_1_v[347], 14, 6), +gsSPNTrianglesInit_5b( + 2, // tri count + 5, 3, 6, // tri0 + 1, 5, 7, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 5, // tri count + 2, 8, 9, // tri0 + 4, 2, 10, // tri1 + 2, 0, 11 // tri2 +), +gsSPNTriangles_5b( + 4, 13, 12, // tri0 + 0, 15, 14, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 16, 17, 18, // tri0 + 19, 17, 16, // tri1 + 17, 19, 18 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_boa_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&boa_1_v[361], 8, 0), +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&boa_1_v[369], 13, 8), +gsSPNTrianglesInit_5b( + 9, // tri count + 6, 8, 9, // tri0 + 4, 2, 10, // tri1 + 4, 11, 12 // tri2 +), +gsSPNTriangles_5b( + 7, 5, 13, // tri0 + 3, 6, 14, // tri1 + 2, 0, 15, // tri2 + 1, 3, 16 // tri3 +), +gsSPNTriangles_5b( + 3, 17, 18, // tri0 + 2, 19, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx base_boa_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&boa_1_v[423], 30, 0), +gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 12, 13, 14, // tri1 + 15, 16, 17, // tri2 + 5, 9, 3 // tri3 +), +gsSPNTriangles_5b( + 15, 18, 19, // tri0 + 20, 13, 12, // tri1 + 8, 7, 21, // tri2 + 11, 3, 9 // tri3 +), +gsSPNTriangles_5b( + 19, 16, 15, // tri0 + 22, 15, 17, // tri1 + 20, 23, 13, // tri2 + 7, 24, 21 // tri3 +), +gsSPNTriangles_5b( + 21, 24, 25, // tri0 + 14, 26, 12, // tri1 + 8, 27, 6, // tri2 + 21, 28, 8 // tri3 +), +gsSPNTriangles_5b( + 12, 29, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_boa_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_boa_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_boa_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_boa_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_boa_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_boa_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 150,0,-850 }, + /* joint 11 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_boa_model, 3, cKF_JOINT_FLAG_DISP_OPA, 425,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 650,-500,0 }, + /* joint 15 */ { Larm1_boa_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_boa_model, 0, cKF_JOINT_FLAG_DISP_OPA, 558,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 650,500,0 }, + /* joint 18 */ { Rarm1_boa_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_boa_model, 1, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 875,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 700,0,1250 }, + /* joint 23 */ { mouth_boa_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_boa_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1245,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_boa_1 = { 26, 12, cKF_je_r_boa_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/bpt_1.c b/src/data/npc/model/mdl/bpt_1.c new file mode 100644 index 00000000..813f42b7 --- /dev/null +++ b/src/data/npc/model/mdl/bpt_1.c @@ -0,0 +1,800 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx bpt_1_v[] = { +#include "assets/npc/mdl/bpt_1_v.inc" +}; + +static Gfx head_bpt_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&bpt_1_v[21], 25, 0), +gsSPNTrianglesInit_5b( + 34, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 7, 6, 5, // tri0 + 8, 9, 10, // tri1 + 11, 12, 5, // tri2 + 5, 12, 10 // tri3 +), +gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 10, 12, 8, // tri1 + 13, 9, 16, // tri2 + 13, 16, 17 // tri3 +), +gsSPNTriangles_5b( + 9, 8, 16, // tri0 + 17, 14, 13, // tri1 + 0, 18, 19, // tri2 + 17, 16, 20 // tri3 +), +gsSPNTriangles_5b( + 17, 20, 21, // tri0 + 20, 16, 8, // tri1 + 21, 14, 17, // tri2 + 14, 21, 19 // tri3 +), +gsSPNTriangles_5b( + 14, 19, 18, // tri0 + 15, 14, 18, // tri1 + 11, 4, 22, // tri2 + 15, 18, 0 // tri3 +), +gsSPNTriangles_5b( + 23, 20, 11, // tri0 + 11, 8, 12, // tri1 + 24, 23, 22, // tri2 + 11, 20, 8 // tri3 +), +gsSPNTriangles_5b( + 19, 23, 24, // tri0 + 23, 19, 21, // tri1 + 21, 20, 23, // tri2 + 19, 1, 0 // tri3 +), +gsSPNTriangles_5b( + 5, 4, 11, // tri0 + 22, 23, 11, // tri1 + 24, 1, 19, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&bpt_1_v[46], 27, 0), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 8, 5, 4, // tri0 + 5, 7, 4, // tri1 + 4, 3, 8, // tri2 + 3, 1, 0 // tri3 +), +gsSPNTriangles_5b( + 9, 7, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 24, // tri count + 10, 11, 12, // tri0 + 13, 14, 10, // tri1 + 10, 15, 16 // tri2 +), +gsSPNTriangles_5b( + 17, 18, 19, // tri0 + 20, 21, 12, // tri1 + 14, 18, 17, // tri2 + 10, 22, 13 // tri3 +), +gsSPNTriangles_5b( + 23, 15, 10, // tri0 + 11, 16, 24, // tri1 + 24, 20, 11, // tri2 + 15, 23, 17 // tri3 +), +gsSPNTriangles_5b( + 13, 18, 14, // tri0 + 11, 20, 12, // tri1 + 24, 25, 21, // tri2 + 13, 19, 18 // tri3 +), +gsSPNTriangles_5b( + 12, 22, 10, // tri0 + 16, 11, 10, // tri1 + 10, 14, 23, // tri2 + 19, 26, 17 // tri3 +), +gsSPNTriangles_5b( + 21, 20, 24, // tri0 + 24, 16, 15, // tri1 + 17, 26, 15, // tri2 + 15, 25, 24 // tri3 +), +gsSPNTriangles_5b( + 17, 23, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&bpt_1_v[73], 24, 0), +gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 5 // tri2 +), +gsSPNTriangles_5b( + 5, 4, 6, // tri0 + 8, 7, 6, // tri1 + 9, 10, 11, // tri2 + 6, 4, 12 // tri3 +), +gsSPNTriangles_5b( + 5, 13, 3, // tri0 + 9, 14, 10, // tri1 + 2, 15, 0, // tri2 + 11, 1, 9 // tri3 +), +gsSPNTriangles_5b( + 12, 8, 6, // tri0 + 9, 1, 0, // tri1 + 0, 14, 9, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 19, 20, 21 // tri2 +), +gsSPNTriangles_5b( + 22, 19, 16, // tri0 + 20, 19, 22, // tri1 + 23, 21, 20, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsSPVertex(&bpt_1_v[97], 17, 0), +gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 0, 2, 5 // tri2 +), +gsSPNTriangles_5b( + 6, 7, 5, // tri0 + 8, 0, 9, // tri1 + 5, 10, 6, // tri2 + 9, 0, 11 // tri3 +), +gsSPNTriangles_5b( + 2, 12, 3, // tri0 + 5, 2, 4, // tri1 + 5, 4, 10, // tri2 + 9, 13, 8 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 1, // tri count + 14, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx feel_bpt_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 32, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&bpt_1_v[114], 14, 0), +gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 1 // tri2 +), +gsSPNTriangles_5b( + 8, 5, 4, // tri0 + 9, 1, 7, // tri1 + 4, 10, 9, // tri2 + 7, 11, 9 // tri3 +), +gsSPNTriangles_5b( + 5, 12, 3, // tri0 + 4, 3, 10, // tri1 + 9, 10, 1, // tri2 + 2, 13, 0 // tri3 +), +gsSPNTriangles_5b( + 1, 0, 6, // tri0 + 9, 11, 4, // tri1 + 10, 2, 1, // tri2 + 4, 11, 8 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx mouth_bpt_model[] = { +gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&bpt_1_v[0], 5, 0), +gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&bpt_1_v[5], 16, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 1, 5, 6, // tri0 + 1, 7, 0, // tri1 + 0, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 3, 4, 10, // tri0 + 4, 12, 11, // tri1 + 2, 13, 14, // tri2 + 3, 15, 2 // tri3 +), +gsSPNTriangles_5b( + 4, 0, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 17, 19, 20, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_bpt_model[] = { +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&bpt_1_v[169], 6, 0), +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&bpt_1_v[175], 22, 6), +gsSPNTrianglesInit_5b( + 4, // tri count + 0, 6, 4, // tri0 + 0, 2, 7, // tri1 + 2, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 4, 10, 11, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 4, // tri count + 5, 3, 12, // tri0 + 3, 13, 14, // tri1 + 1, 5, 15 // tri2 +), +gsSPNTriangles_5b( + 1, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 3, // tri count + 18, 19, 20, // tri0 + 20, 21, 18, // tri1 + 18, 22, 19 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 3, // tri count + 23, 24, 25, // tri0 + 25, 26, 23, // tri1 + 24, 27, 25 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_bpt_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&bpt_1_v[197], 3, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&bpt_1_v[200], 11, 3), +gsSPNTrianglesInit_5b( + 3, // tri count + 0, 1, 3, // tri0 + 1, 4, 5, // tri1 + 0, 7, 6 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 4, // tri count + 2, 0, 8, // tri0 + 2, 9, 1, // tri1 + 0, 10, 11 // tri2 +), +gsSPNTriangles_5b( + 2, 12, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_bpt_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&bpt_1_v[128], 5, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&bpt_1_v[133], 22, 5), +gsSPNTrianglesInit_5b( + 4, // tri count + 3, 5, 6, // tri0 + 2, 7, 8, // tri1 + 3, 0, 9 // tri2 +), +gsSPNTriangles_5b( + 2, 10, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 4, // tri count + 3, 11, 12, // tri0 + 1, 13, 14, // tri1 + 1, 4, 15 // tri2 +), +gsSPNTriangles_5b( + 4, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 3, // tri count + 17, 18, 19, // tri0 + 18, 20, 19, // tri1 + 19, 21, 17 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 3, // tri count + 22, 23, 24, // tri0 + 22, 24, 25, // tri1 + 25, 26, 22 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_bpt_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&bpt_1_v[155], 3, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&bpt_1_v[158], 11, 3), +gsSPNTrianglesInit_5b( + 3, // tri count + 0, 4, 3, // tri0 + 1, 5, 6, // tri1 + 1, 0, 7 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 4, // tri count + 1, 8, 2, // tri0 + 2, 9, 10, // tri1 + 0, 2, 11 // tri2 +), +gsSPNTriangles_5b( + 0, 12, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_bpt_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&bpt_1_v[211], 7, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&bpt_1_v[218], 23, 7), +gsSPNTrianglesInit_5b( + 15, // tri count + 4, 5, 7, // tri0 + 3, 8, 9, // tri1 + 6, 10, 1 // tri2 +), +gsSPNTriangles_5b( + 1, 11, 12, // tri0 + 1, 14, 13, // tri1 + 0, 15, 16, // tri2 + 6, 0, 17 // tri3 +), +gsSPNTriangles_5b( + 5, 18, 19, // tri0 + 6, 20, 21, // tri1 + 2, 22, 23, // tri2 + 2, 24, 3 // tri3 +), +gsSPNTriangles_5b( + 1, 25, 2, // tri0 + 3, 26, 5, // tri1 + 4, 27, 28, // tri2 + 4, 29, 0 // tri3 +), +gsSPVertex(&bpt_1_v[241], 16, 0), +gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 0 // tri2 +), +gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 8, 10, 3, // tri1 + 5, 8, 3, // tri2 + 2, 11, 6 // tri3 +), +gsSPNTriangles_5b( + 0, 7, 12, // tri0 + 1, 0, 4, // tri1 + 12, 13, 4, // tri2 + 5, 13, 14 // tri3 +), +gsSPNTriangles_5b( + 0, 2, 6, // tri0 + 12, 4, 0, // tri1 + 8, 15, 9, // tri2 + 10, 9, 11 // tri3 +), +gsSPNTriangles_5b( + 8, 14, 15, // tri0 + 5, 14, 8, // tri1 + 2, 3, 10, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail1_bpt_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000580, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&bpt_1_v[276], 6, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 2, 1, 3 // tri2 +), +gsSPNTriangles_5b( + 4, 5, 3, // tri0 + 3, 5, 2, // tri1 + 2, 4, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail2_bpt_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&bpt_1_v[257], 3, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000580, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&bpt_1_v[260], 16, 3), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 3, 4, // tri0 + 0, 5, 6, // tri1 + 2, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 1, 9, // tri0 + 1, 0, 10, // tri1 + 0, 2, 11, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 9, // tri count + 12, 13, 14, // tri0 + 15, 13, 16, // tri1 + 14, 16, 17 // tri2 +), +gsSPNTriangles_5b( + 16, 13, 12, // tri0 + 12, 17, 16, // tri1 + 16, 14, 15, // tri2 + 15, 14, 13 // tri3 +), +gsSPNTriangles_5b( + 14, 18, 12, // tri0 + 17, 18, 14, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_bpt_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000580, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&bpt_1_v[312], 8, 0), +gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 1, 6 // tri2 +), +gsSPNTriangles_5b( + 5, 3, 7, // tri0 + 5, 7, 2, // tri1 + 2, 7, 3, // tri2 + 2, 1, 5 // tri3 +), +gsSPNTriangles_5b( + 5, 4, 3, // tri0 + 5, 6, 4, // tri1 + 2, 3, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_bpt_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&bpt_1_v[320], 8, 0), +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&bpt_1_v[328], 13, 8), +gsSPNTrianglesInit_5b( + 9, // tri count + 0, 2, 8, // tri0 + 3, 1, 9, // tri1 + 3, 10, 6 // tri2 +), +gsSPNTriangles_5b( + 4, 11, 2, // tri0 + 2, 12, 13, // tri1 + 1, 14, 15, // tri2 + 5, 7, 16 // tri3 +), +gsSPNTriangles_5b( + 7, 17, 18, // tri0 + 5, 19, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_bpt_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000580, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&bpt_1_v[282], 8, 0), +gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 3, 1, 4, // tri1 + 5, 6, 4 // tri2 +), +gsSPNTriangles_5b( + 2, 3, 4, // tri0 + 2, 6, 0, // tri1 + 0, 7, 1, // tri2 + 1, 3, 2 // tri3 +), +gsSPNTriangles_5b( + 4, 6, 2, // tri0 + 1, 7, 4, // tri1 + 7, 5, 4, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_bpt_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&bpt_1_v[290], 6, 0), +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&bpt_1_v[296], 16, 6), +gsSPNTrianglesInit_5b( + 8, // tri count + 1, 6, 7, // tri0 + 4, 8, 0, // tri1 + 1, 9, 2 // tri2 +), +gsSPNTriangles_5b( + 3, 11, 10, // tri0 + 5, 3, 12, // tri1 + 5, 13, 14, // tri2 + 1, 15, 16 // tri3 +), +gsSPNTriangles_5b( + 0, 18, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx base_bpt_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&bpt_1_v[341], 25, 0), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 0, 3, 4 // tri2 +), +gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 2, 1, 6, // tri1 + 2, 6, 5, // tri2 + 4, 8, 0 // tri3 +), +gsSPNTriangles_5b( + 9, 8, 4, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 9, // tri count + 10, 11, 12, // tri0 + 10, 13, 11, // tri1 + 14, 15, 13 // tri2 +), +gsSPNTriangles_5b( + 14, 13, 10, // tri0 + 12, 11, 16, // tri1 + 17, 18, 19, // tri2 + 17, 19, 20 // tri3 +), +gsSPNTriangles_5b( + 21, 22, 23, // tri0 + 23, 24, 21, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_bpt_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_bpt_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_bpt_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_bpt_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_bpt_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_bpt_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,-500 }, + /* joint 11 */ { tail1_bpt_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_bpt_model, 0, cKF_JOINT_FLAG_DISP_OPA, 999,0,0 }, + /* joint 13 */ { chest_bpt_model, 3, cKF_JOINT_FLAG_DISP_OPA, 425,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 750,-500,0 }, + /* joint 15 */ { Larm1_bpt_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_bpt_model, 0, cKF_JOINT_FLAG_DISP_OPA, 750,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 750,500,0 }, + /* joint 18 */ { Rarm1_bpt_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_bpt_model, 1, cKF_JOINT_FLAG_DISP_OPA, 750,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 750,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 1074,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 250,0,900 }, + /* joint 23 */ { mouth_bpt_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_bpt_model, 1, cKF_JOINT_FLAG_DISP_OPA, -199,0,0 }, + /* joint 25 */ { feel_bpt_model, 0, cKF_JOINT_FLAG_DISP_OPA, 1400,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_bpt_1 = { 26, 15, cKF_je_r_bpt_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/brd_1.c b/src/data/npc/model/mdl/brd_1.c new file mode 100644 index 00000000..c0c18063 --- /dev/null +++ b/src/data/npc/model/mdl/brd_1.c @@ -0,0 +1,744 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx brd_1_v[] = { +#include "assets/npc/mdl/brd_1_v.inc" +}; + +static Gfx head_brd_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&brd_1_v[12], 21, 0), +gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 6, 0 // tri2 +), +gsSPNTriangles_5b( + 3, 7, 4, // tri0 + 8, 9, 2, // tri1 + 8, 7, 3, // tri2 + 3, 9, 8 // tri3 +), +gsSPNTriangles_5b( + 1, 10, 2, // tri0 + 3, 11, 9, // tri1 + 9, 11, 2, // tri2 + 0, 0, 0 // tri3 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 2, // tri count + 12, 13, 14, // tri0 + 15, 14, 13, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 2, // tri count + 16, 17, 18, // tri0 + 19, 20, 17, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&brd_1_v[33], 24, 0), +gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 3, 8, 4, // tri1 + 9, 8, 7, // tri2 + 9, 7, 10 // tri3 +), +gsSPNTriangles_5b( + 5, 4, 12, // tri0 + 13, 10, 7, // tri1 + 4, 8, 9, // tri2 + 0, 0, 0 // tri3 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 14, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 20, 18, 17, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 21, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPVertex(&brd_1_v[57], 29, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 0, 6 // tri2 +), +gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 10, 11, 12, // tri0 + 13, 14, 15, // tri1 + 14, 11, 15 // tri2 +), +gsSPNTriangles_5b( + 16, 13, 15, // tri0 + 17, 13, 18, // tri1 + 19, 20, 11, // tri2 + 13, 16, 18 // tri3 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 21, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 2, // tri count + 24, 25, 26, // tri0 + 27, 28, 26, // tri1 + 0, 0, 0 // tri2 +), +gsSPVertex(&brd_1_v[86], 17, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 3, // tri count + 3, 4, 5, // tri0 + 3, 6, 7, // tri1 + 8, 5, 9 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 3, // tri count + 10, 11, 12, // tri0 + 13, 14, 15, // tri1 + 15, 14, 16 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx mouth_brd_model[] = { +gsSPMatrix(0x0D000380, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&brd_1_v[0], 5, 0), +gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&brd_1_v[5], 7, 5), +gsSPNTrianglesInit_5b( + 5, // tri count + 3, 1, 5, // tri0 + 4, 7, 6, // tri1 + 3, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 1, 4, 10, // tri0 + 0, 2, 11, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_brd_model[] = { +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&brd_1_v[134], 4, 0), +gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&brd_1_v[138], 15, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 1, 3, 6, // tri1 + 3, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 9, 10, // tri0 + 2, 11, 0, // tri1 + 3, 12, 13, // tri2 + 3, 0, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 15, 16, 17, // tri0 + 18, 15, 17, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_brd_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&brd_1_v[153], 3, 0), +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&brd_1_v[156], 9, 3), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 3, // tri0 + 2, 0, 4, // tri1 + 0, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 1, 7, 8, // tri0 + 1, 2, 9, // tri1 + 2, 10, 11, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_brd_model[] = { +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&brd_1_v[103], 4, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&brd_1_v[107], 15, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 3, 1, 6, // tri1 + 3, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 0, 9, 10, // tri0 + 0, 11, 2, // tri1 + 3, 12, 13, // tri2 + 0, 3, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 15, 16, 17, // tri0 + 15, 17, 18, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_brd_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&brd_1_v[122], 3, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&brd_1_v[125], 9, 3), +gsSPNTrianglesInit_5b( + 6, // tri count + 1, 0, 3, // tri0 + 0, 2, 4, // tri1 + 0, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 1, 7, 8, // tri0 + 2, 1, 9, // tri1 + 2, 10, 11, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_brd_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&brd_1_v[165], 9, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 252, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&brd_1_v[174], 20, 9), +gsSPNTrianglesInit_5b( + 14, // tri count + 0, 9, 10, // tri0 + 8, 11, 12, // tri1 + 1, 0, 13 // tri2 +), +gsSPNTriangles_5b( + 0, 3, 14, // tri0 + 4, 15, 7, // tri1 + 3, 7, 16, // tri2 + 7, 17, 18 // tri3 +), +gsSPNTriangles_5b( + 3, 20, 19, // tri0 + 8, 2, 21, // tri1 + 5, 8, 22, // tri2 + 5, 23, 24 // tri3 +), +gsSPNTriangles_5b( + 6, 26, 25, // tri0 + 6, 5, 27, // tri1 + 4, 6, 28, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&brd_1_v[194], 17, 0), +gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 +), +gsSPNTriangles_5b( + 1, 6, 2, // tri0 + 7, 8, 9, // tri1 + 7, 10, 11, // tri2 + 0, 12, 13 // tri3 +), +gsSPNTriangles_5b( + 5, 14, 10, // tri0 + 6, 11, 4, // tri1 + 10, 14, 11, // tri2 + 9, 13, 12 // tri3 +), +gsSPNTriangles_5b( + 5, 15, 3, // tri0 + 9, 12, 7, // tri1 + 11, 8, 7, // tri2 + 2, 16, 0 // tri3 +), +gsSPNTriangles_5b( + 13, 1, 0, // tri0 + 4, 14, 5, // tri1 + 1, 9, 6, // tri2 + 8, 6, 9 // tri3 +), +gsSPNTriangles_5b( + 8, 11, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail1_brd_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&brd_1_v[211], 5, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&brd_1_v[216], 15, 5), +gsSPNTrianglesInit_5b( + 3, // tri count + 1, 2, 5, // tri0 + 2, 0, 6, // tri1 + 1, 7, 8 // tri2 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 3, 1, 4, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 0, 4, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 4, 1, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 4, 0, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 0, 11, 12, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPNTrianglesInit_5b( + 6, // tri count + 13, 14, 15, // tri0 + 15, 14, 16, // tri1 + 15, 17, 13 // tri2 +), +gsSPNTriangles_5b( + 15, 18, 19, // tri0 + 16, 18, 15, // tri1 + 19, 17, 15, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot3_brd_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&brd_1_v[281], 4, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&brd_1_v[285], 20, 4), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 3, 4, // tri0 + 1, 0, 5, // tri1 + 3, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 2, 8, 9, // tri0 + 2, 10, 3, // tri1 + 1, 11, 12, // tri2 + 0, 0, 0 // tri3 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 6, // tri count + 13, 14, 15, // tri0 + 13, 16, 14, // tri1 + 13, 17, 18 // tri2 +), +gsSPNTriangles_5b( + 13, 19, 17, // tri0 + 15, 19, 13, // tri1 + 18, 20, 13, // tri2 + 0, 0, 0 // tri3 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 21, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_brd_model[] = { +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&brd_1_v[305], 4, 0), +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&brd_1_v[309], 14, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 1, 6, 7, // tri1 + 3, 0, 8 // tri2 +), +gsSPNTriangles_5b( + 0, 2, 9, // tri0 + 2, 10, 11, // tri1 + 1, 3, 12, // tri2 + 3, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_brd_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&brd_1_v[323], 8, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 1, 0, 3, // tri1 + 2, 4, 0 // tri2 +), +gsSPNTriangles_5b( + 5, 6, 4, // tri0 + 5, 4, 2, // tri1 + 3, 7, 1, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot3_brd_model[] = { +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&brd_1_v[231], 4, 0), +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&brd_1_v[235], 20, 4), +gsSPNTrianglesInit_5b( + 6, // tri count + 3, 0, 4, // tri0 + 0, 1, 5, // tri1 + 3, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 3, 8, 9, // tri0 + 3, 10, 2, // tri1 + 1, 11, 12, // tri2 + 0, 0, 0 // tri3 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 6, // tri count + 13, 14, 15, // tri0 + 14, 16, 15, // tri1 + 17, 18, 15 // tri2 +), +gsSPNTriangles_5b( + 18, 19, 15, // tri0 + 15, 19, 13, // tri1 + 15, 20, 17, // tri2 + 0, 0, 0 // tri3 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 21, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_brd_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&brd_1_v[255], 4, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&brd_1_v[259], 14, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 1, 6, 7, // tri1 + 0, 3, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 0, 9, // tri0 + 2, 10, 11, // tri1 + 3, 1, 12, // tri2 + 3, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_brd_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&brd_1_v[273], 8, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 2, 4, 0 // tri2 +), +gsSPNTriangles_5b( + 0, 4, 5, // tri0 + 0, 5, 6, // tri1 + 1, 7, 3, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx base_brd_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&brd_1_v[331], 21, 0), +gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 2, 1, 5 // tri2 +), +gsSPNTriangles_5b( + 4, 0, 2, // tri0 + 1, 6, 7, // tri1 + 8, 3, 9, // tri2 + 8, 9, 10 // tri3 +), +gsSPNTriangles_5b( + 10, 9, 11, // tri0 + 12, 5, 7, // tri1 + 9, 3, 4, // tri2 + 13, 14, 15 // tri3 +), +gsSPNTriangles_5b( + 10, 11, 14, // tri0 + 13, 15, 16, // tri1 + 14, 11, 15, // tri2 + 13, 16, 17 // tri3 +), +gsSPNTriangles_5b( + 17, 16, 18, // tri0 + 1, 0, 19, // tri1 + 1, 19, 6, // tri2 + 19, 0, 20 // tri3 +), +gsSPNTriangles_5b( + 6, 19, 13, // tri0 + 13, 19, 20, // tri1 + 20, 3, 8, // tri2 + 8, 10, 20 // tri3 +), +gsSPNTriangles_5b( + 0, 3, 20, // tri0 + 13, 20, 14, // tri1 + 10, 14, 20, // tri2 + 7, 5, 1 // tri3 +), +gsSPNTriangles_5b( + 17, 6, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_brd_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_brd_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_brd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_brd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { Lfoot3_brd_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_brd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_brd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { Rfoot3_brd_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 75,0,-650 }, + /* joint 11 */ { tail1_brd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_brd_model, 3, cKF_JOINT_FLAG_DISP_OPA, 325,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 550,-500,0 }, + /* joint 15 */ { Larm1_brd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_brd_model, 0, cKF_JOINT_FLAG_DISP_OPA, 448,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 550,500,0 }, + /* joint 18 */ { Rarm1_brd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_brd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 450,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 450,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 824,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 800,0,1300 }, + /* joint 23 */ { mouth_brd_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_brd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1252,0,-158 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_brd_1 = { 26, 15, cKF_je_r_brd_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/bul_1.c b/src/data/npc/model/mdl/bul_1.c new file mode 100644 index 00000000..911644de --- /dev/null +++ b/src/data/npc/model/mdl/bul_1.c @@ -0,0 +1,741 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx bul_1_v[] = { +#include "assets/npc/mdl/bul_1_v.inc" +}; + +static Gfx head_bul_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&bul_1_v[0], 19, 0), +gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 3, 7, 9, // tri2 + 14, 15, 2 // tri3 +), +gsSPNTriangles_5b( + 16, 15, 10, // tri0 + 8, 3, 9, // tri1 + 5, 7, 3, // tri2 + 8, 14, 17 // tri3 +), +gsSPNTriangles_5b( + 14, 8, 15, // tri0 + 17, 5, 4, // tri1 + 8, 4, 3, // tri2 + 10, 15, 8 // tri3 +), +gsSPNTriangles_5b( + 0, 18, 1, // tri0 + 1, 14, 2, // tri1 + 13, 12, 5, // tri2 + 13, 5, 17 // tri3 +), +gsSPNTriangles_5b( + 17, 4, 8, // tri0 + 13, 17, 14, // tri1 + 11, 13, 1, // tri2 + 1, 18, 11 // tri3 +), +gsSPNTriangles_5b( + 14, 1, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&bul_1_v[19], 27, 0), +gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 3 // tri2 +), +gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 9, 6, 5, // tri2 + 0, 14, 15 // tri3 +), +gsSPNTriangles_5b( + 8, 14, 16, // tri0 + 9, 5, 10, // tri1 + 5, 6, 3, // tri2 + 17, 15, 10 // tri3 +), +gsSPNTriangles_5b( + 14, 10, 15, // tri0 + 4, 3, 17, // tri1 + 5, 4, 10, // tri2 + 10, 14, 8 // tri3 +), +gsSPNTriangles_5b( + 1, 18, 2, // tri0 + 0, 15, 1, // tri1 + 17, 3, 12, // tri2 + 17, 12, 11 // tri3 +), +gsSPNTriangles_5b( + 10, 4, 17, // tri0 + 15, 17, 11, // tri1 + 1, 11, 13, // tri2 + 13, 18, 1 // tri3 +), +gsSPNTriangles_5b( + 11, 1, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 5, // tri count + 19, 20, 21, // tri0 + 22, 23, 24, // tri1 + 21, 25, 19 // tri2 +), +gsSPNTriangles_5b( + 26, 22, 24, // tri0 + 24, 25, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPSetPrimColor(0, 128, 253, 255, 255, 255), +gsSPVertex(&bul_1_v[46], 21, 0), +gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 0, 3 // tri2 +), +gsSPNTriangles_5b( + 1, 6, 2, // tri0 + 1, 7, 6, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPNTrianglesInit_5b( + 14, // tri count + 8, 9, 10, // tri0 + 9, 8, 11, // tri1 + 12, 11, 8 // tri2 +), +gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 16, 10, 9, // tri1 + 10, 14, 8, // tri2 + 17, 13, 18 // tri3 +), +gsSPNTriangles_5b( + 15, 18, 13, // tri0 + 14, 13, 19, // tri1 + 13, 17, 12, // tri2 + 19, 8, 14 // tri3 +), +gsSPNTriangles_5b( + 18, 15, 20, // tri0 + 12, 19, 13, // tri1 + 8, 19, 12, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&bul_1_v[67], 26, 0), +gsSPNTrianglesInit_5b( + 36, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 9, 3, 10, // tri0 + 10, 11, 12, // tri1 + 8, 7, 13, // tri2 + 9, 12, 14 // tri3 +), +gsSPNTriangles_5b( + 15, 14, 16, // tri0 + 12, 17, 14, // tri1 + 14, 17, 16, // tri2 + 16, 18, 15 // tri3 +), +gsSPNTriangles_5b( + 18, 19, 7, // tri0 + 6, 15, 18, // tri1 + 20, 9, 15, // tri2 + 14, 15, 9 // tri3 +), +gsSPNTriangles_5b( + 18, 7, 6, // tri0 + 21, 1, 22, // tri1 + 21, 4, 3, // tri2 + 3, 9, 20 // tri3 +), +gsSPNTriangles_5b( + 15, 6, 20, // tri0 + 10, 12, 9, // tri1 + 20, 23, 3, // tri2 + 2, 23, 20 // tri3 +), +gsSPNTriangles_5b( + 8, 2, 6, // tri0 + 5, 24, 10, // tri1 + 16, 19, 18, // tri2 + 22, 1, 0 // tri3 +), +gsSPNTriangles_5b( + 5, 4, 22, // tri0 + 8, 25, 0, // tri1 + 2, 1, 21, // tri2 + 5, 10, 3 // tri3 +), +gsSPNTriangles_5b( + 3, 23, 21, // tri0 + 21, 23, 2, // tri1 + 2, 8, 0, // tri2 + 20, 6, 2 // tri3 +), +gsSPNTriangles_5b( + 22, 4, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&bul_1_v[93], 26, 0), +gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 4, 7 // tri2 +), +gsSPNTriangles_5b( + 3, 8, 4, // tri0 + 9, 10, 11, // tri1 + 2, 6, 7, // tri2 + 1, 6, 2 // tri3 +), +gsSPNTriangles_5b( + 9, 3, 10, // tri0 + 8, 3, 9, // tri1 + 5, 4, 6, // tri2 + 4, 8, 12 // tri3 +), +gsSPNTriangles_5b( + 12, 7, 4, // tri0 + 5, 10, 3, // tri1 + 6, 1, 5, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 14, // tri count + 13, 14, 15, // tri0 + 16, 17, 14, // tri1 + 18, 19, 20 // tri2 +), +gsSPNTriangles_5b( + 21, 22, 15, // tri0 + 23, 21, 14, // tri1 + 23, 14, 17, // tri2 + 15, 14, 21 // tri3 +), +gsSPNTriangles_5b( + 20, 23, 17, // tri0 + 20, 17, 24, // tri1 + 20, 24, 18, // tri2 + 16, 14, 13 // tri3 +), +gsSPNTriangles_5b( + 16, 24, 17, // tri0 + 25, 24, 16, // tri1 + 18, 24, 25, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_bul_model[] = { +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&bul_1_v[155], 5, 0), +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&bul_1_v[160], 16, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 0, 1, 11, // tri0 + 2, 4, 12, // tri1 + 0, 13, 14, // tri2 + 3, 0, 15 // tri3 +), +gsSPNTriangles_5b( + 4, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 20, 19, 18, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_bul_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&bul_1_v[176], 4, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&bul_1_v[180], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 2, 0, 8 // tri2 +), +gsSPNTriangles_5b( + 3, 2, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 1, 3, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_bul_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&bul_1_v[119], 5, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&bul_1_v[124], 16, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 +), +gsSPNTriangles_5b( + 3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_bul_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&bul_1_v[140], 4, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&bul_1_v[144], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_bul_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&bul_1_v[191], 7, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&bul_1_v[198], 20, 7), +gsSPNTrianglesInit_5b( + 13, // tri count + 0, 2, 7, // tri0 + 6, 8, 9, // tri1 + 0, 10, 11 // tri2 +), +gsSPNTriangles_5b( + 1, 12, 5, // tri0 + 1, 13, 14, // tri1 + 2, 16, 15, // tri2 + 5, 17, 18 // tri3 +), +gsSPNTriangles_5b( + 5, 19, 20, // tri0 + 2, 21, 22, // tri1 + 6, 0, 23, // tri2 + 1, 6, 24 // tri3 +), +gsSPNTriangles_5b( + 3, 5, 25, // tri0 + 4, 26, 2, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&bul_1_v[218], 10, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 5, 4, 8, // tri0 + 2, 6, 0, // tri1 + 1, 9, 2, // tri2 + 7, 4, 3 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail1_bul_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&bul_1_v[242], 8, 0), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 0, 4 // tri2 +), +gsSPNTriangles_5b( + 4, 3, 1, // tri0 + 0, 2, 6, // tri1 + 7, 5, 6, // tri2 + 6, 2, 7 // tri3 +), +gsSPNTriangles_5b( + 5, 7, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail2_bul_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&bul_1_v[228], 4, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&bul_1_v[232], 10, 4), +gsSPNTrianglesInit_5b( + 4, // tri count + 2, 1, 4, // tri0 + 3, 2, 5, // tri1 + 0, 3, 6 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 8, // tri count + 8, 9, 10, // tri0 + 11, 9, 12, // tri1 + 12, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 10, 9, 11, // tri0 + 10, 11, 13, // tri1 + 13, 11, 12, // tri2 + 13, 8, 10 // tri3 +), +gsSPNTriangles_5b( + 12, 8, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_bul_model[] = { +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&bul_1_v[290], 5, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&bul_1_v[295], 16, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 2, 3, 5, // tri0 + 0, 2, 6, // tri1 + 3, 8, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 10, 9, // tri0 + 4, 1, 11, // tri1 + 2, 12, 13, // tri2 + 3, 4, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 15, 16, 17, // tri0 + 17, 18, 19, // tri1 + 15, 20, 16 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_bul_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&bul_1_v[311], 6, 0), +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&bul_1_v[317], 13, 6), +gsSPNTrianglesInit_5b( + 9, // tri count + 0, 6, 7, // tri0 + 2, 5, 8, // tri1 + 5, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 5, 1, 11, // tri0 + 0, 3, 12, // tri1 + 4, 2, 13, // tri2 + 3, 4, 14 // tri3 +), +gsSPNTriangles_5b( + 3, 15, 16, // tri0 + 2, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_bul_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&bul_1_v[250], 5, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&bul_1_v[255], 16, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 2, 5, // tri0 + 2, 0, 6, // tri1 + 3, 8, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 10, 9, // tri0 + 1, 4, 11, // tri1 + 2, 12, 13, // tri2 + 4, 3, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 15, 16, 17, // tri0 + 18, 19, 15, // tri1 + 16, 20, 17 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_bul_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&bul_1_v[271], 6, 0), +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&bul_1_v[277], 13, 6), +gsSPNTrianglesInit_5b( + 9, // tri count + 4, 6, 7, // tri0 + 3, 1, 8, // tri1 + 3, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 5, 3, 11, // tri0 + 2, 4, 12, // tri1 + 1, 0, 13, // tri2 + 0, 2, 14 // tri3 +), +gsSPNTriangles_5b( + 2, 15, 16, // tri0 + 1, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx base_bul_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&bul_1_v[330], 30, 0), +gsSPNTrianglesInit_5b( + 3, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 1, 6 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), +gsSPNTrianglesInit_5b( + 14, // tri count + 7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 13, 14, 15 // tri2 +), +gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 9, 19, 7, // tri1 + 20, 11, 21, // tri2 + 20, 21, 17 // tri3 +), +gsSPNTriangles_5b( + 12, 15, 14, // tri0 + 11, 20, 12, // tri1 + 8, 7, 13, // tri2 + 13, 15, 8 // tri3 +), +gsSPNTriangles_5b( + 21, 18, 17, // tri0 + 14, 10, 12, // tri1 + 18, 22, 16, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 3, // tri count + 23, 24, 25, // tri0 + 26, 27, 28, // tri1 + 29, 24, 23 // tri2 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_bul_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_bul_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_bul_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_bul_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_bul_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_bul_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 75,0,-475 }, + /* joint 11 */ { tail1_bul_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_bul_model, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_bul_model, 3, cKF_JOINT_FLAG_DISP_OPA, 325,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,-450,0 }, + /* joint 15 */ { Larm1_bul_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_bul_model, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,450,0 }, + /* joint 18 */ { Rarm1_bul_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_bul_model, 1, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 675,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,600 }, + /* joint 23 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_bul_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1600,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_bul_1 = { 26, 13, cKF_je_r_bul_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/cat_1.c b/src/data/npc/model/mdl/cat_1.c new file mode 100644 index 00000000..a5fb7382 --- /dev/null +++ b/src/data/npc/model/mdl/cat_1.c @@ -0,0 +1,651 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx cat_1_v[] = { +#include "assets/npc/mdl/cat_1_v.inc" +}; + +static Gfx head_cat_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&cat_1_v[0], 6, 0), +gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&cat_1_v[6], 13, 6), +gsSPNTrianglesInit_5b( + 9, // tri count + 1, 0, 6, // tri0 + 1, 7, 8, // tri1 + 3, 1, 9 // tri2 +), +gsSPNTriangles_5b( + 4, 11, 10, // tri0 + 5, 4, 12, // tri1 + 5, 13, 0, // tri2 + 0, 15, 14 // tri3 +), +gsSPNTriangles_5b( + 5, 16, 17, // tri0 + 4, 2, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&cat_1_v[19], 31, 0), +gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 0, 2, 4 // tri2 +), +gsSPNTriangles_5b( + 3, 5, 2, // tri0 + 6, 7, 8, // tri1 + 1, 9, 10, // tri2 + 11, 12, 10 // tri3 +), +gsSPNTriangles_5b( + 13, 10, 12, // tri0 + 10, 9, 11, // tri1 + 14, 8, 13, // tri2 + 1, 0, 9 // tri3 +), +gsSPNTriangles_5b( + 14, 13, 12, // tri0 + 8, 7, 13, // tri1 + 14, 15, 8, // tri2 + 7, 10, 13 // tri3 +), +gsSPNTriangles_5b( + 10, 3, 1, // tri0 + 7, 3, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 16, // tri count + 16, 17, 18, // tri0 + 19, 20, 21, // tri1 + 16, 18, 22 // tri2 +), +gsSPNTriangles_5b( + 20, 23, 21, // tri0 + 21, 23, 24, // tri1 + 23, 20, 22, // tri2 + 23, 22, 25 // tri3 +), +gsSPNTriangles_5b( + 26, 16, 22, // tri0 + 23, 27, 24, // tri1 + 23, 25, 27, // tri2 + 24, 28, 21 // tri3 +), +gsSPNTriangles_5b( + 25, 22, 18, // tri0 + 28, 29, 21, // tri1 + 28, 30, 29, // tri2 + 21, 29, 19 // tri3 +), +gsSPNTriangles_5b( + 22, 20, 26, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&cat_1_v[50], 22, 0), +gsSPNTrianglesInit_5b( + 29, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 2, 3 // tri2 +), +gsSPNTriangles_5b( + 6, 3, 7, // tri0 + 3, 2, 8, // tri1 + 8, 2, 9, // tri2 + 8, 9, 10 // tri3 +), +gsSPNTriangles_5b( + 11, 4, 8, // tri0 + 8, 10, 11, // tri1 + 12, 13, 14, // tri2 + 12, 15, 16 // tri3 +), +gsSPNTriangles_5b( + 4, 14, 13, // tri0 + 13, 16, 5, // tri1 + 16, 13, 12, // tri2 + 3, 8, 4 // tri3 +), +gsSPNTriangles_5b( + 7, 3, 5, // tri0 + 5, 17, 18, // tri1 + 5, 4, 13, // tri2 + 16, 15, 17 // tri3 +), +gsSPNTriangles_5b( + 18, 7, 5, // tri0 + 19, 6, 20, // tri1 + 21, 7, 18, // tri2 + 20, 7, 21 // tri3 +), +gsSPNTriangles_5b( + 20, 6, 7, // tri0 + 0, 6, 19, // tri1 + 4, 11, 14, // tri2 + 2, 1, 9 // tri3 +), +gsSPNTriangles_5b( + 16, 17, 5, // tri0 + 0, 2, 6, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_cat_model[] = { +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&cat_1_v[108], 5, 0), +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&cat_1_v[113], 16, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 5, 3, // tri0 + 1, 4, 6, // tri1 + 1, 8, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 10, 9, // tri0 + 0, 1, 11, // tri1 + 2, 12, 13, // tri2 + 2, 0, 14 // tri3 +), +gsSPNTriangles_5b( + 2, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 20, 18, 17, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_cat_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&cat_1_v[129], 4, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&cat_1_v[133], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 1, 2, 4, // tri0 + 1, 5, 6, // tri1 + 0, 8, 7 // tri2 +), +gsSPNTriangles_5b( + 2, 9, 10, // tri0 + 3, 0, 11, // tri1 + 0, 1, 12, // tri2 + 0, 13, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_cat_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&cat_1_v[72], 5, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&cat_1_v[77], 16, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 +), +gsSPNTriangles_5b( + 3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_cat_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&cat_1_v[93], 4, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&cat_1_v[97], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 4, 5, // tri0 + 1, 6, 7, // tri1 + 1, 3, 8 // tri2 +), +gsSPNTriangles_5b( + 3, 0, 9, // tri0 + 3, 11, 10, // tri1 + 0, 13, 12, // tri2 + 0, 2, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_cat_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&cat_1_v[144], 7, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&cat_1_v[151], 20, 7), +gsSPNTrianglesInit_5b( + 13, // tri count + 0, 7, 3, // tri0 + 1, 2, 8, // tri1 + 4, 6, 9 // tri2 +), +gsSPNTriangles_5b( + 6, 5, 10, // tri0 + 3, 11, 12, // tri1 + 2, 13, 14, // tri2 + 2, 15, 16 // tri3 +), +gsSPNTriangles_5b( + 3, 18, 17, // tri0 + 4, 19, 20, // tri1 + 4, 21, 2, // tri2 + 5, 22, 23 // tri3 +), +gsSPNTriangles_5b( + 6, 24, 25, // tri0 + 5, 3, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail1_cat_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&cat_1_v[195], 8, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 2, 1, 5 // tri2 +), +gsSPNTriangles_5b( + 4, 6, 3, // tri0 + 5, 7, 2, // tri1 + 2, 4, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail2_cat_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&cat_1_v[171], 4, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&cat_1_v[175], 20, 4), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 4, 5, // tri0 + 1, 6, 7, // tri1 + 3, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 3, 2, 10, // tri0 + 2, 1, 11, // tri1 + 0, 3, 12, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 9, // tri count + 13, 14, 15, // tri0 + 16, 14, 17, // tri1 + 18, 17, 19 // tri2 +), +gsSPNTriangles_5b( + 17, 14, 13, // tri0 + 13, 19, 17, // tri1 + 17, 18, 20, // tri2 + 21, 15, 14 // tri3 +), +gsSPNTriangles_5b( + 15, 22, 13, // tri0 + 19, 23, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_cat_model[] = { +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&cat_1_v[256], 5, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&cat_1_v[261], 20, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 6, 5, // tri0 + 0, 8, 7, // tri1 + 3, 2, 9 // tri2 +), +gsSPNTriangles_5b( + 0, 4, 10, // tri0 + 0, 11, 12, // tri1 + 1, 0, 13, // tri2 + 2, 1, 14 // tri3 +), +gsSPNTriangles_5b( + 2, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 4, // tri count + 17, 18, 19, // tri0 + 20, 21, 22, // tri1 + 18, 23, 21 // tri2 +), +gsSPNTriangles_5b( + 21, 24, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_cat_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&cat_1_v[281], 6, 0), +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&cat_1_v[287], 22, 6), +gsSPNTrianglesInit_5b( + 7, // tri count + 2, 7, 6, // tri0 + 0, 1, 8, // tri1 + 0, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 1, 5, 11, // tri0 + 4, 2, 12, // tri1 + 1, 13, 14, // tri2 + 0, 15, 3 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 16, 17, 18, // tri0 + 18, 19, 16, // tri1 + 20, 21, 22 // tri2 +), +gsSPNTriangles_5b( + 23, 18, 17, // tri0 + 23, 17, 21, // tri1 + 21, 20, 23, // tri2 + 22, 24, 20 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsSPNTrianglesInit_5b( + 1, // tri count + 25, 26, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_cat_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&cat_1_v[203], 5, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&cat_1_v[208], 20, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 1, 0, 5, // tri0 + 2, 7, 6, // tri1 + 2, 1, 8 // tri2 +), +gsSPNTriangles_5b( + 3, 2, 9, // tri0 + 2, 10, 11, // tri1 + 0, 13, 12, // tri2 + 0, 4, 14 // tri3 +), +gsSPNTriangles_5b( + 0, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 4, // tri count + 17, 18, 19, // tri0 + 20, 21, 18, // tri1 + 20, 22, 23 // tri2 +), +gsSPNTriangles_5b( + 18, 24, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_cat_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&cat_1_v[228], 6, 0), +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&cat_1_v[234], 22, 6), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 6, // tri0 + 0, 7, 8, // tri1 + 1, 10, 9 // tri2 +), +gsSPNTriangles_5b( + 0, 2, 11, // tri0 + 3, 12, 13, // tri1 + 0, 14, 1, // tri2 + 5, 1, 15 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 16, 17, 18, // tri0 + 19, 20, 21, // tri1 + 16, 22, 17 // tri2 +), +gsSPNTriangles_5b( + 21, 23, 19, // tri0 + 24, 16, 18, // tri1 + 18, 20, 24, // tri2 + 20, 19, 24 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsSPNTrianglesInit_5b( + 1, // tri count + 25, 26, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx base_cat_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&cat_1_v[309], 14, 0), +gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 4, 7, 5, // tri0 + 8, 0, 9, // tri1 + 10, 5, 7, // tri2 + 6, 11, 12 // tri3 +), +gsSPNTriangles_5b( + 9, 0, 13, // tri0 + 12, 3, 6, // tri1 + 12, 11, 8, // tri2 + 8, 9, 12 // tri3 +), +gsSPNTriangles_5b( + 0, 2, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_cat_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_cat_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_cat_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_cat_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_cat_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_cat_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 75,0,-475 }, + /* joint 11 */ { tail1_cat_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_cat_model, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_cat_model, 3, cKF_JOINT_FLAG_DISP_OPA, 325,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,-450,0 }, + /* joint 15 */ { Larm1_cat_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_cat_model, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,450,0 }, + /* joint 18 */ { Rarm1_cat_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_cat_model, 1, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 675,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,600 }, + /* joint 23 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_cat_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1200,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_cat_1 = { 26, 13, cKF_je_r_cat_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/cbr_1.c b/src/data/npc/model/mdl/cbr_1.c new file mode 100644 index 00000000..c207becd --- /dev/null +++ b/src/data/npc/model/mdl/cbr_1.c @@ -0,0 +1,748 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx cbr_1_v[] = { +#include "assets/npc/mdl/cbr_1_v.inc" +}; + +static Gfx head_cbr_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&cbr_1_v[0], 30, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 3, 4, 5 // tri2 +), +gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 7, 3, 5, // tri1 + 3, 7, 0, // tri2 + 0, 2, 3 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 30, // tri count + 8, 9, 10, // tri0 + 11, 12, 8, // tri1 + 13, 14, 15 // tri2 +), +gsSPNTriangles_5b( + 16, 17, 10, // tri0 + 17, 11, 8, // tri1 + 12, 13, 9, // tri2 + 8, 12, 9 // tri3 +), +gsSPNTriangles_5b( + 16, 18, 19, // tri0 + 18, 9, 15, // tri1 + 20, 21, 22, // tri2 + 20, 23, 24 // tri3 +), +gsSPNTriangles_5b( + 24, 25, 17, // tri0 + 26, 11, 27, // tri1 + 24, 23, 25, // tri2 + 25, 27, 11 // tri3 +), +gsSPNTriangles_5b( + 28, 23, 22, // tri0 + 16, 20, 24, // tri1 + 25, 11, 17, // tri2 + 23, 28, 27 // tri3 +), +gsSPNTriangles_5b( + 23, 27, 25, // tri0 + 21, 20, 16, // tri1 + 22, 23, 20, // tri2 + 22, 29, 28 // tri3 +), +gsSPNTriangles_5b( + 15, 9, 13, // tri0 + 24, 17, 16, // tri1 + 10, 18, 16, // tri2 + 15, 19, 18 // tri3 +), +gsSPNTriangles_5b( + 10, 9, 18, // tri0 + 17, 8, 10, // tri1 + 12, 11, 26, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&cbr_1_v[30], 10, 0), +gsSPNTrianglesInit_5b( + 3, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 4, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 3, // tri count + 5, 6, 7, // tri0 + 5, 7, 8, // tri1 + 8, 9, 5 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&cbr_1_v[40], 32, 0), +gsSPNTrianglesInit_5b( + 42, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 11, 4, // tri1 + 12, 13, 14, // tri2 + 15, 16, 14 // tri3 +), +gsSPNTriangles_5b( + 1, 0, 17, // tri0 + 11, 10, 18, // tri1 + 5, 15, 19, // tri2 + 20, 7, 21 // tri3 +), +gsSPNTriangles_5b( + 22, 19, 15, // tri0 + 4, 20, 5, // tri1 + 12, 21, 9, // tri2 + 6, 19, 23 // tri3 +), +gsSPNTriangles_5b( + 15, 5, 20, // tri0 + 2, 1, 24, // tri1 + 23, 10, 3, // tri2 + 17, 4, 11 // tri3 +), +gsSPNTriangles_5b( + 9, 8, 25, // tri0 + 17, 0, 7, // tri1 + 24, 1, 26, // tri2 + 14, 27, 15 // tri3 +), +gsSPNTriangles_5b( + 15, 27, 22, // tri0 + 20, 16, 15, // tri1 + 21, 16, 20, // tri2 + 9, 21, 7 // tri3 +), +gsSPNTriangles_5b( + 19, 22, 23, // tri0 + 23, 18, 10, // tri1 + 3, 6, 23, // tri2 + 28, 26, 11 // tri3 +), +gsSPNTriangles_5b( + 17, 7, 20, // tri0 + 0, 2, 8, // tri1 + 4, 17, 20, // tri2 + 25, 2, 29 // tri3 +), +gsSPNTriangles_5b( + 30, 9, 25, // tri0 + 19, 6, 5, // tri1 + 4, 3, 10, // tri2 + 16, 21, 12 // tri3 +), +gsSPNTriangles_5b( + 12, 14, 16, // tri0 + 28, 31, 24, // tri1 + 24, 26, 28, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&cbr_1_v[72], 20, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 0, 4, 5 // tri2 +), +gsSPNTriangles_5b( + 5, 4, 6, // tri0 + 7, 8, 9, // tri1 + 8, 10, 11, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 12, 13, 14, // tri0 + 15, 12, 16, // tri1 + 17, 15, 16 // tri2 +), +gsSPNTriangles_5b( + 18, 19, 17, // tri0 + 14, 18, 16, // tri1 + 16, 12, 14, // tri2 + 17, 16, 18 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&cbr_1_v[92], 20, 0), +gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 5, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 8, 9, 5, // tri0 + 10, 3, 11, // tri1 + 6, 11, 12, // tri2 + 13, 14, 15 // tri3 +), +gsSPNTriangles_5b( + 10, 6, 5, // tri0 + 3, 16, 17, // tri1 + 12, 7, 6, // tri2 + 14, 13, 9 // tri3 +), +gsSPNTriangles_5b( + 13, 2, 18, // tri0 + 9, 8, 14, // tri1 + 2, 1, 4, // tri2 + 18, 9, 13 // tri3 +), +gsSPNTriangles_5b( + 4, 16, 3, // tri0 + 11, 6, 10, // tri1 + 17, 11, 3, // tri2 + 11, 17, 19 // tri3 +), +gsSPNTriangles_5b( + 2, 13, 0, // tri0 + 15, 0, 13, // tri1 + 3, 10, 18, // tri2 + 5, 18, 10 // tri3 +), +gsSPNTriangles_5b( + 5, 9, 18, // tri0 + 3, 18, 2, // tri1 + 19, 12, 11, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_cbr_model[] = { +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&cbr_1_v[112], 4, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 60), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&cbr_1_v[116], 16, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 0, 4, // tri0 + 0, 5, 6, // tri1 + 0, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 3, 9, 10, // tri0 + 3, 11, 12, // tri1 + 0, 1, 13, // tri2 + 1, 3, 14 // tri3 +), +gsSPNTriangles_5b( + 3, 2, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 16, 17, 18, // tri0 + 19, 18, 17, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_cbr_model[] = { +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&cbr_1_v[132], 4, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 60), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&cbr_1_v[136], 12, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 3, 5, 4, // tri0 + 1, 7, 6, // tri1 + 3, 8, 1 // tri2 +), +gsSPNTriangles_5b( + 0, 1, 9, // tri0 + 2, 10, 11, // tri1 + 3, 2, 12, // tri2 + 0, 13, 2 // tri3 +), +gsSPNTriangles_5b( + 0, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_cbr_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&cbr_1_v[200], 4, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 60), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&cbr_1_v[204], 16, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 3, 4, // tri0 + 0, 2, 5, // tri1 + 0, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 3, 1, 8, // tri0 + 0, 9, 10, // tri1 + 3, 11, 12, // tri2 + 1, 0, 13 // tri3 +), +gsSPNTriangles_5b( + 3, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_cbr_model[] = { +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&cbr_1_v[220], 6, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 60), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&cbr_1_v[226], 12, 6), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 6, 7, // tri0 + 2, 8, 5, // tri1 + 2, 10, 9 // tri2 +), +gsSPNTriangles_5b( + 5, 12, 11, // tri0 + 3, 13, 1, // tri1 + 5, 14, 4, // tri2 + 4, 15, 16 // tri3 +), +gsSPNTriangles_5b( + 2, 0, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_cbr_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&cbr_1_v[148], 9, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 252, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&cbr_1_v[157], 22, 9), +gsSPNTrianglesInit_5b( + 15, // tri count + 7, 0, 9, // tri0 + 1, 4, 10, // tri1 + 6, 7, 11 // tri2 +), +gsSPNTriangles_5b( + 4, 13, 12, // tri0 + 3, 15, 14, // tri1 + 0, 2, 16, // tri2 + 5, 17, 18 // tri3 +), +gsSPNTriangles_5b( + 2, 19, 20, // tri0 + 5, 6, 21, // tri1 + 6, 22, 23, // tri2 + 3, 5, 24 // tri3 +), +gsSPNTriangles_5b( + 0, 25, 26, // tri0 + 4, 8, 27, // tri1 + 8, 3, 28, // tri2 + 8, 29, 30 // tri3 +), +gsSPVertex(&cbr_1_v[179], 21, 9), +gsSPNTrianglesInit_5b( + 2, // tri count + 7, 9, 10, // tri0 + 7, 11, 12, // tri1 + 0, 0, 0 // tri2 +), +gsSPNTrianglesInit_5b( + 15, // tri count + 13, 14, 15, // tri0 + 14, 13, 16, // tri1 + 17, 18, 19 // tri2 +), +gsSPNTriangles_5b( + 20, 16, 13, // tri0 + 21, 22, 17, // tri1 + 20, 23, 16, // tri2 + 24, 23, 20 // tri3 +), +gsSPNTriangles_5b( + 25, 19, 18, // tri0 + 23, 18, 16, // tri1 + 22, 21, 26, // tri2 + 18, 17, 16 // tri3 +), +gsSPNTriangles_5b( + 22, 27, 28, // tri0 + 17, 22, 16, // tri1 + 19, 29, 17, // tri2 + 17, 29, 21 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail1_cbr_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 60, 60), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&cbr_1_v[306], 6, 0), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 1, 0, 3, // tri1 + 4, 0, 2 // tri2 +), +gsSPNTriangles_5b( + 0, 4, 3, // tri0 + 1, 5, 2, // tri1 + 5, 1, 3, // tri2 + 5, 4, 2 // tri3 +), +gsSPNTriangles_5b( + 4, 5, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_cbr_model[] = { +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&cbr_1_v[272], 5, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 60), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&cbr_1_v[277], 19, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 5, 3, // tri0 + 1, 0, 6, // tri1 + 3, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 1, 9, 10, // tri0 + 3, 11, 12, // tri1 + 4, 13, 0, // tri2 + 1, 15, 14 // tri3 +), +gsSPNTriangles_5b( + 2, 1, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 4, // tri count + 17, 18, 19, // tri0 + 20, 19, 18, // tri1 + 21, 22, 20 // tri2 +), +gsSPNTriangles_5b( + 18, 23, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_cbr_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 60), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&cbr_1_v[296], 10, 0), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 4, 6, 7, // tri0 + 5, 8, 9, // tri1 + 5, 9, 6, // tri2 + 8, 0, 3 // tri3 +), +gsSPNTriangles_5b( + 8, 3, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_cbr_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&cbr_1_v[238], 5, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 60), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&cbr_1_v[243], 19, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 4, 5, 6, // tri0 + 2, 7, 8, // tri1 + 4, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 4, 11, 0, // tri0 + 3, 12, 4, // tri1 + 3, 2, 13, // tri2 + 2, 1, 14 // tri3 +), +gsSPNTriangles_5b( + 2, 16, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 4, // tri count + 17, 18, 19, // tri0 + 20, 18, 21, // tri1 + 18, 17, 21 // tri2 +), +gsSPNTriangles_5b( + 20, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_cbr_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 60), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&cbr_1_v[262], 10, 0), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 4, 6, 7, // tri0 + 5, 0, 3, // tri1 + 5, 3, 6, // tri2 + 1, 8, 9 // tri3 +), +gsSPNTriangles_5b( + 1, 9, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx base_cbr_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 60, 60), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&cbr_1_v[312], 16, 0), +gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 6, 5, 7, // tri0 + 7, 8, 9, // tri1 + 10, 11, 9, // tri2 + 3, 2, 11 // tri3 +), +gsSPNTriangles_5b( + 12, 1, 13, // tri0 + 11, 2, 14, // tri1 + 2, 1, 14, // tri2 + 6, 12, 4 // tri3 +), +gsSPNTriangles_5b( + 12, 6, 14, // tri0 + 6, 15, 14, // tri1 + 15, 9, 14, // tri2 + 9, 8, 10 // tri3 +), +gsSPNTriangles_5b( + 9, 11, 14, // tri0 + 11, 10, 3, // tri1 + 0, 13, 1, // tri2 + 1, 12, 14 // tri3 +), +gsSPNTriangles_5b( + 13, 4, 12, // tri0 + 9, 15, 7, // tri1 + 7, 15, 6, // tri2 + 0, 0, 0 // tri3 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 252, 124), +gsSPVertex(&cbr_1_v[328], 18, 0), +gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 5, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 13, 7, 11, // tri2 + 14, 12, 11 // tri3 +), +gsSPNTriangles_5b( + 7, 13, 5, // tri0 + 11, 8, 14, // tri1 + 10, 14, 8, // tri2 + 4, 15, 2 // tri3 +), +gsSPNTriangles_5b( + 2, 15, 0, // tri0 + 3, 10, 9, // tri1 + 16, 17, 1, // tri2 + 1, 0, 16 // tri3 +), +gsSPNTriangles_5b( + 9, 4, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_cbr_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_cbr_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-525,0 }, + /* joint 3 */ { Lfoot1_cbr_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_cbr_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,525,0 }, + /* joint 7 */ { Rfoot1_cbr_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_cbr_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,-932 }, + /* joint 11 */ { tail1_cbr_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_cbr_model, 3, cKF_JOINT_FLAG_DISP_OPA, 426,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 950,-1000,100 }, + /* joint 15 */ { Larm1_cbr_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_cbr_model, 0, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 950,1000,100 }, + /* joint 18 */ { Rarm1_cbr_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_cbr_model, 1, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 1295,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 1050,0,1650 }, + /* joint 23 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_cbr_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 2000,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_cbr_1 = { 26, 12, cKF_je_r_cbr_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/chn_1.c b/src/data/npc/model/mdl/chn_1.c new file mode 100644 index 00000000..71aeef73 --- /dev/null +++ b/src/data/npc/model/mdl/chn_1.c @@ -0,0 +1,850 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx chn_1_v[] = { +#include "assets/npc/mdl/chn_1_v.inc" +}; + +static Gfx head_chn_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&chn_1_v[11], 8, 0), +gsSPMatrix(0x0D000380, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&chn_1_v[19], 21, 8), +gsSPNTrianglesInit_5b( + 14, // tri count + 6, 8, 9, // tri0 + 6, 4, 10, // tri1 + 3, 11, 12 // tri2 +), +gsSPNTriangles_5b( + 3, 2, 13, // tri0 + 1, 14, 15, // tri1 + 1, 0, 16, // tri2 + 7, 17, 18 // tri3 +), +gsSPNTriangles_5b( + 7, 6, 19, // tri0 + 0, 20, 21, // tri1 + 0, 7, 22, // tri2 + 2, 23, 24 // tri3 +), +gsSPNTriangles_5b( + 2, 1, 25, // tri0 + 5, 26, 27, // tri1 + 5, 3, 28, // tri2 + 0, 0, 0 // tri3 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&chn_1_v[40], 27, 0), +gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 0, 2, 5 // tri2 +), +gsSPNTriangles_5b( + 6, 7, 2, // tri0 + 7, 6, 8, // tri1 + 9, 10, 11, // tri2 + 12, 13, 14 // tri3 +), +gsSPNTriangles_5b( + 5, 2, 7, // tri0 + 5, 7, 11, // tri1 + 11, 10, 12, // tri2 + 8, 1, 0 // tri3 +), +gsSPNTriangles_5b( + 15, 11, 7, // tri0 + 4, 8, 0, // tri1 + 7, 8, 4, // tri2 + 14, 13, 9 // tri3 +), +gsSPNTriangles_5b( + 14, 0, 5, // tri0 + 11, 12, 5, // tri1 + 5, 12, 14, // tri2 + 11, 15, 16 // tri3 +), +gsSPNTriangles_5b( + 16, 15, 14, // tri0 + 11, 16, 9, // tri1 + 9, 16, 14, // tri2 + 0, 14, 15 // tri3 +), +gsSPNTriangles_5b( + 7, 4, 3, // tri0 + 15, 3, 0, // tri1 + 7, 3, 15, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 17, 18, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 2, // tri count + 20, 21, 22, // tri0 + 22, 21, 23, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 24, 25, 26, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPVertex(&chn_1_v[67], 23, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 8, // tri count + 5, 6, 7, // tri0 + 8, 9, 6, // tri1 + 6, 10, 8 // tri2 +), +gsSPNTriangles_5b( + 6, 9, 7, // tri0 + 8, 10, 11, // tri1 + 12, 7, 13, // tri2 + 14, 8, 11 // tri3 +), +gsSPNTriangles_5b( + 13, 15, 12, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 2, // tri count + 16, 17, 18, // tri0 + 16, 18, 19, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 20, 21, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPVertex(&chn_1_v[90], 31, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 7, 0, 8, // tri0 + 7, 8, 9, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 2, // tri count + 10, 11, 12, // tri0 + 12, 13, 14, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 11, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 21, 22, 17 // tri2 +), +gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 20, 15, 18, // tri1 + 26, 27, 28, // tri2 + 25, 29, 23 // tri3 +), +gsSPNTriangles_5b( + 28, 30, 26, // tri0 + 24, 23, 26, // tri1 + 17, 18, 15, // tri2 + 17, 16, 21 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&chn_1_v[121], 24, 0), +gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 8, 3, 9, // tri0 + 10, 11, 2, // tri1 + 12, 13, 9, // tri2 + 2, 11, 0 // tri3 +), +gsSPNTriangles_5b( + 5, 14, 3, // tri0 + 15, 13, 12, // tri1 + 9, 3, 12, // tri2 + 7, 2, 1 // tri3 +), +gsSPNTriangles_5b( + 8, 16, 4, // tri0 + 12, 2, 15, // tri1 + 2, 12, 10, // tri2 + 10, 12, 3 // tri3 +), +gsSPNTriangles_5b( + 3, 14, 10, // tri0 + 15, 2, 7, // tri1 + 4, 3, 8, // tri2 + 0, 0, 0 // tri3 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 3, // tri count + 17, 18, 19, // tri0 + 19, 18, 20, // tri1 + 21, 22, 23 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx mouth_chn_model[] = { +gsSPMatrix(0x0D000380, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&chn_1_v[0], 4, 0), +gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&chn_1_v[4], 7, 4), +gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 4, // tri0 + 2, 6, 5, // tri1 + 0, 8, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 2, 9, // tri0 + 3, 0, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_chn_model[] = { +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&chn_1_v[176], 4, 0), +gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&chn_1_v[180], 15, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 1, 3, 6, // tri1 + 3, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 9, 10, // tri0 + 2, 11, 0, // tri1 + 3, 12, 13, // tri2 + 3, 0, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 15, 16, 17, // tri0 + 18, 15, 17, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_chn_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&chn_1_v[195], 3, 0), +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&chn_1_v[198], 9, 3), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 3, // tri0 + 2, 0, 4, // tri1 + 0, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 1, 7, 8, // tri0 + 1, 2, 9, // tri1 + 2, 10, 11, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_chn_model[] = { +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&chn_1_v[145], 4, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&chn_1_v[149], 15, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 3, 1, 6, // tri1 + 3, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 0, 9, 10, // tri0 + 0, 11, 2, // tri1 + 3, 12, 13, // tri2 + 0, 3, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 15, 16, 17, // tri0 + 15, 17, 18, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_chn_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&chn_1_v[164], 3, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&chn_1_v[167], 9, 3), +gsSPNTrianglesInit_5b( + 6, // tri count + 1, 0, 3, // tri0 + 0, 2, 4, // tri1 + 0, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 1, 7, 8, // tri0 + 2, 1, 9, // tri1 + 2, 10, 11, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_chn_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&chn_1_v[207], 7, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&chn_1_v[214], 24, 7), +gsSPNTrianglesInit_5b( + 15, // tri count + 3, 7, 8, // tri0 + 4, 9, 1, // tri1 + 5, 0, 10 // tri2 +), +gsSPNTriangles_5b( + 2, 11, 12, // tri0 + 1, 13, 14, // tri1 + 0, 15, 16, // tri2 + 0, 17, 18 // tri3 +), +gsSPNTriangles_5b( + 1, 19, 20, // tri0 + 2, 21, 22, // tri1 + 2, 23, 0, // tri2 + 3, 24, 25 // tri3 +), +gsSPNTriangles_5b( + 3, 1, 26, // tri0 + 2, 6, 27, // tri1 + 6, 3, 28, // tri2 + 1, 29, 30 // tri3 +), +gsSPVertex(&chn_1_v[238], 17, 7), +gsSPNTrianglesInit_5b( + 1, // tri count + 0, 7, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPNTrianglesInit_5b( + 13, // tri count + 9, 10, 11, // tri0 + 12, 13, 14, // tri1 + 15, 11, 16 // tri2 +), +gsSPNTriangles_5b( + 17, 12, 18, // tri0 + 19, 17, 20, // tri1 + 21, 22, 23, // tri2 + 21, 19, 22 // tri3 +), +gsSPNTriangles_5b( + 23, 16, 21, // tri0 + 16, 23, 15, // tri1 + 18, 20, 17, // tri2 + 20, 22, 19 // tri3 +), +gsSPNTriangles_5b( + 11, 15, 9, // tri0 + 14, 18, 12, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail1_chn_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&chn_1_v[255], 27, 0), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 2, 4, 0 // tri2 +), +gsSPNTriangles_5b( + 3, 5, 6, // tri0 + 7, 8, 4, // tri1 + 2, 9, 7, // tri2 + 10, 7, 9 // tri3 +), +gsSPNTriangles_5b( + 10, 8, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 11, 12, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 3, // tri count + 14, 15, 16, // tri0 + 16, 17, 18, // tri1 + 19, 20, 18 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 21, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 24, 25, 26, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPVertex(&chn_1_v[282], 10, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 8, 9, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot3_chn_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&chn_1_v[364], 4, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&chn_1_v[368], 20, 4), +gsSPNTrianglesInit_5b( + 6, // tri count + 1, 4, 5, // tri0 + 1, 6, 3, // tri1 + 3, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 0, 9, // tri0 + 0, 3, 10, // tri1 + 2, 11, 12, // tri2 + 0, 0, 0 // tri3 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 6, // tri count + 13, 14, 15, // tri0 + 16, 17, 15, // tri1 + 15, 17, 18 // tri2 +), +gsSPNTriangles_5b( + 15, 18, 13, // tri0 + 15, 19, 20, // tri1 + 15, 20, 16, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 21, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_chn_model[] = { +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&chn_1_v[388], 5, 0), +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&chn_1_v[393], 14, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 2, 5, 6, // tri0 + 3, 4, 7, // tri1 + 4, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 0, 2, 10, // tri0 + 4, 1, 11, // tri1 + 3, 12, 13, // tri2 + 4, 14, 15 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 16, 17, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_chn_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&chn_1_v[407], 4, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&chn_1_v[411], 25, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 3, 4, // tri0 + 0, 5, 1, // tri1 + 0, 7, 6 // tri2 +), +gsSPNTriangles_5b( + 2, 1, 8, // tri0 + 2, 9, 10, // tri1 + 1, 11, 12, // tri2 + 3, 2, 13 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 14, 15, 16, // tri0 + 17, 18, 19, // tri1 + 16, 20, 14 // tri2 +), +gsSPNTriangles_5b( + 21, 22, 23, // tri0 + 21, 23, 24, // tri1 + 19, 25, 17, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsSPNTrianglesInit_5b( + 1, // tri count + 26, 27, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot3_chn_model[] = { +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&chn_1_v[292], 4, 0), +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&chn_1_v[296], 20, 4), +gsSPNTrianglesInit_5b( + 6, // tri count + 3, 4, 5, // tri0 + 3, 6, 1, // tri1 + 3, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 0, 2, 9, // tri0 + 3, 0, 10, // tri1 + 2, 11, 12, // tri2 + 0, 0, 0 // tri3 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 6, // tri count + 13, 14, 15, // tri0 + 13, 16, 17, // tri1 + 18, 16, 13 // tri2 +), +gsSPNTriangles_5b( + 15, 18, 13, // tri0 + 19, 20, 13, // tri1 + 17, 19, 13, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 21, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_chn_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&chn_1_v[316], 5, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&chn_1_v[321], 14, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 2, 5, 6, // tri0 + 4, 3, 7, // tri1 + 4, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 2, 0, 10, // tri0 + 1, 4, 11, // tri1 + 3, 12, 13, // tri2 + 4, 14, 15 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 16, 17, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_chn_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&chn_1_v[335], 4, 0), +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&chn_1_v[339], 25, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 0, 4, // tri0 + 1, 5, 0, // tri1 + 0, 7, 6 // tri2 +), +gsSPNTriangles_5b( + 1, 2, 8, // tri0 + 2, 9, 10, // tri1 + 1, 11, 12, // tri2 + 2, 3, 13 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 14, 15, 16, // tri0 + 17, 18, 19, // tri1 + 16, 20, 14 // tri2 +), +gsSPNTriangles_5b( + 21, 22, 23, // tri0 + 21, 23, 24, // tri1 + 19, 25, 17, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsSPNTrianglesInit_5b( + 1, // tri count + 26, 27, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx base_chn_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&chn_1_v[436], 14, 0), +gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 2, 1 // tri2 +), +gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 2, 7, // tri1 + 10, 0, 2, // tri2 + 4, 11, 12 // tri3 +), +gsSPNTriangles_5b( + 5, 4, 13, // tri0 + 4, 12, 13, // tri1 + 3, 5, 9, // tri2 + 9, 8, 3 // tri3 +), +gsSPNTriangles_5b( + 9, 10, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_chn_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_chn_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-700,0 }, + /* joint 3 */ { Lfoot1_chn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_chn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { Lfoot3_chn_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,700,0 }, + /* joint 7 */ { Rfoot1_chn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_chn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { Rfoot3_chn_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 300,0,-950 }, + /* joint 11 */ { tail1_chn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_chn_model, 3, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,-1150,0 }, + /* joint 15 */ { Larm1_chn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_chn_model, 0, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,1150,0 }, + /* joint 18 */ { Rarm1_chn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_chn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 999,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 750,0,850 }, + /* joint 23 */ { mouth_chn_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_chn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1000,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_chn_1 = { 26, 15, cKF_je_r_chn_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/cml_1.c b/src/data/npc/model/mdl/cml_1.c new file mode 100644 index 00000000..650bcad3 --- /dev/null +++ b/src/data/npc/model/mdl/cml_1.c @@ -0,0 +1,803 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx cml_1_v[] = { +#include "assets/npc/mdl/cml_1_v.inc" +}; + +static Gfx head_cml_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&cml_1_v[26], 6, 0), +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&cml_1_v[32], 16, 6), +gsSPNTrianglesInit_5b( + 11, // tri count + 2, 7, 6, // tri0 + 4, 1, 8, // tri1 + 2, 3, 9 // tri2 +), +gsSPNTriangles_5b( + 4, 10, 11, // tri0 + 1, 5, 12, // tri1 + 5, 2, 13, // tri2 + 5, 14, 15 // tri3 +), +gsSPNTriangles_5b( + 1, 17, 16, // tri0 + 3, 18, 19, // tri1 + 0, 4, 20, // tri2 + 3, 0, 21 // tri3 +), +gsSPVertex(&cml_1_v[48], 32, 0), +gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 2, 9, 3, // tri1 + 10, 11, 8, // tri2 + 2, 1, 12 // tri3 +), +gsSPNTriangles_5b( + 13, 0, 3, // tri0 + 14, 12, 15, // tri1 + 16, 17, 13, // tri2 + 13, 18, 19 // tri3 +), +gsSPNTriangles_5b( + 13, 19, 20, // tri0 + 12, 21, 15, // tri1 + 20, 16, 13, // tri2 + 14, 22, 12 // tri3 +), +gsSPNTriangles_5b( + 12, 23, 21, // tri0 + 24, 8, 25, // tri1 + 26, 4, 27, // tri2 + 28, 29, 30 // tri3 +), +gsSPVertex(&cml_1_v[79], 32, 0), +gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 4, 7, 8, // tri0 + 4, 8, 0, // tri1 + 7, 9, 10, // tri2 + 11, 12, 13 // tri3 +), +gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 17, 18, 11, // tri1 + 14, 19, 20, // tri2 + 17, 21, 18 // tri3 +), +gsSPNTriangles_5b( + 22, 23, 24, // tri0 + 11, 9, 17, // tri1 + 9, 6, 17, // tri2 + 23, 12, 24 // tri3 +), +gsSPNTriangles_5b( + 25, 26, 27, // tri0 + 28, 16, 15, // tri1 + 10, 13, 29, // tri2 + 17, 6, 30 // tri3 +), +gsSPVertex(&cml_1_v[110], 32, 0), +gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 3, 1, 10, // tri1 + 11, 12, 13, // tri2 + 6, 5, 14 // tri3 +), +gsSPNTriangles_5b( + 0, 15, 10, // tri0 + 16, 17, 18, // tri1 + 19, 20, 21, // tri2 + 19, 21, 18 // tri3 +), +gsSPNTriangles_5b( + 22, 13, 14, // tri0 + 19, 23, 14, // tri1 + 10, 4, 3, // tri2 + 6, 14, 13 // tri3 +), +gsSPNTriangles_5b( + 16, 9, 8, // tri0 + 22, 14, 23, // tri1 + 24, 3, 6, // tri2 + 25, 26, 27 // tri3 +), +gsSPNTriangles_5b( + 28, 29, 30, // tri0 + 28, 30, 8, // tri1 + 22, 30, 29, // tri2 + 27, 26, 11 // tri3 +), +gsSPVertex(&cml_1_v[141], 29, 0), +gsSPNTrianglesInit_5b( + 1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 3, // tri count + 3, 4, 5, // tri0 + 6, 3, 5, // tri1 + 5, 7, 6 // tri2 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 8, 9, 10, // tri0 + 10, 11, 8, // tri1 + 12, 11, 10 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 253, 255, 255, 255), +gsSPNTrianglesInit_5b( + 8, // tri count + 13, 14, 15, // tri0 + 16, 17, 18, // tri1 + 18, 17, 15 // tri2 +), +gsSPNTriangles_5b( + 16, 19, 20, // tri0 + 18, 21, 16, // tri1 + 22, 15, 14, // tri2 + 15, 22, 18 // tri3 +), +gsSPNTriangles_5b( + 19, 16, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000180, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPNTrianglesInit_5b( + 4, // tri count + 23, 24, 25, // tri0 + 24, 26, 25, // tri1 + 24, 27, 26 // tri2 +), +gsSPNTriangles_5b( + 28, 27, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&cml_1_v[170], 5, 0), +gsSPNTrianglesInit_5b( + 3, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 4, 3, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx mouth_cml_model[] = { +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&cml_1_v[0], 6, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&cml_1_v[6], 20, 6), +gsSPNTrianglesInit_5b( + 6, // tri count + 1, 5, 6, // tri0 + 1, 7, 8, // tri1 + 0, 3, 9 // tri2 +), +gsSPNTriangles_5b( + 3, 10, 11, // tri0 + 5, 0, 12, // tri1 + 5, 13, 14, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 2, // tri count + 4, 2, 15, // tri0 + 2, 17, 16, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 3, // tri count + 18, 19, 20, // tri0 + 20, 21, 22, // tri1 + 20, 22, 18 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 1, // tri count + 23, 24, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_cml_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&cml_1_v[209], 4, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&cml_1_v[213], 16, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 4, 5, // tri0 + 3, 6, 7, // tri1 + 3, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 0, 1, 10, // tri0 + 1, 3, 11, // tri1 + 0, 12, 13, // tri2 + 2, 0, 14 // tri3 +), +gsSPNTriangles_5b( + 3, 2, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 16, 17, 18, // tri0 + 19, 18, 17, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_cml_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&cml_1_v[229], 3, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&cml_1_v[232], 11, 3), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 2, 3, // tri0 + 2, 5, 4, // tri1 + 1, 7, 6 // tri2 +), +gsSPNTriangles_5b( + 2, 1, 8, // tri0 + 1, 0, 9, // tri1 + 0, 10, 11, // tri2 + 2, 12, 13 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_cml_model[] = { +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&cml_1_v[175], 4, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&cml_1_v[179], 16, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 4, 5, // tri0 + 3, 6, 7, // tri1 + 3, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 10, // tri0 + 3, 1, 11, // tri1 + 0, 12, 13, // tri2 + 0, 2, 14 // tri3 +), +gsSPNTriangles_5b( + 2, 3, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_cml_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&cml_1_v[195], 3, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&cml_1_v[198], 11, 3), +gsSPNTrianglesInit_5b( + 7, // tri count + 2, 0, 3, // tri0 + 2, 5, 4, // tri1 + 1, 7, 6 // tri2 +), +gsSPNTriangles_5b( + 1, 2, 8, // tri0 + 0, 1, 9, // tri1 + 0, 10, 11, // tri2 + 2, 12, 13 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_cml_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&cml_1_v[243], 8, 0), +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0005C0, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&cml_1_v[251], 24, 8), +gsSPNTrianglesInit_5b( + 16, // tri count + 7, 4, 8, // tri0 + 2, 9, 10, // tri1 + 0, 11, 12 // tri2 +), +gsSPNTriangles_5b( + 5, 13, 14, // tri0 + 4, 2, 15, // tri1 + 5, 16, 0, // tri2 + 5, 17, 18 // tri3 +), +gsSPNTriangles_5b( + 6, 19, 20, // tri0 + 3, 6, 21, // tri1 + 3, 22, 5, // tri2 + 7, 23, 24 // tri3 +), +gsSPNTriangles_5b( + 7, 25, 6, // tri0 + 1, 26, 27, // tri1 + 2, 1, 28, // tri2 + 1, 0, 29 // tri3 +), +gsSPNTriangles_5b( + 3, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&cml_1_v[275], 26, 0), +gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 2, 3, 4 // tri2 +), +gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 5, 7, 8, // tri1 + 9, 10, 11, // tri2 + 1, 0, 12 // tri3 +), +gsSPNTriangles_5b( + 13, 6, 11, // tri0 + 12, 0, 14, // tri1 + 15, 12, 16, // tri2 + 11, 10, 17 // tri3 +), +gsSPNTriangles_5b( + 17, 13, 11, // tri0 + 6, 13, 16, // tri1 + 10, 3, 15, // tri2 + 14, 7, 16 // tri3 +), +gsSPNTriangles_5b( + 14, 16, 12, // tri0 + 16, 7, 6, // tri1 + 15, 3, 1, // tri2 + 11, 6, 5 // tri3 +), +gsSPNTriangles_5b( + 4, 3, 10, // tri0 + 4, 10, 9, // tri1 + 8, 7, 14, // tri2 + 8, 14, 18 // tri3 +), +gsSPNTriangles_5b( + 18, 14, 0, // tri0 + 16, 13, 17, // tri1 + 16, 17, 15, // tri2 + 15, 17, 10 // tri3 +), +gsSPNTriangles_5b( + 1, 12, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 3, // tri count + 19, 20, 21, // tri0 + 22, 23, 24, // tri1 + 19, 25, 20 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsSPVertex(&cml_1_v[301], 30, 0), +gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 2, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 7, 5, 2, // tri0 + 2, 8, 9, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 3, // tri count + 10, 11, 12, // tri0 + 10, 12, 13, // tri1 + 11, 14, 12 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0004C0, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsSPNTrianglesInit_5b( + 5, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 20, 21, 17 // tri2 +), +gsSPNTriangles_5b( + 22, 23, 17, // tri0 + 17, 16, 24, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 3, // tri count + 25, 26, 27, // tri0 + 28, 25, 27, // tri1 + 28, 27, 29 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsSPVertex(&cml_1_v[331], 28, 0), +gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 5, 6, 2 // tri2 +), +gsSPNTriangles_5b( + 2, 7, 8, // tri0 + 9, 10, 2, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 3, // tri count + 11, 12, 13, // tri0 + 12, 14, 15, // tri1 + 12, 15, 13 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 5, // tri count + 16, 17, 18, // tri0 + 19, 20, 21, // tri1 + 18, 22, 23 // tri2 +), +gsSPNTriangles_5b( + 24, 25, 18, // tri0 + 19, 26, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000580, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&cml_1_v[359], 26, 0), +gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 2, // tri count + 4, 5, 6, // tri0 + 7, 5, 4, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0005C0, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 20, // tri count + 8, 9, 10, // tri0 + 8, 10, 11, // tri1 + 12, 13, 14 // tri2 +), +gsSPNTriangles_5b( + 12, 14, 15, // tri0 + 9, 8, 16, // tri1 + 16, 15, 14, // tri2 + 17, 18, 19 // tri3 +), +gsSPNTriangles_5b( + 11, 10, 17, // tri0 + 20, 10, 21, // tri1 + 22, 21, 9, // tri2 + 20, 17, 10 // tri3 +), +gsSPNTriangles_5b( + 17, 20, 18, // tri0 + 23, 24, 14, // tri1 + 19, 25, 13, // tri2 + 25, 23, 14 // tri3 +), +gsSPNTriangles_5b( + 19, 13, 17, // tri0 + 14, 24, 16, // tri1 + 16, 24, 9, // tri2 + 17, 13, 12 // tri3 +), +gsSPNTriangles_5b( + 9, 24, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_cml_model[] = { +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&cml_1_v[410], 4, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&cml_1_v[414], 14, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 0, 4, // tri0 + 0, 6, 5, // tri1 + 2, 8, 7 // tri2 +), +gsSPNTriangles_5b( + 0, 1, 9, // tri0 + 1, 2, 10, // tri1 + 2, 3, 11, // tri2 + 1, 12, 13 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 14, 15, 16, // tri0 + 17, 15, 14, // tri1 + 17, 16, 15 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_cml_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&cml_1_v[428], 7, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 3 // tri2 +), +gsSPNTriangles_5b( + 5, 0, 6, // tri0 + 2, 1, 4, // tri1 + 2, 6, 0, // tri2 + 3, 2, 4 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_cml_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&cml_1_v[385], 4, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&cml_1_v[389], 14, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 3, 4, // tri0 + 0, 6, 5, // tri1 + 2, 8, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 9, // tri0 + 2, 1, 10, // tri1 + 3, 2, 11, // tri2 + 1, 12, 13 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 14, 15, 16, // tri0 + 16, 15, 17, // tri1 + 15, 14, 17 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_cml_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&cml_1_v[403], 7, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 3 // tri2 +), +gsSPNTriangles_5b( + 6, 2, 3, // tri0 + 4, 1, 0, // tri1 + 2, 6, 0, // tri2 + 4, 0, 5 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx base_cml_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000740, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 252, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&cml_1_v[435], 16, 0), +gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 +), +gsSPNTriangles_5b( + 3, 7, 6, // tri0 + 4, 6, 8, // tri1 + 8, 9, 4, // tri2 + 10, 9, 8 // tri3 +), +gsSPNTriangles_5b( + 2, 5, 11, // tri0 + 2, 11, 12, // tri1 + 13, 14, 15, // tri2 + 15, 12, 13 // tri3 +), +gsSPNTriangles_5b( + 12, 11, 13, // tri0 + 3, 2, 1, // tri1 + 3, 5, 2, // tri2 + 13, 10, 14 // tri3 +), +gsSPNTriangles_5b( + 9, 13, 11, // tri0 + 7, 3, 1, // tri1 + 9, 10, 13, // tri2 + 9, 11, 5 // tri3 +), +gsSPNTriangles_5b( + 9, 5, 4, // tri0 + 12, 15, 0, // tri1 + 2, 12, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_cml_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_cml_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_cml_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_cml_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_cml_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_cml_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 75,0,-475 }, + /* joint 11 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_cml_model, 3, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 750,-350,0 }, + /* joint 15 */ { Larm1_cml_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_cml_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 750,350,0 }, + /* joint 18 */ { Rarm1_cml_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_cml_model, 1, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 1100,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 100,0,1050 }, + /* joint 23 */ { mouth_cml_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_cml_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 600,0,500 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_cml_1 = { 26, 12, cKF_je_r_cml_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/cow_1.c b/src/data/npc/model/mdl/cow_1.c new file mode 100644 index 00000000..37401c11 --- /dev/null +++ b/src/data/npc/model/mdl/cow_1.c @@ -0,0 +1,742 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx cow_1_v[] = { +#include "assets/npc/mdl/cow_1_v.inc" +}; + +static Gfx head_cow_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&cow_1_v[0], 28, 0), +gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 5, 7 // tri2 +), +gsSPNTriangles_5b( + 4, 8, 5, // tri0 + 6, 9, 10, // tri1 + 3, 11, 12, // tri2 + 6, 7, 9 // tri3 +), +gsSPNTriangles_5b( + 4, 13, 8, // tri0 + 0, 2, 3, // tri1 + 2, 11, 3, // tri2 + 10, 1, 0 // tri3 +), +gsSPNTriangles_5b( + 13, 4, 3, // tri0 + 3, 12, 13, // tri1 + 10, 0, 6, // tri2 + 5, 6, 0 // tri3 +), +gsSPNTriangles_5b( + 3, 5, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 16, // tri count + 14, 15, 16, // tri0 + 17, 18, 19, // tri1 + 20, 17, 21 // tri2 +), +gsSPNTriangles_5b( + 17, 22, 18, // tri0 + 23, 24, 21, // tri1 + 25, 26, 19, // tri2 + 24, 20, 21 // tri3 +), +gsSPNTriangles_5b( + 22, 27, 18, // tri0 + 19, 14, 16, // tri1 + 19, 26, 14, // tri2 + 16, 15, 23 // tri3 +), +gsSPNTriangles_5b( + 19, 18, 27, // tri0 + 27, 25, 19, // tri1 + 21, 16, 23, // tri2 + 16, 21, 17 // tri3 +), +gsSPNTriangles_5b( + 16, 17, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 48, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&cow_1_v[28], 27, 0), +gsSPNTrianglesInit_5b( + 38, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 4, 3 // tri2 +), +gsSPNTriangles_5b( + 6, 7, 5, // tri0 + 1, 8, 2, // tri1 + 6, 9, 10, // tri2 + 10, 11, 2 // tri3 +), +gsSPNTriangles_5b( + 1, 0, 12, // tri0 + 0, 4, 13, // tri1 + 13, 4, 5, // tri2 + 14, 15, 16 // tri3 +), +gsSPNTriangles_5b( + 17, 12, 13, // tri0 + 5, 16, 13, // tri1 + 3, 9, 5, // tri2 + 3, 11, 10 // tri3 +), +gsSPNTriangles_5b( + 18, 19, 12, // tri0 + 20, 17, 16, // tri1 + 13, 16, 17, // tri2 + 12, 17, 18 // tri3 +), +gsSPNTriangles_5b( + 18, 21, 19, // tri0 + 22, 18, 17, // tri1 + 20, 21, 22, // tri2 + 15, 21, 20 // tri3 +), +gsSPNTriangles_5b( + 16, 15, 20, // tri0 + 22, 21, 18, // tri1 + 17, 20, 22, // tri2 + 0, 11, 3 // tri3 +), +gsSPNTriangles_5b( + 10, 9, 3, // tri0 + 2, 11, 0, // tri1 + 5, 9, 6, // tri2 + 12, 19, 23 // tri3 +), +gsSPNTriangles_5b( + 16, 5, 7, // tri0 + 6, 24, 7, // tri1 + 13, 12, 0, // tri2 + 7, 25, 14 // tri3 +), +gsSPNTriangles_5b( + 23, 26, 1, // tri0 + 1, 12, 23, // tri1 + 14, 16, 7, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&cow_1_v[55], 29, 0), +gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 2, 4, 0 // tri2 +), +gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 4, 3, // tri1 + 7, 6, 9, // tri2 + 5, 10, 11 // tri3 +), +gsSPNTriangles_5b( + 5, 11, 6, // tri0 + 7, 12, 5, // tri1 + 9, 6, 8, // tri2 + 8, 11, 4 // tri3 +), +gsSPNTriangles_5b( + 10, 0, 4, // tri0 + 10, 4, 11, // tri1 + 8, 6, 11, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 5, // tri count + 13, 14, 15, // tri0 + 16, 17, 18, // tri1 + 18, 19, 16 // tri2 +), +gsSPNTriangles_5b( + 15, 17, 20, // tri0 + 20, 13, 15, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPSetPrimColor(0, 128, 253, 255, 255, 255), +gsSPNTrianglesInit_5b( + 5, // tri count + 21, 22, 23, // tri0 + 24, 25, 26, // tri1 + 25, 27, 26 // tri2 +), +gsSPNTriangles_5b( + 25, 28, 27, // tri0 + 23, 24, 21, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&cow_1_v[84], 28, 0), +gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 1 // tri2 +), +gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 1, 0, 5, // tri2 + 1, 12, 11 // tri3 +), +gsSPNTriangles_5b( + 3, 2, 8, // tri0 + 5, 0, 3, // tri1 + 2, 3, 0, // tri2 + 8, 7, 3 // tri3 +), +gsSPNTriangles_5b( + 4, 3, 7, // tri0 + 11, 2, 1, // tri1 + 12, 1, 6, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 16, // tri count + 13, 14, 15, // tri0 + 16, 17, 18, // tri1 + 19, 20, 21 // tri2 +), +gsSPNTriangles_5b( + 14, 22, 23, // tri0 + 21, 15, 19, // tri1 + 20, 17, 16, // tri2 + 23, 19, 14 // tri3 +), +gsSPNTriangles_5b( + 23, 18, 17, // tri0 + 24, 25, 22, // tri1 + 18, 26, 27, // tri2 + 24, 22, 13 // tri3 +), +gsSPNTriangles_5b( + 16, 18, 27, // tri0 + 14, 19, 15, // tri1 + 17, 20, 19, // tri2 + 22, 14, 13 // tri3 +), +gsSPNTriangles_5b( + 17, 19, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_cow_model[] = { +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&cow_1_v[148], 5, 0), +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&cow_1_v[153], 16, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 0, 1, 11, // tri0 + 2, 4, 12, // tri1 + 0, 13, 14, // tri2 + 3, 0, 15 // tri3 +), +gsSPNTriangles_5b( + 4, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 20, 19, 18, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_cow_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&cow_1_v[169], 4, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&cow_1_v[173], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 2, 0, 8 // tri2 +), +gsSPNTriangles_5b( + 3, 2, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 1, 3, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_cow_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&cow_1_v[112], 5, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&cow_1_v[117], 16, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 +), +gsSPNTriangles_5b( + 3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_cow_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&cow_1_v[133], 4, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&cow_1_v[137], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_cow_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&cow_1_v[184], 7, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 252, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&cow_1_v[191], 20, 7), +gsSPNTrianglesInit_5b( + 13, // tri count + 4, 7, 1, // tri0 + 5, 0, 8, // tri1 + 2, 6, 9 // tri2 +), +gsSPNTriangles_5b( + 6, 3, 10, // tri0 + 1, 11, 12, // tri1 + 0, 13, 14, // tri2 + 0, 15, 16 // tri3 +), +gsSPNTriangles_5b( + 1, 18, 17, // tri0 + 2, 19, 20, // tri1 + 2, 21, 0, // tri2 + 3, 22, 23 // tri3 +), +gsSPNTriangles_5b( + 6, 24, 25, // tri0 + 3, 1, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&cow_1_v[211], 11, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 8, 1, 9, // tri0 + 10, 6, 0, // tri1 + 2, 1, 8, // tri2 + 7, 3, 5 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail1_cow_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&cow_1_v[236], 8, 0), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 0, 4 // tri2 +), +gsSPNTriangles_5b( + 4, 3, 1, // tri0 + 0, 2, 6, // tri1 + 7, 5, 6, // tri2 + 6, 2, 7 // tri3 +), +gsSPNTriangles_5b( + 5, 7, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail2_cow_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&cow_1_v[222], 4, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&cow_1_v[226], 10, 4), +gsSPNTrianglesInit_5b( + 4, // tri count + 2, 1, 4, // tri0 + 3, 2, 5, // tri1 + 0, 3, 6 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 8, // tri count + 8, 9, 10, // tri0 + 11, 9, 12, // tri1 + 12, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 10, 9, 11, // tri0 + 10, 11, 13, // tri1 + 13, 11, 12, // tri2 + 13, 8, 10 // tri3 +), +gsSPNTriangles_5b( + 12, 8, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_cow_model[] = { +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&cow_1_v[293], 5, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&cow_1_v[298], 17, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 0, 5, // tri0 + 0, 7, 6, // tri1 + 2, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 0, 1, 10, // tri0 + 1, 2, 11, // tri1 + 2, 4, 12, // tri2 + 1, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 15, 16, 17, // tri0 + 18, 19, 15, // tri1 + 20, 17, 21 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_cow_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&cow_1_v[315], 4, 0), +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 252, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&cow_1_v[319], 22, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 3, 4, // tri0 + 0, 5, 1, // tri1 + 1, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 3, 2, 8, // tri0 + 2, 9, 10, // tri1 + 2, 1, 11, // tri2 + 0, 13, 12 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 14, 15, 16, // tri0 + 14, 16, 17, // tri1 + 17, 18, 14 // tri2 +), +gsSPNTriangles_5b( + 15, 19, 20, // tri0 + 21, 22, 18, // tri1 + 20, 16, 15, // tri2 + 17, 21, 18 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 252, 124), +gsSPNTrianglesInit_5b( + 1, // tri count + 23, 24, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_cow_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&cow_1_v[244], 5, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&cow_1_v[249], 17, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 3, 5, // tri0 + 0, 7, 6, // tri1 + 2, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 10, // tri0 + 2, 1, 11, // tri1 + 4, 2, 12, // tri2 + 1, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 15, 16, 17, // tri0 + 17, 18, 19, // tri1 + 20, 15, 21 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_cow_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&cow_1_v[266], 5, 0), +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 252, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&cow_1_v[271], 22, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 5, // tri0 + 4, 6, 7, // tri1 + 3, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 4, 0, 10, // tri0 + 0, 11, 12, // tri1 + 4, 13, 3, // tri2 + 2, 3, 14 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 15, 21, 16 // tri2 +), +gsSPNTriangles_5b( + 20, 22, 18, // tri0 + 23, 15, 17, // tri1 + 17, 19, 23, // tri2 + 19, 18, 23 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 252, 124), +gsSPNTrianglesInit_5b( + 1, // tri count + 24, 25, 26, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx base_cow_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 252, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&cow_1_v[341], 14, 0), +gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 3 // tri2 +), +gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 4, 0, 2, // tri1 + 0, 9, 1, // tri2 + 7, 10, 11 // tri3 +), +gsSPNTriangles_5b( + 7, 11, 8, // tri0 + 10, 12, 11, // tri1 + 3, 0, 4, // tri2 + 13, 11, 12 // tri3 +), +gsSPNTriangles_5b( + 8, 6, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_cow_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_cow_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_cow_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_cow_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_cow_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_cow_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 75,0,-475 }, + /* joint 11 */ { tail1_cow_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_cow_model, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_cow_model, 3, cKF_JOINT_FLAG_DISP_OPA, 325,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,-450,0 }, + /* joint 15 */ { Larm1_cow_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_cow_model, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,450,0 }, + /* joint 18 */ { Rarm1_cow_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_cow_model, 1, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 675,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,600 }, + /* joint 23 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_cow_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1800,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_cow_1 = { 26, 13, cKF_je_r_cow_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/crd_1.c b/src/data/npc/model/mdl/crd_1.c new file mode 100644 index 00000000..4a0e62f8 --- /dev/null +++ b/src/data/npc/model/mdl/crd_1.c @@ -0,0 +1,774 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx crd_1_v[] = { +#include "assets/npc/mdl/crd_1_v.inc" +}; + +static Gfx head_crd_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000180, G_IM_FMT_CI, 16, 48, 15, GX_MIRROR, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 188), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&crd_1_v[49], 32, 0), +gsSPNTrianglesInit_5b( + 45, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 1 // tri2 +), +gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 8, 5, 9, // tri1 + 11, 12, 13, // tri2 + 6, 14, 7 // tri3 +), +gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 13, 18, 11, // tri1 + 15, 17, 6, // tri2 + 7, 2, 1 // tri3 +), +gsSPNTriangles_5b( + 9, 19, 10, // tri0 + 5, 8, 3, // tri1 + 2, 20, 0, // tri2 + 21, 12, 22 // tri3 +), +gsSPNTriangles_5b( + 12, 11, 22, // tri0 + 8, 12, 21, // tri1 + 15, 22, 16, // tri2 + 23, 24, 16 // tri3 +), +gsSPNTriangles_5b( + 11, 25, 23, // tri0 + 1, 0, 3, // tri1 + 1, 3, 8, // tri2 + 12, 8, 10 // tri3 +), +gsSPNTriangles_5b( + 16, 24, 26, // tri0 + 17, 16, 27, // tri1 + 28, 25, 29, // tri2 + 29, 25, 11 // tri3 +), +gsSPNTriangles_5b( + 28, 26, 24, // tri0 + 23, 25, 28, // tri1 + 6, 1, 15, // tri2 + 10, 13, 12 // tri3 +), +gsSPNTriangles_5b( + 7, 14, 30, // tri0 + 5, 4, 31, // tri1 + 30, 20, 2, // tri2 + 2, 7, 30 // tri3 +), +gsSPNTriangles_5b( + 31, 19, 9, // tri0 + 9, 5, 31, // tri1 + 21, 15, 1, // tri2 + 1, 8, 21 // tri3 +), +gsSPNTriangles_5b( + 22, 15, 21, // tri0 + 28, 24, 23, // tri1 + 16, 22, 23, // tri2 + 23, 22, 11 // tri3 +), +gsSPNTriangles_5b( + 11, 18, 29, // tri0 + 26, 27, 16, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&crd_1_v[81], 18, 0), +gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 +), +gsSPNTriangles_5b( + 0, 2, 7, // tri0 + 5, 4, 1, // tri1 + 7, 2, 8, // tri2 + 9, 10, 11 // tri3 +), +gsSPNTriangles_5b( + 11, 12, 9, // tri0 + 6, 13, 14, // tri1 + 14, 15, 6, // tri2 + 11, 16, 12 // tri3 +), +gsSPNTriangles_5b( + 5, 1, 0, // tri0 + 1, 9, 2, // tri1 + 2, 12, 8, // tri2 + 15, 1, 4 // tri3 +), +gsSPNTriangles_5b( + 6, 15, 4, // tri0 + 12, 2, 9, // tri1 + 14, 17, 15, // tri2 + 15, 9, 1 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&crd_1_v[99], 31, 0), +gsSPNTrianglesInit_5b( + 32, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 7, 1, 8, // tri0 + 9, 10, 11, // tri1 + 12, 13, 2, // tri2 + 3, 2, 6 // tri3 +), +gsSPNTriangles_5b( + 10, 14, 15, // tri0 + 11, 16, 17, // tri1 + 10, 15, 11, // tri2 + 11, 17, 9 // tri3 +), +gsSPNTriangles_5b( + 12, 11, 15, // tri0 + 7, 18, 16, // tri1 + 19, 8, 20, // tri2 + 20, 8, 1 // tri3 +), +gsSPNTriangles_5b( + 20, 1, 0, // tri0 + 2, 1, 12, // tri1 + 7, 11, 1, // tri2 + 8, 21, 22 // tri3 +), +gsSPNTriangles_5b( + 13, 15, 2, // tri0 + 1, 11, 12, // tri1 + 2, 15, 14, // tri2 + 15, 13, 12 // tri3 +), +gsSPNTriangles_5b( + 8, 16, 18, // tri0 + 8, 18, 7, // tri1 + 16, 11, 7, // tri2 + 21, 8, 19 // tri3 +), +gsSPNTriangles_5b( + 6, 2, 4, // tri0 + 14, 4, 2, // tri1 + 22, 16, 8, // tri2 + 19, 23, 21 // tri3 +), +gsSPNTriangles_5b( + 16, 22, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), +gsDPSetTileSize(0, 0, 0, 60, 60), +gsSPNTrianglesInit_5b( + 5, // tri count + 24, 25, 26, // tri0 + 26, 25, 27, // tri1 + 25, 28, 29 // tri2 +), +gsSPNTriangles_5b( + 27, 25, 29, // tri0 + 30, 24, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&crd_1_v[130], 10, 0), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 +), +gsSPNTriangles_5b( + 5, 6, 4, // tri0 + 5, 4, 3, // tri1 + 7, 8, 9, // tri2 + 6, 9, 4 // tri3 +), +gsSPNTriangles_5b( + 7, 9, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx mouth_crd_model[] = { +gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&crd_1_v[0], 7, 0), +gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&crd_1_v[7], 22, 7), +gsSPNTrianglesInit_5b( + 8, // tri count + 5, 7, 8, // tri0 + 6, 5, 9, // tri1 + 6, 10, 11 // tri2 +), +gsSPNTriangles_5b( + 4, 12, 13, // tri0 + 0, 6, 14, // tri1 + 5, 15, 16, // tri2 + 5, 4, 17 // tri3 +), +gsSPNTriangles_5b( + 4, 3, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), +gsDPSetTileSize(0, 0, 0, 60, 60), +gsSPNTrianglesInit_5b( + 2, // tri count + 2, 19, 20, // tri0 + 1, 21, 2, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 3, // tri count + 22, 23, 24, // tri0 + 25, 26, 27, // tri1 + 26, 28, 27 // tri2 +), +gsSPVertex(&crd_1_v[29], 20, 0), +gsSPNTrianglesInit_5b( + 3, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 7, 8, 9, // tri0 + 10, 11, 7, // tri1 + 7, 9, 12 // tri2 +), +gsSPNTriangles_5b( + 8, 13, 9, // tri0 + 10, 14, 11, // tri1 + 12, 10, 7, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), +gsDPSetTileSize(0, 0, 0, 60, 60), +gsSPNTrianglesInit_5b( + 3, // tri count + 15, 16, 17, // tri0 + 16, 18, 17, // tri1 + 18, 19, 17 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_crd_model[] = { +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&crd_1_v[176], 5, 0), +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&crd_1_v[181], 16, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 5, 3, // tri0 + 1, 4, 6, // tri1 + 1, 8, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 10, 9, // tri0 + 0, 1, 11, // tri1 + 2, 12, 13, // tri2 + 2, 0, 14 // tri3 +), +gsSPNTriangles_5b( + 2, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 20, 18, 17, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_crd_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&crd_1_v[197], 4, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&crd_1_v[201], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 2, 4, // tri0 + 0, 5, 6, // tri1 + 1, 8, 7 // tri2 +), +gsSPNTriangles_5b( + 2, 9, 10, // tri0 + 3, 1, 11, // tri1 + 1, 0, 12, // tri2 + 1, 13, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_crd_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&crd_1_v[140], 5, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&crd_1_v[145], 16, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 +), +gsSPNTriangles_5b( + 3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_crd_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&crd_1_v[161], 4, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&crd_1_v[165], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_crd_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&crd_1_v[212], 9, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 252, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&crd_1_v[221], 20, 9), +gsSPNTrianglesInit_5b( + 14, // tri count + 0, 9, 10, // tri0 + 8, 11, 12, // tri1 + 1, 0, 13 // tri2 +), +gsSPNTriangles_5b( + 0, 3, 14, // tri0 + 4, 15, 7, // tri1 + 3, 7, 16, // tri2 + 7, 17, 18 // tri3 +), +gsSPNTriangles_5b( + 3, 20, 19, // tri0 + 8, 2, 21, // tri1 + 5, 8, 22, // tri2 + 5, 23, 24 // tri3 +), +gsSPNTriangles_5b( + 6, 26, 25, // tri0 + 6, 5, 27, // tri1 + 4, 6, 28, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&crd_1_v[241], 17, 0), +gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 +), +gsSPNTriangles_5b( + 1, 6, 2, // tri0 + 7, 8, 9, // tri1 + 7, 10, 11, // tri2 + 0, 12, 13 // tri3 +), +gsSPNTriangles_5b( + 5, 14, 10, // tri0 + 6, 11, 4, // tri1 + 10, 14, 11, // tri2 + 9, 13, 12 // tri3 +), +gsSPNTriangles_5b( + 5, 15, 3, // tri0 + 9, 12, 7, // tri1 + 11, 8, 7, // tri2 + 2, 16, 0 // tri3 +), +gsSPNTriangles_5b( + 13, 1, 0, // tri0 + 4, 14, 5, // tri1 + 1, 9, 6, // tri2 + 8, 6, 9 // tri3 +), +gsSPNTriangles_5b( + 8, 11, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail1_crd_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&crd_1_v[278], 4, 0), +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&crd_1_v[282], 12, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 1, 4, 5, // tri0 + 2, 6, 7, // tri1 + 2, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 1, 10, 11, // tri0 + 3, 1, 12, // tri1 + 1, 0, 13, // tri2 + 2, 3, 14 // tri3 +), +gsSPNTriangles_5b( + 0, 2, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail2_crd_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&crd_1_v[258], 4, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&crd_1_v[262], 16, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 4, 5, // tri0 + 0, 6, 7, // tri1 + 3, 0, 8 // tri2 +), +gsSPNTriangles_5b( + 0, 1, 9, // tri0 + 3, 11, 10, // tri1 + 1, 13, 12, // tri2 + 2, 3, 14 // tri3 +), +gsSPNTriangles_5b( + 1, 2, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 16, 17, 18, // tri0 + 18, 17, 19, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_crd_model[] = { +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&crd_1_v[325], 5, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&crd_1_v[330], 17, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 4, 0, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 1, 2, 10, // tri0 + 2, 3, 11, // tri1 + 3, 4, 12, // tri2 + 2, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_crd_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&crd_1_v[347], 9, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 1, 5, 2 // tri2 +), +gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 6, 8, 0, // tri1 + 0, 2, 6, // tri2 + 4, 5, 1 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_crd_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&crd_1_v[294], 5, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&crd_1_v[299], 17, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 4, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 1, 10, // tri0 + 3, 2, 11, // tri1 + 4, 3, 12, // tri2 + 2, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_crd_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&crd_1_v[316], 9, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 0, 5, 1 // tri2 +), +gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 2, 6, 8, // tri1 + 8, 0, 2, // tri2 + 1, 5, 3 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx base_crd_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&crd_1_v[356], 21, 0), +gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 2, 1, 5 // tri2 +), +gsSPNTriangles_5b( + 4, 0, 2, // tri0 + 1, 6, 7, // tri1 + 8, 3, 9, // tri2 + 8, 9, 10 // tri3 +), +gsSPNTriangles_5b( + 10, 9, 11, // tri0 + 12, 5, 7, // tri1 + 9, 3, 4, // tri2 + 13, 14, 15 // tri3 +), +gsSPNTriangles_5b( + 10, 11, 14, // tri0 + 13, 15, 16, // tri1 + 14, 11, 15, // tri2 + 13, 16, 17 // tri3 +), +gsSPNTriangles_5b( + 17, 16, 18, // tri0 + 1, 0, 19, // tri1 + 1, 19, 6, // tri2 + 19, 0, 20 // tri3 +), +gsSPNTriangles_5b( + 6, 19, 13, // tri0 + 13, 19, 20, // tri1 + 20, 3, 8, // tri2 + 8, 10, 20 // tri3 +), +gsSPNTriangles_5b( + 0, 3, 20, // tri0 + 13, 20, 14, // tri1 + 10, 14, 20, // tri2 + 7, 5, 1 // tri3 +), +gsSPNTriangles_5b( + 17, 6, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_crd_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_crd_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_crd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_crd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_crd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_crd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, -300,0,-700 }, + /* joint 11 */ { tail1_crd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_crd_model, 0, cKF_JOINT_FLAG_DISP_OPA, 399,0,0 }, + /* joint 13 */ { chest_crd_model, 3, cKF_JOINT_FLAG_DISP_OPA, 325,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,-450,0 }, + /* joint 15 */ { Larm1_crd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_crd_model, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,450,0 }, + /* joint 18 */ { Rarm1_crd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_crd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 675,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 650,0,300 }, + /* joint 23 */ { mouth_crd_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_crd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1300,0,-100 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_crd_1 = { 26, 14, cKF_je_r_crd_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/dog_1.c b/src/data/npc/model/mdl/dog_1.c new file mode 100644 index 00000000..48181e62 --- /dev/null +++ b/src/data/npc/model/mdl/dog_1.c @@ -0,0 +1,715 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx dog_1_v[] = { +#include "assets/npc/mdl/dog_1_v.inc" +}; + +static Gfx head_dog_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&dog_1_v[0], 7, 0), +gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&dog_1_v[7], 14, 7), +gsSPNTrianglesInit_5b( + 10, // tri count + 3, 7, 8, // tri0 + 3, 1, 9, // tri1 + 1, 11, 10 // tri2 +), +gsSPNTriangles_5b( + 4, 2, 12, // tri0 + 0, 13, 2, // tri1 + 1, 4, 14, // tri2 + 5, 3, 15 // tri3 +), +gsSPNTriangles_5b( + 0, 16, 17, // tri0 + 0, 6, 18, // tri1 + 2, 19, 20, // tri2 + 0, 0, 0 // tri3 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&dog_1_v[21], 31, 0), +gsSPNTrianglesInit_5b( + 32, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 1, 6 // tri2 +), +gsSPNTriangles_5b( + 7, 0, 8, // tri0 + 9, 4, 3, // tri1 + 5, 10, 8, // tri2 + 11, 12, 13 // tri3 +), +gsSPNTriangles_5b( + 10, 14, 15, // tri0 + 5, 14, 10, // tri1 + 6, 16, 9, // tri2 + 7, 17, 0 // tri3 +), +gsSPNTriangles_5b( + 18, 19, 16, // tri0 + 5, 2, 3, // tri1 + 2, 6, 3, // tri2 + 3, 6, 9 // tri3 +), +gsSPNTriangles_5b( + 18, 16, 6, // tri0 + 13, 14, 4, // tri1 + 4, 11, 13, // tri2 + 6, 1, 18 // tri3 +), +gsSPNTriangles_5b( + 13, 12, 20, // tri0 + 21, 19, 18, // tri1 + 8, 10, 7, // tri2 + 17, 1, 0 // tri3 +), +gsSPNTriangles_5b( + 7, 10, 15, // tri0 + 4, 14, 5, // tri1 + 9, 11, 4, // tri2 + 8, 2, 5 // tri3 +), +gsSPNTriangles_5b( + 8, 0, 2, // tri0 + 20, 14, 13, // tri1 + 18, 1, 21, // tri2 + 21, 1, 17 // tri3 +), +gsSPNTriangles_5b( + 15, 14, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 13, // tri count + 22, 23, 24, // tri0 + 25, 26, 27, // tri1 + 22, 24, 28 // tri2 +), +gsSPNTriangles_5b( + 26, 22, 28, // tri0 + 26, 25, 22, // tri1 + 29, 24, 30, // tri2 + 24, 23, 30 // tri3 +), +gsSPNTriangles_5b( + 27, 28, 29, // tri0 + 30, 22, 29, // tri1 + 22, 25, 29, // tri2 + 30, 23, 22 // tri3 +), +gsSPNTriangles_5b( + 25, 27, 29, // tri0 + 29, 28, 24, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&dog_1_v[52], 21, 0), +gsSPNTrianglesInit_5b( + 27, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 6, 5, // tri1 + 9, 7, 10, // tri2 + 11, 10, 12 // tri3 +), +gsSPNTriangles_5b( + 10, 13, 12, // tri0 + 5, 7, 9, // tri1 + 4, 6, 14, // tri2 + 4, 14, 15 // tri3 +), +gsSPNTriangles_5b( + 16, 17, 13, // tri0 + 17, 16, 18, // tri1 + 14, 6, 0, // tri2 + 18, 16, 8 // tri3 +), +gsSPNTriangles_5b( + 14, 0, 3, // tri0 + 15, 14, 19, // tri1 + 10, 16, 13, // tri2 + 3, 19, 14 // tri3 +), +gsSPNTriangles_5b( + 7, 16, 10, // tri0 + 9, 10, 20, // tri1 + 10, 11, 20, // tri2 + 20, 11, 1 // tri3 +), +gsSPNTriangles_5b( + 1, 0, 20, // tri0 + 20, 0, 9, // tri1 + 6, 9, 0, // tri2 + 7, 8, 16 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&dog_1_v[73], 28, 0), +gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 9, 8, 10, // tri0 + 11, 5, 4, // tri1 + 2, 12, 11, // tri2 + 13, 2, 1 // tri3 +), +gsSPNTriangles_5b( + 8, 5, 12, // tri0 + 11, 12, 5, // tri1 + 5, 7, 3, // tri2 + 8, 9, 6 // tri3 +), +gsSPNTriangles_5b( + 10, 14, 9, // tri0 + 4, 15, 11, // tri1 + 16, 14, 10, // tri2 + 13, 17, 16 // tri3 +), +gsSPNTriangles_5b( + 13, 16, 2, // tri0 + 2, 16, 10, // tri1 + 12, 10, 8, // tri2 + 11, 0, 2 // tri3 +), +gsSPNTriangles_5b( + 18, 1, 0, // tri0 + 0, 11, 15, // tri1 + 8, 7, 5, // tri2 + 10, 12, 2 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 13, // tri count + 19, 20, 21, // tri0 + 19, 22, 23, // tri1 + 19, 24, 22 // tri2 +), +gsSPNTriangles_5b( + 22, 25, 23, // tri0 + 19, 21, 24, // tri1 + 26, 20, 19, // tri2 + 26, 25, 22 // tri3 +), +gsSPNTriangles_5b( + 21, 27, 24, // tri0 + 20, 26, 22, // tri1 + 20, 22, 27, // tri2 + 22, 24, 27 // tri3 +), +gsSPNTriangles_5b( + 23, 26, 19, // tri0 + 23, 25, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_dog_model[] = { +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&dog_1_v[132], 4, 0), +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&dog_1_v[136], 13, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 1, 4, 5, // tri0 + 2, 6, 1, // tri1 + 0, 1, 7 // tri2 +), +gsSPNTriangles_5b( + 3, 8, 9, // tri0 + 0, 11, 10, // tri1 + 3, 0, 12, // tri2 + 3, 13, 2 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 14, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm_dog_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&dog_1_v[149], 3, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&dog_1_v[152], 11, 3), +gsSPNTrianglesInit_5b( + 7, // tri count + 2, 3, 4, // tri0 + 0, 6, 5, // tri1 + 0, 2, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 2, 1, 10, // tri1 + 1, 0, 11, // tri2 + 0, 12, 13 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_dog_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&dog_1_v[101], 4, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&dog_1_v[105], 13, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 1, 4, 5, // tri0 + 1, 6, 2, // tri1 + 1, 0, 7 // tri2 +), +gsSPNTriangles_5b( + 3, 8, 9, // tri0 + 0, 11, 10, // tri1 + 0, 3, 12, // tri2 + 2, 13, 3 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 14, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_dog_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&dog_1_v[118], 3, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&dog_1_v[121], 11, 3), +gsSPNTrianglesInit_5b( + 7, // tri count + 2, 3, 4, // tri0 + 0, 6, 5, // tri1 + 2, 0, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 1, 2, 10, // tri1 + 0, 11, 12, // tri2 + 0, 1, 13 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_dog_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&dog_1_v[163], 32, 0), +gsSPNTrianglesInit_5b( + 29, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 +), +gsSPNTriangles_5b( + 2, 7, 8, // tri0 + 5, 9, 3, // tri1 + 10, 11, 12, // tri2 + 13, 14, 15 // tri3 +), +gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 13, 19, 14, // tri1 + 20, 7, 2, // tri2 + 21, 9, 5 // tri3 +), +gsSPNTriangles_5b( + 22, 1, 0, // tri0 + 23, 6, 3, // tri1 + 10, 12, 24, // tri2 + 24, 25, 10 // tri3 +), +gsSPNTriangles_5b( + 18, 25, 24, // tri0 + 19, 26, 21, // tri1 + 3, 9, 23, // tri2 + 0, 27, 22 // tri3 +), +gsSPNTriangles_5b( + 2, 1, 20, // tri0 + 5, 14, 21, // tri1 + 0, 2, 8, // tri2 + 28, 7, 19 // tri3 +), +gsSPNTriangles_5b( + 29, 7, 28, // tri0 + 22, 27, 30, // tri1 + 20, 19, 7, // tri2 + 8, 27, 0 // tri3 +), +gsSPNTriangles_5b( + 19, 20, 26, // tri0 + 22, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&dog_1_v[195], 12, 0), +gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 9, 10, 11, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail1_dog_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&dog_1_v[234], 15, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 0 // tri2 +), +gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 11, 8, 12, // tri1 + 10, 13, 8, // tri2 + 5, 1, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail2_dog_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&dog_1_v[207], 6, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&dog_1_v[213], 21, 6), +gsSPNTrianglesInit_5b( + 8, // tri count + 1, 6, 7, // tri0 + 3, 8, 9, // tri1 + 4, 10, 11 // tri2 +), +gsSPNTriangles_5b( + 3, 12, 13, // tri0 + 3, 2, 14, // tri1 + 1, 0, 15, // tri2 + 0, 4, 16 // tri3 +), +gsSPNTriangles_5b( + 5, 3, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 4, // tri count + 18, 19, 20, // tri0 + 21, 22, 23, // tri1 + 20, 22, 24 // tri2 +), +gsSPNTriangles_5b( + 25, 18, 26, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_dog_model[] = { +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&dog_1_v[294], 6, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&dog_1_v[300], 18, 6), +gsSPNTrianglesInit_5b( + 9, // tri count + 4, 3, 6, // tri0 + 3, 7, 8, // tri1 + 2, 9, 3 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 10, // tri0 + 2, 11, 12, // tri1 + 0, 13, 14, // tri2 + 1, 15, 2 // tri3 +), +gsSPNTriangles_5b( + 1, 16, 17, // tri0 + 0, 5, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 19, 20, 21, // tri0 + 21, 22, 23, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_dog_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&dog_1_v[318], 6, 0), +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&dog_1_v[324], 15, 6), +gsSPNTrianglesInit_5b( + 10, // tri count + 1, 7, 6, // tri0 + 1, 0, 8, // tri1 + 3, 4, 9 // tri2 +), +gsSPNTriangles_5b( + 4, 10, 11, // tri0 + 2, 1, 12, // tri1 + 2, 13, 14, // tri2 + 0, 15, 16 // tri3 +), +gsSPNTriangles_5b( + 0, 3, 17, // tri0 + 3, 18, 19, // tri1 + 5, 2, 20, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_dog_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&dog_1_v[249], 6, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&dog_1_v[255], 18, 6), +gsSPNTrianglesInit_5b( + 9, // tri count + 3, 4, 6, // tri0 + 3, 7, 8, // tri1 + 3, 9, 2 // tri2 +), +gsSPNTriangles_5b( + 0, 1, 10, // tri0 + 2, 11, 12, // tri1 + 0, 13, 14, // tri2 + 2, 15, 1 // tri3 +), +gsSPNTriangles_5b( + 1, 16, 17, // tri0 + 5, 0, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 19, 20, 21, // tri0 + 22, 23, 19, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_dog_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&dog_1_v[273], 6, 0), +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&dog_1_v[279], 15, 6), +gsSPNTrianglesInit_5b( + 10, // tri count + 1, 7, 6, // tri0 + 0, 1, 8, // tri1 + 4, 3, 9 // tri2 +), +gsSPNTriangles_5b( + 4, 10, 11, // tri0 + 1, 2, 12, // tri1 + 2, 13, 14, // tri2 + 0, 15, 16 // tri3 +), +gsSPNTriangles_5b( + 3, 0, 17, // tri0 + 3, 18, 19, // tri1 + 2, 5, 20, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx base_dog_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&dog_1_v[339], 24, 0), +gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 5, 2, 6 // tri2 +), +gsSPNTriangles_5b( + 7, 5, 6, // tri0 + 2, 5, 8, // tri1 + 9, 4, 3, // tri2 + 8, 0, 2 // tri3 +), +gsSPNTriangles_5b( + 0, 8, 3, // tri0 + 5, 7, 10, // tri1 + 4, 1, 0, // tri2 + 4, 11, 1 // tri3 +), +gsSPNTrianglesInit_5b( + 11, // tri count + 12, 13, 14, // tri0 + 15, 16, 17, // tri1 + 16, 18, 17 // tri2 +), +gsSPNTriangles_5b( + 19, 20, 15, // tri0 + 13, 15, 20, // tri1 + 19, 17, 21, // tri2 + 17, 19, 15 // tri3 +), +gsSPNTriangles_5b( + 13, 16, 15, // tri0 + 20, 14, 13, // tri1 + 12, 14, 22, // tri2 + 23, 22, 14 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_dog_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_dog_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_dog_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_dog_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_dog_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_dog_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 125,0,-675 }, + /* joint 11 */ { tail1_dog_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_dog_model, 0, cKF_JOINT_FLAG_DISP_OPA, 525,0,0 }, + /* joint 13 */ { chest_dog_model, 3, cKF_JOINT_FLAG_DISP_OPA, 626,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,-700,100 }, + /* joint 15 */ { Larm1_dog_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_dog_model, 0, cKF_JOINT_FLAG_DISP_OPA, 426,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,700,100 }, + /* joint 18 */ { Rarm_dog_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_dog_model, 1, cKF_JOINT_FLAG_DISP_OPA, 425,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 275,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 549,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,600 }, + /* joint 23 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_dog_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1325,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_dog_1 = { 26, 13, cKF_je_r_dog_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/duk_1.c b/src/data/npc/model/mdl/duk_1.c new file mode 100644 index 00000000..5fcfdea2 --- /dev/null +++ b/src/data/npc/model/mdl/duk_1.c @@ -0,0 +1,713 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx duk_1_v[] = { +#include "assets/npc/mdl/duk_1_v.inc" +}; + +static Gfx head_duk_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&duk_1_v[26], 19, 0), +gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 0 // tri2 +), +gsSPNTriangles_5b( + 5, 4, 8, // tri0 + 5, 9, 3, // tri1 + 6, 4, 10, // tri2 + 4, 3, 10 // tri3 +), +gsSPNTriangles_5b( + 2, 8, 4, // tri0 + 2, 4, 6, // tri1 + 6, 10, 7, // tri2 + 11, 12, 10 // tri3 +), +gsSPNTriangles_5b( + 11, 10, 3, // tri0 + 10, 12, 7, // tri1 + 7, 12, 13, // tri2 + 7, 13, 14 // tri3 +), +gsSPNTriangles_5b( + 0, 7, 14, // tri0 + 15, 11, 16, // tri1 + 16, 3, 9, // tri2 + 16, 11, 3 // tri3 +), +gsSPNTriangles_5b( + 15, 13, 12, // tri0 + 12, 11, 15, // tri1 + 17, 18, 8, // tri2 + 2, 1, 17 // tri3 +), +gsSPNTriangles_5b( + 17, 8, 2, // tri0 + 2, 6, 0, // tri1 + 8, 18, 5, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&duk_1_v[45], 13, 0), +gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 7, 2, // tri0 + 5, 8, 0, // tri1 + 0, 2, 9, // tri2 + 10, 3, 5 // tri3 +), +gsSPNTriangles_5b( + 10, 5, 9, // tri0 + 4, 11, 8, // tri1 + 4, 8, 5, // tri2 + 9, 2, 12 // tri3 +), +gsSPNTriangles_5b( + 9, 12, 10, // tri0 + 12, 2, 7, // tri1 + 9, 5, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&duk_1_v[58], 27, 0), +gsSPNTrianglesInit_5b( + 27, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 0, 3, 11, // tri1 + 0, 12, 1, // tri2 + 13, 14, 15 // tri3 +), +gsSPNTriangles_5b( + 11, 12, 0, // tri0 + 16, 17, 8, // tri1 + 7, 15, 5, // tri2 + 6, 18, 19 // tri3 +), +gsSPNTriangles_5b( + 19, 20, 7, // tri0 + 4, 8, 10, // tri1 + 10, 3, 4, // tri2 + 16, 8, 4 // tri3 +), +gsSPNTriangles_5b( + 21, 14, 13, // tri0 + 22, 20, 23, // tri1 + 24, 25, 22, // tri2 + 24, 22, 23 // tri3 +), +gsSPNTriangles_5b( + 2, 4, 0, // tri0 + 7, 20, 13, // tri1 + 13, 20, 22, // tri2 + 23, 20, 19 // tri3 +), +gsSPNTriangles_5b( + 15, 7, 13, // tri0 + 19, 7, 6, // tri1 + 4, 2, 16, // tri2 + 19, 18, 26 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&duk_1_v[85], 16, 0), +gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 0, 2, 4, // tri1 + 11, 5, 4, // tri2 + 6, 5, 11 // tri3 +), +gsSPNTriangles_5b( + 10, 7, 6, // tri0 + 11, 12, 6, // tri1 + 4, 12, 11, // tri2 + 12, 4, 2 // tri3 +), +gsSPNTriangles_5b( + 12, 13, 8, // tri0 + 7, 14, 5, // tri1 + 5, 14, 3, // tri2 + 8, 6, 12 // tri3 +), +gsSPNTriangles_5b( + 6, 8, 10, // tri0 + 2, 15, 12, // tri1 + 4, 3, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx mouth_duk_model[] = { +gsSPMatrix(0x0D000380, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&duk_1_v[0], 4, 0), +gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&duk_1_v[4], 22, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 4, // tri0 + 2, 6, 5, // tri1 + 1, 2, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 0, 11, 10, // tri1 + 3, 0, 12, // tri2 + 0, 14, 13 // tri3 +), +gsSPNTrianglesInit_5b( + 10, // tri count + 15, 16, 17, // tri0 + 18, 17, 16, // tri1 + 18, 16, 19 // tri2 +), +gsSPNTriangles_5b( + 20, 21, 22, // tri0 + 20, 22, 23, // tri1 + 16, 15, 24, // tri2 + 24, 19, 16 // tri3 +), +gsSPNTriangles_5b( + 18, 19, 24, // tri0 + 25, 18, 24, // tri1 + 15, 17, 20, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_duk_model[] = { +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&duk_1_v[133], 4, 0), +gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&duk_1_v[137], 15, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 0, 4, // tri0 + 3, 5, 6, // tri1 + 1, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 1, 9, 0, // tri0 + 3, 10, 11, // tri1 + 2, 3, 12, // tri2 + 3, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 15, 16, 17, // tri0 + 18, 15, 17, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_duk_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&duk_1_v[152], 4, 0), +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&duk_1_v[156], 9, 4), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 4, // tri0 + 2, 0, 5, // tri1 + 0, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 1, 3, 10, // tri1 + 3, 11, 12, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_duk_model[] = { +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&duk_1_v[101], 4, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&duk_1_v[105], 15, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 3, 4, // tri0 + 3, 5, 6, // tri1 + 0, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 0, 9, 1, // tri0 + 3, 10, 11, // tri1 + 3, 2, 12, // tri2 + 3, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 15, 16, 17, // tri0 + 15, 17, 18, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_duk_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&duk_1_v[120], 4, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&duk_1_v[124], 9, 4), +gsSPNTrianglesInit_5b( + 6, // tri count + 1, 0, 4, // tri0 + 0, 2, 5, // tri1 + 0, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 3, 1, 10, // tri1 + 3, 11, 12, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_duk_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&duk_1_v[165], 9, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 252, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&duk_1_v[174], 20, 9), +gsSPNTrianglesInit_5b( + 14, // tri count + 0, 9, 10, // tri0 + 8, 11, 12, // tri1 + 1, 0, 13 // tri2 +), +gsSPNTriangles_5b( + 0, 3, 14, // tri0 + 4, 15, 7, // tri1 + 3, 7, 16, // tri2 + 7, 17, 18 // tri3 +), +gsSPNTriangles_5b( + 3, 20, 19, // tri0 + 8, 2, 21, // tri1 + 5, 8, 22, // tri2 + 5, 23, 24 // tri3 +), +gsSPNTriangles_5b( + 6, 26, 25, // tri0 + 6, 5, 27, // tri1 + 4, 6, 28, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&duk_1_v[194], 17, 0), +gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 +), +gsSPNTriangles_5b( + 1, 6, 2, // tri0 + 7, 8, 9, // tri1 + 7, 10, 11, // tri2 + 0, 12, 13 // tri3 +), +gsSPNTriangles_5b( + 5, 14, 10, // tri0 + 6, 11, 4, // tri1 + 10, 14, 11, // tri2 + 9, 13, 12 // tri3 +), +gsSPNTriangles_5b( + 5, 15, 3, // tri0 + 9, 12, 7, // tri1 + 11, 8, 7, // tri2 + 2, 16, 0 // tri3 +), +gsSPNTriangles_5b( + 13, 1, 0, // tri0 + 4, 14, 5, // tri1 + 1, 9, 6, // tri2 + 8, 6, 9 // tri3 +), +gsSPNTriangles_5b( + 8, 11, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail1_duk_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&duk_1_v[211], 6, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&duk_1_v[217], 6, 6), +gsSPNTrianglesInit_5b( + 6, // tri count + 2, 6, 4, // tri0 + 0, 4, 7, // tri1 + 1, 8, 5 // tri2 +), +gsSPNTriangles_5b( + 3, 9, 2, // tri0 + 5, 10, 3, // tri1 + 1, 0, 11, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot3_duk_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&duk_1_v[272], 4, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&duk_1_v[276], 16, 4), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 4, 5, // tri0 + 2, 1, 6, // tri1 + 2, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 0, 3, 9, // tri0 + 1, 0, 10, // tri1 + 0, 11, 12, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 5, // tri count + 13, 14, 15, // tri0 + 16, 17, 13, // tri1 + 13, 15, 16 // tri2 +), +gsSPNTriangles_5b( + 18, 17, 16, // tri0 + 18, 16, 19, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_duk_model[] = { +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&duk_1_v[292], 5, 0), +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&duk_1_v[297], 14, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 2, 5, 6, // tri0 + 2, 3, 7, // tri1 + 3, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 0, 2, 10, // tri0 + 4, 1, 11, // tri1 + 2, 12, 13, // tri2 + 4, 14, 15 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 16, 17, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_duk_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&duk_1_v[311], 10, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 7, 0, 8, // tri0 + 6, 9, 4, // tri1 + 0, 7, 1, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot3_duk_model[] = { +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&duk_1_v[223], 4, 0), +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&duk_1_v[227], 16, 4), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 4, 5, // tri0 + 1, 6, 7, // tri1 + 1, 2, 8 // tri2 +), +gsSPNTriangles_5b( + 3, 0, 9, // tri0 + 0, 1, 10, // tri1 + 0, 11, 12, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 5, // tri count + 13, 14, 15, // tri0 + 15, 16, 17, // tri1 + 17, 13, 15 // tri2 +), +gsSPNTriangles_5b( + 18, 17, 16, // tri0 + 18, 16, 19, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_duk_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&duk_1_v[243], 5, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&duk_1_v[248], 14, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 2, 5, 6, // tri0 + 3, 2, 7, // tri1 + 3, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 2, 0, 10, // tri0 + 1, 4, 11, // tri1 + 2, 12, 13, // tri2 + 4, 14, 15 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 16, 17, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_duk_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&duk_1_v[262], 10, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 7, 3, 8, // tri0 + 6, 9, 4, // tri1 + 2, 8, 3, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx base_duk_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&duk_1_v[321], 23, 0), +gsSPNTrianglesInit_5b( + 30, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 2, 1, 5 // tri2 +), +gsSPNTriangles_5b( + 4, 0, 2, // tri0 + 5, 1, 6, // tri1 + 7, 3, 8, // tri2 + 7, 8, 9 // tri3 +), +gsSPNTriangles_5b( + 9, 8, 10, // tri0 + 5, 6, 11, // tri1 + 12, 5, 11, // tri2 + 8, 3, 4 // tri3 +), +gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 9, 10, 14, // tri1 + 13, 15, 16, // tri2 + 14, 10, 15 // tri3 +), +gsSPNTriangles_5b( + 13, 16, 17, // tri0 + 17, 16, 18, // tri1 + 18, 16, 19, // tri2 + 1, 0, 20 // tri3 +), +gsSPNTriangles_5b( + 1, 20, 21, // tri0 + 20, 0, 22, // tri1 + 21, 20, 13, // tri2 + 13, 20, 22 // tri3 +), +gsSPNTriangles_5b( + 6, 1, 21, // tri0 + 21, 13, 17, // tri1 + 22, 3, 7, // tri2 + 7, 9, 22 // tri3 +), +gsSPNTriangles_5b( + 0, 3, 22, // tri0 + 13, 22, 14, // tri1 + 9, 14, 22, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_duk_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_duk_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_duk_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_duk_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { Lfoot3_duk_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_duk_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_duk_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { Rfoot3_duk_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 75,0,-650 }, + /* joint 11 */ { tail1_duk_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_duk_model, 3, cKF_JOINT_FLAG_DISP_OPA, 325,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,-420,0 }, + /* joint 15 */ { Larm1_duk_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_duk_model, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,420,0 }, + /* joint 18 */ { Rarm1_duk_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_duk_model, 1, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 675,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 600,0,1150 }, + /* joint 23 */ { mouth_duk_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_duk_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1003,0,2 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_duk_1 = { 26, 15, cKF_je_r_duk_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/elp_1.c b/src/data/npc/model/mdl/elp_1.c new file mode 100644 index 00000000..78e02d70 --- /dev/null +++ b/src/data/npc/model/mdl/elp_1.c @@ -0,0 +1,743 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx elp_1_v[] = { +#include "assets/npc/mdl/elp_1_v.inc" +}; + +static Gfx head_elp_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&elp_1_v[27], 6, 0), +gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&elp_1_v[33], 13, 6), +gsSPNTrianglesInit_5b( + 9, // tri count + 5, 6, 3, // tri0 + 1, 7, 8, // tri1 + 0, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 2, 11, 12, // tri0 + 3, 13, 2, // tri1 + 3, 14, 15, // tri2 + 2, 16, 0 // tri3 +), +gsSPNTriangles_5b( + 0, 17, 1, // tri0 + 1, 18, 4, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&elp_1_v[46], 26, 0), +gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 12, 10, 9, // tri1 + 0, 13, 1, // tri2 + 2, 14, 15 // tri3 +), +gsSPNTriangles_5b( + 12, 9, 16, // tri0 + 17, 18, 19, // tri1 + 18, 20, 21, // tri2 + 18, 22, 19 // tri3 +), +gsSPNTriangles_5b( + 18, 23, 20, // tri0 + 24, 9, 25, // tri1 + 5, 6, 8, // tri2 + 11, 25, 9 // tri3 +), +gsSPNTriangles_5b( + 8, 3, 5, // tri0 + 2, 15, 0, // tri1 + 21, 22, 18, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&elp_1_v[72], 24, 0), +gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 8, 0, 3, // tri0 + 9, 7, 6, // tri1 + 5, 6, 3, // tri2 + 5, 10, 6 // tri3 +), +gsSPNTriangles_5b( + 10, 9, 6, // tri0 + 11, 12, 1, // tri1 + 11, 1, 13, // tri2 + 2, 4, 0 // tri3 +), +gsSPNTriangles_5b( + 1, 12, 2, // tri0 + 3, 0, 4, // tri1 + 3, 7, 8, // tri2 + 8, 13, 0 // tri3 +), +gsSPNTriangles_5b( + 13, 1, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 8, // tri count + 14, 15, 16, // tri0 + 17, 18, 19, // tri1 + 19, 18, 20 // tri2 +), +gsSPNTriangles_5b( + 20, 21, 19, // tri0 + 16, 22, 14, // tri1 + 16, 21, 20, // tri2 + 20, 22, 16 // tri3 +), +gsSPNTriangles_5b( + 19, 23, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000180, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 124), +gsSPVertex(&elp_1_v[96], 21, 0), +gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 3, 1, 4, // tri1 + 5, 3, 4 // tri2 +), +gsSPNTriangles_5b( + 4, 1, 6, // tri0 + 7, 8, 6, // tri1 + 9, 7, 10, // tri2 + 4, 11, 5 // tri3 +), +gsSPNTriangles_5b( + 4, 8, 11, // tri0 + 6, 8, 4, // tri1 + 12, 7, 6, // tri2 + 13, 11, 14 // tri3 +), +gsSPNTriangles_5b( + 10, 15, 9, // tri0 + 6, 16, 12, // tri1 + 8, 7, 9, // tri2 + 8, 9, 14 // tri3 +), +gsSPNTriangles_5b( + 8, 14, 11, // tri0 + 15, 17, 9, // tri1 + 17, 18, 14, // tri2 + 1, 16, 6 // tri3 +), +gsSPNTriangles_5b( + 9, 17, 14, // tri0 + 14, 18, 13, // tri1 + 19, 20, 1, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&elp_1_v[117], 16, 0), +gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 6, 0 // tri2 +), +gsSPNTriangles_5b( + 7, 8, 3, // tri0 + 9, 3, 10, // tri1 + 4, 3, 9, // tri2 + 3, 11, 7 // tri3 +), +gsSPNTriangles_5b( + 5, 12, 1, // tri0 + 5, 1, 11, // tri1 + 11, 1, 13, // tri2 + 13, 1, 0 // tri3 +), +gsSPNTriangles_5b( + 3, 8, 10, // tri0 + 14, 10, 8, // tri1 + 1, 12, 15, // tri2 + 3, 5, 11 // tri3 +), +gsSPNTriangles_5b( + 1, 15, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx mouth_elp_model[] = { +gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&elp_1_v[0], 5, 0), +gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&elp_1_v[5], 22, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 1, 2, 5, // tri0 + 0, 1, 6, // tri1 + 4, 0, 7 // tri2 +), +gsSPNTriangles_5b( + 4, 8, 3, // tri0 + 0, 9, 10, // tri1 + 0, 11, 12, // tri2 + 2, 14, 13 // tri3 +), +gsSPNTriangles_5b( + 3, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 6, // tri count + 17, 18, 19, // tri0 + 20, 21, 22, // tri1 + 21, 23, 22 // tri2 +), +gsSPNTriangles_5b( + 22, 24, 20, // tri0 + 25, 20, 24, // tri1 + 23, 21, 26, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_elp_model[] = { +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&elp_1_v[169], 5, 0), +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&elp_1_v[174], 16, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 1, 5, 6, // tri0 + 0, 1, 7, // tri1 + 4, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 4, 2, 10, // tri0 + 1, 4, 11, // tri1 + 3, 12, 13, // tri2 + 4, 14, 15 // tri3 +), +gsSPNTriangles_5b( + 3, 0, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 19, 20, 17, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_elp_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&elp_1_v[190], 4, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&elp_1_v[194], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 2, 1, 4, // tri0 + 2, 5, 6, // tri1 + 0, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 0, 9, 10, // tri0 + 1, 0, 11, // tri1 + 1, 13, 12, // tri2 + 0, 3, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_elp_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&elp_1_v[133], 5, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&elp_1_v[138], 16, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 1, 5, 6, // tri0 + 1, 0, 7, // tri1 + 4, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 2, 4, 10, // tri0 + 4, 1, 11, // tri1 + 3, 12, 13, // tri2 + 4, 14, 15 // tri3 +), +gsSPNTriangles_5b( + 0, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 19, 20, 17, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_elp_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&elp_1_v[154], 4, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&elp_1_v[158], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 1, 2, 4, // tri0 + 2, 5, 6, // tri1 + 0, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 3, 0, 9, // tri0 + 0, 1, 10, // tri1 + 1, 12, 11, // tri2 + 0, 13, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_elp_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&elp_1_v[205], 28, 0), +gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 1 // tri2 +), +gsSPNTriangles_5b( + 2, 1, 7, // tri0 + 2, 7, 8, // tri1 + 9, 10, 3, // tri2 + 9, 3, 11 // tri3 +), +gsSPNTriangles_5b( + 8, 7, 10, // tri0 + 8, 10, 9, // tri1 + 11, 3, 5, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 14, // tri count + 12, 13, 14, // tri0 + 12, 15, 13, // tri1 + 16, 14, 13 // tri2 +), +gsSPNTriangles_5b( + 17, 18, 19, // tri0 + 13, 18, 16, // tri1 + 20, 21, 15, // tri2 + 22, 23, 24 // tri3 +), +gsSPNTriangles_5b( + 16, 18, 17, // tri0 + 19, 23, 22, // tri1 + 24, 25, 22, // tri2 + 26, 21, 20 // tri3 +), +gsSPNTriangles_5b( + 20, 27, 26, // tri0 + 22, 17, 19, // tri1 + 15, 12, 20, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&elp_1_v[233], 7, 0), +gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 3, 1, 4, // tri1 + 4, 5, 3 // tri2 +), +gsSPNTriangles_5b( + 1, 3, 2, // tri0 + 2, 6, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail1_elp_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&elp_1_v[266], 8, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 1, 5 // tri2 +), +gsSPNTriangles_5b( + 1, 4, 2, // tri0 + 6, 4, 5, // tri1 + 7, 0, 3, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail2_elp_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&elp_1_v[240], 4, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&elp_1_v[244], 22, 4), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 3, 4, // tri0 + 0, 5, 6, // tri1 + 2, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 1, 9, // tri0 + 3, 2, 10, // tri1 + 3, 11, 12, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 11, // tri count + 13, 14, 15, // tri0 + 15, 16, 13, // tri1 + 17, 18, 19 // tri2 +), +gsSPNTriangles_5b( + 20, 15, 21, // tri0 + 22, 19, 18, // tri1 + 21, 15, 14, // tri2 + 16, 15, 23 // tri3 +), +gsSPNTriangles_5b( + 21, 18, 24, // tri0 + 18, 25, 22, // tri1 + 21, 14, 25, // tri2 + 25, 18, 21 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_elp_model[] = { +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&elp_1_v[315], 5, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&elp_1_v[320], 17, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 5, 6, // tri0 + 0, 7, 8, // tri1 + 2, 10, 9 // tri2 +), +gsSPNTriangles_5b( + 1, 11, 0, // tri0 + 4, 2, 12, // tri1 + 1, 4, 13, // tri2 + 1, 14, 15 // tri3 +), +gsSPNTriangles_5b( + 0, 16, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 4, // tri count + 17, 18, 19, // tri0 + 20, 18, 17, // tri1 + 17, 21, 20 // tri2 +), +gsSPNTriangles_5b( + 19, 18, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_elp_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&elp_1_v[337], 6, 0), +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&elp_1_v[343], 13, 6), +gsSPNTrianglesInit_5b( + 9, // tri count + 1, 3, 6, // tri0 + 2, 1, 7, // tri1 + 3, 0, 8 // tri2 +), +gsSPNTriangles_5b( + 4, 2, 9, // tri0 + 0, 5, 10, // tri1 + 1, 12, 11, // tri2 + 0, 13, 14 // tri3 +), +gsSPNTriangles_5b( + 2, 15, 16, // tri0 + 5, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_elp_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&elp_1_v[274], 5, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&elp_1_v[279], 17, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 5, 6, // tri0 + 2, 8, 7, // tri1 + 0, 9, 1 // tri2 +), +gsSPNTriangles_5b( + 2, 4, 10, // tri0 + 4, 1, 11, // tri1 + 1, 12, 13, // tri2 + 0, 14, 15 // tri3 +), +gsSPNTriangles_5b( + 3, 16, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 4, // tri count + 17, 18, 19, // tri0 + 19, 18, 20, // tri1 + 20, 21, 19 // tri2 +), +gsSPNTriangles_5b( + 20, 18, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_elp_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&elp_1_v[296], 6, 0), +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&elp_1_v[302], 13, 6), +gsSPNTrianglesInit_5b( + 9, // tri count + 0, 3, 6, // tri0 + 3, 1, 7, // tri1 + 1, 2, 8 // tri2 +), +gsSPNTriangles_5b( + 4, 9, 10, // tri0 + 2, 11, 12, // tri1 + 0, 13, 14, // tri2 + 1, 16, 15 // tri3 +), +gsSPNTriangles_5b( + 4, 0, 17, // tri0 + 2, 5, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx base_elp_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&elp_1_v[356], 24, 0), +gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 8, 7, 10, // tri1 + 9, 3, 7, // tri2 + 3, 1, 7 // tri3 +), +gsSPNTriangles_5b( + 6, 11, 4, // tri0 + 10, 6, 5, // tri1 + 10, 5, 8, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 10, // tri count + 12, 13, 14, // tri0 + 15, 14, 13, // tri1 + 16, 17, 18 // tri2 +), +gsSPNTriangles_5b( + 14, 19, 12, // tri0 + 14, 17, 19, // tri1 + 20, 21, 22, // tri2 + 23, 22, 15 // tri3 +), +gsSPNTriangles_5b( + 13, 23, 15, // tri0 + 22, 23, 20, // tri1 + 19, 17, 16, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_elp_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_elp_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-375,0 }, + /* joint 3 */ { Lfoot1_elp_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_elp_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,375,0 }, + /* joint 7 */ { Rfoot1_elp_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_elp_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 50,0,-625 }, + /* joint 11 */ { tail1_elp_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_elp_model, 0, cKF_JOINT_FLAG_DISP_OPA, 475,0,0 }, + /* joint 13 */ { chest_elp_model, 3, cKF_JOINT_FLAG_DISP_OPA, 501,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 700,-700,0 }, + /* joint 15 */ { Larm1_elp_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_elp_model, 0, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 700,700,0 }, + /* joint 18 */ { Rarm1_elp_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_elp_model, 1, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 1076,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 600,0,1800 }, + /* joint 23 */ { mouth_elp_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_elp_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1323,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_elp_1 = { 26, 14, cKF_je_r_elp_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/end_1.c b/src/data/npc/model/mdl/end_1.c new file mode 100644 index 00000000..6d99c2ae --- /dev/null +++ b/src/data/npc/model/mdl/end_1.c @@ -0,0 +1,799 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx end_1_v[] = { +#include "assets/npc/mdl/end_1_v.inc" +}; + +static Gfx head_end_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&end_1_v[0], 27, 0), +gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 7, 6, 11, // tri1 + 10, 9, 12, // tri2 + 12, 9, 13 // tri3 +), +gsSPNTriangles_5b( + 7, 14, 15, // tri0 + 11, 14, 7, // tri1 + 10, 16, 8, // tri2 + 4, 7, 15 // tri3 +), +gsSPNTriangles_5b( + 2, 16, 10, // tri0 + 2, 10, 0, // tri1 + 15, 17, 4, // tri2 + 5, 0, 12 // tri3 +), +gsSPNTriangles_5b( + 13, 6, 3, // tri0 + 5, 13, 3, // tri1 + 12, 13, 5, // tri2 + 12, 0, 10 // tri3 +), +gsSPNTriangles_5b( + 7, 4, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 8, // tri count + 18, 19, 20, // tri0 + 21, 18, 22, // tri1 + 20, 23, 22 // tri2 +), +gsSPNTriangles_5b( + 20, 22, 18, // tri0 + 24, 18, 21, // tri1 + 25, 21, 22, // tri2 + 18, 24, 19 // tri3 +), +gsSPNTriangles_5b( + 21, 26, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&end_1_v[27], 32, 0), +gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 8, 6, 9, // tri0 + 10, 11, 12, // tri1 + 13, 11, 10, // tri2 + 14, 15, 1 // tri3 +), +gsSPNTriangles_5b( + 16, 17, 5, // tri0 + 18, 19, 20, // tri1 + 6, 5, 17, // tri2 + 21, 8, 22 // tri3 +), +gsSPNTriangles_5b( + 7, 6, 8, // tri0 + 23, 17, 16, // tri1 + 24, 25, 26, // tri2 + 27, 28, 16 // tri3 +), +gsSPNTriangles_5b( + 29, 30, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&end_1_v[58], 32, 0), +gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 10, 12, 13, // tri1 + 12, 14, 15, // tri2 + 2, 16, 17 // tri3 +), +gsSPNTriangles_5b( + 18, 19, 20, // tri0 + 21, 11, 22, // tri1 + 15, 23, 13, // tri2 + 5, 24, 3 // tri3 +), +gsSPNTriangles_5b( + 13, 23, 25, // tri0 + 9, 12, 10, // tri1 + 26, 27, 28, // tri2 + 29, 8, 30 // tri3 +), +gsSPVertex(&end_1_v[89], 32, 0), +gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 1, 6 // tri2 +), +gsSPNTriangles_5b( + 2, 7, 5, // tri0 + 8, 9, 10, // tri1 + 11, 9, 8, // tri2 + 12, 13, 3 // tri3 +), +gsSPNTriangles_5b( + 12, 14, 15, // tri0 + 12, 3, 16, // tri1 + 17, 18, 19, // tri2 + 17, 20, 21 // tri3 +), +gsSPNTriangles_5b( + 22, 23, 11, // tri0 + 19, 18, 24, // tri1 + 25, 8, 10, // tri2 + 21, 26, 27 // tri3 +), +gsSPNTriangles_5b( + 22, 28, 25, // tri0 + 29, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&end_1_v[121], 32, 0), +gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 3 // tri2 +), +gsSPNTriangles_5b( + 8, 1, 9, // tri0 + 10, 11, 12, // tri1 + 6, 13, 12, // tri2 + 7, 6, 12 // tri3 +), +gsSPNTriangles_5b( + 6, 3, 14, // tri0 + 15, 16, 14, // tri1 + 4, 17, 8, // tri2 + 12, 13, 10 // tri3 +), +gsSPNTriangles_5b( + 18, 19, 20, // tri0 + 21, 10, 13, // tri1 + 7, 22, 20, // tri2 + 23, 24, 11 // tri3 +), +gsSPNTriangles_5b( + 12, 11, 7, // tri0 + 25, 26, 16, // tri1 + 4, 8, 9, // tri2 + 22, 27, 18 // tri3 +), +gsSPNTriangles_5b( + 28, 29, 30, // tri0 + 28, 30, 31, // tri1 + 20, 22, 18, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&end_1_v[153], 18, 0), +gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 0, 7 // tri2 +), +gsSPNTriangles_5b( + 8, 5, 9, // tri0 + 2, 7, 0, // tri1 + 5, 8, 3, // tri2 + 10, 11, 12 // tri3 +), +gsSPNTriangles_5b( + 11, 10, 13, // tri0 + 14, 15, 16, // tri1 + 12, 11, 16, // tri2 + 12, 17, 10 // tri3 +), +gsSPNTriangles_5b( + 14, 11, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_end_model[] = { +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&end_1_v[206], 4, 0), +gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&end_1_v[210], 17, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 2, 4, // tri0 + 3, 1, 5, // tri1 + 2, 3, 6 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 7, // tri0 + 2, 8, 9, // tri1 + 1, 10, 11, // tri2 + 0, 12, 13 // tri3 +), +gsSPNTrianglesInit_5b( + 9, // tri count + 14, 15, 16, // tri0 + 16, 17, 18, // tri1 + 19, 14, 20 // tri2 +), +gsSPNTriangles_5b( + 20, 18, 19, // tri0 + 19, 18, 17, // tri1 + 15, 14, 19, // tri2 + 17, 15, 19 // tri3 +), +gsSPNTriangles_5b( + 16, 20, 14, // tri0 + 18, 20, 16, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_end_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&end_1_v[227], 3, 0), +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&end_1_v[230], 11, 3), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 2, 3, // tri0 + 2, 5, 4, // tri1 + 1, 7, 6 // tri2 +), +gsSPNTriangles_5b( + 2, 1, 8, // tri0 + 1, 0, 9, // tri1 + 0, 10, 11, // tri2 + 2, 12, 13 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_end_model[] = { +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&end_1_v[171], 4, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&end_1_v[175], 17, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 1, 3, 4, // tri0 + 3, 2, 5, // tri1 + 2, 0, 6 // tri2 +), +gsSPNTriangles_5b( + 0, 1, 7, // tri0 + 2, 8, 9, // tri1 + 1, 10, 11, // tri2 + 0, 12, 13 // tri3 +), +gsSPNTrianglesInit_5b( + 9, // tri count + 14, 15, 16, // tri0 + 17, 18, 15, // tri1 + 19, 20, 16 // tri2 +), +gsSPNTriangles_5b( + 16, 20, 14, // tri0 + 16, 15, 18, // tri1 + 16, 18, 17, // tri2 + 17, 19, 16 // tri3 +), +gsSPNTriangles_5b( + 20, 19, 17, // tri0 + 17, 15, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_end_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&end_1_v[192], 3, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&end_1_v[195], 11, 3), +gsSPNTrianglesInit_5b( + 7, // tri count + 2, 0, 3, // tri0 + 2, 5, 4, // tri1 + 1, 7, 6 // tri2 +), +gsSPNTriangles_5b( + 1, 2, 8, // tri0 + 0, 1, 9, // tri1 + 0, 10, 11, // tri2 + 2, 12, 13 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_end_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&end_1_v[241], 5, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&end_1_v[246], 21, 5), +gsSPNTrianglesInit_5b( + 11, // tri count + 2, 5, 6, // tri0 + 0, 2, 7, // tri1 + 4, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 0, 10, 11, // tri0 + 1, 12, 3, // tri1 + 1, 13, 14, // tri2 + 3, 15, 16 // tri3 +), +gsSPNTriangles_5b( + 2, 17, 18, // tri0 + 4, 0, 19, // tri1 + 1, 4, 20, // tri2 + 2, 3, 21 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 22, 23, 24, // tri0 + 24, 25, 22, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx tail1_end_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&end_1_v[267], 9, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 8, 3, 4, // tri0 + 8, 2, 1, // tri1 + 1, 3, 8, // tri2 + 2, 4, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot3_end_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&end_1_v[332], 3, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&end_1_v[335], 13, 3), +gsSPNTrianglesInit_5b( + 6, // tri count + 1, 4, 3, // tri0 + 2, 5, 0, // tri1 + 2, 1, 6 // tri2 +), +gsSPNTriangles_5b( + 2, 8, 7, // tri0 + 0, 9, 1, // tri1 + 0, 11, 10, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 12, 13, 14, // tri0 + 14, 13, 15, // tri1 + 15, 13, 12 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_end_model[] = { +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&end_1_v[348], 4, 0), +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&end_1_v[352], 10, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 1, 4, // tri0 + 1, 0, 5, // tri1 + 1, 7, 6 // tri2 +), +gsSPNTriangles_5b( + 3, 9, 8, // tri0 + 2, 10, 0, // tri1 + 0, 12, 11, // tri2 + 2, 3, 13 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_end_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&end_1_v[362], 5, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&end_1_v[367], 23, 5), +gsSPNTrianglesInit_5b( + 10, // tri count + 2, 0, 5, // tri0 + 3, 2, 6, // tri1 + 4, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 0, 1, 9, // tri0 + 2, 10, 11, // tri1 + 1, 4, 12, // tri2 + 3, 13, 14 // tri3 +), +gsSPNTriangles_5b( + 4, 3, 15, // tri0 + 0, 16, 17, // tri1 + 1, 18, 19, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 7, // tri count + 20, 21, 22, // tri0 + 23, 24, 21, // tri1 + 23, 25, 24 // tri2 +), +gsSPNTriangles_5b( + 24, 22, 21, // tri0 + 26, 25, 23, // tri1 + 24, 25, 27, // tri2 + 27, 22, 24 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot3_end_model[] = { +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&end_1_v[276], 6, 0), +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&end_1_v[282], 14, 6), +gsSPNTrianglesInit_5b( + 2, // tri count + 2, 6, 0, // tri0 + 0, 7, 5, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 4, // tri count + 1, 9, 8, // tri0 + 4, 11, 10, // tri1 + 3, 4, 12 // tri2 +), +gsSPNTriangles_5b( + 3, 14, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 15, 16, 17, // tri0 + 17, 16, 18, // tri1 + 18, 16, 19 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_end_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&end_1_v[296], 4, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&end_1_v[300], 14, 4), +gsSPNTrianglesInit_5b( + 9, // tri count + 0, 5, 4, // tri0 + 2, 1, 6, // tri1 + 1, 0, 7 // tri2 +), +gsSPNTriangles_5b( + 2, 9, 8, // tri0 + 1, 11, 10, // tri1 + 0, 3, 12, // tri2 + 3, 2, 13 // tri3 +), +gsSPNTriangles_5b( + 0, 14, 15, // tri0 + 2, 16, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_end_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&end_1_v[314], 5, 0), +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&end_1_v[319], 13, 5), +gsSPNTrianglesInit_5b( + 9, // tri count + 1, 5, 6, // tri0 + 2, 7, 8, // tri1 + 0, 2, 9 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 10, // tri0 + 2, 3, 11, // tri1 + 3, 4, 12, // tri2 + 4, 13, 14 // tri3 +), +gsSPNTriangles_5b( + 4, 1, 15, // tri0 + 3, 16, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx base_end_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 24, 15, GX_MIRROR, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 92), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&end_1_v[390], 28, 0), +gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), +gsDPSetTileSize(0, 0, 0, 60, 60), +gsSPNTrianglesInit_5b( + 2, // tri count + 4, 5, 6, // tri0 + 4, 6, 7, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000180, G_IM_FMT_CI, 32, 40, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 2, // tri count + 8, 9, 10, // tri0 + 8, 10, 11, // tri1 + 0, 0, 0 // tri2 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 28), +gsSPNTrianglesInit_5b( + 4, // tri count + 12, 13, 14, // tri0 + 12, 14, 15, // tri1 + 16, 17, 18 // tri2 +), +gsSPNTriangles_5b( + 16, 18, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 4, // tri count + 20, 21, 22, // tri0 + 20, 22, 23, // tri1 + 24, 25, 26 // tri2 +), +gsSPNTriangles_5b( + 24, 26, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&end_1_v[418], 21, 0), +gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 17, // tri count + 4, 5, 6, // tri0 + 6, 7, 8, // tri1 + 6, 8, 4 // tri2 +), +gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 9, 11, 12, // tri1 + 10, 8, 7, // tri2 + 10, 7, 11 // tri3 +), +gsSPNTriangles_5b( + 13, 5, 14, // tri0 + 13, 14, 15, // tri1 + 16, 17, 18, // tri2 + 18, 19, 16 // tri3 +), +gsSPNTriangles_5b( + 9, 12, 16, // tri0 + 9, 16, 19, // tri1 + 17, 20, 18, // tri2 + 15, 20, 17 // tri3 +), +gsSPNTriangles_5b( + 15, 17, 13, // tri0 + 4, 14, 5, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&end_1_v[439], 14, 0), +gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 1 // tri2 +), +gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 9, 10, 7, // tri1 + 11, 2, 5, // tri2 + 5, 8, 3 // tri3 +), +gsSPNTriangles_5b( + 2, 11, 0, // tri0 + 7, 3, 8, // tri1 + 4, 11, 5, // tri2 + 6, 10, 9 // tri3 +), +gsSPNTriangles_5b( + 6, 12, 13, // tri0 + 6, 13, 10, // tri1 + 9, 1, 6, // tri2 + 12, 4, 13 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_end_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_end_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_end_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_end_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { Lfoot3_end_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_end_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_end_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { Rfoot3_end_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 75,0,-475 }, + /* joint 11 */ { tail1_end_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_end_model, 3, cKF_JOINT_FLAG_DISP_OPA, 599,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,-500,0 }, + /* joint 15 */ { Larm1_end_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_end_model, 0, cKF_JOINT_FLAG_DISP_OPA, 700,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,500,0 }, + /* joint 18 */ { Rarm1_end_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_end_model, 1, cKF_JOINT_FLAG_DISP_OPA, 701,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 699,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 701,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 100,0,700 }, + /* joint 23 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_end_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1300,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_end_1 = { 26, 14, cKF_je_r_end_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/flg_1.c b/src/data/npc/model/mdl/flg_1.c new file mode 100644 index 00000000..dc3e6965 --- /dev/null +++ b/src/data/npc/model/mdl/flg_1.c @@ -0,0 +1,585 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx flg_1_v[] = { +#include "assets/npc/mdl/flg_1_v.inc" +}; + +static Gfx head_flg_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&flg_1_v[0], 18, 0), +gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 4, 6 // tri2 +), +gsSPNTriangles_5b( + 3, 7, 8, // tri0 + 6, 9, 5, // tri1 + 5, 7, 3, // tri2 + 10, 11, 8 // tri3 +), +gsSPNTriangles_5b( + 8, 7, 12, // tri0 + 13, 9, 6, // tri1 + 5, 12, 7, // tri2 + 2, 5, 9 // tri3 +), +gsSPNTriangles_5b( + 13, 2, 9, // tri0 + 2, 12, 5, // tri1 + 12, 14, 10, // tri2 + 10, 8, 12 // tri3 +), +gsSPNTriangles_5b( + 13, 15, 0, // tri0 + 0, 2, 13, // tri1 + 6, 16, 13, // tri2 + 8, 17, 3 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&flg_1_v[18], 22, 0), +gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 +), +gsSPNTriangles_5b( + 2, 7, 8, // tri0 + 9, 4, 10, // tri1 + 11, 1, 0, // tri2 + 11, 12, 1 // tri3 +), +gsSPNTriangles_5b( + 4, 6, 10, // tri0 + 13, 4, 9, // tri1 + 5, 4, 13, // tri2 + 2, 1, 7 // tri3 +), +gsSPNTriangles_5b( + 14, 0, 2, // tri0 + 13, 9, 14, // tri1 + 14, 2, 13, // tri2 + 8, 5, 13 // tri3 +), +gsSPNTriangles_5b( + 8, 13, 2, // tri0 + 1, 12, 15, // tri1 + 1, 15, 7, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 4, // tri count + 16, 17, 18, // tri0 + 16, 19, 17, // tri1 + 17, 20, 18 // tri2 +), +gsSPNTriangles_5b( + 19, 21, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 32, 40, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&flg_1_v[40], 32, 0), +gsSPNTrianglesInit_5b( + 45, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 8, 2, 1, // tri0 + 8, 7, 2, // tri1 + 9, 10, 11, // tri2 + 6, 12, 13 // tri3 +), +gsSPNTriangles_5b( + 14, 7, 6, // tri0 + 15, 16, 10, // tri1 + 16, 17, 10, // tri2 + 17, 11, 10 // tri3 +), +gsSPNTriangles_5b( + 18, 19, 20, // tri0 + 5, 21, 3, // tri1 + 11, 22, 9, // tri2 + 23, 24, 25 // tri3 +), +gsSPNTriangles_5b( + 24, 2, 25, // tri0 + 21, 24, 23, // tri1 + 26, 25, 27, // tri2 + 17, 28, 29 // tri3 +), +gsSPNTriangles_5b( + 5, 4, 30, // tri0 + 29, 22, 11, // tri1 + 11, 17, 29, // tri2 + 30, 19, 18 // tri3 +), +gsSPNTriangles_5b( + 18, 5, 30, // tri0 + 21, 18, 20, // tri1 + 21, 5, 18, // tri2 + 14, 13, 27 // tri3 +), +gsSPNTriangles_5b( + 2, 7, 14, // tri0 + 0, 24, 21, // tri1 + 10, 26, 15, // tri2 + 23, 26, 10 // tri3 +), +gsSPNTriangles_5b( + 10, 21, 23, // tri0 + 25, 26, 23, // tri1 + 10, 9, 3, // tri2 + 10, 3, 21 // tri3 +), +gsSPNTriangles_5b( + 21, 20, 0, // tri0 + 2, 24, 0, // tri1 + 27, 13, 12, // tri2 + 27, 12, 31 // tri3 +), +gsSPNTriangles_5b( + 15, 27, 31, // tri0 + 16, 28, 17, // tri1 + 26, 27, 15, // tri2 + 6, 13, 14 // tri3 +), +gsSPNTriangles_5b( + 27, 25, 14, // tri0 + 14, 25, 2, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_flg_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&flg_1_v[108], 5, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&flg_1_v[113], 16, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 5, 3, // tri0 + 1, 4, 6, // tri1 + 1, 8, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 10, 9, // tri0 + 0, 1, 11, // tri1 + 2, 12, 13, // tri2 + 2, 0, 14 // tri3 +), +gsSPNTriangles_5b( + 2, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 20, 18, 17, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_flg_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&flg_1_v[129], 4, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&flg_1_v[133], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 2, 4, // tri0 + 0, 5, 6, // tri1 + 1, 8, 7 // tri2 +), +gsSPNTriangles_5b( + 2, 9, 10, // tri0 + 3, 1, 11, // tri1 + 1, 0, 12, // tri2 + 1, 13, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_flg_model[] = { +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&flg_1_v[72], 5, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&flg_1_v[77], 16, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 +), +gsSPNTriangles_5b( + 3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_flg_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&flg_1_v[93], 4, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&flg_1_v[97], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_flg_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&flg_1_v[144], 7, 0), +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&flg_1_v[151], 20, 7), +gsSPNTrianglesInit_5b( + 13, // tri count + 3, 1, 7, // tri0 + 6, 8, 9, // tri1 + 3, 10, 11 // tri2 +), +gsSPNTriangles_5b( + 2, 12, 0, // tri0 + 2, 13, 14, // tri1 + 1, 16, 15, // tri2 + 0, 17, 18 // tri3 +), +gsSPNTriangles_5b( + 0, 19, 20, // tri0 + 1, 21, 22, // tri1 + 6, 3, 23, // tri2 + 2, 6, 24 // tri3 +), +gsSPNTriangles_5b( + 4, 0, 25, // tri0 + 5, 26, 1, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&flg_1_v[171], 9, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 0, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 4, 3, 7, // tri0 + 2, 5, 0, // tri1 + 1, 8, 2, // tri2 + 6, 3, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_flg_model[] = { +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&flg_1_v[230], 5, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&flg_1_v[235], 17, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 4, 0, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 1, 2, 10, // tri0 + 2, 3, 11, // tri1 + 3, 4, 12, // tri2 + 2, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_flg_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&flg_1_v[252], 4, 0), +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&flg_1_v[256], 22, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 3, 4, // tri0 + 0, 5, 1, // tri1 + 1, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 3, 2, 8, // tri0 + 2, 9, 10, // tri1 + 2, 1, 11, // tri2 + 0, 13, 12 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 14, 15, 16, // tri0 + 14, 16, 17, // tri1 + 17, 18, 14 // tri2 +), +gsSPNTriangles_5b( + 19, 20, 21, // tri0 + 21, 20, 18, // tri1 + 21, 22, 19, // tri2 + 17, 21, 18 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsSPNTrianglesInit_5b( + 1, // tri count + 23, 24, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_flg_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&flg_1_v[180], 5, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&flg_1_v[185], 17, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 4, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 1, 10, // tri0 + 3, 2, 11, // tri1 + 4, 3, 12, // tri2 + 2, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_flg_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&flg_1_v[202], 6, 0), +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&flg_1_v[208], 22, 6), +gsSPNTrianglesInit_5b( + 7, // tri count + 4, 0, 6, // tri0 + 1, 7, 0, // tri1 + 1, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 2, 5, 10, // tri0 + 2, 11, 12, // tri1 + 1, 3, 13, // tri2 + 0, 15, 14 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 16, 17, 18, // tri0 + 19, 16, 18, // tri1 + 18, 20, 19 // tri2 +), +gsSPNTriangles_5b( + 21, 22, 23, // tri0 + 20, 22, 21, // tri1 + 23, 24, 21, // tri2 + 20, 21, 19 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsSPNTrianglesInit_5b( + 1, // tri count + 25, 26, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx base_flg_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&flg_1_v[278], 14, 0), +gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 9, 5, 4, // tri0 + 10, 4, 0, // tri1 + 10, 9, 4, // tri2 + 7, 11, 12 // tri3 +), +gsSPNTriangles_5b( + 8, 7, 13, // tri0 + 2, 10, 0, // tri1 + 2, 1, 6, // tri2 + 6, 8, 2 // tri3 +), +gsSPNTriangles_5b( + 7, 12, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_flg_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_flg_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_flg_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_flg_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_flg_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_flg_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 75,0,-475 }, + /* joint 11 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_flg_model, 3, cKF_JOINT_FLAG_DISP_OPA, 325,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,-450,0 }, + /* joint 15 */ { Larm1_flg_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_flg_model, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,450,0 }, + /* joint 18 */ { Rarm1_flg_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_flg_model, 1, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 675,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,600 }, + /* joint 23 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_flg_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1100,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_flg_1 = { 26, 11, cKF_je_r_flg_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/fob_1.c b/src/data/npc/model/mdl/fob_1.c new file mode 100644 index 00000000..10a2f946 --- /dev/null +++ b/src/data/npc/model/mdl/fob_1.c @@ -0,0 +1,819 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx fob_1_v[] = { +#include "assets/npc/mdl/fob_1_v.inc" +}; + +static Gfx head_fob_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), +gsSPVertex(&fob_1_v[22], 32, 0), +gsSPNTrianglesInit_5b( + 37, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 7, 6, 5, // tri0 + 7, 5, 9, // tri1 + 10, 2, 1, // tri2 + 1, 11, 12 // tri3 +), +gsSPNTriangles_5b( + 0, 13, 1, // tri0 + 14, 5, 4, // tri1 + 5, 6, 3, // tri2 + 15, 4, 3 // tri3 +), +gsSPNTriangles_5b( + 16, 4, 15, // tri0 + 8, 17, 18, // tri1 + 11, 19, 20, // tri2 + 21, 22, 23 // tri3 +), +gsSPNTriangles_5b( + 17, 8, 7, // tri0 + 24, 12, 20, // tri1 + 25, 3, 26, // tri2 + 23, 22, 2 // tri3 +), +gsSPNTriangles_5b( + 13, 19, 11, // tri0 + 1, 13, 11, // tri1 + 18, 24, 20, // tri2 + 27, 28, 8 // tri3 +), +gsSPNTriangles_5b( + 1, 12, 10, // tri0 + 5, 14, 9, // tri1 + 26, 28, 27, // tri2 + 28, 3, 6 // tri3 +), +gsSPNTriangles_5b( + 17, 7, 29, // tri0 + 20, 19, 27, // tri1 + 27, 19, 26, // tri2 + 15, 25, 13 // tri3 +), +gsSPNTriangles_5b( + 2, 10, 23, // tri0 + 23, 9, 14, // tri1 + 30, 23, 10, // tri2 + 9, 23, 30 // tri3 +), +gsSPNTriangles_5b( + 3, 25, 15, // tri0 + 12, 24, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&fob_1_v[54], 29, 0), +gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 4, 8, 9, // tri1 + 7, 10, 11, // tri2 + 12, 13, 14 // tri3 +), +gsSPNTriangles_5b( + 15, 14, 1, // tri0 + 15, 1, 0, // tri1 + 16, 3, 2, // tri2 + 17, 8, 18 // tri3 +), +gsSPNTriangles_5b( + 18, 19, 16, // tri0 + 16, 20, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 21, 22, 23, // tri0 + 24, 22, 21, // tri1 + 23, 25, 21 // tri2 +), +gsSPNTriangles_5b( + 22, 24, 26, // tri0 + 25, 27, 28, // tri1 + 25, 28, 21, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&fob_1_v[83], 30, 0), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 7, 8, 5, // tri0 + 7, 5, 4, // tri1 + 9, 1, 0, // tri2 + 6, 10, 4 // tri3 +), +gsSPNTriangles_5b( + 0, 11, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 2, // tri count + 12, 13, 14, // tri0 + 14, 15, 12, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 2, // tri count + 16, 17, 18, // tri0 + 18, 19, 16, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 60), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 8, // tri count + 20, 21, 22, // tri0 + 23, 24, 25, // tri1 + 26, 20, 27 // tri2 +), +gsSPNTriangles_5b( + 28, 23, 29, // tri0 + 29, 26, 27, // tri1 + 29, 27, 28, // tri2 + 23, 25, 29 // tri3 +), +gsSPNTriangles_5b( + 26, 21, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&fob_1_v[113], 19, 0), +gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 7, 9, 10, // tri1 + 4, 6, 11, // tri2 + 12, 7, 10 // tri3 +), +gsSPNTriangles_5b( + 5, 13, 14, // tri0 + 5, 14, 6, // tri1 + 15, 16, 17, // tri2 + 1, 9, 8 // tri3 +), +gsSPNTriangles_5b( + 10, 16, 15, // tri0 + 10, 15, 12, // tri1 + 17, 18, 15, // tri2 + 11, 18, 17 // tri3 +), +gsSPNTriangles_5b( + 11, 17, 4, // tri0 + 8, 2, 1, // tri1 + 3, 14, 13, // tri2 + 3, 13, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx mouth_fob_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), +gsSPVertex(&fob_1_v[0], 7, 0), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsSPVertex(&fob_1_v[7], 15, 7), +gsSPNTrianglesInit_5b( + 9, // tri count + 6, 7, 8, // tri0 + 6, 4, 9, // tri1 + 1, 10, 11 // tri2 +), +gsSPNTriangles_5b( + 2, 0, 12, // tri0 + 4, 1, 13, // tri1 + 0, 5, 14, // tri2 + 5, 6, 15 // tri3 +), +gsSPNTriangles_5b( + 0, 16, 17, // tri0 + 1, 3, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_fob_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), +gsSPVertex(&fob_1_v[166], 4, 0), +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&fob_1_v[170], 16, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 4, 5, // tri0 + 1, 6, 7, // tri1 + 2, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 1, 10, 11, // tri0 + 0, 2, 12, // tri1 + 0, 13, 1, // tri2 + 2, 3, 14 // tri3 +), +gsSPNTriangles_5b( + 3, 1, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 16, 17, 18, // tri0 + 19, 18, 17, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_fob_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), +gsSPVertex(&fob_1_v[186], 3, 0), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&fob_1_v[189], 11, 3), +gsSPNTrianglesInit_5b( + 7, // tri count + 1, 3, 2, // tri0 + 0, 5, 4, // tri1 + 1, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 2, 8, 9, // tri0 + 0, 10, 11, // tri1 + 1, 0, 12, // tri2 + 0, 2, 13 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_fob_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), +gsSPVertex(&fob_1_v[132], 4, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&fob_1_v[136], 16, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 4, 5, // tri0 + 1, 6, 7, // tri1 + 2, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 1, 10, 11, // tri0 + 2, 0, 12, // tri1 + 1, 13, 0, // tri2 + 3, 2, 14 // tri3 +), +gsSPNTriangles_5b( + 1, 3, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_fob_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), +gsSPVertex(&fob_1_v[152], 3, 0), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&fob_1_v[155], 11, 3), +gsSPNTrianglesInit_5b( + 7, // tri count + 2, 3, 1, // tri0 + 0, 5, 4, // tri1 + 1, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 2, 8, 9, // tri0 + 0, 10, 11, // tri1 + 0, 1, 12, // tri2 + 2, 0, 13 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_fob_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000700, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), +gsSPVertex(&fob_1_v[200], 11, 0), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000580, G_IM_FMT_CI, 48, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&fob_1_v[211], 13, 11), +gsSPNTrianglesInit_5b( + 9, // tri count + 10, 4, 11, // tri0 + 4, 12, 13, // tri1 + 7, 9, 14 // tri2 +), +gsSPNTriangles_5b( + 2, 7, 15, // tri0 + 2, 16, 17, // tri1 + 8, 10, 18, // tri2 + 9, 8, 19 // tri3 +), +gsSPNTriangles_5b( + 8, 20, 21, // tri0 + 9, 22, 23, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&fob_1_v[224], 20, 11), +gsSPNTrianglesInit_5b( + 8, // tri count + 6, 11, 12, // tri0 + 1, 13, 14, // tri1 + 0, 15, 16 // tri2 +), +gsSPNTriangles_5b( + 6, 17, 18, // tri0 + 5, 1, 19, // tri1 + 0, 3, 20, // tri2 + 1, 6, 21 // tri3 +), +gsSPNTriangles_5b( + 6, 0, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 23, 24, 25, // tri0 + 26, 27, 25, // tri1 + 23, 28, 24 // tri2 +), +gsSPNTriangles_5b( + 29, 30, 26, // tri0 + 25, 27, 23, // tri1 + 25, 29, 26, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&fob_1_v[244], 19, 0), +gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 9, 10, 7, // tri0 + 10, 11, 7, // tri1 + 5, 1, 0, // tri2 + 7, 12, 9 // tri3 +), +gsSPNTriangles_5b( + 3, 13, 4, // tri0 + 0, 14, 5, // tri1 + 5, 14, 3, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 2, // tri count + 15, 16, 17, // tri0 + 16, 15, 18, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx tail1_fob_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000700, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), +gsSPVertex(&fob_1_v[300], 3, 0), +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&fob_1_v[303], 11, 3), +gsSPNTrianglesInit_5b( + 7, // tri count + 1, 3, 4, // tri0 + 1, 0, 5, // tri1 + 2, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 2, 1, 10, // tri1 + 0, 11, 12, // tri2 + 0, 2, 13 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail2_fob_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), +gsSPVertex(&fob_1_v[263], 4, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&fob_1_v[267], 20, 4), +gsSPNTrianglesInit_5b( + 12, // tri count + 2, 0, 4, // tri0 + 2, 5, 6, // tri1 + 1, 2, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 0, 3, 10, // tri1 + 3, 11, 12, // tri2 + 3, 1, 13 // tri3 +), +gsSPNTriangles_5b( + 1, 14, 15, // tri0 + 0, 16, 17, // tri1 + 0, 18, 19, // tri2 + 2, 20, 21 // tri3 +), +gsSPNTriangles_5b( + 3, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&fob_1_v[287], 13, 0), +gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 0, 7 // tri2 +), +gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 6, 1, 0, // tri1 + 8, 10, 9, // tri2 + 5, 4, 6 // tri3 +), +gsSPNTriangles_5b( + 11, 12, 3, // tri0 + 7, 11, 3, // tri1 + 7, 5, 6, // tri2 + 3, 5, 7 // tri3 +), +gsSPNTriangles_5b( + 2, 10, 8, // tri0 + 7, 0, 2, // tri1 + 9, 12, 11, // tri2 + 2, 8, 7 // tri3 +), +gsSPNTriangles_5b( + 9, 11, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_fob_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), +gsSPVertex(&fob_1_v[339], 4, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&fob_1_v[343], 14, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 0, 4, // tri0 + 0, 6, 5, // tri1 + 2, 8, 7 // tri2 +), +gsSPNTriangles_5b( + 0, 1, 9, // tri0 + 1, 2, 10, // tri1 + 2, 3, 11, // tri2 + 1, 12, 13 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 14, 15, 16, // tri0 + 17, 15, 14, // tri1 + 17, 16, 15 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_fob_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), +gsSPVertex(&fob_1_v[357], 7, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 1, 5, 2 // tri2 +), +gsSPNTriangles_5b( + 6, 4, 3, // tri0 + 6, 3, 0, // tri1 + 0, 2, 6, // tri2 + 4, 5, 1 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_fob_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), +gsSPVertex(&fob_1_v[314], 4, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&fob_1_v[318], 14, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 3, 4, // tri0 + 0, 6, 5, // tri1 + 2, 8, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 9, // tri0 + 2, 1, 10, // tri1 + 3, 2, 11, // tri2 + 1, 12, 13 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 14, 15, 16, // tri0 + 16, 15, 17, // tri1 + 15, 14, 17 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_fob_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), +gsSPVertex(&fob_1_v[332], 7, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 0, 5, 1 // tri2 +), +gsSPNTriangles_5b( + 4, 3, 6, // tri0 + 2, 4, 6, // tri1 + 6, 0, 2, // tri2 + 1, 5, 3 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx base_fob_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000580, G_IM_FMT_CI, 48, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), +gsSPVertex(&fob_1_v[364], 26, 0), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 8, 2, 7, // tri0 + 7, 6, 8, // tri1 + 7, 5, 4, // tri2 + 2, 8, 0 // tri3 +), +gsSPNTriangles_5b( + 5, 9, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000700, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 19, // tri count + 10, 11, 12, // tri0 + 13, 14, 15, // tri1 + 16, 17, 18 // tri2 +), +gsSPNTriangles_5b( + 19, 20, 13, // tri0 + 21, 15, 22, // tri1 + 17, 15, 21, // tri2 + 21, 22, 23 // tri3 +), +gsSPNTriangles_5b( + 23, 22, 24, // tri0 + 23, 12, 18, // tri1 + 19, 17, 16, // tri2 + 16, 18, 12 // tri3 +), +gsSPNTriangles_5b( + 14, 24, 22, // tri0 + 14, 22, 15, // tri1 + 19, 15, 17, // tri2 + 23, 25, 10 // tri3 +), +gsSPNTriangles_5b( + 24, 25, 23, // tri0 + 15, 19, 13, // tri1 + 10, 12, 23, // tri2 + 18, 21, 23 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000580, G_IM_FMT_CI, 48, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&fob_1_v[390], 29, 0), +gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 4, 7 // tri2 +), +gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 4, 6, 5, // tri1 + 0, 2, 3, // tri2 + 9, 8, 10 // tri3 +), +gsSPNTriangles_5b( + 6, 7, 9, // tri0 + 5, 11, 3, // tri1 + 9, 12, 6, // tri2 + 8, 13, 10 // tri3 +), +gsSPNTriangles_5b( + 3, 2, 4, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000700, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 10, // tri count + 14, 15, 16, // tri0 + 17, 18, 19, // tri1 + 20, 16, 15 // tri2 +), +gsSPNTriangles_5b( + 21, 18, 22, // tri0 + 23, 24, 25, // tri1 + 23, 25, 16, // tri2 + 15, 26, 27 // tri3 +), +gsSPNTriangles_5b( + 14, 26, 15, // tri0 + 16, 25, 14, // tri1 + 26, 28, 27, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_fob_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_fob_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_fob_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_fob_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_fob_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_fob_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,-700 }, + /* joint 11 */ { tail1_fob_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_fob_model, 0, cKF_JOINT_FLAG_DISP_OPA, 800,0,0 }, + /* joint 13 */ { chest_fob_model, 3, cKF_JOINT_FLAG_DISP_OPA, 425,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 600,-500,0 }, + /* joint 15 */ { Larm1_fob_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_fob_model, 0, cKF_JOINT_FLAG_DISP_OPA, 450,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 600,500,0 }, + /* joint 18 */ { Rarm1_fob_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_fob_model, 1, cKF_JOINT_FLAG_DISP_OPA, 450,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 450,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 875,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 600,0,1300 }, + /* joint 23 */ { mouth_fob_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_fob_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1300,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_fob_1 = { 26, 14, cKF_je_r_fob_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/fox_1.c b/src/data/npc/model/mdl/fox_1.c new file mode 100644 index 00000000..b2fb7524 --- /dev/null +++ b/src/data/npc/model/mdl/fox_1.c @@ -0,0 +1,740 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx fox_1_v[] = { +#include "assets/npc/mdl/fox_1_v.inc" +}; + +static Gfx head_fox_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&fox_1_v[22], 32, 0), +gsSPNTrianglesInit_5b( + 37, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 7, 6, 5, // tri0 + 7, 5, 9, // tri1 + 10, 2, 1, // tri2 + 1, 11, 12 // tri3 +), +gsSPNTriangles_5b( + 0, 13, 1, // tri0 + 14, 5, 4, // tri1 + 5, 6, 3, // tri2 + 15, 4, 3 // tri3 +), +gsSPNTriangles_5b( + 16, 4, 15, // tri0 + 8, 17, 18, // tri1 + 11, 19, 20, // tri2 + 21, 22, 23 // tri3 +), +gsSPNTriangles_5b( + 17, 8, 7, // tri0 + 24, 12, 20, // tri1 + 25, 3, 26, // tri2 + 23, 22, 2 // tri3 +), +gsSPNTriangles_5b( + 13, 19, 11, // tri0 + 1, 13, 11, // tri1 + 18, 24, 20, // tri2 + 27, 28, 8 // tri3 +), +gsSPNTriangles_5b( + 1, 12, 10, // tri0 + 5, 14, 9, // tri1 + 26, 28, 27, // tri2 + 28, 3, 6 // tri3 +), +gsSPNTriangles_5b( + 17, 7, 29, // tri0 + 20, 19, 27, // tri1 + 27, 19, 26, // tri2 + 15, 25, 13 // tri3 +), +gsSPNTriangles_5b( + 2, 10, 23, // tri0 + 23, 9, 14, // tri1 + 30, 23, 10, // tri2 + 9, 23, 30 // tri3 +), +gsSPNTriangles_5b( + 3, 25, 15, // tri0 + 12, 24, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&fox_1_v[54], 29, 0), +gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 4, 8, 9, // tri1 + 7, 10, 11, // tri2 + 12, 13, 14 // tri3 +), +gsSPNTriangles_5b( + 15, 14, 1, // tri0 + 15, 1, 0, // tri1 + 16, 3, 2, // tri2 + 17, 8, 18 // tri3 +), +gsSPNTriangles_5b( + 18, 19, 16, // tri0 + 16, 20, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 2, // tri count + 21, 22, 23, // tri0 + 23, 24, 21, // tri1 + 0, 0, 0 // tri2 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 25, 26, 27, // tri0 + 27, 28, 25, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&fox_1_v[83], 20, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 4, 5 // tri2 +), +gsSPNTriangles_5b( + 6, 4, 3, // tri0 + 5, 0, 3, // tri1 + 4, 6, 7, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 8, // tri count + 8, 9, 10, // tri0 + 8, 10, 11, // tri1 + 12, 13, 14 // tri2 +), +gsSPNTriangles_5b( + 12, 15, 16, // tri0 + 11, 10, 17, // tri1 + 14, 15, 12, // tri2 + 17, 18, 11 // tri3 +), +gsSPNTriangles_5b( + 19, 16, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx mouth_fox_model[] = { +gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&fox_1_v[0], 7, 0), +gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&fox_1_v[7], 15, 7), +gsSPNTrianglesInit_5b( + 9, // tri count + 6, 7, 8, // tri0 + 6, 4, 9, // tri1 + 1, 10, 11 // tri2 +), +gsSPNTriangles_5b( + 2, 0, 12, // tri0 + 4, 1, 13, // tri1 + 0, 5, 14, // tri2 + 5, 6, 15 // tri3 +), +gsSPNTriangles_5b( + 0, 16, 17, // tri0 + 1, 3, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_fox_model[] = { +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&fox_1_v[137], 4, 0), +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&fox_1_v[141], 16, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 4, 5, // tri0 + 1, 6, 7, // tri1 + 2, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 1, 10, 11, // tri0 + 0, 2, 12, // tri1 + 0, 13, 1, // tri2 + 2, 3, 14 // tri3 +), +gsSPNTriangles_5b( + 3, 1, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 16, 17, 18, // tri0 + 19, 18, 17, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_fox_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&fox_1_v[157], 3, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&fox_1_v[160], 11, 3), +gsSPNTrianglesInit_5b( + 7, // tri count + 2, 3, 1, // tri0 + 0, 5, 4, // tri1 + 2, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 0, 10, 11, // tri1 + 2, 0, 12, // tri2 + 0, 1, 13 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_fox_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&fox_1_v[103], 4, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&fox_1_v[107], 16, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 4, 5, // tri0 + 1, 6, 7, // tri1 + 2, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 1, 10, 11, // tri0 + 2, 0, 12, // tri1 + 1, 13, 0, // tri2 + 3, 2, 14 // tri3 +), +gsSPNTriangles_5b( + 1, 3, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_fox_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&fox_1_v[123], 3, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&fox_1_v[126], 11, 3), +gsSPNTrianglesInit_5b( + 7, // tri count + 1, 3, 2, // tri0 + 0, 5, 4, // tri1 + 2, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 0, 10, 11, // tri1 + 0, 2, 12, // tri2 + 1, 0, 13 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_fox_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&fox_1_v[171], 11, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&fox_1_v[182], 13, 11), +gsSPNTrianglesInit_5b( + 9, // tri count + 7, 2, 11, // tri0 + 2, 12, 13, // tri1 + 8, 14, 15 // tri2 +), +gsSPNTriangles_5b( + 1, 8, 16, // tri0 + 1, 17, 18, // tri1 + 9, 7, 19, // tri2 + 10, 9, 20 // tri3 +), +gsSPNTriangles_5b( + 7, 22, 21, // tri0 + 8, 10, 23, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&fox_1_v[195], 20, 11), +gsSPNTrianglesInit_5b( + 8, // tri count + 3, 5, 11, // tri0 + 4, 13, 12, // tri1 + 5, 14, 15 // tri2 +), +gsSPNTriangles_5b( + 4, 16, 6, // tri0 + 3, 17, 18, // tri1 + 4, 0, 19, // tri2 + 6, 20, 5 // tri3 +), +gsSPNTriangles_5b( + 0, 21, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 23, 24, 25, // tri0 + 25, 24, 26, // tri1 + 27, 28, 23 // tri2 +), +gsSPNTriangles_5b( + 26, 29, 30, // tri0 + 25, 27, 23, // tri1 + 26, 30, 25, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&fox_1_v[215], 12, 0), +gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 9, // tri0 + 1, 9, 6, // tri1 + 3, 10, 4, // tri2 + 5, 4, 11 // tri3 +), +gsSPNTriangles_5b( + 3, 8, 10, // tri0 + 6, 8, 3, // tri1 + 2, 1, 5, // tri2 + 6, 3, 1 // tri3 +), +gsSPNTriangles_5b( + 3, 5, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail1_fox_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&fox_1_v[264], 3, 0), +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&fox_1_v[267], 11, 3), +gsSPNTrianglesInit_5b( + 7, // tri count + 1, 3, 4, // tri0 + 1, 0, 5, // tri1 + 2, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 2, 1, 10, // tri1 + 0, 11, 12, // tri2 + 0, 2, 13 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail2_fox_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&fox_1_v[227], 4, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&fox_1_v[231], 20, 4), +gsSPNTrianglesInit_5b( + 12, // tri count + 2, 0, 4, // tri0 + 2, 5, 6, // tri1 + 1, 2, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 0, 3, 10, // tri1 + 3, 11, 12, // tri2 + 3, 1, 13 // tri3 +), +gsSPNTriangles_5b( + 1, 14, 15, // tri0 + 0, 16, 17, // tri1 + 0, 18, 19, // tri2 + 2, 20, 21 // tri3 +), +gsSPNTriangles_5b( + 3, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&fox_1_v[251], 13, 0), +gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 0, 7 // tri2 +), +gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 6, 1, 0, // tri1 + 8, 10, 9, // tri2 + 5, 4, 6 // tri3 +), +gsSPNTriangles_5b( + 11, 12, 3, // tri0 + 7, 11, 3, // tri1 + 7, 5, 6, // tri2 + 3, 5, 7 // tri3 +), +gsSPNTriangles_5b( + 2, 10, 8, // tri0 + 7, 0, 2, // tri1 + 9, 12, 11, // tri2 + 2, 8, 7 // tri3 +), +gsSPNTriangles_5b( + 9, 11, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_fox_model[] = { +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&fox_1_v[303], 4, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&fox_1_v[307], 14, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 0, 4, // tri0 + 0, 6, 5, // tri1 + 2, 8, 7 // tri2 +), +gsSPNTriangles_5b( + 0, 1, 9, // tri0 + 1, 2, 10, // tri1 + 2, 3, 11, // tri2 + 1, 12, 13 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 14, 15, 16, // tri0 + 17, 15, 14, // tri1 + 17, 16, 15 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_fox_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&fox_1_v[321], 7, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 1, 5, 2 // tri2 +), +gsSPNTriangles_5b( + 6, 4, 3, // tri0 + 6, 3, 0, // tri1 + 0, 2, 6, // tri2 + 4, 5, 1 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_fox_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&fox_1_v[278], 4, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&fox_1_v[282], 14, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 3, 4, // tri0 + 0, 6, 5, // tri1 + 2, 8, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 9, // tri0 + 2, 1, 10, // tri1 + 3, 2, 11, // tri2 + 1, 12, 13 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 14, 15, 16, // tri0 + 16, 15, 17, // tri1 + 15, 14, 17 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_fox_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&fox_1_v[296], 7, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 0, 5, 1 // tri2 +), +gsSPNTriangles_5b( + 4, 3, 6, // tri0 + 2, 4, 6, // tri1 + 6, 0, 2, // tri2 + 1, 5, 3 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx base_fox_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 48, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&fox_1_v[328], 26, 0), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 8, 2, 7, // tri0 + 7, 6, 8, // tri1 + 7, 5, 4, // tri2 + 2, 8, 0 // tri3 +), +gsSPNTriangles_5b( + 5, 9, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 19, // tri count + 10, 11, 12, // tri0 + 13, 14, 15, // tri1 + 13, 15, 16 // tri2 +), +gsSPNTriangles_5b( + 17, 18, 19, // tri0 + 16, 20, 13, // tri1 + 21, 15, 22, // tri2 + 18, 15, 21 // tri3 +), +gsSPNTriangles_5b( + 21, 22, 23, // tri0 + 23, 22, 24, // tri1 + 21, 23, 19, // tri2 + 16, 18, 17 // tri3 +), +gsSPNTriangles_5b( + 17, 19, 12, // tri0 + 14, 24, 22, // tri1 + 14, 22, 15, // tri2 + 16, 15, 18 // tri3 +), +gsSPNTriangles_5b( + 23, 12, 19, // tri0 + 12, 23, 25, // tri1 + 12, 25, 10, // tri2 + 24, 25, 23 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 48, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&fox_1_v[354], 14, 0), +gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 2, 8, 6, // tri0 + 5, 9, 10, // tri1 + 5, 10, 3, // tri2 + 6, 0, 2 // tri3 +), +gsSPNTriangles_5b( + 11, 7, 12, // tri0 + 12, 3, 10, // tri1 + 7, 11, 13, // tri2 + 10, 11, 12 // tri3 +), +gsSPNTriangles_5b( + 13, 0, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_fox_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_fox_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_fox_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_fox_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_fox_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_fox_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,-700 }, + /* joint 11 */ { tail1_fox_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_fox_model, 0, cKF_JOINT_FLAG_DISP_OPA, 800,0,0 }, + /* joint 13 */ { chest_fox_model, 3, cKF_JOINT_FLAG_DISP_OPA, 425,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 600,-500,0 }, + /* joint 15 */ { Larm1_fox_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_fox_model, 0, cKF_JOINT_FLAG_DISP_OPA, 450,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 600,500,0 }, + /* joint 18 */ { Rarm1_fox_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_fox_model, 1, cKF_JOINT_FLAG_DISP_OPA, 450,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 450,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 875,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 600,0,1550 }, + /* joint 23 */ { mouth_fox_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_fox_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1300,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_fox_1 = { 26, 14, cKF_je_r_fox_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/goa_1.c b/src/data/npc/model/mdl/goa_1.c new file mode 100644 index 00000000..aec033dc --- /dev/null +++ b/src/data/npc/model/mdl/goa_1.c @@ -0,0 +1,705 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx goa_1_v[] = { +#include "assets/npc/mdl/goa_1_v.inc" +}; + +static Gfx head_goa_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 32, 40, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&goa_1_v[7], 24, 0), +gsSPNTrianglesInit_5b( + 34, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 12, 13, 14, // tri1 + 15, 7, 6, // tri2 + 16, 12, 17 // tri3 +), +gsSPNTriangles_5b( + 1, 6, 11, // tri0 + 17, 5, 18, // tri1 + 6, 18, 15, // tri2 + 15, 18, 5 // tri3 +), +gsSPNTriangles_5b( + 19, 7, 15, // tri0 + 5, 4, 15, // tri1 + 0, 17, 1, // tri2 + 20, 8, 7 // tri3 +), +gsSPNTriangles_5b( + 21, 19, 4, // tri0 + 15, 4, 19, // tri1 + 7, 19, 20, // tri2 + 20, 22, 8 // tri3 +), +gsSPNTriangles_5b( + 23, 20, 19, // tri0 + 21, 22, 23, // tri1 + 3, 22, 21, // tri2 + 4, 3, 21 // tri3 +), +gsSPNTriangles_5b( + 23, 22, 20, // tri0 + 19, 21, 23, // tri1 + 12, 5, 17, // tri2 + 18, 6, 1 // tri3 +), +gsSPNTriangles_5b( + 1, 17, 18, // tri0 + 1, 11, 2, // tri1 + 5, 12, 14, // tri2 + 9, 11, 6 // tri3 +), +gsSPNTriangles_5b( + 5, 14, 3, // tri0 + 8, 9, 6, // tri1 + 16, 17, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&goa_1_v[31], 25, 0), +gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 9, 5, 4, // tri0 + 1, 0, 5, // tri1 + 5, 0, 10, // tri2 + 11, 4, 3 // tri3 +), +gsSPNTriangles_5b( + 12, 11, 3, // tri0 + 10, 0, 13, // tri1 + 7, 6, 10, // tri2 + 8, 12, 6 // tri3 +), +gsSPNTriangles_5b( + 3, 6, 12, // tri0 + 5, 9, 1, // tri1 + 10, 6, 3, // tri2 + 3, 5, 10 // tri3 +), +gsSPNTriangles_5b( + 2, 13, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 12, // tri count + 14, 15, 16, // tri0 + 17, 18, 19, // tri1 + 20, 21, 19 // tri2 +), +gsSPNTriangles_5b( + 17, 19, 21, // tri0 + 17, 15, 18, // tri1 + 22, 19, 18, // tri2 + 22, 18, 14 // tri3 +), +gsSPNTriangles_5b( + 15, 23, 24, // tri0 + 19, 22, 20, // tri1 + 24, 16, 15, // tri2 + 23, 15, 17 // tri3 +), +gsSPNTriangles_5b( + 14, 18, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&goa_1_v[56], 26, 0), +gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 8, 2, 1, // tri0 + 5, 7, 9, // tri1 + 9, 10, 3, // tri2 + 11, 12, 8 // tri3 +), +gsSPNTriangles_5b( + 13, 1, 14, // tri0 + 8, 1, 11, // tri1 + 14, 1, 0, // tri2 + 14, 0, 15 // tri3 +), +gsSPNTriangles_5b( + 15, 0, 5, // tri0 + 15, 5, 16, // tri1 + 16, 5, 4, // tri2 + 3, 5, 9 // tri3 +), +gsSPNTriangles_5b( + 2, 6, 0, // tri0 + 1, 13, 11, // tri1 + 7, 5, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 253, 255, 255, 255), +gsSPNTrianglesInit_5b( + 7, // tri count + 17, 18, 19, // tri0 + 20, 19, 21, // tri1 + 20, 22, 19 // tri2 +), +gsSPNTriangles_5b( + 21, 23, 20, // tri0 + 22, 17, 19, // tri1 + 24, 18, 17, // tri2 + 17, 25, 24 // tri3 +), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&goa_1_v[82], 31, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 2, 5, 0 // tri2 +), +gsSPNTriangles_5b( + 4, 3, 6, // tri0 + 4, 7, 1, // tri1 + 6, 8, 4, // tri2 + 1, 7, 2 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 13, // tri count + 9, 10, 11, // tri0 + 12, 13, 14, // tri1 + 14, 15, 9 // tri2 +), +gsSPNTriangles_5b( + 9, 15, 16, // tri0 + 12, 17, 18, // tri1 + 13, 19, 20, // tri2 + 14, 9, 11 // tri3 +), +gsSPNTriangles_5b( + 11, 17, 12, // tri0 + 21, 10, 9, // tri1 + 12, 18, 19, // tri2 + 16, 21, 9 // tri3 +), +gsSPNTriangles_5b( + 19, 13, 12, // tri0 + 11, 12, 14, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 22, 23, 24, // tri0 + 22, 24, 25, // tri1 + 25, 24, 26 // tri2 +), +gsSPNTriangles_5b( + 27, 28, 29, // tri0 + 29, 23, 22, // tri1 + 28, 27, 30, // tri2 + 22, 27, 29 // tri3 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&goa_1_v[113], 13, 0), +gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 2, 8, 5, // tri0 + 0, 3, 1, // tri1 + 5, 9, 0, // tri2 + 7, 9, 5 // tri3 +), +gsSPNTriangles_5b( + 10, 11, 1, // tri0 + 12, 4, 3, // tri1 + 2, 5, 0, // tri2 + 1, 11, 2 // tri3 +), +gsSPNTriangles_5b( + 5, 8, 6, // tri0 + 4, 10, 1, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx mouth_goa_model[] = { +gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&goa_1_v[0], 4, 0), +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&goa_1_v[4], 3, 4), +gsSPNTrianglesInit_5b( + 3, // tri count + 1, 4, 3, // tri0 + 2, 0, 5, // tri1 + 0, 3, 6 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_goa_model[] = { +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&goa_1_v[162], 5, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&goa_1_v[167], 16, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 0, 1, 11, // tri0 + 2, 4, 12, // tri1 + 0, 13, 14, // tri2 + 3, 0, 15 // tri3 +), +gsSPNTriangles_5b( + 4, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 20, 19, 18, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_goa_model[] = { +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&goa_1_v[183], 4, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&goa_1_v[187], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 2, 0, 8 // tri2 +), +gsSPNTriangles_5b( + 3, 2, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 1, 3, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_goa_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&goa_1_v[126], 5, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&goa_1_v[131], 16, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 +), +gsSPNTriangles_5b( + 3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_goa_model[] = { +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&goa_1_v[147], 4, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&goa_1_v[151], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_goa_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&goa_1_v[198], 7, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&goa_1_v[205], 20, 7), +gsSPNTrianglesInit_5b( + 13, // tri count + 0, 2, 7, // tri0 + 6, 8, 9, // tri1 + 0, 10, 11 // tri2 +), +gsSPNTriangles_5b( + 1, 12, 5, // tri0 + 1, 13, 14, // tri1 + 2, 16, 15, // tri2 + 5, 17, 18 // tri3 +), +gsSPNTriangles_5b( + 5, 19, 20, // tri0 + 2, 21, 22, // tri1 + 6, 0, 23, // tri2 + 1, 6, 24 // tri3 +), +gsSPNTriangles_5b( + 3, 5, 25, // tri0 + 4, 26, 2, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&goa_1_v[225], 10, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 5, 4, 8, // tri0 + 2, 6, 0, // tri1 + 1, 9, 2, // tri2 + 7, 4, 3 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail1_goa_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&goa_1_v[235], 11, 0), +gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 2, 4 // tri2 +), +gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 7, 1, 0, // tri1 + 5, 0, 8, // tri2 + 6, 5, 9 // tri3 +), +gsSPNTriangles_5b( + 0, 5, 7, // tri0 + 8, 9, 5, // tri1 + 3, 10, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_goa_model[] = { +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&goa_1_v[286], 5, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&goa_1_v[291], 16, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 2, 3, 5, // tri0 + 0, 2, 6, // tri1 + 3, 8, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 10, 9, // tri0 + 4, 1, 11, // tri1 + 2, 12, 13, // tri2 + 3, 4, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 15, 16, 17, // tri0 + 17, 18, 19, // tri1 + 15, 20, 16 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_goa_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&goa_1_v[307], 6, 0), +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&goa_1_v[313], 13, 6), +gsSPNTrianglesInit_5b( + 9, // tri count + 0, 6, 7, // tri0 + 2, 5, 8, // tri1 + 5, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 5, 1, 11, // tri0 + 0, 3, 12, // tri1 + 4, 2, 13, // tri2 + 3, 4, 14 // tri3 +), +gsSPNTriangles_5b( + 3, 15, 16, // tri0 + 2, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_goa_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&goa_1_v[246], 5, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&goa_1_v[251], 16, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 2, 5, // tri0 + 2, 0, 6, // tri1 + 3, 8, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 10, 9, // tri0 + 1, 4, 11, // tri1 + 2, 12, 13, // tri2 + 4, 3, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 15, 16, 17, // tri0 + 18, 19, 15, // tri1 + 16, 20, 17 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_goa_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&goa_1_v[267], 6, 0), +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&goa_1_v[273], 13, 6), +gsSPNTrianglesInit_5b( + 9, // tri count + 4, 6, 7, // tri0 + 3, 1, 8, // tri1 + 3, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 5, 3, 11, // tri0 + 2, 4, 12, // tri1 + 1, 0, 13, // tri2 + 0, 2, 14 // tri3 +), +gsSPNTriangles_5b( + 2, 15, 16, // tri0 + 1, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx base_goa_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&goa_1_v[326], 30, 0), +gsSPNTrianglesInit_5b( + 3, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 1, 6 // tri2 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), +gsSPNTrianglesInit_5b( + 14, // tri count + 7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 13, 14, 15 // tri2 +), +gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 9, 19, 7, // tri1 + 20, 11, 21, // tri2 + 20, 21, 17 // tri3 +), +gsSPNTriangles_5b( + 12, 15, 14, // tri0 + 11, 20, 12, // tri1 + 8, 7, 13, // tri2 + 13, 15, 8 // tri3 +), +gsSPNTriangles_5b( + 21, 18, 17, // tri0 + 14, 10, 12, // tri1 + 18, 22, 16, // tri2 + 0, 0, 0 // tri3 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 3, // tri count + 23, 24, 25, // tri0 + 26, 27, 28, // tri1 + 29, 24, 23 // tri2 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_goa_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_goa_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_goa_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_goa_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_goa_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_goa_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, -200,0,-600 }, + /* joint 11 */ { tail1_goa_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_goa_model, 3, cKF_JOINT_FLAG_DISP_OPA, 325,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,-450,0 }, + /* joint 15 */ { Larm1_goa_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_goa_model, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,450,0 }, + /* joint 18 */ { Rarm1_goa_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_goa_model, 1, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 675,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, -300,0,700 }, + /* joint 23 */ { mouth_goa_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_goa_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1000,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_goa_1 = { 26, 13, cKF_je_r_goa_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/gor_1.c b/src/data/npc/model/mdl/gor_1.c new file mode 100644 index 00000000..e82cf014 --- /dev/null +++ b/src/data/npc/model/mdl/gor_1.c @@ -0,0 +1,837 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx gor_1_v[] = { +#include "assets/npc/mdl/gor_1_v.inc" +}; + +static Gfx head_gor_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&gor_1_v[32], 10, 0), +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&gor_1_v[42], 21, 10), +gsSPNTrianglesInit_5b( + 13, // tri count + 9, 10, 11, // tri0 + 0, 7, 12, // tri1 + 0, 13, 14 // tri2 +), +gsSPNTriangles_5b( + 7, 15, 16, // tri0 + 0, 17, 18, // tri1 + 8, 19, 7, // tri2 + 0, 20, 9 // tri3 +), +gsSPNTriangles_5b( + 4, 21, 22, // tri0 + 1, 9, 23, // tri1 + 1, 24, 25, // tri2 + 8, 4, 26 // tri3 +), +gsSPNTriangles_5b( + 8, 27, 28, // tri0 + 9, 29, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&gor_1_v[63], 13, 10), +gsSPNTrianglesInit_5b( + 3, // tri count + 9, 10, 11, // tri0 + 8, 12, 13, // tri1 + 8, 14, 15 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 252, 124), +gsSPNTrianglesInit_5b( + 5, // tri count + 5, 16, 17, // tri0 + 5, 2, 18, // tri1 + 6, 19, 20 // tri2 +), +gsSPNTriangles_5b( + 3, 6, 21, // tri0 + 6, 5, 22, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&gor_1_v[76], 21, 0), +gsSPNTrianglesInit_5b( + 25, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 2, 5, 3 // tri2 +), +gsSPNTriangles_5b( + 5, 6, 3, // tri0 + 6, 7, 3, // tri1 + 8, 5, 2, // tri2 + 6, 5, 8 // tri3 +), +gsSPNTriangles_5b( + 9, 7, 6, // tri0 + 2, 4, 0, // tri1 + 6, 10, 9, // tri2 + 9, 10, 11 // tri3 +), +gsSPNTriangles_5b( + 2, 1, 8, // tri0 + 1, 12, 13, // tri1 + 0, 14, 15, // tri2 + 16, 17, 10 // tri3 +), +gsSPNTriangles_5b( + 15, 18, 12, // tri0 + 15, 1, 0, // tri1 + 10, 8, 16, // tri2 + 13, 8, 1 // tri3 +), +gsSPNTriangles_5b( + 13, 16, 8, // tri0 + 11, 10, 17, // tri1 + 8, 10, 6, // tri2 + 11, 19, 9 // tri3 +), +gsSPNTriangles_5b( + 17, 20, 11, // tri0 + 12, 1, 15, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&gor_1_v[97], 22, 0), +gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 5, 0, 4 // tri2 +), +gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 9, 1, 0, // tri1 + 2, 1, 10, // tri2 + 11, 12, 13 // tri3 +), +gsSPNTriangles_5b( + 2, 3, 0, // tri0 + 14, 7, 15, // tri1 + 15, 16, 14, // tri2 + 8, 7, 17 // tri3 +), +gsSPNTriangles_5b( + 18, 13, 19, // tri0 + 7, 14, 10, // tri1 + 18, 14, 20, // tri2 + 20, 11, 18 // tri3 +), +gsSPNTriangles_5b( + 14, 16, 20, // tri0 + 18, 19, 10, // tri1 + 9, 8, 17, // tri2 + 0, 5, 9 // tri3 +), +gsSPNTriangles_5b( + 7, 6, 15, // tri0 + 10, 1, 9, // tri1 + 19, 13, 2, // tri2 + 9, 17, 10 // tri3 +), +gsSPNTriangles_5b( + 10, 17, 7, // tri0 + 10, 19, 2, // tri1 + 10, 14, 18, // tri2 + 13, 18, 11 // tri3 +), +gsSPNTriangles_5b( + 8, 21, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&gor_1_v[119], 29, 0), +gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 9, 6, 10, // tri0 + 3, 5, 11, // tri1 + 2, 12, 13, // tri2 + 14, 15, 16 // tri3 +), +gsSPNTriangles_5b( + 17, 16, 10, // tri0 + 18, 19, 9, // tri1 + 17, 20, 14, // tri2 + 16, 17, 14 // tri3 +), +gsSPNTriangles_5b( + 18, 9, 16, // tri0 + 0, 10, 8, // tri1 + 10, 16, 9, // tri2 + 10, 0, 17 // tri3 +), +gsSPNTriangles_5b( + 6, 9, 11, // tri0 + 20, 17, 21, // tri1 + 5, 7, 6, // tri2 + 16, 15, 18 // tri3 +), +gsSPNTriangles_5b( + 21, 17, 0, // tri0 + 8, 10, 6, // tri1 + 8, 1, 0, // tri2 + 21, 2, 13 // tri3 +), +gsSPNTriangles_5b( + 13, 20, 21, // tri0 + 0, 2, 21, // tri1 + 11, 9, 19, // tri2 + 11, 19, 3 // tri3 +), +gsSPNTriangles_5b( + 11, 5, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), +gsDPSetTileSize(0, 0, 0, 60, 60), +gsSPNTrianglesInit_5b( + 5, // tri count + 22, 23, 24, // tri0 + 25, 26, 23, // tri1 + 25, 23, 22 // tri2 +), +gsSPNTriangles_5b( + 27, 26, 25, // tri0 + 27, 25, 28, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&gor_1_v[148], 20, 0), +gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 0, 2 // tri2 +), +gsSPNTriangles_5b( + 7, 8, 6, // tri0 + 5, 9, 3, // tri1 + 2, 7, 6, // tri2 + 10, 11, 12 // tri3 +), +gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 10, 12, 16, // tri1 + 16, 17, 18, // tri2 + 15, 19, 13 // tri3 +), +gsSPNTriangles_5b( + 16, 18, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx mouth_gor_model[] = { +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&gor_1_v[0], 7, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), +gsDPSetTileSize(0, 0, 0, 60, 60), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&gor_1_v[7], 18, 7), +gsSPNTrianglesInit_5b( + 2, // tri count + 3, 7, 8, // tri0 + 3, 9, 0, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), +gsDPSetTileSize(0, 0, 0, 60, 60), +gsSPNTrianglesInit_5b( + 7, // tri count + 2, 4, 10, // tri0 + 5, 11, 12, // tri1 + 4, 6, 13 // tri2 +), +gsSPNTriangles_5b( + 4, 14, 15, // tri0 + 5, 1, 16, // tri1 + 6, 5, 17, // tri2 + 6, 18, 19 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), +gsDPSetTileSize(0, 0, 0, 60, 60), +gsSPNTrianglesInit_5b( + 3, // tri count + 20, 21, 22, // tri0 + 22, 23, 24, // tri1 + 22, 24, 20 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), +gsDPSetTileSize(0, 0, 0, 60, 60), +gsSPVertex(&gor_1_v[25], 7, 0), +gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 5, 0 // tri2 +), +gsSPNTriangles_5b( + 6, 3, 5, // tri0 + 0, 2, 6, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_gor_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&gor_1_v[214], 4, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 60), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&gor_1_v[218], 21, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 5, 4, // tri0 + 0, 7, 6, // tri1 + 1, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 1, 10, // tri0 + 0, 2, 11, // tri1 + 3, 0, 12, // tri2 + 1, 3, 13 // tri3 +), +gsSPNTriangles_5b( + 0, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 8, // tri count + 16, 17, 18, // tri0 + 18, 19, 20, // tri1 + 20, 19, 21 // tri2 +), +gsSPNTriangles_5b( + 19, 22, 23, // tri0 + 24, 18, 17, // tri1 + 24, 22, 18, // tri2 + 18, 22, 19 // tri3 +), +gsSPNTriangles_5b( + 23, 22, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_gor_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&gor_1_v[239], 5, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 60), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&gor_1_v[244], 16, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 4, 6, 5, // tri0 + 0, 8, 7, // tri1 + 4, 0, 9 // tri2 +), +gsSPNTriangles_5b( + 1, 10, 11, // tri0 + 1, 12, 0, // tri1 + 4, 13, 3, // tri2 + 2, 3, 14 // tri3 +), +gsSPNTriangles_5b( + 3, 16, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 20, 18, 17, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_gor_model[] = { +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&gor_1_v[168], 4, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 60), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&gor_1_v[172], 21, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 1, 5, 4, // tri0 + 3, 7, 6, // tri1 + 0, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 0, 1, 10, // tri0 + 3, 11, 12, // tri1 + 3, 2, 13, // tri2 + 2, 0, 14 // tri3 +), +gsSPNTriangles_5b( + 1, 3, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 8, // tri count + 16, 17, 18, // tri0 + 18, 19, 20, // tri1 + 21, 19, 18 // tri2 +), +gsSPNTriangles_5b( + 21, 22, 23, // tri0 + 17, 16, 24, // tri1 + 16, 22, 24, // tri2 + 23, 22, 16 // tri3 +), +gsSPNTriangles_5b( + 24, 22, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_gor_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&gor_1_v[193], 5, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 60), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&gor_1_v[198], 16, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 4, 6, 5, // tri0 + 2, 8, 7, // tri1 + 2, 4, 9 // tri2 +), +gsSPNTriangles_5b( + 3, 10, 11, // tri0 + 2, 12, 3, // tri1 + 0, 13, 4, // tri2 + 1, 3, 14 // tri3 +), +gsSPNTriangles_5b( + 1, 16, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 19, 18, 20, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_gor_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&gor_1_v[260], 10, 0), +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&gor_1_v[270], 8, 10), +gsSPNTrianglesInit_5b( + 6, // tri count + 2, 10, 11, // tri0 + 2, 12, 13, // tri1 + 1, 7, 14 // tri2 +), +gsSPNTriangles_5b( + 9, 0, 15, // tri0 + 2, 1, 16, // tri1 + 0, 2, 17, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 252, 124), +gsSPVertex(&gor_1_v[278], 17, 10), +gsSPNTrianglesInit_5b( + 10, // tri count + 3, 4, 10, // tri0 + 4, 12, 11, // tri1 + 3, 13, 14 // tri2 +), +gsSPNTriangles_5b( + 4, 15, 16, // tri0 + 4, 8, 17, // tri1 + 6, 18, 19, // tri2 + 6, 3, 20 // tri3 +), +gsSPNTriangles_5b( + 5, 21, 22, // tri0 + 8, 23, 24, // tri1 + 8, 25, 26, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&gor_1_v[295], 19, 0), +gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 7, 6, 9, // tri0 + 10, 11, 12, // tri1 + 9, 5, 4, // tri2 + 4, 7, 9 // tri3 +), +gsSPNTriangles_5b( + 8, 13, 6, // tri0 + 5, 14, 3, // tri1 + 2, 15, 16, // tri2 + 12, 17, 18 // tri3 +), +gsSPNTriangles_5b( + 2, 16, 0, // tri0 + 18, 10, 12, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_gor_model[] = { +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&gor_1_v[359], 4, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&gor_1_v[363], 18, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 3, 4, // tri0 + 1, 5, 6, // tri1 + 0, 2, 7 // tri2 +), +gsSPNTriangles_5b( + 2, 8, 9, // tri0 + 1, 10, 3, // tri1 + 1, 0, 11, // tri2 + 1, 13, 12 // tri3 +), +gsSPNTriangles_5b( + 2, 15, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 6, // tri count + 16, 17, 18, // tri0 + 19, 17, 16, // tri1 + 20, 21, 18 // tri2 +), +gsSPNTriangles_5b( + 18, 17, 19, // tri0 + 16, 20, 19, // tri1 + 19, 20, 18, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_gor_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&gor_1_v[381], 9, 0), +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 60), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&gor_1_v[390], 14, 9), +gsSPNTrianglesInit_5b( + 2, // tri count + 5, 9, 10, // tri0 + 5, 12, 11, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 13, // tri0 + 1, 3, 14, // tri1 + 1, 15, 16 // tri2 +), +gsSPNTriangles_5b( + 6, 0, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), +gsDPSetTileSize(0, 0, 0, 60, 60), +gsSPNTrianglesInit_5b( + 4, // tri count + 8, 18, 4, // tri0 + 4, 19, 20, // tri1 + 2, 4, 21 // tri2 +), +gsSPNTriangles_5b( + 7, 22, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_gor_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&gor_1_v[314], 4, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&gor_1_v[318], 18, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 3, 2, 4, // tri0 + 0, 5, 6, // tri1 + 2, 1, 7 // tri2 +), +gsSPNTriangles_5b( + 2, 8, 9, // tri0 + 3, 10, 0, // tri1 + 1, 0, 11, // tri2 + 0, 13, 12 // tri3 +), +gsSPNTriangles_5b( + 2, 15, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 6, // tri count + 16, 17, 18, // tri0 + 18, 17, 19, // tri1 + 16, 20, 21 // tri2 +), +gsSPNTriangles_5b( + 19, 17, 16, // tri0 + 19, 21, 18, // tri1 + 16, 21, 19, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_gor_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&gor_1_v[336], 9, 0), +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 60), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&gor_1_v[345], 14, 9), +gsSPNTrianglesInit_5b( + 2, // tri count + 6, 10, 9, // tri0 + 6, 11, 12, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 4, // tri count + 1, 13, 14, // tri0 + 0, 4, 15, // tri1 + 1, 0, 16 // tri2 +), +gsSPNTriangles_5b( + 8, 1, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), +gsDPSetTileSize(0, 0, 0, 60, 60), +gsSPNTrianglesInit_5b( + 4, // tri count + 3, 18, 19, // tri0 + 5, 7, 20, // tri1 + 3, 2, 21 // tri2 +), +gsSPNTriangles_5b( + 3, 22, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx base_gor_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&gor_1_v[404], 25, 0), +gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 2, 1, 3 // tri2 +), +gsSPNTriangles_5b( + 1, 5, 6, // tri0 + 1, 6, 3, // tri1 + 7, 4, 8, // tri2 + 9, 10, 11 // tri3 +), +gsSPNTriangles_5b( + 2, 9, 0, // tri0 + 8, 12, 7, // tri1 + 11, 0, 9, // tri2 + 4, 7, 2 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), +gsDPSetTileSize(0, 0, 0, 60, 60), +gsSPNTrianglesInit_5b( + 8, // tri count + 13, 14, 15, // tri0 + 13, 15, 16, // tri1 + 17, 14, 13 // tri2 +), +gsSPNTriangles_5b( + 13, 18, 17, // tri0 + 19, 20, 16, // tri1 + 15, 14, 21, // tri2 + 16, 15, 19 // tri3 +), +gsSPNTriangles_5b( + 22, 23, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_gor_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_gor_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-400,0 }, + /* joint 3 */ { Lfoot1_gor_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_gor_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,400,0 }, + /* joint 7 */ { Rfoot1_gor_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_gor_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 75,0,-875 }, + /* joint 11 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_gor_model, 3, cKF_JOINT_FLAG_DISP_OPA, 546,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 825,-1400,350 }, + /* joint 15 */ { Larm1_gor_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_gor_model, 0, cKF_JOINT_FLAG_DISP_OPA, 658,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 825,1400,350 }, + /* joint 18 */ { Rarm1_gor_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_gor_model, 1, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 1187,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 137,0,750 }, + /* joint 23 */ { mouth_gor_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_gor_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1300,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_gor_1 = { 26, 12, cKF_je_r_gor_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/grf_1.c b/src/data/npc/model/mdl/grf_1.c new file mode 100644 index 00000000..362e1ce2 --- /dev/null +++ b/src/data/npc/model/mdl/grf_1.c @@ -0,0 +1,854 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx grf_1_v[] = { +#include "assets/npc/mdl/grf_1_v.inc" +}; + +static Gfx head_grf_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&grf_1_v[32], 6, 0), +gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&grf_1_v[38], 20, 6), +gsSPNTrianglesInit_5b( + 10, // tri count + 1, 2, 6, // tri0 + 3, 5, 7, // tri1 + 5, 0, 8 // tri2 +), +gsSPNTriangles_5b( + 0, 10, 9, // tri0 + 5, 11, 12, // tri1 + 2, 4, 13, // tri2 + 1, 14, 15 // tri3 +), +gsSPNTriangles_5b( + 0, 16, 17, // tri0 + 0, 1, 18, // tri1 + 2, 19, 20, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 3, // tri count + 21, 22, 23, // tri0 + 21, 24, 22, // tri1 + 25, 22, 24 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&grf_1_v[58], 10, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 2 // tri2 +), +gsSPNTriangles_5b( + 2, 1, 6, // tri0 + 5, 4, 8, // tri1 + 5, 9, 3, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&grf_1_v[68], 30, 0), +gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 1, 9, 2, // tri0 + 8, 10, 6, // tri1 + 7, 11, 8, // tri2 + 4, 12, 13 // tri3 +), +gsSPNTriangles_5b( + 4, 13, 14, // tri0 + 0, 2, 15, // tri1 + 16, 13, 12, // tri2 + 17, 18, 19 // tri3 +), +gsSPNTriangles_5b( + 20, 21, 22, // tri0 + 12, 4, 3, // tri1 + 12, 3, 23, // tri2 + 18, 24, 19 // tri3 +), +gsSPNTriangles_5b( + 25, 5, 4, // tri0 + 4, 14, 25, // tri1 + 12, 26, 16, // tri2 + 20, 22, 27 // tri3 +), +gsSPNTriangles_5b( + 26, 12, 23, // tri0 + 1, 28, 9, // tri1 + 29, 6, 10, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&grf_1_v[98], 26, 0), +gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 5, 0 // tri2 +), +gsSPNTriangles_5b( + 6, 7, 3, // tri0 + 2, 3, 8, // tri1 + 3, 1, 9, // tri2 + 0, 10, 11 // tri3 +), +gsSPNTriangles_5b( + 12, 8, 3, // tri0 + 13, 0, 11, // tri1 + 12, 3, 7, // tri2 + 0, 13, 4 // tri3 +), +gsSPNTriangles_5b( + 5, 1, 0, // tri0 + 3, 9, 6, // tri1 + 10, 0, 2, // tri2 + 2, 14, 10 // tri3 +), +gsSPNTriangles_5b( + 8, 14, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 12, // tri count + 15, 16, 17, // tri0 + 17, 18, 15, // tri1 + 17, 16, 19 // tri2 +), +gsSPNTriangles_5b( + 19, 20, 21, // tri0 + 21, 22, 18, // tri1 + 18, 19, 21, // tri2 + 21, 20, 22 // tri3 +), +gsSPNTriangles_5b( + 23, 19, 16, // tri0 + 24, 16, 15, // tri1 + 22, 20, 25, // tri2 + 20, 19, 23 // tri3 +), +gsSPNTriangles_5b( + 17, 19, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&grf_1_v[124], 19, 0), +gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 4, 7, 8, // tri0 + 2, 1, 3, // tri1 + 4, 6, 9, // tri2 + 8, 5, 4 // tri3 +), +gsSPNTriangles_5b( + 9, 7, 4, // tri0 + 6, 5, 8, // tri1 + 6, 8, 9, // tri2 + 3, 1, 10 // tri3 +), +gsSPNTriangles_5b( + 10, 11, 3, // tri0 + 3, 11, 0, // tri1 + 0, 10, 1, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 8, 15, GX_MIRROR, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 28), +gsSPNTrianglesInit_5b( + 5, // tri count + 12, 13, 14, // tri0 + 12, 15, 16, // tri1 + 14, 13, 17 // tri2 +), +gsSPNTriangles_5b( + 16, 13, 12, // tri0 + 17, 18, 14, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&grf_1_v[143], 21, 0), +gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 9, 10, 5, // tri0 + 11, 9, 12, // tri1 + 12, 13, 11, // tri2 + 7, 6, 14 // tri3 +), +gsSPNTriangles_5b( + 13, 12, 15, // tri0 + 13, 15, 16, // tri1 + 3, 5, 17, // tri2 + 6, 15, 18 // tri3 +), +gsSPNTriangles_5b( + 1, 14, 6, // tri0 + 11, 19, 9, // tri1 + 8, 16, 15, // tri2 + 10, 9, 19 // tri3 +), +gsSPNTriangles_5b( + 1, 18, 20, // tri0 + 15, 6, 8, // tri1 + 5, 4, 9, // tri2 + 4, 12, 9 // tri3 +), +gsSPNTriangles_5b( + 18, 1, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx mouth_grf_model[] = { +gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&grf_1_v[0], 7, 0), +gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&grf_1_v[7], 18, 7), +gsSPNTrianglesInit_5b( + 2, // tri count + 3, 7, 1, // tri0 + 1, 8, 9, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 5, 10, // tri0 + 6, 0, 11, // tri1 + 4, 6, 12 // tri2 +), +gsSPNTriangles_5b( + 5, 13, 14, // tri0 + 6, 15, 16, // tri1 + 2, 17, 18, // tri2 + 0, 19, 20 // tri3 +), +gsSPNTriangles_5b( + 5, 4, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 1, // tri count + 22, 23, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&grf_1_v[25], 7, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 2, 4, 0 // tri2 +), +gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 1, 6, 3, // tri1 + 4, 2, 3, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_grf_model[] = { +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&grf_1_v[198], 4, 0), +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&grf_1_v[202], 16, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 4, 5, // tri0 + 3, 6, 7, // tri1 + 3, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 2, 0, 10, // tri0 + 0, 3, 11, // tri1 + 2, 12, 13, // tri2 + 1, 2, 14 // tri3 +), +gsSPNTriangles_5b( + 3, 1, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 16, 17, 18, // tri0 + 19, 18, 17, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_grf_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&grf_1_v[218], 3, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&grf_1_v[221], 11, 3), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 3, // tri0 + 1, 5, 4, // tri1 + 2, 7, 6 // tri2 +), +gsSPNTriangles_5b( + 1, 2, 8, // tri0 + 2, 0, 9, // tri1 + 0, 10, 11, // tri2 + 1, 12, 13 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_grf_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&grf_1_v[164], 4, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&grf_1_v[168], 16, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 4, 5, // tri0 + 3, 6, 7, // tri1 + 3, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 0, 2, 10, // tri0 + 3, 0, 11, // tri1 + 2, 12, 13, // tri2 + 2, 1, 14 // tri3 +), +gsSPNTriangles_5b( + 1, 3, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_grf_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&grf_1_v[184], 3, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&grf_1_v[187], 11, 3), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 2, 3, // tri0 + 0, 5, 4, // tri1 + 1, 7, 6 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 8, // tri0 + 2, 1, 9, // tri1 + 2, 10, 11, // tri2 + 0, 12, 13 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_grf_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&grf_1_v[232], 10, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&grf_1_v[242], 22, 10), +gsSPNTrianglesInit_5b( + 14, // tri count + 9, 10, 11, // tri0 + 9, 12, 13, // tri1 + 8, 0, 14 // tri2 +), +gsSPNTriangles_5b( + 9, 6, 15, // tri0 + 0, 7, 16, // tri1 + 8, 17, 18, // tri2 + 4, 8, 19 // tri3 +), +gsSPNTriangles_5b( + 3, 20, 21, // tri0 + 4, 22, 23, // tri1 + 7, 1, 24, // tri2 + 1, 25, 26 // tri3 +), +gsSPNTriangles_5b( + 6, 27, 28, // tri0 + 3, 9, 29, // tri1 + 7, 30, 31, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&grf_1_v[264], 21, 10), +gsSPNTrianglesInit_5b( + 2, // tri count + 2, 3, 10, // tri0 + 6, 5, 11, // tri1 + 0, 0, 0 // tri2 +), +gsSPNTrianglesInit_5b( + 15, // tri count + 12, 13, 14, // tri0 + 15, 16, 12, // tri1 + 17, 18, 19 // tri2 +), +gsSPNTriangles_5b( + 20, 21, 22, // tri0 + 22, 21, 23, // tri1 + 17, 19, 23, // tri2 + 14, 13, 24 // tri3 +), +gsSPNTriangles_5b( + 20, 22, 25, // tri0 + 15, 26, 16, // tri1 + 13, 12, 16, // tri2 + 27, 19, 18 // tri3 +), +gsSPNTriangles_5b( + 28, 23, 21, // tri0 + 28, 17, 23, // tri1 + 26, 15, 29, // tri2 + 30, 14, 24 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&grf_1_v[285], 20, 0), +gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 3, 1, 4 // tri2 +), +gsSPNTriangles_5b( + 1, 3, 2, // tri0 + 5, 6, 7, // tri1 + 7, 6, 8, // tri2 + 4, 0, 2 // tri3 +), +gsSPNTriangles_5b( + 1, 0, 4, // tri0 + 9, 5, 10, // tri1 + 11, 12, 13, // tri2 + 12, 11, 14 // tri3 +), +gsSPNTriangles_5b( + 12, 14, 13, // tri0 + 15, 11, 13, // tri1 + 11, 15, 14, // tri2 + 14, 15, 13 // tri3 +), +gsSPNTriangles_5b( + 16, 8, 17, // tri0 + 18, 17, 9, // tri1 + 18, 9, 19, // tri2 + 17, 18, 16 // tri3 +), +gsSPNTriangles_5b( + 8, 16, 7, // tri0 + 7, 10, 5, // tri1 + 10, 19, 9, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&grf_1_v[305], 12, 0), +gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 9, 10, 7, // tri1 + 2, 8, 7, // tri2 + 1, 0, 6 // tri3 +), +gsSPNTriangles_5b( + 6, 11, 4, // tri0 + 7, 3, 2, // tri1 + 6, 5, 1, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail1_grf_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&grf_1_v[328], 6, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 3 // tri2 +), +gsSPNTriangles_5b( + 4, 3, 2, // tri0 + 0, 5, 4, // tri1 + 0, 4, 1, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail2_grf_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&grf_1_v[317], 3, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&grf_1_v[320], 8, 3), +gsSPNTrianglesInit_5b( + 3, // tri count + 2, 3, 0, // tri0 + 1, 4, 2, // tri1 + 0, 5, 1 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 6, 7, 8, // tri0 + 7, 6, 9, // tri1 + 9, 6, 10 // tri2 +), +gsSPNTriangles_5b( + 9, 8, 7, // tri0 + 10, 6, 8, // tri1 + 8, 9, 10, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_grf_model[] = { +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&grf_1_v[374], 4, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000680, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&grf_1_v[378], 18, 4), +gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 4, // tri0 + 0, 5, 6, // tri1 + 1, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 9, 10, // tri0 + 2, 1, 11, // tri1 + 1, 2, 12, // tri2 + 0, 13, 14 // tri3 +), +gsSPNTriangles_5b( + 2, 0, 15, // tri0 + 2, 16, 17, // tri1 + 1, 3, 18, // tri2 + 3, 2, 19 // tri3 +), +gsSPNTriangles_5b( + 2, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&grf_1_v[396], 10, 0), +gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 9, 7, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_grf_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000680, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&grf_1_v[406], 8, 0), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 4, 3, 5 // tri2 +), +gsSPNTriangles_5b( + 5, 1, 6, // tri0 + 2, 7, 0, // tri1 + 4, 7, 2, // tri2 + 6, 4, 5 // tri3 +), +gsSPNTriangles_5b( + 0, 6, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_grf_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&grf_1_v[334], 4, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000680, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&grf_1_v[338], 18, 4), +gsSPNTrianglesInit_5b( + 12, // tri count + 1, 0, 4, // tri0 + 0, 5, 6, // tri1 + 1, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 9, 10, // tri0 + 1, 2, 11, // tri1 + 2, 1, 12, // tri2 + 0, 13, 14 // tri3 +), +gsSPNTriangles_5b( + 0, 2, 15, // tri0 + 2, 16, 17, // tri1 + 3, 1, 18, // tri2 + 2, 3, 19 // tri3 +), +gsSPNTriangles_5b( + 2, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&grf_1_v[356], 10, 0), +gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 8, 7, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_grf_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000680, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&grf_1_v[366], 8, 0), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 4, 3 // tri2 +), +gsSPNTriangles_5b( + 6, 1, 5, // tri0 + 2, 7, 0, // tri1 + 0, 7, 3, // tri2 + 5, 3, 6 // tri3 +), +gsSPNTriangles_5b( + 1, 6, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx base_grf_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000680, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&grf_1_v[414], 16, 0), +gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 +), +gsSPNTriangles_5b( + 3, 7, 6, // tri0 + 4, 6, 8, // tri1 + 8, 9, 4, // tri2 + 10, 9, 8 // tri3 +), +gsSPNTriangles_5b( + 2, 5, 11, // tri0 + 2, 11, 12, // tri1 + 13, 14, 15, // tri2 + 15, 12, 13 // tri3 +), +gsSPNTriangles_5b( + 12, 11, 13, // tri0 + 3, 2, 1, // tri1 + 3, 5, 2, // tri2 + 13, 10, 14 // tri3 +), +gsSPNTriangles_5b( + 9, 13, 11, // tri0 + 7, 3, 1, // tri1 + 9, 10, 13, // tri2 + 9, 11, 5 // tri3 +), +gsSPNTriangles_5b( + 9, 5, 4, // tri0 + 12, 15, 0, // tri1 + 2, 12, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_grf_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_grf_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-400,0 }, + /* joint 3 */ { Lfoot1_grf_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_grf_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,400,0 }, + /* joint 7 */ { Rfoot1_grf_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_grf_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 650,0,-800 }, + /* joint 11 */ { tail1_grf_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_grf_model, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_grf_model, 3, cKF_JOINT_FLAG_DISP_OPA, 667,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 800,-800,0 }, + /* joint 15 */ { Larm1_grf_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_grf_model, 0, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 800,800,0 }, + /* joint 18 */ { Rarm1_grf_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_grf_model, 1, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 2279,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 350,0,750 }, + /* joint 23 */ { mouth_grf_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_grf_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1153,0,400 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_grf_1 = { 26, 14, cKF_je_r_grf_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/gst_1.c b/src/data/npc/model/mdl/gst_1.c new file mode 100644 index 00000000..e85e372f --- /dev/null +++ b/src/data/npc/model/mdl/gst_1.c @@ -0,0 +1,456 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx gst_1_v[] = { +#include "assets/npc/mdl/gst_1_v.inc" +}; + +static Gfx head_gst_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, PRIMITIVE, 0, ENVIRONMENT, 0, COMBINED, 0, PRIM_LOD_FRAC, COMBINED, 0, 0, 0, COMBINED), +gsDPSetPrimColor(0, 127, 255, 255, 255, 180), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&gst_1_v[0], 13, 0), +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&gst_1_v[13], 19, 13), +gsSPNTrianglesInit_5b( + 13, // tri count + 10, 13, 14, // tri0 + 9, 1, 15, // tri1 + 0, 7, 16 // tri2 +), +gsSPNTriangles_5b( + 0, 18, 17, // tri0 + 6, 4, 19, // tri1 + 2, 5, 20, // tri2 + 3, 21, 22 // tri3 +), +gsSPNTriangles_5b( + 2, 23, 1, // tri0 + 0, 24, 4, // tri1 + 11, 25, 26, // tri2 + 3, 6, 27 // tri3 +), +gsSPNTriangles_5b( + 1, 29, 28, // tri0 + 5, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&gst_1_v[32], 15, 13), +gsSPNTrianglesInit_5b( + 9, // tri count + 6, 13, 14, // tri0 + 12, 15, 16, // tri1 + 8, 17, 18 // tri2 +), +gsSPNTriangles_5b( + 8, 11, 19, // tri0 + 12, 10, 20, // tri1 + 1, 21, 22, // tri2 + 0, 23, 24 // tri3 +), +gsSPNTriangles_5b( + 5, 3, 25, // tri0 + 3, 26, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&gst_1_v[47], 13, 0), +gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 4, 1, 3 // tri2 +), +gsSPNTriangles_5b( + 2, 1, 4, // tri0 + 5, 6, 2, // tri1 + 3, 7, 8, // tri2 + 8, 9, 4 // tri3 +), +gsSPNTriangles_5b( + 4, 3, 8, // tri0 + 4, 9, 5, // tri1 + 2, 6, 10, // tri2 + 10, 11, 0 // tri3 +), +gsSPNTriangles_5b( + 0, 2, 10, // tri0 + 0, 11, 12, // tri1 + 4, 5, 2, // tri2 + 12, 7, 3 // tri3 +), +gsSPNTriangles_5b( + 3, 0, 12, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&gst_1_v[60], 32, 0), +gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 5, 7 // tri2 +), +gsSPNTriangles_5b( + 2, 1, 8, // tri0 + 2, 8, 9, // tri1 + 10, 11, 4, // tri2 + 11, 12, 5 // tri3 +), +gsSPNTriangles_5b( + 5, 12, 13, // tri0 + 14, 15, 16, // tri1 + 17, 18, 10, // tri2 + 11, 10, 18 // tri3 +), +gsSPNTriangles_5b( + 19, 20, 21, // tri0 + 19, 21, 0, // tri1 + 15, 14, 22, // tri2 + 22, 23, 15 // tri3 +), +gsSPNTriangles_5b( + 22, 24, 25, // tri0 + 5, 4, 11, // tri1 + 26, 16, 15, // tri2 + 27, 26, 28 // tri3 +), +gsSPNTriangles_5b( + 27, 28, 29, // tri0 + 2, 30, 18, // tri1 + 2, 18, 0, // tri2 + 21, 20, 8 // tri3 +), +gsSPVertex(&gst_1_v[91], 32, 0), +gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 5, 11, 12, // tri2 + 13, 14, 15 // tri3 +), +gsSPNTriangles_5b( + 12, 6, 5, // tri0 + 7, 6, 12, // tri1 + 3, 12, 11, // tri2 + 3, 11, 0 // tri3 +), +gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 19, 18, 20, // tri1 + 7, 12, 3, // tri2 + 7, 21, 22 // tri3 +), +gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 23, 25, 26, // tri1 + 23, 15, 14, // tri2 + 27, 2, 28 // tri3 +), +gsSPNTriangles_5b( + 18, 17, 29, // tri0 + 30, 31, 16, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&gst_1_v[123], 21, 0), +gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 3, 0 // tri2 +), +gsSPNTriangles_5b( + 6, 3, 5, // tri0 + 7, 8, 1, // tri1 + 4, 8, 7, // tri2 + 9, 10, 4 // tri3 +), +gsSPNTriangles_5b( + 11, 10, 9, // tri0 + 12, 6, 11, // tri1 + 13, 14, 1, // tri2 + 15, 16, 17 // tri3 +), +gsSPNTriangles_5b( + 18, 19, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&gst_1_v[144], 19, 0), +gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 3 // tri2 +), +gsSPNTriangles_5b( + 6, 8, 2, // tri0 + 9, 10, 4, // tri1 + 2, 8, 11, // tri2 + 12, 13, 0 // tri3 +), +gsSPNTriangles_5b( + 14, 5, 4, // tri0 + 2, 15, 0, // tri1 + 3, 8, 6, // tri2 + 16, 15, 2 // tri3 +), +gsSPNTriangles_5b( + 2, 1, 6, // tri0 + 11, 8, 3, // tri1 + 5, 11, 3, // tri2 + 2, 11, 16 // tri3 +), +gsSPNTriangles_5b( + 17, 12, 15, // tri0 + 18, 4, 3, // tri1 + 0, 15, 12, // tri2 + 15, 16, 17 // tri3 +), +gsSPNTriangles_5b( + 4, 10, 14, // tri0 + 4, 18, 9, // tri1 + 3, 7, 18, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&gst_1_v[163], 15, 0), +gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 3, 8, 7, // tri0 + 9, 2, 1, // tri1 + 4, 3, 6, // tri2 + 10, 11, 6 // tri3 +), +gsSPNTriangles_5b( + 6, 11, 4, // tri0 + 7, 6, 3, // tri1 + 2, 10, 0, // tri2 + 6, 0, 10 // tri3 +), +gsSPNTriangles_5b( + 5, 12, 3, // tri0 + 7, 13, 0, // tri1 + 12, 5, 14, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx feel_gst_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, PRIMITIVE, 0, ENVIRONMENT, 0, COMBINED, 0, PRIM_LOD_FRAC, COMBINED, 0, 0, 0, COMBINED), +gsDPSetPrimColor(0, 20, 255, 255, 255, 255), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&gst_1_v[178], 4, 0), +gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_gst_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, PRIMITIVE, 0, ENVIRONMENT, 0, COMBINED, 0, PRIM_LOD_FRAC, COMBINED, 0, 0, 0, COMBINED), +gsDPSetPrimColor(0, 127, 255, 255, 255, 180), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&gst_1_v[182], 10, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&gst_1_v[192], 22, 10), +gsSPNTrianglesInit_5b( + 14, // tri count + 8, 2, 10, // tri0 + 6, 11, 12, // tri1 + 7, 13, 14 // tri2 +), +gsSPNTriangles_5b( + 0, 1, 15, // tri0 + 5, 0, 16, // tri1 + 1, 9, 17, // tri2 + 3, 4, 18 // tri3 +), +gsSPNTriangles_5b( + 3, 19, 20, // tri0 + 2, 3, 21, // tri1 + 2, 22, 23, // tri2 + 4, 24, 25 // tri3 +), +gsSPNTriangles_5b( + 3, 26, 27, // tri0 + 9, 28, 29, // tri1 + 1, 30, 31, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&gst_1_v[214], 6, 10), +gsSPNTrianglesInit_5b( + 4, // tri count + 6, 5, 10, // tri0 + 5, 11, 12, // tri1 + 8, 13, 14 // tri2 +), +gsSPNTriangles_5b( + 4, 7, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail1_gst_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, PRIMITIVE, 0, ENVIRONMENT, 0, COMBINED, 0, PRIM_LOD_FRAC, COMBINED, 0, 0, 0, COMBINED), +gsDPSetPrimColor(0, 127, 255, 255, 255, 180), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&gst_1_v[220], 8, 0), +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&gst_1_v[228], 20, 8), +gsSPNTrianglesInit_5b( + 14, // tri count + 1, 0, 8, // tri0 + 1, 9, 10, // tri1 + 6, 11, 12 // tri2 +), +gsSPNTriangles_5b( + 4, 13, 14, // tri0 + 6, 7, 15, // tri1 + 2, 1, 16, // tri2 + 0, 6, 17 // tri3 +), +gsSPNTriangles_5b( + 5, 4, 18, // tri0 + 2, 19, 3, // tri1 + 5, 20, 7, // tri2 + 3, 21, 22 // tri3 +), +gsSPNTriangles_5b( + 5, 23, 24, // tri0 + 4, 25, 26, // tri1 + 4, 3, 27, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&gst_1_v[248], 7, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 2, 5 // tri2 +), +gsSPNTriangles_5b( + 0, 2, 4, // tri0 + 3, 6, 2, // tri1 + 2, 6, 5, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx base_gst_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, PRIMITIVE, 0, ENVIRONMENT, 0, COMBINED, 0, PRIM_LOD_FRAC, COMBINED, 0, 0, 0, COMBINED), +gsDPSetPrimColor(0, 127, 255, 255, 255, 180), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&gst_1_v[255], 18, 0), +gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 +), +gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 9, 8, 6, // tri1 + 1, 7, 2, // tri2 + 10, 1, 11 // tri3 +), +gsSPNTriangles_5b( + 10, 12, 13, // tri0 + 12, 14, 13, // tri1 + 14, 15, 13, // tri2 + 16, 4, 17 // tri3 +), +gsSPNTriangles_5b( + 15, 17, 13, // tri0 + 6, 3, 9, // tri1 + 9, 2, 7, // tri2 + 17, 15, 16 // tri3 +), +gsSPNTriangles_5b( + 11, 12, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_gst_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_XLU, 0,1000,0 }, + /* joint 1 */ { base_gst_model, 4, cKF_JOINT_FLAG_DISP_XLU, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_XLU, 0,-400,0 }, + /* joint 3 */ { NULL, 1, cKF_JOINT_FLAG_DISP_XLU, 0,0,0 }, + /* joint 4 */ { NULL, 1, cKF_JOINT_FLAG_DISP_XLU, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_XLU, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_XLU, 0,400,0 }, + /* joint 7 */ { NULL, 1, cKF_JOINT_FLAG_DISP_XLU, 0,0,0 }, + /* joint 8 */ { NULL, 1, cKF_JOINT_FLAG_DISP_XLU, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_XLU, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_XLU, 200,0,-800 }, + /* joint 11 */ { tail1_gst_model, 1, cKF_JOINT_FLAG_DISP_XLU, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_XLU, 650,0,0 }, + /* joint 13 */ { chest_gst_model, 3, cKF_JOINT_FLAG_DISP_XLU, 700,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_XLU, 600,-1100,1050 }, + /* joint 15 */ { NULL, 1, cKF_JOINT_FLAG_DISP_XLU, 0,0,0 }, + /* joint 16 */ { NULL, 0, cKF_JOINT_FLAG_DISP_XLU, 500,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_XLU, 600,1100,1050 }, + /* joint 18 */ { NULL, 1, cKF_JOINT_FLAG_DISP_XLU, 0,0,0 }, + /* joint 19 */ { NULL, 1, cKF_JOINT_FLAG_DISP_XLU, 501,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_XLU, 499,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_XLU, 1200,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_XLU, 300,0,800 }, + /* joint 23 */ { NULL, 0, cKF_JOINT_FLAG_DISP_XLU, 0,0,0 }, + /* joint 24 */ { head_gst_model, 1, cKF_JOINT_FLAG_DISP_XLU, 0,0,0 }, + /* joint 25 */ { feel_gst_model, 0, cKF_JOINT_FLAG_DISP_XLU, 1102,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_gst_1 = { 26, 5, cKF_je_r_gst_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/hem_1.c b/src/data/npc/model/mdl/hem_1.c new file mode 100644 index 00000000..2c7672ed --- /dev/null +++ b/src/data/npc/model/mdl/hem_1.c @@ -0,0 +1,678 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx hem_1_v[] = { +#include "assets/npc/mdl/hem_1_v.inc" +}; + +static Gfx head_hem_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hem_1_v[26], 9, 0), +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 380, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&hem_1_v[35], 23, 9), +gsSPNTrianglesInit_5b( + 14, // tri count + 4, 2, 9, // tri0 + 1, 10, 11, // tri1 + 4, 12, 13 // tri2 +), +gsSPNTriangles_5b( + 5, 14, 15, // tri0 + 4, 16, 17, // tri1 + 1, 3, 18, // tri2 + 5, 19, 20 // tri3 +), +gsSPNTriangles_5b( + 2, 0, 21, // tri0 + 3, 5, 22, // tri1 + 4, 23, 24, // tri2 + 0, 1, 25 // tri3 +), +gsSPNTriangles_5b( + 1, 27, 26, // tri0 + 5, 28, 29, // tri1 + 0, 30, 31, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&hem_1_v[58], 20, 9), +gsSPNTrianglesInit_5b( + 4, // tri count + 6, 9, 10, // tri0 + 6, 11, 8, // tri1 + 7, 4, 12 // tri2 +), +gsSPNTriangles_5b( + 5, 8, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 14, 15, 16, // tri0 + 17, 18, 19, // tri1 + 0, 0, 0 // tri2 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 124), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 8, // tri count + 20, 21, 22, // tri0 + 23, 21, 24, // tri1 + 25, 21, 20 // tri2 +), +gsSPNTriangles_5b( + 24, 21, 26, // tri0 + 27, 21, 25, // tri1 + 26, 21, 27, // tri2 + 28, 21, 23 // tri3 +), +gsSPNTriangles_5b( + 22, 21, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 124), +gsSPVertex(&hem_1_v[78], 14, 0), +gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 8, 9, 6, // tri0 + 10, 4, 3, // tri1 + 3, 0, 10, // tri2 + 5, 11, 3 // tri3 +), +gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 6, 11, 5, // tri1 + 0, 12, 10, // tri2 + 8, 13, 9 // tri3 +), +gsSPNTriangles_5b( + 9, 13, 2, // tri0 + 2, 12, 0, // tri1 + 2, 1, 9, // tri2 + 0, 0, 0 // tri3 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 60, 124), +gsSPVertex(&hem_1_v[92], 25, 0), +gsSPNTrianglesInit_5b( + 30, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 1 // tri2 +), +gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 13, 7, 11, // tri2 + 14, 4, 15 // tri3 +), +gsSPNTriangles_5b( + 14, 15, 9, // tri0 + 2, 1, 13, // tri1 + 2, 13, 16, // tri2 + 5, 4, 14 // tri3 +), +gsSPNTriangles_5b( + 5, 14, 17, // tri0 + 18, 19, 12, // tri1 + 4, 19, 18, // tri2 + 10, 20, 8 // tri3 +), +gsSPNTriangles_5b( + 1, 21, 6, // tri0 + 9, 8, 14, // tri1 + 13, 1, 7, // tri2 + 16, 13, 12 // tri3 +), +gsSPNTriangles_5b( + 16, 12, 22, // tri0 + 22, 12, 19, // tri1 + 22, 19, 3, // tri2 + 12, 11, 18 // tri3 +), +gsSPNTriangles_5b( + 18, 15, 4, // tri0 + 17, 14, 8, // tri1 + 17, 8, 23, // tri2 + 23, 8, 20 // tri3 +), +gsSPNTriangles_5b( + 23, 20, 24, // tri0 + 3, 19, 4, // tri1 + 0, 21, 1, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx feel_hem_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hem_1_v[117], 16, 0), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 4, 0 // tri2 +), +gsSPNTriangles_5b( + 5, 1, 3, // tri0 + 2, 6, 4, // tri1 + 1, 7, 2, // tri2 + 5, 4, 8 // tri3 +), +gsSPNTriangles_5b( + 9, 1, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000580, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 1, // tri count + 10, 11, 12, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 13, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx mouth_hem_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hem_1_v[0], 5, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&hem_1_v[5], 21, 5), +gsSPNTrianglesInit_5b( + 10, // tri count + 2, 6, 5, // tri0 + 2, 8, 7, // tri1 + 3, 10, 9 // tri2 +), +gsSPNTriangles_5b( + 2, 1, 11, // tri0 + 0, 2, 12, // tri1 + 3, 0, 13, // tri2 + 1, 4, 14 // tri3 +), +gsSPNTriangles_5b( + 4, 16, 15, // tri0 + 4, 3, 17, // tri1 + 3, 19, 18, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 5, // tri count + 20, 21, 22, // tri0 + 23, 21, 20, // tri1 + 24, 21, 25 // tri2 +), +gsSPNTriangles_5b( + 25, 21, 23, // tri0 + 22, 21, 24, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_hem_model[] = { +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hem_1_v[133], 5, 0), +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&hem_1_v[138], 16, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 0, 1, 11, // tri0 + 2, 4, 12, // tri1 + 0, 13, 14, // tri2 + 3, 0, 15 // tri3 +), +gsSPNTriangles_5b( + 4, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 20, 19, 18, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_hem_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hem_1_v[154], 9, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 5 // tri2 +), +gsSPNTriangles_5b( + 7, 0, 6, // tri0 + 7, 6, 5, // tri1 + 1, 0, 7, // tri2 + 2, 8, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_hem_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hem_1_v[163], 9, 0), +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 380, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&hem_1_v[172], 22, 9), +gsSPNTrianglesInit_5b( + 14, // tri count + 4, 5, 9, // tri0 + 2, 3, 10, // tri1 + 8, 11, 12 // tri2 +), +gsSPNTriangles_5b( + 3, 8, 13, // tri0 + 2, 14, 15, // tri1 + 0, 6, 16, // tri2 + 0, 18, 17 // tri3 +), +gsSPNTriangles_5b( + 5, 19, 20, // tri0 + 8, 4, 21, // tri1 + 1, 23, 22, // tri2 + 7, 1, 24 // tri3 +), +gsSPNTriangles_5b( + 6, 25, 26, // tri0 + 0, 27, 28, // tri1 + 1, 29, 30, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&hem_1_v[194], 15, 9), +gsSPNTrianglesInit_5b( + 2, // tri count + 1, 2, 9, // tri0 + 5, 0, 10, // tri1 + 0, 0, 0 // tri2 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 11, 12, 13, // tri0 + 14, 15, 16, // tri1 + 14, 16, 17 // tri2 +), +gsSPNTriangles_5b( + 17, 13, 18, // tri0 + 14, 17, 18, // tri1 + 18, 13, 12, // tri2 + 13, 19, 11 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 20, 21, 22, // tri0 + 23, 20, 22, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx base_hem_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hem_1_v[209], 32, 0), +gsSPNTrianglesInit_5b( + 39, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 4, 5 // tri2 +), +gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 6, 8, 9, // tri1 + 10, 7, 11, // tri2 + 5, 1, 0 // tri3 +), +gsSPNTriangles_5b( + 12, 8, 7, // tri0 + 12, 7, 10, // tri1 + 13, 14, 15, // tri2 + 13, 15, 16 // tri3 +), +gsSPNTriangles_5b( + 17, 18, 19, // tri0 + 17, 19, 20, // tri1 + 10, 2, 1, // tri2 + 10, 1, 12 // tri3 +), +gsSPNTriangles_5b( + 9, 8, 5, // tri0 + 9, 21, 22, // tri1 + 9, 22, 6, // tri2 + 11, 23, 3 // tri3 +), +gsSPNTriangles_5b( + 5, 8, 12, // tri0 + 20, 19, 14, // tri1 + 20, 14, 13, // tri2 + 11, 7, 6 // tri3 +), +gsSPNTriangles_5b( + 12, 1, 5, // tri0 + 11, 2, 10, // tri1 + 21, 9, 5, // tri2 + 5, 24, 21 // tri3 +), +gsSPNTriangles_5b( + 11, 6, 22, // tri0 + 11, 22, 25, // tri1 + 16, 15, 18, // tri2 + 16, 18, 17 // tri3 +), +gsSPNTriangles_5b( + 11, 25, 26, // tri0 + 11, 26, 5, // tri1 + 3, 2, 11, // tri2 + 4, 0, 3 // tri3 +), +gsSPNTriangles_5b( + 4, 3, 23, // tri0 + 27, 28, 29, // tri1 + 27, 29, 30, // tri2 + 31, 25, 22 // tri3 +), +gsSPVertex(&hem_1_v[241], 12, 0), +gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 0 // tri2 +), +gsSPNTriangles_5b( + 6, 7, 4, // tri0 + 6, 4, 3, // tri1 + 2, 1, 7, // tri2 + 2, 7, 6 // tri3 +), +gsSPNTriangles_5b( + 8, 0, 2, // tri0 + 8, 2, 9, // tri1 + 10, 3, 0, // tri2 + 10, 0, 8 // tri3 +), +gsSPNTriangles_5b( + 11, 6, 3, // tri0 + 11, 3, 10, // tri1 + 9, 2, 6, // tri2 + 9, 6, 11 // tri3 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 380, 124), +gsSPVertex(&hem_1_v[253], 27, 0), +gsSPNTrianglesInit_5b( + 32, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 2, 1 // tri2 +), +gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 13, 8, 14, // tri2 + 15, 14, 7 // tri3 +), +gsSPNTriangles_5b( + 9, 11, 7, // tri0 + 12, 16, 10, // tri1 + 7, 14, 8, // tri2 + 4, 17, 18 // tri3 +), +gsSPNTriangles_5b( + 19, 6, 1, // tri0 + 4, 3, 17, // tri1 + 7, 10, 15, // tri2 + 20, 21, 2 // tri3 +), +gsSPNTriangles_5b( + 3, 22, 23, // tri0 + 20, 24, 14, // tri1 + 10, 16, 23, // tri2 + 15, 25, 14 // tri3 +), +gsSPNTriangles_5b( + 6, 13, 24, // tri0 + 16, 12, 17, // tri1 + 17, 3, 16, // tri2 + 14, 24, 13 // tri3 +), +gsSPNTriangles_5b( + 24, 2, 6, // tri0 + 23, 26, 10, // tri1 + 23, 16, 3, // tri2 + 14, 25, 20 // tri3 +), +gsSPNTriangles_5b( + 11, 10, 7, // tri0 + 2, 24, 20, // tri1 + 5, 22, 3, // tri2 + 2, 21, 0 // tri3 +), +gsSPNTriangles_5b( + 10, 26, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&hem_1_v[280], 32, 0), +gsSPNTrianglesInit_5b( + 39, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 4, 5 // tri2 +), +gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 6, 8, 9, // tri1 + 10, 7, 11, // tri2 + 5, 1, 0 // tri3 +), +gsSPNTriangles_5b( + 12, 8, 7, // tri0 + 12, 7, 10, // tri1 + 13, 14, 15, // tri2 + 13, 15, 16 // tri3 +), +gsSPNTriangles_5b( + 17, 18, 19, // tri0 + 17, 19, 20, // tri1 + 10, 2, 1, // tri2 + 10, 1, 12 // tri3 +), +gsSPNTriangles_5b( + 9, 8, 5, // tri0 + 9, 21, 22, // tri1 + 9, 22, 6, // tri2 + 11, 23, 3 // tri3 +), +gsSPNTriangles_5b( + 5, 8, 12, // tri0 + 20, 19, 14, // tri1 + 20, 14, 13, // tri2 + 11, 7, 6 // tri3 +), +gsSPNTriangles_5b( + 12, 1, 5, // tri0 + 11, 2, 10, // tri1 + 21, 9, 5, // tri2 + 5, 24, 21 // tri3 +), +gsSPNTriangles_5b( + 11, 6, 22, // tri0 + 11, 22, 25, // tri1 + 16, 15, 18, // tri2 + 16, 18, 17 // tri3 +), +gsSPNTriangles_5b( + 11, 25, 26, // tri0 + 11, 26, 5, // tri1 + 3, 2, 11, // tri2 + 4, 0, 3 // tri3 +), +gsSPNTriangles_5b( + 4, 3, 23, // tri0 + 27, 28, 29, // tri1 + 27, 29, 30, // tri2 + 31, 25, 22 // tri3 +), +gsSPVertex(&hem_1_v[312], 21, 0), +gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 0 // tri2 +), +gsSPNTriangles_5b( + 6, 7, 4, // tri0 + 6, 4, 3, // tri1 + 2, 1, 7, // tri2 + 2, 7, 6 // tri3 +), +gsSPNTriangles_5b( + 8, 0, 2, // tri0 + 8, 2, 9, // tri1 + 10, 3, 0, // tri2 + 10, 0, 8 // tri3 +), +gsSPNTriangles_5b( + 11, 6, 3, // tri0 + 11, 3, 10, // tri1 + 9, 2, 6, // tri2 + 9, 6, 11 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 8, // tri count + 12, 13, 14, // tri0 + 15, 16, 17, // tri1 + 16, 12, 18 // tri2 +), +gsSPNTriangles_5b( + 12, 16, 19, // tri0 + 17, 20, 15, // tri1 + 14, 18, 12, // tri2 + 13, 12, 19 // tri3 +), +gsSPNTriangles_5b( + 15, 19, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_hem_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,500,0 }, + /* joint 1 */ { base_hem_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-700,0 }, + /* joint 3 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 200,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 201,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,700,0 }, + /* joint 7 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 201,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 199,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 300,0,-950 }, + /* joint 11 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_hem_model, 3, cKF_JOINT_FLAG_DISP_OPA, 603,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 600,-1500,0 }, + /* joint 15 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 600,1500,0 }, + /* joint 18 */ { Rarm1_hem_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_hem_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 1197,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,1300 }, + /* joint 23 */ { mouth_hem_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_hem_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { feel_hem_model, 0, cKF_JOINT_FLAG_DISP_OPA, 501,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_hem_1 = { 26, 7, cKF_je_r_hem_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/hgh_1.c b/src/data/npc/model/mdl/hgh_1.c new file mode 100644 index 00000000..3463756c --- /dev/null +++ b/src/data/npc/model/mdl/hgh_1.c @@ -0,0 +1,872 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx hgh_1_v[] = { +#include "assets/npc/mdl/hgh_1_v.inc" +}; + +static Gfx head_hgh_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hgh_1_v[26], 23, 0), +gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 3, // tri count + 4, 5, 6, // tri0 + 7, 8, 9, // tri1 + 10, 6, 11 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 12, 13, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 3, // tri count + 18, 19, 20, // tri0 + 20, 21, 18, // tri1 + 22, 21, 20 // tri2 +), +gsSPVertex(&hgh_1_v[49], 18, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 7, 6, 9, // tri0 + 9, 10, 11, // tri1 + 12, 13, 14, // tri2 + 9, 11, 7 // tri3 +), +gsSPNTriangles_5b( + 8, 15, 16, // tri0 + 2, 12, 17, // tri1 + 17, 0, 2, // tri2 + 8, 16, 6 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&hgh_1_v[67], 24, 0), +gsSPNTrianglesInit_5b( + 30, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 2, 1, 5 // tri2 +), +gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 9, 8, 7, // tri1 + 10, 5, 11, // tri2 + 3, 12, 13 // tri3 +), +gsSPNTriangles_5b( + 4, 3, 14, // tri0 + 5, 10, 6, // tri1 + 15, 1, 0, // tri2 + 16, 0, 4 // tri3 +), +gsSPNTriangles_5b( + 9, 17, 13, // tri0 + 18, 19, 20, // tri1 + 4, 0, 2, // tri2 + 15, 18, 11 // tri3 +), +gsSPNTriangles_5b( + 21, 22, 17, // tri0 + 2, 12, 3, // tri1 + 12, 8, 9, // tri2 + 5, 6, 23 // tri3 +), +gsSPNTriangles_5b( + 8, 12, 2, // tri0 + 23, 6, 8, // tri1 + 11, 18, 20, // tri2 + 21, 17, 9 // tri3 +), +gsSPNTriangles_5b( + 23, 2, 5, // tri0 + 8, 2, 23, // tri1 + 11, 5, 1, // tri2 + 11, 1, 15 // tri3 +), +gsSPNTriangles_5b( + 13, 12, 9, // tri0 + 11, 20, 10, // tri1 + 7, 21, 9, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&hgh_1_v[91], 18, 0), +gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 +), +gsSPNTriangles_5b( + 5, 8, 9, // tri0 + 10, 9, 11, // tri1 + 5, 9, 10, // tri2 + 5, 10, 7 // tri3 +), +gsSPNTriangles_5b( + 5, 7, 3, // tri0 + 12, 13, 14, // tri1 + 12, 14, 15, // tri2 + 7, 10, 11 // tri3 +), +gsSPNTriangles_5b( + 7, 11, 6, // tri0 + 16, 0, 17, // tri1 + 15, 2, 12, // tri2 + 13, 17, 14 // tri3 +), +gsSPNTriangles_5b( + 17, 0, 14, // tri0 + 15, 14, 0, // tri1 + 2, 15, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 32, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), +gsDPSetTileSize(0, 0, 0, 252, 252), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hgh_1_v[109], 26, 0), +gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 1, 7 // tri2 +), +gsSPNTriangles_5b( + 8, 4, 9, // tri0 + 4, 10, 11, // tri1 + 5, 12, 3, // tri2 + 13, 14, 15 // tri3 +), +gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 7, 19, 6, // tri1 + 9, 20, 8, // tri2 + 2, 21, 0 // tri3 +), +gsSPNTriangles_5b( + 18, 14, 16, // tri0 + 15, 22, 13, // tri1 + 14, 18, 23, // tri2 + 23, 15, 14 // tri3 +), +gsSPNTriangles_5b( + 0, 7, 1, // tri0 + 21, 24, 0, // tri1 + 4, 11, 9, // tri2 + 3, 10, 4 // tri3 +), +gsSPNTriangles_5b( + 7, 25, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hgh_1_v[135], 29, 0), +gsSPNTrianglesInit_5b( + 9, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 2, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 6, 3, 0, // tri1 + 3, 7, 4, // tri2 + 9, 10, 4 // tri3 +), +gsSPNTriangles_5b( + 6, 0, 2, // tri0 + 9, 4, 7, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 4, // tri count + 11, 12, 13, // tri0 + 11, 13, 14, // tri1 + 11, 15, 12 // tri2 +), +gsSPNTriangles_5b( + 11, 14, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 4, // tri count + 17, 18, 19, // tri0 + 18, 20, 19, // tri1 + 21, 17, 19 // tri2 +), +gsSPNTriangles_5b( + 19, 22, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 32, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), +gsDPSetTileSize(0, 0, 0, 252, 252), +gsSPNTrianglesInit_5b( + 1, // tri count + 23, 24, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 26, 27, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPVertex(&hgh_1_v[164], 27, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 4, 5, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 13, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 8, // tri count + 16, 17, 18, // tri0 + 19, 20, 21, // tri1 + 21, 20, 22 // tri2 +), +gsSPNTriangles_5b( + 23, 19, 24, // tri0 + 21, 24, 19, // tri1 + 18, 25, 16, // tri2 + 25, 18, 23 // tri3 +), +gsSPNTriangles_5b( + 24, 26, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&hgh_1_v[191], 14, 0), +gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 5, 2 // tri2 +), +gsSPNTriangles_5b( + 2, 5, 6, // tri0 + 2, 6, 0, // tri1 + 2, 3, 4, // tri2 + 7, 8, 9 // tri3 +), +gsSPNTriangles_5b( + 9, 8, 10, // tri0 + 9, 10, 11, // tri1 + 9, 12, 7, // tri2 + 9, 13, 12 // tri3 +), +gsSPNTriangles_5b( + 11, 13, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx mouth_hgh_model[] = { +gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hgh_1_v[0], 5, 0), +gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&hgh_1_v[5], 21, 5), +gsSPNTrianglesInit_5b( + 10, // tri count + 0, 3, 5, // tri0 + 1, 0, 6, // tri1 + 3, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 9, 10, // tri0 + 4, 1, 11, // tri1 + 4, 12, 13, // tri2 + 4, 14, 2 // tri3 +), +gsSPNTriangles_5b( + 4, 15, 16, // tri0 + 1, 17, 18, // tri1 + 3, 2, 19, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 5, // tri count + 20, 21, 22, // tri0 + 21, 23, 24, // tri1 + 25, 23, 21 // tri2 +), +gsSPNTriangles_5b( + 25, 21, 20, // tri0 + 22, 21, 24, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_hgh_model[] = { +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hgh_1_v[241], 5, 0), +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&hgh_1_v[246], 16, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 0, 1, 11, // tri0 + 2, 4, 12, // tri1 + 0, 13, 14, // tri2 + 3, 0, 15 // tri3 +), +gsSPNTriangles_5b( + 4, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 20, 19, 18, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_hgh_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hgh_1_v[262], 4, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&hgh_1_v[266], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 2, 0, 8 // tri2 +), +gsSPNTriangles_5b( + 3, 2, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 1, 3, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_hgh_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hgh_1_v[205], 5, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&hgh_1_v[210], 16, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 +), +gsSPNTriangles_5b( + 3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_hgh_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hgh_1_v[226], 4, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&hgh_1_v[230], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_hgh_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hgh_1_v[277], 11, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&hgh_1_v[288], 20, 11), +gsSPNTrianglesInit_5b( + 10, // tri count + 3, 12, 11, // tri0 + 3, 13, 14, // tri1 + 5, 15, 16 // tri2 +), +gsSPNTriangles_5b( + 5, 17, 18, // tri0 + 5, 7, 19, // tri1 + 7, 1, 20, // tri2 + 0, 21, 22 // tri3 +), +gsSPNTriangles_5b( + 7, 23, 24, // tri0 + 2, 0, 25, // tri1 + 0, 3, 26, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 4, // tri count + 10, 27, 4, // tri0 + 10, 9, 28, // tri1 + 9, 8, 29 // tri2 +), +gsSPNTriangles_5b( + 8, 6, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&hgh_1_v[308], 20, 0), +gsSPNTrianglesInit_5b( + 3, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 5, 6, 7 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 8, 9, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 11, 12, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 3, // tri count + 14, 15, 16, // tri0 + 17, 18, 16, // tri1 + 16, 19, 14 // tri2 +), +gsSPVertex(&hgh_1_v[328], 17, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 7, 6, 5, // tri0 + 8, 9, 10, // tri1 + 6, 11, 0, // tri2 + 10, 12, 13 // tri3 +), +gsSPNTriangles_5b( + 6, 14, 11, // tri0 + 2, 9, 4, // tri1 + 15, 7, 16, // tri2 + 13, 8, 10 // tri3 +), +gsSPNTriangles_5b( + 13, 5, 8, // tri0 + 7, 5, 16, // tri1 + 0, 3, 6, // tri2 + 0, 2, 4 // tri3 +), +gsSPNTriangles_5b( + 15, 11, 14, // tri0 + 10, 9, 2, // tri1 + 5, 4, 8, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail1_hgh_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hgh_1_v[365], 4, 0), +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000680, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&hgh_1_v[369], 12, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 1, 4, 5, // tri0 + 2, 6, 7, // tri1 + 2, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 1, 10, 11, // tri0 + 3, 1, 12, // tri1 + 1, 0, 13, // tri2 + 2, 3, 14 // tri3 +), +gsSPNTriangles_5b( + 0, 2, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail2_hgh_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hgh_1_v[345], 4, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000680, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&hgh_1_v[349], 16, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 4, 5, // tri0 + 0, 6, 7, // tri1 + 3, 0, 8 // tri2 +), +gsSPNTriangles_5b( + 0, 1, 9, // tri0 + 3, 11, 10, // tri1 + 1, 13, 12, // tri2 + 2, 3, 14 // tri3 +), +gsSPNTriangles_5b( + 1, 2, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 16, 17, 18, // tri0 + 18, 17, 19, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_hgh_model[] = { +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hgh_1_v[412], 5, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&hgh_1_v[417], 17, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 4, 0, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 1, 2, 10, // tri0 + 2, 3, 11, // tri1 + 3, 4, 12, // tri2 + 2, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_hgh_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hgh_1_v[434], 9, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 1, 5, 2 // tri2 +), +gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 6, 8, 0, // tri1 + 0, 2, 6, // tri2 + 4, 5, 1 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_hgh_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hgh_1_v[381], 5, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&hgh_1_v[386], 17, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 4, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 1, 10, // tri0 + 3, 2, 11, // tri1 + 4, 3, 12, // tri2 + 2, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_hgh_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hgh_1_v[403], 9, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 0, 5, 1 // tri2 +), +gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 2, 6, 8, // tri1 + 8, 0, 2, // tri2 + 1, 5, 3 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx base_hgh_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hgh_1_v[443], 15, 0), +gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 1, 6 // tri2 +), +gsSPNTriangles_5b( + 3, 7, 8, // tri0 + 1, 8, 9, // tri1 + 0, 4, 8, // tri2 + 10, 6, 9 // tri3 +), +gsSPNTriangles_5b( + 7, 3, 11, // tri0 + 7, 11, 12, // tri1 + 13, 8, 7, // tri2 + 7, 12, 13 // tri3 +), +gsSPNTriangles_5b( + 13, 12, 14, // tri0 + 8, 1, 0, // tri1 + 8, 4, 3, // tri2 + 0, 5, 4 // tri3 +), +gsSPNTriangles_5b( + 9, 6, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_hgh_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,600,0 }, + /* joint 1 */ { base_hgh_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-300,0 }, + /* joint 3 */ { Lfoot1_hgh_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_hgh_model, 1, cKF_JOINT_FLAG_DISP_OPA, 300,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 200,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,300,0 }, + /* joint 7 */ { Rfoot1_hgh_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_hgh_model, 1, cKF_JOINT_FLAG_DISP_OPA, 301,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 200,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,-450 }, + /* joint 11 */ { tail1_hgh_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_hgh_model, 0, cKF_JOINT_FLAG_DISP_OPA, 488,0,0 }, + /* joint 13 */ { chest_hgh_model, 3, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 450,-450,0 }, + /* joint 15 */ { Larm1_hgh_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_hgh_model, 0, cKF_JOINT_FLAG_DISP_OPA, 402,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 450,450,0 }, + /* joint 18 */ { Rarm1_hgh_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_hgh_model, 1, cKF_JOINT_FLAG_DISP_OPA, 403,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 398,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 700,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,1200 }, + /* joint 23 */ { mouth_hgh_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_hgh_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1300,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_hgh_1 = { 26, 14, cKF_je_r_hgh_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/hgs_1.c b/src/data/npc/model/mdl/hgs_1.c new file mode 100644 index 00000000..71e21167 --- /dev/null +++ b/src/data/npc/model/mdl/hgs_1.c @@ -0,0 +1,872 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx hgs_1_v[] = { +#include "assets/npc/mdl/hgs_1_v.inc" +}; + +static Gfx head_hgs_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hgs_1_v[26], 23, 0), +gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 3, // tri count + 4, 5, 6, // tri0 + 7, 8, 9, // tri1 + 10, 6, 11 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 12, 13, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 3, // tri count + 18, 19, 20, // tri0 + 20, 21, 18, // tri1 + 22, 21, 20 // tri2 +), +gsSPVertex(&hgs_1_v[49], 18, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 7, 6, 9, // tri0 + 9, 10, 11, // tri1 + 12, 13, 14, // tri2 + 9, 11, 7 // tri3 +), +gsSPNTriangles_5b( + 8, 15, 16, // tri0 + 2, 12, 17, // tri1 + 17, 0, 2, // tri2 + 8, 16, 6 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&hgs_1_v[67], 24, 0), +gsSPNTrianglesInit_5b( + 30, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 2, 1, 5 // tri2 +), +gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 9, 8, 7, // tri1 + 10, 5, 11, // tri2 + 3, 12, 13 // tri3 +), +gsSPNTriangles_5b( + 4, 3, 14, // tri0 + 5, 10, 6, // tri1 + 15, 1, 0, // tri2 + 16, 0, 4 // tri3 +), +gsSPNTriangles_5b( + 9, 17, 13, // tri0 + 18, 19, 20, // tri1 + 4, 0, 2, // tri2 + 15, 18, 11 // tri3 +), +gsSPNTriangles_5b( + 21, 22, 17, // tri0 + 2, 12, 3, // tri1 + 12, 8, 9, // tri2 + 5, 6, 23 // tri3 +), +gsSPNTriangles_5b( + 8, 12, 2, // tri0 + 23, 6, 8, // tri1 + 11, 18, 20, // tri2 + 21, 17, 9 // tri3 +), +gsSPNTriangles_5b( + 23, 2, 5, // tri0 + 8, 2, 23, // tri1 + 11, 5, 1, // tri2 + 11, 1, 15 // tri3 +), +gsSPNTriangles_5b( + 13, 12, 9, // tri0 + 11, 20, 10, // tri1 + 7, 21, 9, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&hgs_1_v[91], 18, 0), +gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 +), +gsSPNTriangles_5b( + 5, 8, 9, // tri0 + 10, 9, 11, // tri1 + 5, 9, 10, // tri2 + 5, 10, 7 // tri3 +), +gsSPNTriangles_5b( + 5, 7, 3, // tri0 + 12, 13, 14, // tri1 + 12, 14, 15, // tri2 + 7, 10, 11 // tri3 +), +gsSPNTriangles_5b( + 7, 11, 6, // tri0 + 16, 0, 17, // tri1 + 15, 2, 12, // tri2 + 13, 17, 14 // tri3 +), +gsSPNTriangles_5b( + 17, 0, 14, // tri0 + 15, 14, 0, // tri1 + 2, 15, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 32, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), +gsDPSetTileSize(0, 0, 0, 252, 252), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hgs_1_v[109], 26, 0), +gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 1, 7 // tri2 +), +gsSPNTriangles_5b( + 8, 4, 9, // tri0 + 4, 10, 11, // tri1 + 5, 12, 3, // tri2 + 13, 14, 15 // tri3 +), +gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 7, 19, 6, // tri1 + 9, 20, 8, // tri2 + 2, 21, 0 // tri3 +), +gsSPNTriangles_5b( + 18, 14, 16, // tri0 + 15, 22, 13, // tri1 + 14, 18, 23, // tri2 + 23, 15, 14 // tri3 +), +gsSPNTriangles_5b( + 0, 7, 1, // tri0 + 21, 24, 0, // tri1 + 4, 11, 9, // tri2 + 3, 10, 4 // tri3 +), +gsSPNTriangles_5b( + 7, 25, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hgs_1_v[135], 29, 0), +gsSPNTrianglesInit_5b( + 9, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 2, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 6, 3, 0, // tri1 + 3, 7, 4, // tri2 + 9, 10, 4 // tri3 +), +gsSPNTriangles_5b( + 6, 0, 2, // tri0 + 9, 4, 7, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 4, // tri count + 11, 12, 13, // tri0 + 11, 13, 14, // tri1 + 11, 15, 12 // tri2 +), +gsSPNTriangles_5b( + 11, 14, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 4, // tri count + 17, 18, 19, // tri0 + 18, 20, 19, // tri1 + 21, 17, 19 // tri2 +), +gsSPNTriangles_5b( + 19, 22, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 32, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), +gsDPSetTileSize(0, 0, 0, 252, 252), +gsSPNTrianglesInit_5b( + 1, // tri count + 23, 24, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 26, 27, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPVertex(&hgs_1_v[164], 27, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 4, 5, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 13, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 8, // tri count + 16, 17, 18, // tri0 + 19, 20, 21, // tri1 + 21, 20, 22 // tri2 +), +gsSPNTriangles_5b( + 23, 19, 24, // tri0 + 21, 24, 19, // tri1 + 18, 25, 16, // tri2 + 25, 18, 23 // tri3 +), +gsSPNTriangles_5b( + 24, 26, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&hgs_1_v[191], 14, 0), +gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 5, 2 // tri2 +), +gsSPNTriangles_5b( + 2, 5, 6, // tri0 + 2, 6, 0, // tri1 + 2, 3, 4, // tri2 + 7, 8, 9 // tri3 +), +gsSPNTriangles_5b( + 9, 8, 10, // tri0 + 9, 10, 11, // tri1 + 9, 12, 7, // tri2 + 9, 13, 12 // tri3 +), +gsSPNTriangles_5b( + 11, 13, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx mouth_hgs_model[] = { +gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hgs_1_v[0], 5, 0), +gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&hgs_1_v[5], 21, 5), +gsSPNTrianglesInit_5b( + 10, // tri count + 0, 3, 5, // tri0 + 1, 0, 6, // tri1 + 3, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 9, 10, // tri0 + 4, 1, 11, // tri1 + 4, 12, 13, // tri2 + 4, 14, 2 // tri3 +), +gsSPNTriangles_5b( + 4, 15, 16, // tri0 + 1, 17, 18, // tri1 + 3, 2, 19, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 5, // tri count + 20, 21, 22, // tri0 + 21, 23, 24, // tri1 + 25, 23, 21 // tri2 +), +gsSPNTriangles_5b( + 25, 21, 20, // tri0 + 22, 21, 24, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_hgs_model[] = { +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hgs_1_v[239], 4, 0), +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&hgs_1_v[243], 16, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 0, 4, // tri0 + 3, 5, 6, // tri1 + 0, 1, 7 // tri2 +), +gsSPNTriangles_5b( + 0, 8, 9, // tri0 + 1, 10, 11, // tri1 + 1, 3, 12, // tri2 + 3, 2, 13 // tri3 +), +gsSPNTriangles_5b( + 2, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 16, 17, 18, // tri0 + 18, 19, 16, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_hgs_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hgs_1_v[259], 3, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&hgs_1_v[262], 11, 3), +gsSPNTrianglesInit_5b( + 7, // tri count + 2, 3, 4, // tri0 + 0, 5, 6, // tri1 + 1, 0, 7 // tri2 +), +gsSPNTriangles_5b( + 2, 1, 8, // tri0 + 1, 10, 9, // tri1 + 0, 2, 11, // tri2 + 1, 12, 13 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_hgs_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hgs_1_v[205], 4, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&hgs_1_v[209], 16, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 2, 4, // tri0 + 3, 5, 6, // tri1 + 1, 0, 7 // tri2 +), +gsSPNTriangles_5b( + 0, 8, 9, // tri0 + 1, 10, 11, // tri1 + 3, 1, 12, // tri2 + 2, 3, 13 // tri3 +), +gsSPNTriangles_5b( + 2, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 16, 17, 18, // tri0 + 18, 19, 16, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_hgs_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hgs_1_v[225], 3, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&hgs_1_v[228], 11, 3), +gsSPNTrianglesInit_5b( + 7, // tri count + 2, 3, 4, // tri0 + 0, 5, 6, // tri1 + 0, 1, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 2, 8, // tri0 + 1, 10, 9, // tri1 + 2, 0, 11, // tri2 + 1, 12, 13 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_hgs_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hgs_1_v[273], 11, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&hgs_1_v[284], 20, 11), +gsSPNTrianglesInit_5b( + 10, // tri count + 3, 12, 11, // tri0 + 3, 13, 14, // tri1 + 5, 15, 16 // tri2 +), +gsSPNTriangles_5b( + 5, 17, 18, // tri0 + 5, 7, 19, // tri1 + 7, 1, 20, // tri2 + 0, 21, 22 // tri3 +), +gsSPNTriangles_5b( + 7, 23, 24, // tri0 + 2, 0, 25, // tri1 + 0, 3, 26, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 4, // tri count + 10, 27, 4, // tri0 + 10, 9, 28, // tri1 + 9, 8, 29 // tri2 +), +gsSPNTriangles_5b( + 8, 6, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&hgs_1_v[304], 20, 0), +gsSPNTrianglesInit_5b( + 3, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 5, 6, 7 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 8, 9, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 11, 12, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 3, // tri count + 14, 15, 16, // tri0 + 17, 18, 16, // tri1 + 16, 19, 14 // tri2 +), +gsSPVertex(&hgs_1_v[324], 19, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 7, 6, 5, // tri0 + 8, 9, 10, // tri1 + 6, 11, 0, // tri2 + 10, 12, 13 // tri3 +), +gsSPNTriangles_5b( + 14, 15, 11, // tri0 + 2, 9, 16, // tri1 + 17, 7, 18, // tri2 + 13, 8, 10 // tri3 +), +gsSPNTriangles_5b( + 13, 5, 8, // tri0 + 7, 5, 18, // tri1 + 0, 3, 6, // tri2 + 0, 2, 4 // tri3 +), +gsSPNTriangles_5b( + 17, 11, 15, // tri0 + 10, 9, 2, // tri1 + 5, 4, 8, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail1_hgs_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hgs_1_v[363], 4, 0), +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000680, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&hgs_1_v[367], 12, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 1, 4, 5, // tri0 + 2, 6, 7, // tri1 + 2, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 1, 10, 11, // tri0 + 3, 1, 12, // tri1 + 1, 0, 13, // tri2 + 2, 3, 14 // tri3 +), +gsSPNTriangles_5b( + 0, 2, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail2_hgs_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hgs_1_v[343], 4, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000680, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&hgs_1_v[347], 16, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 4, 5, // tri0 + 0, 6, 7, // tri1 + 3, 0, 8 // tri2 +), +gsSPNTriangles_5b( + 0, 1, 9, // tri0 + 3, 11, 10, // tri1 + 1, 13, 12, // tri2 + 2, 3, 14 // tri3 +), +gsSPNTriangles_5b( + 1, 2, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 16, 17, 18, // tri0 + 18, 17, 19, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_hgs_model[] = { +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hgs_1_v[410], 5, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&hgs_1_v[415], 17, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 4, 0, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 1, 2, 10, // tri0 + 2, 3, 11, // tri1 + 3, 4, 12, // tri2 + 2, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_hgs_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hgs_1_v[432], 9, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 1, 5, 2 // tri2 +), +gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 6, 8, 0, // tri1 + 0, 2, 6, // tri2 + 4, 5, 1 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_hgs_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hgs_1_v[379], 5, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&hgs_1_v[384], 17, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 4, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 1, 10, // tri0 + 3, 2, 11, // tri1 + 4, 3, 12, // tri2 + 2, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_hgs_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hgs_1_v[401], 9, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 0, 5, 1 // tri2 +), +gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 2, 6, 8, // tri1 + 8, 0, 2, // tri2 + 1, 5, 3 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx base_hgs_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hgs_1_v[441], 15, 0), +gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 1, 6 // tri2 +), +gsSPNTriangles_5b( + 3, 7, 8, // tri0 + 1, 8, 9, // tri1 + 0, 4, 8, // tri2 + 10, 6, 9 // tri3 +), +gsSPNTriangles_5b( + 7, 3, 11, // tri0 + 7, 11, 12, // tri1 + 13, 8, 7, // tri2 + 7, 12, 13 // tri3 +), +gsSPNTriangles_5b( + 13, 12, 14, // tri0 + 8, 1, 0, // tri1 + 8, 4, 3, // tri2 + 0, 5, 4 // tri3 +), +gsSPNTriangles_5b( + 9, 6, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_hgs_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,600,0 }, + /* joint 1 */ { base_hgs_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-300,0 }, + /* joint 3 */ { Lfoot1_hgs_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_hgs_model, 1, cKF_JOINT_FLAG_DISP_OPA, 300,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 200,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,300,0 }, + /* joint 7 */ { Rfoot1_hgs_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_hgs_model, 1, cKF_JOINT_FLAG_DISP_OPA, 301,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 200,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,-450 }, + /* joint 11 */ { tail1_hgs_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_hgs_model, 0, cKF_JOINT_FLAG_DISP_OPA, 488,0,0 }, + /* joint 13 */ { chest_hgs_model, 3, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,-700,0 }, + /* joint 15 */ { Larm1_hgs_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_hgs_model, 0, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,700,0 }, + /* joint 18 */ { Rarm1_hgs_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_hgs_model, 1, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 549,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 700,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,1200 }, + /* joint 23 */ { mouth_hgs_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_hgs_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1300,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_hgs_1 = { 26, 14, cKF_je_r_hgs_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/hip_1.c b/src/data/npc/model/mdl/hip_1.c new file mode 100644 index 00000000..4b056651 --- /dev/null +++ b/src/data/npc/model/mdl/hip_1.c @@ -0,0 +1,823 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx hip_1_v[] = { +#include "assets/npc/mdl/hip_1_v.inc" +}; + +static Gfx head_hip_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hip_1_v[28], 7, 0), +gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&hip_1_v[35], 18, 7), +gsSPNTrianglesInit_5b( + 12, // tri count + 1, 7, 8, // tri0 + 1, 9, 10, // tri1 + 2, 11, 12 // tri2 +), +gsSPNTriangles_5b( + 2, 13, 14, // tri0 + 3, 4, 15, // tri1 + 5, 6, 16, // tri2 + 5, 17, 18 // tri3 +), +gsSPNTriangles_5b( + 4, 19, 20, // tri0 + 1, 3, 21, // tri1 + 6, 2, 22, // tri2 + 0, 1, 23 // tri3 +), +gsSPNTriangles_5b( + 2, 0, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&hip_1_v[53], 27, 0), +gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 +), +gsSPNTriangles_5b( + 1, 5, 2, // tri0 + 4, 0, 3, // tri1 + 4, 3, 5, // tri2 + 6, 7, 8 // tri3 +), +gsSPNTriangles_5b( + 6, 8, 9, // tri0 + 10, 6, 9, // tri1 + 10, 9, 11, // tri2 + 7, 10, 11 // tri3 +), +gsSPNTriangles_5b( + 7, 11, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 12, 13, 14, // tri0 + 15, 16, 17, // tri1 + 14, 18, 12 // tri2 +), +gsSPNTriangles_5b( + 14, 15, 19, // tri0 + 19, 15, 17, // tri1 + 18, 19, 17, // tri2 + 19, 18, 14 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 5, // tri count + 20, 21, 22, // tri0 + 22, 23, 24, // tri1 + 24, 25, 20 // tri2 +), +gsSPNTriangles_5b( + 22, 24, 20, // tri0 + 20, 26, 21, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&hip_1_v[80], 26, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 2, 1 // tri2 +), +gsSPNTriangles_5b( + 0, 6, 7, // tri0 + 5, 2, 3, // tri1 + 1, 7, 3, // tri2 + 0, 7, 1 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 124), +gsSPNTrianglesInit_5b( + 20, // tri count + 8, 9, 10, // tri0 + 8, 11, 12, // tri1 + 8, 12, 13 // tri2 +), +gsSPNTriangles_5b( + 8, 14, 15, // tri0 + 11, 16, 17, // tri1 + 18, 19, 20, // tri2 + 19, 21, 12 // tri3 +), +gsSPNTriangles_5b( + 11, 15, 16, // tri0 + 20, 19, 12, // tri1 + 17, 16, 22, // tri2 + 9, 13, 23 // tri3 +), +gsSPNTriangles_5b( + 12, 11, 17, // tri0 + 12, 17, 20, // tri1 + 17, 22, 24, // tri2 + 24, 18, 20 // tri3 +), +gsSPNTriangles_5b( + 20, 17, 24, // tri0 + 15, 11, 8, // tri1 + 13, 12, 21, // tri2 + 21, 25, 13 // tri3 +), +gsSPNTriangles_5b( + 9, 8, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&hip_1_v[106], 21, 0), +gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 9, 10, 3, // tri0 + 11, 12, 9, // tri1 + 0, 11, 13, // tri2 + 3, 5, 14 // tri3 +), +gsSPNTriangles_5b( + 15, 13, 14, // tri0 + 11, 14, 13, // tri1 + 11, 16, 12, // tri2 + 9, 14, 11 // tri3 +), +gsSPNTriangles_5b( + 15, 14, 5, // tri0 + 3, 14, 9, // tri1 + 8, 7, 4, // tri2 + 3, 17, 8 // tri3 +), +gsSPNTriangles_5b( + 17, 3, 10, // tri0 + 2, 1, 18, // tri1 + 19, 6, 8, // tri2 + 2, 16, 11 // tri3 +), +gsSPNTriangles_5b( + 20, 16, 2, // tri0 + 2, 18, 20, // tri1 + 8, 17, 19, // tri2 + 2, 11, 0 // tri3 +), +gsSPNTriangles_5b( + 4, 3, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_MIRROR, 0, 0), +gsDPSetTileSize(0, 0, 0, 60, 252), +gsSPVertex(&hip_1_v[127], 32, 0), +gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 14, 15, 4, // tri2 + 16, 4, 3 // tri3 +), +gsSPNTriangles_5b( + 9, 17, 10, // tri0 + 18, 12, 11, // tri1 + 19, 20, 21, // tri2 + 20, 19, 22 // tri3 +), +gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 23, 26, 27, // tri1 + 28, 29, 30, // tri2 + 2, 1, 31 // tri3 +), +gsSPVertex(&hip_1_v[159], 32, 0), +gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 4, 5, 3 // tri2 +), +gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 9, 10, 11, // tri1 + 0, 12, 13, // tri2 + 14, 15, 16 // tri3 +), +gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 19, 20, 13, // tri1 + 21, 18, 17, // tri2 + 22, 12, 23 // tri3 +), +gsSPNTriangles_5b( + 13, 22, 24, // tri0 + 16, 19, 25, // tri1 + 16, 15, 19, // tri2 + 5, 14, 18 // tri3 +), +gsSPNTriangles_5b( + 4, 3, 1, // tri0 + 15, 26, 27, // tri1 + 27, 20, 15, // tri2 + 18, 28, 5 // tri3 +), +gsSPNTriangles_5b( + 12, 0, 2, // tri0 + 19, 15, 20, // tri1 + 1, 27, 26, // tri2 + 1, 26, 4 // tri3 +), +gsSPNTriangles_5b( + 2, 29, 12, // tri0 + 16, 18, 14, // tri1 + 25, 17, 16, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&hip_1_v[189], 25, 0), +gsSPNTrianglesInit_5b( + 3, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 4, // tri count + 9, 10, 11, // tri0 + 12, 13, 14, // tri1 + 9, 11, 15 // tri2 +), +gsSPNTriangles_5b( + 16, 13, 12, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 4, // tri count + 17, 18, 19, // tri0 + 19, 20, 17, // tri1 + 21, 22, 23 // tri2 +), +gsSPNTriangles_5b( + 24, 21, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&hip_1_v[214], 18, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 4, 3 // tri2 +), +gsSPNTriangles_5b( + 1, 7, 8, // tri0 + 6, 3, 9, // tri1 + 0, 7, 1, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 4, // tri count + 10, 11, 12, // tri0 + 13, 14, 15, // tri1 + 12, 16, 10 // tri2 +), +gsSPNTriangles_5b( + 15, 17, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx mouth_hip_model[] = { +gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hip_1_v[0], 5, 0), +gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&hip_1_v[5], 23, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 2, 5, 6, // tri0 + 4, 8, 7, // tri1 + 0, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 4, 3, 11, // tri0 + 1, 2, 12, // tri1 + 0, 4, 13, // tri2 + 2, 0, 14 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 2, // tri count + 3, 1, 15, // tri0 + 3, 16, 17, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 4, // tri count + 18, 19, 20, // tri0 + 21, 22, 23, // tri1 + 18, 23, 22 // tri2 +), +gsSPNTriangles_5b( + 18, 22, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 2, // tri count + 24, 25, 26, // tri0 + 27, 25, 24, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_hip_model[] = { +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hip_1_v[265], 5, 0), +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&hip_1_v[270], 13, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 5, // tri0 + 0, 6, 7, // tri1 + 3, 2, 8 // tri2 +), +gsSPNTriangles_5b( + 1, 4, 9, // tri0 + 1, 10, 11, // tri1 + 2, 12, 13, // tri2 + 2, 0, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_hip_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hip_1_v[283], 4, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&hip_1_v[287], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 4, 5, // tri0 + 0, 2, 6, // tri1 + 3, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 9, // tri0 + 3, 1, 10, // tri1 + 2, 11, 12, // tri2 + 1, 13, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_hip_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hip_1_v[232], 5, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&hip_1_v[237], 13, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 1, 0, 5, // tri0 + 0, 6, 7, // tri1 + 2, 3, 8 // tri2 +), +gsSPNTriangles_5b( + 4, 1, 9, // tri0 + 1, 10, 11, // tri1 + 2, 12, 13, // tri2 + 0, 2, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_hip_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hip_1_v[250], 4, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&hip_1_v[254], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 4, 5, // tri0 + 2, 0, 6, // tri1 + 3, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 0, 1, 9, // tri0 + 1, 3, 10, // tri1 + 2, 11, 12, // tri2 + 1, 13, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_hip_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 60), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hip_1_v[298], 16, 0), +gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 9, 10, 4, // tri0 + 3, 0, 2, // tri1 + 11, 12, 13, // tri2 + 7, 6, 12 // tri3 +), +gsSPNTriangles_5b( + 13, 9, 11, // tri0 + 7, 12, 11, // tri1 + 4, 10, 5, // tri2 + 14, 2, 1 // tri3 +), +gsSPNTriangles_5b( + 0, 3, 5, // tri0 + 15, 6, 8, // tri1 + 15, 8, 14, // tri2 + 10, 9, 13 // tri3 +), +gsSPVertex(&hip_1_v[314], 19, 0), +gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 3, 0, 5 // tri2 +), +gsSPNTriangles_5b( + 4, 6, 7, // tri0 + 4, 7, 8, // tri1 + 9, 10, 11, // tri2 + 12, 6, 4 // tri3 +), +gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 13, 15, 16, // tri1 + 13, 17, 18, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail1_hip_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0004C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hip_1_v[342], 12, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail2_hip_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0004C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hip_1_v[333], 9, 0), +gsSPNTrianglesInit_5b( + 3, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_hip_model[] = { +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hip_1_v[392], 5, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 60), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&hip_1_v[397], 16, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 5, 6, // tri0 + 2, 0, 7, // tri1 + 1, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 1, 3, 10, // tri0 + 4, 2, 11, // tri1 + 0, 1, 12, // tri2 + 0, 13, 14 // tri3 +), +gsSPNTriangles_5b( + 2, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 19, 20, 17, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_hip_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hip_1_v[413], 5, 0), +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 60), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&hip_1_v[418], 12, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 3, 5, 6, // tri0 + 3, 2, 7, // tri1 + 2, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 4, 10, 0, // tri0 + 0, 11, 12, // tri1 + 0, 13, 1, // tri2 + 2, 1, 14 // tri3 +), +gsSPNTriangles_5b( + 4, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx lfoot1_hip_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hip_1_v[375], 5, 0), +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 60), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&hip_1_v[380], 12, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 3, 6, 5, // tri0 + 0, 1, 7, // tri1 + 2, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 2, 10, 4, // tri0 + 4, 11, 12, // tri1 + 1, 4, 13, // tri2 + 0, 14, 3 // tri3 +), +gsSPNTriangles_5b( + 0, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_hip_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hip_1_v[354], 5, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 60), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&hip_1_v[359], 16, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 4, 5, 6, // tri0 + 3, 7, 8, // tri1 + 4, 3, 9 // tri2 +), +gsSPNTriangles_5b( + 0, 2, 10, // tri0 + 4, 11, 12, // tri1 + 2, 13, 14, // tri2 + 2, 4, 15 // tri3 +), +gsSPNTriangles_5b( + 3, 1, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 19, 20, 17, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx base_hip_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hip_1_v[430], 24, 0), +gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 6, 4 // tri2 +), +gsSPNTriangles_5b( + 3, 7, 8, // tri0 + 9, 2, 10, // tri1 + 9, 10, 11, // tri2 + 11, 10, 12 // tri3 +), +gsSPNTriangles_5b( + 12, 10, 13, // tri0 + 14, 8, 7, // tri1 + 8, 14, 15, // tri2 + 2, 9, 0 // tri3 +), +gsSPNTriangles_5b( + 8, 15, 16, // tri0 + 4, 6, 5, // tri1 + 6, 1, 0, // tri2 + 5, 7, 3 // tri3 +), +gsSPNTriangles_5b( + 17, 18, 19, // tri0 + 17, 20, 18, // tri1 + 20, 21, 18, // tri2 + 20, 22, 21 // tri3 +), +gsSPNTriangles_5b( + 21, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_hip_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_hip_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-600,0 }, + /* joint 3 */ { lfoot1_hip_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_hip_model, 1, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 250,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,600,0 }, + /* joint 7 */ { Rfoot1_hip_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_hip_model, 1, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 250,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,-1300 }, + /* joint 11 */ { tail1_hip_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_hip_model, 0, cKF_JOINT_FLAG_DISP_OPA, 602,0,0 }, + /* joint 13 */ { chest_hip_model, 3, cKF_JOINT_FLAG_DISP_OPA, 430,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 1100,-1450,0 }, + /* joint 15 */ { Larm1_hip_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_hip_model, 0, cKF_JOINT_FLAG_DISP_OPA, 556,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 1100,1450,1 }, + /* joint 18 */ { Rarm1_hip_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_hip_model, 1, cKF_JOINT_FLAG_DISP_OPA, 549,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 553,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 2020,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 100,0,900 }, + /* joint 23 */ { mouth_hip_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_hip_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1950,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_hip_1 = { 26, 14, cKF_je_r_hip_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/hrs_1.c b/src/data/npc/model/mdl/hrs_1.c new file mode 100644 index 00000000..1cd72ac0 --- /dev/null +++ b/src/data/npc/model/mdl/hrs_1.c @@ -0,0 +1,791 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx hrs_1_v[] = { +#include "assets/npc/mdl/hrs_1_v.inc" +}; + +static Gfx head_hrs_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hrs_1_v[24], 6, 0), +gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 60), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&hrs_1_v[30], 23, 6), +gsSPNTrianglesInit_5b( + 14, // tri count + 2, 6, 7, // tri0 + 0, 8, 9, // tri1 + 2, 5, 10 // tri2 +), +gsSPNTriangles_5b( + 3, 2, 11, // tri0 + 1, 4, 12, // tri1 + 1, 13, 14, // tri2 + 5, 0, 15 // tri3 +), +gsSPNTriangles_5b( + 5, 16, 17, // tri0 + 0, 18, 19, // tri1 + 0, 1, 20, // tri2 + 5, 21, 22 // tri3 +), +gsSPNTriangles_5b( + 5, 23, 24, // tri0 + 5, 26, 25, // tri1 + 0, 28, 27, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 24, 15, GX_MIRROR, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 92), +gsSPVertex(&hrs_1_v[53], 19, 0), +gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 +), +gsSPNTriangles_5b( + 8, 1, 9, // tri0 + 1, 0, 10, // tri1 + 11, 3, 6, // tri2 + 12, 2, 6 // tri3 +), +gsSPNTriangles_5b( + 4, 3, 11, // tri0 + 13, 11, 8, // tri1 + 2, 1, 8, // tri2 + 8, 11, 6 // tri3 +), +gsSPNTriangles_5b( + 8, 6, 2, // tri0 + 7, 12, 6, // tri1 + 2, 12, 0, // tri2 + 11, 13, 4 // tri3 +), +gsSPNTriangles_5b( + 9, 13, 8, // tri0 + 5, 7, 3, // tri1 + 10, 9, 1, // tri2 + 14, 15, 16 // tri3 +), +gsSPNTriangles_5b( + 14, 16, 17, // tri0 + 14, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&hrs_1_v[72], 25, 0), +gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 9, 4, 3, // tri0 + 10, 11, 12, // tri1 + 11, 10, 6, // tri2 + 2, 1, 13 // tri3 +), +gsSPNTriangles_5b( + 8, 2, 6, // tri0 + 6, 2, 11, // tri1 + 2, 8, 0, // tri2 + 13, 11, 2 // tri3 +), +gsSPNTriangles_5b( + 12, 11, 13, // tri0 + 0, 8, 3, // tri1 + 14, 15, 12, // tri2 + 3, 8, 7 // tri3 +), +gsSPNTriangles_5b( + 12, 15, 16, // tri0 + 7, 9, 3, // tri1 + 3, 5, 0, // tri2 + 13, 14, 12 // tri3 +), +gsSPNTriangles_5b( + 12, 16, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 17, 18, 19, // tri0 + 20, 18, 17, // tri1 + 21, 22, 23 // tri2 +), +gsSPNTriangles_5b( + 24, 17, 19, // tri0 + 22, 18, 20, // tri1 + 21, 19, 18, // tri2 + 21, 18, 22 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&hrs_1_v[97], 10, 0), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 5, 0 // tri2 +), +gsSPNTriangles_5b( + 4, 0, 3, // tri0 + 6, 7, 8, // tri1 + 8, 7, 5, // tri2 + 8, 5, 4 // tri3 +), +gsSPNTriangles_5b( + 6, 9, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&hrs_1_v[107], 27, 0), +gsSPNTrianglesInit_5b( + 35, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 6, 0, // tri0 + 9, 10, 11, // tri1 + 8, 0, 6, // tri2 + 12, 11, 8 // tri3 +), +gsSPNTriangles_5b( + 11, 12, 9, // tri0 + 1, 13, 2, // tri1 + 13, 1, 14, // tri2 + 15, 16, 17 // tri3 +), +gsSPNTriangles_5b( + 5, 1, 0, // tri0 + 18, 10, 19, // tri1 + 16, 14, 4, // tri2 + 19, 20, 21 // tri3 +), +gsSPNTriangles_5b( + 22, 21, 20, // tri0 + 14, 15, 13, // tri1 + 23, 20, 19, // tri2 + 24, 19, 21 // tri3 +), +gsSPNTriangles_5b( + 18, 25, 26, // tri0 + 14, 1, 5, // tri1 + 11, 10, 18, // tri2 + 19, 10, 23 // tri3 +), +gsSPNTriangles_5b( + 16, 15, 14, // tri0 + 9, 23, 10, // tri1 + 8, 7, 12, // tri2 + 4, 14, 5 // tri3 +), +gsSPNTriangles_5b( + 18, 19, 24, // tri0 + 4, 3, 24, // tri1 + 3, 25, 18, // tri2 + 18, 24, 3 // tri3 +), +gsSPNTriangles_5b( + 5, 25, 3, // tri0 + 24, 22, 17, // tri1 + 24, 17, 4, // tri2 + 26, 25, 5 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&hrs_1_v[134], 22, 0), +gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 1 // tri2 +), +gsSPNTriangles_5b( + 2, 8, 0, // tri0 + 9, 6, 0, // tri1 + 5, 10, 3, // tri2 + 11, 12, 5 // tri3 +), +gsSPNTriangles_5b( + 11, 4, 13, // tri0 + 1, 0, 6, // tri1 + 11, 5, 4, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 60), +gsSPNTrianglesInit_5b( + 7, // tri count + 14, 15, 16, // tri0 + 17, 18, 19, // tri1 + 19, 18, 16 // tri2 +), +gsSPNTriangles_5b( + 19, 20, 21, // tri0 + 15, 20, 19, // tri1 + 16, 15, 19, // tri2 + 19, 21, 17 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx mouth_hrs_model[] = { +gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hrs_1_v[0], 5, 0), +gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 60), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&hrs_1_v[5], 19, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 5, 6, // tri0 + 2, 7, 8, // tri1 + 4, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 4, 0, 11, // tri0 + 1, 12, 13, // tri1 + 1, 3, 14, // tri2 + 2, 4, 15 // tri3 +), +gsSPNTrianglesInit_5b( + 4, // tri count + 16, 17, 18, // tri0 + 18, 17, 19, // tri1 + 20, 21, 22 // tri2 +), +gsSPNTriangles_5b( + 18, 23, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_hrs_model[] = { +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hrs_1_v[192], 5, 0), +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&hrs_1_v[197], 16, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 0, 1, 11, // tri0 + 2, 4, 12, // tri1 + 0, 13, 14, // tri2 + 3, 0, 15 // tri3 +), +gsSPNTriangles_5b( + 4, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 20, 19, 18, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_hrs_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hrs_1_v[213], 4, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&hrs_1_v[217], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 2, 0, 8 // tri2 +), +gsSPNTriangles_5b( + 3, 2, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 1, 3, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_hrs_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hrs_1_v[156], 5, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&hrs_1_v[161], 16, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 +), +gsSPNTriangles_5b( + 3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_hrs_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hrs_1_v[177], 4, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&hrs_1_v[181], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_hrs_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hrs_1_v[228], 7, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&hrs_1_v[235], 20, 7), +gsSPNTrianglesInit_5b( + 13, // tri count + 3, 1, 7, // tri0 + 6, 8, 9, // tri1 + 3, 10, 11 // tri2 +), +gsSPNTriangles_5b( + 2, 12, 0, // tri0 + 2, 13, 14, // tri1 + 1, 16, 15, // tri2 + 0, 17, 18 // tri3 +), +gsSPNTriangles_5b( + 0, 19, 20, // tri0 + 1, 21, 22, // tri1 + 6, 3, 23, // tri2 + 2, 6, 24 // tri3 +), +gsSPNTriangles_5b( + 4, 0, 25, // tri0 + 5, 26, 1, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&hrs_1_v[255], 14, 0), +gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 6, 5, 12 // tri3 +), +gsSPNTriangles_5b( + 11, 10, 5, // tri0 + 11, 5, 4, // tri1 + 1, 13, 2, // tri2 + 3, 2, 9 // tri3 +), +gsSPNTriangles_5b( + 3, 9, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail1_hrs_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hrs_1_v[283], 8, 0), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 0, 4 // tri2 +), +gsSPNTriangles_5b( + 4, 3, 1, // tri0 + 0, 2, 6, // tri1 + 7, 5, 6, // tri2 + 6, 2, 7 // tri3 +), +gsSPNTriangles_5b( + 5, 7, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail2_hrs_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hrs_1_v[269], 4, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&hrs_1_v[273], 10, 4), +gsSPNTrianglesInit_5b( + 4, // tri count + 2, 1, 4, // tri0 + 3, 2, 5, // tri1 + 0, 3, 6 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 8, // tri count + 8, 9, 10, // tri0 + 11, 9, 12, // tri1 + 12, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 10, 9, 11, // tri0 + 10, 11, 13, // tri1 + 13, 11, 12, // tri2 + 13, 8, 10 // tri3 +), +gsSPNTriangles_5b( + 12, 8, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_hrs_model[] = { +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hrs_1_v[341], 5, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&hrs_1_v[346], 17, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 4, 0, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 1, 2, 10, // tri0 + 2, 3, 11, // tri1 + 3, 4, 12, // tri2 + 2, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_hrs_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hrs_1_v[363], 4, 0), +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&hrs_1_v[367], 22, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 3, 4, // tri0 + 0, 5, 1, // tri1 + 1, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 3, 2, 8, // tri0 + 2, 9, 10, // tri1 + 2, 1, 11, // tri2 + 0, 13, 12 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 14, 15, 16, // tri0 + 14, 16, 17, // tri1 + 17, 18, 14 // tri2 +), +gsSPNTriangles_5b( + 19, 20, 21, // tri0 + 21, 20, 18, // tri1 + 21, 22, 19, // tri2 + 17, 21, 18 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsSPNTrianglesInit_5b( + 1, // tri count + 23, 24, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_hrs_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hrs_1_v[291], 5, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&hrs_1_v[296], 17, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 4, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 1, 10, // tri0 + 3, 2, 11, // tri1 + 4, 3, 12, // tri2 + 2, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_hrs_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hrs_1_v[313], 6, 0), +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&hrs_1_v[319], 22, 6), +gsSPNTrianglesInit_5b( + 7, // tri count + 4, 0, 6, // tri0 + 1, 7, 0, // tri1 + 1, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 2, 5, 10, // tri0 + 2, 11, 12, // tri1 + 1, 3, 13, // tri2 + 0, 15, 14 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 16, 17, 18, // tri0 + 19, 16, 18, // tri1 + 18, 20, 19 // tri2 +), +gsSPNTriangles_5b( + 21, 22, 23, // tri0 + 20, 22, 21, // tri1 + 23, 24, 21, // tri2 + 20, 21, 19 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsSPNTrianglesInit_5b( + 1, // tri count + 25, 26, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx base_hrs_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&hrs_1_v[389], 14, 0), +gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 9, 5, 4, // tri0 + 10, 4, 0, // tri1 + 10, 9, 4, // tri2 + 7, 11, 12 // tri3 +), +gsSPNTriangles_5b( + 8, 7, 13, // tri0 + 2, 10, 0, // tri1 + 2, 1, 6, // tri2 + 6, 8, 2 // tri3 +), +gsSPNTriangles_5b( + 7, 12, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_hrs_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_hrs_model, 4, cKF_JOINT_FLAG_DISP_OPA, 42,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_hrs_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_hrs_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_hrs_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_hrs_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 200,0,-600 }, + /* joint 11 */ { tail1_hrs_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_hrs_model, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_hrs_model, 3, cKF_JOINT_FLAG_DISP_OPA, 325,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 400,-600,0 }, + /* joint 15 */ { Larm1_hrs_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_hrs_model, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 400,600,0 }, + /* joint 18 */ { Rarm1_hrs_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_hrs_model, 1, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 675,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 650,0,1000 }, + /* joint 23 */ { mouth_hrs_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_hrs_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1558,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_hrs_1 = { 26, 14, cKF_je_r_hrs_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/kab_1.c b/src/data/npc/model/mdl/kab_1.c new file mode 100644 index 00000000..0c4d2ec8 --- /dev/null +++ b/src/data/npc/model/mdl/kab_1.c @@ -0,0 +1,713 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx kab_1_v[] = { +#include "assets/npc/mdl/kab_1_v.inc" +}; + +static Gfx head_kab_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&kab_1_v[26], 28, 0), +gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 4, // tri count + 4, 5, 6, // tri0 + 7, 5, 4, // tri1 + 8, 5, 7 // tri2 +), +gsSPNTriangles_5b( + 6, 5, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 2, // tri count + 10, 11, 12, // tri0 + 12, 13, 10, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 10, // tri count + 14, 15, 16, // tri0 + 15, 17, 18, // tri1 + 17, 15, 14 // tri2 +), +gsSPNTriangles_5b( + 17, 14, 19, // tri0 + 17, 19, 20, // tri1 + 18, 16, 15, // tri2 + 16, 18, 20 // tri3 +), +gsSPNTriangles_5b( + 14, 16, 19, // tri0 + 20, 18, 17, // tri1 + 20, 19, 16, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 10, // tri count + 21, 22, 23, // tri0 + 24, 25, 22, // tri1 + 23, 22, 25 // tri2 +), +gsSPNTriangles_5b( + 26, 23, 25, // tri0 + 27, 26, 25, // tri1 + 22, 21, 24, // tri2 + 27, 24, 21 // tri3 +), +gsSPNTriangles_5b( + 26, 21, 23, // tri0 + 25, 24, 27, // tri1 + 21, 26, 27, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&kab_1_v[54], 23, 0), +gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 5, 4, 7, // tri0 + 7, 8, 5, // tri1 + 9, 3, 7, // tri2 + 6, 10, 4 // tri3 +), +gsSPNTriangles_5b( + 4, 10, 11, // tri0 + 0, 12, 8, // tri1 + 0, 2, 12, // tri2 + 11, 9, 4 // tri3 +), +gsSPNTriangles_5b( + 13, 1, 14, // tri0 + 8, 15, 16, // tri1 + 17, 18, 3, // tri2 + 19, 20, 21 // tri3 +), +gsSPNTriangles_5b( + 19, 21, 22, // tri0 + 21, 13, 14, // tri1 + 1, 3, 18, // tri2 + 15, 8, 12 // tri3 +), +gsSPNTriangles_5b( + 13, 21, 20, // tri0 + 15, 12, 19, // tri1 + 16, 5, 8, // tri2 + 14, 1, 18 // tri3 +), +gsSPNTriangles_5b( + 19, 12, 20, // tri0 + 3, 9, 17, // tri1 + 8, 7, 0, // tri2 + 0, 7, 3 // tri3 +), +gsSPNTriangles_5b( + 7, 4, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsSPVertex(&kab_1_v[77], 22, 0), +gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 9, 10, // tri0 + 11, 4, 3, // tri1 + 12, 13, 14, // tri2 + 3, 8, 11 // tri3 +), +gsSPNTriangles_5b( + 15, 12, 16, // tri0 + 10, 17, 2, // tri1 + 10, 14, 13, // tri2 + 9, 14, 10 // tri3 +), +gsSPNTriangles_5b( + 18, 11, 8, // tri0 + 12, 15, 19, // tri1 + 7, 18, 8, // tri2 + 2, 17, 0 // tri3 +), +gsSPNTriangles_5b( + 12, 19, 13, // tri0 + 5, 20, 16, // tri1 + 5, 16, 21, // tri2 + 16, 20, 15 // tri3 +), +gsSPNTriangles_5b( + 0, 6, 1, // tri0 + 7, 6, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&kab_1_v[99], 32, 0), +gsSPNTrianglesInit_5b( + 27, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 12, 13, 1, // tri1 + 14, 15, 16, // tri2 + 17, 14, 11 // tri3 +), +gsSPNTriangles_5b( + 4, 3, 18, // tri0 + 19, 8, 7, // tri1 + 9, 3, 10, // tri2 + 13, 16, 1 // tri3 +), +gsSPNTriangles_5b( + 14, 17, 15, // tri0 + 11, 20, 9, // tri1 + 1, 0, 12, // tri2 + 11, 14, 20 // tri3 +), +gsSPNTriangles_5b( + 1, 16, 21, // tri0 + 1, 21, 2, // tri1 + 22, 17, 11, // tri2 + 23, 24, 25 // tri3 +), +gsSPNTriangles_5b( + 8, 0, 6, // tri0 + 8, 26, 27, // tri1 + 27, 26, 3, // tri2 + 2, 6, 0 // tri3 +), +gsSPNTriangles_5b( + 5, 10, 3, // tri0 + 16, 13, 20, // tri1 + 16, 20, 14, // tri2 + 28, 29, 30 // tri3 +), +gsSPVertex(&kab_1_v[130], 29, 0), +gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 0, 4, 1 // tri2 +), +gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 5, 7, // tri1 + 9, 0, 3, // tri2 + 10, 11, 12 // tri3 +), +gsSPNTriangles_5b( + 13, 14, 8, // tri0 + 15, 16, 17, // tri1 + 18, 19, 20, // tri2 + 20, 21, 18 // tri3 +), +gsSPNTriangles_5b( + 22, 23, 24, // tri0 + 21, 25, 18, // tri1 + 26, 27, 22, // tri2 + 12, 28, 10 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx mouth_kab_model[] = { +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&kab_1_v[0], 6, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 24, 15, GX_MIRROR, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&kab_1_v[6], 20, 6), +gsSPNTrianglesInit_5b( + 10, // tri count + 3, 4, 6, // tri0 + 5, 2, 7, // tri1 + 2, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 2, 1, 10, // tri0 + 1, 11, 12, // tri1 + 0, 13, 14, // tri2 + 3, 15, 16 // tri3 +), +gsSPNTriangles_5b( + 0, 3, 17, // tri0 + 1, 18, 19, // tri1 + 1, 0, 20, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 21, 22, 23, // tri0 + 23, 24, 25, // tri1 + 23, 25, 21 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_kab_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&kab_1_v[193], 4, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&kab_1_v[197], 16, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 4, 5, // tri0 + 1, 6, 7, // tri1 + 2, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 1, 10, 11, // tri0 + 0, 2, 12, // tri1 + 0, 13, 1, // tri2 + 2, 3, 14 // tri3 +), +gsSPNTriangles_5b( + 3, 1, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 16, 17, 18, // tri0 + 19, 18, 17, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_kab_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&kab_1_v[213], 3, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&kab_1_v[216], 11, 3), +gsSPNTrianglesInit_5b( + 7, // tri count + 2, 3, 1, // tri0 + 0, 5, 4, // tri1 + 2, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 0, 10, 11, // tri1 + 2, 0, 12, // tri2 + 0, 1, 13 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_kab_model[] = { +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&kab_1_v[159], 4, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&kab_1_v[163], 16, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 4, 5, // tri0 + 1, 6, 7, // tri1 + 2, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 1, 10, 11, // tri0 + 2, 0, 12, // tri1 + 1, 13, 0, // tri2 + 3, 2, 14 // tri3 +), +gsSPNTriangles_5b( + 1, 3, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_kab_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&kab_1_v[179], 3, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&kab_1_v[182], 11, 3), +gsSPNTrianglesInit_5b( + 7, // tri count + 1, 3, 2, // tri0 + 0, 5, 4, // tri1 + 2, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 0, 10, 11, // tri1 + 0, 2, 12, // tri2 + 1, 0, 13 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_kab_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&kab_1_v[227], 10, 0), +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&kab_1_v[237], 20, 10), +gsSPNTrianglesInit_5b( + 13, // tri count + 2, 5, 10, // tri0 + 5, 6, 11, // tri1 + 1, 12, 13 // tri2 +), +gsSPNTriangles_5b( + 3, 14, 15, // tri0 + 3, 2, 16, // tri1 + 4, 17, 18, // tri2 + 0, 4, 19 // tri3 +), +gsSPNTriangles_5b( + 7, 20, 21, // tri0 + 0, 22, 23, // tri1 + 6, 8, 24, // tri2 + 7, 1, 25 // tri3 +), +gsSPNTriangles_5b( + 8, 26, 27, // tri0 + 5, 28, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&kab_1_v[257], 4, 10), +gsSPNTrianglesInit_5b( + 3, // tri count + 1, 9, 10, // tri0 + 9, 0, 11, // tri1 + 5, 12, 13 // tri2 +), +gsSPVertex(&kab_1_v[261], 23, 0), +gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 3, 7, 0, // tri0 + 0, 7, 8, // tri1 + 9, 10, 11, // tri2 + 1, 12, 13 // tri3 +), +gsSPNTriangles_5b( + 0, 8, 12, // tri0 + 9, 14, 15, // tri1 + 15, 10, 9, // tri2 + 0, 12, 1 // tri3 +), +gsSPNTriangles_5b( + 10, 16, 11, // tri0 + 11, 17, 9, // tri1 + 11, 18, 17, // tri2 + 14, 19, 15 // tri3 +), +gsSPNTriangles_5b( + 3, 20, 7, // tri0 + 16, 10, 15, // tri1 + 5, 21, 22, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_kab_model[] = { +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&kab_1_v[325], 6, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&kab_1_v[331], 14, 6), +gsSPNTrianglesInit_5b( + 5, // tri count + 2, 4, 6, // tri0 + 0, 2, 7, // tri1 + 4, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 0, 11, 10, // tri0 + 2, 12, 13, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 2, // tri count + 3, 5, 14, // tri0 + 5, 1, 15, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 3, // tri count + 16, 17, 18, // tri0 + 18, 17, 19, // tri1 + 16, 19, 17 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_kab_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&kab_1_v[345], 8, 0), +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&kab_1_v[353], 13, 8), +gsSPNTrianglesInit_5b( + 9, // tri count + 6, 8, 9, // tri0 + 7, 4, 10, // tri1 + 5, 11, 12 // tri2 +), +gsSPNTriangles_5b( + 2, 6, 13, // tri0 + 0, 2, 14, // tri1 + 3, 15, 5, // tri2 + 3, 16, 17 // tri3 +), +gsSPNTriangles_5b( + 3, 1, 18, // tri0 + 2, 19, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_kab_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&kab_1_v[284], 6, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&kab_1_v[290], 14, 6), +gsSPNTrianglesInit_5b( + 2, // tri count + 5, 3, 6, // tri0 + 1, 5, 7, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 5, // tri count + 2, 8, 9, // tri0 + 4, 2, 10, // tri1 + 2, 0, 11 // tri2 +), +gsSPNTriangles_5b( + 4, 13, 12, // tri0 + 0, 15, 14, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 16, 17, 18, // tri0 + 19, 17, 16, // tri1 + 17, 19, 18 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_kab_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&kab_1_v[304], 8, 0), +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&kab_1_v[312], 13, 8), +gsSPNTrianglesInit_5b( + 9, // tri count + 6, 8, 9, // tri0 + 4, 2, 10, // tri1 + 4, 11, 12 // tri2 +), +gsSPNTriangles_5b( + 7, 5, 13, // tri0 + 3, 6, 14, // tri1 + 2, 0, 15, // tri2 + 1, 3, 16 // tri3 +), +gsSPNTriangles_5b( + 3, 17, 18, // tri0 + 2, 19, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx base_kab_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&kab_1_v[366], 30, 0), +gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 12, 13, 14, // tri1 + 15, 16, 17, // tri2 + 5, 9, 3 // tri3 +), +gsSPNTriangles_5b( + 15, 18, 19, // tri0 + 20, 13, 12, // tri1 + 8, 7, 21, // tri2 + 11, 3, 9 // tri3 +), +gsSPNTriangles_5b( + 19, 16, 15, // tri0 + 22, 15, 17, // tri1 + 20, 23, 13, // tri2 + 7, 24, 21 // tri3 +), +gsSPNTriangles_5b( + 21, 24, 25, // tri0 + 14, 26, 12, // tri1 + 8, 27, 6, // tri2 + 21, 28, 8 // tri3 +), +gsSPNTriangles_5b( + 12, 29, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_kab_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_kab_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_kab_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_kab_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_kab_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_kab_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 150,0,-850 }, + /* joint 11 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_kab_model, 3, cKF_JOINT_FLAG_DISP_OPA, 425,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 650,-500,0 }, + /* joint 15 */ { Larm1_kab_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_kab_model, 0, cKF_JOINT_FLAG_DISP_OPA, 558,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 650,500,0 }, + /* joint 18 */ { Rarm1_kab_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_kab_model, 1, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 875,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 700,0,1250 }, + /* joint 23 */ { mouth_kab_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_kab_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1245,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_kab_1 = { 26, 12, cKF_je_r_kab_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/kal_1.c b/src/data/npc/model/mdl/kal_1.c new file mode 100644 index 00000000..ad95b306 --- /dev/null +++ b/src/data/npc/model/mdl/kal_1.c @@ -0,0 +1,637 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx kal_1_v[] = { +#include "assets/npc/mdl/kal_1_v.inc" +}; + +static Gfx head_kal_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&kal_1_v[0], 25, 0), +gsSPNTrianglesInit_5b( + 29, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 1 // tri2 +), +gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 6, 10, 1, // tri1 + 11, 12, 13, // tri2 + 11, 13, 14 // tri3 +), +gsSPNTriangles_5b( + 6, 0, 15, // tri0 + 9, 16, 5, // tri1 + 7, 9, 4, // tri2 + 17, 7, 4 // tri3 +), +gsSPNTriangles_5b( + 15, 0, 18, // tri0 + 3, 5, 19, // tri1 + 15, 20, 6, // tri2 + 5, 4, 9 // tri3 +), +gsSPNTriangles_5b( + 15, 13, 12, // tri0 + 11, 14, 5, // tri1 + 19, 5, 14, // tri2 + 21, 22, 12 // tri3 +), +gsSPNTriangles_5b( + 23, 15, 18, // tri0 + 13, 15, 23, // tri1 + 23, 19, 14, // tri2 + 23, 14, 13 // tri3 +), +gsSPNTriangles_5b( + 12, 22, 15, // tri0 + 11, 24, 21, // tri1 + 12, 11, 21, // tri2 + 5, 24, 11 // tri3 +), +gsSPNTriangles_5b( + 4, 3, 17, // tri0 + 2, 18, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&kal_1_v[25], 22, 0), +gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 3, 5, 4 // tri2 +), +gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 2, 4, 9, // tri1 + 7, 10, 11, // tri2 + 7, 11, 8 // tri3 +), +gsSPNTriangles_5b( + 0, 8, 1, // tri0 + 8, 0, 12, // tri1 + 12, 0, 2, // tri2 + 12, 6, 8 // tri3 +), +gsSPNTriangles_5b( + 1, 3, 2, // tri0 + 2, 9, 12, // tri1 + 8, 11, 1, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 13, 14, 15, // tri0 + 16, 17, 18, // tri1 + 17, 16, 19 // tri2 +), +gsSPNTriangles_5b( + 20, 14, 21, // tri0 + 21, 17, 19, // tri1 + 19, 20, 21, // tri2 + 20, 15, 14 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 32, 40, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&kal_1_v[47], 21, 0), +gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 2 // tri2 +), +gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 9, 3, 2, // tri1 + 0, 3, 10, // tri2 + 0, 10, 11 // tri3 +), +gsSPNTriangles_5b( + 12, 0, 11, // tri0 + 4, 13, 14, // tri1 + 15, 0, 12, // tri2 + 14, 16, 4 // tri3 +), +gsSPNTriangles_5b( + 9, 5, 17, // tri0 + 17, 4, 16, // tri1 + 17, 5, 4, // tri2 + 18, 13, 1 // tri3 +), +gsSPNTriangles_5b( + 9, 10, 3, // tri0 + 2, 5, 9, // tri1 + 13, 4, 1, // tri2 + 19, 13, 18 // tri3 +), +gsSPNTriangles_5b( + 15, 1, 0, // tri0 + 1, 15, 18, // tri1 + 6, 19, 18, // tri2 + 18, 15, 6 // tri3 +), +gsSPNTriangles_5b( + 8, 20, 19, // tri0 + 19, 6, 8, // tri1 + 2, 1, 4, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&kal_1_v[68], 32, 0), +gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 1, 9, 2, // tri0 + 10, 11, 12, // tri1 + 6, 13, 14, // tri2 + 15, 16, 13 // tri3 +), +gsSPNTriangles_5b( + 17, 18, 19, // tri0 + 19, 20, 17, // tri1 + 21, 19, 12, // tri2 + 3, 5, 22 // tri3 +), +gsSPNTriangles_5b( + 5, 23, 24, // tri0 + 13, 25, 15, // tri1 + 26, 27, 22, // tri2 + 0, 28, 29 // tri3 +), +gsSPNTriangles_5b( + 30, 31, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&kal_1_v[100], 32, 0), +gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 2, 6 // tri2 +), +gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 13, 14, 15, // tri2 + 6, 16, 15 // tri3 +), +gsSPNTriangles_5b( + 3, 5, 17, // tri0 + 17, 18, 19, // tri1 + 7, 20, 21, // tri2 + 22, 23, 24 // tri3 +), +gsSPNTriangles_5b( + 12, 11, 25, // tri0 + 26, 10, 12, // tri1 + 7, 9, 27, // tri2 + 22, 24, 12 // tri3 +), +gsSPNTriangles_5b( + 21, 28, 7, // tri0 + 17, 19, 29, // tri1 + 7, 28, 30, // tri2 + 31, 13, 15 // tri3 +), +gsSPVertex(&kal_1_v[132], 9, 0), +gsSPNTrianglesInit_5b( + 3, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_kal_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&kal_1_v[177], 5, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&kal_1_v[182], 16, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 5, 3, // tri0 + 1, 4, 6, // tri1 + 1, 8, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 10, 9, // tri0 + 0, 1, 11, // tri1 + 2, 12, 13, // tri2 + 2, 0, 14 // tri3 +), +gsSPNTriangles_5b( + 2, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 20, 18, 17, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_kal_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&kal_1_v[198], 4, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&kal_1_v[202], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 2, 4, // tri0 + 0, 5, 6, // tri1 + 1, 8, 7 // tri2 +), +gsSPNTriangles_5b( + 2, 9, 10, // tri0 + 3, 1, 11, // tri1 + 1, 0, 12, // tri2 + 1, 13, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_kal_model[] = { +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&kal_1_v[141], 5, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&kal_1_v[146], 16, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 +), +gsSPNTriangles_5b( + 3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_kal_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&kal_1_v[162], 4, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&kal_1_v[166], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_kal_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&kal_1_v[213], 7, 0), +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&kal_1_v[220], 20, 7), +gsSPNTrianglesInit_5b( + 13, // tri count + 3, 1, 7, // tri0 + 6, 8, 9, // tri1 + 3, 10, 11 // tri2 +), +gsSPNTriangles_5b( + 2, 12, 0, // tri0 + 2, 13, 14, // tri1 + 1, 16, 15, // tri2 + 0, 17, 18 // tri3 +), +gsSPNTriangles_5b( + 0, 19, 20, // tri0 + 1, 21, 22, // tri1 + 6, 3, 23, // tri2 + 2, 6, 24 // tri3 +), +gsSPNTriangles_5b( + 4, 0, 25, // tri0 + 5, 26, 1, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&kal_1_v[240], 9, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 0, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 4, 3, 7, // tri0 + 2, 5, 0, // tri1 + 1, 8, 2, // tri2 + 6, 3, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_kal_model[] = { +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&kal_1_v[299], 5, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&kal_1_v[304], 17, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 4, 0, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 1, 2, 10, // tri0 + 2, 3, 11, // tri1 + 3, 4, 12, // tri2 + 2, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_kal_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&kal_1_v[321], 4, 0), +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&kal_1_v[325], 22, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 3, 4, // tri0 + 0, 5, 1, // tri1 + 1, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 3, 2, 8, // tri0 + 2, 9, 10, // tri1 + 2, 1, 11, // tri2 + 0, 13, 12 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 14, 15, 16, // tri0 + 14, 16, 17, // tri1 + 17, 18, 14 // tri2 +), +gsSPNTriangles_5b( + 19, 20, 21, // tri0 + 21, 20, 18, // tri1 + 21, 22, 19, // tri2 + 17, 21, 18 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsSPNTrianglesInit_5b( + 1, // tri count + 23, 24, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_kal_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&kal_1_v[249], 5, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&kal_1_v[254], 17, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 4, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 1, 10, // tri0 + 3, 2, 11, // tri1 + 4, 3, 12, // tri2 + 2, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_kal_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&kal_1_v[271], 6, 0), +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&kal_1_v[277], 22, 6), +gsSPNTrianglesInit_5b( + 7, // tri count + 4, 0, 6, // tri0 + 1, 7, 0, // tri1 + 1, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 2, 5, 10, // tri0 + 2, 11, 12, // tri1 + 1, 3, 13, // tri2 + 0, 15, 14 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 16, 17, 18, // tri0 + 19, 16, 18, // tri1 + 18, 20, 19 // tri2 +), +gsSPNTriangles_5b( + 21, 22, 23, // tri0 + 20, 22, 21, // tri1 + 23, 24, 21, // tri2 + 20, 21, 19 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsSPNTrianglesInit_5b( + 1, // tri count + 25, 26, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx base_kal_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&kal_1_v[347], 14, 0), +gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 9, 5, 4, // tri0 + 10, 4, 0, // tri1 + 10, 9, 4, // tri2 + 7, 11, 12 // tri3 +), +gsSPNTriangles_5b( + 8, 7, 13, // tri0 + 2, 10, 0, // tri1 + 2, 1, 6, // tri2 + 6, 8, 2 // tri3 +), +gsSPNTriangles_5b( + 7, 12, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_kal_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_kal_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_kal_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_kal_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_kal_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_kal_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 75,0,-475 }, + /* joint 11 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_kal_model, 3, cKF_JOINT_FLAG_DISP_OPA, 325,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,-450,0 }, + /* joint 15 */ { Larm1_kal_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_kal_model, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,450,0 }, + /* joint 18 */ { Rarm1_kal_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_kal_model, 1, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 675,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,600 }, + /* joint 23 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_kal_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1500,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_kal_1 = { 26, 11, cKF_je_r_kal_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/kgr_1.c b/src/data/npc/model/mdl/kgr_1.c new file mode 100644 index 00000000..9e3b0b04 --- /dev/null +++ b/src/data/npc/model/mdl/kgr_1.c @@ -0,0 +1,845 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx kgr_1_v[] = { +#include "assets/npc/mdl/kgr_1_v.inc" +}; + +static Gfx head_kgr_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&kgr_1_v[18], 6, 0), +gsSPMatrix(0x0D000380, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&kgr_1_v[24], 19, 6), +gsSPNTrianglesInit_5b( + 12, // tri count + 4, 6, 7, // tri0 + 0, 9, 8, // tri1 + 3, 1, 10 // tri2 +), +gsSPNTriangles_5b( + 1, 12, 11, // tri0 + 1, 0, 13, // tri1 + 3, 14, 15, // tri2 + 2, 17, 16 // tri3 +), +gsSPNTriangles_5b( + 4, 2, 18, // tri0 + 0, 5, 19, // tri1 + 5, 20, 21, // tri2 + 2, 3, 22 // tri3 +), +gsSPNTriangles_5b( + 1, 23, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&kgr_1_v[43], 29, 0), +gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 0, 2 // tri2 +), +gsSPNTriangles_5b( + 6, 2, 4, // tri0 + 7, 6, 8, // tri1 + 4, 2, 5, // tri2 + 8, 9, 7 // tri3 +), +gsSPNTriangles_5b( + 5, 10, 3, // tri0 + 7, 0, 6, // tri1 + 6, 4, 3, // tri2 + 6, 3, 8 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000180, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 18, // tri count + 11, 12, 13, // tri0 + 14, 15, 16, // tri1 + 17, 18, 19 // tri2 +), +gsSPNTriangles_5b( + 14, 20, 13, // tri0 + 21, 22, 17, // tri1 + 15, 23, 17, // tri2 + 15, 14, 23 // tri3 +), +gsSPNTriangles_5b( + 12, 11, 24, // tri0 + 17, 24, 21, // tri1 + 19, 15, 17, // tri2 + 11, 25, 26 // tri3 +), +gsSPNTriangles_5b( + 11, 26, 27, // tri0 + 16, 28, 20, // tri1 + 16, 20, 14, // tri2 + 13, 25, 11 // tri3 +), +gsSPNTriangles_5b( + 13, 23, 14, // tri0 + 17, 12, 24, // tri1 + 27, 24, 11, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&kgr_1_v[72], 31, 0), +gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 14, // tri count + 4, 5, 6, // tri0 + 7, 8, 9, // tri1 + 7, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 7, 11, 8, // tri0 + 10, 4, 7, // tri1 + 9, 12, 13, // tri2 + 8, 12, 9 // tri3 +), +gsSPNTriangles_5b( + 11, 7, 4, // tri0 + 12, 8, 11, // tri1 + 6, 14, 11, // tri2 + 5, 4, 10 // tri3 +), +gsSPNTriangles_5b( + 14, 13, 12, // tri0 + 11, 14, 12, // tri1 + 4, 6, 11, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 14, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 16, 21, 17 // tri2 +), +gsSPNTriangles_5b( + 22, 23, 24, // tri0 + 25, 19, 26, // tri1 + 26, 19, 27, // tri2 + 23, 21, 28 // tri3 +), +gsSPNTriangles_5b( + 29, 27, 30, // tri0 + 22, 21, 23, // tri1 + 29, 26, 27, // tri2 + 18, 20, 15 // tri3 +), +gsSPNTriangles_5b( + 17, 18, 15, // tri0 + 16, 28, 21, // tri1 + 19, 25, 20, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx mouth_kgr_model[] = { +gsSPMatrix(0x0D000380, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&kgr_1_v[0], 5, 0), +gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&kgr_1_v[5], 13, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 5, // tri0 + 2, 3, 6, // tri1 + 0, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 4, 0, 9, // tri0 + 4, 10, 11, // tri1 + 3, 13, 12, // tri2 + 3, 4, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_kgr_model[] = { +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&kgr_1_v[137], 4, 0), +gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&kgr_1_v[141], 16, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 4, 5, // tri0 + 1, 6, 7, // tri1 + 1, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 0, 2, 10, // tri0 + 2, 1, 11, // tri1 + 0, 12, 13, // tri2 + 3, 0, 14 // tri3 +), +gsSPNTriangles_5b( + 1, 3, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 16, 17, 18, // tri0 + 19, 18, 17, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_kgr_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&kgr_1_v[157], 3, 0), +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&kgr_1_v[160], 11, 3), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 3, // tri0 + 1, 5, 4, // tri1 + 2, 7, 6 // tri2 +), +gsSPNTriangles_5b( + 1, 2, 8, // tri0 + 2, 0, 9, // tri1 + 0, 10, 11, // tri2 + 1, 12, 13 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_kgr_model[] = { +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&kgr_1_v[103], 4, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&kgr_1_v[107], 16, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 4, 5, // tri0 + 1, 6, 7, // tri1 + 1, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 2, 0, 10, // tri0 + 1, 2, 11, // tri1 + 0, 12, 13, // tri2 + 0, 3, 14 // tri3 +), +gsSPNTriangles_5b( + 3, 1, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_kgr_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&kgr_1_v[123], 3, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&kgr_1_v[126], 11, 3), +gsSPNTrianglesInit_5b( + 7, // tri count + 1, 0, 3, // tri0 + 1, 5, 4, // tri1 + 2, 7, 6 // tri2 +), +gsSPNTriangles_5b( + 2, 1, 8, // tri0 + 0, 2, 9, // tri1 + 0, 10, 11, // tri2 + 1, 12, 13 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_kgr_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&kgr_1_v[171], 8, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&kgr_1_v[179], 24, 8), +gsSPNTrianglesInit_5b( + 15, // tri count + 4, 2, 8, // tri0 + 7, 9, 10, // tri1 + 4, 11, 12 // tri2 +), +gsSPNTriangles_5b( + 3, 13, 1, // tri0 + 3, 14, 15, // tri1 + 2, 17, 16, // tri2 + 1, 18, 19 // tri3 +), +gsSPNTriangles_5b( + 1, 20, 21, // tri0 + 2, 22, 23, // tri1 + 7, 4, 24, // tri2 + 3, 7, 25 // tri3 +), +gsSPNTriangles_5b( + 5, 1, 26, // tri0 + 6, 27, 2, // tri1 + 7, 28, 29, // tri2 + 7, 30, 31 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&kgr_1_v[203], 18, 8), +gsSPNTrianglesInit_5b( + 3, // tri count + 0, 9, 8, // tri0 + 0, 10, 11, // tri1 + 0, 13, 12 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsSPNTrianglesInit_5b( + 4, // tri count + 14, 15, 16, // tri0 + 17, 18, 19, // tri1 + 20, 21, 22 // tri2 +), +gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&kgr_1_v[221], 30, 0), +gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 8, 5, 7, // tri0 + 9, 10, 8, // tri1 + 3, 5, 8, // tri2 + 9, 1, 11 // tri3 +), +gsSPNTriangles_5b( + 2, 6, 0, // tri0 + 7, 6, 2, // tri1 + 2, 9, 8, // tri2 + 2, 8, 7 // tri3 +), +gsSPNTriangles_5b( + 4, 7, 5, // tri0 + 8, 10, 3, // tri1 + 11, 10, 9, // tri2 + 9, 2, 1 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 12, 13, 14, // tri0 + 15, 16, 13, // tri1 + 14, 17, 12 // tri2 +), +gsSPNTriangles_5b( + 16, 18, 13, // tri0 + 14, 19, 17, // tri1 + 12, 15, 13, // tri2 + 0, 0, 0 // tri3 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 3, // tri count + 20, 21, 22, // tri0 + 23, 24, 20, // tri1 + 22, 23, 20 // tri2 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 4, // tri count + 25, 26, 27, // tri0 + 26, 28, 29, // tri1 + 26, 25, 28 // tri2 +), +gsSPNTriangles_5b( + 29, 27, 26, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail1_kgr_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&kgr_1_v[251], 4, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&kgr_1_v[255], 18, 4), +gsSPNTrianglesInit_5b( + 9, // tri count + 2, 4, 5, // tri0 + 1, 6, 7, // tri1 + 2, 0, 8 // tri2 +), +gsSPNTriangles_5b( + 0, 1, 9, // tri0 + 0, 10, 11, // tri1 + 3, 12, 1, // tri2 + 1, 13, 14 // tri3 +), +gsSPNTriangles_5b( + 2, 15, 16, // tri0 + 2, 17, 3, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 18, 19, 20, // tri0 + 21, 19, 18, // tri1 + 20, 19, 21 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot3_kgr_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&kgr_1_v[332], 3, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&kgr_1_v[335], 13, 3), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 3, 4, // tri0 + 2, 1, 5, // tri1 + 2, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 2, 8, 9, // tri0 + 1, 0, 10, // tri1 + 0, 2, 11, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 12, 13, 14, // tri0 + 14, 15, 12, // tri1 + 14, 13, 15 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_kgr_model[] = { +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&kgr_1_v[348], 3, 0), +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&kgr_1_v[351], 14, 3), +gsSPNTrianglesInit_5b( + 7, // tri count + 2, 3, 4, // tri0 + 1, 2, 5, // tri1 + 1, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 0, 1, 8, // tri0 + 2, 0, 9, // tri1 + 1, 10, 11, // tri2 + 2, 12, 13 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 14, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_kgr_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&kgr_1_v[365], 5, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&kgr_1_v[370], 20, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 3, 2, 5, // tri0 + 0, 6, 1, // tri1 + 0, 4, 7 // tri2 +), +gsSPNTriangles_5b( + 0, 9, 8, // tri0 + 4, 3, 10, // tri1 + 1, 11, 12, // tri2 + 3, 13, 14 // tri3 +), +gsSPNTriangles_5b( + 2, 1, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 16, 17, 18, // tri0 + 17, 19, 20, // tri1 + 17, 16, 19 // tri2 +), +gsSPNTriangles_5b( + 20, 21, 17, // tri0 + 16, 18, 21, // tri1 + 16, 21, 20, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsSPNTrianglesInit_5b( + 1, // tri count + 22, 23, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot3_kgr_model[] = { +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&kgr_1_v[273], 3, 0), +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&kgr_1_v[276], 13, 3), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 3, 4, // tri0 + 1, 5, 6, // tri1 + 1, 2, 7 // tri2 +), +gsSPNTriangles_5b( + 2, 8, 9, // tri0 + 0, 1, 10, // tri1 + 2, 0, 11, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 12, 13, 14, // tri0 + 14, 15, 12, // tri1 + 15, 13, 12 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_kgr_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&kgr_1_v[289], 3, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&kgr_1_v[292], 14, 3), +gsSPNTrianglesInit_5b( + 7, // tri count + 2, 3, 4, // tri0 + 2, 1, 5, // tri1 + 1, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 8, // tri0 + 0, 2, 9, // tri1 + 1, 10, 11, // tri2 + 2, 12, 13 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 14, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_kgr_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&kgr_1_v[306], 6, 0), +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&kgr_1_v[312], 20, 6), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 2, 6, // tri0 + 4, 7, 8, // tri1 + 1, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 4, 5, 11, // tri0 + 3, 13, 12, // tri1 + 5, 1, 14, // tri2 + 4, 15, 3 // tri3 +), +gsSPNTriangles_5b( + 2, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 17, 18, 19, // tri0 + 20, 21, 18, // tri1 + 21, 19, 18 // tri2 +), +gsSPNTriangles_5b( + 18, 22, 20, // tri0 + 20, 22, 17, // tri1 + 20, 17, 19, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsSPNTrianglesInit_5b( + 1, // tri count + 23, 24, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx base_kgr_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&kgr_1_v[390], 28, 0), +gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 9, 10, 4, // tri0 + 9, 4, 3, // tri1 + 10, 6, 5, // tri2 + 10, 5, 4 // tri3 +), +gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 11, 13, 2, // tri1 + 12, 14, 0, // tri2 + 12, 0, 13 // tri3 +), +gsSPNTriangles_5b( + 15, 16, 11, // tri0 + 6, 17, 7, // tri1 + 2, 13, 0, // tri2 + 5, 18, 3 // tri3 +), +gsSPNTriangles_5b( + 9, 19, 10, // tri0 + 11, 16, 12, // tri1 + 20, 21, 22, // tri2 + 20, 23, 24 // tri3 +), +gsSPNTriangles_5b( + 24, 25, 20, // tri0 + 11, 26, 15, // tri1 + 25, 16, 15, // tri2 + 12, 27, 14 // tri3 +), +gsSPNTriangles_5b( + 21, 7, 17, // tri0 + 21, 17, 22, // tri1 + 22, 23, 20, // tri2 + 10, 17, 6 // tri3 +), +gsSPNTriangles_5b( + 24, 16, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&kgr_1_v[418], 13, 0), +gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 4, 5, 0 // tri2 +), +gsSPNTriangles_5b( + 0, 5, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 6, 7, 8, // tri0 + 9, 10, 6, // tri1 + 10, 9, 11 // tri2 +), +gsSPNTriangles_5b( + 12, 8, 11, // tri0 + 11, 9, 12, // tri1 + 11, 8, 7, // tri2 + 8, 9, 6 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_kgr_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_kgr_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-400,0 }, + /* joint 3 */ { Lfoot1_kgr_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_kgr_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { Lfoot3_kgr_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,400,0 }, + /* joint 7 */ { Rfoot1_kgr_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_kgr_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { Rfoot3_kgr_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, -350,0,-800 }, + /* joint 11 */ { tail1_kgr_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 399,0,0 }, + /* joint 13 */ { chest_kgr_model, 3, cKF_JOINT_FLAG_DISP_OPA, 450,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 650,-650,0 }, + /* joint 15 */ { Larm1_kgr_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_kgr_model, 0, cKF_JOINT_FLAG_DISP_OPA, 450,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 650,650,0 }, + /* joint 18 */ { Rarm1_kgr_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_kgr_model, 1, cKF_JOINT_FLAG_DISP_OPA, 450,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 451,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 1150,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 300,0,1100 }, + /* joint 23 */ { mouth_kgr_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_kgr_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1100,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_kgr_1 = { 26, 15, cKF_je_r_kgr_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/lon_1.c b/src/data/npc/model/mdl/lon_1.c new file mode 100644 index 00000000..6cd3a11d --- /dev/null +++ b/src/data/npc/model/mdl/lon_1.c @@ -0,0 +1,814 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx lon_1_v[] = { +#include "assets/npc/mdl/lon_1_v.inc" +}; + +static Gfx head_lon_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 178, 178, 178, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&lon_1_v[0], 19, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 4, 6, 7, // tri0 + 7, 8, 9, // tri1 + 7, 9, 4, // tri2 + 0, 0, 0 // tri3 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 7, // tri count + 10, 11, 12, // tri0 + 13, 14, 11, // tri1 + 11, 10, 15 // tri2 +), +gsSPNTriangles_5b( + 16, 17, 12, // tri0 + 12, 18, 16, // tri1 + 11, 15, 13, // tri2 + 12, 17, 10 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 32, 40, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&lon_1_v[19], 32, 0), +gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 1, 0 // tri2 +), +gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 6, 11, 7, // tri2 + 8, 12, 9 // tri3 +), +gsSPNTriangles_5b( + 11, 2, 13, // tri0 + 14, 1, 12, // tri1 + 1, 15, 12, // tri2 + 11, 16, 2 // tri3 +), +gsSPNTriangles_5b( + 15, 1, 4, // tri0 + 17, 18, 19, // tri1 + 20, 21, 22, // tri2 + 23, 24, 25 // tri3 +), +gsSPNTriangles_5b( + 26, 18, 17, // tri0 + 25, 24, 20, // tri1 + 27, 21, 28, // tri2 + 27, 29, 30 // tri3 +), +gsSPNTriangles_5b( + 31, 8, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&lon_1_v[51], 32, 0), +gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 8, 4, 7, // tri0 + 9, 10, 11, // tri1 + 12, 13, 14, // tri2 + 8, 2, 1 // tri3 +), +gsSPNTriangles_5b( + 0, 2, 8, // tri0 + 8, 1, 15, // tri1 + 16, 5, 15, // tri2 + 17, 0, 8 // tri3 +), +gsSPNTriangles_5b( + 17, 7, 18, // tri0 + 19, 20, 21, // tri1 + 21, 13, 19, // tri2 + 12, 14, 22 // tri3 +), +gsSPNTriangles_5b( + 22, 23, 24, // tri0 + 25, 9, 26, // tri1 + 27, 26, 28, // tri2 + 29, 30, 31 // tri3 +), +gsSPVertex(&lon_1_v[83], 32, 0), +gsSPNTrianglesInit_5b( + 31, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 3, 10, 11, // tri1 + 12, 2, 11, // tri2 + 6, 13, 4 // tri3 +), +gsSPNTriangles_5b( + 9, 8, 2, // tri0 + 14, 9, 15, // tri1 + 16, 17, 18, // tri2 + 8, 7, 0 // tri3 +), +gsSPNTriangles_5b( + 0, 2, 8, // tri0 + 2, 3, 11, // tri1 + 19, 20, 21, // tri2 + 21, 22, 23 // tri3 +), +gsSPNTriangles_5b( + 24, 21, 23, // tri0 + 21, 9, 25, // tri1 + 19, 21, 12, // tri2 + 24, 15, 9 // tri3 +), +gsSPNTriangles_5b( + 15, 26, 16, // tri0 + 16, 14, 15, // tri1 + 9, 21, 24, // tri2 + 2, 12, 25 // tri3 +), +gsSPNTriangles_5b( + 25, 12, 21, // tri0 + 2, 25, 9, // tri1 + 16, 27, 28, // tri2 + 28, 7, 16 // tri3 +), +gsSPNTriangles_5b( + 14, 16, 7, // tri0 + 10, 29, 6, // tri1 + 4, 19, 12, // tri2 + 10, 5, 12 // tri3 +), +gsSPVertex(&lon_1_v[113], 28, 0), +gsSPNTrianglesInit_5b( + 1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 30, // tri count + 3, 4, 5, // tri0 + 6, 7, 8, // tri1 + 9, 10, 3 // tri2 +), +gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 7, 12, 9, // tri1 + 14, 15, 11, // tri2 + 3, 7, 9 // tri3 +), +gsSPNTriangles_5b( + 16, 17, 14, // tri0 + 12, 6, 18, // tri1 + 19, 18, 6, // tri2 + 3, 10, 4 // tri3 +), +gsSPNTriangles_5b( + 19, 6, 20, // tri0 + 21, 3, 22, // tri1 + 17, 15, 14, // tri2 + 23, 14, 24 // tri3 +), +gsSPNTriangles_5b( + 3, 5, 22, // tri0 + 7, 3, 21, // tri1 + 25, 13, 18, // tri2 + 17, 26, 15 // tri3 +), +gsSPNTriangles_5b( + 24, 14, 13, // tri0 + 10, 27, 4, // tri1 + 12, 7, 6, // tri2 + 18, 13, 12 // tri3 +), +gsSPNTriangles_5b( + 11, 9, 12, // tri0 + 14, 23, 16, // tri1 + 8, 7, 21, // tri2 + 24, 13, 25 // tri3 +), +gsSPNTriangles_5b( + 25, 18, 19, // tri0 + 20, 6, 8, // tri1 + 11, 13, 14, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&lon_1_v[141], 24, 0), +gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 12, 9, 11, // tri1 + 12, 11, 13, // tri2 + 6, 9, 14 // tri3 +), +gsSPNTriangles_5b( + 15, 10, 6, // tri0 + 0, 2, 16, // tri1 + 8, 3, 5, // tri2 + 17, 12, 18 // tri3 +), +gsSPNTriangles_5b( + 13, 19, 12, // tri0 + 16, 20, 18, // tri1 + 5, 6, 8, // tri2 + 18, 20, 17 // tri3 +), +gsSPNTriangles_5b( + 14, 7, 6, // tri0 + 16, 18, 0, // tri1 + 10, 15, 21, // tri2 + 19, 13, 22 // tri3 +), +gsSPNTriangles_5b( + 22, 13, 11, // tri0 + 22, 11, 21, // tri1 + 9, 6, 10, // tri2 + 18, 19, 23 // tri3 +), +gsSPNTriangles_5b( + 22, 23, 19, // tri0 + 21, 11, 10, // tri1 + 19, 18, 12, // tri2 + 23, 0, 18 // tri3 +), +gsSPNTriangles_5b( + 6, 5, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&lon_1_v[165], 27, 0), +gsSPNTrianglesInit_5b( + 9, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 2, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 4, 0, 7, // tri0 + 2, 7, 0, // tri1 + 7, 6, 8, // tri2 + 8, 6, 9 // tri3 +), +gsSPNTriangles_5b( + 1, 5, 2, // tri0 + 6, 7, 2, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 8, // tri count + 10, 11, 12, // tri0 + 13, 10, 12, // tri1 + 12, 14, 15 // tri2 +), +gsSPNTriangles_5b( + 12, 15, 13, // tri0 + 14, 16, 15, // tri1 + 14, 17, 16, // tri2 + 13, 11, 10 // tri3 +), +gsSPNTriangles_5b( + 16, 17, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 18, 19, 20, // tri0 + 20, 21, 18, // tri1 + 22, 23, 24 // tri2 +), +gsSPNTriangles_5b( + 25, 19, 18, // tri0 + 18, 24, 25, // tri1 + 24, 26, 22, // tri2 + 23, 25, 24 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_lon_model[] = { +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&lon_1_v[228], 5, 0), +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&lon_1_v[233], 16, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 5, 3, // tri0 + 1, 4, 6, // tri1 + 1, 8, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 10, 9, // tri0 + 0, 1, 11, // tri1 + 2, 12, 13, // tri2 + 2, 0, 14 // tri3 +), +gsSPNTriangles_5b( + 2, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 20, 18, 17, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_lon_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&lon_1_v[249], 4, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&lon_1_v[253], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 2, 4, // tri0 + 0, 5, 6, // tri1 + 1, 8, 7 // tri2 +), +gsSPNTriangles_5b( + 2, 9, 10, // tri0 + 3, 1, 11, // tri1 + 1, 0, 12, // tri2 + 1, 13, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_lon_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&lon_1_v[192], 5, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&lon_1_v[197], 16, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 +), +gsSPNTriangles_5b( + 3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_lon_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&lon_1_v[213], 4, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&lon_1_v[217], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_lon_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&lon_1_v[264], 7, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&lon_1_v[271], 20, 7), +gsSPNTrianglesInit_5b( + 13, // tri count + 3, 1, 7, // tri0 + 6, 8, 9, // tri1 + 3, 10, 11 // tri2 +), +gsSPNTriangles_5b( + 2, 12, 0, // tri0 + 2, 13, 14, // tri1 + 1, 16, 15, // tri2 + 0, 17, 18 // tri3 +), +gsSPNTriangles_5b( + 0, 19, 20, // tri0 + 1, 21, 22, // tri1 + 6, 3, 23, // tri2 + 2, 6, 24 // tri3 +), +gsSPNTriangles_5b( + 4, 0, 25, // tri0 + 5, 26, 1, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&lon_1_v[291], 9, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 0, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 4, 3, 7, // tri0 + 2, 5, 0, // tri1 + 1, 8, 2, // tri2 + 6, 3, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail1_lon_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&lon_1_v[314], 8, 0), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 0, 4 // tri2 +), +gsSPNTriangles_5b( + 4, 3, 1, // tri0 + 0, 2, 6, // tri1 + 7, 5, 6, // tri2 + 6, 2, 7 // tri3 +), +gsSPNTriangles_5b( + 5, 7, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail2_lon_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&lon_1_v[300], 4, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&lon_1_v[304], 10, 4), +gsSPNTrianglesInit_5b( + 4, // tri count + 2, 1, 4, // tri0 + 3, 2, 5, // tri1 + 0, 3, 6 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 8, // tri count + 8, 9, 10, // tri0 + 11, 9, 12, // tri1 + 12, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 10, 9, 11, // tri0 + 10, 11, 13, // tri1 + 13, 11, 12, // tri2 + 13, 8, 10 // tri3 +), +gsSPNTriangles_5b( + 12, 8, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_lon_model[] = { +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&lon_1_v[372], 5, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&lon_1_v[377], 17, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 4, 0, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 1, 2, 10, // tri0 + 2, 3, 11, // tri1 + 3, 4, 12, // tri2 + 2, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_lon_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&lon_1_v[394], 4, 0), +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&lon_1_v[398], 22, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 3, 4, // tri0 + 0, 5, 1, // tri1 + 1, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 3, 2, 8, // tri0 + 2, 9, 10, // tri1 + 2, 1, 11, // tri2 + 0, 13, 12 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 14, 15, 16, // tri0 + 14, 16, 17, // tri1 + 17, 18, 14 // tri2 +), +gsSPNTriangles_5b( + 19, 20, 21, // tri0 + 21, 20, 18, // tri1 + 21, 22, 19, // tri2 + 17, 21, 18 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsSPNTrianglesInit_5b( + 1, // tri count + 23, 24, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_lon_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&lon_1_v[322], 5, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&lon_1_v[327], 17, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 4, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 1, 10, // tri0 + 3, 2, 11, // tri1 + 4, 3, 12, // tri2 + 2, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_lon_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&lon_1_v[344], 6, 0), +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&lon_1_v[350], 22, 6), +gsSPNTrianglesInit_5b( + 7, // tri count + 4, 0, 6, // tri0 + 1, 7, 0, // tri1 + 1, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 2, 5, 10, // tri0 + 2, 11, 12, // tri1 + 1, 3, 13, // tri2 + 0, 15, 14 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 16, 17, 18, // tri0 + 19, 16, 18, // tri1 + 18, 20, 19 // tri2 +), +gsSPNTriangles_5b( + 21, 22, 23, // tri0 + 20, 22, 21, // tri1 + 23, 24, 21, // tri2 + 20, 21, 19 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsSPNTrianglesInit_5b( + 1, // tri count + 25, 26, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx base_lon_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&lon_1_v[420], 14, 0), +gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 9, 5, 4, // tri0 + 10, 4, 0, // tri1 + 10, 9, 4, // tri2 + 7, 11, 12 // tri3 +), +gsSPNTriangles_5b( + 8, 7, 13, // tri0 + 2, 10, 0, // tri1 + 2, 1, 6, // tri2 + 6, 8, 2 // tri3 +), +gsSPNTriangles_5b( + 7, 12, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_lon_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_lon_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_lon_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_lon_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_lon_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_lon_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 75,0,-475 }, + /* joint 11 */ { tail1_lon_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_lon_model, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_lon_model, 3, cKF_JOINT_FLAG_DISP_OPA, 325,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,-450,0 }, + /* joint 15 */ { Larm1_lon_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_lon_model, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,450,0 }, + /* joint 18 */ { Rarm1_lon_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_lon_model, 1, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 675,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,600 }, + /* joint 23 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_lon_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1400,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_lon_1 = { 26, 13, cKF_je_r_lon_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/lrc_1.c b/src/data/npc/model/mdl/lrc_1.c new file mode 100644 index 00000000..f1363391 --- /dev/null +++ b/src/data/npc/model/mdl/lrc_1.c @@ -0,0 +1,744 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx lrc_1_v[] = { +#include "assets/npc/mdl/lrc_1_v.inc" +}; + +static Gfx head_lrc_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&lrc_1_v[14], 28, 0), +gsSPNTrianglesInit_5b( + 39, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 0, 9, 1, // tri0 + 10, 5, 4, // tri1 + 5, 6, 3, // tri2 + 0, 4, 11 // tri3 +), +gsSPNTriangles_5b( + 0, 11, 12, // tri0 + 4, 3, 11, // tri1 + 13, 14, 4, // tri2 + 13, 4, 0 // tri3 +), +gsSPNTriangles_5b( + 8, 15, 16, // tri0 + 17, 18, 19, // tri1 + 15, 8, 7, // tri2 + 20, 21, 19 // tri3 +), +gsSPNTriangles_5b( + 12, 11, 22, // tri0 + 12, 22, 23, // tri1 + 22, 11, 3, // tri2 + 23, 9, 12 // tri3 +), +gsSPNTriangles_5b( + 9, 23, 18, // tri0 + 9, 18, 17, // tri1 + 1, 9, 17, // tri2 + 16, 20, 19 // tri3 +), +gsSPNTriangles_5b( + 24, 25, 8, // tri0 + 24, 22, 25, // tri1 + 25, 3, 6, // tri2 + 25, 22, 3 // tri3 +), +gsSPNTriangles_5b( + 19, 18, 24, // tri0 + 24, 18, 23, // tri1 + 23, 22, 24, // tri2 + 4, 14, 10 // tri3 +), +gsSPNTriangles_5b( + 2, 13, 0, // tri0 + 8, 16, 24, // tri1 + 16, 19, 24, // tri2 + 8, 25, 6 // tri3 +), +gsSPNTriangles_5b( + 19, 21, 17, // tri0 + 26, 27, 14, // tri1 + 26, 14, 13, // tri2 + 12, 9, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&lrc_1_v[42], 31, 0), +gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 2, 4, 0 // tri2 +), +gsSPNTriangles_5b( + 0, 5, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 4, // tri count + 6, 7, 8, // tri0 + 8, 9, 10, // tri1 + 8, 10, 6 // tri2 +), +gsSPNTriangles_5b( + 6, 11, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 253, 255, 255), +gsSPNTrianglesInit_5b( + 3, // tri count + 12, 13, 14, // tri0 + 12, 15, 16, // tri1 + 14, 15, 12 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPNTrianglesInit_5b( + 5, // tri count + 17, 18, 19, // tri0 + 19, 20, 21, // tri1 + 19, 22, 17 // tri2 +), +gsSPNTriangles_5b( + 19, 21, 23, // tri0 + 23, 22, 19, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPSetPrimColor(0, 128, 255, 253, 255, 255), +gsSPNTrianglesInit_5b( + 5, // tri count + 24, 25, 26, // tri0 + 26, 27, 28, // tri1 + 28, 29, 26 // tri2 +), +gsSPNTriangles_5b( + 26, 29, 24, // tri0 + 25, 30, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&lrc_1_v[73], 24, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 2, 5 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 6, // tri0 + 7, 4, 5, // tri1 + 4, 3, 2, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 17, // tri count + 8, 9, 10, // tri0 + 11, 10, 12, // tri1 + 10, 11, 8 // tri2 +), +gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 14, 16, 17, // tri1 + 14, 17, 18, // tri2 + 11, 19, 20 // tri3 +), +gsSPNTriangles_5b( + 20, 8, 11, // tri0 + 17, 21, 18, // tri1 + 19, 11, 22, // tri2 + 15, 14, 18 // tri3 +), +gsSPNTriangles_5b( + 15, 18, 12, // tri0 + 22, 18, 21, // tri1 + 12, 22, 11, // tri2 + 12, 10, 15 // tri3 +), +gsSPNTriangles_5b( + 18, 22, 12, // tri0 + 20, 23, 8, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx mouth_lrc_model[] = { +gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&lrc_1_v[0], 5, 0), +gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&lrc_1_v[5], 9, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 5, 6, // tri0 + 2, 8, 7, // tri1 + 0, 4, 9 // tri2 +), +gsSPNTriangles_5b( + 1, 10, 3, // tri0 + 4, 3, 11, // tri1 + 2, 0, 12, // tri2 + 1, 2, 13 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_lrc_model[] = { +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&lrc_1_v[142], 6, 0), +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&lrc_1_v[148], 24, 6), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 5, 6, // tri0 + 0, 2, 7, // tri1 + 0, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 2, 10, 11, // tri0 + 1, 12, 13, // tri1 + 3, 1, 14, // tri2 + 1, 0, 15 // tri3 +), +gsSPNTriangles_5b( + 4, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 18, 19, 20, // tri0 + 18, 20, 21, // tri1 + 22, 20, 19 // tri2 +), +gsSPNTriangles_5b( + 21, 22, 23, // tri0 + 24, 23, 22, // tri1 + 19, 25, 22, // tri2 + 22, 21, 20 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000180, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 2, // tri count + 26, 27, 28, // tri0 + 26, 29, 27, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_lrc_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&lrc_1_v[172], 4, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&lrc_1_v[176], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 1, 4, 0, // tri0 + 3, 6, 5, // tri1 + 1, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 0, 9, 10, // tri0 + 3, 11, 12, // tri1 + 2, 3, 13, // tri2 + 3, 0, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_lrc_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&lrc_1_v[97], 6, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&lrc_1_v[103], 24, 6), +gsSPNTrianglesInit_5b( + 8, // tri count + 5, 2, 6, // tri0 + 2, 0, 7, // tri1 + 0, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 2, 10, 11, // tri0 + 1, 12, 13, // tri1 + 1, 3, 14, // tri2 + 0, 1, 15 // tri3 +), +gsSPNTriangles_5b( + 4, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 18, 19, 20, // tri0 + 18, 20, 21, // tri1 + 20, 19, 22 // tri2 +), +gsSPNTriangles_5b( + 23, 22, 18, // tri0 + 22, 23, 24, // tri1 + 22, 25, 20, // tri2 + 19, 18, 22 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000180, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 2, // tri count + 26, 27, 28, // tri0 + 26, 29, 27, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_lrc_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&lrc_1_v[127], 4, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&lrc_1_v[131], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 4, 1, // tri0 + 3, 6, 5, // tri1 + 1, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 0, 9, 10, // tri0 + 3, 11, 12, // tri1 + 3, 2, 13, // tri2 + 0, 3, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_lrc_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 48, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&lrc_1_v[187], 25, 0), +gsSPNTrianglesInit_5b( + 31, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 5 // tri2 +), +gsSPNTriangles_5b( + 8, 5, 4, // tri0 + 9, 10, 11, // tri1 + 11, 12, 13, // tri2 + 14, 2, 9 // tri3 +), +gsSPNTriangles_5b( + 13, 8, 0, // tri0 + 11, 15, 12, // tri1 + 16, 0, 17, // tri2 + 16, 1, 0 // tri3 +), +gsSPNTriangles_5b( + 8, 17, 0, // tri0 + 13, 14, 11, // tri1 + 0, 14, 13, // tri2 + 13, 5, 8 // tri3 +), +gsSPNTriangles_5b( + 5, 12, 6, // tri0 + 5, 13, 12, // tri1 + 15, 11, 18, // tri2 + 11, 10, 18 // tri3 +), +gsSPNTriangles_5b( + 2, 14, 0, // tri0 + 11, 14, 9, // tri1 + 19, 20, 2, // tri2 + 19, 2, 1 // tri3 +), +gsSPNTriangles_5b( + 1, 16, 21, // tri0 + 10, 9, 22, // tri1 + 10, 22, 23, // tri2 + 24, 18, 10 // tri3 +), +gsSPNTriangles_5b( + 20, 9, 2, // tri0 + 9, 20, 22, // tri1 + 1, 21, 19, // tri2 + 23, 24, 10 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0004C0, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&lrc_1_v[212], 15, 0), +gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 5, 3, 6 // tri2 +), +gsSPNTriangles_5b( + 3, 7, 6, // tri0 + 8, 1, 9, // tri1 + 10, 2, 11, // tri2 + 7, 2, 10 // tri3 +), +gsSPNTriangles_5b( + 2, 7, 3, // tri0 + 2, 1, 11, // tri1 + 4, 3, 5, // tri2 + 12, 9, 1 // tri3 +), +gsSPNTriangles_5b( + 0, 2, 3, // tri0 + 12, 1, 0, // tri1 + 8, 11, 1, // tri2 + 11, 8, 13 // tri3 +), +gsSPNTriangles_5b( + 14, 6, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail1_lrc_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&lrc_1_v[252], 4, 0), +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0005C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&lrc_1_v[256], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 1, 4, 5, // tri0 + 1, 0, 6, // tri1 + 2, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 1, 9, 10, // tri0 + 2, 1, 11, // tri1 + 0, 12, 13, // tri2 + 0, 3, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail2_lrc_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&lrc_1_v[227], 4, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0005C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&lrc_1_v[231], 21, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 4, 5, // tri0 + 0, 3, 6, // tri1 + 1, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 0, 9, // tri0 + 1, 2, 10, // tri1 + 0, 11, 12, // tri2 + 3, 1, 13 // tri3 +), +gsSPNTriangles_5b( + 2, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 12, // tri count + 16, 17, 18, // tri0 + 19, 17, 16, // tri1 + 20, 21, 22 // tri2 +), +gsSPNTriangles_5b( + 20, 23, 16, // tri0 + 18, 21, 16, // tri1 + 16, 23, 19, // tri2 + 23, 22, 24 // tri3 +), +gsSPNTriangles_5b( + 24, 22, 21, // tri0 + 16, 21, 20, // tri1 + 24, 19, 23, // tri2 + 22, 23, 20 // tri3 +), +gsSPNTriangles_5b( + 21, 18, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_lrc_model[] = { +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&lrc_1_v[292], 5, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&lrc_1_v[297], 15, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 0, 5, // tri0 + 0, 7, 6, // tri1 + 2, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 0, 1, 10, // tri0 + 1, 2, 11, // tri1 + 2, 4, 12, // tri2 + 1, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 15, 16, 17, // tri0 + 18, 16, 15, // tri1 + 19, 17, 16 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_lrc_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&lrc_1_v[312], 9, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 6, 2 // tri2 +), +gsSPNTriangles_5b( + 7, 5, 4, // tri0 + 7, 4, 0, // tri1 + 0, 2, 7, // tri2 + 5, 8, 3 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_rcd_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&lrc_1_v[267], 4, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&lrc_1_v[271], 14, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 3, 4, // tri0 + 0, 6, 5, // tri1 + 2, 8, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 9, // tri0 + 2, 1, 10, // tri1 + 3, 2, 11, // tri2 + 1, 12, 13 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 14, 15, 16, // tri0 + 16, 15, 17, // tri1 + 15, 14, 17 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_lrc_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&lrc_1_v[285], 7, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 0, 5, 1 // tri2 +), +gsSPNTriangles_5b( + 4, 3, 6, // tri0 + 2, 4, 6, // tri1 + 6, 0, 2, // tri2 + 1, 5, 3 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx base_lrc_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&lrc_1_v[321], 19, 0), +gsSPNTrianglesInit_5b( + 27, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 5, 8, 6, // tri1 + 6, 8, 9, // tri2 + 7, 1, 0 // tri3 +), +gsSPNTriangles_5b( + 1, 4, 2, // tri0 + 1, 7, 5, // tri1 + 1, 5, 4, // tri2 + 10, 11, 12 // tri3 +), +gsSPNTriangles_5b( + 10, 6, 9, // tri0 + 4, 6, 10, // tri1 + 2, 4, 13, // tri2 + 2, 13, 14 // tri3 +), +gsSPNTriangles_5b( + 15, 14, 16, // tri0 + 17, 12, 11, // tri1 + 15, 16, 17, // tri2 + 18, 10, 12 // tri3 +), +gsSPNTriangles_5b( + 10, 13, 4, // tri0 + 18, 13, 10, // tri1 + 16, 14, 18, // tri2 + 18, 14, 13 // tri3 +), +gsSPNTriangles_5b( + 9, 11, 10, // tri0 + 17, 16, 12, // tri1 + 3, 2, 14, // tri2 + 14, 15, 3 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_lrc_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_lrc_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_lrc_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_rcd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_lrc_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_lrc_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,-700 }, + /* joint 11 */ { tail1_lrc_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_lrc_model, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_lrc_model, 3, cKF_JOINT_FLAG_DISP_OPA, 425,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 600,-700,0 }, + /* joint 15 */ { Larm1_lrc_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_lrc_model, 0, cKF_JOINT_FLAG_DISP_OPA, 558,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 600,700,0 }, + /* joint 18 */ { Rarm1_lrc_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_lrc_model, 1, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 875,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 900,0,1900 }, + /* joint 23 */ { mouth_lrc_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_lrc_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1300,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_lrc_1 = { 26, 14, cKF_je_r_lrc_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/mka_1.c b/src/data/npc/model/mdl/mka_1.c new file mode 100644 index 00000000..7ecc536e --- /dev/null +++ b/src/data/npc/model/mdl/mka_1.c @@ -0,0 +1,657 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx mka_1_v[] = { +#include "assets/npc/mdl/mka_1_v.inc" +}; + +static Gfx head_mka_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mka_1_v[0], 6, 0), +gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&mka_1_v[6], 23, 6), +gsSPNTrianglesInit_5b( + 9, // tri count + 3, 1, 6, // tri0 + 4, 8, 7, // tri1 + 5, 4, 9 // tri2 +), +gsSPNTriangles_5b( + 5, 10, 0, // tri0 + 0, 12, 11, // tri1 + 5, 13, 14, // tri2 + 4, 2, 15 // tri3 +), +gsSPNTriangles_5b( + 1, 0, 16, // tri0 + 1, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 19, 20, 21, // tri0 + 22, 23, 24, // tri1 + 25, 26, 22 // tri2 +), +gsSPNTriangles_5b( + 27, 28, 19, // tri0 + 21, 27, 19, // tri1 + 22, 24, 25, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&mka_1_v[29], 22, 0), +gsSPNTrianglesInit_5b( + 29, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 4, 6, 7, // tri0 + 8, 1, 4, // tri1 + 4, 7, 8, // tri2 + 9, 2, 10 // tri3 +), +gsSPNTriangles_5b( + 11, 5, 3, // tri0 + 1, 10, 2, // tri1 + 2, 12, 0, // tri2 + 12, 2, 9 // tri3 +), +gsSPNTriangles_5b( + 0, 13, 14, // tri0 + 11, 3, 15, // tri1 + 12, 16, 13, // tri2 + 14, 15, 0 // tri3 +), +gsSPNTriangles_5b( + 17, 11, 18, // tri0 + 19, 15, 14, // tri1 + 18, 15, 19, // tri2 + 18, 11, 15 // tri3 +), +gsSPNTriangles_5b( + 20, 11, 17, // tri0 + 5, 21, 6, // tri1 + 20, 5, 11, // tri2 + 20, 21, 5 // tri3 +), +gsSPNTriangles_5b( + 1, 8, 10, // tri0 + 12, 13, 0, // tri1 + 3, 5, 4, // tri2 + 9, 16, 12 // tri3 +), +gsSPNTriangles_5b( + 3, 4, 1, // tri0 + 15, 3, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 32, 13, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&mka_1_v[51], 26, 0), +gsSPNTrianglesInit_5b( + 35, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 1 // tri2 +), +gsSPNTriangles_5b( + 3, 5, 8, // tri0 + 9, 10, 5, // tri1 + 11, 3, 12, // tri2 + 3, 13, 4 // tri3 +), +gsSPNTriangles_5b( + 11, 13, 3, // tri0 + 10, 0, 5, // tri1 + 0, 14, 6, // tri2 + 15, 16, 17 // tri3 +), +gsSPNTriangles_5b( + 17, 16, 1, // tri0 + 16, 15, 12, // tri1 + 16, 12, 8, // tri2 + 10, 14, 0 // tri3 +), +gsSPNTriangles_5b( + 16, 2, 1, // tri0 + 16, 8, 2, // tri1 + 1, 7, 17, // tri2 + 8, 12, 3 // tri3 +), +gsSPNTriangles_5b( + 7, 18, 17, // tri0 + 7, 19, 18, // tri1 + 20, 11, 12, // tri2 + 6, 1, 0 // tri3 +), +gsSPNTriangles_5b( + 2, 8, 0, // tri0 + 17, 18, 21, // tri1 + 5, 0, 8, // tri2 + 12, 15, 20 // tri3 +), +gsSPNTriangles_5b( + 22, 23, 6, // tri0 + 5, 4, 24, // tri1 + 7, 6, 23, // tri2 + 6, 14, 25 // tri3 +), +gsSPNTriangles_5b( + 7, 23, 19, // tri0 + 21, 15, 17, // tri1 + 24, 9, 5, // tri2 + 6, 25, 22 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_mka_model[] = { +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mka_1_v[113], 5, 0), +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&mka_1_v[118], 16, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 5, 3, // tri0 + 1, 4, 6, // tri1 + 1, 8, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 10, 9, // tri0 + 0, 1, 11, // tri1 + 2, 12, 13, // tri2 + 2, 0, 14 // tri3 +), +gsSPNTriangles_5b( + 2, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 20, 18, 17, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_mka_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mka_1_v[134], 4, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&mka_1_v[138], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 2, 4, // tri0 + 0, 5, 6, // tri1 + 1, 8, 7 // tri2 +), +gsSPNTriangles_5b( + 2, 9, 10, // tri0 + 3, 1, 11, // tri1 + 1, 0, 12, // tri2 + 1, 13, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_mka_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mka_1_v[77], 5, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&mka_1_v[82], 16, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 +), +gsSPNTriangles_5b( + 3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_mka_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mka_1_v[98], 4, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&mka_1_v[102], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_mka_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mka_1_v[149], 7, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&mka_1_v[156], 20, 7), +gsSPNTrianglesInit_5b( + 13, // tri count + 0, 7, 3, // tri0 + 1, 2, 8, // tri1 + 4, 6, 9 // tri2 +), +gsSPNTriangles_5b( + 6, 5, 10, // tri0 + 3, 11, 12, // tri1 + 2, 13, 14, // tri2 + 2, 15, 16 // tri3 +), +gsSPNTriangles_5b( + 3, 18, 17, // tri0 + 4, 19, 20, // tri1 + 4, 21, 2, // tri2 + 5, 22, 23 // tri3 +), +gsSPNTriangles_5b( + 6, 24, 25, // tri0 + 5, 3, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail1_mka_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mka_1_v[200], 8, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 2, 1, 5 // tri2 +), +gsSPNTriangles_5b( + 4, 6, 3, // tri0 + 5, 7, 2, // tri1 + 2, 4, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail2_mka_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mka_1_v[176], 4, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&mka_1_v[180], 20, 4), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 4, 5, // tri0 + 1, 6, 7, // tri1 + 3, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 3, 2, 10, // tri0 + 2, 1, 11, // tri1 + 0, 3, 12, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 9, // tri count + 13, 14, 15, // tri0 + 16, 14, 17, // tri1 + 18, 17, 19 // tri2 +), +gsSPNTriangles_5b( + 17, 14, 13, // tri0 + 13, 19, 17, // tri1 + 17, 18, 20, // tri2 + 21, 15, 14 // tri3 +), +gsSPNTriangles_5b( + 15, 22, 13, // tri0 + 19, 23, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_mka_model[] = { +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mka_1_v[261], 5, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&mka_1_v[266], 20, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 6, 5, // tri0 + 0, 8, 7, // tri1 + 3, 2, 9 // tri2 +), +gsSPNTriangles_5b( + 0, 4, 10, // tri0 + 0, 11, 12, // tri1 + 1, 0, 13, // tri2 + 2, 1, 14 // tri3 +), +gsSPNTriangles_5b( + 2, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 4, // tri count + 17, 18, 19, // tri0 + 20, 21, 22, // tri1 + 18, 23, 21 // tri2 +), +gsSPNTriangles_5b( + 21, 24, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_mka_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mka_1_v[286], 6, 0), +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&mka_1_v[292], 22, 6), +gsSPNTrianglesInit_5b( + 7, // tri count + 2, 7, 6, // tri0 + 0, 1, 8, // tri1 + 0, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 1, 5, 11, // tri0 + 4, 2, 12, // tri1 + 1, 13, 14, // tri2 + 0, 15, 3 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 16, 17, 18, // tri0 + 18, 19, 16, // tri1 + 20, 21, 22 // tri2 +), +gsSPNTriangles_5b( + 23, 18, 17, // tri0 + 23, 17, 21, // tri1 + 21, 20, 23, // tri2 + 22, 24, 20 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsSPNTrianglesInit_5b( + 1, // tri count + 25, 26, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_mka_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mka_1_v[208], 5, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&mka_1_v[213], 20, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 1, 0, 5, // tri0 + 2, 7, 6, // tri1 + 2, 1, 8 // tri2 +), +gsSPNTriangles_5b( + 3, 2, 9, // tri0 + 2, 10, 11, // tri1 + 0, 13, 12, // tri2 + 0, 4, 14 // tri3 +), +gsSPNTriangles_5b( + 0, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 4, // tri count + 17, 18, 19, // tri0 + 20, 21, 18, // tri1 + 20, 22, 23 // tri2 +), +gsSPNTriangles_5b( + 18, 24, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_mka_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mka_1_v[233], 6, 0), +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&mka_1_v[239], 22, 6), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 6, // tri0 + 0, 7, 8, // tri1 + 1, 10, 9 // tri2 +), +gsSPNTriangles_5b( + 0, 2, 11, // tri0 + 3, 12, 13, // tri1 + 0, 14, 1, // tri2 + 5, 1, 15 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 16, 17, 18, // tri0 + 19, 20, 21, // tri1 + 16, 22, 17 // tri2 +), +gsSPNTriangles_5b( + 21, 23, 19, // tri0 + 24, 16, 18, // tri1 + 18, 20, 24, // tri2 + 20, 19, 24 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsSPNTrianglesInit_5b( + 1, // tri count + 25, 26, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx base_mka_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mka_1_v[314], 14, 0), +gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 4, 7, 5, // tri0 + 8, 0, 9, // tri1 + 10, 5, 7, // tri2 + 6, 11, 12 // tri3 +), +gsSPNTriangles_5b( + 9, 0, 13, // tri0 + 12, 3, 6, // tri1 + 12, 11, 8, // tri2 + 8, 9, 12 // tri3 +), +gsSPNTriangles_5b( + 0, 2, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_mka_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_mka_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_mka_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_mka_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_mka_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_mka_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 75,0,-475 }, + /* joint 11 */ { tail1_mka_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_mka_model, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_mka_model, 3, cKF_JOINT_FLAG_DISP_OPA, 325,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,-450,0 }, + /* joint 15 */ { Larm1_mka_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_mka_model, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,450,0 }, + /* joint 18 */ { Rarm1_mka_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_mka_model, 1, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 675,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,600 }, + /* joint 23 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_mka_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1200,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_mka_1 = { 26, 13, cKF_je_r_mka_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/mnk_1.c b/src/data/npc/model/mdl/mnk_1.c new file mode 100644 index 00000000..a343d9d5 --- /dev/null +++ b/src/data/npc/model/mdl/mnk_1.c @@ -0,0 +1,827 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx mnk_1_v[] = { +#include "assets/npc/mdl/mnk_1_v.inc" +}; + +static Gfx head_mnk_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mnk_1_v[0], 15, 0), +gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 1, 3 // tri2 +), +gsSPNTriangles_5b( + 6, 7, 3, // tri0 + 8, 0, 9, // tri1 + 9, 10, 8, // tri2 + 3, 0, 6 // tri3 +), +gsSPNTriangles_5b( + 8, 7, 6, // tri0 + 7, 11, 12, // tri1 + 3, 1, 0, // tri2 + 12, 11, 13 // tri3 +), +gsSPNTriangles_5b( + 13, 11, 8, // tri0 + 3, 7, 4, // tri1 + 2, 1, 5, // tri2 + 12, 4, 7 // tri3 +), +gsSPNTriangles_5b( + 0, 14, 9, // tri0 + 8, 11, 7, // tri1 + 6, 0, 8, // tri2 + 8, 10, 13 // tri3 +), +gsSPNTriangles_5b( + 2, 14, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 250, 255), +gsSPVertex(&mnk_1_v[15], 28, 0), +gsSPNTrianglesInit_5b( + 39, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 6, 0, 9, // tri0 + 10, 7, 11, // tri1 + 12, 1, 13, // tri2 + 14, 15, 8 // tri3 +), +gsSPNTriangles_5b( + 0, 16, 13, // tri0 + 2, 17, 0, // tri1 + 15, 14, 18, // tri2 + 8, 10, 19 // tri3 +), +gsSPNTriangles_5b( + 8, 7, 10, // tri0 + 20, 16, 5, // tri1 + 13, 1, 0, // tri2 + 15, 21, 8 // tri3 +), +gsSPNTriangles_5b( + 13, 16, 20, // tri0 + 3, 21, 15, // tri1 + 6, 5, 16, // tri2 + 6, 8, 21 // tri3 +), +gsSPNTriangles_5b( + 10, 22, 23, // tri0 + 24, 25, 17, // tri1 + 16, 0, 6, // tri2 + 21, 5, 6 // tri3 +), +gsSPNTriangles_5b( + 5, 21, 3, // tri0 + 5, 4, 20, // tri1 + 17, 9, 0, // tri2 + 26, 17, 25 // tri3 +), +gsSPNTriangles_5b( + 22, 10, 26, // tri0 + 25, 22, 26, // tri1 + 11, 9, 17, // tri2 + 6, 9, 27 // tri3 +), +gsSPNTriangles_5b( + 11, 7, 27, // tri0 + 11, 26, 10, // tri1 + 17, 26, 11, // tri2 + 27, 9, 11 // tri3 +), +gsSPNTriangles_5b( + 27, 7, 6, // tri0 + 24, 17, 2, // tri1 + 19, 10, 23, // tri2 + 8, 19, 14 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&mnk_1_v[43], 25, 0), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 5, 1, 0 // tri2 +), +gsSPNTriangles_5b( + 6, 7, 4, // tri0 + 4, 3, 6, // tri1 + 2, 8, 0, // tri2 + 4, 8, 2 // tri3 +), +gsSPNTriangles_5b( + 0, 9, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 15, // tri count + 10, 11, 12, // tri0 + 13, 14, 15, // tri1 + 16, 13, 15 // tri2 +), +gsSPNTriangles_5b( + 12, 16, 17, // tri0 + 14, 13, 18, // tri1 + 17, 19, 12, // tri2 + 15, 17, 16 // tri3 +), +gsSPNTriangles_5b( + 18, 20, 14, // tri0 + 21, 18, 12, // tri1 + 12, 19, 10, // tri2 + 18, 13, 16 // tri3 +), +gsSPNTriangles_5b( + 18, 16, 12, // tri0 + 22, 20, 18, // tri1 + 23, 24, 22, // tri2 + 18, 23, 22 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&mnk_1_v[68], 26, 0), +gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 9, 10, 3, // tri0 + 2, 4, 11, // tri1 + 5, 9, 3, // tri2 + 12, 13, 14 // tri3 +), +gsSPNTriangles_5b( + 14, 15, 12, // tri0 + 14, 16, 15, // tri1 + 8, 17, 6, // tri2 + 13, 18, 14 // tri3 +), +gsSPNTriangles_5b( + 6, 19, 7, // tri0 + 2, 11, 20, // tri1 + 20, 0, 2, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 252, 255, 255), +gsSPNTrianglesInit_5b( + 3, // tri count + 21, 22, 23, // tri0 + 23, 24, 25, // tri1 + 25, 21, 23 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_mnk_model[] = { +gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mnk_1_v[134], 4, 0), +gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&mnk_1_v[138], 22, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 3, 4, // tri0 + 0, 2, 5, // tri1 + 0, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 2, 8, 9, // tri0 + 1, 10, 11, // tri1 + 3, 1, 12, // tri2 + 1, 0, 13 // tri3 +), +gsSPNTriangles_5b( + 3, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 9, // tri count + 16, 17, 18, // tri0 + 19, 20, 16, // tri1 + 20, 21, 16 // tri2 +), +gsSPNTriangles_5b( + 17, 16, 21, // tri0 + 16, 18, 19, // tri1 + 21, 19, 18, // tri2 + 21, 18, 17 // tri3 +), +gsSPNTriangles_5b( + 22, 23, 24, // tri0 + 22, 24, 25, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_mnk_model[] = { +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mnk_1_v[160], 3, 0), +gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&mnk_1_v[163], 11, 3), +gsSPNTrianglesInit_5b( + 7, // tri count + 2, 3, 1, // tri0 + 0, 5, 4, // tri1 + 2, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 0, 10, 11, // tri1 + 2, 0, 12, // tri2 + 0, 1, 13 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_mnk_model[] = { +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mnk_1_v[94], 4, 0), +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&mnk_1_v[98], 22, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 3, 2, 4, // tri0 + 2, 0, 5, // tri1 + 0, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 2, 8, 9, // tri0 + 1, 10, 11, // tri1 + 1, 3, 12, // tri2 + 0, 1, 13 // tri3 +), +gsSPNTriangles_5b( + 3, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 9, // tri count + 16, 17, 18, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19 // tri2 +), +gsSPNTriangles_5b( + 21, 18, 17, // tri0 + 20, 16, 18, // tri1 + 17, 16, 20, // tri2 + 17, 20, 21 // tri3 +), +gsSPNTriangles_5b( + 22, 23, 24, // tri0 + 22, 24, 25, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_mnk_model[] = { +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mnk_1_v[120], 3, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&mnk_1_v[123], 11, 3), +gsSPNTrianglesInit_5b( + 7, // tri count + 1, 3, 2, // tri0 + 0, 5, 4, // tri1 + 2, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 0, 10, 11, // tri1 + 0, 2, 12, // tri2 + 1, 0, 13 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_mnk_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mnk_1_v[174], 9, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&mnk_1_v[183], 21, 9), +gsSPNTrianglesInit_5b( + 13, // tri count + 2, 1, 9, // tri0 + 1, 0, 10, // tri1 + 1, 12, 11 // tri2 +), +gsSPNTriangles_5b( + 0, 13, 14, // tri0 + 0, 6, 15, // tri1 + 0, 16, 17, // tri2 + 7, 19, 18 // tri3 +), +gsSPNTriangles_5b( + 4, 20, 21, // tri0 + 3, 22, 23, // tri1 + 4, 3, 24, // tri2 + 2, 25, 3 // tri3 +), +gsSPNTriangles_5b( + 8, 27, 26, // tri0 + 4, 28, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&mnk_1_v[204], 22, 9), +gsSPNTrianglesInit_5b( + 3, // tri count + 5, 9, 7, // tri0 + 8, 10, 6, // tri1 + 5, 4, 11 // tri2 +), +gsSPNTrianglesInit_5b( + 16, // tri count + 12, 13, 14, // tri0 + 15, 16, 17, // tri1 + 18, 19, 20 // tri2 +), +gsSPNTriangles_5b( + 18, 20, 17, // tri0 + 21, 22, 23, // tri1 + 19, 18, 24, // tri2 + 17, 16, 24 // tri3 +), +gsSPNTriangles_5b( + 25, 26, 14, // tri0 + 19, 27, 12, // tri1 + 21, 28, 15, // tri2 + 28, 21, 29 // tri3 +), +gsSPNTriangles_5b( + 30, 14, 13, // tri0 + 30, 25, 14, // tri1 + 21, 23, 29, // tri2 + 24, 18, 17 // tri3 +), +gsSPNTriangles_5b( + 24, 27, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail1_mnk_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mnk_1_v[258], 3, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&mnk_1_v[261], 9, 3), +gsSPNTrianglesInit_5b( + 6, // tri count + 1, 3, 4, // tri0 + 1, 0, 5, // tri1 + 0, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 0, 2, 8, // tri0 + 2, 9, 10, // tri1 + 2, 1, 11, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail2_mnk_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mnk_1_v[226], 3, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&mnk_1_v[229], 9, 3), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 3, 4, // tri0 + 0, 2, 5, // tri1 + 1, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 8, // tri0 + 2, 9, 10, // tri1 + 2, 1, 11, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&mnk_1_v[238], 20, 0), +gsSPNTrianglesInit_5b( + 31, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 2 // tri2 +), +gsSPNTriangles_5b( + 2, 5, 6, // tri0 + 2, 6, 7, // tri1 + 8, 9, 10, // tri2 + 8, 10, 11 // tri3 +), +gsSPNTriangles_5b( + 11, 10, 12, // tri0 + 11, 12, 13, // tri1 + 13, 12, 14, // tri2 + 13, 14, 15 // tri3 +), +gsSPNTriangles_5b( + 3, 16, 4, // tri0 + 17, 13, 15, // tri1 + 17, 15, 18, // tri2 + 4, 16, 1 // tri3 +), +gsSPNTriangles_5b( + 4, 1, 5, // tri0 + 5, 1, 0, // tri1 + 5, 0, 6, // tri2 + 6, 0, 19 // tri3 +), +gsSPNTriangles_5b( + 6, 19, 10, // tri0 + 10, 19, 17, // tri1 + 10, 17, 12, // tri2 + 12, 17, 18 // tri3 +), +gsSPNTriangles_5b( + 12, 18, 14, // tri0 + 0, 8, 11, // tri1 + 0, 11, 19, // tri2 + 2, 8, 0 // tri3 +), +gsSPNTriangles_5b( + 19, 11, 13, // tri0 + 19, 13, 17, // tri1 + 16, 3, 2, // tri2 + 16, 2, 1 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot3_mnk_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mnk_1_v[317], 3, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000580, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&mnk_1_v[320], 21, 3), +gsSPNTrianglesInit_5b( + 9, // tri count + 2, 3, 4, // tri0 + 0, 5, 6, // tri1 + 0, 2, 7 // tri2 +), +gsSPNTriangles_5b( + 2, 8, 9, // tri0 + 2, 1, 10, // tri1 + 2, 11, 12, // tri2 + 0, 13, 14 // tri3 +), +gsSPNTriangles_5b( + 1, 15, 16, // tri0 + 1, 0, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 4, // tri count + 18, 19, 20, // tri0 + 20, 21, 18, // tri1 + 20, 22, 21 // tri2 +), +gsSPNTriangles_5b( + 18, 23, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_mnk_model[] = { +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mnk_1_v[341], 3, 0), +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000580, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&mnk_1_v[344], 14, 3), +gsSPNTrianglesInit_5b( + 7, // tri count + 2, 3, 4, // tri0 + 1, 5, 6, // tri1 + 2, 0, 7 // tri2 +), +gsSPNTriangles_5b( + 0, 1, 8, // tri0 + 1, 9, 10, // tri1 + 1, 2, 11, // tri2 + 2, 12, 13 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 14, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_mnk_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000580, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mnk_1_v[358], 6, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 2, 4 // tri2 +), +gsSPNTriangles_5b( + 5, 4, 1, // tri0 + 4, 5, 3, // tri1 + 1, 0, 5, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot3_mnk_model[] = { +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mnk_1_v[270], 3, 0), +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000580, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&mnk_1_v[273], 21, 3), +gsSPNTrianglesInit_5b( + 9, // tri count + 2, 3, 4, // tri0 + 0, 5, 6, // tri1 + 2, 0, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 2, 8, // tri0 + 1, 9, 10, // tri1 + 2, 11, 12, // tri2 + 0, 13, 14 // tri3 +), +gsSPNTriangles_5b( + 1, 15, 16, // tri0 + 0, 1, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 4, // tri count + 18, 19, 20, // tri0 + 20, 21, 18, // tri1 + 21, 22, 18 // tri2 +), +gsSPNTriangles_5b( + 19, 23, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_mnk_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mnk_1_v[294], 3, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000580, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&mnk_1_v[297], 14, 3), +gsSPNTrianglesInit_5b( + 7, // tri count + 2, 3, 4, // tri0 + 1, 5, 6, // tri1 + 0, 2, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 8, // tri0 + 1, 9, 10, // tri1 + 2, 1, 11, // tri2 + 2, 12, 13 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 14, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_mnk_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000580, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mnk_1_v[311], 6, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 1, 0 // tri2 +), +gsSPNTriangles_5b( + 2, 4, 5, // tri0 + 0, 5, 4, // tri1 + 5, 3, 2, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx base_mnk_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0005C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mnk_1_v[364], 25, 0), +gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 2, 1, 5 // tri2 +), +gsSPNTriangles_5b( + 4, 0, 2, // tri0 + 6, 5, 1, // tri1 + 3, 7, 8, // tri2 + 8, 7, 9 // tri3 +), +gsSPNTriangles_5b( + 7, 3, 4, // tri0 + 10, 11, 12, // tri1 + 8, 9, 11, // tri2 + 10, 12, 13 // tri3 +), +gsSPNTriangles_5b( + 11, 9, 12, // tri0 + 10, 13, 14, // tri1 + 1, 0, 15, // tri2 + 1, 15, 16 // tri3 +), +gsSPNTriangles_5b( + 15, 0, 17, // tri0 + 16, 15, 10, // tri1 + 10, 15, 17, // tri2 + 8, 17, 3 // tri3 +), +gsSPNTriangles_5b( + 0, 3, 17, // tri0 + 10, 17, 11, // tri1 + 8, 11, 17, // tri2 + 1, 16, 6 // tri3 +), +gsSPNTriangles_5b( + 14, 16, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 3, // tri count + 18, 19, 20, // tri0 + 21, 22, 23, // tri1 + 20, 24, 18 // tri2 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_mnk_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_mnk_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-350,0 }, + /* joint 3 */ { Lfoot1_mnk_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_mnk_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { Lfoot3_mnk_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,350,0 }, + /* joint 7 */ { Rfoot1_mnk_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_mnk_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { Rfoot3_mnk_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 300,0,-950 }, + /* joint 11 */ { tail1_mnk_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_mnk_model, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_mnk_model, 3, cKF_JOINT_FLAG_DISP_OPA, 325,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 750,-550,0 }, + /* joint 15 */ { Larm1_mnk_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_mnk_model, 0, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 750,550,0 }, + /* joint 18 */ { Rarm1_mnk_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_mnk_model, 1, cKF_JOINT_FLAG_DISP_OPA, 549,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 551,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 1225,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 600,0,1150 }, + /* joint 23 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_mnk_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1410,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_mnk_1 = { 26, 15, cKF_je_r_mnk_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/mob_1.c b/src/data/npc/model/mdl/mob_1.c new file mode 100644 index 00000000..40b00982 --- /dev/null +++ b/src/data/npc/model/mdl/mob_1.c @@ -0,0 +1,613 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx mob_1_v[] = { +#include "assets/npc/mdl/mob_1_v.inc" +}; + +static Gfx head_mob_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mob_1_v[32], 10, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mob_1_v[42], 15, 10), +gsSPNTrianglesInit_5b( + 10, // tri count + 0, 10, 11, // tri0 + 1, 12, 13, // tri1 + 7, 0, 14 // tri2 +), +gsSPNTriangles_5b( + 0, 1, 15, // tri0 + 3, 16, 17, // tri1 + 5, 18, 19, // tri2 + 4, 3, 20 // tri3 +), +gsSPNTriangles_5b( + 0, 21, 22, // tri0 + 1, 4, 23, // tri1 + 5, 7, 24, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mob_1_v[57], 20, 10), +gsSPNTrianglesInit_5b( + 8, // tri count + 8, 11, 10, // tri0 + 8, 13, 12, // tri1 + 9, 15, 14 // tri2 +), +gsSPNTriangles_5b( + 8, 6, 16, // tri0 + 2, 9, 17, // tri1 + 9, 8, 18, // tri2 + 9, 19, 20 // tri3 +), +gsSPNTriangles_5b( + 8, 21, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 23, 24, 25, // tri0 + 26, 23, 25, // tri1 + 27, 26, 25 // tri2 +), +gsSPNTriangles_5b( + 28, 27, 25, // tri0 + 29, 28, 25, // tri1 + 24, 29, 25, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&mob_1_v[77], 31, 0), +gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 0, 7, 1, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 +), +gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 15, 17, 18, // tri1 + 12, 14, 19, // tri2 + 20, 21, 22 // tri3 +), +gsSPNTriangles_5b( + 20, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 24, 25, 26, // tri0 + 27, 28, 26, // tri1 + 25, 27, 26 // tri2 +), +gsSPNTriangles_5b( + 29, 24, 26, // tri0 + 30, 29, 26, // tri1 + 28, 30, 26, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&mob_1_v[108], 31, 0), +gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 2, 6, // tri1 + 9, 11, 7, // tri2 + 8, 4, 3 // tri3 +), +gsSPNTriangles_5b( + 2, 10, 0, // tri0 + 6, 5, 10, // tri1 + 3, 9, 8, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 12, 13, 14, // tri0 + 15, 16, 17, // tri1 + 16, 15, 12 // tri2 +), +gsSPNTriangles_5b( + 18, 14, 13, // tri0 + 12, 19, 16, // tri1 + 14, 19, 12, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 13, // tri count + 20, 21, 22, // tri0 + 23, 22, 24, // tri1 + 23, 25, 26 // tri2 +), +gsSPNTriangles_5b( + 23, 26, 20, // tri0 + 20, 22, 23, // tri1 + 27, 28, 26, // tri2 + 20, 26, 28 // tri3 +), +gsSPNTriangles_5b( + 26, 25, 29, // tri0 + 25, 24, 30, // tri1 + 28, 21, 20, // tri2 + 25, 30, 29 // tri3 +), +gsSPNTriangles_5b( + 24, 25, 23, // tri0 + 29, 27, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx mouth_mob_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mob_1_v[0], 5, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&mob_1_v[5], 21, 5), +gsSPNTrianglesInit_5b( + 10, // tri count + 2, 5, 6, // tri0 + 2, 7, 8, // tri1 + 4, 3, 9 // tri2 +), +gsSPNTriangles_5b( + 3, 10, 11, // tri0 + 4, 12, 13, // tri1 + 1, 4, 14, // tri2 + 3, 0, 15 // tri3 +), +gsSPNTriangles_5b( + 2, 16, 17, // tri0 + 2, 1, 18, // tri1 + 0, 2, 19, // tri2 + 0, 0, 0 // tri3 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 4, // tri count + 20, 21, 22, // tri0 + 20, 22, 23, // tri1 + 23, 24, 25 // tri2 +), +gsSPNTriangles_5b( + 23, 25, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&mob_1_v[26], 6, 0), +gsSPNTrianglesInit_5b( + 3, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 2 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx hand_mob_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mob_1_v[175], 25, 0), +gsSPNTrianglesInit_5b( + 30, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 7, 8, 5, // tri0 + 7, 5, 9, // tri1 + 0, 10, 1, // tri2 + 11, 8, 4 // tri3 +), +gsSPNTriangles_5b( + 11, 4, 3, // tri0 + 12, 13, 14, // tri1 + 9, 13, 12, // tri2 + 9, 12, 7 // tri3 +), +gsSPNTriangles_5b( + 0, 2, 10, // tri0 + 6, 5, 8, // tri1 + 6, 8, 11, // tri2 + 11, 10, 2 // tri3 +), +gsSPNTriangles_5b( + 11, 2, 6, // tri0 + 3, 1, 10, // tri1 + 3, 10, 11, // tri2 + 6, 2, 1 // tri3 +), +gsSPNTriangles_5b( + 6, 1, 3, // tri0 + 13, 15, 14, // tri1 + 9, 5, 4, // tri2 + 9, 4, 16 // tri3 +), +gsSPNTriangles_5b( + 16, 15, 13, // tri0 + 16, 13, 9, // tri1 + 15, 12, 14, // tri2 + 16, 4, 8 // tri3 +), +gsSPNTriangles_5b( + 16, 8, 7, // tri0 + 7, 12, 15, // tri1 + 7, 15, 16, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 12, // tri count + 17, 18, 19, // tri0 + 19, 18, 20, // tri1 + 19, 20, 21 // tri2 +), +gsSPNTriangles_5b( + 20, 22, 21, // tri0 + 18, 17, 22, // tri1 + 18, 22, 20, // tri2 + 19, 23, 17 // tri3 +), +gsSPNTriangles_5b( + 17, 23, 24, // tri0 + 17, 24, 22, // tri1 + 24, 21, 22, // tri2 + 23, 19, 21 // tri3 +), +gsSPNTriangles_5b( + 23, 21, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_mob_model[] = { +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mob_1_v[200], 5, 0), +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&mob_1_v[205], 16, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 0, 1, 11, // tri0 + 2, 4, 12, // tri1 + 0, 13, 14, // tri2 + 3, 0, 15 // tri3 +), +gsSPNTriangles_5b( + 4, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 20, 19, 18, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_mob_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mob_1_v[221], 4, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&mob_1_v[225], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 2, 0, 8 // tri2 +), +gsSPNTriangles_5b( + 3, 2, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 1, 3, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_mob_model[] = { +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mob_1_v[139], 5, 0), +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&mob_1_v[144], 16, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 +), +gsSPNTriangles_5b( + 3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_mob_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mob_1_v[160], 4, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&mob_1_v[164], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_mob_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mob_1_v[236], 9, 0), +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 64, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&mob_1_v[245], 22, 9), +gsSPNTrianglesInit_5b( + 14, // tri count + 0, 9, 3, // tri0 + 1, 10, 8, // tri1 + 4, 11, 5 // tri2 +), +gsSPNTriangles_5b( + 6, 12, 2, // tri0 + 8, 13, 14, // tri1 + 8, 15, 7, // tri2 + 2, 16, 17 // tri3 +), +gsSPNTriangles_5b( + 1, 18, 19, // tri0 + 3, 20, 21, // tri1 + 4, 22, 23, // tri2 + 0, 24, 25 // tri3 +), +gsSPNTriangles_5b( + 0, 5, 26, // tri0 + 2, 27, 28, // tri1 + 1, 29, 30, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&mob_1_v[267], 6, 9), +gsSPNTrianglesInit_5b( + 4, // tri count + 3, 9, 10, // tri0 + 3, 11, 1, // tri1 + 4, 12, 13 // tri2 +), +gsSPNTriangles_5b( + 4, 2, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&mob_1_v[273], 18, 0), +gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 4, 7, 8, // tri0 + 9, 10, 11, // tri1 + 12, 13, 14, // tri2 + 7, 10, 15 // tri3 +), +gsSPNTriangles_5b( + 4, 8, 5, // tri0 + 16, 1, 17, // tri1 + 15, 8, 7, // tri2 + 9, 15, 10 // tri3 +), +gsSPNTriangles_5b( + 11, 12, 14, // tri0 + 11, 14, 9, // tri1 + 13, 17, 14, // tri2 + 1, 16, 2 // tri3 +), +gsSPNTriangles_5b( + 17, 13, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx base_mob_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 64, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mob_1_v[291], 24, 0), +gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 1 // tri2 +), +gsSPNTriangles_5b( + 0, 7, 6, // tri0 + 5, 4, 8, // tri1 + 9, 4, 10, // tri2 + 9, 10, 11 // tri3 +), +gsSPNTriangles_5b( + 6, 12, 1, // tri0 + 13, 3, 5, // tri1 + 13, 2, 14, // tri2 + 13, 14, 15 // tri3 +), +gsSPNTriangles_5b( + 16, 1, 12, // tri0 + 17, 18, 6, // tri1 + 17, 6, 19, // tri2 + 2, 1, 16 // tri3 +), +gsSPNTriangles_5b( + 2, 16, 14, // tri0 + 6, 18, 12, // tri1 + 3, 20, 4, // tri2 + 21, 17, 19 // tri3 +), +gsSPNTriangles_5b( + 21, 19, 22, // tri0 + 15, 23, 3, // tri1 + 15, 3, 13, // tri2 + 20, 3, 23 // tri3 +), +gsSPNTriangles_5b( + 19, 6, 7, // tri0 + 20, 10, 4, // tri1 + 8, 4, 9, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_mob_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 1 */ { base_mob_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-700,0 }, + /* joint 3 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,700,0 }, + /* joint 7 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 300,0,-950 }, + /* joint 11 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_mob_model, 3, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,-1050,0 }, + /* joint 15 */ { Larm1_mob_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_mob_model, 0, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,1050,0 }, + /* joint 18 */ { Rarm1_mob_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_mob_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 20 */ { hand_mob_model, 0, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 1399,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 800,0,900 }, + /* joint 23 */ { mouth_mob_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_mob_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 800,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_mob_1 = { 26, 9, cKF_je_r_mob_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/mol_1.c b/src/data/npc/model/mdl/mol_1.c new file mode 100644 index 00000000..69a78ae0 --- /dev/null +++ b/src/data/npc/model/mdl/mol_1.c @@ -0,0 +1,630 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx mol_1_v[] = { +#include "assets/npc/mdl/mol_1_v.inc" +}; + +static Gfx head_mol_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mol_1_v[34], 10, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&mol_1_v[44], 15, 10), +gsSPNTrianglesInit_5b( + 10, // tri count + 1, 4, 10, // tri0 + 5, 7, 11, // tri1 + 0, 12, 13 // tri2 +), +gsSPNTriangles_5b( + 1, 14, 15, // tri0 + 7, 0, 16, // tri1 + 0, 1, 17, // tri2 + 3, 18, 19 // tri3 +), +gsSPNTriangles_5b( + 5, 20, 21, // tri0 + 4, 3, 22, // tri1 + 0, 23, 24, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&mol_1_v[59], 20, 10), +gsSPNTrianglesInit_5b( + 8, // tri count + 9, 10, 11, // tri0 + 8, 12, 13, // tri1 + 8, 15, 14 // tri2 +), +gsSPNTriangles_5b( + 8, 17, 16, // tri0 + 9, 19, 18, // tri1 + 8, 6, 20, // tri2 + 2, 9, 21 // tri3 +), +gsSPNTriangles_5b( + 9, 8, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 23, 24, 25, // tri0 + 26, 23, 25, // tri1 + 27, 26, 25 // tri2 +), +gsSPNTriangles_5b( + 28, 27, 25, // tri0 + 29, 28, 25, // tri1 + 24, 29, 25, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&mol_1_v[79], 31, 0), +gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 0, 7, 1, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 +), +gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 15, 17, 18, // tri1 + 12, 14, 19, // tri2 + 20, 21, 22 // tri3 +), +gsSPNTriangles_5b( + 20, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 24, 25, 26, // tri0 + 27, 28, 26, // tri1 + 25, 27, 26 // tri2 +), +gsSPNTriangles_5b( + 29, 24, 26, // tri0 + 30, 29, 26, // tri1 + 28, 30, 26, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&mol_1_v[110], 25, 0), +gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 2, 6, // tri1 + 9, 11, 7, // tri2 + 8, 4, 3 // tri3 +), +gsSPNTriangles_5b( + 2, 10, 0, // tri0 + 6, 5, 10, // tri1 + 3, 9, 8, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 4, // tri count + 12, 13, 14, // tri0 + 15, 16, 17, // tri1 + 14, 18, 12 // tri2 +), +gsSPNTriangles_5b( + 14, 13, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 22, 23, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&mol_1_v[135], 11, 0), +gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 8, 0, // tri0 + 2, 1, 5, // tri1 + 2, 5, 6, // tri2 + 6, 8, 2 // tri3 +), +gsSPNTriangles_5b( + 4, 9, 5, // tri0 + 6, 5, 9, // tri1 + 5, 1, 3, // tri2 + 1, 0, 10 // tri3 +), +gsSPNTriangles_5b( + 9, 7, 6, // tri0 + 1, 10, 3, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx mouth_mol_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mol_1_v[0], 5, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&mol_1_v[5], 23, 5), +gsSPNTrianglesInit_5b( + 10, // tri count + 2, 5, 6, // tri0 + 2, 7, 8, // tri1 + 4, 3, 9 // tri2 +), +gsSPNTriangles_5b( + 3, 10, 11, // tri0 + 4, 12, 13, // tri1 + 1, 4, 14, // tri2 + 3, 0, 15 // tri3 +), +gsSPNTriangles_5b( + 2, 16, 17, // tri0 + 2, 1, 18, // tri1 + 0, 2, 19, // tri2 + 0, 0, 0 // tri3 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 2, // tri count + 20, 21, 22, // tri0 + 20, 22, 23, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 2, // tri count + 24, 25, 26, // tri0 + 24, 26, 27, // tri1 + 0, 0, 0 // tri2 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&mol_1_v[28], 6, 0), +gsSPNTrianglesInit_5b( + 3, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 2 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx hand_mol_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mol_1_v[182], 25, 0), +gsSPNTrianglesInit_5b( + 30, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 7, 8, 5, // tri0 + 7, 5, 9, // tri1 + 0, 10, 1, // tri2 + 11, 8, 4 // tri3 +), +gsSPNTriangles_5b( + 11, 4, 3, // tri0 + 12, 13, 14, // tri1 + 9, 13, 12, // tri2 + 9, 12, 7 // tri3 +), +gsSPNTriangles_5b( + 0, 2, 10, // tri0 + 6, 5, 8, // tri1 + 6, 8, 11, // tri2 + 11, 10, 2 // tri3 +), +gsSPNTriangles_5b( + 11, 2, 6, // tri0 + 3, 1, 10, // tri1 + 3, 10, 11, // tri2 + 6, 2, 1 // tri3 +), +gsSPNTriangles_5b( + 6, 1, 3, // tri0 + 13, 15, 14, // tri1 + 9, 5, 4, // tri2 + 9, 4, 16 // tri3 +), +gsSPNTriangles_5b( + 16, 15, 13, // tri0 + 16, 13, 9, // tri1 + 15, 12, 14, // tri2 + 16, 4, 8 // tri3 +), +gsSPNTriangles_5b( + 16, 8, 7, // tri0 + 7, 12, 15, // tri1 + 7, 15, 16, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 12, // tri count + 17, 18, 19, // tri0 + 19, 18, 20, // tri1 + 19, 20, 21 // tri2 +), +gsSPNTriangles_5b( + 20, 22, 21, // tri0 + 18, 17, 22, // tri1 + 18, 22, 20, // tri2 + 19, 23, 17 // tri3 +), +gsSPNTriangles_5b( + 17, 23, 24, // tri0 + 17, 24, 22, // tri1 + 24, 21, 22, // tri2 + 23, 19, 21 // tri3 +), +gsSPNTriangles_5b( + 23, 21, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_mol_model[] = { +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mol_1_v[207], 5, 0), +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&mol_1_v[212], 16, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 0, 1, 11, // tri0 + 2, 4, 12, // tri1 + 0, 13, 14, // tri2 + 3, 0, 15 // tri3 +), +gsSPNTriangles_5b( + 4, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 20, 19, 18, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_mol_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mol_1_v[228], 4, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&mol_1_v[232], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 2, 0, 8 // tri2 +), +gsSPNTriangles_5b( + 3, 2, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 1, 3, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_mol_model[] = { +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mol_1_v[146], 5, 0), +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&mol_1_v[151], 16, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 +), +gsSPNTriangles_5b( + 3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_mol_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mol_1_v[167], 4, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&mol_1_v[171], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_mol_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mol_1_v[243], 9, 0), +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 64, 24, 15, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 92), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&mol_1_v[252], 22, 9), +gsSPNTrianglesInit_5b( + 14, // tri count + 0, 9, 3, // tri0 + 1, 10, 8, // tri1 + 4, 11, 5 // tri2 +), +gsSPNTriangles_5b( + 6, 12, 2, // tri0 + 8, 13, 14, // tri1 + 8, 15, 7, // tri2 + 2, 16, 17 // tri3 +), +gsSPNTriangles_5b( + 1, 18, 19, // tri0 + 3, 20, 21, // tri1 + 4, 22, 23, // tri2 + 0, 24, 25 // tri3 +), +gsSPNTriangles_5b( + 0, 5, 26, // tri0 + 2, 27, 28, // tri1 + 1, 29, 30, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&mol_1_v[274], 6, 9), +gsSPNTrianglesInit_5b( + 4, // tri count + 3, 9, 10, // tri0 + 3, 11, 1, // tri1 + 4, 12, 13 // tri2 +), +gsSPNTriangles_5b( + 4, 2, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&mol_1_v[280], 18, 0), +gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 4, 7, 8, // tri0 + 9, 10, 11, // tri1 + 12, 13, 14, // tri2 + 7, 10, 15 // tri3 +), +gsSPNTriangles_5b( + 4, 8, 5, // tri0 + 16, 1, 17, // tri1 + 15, 8, 7, // tri2 + 9, 15, 10 // tri3 +), +gsSPNTriangles_5b( + 11, 12, 14, // tri0 + 11, 14, 9, // tri1 + 13, 17, 14, // tri2 + 1, 16, 2 // tri3 +), +gsSPNTriangles_5b( + 17, 13, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx base_mol_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 64, 24, 15, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 92), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mol_1_v[298], 24, 0), +gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 3, 8, 9, // tri0 + 10, 9, 8, // tri1 + 10, 8, 11, // tri2 + 12, 13, 5 // tri3 +), +gsSPNTriangles_5b( + 12, 5, 14, // tri0 + 8, 3, 1, // tri1 + 6, 15, 16, // tri2 + 17, 18, 19 // tri3 +), +gsSPNTriangles_5b( + 17, 19, 20, // tri0 + 13, 15, 6, // tri1 + 13, 6, 5, // tri2 + 19, 18, 16 // tri3 +), +gsSPNTriangles_5b( + 11, 17, 20, // tri0 + 11, 20, 10, // tri1 + 11, 8, 21, // tri2 + 6, 16, 18 // tri3 +), +gsSPNTriangles_5b( + 2, 1, 4, // tri0 + 2, 4, 22, // tri1 + 21, 1, 0, // tri2 + 23, 7, 6 // tri3 +), +gsSPNTriangles_5b( + 23, 6, 18, // tri0 + 8, 1, 21, // tri1 + 23, 18, 17, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_mol_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 1 */ { base_mol_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-700,0 }, + /* joint 3 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,700,0 }, + /* joint 7 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 300,0,-950 }, + /* joint 11 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_mol_model, 3, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,-1500,0 }, + /* joint 15 */ { Larm1_mol_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_mol_model, 0, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,1500,0 }, + /* joint 18 */ { Rarm1_mol_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_mol_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 20 */ { hand_mol_model, 0, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 1200,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 1100,0,1100 }, + /* joint 23 */ { mouth_mol_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_mol_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1000,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_mol_1 = { 26, 9, cKF_je_r_mol_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/mos_1.c b/src/data/npc/model/mdl/mos_1.c new file mode 100644 index 00000000..f8d29505 --- /dev/null +++ b/src/data/npc/model/mdl/mos_1.c @@ -0,0 +1,630 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx mos_1_v[] = { +#include "assets/npc/mdl/mos_1_v.inc" +}; + +static Gfx head_mos_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mos_1_v[34], 10, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&mos_1_v[44], 15, 10), +gsSPNTrianglesInit_5b( + 10, // tri count + 1, 4, 10, // tri0 + 5, 7, 11, // tri1 + 0, 12, 13 // tri2 +), +gsSPNTriangles_5b( + 1, 14, 15, // tri0 + 7, 0, 16, // tri1 + 0, 1, 17, // tri2 + 3, 18, 19 // tri3 +), +gsSPNTriangles_5b( + 5, 20, 21, // tri0 + 4, 3, 22, // tri1 + 0, 23, 24, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&mos_1_v[59], 20, 10), +gsSPNTrianglesInit_5b( + 8, // tri count + 9, 10, 11, // tri0 + 8, 12, 13, // tri1 + 8, 15, 14 // tri2 +), +gsSPNTriangles_5b( + 8, 17, 16, // tri0 + 9, 19, 18, // tri1 + 8, 6, 20, // tri2 + 2, 9, 21 // tri3 +), +gsSPNTriangles_5b( + 9, 8, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 23, 24, 25, // tri0 + 26, 23, 25, // tri1 + 27, 26, 25 // tri2 +), +gsSPNTriangles_5b( + 28, 27, 25, // tri0 + 29, 28, 25, // tri1 + 24, 29, 25, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&mos_1_v[79], 31, 0), +gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 0, 7, 1, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 +), +gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 15, 17, 18, // tri1 + 12, 14, 19, // tri2 + 20, 21, 22 // tri3 +), +gsSPNTriangles_5b( + 20, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 24, 25, 26, // tri0 + 27, 28, 26, // tri1 + 25, 27, 26 // tri2 +), +gsSPNTriangles_5b( + 29, 24, 26, // tri0 + 30, 29, 26, // tri1 + 28, 30, 26, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&mos_1_v[110], 25, 0), +gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 2, 6, // tri1 + 9, 11, 7, // tri2 + 8, 4, 3 // tri3 +), +gsSPNTriangles_5b( + 2, 10, 0, // tri0 + 6, 5, 10, // tri1 + 3, 9, 8, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 4, // tri count + 12, 13, 14, // tri0 + 15, 16, 17, // tri1 + 14, 18, 12 // tri2 +), +gsSPNTriangles_5b( + 14, 13, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 22, 23, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&mos_1_v[135], 11, 0), +gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 8, 0, // tri0 + 2, 1, 5, // tri1 + 2, 5, 6, // tri2 + 6, 8, 2 // tri3 +), +gsSPNTriangles_5b( + 4, 9, 5, // tri0 + 6, 5, 9, // tri1 + 5, 1, 3, // tri2 + 1, 0, 10 // tri3 +), +gsSPNTriangles_5b( + 9, 7, 6, // tri0 + 1, 10, 3, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx mouth_mos_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mos_1_v[0], 5, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&mos_1_v[5], 23, 5), +gsSPNTrianglesInit_5b( + 10, // tri count + 2, 5, 6, // tri0 + 2, 7, 8, // tri1 + 4, 3, 9 // tri2 +), +gsSPNTriangles_5b( + 3, 10, 11, // tri0 + 4, 12, 13, // tri1 + 1, 4, 14, // tri2 + 3, 0, 15 // tri3 +), +gsSPNTriangles_5b( + 2, 16, 17, // tri0 + 2, 1, 18, // tri1 + 0, 2, 19, // tri2 + 0, 0, 0 // tri3 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 2, // tri count + 20, 21, 22, // tri0 + 20, 22, 23, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 2, // tri count + 24, 25, 26, // tri0 + 24, 26, 27, // tri1 + 0, 0, 0 // tri2 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&mos_1_v[28], 6, 0), +gsSPNTrianglesInit_5b( + 3, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 2 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx hand_mos_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mos_1_v[182], 25, 0), +gsSPNTrianglesInit_5b( + 30, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 7, 8, 5, // tri0 + 7, 5, 9, // tri1 + 0, 10, 1, // tri2 + 11, 8, 4 // tri3 +), +gsSPNTriangles_5b( + 11, 4, 3, // tri0 + 12, 13, 14, // tri1 + 9, 13, 12, // tri2 + 9, 12, 7 // tri3 +), +gsSPNTriangles_5b( + 0, 2, 10, // tri0 + 6, 5, 8, // tri1 + 6, 8, 11, // tri2 + 11, 10, 2 // tri3 +), +gsSPNTriangles_5b( + 11, 2, 6, // tri0 + 3, 1, 10, // tri1 + 3, 10, 11, // tri2 + 6, 2, 1 // tri3 +), +gsSPNTriangles_5b( + 6, 1, 3, // tri0 + 13, 15, 14, // tri1 + 9, 5, 4, // tri2 + 9, 4, 16 // tri3 +), +gsSPNTriangles_5b( + 16, 15, 13, // tri0 + 16, 13, 9, // tri1 + 15, 12, 14, // tri2 + 16, 4, 8 // tri3 +), +gsSPNTriangles_5b( + 16, 8, 7, // tri0 + 7, 12, 15, // tri1 + 7, 15, 16, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 12, // tri count + 17, 18, 19, // tri0 + 19, 18, 20, // tri1 + 19, 20, 21 // tri2 +), +gsSPNTriangles_5b( + 20, 22, 21, // tri0 + 18, 17, 22, // tri1 + 18, 22, 20, // tri2 + 19, 23, 17 // tri3 +), +gsSPNTriangles_5b( + 17, 23, 24, // tri0 + 17, 24, 22, // tri1 + 24, 21, 22, // tri2 + 23, 19, 21 // tri3 +), +gsSPNTriangles_5b( + 23, 21, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_mos_model[] = { +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mos_1_v[207], 5, 0), +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&mos_1_v[212], 16, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 0, 1, 11, // tri0 + 2, 4, 12, // tri1 + 0, 13, 14, // tri2 + 3, 0, 15 // tri3 +), +gsSPNTriangles_5b( + 4, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 20, 19, 18, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_mos_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mos_1_v[228], 4, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&mos_1_v[232], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 2, 0, 8 // tri2 +), +gsSPNTriangles_5b( + 3, 2, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 1, 3, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_mos_model[] = { +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mos_1_v[146], 5, 0), +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&mos_1_v[151], 16, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 +), +gsSPNTriangles_5b( + 3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_mos_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mos_1_v[167], 4, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&mos_1_v[171], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_mos_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mos_1_v[243], 9, 0), +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 64, 24, 15, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 92), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&mos_1_v[252], 22, 9), +gsSPNTrianglesInit_5b( + 14, // tri count + 0, 9, 3, // tri0 + 1, 10, 8, // tri1 + 4, 11, 5 // tri2 +), +gsSPNTriangles_5b( + 6, 12, 2, // tri0 + 8, 13, 14, // tri1 + 8, 15, 7, // tri2 + 2, 16, 17 // tri3 +), +gsSPNTriangles_5b( + 1, 18, 19, // tri0 + 3, 20, 21, // tri1 + 4, 22, 23, // tri2 + 0, 24, 25 // tri3 +), +gsSPNTriangles_5b( + 0, 5, 26, // tri0 + 2, 27, 28, // tri1 + 1, 29, 30, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&mos_1_v[274], 6, 9), +gsSPNTrianglesInit_5b( + 4, // tri count + 3, 9, 10, // tri0 + 3, 11, 1, // tri1 + 4, 12, 13 // tri2 +), +gsSPNTriangles_5b( + 4, 2, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&mos_1_v[280], 18, 0), +gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 4, 7, 8, // tri0 + 9, 10, 11, // tri1 + 12, 13, 14, // tri2 + 7, 10, 15 // tri3 +), +gsSPNTriangles_5b( + 4, 8, 5, // tri0 + 16, 1, 17, // tri1 + 15, 8, 7, // tri2 + 9, 15, 10 // tri3 +), +gsSPNTriangles_5b( + 11, 12, 14, // tri0 + 11, 14, 9, // tri1 + 13, 17, 14, // tri2 + 1, 16, 2 // tri3 +), +gsSPNTriangles_5b( + 17, 13, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx base_mos_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 64, 24, 15, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 92), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mos_1_v[298], 24, 0), +gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 3, 8, 9, // tri0 + 10, 9, 8, // tri1 + 10, 8, 11, // tri2 + 12, 13, 5 // tri3 +), +gsSPNTriangles_5b( + 12, 5, 14, // tri0 + 8, 3, 1, // tri1 + 6, 15, 16, // tri2 + 17, 18, 19 // tri3 +), +gsSPNTriangles_5b( + 17, 19, 20, // tri0 + 13, 15, 6, // tri1 + 13, 6, 5, // tri2 + 19, 18, 16 // tri3 +), +gsSPNTriangles_5b( + 11, 17, 20, // tri0 + 11, 20, 10, // tri1 + 11, 8, 21, // tri2 + 6, 16, 18 // tri3 +), +gsSPNTriangles_5b( + 2, 1, 4, // tri0 + 2, 4, 22, // tri1 + 21, 1, 0, // tri2 + 23, 7, 6 // tri3 +), +gsSPNTriangles_5b( + 23, 6, 18, // tri0 + 8, 1, 21, // tri1 + 23, 18, 17, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_mos_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 1 */ { base_mos_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-700,0 }, + /* joint 3 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,700,0 }, + /* joint 7 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 300,0,-950 }, + /* joint 11 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_mos_model, 3, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,-1500,0 }, + /* joint 15 */ { Larm1_mos_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_mos_model, 0, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,1500,0 }, + /* joint 18 */ { Rarm1_mos_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_mos_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 20 */ { hand_mos_model, 0, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 1200,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 1100,0,1100 }, + /* joint 23 */ { mouth_mos_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_mos_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1000,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_mos_1 = { 26, 9, cKF_je_r_mos_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/mus_1.c b/src/data/npc/model/mdl/mus_1.c new file mode 100644 index 00000000..e12a6515 --- /dev/null +++ b/src/data/npc/model/mdl/mus_1.c @@ -0,0 +1,743 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx mus_1_v[] = { +#include "assets/npc/mdl/mus_1_v.inc" +}; + +static Gfx head_mus_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mus_1_v[8], 19, 0), +gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 9, 7, 6, // tri0 + 9, 10, 11, // tri1 + 5, 4, 0, // tri2 + 12, 5, 0 // tri3 +), +gsSPNTriangles_5b( + 6, 10, 9, // tri0 + 11, 13, 14, // tri1 + 11, 14, 9, // tri2 + 8, 15, 6 // tri3 +), +gsSPNTriangles_5b( + 2, 12, 0, // tri0 + 5, 16, 17, // tri1 + 5, 17, 18, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&mus_1_v[27], 20, 0), +gsSPNTrianglesInit_5b( + 25, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 2, 1, 3 // tri2 +), +gsSPNTriangles_5b( + 0, 5, 6, // tri0 + 6, 1, 0, // tri1 + 7, 8, 9, // tri2 + 10, 11, 12 // tri3 +), +gsSPNTriangles_5b( + 10, 12, 7, // tri0 + 12, 3, 8, // tri1 + 7, 12, 8, // tri2 + 7, 13, 10 // tri3 +), +gsSPNTriangles_5b( + 14, 4, 3, // tri0 + 12, 15, 14, // tri1 + 7, 9, 16, // tri2 + 3, 12, 14 // tri3 +), +gsSPNTriangles_5b( + 16, 13, 7, // tri0 + 1, 6, 8, // tri1 + 1, 8, 3, // tri2 + 8, 6, 9 // tri3 +), +gsSPNTriangles_5b( + 10, 17, 18, // tri0 + 10, 18, 11, // tri1 + 15, 12, 11, // tri2 + 9, 6, 5 // tri3 +), +gsSPNTriangles_5b( + 9, 5, 19, // tri0 + 16, 9, 19, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&mus_1_v[47], 19, 0), +gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 12, 13, 14, // tri1 + 0, 12, 14, // tri2 + 9, 11, 6 // tri3 +), +gsSPNTriangles_5b( + 15, 7, 6, // tri0 + 13, 12, 4, // tri1 + 16, 1, 0, // tri2 + 5, 4, 12 // tri3 +), +gsSPNTriangles_5b( + 3, 5, 11, // tri0 + 5, 12, 0, // tri1 + 17, 5, 0, // tri2 + 6, 5, 17 // tri3 +), +gsSPNTriangles_5b( + 2, 18, 17, // tri0 + 6, 11, 5, // tri1 + 15, 6, 17, // tri2 + 17, 0, 2 // tri3 +), +gsSPNTriangles_5b( + 8, 9, 6, // tri0 + 0, 14, 16, // tri1 + 17, 18, 15, // tri2 + 10, 3, 11 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&mus_1_v[66], 14, 0), +gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 3 // tri2 +), +gsSPNTriangles_5b( + 1, 7, 8, // tri0 + 1, 9, 10, // tri1 + 10, 7, 1, // tri2 + 5, 4, 10 // tri3 +), +gsSPNTriangles_5b( + 8, 2, 1, // tri0 + 9, 11, 5, // tri1 + 12, 13, 5, // tri2 + 11, 9, 1 // tri3 +), +gsSPNTriangles_5b( + 1, 0, 12, // tri0 + 10, 9, 5, // tri1 + 13, 6, 5, // tri2 + 12, 11, 1 // tri3 +), +gsSPNTriangles_5b( + 5, 11, 12, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&mus_1_v[80], 26, 0), +gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 1, 7 // tri2 +), +gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 14, 15, 16, // tri2 + 17, 7, 0 // tri3 +), +gsSPNTriangles_5b( + 13, 14, 11, // tri0 + 10, 9, 11, // tri1 + 16, 8, 10, // tri2 + 3, 5, 6 // tri3 +), +gsSPNTriangles_5b( + 17, 4, 3, // tri0 + 13, 18, 19, // tri1 + 0, 7, 1, // tri2 + 15, 14, 13 // tri3 +), +gsSPNTriangles_5b( + 20, 15, 13, // tri0 + 13, 19, 21, // tri1 + 11, 14, 10, // tri2 + 2, 22, 23 // tri3 +), +gsSPNTriangles_5b( + 2, 23, 24, // tri0 + 7, 3, 6, // tri1 + 16, 10, 14, // tri2 + 3, 7, 17 // tri3 +), +gsSPNTriangles_5b( + 0, 25, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&mus_1_v[106], 12, 0), +gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 2, 5, 0 // tri2 +), +gsSPNTriangles_5b( + 0, 5, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 4, // tri count + 6, 7, 8, // tri0 + 9, 10, 8, // tri1 + 8, 11, 6 // tri2 +), +gsSPNTriangles_5b( + 8, 7, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx mouth_mus_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mus_1_v[0], 8, 0), +gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 2, // tri count + 4, 5, 6, // tri0 + 6, 5, 7, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_mus_model[] = { +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mus_1_v[154], 5, 0), +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&mus_1_v[159], 16, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 5, 3, // tri0 + 1, 4, 6, // tri1 + 1, 8, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 10, 9, // tri0 + 0, 1, 11, // tri1 + 2, 12, 13, // tri2 + 2, 0, 14 // tri3 +), +gsSPNTriangles_5b( + 2, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 20, 18, 17, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_mus_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mus_1_v[175], 4, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&mus_1_v[179], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 2, 4, // tri0 + 0, 5, 6, // tri1 + 1, 8, 7 // tri2 +), +gsSPNTriangles_5b( + 2, 9, 10, // tri0 + 3, 1, 11, // tri1 + 1, 0, 12, // tri2 + 1, 13, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_mus_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mus_1_v[118], 5, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&mus_1_v[123], 16, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 +), +gsSPNTriangles_5b( + 3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_mus_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mus_1_v[139], 4, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&mus_1_v[143], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_mus_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mus_1_v[190], 7, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 252, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&mus_1_v[197], 20, 7), +gsSPNTrianglesInit_5b( + 13, // tri count + 3, 1, 7, // tri0 + 6, 8, 9, // tri1 + 3, 10, 11 // tri2 +), +gsSPNTriangles_5b( + 2, 12, 0, // tri0 + 2, 13, 14, // tri1 + 1, 16, 15, // tri2 + 0, 17, 18 // tri3 +), +gsSPNTriangles_5b( + 0, 19, 20, // tri0 + 1, 21, 22, // tri1 + 6, 3, 23, // tri2 + 2, 6, 24 // tri3 +), +gsSPNTriangles_5b( + 4, 0, 25, // tri0 + 5, 26, 1, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&mus_1_v[217], 9, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 0, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 4, 3, 7, // tri0 + 2, 5, 0, // tri1 + 1, 8, 2, // tri2 + 6, 3, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail1_mus_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mus_1_v[256], 10, 0), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 2, 1, 3 // tri2 +), +gsSPNTriangles_5b( + 4, 3, 5, // tri0 + 6, 5, 7, // tri1 + 8, 0, 9, // tri2 + 5, 6, 4 // tri3 +), +gsSPNTriangles_5b( + 0, 8, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail2_mus_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mus_1_v[226], 6, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&mus_1_v[232], 24, 6), +gsSPNTrianglesInit_5b( + 8, // tri count + 3, 2, 6, // tri0 + 2, 8, 7, // tri1 + 4, 3, 9 // tri2 +), +gsSPNTriangles_5b( + 3, 11, 10, // tri0 + 0, 5, 12, // tri1 + 5, 14, 13, // tri2 + 2, 1, 15 // tri3 +), +gsSPNTriangles_5b( + 1, 17, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 4, // tri count + 18, 19, 20, // tri0 + 21, 22, 23, // tri1 + 24, 25, 26 // tri2 +), +gsSPNTriangles_5b( + 27, 28, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_mus_model[] = { +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mus_1_v[318], 6, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&mus_1_v[324], 18, 6), +gsSPNTrianglesInit_5b( + 7, // tri count + 4, 0, 6, // tri0 + 0, 8, 7, // tri1 + 3, 10, 9 // tri2 +), +gsSPNTriangles_5b( + 1, 2, 11, // tri0 + 2, 3, 12, // tri1 + 3, 5, 13, // tri2 + 2, 14, 15 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 16, 17, 18, // tri0 + 19, 20, 21, // tri1 + 22, 23, 20 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_mus_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mus_1_v[342], 4, 0), +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 252, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&mus_1_v[346], 24, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 3, 4, // tri0 + 0, 5, 1, // tri1 + 1, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 3, 2, 8, // tri0 + 2, 9, 10, // tri1 + 2, 1, 11, // tri2 + 0, 13, 12 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 14, 15, 16, // tri0 + 14, 16, 17, // tri1 + 17, 18, 14 // tri2 +), +gsSPNTriangles_5b( + 19, 20, 21, // tri0 + 22, 23, 18, // tri1 + 21, 24, 19, // tri2 + 17, 22, 18 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 252, 124), +gsSPNTrianglesInit_5b( + 1, // tri count + 25, 26, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_mus_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mus_1_v[266], 6, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&mus_1_v[272], 18, 6), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 4, 6, // tri0 + 0, 8, 7, // tri1 + 3, 10, 9 // tri2 +), +gsSPNTriangles_5b( + 2, 1, 11, // tri0 + 3, 2, 12, // tri1 + 5, 3, 13, // tri2 + 2, 14, 15 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 16, 17, 18, // tri0 + 19, 20, 21, // tri1 + 20, 22, 23 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_mus_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mus_1_v[290], 4, 0), +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 252, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&mus_1_v[294], 24, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 0, 4, // tri0 + 1, 5, 0, // tri1 + 1, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 2, 3, 8, // tri0 + 2, 9, 10, // tri1 + 1, 2, 11, // tri2 + 0, 13, 12 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 14, 15, 16, // tri0 + 17, 14, 16, // tri1 + 16, 18, 17 // tri2 +), +gsSPNTriangles_5b( + 19, 20, 21, // tri0 + 18, 22, 23, // tri1 + 21, 24, 19, // tri2 + 18, 23, 17 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 252, 124), +gsSPNTrianglesInit_5b( + 1, // tri count + 25, 26, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx base_mus_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 252, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&mus_1_v[370], 14, 0), +gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 9, 5, 4, // tri0 + 10, 4, 0, // tri1 + 10, 9, 4, // tri2 + 7, 11, 12 // tri3 +), +gsSPNTriangles_5b( + 8, 7, 13, // tri0 + 2, 10, 0, // tri1 + 2, 1, 6, // tri2 + 6, 8, 2 // tri3 +), +gsSPNTriangles_5b( + 7, 12, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_mus_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_mus_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_mus_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_mus_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_mus_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_mus_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 100,0,-700 }, + /* joint 11 */ { tail1_mus_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_mus_model, 0, cKF_JOINT_FLAG_DISP_OPA, 1200,0,0 }, + /* joint 13 */ { chest_mus_model, 3, cKF_JOINT_FLAG_DISP_OPA, 525,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 650,-450,0 }, + /* joint 15 */ { Larm1_mus_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_mus_model, 0, cKF_JOINT_FLAG_DISP_OPA, 600,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 650,450,0 }, + /* joint 18 */ { Rarm1_mus_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_mus_model, 1, cKF_JOINT_FLAG_DISP_OPA, 600,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 600,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 925,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 1700,0,2200 }, + /* joint 23 */ { mouth_mus_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_mus_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 2050,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_mus_1 = { 26, 14, cKF_je_r_mus_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/oct_1.c b/src/data/npc/model/mdl/oct_1.c new file mode 100644 index 00000000..3f95ea2c --- /dev/null +++ b/src/data/npc/model/mdl/oct_1.c @@ -0,0 +1,828 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx oct_1_v[] = { +#include "assets/npc/mdl/oct_1_v.inc" +}; + +static Gfx head_oct_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&oct_1_v[0], 19, 0), +gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 6, 0 // tri2 +), +gsSPNTriangles_5b( + 7, 8, 4, // tri0 + 9, 10, 7, // tri1 + 10, 2, 1, // tri2 + 5, 11, 3 // tri3 +), +gsSPNTriangles_5b( + 9, 2, 10, // tri0 + 7, 3, 9, // tri1 + 1, 12, 10, // tri2 + 4, 3, 7 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 4, // tri count + 13, 14, 15, // tri0 + 13, 15, 16, // tri1 + 15, 17, 18 // tri2 +), +gsSPNTriangles_5b( + 15, 18, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&oct_1_v[19], 32, 0), +gsSPNTrianglesInit_5b( + 37, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 5 // tri2 +), +gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 8, 10, 11, // tri1 + 12, 13, 14, // tri2 + 2, 15, 0 // tri3 +), +gsSPNTriangles_5b( + 2, 16, 17, // tri0 + 18, 16, 1, // tri1 + 19, 20, 7, // tri2 + 16, 2, 1 // tri3 +), +gsSPNTriangles_5b( + 21, 22, 20, // tri0 + 1, 0, 23, // tri1 + 3, 16, 18, // tri2 + 21, 0, 15 // tri3 +), +gsSPNTriangles_5b( + 21, 15, 22, // tri0 + 17, 7, 20, // tri1 + 24, 12, 25, // tri2 + 16, 5, 17 // tri3 +), +gsSPNTriangles_5b( + 5, 7, 17, // tri0 + 17, 22, 15, // tri1 + 25, 12, 26, // tri2 + 20, 22, 17 // tri3 +), +gsSPNTriangles_5b( + 13, 21, 19, // tri0 + 19, 7, 27, // tri1 + 14, 13, 19, // tri2 + 15, 2, 17 // tri3 +), +gsSPNTriangles_5b( + 12, 24, 28, // tri0 + 14, 26, 12, // tri1 + 13, 12, 23, // tri2 + 3, 29, 30 // tri3 +), +gsSPNTriangles_5b( + 11, 6, 31, // tri0 + 11, 31, 8, // tri1 + 29, 3, 10, // tri2 + 1, 23, 28 // tri3 +), +gsSPNTriangles_5b( + 28, 23, 12, // tri0 + 4, 3, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&oct_1_v[51], 19, 0), +gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 4, 0 // tri2 +), +gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 3, 2, // tri2 + 11, 12, 13 // tri3 +), +gsSPNTriangles_5b( + 11, 13, 14, // tri0 + 15, 16, 2, // tri1 + 17, 18, 13, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_oct_model[] = { +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&oct_1_v[117], 5, 0), +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 60), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&oct_1_v[122], 25, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 5, 3, // tri0 + 2, 7, 6, // tri1 + 0, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 10, // tri0 + 2, 1, 11, // tri1 + 4, 12, 0, // tri2 + 0, 14, 13 // tri3 +), +gsSPNTriangles_5b( + 2, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 14, // tri count + 17, 18, 19, // tri0 + 20, 21, 22, // tri1 + 20, 23, 24 // tri2 +), +gsSPNTriangles_5b( + 19, 22, 21, // tri0 + 22, 23, 20, // tri1 + 19, 18, 25, // tri2 + 25, 23, 22 // tri3 +), +gsSPNTriangles_5b( + 26, 27, 28, // tri0 + 21, 20, 27, // tri1 + 27, 20, 24, // tri2 + 29, 21, 27 // tri3 +), +gsSPNTriangles_5b( + 19, 21, 29, // tri0 + 25, 22, 19, // tri1 + 24, 28, 27, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_oct_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&oct_1_v[147], 4, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 60), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&oct_1_v[151], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 5, 4, // tri0 + 3, 7, 6, // tri1 + 2, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 3, 2, 10, // tri0 + 2, 0, 11, // tri1 + 1, 3, 12, // tri2 + 1, 13, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_oct_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&oct_1_v[70], 5, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 60), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&oct_1_v[75], 14, 5), +gsSPNTrianglesInit_5b( + 9, // tri count + 3, 5, 2, // tri0 + 2, 7, 6, // tri1 + 0, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 0, 1, 10, // tri0 + 1, 2, 11, // tri1 + 0, 12, 4, // tri2 + 0, 14, 13 // tri3 +), +gsSPNTriangles_5b( + 2, 15, 16, // tri0 + 2, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&oct_1_v[89], 13, 0), +gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 5 // tri2 +), +gsSPNTriangles_5b( + 4, 3, 0, // tri0 + 5, 7, 3, // tri1 + 8, 1, 0, // tri2 + 3, 7, 8 // tri3 +), +gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 10, 5, 4, // tri1 + 6, 5, 10, // tri2 + 12, 4, 0 // tri3 +), +gsSPNTriangles_5b( + 0, 3, 8, // tri0 + 10, 9, 6, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_oct_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&oct_1_v[102], 4, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 60), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&oct_1_v[106], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 5, 4, // tri0 + 3, 7, 6, // tri1 + 2, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 3, 10, // tri0 + 0, 2, 11, // tri1 + 3, 1, 12, // tri2 + 1, 13, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_oct_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&oct_1_v[162], 7, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&oct_1_v[169], 20, 7), +gsSPNTrianglesInit_5b( + 13, // tri count + 3, 1, 7, // tri0 + 6, 8, 9, // tri1 + 3, 10, 11 // tri2 +), +gsSPNTriangles_5b( + 2, 12, 0, // tri0 + 2, 13, 14, // tri1 + 1, 16, 15, // tri2 + 0, 17, 18 // tri3 +), +gsSPNTriangles_5b( + 0, 19, 20, // tri0 + 1, 21, 22, // tri1 + 6, 3, 23, // tri2 + 2, 6, 24 // tri3 +), +gsSPNTriangles_5b( + 4, 0, 25, // tri0 + 5, 26, 1, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&oct_1_v[189], 9, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 0, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 4, 3, 7, // tri0 + 2, 5, 0, // tri1 + 1, 8, 2, // tri2 + 6, 3, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot3_oct_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&oct_1_v[329], 12, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000180, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&oct_1_v[341], 10, 12), +gsSPNTrianglesInit_5b( + 7, // tri count + 1, 12, 13, // tri0 + 0, 1, 14, // tri1 + 3, 15, 16 // tri2 +), +gsSPNTriangles_5b( + 2, 17, 3, // tri0 + 2, 18, 19, // tri1 + 1, 3, 20, // tri2 + 2, 0, 21 // tri3 +), +gsSPVertex(&oct_1_v[351], 10, 12), +gsSPNTrianglesInit_5b( + 7, // tri count + 4, 12, 6, // tri0 + 6, 13, 14, // tri1 + 6, 15, 7 // tri2 +), +gsSPNTriangles_5b( + 7, 16, 17, // tri0 + 4, 18, 19, // tri1 + 4, 5, 20, // tri2 + 5, 7, 21 // tri3 +), +gsSPVertex(&oct_1_v[361], 19, 12), +gsSPNTrianglesInit_5b( + 7, // tri count + 11, 12, 8, // tri0 + 8, 13, 14, // tri1 + 11, 15, 16 // tri2 +), +gsSPNTriangles_5b( + 11, 10, 17, // tri0 + 10, 9, 18, // tri1 + 9, 19, 20, // tri2 + 8, 21, 9 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 22, 23, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 25, 26, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 28, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_oct_model[] = { +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&oct_1_v[380], 12, 0), +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000180, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&oct_1_v[392], 12, 12), +gsSPNTrianglesInit_5b( + 8, // tri count + 1, 13, 12, // tri0 + 9, 14, 15, // tri1 + 9, 16, 17 // tri2 +), +gsSPNTriangles_5b( + 1, 18, 19, // tri0 + 0, 9, 20, // tri1 + 9, 6, 21, // tri2 + 1, 0, 22 // tri3 +), +gsSPNTriangles_5b( + 6, 1, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&oct_1_v[404], 12, 12), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 3, 12, // tri0 + 3, 13, 14, // tri1 + 8, 15, 16 // tri2 +), +gsSPNTriangles_5b( + 11, 17, 18, // tri0 + 11, 8, 19, // tri1 + 3, 11, 20, // tri2 + 8, 2, 21 // tri3 +), +gsSPNTriangles_5b( + 11, 23, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&oct_1_v[416], 12, 12), +gsSPNTrianglesInit_5b( + 8, // tri count + 5, 7, 12, // tri0 + 4, 13, 14, // tri1 + 4, 5, 15 // tri2 +), +gsSPNTriangles_5b( + 7, 10, 16, // tri0 + 7, 17, 18, // tri1 + 10, 4, 19, // tri2 + 4, 20, 21 // tri3 +), +gsSPNTriangles_5b( + 7, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_oct_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&oct_1_v[428], 4, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&oct_1_v[432], 26, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 2, 4, 5, // tri0 + 1, 6, 7, // tri1 + 3, 2, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 1, 9, // tri0 + 0, 11, 10, // tri1 + 0, 12, 1, // tri2 + 0, 3, 13 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 14, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000180, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 13, // tri count + 17, 18, 19, // tri0 + 17, 19, 20, // tri1 + 20, 21, 22 // tri2 +), +gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 25, 26, 23, // tri1 + 27, 28, 29, // tri2 + 29, 24, 27 // tri3 +), +gsSPNTriangles_5b( + 24, 23, 27, // tri0 + 18, 26, 25, // tri1 + 29, 28, 21, // tri2 + 20, 22, 17 // tri3 +), +gsSPNTriangles_5b( + 20, 29, 21, // tri0 + 25, 19, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot3_oct_model[] = { +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&oct_1_v[198], 12, 0), +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000180, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&oct_1_v[210], 10, 12), +gsSPNTrianglesInit_5b( + 7, // tri count + 1, 12, 13, // tri0 + 1, 0, 14, // tri1 + 3, 15, 16 // tri2 +), +gsSPNTriangles_5b( + 3, 17, 2, // tri0 + 2, 18, 19, // tri1 + 3, 1, 20, // tri2 + 0, 2, 21 // tri3 +), +gsSPVertex(&oct_1_v[220], 10, 12), +gsSPNTrianglesInit_5b( + 7, // tri count + 6, 12, 4, // tri0 + 6, 13, 14, // tri1 + 7, 15, 6 // tri2 +), +gsSPNTriangles_5b( + 7, 16, 17, // tri0 + 4, 18, 19, // tri1 + 5, 4, 20, // tri2 + 7, 5, 21 // tri3 +), +gsSPVertex(&oct_1_v[230], 19, 12), +gsSPNTrianglesInit_5b( + 7, // tri count + 8, 12, 11, // tri0 + 8, 13, 14, // tri1 + 11, 15, 16 // tri2 +), +gsSPNTriangles_5b( + 10, 11, 17, // tri0 + 9, 10, 18, // tri1 + 9, 19, 20, // tri2 + 9, 21, 8 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 22, 23, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 25, 26, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 28, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_oct_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&oct_1_v[249], 12, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000180, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&oct_1_v[261], 12, 12), +gsSPNTrianglesInit_5b( + 8, // tri count + 1, 13, 12, // tri0 + 9, 14, 15, // tri1 + 9, 16, 17 // tri2 +), +gsSPNTriangles_5b( + 1, 18, 19, // tri0 + 9, 0, 20, // tri1 + 6, 9, 21, // tri2 + 0, 1, 22 // tri3 +), +gsSPNTriangles_5b( + 1, 6, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&oct_1_v[273], 12, 12), +gsSPNTrianglesInit_5b( + 8, // tri count + 3, 2, 12, // tri0 + 3, 13, 14, // tri1 + 8, 15, 16 // tri2 +), +gsSPNTriangles_5b( + 11, 17, 18, // tri0 + 8, 11, 19, // tri1 + 11, 3, 20, // tri2 + 2, 8, 21 // tri3 +), +gsSPNTriangles_5b( + 11, 23, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&oct_1_v[285], 12, 12), +gsSPNTrianglesInit_5b( + 8, // tri count + 7, 5, 12, // tri0 + 4, 13, 14, // tri1 + 5, 4, 15 // tri2 +), +gsSPNTriangles_5b( + 10, 7, 16, // tri0 + 7, 17, 18, // tri1 + 4, 10, 19, // tri2 + 4, 20, 21 // tri3 +), +gsSPNTriangles_5b( + 7, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_oct_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&oct_1_v[297], 6, 0), +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&oct_1_v[303], 13, 6), +gsSPNTrianglesInit_5b( + 7, // tri count + 4, 0, 6, // tri0 + 1, 7, 0, // tri1 + 0, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 1, 2, 10, // tri0 + 3, 11, 12, // tri1 + 1, 13, 14, // tri2 + 3, 5, 15 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 16, 17, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000180, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&oct_1_v[316], 13, 0), +gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 3, 5, 8, // tri0 + 2, 9, 0, // tri1 + 9, 2, 6, // tri2 + 8, 9, 6 // tri3 +), +gsSPNTriangles_5b( + 7, 3, 8, // tri0 + 0, 10, 11, // tri1 + 11, 1, 0, // tri2 + 5, 4, 12 // tri3 +), +gsSPNTriangles_5b( + 12, 10, 5, // tri0 + 12, 11, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx base_oct_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&oct_1_v[458], 14, 0), +gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 9, 5, 4, // tri0 + 10, 4, 0, // tri1 + 10, 9, 4, // tri2 + 7, 11, 12 // tri3 +), +gsSPNTriangles_5b( + 8, 7, 13, // tri0 + 2, 10, 0, // tri1 + 2, 1, 6, // tri2 + 6, 8, 2 // tri3 +), +gsSPNTriangles_5b( + 7, 12, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_oct_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_oct_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_oct_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_oct_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { Lfoot3_oct_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_oct_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_oct_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { Rfoot3_oct_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 75,0,-475 }, + /* joint 11 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_oct_model, 3, cKF_JOINT_FLAG_DISP_OPA, 325,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 450,-450,0 }, + /* joint 15 */ { Larm1_oct_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_oct_model, 0, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 450,450,0 }, + /* joint 18 */ { Rarm1_oct_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_oct_model, 1, cKF_JOINT_FLAG_DISP_OPA, 551,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 575,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,600 }, + /* joint 23 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_oct_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1400,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_oct_1 = { 26, 13, cKF_je_r_oct_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/ost_1.c b/src/data/npc/model/mdl/ost_1.c new file mode 100644 index 00000000..22d56684 --- /dev/null +++ b/src/data/npc/model/mdl/ost_1.c @@ -0,0 +1,801 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx ost_1_v[] = { +#include "assets/npc/mdl/ost_1_v.inc" +}; + +static Gfx head_ost_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&ost_1_v[12], 8, 0), +gsSPMatrix(0x0D000380, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&ost_1_v[20], 21, 8), +gsSPNTrianglesInit_5b( + 4, // tri count + 4, 6, 8, // tri0 + 6, 1, 9, // tri1 + 6, 10, 11 // tri2 +), +gsSPNTriangles_5b( + 6, 12, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 2, 14, // tri0 + 3, 15, 16, // tri1 + 2, 17, 18 // tri2 +), +gsSPNTriangles_5b( + 5, 19, 20, // tri0 + 5, 3, 21, // tri1 + 0, 22, 23, // tri2 + 7, 5, 24 // tri3 +), +gsSPNTriangles_5b( + 2, 7, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 60), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 26, 27, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPVertex(&ost_1_v[41], 21, 0), +gsSPNTrianglesInit_5b( + 1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 3, 4, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 16, // tri count + 6, 7, 8, // tri0 + 8, 7, 9, // tri1 + 9, 10, 8 // tri2 +), +gsSPNTriangles_5b( + 8, 11, 6, // tri0 + 12, 6, 11, // tri1 + 13, 14, 7, // tri2 + 15, 9, 16 // tri3 +), +gsSPNTriangles_5b( + 17, 18, 6, // tri0 + 9, 19, 16, // tri1 + 10, 9, 15, // tri2 + 20, 6, 18 // tri3 +), +gsSPNTriangles_5b( + 17, 6, 12, // tri0 + 9, 7, 14, // tri1 + 20, 7, 6, // tri2 + 19, 9, 14 // tri3 +), +gsSPNTriangles_5b( + 7, 20, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&ost_1_v[62], 31, 0), +gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 3 // tri2 +), +gsSPNTriangles_5b( + 1, 3, 6, // tri0 + 7, 2, 1, // tri1 + 8, 4, 2, // tri2 + 9, 8, 2 // tri3 +), +gsSPNTriangles_5b( + 3, 10, 11, // tri0 + 4, 0, 2, // tri1 + 12, 9, 2, // tri2 + 3, 11, 5 // tri3 +), +gsSPNTriangles_5b( + 4, 10, 3, // tri0 + 2, 7, 12, // tri1 + 3, 1, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 22, // tri count + 13, 14, 15, // tri0 + 16, 17, 18, // tri1 + 19, 14, 13 // tri2 +), +gsSPNTriangles_5b( + 18, 17, 20, // tri0 + 21, 22, 23, // tri1 + 17, 16, 22, // tri2 + 23, 22, 16 // tri3 +), +gsSPNTriangles_5b( + 24, 25, 26, // tri0 + 21, 27, 22, // tri1 + 20, 28, 24, // tri2 + 29, 25, 24 // tri3 +), +gsSPNTriangles_5b( + 21, 13, 15, // tri0 + 24, 28, 27, // tri1 + 24, 27, 15, // tri2 + 15, 14, 29 // tri3 +), +gsSPNTriangles_5b( + 29, 24, 15, // tri0 + 15, 27, 21, // tri1 + 24, 26, 20, // tri2 + 26, 25, 30 // tri3 +), +gsSPNTriangles_5b( + 22, 27, 28, // tri0 + 22, 28, 17, // tri1 + 17, 28, 20, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&ost_1_v[93], 10, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 0, 7, 8, // tri0 + 9, 7, 0, // tri1 + 0, 2, 9, // tri2 + 8, 1, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx mouth_ost_model[] = { +gsSPMatrix(0x0D000380, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&ost_1_v[0], 5, 0), +gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&ost_1_v[5], 7, 5), +gsSPNTrianglesInit_5b( + 5, // tri count + 2, 0, 5, // tri0 + 3, 7, 6, // tri1 + 2, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 0, 3, 10, // tri0 + 4, 1, 11, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_ost_model[] = { +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&ost_1_v[134], 4, 0), +gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&ost_1_v[138], 15, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 1, 3, 6, // tri1 + 3, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 9, 10, // tri0 + 2, 11, 0, // tri1 + 3, 12, 13, // tri2 + 3, 0, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 15, 16, 17, // tri0 + 18, 15, 17, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_ost_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&ost_1_v[153], 3, 0), +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&ost_1_v[156], 9, 3), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 3, // tri0 + 2, 0, 4, // tri1 + 0, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 1, 7, 8, // tri0 + 1, 2, 9, // tri1 + 2, 10, 11, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_ost_model[] = { +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&ost_1_v[103], 4, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&ost_1_v[107], 15, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 3, 1, 6, // tri1 + 3, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 0, 9, 10, // tri0 + 0, 11, 2, // tri1 + 3, 12, 13, // tri2 + 0, 3, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 15, 16, 17, // tri0 + 15, 17, 18, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_ost_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&ost_1_v[122], 3, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&ost_1_v[125], 9, 3), +gsSPNTrianglesInit_5b( + 6, // tri count + 1, 0, 3, // tri0 + 0, 2, 4, // tri1 + 0, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 1, 7, 8, // tri0 + 2, 1, 9, // tri1 + 2, 10, 11, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_ost_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&ost_1_v[165], 9, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&ost_1_v[174], 20, 9), +gsSPNTrianglesInit_5b( + 14, // tri count + 1, 10, 9, // tri0 + 0, 11, 12, // tri1 + 0, 8, 13 // tri2 +), +gsSPNTriangles_5b( + 8, 2, 14, // tri0 + 1, 0, 15, // tri1 + 3, 1, 16, // tri2 + 7, 17, 18 // tri3 +), +gsSPNTriangles_5b( + 8, 19, 20, // tri0 + 2, 7, 21, // tri1 + 7, 6, 22, // tri2 + 4, 23, 5 // tri3 +), +gsSPNTriangles_5b( + 6, 5, 24, // tri0 + 5, 25, 26, // tri1 + 6, 28, 27, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&ost_1_v[194], 25, 0), +gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 6, 0 // tri2 +), +gsSPNTriangles_5b( + 5, 7, 3, // tri0 + 5, 8, 9, // tri1 + 5, 9, 10, // tri2 + 11, 0, 12 // tri3 +), +gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 8, 14, 15, // tri1 + 8, 15, 9, // tri2 + 14, 11, 13 // tri3 +), +gsSPNTriangles_5b( + 14, 13, 15, // tri0 + 7, 5, 10, // tri1 + 7, 10, 16, // tri2 + 0, 6, 17 // tri3 +), +gsSPNTriangles_5b( + 0, 17, 12, // tri0 + 18, 19, 11, // tri1 + 18, 14, 8, // tri2 + 1, 20, 2 // tri3 +), +gsSPNTriangles_5b( + 3, 21, 4, // tri0 + 19, 1, 22, // tri1 + 23, 24, 4, // tri2 + 8, 24, 23 // tri3 +), +gsSPNTriangles_5b( + 4, 24, 5, // tri0 + 0, 22, 1, // tri1 + 22, 11, 19, // tri2 + 8, 23, 18 // tri3 +), +gsSPNTriangles_5b( + 11, 14, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail_ost_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&ost_1_v[219], 4, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&ost_1_v[223], 20, 4), +gsSPNTrianglesInit_5b( + 3, // tri count + 0, 4, 5, // tri0 + 1, 6, 7, // tri1 + 1, 8, 9 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 2, // tri count + 0, 3, 10, // tri0 + 2, 0, 11, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 0, 12, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 6, // tri count + 3, 1, 14, // tri0 + 1, 15, 16, // tri1 + 0, 17, 18 // tri2 +), +gsSPNTriangles_5b( + 1, 2, 19, // tri0 + 1, 20, 21, // tri1 + 0, 22, 23, // tri2 + 0, 0, 0 // tri3 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&ost_1_v[243], 21, 0), +gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 2, 4, 0 // tri2 +), +gsSPNTriangles_5b( + 3, 5, 6, // tri0 + 7, 8, 4, // tri1 + 2, 9, 7, // tri2 + 10, 7, 9 // tri3 +), +gsSPNTriangles_5b( + 10, 8, 7, // tri0 + 6, 11, 9, // tri1 + 1, 5, 3, // tri2 + 3, 9, 2 // tri3 +), +gsSPNTriangles_5b( + 7, 4, 2, // tri0 + 9, 11, 10, // tri1 + 9, 3, 6, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 8, // tri count + 12, 13, 14, // tri0 + 14, 13, 15, // tri1 + 14, 16, 12 // tri2 +), +gsSPNTriangles_5b( + 17, 18, 16, // tri0 + 14, 19, 17, // tri1 + 13, 20, 15, // tri2 + 15, 19, 14 // tri3 +), +gsSPNTriangles_5b( + 17, 16, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot3_ost_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&ost_1_v[314], 4, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0004C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&ost_1_v[318], 20, 4), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 3, 4, // tri0 + 1, 0, 5, // tri1 + 3, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 2, 8, 9, // tri0 + 2, 10, 3, // tri1 + 1, 11, 12, // tri2 + 0, 0, 0 // tri3 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 6, // tri count + 13, 14, 15, // tri0 + 13, 16, 14, // tri1 + 13, 17, 18 // tri2 +), +gsSPNTriangles_5b( + 13, 19, 17, // tri0 + 15, 19, 13, // tri1 + 18, 20, 13, // tri2 + 0, 0, 0 // tri3 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 21, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_ost_model[] = { +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&ost_1_v[338], 4, 0), +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0004C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&ost_1_v[342], 14, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 1, 6, 7, // tri1 + 3, 0, 8 // tri2 +), +gsSPNTriangles_5b( + 0, 2, 9, // tri0 + 2, 10, 11, // tri1 + 1, 3, 12, // tri2 + 3, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_ost_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0004C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&ost_1_v[356], 8, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 1, 0, 3, // tri1 + 2, 4, 0 // tri2 +), +gsSPNTriangles_5b( + 5, 6, 4, // tri0 + 5, 4, 2, // tri1 + 3, 7, 1, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot3_ost_model[] = { +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&ost_1_v[264], 4, 0), +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0004C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&ost_1_v[268], 20, 4), +gsSPNTrianglesInit_5b( + 6, // tri count + 3, 0, 4, // tri0 + 0, 1, 5, // tri1 + 3, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 3, 8, 9, // tri0 + 3, 10, 2, // tri1 + 1, 11, 12, // tri2 + 0, 0, 0 // tri3 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 6, // tri count + 13, 14, 15, // tri0 + 14, 16, 15, // tri1 + 17, 18, 15 // tri2 +), +gsSPNTriangles_5b( + 18, 19, 15, // tri0 + 15, 19, 13, // tri1 + 15, 20, 17, // tri2 + 0, 0, 0 // tri3 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 21, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_ost_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&ost_1_v[288], 4, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0004C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&ost_1_v[292], 14, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 1, 6, 7, // tri1 + 0, 3, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 0, 9, // tri0 + 2, 10, 11, // tri1 + 3, 1, 12, // tri2 + 3, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_ost_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0004C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&ost_1_v[306], 8, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 2, 4, 0 // tri2 +), +gsSPNTriangles_5b( + 0, 4, 5, // tri0 + 0, 5, 6, // tri1 + 1, 7, 3, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx base_ost_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&ost_1_v[364], 17, 0), +gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 5 // tri2 +), +gsSPNTriangles_5b( + 4, 8, 9, // tri0 + 0, 9, 10, // tri1 + 9, 8, 11, // tri2 + 12, 10, 11 // tri3 +), +gsSPNTriangles_5b( + 2, 5, 9, // tri0 + 4, 3, 13, // tri1 + 4, 13, 14, // tri2 + 14, 13, 15 // tri3 +), +gsSPNTriangles_5b( + 4, 9, 5, // tri0 + 11, 10, 9, // tri1 + 14, 8, 4, // tri2 + 2, 1, 6 // tri3 +), +gsSPNTriangles_5b( + 6, 5, 2, // tri0 + 6, 1, 16, // tri1 + 16, 7, 6, // tri2 + 2, 9, 0 // tri3 +), +gsSPNTriangles_5b( + 5, 7, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_ost_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_ost_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-275,0 }, + /* joint 3 */ { Lfoot1_ost_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_ost_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { Lfoot3_ost_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,275,0 }, + /* joint 7 */ { Rfoot1_ost_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_ost_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { Rfoot3_ost_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,-650 }, + /* joint 11 */ { tail_ost_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_ost_model, 3, cKF_JOINT_FLAG_DISP_OPA, 325,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,-550,150 }, + /* joint 15 */ { Larm1_ost_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_ost_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,550,150 }, + /* joint 18 */ { Rarm1_ost_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_ost_model, 1, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 976,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 1100,0,1150 }, + /* joint 23 */ { mouth_ost_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_ost_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1399,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_ost_1 = { 26, 15, cKF_je_r_ost_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/owl_1.c b/src/data/npc/model/mdl/owl_1.c new file mode 100644 index 00000000..b135c0f7 --- /dev/null +++ b/src/data/npc/model/mdl/owl_1.c @@ -0,0 +1,866 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx owl_1_v[] = { +#include "assets/npc/mdl/owl_1_v.inc" +}; + +static Gfx head_owl_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&owl_1_v[14], 9, 0), +gsSPMatrix(0x0D000380, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&owl_1_v[23], 21, 9), +gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 9, // tri0 + 1, 11, 10, // tri1 + 4, 2, 12 // tri2 +), +gsSPNTriangles_5b( + 2, 14, 13, // tri0 + 7, 0, 15, // tri1 + 0, 17, 16, // tri2 + 1, 4, 18 // tri3 +), +gsSPNTriangles_5b( + 4, 20, 19, // tri0 + 5, 7, 21, // tri1 + 7, 23, 22, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 32, 8, 15, GX_MIRROR, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 252, 28), +gsDPSetPrimColor(0, 128, 255, 250, 255, 255), +gsSPNTrianglesInit_5b( + 4, // tri count + 3, 8, 24, // tri0 + 8, 6, 25, // tri1 + 6, 27, 26 // tri2 +), +gsSPNTriangles_5b( + 8, 29, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&owl_1_v[44], 30, 0), +gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 4, 5, 6, // tri0 + 6, 7, 4, // tri1 + 0, 0, 0 // tri2 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 252, 60), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 24, // tri count + 8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 11, 13, 14 // tri2 +), +gsSPNTriangles_5b( + 15, 14, 13, // tri0 + 12, 16, 17, // tri1 + 12, 17, 13, // tri2 + 18, 19, 20 // tri3 +), +gsSPNTriangles_5b( + 17, 21, 8, // tri0 + 12, 11, 22, // tri1 + 20, 23, 16, // tri2 + 24, 25, 23 // tri3 +), +gsSPNTriangles_5b( + 26, 9, 8, // tri0 + 16, 12, 20, // tri1 + 8, 13, 17, // tri2 + 21, 27, 28 // tri3 +), +gsSPNTriangles_5b( + 20, 19, 29, // tri0 + 20, 29, 24, // tri1 + 28, 26, 8, // tri2 + 28, 8, 21 // tri3 +), +gsSPNTriangles_5b( + 23, 20, 24, // tri0 + 10, 13, 8, // tri1 + 20, 12, 18, // tri2 + 22, 18, 12 // tri3 +), +gsSPNTriangles_5b( + 13, 10, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&owl_1_v[74], 32, 0), +gsSPNTrianglesInit_5b( + 46, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 11, 2, 12, // tri2 + 8, 6, 13 // tri3 +), +gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 17, 18, 16, // tri1 + 2, 1, 19, // tri2 + 19, 1, 7 // tri3 +), +gsSPNTriangles_5b( + 19, 7, 20, // tri0 + 15, 14, 21, // tri1 + 22, 23, 14, // tri2 + 19, 24, 17 // tri3 +), +gsSPNTriangles_5b( + 20, 7, 6, // tri0 + 25, 26, 12, // tri1 + 14, 18, 22, // tri2 + 20, 8, 27 // tri3 +), +gsSPNTriangles_5b( + 18, 17, 24, // tri0 + 24, 19, 20, // tri1 + 24, 20, 28, // tri2 + 23, 22, 28 // tri3 +), +gsSPNTriangles_5b( + 22, 24, 28, // tri0 + 24, 22, 18, // tri1 + 28, 27, 23, // tri2 + 29, 21, 14 // tri3 +), +gsSPNTriangles_5b( + 16, 18, 14, // tri0 + 14, 23, 29, // tri1 + 27, 10, 29, // tri2 + 13, 9, 8 // tri3 +), +gsSPNTriangles_5b( + 12, 26, 11, // tri0 + 6, 8, 20, // tri1 + 19, 12, 2, // tri2 + 29, 23, 27 // tri3 +), +gsSPNTriangles_5b( + 16, 25, 17, // tri0 + 12, 17, 25, // tri1 + 17, 12, 19, // tri2 + 27, 28, 20 // tri3 +), +gsSPNTriangles_5b( + 10, 27, 8, // tri0 + 4, 7, 1, // tri1 + 4, 1, 0, // tri2 + 3, 2, 11 // tri3 +), +gsSPNTriangles_5b( + 11, 30, 3, // tri0 + 13, 6, 5, // tri1 + 5, 31, 13, // tri2 + 0, 0, 0 // tri3 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&owl_1_v[106], 17, 0), +gsSPNTrianglesInit_5b( + 1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 3, // tri count + 3, 4, 5, // tri0 + 5, 6, 3, // tri1 + 3, 7, 4 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 32, 8, 15, GX_MIRROR, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 252, 28), +gsDPSetPrimColor(0, 128, 255, 250, 255, 255), +gsSPNTrianglesInit_5b( + 7, // tri count + 8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 14, 15, 9 // tri2 +), +gsSPNTriangles_5b( + 14, 9, 8, // tri0 + 11, 13, 14, // tri1 + 16, 12, 11, // tri2 + 14, 13, 15 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx mouth_owl_model[] = { +gsSPMatrix(0x0D000380, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&owl_1_v[0], 6, 0), +gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&owl_1_v[6], 8, 6), +gsSPNTrianglesInit_5b( + 1, // tri count + 2, 3, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 5, // tri count + 1, 5, 7, // tri0 + 4, 0, 8, // tri1 + 0, 1, 9 // tri2 +), +gsSPNTriangles_5b( + 1, 10, 11, // tri0 + 0, 12, 13, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_owl_model[] = { +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&owl_1_v[174], 6, 0), +gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&owl_1_v[180], 25, 6), +gsSPNTrianglesInit_5b( + 9, // tri count + 4, 6, 7, // tri0 + 0, 2, 8, // tri1 + 5, 4, 9 // tri2 +), +gsSPNTriangles_5b( + 3, 5, 10, // tri0 + 0, 11, 12, // tri1 + 4, 1, 13, // tri2 + 0, 14, 15 // tri3 +), +gsSPNTriangles_5b( + 3, 16, 17, // tri0 + 4, 18, 19, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 20, 21, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 3, // tri count + 23, 24, 25, // tri0 + 26, 27, 23, // tri1 + 23, 25, 26 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 28, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPVertex(&owl_1_v[205], 6, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 3, 4, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_owl_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&owl_1_v[211], 3, 0), +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&owl_1_v[214], 11, 3), +gsSPNTrianglesInit_5b( + 7, // tri count + 1, 2, 3, // tri0 + 0, 4, 5, // tri1 + 2, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 2, 10, 11, // tri1 + 0, 1, 12, // tri2 + 2, 0, 13 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_owl_model[] = { +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&owl_1_v[123], 6, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&owl_1_v[129], 25, 6), +gsSPNTrianglesInit_5b( + 9, // tri count + 4, 6, 7, // tri0 + 2, 0, 8, // tri1 + 4, 5, 9 // tri2 +), +gsSPNTriangles_5b( + 5, 3, 10, // tri0 + 0, 11, 12, // tri1 + 1, 4, 13, // tri2 + 0, 14, 15 // tri3 +), +gsSPNTriangles_5b( + 3, 16, 17, // tri0 + 4, 18, 19, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 20, 21, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 3, // tri count + 23, 24, 25, // tri0 + 25, 26, 27, // tri1 + 27, 23, 25 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 28, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPVertex(&owl_1_v[154], 6, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 3, 4, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_owl_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&owl_1_v[160], 3, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&owl_1_v[163], 11, 3), +gsSPNTrianglesInit_5b( + 7, // tri count + 2, 1, 3, // tri0 + 0, 4, 5, // tri1 + 2, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 2, 10, 11, // tri1 + 1, 0, 12, // tri2 + 0, 2, 13 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_owl_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&owl_1_v[225], 9, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 252, 255, 255), +gsSPVertex(&owl_1_v[234], 23, 9), +gsSPNTrianglesInit_5b( + 14, // tri count + 3, 8, 9, // tri0 + 7, 2, 10, // tri1 + 7, 11, 12 // tri2 +), +gsSPNTriangles_5b( + 6, 13, 14, // tri0 + 4, 15, 16, // tri1 + 2, 5, 17, // tri2 + 6, 18, 19 // tri3 +), +gsSPNTriangles_5b( + 0, 20, 21, // tri0 + 1, 22, 23, // tri1 + 8, 24, 25, // tri2 + 0, 7, 26 // tri3 +), +gsSPNTriangles_5b( + 1, 6, 27, // tri0 + 2, 28, 29, // tri1 + 3, 30, 31, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&owl_1_v[257], 5, 9), +gsSPNTrianglesInit_5b( + 4, // tri count + 4, 3, 9, // tri0 + 5, 10, 11, // tri1 + 8, 1, 12 // tri2 +), +gsSPNTriangles_5b( + 6, 0, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&owl_1_v[262], 21, 0), +gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 11, 8, 10, // tri1 + 10, 9, 12, // tri2 + 13, 12, 14 // tri3 +), +gsSPNTriangles_5b( + 10, 12, 13, // tri0 + 2, 15, 0, // tri1 + 16, 8, 17, // tri2 + 14, 12, 15 // tri3 +), +gsSPNTriangles_5b( + 18, 17, 11, // tri0 + 13, 14, 19, // tri1 + 1, 0, 7, // tri2 + 20, 5, 4 // tri3 +), +gsSPNTriangles_5b( + 5, 16, 3, // tri0 + 17, 3, 16, // tri1 + 15, 2, 14, // tri2 + 17, 8, 11 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail1_owl_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&owl_1_v[283], 5, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&owl_1_v[288], 16, 5), +gsSPNTrianglesInit_5b( + 3, // tri count + 2, 4, 5, // tri0 + 4, 3, 6, // tri1 + 3, 1, 7 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 2, // tri count + 2, 8, 9, // tri0 + 1, 10, 11, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 2, // tri count + 1, 0, 12, // tri0 + 0, 2, 13, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 6, // tri count + 14, 15, 16, // tri0 + 16, 15, 17, // tri1 + 16, 18, 14 // tri2 +), +gsSPNTriangles_5b( + 16, 19, 20, // tri0 + 17, 19, 16, // tri1 + 20, 18, 16, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot3_owl_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&owl_1_v[354], 4, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0005C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&owl_1_v[358], 20, 4), +gsSPNTrianglesInit_5b( + 6, // tri count + 1, 4, 5, // tri0 + 1, 6, 3, // tri1 + 3, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 0, 9, // tri0 + 0, 3, 10, // tri1 + 2, 11, 12, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 1, // tri count + 13, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 6, // tri count + 16, 17, 18, // tri0 + 18, 17, 19, // tri1 + 18, 19, 20 // tri2 +), +gsSPNTriangles_5b( + 18, 21, 22, // tri0 + 18, 22, 16, // tri1 + 20, 23, 18, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_owl_model[] = { +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&owl_1_v[378], 4, 0), +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0005C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&owl_1_v[382], 14, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 1, 3, 6, // tri1 + 2, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 0, 2, 9, // tri0 + 3, 0, 10, // tri1 + 3, 11, 12, // tri2 + 1, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_owl_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0005C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&owl_1_v[396], 8, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 1, 0, 3, // tri1 + 2, 4, 0 // tri2 +), +gsSPNTriangles_5b( + 5, 6, 4, // tri0 + 3, 7, 1, // tri1 + 4, 2, 5, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot3_owl_model[] = { +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&owl_1_v[304], 4, 0), +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0005C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&owl_1_v[308], 20, 4), +gsSPNTrianglesInit_5b( + 6, // tri count + 3, 4, 5, // tri0 + 3, 6, 1, // tri1 + 3, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 0, 2, 9, // tri0 + 3, 0, 10, // tri1 + 2, 11, 12, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 1, // tri count + 13, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 6, // tri count + 16, 17, 18, // tri0 + 19, 17, 16, // tri1 + 20, 19, 16 // tri2 +), +gsSPNTriangles_5b( + 21, 22, 16, // tri0 + 18, 21, 16, // tri1 + 16, 23, 20, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_owl_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&owl_1_v[328], 4, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0005C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&owl_1_v[332], 14, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 3, 1, 6, // tri1 + 2, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 0, 9, // tri0 + 0, 3, 10, // tri1 + 3, 11, 12, // tri2 + 1, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_owl_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0005C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&owl_1_v[346], 8, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 2, 4, 0 // tri2 +), +gsSPNTriangles_5b( + 4, 5, 6, // tri0 + 1, 7, 3, // tri1 + 6, 0, 4, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx base_owl_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 252, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&owl_1_v[404], 21, 0), +gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 1, 5 // tri2 +), +gsSPNTriangles_5b( + 4, 6, 7, // tri0 + 3, 2, 7, // tri1 + 8, 9, 5, // tri2 + 5, 10, 11 // tri3 +), +gsSPNTriangles_5b( + 7, 2, 4, // tri0 + 12, 13, 14, // tri1 + 15, 16, 17, // tri2 + 10, 5, 9 // tri3 +), +gsSPNTriangles_5b( + 13, 12, 18, // tri0 + 5, 11, 4, // tri1 + 7, 18, 3, // tri2 + 9, 15, 10 // tri3 +), +gsSPNTriangles_5b( + 4, 11, 19, // tri0 + 6, 13, 7, // tri1 + 0, 8, 1, // tri2 + 1, 4, 2 // tri3 +), +gsSPNTriangles_5b( + 5, 1, 8, // tri0 + 17, 10, 15, // tri1 + 14, 20, 12, // tri2 + 18, 7, 13 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_owl_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_owl_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-400,0 }, + /* joint 3 */ { Lfoot1_owl_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_owl_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { Lfoot3_owl_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,400,0 }, + /* joint 7 */ { Rfoot1_owl_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_owl_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { Rfoot3_owl_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,-1000 }, + /* joint 11 */ { tail1_owl_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_owl_model, 3, cKF_JOINT_FLAG_DISP_OPA, 600,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 600,-1400,0 }, + /* joint 15 */ { Larm1_owl_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_owl_model, 0, cKF_JOINT_FLAG_DISP_OPA, 700,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 600,1400,0 }, + /* joint 18 */ { Rarm1_owl_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_owl_model, 1, cKF_JOINT_FLAG_DISP_OPA, 700,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 700,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 1000,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 700,0,1750 }, + /* joint 23 */ { mouth_owl_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_owl_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1300,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_owl_1 = { 26, 15, cKF_je_r_owl_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/pbr_1.c b/src/data/npc/model/mdl/pbr_1.c new file mode 100644 index 00000000..8c534a90 --- /dev/null +++ b/src/data/npc/model/mdl/pbr_1.c @@ -0,0 +1,776 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx pbr_1_v[] = { +#include "assets/npc/mdl/pbr_1_v.inc" +}; + +static Gfx head_pbr_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pbr_1_v[21], 6, 0), +gsSPMatrix(0x0D000380, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pbr_1_v[27], 18, 6), +gsSPNTrianglesInit_5b( + 12, // tri count + 0, 6, 7, // tri0 + 0, 5, 8, // tri1 + 5, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 5, 3, 11, // tri0 + 2, 12, 13, // tri1 + 2, 4, 14, // tri2 + 4, 15, 16 // tri3 +), +gsSPNTriangles_5b( + 4, 1, 17, // tri0 + 1, 18, 19, // tri1 + 1, 0, 20, // tri2 + 3, 21, 22 // tri3 +), +gsSPNTriangles_5b( + 3, 2, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pbr_1_v[45], 31, 0), +gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 2, 4, 5 // tri2 +), +gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 2, 6, 8, // tri1 + 9, 6, 5, // tri2 + 1, 10, 11 // tri3 +), +gsSPNTriangles_5b( + 0, 10, 1, // tri0 + 9, 7, 6, // tri1 + 2, 1, 3, // tri2 + 5, 6, 2 // tri3 +), +gsSPNTriangles_5b( + 11, 12, 3, // tri0 + 2, 8, 0, // tri1 + 5, 13, 9, // tri2 + 3, 1, 11 // tri3 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 48, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 18, // tri count + 14, 15, 16, // tri0 + 17, 18, 19, // tri1 + 17, 20, 21 // tri2 +), +gsSPNTriangles_5b( + 19, 18, 22, // tri0 + 23, 22, 18, // tri1 + 16, 24, 14, // tri2 + 17, 16, 25 // tri3 +), +gsSPNTriangles_5b( + 17, 26, 27, // tri0 + 16, 15, 28, // tri1 + 28, 25, 16, // tri2 + 18, 27, 29 // tri3 +), +gsSPNTriangles_5b( + 25, 26, 17, // tri0 + 27, 18, 17, // tri1 + 21, 16, 17, // tri2 + 24, 16, 21 // tri3 +), +gsSPNTriangles_5b( + 19, 20, 17, // tri0 + 29, 30, 18, // tri1 + 18, 30, 23, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&pbr_1_v[76], 23, 0), +gsSPNTrianglesInit_5b( + 33, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 8, 9, 6, // tri0 + 10, 5, 4, // tri1 + 11, 12, 3, // tri2 + 9, 0, 2 // tri3 +), +gsSPNTriangles_5b( + 5, 11, 3, // tri0 + 2, 13, 9, // tri1 + 13, 2, 10, // tri2 + 5, 14, 11 // tri3 +), +gsSPNTriangles_5b( + 11, 14, 15, // tri0 + 7, 16, 12, // tri1 + 12, 8, 7, // tri2 + 17, 7, 6 // tri3 +), +gsSPNTriangles_5b( + 7, 17, 18, // tri0 + 16, 7, 18, // tri1 + 6, 19, 17, // tri2 + 5, 10, 2 // tri3 +), +gsSPNTriangles_5b( + 16, 3, 12, // tri0 + 9, 8, 0, // tri1 + 18, 20, 16, // tri2 + 21, 2, 1 // tri3 +), +gsSPNTriangles_5b( + 14, 5, 21, // tri0 + 21, 1, 14, // tri1 + 2, 21, 5, // tri2 + 15, 14, 1 // tri3 +), +gsSPNTriangles_5b( + 12, 11, 22, // tri0 + 15, 1, 0, // tri1 + 11, 15, 0, // tri2 + 0, 8, 22 // tri3 +), +gsSPNTriangles_5b( + 22, 11, 0, // tri0 + 22, 8, 12, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pbr_1_v[99], 16, 0), +gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 2, 3 // tri2 +), +gsSPNTriangles_5b( + 6, 3, 7, // tri0 + 8, 4, 3, // tri1 + 2, 1, 8, // tri2 + 2, 8, 3 // tri3 +), +gsSPNTriangles_5b( + 8, 9, 4, // tri0 + 3, 5, 7, // tri1 + 6, 0, 2, // tri2 + 1, 10, 8 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 3, // tri count + 11, 12, 13, // tri0 + 13, 14, 15, // tri1 + 13, 15, 11 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx mouth_pbr_model[] = { +gsSPMatrix(0x0D000380, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pbr_1_v[0], 5, 0), +gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pbr_1_v[5], 16, 5), +gsSPNTrianglesInit_5b( + 6, // tri count + 3, 0, 5, // tri0 + 4, 7, 6, // tri1 + 3, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 0, 4, 10, // tri0 + 2, 1, 11, // tri1 + 1, 13, 12, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 14, 15, 16, // tri0 + 17, 18, 19, // tri1 + 19, 18, 20 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_pbr_model[] = { +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pbr_1_v[146], 4, 0), +gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pbr_1_v[150], 15, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 1, 3, 6, // tri1 + 3, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 9, 10, // tri0 + 2, 11, 0, // tri1 + 3, 12, 13, // tri2 + 3, 0, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 15, 16, 17, // tri0 + 18, 15, 17, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_pbr_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pbr_1_v[165], 3, 0), +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pbr_1_v[168], 9, 3), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 3, // tri0 + 2, 0, 4, // tri1 + 0, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 1, 7, 8, // tri0 + 1, 2, 9, // tri1 + 2, 10, 11, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_pbr_model[] = { +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pbr_1_v[115], 4, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pbr_1_v[119], 15, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 3, 1, 6, // tri1 + 3, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 0, 9, 10, // tri0 + 0, 11, 2, // tri1 + 3, 12, 13, // tri2 + 0, 3, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 15, 16, 17, // tri0 + 15, 17, 18, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_pbr_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pbr_1_v[134], 3, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pbr_1_v[137], 9, 3), +gsSPNTrianglesInit_5b( + 6, // tri count + 1, 0, 3, // tri0 + 0, 2, 4, // tri1 + 0, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 1, 7, 8, // tri0 + 2, 1, 9, // tri1 + 2, 10, 11, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_pbr_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pbr_1_v[177], 8, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pbr_1_v[185], 21, 8), +gsSPNTrianglesInit_5b( + 14, // tri count + 2, 8, 9, // tri0 + 6, 10, 11, // tri1 + 3, 5, 12 // tri2 +), +gsSPNTriangles_5b( + 1, 6, 13, // tri0 + 5, 14, 15, // tri1 + 4, 16, 17, // tri2 + 1, 18, 19 // tri3 +), +gsSPNTriangles_5b( + 0, 1, 20, // tri0 + 4, 7, 21, // tri1 + 7, 0, 22, // tri2 + 0, 24, 23 // tri3 +), +gsSPNTriangles_5b( + 6, 2, 25, // tri0 + 3, 26, 27, // tri1 + 5, 4, 28, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&pbr_1_v[206], 26, 0), +gsSPNTrianglesInit_5b( + 29, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 12, 13, 14, // tri1 + 15, 13, 16, // tri2 + 11, 17, 9 // tri3 +), +gsSPNTriangles_5b( + 2, 12, 0, // tri0 + 16, 18, 15, // tri1 + 13, 11, 16, // tri2 + 13, 2, 11 // tri3 +), +gsSPNTriangles_5b( + 15, 14, 13, // tri0 + 6, 19, 20, // tri1 + 11, 10, 16, // tri2 + 5, 21, 3 // tri3 +), +gsSPNTriangles_5b( + 8, 19, 6, // tri0 + 19, 8, 1, // tri1 + 17, 3, 21, // tri2 + 17, 21, 9 // tri3 +), +gsSPNTriangles_5b( + 0, 19, 1, // tri0 + 13, 12, 2, // tri1 + 22, 16, 10, // tri2 + 23, 21, 5 // tri3 +), +gsSPNTriangles_5b( + 20, 24, 6, // tri0 + 5, 25, 23, // tri1 + 20, 19, 12, // tri2 + 10, 21, 23 // tri3 +), +gsSPNTriangles_5b( + 23, 22, 10, // tri0 + 12, 14, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail1_pbr_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pbr_1_v[232], 4, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pbr_1_v[236], 15, 4), +gsSPNTrianglesInit_5b( + 4, // tri count + 2, 3, 4, // tri0 + 3, 1, 5, // tri1 + 2, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 1, 0, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 0, 2, 11, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPNTrianglesInit_5b( + 6, // tri count + 12, 13, 14, // tri0 + 14, 13, 15, // tri1 + 14, 16, 12 // tri2 +), +gsSPNTriangles_5b( + 14, 17, 18, // tri0 + 15, 17, 14, // tri1 + 18, 16, 14, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot3_pbr_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pbr_1_v[301], 4, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pbr_1_v[305], 20, 4), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 3, 4, // tri0 + 1, 0, 5, // tri1 + 3, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 2, 8, 9, // tri0 + 2, 10, 3, // tri1 + 1, 11, 12, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 6, // tri count + 13, 14, 15, // tri0 + 13, 16, 14, // tri1 + 13, 17, 18 // tri2 +), +gsSPNTriangles_5b( + 13, 19, 17, // tri0 + 15, 19, 13, // tri1 + 18, 20, 13, // tri2 + 0, 0, 0 // tri3 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 21, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_pbr_model[] = { +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pbr_1_v[325], 4, 0), +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pbr_1_v[329], 14, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 1, 6, 7, // tri1 + 3, 0, 8 // tri2 +), +gsSPNTriangles_5b( + 0, 2, 9, // tri0 + 2, 10, 11, // tri1 + 1, 3, 12, // tri2 + 3, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_pbr_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pbr_1_v[343], 8, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 1, 0, 3, // tri1 + 2, 4, 0 // tri2 +), +gsSPNTriangles_5b( + 5, 6, 4, // tri0 + 3, 7, 1, // tri1 + 4, 2, 5, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot3_pbr_model[] = { +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pbr_1_v[251], 4, 0), +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pbr_1_v[255], 20, 4), +gsSPNTrianglesInit_5b( + 6, // tri count + 3, 0, 4, // tri0 + 0, 1, 5, // tri1 + 3, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 3, 8, 9, // tri0 + 3, 10, 2, // tri1 + 1, 11, 12, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 6, // tri count + 13, 14, 15, // tri0 + 14, 16, 15, // tri1 + 17, 18, 15 // tri2 +), +gsSPNTriangles_5b( + 18, 19, 15, // tri0 + 15, 19, 13, // tri1 + 15, 20, 17, // tri2 + 0, 0, 0 // tri3 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 21, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_pbr_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pbr_1_v[275], 4, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pbr_1_v[279], 14, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 1, 6, 7, // tri1 + 0, 3, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 0, 9, // tri0 + 2, 10, 11, // tri1 + 3, 1, 12, // tri2 + 3, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_pbr_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pbr_1_v[293], 8, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 2, 4, 0 // tri2 +), +gsSPNTriangles_5b( + 4, 5, 6, // tri0 + 1, 7, 3, // tri1 + 6, 0, 4, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx base_pbr_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0004C0, G_IM_FMT_CI, 16, 8, 15, GX_MIRROR, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 28), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pbr_1_v[351], 21, 0), +gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 3, 7, 8, // tri0 + 9, 1, 10, // tri1 + 6, 8, 4, // tri2 + 7, 4, 8 // tri3 +), +gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 10, 13, 14, // tri1 + 11, 10, 15, // tri2 + 16, 12, 11 // tri3 +), +gsSPNTriangles_5b( + 16, 11, 17, // tri0 + 15, 10, 1, // tri1 + 17, 11, 15, // tri2 + 10, 14, 9 // tri3 +), +gsSPNTriangles_5b( + 5, 18, 19, // tri0 + 5, 19, 6, // tri1 + 8, 6, 20, // tri2 + 8, 20, 0 // tri3 +), +gsSPNTriangles_5b( + 6, 19, 20, // tri0 + 8, 0, 3, // tri1 + 1, 9, 2, // tri2 + 10, 11, 13 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_pbr_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_pbr_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_pbr_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_pbr_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { Lfoot3_pbr_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_pbr_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_pbr_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { Rfoot3_pbr_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,-600 }, + /* joint 11 */ { tail1_pbr_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 13 */ { chest_pbr_model, 3, cKF_JOINT_FLAG_DISP_OPA, 325,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 750,-1100,0 }, + /* joint 15 */ { Larm1_pbr_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_pbr_model, 0, cKF_JOINT_FLAG_DISP_OPA, 651,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 750,1100,0 }, + /* joint 18 */ { Rarm1_pbr_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_pbr_model, 1, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 651,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 1175,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 600,0,800 }, + /* joint 23 */ { mouth_pbr_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_pbr_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 800,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_pbr_1 = { 26, 15, cKF_je_r_pbr_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/pga_1.c b/src/data/npc/model/mdl/pga_1.c new file mode 100644 index 00000000..f4ad1820 --- /dev/null +++ b/src/data/npc/model/mdl/pga_1.c @@ -0,0 +1,869 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx pga_1_v[] = { +#include "assets/npc/mdl/pga_1_v.inc" +}; + +static Gfx head_pga_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000180, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pga_1_v[40], 30, 0), +gsSPNTrianglesInit_5b( + 1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 15, // tri count + 3, 4, 5, // tri0 + 6, 7, 8, // tri1 + 9, 10, 11 // tri2 +), +gsSPNTriangles_5b( + 3, 5, 9, // tri0 + 12, 13, 6, // tri1 + 14, 9, 15, // tri2 + 5, 12, 9 // tri3 +), +gsSPNTriangles_5b( + 13, 12, 5, // tri0 + 16, 7, 6, // tri1 + 9, 14, 17, // tri2 + 16, 13, 5 // tri3 +), +gsSPNTriangles_5b( + 6, 9, 12, // tri0 + 6, 13, 16, // tri1 + 17, 10, 9, // tri2 + 11, 3, 9 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 5, // tri count + 18, 19, 20, // tri0 + 18, 20, 21, // tri1 + 22, 23, 19 // tri2 +), +gsSPNTriangles_5b( + 24, 21, 20, // tri0 + 22, 19, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 2, // tri count + 25, 26, 27, // tri0 + 27, 28, 29, // tri1 + 0, 0, 0 // tri2 +), +gsSPVertex(&pga_1_v[70], 12, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 3, 4, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 6, 7, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 9, 10, 11, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&pga_1_v[82], 30, 0), +gsSPNTrianglesInit_5b( + 48, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 5, 8, 9, // tri0 + 6, 10, 11, // tri1 + 6, 11, 3, // tri2 + 6, 9, 10 // tri3 +), +gsSPNTriangles_5b( + 12, 13, 14, // tri0 + 2, 15, 12, // tri1 + 12, 16, 17, // tri2 + 11, 10, 18 // tri3 +), +gsSPNTriangles_5b( + 11, 18, 19, // tri0 + 4, 11, 19, // tri1 + 4, 15, 2, // tri2 + 1, 4, 2 // tri3 +), +gsSPNTriangles_5b( + 13, 20, 14, // tri0 + 5, 21, 22, // tri1 + 13, 18, 20, // tri2 + 20, 9, 8 // tri3 +), +gsSPNTriangles_5b( + 12, 15, 13, // tri0 + 13, 15, 19, // tri1 + 19, 18, 13, // tri2 + 23, 16, 14 // tri3 +), +gsSPNTriangles_5b( + 14, 8, 23, // tri0 + 9, 6, 5, // tri1 + 8, 5, 22, // tri2 + 16, 12, 14 // tri3 +), +gsSPNTriangles_5b( + 24, 25, 26, // tri0 + 17, 2, 12, // tri1 + 14, 20, 8, // tri2 + 11, 4, 3 // tri3 +), +gsSPNTriangles_5b( + 9, 20, 18, // tri0 + 18, 10, 9, // tri1 + 19, 15, 4, // tri2 + 3, 27, 26 // tri3 +), +gsSPNTriangles_5b( + 24, 7, 6, // tri0 + 26, 27, 7, // tri1 + 26, 7, 24, // tri2 + 6, 3, 25 // tri3 +), +gsSPNTriangles_5b( + 25, 24, 6, // tri0 + 3, 26, 25, // tri1 + 7, 21, 5, // tri2 + 27, 3, 1 // tri3 +), +gsSPNTriangles_5b( + 27, 28, 29, // tri0 + 29, 21, 7, // tri1 + 29, 7, 27, // tri2 + 1, 28, 27 // tri3 +), +gsSPNTriangles_5b( + 0, 28, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&pga_1_v[112], 7, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 1, 5, 2 // tri2 +), +gsSPNTriangles_5b( + 2, 6, 0, // tri0 + 2, 3, 6, // tri1 + 4, 2, 5, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx mouth_pga_model[] = { +gsSPMatrix(0x0D000380, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pga_1_v[0], 5, 0), +gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pga_1_v[5], 15, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 5, 6, // tri0 + 4, 8, 7, // tri1 + 2, 4, 9 // tri2 +), +gsSPNTriangles_5b( + 4, 0, 10, // tri0 + 2, 11, 12, // tri1 + 0, 13, 14, // tri2 + 2, 15, 16 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 2, // tri count + 1, 3, 17, // tri0 + 3, 19, 18, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&pga_1_v[20], 20, 0), +gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 1 // tri2 +), +gsSPNTriangles_5b( + 0, 8, 6, // tri0 + 9, 10, 4, // tri1 + 11, 10, 9, // tri2 + 12, 8, 10 // tri3 +), +gsSPNTriangles_5b( + 12, 10, 11, // tri0 + 8, 0, 4, // tri1 + 4, 10, 8, // tri2 + 4, 0, 2 // tri3 +), +gsSPNTriangles_5b( + 4, 2, 5, // tri0 + 9, 4, 3, // tri1 + 6, 8, 12, // tri2 + 1, 0, 6 // tri3 +), +gsSPNTriangles_5b( + 3, 13, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 4, // tri count + 14, 15, 16, // tri0 + 17, 15, 14, // tri1 + 17, 14, 18 // tri2 +), +gsSPNTriangles_5b( + 14, 16, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_pga_model[] = { +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pga_1_v[192], 5, 0), +gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pga_1_v[197], 23, 5), +gsSPNTrianglesInit_5b( + 9, // tri count + 3, 5, 6, // tri0 + 2, 4, 7, // tri1 + 0, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 3, 1, 10, // tri0 + 3, 11, 12, // tri1 + 0, 2, 13, // tri2 + 4, 14, 15 // tri3 +), +gsSPNTriangles_5b( + 2, 17, 16, // tri0 + 4, 3, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 4, // tri count + 22, 23, 24, // tri0 + 24, 25, 22, // tri1 + 22, 26, 23 // tri2 +), +gsSPNTriangles_5b( + 25, 27, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_pga_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pga_1_v[220], 8, 0), +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pga_1_v[228], 13, 8), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 8, 9, // tri0 + 0, 10, 11, // tri1 + 3, 0, 12 // tri2 +), +gsSPNTriangles_5b( + 5, 13, 14, // tri0 + 5, 4, 15, // tri1 + 1, 6, 16, // tri2 + 7, 18, 17 // tri3 +), +gsSPNTriangles_5b( + 0, 20, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&pga_1_v[241], 24, 0), +gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 5, 4, 3 // tri2 +), +gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 4, 1, 0, // tri1 + 9, 10, 6, // tri2 + 11, 12, 13 // tri3 +), +gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 10, 11, 7, // tri1 + 16, 17, 14, // tri2 + 8, 18, 6 // tri3 +), +gsSPNTriangles_5b( + 7, 6, 10, // tri0 + 19, 20, 21, // tri1 + 13, 12, 22, // tri2 + 23, 19, 21 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_pga_model[] = { +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pga_1_v[119], 5, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pga_1_v[124], 23, 5), +gsSPNTrianglesInit_5b( + 9, // tri count + 3, 5, 6, // tri0 + 4, 2, 7, // tri1 + 0, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 1, 3, 10, // tri0 + 3, 11, 12, // tri1 + 2, 0, 13, // tri2 + 4, 14, 15 // tri3 +), +gsSPNTriangles_5b( + 2, 17, 16, // tri0 + 3, 4, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 4, // tri count + 22, 23, 24, // tri0 + 24, 25, 22, // tri1 + 23, 26, 24 // tri2 +), +gsSPNTriangles_5b( + 24, 27, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_pga_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pga_1_v[147], 8, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pga_1_v[155], 13, 8), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 8, 9, // tri0 + 0, 10, 11, // tri1 + 0, 3, 12 // tri2 +), +gsSPNTriangles_5b( + 5, 13, 14, // tri0 + 4, 5, 15, // tri1 + 6, 1, 16, // tri2 + 7, 18, 17 // tri3 +), +gsSPNTriangles_5b( + 0, 20, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&pga_1_v[168], 24, 0), +gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 4, 3, 5 // tri2 +), +gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 2, 1, 3, // tri1 + 8, 9, 10, // tri2 + 11, 12, 13 // tri3 +), +gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 7, 13, 9, // tri1 + 16, 17, 14, // tri2 + 8, 18, 6 // tri3 +), +gsSPNTriangles_5b( + 9, 8, 7, // tri0 + 19, 20, 21, // tri1 + 22, 12, 11, // tri2 + 19, 21, 23 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_pga_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pga_1_v[265], 32, 0), +gsSPNTrianglesInit_5b( + 40, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 7, 11, // tri1 + 3, 12, 0, // tri2 + 13, 14, 5 // tri3 +), +gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 1, 20, 2, // tri2 + 3, 19, 18 // tri3 +), +gsSPNTriangles_5b( + 7, 17, 16, // tri0 + 21, 4, 18, // tri1 + 17, 4, 21, // tri2 + 8, 22, 9 // tri3 +), +gsSPNTriangles_5b( + 21, 15, 17, // tri0 + 18, 20, 21, // tri1 + 3, 18, 23, // tri2 + 21, 20, 24 // tri3 +), +gsSPNTriangles_5b( + 21, 24, 15, // tri0 + 8, 15, 22, // tri1 + 2, 19, 3, // tri2 + 16, 8, 7 // tri3 +), +gsSPNTriangles_5b( + 9, 11, 7, // tri0 + 13, 17, 7, // tri1 + 23, 25, 26, // tri2 + 27, 6, 5 // tri3 +), +gsSPNTriangles_5b( + 27, 5, 28, // tri0 + 23, 18, 6, // tri1 + 6, 18, 4, // tri2 + 4, 17, 5 // tri3 +), +gsSPNTriangles_5b( + 25, 23, 6, // tri0 + 5, 17, 13, // tri1 + 14, 13, 10, // tri2 + 13, 7, 10 // tri3 +), +gsSPNTriangles_5b( + 26, 3, 23, // tri0 + 12, 3, 26, // tri1 + 12, 26, 29, // tri2 + 28, 30, 31 // tri3 +), +gsSPNTriangles_5b( + 28, 31, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail1_pga_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pga_1_v[408], 5, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pga_1_v[413], 5, 5), +gsSPNTrianglesInit_5b( + 5, // tri count + 2, 5, 0, // tri0 + 0, 6, 3, // tri1 + 1, 7, 2 // tri2 +), +gsSPNTriangles_5b( + 4, 8, 1, // tri0 + 4, 3, 9, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot3_pga_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pga_1_v[344], 3, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pga_1_v[347], 18, 3), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 3, 4, // tri0 + 1, 0, 5, // tri1 + 0, 2, 6 // tri2 +), +gsSPNTriangles_5b( + 2, 1, 7, // tri0 + 2, 8, 9, // tri1 + 0, 10, 11, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 5, // tri count + 12, 13, 14, // tri0 + 12, 14, 15, // tri1 + 16, 17, 18 // tri2 +), +gsSPNTriangles_5b( + 18, 19, 16, // tri0 + 16, 20, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_pga_model[] = { +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pga_1_v[365], 4, 0), +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pga_1_v[369], 14, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 2, 6, 7, // tri1 + 3, 0, 8 // tri2 +), +gsSPNTriangles_5b( + 1, 2, 9, // tri0 + 2, 10, 11, // tri1 + 2, 3, 12, // tri2 + 3, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_pga_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pga_1_v[383], 8, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 2, 4 // tri2 +), +gsSPNTriangles_5b( + 5, 0, 6, // tri0 + 4, 7, 3, // tri1 + 0, 5, 1, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot3_pga_model[] = { +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pga_1_v[297], 3, 0), +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pga_1_v[300], 18, 3), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 3, 4, // tri0 + 0, 1, 5, // tri1 + 2, 0, 6 // tri2 +), +gsSPNTriangles_5b( + 1, 7, 8, // tri0 + 1, 2, 9, // tri1 + 0, 10, 11, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 5, // tri count + 12, 13, 14, // tri0 + 12, 14, 15, // tri1 + 16, 17, 18 // tri2 +), +gsSPNTriangles_5b( + 18, 19, 16, // tri0 + 17, 20, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_pga_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pga_1_v[318], 4, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pga_1_v[322], 14, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 2, 6, 7, // tri1 + 0, 3, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 1, 9, // tri0 + 2, 10, 11, // tri1 + 3, 2, 12, // tri2 + 3, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_pga_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pga_1_v[336], 8, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 1, 0 // tri2 +), +gsSPNTriangles_5b( + 5, 3, 6, // tri0 + 0, 7, 4, // tri1 + 2, 6, 3, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx base_pga_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pga_1_v[391], 17, 0), +gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 4, 7, 8, // tri0 + 3, 9, 10, // tri1 + 7, 6, 11, // tri2 + 12, 13, 10 // tri3 +), +gsSPNTriangles_5b( + 6, 14, 13, // tri0 + 6, 13, 11, // tri1 + 12, 15, 11, // tri2 + 1, 0, 14 // tri3 +), +gsSPNTriangles_5b( + 14, 5, 1, // tri0 + 14, 10, 13, // tri1 + 14, 6, 5, // tri2 + 0, 10, 14 // tri3 +), +gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 6, 7, 4, // tri1 + 11, 15, 7, // tri2 + 16, 3, 2 // tri3 +), +gsSPNTriangles_5b( + 10, 0, 3, // tri0 + 10, 9, 12, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_pga_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_pga_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_pga_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_pga_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { Lfoot3_pga_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_pga_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_pga_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { Rfoot3_pga_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 75,0,-650 }, + /* joint 11 */ { tail1_pga_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_pga_model, 3, cKF_JOINT_FLAG_DISP_OPA, 325,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 1150,-500,0 }, + /* joint 15 */ { Larm1_pga_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_pga_model, 0, cKF_JOINT_FLAG_DISP_OPA, 801,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 1150,500,0 }, + /* joint 18 */ { Rarm1_pga_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_pga_model, 1, cKF_JOINT_FLAG_DISP_OPA, 800,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 801,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 1274,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 1050,0,1350 }, + /* joint 23 */ { mouth_pga_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_pga_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1501,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_pga_1 = { 26, 15, cKF_je_r_pga_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/pgb_1.c b/src/data/npc/model/mdl/pgb_1.c new file mode 100644 index 00000000..6bb1c6c9 --- /dev/null +++ b/src/data/npc/model/mdl/pgb_1.c @@ -0,0 +1,865 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx pgb_1_v[] = { +#include "assets/npc/mdl/pgb_1_v.inc" +}; + +static Gfx head_pgb_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pgb_1_v[29], 29, 0), +gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 0, 2, 6, // tri0 + 9, 10, 3, // tri1 + 11, 6, 3, // tri2 + 2, 9, 6 // tri3 +), +gsSPNTriangles_5b( + 10, 9, 2, // tri0 + 6, 11, 12, // tri1 + 3, 6, 9, // tri2 + 12, 7, 6 // tri3 +), +gsSPNTriangles_5b( + 8, 0, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 5, // tri count + 13, 14, 15, // tri0 + 15, 14, 16, // tri1 + 15, 16, 17 // tri2 +), +gsSPNTriangles_5b( + 13, 18, 14, // tri0 + 19, 17, 16, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 4, // tri count + 20, 21, 22, // tri0 + 23, 21, 20, // tri1 + 24, 22, 21 // tri2 +), +gsSPNTriangles_5b( + 21, 23, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 26, 27, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPVertex(&pgb_1_v[58], 11, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 4, 3, 5 // tri2 +), +gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 8, 9, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pgb_1_v[69], 31, 0), +gsSPNTrianglesInit_5b( + 50, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 3, 2, 4, // tri0 + 7, 8, 9, // tri1 + 10, 11, 7, // tri2 + 7, 12, 13 // tri3 +), +gsSPNTriangles_5b( + 5, 4, 14, // tri0 + 5, 14, 15, // tri1 + 16, 5, 15, // tri2 + 16, 11, 10 // tri3 +), +gsSPNTriangles_5b( + 17, 16, 10, // tri0 + 8, 18, 9, // tri1 + 0, 19, 20, // tri2 + 8, 14, 18 // tri3 +), +gsSPNTriangles_5b( + 18, 2, 1, // tri0 + 7, 11, 8, // tri1 + 8, 11, 15, // tri2 + 15, 14, 8 // tri3 +), +gsSPNTriangles_5b( + 21, 12, 9, // tri0 + 2, 3, 0, // tri1 + 9, 1, 21, // tri2 + 17, 22, 23 // tri3 +), +gsSPNTriangles_5b( + 24, 22, 17, // tri0 + 24, 17, 10, // tri1 + 1, 0, 20, // tri2 + 12, 7, 9 // tri3 +), +gsSPNTriangles_5b( + 25, 26, 27, // tri0 + 13, 10, 7, // tri1 + 9, 18, 1, // tri2 + 5, 16, 6 // tri3 +), +gsSPNTriangles_5b( + 2, 18, 14, // tri0 + 14, 4, 2, // tri1 + 15, 11, 16, // tri2 + 6, 23, 27 // tri3 +), +gsSPNTriangles_5b( + 25, 28, 3, // tri0 + 27, 23, 28, // tri1 + 27, 28, 25, // tri2 + 3, 6, 26 // tri3 +), +gsSPNTriangles_5b( + 26, 25, 3, // tri0 + 6, 27, 26, // tri1 + 28, 19, 0, // tri2 + 23, 6, 17 // tri3 +), +gsSPNTriangles_5b( + 23, 22, 29, // tri0 + 29, 22, 30, // tri1 + 29, 19, 28, // tri2 + 29, 28, 23 // tri3 +), +gsSPNTriangles_5b( + 30, 19, 29, // tri0 + 6, 16, 17, // tri1 + 0, 3, 28, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&pgb_1_v[100], 10, 0), +gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 4, 5, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 7, 8, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx mouth_pgb_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pgb_1_v[0], 29, 0), +gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 8, 6, 5, // tri0 + 9, 1, 0, // tri1 + 10, 4, 6, // tri2 + 10, 6, 8 // tri3 +), +gsSPNTriangles_5b( + 8, 11, 10, // tri0 + 12, 11, 8, // tri1 + 10, 11, 9, // tri2 + 4, 3, 7 // tri3 +), +gsSPNTriangles_5b( + 7, 6, 4, // tri0 + 5, 7, 13, // tri1 + 0, 4, 10, // tri2 + 5, 14, 12 // tri3 +), +gsSPNTriangles_5b( + 0, 10, 9, // tri0 + 2, 3, 0, // tri1 + 13, 14, 5, // tri2 + 12, 8, 5 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 18, 20, 21 // tri2 +), +gsSPNTriangles_5b( + 17, 19, 18, // tri0 + 17, 18, 15, // tri1 + 15, 22, 16, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000180, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 4, // tri count + 23, 24, 25, // tri0 + 26, 27, 24, // tri1 + 28, 23, 25 // tri2 +), +gsSPNTriangles_5b( + 23, 26, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_pgb_model[] = { +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pgb_1_v[183], 5, 0), +gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pgb_1_v[188], 23, 5), +gsSPNTrianglesInit_5b( + 9, // tri count + 3, 5, 6, // tri0 + 2, 4, 7, // tri1 + 0, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 3, 1, 10, // tri0 + 3, 11, 12, // tri1 + 0, 2, 13, // tri2 + 4, 14, 15 // tri3 +), +gsSPNTriangles_5b( + 2, 17, 16, // tri0 + 4, 3, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 4, // tri count + 22, 23, 24, // tri0 + 24, 25, 22, // tri1 + 22, 26, 23 // tri2 +), +gsSPNTriangles_5b( + 25, 27, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_pgb_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pgb_1_v[211], 8, 0), +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pgb_1_v[219], 13, 8), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 8, 9, // tri0 + 0, 10, 11, // tri1 + 3, 0, 12 // tri2 +), +gsSPNTriangles_5b( + 5, 13, 14, // tri0 + 5, 4, 15, // tri1 + 1, 6, 16, // tri2 + 7, 18, 17 // tri3 +), +gsSPNTriangles_5b( + 0, 20, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&pgb_1_v[232], 24, 0), +gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 5, 4, 3 // tri2 +), +gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 4, 1, 0, // tri1 + 9, 10, 6, // tri2 + 11, 12, 13 // tri3 +), +gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 10, 11, 7, // tri1 + 16, 17, 14, // tri2 + 8, 18, 6 // tri3 +), +gsSPNTriangles_5b( + 7, 6, 10, // tri0 + 19, 20, 21, // tri1 + 13, 12, 22, // tri2 + 23, 19, 21 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_pgb_model[] = { +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pgb_1_v[110], 5, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pgb_1_v[115], 23, 5), +gsSPNTrianglesInit_5b( + 9, // tri count + 3, 5, 6, // tri0 + 4, 2, 7, // tri1 + 0, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 1, 3, 10, // tri0 + 3, 11, 12, // tri1 + 2, 0, 13, // tri2 + 4, 14, 15 // tri3 +), +gsSPNTriangles_5b( + 2, 17, 16, // tri0 + 3, 4, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 4, // tri count + 22, 23, 24, // tri0 + 24, 25, 22, // tri1 + 23, 26, 24 // tri2 +), +gsSPNTriangles_5b( + 24, 27, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_pgb_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pgb_1_v[138], 8, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pgb_1_v[146], 13, 8), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 8, 9, // tri0 + 0, 10, 11, // tri1 + 0, 3, 12 // tri2 +), +gsSPNTriangles_5b( + 5, 13, 14, // tri0 + 4, 5, 15, // tri1 + 6, 1, 16, // tri2 + 7, 18, 17 // tri3 +), +gsSPNTriangles_5b( + 0, 20, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&pgb_1_v[159], 24, 0), +gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 4, 3, 5 // tri2 +), +gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 2, 1, 3, // tri1 + 8, 9, 10, // tri2 + 11, 12, 13 // tri3 +), +gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 7, 13, 9, // tri1 + 16, 17, 14, // tri2 + 8, 18, 6 // tri3 +), +gsSPNTriangles_5b( + 9, 8, 7, // tri0 + 19, 20, 21, // tri1 + 22, 12, 11, // tri2 + 19, 21, 23 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_pgb_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pgb_1_v[256], 32, 0), +gsSPNTrianglesInit_5b( + 40, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 7, 11, // tri1 + 3, 12, 0, // tri2 + 13, 14, 5 // tri3 +), +gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 1, 20, 2, // tri2 + 3, 19, 18 // tri3 +), +gsSPNTriangles_5b( + 7, 17, 16, // tri0 + 21, 4, 18, // tri1 + 17, 4, 21, // tri2 + 8, 22, 9 // tri3 +), +gsSPNTriangles_5b( + 21, 15, 17, // tri0 + 18, 20, 21, // tri1 + 3, 18, 23, // tri2 + 21, 20, 24 // tri3 +), +gsSPNTriangles_5b( + 21, 24, 15, // tri0 + 8, 15, 22, // tri1 + 2, 19, 3, // tri2 + 16, 8, 7 // tri3 +), +gsSPNTriangles_5b( + 9, 11, 7, // tri0 + 13, 17, 7, // tri1 + 23, 25, 26, // tri2 + 27, 6, 5 // tri3 +), +gsSPNTriangles_5b( + 27, 5, 28, // tri0 + 23, 18, 6, // tri1 + 6, 18, 4, // tri2 + 4, 17, 5 // tri3 +), +gsSPNTriangles_5b( + 25, 23, 6, // tri0 + 5, 17, 13, // tri1 + 14, 13, 10, // tri2 + 13, 7, 10 // tri3 +), +gsSPNTriangles_5b( + 26, 3, 23, // tri0 + 12, 3, 26, // tri1 + 12, 26, 29, // tri2 + 28, 30, 31 // tri3 +), +gsSPNTriangles_5b( + 28, 31, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail1_pgb_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pgb_1_v[399], 5, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pgb_1_v[404], 5, 5), +gsSPNTrianglesInit_5b( + 5, // tri count + 2, 5, 0, // tri0 + 0, 6, 3, // tri1 + 1, 7, 2 // tri2 +), +gsSPNTriangles_5b( + 4, 8, 1, // tri0 + 4, 3, 9, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot3_pgb_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pgb_1_v[335], 3, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000740, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pgb_1_v[338], 18, 3), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 3, 4, // tri0 + 1, 0, 5, // tri1 + 0, 2, 6 // tri2 +), +gsSPNTriangles_5b( + 2, 1, 7, // tri0 + 2, 8, 9, // tri1 + 0, 10, 11, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 5, // tri count + 12, 13, 14, // tri0 + 12, 14, 15, // tri1 + 16, 17, 18 // tri2 +), +gsSPNTriangles_5b( + 18, 19, 16, // tri0 + 16, 20, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_pgb_model[] = { +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pgb_1_v[356], 4, 0), +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000740, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pgb_1_v[360], 14, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 2, 6, 7, // tri1 + 3, 0, 8 // tri2 +), +gsSPNTriangles_5b( + 1, 2, 9, // tri0 + 2, 10, 11, // tri1 + 2, 3, 12, // tri2 + 3, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_pgb_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000740, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pgb_1_v[374], 8, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 2, 4 // tri2 +), +gsSPNTriangles_5b( + 5, 0, 6, // tri0 + 4, 7, 3, // tri1 + 0, 5, 1, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot3_pgb_model[] = { +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pgb_1_v[288], 3, 0), +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000740, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pgb_1_v[291], 18, 3), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 3, 4, // tri0 + 0, 1, 5, // tri1 + 2, 0, 6 // tri2 +), +gsSPNTriangles_5b( + 1, 7, 8, // tri0 + 1, 2, 9, // tri1 + 0, 10, 11, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 5, // tri count + 12, 13, 14, // tri0 + 12, 14, 15, // tri1 + 16, 17, 18 // tri2 +), +gsSPNTriangles_5b( + 18, 19, 16, // tri0 + 17, 20, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_pgb_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pgb_1_v[309], 4, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000740, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pgb_1_v[313], 14, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 2, 6, 7, // tri1 + 0, 3, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 1, 9, // tri0 + 2, 10, 11, // tri1 + 3, 2, 12, // tri2 + 3, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_pgb_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000740, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pgb_1_v[327], 8, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 1, 0 // tri2 +), +gsSPNTriangles_5b( + 5, 3, 6, // tri0 + 0, 7, 4, // tri1 + 2, 6, 3, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx base_pgb_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pgb_1_v[382], 17, 0), +gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 4, 7, 8, // tri0 + 3, 9, 10, // tri1 + 7, 6, 11, // tri2 + 12, 13, 10 // tri3 +), +gsSPNTriangles_5b( + 6, 14, 13, // tri0 + 6, 13, 11, // tri1 + 12, 15, 11, // tri2 + 1, 0, 14 // tri3 +), +gsSPNTriangles_5b( + 14, 5, 1, // tri0 + 14, 10, 13, // tri1 + 14, 6, 5, // tri2 + 0, 10, 14 // tri3 +), +gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 6, 7, 4, // tri1 + 11, 15, 7, // tri2 + 16, 3, 2 // tri3 +), +gsSPNTriangles_5b( + 10, 0, 3, // tri0 + 10, 9, 12, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_pgb_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_pgb_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_pgb_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_pgb_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { Lfoot3_pgb_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_pgb_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_pgb_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { Rfoot3_pgb_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 75,0,-650 }, + /* joint 11 */ { tail1_pgb_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_pgb_model, 3, cKF_JOINT_FLAG_DISP_OPA, 325,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 1150,-500,0 }, + /* joint 15 */ { Larm1_pgb_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_pgb_model, 0, cKF_JOINT_FLAG_DISP_OPA, 800,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 1150,500,0 }, + /* joint 18 */ { Rarm1_pgb_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_pgb_model, 1, cKF_JOINT_FLAG_DISP_OPA, 800,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 799,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 1274,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 1050,0,1350 }, + /* joint 23 */ { mouth_pgb_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_pgb_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1601,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_pgb_1 = { 26, 15, cKF_je_r_pgb_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/pgn_1.c b/src/data/npc/model/mdl/pgn_1.c new file mode 100644 index 00000000..479d787b --- /dev/null +++ b/src/data/npc/model/mdl/pgn_1.c @@ -0,0 +1,744 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx pgn_1_v[] = { +#include "assets/npc/mdl/pgn_1_v.inc" +}; + +static Gfx head_pgn_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pgn_1_v[13], 9, 0), +gsSPMatrix(0x0D000380, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pgn_1_v[22], 9, 9), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 9, // tri0 + 1, 11, 10, // tri1 + 7, 0, 12 // tri2 +), +gsSPNTriangles_5b( + 0, 14, 13, // tri0 + 1, 4, 15, // tri1 + 4, 17, 16, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&pgn_1_v[31], 14, 9), +gsSPNTrianglesInit_5b( + 9, // tri count + 5, 6, 9, // tri0 + 6, 11, 10, // tri1 + 8, 13, 12 // tri2 +), +gsSPNTriangles_5b( + 8, 5, 14, // tri0 + 2, 8, 15, // tri1 + 5, 16, 17, // tri2 + 2, 18, 19 // tri3 +), +gsSPNTriangles_5b( + 3, 2, 20, // tri0 + 2, 22, 21, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&pgn_1_v[45], 16, 0), +gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 3, 0, 5 // tri2 +), +gsSPNTriangles_5b( + 2, 5, 0, // tri0 + 6, 4, 7, // tri1 + 6, 7, 8, // tri2 + 9, 10, 11 // tri3 +), +gsSPNTriangles_5b( + 9, 11, 12, // tri0 + 4, 3, 13, // tri1 + 13, 7, 4, // tri2 + 9, 0, 4 // tri3 +), +gsSPNTriangles_5b( + 9, 4, 6, // tri0 + 8, 14, 15, // tri1 + 8, 15, 6, // tri2 + 6, 15, 10 // tri3 +), +gsSPNTriangles_5b( + 6, 10, 9, // tri0 + 12, 1, 0, // tri1 + 12, 0, 9, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&pgn_1_v[61], 31, 0), +gsSPNTrianglesInit_5b( + 30, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 2 // tri2 +), +gsSPNTriangles_5b( + 3, 6, 7, // tri0 + 8, 7, 9, // tri1 + 9, 10, 8, // tri2 + 11, 0, 12 // tri3 +), +gsSPNTriangles_5b( + 11, 1, 0, // tri0 + 13, 14, 4, // tri1 + 15, 14, 16, // tri2 + 17, 18, 19 // tri3 +), +gsSPNTriangles_5b( + 20, 0, 2, // tri0 + 12, 0, 20, // tri1 + 13, 7, 8, // tri2 + 13, 16, 14 // tri3 +), +gsSPNTriangles_5b( + 18, 17, 20, // tri0 + 20, 17, 21, // tri1 + 22, 16, 13, // tri2 + 23, 22, 13 // tri3 +), +gsSPNTriangles_5b( + 20, 21, 24, // tri0 + 3, 7, 13, // tri1 + 5, 18, 20, // tri2 + 13, 4, 3 // tri3 +), +gsSPNTriangles_5b( + 2, 5, 20, // tri0 + 6, 3, 2, // tri1 + 6, 2, 1, // tri2 + 12, 25, 11 // tri3 +), +gsSPNTriangles_5b( + 7, 6, 9, // tri0 + 13, 8, 23, // tri1 + 24, 12, 20, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000180, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 3, // tri count + 26, 27, 28, // tri0 + 27, 26, 29, // tri1 + 30, 28, 27 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&pgn_1_v[92], 23, 0), +gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 2, 6 // tri2 +), +gsSPNTriangles_5b( + 6, 7, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 5, // tri count + 8, 9, 10, // tri0 + 11, 12, 8, // tri1 + 9, 8, 12 // tri2 +), +gsSPNTriangles_5b( + 10, 13, 8, // tri0 + 8, 14, 11, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 2, // tri count + 15, 16, 17, // tri0 + 17, 18, 15, // tri1 + 0, 0, 0 // tri2 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 19, 20, 21, // tri0 + 21, 22, 19, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx mouth_pgn_model[] = { +gsSPMatrix(0x0D000380, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pgn_1_v[0], 5, 0), +gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pgn_1_v[5], 8, 5), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 5, // tri0 + 2, 7, 6, // tri1 + 0, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 4, 2, 10, // tri0 + 3, 0, 11, // tri1 + 1, 4, 12, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_pgn_model[] = { +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pgn_1_v[145], 3, 0), +gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pgn_1_v[148], 15, 3), +gsSPNTrianglesInit_5b( + 7, // tri count + 2, 3, 4, // tri0 + 1, 2, 5, // tri1 + 2, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 1, 10, 0, // tri1 + 2, 11, 12, // tri2 + 2, 0, 13 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 14, 15, 16, // tri0 + 17, 14, 16, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_pgn_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pgn_1_v[163], 3, 0), +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pgn_1_v[166], 9, 3), +gsSPNTrianglesInit_5b( + 6, // tri count + 2, 3, 4, // tri0 + 1, 2, 5, // tri1 + 1, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 0, 8, 9, // tri0 + 2, 0, 10, // tri1 + 0, 1, 11, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_pgn_model[] = { +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pgn_1_v[115], 3, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pgn_1_v[118], 15, 3), +gsSPNTrianglesInit_5b( + 7, // tri count + 2, 3, 4, // tri0 + 2, 1, 5, // tri1 + 2, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 0, 8, 9, // tri0 + 0, 10, 1, // tri1 + 2, 11, 12, // tri2 + 0, 2, 13 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 14, 15, 16, // tri0 + 14, 16, 17, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_pgn_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pgn_1_v[133], 3, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pgn_1_v[136], 9, 3), +gsSPNTrianglesInit_5b( + 6, // tri count + 2, 3, 4, // tri0 + 2, 1, 5, // tri1 + 1, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 0, 8, 9, // tri0 + 0, 2, 10, // tri1 + 1, 0, 11, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_pgn_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pgn_1_v[175], 11, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pgn_1_v[186], 19, 11), +gsSPNTrianglesInit_5b( + 13, // tri count + 1, 12, 11, // tri0 + 3, 0, 13, // tri1 + 3, 14, 15 // tri2 +), +gsSPNTriangles_5b( + 0, 17, 16, // tri0 + 0, 2, 18, // tri1 + 9, 5, 19, // tri2 + 7, 6, 20 // tri3 +), +gsSPNTriangles_5b( + 5, 8, 21, // tri0 + 10, 23, 22, // tri1 + 6, 4, 24, // tri2 + 6, 26, 25 // tri3 +), +gsSPNTriangles_5b( + 5, 28, 27, // tri0 + 2, 1, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&pgn_1_v[205], 5, 11), +gsSPNTrianglesInit_5b( + 3, // tri count + 1, 9, 11, // tri0 + 9, 13, 12, // tri1 + 4, 15, 14 // tri2 +), +gsSPVertex(&pgn_1_v[210], 21, 0), +gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 9, 10, 11, // tri1 + 12, 13, 11, // tri2 + 1, 13, 12 // tri3 +), +gsSPNTriangles_5b( + 14, 6, 4, // tri0 + 1, 15, 2, // tri1 + 4, 16, 14, // tri2 + 12, 15, 1 // tri3 +), +gsSPNTriangles_5b( + 14, 8, 7, // tri0 + 17, 16, 3, // tri1 + 3, 16, 4, // tri2 + 17, 18, 16 // tri3 +), +gsSPNTriangles_5b( + 2, 15, 19, // tri0 + 15, 20, 19, // tri1 + 8, 10, 9, // tri2 + 11, 13, 0 // tri3 +), +gsSPNTriangles_5b( + 11, 10, 12, // tri0 + 7, 6, 14, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail1_pgn_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pgn_1_v[231], 5, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pgn_1_v[236], 14, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 3, 2, 5, // tri0 + 0, 4, 6, // tri1 + 4, 3, 7 // tri2 +), +gsSPNTriangles_5b( + 3, 9, 8, // tri0 + 0, 10, 1, // tri1 + 2, 1, 11, // tri2 + 2, 12, 13 // tri3 +), +gsSPNTriangles_5b( + 0, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 16, 17, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot3_pgn_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pgn_1_v[301], 4, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pgn_1_v[305], 18, 4), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 4, 5, // tri0 + 2, 1, 6, // tri1 + 2, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 0, 3, 9, // tri0 + 1, 0, 10, // tri1 + 0, 11, 12, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 5, // tri count + 13, 14, 15, // tri0 + 16, 17, 13, // tri1 + 13, 15, 16 // tri2 +), +gsSPNTriangles_5b( + 18, 19, 20, // tri0 + 18, 20, 21, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_pgn_model[] = { +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pgn_1_v[323], 5, 0), +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pgn_1_v[328], 14, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 2, 5, 6, // tri0 + 2, 3, 7, // tri1 + 3, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 0, 2, 10, // tri0 + 4, 1, 11, // tri1 + 2, 12, 13, // tri2 + 4, 14, 15 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 16, 17, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_pgn_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pgn_1_v[342], 10, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 7, 0, 8, // tri0 + 6, 9, 4, // tri1 + 0, 7, 1, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot3_pgn_model[] = { +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pgn_1_v[250], 4, 0), +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pgn_1_v[254], 18, 4), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 4, 5, // tri0 + 1, 6, 7, // tri1 + 1, 2, 8 // tri2 +), +gsSPNTriangles_5b( + 3, 0, 9, // tri0 + 0, 1, 10, // tri1 + 0, 11, 12, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 5, // tri count + 13, 14, 15, // tri0 + 15, 16, 17, // tri1 + 17, 13, 15 // tri2 +), +gsSPNTriangles_5b( + 18, 19, 20, // tri0 + 18, 20, 21, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_pgn_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pgn_1_v[272], 5, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pgn_1_v[277], 14, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 2, 5, 6, // tri0 + 3, 2, 7, // tri1 + 3, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 2, 0, 10, // tri0 + 1, 4, 11, // tri1 + 2, 12, 13, // tri2 + 4, 14, 15 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 16, 17, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_pgn_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pgn_1_v[291], 10, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 7, 3, 8, // tri0 + 6, 9, 4, // tri1 + 2, 8, 3, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx base_pgn_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pgn_1_v[352], 30, 0), +gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 +), +gsSPNTriangles_5b( + 2, 8, 6, // tri0 + 9, 10, 11, // tri1 + 11, 12, 9, // tri2 + 9, 0, 10 // tri3 +), +gsSPNTriangles_5b( + 1, 13, 8, // tri0 + 10, 0, 2, // tri1 + 7, 14, 6, // tri2 + 6, 14, 2 // tri3 +), +gsSPNTriangles_5b( + 8, 2, 1, // tri0 + 5, 7, 3, // tri1 + 7, 5, 12, // tri2 + 7, 12, 11 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 18, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 21, 22, 15 // tri2 +), +gsSPNTriangles_5b( + 20, 23, 18, // tri0 + 24, 15, 17, // tri1 + 21, 18, 23, // tri2 + 21, 25, 18 // tri3 +), +gsSPNTriangles_5b( + 21, 24, 25, // tri0 + 22, 21, 26, // tri1 + 17, 27, 24, // tri2 + 15, 22, 16 // tri3 +), +gsSPNTriangles_5b( + 22, 26, 28, // tri0 + 26, 29, 28, // tri1 + 28, 16, 22, // tri2 + 20, 29, 26 // tri3 +), +gsSPNTriangles_5b( + 20, 26, 23, // tri0 + 15, 24, 21, // tri1 + 23, 26, 21, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_pgn_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_pgn_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-700,0 }, + /* joint 3 */ { Lfoot1_pgn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_pgn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { Lfoot3_pgn_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,700,0 }, + /* joint 7 */ { Rfoot1_pgn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_pgn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { Rfoot3_pgn_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, -200,0,-1200 }, + /* joint 11 */ { tail1_pgn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_pgn_model, 3, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 950,-1650,0 }, + /* joint 15 */ { Larm1_pgn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_pgn_model, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 950,1650,0 }, + /* joint 18 */ { Rarm1_pgn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_pgn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 651,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 649,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 1500,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 400,0,1300 }, + /* joint 23 */ { mouth_pgn_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_pgn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 950,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_pgn_1 = { 26, 15, cKF_je_r_pgn_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/pig_1.c b/src/data/npc/model/mdl/pig_1.c new file mode 100644 index 00000000..ff1c8320 --- /dev/null +++ b/src/data/npc/model/mdl/pig_1.c @@ -0,0 +1,626 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx pig_1_v[] = { +#include "assets/npc/mdl/pig_1_v.inc" +}; + +static Gfx head_pig_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pig_1_v[0], 23, 0), +gsSPNTrianglesInit_5b( + 31, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 1 // tri2 +), +gsSPNTriangles_5b( + 7, 5, 4, // tri0 + 5, 8, 3, // tri1 + 0, 4, 9, // tri2 + 0, 9, 10 // tri3 +), +gsSPNTriangles_5b( + 4, 3, 9, // tri0 + 11, 12, 4, // tri1 + 11, 4, 0, // tri2 + 13, 10, 9 // tri3 +), +gsSPNTriangles_5b( + 13, 9, 14, // tri0 + 14, 9, 3, // tri1 + 13, 6, 10, // tri2 + 6, 13, 15 // tri3 +), +gsSPNTriangles_5b( + 6, 15, 16, // tri0 + 1, 6, 16, // tri1 + 17, 14, 18, // tri2 + 18, 3, 8 // tri3 +), +gsSPNTriangles_5b( + 18, 14, 3, // tri0 + 17, 15, 13, // tri1 + 17, 13, 14, // tri2 + 4, 12, 7 // tri3 +), +gsSPNTriangles_5b( + 2, 11, 0, // tri0 + 11, 2, 19, // tri1 + 20, 21, 12, // tri2 + 20, 12, 11 // tri3 +), +gsSPNTriangles_5b( + 12, 21, 22, // tri0 + 22, 7, 12, // tri1 + 19, 20, 11, // tri2 + 10, 6, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&pig_1_v[23], 30, 0), +gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 4, 3 // tri2 +), +gsSPNTriangles_5b( + 7, 1, 0, // tri0 + 6, 1, 7, // tri1 + 7, 0, 8, // tri2 + 8, 0, 9 // tri3 +), +gsSPNTriangles_5b( + 3, 2, 1, // tri0 + 10, 11, 6, // tri1 + 7, 12, 10, // tri2 + 13, 2, 14 // tri3 +), +gsSPNTriangles_5b( + 15, 9, 0, // tri0 + 16, 4, 6, // tri1 + 11, 17, 16, // tri2 + 11, 16, 6 // tri3 +), +gsSPNTriangles_5b( + 0, 13, 15, // tri0 + 15, 18, 9, // tri1 + 10, 6, 7, // tri2 + 8, 12, 7 // tri3 +), +gsSPNTriangles_5b( + 3, 1, 6, // tri0 + 2, 13, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 15, // tri count + 19, 20, 21, // tri0 + 22, 23, 19, // tri1 + 24, 25, 22 // tri2 +), +gsSPNTriangles_5b( + 22, 26, 23, // tri0 + 26, 22, 25, // tri1 + 20, 27, 21, // tri2 + 28, 21, 27 // tri3 +), +gsSPNTriangles_5b( + 21, 29, 19, // tri0 + 19, 29, 22, // tri1 + 24, 28, 27, // tri2 + 21, 28, 24 // tri3 +), +gsSPNTriangles_5b( + 24, 22, 29, // tri0 + 24, 29, 21, // tri1 + 26, 25, 24, // tri2 + 24, 27, 26 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&pig_1_v[53], 14, 0), +gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 5, 2, 1 // tri2 +), +gsSPNTriangles_5b( + 6, 7, 4, // tri0 + 5, 1, 8, // tri1 + 1, 4, 8, // tri2 + 5, 9, 10 // tri3 +), +gsSPNTriangles_5b( + 4, 3, 6, // tri0 + 10, 11, 5, // tri1 + 3, 0, 12, // tri2 + 2, 11, 13 // tri3 +), +gsSPNTriangles_5b( + 4, 7, 8, // tri0 + 1, 0, 4, // tri1 + 8, 9, 5, // tri2 + 2, 5, 11 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_pig_model[] = { +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pig_1_v[103], 5, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pig_1_v[108], 16, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 0, 1, 11, // tri0 + 2, 4, 12, // tri1 + 0, 13, 14, // tri2 + 3, 0, 15 // tri3 +), +gsSPNTriangles_5b( + 4, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 20, 19, 18, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_pig_model[] = { +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pig_1_v[124], 4, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pig_1_v[128], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 2, 0, 8 // tri2 +), +gsSPNTriangles_5b( + 3, 2, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 1, 3, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_pig_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pig_1_v[67], 5, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pig_1_v[72], 16, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 +), +gsSPNTriangles_5b( + 3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_pig_model[] = { +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pig_1_v[88], 4, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pig_1_v[92], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_pig_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pig_1_v[139], 7, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 252, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pig_1_v[146], 20, 7), +gsSPNTrianglesInit_5b( + 13, // tri count + 4, 7, 1, // tri0 + 5, 0, 8, // tri1 + 2, 6, 9 // tri2 +), +gsSPNTriangles_5b( + 6, 3, 10, // tri0 + 1, 11, 12, // tri1 + 0, 13, 14, // tri2 + 0, 15, 16 // tri3 +), +gsSPNTriangles_5b( + 1, 18, 17, // tri0 + 2, 19, 20, // tri1 + 2, 21, 0, // tri2 + 3, 22, 23 // tri3 +), +gsSPNTriangles_5b( + 6, 24, 25, // tri0 + 3, 1, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&pig_1_v[166], 11, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 8, 1, 9, // tri0 + 10, 6, 0, // tri1 + 2, 1, 8, // tri2 + 7, 3, 5 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail1_pig_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pig_1_v[177], 31, 0), +gsSPNTrianglesInit_5b( + 27, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 7, 9, 10, // tri1 + 11, 12, 4, // tri2 + 11, 4, 13 // tri3 +), +gsSPNTriangles_5b( + 14, 15, 12, // tri0 + 16, 17, 18, // tri1 + 0, 3, 19, // tri2 + 0, 19, 20 // tri3 +), +gsSPNTriangles_5b( + 21, 22, 23, // tri0 + 24, 25, 26, // tri1 + 27, 12, 15, // tri2 + 4, 12, 27 // tri3 +), +gsSPNTriangles_5b( + 27, 5, 4, // tri0 + 4, 6, 25, // tri1 + 22, 14, 12, // tri2 + 17, 16, 24 // tri3 +), +gsSPNTriangles_5b( + 23, 7, 28, // tri0 + 25, 24, 4, // tri1 + 12, 23, 22, // tri2 + 24, 26, 17 // tri3 +), +gsSPNTriangles_5b( + 28, 21, 23, // tri0 + 18, 29, 30, // tri1 + 18, 30, 16, // tri2 + 10, 28, 7 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_pig_model[] = { +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pig_1_v[257], 5, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pig_1_v[262], 17, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 0, 5, // tri0 + 0, 7, 6, // tri1 + 2, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 0, 1, 10, // tri0 + 1, 2, 11, // tri1 + 2, 4, 12, // tri2 + 1, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 15, 16, 17, // tri0 + 18, 19, 15, // tri1 + 20, 17, 21 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_pig_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pig_1_v[279], 4, 0), +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 252, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pig_1_v[283], 22, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 3, 4, // tri0 + 0, 5, 1, // tri1 + 1, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 3, 2, 8, // tri0 + 2, 9, 10, // tri1 + 2, 1, 11, // tri2 + 0, 13, 12 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 14, 15, 16, // tri0 + 14, 16, 17, // tri1 + 17, 18, 14 // tri2 +), +gsSPNTriangles_5b( + 15, 19, 20, // tri0 + 21, 22, 18, // tri1 + 20, 16, 15, // tri2 + 17, 21, 18 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 252, 124), +gsSPNTrianglesInit_5b( + 1, // tri count + 23, 24, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_pig_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pig_1_v[208], 5, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pig_1_v[213], 17, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 3, 5, // tri0 + 0, 7, 6, // tri1 + 2, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 10, // tri0 + 2, 1, 11, // tri1 + 4, 2, 12, // tri2 + 1, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 15, 16, 17, // tri0 + 17, 18, 19, // tri1 + 20, 15, 21 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_pig_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pig_1_v[230], 5, 0), +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 252, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pig_1_v[235], 22, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 2, 3, 5, // tri0 + 1, 6, 7, // tri1 + 0, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 1, 2, 10, // tri0 + 2, 11, 12, // tri1 + 1, 13, 0, // tri2 + 4, 0, 14 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 15, 21, 16 // tri2 +), +gsSPNTriangles_5b( + 20, 22, 18, // tri0 + 23, 15, 17, // tri1 + 17, 19, 23, // tri2 + 19, 18, 23 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 252, 124), +gsSPNTrianglesInit_5b( + 1, // tri count + 24, 25, 26, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx base_pig_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 252, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pig_1_v[305], 14, 0), +gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 3 // tri2 +), +gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 4, 0, 2, // tri1 + 0, 9, 1, // tri2 + 7, 10, 11 // tri3 +), +gsSPNTriangles_5b( + 7, 11, 8, // tri0 + 10, 12, 11, // tri1 + 3, 0, 4, // tri2 + 13, 11, 12 // tri3 +), +gsSPNTriangles_5b( + 8, 6, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_pig_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_pig_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_pig_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_pig_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_pig_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_pig_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 75,0,-475 }, + /* joint 11 */ { tail1_pig_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_pig_model, 3, cKF_JOINT_FLAG_DISP_OPA, 325,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,-450,0 }, + /* joint 15 */ { Larm1_pig_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_pig_model, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,450,0 }, + /* joint 18 */ { Rarm1_pig_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_pig_model, 1, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 675,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,600 }, + /* joint 23 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_pig_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1300,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_pig_1 = { 26, 12, cKF_je_r_pig_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/pkn_1.c b/src/data/npc/model/mdl/pkn_1.c new file mode 100644 index 00000000..2f5e1128 --- /dev/null +++ b/src/data/npc/model/mdl/pkn_1.c @@ -0,0 +1,600 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx pkn_1_v[] = { +#include "assets/npc/mdl/pkn_1_v.inc" +}; + +static Gfx head_pkn_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pkn_1_v[0], 31, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 4, 5 // tri2 +), +gsSPNTriangles_5b( + 6, 4, 7, // tri0 + 4, 0, 3, // tri1 + 5, 1, 0, // tri2 + 3, 8, 5 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 32, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsSPNTrianglesInit_5b( + 28, // tri count + 9, 10, 11, // tri0 + 12, 11, 13, // tri1 + 11, 10, 14 // tri2 +), +gsSPNTriangles_5b( + 14, 10, 15, // tri0 + 14, 15, 16, // tri1 + 17, 18, 19, // tri2 + 20, 15, 21 // tri3 +), +gsSPNTriangles_5b( + 16, 15, 20, // tri0 + 21, 22, 20, // tri1 + 19, 23, 17, // tri2 + 19, 12, 23 // tri3 +), +gsSPNTriangles_5b( + 23, 12, 13, // tri0 + 24, 12, 19, // tri1 + 10, 21, 15, // tri2 + 24, 10, 9 // tri3 +), +gsSPNTriangles_5b( + 24, 21, 10, // tri0 + 25, 26, 17, // tri1 + 22, 27, 20, // tri2 + 28, 18, 17 // tri3 +), +gsSPNTriangles_5b( + 17, 23, 25, // tri0 + 13, 25, 23, // tri1 + 20, 29, 16, // tri2 + 21, 24, 30 // tri3 +), +gsSPNTriangles_5b( + 30, 24, 19, // tri0 + 30, 22, 21, // tri1 + 19, 18, 30, // tri2 + 11, 12, 9 // tri3 +), +gsSPNTriangles_5b( + 9, 12, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 252, 255, 255), +gsSPVertex(&pkn_1_v[31], 26, 0), +gsSPNTrianglesInit_5b( + 43, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 0, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 6, 5, 7, // tri0 + 8, 1, 9, // tri1 + 10, 3, 0, // tri2 + 2, 1, 8 // tri3 +), +gsSPNTriangles_5b( + 4, 3, 11, // tri0 + 12, 13, 14, // tri1 + 11, 3, 10, // tri2 + 14, 13, 0 // tri3 +), +gsSPNTriangles_5b( + 0, 13, 15, // tri0 + 15, 13, 12, // tri1 + 16, 17, 18, // tri2 + 18, 17, 0 // tri3 +), +gsSPNTriangles_5b( + 9, 1, 0, // tri0 + 2, 8, 19, // tri1 + 0, 2, 18, // tri2 + 0, 17, 20 // tri3 +), +gsSPNTriangles_5b( + 20, 17, 16, // tri0 + 7, 5, 21, // tri1 + 22, 23, 24, // tri2 + 24, 23, 0 // tri3 +), +gsSPNTriangles_5b( + 21, 5, 0, // tri0 + 0, 6, 24, // tri1 + 0, 23, 25, // tri2 + 25, 23, 22 // tri3 +), +gsSPNTriangles_5b( + 6, 7, 22, // tri0 + 15, 9, 0, // tri1 + 0, 25, 14, // tri2 + 0, 20, 10 // tri3 +), +gsSPNTriangles_5b( + 4, 21, 0, // tri0 + 8, 9, 15, // tri1 + 14, 25, 22, // tri2 + 14, 22, 12 // tri3 +), +gsSPNTriangles_5b( + 7, 21, 4, // tri0 + 10, 20, 16, // tri1 + 10, 16, 11, // tri2 + 15, 12, 8 // tri3 +), +gsSPNTriangles_5b( + 22, 24, 6, // tri0 + 4, 11, 7, // tri1 + 18, 2, 19, // tri2 + 19, 16, 18 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pkn_1_v[57], 22, 0), +gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 +), +gsSPNTriangles_5b( + 0, 2, 7, // tri0 + 4, 8, 7, // tri1 + 9, 2, 1, // tri2 + 6, 8, 4 // tri3 +), +gsSPNTriangles_5b( + 1, 10, 9, // tri0 + 11, 12, 9, // tri1 + 8, 0, 7, // tri2 + 11, 9, 10 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 48, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 8, // tri count + 13, 14, 15, // tri0 + 16, 14, 13, // tri1 + 14, 16, 17 // tri2 +), +gsSPNTriangles_5b( + 18, 15, 14, // tri0 + 13, 19, 16, // tri1 + 14, 17, 20, // tri2 + 15, 21, 13 // tri3 +), +gsSPNTriangles_5b( + 20, 18, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_pkn_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pkn_1_v[113], 4, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pkn_1_v[117], 16, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 4, 5, // tri0 + 2, 0, 6, // tri1 + 2, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 0, 1, 9, // tri0 + 1, 11, 10, // tri1 + 2, 12, 3, // tri2 + 1, 3, 13 // tri3 +), +gsSPNTriangles_5b( + 1, 15, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 16, 17, 18, // tri0 + 18, 17, 19, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_pkn_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pkn_1_v[133], 3, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pkn_1_v[136], 11, 3), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 2, 3, // tri0 + 0, 4, 5, // tri1 + 1, 7, 6 // tri2 +), +gsSPNTriangles_5b( + 2, 8, 9, // tri0 + 2, 1, 10, // tri1 + 1, 0, 11, // tri2 + 1, 12, 13 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_pkn_model[] = { +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pkn_1_v[79], 4, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pkn_1_v[83], 16, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 4, 5, // tri0 + 0, 2, 6, // tri1 + 2, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 9, // tri0 + 1, 11, 10, // tri1 + 3, 12, 2, // tri2 + 3, 1, 13 // tri3 +), +gsSPNTriangles_5b( + 1, 15, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 16, 17, 18, // tri0 + 19, 17, 16, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_pkn_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pkn_1_v[99], 3, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pkn_1_v[102], 11, 3), +gsSPNTrianglesInit_5b( + 7, // tri count + 2, 0, 3, // tri0 + 0, 4, 5, // tri1 + 1, 7, 6 // tri2 +), +gsSPNTriangles_5b( + 2, 8, 9, // tri0 + 1, 2, 10, // tri1 + 0, 1, 11, // tri2 + 1, 12, 13 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_pkn_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pkn_1_v[147], 6, 0), +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pkn_1_v[153], 20, 6), +gsSPNTrianglesInit_5b( + 13, // tri count + 4, 6, 1, // tri0 + 4, 0, 7, // tri1 + 2, 5, 8 // tri2 +), +gsSPNTriangles_5b( + 5, 3, 9, // tri0 + 1, 10, 11, // tri1 + 0, 12, 13, // tri2 + 0, 14, 15 // tri3 +), +gsSPNTriangles_5b( + 3, 1, 16, // tri0 + 5, 17, 18, // tri1 + 3, 19, 20, // tri2 + 2, 21, 0 // tri3 +), +gsSPNTriangles_5b( + 1, 23, 22, // tri0 + 2, 24, 25, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&pkn_1_v[173], 7, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 0, 5, 1 // tri2 +), +gsSPNTriangles_5b( + 4, 3, 6, // tri0 + 4, 5, 0, // tri1 + 4, 0, 2, // tri2 + 6, 5, 4 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_pkn_model[] = { +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pkn_1_v[228], 5, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pkn_1_v[233], 17, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 1, 5, 6, // tri0 + 2, 3, 7, // tri1 + 1, 2, 8 // tri2 +), +gsSPNTriangles_5b( + 0, 1, 9, // tri0 + 4, 0, 10, // tri1 + 0, 12, 11, // tri2 + 2, 14, 13 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 20, 21, 16 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_pkn_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pkn_1_v[250], 4, 0), +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pkn_1_v[254], 22, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 3, 4, // tri0 + 0, 5, 1, // tri1 + 0, 7, 6 // tri2 +), +gsSPNTriangles_5b( + 2, 1, 8, // tri0 + 2, 9, 10, // tri1 + 1, 11, 12, // tri2 + 3, 2, 13 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 14, 15, 16, // tri0 + 17, 18, 19, // tri1 + 15, 20, 16 // tri2 +), +gsSPNTriangles_5b( + 21, 19, 18, // tri0 + 21, 18, 14, // tri1 + 14, 16, 21, // tri2 + 19, 22, 17 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 1, // tri count + 23, 24, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_pkn_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pkn_1_v[180], 5, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pkn_1_v[185], 17, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 1, 5, 6, // tri0 + 3, 2, 7, // tri1 + 2, 1, 8 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 9, // tri0 + 0, 4, 10, // tri1 + 0, 12, 11, // tri2 + 2, 14, 13 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 16, 21, 18 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_pkn_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pkn_1_v[202], 4, 0), +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pkn_1_v[206], 22, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 0, 4, // tri0 + 1, 5, 0, // tri1 + 0, 7, 6 // tri2 +), +gsSPNTriangles_5b( + 1, 2, 8, // tri0 + 2, 9, 10, // tri1 + 1, 11, 12, // tri2 + 2, 3, 13 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 14, 15, 16, // tri0 + 17, 18, 19, // tri1 + 14, 20, 15 // tri2 +), +gsSPNTriangles_5b( + 18, 17, 21, // tri0 + 16, 18, 21, // tri1 + 21, 14, 16, // tri2 + 19, 22, 17 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 1, // tri count + 23, 24, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx base_pkn_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pkn_1_v[276], 12, 0), +gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 3 // tri2 +), +gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 4, 0, 2, // tri1 + 0, 9, 1, // tri2 + 7, 10, 11 // tri3 +), +gsSPNTriangles_5b( + 7, 11, 8, // tri0 + 10, 1, 11, // tri1 + 3, 0, 4, // tri2 + 9, 11, 1 // tri3 +), +gsSPNTriangles_5b( + 8, 6, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_pkn_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_pkn_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_pkn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_pkn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_pkn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_pkn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 75,0,-475 }, + /* joint 11 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_pkn_model, 3, cKF_JOINT_FLAG_DISP_OPA, 325,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,-450,0 }, + /* joint 15 */ { Larm1_pkn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_pkn_model, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,450,0 }, + /* joint 18 */ { Rarm1_pkn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_pkn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 675,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,600 }, + /* joint 23 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_pkn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1100,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_pkn_1 = { 26, 11, cKF_je_r_pkn_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/pla_1.c b/src/data/npc/model/mdl/pla_1.c new file mode 100644 index 00000000..167f096c --- /dev/null +++ b/src/data/npc/model/mdl/pla_1.c @@ -0,0 +1,789 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx pla_1_v[] = { +#include "assets/npc/mdl/pla_1_v.inc" +}; + +static Gfx head_pla_model[] = { +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pla_1_v[0], 7, 0), +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pla_1_v[7], 23, 7), +gsSPNTrianglesInit_5b( + 12, // tri count + 1, 7, 8, // tri0 + 6, 9, 10, // tri1 + 3, 11, 12 // tri2 +), +gsSPNTriangles_5b( + 0, 13, 14, // tri0 + 4, 15, 16, // tri1 + 6, 17, 18, // tri2 + 0, 19, 2 // tri3 +), +gsSPNTriangles_5b( + 2, 20, 21, // tri0 + 6, 22, 23, // tri1 + 6, 24, 25, // tri2 + 6, 26, 27 // tri3 +), +gsSPNTriangles_5b( + 6, 29, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&pla_1_v[30], 22, 7), +gsSPNTrianglesInit_5b( + 6, // tri count + 2, 7, 1, // tri0 + 3, 1, 8, // tri1 + 0, 4, 9 // tri2 +), +gsSPNTriangles_5b( + 4, 6, 10, // tri0 + 6, 3, 11, // tri1 + 2, 12, 13, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 1, // tri count + 5, 15, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 12, // tri count + 16, 17, 18, // tri0 + 19, 20, 16, // tri1 + 21, 22, 23 // tri2 +), +gsSPNTriangles_5b( + 16, 20, 24, // tri0 + 25, 26, 21, // tri1 + 27, 17, 16, // tri2 + 21, 23, 28 // tri3 +), +gsSPNTriangles_5b( + 28, 25, 21, // tri0 + 25, 28, 16, // tri1 + 16, 28, 23, // tri2 + 18, 25, 16 // tri3 +), +gsSPNTriangles_5b( + 16, 23, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&pla_1_v[52], 32, 0), +gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 4, 3, 11, // tri1 + 12, 13, 14, // tri2 + 15, 16, 4 // tri3 +), +gsSPNTriangles_5b( + 17, 18, 19, // tri0 + 15, 20, 21, // tri1 + 22, 23, 24, // tri2 + 12, 25, 13 // tri3 +), +gsSPNTriangles_5b( + 26, 25, 12, // tri0 + 19, 18, 27, // tri1 + 23, 28, 29, // tri2 + 30, 10, 31 // tri3 +), +gsSPVertex(&pla_1_v[84], 32, 0), +gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 10, 11, 12, // tri1 + 13, 4, 14, // tri2 + 15, 16, 9 // tri3 +), +gsSPNTriangles_5b( + 6, 5, 4, // tri0 + 4, 13, 17, // tri1 + 18, 6, 4, // tri2 + 15, 9, 19 // tri3 +), +gsSPNTriangles_5b( + 20, 21, 22, // tri0 + 23, 24, 25, // tri1 + 26, 0, 20, // tri2 + 27, 28, 29 // tri3 +), +gsSPNTriangles_5b( + 20, 30, 26, // tri0 + 22, 30, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&pla_1_v[115], 32, 0), +gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 1, 0, 13, // tri2 + 14, 15, 16 // tri3 +), +gsSPNTriangles_5b( + 16, 17, 14, // tri0 + 18, 13, 19, // tri1 + 20, 21, 16, // tri2 + 9, 22, 23 // tri3 +), +gsSPNTriangles_5b( + 24, 25, 26, // tri0 + 27, 28, 29, // tri1 + 30, 9, 8, // tri2 + 12, 31, 10 // tri3 +), +gsSPVertex(&pla_1_v[147], 23, 0), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 4, 9, 10, // tri0 + 11, 12, 13, // tri1 + 14, 15, 16, // tri2 + 17, 18, 19 // tri3 +), +gsSPNTriangles_5b( + 20, 21, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&pla_1_v[170], 21, 0), +gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 5, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 0, 2, 8, // tri0 + 0, 8, 9, // tri1 + 10, 11, 6, // tri2 + 10, 6, 12 // tri3 +), +gsSPNTriangles_5b( + 4, 13, 8, // tri0 + 11, 14, 15, // tri1 + 4, 8, 2, // tri2 + 6, 11, 15 // tri3 +), +gsSPNTriangles_5b( + 3, 2, 1, // tri0 + 15, 7, 6, // tri1 + 12, 6, 5, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 3, // tri count + 16, 17, 18, // tri0 + 16, 19, 17, // tri1 + 20, 19, 16 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000180, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&pla_1_v[191], 24, 0), +gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 6, 8, 2, // tri0 + 5, 9, 3, // tri1 + 2, 10, 0, // tri2 + 4, 11, 12 // tri3 +), +gsSPNTriangles_5b( + 3, 13, 14, // tri0 + 4, 3, 11, // tri1 + 8, 7, 15, // tri2 + 2, 8, 10 // tri3 +), +gsSPNTriangles_5b( + 1, 0, 16, // tri0 + 1, 16, 17, // tri1 + 18, 19, 14, // tri2 + 18, 14, 13 // tri3 +), +gsSPNTriangles_5b( + 1, 17, 20, // tri0 + 1, 20, 21, // tri1 + 2, 1, 21, // tri2 + 18, 13, 9 // tri3 +), +gsSPNTriangles_5b( + 18, 9, 22, // tri0 + 4, 23, 5, // tri1 + 9, 13, 3, // tri2 + 2, 21, 6 // tri3 +), +gsSPNTriangles_5b( + 14, 11, 3, // tri0 + 12, 23, 4, // tri1 + 15, 10, 8, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&pla_1_v[215], 29, 0), +gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 4, 7, 8, // tri0 + 4, 8, 5, // tri1 + 7, 0, 3, // tri2 + 7, 3, 8 // tri3 +), +gsSPNTriangles_5b( + 9, 4, 6, // tri0 + 10, 11, 6, // tri1 + 10, 6, 5, // tri2 + 10, 5, 12 // tri3 +), +gsSPNTriangles_5b( + 6, 11, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 2, // tri count + 13, 14, 15, // tri0 + 15, 16, 13, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 13, // tri count + 17, 18, 19, // tri0 + 17, 20, 21, // tri1 + 22, 23, 24 // tri2 +), +gsSPNTriangles_5b( + 25, 17, 19, // tri0 + 18, 26, 27, // tri1 + 25, 22, 17, // tri2 + 17, 22, 20 // tri3 +), +gsSPNTriangles_5b( + 23, 22, 25, // tri0 + 19, 18, 28, // tri1 + 27, 28, 18, // tri2 + 24, 20, 22 // tri3 +), +gsSPNTriangles_5b( + 21, 26, 18, // tri0 + 21, 18, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_pla_model[] = { +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pla_1_v[279], 4, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pla_1_v[283], 16, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 4, 5, // tri0 + 1, 6, 7, // tri1 + 2, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 1, 10, 11, // tri0 + 0, 2, 12, // tri1 + 0, 13, 1, // tri2 + 2, 3, 14 // tri3 +), +gsSPNTriangles_5b( + 3, 1, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 16, 17, 18, // tri0 + 19, 18, 17, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_pla_model[] = { +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pla_1_v[299], 4, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pla_1_v[303], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 1, 2, 4, // tri0 + 0, 3, 5, // tri1 + 3, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 2, 8, 9, // tri0 + 0, 10, 11, // tri1 + 1, 13, 12, // tri2 + 0, 14, 2 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_pla_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pla_1_v[244], 4, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pla_1_v[248], 16, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 4, 5, // tri0 + 1, 6, 7, // tri1 + 2, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 1, 10, 11, // tri0 + 2, 0, 12, // tri1 + 1, 13, 0, // tri2 + 3, 2, 14 // tri3 +), +gsSPNTriangles_5b( + 1, 3, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_pla_model[] = { +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pla_1_v[264], 4, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pla_1_v[268], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 2, 1, 4, // tri0 + 3, 0, 5, // tri1 + 3, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 2, 8, 9, // tri0 + 0, 10, 11, // tri1 + 1, 13, 12, // tri2 + 2, 14, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_pla_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pla_1_v[314], 9, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pla_1_v[323], 11, 9), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 9, // tri0 + 1, 6, 10, // tri1 + 2, 0, 11 // tri2 +), +gsSPNTriangles_5b( + 0, 13, 12, // tri0 + 1, 15, 14, // tri1 + 6, 16, 17, // tri2 + 2, 18, 19 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&pla_1_v[334], 17, 9), +gsSPNTrianglesInit_5b( + 8, // tri count + 7, 9, 10, // tri0 + 4, 8, 11, // tri1 + 4, 12, 13 // tri2 +), +gsSPNTriangles_5b( + 8, 7, 14, // tri0 + 7, 3, 15, // tri1 + 7, 16, 17, // tri2 + 5, 4, 18 // tri3 +), +gsSPNTriangles_5b( + 4, 19, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 2, // tri count + 21, 22, 23, // tri0 + 24, 25, 21, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&pla_1_v[351], 15, 0), +gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 2, 9, 0, // tri1 + 6, 11, 7, // tri2 + 9, 12, 10 // tri3 +), +gsSPNTriangles_5b( + 8, 13, 6, // tri0 + 10, 13, 8, // tri1 + 5, 7, 3, // tri2 + 14, 8, 7 // tri3 +), +gsSPNTriangles_5b( + 9, 8, 14, // tri0 + 14, 0, 9, // tri1 + 7, 5, 14, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail1_pla_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pla_1_v[366], 3, 0), +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pla_1_v[369], 16, 3), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 2, 3, // tri0 + 2, 4, 5, // tri1 + 1, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 8, // tri0 + 0, 9, 10, // tri1 + 2, 1, 11, // tri2 + 1, 12, 13 // tri3 +), +gsSPNTrianglesInit_5b( + 4, // tri count + 14, 15, 16, // tri0 + 17, 18, 16, // tri1 + 16, 15, 17 // tri2 +), +gsSPNTriangles_5b( + 16, 18, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_pla_model[] = { +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pla_1_v[410], 4, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pla_1_v[414], 14, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 1, 4, 5, // tri0 + 2, 3, 6, // tri1 + 1, 2, 7 // tri2 +), +gsSPNTriangles_5b( + 0, 1, 8, // tri0 + 3, 0, 9, // tri1 + 0, 11, 10, // tri2 + 2, 13, 12 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 14, 15, 16, // tri0 + 14, 16, 17, // tri1 + 17, 16, 15 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_pla_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pla_1_v[428], 7, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 1, 5, 2 // tri2 +), +gsSPNTriangles_5b( + 6, 4, 3, // tri0 + 6, 3, 0, // tri1 + 0, 2, 6, // tri2 + 4, 5, 1 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_pla_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pla_1_v[385], 4, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&pla_1_v[389], 14, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 1, 4, 5, // tri0 + 3, 2, 6, // tri1 + 2, 1, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 8, // tri0 + 0, 3, 9, // tri1 + 0, 11, 10, // tri2 + 2, 13, 12 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 14, 15, 16, // tri0 + 17, 14, 16, // tri1 + 15, 14, 17 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_pla_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pla_1_v[403], 7, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 0, 5, 1 // tri2 +), +gsSPNTriangles_5b( + 4, 3, 6, // tri0 + 2, 4, 6, // tri1 + 6, 0, 2, // tri2 + 1, 5, 3 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx base_pla_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&pla_1_v[435], 24, 0), +gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 5, 1, 0 // tri2 +), +gsSPNTriangles_5b( + 6, 5, 0, // tri0 + 0, 2, 7, // tri1 + 5, 8, 9, // tri2 + 10, 3, 2 // tri3 +), +gsSPNTriangles_5b( + 2, 1, 10, // tri0 + 9, 1, 5, // tri1 + 5, 11, 8, // tri2 + 8, 3, 10 // tri3 +), +gsSPNTriangles_5b( + 8, 10, 9, // tri0 + 7, 2, 4, // tri1 + 11, 5, 6, // tri2 + 7, 12, 0 // tri3 +), +gsSPNTriangles_5b( + 0, 12, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 12, // tri count + 13, 14, 15, // tri0 + 16, 15, 17, // tri1 + 17, 15, 14 // tri2 +), +gsSPNTriangles_5b( + 18, 19, 20, // tri0 + 21, 22, 23, // tri1 + 20, 16, 18, // tri2 + 23, 14, 21 // tri3 +), +gsSPNTriangles_5b( + 14, 23, 17, // tri0 + 21, 14, 13, // tri1 + 17, 18, 16, // tri2 + 13, 16, 20 // tri3 +), +gsSPNTriangles_5b( + 15, 16, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_pla_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_pla_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-400,0 }, + /* joint 3 */ { Lfoot1_pla_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_pla_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,400,0 }, + /* joint 7 */ { Rfoot1_pla_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_pla_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 350,0,-900 }, + /* joint 11 */ { tail1_pla_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_pla_model, 3, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 950,-1100,0 }, + /* joint 15 */ { Larm1_pla_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_pla_model, 0, cKF_JOINT_FLAG_DISP_OPA, 558,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 950,1100,0 }, + /* joint 18 */ { Rarm1_pla_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_pla_model, 1, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 1201,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 700,0,1250 }, + /* joint 23 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_pla_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1300,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_pla_1 = { 26, 12, cKF_je_r_pla_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/plb_1.c b/src/data/npc/model/mdl/plb_1.c new file mode 100644 index 00000000..f1587b7e --- /dev/null +++ b/src/data/npc/model/mdl/plb_1.c @@ -0,0 +1,865 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx plb_1_v[] = { +#include "assets/npc/mdl/plb_1_v.inc" +}; + +static Gfx head_plb_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000180, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&plb_1_v[40], 27, 0), +gsSPNTrianglesInit_5b( + 3, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 4, 0, 2 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 20, // tri count + 5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 5, 11, 12 // tri2 +), +gsSPNTriangles_5b( + 7, 11, 5, // tri0 + 13, 14, 8, // tri1 + 15, 8, 16, // tri2 + 17, 12, 11 // tri3 +), +gsSPNTriangles_5b( + 7, 13, 15, // tri0 + 14, 13, 7, // tri1 + 18, 9, 8, // tri2 + 16, 19, 17 // tri3 +), +gsSPNTriangles_5b( + 18, 14, 7, // tri0 + 15, 17, 11, // tri1 + 8, 15, 13, // tri2 + 19, 16, 10 // tri3 +), +gsSPNTriangles_5b( + 10, 16, 8, // tri0 + 16, 17, 15, // tri1 + 11, 7, 15, // tri2 + 8, 14, 18 // tri3 +), +gsSPNTriangles_5b( + 7, 6, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 5, // tri count + 20, 21, 22, // tri0 + 20, 22, 23, // tri1 + 24, 25, 26 // tri2 +), +gsSPNTriangles_5b( + 23, 22, 26, // tri0 + 23, 26, 25, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&plb_1_v[67], 28, 0), +gsSPNTrianglesInit_5b( + 41, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 6, 9, 10, // tri0 + 7, 11, 12, // tri1 + 7, 12, 3, // tri2 + 7, 10, 11 // tri3 +), +gsSPNTriangles_5b( + 13, 14, 2, // tri0 + 15, 16, 13, // tri1 + 13, 1, 17, // tri2 + 12, 11, 18 // tri3 +), +gsSPNTriangles_5b( + 12, 18, 19, // tri0 + 4, 12, 19, // tri1 + 4, 16, 15, // tri2 + 5, 4, 15 // tri3 +), +gsSPNTriangles_5b( + 14, 20, 2, // tri0 + 14, 18, 20, // tri1 + 20, 10, 9, // tri2 + 13, 16, 14 // tri3 +), +gsSPNTriangles_5b( + 14, 16, 19, // tri0 + 19, 18, 14, // tri1 + 2, 9, 0, // tri2 + 1, 13, 2 // tri3 +), +gsSPNTriangles_5b( + 21, 22, 23, // tri0 + 17, 15, 13, // tri1 + 2, 20, 9, // tri2 + 12, 4, 3 // tri3 +), +gsSPNTriangles_5b( + 10, 20, 18, // tri0 + 18, 11, 10, // tri1 + 19, 16, 4, // tri2 + 3, 24, 23 // tri3 +), +gsSPNTriangles_5b( + 21, 8, 7, // tri0 + 23, 24, 25, // tri1 + 23, 25, 21, // tri2 + 7, 3, 22 // tri3 +), +gsSPNTriangles_5b( + 22, 21, 7, // tri0 + 3, 23, 22, // tri1 + 24, 3, 5, // tri2 + 8, 26, 6 // tri3 +), +gsSPNTriangles_5b( + 5, 27, 24, // tri0 + 10, 7, 6, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&plb_1_v[95], 30, 0), +gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 3 // tri2 +), +gsSPNTriangles_5b( + 2, 7, 6, // tri0 + 8, 0, 2, // tri1 + 5, 9, 6, // tri2 + 6, 9, 10 // tri3 +), +gsSPNTriangles_5b( + 10, 8, 2, // tri0 + 3, 11, 12, // tri1 + 3, 12, 4, // tri2 + 11, 3, 7 // tri3 +), +gsSPNTriangles_5b( + 7, 2, 1, // tri0 + 10, 2, 6, // tri1 + 6, 3, 5, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_REPEAT, 0, 0), +gsSPNTrianglesInit_5b( + 13, // tri count + 13, 14, 15, // tri0 + 16, 17, 18, // tri1 + 19, 20, 16 // tri2 +), +gsSPNTriangles_5b( + 13, 21, 22, // tri0 + 16, 18, 19, // tri1 + 15, 23, 13, // tri2 + 24, 22, 21 // tri3 +), +gsSPNTriangles_5b( + 25, 26, 27, // tri0 + 25, 24, 28, // tri1 + 13, 22, 14, // tri2 + 21, 28, 24 // tri3 +), +gsSPNTriangles_5b( + 28, 26, 25, // tri0 + 27, 29, 25, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx mouth_plb_model[] = { +gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&plb_1_v[0], 5, 0), +gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&plb_1_v[5], 15, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 5, 6, // tri0 + 4, 8, 7, // tri1 + 2, 4, 9 // tri2 +), +gsSPNTriangles_5b( + 4, 0, 10, // tri0 + 2, 11, 12, // tri1 + 0, 13, 14, // tri2 + 2, 15, 16 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 2, // tri count + 1, 3, 17, // tri0 + 3, 19, 18, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&plb_1_v[20], 20, 0), +gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 0, 8, 6, // tri0 + 9, 10, 4, // tri1 + 11, 10, 9, // tri2 + 12, 8, 10 // tri3 +), +gsSPNTriangles_5b( + 12, 10, 11, // tri0 + 8, 0, 4, // tri1 + 4, 10, 8, // tri2 + 4, 0, 2 // tri3 +), +gsSPNTriangles_5b( + 4, 2, 5, // tri0 + 13, 9, 4, // tri1 + 6, 8, 12, // tri2 + 7, 1, 0 // tri3 +), +gsSPNTriangles_5b( + 4, 3, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 4, // tri count + 14, 15, 16, // tri0 + 17, 15, 14, // tri1 + 17, 14, 18 // tri2 +), +gsSPNTriangles_5b( + 14, 16, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_plb_model[] = { +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&plb_1_v[168], 4, 0), +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&plb_1_v[172], 25, 4), +gsSPNTrianglesInit_5b( + 9, // tri count + 2, 4, 5, // tri0 + 1, 3, 6, // tri1 + 0, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 0, 9, // tri0 + 0, 10, 11, // tri1 + 1, 12, 13, // tri2 + 3, 2, 14 // tri3 +), +gsSPNTriangles_5b( + 0, 1, 15, // tri0 + 2, 16, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 18, 19, 20, // tri0 + 21, 19, 18, // tri1 + 22, 19, 21 // tri2 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 4, // tri count + 23, 24, 25, // tri0 + 25, 26, 27, // tri1 + 24, 28, 25 // tri2 +), +gsSPNTriangles_5b( + 25, 27, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_plb_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&plb_1_v[197], 3, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&plb_1_v[200], 11, 3), +gsSPNTrianglesInit_5b( + 7, // tri count + 1, 3, 4, // tri0 + 2, 5, 6, // tri1 + 1, 2, 7 // tri2 +), +gsSPNTriangles_5b( + 2, 8, 9, // tri0 + 0, 1, 10, // tri1 + 2, 0, 11, // tri2 + 0, 12, 13 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_plb_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&plb_1_v[125], 4, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&plb_1_v[129], 25, 4), +gsSPNTrianglesInit_5b( + 9, // tri count + 2, 4, 5, // tri0 + 3, 1, 6, // tri1 + 0, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 0, 2, 9, // tri0 + 0, 10, 11, // tri1 + 1, 12, 13, // tri2 + 2, 3, 14 // tri3 +), +gsSPNTriangles_5b( + 1, 0, 15, // tri0 + 2, 16, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 18, 19, 20, // tri0 + 20, 19, 21, // tri1 + 21, 19, 22 // tri2 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 4, // tri count + 23, 24, 25, // tri0 + 26, 27, 23, // tri1 + 23, 28, 24 // tri2 +), +gsSPNTriangles_5b( + 25, 26, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_plb_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&plb_1_v[154], 3, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&plb_1_v[157], 11, 3), +gsSPNTrianglesInit_5b( + 7, // tri count + 1, 3, 4, // tri0 + 2, 5, 6, // tri1 + 2, 1, 7 // tri2 +), +gsSPNTriangles_5b( + 2, 8, 9, // tri0 + 1, 0, 10, // tri1 + 0, 2, 11, // tri2 + 0, 12, 13 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_plb_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&plb_1_v[211], 13, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&plb_1_v[224], 6, 13), +gsSPNTrianglesInit_5b( + 4, // tri count + 12, 9, 13, // tri0 + 9, 14, 15, // tri1 + 11, 10, 16 // tri2 +), +gsSPNTriangles_5b( + 11, 17, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0004C0, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&plb_1_v[230], 19, 13), +gsSPNTrianglesInit_5b( + 13, // tri count + 2, 13, 3, // tri0 + 8, 14, 15, // tri1 + 6, 8, 16 // tri2 +), +gsSPNTriangles_5b( + 2, 1, 17, // tri0 + 1, 0, 18, // tri1 + 1, 20, 19, // tri2 + 0, 21, 22 // tri3 +), +gsSPNTriangles_5b( + 0, 7, 23, // tri0 + 4, 25, 24, // tri1 + 3, 26, 27, // tri2 + 4, 3, 28 // tri3 +), +gsSPNTriangles_5b( + 8, 5, 29, // tri0 + 8, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&plb_1_v[249], 11, 13), +gsSPNTrianglesInit_5b( + 1, // tri count + 5, 4, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 8, // tri count + 14, 15, 16, // tri0 + 14, 16, 17, // tri1 + 18, 19, 20 // tri2 +), +gsSPNTriangles_5b( + 15, 21, 22, // tri0 + 14, 17, 19, // tri1 + 19, 18, 14, // tri2 + 22, 16, 15 // tri3 +), +gsSPNTriangles_5b( + 20, 23, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0004C0, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&plb_1_v[260], 21, 0), +gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 12, 13, 5, // tri1 + 7, 13, 12, // tri2 + 12, 14, 7 // tri3 +), +gsSPNTriangles_5b( + 5, 1, 12, // tri0 + 12, 1, 0, // tri1 + 12, 0, 14, // tri2 + 15, 14, 0 // tri3 +), +gsSPNTriangles_5b( + 16, 4, 3, // tri0 + 8, 17, 6, // tri1 + 11, 10, 6, // tri2 + 6, 17, 11 // tri3 +), +gsSPNTriangles_5b( + 11, 18, 9, // tri0 + 19, 0, 2, // tri1 + 15, 0, 20, // tri2 + 14, 8, 7 // tri3 +), +gsSPNTriangles_5b( + 5, 4, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot3_plb_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&plb_1_v[328], 3, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&plb_1_v[331], 18, 3), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 3, 4, // tri0 + 1, 0, 5, // tri1 + 0, 2, 6 // tri2 +), +gsSPNTriangles_5b( + 2, 1, 7, // tri0 + 2, 8, 9, // tri1 + 0, 10, 11, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 5, // tri count + 12, 13, 14, // tri0 + 12, 14, 15, // tri1 + 16, 17, 18 // tri2 +), +gsSPNTriangles_5b( + 18, 19, 16, // tri0 + 16, 20, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_plb_model[] = { +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&plb_1_v[349], 4, 0), +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&plb_1_v[353], 14, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 2, 6, 7, // tri1 + 3, 0, 8 // tri2 +), +gsSPNTriangles_5b( + 1, 2, 9, // tri0 + 2, 10, 11, // tri1 + 2, 3, 12, // tri2 + 3, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_plb_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&plb_1_v[367], 8, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 2, 4 // tri2 +), +gsSPNTriangles_5b( + 5, 0, 6, // tri0 + 4, 7, 3, // tri1 + 0, 5, 1, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot3_plb_model[] = { +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&plb_1_v[281], 3, 0), +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&plb_1_v[284], 18, 3), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 3, 4, // tri0 + 0, 1, 5, // tri1 + 2, 0, 6 // tri2 +), +gsSPNTriangles_5b( + 1, 7, 8, // tri0 + 1, 2, 9, // tri1 + 0, 10, 11, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 5, // tri count + 12, 13, 14, // tri0 + 12, 14, 15, // tri1 + 16, 17, 18 // tri2 +), +gsSPNTriangles_5b( + 18, 19, 16, // tri0 + 17, 20, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_plb_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&plb_1_v[302], 4, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&plb_1_v[306], 14, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 2, 6, 7, // tri1 + 0, 3, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 1, 9, // tri0 + 2, 10, 11, // tri1 + 3, 2, 12, // tri2 + 3, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_plb_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&plb_1_v[320], 8, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 1, 0 // tri2 +), +gsSPNTriangles_5b( + 5, 3, 6, // tri0 + 0, 7, 4, // tri1 + 2, 6, 3, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx base_plb_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&plb_1_v[375], 31, 0), +gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 0, 2 // tri2 +), +gsSPNTriangles_5b( + 3, 1, 5, // tri0 + 6, 7, 8, // tri1 + 9, 10, 11, // tri2 + 12, 13, 14 // tri3 +), +gsSPNTriangles_5b( + 12, 14, 15, // tri0 + 13, 8, 14, // tri1 + 12, 15, 16, // tri2 + 9, 17, 18 // tri3 +), +gsSPNTriangles_5b( + 19, 20, 21, // tri0 + 1, 0, 22, // tri1 + 23, 24, 25, // tri2 + 22, 0, 26 // tri3 +), +gsSPNTriangles_5b( + 12, 22, 26, // tri0 + 0, 6, 26, // tri1 + 12, 26, 13, // tri2 + 23, 25, 27 // tri3 +), +gsSPNTriangles_5b( + 27, 28, 23, // tri0 + 6, 0, 4, // tri1 + 8, 13, 6, // tri2 + 13, 26, 6 // tri3 +), +gsSPNTriangles_5b( + 4, 7, 6, // tri0 + 5, 20, 29, // tri1 + 20, 5, 30, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000680, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsSPVertex(&plb_1_v[406], 18, 0), +gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 1, 4, 2 // tri2 +), +gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 5, 7, 8, // tri1 + 9, 10, 11, // tri2 + 9, 11, 12 // tri3 +), +gsSPNTriangles_5b( + 7, 2, 4, // tri0 + 7, 4, 8, // tri1 + 12, 6, 5, // tri2 + 12, 5, 9 // tri3 +), +gsSPNTriangles_5b( + 7, 6, 0, // tri0 + 2, 7, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0006C0, G_IM_FMT_CI, 16, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 3, // tri count + 13, 14, 15, // tri0 + 13, 15, 16, // tri1 + 16, 17, 13 // tri2 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_plb_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_plb_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_plb_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_plb_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { Lfoot3_plb_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_plb_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_plb_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { Rfoot3_plb_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 75,0,-650 }, + /* joint 11 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_plb_model, 3, cKF_JOINT_FLAG_DISP_OPA, 325,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 1150,-500,0 }, + /* joint 15 */ { Larm1_plb_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_plb_model, 0, cKF_JOINT_FLAG_DISP_OPA, 1000,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 1150,500,0 }, + /* joint 18 */ { Rarm1_plb_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_plb_model, 1, cKF_JOINT_FLAG_DISP_OPA, 998,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1000,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 1274,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 1050,0,1350 }, + /* joint 23 */ { mouth_plb_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_plb_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1601,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_plb_1 = { 26, 14, cKF_je_r_plb_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/plc_1.c b/src/data/npc/model/mdl/plc_1.c new file mode 100644 index 00000000..dc9ddc07 --- /dev/null +++ b/src/data/npc/model/mdl/plc_1.c @@ -0,0 +1,757 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx plc_1_v[] = { +#include "assets/npc/mdl/plc_1_v.inc" +}; + +static Gfx head_plc_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&plc_1_v[0], 29, 0), +gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 4, 7, 8, // tri0 + 4, 8, 5, // tri1 + 7, 0, 3, // tri2 + 7, 3, 8 // tri3 +), +gsSPNTriangles_5b( + 9, 4, 6, // tri0 + 10, 11, 6, // tri1 + 10, 6, 5, // tri2 + 10, 5, 12 // tri3 +), +gsSPNTriangles_5b( + 6, 11, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 2, // tri count + 13, 14, 15, // tri0 + 15, 16, 13, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 17, 18, 19, // tri0 + 20, 21, 22, // tri1 + 23, 21, 24 // tri2 +), +gsSPNTriangles_5b( + 25, 19, 26, // tri0 + 27, 19, 25, // tri1 + 21, 20, 28, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&plc_1_v[29], 21, 0), +gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 5, 4, 0, // tri0 + 7, 9, 10, // tri1 + 9, 11, 12, // tri2 + 13, 14, 15 // tri3 +), +gsSPNTriangles_5b( + 8, 3, 6, // tri0 + 2, 16, 14, // tri1 + 3, 8, 10, // tri2 + 2, 1, 17 // tri3 +), +gsSPNTriangles_5b( + 18, 17, 19, // tri0 + 10, 20, 3, // tri1 + 2, 13, 0, // tri2 + 10, 8, 7 // tri3 +), +gsSPNTriangles_5b( + 14, 13, 2, // tri0 + 15, 6, 5, // tri1 + 0, 13, 15, // tri2 + 5, 6, 3 // tri3 +), +gsSPNTriangles_5b( + 15, 5, 0, // tri0 + 19, 12, 11, // tri1 + 11, 18, 19, // tri2 + 12, 20, 10 // tri3 +), +gsSPNTriangles_5b( + 16, 2, 17, // tri0 + 17, 18, 16, // tri1 + 12, 10, 9, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&plc_1_v[50], 30, 0), +gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 3 // tri2 +), +gsSPNTriangles_5b( + 4, 2, 1, // tri0 + 5, 4, 6, // tri1 + 5, 6, 7, // tri2 + 8, 9, 10 // tri3 +), +gsSPNTriangles_5b( + 8, 10, 11, // tri0 + 5, 12, 13, // tri1 + 1, 14, 4, // tri2 + 4, 3, 2 // tri3 +), +gsSPNTriangles_5b( + 8, 15, 7, // tri0 + 11, 16, 15, // tri1 + 15, 8, 11, // tri2 + 8, 7, 6 // tri3 +), +gsSPNTriangles_5b( + 14, 9, 6, // tri0 + 12, 5, 7, // tri1 + 16, 17, 15, // tri2 + 13, 3, 5 // tri3 +), +gsSPNTriangles_5b( + 3, 13, 0, // tri0 + 7, 17, 12, // tri1 + 6, 4, 14, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 14, // tri count + 18, 19, 20, // tri0 + 19, 21, 22, // tri1 + 18, 23, 24 // tri2 +), +gsSPNTriangles_5b( + 25, 19, 18, // tri0 + 26, 23, 18, // tri1 + 18, 20, 26, // tri2 + 20, 22, 27 // tri3 +), +gsSPNTriangles_5b( + 22, 20, 19, // tri0 + 20, 27, 28, // tri1 + 28, 26, 20, // tri2 + 29, 21, 19 // tri3 +), +gsSPNTriangles_5b( + 25, 24, 29, // tri0 + 29, 19, 25, // tri1 + 18, 24, 25, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&plc_1_v[80], 10, 0), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 3, 1, 4 // tri2 +), +gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 7, 8, 5, // tri1 + 2, 9, 0, // tri2 + 4, 6, 5 // tri3 +), +gsSPNTriangles_5b( + 4, 5, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_plc_model[] = { +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&plc_1_v[127], 4, 0), +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&plc_1_v[131], 13, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 2, 1, 4, // tri0 + 2, 5, 0, // tri1 + 1, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 0, 8, 9, // tri0 + 3, 0, 10, // tri1 + 1, 3, 11, // tri2 + 2, 12, 13 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 14, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_plc_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&plc_1_v[144], 4, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&plc_1_v[148], 16, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 1, 4, 5, // tri0 + 1, 0, 6, // tri1 + 2, 3, 7 // tri2 +), +gsSPNTriangles_5b( + 3, 8, 9, // tri0 + 0, 10, 11, // tri1 + 2, 12, 13, // tri2 + 3, 1, 14 // tri3 +), +gsSPNTriangles_5b( + 2, 15, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_plc_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&plc_1_v[90], 4, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&plc_1_v[94], 13, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 3, 4, // tri0 + 3, 1, 5, // tri1 + 2, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 0, 8, 9, // tri0 + 1, 10, 11, // tri1 + 0, 12, 2, // tri2 + 1, 2, 13 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 14, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_plc_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&plc_1_v[107], 4, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&plc_1_v[111], 16, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 4, 5, // tri0 + 0, 2, 6, // tri1 + 2, 3, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 1, 10, 3, // tri1 + 3, 11, 12, // tri2 + 1, 0, 13 // tri3 +), +gsSPNTriangles_5b( + 0, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 16, 17, 18, // tri0 + 19, 18, 17, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_plc_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&plc_1_v[164], 10, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&plc_1_v[174], 18, 10), +gsSPNTrianglesInit_5b( + 12, // tri count + 1, 0, 10, // tri0 + 3, 4, 11, // tri1 + 4, 12, 13 // tri2 +), +gsSPNTriangles_5b( + 1, 14, 15, // tri0 + 2, 16, 17, // tri1 + 2, 18, 19, // tri2 + 4, 8, 20 // tri3 +), +gsSPNTriangles_5b( + 3, 21, 22, // tri0 + 0, 23, 24, // tri1 + 6, 1, 25, // tri2 + 2, 3, 26 // tri3 +), +gsSPNTriangles_5b( + 0, 2, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&plc_1_v[192], 10, 10), +gsSPNTrianglesInit_5b( + 6, // tri count + 5, 10, 11, // tri0 + 7, 9, 12, // tri1 + 7, 13, 14 // tri2 +), +gsSPNTriangles_5b( + 7, 15, 16, // tri0 + 5, 17, 18, // tri1 + 9, 5, 19, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&plc_1_v[202], 22, 0), +gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 2, 1, 4 // tri2 +), +gsSPNTriangles_5b( + 5, 6, 2, // tri0 + 7, 4, 1, // tri1 + 6, 5, 8, // tri2 + 9, 6, 10 // tri3 +), +gsSPNTriangles_5b( + 9, 2, 6, // tri0 + 2, 9, 0, // tri1 + 2, 11, 5, // tri2 + 4, 11, 2 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 9, // tri count + 12, 13, 14, // tri0 + 15, 16, 17, // tri1 + 15, 18, 16 // tri2 +), +gsSPNTriangles_5b( + 15, 17, 19, // tri0 + 15, 14, 18, // tri1 + 12, 14, 15, // tri2 + 12, 15, 20 // tri3 +), +gsSPNTriangles_5b( + 19, 20, 15, // tri0 + 17, 16, 21, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail1_plc_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000580, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&plc_1_v[249], 7, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 3, 2 // tri2 +), +gsSPNTriangles_5b( + 1, 5, 4, // tri0 + 2, 6, 4, // tri1 + 4, 6, 1, // tri2 + 0, 5, 1 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail2_plc_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&plc_1_v[224], 4, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000580, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&plc_1_v[228], 21, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 4, 5, // tri0 + 0, 6, 7, // tri1 + 3, 1, 8 // tri2 +), +gsSPNTriangles_5b( + 3, 9, 10, // tri0 + 2, 11, 12, // tri1 + 2, 3, 13, // tri2 + 0, 2, 14 // tri3 +), +gsSPNTriangles_5b( + 1, 0, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 12, // tri count + 16, 17, 18, // tri0 + 19, 17, 20, // tri1 + 18, 21, 22 // tri2 +), +gsSPNTriangles_5b( + 23, 22, 21, // tri0 + 23, 21, 20, // tri1 + 20, 21, 19, // tri2 + 20, 17, 16 // tri3 +), +gsSPNTriangles_5b( + 20, 16, 23, // tri0 + 21, 18, 19, // tri1 + 19, 18, 17, // tri2 + 18, 24, 16 // tri3 +), +gsSPNTriangles_5b( + 22, 24, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_plc_model[] = { +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&plc_1_v[297], 5, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&plc_1_v[302], 17, 5), +gsSPNTrianglesInit_5b( + 9, // tri count + 3, 4, 5, // tri0 + 3, 6, 7, // tri1 + 0, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 3, 10, 11, // tri0 + 2, 3, 12, // tri1 + 1, 2, 13, // tri2 + 0, 14, 15 // tri3 +), +gsSPNTriangles_5b( + 4, 0, 16, // tri0 + 2, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_plc_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&plc_1_v[319], 6, 0), +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&plc_1_v[325], 13, 6), +gsSPNTrianglesInit_5b( + 9, // tri count + 3, 6, 7, // tri0 + 3, 4, 8, // tri1 + 5, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 2, 3, 11, // tri0 + 0, 2, 12, // tri1 + 1, 13, 5, // tri2 + 1, 14, 15 // tri3 +), +gsSPNTriangles_5b( + 1, 0, 16, // tri0 + 2, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_plc_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&plc_1_v[256], 5, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&plc_1_v[261], 17, 5), +gsSPNTrianglesInit_5b( + 9, // tri count + 0, 5, 6, // tri0 + 3, 7, 8, // tri1 + 2, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 0, 11, 12, // tri0 + 0, 4, 13, // tri1 + 2, 1, 14, // tri2 + 3, 2, 15 // tri3 +), +gsSPNTriangles_5b( + 3, 16, 17, // tri0 + 4, 3, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_plc_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&plc_1_v[278], 6, 0), +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&plc_1_v[284], 13, 6), +gsSPNTrianglesInit_5b( + 9, // tri count + 2, 6, 7, // tri0 + 1, 8, 9, // tri1 + 0, 1, 10 // tri2 +), +gsSPNTriangles_5b( + 2, 0, 11, // tri0 + 1, 4, 12, // tri1 + 3, 13, 14, // tri2 + 3, 2, 15 // tri3 +), +gsSPNTriangles_5b( + 4, 16, 17, // tri0 + 3, 18, 5, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx base_plc_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&plc_1_v[338], 25, 0), +gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 5, 3 // tri2 +), +gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 0, 9, 8, // tri1 + 10, 4, 11, // tri2 + 2, 9, 0 // tri3 +), +gsSPNTriangles_5b( + 3, 5, 2, // tri0 + 8, 12, 6, // tri1 + 11, 13, 10, // tri2 + 3, 11, 4 // tri3 +), +gsSPNTriangles_5b( + 8, 7, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 4, // tri count + 14, 15, 16, // tri0 + 16, 17, 14, // tri1 + 14, 18, 19 // tri2 +), +gsSPNTriangles_5b( + 19, 15, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 3, // tri count + 20, 21, 22, // tri0 + 23, 24, 20, // tri1 + 20, 24, 21 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000680, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&plc_1_v[363], 8, 0), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 3, 4 // tri2 +), +gsSPNTriangles_5b( + 5, 4, 3, // tri0 + 6, 1, 5, // tri1 + 6, 5, 7, // tri2 + 1, 0, 4 // tri3 +), +gsSPNTriangles_5b( + 1, 4, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_plc_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_plc_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_plc_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_plc_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_plc_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_plc_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 150,0,-500 }, + /* joint 11 */ { tail1_plc_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_plc_model, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_plc_model, 3, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 800,-900,0 }, + /* joint 15 */ { Larm1_plc_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_plc_model, 0, cKF_JOINT_FLAG_DISP_OPA, 558,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 800,900,0 }, + /* joint 18 */ { Rarm1_plc_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_plc_model, 1, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 1201,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 700,0,1250 }, + /* joint 23 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_plc_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1300,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_plc_1 = { 26, 13, cKF_je_r_plc_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/plj_1.c b/src/data/npc/model/mdl/plj_1.c new file mode 100644 index 00000000..801efd5a --- /dev/null +++ b/src/data/npc/model/mdl/plj_1.c @@ -0,0 +1,723 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx plj_1_v[] = { +#include "assets/npc/mdl/plj_1_v.inc" +}; + +static Gfx head_plj_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&plj_1_v[0], 18, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 12, 13, 14, // tri1 + 15, 16, 17, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&plj_1_v[18], 21, 0), +gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 3 // tri2 +), +gsSPNTriangles_5b( + 7, 8, 6, // tri0 + 9, 10, 11, // tri1 + 12, 13, 14, // tri2 + 11, 10, 7 // tri3 +), +gsSPNTriangles_5b( + 13, 2, 1, // tri0 + 2, 15, 0, // tri1 + 16, 17, 18, // tri2 + 14, 9, 12 // tri3 +), +gsSPNTriangles_5b( + 6, 5, 17, // tri0 + 9, 14, 1, // tri1 + 6, 8, 3, // tri2 + 4, 3, 19 // tri3 +), +gsSPNTriangles_5b( + 1, 20, 9, // tri0 + 6, 16, 7, // tri1 + 1, 14, 13, // tri2 + 17, 16, 6 // tri3 +), +gsSPNTriangles_5b( + 18, 12, 11, // tri0 + 7, 16, 18, // tri1 + 11, 12, 9, // tri2 + 18, 11, 7 // tri3 +), +gsSPNTriangles_5b( + 19, 0, 15, // tri0 + 15, 4, 19, // tri1 + 0, 20, 1, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000180, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&plj_1_v[39], 30, 0), +gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 3 // tri2 +), +gsSPNTriangles_5b( + 6, 7, 2, // tri0 + 8, 9, 10, // tri1 + 10, 11, 12, // tri2 + 10, 12, 8 // tri3 +), +gsSPNTriangles_5b( + 13, 14, 1, // tri0 + 9, 8, 7, // tri1 + 2, 14, 6, // tri2 + 15, 12, 11 // tri3 +), +gsSPNTriangles_5b( + 7, 15, 3, // tri0 + 7, 3, 2, // tri1 + 0, 5, 16, // tri2 + 0, 16, 17 // tri3 +), +gsSPNTriangles_5b( + 7, 6, 9, // tri0 + 11, 4, 15, // tri1 + 17, 13, 1, // tri2 + 1, 0, 17 // tri3 +), +gsSPNTriangles_5b( + 3, 15, 4, // tri0 + 15, 7, 8, // tri1 + 15, 8, 12, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 14, // tri count + 18, 19, 20, // tri0 + 21, 22, 20, // tri1 + 18, 22, 23 // tri2 +), +gsSPNTriangles_5b( + 18, 24, 19, // tri0 + 25, 23, 22, // tri1 + 26, 27, 23, // tri2 + 23, 25, 28 // tri3 +), +gsSPNTriangles_5b( + 21, 29, 22, // tri0 + 20, 19, 21, // tri1 + 23, 28, 26, // tri2 + 20, 22, 18 // tri3 +), +gsSPNTriangles_5b( + 27, 24, 18, // tri0 + 18, 23, 27, // tri1 + 22, 29, 25, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&plj_1_v[69], 10, 0), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 3 // tri2 +), +gsSPNTriangles_5b( + 1, 7, 8, // tri0 + 8, 9, 1, // tri1 + 0, 7, 1, // tri2 + 2, 5, 4 // tri3 +), +gsSPNTriangles_5b( + 2, 4, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_plj_model[] = { +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&plj_1_v[116], 4, 0), +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&plj_1_v[120], 13, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 2, 1, 4, // tri0 + 2, 5, 0, // tri1 + 1, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 0, 8, 9, // tri0 + 3, 0, 10, // tri1 + 1, 3, 11, // tri2 + 2, 12, 13 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 14, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_plj_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&plj_1_v[133], 4, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&plj_1_v[137], 16, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 3, 4, 5, // tri0 + 3, 2, 6, // tri1 + 1, 0, 7 // tri2 +), +gsSPNTriangles_5b( + 0, 8, 9, // tri0 + 2, 10, 11, // tri1 + 1, 12, 13, // tri2 + 0, 3, 14 // tri3 +), +gsSPNTriangles_5b( + 1, 15, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_plj_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&plj_1_v[79], 4, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&plj_1_v[83], 13, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 3, 4, // tri0 + 3, 1, 5, // tri1 + 2, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 0, 8, 9, // tri0 + 1, 10, 11, // tri1 + 0, 12, 2, // tri2 + 1, 2, 13 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 14, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_plj_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&plj_1_v[96], 4, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&plj_1_v[100], 16, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 3, 4, 5, // tri0 + 1, 3, 6, // tri1 + 3, 0, 7 // tri2 +), +gsSPNTriangles_5b( + 2, 8, 9, // tri0 + 2, 10, 0, // tri1 + 0, 11, 12, // tri2 + 2, 1, 13 // tri3 +), +gsSPNTriangles_5b( + 1, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 16, 17, 18, // tri0 + 19, 18, 17, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_plj_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&plj_1_v[153], 10, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&plj_1_v[163], 10, 10), +gsSPNTrianglesInit_5b( + 6, // tri count + 2, 10, 11, // tri0 + 0, 12, 13, // tri1 + 9, 0, 14 // tri2 +), +gsSPNTriangles_5b( + 2, 9, 15, // tri0 + 0, 16, 17, // tri1 + 2, 18, 19, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&plj_1_v[173], 18, 10), +gsSPNTrianglesInit_5b( + 12, // tri count + 5, 4, 10, // tri0 + 7, 8, 11, // tri1 + 6, 12, 13 // tri2 +), +gsSPNTriangles_5b( + 8, 3, 14, // tri0 + 7, 15, 16, // tri1 + 4, 17, 18, // tri2 + 1, 5, 19 // tri3 +), +gsSPNTriangles_5b( + 6, 7, 20, // tri0 + 8, 21, 22, // tri1 + 5, 23, 24, // tri2 + 4, 6, 25 // tri3 +), +gsSPNTriangles_5b( + 6, 26, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&plj_1_v[191], 24, 0), +gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 9, 0, 3 // tri3 +), +gsSPNTriangles_5b( + 9, 3, 10, // tri0 + 12, 5, 4, // tri1 + 12, 4, 13, // tri2 + 3, 2, 11 // tri3 +), +gsSPNTriangles_5b( + 3, 11, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 9, // tri count + 14, 15, 16, // tri0 + 14, 17, 15, // tri1 + 18, 19, 20 // tri2 +), +gsSPNTriangles_5b( + 14, 21, 17, // tri0 + 14, 20, 21, // tri1 + 18, 20, 14, // tri2 + 18, 14, 22 // tri3 +), +gsSPNTriangles_5b( + 16, 22, 14, // tri0 + 15, 17, 23, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&plj_1_v[215], 12, 0), +gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 1, 0, 3, // tri1 + 1, 4, 5 // tri2 +), +gsSPNTriangles_5b( + 6, 2, 1, // tri0 + 3, 4, 1, // tri1 + 7, 4, 3, // tri2 + 1, 8, 6 // tri3 +), +gsSPNTriangles_5b( + 5, 8, 1, // tri0 + 9, 5, 4, // tri1 + 2, 6, 10, // tri2 + 0, 2, 11 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail1_plj_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&plj_1_v[252], 7, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 3, 2 // tri2 +), +gsSPNTriangles_5b( + 1, 5, 4, // tri0 + 2, 6, 4, // tri1 + 4, 6, 1, // tri2 + 0, 5, 1 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail2_plj_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&plj_1_v[227], 4, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&plj_1_v[231], 21, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 4, 5, // tri0 + 0, 6, 7, // tri1 + 3, 1, 8 // tri2 +), +gsSPNTriangles_5b( + 3, 9, 10, // tri0 + 2, 11, 12, // tri1 + 2, 3, 13, // tri2 + 0, 2, 14 // tri3 +), +gsSPNTriangles_5b( + 1, 0, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 12, // tri count + 16, 17, 18, // tri0 + 19, 17, 20, // tri1 + 18, 21, 22 // tri2 +), +gsSPNTriangles_5b( + 23, 22, 21, // tri0 + 23, 21, 20, // tri1 + 20, 21, 19, // tri2 + 20, 17, 16 // tri3 +), +gsSPNTriangles_5b( + 20, 16, 23, // tri0 + 21, 18, 19, // tri1 + 19, 18, 17, // tri2 + 18, 24, 16 // tri3 +), +gsSPNTriangles_5b( + 22, 24, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_plj_model[] = { +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&plj_1_v[300], 5, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000580, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&plj_1_v[305], 17, 5), +gsSPNTrianglesInit_5b( + 9, // tri count + 3, 4, 5, // tri0 + 3, 6, 7, // tri1 + 0, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 3, 10, 11, // tri0 + 2, 3, 12, // tri1 + 1, 2, 13, // tri2 + 0, 14, 15 // tri3 +), +gsSPNTriangles_5b( + 4, 0, 16, // tri0 + 2, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_plj_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&plj_1_v[322], 6, 0), +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000580, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&plj_1_v[328], 13, 6), +gsSPNTrianglesInit_5b( + 9, // tri count + 4, 6, 7, // tri0 + 5, 3, 8, // tri1 + 3, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 1, 4, 11, // tri0 + 0, 1, 12, // tri1 + 2, 13, 3, // tri2 + 2, 14, 15 // tri3 +), +gsSPNTriangles_5b( + 2, 0, 16, // tri0 + 1, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_plj_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&plj_1_v[259], 5, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000580, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&plj_1_v[264], 17, 5), +gsSPNTrianglesInit_5b( + 9, // tri count + 4, 3, 5, // tri0 + 3, 6, 7, // tri1 + 3, 2, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 0, 9, // tri0 + 1, 4, 10, // tri1 + 1, 11, 12, // tri2 + 2, 13, 14 // tri3 +), +gsSPNTriangles_5b( + 3, 15, 16, // tri0 + 1, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_plj_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&plj_1_v[281], 6, 0), +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000580, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&plj_1_v[287], 13, 6), +gsSPNTrianglesInit_5b( + 9, // tri count + 4, 6, 3, // tri0 + 3, 7, 8, // tri1 + 5, 1, 9 // tri2 +), +gsSPNTriangles_5b( + 5, 10, 11, // tri0 + 2, 3, 12, // tri1 + 1, 0, 13, // tri2 + 0, 2, 14 // tri3 +), +gsSPNTriangles_5b( + 2, 15, 16, // tri0 + 1, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx base_plj_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000580, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&plj_1_v[341], 21, 0), +gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 12, 4, 3, // tri1 + 3, 5, 13, // tri2 + 10, 14, 15 // tri3 +), +gsSPNTriangles_5b( + 6, 16, 17, // tri0 + 9, 12, 3, // tri1 + 3, 13, 8, // tri2 + 15, 11, 10 // tri3 +), +gsSPNTriangles_5b( + 18, 19, 17, // tri0 + 14, 19, 18, // tri1 + 18, 15, 14, // tri2 + 8, 13, 6 // tri3 +), +gsSPNTriangles_5b( + 17, 7, 6, // tri0 + 11, 12, 9, // tri1 + 3, 20, 9, // tri2 + 17, 16, 18 // tri3 +), +gsSPNTriangles_5b( + 8, 20, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_plj_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_plj_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_plj_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_plj_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_plj_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_plj_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 150,0,-500 }, + /* joint 11 */ { tail1_plj_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_plj_model, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_plj_model, 3, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 800,-900,0 }, + /* joint 15 */ { Larm1_plj_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_plj_model, 0, cKF_JOINT_FLAG_DISP_OPA, 558,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 800,900,0 }, + /* joint 18 */ { Rarm1_plj_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_plj_model, 1, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 1201,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 700,0,1250 }, + /* joint 23 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_plj_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1300,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_plj_1 = { 26, 13, cKF_je_r_plj_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/rbt_1.c b/src/data/npc/model/mdl/rbt_1.c new file mode 100644 index 00000000..71cb7915 --- /dev/null +++ b/src/data/npc/model/mdl/rbt_1.c @@ -0,0 +1,683 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx rbt_1_v[] = { +#include "assets/npc/mdl/rbt_1_v.inc" +}; + +static Gfx head_rbt_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rbt_1_v[0], 16, 0), +gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 6, 5 // tri2 +), +gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 11, 7, // tri1 + 9, 12, 7, // tri2 + 10, 13, 14 // tri3 +), +gsSPNTriangles_5b( + 2, 15, 0, // tri0 + 5, 6, 3, // tri1 + 14, 11, 10, // tri2 + 5, 15, 2 // tri3 +), +gsSPNTriangles_5b( + 7, 12, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&rbt_1_v[16], 23, 0), +gsSPNTrianglesInit_5b( + 29, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 7, 3, 6, // tri0 + 8, 9, 10, // tri1 + 10, 11, 12, // tri2 + 10, 9, 11 // tri3 +), +gsSPNTriangles_5b( + 8, 5, 4, // tri0 + 4, 9, 8, // tri1 + 13, 14, 3, // tri2 + 15, 11, 14 // tri3 +), +gsSPNTriangles_5b( + 16, 15, 14, // tri0 + 7, 17, 18, // tri1 + 2, 12, 11, // tri2 + 13, 3, 7 // tri3 +), +gsSPNTriangles_5b( + 11, 15, 2, // tri0 + 9, 4, 14, // tri1 + 9, 14, 11, // tri2 + 14, 4, 3 // tri3 +), +gsSPNTriangles_5b( + 19, 0, 15, // tri0 + 20, 21, 19, // tri1 + 20, 19, 22, // tri2 + 18, 13, 7 // tri3 +), +gsSPNTriangles_5b( + 2, 15, 0, // tri0 + 13, 18, 22, // tri1 + 16, 22, 19, // tri2 + 14, 13, 16 // tri3 +), +gsSPNTriangles_5b( + 15, 16, 19, // tri0 + 22, 16, 13, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&rbt_1_v[39], 19, 0), +gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 5, 9, 10, // tri0 + 11, 12, 6, // tri1 + 13, 11, 6, // tri2 + 14, 3, 5 // tri3 +), +gsSPNTriangles_5b( + 15, 0, 14, // tri0 + 13, 0, 15, // tri1 + 16, 15, 10, // tri2 + 9, 16, 10 // tri3 +), +gsSPNTriangles_5b( + 13, 8, 17, // tri0 + 16, 18, 15, // tri1 + 5, 10, 14, // tri2 + 2, 3, 14 // tri3 +), +gsSPNTriangles_5b( + 12, 11, 18, // tri0 + 6, 8, 13, // tri1 + 15, 11, 13, // tri2 + 17, 1, 0 // tri3 +), +gsSPNTriangles_5b( + 0, 13, 17, // tri0 + 14, 10, 15, // tri1 + 0, 2, 14, // tri2 + 15, 18, 11 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&rbt_1_v[58], 14, 0), +gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 4, 7, 5, // tri0 + 3, 8, 0, // tri1 + 0, 8, 9, // tri2 + 8, 3, 6 // tri3 +), +gsSPNTriangles_5b( + 8, 6, 10, // tri0 + 2, 4, 6, // tri1 + 8, 11, 9, // tri2 + 8, 10, 11 // tri3 +), +gsSPNTriangles_5b( + 9, 12, 0, // tri0 + 10, 6, 5, // tri1 + 12, 1, 0, // tri2 + 12, 13, 1 // tri3 +), +gsSPNTriangles_5b( + 6, 3, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&rbt_1_v[72], 28, 0), +gsSPNTrianglesInit_5b( + 32, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 4, 2, 1, // tri0 + 6, 8, 7, // tri1 + 9, 5, 10, // tri2 + 2, 11, 12 // tri3 +), +gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 13, 16, 2, // tri1 + 17, 18, 19, // tri2 + 9, 18, 17 // tri3 +), +gsSPNTriangles_5b( + 5, 9, 6, // tri0 + 17, 20, 9, // tri1 + 2, 14, 13, // tri2 + 15, 16, 13 // tri3 +), +gsSPNTriangles_5b( + 14, 4, 21, // tri0 + 20, 22, 8, // tri1 + 23, 24, 9, // tri2 + 25, 15, 14 // tri3 +), +gsSPNTriangles_5b( + 21, 26, 14, // tri0 + 8, 6, 20, // tri1 + 20, 19, 27, // tri2 + 19, 20, 17 // tri3 +), +gsSPNTriangles_5b( + 10, 23, 9, // tri0 + 2, 12, 0, // tri1 + 3, 21, 4, // tri2 + 27, 22, 20 // tri3 +), +gsSPNTriangles_5b( + 14, 26, 25, // tri0 + 14, 2, 4, // tri1 + 16, 11, 2, // tri2 + 9, 24, 18 // tri3 +), +gsSPNTriangles_5b( + 6, 9, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_rbt_model[] = { +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rbt_1_v[136], 5, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rbt_1_v[141], 16, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 5, 3, // tri0 + 1, 4, 6, // tri1 + 1, 8, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 10, 9, // tri0 + 0, 1, 11, // tri1 + 2, 12, 13, // tri2 + 2, 0, 14 // tri3 +), +gsSPNTriangles_5b( + 2, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 20, 18, 17, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_rbt_model[] = { +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rbt_1_v[157], 4, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rbt_1_v[161], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 2, 4, // tri0 + 0, 5, 6, // tri1 + 1, 8, 7 // tri2 +), +gsSPNTriangles_5b( + 2, 9, 10, // tri0 + 3, 1, 11, // tri1 + 1, 0, 12, // tri2 + 1, 13, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_rbt_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rbt_1_v[100], 5, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rbt_1_v[105], 16, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 +), +gsSPNTriangles_5b( + 3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_rbt_model[] = { +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rbt_1_v[121], 4, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rbt_1_v[125], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_rbt_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rbt_1_v[172], 7, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 252, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rbt_1_v[179], 20, 7), +gsSPNTrianglesInit_5b( + 13, // tri count + 3, 1, 7, // tri0 + 6, 8, 9, // tri1 + 3, 10, 11 // tri2 +), +gsSPNTriangles_5b( + 2, 12, 0, // tri0 + 2, 13, 14, // tri1 + 1, 16, 15, // tri2 + 0, 17, 18 // tri3 +), +gsSPNTriangles_5b( + 0, 19, 20, // tri0 + 1, 21, 22, // tri1 + 6, 3, 23, // tri2 + 2, 6, 24 // tri3 +), +gsSPNTriangles_5b( + 4, 0, 25, // tri0 + 5, 26, 1, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&rbt_1_v[199], 9, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 0, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 4, 3, 7, // tri0 + 2, 5, 0, // tri1 + 1, 8, 2, // tri2 + 6, 3, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail1_rbt_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rbt_1_v[208], 18, 0), +gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 0, 5 // tri2 +), +gsSPNTriangles_5b( + 4, 6, 1, // tri0 + 1, 6, 3, // tri1 + 7, 4, 5, // tri2 + 1, 0, 4 // tri3 +), +gsSPNTriangles_5b( + 6, 4, 7, // tri0 + 8, 6, 7, // tri1 + 3, 6, 8, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 10, // tri count + 9, 10, 11, // tri0 + 11, 10, 12, // tri1 + 10, 13, 12 // tri2 +), +gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 10, 9, 14, // tri1 + 15, 14, 16, // tri2 + 14, 9, 16 // tri3 +), +gsSPNTriangles_5b( + 14, 13, 10, // tri0 + 12, 13, 17, // tri1 + 17, 13, 15, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_rbt_model[] = { +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rbt_1_v[280], 6, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rbt_1_v[286], 18, 6), +gsSPNTrianglesInit_5b( + 7, // tri count + 4, 0, 6, // tri0 + 0, 8, 7, // tri1 + 3, 10, 9 // tri2 +), +gsSPNTriangles_5b( + 1, 2, 11, // tri0 + 2, 3, 12, // tri1 + 3, 5, 13, // tri2 + 2, 14, 15 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 16, 17, 18, // tri0 + 19, 20, 21, // tri1 + 22, 23, 20 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_rbt_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rbt_1_v[304], 4, 0), +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 252, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rbt_1_v[308], 24, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 3, 4, // tri0 + 0, 5, 1, // tri1 + 1, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 3, 2, 8, // tri0 + 2, 9, 10, // tri1 + 2, 1, 11, // tri2 + 0, 13, 12 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 14, 15, 16, // tri0 + 14, 16, 17, // tri1 + 17, 18, 14 // tri2 +), +gsSPNTriangles_5b( + 19, 20, 21, // tri0 + 22, 23, 18, // tri1 + 21, 24, 19, // tri2 + 17, 22, 18 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 252, 124), +gsSPNTrianglesInit_5b( + 1, // tri count + 25, 26, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_rbt_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rbt_1_v[226], 6, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rbt_1_v[232], 18, 6), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 4, 6, // tri0 + 0, 8, 7, // tri1 + 3, 10, 9 // tri2 +), +gsSPNTriangles_5b( + 2, 1, 11, // tri0 + 3, 2, 12, // tri1 + 5, 3, 13, // tri2 + 2, 14, 15 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 16, 17, 18, // tri0 + 19, 20, 21, // tri1 + 20, 22, 23 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_rbt_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rbt_1_v[250], 6, 0), +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 252, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rbt_1_v[256], 24, 6), +gsSPNTrianglesInit_5b( + 7, // tri count + 4, 0, 6, // tri0 + 1, 7, 0, // tri1 + 1, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 2, 5, 10, // tri0 + 2, 11, 12, // tri1 + 1, 3, 13, // tri2 + 0, 15, 14 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 16, 17, 18, // tri0 + 19, 16, 18, // tri1 + 18, 20, 19 // tri2 +), +gsSPNTriangles_5b( + 21, 22, 23, // tri0 + 20, 24, 25, // tri1 + 23, 26, 21, // tri2 + 20, 25, 19 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 252, 124), +gsSPNTrianglesInit_5b( + 1, // tri count + 27, 28, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx base_rbt_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 252, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rbt_1_v[332], 14, 0), +gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 9, 5, 4, // tri0 + 10, 4, 0, // tri1 + 10, 9, 4, // tri2 + 7, 11, 12 // tri3 +), +gsSPNTriangles_5b( + 8, 7, 13, // tri0 + 2, 10, 0, // tri1 + 2, 1, 6, // tri2 + 6, 8, 2 // tri3 +), +gsSPNTriangles_5b( + 7, 12, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_rbt_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_rbt_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_rbt_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_rbt_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_rbt_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_rbt_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 75,0,-475 }, + /* joint 11 */ { tail1_rbt_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_rbt_model, 3, cKF_JOINT_FLAG_DISP_OPA, 325,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,-450,0 }, + /* joint 15 */ { Larm1_rbt_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_rbt_model, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,450,0 }, + /* joint 18 */ { Rarm1_rbt_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_rbt_model, 1, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 675,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,600 }, + /* joint 23 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_rbt_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1100,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_rbt_1 = { 26, 12, cKF_je_r_rbt_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/rcc_1.c b/src/data/npc/model/mdl/rcc_1.c new file mode 100644 index 00000000..2b969d19 --- /dev/null +++ b/src/data/npc/model/mdl/rcc_1.c @@ -0,0 +1,780 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx rcc_1_v[] = { +#include "assets/npc/mdl/rcc_1_v.inc" +}; + +static Gfx head_rcc_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcc_1_v[14], 28, 0), +gsSPNTrianglesInit_5b( + 39, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 0, 9, 1, // tri0 + 10, 5, 4, // tri1 + 5, 6, 3, // tri2 + 0, 4, 11 // tri3 +), +gsSPNTriangles_5b( + 0, 11, 12, // tri0 + 4, 3, 11, // tri1 + 13, 14, 4, // tri2 + 13, 4, 0 // tri3 +), +gsSPNTriangles_5b( + 8, 15, 16, // tri0 + 17, 18, 19, // tri1 + 15, 8, 7, // tri2 + 20, 21, 19 // tri3 +), +gsSPNTriangles_5b( + 12, 11, 22, // tri0 + 12, 22, 23, // tri1 + 22, 11, 3, // tri2 + 23, 9, 12 // tri3 +), +gsSPNTriangles_5b( + 9, 23, 18, // tri0 + 9, 18, 17, // tri1 + 1, 9, 17, // tri2 + 16, 20, 19 // tri3 +), +gsSPNTriangles_5b( + 24, 25, 8, // tri0 + 24, 22, 25, // tri1 + 25, 3, 6, // tri2 + 25, 22, 3 // tri3 +), +gsSPNTriangles_5b( + 19, 18, 24, // tri0 + 24, 18, 23, // tri1 + 23, 22, 24, // tri2 + 4, 14, 10 // tri3 +), +gsSPNTriangles_5b( + 2, 13, 0, // tri0 + 8, 16, 24, // tri1 + 16, 19, 24, // tri2 + 8, 25, 6 // tri3 +), +gsSPNTriangles_5b( + 19, 21, 17, // tri0 + 26, 27, 14, // tri1 + 26, 14, 13, // tri2 + 12, 9, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&rcc_1_v[42], 29, 0), +gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 5, 2, 1 // tri2 +), +gsSPNTriangles_5b( + 3, 2, 5, // tri0 + 6, 7, 1, // tri1 + 7, 8, 9, // tri2 + 10, 4, 3 // tri3 +), +gsSPNTriangles_5b( + 11, 12, 3, // tri0 + 11, 3, 5, // tri1 + 5, 9, 11, // tri2 + 12, 10, 3 // tri3 +), +gsSPNTriangles_5b( + 1, 0, 6, // tri0 + 6, 13, 7, // tri1 + 14, 12, 11, // tri2 + 1, 9, 5 // tri3 +), +gsSPNTriangles_5b( + 9, 1, 7, // tri0 + 12, 15, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 16, 17, 18, // tri0 + 16, 18, 19, // tri1 + 20, 21, 22 // tri2 +), +gsSPNTriangles_5b( + 21, 19, 18, // tri0 + 21, 18, 22, // tri1 + 17, 16, 23, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 253, 255, 255), +gsSPNTrianglesInit_5b( + 3, // tri count + 24, 25, 26, // tri0 + 27, 25, 24, // tri1 + 24, 28, 27 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rcc_1_v[71], 26, 0), +gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 2, 4, 0 // tri2 +), +gsSPNTriangles_5b( + 0, 5, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 253, 255, 255), +gsSPNTrianglesInit_5b( + 5, // tri count + 6, 7, 8, // tri0 + 6, 9, 10, // tri1 + 11, 12, 6 // tri2 +), +gsSPNTriangles_5b( + 8, 11, 6, // tri0 + 10, 7, 6, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPNTrianglesInit_5b( + 4, // tri count + 13, 14, 15, // tri0 + 15, 16, 17, // tri1 + 15, 17, 13 // tri2 +), +gsSPNTriangles_5b( + 13, 18, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 5, // tri count + 19, 20, 21, // tri0 + 19, 22, 23, // tri1 + 21, 24, 19 // tri2 +), +gsSPNTriangles_5b( + 19, 25, 22, // tri0 + 23, 20, 19, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&rcc_1_v[97], 15, 0), +gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 3, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 0, 7, 8, // tri0 + 5, 3, 1, // tri1 + 5, 1, 0, // tri2 + 2, 1, 3 // tri3 +), +gsSPNTriangles_5b( + 2, 7, 0, // tri0 + 8, 9, 0, // tri1 + 6, 4, 3, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 4, // tri count + 10, 11, 12, // tri0 + 13, 14, 12, // tri1 + 12, 14, 10 // tri2 +), +gsSPNTriangles_5b( + 12, 11, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx mouth_rcc_model[] = { +gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcc_1_v[0], 5, 0), +gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rcc_1_v[5], 9, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 5, 6, // tri0 + 4, 8, 7, // tri1 + 2, 1, 9 // tri2 +), +gsSPNTriangles_5b( + 3, 10, 0, // tri0 + 1, 0, 11, // tri1 + 4, 2, 12, // tri2 + 3, 4, 13 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_rcc_model[] = { +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcc_1_v[153], 4, 0), +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rcc_1_v[157], 23, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 3, 4, // tri0 + 0, 2, 5, // tri1 + 0, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 2, 8, 9, // tri0 + 1, 10, 11, // tri1 + 3, 1, 12, // tri2 + 1, 0, 13 // tri3 +), +gsSPNTriangles_5b( + 3, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 16, 17, 18, // tri0 + 16, 18, 19, // tri1 + 20, 18, 17 // tri2 +), +gsSPNTriangles_5b( + 19, 20, 21, // tri0 + 22, 21, 20, // tri1 + 17, 22, 20, // tri2 + 20, 19, 18 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 2, // tri count + 23, 24, 25, // tri0 + 23, 26, 24, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_rcc_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcc_1_v[180], 3, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rcc_1_v[183], 11, 3), +gsSPNTrianglesInit_5b( + 7, // tri count + 2, 0, 3, // tri0 + 1, 2, 4, // tri1 + 2, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 0, 7, 8, // tri0 + 1, 9, 10, // tri1 + 2, 12, 11, // tri2 + 1, 13, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_rcc_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcc_1_v[112], 4, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rcc_1_v[116], 23, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 3, 2, 4, // tri0 + 2, 0, 5, // tri1 + 0, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 2, 8, 9, // tri0 + 1, 10, 11, // tri1 + 1, 3, 12, // tri2 + 0, 1, 13 // tri3 +), +gsSPNTriangles_5b( + 3, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 16, 17, 18, // tri0 + 16, 18, 19, // tri1 + 18, 17, 20 // tri2 +), +gsSPNTriangles_5b( + 21, 20, 16, // tri0 + 20, 21, 22, // tri1 + 20, 22, 18, // tri2 + 17, 16, 20 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 2, // tri count + 23, 24, 25, // tri0 + 23, 26, 24, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_rcc_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcc_1_v[139], 3, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rcc_1_v[142], 11, 3), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 2, 3, // tri0 + 2, 1, 4, // tri1 + 2, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 0, 7, 8, // tri0 + 1, 9, 10, // tri1 + 2, 12, 11, // tri2 + 0, 13, 1 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_rcc_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcc_1_v[194], 25, 0), +gsSPNTrianglesInit_5b( + 31, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 5 // tri2 +), +gsSPNTriangles_5b( + 8, 5, 4, // tri0 + 9, 10, 11, // tri1 + 11, 12, 13, // tri2 + 14, 2, 9 // tri3 +), +gsSPNTriangles_5b( + 13, 8, 0, // tri0 + 11, 15, 12, // tri1 + 16, 0, 17, // tri2 + 16, 1, 0 // tri3 +), +gsSPNTriangles_5b( + 8, 17, 0, // tri0 + 13, 14, 11, // tri1 + 0, 14, 13, // tri2 + 13, 5, 8 // tri3 +), +gsSPNTriangles_5b( + 5, 12, 6, // tri0 + 5, 13, 12, // tri1 + 15, 11, 18, // tri2 + 11, 10, 18 // tri3 +), +gsSPNTriangles_5b( + 2, 14, 0, // tri0 + 11, 14, 9, // tri1 + 19, 20, 2, // tri2 + 19, 2, 1 // tri3 +), +gsSPNTriangles_5b( + 1, 16, 21, // tri0 + 10, 9, 22, // tri1 + 10, 22, 23, // tri2 + 24, 18, 10 // tri3 +), +gsSPNTriangles_5b( + 20, 9, 2, // tri0 + 9, 20, 22, // tri1 + 1, 21, 19, // tri2 + 23, 24, 10 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 48, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&rcc_1_v[219], 15, 0), +gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 5, 3, 6 // tri2 +), +gsSPNTriangles_5b( + 3, 7, 6, // tri0 + 8, 1, 9, // tri1 + 10, 2, 11, // tri2 + 7, 2, 10 // tri3 +), +gsSPNTriangles_5b( + 2, 7, 3, // tri0 + 2, 1, 11, // tri1 + 4, 3, 5, // tri2 + 12, 9, 1 // tri3 +), +gsSPNTriangles_5b( + 0, 2, 3, // tri0 + 12, 1, 0, // tri1 + 8, 11, 1, // tri2 + 11, 8, 13 // tri3 +), +gsSPNTriangles_5b( + 14, 6, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail1_rcc_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcc_1_v[259], 4, 0), +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rcc_1_v[263], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 1, 4, 5, // tri0 + 1, 0, 6, // tri1 + 2, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 1, 9, 10, // tri0 + 2, 1, 11, // tri1 + 0, 12, 13, // tri2 + 0, 3, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail2_rcc_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcc_1_v[234], 4, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rcc_1_v[238], 21, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 4, 5, // tri0 + 0, 3, 6, // tri1 + 1, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 0, 9, // tri0 + 1, 2, 10, // tri1 + 0, 11, 12, // tri2 + 3, 1, 13 // tri3 +), +gsSPNTriangles_5b( + 2, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 12, // tri count + 16, 17, 18, // tri0 + 19, 17, 16, // tri1 + 20, 21, 22 // tri2 +), +gsSPNTriangles_5b( + 20, 23, 16, // tri0 + 18, 21, 16, // tri1 + 16, 23, 19, // tri2 + 23, 22, 24 // tri3 +), +gsSPNTriangles_5b( + 24, 22, 21, // tri0 + 16, 21, 20, // tri1 + 24, 19, 23, // tri2 + 22, 23, 20 // tri3 +), +gsSPNTriangles_5b( + 21, 18, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_rcc_model[] = { +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcc_1_v[299], 5, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rcc_1_v[304], 15, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 0, 5, // tri0 + 0, 7, 6, // tri1 + 2, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 0, 1, 10, // tri0 + 1, 2, 11, // tri1 + 2, 4, 12, // tri2 + 1, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 15, 16, 17, // tri0 + 18, 16, 15, // tri1 + 19, 17, 16 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_rcc_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcc_1_v[319], 9, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 6, 2 // tri2 +), +gsSPNTriangles_5b( + 7, 5, 4, // tri0 + 7, 4, 0, // tri1 + 0, 2, 7, // tri2 + 5, 8, 3 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_rcc_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcc_1_v[274], 4, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rcc_1_v[278], 14, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 3, 4, // tri0 + 0, 6, 5, // tri1 + 2, 8, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 9, // tri0 + 2, 1, 10, // tri1 + 3, 2, 11, // tri2 + 1, 12, 13 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 14, 15, 16, // tri0 + 16, 15, 17, // tri1 + 15, 14, 17 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_rcc_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcc_1_v[292], 7, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 0, 5, 1 // tri2 +), +gsSPNTriangles_5b( + 4, 3, 6, // tri0 + 2, 4, 6, // tri1 + 6, 0, 2, // tri2 + 1, 5, 3 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx base_rcc_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000680, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcc_1_v[328], 19, 0), +gsSPNTrianglesInit_5b( + 27, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 5, 8, 6, // tri1 + 6, 8, 9, // tri2 + 7, 1, 0 // tri3 +), +gsSPNTriangles_5b( + 1, 4, 2, // tri0 + 1, 7, 5, // tri1 + 1, 5, 4, // tri2 + 10, 11, 12 // tri3 +), +gsSPNTriangles_5b( + 10, 6, 9, // tri0 + 4, 6, 10, // tri1 + 2, 4, 13, // tri2 + 2, 13, 14 // tri3 +), +gsSPNTriangles_5b( + 15, 14, 16, // tri0 + 17, 12, 11, // tri1 + 15, 16, 17, // tri2 + 18, 10, 12 // tri3 +), +gsSPNTriangles_5b( + 10, 13, 4, // tri0 + 18, 13, 10, // tri1 + 16, 14, 18, // tri2 + 18, 14, 13 // tri3 +), +gsSPNTriangles_5b( + 9, 11, 10, // tri0 + 17, 16, 12, // tri1 + 3, 2, 14, // tri2 + 14, 15, 3 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_rcc_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_rcc_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_rcc_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_rcc_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_rcc_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_rcc_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,-700 }, + /* joint 11 */ { tail1_rcc_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_rcc_model, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_rcc_model, 3, cKF_JOINT_FLAG_DISP_OPA, 425,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 650,-500,0 }, + /* joint 15 */ { Larm1_rcc_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_rcc_model, 0, cKF_JOINT_FLAG_DISP_OPA, 558,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 650,500,0 }, + /* joint 18 */ { Rarm1_rcc_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_rcc_model, 1, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 875,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 800,0,1785 }, + /* joint 23 */ { mouth_rcc_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_rcc_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1050,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_rcc_1 = { 26, 14, cKF_je_r_rcc_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/rcd_1.c b/src/data/npc/model/mdl/rcd_1.c new file mode 100644 index 00000000..74f0e6a8 --- /dev/null +++ b/src/data/npc/model/mdl/rcd_1.c @@ -0,0 +1,747 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx rcd_1_v[] = { +#include "assets/npc/mdl/rcd_1_v.inc" +}; + +static Gfx head_rcd_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcd_1_v[14], 28, 0), +gsSPNTrianglesInit_5b( + 39, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 6, 8, 9, // tri0 + 0, 10, 1, // tri1 + 11, 5, 4, // tri2 + 5, 8, 3 // tri3 +), +gsSPNTriangles_5b( + 0, 4, 12, // tri0 + 0, 12, 13, // tri1 + 4, 3, 12, // tri2 + 14, 15, 4 // tri3 +), +gsSPNTriangles_5b( + 14, 4, 0, // tri0 + 6, 16, 17, // tri1 + 18, 19, 20, // tri2 + 16, 6, 9 // tri3 +), +gsSPNTriangles_5b( + 21, 22, 20, // tri0 + 13, 12, 23, // tri1 + 13, 23, 24, // tri2 + 23, 12, 3 // tri3 +), +gsSPNTriangles_5b( + 24, 10, 13, // tri0 + 10, 24, 19, // tri1 + 10, 19, 18, // tri2 + 1, 10, 18 // tri3 +), +gsSPNTriangles_5b( + 17, 21, 20, // tri0 + 25, 7, 6, // tri1 + 25, 23, 7, // tri2 + 7, 3, 8 // tri3 +), +gsSPNTriangles_5b( + 7, 23, 3, // tri0 + 20, 19, 25, // tri1 + 25, 19, 24, // tri2 + 24, 23, 25 // tri3 +), +gsSPNTriangles_5b( + 4, 15, 11, // tri0 + 2, 14, 0, // tri1 + 6, 17, 25, // tri2 + 17, 20, 25 // tri3 +), +gsSPNTriangles_5b( + 20, 22, 18, // tri0 + 26, 27, 15, // tri1 + 26, 15, 14, // tri2 + 13, 10, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&rcd_1_v[42], 29, 0), +gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 8, 5, 4, // tri0 + 6, 5, 8, // tri1 + 9, 10, 4, // tri2 + 10, 11, 12 // tri3 +), +gsSPNTriangles_5b( + 2, 7, 6, // tri0 + 13, 0, 6, // tri1 + 13, 6, 8, // tri2 + 8, 12, 13 // tri3 +), +gsSPNTriangles_5b( + 0, 2, 6, // tri0 + 4, 3, 9, // tri1 + 9, 14, 10, // tri2 + 15, 0, 13 // tri3 +), +gsSPNTriangles_5b( + 4, 12, 8, // tri0 + 12, 4, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 17, 19, 20 // tri2 +), +gsSPNTriangles_5b( + 21, 22, 23, // tri0 + 22, 20, 19, // tri1 + 22, 19, 23, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 253, 255, 255), +gsSPNTrianglesInit_5b( + 3, // tri count + 24, 25, 26, // tri0 + 26, 25, 27, // tri1 + 26, 28, 24 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rcd_1_v[71], 26, 0), +gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 4, 5 // tri2 +), +gsSPNTriangles_5b( + 3, 5, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 253, 255, 255), +gsSPNTrianglesInit_5b( + 5, // tri count + 6, 7, 8, // tri0 + 6, 9, 10, // tri1 + 11, 12, 6 // tri2 +), +gsSPNTriangles_5b( + 8, 11, 6, // tri0 + 10, 7, 6, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPNTrianglesInit_5b( + 4, // tri count + 13, 14, 15, // tri0 + 16, 17, 18, // tri1 + 16, 18, 13 // tri2 +), +gsSPNTriangles_5b( + 13, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 5, // tri count + 19, 20, 21, // tri0 + 19, 22, 23, // tri1 + 21, 24, 19 // tri2 +), +gsSPNTriangles_5b( + 19, 25, 22, // tri0 + 23, 20, 19, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx mouth_rcd_model[] = { +gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcd_1_v[0], 5, 0), +gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rcd_1_v[5], 9, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 5, 6, // tri0 + 4, 8, 7, // tri1 + 2, 1, 9 // tri2 +), +gsSPNTriangles_5b( + 3, 10, 0, // tri0 + 1, 0, 11, // tri1 + 4, 2, 12, // tri2 + 3, 4, 13 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_rcd_model[] = { +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcd_1_v[141], 6, 0), +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rcd_1_v[147], 23, 6), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 5, 6, // tri0 + 0, 2, 7, // tri1 + 0, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 2, 10, 11, // tri0 + 1, 12, 13, // tri1 + 3, 1, 14, // tri2 + 1, 0, 15 // tri3 +), +gsSPNTriangles_5b( + 4, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 18, 19, 20, // tri0 + 18, 20, 21, // tri1 + 22, 20, 19 // tri2 +), +gsSPNTriangles_5b( + 21, 22, 23, // tri0 + 24, 23, 22, // tri1 + 19, 24, 22, // tri2 + 22, 21, 20 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 2, // tri count + 25, 26, 27, // tri0 + 25, 28, 26, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_rcd_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcd_1_v[170], 4, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rcd_1_v[174], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 1, 4, 0, // tri0 + 3, 6, 5, // tri1 + 1, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 0, 9, 10, // tri0 + 3, 11, 12, // tri1 + 2, 3, 13, // tri2 + 3, 0, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_rcd_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcd_1_v[97], 6, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rcd_1_v[103], 23, 6), +gsSPNTrianglesInit_5b( + 8, // tri count + 5, 2, 6, // tri0 + 2, 0, 7, // tri1 + 0, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 2, 10, 11, // tri0 + 1, 12, 13, // tri1 + 1, 3, 14, // tri2 + 0, 1, 15 // tri3 +), +gsSPNTriangles_5b( + 4, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 18, 19, 20, // tri0 + 18, 20, 21, // tri1 + 20, 19, 22 // tri2 +), +gsSPNTriangles_5b( + 23, 22, 18, // tri0 + 22, 23, 24, // tri1 + 22, 24, 20, // tri2 + 19, 18, 22 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 2, // tri count + 25, 26, 27, // tri0 + 25, 28, 26, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_rcd_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcd_1_v[126], 4, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rcd_1_v[130], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 4, 1, // tri0 + 3, 6, 5, // tri1 + 1, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 0, 9, 10, // tri0 + 3, 11, 12, // tri1 + 3, 2, 13, // tri2 + 0, 3, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_rcd_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000180, G_IM_FMT_CI, 48, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcd_1_v[185], 25, 0), +gsSPNTrianglesInit_5b( + 31, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 5 // tri2 +), +gsSPNTriangles_5b( + 8, 5, 4, // tri0 + 9, 10, 11, // tri1 + 11, 12, 13, // tri2 + 14, 2, 9 // tri3 +), +gsSPNTriangles_5b( + 13, 8, 0, // tri0 + 11, 15, 12, // tri1 + 16, 0, 17, // tri2 + 16, 1, 0 // tri3 +), +gsSPNTriangles_5b( + 8, 17, 0, // tri0 + 13, 14, 11, // tri1 + 0, 14, 13, // tri2 + 13, 5, 8 // tri3 +), +gsSPNTriangles_5b( + 5, 12, 6, // tri0 + 5, 13, 12, // tri1 + 15, 11, 18, // tri2 + 11, 10, 18 // tri3 +), +gsSPNTriangles_5b( + 2, 14, 0, // tri0 + 11, 14, 9, // tri1 + 19, 20, 2, // tri2 + 19, 2, 1 // tri3 +), +gsSPNTriangles_5b( + 1, 16, 21, // tri0 + 10, 9, 22, // tri1 + 10, 22, 23, // tri2 + 24, 18, 10 // tri3 +), +gsSPNTriangles_5b( + 20, 9, 2, // tri0 + 9, 20, 22, // tri1 + 1, 21, 19, // tri2 + 23, 24, 10 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&rcd_1_v[210], 15, 0), +gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 5, 3, 6 // tri2 +), +gsSPNTriangles_5b( + 3, 7, 6, // tri0 + 8, 1, 9, // tri1 + 10, 2, 11, // tri2 + 7, 2, 10 // tri3 +), +gsSPNTriangles_5b( + 2, 7, 3, // tri0 + 2, 1, 11, // tri1 + 4, 3, 5, // tri2 + 12, 9, 1 // tri3 +), +gsSPNTriangles_5b( + 0, 2, 3, // tri0 + 12, 1, 0, // tri1 + 8, 11, 1, // tri2 + 11, 8, 13 // tri3 +), +gsSPNTriangles_5b( + 14, 6, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail1_rcd_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcd_1_v[250], 4, 0), +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000580, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rcd_1_v[254], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 1, 4, 5, // tri0 + 1, 0, 6, // tri1 + 2, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 1, 9, 10, // tri0 + 2, 1, 11, // tri1 + 0, 12, 13, // tri2 + 0, 3, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail2_rcd_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcd_1_v[225], 4, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000580, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rcd_1_v[229], 21, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 4, 5, // tri0 + 0, 3, 6, // tri1 + 1, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 0, 9, // tri0 + 1, 2, 10, // tri1 + 0, 11, 12, // tri2 + 3, 1, 13 // tri3 +), +gsSPNTriangles_5b( + 2, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 12, // tri count + 16, 17, 18, // tri0 + 19, 17, 16, // tri1 + 20, 21, 22 // tri2 +), +gsSPNTriangles_5b( + 20, 23, 16, // tri0 + 18, 21, 16, // tri1 + 16, 23, 19, // tri2 + 23, 22, 24 // tri3 +), +gsSPNTriangles_5b( + 24, 22, 21, // tri0 + 16, 21, 20, // tri1 + 24, 19, 23, // tri2 + 22, 23, 20 // tri3 +), +gsSPNTriangles_5b( + 21, 18, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_rcd_model[] = { +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcd_1_v[290], 5, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rcd_1_v[295], 15, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 0, 5, // tri0 + 0, 7, 6, // tri1 + 2, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 0, 1, 10, // tri0 + 1, 2, 11, // tri1 + 2, 4, 12, // tri2 + 1, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 15, 16, 17, // tri0 + 18, 16, 15, // tri1 + 19, 17, 16 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_rcd_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcd_1_v[310], 9, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 6, 2 // tri2 +), +gsSPNTriangles_5b( + 7, 5, 4, // tri0 + 7, 4, 0, // tri1 + 0, 2, 7, // tri2 + 5, 8, 3 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_rcd_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcd_1_v[265], 4, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rcd_1_v[269], 14, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 3, 4, // tri0 + 0, 6, 5, // tri1 + 2, 8, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 9, // tri0 + 2, 1, 10, // tri1 + 3, 2, 11, // tri2 + 1, 12, 13 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 14, 15, 16, // tri0 + 16, 15, 17, // tri1 + 15, 14, 17 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_rcd_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcd_1_v[283], 7, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 0, 5, 1 // tri2 +), +gsSPNTriangles_5b( + 4, 3, 6, // tri0 + 2, 4, 6, // tri1 + 6, 0, 2, // tri2 + 1, 5, 3 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx base_rcd_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcd_1_v[319], 19, 0), +gsSPNTrianglesInit_5b( + 27, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 5, 8, 6, // tri1 + 6, 8, 9, // tri2 + 7, 1, 0 // tri3 +), +gsSPNTriangles_5b( + 1, 4, 2, // tri0 + 1, 7, 5, // tri1 + 1, 5, 4, // tri2 + 10, 11, 12 // tri3 +), +gsSPNTriangles_5b( + 10, 6, 9, // tri0 + 4, 6, 10, // tri1 + 2, 4, 13, // tri2 + 2, 13, 14 // tri3 +), +gsSPNTriangles_5b( + 15, 14, 16, // tri0 + 17, 12, 11, // tri1 + 15, 16, 17, // tri2 + 18, 10, 12 // tri3 +), +gsSPNTriangles_5b( + 10, 13, 4, // tri0 + 18, 13, 10, // tri1 + 16, 14, 18, // tri2 + 18, 14, 13 // tri3 +), +gsSPNTriangles_5b( + 9, 11, 10, // tri0 + 17, 16, 12, // tri1 + 3, 2, 14, // tri2 + 14, 15, 3 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_rcd_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_rcd_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_rcd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_rcd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_rcd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_rcd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,-700 }, + /* joint 11 */ { tail1_rcd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_rcd_model, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_rcd_model, 3, cKF_JOINT_FLAG_DISP_OPA, 425,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 650,-500,0 }, + /* joint 15 */ { Larm1_rcd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_rcd_model, 0, cKF_JOINT_FLAG_DISP_OPA, 558,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 650,500,0 }, + /* joint 18 */ { Rarm1_rcd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_rcd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 875,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 800,0,1785 }, + /* joint 23 */ { mouth_rcd_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_rcd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1050,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_rcd_1 = { 26, 14, cKF_je_r_rcd_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/rcf_1.c b/src/data/npc/model/mdl/rcf_1.c new file mode 100644 index 00000000..1f5f9097 --- /dev/null +++ b/src/data/npc/model/mdl/rcf_1.c @@ -0,0 +1,900 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx rcf_1_v[] = { +#include "assets/npc/mdl/rcf_1_v.inc" +}; + +static Gfx head_rcf_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcf_1_v[14], 28, 0), +gsSPNTrianglesInit_5b( + 39, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 0, 9, 1, // tri0 + 10, 5, 4, // tri1 + 5, 6, 3, // tri2 + 0, 4, 11 // tri3 +), +gsSPNTriangles_5b( + 0, 11, 12, // tri0 + 4, 3, 11, // tri1 + 13, 14, 4, // tri2 + 13, 4, 0 // tri3 +), +gsSPNTriangles_5b( + 8, 15, 16, // tri0 + 17, 18, 19, // tri1 + 15, 8, 7, // tri2 + 20, 21, 19 // tri3 +), +gsSPNTriangles_5b( + 12, 11, 22, // tri0 + 12, 22, 23, // tri1 + 22, 11, 3, // tri2 + 23, 9, 12 // tri3 +), +gsSPNTriangles_5b( + 9, 23, 18, // tri0 + 9, 18, 17, // tri1 + 1, 9, 17, // tri2 + 16, 20, 19 // tri3 +), +gsSPNTriangles_5b( + 24, 25, 8, // tri0 + 24, 22, 25, // tri1 + 25, 3, 6, // tri2 + 25, 22, 3 // tri3 +), +gsSPNTriangles_5b( + 19, 18, 24, // tri0 + 24, 18, 23, // tri1 + 23, 22, 24, // tri2 + 4, 14, 10 // tri3 +), +gsSPNTriangles_5b( + 2, 13, 0, // tri0 + 8, 16, 24, // tri1 + 16, 19, 24, // tri2 + 8, 25, 6 // tri3 +), +gsSPNTriangles_5b( + 19, 21, 17, // tri0 + 26, 27, 14, // tri1 + 26, 14, 13, // tri2 + 12, 9, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&rcf_1_v[42], 27, 0), +gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 5, 2, 1 // tri2 +), +gsSPNTriangles_5b( + 3, 2, 5, // tri0 + 6, 7, 1, // tri1 + 7, 8, 9, // tri2 + 10, 4, 3 // tri3 +), +gsSPNTriangles_5b( + 11, 12, 3, // tri0 + 11, 3, 5, // tri1 + 5, 9, 11, // tri2 + 12, 10, 3 // tri3 +), +gsSPNTriangles_5b( + 1, 0, 6, // tri0 + 6, 13, 7, // tri1 + 14, 12, 11, // tri2 + 1, 9, 5 // tri3 +), +gsSPNTriangles_5b( + 9, 1, 7, // tri0 + 12, 15, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 16, 17, 18, // tri0 + 16, 18, 19, // tri1 + 20, 21, 22 // tri2 +), +gsSPNTriangles_5b( + 21, 19, 23, // tri0 + 21, 23, 24, // tri1 + 25, 16, 26, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 253, 255, 255), +gsSPVertex(&rcf_1_v[69], 31, 0), +gsSPNTrianglesInit_5b( + 3, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 0, 4, 3 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPNTrianglesInit_5b( + 4, // tri count + 5, 6, 7, // tri0 + 7, 8, 9, // tri1 + 7, 9, 5 // tri2 +), +gsSPNTriangles_5b( + 5, 10, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 253, 255, 255), +gsSPNTrianglesInit_5b( + 5, // tri count + 11, 12, 13, // tri0 + 11, 14, 15, // tri1 + 16, 17, 11 // tri2 +), +gsSPNTriangles_5b( + 13, 16, 11, // tri0 + 15, 12, 11, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPNTrianglesInit_5b( + 4, // tri count + 18, 19, 20, // tri0 + 20, 21, 22, // tri1 + 20, 22, 18 // tri2 +), +gsSPNTriangles_5b( + 18, 23, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 5, // tri count + 24, 25, 26, // tri0 + 24, 27, 28, // tri1 + 26, 29, 24 // tri2 +), +gsSPNTriangles_5b( + 24, 30, 27, // tri0 + 28, 25, 24, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcf_1_v[100], 29, 0), +gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 7, 9, 10, // tri1 + 9, 8, 11, // tri2 + 12, 13, 11 // tri3 +), +gsSPNTriangles_5b( + 12, 11, 14, // tri0 + 6, 15, 4, // tri1 + 11, 13, 9, // tri2 + 16, 2, 1 // tri3 +), +gsSPNTriangles_5b( + 16, 1, 17, // tri0 + 14, 18, 12, // tri1 + 18, 4, 15, // tri2 + 18, 15, 12 // tri3 +), +gsSPNTriangles_5b( + 10, 16, 17, // tri0 + 10, 17, 7, // tri1 + 3, 6, 5, // tri2 + 3, 5, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 60), +gsSPNTrianglesInit_5b( + 8, // tri count + 19, 20, 21, // tri0 + 22, 23, 24, // tri1 + 24, 19, 25 // tri2 +), +gsSPNTriangles_5b( + 24, 25, 26, // tri0 + 26, 22, 24, // tri1 + 19, 21, 25, // tri2 + 22, 27, 23 // tri3 +), +gsSPNTriangles_5b( + 21, 20, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx mouth_rcf_model[] = { +gsSPMatrix(0x0D000380, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcf_1_v[0], 5, 0), +gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rcf_1_v[5], 9, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 5, 6, // tri0 + 4, 8, 7, // tri1 + 2, 1, 9 // tri2 +), +gsSPNTriangles_5b( + 3, 10, 0, // tri0 + 1, 0, 11, // tri1 + 4, 2, 12, // tri2 + 3, 4, 13 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx hand_rcf_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), +gsDPSetTileSize(0, 0, 0, 60, 60), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcf_1_v[163], 28, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 3, 4 // tri2 +), +gsSPNTriangles_5b( + 3, 5, 6, // tri0 + 3, 6, 7, // tri1 + 3, 7, 4, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 14, // tri count + 8, 9, 10, // tri0 + 11, 12, 9, // tri1 + 13, 14, 15 // tri2 +), +gsSPNTriangles_5b( + 16, 17, 14, // tri0 + 18, 10, 19, // tri1 + 20, 21, 17, // tri2 + 21, 20, 18 // tri3 +), +gsSPNTriangles_5b( + 17, 16, 20, // tri0 + 14, 13, 16, // tri1 + 12, 11, 13, // tri2 + 9, 8, 11 // tri3 +), +gsSPNTriangles_5b( + 10, 18, 8, // tri0 + 19, 21, 18, // tri1 + 15, 12, 13, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), +gsDPSetTileSize(0, 0, 0, 60, 60), +gsSPNTrianglesInit_5b( + 4, // tri count + 22, 23, 24, // tri0 + 22, 24, 25, // tri1 + 24, 26, 27 // tri2 +), +gsSPNTriangles_5b( + 24, 27, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&rcf_1_v[191], 7, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 +), +gsSPNTriangles_5b( + 4, 5, 2, // tri0 + 5, 6, 2, // tri1 + 6, 0, 2, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_rcf_model[] = { +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcf_1_v[198], 4, 0), +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rcf_1_v[202], 16, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 4, 5, // tri0 + 1, 6, 7, // tri1 + 2, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 1, 10, 11, // tri0 + 0, 2, 12, // tri1 + 0, 13, 1, // tri2 + 2, 3, 14 // tri3 +), +gsSPNTriangles_5b( + 3, 1, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 16, 17, 18, // tri0 + 19, 18, 17, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_rcf_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcf_1_v[218], 3, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rcf_1_v[221], 11, 3), +gsSPNTrianglesInit_5b( + 7, // tri count + 2, 3, 1, // tri0 + 0, 5, 4, // tri1 + 2, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 0, 10, 11, // tri1 + 2, 0, 12, // tri2 + 0, 1, 13 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_rcf_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcf_1_v[129], 4, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rcf_1_v[133], 16, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 4, 5, // tri0 + 1, 6, 7, // tri1 + 2, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 1, 10, 11, // tri0 + 2, 0, 12, // tri1 + 1, 13, 0, // tri2 + 3, 2, 14 // tri3 +), +gsSPNTriangles_5b( + 1, 3, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_rcf_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcf_1_v[149], 3, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rcf_1_v[152], 11, 3), +gsSPNTrianglesInit_5b( + 7, // tri count + 1, 3, 2, // tri0 + 0, 5, 4, // tri1 + 2, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 0, 10, 11, // tri1 + 0, 2, 12, // tri2 + 1, 0, 13 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_rcf_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcf_1_v[232], 11, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rcf_1_v[243], 12, 11), +gsSPNTrianglesInit_5b( + 8, // tri count + 10, 11, 9, // tri0 + 8, 12, 10, // tri1 + 9, 13, 14 // tri2 +), +gsSPNTriangles_5b( + 3, 15, 16, // tri0 + 8, 3, 17, // tri1 + 5, 18, 19, // tri2 + 8, 21, 20 // tri3 +), +gsSPNTriangles_5b( + 5, 9, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&rcf_1_v[255], 13, 11), +gsSPNTrianglesInit_5b( + 9, // tri count + 2, 11, 12, // tri0 + 2, 1, 13, // tri1 + 7, 0, 14 // tri2 +), +gsSPNTriangles_5b( + 1, 7, 15, // tri0 + 0, 4, 16, // tri1 + 6, 17, 18, // tri2 + 4, 6, 19 // tri3 +), +gsSPNTriangles_5b( + 7, 20, 21, // tri0 + 0, 22, 23, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&rcf_1_v[268], 24, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 2, 3, 5, // tri0 + 0, 7, 1, // tri1 + 2, 5, 4, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 11, 8, 10 // tri2 +), +gsSPNTriangles_5b( + 10, 12, 11, // tri0 + 13, 14, 11, // tri1 + 13, 15, 14, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 6, // tri count + 16, 17, 18, // tri0 + 19, 18, 20, // tri1 + 21, 20, 18 // tri2 +), +gsSPNTriangles_5b( + 22, 18, 19, // tri0 + 18, 23, 16, // tri1 + 18, 22, 23, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail1_rcf_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcf_1_v[317], 4, 0), +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rcf_1_v[321], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 1, 4, 5, // tri0 + 1, 0, 6, // tri1 + 2, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 1, 9, 10, // tri0 + 2, 1, 11, // tri1 + 0, 12, 13, // tri2 + 0, 3, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail2_rcf_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcf_1_v[292], 4, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rcf_1_v[296], 21, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 4, 5, // tri0 + 0, 3, 6, // tri1 + 1, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 0, 9, // tri0 + 1, 2, 10, // tri1 + 0, 11, 12, // tri2 + 3, 1, 13 // tri3 +), +gsSPNTriangles_5b( + 2, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 12, // tri count + 16, 17, 18, // tri0 + 19, 17, 16, // tri1 + 20, 21, 22 // tri2 +), +gsSPNTriangles_5b( + 20, 23, 16, // tri0 + 18, 21, 16, // tri1 + 16, 23, 19, // tri2 + 23, 22, 24 // tri3 +), +gsSPNTriangles_5b( + 24, 22, 21, // tri0 + 16, 21, 20, // tri1 + 24, 19, 23, // tri2 + 22, 23, 20 // tri3 +), +gsSPNTriangles_5b( + 21, 18, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_rcf_model[] = { +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcf_1_v[361], 5, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rcf_1_v[366], 15, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 0, 5, // tri0 + 0, 7, 6, // tri1 + 2, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 0, 1, 10, // tri0 + 1, 2, 11, // tri1 + 2, 4, 12, // tri2 + 1, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 15, 16, 17, // tri0 + 18, 16, 15, // tri1 + 19, 17, 16 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_rcf_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcf_1_v[381], 9, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 6, 2 // tri2 +), +gsSPNTriangles_5b( + 7, 5, 4, // tri0 + 7, 4, 0, // tri1 + 0, 2, 7, // tri2 + 5, 8, 3 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_rcf_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcf_1_v[332], 5, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rcf_1_v[337], 15, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 3, 5, // tri0 + 0, 7, 6, // tri1 + 2, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 10, // tri0 + 2, 1, 11, // tri1 + 4, 2, 12, // tri2 + 1, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 15, 16, 17, // tri0 + 17, 16, 18, // tri1 + 16, 15, 19 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_rcf_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcf_1_v[352], 9, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 1 // tri2 +), +gsSPNTriangles_5b( + 4, 3, 7, // tri0 + 2, 4, 7, // tri1 + 7, 0, 2, // tri2 + 5, 8, 3 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx base_rcf_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000580, G_IM_FMT_CI, 48, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcf_1_v[390], 24, 0), +gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 9, 10, 7, // tri0 + 2, 11, 0, // tri1 + 6, 8, 12, // tri2 + 12, 13, 6 // tri3 +), +gsSPNTriangles_5b( + 2, 8, 11, // tri0 + 11, 3, 0, // tri1 + 8, 2, 12, // tri2 + 0, 3, 5 // tri3 +), +gsSPNTriangles_5b( + 9, 7, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 8, // tri count + 14, 15, 16, // tri0 + 17, 18, 16, // tri1 + 16, 15, 17 // tri2 +), +gsSPNTriangles_5b( + 16, 19, 14, // tri0 + 18, 17, 20, // tri1 + 19, 21, 22, // tri2 + 20, 23, 18 // tri3 +), +gsSPNTriangles_5b( + 22, 14, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&rcf_1_v[414], 21, 0), +gsSPNTrianglesInit_5b( + 29, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 0, 4, 1 // tri2 +), +gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 3, 9, // tri1 + 7, 10, 4, // tri2 + 11, 12, 13 // tri3 +), +gsSPNTriangles_5b( + 4, 5, 7, // tri0 + 11, 13, 2, // tri1 + 2, 13, 9, // tri2 + 2, 14, 11 // tri3 +), +gsSPNTriangles_5b( + 15, 14, 2, // tri0 + 10, 15, 1, // tri1 + 10, 1, 4, // tri2 + 5, 4, 3 // tri3 +), +gsSPNTriangles_5b( + 8, 9, 13, // tri0 + 5, 3, 8, // tri1 + 0, 2, 9, // tri2 + 2, 1, 15 // tri3 +), +gsSPNTriangles_5b( + 16, 17, 15, // tri0 + 16, 18, 17, // tri1 + 16, 15, 10, // tri2 + 18, 16, 19 // tri3 +), +gsSPNTriangles_5b( + 14, 20, 11, // tri0 + 17, 20, 14, // tri1 + 17, 18, 20, // tri2 + 15, 17, 14 // tri3 +), +gsSPNTriangles_5b( + 19, 10, 7, // tri0 + 19, 16, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_rcf_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_rcf_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_rcf_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_rcf_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_rcf_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_rcf_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,-700 }, + /* joint 11 */ { tail1_rcf_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_rcf_model, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_rcf_model, 3, cKF_JOINT_FLAG_DISP_OPA, 425,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 650,-500,0 }, + /* joint 15 */ { Larm1_rcf_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_rcf_model, 0, cKF_JOINT_FLAG_DISP_OPA, 558,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 650,500,0 }, + /* joint 18 */ { Rarm1_rcf_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_rcf_model, 1, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 20 */ { hand_rcf_model, 0, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 875,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 800,0,1785 }, + /* joint 23 */ { mouth_rcf_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_rcf_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1050,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_rcf_1 = { 26, 15, cKF_je_r_rcf_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/rcn_1.c b/src/data/npc/model/mdl/rcn_1.c new file mode 100644 index 00000000..3e117790 --- /dev/null +++ b/src/data/npc/model/mdl/rcn_1.c @@ -0,0 +1,749 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx rcn_1_v[] = { +#include "assets/npc/mdl/rcn_1_v.inc" +}; + +static Gfx head_rcn_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcn_1_v[14], 28, 0), +gsSPNTrianglesInit_5b( + 39, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 0, 9, 1, // tri0 + 10, 5, 4, // tri1 + 5, 6, 3, // tri2 + 0, 4, 11 // tri3 +), +gsSPNTriangles_5b( + 0, 11, 12, // tri0 + 4, 3, 11, // tri1 + 13, 14, 4, // tri2 + 13, 4, 0 // tri3 +), +gsSPNTriangles_5b( + 8, 15, 16, // tri0 + 17, 18, 19, // tri1 + 15, 8, 7, // tri2 + 20, 21, 19 // tri3 +), +gsSPNTriangles_5b( + 12, 11, 22, // tri0 + 12, 22, 23, // tri1 + 22, 11, 3, // tri2 + 23, 9, 12 // tri3 +), +gsSPNTriangles_5b( + 9, 23, 18, // tri0 + 9, 18, 17, // tri1 + 1, 9, 17, // tri2 + 16, 20, 19 // tri3 +), +gsSPNTriangles_5b( + 24, 25, 8, // tri0 + 24, 22, 25, // tri1 + 25, 3, 6, // tri2 + 25, 22, 3 // tri3 +), +gsSPNTriangles_5b( + 19, 18, 24, // tri0 + 24, 18, 23, // tri1 + 23, 22, 24, // tri2 + 4, 14, 10 // tri3 +), +gsSPNTriangles_5b( + 2, 13, 0, // tri0 + 8, 16, 24, // tri1 + 16, 19, 24, // tri2 + 8, 25, 6 // tri3 +), +gsSPNTriangles_5b( + 19, 21, 17, // tri0 + 26, 27, 14, // tri1 + 26, 14, 13, // tri2 + 12, 9, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&rcn_1_v[42], 31, 0), +gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 2, 4, 0 // tri2 +), +gsSPNTriangles_5b( + 0, 5, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 4, // tri count + 6, 7, 8, // tri0 + 8, 9, 10, // tri1 + 8, 10, 6 // tri2 +), +gsSPNTriangles_5b( + 6, 11, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 253, 255, 255), +gsSPNTrianglesInit_5b( + 3, // tri count + 12, 13, 14, // tri0 + 12, 15, 16, // tri1 + 14, 15, 12 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPNTrianglesInit_5b( + 5, // tri count + 17, 18, 19, // tri0 + 19, 20, 21, // tri1 + 19, 22, 17 // tri2 +), +gsSPNTriangles_5b( + 19, 21, 23, // tri0 + 23, 22, 19, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPSetPrimColor(0, 128, 255, 253, 255, 255), +gsSPNTrianglesInit_5b( + 5, // tri count + 24, 25, 26, // tri0 + 26, 27, 28, // tri1 + 28, 29, 26 // tri2 +), +gsSPNTriangles_5b( + 26, 29, 24, // tri0 + 25, 30, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rcn_1_v[73], 24, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 2, 5 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 6, // tri0 + 7, 4, 5, // tri1 + 4, 3, 2, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 17, // tri count + 8, 9, 10, // tri0 + 11, 10, 12, // tri1 + 10, 11, 8 // tri2 +), +gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 14, 16, 17, // tri1 + 14, 17, 18, // tri2 + 11, 19, 20 // tri3 +), +gsSPNTriangles_5b( + 20, 8, 11, // tri0 + 17, 21, 18, // tri1 + 19, 11, 22, // tri2 + 15, 14, 18 // tri3 +), +gsSPNTriangles_5b( + 15, 18, 12, // tri0 + 22, 18, 21, // tri1 + 12, 22, 11, // tri2 + 12, 10, 15 // tri3 +), +gsSPNTriangles_5b( + 18, 22, 12, // tri0 + 20, 23, 8, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx mouth_rcn_model[] = { +gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcn_1_v[0], 5, 0), +gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rcn_1_v[5], 9, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 5, 6, // tri0 + 2, 8, 7, // tri1 + 0, 4, 9 // tri2 +), +gsSPNTriangles_5b( + 1, 10, 3, // tri0 + 4, 3, 11, // tri1 + 2, 0, 12, // tri2 + 1, 2, 13 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_rcn_model[] = { +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcn_1_v[131], 4, 0), +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rcn_1_v[135], 16, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 4, 5, // tri0 + 1, 6, 7, // tri1 + 2, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 1, 10, 11, // tri0 + 0, 2, 12, // tri1 + 0, 13, 1, // tri2 + 2, 3, 14 // tri3 +), +gsSPNTriangles_5b( + 3, 1, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 16, 17, 18, // tri0 + 19, 18, 17, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_rcn_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcn_1_v[151], 3, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rcn_1_v[154], 11, 3), +gsSPNTrianglesInit_5b( + 7, // tri count + 2, 3, 1, // tri0 + 0, 5, 4, // tri1 + 2, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 0, 10, 11, // tri1 + 2, 0, 12, // tri2 + 0, 1, 13 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_rcn_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcn_1_v[97], 4, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rcn_1_v[101], 16, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 4, 5, // tri0 + 1, 6, 7, // tri1 + 2, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 1, 10, 11, // tri0 + 2, 0, 12, // tri1 + 1, 13, 0, // tri2 + 3, 2, 14 // tri3 +), +gsSPNTriangles_5b( + 1, 3, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_rcn_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcn_1_v[117], 3, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rcn_1_v[120], 11, 3), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 3, 2, // tri0 + 1, 5, 4, // tri1 + 2, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 0, 8, 9, // tri0 + 1, 10, 11, // tri1 + 1, 2, 12, // tri2 + 0, 1, 13 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_rcn_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcn_1_v[165], 11, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rcn_1_v[176], 13, 11), +gsSPNTrianglesInit_5b( + 9, // tri count + 1, 3, 11, // tri0 + 2, 13, 12, // tri1 + 3, 0, 14 // tri2 +), +gsSPNTriangles_5b( + 0, 2, 15, // tri0 + 5, 16, 17, // tri1 + 5, 1, 18, // tri2 + 1, 19, 20 // tri3 +), +gsSPNTriangles_5b( + 9, 21, 22, // tri0 + 2, 9, 23, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&rcn_1_v[189], 20, 11), +gsSPNTrianglesInit_5b( + 8, // tri count + 10, 11, 4, // tri0 + 6, 12, 13, // tri1 + 7, 6, 14 // tri2 +), +gsSPNTriangles_5b( + 8, 15, 16, // tri0 + 7, 18, 17, // tri1 + 7, 19, 10, // tri2 + 8, 4, 20 // tri3 +), +gsSPNTriangles_5b( + 4, 21, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 23, 24, 25, // tri0 + 25, 26, 27, // tri1 + 23, 28, 24 // tri2 +), +gsSPNTriangles_5b( + 26, 29, 27, // tri0 + 25, 30, 23, // tri1 + 27, 30, 25, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&rcn_1_v[209], 12, 0), +gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 0, 2, 6, // tri0 + 0, 5, 8, // tri1 + 3, 0, 8, // tri2 + 9, 8, 5 // tri3 +), +gsSPNTriangles_5b( + 3, 1, 0, // tri0 + 10, 8, 9, // tri1 + 8, 11, 3, // tri2 + 8, 10, 11 // tri3 +), +gsSPNTriangles_5b( + 0, 6, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail1_rcn_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcn_1_v[246], 4, 0), +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rcn_1_v[250], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 1, 4, 5, // tri0 + 1, 0, 6, // tri1 + 2, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 1, 9, 10, // tri0 + 2, 1, 11, // tri1 + 0, 12, 13, // tri2 + 0, 3, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail2_rcn_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcn_1_v[221], 4, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rcn_1_v[225], 21, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 4, 5, // tri0 + 0, 3, 6, // tri1 + 1, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 0, 9, // tri0 + 1, 2, 10, // tri1 + 0, 11, 12, // tri2 + 3, 1, 13 // tri3 +), +gsSPNTriangles_5b( + 2, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 12, // tri count + 16, 17, 18, // tri0 + 19, 17, 16, // tri1 + 20, 21, 22 // tri2 +), +gsSPNTriangles_5b( + 20, 23, 16, // tri0 + 18, 21, 16, // tri1 + 16, 23, 19, // tri2 + 23, 22, 24 // tri3 +), +gsSPNTriangles_5b( + 24, 22, 21, // tri0 + 16, 21, 20, // tri1 + 24, 19, 23, // tri2 + 22, 23, 20 // tri3 +), +gsSPNTriangles_5b( + 21, 18, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_rcn_model[] = { +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcn_1_v[290], 5, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rcn_1_v[295], 15, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 0, 5, // tri0 + 0, 7, 6, // tri1 + 2, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 0, 1, 10, // tri0 + 1, 2, 11, // tri1 + 2, 4, 12, // tri2 + 1, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 15, 16, 17, // tri0 + 18, 16, 15, // tri1 + 19, 17, 16 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_rcn_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcn_1_v[310], 9, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 6, 2 // tri2 +), +gsSPNTriangles_5b( + 7, 5, 4, // tri0 + 7, 4, 0, // tri1 + 0, 2, 7, // tri2 + 5, 8, 3 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_rcn_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcn_1_v[261], 5, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rcn_1_v[266], 15, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 3, 5, // tri0 + 0, 7, 6, // tri1 + 2, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 10, // tri0 + 2, 1, 11, // tri1 + 4, 2, 12, // tri2 + 1, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 15, 16, 17, // tri0 + 17, 16, 18, // tri1 + 16, 15, 19 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_rcn_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcn_1_v[281], 9, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 1 // tri2 +), +gsSPNTriangles_5b( + 4, 3, 7, // tri0 + 2, 4, 7, // tri1 + 7, 0, 2, // tri2 + 5, 8, 3 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx base_rcn_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 48, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcn_1_v[319], 24, 0), +gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 2, 8, 6, // tri0 + 5, 9, 10, // tri1 + 5, 10, 3, // tri2 + 6, 0, 2 // tri3 +), +gsSPNTriangles_5b( + 11, 7, 12, // tri0 + 12, 3, 10, // tri1 + 7, 11, 13, // tri2 + 10, 11, 12 // tri3 +), +gsSPNTriangles_5b( + 13, 0, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 8, // tri count + 14, 15, 16, // tri0 + 17, 18, 19, // tri1 + 20, 14, 21 // tri2 +), +gsSPNTriangles_5b( + 20, 22, 18, // tri0 + 18, 17, 20, // tri1 + 21, 22, 20, // tri2 + 16, 21, 14 // tri3 +), +gsSPNTriangles_5b( + 19, 23, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&rcn_1_v[343], 14, 0), +gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 6, 1 // tri2 +), +gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 5, 7, 6, // tri1 + 4, 9, 5, // tri2 + 5, 9, 7 // tri3 +), +gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 0, 4, 1, // tri1 + 3, 9, 4, // tri2 + 9, 3, 10 // tri3 +), +gsSPNTriangles_5b( + 11, 7, 9, // tri0 + 11, 8, 7, // tri1 + 8, 12, 6, // tri2 + 6, 13, 2 // tri3 +), +gsSPNTriangles_5b( + 13, 6, 12, // tri0 + 6, 2, 1, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_rcn_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_rcn_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_rcn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_rcn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_rcn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_rcn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,-700 }, + /* joint 11 */ { tail1_rcn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_rcn_model, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_rcn_model, 3, cKF_JOINT_FLAG_DISP_OPA, 425,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 650,-500,0 }, + /* joint 15 */ { Larm1_rcn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_rcn_model, 0, cKF_JOINT_FLAG_DISP_OPA, 558,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 650,500,0 }, + /* joint 18 */ { Rarm1_rcn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_rcn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 875,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 800,0,1785 }, + /* joint 23 */ { mouth_rcn_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_rcn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1050,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_rcn_1 = { 26, 14, cKF_je_r_rcn_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/rcs_1.c b/src/data/npc/model/mdl/rcs_1.c new file mode 100644 index 00000000..90680f4a --- /dev/null +++ b/src/data/npc/model/mdl/rcs_1.c @@ -0,0 +1,767 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx rcs_1_v[] = { +#include "assets/npc/mdl/rcs_1_v.inc" +}; + +static Gfx head_rcs_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcs_1_v[14], 28, 0), +gsSPNTrianglesInit_5b( + 39, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 0, 9, 1, // tri0 + 10, 5, 4, // tri1 + 5, 6, 3, // tri2 + 0, 4, 11 // tri3 +), +gsSPNTriangles_5b( + 0, 11, 12, // tri0 + 4, 3, 11, // tri1 + 13, 14, 4, // tri2 + 13, 4, 0 // tri3 +), +gsSPNTriangles_5b( + 8, 15, 16, // tri0 + 17, 18, 19, // tri1 + 15, 8, 7, // tri2 + 20, 21, 19 // tri3 +), +gsSPNTriangles_5b( + 12, 11, 22, // tri0 + 12, 22, 23, // tri1 + 22, 11, 3, // tri2 + 23, 9, 12 // tri3 +), +gsSPNTriangles_5b( + 9, 23, 18, // tri0 + 9, 18, 17, // tri1 + 1, 9, 17, // tri2 + 16, 20, 19 // tri3 +), +gsSPNTriangles_5b( + 24, 25, 8, // tri0 + 24, 22, 25, // tri1 + 25, 3, 6, // tri2 + 25, 22, 3 // tri3 +), +gsSPNTriangles_5b( + 19, 18, 24, // tri0 + 24, 18, 23, // tri1 + 23, 22, 24, // tri2 + 4, 14, 10 // tri3 +), +gsSPNTriangles_5b( + 2, 13, 0, // tri0 + 8, 16, 24, // tri1 + 16, 19, 24, // tri2 + 8, 25, 6 // tri3 +), +gsSPNTriangles_5b( + 19, 21, 17, // tri0 + 26, 27, 14, // tri1 + 26, 14, 13, // tri2 + 12, 9, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&rcs_1_v[42], 31, 0), +gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 2, 4, 0 // tri2 +), +gsSPNTriangles_5b( + 0, 5, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 4, // tri count + 6, 7, 8, // tri0 + 8, 9, 10, // tri1 + 8, 10, 6 // tri2 +), +gsSPNTriangles_5b( + 6, 11, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 253, 255, 255), +gsSPNTrianglesInit_5b( + 3, // tri count + 12, 13, 14, // tri0 + 12, 15, 16, // tri1 + 14, 15, 12 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPNTrianglesInit_5b( + 5, // tri count + 17, 18, 19, // tri0 + 19, 20, 21, // tri1 + 19, 22, 17 // tri2 +), +gsSPNTriangles_5b( + 19, 21, 23, // tri0 + 23, 22, 19, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPSetPrimColor(0, 128, 255, 253, 255, 255), +gsSPNTrianglesInit_5b( + 5, // tri count + 24, 25, 26, // tri0 + 26, 27, 28, // tri1 + 28, 29, 26 // tri2 +), +gsSPNTriangles_5b( + 26, 29, 24, // tri0 + 25, 30, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rcs_1_v[73], 24, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 2, 5 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 6, // tri0 + 7, 4, 5, // tri1 + 4, 3, 2, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 17, // tri count + 8, 9, 10, // tri0 + 11, 10, 12, // tri1 + 10, 11, 8 // tri2 +), +gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 14, 16, 17, // tri1 + 14, 17, 18, // tri2 + 11, 19, 20 // tri3 +), +gsSPNTriangles_5b( + 20, 8, 11, // tri0 + 17, 21, 18, // tri1 + 19, 11, 22, // tri2 + 15, 14, 18 // tri3 +), +gsSPNTriangles_5b( + 15, 18, 12, // tri0 + 22, 18, 21, // tri1 + 12, 22, 11, // tri2 + 12, 10, 15 // tri3 +), +gsSPNTriangles_5b( + 18, 22, 12, // tri0 + 20, 23, 8, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx mouth_rcs_model[] = { +gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcs_1_v[0], 5, 0), +gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rcs_1_v[5], 9, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 5, 6, // tri0 + 2, 8, 7, // tri1 + 0, 4, 9 // tri2 +), +gsSPNTriangles_5b( + 1, 10, 3, // tri0 + 4, 3, 11, // tri1 + 2, 0, 12, // tri2 + 1, 2, 13 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_rcs_model[] = { +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcs_1_v[131], 4, 0), +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rcs_1_v[135], 16, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 4, 5, // tri0 + 1, 6, 7, // tri1 + 2, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 1, 10, 11, // tri0 + 0, 2, 12, // tri1 + 0, 13, 1, // tri2 + 2, 3, 14 // tri3 +), +gsSPNTriangles_5b( + 3, 1, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 16, 17, 18, // tri0 + 19, 18, 17, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_rcs_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcs_1_v[151], 3, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rcs_1_v[154], 11, 3), +gsSPNTrianglesInit_5b( + 7, // tri count + 2, 3, 1, // tri0 + 0, 5, 4, // tri1 + 2, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 0, 10, 11, // tri1 + 2, 0, 12, // tri2 + 0, 1, 13 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_rcs_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcs_1_v[97], 4, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rcs_1_v[101], 16, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 4, 5, // tri0 + 1, 6, 7, // tri1 + 2, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 1, 10, 11, // tri0 + 2, 0, 12, // tri1 + 1, 13, 0, // tri2 + 3, 2, 14 // tri3 +), +gsSPNTriangles_5b( + 1, 3, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_rcs_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcs_1_v[117], 3, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rcs_1_v[120], 11, 3), +gsSPNTrianglesInit_5b( + 7, // tri count + 1, 3, 2, // tri0 + 0, 5, 4, // tri1 + 2, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 0, 10, 11, // tri1 + 0, 2, 12, // tri2 + 1, 0, 13 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_rcs_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcs_1_v[165], 11, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rcs_1_v[176], 12, 11), +gsSPNTrianglesInit_5b( + 8, // tri count + 10, 11, 9, // tri0 + 8, 12, 10, // tri1 + 9, 13, 14 // tri2 +), +gsSPNTriangles_5b( + 3, 15, 16, // tri0 + 8, 3, 17, // tri1 + 5, 18, 19, // tri2 + 8, 21, 20 // tri3 +), +gsSPNTriangles_5b( + 5, 9, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&rcs_1_v[188], 13, 11), +gsSPNTrianglesInit_5b( + 9, // tri count + 2, 11, 12, // tri0 + 2, 1, 13, // tri1 + 7, 0, 14 // tri2 +), +gsSPNTriangles_5b( + 1, 7, 15, // tri0 + 0, 4, 16, // tri1 + 6, 17, 18, // tri2 + 4, 6, 19 // tri3 +), +gsSPNTriangles_5b( + 7, 20, 21, // tri0 + 0, 22, 23, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&rcs_1_v[201], 24, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 2, 3, 5, // tri0 + 0, 7, 1, // tri1 + 2, 5, 4, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 11, 8, 10 // tri2 +), +gsSPNTriangles_5b( + 10, 12, 11, // tri0 + 13, 14, 11, // tri1 + 13, 15, 14, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 6, // tri count + 16, 17, 18, // tri0 + 19, 18, 20, // tri1 + 21, 20, 18 // tri2 +), +gsSPNTriangles_5b( + 22, 18, 19, // tri0 + 18, 23, 16, // tri1 + 18, 22, 23, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail1_rcs_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcs_1_v[250], 4, 0), +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rcs_1_v[254], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 1, 4, 5, // tri0 + 1, 0, 6, // tri1 + 2, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 1, 9, 10, // tri0 + 2, 1, 11, // tri1 + 0, 12, 13, // tri2 + 0, 3, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail2_rcs_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcs_1_v[225], 4, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rcs_1_v[229], 21, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 4, 5, // tri0 + 0, 3, 6, // tri1 + 1, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 0, 9, // tri0 + 1, 2, 10, // tri1 + 0, 11, 12, // tri2 + 3, 1, 13 // tri3 +), +gsSPNTriangles_5b( + 2, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 12, // tri count + 16, 17, 18, // tri0 + 19, 17, 16, // tri1 + 20, 21, 22 // tri2 +), +gsSPNTriangles_5b( + 20, 23, 16, // tri0 + 18, 21, 16, // tri1 + 16, 23, 19, // tri2 + 23, 22, 24 // tri3 +), +gsSPNTriangles_5b( + 24, 22, 21, // tri0 + 16, 21, 20, // tri1 + 24, 19, 23, // tri2 + 22, 23, 20 // tri3 +), +gsSPNTriangles_5b( + 21, 18, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_rcs_model[] = { +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcs_1_v[294], 5, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rcs_1_v[299], 15, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 0, 5, // tri0 + 0, 7, 6, // tri1 + 2, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 0, 1, 10, // tri0 + 1, 2, 11, // tri1 + 2, 4, 12, // tri2 + 1, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 15, 16, 17, // tri0 + 18, 16, 15, // tri1 + 19, 17, 16 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_rcs_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcs_1_v[314], 9, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 6, 2 // tri2 +), +gsSPNTriangles_5b( + 7, 5, 4, // tri0 + 7, 4, 0, // tri1 + 0, 2, 7, // tri2 + 5, 8, 3 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_rcs_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcs_1_v[265], 5, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rcs_1_v[270], 15, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 3, 5, // tri0 + 0, 7, 6, // tri1 + 2, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 10, // tri0 + 2, 1, 11, // tri1 + 4, 2, 12, // tri2 + 1, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 15, 16, 17, // tri0 + 17, 16, 18, // tri1 + 16, 15, 19 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_rcs_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcs_1_v[285], 9, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 1 // tri2 +), +gsSPNTriangles_5b( + 4, 3, 7, // tri0 + 2, 4, 7, // tri1 + 7, 0, 2, // tri2 + 5, 8, 3 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx base_rcs_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 48, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rcs_1_v[323], 24, 0), +gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 9, 10, 7, // tri0 + 2, 11, 0, // tri1 + 6, 8, 12, // tri2 + 12, 13, 6 // tri3 +), +gsSPNTriangles_5b( + 2, 8, 11, // tri0 + 11, 3, 0, // tri1 + 8, 2, 12, // tri2 + 0, 3, 5 // tri3 +), +gsSPNTriangles_5b( + 9, 7, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 8, // tri count + 14, 15, 16, // tri0 + 17, 18, 16, // tri1 + 16, 15, 17 // tri2 +), +gsSPNTriangles_5b( + 16, 19, 14, // tri0 + 18, 17, 20, // tri1 + 19, 21, 22, // tri2 + 20, 23, 18 // tri3 +), +gsSPNTriangles_5b( + 22, 14, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&rcs_1_v[347], 21, 0), +gsSPNTrianglesInit_5b( + 29, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 0, 4, 1 // tri2 +), +gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 3, 9, // tri1 + 7, 10, 4, // tri2 + 11, 12, 13 // tri3 +), +gsSPNTriangles_5b( + 4, 5, 7, // tri0 + 11, 13, 2, // tri1 + 2, 13, 9, // tri2 + 2, 14, 11 // tri3 +), +gsSPNTriangles_5b( + 15, 14, 2, // tri0 + 10, 15, 1, // tri1 + 10, 1, 4, // tri2 + 5, 4, 3 // tri3 +), +gsSPNTriangles_5b( + 8, 9, 13, // tri0 + 5, 3, 8, // tri1 + 0, 2, 9, // tri2 + 2, 1, 15 // tri3 +), +gsSPNTriangles_5b( + 16, 17, 15, // tri0 + 16, 18, 17, // tri1 + 16, 15, 10, // tri2 + 18, 16, 19 // tri3 +), +gsSPNTriangles_5b( + 14, 20, 11, // tri0 + 17, 20, 14, // tri1 + 17, 18, 20, // tri2 + 15, 17, 14 // tri3 +), +gsSPNTriangles_5b( + 19, 10, 7, // tri0 + 19, 16, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_rcs_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_rcs_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_rcs_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_rcs_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_rcs_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_rcs_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,-700 }, + /* joint 11 */ { tail1_rcs_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_rcs_model, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_rcs_model, 3, cKF_JOINT_FLAG_DISP_OPA, 425,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 650,-500,0 }, + /* joint 15 */ { Larm1_rcs_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_rcs_model, 0, cKF_JOINT_FLAG_DISP_OPA, 558,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 650,500,0 }, + /* joint 18 */ { Rarm1_rcs_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_rcs_model, 1, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 875,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 800,0,1785 }, + /* joint 23 */ { mouth_rcs_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_rcs_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1050,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_rcs_1 = { 26, 14, cKF_je_r_rcs_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/rhn_1.c b/src/data/npc/model/mdl/rhn_1.c new file mode 100644 index 00000000..f4942b35 --- /dev/null +++ b/src/data/npc/model/mdl/rhn_1.c @@ -0,0 +1,896 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx rhn_1_v[] = { +#include "assets/npc/mdl/rhn_1_v.inc" +}; + +static Gfx head_rhn_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rhn_1_v[21], 8, 0), +gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 252, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rhn_1_v[29], 19, 8), +gsSPNTrianglesInit_5b( + 13, // tri count + 0, 8, 6, // tri0 + 5, 9, 4, // tri1 + 3, 10, 5 // tri2 +), +gsSPNTriangles_5b( + 0, 11, 12, // tri0 + 4, 13, 14, // tri1 + 2, 15, 16, // tri2 + 3, 17, 18 // tri3 +), +gsSPNTriangles_5b( + 5, 19, 20, // tri0 + 0, 4, 21, // tri1 + 3, 1, 22, // tri2 + 7, 23, 2 // tri3 +), +gsSPNTriangles_5b( + 6, 24, 25, // tri0 + 6, 26, 7, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&rhn_1_v[48], 27, 0), +gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 0, 0, 0 // tri2 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 5, 6, 7, // tri0 + 8, 9, 5, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 15, // tri count + 10, 11, 12, // tri0 + 13, 14, 15, // tri1 + 16, 17, 14 // tri2 +), +gsSPNTriangles_5b( + 18, 19, 20, // tri0 + 11, 21, 14, // tri1 + 19, 13, 22, // tri2 + 23, 22, 13 // tri3 +), +gsSPNTriangles_5b( + 24, 17, 16, // tri0 + 14, 21, 25, // tri1 + 15, 26, 13, // tri2 + 13, 26, 23 // tri3 +), +gsSPNTriangles_5b( + 25, 15, 14, // tri0 + 14, 13, 16, // tri1 + 14, 12, 11, // tri2 + 22, 20, 19 // tri3 +), +gsSPVertex(&rhn_1_v[75], 17, 0), +gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 1, 9, // tri0 + 10, 11, 12, // tri1 + 9, 8, 2, // tri2 + 2, 13, 0 // tri3 +), +gsSPNTriangles_5b( + 8, 9, 6, // tri0 + 8, 4, 3, // tri1 + 11, 10, 8, // tri2 + 3, 2, 8 // tri3 +), +gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 8, 7, 11, // tri1 + 13, 2, 15, // tri2 + 15, 14, 13 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_MIRROR, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 124), +gsSPVertex(&rhn_1_v[92], 29, 0), +gsSPNTrianglesInit_5b( + 39, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 4, 3, 0, // tri0 + 4, 0, 7, // tri1 + 4, 8, 5, // tri2 + 4, 9, 8 // tri3 +), +gsSPNTriangles_5b( + 10, 11, 12, // tri0 + 13, 14, 12, // tri1 + 15, 10, 6, // tri2 + 8, 13, 16 // tri3 +), +gsSPNTriangles_5b( + 6, 9, 7, // tri0 + 17, 18, 6, // tri1 + 10, 17, 6, // tri2 + 18, 17, 19 // tri3 +), +gsSPNTriangles_5b( + 10, 14, 19, // tri0 + 20, 21, 22, // tri1 + 12, 14, 10, // tri2 + 18, 9, 6 // tri3 +), +gsSPNTriangles_5b( + 2, 7, 0, // tri0 + 22, 12, 11, // tri1 + 19, 17, 10, // tri2 + 6, 2, 15 // tri3 +), +gsSPNTriangles_5b( + 8, 18, 23, // tri0 + 8, 23, 13, // tri1 + 24, 25, 26, // tri2 + 19, 23, 18 // tri3 +), +gsSPNTriangles_5b( + 19, 14, 13, // tri0 + 25, 24, 22, // tri1 + 12, 24, 13, // tri2 + 8, 9, 18 // tri3 +), +gsSPNTriangles_5b( + 7, 9, 4, // tri0 + 24, 12, 22, // tri1 + 5, 27, 3, // tri2 + 13, 23, 19 // tri3 +), +gsSPNTriangles_5b( + 16, 5, 8, // tri0 + 22, 11, 20, // tri1 + 22, 21, 25, // tri2 + 28, 20, 11 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&rhn_1_v[121], 25, 0), +gsSPNTrianglesInit_5b( + 27, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 5, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 11, 0, 2, // tri1 + 12, 5, 7, // tri2 + 13, 14, 15 // tri3 +), +gsSPNTriangles_5b( + 16, 7, 14, // tri0 + 13, 16, 14, // tri1 + 2, 15, 11, // tri2 + 17, 18, 4 // tri3 +), +gsSPNTriangles_5b( + 3, 0, 19, // tri0 + 20, 3, 21, // tri1 + 4, 18, 0, // tri2 + 7, 16, 12 // tri3 +), +gsSPNTriangles_5b( + 4, 22, 23, // tri0 + 7, 8, 14, // tri1 + 14, 11, 15, // tri2 + 0, 18, 1 // tri3 +), +gsSPNTriangles_5b( + 9, 8, 24, // tri0 + 4, 23, 17, // tri1 + 8, 7, 24, // tri2 + 24, 7, 6 // tri3 +), +gsSPNTriangles_5b( + 22, 4, 20, // tri0 + 20, 4, 3, // tri1 + 19, 21, 3, // tri2 + 10, 14, 8 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&rhn_1_v[146], 16, 0), +gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 5, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 7, 0, 5, // tri0 + 6, 5, 8, // tri1 + 4, 9, 2, // tri2 + 8, 10, 6 // tri3 +), +gsSPNTriangles_5b( + 2, 1, 3, // tri0 + 4, 11, 8, // tri1 + 1, 0, 12, // tri2 + 11, 10, 8 // tri3 +), +gsSPNTriangles_5b( + 8, 9, 4, // tri0 + 13, 6, 10, // tri1 + 14, 3, 1, // tri2 + 10, 11, 15 // tri3 +), +gsSPNTriangles_5b( + 2, 5, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&rhn_1_v[162], 27, 0), +gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 5 // tri2 +), +gsSPNTriangles_5b( + 2, 7, 0, // tri0 + 8, 9, 10, // tri1 + 3, 6, 10, // tri2 + 1, 0, 3 // tri3 +), +gsSPNTriangles_5b( + 11, 12, 8, // tri0 + 13, 14, 2, // tri1 + 8, 13, 1, // tri2 + 1, 9, 8 // tri3 +), +gsSPNTriangles_5b( + 8, 15, 11, // tri0 + 3, 9, 1, // tri1 + 3, 0, 7, // tri2 + 10, 9, 3 // tri3 +), +gsSPNTriangles_5b( + 16, 5, 4, // tri0 + 10, 15, 8, // tri1 + 12, 11, 17, // tri2 + 14, 13, 8 // tri3 +), +gsSPNTriangles_5b( + 2, 1, 13, // tri0 + 7, 4, 3, // tri1 + 8, 12, 14, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), +gsDPSetTileSize(0, 0, 0, 60, 60), +gsSPNTrianglesInit_5b( + 3, // tri count + 18, 19, 20, // tri0 + 21, 18, 20, // tri1 + 21, 20, 22 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), +gsDPSetTileSize(0, 0, 0, 60, 60), +gsSPNTrianglesInit_5b( + 2, // tri count + 23, 24, 25, // tri0 + 26, 23, 25, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&rhn_1_v[189], 14, 0), +gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 0, 2, 4 // tri2 +), +gsSPNTriangles_5b( + 3, 4, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), +gsDPSetTileSize(0, 0, 0, 60, 60), +gsSPNTrianglesInit_5b( + 2, // tri count + 5, 6, 7, // tri0 + 5, 7, 8, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 4, // tri count + 9, 10, 11, // tri0 + 10, 9, 12, // tri1 + 13, 9, 11 // tri2 +), +gsSPNTriangles_5b( + 9, 13, 12, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx mouth_rhn_model[] = { +gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rhn_1_v[0], 5, 0), +gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rhn_1_v[5], 16, 5), +gsSPNTrianglesInit_5b( + 4, // tri count + 0, 5, 6, // tri0 + 2, 7, 8, // tri1 + 0, 4, 9 // tri2 +), +gsSPNTriangles_5b( + 4, 2, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), +gsDPSetTileSize(0, 0, 0, 60, 60), +gsSPNTrianglesInit_5b( + 2, // tri count + 3, 1, 11, // tri0 + 1, 13, 12, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 2, // tri count + 14, 15, 16, // tri0 + 16, 15, 17, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), +gsDPSetTileSize(0, 0, 0, 60, 60), +gsSPNTrianglesInit_5b( + 1, // tri count + 18, 19, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_rhn_model[] = { +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rhn_1_v[237], 5, 0), +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 60), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rhn_1_v[242], 18, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 3, 5, 6, // tri0 + 3, 0, 7, // tri1 + 3, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 0, 1, 10, // tri0 + 2, 12, 11, // tri1 + 3, 13, 4, // tri2 + 2, 4, 14 // tri3 +), +gsSPNTriangles_5b( + 1, 16, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 20, 21, 22, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_rhn_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rhn_1_v[260], 4, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 60), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rhn_1_v[264], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 4, 5, // tri0 + 0, 1, 6, // tri1 + 3, 0, 7 // tri2 +), +gsSPNTriangles_5b( + 3, 8, 9, // tri0 + 1, 10, 11, // tri1 + 2, 3, 12, // tri2 + 3, 13, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_rhn_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rhn_1_v[203], 4, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 60), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rhn_1_v[207], 16, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 3, 4, // tri0 + 0, 2, 5, // tri1 + 0, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 3, 1, 8, // tri0 + 1, 0, 9, // tri1 + 0, 10, 11, // tri2 + 3, 12, 13 // tri3 +), +gsSPNTriangles_5b( + 3, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_rhn_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rhn_1_v[223], 3, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 60), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rhn_1_v[226], 11, 3), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 3, // tri0 + 0, 5, 4, // tri1 + 2, 7, 6 // tri2 +), +gsSPNTriangles_5b( + 2, 0, 8, // tri0 + 1, 2, 9, // tri1 + 1, 10, 11, // tri2 + 1, 12, 13 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_rhn_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rhn_1_v[275], 7, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 252, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rhn_1_v[282], 24, 7), +gsSPNTrianglesInit_5b( + 14, // tri count + 6, 5, 7, // tri0 + 6, 9, 8, // tri1 + 0, 10, 11 // tri2 +), +gsSPNTriangles_5b( + 0, 12, 13, // tri0 + 3, 14, 15, // tri1 + 5, 2, 16, // tri2 + 5, 17, 18 // tri3 +), +gsSPNTriangles_5b( + 4, 19, 1, // tri0 + 4, 20, 21, // tri1 + 1, 22, 23, // tri2 + 2, 24, 25 // tri3 +), +gsSPNTriangles_5b( + 3, 6, 26, // tri0 + 5, 27, 28, // tri1 + 2, 0, 29, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 0, 1, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx tail1_rhn_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rhn_1_v[328], 8, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 4, 7, 1, // tri0 + 6, 7, 4, // tri1 + 1, 0, 4, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail2_rhn_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rhn_1_v[306], 4, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rhn_1_v[310], 18, 4), +gsSPNTrianglesInit_5b( + 6, // tri count + 1, 4, 5, // tri0 + 1, 0, 6, // tri1 + 3, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 9, 10, // tri0 + 3, 2, 11, // tri1 + 0, 3, 12, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 9, // tri count + 13, 14, 15, // tri0 + 16, 17, 18, // tri1 + 14, 17, 15 // tri2 +), +gsSPNTriangles_5b( + 19, 20, 14, // tri0 + 18, 21, 16, // tri1 + 19, 13, 17, // tri2 + 17, 13, 15 // tri3 +), +gsSPNTriangles_5b( + 14, 13, 19, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_rhn_model[] = { +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rhn_1_v[388], 4, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 60), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rhn_1_v[392], 17, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 4, 5, // tri0 + 2, 1, 6, // tri1 + 1, 0, 7 // tri2 +), +gsSPNTriangles_5b( + 0, 8, 9, // tri0 + 0, 3, 10, // tri1 + 3, 2, 11, // tri2 + 0, 13, 12 // tri3 +), +gsSPNTriangles_5b( + 2, 15, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 4, // tri count + 16, 17, 18, // tri0 + 18, 19, 16, // tri1 + 17, 16, 20 // tri2 +), +gsSPNTriangles_5b( + 20, 18, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_rhn_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rhn_1_v[409], 5, 0), +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 252, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rhn_1_v[414], 20, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 2, 6, 5, // tri0 + 3, 2, 7, // tri1 + 0, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 10, // tri0 + 0, 4, 11, // tri1 + 1, 12, 2, // tri2 + 1, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 60), +gsSPNTrianglesInit_5b( + 7, // tri count + 18, 19, 20, // tri0 + 21, 20, 22, // tri1 + 18, 23, 24 // tri2 +), +gsSPNTriangles_5b( + 22, 23, 21, // tri0 + 22, 24, 23, // tri1 + 24, 19, 18, // tri2 + 20, 21, 18 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_rhn_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rhn_1_v[336], 5, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 60), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rhn_1_v[341], 19, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 3, 2, 5, // tri0 + 2, 1, 6, // tri1 + 2, 8, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 9, // tri0 + 2, 10, 11, // tri1 + 0, 12, 13, // tri2 + 0, 4, 14 // tri3 +), +gsSPNTriangles_5b( + 0, 16, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 4, // tri count + 17, 18, 19, // tri0 + 20, 21, 18, // tri1 + 18, 22, 20 // tri2 +), +gsSPNTriangles_5b( + 20, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_rhn_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rhn_1_v[360], 6, 0), +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 252, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&rhn_1_v[366], 22, 6), +gsSPNTrianglesInit_5b( + 7, // tri count + 1, 7, 6, // tri0 + 0, 3, 8, // tri1 + 3, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 3, 4, 11, // tri0 + 5, 2, 12, // tri1 + 0, 13, 1, // tri2 + 0, 14, 15 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 16, 17, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 60), +gsSPNTrianglesInit_5b( + 7, // tri count + 19, 20, 21, // tri0 + 22, 23, 24, // tri1 + 19, 21, 25 // tri2 +), +gsSPNTriangles_5b( + 24, 26, 22, // tri0 + 27, 19, 25, // tri1 + 25, 23, 27, // tri2 + 23, 22, 27 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx base_rhn_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 252, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&rhn_1_v[434], 14, 0), +gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 5, 0, 2, // tri0 + 8, 9, 1, // tri1 + 4, 0, 5, // tri2 + 10, 1, 9 // tri3 +), +gsSPNTriangles_5b( + 11, 9, 12, // tri0 + 0, 8, 1, // tri1 + 11, 10, 9, // tri2 + 7, 13, 3 // tri3 +), +gsSPNTriangles_5b( + 5, 6, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_rhn_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_rhn_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-450,0 }, + /* joint 3 */ { Lfoot1_rhn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_rhn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,450,0 }, + /* joint 7 */ { Rfoot1_rhn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_rhn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 75,0,-725 }, + /* joint 11 */ { tail1_rhn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_rhn_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 13 */ { chest_rhn_model, 3, cKF_JOINT_FLAG_DISP_OPA, 329,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 625,-850,100 }, + /* joint 15 */ { Larm1_rhn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_rhn_model, 0, cKF_JOINT_FLAG_DISP_OPA, 450,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 625,850,100 }, + /* joint 18 */ { Rarm1_rhn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_rhn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 450,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 450,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 883,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 450,0,600 }, + /* joint 23 */ { mouth_rhn_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_rhn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1200,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_rhn_1 = { 26, 14, cKF_je_r_rhn_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/seg_1.c b/src/data/npc/model/mdl/seg_1.c new file mode 100644 index 00000000..a1ec0bb6 --- /dev/null +++ b/src/data/npc/model/mdl/seg_1.c @@ -0,0 +1,850 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx seg_1_v[] = { +#include "assets/npc/mdl/seg_1_v.inc" +}; + +static Gfx head_seg_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 24, 15, GX_MIRROR, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 92), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&seg_1_v[21], 30, 0), +gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 3, 5, 4 // tri2 +), +gsSPNTriangles_5b( + 4, 6, 0, // tri0 + 7, 3, 0, // tri1 + 7, 0, 2, // tri2 + 0, 6, 1 // tri3 +), +gsSPNTriangles_5b( + 5, 8, 4, // tri0 + 4, 9, 6, // tri1 + 7, 10, 3, // tri2 + 10, 5, 3 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 3, // tri count + 11, 12, 13, // tri0 + 11, 13, 14, // tri1 + 14, 15, 11 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 17, // tri count + 16, 17, 18, // tri0 + 16, 19, 20, // tri1 + 17, 21, 22 // tri2 +), +gsSPNTriangles_5b( + 23, 20, 24, // tri0 + 23, 25, 26, // tri1 + 27, 23, 28, // tri2 + 24, 25, 23 // tri3 +), +gsSPNTriangles_5b( + 20, 23, 16, // tri0 + 18, 19, 16, // tri1 + 22, 18, 17, // tri2 + 24, 22, 21 // tri3 +), +gsSPNTriangles_5b( + 24, 21, 25, // tri0 + 21, 17, 26, // tri1 + 26, 25, 21, // tri2 + 26, 17, 29 // tri3 +), +gsSPNTriangles_5b( + 17, 16, 27, // tri0 + 27, 16, 23, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&seg_1_v[51], 27, 0), +gsSPNTrianglesInit_5b( + 39, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 2, 4 // tri2 +), +gsSPNTriangles_5b( + 5, 1, 0, // tri0 + 6, 7, 1, // tri1 + 8, 4, 9, // tri2 + 10, 11, 12 // tri3 +), +gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 16, 7, 6, // tri1 + 17, 18, 19, // tri2 + 5, 17, 6 // tri3 +), +gsSPNTriangles_5b( + 9, 4, 2, // tri0 + 15, 14, 8, // tri1 + 4, 20, 21, // tri2 + 4, 21, 5 // tri3 +), +gsSPNTriangles_5b( + 4, 8, 20, // tri0 + 9, 22, 23, // tri1 + 1, 5, 6, // tri2 + 7, 16, 24 // tri3 +), +gsSPNTriangles_5b( + 24, 23, 22, // tri0 + 19, 18, 25, // tri1 + 10, 24, 16, // tri2 + 23, 24, 10 // tri3 +), +gsSPNTriangles_5b( + 9, 23, 15, // tri0 + 3, 26, 0, // tri1 + 21, 17, 5, // tri2 + 23, 10, 12 // tri3 +), +gsSPNTriangles_5b( + 11, 10, 16, // tri0 + 19, 16, 6, // tri1 + 11, 16, 19, // tri2 + 25, 11, 19 // tri3 +), +gsSPNTriangles_5b( + 12, 13, 15, // tri0 + 15, 23, 12, // tri1 + 19, 6, 17, // tri2 + 8, 9, 15 // tri3 +), +gsSPNTriangles_5b( + 2, 22, 9, // tri0 + 5, 0, 26, // tri1 + 26, 3, 4, // tri2 + 4, 5, 26 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000180, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&seg_1_v[78], 24, 0), +gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 5, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 3, 2, 8, // tri0 + 5, 7, 9, // tri1 + 4, 0, 2, // tri2 + 8, 10, 11 // tri3 +), +gsSPNTriangles_5b( + 12, 5, 9, // tri0 + 12, 1, 0, // tri1 + 13, 10, 8, // tri2 + 7, 6, 14 // tri3 +), +gsSPNTriangles_5b( + 13, 7, 10, // tri0 + 10, 14, 11, // tri1 + 2, 1, 13, // tri2 + 13, 1, 9 // tri3 +), +gsSPNTriangles_5b( + 9, 7, 13, // tri0 + 14, 10, 7, // tri1 + 15, 3, 8, // tri2 + 9, 1, 12 // tri3 +), +gsSPNTriangles_5b( + 8, 11, 15, // tri0 + 2, 13, 8, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 2, // tri count + 16, 17, 18, // tri0 + 18, 19, 16, // tri1 + 0, 0, 0 // tri2 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 20, 21, 22, // tri0 + 22, 23, 20, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx mouth_seg_model[] = { +gsSPMatrix(0x0D0003C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&seg_1_v[0], 5, 0), +gsSPMatrix(0x0D000380, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&seg_1_v[5], 16, 5), +gsSPNTrianglesInit_5b( + 6, // tri count + 2, 4, 5, // tri0 + 3, 7, 6, // tri1 + 2, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 4, 3, 10, // tri0 + 1, 0, 11, // tri1 + 0, 13, 12, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 14, 15, 16, // tri0 + 17, 18, 19, // tri1 + 19, 18, 20 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_seg_model[] = { +gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&seg_1_v[145], 4, 0), +gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&seg_1_v[149], 26, 4), +gsSPNTrianglesInit_5b( + 6, // tri count + 1, 3, 4, // tri0 + 0, 5, 6, // tri1 + 2, 0, 7 // tri2 +), +gsSPNTriangles_5b( + 0, 8, 9, // tri0 + 1, 10, 11, // tri1 + 0, 1, 12, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 2, 13, 14, // tri0 + 3, 2, 15, // tri1 + 2, 16, 17 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 18, 19, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 2, // tri count + 21, 22, 23, // tri0 + 24, 22, 21, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 3, // tri count + 25, 26, 27, // tri0 + 27, 28, 25, // tri1 + 25, 29, 26 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&seg_1_v[175], 3, 0), +gsSPNTrianglesInit_5b( + 1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_seg_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&seg_1_v[178], 10, 0), +gsSPNTrianglesInit_5b( + 1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 6, // tri count + 3, 4, 5, // tri0 + 5, 6, 7, // tri1 + 8, 9, 4 // tri2 +), +gsSPNTriangles_5b( + 7, 6, 9, // tri0 + 4, 3, 8, // tri1 + 7, 3, 5, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_seg_model[] = { +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&seg_1_v[102], 4, 0), +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&seg_1_v[106], 26, 4), +gsSPNTrianglesInit_5b( + 6, // tri count + 3, 1, 4, // tri0 + 0, 5, 6, // tri1 + 0, 2, 7 // tri2 +), +gsSPNTriangles_5b( + 0, 8, 9, // tri0 + 1, 10, 11, // tri1 + 1, 0, 12, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 2, 13, 14, // tri0 + 2, 3, 15, // tri1 + 2, 16, 17 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 18, 19, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 2, // tri count + 21, 22, 23, // tri0 + 23, 22, 24, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 3, // tri count + 25, 26, 27, // tri0 + 27, 28, 25, // tri1 + 26, 29, 27 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&seg_1_v[132], 3, 0), +gsSPNTrianglesInit_5b( + 1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_seg_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&seg_1_v[135], 10, 0), +gsSPNTrianglesInit_5b( + 1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 6, // tri count + 3, 4, 5, // tri0 + 6, 7, 3, // tri1 + 4, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 8, 7, 6, // tri0 + 9, 5, 4, // tri1 + 3, 5, 6, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_seg_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&seg_1_v[188], 9, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&seg_1_v[197], 20, 9), +gsSPNTrianglesInit_5b( + 2, // tri count + 2, 9, 3, // tri0 + 5, 4, 10, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 4, // tri count + 8, 11, 12, // tri0 + 8, 5, 13, // tri1 + 4, 3, 14 // tri2 +), +gsSPNTriangles_5b( + 3, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 8, // tri count + 8, 17, 18, // tri0 + 6, 8, 19, // tri1 + 2, 1, 20 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 21, // tri0 + 1, 23, 22, // tri1 + 0, 24, 25, // tri2 + 0, 7, 26 // tri3 +), +gsSPNTriangles_5b( + 4, 28, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&seg_1_v[217], 25, 0), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 5, 7 // tri2 +), +gsSPNTriangles_5b( + 8, 4, 3, // tri0 + 9, 2, 1, // tri1 + 10, 11, 12, // tri2 + 13, 14, 3 // tri3 +), +gsSPNTriangles_5b( + 2, 14, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 4, // tri count + 15, 16, 17, // tri0 + 18, 16, 19, // tri1 + 20, 21, 22 // tri2 +), +gsSPNTriangles_5b( + 23, 24, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&seg_1_v[242], 15, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 0, 4, 5 // tri2 +), +gsSPNTriangles_5b( + 0, 5, 1, // tri0 + 6, 1, 5, // tri1 + 7, 8, 9, // tri2 + 10, 11, 12 // tri3 +), +gsSPNTriangles_5b( + 13, 14, 12, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail1_seg_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&seg_1_v[270], 3, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&seg_1_v[273], 6, 3), +gsSPNTrianglesInit_5b( + 4, // tri count + 1, 0, 3, // tri0 + 0, 2, 4, // tri1 + 1, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 2, 7, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail2_seg_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&seg_1_v[257], 3, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&seg_1_v[260], 10, 3), +gsSPNTrianglesInit_5b( + 4, // tri count + 1, 2, 3, // tri0 + 0, 4, 5, // tri1 + 2, 0, 6 // tri2 +), +gsSPNTriangles_5b( + 1, 7, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 9, 10, 11, // tri0 + 11, 12, 9, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot3_seg_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&seg_1_v[326], 3, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&seg_1_v[329], 18, 3), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 3, 4, // tri0 + 1, 0, 5, // tri1 + 0, 2, 6 // tri2 +), +gsSPNTriangles_5b( + 2, 1, 7, // tri0 + 2, 8, 9, // tri1 + 0, 10, 11, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 5, // tri count + 12, 13, 14, // tri0 + 12, 14, 15, // tri1 + 16, 17, 18 // tri2 +), +gsSPNTriangles_5b( + 18, 19, 16, // tri0 + 16, 20, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_seg_model[] = { +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&seg_1_v[347], 4, 0), +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&seg_1_v[351], 14, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 2, 6, 7, // tri1 + 3, 0, 8 // tri2 +), +gsSPNTriangles_5b( + 1, 2, 9, // tri0 + 2, 10, 11, // tri1 + 2, 3, 12, // tri2 + 3, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_seg_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&seg_1_v[365], 8, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 2, 4 // tri2 +), +gsSPNTriangles_5b( + 5, 0, 6, // tri0 + 4, 7, 3, // tri1 + 0, 5, 1, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot3_seg_model[] = { +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&seg_1_v[279], 3, 0), +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&seg_1_v[282], 18, 3), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 3, 4, // tri0 + 0, 1, 5, // tri1 + 2, 0, 6 // tri2 +), +gsSPNTriangles_5b( + 1, 7, 8, // tri0 + 1, 2, 9, // tri1 + 0, 10, 11, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 5, // tri count + 12, 13, 14, // tri0 + 12, 14, 15, // tri1 + 16, 17, 18 // tri2 +), +gsSPNTriangles_5b( + 18, 19, 16, // tri0 + 17, 20, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_seg_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&seg_1_v[300], 4, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&seg_1_v[304], 14, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 2, 6, 7, // tri1 + 0, 3, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 1, 9, // tri0 + 2, 10, 11, // tri1 + 3, 2, 12, // tri2 + 3, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_seg_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&seg_1_v[318], 8, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 1, 0 // tri2 +), +gsSPNTriangles_5b( + 5, 3, 6, // tri0 + 0, 7, 4, // tri1 + 2, 6, 3, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx base_seg_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000180, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&seg_1_v[373], 17, 0), +gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 0, 2 // tri2 +), +gsSPNTriangles_5b( + 3, 1, 5, // tri0 + 6, 7, 8, // tri1 + 4, 7, 6, // tri2 + 9, 10, 11 // tri3 +), +gsSPNTriangles_5b( + 9, 11, 12, // tri0 + 10, 8, 11, // tri1 + 13, 9, 12, // tri2 + 10, 14, 6 // tri3 +), +gsSPNTriangles_5b( + 8, 10, 6, // tri0 + 1, 0, 15, // tri1 + 15, 9, 13, // tri2 + 15, 0, 14 // tri3 +), +gsSPNTriangles_5b( + 9, 15, 14, // tri0 + 0, 6, 14, // tri1 + 9, 14, 10, // tri2 + 15, 13, 5 // tri3 +), +gsSPNTriangles_5b( + 5, 1, 15, // tri0 + 6, 0, 4, // tri1 + 12, 16, 13, // tri2 + 5, 16, 3 // tri3 +), +gsSPNTriangles_5b( + 16, 5, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_seg_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_seg_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_seg_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_seg_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { Lfoot3_seg_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_seg_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_seg_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { Rfoot3_seg_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,-650 }, + /* joint 11 */ { tail1_seg_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_seg_model, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_seg_model, 3, cKF_JOINT_FLAG_DISP_OPA, 325,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 1150,-500,0 }, + /* joint 15 */ { Larm1_seg_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_seg_model, 0, cKF_JOINT_FLAG_DISP_OPA, 1000,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 1150,500,0 }, + /* joint 18 */ { Rarm1_seg_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_seg_model, 1, cKF_JOINT_FLAG_DISP_OPA, 998,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1000,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 1274,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 800,0,1350 }, + /* joint 23 */ { mouth_seg_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_seg_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1601,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_seg_1 = { 26, 16, cKF_je_r_seg_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/shp_1.c b/src/data/npc/model/mdl/shp_1.c new file mode 100644 index 00000000..e6093a77 --- /dev/null +++ b/src/data/npc/model/mdl/shp_1.c @@ -0,0 +1,609 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx shp_1_v[] = { +#include "assets/npc/mdl/shp_1_v.inc" +}; + +static Gfx head_shp_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&shp_1_v[0], 5, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), +gsDPSetTileSize(0, 0, 0, 252, 252), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&shp_1_v[5], 24, 5), +gsSPNTrianglesInit_5b( + 5, // tri count + 2, 1, 5, // tri0 + 4, 3, 6, // tri1 + 0, 4, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 8, // tri0 + 3, 2, 9, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 14, // tri count + 10, 11, 12, // tri0 + 12, 13, 14, // tri1 + 12, 11, 15 // tri2 +), +gsSPNTriangles_5b( + 15, 13, 12, // tri0 + 16, 17, 18, // tri1 + 18, 19, 16, // tri2 + 18, 20, 21 // tri3 +), +gsSPNTriangles_5b( + 21, 19, 18, // tri0 + 17, 20, 18, // tri1 + 22, 23, 24, // tri2 + 24, 25, 26 // tri3 +), +gsSPNTriangles_5b( + 26, 27, 24, // tri0 + 24, 27, 28, // tri1 + 24, 28, 22, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&shp_1_v[29], 32, 0), +gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 9, 8, 10, // tri0 + 10, 11, 12, // tri1 + 10, 12, 9, // tri2 + 13, 4, 14 // tri3 +), +gsSPNTriangles_5b( + 15, 7, 6, // tri0 + 8, 9, 6, // tri1 + 16, 13, 17, // tri2 + 18, 2, 16 // tri3 +), +gsSPNTriangles_5b( + 19, 20, 21, // tri0 + 22, 21, 23, // tri1 + 24, 5, 25, // tri2 + 26, 27, 20 // tri3 +), +gsSPNTriangles_5b( + 12, 11, 28, // tri0 + 24, 25, 29, // tri1 + 29, 30, 24, // tri2 + 6, 31, 15 // tri3 +), +gsSPVertex(&shp_1_v[61], 32, 0), +gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 12, 13, 14, // tri1 + 15, 16, 17, // tri2 + 18, 19, 20 // tri3 +), +gsSPNTriangles_5b( + 21, 22, 23, // tri0 + 24, 25, 26, // tri1 + 27, 28, 29, // tri2 + 30, 31, 14 // tri3 +), +gsSPVertex(&shp_1_v[93], 27, 0), +gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 2, 3, 0 // tri2 +), +gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 2, 1, // tri2 + 11, 7, 12 // tri3 +), +gsSPNTriangles_5b( + 12, 13, 14, // tri0 + 15, 16, 17, // tri1 + 18, 15, 19, // tri2 + 20, 21, 22 // tri3 +), +gsSPNTriangles_5b( + 16, 23, 24, // tri0 + 25, 4, 3, // tri1 + 26, 20, 22, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&shp_1_v[120], 24, 0), +gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 7, 8, 5, // tri0 + 7, 5, 9, // tri1 + 1, 0, 9, // tri2 + 9, 5, 4 // tri3 +), +gsSPNTriangles_5b( + 4, 1, 9, // tri0 + 9, 0, 7, // tri1 + 2, 6, 0, // tri2 + 5, 8, 3 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 8, // tri count + 10, 11, 12, // tri0 + 13, 14, 15, // tri1 + 15, 14, 16 // tri2 +), +gsSPNTriangles_5b( + 16, 11, 10, // tri0 + 10, 15, 16, // tri1 + 10, 12, 17, // tri2 + 17, 13, 15 // tri3 +), +gsSPNTriangles_5b( + 17, 15, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 5, // tri count + 18, 19, 20, // tri0 + 21, 22, 20, // tri1 + 23, 21, 20 // tri2 +), +gsSPNTriangles_5b( + 22, 18, 20, // tri0 + 20, 19, 23, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_shp_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&shp_1_v[175], 5, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&shp_1_v[180], 17, 5), +gsSPNTrianglesInit_5b( + 9, // tri count + 1, 2, 5, // tri0 + 3, 0, 6, // tri1 + 4, 7, 0 // tri2 +), +gsSPNTriangles_5b( + 0, 8, 9, // tri0 + 1, 10, 11, // tri1 + 1, 12, 4, // tri2 + 0, 13, 14 // tri3 +), +gsSPNTriangles_5b( + 1, 15, 16, // tri0 + 4, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_shp_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&shp_1_v[197], 9, 0), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 1 // tri2 +), +gsSPNTriangles_5b( + 1, 6, 7, // tri0 + 2, 8, 0, // tri1 + 0, 8, 3, // tri2 + 5, 0, 3 // tri3 +), +gsSPNTriangles_5b( + 7, 2, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_shp_model[] = { +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&shp_1_v[144], 5, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&shp_1_v[149], 17, 5), +gsSPNTrianglesInit_5b( + 9, // tri count + 2, 1, 5, // tri0 + 0, 3, 6, // tri1 + 0, 7, 4 // tri2 +), +gsSPNTriangles_5b( + 0, 8, 9, // tri0 + 1, 10, 11, // tri1 + 4, 12, 1, // tri2 + 0, 13, 14 // tri3 +), +gsSPNTriangles_5b( + 1, 15, 16, // tri0 + 4, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_shp_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&shp_1_v[166], 9, 0), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 6, 2 // tri2 +), +gsSPNTriangles_5b( + 7, 6, 1, // tri0 + 2, 8, 0, // tri1 + 5, 8, 2, // tri2 + 5, 2, 3 // tri3 +), +gsSPNTriangles_5b( + 1, 0, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_shp_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&shp_1_v[206], 26, 0), +gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 5, 4, 2, // tri0 + 2, 4, 0, // tri1 + 7, 8, 6, // tri2 + 6, 8, 3 // tri3 +), +gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 12, 1, 0, // tri1 + 11, 10, 7, // tri2 + 0, 0, 0 // tri3 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 13, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 16, 17, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 3, // tri count + 19, 20, 21, // tri0 + 22, 23, 24, // tri1 + 22, 24, 25 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), +gsDPSetTileSize(0, 0, 0, 252, 252), +gsSPVertex(&shp_1_v[232], 14, 0), +gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 5, 2 // tri2 +), +gsSPNTriangles_5b( + 2, 5, 6, // tri0 + 2, 6, 0, // tri1 + 2, 3, 4, // tri2 + 7, 8, 9 // tri3 +), +gsSPNTriangles_5b( + 9, 8, 10, // tri0 + 11, 12, 9, // tri1 + 9, 12, 13, // tri2 + 9, 13, 7 // tri3 +), +gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_shp_model[] = { +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&shp_1_v[279], 5, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&shp_1_v[284], 17, 5), +gsSPNTrianglesInit_5b( + 9, // tri count + 1, 2, 5, // tri0 + 3, 0, 6, // tri1 + 4, 7, 0 // tri2 +), +gsSPNTriangles_5b( + 0, 8, 9, // tri0 + 1, 10, 11, // tri1 + 1, 12, 4, // tri2 + 0, 13, 14 // tri3 +), +gsSPNTriangles_5b( + 1, 15, 16, // tri0 + 4, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_shp_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&shp_1_v[301], 11, 0), +gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 1, 0, 3 // tri2 +), +gsSPNTriangles_5b( + 1, 5, 6, // tri0 + 2, 7, 0, // tri1 + 0, 7, 8, // tri2 + 9, 10, 3 // tri3 +), +gsSPNTriangles_5b( + 8, 3, 0, // tri0 + 6, 2, 1, // tri1 + 3, 8, 9, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_shp_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&shp_1_v[246], 5, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&shp_1_v[251], 17, 5), +gsSPNTrianglesInit_5b( + 9, // tri count + 2, 1, 5, // tri0 + 0, 3, 6, // tri1 + 0, 7, 4 // tri2 +), +gsSPNTriangles_5b( + 0, 8, 9, // tri0 + 1, 10, 11, // tri1 + 4, 12, 1, // tri2 + 0, 13, 14 // tri3 +), +gsSPNTriangles_5b( + 1, 15, 16, // tri0 + 4, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_shp_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&shp_1_v[268], 11, 0), +gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 4, 2, 1 // tri2 +), +gsSPNTriangles_5b( + 5, 6, 1, // tri0 + 2, 7, 0, // tri1 + 8, 7, 2, // tri2 + 4, 9, 10 // tri3 +), +gsSPNTriangles_5b( + 2, 4, 8, // tri0 + 1, 0, 5, // tri1 + 10, 8, 4, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx base_shp_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), +gsDPSetTileSize(0, 0, 0, 252, 252), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&shp_1_v[312], 14, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 5, 2 // tri2 +), +gsSPNTriangles_5b( + 2, 5, 6, // tri0 + 2, 6, 0, // tri1 + 2, 3, 4, // tri2 + 0, 0, 0 // tri3 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 6, // tri count + 7, 8, 9, // tri0 + 9, 8, 10, // tri1 + 11, 12, 9 // tri2 +), +gsSPNTriangles_5b( + 9, 12, 13, // tri0 + 9, 13, 7, // tri1 + 9, 10, 11, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_shp_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_shp_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-375,0 }, + /* joint 3 */ { Lfoot1_shp_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_shp_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,375,0 }, + /* joint 7 */ { Rfoot1_shp_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_shp_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 75,0,-300 }, + /* joint 11 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 100,0,0 }, + /* joint 13 */ { chest_shp_model, 3, cKF_JOINT_FLAG_DISP_OPA, 425,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 600,-1125,0 }, + /* joint 15 */ { Larm1_shp_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_shp_model, 0, cKF_JOINT_FLAG_DISP_OPA, 425,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 600,1125,0 }, + /* joint 18 */ { Rarm1_shp_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_shp_model, 1, cKF_JOINT_FLAG_DISP_OPA, 425,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 425,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 975,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 175,0,1200 }, + /* joint 23 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_shp_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 600,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_shp_1 = { 26, 11, cKF_je_r_shp_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/snt_1.c b/src/data/npc/model/mdl/snt_1.c new file mode 100644 index 00000000..a6279d0e --- /dev/null +++ b/src/data/npc/model/mdl/snt_1.c @@ -0,0 +1,708 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx snt_1_v[] = { +#include "assets/npc/mdl/snt_1_v.inc" +}; + +static Gfx head_snt_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&snt_1_v[0], 26, 0), +gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 +), +gsSPNTriangles_5b( + 1, 5, 2, // tri0 + 5, 6, 7, // tri1 + 6, 0, 3, // tri2 + 7, 2, 5 // tri3 +), +gsSPNTriangles_5b( + 3, 2, 7, // tri0 + 5, 4, 6, // tri1 + 7, 6, 3, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 19, // tri count + 8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 13, 14, 11 // tri2 +), +gsSPNTriangles_5b( + 8, 15, 9, // tri0 + 16, 12, 17, // tri1 + 17, 8, 16, // tri2 + 15, 8, 18 // tri3 +), +gsSPNTriangles_5b( + 19, 20, 18, // tri0 + 21, 11, 22, // tri1 + 23, 19, 8, // tri2 + 23, 8, 17 // tri3 +), +gsSPNTriangles_5b( + 10, 16, 8, // tri0 + 14, 24, 11, // tri1 + 12, 11, 17, // tri2 + 17, 11, 21 // tri3 +), +gsSPNTriangles_5b( + 17, 21, 23, // tri0 + 18, 8, 19, // tri1 + 22, 25, 21, // tri2 + 22, 11, 24 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&snt_1_v[26], 29, 0), +gsSPNTrianglesInit_5b( + 37, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 5, 9, 12, // tri1 + 5, 12, 13, // tri2 + 12, 9, 14 // tri3 +), +gsSPNTriangles_5b( + 13, 15, 16, // tri0 + 5, 16, 3, // tri1 + 11, 14, 9, // tri2 + 17, 2, 1 // tri3 +), +gsSPNTriangles_5b( + 4, 3, 18, // tri0 + 8, 7, 19, // tri1 + 18, 11, 10, // tri2 + 0, 20, 1 // tri3 +), +gsSPNTriangles_5b( + 21, 2, 17, // tri0 + 8, 11, 6, // tri1 + 1, 7, 6, // tri2 + 1, 6, 17 // tri3 +), +gsSPNTriangles_5b( + 11, 8, 22, // tri0 + 7, 1, 20, // tri1 + 9, 5, 4, // tri2 + 9, 4, 10 // tri3 +), +gsSPNTriangles_5b( + 23, 19, 20, // tri0 + 22, 14, 11, // tri1 + 17, 6, 18, // tri2 + 3, 21, 17 // tri3 +), +gsSPNTriangles_5b( + 18, 6, 11, // tri0 + 17, 18, 3, // tri1 + 20, 19, 7, // tri2 + 0, 24, 25 // tri3 +), +gsSPNTriangles_5b( + 14, 26, 12, // tri0 + 27, 26, 14, // tri1 + 16, 5, 13, // tri2 + 16, 15, 28 // tri3 +), +gsSPNTriangles_5b( + 18, 10, 4, // tri0 + 19, 22, 8, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 252, 255, 255), +gsSPVertex(&snt_1_v[55], 23, 0), +gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 2, 4 // tri2 +), +gsSPNTriangles_5b( + 2, 6, 0, // tri0 + 4, 3, 6, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPNTrianglesInit_5b( + 4, // tri count + 7, 8, 9, // tri0 + 9, 10, 7, // tri1 + 7, 10, 11 // tri2 +), +gsSPNTriangles_5b( + 11, 8, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 11, // tri count + 12, 13, 14, // tri0 + 15, 16, 17, // tri1 + 17, 16, 18 // tri2 +), +gsSPNTriangles_5b( + 18, 19, 17, // tri0 + 17, 19, 20, // tri1 + 12, 21, 22, // tri2 + 17, 12, 14 // tri3 +), +gsSPNTriangles_5b( + 17, 14, 15, // tri0 + 22, 13, 12, // tri1 + 20, 21, 12, // tri2 + 12, 17, 20 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000180, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&snt_1_v[78], 16, 0), +gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 6, 2 // tri2 +), +gsSPNTriangles_5b( + 4, 7, 5, // tri0 + 5, 8, 3, // tri1 + 9, 10, 2, // tri2 + 11, 12, 3 // tri3 +), +gsSPNTriangles_5b( + 1, 13, 6, // tri0 + 3, 14, 11, // tri1 + 2, 15, 9, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&snt_1_v[94], 17, 0), +gsSPNTrianglesInit_5b( + 30, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 7, 8, 5, // tri0 + 7, 9, 10, // tri1 + 11, 8, 7, // tri2 + 11, 7, 12 // tri3 +), +gsSPNTriangles_5b( + 12, 13, 3, // tri0 + 4, 14, 15, // tri1 + 15, 14, 2, // tri2 + 14, 4, 2 // tri3 +), +gsSPNTriangles_5b( + 10, 13, 12, // tri0 + 10, 9, 13, // tri1 + 12, 7, 10, // tri2 + 4, 6, 0 // tri3 +), +gsSPNTriangles_5b( + 4, 0, 2, // tri0 + 5, 8, 11, // tri1 + 5, 11, 1, // tri2 + 0, 6, 5 // tri3 +), +gsSPNTriangles_5b( + 0, 5, 1, // tri0 + 11, 12, 1, // tri1 + 16, 9, 7, // tri2 + 3, 13, 9 // tri3 +), +gsSPNTriangles_5b( + 3, 9, 16, // tri0 + 16, 7, 5, // tri1 + 1, 12, 3, // tri2 + 4, 16, 5 // tri3 +), +gsSPNTriangles_5b( + 16, 4, 15, // tri0 + 3, 15, 2, // tri1 + 16, 15, 3, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&snt_1_v[111], 17, 0), +gsSPNTrianglesInit_5b( + 30, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 9, 10, 8, // tri1 + 11, 8, 7, // tri2 + 11, 7, 12 // tri3 +), +gsSPNTriangles_5b( + 3, 13, 11, // tri0 + 14, 15, 6, // tri1 + 0, 15, 14, // tri2 + 0, 6, 15 // tri3 +), +gsSPNTriangles_5b( + 11, 13, 9, // tri0 + 13, 10, 9, // tri1 + 9, 8, 11, // tri2 + 0, 2, 4 // tri3 +), +gsSPNTriangles_5b( + 0, 4, 6, // tri0 + 1, 12, 7, // tri1 + 1, 7, 5, // tri2 + 1, 5, 4 // tri3 +), +gsSPNTriangles_5b( + 1, 4, 2, // tri0 + 1, 11, 12, // tri1 + 8, 10, 16, // tri2 + 16, 10, 13 // tri3 +), +gsSPNTriangles_5b( + 16, 13, 3, // tri0 + 5, 8, 16, // tri1 + 3, 11, 1, // tri2 + 5, 16, 6 // tri3 +), +gsSPNTriangles_5b( + 14, 6, 16, // tri0 + 0, 14, 3, // tri1 + 3, 14, 16, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_snt_model[] = { +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&snt_1_v[128], 4, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&snt_1_v[132], 16, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 4, 5, // tri0 + 3, 6, 7, // tri1 + 3, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 10, // tri0 + 3, 1, 11, // tri1 + 0, 12, 13, // tri2 + 0, 2, 14 // tri3 +), +gsSPNTriangles_5b( + 2, 3, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_snt_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&snt_1_v[148], 3, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&snt_1_v[151], 11, 3), +gsSPNTrianglesInit_5b( + 7, // tri count + 2, 3, 4, // tri0 + 0, 5, 6, // tri1 + 0, 1, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 2, 8, // tri0 + 1, 10, 9, // tri1 + 2, 12, 11, // tri2 + 2, 0, 13 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_snt_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&snt_1_v[162], 6, 0), +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&snt_1_v[168], 22, 6), +gsSPNTrianglesInit_5b( + 14, // tri count + 0, 4, 6, // tri0 + 4, 3, 7, // tri1 + 3, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 10, // tri0 + 2, 1, 11, // tri1 + 2, 12, 13, // tri2 + 0, 14, 15 // tri3 +), +gsSPNTriangles_5b( + 0, 16, 17, // tri0 + 3, 18, 19, // tri1 + 5, 20, 21, // tri2 + 3, 5, 22 // tri3 +), +gsSPNTriangles_5b( + 2, 23, 24, // tri0 + 2, 25, 5, // tri1 + 1, 26, 27, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&snt_1_v[190], 25, 0), +gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 0, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 6, 5, 7, // tri0 + 2, 8, 0, // tri1 + 8, 9, 5, // tri2 + 9, 10, 7 // tri3 +), +gsSPNTriangles_5b( + 7, 10, 11, // tri0 + 8, 2, 12, // tri1 + 9, 12, 13, // tri2 + 10, 13, 14 // tri3 +), +gsSPNTriangles_5b( + 6, 3, 1, // tri0 + 12, 9, 8, // tri1 + 5, 0, 8, // tri2 + 7, 5, 9 // tri3 +), +gsSPNTriangles_5b( + 13, 10, 9, // tri0 + 13, 12, 4, // tri1 + 2, 1, 4, // tri2 + 6, 1, 0 // tri3 +), +gsSPNTriangles_5b( + 4, 12, 2, // tri0 + 11, 10, 15, // tri1 + 10, 14, 15, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 8, // tri count + 16, 17, 18, // tri0 + 16, 19, 17, // tri1 + 19, 20, 21 // tri2 +), +gsSPNTriangles_5b( + 19, 16, 20, // tri0 + 21, 22, 19, // tri1 + 17, 19, 22, // tri2 + 23, 17, 22 // tri3 +), +gsSPNTriangles_5b( + 21, 20, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&snt_1_v[215], 28, 0), +gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 1, 0 // tri2 +), +gsSPNTriangles_5b( + 3, 5, 0, // tri0 + 3, 6, 7, // tri1 + 8, 4, 0, // tri2 + 2, 6, 3 // tri3 +), +gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 0, 5, 8, // tri1 + 11, 5, 12, // tri2 + 7, 12, 3 // tri3 +), +gsSPNTriangles_5b( + 11, 8, 5, // tri0 + 8, 11, 9, // tri1 + 13, 6, 1, // tri2 + 10, 14, 4 // tri3 +), +gsSPNTriangles_5b( + 14, 13, 1, // tri0 + 10, 4, 8, // tri1 + 1, 6, 2, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 253, 255, 255), +gsSPNTrianglesInit_5b( + 19, // tri count + 15, 16, 17, // tri0 + 15, 18, 19, // tri1 + 20, 15, 19 // tri2 +), +gsSPNTriangles_5b( + 21, 16, 20, // tri0 + 21, 20, 19, // tri1 + 22, 23, 16, // tri2 + 22, 16, 21 // tri3 +), +gsSPNTriangles_5b( + 24, 25, 19, // tri0 + 25, 26, 22, // tri1 + 26, 27, 22, // tri2 + 24, 19, 18 // tri3 +), +gsSPNTriangles_5b( + 25, 24, 26, // tri0 + 27, 18, 22, // tri1 + 27, 26, 24, // tri2 + 25, 21, 19 // tri3 +), +gsSPNTriangles_5b( + 25, 22, 21, // tri0 + 18, 27, 24, // tri1 + 17, 22, 18, // tri2 + 17, 18, 15 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_snt_model[] = { +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&snt_1_v[273], 5, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&snt_1_v[278], 16, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 4, 0, 5, // tri0 + 0, 7, 6, // tri1 + 2, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 0, 1, 10, // tri0 + 1, 3, 11, // tri1 + 2, 4, 12, // tri2 + 1, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 18, 17, 19 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_snt_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&snt_1_v[294], 9, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 1, 5, 2 // tri2 +), +gsSPNTriangles_5b( + 6, 4, 3, // tri0 + 6, 3, 7, // tri1 + 7, 8, 6, // tri2 + 4, 5, 1 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_snt_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&snt_1_v[243], 5, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&snt_1_v[248], 16, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 4, 5, // tri0 + 0, 7, 6, // tri1 + 2, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 10, // tri0 + 3, 1, 11, // tri1 + 4, 2, 12, // tri2 + 1, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 19, 15, 20 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_snt_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&snt_1_v[264], 9, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 0, 5, 1 // tri2 +), +gsSPNTriangles_5b( + 4, 3, 6, // tri0 + 7, 4, 6, // tri1 + 6, 8, 7, // tri2 + 1, 5, 3 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx base_snt_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&snt_1_v[303], 13, 0), +gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 0, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 7, 8, 1, // tri0 + 7, 1, 4, // tri1 + 9, 10, 11, // tri2 + 11, 12, 9 // tri3 +), +gsSPNTriangles_5b( + 0, 2, 5, // tri0 + 9, 7, 10, // tri1 + 12, 2, 8, // tri2 + 8, 7, 9 // tri3 +), +gsSPNTriangles_5b( + 12, 11, 6, // tri0 + 5, 12, 6, // tri1 + 6, 3, 0, // tri2 + 4, 1, 0 // tri3 +), +gsSPNTriangles_5b( + 8, 9, 12, // tri0 + 2, 1, 8, // tri1 + 12, 5, 2, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_snt_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_snt_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_snt_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_snt_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_snt_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_snt_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 200,0,-500 }, + /* joint 11 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_snt_model, 3, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 850,-500,0 }, + /* joint 15 */ { Larm1_snt_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_snt_model, 0, cKF_JOINT_FLAG_DISP_OPA, 558,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 850,500,0 }, + /* joint 18 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 1201,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 700,0,1250 }, + /* joint 23 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_snt_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1500,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_snt_1 = { 26, 9, cKF_je_r_snt_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/squ_1.c b/src/data/npc/model/mdl/squ_1.c new file mode 100644 index 00000000..053e13b7 --- /dev/null +++ b/src/data/npc/model/mdl/squ_1.c @@ -0,0 +1,753 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx squ_1_v[] = { +#include "assets/npc/mdl/squ_1_v.inc" +}; + +static Gfx head_squ_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&squ_1_v[0], 12, 0), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 3, 4, 5 // tri2 +), +gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 8, 9, 6, // tri1 + 10, 6, 9, // tri2 + 10, 9, 11 // tri3 +), +gsSPNTriangles_5b( + 2, 3, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&squ_1_v[12], 25, 0), +gsSPNTrianglesInit_5b( + 32, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 2, 1, 4 // tri2 +), +gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 4, 1, 8, // tri1 + 4, 8, 9, // tri2 + 10, 4, 9 // tri3 +), +gsSPNTriangles_5b( + 11, 0, 12, // tri0 + 12, 3, 13, // tri1 + 12, 0, 3, // tri2 + 11, 8, 1 // tri3 +), +gsSPNTriangles_5b( + 1, 0, 11, // tri0 + 14, 2, 4, // tri1 + 15, 3, 2, // tri2 + 16, 15, 2 // tri3 +), +gsSPNTriangles_5b( + 10, 17, 18, // tri0 + 7, 13, 3, // tri1 + 14, 4, 10, // tri2 + 3, 15, 7 // tri3 +), +gsSPNTriangles_5b( + 19, 5, 15, // tri0 + 20, 21, 19, // tri1 + 18, 14, 10, // tri2 + 7, 15, 5 // tri3 +), +gsSPNTriangles_5b( + 14, 18, 22, // tri0 + 23, 16, 14, // tri1 + 2, 14, 16, // tri2 + 15, 16, 23 // tri3 +), +gsSPNTriangles_5b( + 22, 24, 20, // tri0 + 14, 22, 23, // tri1 + 23, 19, 15, // tri2 + 19, 23, 20 // tri3 +), +gsSPNTriangles_5b( + 20, 23, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&squ_1_v[37], 20, 0), +gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 8, 9, 3, // tri0 + 10, 8, 3, // tri1 + 11, 0, 2, // tri2 + 12, 13, 11 // tri3 +), +gsSPNTriangles_5b( + 10, 13, 12, // tri0 + 7, 14, 15, // tri1 + 6, 14, 7, // tri2 + 10, 5, 16 // tri3 +), +gsSPNTriangles_5b( + 2, 7, 11, // tri0 + 17, 0, 11, // tri1 + 9, 8, 18, // tri2 + 3, 5, 10 // tri3 +), +gsSPNTriangles_5b( + 12, 8, 10, // tri0 + 16, 19, 13, // tri1 + 13, 10, 16, // tri2 + 11, 7, 12 // tri3 +), +gsSPNTriangles_5b( + 13, 17, 11, // tri0 + 8, 12, 15, // tri1 + 15, 12, 7, // tri2 + 15, 18, 8 // tri3 +), +gsSPNTriangles_5b( + 13, 19, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&squ_1_v[57], 14, 0), +gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 +), +gsSPNTriangles_5b( + 1, 7, 2, // tri0 + 2, 7, 8, // tri1 + 7, 1, 5, // tri2 + 7, 5, 9 // tri3 +), +gsSPNTriangles_5b( + 7, 10, 8, // tri0 + 7, 9, 10, // tri1 + 8, 11, 2, // tri2 + 9, 5, 4 // tri3 +), +gsSPNTriangles_5b( + 11, 12, 2, // tri0 + 11, 13, 12, // tri1 + 0, 3, 5, // tri2 + 5, 1, 0 // tri3 +), +gsSPNTriangles_5b( + 2, 12, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&squ_1_v[71], 20, 0), +gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 +), +gsSPNTriangles_5b( + 4, 3, 5, // tri0 + 6, 7, 8, // tri1 + 0, 4, 9, // tri2 + 10, 8, 11 // tri3 +), +gsSPNTriangles_5b( + 4, 5, 12, // tri0 + 4, 12, 13, // tri1 + 14, 15, 16, // tri2 + 14, 16, 17 // tri3 +), +gsSPNTriangles_5b( + 10, 14, 17, // tri0 + 10, 17, 6, // tri1 + 9, 1, 0, // tri2 + 6, 8, 10 // tri3 +), +gsSPNTriangles_5b( + 18, 9, 4, // tri0 + 14, 11, 19, // tri1 + 11, 14, 10, // tri2 + 19, 15, 14 // tri3 +), +gsSPNTriangles_5b( + 4, 13, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_squ_model[] = { +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&squ_1_v[127], 5, 0), +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&squ_1_v[132], 16, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 0, 1, 11, // tri0 + 2, 4, 12, // tri1 + 0, 13, 14, // tri2 + 3, 0, 15 // tri3 +), +gsSPNTriangles_5b( + 4, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 20, 19, 18, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_squ_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&squ_1_v[148], 4, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&squ_1_v[152], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 2, 0, 8 // tri2 +), +gsSPNTriangles_5b( + 3, 2, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 1, 3, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_squ_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&squ_1_v[91], 5, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&squ_1_v[96], 16, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 +), +gsSPNTriangles_5b( + 3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_squ_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&squ_1_v[112], 4, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&squ_1_v[116], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_squ_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&squ_1_v[163], 7, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&squ_1_v[170], 20, 7), +gsSPNTrianglesInit_5b( + 13, // tri count + 3, 1, 7, // tri0 + 6, 8, 9, // tri1 + 3, 10, 11 // tri2 +), +gsSPNTriangles_5b( + 2, 12, 0, // tri0 + 2, 13, 14, // tri1 + 1, 16, 15, // tri2 + 0, 17, 18 // tri3 +), +gsSPNTriangles_5b( + 0, 19, 20, // tri0 + 1, 21, 22, // tri1 + 6, 3, 23, // tri2 + 2, 6, 24 // tri3 +), +gsSPNTriangles_5b( + 4, 0, 25, // tri0 + 5, 26, 1, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&squ_1_v[190], 9, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 0, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 4, 3, 7, // tri0 + 2, 5, 0, // tri1 + 1, 8, 2, // tri2 + 6, 3, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail1_squ_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&squ_1_v[242], 13, 0), +gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 3, 5 // tri2 +), +gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 8, 9, 6, // tri1 + 10, 9, 11, // tri2 + 6, 3, 4 // tri3 +), +gsSPNTriangles_5b( + 4, 7, 6, // tri0 + 9, 2, 6, // tri1 + 5, 3, 10, // tri2 + 2, 9, 0 // tri3 +), +gsSPNTriangles_5b( + 0, 10, 3, // tri0 + 9, 10, 0, // tri1 + 11, 9, 8, // tri2 + 11, 12, 10 // tri3 +), +gsSPNTriangles_5b( + 10, 12, 5, // tri0 + 6, 1, 3, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail2_squ_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&squ_1_v[199], 6, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&squ_1_v[205], 16, 6), +gsSPNTrianglesInit_5b( + 11, // tri count + 3, 6, 7, // tri0 + 5, 1, 8, // tri1 + 5, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 2, 0, 11, // tri0 + 0, 3, 12, // tri1 + 0, 13, 14, // tri2 + 2, 15, 16 // tri3 +), +gsSPNTriangles_5b( + 2, 17, 1, // tri0 + 4, 18, 3, // tri1 + 4, 5, 19, // tri2 + 5, 20, 21 // tri3 +), +gsSPVertex(&squ_1_v[221], 21, 0), +gsSPNTrianglesInit_5b( + 35, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 0, 4, 5 // tri2 +), +gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 9, 10, 11, // tri1 + 9, 11, 5, // tri2 + 6, 12, 7 // tri3 +), +gsSPNTriangles_5b( + 13, 10, 14, // tri0 + 9, 7, 12, // tri1 + 5, 4, 7, // tri2 + 5, 7, 9 // tri3 +), +gsSPNTriangles_5b( + 8, 7, 4, // tri0 + 13, 15, 16, // tri1 + 17, 18, 19, // tri2 + 17, 19, 15 // tri3 +), +gsSPNTriangles_5b( + 13, 17, 15, // tri0 + 19, 18, 8, // tri1 + 11, 10, 13, // tri2 + 20, 2, 16 // tri3 +), +gsSPNTriangles_5b( + 11, 13, 1, // tri0 + 10, 12, 14, // tri1 + 12, 10, 9, // tri2 + 14, 17, 13 // tri3 +), +gsSPNTriangles_5b( + 8, 18, 6, // tri0 + 19, 20, 16, // tri1 + 19, 16, 15, // tri2 + 20, 19, 8 // tri3 +), +gsSPNTriangles_5b( + 2, 3, 0, // tri0 + 3, 8, 4, // tri1 + 5, 11, 1, // tri2 + 5, 1, 0 // tri3 +), +gsSPNTriangles_5b( + 1, 13, 16, // tri0 + 20, 8, 3, // tri1 + 1, 16, 2, // tri2 + 2, 20, 3 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_squ_model[] = { +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&squ_1_v[305], 5, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&squ_1_v[310], 17, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 4, 0, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 1, 2, 10, // tri0 + 2, 3, 11, // tri1 + 3, 4, 12, // tri2 + 2, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_squ_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&squ_1_v[327], 4, 0), +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&squ_1_v[331], 22, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 3, 4, // tri0 + 0, 5, 1, // tri1 + 1, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 3, 2, 8, // tri0 + 2, 9, 10, // tri1 + 2, 1, 11, // tri2 + 0, 13, 12 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 14, 15, 16, // tri0 + 14, 16, 17, // tri1 + 17, 18, 14 // tri2 +), +gsSPNTriangles_5b( + 19, 20, 21, // tri0 + 21, 20, 18, // tri1 + 21, 22, 19, // tri2 + 17, 21, 18 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsSPNTrianglesInit_5b( + 1, // tri count + 23, 24, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_squ_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&squ_1_v[255], 5, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&squ_1_v[260], 17, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 4, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 1, 10, // tri0 + 3, 2, 11, // tri1 + 4, 3, 12, // tri2 + 2, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_squ_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&squ_1_v[277], 6, 0), +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&squ_1_v[283], 22, 6), +gsSPNTrianglesInit_5b( + 7, // tri count + 4, 0, 6, // tri0 + 1, 7, 0, // tri1 + 1, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 2, 5, 10, // tri0 + 2, 11, 12, // tri1 + 1, 3, 13, // tri2 + 0, 15, 14 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 16, 17, 18, // tri0 + 19, 16, 18, // tri1 + 18, 20, 19 // tri2 +), +gsSPNTriangles_5b( + 21, 22, 23, // tri0 + 20, 22, 21, // tri1 + 23, 24, 21, // tri2 + 20, 21, 19 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsSPNTrianglesInit_5b( + 1, // tri count + 25, 26, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx base_squ_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&squ_1_v[353], 14, 0), +gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 9, 5, 4, // tri0 + 10, 4, 0, // tri1 + 10, 9, 4, // tri2 + 7, 11, 12 // tri3 +), +gsSPNTriangles_5b( + 8, 7, 13, // tri0 + 2, 10, 0, // tri1 + 2, 1, 6, // tri2 + 6, 8, 2 // tri3 +), +gsSPNTriangles_5b( + 7, 12, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_squ_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_squ_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-350,0 }, + /* joint 3 */ { Lfoot1_squ_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_squ_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,350,0 }, + /* joint 7 */ { Rfoot1_squ_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_squ_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 100,0,-700 }, + /* joint 11 */ { tail1_squ_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_squ_model, 0, cKF_JOINT_FLAG_DISP_OPA, 1099,0,0 }, + /* joint 13 */ { chest_squ_model, 3, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,-650,0 }, + /* joint 15 */ { Larm1_squ_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_squ_model, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,650,0 }, + /* joint 18 */ { Rarm1_squ_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_squ_model, 1, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,600 }, + /* joint 23 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_squ_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1600,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_squ_1 = { 26, 13, cKF_je_r_squ_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/tig_1.c b/src/data/npc/model/mdl/tig_1.c new file mode 100644 index 00000000..3c5fefa7 --- /dev/null +++ b/src/data/npc/model/mdl/tig_1.c @@ -0,0 +1,766 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx tig_1_v[] = { +#include "assets/npc/mdl/tig_1_v.inc" +}; + +static Gfx head_tig_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&tig_1_v[21], 17, 0), +gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 1, 0, 3, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 0, 7, 8, // tri0 + 6, 9, 4, // tri1 + 3, 0, 8, // tri2 + 10, 11, 12 // tri3 +), +gsSPNTriangles_5b( + 12, 11, 7, // tri0 + 8, 13, 3, // tri1 + 6, 14, 9, // tri2 + 15, 4, 9 // tri3 +), +gsSPNTriangles_5b( + 12, 14, 10, // tri0 + 15, 9, 2, // tri1 + 2, 1, 16, // tri2 + 7, 0, 12 // tri3 +), +gsSPNTriangles_5b( + 12, 9, 14, // tri0 + 2, 12, 0, // tri1 + 9, 12, 2, // tri2 + 16, 15, 2 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&tig_1_v[38], 32, 0), +gsSPNTrianglesInit_5b( + 36, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 2, 1 // tri2 +), +gsSPNTriangles_5b( + 0, 7, 3, // tri0 + 8, 1, 0, // tri1 + 2, 9, 0, // tri2 + 10, 11, 5 // tri3 +), +gsSPNTriangles_5b( + 12, 13, 7, // tri0 + 9, 2, 6, // tri1 + 9, 14, 12, // tri2 + 0, 9, 15 // tri3 +), +gsSPNTriangles_5b( + 6, 16, 17, // tri0 + 18, 19, 20, // tri1 + 13, 4, 3, // tri2 + 1, 16, 6 // tri3 +), +gsSPNTriangles_5b( + 0, 21, 8, // tri0 + 17, 18, 22, // tri1 + 7, 15, 12, // tri2 + 18, 17, 8 // tri3 +), +gsSPNTriangles_5b( + 14, 23, 24, // tri0 + 8, 16, 1, // tri1 + 7, 13, 3, // tri2 + 12, 14, 4 // tri3 +), +gsSPNTriangles_5b( + 8, 17, 16, // tri0 + 3, 21, 0, // tri1 + 15, 7, 0, // tri2 + 17, 25, 6 // tri3 +), +gsSPNTriangles_5b( + 4, 13, 12, // tri0 + 12, 15, 9, // tri1 + 6, 25, 9, // tri2 + 14, 9, 25 // tri3 +), +gsSPNTriangles_5b( + 26, 23, 27, // tri0 + 28, 29, 30, // tri1 + 10, 5, 24, // tri2 + 22, 18, 20 // tri3 +), +gsSPNTriangles_5b( + 31, 30, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&tig_1_v[70], 27, 0), +gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 3, 2, 7, // tri0 + 8, 4, 6, // tri1 + 3, 7, 9, // tri2 + 10, 8, 6 // tri3 +), +gsSPNTriangles_5b( + 3, 11, 12, // tri0 + 3, 12, 13, // tri1 + 6, 5, 14, // tri2 + 14, 15, 6 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 9, // tri count + 16, 17, 18, // tri0 + 19, 20, 21, // tri1 + 18, 22, 16 // tri2 +), +gsSPNTriangles_5b( + 23, 24, 20, // tri0 + 23, 17, 16, // tri1 + 18, 25, 22, // tri2 + 17, 23, 19 // tri3 +), +gsSPNTriangles_5b( + 20, 19, 23, // tri0 + 26, 25, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 32, 40, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&tig_1_v[97], 32, 0), +gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 3 // tri2 +), +gsSPNTriangles_5b( + 7, 8, 6, // tri0 + 9, 10, 11, // tri1 + 12, 13, 14, // tri2 + 15, 0, 2 // tri3 +), +gsSPNTriangles_5b( + 7, 6, 5, // tri0 + 16, 17, 18, // tri1 + 5, 3, 19, // tri2 + 18, 20, 21 // tri3 +), +gsSPNTriangles_5b( + 0, 3, 22, // tri0 + 23, 5, 19, // tri1 + 13, 24, 25, // tri2 + 26, 10, 19 // tri3 +), +gsSPNTriangles_5b( + 14, 17, 16, // tri0 + 27, 28, 20, // tri1 + 27, 20, 15, // tri2 + 3, 6, 29 // tri3 +), +gsSPNTriangles_5b( + 11, 13, 25, // tri0 + 19, 10, 30, // tri1 + 26, 4, 17, // tri2 + 31, 27, 15 // tri3 +), +gsSPVertex(&tig_1_v[129], 30, 0), +gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 9, 10, 8, // tri0 + 5, 11, 0, // tri1 + 0, 2, 12, // tri2 + 13, 14, 7 // tri3 +), +gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 18, 19, 6, // tri1 + 18, 6, 3, // tri2 + 0, 16, 3 // tri3 +), +gsSPNTriangles_5b( + 0, 3, 5, // tri0 + 8, 20, 4, // tri1 + 4, 6, 8, // tri2 + 12, 17, 16 // tri3 +), +gsSPNTriangles_5b( + 5, 21, 22, // tri0 + 23, 13, 19, // tri1 + 18, 15, 24, // tri2 + 25, 20, 26 // tri3 +), +gsSPNTriangles_5b( + 27, 4, 20, // tri0 + 28, 11, 29, // tri1 + 29, 11, 22, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&tig_1_v[159], 18, 0), +gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 4, 9, 10, // tri0 + 0, 2, 11, // tri1 + 12, 5, 4, // tri2 + 8, 13, 6 // tri3 +), +gsSPNTriangles_5b( + 14, 15, 3, // tri0 + 11, 16, 0, // tri1 + 10, 12, 4, // tri2 + 3, 17, 14 // tri3 +), +gsSPNTriangles_5b( + 6, 13, 1, // tri0 + 5, 17, 3, // tri1 + 1, 0, 6, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx mouth_tig_model[] = { +gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&tig_1_v[0], 5, 0), +gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&tig_1_v[5], 16, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 1, 5, 6, // tri0 + 2, 7, 8, // tri1 + 4, 0, 9 // tri2 +), +gsSPNTriangles_5b( + 3, 10, 11, // tri0 + 4, 12, 3, // tri1 + 0, 2, 13, // tri2 + 0, 14, 15 // tri3 +), +gsSPNTriangles_5b( + 1, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 17, 19, 20, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_tig_model[] = { +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&tig_1_v[214], 5, 0), +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&tig_1_v[219], 17, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 5, 6, // tri0 + 3, 7, 8, // tri1 + 4, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 0, 1, 11, // tri0 + 1, 4, 12, // tri1 + 0, 13, 14, // tri2 + 2, 0, 15 // tri3 +), +gsSPNTriangles_5b( + 3, 2, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 20, 21, 18, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_tig_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&tig_1_v[236], 4, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&tig_1_v[240], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 2, 4, // tri0 + 3, 6, 5, // tri1 + 1, 8, 7 // tri2 +), +gsSPNTriangles_5b( + 3, 1, 9, // tri0 + 1, 0, 10, // tri1 + 0, 11, 12, // tri2 + 2, 13, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_tig_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&tig_1_v[177], 5, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&tig_1_v[182], 17, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 5, 6, // tri0 + 3, 7, 8, // tri1 + 4, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 11, // tri0 + 4, 1, 12, // tri1 + 0, 13, 14, // tri2 + 0, 2, 15 // tri3 +), +gsSPNTriangles_5b( + 2, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 18, 20, 21, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_tig_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&tig_1_v[199], 4, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&tig_1_v[203], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 2, 0, 4, // tri0 + 3, 6, 5, // tri1 + 1, 8, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 3, 9, // tri0 + 0, 1, 10, // tri1 + 0, 11, 12, // tri2 + 2, 13, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_tig_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&tig_1_v[251], 7, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&tig_1_v[258], 20, 7), +gsSPNTrianglesInit_5b( + 13, // tri count + 0, 2, 7, // tri0 + 6, 8, 9, // tri1 + 0, 10, 11 // tri2 +), +gsSPNTriangles_5b( + 1, 12, 5, // tri0 + 1, 13, 14, // tri1 + 2, 16, 15, // tri2 + 5, 17, 18 // tri3 +), +gsSPNTriangles_5b( + 5, 19, 20, // tri0 + 2, 21, 22, // tri1 + 6, 0, 23, // tri2 + 1, 6, 24 // tri3 +), +gsSPNTriangles_5b( + 3, 5, 25, // tri0 + 4, 26, 2, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&tig_1_v[278], 10, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 5, 4, 8, // tri0 + 2, 6, 0, // tri1 + 1, 9, 2, // tri2 + 7, 4, 3 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail1_tig_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&tig_1_v[312], 8, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 2, 1, 5 // tri2 +), +gsSPNTriangles_5b( + 4, 6, 3, // tri0 + 5, 7, 2, // tri1 + 2, 4, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail2_tig_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&tig_1_v[288], 4, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&tig_1_v[292], 20, 4), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 4, 5, // tri0 + 1, 6, 7, // tri1 + 3, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 3, 2, 10, // tri0 + 2, 1, 11, // tri1 + 0, 3, 12, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 9, // tri count + 13, 14, 15, // tri0 + 16, 14, 17, // tri1 + 18, 17, 19 // tri2 +), +gsSPNTriangles_5b( + 17, 14, 13, // tri0 + 13, 19, 17, // tri1 + 17, 18, 20, // tri2 + 21, 15, 14 // tri3 +), +gsSPNTriangles_5b( + 15, 22, 13, // tri0 + 19, 23, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_tig_model[] = { +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&tig_1_v[361], 5, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&tig_1_v[366], 17, 5), +gsSPNTrianglesInit_5b( + 9, // tri count + 3, 5, 6, // tri0 + 2, 3, 7, // tri1 + 0, 2, 8 // tri2 +), +gsSPNTriangles_5b( + 1, 9, 10, // tri0 + 4, 1, 11, // tri1 + 2, 12, 13, // tri2 + 3, 4, 14 // tri3 +), +gsSPNTriangles_5b( + 1, 15, 16, // tri0 + 3, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_tig_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&tig_1_v[383], 6, 0), +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&tig_1_v[389], 13, 6), +gsSPNTrianglesInit_5b( + 9, // tri count + 2, 6, 7, // tri0 + 3, 8, 9, // tri1 + 3, 4, 10 // tri2 +), +gsSPNTriangles_5b( + 4, 2, 11, // tri0 + 0, 3, 12, // tri1 + 5, 1, 13, // tri2 + 5, 14, 15 // tri3 +), +gsSPNTriangles_5b( + 2, 5, 16, // tri0 + 0, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_tig_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&tig_1_v[320], 5, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&tig_1_v[325], 17, 5), +gsSPNTrianglesInit_5b( + 9, // tri count + 3, 5, 6, // tri0 + 3, 2, 7, // tri1 + 2, 0, 8 // tri2 +), +gsSPNTriangles_5b( + 1, 9, 10, // tri0 + 1, 4, 11, // tri1 + 2, 12, 13, // tri2 + 4, 3, 14 // tri3 +), +gsSPNTriangles_5b( + 1, 15, 16, // tri0 + 3, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_tig_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&tig_1_v[342], 6, 0), +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&tig_1_v[348], 13, 6), +gsSPNTrianglesInit_5b( + 9, // tri count + 1, 6, 7, // tri0 + 2, 8, 9, // tri1 + 0, 2, 10 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 11, // tri0 + 2, 4, 12, // tri1 + 5, 3, 13, // tri2 + 3, 14, 15 // tri3 +), +gsSPNTriangles_5b( + 3, 1, 16, // tri0 + 4, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx base_tig_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&tig_1_v[402], 26, 0), +gsSPNTrianglesInit_5b( + 3, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 2, 1, 4 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), +gsSPNTrianglesInit_5b( + 14, // tri count + 5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 11, 12, 13 // tri2 +), +gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 7, 17, 5, // tri1 + 18, 9, 19, // tri2 + 18, 19, 15 // tri3 +), +gsSPNTriangles_5b( + 10, 13, 12, // tri0 + 9, 18, 10, // tri1 + 6, 5, 11, // tri2 + 11, 13, 6 // tri3 +), +gsSPNTriangles_5b( + 19, 16, 15, // tri0 + 12, 8, 10, // tri1 + 16, 20, 14, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 3, // tri count + 21, 22, 23, // tri0 + 23, 22, 24, // tri1 + 25, 22, 21 // tri2 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_tig_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_tig_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_tig_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_tig_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_tig_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_tig_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 75,0,-475 }, + /* joint 11 */ { tail1_tig_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_tig_model, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_tig_model, 3, cKF_JOINT_FLAG_DISP_OPA, 325,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 450,-500,0 }, + /* joint 15 */ { Larm1_tig_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_tig_model, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 450,500,0 }, + /* joint 18 */ { Rarm1_tig_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_tig_model, 1, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 675,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 100,0,700 }, + /* joint 23 */ { mouth_tig_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_tig_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1300,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_tig_1 = { 26, 14, cKF_je_r_tig_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/ttl_1.c b/src/data/npc/model/mdl/ttl_1.c new file mode 100644 index 00000000..f92aea63 --- /dev/null +++ b/src/data/npc/model/mdl/ttl_1.c @@ -0,0 +1,730 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx ttl_1_v[] = { +#include "assets/npc/mdl/ttl_1_v.inc" +}; + +static Gfx head_ttl_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&ttl_1_v[26], 23, 0), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 2, 4, 5 // tri2 +), +gsSPNTriangles_5b( + 1, 6, 2, // tri0 + 2, 6, 7, // tri1 + 8, 3, 2, // tri2 + 2, 7, 8 // tri3 +), +gsSPNTriangles_5b( + 2, 5, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 124), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 14, // tri count + 9, 10, 11, // tri0 + 11, 10, 12, // tri1 + 13, 12, 14 // tri2 +), +gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 15, 18, 19, // tri1 + 19, 20, 15, // tri2 + 14, 21, 22 // tri3 +), +gsSPNTriangles_5b( + 22, 13, 14, // tri0 + 12, 13, 11, // tri1 + 11, 20, 9, // tri2 + 17, 16, 22 // tri3 +), +gsSPNTriangles_5b( + 17, 18, 15, // tri0 + 22, 21, 17, // tri1 + 19, 9, 20, // tri2 + 0, 0, 0 // tri3 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 60, 124), +gsSPVertex(&ttl_1_v[49], 16, 0), +gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 9, 10, 6, // tri0 + 1, 0, 11, // tri1 + 11, 7, 1, // tri2 + 12, 5, 4 // tri3 +), +gsSPNTriangles_5b( + 12, 4, 10, // tri0 + 10, 9, 12, // tri1 + 11, 8, 7, // tri2 + 2, 13, 0 // tri3 +), +gsSPNTriangles_5b( + 5, 14, 3, // tri0 + 6, 15, 9, // tri1 + 8, 15, 6, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&ttl_1_v[65], 17, 0), +gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 8, 10, 11, // tri1 + 8, 11, 9, // tri2 + 8, 7, 12 // tri3 +), +gsSPNTriangles_5b( + 4, 13, 3, // tri0 + 4, 3, 5, // tri1 + 5, 2, 14, // tri2 + 5, 3, 2 // tri3 +), +gsSPNTriangles_5b( + 0, 10, 1, // tri0 + 1, 10, 8, // tri1 + 1, 12, 14, // tri2 + 1, 14, 2 // tri3 +), +gsSPNTriangles_5b( + 14, 6, 5, // tri0 + 12, 1, 8, // tri1 + 6, 15, 4, // tri2 + 9, 16, 7 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&ttl_1_v[82], 27, 0), +gsSPNTrianglesInit_5b( + 30, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 9, 1, 0, // tri1 + 4, 10, 11, // tri2 + 12, 13, 9 // tri3 +), +gsSPNTriangles_5b( + 6, 14, 15, // tri0 + 16, 17, 3, // tri1 + 14, 6, 8, // tri2 + 2, 1, 7 // tri3 +), +gsSPNTriangles_5b( + 18, 12, 19, // tri0 + 18, 19, 20, // tri1 + 18, 15, 14, // tri2 + 2, 21, 22 // tri3 +), +gsSPNTriangles_5b( + 17, 23, 3, // tri0 + 4, 23, 10, // tri1 + 5, 8, 6, // tri2 + 11, 21, 5 // tri3 +), +gsSPNTriangles_5b( + 6, 15, 16, // tri0 + 24, 25, 26, // tri1 + 21, 2, 5, // tri2 + 22, 0, 2 // tri3 +), +gsSPNTriangles_5b( + 14, 12, 18, // tri0 + 8, 13, 14, // tri1 + 3, 23, 4, // tri2 + 14, 13, 12 // tri3 +), +gsSPNTriangles_5b( + 7, 5, 2, // tri0 + 5, 4, 11, // tri1 + 16, 3, 6, // tri2 + 0, 0, 0 // tri3 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&ttl_1_v[109], 24, 0), +gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 2, 4, 0 // tri2 +), +gsSPNTriangles_5b( + 0, 5, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 14, // tri count + 6, 7, 8, // tri0 + 9, 10, 11, // tri1 + 12, 13, 14 // tri2 +), +gsSPNTriangles_5b( + 12, 15, 13, // tri0 + 9, 16, 8, // tri1 + 8, 16, 6, // tri2 + 14, 17, 6 // tri3 +), +gsSPNTriangles_5b( + 11, 18, 13, // tri0 + 17, 7, 6, // tri1 + 11, 19, 9, // tri2 + 11, 10, 18 // tri3 +), +gsSPNTriangles_5b( + 9, 19, 16, // tri0 + 6, 12, 14, // tri1 + 13, 15, 11, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 2, // tri count + 20, 21, 22, // tri0 + 20, 23, 21, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx mouth_ttl_model[] = { +gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&ttl_1_v[0], 5, 0), +gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&ttl_1_v[5], 21, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 1, 2, 5, // tri0 + 3, 0, 6, // tri1 + 1, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 4, 1, 9, // tri0 + 4, 10, 11, // tri1 + 0, 13, 12, // tri2 + 0, 4, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 10, // tri count + 18, 19, 20, // tri0 + 20, 19, 21, // tri1 + 20, 22, 18 // tri2 +), +gsSPNTriangles_5b( + 21, 23, 20, // tri0 + 22, 24, 25, // tri1 + 21, 19, 25, // tri2 + 25, 24, 23 // tri3 +), +gsSPNTriangles_5b( + 25, 19, 18, // tri0 + 18, 22, 25, // tri1 + 25, 23, 21, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx hand_ttl_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&ttl_1_v[160], 13, 0), +gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 +), +gsSPNTrianglesInit_5b( + 5, // tri count + 4, 5, 6, // tri0 + 7, 8, 9, // tri1 + 7, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 8, 11, 12, // tri0 + 8, 12, 9, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_ttl_model[] = { +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&ttl_1_v[173], 4, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&ttl_1_v[177], 16, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 1, 2, 4, // tri0 + 2, 0, 5, // tri1 + 0, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 3, 1, 8, // tri0 + 0, 3, 9, // tri1 + 0, 10, 11, // tri2 + 1, 12, 13 // tri3 +), +gsSPNTriangles_5b( + 1, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 16, 17, 18, // tri0 + 19, 18, 17, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_ttl_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&ttl_1_v[193], 7, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 4, 2, 5, // tri0 + 5, 1, 6, // tri1 + 1, 0, 6, // tri2 + 2, 3, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_ttl_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&ttl_1_v[133], 4, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&ttl_1_v[137], 16, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 1, 4, // tri0 + 0, 2, 5, // tri1 + 0, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 3, 8, // tri0 + 3, 0, 9, // tri1 + 0, 10, 11, // tri2 + 1, 12, 13 // tri3 +), +gsSPNTriangles_5b( + 1, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_ttl_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&ttl_1_v[153], 7, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 3 // tri2 +), +gsSPNTriangles_5b( + 6, 0, 3, // tri0 + 5, 1, 6, // tri1 + 5, 2, 1, // tri2 + 2, 4, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_ttl_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&ttl_1_v[200], 8, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&ttl_1_v[208], 22, 8), +gsSPNTrianglesInit_5b( + 7, // tri count + 7, 8, 9, // tri0 + 7, 10, 5, // tri1 + 7, 11, 12 // tri2 +), +gsSPNTriangles_5b( + 5, 13, 14, // tri0 + 5, 15, 3, // tri1 + 3, 16, 17, // tri2 + 3, 18, 19 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 124), +gsSPNTrianglesInit_5b( + 7, // tri count + 2, 20, 21, // tri0 + 2, 0, 22, // tri1 + 1, 23, 24 // tri2 +), +gsSPNTriangles_5b( + 6, 2, 25, // tri0 + 1, 4, 26, // tri1 + 0, 27, 28, // tri2 + 1, 29, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 124), +gsSPVertex(&ttl_1_v[230], 21, 0), +gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 3, 1, 4 // tri2 +), +gsSPNTriangles_5b( + 4, 1, 5, // tri0 + 5, 1, 6, // tri1 + 7, 8, 9, // tri2 + 6, 1, 0 // tri3 +), +gsSPNTriangles_5b( + 3, 10, 11, // tri0 + 4, 8, 10, // tri1 + 5, 9, 8, // tri2 + 6, 12, 9 // tri3 +), +gsSPNTriangles_5b( + 0, 13, 12, // tri0 + 2, 11, 13, // tri1 + 14, 11, 10, // tri2 + 14, 10, 15 // tri3 +), +gsSPNTriangles_5b( + 11, 2, 3, // tri0 + 10, 3, 4, // tri1 + 8, 4, 5, // tri2 + 9, 5, 6 // tri3 +), +gsSPNTriangles_5b( + 12, 6, 0, // tri0 + 13, 0, 2, // tri1 + 15, 10, 8, // tri2 + 15, 8, 7 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 124), +gsSPNTrianglesInit_5b( + 3, // tri count + 16, 17, 18, // tri0 + 19, 16, 18, // tri1 + 18, 17, 20 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx tail1_ttl_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&ttl_1_v[251], 5, 0), +gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 0, 2 // tri2 +), +gsSPNTriangles_5b( + 3, 4, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_ttl_model[] = { +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&ttl_1_v[286], 4, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&ttl_1_v[290], 19, 4), +gsSPNTrianglesInit_5b( + 9, // tri count + 2, 4, 5, // tri0 + 2, 6, 7, // tri1 + 0, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 1, 10, 11, // tri0 + 2, 3, 12, // tri1 + 1, 2, 13, // tri2 + 0, 1, 14 // tri3 +), +gsSPNTriangles_5b( + 3, 0, 15, // tri0 + 0, 16, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 18, 19, 20, // tri0 + 21, 20, 19, // tri1 + 21, 19, 22 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_ttl_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&ttl_1_v[309], 7, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 1, 5, 2 // tri2 +), +gsSPNTriangles_5b( + 6, 4, 3, // tri0 + 6, 3, 0, // tri1 + 0, 2, 6, // tri2 + 4, 5, 1 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_ttl_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&ttl_1_v[256], 4, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&ttl_1_v[260], 19, 4), +gsSPNTrianglesInit_5b( + 9, // tri count + 2, 4, 5, // tri0 + 2, 6, 7, // tri1 + 0, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 1, 10, 11, // tri0 + 3, 2, 12, // tri1 + 2, 1, 13, // tri2 + 1, 0, 14 // tri3 +), +gsSPNTriangles_5b( + 0, 3, 15, // tri0 + 0, 16, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 18, 19, 20, // tri0 + 21, 19, 18, // tri1 + 21, 18, 22 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_ttl_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&ttl_1_v[279], 7, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 0, 5, 1 // tri2 +), +gsSPNTriangles_5b( + 4, 3, 6, // tri0 + 2, 4, 6, // tri1 + 6, 0, 2, // tri2 + 1, 5, 3 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx base_ttl_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&ttl_1_v[316], 9, 0), +gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 3, 0 // tri2 +), +gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 5, 3, 8, // tri1 + 4, 8, 3, // tri2 + 8, 6, 5 // tri3 +), +gsSPNTriangles_5b( + 3, 5, 1, // tri0 + 7, 1, 5, // tri1 + 1, 7, 2, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_ttl_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_ttl_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-500,-300 }, + /* joint 3 */ { Lfoot1_ttl_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_ttl_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,500,-300 }, + /* joint 7 */ { Rfoot1_ttl_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_ttl_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, -400,0,-700 }, + /* joint 11 */ { tail1_ttl_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_ttl_model, 3, cKF_JOINT_FLAG_DISP_OPA, 403,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,-700,200 }, + /* joint 15 */ { Larm1_ttl_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_ttl_model, 0, cKF_JOINT_FLAG_DISP_OPA, 451,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,700,200 }, + /* joint 18 */ { Rarm1_ttl_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_ttl_model, 1, cKF_JOINT_FLAG_DISP_OPA, 452,0,0 }, + /* joint 20 */ { hand_ttl_model, 0, cKF_JOINT_FLAG_DISP_OPA, 449,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 1000,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,2000 }, + /* joint 23 */ { mouth_ttl_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_ttl_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 997,0,1100 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_ttl_1 = { 26, 14, cKF_je_r_ttl_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/tuk_1.c b/src/data/npc/model/mdl/tuk_1.c new file mode 100644 index 00000000..3bbfbe4f --- /dev/null +++ b/src/data/npc/model/mdl/tuk_1.c @@ -0,0 +1,962 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx tuk_1_v[] = { +#include "assets/npc/mdl/tuk_1_v.inc" +}; + +static Gfx head_tuk_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&tuk_1_v[11], 9, 0), +gsSPMatrix(0x0D000380, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&tuk_1_v[20], 19, 9), +gsSPNTrianglesInit_5b( + 9, // tri count + 5, 3, 9, // tri0 + 1, 6, 10, // tri1 + 5, 11, 12 // tri2 +), +gsSPNTriangles_5b( + 6, 13, 14, // tri0 + 7, 15, 16, // tri1 + 8, 17, 18, // tri2 + 7, 5, 19 // tri3 +), +gsSPNTriangles_5b( + 6, 8, 20, // tri0 + 8, 7, 21, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 4, // tri count + 2, 4, 22, // tri0 + 4, 23, 24, // tri1 + 4, 25, 26 // tri2 +), +gsSPNTriangles_5b( + 4, 0, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 124), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&tuk_1_v[39], 23, 0), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 2, 4, 5 // tri2 +), +gsSPNTriangles_5b( + 1, 6, 2, // tri0 + 2, 6, 7, // tri1 + 8, 3, 2, // tri2 + 2, 7, 8 // tri3 +), +gsSPNTriangles_5b( + 2, 5, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 124), +gsSPNTrianglesInit_5b( + 14, // tri count + 9, 10, 11, // tri0 + 11, 10, 12, // tri1 + 13, 12, 14 // tri2 +), +gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 15, 18, 19, // tri1 + 19, 20, 15, // tri2 + 14, 21, 22 // tri3 +), +gsSPNTriangles_5b( + 22, 13, 14, // tri0 + 12, 13, 11, // tri1 + 11, 20, 9, // tri2 + 17, 16, 22 // tri3 +), +gsSPNTriangles_5b( + 17, 18, 15, // tri0 + 22, 21, 17, // tri1 + 19, 9, 20, // tri2 + 0, 0, 0 // tri3 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_REPEAT, 0, 0), +gsDPSetTileSize(0, 0, 0, 60, 124), +gsSPVertex(&tuk_1_v[62], 27, 0), +gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 9, 10, 6, // tri0 + 1, 0, 11, // tri1 + 11, 7, 1, // tri2 + 12, 5, 4 // tri3 +), +gsSPNTriangles_5b( + 12, 4, 10, // tri0 + 10, 9, 12, // tri1 + 11, 8, 7, // tri2 + 2, 13, 0 // tri3 +), +gsSPNTriangles_5b( + 5, 14, 3, // tri0 + 6, 15, 9, // tri1 + 8, 15, 6, // tri2 + 0, 0, 0 // tri3 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000180, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 60), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 12, // tri count + 16, 17, 18, // tri0 + 19, 20, 21, // tri1 + 19, 21, 22 // tri2 +), +gsSPNTriangles_5b( + 23, 18, 17, // tri0 + 17, 16, 24, // tri1 + 20, 25, 21, // tri2 + 26, 21, 25 // tri3 +), +gsSPNTriangles_5b( + 22, 17, 24, // tri0 + 22, 24, 19, // tri1 + 21, 26, 23, // tri2 + 17, 22, 23 // tri3 +), +gsSPNTriangles_5b( + 23, 22, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&tuk_1_v[89], 13, 0), +gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 2, 7, 0, // tri0 + 8, 5, 0, // tri1 + 7, 9, 0, // tri2 + 5, 10, 6 // tri3 +), +gsSPNTriangles_5b( + 8, 10, 5, // tri0 + 11, 9, 7, // tri1 + 0, 9, 8, // tri2 + 5, 4, 1 // tri3 +), +gsSPNTriangles_5b( + 5, 1, 0, // tri0 + 6, 10, 12, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&tuk_1_v[102], 21, 0), +gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 4, 9, 5, // tri0 + 8, 2, 10, // tri1 + 11, 4, 3, // tri2 + 10, 2, 4 // tri3 +), +gsSPNTriangles_5b( + 12, 8, 7, // tri0 + 9, 4, 1, // tri1 + 6, 8, 13, // tri2 + 4, 11, 10 // tri3 +), +gsSPNTriangles_5b( + 4, 2, 1, // tri0 + 10, 14, 8, // tri1 + 13, 8, 14, // tri2 + 2, 12, 0 // tri3 +), +gsSPNTriangles_5b( + 12, 2, 8, // tri0 + 15, 16, 17, // tri1 + 18, 19, 20, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&tuk_1_v[123], 14, 0), +gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 +), +gsSPNTriangles_5b( + 2, 7, 8, // tri0 + 9, 5, 10, // tri1 + 7, 11, 12, // tri2 + 5, 9, 3 // tri3 +), +gsSPNTriangles_5b( + 8, 0, 2, // tri0 + 4, 13, 10, // tri1 + 12, 11, 0, // tri2 + 10, 5, 4 // tri3 +), +gsSPNTriangles_5b( + 0, 8, 12, // tri0 + 12, 8, 7, // tri1 + 10, 13, 9, // tri2 + 0, 11, 1 // tri3 +), +gsSPNTriangles_5b( + 6, 13, 4, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&tuk_1_v[137], 29, 0), +gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 5, 9, 3, // tri0 + 2, 10, 0, // tri1 + 8, 11, 6, // tri2 + 6, 12, 7 // tri3 +), +gsSPNTriangles_5b( + 4, 13, 5, // tri0 + 5, 13, 1, // tri1 + 10, 6, 0, // tri2 + 0, 5, 1 // tri3 +), +gsSPNTriangles_5b( + 10, 12, 6, // tri0 + 0, 6, 14, // tri1 + 14, 6, 11, // tri2 + 14, 11, 15 // tri3 +), +gsSPNTriangles_5b( + 16, 9, 5, // tri0 + 16, 5, 17, // tri1 + 16, 18, 15, // tri2 + 15, 18, 14 // tri3 +), +gsSPNTriangles_5b( + 17, 18, 16, // tri0 + 14, 18, 17, // tri1 + 17, 5, 0, // tri2 + 0, 14, 17 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), +gsDPSetTileSize(0, 0, 0, 60, 60), +gsSPNTrianglesInit_5b( + 10, // tri count + 19, 20, 21, // tri0 + 22, 23, 19, // tri1 + 21, 24, 25 // tri2 +), +gsSPNTriangles_5b( + 25, 22, 19, // tri0 + 25, 19, 21, // tri1 + 23, 26, 27, // tri2 + 24, 21, 20 // tri3 +), +gsSPNTriangles_5b( + 27, 19, 23, // tri0 + 20, 28, 24, // tri1 + 19, 27, 20, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&tuk_1_v[166], 5, 0), +gsSPNTrianglesInit_5b( + 3, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 3, 4 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx mouth_tuk_model[] = { +gsSPMatrix(0x0D000380, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&tuk_1_v[0], 4, 0), +gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&tuk_1_v[4], 7, 4), +gsSPNTrianglesInit_5b( + 5, // tri count + 0, 3, 4, // tri0 + 2, 1, 5, // tri1 + 3, 7, 6 // tri2 +), +gsSPNTriangles_5b( + 1, 9, 8, // tri0 + 3, 2, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_tuk_model[] = { +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&tuk_1_v[204], 6, 0), +gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&tuk_1_v[210], 15, 6), +gsSPNTrianglesInit_5b( + 7, // tri count + 4, 6, 7, // tri0 + 2, 4, 8, // tri1 + 4, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 3, 11, 12, // tri0 + 3, 13, 0, // tri1 + 5, 14, 15, // tri2 + 5, 1, 16 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 20, 17, 19, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_tuk_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&tuk_1_v[225], 3, 0), +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&tuk_1_v[228], 9, 3), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 3, // tri0 + 2, 0, 4, // tri1 + 0, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 1, 7, 8, // tri0 + 1, 2, 9, // tri1 + 2, 10, 11, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_tuk_model[] = { +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&tuk_1_v[171], 6, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&tuk_1_v[177], 15, 6), +gsSPNTrianglesInit_5b( + 7, // tri count + 4, 6, 7, // tri0 + 4, 2, 8, // tri1 + 4, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 0, 11, 12, // tri0 + 0, 13, 3, // tri1 + 5, 14, 15, // tri2 + 1, 5, 16 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 17, 19, 20, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_tuk_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&tuk_1_v[192], 3, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&tuk_1_v[195], 9, 3), +gsSPNTrianglesInit_5b( + 6, // tri count + 1, 0, 3, // tri0 + 0, 2, 4, // tri1 + 0, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 1, 7, 8, // tri0 + 2, 1, 9, // tri1 + 2, 10, 11, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_tuk_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&tuk_1_v[237], 8, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&tuk_1_v[245], 20, 8), +gsSPNTrianglesInit_5b( + 14, // tri count + 5, 8, 0, // tri0 + 0, 9, 6, // tri1 + 5, 11, 10 // tri2 +), +gsSPNTriangles_5b( + 4, 3, 12, // tri0 + 7, 13, 3, // tri1 + 3, 14, 15, // tri2 + 4, 17, 16 // tri3 +), +gsSPNTriangles_5b( + 5, 4, 18, // tri0 + 6, 20, 19, // tri1 + 7, 2, 21, // tri2 + 2, 1, 22 // tri3 +), +gsSPNTriangles_5b( + 1, 6, 23, // tri0 + 1, 24, 25, // tri1 + 2, 27, 26, // tri2 + 0, 0, 0 // tri3 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&tuk_1_v[265], 18, 0), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 2, 1 // tri2 +), +gsSPNTriangles_5b( + 6, 7, 4, // tri0 + 2, 8, 0, // tri1 + 5, 9, 3, // tri2 + 1, 7, 6 // tri3 +), +gsSPNTriangles_5b( + 4, 3, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 6, // tri count + 10, 11, 12, // tri0 + 10, 12, 13, // tri1 + 11, 10, 14 // tri2 +), +gsSPNTriangles_5b( + 12, 15, 16, // tri0 + 14, 17, 11, // tri1 + 16, 13, 12, // tri2 + 0, 0, 0 // tri3 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&tuk_1_v[283], 26, 0), +gsSPNTrianglesInit_5b( + 32, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 5, 2, 1 // tri2 +), +gsSPNTriangles_5b( + 5, 6, 2, // tri0 + 7, 8, 9, // tri1 + 9, 10, 11, // tri2 + 9, 12, 7 // tri3 +), +gsSPNTriangles_5b( + 2, 6, 4, // tri0 + 13, 14, 2, // tri1 + 11, 12, 9, // tri2 + 11, 0, 15 // tri3 +), +gsSPNTriangles_5b( + 11, 15, 16, // tri0 + 13, 7, 17, // tri1 + 13, 17, 18, // tri2 + 0, 19, 20 // tri3 +), +gsSPNTriangles_5b( + 0, 20, 15, // tri0 + 14, 13, 18, // tri1 + 14, 18, 21, // tri2 + 12, 11, 16 // tri3 +), +gsSPNTriangles_5b( + 12, 16, 22, // tri0 + 7, 23, 8, // tri1 + 10, 24, 11, // tri2 + 0, 24, 1 // tri3 +), +gsSPNTriangles_5b( + 23, 13, 3, // tri0 + 1, 24, 10, // tri1 + 3, 8, 23, // tri2 + 9, 25, 10 // tri3 +), +gsSPNTriangles_5b( + 8, 25, 9, // tri0 + 2, 19, 0, // tri1 + 2, 3, 13, // tri2 + 7, 12, 22 // tri3 +), +gsSPNTriangles_5b( + 7, 22, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail_tuk_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&tuk_1_v[309], 6, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000580, G_IM_FMT_CI, 16, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&tuk_1_v[315], 20, 6), +gsSPNTrianglesInit_5b( + 3, // tri count + 1, 6, 7, // tri0 + 3, 8, 9, // tri1 + 3, 10, 11 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 2, // tri count + 1, 0, 12, // tri0 + 5, 2, 13, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 1, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 3, 16, // tri0 + 3, 17, 18, // tri1 + 1, 19, 20 // tri2 +), +gsSPNTriangles_5b( + 4, 5, 21, // tri0 + 4, 22, 23, // tri1 + 2, 24, 25, // tri2 + 0, 0, 0 // tri3 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&tuk_1_v[335], 21, 0), +gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 2, 4, 0 // tri2 +), +gsSPNTriangles_5b( + 3, 5, 6, // tri0 + 7, 8, 4, // tri1 + 2, 9, 7, // tri2 + 10, 7, 9 // tri3 +), +gsSPNTriangles_5b( + 10, 8, 7, // tri0 + 6, 11, 9, // tri1 + 1, 5, 3, // tri2 + 3, 9, 2 // tri3 +), +gsSPNTriangles_5b( + 7, 4, 2, // tri0 + 9, 11, 10, // tri1 + 9, 3, 6, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 8, // tri count + 12, 13, 14, // tri0 + 14, 13, 15, // tri1 + 14, 16, 12 // tri2 +), +gsSPNTriangles_5b( + 17, 18, 16, // tri0 + 14, 19, 17, // tri1 + 13, 20, 15, // tri2 + 15, 19, 14 // tri3 +), +gsSPNTriangles_5b( + 17, 16, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot3_tuk_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&tuk_1_v[406], 4, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&tuk_1_v[410], 20, 4), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 3, 4, // tri0 + 1, 0, 5, // tri1 + 3, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 2, 8, 9, // tri0 + 2, 10, 3, // tri1 + 1, 11, 12, // tri2 + 0, 0, 0 // tri3 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 6, // tri count + 13, 14, 15, // tri0 + 13, 16, 14, // tri1 + 13, 17, 18 // tri2 +), +gsSPNTriangles_5b( + 13, 19, 17, // tri0 + 15, 19, 13, // tri1 + 18, 20, 13, // tri2 + 0, 0, 0 // tri3 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 21, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_tuk_model[] = { +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&tuk_1_v[430], 4, 0), +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&tuk_1_v[434], 14, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 1, 6, 7, // tri1 + 3, 0, 8 // tri2 +), +gsSPNTriangles_5b( + 0, 2, 9, // tri0 + 2, 10, 11, // tri1 + 1, 3, 12, // tri2 + 3, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_tuk_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&tuk_1_v[448], 8, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 1, 0, 3, // tri1 + 2, 4, 0 // tri2 +), +gsSPNTriangles_5b( + 5, 6, 4, // tri0 + 5, 4, 2, // tri1 + 3, 7, 1, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot3_tuk_model[] = { +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&tuk_1_v[356], 4, 0), +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&tuk_1_v[360], 20, 4), +gsSPNTrianglesInit_5b( + 6, // tri count + 3, 0, 4, // tri0 + 0, 1, 5, // tri1 + 3, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 3, 8, 9, // tri0 + 3, 10, 2, // tri1 + 1, 11, 12, // tri2 + 0, 0, 0 // tri3 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 6, // tri count + 13, 14, 15, // tri0 + 14, 16, 15, // tri1 + 17, 18, 15 // tri2 +), +gsSPNTriangles_5b( + 18, 19, 15, // tri0 + 15, 19, 13, // tri1 + 15, 20, 17, // tri2 + 0, 0, 0 // tri3 +), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 1, // tri count + 21, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_tuk_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&tuk_1_v[380], 4, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&tuk_1_v[384], 14, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 1, 6, 7, // tri1 + 0, 3, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 0, 9, // tri0 + 2, 10, 11, // tri1 + 3, 1, 12, // tri2 + 3, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_tuk_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&tuk_1_v[398], 8, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 2, 4, 0 // tri2 +), +gsSPNTriangles_5b( + 0, 4, 5, // tri0 + 0, 5, 6, // tri1 + 1, 7, 3, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx base_tuk_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&tuk_1_v[456], 13, 0), +gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 1, 7 // tri2 +), +gsSPNTriangles_5b( + 7, 8, 6, // tri0 + 7, 0, 3, // tri1 + 3, 8, 7, // tri2 + 9, 10, 11 // tri3 +), +gsSPNTriangles_5b( + 10, 2, 11, // tri0 + 3, 0, 10, // tri1 + 3, 10, 4, // tri2 + 12, 4, 9 // tri3 +), +gsSPNTriangles_5b( + 5, 4, 12, // tri0 + 10, 9, 4, // tri1 + 7, 1, 0, // tri2 + 5, 8, 3 // tri3 +), +gsSPNTriangles_5b( + 2, 10, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_tuk_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_tuk_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-400,0 }, + /* joint 3 */ { Lfoot1_tuk_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_tuk_model, 1, cKF_JOINT_FLAG_DISP_OPA, 348,0,0 }, + /* joint 5 */ { Lfoot3_tuk_model, 0, cKF_JOINT_FLAG_DISP_OPA, 351,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,400,0 }, + /* joint 7 */ { Rfoot1_tuk_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_tuk_model, 1, cKF_JOINT_FLAG_DISP_OPA, 349,0,0 }, + /* joint 9 */ { Rfoot3_tuk_model, 0, cKF_JOINT_FLAG_DISP_OPA, 349,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,-800 }, + /* joint 11 */ { tail_tuk_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_tuk_model, 3, cKF_JOINT_FLAG_DISP_OPA, 201,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 575,-700,150 }, + /* joint 15 */ { Larm1_tuk_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_tuk_model, 0, cKF_JOINT_FLAG_DISP_OPA, 349,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 575,700,150 }, + /* joint 18 */ { Rarm1_tuk_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_tuk_model, 1, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 1202,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 600,0,950 }, + /* joint 23 */ { mouth_tuk_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_tuk_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1198,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_tuk_1 = { 26, 15, cKF_je_r_tuk_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/wip_1.c b/src/data/npc/model/mdl/wip_1.c new file mode 100644 index 00000000..0a7b0f7f --- /dev/null +++ b/src/data/npc/model/mdl/wip_1.c @@ -0,0 +1,720 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx wip_1_v[] = { +#include "assets/npc/mdl/wip_1_v.inc" +}; + +static Gfx head_wip_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&wip_1_v[0], 15, 0), +gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 1, 3 // tri2 +), +gsSPNTriangles_5b( + 6, 3, 7, // tri0 + 6, 7, 8, // tri1 + 1, 0, 7, // tri2 + 9, 10, 8 // tri3 +), +gsSPNTriangles_5b( + 6, 11, 12, // tri0 + 13, 11, 10, // tri1 + 3, 6, 4, // tri2 + 12, 4, 6 // tri3 +), +gsSPNTriangles_5b( + 14, 9, 8, // tri0 + 14, 8, 7, // tri1 + 7, 0, 14, // tri2 + 11, 6, 8 // tri3 +), +gsSPNTriangles_5b( + 8, 10, 11, // tri0 + 7, 3, 1, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&wip_1_v[15], 27, 0), +gsSPNTrianglesInit_5b( + 29, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 5, 4, 12, // tri1 + 13, 14, 15, // tri2 + 16, 14, 17 // tri3 +), +gsSPNTriangles_5b( + 16, 18, 19, // tri0 + 20, 3, 5, // tri1 + 6, 8, 11, // tri2 + 15, 21, 13 // tri3 +), +gsSPNTriangles_5b( + 2, 12, 0, // tri0 + 22, 23, 24, // tri1 + 19, 1, 16, // tri2 + 17, 18, 16 // tri3 +), +gsSPNTriangles_5b( + 2, 1, 19, // tri0 + 23, 3, 20, // tri1 + 25, 5, 2, // tri2 + 7, 6, 21 // tri3 +), +gsSPNTriangles_5b( + 13, 6, 26, // tri0 + 10, 9, 22, // tri1 + 22, 24, 10, // tri2 + 20, 24, 23 // tri3 +), +gsSPNTriangles_5b( + 11, 8, 9, // tri0 + 21, 6, 13, // tri1 + 17, 14, 13, // tri2 + 2, 5, 12 // tri3 +), +gsSPNTriangles_5b( + 19, 25, 2, // tri0 + 13, 26, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&wip_1_v[42], 13, 0), +gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 4, 6, 7, // tri0 + 7, 8, 4, // tri1 + 5, 3, 2, // tri2 + 9, 10, 11 // tri3 +), +gsSPNTriangles_5b( + 9, 12, 8, // tri0 + 5, 2, 6, // tri1 + 7, 9, 8, // tri2 + 11, 12, 9 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000180, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&wip_1_v[55], 32, 0), +gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 +), +gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 11, 3, 6, // tri1 + 6, 7, 12, // tri2 + 8, 13, 14 // tri3 +), +gsSPNTriangles_5b( + 15, 7, 16, // tri0 + 12, 17, 6, // tri1 + 18, 9, 8, // tri2 + 2, 4, 11 // tri3 +), +gsSPNTriangles_5b( + 2, 11, 0, // tri0 + 19, 20, 21, // tri1 + 22, 23, 24, // tri2 + 5, 25, 26 // tri3 +), +gsSPNTriangles_5b( + 25, 5, 4, // tri0 + 27, 28, 29, // tri1 + 29, 30, 27, // tri2 + 20, 19, 27 // tri3 +), +gsSPNTriangles_5b( + 27, 30, 20, // tri0 + 26, 29, 5, // tri1 + 23, 22, 26, // tri2 + 23, 26, 25 // tri3 +), +gsSPNTriangles_5b( + 1, 24, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&wip_1_v[86], 32, 0), +gsSPNTrianglesInit_5b( + 25, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 9, 0, // tri0 + 10, 5, 4, // tri1 + 4, 1, 10, // tri2 + 5, 11, 3 // tri3 +), +gsSPNTriangles_5b( + 6, 12, 7, // tri0 + 7, 12, 13, // tri1 + 0, 8, 14, // tri2 + 15, 16, 13 // tri3 +), +gsSPNTriangles_5b( + 17, 18, 9, // tri0 + 19, 20, 21, // tri1 + 21, 22, 19, // tri2 + 8, 18, 6 // tri3 +), +gsSPNTriangles_5b( + 7, 14, 8, // tri0 + 20, 23, 21, // tri1 + 24, 25, 14, // tri2 + 26, 19, 5 // tri3 +), +gsSPNTriangles_5b( + 27, 28, 6, // tri0 + 21, 29, 30, // tri1 + 6, 18, 27, // tri2 + 1, 0, 10 // tri3 +), +gsSPNTriangles_5b( + 21, 23, 29, // tri0 + 2, 31, 9, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&wip_1_v[118], 30, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 3 // tri2 +), +gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 13, 12, 14, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 18, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 21, 22, 23 // tri2 +), +gsSPNTriangles_5b( + 23, 24, 21, // tri0 + 21, 17, 18, // tri1 + 18, 25, 21, // tri2 + 26, 15, 24 // tri3 +), +gsSPNTriangles_5b( + 27, 22, 25, // tri0 + 21, 24, 17, // tri1 + 18, 28, 19, // tri2 + 16, 29, 17 // tri3 +), +gsSPNTriangles_5b( + 21, 25, 22, // tri0 + 25, 20, 27, // tri1 + 17, 24, 15, // tri2 + 24, 23, 26 // tri3 +), +gsSPNTriangles_5b( + 20, 25, 18, // tri0 + 17, 29, 28, // tri1 + 17, 28, 18, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&wip_1_v[148], 20, 0), +gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 9, 10, 1, // tri0 + 11, 10, 12, // tri1 + 13, 14, 11, // tri2 + 2, 3, 15 // tri3 +), +gsSPNTriangles_5b( + 16, 14, 17, // tri0 + 8, 16, 18, // tri1 + 4, 7, 19, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_wip_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&wip_1_v[202], 4, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&wip_1_v[206], 16, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 4, 5, // tri0 + 3, 6, 7, // tri1 + 3, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 0, 1, 10, // tri0 + 1, 3, 11, // tri1 + 0, 12, 13, // tri2 + 2, 0, 14 // tri3 +), +gsSPNTriangles_5b( + 3, 2, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 16, 17, 18, // tri0 + 19, 18, 17, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_wip_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&wip_1_v[222], 3, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&wip_1_v[225], 11, 3), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 2, 3, // tri0 + 2, 5, 4, // tri1 + 1, 7, 6 // tri2 +), +gsSPNTriangles_5b( + 2, 1, 8, // tri0 + 1, 0, 9, // tri1 + 0, 10, 11, // tri2 + 2, 12, 13 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_wip_model[] = { +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&wip_1_v[168], 4, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&wip_1_v[172], 16, 4), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 4, 5, // tri0 + 3, 6, 7, // tri1 + 3, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 10, // tri0 + 3, 1, 11, // tri1 + 0, 12, 13, // tri2 + 0, 2, 14 // tri3 +), +gsSPNTriangles_5b( + 2, 3, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_wip_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&wip_1_v[188], 3, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&wip_1_v[191], 11, 3), +gsSPNTrianglesInit_5b( + 7, // tri count + 2, 0, 3, // tri0 + 2, 5, 4, // tri1 + 1, 7, 6 // tri2 +), +gsSPNTriangles_5b( + 1, 2, 8, // tri0 + 0, 1, 9, // tri1 + 0, 10, 11, // tri2 + 2, 12, 13 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_wip_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&wip_1_v[236], 8, 0), +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&wip_1_v[244], 24, 8), +gsSPNTrianglesInit_5b( + 16, // tri count + 0, 8, 9, // tri0 + 0, 10, 11, // tri1 + 4, 2, 12 // tri2 +), +gsSPNTriangles_5b( + 3, 13, 14, // tri0 + 7, 15, 16, // tri1 + 3, 6, 17, // tri2 + 7, 18, 19 // tri3 +), +gsSPNTriangles_5b( + 2, 1, 20, // tri0 + 1, 0, 21, // tri1 + 3, 22, 23, // tri2 + 7, 4, 24 // tri3 +), +gsSPNTriangles_5b( + 2, 25, 26, // tri0 + 0, 5, 27, // tri1 + 5, 3, 28, // tri2 + 6, 7, 29 // tri3 +), +gsSPNTriangles_5b( + 2, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&wip_1_v[268], 15, 0), +gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 3, 1, 4, // tri1 + 5, 3, 6 // tri2 +), +gsSPNTriangles_5b( + 7, 6, 8, // tri0 + 3, 5, 2, // tri1 + 9, 10, 11, // tri2 + 12, 13, 0 // tri3 +), +gsSPNTriangles_5b( + 13, 9, 11, // tri0 + 11, 10, 14, // tri1 + 14, 10, 8, // tri2 + 4, 1, 0 // tri3 +), +gsSPNTriangles_5b( + 8, 10, 7, // tri0 + 4, 8, 3, // tri1 + 0, 11, 4, // tri2 + 4, 11, 14 // tri3 +), +gsSPNTriangles_5b( + 2, 12, 0, // tri0 + 2, 1, 3, // tri1 + 14, 8, 4, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&wip_1_v[283], 19, 0), +gsSPNTrianglesInit_5b( + 30, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 7, 9, 10, // tri1 + 2, 1, 11, // tri2 + 4, 0, 2 // tri3 +), +gsSPNTriangles_5b( + 12, 13, 0, // tri0 + 11, 1, 14, // tri1 + 15, 16, 13, // tri2 + 9, 14, 16 // tri3 +), +gsSPNTriangles_5b( + 14, 1, 16, // tri0 + 8, 11, 14, // tri1 + 17, 15, 12, // tri2 + 17, 12, 18 // tri3 +), +gsSPNTriangles_5b( + 16, 1, 13, // tri0 + 10, 9, 15, // tri1 + 10, 15, 17, // tri2 + 18, 12, 4 // tri3 +), +gsSPNTriangles_5b( + 18, 4, 3, // tri0 + 13, 1, 0, // tri1 + 5, 2, 11, // tri2 + 11, 8, 5 // tri3 +), +gsSPNTriangles_5b( + 14, 9, 8, // tri0 + 16, 15, 9, // tri1 + 13, 12, 15, // tri2 + 0, 4, 12 // tri3 +), +gsSPNTriangles_5b( + 2, 5, 4, // tri0 + 6, 5, 8, // tri1 + 6, 8, 7, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_wip_model[] = { +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&wip_1_v[327], 4, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&wip_1_v[331], 14, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 0, 4, // tri0 + 0, 6, 5, // tri1 + 2, 8, 7 // tri2 +), +gsSPNTriangles_5b( + 0, 1, 9, // tri0 + 1, 2, 10, // tri1 + 2, 3, 11, // tri2 + 1, 12, 13 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 14, 15, 16, // tri0 + 17, 15, 14, // tri1 + 17, 16, 15 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_wip_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&wip_1_v[345], 7, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 3 // tri2 +), +gsSPNTriangles_5b( + 5, 0, 6, // tri0 + 2, 1, 4, // tri1 + 2, 6, 0, // tri2 + 3, 2, 4 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_wip_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&wip_1_v[302], 4, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&wip_1_v[306], 14, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 3, 4, // tri0 + 0, 6, 5, // tri1 + 2, 8, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 9, // tri0 + 2, 1, 10, // tri1 + 3, 2, 11, // tri2 + 1, 12, 13 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 14, 15, 16, // tri0 + 16, 15, 17, // tri1 + 15, 14, 17 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_wip_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&wip_1_v[320], 7, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 3 // tri2 +), +gsSPNTriangles_5b( + 6, 2, 3, // tri0 + 4, 1, 0, // tri1 + 2, 6, 0, // tri2 + 4, 0, 5 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx base_wip_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&wip_1_v[352], 16, 0), +gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 4, 6, 7, // tri0 + 4, 8, 9, // tri1 + 10, 11, 12, // tri2 + 4, 9, 5 // tri3 +), +gsSPNTriangles_5b( + 9, 8, 13, // tri0 + 11, 6, 0, // tri1 + 11, 0, 12, // tri2 + 1, 5, 9 // tri3 +), +gsSPNTriangles_5b( + 3, 1, 9, // tri0 + 9, 13, 3, // tri1 + 0, 6, 5, // tri2 + 0, 5, 1 // tri3 +), +gsSPNTriangles_5b( + 8, 4, 14, // tri0 + 14, 4, 7, // tri1 + 7, 15, 14, // tri2 + 11, 10, 15 // tri3 +), +gsSPNTriangles_5b( + 11, 15, 7, // tri0 + 11, 7, 6, // tri1 + 2, 12, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_wip_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,800,0 }, + /* joint 1 */ { base_wip_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_wip_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_wip_model, 1, cKF_JOINT_FLAG_DISP_OPA, 355,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 343,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_wip_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_wip_model, 1, cKF_JOINT_FLAG_DISP_OPA, 355,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 343,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 300,0,-500 }, + /* joint 11 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_wip_model, 3, cKF_JOINT_FLAG_DISP_OPA, 497,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 400,-500,0 }, + /* joint 15 */ { Larm1_wip_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_wip_model, 0, cKF_JOINT_FLAG_DISP_OPA, 399,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 400,500,0 }, + /* joint 18 */ { Rarm1_wip_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_wip_model, 1, cKF_JOINT_FLAG_DISP_OPA, 401,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 398,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 803,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 600,0,1150 }, + /* joint 23 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_wip_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1582,0,11 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_wip_1 = { 26, 11, cKF_je_r_wip_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/wls_1.c b/src/data/npc/model/mdl/wls_1.c new file mode 100644 index 00000000..51a3024a --- /dev/null +++ b/src/data/npc/model/mdl/wls_1.c @@ -0,0 +1,862 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx wls_1_v[] = { +#include "assets/npc/mdl/wls_1_v.inc" +}; + +static Gfx head_wls_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&wls_1_v[10], 10, 0), +gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&wls_1_v[20], 20, 10), +gsSPNTrianglesInit_5b( + 13, // tri count + 1, 10, 11, // tri0 + 4, 12, 6, // tri1 + 8, 13, 14 // tri2 +), +gsSPNTriangles_5b( + 9, 15, 16, // tri0 + 7, 17, 5, // tri1 + 0, 18, 19, // tri2 + 0, 1, 20 // tri3 +), +gsSPNTriangles_5b( + 0, 21, 22, // tri0 + 4, 23, 24, // tri1 + 5, 25, 3, // tri2 + 3, 26, 4 // tri3 +), +gsSPNTriangles_5b( + 5, 27, 28, // tri0 + 1, 8, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&wls_1_v[40], 11, 10), +gsSPNTrianglesInit_5b( + 3, // tri count + 9, 0, 10, // tri0 + 7, 9, 11, // tri1 + 8, 6, 12 // tri2 +), +gsSPNTrianglesInit_5b( + 4, // tri count + 2, 14, 13, // tri0 + 2, 16, 15, // tri1 + 2, 18, 17 // tri2 +), +gsSPNTriangles_5b( + 2, 20, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&wls_1_v[51], 31, 0), +gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 2, 4 // tri2 +), +gsSPNTriangles_5b( + 5, 4, 2, // tri0 + 6, 0, 3, // tri1 + 6, 3, 7, // tri2 + 7, 3, 4 // tri3 +), +gsSPNTriangles_5b( + 1, 8, 5, // tri0 + 1, 5, 2, // tri1 + 8, 9, 10, // tri2 + 8, 10, 5 // tri3 +), +gsSPNTriangles_5b( + 5, 10, 4, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 12, // tri count + 11, 12, 13, // tri0 + 11, 13, 14, // tri1 + 15, 12, 11 // tri2 +), +gsSPNTriangles_5b( + 12, 15, 16, // tri0 + 17, 11, 14, // tri1 + 17, 14, 18, // tri2 + 15, 11, 17 // tri3 +), +gsSPNTriangles_5b( + 12, 16, 19, // tri0 + 12, 19, 13, // tri1 + 16, 20, 21, // tri2 + 16, 21, 19 // tri3 +), +gsSPNTriangles_5b( + 15, 20, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 9, // tri count + 22, 23, 24, // tri0 + 25, 26, 27, // tri1 + 28, 29, 26 // tri2 +), +gsSPNTriangles_5b( + 28, 26, 25, // tri0 + 26, 29, 22, // tri1 + 24, 27, 26, // tri2 + 24, 26, 22 // tri3 +), +gsSPNTriangles_5b( + 23, 22, 30, // tri0 + 30, 22, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&wls_1_v[82], 21, 0), +gsSPNTrianglesInit_5b( + 30, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 5, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 6, 11, 1, // tri1 + 0, 12, 7, // tri2 + 13, 14, 5 // tri3 +), +gsSPNTriangles_5b( + 5, 14, 6, // tri0 + 10, 15, 16, // tri1 + 9, 15, 10, // tri2 + 3, 8, 4 // tri3 +), +gsSPNTriangles_5b( + 0, 7, 1, // tri0 + 15, 9, 17, // tri1 + 11, 6, 14, // tri2 + 9, 8, 3 // tri3 +), +gsSPNTriangles_5b( + 2, 1, 11, // tri0 + 16, 18, 10, // tri1 + 13, 12, 0, // tri2 + 5, 12, 13 // tri3 +), +gsSPNTriangles_5b( + 2, 19, 0, // tri0 + 1, 7, 6, // tri1 + 10, 18, 8, // tri2 + 8, 18, 4 // tri3 +), +gsSPNTriangles_5b( + 7, 12, 5, // tri0 + 4, 18, 16, // tri1 + 4, 19, 2, // tri2 + 17, 3, 2 // tri3 +), +gsSPNTriangles_5b( + 3, 17, 9, // tri0 + 20, 2, 11, // tri1 + 17, 2, 20, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&wls_1_v[103], 11, 0), +gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 3, 6 // tri2 +), +gsSPNTriangles_5b( + 7, 5, 4, // tri0 + 0, 6, 1, // tri1 + 8, 4, 3, // tri2 + 9, 7, 4 // tri3 +), +gsSPNTriangles_5b( + 8, 3, 0, // tri0 + 6, 3, 10, // tri1 + 10, 3, 5, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx mouth_wls_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&wls_1_v[0], 10, 0), +gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 1, 0, 3, // tri1 + 1, 3, 4 // tri2 +), +gsSPNTriangles_5b( + 5, 3, 6, // tri0 + 1, 7, 2, // tri1 + 2, 7, 8, // tri2 + 2, 8, 6 // tri3 +), +gsSPNTriangles_5b( + 9, 5, 6, // tri0 + 7, 1, 4, // tri1 + 7, 4, 8, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_wls_model[] = { +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&wls_1_v[149], 5, 0), +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&wls_1_v[154], 24, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 3, 0, 5, // tri0 + 3, 6, 7, // tri1 + 1, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 1, 10, 0, // tri0 + 4, 3, 11, // tri1 + 2, 4, 12, // tri2 + 4, 13, 14 // tri3 +), +gsSPNTriangles_5b( + 4, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 17, 19, 20, // tri1 + 0, 0, 0 // tri2 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 21, 22, 23, // tri0 + 21, 23, 24, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 2, // tri count + 25, 26, 27, // tri0 + 25, 27, 28, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&wls_1_v[178], 16, 0), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 +), +gsSPNTriangles_5b( + 12, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_wls_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&wls_1_v[194], 3, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&wls_1_v[197], 11, 3), +gsSPNTrianglesInit_5b( + 7, // tri count + 2, 0, 3, // tri0 + 0, 4, 5, // tri1 + 0, 1, 6 // tri2 +), +gsSPNTriangles_5b( + 1, 7, 8, // tri0 + 1, 2, 9, // tri1 + 2, 10, 11, // tri2 + 0, 12, 13 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_wls_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&wls_1_v[114], 5, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&wls_1_v[119], 16, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 3, 5, // tri0 + 3, 6, 7, // tri1 + 0, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 0, 10, 1, // tri0 + 3, 4, 11, // tri1 + 4, 2, 12, // tri2 + 4, 13, 14 // tri3 +), +gsSPNTriangles_5b( + 4, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 17, 19, 20, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_wls_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&wls_1_v[135], 3, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&wls_1_v[138], 11, 3), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 3, 4, // tri0 + 0, 5, 6, // tri1 + 1, 0, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 2, 1, 10, // tri1 + 2, 11, 12, // tri2 + 0, 2, 13 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_wls_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&wls_1_v[208], 7, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&wls_1_v[215], 21, 7), +gsSPNTrianglesInit_5b( + 14, // tri count + 6, 4, 7, // tri0 + 0, 8, 9, // tri1 + 4, 10, 11 // tri2 +), +gsSPNTriangles_5b( + 2, 6, 12, // tri0 + 6, 14, 13, // tri1 + 3, 5, 15, // tri2 + 0, 16, 17 // tri3 +), +gsSPNTriangles_5b( + 4, 18, 19, // tri0 + 3, 20, 21, // tri1 + 0, 2, 22, // tri2 + 4, 1, 23 // tri3 +), +gsSPNTriangles_5b( + 1, 3, 24, // tri0 + 3, 25, 26, // tri1 + 5, 0, 27, // tri2 + 0, 0, 0 // tri3 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&wls_1_v[236], 26, 0), +gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPNTrianglesInit_5b( + 24, // tri count + 4, 5, 6, // tri0 + 4, 6, 7, // tri1 + 8, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 8, 10, 11, // tri0 + 12, 13, 10, // tri1 + 14, 15, 16, // tri2 + 14, 16, 17 // tri3 +), +gsSPNTriangles_5b( + 18, 17, 16, // tri0 + 18, 19, 9, // tri1 + 11, 10, 20, // tri2 + 5, 21, 22 // tri3 +), +gsSPNTriangles_5b( + 5, 22, 23, // tri0 + 21, 5, 4, // tri1 + 6, 15, 14, // tri2 + 9, 19, 13 // tri3 +), +gsSPNTriangles_5b( + 7, 6, 14, // tri0 + 6, 24, 23, // tri1 + 18, 9, 8, // tri2 + 13, 25, 20 // tri3 +), +gsSPNTriangles_5b( + 13, 20, 10, // tri0 + 5, 23, 24, // tri1 + 16, 19, 18, // tri2 + 23, 15, 6 // tri3 +), +gsSPNTriangles_5b( + 13, 12, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&wls_1_v[262], 31, 0), +gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 4, 3, 5 // tri2 +), +gsSPNTriangles_5b( + 1, 5, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0004C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 4, // tri count + 7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 13, 8, 7 // tri2 +), +gsSPNTriangles_5b( + 9, 8, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 2, // tri count + 14, 15, 16, // tri0 + 16, 15, 17, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 12, // tri count + 18, 19, 20, // tri0 + 21, 22, 19, // tri1 + 23, 24, 22 // tri2 +), +gsSPNTriangles_5b( + 25, 26, 24, // tri0 + 20, 19, 22, // tri1 + 20, 22, 27, // tri2 + 28, 21, 18 // tri3 +), +gsSPNTriangles_5b( + 19, 18, 21, // tri0 + 22, 21, 23, // tri1 + 24, 23, 25, // tri2 + 26, 25, 29 // tri3 +), +gsSPNTriangles_5b( + 18, 30, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&wls_1_v[293], 29, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 +), +gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 2, 1, // tri1 + 8, 1, 9, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000580, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 22, // tri count + 10, 11, 12, // tri0 + 10, 12, 13, // tri1 + 13, 12, 14 // tri2 +), +gsSPNTriangles_5b( + 14, 12, 15, // tri0 + 16, 11, 10, // tri1 + 17, 18, 19, // tri2 + 20, 12, 21 // tri3 +), +gsSPNTriangles_5b( + 22, 21, 11, // tri0 + 21, 12, 11, // tri1 + 19, 18, 23, // tri2 + 21, 24, 20 // tri3 +), +gsSPNTriangles_5b( + 25, 24, 26, // tri0 + 26, 23, 25, // tri1 + 21, 22, 19, // tri2 + 11, 27, 22 // tri3 +), +gsSPNTriangles_5b( + 25, 20, 24, // tri0 + 22, 27, 17, // tri1 + 19, 26, 24, // tri2 + 19, 24, 21 // tri3 +), +gsSPNTriangles_5b( + 23, 26, 19, // tri0 + 19, 22, 17, // tri1 + 14, 15, 28, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot3_wls_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&wls_1_v[364], 3, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&wls_1_v[367], 18, 3), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 3, 4, // tri0 + 2, 1, 5, // tri1 + 2, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 0, 2, 8, // tri0 + 1, 0, 9, // tri1 + 0, 10, 11, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 5, // tri count + 12, 13, 14, // tri0 + 15, 16, 12, // tri1 + 12, 14, 15 // tri2 +), +gsSPNTriangles_5b( + 17, 18, 19, // tri0 + 17, 19, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_wls_model[] = { +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&wls_1_v[385], 4, 0), +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&wls_1_v[389], 10, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 2, 4, 5, // tri0 + 2, 3, 6, // tri1 + 0, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 1, 2, 9, // tri0 + 3, 10, 11, // tri1 + 3, 0, 12, // tri2 + 0, 1, 13 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_wls_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&wls_1_v[399], 7, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 3 // tri2 +), +gsSPNTriangles_5b( + 5, 0, 6, // tri0 + 2, 1, 4, // tri1 + 2, 6, 0, // tri2 + 3, 2, 4 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot3_wls_model[] = { +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&wls_1_v[322], 3, 0), +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&wls_1_v[325], 18, 3), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 3, 4, // tri0 + 1, 5, 6, // tri1 + 1, 2, 7 // tri2 +), +gsSPNTriangles_5b( + 2, 0, 8, // tri0 + 0, 1, 9, // tri1 + 0, 10, 11, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 5, // tri count + 12, 13, 14, // tri0 + 14, 15, 16, // tri1 + 16, 12, 14 // tri2 +), +gsSPNTriangles_5b( + 17, 18, 19, // tri0 + 17, 19, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_wls_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&wls_1_v[343], 4, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&wls_1_v[347], 10, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 2, 4, 5, // tri0 + 3, 2, 6, // tri1 + 0, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 1, 9, // tri0 + 3, 10, 11, // tri1 + 0, 3, 12, // tri2 + 1, 0, 13 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_wls_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&wls_1_v[357], 7, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 3 // tri2 +), +gsSPNTriangles_5b( + 6, 2, 3, // tri0 + 4, 1, 0, // tri1 + 2, 6, 0, // tri2 + 4, 0, 5 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx base_wls_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&wls_1_v[406], 15, 0), +gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 1, 0, 3, // tri1 + 1, 3, 4 // tri2 +), +gsSPNTriangles_5b( + 5, 0, 2, // tri0 + 6, 3, 0, // tri1 + 6, 0, 5, // tri2 + 5, 2, 7 // tri3 +), +gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 10, 11, 12, // tri1 + 10, 6, 13, // tri2 + 9, 7, 2 // tri3 +), +gsSPNTriangles_5b( + 8, 1, 4, // tri0 + 9, 2, 1, // tri1 + 7, 14, 5, // tri2 + 6, 5, 14 // tri3 +), +gsSPNTriangles_5b( + 10, 4, 3, // tri0 + 10, 3, 6, // tri1 + 12, 4, 10, // tri2 + 13, 11, 10 // tri3 +), +gsSPNTriangles_5b( + 4, 12, 8, // tri0 + 14, 13, 6, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_wls_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_wls_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_wls_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_wls_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { Lfoot3_wls_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_wls_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_wls_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { Rfoot3_wls_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,-700 }, + /* joint 11 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_wls_model, 3, cKF_JOINT_FLAG_DISP_OPA, 600,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 1300,-1100,0 }, + /* joint 15 */ { Larm1_wls_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_wls_model, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 1300,1100,0 }, + /* joint 18 */ { Rarm1_wls_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_wls_model, 1, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 1400,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 100,0,700 }, + /* joint 23 */ { mouth_wls_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_wls_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 800,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_wls_1 = { 26, 14, cKF_je_r_wls_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/wol_1.c b/src/data/npc/model/mdl/wol_1.c new file mode 100644 index 00000000..155a9297 --- /dev/null +++ b/src/data/npc/model/mdl/wol_1.c @@ -0,0 +1,688 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx wol_1_v[] = { +#include "assets/npc/mdl/wol_1_v.inc" +}; + +static Gfx head_wol_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&wol_1_v[24], 32, 0), +gsSPNTrianglesInit_5b( + 31, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 9, 1, 10, // tri0 + 11, 12, 8, // tri1 + 13, 14, 15, // tri2 + 8, 13, 16 // tri3 +), +gsSPNTriangles_5b( + 8, 16, 6, // tri0 + 8, 12, 17, // tri1 + 5, 18, 7, // tri2 + 7, 3, 5 // tri3 +), +gsSPNTriangles_5b( + 15, 19, 20, // tri0 + 15, 20, 13, // tri1 + 21, 22, 23, // tri2 + 24, 2, 25 // tri3 +), +gsSPNTriangles_5b( + 22, 21, 10, // tri0 + 22, 10, 26, // tri1 + 26, 0, 27, // tri2 + 1, 0, 10 // tri3 +), +gsSPNTriangles_5b( + 27, 0, 24, // tri0 + 23, 9, 21, // tri1 + 25, 27, 24, // tri2 + 11, 8, 7 // tri3 +), +gsSPNTriangles_5b( + 13, 8, 17, // tri0 + 7, 18, 11, // tri1 + 17, 14, 13, // tri2 + 26, 28, 22 // tri3 +), +gsSPNTriangles_5b( + 27, 28, 26, // tri0 + 11, 18, 29, // tri1 + 5, 4, 30, // tri2 + 17, 31, 14 // tri3 +), +gsSPVertex(&wol_1_v[56], 25, 0), +gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 4 // tri2 +), +gsSPNTriangles_5b( + 8, 9, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 15, // tri count + 10, 11, 12, // tri0 + 13, 10, 14, // tri1 + 15, 16, 17 // tri2 +), +gsSPNTriangles_5b( + 12, 14, 10, // tri0 + 18, 19, 16, // tri1 + 14, 20, 13, // tri2 + 10, 13, 21 // tri3 +), +gsSPNTriangles_5b( + 21, 17, 16, // tri0 + 16, 10, 21, // tri1 + 17, 22, 15, // tri2 + 16, 19, 11 // tri3 +), +gsSPNTriangles_5b( + 16, 11, 10, // tri0 + 16, 15, 18, // tri1 + 23, 22, 17, // tri2 + 24, 13, 20 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&wol_1_v[81], 29, 0), +gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 1, 5, 2 // tri2 +), +gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 8, 4, 3, // tri1 + 5, 1, 4, // tri2 + 4, 7, 5 // tri3 +), +gsSPNTriangles_5b( + 4, 8, 7, // tri0 + 9, 8, 3, // tri1 + 6, 8, 9, // tri2 + 10, 1, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 2, // tri count + 11, 12, 13, // tri0 + 11, 14, 12, // tri1 + 0, 0, 0 // tri2 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 8, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 16, 21, 22 // tri2 +), +gsSPNTriangles_5b( + 23, 24, 20, // tri0 + 25, 24, 26, // tri1 + 17, 27, 15, // tri2 + 28, 27, 22 // tri3 +), +gsSPNTriangles_5b( + 26, 18, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx mouth_wol_model[] = { +gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&wol_1_v[0], 10, 0), +gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&wol_1_v[10], 14, 10), +gsSPNTrianglesInit_5b( + 10, // tri count + 4, 0, 10, // tri0 + 6, 2, 3, // tri1 + 2, 6, 11 // tri2 +), +gsSPNTriangles_5b( + 8, 4, 12, // tri0 + 5, 4, 8, // tri1 + 2, 13, 14, // tri2 + 4, 15, 16 // tri3 +), +gsSPNTriangles_5b( + 1, 2, 17, // tri0 + 9, 18, 19, // tri1 + 9, 20, 7, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 21, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_wol_model[] = { +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&wol_1_v[146], 5, 0), +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&wol_1_v[151], 16, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 0, 1, 11, // tri0 + 2, 4, 12, // tri1 + 0, 13, 14, // tri2 + 3, 0, 15 // tri3 +), +gsSPNTriangles_5b( + 4, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 20, 19, 18, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_wol_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&wol_1_v[167], 4, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&wol_1_v[171], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 2, 0, 8 // tri2 +), +gsSPNTriangles_5b( + 3, 2, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 1, 3, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_wol_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&wol_1_v[110], 5, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&wol_1_v[115], 16, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 +), +gsSPNTriangles_5b( + 3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_wol_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&wol_1_v[131], 4, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&wol_1_v[135], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_wol_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&wol_1_v[182], 7, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&wol_1_v[189], 20, 7), +gsSPNTrianglesInit_5b( + 13, // tri count + 0, 2, 7, // tri0 + 6, 8, 9, // tri1 + 0, 10, 11 // tri2 +), +gsSPNTriangles_5b( + 1, 12, 5, // tri0 + 1, 13, 14, // tri1 + 2, 16, 15, // tri2 + 5, 17, 18 // tri3 +), +gsSPNTriangles_5b( + 5, 19, 20, // tri0 + 2, 21, 22, // tri1 + 6, 0, 23, // tri2 + 1, 6, 24 // tri3 +), +gsSPNTriangles_5b( + 3, 5, 25, // tri0 + 4, 26, 2, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&wol_1_v[209], 10, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 5, 4, 8, // tri0 + 2, 6, 0, // tri1 + 1, 9, 2, // tri2 + 7, 4, 3 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail1_wol_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&wol_1_v[255], 9, 0), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 4, 5 // tri2 +), +gsSPNTriangles_5b( + 2, 6, 3, // tri0 + 7, 3, 6, // tri1 + 8, 5, 4, // tri2 + 3, 4, 0 // tri3 +), +gsSPNTriangles_5b( + 5, 1, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail2_wol_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&wol_1_v[219], 5, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&wol_1_v[224], 12, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 3, 5, // tri0 + 4, 6, 7, // tri1 + 2, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 0, 10, 11, // tri0 + 3, 12, 13, // tri1 + 3, 4, 14, // tri2 + 4, 1, 15 // tri3 +), +gsSPNTriangles_5b( + 0, 2, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&wol_1_v[236], 19, 0), +gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 4, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 11, 10, 9, // tri2 + 12, 13, 14 // tri3 +), +gsSPNTriangles_5b( + 13, 15, 14, // tri0 + 10, 7, 5, // tri1 + 2, 15, 13, // tri2 + 10, 5, 4 // tri3 +), +gsSPNTriangles_5b( + 4, 8, 10, // tri0 + 6, 1, 0, // tri1 + 0, 4, 6, // tri2 + 2, 13, 12 // tri3 +), +gsSPNTriangles_5b( + 2, 12, 0, // tri0 + 14, 16, 17, // tri1 + 14, 17, 12, // tri2 + 16, 14, 18 // tri3 +), +gsSPNTriangles_5b( + 1, 6, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_wol_model[] = { +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&wol_1_v[304], 5, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&wol_1_v[309], 16, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 2, 3, 5, // tri0 + 0, 2, 6, // tri1 + 3, 8, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 10, 9, // tri0 + 4, 1, 11, // tri1 + 2, 12, 13, // tri2 + 3, 4, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 15, 16, 17, // tri0 + 17, 18, 19, // tri1 + 15, 20, 16 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_wol_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&wol_1_v[325], 6, 0), +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&wol_1_v[331], 13, 6), +gsSPNTrianglesInit_5b( + 9, // tri count + 0, 6, 7, // tri0 + 2, 5, 8, // tri1 + 5, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 5, 1, 11, // tri0 + 0, 3, 12, // tri1 + 4, 2, 13, // tri2 + 3, 4, 14 // tri3 +), +gsSPNTriangles_5b( + 3, 15, 16, // tri0 + 2, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_wol_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&wol_1_v[264], 5, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&wol_1_v[269], 16, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 2, 5, // tri0 + 2, 0, 6, // tri1 + 3, 8, 7 // tri2 +), +gsSPNTriangles_5b( + 1, 10, 9, // tri0 + 1, 4, 11, // tri1 + 2, 12, 13, // tri2 + 4, 3, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 15, 16, 17, // tri0 + 18, 19, 15, // tri1 + 16, 20, 17 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_wol_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&wol_1_v[285], 6, 0), +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&wol_1_v[291], 13, 6), +gsSPNTrianglesInit_5b( + 9, // tri count + 4, 6, 7, // tri0 + 3, 1, 8, // tri1 + 3, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 5, 3, 11, // tri0 + 2, 4, 12, // tri1 + 1, 0, 13, // tri2 + 0, 2, 14 // tri3 +), +gsSPNTriangles_5b( + 2, 15, 16, // tri0 + 1, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx base_wol_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&wol_1_v[344], 30, 0), +gsSPNTrianglesInit_5b( + 3, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 1, 6 // tri2 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), +gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), +gsSPNTrianglesInit_5b( + 14, // tri count + 7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 13, 14, 15 // tri2 +), +gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 9, 19, 7, // tri1 + 20, 11, 21, // tri2 + 20, 21, 17 // tri3 +), +gsSPNTriangles_5b( + 12, 15, 14, // tri0 + 11, 20, 12, // tri1 + 8, 7, 13, // tri2 + 13, 15, 8 // tri3 +), +gsSPNTriangles_5b( + 21, 18, 17, // tri0 + 14, 10, 12, // tri1 + 18, 22, 16, // tri2 + 0, 0, 0 // tri3 +), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 3, // tri count + 23, 24, 25, // tri0 + 26, 27, 28, // tri1 + 29, 24, 23 // tri2 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_wol_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_wol_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_wol_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_wol_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_wol_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_wol_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 75,0,-475 }, + /* joint 11 */ { tail1_wol_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_wol_model, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_wol_model, 3, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 600,-400,0 }, + /* joint 15 */ { Larm1_wol_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_wol_model, 0, cKF_JOINT_FLAG_DISP_OPA, 552,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 600,400,0 }, + /* joint 18 */ { Rarm1_wol_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_wol_model, 1, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 801,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 800,0,50 }, + /* joint 23 */ { mouth_wol_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_wol_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1099,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_wol_1 = { 26, 14, cKF_je_r_wol_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/xct_1.c b/src/data/npc/model/mdl/xct_1.c new file mode 100644 index 00000000..d5cf3d12 --- /dev/null +++ b/src/data/npc/model/mdl/xct_1.c @@ -0,0 +1,636 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx xct_1_v[] = { +#include "assets/npc/mdl/xct_1_v.inc" +}; + +static Gfx head_xct_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&xct_1_v[0], 6, 0), +gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 32, 24, 15, GX_MIRROR, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 252, 92), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&xct_1_v[6], 13, 6), +gsSPNTrianglesInit_5b( + 9, // tri count + 1, 0, 6, // tri0 + 1, 7, 8, // tri1 + 3, 1, 9 // tri2 +), +gsSPNTriangles_5b( + 4, 11, 10, // tri0 + 5, 4, 12, // tri1 + 5, 13, 0, // tri2 + 0, 15, 14 // tri3 +), +gsSPNTriangles_5b( + 5, 16, 17, // tri0 + 4, 2, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 124), +gsSPVertex(&xct_1_v[19], 22, 0), +gsSPNTrianglesInit_5b( + 29, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 2, 1, 4 // tri2 +), +gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 2, 4, 8, // tri1 + 3, 2, 9, // tri2 + 9, 8, 10 // tri3 +), +gsSPNTriangles_5b( + 2, 8, 9, // tri0 + 4, 1, 11, // tri1 + 4, 11, 12, // tri2 + 13, 8, 4 // tri3 +), +gsSPNTriangles_5b( + 4, 12, 13, // tri0 + 5, 10, 14, // tri1 + 8, 14, 10, // tri2 + 10, 7, 9 // tri3 +), +gsSPNTriangles_5b( + 7, 10, 5, // tri0 + 9, 15, 16, // tri1 + 7, 6, 15, // tri2 + 16, 3, 9 // tri3 +), +gsSPNTriangles_5b( + 17, 0, 18, // tri0 + 19, 3, 16, // tri1 + 18, 3, 19, // tri2 + 18, 0, 3 // tri3 +), +gsSPNTriangles_5b( + 20, 0, 17, // tri0 + 1, 21, 11, // tri1 + 20, 1, 0, // tri2 + 20, 21, 1 // tri3 +), +gsSPNTriangles_5b( + 8, 13, 14, // tri0 + 7, 15, 9, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 252, 60), +gsSPVertex(&xct_1_v[41], 21, 0), +gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 5, 2, 4 // tri2 +), +gsSPNTriangles_5b( + 2, 1, 3, // tri0 + 6, 7, 5, // tri1 + 0, 8, 1, // tri2 + 6, 5, 4 // tri3 +), +gsSPNTriangles_5b( + 6, 9, 7, // tri0 + 8, 10, 11, // tri1 + 8, 0, 10, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 32, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 252, 60), +gsSPNTrianglesInit_5b( + 7, // tri count + 12, 13, 14, // tri0 + 15, 13, 12, // tri1 + 13, 16, 14 // tri2 +), +gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 13, 17, 16, // tri1 + 19, 18, 17, // tri2 + 17, 20, 19 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 252, 60), +gsSPVertex(&xct_1_v[62], 15, 0), +gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 4, 6 // tri2 +), +gsSPNTriangles_5b( + 4, 3, 2, // tri0 + 4, 2, 7, // tri1 + 8, 3, 5, // tri2 + 4, 9, 6 // tri3 +), +gsSPNTriangles_5b( + 4, 7, 9, // tri0 + 6, 10, 5, // tri1 + 7, 2, 1, // tri2 + 10, 11, 5 // tri3 +), +gsSPNTriangles_5b( + 10, 12, 11, // tri0 + 0, 13, 1, // tri1 + 5, 11, 8, // tri2 + 14, 0, 2 // tri3 +), +gsSPNTriangles_5b( + 2, 3, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_xct_model[] = { +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&xct_1_v[113], 6, 0), +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&xct_1_v[119], 13, 6), +gsSPNTrianglesInit_5b( + 9, // tri count + 3, 6, 4, // tri0 + 1, 5, 7, // tri1 + 2, 1, 8 // tri2 +), +gsSPNTriangles_5b( + 1, 10, 9, // tri0 + 2, 0, 1, // tri1 + 2, 11, 12, // tri2 + 3, 13, 14 // tri3 +), +gsSPNTriangles_5b( + 2, 3, 0, // tri0 + 3, 2, 15, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 1, // tri count + 16, 17, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_xct_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&xct_1_v[132], 4, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&xct_1_v[136], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 2, 4, // tri0 + 0, 5, 6, // tri1 + 1, 8, 7 // tri2 +), +gsSPNTriangles_5b( + 2, 9, 10, // tri0 + 3, 1, 11, // tri1 + 1, 0, 12, // tri2 + 1, 13, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_xct_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&xct_1_v[77], 5, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&xct_1_v[82], 16, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 +), +gsSPNTriangles_5b( + 3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_xct_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&xct_1_v[98], 4, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&xct_1_v[102], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 4, 5, // tri0 + 2, 6, 7, // tri1 + 2, 1, 8 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 9, // tri0 + 1, 11, 10, // tri1 + 0, 13, 12, // tri2 + 0, 3, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_xct_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&xct_1_v[147], 9, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 32, 24, 15, GX_MIRROR, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 252, 92), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&xct_1_v[156], 22, 9), +gsSPNTrianglesInit_5b( + 14, // tri count + 2, 10, 9, // tri0 + 5, 11, 12, // tri1 + 6, 13, 14 // tri2 +), +gsSPNTriangles_5b( + 2, 15, 16, // tri0 + 8, 17, 18, // tri1 + 2, 19, 20, // tri2 + 7, 21, 22 // tri3 +), +gsSPNTriangles_5b( + 3, 8, 23, // tri0 + 7, 0, 24, // tri1 + 5, 3, 25, // tri2 + 8, 4, 26 // tri3 +), +gsSPNTriangles_5b( + 1, 7, 27, // tri0 + 2, 28, 4, // tri1 + 8, 29, 30, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&xct_1_v[178], 18, 9), +gsSPNTrianglesInit_5b( + 3, // tri count + 1, 9, 2, // tri0 + 7, 10, 11, // tri1 + 0, 6, 12 // tri2 +), +gsSPNTrianglesInit_5b( + 6, // tri count + 13, 14, 15, // tri0 + 16, 17, 18, // tri1 + 18, 19, 20 // tri2 +), +gsSPNTriangles_5b( + 21, 15, 22, // tri0 + 23, 24, 16, // tri1 + 25, 14, 26, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail1_xct_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&xct_1_v[220], 8, 0), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 2, 1, 5 // tri2 +), +gsSPNTriangles_5b( + 4, 6, 3, // tri0 + 5, 7, 2, // tri1 + 2, 4, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail2_xct_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&xct_1_v[196], 4, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&xct_1_v[200], 20, 4), +gsSPNTrianglesInit_5b( + 6, // tri count + 0, 4, 5, // tri0 + 1, 6, 7, // tri1 + 3, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 3, 2, 10, // tri0 + 2, 1, 11, // tri1 + 0, 3, 12, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 9, // tri count + 13, 14, 15, // tri0 + 16, 14, 17, // tri1 + 18, 17, 19 // tri2 +), +gsSPNTriangles_5b( + 17, 14, 13, // tri0 + 13, 19, 17, // tri1 + 17, 18, 20, // tri2 + 21, 15, 14 // tri3 +), +gsSPNTriangles_5b( + 15, 22, 13, // tri0 + 19, 23, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_xct_model[] = { +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&xct_1_v[262], 5, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&xct_1_v[267], 20, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 2, 6, 5, // tri0 + 0, 8, 7, // tri1 + 3, 2, 9 // tri2 +), +gsSPNTriangles_5b( + 0, 4, 10, // tri0 + 0, 11, 12, // tri1 + 1, 0, 13, // tri2 + 2, 1, 14 // tri3 +), +gsSPNTriangles_5b( + 2, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 4, // tri count + 17, 18, 19, // tri0 + 20, 21, 22, // tri1 + 18, 23, 21 // tri2 +), +gsSPNTriangles_5b( + 21, 24, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_xct_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&xct_1_v[287], 9, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 5, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 4, 6, 3, // tri0 + 4, 7, 6, // tri1 + 7, 8, 5, // tri2 + 2, 3, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_xct_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&xct_1_v[228], 5, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&xct_1_v[233], 20, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 1, 0, 5, // tri0 + 2, 7, 6, // tri1 + 2, 1, 8 // tri2 +), +gsSPNTriangles_5b( + 3, 2, 9, // tri0 + 2, 10, 11, // tri1 + 0, 13, 12, // tri2 + 0, 4, 14 // tri3 +), +gsSPNTriangles_5b( + 0, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 4, // tri count + 17, 18, 19, // tri0 + 20, 21, 18, // tri1 + 20, 22, 23 // tri2 +), +gsSPNTriangles_5b( + 18, 24, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_xct_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&xct_1_v[253], 9, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 2, 4, 3 // tri2 +), +gsSPNTriangles_5b( + 5, 6, 1, // tri0 + 4, 7, 3, // tri1 + 1, 0, 5, // tri2 + 4, 8, 7 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx base_xct_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 124, 60), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&xct_1_v[296], 19, 0), +gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 3, 2 // tri2 +), +gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 9, 6, // tri1 + 10, 11, 12, // tri2 + 10, 13, 11 // tri3 +), +gsSPNTriangles_5b( + 4, 2, 6, // tri0 + 12, 11, 14, // tri1 + 9, 7, 6, // tri2 + 15, 12, 16 // tri3 +), +gsSPNTriangles_5b( + 16, 17, 15, // tri0 + 7, 9, 17, // tri1 + 1, 6, 2, // tri2 + 5, 16, 12 // tri3 +), +gsSPNTriangles_5b( + 18, 10, 12, // tri0 + 6, 1, 8, // tri1 + 17, 16, 7, // tri2 + 12, 15, 18 // tri3 +), +gsSPNTriangles_5b( + 7, 16, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_xct_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_xct_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_xct_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_xct_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_xct_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_xct_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,-475 }, + /* joint 11 */ { tail1_xct_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_xct_model, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_xct_model, 3, cKF_JOINT_FLAG_DISP_OPA, 325,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,-450,0 }, + /* joint 15 */ { Larm1_xct_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_xct_model, 0, cKF_JOINT_FLAG_DISP_OPA, 450,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,450,0 }, + /* joint 18 */ { Rarm1_xct_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_xct_model, 1, cKF_JOINT_FLAG_DISP_OPA, 450,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 675,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,600 }, + /* joint 23 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_xct_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1200,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_xct_1 = { 26, 13, cKF_je_r_xct_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/mdl/xsq_1.c b/src/data/npc/model/mdl/xsq_1.c new file mode 100644 index 00000000..0f206f84 --- /dev/null +++ b/src/data/npc/model/mdl/xsq_1.c @@ -0,0 +1,753 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx xsq_1_v[] = { +#include "assets/npc/mdl/xsq_1_v.inc" +}; + +static Gfx head_xsq_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&xsq_1_v[0], 12, 0), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 3, 4, 5 // tri2 +), +gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 8, 9, 6, // tri1 + 10, 6, 9, // tri2 + 10, 9, 11 // tri3 +), +gsSPNTriangles_5b( + 2, 3, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&xsq_1_v[12], 25, 0), +gsSPNTrianglesInit_5b( + 32, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 2, 1, 4 // tri2 +), +gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 4, 1, 8, // tri1 + 4, 8, 9, // tri2 + 10, 4, 9 // tri3 +), +gsSPNTriangles_5b( + 11, 0, 12, // tri0 + 12, 3, 13, // tri1 + 12, 0, 3, // tri2 + 11, 8, 1 // tri3 +), +gsSPNTriangles_5b( + 1, 0, 11, // tri0 + 14, 2, 4, // tri1 + 15, 3, 2, // tri2 + 16, 15, 2 // tri3 +), +gsSPNTriangles_5b( + 10, 17, 18, // tri0 + 7, 13, 3, // tri1 + 14, 4, 10, // tri2 + 3, 15, 7 // tri3 +), +gsSPNTriangles_5b( + 19, 5, 15, // tri0 + 20, 21, 19, // tri1 + 18, 14, 10, // tri2 + 7, 15, 5 // tri3 +), +gsSPNTriangles_5b( + 14, 18, 22, // tri0 + 23, 16, 14, // tri1 + 2, 14, 16, // tri2 + 15, 16, 23 // tri3 +), +gsSPNTriangles_5b( + 22, 24, 20, // tri0 + 14, 22, 23, // tri1 + 23, 19, 15, // tri2 + 19, 23, 20 // tri3 +), +gsSPNTriangles_5b( + 20, 23, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&xsq_1_v[37], 20, 0), +gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 8, 9, 3, // tri0 + 10, 8, 3, // tri1 + 11, 0, 2, // tri2 + 12, 13, 11 // tri3 +), +gsSPNTriangles_5b( + 10, 13, 12, // tri0 + 7, 14, 15, // tri1 + 6, 14, 7, // tri2 + 10, 5, 16 // tri3 +), +gsSPNTriangles_5b( + 2, 7, 11, // tri0 + 17, 0, 11, // tri1 + 9, 8, 18, // tri2 + 3, 5, 10 // tri3 +), +gsSPNTriangles_5b( + 12, 8, 10, // tri0 + 16, 19, 13, // tri1 + 13, 10, 16, // tri2 + 11, 7, 12 // tri3 +), +gsSPNTriangles_5b( + 13, 17, 11, // tri0 + 8, 12, 15, // tri1 + 15, 12, 7, // tri2 + 15, 18, 8 // tri3 +), +gsSPNTriangles_5b( + 13, 19, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&xsq_1_v[57], 14, 0), +gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 +), +gsSPNTriangles_5b( + 1, 7, 2, // tri0 + 2, 7, 8, // tri1 + 7, 1, 5, // tri2 + 7, 5, 9 // tri3 +), +gsSPNTriangles_5b( + 7, 10, 8, // tri0 + 7, 9, 10, // tri1 + 8, 11, 2, // tri2 + 9, 5, 4 // tri3 +), +gsSPNTriangles_5b( + 11, 12, 2, // tri0 + 11, 13, 12, // tri1 + 0, 3, 5, // tri2 + 5, 1, 0 // tri3 +), +gsSPNTriangles_5b( + 2, 12, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPVertex(&xsq_1_v[71], 20, 0), +gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 +), +gsSPNTriangles_5b( + 4, 3, 5, // tri0 + 6, 7, 8, // tri1 + 0, 4, 9, // tri2 + 10, 8, 11 // tri3 +), +gsSPNTriangles_5b( + 4, 5, 12, // tri0 + 4, 12, 13, // tri1 + 14, 15, 16, // tri2 + 14, 16, 17 // tri3 +), +gsSPNTriangles_5b( + 10, 14, 17, // tri0 + 10, 17, 6, // tri1 + 9, 1, 0, // tri2 + 6, 8, 10 // tri3 +), +gsSPNTriangles_5b( + 18, 9, 4, // tri0 + 14, 11, 19, // tri1 + 11, 14, 10, // tri2 + 19, 15, 14 // tri3 +), +gsSPNTriangles_5b( + 4, 13, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm2_xsq_model[] = { +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&xsq_1_v[127], 5, 0), +gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&xsq_1_v[132], 16, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 0, 1, 11, // tri0 + 2, 4, 12, // tri1 + 0, 13, 14, // tri2 + 3, 0, 15 // tri3 +), +gsSPNTriangles_5b( + 4, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 20, 19, 18, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rarm1_xsq_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&xsq_1_v[148], 4, 0), +gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&xsq_1_v[152], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 2, 0, 8 // tri2 +), +gsSPNTriangles_5b( + 3, 2, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 1, 3, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm2_xsq_model[] = { +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&xsq_1_v[91], 5, 0), +gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&xsq_1_v[96], 16, 5), +gsSPNTrianglesInit_5b( + 8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 +), +gsSPNTriangles_5b( + 3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPNTrianglesInit_5b( + 2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Larm1_xsq_model[] = { +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&xsq_1_v[112], 4, 0), +gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&xsq_1_v[116], 11, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx chest_xsq_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&xsq_1_v[163], 7, 0), +gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&xsq_1_v[170], 20, 7), +gsSPNTrianglesInit_5b( + 13, // tri count + 3, 1, 7, // tri0 + 6, 8, 9, // tri1 + 3, 10, 11 // tri2 +), +gsSPNTriangles_5b( + 2, 12, 0, // tri0 + 2, 13, 14, // tri1 + 1, 16, 15, // tri2 + 0, 17, 18 // tri3 +), +gsSPNTriangles_5b( + 0, 19, 20, // tri0 + 1, 21, 22, // tri1 + 6, 3, 23, // tri2 + 2, 6, 24 // tri3 +), +gsSPNTriangles_5b( + 4, 0, 25, // tri0 + 5, 26, 1, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPVertex(&xsq_1_v[190], 9, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 0, 5, 6 // tri2 +), +gsSPNTriangles_5b( + 4, 3, 7, // tri0 + 2, 5, 0, // tri1 + 1, 8, 2, // tri2 + 6, 3, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail1_xsq_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&xsq_1_v[242], 13, 0), +gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 3, 5 // tri2 +), +gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 8, 9, 6, // tri1 + 10, 9, 11, // tri2 + 6, 3, 4 // tri3 +), +gsSPNTriangles_5b( + 4, 7, 6, // tri0 + 9, 2, 6, // tri1 + 5, 3, 10, // tri2 + 2, 9, 0 // tri3 +), +gsSPNTriangles_5b( + 0, 10, 3, // tri0 + 9, 10, 0, // tri1 + 11, 9, 8, // tri2 + 11, 12, 10 // tri3 +), +gsSPNTriangles_5b( + 10, 12, 5, // tri0 + 6, 1, 3, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx tail2_xsq_model[] = { +gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&xsq_1_v[199], 6, 0), +gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&xsq_1_v[205], 16, 6), +gsSPNTrianglesInit_5b( + 11, // tri count + 3, 6, 7, // tri0 + 5, 1, 8, // tri1 + 5, 9, 10 // tri2 +), +gsSPNTriangles_5b( + 2, 0, 11, // tri0 + 0, 3, 12, // tri1 + 0, 13, 14, // tri2 + 2, 15, 16 // tri3 +), +gsSPNTriangles_5b( + 2, 17, 1, // tri0 + 4, 18, 3, // tri1 + 4, 5, 19, // tri2 + 5, 20, 21 // tri3 +), +gsSPVertex(&xsq_1_v[221], 21, 0), +gsSPNTrianglesInit_5b( + 35, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 0, 4, 5 // tri2 +), +gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 9, 10, 11, // tri1 + 9, 11, 5, // tri2 + 6, 12, 7 // tri3 +), +gsSPNTriangles_5b( + 13, 10, 14, // tri0 + 9, 7, 12, // tri1 + 5, 4, 7, // tri2 + 5, 7, 9 // tri3 +), +gsSPNTriangles_5b( + 8, 7, 4, // tri0 + 13, 15, 16, // tri1 + 17, 18, 19, // tri2 + 17, 19, 15 // tri3 +), +gsSPNTriangles_5b( + 13, 17, 15, // tri0 + 19, 18, 8, // tri1 + 11, 10, 13, // tri2 + 20, 2, 16 // tri3 +), +gsSPNTriangles_5b( + 11, 13, 1, // tri0 + 10, 12, 14, // tri1 + 12, 10, 9, // tri2 + 14, 17, 13 // tri3 +), +gsSPNTriangles_5b( + 8, 18, 6, // tri0 + 19, 20, 16, // tri1 + 19, 16, 15, // tri2 + 20, 19, 8 // tri3 +), +gsSPNTriangles_5b( + 2, 3, 0, // tri0 + 3, 8, 4, // tri1 + 5, 11, 1, // tri2 + 5, 1, 0 // tri3 +), +gsSPNTriangles_5b( + 1, 13, 16, // tri0 + 20, 8, 3, // tri1 + 1, 16, 2, // tri2 + 2, 20, 3 // tri3 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_xsq_model[] = { +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&xsq_1_v[305], 5, 0), +gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&xsq_1_v[310], 17, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 4, 0, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 1, 2, 10, // tri0 + 2, 3, 11, // tri1 + 3, 4, 12, // tri2 + 2, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_xsq_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&xsq_1_v[327], 4, 0), +gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&xsq_1_v[331], 22, 4), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 3, 4, // tri0 + 0, 5, 1, // tri1 + 1, 6, 7 // tri2 +), +gsSPNTriangles_5b( + 3, 2, 8, // tri0 + 2, 9, 10, // tri1 + 2, 1, 11, // tri2 + 0, 13, 12 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 14, 15, 16, // tri0 + 14, 16, 17, // tri1 + 17, 18, 14 // tri2 +), +gsSPNTriangles_5b( + 19, 20, 21, // tri0 + 21, 20, 18, // tri1 + 21, 22, 19, // tri2 + 17, 21, 18 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsSPNTrianglesInit_5b( + 1, // tri count + 23, 24, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_xsq_model[] = { +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&xsq_1_v[255], 5, 0), +gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&xsq_1_v[260], 17, 5), +gsSPNTrianglesInit_5b( + 7, // tri count + 0, 4, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 +), +gsSPNTriangles_5b( + 2, 1, 10, // tri0 + 3, 2, 11, // tri1 + 4, 3, 12, // tri2 + 2, 13, 14 // tri3 +), +gsSPNTrianglesInit_5b( + 3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_xsq_model[] = { +gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&xsq_1_v[277], 6, 0), +gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPVertex(&xsq_1_v[283], 22, 6), +gsSPNTrianglesInit_5b( + 7, // tri count + 4, 0, 6, // tri0 + 1, 7, 0, // tri1 + 1, 8, 9 // tri2 +), +gsSPNTriangles_5b( + 2, 5, 10, // tri0 + 2, 11, 12, // tri1 + 1, 3, 13, // tri2 + 0, 15, 14 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), +gsSPNTrianglesInit_5b( + 7, // tri count + 16, 17, 18, // tri0 + 19, 16, 18, // tri1 + 18, 20, 19 // tri2 +), +gsSPNTriangles_5b( + 21, 22, 23, // tri0 + 20, 22, 21, // tri1 + 23, 24, 21, // tri2 + 20, 21, 19 // tri3 +), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsSPNTrianglesInit_5b( + 1, // tri count + 25, 26, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 +), +gsSPEndDisplayList(), +}; + +static Gfx base_xsq_model[] = { +gsSPTexture(0, 0, 0, 0, G_ON), +gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), +gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), +gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), +gsDPSetTileSize(0, 0, 0, 508, 124), +gsDPSetPrimColor(0, 128, 255, 255, 255, 255), +gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), +gsSPVertex(&xsq_1_v[353], 14, 0), +gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 +), +gsSPNTriangles_5b( + 9, 5, 4, // tri0 + 10, 4, 0, // tri1 + 10, 9, 4, // tri2 + 7, 11, 12 // tri3 +), +gsSPNTriangles_5b( + 8, 7, 13, // tri0 + 2, 10, 0, // tri1 + 2, 1, 6, // tri2 + 6, 8, 2 // tri3 +), +gsSPNTriangles_5b( + 7, 12, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 +), +gsSPEndDisplayList(), +}; + + +// clang-format off +static cKF_Joint_R_c cKF_je_r_xsq_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_xsq_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-350,0 }, + /* joint 3 */ { Lfoot1_xsq_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_xsq_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,350,0 }, + /* joint 7 */ { Rfoot1_xsq_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_xsq_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 100,0,-700 }, + /* joint 11 */ { tail1_xsq_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_xsq_model, 0, cKF_JOINT_FLAG_DISP_OPA, 1099,0,0 }, + /* joint 13 */ { chest_xsq_model, 3, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,-650,0 }, + /* joint 15 */ { Larm1_xsq_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_xsq_model, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,650,0 }, + /* joint 18 */ { Rarm1_xsq_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_xsq_model, 1, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,600 }, + /* joint 23 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_xsq_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1600,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_xsq_1 = { 26, 13, cKF_je_r_xsq_1_tbl }; \ No newline at end of file diff --git a/src/data/npc/model/tex/ant_1.c b/src/data/npc/model/tex/ant_1.c new file mode 100644 index 00000000..34d159e5 --- /dev/null +++ b/src/data/npc/model/tex/ant_1.c @@ -0,0 +1,40 @@ +extern unsigned short ant_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_1_pal.inc" +}; + +extern unsigned char ant_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char ant_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char ant_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char ant_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char ant_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char ant_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char ant_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char ant_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char ant_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/ant_2.c b/src/data/npc/model/tex/ant_2.c new file mode 100644 index 00000000..c6ca3e2b --- /dev/null +++ b/src/data/npc/model/tex/ant_2.c @@ -0,0 +1,40 @@ +extern unsigned short ant_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_2_pal.inc" +}; + +extern unsigned char ant_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char ant_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char ant_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char ant_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char ant_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char ant_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char ant_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char ant_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char ant_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/ant_3.c b/src/data/npc/model/tex/ant_3.c new file mode 100644 index 00000000..b43d5288 --- /dev/null +++ b/src/data/npc/model/tex/ant_3.c @@ -0,0 +1,40 @@ +extern unsigned short ant_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_3_pal.inc" +}; + +extern unsigned char ant_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char ant_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char ant_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char ant_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char ant_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char ant_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char ant_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char ant_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char ant_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/ant_4.c b/src/data/npc/model/tex/ant_4.c new file mode 100644 index 00000000..5637442d --- /dev/null +++ b/src/data/npc/model/tex/ant_4.c @@ -0,0 +1,40 @@ +extern unsigned short ant_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_4_pal.inc" +}; + +extern unsigned char ant_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char ant_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char ant_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char ant_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char ant_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char ant_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char ant_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char ant_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char ant_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/ant_5.c b/src/data/npc/model/tex/ant_5.c new file mode 100644 index 00000000..2d50e867 --- /dev/null +++ b/src/data/npc/model/tex/ant_5.c @@ -0,0 +1,40 @@ +extern unsigned short ant_5_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_5_pal.inc" +}; + +extern unsigned char ant_5_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_5_eye1_TA_tex_txt.inc" +}; + +extern unsigned char ant_5_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_5_eye2_TA_tex_txt.inc" +}; + +extern unsigned char ant_5_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_5_eye3_TA_tex_txt.inc" +}; + +extern unsigned char ant_5_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_5_eye4_TA_tex_txt.inc" +}; + +extern unsigned char ant_5_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_5_eye5_TA_tex_txt.inc" +}; + +extern unsigned char ant_5_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_5_eye6_TA_tex_txt.inc" +}; + +extern unsigned char ant_5_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_5_eye7_TA_tex_txt.inc" +}; + +extern unsigned char ant_5_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_5_eye8_TA_tex_txt.inc" +}; + +extern unsigned char ant_5_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_5_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/bea_1.c b/src/data/npc/model/tex/bea_1.c new file mode 100644 index 00000000..b198d50a --- /dev/null +++ b/src/data/npc/model/tex/bea_1.c @@ -0,0 +1,64 @@ +extern unsigned short bea_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_1_pal.inc" +}; + +extern unsigned char bea_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char bea_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char bea_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char bea_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char bea_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char bea_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char bea_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char bea_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char bea_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char bea_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char bea_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char bea_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char bea_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char bea_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char bea_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/bea_10.c b/src/data/npc/model/tex/bea_10.c new file mode 100644 index 00000000..42b44c6d --- /dev/null +++ b/src/data/npc/model/tex/bea_10.c @@ -0,0 +1,64 @@ +extern unsigned short bea_10_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_10_pal.inc" +}; + +extern unsigned char bea_10_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_10_eye1_TA_tex_txt.inc" +}; + +extern unsigned char bea_10_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_10_eye2_TA_tex_txt.inc" +}; + +extern unsigned char bea_10_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_10_eye3_TA_tex_txt.inc" +}; + +extern unsigned char bea_10_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_10_eye4_TA_tex_txt.inc" +}; + +extern unsigned char bea_10_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_10_eye5_TA_tex_txt.inc" +}; + +extern unsigned char bea_10_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_10_eye6_TA_tex_txt.inc" +}; + +extern unsigned char bea_10_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_10_eye7_TA_tex_txt.inc" +}; + +extern unsigned char bea_10_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_10_eye8_TA_tex_txt.inc" +}; + +extern unsigned char bea_10_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_10_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char bea_10_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_10_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char bea_10_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_10_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char bea_10_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_10_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char bea_10_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_10_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char bea_10_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_10_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char bea_10_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_10_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/bea_2.c b/src/data/npc/model/tex/bea_2.c new file mode 100644 index 00000000..e3abcf4a --- /dev/null +++ b/src/data/npc/model/tex/bea_2.c @@ -0,0 +1,64 @@ +extern unsigned short bea_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_2_pal.inc" +}; + +extern unsigned char bea_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char bea_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char bea_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char bea_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char bea_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char bea_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char bea_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char bea_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char bea_2_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_2_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char bea_2_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_2_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char bea_2_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_2_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char bea_2_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_2_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char bea_2_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_2_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char bea_2_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_2_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char bea_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/bea_3.c b/src/data/npc/model/tex/bea_3.c new file mode 100644 index 00000000..d6507581 --- /dev/null +++ b/src/data/npc/model/tex/bea_3.c @@ -0,0 +1,64 @@ +extern unsigned short bea_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_3_pal.inc" +}; + +extern unsigned char bea_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char bea_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char bea_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char bea_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char bea_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char bea_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char bea_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char bea_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char bea_3_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_3_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char bea_3_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_3_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char bea_3_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_3_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char bea_3_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_3_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char bea_3_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_3_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char bea_3_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_3_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char bea_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/bea_5.c b/src/data/npc/model/tex/bea_5.c new file mode 100644 index 00000000..ae26892d --- /dev/null +++ b/src/data/npc/model/tex/bea_5.c @@ -0,0 +1,64 @@ +extern unsigned short bea_5_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_5_pal.inc" +}; + +extern unsigned char bea_5_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_5_eye1_TA_tex_txt.inc" +}; + +extern unsigned char bea_5_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_5_eye2_TA_tex_txt.inc" +}; + +extern unsigned char bea_5_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_5_eye3_TA_tex_txt.inc" +}; + +extern unsigned char bea_5_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_5_eye4_TA_tex_txt.inc" +}; + +extern unsigned char bea_5_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_5_eye5_TA_tex_txt.inc" +}; + +extern unsigned char bea_5_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_5_eye6_TA_tex_txt.inc" +}; + +extern unsigned char bea_5_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_5_eye7_TA_tex_txt.inc" +}; + +extern unsigned char bea_5_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_5_eye8_TA_tex_txt.inc" +}; + +extern unsigned char bea_5_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_5_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char bea_5_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_5_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char bea_5_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_5_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char bea_5_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_5_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char bea_5_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_5_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char bea_5_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_5_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char bea_5_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_5_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/bea_6.c b/src/data/npc/model/tex/bea_6.c new file mode 100644 index 00000000..83ae5d7a --- /dev/null +++ b/src/data/npc/model/tex/bea_6.c @@ -0,0 +1,64 @@ +extern unsigned short bea_6_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_6_pal.inc" +}; + +extern unsigned char bea_6_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_6_eye1_TA_tex_txt.inc" +}; + +extern unsigned char bea_6_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_6_eye2_TA_tex_txt.inc" +}; + +extern unsigned char bea_6_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_6_eye3_TA_tex_txt.inc" +}; + +extern unsigned char bea_6_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_6_eye4_TA_tex_txt.inc" +}; + +extern unsigned char bea_6_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_6_eye5_TA_tex_txt.inc" +}; + +extern unsigned char bea_6_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_6_eye6_TA_tex_txt.inc" +}; + +extern unsigned char bea_6_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_6_eye7_TA_tex_txt.inc" +}; + +extern unsigned char bea_6_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_6_eye8_TA_tex_txt.inc" +}; + +extern unsigned char bea_6_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_6_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char bea_6_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_6_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char bea_6_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_6_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char bea_6_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_6_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char bea_6_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_6_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char bea_6_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_6_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char bea_6_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_6_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/bea_7.c b/src/data/npc/model/tex/bea_7.c new file mode 100644 index 00000000..cb4ddb28 --- /dev/null +++ b/src/data/npc/model/tex/bea_7.c @@ -0,0 +1,64 @@ +extern unsigned short bea_7_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_7_pal.inc" +}; + +extern unsigned char bea_7_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_7_eye1_TA_tex_txt.inc" +}; + +extern unsigned char bea_7_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_7_eye2_TA_tex_txt.inc" +}; + +extern unsigned char bea_7_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_7_eye3_TA_tex_txt.inc" +}; + +extern unsigned char bea_7_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_7_eye4_TA_tex_txt.inc" +}; + +extern unsigned char bea_7_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_7_eye5_TA_tex_txt.inc" +}; + +extern unsigned char bea_7_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_7_eye6_TA_tex_txt.inc" +}; + +extern unsigned char bea_7_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_7_eye7_TA_tex_txt.inc" +}; + +extern unsigned char bea_7_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_7_eye8_TA_tex_txt.inc" +}; + +extern unsigned char bea_7_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_7_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char bea_7_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_7_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char bea_7_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_7_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char bea_7_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_7_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char bea_7_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_7_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char bea_7_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_7_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char bea_7_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_7_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/bea_8.c b/src/data/npc/model/tex/bea_8.c new file mode 100644 index 00000000..29baf633 --- /dev/null +++ b/src/data/npc/model/tex/bea_8.c @@ -0,0 +1,64 @@ +extern unsigned short bea_8_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_8_pal.inc" +}; + +extern unsigned char bea_8_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_8_eye1_TA_tex_txt.inc" +}; + +extern unsigned char bea_8_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_8_eye2_TA_tex_txt.inc" +}; + +extern unsigned char bea_8_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_8_eye3_TA_tex_txt.inc" +}; + +extern unsigned char bea_8_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_8_eye4_TA_tex_txt.inc" +}; + +extern unsigned char bea_8_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_8_eye5_TA_tex_txt.inc" +}; + +extern unsigned char bea_8_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_8_eye6_TA_tex_txt.inc" +}; + +extern unsigned char bea_8_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_8_eye7_TA_tex_txt.inc" +}; + +extern unsigned char bea_8_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_8_eye8_TA_tex_txt.inc" +}; + +extern unsigned char bea_8_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_8_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char bea_8_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_8_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char bea_8_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_8_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char bea_8_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_8_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char bea_8_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_8_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char bea_8_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_8_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char bea_8_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_8_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/bea_9.c b/src/data/npc/model/tex/bea_9.c new file mode 100644 index 00000000..a25f1f26 --- /dev/null +++ b/src/data/npc/model/tex/bea_9.c @@ -0,0 +1,64 @@ +extern unsigned short bea_9_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_9_pal.inc" +}; + +extern unsigned char bea_9_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_9_eye1_TA_tex_txt.inc" +}; + +extern unsigned char bea_9_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_9_eye2_TA_tex_txt.inc" +}; + +extern unsigned char bea_9_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_9_eye3_TA_tex_txt.inc" +}; + +extern unsigned char bea_9_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_9_eye4_TA_tex_txt.inc" +}; + +extern unsigned char bea_9_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_9_eye5_TA_tex_txt.inc" +}; + +extern unsigned char bea_9_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_9_eye6_TA_tex_txt.inc" +}; + +extern unsigned char bea_9_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_9_eye7_TA_tex_txt.inc" +}; + +extern unsigned char bea_9_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_9_eye8_TA_tex_txt.inc" +}; + +extern unsigned char bea_9_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_9_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char bea_9_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_9_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char bea_9_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_9_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char bea_9_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_9_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char bea_9_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_9_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char bea_9_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_9_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char bea_9_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_9_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/bev_1.c b/src/data/npc/model/tex/bev_1.c new file mode 100644 index 00000000..0e6097b5 --- /dev/null +++ b/src/data/npc/model/tex/bev_1.c @@ -0,0 +1,40 @@ +extern unsigned short bev_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bev_1_pal.inc" +}; + +extern unsigned char bev_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bev_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char bev_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bev_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char bev_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bev_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char bev_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bev_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char bev_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bev_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char bev_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bev_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char bev_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bev_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char bev_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bev_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char bev_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bev_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/boa_1.c b/src/data/npc/model/tex/boa_1.c new file mode 100644 index 00000000..30e9c253 --- /dev/null +++ b/src/data/npc/model/tex/boa_1.c @@ -0,0 +1,40 @@ +extern unsigned short boa_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/boa_1_pal.inc" +}; + +extern unsigned char boa_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/boa_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char boa_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/boa_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char boa_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/boa_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char boa_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/boa_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char boa_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/boa_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char boa_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/boa_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char boa_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/boa_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char boa_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/boa_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char boa_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/boa_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/bpt_1.c b/src/data/npc/model/tex/bpt_1.c new file mode 100644 index 00000000..b08a1dbc --- /dev/null +++ b/src/data/npc/model/tex/bpt_1.c @@ -0,0 +1,40 @@ +extern unsigned short bpt_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bpt_1_pal.inc" +}; + +extern unsigned char bpt_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bpt_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char bpt_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bpt_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char bpt_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bpt_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char bpt_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bpt_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char bpt_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bpt_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char bpt_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bpt_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char bpt_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bpt_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char bpt_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bpt_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char bpt_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bpt_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/brd_1.c b/src/data/npc/model/tex/brd_1.c new file mode 100644 index 00000000..c19aeb77 --- /dev/null +++ b/src/data/npc/model/tex/brd_1.c @@ -0,0 +1,40 @@ +extern unsigned short brd_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_1_pal.inc" +}; + +extern unsigned char brd_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char brd_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char brd_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char brd_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char brd_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char brd_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char brd_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char brd_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char brd_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/brd_10.c b/src/data/npc/model/tex/brd_10.c new file mode 100644 index 00000000..03573785 --- /dev/null +++ b/src/data/npc/model/tex/brd_10.c @@ -0,0 +1,40 @@ +extern unsigned short brd_10_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_10_pal.inc" +}; + +extern unsigned char brd_10_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_10_eye1_TA_tex_txt.inc" +}; + +extern unsigned char brd_10_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_10_eye2_TA_tex_txt.inc" +}; + +extern unsigned char brd_10_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_10_eye3_TA_tex_txt.inc" +}; + +extern unsigned char brd_10_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_10_eye4_TA_tex_txt.inc" +}; + +extern unsigned char brd_10_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_10_eye5_TA_tex_txt.inc" +}; + +extern unsigned char brd_10_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_10_eye6_TA_tex_txt.inc" +}; + +extern unsigned char brd_10_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_10_eye7_TA_tex_txt.inc" +}; + +extern unsigned char brd_10_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_10_eye8_TA_tex_txt.inc" +}; + +extern unsigned char brd_10_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_10_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/brd_11.c b/src/data/npc/model/tex/brd_11.c new file mode 100644 index 00000000..56bad975 --- /dev/null +++ b/src/data/npc/model/tex/brd_11.c @@ -0,0 +1,40 @@ +extern unsigned short brd_11_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_11_pal.inc" +}; + +extern unsigned char brd_11_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_11_eye1_TA_tex_txt.inc" +}; + +extern unsigned char brd_11_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_11_eye2_TA_tex_txt.inc" +}; + +extern unsigned char brd_11_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_11_eye3_TA_tex_txt.inc" +}; + +extern unsigned char brd_11_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_11_eye4_TA_tex_txt.inc" +}; + +extern unsigned char brd_11_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_11_eye5_TA_tex_txt.inc" +}; + +extern unsigned char brd_11_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_11_eye6_TA_tex_txt.inc" +}; + +extern unsigned char brd_11_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_11_eye7_TA_tex_txt.inc" +}; + +extern unsigned char brd_11_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_11_eye8_TA_tex_txt.inc" +}; + +extern unsigned char brd_11_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_11_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/brd_2.c b/src/data/npc/model/tex/brd_2.c new file mode 100644 index 00000000..8598a548 --- /dev/null +++ b/src/data/npc/model/tex/brd_2.c @@ -0,0 +1,40 @@ +extern unsigned short brd_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_2_pal.inc" +}; + +extern unsigned char brd_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char brd_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char brd_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char brd_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char brd_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char brd_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char brd_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char brd_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char brd_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/brd_3.c b/src/data/npc/model/tex/brd_3.c new file mode 100644 index 00000000..4b7fb968 --- /dev/null +++ b/src/data/npc/model/tex/brd_3.c @@ -0,0 +1,40 @@ +extern unsigned short brd_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_3_pal.inc" +}; + +extern unsigned char brd_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char brd_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char brd_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char brd_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char brd_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char brd_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char brd_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char brd_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char brd_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/brd_4.c b/src/data/npc/model/tex/brd_4.c new file mode 100644 index 00000000..1484b378 --- /dev/null +++ b/src/data/npc/model/tex/brd_4.c @@ -0,0 +1,40 @@ +extern unsigned short brd_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_4_pal.inc" +}; + +extern unsigned char brd_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char brd_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char brd_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char brd_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char brd_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char brd_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char brd_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char brd_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char brd_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/brd_5.c b/src/data/npc/model/tex/brd_5.c new file mode 100644 index 00000000..ee01744e --- /dev/null +++ b/src/data/npc/model/tex/brd_5.c @@ -0,0 +1,40 @@ +extern unsigned short brd_5_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_5_pal.inc" +}; + +extern unsigned char brd_5_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_5_eye1_TA_tex_txt.inc" +}; + +extern unsigned char brd_5_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_5_eye2_TA_tex_txt.inc" +}; + +extern unsigned char brd_5_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_5_eye3_TA_tex_txt.inc" +}; + +extern unsigned char brd_5_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_5_eye4_TA_tex_txt.inc" +}; + +extern unsigned char brd_5_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_5_eye5_TA_tex_txt.inc" +}; + +extern unsigned char brd_5_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_5_eye6_TA_tex_txt.inc" +}; + +extern unsigned char brd_5_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_5_eye7_TA_tex_txt.inc" +}; + +extern unsigned char brd_5_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_5_eye8_TA_tex_txt.inc" +}; + +extern unsigned char brd_5_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_5_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/brd_6.c b/src/data/npc/model/tex/brd_6.c new file mode 100644 index 00000000..6d0ee930 --- /dev/null +++ b/src/data/npc/model/tex/brd_6.c @@ -0,0 +1,40 @@ +extern unsigned short brd_6_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_6_pal.inc" +}; + +extern unsigned char brd_6_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_6_eye1_TA_tex_txt.inc" +}; + +extern unsigned char brd_6_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_6_eye2_TA_tex_txt.inc" +}; + +extern unsigned char brd_6_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_6_eye3_TA_tex_txt.inc" +}; + +extern unsigned char brd_6_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_6_eye4_TA_tex_txt.inc" +}; + +extern unsigned char brd_6_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_6_eye5_TA_tex_txt.inc" +}; + +extern unsigned char brd_6_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_6_eye6_TA_tex_txt.inc" +}; + +extern unsigned char brd_6_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_6_eye7_TA_tex_txt.inc" +}; + +extern unsigned char brd_6_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_6_eye8_TA_tex_txt.inc" +}; + +extern unsigned char brd_6_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_6_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/brd_7.c b/src/data/npc/model/tex/brd_7.c new file mode 100644 index 00000000..3189ef13 --- /dev/null +++ b/src/data/npc/model/tex/brd_7.c @@ -0,0 +1,40 @@ +extern unsigned short brd_7_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_7_pal.inc" +}; + +extern unsigned char brd_7_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_7_eye1_TA_tex_txt.inc" +}; + +extern unsigned char brd_7_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_7_eye2_TA_tex_txt.inc" +}; + +extern unsigned char brd_7_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_7_eye3_TA_tex_txt.inc" +}; + +extern unsigned char brd_7_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_7_eye4_TA_tex_txt.inc" +}; + +extern unsigned char brd_7_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_7_eye5_TA_tex_txt.inc" +}; + +extern unsigned char brd_7_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_7_eye6_TA_tex_txt.inc" +}; + +extern unsigned char brd_7_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_7_eye7_TA_tex_txt.inc" +}; + +extern unsigned char brd_7_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_7_eye8_TA_tex_txt.inc" +}; + +extern unsigned char brd_7_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_7_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/brd_8.c b/src/data/npc/model/tex/brd_8.c new file mode 100644 index 00000000..21b6ef4e --- /dev/null +++ b/src/data/npc/model/tex/brd_8.c @@ -0,0 +1,40 @@ +extern unsigned short brd_8_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_8_pal.inc" +}; + +extern unsigned char brd_8_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_8_eye1_TA_tex_txt.inc" +}; + +extern unsigned char brd_8_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_8_eye2_TA_tex_txt.inc" +}; + +extern unsigned char brd_8_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_8_eye3_TA_tex_txt.inc" +}; + +extern unsigned char brd_8_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_8_eye4_TA_tex_txt.inc" +}; + +extern unsigned char brd_8_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_8_eye5_TA_tex_txt.inc" +}; + +extern unsigned char brd_8_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_8_eye6_TA_tex_txt.inc" +}; + +extern unsigned char brd_8_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_8_eye7_TA_tex_txt.inc" +}; + +extern unsigned char brd_8_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_8_eye8_TA_tex_txt.inc" +}; + +extern unsigned char brd_8_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_8_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/brd_9.c b/src/data/npc/model/tex/brd_9.c new file mode 100644 index 00000000..b2ed76fc --- /dev/null +++ b/src/data/npc/model/tex/brd_9.c @@ -0,0 +1,40 @@ +extern unsigned short brd_9_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_9_pal.inc" +}; + +extern unsigned char brd_9_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_9_eye1_TA_tex_txt.inc" +}; + +extern unsigned char brd_9_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_9_eye2_TA_tex_txt.inc" +}; + +extern unsigned char brd_9_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_9_eye3_TA_tex_txt.inc" +}; + +extern unsigned char brd_9_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_9_eye4_TA_tex_txt.inc" +}; + +extern unsigned char brd_9_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_9_eye5_TA_tex_txt.inc" +}; + +extern unsigned char brd_9_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_9_eye6_TA_tex_txt.inc" +}; + +extern unsigned char brd_9_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_9_eye7_TA_tex_txt.inc" +}; + +extern unsigned char brd_9_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_9_eye8_TA_tex_txt.inc" +}; + +extern unsigned char brd_9_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_9_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/bul_1.c b/src/data/npc/model/tex/bul_1.c new file mode 100644 index 00000000..f79ded58 --- /dev/null +++ b/src/data/npc/model/tex/bul_1.c @@ -0,0 +1,64 @@ +extern unsigned short bul_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_1_pal.inc" +}; + +extern unsigned char bul_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char bul_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char bul_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char bul_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char bul_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char bul_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char bul_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char bul_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char bul_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char bul_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char bul_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char bul_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char bul_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char bul_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char bul_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/bul_2.c b/src/data/npc/model/tex/bul_2.c new file mode 100644 index 00000000..02d8b44c --- /dev/null +++ b/src/data/npc/model/tex/bul_2.c @@ -0,0 +1,64 @@ +extern unsigned short bul_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_2_pal.inc" +}; + +extern unsigned char bul_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char bul_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char bul_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char bul_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char bul_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char bul_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char bul_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char bul_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char bul_2_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_2_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char bul_2_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_2_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char bul_2_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_2_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char bul_2_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_2_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char bul_2_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_2_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char bul_2_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_2_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char bul_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/bul_3.c b/src/data/npc/model/tex/bul_3.c new file mode 100644 index 00000000..0ebf8464 --- /dev/null +++ b/src/data/npc/model/tex/bul_3.c @@ -0,0 +1,64 @@ +extern unsigned short bul_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_3_pal.inc" +}; + +extern unsigned char bul_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char bul_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char bul_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char bul_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char bul_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char bul_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char bul_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char bul_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char bul_3_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_3_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char bul_3_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_3_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char bul_3_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_3_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char bul_3_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_3_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char bul_3_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_3_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char bul_3_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_3_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char bul_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/bul_4.c b/src/data/npc/model/tex/bul_4.c new file mode 100644 index 00000000..7a217a7c --- /dev/null +++ b/src/data/npc/model/tex/bul_4.c @@ -0,0 +1,64 @@ +extern unsigned short bul_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_4_pal.inc" +}; + +extern unsigned char bul_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char bul_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char bul_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char bul_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char bul_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char bul_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char bul_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char bul_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char bul_4_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_4_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char bul_4_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_4_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char bul_4_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_4_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char bul_4_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_4_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char bul_4_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_4_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char bul_4_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_4_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char bul_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cat_1.c b/src/data/npc/model/tex/cat_1.c new file mode 100644 index 00000000..da36b8b1 --- /dev/null +++ b/src/data/npc/model/tex/cat_1.c @@ -0,0 +1,64 @@ +extern unsigned short cat_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_1_pal.inc" +}; + +extern unsigned char cat_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cat_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cat_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cat_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cat_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cat_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cat_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cat_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cat_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cat_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cat_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cat_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cat_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cat_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cat_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cat_10.c b/src/data/npc/model/tex/cat_10.c new file mode 100644 index 00000000..83266e89 --- /dev/null +++ b/src/data/npc/model/tex/cat_10.c @@ -0,0 +1,64 @@ +extern unsigned short cat_10_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_10_pal.inc" +}; + +extern unsigned char cat_10_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_10_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cat_10_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_10_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cat_10_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_10_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cat_10_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_10_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cat_10_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_10_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cat_10_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_10_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cat_10_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_10_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cat_10_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_10_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cat_10_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_10_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cat_10_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_10_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cat_10_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_10_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cat_10_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_10_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cat_10_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_10_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cat_10_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_10_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cat_10_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_10_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cat_11.c b/src/data/npc/model/tex/cat_11.c new file mode 100644 index 00000000..863cee33 --- /dev/null +++ b/src/data/npc/model/tex/cat_11.c @@ -0,0 +1,64 @@ +extern unsigned short cat_11_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_11_pal.inc" +}; + +extern unsigned char cat_11_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_11_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cat_11_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_11_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cat_11_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_11_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cat_11_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_11_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cat_11_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_11_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cat_11_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_11_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cat_11_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_11_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cat_11_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_11_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cat_11_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_11_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cat_11_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_11_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cat_11_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_11_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cat_11_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_11_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cat_11_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_11_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cat_11_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_11_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cat_11_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_11_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cat_12.c b/src/data/npc/model/tex/cat_12.c new file mode 100644 index 00000000..4abb0c08 --- /dev/null +++ b/src/data/npc/model/tex/cat_12.c @@ -0,0 +1,64 @@ +extern unsigned short cat_12_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_12_pal.inc" +}; + +extern unsigned char cat_12_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_12_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cat_12_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_12_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cat_12_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_12_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cat_12_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_12_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cat_12_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_12_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cat_12_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_12_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cat_12_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_12_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cat_12_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_12_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cat_12_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_12_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cat_12_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_12_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cat_12_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_12_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cat_12_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_12_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cat_12_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_12_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cat_12_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_12_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cat_12_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_12_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cat_13.c b/src/data/npc/model/tex/cat_13.c new file mode 100644 index 00000000..27c04899 --- /dev/null +++ b/src/data/npc/model/tex/cat_13.c @@ -0,0 +1,64 @@ +extern unsigned short cat_13_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_13_pal.inc" +}; + +extern unsigned char cat_13_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_13_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cat_13_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_13_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cat_13_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_13_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cat_13_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_13_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cat_13_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_13_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cat_13_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_13_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cat_13_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_13_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cat_13_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_13_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cat_13_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_13_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cat_13_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_13_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cat_13_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_13_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cat_13_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_13_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cat_13_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_13_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cat_13_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_13_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cat_13_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_13_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cat_14.c b/src/data/npc/model/tex/cat_14.c new file mode 100644 index 00000000..1d66b063 --- /dev/null +++ b/src/data/npc/model/tex/cat_14.c @@ -0,0 +1,64 @@ +extern unsigned short cat_14_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_14_pal.inc" +}; + +extern unsigned char cat_14_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_14_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cat_14_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_14_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cat_14_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_14_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cat_14_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_14_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cat_14_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_14_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cat_14_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_14_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cat_14_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_14_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cat_14_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_14_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cat_14_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_14_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cat_14_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_14_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cat_14_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_14_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cat_14_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_14_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cat_14_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_14_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cat_14_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_14_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cat_14_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_14_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cat_15.c b/src/data/npc/model/tex/cat_15.c new file mode 100644 index 00000000..6d6be1e8 --- /dev/null +++ b/src/data/npc/model/tex/cat_15.c @@ -0,0 +1,64 @@ +extern unsigned short cat_15_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_15_pal.inc" +}; + +extern unsigned char cat_15_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_15_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cat_15_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_15_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cat_15_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_15_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cat_15_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_15_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cat_15_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_15_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cat_15_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_15_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cat_15_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_15_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cat_15_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_15_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cat_15_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_15_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cat_15_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_15_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cat_15_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_15_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cat_15_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_15_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cat_15_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_15_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cat_15_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_15_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cat_15_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_15_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cat_2.c b/src/data/npc/model/tex/cat_2.c new file mode 100644 index 00000000..7416a187 --- /dev/null +++ b/src/data/npc/model/tex/cat_2.c @@ -0,0 +1,64 @@ +extern unsigned short cat_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_2_pal.inc" +}; + +extern unsigned char cat_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cat_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cat_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cat_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cat_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cat_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cat_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cat_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cat_2_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_2_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cat_2_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_2_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cat_2_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_2_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cat_2_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_2_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cat_2_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_2_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cat_2_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_2_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cat_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cat_3.c b/src/data/npc/model/tex/cat_3.c new file mode 100644 index 00000000..de414ecf --- /dev/null +++ b/src/data/npc/model/tex/cat_3.c @@ -0,0 +1,64 @@ +extern unsigned short cat_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_3_pal.inc" +}; + +extern unsigned char cat_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cat_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cat_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cat_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cat_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cat_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cat_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cat_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cat_3_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_3_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cat_3_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_3_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cat_3_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_3_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cat_3_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_3_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cat_3_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_3_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cat_3_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_3_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cat_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cat_4.c b/src/data/npc/model/tex/cat_4.c new file mode 100644 index 00000000..17be706d --- /dev/null +++ b/src/data/npc/model/tex/cat_4.c @@ -0,0 +1,64 @@ +extern unsigned short cat_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_4_pal.inc" +}; + +extern unsigned char cat_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cat_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cat_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cat_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cat_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cat_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cat_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cat_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cat_4_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_4_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cat_4_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_4_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cat_4_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_4_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cat_4_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_4_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cat_4_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_4_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cat_4_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_4_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cat_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cat_5.c b/src/data/npc/model/tex/cat_5.c new file mode 100644 index 00000000..9530e460 --- /dev/null +++ b/src/data/npc/model/tex/cat_5.c @@ -0,0 +1,64 @@ +extern unsigned short cat_5_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_5_pal.inc" +}; + +extern unsigned char cat_5_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_5_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cat_5_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_5_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cat_5_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_5_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cat_5_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_5_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cat_5_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_5_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cat_5_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_5_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cat_5_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_5_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cat_5_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_5_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cat_5_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_5_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cat_5_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_5_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cat_5_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_5_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cat_5_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_5_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cat_5_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_5_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cat_5_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_5_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cat_5_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_5_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cat_6.c b/src/data/npc/model/tex/cat_6.c new file mode 100644 index 00000000..71c7a094 --- /dev/null +++ b/src/data/npc/model/tex/cat_6.c @@ -0,0 +1,64 @@ +extern unsigned short cat_6_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_6_pal.inc" +}; + +extern unsigned char cat_6_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_6_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cat_6_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_6_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cat_6_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_6_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cat_6_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_6_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cat_6_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_6_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cat_6_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_6_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cat_6_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_6_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cat_6_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_6_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cat_6_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_6_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cat_6_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_6_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cat_6_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_6_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cat_6_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_6_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cat_6_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_6_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cat_6_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_6_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cat_6_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_6_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cat_7.c b/src/data/npc/model/tex/cat_7.c new file mode 100644 index 00000000..63809369 --- /dev/null +++ b/src/data/npc/model/tex/cat_7.c @@ -0,0 +1,64 @@ +extern unsigned short cat_7_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_7_pal.inc" +}; + +extern unsigned char cat_7_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_7_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cat_7_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_7_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cat_7_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_7_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cat_7_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_7_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cat_7_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_7_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cat_7_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_7_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cat_7_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_7_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cat_7_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_7_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cat_7_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_7_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cat_7_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_7_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cat_7_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_7_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cat_7_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_7_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cat_7_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_7_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cat_7_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_7_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cat_7_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_7_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cat_8.c b/src/data/npc/model/tex/cat_8.c new file mode 100644 index 00000000..52e8cba3 --- /dev/null +++ b/src/data/npc/model/tex/cat_8.c @@ -0,0 +1,64 @@ +extern unsigned short cat_8_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_8_pal.inc" +}; + +extern unsigned char cat_8_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_8_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cat_8_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_8_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cat_8_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_8_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cat_8_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_8_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cat_8_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_8_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cat_8_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_8_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cat_8_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_8_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cat_8_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_8_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cat_8_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_8_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cat_8_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_8_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cat_8_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_8_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cat_8_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_8_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cat_8_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_8_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cat_8_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_8_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cat_8_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_8_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cat_9.c b/src/data/npc/model/tex/cat_9.c new file mode 100644 index 00000000..42c3cfb0 --- /dev/null +++ b/src/data/npc/model/tex/cat_9.c @@ -0,0 +1,64 @@ +extern unsigned short cat_9_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_9_pal.inc" +}; + +extern unsigned char cat_9_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_9_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cat_9_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_9_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cat_9_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_9_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cat_9_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_9_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cat_9_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_9_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cat_9_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_9_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cat_9_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_9_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cat_9_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_9_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cat_9_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_9_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cat_9_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_9_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cat_9_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_9_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cat_9_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_9_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cat_9_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_9_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cat_9_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_9_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cat_9_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_9_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cbr_1.c b/src/data/npc/model/tex/cbr_1.c new file mode 100644 index 00000000..1696b7d8 --- /dev/null +++ b/src/data/npc/model/tex/cbr_1.c @@ -0,0 +1,64 @@ +extern unsigned short cbr_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_1_pal.inc" +}; + +extern unsigned char cbr_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cbr_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cbr_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cbr_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cbr_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cbr_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cbr_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cbr_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cbr_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cbr_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cbr_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cbr_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cbr_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cbr_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cbr_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cbr_10.c b/src/data/npc/model/tex/cbr_10.c new file mode 100644 index 00000000..facadbd7 --- /dev/null +++ b/src/data/npc/model/tex/cbr_10.c @@ -0,0 +1,64 @@ +extern unsigned short cbr_10_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_10_pal.inc" +}; + +extern unsigned char cbr_10_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_10_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cbr_10_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_10_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cbr_10_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_10_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cbr_10_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_10_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cbr_10_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_10_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cbr_10_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_10_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cbr_10_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_10_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cbr_10_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_10_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cbr_10_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_10_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cbr_10_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_10_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cbr_10_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_10_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cbr_10_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_10_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cbr_10_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_10_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cbr_10_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_10_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cbr_10_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_10_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cbr_11.c b/src/data/npc/model/tex/cbr_11.c new file mode 100644 index 00000000..be3c9716 --- /dev/null +++ b/src/data/npc/model/tex/cbr_11.c @@ -0,0 +1,64 @@ +extern unsigned short cbr_11_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_11_pal.inc" +}; + +extern unsigned char cbr_11_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_11_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cbr_11_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_11_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cbr_11_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_11_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cbr_11_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_11_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cbr_11_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_11_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cbr_11_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_11_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cbr_11_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_11_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cbr_11_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_11_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cbr_11_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_11_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cbr_11_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_11_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cbr_11_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_11_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cbr_11_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_11_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cbr_11_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_11_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cbr_11_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_11_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cbr_11_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_11_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cbr_2.c b/src/data/npc/model/tex/cbr_2.c new file mode 100644 index 00000000..3f8525e2 --- /dev/null +++ b/src/data/npc/model/tex/cbr_2.c @@ -0,0 +1,64 @@ +extern unsigned short cbr_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_2_pal.inc" +}; + +extern unsigned char cbr_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cbr_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cbr_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cbr_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cbr_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cbr_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cbr_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cbr_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cbr_2_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_2_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cbr_2_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_2_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cbr_2_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_2_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cbr_2_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_2_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cbr_2_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_2_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cbr_2_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_2_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cbr_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cbr_3.c b/src/data/npc/model/tex/cbr_3.c new file mode 100644 index 00000000..211bee38 --- /dev/null +++ b/src/data/npc/model/tex/cbr_3.c @@ -0,0 +1,64 @@ +extern unsigned short cbr_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_3_pal.inc" +}; + +extern unsigned char cbr_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cbr_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cbr_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cbr_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cbr_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cbr_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cbr_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cbr_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cbr_3_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_3_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cbr_3_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_3_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cbr_3_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_3_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cbr_3_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_3_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cbr_3_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_3_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cbr_3_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_3_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cbr_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cbr_4.c b/src/data/npc/model/tex/cbr_4.c new file mode 100644 index 00000000..b517c8f9 --- /dev/null +++ b/src/data/npc/model/tex/cbr_4.c @@ -0,0 +1,64 @@ +extern unsigned short cbr_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_4_pal.inc" +}; + +extern unsigned char cbr_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cbr_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cbr_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cbr_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cbr_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cbr_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cbr_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cbr_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cbr_4_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_4_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cbr_4_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_4_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cbr_4_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_4_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cbr_4_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_4_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cbr_4_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_4_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cbr_4_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_4_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cbr_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cbr_5.c b/src/data/npc/model/tex/cbr_5.c new file mode 100644 index 00000000..177f6bdc --- /dev/null +++ b/src/data/npc/model/tex/cbr_5.c @@ -0,0 +1,64 @@ +extern unsigned short cbr_5_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_5_pal.inc" +}; + +extern unsigned char cbr_5_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_5_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cbr_5_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_5_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cbr_5_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_5_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cbr_5_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_5_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cbr_5_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_5_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cbr_5_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_5_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cbr_5_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_5_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cbr_5_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_5_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cbr_5_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_5_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cbr_5_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_5_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cbr_5_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_5_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cbr_5_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_5_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cbr_5_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_5_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cbr_5_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_5_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cbr_5_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_5_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cbr_6.c b/src/data/npc/model/tex/cbr_6.c new file mode 100644 index 00000000..03a834de --- /dev/null +++ b/src/data/npc/model/tex/cbr_6.c @@ -0,0 +1,64 @@ +extern unsigned short cbr_6_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_6_pal.inc" +}; + +extern unsigned char cbr_6_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_6_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cbr_6_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_6_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cbr_6_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_6_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cbr_6_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_6_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cbr_6_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_6_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cbr_6_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_6_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cbr_6_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_6_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cbr_6_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_6_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cbr_6_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_6_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cbr_6_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_6_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cbr_6_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_6_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cbr_6_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_6_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cbr_6_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_6_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cbr_6_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_6_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cbr_6_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_6_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cbr_7.c b/src/data/npc/model/tex/cbr_7.c new file mode 100644 index 00000000..c7fef282 --- /dev/null +++ b/src/data/npc/model/tex/cbr_7.c @@ -0,0 +1,64 @@ +extern unsigned short cbr_7_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_7_pal.inc" +}; + +extern unsigned char cbr_7_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_7_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cbr_7_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_7_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cbr_7_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_7_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cbr_7_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_7_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cbr_7_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_7_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cbr_7_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_7_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cbr_7_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_7_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cbr_7_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_7_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cbr_7_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_7_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cbr_7_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_7_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cbr_7_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_7_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cbr_7_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_7_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cbr_7_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_7_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cbr_7_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_7_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cbr_7_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_7_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cbr_8.c b/src/data/npc/model/tex/cbr_8.c new file mode 100644 index 00000000..683e3198 --- /dev/null +++ b/src/data/npc/model/tex/cbr_8.c @@ -0,0 +1,64 @@ +extern unsigned short cbr_8_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_8_pal.inc" +}; + +extern unsigned char cbr_8_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_8_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cbr_8_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_8_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cbr_8_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_8_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cbr_8_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_8_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cbr_8_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_8_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cbr_8_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_8_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cbr_8_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_8_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cbr_8_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_8_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cbr_8_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_8_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cbr_8_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_8_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cbr_8_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_8_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cbr_8_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_8_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cbr_8_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_8_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cbr_8_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_8_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cbr_8_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_8_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cbr_9.c b/src/data/npc/model/tex/cbr_9.c new file mode 100644 index 00000000..0a7a240e --- /dev/null +++ b/src/data/npc/model/tex/cbr_9.c @@ -0,0 +1,64 @@ +extern unsigned short cbr_9_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_9_pal.inc" +}; + +extern unsigned char cbr_9_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_9_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cbr_9_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_9_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cbr_9_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_9_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cbr_9_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_9_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cbr_9_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_9_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cbr_9_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_9_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cbr_9_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_9_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cbr_9_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_9_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cbr_9_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_9_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cbr_9_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_9_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cbr_9_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_9_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cbr_9_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_9_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cbr_9_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_9_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cbr_9_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_9_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cbr_9_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_9_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/chn_1.c b/src/data/npc/model/tex/chn_1.c new file mode 100644 index 00000000..e87185d7 --- /dev/null +++ b/src/data/npc/model/tex/chn_1.c @@ -0,0 +1,40 @@ +extern unsigned short chn_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_1_pal.inc" +}; + +extern unsigned char chn_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char chn_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char chn_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char chn_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char chn_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char chn_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char chn_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char chn_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char chn_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/chn_2.c b/src/data/npc/model/tex/chn_2.c new file mode 100644 index 00000000..3dc228e0 --- /dev/null +++ b/src/data/npc/model/tex/chn_2.c @@ -0,0 +1,40 @@ +extern unsigned short chn_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_2_pal.inc" +}; + +extern unsigned char chn_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char chn_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char chn_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char chn_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char chn_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char chn_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char chn_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char chn_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char chn_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/chn_3.c b/src/data/npc/model/tex/chn_3.c new file mode 100644 index 00000000..2cfb7a45 --- /dev/null +++ b/src/data/npc/model/tex/chn_3.c @@ -0,0 +1,40 @@ +extern unsigned short chn_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_3_pal.inc" +}; + +extern unsigned char chn_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char chn_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char chn_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char chn_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char chn_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char chn_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char chn_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char chn_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char chn_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/chn_4.c b/src/data/npc/model/tex/chn_4.c new file mode 100644 index 00000000..248f8d0f --- /dev/null +++ b/src/data/npc/model/tex/chn_4.c @@ -0,0 +1,40 @@ +extern unsigned short chn_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_4_pal.inc" +}; + +extern unsigned char chn_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char chn_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char chn_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char chn_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char chn_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char chn_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char chn_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char chn_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char chn_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/chn_5.c b/src/data/npc/model/tex/chn_5.c new file mode 100644 index 00000000..2543c017 --- /dev/null +++ b/src/data/npc/model/tex/chn_5.c @@ -0,0 +1,40 @@ +extern unsigned short chn_5_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_5_pal.inc" +}; + +extern unsigned char chn_5_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_5_eye1_TA_tex_txt.inc" +}; + +extern unsigned char chn_5_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_5_eye2_TA_tex_txt.inc" +}; + +extern unsigned char chn_5_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_5_eye3_TA_tex_txt.inc" +}; + +extern unsigned char chn_5_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_5_eye4_TA_tex_txt.inc" +}; + +extern unsigned char chn_5_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_5_eye5_TA_tex_txt.inc" +}; + +extern unsigned char chn_5_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_5_eye6_TA_tex_txt.inc" +}; + +extern unsigned char chn_5_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_5_eye7_TA_tex_txt.inc" +}; + +extern unsigned char chn_5_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_5_eye8_TA_tex_txt.inc" +}; + +extern unsigned char chn_5_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_5_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/chn_6.c b/src/data/npc/model/tex/chn_6.c new file mode 100644 index 00000000..8d30ef77 --- /dev/null +++ b/src/data/npc/model/tex/chn_6.c @@ -0,0 +1,40 @@ +extern unsigned short chn_6_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_6_pal.inc" +}; + +extern unsigned char chn_6_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_6_eye1_TA_tex_txt.inc" +}; + +extern unsigned char chn_6_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_6_eye2_TA_tex_txt.inc" +}; + +extern unsigned char chn_6_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_6_eye3_TA_tex_txt.inc" +}; + +extern unsigned char chn_6_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_6_eye4_TA_tex_txt.inc" +}; + +extern unsigned char chn_6_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_6_eye5_TA_tex_txt.inc" +}; + +extern unsigned char chn_6_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_6_eye6_TA_tex_txt.inc" +}; + +extern unsigned char chn_6_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_6_eye7_TA_tex_txt.inc" +}; + +extern unsigned char chn_6_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_6_eye8_TA_tex_txt.inc" +}; + +extern unsigned char chn_6_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_6_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/chn_7.c b/src/data/npc/model/tex/chn_7.c new file mode 100644 index 00000000..48a9ec28 --- /dev/null +++ b/src/data/npc/model/tex/chn_7.c @@ -0,0 +1,40 @@ +extern unsigned short chn_7_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_7_pal.inc" +}; + +extern unsigned char chn_7_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_7_eye1_TA_tex_txt.inc" +}; + +extern unsigned char chn_7_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_7_eye2_TA_tex_txt.inc" +}; + +extern unsigned char chn_7_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_7_eye3_TA_tex_txt.inc" +}; + +extern unsigned char chn_7_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_7_eye4_TA_tex_txt.inc" +}; + +extern unsigned char chn_7_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_7_eye5_TA_tex_txt.inc" +}; + +extern unsigned char chn_7_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_7_eye6_TA_tex_txt.inc" +}; + +extern unsigned char chn_7_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_7_eye7_TA_tex_txt.inc" +}; + +extern unsigned char chn_7_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_7_eye8_TA_tex_txt.inc" +}; + +extern unsigned char chn_7_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_7_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/chn_8.c b/src/data/npc/model/tex/chn_8.c new file mode 100644 index 00000000..f9ed0078 --- /dev/null +++ b/src/data/npc/model/tex/chn_8.c @@ -0,0 +1,40 @@ +extern unsigned short chn_8_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_8_pal.inc" +}; + +extern unsigned char chn_8_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_8_eye1_TA_tex_txt.inc" +}; + +extern unsigned char chn_8_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_8_eye2_TA_tex_txt.inc" +}; + +extern unsigned char chn_8_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_8_eye3_TA_tex_txt.inc" +}; + +extern unsigned char chn_8_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_8_eye4_TA_tex_txt.inc" +}; + +extern unsigned char chn_8_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_8_eye5_TA_tex_txt.inc" +}; + +extern unsigned char chn_8_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_8_eye6_TA_tex_txt.inc" +}; + +extern unsigned char chn_8_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_8_eye7_TA_tex_txt.inc" +}; + +extern unsigned char chn_8_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_8_eye8_TA_tex_txt.inc" +}; + +extern unsigned char chn_8_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_8_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/chn_9.c b/src/data/npc/model/tex/chn_9.c new file mode 100644 index 00000000..d507a0e7 --- /dev/null +++ b/src/data/npc/model/tex/chn_9.c @@ -0,0 +1,40 @@ +extern unsigned short chn_9_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_9_pal.inc" +}; + +extern unsigned char chn_9_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_9_eye1_TA_tex_txt.inc" +}; + +extern unsigned char chn_9_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_9_eye2_TA_tex_txt.inc" +}; + +extern unsigned char chn_9_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_9_eye3_TA_tex_txt.inc" +}; + +extern unsigned char chn_9_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_9_eye4_TA_tex_txt.inc" +}; + +extern unsigned char chn_9_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_9_eye5_TA_tex_txt.inc" +}; + +extern unsigned char chn_9_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_9_eye6_TA_tex_txt.inc" +}; + +extern unsigned char chn_9_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_9_eye7_TA_tex_txt.inc" +}; + +extern unsigned char chn_9_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_9_eye8_TA_tex_txt.inc" +}; + +extern unsigned char chn_9_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_9_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cml_1.c b/src/data/npc/model/tex/cml_1.c new file mode 100644 index 00000000..6e42898b --- /dev/null +++ b/src/data/npc/model/tex/cml_1.c @@ -0,0 +1,40 @@ +extern unsigned short cml_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cml_1_pal.inc" +}; + +extern unsigned char cml_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cml_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cml_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cml_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cml_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cml_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cml_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cml_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cml_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cml_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cml_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cml_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cml_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cml_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cml_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cml_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cml_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cml_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cow_1.c b/src/data/npc/model/tex/cow_1.c new file mode 100644 index 00000000..9996beaf --- /dev/null +++ b/src/data/npc/model/tex/cow_1.c @@ -0,0 +1,64 @@ +extern unsigned short cow_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_1_pal.inc" +}; + +extern unsigned char cow_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cow_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cow_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cow_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cow_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cow_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cow_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cow_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cow_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cow_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cow_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cow_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cow_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cow_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cow_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cow_2.c b/src/data/npc/model/tex/cow_2.c new file mode 100644 index 00000000..084eb6a0 --- /dev/null +++ b/src/data/npc/model/tex/cow_2.c @@ -0,0 +1,64 @@ +extern unsigned short cow_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_2_pal.inc" +}; + +extern unsigned char cow_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cow_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cow_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cow_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cow_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cow_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cow_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cow_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cow_2_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_2_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cow_2_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_2_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cow_2_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_2_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cow_2_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_2_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cow_2_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_2_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cow_2_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_2_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cow_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cow_3.c b/src/data/npc/model/tex/cow_3.c new file mode 100644 index 00000000..f4f8d401 --- /dev/null +++ b/src/data/npc/model/tex/cow_3.c @@ -0,0 +1,64 @@ +extern unsigned short cow_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_3_pal.inc" +}; + +extern unsigned char cow_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cow_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cow_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cow_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cow_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cow_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cow_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cow_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cow_3_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_3_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cow_3_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_3_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cow_3_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_3_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cow_3_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_3_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cow_3_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_3_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cow_3_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_3_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cow_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cow_4.c b/src/data/npc/model/tex/cow_4.c new file mode 100644 index 00000000..4bea351f --- /dev/null +++ b/src/data/npc/model/tex/cow_4.c @@ -0,0 +1,64 @@ +extern unsigned short cow_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_4_pal.inc" +}; + +extern unsigned char cow_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cow_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cow_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cow_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cow_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cow_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cow_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cow_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cow_4_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_4_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cow_4_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_4_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cow_4_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_4_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cow_4_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_4_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cow_4_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_4_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cow_4_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_4_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cow_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/crd_1.c b/src/data/npc/model/tex/crd_1.c new file mode 100644 index 00000000..35034ec4 --- /dev/null +++ b/src/data/npc/model/tex/crd_1.c @@ -0,0 +1,40 @@ +extern unsigned short crd_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_1_pal.inc" +}; + +extern unsigned char crd_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char crd_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char crd_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char crd_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char crd_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char crd_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char crd_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char crd_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char crd_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/crd_2.c b/src/data/npc/model/tex/crd_2.c new file mode 100644 index 00000000..e513e0a4 --- /dev/null +++ b/src/data/npc/model/tex/crd_2.c @@ -0,0 +1,40 @@ +extern unsigned short crd_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_2_pal.inc" +}; + +extern unsigned char crd_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char crd_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char crd_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char crd_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char crd_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char crd_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char crd_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char crd_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char crd_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/crd_3.c b/src/data/npc/model/tex/crd_3.c new file mode 100644 index 00000000..50213986 --- /dev/null +++ b/src/data/npc/model/tex/crd_3.c @@ -0,0 +1,40 @@ +extern unsigned short crd_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_3_pal.inc" +}; + +extern unsigned char crd_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char crd_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char crd_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char crd_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char crd_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char crd_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char crd_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char crd_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char crd_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/crd_4.c b/src/data/npc/model/tex/crd_4.c new file mode 100644 index 00000000..52c33fa6 --- /dev/null +++ b/src/data/npc/model/tex/crd_4.c @@ -0,0 +1,40 @@ +extern unsigned short crd_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_4_pal.inc" +}; + +extern unsigned char crd_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char crd_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char crd_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char crd_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char crd_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char crd_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char crd_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char crd_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char crd_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/dog_1.c b/src/data/npc/model/tex/dog_1.c new file mode 100644 index 00000000..79ac8c56 --- /dev/null +++ b/src/data/npc/model/tex/dog_1.c @@ -0,0 +1,64 @@ +extern unsigned short dog_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_1_pal.inc" +}; + +extern unsigned char dog_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char dog_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char dog_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char dog_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char dog_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char dog_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char dog_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char dog_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char dog_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char dog_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char dog_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char dog_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char dog_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char dog_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char dog_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/dog_10.c b/src/data/npc/model/tex/dog_10.c new file mode 100644 index 00000000..641eaef9 --- /dev/null +++ b/src/data/npc/model/tex/dog_10.c @@ -0,0 +1,64 @@ +extern unsigned short dog_10_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_10_pal.inc" +}; + +extern unsigned char dog_10_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_10_eye1_TA_tex_txt.inc" +}; + +extern unsigned char dog_10_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_10_eye2_TA_tex_txt.inc" +}; + +extern unsigned char dog_10_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_10_eye3_TA_tex_txt.inc" +}; + +extern unsigned char dog_10_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_10_eye4_TA_tex_txt.inc" +}; + +extern unsigned char dog_10_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_10_eye5_TA_tex_txt.inc" +}; + +extern unsigned char dog_10_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_10_eye6_TA_tex_txt.inc" +}; + +extern unsigned char dog_10_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_10_eye7_TA_tex_txt.inc" +}; + +extern unsigned char dog_10_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_10_eye8_TA_tex_txt.inc" +}; + +extern unsigned char dog_10_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_10_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char dog_10_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_10_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char dog_10_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_10_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char dog_10_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_10_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char dog_10_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_10_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char dog_10_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_10_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char dog_10_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_10_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/dog_2.c b/src/data/npc/model/tex/dog_2.c new file mode 100644 index 00000000..fdcbd993 --- /dev/null +++ b/src/data/npc/model/tex/dog_2.c @@ -0,0 +1,64 @@ +extern unsigned short dog_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_2_pal.inc" +}; + +extern unsigned char dog_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char dog_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char dog_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char dog_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char dog_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char dog_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char dog_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char dog_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char dog_2_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_2_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char dog_2_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_2_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char dog_2_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_2_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char dog_2_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_2_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char dog_2_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_2_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char dog_2_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_2_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char dog_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/dog_3.c b/src/data/npc/model/tex/dog_3.c new file mode 100644 index 00000000..ba78b698 --- /dev/null +++ b/src/data/npc/model/tex/dog_3.c @@ -0,0 +1,64 @@ +extern unsigned short dog_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_3_pal.inc" +}; + +extern unsigned char dog_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char dog_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char dog_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char dog_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char dog_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char dog_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char dog_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char dog_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char dog_3_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_3_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char dog_3_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_3_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char dog_3_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_3_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char dog_3_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_3_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char dog_3_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_3_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char dog_3_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_3_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char dog_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/dog_4.c b/src/data/npc/model/tex/dog_4.c new file mode 100644 index 00000000..f358f2c5 --- /dev/null +++ b/src/data/npc/model/tex/dog_4.c @@ -0,0 +1,64 @@ +extern unsigned short dog_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_4_pal.inc" +}; + +extern unsigned char dog_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char dog_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char dog_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char dog_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char dog_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char dog_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char dog_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char dog_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char dog_4_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_4_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char dog_4_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_4_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char dog_4_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_4_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char dog_4_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_4_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char dog_4_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_4_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char dog_4_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_4_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char dog_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/dog_5.c b/src/data/npc/model/tex/dog_5.c new file mode 100644 index 00000000..e44d0ceb --- /dev/null +++ b/src/data/npc/model/tex/dog_5.c @@ -0,0 +1,64 @@ +extern unsigned short dog_5_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_5_pal.inc" +}; + +extern unsigned char dog_5_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_5_eye1_TA_tex_txt.inc" +}; + +extern unsigned char dog_5_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_5_eye2_TA_tex_txt.inc" +}; + +extern unsigned char dog_5_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_5_eye3_TA_tex_txt.inc" +}; + +extern unsigned char dog_5_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_5_eye4_TA_tex_txt.inc" +}; + +extern unsigned char dog_5_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_5_eye5_TA_tex_txt.inc" +}; + +extern unsigned char dog_5_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_5_eye6_TA_tex_txt.inc" +}; + +extern unsigned char dog_5_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_5_eye7_TA_tex_txt.inc" +}; + +extern unsigned char dog_5_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_5_eye8_TA_tex_txt.inc" +}; + +extern unsigned char dog_5_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_5_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char dog_5_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_5_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char dog_5_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_5_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char dog_5_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_5_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char dog_5_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_5_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char dog_5_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_5_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char dog_5_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_5_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/dog_6.c b/src/data/npc/model/tex/dog_6.c new file mode 100644 index 00000000..cd696da6 --- /dev/null +++ b/src/data/npc/model/tex/dog_6.c @@ -0,0 +1,64 @@ +extern unsigned short dog_6_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_6_pal.inc" +}; + +extern unsigned char dog_6_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_6_eye1_TA_tex_txt.inc" +}; + +extern unsigned char dog_6_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_6_eye2_TA_tex_txt.inc" +}; + +extern unsigned char dog_6_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_6_eye3_TA_tex_txt.inc" +}; + +extern unsigned char dog_6_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_6_eye4_TA_tex_txt.inc" +}; + +extern unsigned char dog_6_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_6_eye5_TA_tex_txt.inc" +}; + +extern unsigned char dog_6_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_6_eye6_TA_tex_txt.inc" +}; + +extern unsigned char dog_6_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_6_eye7_TA_tex_txt.inc" +}; + +extern unsigned char dog_6_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_6_eye8_TA_tex_txt.inc" +}; + +extern unsigned char dog_6_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_6_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char dog_6_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_6_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char dog_6_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_6_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char dog_6_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_6_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char dog_6_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_6_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char dog_6_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_6_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char dog_6_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_6_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/dog_7.c b/src/data/npc/model/tex/dog_7.c new file mode 100644 index 00000000..2c12f0dd --- /dev/null +++ b/src/data/npc/model/tex/dog_7.c @@ -0,0 +1,64 @@ +extern unsigned short dog_7_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_7_pal.inc" +}; + +extern unsigned char dog_7_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_7_eye1_TA_tex_txt.inc" +}; + +extern unsigned char dog_7_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_7_eye2_TA_tex_txt.inc" +}; + +extern unsigned char dog_7_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_7_eye3_TA_tex_txt.inc" +}; + +extern unsigned char dog_7_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_7_eye4_TA_tex_txt.inc" +}; + +extern unsigned char dog_7_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_7_eye5_TA_tex_txt.inc" +}; + +extern unsigned char dog_7_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_7_eye6_TA_tex_txt.inc" +}; + +extern unsigned char dog_7_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_7_eye7_TA_tex_txt.inc" +}; + +extern unsigned char dog_7_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_7_eye8_TA_tex_txt.inc" +}; + +extern unsigned char dog_7_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_7_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char dog_7_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_7_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char dog_7_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_7_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char dog_7_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_7_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char dog_7_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_7_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char dog_7_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_7_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char dog_7_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_7_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/dog_8.c b/src/data/npc/model/tex/dog_8.c new file mode 100644 index 00000000..ff36cbaf --- /dev/null +++ b/src/data/npc/model/tex/dog_8.c @@ -0,0 +1,64 @@ +extern unsigned short dog_8_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_8_pal.inc" +}; + +extern unsigned char dog_8_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_8_eye1_TA_tex_txt.inc" +}; + +extern unsigned char dog_8_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_8_eye2_TA_tex_txt.inc" +}; + +extern unsigned char dog_8_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_8_eye3_TA_tex_txt.inc" +}; + +extern unsigned char dog_8_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_8_eye4_TA_tex_txt.inc" +}; + +extern unsigned char dog_8_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_8_eye5_TA_tex_txt.inc" +}; + +extern unsigned char dog_8_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_8_eye6_TA_tex_txt.inc" +}; + +extern unsigned char dog_8_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_8_eye7_TA_tex_txt.inc" +}; + +extern unsigned char dog_8_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_8_eye8_TA_tex_txt.inc" +}; + +extern unsigned char dog_8_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_8_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char dog_8_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_8_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char dog_8_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_8_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char dog_8_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_8_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char dog_8_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_8_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char dog_8_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_8_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char dog_8_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_8_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/dog_9.c b/src/data/npc/model/tex/dog_9.c new file mode 100644 index 00000000..4d92dd23 --- /dev/null +++ b/src/data/npc/model/tex/dog_9.c @@ -0,0 +1,64 @@ +extern unsigned short dog_9_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_9_pal.inc" +}; + +extern unsigned char dog_9_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_9_eye1_TA_tex_txt.inc" +}; + +extern unsigned char dog_9_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_9_eye2_TA_tex_txt.inc" +}; + +extern unsigned char dog_9_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_9_eye3_TA_tex_txt.inc" +}; + +extern unsigned char dog_9_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_9_eye4_TA_tex_txt.inc" +}; + +extern unsigned char dog_9_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_9_eye5_TA_tex_txt.inc" +}; + +extern unsigned char dog_9_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_9_eye6_TA_tex_txt.inc" +}; + +extern unsigned char dog_9_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_9_eye7_TA_tex_txt.inc" +}; + +extern unsigned char dog_9_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_9_eye8_TA_tex_txt.inc" +}; + +extern unsigned char dog_9_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_9_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char dog_9_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_9_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char dog_9_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_9_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char dog_9_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_9_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char dog_9_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_9_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char dog_9_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_9_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char dog_9_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_9_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/duk_1.c b/src/data/npc/model/tex/duk_1.c new file mode 100644 index 00000000..7198348b --- /dev/null +++ b/src/data/npc/model/tex/duk_1.c @@ -0,0 +1,64 @@ +extern unsigned short duk_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_1_pal.inc" +}; + +extern unsigned char duk_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char duk_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char duk_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char duk_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char duk_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char duk_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char duk_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char duk_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char duk_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char duk_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char duk_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char duk_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char duk_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char duk_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char duk_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/duk_10.c b/src/data/npc/model/tex/duk_10.c new file mode 100644 index 00000000..4d0243d3 --- /dev/null +++ b/src/data/npc/model/tex/duk_10.c @@ -0,0 +1,64 @@ +extern unsigned short duk_10_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_10_pal.inc" +}; + +extern unsigned char duk_10_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_10_eye1_TA_tex_txt.inc" +}; + +extern unsigned char duk_10_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_10_eye2_TA_tex_txt.inc" +}; + +extern unsigned char duk_10_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_10_eye3_TA_tex_txt.inc" +}; + +extern unsigned char duk_10_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_10_eye4_TA_tex_txt.inc" +}; + +extern unsigned char duk_10_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_10_eye5_TA_tex_txt.inc" +}; + +extern unsigned char duk_10_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_10_eye6_TA_tex_txt.inc" +}; + +extern unsigned char duk_10_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_10_eye7_TA_tex_txt.inc" +}; + +extern unsigned char duk_10_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_10_eye8_TA_tex_txt.inc" +}; + +extern unsigned char duk_10_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_10_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char duk_10_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_10_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char duk_10_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_10_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char duk_10_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_10_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char duk_10_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_10_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char duk_10_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_10_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char duk_10_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_10_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/duk_11.c b/src/data/npc/model/tex/duk_11.c new file mode 100644 index 00000000..10c50f9d --- /dev/null +++ b/src/data/npc/model/tex/duk_11.c @@ -0,0 +1,64 @@ +extern unsigned short duk_11_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_11_pal.inc" +}; + +extern unsigned char duk_11_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_11_eye1_TA_tex_txt.inc" +}; + +extern unsigned char duk_11_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_11_eye2_TA_tex_txt.inc" +}; + +extern unsigned char duk_11_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_11_eye3_TA_tex_txt.inc" +}; + +extern unsigned char duk_11_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_11_eye4_TA_tex_txt.inc" +}; + +extern unsigned char duk_11_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_11_eye5_TA_tex_txt.inc" +}; + +extern unsigned char duk_11_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_11_eye6_TA_tex_txt.inc" +}; + +extern unsigned char duk_11_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_11_eye7_TA_tex_txt.inc" +}; + +extern unsigned char duk_11_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_11_eye8_TA_tex_txt.inc" +}; + +extern unsigned char duk_11_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_11_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char duk_11_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_11_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char duk_11_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_11_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char duk_11_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_11_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char duk_11_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_11_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char duk_11_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_11_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char duk_11_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_11_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/duk_2.c b/src/data/npc/model/tex/duk_2.c new file mode 100644 index 00000000..1d93de18 --- /dev/null +++ b/src/data/npc/model/tex/duk_2.c @@ -0,0 +1,64 @@ +extern unsigned short duk_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_2_pal.inc" +}; + +extern unsigned char duk_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char duk_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char duk_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char duk_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char duk_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char duk_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char duk_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char duk_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char duk_2_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_2_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char duk_2_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_2_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char duk_2_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_2_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char duk_2_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_2_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char duk_2_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_2_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char duk_2_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_2_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char duk_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/duk_3.c b/src/data/npc/model/tex/duk_3.c new file mode 100644 index 00000000..9cac7434 --- /dev/null +++ b/src/data/npc/model/tex/duk_3.c @@ -0,0 +1,64 @@ +extern unsigned short duk_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_3_pal.inc" +}; + +extern unsigned char duk_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char duk_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char duk_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char duk_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char duk_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char duk_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char duk_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char duk_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char duk_3_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_3_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char duk_3_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_3_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char duk_3_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_3_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char duk_3_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_3_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char duk_3_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_3_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char duk_3_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_3_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char duk_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/duk_4.c b/src/data/npc/model/tex/duk_4.c new file mode 100644 index 00000000..a54bf3e9 --- /dev/null +++ b/src/data/npc/model/tex/duk_4.c @@ -0,0 +1,64 @@ +extern unsigned short duk_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_4_pal.inc" +}; + +extern unsigned char duk_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char duk_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char duk_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char duk_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char duk_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char duk_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char duk_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char duk_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char duk_4_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_4_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char duk_4_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_4_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char duk_4_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_4_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char duk_4_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_4_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char duk_4_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_4_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char duk_4_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_4_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char duk_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/duk_5.c b/src/data/npc/model/tex/duk_5.c new file mode 100644 index 00000000..bb92b5ba --- /dev/null +++ b/src/data/npc/model/tex/duk_5.c @@ -0,0 +1,64 @@ +extern unsigned short duk_5_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_5_pal.inc" +}; + +extern unsigned char duk_5_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_5_eye1_TA_tex_txt.inc" +}; + +extern unsigned char duk_5_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_5_eye2_TA_tex_txt.inc" +}; + +extern unsigned char duk_5_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_5_eye3_TA_tex_txt.inc" +}; + +extern unsigned char duk_5_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_5_eye4_TA_tex_txt.inc" +}; + +extern unsigned char duk_5_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_5_eye5_TA_tex_txt.inc" +}; + +extern unsigned char duk_5_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_5_eye6_TA_tex_txt.inc" +}; + +extern unsigned char duk_5_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_5_eye7_TA_tex_txt.inc" +}; + +extern unsigned char duk_5_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_5_eye8_TA_tex_txt.inc" +}; + +extern unsigned char duk_5_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_5_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char duk_5_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_5_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char duk_5_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_5_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char duk_5_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_5_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char duk_5_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_5_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char duk_5_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_5_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char duk_5_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_5_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/duk_6.c b/src/data/npc/model/tex/duk_6.c new file mode 100644 index 00000000..d1abda9e --- /dev/null +++ b/src/data/npc/model/tex/duk_6.c @@ -0,0 +1,64 @@ +extern unsigned short duk_6_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_6_pal.inc" +}; + +extern unsigned char duk_6_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_6_eye1_TA_tex_txt.inc" +}; + +extern unsigned char duk_6_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_6_eye2_TA_tex_txt.inc" +}; + +extern unsigned char duk_6_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_6_eye3_TA_tex_txt.inc" +}; + +extern unsigned char duk_6_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_6_eye4_TA_tex_txt.inc" +}; + +extern unsigned char duk_6_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_6_eye5_TA_tex_txt.inc" +}; + +extern unsigned char duk_6_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_6_eye6_TA_tex_txt.inc" +}; + +extern unsigned char duk_6_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_6_eye7_TA_tex_txt.inc" +}; + +extern unsigned char duk_6_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_6_eye8_TA_tex_txt.inc" +}; + +extern unsigned char duk_6_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_6_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char duk_6_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_6_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char duk_6_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_6_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char duk_6_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_6_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char duk_6_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_6_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char duk_6_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_6_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char duk_6_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_6_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/duk_7.c b/src/data/npc/model/tex/duk_7.c new file mode 100644 index 00000000..90962380 --- /dev/null +++ b/src/data/npc/model/tex/duk_7.c @@ -0,0 +1,64 @@ +extern unsigned short duk_7_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_7_pal.inc" +}; + +extern unsigned char duk_7_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_7_eye1_TA_tex_txt.inc" +}; + +extern unsigned char duk_7_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_7_eye2_TA_tex_txt.inc" +}; + +extern unsigned char duk_7_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_7_eye3_TA_tex_txt.inc" +}; + +extern unsigned char duk_7_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_7_eye4_TA_tex_txt.inc" +}; + +extern unsigned char duk_7_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_7_eye5_TA_tex_txt.inc" +}; + +extern unsigned char duk_7_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_7_eye6_TA_tex_txt.inc" +}; + +extern unsigned char duk_7_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_7_eye7_TA_tex_txt.inc" +}; + +extern unsigned char duk_7_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_7_eye8_TA_tex_txt.inc" +}; + +extern unsigned char duk_7_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_7_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char duk_7_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_7_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char duk_7_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_7_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char duk_7_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_7_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char duk_7_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_7_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char duk_7_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_7_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char duk_7_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_7_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/duk_8.c b/src/data/npc/model/tex/duk_8.c new file mode 100644 index 00000000..b72220f5 --- /dev/null +++ b/src/data/npc/model/tex/duk_8.c @@ -0,0 +1,64 @@ +extern unsigned short duk_8_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_8_pal.inc" +}; + +extern unsigned char duk_8_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_8_eye1_TA_tex_txt.inc" +}; + +extern unsigned char duk_8_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_8_eye2_TA_tex_txt.inc" +}; + +extern unsigned char duk_8_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_8_eye3_TA_tex_txt.inc" +}; + +extern unsigned char duk_8_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_8_eye4_TA_tex_txt.inc" +}; + +extern unsigned char duk_8_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_8_eye5_TA_tex_txt.inc" +}; + +extern unsigned char duk_8_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_8_eye6_TA_tex_txt.inc" +}; + +extern unsigned char duk_8_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_8_eye7_TA_tex_txt.inc" +}; + +extern unsigned char duk_8_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_8_eye8_TA_tex_txt.inc" +}; + +extern unsigned char duk_8_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_8_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char duk_8_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_8_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char duk_8_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_8_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char duk_8_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_8_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char duk_8_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_8_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char duk_8_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_8_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char duk_8_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_8_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/duk_9.c b/src/data/npc/model/tex/duk_9.c new file mode 100644 index 00000000..9ade2775 --- /dev/null +++ b/src/data/npc/model/tex/duk_9.c @@ -0,0 +1,64 @@ +extern unsigned short duk_9_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_9_pal.inc" +}; + +extern unsigned char duk_9_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_9_eye1_TA_tex_txt.inc" +}; + +extern unsigned char duk_9_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_9_eye2_TA_tex_txt.inc" +}; + +extern unsigned char duk_9_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_9_eye3_TA_tex_txt.inc" +}; + +extern unsigned char duk_9_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_9_eye4_TA_tex_txt.inc" +}; + +extern unsigned char duk_9_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_9_eye5_TA_tex_txt.inc" +}; + +extern unsigned char duk_9_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_9_eye6_TA_tex_txt.inc" +}; + +extern unsigned char duk_9_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_9_eye7_TA_tex_txt.inc" +}; + +extern unsigned char duk_9_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_9_eye8_TA_tex_txt.inc" +}; + +extern unsigned char duk_9_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_9_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char duk_9_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_9_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char duk_9_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_9_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char duk_9_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_9_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char duk_9_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_9_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char duk_9_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_9_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char duk_9_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_9_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/elp_1.c b/src/data/npc/model/tex/elp_1.c new file mode 100644 index 00000000..e5684c34 --- /dev/null +++ b/src/data/npc/model/tex/elp_1.c @@ -0,0 +1,64 @@ +extern unsigned short elp_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_1_pal.inc" +}; + +extern unsigned char elp_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char elp_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char elp_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char elp_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char elp_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char elp_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char elp_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char elp_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char elp_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char elp_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char elp_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char elp_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char elp_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char elp_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char elp_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/elp_2.c b/src/data/npc/model/tex/elp_2.c new file mode 100644 index 00000000..d5321115 --- /dev/null +++ b/src/data/npc/model/tex/elp_2.c @@ -0,0 +1,64 @@ +extern unsigned short elp_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_2_pal.inc" +}; + +extern unsigned char elp_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char elp_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char elp_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char elp_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char elp_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char elp_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char elp_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char elp_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char elp_2_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_2_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char elp_2_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_2_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char elp_2_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_2_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char elp_2_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_2_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char elp_2_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_2_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char elp_2_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_2_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char elp_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/elp_3.c b/src/data/npc/model/tex/elp_3.c new file mode 100644 index 00000000..c6ff3d4b --- /dev/null +++ b/src/data/npc/model/tex/elp_3.c @@ -0,0 +1,64 @@ +extern unsigned short elp_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_3_pal.inc" +}; + +extern unsigned char elp_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char elp_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char elp_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char elp_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char elp_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char elp_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char elp_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char elp_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char elp_3_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_3_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char elp_3_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_3_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char elp_3_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_3_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char elp_3_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_3_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char elp_3_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_3_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char elp_3_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_3_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char elp_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/elp_4.c b/src/data/npc/model/tex/elp_4.c new file mode 100644 index 00000000..0c5f70ab --- /dev/null +++ b/src/data/npc/model/tex/elp_4.c @@ -0,0 +1,64 @@ +extern unsigned short elp_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_4_pal.inc" +}; + +extern unsigned char elp_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char elp_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char elp_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char elp_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char elp_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char elp_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char elp_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char elp_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char elp_4_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_4_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char elp_4_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_4_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char elp_4_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_4_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char elp_4_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_4_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char elp_4_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_4_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char elp_4_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_4_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char elp_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/elp_5.c b/src/data/npc/model/tex/elp_5.c new file mode 100644 index 00000000..c289b493 --- /dev/null +++ b/src/data/npc/model/tex/elp_5.c @@ -0,0 +1,64 @@ +extern unsigned short elp_5_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_5_pal.inc" +}; + +extern unsigned char elp_5_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_5_eye1_TA_tex_txt.inc" +}; + +extern unsigned char elp_5_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_5_eye2_TA_tex_txt.inc" +}; + +extern unsigned char elp_5_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_5_eye3_TA_tex_txt.inc" +}; + +extern unsigned char elp_5_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_5_eye4_TA_tex_txt.inc" +}; + +extern unsigned char elp_5_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_5_eye5_TA_tex_txt.inc" +}; + +extern unsigned char elp_5_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_5_eye6_TA_tex_txt.inc" +}; + +extern unsigned char elp_5_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_5_eye7_TA_tex_txt.inc" +}; + +extern unsigned char elp_5_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_5_eye8_TA_tex_txt.inc" +}; + +extern unsigned char elp_5_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_5_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char elp_5_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_5_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char elp_5_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_5_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char elp_5_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_5_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char elp_5_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_5_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char elp_5_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_5_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char elp_5_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_5_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/elp_6.c b/src/data/npc/model/tex/elp_6.c new file mode 100644 index 00000000..6ac85a4e --- /dev/null +++ b/src/data/npc/model/tex/elp_6.c @@ -0,0 +1,64 @@ +extern unsigned short elp_6_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_6_pal.inc" +}; + +extern unsigned char elp_6_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_6_eye1_TA_tex_txt.inc" +}; + +extern unsigned char elp_6_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_6_eye2_TA_tex_txt.inc" +}; + +extern unsigned char elp_6_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_6_eye3_TA_tex_txt.inc" +}; + +extern unsigned char elp_6_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_6_eye4_TA_tex_txt.inc" +}; + +extern unsigned char elp_6_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_6_eye5_TA_tex_txt.inc" +}; + +extern unsigned char elp_6_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_6_eye6_TA_tex_txt.inc" +}; + +extern unsigned char elp_6_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_6_eye7_TA_tex_txt.inc" +}; + +extern unsigned char elp_6_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_6_eye8_TA_tex_txt.inc" +}; + +extern unsigned char elp_6_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_6_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char elp_6_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_6_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char elp_6_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_6_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char elp_6_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_6_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char elp_6_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_6_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char elp_6_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_6_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char elp_6_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_6_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/elp_7.c b/src/data/npc/model/tex/elp_7.c new file mode 100644 index 00000000..f34cc23b --- /dev/null +++ b/src/data/npc/model/tex/elp_7.c @@ -0,0 +1,64 @@ +extern unsigned short elp_7_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_7_pal.inc" +}; + +extern unsigned char elp_7_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_7_eye1_TA_tex_txt.inc" +}; + +extern unsigned char elp_7_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_7_eye2_TA_tex_txt.inc" +}; + +extern unsigned char elp_7_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_7_eye3_TA_tex_txt.inc" +}; + +extern unsigned char elp_7_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_7_eye4_TA_tex_txt.inc" +}; + +extern unsigned char elp_7_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_7_eye5_TA_tex_txt.inc" +}; + +extern unsigned char elp_7_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_7_eye6_TA_tex_txt.inc" +}; + +extern unsigned char elp_7_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_7_eye7_TA_tex_txt.inc" +}; + +extern unsigned char elp_7_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_7_eye8_TA_tex_txt.inc" +}; + +extern unsigned char elp_7_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_7_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char elp_7_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_7_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char elp_7_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_7_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char elp_7_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_7_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char elp_7_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_7_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char elp_7_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_7_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char elp_7_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_7_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/end_1.c b/src/data/npc/model/tex/end_1.c new file mode 100644 index 00000000..759a11c5 --- /dev/null +++ b/src/data/npc/model/tex/end_1.c @@ -0,0 +1,64 @@ +extern unsigned short end_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/end_1_pal.inc" +}; + +extern unsigned char end_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/end_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char end_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/end_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char end_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/end_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char end_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/end_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char end_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/end_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char end_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/end_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char end_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/end_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char end_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/end_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char end_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/end_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char end_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/end_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char end_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/end_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char end_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/end_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char end_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/end_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char end_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/end_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char end_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/end_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/flg_1.c b/src/data/npc/model/tex/flg_1.c new file mode 100644 index 00000000..1ce9d34a --- /dev/null +++ b/src/data/npc/model/tex/flg_1.c @@ -0,0 +1,64 @@ +extern unsigned short flg_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_1_pal.inc" +}; + +extern unsigned char flg_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char flg_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char flg_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char flg_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char flg_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char flg_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char flg_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char flg_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char flg_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char flg_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char flg_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char flg_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char flg_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char flg_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char flg_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/flg_10.c b/src/data/npc/model/tex/flg_10.c new file mode 100644 index 00000000..a8321489 --- /dev/null +++ b/src/data/npc/model/tex/flg_10.c @@ -0,0 +1,64 @@ +extern unsigned short flg_10_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_10_pal.inc" +}; + +extern unsigned char flg_10_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_10_eye1_TA_tex_txt.inc" +}; + +extern unsigned char flg_10_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_10_eye2_TA_tex_txt.inc" +}; + +extern unsigned char flg_10_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_10_eye3_TA_tex_txt.inc" +}; + +extern unsigned char flg_10_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_10_eye4_TA_tex_txt.inc" +}; + +extern unsigned char flg_10_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_10_eye5_TA_tex_txt.inc" +}; + +extern unsigned char flg_10_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_10_eye6_TA_tex_txt.inc" +}; + +extern unsigned char flg_10_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_10_eye7_TA_tex_txt.inc" +}; + +extern unsigned char flg_10_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_10_eye8_TA_tex_txt.inc" +}; + +extern unsigned char flg_10_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_10_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char flg_10_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_10_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char flg_10_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_10_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char flg_10_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_10_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char flg_10_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_10_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char flg_10_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_10_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char flg_10_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_10_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/flg_11.c b/src/data/npc/model/tex/flg_11.c new file mode 100644 index 00000000..5cf5810b --- /dev/null +++ b/src/data/npc/model/tex/flg_11.c @@ -0,0 +1,64 @@ +extern unsigned short flg_11_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_11_pal.inc" +}; + +extern unsigned char flg_11_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_11_eye1_TA_tex_txt.inc" +}; + +extern unsigned char flg_11_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_11_eye2_TA_tex_txt.inc" +}; + +extern unsigned char flg_11_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_11_eye3_TA_tex_txt.inc" +}; + +extern unsigned char flg_11_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_11_eye4_TA_tex_txt.inc" +}; + +extern unsigned char flg_11_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_11_eye5_TA_tex_txt.inc" +}; + +extern unsigned char flg_11_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_11_eye6_TA_tex_txt.inc" +}; + +extern unsigned char flg_11_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_11_eye7_TA_tex_txt.inc" +}; + +extern unsigned char flg_11_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_11_eye8_TA_tex_txt.inc" +}; + +extern unsigned char flg_11_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_11_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char flg_11_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_11_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char flg_11_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_11_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char flg_11_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_11_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char flg_11_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_11_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char flg_11_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_11_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char flg_11_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_11_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/flg_12.c b/src/data/npc/model/tex/flg_12.c new file mode 100644 index 00000000..238b58f6 --- /dev/null +++ b/src/data/npc/model/tex/flg_12.c @@ -0,0 +1,64 @@ +extern unsigned short flg_12_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_12_pal.inc" +}; + +extern unsigned char flg_12_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_12_eye1_TA_tex_txt.inc" +}; + +extern unsigned char flg_12_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_12_eye2_TA_tex_txt.inc" +}; + +extern unsigned char flg_12_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_12_eye3_TA_tex_txt.inc" +}; + +extern unsigned char flg_12_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_12_eye4_TA_tex_txt.inc" +}; + +extern unsigned char flg_12_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_12_eye5_TA_tex_txt.inc" +}; + +extern unsigned char flg_12_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_12_eye6_TA_tex_txt.inc" +}; + +extern unsigned char flg_12_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_12_eye7_TA_tex_txt.inc" +}; + +extern unsigned char flg_12_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_12_eye8_TA_tex_txt.inc" +}; + +extern unsigned char flg_12_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_12_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char flg_12_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_12_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char flg_12_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_12_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char flg_12_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_12_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char flg_12_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_12_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char flg_12_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_12_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char flg_12_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_12_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/flg_13.c b/src/data/npc/model/tex/flg_13.c new file mode 100644 index 00000000..128a8f11 --- /dev/null +++ b/src/data/npc/model/tex/flg_13.c @@ -0,0 +1,64 @@ +extern unsigned short flg_13_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_13_pal.inc" +}; + +extern unsigned char flg_13_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_13_eye1_TA_tex_txt.inc" +}; + +extern unsigned char flg_13_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_13_eye2_TA_tex_txt.inc" +}; + +extern unsigned char flg_13_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_13_eye3_TA_tex_txt.inc" +}; + +extern unsigned char flg_13_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_13_eye4_TA_tex_txt.inc" +}; + +extern unsigned char flg_13_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_13_eye5_TA_tex_txt.inc" +}; + +extern unsigned char flg_13_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_13_eye6_TA_tex_txt.inc" +}; + +extern unsigned char flg_13_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_13_eye7_TA_tex_txt.inc" +}; + +extern unsigned char flg_13_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_13_eye8_TA_tex_txt.inc" +}; + +extern unsigned char flg_13_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_13_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char flg_13_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_13_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char flg_13_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_13_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char flg_13_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_13_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char flg_13_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_13_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char flg_13_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_13_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char flg_13_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_13_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/flg_2.c b/src/data/npc/model/tex/flg_2.c new file mode 100644 index 00000000..1d6d26d6 --- /dev/null +++ b/src/data/npc/model/tex/flg_2.c @@ -0,0 +1,64 @@ +extern unsigned short flg_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_2_pal.inc" +}; + +extern unsigned char flg_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char flg_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char flg_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char flg_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char flg_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char flg_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char flg_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char flg_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char flg_2_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_2_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char flg_2_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_2_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char flg_2_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_2_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char flg_2_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_2_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char flg_2_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_2_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char flg_2_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_2_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char flg_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/flg_3.c b/src/data/npc/model/tex/flg_3.c new file mode 100644 index 00000000..26f2219f --- /dev/null +++ b/src/data/npc/model/tex/flg_3.c @@ -0,0 +1,64 @@ +extern unsigned short flg_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_3_pal.inc" +}; + +extern unsigned char flg_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char flg_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char flg_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char flg_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char flg_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char flg_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char flg_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char flg_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char flg_3_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_3_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char flg_3_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_3_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char flg_3_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_3_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char flg_3_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_3_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char flg_3_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_3_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char flg_3_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_3_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char flg_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/flg_4.c b/src/data/npc/model/tex/flg_4.c new file mode 100644 index 00000000..9bba2101 --- /dev/null +++ b/src/data/npc/model/tex/flg_4.c @@ -0,0 +1,64 @@ +extern unsigned short flg_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_4_pal.inc" +}; + +extern unsigned char flg_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char flg_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char flg_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char flg_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char flg_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char flg_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char flg_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char flg_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char flg_4_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_4_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char flg_4_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_4_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char flg_4_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_4_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char flg_4_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_4_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char flg_4_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_4_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char flg_4_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_4_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char flg_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/flg_5.c b/src/data/npc/model/tex/flg_5.c new file mode 100644 index 00000000..cc0d3770 --- /dev/null +++ b/src/data/npc/model/tex/flg_5.c @@ -0,0 +1,64 @@ +extern unsigned short flg_5_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_5_pal.inc" +}; + +extern unsigned char flg_5_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_5_eye1_TA_tex_txt.inc" +}; + +extern unsigned char flg_5_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_5_eye2_TA_tex_txt.inc" +}; + +extern unsigned char flg_5_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_5_eye3_TA_tex_txt.inc" +}; + +extern unsigned char flg_5_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_5_eye4_TA_tex_txt.inc" +}; + +extern unsigned char flg_5_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_5_eye5_TA_tex_txt.inc" +}; + +extern unsigned char flg_5_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_5_eye6_TA_tex_txt.inc" +}; + +extern unsigned char flg_5_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_5_eye7_TA_tex_txt.inc" +}; + +extern unsigned char flg_5_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_5_eye8_TA_tex_txt.inc" +}; + +extern unsigned char flg_5_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_5_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char flg_5_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_5_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char flg_5_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_5_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char flg_5_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_5_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char flg_5_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_5_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char flg_5_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_5_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char flg_5_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_5_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/flg_6.c b/src/data/npc/model/tex/flg_6.c new file mode 100644 index 00000000..afff9c8b --- /dev/null +++ b/src/data/npc/model/tex/flg_6.c @@ -0,0 +1,64 @@ +extern unsigned short flg_6_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_6_pal.inc" +}; + +extern unsigned char flg_6_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_6_eye1_TA_tex_txt.inc" +}; + +extern unsigned char flg_6_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_6_eye2_TA_tex_txt.inc" +}; + +extern unsigned char flg_6_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_6_eye3_TA_tex_txt.inc" +}; + +extern unsigned char flg_6_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_6_eye4_TA_tex_txt.inc" +}; + +extern unsigned char flg_6_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_6_eye5_TA_tex_txt.inc" +}; + +extern unsigned char flg_6_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_6_eye6_TA_tex_txt.inc" +}; + +extern unsigned char flg_6_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_6_eye7_TA_tex_txt.inc" +}; + +extern unsigned char flg_6_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_6_eye8_TA_tex_txt.inc" +}; + +extern unsigned char flg_6_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_6_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char flg_6_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_6_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char flg_6_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_6_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char flg_6_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_6_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char flg_6_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_6_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char flg_6_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_6_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char flg_6_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_6_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/flg_7.c b/src/data/npc/model/tex/flg_7.c new file mode 100644 index 00000000..e2cd0306 --- /dev/null +++ b/src/data/npc/model/tex/flg_7.c @@ -0,0 +1,64 @@ +extern unsigned short flg_7_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_7_pal.inc" +}; + +extern unsigned char flg_7_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_7_eye1_TA_tex_txt.inc" +}; + +extern unsigned char flg_7_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_7_eye2_TA_tex_txt.inc" +}; + +extern unsigned char flg_7_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_7_eye3_TA_tex_txt.inc" +}; + +extern unsigned char flg_7_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_7_eye4_TA_tex_txt.inc" +}; + +extern unsigned char flg_7_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_7_eye5_TA_tex_txt.inc" +}; + +extern unsigned char flg_7_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_7_eye6_TA_tex_txt.inc" +}; + +extern unsigned char flg_7_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_7_eye7_TA_tex_txt.inc" +}; + +extern unsigned char flg_7_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_7_eye8_TA_tex_txt.inc" +}; + +extern unsigned char flg_7_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_7_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char flg_7_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_7_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char flg_7_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_7_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char flg_7_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_7_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char flg_7_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_7_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char flg_7_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_7_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char flg_7_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_7_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/flg_8.c b/src/data/npc/model/tex/flg_8.c new file mode 100644 index 00000000..399a96d1 --- /dev/null +++ b/src/data/npc/model/tex/flg_8.c @@ -0,0 +1,64 @@ +extern unsigned short flg_8_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_8_pal.inc" +}; + +extern unsigned char flg_8_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_8_eye1_TA_tex_txt.inc" +}; + +extern unsigned char flg_8_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_8_eye2_TA_tex_txt.inc" +}; + +extern unsigned char flg_8_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_8_eye3_TA_tex_txt.inc" +}; + +extern unsigned char flg_8_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_8_eye4_TA_tex_txt.inc" +}; + +extern unsigned char flg_8_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_8_eye5_TA_tex_txt.inc" +}; + +extern unsigned char flg_8_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_8_eye6_TA_tex_txt.inc" +}; + +extern unsigned char flg_8_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_8_eye7_TA_tex_txt.inc" +}; + +extern unsigned char flg_8_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_8_eye8_TA_tex_txt.inc" +}; + +extern unsigned char flg_8_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_8_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char flg_8_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_8_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char flg_8_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_8_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char flg_8_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_8_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char flg_8_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_8_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char flg_8_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_8_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char flg_8_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_8_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/flg_9.c b/src/data/npc/model/tex/flg_9.c new file mode 100644 index 00000000..2a30dcbc --- /dev/null +++ b/src/data/npc/model/tex/flg_9.c @@ -0,0 +1,64 @@ +extern unsigned short flg_9_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_9_pal.inc" +}; + +extern unsigned char flg_9_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_9_eye1_TA_tex_txt.inc" +}; + +extern unsigned char flg_9_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_9_eye2_TA_tex_txt.inc" +}; + +extern unsigned char flg_9_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_9_eye3_TA_tex_txt.inc" +}; + +extern unsigned char flg_9_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_9_eye4_TA_tex_txt.inc" +}; + +extern unsigned char flg_9_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_9_eye5_TA_tex_txt.inc" +}; + +extern unsigned char flg_9_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_9_eye6_TA_tex_txt.inc" +}; + +extern unsigned char flg_9_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_9_eye7_TA_tex_txt.inc" +}; + +extern unsigned char flg_9_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_9_eye8_TA_tex_txt.inc" +}; + +extern unsigned char flg_9_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_9_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char flg_9_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_9_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char flg_9_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_9_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char flg_9_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_9_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char flg_9_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_9_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char flg_9_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_9_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char flg_9_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_9_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/fob_1.c b/src/data/npc/model/tex/fob_1.c new file mode 100644 index 00000000..d0c795b8 --- /dev/null +++ b/src/data/npc/model/tex/fob_1.c @@ -0,0 +1,40 @@ +extern unsigned short fob_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/fob_1_pal.inc" +}; + +extern unsigned char fob_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/fob_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char fob_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/fob_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char fob_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/fob_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char fob_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/fob_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char fob_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/fob_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char fob_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/fob_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char fob_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/fob_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char fob_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/fob_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char fob_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/fob_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/fox_1.c b/src/data/npc/model/tex/fox_1.c new file mode 100644 index 00000000..0867e8ae --- /dev/null +++ b/src/data/npc/model/tex/fox_1.c @@ -0,0 +1,40 @@ +extern unsigned short fox_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/fox_1_pal.inc" +}; + +extern unsigned char fox_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/fox_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char fox_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/fox_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char fox_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/fox_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char fox_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/fox_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char fox_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/fox_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char fox_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/fox_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char fox_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/fox_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char fox_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/fox_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char fox_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/fox_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/goa_1.c b/src/data/npc/model/tex/goa_1.c new file mode 100644 index 00000000..d9aba2c7 --- /dev/null +++ b/src/data/npc/model/tex/goa_1.c @@ -0,0 +1,64 @@ +extern unsigned short goa_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_1_pal.inc" +}; + +extern unsigned char goa_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char goa_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char goa_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char goa_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char goa_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char goa_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char goa_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char goa_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char goa_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char goa_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char goa_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char goa_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char goa_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char goa_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char goa_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/goa_2.c b/src/data/npc/model/tex/goa_2.c new file mode 100644 index 00000000..a0061d04 --- /dev/null +++ b/src/data/npc/model/tex/goa_2.c @@ -0,0 +1,64 @@ +extern unsigned short goa_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_2_pal.inc" +}; + +extern unsigned char goa_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char goa_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char goa_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char goa_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char goa_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char goa_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char goa_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char goa_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char goa_2_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_2_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char goa_2_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_2_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char goa_2_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_2_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char goa_2_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_2_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char goa_2_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_2_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char goa_2_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_2_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char goa_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/goa_3.c b/src/data/npc/model/tex/goa_3.c new file mode 100644 index 00000000..52440869 --- /dev/null +++ b/src/data/npc/model/tex/goa_3.c @@ -0,0 +1,64 @@ +extern unsigned short goa_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_3_pal.inc" +}; + +extern unsigned char goa_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char goa_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char goa_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char goa_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char goa_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char goa_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char goa_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char goa_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char goa_3_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_3_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char goa_3_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_3_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char goa_3_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_3_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char goa_3_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_3_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char goa_3_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_3_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char goa_3_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_3_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char goa_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/goa_4.c b/src/data/npc/model/tex/goa_4.c new file mode 100644 index 00000000..9fd0b28c --- /dev/null +++ b/src/data/npc/model/tex/goa_4.c @@ -0,0 +1,64 @@ +extern unsigned short goa_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_4_pal.inc" +}; + +extern unsigned char goa_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char goa_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char goa_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char goa_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char goa_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char goa_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char goa_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char goa_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char goa_4_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_4_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char goa_4_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_4_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char goa_4_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_4_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char goa_4_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_4_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char goa_4_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_4_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char goa_4_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_4_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char goa_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/goa_5.c b/src/data/npc/model/tex/goa_5.c new file mode 100644 index 00000000..4ae9d3f5 --- /dev/null +++ b/src/data/npc/model/tex/goa_5.c @@ -0,0 +1,64 @@ +extern unsigned short goa_5_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_5_pal.inc" +}; + +extern unsigned char goa_5_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_5_eye1_TA_tex_txt.inc" +}; + +extern unsigned char goa_5_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_5_eye2_TA_tex_txt.inc" +}; + +extern unsigned char goa_5_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_5_eye3_TA_tex_txt.inc" +}; + +extern unsigned char goa_5_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_5_eye4_TA_tex_txt.inc" +}; + +extern unsigned char goa_5_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_5_eye5_TA_tex_txt.inc" +}; + +extern unsigned char goa_5_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_5_eye6_TA_tex_txt.inc" +}; + +extern unsigned char goa_5_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_5_eye7_TA_tex_txt.inc" +}; + +extern unsigned char goa_5_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_5_eye8_TA_tex_txt.inc" +}; + +extern unsigned char goa_5_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_5_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char goa_5_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_5_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char goa_5_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_5_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char goa_5_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_5_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char goa_5_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_5_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char goa_5_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_5_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char goa_5_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_5_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/goa_6.c b/src/data/npc/model/tex/goa_6.c new file mode 100644 index 00000000..e71dfde2 --- /dev/null +++ b/src/data/npc/model/tex/goa_6.c @@ -0,0 +1,64 @@ +extern unsigned short goa_6_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_6_pal.inc" +}; + +extern unsigned char goa_6_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_6_eye1_TA_tex_txt.inc" +}; + +extern unsigned char goa_6_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_6_eye2_TA_tex_txt.inc" +}; + +extern unsigned char goa_6_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_6_eye3_TA_tex_txt.inc" +}; + +extern unsigned char goa_6_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_6_eye4_TA_tex_txt.inc" +}; + +extern unsigned char goa_6_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_6_eye5_TA_tex_txt.inc" +}; + +extern unsigned char goa_6_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_6_eye6_TA_tex_txt.inc" +}; + +extern unsigned char goa_6_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_6_eye7_TA_tex_txt.inc" +}; + +extern unsigned char goa_6_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_6_eye8_TA_tex_txt.inc" +}; + +extern unsigned char goa_6_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_6_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char goa_6_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_6_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char goa_6_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_6_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char goa_6_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_6_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char goa_6_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_6_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char goa_6_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_6_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char goa_6_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_6_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/gor_1.c b/src/data/npc/model/tex/gor_1.c new file mode 100644 index 00000000..18aee765 --- /dev/null +++ b/src/data/npc/model/tex/gor_1.c @@ -0,0 +1,64 @@ +extern unsigned short gor_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_1_pal.inc" +}; + +extern unsigned char gor_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char gor_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char gor_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char gor_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char gor_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char gor_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char gor_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char gor_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char gor_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char gor_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char gor_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char gor_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char gor_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char gor_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char gor_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/gor_2.c b/src/data/npc/model/tex/gor_2.c new file mode 100644 index 00000000..cf53fe49 --- /dev/null +++ b/src/data/npc/model/tex/gor_2.c @@ -0,0 +1,64 @@ +extern unsigned short gor_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_2_pal.inc" +}; + +extern unsigned char gor_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char gor_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char gor_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char gor_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char gor_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char gor_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char gor_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char gor_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char gor_2_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_2_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char gor_2_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_2_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char gor_2_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_2_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char gor_2_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_2_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char gor_2_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_2_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char gor_2_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_2_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char gor_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/gor_3.c b/src/data/npc/model/tex/gor_3.c new file mode 100644 index 00000000..091cd9c5 --- /dev/null +++ b/src/data/npc/model/tex/gor_3.c @@ -0,0 +1,64 @@ +extern unsigned short gor_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_3_pal.inc" +}; + +extern unsigned char gor_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char gor_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char gor_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char gor_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char gor_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char gor_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char gor_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char gor_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char gor_3_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_3_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char gor_3_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_3_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char gor_3_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_3_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char gor_3_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_3_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char gor_3_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_3_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char gor_3_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_3_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char gor_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/gor_4.c b/src/data/npc/model/tex/gor_4.c new file mode 100644 index 00000000..0c22eef8 --- /dev/null +++ b/src/data/npc/model/tex/gor_4.c @@ -0,0 +1,64 @@ +extern unsigned short gor_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_4_pal.inc" +}; + +extern unsigned char gor_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char gor_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char gor_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char gor_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char gor_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char gor_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char gor_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char gor_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char gor_4_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_4_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char gor_4_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_4_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char gor_4_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_4_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char gor_4_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_4_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char gor_4_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_4_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char gor_4_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_4_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char gor_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/gor_5.c b/src/data/npc/model/tex/gor_5.c new file mode 100644 index 00000000..a9cc4319 --- /dev/null +++ b/src/data/npc/model/tex/gor_5.c @@ -0,0 +1,64 @@ +extern unsigned short gor_5_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_5_pal.inc" +}; + +extern unsigned char gor_5_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_5_eye1_TA_tex_txt.inc" +}; + +extern unsigned char gor_5_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_5_eye2_TA_tex_txt.inc" +}; + +extern unsigned char gor_5_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_5_eye3_TA_tex_txt.inc" +}; + +extern unsigned char gor_5_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_5_eye4_TA_tex_txt.inc" +}; + +extern unsigned char gor_5_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_5_eye5_TA_tex_txt.inc" +}; + +extern unsigned char gor_5_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_5_eye6_TA_tex_txt.inc" +}; + +extern unsigned char gor_5_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_5_eye7_TA_tex_txt.inc" +}; + +extern unsigned char gor_5_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_5_eye8_TA_tex_txt.inc" +}; + +extern unsigned char gor_5_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_5_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char gor_5_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_5_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char gor_5_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_5_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char gor_5_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_5_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char gor_5_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_5_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char gor_5_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_5_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char gor_5_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_5_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/grf_1.c b/src/data/npc/model/tex/grf_1.c new file mode 100644 index 00000000..d32fbb03 --- /dev/null +++ b/src/data/npc/model/tex/grf_1.c @@ -0,0 +1,40 @@ +extern unsigned short grf_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/grf_1_pal.inc" +}; + +extern unsigned char grf_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/grf_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char grf_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/grf_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char grf_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/grf_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char grf_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/grf_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char grf_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/grf_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char grf_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/grf_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char grf_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/grf_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char grf_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/grf_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char grf_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/grf_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/gst_1.c b/src/data/npc/model/tex/gst_1.c new file mode 100644 index 00000000..94fc9fe3 --- /dev/null +++ b/src/data/npc/model/tex/gst_1.c @@ -0,0 +1,64 @@ +extern unsigned short gst_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gst_1_pal.inc" +}; + +extern unsigned char gst_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gst_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char gst_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gst_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char gst_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gst_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char gst_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gst_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char gst_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gst_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char gst_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gst_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char gst_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gst_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char gst_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gst_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char gst_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gst_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char gst_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gst_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char gst_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gst_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char gst_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gst_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char gst_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gst_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char gst_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gst_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char gst_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gst_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/hem_1.c b/src/data/npc/model/tex/hem_1.c new file mode 100644 index 00000000..9503b3c7 --- /dev/null +++ b/src/data/npc/model/tex/hem_1.c @@ -0,0 +1,8 @@ +extern unsigned short hem_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hem_1_pal.inc" +}; + +extern unsigned char hem_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hem_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/hgh_1.c b/src/data/npc/model/tex/hgh_1.c new file mode 100644 index 00000000..3688cb68 --- /dev/null +++ b/src/data/npc/model/tex/hgh_1.c @@ -0,0 +1,40 @@ +extern unsigned short hgh_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hgh_1_pal.inc" +}; + +extern unsigned char hgh_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hgh_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char hgh_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hgh_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char hgh_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hgh_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char hgh_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hgh_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char hgh_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hgh_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char hgh_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hgh_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char hgh_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hgh_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char hgh_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hgh_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char hgh_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hgh_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/hgs_1.c b/src/data/npc/model/tex/hgs_1.c new file mode 100644 index 00000000..21e88421 --- /dev/null +++ b/src/data/npc/model/tex/hgs_1.c @@ -0,0 +1,40 @@ +extern unsigned short hgs_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hgs_1_pal.inc" +}; + +extern unsigned char hgs_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hgs_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char hgs_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hgs_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char hgs_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hgs_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char hgs_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hgs_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char hgs_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hgs_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char hgs_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hgs_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char hgs_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hgs_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char hgs_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hgs_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char hgs_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hgs_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/hip_1.c b/src/data/npc/model/tex/hip_1.c new file mode 100644 index 00000000..47ad3760 --- /dev/null +++ b/src/data/npc/model/tex/hip_1.c @@ -0,0 +1,40 @@ +extern unsigned short hip_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_1_pal.inc" +}; + +extern unsigned char hip_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char hip_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char hip_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char hip_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char hip_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char hip_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char hip_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char hip_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char hip_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/hip_2.c b/src/data/npc/model/tex/hip_2.c new file mode 100644 index 00000000..c920384b --- /dev/null +++ b/src/data/npc/model/tex/hip_2.c @@ -0,0 +1,40 @@ +extern unsigned short hip_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_2_pal.inc" +}; + +extern unsigned char hip_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char hip_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char hip_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char hip_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char hip_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char hip_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char hip_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char hip_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char hip_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/hip_3.c b/src/data/npc/model/tex/hip_3.c new file mode 100644 index 00000000..395c15ef --- /dev/null +++ b/src/data/npc/model/tex/hip_3.c @@ -0,0 +1,40 @@ +extern unsigned short hip_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_3_pal.inc" +}; + +extern unsigned char hip_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char hip_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char hip_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char hip_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char hip_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char hip_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char hip_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char hip_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char hip_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/hip_4.c b/src/data/npc/model/tex/hip_4.c new file mode 100644 index 00000000..588f0dc7 --- /dev/null +++ b/src/data/npc/model/tex/hip_4.c @@ -0,0 +1,40 @@ +extern unsigned short hip_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_4_pal.inc" +}; + +extern unsigned char hip_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char hip_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char hip_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char hip_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char hip_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char hip_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char hip_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char hip_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char hip_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/hip_5.c b/src/data/npc/model/tex/hip_5.c new file mode 100644 index 00000000..2c6a386d --- /dev/null +++ b/src/data/npc/model/tex/hip_5.c @@ -0,0 +1,40 @@ +extern unsigned short hip_5_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_5_pal.inc" +}; + +extern unsigned char hip_5_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_5_eye1_TA_tex_txt.inc" +}; + +extern unsigned char hip_5_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_5_eye2_TA_tex_txt.inc" +}; + +extern unsigned char hip_5_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_5_eye3_TA_tex_txt.inc" +}; + +extern unsigned char hip_5_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_5_eye4_TA_tex_txt.inc" +}; + +extern unsigned char hip_5_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_5_eye5_TA_tex_txt.inc" +}; + +extern unsigned char hip_5_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_5_eye6_TA_tex_txt.inc" +}; + +extern unsigned char hip_5_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_5_eye7_TA_tex_txt.inc" +}; + +extern unsigned char hip_5_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_5_eye8_TA_tex_txt.inc" +}; + +extern unsigned char hip_5_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_5_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/hip_6.c b/src/data/npc/model/tex/hip_6.c new file mode 100644 index 00000000..c00f0c1a --- /dev/null +++ b/src/data/npc/model/tex/hip_6.c @@ -0,0 +1,40 @@ +extern unsigned short hip_6_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_6_pal.inc" +}; + +extern unsigned char hip_6_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_6_eye1_TA_tex_txt.inc" +}; + +extern unsigned char hip_6_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_6_eye2_TA_tex_txt.inc" +}; + +extern unsigned char hip_6_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_6_eye3_TA_tex_txt.inc" +}; + +extern unsigned char hip_6_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_6_eye4_TA_tex_txt.inc" +}; + +extern unsigned char hip_6_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_6_eye5_TA_tex_txt.inc" +}; + +extern unsigned char hip_6_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_6_eye6_TA_tex_txt.inc" +}; + +extern unsigned char hip_6_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_6_eye7_TA_tex_txt.inc" +}; + +extern unsigned char hip_6_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_6_eye8_TA_tex_txt.inc" +}; + +extern unsigned char hip_6_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_6_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/hip_7.c b/src/data/npc/model/tex/hip_7.c new file mode 100644 index 00000000..73b7d3c5 --- /dev/null +++ b/src/data/npc/model/tex/hip_7.c @@ -0,0 +1,40 @@ +extern unsigned short hip_7_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_7_pal.inc" +}; + +extern unsigned char hip_7_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_7_eye1_TA_tex_txt.inc" +}; + +extern unsigned char hip_7_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_7_eye2_TA_tex_txt.inc" +}; + +extern unsigned char hip_7_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_7_eye3_TA_tex_txt.inc" +}; + +extern unsigned char hip_7_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_7_eye4_TA_tex_txt.inc" +}; + +extern unsigned char hip_7_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_7_eye5_TA_tex_txt.inc" +}; + +extern unsigned char hip_7_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_7_eye6_TA_tex_txt.inc" +}; + +extern unsigned char hip_7_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_7_eye7_TA_tex_txt.inc" +}; + +extern unsigned char hip_7_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_7_eye8_TA_tex_txt.inc" +}; + +extern unsigned char hip_7_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_7_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/hrs_1.c b/src/data/npc/model/tex/hrs_1.c new file mode 100644 index 00000000..ac5136d4 --- /dev/null +++ b/src/data/npc/model/tex/hrs_1.c @@ -0,0 +1,40 @@ +extern unsigned short hrs_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_1_pal.inc" +}; + +extern unsigned char hrs_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char hrs_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char hrs_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char hrs_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char hrs_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char hrs_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char hrs_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char hrs_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char hrs_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/hrs_2.c b/src/data/npc/model/tex/hrs_2.c new file mode 100644 index 00000000..ca7e074a --- /dev/null +++ b/src/data/npc/model/tex/hrs_2.c @@ -0,0 +1,40 @@ +extern unsigned short hrs_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_2_pal.inc" +}; + +extern unsigned char hrs_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char hrs_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char hrs_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char hrs_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char hrs_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char hrs_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char hrs_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char hrs_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char hrs_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/hrs_3.c b/src/data/npc/model/tex/hrs_3.c new file mode 100644 index 00000000..12f58244 --- /dev/null +++ b/src/data/npc/model/tex/hrs_3.c @@ -0,0 +1,40 @@ +extern unsigned short hrs_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_3_pal.inc" +}; + +extern unsigned char hrs_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char hrs_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char hrs_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char hrs_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char hrs_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char hrs_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char hrs_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char hrs_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char hrs_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/hrs_4.c b/src/data/npc/model/tex/hrs_4.c new file mode 100644 index 00000000..6e9fac86 --- /dev/null +++ b/src/data/npc/model/tex/hrs_4.c @@ -0,0 +1,40 @@ +extern unsigned short hrs_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_4_pal.inc" +}; + +extern unsigned char hrs_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char hrs_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char hrs_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char hrs_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char hrs_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char hrs_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char hrs_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char hrs_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char hrs_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/hrs_5.c b/src/data/npc/model/tex/hrs_5.c new file mode 100644 index 00000000..1744111f --- /dev/null +++ b/src/data/npc/model/tex/hrs_5.c @@ -0,0 +1,40 @@ +extern unsigned short hrs_5_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_5_pal.inc" +}; + +extern unsigned char hrs_5_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_5_eye1_TA_tex_txt.inc" +}; + +extern unsigned char hrs_5_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_5_eye2_TA_tex_txt.inc" +}; + +extern unsigned char hrs_5_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_5_eye3_TA_tex_txt.inc" +}; + +extern unsigned char hrs_5_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_5_eye4_TA_tex_txt.inc" +}; + +extern unsigned char hrs_5_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_5_eye5_TA_tex_txt.inc" +}; + +extern unsigned char hrs_5_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_5_eye6_TA_tex_txt.inc" +}; + +extern unsigned char hrs_5_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_5_eye7_TA_tex_txt.inc" +}; + +extern unsigned char hrs_5_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_5_eye8_TA_tex_txt.inc" +}; + +extern unsigned char hrs_5_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_5_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/hrs_6.c b/src/data/npc/model/tex/hrs_6.c new file mode 100644 index 00000000..956c0dc6 --- /dev/null +++ b/src/data/npc/model/tex/hrs_6.c @@ -0,0 +1,40 @@ +extern unsigned short hrs_6_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_6_pal.inc" +}; + +extern unsigned char hrs_6_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_6_eye1_TA_tex_txt.inc" +}; + +extern unsigned char hrs_6_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_6_eye2_TA_tex_txt.inc" +}; + +extern unsigned char hrs_6_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_6_eye3_TA_tex_txt.inc" +}; + +extern unsigned char hrs_6_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_6_eye4_TA_tex_txt.inc" +}; + +extern unsigned char hrs_6_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_6_eye5_TA_tex_txt.inc" +}; + +extern unsigned char hrs_6_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_6_eye6_TA_tex_txt.inc" +}; + +extern unsigned char hrs_6_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_6_eye7_TA_tex_txt.inc" +}; + +extern unsigned char hrs_6_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_6_eye8_TA_tex_txt.inc" +}; + +extern unsigned char hrs_6_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_6_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/hrs_7.c b/src/data/npc/model/tex/hrs_7.c new file mode 100644 index 00000000..e6fbd042 --- /dev/null +++ b/src/data/npc/model/tex/hrs_7.c @@ -0,0 +1,40 @@ +extern unsigned short hrs_7_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_7_pal.inc" +}; + +extern unsigned char hrs_7_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_7_eye1_TA_tex_txt.inc" +}; + +extern unsigned char hrs_7_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_7_eye2_TA_tex_txt.inc" +}; + +extern unsigned char hrs_7_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_7_eye3_TA_tex_txt.inc" +}; + +extern unsigned char hrs_7_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_7_eye4_TA_tex_txt.inc" +}; + +extern unsigned char hrs_7_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_7_eye5_TA_tex_txt.inc" +}; + +extern unsigned char hrs_7_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_7_eye6_TA_tex_txt.inc" +}; + +extern unsigned char hrs_7_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_7_eye7_TA_tex_txt.inc" +}; + +extern unsigned char hrs_7_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_7_eye8_TA_tex_txt.inc" +}; + +extern unsigned char hrs_7_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_7_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/hrs_8.c b/src/data/npc/model/tex/hrs_8.c new file mode 100644 index 00000000..b164b9b1 --- /dev/null +++ b/src/data/npc/model/tex/hrs_8.c @@ -0,0 +1,40 @@ +extern unsigned short hrs_8_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_8_pal.inc" +}; + +extern unsigned char hrs_8_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_8_eye1_TA_tex_txt.inc" +}; + +extern unsigned char hrs_8_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_8_eye2_TA_tex_txt.inc" +}; + +extern unsigned char hrs_8_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_8_eye3_TA_tex_txt.inc" +}; + +extern unsigned char hrs_8_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_8_eye4_TA_tex_txt.inc" +}; + +extern unsigned char hrs_8_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_8_eye5_TA_tex_txt.inc" +}; + +extern unsigned char hrs_8_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_8_eye6_TA_tex_txt.inc" +}; + +extern unsigned char hrs_8_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_8_eye7_TA_tex_txt.inc" +}; + +extern unsigned char hrs_8_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_8_eye8_TA_tex_txt.inc" +}; + +extern unsigned char hrs_8_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_8_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/kab_1.c b/src/data/npc/model/tex/kab_1.c new file mode 100644 index 00000000..577b9fbb --- /dev/null +++ b/src/data/npc/model/tex/kab_1.c @@ -0,0 +1,40 @@ +extern unsigned short kab_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kab_1_pal.inc" +}; + +extern unsigned char kab_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kab_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char kab_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kab_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char kab_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kab_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char kab_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kab_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char kab_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kab_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char kab_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kab_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char kab_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kab_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char kab_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kab_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char kab_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kab_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/kal_1.c b/src/data/npc/model/tex/kal_1.c new file mode 100644 index 00000000..3bf59536 --- /dev/null +++ b/src/data/npc/model/tex/kal_1.c @@ -0,0 +1,64 @@ +extern unsigned short kal_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_1_pal.inc" +}; + +extern unsigned char kal_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char kal_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char kal_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char kal_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char kal_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char kal_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char kal_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char kal_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char kal_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char kal_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char kal_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char kal_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char kal_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char kal_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char kal_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/kal_2.c b/src/data/npc/model/tex/kal_2.c new file mode 100644 index 00000000..674f8cda --- /dev/null +++ b/src/data/npc/model/tex/kal_2.c @@ -0,0 +1,64 @@ +extern unsigned short kal_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_2_pal.inc" +}; + +extern unsigned char kal_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char kal_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char kal_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char kal_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char kal_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char kal_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char kal_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char kal_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char kal_2_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_2_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char kal_2_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_2_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char kal_2_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_2_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char kal_2_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_2_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char kal_2_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_2_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char kal_2_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_2_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char kal_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/kal_3.c b/src/data/npc/model/tex/kal_3.c new file mode 100644 index 00000000..338bec9d --- /dev/null +++ b/src/data/npc/model/tex/kal_3.c @@ -0,0 +1,64 @@ +extern unsigned short kal_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_3_pal.inc" +}; + +extern unsigned char kal_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char kal_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char kal_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char kal_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char kal_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char kal_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char kal_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char kal_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char kal_3_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_3_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char kal_3_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_3_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char kal_3_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_3_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char kal_3_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_3_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char kal_3_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_3_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char kal_3_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_3_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char kal_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/kal_4.c b/src/data/npc/model/tex/kal_4.c new file mode 100644 index 00000000..4fbefa4f --- /dev/null +++ b/src/data/npc/model/tex/kal_4.c @@ -0,0 +1,64 @@ +extern unsigned short kal_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_4_pal.inc" +}; + +extern unsigned char kal_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char kal_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char kal_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char kal_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char kal_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char kal_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char kal_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char kal_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char kal_4_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_4_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char kal_4_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_4_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char kal_4_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_4_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char kal_4_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_4_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char kal_4_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_4_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char kal_4_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_4_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char kal_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/kal_5.c b/src/data/npc/model/tex/kal_5.c new file mode 100644 index 00000000..9f2fe15d --- /dev/null +++ b/src/data/npc/model/tex/kal_5.c @@ -0,0 +1,64 @@ +extern unsigned short kal_5_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_5_pal.inc" +}; + +extern unsigned char kal_5_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_5_eye1_TA_tex_txt.inc" +}; + +extern unsigned char kal_5_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_5_eye2_TA_tex_txt.inc" +}; + +extern unsigned char kal_5_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_5_eye3_TA_tex_txt.inc" +}; + +extern unsigned char kal_5_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_5_eye4_TA_tex_txt.inc" +}; + +extern unsigned char kal_5_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_5_eye5_TA_tex_txt.inc" +}; + +extern unsigned char kal_5_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_5_eye6_TA_tex_txt.inc" +}; + +extern unsigned char kal_5_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_5_eye7_TA_tex_txt.inc" +}; + +extern unsigned char kal_5_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_5_eye8_TA_tex_txt.inc" +}; + +extern unsigned char kal_5_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_5_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char kal_5_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_5_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char kal_5_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_5_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char kal_5_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_5_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char kal_5_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_5_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char kal_5_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_5_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char kal_5_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_5_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/kal_6.c b/src/data/npc/model/tex/kal_6.c new file mode 100644 index 00000000..705f6977 --- /dev/null +++ b/src/data/npc/model/tex/kal_6.c @@ -0,0 +1,64 @@ +extern unsigned short kal_6_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_6_pal.inc" +}; + +extern unsigned char kal_6_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_6_eye1_TA_tex_txt.inc" +}; + +extern unsigned char kal_6_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_6_eye2_TA_tex_txt.inc" +}; + +extern unsigned char kal_6_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_6_eye3_TA_tex_txt.inc" +}; + +extern unsigned char kal_6_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_6_eye4_TA_tex_txt.inc" +}; + +extern unsigned char kal_6_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_6_eye5_TA_tex_txt.inc" +}; + +extern unsigned char kal_6_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_6_eye6_TA_tex_txt.inc" +}; + +extern unsigned char kal_6_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_6_eye7_TA_tex_txt.inc" +}; + +extern unsigned char kal_6_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_6_eye8_TA_tex_txt.inc" +}; + +extern unsigned char kal_6_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_6_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char kal_6_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_6_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char kal_6_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_6_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char kal_6_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_6_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char kal_6_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_6_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char kal_6_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_6_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char kal_6_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_6_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/kgr_1.c b/src/data/npc/model/tex/kgr_1.c new file mode 100644 index 00000000..25f2b512 --- /dev/null +++ b/src/data/npc/model/tex/kgr_1.c @@ -0,0 +1,40 @@ +extern unsigned short kgr_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_1_pal.inc" +}; + +extern unsigned char kgr_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char kgr_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char kgr_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char kgr_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char kgr_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char kgr_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char kgr_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char kgr_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char kgr_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/kgr_2.c b/src/data/npc/model/tex/kgr_2.c new file mode 100644 index 00000000..b2a0178c --- /dev/null +++ b/src/data/npc/model/tex/kgr_2.c @@ -0,0 +1,40 @@ +extern unsigned short kgr_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_2_pal.inc" +}; + +extern unsigned char kgr_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char kgr_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char kgr_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char kgr_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char kgr_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char kgr_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char kgr_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char kgr_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char kgr_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/kgr_3.c b/src/data/npc/model/tex/kgr_3.c new file mode 100644 index 00000000..9b7efe1b --- /dev/null +++ b/src/data/npc/model/tex/kgr_3.c @@ -0,0 +1,40 @@ +extern unsigned short kgr_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_3_pal.inc" +}; + +extern unsigned char kgr_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char kgr_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char kgr_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char kgr_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char kgr_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char kgr_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char kgr_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char kgr_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char kgr_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/kgr_4.c b/src/data/npc/model/tex/kgr_4.c new file mode 100644 index 00000000..ff0a3dff --- /dev/null +++ b/src/data/npc/model/tex/kgr_4.c @@ -0,0 +1,40 @@ +extern unsigned short kgr_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_4_pal.inc" +}; + +extern unsigned char kgr_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char kgr_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char kgr_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char kgr_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char kgr_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char kgr_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char kgr_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char kgr_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char kgr_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/kgr_5.c b/src/data/npc/model/tex/kgr_5.c new file mode 100644 index 00000000..05812a8a --- /dev/null +++ b/src/data/npc/model/tex/kgr_5.c @@ -0,0 +1,40 @@ +extern unsigned short kgr_5_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_5_pal.inc" +}; + +extern unsigned char kgr_5_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_5_eye1_TA_tex_txt.inc" +}; + +extern unsigned char kgr_5_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_5_eye2_TA_tex_txt.inc" +}; + +extern unsigned char kgr_5_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_5_eye3_TA_tex_txt.inc" +}; + +extern unsigned char kgr_5_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_5_eye4_TA_tex_txt.inc" +}; + +extern unsigned char kgr_5_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_5_eye5_TA_tex_txt.inc" +}; + +extern unsigned char kgr_5_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_5_eye6_TA_tex_txt.inc" +}; + +extern unsigned char kgr_5_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_5_eye7_TA_tex_txt.inc" +}; + +extern unsigned char kgr_5_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_5_eye8_TA_tex_txt.inc" +}; + +extern unsigned char kgr_5_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_5_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/kgr_6.c b/src/data/npc/model/tex/kgr_6.c new file mode 100644 index 00000000..8f302d96 --- /dev/null +++ b/src/data/npc/model/tex/kgr_6.c @@ -0,0 +1,40 @@ +extern unsigned short kgr_6_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_6_pal.inc" +}; + +extern unsigned char kgr_6_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_6_eye1_TA_tex_txt.inc" +}; + +extern unsigned char kgr_6_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_6_eye2_TA_tex_txt.inc" +}; + +extern unsigned char kgr_6_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_6_eye3_TA_tex_txt.inc" +}; + +extern unsigned char kgr_6_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_6_eye4_TA_tex_txt.inc" +}; + +extern unsigned char kgr_6_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_6_eye5_TA_tex_txt.inc" +}; + +extern unsigned char kgr_6_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_6_eye6_TA_tex_txt.inc" +}; + +extern unsigned char kgr_6_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_6_eye7_TA_tex_txt.inc" +}; + +extern unsigned char kgr_6_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_6_eye8_TA_tex_txt.inc" +}; + +extern unsigned char kgr_6_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_6_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/lon_1.c b/src/data/npc/model/tex/lon_1.c new file mode 100644 index 00000000..f5cd7654 --- /dev/null +++ b/src/data/npc/model/tex/lon_1.c @@ -0,0 +1,64 @@ +extern unsigned short lon_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_1_pal.inc" +}; + +extern unsigned char lon_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char lon_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char lon_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char lon_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char lon_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char lon_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char lon_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char lon_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char lon_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char lon_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char lon_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char lon_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char lon_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char lon_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char lon_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/lon_2.c b/src/data/npc/model/tex/lon_2.c new file mode 100644 index 00000000..0a03d1ac --- /dev/null +++ b/src/data/npc/model/tex/lon_2.c @@ -0,0 +1,64 @@ +extern unsigned short lon_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_2_pal.inc" +}; + +extern unsigned char lon_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char lon_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char lon_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char lon_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char lon_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char lon_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char lon_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char lon_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char lon_2_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_2_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char lon_2_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_2_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char lon_2_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_2_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char lon_2_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_2_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char lon_2_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_2_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char lon_2_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_2_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char lon_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/lon_3.c b/src/data/npc/model/tex/lon_3.c new file mode 100644 index 00000000..ba41ce30 --- /dev/null +++ b/src/data/npc/model/tex/lon_3.c @@ -0,0 +1,64 @@ +extern unsigned short lon_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_3_pal.inc" +}; + +extern unsigned char lon_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char lon_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char lon_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char lon_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char lon_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char lon_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char lon_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char lon_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char lon_3_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_3_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char lon_3_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_3_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char lon_3_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_3_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char lon_3_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_3_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char lon_3_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_3_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char lon_3_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_3_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char lon_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/lon_4.c b/src/data/npc/model/tex/lon_4.c new file mode 100644 index 00000000..271eae8d --- /dev/null +++ b/src/data/npc/model/tex/lon_4.c @@ -0,0 +1,64 @@ +extern unsigned short lon_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_4_pal.inc" +}; + +extern unsigned char lon_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char lon_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char lon_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char lon_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char lon_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char lon_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char lon_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char lon_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char lon_4_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_4_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char lon_4_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_4_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char lon_4_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_4_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char lon_4_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_4_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char lon_4_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_4_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char lon_4_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_4_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char lon_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/lrc_1.c b/src/data/npc/model/tex/lrc_1.c new file mode 100644 index 00000000..3bf5a860 --- /dev/null +++ b/src/data/npc/model/tex/lrc_1.c @@ -0,0 +1,40 @@ +extern unsigned short lrc_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lrc_1_pal.inc" +}; + +extern unsigned char lrc_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lrc_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char lrc_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lrc_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char lrc_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lrc_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char lrc_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lrc_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char lrc_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lrc_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char lrc_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lrc_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char lrc_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lrc_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char lrc_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lrc_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char lrc_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lrc_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/mka_1.c b/src/data/npc/model/tex/mka_1.c new file mode 100644 index 00000000..10c25793 --- /dev/null +++ b/src/data/npc/model/tex/mka_1.c @@ -0,0 +1,8 @@ +extern unsigned short mka_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mka_1_pal.inc" +}; + +extern unsigned char mka_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mka_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/mnk_1.c b/src/data/npc/model/tex/mnk_1.c new file mode 100644 index 00000000..083254a6 --- /dev/null +++ b/src/data/npc/model/tex/mnk_1.c @@ -0,0 +1,64 @@ +extern unsigned short mnk_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mnk_1_pal.inc" +}; + +extern unsigned char mnk_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mnk_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char mnk_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mnk_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char mnk_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mnk_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char mnk_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mnk_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char mnk_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mnk_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char mnk_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mnk_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char mnk_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mnk_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char mnk_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mnk_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char mnk_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mnk_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char mnk_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mnk_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char mnk_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mnk_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char mnk_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mnk_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char mnk_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mnk_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char mnk_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mnk_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char mnk_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mnk_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/mob_1.c b/src/data/npc/model/tex/mob_1.c new file mode 100644 index 00000000..1cd4a314 --- /dev/null +++ b/src/data/npc/model/tex/mob_1.c @@ -0,0 +1,64 @@ +extern unsigned short mob_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mob_1_pal.inc" +}; + +extern unsigned char mob_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mob_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char mob_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mob_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char mob_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mob_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char mob_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mob_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char mob_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mob_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char mob_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mob_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char mob_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mob_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char mob_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mob_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char mob_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mob_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char mob_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mob_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char mob_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mob_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char mob_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mob_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char mob_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mob_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char mob_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mob_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char mob_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mob_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/mol_1.c b/src/data/npc/model/tex/mol_1.c new file mode 100644 index 00000000..06ce506a --- /dev/null +++ b/src/data/npc/model/tex/mol_1.c @@ -0,0 +1,64 @@ +extern unsigned short mol_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mol_1_pal.inc" +}; + +extern unsigned char mol_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mol_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char mol_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mol_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char mol_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mol_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char mol_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mol_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char mol_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mol_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char mol_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mol_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char mol_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mol_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char mol_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mol_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char mol_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mol_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char mol_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mol_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char mol_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mol_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char mol_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mol_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char mol_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mol_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char mol_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mol_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char mol_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mol_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/mos_1.c b/src/data/npc/model/tex/mos_1.c new file mode 100644 index 00000000..55235821 --- /dev/null +++ b/src/data/npc/model/tex/mos_1.c @@ -0,0 +1,64 @@ +extern unsigned short mos_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mos_1_pal.inc" +}; + +extern unsigned char mos_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mos_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char mos_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mos_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char mos_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mos_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char mos_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mos_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char mos_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mos_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char mos_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mos_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char mos_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mos_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char mos_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mos_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char mos_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mos_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char mos_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mos_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char mos_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mos_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char mos_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mos_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char mos_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mos_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char mos_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mos_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char mos_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mos_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/mus_1.c b/src/data/npc/model/tex/mus_1.c new file mode 100644 index 00000000..9d008399 --- /dev/null +++ b/src/data/npc/model/tex/mus_1.c @@ -0,0 +1,64 @@ +extern unsigned short mus_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_1_pal.inc" +}; + +extern unsigned char mus_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char mus_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char mus_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char mus_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char mus_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char mus_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char mus_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char mus_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char mus_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char mus_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char mus_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char mus_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char mus_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char mus_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char mus_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/mus_10.c b/src/data/npc/model/tex/mus_10.c new file mode 100644 index 00000000..b51f6b7a --- /dev/null +++ b/src/data/npc/model/tex/mus_10.c @@ -0,0 +1,64 @@ +extern unsigned short mus_10_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_10_pal.inc" +}; + +extern unsigned char mus_10_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_10_eye1_TA_tex_txt.inc" +}; + +extern unsigned char mus_10_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_10_eye2_TA_tex_txt.inc" +}; + +extern unsigned char mus_10_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_10_eye3_TA_tex_txt.inc" +}; + +extern unsigned char mus_10_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_10_eye4_TA_tex_txt.inc" +}; + +extern unsigned char mus_10_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_10_eye5_TA_tex_txt.inc" +}; + +extern unsigned char mus_10_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_10_eye6_TA_tex_txt.inc" +}; + +extern unsigned char mus_10_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_10_eye7_TA_tex_txt.inc" +}; + +extern unsigned char mus_10_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_10_eye8_TA_tex_txt.inc" +}; + +extern unsigned char mus_10_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_10_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char mus_10_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_10_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char mus_10_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_10_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char mus_10_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_10_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char mus_10_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_10_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char mus_10_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_10_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char mus_10_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_10_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/mus_2.c b/src/data/npc/model/tex/mus_2.c new file mode 100644 index 00000000..bb0d004b --- /dev/null +++ b/src/data/npc/model/tex/mus_2.c @@ -0,0 +1,64 @@ +extern unsigned short mus_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_2_pal.inc" +}; + +extern unsigned char mus_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char mus_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char mus_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char mus_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char mus_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char mus_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char mus_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char mus_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char mus_2_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_2_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char mus_2_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_2_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char mus_2_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_2_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char mus_2_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_2_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char mus_2_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_2_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char mus_2_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_2_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char mus_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/mus_3.c b/src/data/npc/model/tex/mus_3.c new file mode 100644 index 00000000..0f0730f0 --- /dev/null +++ b/src/data/npc/model/tex/mus_3.c @@ -0,0 +1,64 @@ +extern unsigned short mus_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_3_pal.inc" +}; + +extern unsigned char mus_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char mus_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char mus_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char mus_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char mus_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char mus_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char mus_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char mus_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char mus_3_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_3_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char mus_3_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_3_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char mus_3_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_3_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char mus_3_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_3_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char mus_3_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_3_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char mus_3_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_3_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char mus_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/mus_4.c b/src/data/npc/model/tex/mus_4.c new file mode 100644 index 00000000..0118d7e0 --- /dev/null +++ b/src/data/npc/model/tex/mus_4.c @@ -0,0 +1,64 @@ +extern unsigned short mus_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_4_pal.inc" +}; + +extern unsigned char mus_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char mus_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char mus_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char mus_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char mus_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char mus_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char mus_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char mus_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char mus_4_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_4_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char mus_4_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_4_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char mus_4_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_4_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char mus_4_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_4_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char mus_4_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_4_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char mus_4_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_4_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char mus_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/mus_5.c b/src/data/npc/model/tex/mus_5.c new file mode 100644 index 00000000..151a7330 --- /dev/null +++ b/src/data/npc/model/tex/mus_5.c @@ -0,0 +1,64 @@ +extern unsigned short mus_5_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_5_pal.inc" +}; + +extern unsigned char mus_5_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_5_eye1_TA_tex_txt.inc" +}; + +extern unsigned char mus_5_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_5_eye2_TA_tex_txt.inc" +}; + +extern unsigned char mus_5_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_5_eye3_TA_tex_txt.inc" +}; + +extern unsigned char mus_5_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_5_eye4_TA_tex_txt.inc" +}; + +extern unsigned char mus_5_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_5_eye5_TA_tex_txt.inc" +}; + +extern unsigned char mus_5_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_5_eye6_TA_tex_txt.inc" +}; + +extern unsigned char mus_5_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_5_eye7_TA_tex_txt.inc" +}; + +extern unsigned char mus_5_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_5_eye8_TA_tex_txt.inc" +}; + +extern unsigned char mus_5_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_5_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char mus_5_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_5_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char mus_5_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_5_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char mus_5_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_5_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char mus_5_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_5_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char mus_5_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_5_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char mus_5_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_5_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/mus_6.c b/src/data/npc/model/tex/mus_6.c new file mode 100644 index 00000000..4a903b2f --- /dev/null +++ b/src/data/npc/model/tex/mus_6.c @@ -0,0 +1,64 @@ +extern unsigned short mus_6_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_6_pal.inc" +}; + +extern unsigned char mus_6_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_6_eye1_TA_tex_txt.inc" +}; + +extern unsigned char mus_6_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_6_eye2_TA_tex_txt.inc" +}; + +extern unsigned char mus_6_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_6_eye3_TA_tex_txt.inc" +}; + +extern unsigned char mus_6_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_6_eye4_TA_tex_txt.inc" +}; + +extern unsigned char mus_6_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_6_eye5_TA_tex_txt.inc" +}; + +extern unsigned char mus_6_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_6_eye6_TA_tex_txt.inc" +}; + +extern unsigned char mus_6_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_6_eye7_TA_tex_txt.inc" +}; + +extern unsigned char mus_6_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_6_eye8_TA_tex_txt.inc" +}; + +extern unsigned char mus_6_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_6_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char mus_6_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_6_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char mus_6_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_6_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char mus_6_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_6_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char mus_6_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_6_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char mus_6_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_6_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char mus_6_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_6_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/mus_7.c b/src/data/npc/model/tex/mus_7.c new file mode 100644 index 00000000..020c9908 --- /dev/null +++ b/src/data/npc/model/tex/mus_7.c @@ -0,0 +1,64 @@ +extern unsigned short mus_7_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_7_pal.inc" +}; + +extern unsigned char mus_7_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_7_eye1_TA_tex_txt.inc" +}; + +extern unsigned char mus_7_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_7_eye2_TA_tex_txt.inc" +}; + +extern unsigned char mus_7_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_7_eye3_TA_tex_txt.inc" +}; + +extern unsigned char mus_7_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_7_eye4_TA_tex_txt.inc" +}; + +extern unsigned char mus_7_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_7_eye5_TA_tex_txt.inc" +}; + +extern unsigned char mus_7_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_7_eye6_TA_tex_txt.inc" +}; + +extern unsigned char mus_7_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_7_eye7_TA_tex_txt.inc" +}; + +extern unsigned char mus_7_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_7_eye8_TA_tex_txt.inc" +}; + +extern unsigned char mus_7_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_7_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char mus_7_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_7_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char mus_7_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_7_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char mus_7_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_7_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char mus_7_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_7_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char mus_7_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_7_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char mus_7_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_7_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/mus_8.c b/src/data/npc/model/tex/mus_8.c new file mode 100644 index 00000000..a5a06b15 --- /dev/null +++ b/src/data/npc/model/tex/mus_8.c @@ -0,0 +1,64 @@ +extern unsigned short mus_8_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_8_pal.inc" +}; + +extern unsigned char mus_8_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_8_eye1_TA_tex_txt.inc" +}; + +extern unsigned char mus_8_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_8_eye2_TA_tex_txt.inc" +}; + +extern unsigned char mus_8_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_8_eye3_TA_tex_txt.inc" +}; + +extern unsigned char mus_8_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_8_eye4_TA_tex_txt.inc" +}; + +extern unsigned char mus_8_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_8_eye5_TA_tex_txt.inc" +}; + +extern unsigned char mus_8_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_8_eye6_TA_tex_txt.inc" +}; + +extern unsigned char mus_8_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_8_eye7_TA_tex_txt.inc" +}; + +extern unsigned char mus_8_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_8_eye8_TA_tex_txt.inc" +}; + +extern unsigned char mus_8_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_8_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char mus_8_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_8_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char mus_8_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_8_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char mus_8_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_8_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char mus_8_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_8_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char mus_8_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_8_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char mus_8_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_8_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/mus_9.c b/src/data/npc/model/tex/mus_9.c new file mode 100644 index 00000000..be95a84a --- /dev/null +++ b/src/data/npc/model/tex/mus_9.c @@ -0,0 +1,64 @@ +extern unsigned short mus_9_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_9_pal.inc" +}; + +extern unsigned char mus_9_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_9_eye1_TA_tex_txt.inc" +}; + +extern unsigned char mus_9_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_9_eye2_TA_tex_txt.inc" +}; + +extern unsigned char mus_9_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_9_eye3_TA_tex_txt.inc" +}; + +extern unsigned char mus_9_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_9_eye4_TA_tex_txt.inc" +}; + +extern unsigned char mus_9_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_9_eye5_TA_tex_txt.inc" +}; + +extern unsigned char mus_9_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_9_eye6_TA_tex_txt.inc" +}; + +extern unsigned char mus_9_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_9_eye7_TA_tex_txt.inc" +}; + +extern unsigned char mus_9_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_9_eye8_TA_tex_txt.inc" +}; + +extern unsigned char mus_9_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_9_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char mus_9_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_9_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char mus_9_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_9_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char mus_9_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_9_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char mus_9_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_9_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char mus_9_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_9_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char mus_9_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_9_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/oct_1.c b/src/data/npc/model/tex/oct_1.c new file mode 100644 index 00000000..fb391f9a --- /dev/null +++ b/src/data/npc/model/tex/oct_1.c @@ -0,0 +1,40 @@ +extern unsigned short oct_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/oct_1_pal.inc" +}; + +extern unsigned char oct_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/oct_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char oct_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/oct_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char oct_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/oct_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char oct_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/oct_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char oct_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/oct_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char oct_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/oct_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char oct_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/oct_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char oct_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/oct_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char oct_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/oct_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/ost_1.c b/src/data/npc/model/tex/ost_1.c new file mode 100644 index 00000000..9a3d86a3 --- /dev/null +++ b/src/data/npc/model/tex/ost_1.c @@ -0,0 +1,40 @@ +extern unsigned short ost_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_1_pal.inc" +}; + +extern unsigned char ost_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char ost_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char ost_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char ost_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char ost_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char ost_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char ost_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char ost_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char ost_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/ost_2.c b/src/data/npc/model/tex/ost_2.c new file mode 100644 index 00000000..c712c220 --- /dev/null +++ b/src/data/npc/model/tex/ost_2.c @@ -0,0 +1,40 @@ +extern unsigned short ost_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_2_pal.inc" +}; + +extern unsigned char ost_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char ost_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char ost_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char ost_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char ost_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char ost_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char ost_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char ost_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char ost_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/ost_3.c b/src/data/npc/model/tex/ost_3.c new file mode 100644 index 00000000..78404c09 --- /dev/null +++ b/src/data/npc/model/tex/ost_3.c @@ -0,0 +1,40 @@ +extern unsigned short ost_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_3_pal.inc" +}; + +extern unsigned char ost_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char ost_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char ost_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char ost_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char ost_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char ost_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char ost_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char ost_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char ost_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/ost_4.c b/src/data/npc/model/tex/ost_4.c new file mode 100644 index 00000000..6747cc6d --- /dev/null +++ b/src/data/npc/model/tex/ost_4.c @@ -0,0 +1,40 @@ +extern unsigned short ost_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_4_pal.inc" +}; + +extern unsigned char ost_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char ost_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char ost_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char ost_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char ost_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char ost_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char ost_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char ost_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char ost_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/owl_1.c b/src/data/npc/model/tex/owl_1.c new file mode 100644 index 00000000..f30d66e0 --- /dev/null +++ b/src/data/npc/model/tex/owl_1.c @@ -0,0 +1,40 @@ +extern unsigned short owl_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/owl_1_pal.inc" +}; + +extern unsigned char owl_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/owl_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char owl_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/owl_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char owl_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/owl_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char owl_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/owl_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char owl_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/owl_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char owl_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/owl_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char owl_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/owl_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char owl_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/owl_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char owl_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/owl_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pbr_1.c b/src/data/npc/model/tex/pbr_1.c new file mode 100644 index 00000000..c8a5e6c0 --- /dev/null +++ b/src/data/npc/model/tex/pbr_1.c @@ -0,0 +1,40 @@ +extern unsigned short pbr_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_1_pal.inc" +}; + +extern unsigned char pbr_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char pbr_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char pbr_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char pbr_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char pbr_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char pbr_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char pbr_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char pbr_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char pbr_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pbr_2.c b/src/data/npc/model/tex/pbr_2.c new file mode 100644 index 00000000..a49546d2 --- /dev/null +++ b/src/data/npc/model/tex/pbr_2.c @@ -0,0 +1,40 @@ +extern unsigned short pbr_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_2_pal.inc" +}; + +extern unsigned char pbr_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char pbr_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char pbr_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char pbr_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char pbr_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char pbr_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char pbr_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char pbr_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char pbr_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pbr_3.c b/src/data/npc/model/tex/pbr_3.c new file mode 100644 index 00000000..9b9cdaf6 --- /dev/null +++ b/src/data/npc/model/tex/pbr_3.c @@ -0,0 +1,40 @@ +extern unsigned short pbr_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_3_pal.inc" +}; + +extern unsigned char pbr_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char pbr_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char pbr_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char pbr_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char pbr_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char pbr_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char pbr_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char pbr_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char pbr_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pbr_4.c b/src/data/npc/model/tex/pbr_4.c new file mode 100644 index 00000000..5f3c8ff1 --- /dev/null +++ b/src/data/npc/model/tex/pbr_4.c @@ -0,0 +1,40 @@ +extern unsigned short pbr_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_4_pal.inc" +}; + +extern unsigned char pbr_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char pbr_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char pbr_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char pbr_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char pbr_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char pbr_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char pbr_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char pbr_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char pbr_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pbr_5.c b/src/data/npc/model/tex/pbr_5.c new file mode 100644 index 00000000..eb73b8b5 --- /dev/null +++ b/src/data/npc/model/tex/pbr_5.c @@ -0,0 +1,40 @@ +extern unsigned short pbr_5_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_5_pal.inc" +}; + +extern unsigned char pbr_5_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_5_eye1_TA_tex_txt.inc" +}; + +extern unsigned char pbr_5_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_5_eye2_TA_tex_txt.inc" +}; + +extern unsigned char pbr_5_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_5_eye3_TA_tex_txt.inc" +}; + +extern unsigned char pbr_5_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_5_eye4_TA_tex_txt.inc" +}; + +extern unsigned char pbr_5_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_5_eye5_TA_tex_txt.inc" +}; + +extern unsigned char pbr_5_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_5_eye6_TA_tex_txt.inc" +}; + +extern unsigned char pbr_5_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_5_eye7_TA_tex_txt.inc" +}; + +extern unsigned char pbr_5_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_5_eye8_TA_tex_txt.inc" +}; + +extern unsigned char pbr_5_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_5_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pga_1.c b/src/data/npc/model/tex/pga_1.c new file mode 100644 index 00000000..b662fe27 --- /dev/null +++ b/src/data/npc/model/tex/pga_1.c @@ -0,0 +1,40 @@ +extern unsigned short pga_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pga_1_pal.inc" +}; + +extern unsigned char pga_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pga_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char pga_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pga_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char pga_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pga_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char pga_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pga_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char pga_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pga_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char pga_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pga_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char pga_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pga_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char pga_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pga_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char pga_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pga_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pgb_1.c b/src/data/npc/model/tex/pgb_1.c new file mode 100644 index 00000000..0fa9e855 --- /dev/null +++ b/src/data/npc/model/tex/pgb_1.c @@ -0,0 +1,40 @@ +extern unsigned short pgb_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgb_1_pal.inc" +}; + +extern unsigned char pgb_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgb_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char pgb_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgb_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char pgb_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgb_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char pgb_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgb_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char pgb_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgb_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char pgb_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgb_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char pgb_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgb_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char pgb_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgb_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char pgb_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgb_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pgn_1.c b/src/data/npc/model/tex/pgn_1.c new file mode 100644 index 00000000..4a958baf --- /dev/null +++ b/src/data/npc/model/tex/pgn_1.c @@ -0,0 +1,40 @@ +extern unsigned short pgn_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_1_pal.inc" +}; + +extern unsigned char pgn_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char pgn_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char pgn_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char pgn_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char pgn_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char pgn_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char pgn_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char pgn_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char pgn_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pgn_2.c b/src/data/npc/model/tex/pgn_2.c new file mode 100644 index 00000000..49ce025c --- /dev/null +++ b/src/data/npc/model/tex/pgn_2.c @@ -0,0 +1,40 @@ +extern unsigned short pgn_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_2_pal.inc" +}; + +extern unsigned char pgn_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char pgn_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char pgn_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char pgn_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char pgn_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char pgn_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char pgn_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char pgn_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char pgn_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pgn_3.c b/src/data/npc/model/tex/pgn_3.c new file mode 100644 index 00000000..a05d7e19 --- /dev/null +++ b/src/data/npc/model/tex/pgn_3.c @@ -0,0 +1,40 @@ +extern unsigned short pgn_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_3_pal.inc" +}; + +extern unsigned char pgn_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char pgn_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char pgn_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char pgn_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char pgn_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char pgn_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char pgn_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char pgn_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char pgn_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pgn_4.c b/src/data/npc/model/tex/pgn_4.c new file mode 100644 index 00000000..2fde2edc --- /dev/null +++ b/src/data/npc/model/tex/pgn_4.c @@ -0,0 +1,40 @@ +extern unsigned short pgn_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_4_pal.inc" +}; + +extern unsigned char pgn_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char pgn_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char pgn_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char pgn_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char pgn_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char pgn_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char pgn_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char pgn_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char pgn_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pgn_5.c b/src/data/npc/model/tex/pgn_5.c new file mode 100644 index 00000000..f6c40604 --- /dev/null +++ b/src/data/npc/model/tex/pgn_5.c @@ -0,0 +1,40 @@ +extern unsigned short pgn_5_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_5_pal.inc" +}; + +extern unsigned char pgn_5_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_5_eye1_TA_tex_txt.inc" +}; + +extern unsigned char pgn_5_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_5_eye2_TA_tex_txt.inc" +}; + +extern unsigned char pgn_5_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_5_eye3_TA_tex_txt.inc" +}; + +extern unsigned char pgn_5_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_5_eye4_TA_tex_txt.inc" +}; + +extern unsigned char pgn_5_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_5_eye5_TA_tex_txt.inc" +}; + +extern unsigned char pgn_5_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_5_eye6_TA_tex_txt.inc" +}; + +extern unsigned char pgn_5_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_5_eye7_TA_tex_txt.inc" +}; + +extern unsigned char pgn_5_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_5_eye8_TA_tex_txt.inc" +}; + +extern unsigned char pgn_5_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_5_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pgn_6.c b/src/data/npc/model/tex/pgn_6.c new file mode 100644 index 00000000..9a885170 --- /dev/null +++ b/src/data/npc/model/tex/pgn_6.c @@ -0,0 +1,40 @@ +extern unsigned short pgn_6_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_6_pal.inc" +}; + +extern unsigned char pgn_6_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_6_eye1_TA_tex_txt.inc" +}; + +extern unsigned char pgn_6_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_6_eye2_TA_tex_txt.inc" +}; + +extern unsigned char pgn_6_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_6_eye3_TA_tex_txt.inc" +}; + +extern unsigned char pgn_6_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_6_eye4_TA_tex_txt.inc" +}; + +extern unsigned char pgn_6_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_6_eye5_TA_tex_txt.inc" +}; + +extern unsigned char pgn_6_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_6_eye6_TA_tex_txt.inc" +}; + +extern unsigned char pgn_6_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_6_eye7_TA_tex_txt.inc" +}; + +extern unsigned char pgn_6_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_6_eye8_TA_tex_txt.inc" +}; + +extern unsigned char pgn_6_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_6_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pgn_7.c b/src/data/npc/model/tex/pgn_7.c new file mode 100644 index 00000000..6edec57f --- /dev/null +++ b/src/data/npc/model/tex/pgn_7.c @@ -0,0 +1,40 @@ +extern unsigned short pgn_7_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_7_pal.inc" +}; + +extern unsigned char pgn_7_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_7_eye1_TA_tex_txt.inc" +}; + +extern unsigned char pgn_7_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_7_eye2_TA_tex_txt.inc" +}; + +extern unsigned char pgn_7_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_7_eye3_TA_tex_txt.inc" +}; + +extern unsigned char pgn_7_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_7_eye4_TA_tex_txt.inc" +}; + +extern unsigned char pgn_7_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_7_eye5_TA_tex_txt.inc" +}; + +extern unsigned char pgn_7_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_7_eye6_TA_tex_txt.inc" +}; + +extern unsigned char pgn_7_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_7_eye7_TA_tex_txt.inc" +}; + +extern unsigned char pgn_7_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_7_eye8_TA_tex_txt.inc" +}; + +extern unsigned char pgn_7_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_7_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pgn_8.c b/src/data/npc/model/tex/pgn_8.c new file mode 100644 index 00000000..410bd0fc --- /dev/null +++ b/src/data/npc/model/tex/pgn_8.c @@ -0,0 +1,40 @@ +extern unsigned short pgn_8_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_8_pal.inc" +}; + +extern unsigned char pgn_8_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_8_eye1_TA_tex_txt.inc" +}; + +extern unsigned char pgn_8_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_8_eye2_TA_tex_txt.inc" +}; + +extern unsigned char pgn_8_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_8_eye3_TA_tex_txt.inc" +}; + +extern unsigned char pgn_8_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_8_eye4_TA_tex_txt.inc" +}; + +extern unsigned char pgn_8_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_8_eye5_TA_tex_txt.inc" +}; + +extern unsigned char pgn_8_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_8_eye6_TA_tex_txt.inc" +}; + +extern unsigned char pgn_8_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_8_eye7_TA_tex_txt.inc" +}; + +extern unsigned char pgn_8_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_8_eye8_TA_tex_txt.inc" +}; + +extern unsigned char pgn_8_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_8_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pig_1.c b/src/data/npc/model/tex/pig_1.c new file mode 100644 index 00000000..3884ebad --- /dev/null +++ b/src/data/npc/model/tex/pig_1.c @@ -0,0 +1,64 @@ +extern unsigned short pig_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_1_pal.inc" +}; + +extern unsigned char pig_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char pig_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char pig_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char pig_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char pig_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char pig_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char pig_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char pig_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char pig_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char pig_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char pig_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char pig_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char pig_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char pig_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char pig_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pig_10.c b/src/data/npc/model/tex/pig_10.c new file mode 100644 index 00000000..5d3c834b --- /dev/null +++ b/src/data/npc/model/tex/pig_10.c @@ -0,0 +1,64 @@ +extern unsigned short pig_10_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_10_pal.inc" +}; + +extern unsigned char pig_10_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_10_eye1_TA_tex_txt.inc" +}; + +extern unsigned char pig_10_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_10_eye2_TA_tex_txt.inc" +}; + +extern unsigned char pig_10_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_10_eye3_TA_tex_txt.inc" +}; + +extern unsigned char pig_10_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_10_eye4_TA_tex_txt.inc" +}; + +extern unsigned char pig_10_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_10_eye5_TA_tex_txt.inc" +}; + +extern unsigned char pig_10_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_10_eye6_TA_tex_txt.inc" +}; + +extern unsigned char pig_10_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_10_eye7_TA_tex_txt.inc" +}; + +extern unsigned char pig_10_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_10_eye8_TA_tex_txt.inc" +}; + +extern unsigned char pig_10_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_10_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char pig_10_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_10_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char pig_10_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_10_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char pig_10_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_10_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char pig_10_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_10_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char pig_10_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_10_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char pig_10_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_10_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pig_11.c b/src/data/npc/model/tex/pig_11.c new file mode 100644 index 00000000..847dcb05 --- /dev/null +++ b/src/data/npc/model/tex/pig_11.c @@ -0,0 +1,64 @@ +extern unsigned short pig_11_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_11_pal.inc" +}; + +extern unsigned char pig_11_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_11_eye1_TA_tex_txt.inc" +}; + +extern unsigned char pig_11_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_11_eye2_TA_tex_txt.inc" +}; + +extern unsigned char pig_11_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_11_eye3_TA_tex_txt.inc" +}; + +extern unsigned char pig_11_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_11_eye4_TA_tex_txt.inc" +}; + +extern unsigned char pig_11_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_11_eye5_TA_tex_txt.inc" +}; + +extern unsigned char pig_11_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_11_eye6_TA_tex_txt.inc" +}; + +extern unsigned char pig_11_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_11_eye7_TA_tex_txt.inc" +}; + +extern unsigned char pig_11_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_11_eye8_TA_tex_txt.inc" +}; + +extern unsigned char pig_11_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_11_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char pig_11_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_11_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char pig_11_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_11_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char pig_11_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_11_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char pig_11_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_11_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char pig_11_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_11_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char pig_11_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_11_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pig_2.c b/src/data/npc/model/tex/pig_2.c new file mode 100644 index 00000000..782ff577 --- /dev/null +++ b/src/data/npc/model/tex/pig_2.c @@ -0,0 +1,64 @@ +extern unsigned short pig_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_2_pal.inc" +}; + +extern unsigned char pig_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char pig_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char pig_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char pig_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char pig_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char pig_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char pig_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char pig_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char pig_2_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_2_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char pig_2_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_2_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char pig_2_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_2_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char pig_2_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_2_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char pig_2_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_2_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char pig_2_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_2_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char pig_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pig_3.c b/src/data/npc/model/tex/pig_3.c new file mode 100644 index 00000000..cd199df9 --- /dev/null +++ b/src/data/npc/model/tex/pig_3.c @@ -0,0 +1,64 @@ +extern unsigned short pig_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_3_pal.inc" +}; + +extern unsigned char pig_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char pig_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char pig_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char pig_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char pig_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char pig_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char pig_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char pig_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char pig_3_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_3_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char pig_3_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_3_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char pig_3_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_3_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char pig_3_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_3_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char pig_3_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_3_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char pig_3_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_3_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char pig_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pig_4.c b/src/data/npc/model/tex/pig_4.c new file mode 100644 index 00000000..b8108ec0 --- /dev/null +++ b/src/data/npc/model/tex/pig_4.c @@ -0,0 +1,64 @@ +extern unsigned short pig_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_4_pal.inc" +}; + +extern unsigned char pig_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char pig_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char pig_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char pig_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char pig_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char pig_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char pig_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char pig_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char pig_4_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_4_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char pig_4_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_4_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char pig_4_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_4_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char pig_4_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_4_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char pig_4_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_4_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char pig_4_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_4_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char pig_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pig_5.c b/src/data/npc/model/tex/pig_5.c new file mode 100644 index 00000000..23d4e4cd --- /dev/null +++ b/src/data/npc/model/tex/pig_5.c @@ -0,0 +1,64 @@ +extern unsigned short pig_5_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_5_pal.inc" +}; + +extern unsigned char pig_5_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_5_eye1_TA_tex_txt.inc" +}; + +extern unsigned char pig_5_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_5_eye2_TA_tex_txt.inc" +}; + +extern unsigned char pig_5_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_5_eye3_TA_tex_txt.inc" +}; + +extern unsigned char pig_5_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_5_eye4_TA_tex_txt.inc" +}; + +extern unsigned char pig_5_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_5_eye5_TA_tex_txt.inc" +}; + +extern unsigned char pig_5_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_5_eye6_TA_tex_txt.inc" +}; + +extern unsigned char pig_5_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_5_eye7_TA_tex_txt.inc" +}; + +extern unsigned char pig_5_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_5_eye8_TA_tex_txt.inc" +}; + +extern unsigned char pig_5_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_5_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char pig_5_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_5_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char pig_5_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_5_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char pig_5_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_5_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char pig_5_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_5_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char pig_5_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_5_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char pig_5_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_5_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pig_6.c b/src/data/npc/model/tex/pig_6.c new file mode 100644 index 00000000..748482e3 --- /dev/null +++ b/src/data/npc/model/tex/pig_6.c @@ -0,0 +1,64 @@ +extern unsigned short pig_6_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_6_pal.inc" +}; + +extern unsigned char pig_6_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_6_eye1_TA_tex_txt.inc" +}; + +extern unsigned char pig_6_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_6_eye2_TA_tex_txt.inc" +}; + +extern unsigned char pig_6_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_6_eye3_TA_tex_txt.inc" +}; + +extern unsigned char pig_6_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_6_eye4_TA_tex_txt.inc" +}; + +extern unsigned char pig_6_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_6_eye5_TA_tex_txt.inc" +}; + +extern unsigned char pig_6_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_6_eye6_TA_tex_txt.inc" +}; + +extern unsigned char pig_6_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_6_eye7_TA_tex_txt.inc" +}; + +extern unsigned char pig_6_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_6_eye8_TA_tex_txt.inc" +}; + +extern unsigned char pig_6_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_6_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char pig_6_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_6_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char pig_6_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_6_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char pig_6_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_6_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char pig_6_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_6_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char pig_6_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_6_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char pig_6_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_6_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pig_7.c b/src/data/npc/model/tex/pig_7.c new file mode 100644 index 00000000..90f1294a --- /dev/null +++ b/src/data/npc/model/tex/pig_7.c @@ -0,0 +1,64 @@ +extern unsigned short pig_7_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_7_pal.inc" +}; + +extern unsigned char pig_7_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_7_eye1_TA_tex_txt.inc" +}; + +extern unsigned char pig_7_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_7_eye2_TA_tex_txt.inc" +}; + +extern unsigned char pig_7_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_7_eye3_TA_tex_txt.inc" +}; + +extern unsigned char pig_7_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_7_eye4_TA_tex_txt.inc" +}; + +extern unsigned char pig_7_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_7_eye5_TA_tex_txt.inc" +}; + +extern unsigned char pig_7_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_7_eye6_TA_tex_txt.inc" +}; + +extern unsigned char pig_7_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_7_eye7_TA_tex_txt.inc" +}; + +extern unsigned char pig_7_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_7_eye8_TA_tex_txt.inc" +}; + +extern unsigned char pig_7_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_7_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char pig_7_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_7_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char pig_7_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_7_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char pig_7_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_7_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char pig_7_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_7_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char pig_7_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_7_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char pig_7_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_7_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pig_8.c b/src/data/npc/model/tex/pig_8.c new file mode 100644 index 00000000..57d9d9c3 --- /dev/null +++ b/src/data/npc/model/tex/pig_8.c @@ -0,0 +1,64 @@ +extern unsigned short pig_8_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_8_pal.inc" +}; + +extern unsigned char pig_8_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_8_eye1_TA_tex_txt.inc" +}; + +extern unsigned char pig_8_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_8_eye2_TA_tex_txt.inc" +}; + +extern unsigned char pig_8_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_8_eye3_TA_tex_txt.inc" +}; + +extern unsigned char pig_8_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_8_eye4_TA_tex_txt.inc" +}; + +extern unsigned char pig_8_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_8_eye5_TA_tex_txt.inc" +}; + +extern unsigned char pig_8_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_8_eye6_TA_tex_txt.inc" +}; + +extern unsigned char pig_8_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_8_eye7_TA_tex_txt.inc" +}; + +extern unsigned char pig_8_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_8_eye8_TA_tex_txt.inc" +}; + +extern unsigned char pig_8_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_8_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char pig_8_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_8_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char pig_8_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_8_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char pig_8_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_8_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char pig_8_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_8_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char pig_8_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_8_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char pig_8_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_8_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pig_9.c b/src/data/npc/model/tex/pig_9.c new file mode 100644 index 00000000..5f4cf2fd --- /dev/null +++ b/src/data/npc/model/tex/pig_9.c @@ -0,0 +1,64 @@ +extern unsigned short pig_9_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_9_pal.inc" +}; + +extern unsigned char pig_9_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_9_eye1_TA_tex_txt.inc" +}; + +extern unsigned char pig_9_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_9_eye2_TA_tex_txt.inc" +}; + +extern unsigned char pig_9_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_9_eye3_TA_tex_txt.inc" +}; + +extern unsigned char pig_9_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_9_eye4_TA_tex_txt.inc" +}; + +extern unsigned char pig_9_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_9_eye5_TA_tex_txt.inc" +}; + +extern unsigned char pig_9_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_9_eye6_TA_tex_txt.inc" +}; + +extern unsigned char pig_9_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_9_eye7_TA_tex_txt.inc" +}; + +extern unsigned char pig_9_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_9_eye8_TA_tex_txt.inc" +}; + +extern unsigned char pig_9_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_9_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char pig_9_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_9_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char pig_9_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_9_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char pig_9_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_9_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char pig_9_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_9_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char pig_9_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_9_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char pig_9_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_9_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pkn_1.c b/src/data/npc/model/tex/pkn_1.c new file mode 100644 index 00000000..bcd0f353 --- /dev/null +++ b/src/data/npc/model/tex/pkn_1.c @@ -0,0 +1,8 @@ +extern unsigned short pkn_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pkn_1_pal.inc" +}; + +extern unsigned char pkn_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pkn_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pla_1.c b/src/data/npc/model/tex/pla_1.c new file mode 100644 index 00000000..bb9be3c0 --- /dev/null +++ b/src/data/npc/model/tex/pla_1.c @@ -0,0 +1,64 @@ +extern unsigned short pla_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pla_1_pal.inc" +}; + +extern unsigned char pla_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pla_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char pla_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pla_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char pla_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pla_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char pla_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pla_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char pla_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pla_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char pla_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pla_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char pla_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pla_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char pla_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pla_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char pla_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pla_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char pla_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pla_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char pla_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pla_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char pla_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pla_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char pla_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pla_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char pla_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pla_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char pla_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pla_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/plb_1.c b/src/data/npc/model/tex/plb_1.c new file mode 100644 index 00000000..9589ae01 --- /dev/null +++ b/src/data/npc/model/tex/plb_1.c @@ -0,0 +1,40 @@ +extern unsigned short plb_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plb_1_pal.inc" +}; + +extern unsigned char plb_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plb_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char plb_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plb_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char plb_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plb_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char plb_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plb_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char plb_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plb_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char plb_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plb_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char plb_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plb_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char plb_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plb_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char plb_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plb_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/plc_1.c b/src/data/npc/model/tex/plc_1.c new file mode 100644 index 00000000..b920324e --- /dev/null +++ b/src/data/npc/model/tex/plc_1.c @@ -0,0 +1,64 @@ +extern unsigned short plc_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plc_1_pal.inc" +}; + +extern unsigned char plc_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plc_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char plc_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plc_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char plc_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plc_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char plc_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plc_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char plc_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plc_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char plc_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plc_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char plc_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plc_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char plc_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plc_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char plc_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plc_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char plc_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plc_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char plc_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plc_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char plc_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plc_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char plc_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plc_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char plc_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plc_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char plc_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plc_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/plj_1.c b/src/data/npc/model/tex/plj_1.c new file mode 100644 index 00000000..3fe4ccb6 --- /dev/null +++ b/src/data/npc/model/tex/plj_1.c @@ -0,0 +1,64 @@ +extern unsigned short plj_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plj_1_pal.inc" +}; + +extern unsigned char plj_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plj_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char plj_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plj_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char plj_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plj_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char plj_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plj_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char plj_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plj_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char plj_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plj_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char plj_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plj_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char plj_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plj_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char plj_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plj_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char plj_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plj_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char plj_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plj_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char plj_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plj_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char plj_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plj_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char plj_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plj_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char plj_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plj_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/rbt_1.c b/src/data/npc/model/tex/rbt_1.c new file mode 100644 index 00000000..7a3b7223 --- /dev/null +++ b/src/data/npc/model/tex/rbt_1.c @@ -0,0 +1,64 @@ +extern unsigned short rbt_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_1_pal.inc" +}; + +extern unsigned char rbt_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char rbt_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char rbt_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char rbt_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char rbt_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char rbt_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char rbt_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char rbt_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char rbt_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char rbt_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char rbt_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char rbt_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char rbt_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char rbt_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char rbt_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/rbt_10.c b/src/data/npc/model/tex/rbt_10.c new file mode 100644 index 00000000..a93ec51a --- /dev/null +++ b/src/data/npc/model/tex/rbt_10.c @@ -0,0 +1,64 @@ +extern unsigned short rbt_10_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_10_pal.inc" +}; + +extern unsigned char rbt_10_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_10_eye1_TA_tex_txt.inc" +}; + +extern unsigned char rbt_10_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_10_eye2_TA_tex_txt.inc" +}; + +extern unsigned char rbt_10_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_10_eye3_TA_tex_txt.inc" +}; + +extern unsigned char rbt_10_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_10_eye4_TA_tex_txt.inc" +}; + +extern unsigned char rbt_10_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_10_eye5_TA_tex_txt.inc" +}; + +extern unsigned char rbt_10_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_10_eye6_TA_tex_txt.inc" +}; + +extern unsigned char rbt_10_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_10_eye7_TA_tex_txt.inc" +}; + +extern unsigned char rbt_10_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_10_eye8_TA_tex_txt.inc" +}; + +extern unsigned char rbt_10_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_10_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char rbt_10_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_10_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char rbt_10_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_10_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char rbt_10_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_10_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char rbt_10_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_10_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char rbt_10_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_10_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char rbt_10_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_10_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/rbt_11.c b/src/data/npc/model/tex/rbt_11.c new file mode 100644 index 00000000..9d49e580 --- /dev/null +++ b/src/data/npc/model/tex/rbt_11.c @@ -0,0 +1,64 @@ +extern unsigned short rbt_11_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_11_pal.inc" +}; + +extern unsigned char rbt_11_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_11_eye1_TA_tex_txt.inc" +}; + +extern unsigned char rbt_11_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_11_eye2_TA_tex_txt.inc" +}; + +extern unsigned char rbt_11_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_11_eye3_TA_tex_txt.inc" +}; + +extern unsigned char rbt_11_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_11_eye4_TA_tex_txt.inc" +}; + +extern unsigned char rbt_11_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_11_eye5_TA_tex_txt.inc" +}; + +extern unsigned char rbt_11_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_11_eye6_TA_tex_txt.inc" +}; + +extern unsigned char rbt_11_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_11_eye7_TA_tex_txt.inc" +}; + +extern unsigned char rbt_11_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_11_eye8_TA_tex_txt.inc" +}; + +extern unsigned char rbt_11_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_11_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char rbt_11_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_11_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char rbt_11_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_11_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char rbt_11_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_11_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char rbt_11_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_11_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char rbt_11_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_11_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char rbt_11_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_11_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/rbt_2.c b/src/data/npc/model/tex/rbt_2.c new file mode 100644 index 00000000..3418cbca --- /dev/null +++ b/src/data/npc/model/tex/rbt_2.c @@ -0,0 +1,64 @@ +extern unsigned short rbt_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_2_pal.inc" +}; + +extern unsigned char rbt_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char rbt_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char rbt_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char rbt_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char rbt_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char rbt_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char rbt_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char rbt_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char rbt_2_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_2_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char rbt_2_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_2_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char rbt_2_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_2_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char rbt_2_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_2_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char rbt_2_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_2_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char rbt_2_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_2_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char rbt_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/rbt_3.c b/src/data/npc/model/tex/rbt_3.c new file mode 100644 index 00000000..46aa417c --- /dev/null +++ b/src/data/npc/model/tex/rbt_3.c @@ -0,0 +1,64 @@ +extern unsigned short rbt_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_3_pal.inc" +}; + +extern unsigned char rbt_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char rbt_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char rbt_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char rbt_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char rbt_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char rbt_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char rbt_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char rbt_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char rbt_3_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_3_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char rbt_3_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_3_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char rbt_3_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_3_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char rbt_3_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_3_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char rbt_3_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_3_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char rbt_3_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_3_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char rbt_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/rbt_4.c b/src/data/npc/model/tex/rbt_4.c new file mode 100644 index 00000000..79c801c4 --- /dev/null +++ b/src/data/npc/model/tex/rbt_4.c @@ -0,0 +1,64 @@ +extern unsigned short rbt_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_4_pal.inc" +}; + +extern unsigned char rbt_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char rbt_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char rbt_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char rbt_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char rbt_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char rbt_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char rbt_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char rbt_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char rbt_4_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_4_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char rbt_4_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_4_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char rbt_4_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_4_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char rbt_4_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_4_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char rbt_4_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_4_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char rbt_4_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_4_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char rbt_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/rbt_5.c b/src/data/npc/model/tex/rbt_5.c new file mode 100644 index 00000000..701842f6 --- /dev/null +++ b/src/data/npc/model/tex/rbt_5.c @@ -0,0 +1,64 @@ +extern unsigned short rbt_5_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_5_pal.inc" +}; + +extern unsigned char rbt_5_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_5_eye1_TA_tex_txt.inc" +}; + +extern unsigned char rbt_5_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_5_eye2_TA_tex_txt.inc" +}; + +extern unsigned char rbt_5_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_5_eye3_TA_tex_txt.inc" +}; + +extern unsigned char rbt_5_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_5_eye4_TA_tex_txt.inc" +}; + +extern unsigned char rbt_5_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_5_eye5_TA_tex_txt.inc" +}; + +extern unsigned char rbt_5_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_5_eye6_TA_tex_txt.inc" +}; + +extern unsigned char rbt_5_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_5_eye7_TA_tex_txt.inc" +}; + +extern unsigned char rbt_5_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_5_eye8_TA_tex_txt.inc" +}; + +extern unsigned char rbt_5_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_5_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char rbt_5_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_5_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char rbt_5_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_5_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char rbt_5_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_5_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char rbt_5_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_5_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char rbt_5_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_5_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char rbt_5_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_5_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/rbt_6.c b/src/data/npc/model/tex/rbt_6.c new file mode 100644 index 00000000..3d14b5b3 --- /dev/null +++ b/src/data/npc/model/tex/rbt_6.c @@ -0,0 +1,64 @@ +extern unsigned short rbt_6_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_6_pal.inc" +}; + +extern unsigned char rbt_6_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_6_eye1_TA_tex_txt.inc" +}; + +extern unsigned char rbt_6_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_6_eye2_TA_tex_txt.inc" +}; + +extern unsigned char rbt_6_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_6_eye3_TA_tex_txt.inc" +}; + +extern unsigned char rbt_6_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_6_eye4_TA_tex_txt.inc" +}; + +extern unsigned char rbt_6_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_6_eye5_TA_tex_txt.inc" +}; + +extern unsigned char rbt_6_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_6_eye6_TA_tex_txt.inc" +}; + +extern unsigned char rbt_6_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_6_eye7_TA_tex_txt.inc" +}; + +extern unsigned char rbt_6_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_6_eye8_TA_tex_txt.inc" +}; + +extern unsigned char rbt_6_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_6_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char rbt_6_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_6_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char rbt_6_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_6_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char rbt_6_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_6_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char rbt_6_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_6_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char rbt_6_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_6_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char rbt_6_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_6_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/rbt_7.c b/src/data/npc/model/tex/rbt_7.c new file mode 100644 index 00000000..26e8ab65 --- /dev/null +++ b/src/data/npc/model/tex/rbt_7.c @@ -0,0 +1,64 @@ +extern unsigned short rbt_7_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_7_pal.inc" +}; + +extern unsigned char rbt_7_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_7_eye1_TA_tex_txt.inc" +}; + +extern unsigned char rbt_7_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_7_eye2_TA_tex_txt.inc" +}; + +extern unsigned char rbt_7_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_7_eye3_TA_tex_txt.inc" +}; + +extern unsigned char rbt_7_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_7_eye4_TA_tex_txt.inc" +}; + +extern unsigned char rbt_7_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_7_eye5_TA_tex_txt.inc" +}; + +extern unsigned char rbt_7_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_7_eye6_TA_tex_txt.inc" +}; + +extern unsigned char rbt_7_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_7_eye7_TA_tex_txt.inc" +}; + +extern unsigned char rbt_7_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_7_eye8_TA_tex_txt.inc" +}; + +extern unsigned char rbt_7_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_7_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char rbt_7_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_7_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char rbt_7_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_7_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char rbt_7_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_7_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char rbt_7_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_7_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char rbt_7_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_7_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char rbt_7_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_7_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/rbt_8.c b/src/data/npc/model/tex/rbt_8.c new file mode 100644 index 00000000..bd7ec6ae --- /dev/null +++ b/src/data/npc/model/tex/rbt_8.c @@ -0,0 +1,64 @@ +extern unsigned short rbt_8_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_8_pal.inc" +}; + +extern unsigned char rbt_8_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_8_eye1_TA_tex_txt.inc" +}; + +extern unsigned char rbt_8_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_8_eye2_TA_tex_txt.inc" +}; + +extern unsigned char rbt_8_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_8_eye3_TA_tex_txt.inc" +}; + +extern unsigned char rbt_8_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_8_eye4_TA_tex_txt.inc" +}; + +extern unsigned char rbt_8_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_8_eye5_TA_tex_txt.inc" +}; + +extern unsigned char rbt_8_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_8_eye6_TA_tex_txt.inc" +}; + +extern unsigned char rbt_8_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_8_eye7_TA_tex_txt.inc" +}; + +extern unsigned char rbt_8_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_8_eye8_TA_tex_txt.inc" +}; + +extern unsigned char rbt_8_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_8_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char rbt_8_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_8_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char rbt_8_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_8_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char rbt_8_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_8_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char rbt_8_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_8_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char rbt_8_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_8_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char rbt_8_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_8_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/rbt_9.c b/src/data/npc/model/tex/rbt_9.c new file mode 100644 index 00000000..a90607b6 --- /dev/null +++ b/src/data/npc/model/tex/rbt_9.c @@ -0,0 +1,64 @@ +extern unsigned short rbt_9_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_9_pal.inc" +}; + +extern unsigned char rbt_9_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_9_eye1_TA_tex_txt.inc" +}; + +extern unsigned char rbt_9_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_9_eye2_TA_tex_txt.inc" +}; + +extern unsigned char rbt_9_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_9_eye3_TA_tex_txt.inc" +}; + +extern unsigned char rbt_9_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_9_eye4_TA_tex_txt.inc" +}; + +extern unsigned char rbt_9_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_9_eye5_TA_tex_txt.inc" +}; + +extern unsigned char rbt_9_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_9_eye6_TA_tex_txt.inc" +}; + +extern unsigned char rbt_9_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_9_eye7_TA_tex_txt.inc" +}; + +extern unsigned char rbt_9_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_9_eye8_TA_tex_txt.inc" +}; + +extern unsigned char rbt_9_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_9_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char rbt_9_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_9_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char rbt_9_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_9_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char rbt_9_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_9_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char rbt_9_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_9_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char rbt_9_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_9_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char rbt_9_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_9_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/rcc_1.c b/src/data/npc/model/tex/rcc_1.c new file mode 100644 index 00000000..2a30862b --- /dev/null +++ b/src/data/npc/model/tex/rcc_1.c @@ -0,0 +1,40 @@ +extern unsigned short rcc_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcc_1_pal.inc" +}; + +extern unsigned char rcc_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcc_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char rcc_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcc_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char rcc_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcc_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char rcc_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcc_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char rcc_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcc_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char rcc_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcc_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char rcc_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcc_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char rcc_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcc_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char rcc_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcc_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/rcd_1.c b/src/data/npc/model/tex/rcd_1.c new file mode 100644 index 00000000..b76a9134 --- /dev/null +++ b/src/data/npc/model/tex/rcd_1.c @@ -0,0 +1,40 @@ +extern unsigned short rcd_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcd_1_pal.inc" +}; + +extern unsigned char rcd_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcd_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char rcd_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcd_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char rcd_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcd_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char rcd_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcd_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char rcd_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcd_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char rcd_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcd_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char rcd_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcd_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char rcd_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcd_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char rcd_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcd_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/rcf_1.c b/src/data/npc/model/tex/rcf_1.c new file mode 100644 index 00000000..f2664b6c --- /dev/null +++ b/src/data/npc/model/tex/rcf_1.c @@ -0,0 +1,40 @@ +extern unsigned short rcf_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcf_1_pal.inc" +}; + +extern unsigned char rcf_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcf_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char rcf_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcf_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char rcf_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcf_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char rcf_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcf_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char rcf_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcf_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char rcf_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcf_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char rcf_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcf_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char rcf_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcf_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char rcf_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcf_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/rcn_1.c b/src/data/npc/model/tex/rcn_1.c new file mode 100644 index 00000000..6199b7e8 --- /dev/null +++ b/src/data/npc/model/tex/rcn_1.c @@ -0,0 +1,40 @@ +extern unsigned short rcn_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcn_1_pal.inc" +}; + +extern unsigned char rcn_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcn_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char rcn_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcn_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char rcn_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcn_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char rcn_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcn_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char rcn_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcn_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char rcn_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcn_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char rcn_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcn_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char rcn_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcn_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char rcn_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcn_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/rcs_1.c b/src/data/npc/model/tex/rcs_1.c new file mode 100644 index 00000000..8950a82b --- /dev/null +++ b/src/data/npc/model/tex/rcs_1.c @@ -0,0 +1,40 @@ +extern unsigned short rcs_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcs_1_pal.inc" +}; + +extern unsigned char rcs_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcs_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char rcs_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcs_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char rcs_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcs_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char rcs_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcs_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char rcs_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcs_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char rcs_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcs_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char rcs_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcs_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char rcs_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcs_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char rcs_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcs_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/rhn_1.c b/src/data/npc/model/tex/rhn_1.c new file mode 100644 index 00000000..ffc93fee --- /dev/null +++ b/src/data/npc/model/tex/rhn_1.c @@ -0,0 +1,64 @@ +extern unsigned short rhn_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_1_pal.inc" +}; + +extern unsigned char rhn_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char rhn_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char rhn_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char rhn_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char rhn_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char rhn_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char rhn_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char rhn_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char rhn_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char rhn_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char rhn_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char rhn_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char rhn_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char rhn_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char rhn_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/rhn_2.c b/src/data/npc/model/tex/rhn_2.c new file mode 100644 index 00000000..6f2b8bc1 --- /dev/null +++ b/src/data/npc/model/tex/rhn_2.c @@ -0,0 +1,64 @@ +extern unsigned short rhn_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_2_pal.inc" +}; + +extern unsigned char rhn_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char rhn_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char rhn_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char rhn_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char rhn_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char rhn_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char rhn_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char rhn_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char rhn_2_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_2_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char rhn_2_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_2_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char rhn_2_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_2_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char rhn_2_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_2_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char rhn_2_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_2_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char rhn_2_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_2_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char rhn_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/rhn_3.c b/src/data/npc/model/tex/rhn_3.c new file mode 100644 index 00000000..660f9de0 --- /dev/null +++ b/src/data/npc/model/tex/rhn_3.c @@ -0,0 +1,64 @@ +extern unsigned short rhn_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_3_pal.inc" +}; + +extern unsigned char rhn_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char rhn_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char rhn_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char rhn_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char rhn_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char rhn_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char rhn_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char rhn_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char rhn_3_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_3_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char rhn_3_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_3_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char rhn_3_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_3_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char rhn_3_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_3_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char rhn_3_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_3_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char rhn_3_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_3_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char rhn_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/rhn_4.c b/src/data/npc/model/tex/rhn_4.c new file mode 100644 index 00000000..e30f6eb9 --- /dev/null +++ b/src/data/npc/model/tex/rhn_4.c @@ -0,0 +1,64 @@ +extern unsigned short rhn_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_4_pal.inc" +}; + +extern unsigned char rhn_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char rhn_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char rhn_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char rhn_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char rhn_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char rhn_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char rhn_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char rhn_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char rhn_4_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_4_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char rhn_4_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_4_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char rhn_4_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_4_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char rhn_4_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_4_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char rhn_4_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_4_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char rhn_4_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_4_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char rhn_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/seg_1.c b/src/data/npc/model/tex/seg_1.c new file mode 100644 index 00000000..0c9f8c26 --- /dev/null +++ b/src/data/npc/model/tex/seg_1.c @@ -0,0 +1,40 @@ +extern unsigned short seg_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/seg_1_pal.inc" +}; + +extern unsigned char seg_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/seg_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char seg_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/seg_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char seg_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/seg_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char seg_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/seg_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char seg_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/seg_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char seg_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/seg_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char seg_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/seg_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char seg_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/seg_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char seg_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/seg_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/shp_1.c b/src/data/npc/model/tex/shp_1.c new file mode 100644 index 00000000..691add0b --- /dev/null +++ b/src/data/npc/model/tex/shp_1.c @@ -0,0 +1,64 @@ +extern unsigned short shp_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_1_pal.inc" +}; + +extern unsigned char shp_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char shp_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char shp_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char shp_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char shp_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char shp_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char shp_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char shp_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char shp_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char shp_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char shp_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char shp_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char shp_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char shp_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char shp_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/shp_2.c b/src/data/npc/model/tex/shp_2.c new file mode 100644 index 00000000..5258cbdb --- /dev/null +++ b/src/data/npc/model/tex/shp_2.c @@ -0,0 +1,64 @@ +extern unsigned short shp_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_2_pal.inc" +}; + +extern unsigned char shp_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char shp_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char shp_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char shp_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char shp_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char shp_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char shp_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char shp_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char shp_2_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_2_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char shp_2_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_2_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char shp_2_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_2_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char shp_2_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_2_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char shp_2_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_2_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char shp_2_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_2_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char shp_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/shp_3.c b/src/data/npc/model/tex/shp_3.c new file mode 100644 index 00000000..517c99bf --- /dev/null +++ b/src/data/npc/model/tex/shp_3.c @@ -0,0 +1,64 @@ +extern unsigned short shp_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_3_pal.inc" +}; + +extern unsigned char shp_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char shp_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char shp_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char shp_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char shp_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char shp_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char shp_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char shp_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char shp_3_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_3_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char shp_3_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_3_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char shp_3_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_3_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char shp_3_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_3_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char shp_3_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_3_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char shp_3_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_3_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char shp_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/shp_4.c b/src/data/npc/model/tex/shp_4.c new file mode 100644 index 00000000..dd84cfef --- /dev/null +++ b/src/data/npc/model/tex/shp_4.c @@ -0,0 +1,64 @@ +extern unsigned short shp_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_4_pal.inc" +}; + +extern unsigned char shp_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char shp_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char shp_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char shp_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char shp_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char shp_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char shp_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char shp_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char shp_4_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_4_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char shp_4_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_4_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char shp_4_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_4_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char shp_4_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_4_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char shp_4_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_4_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char shp_4_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_4_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char shp_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/shp_5.c b/src/data/npc/model/tex/shp_5.c new file mode 100644 index 00000000..1dc98385 --- /dev/null +++ b/src/data/npc/model/tex/shp_5.c @@ -0,0 +1,64 @@ +extern unsigned short shp_5_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_5_pal.inc" +}; + +extern unsigned char shp_5_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_5_eye1_TA_tex_txt.inc" +}; + +extern unsigned char shp_5_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_5_eye2_TA_tex_txt.inc" +}; + +extern unsigned char shp_5_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_5_eye3_TA_tex_txt.inc" +}; + +extern unsigned char shp_5_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_5_eye4_TA_tex_txt.inc" +}; + +extern unsigned char shp_5_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_5_eye5_TA_tex_txt.inc" +}; + +extern unsigned char shp_5_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_5_eye6_TA_tex_txt.inc" +}; + +extern unsigned char shp_5_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_5_eye7_TA_tex_txt.inc" +}; + +extern unsigned char shp_5_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_5_eye8_TA_tex_txt.inc" +}; + +extern unsigned char shp_5_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_5_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char shp_5_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_5_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char shp_5_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_5_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char shp_5_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_5_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char shp_5_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_5_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char shp_5_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_5_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char shp_5_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_5_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/shp_6.c b/src/data/npc/model/tex/shp_6.c new file mode 100644 index 00000000..c51f1dba --- /dev/null +++ b/src/data/npc/model/tex/shp_6.c @@ -0,0 +1,64 @@ +extern unsigned short shp_6_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_6_pal.inc" +}; + +extern unsigned char shp_6_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_6_eye1_TA_tex_txt.inc" +}; + +extern unsigned char shp_6_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_6_eye2_TA_tex_txt.inc" +}; + +extern unsigned char shp_6_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_6_eye3_TA_tex_txt.inc" +}; + +extern unsigned char shp_6_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_6_eye4_TA_tex_txt.inc" +}; + +extern unsigned char shp_6_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_6_eye5_TA_tex_txt.inc" +}; + +extern unsigned char shp_6_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_6_eye6_TA_tex_txt.inc" +}; + +extern unsigned char shp_6_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_6_eye7_TA_tex_txt.inc" +}; + +extern unsigned char shp_6_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_6_eye8_TA_tex_txt.inc" +}; + +extern unsigned char shp_6_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_6_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char shp_6_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_6_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char shp_6_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_6_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char shp_6_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_6_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char shp_6_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_6_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char shp_6_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_6_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char shp_6_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_6_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/snt_1.c b/src/data/npc/model/tex/snt_1.c new file mode 100644 index 00000000..596b819e --- /dev/null +++ b/src/data/npc/model/tex/snt_1.c @@ -0,0 +1,64 @@ +extern unsigned short snt_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/snt_1_pal.inc" +}; + +extern unsigned char snt_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/snt_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char snt_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/snt_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char snt_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/snt_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char snt_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/snt_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char snt_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/snt_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char snt_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/snt_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char snt_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/snt_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char snt_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/snt_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char snt_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/snt_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char snt_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/snt_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char snt_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/snt_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char snt_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/snt_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char snt_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/snt_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char snt_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/snt_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char snt_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/snt_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/squ_1.c b/src/data/npc/model/tex/squ_1.c new file mode 100644 index 00000000..ce4783ed --- /dev/null +++ b/src/data/npc/model/tex/squ_1.c @@ -0,0 +1,64 @@ +extern unsigned short squ_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_1_pal.inc" +}; + +extern unsigned char squ_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char squ_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char squ_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char squ_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char squ_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char squ_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char squ_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char squ_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char squ_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char squ_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char squ_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char squ_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char squ_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char squ_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char squ_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/squ_10.c b/src/data/npc/model/tex/squ_10.c new file mode 100644 index 00000000..f1883b28 --- /dev/null +++ b/src/data/npc/model/tex/squ_10.c @@ -0,0 +1,64 @@ +extern unsigned short squ_10_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_10_pal.inc" +}; + +extern unsigned char squ_10_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_10_eye1_TA_tex_txt.inc" +}; + +extern unsigned char squ_10_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_10_eye2_TA_tex_txt.inc" +}; + +extern unsigned char squ_10_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_10_eye3_TA_tex_txt.inc" +}; + +extern unsigned char squ_10_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_10_eye4_TA_tex_txt.inc" +}; + +extern unsigned char squ_10_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_10_eye5_TA_tex_txt.inc" +}; + +extern unsigned char squ_10_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_10_eye6_TA_tex_txt.inc" +}; + +extern unsigned char squ_10_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_10_eye7_TA_tex_txt.inc" +}; + +extern unsigned char squ_10_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_10_eye8_TA_tex_txt.inc" +}; + +extern unsigned char squ_10_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_10_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char squ_10_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_10_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char squ_10_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_10_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char squ_10_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_10_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char squ_10_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_10_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char squ_10_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_10_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char squ_10_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_10_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/squ_11.c b/src/data/npc/model/tex/squ_11.c new file mode 100644 index 00000000..20d7ad0b --- /dev/null +++ b/src/data/npc/model/tex/squ_11.c @@ -0,0 +1,64 @@ +extern unsigned short squ_11_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_11_pal.inc" +}; + +extern unsigned char squ_11_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_11_eye1_TA_tex_txt.inc" +}; + +extern unsigned char squ_11_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_11_eye2_TA_tex_txt.inc" +}; + +extern unsigned char squ_11_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_11_eye3_TA_tex_txt.inc" +}; + +extern unsigned char squ_11_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_11_eye4_TA_tex_txt.inc" +}; + +extern unsigned char squ_11_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_11_eye5_TA_tex_txt.inc" +}; + +extern unsigned char squ_11_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_11_eye6_TA_tex_txt.inc" +}; + +extern unsigned char squ_11_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_11_eye7_TA_tex_txt.inc" +}; + +extern unsigned char squ_11_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_11_eye8_TA_tex_txt.inc" +}; + +extern unsigned char squ_11_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_11_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char squ_11_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_11_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char squ_11_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_11_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char squ_11_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_11_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char squ_11_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_11_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char squ_11_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_11_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char squ_11_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_11_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/squ_2.c b/src/data/npc/model/tex/squ_2.c new file mode 100644 index 00000000..d0d802aa --- /dev/null +++ b/src/data/npc/model/tex/squ_2.c @@ -0,0 +1,64 @@ +extern unsigned short squ_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_2_pal.inc" +}; + +extern unsigned char squ_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char squ_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char squ_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char squ_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char squ_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char squ_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char squ_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char squ_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char squ_2_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_2_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char squ_2_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_2_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char squ_2_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_2_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char squ_2_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_2_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char squ_2_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_2_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char squ_2_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_2_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char squ_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/squ_3.c b/src/data/npc/model/tex/squ_3.c new file mode 100644 index 00000000..0f318ebf --- /dev/null +++ b/src/data/npc/model/tex/squ_3.c @@ -0,0 +1,64 @@ +extern unsigned short squ_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_3_pal.inc" +}; + +extern unsigned char squ_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char squ_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char squ_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char squ_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char squ_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char squ_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char squ_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char squ_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char squ_3_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_3_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char squ_3_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_3_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char squ_3_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_3_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char squ_3_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_3_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char squ_3_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_3_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char squ_3_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_3_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char squ_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/squ_4.c b/src/data/npc/model/tex/squ_4.c new file mode 100644 index 00000000..cc60cee8 --- /dev/null +++ b/src/data/npc/model/tex/squ_4.c @@ -0,0 +1,64 @@ +extern unsigned short squ_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_4_pal.inc" +}; + +extern unsigned char squ_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char squ_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char squ_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char squ_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char squ_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char squ_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char squ_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char squ_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char squ_4_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_4_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char squ_4_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_4_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char squ_4_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_4_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char squ_4_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_4_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char squ_4_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_4_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char squ_4_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_4_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char squ_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/squ_5.c b/src/data/npc/model/tex/squ_5.c new file mode 100644 index 00000000..9fc7098f --- /dev/null +++ b/src/data/npc/model/tex/squ_5.c @@ -0,0 +1,64 @@ +extern unsigned short squ_5_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_5_pal.inc" +}; + +extern unsigned char squ_5_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_5_eye1_TA_tex_txt.inc" +}; + +extern unsigned char squ_5_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_5_eye2_TA_tex_txt.inc" +}; + +extern unsigned char squ_5_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_5_eye3_TA_tex_txt.inc" +}; + +extern unsigned char squ_5_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_5_eye4_TA_tex_txt.inc" +}; + +extern unsigned char squ_5_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_5_eye5_TA_tex_txt.inc" +}; + +extern unsigned char squ_5_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_5_eye6_TA_tex_txt.inc" +}; + +extern unsigned char squ_5_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_5_eye7_TA_tex_txt.inc" +}; + +extern unsigned char squ_5_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_5_eye8_TA_tex_txt.inc" +}; + +extern unsigned char squ_5_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_5_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char squ_5_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_5_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char squ_5_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_5_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char squ_5_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_5_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char squ_5_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_5_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char squ_5_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_5_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char squ_5_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_5_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/squ_6.c b/src/data/npc/model/tex/squ_6.c new file mode 100644 index 00000000..77d7e937 --- /dev/null +++ b/src/data/npc/model/tex/squ_6.c @@ -0,0 +1,64 @@ +extern unsigned short squ_6_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_6_pal.inc" +}; + +extern unsigned char squ_6_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_6_eye1_TA_tex_txt.inc" +}; + +extern unsigned char squ_6_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_6_eye2_TA_tex_txt.inc" +}; + +extern unsigned char squ_6_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_6_eye3_TA_tex_txt.inc" +}; + +extern unsigned char squ_6_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_6_eye4_TA_tex_txt.inc" +}; + +extern unsigned char squ_6_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_6_eye5_TA_tex_txt.inc" +}; + +extern unsigned char squ_6_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_6_eye6_TA_tex_txt.inc" +}; + +extern unsigned char squ_6_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_6_eye7_TA_tex_txt.inc" +}; + +extern unsigned char squ_6_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_6_eye8_TA_tex_txt.inc" +}; + +extern unsigned char squ_6_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_6_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char squ_6_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_6_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char squ_6_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_6_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char squ_6_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_6_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char squ_6_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_6_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char squ_6_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_6_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char squ_6_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_6_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/squ_7.c b/src/data/npc/model/tex/squ_7.c new file mode 100644 index 00000000..903a7087 --- /dev/null +++ b/src/data/npc/model/tex/squ_7.c @@ -0,0 +1,64 @@ +extern unsigned short squ_7_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_7_pal.inc" +}; + +extern unsigned char squ_7_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_7_eye1_TA_tex_txt.inc" +}; + +extern unsigned char squ_7_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_7_eye2_TA_tex_txt.inc" +}; + +extern unsigned char squ_7_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_7_eye3_TA_tex_txt.inc" +}; + +extern unsigned char squ_7_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_7_eye4_TA_tex_txt.inc" +}; + +extern unsigned char squ_7_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_7_eye5_TA_tex_txt.inc" +}; + +extern unsigned char squ_7_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_7_eye6_TA_tex_txt.inc" +}; + +extern unsigned char squ_7_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_7_eye7_TA_tex_txt.inc" +}; + +extern unsigned char squ_7_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_7_eye8_TA_tex_txt.inc" +}; + +extern unsigned char squ_7_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_7_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char squ_7_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_7_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char squ_7_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_7_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char squ_7_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_7_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char squ_7_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_7_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char squ_7_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_7_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char squ_7_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_7_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/squ_8.c b/src/data/npc/model/tex/squ_8.c new file mode 100644 index 00000000..2d63ac91 --- /dev/null +++ b/src/data/npc/model/tex/squ_8.c @@ -0,0 +1,64 @@ +extern unsigned short squ_8_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_8_pal.inc" +}; + +extern unsigned char squ_8_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_8_eye1_TA_tex_txt.inc" +}; + +extern unsigned char squ_8_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_8_eye2_TA_tex_txt.inc" +}; + +extern unsigned char squ_8_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_8_eye3_TA_tex_txt.inc" +}; + +extern unsigned char squ_8_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_8_eye4_TA_tex_txt.inc" +}; + +extern unsigned char squ_8_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_8_eye5_TA_tex_txt.inc" +}; + +extern unsigned char squ_8_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_8_eye6_TA_tex_txt.inc" +}; + +extern unsigned char squ_8_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_8_eye7_TA_tex_txt.inc" +}; + +extern unsigned char squ_8_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_8_eye8_TA_tex_txt.inc" +}; + +extern unsigned char squ_8_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_8_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char squ_8_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_8_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char squ_8_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_8_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char squ_8_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_8_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char squ_8_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_8_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char squ_8_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_8_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char squ_8_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_8_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/squ_9.c b/src/data/npc/model/tex/squ_9.c new file mode 100644 index 00000000..fed7addb --- /dev/null +++ b/src/data/npc/model/tex/squ_9.c @@ -0,0 +1,64 @@ +extern unsigned short squ_9_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_9_pal.inc" +}; + +extern unsigned char squ_9_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_9_eye1_TA_tex_txt.inc" +}; + +extern unsigned char squ_9_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_9_eye2_TA_tex_txt.inc" +}; + +extern unsigned char squ_9_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_9_eye3_TA_tex_txt.inc" +}; + +extern unsigned char squ_9_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_9_eye4_TA_tex_txt.inc" +}; + +extern unsigned char squ_9_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_9_eye5_TA_tex_txt.inc" +}; + +extern unsigned char squ_9_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_9_eye6_TA_tex_txt.inc" +}; + +extern unsigned char squ_9_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_9_eye7_TA_tex_txt.inc" +}; + +extern unsigned char squ_9_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_9_eye8_TA_tex_txt.inc" +}; + +extern unsigned char squ_9_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_9_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char squ_9_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_9_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char squ_9_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_9_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char squ_9_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_9_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char squ_9_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_9_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char squ_9_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_9_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char squ_9_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_9_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/tig_1.c b/src/data/npc/model/tex/tig_1.c new file mode 100644 index 00000000..6d7d7acd --- /dev/null +++ b/src/data/npc/model/tex/tig_1.c @@ -0,0 +1,40 @@ +extern unsigned short tig_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_1_pal.inc" +}; + +extern unsigned char tig_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char tig_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char tig_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char tig_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char tig_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char tig_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char tig_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char tig_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char tig_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/tig_2.c b/src/data/npc/model/tex/tig_2.c new file mode 100644 index 00000000..e9ac283e --- /dev/null +++ b/src/data/npc/model/tex/tig_2.c @@ -0,0 +1,40 @@ +extern unsigned short tig_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_2_pal.inc" +}; + +extern unsigned char tig_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char tig_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char tig_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char tig_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char tig_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char tig_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char tig_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char tig_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char tig_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/tig_3.c b/src/data/npc/model/tex/tig_3.c new file mode 100644 index 00000000..a08b3375 --- /dev/null +++ b/src/data/npc/model/tex/tig_3.c @@ -0,0 +1,40 @@ +extern unsigned short tig_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_3_pal.inc" +}; + +extern unsigned char tig_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char tig_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char tig_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char tig_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char tig_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char tig_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char tig_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char tig_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char tig_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/tig_4.c b/src/data/npc/model/tex/tig_4.c new file mode 100644 index 00000000..226ff941 --- /dev/null +++ b/src/data/npc/model/tex/tig_4.c @@ -0,0 +1,40 @@ +extern unsigned short tig_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_4_pal.inc" +}; + +extern unsigned char tig_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char tig_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char tig_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char tig_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char tig_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char tig_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char tig_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char tig_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char tig_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/ttl_1.c b/src/data/npc/model/tex/ttl_1.c new file mode 100644 index 00000000..af635d14 --- /dev/null +++ b/src/data/npc/model/tex/ttl_1.c @@ -0,0 +1,40 @@ +extern unsigned short ttl_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ttl_1_pal.inc" +}; + +extern unsigned char ttl_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ttl_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char ttl_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ttl_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char ttl_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ttl_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char ttl_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ttl_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char ttl_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ttl_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char ttl_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ttl_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char ttl_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ttl_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char ttl_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ttl_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char ttl_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ttl_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/tuk_1.c b/src/data/npc/model/tex/tuk_1.c new file mode 100644 index 00000000..81645e1b --- /dev/null +++ b/src/data/npc/model/tex/tuk_1.c @@ -0,0 +1,40 @@ +extern unsigned short tuk_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tuk_1_pal.inc" +}; + +extern unsigned char tuk_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tuk_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char tuk_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tuk_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char tuk_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tuk_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char tuk_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tuk_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char tuk_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tuk_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char tuk_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tuk_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char tuk_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tuk_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char tuk_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tuk_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char tuk_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tuk_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/wip_1.c b/src/data/npc/model/tex/wip_1.c new file mode 100644 index 00000000..15ca7c87 --- /dev/null +++ b/src/data/npc/model/tex/wip_1.c @@ -0,0 +1,64 @@ +extern unsigned short wip_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wip_1_pal.inc" +}; + +extern unsigned char wip_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wip_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char wip_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wip_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char wip_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wip_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char wip_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wip_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char wip_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wip_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char wip_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wip_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char wip_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wip_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char wip_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wip_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char wip_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wip_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char wip_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wip_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char wip_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wip_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char wip_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wip_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char wip_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wip_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char wip_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wip_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char wip_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wip_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/wls_1.c b/src/data/npc/model/tex/wls_1.c new file mode 100644 index 00000000..6524282b --- /dev/null +++ b/src/data/npc/model/tex/wls_1.c @@ -0,0 +1,40 @@ +extern unsigned short wls_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wls_1_pal.inc" +}; + +extern unsigned char wls_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wls_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char wls_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wls_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char wls_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wls_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char wls_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wls_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char wls_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wls_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char wls_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wls_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char wls_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wls_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char wls_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wls_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char wls_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wls_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/wol_1.c b/src/data/npc/model/tex/wol_1.c new file mode 100644 index 00000000..66002fc4 --- /dev/null +++ b/src/data/npc/model/tex/wol_1.c @@ -0,0 +1,40 @@ +extern unsigned short wol_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_1_pal.inc" +}; + +extern unsigned char wol_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char wol_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char wol_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char wol_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char wol_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char wol_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char wol_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char wol_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char wol_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/wol_2.c b/src/data/npc/model/tex/wol_2.c new file mode 100644 index 00000000..fcc88c43 --- /dev/null +++ b/src/data/npc/model/tex/wol_2.c @@ -0,0 +1,40 @@ +extern unsigned short wol_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_2_pal.inc" +}; + +extern unsigned char wol_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char wol_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char wol_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char wol_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char wol_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char wol_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char wol_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char wol_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char wol_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/wol_3.c b/src/data/npc/model/tex/wol_3.c new file mode 100644 index 00000000..620a54d0 --- /dev/null +++ b/src/data/npc/model/tex/wol_3.c @@ -0,0 +1,40 @@ +extern unsigned short wol_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_3_pal.inc" +}; + +extern unsigned char wol_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char wol_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char wol_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char wol_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char wol_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char wol_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char wol_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char wol_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char wol_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/wol_4.c b/src/data/npc/model/tex/wol_4.c new file mode 100644 index 00000000..c77b05b1 --- /dev/null +++ b/src/data/npc/model/tex/wol_4.c @@ -0,0 +1,40 @@ +extern unsigned short wol_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_4_pal.inc" +}; + +extern unsigned char wol_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char wol_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char wol_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char wol_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char wol_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char wol_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char wol_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char wol_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char wol_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/wol_5.c b/src/data/npc/model/tex/wol_5.c new file mode 100644 index 00000000..34b96cc1 --- /dev/null +++ b/src/data/npc/model/tex/wol_5.c @@ -0,0 +1,40 @@ +extern unsigned short wol_5_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_5_pal.inc" +}; + +extern unsigned char wol_5_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_5_eye1_TA_tex_txt.inc" +}; + +extern unsigned char wol_5_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_5_eye2_TA_tex_txt.inc" +}; + +extern unsigned char wol_5_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_5_eye3_TA_tex_txt.inc" +}; + +extern unsigned char wol_5_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_5_eye4_TA_tex_txt.inc" +}; + +extern unsigned char wol_5_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_5_eye5_TA_tex_txt.inc" +}; + +extern unsigned char wol_5_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_5_eye6_TA_tex_txt.inc" +}; + +extern unsigned char wol_5_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_5_eye7_TA_tex_txt.inc" +}; + +extern unsigned char wol_5_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_5_eye8_TA_tex_txt.inc" +}; + +extern unsigned char wol_5_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_5_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/wol_6.c b/src/data/npc/model/tex/wol_6.c new file mode 100644 index 00000000..b8f99f76 --- /dev/null +++ b/src/data/npc/model/tex/wol_6.c @@ -0,0 +1,40 @@ +extern unsigned short wol_6_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_6_pal.inc" +}; + +extern unsigned char wol_6_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_6_eye1_TA_tex_txt.inc" +}; + +extern unsigned char wol_6_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_6_eye2_TA_tex_txt.inc" +}; + +extern unsigned char wol_6_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_6_eye3_TA_tex_txt.inc" +}; + +extern unsigned char wol_6_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_6_eye4_TA_tex_txt.inc" +}; + +extern unsigned char wol_6_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_6_eye5_TA_tex_txt.inc" +}; + +extern unsigned char wol_6_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_6_eye6_TA_tex_txt.inc" +}; + +extern unsigned char wol_6_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_6_eye7_TA_tex_txt.inc" +}; + +extern unsigned char wol_6_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_6_eye8_TA_tex_txt.inc" +}; + +extern unsigned char wol_6_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_6_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/xct_1.c b/src/data/npc/model/tex/xct_1.c new file mode 100644 index 00000000..d4eadb74 --- /dev/null +++ b/src/data/npc/model/tex/xct_1.c @@ -0,0 +1,64 @@ +extern unsigned short xct_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xct_1_pal.inc" +}; + +extern unsigned char xct_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xct_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char xct_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xct_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char xct_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xct_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char xct_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xct_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char xct_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xct_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char xct_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xct_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char xct_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xct_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char xct_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xct_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char xct_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xct_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char xct_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xct_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char xct_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xct_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char xct_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xct_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char xct_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xct_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char xct_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xct_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char xct_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xct_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/xsq_1.c b/src/data/npc/model/tex/xsq_1.c new file mode 100644 index 00000000..729f64be --- /dev/null +++ b/src/data/npc/model/tex/xsq_1.c @@ -0,0 +1,64 @@ +extern unsigned short xsq_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xsq_1_pal.inc" +}; + +extern unsigned char xsq_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xsq_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char xsq_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xsq_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char xsq_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xsq_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char xsq_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xsq_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char xsq_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xsq_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char xsq_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xsq_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char xsq_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xsq_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char xsq_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xsq_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char xsq_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xsq_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char xsq_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xsq_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char xsq_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xsq_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char xsq_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xsq_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char xsq_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xsq_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char xsq_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xsq_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char xsq_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xsq_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/npc_draw_data.c b/src/data/npc/npc_draw_data.c new file mode 100644 index 00000000..332ab5b0 --- /dev/null +++ b/src/data/npc/npc_draw_data.c @@ -0,0 +1,21349 @@ +#include "ac_npc.h" + +extern cKF_Skeleton_R_c cKF_bs_r_cat_1; +extern unsigned short cat_1_pal[]; +extern unsigned char cat_1_eye1_TA_tex_txt[]; +extern unsigned char cat_1_eye2_TA_tex_txt[]; +extern unsigned char cat_1_eye3_TA_tex_txt[]; +extern unsigned char cat_1_eye4_TA_tex_txt[]; +extern unsigned char cat_1_eye5_TA_tex_txt[]; +extern unsigned char cat_1_eye6_TA_tex_txt[]; +extern unsigned char cat_1_eye7_TA_tex_txt[]; +extern unsigned char cat_1_eye8_TA_tex_txt[]; +extern unsigned char cat_1_mouth1_TA_tex_txt[]; +extern unsigned char cat_1_mouth2_TA_tex_txt[]; +extern unsigned char cat_1_mouth3_TA_tex_txt[]; +extern unsigned char cat_1_mouth4_TA_tex_txt[]; +extern unsigned char cat_1_mouth5_TA_tex_txt[]; +extern unsigned char cat_1_mouth6_TA_tex_txt[]; +extern unsigned char cat_1_tmem_txt[]; +extern unsigned short cat_2_pal[]; +extern unsigned char cat_2_eye1_TA_tex_txt[]; +extern unsigned char cat_2_eye2_TA_tex_txt[]; +extern unsigned char cat_2_eye3_TA_tex_txt[]; +extern unsigned char cat_2_eye4_TA_tex_txt[]; +extern unsigned char cat_2_eye5_TA_tex_txt[]; +extern unsigned char cat_2_eye6_TA_tex_txt[]; +extern unsigned char cat_2_eye7_TA_tex_txt[]; +extern unsigned char cat_2_eye8_TA_tex_txt[]; +extern unsigned char cat_2_mouth1_TA_tex_txt[]; +extern unsigned char cat_2_mouth2_TA_tex_txt[]; +extern unsigned char cat_2_mouth3_TA_tex_txt[]; +extern unsigned char cat_2_mouth4_TA_tex_txt[]; +extern unsigned char cat_2_mouth5_TA_tex_txt[]; +extern unsigned char cat_2_mouth6_TA_tex_txt[]; +extern unsigned char cat_2_tmem_txt[]; +extern unsigned short cat_3_pal[]; +extern unsigned char cat_3_eye1_TA_tex_txt[]; +extern unsigned char cat_3_eye2_TA_tex_txt[]; +extern unsigned char cat_3_eye3_TA_tex_txt[]; +extern unsigned char cat_3_eye4_TA_tex_txt[]; +extern unsigned char cat_3_eye5_TA_tex_txt[]; +extern unsigned char cat_3_eye6_TA_tex_txt[]; +extern unsigned char cat_3_eye7_TA_tex_txt[]; +extern unsigned char cat_3_eye8_TA_tex_txt[]; +extern unsigned char cat_3_mouth1_TA_tex_txt[]; +extern unsigned char cat_3_mouth2_TA_tex_txt[]; +extern unsigned char cat_3_mouth3_TA_tex_txt[]; +extern unsigned char cat_3_mouth4_TA_tex_txt[]; +extern unsigned char cat_3_mouth5_TA_tex_txt[]; +extern unsigned char cat_3_mouth6_TA_tex_txt[]; +extern unsigned char cat_3_tmem_txt[]; +extern unsigned short cat_4_pal[]; +extern unsigned char cat_4_eye1_TA_tex_txt[]; +extern unsigned char cat_4_eye2_TA_tex_txt[]; +extern unsigned char cat_4_eye3_TA_tex_txt[]; +extern unsigned char cat_4_eye4_TA_tex_txt[]; +extern unsigned char cat_4_eye5_TA_tex_txt[]; +extern unsigned char cat_4_eye6_TA_tex_txt[]; +extern unsigned char cat_4_eye7_TA_tex_txt[]; +extern unsigned char cat_4_eye8_TA_tex_txt[]; +extern unsigned char cat_4_mouth1_TA_tex_txt[]; +extern unsigned char cat_4_mouth2_TA_tex_txt[]; +extern unsigned char cat_4_mouth3_TA_tex_txt[]; +extern unsigned char cat_4_mouth4_TA_tex_txt[]; +extern unsigned char cat_4_mouth5_TA_tex_txt[]; +extern unsigned char cat_4_mouth6_TA_tex_txt[]; +extern unsigned char cat_4_tmem_txt[]; +extern unsigned short cat_5_pal[]; +extern unsigned char cat_5_eye1_TA_tex_txt[]; +extern unsigned char cat_5_eye2_TA_tex_txt[]; +extern unsigned char cat_5_eye3_TA_tex_txt[]; +extern unsigned char cat_5_eye4_TA_tex_txt[]; +extern unsigned char cat_5_eye5_TA_tex_txt[]; +extern unsigned char cat_5_eye6_TA_tex_txt[]; +extern unsigned char cat_5_eye7_TA_tex_txt[]; +extern unsigned char cat_5_eye8_TA_tex_txt[]; +extern unsigned char cat_5_mouth1_TA_tex_txt[]; +extern unsigned char cat_5_mouth2_TA_tex_txt[]; +extern unsigned char cat_5_mouth3_TA_tex_txt[]; +extern unsigned char cat_5_mouth4_TA_tex_txt[]; +extern unsigned char cat_5_mouth5_TA_tex_txt[]; +extern unsigned char cat_5_mouth6_TA_tex_txt[]; +extern unsigned char cat_5_tmem_txt[]; +extern unsigned short cat_6_pal[]; +extern unsigned char cat_6_eye1_TA_tex_txt[]; +extern unsigned char cat_6_eye2_TA_tex_txt[]; +extern unsigned char cat_6_eye3_TA_tex_txt[]; +extern unsigned char cat_6_eye4_TA_tex_txt[]; +extern unsigned char cat_6_eye5_TA_tex_txt[]; +extern unsigned char cat_6_eye6_TA_tex_txt[]; +extern unsigned char cat_6_eye7_TA_tex_txt[]; +extern unsigned char cat_6_eye8_TA_tex_txt[]; +extern unsigned char cat_6_mouth1_TA_tex_txt[]; +extern unsigned char cat_6_mouth2_TA_tex_txt[]; +extern unsigned char cat_6_mouth3_TA_tex_txt[]; +extern unsigned char cat_6_mouth4_TA_tex_txt[]; +extern unsigned char cat_6_mouth5_TA_tex_txt[]; +extern unsigned char cat_6_mouth6_TA_tex_txt[]; +extern unsigned char cat_6_tmem_txt[]; +extern unsigned short cat_7_pal[]; +extern unsigned char cat_7_eye1_TA_tex_txt[]; +extern unsigned char cat_7_eye2_TA_tex_txt[]; +extern unsigned char cat_7_eye3_TA_tex_txt[]; +extern unsigned char cat_7_eye4_TA_tex_txt[]; +extern unsigned char cat_7_eye5_TA_tex_txt[]; +extern unsigned char cat_7_eye6_TA_tex_txt[]; +extern unsigned char cat_7_eye7_TA_tex_txt[]; +extern unsigned char cat_7_eye8_TA_tex_txt[]; +extern unsigned char cat_7_mouth1_TA_tex_txt[]; +extern unsigned char cat_7_mouth2_TA_tex_txt[]; +extern unsigned char cat_7_mouth3_TA_tex_txt[]; +extern unsigned char cat_7_mouth4_TA_tex_txt[]; +extern unsigned char cat_7_mouth5_TA_tex_txt[]; +extern unsigned char cat_7_mouth6_TA_tex_txt[]; +extern unsigned char cat_7_tmem_txt[]; +extern unsigned short cat_8_pal[]; +extern unsigned char cat_8_eye1_TA_tex_txt[]; +extern unsigned char cat_8_eye2_TA_tex_txt[]; +extern unsigned char cat_8_eye3_TA_tex_txt[]; +extern unsigned char cat_8_eye4_TA_tex_txt[]; +extern unsigned char cat_8_eye5_TA_tex_txt[]; +extern unsigned char cat_8_eye6_TA_tex_txt[]; +extern unsigned char cat_8_eye7_TA_tex_txt[]; +extern unsigned char cat_8_eye8_TA_tex_txt[]; +extern unsigned char cat_8_mouth1_TA_tex_txt[]; +extern unsigned char cat_8_mouth2_TA_tex_txt[]; +extern unsigned char cat_8_mouth3_TA_tex_txt[]; +extern unsigned char cat_8_mouth4_TA_tex_txt[]; +extern unsigned char cat_8_mouth5_TA_tex_txt[]; +extern unsigned char cat_8_mouth6_TA_tex_txt[]; +extern unsigned char cat_8_tmem_txt[]; +extern unsigned short cat_9_pal[]; +extern unsigned char cat_9_eye1_TA_tex_txt[]; +extern unsigned char cat_9_eye2_TA_tex_txt[]; +extern unsigned char cat_9_eye3_TA_tex_txt[]; +extern unsigned char cat_9_eye4_TA_tex_txt[]; +extern unsigned char cat_9_eye5_TA_tex_txt[]; +extern unsigned char cat_9_eye6_TA_tex_txt[]; +extern unsigned char cat_9_eye7_TA_tex_txt[]; +extern unsigned char cat_9_eye8_TA_tex_txt[]; +extern unsigned char cat_9_mouth1_TA_tex_txt[]; +extern unsigned char cat_9_mouth2_TA_tex_txt[]; +extern unsigned char cat_9_mouth3_TA_tex_txt[]; +extern unsigned char cat_9_mouth4_TA_tex_txt[]; +extern unsigned char cat_9_mouth5_TA_tex_txt[]; +extern unsigned char cat_9_mouth6_TA_tex_txt[]; +extern unsigned char cat_9_tmem_txt[]; +extern unsigned short cat_10_pal[]; +extern unsigned char cat_10_eye1_TA_tex_txt[]; +extern unsigned char cat_10_eye2_TA_tex_txt[]; +extern unsigned char cat_10_eye3_TA_tex_txt[]; +extern unsigned char cat_10_eye4_TA_tex_txt[]; +extern unsigned char cat_10_eye5_TA_tex_txt[]; +extern unsigned char cat_10_eye6_TA_tex_txt[]; +extern unsigned char cat_10_eye7_TA_tex_txt[]; +extern unsigned char cat_10_eye8_TA_tex_txt[]; +extern unsigned char cat_10_mouth1_TA_tex_txt[]; +extern unsigned char cat_10_mouth2_TA_tex_txt[]; +extern unsigned char cat_10_mouth3_TA_tex_txt[]; +extern unsigned char cat_10_mouth4_TA_tex_txt[]; +extern unsigned char cat_10_mouth5_TA_tex_txt[]; +extern unsigned char cat_10_mouth6_TA_tex_txt[]; +extern unsigned char cat_10_tmem_txt[]; +extern unsigned short cat_11_pal[]; +extern unsigned char cat_11_eye1_TA_tex_txt[]; +extern unsigned char cat_11_eye2_TA_tex_txt[]; +extern unsigned char cat_11_eye3_TA_tex_txt[]; +extern unsigned char cat_11_eye4_TA_tex_txt[]; +extern unsigned char cat_11_eye5_TA_tex_txt[]; +extern unsigned char cat_11_eye6_TA_tex_txt[]; +extern unsigned char cat_11_eye7_TA_tex_txt[]; +extern unsigned char cat_11_eye8_TA_tex_txt[]; +extern unsigned char cat_11_mouth1_TA_tex_txt[]; +extern unsigned char cat_11_mouth2_TA_tex_txt[]; +extern unsigned char cat_11_mouth3_TA_tex_txt[]; +extern unsigned char cat_11_mouth4_TA_tex_txt[]; +extern unsigned char cat_11_mouth5_TA_tex_txt[]; +extern unsigned char cat_11_mouth6_TA_tex_txt[]; +extern unsigned char cat_11_tmem_txt[]; +extern unsigned short cat_12_pal[]; +extern unsigned char cat_12_eye1_TA_tex_txt[]; +extern unsigned char cat_12_eye2_TA_tex_txt[]; +extern unsigned char cat_12_eye3_TA_tex_txt[]; +extern unsigned char cat_12_eye4_TA_tex_txt[]; +extern unsigned char cat_12_eye5_TA_tex_txt[]; +extern unsigned char cat_12_eye6_TA_tex_txt[]; +extern unsigned char cat_12_eye7_TA_tex_txt[]; +extern unsigned char cat_12_eye8_TA_tex_txt[]; +extern unsigned char cat_12_mouth1_TA_tex_txt[]; +extern unsigned char cat_12_mouth2_TA_tex_txt[]; +extern unsigned char cat_12_mouth3_TA_tex_txt[]; +extern unsigned char cat_12_mouth4_TA_tex_txt[]; +extern unsigned char cat_12_mouth5_TA_tex_txt[]; +extern unsigned char cat_12_mouth6_TA_tex_txt[]; +extern unsigned char cat_12_tmem_txt[]; +extern unsigned short cat_13_pal[]; +extern unsigned char cat_13_eye1_TA_tex_txt[]; +extern unsigned char cat_13_eye2_TA_tex_txt[]; +extern unsigned char cat_13_eye3_TA_tex_txt[]; +extern unsigned char cat_13_eye4_TA_tex_txt[]; +extern unsigned char cat_13_eye5_TA_tex_txt[]; +extern unsigned char cat_13_eye6_TA_tex_txt[]; +extern unsigned char cat_13_eye7_TA_tex_txt[]; +extern unsigned char cat_13_eye8_TA_tex_txt[]; +extern unsigned char cat_13_mouth1_TA_tex_txt[]; +extern unsigned char cat_13_mouth2_TA_tex_txt[]; +extern unsigned char cat_13_mouth3_TA_tex_txt[]; +extern unsigned char cat_13_mouth4_TA_tex_txt[]; +extern unsigned char cat_13_mouth5_TA_tex_txt[]; +extern unsigned char cat_13_mouth6_TA_tex_txt[]; +extern unsigned char cat_13_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_ant_1; +extern unsigned short ant_1_pal[]; +extern unsigned char ant_1_eye1_TA_tex_txt[]; +extern unsigned char ant_1_eye2_TA_tex_txt[]; +extern unsigned char ant_1_eye3_TA_tex_txt[]; +extern unsigned char ant_1_eye4_TA_tex_txt[]; +extern unsigned char ant_1_eye5_TA_tex_txt[]; +extern unsigned char ant_1_eye6_TA_tex_txt[]; +extern unsigned char ant_1_eye7_TA_tex_txt[]; +extern unsigned char ant_1_eye8_TA_tex_txt[]; +extern unsigned char ant_1_tmem_txt[]; +extern unsigned short ant_2_pal[]; +extern unsigned char ant_2_eye1_TA_tex_txt[]; +extern unsigned char ant_2_eye2_TA_tex_txt[]; +extern unsigned char ant_2_eye3_TA_tex_txt[]; +extern unsigned char ant_2_eye4_TA_tex_txt[]; +extern unsigned char ant_2_eye5_TA_tex_txt[]; +extern unsigned char ant_2_eye6_TA_tex_txt[]; +extern unsigned char ant_2_eye7_TA_tex_txt[]; +extern unsigned char ant_2_eye8_TA_tex_txt[]; +extern unsigned char ant_2_tmem_txt[]; +extern unsigned short ant_3_pal[]; +extern unsigned char ant_3_eye1_TA_tex_txt[]; +extern unsigned char ant_3_eye2_TA_tex_txt[]; +extern unsigned char ant_3_eye3_TA_tex_txt[]; +extern unsigned char ant_3_eye4_TA_tex_txt[]; +extern unsigned char ant_3_eye5_TA_tex_txt[]; +extern unsigned char ant_3_eye6_TA_tex_txt[]; +extern unsigned char ant_3_eye7_TA_tex_txt[]; +extern unsigned char ant_3_eye8_TA_tex_txt[]; +extern unsigned char ant_3_tmem_txt[]; +extern unsigned short ant_4_pal[]; +extern unsigned char ant_4_eye1_TA_tex_txt[]; +extern unsigned char ant_4_eye2_TA_tex_txt[]; +extern unsigned char ant_4_eye3_TA_tex_txt[]; +extern unsigned char ant_4_eye4_TA_tex_txt[]; +extern unsigned char ant_4_eye5_TA_tex_txt[]; +extern unsigned char ant_4_eye6_TA_tex_txt[]; +extern unsigned char ant_4_eye7_TA_tex_txt[]; +extern unsigned char ant_4_eye8_TA_tex_txt[]; +extern unsigned char ant_4_tmem_txt[]; +extern unsigned short ant_5_pal[]; +extern unsigned char ant_5_eye1_TA_tex_txt[]; +extern unsigned char ant_5_eye2_TA_tex_txt[]; +extern unsigned char ant_5_eye3_TA_tex_txt[]; +extern unsigned char ant_5_eye4_TA_tex_txt[]; +extern unsigned char ant_5_eye5_TA_tex_txt[]; +extern unsigned char ant_5_eye6_TA_tex_txt[]; +extern unsigned char ant_5_eye7_TA_tex_txt[]; +extern unsigned char ant_5_eye8_TA_tex_txt[]; +extern unsigned char ant_5_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_bea_1; +extern unsigned short bea_1_pal[]; +extern unsigned char bea_1_eye1_TA_tex_txt[]; +extern unsigned char bea_1_eye2_TA_tex_txt[]; +extern unsigned char bea_1_eye3_TA_tex_txt[]; +extern unsigned char bea_1_eye4_TA_tex_txt[]; +extern unsigned char bea_1_eye5_TA_tex_txt[]; +extern unsigned char bea_1_eye6_TA_tex_txt[]; +extern unsigned char bea_1_eye7_TA_tex_txt[]; +extern unsigned char bea_1_eye8_TA_tex_txt[]; +extern unsigned char bea_1_mouth1_TA_tex_txt[]; +extern unsigned char bea_1_mouth2_TA_tex_txt[]; +extern unsigned char bea_1_mouth3_TA_tex_txt[]; +extern unsigned char bea_1_mouth4_TA_tex_txt[]; +extern unsigned char bea_1_mouth5_TA_tex_txt[]; +extern unsigned char bea_1_mouth6_TA_tex_txt[]; +extern unsigned char bea_1_tmem_txt[]; +extern unsigned short bea_2_pal[]; +extern unsigned char bea_2_eye1_TA_tex_txt[]; +extern unsigned char bea_2_eye2_TA_tex_txt[]; +extern unsigned char bea_2_eye3_TA_tex_txt[]; +extern unsigned char bea_2_eye4_TA_tex_txt[]; +extern unsigned char bea_2_eye5_TA_tex_txt[]; +extern unsigned char bea_2_eye6_TA_tex_txt[]; +extern unsigned char bea_2_eye7_TA_tex_txt[]; +extern unsigned char bea_2_eye8_TA_tex_txt[]; +extern unsigned char bea_2_mouth1_TA_tex_txt[]; +extern unsigned char bea_2_mouth2_TA_tex_txt[]; +extern unsigned char bea_2_mouth3_TA_tex_txt[]; +extern unsigned char bea_2_mouth4_TA_tex_txt[]; +extern unsigned char bea_2_mouth5_TA_tex_txt[]; +extern unsigned char bea_2_mouth6_TA_tex_txt[]; +extern unsigned char bea_2_tmem_txt[]; +extern unsigned short bea_3_pal[]; +extern unsigned char bea_3_eye1_TA_tex_txt[]; +extern unsigned char bea_3_eye2_TA_tex_txt[]; +extern unsigned char bea_3_eye3_TA_tex_txt[]; +extern unsigned char bea_3_eye4_TA_tex_txt[]; +extern unsigned char bea_3_eye5_TA_tex_txt[]; +extern unsigned char bea_3_eye6_TA_tex_txt[]; +extern unsigned char bea_3_eye7_TA_tex_txt[]; +extern unsigned char bea_3_eye8_TA_tex_txt[]; +extern unsigned char bea_3_mouth1_TA_tex_txt[]; +extern unsigned char bea_3_mouth2_TA_tex_txt[]; +extern unsigned char bea_3_mouth3_TA_tex_txt[]; +extern unsigned char bea_3_mouth4_TA_tex_txt[]; +extern unsigned char bea_3_mouth5_TA_tex_txt[]; +extern unsigned char bea_3_mouth6_TA_tex_txt[]; +extern unsigned char bea_3_tmem_txt[]; +extern unsigned short bea_5_pal[]; +extern unsigned char bea_5_eye1_TA_tex_txt[]; +extern unsigned char bea_5_eye2_TA_tex_txt[]; +extern unsigned char bea_5_eye3_TA_tex_txt[]; +extern unsigned char bea_5_eye4_TA_tex_txt[]; +extern unsigned char bea_5_eye5_TA_tex_txt[]; +extern unsigned char bea_5_eye6_TA_tex_txt[]; +extern unsigned char bea_5_eye7_TA_tex_txt[]; +extern unsigned char bea_5_eye8_TA_tex_txt[]; +extern unsigned char bea_5_mouth1_TA_tex_txt[]; +extern unsigned char bea_5_mouth2_TA_tex_txt[]; +extern unsigned char bea_5_mouth3_TA_tex_txt[]; +extern unsigned char bea_5_mouth4_TA_tex_txt[]; +extern unsigned char bea_5_mouth5_TA_tex_txt[]; +extern unsigned char bea_5_mouth6_TA_tex_txt[]; +extern unsigned char bea_5_tmem_txt[]; +extern unsigned short bea_6_pal[]; +extern unsigned char bea_6_eye1_TA_tex_txt[]; +extern unsigned char bea_6_eye2_TA_tex_txt[]; +extern unsigned char bea_6_eye3_TA_tex_txt[]; +extern unsigned char bea_6_eye4_TA_tex_txt[]; +extern unsigned char bea_6_eye5_TA_tex_txt[]; +extern unsigned char bea_6_eye6_TA_tex_txt[]; +extern unsigned char bea_6_eye7_TA_tex_txt[]; +extern unsigned char bea_6_eye8_TA_tex_txt[]; +extern unsigned char bea_6_mouth1_TA_tex_txt[]; +extern unsigned char bea_6_mouth2_TA_tex_txt[]; +extern unsigned char bea_6_mouth3_TA_tex_txt[]; +extern unsigned char bea_6_mouth4_TA_tex_txt[]; +extern unsigned char bea_6_mouth5_TA_tex_txt[]; +extern unsigned char bea_6_mouth6_TA_tex_txt[]; +extern unsigned char bea_6_tmem_txt[]; +extern unsigned short bea_7_pal[]; +extern unsigned char bea_7_eye1_TA_tex_txt[]; +extern unsigned char bea_7_eye2_TA_tex_txt[]; +extern unsigned char bea_7_eye3_TA_tex_txt[]; +extern unsigned char bea_7_eye4_TA_tex_txt[]; +extern unsigned char bea_7_eye5_TA_tex_txt[]; +extern unsigned char bea_7_eye6_TA_tex_txt[]; +extern unsigned char bea_7_eye7_TA_tex_txt[]; +extern unsigned char bea_7_eye8_TA_tex_txt[]; +extern unsigned char bea_7_mouth1_TA_tex_txt[]; +extern unsigned char bea_7_mouth2_TA_tex_txt[]; +extern unsigned char bea_7_mouth3_TA_tex_txt[]; +extern unsigned char bea_7_mouth4_TA_tex_txt[]; +extern unsigned char bea_7_mouth5_TA_tex_txt[]; +extern unsigned char bea_7_mouth6_TA_tex_txt[]; +extern unsigned char bea_7_tmem_txt[]; +extern unsigned short bea_8_pal[]; +extern unsigned char bea_8_eye1_TA_tex_txt[]; +extern unsigned char bea_8_eye2_TA_tex_txt[]; +extern unsigned char bea_8_eye3_TA_tex_txt[]; +extern unsigned char bea_8_eye4_TA_tex_txt[]; +extern unsigned char bea_8_eye5_TA_tex_txt[]; +extern unsigned char bea_8_eye6_TA_tex_txt[]; +extern unsigned char bea_8_eye7_TA_tex_txt[]; +extern unsigned char bea_8_eye8_TA_tex_txt[]; +extern unsigned char bea_8_mouth1_TA_tex_txt[]; +extern unsigned char bea_8_mouth2_TA_tex_txt[]; +extern unsigned char bea_8_mouth3_TA_tex_txt[]; +extern unsigned char bea_8_mouth4_TA_tex_txt[]; +extern unsigned char bea_8_mouth5_TA_tex_txt[]; +extern unsigned char bea_8_mouth6_TA_tex_txt[]; +extern unsigned char bea_8_tmem_txt[]; +extern unsigned short bea_9_pal[]; +extern unsigned char bea_9_eye1_TA_tex_txt[]; +extern unsigned char bea_9_eye2_TA_tex_txt[]; +extern unsigned char bea_9_eye3_TA_tex_txt[]; +extern unsigned char bea_9_eye4_TA_tex_txt[]; +extern unsigned char bea_9_eye5_TA_tex_txt[]; +extern unsigned char bea_9_eye6_TA_tex_txt[]; +extern unsigned char bea_9_eye7_TA_tex_txt[]; +extern unsigned char bea_9_eye8_TA_tex_txt[]; +extern unsigned char bea_9_mouth1_TA_tex_txt[]; +extern unsigned char bea_9_mouth2_TA_tex_txt[]; +extern unsigned char bea_9_mouth3_TA_tex_txt[]; +extern unsigned char bea_9_mouth4_TA_tex_txt[]; +extern unsigned char bea_9_mouth5_TA_tex_txt[]; +extern unsigned char bea_9_mouth6_TA_tex_txt[]; +extern unsigned char bea_9_tmem_txt[]; +extern unsigned short bea_10_pal[]; +extern unsigned char bea_10_eye1_TA_tex_txt[]; +extern unsigned char bea_10_eye2_TA_tex_txt[]; +extern unsigned char bea_10_eye3_TA_tex_txt[]; +extern unsigned char bea_10_eye4_TA_tex_txt[]; +extern unsigned char bea_10_eye5_TA_tex_txt[]; +extern unsigned char bea_10_eye6_TA_tex_txt[]; +extern unsigned char bea_10_eye7_TA_tex_txt[]; +extern unsigned char bea_10_eye8_TA_tex_txt[]; +extern unsigned char bea_10_mouth1_TA_tex_txt[]; +extern unsigned char bea_10_mouth2_TA_tex_txt[]; +extern unsigned char bea_10_mouth3_TA_tex_txt[]; +extern unsigned char bea_10_mouth4_TA_tex_txt[]; +extern unsigned char bea_10_mouth5_TA_tex_txt[]; +extern unsigned char bea_10_mouth6_TA_tex_txt[]; +extern unsigned char bea_10_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_brd_1; +extern unsigned short brd_1_pal[]; +extern unsigned char brd_1_eye1_TA_tex_txt[]; +extern unsigned char brd_1_eye2_TA_tex_txt[]; +extern unsigned char brd_1_eye3_TA_tex_txt[]; +extern unsigned char brd_1_eye4_TA_tex_txt[]; +extern unsigned char brd_1_eye5_TA_tex_txt[]; +extern unsigned char brd_1_eye6_TA_tex_txt[]; +extern unsigned char brd_1_eye7_TA_tex_txt[]; +extern unsigned char brd_1_eye8_TA_tex_txt[]; +extern unsigned char brd_1_tmem_txt[]; +extern unsigned short brd_2_pal[]; +extern unsigned char brd_2_eye1_TA_tex_txt[]; +extern unsigned char brd_2_eye2_TA_tex_txt[]; +extern unsigned char brd_2_eye3_TA_tex_txt[]; +extern unsigned char brd_2_eye4_TA_tex_txt[]; +extern unsigned char brd_2_eye5_TA_tex_txt[]; +extern unsigned char brd_2_eye6_TA_tex_txt[]; +extern unsigned char brd_2_eye7_TA_tex_txt[]; +extern unsigned char brd_2_eye8_TA_tex_txt[]; +extern unsigned char brd_2_tmem_txt[]; +extern unsigned short brd_3_pal[]; +extern unsigned char brd_3_eye1_TA_tex_txt[]; +extern unsigned char brd_3_eye2_TA_tex_txt[]; +extern unsigned char brd_3_eye3_TA_tex_txt[]; +extern unsigned char brd_3_eye4_TA_tex_txt[]; +extern unsigned char brd_3_eye5_TA_tex_txt[]; +extern unsigned char brd_3_eye6_TA_tex_txt[]; +extern unsigned char brd_3_eye7_TA_tex_txt[]; +extern unsigned char brd_3_eye8_TA_tex_txt[]; +extern unsigned char brd_3_tmem_txt[]; +extern unsigned short brd_4_pal[]; +extern unsigned char brd_4_eye1_TA_tex_txt[]; +extern unsigned char brd_4_eye2_TA_tex_txt[]; +extern unsigned char brd_4_eye3_TA_tex_txt[]; +extern unsigned char brd_4_eye4_TA_tex_txt[]; +extern unsigned char brd_4_eye5_TA_tex_txt[]; +extern unsigned char brd_4_eye6_TA_tex_txt[]; +extern unsigned char brd_4_eye7_TA_tex_txt[]; +extern unsigned char brd_4_eye8_TA_tex_txt[]; +extern unsigned char brd_4_tmem_txt[]; +extern unsigned short brd_5_pal[]; +extern unsigned char brd_5_eye1_TA_tex_txt[]; +extern unsigned char brd_5_eye2_TA_tex_txt[]; +extern unsigned char brd_5_eye3_TA_tex_txt[]; +extern unsigned char brd_5_eye4_TA_tex_txt[]; +extern unsigned char brd_5_eye5_TA_tex_txt[]; +extern unsigned char brd_5_eye6_TA_tex_txt[]; +extern unsigned char brd_5_eye7_TA_tex_txt[]; +extern unsigned char brd_5_eye8_TA_tex_txt[]; +extern unsigned char brd_5_tmem_txt[]; +extern unsigned short brd_6_pal[]; +extern unsigned char brd_6_eye1_TA_tex_txt[]; +extern unsigned char brd_6_eye2_TA_tex_txt[]; +extern unsigned char brd_6_eye3_TA_tex_txt[]; +extern unsigned char brd_6_eye4_TA_tex_txt[]; +extern unsigned char brd_6_eye5_TA_tex_txt[]; +extern unsigned char brd_6_eye6_TA_tex_txt[]; +extern unsigned char brd_6_eye7_TA_tex_txt[]; +extern unsigned char brd_6_eye8_TA_tex_txt[]; +extern unsigned char brd_6_tmem_txt[]; +extern unsigned short brd_7_pal[]; +extern unsigned char brd_7_eye1_TA_tex_txt[]; +extern unsigned char brd_7_eye2_TA_tex_txt[]; +extern unsigned char brd_7_eye3_TA_tex_txt[]; +extern unsigned char brd_7_eye4_TA_tex_txt[]; +extern unsigned char brd_7_eye5_TA_tex_txt[]; +extern unsigned char brd_7_eye6_TA_tex_txt[]; +extern unsigned char brd_7_eye7_TA_tex_txt[]; +extern unsigned char brd_7_eye8_TA_tex_txt[]; +extern unsigned char brd_7_tmem_txt[]; +extern unsigned short brd_8_pal[]; +extern unsigned char brd_8_eye1_TA_tex_txt[]; +extern unsigned char brd_8_eye2_TA_tex_txt[]; +extern unsigned char brd_8_eye3_TA_tex_txt[]; +extern unsigned char brd_8_eye4_TA_tex_txt[]; +extern unsigned char brd_8_eye5_TA_tex_txt[]; +extern unsigned char brd_8_eye6_TA_tex_txt[]; +extern unsigned char brd_8_eye7_TA_tex_txt[]; +extern unsigned char brd_8_eye8_TA_tex_txt[]; +extern unsigned char brd_8_tmem_txt[]; +extern unsigned short brd_9_pal[]; +extern unsigned char brd_9_eye1_TA_tex_txt[]; +extern unsigned char brd_9_eye2_TA_tex_txt[]; +extern unsigned char brd_9_eye3_TA_tex_txt[]; +extern unsigned char brd_9_eye4_TA_tex_txt[]; +extern unsigned char brd_9_eye5_TA_tex_txt[]; +extern unsigned char brd_9_eye6_TA_tex_txt[]; +extern unsigned char brd_9_eye7_TA_tex_txt[]; +extern unsigned char brd_9_eye8_TA_tex_txt[]; +extern unsigned char brd_9_tmem_txt[]; +extern unsigned short brd_10_pal[]; +extern unsigned char brd_10_eye1_TA_tex_txt[]; +extern unsigned char brd_10_eye2_TA_tex_txt[]; +extern unsigned char brd_10_eye3_TA_tex_txt[]; +extern unsigned char brd_10_eye4_TA_tex_txt[]; +extern unsigned char brd_10_eye5_TA_tex_txt[]; +extern unsigned char brd_10_eye6_TA_tex_txt[]; +extern unsigned char brd_10_eye7_TA_tex_txt[]; +extern unsigned char brd_10_eye8_TA_tex_txt[]; +extern unsigned char brd_10_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_bul_1; +extern unsigned short bul_1_pal[]; +extern unsigned char bul_1_eye1_TA_tex_txt[]; +extern unsigned char bul_1_eye2_TA_tex_txt[]; +extern unsigned char bul_1_eye3_TA_tex_txt[]; +extern unsigned char bul_1_eye4_TA_tex_txt[]; +extern unsigned char bul_1_eye5_TA_tex_txt[]; +extern unsigned char bul_1_eye6_TA_tex_txt[]; +extern unsigned char bul_1_eye7_TA_tex_txt[]; +extern unsigned char bul_1_eye8_TA_tex_txt[]; +extern unsigned char bul_1_mouth1_TA_tex_txt[]; +extern unsigned char bul_1_mouth2_TA_tex_txt[]; +extern unsigned char bul_1_mouth3_TA_tex_txt[]; +extern unsigned char bul_1_mouth4_TA_tex_txt[]; +extern unsigned char bul_1_mouth5_TA_tex_txt[]; +extern unsigned char bul_1_mouth6_TA_tex_txt[]; +extern unsigned char bul_1_tmem_txt[]; +extern unsigned short bul_2_pal[]; +extern unsigned char bul_2_eye1_TA_tex_txt[]; +extern unsigned char bul_2_eye2_TA_tex_txt[]; +extern unsigned char bul_2_eye3_TA_tex_txt[]; +extern unsigned char bul_2_eye4_TA_tex_txt[]; +extern unsigned char bul_2_eye5_TA_tex_txt[]; +extern unsigned char bul_2_eye6_TA_tex_txt[]; +extern unsigned char bul_2_eye7_TA_tex_txt[]; +extern unsigned char bul_2_eye8_TA_tex_txt[]; +extern unsigned char bul_2_mouth1_TA_tex_txt[]; +extern unsigned char bul_2_mouth2_TA_tex_txt[]; +extern unsigned char bul_2_mouth3_TA_tex_txt[]; +extern unsigned char bul_2_mouth4_TA_tex_txt[]; +extern unsigned char bul_2_mouth5_TA_tex_txt[]; +extern unsigned char bul_2_mouth6_TA_tex_txt[]; +extern unsigned char bul_2_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_chn_1; +extern unsigned short chn_1_pal[]; +extern unsigned char chn_1_eye1_TA_tex_txt[]; +extern unsigned char chn_1_eye2_TA_tex_txt[]; +extern unsigned char chn_1_eye3_TA_tex_txt[]; +extern unsigned char chn_1_eye4_TA_tex_txt[]; +extern unsigned char chn_1_eye5_TA_tex_txt[]; +extern unsigned char chn_1_eye6_TA_tex_txt[]; +extern unsigned char chn_1_eye7_TA_tex_txt[]; +extern unsigned char chn_1_eye8_TA_tex_txt[]; +extern unsigned char chn_1_tmem_txt[]; +extern unsigned short chn_2_pal[]; +extern unsigned char chn_2_eye1_TA_tex_txt[]; +extern unsigned char chn_2_eye2_TA_tex_txt[]; +extern unsigned char chn_2_eye3_TA_tex_txt[]; +extern unsigned char chn_2_eye4_TA_tex_txt[]; +extern unsigned char chn_2_eye5_TA_tex_txt[]; +extern unsigned char chn_2_eye6_TA_tex_txt[]; +extern unsigned char chn_2_eye7_TA_tex_txt[]; +extern unsigned char chn_2_eye8_TA_tex_txt[]; +extern unsigned char chn_2_tmem_txt[]; +extern unsigned short chn_3_pal[]; +extern unsigned char chn_3_eye1_TA_tex_txt[]; +extern unsigned char chn_3_eye2_TA_tex_txt[]; +extern unsigned char chn_3_eye3_TA_tex_txt[]; +extern unsigned char chn_3_eye4_TA_tex_txt[]; +extern unsigned char chn_3_eye5_TA_tex_txt[]; +extern unsigned char chn_3_eye6_TA_tex_txt[]; +extern unsigned char chn_3_eye7_TA_tex_txt[]; +extern unsigned char chn_3_eye8_TA_tex_txt[]; +extern unsigned char chn_3_tmem_txt[]; +extern unsigned short chn_4_pal[]; +extern unsigned char chn_4_eye1_TA_tex_txt[]; +extern unsigned char chn_4_eye2_TA_tex_txt[]; +extern unsigned char chn_4_eye3_TA_tex_txt[]; +extern unsigned char chn_4_eye4_TA_tex_txt[]; +extern unsigned char chn_4_eye5_TA_tex_txt[]; +extern unsigned char chn_4_eye6_TA_tex_txt[]; +extern unsigned char chn_4_eye7_TA_tex_txt[]; +extern unsigned char chn_4_eye8_TA_tex_txt[]; +extern unsigned char chn_4_tmem_txt[]; +extern unsigned short chn_5_pal[]; +extern unsigned char chn_5_eye1_TA_tex_txt[]; +extern unsigned char chn_5_eye2_TA_tex_txt[]; +extern unsigned char chn_5_eye3_TA_tex_txt[]; +extern unsigned char chn_5_eye4_TA_tex_txt[]; +extern unsigned char chn_5_eye5_TA_tex_txt[]; +extern unsigned char chn_5_eye6_TA_tex_txt[]; +extern unsigned char chn_5_eye7_TA_tex_txt[]; +extern unsigned char chn_5_eye8_TA_tex_txt[]; +extern unsigned char chn_5_tmem_txt[]; +extern unsigned short chn_6_pal[]; +extern unsigned char chn_6_eye1_TA_tex_txt[]; +extern unsigned char chn_6_eye2_TA_tex_txt[]; +extern unsigned char chn_6_eye3_TA_tex_txt[]; +extern unsigned char chn_6_eye4_TA_tex_txt[]; +extern unsigned char chn_6_eye5_TA_tex_txt[]; +extern unsigned char chn_6_eye6_TA_tex_txt[]; +extern unsigned char chn_6_eye7_TA_tex_txt[]; +extern unsigned char chn_6_eye8_TA_tex_txt[]; +extern unsigned char chn_6_tmem_txt[]; +extern unsigned short chn_7_pal[]; +extern unsigned char chn_7_eye1_TA_tex_txt[]; +extern unsigned char chn_7_eye2_TA_tex_txt[]; +extern unsigned char chn_7_eye3_TA_tex_txt[]; +extern unsigned char chn_7_eye4_TA_tex_txt[]; +extern unsigned char chn_7_eye5_TA_tex_txt[]; +extern unsigned char chn_7_eye6_TA_tex_txt[]; +extern unsigned char chn_7_eye7_TA_tex_txt[]; +extern unsigned char chn_7_eye8_TA_tex_txt[]; +extern unsigned char chn_7_tmem_txt[]; +extern unsigned short chn_8_pal[]; +extern unsigned char chn_8_eye1_TA_tex_txt[]; +extern unsigned char chn_8_eye2_TA_tex_txt[]; +extern unsigned char chn_8_eye3_TA_tex_txt[]; +extern unsigned char chn_8_eye4_TA_tex_txt[]; +extern unsigned char chn_8_eye5_TA_tex_txt[]; +extern unsigned char chn_8_eye6_TA_tex_txt[]; +extern unsigned char chn_8_eye7_TA_tex_txt[]; +extern unsigned char chn_8_eye8_TA_tex_txt[]; +extern unsigned char chn_8_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_cbr_1; +extern unsigned short cbr_1_pal[]; +extern unsigned char cbr_1_eye1_TA_tex_txt[]; +extern unsigned char cbr_1_eye2_TA_tex_txt[]; +extern unsigned char cbr_1_eye3_TA_tex_txt[]; +extern unsigned char cbr_1_eye4_TA_tex_txt[]; +extern unsigned char cbr_1_eye5_TA_tex_txt[]; +extern unsigned char cbr_1_eye6_TA_tex_txt[]; +extern unsigned char cbr_1_eye7_TA_tex_txt[]; +extern unsigned char cbr_1_eye8_TA_tex_txt[]; +extern unsigned char cbr_1_mouth1_TA_tex_txt[]; +extern unsigned char cbr_1_mouth2_TA_tex_txt[]; +extern unsigned char cbr_1_mouth3_TA_tex_txt[]; +extern unsigned char cbr_1_mouth4_TA_tex_txt[]; +extern unsigned char cbr_1_mouth5_TA_tex_txt[]; +extern unsigned char cbr_1_mouth6_TA_tex_txt[]; +extern unsigned char cbr_1_tmem_txt[]; +extern unsigned short cbr_2_pal[]; +extern unsigned char cbr_2_eye1_TA_tex_txt[]; +extern unsigned char cbr_2_eye2_TA_tex_txt[]; +extern unsigned char cbr_2_eye3_TA_tex_txt[]; +extern unsigned char cbr_2_eye4_TA_tex_txt[]; +extern unsigned char cbr_2_eye5_TA_tex_txt[]; +extern unsigned char cbr_2_eye6_TA_tex_txt[]; +extern unsigned char cbr_2_eye7_TA_tex_txt[]; +extern unsigned char cbr_2_eye8_TA_tex_txt[]; +extern unsigned char cbr_2_mouth1_TA_tex_txt[]; +extern unsigned char cbr_2_mouth2_TA_tex_txt[]; +extern unsigned char cbr_2_mouth3_TA_tex_txt[]; +extern unsigned char cbr_2_mouth4_TA_tex_txt[]; +extern unsigned char cbr_2_mouth5_TA_tex_txt[]; +extern unsigned char cbr_2_mouth6_TA_tex_txt[]; +extern unsigned char cbr_2_tmem_txt[]; +extern unsigned short cbr_3_pal[]; +extern unsigned char cbr_3_eye1_TA_tex_txt[]; +extern unsigned char cbr_3_eye2_TA_tex_txt[]; +extern unsigned char cbr_3_eye3_TA_tex_txt[]; +extern unsigned char cbr_3_eye4_TA_tex_txt[]; +extern unsigned char cbr_3_eye5_TA_tex_txt[]; +extern unsigned char cbr_3_eye6_TA_tex_txt[]; +extern unsigned char cbr_3_eye7_TA_tex_txt[]; +extern unsigned char cbr_3_eye8_TA_tex_txt[]; +extern unsigned char cbr_3_mouth1_TA_tex_txt[]; +extern unsigned char cbr_3_mouth2_TA_tex_txt[]; +extern unsigned char cbr_3_mouth3_TA_tex_txt[]; +extern unsigned char cbr_3_mouth4_TA_tex_txt[]; +extern unsigned char cbr_3_mouth5_TA_tex_txt[]; +extern unsigned char cbr_3_mouth6_TA_tex_txt[]; +extern unsigned char cbr_3_tmem_txt[]; +extern unsigned short cbr_4_pal[]; +extern unsigned char cbr_4_eye1_TA_tex_txt[]; +extern unsigned char cbr_4_eye2_TA_tex_txt[]; +extern unsigned char cbr_4_eye3_TA_tex_txt[]; +extern unsigned char cbr_4_eye4_TA_tex_txt[]; +extern unsigned char cbr_4_eye5_TA_tex_txt[]; +extern unsigned char cbr_4_eye6_TA_tex_txt[]; +extern unsigned char cbr_4_eye7_TA_tex_txt[]; +extern unsigned char cbr_4_eye8_TA_tex_txt[]; +extern unsigned char cbr_4_mouth1_TA_tex_txt[]; +extern unsigned char cbr_4_mouth2_TA_tex_txt[]; +extern unsigned char cbr_4_mouth3_TA_tex_txt[]; +extern unsigned char cbr_4_mouth4_TA_tex_txt[]; +extern unsigned char cbr_4_mouth5_TA_tex_txt[]; +extern unsigned char cbr_4_mouth6_TA_tex_txt[]; +extern unsigned char cbr_4_tmem_txt[]; +extern unsigned short cbr_5_pal[]; +extern unsigned char cbr_5_eye1_TA_tex_txt[]; +extern unsigned char cbr_5_eye2_TA_tex_txt[]; +extern unsigned char cbr_5_eye3_TA_tex_txt[]; +extern unsigned char cbr_5_eye4_TA_tex_txt[]; +extern unsigned char cbr_5_eye5_TA_tex_txt[]; +extern unsigned char cbr_5_eye6_TA_tex_txt[]; +extern unsigned char cbr_5_eye7_TA_tex_txt[]; +extern unsigned char cbr_5_eye8_TA_tex_txt[]; +extern unsigned char cbr_5_mouth1_TA_tex_txt[]; +extern unsigned char cbr_5_mouth2_TA_tex_txt[]; +extern unsigned char cbr_5_mouth3_TA_tex_txt[]; +extern unsigned char cbr_5_mouth4_TA_tex_txt[]; +extern unsigned char cbr_5_mouth5_TA_tex_txt[]; +extern unsigned char cbr_5_mouth6_TA_tex_txt[]; +extern unsigned char cbr_5_tmem_txt[]; +extern unsigned short cbr_6_pal[]; +extern unsigned char cbr_6_eye1_TA_tex_txt[]; +extern unsigned char cbr_6_eye2_TA_tex_txt[]; +extern unsigned char cbr_6_eye3_TA_tex_txt[]; +extern unsigned char cbr_6_eye4_TA_tex_txt[]; +extern unsigned char cbr_6_eye5_TA_tex_txt[]; +extern unsigned char cbr_6_eye6_TA_tex_txt[]; +extern unsigned char cbr_6_eye7_TA_tex_txt[]; +extern unsigned char cbr_6_eye8_TA_tex_txt[]; +extern unsigned char cbr_6_mouth1_TA_tex_txt[]; +extern unsigned char cbr_6_mouth2_TA_tex_txt[]; +extern unsigned char cbr_6_mouth3_TA_tex_txt[]; +extern unsigned char cbr_6_mouth4_TA_tex_txt[]; +extern unsigned char cbr_6_mouth5_TA_tex_txt[]; +extern unsigned char cbr_6_mouth6_TA_tex_txt[]; +extern unsigned char cbr_6_tmem_txt[]; +extern unsigned short cbr_7_pal[]; +extern unsigned char cbr_7_eye1_TA_tex_txt[]; +extern unsigned char cbr_7_eye2_TA_tex_txt[]; +extern unsigned char cbr_7_eye3_TA_tex_txt[]; +extern unsigned char cbr_7_eye4_TA_tex_txt[]; +extern unsigned char cbr_7_eye5_TA_tex_txt[]; +extern unsigned char cbr_7_eye6_TA_tex_txt[]; +extern unsigned char cbr_7_eye7_TA_tex_txt[]; +extern unsigned char cbr_7_eye8_TA_tex_txt[]; +extern unsigned char cbr_7_mouth1_TA_tex_txt[]; +extern unsigned char cbr_7_mouth2_TA_tex_txt[]; +extern unsigned char cbr_7_mouth3_TA_tex_txt[]; +extern unsigned char cbr_7_mouth4_TA_tex_txt[]; +extern unsigned char cbr_7_mouth5_TA_tex_txt[]; +extern unsigned char cbr_7_mouth6_TA_tex_txt[]; +extern unsigned char cbr_7_tmem_txt[]; +extern unsigned short cbr_8_pal[]; +extern unsigned char cbr_8_eye1_TA_tex_txt[]; +extern unsigned char cbr_8_eye2_TA_tex_txt[]; +extern unsigned char cbr_8_eye3_TA_tex_txt[]; +extern unsigned char cbr_8_eye4_TA_tex_txt[]; +extern unsigned char cbr_8_eye5_TA_tex_txt[]; +extern unsigned char cbr_8_eye6_TA_tex_txt[]; +extern unsigned char cbr_8_eye7_TA_tex_txt[]; +extern unsigned char cbr_8_eye8_TA_tex_txt[]; +extern unsigned char cbr_8_mouth1_TA_tex_txt[]; +extern unsigned char cbr_8_mouth2_TA_tex_txt[]; +extern unsigned char cbr_8_mouth3_TA_tex_txt[]; +extern unsigned char cbr_8_mouth4_TA_tex_txt[]; +extern unsigned char cbr_8_mouth5_TA_tex_txt[]; +extern unsigned char cbr_8_mouth6_TA_tex_txt[]; +extern unsigned char cbr_8_tmem_txt[]; +extern unsigned short cbr_9_pal[]; +extern unsigned char cbr_9_eye1_TA_tex_txt[]; +extern unsigned char cbr_9_eye2_TA_tex_txt[]; +extern unsigned char cbr_9_eye3_TA_tex_txt[]; +extern unsigned char cbr_9_eye4_TA_tex_txt[]; +extern unsigned char cbr_9_eye5_TA_tex_txt[]; +extern unsigned char cbr_9_eye6_TA_tex_txt[]; +extern unsigned char cbr_9_eye7_TA_tex_txt[]; +extern unsigned char cbr_9_eye8_TA_tex_txt[]; +extern unsigned char cbr_9_mouth1_TA_tex_txt[]; +extern unsigned char cbr_9_mouth2_TA_tex_txt[]; +extern unsigned char cbr_9_mouth3_TA_tex_txt[]; +extern unsigned char cbr_9_mouth4_TA_tex_txt[]; +extern unsigned char cbr_9_mouth5_TA_tex_txt[]; +extern unsigned char cbr_9_mouth6_TA_tex_txt[]; +extern unsigned char cbr_9_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_cow_1; +extern unsigned short cow_1_pal[]; +extern unsigned char cow_1_eye1_TA_tex_txt[]; +extern unsigned char cow_1_eye2_TA_tex_txt[]; +extern unsigned char cow_1_eye3_TA_tex_txt[]; +extern unsigned char cow_1_eye4_TA_tex_txt[]; +extern unsigned char cow_1_eye5_TA_tex_txt[]; +extern unsigned char cow_1_eye6_TA_tex_txt[]; +extern unsigned char cow_1_eye7_TA_tex_txt[]; +extern unsigned char cow_1_eye8_TA_tex_txt[]; +extern unsigned char cow_1_mouth1_TA_tex_txt[]; +extern unsigned char cow_1_mouth2_TA_tex_txt[]; +extern unsigned char cow_1_mouth3_TA_tex_txt[]; +extern unsigned char cow_1_mouth4_TA_tex_txt[]; +extern unsigned char cow_1_mouth5_TA_tex_txt[]; +extern unsigned char cow_1_mouth6_TA_tex_txt[]; +extern unsigned char cow_1_tmem_txt[]; +extern unsigned short cow_2_pal[]; +extern unsigned char cow_2_eye1_TA_tex_txt[]; +extern unsigned char cow_2_eye2_TA_tex_txt[]; +extern unsigned char cow_2_eye3_TA_tex_txt[]; +extern unsigned char cow_2_eye4_TA_tex_txt[]; +extern unsigned char cow_2_eye5_TA_tex_txt[]; +extern unsigned char cow_2_eye6_TA_tex_txt[]; +extern unsigned char cow_2_eye7_TA_tex_txt[]; +extern unsigned char cow_2_eye8_TA_tex_txt[]; +extern unsigned char cow_2_mouth1_TA_tex_txt[]; +extern unsigned char cow_2_mouth2_TA_tex_txt[]; +extern unsigned char cow_2_mouth3_TA_tex_txt[]; +extern unsigned char cow_2_mouth4_TA_tex_txt[]; +extern unsigned char cow_2_mouth5_TA_tex_txt[]; +extern unsigned char cow_2_mouth6_TA_tex_txt[]; +extern unsigned char cow_2_tmem_txt[]; +extern unsigned short cow_3_pal[]; +extern unsigned char cow_3_eye1_TA_tex_txt[]; +extern unsigned char cow_3_eye2_TA_tex_txt[]; +extern unsigned char cow_3_eye3_TA_tex_txt[]; +extern unsigned char cow_3_eye4_TA_tex_txt[]; +extern unsigned char cow_3_eye5_TA_tex_txt[]; +extern unsigned char cow_3_eye6_TA_tex_txt[]; +extern unsigned char cow_3_eye7_TA_tex_txt[]; +extern unsigned char cow_3_eye8_TA_tex_txt[]; +extern unsigned char cow_3_mouth1_TA_tex_txt[]; +extern unsigned char cow_3_mouth2_TA_tex_txt[]; +extern unsigned char cow_3_mouth3_TA_tex_txt[]; +extern unsigned char cow_3_mouth4_TA_tex_txt[]; +extern unsigned char cow_3_mouth5_TA_tex_txt[]; +extern unsigned char cow_3_mouth6_TA_tex_txt[]; +extern unsigned char cow_3_tmem_txt[]; +extern unsigned short cow_4_pal[]; +extern unsigned char cow_4_eye1_TA_tex_txt[]; +extern unsigned char cow_4_eye2_TA_tex_txt[]; +extern unsigned char cow_4_eye3_TA_tex_txt[]; +extern unsigned char cow_4_eye4_TA_tex_txt[]; +extern unsigned char cow_4_eye5_TA_tex_txt[]; +extern unsigned char cow_4_eye6_TA_tex_txt[]; +extern unsigned char cow_4_eye7_TA_tex_txt[]; +extern unsigned char cow_4_eye8_TA_tex_txt[]; +extern unsigned char cow_4_mouth1_TA_tex_txt[]; +extern unsigned char cow_4_mouth2_TA_tex_txt[]; +extern unsigned char cow_4_mouth3_TA_tex_txt[]; +extern unsigned char cow_4_mouth4_TA_tex_txt[]; +extern unsigned char cow_4_mouth5_TA_tex_txt[]; +extern unsigned char cow_4_mouth6_TA_tex_txt[]; +extern unsigned char cow_4_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_crd_1; +extern unsigned short crd_1_pal[]; +extern unsigned char crd_1_eye1_TA_tex_txt[]; +extern unsigned char crd_1_eye2_TA_tex_txt[]; +extern unsigned char crd_1_eye3_TA_tex_txt[]; +extern unsigned char crd_1_eye4_TA_tex_txt[]; +extern unsigned char crd_1_eye5_TA_tex_txt[]; +extern unsigned char crd_1_eye6_TA_tex_txt[]; +extern unsigned char crd_1_eye7_TA_tex_txt[]; +extern unsigned char crd_1_eye8_TA_tex_txt[]; +extern unsigned char crd_1_tmem_txt[]; +extern unsigned short crd_2_pal[]; +extern unsigned char crd_2_eye1_TA_tex_txt[]; +extern unsigned char crd_2_eye2_TA_tex_txt[]; +extern unsigned char crd_2_eye3_TA_tex_txt[]; +extern unsigned char crd_2_eye4_TA_tex_txt[]; +extern unsigned char crd_2_eye5_TA_tex_txt[]; +extern unsigned char crd_2_eye6_TA_tex_txt[]; +extern unsigned char crd_2_eye7_TA_tex_txt[]; +extern unsigned char crd_2_eye8_TA_tex_txt[]; +extern unsigned char crd_2_tmem_txt[]; +extern unsigned short crd_3_pal[]; +extern unsigned char crd_3_eye1_TA_tex_txt[]; +extern unsigned char crd_3_eye2_TA_tex_txt[]; +extern unsigned char crd_3_eye3_TA_tex_txt[]; +extern unsigned char crd_3_eye4_TA_tex_txt[]; +extern unsigned char crd_3_eye5_TA_tex_txt[]; +extern unsigned char crd_3_eye6_TA_tex_txt[]; +extern unsigned char crd_3_eye7_TA_tex_txt[]; +extern unsigned char crd_3_eye8_TA_tex_txt[]; +extern unsigned char crd_3_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_dog_1; +extern unsigned short dog_1_pal[]; +extern unsigned char dog_1_eye1_TA_tex_txt[]; +extern unsigned char dog_1_eye2_TA_tex_txt[]; +extern unsigned char dog_1_eye3_TA_tex_txt[]; +extern unsigned char dog_1_eye4_TA_tex_txt[]; +extern unsigned char dog_1_eye5_TA_tex_txt[]; +extern unsigned char dog_1_eye6_TA_tex_txt[]; +extern unsigned char dog_1_eye7_TA_tex_txt[]; +extern unsigned char dog_1_eye8_TA_tex_txt[]; +extern unsigned char dog_1_mouth1_TA_tex_txt[]; +extern unsigned char dog_1_mouth2_TA_tex_txt[]; +extern unsigned char dog_1_mouth3_TA_tex_txt[]; +extern unsigned char dog_1_mouth4_TA_tex_txt[]; +extern unsigned char dog_1_mouth5_TA_tex_txt[]; +extern unsigned char dog_1_mouth6_TA_tex_txt[]; +extern unsigned char dog_1_tmem_txt[]; +extern unsigned short dog_2_pal[]; +extern unsigned char dog_2_eye1_TA_tex_txt[]; +extern unsigned char dog_2_eye2_TA_tex_txt[]; +extern unsigned char dog_2_eye3_TA_tex_txt[]; +extern unsigned char dog_2_eye4_TA_tex_txt[]; +extern unsigned char dog_2_eye5_TA_tex_txt[]; +extern unsigned char dog_2_eye6_TA_tex_txt[]; +extern unsigned char dog_2_eye7_TA_tex_txt[]; +extern unsigned char dog_2_eye8_TA_tex_txt[]; +extern unsigned char dog_2_mouth1_TA_tex_txt[]; +extern unsigned char dog_2_mouth2_TA_tex_txt[]; +extern unsigned char dog_2_mouth3_TA_tex_txt[]; +extern unsigned char dog_2_mouth4_TA_tex_txt[]; +extern unsigned char dog_2_mouth5_TA_tex_txt[]; +extern unsigned char dog_2_mouth6_TA_tex_txt[]; +extern unsigned char dog_2_tmem_txt[]; +extern unsigned short dog_3_pal[]; +extern unsigned char dog_3_eye1_TA_tex_txt[]; +extern unsigned char dog_3_eye2_TA_tex_txt[]; +extern unsigned char dog_3_eye3_TA_tex_txt[]; +extern unsigned char dog_3_eye4_TA_tex_txt[]; +extern unsigned char dog_3_eye5_TA_tex_txt[]; +extern unsigned char dog_3_eye6_TA_tex_txt[]; +extern unsigned char dog_3_eye7_TA_tex_txt[]; +extern unsigned char dog_3_eye8_TA_tex_txt[]; +extern unsigned char dog_3_mouth1_TA_tex_txt[]; +extern unsigned char dog_3_mouth2_TA_tex_txt[]; +extern unsigned char dog_3_mouth3_TA_tex_txt[]; +extern unsigned char dog_3_mouth4_TA_tex_txt[]; +extern unsigned char dog_3_mouth5_TA_tex_txt[]; +extern unsigned char dog_3_mouth6_TA_tex_txt[]; +extern unsigned char dog_3_tmem_txt[]; +extern unsigned short dog_4_pal[]; +extern unsigned char dog_4_eye1_TA_tex_txt[]; +extern unsigned char dog_4_eye2_TA_tex_txt[]; +extern unsigned char dog_4_eye3_TA_tex_txt[]; +extern unsigned char dog_4_eye4_TA_tex_txt[]; +extern unsigned char dog_4_eye5_TA_tex_txt[]; +extern unsigned char dog_4_eye6_TA_tex_txt[]; +extern unsigned char dog_4_eye7_TA_tex_txt[]; +extern unsigned char dog_4_eye8_TA_tex_txt[]; +extern unsigned char dog_4_mouth1_TA_tex_txt[]; +extern unsigned char dog_4_mouth2_TA_tex_txt[]; +extern unsigned char dog_4_mouth3_TA_tex_txt[]; +extern unsigned char dog_4_mouth4_TA_tex_txt[]; +extern unsigned char dog_4_mouth5_TA_tex_txt[]; +extern unsigned char dog_4_mouth6_TA_tex_txt[]; +extern unsigned char dog_4_tmem_txt[]; +extern unsigned short dog_5_pal[]; +extern unsigned char dog_5_eye1_TA_tex_txt[]; +extern unsigned char dog_5_eye2_TA_tex_txt[]; +extern unsigned char dog_5_eye3_TA_tex_txt[]; +extern unsigned char dog_5_eye4_TA_tex_txt[]; +extern unsigned char dog_5_eye5_TA_tex_txt[]; +extern unsigned char dog_5_eye6_TA_tex_txt[]; +extern unsigned char dog_5_eye7_TA_tex_txt[]; +extern unsigned char dog_5_eye8_TA_tex_txt[]; +extern unsigned char dog_5_mouth1_TA_tex_txt[]; +extern unsigned char dog_5_mouth2_TA_tex_txt[]; +extern unsigned char dog_5_mouth3_TA_tex_txt[]; +extern unsigned char dog_5_mouth4_TA_tex_txt[]; +extern unsigned char dog_5_mouth5_TA_tex_txt[]; +extern unsigned char dog_5_mouth6_TA_tex_txt[]; +extern unsigned char dog_5_tmem_txt[]; +extern unsigned short dog_6_pal[]; +extern unsigned char dog_6_eye1_TA_tex_txt[]; +extern unsigned char dog_6_eye2_TA_tex_txt[]; +extern unsigned char dog_6_eye3_TA_tex_txt[]; +extern unsigned char dog_6_eye4_TA_tex_txt[]; +extern unsigned char dog_6_eye5_TA_tex_txt[]; +extern unsigned char dog_6_eye6_TA_tex_txt[]; +extern unsigned char dog_6_eye7_TA_tex_txt[]; +extern unsigned char dog_6_eye8_TA_tex_txt[]; +extern unsigned char dog_6_mouth1_TA_tex_txt[]; +extern unsigned char dog_6_mouth2_TA_tex_txt[]; +extern unsigned char dog_6_mouth3_TA_tex_txt[]; +extern unsigned char dog_6_mouth4_TA_tex_txt[]; +extern unsigned char dog_6_mouth5_TA_tex_txt[]; +extern unsigned char dog_6_mouth6_TA_tex_txt[]; +extern unsigned char dog_6_tmem_txt[]; +extern unsigned short dog_8_pal[]; +extern unsigned char dog_8_eye1_TA_tex_txt[]; +extern unsigned char dog_8_eye2_TA_tex_txt[]; +extern unsigned char dog_8_eye3_TA_tex_txt[]; +extern unsigned char dog_8_eye4_TA_tex_txt[]; +extern unsigned char dog_8_eye5_TA_tex_txt[]; +extern unsigned char dog_8_eye6_TA_tex_txt[]; +extern unsigned char dog_8_eye7_TA_tex_txt[]; +extern unsigned char dog_8_eye8_TA_tex_txt[]; +extern unsigned char dog_8_mouth1_TA_tex_txt[]; +extern unsigned char dog_8_mouth2_TA_tex_txt[]; +extern unsigned char dog_8_mouth3_TA_tex_txt[]; +extern unsigned char dog_8_mouth4_TA_tex_txt[]; +extern unsigned char dog_8_mouth5_TA_tex_txt[]; +extern unsigned char dog_8_mouth6_TA_tex_txt[]; +extern unsigned char dog_8_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_duk_1; +extern unsigned short duk_1_pal[]; +extern unsigned char duk_1_eye1_TA_tex_txt[]; +extern unsigned char duk_1_eye2_TA_tex_txt[]; +extern unsigned char duk_1_eye3_TA_tex_txt[]; +extern unsigned char duk_1_eye4_TA_tex_txt[]; +extern unsigned char duk_1_eye5_TA_tex_txt[]; +extern unsigned char duk_1_eye6_TA_tex_txt[]; +extern unsigned char duk_1_eye7_TA_tex_txt[]; +extern unsigned char duk_1_eye8_TA_tex_txt[]; +extern unsigned char duk_1_mouth1_TA_tex_txt[]; +extern unsigned char duk_1_mouth2_TA_tex_txt[]; +extern unsigned char duk_1_mouth3_TA_tex_txt[]; +extern unsigned char duk_1_mouth4_TA_tex_txt[]; +extern unsigned char duk_1_mouth5_TA_tex_txt[]; +extern unsigned char duk_1_mouth6_TA_tex_txt[]; +extern unsigned char duk_1_tmem_txt[]; +extern unsigned short duk_2_pal[]; +extern unsigned char duk_2_eye1_TA_tex_txt[]; +extern unsigned char duk_2_eye2_TA_tex_txt[]; +extern unsigned char duk_2_eye3_TA_tex_txt[]; +extern unsigned char duk_2_eye4_TA_tex_txt[]; +extern unsigned char duk_2_eye5_TA_tex_txt[]; +extern unsigned char duk_2_eye6_TA_tex_txt[]; +extern unsigned char duk_2_eye7_TA_tex_txt[]; +extern unsigned char duk_2_eye8_TA_tex_txt[]; +extern unsigned char duk_2_mouth1_TA_tex_txt[]; +extern unsigned char duk_2_mouth2_TA_tex_txt[]; +extern unsigned char duk_2_mouth3_TA_tex_txt[]; +extern unsigned char duk_2_mouth4_TA_tex_txt[]; +extern unsigned char duk_2_mouth5_TA_tex_txt[]; +extern unsigned char duk_2_mouth6_TA_tex_txt[]; +extern unsigned char duk_2_tmem_txt[]; +extern unsigned short duk_3_pal[]; +extern unsigned char duk_3_eye1_TA_tex_txt[]; +extern unsigned char duk_3_eye2_TA_tex_txt[]; +extern unsigned char duk_3_eye3_TA_tex_txt[]; +extern unsigned char duk_3_eye4_TA_tex_txt[]; +extern unsigned char duk_3_eye5_TA_tex_txt[]; +extern unsigned char duk_3_eye6_TA_tex_txt[]; +extern unsigned char duk_3_eye7_TA_tex_txt[]; +extern unsigned char duk_3_eye8_TA_tex_txt[]; +extern unsigned char duk_3_mouth1_TA_tex_txt[]; +extern unsigned char duk_3_mouth2_TA_tex_txt[]; +extern unsigned char duk_3_mouth3_TA_tex_txt[]; +extern unsigned char duk_3_mouth4_TA_tex_txt[]; +extern unsigned char duk_3_mouth5_TA_tex_txt[]; +extern unsigned char duk_3_mouth6_TA_tex_txt[]; +extern unsigned char duk_3_tmem_txt[]; +extern unsigned short duk_4_pal[]; +extern unsigned char duk_4_eye1_TA_tex_txt[]; +extern unsigned char duk_4_eye2_TA_tex_txt[]; +extern unsigned char duk_4_eye3_TA_tex_txt[]; +extern unsigned char duk_4_eye4_TA_tex_txt[]; +extern unsigned char duk_4_eye5_TA_tex_txt[]; +extern unsigned char duk_4_eye6_TA_tex_txt[]; +extern unsigned char duk_4_eye7_TA_tex_txt[]; +extern unsigned char duk_4_eye8_TA_tex_txt[]; +extern unsigned char duk_4_mouth1_TA_tex_txt[]; +extern unsigned char duk_4_mouth2_TA_tex_txt[]; +extern unsigned char duk_4_mouth3_TA_tex_txt[]; +extern unsigned char duk_4_mouth4_TA_tex_txt[]; +extern unsigned char duk_4_mouth5_TA_tex_txt[]; +extern unsigned char duk_4_mouth6_TA_tex_txt[]; +extern unsigned char duk_4_tmem_txt[]; +extern unsigned short duk_5_pal[]; +extern unsigned char duk_5_eye1_TA_tex_txt[]; +extern unsigned char duk_5_eye2_TA_tex_txt[]; +extern unsigned char duk_5_eye3_TA_tex_txt[]; +extern unsigned char duk_5_eye4_TA_tex_txt[]; +extern unsigned char duk_5_eye5_TA_tex_txt[]; +extern unsigned char duk_5_eye6_TA_tex_txt[]; +extern unsigned char duk_5_eye7_TA_tex_txt[]; +extern unsigned char duk_5_eye8_TA_tex_txt[]; +extern unsigned char duk_5_mouth1_TA_tex_txt[]; +extern unsigned char duk_5_mouth2_TA_tex_txt[]; +extern unsigned char duk_5_mouth3_TA_tex_txt[]; +extern unsigned char duk_5_mouth4_TA_tex_txt[]; +extern unsigned char duk_5_mouth5_TA_tex_txt[]; +extern unsigned char duk_5_mouth6_TA_tex_txt[]; +extern unsigned char duk_5_tmem_txt[]; +extern unsigned short duk_6_pal[]; +extern unsigned char duk_6_eye1_TA_tex_txt[]; +extern unsigned char duk_6_eye2_TA_tex_txt[]; +extern unsigned char duk_6_eye3_TA_tex_txt[]; +extern unsigned char duk_6_eye4_TA_tex_txt[]; +extern unsigned char duk_6_eye5_TA_tex_txt[]; +extern unsigned char duk_6_eye6_TA_tex_txt[]; +extern unsigned char duk_6_eye7_TA_tex_txt[]; +extern unsigned char duk_6_eye8_TA_tex_txt[]; +extern unsigned char duk_6_mouth1_TA_tex_txt[]; +extern unsigned char duk_6_mouth2_TA_tex_txt[]; +extern unsigned char duk_6_mouth3_TA_tex_txt[]; +extern unsigned char duk_6_mouth4_TA_tex_txt[]; +extern unsigned char duk_6_mouth5_TA_tex_txt[]; +extern unsigned char duk_6_mouth6_TA_tex_txt[]; +extern unsigned char duk_6_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_elp_1; +extern unsigned short elp_1_pal[]; +extern unsigned char elp_1_eye1_TA_tex_txt[]; +extern unsigned char elp_1_eye2_TA_tex_txt[]; +extern unsigned char elp_1_eye3_TA_tex_txt[]; +extern unsigned char elp_1_eye4_TA_tex_txt[]; +extern unsigned char elp_1_eye5_TA_tex_txt[]; +extern unsigned char elp_1_eye6_TA_tex_txt[]; +extern unsigned char elp_1_eye7_TA_tex_txt[]; +extern unsigned char elp_1_eye8_TA_tex_txt[]; +extern unsigned char elp_1_mouth1_TA_tex_txt[]; +extern unsigned char elp_1_mouth2_TA_tex_txt[]; +extern unsigned char elp_1_mouth3_TA_tex_txt[]; +extern unsigned char elp_1_mouth4_TA_tex_txt[]; +extern unsigned char elp_1_mouth5_TA_tex_txt[]; +extern unsigned char elp_1_mouth6_TA_tex_txt[]; +extern unsigned char elp_1_tmem_txt[]; +extern unsigned short elp_2_pal[]; +extern unsigned char elp_2_eye1_TA_tex_txt[]; +extern unsigned char elp_2_eye2_TA_tex_txt[]; +extern unsigned char elp_2_eye3_TA_tex_txt[]; +extern unsigned char elp_2_eye4_TA_tex_txt[]; +extern unsigned char elp_2_eye5_TA_tex_txt[]; +extern unsigned char elp_2_eye6_TA_tex_txt[]; +extern unsigned char elp_2_eye7_TA_tex_txt[]; +extern unsigned char elp_2_eye8_TA_tex_txt[]; +extern unsigned char elp_2_mouth1_TA_tex_txt[]; +extern unsigned char elp_2_mouth2_TA_tex_txt[]; +extern unsigned char elp_2_mouth3_TA_tex_txt[]; +extern unsigned char elp_2_mouth4_TA_tex_txt[]; +extern unsigned char elp_2_mouth5_TA_tex_txt[]; +extern unsigned char elp_2_mouth6_TA_tex_txt[]; +extern unsigned char elp_2_tmem_txt[]; +extern unsigned short elp_3_pal[]; +extern unsigned char elp_3_eye1_TA_tex_txt[]; +extern unsigned char elp_3_eye2_TA_tex_txt[]; +extern unsigned char elp_3_eye3_TA_tex_txt[]; +extern unsigned char elp_3_eye4_TA_tex_txt[]; +extern unsigned char elp_3_eye5_TA_tex_txt[]; +extern unsigned char elp_3_eye6_TA_tex_txt[]; +extern unsigned char elp_3_eye7_TA_tex_txt[]; +extern unsigned char elp_3_eye8_TA_tex_txt[]; +extern unsigned char elp_3_mouth1_TA_tex_txt[]; +extern unsigned char elp_3_mouth2_TA_tex_txt[]; +extern unsigned char elp_3_mouth3_TA_tex_txt[]; +extern unsigned char elp_3_mouth4_TA_tex_txt[]; +extern unsigned char elp_3_mouth5_TA_tex_txt[]; +extern unsigned char elp_3_mouth6_TA_tex_txt[]; +extern unsigned char elp_3_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_flg_1; +extern unsigned short flg_1_pal[]; +extern unsigned char flg_1_eye1_TA_tex_txt[]; +extern unsigned char flg_1_eye2_TA_tex_txt[]; +extern unsigned char flg_1_eye3_TA_tex_txt[]; +extern unsigned char flg_1_eye4_TA_tex_txt[]; +extern unsigned char flg_1_eye5_TA_tex_txt[]; +extern unsigned char flg_1_eye6_TA_tex_txt[]; +extern unsigned char flg_1_eye7_TA_tex_txt[]; +extern unsigned char flg_1_eye8_TA_tex_txt[]; +extern unsigned char flg_1_mouth1_TA_tex_txt[]; +extern unsigned char flg_1_mouth2_TA_tex_txt[]; +extern unsigned char flg_1_mouth3_TA_tex_txt[]; +extern unsigned char flg_1_mouth4_TA_tex_txt[]; +extern unsigned char flg_1_mouth5_TA_tex_txt[]; +extern unsigned char flg_1_mouth6_TA_tex_txt[]; +extern unsigned char flg_1_tmem_txt[]; +extern unsigned short flg_2_pal[]; +extern unsigned char flg_2_eye1_TA_tex_txt[]; +extern unsigned char flg_2_eye2_TA_tex_txt[]; +extern unsigned char flg_2_eye3_TA_tex_txt[]; +extern unsigned char flg_2_eye4_TA_tex_txt[]; +extern unsigned char flg_2_eye5_TA_tex_txt[]; +extern unsigned char flg_2_eye6_TA_tex_txt[]; +extern unsigned char flg_2_eye7_TA_tex_txt[]; +extern unsigned char flg_2_eye8_TA_tex_txt[]; +extern unsigned char flg_2_mouth1_TA_tex_txt[]; +extern unsigned char flg_2_mouth2_TA_tex_txt[]; +extern unsigned char flg_2_mouth3_TA_tex_txt[]; +extern unsigned char flg_2_mouth4_TA_tex_txt[]; +extern unsigned char flg_2_mouth5_TA_tex_txt[]; +extern unsigned char flg_2_mouth6_TA_tex_txt[]; +extern unsigned char flg_2_tmem_txt[]; +extern unsigned short flg_3_pal[]; +extern unsigned char flg_3_eye1_TA_tex_txt[]; +extern unsigned char flg_3_eye2_TA_tex_txt[]; +extern unsigned char flg_3_eye3_TA_tex_txt[]; +extern unsigned char flg_3_eye4_TA_tex_txt[]; +extern unsigned char flg_3_eye5_TA_tex_txt[]; +extern unsigned char flg_3_eye6_TA_tex_txt[]; +extern unsigned char flg_3_eye7_TA_tex_txt[]; +extern unsigned char flg_3_eye8_TA_tex_txt[]; +extern unsigned char flg_3_mouth1_TA_tex_txt[]; +extern unsigned char flg_3_mouth2_TA_tex_txt[]; +extern unsigned char flg_3_mouth3_TA_tex_txt[]; +extern unsigned char flg_3_mouth4_TA_tex_txt[]; +extern unsigned char flg_3_mouth5_TA_tex_txt[]; +extern unsigned char flg_3_mouth6_TA_tex_txt[]; +extern unsigned char flg_3_tmem_txt[]; +extern unsigned short flg_4_pal[]; +extern unsigned char flg_4_eye1_TA_tex_txt[]; +extern unsigned char flg_4_eye2_TA_tex_txt[]; +extern unsigned char flg_4_eye3_TA_tex_txt[]; +extern unsigned char flg_4_eye4_TA_tex_txt[]; +extern unsigned char flg_4_eye5_TA_tex_txt[]; +extern unsigned char flg_4_eye6_TA_tex_txt[]; +extern unsigned char flg_4_eye7_TA_tex_txt[]; +extern unsigned char flg_4_eye8_TA_tex_txt[]; +extern unsigned char flg_4_mouth1_TA_tex_txt[]; +extern unsigned char flg_4_mouth2_TA_tex_txt[]; +extern unsigned char flg_4_mouth3_TA_tex_txt[]; +extern unsigned char flg_4_mouth4_TA_tex_txt[]; +extern unsigned char flg_4_mouth5_TA_tex_txt[]; +extern unsigned char flg_4_mouth6_TA_tex_txt[]; +extern unsigned char flg_4_tmem_txt[]; +extern unsigned short flg_5_pal[]; +extern unsigned char flg_5_eye1_TA_tex_txt[]; +extern unsigned char flg_5_eye2_TA_tex_txt[]; +extern unsigned char flg_5_eye3_TA_tex_txt[]; +extern unsigned char flg_5_eye4_TA_tex_txt[]; +extern unsigned char flg_5_eye5_TA_tex_txt[]; +extern unsigned char flg_5_eye6_TA_tex_txt[]; +extern unsigned char flg_5_eye7_TA_tex_txt[]; +extern unsigned char flg_5_eye8_TA_tex_txt[]; +extern unsigned char flg_5_mouth1_TA_tex_txt[]; +extern unsigned char flg_5_mouth2_TA_tex_txt[]; +extern unsigned char flg_5_mouth3_TA_tex_txt[]; +extern unsigned char flg_5_mouth4_TA_tex_txt[]; +extern unsigned char flg_5_mouth5_TA_tex_txt[]; +extern unsigned char flg_5_mouth6_TA_tex_txt[]; +extern unsigned char flg_5_tmem_txt[]; +extern unsigned short flg_6_pal[]; +extern unsigned char flg_6_eye1_TA_tex_txt[]; +extern unsigned char flg_6_eye2_TA_tex_txt[]; +extern unsigned char flg_6_eye3_TA_tex_txt[]; +extern unsigned char flg_6_eye4_TA_tex_txt[]; +extern unsigned char flg_6_eye5_TA_tex_txt[]; +extern unsigned char flg_6_eye6_TA_tex_txt[]; +extern unsigned char flg_6_eye7_TA_tex_txt[]; +extern unsigned char flg_6_eye8_TA_tex_txt[]; +extern unsigned char flg_6_mouth1_TA_tex_txt[]; +extern unsigned char flg_6_mouth2_TA_tex_txt[]; +extern unsigned char flg_6_mouth3_TA_tex_txt[]; +extern unsigned char flg_6_mouth4_TA_tex_txt[]; +extern unsigned char flg_6_mouth5_TA_tex_txt[]; +extern unsigned char flg_6_mouth6_TA_tex_txt[]; +extern unsigned char flg_6_tmem_txt[]; +extern unsigned short flg_7_pal[]; +extern unsigned char flg_7_eye1_TA_tex_txt[]; +extern unsigned char flg_7_eye2_TA_tex_txt[]; +extern unsigned char flg_7_eye3_TA_tex_txt[]; +extern unsigned char flg_7_eye4_TA_tex_txt[]; +extern unsigned char flg_7_eye5_TA_tex_txt[]; +extern unsigned char flg_7_eye6_TA_tex_txt[]; +extern unsigned char flg_7_eye7_TA_tex_txt[]; +extern unsigned char flg_7_eye8_TA_tex_txt[]; +extern unsigned char flg_7_mouth1_TA_tex_txt[]; +extern unsigned char flg_7_mouth2_TA_tex_txt[]; +extern unsigned char flg_7_mouth3_TA_tex_txt[]; +extern unsigned char flg_7_mouth4_TA_tex_txt[]; +extern unsigned char flg_7_mouth5_TA_tex_txt[]; +extern unsigned char flg_7_mouth6_TA_tex_txt[]; +extern unsigned char flg_7_tmem_txt[]; +extern unsigned short flg_8_pal[]; +extern unsigned char flg_8_eye1_TA_tex_txt[]; +extern unsigned char flg_8_eye2_TA_tex_txt[]; +extern unsigned char flg_8_eye3_TA_tex_txt[]; +extern unsigned char flg_8_eye4_TA_tex_txt[]; +extern unsigned char flg_8_eye5_TA_tex_txt[]; +extern unsigned char flg_8_eye6_TA_tex_txt[]; +extern unsigned char flg_8_eye7_TA_tex_txt[]; +extern unsigned char flg_8_eye8_TA_tex_txt[]; +extern unsigned char flg_8_mouth1_TA_tex_txt[]; +extern unsigned char flg_8_mouth2_TA_tex_txt[]; +extern unsigned char flg_8_mouth3_TA_tex_txt[]; +extern unsigned char flg_8_mouth4_TA_tex_txt[]; +extern unsigned char flg_8_mouth5_TA_tex_txt[]; +extern unsigned char flg_8_mouth6_TA_tex_txt[]; +extern unsigned char flg_8_tmem_txt[]; +extern unsigned short flg_9_pal[]; +extern unsigned char flg_9_eye1_TA_tex_txt[]; +extern unsigned char flg_9_eye2_TA_tex_txt[]; +extern unsigned char flg_9_eye3_TA_tex_txt[]; +extern unsigned char flg_9_eye4_TA_tex_txt[]; +extern unsigned char flg_9_eye5_TA_tex_txt[]; +extern unsigned char flg_9_eye6_TA_tex_txt[]; +extern unsigned char flg_9_eye7_TA_tex_txt[]; +extern unsigned char flg_9_eye8_TA_tex_txt[]; +extern unsigned char flg_9_mouth1_TA_tex_txt[]; +extern unsigned char flg_9_mouth2_TA_tex_txt[]; +extern unsigned char flg_9_mouth3_TA_tex_txt[]; +extern unsigned char flg_9_mouth4_TA_tex_txt[]; +extern unsigned char flg_9_mouth5_TA_tex_txt[]; +extern unsigned char flg_9_mouth6_TA_tex_txt[]; +extern unsigned char flg_9_tmem_txt[]; +extern unsigned short flg_10_pal[]; +extern unsigned char flg_10_eye1_TA_tex_txt[]; +extern unsigned char flg_10_eye2_TA_tex_txt[]; +extern unsigned char flg_10_eye3_TA_tex_txt[]; +extern unsigned char flg_10_eye4_TA_tex_txt[]; +extern unsigned char flg_10_eye5_TA_tex_txt[]; +extern unsigned char flg_10_eye6_TA_tex_txt[]; +extern unsigned char flg_10_eye7_TA_tex_txt[]; +extern unsigned char flg_10_eye8_TA_tex_txt[]; +extern unsigned char flg_10_mouth1_TA_tex_txt[]; +extern unsigned char flg_10_mouth2_TA_tex_txt[]; +extern unsigned char flg_10_mouth3_TA_tex_txt[]; +extern unsigned char flg_10_mouth4_TA_tex_txt[]; +extern unsigned char flg_10_mouth5_TA_tex_txt[]; +extern unsigned char flg_10_mouth6_TA_tex_txt[]; +extern unsigned char flg_10_tmem_txt[]; +extern unsigned short flg_11_pal[]; +extern unsigned char flg_11_eye1_TA_tex_txt[]; +extern unsigned char flg_11_eye2_TA_tex_txt[]; +extern unsigned char flg_11_eye3_TA_tex_txt[]; +extern unsigned char flg_11_eye4_TA_tex_txt[]; +extern unsigned char flg_11_eye5_TA_tex_txt[]; +extern unsigned char flg_11_eye6_TA_tex_txt[]; +extern unsigned char flg_11_eye7_TA_tex_txt[]; +extern unsigned char flg_11_eye8_TA_tex_txt[]; +extern unsigned char flg_11_mouth1_TA_tex_txt[]; +extern unsigned char flg_11_mouth2_TA_tex_txt[]; +extern unsigned char flg_11_mouth3_TA_tex_txt[]; +extern unsigned char flg_11_mouth4_TA_tex_txt[]; +extern unsigned char flg_11_mouth5_TA_tex_txt[]; +extern unsigned char flg_11_mouth6_TA_tex_txt[]; +extern unsigned char flg_11_tmem_txt[]; +extern unsigned short flg_12_pal[]; +extern unsigned char flg_12_eye1_TA_tex_txt[]; +extern unsigned char flg_12_eye2_TA_tex_txt[]; +extern unsigned char flg_12_eye3_TA_tex_txt[]; +extern unsigned char flg_12_eye4_TA_tex_txt[]; +extern unsigned char flg_12_eye5_TA_tex_txt[]; +extern unsigned char flg_12_eye6_TA_tex_txt[]; +extern unsigned char flg_12_eye7_TA_tex_txt[]; +extern unsigned char flg_12_eye8_TA_tex_txt[]; +extern unsigned char flg_12_mouth1_TA_tex_txt[]; +extern unsigned char flg_12_mouth2_TA_tex_txt[]; +extern unsigned char flg_12_mouth3_TA_tex_txt[]; +extern unsigned char flg_12_mouth4_TA_tex_txt[]; +extern unsigned char flg_12_mouth5_TA_tex_txt[]; +extern unsigned char flg_12_mouth6_TA_tex_txt[]; +extern unsigned char flg_12_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_goa_1; +extern unsigned short goa_1_pal[]; +extern unsigned char goa_1_eye1_TA_tex_txt[]; +extern unsigned char goa_1_eye2_TA_tex_txt[]; +extern unsigned char goa_1_eye3_TA_tex_txt[]; +extern unsigned char goa_1_eye4_TA_tex_txt[]; +extern unsigned char goa_1_eye5_TA_tex_txt[]; +extern unsigned char goa_1_eye6_TA_tex_txt[]; +extern unsigned char goa_1_eye7_TA_tex_txt[]; +extern unsigned char goa_1_eye8_TA_tex_txt[]; +extern unsigned char goa_1_mouth1_TA_tex_txt[]; +extern unsigned char goa_1_mouth2_TA_tex_txt[]; +extern unsigned char goa_1_mouth3_TA_tex_txt[]; +extern unsigned char goa_1_mouth4_TA_tex_txt[]; +extern unsigned char goa_1_mouth5_TA_tex_txt[]; +extern unsigned char goa_1_mouth6_TA_tex_txt[]; +extern unsigned char goa_1_tmem_txt[]; +extern unsigned short goa_2_pal[]; +extern unsigned char goa_2_eye1_TA_tex_txt[]; +extern unsigned char goa_2_eye2_TA_tex_txt[]; +extern unsigned char goa_2_eye3_TA_tex_txt[]; +extern unsigned char goa_2_eye4_TA_tex_txt[]; +extern unsigned char goa_2_eye5_TA_tex_txt[]; +extern unsigned char goa_2_eye6_TA_tex_txt[]; +extern unsigned char goa_2_eye7_TA_tex_txt[]; +extern unsigned char goa_2_eye8_TA_tex_txt[]; +extern unsigned char goa_2_mouth1_TA_tex_txt[]; +extern unsigned char goa_2_mouth2_TA_tex_txt[]; +extern unsigned char goa_2_mouth3_TA_tex_txt[]; +extern unsigned char goa_2_mouth4_TA_tex_txt[]; +extern unsigned char goa_2_mouth5_TA_tex_txt[]; +extern unsigned char goa_2_mouth6_TA_tex_txt[]; +extern unsigned char goa_2_tmem_txt[]; +extern unsigned short goa_3_pal[]; +extern unsigned char goa_3_eye1_TA_tex_txt[]; +extern unsigned char goa_3_eye2_TA_tex_txt[]; +extern unsigned char goa_3_eye3_TA_tex_txt[]; +extern unsigned char goa_3_eye4_TA_tex_txt[]; +extern unsigned char goa_3_eye5_TA_tex_txt[]; +extern unsigned char goa_3_eye6_TA_tex_txt[]; +extern unsigned char goa_3_eye7_TA_tex_txt[]; +extern unsigned char goa_3_eye8_TA_tex_txt[]; +extern unsigned char goa_3_mouth1_TA_tex_txt[]; +extern unsigned char goa_3_mouth2_TA_tex_txt[]; +extern unsigned char goa_3_mouth3_TA_tex_txt[]; +extern unsigned char goa_3_mouth4_TA_tex_txt[]; +extern unsigned char goa_3_mouth5_TA_tex_txt[]; +extern unsigned char goa_3_mouth6_TA_tex_txt[]; +extern unsigned char goa_3_tmem_txt[]; +extern unsigned short goa_4_pal[]; +extern unsigned char goa_4_eye1_TA_tex_txt[]; +extern unsigned char goa_4_eye2_TA_tex_txt[]; +extern unsigned char goa_4_eye3_TA_tex_txt[]; +extern unsigned char goa_4_eye4_TA_tex_txt[]; +extern unsigned char goa_4_eye5_TA_tex_txt[]; +extern unsigned char goa_4_eye6_TA_tex_txt[]; +extern unsigned char goa_4_eye7_TA_tex_txt[]; +extern unsigned char goa_4_eye8_TA_tex_txt[]; +extern unsigned char goa_4_mouth1_TA_tex_txt[]; +extern unsigned char goa_4_mouth2_TA_tex_txt[]; +extern unsigned char goa_4_mouth3_TA_tex_txt[]; +extern unsigned char goa_4_mouth4_TA_tex_txt[]; +extern unsigned char goa_4_mouth5_TA_tex_txt[]; +extern unsigned char goa_4_mouth6_TA_tex_txt[]; +extern unsigned char goa_4_tmem_txt[]; +extern unsigned short goa_5_pal[]; +extern unsigned char goa_5_eye1_TA_tex_txt[]; +extern unsigned char goa_5_eye2_TA_tex_txt[]; +extern unsigned char goa_5_eye3_TA_tex_txt[]; +extern unsigned char goa_5_eye4_TA_tex_txt[]; +extern unsigned char goa_5_eye5_TA_tex_txt[]; +extern unsigned char goa_5_eye6_TA_tex_txt[]; +extern unsigned char goa_5_eye7_TA_tex_txt[]; +extern unsigned char goa_5_eye8_TA_tex_txt[]; +extern unsigned char goa_5_mouth1_TA_tex_txt[]; +extern unsigned char goa_5_mouth2_TA_tex_txt[]; +extern unsigned char goa_5_mouth3_TA_tex_txt[]; +extern unsigned char goa_5_mouth4_TA_tex_txt[]; +extern unsigned char goa_5_mouth5_TA_tex_txt[]; +extern unsigned char goa_5_mouth6_TA_tex_txt[]; +extern unsigned char goa_5_tmem_txt[]; +extern unsigned short goa_6_pal[]; +extern unsigned char goa_6_eye1_TA_tex_txt[]; +extern unsigned char goa_6_eye2_TA_tex_txt[]; +extern unsigned char goa_6_eye3_TA_tex_txt[]; +extern unsigned char goa_6_eye4_TA_tex_txt[]; +extern unsigned char goa_6_eye5_TA_tex_txt[]; +extern unsigned char goa_6_eye6_TA_tex_txt[]; +extern unsigned char goa_6_eye7_TA_tex_txt[]; +extern unsigned char goa_6_eye8_TA_tex_txt[]; +extern unsigned char goa_6_mouth1_TA_tex_txt[]; +extern unsigned char goa_6_mouth2_TA_tex_txt[]; +extern unsigned char goa_6_mouth3_TA_tex_txt[]; +extern unsigned char goa_6_mouth4_TA_tex_txt[]; +extern unsigned char goa_6_mouth5_TA_tex_txt[]; +extern unsigned char goa_6_mouth6_TA_tex_txt[]; +extern unsigned char goa_6_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_gor_1; +extern unsigned short gor_1_pal[]; +extern unsigned char gor_1_eye1_TA_tex_txt[]; +extern unsigned char gor_1_eye2_TA_tex_txt[]; +extern unsigned char gor_1_eye3_TA_tex_txt[]; +extern unsigned char gor_1_eye4_TA_tex_txt[]; +extern unsigned char gor_1_eye5_TA_tex_txt[]; +extern unsigned char gor_1_eye6_TA_tex_txt[]; +extern unsigned char gor_1_eye7_TA_tex_txt[]; +extern unsigned char gor_1_eye8_TA_tex_txt[]; +extern unsigned char gor_1_mouth1_TA_tex_txt[]; +extern unsigned char gor_1_mouth2_TA_tex_txt[]; +extern unsigned char gor_1_mouth3_TA_tex_txt[]; +extern unsigned char gor_1_mouth4_TA_tex_txt[]; +extern unsigned char gor_1_mouth5_TA_tex_txt[]; +extern unsigned char gor_1_mouth6_TA_tex_txt[]; +extern unsigned char gor_1_tmem_txt[]; +extern unsigned short gor_2_pal[]; +extern unsigned char gor_2_eye1_TA_tex_txt[]; +extern unsigned char gor_2_eye2_TA_tex_txt[]; +extern unsigned char gor_2_eye3_TA_tex_txt[]; +extern unsigned char gor_2_eye4_TA_tex_txt[]; +extern unsigned char gor_2_eye5_TA_tex_txt[]; +extern unsigned char gor_2_eye6_TA_tex_txt[]; +extern unsigned char gor_2_eye7_TA_tex_txt[]; +extern unsigned char gor_2_eye8_TA_tex_txt[]; +extern unsigned char gor_2_mouth1_TA_tex_txt[]; +extern unsigned char gor_2_mouth2_TA_tex_txt[]; +extern unsigned char gor_2_mouth3_TA_tex_txt[]; +extern unsigned char gor_2_mouth4_TA_tex_txt[]; +extern unsigned char gor_2_mouth5_TA_tex_txt[]; +extern unsigned char gor_2_mouth6_TA_tex_txt[]; +extern unsigned char gor_2_tmem_txt[]; +extern unsigned short gor_3_pal[]; +extern unsigned char gor_3_eye1_TA_tex_txt[]; +extern unsigned char gor_3_eye2_TA_tex_txt[]; +extern unsigned char gor_3_eye3_TA_tex_txt[]; +extern unsigned char gor_3_eye4_TA_tex_txt[]; +extern unsigned char gor_3_eye5_TA_tex_txt[]; +extern unsigned char gor_3_eye6_TA_tex_txt[]; +extern unsigned char gor_3_eye7_TA_tex_txt[]; +extern unsigned char gor_3_eye8_TA_tex_txt[]; +extern unsigned char gor_3_mouth1_TA_tex_txt[]; +extern unsigned char gor_3_mouth2_TA_tex_txt[]; +extern unsigned char gor_3_mouth3_TA_tex_txt[]; +extern unsigned char gor_3_mouth4_TA_tex_txt[]; +extern unsigned char gor_3_mouth5_TA_tex_txt[]; +extern unsigned char gor_3_mouth6_TA_tex_txt[]; +extern unsigned char gor_3_tmem_txt[]; +extern unsigned short gor_4_pal[]; +extern unsigned char gor_4_eye1_TA_tex_txt[]; +extern unsigned char gor_4_eye2_TA_tex_txt[]; +extern unsigned char gor_4_eye3_TA_tex_txt[]; +extern unsigned char gor_4_eye4_TA_tex_txt[]; +extern unsigned char gor_4_eye5_TA_tex_txt[]; +extern unsigned char gor_4_eye6_TA_tex_txt[]; +extern unsigned char gor_4_eye7_TA_tex_txt[]; +extern unsigned char gor_4_eye8_TA_tex_txt[]; +extern unsigned char gor_4_mouth1_TA_tex_txt[]; +extern unsigned char gor_4_mouth2_TA_tex_txt[]; +extern unsigned char gor_4_mouth3_TA_tex_txt[]; +extern unsigned char gor_4_mouth4_TA_tex_txt[]; +extern unsigned char gor_4_mouth5_TA_tex_txt[]; +extern unsigned char gor_4_mouth6_TA_tex_txt[]; +extern unsigned char gor_4_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_hip_1; +extern unsigned short hip_1_pal[]; +extern unsigned char hip_1_eye1_TA_tex_txt[]; +extern unsigned char hip_1_eye2_TA_tex_txt[]; +extern unsigned char hip_1_eye3_TA_tex_txt[]; +extern unsigned char hip_1_eye4_TA_tex_txt[]; +extern unsigned char hip_1_eye5_TA_tex_txt[]; +extern unsigned char hip_1_eye6_TA_tex_txt[]; +extern unsigned char hip_1_eye7_TA_tex_txt[]; +extern unsigned char hip_1_eye8_TA_tex_txt[]; +extern unsigned char hip_1_tmem_txt[]; +extern unsigned short hip_2_pal[]; +extern unsigned char hip_2_eye1_TA_tex_txt[]; +extern unsigned char hip_2_eye2_TA_tex_txt[]; +extern unsigned char hip_2_eye3_TA_tex_txt[]; +extern unsigned char hip_2_eye4_TA_tex_txt[]; +extern unsigned char hip_2_eye5_TA_tex_txt[]; +extern unsigned char hip_2_eye6_TA_tex_txt[]; +extern unsigned char hip_2_eye7_TA_tex_txt[]; +extern unsigned char hip_2_eye8_TA_tex_txt[]; +extern unsigned char hip_2_tmem_txt[]; +extern unsigned short hip_3_pal[]; +extern unsigned char hip_3_eye1_TA_tex_txt[]; +extern unsigned char hip_3_eye2_TA_tex_txt[]; +extern unsigned char hip_3_eye3_TA_tex_txt[]; +extern unsigned char hip_3_eye4_TA_tex_txt[]; +extern unsigned char hip_3_eye5_TA_tex_txt[]; +extern unsigned char hip_3_eye6_TA_tex_txt[]; +extern unsigned char hip_3_eye7_TA_tex_txt[]; +extern unsigned char hip_3_eye8_TA_tex_txt[]; +extern unsigned char hip_3_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_hrs_1; +extern unsigned short hrs_1_pal[]; +extern unsigned char hrs_1_eye1_TA_tex_txt[]; +extern unsigned char hrs_1_eye2_TA_tex_txt[]; +extern unsigned char hrs_1_eye3_TA_tex_txt[]; +extern unsigned char hrs_1_eye4_TA_tex_txt[]; +extern unsigned char hrs_1_eye5_TA_tex_txt[]; +extern unsigned char hrs_1_eye6_TA_tex_txt[]; +extern unsigned char hrs_1_eye7_TA_tex_txt[]; +extern unsigned char hrs_1_eye8_TA_tex_txt[]; +extern unsigned char hrs_1_tmem_txt[]; +extern unsigned short hrs_2_pal[]; +extern unsigned char hrs_2_eye1_TA_tex_txt[]; +extern unsigned char hrs_2_eye2_TA_tex_txt[]; +extern unsigned char hrs_2_eye3_TA_tex_txt[]; +extern unsigned char hrs_2_eye4_TA_tex_txt[]; +extern unsigned char hrs_2_eye5_TA_tex_txt[]; +extern unsigned char hrs_2_eye6_TA_tex_txt[]; +extern unsigned char hrs_2_eye7_TA_tex_txt[]; +extern unsigned char hrs_2_eye8_TA_tex_txt[]; +extern unsigned char hrs_2_tmem_txt[]; +extern unsigned short hrs_3_pal[]; +extern unsigned char hrs_3_eye1_TA_tex_txt[]; +extern unsigned char hrs_3_eye2_TA_tex_txt[]; +extern unsigned char hrs_3_eye3_TA_tex_txt[]; +extern unsigned char hrs_3_eye4_TA_tex_txt[]; +extern unsigned char hrs_3_eye5_TA_tex_txt[]; +extern unsigned char hrs_3_eye6_TA_tex_txt[]; +extern unsigned char hrs_3_eye7_TA_tex_txt[]; +extern unsigned char hrs_3_eye8_TA_tex_txt[]; +extern unsigned char hrs_3_tmem_txt[]; +extern unsigned short hrs_4_pal[]; +extern unsigned char hrs_4_eye1_TA_tex_txt[]; +extern unsigned char hrs_4_eye2_TA_tex_txt[]; +extern unsigned char hrs_4_eye3_TA_tex_txt[]; +extern unsigned char hrs_4_eye4_TA_tex_txt[]; +extern unsigned char hrs_4_eye5_TA_tex_txt[]; +extern unsigned char hrs_4_eye6_TA_tex_txt[]; +extern unsigned char hrs_4_eye7_TA_tex_txt[]; +extern unsigned char hrs_4_eye8_TA_tex_txt[]; +extern unsigned char hrs_4_tmem_txt[]; +extern unsigned short hrs_5_pal[]; +extern unsigned char hrs_5_eye1_TA_tex_txt[]; +extern unsigned char hrs_5_eye2_TA_tex_txt[]; +extern unsigned char hrs_5_eye3_TA_tex_txt[]; +extern unsigned char hrs_5_eye4_TA_tex_txt[]; +extern unsigned char hrs_5_eye5_TA_tex_txt[]; +extern unsigned char hrs_5_eye6_TA_tex_txt[]; +extern unsigned char hrs_5_eye7_TA_tex_txt[]; +extern unsigned char hrs_5_eye8_TA_tex_txt[]; +extern unsigned char hrs_5_tmem_txt[]; +extern unsigned short hrs_6_pal[]; +extern unsigned char hrs_6_eye1_TA_tex_txt[]; +extern unsigned char hrs_6_eye2_TA_tex_txt[]; +extern unsigned char hrs_6_eye3_TA_tex_txt[]; +extern unsigned char hrs_6_eye4_TA_tex_txt[]; +extern unsigned char hrs_6_eye5_TA_tex_txt[]; +extern unsigned char hrs_6_eye6_TA_tex_txt[]; +extern unsigned char hrs_6_eye7_TA_tex_txt[]; +extern unsigned char hrs_6_eye8_TA_tex_txt[]; +extern unsigned char hrs_6_tmem_txt[]; +extern unsigned short hrs_7_pal[]; +extern unsigned char hrs_7_eye1_TA_tex_txt[]; +extern unsigned char hrs_7_eye2_TA_tex_txt[]; +extern unsigned char hrs_7_eye3_TA_tex_txt[]; +extern unsigned char hrs_7_eye4_TA_tex_txt[]; +extern unsigned char hrs_7_eye5_TA_tex_txt[]; +extern unsigned char hrs_7_eye6_TA_tex_txt[]; +extern unsigned char hrs_7_eye7_TA_tex_txt[]; +extern unsigned char hrs_7_eye8_TA_tex_txt[]; +extern unsigned char hrs_7_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_kgr_1; +extern unsigned short kgr_1_pal[]; +extern unsigned char kgr_1_eye1_TA_tex_txt[]; +extern unsigned char kgr_1_eye2_TA_tex_txt[]; +extern unsigned char kgr_1_eye3_TA_tex_txt[]; +extern unsigned char kgr_1_eye4_TA_tex_txt[]; +extern unsigned char kgr_1_eye5_TA_tex_txt[]; +extern unsigned char kgr_1_eye6_TA_tex_txt[]; +extern unsigned char kgr_1_eye7_TA_tex_txt[]; +extern unsigned char kgr_1_eye8_TA_tex_txt[]; +extern unsigned char kgr_1_tmem_txt[]; +extern unsigned short kgr_2_pal[]; +extern unsigned char kgr_2_eye1_TA_tex_txt[]; +extern unsigned char kgr_2_eye2_TA_tex_txt[]; +extern unsigned char kgr_2_eye3_TA_tex_txt[]; +extern unsigned char kgr_2_eye4_TA_tex_txt[]; +extern unsigned char kgr_2_eye5_TA_tex_txt[]; +extern unsigned char kgr_2_eye6_TA_tex_txt[]; +extern unsigned char kgr_2_eye7_TA_tex_txt[]; +extern unsigned char kgr_2_eye8_TA_tex_txt[]; +extern unsigned char kgr_2_tmem_txt[]; +extern unsigned short kgr_3_pal[]; +extern unsigned char kgr_3_eye1_TA_tex_txt[]; +extern unsigned char kgr_3_eye2_TA_tex_txt[]; +extern unsigned char kgr_3_eye3_TA_tex_txt[]; +extern unsigned char kgr_3_eye4_TA_tex_txt[]; +extern unsigned char kgr_3_eye5_TA_tex_txt[]; +extern unsigned char kgr_3_eye6_TA_tex_txt[]; +extern unsigned char kgr_3_eye7_TA_tex_txt[]; +extern unsigned char kgr_3_eye8_TA_tex_txt[]; +extern unsigned char kgr_3_tmem_txt[]; +extern unsigned short kgr_4_pal[]; +extern unsigned char kgr_4_eye1_TA_tex_txt[]; +extern unsigned char kgr_4_eye2_TA_tex_txt[]; +extern unsigned char kgr_4_eye3_TA_tex_txt[]; +extern unsigned char kgr_4_eye4_TA_tex_txt[]; +extern unsigned char kgr_4_eye5_TA_tex_txt[]; +extern unsigned char kgr_4_eye6_TA_tex_txt[]; +extern unsigned char kgr_4_eye7_TA_tex_txt[]; +extern unsigned char kgr_4_eye8_TA_tex_txt[]; +extern unsigned char kgr_4_tmem_txt[]; +extern unsigned short kgr_5_pal[]; +extern unsigned char kgr_5_eye1_TA_tex_txt[]; +extern unsigned char kgr_5_eye2_TA_tex_txt[]; +extern unsigned char kgr_5_eye3_TA_tex_txt[]; +extern unsigned char kgr_5_eye4_TA_tex_txt[]; +extern unsigned char kgr_5_eye5_TA_tex_txt[]; +extern unsigned char kgr_5_eye6_TA_tex_txt[]; +extern unsigned char kgr_5_eye7_TA_tex_txt[]; +extern unsigned char kgr_5_eye8_TA_tex_txt[]; +extern unsigned char kgr_5_tmem_txt[]; +extern unsigned short kgr_6_pal[]; +extern unsigned char kgr_6_eye1_TA_tex_txt[]; +extern unsigned char kgr_6_eye2_TA_tex_txt[]; +extern unsigned char kgr_6_eye3_TA_tex_txt[]; +extern unsigned char kgr_6_eye4_TA_tex_txt[]; +extern unsigned char kgr_6_eye5_TA_tex_txt[]; +extern unsigned char kgr_6_eye6_TA_tex_txt[]; +extern unsigned char kgr_6_eye7_TA_tex_txt[]; +extern unsigned char kgr_6_eye8_TA_tex_txt[]; +extern unsigned char kgr_6_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_kal_1; +extern unsigned short kal_1_pal[]; +extern unsigned char kal_1_eye1_TA_tex_txt[]; +extern unsigned char kal_1_eye2_TA_tex_txt[]; +extern unsigned char kal_1_eye3_TA_tex_txt[]; +extern unsigned char kal_1_eye4_TA_tex_txt[]; +extern unsigned char kal_1_eye5_TA_tex_txt[]; +extern unsigned char kal_1_eye6_TA_tex_txt[]; +extern unsigned char kal_1_eye7_TA_tex_txt[]; +extern unsigned char kal_1_eye8_TA_tex_txt[]; +extern unsigned char kal_1_mouth1_TA_tex_txt[]; +extern unsigned char kal_1_mouth2_TA_tex_txt[]; +extern unsigned char kal_1_mouth3_TA_tex_txt[]; +extern unsigned char kal_1_mouth4_TA_tex_txt[]; +extern unsigned char kal_1_mouth5_TA_tex_txt[]; +extern unsigned char kal_1_mouth6_TA_tex_txt[]; +extern unsigned char kal_1_tmem_txt[]; +extern unsigned short kal_2_pal[]; +extern unsigned char kal_2_eye1_TA_tex_txt[]; +extern unsigned char kal_2_eye2_TA_tex_txt[]; +extern unsigned char kal_2_eye3_TA_tex_txt[]; +extern unsigned char kal_2_eye4_TA_tex_txt[]; +extern unsigned char kal_2_eye5_TA_tex_txt[]; +extern unsigned char kal_2_eye6_TA_tex_txt[]; +extern unsigned char kal_2_eye7_TA_tex_txt[]; +extern unsigned char kal_2_eye8_TA_tex_txt[]; +extern unsigned char kal_2_mouth1_TA_tex_txt[]; +extern unsigned char kal_2_mouth2_TA_tex_txt[]; +extern unsigned char kal_2_mouth3_TA_tex_txt[]; +extern unsigned char kal_2_mouth4_TA_tex_txt[]; +extern unsigned char kal_2_mouth5_TA_tex_txt[]; +extern unsigned char kal_2_mouth6_TA_tex_txt[]; +extern unsigned char kal_2_tmem_txt[]; +extern unsigned short kal_3_pal[]; +extern unsigned char kal_3_eye1_TA_tex_txt[]; +extern unsigned char kal_3_eye2_TA_tex_txt[]; +extern unsigned char kal_3_eye3_TA_tex_txt[]; +extern unsigned char kal_3_eye4_TA_tex_txt[]; +extern unsigned char kal_3_eye5_TA_tex_txt[]; +extern unsigned char kal_3_eye6_TA_tex_txt[]; +extern unsigned char kal_3_eye7_TA_tex_txt[]; +extern unsigned char kal_3_eye8_TA_tex_txt[]; +extern unsigned char kal_3_mouth1_TA_tex_txt[]; +extern unsigned char kal_3_mouth2_TA_tex_txt[]; +extern unsigned char kal_3_mouth3_TA_tex_txt[]; +extern unsigned char kal_3_mouth4_TA_tex_txt[]; +extern unsigned char kal_3_mouth5_TA_tex_txt[]; +extern unsigned char kal_3_mouth6_TA_tex_txt[]; +extern unsigned char kal_3_tmem_txt[]; +extern unsigned short kal_4_pal[]; +extern unsigned char kal_4_eye1_TA_tex_txt[]; +extern unsigned char kal_4_eye2_TA_tex_txt[]; +extern unsigned char kal_4_eye3_TA_tex_txt[]; +extern unsigned char kal_4_eye4_TA_tex_txt[]; +extern unsigned char kal_4_eye5_TA_tex_txt[]; +extern unsigned char kal_4_eye6_TA_tex_txt[]; +extern unsigned char kal_4_eye7_TA_tex_txt[]; +extern unsigned char kal_4_eye8_TA_tex_txt[]; +extern unsigned char kal_4_mouth1_TA_tex_txt[]; +extern unsigned char kal_4_mouth2_TA_tex_txt[]; +extern unsigned char kal_4_mouth3_TA_tex_txt[]; +extern unsigned char kal_4_mouth4_TA_tex_txt[]; +extern unsigned char kal_4_mouth5_TA_tex_txt[]; +extern unsigned char kal_4_mouth6_TA_tex_txt[]; +extern unsigned char kal_4_tmem_txt[]; +extern unsigned short kal_5_pal[]; +extern unsigned char kal_5_eye1_TA_tex_txt[]; +extern unsigned char kal_5_eye2_TA_tex_txt[]; +extern unsigned char kal_5_eye3_TA_tex_txt[]; +extern unsigned char kal_5_eye4_TA_tex_txt[]; +extern unsigned char kal_5_eye5_TA_tex_txt[]; +extern unsigned char kal_5_eye6_TA_tex_txt[]; +extern unsigned char kal_5_eye7_TA_tex_txt[]; +extern unsigned char kal_5_eye8_TA_tex_txt[]; +extern unsigned char kal_5_mouth1_TA_tex_txt[]; +extern unsigned char kal_5_mouth2_TA_tex_txt[]; +extern unsigned char kal_5_mouth3_TA_tex_txt[]; +extern unsigned char kal_5_mouth4_TA_tex_txt[]; +extern unsigned char kal_5_mouth5_TA_tex_txt[]; +extern unsigned char kal_5_mouth6_TA_tex_txt[]; +extern unsigned char kal_5_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_lon_1; +extern unsigned short lon_1_pal[]; +extern unsigned char lon_1_eye1_TA_tex_txt[]; +extern unsigned char lon_1_eye2_TA_tex_txt[]; +extern unsigned char lon_1_eye3_TA_tex_txt[]; +extern unsigned char lon_1_eye4_TA_tex_txt[]; +extern unsigned char lon_1_eye5_TA_tex_txt[]; +extern unsigned char lon_1_eye6_TA_tex_txt[]; +extern unsigned char lon_1_eye7_TA_tex_txt[]; +extern unsigned char lon_1_eye8_TA_tex_txt[]; +extern unsigned char lon_1_mouth1_TA_tex_txt[]; +extern unsigned char lon_1_mouth2_TA_tex_txt[]; +extern unsigned char lon_1_mouth3_TA_tex_txt[]; +extern unsigned char lon_1_mouth4_TA_tex_txt[]; +extern unsigned char lon_1_mouth5_TA_tex_txt[]; +extern unsigned char lon_1_mouth6_TA_tex_txt[]; +extern unsigned char lon_1_tmem_txt[]; +extern unsigned short lon_2_pal[]; +extern unsigned char lon_2_eye1_TA_tex_txt[]; +extern unsigned char lon_2_eye2_TA_tex_txt[]; +extern unsigned char lon_2_eye3_TA_tex_txt[]; +extern unsigned char lon_2_eye4_TA_tex_txt[]; +extern unsigned char lon_2_eye5_TA_tex_txt[]; +extern unsigned char lon_2_eye6_TA_tex_txt[]; +extern unsigned char lon_2_eye7_TA_tex_txt[]; +extern unsigned char lon_2_eye8_TA_tex_txt[]; +extern unsigned char lon_2_mouth1_TA_tex_txt[]; +extern unsigned char lon_2_mouth2_TA_tex_txt[]; +extern unsigned char lon_2_mouth3_TA_tex_txt[]; +extern unsigned char lon_2_mouth4_TA_tex_txt[]; +extern unsigned char lon_2_mouth5_TA_tex_txt[]; +extern unsigned char lon_2_mouth6_TA_tex_txt[]; +extern unsigned char lon_2_tmem_txt[]; +extern unsigned short lon_3_pal[]; +extern unsigned char lon_3_eye1_TA_tex_txt[]; +extern unsigned char lon_3_eye2_TA_tex_txt[]; +extern unsigned char lon_3_eye3_TA_tex_txt[]; +extern unsigned char lon_3_eye4_TA_tex_txt[]; +extern unsigned char lon_3_eye5_TA_tex_txt[]; +extern unsigned char lon_3_eye6_TA_tex_txt[]; +extern unsigned char lon_3_eye7_TA_tex_txt[]; +extern unsigned char lon_3_eye8_TA_tex_txt[]; +extern unsigned char lon_3_mouth1_TA_tex_txt[]; +extern unsigned char lon_3_mouth2_TA_tex_txt[]; +extern unsigned char lon_3_mouth3_TA_tex_txt[]; +extern unsigned char lon_3_mouth4_TA_tex_txt[]; +extern unsigned char lon_3_mouth5_TA_tex_txt[]; +extern unsigned char lon_3_mouth6_TA_tex_txt[]; +extern unsigned char lon_3_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_mus_1; +extern unsigned short mus_1_pal[]; +extern unsigned char mus_1_eye1_TA_tex_txt[]; +extern unsigned char mus_1_eye2_TA_tex_txt[]; +extern unsigned char mus_1_eye3_TA_tex_txt[]; +extern unsigned char mus_1_eye4_TA_tex_txt[]; +extern unsigned char mus_1_eye5_TA_tex_txt[]; +extern unsigned char mus_1_eye6_TA_tex_txt[]; +extern unsigned char mus_1_eye7_TA_tex_txt[]; +extern unsigned char mus_1_eye8_TA_tex_txt[]; +extern unsigned char mus_1_mouth1_TA_tex_txt[]; +extern unsigned char mus_1_mouth2_TA_tex_txt[]; +extern unsigned char mus_1_mouth3_TA_tex_txt[]; +extern unsigned char mus_1_mouth4_TA_tex_txt[]; +extern unsigned char mus_1_mouth5_TA_tex_txt[]; +extern unsigned char mus_1_mouth6_TA_tex_txt[]; +extern unsigned char mus_1_tmem_txt[]; +extern unsigned short mus_2_pal[]; +extern unsigned char mus_2_eye1_TA_tex_txt[]; +extern unsigned char mus_2_eye2_TA_tex_txt[]; +extern unsigned char mus_2_eye3_TA_tex_txt[]; +extern unsigned char mus_2_eye4_TA_tex_txt[]; +extern unsigned char mus_2_eye5_TA_tex_txt[]; +extern unsigned char mus_2_eye6_TA_tex_txt[]; +extern unsigned char mus_2_eye7_TA_tex_txt[]; +extern unsigned char mus_2_eye8_TA_tex_txt[]; +extern unsigned char mus_2_mouth1_TA_tex_txt[]; +extern unsigned char mus_2_mouth2_TA_tex_txt[]; +extern unsigned char mus_2_mouth3_TA_tex_txt[]; +extern unsigned char mus_2_mouth4_TA_tex_txt[]; +extern unsigned char mus_2_mouth5_TA_tex_txt[]; +extern unsigned char mus_2_mouth6_TA_tex_txt[]; +extern unsigned char mus_2_tmem_txt[]; +extern unsigned short mus_3_pal[]; +extern unsigned char mus_3_eye1_TA_tex_txt[]; +extern unsigned char mus_3_eye2_TA_tex_txt[]; +extern unsigned char mus_3_eye3_TA_tex_txt[]; +extern unsigned char mus_3_eye4_TA_tex_txt[]; +extern unsigned char mus_3_eye5_TA_tex_txt[]; +extern unsigned char mus_3_eye6_TA_tex_txt[]; +extern unsigned char mus_3_eye7_TA_tex_txt[]; +extern unsigned char mus_3_eye8_TA_tex_txt[]; +extern unsigned char mus_3_mouth1_TA_tex_txt[]; +extern unsigned char mus_3_mouth2_TA_tex_txt[]; +extern unsigned char mus_3_mouth3_TA_tex_txt[]; +extern unsigned char mus_3_mouth4_TA_tex_txt[]; +extern unsigned char mus_3_mouth5_TA_tex_txt[]; +extern unsigned char mus_3_mouth6_TA_tex_txt[]; +extern unsigned char mus_3_tmem_txt[]; +extern unsigned short mus_4_pal[]; +extern unsigned char mus_4_eye1_TA_tex_txt[]; +extern unsigned char mus_4_eye2_TA_tex_txt[]; +extern unsigned char mus_4_eye3_TA_tex_txt[]; +extern unsigned char mus_4_eye4_TA_tex_txt[]; +extern unsigned char mus_4_eye5_TA_tex_txt[]; +extern unsigned char mus_4_eye6_TA_tex_txt[]; +extern unsigned char mus_4_eye7_TA_tex_txt[]; +extern unsigned char mus_4_eye8_TA_tex_txt[]; +extern unsigned char mus_4_mouth1_TA_tex_txt[]; +extern unsigned char mus_4_mouth2_TA_tex_txt[]; +extern unsigned char mus_4_mouth3_TA_tex_txt[]; +extern unsigned char mus_4_mouth4_TA_tex_txt[]; +extern unsigned char mus_4_mouth5_TA_tex_txt[]; +extern unsigned char mus_4_mouth6_TA_tex_txt[]; +extern unsigned char mus_4_tmem_txt[]; +extern unsigned short mus_5_pal[]; +extern unsigned char mus_5_eye1_TA_tex_txt[]; +extern unsigned char mus_5_eye2_TA_tex_txt[]; +extern unsigned char mus_5_eye3_TA_tex_txt[]; +extern unsigned char mus_5_eye4_TA_tex_txt[]; +extern unsigned char mus_5_eye5_TA_tex_txt[]; +extern unsigned char mus_5_eye6_TA_tex_txt[]; +extern unsigned char mus_5_eye7_TA_tex_txt[]; +extern unsigned char mus_5_eye8_TA_tex_txt[]; +extern unsigned char mus_5_mouth1_TA_tex_txt[]; +extern unsigned char mus_5_mouth2_TA_tex_txt[]; +extern unsigned char mus_5_mouth3_TA_tex_txt[]; +extern unsigned char mus_5_mouth4_TA_tex_txt[]; +extern unsigned char mus_5_mouth5_TA_tex_txt[]; +extern unsigned char mus_5_mouth6_TA_tex_txt[]; +extern unsigned char mus_5_tmem_txt[]; +extern unsigned short mus_6_pal[]; +extern unsigned char mus_6_eye1_TA_tex_txt[]; +extern unsigned char mus_6_eye2_TA_tex_txt[]; +extern unsigned char mus_6_eye3_TA_tex_txt[]; +extern unsigned char mus_6_eye4_TA_tex_txt[]; +extern unsigned char mus_6_eye5_TA_tex_txt[]; +extern unsigned char mus_6_eye6_TA_tex_txt[]; +extern unsigned char mus_6_eye7_TA_tex_txt[]; +extern unsigned char mus_6_eye8_TA_tex_txt[]; +extern unsigned char mus_6_mouth1_TA_tex_txt[]; +extern unsigned char mus_6_mouth2_TA_tex_txt[]; +extern unsigned char mus_6_mouth3_TA_tex_txt[]; +extern unsigned char mus_6_mouth4_TA_tex_txt[]; +extern unsigned char mus_6_mouth5_TA_tex_txt[]; +extern unsigned char mus_6_mouth6_TA_tex_txt[]; +extern unsigned char mus_6_tmem_txt[]; +extern unsigned short mus_7_pal[]; +extern unsigned char mus_7_eye1_TA_tex_txt[]; +extern unsigned char mus_7_eye2_TA_tex_txt[]; +extern unsigned char mus_7_eye3_TA_tex_txt[]; +extern unsigned char mus_7_eye4_TA_tex_txt[]; +extern unsigned char mus_7_eye5_TA_tex_txt[]; +extern unsigned char mus_7_eye6_TA_tex_txt[]; +extern unsigned char mus_7_eye7_TA_tex_txt[]; +extern unsigned char mus_7_eye8_TA_tex_txt[]; +extern unsigned char mus_7_mouth1_TA_tex_txt[]; +extern unsigned char mus_7_mouth2_TA_tex_txt[]; +extern unsigned char mus_7_mouth3_TA_tex_txt[]; +extern unsigned char mus_7_mouth4_TA_tex_txt[]; +extern unsigned char mus_7_mouth5_TA_tex_txt[]; +extern unsigned char mus_7_mouth6_TA_tex_txt[]; +extern unsigned char mus_7_tmem_txt[]; +extern unsigned short mus_8_pal[]; +extern unsigned char mus_8_eye1_TA_tex_txt[]; +extern unsigned char mus_8_eye2_TA_tex_txt[]; +extern unsigned char mus_8_eye3_TA_tex_txt[]; +extern unsigned char mus_8_eye4_TA_tex_txt[]; +extern unsigned char mus_8_eye5_TA_tex_txt[]; +extern unsigned char mus_8_eye6_TA_tex_txt[]; +extern unsigned char mus_8_eye7_TA_tex_txt[]; +extern unsigned char mus_8_eye8_TA_tex_txt[]; +extern unsigned char mus_8_mouth1_TA_tex_txt[]; +extern unsigned char mus_8_mouth2_TA_tex_txt[]; +extern unsigned char mus_8_mouth3_TA_tex_txt[]; +extern unsigned char mus_8_mouth4_TA_tex_txt[]; +extern unsigned char mus_8_mouth5_TA_tex_txt[]; +extern unsigned char mus_8_mouth6_TA_tex_txt[]; +extern unsigned char mus_8_tmem_txt[]; +extern unsigned short mus_9_pal[]; +extern unsigned char mus_9_eye1_TA_tex_txt[]; +extern unsigned char mus_9_eye2_TA_tex_txt[]; +extern unsigned char mus_9_eye3_TA_tex_txt[]; +extern unsigned char mus_9_eye4_TA_tex_txt[]; +extern unsigned char mus_9_eye5_TA_tex_txt[]; +extern unsigned char mus_9_eye6_TA_tex_txt[]; +extern unsigned char mus_9_eye7_TA_tex_txt[]; +extern unsigned char mus_9_eye8_TA_tex_txt[]; +extern unsigned char mus_9_mouth1_TA_tex_txt[]; +extern unsigned char mus_9_mouth2_TA_tex_txt[]; +extern unsigned char mus_9_mouth3_TA_tex_txt[]; +extern unsigned char mus_9_mouth4_TA_tex_txt[]; +extern unsigned char mus_9_mouth5_TA_tex_txt[]; +extern unsigned char mus_9_mouth6_TA_tex_txt[]; +extern unsigned char mus_9_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_oct_1; +extern unsigned short oct_1_pal[]; +extern unsigned char oct_1_eye1_TA_tex_txt[]; +extern unsigned char oct_1_eye2_TA_tex_txt[]; +extern unsigned char oct_1_eye3_TA_tex_txt[]; +extern unsigned char oct_1_eye4_TA_tex_txt[]; +extern unsigned char oct_1_eye5_TA_tex_txt[]; +extern unsigned char oct_1_eye6_TA_tex_txt[]; +extern unsigned char oct_1_eye7_TA_tex_txt[]; +extern unsigned char oct_1_eye8_TA_tex_txt[]; +extern unsigned char oct_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_ost_1; +extern unsigned short ost_1_pal[]; +extern unsigned char ost_1_eye1_TA_tex_txt[]; +extern unsigned char ost_1_eye2_TA_tex_txt[]; +extern unsigned char ost_1_eye3_TA_tex_txt[]; +extern unsigned char ost_1_eye4_TA_tex_txt[]; +extern unsigned char ost_1_eye5_TA_tex_txt[]; +extern unsigned char ost_1_eye6_TA_tex_txt[]; +extern unsigned char ost_1_eye7_TA_tex_txt[]; +extern unsigned char ost_1_eye8_TA_tex_txt[]; +extern unsigned char ost_1_tmem_txt[]; +extern unsigned short ost_2_pal[]; +extern unsigned char ost_2_eye1_TA_tex_txt[]; +extern unsigned char ost_2_eye2_TA_tex_txt[]; +extern unsigned char ost_2_eye3_TA_tex_txt[]; +extern unsigned char ost_2_eye4_TA_tex_txt[]; +extern unsigned char ost_2_eye5_TA_tex_txt[]; +extern unsigned char ost_2_eye6_TA_tex_txt[]; +extern unsigned char ost_2_eye7_TA_tex_txt[]; +extern unsigned char ost_2_eye8_TA_tex_txt[]; +extern unsigned char ost_2_tmem_txt[]; +extern unsigned short ost_3_pal[]; +extern unsigned char ost_3_eye1_TA_tex_txt[]; +extern unsigned char ost_3_eye2_TA_tex_txt[]; +extern unsigned char ost_3_eye3_TA_tex_txt[]; +extern unsigned char ost_3_eye4_TA_tex_txt[]; +extern unsigned char ost_3_eye5_TA_tex_txt[]; +extern unsigned char ost_3_eye6_TA_tex_txt[]; +extern unsigned char ost_3_eye7_TA_tex_txt[]; +extern unsigned char ost_3_eye8_TA_tex_txt[]; +extern unsigned char ost_3_tmem_txt[]; +extern unsigned short ost_4_pal[]; +extern unsigned char ost_4_eye1_TA_tex_txt[]; +extern unsigned char ost_4_eye2_TA_tex_txt[]; +extern unsigned char ost_4_eye3_TA_tex_txt[]; +extern unsigned char ost_4_eye4_TA_tex_txt[]; +extern unsigned char ost_4_eye5_TA_tex_txt[]; +extern unsigned char ost_4_eye6_TA_tex_txt[]; +extern unsigned char ost_4_eye7_TA_tex_txt[]; +extern unsigned char ost_4_eye8_TA_tex_txt[]; +extern unsigned char ost_4_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_pbr_1; +extern unsigned short pbr_1_pal[]; +extern unsigned char pbr_1_eye1_TA_tex_txt[]; +extern unsigned char pbr_1_eye2_TA_tex_txt[]; +extern unsigned char pbr_1_eye3_TA_tex_txt[]; +extern unsigned char pbr_1_eye4_TA_tex_txt[]; +extern unsigned char pbr_1_eye5_TA_tex_txt[]; +extern unsigned char pbr_1_eye6_TA_tex_txt[]; +extern unsigned char pbr_1_eye7_TA_tex_txt[]; +extern unsigned char pbr_1_eye8_TA_tex_txt[]; +extern unsigned char pbr_1_tmem_txt[]; +extern unsigned short pbr_2_pal[]; +extern unsigned char pbr_2_eye1_TA_tex_txt[]; +extern unsigned char pbr_2_eye2_TA_tex_txt[]; +extern unsigned char pbr_2_eye3_TA_tex_txt[]; +extern unsigned char pbr_2_eye4_TA_tex_txt[]; +extern unsigned char pbr_2_eye5_TA_tex_txt[]; +extern unsigned char pbr_2_eye6_TA_tex_txt[]; +extern unsigned char pbr_2_eye7_TA_tex_txt[]; +extern unsigned char pbr_2_eye8_TA_tex_txt[]; +extern unsigned char pbr_2_tmem_txt[]; +extern unsigned short pbr_3_pal[]; +extern unsigned char pbr_3_eye1_TA_tex_txt[]; +extern unsigned char pbr_3_eye2_TA_tex_txt[]; +extern unsigned char pbr_3_eye3_TA_tex_txt[]; +extern unsigned char pbr_3_eye4_TA_tex_txt[]; +extern unsigned char pbr_3_eye5_TA_tex_txt[]; +extern unsigned char pbr_3_eye6_TA_tex_txt[]; +extern unsigned char pbr_3_eye7_TA_tex_txt[]; +extern unsigned char pbr_3_eye8_TA_tex_txt[]; +extern unsigned char pbr_3_tmem_txt[]; +extern unsigned short pbr_4_pal[]; +extern unsigned char pbr_4_eye1_TA_tex_txt[]; +extern unsigned char pbr_4_eye2_TA_tex_txt[]; +extern unsigned char pbr_4_eye3_TA_tex_txt[]; +extern unsigned char pbr_4_eye4_TA_tex_txt[]; +extern unsigned char pbr_4_eye5_TA_tex_txt[]; +extern unsigned char pbr_4_eye6_TA_tex_txt[]; +extern unsigned char pbr_4_eye7_TA_tex_txt[]; +extern unsigned char pbr_4_eye8_TA_tex_txt[]; +extern unsigned char pbr_4_tmem_txt[]; +extern unsigned short pbr_5_pal[]; +extern unsigned char pbr_5_eye1_TA_tex_txt[]; +extern unsigned char pbr_5_eye2_TA_tex_txt[]; +extern unsigned char pbr_5_eye3_TA_tex_txt[]; +extern unsigned char pbr_5_eye4_TA_tex_txt[]; +extern unsigned char pbr_5_eye5_TA_tex_txt[]; +extern unsigned char pbr_5_eye6_TA_tex_txt[]; +extern unsigned char pbr_5_eye7_TA_tex_txt[]; +extern unsigned char pbr_5_eye8_TA_tex_txt[]; +extern unsigned char pbr_5_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_pgn_1; +extern unsigned short pgn_1_pal[]; +extern unsigned char pgn_1_eye1_TA_tex_txt[]; +extern unsigned char pgn_1_eye2_TA_tex_txt[]; +extern unsigned char pgn_1_eye3_TA_tex_txt[]; +extern unsigned char pgn_1_eye4_TA_tex_txt[]; +extern unsigned char pgn_1_eye5_TA_tex_txt[]; +extern unsigned char pgn_1_eye6_TA_tex_txt[]; +extern unsigned char pgn_1_eye7_TA_tex_txt[]; +extern unsigned char pgn_1_eye8_TA_tex_txt[]; +extern unsigned char pgn_1_tmem_txt[]; +extern unsigned short pgn_2_pal[]; +extern unsigned char pgn_2_eye1_TA_tex_txt[]; +extern unsigned char pgn_2_eye2_TA_tex_txt[]; +extern unsigned char pgn_2_eye3_TA_tex_txt[]; +extern unsigned char pgn_2_eye4_TA_tex_txt[]; +extern unsigned char pgn_2_eye5_TA_tex_txt[]; +extern unsigned char pgn_2_eye6_TA_tex_txt[]; +extern unsigned char pgn_2_eye7_TA_tex_txt[]; +extern unsigned char pgn_2_eye8_TA_tex_txt[]; +extern unsigned char pgn_2_tmem_txt[]; +extern unsigned short pgn_3_pal[]; +extern unsigned char pgn_3_eye1_TA_tex_txt[]; +extern unsigned char pgn_3_eye2_TA_tex_txt[]; +extern unsigned char pgn_3_eye3_TA_tex_txt[]; +extern unsigned char pgn_3_eye4_TA_tex_txt[]; +extern unsigned char pgn_3_eye5_TA_tex_txt[]; +extern unsigned char pgn_3_eye6_TA_tex_txt[]; +extern unsigned char pgn_3_eye7_TA_tex_txt[]; +extern unsigned char pgn_3_eye8_TA_tex_txt[]; +extern unsigned char pgn_3_tmem_txt[]; +extern unsigned short pgn_4_pal[]; +extern unsigned char pgn_4_eye1_TA_tex_txt[]; +extern unsigned char pgn_4_eye2_TA_tex_txt[]; +extern unsigned char pgn_4_eye3_TA_tex_txt[]; +extern unsigned char pgn_4_eye4_TA_tex_txt[]; +extern unsigned char pgn_4_eye5_TA_tex_txt[]; +extern unsigned char pgn_4_eye6_TA_tex_txt[]; +extern unsigned char pgn_4_eye7_TA_tex_txt[]; +extern unsigned char pgn_4_eye8_TA_tex_txt[]; +extern unsigned char pgn_4_tmem_txt[]; +extern unsigned short pgn_5_pal[]; +extern unsigned char pgn_5_eye1_TA_tex_txt[]; +extern unsigned char pgn_5_eye2_TA_tex_txt[]; +extern unsigned char pgn_5_eye3_TA_tex_txt[]; +extern unsigned char pgn_5_eye4_TA_tex_txt[]; +extern unsigned char pgn_5_eye5_TA_tex_txt[]; +extern unsigned char pgn_5_eye6_TA_tex_txt[]; +extern unsigned char pgn_5_eye7_TA_tex_txt[]; +extern unsigned char pgn_5_eye8_TA_tex_txt[]; +extern unsigned char pgn_5_tmem_txt[]; +extern unsigned short pgn_6_pal[]; +extern unsigned char pgn_6_eye1_TA_tex_txt[]; +extern unsigned char pgn_6_eye2_TA_tex_txt[]; +extern unsigned char pgn_6_eye3_TA_tex_txt[]; +extern unsigned char pgn_6_eye4_TA_tex_txt[]; +extern unsigned char pgn_6_eye5_TA_tex_txt[]; +extern unsigned char pgn_6_eye6_TA_tex_txt[]; +extern unsigned char pgn_6_eye7_TA_tex_txt[]; +extern unsigned char pgn_6_eye8_TA_tex_txt[]; +extern unsigned char pgn_6_tmem_txt[]; +extern unsigned short pgn_7_pal[]; +extern unsigned char pgn_7_eye1_TA_tex_txt[]; +extern unsigned char pgn_7_eye2_TA_tex_txt[]; +extern unsigned char pgn_7_eye3_TA_tex_txt[]; +extern unsigned char pgn_7_eye4_TA_tex_txt[]; +extern unsigned char pgn_7_eye5_TA_tex_txt[]; +extern unsigned char pgn_7_eye6_TA_tex_txt[]; +extern unsigned char pgn_7_eye7_TA_tex_txt[]; +extern unsigned char pgn_7_eye8_TA_tex_txt[]; +extern unsigned char pgn_7_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_pig_1; +extern unsigned short pig_1_pal[]; +extern unsigned char pig_1_eye1_TA_tex_txt[]; +extern unsigned char pig_1_eye2_TA_tex_txt[]; +extern unsigned char pig_1_eye3_TA_tex_txt[]; +extern unsigned char pig_1_eye4_TA_tex_txt[]; +extern unsigned char pig_1_eye5_TA_tex_txt[]; +extern unsigned char pig_1_eye6_TA_tex_txt[]; +extern unsigned char pig_1_eye7_TA_tex_txt[]; +extern unsigned char pig_1_eye8_TA_tex_txt[]; +extern unsigned char pig_1_mouth1_TA_tex_txt[]; +extern unsigned char pig_1_mouth2_TA_tex_txt[]; +extern unsigned char pig_1_mouth3_TA_tex_txt[]; +extern unsigned char pig_1_mouth4_TA_tex_txt[]; +extern unsigned char pig_1_mouth5_TA_tex_txt[]; +extern unsigned char pig_1_mouth6_TA_tex_txt[]; +extern unsigned char pig_1_tmem_txt[]; +extern unsigned short pig_2_pal[]; +extern unsigned char pig_2_eye1_TA_tex_txt[]; +extern unsigned char pig_2_eye2_TA_tex_txt[]; +extern unsigned char pig_2_eye3_TA_tex_txt[]; +extern unsigned char pig_2_eye4_TA_tex_txt[]; +extern unsigned char pig_2_eye5_TA_tex_txt[]; +extern unsigned char pig_2_eye6_TA_tex_txt[]; +extern unsigned char pig_2_eye7_TA_tex_txt[]; +extern unsigned char pig_2_eye8_TA_tex_txt[]; +extern unsigned char pig_2_mouth1_TA_tex_txt[]; +extern unsigned char pig_2_mouth2_TA_tex_txt[]; +extern unsigned char pig_2_mouth3_TA_tex_txt[]; +extern unsigned char pig_2_mouth4_TA_tex_txt[]; +extern unsigned char pig_2_mouth5_TA_tex_txt[]; +extern unsigned char pig_2_mouth6_TA_tex_txt[]; +extern unsigned char pig_2_tmem_txt[]; +extern unsigned short pig_3_pal[]; +extern unsigned char pig_3_eye1_TA_tex_txt[]; +extern unsigned char pig_3_eye2_TA_tex_txt[]; +extern unsigned char pig_3_eye3_TA_tex_txt[]; +extern unsigned char pig_3_eye4_TA_tex_txt[]; +extern unsigned char pig_3_eye5_TA_tex_txt[]; +extern unsigned char pig_3_eye6_TA_tex_txt[]; +extern unsigned char pig_3_eye7_TA_tex_txt[]; +extern unsigned char pig_3_eye8_TA_tex_txt[]; +extern unsigned char pig_3_mouth1_TA_tex_txt[]; +extern unsigned char pig_3_mouth2_TA_tex_txt[]; +extern unsigned char pig_3_mouth3_TA_tex_txt[]; +extern unsigned char pig_3_mouth4_TA_tex_txt[]; +extern unsigned char pig_3_mouth5_TA_tex_txt[]; +extern unsigned char pig_3_mouth6_TA_tex_txt[]; +extern unsigned char pig_3_tmem_txt[]; +extern unsigned short pig_4_pal[]; +extern unsigned char pig_4_eye1_TA_tex_txt[]; +extern unsigned char pig_4_eye2_TA_tex_txt[]; +extern unsigned char pig_4_eye3_TA_tex_txt[]; +extern unsigned char pig_4_eye4_TA_tex_txt[]; +extern unsigned char pig_4_eye5_TA_tex_txt[]; +extern unsigned char pig_4_eye6_TA_tex_txt[]; +extern unsigned char pig_4_eye7_TA_tex_txt[]; +extern unsigned char pig_4_eye8_TA_tex_txt[]; +extern unsigned char pig_4_mouth1_TA_tex_txt[]; +extern unsigned char pig_4_mouth2_TA_tex_txt[]; +extern unsigned char pig_4_mouth3_TA_tex_txt[]; +extern unsigned char pig_4_mouth4_TA_tex_txt[]; +extern unsigned char pig_4_mouth5_TA_tex_txt[]; +extern unsigned char pig_4_mouth6_TA_tex_txt[]; +extern unsigned char pig_4_tmem_txt[]; +extern unsigned short pig_5_pal[]; +extern unsigned char pig_5_eye1_TA_tex_txt[]; +extern unsigned char pig_5_eye2_TA_tex_txt[]; +extern unsigned char pig_5_eye3_TA_tex_txt[]; +extern unsigned char pig_5_eye4_TA_tex_txt[]; +extern unsigned char pig_5_eye5_TA_tex_txt[]; +extern unsigned char pig_5_eye6_TA_tex_txt[]; +extern unsigned char pig_5_eye7_TA_tex_txt[]; +extern unsigned char pig_5_eye8_TA_tex_txt[]; +extern unsigned char pig_5_mouth1_TA_tex_txt[]; +extern unsigned char pig_5_mouth2_TA_tex_txt[]; +extern unsigned char pig_5_mouth3_TA_tex_txt[]; +extern unsigned char pig_5_mouth4_TA_tex_txt[]; +extern unsigned char pig_5_mouth5_TA_tex_txt[]; +extern unsigned char pig_5_mouth6_TA_tex_txt[]; +extern unsigned char pig_5_tmem_txt[]; +extern unsigned short pig_6_pal[]; +extern unsigned char pig_6_eye1_TA_tex_txt[]; +extern unsigned char pig_6_eye2_TA_tex_txt[]; +extern unsigned char pig_6_eye3_TA_tex_txt[]; +extern unsigned char pig_6_eye4_TA_tex_txt[]; +extern unsigned char pig_6_eye5_TA_tex_txt[]; +extern unsigned char pig_6_eye6_TA_tex_txt[]; +extern unsigned char pig_6_eye7_TA_tex_txt[]; +extern unsigned char pig_6_eye8_TA_tex_txt[]; +extern unsigned char pig_6_mouth1_TA_tex_txt[]; +extern unsigned char pig_6_mouth2_TA_tex_txt[]; +extern unsigned char pig_6_mouth3_TA_tex_txt[]; +extern unsigned char pig_6_mouth4_TA_tex_txt[]; +extern unsigned char pig_6_mouth5_TA_tex_txt[]; +extern unsigned char pig_6_mouth6_TA_tex_txt[]; +extern unsigned char pig_6_tmem_txt[]; +extern unsigned short pig_7_pal[]; +extern unsigned char pig_7_eye1_TA_tex_txt[]; +extern unsigned char pig_7_eye2_TA_tex_txt[]; +extern unsigned char pig_7_eye3_TA_tex_txt[]; +extern unsigned char pig_7_eye4_TA_tex_txt[]; +extern unsigned char pig_7_eye5_TA_tex_txt[]; +extern unsigned char pig_7_eye6_TA_tex_txt[]; +extern unsigned char pig_7_eye7_TA_tex_txt[]; +extern unsigned char pig_7_eye8_TA_tex_txt[]; +extern unsigned char pig_7_mouth1_TA_tex_txt[]; +extern unsigned char pig_7_mouth2_TA_tex_txt[]; +extern unsigned char pig_7_mouth3_TA_tex_txt[]; +extern unsigned char pig_7_mouth4_TA_tex_txt[]; +extern unsigned char pig_7_mouth5_TA_tex_txt[]; +extern unsigned char pig_7_mouth6_TA_tex_txt[]; +extern unsigned char pig_7_tmem_txt[]; +extern unsigned short pig_8_pal[]; +extern unsigned char pig_8_eye1_TA_tex_txt[]; +extern unsigned char pig_8_eye2_TA_tex_txt[]; +extern unsigned char pig_8_eye3_TA_tex_txt[]; +extern unsigned char pig_8_eye4_TA_tex_txt[]; +extern unsigned char pig_8_eye5_TA_tex_txt[]; +extern unsigned char pig_8_eye6_TA_tex_txt[]; +extern unsigned char pig_8_eye7_TA_tex_txt[]; +extern unsigned char pig_8_eye8_TA_tex_txt[]; +extern unsigned char pig_8_mouth1_TA_tex_txt[]; +extern unsigned char pig_8_mouth2_TA_tex_txt[]; +extern unsigned char pig_8_mouth3_TA_tex_txt[]; +extern unsigned char pig_8_mouth4_TA_tex_txt[]; +extern unsigned char pig_8_mouth5_TA_tex_txt[]; +extern unsigned char pig_8_mouth6_TA_tex_txt[]; +extern unsigned char pig_8_tmem_txt[]; +extern unsigned short pig_9_pal[]; +extern unsigned char pig_9_eye1_TA_tex_txt[]; +extern unsigned char pig_9_eye2_TA_tex_txt[]; +extern unsigned char pig_9_eye3_TA_tex_txt[]; +extern unsigned char pig_9_eye4_TA_tex_txt[]; +extern unsigned char pig_9_eye5_TA_tex_txt[]; +extern unsigned char pig_9_eye6_TA_tex_txt[]; +extern unsigned char pig_9_eye7_TA_tex_txt[]; +extern unsigned char pig_9_eye8_TA_tex_txt[]; +extern unsigned char pig_9_mouth1_TA_tex_txt[]; +extern unsigned char pig_9_mouth2_TA_tex_txt[]; +extern unsigned char pig_9_mouth3_TA_tex_txt[]; +extern unsigned char pig_9_mouth4_TA_tex_txt[]; +extern unsigned char pig_9_mouth5_TA_tex_txt[]; +extern unsigned char pig_9_mouth6_TA_tex_txt[]; +extern unsigned char pig_9_tmem_txt[]; +extern unsigned short pig_10_pal[]; +extern unsigned char pig_10_eye1_TA_tex_txt[]; +extern unsigned char pig_10_eye2_TA_tex_txt[]; +extern unsigned char pig_10_eye3_TA_tex_txt[]; +extern unsigned char pig_10_eye4_TA_tex_txt[]; +extern unsigned char pig_10_eye5_TA_tex_txt[]; +extern unsigned char pig_10_eye6_TA_tex_txt[]; +extern unsigned char pig_10_eye7_TA_tex_txt[]; +extern unsigned char pig_10_eye8_TA_tex_txt[]; +extern unsigned char pig_10_mouth1_TA_tex_txt[]; +extern unsigned char pig_10_mouth2_TA_tex_txt[]; +extern unsigned char pig_10_mouth3_TA_tex_txt[]; +extern unsigned char pig_10_mouth4_TA_tex_txt[]; +extern unsigned char pig_10_mouth5_TA_tex_txt[]; +extern unsigned char pig_10_mouth6_TA_tex_txt[]; +extern unsigned char pig_10_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_rbt_1; +extern unsigned short rbt_1_pal[]; +extern unsigned char rbt_1_eye1_TA_tex_txt[]; +extern unsigned char rbt_1_eye2_TA_tex_txt[]; +extern unsigned char rbt_1_eye3_TA_tex_txt[]; +extern unsigned char rbt_1_eye4_TA_tex_txt[]; +extern unsigned char rbt_1_eye5_TA_tex_txt[]; +extern unsigned char rbt_1_eye6_TA_tex_txt[]; +extern unsigned char rbt_1_eye7_TA_tex_txt[]; +extern unsigned char rbt_1_eye8_TA_tex_txt[]; +extern unsigned char rbt_1_mouth1_TA_tex_txt[]; +extern unsigned char rbt_1_mouth2_TA_tex_txt[]; +extern unsigned char rbt_1_mouth3_TA_tex_txt[]; +extern unsigned char rbt_1_mouth4_TA_tex_txt[]; +extern unsigned char rbt_1_mouth5_TA_tex_txt[]; +extern unsigned char rbt_1_mouth6_TA_tex_txt[]; +extern unsigned char rbt_1_tmem_txt[]; +extern unsigned short rbt_2_pal[]; +extern unsigned char rbt_2_eye1_TA_tex_txt[]; +extern unsigned char rbt_2_eye2_TA_tex_txt[]; +extern unsigned char rbt_2_eye3_TA_tex_txt[]; +extern unsigned char rbt_2_eye4_TA_tex_txt[]; +extern unsigned char rbt_2_eye5_TA_tex_txt[]; +extern unsigned char rbt_2_eye6_TA_tex_txt[]; +extern unsigned char rbt_2_eye7_TA_tex_txt[]; +extern unsigned char rbt_2_eye8_TA_tex_txt[]; +extern unsigned char rbt_2_mouth1_TA_tex_txt[]; +extern unsigned char rbt_2_mouth2_TA_tex_txt[]; +extern unsigned char rbt_2_mouth3_TA_tex_txt[]; +extern unsigned char rbt_2_mouth4_TA_tex_txt[]; +extern unsigned char rbt_2_mouth5_TA_tex_txt[]; +extern unsigned char rbt_2_mouth6_TA_tex_txt[]; +extern unsigned char rbt_2_tmem_txt[]; +extern unsigned short rbt_3_pal[]; +extern unsigned char rbt_3_eye1_TA_tex_txt[]; +extern unsigned char rbt_3_eye2_TA_tex_txt[]; +extern unsigned char rbt_3_eye3_TA_tex_txt[]; +extern unsigned char rbt_3_eye4_TA_tex_txt[]; +extern unsigned char rbt_3_eye5_TA_tex_txt[]; +extern unsigned char rbt_3_eye6_TA_tex_txt[]; +extern unsigned char rbt_3_eye7_TA_tex_txt[]; +extern unsigned char rbt_3_eye8_TA_tex_txt[]; +extern unsigned char rbt_3_mouth1_TA_tex_txt[]; +extern unsigned char rbt_3_mouth2_TA_tex_txt[]; +extern unsigned char rbt_3_mouth3_TA_tex_txt[]; +extern unsigned char rbt_3_mouth4_TA_tex_txt[]; +extern unsigned char rbt_3_mouth5_TA_tex_txt[]; +extern unsigned char rbt_3_mouth6_TA_tex_txt[]; +extern unsigned char rbt_3_tmem_txt[]; +extern unsigned short rbt_4_pal[]; +extern unsigned char rbt_4_eye1_TA_tex_txt[]; +extern unsigned char rbt_4_eye2_TA_tex_txt[]; +extern unsigned char rbt_4_eye3_TA_tex_txt[]; +extern unsigned char rbt_4_eye4_TA_tex_txt[]; +extern unsigned char rbt_4_eye5_TA_tex_txt[]; +extern unsigned char rbt_4_eye6_TA_tex_txt[]; +extern unsigned char rbt_4_eye7_TA_tex_txt[]; +extern unsigned char rbt_4_eye8_TA_tex_txt[]; +extern unsigned char rbt_4_mouth1_TA_tex_txt[]; +extern unsigned char rbt_4_mouth2_TA_tex_txt[]; +extern unsigned char rbt_4_mouth3_TA_tex_txt[]; +extern unsigned char rbt_4_mouth4_TA_tex_txt[]; +extern unsigned char rbt_4_mouth5_TA_tex_txt[]; +extern unsigned char rbt_4_mouth6_TA_tex_txt[]; +extern unsigned char rbt_4_tmem_txt[]; +extern unsigned short rbt_5_pal[]; +extern unsigned char rbt_5_eye1_TA_tex_txt[]; +extern unsigned char rbt_5_eye2_TA_tex_txt[]; +extern unsigned char rbt_5_eye3_TA_tex_txt[]; +extern unsigned char rbt_5_eye4_TA_tex_txt[]; +extern unsigned char rbt_5_eye5_TA_tex_txt[]; +extern unsigned char rbt_5_eye6_TA_tex_txt[]; +extern unsigned char rbt_5_eye7_TA_tex_txt[]; +extern unsigned char rbt_5_eye8_TA_tex_txt[]; +extern unsigned char rbt_5_mouth1_TA_tex_txt[]; +extern unsigned char rbt_5_mouth2_TA_tex_txt[]; +extern unsigned char rbt_5_mouth3_TA_tex_txt[]; +extern unsigned char rbt_5_mouth4_TA_tex_txt[]; +extern unsigned char rbt_5_mouth5_TA_tex_txt[]; +extern unsigned char rbt_5_mouth6_TA_tex_txt[]; +extern unsigned char rbt_5_tmem_txt[]; +extern unsigned short rbt_6_pal[]; +extern unsigned char rbt_6_eye1_TA_tex_txt[]; +extern unsigned char rbt_6_eye2_TA_tex_txt[]; +extern unsigned char rbt_6_eye3_TA_tex_txt[]; +extern unsigned char rbt_6_eye4_TA_tex_txt[]; +extern unsigned char rbt_6_eye5_TA_tex_txt[]; +extern unsigned char rbt_6_eye6_TA_tex_txt[]; +extern unsigned char rbt_6_eye7_TA_tex_txt[]; +extern unsigned char rbt_6_eye8_TA_tex_txt[]; +extern unsigned char rbt_6_mouth1_TA_tex_txt[]; +extern unsigned char rbt_6_mouth2_TA_tex_txt[]; +extern unsigned char rbt_6_mouth3_TA_tex_txt[]; +extern unsigned char rbt_6_mouth4_TA_tex_txt[]; +extern unsigned char rbt_6_mouth5_TA_tex_txt[]; +extern unsigned char rbt_6_mouth6_TA_tex_txt[]; +extern unsigned char rbt_6_tmem_txt[]; +extern unsigned short rbt_7_pal[]; +extern unsigned char rbt_7_eye1_TA_tex_txt[]; +extern unsigned char rbt_7_eye2_TA_tex_txt[]; +extern unsigned char rbt_7_eye3_TA_tex_txt[]; +extern unsigned char rbt_7_eye4_TA_tex_txt[]; +extern unsigned char rbt_7_eye5_TA_tex_txt[]; +extern unsigned char rbt_7_eye6_TA_tex_txt[]; +extern unsigned char rbt_7_eye7_TA_tex_txt[]; +extern unsigned char rbt_7_eye8_TA_tex_txt[]; +extern unsigned char rbt_7_mouth1_TA_tex_txt[]; +extern unsigned char rbt_7_mouth2_TA_tex_txt[]; +extern unsigned char rbt_7_mouth3_TA_tex_txt[]; +extern unsigned char rbt_7_mouth4_TA_tex_txt[]; +extern unsigned char rbt_7_mouth5_TA_tex_txt[]; +extern unsigned char rbt_7_mouth6_TA_tex_txt[]; +extern unsigned char rbt_7_tmem_txt[]; +extern unsigned short rbt_8_pal[]; +extern unsigned char rbt_8_eye1_TA_tex_txt[]; +extern unsigned char rbt_8_eye2_TA_tex_txt[]; +extern unsigned char rbt_8_eye3_TA_tex_txt[]; +extern unsigned char rbt_8_eye4_TA_tex_txt[]; +extern unsigned char rbt_8_eye5_TA_tex_txt[]; +extern unsigned char rbt_8_eye6_TA_tex_txt[]; +extern unsigned char rbt_8_eye7_TA_tex_txt[]; +extern unsigned char rbt_8_eye8_TA_tex_txt[]; +extern unsigned char rbt_8_mouth1_TA_tex_txt[]; +extern unsigned char rbt_8_mouth2_TA_tex_txt[]; +extern unsigned char rbt_8_mouth3_TA_tex_txt[]; +extern unsigned char rbt_8_mouth4_TA_tex_txt[]; +extern unsigned char rbt_8_mouth5_TA_tex_txt[]; +extern unsigned char rbt_8_mouth6_TA_tex_txt[]; +extern unsigned char rbt_8_tmem_txt[]; +extern unsigned short rbt_9_pal[]; +extern unsigned char rbt_9_eye1_TA_tex_txt[]; +extern unsigned char rbt_9_eye2_TA_tex_txt[]; +extern unsigned char rbt_9_eye3_TA_tex_txt[]; +extern unsigned char rbt_9_eye4_TA_tex_txt[]; +extern unsigned char rbt_9_eye5_TA_tex_txt[]; +extern unsigned char rbt_9_eye6_TA_tex_txt[]; +extern unsigned char rbt_9_eye7_TA_tex_txt[]; +extern unsigned char rbt_9_eye8_TA_tex_txt[]; +extern unsigned char rbt_9_mouth1_TA_tex_txt[]; +extern unsigned char rbt_9_mouth2_TA_tex_txt[]; +extern unsigned char rbt_9_mouth3_TA_tex_txt[]; +extern unsigned char rbt_9_mouth4_TA_tex_txt[]; +extern unsigned char rbt_9_mouth5_TA_tex_txt[]; +extern unsigned char rbt_9_mouth6_TA_tex_txt[]; +extern unsigned char rbt_9_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_rhn_1; +extern unsigned short rhn_1_pal[]; +extern unsigned char rhn_1_eye1_TA_tex_txt[]; +extern unsigned char rhn_1_eye2_TA_tex_txt[]; +extern unsigned char rhn_1_eye3_TA_tex_txt[]; +extern unsigned char rhn_1_eye4_TA_tex_txt[]; +extern unsigned char rhn_1_eye5_TA_tex_txt[]; +extern unsigned char rhn_1_eye6_TA_tex_txt[]; +extern unsigned char rhn_1_eye7_TA_tex_txt[]; +extern unsigned char rhn_1_eye8_TA_tex_txt[]; +extern unsigned char rhn_1_mouth1_TA_tex_txt[]; +extern unsigned char rhn_1_mouth2_TA_tex_txt[]; +extern unsigned char rhn_1_mouth3_TA_tex_txt[]; +extern unsigned char rhn_1_mouth4_TA_tex_txt[]; +extern unsigned char rhn_1_mouth5_TA_tex_txt[]; +extern unsigned char rhn_1_mouth6_TA_tex_txt[]; +extern unsigned char rhn_1_tmem_txt[]; +extern unsigned short rhn_2_pal[]; +extern unsigned char rhn_2_eye1_TA_tex_txt[]; +extern unsigned char rhn_2_eye2_TA_tex_txt[]; +extern unsigned char rhn_2_eye3_TA_tex_txt[]; +extern unsigned char rhn_2_eye4_TA_tex_txt[]; +extern unsigned char rhn_2_eye5_TA_tex_txt[]; +extern unsigned char rhn_2_eye6_TA_tex_txt[]; +extern unsigned char rhn_2_eye7_TA_tex_txt[]; +extern unsigned char rhn_2_eye8_TA_tex_txt[]; +extern unsigned char rhn_2_mouth1_TA_tex_txt[]; +extern unsigned char rhn_2_mouth2_TA_tex_txt[]; +extern unsigned char rhn_2_mouth3_TA_tex_txt[]; +extern unsigned char rhn_2_mouth4_TA_tex_txt[]; +extern unsigned char rhn_2_mouth5_TA_tex_txt[]; +extern unsigned char rhn_2_mouth6_TA_tex_txt[]; +extern unsigned char rhn_2_tmem_txt[]; +extern unsigned short rhn_3_pal[]; +extern unsigned char rhn_3_eye1_TA_tex_txt[]; +extern unsigned char rhn_3_eye2_TA_tex_txt[]; +extern unsigned char rhn_3_eye3_TA_tex_txt[]; +extern unsigned char rhn_3_eye4_TA_tex_txt[]; +extern unsigned char rhn_3_eye5_TA_tex_txt[]; +extern unsigned char rhn_3_eye6_TA_tex_txt[]; +extern unsigned char rhn_3_eye7_TA_tex_txt[]; +extern unsigned char rhn_3_eye8_TA_tex_txt[]; +extern unsigned char rhn_3_mouth1_TA_tex_txt[]; +extern unsigned char rhn_3_mouth2_TA_tex_txt[]; +extern unsigned char rhn_3_mouth3_TA_tex_txt[]; +extern unsigned char rhn_3_mouth4_TA_tex_txt[]; +extern unsigned char rhn_3_mouth5_TA_tex_txt[]; +extern unsigned char rhn_3_mouth6_TA_tex_txt[]; +extern unsigned char rhn_3_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_shp_1; +extern unsigned short shp_1_pal[]; +extern unsigned char shp_1_eye1_TA_tex_txt[]; +extern unsigned char shp_1_eye2_TA_tex_txt[]; +extern unsigned char shp_1_eye3_TA_tex_txt[]; +extern unsigned char shp_1_eye4_TA_tex_txt[]; +extern unsigned char shp_1_eye5_TA_tex_txt[]; +extern unsigned char shp_1_eye6_TA_tex_txt[]; +extern unsigned char shp_1_eye7_TA_tex_txt[]; +extern unsigned char shp_1_eye8_TA_tex_txt[]; +extern unsigned char shp_1_mouth1_TA_tex_txt[]; +extern unsigned char shp_1_mouth2_TA_tex_txt[]; +extern unsigned char shp_1_mouth3_TA_tex_txt[]; +extern unsigned char shp_1_mouth4_TA_tex_txt[]; +extern unsigned char shp_1_mouth5_TA_tex_txt[]; +extern unsigned char shp_1_mouth6_TA_tex_txt[]; +extern unsigned char shp_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_squ_1; +extern unsigned short squ_1_pal[]; +extern unsigned char squ_1_eye1_TA_tex_txt[]; +extern unsigned char squ_1_eye2_TA_tex_txt[]; +extern unsigned char squ_1_eye3_TA_tex_txt[]; +extern unsigned char squ_1_eye4_TA_tex_txt[]; +extern unsigned char squ_1_eye5_TA_tex_txt[]; +extern unsigned char squ_1_eye6_TA_tex_txt[]; +extern unsigned char squ_1_eye7_TA_tex_txt[]; +extern unsigned char squ_1_eye8_TA_tex_txt[]; +extern unsigned char squ_1_mouth1_TA_tex_txt[]; +extern unsigned char squ_1_mouth2_TA_tex_txt[]; +extern unsigned char squ_1_mouth3_TA_tex_txt[]; +extern unsigned char squ_1_mouth4_TA_tex_txt[]; +extern unsigned char squ_1_mouth5_TA_tex_txt[]; +extern unsigned char squ_1_mouth6_TA_tex_txt[]; +extern unsigned char squ_1_tmem_txt[]; +extern unsigned short squ_2_pal[]; +extern unsigned char squ_2_eye1_TA_tex_txt[]; +extern unsigned char squ_2_eye2_TA_tex_txt[]; +extern unsigned char squ_2_eye3_TA_tex_txt[]; +extern unsigned char squ_2_eye4_TA_tex_txt[]; +extern unsigned char squ_2_eye5_TA_tex_txt[]; +extern unsigned char squ_2_eye6_TA_tex_txt[]; +extern unsigned char squ_2_eye7_TA_tex_txt[]; +extern unsigned char squ_2_eye8_TA_tex_txt[]; +extern unsigned char squ_2_mouth1_TA_tex_txt[]; +extern unsigned char squ_2_mouth2_TA_tex_txt[]; +extern unsigned char squ_2_mouth3_TA_tex_txt[]; +extern unsigned char squ_2_mouth4_TA_tex_txt[]; +extern unsigned char squ_2_mouth5_TA_tex_txt[]; +extern unsigned char squ_2_mouth6_TA_tex_txt[]; +extern unsigned char squ_2_tmem_txt[]; +extern unsigned short squ_3_pal[]; +extern unsigned char squ_3_eye1_TA_tex_txt[]; +extern unsigned char squ_3_eye2_TA_tex_txt[]; +extern unsigned char squ_3_eye3_TA_tex_txt[]; +extern unsigned char squ_3_eye4_TA_tex_txt[]; +extern unsigned char squ_3_eye5_TA_tex_txt[]; +extern unsigned char squ_3_eye6_TA_tex_txt[]; +extern unsigned char squ_3_eye7_TA_tex_txt[]; +extern unsigned char squ_3_eye8_TA_tex_txt[]; +extern unsigned char squ_3_mouth1_TA_tex_txt[]; +extern unsigned char squ_3_mouth2_TA_tex_txt[]; +extern unsigned char squ_3_mouth3_TA_tex_txt[]; +extern unsigned char squ_3_mouth4_TA_tex_txt[]; +extern unsigned char squ_3_mouth5_TA_tex_txt[]; +extern unsigned char squ_3_mouth6_TA_tex_txt[]; +extern unsigned char squ_3_tmem_txt[]; +extern unsigned short squ_4_pal[]; +extern unsigned char squ_4_eye1_TA_tex_txt[]; +extern unsigned char squ_4_eye2_TA_tex_txt[]; +extern unsigned char squ_4_eye3_TA_tex_txt[]; +extern unsigned char squ_4_eye4_TA_tex_txt[]; +extern unsigned char squ_4_eye5_TA_tex_txt[]; +extern unsigned char squ_4_eye6_TA_tex_txt[]; +extern unsigned char squ_4_eye7_TA_tex_txt[]; +extern unsigned char squ_4_eye8_TA_tex_txt[]; +extern unsigned char squ_4_mouth1_TA_tex_txt[]; +extern unsigned char squ_4_mouth2_TA_tex_txt[]; +extern unsigned char squ_4_mouth3_TA_tex_txt[]; +extern unsigned char squ_4_mouth4_TA_tex_txt[]; +extern unsigned char squ_4_mouth5_TA_tex_txt[]; +extern unsigned char squ_4_mouth6_TA_tex_txt[]; +extern unsigned char squ_4_tmem_txt[]; +extern unsigned short squ_5_pal[]; +extern unsigned char squ_5_eye1_TA_tex_txt[]; +extern unsigned char squ_5_eye2_TA_tex_txt[]; +extern unsigned char squ_5_eye3_TA_tex_txt[]; +extern unsigned char squ_5_eye4_TA_tex_txt[]; +extern unsigned char squ_5_eye5_TA_tex_txt[]; +extern unsigned char squ_5_eye6_TA_tex_txt[]; +extern unsigned char squ_5_eye7_TA_tex_txt[]; +extern unsigned char squ_5_eye8_TA_tex_txt[]; +extern unsigned char squ_5_mouth1_TA_tex_txt[]; +extern unsigned char squ_5_mouth2_TA_tex_txt[]; +extern unsigned char squ_5_mouth3_TA_tex_txt[]; +extern unsigned char squ_5_mouth4_TA_tex_txt[]; +extern unsigned char squ_5_mouth5_TA_tex_txt[]; +extern unsigned char squ_5_mouth6_TA_tex_txt[]; +extern unsigned char squ_5_tmem_txt[]; +extern unsigned short squ_6_pal[]; +extern unsigned char squ_6_eye1_TA_tex_txt[]; +extern unsigned char squ_6_eye2_TA_tex_txt[]; +extern unsigned char squ_6_eye3_TA_tex_txt[]; +extern unsigned char squ_6_eye4_TA_tex_txt[]; +extern unsigned char squ_6_eye5_TA_tex_txt[]; +extern unsigned char squ_6_eye6_TA_tex_txt[]; +extern unsigned char squ_6_eye7_TA_tex_txt[]; +extern unsigned char squ_6_eye8_TA_tex_txt[]; +extern unsigned char squ_6_mouth1_TA_tex_txt[]; +extern unsigned char squ_6_mouth2_TA_tex_txt[]; +extern unsigned char squ_6_mouth3_TA_tex_txt[]; +extern unsigned char squ_6_mouth4_TA_tex_txt[]; +extern unsigned char squ_6_mouth5_TA_tex_txt[]; +extern unsigned char squ_6_mouth6_TA_tex_txt[]; +extern unsigned char squ_6_tmem_txt[]; +extern unsigned short squ_7_pal[]; +extern unsigned char squ_7_eye1_TA_tex_txt[]; +extern unsigned char squ_7_eye2_TA_tex_txt[]; +extern unsigned char squ_7_eye3_TA_tex_txt[]; +extern unsigned char squ_7_eye4_TA_tex_txt[]; +extern unsigned char squ_7_eye5_TA_tex_txt[]; +extern unsigned char squ_7_eye6_TA_tex_txt[]; +extern unsigned char squ_7_eye7_TA_tex_txt[]; +extern unsigned char squ_7_eye8_TA_tex_txt[]; +extern unsigned char squ_7_mouth1_TA_tex_txt[]; +extern unsigned char squ_7_mouth2_TA_tex_txt[]; +extern unsigned char squ_7_mouth3_TA_tex_txt[]; +extern unsigned char squ_7_mouth4_TA_tex_txt[]; +extern unsigned char squ_7_mouth5_TA_tex_txt[]; +extern unsigned char squ_7_mouth6_TA_tex_txt[]; +extern unsigned char squ_7_tmem_txt[]; +extern unsigned short squ_8_pal[]; +extern unsigned char squ_8_eye1_TA_tex_txt[]; +extern unsigned char squ_8_eye2_TA_tex_txt[]; +extern unsigned char squ_8_eye3_TA_tex_txt[]; +extern unsigned char squ_8_eye4_TA_tex_txt[]; +extern unsigned char squ_8_eye5_TA_tex_txt[]; +extern unsigned char squ_8_eye6_TA_tex_txt[]; +extern unsigned char squ_8_eye7_TA_tex_txt[]; +extern unsigned char squ_8_eye8_TA_tex_txt[]; +extern unsigned char squ_8_mouth1_TA_tex_txt[]; +extern unsigned char squ_8_mouth2_TA_tex_txt[]; +extern unsigned char squ_8_mouth3_TA_tex_txt[]; +extern unsigned char squ_8_mouth4_TA_tex_txt[]; +extern unsigned char squ_8_mouth5_TA_tex_txt[]; +extern unsigned char squ_8_mouth6_TA_tex_txt[]; +extern unsigned char squ_8_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_tig_1; +extern unsigned short tig_1_pal[]; +extern unsigned char tig_1_eye1_TA_tex_txt[]; +extern unsigned char tig_1_eye2_TA_tex_txt[]; +extern unsigned char tig_1_eye3_TA_tex_txt[]; +extern unsigned char tig_1_eye4_TA_tex_txt[]; +extern unsigned char tig_1_eye5_TA_tex_txt[]; +extern unsigned char tig_1_eye6_TA_tex_txt[]; +extern unsigned char tig_1_eye7_TA_tex_txt[]; +extern unsigned char tig_1_eye8_TA_tex_txt[]; +extern unsigned char tig_1_tmem_txt[]; +extern unsigned short tig_2_pal[]; +extern unsigned char tig_2_eye1_TA_tex_txt[]; +extern unsigned char tig_2_eye2_TA_tex_txt[]; +extern unsigned char tig_2_eye3_TA_tex_txt[]; +extern unsigned char tig_2_eye4_TA_tex_txt[]; +extern unsigned char tig_2_eye5_TA_tex_txt[]; +extern unsigned char tig_2_eye6_TA_tex_txt[]; +extern unsigned char tig_2_eye7_TA_tex_txt[]; +extern unsigned char tig_2_eye8_TA_tex_txt[]; +extern unsigned char tig_2_tmem_txt[]; +extern unsigned short tig_3_pal[]; +extern unsigned char tig_3_eye1_TA_tex_txt[]; +extern unsigned char tig_3_eye2_TA_tex_txt[]; +extern unsigned char tig_3_eye3_TA_tex_txt[]; +extern unsigned char tig_3_eye4_TA_tex_txt[]; +extern unsigned char tig_3_eye5_TA_tex_txt[]; +extern unsigned char tig_3_eye6_TA_tex_txt[]; +extern unsigned char tig_3_eye7_TA_tex_txt[]; +extern unsigned char tig_3_eye8_TA_tex_txt[]; +extern unsigned char tig_3_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_wol_1; +extern unsigned short wol_1_pal[]; +extern unsigned char wol_1_eye1_TA_tex_txt[]; +extern unsigned char wol_1_eye2_TA_tex_txt[]; +extern unsigned char wol_1_eye3_TA_tex_txt[]; +extern unsigned char wol_1_eye4_TA_tex_txt[]; +extern unsigned char wol_1_eye5_TA_tex_txt[]; +extern unsigned char wol_1_eye6_TA_tex_txt[]; +extern unsigned char wol_1_eye7_TA_tex_txt[]; +extern unsigned char wol_1_eye8_TA_tex_txt[]; +extern unsigned char wol_1_tmem_txt[]; +extern unsigned short wol_2_pal[]; +extern unsigned char wol_2_eye1_TA_tex_txt[]; +extern unsigned char wol_2_eye2_TA_tex_txt[]; +extern unsigned char wol_2_eye3_TA_tex_txt[]; +extern unsigned char wol_2_eye4_TA_tex_txt[]; +extern unsigned char wol_2_eye5_TA_tex_txt[]; +extern unsigned char wol_2_eye6_TA_tex_txt[]; +extern unsigned char wol_2_eye7_TA_tex_txt[]; +extern unsigned char wol_2_eye8_TA_tex_txt[]; +extern unsigned char wol_2_tmem_txt[]; +extern unsigned short wol_3_pal[]; +extern unsigned char wol_3_eye1_TA_tex_txt[]; +extern unsigned char wol_3_eye2_TA_tex_txt[]; +extern unsigned char wol_3_eye3_TA_tex_txt[]; +extern unsigned char wol_3_eye4_TA_tex_txt[]; +extern unsigned char wol_3_eye5_TA_tex_txt[]; +extern unsigned char wol_3_eye6_TA_tex_txt[]; +extern unsigned char wol_3_eye7_TA_tex_txt[]; +extern unsigned char wol_3_eye8_TA_tex_txt[]; +extern unsigned char wol_3_tmem_txt[]; +extern unsigned short duk_7_pal[]; +extern unsigned char duk_7_eye1_TA_tex_txt[]; +extern unsigned char duk_7_eye2_TA_tex_txt[]; +extern unsigned char duk_7_eye3_TA_tex_txt[]; +extern unsigned char duk_7_eye4_TA_tex_txt[]; +extern unsigned char duk_7_eye5_TA_tex_txt[]; +extern unsigned char duk_7_eye6_TA_tex_txt[]; +extern unsigned char duk_7_eye7_TA_tex_txt[]; +extern unsigned char duk_7_eye8_TA_tex_txt[]; +extern unsigned char duk_7_mouth1_TA_tex_txt[]; +extern unsigned char duk_7_mouth2_TA_tex_txt[]; +extern unsigned char duk_7_mouth3_TA_tex_txt[]; +extern unsigned char duk_7_mouth4_TA_tex_txt[]; +extern unsigned char duk_7_mouth5_TA_tex_txt[]; +extern unsigned char duk_7_mouth6_TA_tex_txt[]; +extern unsigned char duk_7_tmem_txt[]; +extern unsigned short duk_8_pal[]; +extern unsigned char duk_8_eye1_TA_tex_txt[]; +extern unsigned char duk_8_eye2_TA_tex_txt[]; +extern unsigned char duk_8_eye3_TA_tex_txt[]; +extern unsigned char duk_8_eye4_TA_tex_txt[]; +extern unsigned char duk_8_eye5_TA_tex_txt[]; +extern unsigned char duk_8_eye6_TA_tex_txt[]; +extern unsigned char duk_8_eye7_TA_tex_txt[]; +extern unsigned char duk_8_eye8_TA_tex_txt[]; +extern unsigned char duk_8_mouth1_TA_tex_txt[]; +extern unsigned char duk_8_mouth2_TA_tex_txt[]; +extern unsigned char duk_8_mouth3_TA_tex_txt[]; +extern unsigned char duk_8_mouth4_TA_tex_txt[]; +extern unsigned char duk_8_mouth5_TA_tex_txt[]; +extern unsigned char duk_8_mouth6_TA_tex_txt[]; +extern unsigned char duk_8_tmem_txt[]; +extern unsigned short wol_4_pal[]; +extern unsigned char wol_4_eye1_TA_tex_txt[]; +extern unsigned char wol_4_eye2_TA_tex_txt[]; +extern unsigned char wol_4_eye3_TA_tex_txt[]; +extern unsigned char wol_4_eye4_TA_tex_txt[]; +extern unsigned char wol_4_eye5_TA_tex_txt[]; +extern unsigned char wol_4_eye6_TA_tex_txt[]; +extern unsigned char wol_4_eye7_TA_tex_txt[]; +extern unsigned char wol_4_eye8_TA_tex_txt[]; +extern unsigned char wol_4_tmem_txt[]; +extern unsigned short rhn_4_pal[]; +extern unsigned char rhn_4_eye1_TA_tex_txt[]; +extern unsigned char rhn_4_eye2_TA_tex_txt[]; +extern unsigned char rhn_4_eye3_TA_tex_txt[]; +extern unsigned char rhn_4_eye4_TA_tex_txt[]; +extern unsigned char rhn_4_eye5_TA_tex_txt[]; +extern unsigned char rhn_4_eye6_TA_tex_txt[]; +extern unsigned char rhn_4_eye7_TA_tex_txt[]; +extern unsigned char rhn_4_eye8_TA_tex_txt[]; +extern unsigned char rhn_4_mouth1_TA_tex_txt[]; +extern unsigned char rhn_4_mouth2_TA_tex_txt[]; +extern unsigned char rhn_4_mouth3_TA_tex_txt[]; +extern unsigned char rhn_4_mouth4_TA_tex_txt[]; +extern unsigned char rhn_4_mouth5_TA_tex_txt[]; +extern unsigned char rhn_4_mouth6_TA_tex_txt[]; +extern unsigned char rhn_4_tmem_txt[]; +extern unsigned short bul_3_pal[]; +extern unsigned char bul_3_eye1_TA_tex_txt[]; +extern unsigned char bul_3_eye2_TA_tex_txt[]; +extern unsigned char bul_3_eye3_TA_tex_txt[]; +extern unsigned char bul_3_eye4_TA_tex_txt[]; +extern unsigned char bul_3_eye5_TA_tex_txt[]; +extern unsigned char bul_3_eye6_TA_tex_txt[]; +extern unsigned char bul_3_eye7_TA_tex_txt[]; +extern unsigned char bul_3_eye8_TA_tex_txt[]; +extern unsigned char bul_3_mouth1_TA_tex_txt[]; +extern unsigned char bul_3_mouth2_TA_tex_txt[]; +extern unsigned char bul_3_mouth3_TA_tex_txt[]; +extern unsigned char bul_3_mouth4_TA_tex_txt[]; +extern unsigned char bul_3_mouth5_TA_tex_txt[]; +extern unsigned char bul_3_mouth6_TA_tex_txt[]; +extern unsigned char bul_3_tmem_txt[]; +extern unsigned short bul_4_pal[]; +extern unsigned char bul_4_eye1_TA_tex_txt[]; +extern unsigned char bul_4_eye2_TA_tex_txt[]; +extern unsigned char bul_4_eye3_TA_tex_txt[]; +extern unsigned char bul_4_eye4_TA_tex_txt[]; +extern unsigned char bul_4_eye5_TA_tex_txt[]; +extern unsigned char bul_4_eye6_TA_tex_txt[]; +extern unsigned char bul_4_eye7_TA_tex_txt[]; +extern unsigned char bul_4_eye8_TA_tex_txt[]; +extern unsigned char bul_4_mouth1_TA_tex_txt[]; +extern unsigned char bul_4_mouth2_TA_tex_txt[]; +extern unsigned char bul_4_mouth3_TA_tex_txt[]; +extern unsigned char bul_4_mouth4_TA_tex_txt[]; +extern unsigned char bul_4_mouth5_TA_tex_txt[]; +extern unsigned char bul_4_mouth6_TA_tex_txt[]; +extern unsigned char bul_4_tmem_txt[]; +extern unsigned short hip_4_pal[]; +extern unsigned char hip_4_eye1_TA_tex_txt[]; +extern unsigned char hip_4_eye2_TA_tex_txt[]; +extern unsigned char hip_4_eye3_TA_tex_txt[]; +extern unsigned char hip_4_eye4_TA_tex_txt[]; +extern unsigned char hip_4_eye5_TA_tex_txt[]; +extern unsigned char hip_4_eye6_TA_tex_txt[]; +extern unsigned char hip_4_eye7_TA_tex_txt[]; +extern unsigned char hip_4_eye8_TA_tex_txt[]; +extern unsigned char hip_4_tmem_txt[]; +extern unsigned short elp_4_pal[]; +extern unsigned char elp_4_eye1_TA_tex_txt[]; +extern unsigned char elp_4_eye2_TA_tex_txt[]; +extern unsigned char elp_4_eye3_TA_tex_txt[]; +extern unsigned char elp_4_eye4_TA_tex_txt[]; +extern unsigned char elp_4_eye5_TA_tex_txt[]; +extern unsigned char elp_4_eye6_TA_tex_txt[]; +extern unsigned char elp_4_eye7_TA_tex_txt[]; +extern unsigned char elp_4_eye8_TA_tex_txt[]; +extern unsigned char elp_4_mouth1_TA_tex_txt[]; +extern unsigned char elp_4_mouth2_TA_tex_txt[]; +extern unsigned char elp_4_mouth3_TA_tex_txt[]; +extern unsigned char elp_4_mouth4_TA_tex_txt[]; +extern unsigned char elp_4_mouth5_TA_tex_txt[]; +extern unsigned char elp_4_mouth6_TA_tex_txt[]; +extern unsigned char elp_4_tmem_txt[]; +extern unsigned short dog_9_pal[]; +extern unsigned char dog_9_eye1_TA_tex_txt[]; +extern unsigned char dog_9_eye2_TA_tex_txt[]; +extern unsigned char dog_9_eye3_TA_tex_txt[]; +extern unsigned char dog_9_eye4_TA_tex_txt[]; +extern unsigned char dog_9_eye5_TA_tex_txt[]; +extern unsigned char dog_9_eye6_TA_tex_txt[]; +extern unsigned char dog_9_eye7_TA_tex_txt[]; +extern unsigned char dog_9_eye8_TA_tex_txt[]; +extern unsigned char dog_9_mouth1_TA_tex_txt[]; +extern unsigned char dog_9_mouth2_TA_tex_txt[]; +extern unsigned char dog_9_mouth3_TA_tex_txt[]; +extern unsigned char dog_9_mouth4_TA_tex_txt[]; +extern unsigned char dog_9_mouth5_TA_tex_txt[]; +extern unsigned char dog_9_mouth6_TA_tex_txt[]; +extern unsigned char dog_9_tmem_txt[]; +extern unsigned short dog_10_pal[]; +extern unsigned char dog_10_eye1_TA_tex_txt[]; +extern unsigned char dog_10_eye2_TA_tex_txt[]; +extern unsigned char dog_10_eye3_TA_tex_txt[]; +extern unsigned char dog_10_eye4_TA_tex_txt[]; +extern unsigned char dog_10_eye5_TA_tex_txt[]; +extern unsigned char dog_10_eye6_TA_tex_txt[]; +extern unsigned char dog_10_eye7_TA_tex_txt[]; +extern unsigned char dog_10_eye8_TA_tex_txt[]; +extern unsigned char dog_10_mouth1_TA_tex_txt[]; +extern unsigned char dog_10_mouth2_TA_tex_txt[]; +extern unsigned char dog_10_mouth3_TA_tex_txt[]; +extern unsigned char dog_10_mouth4_TA_tex_txt[]; +extern unsigned char dog_10_mouth5_TA_tex_txt[]; +extern unsigned char dog_10_mouth6_TA_tex_txt[]; +extern unsigned char dog_10_tmem_txt[]; +extern unsigned short hip_5_pal[]; +extern unsigned char hip_5_eye1_TA_tex_txt[]; +extern unsigned char hip_5_eye2_TA_tex_txt[]; +extern unsigned char hip_5_eye3_TA_tex_txt[]; +extern unsigned char hip_5_eye4_TA_tex_txt[]; +extern unsigned char hip_5_eye5_TA_tex_txt[]; +extern unsigned char hip_5_eye6_TA_tex_txt[]; +extern unsigned char hip_5_eye7_TA_tex_txt[]; +extern unsigned char hip_5_eye8_TA_tex_txt[]; +extern unsigned char hip_5_tmem_txt[]; +extern unsigned short hip_6_pal[]; +extern unsigned char hip_6_eye1_TA_tex_txt[]; +extern unsigned char hip_6_eye2_TA_tex_txt[]; +extern unsigned char hip_6_eye3_TA_tex_txt[]; +extern unsigned char hip_6_eye4_TA_tex_txt[]; +extern unsigned char hip_6_eye5_TA_tex_txt[]; +extern unsigned char hip_6_eye6_TA_tex_txt[]; +extern unsigned char hip_6_eye7_TA_tex_txt[]; +extern unsigned char hip_6_eye8_TA_tex_txt[]; +extern unsigned char hip_6_tmem_txt[]; +extern unsigned short hip_7_pal[]; +extern unsigned char hip_7_eye1_TA_tex_txt[]; +extern unsigned char hip_7_eye2_TA_tex_txt[]; +extern unsigned char hip_7_eye3_TA_tex_txt[]; +extern unsigned char hip_7_eye4_TA_tex_txt[]; +extern unsigned char hip_7_eye5_TA_tex_txt[]; +extern unsigned char hip_7_eye6_TA_tex_txt[]; +extern unsigned char hip_7_eye7_TA_tex_txt[]; +extern unsigned char hip_7_eye8_TA_tex_txt[]; +extern unsigned char hip_7_tmem_txt[]; +extern unsigned short squ_9_pal[]; +extern unsigned char squ_9_eye1_TA_tex_txt[]; +extern unsigned char squ_9_eye2_TA_tex_txt[]; +extern unsigned char squ_9_eye3_TA_tex_txt[]; +extern unsigned char squ_9_eye4_TA_tex_txt[]; +extern unsigned char squ_9_eye5_TA_tex_txt[]; +extern unsigned char squ_9_eye6_TA_tex_txt[]; +extern unsigned char squ_9_eye7_TA_tex_txt[]; +extern unsigned char squ_9_eye8_TA_tex_txt[]; +extern unsigned char squ_9_mouth1_TA_tex_txt[]; +extern unsigned char squ_9_mouth2_TA_tex_txt[]; +extern unsigned char squ_9_mouth3_TA_tex_txt[]; +extern unsigned char squ_9_mouth4_TA_tex_txt[]; +extern unsigned char squ_9_mouth5_TA_tex_txt[]; +extern unsigned char squ_9_mouth6_TA_tex_txt[]; +extern unsigned char squ_9_tmem_txt[]; +extern unsigned short squ_10_pal[]; +extern unsigned char squ_10_eye1_TA_tex_txt[]; +extern unsigned char squ_10_eye2_TA_tex_txt[]; +extern unsigned char squ_10_eye3_TA_tex_txt[]; +extern unsigned char squ_10_eye4_TA_tex_txt[]; +extern unsigned char squ_10_eye5_TA_tex_txt[]; +extern unsigned char squ_10_eye6_TA_tex_txt[]; +extern unsigned char squ_10_eye7_TA_tex_txt[]; +extern unsigned char squ_10_eye8_TA_tex_txt[]; +extern unsigned char squ_10_mouth1_TA_tex_txt[]; +extern unsigned char squ_10_mouth2_TA_tex_txt[]; +extern unsigned char squ_10_mouth3_TA_tex_txt[]; +extern unsigned char squ_10_mouth4_TA_tex_txt[]; +extern unsigned char squ_10_mouth5_TA_tex_txt[]; +extern unsigned char squ_10_mouth6_TA_tex_txt[]; +extern unsigned char squ_10_tmem_txt[]; +extern unsigned short elp_5_pal[]; +extern unsigned char elp_5_eye1_TA_tex_txt[]; +extern unsigned char elp_5_eye2_TA_tex_txt[]; +extern unsigned char elp_5_eye3_TA_tex_txt[]; +extern unsigned char elp_5_eye4_TA_tex_txt[]; +extern unsigned char elp_5_eye5_TA_tex_txt[]; +extern unsigned char elp_5_eye6_TA_tex_txt[]; +extern unsigned char elp_5_eye7_TA_tex_txt[]; +extern unsigned char elp_5_eye8_TA_tex_txt[]; +extern unsigned char elp_5_mouth1_TA_tex_txt[]; +extern unsigned char elp_5_mouth2_TA_tex_txt[]; +extern unsigned char elp_5_mouth3_TA_tex_txt[]; +extern unsigned char elp_5_mouth4_TA_tex_txt[]; +extern unsigned char elp_5_mouth5_TA_tex_txt[]; +extern unsigned char elp_5_mouth6_TA_tex_txt[]; +extern unsigned char elp_5_tmem_txt[]; +extern unsigned short elp_6_pal[]; +extern unsigned char elp_6_eye1_TA_tex_txt[]; +extern unsigned char elp_6_eye2_TA_tex_txt[]; +extern unsigned char elp_6_eye3_TA_tex_txt[]; +extern unsigned char elp_6_eye4_TA_tex_txt[]; +extern unsigned char elp_6_eye5_TA_tex_txt[]; +extern unsigned char elp_6_eye6_TA_tex_txt[]; +extern unsigned char elp_6_eye7_TA_tex_txt[]; +extern unsigned char elp_6_eye8_TA_tex_txt[]; +extern unsigned char elp_6_mouth1_TA_tex_txt[]; +extern unsigned char elp_6_mouth2_TA_tex_txt[]; +extern unsigned char elp_6_mouth3_TA_tex_txt[]; +extern unsigned char elp_6_mouth4_TA_tex_txt[]; +extern unsigned char elp_6_mouth5_TA_tex_txt[]; +extern unsigned char elp_6_mouth6_TA_tex_txt[]; +extern unsigned char elp_6_tmem_txt[]; +extern unsigned short crd_4_pal[]; +extern unsigned char crd_4_eye1_TA_tex_txt[]; +extern unsigned char crd_4_eye2_TA_tex_txt[]; +extern unsigned char crd_4_eye3_TA_tex_txt[]; +extern unsigned char crd_4_eye4_TA_tex_txt[]; +extern unsigned char crd_4_eye5_TA_tex_txt[]; +extern unsigned char crd_4_eye6_TA_tex_txt[]; +extern unsigned char crd_4_eye7_TA_tex_txt[]; +extern unsigned char crd_4_eye8_TA_tex_txt[]; +extern unsigned char crd_4_tmem_txt[]; +extern unsigned short rbt_10_pal[]; +extern unsigned char rbt_10_eye1_TA_tex_txt[]; +extern unsigned char rbt_10_eye2_TA_tex_txt[]; +extern unsigned char rbt_10_eye3_TA_tex_txt[]; +extern unsigned char rbt_10_eye4_TA_tex_txt[]; +extern unsigned char rbt_10_eye5_TA_tex_txt[]; +extern unsigned char rbt_10_eye6_TA_tex_txt[]; +extern unsigned char rbt_10_eye7_TA_tex_txt[]; +extern unsigned char rbt_10_eye8_TA_tex_txt[]; +extern unsigned char rbt_10_mouth1_TA_tex_txt[]; +extern unsigned char rbt_10_mouth2_TA_tex_txt[]; +extern unsigned char rbt_10_mouth3_TA_tex_txt[]; +extern unsigned char rbt_10_mouth4_TA_tex_txt[]; +extern unsigned char rbt_10_mouth5_TA_tex_txt[]; +extern unsigned char rbt_10_mouth6_TA_tex_txt[]; +extern unsigned char rbt_10_tmem_txt[]; +extern unsigned short shp_2_pal[]; +extern unsigned char shp_2_eye1_TA_tex_txt[]; +extern unsigned char shp_2_eye2_TA_tex_txt[]; +extern unsigned char shp_2_eye3_TA_tex_txt[]; +extern unsigned char shp_2_eye4_TA_tex_txt[]; +extern unsigned char shp_2_eye5_TA_tex_txt[]; +extern unsigned char shp_2_eye6_TA_tex_txt[]; +extern unsigned char shp_2_eye7_TA_tex_txt[]; +extern unsigned char shp_2_eye8_TA_tex_txt[]; +extern unsigned char shp_2_mouth1_TA_tex_txt[]; +extern unsigned char shp_2_mouth2_TA_tex_txt[]; +extern unsigned char shp_2_mouth3_TA_tex_txt[]; +extern unsigned char shp_2_mouth4_TA_tex_txt[]; +extern unsigned char shp_2_mouth5_TA_tex_txt[]; +extern unsigned char shp_2_mouth6_TA_tex_txt[]; +extern unsigned char shp_2_tmem_txt[]; +extern unsigned short shp_3_pal[]; +extern unsigned char shp_3_eye1_TA_tex_txt[]; +extern unsigned char shp_3_eye2_TA_tex_txt[]; +extern unsigned char shp_3_eye3_TA_tex_txt[]; +extern unsigned char shp_3_eye4_TA_tex_txt[]; +extern unsigned char shp_3_eye5_TA_tex_txt[]; +extern unsigned char shp_3_eye6_TA_tex_txt[]; +extern unsigned char shp_3_eye7_TA_tex_txt[]; +extern unsigned char shp_3_eye8_TA_tex_txt[]; +extern unsigned char shp_3_mouth1_TA_tex_txt[]; +extern unsigned char shp_3_mouth2_TA_tex_txt[]; +extern unsigned char shp_3_mouth3_TA_tex_txt[]; +extern unsigned char shp_3_mouth4_TA_tex_txt[]; +extern unsigned char shp_3_mouth5_TA_tex_txt[]; +extern unsigned char shp_3_mouth6_TA_tex_txt[]; +extern unsigned char shp_3_tmem_txt[]; +extern unsigned short wol_5_pal[]; +extern unsigned char wol_5_eye1_TA_tex_txt[]; +extern unsigned char wol_5_eye2_TA_tex_txt[]; +extern unsigned char wol_5_eye3_TA_tex_txt[]; +extern unsigned char wol_5_eye4_TA_tex_txt[]; +extern unsigned char wol_5_eye5_TA_tex_txt[]; +extern unsigned char wol_5_eye6_TA_tex_txt[]; +extern unsigned char wol_5_eye7_TA_tex_txt[]; +extern unsigned char wol_5_eye8_TA_tex_txt[]; +extern unsigned char wol_5_tmem_txt[]; +extern unsigned short duk_9_pal[]; +extern unsigned char duk_9_eye1_TA_tex_txt[]; +extern unsigned char duk_9_eye2_TA_tex_txt[]; +extern unsigned char duk_9_eye3_TA_tex_txt[]; +extern unsigned char duk_9_eye4_TA_tex_txt[]; +extern unsigned char duk_9_eye5_TA_tex_txt[]; +extern unsigned char duk_9_eye6_TA_tex_txt[]; +extern unsigned char duk_9_eye7_TA_tex_txt[]; +extern unsigned char duk_9_eye8_TA_tex_txt[]; +extern unsigned char duk_9_mouth1_TA_tex_txt[]; +extern unsigned char duk_9_mouth2_TA_tex_txt[]; +extern unsigned char duk_9_mouth3_TA_tex_txt[]; +extern unsigned char duk_9_mouth4_TA_tex_txt[]; +extern unsigned char duk_9_mouth5_TA_tex_txt[]; +extern unsigned char duk_9_mouth6_TA_tex_txt[]; +extern unsigned char duk_9_tmem_txt[]; +extern unsigned short duk_10_pal[]; +extern unsigned char duk_10_eye1_TA_tex_txt[]; +extern unsigned char duk_10_eye2_TA_tex_txt[]; +extern unsigned char duk_10_eye3_TA_tex_txt[]; +extern unsigned char duk_10_eye4_TA_tex_txt[]; +extern unsigned char duk_10_eye5_TA_tex_txt[]; +extern unsigned char duk_10_eye6_TA_tex_txt[]; +extern unsigned char duk_10_eye7_TA_tex_txt[]; +extern unsigned char duk_10_eye8_TA_tex_txt[]; +extern unsigned char duk_10_mouth1_TA_tex_txt[]; +extern unsigned char duk_10_mouth2_TA_tex_txt[]; +extern unsigned char duk_10_mouth3_TA_tex_txt[]; +extern unsigned char duk_10_mouth4_TA_tex_txt[]; +extern unsigned char duk_10_mouth5_TA_tex_txt[]; +extern unsigned char duk_10_mouth6_TA_tex_txt[]; +extern unsigned char duk_10_tmem_txt[]; +extern unsigned short shp_4_pal[]; +extern unsigned char shp_4_eye1_TA_tex_txt[]; +extern unsigned char shp_4_eye2_TA_tex_txt[]; +extern unsigned char shp_4_eye3_TA_tex_txt[]; +extern unsigned char shp_4_eye4_TA_tex_txt[]; +extern unsigned char shp_4_eye5_TA_tex_txt[]; +extern unsigned char shp_4_eye6_TA_tex_txt[]; +extern unsigned char shp_4_eye7_TA_tex_txt[]; +extern unsigned char shp_4_eye8_TA_tex_txt[]; +extern unsigned char shp_4_mouth1_TA_tex_txt[]; +extern unsigned char shp_4_mouth2_TA_tex_txt[]; +extern unsigned char shp_4_mouth3_TA_tex_txt[]; +extern unsigned char shp_4_mouth4_TA_tex_txt[]; +extern unsigned char shp_4_mouth5_TA_tex_txt[]; +extern unsigned char shp_4_mouth6_TA_tex_txt[]; +extern unsigned char shp_4_tmem_txt[]; +extern unsigned short shp_5_pal[]; +extern unsigned char shp_5_eye1_TA_tex_txt[]; +extern unsigned char shp_5_eye2_TA_tex_txt[]; +extern unsigned char shp_5_eye3_TA_tex_txt[]; +extern unsigned char shp_5_eye4_TA_tex_txt[]; +extern unsigned char shp_5_eye5_TA_tex_txt[]; +extern unsigned char shp_5_eye6_TA_tex_txt[]; +extern unsigned char shp_5_eye7_TA_tex_txt[]; +extern unsigned char shp_5_eye8_TA_tex_txt[]; +extern unsigned char shp_5_mouth1_TA_tex_txt[]; +extern unsigned char shp_5_mouth2_TA_tex_txt[]; +extern unsigned char shp_5_mouth3_TA_tex_txt[]; +extern unsigned char shp_5_mouth4_TA_tex_txt[]; +extern unsigned char shp_5_mouth5_TA_tex_txt[]; +extern unsigned char shp_5_mouth6_TA_tex_txt[]; +extern unsigned char shp_5_tmem_txt[]; +extern unsigned short shp_6_pal[]; +extern unsigned char shp_6_eye1_TA_tex_txt[]; +extern unsigned char shp_6_eye2_TA_tex_txt[]; +extern unsigned char shp_6_eye3_TA_tex_txt[]; +extern unsigned char shp_6_eye4_TA_tex_txt[]; +extern unsigned char shp_6_eye5_TA_tex_txt[]; +extern unsigned char shp_6_eye6_TA_tex_txt[]; +extern unsigned char shp_6_eye7_TA_tex_txt[]; +extern unsigned char shp_6_eye8_TA_tex_txt[]; +extern unsigned char shp_6_mouth1_TA_tex_txt[]; +extern unsigned char shp_6_mouth2_TA_tex_txt[]; +extern unsigned char shp_6_mouth3_TA_tex_txt[]; +extern unsigned char shp_6_mouth4_TA_tex_txt[]; +extern unsigned char shp_6_mouth5_TA_tex_txt[]; +extern unsigned char shp_6_mouth6_TA_tex_txt[]; +extern unsigned char shp_6_tmem_txt[]; +extern unsigned short dog_7_pal[]; +extern unsigned char dog_7_eye1_TA_tex_txt[]; +extern unsigned char dog_7_eye2_TA_tex_txt[]; +extern unsigned char dog_7_eye3_TA_tex_txt[]; +extern unsigned char dog_7_eye4_TA_tex_txt[]; +extern unsigned char dog_7_eye5_TA_tex_txt[]; +extern unsigned char dog_7_eye6_TA_tex_txt[]; +extern unsigned char dog_7_eye7_TA_tex_txt[]; +extern unsigned char dog_7_eye8_TA_tex_txt[]; +extern unsigned char dog_7_mouth1_TA_tex_txt[]; +extern unsigned char dog_7_mouth2_TA_tex_txt[]; +extern unsigned char dog_7_mouth3_TA_tex_txt[]; +extern unsigned char dog_7_mouth4_TA_tex_txt[]; +extern unsigned char dog_7_mouth5_TA_tex_txt[]; +extern unsigned char dog_7_mouth6_TA_tex_txt[]; +extern unsigned char dog_7_tmem_txt[]; +extern unsigned short duk_11_pal[]; +extern unsigned char duk_11_eye1_TA_tex_txt[]; +extern unsigned char duk_11_eye2_TA_tex_txt[]; +extern unsigned char duk_11_eye3_TA_tex_txt[]; +extern unsigned char duk_11_eye4_TA_tex_txt[]; +extern unsigned char duk_11_eye5_TA_tex_txt[]; +extern unsigned char duk_11_eye6_TA_tex_txt[]; +extern unsigned char duk_11_eye7_TA_tex_txt[]; +extern unsigned char duk_11_eye8_TA_tex_txt[]; +extern unsigned char duk_11_mouth1_TA_tex_txt[]; +extern unsigned char duk_11_mouth2_TA_tex_txt[]; +extern unsigned char duk_11_mouth3_TA_tex_txt[]; +extern unsigned char duk_11_mouth4_TA_tex_txt[]; +extern unsigned char duk_11_mouth5_TA_tex_txt[]; +extern unsigned char duk_11_mouth6_TA_tex_txt[]; +extern unsigned char duk_11_tmem_txt[]; +extern unsigned short rbt_11_pal[]; +extern unsigned char rbt_11_eye1_TA_tex_txt[]; +extern unsigned char rbt_11_eye2_TA_tex_txt[]; +extern unsigned char rbt_11_eye3_TA_tex_txt[]; +extern unsigned char rbt_11_eye4_TA_tex_txt[]; +extern unsigned char rbt_11_eye5_TA_tex_txt[]; +extern unsigned char rbt_11_eye6_TA_tex_txt[]; +extern unsigned char rbt_11_eye7_TA_tex_txt[]; +extern unsigned char rbt_11_eye8_TA_tex_txt[]; +extern unsigned char rbt_11_mouth1_TA_tex_txt[]; +extern unsigned char rbt_11_mouth2_TA_tex_txt[]; +extern unsigned char rbt_11_mouth3_TA_tex_txt[]; +extern unsigned char rbt_11_mouth4_TA_tex_txt[]; +extern unsigned char rbt_11_mouth5_TA_tex_txt[]; +extern unsigned char rbt_11_mouth6_TA_tex_txt[]; +extern unsigned char rbt_11_tmem_txt[]; +extern unsigned short squ_11_pal[]; +extern unsigned char squ_11_eye1_TA_tex_txt[]; +extern unsigned char squ_11_eye2_TA_tex_txt[]; +extern unsigned char squ_11_eye3_TA_tex_txt[]; +extern unsigned char squ_11_eye4_TA_tex_txt[]; +extern unsigned char squ_11_eye5_TA_tex_txt[]; +extern unsigned char squ_11_eye6_TA_tex_txt[]; +extern unsigned char squ_11_eye7_TA_tex_txt[]; +extern unsigned char squ_11_eye8_TA_tex_txt[]; +extern unsigned char squ_11_mouth1_TA_tex_txt[]; +extern unsigned char squ_11_mouth2_TA_tex_txt[]; +extern unsigned char squ_11_mouth3_TA_tex_txt[]; +extern unsigned char squ_11_mouth4_TA_tex_txt[]; +extern unsigned char squ_11_mouth5_TA_tex_txt[]; +extern unsigned char squ_11_mouth6_TA_tex_txt[]; +extern unsigned char squ_11_tmem_txt[]; +extern unsigned short flg_13_pal[]; +extern unsigned char flg_13_eye1_TA_tex_txt[]; +extern unsigned char flg_13_eye2_TA_tex_txt[]; +extern unsigned char flg_13_eye3_TA_tex_txt[]; +extern unsigned char flg_13_eye4_TA_tex_txt[]; +extern unsigned char flg_13_eye5_TA_tex_txt[]; +extern unsigned char flg_13_eye6_TA_tex_txt[]; +extern unsigned char flg_13_eye7_TA_tex_txt[]; +extern unsigned char flg_13_eye8_TA_tex_txt[]; +extern unsigned char flg_13_mouth1_TA_tex_txt[]; +extern unsigned char flg_13_mouth2_TA_tex_txt[]; +extern unsigned char flg_13_mouth3_TA_tex_txt[]; +extern unsigned char flg_13_mouth4_TA_tex_txt[]; +extern unsigned char flg_13_mouth5_TA_tex_txt[]; +extern unsigned char flg_13_mouth6_TA_tex_txt[]; +extern unsigned char flg_13_tmem_txt[]; +extern unsigned short lon_4_pal[]; +extern unsigned char lon_4_eye1_TA_tex_txt[]; +extern unsigned char lon_4_eye2_TA_tex_txt[]; +extern unsigned char lon_4_eye3_TA_tex_txt[]; +extern unsigned char lon_4_eye4_TA_tex_txt[]; +extern unsigned char lon_4_eye5_TA_tex_txt[]; +extern unsigned char lon_4_eye6_TA_tex_txt[]; +extern unsigned char lon_4_eye7_TA_tex_txt[]; +extern unsigned char lon_4_eye8_TA_tex_txt[]; +extern unsigned char lon_4_mouth1_TA_tex_txt[]; +extern unsigned char lon_4_mouth2_TA_tex_txt[]; +extern unsigned char lon_4_mouth3_TA_tex_txt[]; +extern unsigned char lon_4_mouth4_TA_tex_txt[]; +extern unsigned char lon_4_mouth5_TA_tex_txt[]; +extern unsigned char lon_4_mouth6_TA_tex_txt[]; +extern unsigned char lon_4_tmem_txt[]; +extern unsigned short pgn_8_pal[]; +extern unsigned char pgn_8_eye1_TA_tex_txt[]; +extern unsigned char pgn_8_eye2_TA_tex_txt[]; +extern unsigned char pgn_8_eye3_TA_tex_txt[]; +extern unsigned char pgn_8_eye4_TA_tex_txt[]; +extern unsigned char pgn_8_eye5_TA_tex_txt[]; +extern unsigned char pgn_8_eye6_TA_tex_txt[]; +extern unsigned char pgn_8_eye7_TA_tex_txt[]; +extern unsigned char pgn_8_eye8_TA_tex_txt[]; +extern unsigned char pgn_8_tmem_txt[]; +extern unsigned short elp_7_pal[]; +extern unsigned char elp_7_eye1_TA_tex_txt[]; +extern unsigned char elp_7_eye2_TA_tex_txt[]; +extern unsigned char elp_7_eye3_TA_tex_txt[]; +extern unsigned char elp_7_eye4_TA_tex_txt[]; +extern unsigned char elp_7_eye5_TA_tex_txt[]; +extern unsigned char elp_7_eye6_TA_tex_txt[]; +extern unsigned char elp_7_eye7_TA_tex_txt[]; +extern unsigned char elp_7_eye8_TA_tex_txt[]; +extern unsigned char elp_7_mouth1_TA_tex_txt[]; +extern unsigned char elp_7_mouth2_TA_tex_txt[]; +extern unsigned char elp_7_mouth3_TA_tex_txt[]; +extern unsigned char elp_7_mouth4_TA_tex_txt[]; +extern unsigned char elp_7_mouth5_TA_tex_txt[]; +extern unsigned char elp_7_mouth6_TA_tex_txt[]; +extern unsigned char elp_7_tmem_txt[]; +extern unsigned short brd_11_pal[]; +extern unsigned char brd_11_eye1_TA_tex_txt[]; +extern unsigned char brd_11_eye2_TA_tex_txt[]; +extern unsigned char brd_11_eye3_TA_tex_txt[]; +extern unsigned char brd_11_eye4_TA_tex_txt[]; +extern unsigned char brd_11_eye5_TA_tex_txt[]; +extern unsigned char brd_11_eye6_TA_tex_txt[]; +extern unsigned char brd_11_eye7_TA_tex_txt[]; +extern unsigned char brd_11_eye8_TA_tex_txt[]; +extern unsigned char brd_11_tmem_txt[]; +extern unsigned short wol_6_pal[]; +extern unsigned char wol_6_eye1_TA_tex_txt[]; +extern unsigned char wol_6_eye2_TA_tex_txt[]; +extern unsigned char wol_6_eye3_TA_tex_txt[]; +extern unsigned char wol_6_eye4_TA_tex_txt[]; +extern unsigned char wol_6_eye5_TA_tex_txt[]; +extern unsigned char wol_6_eye6_TA_tex_txt[]; +extern unsigned char wol_6_eye7_TA_tex_txt[]; +extern unsigned char wol_6_eye8_TA_tex_txt[]; +extern unsigned char wol_6_tmem_txt[]; +extern unsigned short mus_10_pal[]; +extern unsigned char mus_10_eye1_TA_tex_txt[]; +extern unsigned char mus_10_eye2_TA_tex_txt[]; +extern unsigned char mus_10_eye3_TA_tex_txt[]; +extern unsigned char mus_10_eye4_TA_tex_txt[]; +extern unsigned char mus_10_eye5_TA_tex_txt[]; +extern unsigned char mus_10_eye6_TA_tex_txt[]; +extern unsigned char mus_10_eye7_TA_tex_txt[]; +extern unsigned char mus_10_eye8_TA_tex_txt[]; +extern unsigned char mus_10_mouth1_TA_tex_txt[]; +extern unsigned char mus_10_mouth2_TA_tex_txt[]; +extern unsigned char mus_10_mouth3_TA_tex_txt[]; +extern unsigned char mus_10_mouth4_TA_tex_txt[]; +extern unsigned char mus_10_mouth5_TA_tex_txt[]; +extern unsigned char mus_10_mouth6_TA_tex_txt[]; +extern unsigned char mus_10_tmem_txt[]; +extern unsigned short hrs_8_pal[]; +extern unsigned char hrs_8_eye1_TA_tex_txt[]; +extern unsigned char hrs_8_eye2_TA_tex_txt[]; +extern unsigned char hrs_8_eye3_TA_tex_txt[]; +extern unsigned char hrs_8_eye4_TA_tex_txt[]; +extern unsigned char hrs_8_eye5_TA_tex_txt[]; +extern unsigned char hrs_8_eye6_TA_tex_txt[]; +extern unsigned char hrs_8_eye7_TA_tex_txt[]; +extern unsigned char hrs_8_eye8_TA_tex_txt[]; +extern unsigned char hrs_8_tmem_txt[]; +extern unsigned short chn_9_pal[]; +extern unsigned char chn_9_eye1_TA_tex_txt[]; +extern unsigned char chn_9_eye2_TA_tex_txt[]; +extern unsigned char chn_9_eye3_TA_tex_txt[]; +extern unsigned char chn_9_eye4_TA_tex_txt[]; +extern unsigned char chn_9_eye5_TA_tex_txt[]; +extern unsigned char chn_9_eye6_TA_tex_txt[]; +extern unsigned char chn_9_eye7_TA_tex_txt[]; +extern unsigned char chn_9_eye8_TA_tex_txt[]; +extern unsigned char chn_9_tmem_txt[]; +extern unsigned short kal_6_pal[]; +extern unsigned char kal_6_eye1_TA_tex_txt[]; +extern unsigned char kal_6_eye2_TA_tex_txt[]; +extern unsigned char kal_6_eye3_TA_tex_txt[]; +extern unsigned char kal_6_eye4_TA_tex_txt[]; +extern unsigned char kal_6_eye5_TA_tex_txt[]; +extern unsigned char kal_6_eye6_TA_tex_txt[]; +extern unsigned char kal_6_eye7_TA_tex_txt[]; +extern unsigned char kal_6_eye8_TA_tex_txt[]; +extern unsigned char kal_6_mouth1_TA_tex_txt[]; +extern unsigned char kal_6_mouth2_TA_tex_txt[]; +extern unsigned char kal_6_mouth3_TA_tex_txt[]; +extern unsigned char kal_6_mouth4_TA_tex_txt[]; +extern unsigned char kal_6_mouth5_TA_tex_txt[]; +extern unsigned char kal_6_mouth6_TA_tex_txt[]; +extern unsigned char kal_6_tmem_txt[]; +extern unsigned short gor_5_pal[]; +extern unsigned char gor_5_eye1_TA_tex_txt[]; +extern unsigned char gor_5_eye2_TA_tex_txt[]; +extern unsigned char gor_5_eye3_TA_tex_txt[]; +extern unsigned char gor_5_eye4_TA_tex_txt[]; +extern unsigned char gor_5_eye5_TA_tex_txt[]; +extern unsigned char gor_5_eye6_TA_tex_txt[]; +extern unsigned char gor_5_eye7_TA_tex_txt[]; +extern unsigned char gor_5_eye8_TA_tex_txt[]; +extern unsigned char gor_5_mouth1_TA_tex_txt[]; +extern unsigned char gor_5_mouth2_TA_tex_txt[]; +extern unsigned char gor_5_mouth3_TA_tex_txt[]; +extern unsigned char gor_5_mouth4_TA_tex_txt[]; +extern unsigned char gor_5_mouth5_TA_tex_txt[]; +extern unsigned char gor_5_mouth6_TA_tex_txt[]; +extern unsigned char gor_5_tmem_txt[]; +extern unsigned short tig_4_pal[]; +extern unsigned char tig_4_eye1_TA_tex_txt[]; +extern unsigned char tig_4_eye2_TA_tex_txt[]; +extern unsigned char tig_4_eye3_TA_tex_txt[]; +extern unsigned char tig_4_eye4_TA_tex_txt[]; +extern unsigned char tig_4_eye5_TA_tex_txt[]; +extern unsigned char tig_4_eye6_TA_tex_txt[]; +extern unsigned char tig_4_eye7_TA_tex_txt[]; +extern unsigned char tig_4_eye8_TA_tex_txt[]; +extern unsigned char tig_4_tmem_txt[]; +extern unsigned short cbr_10_pal[]; +extern unsigned char cbr_10_eye1_TA_tex_txt[]; +extern unsigned char cbr_10_eye2_TA_tex_txt[]; +extern unsigned char cbr_10_eye3_TA_tex_txt[]; +extern unsigned char cbr_10_eye4_TA_tex_txt[]; +extern unsigned char cbr_10_eye5_TA_tex_txt[]; +extern unsigned char cbr_10_eye6_TA_tex_txt[]; +extern unsigned char cbr_10_eye7_TA_tex_txt[]; +extern unsigned char cbr_10_eye8_TA_tex_txt[]; +extern unsigned char cbr_10_mouth1_TA_tex_txt[]; +extern unsigned char cbr_10_mouth2_TA_tex_txt[]; +extern unsigned char cbr_10_mouth3_TA_tex_txt[]; +extern unsigned char cbr_10_mouth4_TA_tex_txt[]; +extern unsigned char cbr_10_mouth5_TA_tex_txt[]; +extern unsigned char cbr_10_mouth6_TA_tex_txt[]; +extern unsigned char cbr_10_tmem_txt[]; +extern unsigned short cbr_11_pal[]; +extern unsigned char cbr_11_eye1_TA_tex_txt[]; +extern unsigned char cbr_11_eye2_TA_tex_txt[]; +extern unsigned char cbr_11_eye3_TA_tex_txt[]; +extern unsigned char cbr_11_eye4_TA_tex_txt[]; +extern unsigned char cbr_11_eye5_TA_tex_txt[]; +extern unsigned char cbr_11_eye6_TA_tex_txt[]; +extern unsigned char cbr_11_eye7_TA_tex_txt[]; +extern unsigned char cbr_11_eye8_TA_tex_txt[]; +extern unsigned char cbr_11_mouth1_TA_tex_txt[]; +extern unsigned char cbr_11_mouth2_TA_tex_txt[]; +extern unsigned char cbr_11_mouth3_TA_tex_txt[]; +extern unsigned char cbr_11_mouth4_TA_tex_txt[]; +extern unsigned char cbr_11_mouth5_TA_tex_txt[]; +extern unsigned char cbr_11_mouth6_TA_tex_txt[]; +extern unsigned char cbr_11_tmem_txt[]; +extern unsigned short pig_11_pal[]; +extern unsigned char pig_11_eye1_TA_tex_txt[]; +extern unsigned char pig_11_eye2_TA_tex_txt[]; +extern unsigned char pig_11_eye3_TA_tex_txt[]; +extern unsigned char pig_11_eye4_TA_tex_txt[]; +extern unsigned char pig_11_eye5_TA_tex_txt[]; +extern unsigned char pig_11_eye6_TA_tex_txt[]; +extern unsigned char pig_11_eye7_TA_tex_txt[]; +extern unsigned char pig_11_eye8_TA_tex_txt[]; +extern unsigned char pig_11_mouth1_TA_tex_txt[]; +extern unsigned char pig_11_mouth2_TA_tex_txt[]; +extern unsigned char pig_11_mouth3_TA_tex_txt[]; +extern unsigned char pig_11_mouth4_TA_tex_txt[]; +extern unsigned char pig_11_mouth5_TA_tex_txt[]; +extern unsigned char pig_11_mouth6_TA_tex_txt[]; +extern unsigned char pig_11_tmem_txt[]; +extern unsigned short cat_14_pal[]; +extern unsigned char cat_14_eye1_TA_tex_txt[]; +extern unsigned char cat_14_eye2_TA_tex_txt[]; +extern unsigned char cat_14_eye3_TA_tex_txt[]; +extern unsigned char cat_14_eye4_TA_tex_txt[]; +extern unsigned char cat_14_eye5_TA_tex_txt[]; +extern unsigned char cat_14_eye6_TA_tex_txt[]; +extern unsigned char cat_14_eye7_TA_tex_txt[]; +extern unsigned char cat_14_eye8_TA_tex_txt[]; +extern unsigned char cat_14_mouth1_TA_tex_txt[]; +extern unsigned char cat_14_mouth2_TA_tex_txt[]; +extern unsigned char cat_14_mouth3_TA_tex_txt[]; +extern unsigned char cat_14_mouth4_TA_tex_txt[]; +extern unsigned char cat_14_mouth5_TA_tex_txt[]; +extern unsigned char cat_14_mouth6_TA_tex_txt[]; +extern unsigned char cat_14_tmem_txt[]; +extern unsigned short cat_15_pal[]; +extern unsigned char cat_15_eye1_TA_tex_txt[]; +extern unsigned char cat_15_eye2_TA_tex_txt[]; +extern unsigned char cat_15_eye3_TA_tex_txt[]; +extern unsigned char cat_15_eye4_TA_tex_txt[]; +extern unsigned char cat_15_eye5_TA_tex_txt[]; +extern unsigned char cat_15_eye6_TA_tex_txt[]; +extern unsigned char cat_15_eye7_TA_tex_txt[]; +extern unsigned char cat_15_eye8_TA_tex_txt[]; +extern unsigned char cat_15_mouth1_TA_tex_txt[]; +extern unsigned char cat_15_mouth2_TA_tex_txt[]; +extern unsigned char cat_15_mouth3_TA_tex_txt[]; +extern unsigned char cat_15_mouth4_TA_tex_txt[]; +extern unsigned char cat_15_mouth5_TA_tex_txt[]; +extern unsigned char cat_15_mouth6_TA_tex_txt[]; +extern unsigned char cat_15_tmem_txt[]; +extern unsigned short chn_1_pal[]; +extern unsigned char chn_1_eye1_TA_tex_txt[]; +extern unsigned char chn_1_eye2_TA_tex_txt[]; +extern unsigned char chn_1_eye3_TA_tex_txt[]; +extern unsigned char chn_1_eye4_TA_tex_txt[]; +extern unsigned char chn_1_eye5_TA_tex_txt[]; +extern unsigned char chn_1_eye6_TA_tex_txt[]; +extern unsigned char chn_1_eye7_TA_tex_txt[]; +extern unsigned char chn_1_eye8_TA_tex_txt[]; +extern unsigned char chn_1_tmem_txt[]; +extern unsigned short chn_1_pal[]; +extern unsigned char chn_1_eye1_TA_tex_txt[]; +extern unsigned char chn_1_eye2_TA_tex_txt[]; +extern unsigned char chn_1_eye3_TA_tex_txt[]; +extern unsigned char chn_1_eye4_TA_tex_txt[]; +extern unsigned char chn_1_eye5_TA_tex_txt[]; +extern unsigned char chn_1_eye6_TA_tex_txt[]; +extern unsigned char chn_1_eye7_TA_tex_txt[]; +extern unsigned char chn_1_eye8_TA_tex_txt[]; +extern unsigned char chn_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_wls_1; +extern unsigned short wls_1_pal[]; +extern unsigned char wls_1_eye1_TA_tex_txt[]; +extern unsigned char wls_1_eye2_TA_tex_txt[]; +extern unsigned char wls_1_eye3_TA_tex_txt[]; +extern unsigned char wls_1_eye4_TA_tex_txt[]; +extern unsigned char wls_1_eye5_TA_tex_txt[]; +extern unsigned char wls_1_eye6_TA_tex_txt[]; +extern unsigned char wls_1_eye7_TA_tex_txt[]; +extern unsigned char wls_1_eye8_TA_tex_txt[]; +extern unsigned char wls_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_fox_1; +extern unsigned short fox_1_pal[]; +extern unsigned char fox_1_eye1_TA_tex_txt[]; +extern unsigned char fox_1_eye2_TA_tex_txt[]; +extern unsigned char fox_1_eye3_TA_tex_txt[]; +extern unsigned char fox_1_eye4_TA_tex_txt[]; +extern unsigned char fox_1_eye5_TA_tex_txt[]; +extern unsigned char fox_1_eye6_TA_tex_txt[]; +extern unsigned char fox_1_eye7_TA_tex_txt[]; +extern unsigned char fox_1_eye8_TA_tex_txt[]; +extern unsigned char fox_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_grf_1; +extern unsigned short grf_1_pal[]; +extern unsigned char grf_1_eye1_TA_tex_txt[]; +extern unsigned char grf_1_eye2_TA_tex_txt[]; +extern unsigned char grf_1_eye3_TA_tex_txt[]; +extern unsigned char grf_1_eye4_TA_tex_txt[]; +extern unsigned char grf_1_eye5_TA_tex_txt[]; +extern unsigned char grf_1_eye6_TA_tex_txt[]; +extern unsigned char grf_1_eye7_TA_tex_txt[]; +extern unsigned char grf_1_eye8_TA_tex_txt[]; +extern unsigned char grf_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_pga_1; +extern unsigned short pga_1_pal[]; +extern unsigned char pga_1_eye1_TA_tex_txt[]; +extern unsigned char pga_1_eye2_TA_tex_txt[]; +extern unsigned char pga_1_eye3_TA_tex_txt[]; +extern unsigned char pga_1_eye4_TA_tex_txt[]; +extern unsigned char pga_1_eye5_TA_tex_txt[]; +extern unsigned char pga_1_eye6_TA_tex_txt[]; +extern unsigned char pga_1_eye7_TA_tex_txt[]; +extern unsigned char pga_1_eye8_TA_tex_txt[]; +extern unsigned char pga_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_xct_1; +extern unsigned short xct_1_pal[]; +extern unsigned char xct_1_eye1_TA_tex_txt[]; +extern unsigned char xct_1_eye2_TA_tex_txt[]; +extern unsigned char xct_1_eye3_TA_tex_txt[]; +extern unsigned char xct_1_eye4_TA_tex_txt[]; +extern unsigned char xct_1_eye5_TA_tex_txt[]; +extern unsigned char xct_1_eye6_TA_tex_txt[]; +extern unsigned char xct_1_eye7_TA_tex_txt[]; +extern unsigned char xct_1_eye8_TA_tex_txt[]; +extern unsigned char xct_1_mouth1_TA_tex_txt[]; +extern unsigned char xct_1_mouth2_TA_tex_txt[]; +extern unsigned char xct_1_mouth3_TA_tex_txt[]; +extern unsigned char xct_1_mouth4_TA_tex_txt[]; +extern unsigned char xct_1_mouth5_TA_tex_txt[]; +extern unsigned char xct_1_mouth6_TA_tex_txt[]; +extern unsigned char xct_1_tmem_txt[]; +extern unsigned short xct_1_pal[]; +extern unsigned char xct_1_eye1_TA_tex_txt[]; +extern unsigned char xct_1_eye2_TA_tex_txt[]; +extern unsigned char xct_1_eye3_TA_tex_txt[]; +extern unsigned char xct_1_eye4_TA_tex_txt[]; +extern unsigned char xct_1_eye5_TA_tex_txt[]; +extern unsigned char xct_1_eye6_TA_tex_txt[]; +extern unsigned char xct_1_eye7_TA_tex_txt[]; +extern unsigned char xct_1_eye8_TA_tex_txt[]; +extern unsigned char xct_1_mouth1_TA_tex_txt[]; +extern unsigned char xct_1_mouth2_TA_tex_txt[]; +extern unsigned char xct_1_mouth3_TA_tex_txt[]; +extern unsigned char xct_1_mouth4_TA_tex_txt[]; +extern unsigned char xct_1_mouth5_TA_tex_txt[]; +extern unsigned char xct_1_mouth6_TA_tex_txt[]; +extern unsigned char xct_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_cml_1; +extern unsigned short cml_1_pal[]; +extern unsigned char cml_1_eye1_TA_tex_txt[]; +extern unsigned char cml_1_eye2_TA_tex_txt[]; +extern unsigned char cml_1_eye3_TA_tex_txt[]; +extern unsigned char cml_1_eye4_TA_tex_txt[]; +extern unsigned char cml_1_eye5_TA_tex_txt[]; +extern unsigned char cml_1_eye6_TA_tex_txt[]; +extern unsigned char cml_1_eye7_TA_tex_txt[]; +extern unsigned char cml_1_eye8_TA_tex_txt[]; +extern unsigned char cml_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_boa_1; +extern unsigned short boa_1_pal[]; +extern unsigned char boa_1_eye1_TA_tex_txt[]; +extern unsigned char boa_1_eye2_TA_tex_txt[]; +extern unsigned char boa_1_eye3_TA_tex_txt[]; +extern unsigned char boa_1_eye4_TA_tex_txt[]; +extern unsigned char boa_1_eye5_TA_tex_txt[]; +extern unsigned char boa_1_eye6_TA_tex_txt[]; +extern unsigned char boa_1_eye7_TA_tex_txt[]; +extern unsigned char boa_1_eye8_TA_tex_txt[]; +extern unsigned char boa_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_rcn_1; +extern unsigned short rcn_1_pal[]; +extern unsigned char rcn_1_eye1_TA_tex_txt[]; +extern unsigned char rcn_1_eye2_TA_tex_txt[]; +extern unsigned char rcn_1_eye3_TA_tex_txt[]; +extern unsigned char rcn_1_eye4_TA_tex_txt[]; +extern unsigned char rcn_1_eye5_TA_tex_txt[]; +extern unsigned char rcn_1_eye6_TA_tex_txt[]; +extern unsigned char rcn_1_eye7_TA_tex_txt[]; +extern unsigned char rcn_1_eye8_TA_tex_txt[]; +extern unsigned char rcn_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_rcc_1; +extern unsigned short rcc_1_pal[]; +extern unsigned char rcc_1_eye1_TA_tex_txt[]; +extern unsigned char rcc_1_eye2_TA_tex_txt[]; +extern unsigned char rcc_1_eye3_TA_tex_txt[]; +extern unsigned char rcc_1_eye4_TA_tex_txt[]; +extern unsigned char rcc_1_eye5_TA_tex_txt[]; +extern unsigned char rcc_1_eye6_TA_tex_txt[]; +extern unsigned char rcc_1_eye7_TA_tex_txt[]; +extern unsigned char rcc_1_eye8_TA_tex_txt[]; +extern unsigned char rcc_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_rcs_1; +extern unsigned short rcs_1_pal[]; +extern unsigned char rcs_1_eye1_TA_tex_txt[]; +extern unsigned char rcs_1_eye2_TA_tex_txt[]; +extern unsigned char rcs_1_eye3_TA_tex_txt[]; +extern unsigned char rcs_1_eye4_TA_tex_txt[]; +extern unsigned char rcs_1_eye5_TA_tex_txt[]; +extern unsigned char rcs_1_eye6_TA_tex_txt[]; +extern unsigned char rcs_1_eye7_TA_tex_txt[]; +extern unsigned char rcs_1_eye8_TA_tex_txt[]; +extern unsigned char rcs_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_rcd_1; +extern unsigned short rcd_1_pal[]; +extern unsigned char rcd_1_eye1_TA_tex_txt[]; +extern unsigned char rcd_1_eye2_TA_tex_txt[]; +extern unsigned char rcd_1_eye3_TA_tex_txt[]; +extern unsigned char rcd_1_eye4_TA_tex_txt[]; +extern unsigned char rcd_1_eye5_TA_tex_txt[]; +extern unsigned char rcd_1_eye6_TA_tex_txt[]; +extern unsigned char rcd_1_eye7_TA_tex_txt[]; +extern unsigned char rcd_1_eye8_TA_tex_txt[]; +extern unsigned char rcd_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_bpt_1; +extern unsigned short bpt_1_pal[]; +extern unsigned char bpt_1_eye1_TA_tex_txt[]; +extern unsigned char bpt_1_eye2_TA_tex_txt[]; +extern unsigned char bpt_1_eye3_TA_tex_txt[]; +extern unsigned char bpt_1_eye4_TA_tex_txt[]; +extern unsigned char bpt_1_eye5_TA_tex_txt[]; +extern unsigned char bpt_1_eye6_TA_tex_txt[]; +extern unsigned char bpt_1_eye7_TA_tex_txt[]; +extern unsigned char bpt_1_eye8_TA_tex_txt[]; +extern unsigned char bpt_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_plc_1; +extern unsigned short plc_1_pal[]; +extern unsigned char plc_1_eye1_TA_tex_txt[]; +extern unsigned char plc_1_eye2_TA_tex_txt[]; +extern unsigned char plc_1_eye3_TA_tex_txt[]; +extern unsigned char plc_1_eye4_TA_tex_txt[]; +extern unsigned char plc_1_eye5_TA_tex_txt[]; +extern unsigned char plc_1_eye6_TA_tex_txt[]; +extern unsigned char plc_1_eye7_TA_tex_txt[]; +extern unsigned char plc_1_eye8_TA_tex_txt[]; +extern unsigned char plc_1_mouth1_TA_tex_txt[]; +extern unsigned char plc_1_mouth2_TA_tex_txt[]; +extern unsigned char plc_1_mouth3_TA_tex_txt[]; +extern unsigned char plc_1_mouth4_TA_tex_txt[]; +extern unsigned char plc_1_mouth5_TA_tex_txt[]; +extern unsigned char plc_1_mouth6_TA_tex_txt[]; +extern unsigned char plc_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_mnk_1; +extern unsigned short mnk_1_pal[]; +extern unsigned char mnk_1_eye1_TA_tex_txt[]; +extern unsigned char mnk_1_eye2_TA_tex_txt[]; +extern unsigned char mnk_1_eye3_TA_tex_txt[]; +extern unsigned char mnk_1_eye4_TA_tex_txt[]; +extern unsigned char mnk_1_eye5_TA_tex_txt[]; +extern unsigned char mnk_1_eye6_TA_tex_txt[]; +extern unsigned char mnk_1_eye7_TA_tex_txt[]; +extern unsigned char mnk_1_eye8_TA_tex_txt[]; +extern unsigned char mnk_1_mouth1_TA_tex_txt[]; +extern unsigned char mnk_1_mouth2_TA_tex_txt[]; +extern unsigned char mnk_1_mouth3_TA_tex_txt[]; +extern unsigned char mnk_1_mouth4_TA_tex_txt[]; +extern unsigned char mnk_1_mouth5_TA_tex_txt[]; +extern unsigned char mnk_1_mouth6_TA_tex_txt[]; +extern unsigned char mnk_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_snt_1; +extern unsigned short snt_1_pal[]; +extern unsigned char snt_1_eye1_TA_tex_txt[]; +extern unsigned char snt_1_eye2_TA_tex_txt[]; +extern unsigned char snt_1_eye3_TA_tex_txt[]; +extern unsigned char snt_1_eye4_TA_tex_txt[]; +extern unsigned char snt_1_eye5_TA_tex_txt[]; +extern unsigned char snt_1_eye6_TA_tex_txt[]; +extern unsigned char snt_1_eye7_TA_tex_txt[]; +extern unsigned char snt_1_eye8_TA_tex_txt[]; +extern unsigned char snt_1_mouth1_TA_tex_txt[]; +extern unsigned char snt_1_mouth2_TA_tex_txt[]; +extern unsigned char snt_1_mouth3_TA_tex_txt[]; +extern unsigned char snt_1_mouth4_TA_tex_txt[]; +extern unsigned char snt_1_mouth5_TA_tex_txt[]; +extern unsigned char snt_1_mouth6_TA_tex_txt[]; +extern unsigned char snt_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_pla_1; +extern unsigned short pla_1_pal[]; +extern unsigned char pla_1_eye1_TA_tex_txt[]; +extern unsigned char pla_1_eye2_TA_tex_txt[]; +extern unsigned char pla_1_eye3_TA_tex_txt[]; +extern unsigned char pla_1_eye4_TA_tex_txt[]; +extern unsigned char pla_1_eye5_TA_tex_txt[]; +extern unsigned char pla_1_eye6_TA_tex_txt[]; +extern unsigned char pla_1_eye7_TA_tex_txt[]; +extern unsigned char pla_1_eye8_TA_tex_txt[]; +extern unsigned char pla_1_mouth1_TA_tex_txt[]; +extern unsigned char pla_1_mouth2_TA_tex_txt[]; +extern unsigned char pla_1_mouth3_TA_tex_txt[]; +extern unsigned char pla_1_mouth4_TA_tex_txt[]; +extern unsigned char pla_1_mouth5_TA_tex_txt[]; +extern unsigned char pla_1_mouth6_TA_tex_txt[]; +extern unsigned char pla_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_plb_1; +extern unsigned short plb_1_pal[]; +extern unsigned char plb_1_eye1_TA_tex_txt[]; +extern unsigned char plb_1_eye2_TA_tex_txt[]; +extern unsigned char plb_1_eye3_TA_tex_txt[]; +extern unsigned char plb_1_eye4_TA_tex_txt[]; +extern unsigned char plb_1_eye5_TA_tex_txt[]; +extern unsigned char plb_1_eye6_TA_tex_txt[]; +extern unsigned char plb_1_eye7_TA_tex_txt[]; +extern unsigned char plb_1_eye8_TA_tex_txt[]; +extern unsigned char plb_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_pgb_1; +extern unsigned short pgb_1_pal[]; +extern unsigned char pgb_1_eye1_TA_tex_txt[]; +extern unsigned char pgb_1_eye2_TA_tex_txt[]; +extern unsigned char pgb_1_eye3_TA_tex_txt[]; +extern unsigned char pgb_1_eye4_TA_tex_txt[]; +extern unsigned char pgb_1_eye5_TA_tex_txt[]; +extern unsigned char pgb_1_eye6_TA_tex_txt[]; +extern unsigned char pgb_1_eye7_TA_tex_txt[]; +extern unsigned char pgb_1_eye8_TA_tex_txt[]; +extern unsigned char pgb_1_tmem_txt[]; +extern unsigned short fox_1_pal[]; +extern unsigned char fox_1_eye1_TA_tex_txt[]; +extern unsigned char fox_1_eye2_TA_tex_txt[]; +extern unsigned char fox_1_eye3_TA_tex_txt[]; +extern unsigned char fox_1_eye4_TA_tex_txt[]; +extern unsigned char fox_1_eye5_TA_tex_txt[]; +extern unsigned char fox_1_eye6_TA_tex_txt[]; +extern unsigned char fox_1_eye7_TA_tex_txt[]; +extern unsigned char fox_1_eye8_TA_tex_txt[]; +extern unsigned char fox_1_tmem_txt[]; +extern unsigned short rcn_1_pal[]; +extern unsigned char rcn_1_eye1_TA_tex_txt[]; +extern unsigned char rcn_1_eye2_TA_tex_txt[]; +extern unsigned char rcn_1_eye3_TA_tex_txt[]; +extern unsigned char rcn_1_eye4_TA_tex_txt[]; +extern unsigned char rcn_1_eye5_TA_tex_txt[]; +extern unsigned char rcn_1_eye6_TA_tex_txt[]; +extern unsigned char rcn_1_eye7_TA_tex_txt[]; +extern unsigned char rcn_1_eye8_TA_tex_txt[]; +extern unsigned char rcn_1_tmem_txt[]; +extern unsigned short rcc_1_pal[]; +extern unsigned char rcc_1_eye1_TA_tex_txt[]; +extern unsigned char rcc_1_eye2_TA_tex_txt[]; +extern unsigned char rcc_1_eye3_TA_tex_txt[]; +extern unsigned char rcc_1_eye4_TA_tex_txt[]; +extern unsigned char rcc_1_eye5_TA_tex_txt[]; +extern unsigned char rcc_1_eye6_TA_tex_txt[]; +extern unsigned char rcc_1_eye7_TA_tex_txt[]; +extern unsigned char rcc_1_eye8_TA_tex_txt[]; +extern unsigned char rcc_1_tmem_txt[]; +extern unsigned short rcs_1_pal[]; +extern unsigned char rcs_1_eye1_TA_tex_txt[]; +extern unsigned char rcs_1_eye2_TA_tex_txt[]; +extern unsigned char rcs_1_eye3_TA_tex_txt[]; +extern unsigned char rcs_1_eye4_TA_tex_txt[]; +extern unsigned char rcs_1_eye5_TA_tex_txt[]; +extern unsigned char rcs_1_eye6_TA_tex_txt[]; +extern unsigned char rcs_1_eye7_TA_tex_txt[]; +extern unsigned char rcs_1_eye8_TA_tex_txt[]; +extern unsigned char rcs_1_tmem_txt[]; +extern unsigned short rcd_1_pal[]; +extern unsigned char rcd_1_eye1_TA_tex_txt[]; +extern unsigned char rcd_1_eye2_TA_tex_txt[]; +extern unsigned char rcd_1_eye3_TA_tex_txt[]; +extern unsigned char rcd_1_eye4_TA_tex_txt[]; +extern unsigned char rcd_1_eye5_TA_tex_txt[]; +extern unsigned char rcd_1_eye6_TA_tex_txt[]; +extern unsigned char rcd_1_eye7_TA_tex_txt[]; +extern unsigned char rcd_1_eye8_TA_tex_txt[]; +extern unsigned char rcd_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_end_1; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short rcn_1_pal[]; +extern unsigned char rcn_1_eye1_TA_tex_txt[]; +extern unsigned char rcn_1_eye2_TA_tex_txt[]; +extern unsigned char rcn_1_eye3_TA_tex_txt[]; +extern unsigned char rcn_1_eye4_TA_tex_txt[]; +extern unsigned char rcn_1_eye5_TA_tex_txt[]; +extern unsigned char rcn_1_eye6_TA_tex_txt[]; +extern unsigned char rcn_1_eye7_TA_tex_txt[]; +extern unsigned char rcn_1_eye8_TA_tex_txt[]; +extern unsigned char rcn_1_tmem_txt[]; +extern unsigned short rcc_1_pal[]; +extern unsigned char rcc_1_eye1_TA_tex_txt[]; +extern unsigned char rcc_1_eye2_TA_tex_txt[]; +extern unsigned char rcc_1_eye3_TA_tex_txt[]; +extern unsigned char rcc_1_eye4_TA_tex_txt[]; +extern unsigned char rcc_1_eye5_TA_tex_txt[]; +extern unsigned char rcc_1_eye6_TA_tex_txt[]; +extern unsigned char rcc_1_eye7_TA_tex_txt[]; +extern unsigned char rcc_1_eye8_TA_tex_txt[]; +extern unsigned char rcc_1_tmem_txt[]; +extern unsigned short rcs_1_pal[]; +extern unsigned char rcs_1_eye1_TA_tex_txt[]; +extern unsigned char rcs_1_eye2_TA_tex_txt[]; +extern unsigned char rcs_1_eye3_TA_tex_txt[]; +extern unsigned char rcs_1_eye4_TA_tex_txt[]; +extern unsigned char rcs_1_eye5_TA_tex_txt[]; +extern unsigned char rcs_1_eye6_TA_tex_txt[]; +extern unsigned char rcs_1_eye7_TA_tex_txt[]; +extern unsigned char rcs_1_eye8_TA_tex_txt[]; +extern unsigned char rcs_1_tmem_txt[]; +extern unsigned short rcd_1_pal[]; +extern unsigned char rcd_1_eye1_TA_tex_txt[]; +extern unsigned char rcd_1_eye2_TA_tex_txt[]; +extern unsigned char rcd_1_eye3_TA_tex_txt[]; +extern unsigned char rcd_1_eye4_TA_tex_txt[]; +extern unsigned char rcd_1_eye5_TA_tex_txt[]; +extern unsigned char rcd_1_eye6_TA_tex_txt[]; +extern unsigned char rcd_1_eye7_TA_tex_txt[]; +extern unsigned char rcd_1_eye8_TA_tex_txt[]; +extern unsigned char rcd_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_bev_1; +extern unsigned short bev_1_pal[]; +extern unsigned char bev_1_eye1_TA_tex_txt[]; +extern unsigned char bev_1_eye2_TA_tex_txt[]; +extern unsigned char bev_1_eye3_TA_tex_txt[]; +extern unsigned char bev_1_eye4_TA_tex_txt[]; +extern unsigned char bev_1_eye5_TA_tex_txt[]; +extern unsigned char bev_1_eye6_TA_tex_txt[]; +extern unsigned char bev_1_eye7_TA_tex_txt[]; +extern unsigned char bev_1_eye8_TA_tex_txt[]; +extern unsigned char bev_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_rcf_1; +extern unsigned short rcf_1_pal[]; +extern unsigned char rcf_1_eye1_TA_tex_txt[]; +extern unsigned char rcf_1_eye2_TA_tex_txt[]; +extern unsigned char rcf_1_eye3_TA_tex_txt[]; +extern unsigned char rcf_1_eye4_TA_tex_txt[]; +extern unsigned char rcf_1_eye5_TA_tex_txt[]; +extern unsigned char rcf_1_eye6_TA_tex_txt[]; +extern unsigned char rcf_1_eye7_TA_tex_txt[]; +extern unsigned char rcf_1_eye8_TA_tex_txt[]; +extern unsigned char rcf_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_pkn_1; +extern unsigned short pkn_1_pal[]; +extern unsigned char pkn_1_tmem_txt[]; +extern unsigned short pkn_1_pal[]; +extern unsigned char pkn_1_tmem_txt[]; +extern unsigned short pkn_1_pal[]; +extern unsigned char pkn_1_tmem_txt[]; +extern unsigned short pkn_1_pal[]; +extern unsigned char pkn_1_tmem_txt[]; +extern unsigned short pkn_1_pal[]; +extern unsigned char pkn_1_tmem_txt[]; +extern unsigned short pkn_1_pal[]; +extern unsigned char pkn_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_lrc_1; +extern unsigned short lrc_1_pal[]; +extern unsigned char lrc_1_eye1_TA_tex_txt[]; +extern unsigned char lrc_1_eye2_TA_tex_txt[]; +extern unsigned char lrc_1_eye3_TA_tex_txt[]; +extern unsigned char lrc_1_eye4_TA_tex_txt[]; +extern unsigned char lrc_1_eye5_TA_tex_txt[]; +extern unsigned char lrc_1_eye6_TA_tex_txt[]; +extern unsigned char lrc_1_eye7_TA_tex_txt[]; +extern unsigned char lrc_1_eye8_TA_tex_txt[]; +extern unsigned char lrc_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_fob_1; +extern unsigned short fob_1_pal[]; +extern unsigned char fob_1_eye1_TA_tex_txt[]; +extern unsigned char fob_1_eye2_TA_tex_txt[]; +extern unsigned char fob_1_eye3_TA_tex_txt[]; +extern unsigned char fob_1_eye4_TA_tex_txt[]; +extern unsigned char fob_1_eye5_TA_tex_txt[]; +extern unsigned char fob_1_eye6_TA_tex_txt[]; +extern unsigned char fob_1_eye7_TA_tex_txt[]; +extern unsigned char fob_1_eye8_TA_tex_txt[]; +extern unsigned char fob_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short lrc_1_pal[]; +extern unsigned char lrc_1_eye1_TA_tex_txt[]; +extern unsigned char lrc_1_eye2_TA_tex_txt[]; +extern unsigned char lrc_1_eye3_TA_tex_txt[]; +extern unsigned char lrc_1_eye4_TA_tex_txt[]; +extern unsigned char lrc_1_eye5_TA_tex_txt[]; +extern unsigned char lrc_1_eye6_TA_tex_txt[]; +extern unsigned char lrc_1_eye7_TA_tex_txt[]; +extern unsigned char lrc_1_eye8_TA_tex_txt[]; +extern unsigned char lrc_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_kab_1; +extern unsigned short kab_1_pal[]; +extern unsigned char kab_1_eye1_TA_tex_txt[]; +extern unsigned char kab_1_eye2_TA_tex_txt[]; +extern unsigned char kab_1_eye3_TA_tex_txt[]; +extern unsigned char kab_1_eye4_TA_tex_txt[]; +extern unsigned char kab_1_eye5_TA_tex_txt[]; +extern unsigned char kab_1_eye6_TA_tex_txt[]; +extern unsigned char kab_1_eye7_TA_tex_txt[]; +extern unsigned char kab_1_eye8_TA_tex_txt[]; +extern unsigned char kab_1_tmem_txt[]; +extern unsigned short fob_1_pal[]; +extern unsigned char fob_1_eye1_TA_tex_txt[]; +extern unsigned char fob_1_eye2_TA_tex_txt[]; +extern unsigned char fob_1_eye3_TA_tex_txt[]; +extern unsigned char fob_1_eye4_TA_tex_txt[]; +extern unsigned char fob_1_eye5_TA_tex_txt[]; +extern unsigned char fob_1_eye6_TA_tex_txt[]; +extern unsigned char fob_1_eye7_TA_tex_txt[]; +extern unsigned char fob_1_eye8_TA_tex_txt[]; +extern unsigned char fob_1_tmem_txt[]; +extern unsigned short rcf_1_pal[]; +extern unsigned char rcf_1_eye1_TA_tex_txt[]; +extern unsigned char rcf_1_eye2_TA_tex_txt[]; +extern unsigned char rcf_1_eye3_TA_tex_txt[]; +extern unsigned char rcf_1_eye4_TA_tex_txt[]; +extern unsigned char rcf_1_eye5_TA_tex_txt[]; +extern unsigned char rcf_1_eye6_TA_tex_txt[]; +extern unsigned char rcf_1_eye7_TA_tex_txt[]; +extern unsigned char rcf_1_eye8_TA_tex_txt[]; +extern unsigned char rcf_1_tmem_txt[]; +extern unsigned short rcf_1_pal[]; +extern unsigned char rcf_1_eye1_TA_tex_txt[]; +extern unsigned char rcf_1_eye2_TA_tex_txt[]; +extern unsigned char rcf_1_eye3_TA_tex_txt[]; +extern unsigned char rcf_1_eye4_TA_tex_txt[]; +extern unsigned char rcf_1_eye5_TA_tex_txt[]; +extern unsigned char rcf_1_eye6_TA_tex_txt[]; +extern unsigned char rcf_1_eye7_TA_tex_txt[]; +extern unsigned char rcf_1_eye8_TA_tex_txt[]; +extern unsigned char rcf_1_tmem_txt[]; +extern unsigned short rcf_1_pal[]; +extern unsigned char rcf_1_eye1_TA_tex_txt[]; +extern unsigned char rcf_1_eye2_TA_tex_txt[]; +extern unsigned char rcf_1_eye3_TA_tex_txt[]; +extern unsigned char rcf_1_eye4_TA_tex_txt[]; +extern unsigned char rcf_1_eye5_TA_tex_txt[]; +extern unsigned char rcf_1_eye6_TA_tex_txt[]; +extern unsigned char rcf_1_eye7_TA_tex_txt[]; +extern unsigned char rcf_1_eye8_TA_tex_txt[]; +extern unsigned char rcf_1_tmem_txt[]; +extern unsigned short bpt_1_pal[]; +extern unsigned char bpt_1_eye1_TA_tex_txt[]; +extern unsigned char bpt_1_eye2_TA_tex_txt[]; +extern unsigned char bpt_1_eye3_TA_tex_txt[]; +extern unsigned char bpt_1_eye4_TA_tex_txt[]; +extern unsigned char bpt_1_eye5_TA_tex_txt[]; +extern unsigned char bpt_1_eye6_TA_tex_txt[]; +extern unsigned char bpt_1_eye7_TA_tex_txt[]; +extern unsigned char bpt_1_eye8_TA_tex_txt[]; +extern unsigned char bpt_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_mol_1; +extern unsigned short mol_1_pal[]; +extern unsigned char mol_1_eye1_TA_tex_txt[]; +extern unsigned char mol_1_eye2_TA_tex_txt[]; +extern unsigned char mol_1_eye3_TA_tex_txt[]; +extern unsigned char mol_1_eye4_TA_tex_txt[]; +extern unsigned char mol_1_eye5_TA_tex_txt[]; +extern unsigned char mol_1_eye6_TA_tex_txt[]; +extern unsigned char mol_1_eye7_TA_tex_txt[]; +extern unsigned char mol_1_eye8_TA_tex_txt[]; +extern unsigned char mol_1_mouth1_TA_tex_txt[]; +extern unsigned char mol_1_mouth2_TA_tex_txt[]; +extern unsigned char mol_1_mouth3_TA_tex_txt[]; +extern unsigned char mol_1_mouth4_TA_tex_txt[]; +extern unsigned char mol_1_mouth5_TA_tex_txt[]; +extern unsigned char mol_1_mouth6_TA_tex_txt[]; +extern unsigned char mol_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_plj_1; +extern unsigned short plj_1_pal[]; +extern unsigned char plj_1_eye1_TA_tex_txt[]; +extern unsigned char plj_1_eye2_TA_tex_txt[]; +extern unsigned char plj_1_eye3_TA_tex_txt[]; +extern unsigned char plj_1_eye4_TA_tex_txt[]; +extern unsigned char plj_1_eye5_TA_tex_txt[]; +extern unsigned char plj_1_eye6_TA_tex_txt[]; +extern unsigned char plj_1_eye7_TA_tex_txt[]; +extern unsigned char plj_1_eye8_TA_tex_txt[]; +extern unsigned char plj_1_mouth1_TA_tex_txt[]; +extern unsigned char plj_1_mouth2_TA_tex_txt[]; +extern unsigned char plj_1_mouth3_TA_tex_txt[]; +extern unsigned char plj_1_mouth4_TA_tex_txt[]; +extern unsigned char plj_1_mouth5_TA_tex_txt[]; +extern unsigned char plj_1_mouth6_TA_tex_txt[]; +extern unsigned char plj_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_seg_1; +extern unsigned short seg_1_pal[]; +extern unsigned char seg_1_eye1_TA_tex_txt[]; +extern unsigned char seg_1_eye2_TA_tex_txt[]; +extern unsigned char seg_1_eye3_TA_tex_txt[]; +extern unsigned char seg_1_eye4_TA_tex_txt[]; +extern unsigned char seg_1_eye5_TA_tex_txt[]; +extern unsigned char seg_1_eye6_TA_tex_txt[]; +extern unsigned char seg_1_eye7_TA_tex_txt[]; +extern unsigned char seg_1_eye8_TA_tex_txt[]; +extern unsigned char seg_1_tmem_txt[]; +extern unsigned short mol_1_pal[]; +extern unsigned char mol_1_eye1_TA_tex_txt[]; +extern unsigned char mol_1_eye2_TA_tex_txt[]; +extern unsigned char mol_1_eye3_TA_tex_txt[]; +extern unsigned char mol_1_eye4_TA_tex_txt[]; +extern unsigned char mol_1_eye5_TA_tex_txt[]; +extern unsigned char mol_1_eye6_TA_tex_txt[]; +extern unsigned char mol_1_eye7_TA_tex_txt[]; +extern unsigned char mol_1_eye8_TA_tex_txt[]; +extern unsigned char mol_1_mouth1_TA_tex_txt[]; +extern unsigned char mol_1_mouth2_TA_tex_txt[]; +extern unsigned char mol_1_mouth3_TA_tex_txt[]; +extern unsigned char mol_1_mouth4_TA_tex_txt[]; +extern unsigned char mol_1_mouth5_TA_tex_txt[]; +extern unsigned char mol_1_mouth6_TA_tex_txt[]; +extern unsigned char mol_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short mnk_1_pal[]; +extern unsigned char mnk_1_eye1_TA_tex_txt[]; +extern unsigned char mnk_1_eye2_TA_tex_txt[]; +extern unsigned char mnk_1_eye3_TA_tex_txt[]; +extern unsigned char mnk_1_eye4_TA_tex_txt[]; +extern unsigned char mnk_1_eye5_TA_tex_txt[]; +extern unsigned char mnk_1_eye6_TA_tex_txt[]; +extern unsigned char mnk_1_eye7_TA_tex_txt[]; +extern unsigned char mnk_1_eye8_TA_tex_txt[]; +extern unsigned char mnk_1_mouth1_TA_tex_txt[]; +extern unsigned char mnk_1_mouth2_TA_tex_txt[]; +extern unsigned char mnk_1_mouth3_TA_tex_txt[]; +extern unsigned char mnk_1_mouth4_TA_tex_txt[]; +extern unsigned char mnk_1_mouth5_TA_tex_txt[]; +extern unsigned char mnk_1_mouth6_TA_tex_txt[]; +extern unsigned char mnk_1_tmem_txt[]; +extern unsigned short mol_1_pal[]; +extern unsigned char mol_1_eye1_TA_tex_txt[]; +extern unsigned char mol_1_eye2_TA_tex_txt[]; +extern unsigned char mol_1_eye3_TA_tex_txt[]; +extern unsigned char mol_1_eye4_TA_tex_txt[]; +extern unsigned char mol_1_eye5_TA_tex_txt[]; +extern unsigned char mol_1_eye6_TA_tex_txt[]; +extern unsigned char mol_1_eye7_TA_tex_txt[]; +extern unsigned char mol_1_eye8_TA_tex_txt[]; +extern unsigned char mol_1_mouth1_TA_tex_txt[]; +extern unsigned char mol_1_mouth2_TA_tex_txt[]; +extern unsigned char mol_1_mouth3_TA_tex_txt[]; +extern unsigned char mol_1_mouth4_TA_tex_txt[]; +extern unsigned char mol_1_mouth5_TA_tex_txt[]; +extern unsigned char mol_1_mouth6_TA_tex_txt[]; +extern unsigned char mol_1_tmem_txt[]; +extern unsigned short mol_1_pal[]; +extern unsigned char mol_1_eye1_TA_tex_txt[]; +extern unsigned char mol_1_eye2_TA_tex_txt[]; +extern unsigned char mol_1_eye3_TA_tex_txt[]; +extern unsigned char mol_1_eye4_TA_tex_txt[]; +extern unsigned char mol_1_eye5_TA_tex_txt[]; +extern unsigned char mol_1_eye6_TA_tex_txt[]; +extern unsigned char mol_1_eye7_TA_tex_txt[]; +extern unsigned char mol_1_eye8_TA_tex_txt[]; +extern unsigned char mol_1_mouth1_TA_tex_txt[]; +extern unsigned char mol_1_mouth2_TA_tex_txt[]; +extern unsigned char mol_1_mouth3_TA_tex_txt[]; +extern unsigned char mol_1_mouth4_TA_tex_txt[]; +extern unsigned char mol_1_mouth5_TA_tex_txt[]; +extern unsigned char mol_1_mouth6_TA_tex_txt[]; +extern unsigned char mol_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short mol_1_pal[]; +extern unsigned char mol_1_eye1_TA_tex_txt[]; +extern unsigned char mol_1_eye2_TA_tex_txt[]; +extern unsigned char mol_1_eye3_TA_tex_txt[]; +extern unsigned char mol_1_eye4_TA_tex_txt[]; +extern unsigned char mol_1_eye5_TA_tex_txt[]; +extern unsigned char mol_1_eye6_TA_tex_txt[]; +extern unsigned char mol_1_eye7_TA_tex_txt[]; +extern unsigned char mol_1_eye8_TA_tex_txt[]; +extern unsigned char mol_1_mouth1_TA_tex_txt[]; +extern unsigned char mol_1_mouth2_TA_tex_txt[]; +extern unsigned char mol_1_mouth3_TA_tex_txt[]; +extern unsigned char mol_1_mouth4_TA_tex_txt[]; +extern unsigned char mol_1_mouth5_TA_tex_txt[]; +extern unsigned char mol_1_mouth6_TA_tex_txt[]; +extern unsigned char mol_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_xsq_1; +extern unsigned short xsq_1_pal[]; +extern unsigned char xsq_1_eye1_TA_tex_txt[]; +extern unsigned char xsq_1_eye2_TA_tex_txt[]; +extern unsigned char xsq_1_eye3_TA_tex_txt[]; +extern unsigned char xsq_1_eye4_TA_tex_txt[]; +extern unsigned char xsq_1_eye5_TA_tex_txt[]; +extern unsigned char xsq_1_eye6_TA_tex_txt[]; +extern unsigned char xsq_1_eye7_TA_tex_txt[]; +extern unsigned char xsq_1_eye8_TA_tex_txt[]; +extern unsigned char xsq_1_mouth1_TA_tex_txt[]; +extern unsigned char xsq_1_mouth2_TA_tex_txt[]; +extern unsigned char xsq_1_mouth3_TA_tex_txt[]; +extern unsigned char xsq_1_mouth4_TA_tex_txt[]; +extern unsigned char xsq_1_mouth5_TA_tex_txt[]; +extern unsigned char xsq_1_mouth6_TA_tex_txt[]; +extern unsigned char xsq_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_owl_1; +extern unsigned short owl_1_pal[]; +extern unsigned char owl_1_eye1_TA_tex_txt[]; +extern unsigned char owl_1_eye2_TA_tex_txt[]; +extern unsigned char owl_1_eye3_TA_tex_txt[]; +extern unsigned char owl_1_eye4_TA_tex_txt[]; +extern unsigned char owl_1_eye5_TA_tex_txt[]; +extern unsigned char owl_1_eye6_TA_tex_txt[]; +extern unsigned char owl_1_eye7_TA_tex_txt[]; +extern unsigned char owl_1_eye8_TA_tex_txt[]; +extern unsigned char owl_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_ttl_1; +extern unsigned short ttl_1_pal[]; +extern unsigned char ttl_1_eye1_TA_tex_txt[]; +extern unsigned char ttl_1_eye2_TA_tex_txt[]; +extern unsigned char ttl_1_eye3_TA_tex_txt[]; +extern unsigned char ttl_1_eye4_TA_tex_txt[]; +extern unsigned char ttl_1_eye5_TA_tex_txt[]; +extern unsigned char ttl_1_eye6_TA_tex_txt[]; +extern unsigned char ttl_1_eye7_TA_tex_txt[]; +extern unsigned char ttl_1_eye8_TA_tex_txt[]; +extern unsigned char ttl_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_gst_1; +extern unsigned short gst_1_pal[]; +extern unsigned char gst_1_eye1_TA_tex_txt[]; +extern unsigned char gst_1_eye2_TA_tex_txt[]; +extern unsigned char gst_1_eye3_TA_tex_txt[]; +extern unsigned char gst_1_eye4_TA_tex_txt[]; +extern unsigned char gst_1_eye5_TA_tex_txt[]; +extern unsigned char gst_1_eye6_TA_tex_txt[]; +extern unsigned char gst_1_eye7_TA_tex_txt[]; +extern unsigned char gst_1_eye8_TA_tex_txt[]; +extern unsigned char gst_1_mouth1_TA_tex_txt[]; +extern unsigned char gst_1_mouth2_TA_tex_txt[]; +extern unsigned char gst_1_mouth3_TA_tex_txt[]; +extern unsigned char gst_1_mouth4_TA_tex_txt[]; +extern unsigned char gst_1_mouth5_TA_tex_txt[]; +extern unsigned char gst_1_mouth6_TA_tex_txt[]; +extern unsigned char gst_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_hgh_1; +extern unsigned short hgh_1_pal[]; +extern unsigned char hgh_1_eye1_TA_tex_txt[]; +extern unsigned char hgh_1_eye2_TA_tex_txt[]; +extern unsigned char hgh_1_eye3_TA_tex_txt[]; +extern unsigned char hgh_1_eye4_TA_tex_txt[]; +extern unsigned char hgh_1_eye5_TA_tex_txt[]; +extern unsigned char hgh_1_eye6_TA_tex_txt[]; +extern unsigned char hgh_1_eye7_TA_tex_txt[]; +extern unsigned char hgh_1_eye8_TA_tex_txt[]; +extern unsigned char hgh_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_hgs_1; +extern unsigned short hgs_1_pal[]; +extern unsigned char hgs_1_eye1_TA_tex_txt[]; +extern unsigned char hgs_1_eye2_TA_tex_txt[]; +extern unsigned char hgs_1_eye3_TA_tex_txt[]; +extern unsigned char hgs_1_eye4_TA_tex_txt[]; +extern unsigned char hgs_1_eye5_TA_tex_txt[]; +extern unsigned char hgs_1_eye6_TA_tex_txt[]; +extern unsigned char hgs_1_eye7_TA_tex_txt[]; +extern unsigned char hgs_1_eye8_TA_tex_txt[]; +extern unsigned char hgs_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_wip_1; +extern unsigned short wip_1_pal[]; +extern unsigned char wip_1_eye1_TA_tex_txt[]; +extern unsigned char wip_1_eye2_TA_tex_txt[]; +extern unsigned char wip_1_eye3_TA_tex_txt[]; +extern unsigned char wip_1_eye4_TA_tex_txt[]; +extern unsigned char wip_1_eye5_TA_tex_txt[]; +extern unsigned char wip_1_eye6_TA_tex_txt[]; +extern unsigned char wip_1_eye7_TA_tex_txt[]; +extern unsigned char wip_1_eye8_TA_tex_txt[]; +extern unsigned char wip_1_mouth1_TA_tex_txt[]; +extern unsigned char wip_1_mouth2_TA_tex_txt[]; +extern unsigned char wip_1_mouth3_TA_tex_txt[]; +extern unsigned char wip_1_mouth4_TA_tex_txt[]; +extern unsigned char wip_1_mouth5_TA_tex_txt[]; +extern unsigned char wip_1_mouth6_TA_tex_txt[]; +extern unsigned char wip_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short ttl_1_pal[]; +extern unsigned char ttl_1_eye1_TA_tex_txt[]; +extern unsigned char ttl_1_eye2_TA_tex_txt[]; +extern unsigned char ttl_1_eye3_TA_tex_txt[]; +extern unsigned char ttl_1_eye4_TA_tex_txt[]; +extern unsigned char ttl_1_eye5_TA_tex_txt[]; +extern unsigned char ttl_1_eye6_TA_tex_txt[]; +extern unsigned char ttl_1_eye7_TA_tex_txt[]; +extern unsigned char ttl_1_eye8_TA_tex_txt[]; +extern unsigned char ttl_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_mka_1; +extern unsigned short mka_1_pal[]; +extern unsigned char mka_1_tmem_txt[]; +extern unsigned short mka_1_pal[]; +extern unsigned char mka_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short ttl_1_pal[]; +extern unsigned char ttl_1_eye1_TA_tex_txt[]; +extern unsigned char ttl_1_eye2_TA_tex_txt[]; +extern unsigned char ttl_1_eye3_TA_tex_txt[]; +extern unsigned char ttl_1_eye4_TA_tex_txt[]; +extern unsigned char ttl_1_eye5_TA_tex_txt[]; +extern unsigned char ttl_1_eye6_TA_tex_txt[]; +extern unsigned char ttl_1_eye7_TA_tex_txt[]; +extern unsigned char ttl_1_eye8_TA_tex_txt[]; +extern unsigned char ttl_1_tmem_txt[]; +extern unsigned short pkn_1_pal[]; +extern unsigned char pkn_1_tmem_txt[]; +extern unsigned short mnk_1_pal[]; +extern unsigned char mnk_1_eye1_TA_tex_txt[]; +extern unsigned char mnk_1_eye2_TA_tex_txt[]; +extern unsigned char mnk_1_eye3_TA_tex_txt[]; +extern unsigned char mnk_1_eye4_TA_tex_txt[]; +extern unsigned char mnk_1_eye5_TA_tex_txt[]; +extern unsigned char mnk_1_eye6_TA_tex_txt[]; +extern unsigned char mnk_1_eye7_TA_tex_txt[]; +extern unsigned char mnk_1_eye8_TA_tex_txt[]; +extern unsigned char mnk_1_mouth1_TA_tex_txt[]; +extern unsigned char mnk_1_mouth2_TA_tex_txt[]; +extern unsigned char mnk_1_mouth3_TA_tex_txt[]; +extern unsigned char mnk_1_mouth4_TA_tex_txt[]; +extern unsigned char mnk_1_mouth5_TA_tex_txt[]; +extern unsigned char mnk_1_mouth6_TA_tex_txt[]; +extern unsigned char mnk_1_tmem_txt[]; +extern unsigned short seg_1_pal[]; +extern unsigned char seg_1_eye1_TA_tex_txt[]; +extern unsigned char seg_1_eye2_TA_tex_txt[]; +extern unsigned char seg_1_eye3_TA_tex_txt[]; +extern unsigned char seg_1_eye4_TA_tex_txt[]; +extern unsigned char seg_1_eye5_TA_tex_txt[]; +extern unsigned char seg_1_eye6_TA_tex_txt[]; +extern unsigned char seg_1_eye7_TA_tex_txt[]; +extern unsigned char seg_1_eye8_TA_tex_txt[]; +extern unsigned char seg_1_tmem_txt[]; +extern unsigned short mol_1_pal[]; +extern unsigned char mol_1_eye1_TA_tex_txt[]; +extern unsigned char mol_1_eye2_TA_tex_txt[]; +extern unsigned char mol_1_eye3_TA_tex_txt[]; +extern unsigned char mol_1_eye4_TA_tex_txt[]; +extern unsigned char mol_1_eye5_TA_tex_txt[]; +extern unsigned char mol_1_eye6_TA_tex_txt[]; +extern unsigned char mol_1_eye7_TA_tex_txt[]; +extern unsigned char mol_1_eye8_TA_tex_txt[]; +extern unsigned char mol_1_mouth1_TA_tex_txt[]; +extern unsigned char mol_1_mouth2_TA_tex_txt[]; +extern unsigned char mol_1_mouth3_TA_tex_txt[]; +extern unsigned char mol_1_mouth4_TA_tex_txt[]; +extern unsigned char mol_1_mouth5_TA_tex_txt[]; +extern unsigned char mol_1_mouth6_TA_tex_txt[]; +extern unsigned char mol_1_tmem_txt[]; +extern unsigned short mol_1_pal[]; +extern unsigned char mol_1_eye1_TA_tex_txt[]; +extern unsigned char mol_1_eye2_TA_tex_txt[]; +extern unsigned char mol_1_eye3_TA_tex_txt[]; +extern unsigned char mol_1_eye4_TA_tex_txt[]; +extern unsigned char mol_1_eye5_TA_tex_txt[]; +extern unsigned char mol_1_eye6_TA_tex_txt[]; +extern unsigned char mol_1_eye7_TA_tex_txt[]; +extern unsigned char mol_1_eye8_TA_tex_txt[]; +extern unsigned char mol_1_mouth1_TA_tex_txt[]; +extern unsigned char mol_1_mouth2_TA_tex_txt[]; +extern unsigned char mol_1_mouth3_TA_tex_txt[]; +extern unsigned char mol_1_mouth4_TA_tex_txt[]; +extern unsigned char mol_1_mouth5_TA_tex_txt[]; +extern unsigned char mol_1_mouth6_TA_tex_txt[]; +extern unsigned char mol_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_mob_1; +extern unsigned short mob_1_pal[]; +extern unsigned char mob_1_eye1_TA_tex_txt[]; +extern unsigned char mob_1_eye2_TA_tex_txt[]; +extern unsigned char mob_1_eye3_TA_tex_txt[]; +extern unsigned char mob_1_eye4_TA_tex_txt[]; +extern unsigned char mob_1_eye5_TA_tex_txt[]; +extern unsigned char mob_1_eye6_TA_tex_txt[]; +extern unsigned char mob_1_eye7_TA_tex_txt[]; +extern unsigned char mob_1_eye8_TA_tex_txt[]; +extern unsigned char mob_1_mouth1_TA_tex_txt[]; +extern unsigned char mob_1_mouth2_TA_tex_txt[]; +extern unsigned char mob_1_mouth3_TA_tex_txt[]; +extern unsigned char mob_1_mouth4_TA_tex_txt[]; +extern unsigned char mob_1_mouth5_TA_tex_txt[]; +extern unsigned char mob_1_mouth6_TA_tex_txt[]; +extern unsigned char mob_1_tmem_txt[]; +extern unsigned short ttl_1_pal[]; +extern unsigned char ttl_1_eye1_TA_tex_txt[]; +extern unsigned char ttl_1_eye2_TA_tex_txt[]; +extern unsigned char ttl_1_eye3_TA_tex_txt[]; +extern unsigned char ttl_1_eye4_TA_tex_txt[]; +extern unsigned char ttl_1_eye5_TA_tex_txt[]; +extern unsigned char ttl_1_eye6_TA_tex_txt[]; +extern unsigned char ttl_1_eye7_TA_tex_txt[]; +extern unsigned char ttl_1_eye8_TA_tex_txt[]; +extern unsigned char ttl_1_tmem_txt[]; +extern unsigned short mol_1_pal[]; +extern unsigned char mol_1_eye1_TA_tex_txt[]; +extern unsigned char mol_1_eye2_TA_tex_txt[]; +extern unsigned char mol_1_eye3_TA_tex_txt[]; +extern unsigned char mol_1_eye4_TA_tex_txt[]; +extern unsigned char mol_1_eye5_TA_tex_txt[]; +extern unsigned char mol_1_eye6_TA_tex_txt[]; +extern unsigned char mol_1_eye7_TA_tex_txt[]; +extern unsigned char mol_1_eye8_TA_tex_txt[]; +extern unsigned char mol_1_mouth1_TA_tex_txt[]; +extern unsigned char mol_1_mouth2_TA_tex_txt[]; +extern unsigned char mol_1_mouth3_TA_tex_txt[]; +extern unsigned char mol_1_mouth4_TA_tex_txt[]; +extern unsigned char mol_1_mouth5_TA_tex_txt[]; +extern unsigned char mol_1_mouth6_TA_tex_txt[]; +extern unsigned char mol_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_mos_1; +extern unsigned short mos_1_pal[]; +extern unsigned char mos_1_eye1_TA_tex_txt[]; +extern unsigned char mos_1_eye2_TA_tex_txt[]; +extern unsigned char mos_1_eye3_TA_tex_txt[]; +extern unsigned char mos_1_eye4_TA_tex_txt[]; +extern unsigned char mos_1_eye5_TA_tex_txt[]; +extern unsigned char mos_1_eye6_TA_tex_txt[]; +extern unsigned char mos_1_eye7_TA_tex_txt[]; +extern unsigned char mos_1_eye8_TA_tex_txt[]; +extern unsigned char mos_1_mouth1_TA_tex_txt[]; +extern unsigned char mos_1_mouth2_TA_tex_txt[]; +extern unsigned char mos_1_mouth3_TA_tex_txt[]; +extern unsigned char mos_1_mouth4_TA_tex_txt[]; +extern unsigned char mos_1_mouth5_TA_tex_txt[]; +extern unsigned char mos_1_mouth6_TA_tex_txt[]; +extern unsigned char mos_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short ttl_1_pal[]; +extern unsigned char ttl_1_eye1_TA_tex_txt[]; +extern unsigned char ttl_1_eye2_TA_tex_txt[]; +extern unsigned char ttl_1_eye3_TA_tex_txt[]; +extern unsigned char ttl_1_eye4_TA_tex_txt[]; +extern unsigned char ttl_1_eye5_TA_tex_txt[]; +extern unsigned char ttl_1_eye6_TA_tex_txt[]; +extern unsigned char ttl_1_eye7_TA_tex_txt[]; +extern unsigned char ttl_1_eye8_TA_tex_txt[]; +extern unsigned char ttl_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_tuk_1; +extern unsigned short tuk_1_pal[]; +extern unsigned char tuk_1_eye1_TA_tex_txt[]; +extern unsigned char tuk_1_eye2_TA_tex_txt[]; +extern unsigned char tuk_1_eye3_TA_tex_txt[]; +extern unsigned char tuk_1_eye4_TA_tex_txt[]; +extern unsigned char tuk_1_eye5_TA_tex_txt[]; +extern unsigned char tuk_1_eye6_TA_tex_txt[]; +extern unsigned char tuk_1_eye7_TA_tex_txt[]; +extern unsigned char tuk_1_eye8_TA_tex_txt[]; +extern unsigned char tuk_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_hem_1; +extern unsigned short hem_1_pal[]; +extern unsigned char hem_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; + +extern aNPC_draw_data_c npc_draw_data_tbl[] = { + { + ACTOR_OBJ_BANK_133, + ACTOR_OBJ_BANK_134, + &cKF_bs_r_cat_1, + { + cat_1_tmem_txt, + cat_1_pal, + { + cat_1_eye1_TA_tex_txt, + cat_1_eye2_TA_tex_txt, + cat_1_eye3_TA_tex_txt, + cat_1_eye4_TA_tex_txt, + cat_1_eye5_TA_tex_txt, + cat_1_eye6_TA_tex_txt, + cat_1_eye7_TA_tex_txt, + cat_1_eye8_TA_tex_txt, + }, + { + cat_1_mouth1_TA_tex_txt, + cat_1_mouth2_TA_tex_txt, + cat_1_mouth3_TA_tex_txt, + cat_1_mouth4_TA_tex_txt, + cat_1_mouth5_TA_tex_txt, + cat_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 128, + }, + 0.008999999612569809, + 0, + 0, + 0, + 33, + 0, + 0, + 1, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_133, + ACTOR_OBJ_BANK_135, + &cKF_bs_r_cat_1, + { + cat_2_tmem_txt, + cat_2_pal, + { + cat_2_eye1_TA_tex_txt, + cat_2_eye2_TA_tex_txt, + cat_2_eye3_TA_tex_txt, + cat_2_eye4_TA_tex_txt, + cat_2_eye5_TA_tex_txt, + cat_2_eye6_TA_tex_txt, + cat_2_eye7_TA_tex_txt, + cat_2_eye8_TA_tex_txt, + }, + { + cat_2_mouth1_TA_tex_txt, + cat_2_mouth2_TA_tex_txt, + cat_2_mouth3_TA_tex_txt, + cat_2_mouth4_TA_tex_txt, + cat_2_mouth5_TA_tex_txt, + cat_2_mouth6_TA_tex_txt, + }, + 0, + 32, + 128, + }, + 0.008999999612569809, + 0, + 1, + 10, + 33, + 0, + 0, + 2, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_133, + ACTOR_OBJ_BANK_136, + &cKF_bs_r_cat_1, + { + cat_3_tmem_txt, + cat_3_pal, + { + cat_3_eye1_TA_tex_txt, + cat_3_eye2_TA_tex_txt, + cat_3_eye3_TA_tex_txt, + cat_3_eye4_TA_tex_txt, + cat_3_eye5_TA_tex_txt, + cat_3_eye6_TA_tex_txt, + cat_3_eye7_TA_tex_txt, + cat_3_eye8_TA_tex_txt, + }, + { + cat_3_mouth1_TA_tex_txt, + cat_3_mouth2_TA_tex_txt, + cat_3_mouth3_TA_tex_txt, + cat_3_mouth4_TA_tex_txt, + cat_3_mouth5_TA_tex_txt, + cat_3_mouth6_TA_tex_txt, + }, + 0, + 32, + 128, + }, + 0.008999999612569809, + 0, + 2, + 12, + 33, + 0, + 0, + 3, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_133, + ACTOR_OBJ_BANK_137, + &cKF_bs_r_cat_1, + { + cat_4_tmem_txt, + cat_4_pal, + { + cat_4_eye1_TA_tex_txt, + cat_4_eye2_TA_tex_txt, + cat_4_eye3_TA_tex_txt, + cat_4_eye4_TA_tex_txt, + cat_4_eye5_TA_tex_txt, + cat_4_eye6_TA_tex_txt, + cat_4_eye7_TA_tex_txt, + cat_4_eye8_TA_tex_txt, + }, + { + cat_4_mouth1_TA_tex_txt, + cat_4_mouth2_TA_tex_txt, + cat_4_mouth3_TA_tex_txt, + cat_4_mouth4_TA_tex_txt, + cat_4_mouth5_TA_tex_txt, + cat_4_mouth6_TA_tex_txt, + }, + 0, + 32, + 128, + }, + 0.008999999612569809, + 0, + 3, + 6, + 33, + 0, + 0, + 4, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_133, + ACTOR_OBJ_BANK_138, + &cKF_bs_r_cat_1, + { + cat_5_tmem_txt, + cat_5_pal, + { + cat_5_eye1_TA_tex_txt, + cat_5_eye2_TA_tex_txt, + cat_5_eye3_TA_tex_txt, + cat_5_eye4_TA_tex_txt, + cat_5_eye5_TA_tex_txt, + cat_5_eye6_TA_tex_txt, + cat_5_eye7_TA_tex_txt, + cat_5_eye8_TA_tex_txt, + }, + { + cat_5_mouth1_TA_tex_txt, + cat_5_mouth2_TA_tex_txt, + cat_5_mouth3_TA_tex_txt, + cat_5_mouth4_TA_tex_txt, + cat_5_mouth5_TA_tex_txt, + cat_5_mouth6_TA_tex_txt, + }, + 0, + 32, + 128, + }, + 0.008999999612569809, + 0, + 4, + 3, + 33, + 0, + 0, + 5, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_133, + ACTOR_OBJ_BANK_139, + &cKF_bs_r_cat_1, + { + cat_6_tmem_txt, + cat_6_pal, + { + cat_6_eye1_TA_tex_txt, + cat_6_eye2_TA_tex_txt, + cat_6_eye3_TA_tex_txt, + cat_6_eye4_TA_tex_txt, + cat_6_eye5_TA_tex_txt, + cat_6_eye6_TA_tex_txt, + cat_6_eye7_TA_tex_txt, + cat_6_eye8_TA_tex_txt, + }, + { + cat_6_mouth1_TA_tex_txt, + cat_6_mouth2_TA_tex_txt, + cat_6_mouth3_TA_tex_txt, + cat_6_mouth4_TA_tex_txt, + cat_6_mouth5_TA_tex_txt, + cat_6_mouth6_TA_tex_txt, + }, + 0, + 32, + 128, + }, + 0.008999999612569809, + 0, + 5, + 26, + 33, + 0, + 0, + 6, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_133, + ACTOR_OBJ_BANK_140, + &cKF_bs_r_cat_1, + { + cat_7_tmem_txt, + cat_7_pal, + { + cat_7_eye1_TA_tex_txt, + cat_7_eye2_TA_tex_txt, + cat_7_eye3_TA_tex_txt, + cat_7_eye4_TA_tex_txt, + cat_7_eye5_TA_tex_txt, + cat_7_eye6_TA_tex_txt, + cat_7_eye7_TA_tex_txt, + cat_7_eye8_TA_tex_txt, + }, + { + cat_7_mouth1_TA_tex_txt, + cat_7_mouth2_TA_tex_txt, + cat_7_mouth3_TA_tex_txt, + cat_7_mouth4_TA_tex_txt, + cat_7_mouth5_TA_tex_txt, + cat_7_mouth6_TA_tex_txt, + }, + 0, + 32, + 128, + }, + 0.008999999612569809, + 0, + 6, + 13, + 33, + 0, + 0, + 7, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_133, + ACTOR_OBJ_BANK_141, + &cKF_bs_r_cat_1, + { + cat_8_tmem_txt, + cat_8_pal, + { + cat_8_eye1_TA_tex_txt, + cat_8_eye2_TA_tex_txt, + cat_8_eye3_TA_tex_txt, + cat_8_eye4_TA_tex_txt, + cat_8_eye5_TA_tex_txt, + cat_8_eye6_TA_tex_txt, + cat_8_eye7_TA_tex_txt, + cat_8_eye8_TA_tex_txt, + }, + { + cat_8_mouth1_TA_tex_txt, + cat_8_mouth2_TA_tex_txt, + cat_8_mouth3_TA_tex_txt, + cat_8_mouth4_TA_tex_txt, + cat_8_mouth5_TA_tex_txt, + cat_8_mouth6_TA_tex_txt, + }, + 0, + 32, + 128, + }, + 0.008999999612569809, + 0, + 7, + 6, + 33, + 0, + 0, + 8, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_133, + ACTOR_OBJ_BANK_142, + &cKF_bs_r_cat_1, + { + cat_9_tmem_txt, + cat_9_pal, + { + cat_9_eye1_TA_tex_txt, + cat_9_eye2_TA_tex_txt, + cat_9_eye3_TA_tex_txt, + cat_9_eye4_TA_tex_txt, + cat_9_eye5_TA_tex_txt, + cat_9_eye6_TA_tex_txt, + cat_9_eye7_TA_tex_txt, + cat_9_eye8_TA_tex_txt, + }, + { + cat_9_mouth1_TA_tex_txt, + cat_9_mouth2_TA_tex_txt, + cat_9_mouth3_TA_tex_txt, + cat_9_mouth4_TA_tex_txt, + cat_9_mouth5_TA_tex_txt, + cat_9_mouth6_TA_tex_txt, + }, + 0, + 32, + 128, + }, + 0.008999999612569809, + 0, + 8, + 31, + 33, + 0, + 0, + 9, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_133, + ACTOR_OBJ_BANK_143, + &cKF_bs_r_cat_1, + { + cat_10_tmem_txt, + cat_10_pal, + { + cat_10_eye1_TA_tex_txt, + cat_10_eye2_TA_tex_txt, + cat_10_eye3_TA_tex_txt, + cat_10_eye4_TA_tex_txt, + cat_10_eye5_TA_tex_txt, + cat_10_eye6_TA_tex_txt, + cat_10_eye7_TA_tex_txt, + cat_10_eye8_TA_tex_txt, + }, + { + cat_10_mouth1_TA_tex_txt, + cat_10_mouth2_TA_tex_txt, + cat_10_mouth3_TA_tex_txt, + cat_10_mouth4_TA_tex_txt, + cat_10_mouth5_TA_tex_txt, + cat_10_mouth6_TA_tex_txt, + }, + 0, + 32, + 128, + }, + 0.008999999612569809, + 0, + 9, + 22, + 33, + 0, + 0, + 10, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_133, + ACTOR_OBJ_BANK_144, + &cKF_bs_r_cat_1, + { + cat_11_tmem_txt, + cat_11_pal, + { + cat_11_eye1_TA_tex_txt, + cat_11_eye2_TA_tex_txt, + cat_11_eye3_TA_tex_txt, + cat_11_eye4_TA_tex_txt, + cat_11_eye5_TA_tex_txt, + cat_11_eye6_TA_tex_txt, + cat_11_eye7_TA_tex_txt, + cat_11_eye8_TA_tex_txt, + }, + { + cat_11_mouth1_TA_tex_txt, + cat_11_mouth2_TA_tex_txt, + cat_11_mouth3_TA_tex_txt, + cat_11_mouth4_TA_tex_txt, + cat_11_mouth5_TA_tex_txt, + cat_11_mouth6_TA_tex_txt, + }, + 0, + 32, + 128, + }, + 0.008999999612569809, + 0, + 10, + 9, + 33, + 0, + 0, + 11, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_133, + ACTOR_OBJ_BANK_145, + &cKF_bs_r_cat_1, + { + cat_12_tmem_txt, + cat_12_pal, + { + cat_12_eye1_TA_tex_txt, + cat_12_eye2_TA_tex_txt, + cat_12_eye3_TA_tex_txt, + cat_12_eye4_TA_tex_txt, + cat_12_eye5_TA_tex_txt, + cat_12_eye6_TA_tex_txt, + cat_12_eye7_TA_tex_txt, + cat_12_eye8_TA_tex_txt, + }, + { + cat_12_mouth1_TA_tex_txt, + cat_12_mouth2_TA_tex_txt, + cat_12_mouth3_TA_tex_txt, + cat_12_mouth4_TA_tex_txt, + cat_12_mouth5_TA_tex_txt, + cat_12_mouth6_TA_tex_txt, + }, + 0, + 32, + 128, + }, + 0.008999999612569809, + 0, + 11, + 31, + 33, + 0, + 0, + 12, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_133, + ACTOR_OBJ_BANK_146, + &cKF_bs_r_cat_1, + { + cat_13_tmem_txt, + cat_13_pal, + { + cat_13_eye1_TA_tex_txt, + cat_13_eye2_TA_tex_txt, + cat_13_eye3_TA_tex_txt, + cat_13_eye4_TA_tex_txt, + cat_13_eye5_TA_tex_txt, + cat_13_eye6_TA_tex_txt, + cat_13_eye7_TA_tex_txt, + cat_13_eye8_TA_tex_txt, + }, + { + cat_13_mouth1_TA_tex_txt, + cat_13_mouth2_TA_tex_txt, + cat_13_mouth3_TA_tex_txt, + cat_13_mouth4_TA_tex_txt, + cat_13_mouth5_TA_tex_txt, + cat_13_mouth6_TA_tex_txt, + }, + 0, + 32, + 128, + }, + 0.008999999612569809, + 0, + 12, + 1, + 33, + 0, + 0, + 13, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_88, + ACTOR_OBJ_BANK_89, + &cKF_bs_r_ant_1, + { + ant_1_tmem_txt, + ant_1_pal, + { + ant_1_eye1_TA_tex_txt, + ant_1_eye2_TA_tex_txt, + ant_1_eye3_TA_tex_txt, + ant_1_eye4_TA_tex_txt, + ant_1_eye5_TA_tex_txt, + ant_1_eye6_TA_tex_txt, + ant_1_eye7_TA_tex_txt, + ant_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 32, + 0, + 152, + }, + 0.010700000450015068, + 1, + 0, + 27, + 41, + 0, + 0, + 159, + 25, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_88, + ACTOR_OBJ_BANK_90, + &cKF_bs_r_ant_1, + { + ant_2_tmem_txt, + ant_2_pal, + { + ant_2_eye1_TA_tex_txt, + ant_2_eye2_TA_tex_txt, + ant_2_eye3_TA_tex_txt, + ant_2_eye4_TA_tex_txt, + ant_2_eye5_TA_tex_txt, + ant_2_eye6_TA_tex_txt, + ant_2_eye7_TA_tex_txt, + ant_2_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 32, + 0, + 152, + }, + 0.010700000450015068, + 1, + 1, + 8, + 41, + 0, + 0, + 160, + 25, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_88, + ACTOR_OBJ_BANK_91, + &cKF_bs_r_ant_1, + { + ant_3_tmem_txt, + ant_3_pal, + { + ant_3_eye1_TA_tex_txt, + ant_3_eye2_TA_tex_txt, + ant_3_eye3_TA_tex_txt, + ant_3_eye4_TA_tex_txt, + ant_3_eye5_TA_tex_txt, + ant_3_eye6_TA_tex_txt, + ant_3_eye7_TA_tex_txt, + ant_3_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 32, + 0, + 152, + }, + 0.010700000450015068, + 1, + 2, + 17, + 41, + 0, + 0, + 161, + 25, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_88, + ACTOR_OBJ_BANK_92, + &cKF_bs_r_ant_1, + { + ant_4_tmem_txt, + ant_4_pal, + { + ant_4_eye1_TA_tex_txt, + ant_4_eye2_TA_tex_txt, + ant_4_eye3_TA_tex_txt, + ant_4_eye4_TA_tex_txt, + ant_4_eye5_TA_tex_txt, + ant_4_eye6_TA_tex_txt, + ant_4_eye7_TA_tex_txt, + ant_4_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 32, + 0, + 152, + }, + 0.010700000450015068, + 1, + 3, + 21, + 41, + 0, + 0, + 162, + 25, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_88, + ACTOR_OBJ_BANK_93, + &cKF_bs_r_ant_1, + { + ant_5_tmem_txt, + ant_5_pal, + { + ant_5_eye1_TA_tex_txt, + ant_5_eye2_TA_tex_txt, + ant_5_eye3_TA_tex_txt, + ant_5_eye4_TA_tex_txt, + ant_5_eye5_TA_tex_txt, + ant_5_eye6_TA_tex_txt, + ant_5_eye7_TA_tex_txt, + ant_5_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 32, + 0, + 152, + }, + 0.010700000450015068, + 1, + 4, + 26, + 41, + 0, + 0, + 163, + 25, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_96, + ACTOR_OBJ_BANK_97, + &cKF_bs_r_bea_1, + { + bea_1_tmem_txt, + bea_1_pal, + { + bea_1_eye1_TA_tex_txt, + bea_1_eye2_TA_tex_txt, + bea_1_eye3_TA_tex_txt, + bea_1_eye4_TA_tex_txt, + bea_1_eye5_TA_tex_txt, + bea_1_eye6_TA_tex_txt, + bea_1_eye7_TA_tex_txt, + bea_1_eye8_TA_tex_txt, + }, + { + bea_1_mouth1_TA_tex_txt, + bea_1_mouth2_TA_tex_txt, + bea_1_mouth3_TA_tex_txt, + bea_1_mouth4_TA_tex_txt, + bea_1_mouth5_TA_tex_txt, + bea_1_mouth6_TA_tex_txt, + }, + 64, + 96, + 176, + }, + 0.008999999612569809, + 0, + 0, + 21, + 47, + 0, + 0, + 27, + 20, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_96, + ACTOR_OBJ_BANK_98, + &cKF_bs_r_bea_1, + { + bea_2_tmem_txt, + bea_2_pal, + { + bea_2_eye1_TA_tex_txt, + bea_2_eye2_TA_tex_txt, + bea_2_eye3_TA_tex_txt, + bea_2_eye4_TA_tex_txt, + bea_2_eye5_TA_tex_txt, + bea_2_eye6_TA_tex_txt, + bea_2_eye7_TA_tex_txt, + bea_2_eye8_TA_tex_txt, + }, + { + bea_2_mouth1_TA_tex_txt, + bea_2_mouth2_TA_tex_txt, + bea_2_mouth3_TA_tex_txt, + bea_2_mouth4_TA_tex_txt, + bea_2_mouth5_TA_tex_txt, + bea_2_mouth6_TA_tex_txt, + }, + 64, + 96, + 176, + }, + 0.008999999612569809, + 0, + 1, + 25, + 47, + 0, + 0, + 28, + 20, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_96, + ACTOR_OBJ_BANK_99, + &cKF_bs_r_bea_1, + { + bea_3_tmem_txt, + bea_3_pal, + { + bea_3_eye1_TA_tex_txt, + bea_3_eye2_TA_tex_txt, + bea_3_eye3_TA_tex_txt, + bea_3_eye4_TA_tex_txt, + bea_3_eye5_TA_tex_txt, + bea_3_eye6_TA_tex_txt, + bea_3_eye7_TA_tex_txt, + bea_3_eye8_TA_tex_txt, + }, + { + bea_3_mouth1_TA_tex_txt, + bea_3_mouth2_TA_tex_txt, + bea_3_mouth3_TA_tex_txt, + bea_3_mouth4_TA_tex_txt, + bea_3_mouth5_TA_tex_txt, + bea_3_mouth6_TA_tex_txt, + }, + 64, + 96, + 176, + }, + 0.008999999612569809, + 0, + 2, + 18, + 47, + 0, + 0, + 29, + 20, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_96, + ACTOR_OBJ_BANK_101, + &cKF_bs_r_bea_1, + { + bea_5_tmem_txt, + bea_5_pal, + { + bea_5_eye1_TA_tex_txt, + bea_5_eye2_TA_tex_txt, + bea_5_eye3_TA_tex_txt, + bea_5_eye4_TA_tex_txt, + bea_5_eye5_TA_tex_txt, + bea_5_eye6_TA_tex_txt, + bea_5_eye7_TA_tex_txt, + bea_5_eye8_TA_tex_txt, + }, + { + bea_5_mouth1_TA_tex_txt, + bea_5_mouth2_TA_tex_txt, + bea_5_mouth3_TA_tex_txt, + bea_5_mouth4_TA_tex_txt, + bea_5_mouth5_TA_tex_txt, + bea_5_mouth6_TA_tex_txt, + }, + 64, + 96, + 176, + }, + 0.008999999612569809, + 0, + 4, + 3, + 47, + 0, + 0, + 31, + 20, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_96, + ACTOR_OBJ_BANK_102, + &cKF_bs_r_bea_1, + { + bea_6_tmem_txt, + bea_6_pal, + { + bea_6_eye1_TA_tex_txt, + bea_6_eye2_TA_tex_txt, + bea_6_eye3_TA_tex_txt, + bea_6_eye4_TA_tex_txt, + bea_6_eye5_TA_tex_txt, + bea_6_eye6_TA_tex_txt, + bea_6_eye7_TA_tex_txt, + bea_6_eye8_TA_tex_txt, + }, + { + bea_6_mouth1_TA_tex_txt, + bea_6_mouth2_TA_tex_txt, + bea_6_mouth3_TA_tex_txt, + bea_6_mouth4_TA_tex_txt, + bea_6_mouth5_TA_tex_txt, + bea_6_mouth6_TA_tex_txt, + }, + 64, + 96, + 176, + }, + 0.008999999612569809, + 0, + 5, + 24, + 47, + 0, + 0, + 32, + 20, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_96, + ACTOR_OBJ_BANK_103, + &cKF_bs_r_bea_1, + { + bea_7_tmem_txt, + bea_7_pal, + { + bea_7_eye1_TA_tex_txt, + bea_7_eye2_TA_tex_txt, + bea_7_eye3_TA_tex_txt, + bea_7_eye4_TA_tex_txt, + bea_7_eye5_TA_tex_txt, + bea_7_eye6_TA_tex_txt, + bea_7_eye7_TA_tex_txt, + bea_7_eye8_TA_tex_txt, + }, + { + bea_7_mouth1_TA_tex_txt, + bea_7_mouth2_TA_tex_txt, + bea_7_mouth3_TA_tex_txt, + bea_7_mouth4_TA_tex_txt, + bea_7_mouth5_TA_tex_txt, + bea_7_mouth6_TA_tex_txt, + }, + 64, + 96, + 176, + }, + 0.008999999612569809, + 0, + 6, + 27, + 47, + 0, + 0, + 33, + 20, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_96, + ACTOR_OBJ_BANK_104, + &cKF_bs_r_bea_1, + { + bea_8_tmem_txt, + bea_8_pal, + { + bea_8_eye1_TA_tex_txt, + bea_8_eye2_TA_tex_txt, + bea_8_eye3_TA_tex_txt, + bea_8_eye4_TA_tex_txt, + bea_8_eye5_TA_tex_txt, + bea_8_eye6_TA_tex_txt, + bea_8_eye7_TA_tex_txt, + bea_8_eye8_TA_tex_txt, + }, + { + bea_8_mouth1_TA_tex_txt, + bea_8_mouth2_TA_tex_txt, + bea_8_mouth3_TA_tex_txt, + bea_8_mouth4_TA_tex_txt, + bea_8_mouth5_TA_tex_txt, + bea_8_mouth6_TA_tex_txt, + }, + 64, + 96, + 176, + }, + 0.008999999612569809, + 0, + 7, + 2, + 47, + 0, + 0, + 34, + 20, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_96, + ACTOR_OBJ_BANK_105, + &cKF_bs_r_bea_1, + { + bea_9_tmem_txt, + bea_9_pal, + { + bea_9_eye1_TA_tex_txt, + bea_9_eye2_TA_tex_txt, + bea_9_eye3_TA_tex_txt, + bea_9_eye4_TA_tex_txt, + bea_9_eye5_TA_tex_txt, + bea_9_eye6_TA_tex_txt, + bea_9_eye7_TA_tex_txt, + bea_9_eye8_TA_tex_txt, + }, + { + bea_9_mouth1_TA_tex_txt, + bea_9_mouth2_TA_tex_txt, + bea_9_mouth3_TA_tex_txt, + bea_9_mouth4_TA_tex_txt, + bea_9_mouth5_TA_tex_txt, + bea_9_mouth6_TA_tex_txt, + }, + 64, + 96, + 176, + }, + 0.008999999612569809, + 0, + 8, + 26, + 47, + 0, + 0, + 35, + 20, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_96, + ACTOR_OBJ_BANK_106, + &cKF_bs_r_bea_1, + { + bea_10_tmem_txt, + bea_10_pal, + { + bea_10_eye1_TA_tex_txt, + bea_10_eye2_TA_tex_txt, + bea_10_eye3_TA_tex_txt, + bea_10_eye4_TA_tex_txt, + bea_10_eye5_TA_tex_txt, + bea_10_eye6_TA_tex_txt, + bea_10_eye7_TA_tex_txt, + bea_10_eye8_TA_tex_txt, + }, + { + bea_10_mouth1_TA_tex_txt, + bea_10_mouth2_TA_tex_txt, + bea_10_mouth3_TA_tex_txt, + bea_10_mouth4_TA_tex_txt, + bea_10_mouth5_TA_tex_txt, + bea_10_mouth6_TA_tex_txt, + }, + 64, + 96, + 176, + }, + 0.008999999612569809, + 0, + 9, + 2, + 47, + 0, + 0, + 36, + 20, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_113, + ACTOR_OBJ_BANK_114, + &cKF_bs_r_brd_1, + { + brd_1_tmem_txt, + brd_1_pal, + { + brd_1_eye1_TA_tex_txt, + brd_1_eye2_TA_tex_txt, + brd_1_eye3_TA_tex_txt, + brd_1_eye4_TA_tex_txt, + brd_1_eye5_TA_tex_txt, + brd_1_eye6_TA_tex_txt, + brd_1_eye7_TA_tex_txt, + brd_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 8, + 0, + 144, + }, + 0.009499999694526196, + 1, + 0, + 18, + 35, + 0, + 0, + 124, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_113, + ACTOR_OBJ_BANK_115, + &cKF_bs_r_brd_1, + { + brd_2_tmem_txt, + brd_2_pal, + { + brd_2_eye1_TA_tex_txt, + brd_2_eye2_TA_tex_txt, + brd_2_eye3_TA_tex_txt, + brd_2_eye4_TA_tex_txt, + brd_2_eye5_TA_tex_txt, + brd_2_eye6_TA_tex_txt, + brd_2_eye7_TA_tex_txt, + brd_2_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 8, + 0, + 144, + }, + 0.009499999694526196, + 1, + 1, + 0, + 35, + 0, + 0, + 125, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_113, + ACTOR_OBJ_BANK_116, + &cKF_bs_r_brd_1, + { + brd_3_tmem_txt, + brd_3_pal, + { + brd_3_eye1_TA_tex_txt, + brd_3_eye2_TA_tex_txt, + brd_3_eye3_TA_tex_txt, + brd_3_eye4_TA_tex_txt, + brd_3_eye5_TA_tex_txt, + brd_3_eye6_TA_tex_txt, + brd_3_eye7_TA_tex_txt, + brd_3_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 8, + 0, + 144, + }, + 0.009499999694526196, + 1, + 2, + 3, + 35, + 0, + 0, + 126, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_113, + ACTOR_OBJ_BANK_117, + &cKF_bs_r_brd_1, + { + brd_4_tmem_txt, + brd_4_pal, + { + brd_4_eye1_TA_tex_txt, + brd_4_eye2_TA_tex_txt, + brd_4_eye3_TA_tex_txt, + brd_4_eye4_TA_tex_txt, + brd_4_eye5_TA_tex_txt, + brd_4_eye6_TA_tex_txt, + brd_4_eye7_TA_tex_txt, + brd_4_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 8, + 0, + 144, + }, + 0.009499999694526196, + 1, + 3, + 1, + 35, + 0, + 0, + 127, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_113, + ACTOR_OBJ_BANK_118, + &cKF_bs_r_brd_1, + { + brd_5_tmem_txt, + brd_5_pal, + { + brd_5_eye1_TA_tex_txt, + brd_5_eye2_TA_tex_txt, + brd_5_eye3_TA_tex_txt, + brd_5_eye4_TA_tex_txt, + brd_5_eye5_TA_tex_txt, + brd_5_eye6_TA_tex_txt, + brd_5_eye7_TA_tex_txt, + brd_5_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 8, + 0, + 144, + }, + 0.009499999694526196, + 1, + 4, + 21, + 35, + 0, + 0, + 128, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_113, + ACTOR_OBJ_BANK_119, + &cKF_bs_r_brd_1, + { + brd_6_tmem_txt, + brd_6_pal, + { + brd_6_eye1_TA_tex_txt, + brd_6_eye2_TA_tex_txt, + brd_6_eye3_TA_tex_txt, + brd_6_eye4_TA_tex_txt, + brd_6_eye5_TA_tex_txt, + brd_6_eye6_TA_tex_txt, + brd_6_eye7_TA_tex_txt, + brd_6_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 8, + 0, + 144, + }, + 0.009499999694526196, + 1, + 5, + 24, + 35, + 0, + 0, + 129, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_113, + ACTOR_OBJ_BANK_120, + &cKF_bs_r_brd_1, + { + brd_7_tmem_txt, + brd_7_pal, + { + brd_7_eye1_TA_tex_txt, + brd_7_eye2_TA_tex_txt, + brd_7_eye3_TA_tex_txt, + brd_7_eye4_TA_tex_txt, + brd_7_eye5_TA_tex_txt, + brd_7_eye6_TA_tex_txt, + brd_7_eye7_TA_tex_txt, + brd_7_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 8, + 0, + 144, + }, + 0.009499999694526196, + 1, + 6, + 30, + 35, + 0, + 0, + 130, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_113, + ACTOR_OBJ_BANK_121, + &cKF_bs_r_brd_1, + { + brd_8_tmem_txt, + brd_8_pal, + { + brd_8_eye1_TA_tex_txt, + brd_8_eye2_TA_tex_txt, + brd_8_eye3_TA_tex_txt, + brd_8_eye4_TA_tex_txt, + brd_8_eye5_TA_tex_txt, + brd_8_eye6_TA_tex_txt, + brd_8_eye7_TA_tex_txt, + brd_8_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 8, + 0, + 144, + }, + 0.009499999694526196, + 1, + 7, + 20, + 35, + 0, + 0, + 131, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_113, + ACTOR_OBJ_BANK_122, + &cKF_bs_r_brd_1, + { + brd_9_tmem_txt, + brd_9_pal, + { + brd_9_eye1_TA_tex_txt, + brd_9_eye2_TA_tex_txt, + brd_9_eye3_TA_tex_txt, + brd_9_eye4_TA_tex_txt, + brd_9_eye5_TA_tex_txt, + brd_9_eye6_TA_tex_txt, + brd_9_eye7_TA_tex_txt, + brd_9_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 8, + 0, + 144, + }, + 0.009499999694526196, + 1, + 8, + 23, + 35, + 0, + 0, + 132, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_113, + ACTOR_OBJ_BANK_123, + &cKF_bs_r_brd_1, + { + brd_10_tmem_txt, + brd_10_pal, + { + brd_10_eye1_TA_tex_txt, + brd_10_eye2_TA_tex_txt, + brd_10_eye3_TA_tex_txt, + brd_10_eye4_TA_tex_txt, + brd_10_eye5_TA_tex_txt, + brd_10_eye6_TA_tex_txt, + brd_10_eye7_TA_tex_txt, + brd_10_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 8, + 0, + 144, + }, + 0.009499999694526196, + 1, + 9, + 31, + 35, + 0, + 0, + 133, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_126, + ACTOR_OBJ_BANK_127, + &cKF_bs_r_bul_1, + { + bul_1_tmem_txt, + bul_1_pal, + { + bul_1_eye1_TA_tex_txt, + bul_1_eye2_TA_tex_txt, + bul_1_eye3_TA_tex_txt, + bul_1_eye4_TA_tex_txt, + bul_1_eye5_TA_tex_txt, + bul_1_eye6_TA_tex_txt, + bul_1_eye7_TA_tex_txt, + bul_1_eye8_TA_tex_txt, + }, + { + bul_1_mouth1_TA_tex_txt, + bul_1_mouth2_TA_tex_txt, + bul_1_mouth3_TA_tex_txt, + bul_1_mouth4_TA_tex_txt, + bul_1_mouth5_TA_tex_txt, + bul_1_mouth6_TA_tex_txt, + }, + 128, + 32, + 176, + }, + 0.012500000186264515, + 0, + 0, + 13, + 45, + 0, + 0, + 116, + 25, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_126, + ACTOR_OBJ_BANK_128, + &cKF_bs_r_bul_1, + { + bul_2_tmem_txt, + bul_2_pal, + { + bul_2_eye1_TA_tex_txt, + bul_2_eye2_TA_tex_txt, + bul_2_eye3_TA_tex_txt, + bul_2_eye4_TA_tex_txt, + bul_2_eye5_TA_tex_txt, + bul_2_eye6_TA_tex_txt, + bul_2_eye7_TA_tex_txt, + bul_2_eye8_TA_tex_txt, + }, + { + bul_2_mouth1_TA_tex_txt, + bul_2_mouth2_TA_tex_txt, + bul_2_mouth3_TA_tex_txt, + bul_2_mouth4_TA_tex_txt, + bul_2_mouth5_TA_tex_txt, + bul_2_mouth6_TA_tex_txt, + }, + 128, + 32, + 176, + }, + 0.012500000186264515, + 0, + 1, + 8, + 45, + 0, + 0, + 117, + 25, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_148, + ACTOR_OBJ_BANK_149, + &cKF_bs_r_chn_1, + { + chn_1_tmem_txt, + chn_1_pal, + { + chn_1_eye1_TA_tex_txt, + chn_1_eye2_TA_tex_txt, + chn_1_eye3_TA_tex_txt, + chn_1_eye4_TA_tex_txt, + chn_1_eye5_TA_tex_txt, + chn_1_eye6_TA_tex_txt, + chn_1_eye7_TA_tex_txt, + chn_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 16, + 0, + 152, + }, + 0.009999999776482582, + 1, + 0, + 21, + 35, + 0, + 0, + 108, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_148, + ACTOR_OBJ_BANK_150, + &cKF_bs_r_chn_1, + { + chn_2_tmem_txt, + chn_2_pal, + { + chn_2_eye1_TA_tex_txt, + chn_2_eye2_TA_tex_txt, + chn_2_eye3_TA_tex_txt, + chn_2_eye4_TA_tex_txt, + chn_2_eye5_TA_tex_txt, + chn_2_eye6_TA_tex_txt, + chn_2_eye7_TA_tex_txt, + chn_2_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 16, + 0, + 152, + }, + 0.009999999776482582, + 1, + 1, + 12, + 35, + 0, + 0, + 109, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_148, + ACTOR_OBJ_BANK_151, + &cKF_bs_r_chn_1, + { + chn_3_tmem_txt, + chn_3_pal, + { + chn_3_eye1_TA_tex_txt, + chn_3_eye2_TA_tex_txt, + chn_3_eye3_TA_tex_txt, + chn_3_eye4_TA_tex_txt, + chn_3_eye5_TA_tex_txt, + chn_3_eye6_TA_tex_txt, + chn_3_eye7_TA_tex_txt, + chn_3_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 16, + 0, + 152, + }, + 0.009999999776482582, + 1, + 2, + 14, + 35, + 0, + 0, + 110, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_148, + ACTOR_OBJ_BANK_152, + &cKF_bs_r_chn_1, + { + chn_4_tmem_txt, + chn_4_pal, + { + chn_4_eye1_TA_tex_txt, + chn_4_eye2_TA_tex_txt, + chn_4_eye3_TA_tex_txt, + chn_4_eye4_TA_tex_txt, + chn_4_eye5_TA_tex_txt, + chn_4_eye6_TA_tex_txt, + chn_4_eye7_TA_tex_txt, + chn_4_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 16, + 0, + 152, + }, + 0.009999999776482582, + 1, + 3, + 30, + 35, + 0, + 0, + 111, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_148, + ACTOR_OBJ_BANK_153, + &cKF_bs_r_chn_1, + { + chn_5_tmem_txt, + chn_5_pal, + { + chn_5_eye1_TA_tex_txt, + chn_5_eye2_TA_tex_txt, + chn_5_eye3_TA_tex_txt, + chn_5_eye4_TA_tex_txt, + chn_5_eye5_TA_tex_txt, + chn_5_eye6_TA_tex_txt, + chn_5_eye7_TA_tex_txt, + chn_5_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 16, + 0, + 152, + }, + 0.009999999776482582, + 1, + 4, + 22, + 35, + 0, + 0, + 112, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_148, + ACTOR_OBJ_BANK_154, + &cKF_bs_r_chn_1, + { + chn_6_tmem_txt, + chn_6_pal, + { + chn_6_eye1_TA_tex_txt, + chn_6_eye2_TA_tex_txt, + chn_6_eye3_TA_tex_txt, + chn_6_eye4_TA_tex_txt, + chn_6_eye5_TA_tex_txt, + chn_6_eye6_TA_tex_txt, + chn_6_eye7_TA_tex_txt, + chn_6_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 16, + 0, + 152, + }, + 0.009999999776482582, + 1, + 5, + 28, + 35, + 0, + 0, + 113, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_148, + ACTOR_OBJ_BANK_155, + &cKF_bs_r_chn_1, + { + chn_7_tmem_txt, + chn_7_pal, + { + chn_7_eye1_TA_tex_txt, + chn_7_eye2_TA_tex_txt, + chn_7_eye3_TA_tex_txt, + chn_7_eye4_TA_tex_txt, + chn_7_eye5_TA_tex_txt, + chn_7_eye6_TA_tex_txt, + chn_7_eye7_TA_tex_txt, + chn_7_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 16, + 0, + 152, + }, + 0.009999999776482582, + 1, + 6, + 18, + 35, + 0, + 0, + 114, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_148, + ACTOR_OBJ_BANK_156, + &cKF_bs_r_chn_1, + { + chn_8_tmem_txt, + chn_8_pal, + { + chn_8_eye1_TA_tex_txt, + chn_8_eye2_TA_tex_txt, + chn_8_eye3_TA_tex_txt, + chn_8_eye4_TA_tex_txt, + chn_8_eye5_TA_tex_txt, + chn_8_eye6_TA_tex_txt, + chn_8_eye7_TA_tex_txt, + chn_8_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 16, + 0, + 152, + }, + 0.009999999776482582, + 1, + 7, + 1, + 35, + 0, + 0, + 115, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_157, + ACTOR_OBJ_BANK_158, + &cKF_bs_r_cbr_1, + { + cbr_1_tmem_txt, + cbr_1_pal, + { + cbr_1_eye1_TA_tex_txt, + cbr_1_eye2_TA_tex_txt, + cbr_1_eye3_TA_tex_txt, + cbr_1_eye4_TA_tex_txt, + cbr_1_eye5_TA_tex_txt, + cbr_1_eye6_TA_tex_txt, + cbr_1_eye7_TA_tex_txt, + cbr_1_eye8_TA_tex_txt, + }, + { + cbr_1_mouth1_TA_tex_txt, + cbr_1_mouth2_TA_tex_txt, + cbr_1_mouth3_TA_tex_txt, + cbr_1_mouth4_TA_tex_txt, + cbr_1_mouth5_TA_tex_txt, + cbr_1_mouth6_TA_tex_txt, + }, + 128, + 8, + 176, + }, + 0.006500000134110451, + 0, + 0, + 31, + 33, + 0, + 0, + 180, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_157, + ACTOR_OBJ_BANK_159, + &cKF_bs_r_cbr_1, + { + cbr_2_tmem_txt, + cbr_2_pal, + { + cbr_2_eye1_TA_tex_txt, + cbr_2_eye2_TA_tex_txt, + cbr_2_eye3_TA_tex_txt, + cbr_2_eye4_TA_tex_txt, + cbr_2_eye5_TA_tex_txt, + cbr_2_eye6_TA_tex_txt, + cbr_2_eye7_TA_tex_txt, + cbr_2_eye8_TA_tex_txt, + }, + { + cbr_2_mouth1_TA_tex_txt, + cbr_2_mouth2_TA_tex_txt, + cbr_2_mouth3_TA_tex_txt, + cbr_2_mouth4_TA_tex_txt, + cbr_2_mouth5_TA_tex_txt, + cbr_2_mouth6_TA_tex_txt, + }, + 128, + 8, + 176, + }, + 0.006500000134110451, + 0, + 1, + 28, + 33, + 0, + 0, + 181, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_157, + ACTOR_OBJ_BANK_160, + &cKF_bs_r_cbr_1, + { + cbr_3_tmem_txt, + cbr_3_pal, + { + cbr_3_eye1_TA_tex_txt, + cbr_3_eye2_TA_tex_txt, + cbr_3_eye3_TA_tex_txt, + cbr_3_eye4_TA_tex_txt, + cbr_3_eye5_TA_tex_txt, + cbr_3_eye6_TA_tex_txt, + cbr_3_eye7_TA_tex_txt, + cbr_3_eye8_TA_tex_txt, + }, + { + cbr_3_mouth1_TA_tex_txt, + cbr_3_mouth2_TA_tex_txt, + cbr_3_mouth3_TA_tex_txt, + cbr_3_mouth4_TA_tex_txt, + cbr_3_mouth5_TA_tex_txt, + cbr_3_mouth6_TA_tex_txt, + }, + 128, + 8, + 176, + }, + 0.006500000134110451, + 0, + 2, + 6, + 33, + 0, + 0, + 182, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_157, + ACTOR_OBJ_BANK_161, + &cKF_bs_r_cbr_1, + { + cbr_4_tmem_txt, + cbr_4_pal, + { + cbr_4_eye1_TA_tex_txt, + cbr_4_eye2_TA_tex_txt, + cbr_4_eye3_TA_tex_txt, + cbr_4_eye4_TA_tex_txt, + cbr_4_eye5_TA_tex_txt, + cbr_4_eye6_TA_tex_txt, + cbr_4_eye7_TA_tex_txt, + cbr_4_eye8_TA_tex_txt, + }, + { + cbr_4_mouth1_TA_tex_txt, + cbr_4_mouth2_TA_tex_txt, + cbr_4_mouth3_TA_tex_txt, + cbr_4_mouth4_TA_tex_txt, + cbr_4_mouth5_TA_tex_txt, + cbr_4_mouth6_TA_tex_txt, + }, + 128, + 8, + 176, + }, + 0.006500000134110451, + 0, + 3, + 15, + 33, + 0, + 0, + 183, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_157, + ACTOR_OBJ_BANK_162, + &cKF_bs_r_cbr_1, + { + cbr_5_tmem_txt, + cbr_5_pal, + { + cbr_5_eye1_TA_tex_txt, + cbr_5_eye2_TA_tex_txt, + cbr_5_eye3_TA_tex_txt, + cbr_5_eye4_TA_tex_txt, + cbr_5_eye5_TA_tex_txt, + cbr_5_eye6_TA_tex_txt, + cbr_5_eye7_TA_tex_txt, + cbr_5_eye8_TA_tex_txt, + }, + { + cbr_5_mouth1_TA_tex_txt, + cbr_5_mouth2_TA_tex_txt, + cbr_5_mouth3_TA_tex_txt, + cbr_5_mouth4_TA_tex_txt, + cbr_5_mouth5_TA_tex_txt, + cbr_5_mouth6_TA_tex_txt, + }, + 128, + 8, + 176, + }, + 0.006500000134110451, + 0, + 4, + 20, + 33, + 0, + 0, + 184, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_157, + ACTOR_OBJ_BANK_163, + &cKF_bs_r_cbr_1, + { + cbr_6_tmem_txt, + cbr_6_pal, + { + cbr_6_eye1_TA_tex_txt, + cbr_6_eye2_TA_tex_txt, + cbr_6_eye3_TA_tex_txt, + cbr_6_eye4_TA_tex_txt, + cbr_6_eye5_TA_tex_txt, + cbr_6_eye6_TA_tex_txt, + cbr_6_eye7_TA_tex_txt, + cbr_6_eye8_TA_tex_txt, + }, + { + cbr_6_mouth1_TA_tex_txt, + cbr_6_mouth2_TA_tex_txt, + cbr_6_mouth3_TA_tex_txt, + cbr_6_mouth4_TA_tex_txt, + cbr_6_mouth5_TA_tex_txt, + cbr_6_mouth6_TA_tex_txt, + }, + 128, + 8, + 176, + }, + 0.006500000134110451, + 0, + 5, + 25, + 33, + 0, + 0, + 185, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_157, + ACTOR_OBJ_BANK_164, + &cKF_bs_r_cbr_1, + { + cbr_7_tmem_txt, + cbr_7_pal, + { + cbr_7_eye1_TA_tex_txt, + cbr_7_eye2_TA_tex_txt, + cbr_7_eye3_TA_tex_txt, + cbr_7_eye4_TA_tex_txt, + cbr_7_eye5_TA_tex_txt, + cbr_7_eye6_TA_tex_txt, + cbr_7_eye7_TA_tex_txt, + cbr_7_eye8_TA_tex_txt, + }, + { + cbr_7_mouth1_TA_tex_txt, + cbr_7_mouth2_TA_tex_txt, + cbr_7_mouth3_TA_tex_txt, + cbr_7_mouth4_TA_tex_txt, + cbr_7_mouth5_TA_tex_txt, + cbr_7_mouth6_TA_tex_txt, + }, + 128, + 8, + 176, + }, + 0.006500000134110451, + 0, + 6, + 7, + 33, + 0, + 0, + 186, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_157, + ACTOR_OBJ_BANK_165, + &cKF_bs_r_cbr_1, + { + cbr_8_tmem_txt, + cbr_8_pal, + { + cbr_8_eye1_TA_tex_txt, + cbr_8_eye2_TA_tex_txt, + cbr_8_eye3_TA_tex_txt, + cbr_8_eye4_TA_tex_txt, + cbr_8_eye5_TA_tex_txt, + cbr_8_eye6_TA_tex_txt, + cbr_8_eye7_TA_tex_txt, + cbr_8_eye8_TA_tex_txt, + }, + { + cbr_8_mouth1_TA_tex_txt, + cbr_8_mouth2_TA_tex_txt, + cbr_8_mouth3_TA_tex_txt, + cbr_8_mouth4_TA_tex_txt, + cbr_8_mouth5_TA_tex_txt, + cbr_8_mouth6_TA_tex_txt, + }, + 128, + 8, + 176, + }, + 0.006500000134110451, + 0, + 7, + 8, + 33, + 0, + 0, + 187, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_157, + ACTOR_OBJ_BANK_166, + &cKF_bs_r_cbr_1, + { + cbr_9_tmem_txt, + cbr_9_pal, + { + cbr_9_eye1_TA_tex_txt, + cbr_9_eye2_TA_tex_txt, + cbr_9_eye3_TA_tex_txt, + cbr_9_eye4_TA_tex_txt, + cbr_9_eye5_TA_tex_txt, + cbr_9_eye6_TA_tex_txt, + cbr_9_eye7_TA_tex_txt, + cbr_9_eye8_TA_tex_txt, + }, + { + cbr_9_mouth1_TA_tex_txt, + cbr_9_mouth2_TA_tex_txt, + cbr_9_mouth3_TA_tex_txt, + cbr_9_mouth4_TA_tex_txt, + cbr_9_mouth5_TA_tex_txt, + cbr_9_mouth6_TA_tex_txt, + }, + 128, + 8, + 176, + }, + 0.006500000134110451, + 0, + 8, + 29, + 33, + 0, + 0, + 188, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_169, + ACTOR_OBJ_BANK_170, + &cKF_bs_r_cow_1, + { + cow_1_tmem_txt, + cow_1_pal, + { + cow_1_eye1_TA_tex_txt, + cow_1_eye2_TA_tex_txt, + cow_1_eye3_TA_tex_txt, + cow_1_eye4_TA_tex_txt, + cow_1_eye5_TA_tex_txt, + cow_1_eye6_TA_tex_txt, + cow_1_eye7_TA_tex_txt, + cow_1_eye8_TA_tex_txt, + }, + { + cow_1_mouth1_TA_tex_txt, + cow_1_mouth2_TA_tex_txt, + cow_1_mouth3_TA_tex_txt, + cow_1_mouth4_TA_tex_txt, + cow_1_mouth5_TA_tex_txt, + cow_1_mouth6_TA_tex_txt, + }, + 56, + 104, + 176, + }, + 0.011300000362098217, + 0, + 0, + 0, + 42, + 0, + 0, + 120, + 25, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_169, + ACTOR_OBJ_BANK_171, + &cKF_bs_r_cow_1, + { + cow_2_tmem_txt, + cow_2_pal, + { + cow_2_eye1_TA_tex_txt, + cow_2_eye2_TA_tex_txt, + cow_2_eye3_TA_tex_txt, + cow_2_eye4_TA_tex_txt, + cow_2_eye5_TA_tex_txt, + cow_2_eye6_TA_tex_txt, + cow_2_eye7_TA_tex_txt, + cow_2_eye8_TA_tex_txt, + }, + { + cow_2_mouth1_TA_tex_txt, + cow_2_mouth2_TA_tex_txt, + cow_2_mouth3_TA_tex_txt, + cow_2_mouth4_TA_tex_txt, + cow_2_mouth5_TA_tex_txt, + cow_2_mouth6_TA_tex_txt, + }, + 56, + 104, + 176, + }, + 0.011300000362098217, + 0, + 1, + 17, + 42, + 0, + 0, + 121, + 25, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_169, + ACTOR_OBJ_BANK_172, + &cKF_bs_r_cow_1, + { + cow_3_tmem_txt, + cow_3_pal, + { + cow_3_eye1_TA_tex_txt, + cow_3_eye2_TA_tex_txt, + cow_3_eye3_TA_tex_txt, + cow_3_eye4_TA_tex_txt, + cow_3_eye5_TA_tex_txt, + cow_3_eye6_TA_tex_txt, + cow_3_eye7_TA_tex_txt, + cow_3_eye8_TA_tex_txt, + }, + { + cow_3_mouth1_TA_tex_txt, + cow_3_mouth2_TA_tex_txt, + cow_3_mouth3_TA_tex_txt, + cow_3_mouth4_TA_tex_txt, + cow_3_mouth5_TA_tex_txt, + cow_3_mouth6_TA_tex_txt, + }, + 56, + 104, + 176, + }, + 0.011300000362098217, + 0, + 2, + 8, + 42, + 0, + 0, + 122, + 25, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_169, + ACTOR_OBJ_BANK_173, + &cKF_bs_r_cow_1, + { + cow_4_tmem_txt, + cow_4_pal, + { + cow_4_eye1_TA_tex_txt, + cow_4_eye2_TA_tex_txt, + cow_4_eye3_TA_tex_txt, + cow_4_eye4_TA_tex_txt, + cow_4_eye5_TA_tex_txt, + cow_4_eye6_TA_tex_txt, + cow_4_eye7_TA_tex_txt, + cow_4_eye8_TA_tex_txt, + }, + { + cow_4_mouth1_TA_tex_txt, + cow_4_mouth2_TA_tex_txt, + cow_4_mouth3_TA_tex_txt, + cow_4_mouth4_TA_tex_txt, + cow_4_mouth5_TA_tex_txt, + cow_4_mouth6_TA_tex_txt, + }, + 56, + 104, + 176, + }, + 0.011300000362098217, + 0, + 3, + 5, + 42, + 0, + 0, + 123, + 25, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_174, + ACTOR_OBJ_BANK_175, + &cKF_bs_r_crd_1, + { + crd_1_tmem_txt, + crd_1_pal, + { + crd_1_eye1_TA_tex_txt, + crd_1_eye2_TA_tex_txt, + crd_1_eye3_TA_tex_txt, + crd_1_eye4_TA_tex_txt, + crd_1_eye5_TA_tex_txt, + crd_1_eye6_TA_tex_txt, + crd_1_eye7_TA_tex_txt, + crd_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 96, + 0, + 168, + }, + 0.010499999858438969, + 1, + 0, + 4, + 48, + 0, + 0, + 146, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_174, + ACTOR_OBJ_BANK_176, + &cKF_bs_r_crd_1, + { + crd_2_tmem_txt, + crd_2_pal, + { + crd_2_eye1_TA_tex_txt, + crd_2_eye2_TA_tex_txt, + crd_2_eye3_TA_tex_txt, + crd_2_eye4_TA_tex_txt, + crd_2_eye5_TA_tex_txt, + crd_2_eye6_TA_tex_txt, + crd_2_eye7_TA_tex_txt, + crd_2_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 96, + 0, + 168, + }, + 0.010499999858438969, + 1, + 1, + 11, + 48, + 0, + 0, + 147, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_174, + ACTOR_OBJ_BANK_177, + &cKF_bs_r_crd_1, + { + crd_3_tmem_txt, + crd_3_pal, + { + crd_3_eye1_TA_tex_txt, + crd_3_eye2_TA_tex_txt, + crd_3_eye3_TA_tex_txt, + crd_3_eye4_TA_tex_txt, + crd_3_eye5_TA_tex_txt, + crd_3_eye6_TA_tex_txt, + crd_3_eye7_TA_tex_txt, + crd_3_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 96, + 0, + 168, + }, + 0.010499999858438969, + 1, + 2, + 2, + 48, + 0, + 0, + 148, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_182, + ACTOR_OBJ_BANK_183, + &cKF_bs_r_dog_1, + { + dog_1_tmem_txt, + dog_1_pal, + { + dog_1_eye1_TA_tex_txt, + dog_1_eye2_TA_tex_txt, + dog_1_eye3_TA_tex_txt, + dog_1_eye4_TA_tex_txt, + dog_1_eye5_TA_tex_txt, + dog_1_eye6_TA_tex_txt, + dog_1_eye7_TA_tex_txt, + dog_1_eye8_TA_tex_txt, + }, + { + dog_1_mouth1_TA_tex_txt, + dog_1_mouth2_TA_tex_txt, + dog_1_mouth3_TA_tex_txt, + dog_1_mouth4_TA_tex_txt, + dog_1_mouth5_TA_tex_txt, + dog_1_mouth6_TA_tex_txt, + }, + 48, + 0, + 80, + }, + 0.009499999694526196, + 0, + 0, + 15, + 37, + 0, + 0, + 37, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_182, + ACTOR_OBJ_BANK_184, + &cKF_bs_r_dog_1, + { + dog_2_tmem_txt, + dog_2_pal, + { + dog_2_eye1_TA_tex_txt, + dog_2_eye2_TA_tex_txt, + dog_2_eye3_TA_tex_txt, + dog_2_eye4_TA_tex_txt, + dog_2_eye5_TA_tex_txt, + dog_2_eye6_TA_tex_txt, + dog_2_eye7_TA_tex_txt, + dog_2_eye8_TA_tex_txt, + }, + { + dog_2_mouth1_TA_tex_txt, + dog_2_mouth2_TA_tex_txt, + dog_2_mouth3_TA_tex_txt, + dog_2_mouth4_TA_tex_txt, + dog_2_mouth5_TA_tex_txt, + dog_2_mouth6_TA_tex_txt, + }, + 48, + 0, + 80, + }, + 0.009499999694526196, + 0, + 1, + 22, + 37, + 0, + 0, + 38, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_182, + ACTOR_OBJ_BANK_185, + &cKF_bs_r_dog_1, + { + dog_3_tmem_txt, + dog_3_pal, + { + dog_3_eye1_TA_tex_txt, + dog_3_eye2_TA_tex_txt, + dog_3_eye3_TA_tex_txt, + dog_3_eye4_TA_tex_txt, + dog_3_eye5_TA_tex_txt, + dog_3_eye6_TA_tex_txt, + dog_3_eye7_TA_tex_txt, + dog_3_eye8_TA_tex_txt, + }, + { + dog_3_mouth1_TA_tex_txt, + dog_3_mouth2_TA_tex_txt, + dog_3_mouth3_TA_tex_txt, + dog_3_mouth4_TA_tex_txt, + dog_3_mouth5_TA_tex_txt, + dog_3_mouth6_TA_tex_txt, + }, + 48, + 0, + 80, + }, + 0.009499999694526196, + 0, + 2, + 0, + 37, + 0, + 0, + 39, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_182, + ACTOR_OBJ_BANK_186, + &cKF_bs_r_dog_1, + { + dog_4_tmem_txt, + dog_4_pal, + { + dog_4_eye1_TA_tex_txt, + dog_4_eye2_TA_tex_txt, + dog_4_eye3_TA_tex_txt, + dog_4_eye4_TA_tex_txt, + dog_4_eye5_TA_tex_txt, + dog_4_eye6_TA_tex_txt, + dog_4_eye7_TA_tex_txt, + dog_4_eye8_TA_tex_txt, + }, + { + dog_4_mouth1_TA_tex_txt, + dog_4_mouth2_TA_tex_txt, + dog_4_mouth3_TA_tex_txt, + dog_4_mouth4_TA_tex_txt, + dog_4_mouth5_TA_tex_txt, + dog_4_mouth6_TA_tex_txt, + }, + 48, + 0, + 80, + }, + 0.009499999694526196, + 0, + 3, + 16, + 37, + 0, + 0, + 40, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_182, + ACTOR_OBJ_BANK_187, + &cKF_bs_r_dog_1, + { + dog_5_tmem_txt, + dog_5_pal, + { + dog_5_eye1_TA_tex_txt, + dog_5_eye2_TA_tex_txt, + dog_5_eye3_TA_tex_txt, + dog_5_eye4_TA_tex_txt, + dog_5_eye5_TA_tex_txt, + dog_5_eye6_TA_tex_txt, + dog_5_eye7_TA_tex_txt, + dog_5_eye8_TA_tex_txt, + }, + { + dog_5_mouth1_TA_tex_txt, + dog_5_mouth2_TA_tex_txt, + dog_5_mouth3_TA_tex_txt, + dog_5_mouth4_TA_tex_txt, + dog_5_mouth5_TA_tex_txt, + dog_5_mouth6_TA_tex_txt, + }, + 48, + 0, + 80, + }, + 0.009499999694526196, + 0, + 4, + 10, + 37, + 0, + 0, + 41, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_182, + ACTOR_OBJ_BANK_188, + &cKF_bs_r_dog_1, + { + dog_6_tmem_txt, + dog_6_pal, + { + dog_6_eye1_TA_tex_txt, + dog_6_eye2_TA_tex_txt, + dog_6_eye3_TA_tex_txt, + dog_6_eye4_TA_tex_txt, + dog_6_eye5_TA_tex_txt, + dog_6_eye6_TA_tex_txt, + dog_6_eye7_TA_tex_txt, + dog_6_eye8_TA_tex_txt, + }, + { + dog_6_mouth1_TA_tex_txt, + dog_6_mouth2_TA_tex_txt, + dog_6_mouth3_TA_tex_txt, + dog_6_mouth4_TA_tex_txt, + dog_6_mouth5_TA_tex_txt, + dog_6_mouth6_TA_tex_txt, + }, + 48, + 0, + 80, + }, + 0.009499999694526196, + 0, + 5, + 27, + 37, + 0, + 0, + 42, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_182, + ACTOR_OBJ_BANK_190, + &cKF_bs_r_dog_1, + { + dog_8_tmem_txt, + dog_8_pal, + { + dog_8_eye1_TA_tex_txt, + dog_8_eye2_TA_tex_txt, + dog_8_eye3_TA_tex_txt, + dog_8_eye4_TA_tex_txt, + dog_8_eye5_TA_tex_txt, + dog_8_eye6_TA_tex_txt, + dog_8_eye7_TA_tex_txt, + dog_8_eye8_TA_tex_txt, + }, + { + dog_8_mouth1_TA_tex_txt, + dog_8_mouth2_TA_tex_txt, + dog_8_mouth3_TA_tex_txt, + dog_8_mouth4_TA_tex_txt, + dog_8_mouth5_TA_tex_txt, + dog_8_mouth6_TA_tex_txt, + }, + 48, + 0, + 80, + }, + 0.009499999694526196, + 0, + 7, + 12, + 37, + 0, + 0, + 44, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_191, + ACTOR_OBJ_BANK_192, + &cKF_bs_r_duk_1, + { + duk_1_tmem_txt, + duk_1_pal, + { + duk_1_eye1_TA_tex_txt, + duk_1_eye2_TA_tex_txt, + duk_1_eye3_TA_tex_txt, + duk_1_eye4_TA_tex_txt, + duk_1_eye5_TA_tex_txt, + duk_1_eye6_TA_tex_txt, + duk_1_eye7_TA_tex_txt, + duk_1_eye8_TA_tex_txt, + }, + { + duk_1_mouth1_TA_tex_txt, + duk_1_mouth2_TA_tex_txt, + duk_1_mouth3_TA_tex_txt, + duk_1_mouth4_TA_tex_txt, + duk_1_mouth5_TA_tex_txt, + duk_1_mouth6_TA_tex_txt, + }, + 112, + 72, + 160, + }, + 0.009999999776482582, + 1, + 0, + 11, + 31, + 0, + 0, + 67, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_191, + ACTOR_OBJ_BANK_193, + &cKF_bs_r_duk_1, + { + duk_2_tmem_txt, + duk_2_pal, + { + duk_2_eye1_TA_tex_txt, + duk_2_eye2_TA_tex_txt, + duk_2_eye3_TA_tex_txt, + duk_2_eye4_TA_tex_txt, + duk_2_eye5_TA_tex_txt, + duk_2_eye6_TA_tex_txt, + duk_2_eye7_TA_tex_txt, + duk_2_eye8_TA_tex_txt, + }, + { + duk_2_mouth1_TA_tex_txt, + duk_2_mouth2_TA_tex_txt, + duk_2_mouth3_TA_tex_txt, + duk_2_mouth4_TA_tex_txt, + duk_2_mouth5_TA_tex_txt, + duk_2_mouth6_TA_tex_txt, + }, + 112, + 72, + 160, + }, + 0.009999999776482582, + 1, + 1, + 2, + 31, + 0, + 0, + 68, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_191, + ACTOR_OBJ_BANK_194, + &cKF_bs_r_duk_1, + { + duk_3_tmem_txt, + duk_3_pal, + { + duk_3_eye1_TA_tex_txt, + duk_3_eye2_TA_tex_txt, + duk_3_eye3_TA_tex_txt, + duk_3_eye4_TA_tex_txt, + duk_3_eye5_TA_tex_txt, + duk_3_eye6_TA_tex_txt, + duk_3_eye7_TA_tex_txt, + duk_3_eye8_TA_tex_txt, + }, + { + duk_3_mouth1_TA_tex_txt, + duk_3_mouth2_TA_tex_txt, + duk_3_mouth3_TA_tex_txt, + duk_3_mouth4_TA_tex_txt, + duk_3_mouth5_TA_tex_txt, + duk_3_mouth6_TA_tex_txt, + }, + 112, + 72, + 160, + }, + 0.009999999776482582, + 1, + 2, + 19, + 31, + 0, + 0, + 69, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_191, + ACTOR_OBJ_BANK_195, + &cKF_bs_r_duk_1, + { + duk_4_tmem_txt, + duk_4_pal, + { + duk_4_eye1_TA_tex_txt, + duk_4_eye2_TA_tex_txt, + duk_4_eye3_TA_tex_txt, + duk_4_eye4_TA_tex_txt, + duk_4_eye5_TA_tex_txt, + duk_4_eye6_TA_tex_txt, + duk_4_eye7_TA_tex_txt, + duk_4_eye8_TA_tex_txt, + }, + { + duk_4_mouth1_TA_tex_txt, + duk_4_mouth2_TA_tex_txt, + duk_4_mouth3_TA_tex_txt, + duk_4_mouth4_TA_tex_txt, + duk_4_mouth5_TA_tex_txt, + duk_4_mouth6_TA_tex_txt, + }, + 112, + 72, + 160, + }, + 0.009999999776482582, + 1, + 3, + 31, + 31, + 0, + 0, + 70, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_191, + ACTOR_OBJ_BANK_196, + &cKF_bs_r_duk_1, + { + duk_5_tmem_txt, + duk_5_pal, + { + duk_5_eye1_TA_tex_txt, + duk_5_eye2_TA_tex_txt, + duk_5_eye3_TA_tex_txt, + duk_5_eye4_TA_tex_txt, + duk_5_eye5_TA_tex_txt, + duk_5_eye6_TA_tex_txt, + duk_5_eye7_TA_tex_txt, + duk_5_eye8_TA_tex_txt, + }, + { + duk_5_mouth1_TA_tex_txt, + duk_5_mouth2_TA_tex_txt, + duk_5_mouth3_TA_tex_txt, + duk_5_mouth4_TA_tex_txt, + duk_5_mouth5_TA_tex_txt, + duk_5_mouth6_TA_tex_txt, + }, + 112, + 72, + 160, + }, + 0.009999999776482582, + 1, + 4, + 3, + 31, + 0, + 0, + 71, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_191, + ACTOR_OBJ_BANK_197, + &cKF_bs_r_duk_1, + { + duk_6_tmem_txt, + duk_6_pal, + { + duk_6_eye1_TA_tex_txt, + duk_6_eye2_TA_tex_txt, + duk_6_eye3_TA_tex_txt, + duk_6_eye4_TA_tex_txt, + duk_6_eye5_TA_tex_txt, + duk_6_eye6_TA_tex_txt, + duk_6_eye7_TA_tex_txt, + duk_6_eye8_TA_tex_txt, + }, + { + duk_6_mouth1_TA_tex_txt, + duk_6_mouth2_TA_tex_txt, + duk_6_mouth3_TA_tex_txt, + duk_6_mouth4_TA_tex_txt, + duk_6_mouth5_TA_tex_txt, + duk_6_mouth6_TA_tex_txt, + }, + 112, + 72, + 160, + }, + 0.009999999776482582, + 1, + 5, + 4, + 31, + 0, + 0, + 72, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_200, + ACTOR_OBJ_BANK_201, + &cKF_bs_r_elp_1, + { + elp_1_tmem_txt, + elp_1_pal, + { + elp_1_eye1_TA_tex_txt, + elp_1_eye2_TA_tex_txt, + elp_1_eye3_TA_tex_txt, + elp_1_eye4_TA_tex_txt, + elp_1_eye5_TA_tex_txt, + elp_1_eye6_TA_tex_txt, + elp_1_eye7_TA_tex_txt, + elp_1_eye8_TA_tex_txt, + }, + { + elp_1_mouth1_TA_tex_txt, + elp_1_mouth2_TA_tex_txt, + elp_1_mouth3_TA_tex_txt, + elp_1_mouth4_TA_tex_txt, + elp_1_mouth5_TA_tex_txt, + elp_1_mouth6_TA_tex_txt, + }, + 48, + 176, + 80, + }, + 0.009999999776482582, + 1, + 0, + 4, + 40, + 0, + 0, + 15, + 25, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_200, + ACTOR_OBJ_BANK_202, + &cKF_bs_r_elp_1, + { + elp_2_tmem_txt, + elp_2_pal, + { + elp_2_eye1_TA_tex_txt, + elp_2_eye2_TA_tex_txt, + elp_2_eye3_TA_tex_txt, + elp_2_eye4_TA_tex_txt, + elp_2_eye5_TA_tex_txt, + elp_2_eye6_TA_tex_txt, + elp_2_eye7_TA_tex_txt, + elp_2_eye8_TA_tex_txt, + }, + { + elp_2_mouth1_TA_tex_txt, + elp_2_mouth2_TA_tex_txt, + elp_2_mouth3_TA_tex_txt, + elp_2_mouth4_TA_tex_txt, + elp_2_mouth5_TA_tex_txt, + elp_2_mouth6_TA_tex_txt, + }, + 48, + 176, + 80, + }, + 0.009999999776482582, + 1, + 1, + 0, + 40, + 0, + 0, + 16, + 25, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_200, + ACTOR_OBJ_BANK_203, + &cKF_bs_r_elp_1, + { + elp_3_tmem_txt, + elp_3_pal, + { + elp_3_eye1_TA_tex_txt, + elp_3_eye2_TA_tex_txt, + elp_3_eye3_TA_tex_txt, + elp_3_eye4_TA_tex_txt, + elp_3_eye5_TA_tex_txt, + elp_3_eye6_TA_tex_txt, + elp_3_eye7_TA_tex_txt, + elp_3_eye8_TA_tex_txt, + }, + { + elp_3_mouth1_TA_tex_txt, + elp_3_mouth2_TA_tex_txt, + elp_3_mouth3_TA_tex_txt, + elp_3_mouth4_TA_tex_txt, + elp_3_mouth5_TA_tex_txt, + elp_3_mouth6_TA_tex_txt, + }, + 48, + 176, + 80, + }, + 0.009999999776482582, + 1, + 2, + 28, + 40, + 0, + 0, + 17, + 25, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_205, + ACTOR_OBJ_BANK_206, + &cKF_bs_r_flg_1, + { + flg_1_tmem_txt, + flg_1_pal, + { + flg_1_eye1_TA_tex_txt, + flg_1_eye2_TA_tex_txt, + flg_1_eye3_TA_tex_txt, + flg_1_eye4_TA_tex_txt, + flg_1_eye5_TA_tex_txt, + flg_1_eye6_TA_tex_txt, + flg_1_eye7_TA_tex_txt, + flg_1_eye8_TA_tex_txt, + }, + { + flg_1_mouth1_TA_tex_txt, + flg_1_mouth2_TA_tex_txt, + flg_1_mouth3_TA_tex_txt, + flg_1_mouth4_TA_tex_txt, + flg_1_mouth5_TA_tex_txt, + flg_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 176, + }, + 0.00800000037997961, + 0, + 0, + 20, + 38, + 0, + 0, + 134, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_205, + ACTOR_OBJ_BANK_207, + &cKF_bs_r_flg_1, + { + flg_2_tmem_txt, + flg_2_pal, + { + flg_2_eye1_TA_tex_txt, + flg_2_eye2_TA_tex_txt, + flg_2_eye3_TA_tex_txt, + flg_2_eye4_TA_tex_txt, + flg_2_eye5_TA_tex_txt, + flg_2_eye6_TA_tex_txt, + flg_2_eye7_TA_tex_txt, + flg_2_eye8_TA_tex_txt, + }, + { + flg_2_mouth1_TA_tex_txt, + flg_2_mouth2_TA_tex_txt, + flg_2_mouth3_TA_tex_txt, + flg_2_mouth4_TA_tex_txt, + flg_2_mouth5_TA_tex_txt, + flg_2_mouth6_TA_tex_txt, + }, + 0, + 32, + 176, + }, + 0.00800000037997961, + 0, + 1, + 23, + 38, + 0, + 0, + 135, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_205, + ACTOR_OBJ_BANK_208, + &cKF_bs_r_flg_1, + { + flg_3_tmem_txt, + flg_3_pal, + { + flg_3_eye1_TA_tex_txt, + flg_3_eye2_TA_tex_txt, + flg_3_eye3_TA_tex_txt, + flg_3_eye4_TA_tex_txt, + flg_3_eye5_TA_tex_txt, + flg_3_eye6_TA_tex_txt, + flg_3_eye7_TA_tex_txt, + flg_3_eye8_TA_tex_txt, + }, + { + flg_3_mouth1_TA_tex_txt, + flg_3_mouth2_TA_tex_txt, + flg_3_mouth3_TA_tex_txt, + flg_3_mouth4_TA_tex_txt, + flg_3_mouth5_TA_tex_txt, + flg_3_mouth6_TA_tex_txt, + }, + 0, + 32, + 176, + }, + 0.00800000037997961, + 0, + 2, + 19, + 38, + 0, + 0, + 136, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_205, + ACTOR_OBJ_BANK_209, + &cKF_bs_r_flg_1, + { + flg_4_tmem_txt, + flg_4_pal, + { + flg_4_eye1_TA_tex_txt, + flg_4_eye2_TA_tex_txt, + flg_4_eye3_TA_tex_txt, + flg_4_eye4_TA_tex_txt, + flg_4_eye5_TA_tex_txt, + flg_4_eye6_TA_tex_txt, + flg_4_eye7_TA_tex_txt, + flg_4_eye8_TA_tex_txt, + }, + { + flg_4_mouth1_TA_tex_txt, + flg_4_mouth2_TA_tex_txt, + flg_4_mouth3_TA_tex_txt, + flg_4_mouth4_TA_tex_txt, + flg_4_mouth5_TA_tex_txt, + flg_4_mouth6_TA_tex_txt, + }, + 0, + 32, + 176, + }, + 0.00800000037997961, + 0, + 3, + 25, + 38, + 0, + 0, + 137, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_205, + ACTOR_OBJ_BANK_210, + &cKF_bs_r_flg_1, + { + flg_5_tmem_txt, + flg_5_pal, + { + flg_5_eye1_TA_tex_txt, + flg_5_eye2_TA_tex_txt, + flg_5_eye3_TA_tex_txt, + flg_5_eye4_TA_tex_txt, + flg_5_eye5_TA_tex_txt, + flg_5_eye6_TA_tex_txt, + flg_5_eye7_TA_tex_txt, + flg_5_eye8_TA_tex_txt, + }, + { + flg_5_mouth1_TA_tex_txt, + flg_5_mouth2_TA_tex_txt, + flg_5_mouth3_TA_tex_txt, + flg_5_mouth4_TA_tex_txt, + flg_5_mouth5_TA_tex_txt, + flg_5_mouth6_TA_tex_txt, + }, + 0, + 32, + 176, + }, + 0.00800000037997961, + 0, + 4, + 2, + 38, + 0, + 0, + 138, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_205, + ACTOR_OBJ_BANK_211, + &cKF_bs_r_flg_1, + { + flg_6_tmem_txt, + flg_6_pal, + { + flg_6_eye1_TA_tex_txt, + flg_6_eye2_TA_tex_txt, + flg_6_eye3_TA_tex_txt, + flg_6_eye4_TA_tex_txt, + flg_6_eye5_TA_tex_txt, + flg_6_eye6_TA_tex_txt, + flg_6_eye7_TA_tex_txt, + flg_6_eye8_TA_tex_txt, + }, + { + flg_6_mouth1_TA_tex_txt, + flg_6_mouth2_TA_tex_txt, + flg_6_mouth3_TA_tex_txt, + flg_6_mouth4_TA_tex_txt, + flg_6_mouth5_TA_tex_txt, + flg_6_mouth6_TA_tex_txt, + }, + 0, + 32, + 176, + }, + 0.00800000037997961, + 0, + 5, + 5, + 38, + 0, + 0, + 139, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_205, + ACTOR_OBJ_BANK_212, + &cKF_bs_r_flg_1, + { + flg_7_tmem_txt, + flg_7_pal, + { + flg_7_eye1_TA_tex_txt, + flg_7_eye2_TA_tex_txt, + flg_7_eye3_TA_tex_txt, + flg_7_eye4_TA_tex_txt, + flg_7_eye5_TA_tex_txt, + flg_7_eye6_TA_tex_txt, + flg_7_eye7_TA_tex_txt, + flg_7_eye8_TA_tex_txt, + }, + { + flg_7_mouth1_TA_tex_txt, + flg_7_mouth2_TA_tex_txt, + flg_7_mouth3_TA_tex_txt, + flg_7_mouth4_TA_tex_txt, + flg_7_mouth5_TA_tex_txt, + flg_7_mouth6_TA_tex_txt, + }, + 0, + 32, + 176, + }, + 0.00800000037997961, + 0, + 6, + 13, + 38, + 0, + 0, + 140, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_205, + ACTOR_OBJ_BANK_213, + &cKF_bs_r_flg_1, + { + flg_8_tmem_txt, + flg_8_pal, + { + flg_8_eye1_TA_tex_txt, + flg_8_eye2_TA_tex_txt, + flg_8_eye3_TA_tex_txt, + flg_8_eye4_TA_tex_txt, + flg_8_eye5_TA_tex_txt, + flg_8_eye6_TA_tex_txt, + flg_8_eye7_TA_tex_txt, + flg_8_eye8_TA_tex_txt, + }, + { + flg_8_mouth1_TA_tex_txt, + flg_8_mouth2_TA_tex_txt, + flg_8_mouth3_TA_tex_txt, + flg_8_mouth4_TA_tex_txt, + flg_8_mouth5_TA_tex_txt, + flg_8_mouth6_TA_tex_txt, + }, + 0, + 32, + 176, + }, + 0.00800000037997961, + 0, + 7, + 15, + 38, + 0, + 0, + 141, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_205, + ACTOR_OBJ_BANK_214, + &cKF_bs_r_flg_1, + { + flg_9_tmem_txt, + flg_9_pal, + { + flg_9_eye1_TA_tex_txt, + flg_9_eye2_TA_tex_txt, + flg_9_eye3_TA_tex_txt, + flg_9_eye4_TA_tex_txt, + flg_9_eye5_TA_tex_txt, + flg_9_eye6_TA_tex_txt, + flg_9_eye7_TA_tex_txt, + flg_9_eye8_TA_tex_txt, + }, + { + flg_9_mouth1_TA_tex_txt, + flg_9_mouth2_TA_tex_txt, + flg_9_mouth3_TA_tex_txt, + flg_9_mouth4_TA_tex_txt, + flg_9_mouth5_TA_tex_txt, + flg_9_mouth6_TA_tex_txt, + }, + 0, + 32, + 176, + }, + 0.00800000037997961, + 0, + 8, + 16, + 38, + 0, + 0, + 142, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_205, + ACTOR_OBJ_BANK_215, + &cKF_bs_r_flg_1, + { + flg_10_tmem_txt, + flg_10_pal, + { + flg_10_eye1_TA_tex_txt, + flg_10_eye2_TA_tex_txt, + flg_10_eye3_TA_tex_txt, + flg_10_eye4_TA_tex_txt, + flg_10_eye5_TA_tex_txt, + flg_10_eye6_TA_tex_txt, + flg_10_eye7_TA_tex_txt, + flg_10_eye8_TA_tex_txt, + }, + { + flg_10_mouth1_TA_tex_txt, + flg_10_mouth2_TA_tex_txt, + flg_10_mouth3_TA_tex_txt, + flg_10_mouth4_TA_tex_txt, + flg_10_mouth5_TA_tex_txt, + flg_10_mouth6_TA_tex_txt, + }, + 0, + 32, + 176, + }, + 0.00800000037997961, + 0, + 9, + 30, + 38, + 0, + 0, + 143, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_205, + ACTOR_OBJ_BANK_216, + &cKF_bs_r_flg_1, + { + flg_11_tmem_txt, + flg_11_pal, + { + flg_11_eye1_TA_tex_txt, + flg_11_eye2_TA_tex_txt, + flg_11_eye3_TA_tex_txt, + flg_11_eye4_TA_tex_txt, + flg_11_eye5_TA_tex_txt, + flg_11_eye6_TA_tex_txt, + flg_11_eye7_TA_tex_txt, + flg_11_eye8_TA_tex_txt, + }, + { + flg_11_mouth1_TA_tex_txt, + flg_11_mouth2_TA_tex_txt, + flg_11_mouth3_TA_tex_txt, + flg_11_mouth4_TA_tex_txt, + flg_11_mouth5_TA_tex_txt, + flg_11_mouth6_TA_tex_txt, + }, + 0, + 32, + 176, + }, + 0.00800000037997961, + 0, + 10, + 19, + 38, + 0, + 0, + 144, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_205, + ACTOR_OBJ_BANK_217, + &cKF_bs_r_flg_1, + { + flg_12_tmem_txt, + flg_12_pal, + { + flg_12_eye1_TA_tex_txt, + flg_12_eye2_TA_tex_txt, + flg_12_eye3_TA_tex_txt, + flg_12_eye4_TA_tex_txt, + flg_12_eye5_TA_tex_txt, + flg_12_eye6_TA_tex_txt, + flg_12_eye7_TA_tex_txt, + flg_12_eye8_TA_tex_txt, + }, + { + flg_12_mouth1_TA_tex_txt, + flg_12_mouth2_TA_tex_txt, + flg_12_mouth3_TA_tex_txt, + flg_12_mouth4_TA_tex_txt, + flg_12_mouth5_TA_tex_txt, + flg_12_mouth6_TA_tex_txt, + }, + 0, + 32, + 176, + }, + 0.00800000037997961, + 0, + 11, + 6, + 38, + 0, + 0, + 145, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_220, + ACTOR_OBJ_BANK_221, + &cKF_bs_r_goa_1, + { + goa_1_tmem_txt, + goa_1_pal, + { + goa_1_eye1_TA_tex_txt, + goa_1_eye2_TA_tex_txt, + goa_1_eye3_TA_tex_txt, + goa_1_eye4_TA_tex_txt, + goa_1_eye5_TA_tex_txt, + goa_1_eye6_TA_tex_txt, + goa_1_eye7_TA_tex_txt, + goa_1_eye8_TA_tex_txt, + }, + { + goa_1_mouth1_TA_tex_txt, + goa_1_mouth2_TA_tex_txt, + goa_1_mouth3_TA_tex_txt, + goa_1_mouth4_TA_tex_txt, + goa_1_mouth5_TA_tex_txt, + goa_1_mouth6_TA_tex_txt, + }, + 136, + 88, + 192, + }, + 0.010499999858438969, + 0, + 0, + 12, + 35, + 0, + 0, + 150, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_220, + ACTOR_OBJ_BANK_222, + &cKF_bs_r_goa_1, + { + goa_2_tmem_txt, + goa_2_pal, + { + goa_2_eye1_TA_tex_txt, + goa_2_eye2_TA_tex_txt, + goa_2_eye3_TA_tex_txt, + goa_2_eye4_TA_tex_txt, + goa_2_eye5_TA_tex_txt, + goa_2_eye6_TA_tex_txt, + goa_2_eye7_TA_tex_txt, + goa_2_eye8_TA_tex_txt, + }, + { + goa_2_mouth1_TA_tex_txt, + goa_2_mouth2_TA_tex_txt, + goa_2_mouth3_TA_tex_txt, + goa_2_mouth4_TA_tex_txt, + goa_2_mouth5_TA_tex_txt, + goa_2_mouth6_TA_tex_txt, + }, + 136, + 88, + 192, + }, + 0.010499999858438969, + 0, + 1, + 7, + 35, + 0, + 0, + 151, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_220, + ACTOR_OBJ_BANK_223, + &cKF_bs_r_goa_1, + { + goa_3_tmem_txt, + goa_3_pal, + { + goa_3_eye1_TA_tex_txt, + goa_3_eye2_TA_tex_txt, + goa_3_eye3_TA_tex_txt, + goa_3_eye4_TA_tex_txt, + goa_3_eye5_TA_tex_txt, + goa_3_eye6_TA_tex_txt, + goa_3_eye7_TA_tex_txt, + goa_3_eye8_TA_tex_txt, + }, + { + goa_3_mouth1_TA_tex_txt, + goa_3_mouth2_TA_tex_txt, + goa_3_mouth3_TA_tex_txt, + goa_3_mouth4_TA_tex_txt, + goa_3_mouth5_TA_tex_txt, + goa_3_mouth6_TA_tex_txt, + }, + 136, + 88, + 192, + }, + 0.010499999858438969, + 0, + 2, + 23, + 35, + 0, + 0, + 152, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_220, + ACTOR_OBJ_BANK_224, + &cKF_bs_r_goa_1, + { + goa_4_tmem_txt, + goa_4_pal, + { + goa_4_eye1_TA_tex_txt, + goa_4_eye2_TA_tex_txt, + goa_4_eye3_TA_tex_txt, + goa_4_eye4_TA_tex_txt, + goa_4_eye5_TA_tex_txt, + goa_4_eye6_TA_tex_txt, + goa_4_eye7_TA_tex_txt, + goa_4_eye8_TA_tex_txt, + }, + { + goa_4_mouth1_TA_tex_txt, + goa_4_mouth2_TA_tex_txt, + goa_4_mouth3_TA_tex_txt, + goa_4_mouth4_TA_tex_txt, + goa_4_mouth5_TA_tex_txt, + goa_4_mouth6_TA_tex_txt, + }, + 136, + 88, + 192, + }, + 0.010499999858438969, + 0, + 3, + 31, + 35, + 0, + 0, + 153, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_220, + ACTOR_OBJ_BANK_225, + &cKF_bs_r_goa_1, + { + goa_5_tmem_txt, + goa_5_pal, + { + goa_5_eye1_TA_tex_txt, + goa_5_eye2_TA_tex_txt, + goa_5_eye3_TA_tex_txt, + goa_5_eye4_TA_tex_txt, + goa_5_eye5_TA_tex_txt, + goa_5_eye6_TA_tex_txt, + goa_5_eye7_TA_tex_txt, + goa_5_eye8_TA_tex_txt, + }, + { + goa_5_mouth1_TA_tex_txt, + goa_5_mouth2_TA_tex_txt, + goa_5_mouth3_TA_tex_txt, + goa_5_mouth4_TA_tex_txt, + goa_5_mouth5_TA_tex_txt, + goa_5_mouth6_TA_tex_txt, + }, + 136, + 88, + 192, + }, + 0.010499999858438969, + 0, + 4, + 21, + 35, + 0, + 0, + 154, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_220, + ACTOR_OBJ_BANK_226, + &cKF_bs_r_goa_1, + { + goa_6_tmem_txt, + goa_6_pal, + { + goa_6_eye1_TA_tex_txt, + goa_6_eye2_TA_tex_txt, + goa_6_eye3_TA_tex_txt, + goa_6_eye4_TA_tex_txt, + goa_6_eye5_TA_tex_txt, + goa_6_eye6_TA_tex_txt, + goa_6_eye7_TA_tex_txt, + goa_6_eye8_TA_tex_txt, + }, + { + goa_6_mouth1_TA_tex_txt, + goa_6_mouth2_TA_tex_txt, + goa_6_mouth3_TA_tex_txt, + goa_6_mouth4_TA_tex_txt, + goa_6_mouth5_TA_tex_txt, + goa_6_mouth6_TA_tex_txt, + }, + 136, + 88, + 192, + }, + 0.010499999858438969, + 0, + 5, + 4, + 35, + 0, + 0, + 155, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_227, + ACTOR_OBJ_BANK_228, + &cKF_bs_r_gor_1, + { + gor_1_tmem_txt, + gor_1_pal, + { + gor_1_eye1_TA_tex_txt, + gor_1_eye2_TA_tex_txt, + gor_1_eye3_TA_tex_txt, + gor_1_eye4_TA_tex_txt, + gor_1_eye5_TA_tex_txt, + gor_1_eye6_TA_tex_txt, + gor_1_eye7_TA_tex_txt, + gor_1_eye8_TA_tex_txt, + }, + { + gor_1_mouth1_TA_tex_txt, + gor_1_mouth2_TA_tex_txt, + gor_1_mouth3_TA_tex_txt, + gor_1_mouth4_TA_tex_txt, + gor_1_mouth5_TA_tex_txt, + gor_1_mouth6_TA_tex_txt, + }, + 80, + 112, + 152, + }, + 0.009999999776482582, + 1, + 0, + 15, + 42, + 0, + 0, + 193, + 20, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_227, + ACTOR_OBJ_BANK_229, + &cKF_bs_r_gor_1, + { + gor_2_tmem_txt, + gor_2_pal, + { + gor_2_eye1_TA_tex_txt, + gor_2_eye2_TA_tex_txt, + gor_2_eye3_TA_tex_txt, + gor_2_eye4_TA_tex_txt, + gor_2_eye5_TA_tex_txt, + gor_2_eye6_TA_tex_txt, + gor_2_eye7_TA_tex_txt, + gor_2_eye8_TA_tex_txt, + }, + { + gor_2_mouth1_TA_tex_txt, + gor_2_mouth2_TA_tex_txt, + gor_2_mouth3_TA_tex_txt, + gor_2_mouth4_TA_tex_txt, + gor_2_mouth5_TA_tex_txt, + gor_2_mouth6_TA_tex_txt, + }, + 80, + 112, + 152, + }, + 0.009999999776482582, + 1, + 1, + 14, + 42, + 0, + 0, + 194, + 20, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_227, + ACTOR_OBJ_BANK_230, + &cKF_bs_r_gor_1, + { + gor_3_tmem_txt, + gor_3_pal, + { + gor_3_eye1_TA_tex_txt, + gor_3_eye2_TA_tex_txt, + gor_3_eye3_TA_tex_txt, + gor_3_eye4_TA_tex_txt, + gor_3_eye5_TA_tex_txt, + gor_3_eye6_TA_tex_txt, + gor_3_eye7_TA_tex_txt, + gor_3_eye8_TA_tex_txt, + }, + { + gor_3_mouth1_TA_tex_txt, + gor_3_mouth2_TA_tex_txt, + gor_3_mouth3_TA_tex_txt, + gor_3_mouth4_TA_tex_txt, + gor_3_mouth5_TA_tex_txt, + gor_3_mouth6_TA_tex_txt, + }, + 80, + 112, + 152, + }, + 0.009999999776482582, + 1, + 2, + 5, + 42, + 0, + 0, + 195, + 20, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_227, + ACTOR_OBJ_BANK_231, + &cKF_bs_r_gor_1, + { + gor_4_tmem_txt, + gor_4_pal, + { + gor_4_eye1_TA_tex_txt, + gor_4_eye2_TA_tex_txt, + gor_4_eye3_TA_tex_txt, + gor_4_eye4_TA_tex_txt, + gor_4_eye5_TA_tex_txt, + gor_4_eye6_TA_tex_txt, + gor_4_eye7_TA_tex_txt, + gor_4_eye8_TA_tex_txt, + }, + { + gor_4_mouth1_TA_tex_txt, + gor_4_mouth2_TA_tex_txt, + gor_4_mouth3_TA_tex_txt, + gor_4_mouth4_TA_tex_txt, + gor_4_mouth5_TA_tex_txt, + gor_4_mouth6_TA_tex_txt, + }, + 80, + 112, + 152, + }, + 0.009999999776482582, + 1, + 3, + 19, + 42, + 0, + 0, + 196, + 20, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_238, + ACTOR_OBJ_BANK_239, + &cKF_bs_r_hip_1, + { + hip_1_tmem_txt, + hip_1_pal, + { + hip_1_eye1_TA_tex_txt, + hip_1_eye2_TA_tex_txt, + hip_1_eye3_TA_tex_txt, + hip_1_eye4_TA_tex_txt, + hip_1_eye5_TA_tex_txt, + hip_1_eye6_TA_tex_txt, + hip_1_eye7_TA_tex_txt, + hip_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 136, + 0, + 32, + }, + 0.007300000172108412, + 1, + 0, + 11, + 43, + 0, + 0, + 77, + 25, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_238, + ACTOR_OBJ_BANK_240, + &cKF_bs_r_hip_1, + { + hip_2_tmem_txt, + hip_2_pal, + { + hip_2_eye1_TA_tex_txt, + hip_2_eye2_TA_tex_txt, + hip_2_eye3_TA_tex_txt, + hip_2_eye4_TA_tex_txt, + hip_2_eye5_TA_tex_txt, + hip_2_eye6_TA_tex_txt, + hip_2_eye7_TA_tex_txt, + hip_2_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 136, + 0, + 32, + }, + 0.007300000172108412, + 1, + 1, + 8, + 43, + 0, + 0, + 78, + 25, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_238, + ACTOR_OBJ_BANK_241, + &cKF_bs_r_hip_1, + { + hip_3_tmem_txt, + hip_3_pal, + { + hip_3_eye1_TA_tex_txt, + hip_3_eye2_TA_tex_txt, + hip_3_eye3_TA_tex_txt, + hip_3_eye4_TA_tex_txt, + hip_3_eye5_TA_tex_txt, + hip_3_eye6_TA_tex_txt, + hip_3_eye7_TA_tex_txt, + hip_3_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 136, + 0, + 32, + }, + 0.007300000172108412, + 1, + 2, + 7, + 43, + 0, + 0, + 79, + 25, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_243, + ACTOR_OBJ_BANK_244, + &cKF_bs_r_hrs_1, + { + hrs_1_tmem_txt, + hrs_1_pal, + { + hrs_1_eye1_TA_tex_txt, + hrs_1_eye2_TA_tex_txt, + hrs_1_eye3_TA_tex_txt, + hrs_1_eye4_TA_tex_txt, + hrs_1_eye5_TA_tex_txt, + hrs_1_eye6_TA_tex_txt, + hrs_1_eye7_TA_tex_txt, + hrs_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 40, + 0, + 184, + }, + 0.011500000022351742, + 1, + 0, + 0, + 43, + 0, + 0, + 169, + 23, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_243, + ACTOR_OBJ_BANK_245, + &cKF_bs_r_hrs_1, + { + hrs_2_tmem_txt, + hrs_2_pal, + { + hrs_2_eye1_TA_tex_txt, + hrs_2_eye2_TA_tex_txt, + hrs_2_eye3_TA_tex_txt, + hrs_2_eye4_TA_tex_txt, + hrs_2_eye5_TA_tex_txt, + hrs_2_eye6_TA_tex_txt, + hrs_2_eye7_TA_tex_txt, + hrs_2_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 40, + 0, + 184, + }, + 0.011500000022351742, + 1, + 1, + 7, + 43, + 0, + 0, + 170, + 23, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_243, + ACTOR_OBJ_BANK_246, + &cKF_bs_r_hrs_1, + { + hrs_3_tmem_txt, + hrs_3_pal, + { + hrs_3_eye1_TA_tex_txt, + hrs_3_eye2_TA_tex_txt, + hrs_3_eye3_TA_tex_txt, + hrs_3_eye4_TA_tex_txt, + hrs_3_eye5_TA_tex_txt, + hrs_3_eye6_TA_tex_txt, + hrs_3_eye7_TA_tex_txt, + hrs_3_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 40, + 0, + 184, + }, + 0.011500000022351742, + 1, + 2, + 29, + 43, + 0, + 0, + 171, + 23, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_243, + ACTOR_OBJ_BANK_247, + &cKF_bs_r_hrs_1, + { + hrs_4_tmem_txt, + hrs_4_pal, + { + hrs_4_eye1_TA_tex_txt, + hrs_4_eye2_TA_tex_txt, + hrs_4_eye3_TA_tex_txt, + hrs_4_eye4_TA_tex_txt, + hrs_4_eye5_TA_tex_txt, + hrs_4_eye6_TA_tex_txt, + hrs_4_eye7_TA_tex_txt, + hrs_4_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 40, + 0, + 184, + }, + 0.011500000022351742, + 1, + 3, + 17, + 43, + 0, + 0, + 172, + 23, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_243, + ACTOR_OBJ_BANK_248, + &cKF_bs_r_hrs_1, + { + hrs_5_tmem_txt, + hrs_5_pal, + { + hrs_5_eye1_TA_tex_txt, + hrs_5_eye2_TA_tex_txt, + hrs_5_eye3_TA_tex_txt, + hrs_5_eye4_TA_tex_txt, + hrs_5_eye5_TA_tex_txt, + hrs_5_eye6_TA_tex_txt, + hrs_5_eye7_TA_tex_txt, + hrs_5_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 40, + 0, + 184, + }, + 0.011500000022351742, + 1, + 4, + 29, + 43, + 0, + 0, + 173, + 23, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_243, + ACTOR_OBJ_BANK_249, + &cKF_bs_r_hrs_1, + { + hrs_6_tmem_txt, + hrs_6_pal, + { + hrs_6_eye1_TA_tex_txt, + hrs_6_eye2_TA_tex_txt, + hrs_6_eye3_TA_tex_txt, + hrs_6_eye4_TA_tex_txt, + hrs_6_eye5_TA_tex_txt, + hrs_6_eye6_TA_tex_txt, + hrs_6_eye7_TA_tex_txt, + hrs_6_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 40, + 0, + 184, + }, + 0.011500000022351742, + 1, + 5, + 2, + 43, + 0, + 0, + 174, + 23, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_243, + ACTOR_OBJ_BANK_250, + &cKF_bs_r_hrs_1, + { + hrs_7_tmem_txt, + hrs_7_pal, + { + hrs_7_eye1_TA_tex_txt, + hrs_7_eye2_TA_tex_txt, + hrs_7_eye3_TA_tex_txt, + hrs_7_eye4_TA_tex_txt, + hrs_7_eye5_TA_tex_txt, + hrs_7_eye6_TA_tex_txt, + hrs_7_eye7_TA_tex_txt, + hrs_7_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 40, + 0, + 184, + }, + 0.011500000022351742, + 1, + 6, + 23, + 43, + 0, + 0, + 175, + 23, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_253, + ACTOR_OBJ_BANK_254, + &cKF_bs_r_kgr_1, + { + kgr_1_tmem_txt, + kgr_1_pal, + { + kgr_1_eye1_TA_tex_txt, + kgr_1_eye2_TA_tex_txt, + kgr_1_eye3_TA_tex_txt, + kgr_1_eye4_TA_tex_txt, + kgr_1_eye5_TA_tex_txt, + kgr_1_eye6_TA_tex_txt, + kgr_1_eye7_TA_tex_txt, + kgr_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 88, + 0, + 128, + }, + 0.010499999858438969, + 1, + 0, + 7, + 41, + 0, + 0, + 201, + 23, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_253, + ACTOR_OBJ_BANK_255, + &cKF_bs_r_kgr_1, + { + kgr_2_tmem_txt, + kgr_2_pal, + { + kgr_2_eye1_TA_tex_txt, + kgr_2_eye2_TA_tex_txt, + kgr_2_eye3_TA_tex_txt, + kgr_2_eye4_TA_tex_txt, + kgr_2_eye5_TA_tex_txt, + kgr_2_eye6_TA_tex_txt, + kgr_2_eye7_TA_tex_txt, + kgr_2_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 88, + 0, + 128, + }, + 0.010499999858438969, + 1, + 1, + 10, + 41, + 0, + 0, + 202, + 23, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_253, + ACTOR_OBJ_BANK_256, + &cKF_bs_r_kgr_1, + { + kgr_3_tmem_txt, + kgr_3_pal, + { + kgr_3_eye1_TA_tex_txt, + kgr_3_eye2_TA_tex_txt, + kgr_3_eye3_TA_tex_txt, + kgr_3_eye4_TA_tex_txt, + kgr_3_eye5_TA_tex_txt, + kgr_3_eye6_TA_tex_txt, + kgr_3_eye7_TA_tex_txt, + kgr_3_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 88, + 0, + 128, + }, + 0.010499999858438969, + 1, + 2, + 22, + 41, + 0, + 0, + 203, + 23, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_253, + ACTOR_OBJ_BANK_257, + &cKF_bs_r_kgr_1, + { + kgr_4_tmem_txt, + kgr_4_pal, + { + kgr_4_eye1_TA_tex_txt, + kgr_4_eye2_TA_tex_txt, + kgr_4_eye3_TA_tex_txt, + kgr_4_eye4_TA_tex_txt, + kgr_4_eye5_TA_tex_txt, + kgr_4_eye6_TA_tex_txt, + kgr_4_eye7_TA_tex_txt, + kgr_4_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 88, + 0, + 128, + }, + 0.010499999858438969, + 1, + 3, + 3, + 41, + 0, + 0, + 204, + 23, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_253, + ACTOR_OBJ_BANK_258, + &cKF_bs_r_kgr_1, + { + kgr_5_tmem_txt, + kgr_5_pal, + { + kgr_5_eye1_TA_tex_txt, + kgr_5_eye2_TA_tex_txt, + kgr_5_eye3_TA_tex_txt, + kgr_5_eye4_TA_tex_txt, + kgr_5_eye5_TA_tex_txt, + kgr_5_eye6_TA_tex_txt, + kgr_5_eye7_TA_tex_txt, + kgr_5_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 88, + 0, + 128, + }, + 0.010499999858438969, + 1, + 4, + 27, + 41, + 0, + 0, + 205, + 23, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_253, + ACTOR_OBJ_BANK_259, + &cKF_bs_r_kgr_1, + { + kgr_6_tmem_txt, + kgr_6_pal, + { + kgr_6_eye1_TA_tex_txt, + kgr_6_eye2_TA_tex_txt, + kgr_6_eye3_TA_tex_txt, + kgr_6_eye4_TA_tex_txt, + kgr_6_eye5_TA_tex_txt, + kgr_6_eye6_TA_tex_txt, + kgr_6_eye7_TA_tex_txt, + kgr_6_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 88, + 0, + 128, + }, + 0.010499999858438969, + 1, + 5, + 31, + 41, + 0, + 0, + 206, + 23, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_262, + ACTOR_OBJ_BANK_263, + &cKF_bs_r_kal_1, + { + kal_1_tmem_txt, + kal_1_pal, + { + kal_1_eye1_TA_tex_txt, + kal_1_eye2_TA_tex_txt, + kal_1_eye3_TA_tex_txt, + kal_1_eye4_TA_tex_txt, + kal_1_eye5_TA_tex_txt, + kal_1_eye6_TA_tex_txt, + kal_1_eye7_TA_tex_txt, + kal_1_eye8_TA_tex_txt, + }, + { + kal_1_mouth1_TA_tex_txt, + kal_1_mouth2_TA_tex_txt, + kal_1_mouth3_TA_tex_txt, + kal_1_mouth4_TA_tex_txt, + kal_1_mouth5_TA_tex_txt, + kal_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 192, + }, + 0.008500000461935997, + 0, + 0, + 22, + 34, + 0, + 0, + 164, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_262, + ACTOR_OBJ_BANK_264, + &cKF_bs_r_kal_1, + { + kal_2_tmem_txt, + kal_2_pal, + { + kal_2_eye1_TA_tex_txt, + kal_2_eye2_TA_tex_txt, + kal_2_eye3_TA_tex_txt, + kal_2_eye4_TA_tex_txt, + kal_2_eye5_TA_tex_txt, + kal_2_eye6_TA_tex_txt, + kal_2_eye7_TA_tex_txt, + kal_2_eye8_TA_tex_txt, + }, + { + kal_2_mouth1_TA_tex_txt, + kal_2_mouth2_TA_tex_txt, + kal_2_mouth3_TA_tex_txt, + kal_2_mouth4_TA_tex_txt, + kal_2_mouth5_TA_tex_txt, + kal_2_mouth6_TA_tex_txt, + }, + 0, + 32, + 192, + }, + 0.008500000461935997, + 0, + 1, + 16, + 34, + 0, + 0, + 165, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_262, + ACTOR_OBJ_BANK_265, + &cKF_bs_r_kal_1, + { + kal_3_tmem_txt, + kal_3_pal, + { + kal_3_eye1_TA_tex_txt, + kal_3_eye2_TA_tex_txt, + kal_3_eye3_TA_tex_txt, + kal_3_eye4_TA_tex_txt, + kal_3_eye5_TA_tex_txt, + kal_3_eye6_TA_tex_txt, + kal_3_eye7_TA_tex_txt, + kal_3_eye8_TA_tex_txt, + }, + { + kal_3_mouth1_TA_tex_txt, + kal_3_mouth2_TA_tex_txt, + kal_3_mouth3_TA_tex_txt, + kal_3_mouth4_TA_tex_txt, + kal_3_mouth5_TA_tex_txt, + kal_3_mouth6_TA_tex_txt, + }, + 0, + 32, + 192, + }, + 0.008500000461935997, + 0, + 2, + 19, + 34, + 0, + 0, + 166, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_262, + ACTOR_OBJ_BANK_266, + &cKF_bs_r_kal_1, + { + kal_4_tmem_txt, + kal_4_pal, + { + kal_4_eye1_TA_tex_txt, + kal_4_eye2_TA_tex_txt, + kal_4_eye3_TA_tex_txt, + kal_4_eye4_TA_tex_txt, + kal_4_eye5_TA_tex_txt, + kal_4_eye6_TA_tex_txt, + kal_4_eye7_TA_tex_txt, + kal_4_eye8_TA_tex_txt, + }, + { + kal_4_mouth1_TA_tex_txt, + kal_4_mouth2_TA_tex_txt, + kal_4_mouth3_TA_tex_txt, + kal_4_mouth4_TA_tex_txt, + kal_4_mouth5_TA_tex_txt, + kal_4_mouth6_TA_tex_txt, + }, + 0, + 32, + 192, + }, + 0.008500000461935997, + 0, + 3, + 1, + 34, + 0, + 0, + 167, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_262, + ACTOR_OBJ_BANK_267, + &cKF_bs_r_kal_1, + { + kal_5_tmem_txt, + kal_5_pal, + { + kal_5_eye1_TA_tex_txt, + kal_5_eye2_TA_tex_txt, + kal_5_eye3_TA_tex_txt, + kal_5_eye4_TA_tex_txt, + kal_5_eye5_TA_tex_txt, + kal_5_eye6_TA_tex_txt, + kal_5_eye7_TA_tex_txt, + kal_5_eye8_TA_tex_txt, + }, + { + kal_5_mouth1_TA_tex_txt, + kal_5_mouth2_TA_tex_txt, + kal_5_mouth3_TA_tex_txt, + kal_5_mouth4_TA_tex_txt, + kal_5_mouth5_TA_tex_txt, + kal_5_mouth6_TA_tex_txt, + }, + 0, + 32, + 192, + }, + 0.008500000461935997, + 0, + 4, + 6, + 34, + 0, + 0, + 168, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_268, + ACTOR_OBJ_BANK_269, + &cKF_bs_r_lon_1, + { + lon_1_tmem_txt, + lon_1_pal, + { + lon_1_eye1_TA_tex_txt, + lon_1_eye2_TA_tex_txt, + lon_1_eye3_TA_tex_txt, + lon_1_eye4_TA_tex_txt, + lon_1_eye5_TA_tex_txt, + lon_1_eye6_TA_tex_txt, + lon_1_eye7_TA_tex_txt, + lon_1_eye8_TA_tex_txt, + }, + { + lon_1_mouth1_TA_tex_txt, + lon_1_mouth2_TA_tex_txt, + lon_1_mouth3_TA_tex_txt, + lon_1_mouth4_TA_tex_txt, + lon_1_mouth5_TA_tex_txt, + lon_1_mouth6_TA_tex_txt, + }, + 128, + 96, + 184, + }, + 0.01140000019222498, + 0, + 0, + 22, + 43, + 0, + 0, + 177, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_268, + ACTOR_OBJ_BANK_270, + &cKF_bs_r_lon_1, + { + lon_2_tmem_txt, + lon_2_pal, + { + lon_2_eye1_TA_tex_txt, + lon_2_eye2_TA_tex_txt, + lon_2_eye3_TA_tex_txt, + lon_2_eye4_TA_tex_txt, + lon_2_eye5_TA_tex_txt, + lon_2_eye6_TA_tex_txt, + lon_2_eye7_TA_tex_txt, + lon_2_eye8_TA_tex_txt, + }, + { + lon_2_mouth1_TA_tex_txt, + lon_2_mouth2_TA_tex_txt, + lon_2_mouth3_TA_tex_txt, + lon_2_mouth4_TA_tex_txt, + lon_2_mouth5_TA_tex_txt, + lon_2_mouth6_TA_tex_txt, + }, + 128, + 96, + 184, + }, + 0.01140000019222498, + 0, + 1, + 24, + 43, + 0, + 0, + 178, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_268, + ACTOR_OBJ_BANK_271, + &cKF_bs_r_lon_1, + { + lon_3_tmem_txt, + lon_3_pal, + { + lon_3_eye1_TA_tex_txt, + lon_3_eye2_TA_tex_txt, + lon_3_eye3_TA_tex_txt, + lon_3_eye4_TA_tex_txt, + lon_3_eye5_TA_tex_txt, + lon_3_eye6_TA_tex_txt, + lon_3_eye7_TA_tex_txt, + lon_3_eye8_TA_tex_txt, + }, + { + lon_3_mouth1_TA_tex_txt, + lon_3_mouth2_TA_tex_txt, + lon_3_mouth3_TA_tex_txt, + lon_3_mouth4_TA_tex_txt, + lon_3_mouth5_TA_tex_txt, + lon_3_mouth6_TA_tex_txt, + }, + 128, + 96, + 184, + }, + 0.01140000019222498, + 0, + 2, + 12, + 43, + 0, + 0, + 179, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_274, + ACTOR_OBJ_BANK_275, + &cKF_bs_r_mus_1, + { + mus_1_tmem_txt, + mus_1_pal, + { + mus_1_eye1_TA_tex_txt, + mus_1_eye2_TA_tex_txt, + mus_1_eye3_TA_tex_txt, + mus_1_eye4_TA_tex_txt, + mus_1_eye5_TA_tex_txt, + mus_1_eye6_TA_tex_txt, + mus_1_eye7_TA_tex_txt, + mus_1_eye8_TA_tex_txt, + }, + { + mus_1_mouth1_TA_tex_txt, + mus_1_mouth2_TA_tex_txt, + mus_1_mouth3_TA_tex_txt, + mus_1_mouth4_TA_tex_txt, + mus_1_mouth5_TA_tex_txt, + mus_1_mouth6_TA_tex_txt, + }, + 96, + 128, + 184, + }, + 0.005499999970197678, + 0, + 0, + 3, + 30, + 0, + 0, + 89, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_274, + ACTOR_OBJ_BANK_276, + &cKF_bs_r_mus_1, + { + mus_2_tmem_txt, + mus_2_pal, + { + mus_2_eye1_TA_tex_txt, + mus_2_eye2_TA_tex_txt, + mus_2_eye3_TA_tex_txt, + mus_2_eye4_TA_tex_txt, + mus_2_eye5_TA_tex_txt, + mus_2_eye6_TA_tex_txt, + mus_2_eye7_TA_tex_txt, + mus_2_eye8_TA_tex_txt, + }, + { + mus_2_mouth1_TA_tex_txt, + mus_2_mouth2_TA_tex_txt, + mus_2_mouth3_TA_tex_txt, + mus_2_mouth4_TA_tex_txt, + mus_2_mouth5_TA_tex_txt, + mus_2_mouth6_TA_tex_txt, + }, + 96, + 128, + 184, + }, + 0.005499999970197678, + 0, + 1, + 19, + 30, + 0, + 0, + 90, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_274, + ACTOR_OBJ_BANK_277, + &cKF_bs_r_mus_1, + { + mus_3_tmem_txt, + mus_3_pal, + { + mus_3_eye1_TA_tex_txt, + mus_3_eye2_TA_tex_txt, + mus_3_eye3_TA_tex_txt, + mus_3_eye4_TA_tex_txt, + mus_3_eye5_TA_tex_txt, + mus_3_eye6_TA_tex_txt, + mus_3_eye7_TA_tex_txt, + mus_3_eye8_TA_tex_txt, + }, + { + mus_3_mouth1_TA_tex_txt, + mus_3_mouth2_TA_tex_txt, + mus_3_mouth3_TA_tex_txt, + mus_3_mouth4_TA_tex_txt, + mus_3_mouth5_TA_tex_txt, + mus_3_mouth6_TA_tex_txt, + }, + 96, + 128, + 184, + }, + 0.005499999970197678, + 0, + 2, + 23, + 30, + 0, + 0, + 91, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_274, + ACTOR_OBJ_BANK_278, + &cKF_bs_r_mus_1, + { + mus_4_tmem_txt, + mus_4_pal, + { + mus_4_eye1_TA_tex_txt, + mus_4_eye2_TA_tex_txt, + mus_4_eye3_TA_tex_txt, + mus_4_eye4_TA_tex_txt, + mus_4_eye5_TA_tex_txt, + mus_4_eye6_TA_tex_txt, + mus_4_eye7_TA_tex_txt, + mus_4_eye8_TA_tex_txt, + }, + { + mus_4_mouth1_TA_tex_txt, + mus_4_mouth2_TA_tex_txt, + mus_4_mouth3_TA_tex_txt, + mus_4_mouth4_TA_tex_txt, + mus_4_mouth5_TA_tex_txt, + mus_4_mouth6_TA_tex_txt, + }, + 96, + 128, + 184, + }, + 0.005499999970197678, + 0, + 3, + 13, + 30, + 0, + 0, + 92, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_274, + ACTOR_OBJ_BANK_279, + &cKF_bs_r_mus_1, + { + mus_5_tmem_txt, + mus_5_pal, + { + mus_5_eye1_TA_tex_txt, + mus_5_eye2_TA_tex_txt, + mus_5_eye3_TA_tex_txt, + mus_5_eye4_TA_tex_txt, + mus_5_eye5_TA_tex_txt, + mus_5_eye6_TA_tex_txt, + mus_5_eye7_TA_tex_txt, + mus_5_eye8_TA_tex_txt, + }, + { + mus_5_mouth1_TA_tex_txt, + mus_5_mouth2_TA_tex_txt, + mus_5_mouth3_TA_tex_txt, + mus_5_mouth4_TA_tex_txt, + mus_5_mouth5_TA_tex_txt, + mus_5_mouth6_TA_tex_txt, + }, + 96, + 128, + 184, + }, + 0.005499999970197678, + 0, + 4, + 5, + 30, + 0, + 0, + 93, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_274, + ACTOR_OBJ_BANK_280, + &cKF_bs_r_mus_1, + { + mus_6_tmem_txt, + mus_6_pal, + { + mus_6_eye1_TA_tex_txt, + mus_6_eye2_TA_tex_txt, + mus_6_eye3_TA_tex_txt, + mus_6_eye4_TA_tex_txt, + mus_6_eye5_TA_tex_txt, + mus_6_eye6_TA_tex_txt, + mus_6_eye7_TA_tex_txt, + mus_6_eye8_TA_tex_txt, + }, + { + mus_6_mouth1_TA_tex_txt, + mus_6_mouth2_TA_tex_txt, + mus_6_mouth3_TA_tex_txt, + mus_6_mouth4_TA_tex_txt, + mus_6_mouth5_TA_tex_txt, + mus_6_mouth6_TA_tex_txt, + }, + 96, + 128, + 184, + }, + 0.005499999970197678, + 0, + 5, + 26, + 30, + 0, + 0, + 94, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_274, + ACTOR_OBJ_BANK_281, + &cKF_bs_r_mus_1, + { + mus_7_tmem_txt, + mus_7_pal, + { + mus_7_eye1_TA_tex_txt, + mus_7_eye2_TA_tex_txt, + mus_7_eye3_TA_tex_txt, + mus_7_eye4_TA_tex_txt, + mus_7_eye5_TA_tex_txt, + mus_7_eye6_TA_tex_txt, + mus_7_eye7_TA_tex_txt, + mus_7_eye8_TA_tex_txt, + }, + { + mus_7_mouth1_TA_tex_txt, + mus_7_mouth2_TA_tex_txt, + mus_7_mouth3_TA_tex_txt, + mus_7_mouth4_TA_tex_txt, + mus_7_mouth5_TA_tex_txt, + mus_7_mouth6_TA_tex_txt, + }, + 96, + 128, + 184, + }, + 0.005499999970197678, + 0, + 6, + 2, + 30, + 0, + 0, + 95, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_274, + ACTOR_OBJ_BANK_282, + &cKF_bs_r_mus_1, + { + mus_8_tmem_txt, + mus_8_pal, + { + mus_8_eye1_TA_tex_txt, + mus_8_eye2_TA_tex_txt, + mus_8_eye3_TA_tex_txt, + mus_8_eye4_TA_tex_txt, + mus_8_eye5_TA_tex_txt, + mus_8_eye6_TA_tex_txt, + mus_8_eye7_TA_tex_txt, + mus_8_eye8_TA_tex_txt, + }, + { + mus_8_mouth1_TA_tex_txt, + mus_8_mouth2_TA_tex_txt, + mus_8_mouth3_TA_tex_txt, + mus_8_mouth4_TA_tex_txt, + mus_8_mouth5_TA_tex_txt, + mus_8_mouth6_TA_tex_txt, + }, + 96, + 128, + 184, + }, + 0.005499999970197678, + 0, + 7, + 24, + 30, + 0, + 0, + 96, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_274, + ACTOR_OBJ_BANK_283, + &cKF_bs_r_mus_1, + { + mus_9_tmem_txt, + mus_9_pal, + { + mus_9_eye1_TA_tex_txt, + mus_9_eye2_TA_tex_txt, + mus_9_eye3_TA_tex_txt, + mus_9_eye4_TA_tex_txt, + mus_9_eye5_TA_tex_txt, + mus_9_eye6_TA_tex_txt, + mus_9_eye7_TA_tex_txt, + mus_9_eye8_TA_tex_txt, + }, + { + mus_9_mouth1_TA_tex_txt, + mus_9_mouth2_TA_tex_txt, + mus_9_mouth3_TA_tex_txt, + mus_9_mouth4_TA_tex_txt, + mus_9_mouth5_TA_tex_txt, + mus_9_mouth6_TA_tex_txt, + }, + 96, + 128, + 184, + }, + 0.005499999970197678, + 0, + 8, + 5, + 30, + 0, + 0, + 97, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_284, + ACTOR_OBJ_BANK_285, + &cKF_bs_r_oct_1, + { + oct_1_tmem_txt, + oct_1_pal, + { + oct_1_eye1_TA_tex_txt, + oct_1_eye2_TA_tex_txt, + oct_1_eye3_TA_tex_txt, + oct_1_eye4_TA_tex_txt, + oct_1_eye5_TA_tex_txt, + oct_1_eye6_TA_tex_txt, + oct_1_eye7_TA_tex_txt, + oct_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 0, + 0, + 80, + }, + 0.00930000003427267, + 1, + 0, + 26, + 35, + 0, + 0, + 176, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_286, + ACTOR_OBJ_BANK_287, + &cKF_bs_r_ost_1, + { + ost_1_tmem_txt, + ost_1_pal, + { + ost_1_eye1_TA_tex_txt, + ost_1_eye2_TA_tex_txt, + ost_1_eye3_TA_tex_txt, + ost_1_eye4_TA_tex_txt, + ost_1_eye5_TA_tex_txt, + ost_1_eye6_TA_tex_txt, + ost_1_eye7_TA_tex_txt, + ost_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 56, + 0, + 160, + }, + 0.011500000022351742, + 1, + 0, + 0, + 44, + 0, + 0, + 197, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_286, + ACTOR_OBJ_BANK_288, + &cKF_bs_r_ost_1, + { + ost_2_tmem_txt, + ost_2_pal, + { + ost_2_eye1_TA_tex_txt, + ost_2_eye2_TA_tex_txt, + ost_2_eye3_TA_tex_txt, + ost_2_eye4_TA_tex_txt, + ost_2_eye5_TA_tex_txt, + ost_2_eye6_TA_tex_txt, + ost_2_eye7_TA_tex_txt, + ost_2_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 56, + 0, + 160, + }, + 0.011500000022351742, + 1, + 1, + 31, + 44, + 0, + 0, + 198, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_286, + ACTOR_OBJ_BANK_289, + &cKF_bs_r_ost_1, + { + ost_3_tmem_txt, + ost_3_pal, + { + ost_3_eye1_TA_tex_txt, + ost_3_eye2_TA_tex_txt, + ost_3_eye3_TA_tex_txt, + ost_3_eye4_TA_tex_txt, + ost_3_eye5_TA_tex_txt, + ost_3_eye6_TA_tex_txt, + ost_3_eye7_TA_tex_txt, + ost_3_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 56, + 0, + 160, + }, + 0.011500000022351742, + 1, + 2, + 11, + 44, + 0, + 0, + 199, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_286, + ACTOR_OBJ_BANK_290, + &cKF_bs_r_ost_1, + { + ost_4_tmem_txt, + ost_4_pal, + { + ost_4_eye1_TA_tex_txt, + ost_4_eye2_TA_tex_txt, + ost_4_eye3_TA_tex_txt, + ost_4_eye4_TA_tex_txt, + ost_4_eye5_TA_tex_txt, + ost_4_eye6_TA_tex_txt, + ost_4_eye7_TA_tex_txt, + ost_4_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 56, + 0, + 160, + }, + 0.011500000022351742, + 1, + 3, + 9, + 44, + 0, + 0, + 200, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_107, + ACTOR_OBJ_BANK_108, + &cKF_bs_r_pbr_1, + { + pbr_1_tmem_txt, + pbr_1_pal, + { + pbr_1_eye1_TA_tex_txt, + pbr_1_eye2_TA_tex_txt, + pbr_1_eye3_TA_tex_txt, + pbr_1_eye4_TA_tex_txt, + pbr_1_eye5_TA_tex_txt, + pbr_1_eye6_TA_tex_txt, + pbr_1_eye7_TA_tex_txt, + pbr_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 40, + 0, + 144, + }, + 0.013000000268220901, + 1, + 0, + 21, + 46, + 0, + 0, + 207, + 23, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_107, + ACTOR_OBJ_BANK_109, + &cKF_bs_r_pbr_1, + { + pbr_2_tmem_txt, + pbr_2_pal, + { + pbr_2_eye1_TA_tex_txt, + pbr_2_eye2_TA_tex_txt, + pbr_2_eye3_TA_tex_txt, + pbr_2_eye4_TA_tex_txt, + pbr_2_eye5_TA_tex_txt, + pbr_2_eye6_TA_tex_txt, + pbr_2_eye7_TA_tex_txt, + pbr_2_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 40, + 0, + 144, + }, + 0.013000000268220901, + 1, + 1, + 24, + 46, + 0, + 0, + 208, + 23, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_107, + ACTOR_OBJ_BANK_110, + &cKF_bs_r_pbr_1, + { + pbr_3_tmem_txt, + pbr_3_pal, + { + pbr_3_eye1_TA_tex_txt, + pbr_3_eye2_TA_tex_txt, + pbr_3_eye3_TA_tex_txt, + pbr_3_eye4_TA_tex_txt, + pbr_3_eye5_TA_tex_txt, + pbr_3_eye6_TA_tex_txt, + pbr_3_eye7_TA_tex_txt, + pbr_3_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 40, + 0, + 144, + }, + 0.013000000268220901, + 1, + 2, + 18, + 46, + 0, + 0, + 209, + 23, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_107, + ACTOR_OBJ_BANK_111, + &cKF_bs_r_pbr_1, + { + pbr_4_tmem_txt, + pbr_4_pal, + { + pbr_4_eye1_TA_tex_txt, + pbr_4_eye2_TA_tex_txt, + pbr_4_eye3_TA_tex_txt, + pbr_4_eye4_TA_tex_txt, + pbr_4_eye5_TA_tex_txt, + pbr_4_eye6_TA_tex_txt, + pbr_4_eye7_TA_tex_txt, + pbr_4_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 40, + 0, + 144, + }, + 0.013000000268220901, + 1, + 3, + 1, + 46, + 0, + 0, + 210, + 23, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_107, + ACTOR_OBJ_BANK_112, + &cKF_bs_r_pbr_1, + { + pbr_5_tmem_txt, + pbr_5_pal, + { + pbr_5_eye1_TA_tex_txt, + pbr_5_eye2_TA_tex_txt, + pbr_5_eye3_TA_tex_txt, + pbr_5_eye4_TA_tex_txt, + pbr_5_eye5_TA_tex_txt, + pbr_5_eye6_TA_tex_txt, + pbr_5_eye7_TA_tex_txt, + pbr_5_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 40, + 0, + 144, + }, + 0.013000000268220901, + 1, + 4, + 28, + 46, + 0, + 0, + 211, + 23, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_291, + ACTOR_OBJ_BANK_292, + &cKF_bs_r_pgn_1, + { + pgn_1_tmem_txt, + pgn_1_pal, + { + pgn_1_eye1_TA_tex_txt, + pgn_1_eye2_TA_tex_txt, + pgn_1_eye3_TA_tex_txt, + pgn_1_eye4_TA_tex_txt, + pgn_1_eye5_TA_tex_txt, + pgn_1_eye6_TA_tex_txt, + pgn_1_eye7_TA_tex_txt, + pgn_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 48, + 0, + 144, + }, + 0.007499999832361937, + 1, + 0, + 1, + 31, + 0, + 0, + 212, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_291, + ACTOR_OBJ_BANK_293, + &cKF_bs_r_pgn_1, + { + pgn_2_tmem_txt, + pgn_2_pal, + { + pgn_2_eye1_TA_tex_txt, + pgn_2_eye2_TA_tex_txt, + pgn_2_eye3_TA_tex_txt, + pgn_2_eye4_TA_tex_txt, + pgn_2_eye5_TA_tex_txt, + pgn_2_eye6_TA_tex_txt, + pgn_2_eye7_TA_tex_txt, + pgn_2_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 48, + 0, + 144, + }, + 0.007499999832361937, + 1, + 1, + 3, + 31, + 0, + 0, + 213, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_291, + ACTOR_OBJ_BANK_294, + &cKF_bs_r_pgn_1, + { + pgn_3_tmem_txt, + pgn_3_pal, + { + pgn_3_eye1_TA_tex_txt, + pgn_3_eye2_TA_tex_txt, + pgn_3_eye3_TA_tex_txt, + pgn_3_eye4_TA_tex_txt, + pgn_3_eye5_TA_tex_txt, + pgn_3_eye6_TA_tex_txt, + pgn_3_eye7_TA_tex_txt, + pgn_3_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 48, + 0, + 144, + }, + 0.007499999832361937, + 1, + 2, + 31, + 31, + 0, + 0, + 214, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_291, + ACTOR_OBJ_BANK_295, + &cKF_bs_r_pgn_1, + { + pgn_4_tmem_txt, + pgn_4_pal, + { + pgn_4_eye1_TA_tex_txt, + pgn_4_eye2_TA_tex_txt, + pgn_4_eye3_TA_tex_txt, + pgn_4_eye4_TA_tex_txt, + pgn_4_eye5_TA_tex_txt, + pgn_4_eye6_TA_tex_txt, + pgn_4_eye7_TA_tex_txt, + pgn_4_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 48, + 0, + 144, + }, + 0.007499999832361937, + 1, + 3, + 5, + 31, + 0, + 0, + 215, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_291, + ACTOR_OBJ_BANK_296, + &cKF_bs_r_pgn_1, + { + pgn_5_tmem_txt, + pgn_5_pal, + { + pgn_5_eye1_TA_tex_txt, + pgn_5_eye2_TA_tex_txt, + pgn_5_eye3_TA_tex_txt, + pgn_5_eye4_TA_tex_txt, + pgn_5_eye5_TA_tex_txt, + pgn_5_eye6_TA_tex_txt, + pgn_5_eye7_TA_tex_txt, + pgn_5_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 48, + 0, + 144, + }, + 0.007499999832361937, + 1, + 4, + 30, + 31, + 0, + 0, + 216, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_291, + ACTOR_OBJ_BANK_297, + &cKF_bs_r_pgn_1, + { + pgn_6_tmem_txt, + pgn_6_pal, + { + pgn_6_eye1_TA_tex_txt, + pgn_6_eye2_TA_tex_txt, + pgn_6_eye3_TA_tex_txt, + pgn_6_eye4_TA_tex_txt, + pgn_6_eye5_TA_tex_txt, + pgn_6_eye6_TA_tex_txt, + pgn_6_eye7_TA_tex_txt, + pgn_6_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 48, + 0, + 144, + }, + 0.007499999832361937, + 1, + 5, + 9, + 31, + 0, + 0, + 217, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_291, + ACTOR_OBJ_BANK_298, + &cKF_bs_r_pgn_1, + { + pgn_7_tmem_txt, + pgn_7_pal, + { + pgn_7_eye1_TA_tex_txt, + pgn_7_eye2_TA_tex_txt, + pgn_7_eye3_TA_tex_txt, + pgn_7_eye4_TA_tex_txt, + pgn_7_eye5_TA_tex_txt, + pgn_7_eye6_TA_tex_txt, + pgn_7_eye7_TA_tex_txt, + pgn_7_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 48, + 0, + 144, + }, + 0.007499999832361937, + 1, + 6, + 9, + 31, + 0, + 0, + 218, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_299, + ACTOR_OBJ_BANK_300, + &cKF_bs_r_pig_1, + { + pig_1_tmem_txt, + pig_1_pal, + { + pig_1_eye1_TA_tex_txt, + pig_1_eye2_TA_tex_txt, + pig_1_eye3_TA_tex_txt, + pig_1_eye4_TA_tex_txt, + pig_1_eye5_TA_tex_txt, + pig_1_eye6_TA_tex_txt, + pig_1_eye7_TA_tex_txt, + pig_1_eye8_TA_tex_txt, + }, + { + pig_1_mouth1_TA_tex_txt, + pig_1_mouth2_TA_tex_txt, + pig_1_mouth3_TA_tex_txt, + pig_1_mouth4_TA_tex_txt, + pig_1_mouth5_TA_tex_txt, + pig_1_mouth6_TA_tex_txt, + }, + 64, + 112, + 160, + }, + 0.009999999776482582, + 0, + 0, + 0, + 36, + 0, + 0, + 98, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_299, + ACTOR_OBJ_BANK_301, + &cKF_bs_r_pig_1, + { + pig_2_tmem_txt, + pig_2_pal, + { + pig_2_eye1_TA_tex_txt, + pig_2_eye2_TA_tex_txt, + pig_2_eye3_TA_tex_txt, + pig_2_eye4_TA_tex_txt, + pig_2_eye5_TA_tex_txt, + pig_2_eye6_TA_tex_txt, + pig_2_eye7_TA_tex_txt, + pig_2_eye8_TA_tex_txt, + }, + { + pig_2_mouth1_TA_tex_txt, + pig_2_mouth2_TA_tex_txt, + pig_2_mouth3_TA_tex_txt, + pig_2_mouth4_TA_tex_txt, + pig_2_mouth5_TA_tex_txt, + pig_2_mouth6_TA_tex_txt, + }, + 64, + 112, + 160, + }, + 0.009999999776482582, + 0, + 1, + 22, + 36, + 0, + 0, + 99, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_299, + ACTOR_OBJ_BANK_302, + &cKF_bs_r_pig_1, + { + pig_3_tmem_txt, + pig_3_pal, + { + pig_3_eye1_TA_tex_txt, + pig_3_eye2_TA_tex_txt, + pig_3_eye3_TA_tex_txt, + pig_3_eye4_TA_tex_txt, + pig_3_eye5_TA_tex_txt, + pig_3_eye6_TA_tex_txt, + pig_3_eye7_TA_tex_txt, + pig_3_eye8_TA_tex_txt, + }, + { + pig_3_mouth1_TA_tex_txt, + pig_3_mouth2_TA_tex_txt, + pig_3_mouth3_TA_tex_txt, + pig_3_mouth4_TA_tex_txt, + pig_3_mouth5_TA_tex_txt, + pig_3_mouth6_TA_tex_txt, + }, + 64, + 112, + 160, + }, + 0.009999999776482582, + 0, + 2, + 18, + 36, + 0, + 0, + 100, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_299, + ACTOR_OBJ_BANK_303, + &cKF_bs_r_pig_1, + { + pig_4_tmem_txt, + pig_4_pal, + { + pig_4_eye1_TA_tex_txt, + pig_4_eye2_TA_tex_txt, + pig_4_eye3_TA_tex_txt, + pig_4_eye4_TA_tex_txt, + pig_4_eye5_TA_tex_txt, + pig_4_eye6_TA_tex_txt, + pig_4_eye7_TA_tex_txt, + pig_4_eye8_TA_tex_txt, + }, + { + pig_4_mouth1_TA_tex_txt, + pig_4_mouth2_TA_tex_txt, + pig_4_mouth3_TA_tex_txt, + pig_4_mouth4_TA_tex_txt, + pig_4_mouth5_TA_tex_txt, + pig_4_mouth6_TA_tex_txt, + }, + 64, + 112, + 160, + }, + 0.009999999776482582, + 0, + 3, + 3, + 36, + 0, + 0, + 101, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_299, + ACTOR_OBJ_BANK_304, + &cKF_bs_r_pig_1, + { + pig_5_tmem_txt, + pig_5_pal, + { + pig_5_eye1_TA_tex_txt, + pig_5_eye2_TA_tex_txt, + pig_5_eye3_TA_tex_txt, + pig_5_eye4_TA_tex_txt, + pig_5_eye5_TA_tex_txt, + pig_5_eye6_TA_tex_txt, + pig_5_eye7_TA_tex_txt, + pig_5_eye8_TA_tex_txt, + }, + { + pig_5_mouth1_TA_tex_txt, + pig_5_mouth2_TA_tex_txt, + pig_5_mouth3_TA_tex_txt, + pig_5_mouth4_TA_tex_txt, + pig_5_mouth5_TA_tex_txt, + pig_5_mouth6_TA_tex_txt, + }, + 64, + 112, + 160, + }, + 0.009999999776482582, + 0, + 4, + 13, + 36, + 0, + 0, + 102, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_299, + ACTOR_OBJ_BANK_305, + &cKF_bs_r_pig_1, + { + pig_6_tmem_txt, + pig_6_pal, + { + pig_6_eye1_TA_tex_txt, + pig_6_eye2_TA_tex_txt, + pig_6_eye3_TA_tex_txt, + pig_6_eye4_TA_tex_txt, + pig_6_eye5_TA_tex_txt, + pig_6_eye6_TA_tex_txt, + pig_6_eye7_TA_tex_txt, + pig_6_eye8_TA_tex_txt, + }, + { + pig_6_mouth1_TA_tex_txt, + pig_6_mouth2_TA_tex_txt, + pig_6_mouth3_TA_tex_txt, + pig_6_mouth4_TA_tex_txt, + pig_6_mouth5_TA_tex_txt, + pig_6_mouth6_TA_tex_txt, + }, + 64, + 112, + 160, + }, + 0.009999999776482582, + 0, + 5, + 10, + 36, + 0, + 0, + 103, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_299, + ACTOR_OBJ_BANK_306, + &cKF_bs_r_pig_1, + { + pig_7_tmem_txt, + pig_7_pal, + { + pig_7_eye1_TA_tex_txt, + pig_7_eye2_TA_tex_txt, + pig_7_eye3_TA_tex_txt, + pig_7_eye4_TA_tex_txt, + pig_7_eye5_TA_tex_txt, + pig_7_eye6_TA_tex_txt, + pig_7_eye7_TA_tex_txt, + pig_7_eye8_TA_tex_txt, + }, + { + pig_7_mouth1_TA_tex_txt, + pig_7_mouth2_TA_tex_txt, + pig_7_mouth3_TA_tex_txt, + pig_7_mouth4_TA_tex_txt, + pig_7_mouth5_TA_tex_txt, + pig_7_mouth6_TA_tex_txt, + }, + 64, + 112, + 160, + }, + 0.009999999776482582, + 0, + 6, + 14, + 36, + 0, + 0, + 104, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_299, + ACTOR_OBJ_BANK_307, + &cKF_bs_r_pig_1, + { + pig_8_tmem_txt, + pig_8_pal, + { + pig_8_eye1_TA_tex_txt, + pig_8_eye2_TA_tex_txt, + pig_8_eye3_TA_tex_txt, + pig_8_eye4_TA_tex_txt, + pig_8_eye5_TA_tex_txt, + pig_8_eye6_TA_tex_txt, + pig_8_eye7_TA_tex_txt, + pig_8_eye8_TA_tex_txt, + }, + { + pig_8_mouth1_TA_tex_txt, + pig_8_mouth2_TA_tex_txt, + pig_8_mouth3_TA_tex_txt, + pig_8_mouth4_TA_tex_txt, + pig_8_mouth5_TA_tex_txt, + pig_8_mouth6_TA_tex_txt, + }, + 64, + 112, + 160, + }, + 0.009999999776482582, + 0, + 7, + 7, + 36, + 0, + 0, + 105, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_299, + ACTOR_OBJ_BANK_308, + &cKF_bs_r_pig_1, + { + pig_9_tmem_txt, + pig_9_pal, + { + pig_9_eye1_TA_tex_txt, + pig_9_eye2_TA_tex_txt, + pig_9_eye3_TA_tex_txt, + pig_9_eye4_TA_tex_txt, + pig_9_eye5_TA_tex_txt, + pig_9_eye6_TA_tex_txt, + pig_9_eye7_TA_tex_txt, + pig_9_eye8_TA_tex_txt, + }, + { + pig_9_mouth1_TA_tex_txt, + pig_9_mouth2_TA_tex_txt, + pig_9_mouth3_TA_tex_txt, + pig_9_mouth4_TA_tex_txt, + pig_9_mouth5_TA_tex_txt, + pig_9_mouth6_TA_tex_txt, + }, + 64, + 112, + 160, + }, + 0.009999999776482582, + 0, + 8, + 14, + 36, + 0, + 0, + 106, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_299, + ACTOR_OBJ_BANK_309, + &cKF_bs_r_pig_1, + { + pig_10_tmem_txt, + pig_10_pal, + { + pig_10_eye1_TA_tex_txt, + pig_10_eye2_TA_tex_txt, + pig_10_eye3_TA_tex_txt, + pig_10_eye4_TA_tex_txt, + pig_10_eye5_TA_tex_txt, + pig_10_eye6_TA_tex_txt, + pig_10_eye7_TA_tex_txt, + pig_10_eye8_TA_tex_txt, + }, + { + pig_10_mouth1_TA_tex_txt, + pig_10_mouth2_TA_tex_txt, + pig_10_mouth3_TA_tex_txt, + pig_10_mouth4_TA_tex_txt, + pig_10_mouth5_TA_tex_txt, + pig_10_mouth6_TA_tex_txt, + }, + 64, + 112, + 160, + }, + 0.009999999776482582, + 0, + 9, + 25, + 36, + 0, + 0, + 107, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_320, + ACTOR_OBJ_BANK_321, + &cKF_bs_r_rbt_1, + { + rbt_1_tmem_txt, + rbt_1_pal, + { + rbt_1_eye1_TA_tex_txt, + rbt_1_eye2_TA_tex_txt, + rbt_1_eye3_TA_tex_txt, + rbt_1_eye4_TA_tex_txt, + rbt_1_eye5_TA_tex_txt, + rbt_1_eye6_TA_tex_txt, + rbt_1_eye7_TA_tex_txt, + rbt_1_eye8_TA_tex_txt, + }, + { + rbt_1_mouth1_TA_tex_txt, + rbt_1_mouth2_TA_tex_txt, + rbt_1_mouth3_TA_tex_txt, + rbt_1_mouth4_TA_tex_txt, + rbt_1_mouth5_TA_tex_txt, + rbt_1_mouth6_TA_tex_txt, + }, + 80, + 112, + 176, + }, + 0.009999999776482582, + 0, + 0, + 1, + 34, + 0, + 0, + 57, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_320, + ACTOR_OBJ_BANK_322, + &cKF_bs_r_rbt_1, + { + rbt_2_tmem_txt, + rbt_2_pal, + { + rbt_2_eye1_TA_tex_txt, + rbt_2_eye2_TA_tex_txt, + rbt_2_eye3_TA_tex_txt, + rbt_2_eye4_TA_tex_txt, + rbt_2_eye5_TA_tex_txt, + rbt_2_eye6_TA_tex_txt, + rbt_2_eye7_TA_tex_txt, + rbt_2_eye8_TA_tex_txt, + }, + { + rbt_2_mouth1_TA_tex_txt, + rbt_2_mouth2_TA_tex_txt, + rbt_2_mouth3_TA_tex_txt, + rbt_2_mouth4_TA_tex_txt, + rbt_2_mouth5_TA_tex_txt, + rbt_2_mouth6_TA_tex_txt, + }, + 80, + 112, + 176, + }, + 0.009999999776482582, + 0, + 1, + 14, + 34, + 0, + 0, + 58, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_320, + ACTOR_OBJ_BANK_323, + &cKF_bs_r_rbt_1, + { + rbt_3_tmem_txt, + rbt_3_pal, + { + rbt_3_eye1_TA_tex_txt, + rbt_3_eye2_TA_tex_txt, + rbt_3_eye3_TA_tex_txt, + rbt_3_eye4_TA_tex_txt, + rbt_3_eye5_TA_tex_txt, + rbt_3_eye6_TA_tex_txt, + rbt_3_eye7_TA_tex_txt, + rbt_3_eye8_TA_tex_txt, + }, + { + rbt_3_mouth1_TA_tex_txt, + rbt_3_mouth2_TA_tex_txt, + rbt_3_mouth3_TA_tex_txt, + rbt_3_mouth4_TA_tex_txt, + rbt_3_mouth5_TA_tex_txt, + rbt_3_mouth6_TA_tex_txt, + }, + 80, + 112, + 176, + }, + 0.009999999776482582, + 0, + 2, + 13, + 34, + 0, + 0, + 59, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_320, + ACTOR_OBJ_BANK_324, + &cKF_bs_r_rbt_1, + { + rbt_4_tmem_txt, + rbt_4_pal, + { + rbt_4_eye1_TA_tex_txt, + rbt_4_eye2_TA_tex_txt, + rbt_4_eye3_TA_tex_txt, + rbt_4_eye4_TA_tex_txt, + rbt_4_eye5_TA_tex_txt, + rbt_4_eye6_TA_tex_txt, + rbt_4_eye7_TA_tex_txt, + rbt_4_eye8_TA_tex_txt, + }, + { + rbt_4_mouth1_TA_tex_txt, + rbt_4_mouth2_TA_tex_txt, + rbt_4_mouth3_TA_tex_txt, + rbt_4_mouth4_TA_tex_txt, + rbt_4_mouth5_TA_tex_txt, + rbt_4_mouth6_TA_tex_txt, + }, + 80, + 112, + 176, + }, + 0.009999999776482582, + 0, + 3, + 19, + 34, + 0, + 0, + 60, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_320, + ACTOR_OBJ_BANK_325, + &cKF_bs_r_rbt_1, + { + rbt_5_tmem_txt, + rbt_5_pal, + { + rbt_5_eye1_TA_tex_txt, + rbt_5_eye2_TA_tex_txt, + rbt_5_eye3_TA_tex_txt, + rbt_5_eye4_TA_tex_txt, + rbt_5_eye5_TA_tex_txt, + rbt_5_eye6_TA_tex_txt, + rbt_5_eye7_TA_tex_txt, + rbt_5_eye8_TA_tex_txt, + }, + { + rbt_5_mouth1_TA_tex_txt, + rbt_5_mouth2_TA_tex_txt, + rbt_5_mouth3_TA_tex_txt, + rbt_5_mouth4_TA_tex_txt, + rbt_5_mouth5_TA_tex_txt, + rbt_5_mouth6_TA_tex_txt, + }, + 80, + 112, + 176, + }, + 0.009999999776482582, + 0, + 4, + 2, + 34, + 0, + 0, + 61, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_320, + ACTOR_OBJ_BANK_326, + &cKF_bs_r_rbt_1, + { + rbt_6_tmem_txt, + rbt_6_pal, + { + rbt_6_eye1_TA_tex_txt, + rbt_6_eye2_TA_tex_txt, + rbt_6_eye3_TA_tex_txt, + rbt_6_eye4_TA_tex_txt, + rbt_6_eye5_TA_tex_txt, + rbt_6_eye6_TA_tex_txt, + rbt_6_eye7_TA_tex_txt, + rbt_6_eye8_TA_tex_txt, + }, + { + rbt_6_mouth1_TA_tex_txt, + rbt_6_mouth2_TA_tex_txt, + rbt_6_mouth3_TA_tex_txt, + rbt_6_mouth4_TA_tex_txt, + rbt_6_mouth5_TA_tex_txt, + rbt_6_mouth6_TA_tex_txt, + }, + 80, + 112, + 176, + }, + 0.009999999776482582, + 0, + 5, + 18, + 34, + 0, + 0, + 62, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_320, + ACTOR_OBJ_BANK_327, + &cKF_bs_r_rbt_1, + { + rbt_7_tmem_txt, + rbt_7_pal, + { + rbt_7_eye1_TA_tex_txt, + rbt_7_eye2_TA_tex_txt, + rbt_7_eye3_TA_tex_txt, + rbt_7_eye4_TA_tex_txt, + rbt_7_eye5_TA_tex_txt, + rbt_7_eye6_TA_tex_txt, + rbt_7_eye7_TA_tex_txt, + rbt_7_eye8_TA_tex_txt, + }, + { + rbt_7_mouth1_TA_tex_txt, + rbt_7_mouth2_TA_tex_txt, + rbt_7_mouth3_TA_tex_txt, + rbt_7_mouth4_TA_tex_txt, + rbt_7_mouth5_TA_tex_txt, + rbt_7_mouth6_TA_tex_txt, + }, + 80, + 112, + 176, + }, + 0.009999999776482582, + 0, + 6, + 21, + 34, + 0, + 0, + 63, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_320, + ACTOR_OBJ_BANK_328, + &cKF_bs_r_rbt_1, + { + rbt_8_tmem_txt, + rbt_8_pal, + { + rbt_8_eye1_TA_tex_txt, + rbt_8_eye2_TA_tex_txt, + rbt_8_eye3_TA_tex_txt, + rbt_8_eye4_TA_tex_txt, + rbt_8_eye5_TA_tex_txt, + rbt_8_eye6_TA_tex_txt, + rbt_8_eye7_TA_tex_txt, + rbt_8_eye8_TA_tex_txt, + }, + { + rbt_8_mouth1_TA_tex_txt, + rbt_8_mouth2_TA_tex_txt, + rbt_8_mouth3_TA_tex_txt, + rbt_8_mouth4_TA_tex_txt, + rbt_8_mouth5_TA_tex_txt, + rbt_8_mouth6_TA_tex_txt, + }, + 80, + 112, + 176, + }, + 0.009999999776482582, + 0, + 7, + 24, + 34, + 0, + 0, + 64, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_320, + ACTOR_OBJ_BANK_329, + &cKF_bs_r_rbt_1, + { + rbt_9_tmem_txt, + rbt_9_pal, + { + rbt_9_eye1_TA_tex_txt, + rbt_9_eye2_TA_tex_txt, + rbt_9_eye3_TA_tex_txt, + rbt_9_eye4_TA_tex_txt, + rbt_9_eye5_TA_tex_txt, + rbt_9_eye6_TA_tex_txt, + rbt_9_eye7_TA_tex_txt, + rbt_9_eye8_TA_tex_txt, + }, + { + rbt_9_mouth1_TA_tex_txt, + rbt_9_mouth2_TA_tex_txt, + rbt_9_mouth3_TA_tex_txt, + rbt_9_mouth4_TA_tex_txt, + rbt_9_mouth5_TA_tex_txt, + rbt_9_mouth6_TA_tex_txt, + }, + 80, + 112, + 176, + }, + 0.009999999776482582, + 0, + 8, + 30, + 34, + 0, + 0, + 65, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_330, + ACTOR_OBJ_BANK_331, + &cKF_bs_r_rhn_1, + { + rhn_1_tmem_txt, + rhn_1_pal, + { + rhn_1_eye1_TA_tex_txt, + rhn_1_eye2_TA_tex_txt, + rhn_1_eye3_TA_tex_txt, + rhn_1_eye4_TA_tex_txt, + rhn_1_eye5_TA_tex_txt, + rhn_1_eye6_TA_tex_txt, + rhn_1_eye7_TA_tex_txt, + rhn_1_eye8_TA_tex_txt, + }, + { + rhn_1_mouth1_TA_tex_txt, + rhn_1_mouth2_TA_tex_txt, + rhn_1_mouth3_TA_tex_txt, + rhn_1_mouth4_TA_tex_txt, + rhn_1_mouth5_TA_tex_txt, + rhn_1_mouth6_TA_tex_txt, + }, + 72, + 120, + 168, + }, + 0.010999999940395355, + 1, + 0, + 0, + 37, + 0, + 0, + 189, + 23, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_330, + ACTOR_OBJ_BANK_332, + &cKF_bs_r_rhn_1, + { + rhn_2_tmem_txt, + rhn_2_pal, + { + rhn_2_eye1_TA_tex_txt, + rhn_2_eye2_TA_tex_txt, + rhn_2_eye3_TA_tex_txt, + rhn_2_eye4_TA_tex_txt, + rhn_2_eye5_TA_tex_txt, + rhn_2_eye6_TA_tex_txt, + rhn_2_eye7_TA_tex_txt, + rhn_2_eye8_TA_tex_txt, + }, + { + rhn_2_mouth1_TA_tex_txt, + rhn_2_mouth2_TA_tex_txt, + rhn_2_mouth3_TA_tex_txt, + rhn_2_mouth4_TA_tex_txt, + rhn_2_mouth5_TA_tex_txt, + rhn_2_mouth6_TA_tex_txt, + }, + 72, + 120, + 168, + }, + 0.010999999940395355, + 1, + 1, + 21, + 37, + 0, + 0, + 190, + 23, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_330, + ACTOR_OBJ_BANK_333, + &cKF_bs_r_rhn_1, + { + rhn_3_tmem_txt, + rhn_3_pal, + { + rhn_3_eye1_TA_tex_txt, + rhn_3_eye2_TA_tex_txt, + rhn_3_eye3_TA_tex_txt, + rhn_3_eye4_TA_tex_txt, + rhn_3_eye5_TA_tex_txt, + rhn_3_eye6_TA_tex_txt, + rhn_3_eye7_TA_tex_txt, + rhn_3_eye8_TA_tex_txt, + }, + { + rhn_3_mouth1_TA_tex_txt, + rhn_3_mouth2_TA_tex_txt, + rhn_3_mouth3_TA_tex_txt, + rhn_3_mouth4_TA_tex_txt, + rhn_3_mouth5_TA_tex_txt, + rhn_3_mouth6_TA_tex_txt, + }, + 72, + 120, + 168, + }, + 0.010999999940395355, + 1, + 2, + 15, + 37, + 0, + 0, + 191, + 23, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_337, + ACTOR_OBJ_BANK_338, + &cKF_bs_r_shp_1, + { + shp_1_tmem_txt, + shp_1_pal, + { + shp_1_eye1_TA_tex_txt, + shp_1_eye2_TA_tex_txt, + shp_1_eye3_TA_tex_txt, + shp_1_eye4_TA_tex_txt, + shp_1_eye5_TA_tex_txt, + shp_1_eye6_TA_tex_txt, + shp_1_eye7_TA_tex_txt, + shp_1_eye8_TA_tex_txt, + }, + { + shp_1_mouth1_TA_tex_txt, + shp_1_mouth2_TA_tex_txt, + shp_1_mouth3_TA_tex_txt, + shp_1_mouth4_TA_tex_txt, + shp_1_mouth5_TA_tex_txt, + shp_1_mouth6_TA_tex_txt, + }, + 96, + 128, + 192, + }, + 0.009999999776482582, + 0, + 0, + 10, + 40, + 0, + 0, + 21, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_343, + ACTOR_OBJ_BANK_344, + &cKF_bs_r_squ_1, + { + squ_1_tmem_txt, + squ_1_pal, + { + squ_1_eye1_TA_tex_txt, + squ_1_eye2_TA_tex_txt, + squ_1_eye3_TA_tex_txt, + squ_1_eye4_TA_tex_txt, + squ_1_eye5_TA_tex_txt, + squ_1_eye6_TA_tex_txt, + squ_1_eye7_TA_tex_txt, + squ_1_eye8_TA_tex_txt, + }, + { + squ_1_mouth1_TA_tex_txt, + squ_1_mouth2_TA_tex_txt, + squ_1_mouth3_TA_tex_txt, + squ_1_mouth4_TA_tex_txt, + squ_1_mouth5_TA_tex_txt, + squ_1_mouth6_TA_tex_txt, + }, + 72, + 104, + 160, + }, + 0.006800000090152025, + 0, + 0, + 4, + 26, + 0, + 0, + 47, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_343, + ACTOR_OBJ_BANK_345, + &cKF_bs_r_squ_1, + { + squ_2_tmem_txt, + squ_2_pal, + { + squ_2_eye1_TA_tex_txt, + squ_2_eye2_TA_tex_txt, + squ_2_eye3_TA_tex_txt, + squ_2_eye4_TA_tex_txt, + squ_2_eye5_TA_tex_txt, + squ_2_eye6_TA_tex_txt, + squ_2_eye7_TA_tex_txt, + squ_2_eye8_TA_tex_txt, + }, + { + squ_2_mouth1_TA_tex_txt, + squ_2_mouth2_TA_tex_txt, + squ_2_mouth3_TA_tex_txt, + squ_2_mouth4_TA_tex_txt, + squ_2_mouth5_TA_tex_txt, + squ_2_mouth6_TA_tex_txt, + }, + 72, + 104, + 160, + }, + 0.006800000090152025, + 0, + 1, + 5, + 26, + 0, + 0, + 48, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_343, + ACTOR_OBJ_BANK_346, + &cKF_bs_r_squ_1, + { + squ_3_tmem_txt, + squ_3_pal, + { + squ_3_eye1_TA_tex_txt, + squ_3_eye2_TA_tex_txt, + squ_3_eye3_TA_tex_txt, + squ_3_eye4_TA_tex_txt, + squ_3_eye5_TA_tex_txt, + squ_3_eye6_TA_tex_txt, + squ_3_eye7_TA_tex_txt, + squ_3_eye8_TA_tex_txt, + }, + { + squ_3_mouth1_TA_tex_txt, + squ_3_mouth2_TA_tex_txt, + squ_3_mouth3_TA_tex_txt, + squ_3_mouth4_TA_tex_txt, + squ_3_mouth5_TA_tex_txt, + squ_3_mouth6_TA_tex_txt, + }, + 72, + 104, + 160, + }, + 0.006800000090152025, + 0, + 2, + 6, + 26, + 0, + 0, + 49, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_343, + ACTOR_OBJ_BANK_347, + &cKF_bs_r_squ_1, + { + squ_4_tmem_txt, + squ_4_pal, + { + squ_4_eye1_TA_tex_txt, + squ_4_eye2_TA_tex_txt, + squ_4_eye3_TA_tex_txt, + squ_4_eye4_TA_tex_txt, + squ_4_eye5_TA_tex_txt, + squ_4_eye6_TA_tex_txt, + squ_4_eye7_TA_tex_txt, + squ_4_eye8_TA_tex_txt, + }, + { + squ_4_mouth1_TA_tex_txt, + squ_4_mouth2_TA_tex_txt, + squ_4_mouth3_TA_tex_txt, + squ_4_mouth4_TA_tex_txt, + squ_4_mouth5_TA_tex_txt, + squ_4_mouth6_TA_tex_txt, + }, + 72, + 104, + 160, + }, + 0.006800000090152025, + 0, + 3, + 17, + 26, + 0, + 0, + 50, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_343, + ACTOR_OBJ_BANK_348, + &cKF_bs_r_squ_1, + { + squ_5_tmem_txt, + squ_5_pal, + { + squ_5_eye1_TA_tex_txt, + squ_5_eye2_TA_tex_txt, + squ_5_eye3_TA_tex_txt, + squ_5_eye4_TA_tex_txt, + squ_5_eye5_TA_tex_txt, + squ_5_eye6_TA_tex_txt, + squ_5_eye7_TA_tex_txt, + squ_5_eye8_TA_tex_txt, + }, + { + squ_5_mouth1_TA_tex_txt, + squ_5_mouth2_TA_tex_txt, + squ_5_mouth3_TA_tex_txt, + squ_5_mouth4_TA_tex_txt, + squ_5_mouth5_TA_tex_txt, + squ_5_mouth6_TA_tex_txt, + }, + 72, + 104, + 160, + }, + 0.006800000090152025, + 0, + 4, + 16, + 26, + 0, + 0, + 51, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_343, + ACTOR_OBJ_BANK_349, + &cKF_bs_r_squ_1, + { + squ_6_tmem_txt, + squ_6_pal, + { + squ_6_eye1_TA_tex_txt, + squ_6_eye2_TA_tex_txt, + squ_6_eye3_TA_tex_txt, + squ_6_eye4_TA_tex_txt, + squ_6_eye5_TA_tex_txt, + squ_6_eye6_TA_tex_txt, + squ_6_eye7_TA_tex_txt, + squ_6_eye8_TA_tex_txt, + }, + { + squ_6_mouth1_TA_tex_txt, + squ_6_mouth2_TA_tex_txt, + squ_6_mouth3_TA_tex_txt, + squ_6_mouth4_TA_tex_txt, + squ_6_mouth5_TA_tex_txt, + squ_6_mouth6_TA_tex_txt, + }, + 72, + 104, + 160, + }, + 0.006800000090152025, + 0, + 5, + 18, + 26, + 0, + 0, + 52, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_343, + ACTOR_OBJ_BANK_350, + &cKF_bs_r_squ_1, + { + squ_7_tmem_txt, + squ_7_pal, + { + squ_7_eye1_TA_tex_txt, + squ_7_eye2_TA_tex_txt, + squ_7_eye3_TA_tex_txt, + squ_7_eye4_TA_tex_txt, + squ_7_eye5_TA_tex_txt, + squ_7_eye6_TA_tex_txt, + squ_7_eye7_TA_tex_txt, + squ_7_eye8_TA_tex_txt, + }, + { + squ_7_mouth1_TA_tex_txt, + squ_7_mouth2_TA_tex_txt, + squ_7_mouth3_TA_tex_txt, + squ_7_mouth4_TA_tex_txt, + squ_7_mouth5_TA_tex_txt, + squ_7_mouth6_TA_tex_txt, + }, + 72, + 104, + 160, + }, + 0.006800000090152025, + 0, + 6, + 9, + 26, + 0, + 0, + 53, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_343, + ACTOR_OBJ_BANK_351, + &cKF_bs_r_squ_1, + { + squ_8_tmem_txt, + squ_8_pal, + { + squ_8_eye1_TA_tex_txt, + squ_8_eye2_TA_tex_txt, + squ_8_eye3_TA_tex_txt, + squ_8_eye4_TA_tex_txt, + squ_8_eye5_TA_tex_txt, + squ_8_eye6_TA_tex_txt, + squ_8_eye7_TA_tex_txt, + squ_8_eye8_TA_tex_txt, + }, + { + squ_8_mouth1_TA_tex_txt, + squ_8_mouth2_TA_tex_txt, + squ_8_mouth3_TA_tex_txt, + squ_8_mouth4_TA_tex_txt, + squ_8_mouth5_TA_tex_txt, + squ_8_mouth6_TA_tex_txt, + }, + 72, + 104, + 160, + }, + 0.006800000090152025, + 0, + 7, + 11, + 26, + 0, + 0, + 54, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_356, + ACTOR_OBJ_BANK_357, + &cKF_bs_r_tig_1, + { + tig_1_tmem_txt, + tig_1_pal, + { + tig_1_eye1_TA_tex_txt, + tig_1_eye2_TA_tex_txt, + tig_1_eye3_TA_tex_txt, + tig_1_eye4_TA_tex_txt, + tig_1_eye5_TA_tex_txt, + tig_1_eye6_TA_tex_txt, + tig_1_eye7_TA_tex_txt, + tig_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 8, + 0, + 176, + }, + 0.011300000362098217, + 1, + 0, + 30, + 41, + 0, + 0, + 156, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_356, + ACTOR_OBJ_BANK_358, + &cKF_bs_r_tig_1, + { + tig_2_tmem_txt, + tig_2_pal, + { + tig_2_eye1_TA_tex_txt, + tig_2_eye2_TA_tex_txt, + tig_2_eye3_TA_tex_txt, + tig_2_eye4_TA_tex_txt, + tig_2_eye5_TA_tex_txt, + tig_2_eye6_TA_tex_txt, + tig_2_eye7_TA_tex_txt, + tig_2_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 8, + 0, + 176, + }, + 0.011300000362098217, + 1, + 1, + 11, + 41, + 0, + 0, + 157, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_356, + ACTOR_OBJ_BANK_359, + &cKF_bs_r_tig_1, + { + tig_3_tmem_txt, + tig_3_pal, + { + tig_3_eye1_TA_tex_txt, + tig_3_eye2_TA_tex_txt, + tig_3_eye3_TA_tex_txt, + tig_3_eye4_TA_tex_txt, + tig_3_eye5_TA_tex_txt, + tig_3_eye6_TA_tex_txt, + tig_3_eye7_TA_tex_txt, + tig_3_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 8, + 0, + 176, + }, + 0.011300000362098217, + 1, + 2, + 1, + 41, + 0, + 0, + 158, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_362, + ACTOR_OBJ_BANK_363, + &cKF_bs_r_wol_1, + { + wol_1_tmem_txt, + wol_1_pal, + { + wol_1_eye1_TA_tex_txt, + wol_1_eye2_TA_tex_txt, + wol_1_eye3_TA_tex_txt, + wol_1_eye4_TA_tex_txt, + wol_1_eye5_TA_tex_txt, + wol_1_eye6_TA_tex_txt, + wol_1_eye7_TA_tex_txt, + wol_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 80, + 0, + 160, + }, + 0.009999999776482582, + 1, + 0, + 21, + 37, + 0, + 0, + 84, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_362, + ACTOR_OBJ_BANK_364, + &cKF_bs_r_wol_1, + { + wol_2_tmem_txt, + wol_2_pal, + { + wol_2_eye1_TA_tex_txt, + wol_2_eye2_TA_tex_txt, + wol_2_eye3_TA_tex_txt, + wol_2_eye4_TA_tex_txt, + wol_2_eye5_TA_tex_txt, + wol_2_eye6_TA_tex_txt, + wol_2_eye7_TA_tex_txt, + wol_2_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 80, + 0, + 160, + }, + 0.009999999776482582, + 1, + 1, + 10, + 37, + 0, + 0, + 85, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_362, + ACTOR_OBJ_BANK_365, + &cKF_bs_r_wol_1, + { + wol_3_tmem_txt, + wol_3_pal, + { + wol_3_eye1_TA_tex_txt, + wol_3_eye2_TA_tex_txt, + wol_3_eye3_TA_tex_txt, + wol_3_eye4_TA_tex_txt, + wol_3_eye5_TA_tex_txt, + wol_3_eye6_TA_tex_txt, + wol_3_eye7_TA_tex_txt, + wol_3_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 80, + 0, + 160, + }, + 0.009999999776482582, + 1, + 2, + 17, + 37, + 0, + 0, + 86, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_191, + ACTOR_OBJ_BANK_198, + &cKF_bs_r_duk_1, + { + duk_7_tmem_txt, + duk_7_pal, + { + duk_7_eye1_TA_tex_txt, + duk_7_eye2_TA_tex_txt, + duk_7_eye3_TA_tex_txt, + duk_7_eye4_TA_tex_txt, + duk_7_eye5_TA_tex_txt, + duk_7_eye6_TA_tex_txt, + duk_7_eye7_TA_tex_txt, + duk_7_eye8_TA_tex_txt, + }, + { + duk_7_mouth1_TA_tex_txt, + duk_7_mouth2_TA_tex_txt, + duk_7_mouth3_TA_tex_txt, + duk_7_mouth4_TA_tex_txt, + duk_7_mouth5_TA_tex_txt, + duk_7_mouth6_TA_tex_txt, + }, + 112, + 72, + 160, + }, + 0.009999999776482582, + 1, + 6, + 11, + 31, + 0, + 0, + 73, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_191, + ACTOR_OBJ_BANK_199, + &cKF_bs_r_duk_1, + { + duk_8_tmem_txt, + duk_8_pal, + { + duk_8_eye1_TA_tex_txt, + duk_8_eye2_TA_tex_txt, + duk_8_eye3_TA_tex_txt, + duk_8_eye4_TA_tex_txt, + duk_8_eye5_TA_tex_txt, + duk_8_eye6_TA_tex_txt, + duk_8_eye7_TA_tex_txt, + duk_8_eye8_TA_tex_txt, + }, + { + duk_8_mouth1_TA_tex_txt, + duk_8_mouth2_TA_tex_txt, + duk_8_mouth3_TA_tex_txt, + duk_8_mouth4_TA_tex_txt, + duk_8_mouth5_TA_tex_txt, + duk_8_mouth6_TA_tex_txt, + }, + 112, + 72, + 160, + }, + 0.009999999776482582, + 1, + 7, + 15, + 31, + 0, + 0, + 74, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_362, + ACTOR_OBJ_BANK_366, + &cKF_bs_r_wol_1, + { + wol_4_tmem_txt, + wol_4_pal, + { + wol_4_eye1_TA_tex_txt, + wol_4_eye2_TA_tex_txt, + wol_4_eye3_TA_tex_txt, + wol_4_eye4_TA_tex_txt, + wol_4_eye5_TA_tex_txt, + wol_4_eye6_TA_tex_txt, + wol_4_eye7_TA_tex_txt, + wol_4_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 80, + 0, + 160, + }, + 0.009999999776482582, + 1, + 3, + 16, + 37, + 0, + 0, + 87, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_330, + ACTOR_OBJ_BANK_334, + &cKF_bs_r_rhn_1, + { + rhn_4_tmem_txt, + rhn_4_pal, + { + rhn_4_eye1_TA_tex_txt, + rhn_4_eye2_TA_tex_txt, + rhn_4_eye3_TA_tex_txt, + rhn_4_eye4_TA_tex_txt, + rhn_4_eye5_TA_tex_txt, + rhn_4_eye6_TA_tex_txt, + rhn_4_eye7_TA_tex_txt, + rhn_4_eye8_TA_tex_txt, + }, + { + rhn_4_mouth1_TA_tex_txt, + rhn_4_mouth2_TA_tex_txt, + rhn_4_mouth3_TA_tex_txt, + rhn_4_mouth4_TA_tex_txt, + rhn_4_mouth5_TA_tex_txt, + rhn_4_mouth6_TA_tex_txt, + }, + 72, + 120, + 168, + }, + 0.010999999940395355, + 1, + 3, + 22, + 37, + 0, + 0, + 192, + 23, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_126, + ACTOR_OBJ_BANK_129, + &cKF_bs_r_bul_1, + { + bul_3_tmem_txt, + bul_3_pal, + { + bul_3_eye1_TA_tex_txt, + bul_3_eye2_TA_tex_txt, + bul_3_eye3_TA_tex_txt, + bul_3_eye4_TA_tex_txt, + bul_3_eye5_TA_tex_txt, + bul_3_eye6_TA_tex_txt, + bul_3_eye7_TA_tex_txt, + bul_3_eye8_TA_tex_txt, + }, + { + bul_3_mouth1_TA_tex_txt, + bul_3_mouth2_TA_tex_txt, + bul_3_mouth3_TA_tex_txt, + bul_3_mouth4_TA_tex_txt, + bul_3_mouth5_TA_tex_txt, + bul_3_mouth6_TA_tex_txt, + }, + 128, + 32, + 176, + }, + 0.012500000186264515, + 0, + 2, + 24, + 45, + 0, + 0, + 118, + 25, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_126, + ACTOR_OBJ_BANK_130, + &cKF_bs_r_bul_1, + { + bul_4_tmem_txt, + bul_4_pal, + { + bul_4_eye1_TA_tex_txt, + bul_4_eye2_TA_tex_txt, + bul_4_eye3_TA_tex_txt, + bul_4_eye4_TA_tex_txt, + bul_4_eye5_TA_tex_txt, + bul_4_eye6_TA_tex_txt, + bul_4_eye7_TA_tex_txt, + bul_4_eye8_TA_tex_txt, + }, + { + bul_4_mouth1_TA_tex_txt, + bul_4_mouth2_TA_tex_txt, + bul_4_mouth3_TA_tex_txt, + bul_4_mouth4_TA_tex_txt, + bul_4_mouth5_TA_tex_txt, + bul_4_mouth6_TA_tex_txt, + }, + 128, + 32, + 176, + }, + 0.012500000186264515, + 0, + 3, + 23, + 45, + 0, + 0, + 119, + 25, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_238, + ACTOR_OBJ_BANK_242, + &cKF_bs_r_hip_1, + { + hip_4_tmem_txt, + hip_4_pal, + { + hip_4_eye1_TA_tex_txt, + hip_4_eye2_TA_tex_txt, + hip_4_eye3_TA_tex_txt, + hip_4_eye4_TA_tex_txt, + hip_4_eye5_TA_tex_txt, + hip_4_eye6_TA_tex_txt, + hip_4_eye7_TA_tex_txt, + hip_4_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 136, + 0, + 32, + }, + 0.007300000172108412, + 1, + 3, + 4, + 43, + 0, + 0, + 80, + 25, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_200, + ACTOR_OBJ_BANK_204, + &cKF_bs_r_elp_1, + { + elp_4_tmem_txt, + elp_4_pal, + { + elp_4_eye1_TA_tex_txt, + elp_4_eye2_TA_tex_txt, + elp_4_eye3_TA_tex_txt, + elp_4_eye4_TA_tex_txt, + elp_4_eye5_TA_tex_txt, + elp_4_eye6_TA_tex_txt, + elp_4_eye7_TA_tex_txt, + elp_4_eye8_TA_tex_txt, + }, + { + elp_4_mouth1_TA_tex_txt, + elp_4_mouth2_TA_tex_txt, + elp_4_mouth3_TA_tex_txt, + elp_4_mouth4_TA_tex_txt, + elp_4_mouth5_TA_tex_txt, + elp_4_mouth6_TA_tex_txt, + }, + 48, + 176, + 80, + }, + 0.009999999776482582, + 1, + 3, + 17, + 40, + 0, + 0, + 18, + 25, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_182, + ACTOR_OBJ_BANK_372, + &cKF_bs_r_dog_1, + { + dog_9_tmem_txt, + dog_9_pal, + { + dog_9_eye1_TA_tex_txt, + dog_9_eye2_TA_tex_txt, + dog_9_eye3_TA_tex_txt, + dog_9_eye4_TA_tex_txt, + dog_9_eye5_TA_tex_txt, + dog_9_eye6_TA_tex_txt, + dog_9_eye7_TA_tex_txt, + dog_9_eye8_TA_tex_txt, + }, + { + dog_9_mouth1_TA_tex_txt, + dog_9_mouth2_TA_tex_txt, + dog_9_mouth3_TA_tex_txt, + dog_9_mouth4_TA_tex_txt, + dog_9_mouth5_TA_tex_txt, + dog_9_mouth6_TA_tex_txt, + }, + 48, + 0, + 80, + }, + 0.009499999694526196, + 0, + 8, + 19, + 37, + 0, + 0, + 45, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_182, + ACTOR_OBJ_BANK_373, + &cKF_bs_r_dog_1, + { + dog_10_tmem_txt, + dog_10_pal, + { + dog_10_eye1_TA_tex_txt, + dog_10_eye2_TA_tex_txt, + dog_10_eye3_TA_tex_txt, + dog_10_eye4_TA_tex_txt, + dog_10_eye5_TA_tex_txt, + dog_10_eye6_TA_tex_txt, + dog_10_eye7_TA_tex_txt, + dog_10_eye8_TA_tex_txt, + }, + { + dog_10_mouth1_TA_tex_txt, + dog_10_mouth2_TA_tex_txt, + dog_10_mouth3_TA_tex_txt, + dog_10_mouth4_TA_tex_txt, + dog_10_mouth5_TA_tex_txt, + dog_10_mouth6_TA_tex_txt, + }, + 48, + 0, + 80, + }, + 0.009499999694526196, + 0, + 9, + 3, + 37, + 0, + 0, + 46, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_238, + ACTOR_OBJ_BANK_374, + &cKF_bs_r_hip_1, + { + hip_5_tmem_txt, + hip_5_pal, + { + hip_5_eye1_TA_tex_txt, + hip_5_eye2_TA_tex_txt, + hip_5_eye3_TA_tex_txt, + hip_5_eye4_TA_tex_txt, + hip_5_eye5_TA_tex_txt, + hip_5_eye6_TA_tex_txt, + hip_5_eye7_TA_tex_txt, + hip_5_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 136, + 0, + 32, + }, + 0.007300000172108412, + 1, + 4, + 6, + 43, + 0, + 0, + 81, + 25, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_238, + ACTOR_OBJ_BANK_375, + &cKF_bs_r_hip_1, + { + hip_6_tmem_txt, + hip_6_pal, + { + hip_6_eye1_TA_tex_txt, + hip_6_eye2_TA_tex_txt, + hip_6_eye3_TA_tex_txt, + hip_6_eye4_TA_tex_txt, + hip_6_eye5_TA_tex_txt, + hip_6_eye6_TA_tex_txt, + hip_6_eye7_TA_tex_txt, + hip_6_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 136, + 0, + 32, + }, + 0.007300000172108412, + 1, + 5, + 21, + 43, + 0, + 0, + 82, + 25, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_238, + ACTOR_OBJ_BANK_376, + &cKF_bs_r_hip_1, + { + hip_7_tmem_txt, + hip_7_pal, + { + hip_7_eye1_TA_tex_txt, + hip_7_eye2_TA_tex_txt, + hip_7_eye3_TA_tex_txt, + hip_7_eye4_TA_tex_txt, + hip_7_eye5_TA_tex_txt, + hip_7_eye6_TA_tex_txt, + hip_7_eye7_TA_tex_txt, + hip_7_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 136, + 0, + 32, + }, + 0.007300000172108412, + 1, + 6, + 3, + 43, + 0, + 0, + 83, + 25, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_343, + ACTOR_OBJ_BANK_377, + &cKF_bs_r_squ_1, + { + squ_9_tmem_txt, + squ_9_pal, + { + squ_9_eye1_TA_tex_txt, + squ_9_eye2_TA_tex_txt, + squ_9_eye3_TA_tex_txt, + squ_9_eye4_TA_tex_txt, + squ_9_eye5_TA_tex_txt, + squ_9_eye6_TA_tex_txt, + squ_9_eye7_TA_tex_txt, + squ_9_eye8_TA_tex_txt, + }, + { + squ_9_mouth1_TA_tex_txt, + squ_9_mouth2_TA_tex_txt, + squ_9_mouth3_TA_tex_txt, + squ_9_mouth4_TA_tex_txt, + squ_9_mouth5_TA_tex_txt, + squ_9_mouth6_TA_tex_txt, + }, + 72, + 104, + 160, + }, + 0.006800000090152025, + 0, + 8, + 7, + 26, + 0, + 0, + 55, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_343, + ACTOR_OBJ_BANK_378, + &cKF_bs_r_squ_1, + { + squ_10_tmem_txt, + squ_10_pal, + { + squ_10_eye1_TA_tex_txt, + squ_10_eye2_TA_tex_txt, + squ_10_eye3_TA_tex_txt, + squ_10_eye4_TA_tex_txt, + squ_10_eye5_TA_tex_txt, + squ_10_eye6_TA_tex_txt, + squ_10_eye7_TA_tex_txt, + squ_10_eye8_TA_tex_txt, + }, + { + squ_10_mouth1_TA_tex_txt, + squ_10_mouth2_TA_tex_txt, + squ_10_mouth3_TA_tex_txt, + squ_10_mouth4_TA_tex_txt, + squ_10_mouth5_TA_tex_txt, + squ_10_mouth6_TA_tex_txt, + }, + 72, + 104, + 160, + }, + 0.006800000090152025, + 0, + 9, + 2, + 26, + 0, + 0, + 56, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_200, + ACTOR_OBJ_BANK_379, + &cKF_bs_r_elp_1, + { + elp_5_tmem_txt, + elp_5_pal, + { + elp_5_eye1_TA_tex_txt, + elp_5_eye2_TA_tex_txt, + elp_5_eye3_TA_tex_txt, + elp_5_eye4_TA_tex_txt, + elp_5_eye5_TA_tex_txt, + elp_5_eye6_TA_tex_txt, + elp_5_eye7_TA_tex_txt, + elp_5_eye8_TA_tex_txt, + }, + { + elp_5_mouth1_TA_tex_txt, + elp_5_mouth2_TA_tex_txt, + elp_5_mouth3_TA_tex_txt, + elp_5_mouth4_TA_tex_txt, + elp_5_mouth5_TA_tex_txt, + elp_5_mouth6_TA_tex_txt, + }, + 48, + 176, + 80, + }, + 0.009999999776482582, + 1, + 4, + 22, + 40, + 0, + 0, + 19, + 25, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_200, + ACTOR_OBJ_BANK_380, + &cKF_bs_r_elp_1, + { + elp_6_tmem_txt, + elp_6_pal, + { + elp_6_eye1_TA_tex_txt, + elp_6_eye2_TA_tex_txt, + elp_6_eye3_TA_tex_txt, + elp_6_eye4_TA_tex_txt, + elp_6_eye5_TA_tex_txt, + elp_6_eye6_TA_tex_txt, + elp_6_eye7_TA_tex_txt, + elp_6_eye8_TA_tex_txt, + }, + { + elp_6_mouth1_TA_tex_txt, + elp_6_mouth2_TA_tex_txt, + elp_6_mouth3_TA_tex_txt, + elp_6_mouth4_TA_tex_txt, + elp_6_mouth5_TA_tex_txt, + elp_6_mouth6_TA_tex_txt, + }, + 48, + 176, + 80, + }, + 0.009999999776482582, + 1, + 5, + 11, + 40, + 0, + 0, + 20, + 25, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_174, + ACTOR_OBJ_BANK_381, + &cKF_bs_r_crd_1, + { + crd_4_tmem_txt, + crd_4_pal, + { + crd_4_eye1_TA_tex_txt, + crd_4_eye2_TA_tex_txt, + crd_4_eye3_TA_tex_txt, + crd_4_eye4_TA_tex_txt, + crd_4_eye5_TA_tex_txt, + crd_4_eye6_TA_tex_txt, + crd_4_eye7_TA_tex_txt, + crd_4_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 96, + 0, + 168, + }, + 0.010499999858438969, + 1, + 3, + 15, + 48, + 0, + 0, + 149, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_320, + ACTOR_OBJ_BANK_385, + &cKF_bs_r_rbt_1, + { + rbt_10_tmem_txt, + rbt_10_pal, + { + rbt_10_eye1_TA_tex_txt, + rbt_10_eye2_TA_tex_txt, + rbt_10_eye3_TA_tex_txt, + rbt_10_eye4_TA_tex_txt, + rbt_10_eye5_TA_tex_txt, + rbt_10_eye6_TA_tex_txt, + rbt_10_eye7_TA_tex_txt, + rbt_10_eye8_TA_tex_txt, + }, + { + rbt_10_mouth1_TA_tex_txt, + rbt_10_mouth2_TA_tex_txt, + rbt_10_mouth3_TA_tex_txt, + rbt_10_mouth4_TA_tex_txt, + rbt_10_mouth5_TA_tex_txt, + rbt_10_mouth6_TA_tex_txt, + }, + 80, + 112, + 176, + }, + 0.009999999776482582, + 0, + 9, + 12, + 34, + 0, + 0, + 66, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_337, + ACTOR_OBJ_BANK_382, + &cKF_bs_r_shp_1, + { + shp_2_tmem_txt, + shp_2_pal, + { + shp_2_eye1_TA_tex_txt, + shp_2_eye2_TA_tex_txt, + shp_2_eye3_TA_tex_txt, + shp_2_eye4_TA_tex_txt, + shp_2_eye5_TA_tex_txt, + shp_2_eye6_TA_tex_txt, + shp_2_eye7_TA_tex_txt, + shp_2_eye8_TA_tex_txt, + }, + { + shp_2_mouth1_TA_tex_txt, + shp_2_mouth2_TA_tex_txt, + shp_2_mouth3_TA_tex_txt, + shp_2_mouth4_TA_tex_txt, + shp_2_mouth5_TA_tex_txt, + shp_2_mouth6_TA_tex_txt, + }, + 96, + 128, + 192, + }, + 0.009999999776482582, + 0, + 1, + 8, + 40, + 0, + 0, + 22, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_337, + ACTOR_OBJ_BANK_383, + &cKF_bs_r_shp_1, + { + shp_3_tmem_txt, + shp_3_pal, + { + shp_3_eye1_TA_tex_txt, + shp_3_eye2_TA_tex_txt, + shp_3_eye3_TA_tex_txt, + shp_3_eye4_TA_tex_txt, + shp_3_eye5_TA_tex_txt, + shp_3_eye6_TA_tex_txt, + shp_3_eye7_TA_tex_txt, + shp_3_eye8_TA_tex_txt, + }, + { + shp_3_mouth1_TA_tex_txt, + shp_3_mouth2_TA_tex_txt, + shp_3_mouth3_TA_tex_txt, + shp_3_mouth4_TA_tex_txt, + shp_3_mouth5_TA_tex_txt, + shp_3_mouth6_TA_tex_txt, + }, + 96, + 128, + 192, + }, + 0.009999999776482582, + 0, + 2, + 6, + 40, + 0, + 0, + 23, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_362, + ACTOR_OBJ_BANK_384, + &cKF_bs_r_wol_1, + { + wol_5_tmem_txt, + wol_5_pal, + { + wol_5_eye1_TA_tex_txt, + wol_5_eye2_TA_tex_txt, + wol_5_eye3_TA_tex_txt, + wol_5_eye4_TA_tex_txt, + wol_5_eye5_TA_tex_txt, + wol_5_eye6_TA_tex_txt, + wol_5_eye7_TA_tex_txt, + wol_5_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 80, + 0, + 160, + }, + 0.009999999776482582, + 1, + 4, + 29, + 37, + 0, + 0, + 88, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_191, + ACTOR_OBJ_BANK_386, + &cKF_bs_r_duk_1, + { + duk_9_tmem_txt, + duk_9_pal, + { + duk_9_eye1_TA_tex_txt, + duk_9_eye2_TA_tex_txt, + duk_9_eye3_TA_tex_txt, + duk_9_eye4_TA_tex_txt, + duk_9_eye5_TA_tex_txt, + duk_9_eye6_TA_tex_txt, + duk_9_eye7_TA_tex_txt, + duk_9_eye8_TA_tex_txt, + }, + { + duk_9_mouth1_TA_tex_txt, + duk_9_mouth2_TA_tex_txt, + duk_9_mouth3_TA_tex_txt, + duk_9_mouth4_TA_tex_txt, + duk_9_mouth5_TA_tex_txt, + duk_9_mouth6_TA_tex_txt, + }, + 112, + 72, + 160, + }, + 0.009999999776482582, + 1, + 8, + 7, + 31, + 0, + 0, + 75, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_191, + ACTOR_OBJ_BANK_387, + &cKF_bs_r_duk_1, + { + duk_10_tmem_txt, + duk_10_pal, + { + duk_10_eye1_TA_tex_txt, + duk_10_eye2_TA_tex_txt, + duk_10_eye3_TA_tex_txt, + duk_10_eye4_TA_tex_txt, + duk_10_eye5_TA_tex_txt, + duk_10_eye6_TA_tex_txt, + duk_10_eye7_TA_tex_txt, + duk_10_eye8_TA_tex_txt, + }, + { + duk_10_mouth1_TA_tex_txt, + duk_10_mouth2_TA_tex_txt, + duk_10_mouth3_TA_tex_txt, + duk_10_mouth4_TA_tex_txt, + duk_10_mouth5_TA_tex_txt, + duk_10_mouth6_TA_tex_txt, + }, + 112, + 72, + 160, + }, + 0.009999999776482582, + 1, + 9, + 8, + 31, + 0, + 0, + 76, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_337, + ACTOR_OBJ_BANK_388, + &cKF_bs_r_shp_1, + { + shp_4_tmem_txt, + shp_4_pal, + { + shp_4_eye1_TA_tex_txt, + shp_4_eye2_TA_tex_txt, + shp_4_eye3_TA_tex_txt, + shp_4_eye4_TA_tex_txt, + shp_4_eye5_TA_tex_txt, + shp_4_eye6_TA_tex_txt, + shp_4_eye7_TA_tex_txt, + shp_4_eye8_TA_tex_txt, + }, + { + shp_4_mouth1_TA_tex_txt, + shp_4_mouth2_TA_tex_txt, + shp_4_mouth3_TA_tex_txt, + shp_4_mouth4_TA_tex_txt, + shp_4_mouth5_TA_tex_txt, + shp_4_mouth6_TA_tex_txt, + }, + 96, + 128, + 192, + }, + 0.009999999776482582, + 0, + 3, + 7, + 40, + 0, + 0, + 24, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_337, + ACTOR_OBJ_BANK_389, + &cKF_bs_r_shp_1, + { + shp_5_tmem_txt, + shp_5_pal, + { + shp_5_eye1_TA_tex_txt, + shp_5_eye2_TA_tex_txt, + shp_5_eye3_TA_tex_txt, + shp_5_eye4_TA_tex_txt, + shp_5_eye5_TA_tex_txt, + shp_5_eye6_TA_tex_txt, + shp_5_eye7_TA_tex_txt, + shp_5_eye8_TA_tex_txt, + }, + { + shp_5_mouth1_TA_tex_txt, + shp_5_mouth2_TA_tex_txt, + shp_5_mouth3_TA_tex_txt, + shp_5_mouth4_TA_tex_txt, + shp_5_mouth5_TA_tex_txt, + shp_5_mouth6_TA_tex_txt, + }, + 96, + 128, + 192, + }, + 0.009999999776482582, + 0, + 4, + 17, + 40, + 0, + 0, + 25, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_337, + ACTOR_OBJ_BANK_390, + &cKF_bs_r_shp_1, + { + shp_6_tmem_txt, + shp_6_pal, + { + shp_6_eye1_TA_tex_txt, + shp_6_eye2_TA_tex_txt, + shp_6_eye3_TA_tex_txt, + shp_6_eye4_TA_tex_txt, + shp_6_eye5_TA_tex_txt, + shp_6_eye6_TA_tex_txt, + shp_6_eye7_TA_tex_txt, + shp_6_eye8_TA_tex_txt, + }, + { + shp_6_mouth1_TA_tex_txt, + shp_6_mouth2_TA_tex_txt, + shp_6_mouth3_TA_tex_txt, + shp_6_mouth4_TA_tex_txt, + shp_6_mouth5_TA_tex_txt, + shp_6_mouth6_TA_tex_txt, + }, + 96, + 128, + 192, + }, + 0.009999999776482582, + 0, + 5, + 22, + 40, + 0, + 0, + 26, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_182, + ACTOR_OBJ_BANK_189, + &cKF_bs_r_dog_1, + { + dog_7_tmem_txt, + dog_7_pal, + { + dog_7_eye1_TA_tex_txt, + dog_7_eye2_TA_tex_txt, + dog_7_eye3_TA_tex_txt, + dog_7_eye4_TA_tex_txt, + dog_7_eye5_TA_tex_txt, + dog_7_eye6_TA_tex_txt, + dog_7_eye7_TA_tex_txt, + dog_7_eye8_TA_tex_txt, + }, + { + dog_7_mouth1_TA_tex_txt, + dog_7_mouth2_TA_tex_txt, + dog_7_mouth3_TA_tex_txt, + dog_7_mouth4_TA_tex_txt, + dog_7_mouth5_TA_tex_txt, + dog_7_mouth6_TA_tex_txt, + }, + 48, + 0, + 80, + }, + 0.009499999694526196, + 0, + 6, + 20, + 37, + 0, + 0, + 43, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_191, + ACTOR_OBJ_BANK_426, + &cKF_bs_r_duk_1, + { + duk_11_tmem_txt, + duk_11_pal, + { + duk_11_eye1_TA_tex_txt, + duk_11_eye2_TA_tex_txt, + duk_11_eye3_TA_tex_txt, + duk_11_eye4_TA_tex_txt, + duk_11_eye5_TA_tex_txt, + duk_11_eye6_TA_tex_txt, + duk_11_eye7_TA_tex_txt, + duk_11_eye8_TA_tex_txt, + }, + { + duk_11_mouth1_TA_tex_txt, + duk_11_mouth2_TA_tex_txt, + duk_11_mouth3_TA_tex_txt, + duk_11_mouth4_TA_tex_txt, + duk_11_mouth5_TA_tex_txt, + duk_11_mouth6_TA_tex_txt, + }, + 112, + 72, + 160, + }, + 0.009999999776482582, + 1, + 10, + 10, + 31, + 0, + 0, + 263, + 20, + 45, + 56, + 25, + }, + { + ACTOR_OBJ_BANK_320, + ACTOR_OBJ_BANK_427, + &cKF_bs_r_rbt_1, + { + rbt_11_tmem_txt, + rbt_11_pal, + { + rbt_11_eye1_TA_tex_txt, + rbt_11_eye2_TA_tex_txt, + rbt_11_eye3_TA_tex_txt, + rbt_11_eye4_TA_tex_txt, + rbt_11_eye5_TA_tex_txt, + rbt_11_eye6_TA_tex_txt, + rbt_11_eye7_TA_tex_txt, + rbt_11_eye8_TA_tex_txt, + }, + { + rbt_11_mouth1_TA_tex_txt, + rbt_11_mouth2_TA_tex_txt, + rbt_11_mouth3_TA_tex_txt, + rbt_11_mouth4_TA_tex_txt, + rbt_11_mouth5_TA_tex_txt, + rbt_11_mouth6_TA_tex_txt, + }, + 80, + 112, + 176, + }, + 0.009999999776482582, + 0, + 10, + 0, + 34, + 0, + 0, + 272, + 20, + 40, + 61, + 25, + }, + { + ACTOR_OBJ_BANK_343, + ACTOR_OBJ_BANK_421, + &cKF_bs_r_squ_1, + { + squ_11_tmem_txt, + squ_11_pal, + { + squ_11_eye1_TA_tex_txt, + squ_11_eye2_TA_tex_txt, + squ_11_eye3_TA_tex_txt, + squ_11_eye4_TA_tex_txt, + squ_11_eye5_TA_tex_txt, + squ_11_eye6_TA_tex_txt, + squ_11_eye7_TA_tex_txt, + squ_11_eye8_TA_tex_txt, + }, + { + squ_11_mouth1_TA_tex_txt, + squ_11_mouth2_TA_tex_txt, + squ_11_mouth3_TA_tex_txt, + squ_11_mouth4_TA_tex_txt, + squ_11_mouth5_TA_tex_txt, + squ_11_mouth6_TA_tex_txt, + }, + 72, + 104, + 160, + }, + 0.006800000090152025, + 0, + 10, + 15, + 26, + 0, + 0, + 275, + 20, + 35, + 58, + 25, + }, + { + ACTOR_OBJ_BANK_205, + ACTOR_OBJ_BANK_428, + &cKF_bs_r_flg_1, + { + flg_13_tmem_txt, + flg_13_pal, + { + flg_13_eye1_TA_tex_txt, + flg_13_eye2_TA_tex_txt, + flg_13_eye3_TA_tex_txt, + flg_13_eye4_TA_tex_txt, + flg_13_eye5_TA_tex_txt, + flg_13_eye6_TA_tex_txt, + flg_13_eye7_TA_tex_txt, + flg_13_eye8_TA_tex_txt, + }, + { + flg_13_mouth1_TA_tex_txt, + flg_13_mouth2_TA_tex_txt, + flg_13_mouth3_TA_tex_txt, + flg_13_mouth4_TA_tex_txt, + flg_13_mouth5_TA_tex_txt, + flg_13_mouth6_TA_tex_txt, + }, + 0, + 32, + 176, + }, + 0.00800000037997961, + 0, + 12, + 28, + 38, + 0, + 0, + 265, + 20, + 35, + 63, + 13, + }, + { + ACTOR_OBJ_BANK_268, + ACTOR_OBJ_BANK_429, + &cKF_bs_r_lon_1, + { + lon_4_tmem_txt, + lon_4_pal, + { + lon_4_eye1_TA_tex_txt, + lon_4_eye2_TA_tex_txt, + lon_4_eye3_TA_tex_txt, + lon_4_eye4_TA_tex_txt, + lon_4_eye5_TA_tex_txt, + lon_4_eye6_TA_tex_txt, + lon_4_eye7_TA_tex_txt, + lon_4_eye8_TA_tex_txt, + }, + { + lon_4_mouth1_TA_tex_txt, + lon_4_mouth2_TA_tex_txt, + lon_4_mouth3_TA_tex_txt, + lon_4_mouth4_TA_tex_txt, + lon_4_mouth5_TA_tex_txt, + lon_4_mouth6_TA_tex_txt, + }, + 128, + 96, + 184, + }, + 0.01140000019222498, + 0, + 3, + 26, + 43, + 0, + 0, + 269, + 20, + 50, + 64, + 13, + }, + { + ACTOR_OBJ_BANK_291, + ACTOR_OBJ_BANK_430, + &cKF_bs_r_pgn_1, + { + pgn_8_tmem_txt, + pgn_8_pal, + { + pgn_8_eye1_TA_tex_txt, + pgn_8_eye2_TA_tex_txt, + pgn_8_eye3_TA_tex_txt, + pgn_8_eye4_TA_tex_txt, + pgn_8_eye5_TA_tex_txt, + pgn_8_eye6_TA_tex_txt, + pgn_8_eye7_TA_tex_txt, + pgn_8_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 48, + 0, + 144, + }, + 0.007499999832361937, + 1, + 7, + 24, + 31, + 0, + 0, + 271, + 20, + 40, + 54, + 13, + }, + { + ACTOR_OBJ_BANK_200, + ACTOR_OBJ_BANK_431, + &cKF_bs_r_elp_1, + { + elp_7_tmem_txt, + elp_7_pal, + { + elp_7_eye1_TA_tex_txt, + elp_7_eye2_TA_tex_txt, + elp_7_eye3_TA_tex_txt, + elp_7_eye4_TA_tex_txt, + elp_7_eye5_TA_tex_txt, + elp_7_eye6_TA_tex_txt, + elp_7_eye7_TA_tex_txt, + elp_7_eye8_TA_tex_txt, + }, + { + elp_7_mouth1_TA_tex_txt, + elp_7_mouth2_TA_tex_txt, + elp_7_mouth3_TA_tex_txt, + elp_7_mouth4_TA_tex_txt, + elp_7_mouth5_TA_tex_txt, + elp_7_mouth6_TA_tex_txt, + }, + 48, + 176, + 80, + }, + 0.009999999776482582, + 1, + 6, + 20, + 40, + 0, + 0, + 264, + 25, + 55, + 59, + 25, + }, + { + ACTOR_OBJ_BANK_113, + ACTOR_OBJ_BANK_432, + &cKF_bs_r_brd_1, + { + brd_11_tmem_txt, + brd_11_pal, + { + brd_11_eye1_TA_tex_txt, + brd_11_eye2_TA_tex_txt, + brd_11_eye3_TA_tex_txt, + brd_11_eye4_TA_tex_txt, + brd_11_eye5_TA_tex_txt, + brd_11_eye6_TA_tex_txt, + brd_11_eye7_TA_tex_txt, + brd_11_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 8, + 0, + 144, + }, + 0.009499999694526196, + 1, + 10, + 14, + 35, + 0, + 0, + 260, + 20, + 45, + 62, + 25, + }, + { + ACTOR_OBJ_BANK_362, + ACTOR_OBJ_BANK_433, + &cKF_bs_r_wol_1, + { + wol_6_tmem_txt, + wol_6_pal, + { + wol_6_eye1_TA_tex_txt, + wol_6_eye2_TA_tex_txt, + wol_6_eye3_TA_tex_txt, + wol_6_eye4_TA_tex_txt, + wol_6_eye5_TA_tex_txt, + wol_6_eye6_TA_tex_txt, + wol_6_eye7_TA_tex_txt, + wol_6_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 80, + 0, + 160, + }, + 0.009999999776482582, + 1, + 5, + 21, + 37, + 0, + 0, + 274, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_274, + ACTOR_OBJ_BANK_434, + &cKF_bs_r_mus_1, + { + mus_10_tmem_txt, + mus_10_pal, + { + mus_10_eye1_TA_tex_txt, + mus_10_eye2_TA_tex_txt, + mus_10_eye3_TA_tex_txt, + mus_10_eye4_TA_tex_txt, + mus_10_eye5_TA_tex_txt, + mus_10_eye6_TA_tex_txt, + mus_10_eye7_TA_tex_txt, + mus_10_eye8_TA_tex_txt, + }, + { + mus_10_mouth1_TA_tex_txt, + mus_10_mouth2_TA_tex_txt, + mus_10_mouth3_TA_tex_txt, + mus_10_mouth4_TA_tex_txt, + mus_10_mouth5_TA_tex_txt, + mus_10_mouth6_TA_tex_txt, + }, + 96, + 128, + 184, + }, + 0.005499999970197678, + 0, + 9, + 27, + 30, + 0, + 0, + 270, + 20, + 40, + 66, + 25, + }, + { + ACTOR_OBJ_BANK_243, + ACTOR_OBJ_BANK_435, + &cKF_bs_r_hrs_1, + { + hrs_8_tmem_txt, + hrs_8_pal, + { + hrs_8_eye1_TA_tex_txt, + hrs_8_eye2_TA_tex_txt, + hrs_8_eye3_TA_tex_txt, + hrs_8_eye4_TA_tex_txt, + hrs_8_eye5_TA_tex_txt, + hrs_8_eye6_TA_tex_txt, + hrs_8_eye7_TA_tex_txt, + hrs_8_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 40, + 0, + 184, + }, + 0.011500000022351742, + 1, + 7, + 9, + 43, + 0, + 0, + 267, + 23, + 50, + 65, + 25, + }, + { + ACTOR_OBJ_BANK_148, + ACTOR_OBJ_BANK_436, + &cKF_bs_r_chn_1, + { + chn_9_tmem_txt, + chn_9_pal, + { + chn_9_eye1_TA_tex_txt, + chn_9_eye2_TA_tex_txt, + chn_9_eye3_TA_tex_txt, + chn_9_eye4_TA_tex_txt, + chn_9_eye5_TA_tex_txt, + chn_9_eye6_TA_tex_txt, + chn_9_eye7_TA_tex_txt, + chn_9_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 16, + 0, + 152, + }, + 0.009999999776482582, + 1, + 8, + 19, + 35, + 0, + 0, + 262, + 20, + 45, + 52, + 25, + }, + { + ACTOR_OBJ_BANK_262, + ACTOR_OBJ_BANK_437, + &cKF_bs_r_kal_1, + { + kal_6_tmem_txt, + kal_6_pal, + { + kal_6_eye1_TA_tex_txt, + kal_6_eye2_TA_tex_txt, + kal_6_eye3_TA_tex_txt, + kal_6_eye4_TA_tex_txt, + kal_6_eye5_TA_tex_txt, + kal_6_eye6_TA_tex_txt, + kal_6_eye7_TA_tex_txt, + kal_6_eye8_TA_tex_txt, + }, + { + kal_6_mouth1_TA_tex_txt, + kal_6_mouth2_TA_tex_txt, + kal_6_mouth3_TA_tex_txt, + kal_6_mouth4_TA_tex_txt, + kal_6_mouth5_TA_tex_txt, + kal_6_mouth6_TA_tex_txt, + }, + 0, + 32, + 192, + }, + 0.008500000461935997, + 0, + 5, + 18, + 34, + 0, + 0, + 268, + 20, + 40, + 57, + 25, + }, + { + ACTOR_OBJ_BANK_227, + ACTOR_OBJ_BANK_438, + &cKF_bs_r_gor_1, + { + gor_5_tmem_txt, + gor_5_pal, + { + gor_5_eye1_TA_tex_txt, + gor_5_eye2_TA_tex_txt, + gor_5_eye3_TA_tex_txt, + gor_5_eye4_TA_tex_txt, + gor_5_eye5_TA_tex_txt, + gor_5_eye6_TA_tex_txt, + gor_5_eye7_TA_tex_txt, + gor_5_eye8_TA_tex_txt, + }, + { + gor_5_mouth1_TA_tex_txt, + gor_5_mouth2_TA_tex_txt, + gor_5_mouth3_TA_tex_txt, + gor_5_mouth4_TA_tex_txt, + gor_5_mouth5_TA_tex_txt, + gor_5_mouth6_TA_tex_txt, + }, + 80, + 112, + 152, + }, + 0.009999999776482582, + 1, + 4, + 16, + 42, + 0, + 0, + 266, + 20, + 55, + 53, + 13, + }, + { + ACTOR_OBJ_BANK_356, + ACTOR_OBJ_BANK_439, + &cKF_bs_r_tig_1, + { + tig_4_tmem_txt, + tig_4_pal, + { + tig_4_eye1_TA_tex_txt, + tig_4_eye2_TA_tex_txt, + tig_4_eye3_TA_tex_txt, + tig_4_eye4_TA_tex_txt, + tig_4_eye5_TA_tex_txt, + tig_4_eye6_TA_tex_txt, + tig_4_eye7_TA_tex_txt, + tig_4_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 8, + 0, + 176, + }, + 0.011300000362098217, + 1, + 3, + 13, + 41, + 0, + 0, + 273, + 20, + 50, + 60, + 25, + }, + { + ACTOR_OBJ_BANK_157, + ACTOR_OBJ_BANK_440, + &cKF_bs_r_cbr_1, + { + cbr_10_tmem_txt, + cbr_10_pal, + { + cbr_10_eye1_TA_tex_txt, + cbr_10_eye2_TA_tex_txt, + cbr_10_eye3_TA_tex_txt, + cbr_10_eye4_TA_tex_txt, + cbr_10_eye5_TA_tex_txt, + cbr_10_eye6_TA_tex_txt, + cbr_10_eye7_TA_tex_txt, + cbr_10_eye8_TA_tex_txt, + }, + { + cbr_10_mouth1_TA_tex_txt, + cbr_10_mouth2_TA_tex_txt, + cbr_10_mouth3_TA_tex_txt, + cbr_10_mouth4_TA_tex_txt, + cbr_10_mouth5_TA_tex_txt, + cbr_10_mouth6_TA_tex_txt, + }, + 128, + 8, + 176, + }, + 0.006500000134110451, + 0, + 9, + 5, + 33, + 0, + 0, + 261, + 20, + 45, + 55, + 25, + }, + { + ACTOR_OBJ_BANK_157, + ACTOR_OBJ_BANK_441, + &cKF_bs_r_cbr_1, + { + cbr_11_tmem_txt, + cbr_11_pal, + { + cbr_11_eye1_TA_tex_txt, + cbr_11_eye2_TA_tex_txt, + cbr_11_eye3_TA_tex_txt, + cbr_11_eye4_TA_tex_txt, + cbr_11_eye5_TA_tex_txt, + cbr_11_eye6_TA_tex_txt, + cbr_11_eye7_TA_tex_txt, + cbr_11_eye8_TA_tex_txt, + }, + { + cbr_11_mouth1_TA_tex_txt, + cbr_11_mouth2_TA_tex_txt, + cbr_11_mouth3_TA_tex_txt, + cbr_11_mouth4_TA_tex_txt, + cbr_11_mouth5_TA_tex_txt, + cbr_11_mouth6_TA_tex_txt, + }, + 128, + 8, + 176, + }, + 0.006500000134110451, + 0, + 10, + 3, + 33, + 0, + 0, + 285, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_299, + ACTOR_OBJ_BANK_442, + &cKF_bs_r_pig_1, + { + pig_11_tmem_txt, + pig_11_pal, + { + pig_11_eye1_TA_tex_txt, + pig_11_eye2_TA_tex_txt, + pig_11_eye3_TA_tex_txt, + pig_11_eye4_TA_tex_txt, + pig_11_eye5_TA_tex_txt, + pig_11_eye6_TA_tex_txt, + pig_11_eye7_TA_tex_txt, + pig_11_eye8_TA_tex_txt, + }, + { + pig_11_mouth1_TA_tex_txt, + pig_11_mouth2_TA_tex_txt, + pig_11_mouth3_TA_tex_txt, + pig_11_mouth4_TA_tex_txt, + pig_11_mouth5_TA_tex_txt, + pig_11_mouth6_TA_tex_txt, + }, + 64, + 112, + 160, + }, + 0.009999999776482582, + 0, + 10, + 31, + 36, + 0, + 0, + 276, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_133, + ACTOR_OBJ_BANK_147, + &cKF_bs_r_cat_1, + { + cat_14_tmem_txt, + cat_14_pal, + { + cat_14_eye1_TA_tex_txt, + cat_14_eye2_TA_tex_txt, + cat_14_eye3_TA_tex_txt, + cat_14_eye4_TA_tex_txt, + cat_14_eye5_TA_tex_txt, + cat_14_eye6_TA_tex_txt, + cat_14_eye7_TA_tex_txt, + cat_14_eye8_TA_tex_txt, + }, + { + cat_14_mouth1_TA_tex_txt, + cat_14_mouth2_TA_tex_txt, + cat_14_mouth3_TA_tex_txt, + cat_14_mouth4_TA_tex_txt, + cat_14_mouth5_TA_tex_txt, + cat_14_mouth6_TA_tex_txt, + }, + 0, + 32, + 128, + }, + 0.008999999612569809, + 0, + 13, + 17, + 33, + 0, + 0, + 277, + 20, + 40, + 67, + 25, + }, + { + ACTOR_OBJ_BANK_133, + ACTOR_OBJ_BANK_459, + &cKF_bs_r_cat_1, + { + cat_15_tmem_txt, + cat_15_pal, + { + cat_15_eye1_TA_tex_txt, + cat_15_eye2_TA_tex_txt, + cat_15_eye3_TA_tex_txt, + cat_15_eye4_TA_tex_txt, + cat_15_eye5_TA_tex_txt, + cat_15_eye6_TA_tex_txt, + cat_15_eye7_TA_tex_txt, + cat_15_eye8_TA_tex_txt, + }, + { + cat_15_mouth1_TA_tex_txt, + cat_15_mouth2_TA_tex_txt, + cat_15_mouth3_TA_tex_txt, + cat_15_mouth4_TA_tex_txt, + cat_15_mouth5_TA_tex_txt, + cat_15_mouth6_TA_tex_txt, + }, + 0, + 32, + 128, + }, + 0.008999999612569809, + 0, + 14, + 13, + 33, + 0, + 0, + 286, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_148, + ACTOR_OBJ_BANK_153, + &cKF_bs_r_chn_1, + { + chn_1_tmem_txt, + chn_1_pal, + { + chn_1_eye1_TA_tex_txt, + chn_1_eye2_TA_tex_txt, + chn_1_eye3_TA_tex_txt, + chn_1_eye4_TA_tex_txt, + chn_1_eye5_TA_tex_txt, + chn_1_eye6_TA_tex_txt, + chn_1_eye7_TA_tex_txt, + chn_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 0, + 0, + 0, + }, + 0.009999999776482582, + 1, + 4, + 1, + 35, + 0, + 0, + 1, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_148, + ACTOR_OBJ_BANK_153, + &cKF_bs_r_chn_1, + { + chn_1_tmem_txt, + chn_1_pal, + { + chn_1_eye1_TA_tex_txt, + chn_1_eye2_TA_tex_txt, + chn_1_eye3_TA_tex_txt, + chn_1_eye4_TA_tex_txt, + chn_1_eye5_TA_tex_txt, + chn_1_eye6_TA_tex_txt, + chn_1_eye7_TA_tex_txt, + chn_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 0, + 0, + 0, + }, + 0.008999999612569809, + 1, + 4, + 0, + 40, + 0, + 0, + 1, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_94, + ACTOR_OBJ_BANK_95, + &cKF_bs_r_wls_1, + { + wls_1_tmem_txt, + wls_1_pal, + { + wls_1_eye1_TA_tex_txt, + wls_1_eye2_TA_tex_txt, + wls_1_eye3_TA_tex_txt, + wls_1_eye4_TA_tex_txt, + wls_1_eye5_TA_tex_txt, + wls_1_eye6_TA_tex_txt, + wls_1_eye7_TA_tex_txt, + wls_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 20, + 0, + 0, + }, + 0.012500000186264515, + 1, + 0, + 0, + 51, + 0, + 0, + 224, + 23, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_124, + ACTOR_OBJ_BANK_125, + &cKF_bs_r_fox_1, + { + fox_1_tmem_txt, + fox_1_pal, + { + fox_1_eye1_TA_tex_txt, + fox_1_eye2_TA_tex_txt, + fox_1_eye3_TA_tex_txt, + fox_1_eye4_TA_tex_txt, + fox_1_eye5_TA_tex_txt, + fox_1_eye6_TA_tex_txt, + fox_1_eye7_TA_tex_txt, + fox_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 36, + 0, + 0, + }, + 0.009499999694526196, + 1, + 0, + 0, + 36, + 0, + 0, + 223, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_180, + ACTOR_OBJ_BANK_181, + &cKF_bs_r_grf_1, + { + grf_1_tmem_txt, + grf_1_pal, + { + grf_1_eye1_TA_tex_txt, + grf_1_eye2_TA_tex_txt, + grf_1_eye3_TA_tex_txt, + grf_1_eye4_TA_tex_txt, + grf_1_eye5_TA_tex_txt, + grf_1_eye6_TA_tex_txt, + grf_1_eye7_TA_tex_txt, + grf_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 68, + 0, + 0, + }, + 0.010999999940395355, + 1, + 0, + 0, + 35, + 0, + 0, + 226, + 20, + 65, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_314, + ACTOR_OBJ_BANK_315, + &cKF_bs_r_pga_1, + { + pga_1_tmem_txt, + pga_1_pal, + { + pga_1_eye1_TA_tex_txt, + pga_1_eye2_TA_tex_txt, + pga_1_eye3_TA_tex_txt, + pga_1_eye4_TA_tex_txt, + pga_1_eye5_TA_tex_txt, + pga_1_eye6_TA_tex_txt, + pga_1_eye7_TA_tex_txt, + pga_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 80, + 0, + 0, + }, + 0.00800000037997961, + 1, + 0, + 0, + 36, + 0, + 0, + 234, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_232, + ACTOR_OBJ_BANK_233, + &cKF_bs_r_xct_1, + { + xct_1_tmem_txt, + xct_1_pal, + { + xct_1_eye1_TA_tex_txt, + xct_1_eye2_TA_tex_txt, + xct_1_eye3_TA_tex_txt, + xct_1_eye4_TA_tex_txt, + xct_1_eye5_TA_tex_txt, + xct_1_eye6_TA_tex_txt, + xct_1_eye7_TA_tex_txt, + xct_1_eye8_TA_tex_txt, + }, + { + xct_1_mouth1_TA_tex_txt, + xct_1_mouth2_TA_tex_txt, + xct_1_mouth3_TA_tex_txt, + xct_1_mouth4_TA_tex_txt, + xct_1_mouth5_TA_tex_txt, + xct_1_mouth6_TA_tex_txt, + }, + 32, + 96, + 0, + }, + 0.008999999612569809, + 0, + 0, + 0, + 31, + 0, + 0, + 0, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_232, + ACTOR_OBJ_BANK_233, + &cKF_bs_r_xct_1, + { + xct_1_tmem_txt, + xct_1_pal, + { + xct_1_eye1_TA_tex_txt, + xct_1_eye2_TA_tex_txt, + xct_1_eye3_TA_tex_txt, + xct_1_eye4_TA_tex_txt, + xct_1_eye5_TA_tex_txt, + xct_1_eye6_TA_tex_txt, + xct_1_eye7_TA_tex_txt, + xct_1_eye8_TA_tex_txt, + }, + { + xct_1_mouth1_TA_tex_txt, + xct_1_mouth2_TA_tex_txt, + xct_1_mouth3_TA_tex_txt, + xct_1_mouth4_TA_tex_txt, + xct_1_mouth5_TA_tex_txt, + xct_1_mouth6_TA_tex_txt, + }, + 32, + 96, + 0, + }, + 0.008999999612569809, + 0, + 0, + 0, + 31, + 0, + 0, + 0, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_131, + ACTOR_OBJ_BANK_132, + &cKF_bs_r_cml_1, + { + cml_1_tmem_txt, + cml_1_pal, + { + cml_1_eye1_TA_tex_txt, + cml_1_eye2_TA_tex_txt, + cml_1_eye3_TA_tex_txt, + cml_1_eye4_TA_tex_txt, + cml_1_eye5_TA_tex_txt, + cml_1_eye6_TA_tex_txt, + cml_1_eye7_TA_tex_txt, + cml_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 48, + 0, + 0, + }, + 0.01600000075995922, + 1, + 0, + 0, + 53, + 0, + 0, + 225, + 23, + 60, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_251, + ACTOR_OBJ_BANK_252, + &cKF_bs_r_boa_1, + { + boa_1_tmem_txt, + boa_1_pal, + { + boa_1_eye1_TA_tex_txt, + boa_1_eye2_TA_tex_txt, + boa_1_eye3_TA_tex_txt, + boa_1_eye4_TA_tex_txt, + boa_1_eye5_TA_tex_txt, + boa_1_eye6_TA_tex_txt, + boa_1_eye7_TA_tex_txt, + boa_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 48, + 0, + 0, + }, + 0.010999999940395355, + 1, + 0, + 0, + 46, + 0, + 0, + 227, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_339, + ACTOR_OBJ_BANK_340, + &cKF_bs_r_rcn_1, + { + rcn_1_tmem_txt, + rcn_1_pal, + { + rcn_1_eye1_TA_tex_txt, + rcn_1_eye2_TA_tex_txt, + rcn_1_eye3_TA_tex_txt, + rcn_1_eye4_TA_tex_txt, + rcn_1_eye5_TA_tex_txt, + rcn_1_eye6_TA_tex_txt, + rcn_1_eye7_TA_tex_txt, + rcn_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 40, + 0, + 0, + }, + 0.010999999940395355, + 1, + 0, + 0, + 35, + 0, + 0, + 219, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_167, + ACTOR_OBJ_BANK_168, + &cKF_bs_r_rcc_1, + { + rcc_1_tmem_txt, + rcc_1_pal, + { + rcc_1_eye1_TA_tex_txt, + rcc_1_eye2_TA_tex_txt, + rcc_1_eye3_TA_tex_txt, + rcc_1_eye4_TA_tex_txt, + rcc_1_eye5_TA_tex_txt, + rcc_1_eye6_TA_tex_txt, + rcc_1_eye7_TA_tex_txt, + rcc_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 32, + 0, + 0, + }, + 0.010999999940395355, + 1, + 0, + 0, + 35, + 0, + 0, + 220, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_354, + ACTOR_OBJ_BANK_355, + &cKF_bs_r_rcs_1, + { + rcs_1_tmem_txt, + rcs_1_pal, + { + rcs_1_eye1_TA_tex_txt, + rcs_1_eye2_TA_tex_txt, + rcs_1_eye3_TA_tex_txt, + rcs_1_eye4_TA_tex_txt, + rcs_1_eye5_TA_tex_txt, + rcs_1_eye6_TA_tex_txt, + rcs_1_eye7_TA_tex_txt, + rcs_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 16, + 0, + 0, + }, + 0.010999999940395355, + 1, + 0, + 0, + 35, + 0, + 0, + 221, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_178, + ACTOR_OBJ_BANK_179, + &cKF_bs_r_rcd_1, + { + rcd_1_tmem_txt, + rcd_1_pal, + { + rcd_1_eye1_TA_tex_txt, + rcd_1_eye2_TA_tex_txt, + rcd_1_eye3_TA_tex_txt, + rcd_1_eye4_TA_tex_txt, + rcd_1_eye5_TA_tex_txt, + rcd_1_eye6_TA_tex_txt, + rcd_1_eye7_TA_tex_txt, + rcd_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 16, + 0, + 0, + }, + 0.010999999940395355, + 1, + 0, + 0, + 35, + 0, + 0, + 222, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_234, + ACTOR_OBJ_BANK_235, + &cKF_bs_r_bpt_1, + { + bpt_1_tmem_txt, + bpt_1_pal, + { + bpt_1_eye1_TA_tex_txt, + bpt_1_eye2_TA_tex_txt, + bpt_1_eye3_TA_tex_txt, + bpt_1_eye4_TA_tex_txt, + bpt_1_eye5_TA_tex_txt, + bpt_1_eye6_TA_tex_txt, + bpt_1_eye7_TA_tex_txt, + bpt_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 12, + 0, + 0, + }, + 0.009499999694526196, + 1, + 0, + 0, + 40, + 0, + 0, + 228, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_310, + ACTOR_OBJ_BANK_311, + &cKF_bs_r_plc_1, + { + plc_1_tmem_txt, + plc_1_pal, + { + plc_1_eye1_TA_tex_txt, + plc_1_eye2_TA_tex_txt, + plc_1_eye3_TA_tex_txt, + plc_1_eye4_TA_tex_txt, + plc_1_eye5_TA_tex_txt, + plc_1_eye6_TA_tex_txt, + plc_1_eye7_TA_tex_txt, + plc_1_eye8_TA_tex_txt, + }, + { + plc_1_mouth1_TA_tex_txt, + plc_1_mouth2_TA_tex_txt, + plc_1_mouth3_TA_tex_txt, + plc_1_mouth4_TA_tex_txt, + plc_1_mouth5_TA_tex_txt, + plc_1_mouth6_TA_tex_txt, + }, + 104, + 72, + 0, + }, + 0.009999999776482582, + 0, + 0, + 0, + 46, + 0, + 0, + 229, + 25, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_352, + ACTOR_OBJ_BANK_353, + &cKF_bs_r_mnk_1, + { + mnk_1_tmem_txt, + mnk_1_pal, + { + mnk_1_eye1_TA_tex_txt, + mnk_1_eye2_TA_tex_txt, + mnk_1_eye3_TA_tex_txt, + mnk_1_eye4_TA_tex_txt, + mnk_1_eye5_TA_tex_txt, + mnk_1_eye6_TA_tex_txt, + mnk_1_eye7_TA_tex_txt, + mnk_1_eye8_TA_tex_txt, + }, + { + mnk_1_mouth1_TA_tex_txt, + mnk_1_mouth2_TA_tex_txt, + mnk_1_mouth3_TA_tex_txt, + mnk_1_mouth4_TA_tex_txt, + mnk_1_mouth5_TA_tex_txt, + mnk_1_mouth6_TA_tex_txt, + }, + 40, + 0, + 0, + }, + 0.008999999612569809, + 0, + 0, + 0, + 35, + 0, + 0, + 230, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_335, + ACTOR_OBJ_BANK_336, + &cKF_bs_r_snt_1, + { + snt_1_tmem_txt, + snt_1_pal, + { + snt_1_eye1_TA_tex_txt, + snt_1_eye2_TA_tex_txt, + snt_1_eye3_TA_tex_txt, + snt_1_eye4_TA_tex_txt, + snt_1_eye5_TA_tex_txt, + snt_1_eye6_TA_tex_txt, + snt_1_eye7_TA_tex_txt, + snt_1_eye8_TA_tex_txt, + }, + { + snt_1_mouth1_TA_tex_txt, + snt_1_mouth2_TA_tex_txt, + snt_1_mouth3_TA_tex_txt, + snt_1_mouth4_TA_tex_txt, + snt_1_mouth5_TA_tex_txt, + snt_1_mouth6_TA_tex_txt, + }, + 8, + 44, + 0, + }, + 0.009999999776482582, + 0, + 0, + 0, + 46, + 0, + 0, + 232, + 25, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_312, + ACTOR_OBJ_BANK_313, + &cKF_bs_r_pla_1, + { + pla_1_tmem_txt, + pla_1_pal, + { + pla_1_eye1_TA_tex_txt, + pla_1_eye2_TA_tex_txt, + pla_1_eye3_TA_tex_txt, + pla_1_eye4_TA_tex_txt, + pla_1_eye5_TA_tex_txt, + pla_1_eye6_TA_tex_txt, + pla_1_eye7_TA_tex_txt, + pla_1_eye8_TA_tex_txt, + }, + { + pla_1_mouth1_TA_tex_txt, + pla_1_mouth2_TA_tex_txt, + pla_1_mouth3_TA_tex_txt, + pla_1_mouth4_TA_tex_txt, + pla_1_mouth5_TA_tex_txt, + pla_1_mouth6_TA_tex_txt, + }, + 104, + 44, + 0, + }, + 0.009499999694526196, + 0, + 0, + 0, + 43, + 0, + 0, + 239, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_318, + ACTOR_OBJ_BANK_319, + &cKF_bs_r_plb_1, + { + plb_1_tmem_txt, + plb_1_pal, + { + plb_1_eye1_TA_tex_txt, + plb_1_eye2_TA_tex_txt, + plb_1_eye3_TA_tex_txt, + plb_1_eye4_TA_tex_txt, + plb_1_eye5_TA_tex_txt, + plb_1_eye6_TA_tex_txt, + plb_1_eye7_TA_tex_txt, + plb_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 84, + 0, + 0, + }, + 0.00800000037997961, + 1, + 0, + 0, + 38, + 0, + 0, + 233, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_316, + ACTOR_OBJ_BANK_317, + &cKF_bs_r_pgb_1, + { + pgb_1_tmem_txt, + pgb_1_pal, + { + pgb_1_eye1_TA_tex_txt, + pgb_1_eye2_TA_tex_txt, + pgb_1_eye3_TA_tex_txt, + pgb_1_eye4_TA_tex_txt, + pgb_1_eye5_TA_tex_txt, + pgb_1_eye6_TA_tex_txt, + pgb_1_eye7_TA_tex_txt, + pgb_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 100, + 0, + 0, + }, + 0.00800000037997961, + 1, + 0, + 0, + 36, + 0, + 0, + 235, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_124, + ACTOR_OBJ_BANK_125, + &cKF_bs_r_fox_1, + { + fox_1_tmem_txt, + fox_1_pal, + { + fox_1_eye1_TA_tex_txt, + fox_1_eye2_TA_tex_txt, + fox_1_eye3_TA_tex_txt, + fox_1_eye4_TA_tex_txt, + fox_1_eye5_TA_tex_txt, + fox_1_eye6_TA_tex_txt, + fox_1_eye7_TA_tex_txt, + fox_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 36, + 0, + 0, + }, + 0.009499999694526196, + 1, + 0, + 0, + 36, + 0, + 0, + 223, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_339, + ACTOR_OBJ_BANK_340, + &cKF_bs_r_rcn_1, + { + rcn_1_tmem_txt, + rcn_1_pal, + { + rcn_1_eye1_TA_tex_txt, + rcn_1_eye2_TA_tex_txt, + rcn_1_eye3_TA_tex_txt, + rcn_1_eye4_TA_tex_txt, + rcn_1_eye5_TA_tex_txt, + rcn_1_eye6_TA_tex_txt, + rcn_1_eye7_TA_tex_txt, + rcn_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 40, + 0, + 0, + }, + 0.010999999940395355, + 1, + 0, + 0, + 35, + 0, + 0, + 219, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_167, + ACTOR_OBJ_BANK_168, + &cKF_bs_r_rcc_1, + { + rcc_1_tmem_txt, + rcc_1_pal, + { + rcc_1_eye1_TA_tex_txt, + rcc_1_eye2_TA_tex_txt, + rcc_1_eye3_TA_tex_txt, + rcc_1_eye4_TA_tex_txt, + rcc_1_eye5_TA_tex_txt, + rcc_1_eye6_TA_tex_txt, + rcc_1_eye7_TA_tex_txt, + rcc_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 32, + 0, + 0, + }, + 0.010999999940395355, + 1, + 0, + 0, + 35, + 0, + 0, + 220, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_354, + ACTOR_OBJ_BANK_355, + &cKF_bs_r_rcs_1, + { + rcs_1_tmem_txt, + rcs_1_pal, + { + rcs_1_eye1_TA_tex_txt, + rcs_1_eye2_TA_tex_txt, + rcs_1_eye3_TA_tex_txt, + rcs_1_eye4_TA_tex_txt, + rcs_1_eye5_TA_tex_txt, + rcs_1_eye6_TA_tex_txt, + rcs_1_eye7_TA_tex_txt, + rcs_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 16, + 0, + 0, + }, + 0.010999999940395355, + 1, + 0, + 0, + 35, + 0, + 0, + 221, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_178, + ACTOR_OBJ_BANK_179, + &cKF_bs_r_rcd_1, + { + rcd_1_tmem_txt, + rcd_1_pal, + { + rcd_1_eye1_TA_tex_txt, + rcd_1_eye2_TA_tex_txt, + rcd_1_eye3_TA_tex_txt, + rcd_1_eye4_TA_tex_txt, + rcd_1_eye5_TA_tex_txt, + rcd_1_eye6_TA_tex_txt, + rcd_1_eye7_TA_tex_txt, + rcd_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 16, + 0, + 0, + }, + 0.010999999940395355, + 1, + 0, + 0, + 35, + 0, + 0, + 222, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 36, + 0, + 0, + 0, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_339, + ACTOR_OBJ_BANK_340, + &cKF_bs_r_rcn_1, + { + rcn_1_tmem_txt, + rcn_1_pal, + { + rcn_1_eye1_TA_tex_txt, + rcn_1_eye2_TA_tex_txt, + rcn_1_eye3_TA_tex_txt, + rcn_1_eye4_TA_tex_txt, + rcn_1_eye5_TA_tex_txt, + rcn_1_eye6_TA_tex_txt, + rcn_1_eye7_TA_tex_txt, + rcn_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 40, + 0, + 0, + }, + 0.010999999940395355, + 1, + 0, + 0, + 35, + 0, + 0, + 219, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_167, + ACTOR_OBJ_BANK_168, + &cKF_bs_r_rcc_1, + { + rcc_1_tmem_txt, + rcc_1_pal, + { + rcc_1_eye1_TA_tex_txt, + rcc_1_eye2_TA_tex_txt, + rcc_1_eye3_TA_tex_txt, + rcc_1_eye4_TA_tex_txt, + rcc_1_eye5_TA_tex_txt, + rcc_1_eye6_TA_tex_txt, + rcc_1_eye7_TA_tex_txt, + rcc_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 32, + 0, + 0, + }, + 0.010999999940395355, + 1, + 0, + 0, + 35, + 0, + 0, + 220, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_354, + ACTOR_OBJ_BANK_355, + &cKF_bs_r_rcs_1, + { + rcs_1_tmem_txt, + rcs_1_pal, + { + rcs_1_eye1_TA_tex_txt, + rcs_1_eye2_TA_tex_txt, + rcs_1_eye3_TA_tex_txt, + rcs_1_eye4_TA_tex_txt, + rcs_1_eye5_TA_tex_txt, + rcs_1_eye6_TA_tex_txt, + rcs_1_eye7_TA_tex_txt, + rcs_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 16, + 0, + 0, + }, + 0.010999999940395355, + 1, + 0, + 0, + 35, + 0, + 0, + 221, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_178, + ACTOR_OBJ_BANK_179, + &cKF_bs_r_rcd_1, + { + rcd_1_tmem_txt, + rcd_1_pal, + { + rcd_1_eye1_TA_tex_txt, + rcd_1_eye2_TA_tex_txt, + rcd_1_eye3_TA_tex_txt, + rcd_1_eye4_TA_tex_txt, + rcd_1_eye5_TA_tex_txt, + rcd_1_eye6_TA_tex_txt, + rcd_1_eye7_TA_tex_txt, + rcd_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 16, + 0, + 0, + }, + 0.010999999940395355, + 1, + 0, + 0, + 35, + 0, + 0, + 222, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_86, + ACTOR_OBJ_BANK_87, + &cKF_bs_r_bev_1, + { + bev_1_tmem_txt, + bev_1_pal, + { + bev_1_eye1_TA_tex_txt, + bev_1_eye2_TA_tex_txt, + bev_1_eye3_TA_tex_txt, + bev_1_eye4_TA_tex_txt, + bev_1_eye5_TA_tex_txt, + bev_1_eye6_TA_tex_txt, + bev_1_eye7_TA_tex_txt, + bev_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 40, + 0, + 0, + }, + 0.008999999612569809, + 1, + 0, + 0, + 39, + 0, + 0, + 238, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_218, + ACTOR_OBJ_BANK_219, + &cKF_bs_r_rcf_1, + { + rcf_1_tmem_txt, + rcf_1_pal, + { + rcf_1_eye1_TA_tex_txt, + rcf_1_eye2_TA_tex_txt, + rcf_1_eye3_TA_tex_txt, + rcf_1_eye4_TA_tex_txt, + rcf_1_eye5_TA_tex_txt, + rcf_1_eye6_TA_tex_txt, + rcf_1_eye7_TA_tex_txt, + rcf_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 16, + 0, + 0, + }, + 0.010999999940395355, + 1, + 0, + 0, + 35, + 0, + 0, + 241, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 0, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_236, + ACTOR_OBJ_BANK_237, + &cKF_bs_r_pkn_1, + { + pkn_1_tmem_txt, + pkn_1_pal, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 0, + 0, + 0, + }, + 0.009999999776482582, + 1, + 0, + 0, + 40, + 0, + 0, + 231, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_236, + ACTOR_OBJ_BANK_237, + &cKF_bs_r_pkn_1, + { + pkn_1_tmem_txt, + pkn_1_pal, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 0, + 0, + 0, + }, + 0.009999999776482582, + 1, + 0, + 0, + 40, + 0, + 0, + 231, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_236, + ACTOR_OBJ_BANK_237, + &cKF_bs_r_pkn_1, + { + pkn_1_tmem_txt, + pkn_1_pal, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 0, + 0, + 0, + }, + 0.009999999776482582, + 1, + 0, + 0, + 40, + 0, + 0, + 231, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_236, + ACTOR_OBJ_BANK_237, + &cKF_bs_r_pkn_1, + { + pkn_1_tmem_txt, + pkn_1_pal, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 0, + 0, + 0, + }, + 0.009999999776482582, + 1, + 0, + 0, + 40, + 0, + 0, + 231, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_236, + ACTOR_OBJ_BANK_237, + &cKF_bs_r_pkn_1, + { + pkn_1_tmem_txt, + pkn_1_pal, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 0, + 0, + 0, + }, + 0.009999999776482582, + 1, + 0, + 0, + 40, + 0, + 0, + 231, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_236, + ACTOR_OBJ_BANK_237, + &cKF_bs_r_pkn_1, + { + pkn_1_tmem_txt, + pkn_1_pal, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 40, + 0, + 0, + }, + 0.009999999776482582, + 1, + 0, + 0, + 35, + 0, + 0, + 231, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_272, + ACTOR_OBJ_BANK_273, + &cKF_bs_r_lrc_1, + { + lrc_1_tmem_txt, + lrc_1_pal, + { + lrc_1_eye1_TA_tex_txt, + lrc_1_eye2_TA_tex_txt, + lrc_1_eye3_TA_tex_txt, + lrc_1_eye4_TA_tex_txt, + lrc_1_eye5_TA_tex_txt, + lrc_1_eye6_TA_tex_txt, + lrc_1_eye7_TA_tex_txt, + lrc_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 40, + 0, + 0, + }, + 0.00800000037997961, + 1, + 0, + 0, + 30, + 0, + 0, + 240, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_260, + ACTOR_OBJ_BANK_261, + &cKF_bs_r_fob_1, + { + fob_1_tmem_txt, + fob_1_pal, + { + fob_1_eye1_TA_tex_txt, + fob_1_eye2_TA_tex_txt, + fob_1_eye3_TA_tex_txt, + fob_1_eye4_TA_tex_txt, + fob_1_eye5_TA_tex_txt, + fob_1_eye6_TA_tex_txt, + fob_1_eye7_TA_tex_txt, + fob_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 24, + 0, + 0, + }, + 0.009499999694526196, + 1, + 0, + 0, + 36, + 0, + 0, + 242, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_272, + ACTOR_OBJ_BANK_273, + &cKF_bs_r_lrc_1, + { + lrc_1_tmem_txt, + lrc_1_pal, + { + lrc_1_eye1_TA_tex_txt, + lrc_1_eye2_TA_tex_txt, + lrc_1_eye3_TA_tex_txt, + lrc_1_eye4_TA_tex_txt, + lrc_1_eye5_TA_tex_txt, + lrc_1_eye6_TA_tex_txt, + lrc_1_eye7_TA_tex_txt, + lrc_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 40, + 0, + 0, + }, + 0.00800000037997961, + 1, + 0, + 0, + 30, + 0, + 0, + 0, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_341, + ACTOR_OBJ_BANK_342, + &cKF_bs_r_kab_1, + { + kab_1_tmem_txt, + kab_1_pal, + { + kab_1_eye1_TA_tex_txt, + kab_1_eye2_TA_tex_txt, + kab_1_eye3_TA_tex_txt, + kab_1_eye4_TA_tex_txt, + kab_1_eye5_TA_tex_txt, + kab_1_eye6_TA_tex_txt, + kab_1_eye7_TA_tex_txt, + kab_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 32, + 0, + 0, + }, + 0.009999999776482582, + 1, + 0, + 0, + 43, + 0, + 0, + 227, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_260, + ACTOR_OBJ_BANK_261, + &cKF_bs_r_fob_1, + { + fob_1_tmem_txt, + fob_1_pal, + { + fob_1_eye1_TA_tex_txt, + fob_1_eye2_TA_tex_txt, + fob_1_eye3_TA_tex_txt, + fob_1_eye4_TA_tex_txt, + fob_1_eye5_TA_tex_txt, + fob_1_eye6_TA_tex_txt, + fob_1_eye7_TA_tex_txt, + fob_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 24, + 0, + 0, + }, + 0.009499999694526196, + 1, + 0, + 0, + 36, + 0, + 0, + 242, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_218, + ACTOR_OBJ_BANK_219, + &cKF_bs_r_rcf_1, + { + rcf_1_tmem_txt, + rcf_1_pal, + { + rcf_1_eye1_TA_tex_txt, + rcf_1_eye2_TA_tex_txt, + rcf_1_eye3_TA_tex_txt, + rcf_1_eye4_TA_tex_txt, + rcf_1_eye5_TA_tex_txt, + rcf_1_eye6_TA_tex_txt, + rcf_1_eye7_TA_tex_txt, + rcf_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 16, + 0, + 0, + }, + 0.010999999940395355, + 1, + 0, + 0, + 35, + 0, + 0, + 241, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_218, + ACTOR_OBJ_BANK_219, + &cKF_bs_r_rcf_1, + { + rcf_1_tmem_txt, + rcf_1_pal, + { + rcf_1_eye1_TA_tex_txt, + rcf_1_eye2_TA_tex_txt, + rcf_1_eye3_TA_tex_txt, + rcf_1_eye4_TA_tex_txt, + rcf_1_eye5_TA_tex_txt, + rcf_1_eye6_TA_tex_txt, + rcf_1_eye7_TA_tex_txt, + rcf_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 16, + 0, + 0, + }, + 0.010999999940395355, + 1, + 0, + 0, + 35, + 0, + 0, + 241, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_218, + ACTOR_OBJ_BANK_219, + &cKF_bs_r_rcf_1, + { + rcf_1_tmem_txt, + rcf_1_pal, + { + rcf_1_eye1_TA_tex_txt, + rcf_1_eye2_TA_tex_txt, + rcf_1_eye3_TA_tex_txt, + rcf_1_eye4_TA_tex_txt, + rcf_1_eye5_TA_tex_txt, + rcf_1_eye6_TA_tex_txt, + rcf_1_eye7_TA_tex_txt, + rcf_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 16, + 0, + 0, + }, + 0.010999999940395355, + 1, + 0, + 0, + 35, + 0, + 0, + 241, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_234, + ACTOR_OBJ_BANK_235, + &cKF_bs_r_bpt_1, + { + bpt_1_tmem_txt, + bpt_1_pal, + { + bpt_1_eye1_TA_tex_txt, + bpt_1_eye2_TA_tex_txt, + bpt_1_eye3_TA_tex_txt, + bpt_1_eye4_TA_tex_txt, + bpt_1_eye5_TA_tex_txt, + bpt_1_eye6_TA_tex_txt, + bpt_1_eye7_TA_tex_txt, + bpt_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 12, + 0, + 0, + }, + 0.009499999694526196, + 1, + 0, + 0, + 40, + 0, + 0, + 243, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_49, + ACTOR_OBJ_BANK_50, + &cKF_bs_r_mol_1, + { + mol_1_tmem_txt, + mol_1_pal, + { + mol_1_eye1_TA_tex_txt, + mol_1_eye2_TA_tex_txt, + mol_1_eye3_TA_tex_txt, + mol_1_eye4_TA_tex_txt, + mol_1_eye5_TA_tex_txt, + mol_1_eye6_TA_tex_txt, + mol_1_eye7_TA_tex_txt, + mol_1_eye8_TA_tex_txt, + }, + { + mol_1_mouth1_TA_tex_txt, + mol_1_mouth2_TA_tex_txt, + mol_1_mouth3_TA_tex_txt, + mol_1_mouth4_TA_tex_txt, + mol_1_mouth5_TA_tex_txt, + mol_1_mouth6_TA_tex_txt, + }, + 64, + 104, + 0, + }, + 0.008999999612569809, + 0, + 0, + 0, + 34, + 0, + 0, + 244, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_398, + ACTOR_OBJ_BANK_399, + &cKF_bs_r_plj_1, + { + plj_1_tmem_txt, + plj_1_pal, + { + plj_1_eye1_TA_tex_txt, + plj_1_eye2_TA_tex_txt, + plj_1_eye3_TA_tex_txt, + plj_1_eye4_TA_tex_txt, + plj_1_eye5_TA_tex_txt, + plj_1_eye6_TA_tex_txt, + plj_1_eye7_TA_tex_txt, + plj_1_eye8_TA_tex_txt, + }, + { + plj_1_mouth1_TA_tex_txt, + plj_1_mouth2_TA_tex_txt, + plj_1_mouth3_TA_tex_txt, + plj_1_mouth4_TA_tex_txt, + plj_1_mouth5_TA_tex_txt, + plj_1_mouth6_TA_tex_txt, + }, + 84, + 52, + 0, + }, + 0.009999999776482582, + 0, + 0, + 0, + 46, + 0, + 0, + 246, + 25, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 36, + 0, + 0, + 237, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_396, + ACTOR_OBJ_BANK_397, + &cKF_bs_r_seg_1, + { + seg_1_tmem_txt, + seg_1_pal, + { + seg_1_eye1_TA_tex_txt, + seg_1_eye2_TA_tex_txt, + seg_1_eye3_TA_tex_txt, + seg_1_eye4_TA_tex_txt, + seg_1_eye5_TA_tex_txt, + seg_1_eye6_TA_tex_txt, + seg_1_eye7_TA_tex_txt, + seg_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 48, + 0, + 0, + }, + 0.00800000037997961, + 1, + 0, + 0, + 39, + 0, + 0, + 247, + 23, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_49, + ACTOR_OBJ_BANK_50, + &cKF_bs_r_mol_1, + { + mol_1_tmem_txt, + mol_1_pal, + { + mol_1_eye1_TA_tex_txt, + mol_1_eye2_TA_tex_txt, + mol_1_eye3_TA_tex_txt, + mol_1_eye4_TA_tex_txt, + mol_1_eye5_TA_tex_txt, + mol_1_eye6_TA_tex_txt, + mol_1_eye7_TA_tex_txt, + mol_1_eye8_TA_tex_txt, + }, + { + mol_1_mouth1_TA_tex_txt, + mol_1_mouth2_TA_tex_txt, + mol_1_mouth3_TA_tex_txt, + mol_1_mouth4_TA_tex_txt, + mol_1_mouth5_TA_tex_txt, + mol_1_mouth6_TA_tex_txt, + }, + 64, + 104, + 0, + }, + 0.008999999612569809, + 0, + 0, + 0, + 34, + 0, + 0, + 245, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 36, + 0, + 0, + 0, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_352, + ACTOR_OBJ_BANK_353, + &cKF_bs_r_mnk_1, + { + mnk_1_tmem_txt, + mnk_1_pal, + { + mnk_1_eye1_TA_tex_txt, + mnk_1_eye2_TA_tex_txt, + mnk_1_eye3_TA_tex_txt, + mnk_1_eye4_TA_tex_txt, + mnk_1_eye5_TA_tex_txt, + mnk_1_eye6_TA_tex_txt, + mnk_1_eye7_TA_tex_txt, + mnk_1_eye8_TA_tex_txt, + }, + { + mnk_1_mouth1_TA_tex_txt, + mnk_1_mouth2_TA_tex_txt, + mnk_1_mouth3_TA_tex_txt, + mnk_1_mouth4_TA_tex_txt, + mnk_1_mouth5_TA_tex_txt, + mnk_1_mouth6_TA_tex_txt, + }, + 40, + 0, + 0, + }, + 0.008999999612569809, + 0, + 0, + 0, + 35, + 0, + 0, + 230, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_49, + ACTOR_OBJ_BANK_50, + &cKF_bs_r_mol_1, + { + mol_1_tmem_txt, + mol_1_pal, + { + mol_1_eye1_TA_tex_txt, + mol_1_eye2_TA_tex_txt, + mol_1_eye3_TA_tex_txt, + mol_1_eye4_TA_tex_txt, + mol_1_eye5_TA_tex_txt, + mol_1_eye6_TA_tex_txt, + mol_1_eye7_TA_tex_txt, + mol_1_eye8_TA_tex_txt, + }, + { + mol_1_mouth1_TA_tex_txt, + mol_1_mouth2_TA_tex_txt, + mol_1_mouth3_TA_tex_txt, + mol_1_mouth4_TA_tex_txt, + mol_1_mouth5_TA_tex_txt, + mol_1_mouth6_TA_tex_txt, + }, + 64, + 104, + 0, + }, + 0.008999999612569809, + 0, + 0, + 0, + 34, + 0, + 0, + 245, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_49, + ACTOR_OBJ_BANK_50, + &cKF_bs_r_mol_1, + { + mol_1_tmem_txt, + mol_1_pal, + { + mol_1_eye1_TA_tex_txt, + mol_1_eye2_TA_tex_txt, + mol_1_eye3_TA_tex_txt, + mol_1_eye4_TA_tex_txt, + mol_1_eye5_TA_tex_txt, + mol_1_eye6_TA_tex_txt, + mol_1_eye7_TA_tex_txt, + mol_1_eye8_TA_tex_txt, + }, + { + mol_1_mouth1_TA_tex_txt, + mol_1_mouth2_TA_tex_txt, + mol_1_mouth3_TA_tex_txt, + mol_1_mouth4_TA_tex_txt, + mol_1_mouth5_TA_tex_txt, + mol_1_mouth6_TA_tex_txt, + }, + 64, + 104, + 0, + }, + 0.008999999612569809, + 0, + 0, + 0, + 34, + 0, + 0, + 245, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 0, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_49, + ACTOR_OBJ_BANK_50, + &cKF_bs_r_mol_1, + { + mol_1_tmem_txt, + mol_1_pal, + { + mol_1_eye1_TA_tex_txt, + mol_1_eye2_TA_tex_txt, + mol_1_eye3_TA_tex_txt, + mol_1_eye4_TA_tex_txt, + mol_1_eye5_TA_tex_txt, + mol_1_eye6_TA_tex_txt, + mol_1_eye7_TA_tex_txt, + mol_1_eye8_TA_tex_txt, + }, + { + mol_1_mouth1_TA_tex_txt, + mol_1_mouth2_TA_tex_txt, + mol_1_mouth3_TA_tex_txt, + mol_1_mouth4_TA_tex_txt, + mol_1_mouth5_TA_tex_txt, + mol_1_mouth6_TA_tex_txt, + }, + 64, + 104, + 0, + }, + 0.008999999612569809, + 0, + 0, + 0, + 34, + 0, + 0, + 245, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_422, + ACTOR_OBJ_BANK_423, + &cKF_bs_r_xsq_1, + { + xsq_1_tmem_txt, + xsq_1_pal, + { + xsq_1_eye1_TA_tex_txt, + xsq_1_eye2_TA_tex_txt, + xsq_1_eye3_TA_tex_txt, + xsq_1_eye4_TA_tex_txt, + xsq_1_eye5_TA_tex_txt, + xsq_1_eye6_TA_tex_txt, + xsq_1_eye7_TA_tex_txt, + xsq_1_eye8_TA_tex_txt, + }, + { + xsq_1_mouth1_TA_tex_txt, + xsq_1_mouth2_TA_tex_txt, + xsq_1_mouth3_TA_tex_txt, + xsq_1_mouth4_TA_tex_txt, + xsq_1_mouth5_TA_tex_txt, + xsq_1_mouth6_TA_tex_txt, + }, + 72, + 104, + 0, + }, + 0.006800000090152025, + 0, + 0, + 0, + 26, + 0, + 0, + 49, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_401, + ACTOR_OBJ_BANK_402, + &cKF_bs_r_owl_1, + { + owl_1_tmem_txt, + owl_1_pal, + { + owl_1_eye1_TA_tex_txt, + owl_1_eye2_TA_tex_txt, + owl_1_eye3_TA_tex_txt, + owl_1_eye4_TA_tex_txt, + owl_1_eye5_TA_tex_txt, + owl_1_eye6_TA_tex_txt, + owl_1_eye7_TA_tex_txt, + owl_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 40, + 0, + 0, + }, + 0.009499999694526196, + 1, + 0, + 0, + 40, + 0, + 0, + 280, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_403, + ACTOR_OBJ_BANK_404, + &cKF_bs_r_ttl_1, + { + ttl_1_tmem_txt, + ttl_1_pal, + { + ttl_1_eye1_TA_tex_txt, + ttl_1_eye2_TA_tex_txt, + ttl_1_eye3_TA_tex_txt, + ttl_1_eye4_TA_tex_txt, + ttl_1_eye5_TA_tex_txt, + ttl_1_eye6_TA_tex_txt, + ttl_1_eye7_TA_tex_txt, + ttl_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 88, + 0, + 0, + }, + 0.009999999776482582, + 1, + 0, + 0, + 40, + 0, + 0, + 281, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_10, + ACTOR_OBJ_BANK_393, + &cKF_bs_r_gst_1, + { + gst_1_tmem_txt, + gst_1_pal, + { + gst_1_eye1_TA_tex_txt, + gst_1_eye2_TA_tex_txt, + gst_1_eye3_TA_tex_txt, + gst_1_eye4_TA_tex_txt, + gst_1_eye5_TA_tex_txt, + gst_1_eye6_TA_tex_txt, + gst_1_eye7_TA_tex_txt, + gst_1_eye8_TA_tex_txt, + }, + { + gst_1_mouth1_TA_tex_txt, + gst_1_mouth2_TA_tex_txt, + gst_1_mouth3_TA_tex_txt, + gst_1_mouth4_TA_tex_txt, + gst_1_mouth5_TA_tex_txt, + gst_1_mouth6_TA_tex_txt, + }, + 32, + 0, + 0, + }, + 0.009999999776482582, + 0, + 0, + 0, + 40, + 0, + 0, + 249, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_416, + ACTOR_OBJ_BANK_417, + &cKF_bs_r_hgh_1, + { + hgh_1_tmem_txt, + hgh_1_pal, + { + hgh_1_eye1_TA_tex_txt, + hgh_1_eye2_TA_tex_txt, + hgh_1_eye3_TA_tex_txt, + hgh_1_eye4_TA_tex_txt, + hgh_1_eye5_TA_tex_txt, + hgh_1_eye6_TA_tex_txt, + hgh_1_eye7_TA_tex_txt, + hgh_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 88, + 0, + 0, + }, + 0.009999999776482582, + 1, + 0, + 0, + 40, + 0, + 0, + 278, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_418, + ACTOR_OBJ_BANK_419, + &cKF_bs_r_hgs_1, + { + hgs_1_tmem_txt, + hgs_1_pal, + { + hgs_1_eye1_TA_tex_txt, + hgs_1_eye2_TA_tex_txt, + hgs_1_eye3_TA_tex_txt, + hgs_1_eye4_TA_tex_txt, + hgs_1_eye5_TA_tex_txt, + hgs_1_eye6_TA_tex_txt, + hgs_1_eye7_TA_tex_txt, + hgs_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 88, + 0, + 0, + }, + 0.009999999776482582, + 1, + 0, + 0, + 40, + 0, + 0, + 279, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_414, + ACTOR_OBJ_BANK_415, + &cKF_bs_r_wip_1, + { + wip_1_tmem_txt, + wip_1_pal, + { + wip_1_eye1_TA_tex_txt, + wip_1_eye2_TA_tex_txt, + wip_1_eye3_TA_tex_txt, + wip_1_eye4_TA_tex_txt, + wip_1_eye5_TA_tex_txt, + wip_1_eye6_TA_tex_txt, + wip_1_eye7_TA_tex_txt, + wip_1_eye8_TA_tex_txt, + }, + { + wip_1_mouth1_TA_tex_txt, + wip_1_mouth2_TA_tex_txt, + wip_1_mouth3_TA_tex_txt, + wip_1_mouth4_TA_tex_txt, + wip_1_mouth5_TA_tex_txt, + wip_1_mouth6_TA_tex_txt, + }, + 88, + 0, + 0, + }, + 0.009999999776482582, + 0, + 0, + 0, + 40, + 0, + 0, + 282, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_403, + ACTOR_OBJ_BANK_404, + &cKF_bs_r_ttl_1, + { + ttl_1_tmem_txt, + ttl_1_pal, + { + ttl_1_eye1_TA_tex_txt, + ttl_1_eye2_TA_tex_txt, + ttl_1_eye3_TA_tex_txt, + ttl_1_eye4_TA_tex_txt, + ttl_1_eye5_TA_tex_txt, + ttl_1_eye6_TA_tex_txt, + ttl_1_eye7_TA_tex_txt, + ttl_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 88, + 0, + 0, + }, + 0.009999999776482582, + 1, + 0, + 0, + 40, + 0, + 0, + 281, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_424, + ACTOR_OBJ_BANK_425, + &cKF_bs_r_mka_1, + { + mka_1_tmem_txt, + mka_1_pal, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 88, + 0, + 0, + }, + 0.009999999776482582, + 0, + 0, + 0, + 40, + 0, + 0, + 284, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_424, + ACTOR_OBJ_BANK_425, + &cKF_bs_r_mka_1, + { + mka_1_tmem_txt, + mka_1_pal, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 88, + 0, + 0, + }, + 0.009999999776482582, + 0, + 0, + 0, + 40, + 0, + 0, + 284, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_403, + ACTOR_OBJ_BANK_404, + &cKF_bs_r_ttl_1, + { + ttl_1_tmem_txt, + ttl_1_pal, + { + ttl_1_eye1_TA_tex_txt, + ttl_1_eye2_TA_tex_txt, + ttl_1_eye3_TA_tex_txt, + ttl_1_eye4_TA_tex_txt, + ttl_1_eye5_TA_tex_txt, + ttl_1_eye6_TA_tex_txt, + ttl_1_eye7_TA_tex_txt, + ttl_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 88, + 0, + 0, + }, + 0.009999999776482582, + 1, + 0, + 0, + 40, + 0, + 0, + 281, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_236, + ACTOR_OBJ_BANK_237, + &cKF_bs_r_pkn_1, + { + pkn_1_tmem_txt, + pkn_1_pal, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 0, + 0, + 0, + }, + 0.009999999776482582, + 1, + 0, + 0, + 40, + 0, + 0, + 231, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_352, + ACTOR_OBJ_BANK_353, + &cKF_bs_r_mnk_1, + { + mnk_1_tmem_txt, + mnk_1_pal, + { + mnk_1_eye1_TA_tex_txt, + mnk_1_eye2_TA_tex_txt, + mnk_1_eye3_TA_tex_txt, + mnk_1_eye4_TA_tex_txt, + mnk_1_eye5_TA_tex_txt, + mnk_1_eye6_TA_tex_txt, + mnk_1_eye7_TA_tex_txt, + mnk_1_eye8_TA_tex_txt, + }, + { + mnk_1_mouth1_TA_tex_txt, + mnk_1_mouth2_TA_tex_txt, + mnk_1_mouth3_TA_tex_txt, + mnk_1_mouth4_TA_tex_txt, + mnk_1_mouth5_TA_tex_txt, + mnk_1_mouth6_TA_tex_txt, + }, + 40, + 0, + 0, + }, + 0.008999999612569809, + 0, + 0, + 0, + 35, + 0, + 0, + 230, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_396, + ACTOR_OBJ_BANK_397, + &cKF_bs_r_seg_1, + { + seg_1_tmem_txt, + seg_1_pal, + { + seg_1_eye1_TA_tex_txt, + seg_1_eye2_TA_tex_txt, + seg_1_eye3_TA_tex_txt, + seg_1_eye4_TA_tex_txt, + seg_1_eye5_TA_tex_txt, + seg_1_eye6_TA_tex_txt, + seg_1_eye7_TA_tex_txt, + seg_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 48, + 0, + 0, + }, + 0.00800000037997961, + 1, + 0, + 0, + 39, + 0, + 0, + 247, + 23, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_49, + ACTOR_OBJ_BANK_50, + &cKF_bs_r_mol_1, + { + mol_1_tmem_txt, + mol_1_pal, + { + mol_1_eye1_TA_tex_txt, + mol_1_eye2_TA_tex_txt, + mol_1_eye3_TA_tex_txt, + mol_1_eye4_TA_tex_txt, + mol_1_eye5_TA_tex_txt, + mol_1_eye6_TA_tex_txt, + mol_1_eye7_TA_tex_txt, + mol_1_eye8_TA_tex_txt, + }, + { + mol_1_mouth1_TA_tex_txt, + mol_1_mouth2_TA_tex_txt, + mol_1_mouth3_TA_tex_txt, + mol_1_mouth4_TA_tex_txt, + mol_1_mouth5_TA_tex_txt, + mol_1_mouth6_TA_tex_txt, + }, + 64, + 104, + 0, + }, + 0.008999999612569809, + 0, + 0, + 0, + 34, + 0, + 0, + 244, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_49, + ACTOR_OBJ_BANK_50, + &cKF_bs_r_mol_1, + { + mol_1_tmem_txt, + mol_1_pal, + { + mol_1_eye1_TA_tex_txt, + mol_1_eye2_TA_tex_txt, + mol_1_eye3_TA_tex_txt, + mol_1_eye4_TA_tex_txt, + mol_1_eye5_TA_tex_txt, + mol_1_eye6_TA_tex_txt, + mol_1_eye7_TA_tex_txt, + mol_1_eye8_TA_tex_txt, + }, + { + mol_1_mouth1_TA_tex_txt, + mol_1_mouth2_TA_tex_txt, + mol_1_mouth3_TA_tex_txt, + mol_1_mouth4_TA_tex_txt, + mol_1_mouth5_TA_tex_txt, + mol_1_mouth6_TA_tex_txt, + }, + 64, + 104, + 0, + }, + 0.008999999612569809, + 0, + 0, + 0, + 34, + 0, + 0, + 244, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_460, + ACTOR_OBJ_BANK_461, + &cKF_bs_r_mob_1, + { + mob_1_tmem_txt, + mob_1_pal, + { + mob_1_eye1_TA_tex_txt, + mob_1_eye2_TA_tex_txt, + mob_1_eye3_TA_tex_txt, + mob_1_eye4_TA_tex_txt, + mob_1_eye5_TA_tex_txt, + mob_1_eye6_TA_tex_txt, + mob_1_eye7_TA_tex_txt, + mob_1_eye8_TA_tex_txt, + }, + { + mob_1_mouth1_TA_tex_txt, + mob_1_mouth2_TA_tex_txt, + mob_1_mouth3_TA_tex_txt, + mob_1_mouth4_TA_tex_txt, + mob_1_mouth5_TA_tex_txt, + mob_1_mouth6_TA_tex_txt, + }, + 64, + 104, + 0, + }, + 0.009999999776482582, + 0, + 0, + 0, + 34, + 0, + 0, + 244, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_403, + ACTOR_OBJ_BANK_404, + &cKF_bs_r_ttl_1, + { + ttl_1_tmem_txt, + ttl_1_pal, + { + ttl_1_eye1_TA_tex_txt, + ttl_1_eye2_TA_tex_txt, + ttl_1_eye3_TA_tex_txt, + ttl_1_eye4_TA_tex_txt, + ttl_1_eye5_TA_tex_txt, + ttl_1_eye6_TA_tex_txt, + ttl_1_eye7_TA_tex_txt, + ttl_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 88, + 0, + 0, + }, + 0.009999999776482582, + 1, + 0, + 0, + 40, + 0, + 0, + 281, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_49, + ACTOR_OBJ_BANK_50, + &cKF_bs_r_mol_1, + { + mol_1_tmem_txt, + mol_1_pal, + { + mol_1_eye1_TA_tex_txt, + mol_1_eye2_TA_tex_txt, + mol_1_eye3_TA_tex_txt, + mol_1_eye4_TA_tex_txt, + mol_1_eye5_TA_tex_txt, + mol_1_eye6_TA_tex_txt, + mol_1_eye7_TA_tex_txt, + mol_1_eye8_TA_tex_txt, + }, + { + mol_1_mouth1_TA_tex_txt, + mol_1_mouth2_TA_tex_txt, + mol_1_mouth3_TA_tex_txt, + mol_1_mouth4_TA_tex_txt, + mol_1_mouth5_TA_tex_txt, + mol_1_mouth6_TA_tex_txt, + }, + 64, + 104, + 0, + }, + 0.008999999612569809, + 0, + 0, + 0, + 34, + 0, + 0, + 244, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_462, + ACTOR_OBJ_BANK_463, + &cKF_bs_r_mos_1, + { + mos_1_tmem_txt, + mos_1_pal, + { + mos_1_eye1_TA_tex_txt, + mos_1_eye2_TA_tex_txt, + mos_1_eye3_TA_tex_txt, + mos_1_eye4_TA_tex_txt, + mos_1_eye5_TA_tex_txt, + mos_1_eye6_TA_tex_txt, + mos_1_eye7_TA_tex_txt, + mos_1_eye8_TA_tex_txt, + }, + { + mos_1_mouth1_TA_tex_txt, + mos_1_mouth2_TA_tex_txt, + mos_1_mouth3_TA_tex_txt, + mos_1_mouth4_TA_tex_txt, + mos_1_mouth5_TA_tex_txt, + mos_1_mouth6_TA_tex_txt, + }, + 64, + 104, + 0, + }, + 0.009999999776482582, + 0, + 0, + 0, + 34, + 0, + 0, + 244, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_403, + ACTOR_OBJ_BANK_404, + &cKF_bs_r_ttl_1, + { + ttl_1_tmem_txt, + ttl_1_pal, + { + ttl_1_eye1_TA_tex_txt, + ttl_1_eye2_TA_tex_txt, + ttl_1_eye3_TA_tex_txt, + ttl_1_eye4_TA_tex_txt, + ttl_1_eye5_TA_tex_txt, + ttl_1_eye6_TA_tex_txt, + ttl_1_eye7_TA_tex_txt, + ttl_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 88, + 0, + 0, + }, + 0.009999999776482582, + 1, + 0, + 0, + 40, + 0, + 0, + 281, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_464, + ACTOR_OBJ_BANK_465, + &cKF_bs_r_tuk_1, + { + tuk_1_tmem_txt, + tuk_1_pal, + { + tuk_1_eye1_TA_tex_txt, + tuk_1_eye2_TA_tex_txt, + tuk_1_eye3_TA_tex_txt, + tuk_1_eye4_TA_tex_txt, + tuk_1_eye5_TA_tex_txt, + tuk_1_eye6_TA_tex_txt, + tuk_1_eye7_TA_tex_txt, + tuk_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 84, + 0, + 0, + }, + 0.012000000104308128, + 1, + 0, + 0, + 38, + 0, + 0, + 233, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_466, + ACTOR_OBJ_BANK_467, + &cKF_bs_r_hem_1, + { + hem_1_tmem_txt, + hem_1_pal, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 88, + 0, + 0, + }, + 0.007000000216066837, + 0, + 0, + 0, + 40, + 0, + 0, + 284, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, +}; diff --git a/tools/tmp.py b/tools/tmp.py new file mode 100644 index 00000000..eebd6b13 --- /dev/null +++ b/tools/tmp.py @@ -0,0 +1,5371 @@ +import sys +from ruamel.yaml import YAML +from ruamel.yaml.comments import CommentedSeq +from ruamel.yaml import scalarint +import re + +data_int = int("0x8064D500", 16) + +# def text_to_yaml(test_lines): +# yaml_dict = {} + +# for line in test_lines: +# parts = line.strip().split() +# if len(parts) != 3: +# continue + +# offset = parts[0] +# size = parts[1] +# name = parts[2] + +# offset_int = int(offset, 16) +# size_int = int(size, 16) +# addrs = CommentedSeq() +# addrs.fa.set_flow_style() +# addrs.append(scalarint.HexCapsInt(data_int + offset_int)) +# addrs.append(scalarint.HexCapsInt(data_int + offset_int + size_int)) + +# if name.endswith(("_tex", "_txt", "_pal")): +# key = f"npc/tex/{name}" +# elif name.endswith("_v"): +# key = f"npc/mdl/{name}" +# else: +# continue + +# yaml_dict[key] = {"addrs": addrs} + +# if name.endswith("_pal"): +# yaml_dict[key]["type"] = "pal16" +# elif name.endswith("_v"): +# yaml_dict[key]["type"] = "vtx" + +# yaml = YAML() +# yaml.default_flow_style = False +# output = yaml.dump(yaml_dict, sys.stdout) +# return output + +def text_to_yaml(test_lines): + yaml_dict = {} + current_tu = None + current_tu_path = None + current_tu_beg = 0 + current_tu_end = 0 + + for line in test_lines: + parts = line.strip().split() + if len(parts) != 3: + if current_tu != None: + addrs = CommentedSeq() + addrs.fa.set_flow_style() + addrs.append(scalarint.HexCapsInt(current_tu_beg)) + addrs.append(scalarint.HexCapsInt(current_tu_end)) + yaml_dict[current_tu_path] = {"addrs": addrs} + + current_tu = None + current_tu_beg = 0 + current_tu_end = 0 + continue + + offset = parts[0] + size = parts[1] + name = parts[2] + + offset_int = int(offset, 16) + size_int = int(size, 16) + + if current_tu == None: + # print(name, re.search("^(\w+_\d+)", name)) + current_tu = re.search("^(\w+_\d+)", name).group() + current_tu_beg = data_int + offset_int + if name.endswith(("_tex", "_txt", "_pal")): + current_tu_path = f"data/npc/tex/{name}.c" + elif name.endswith("_v"): + current_tu_path = f"data/npc/mdl/{name}.c" + + current_tu_end = data_int + offset_int + size_int + + if current_tu != None: + addrs = CommentedSeq() + addrs.fa.set_flow_style() + addrs.append(scalarint.HexCapsInt(current_tu_beg)) + addrs.append(scalarint.HexCapsInt(current_tu_end)) + yaml_dict[current_tu_path] = {"addrs": addrs} + + yaml = YAML() + yaml.default_flow_style = False + output = yaml.dump(yaml_dict, sys.stdout) + return output + +# Test lines +test_lines = [ +"00092ea0 001a50 bev_1_v", +"000948f0 000260 head_bev_model", +"00094b50 000088 Rarm2_bev_model", +"00094bd8 000078 Rarm1_bev_model", +"00094c50 000088 Larm2_bev_model", +"00094cd8 000078 Larm1_bev_model", +"00094d50 000110 chest_bev_model", +"00094e60 000078 tail1_bev_model", +"00094ed8 000088 tail2_bev_model", +"00094f60 000080 Rfoot2_bev_model", +"00094fe0 000058 Rfoot1_bev_model", +"00095038 000080 Lfoot2_bev_model", +"000950b8 000058 Lfoot1_bev_model", +"00095110 000080 base_bev_model", +"00095190 000138 cKF_je_r_bev_1_tbl", +"000952c8 000008 cKF_bs_r_bev_1", +"", +"000952e0 000020 bev_1_pal", +"00095300 000100 bev_1_eye1_TA_tex_txt", +"00095400 000100 bev_1_eye2_TA_tex_txt", +"00095500 000100 bev_1_eye3_TA_tex_txt", +"00095600 000100 bev_1_eye4_TA_tex_txt", +"00095700 000100 bev_1_eye5_TA_tex_txt", +"00095800 000100 bev_1_eye6_TA_tex_txt", +"00095900 000100 bev_1_eye7_TA_tex_txt", +"00095a00 000100 bev_1_eye8_TA_tex_txt", +"00095b00 000500 bev_1_tmem_txt", +"", +"00096338 001730 ant_1_v", +"00097a68 0001b0 head_ant_model", +"00097c18 000098 mouth_ant_model", +"00097cb0 000088 Rarm2_ant_model", +"00097d38 000078 Rarm1_ant_model", +"00097db0 000088 Larm2_ant_model", +"00097e38 000078 Larm1_ant_model", +"00097eb0 0000b0 chest_ant_model", +"00097f60 0000b0 tail1_ant_model", +"00098010 000080 Rfoot2_ant_model", +"00098090 0000a8 Rfoot1_ant_model", +"00098138 000080 Lfoot2_ant_model", +"000981b8 0000a8 Lfoot1_ant_model", +"00098260 000070 base_ant_model", +"000982d0 000138 cKF_je_r_ant_1_tbl", +"00098408 000008 cKF_bs_r_ant_1", +"", +"00098420 000020 ant_1_pal", +"00098440 000100 ant_1_eye1_TA_tex_txt", +"00098540 000100 ant_1_eye2_TA_tex_txt", +"00098640 000100 ant_1_eye3_TA_tex_txt", +"00098740 000100 ant_1_eye4_TA_tex_txt", +"00098840 000100 ant_1_eye5_TA_tex_txt", +"00098940 000100 ant_1_eye6_TA_tex_txt", +"00098a40 000100 ant_1_eye7_TA_tex_txt", +"00098b40 000100 ant_1_eye8_TA_tex_txt", +"00098c40 000500 ant_1_tmem_txt", +"", +"00099140 000020 ant_2_pal", +"00099160 000100 ant_2_eye1_TA_tex_txt", +"00099260 000100 ant_2_eye2_TA_tex_txt", +"00099360 000100 ant_2_eye3_TA_tex_txt", +"00099460 000100 ant_2_eye4_TA_tex_txt", +"00099560 000100 ant_2_eye5_TA_tex_txt", +"00099660 000100 ant_2_eye6_TA_tex_txt", +"00099760 000100 ant_2_eye7_TA_tex_txt", +"00099860 000100 ant_2_eye8_TA_tex_txt", +"00099960 000500 ant_2_tmem_txt", +"", +"00099e60 000020 ant_3_pal", +"00099e80 000100 ant_3_eye1_TA_tex_txt", +"00099f80 000100 ant_3_eye2_TA_tex_txt", +"0009a080 000100 ant_3_eye3_TA_tex_txt", +"0009a180 000100 ant_3_eye4_TA_tex_txt", +"0009a280 000100 ant_3_eye5_TA_tex_txt", +"0009a380 000100 ant_3_eye6_TA_tex_txt", +"0009a480 000100 ant_3_eye7_TA_tex_txt", +"0009a580 000100 ant_3_eye8_TA_tex_txt", +"0009a680 000500 ant_3_tmem_txt", +"", +"0009ab80 000020 ant_4_pal", +"0009aba0 000100 ant_4_eye1_TA_tex_txt", +"0009aca0 000100 ant_4_eye2_TA_tex_txt", +"0009ada0 000100 ant_4_eye3_TA_tex_txt", +"0009aea0 000100 ant_4_eye4_TA_tex_txt", +"0009afa0 000100 ant_4_eye5_TA_tex_txt", +"0009b0a0 000100 ant_4_eye6_TA_tex_txt", +"0009b1a0 000100 ant_4_eye7_TA_tex_txt", +"0009b2a0 000100 ant_4_eye8_TA_tex_txt", +"0009b3a0 000500 ant_4_tmem_txt", +"", +"0009b8a0 000020 ant_5_pal", +"0009b8c0 000100 ant_5_eye1_TA_tex_txt", +"0009b9c0 000100 ant_5_eye2_TA_tex_txt", +"0009bac0 000100 ant_5_eye3_TA_tex_txt", +"0009bbc0 000100 ant_5_eye4_TA_tex_txt", +"0009bcc0 000100 ant_5_eye5_TA_tex_txt", +"0009bdc0 000100 ant_5_eye6_TA_tex_txt", +"0009bec0 000100 ant_5_eye7_TA_tex_txt", +"0009bfc0 000100 ant_5_eye8_TA_tex_txt", +"0009c0c0 000500 ant_5_tmem_txt", +"", +"0009c5c0 001a50 wls_1_v", +"0009e010 0001a0 head_wls_model", +"0009e1b0 000060 mouth_wls_model", +"0009e210 0000e8 Rarm2_wls_model", +"0009e2f8 000078 Rarm1_wls_model", +"0009e370 000088 Larm2_wls_model", +"0009e3f8 000078 Larm1_wls_model", +"0009e470 000218 chest_wls_model", +"0009e688 000088 Rfoot3_wls_model", +"0009e710 000078 Rfoot2_wls_model", +"0009e788 000058 Rfoot1_wls_model", +"0009e7e0 000088 Lfoot3_wls_model", +"0009e868 000078 Lfoot2_wls_model", +"0009e8e0 000058 Lfoot1_wls_model", +"0009e938 000078 base_wls_model", +"0009e9b0 000138 cKF_je_r_wls_1_tbl", +"0009eae8 000008 cKF_bs_r_wls_1", +"", +"0009eb00 000020 wls_1_pal", +"0009eb20 000100 wls_1_eye1_TA_tex_txt", +"0009ec20 000100 wls_1_eye2_TA_tex_txt", +"0009ed20 000100 wls_1_eye3_TA_tex_txt", +"0009ee20 000100 wls_1_eye4_TA_tex_txt", +"0009ef20 000100 wls_1_eye5_TA_tex_txt", +"0009f020 000100 wls_1_eye6_TA_tex_txt", +"0009f120 000100 wls_1_eye7_TA_tex_txt", +"0009f220 000100 wls_1_eye8_TA_tex_txt", +"0009f320 000780 wls_1_tmem_txt", +"", +"000a1b78 001720 bea_1_v", +"000a3298 000158 head_bea_model", +"000a33f0 000080 Rarm2_bea_model", +"000a3470 000080 Rarm1_bea_model", +"000a34f0 000080 Larm2_bea_model", +"000a3570 000080 Larm1_bea_model", +"000a35f0 0000b8 chest_bea_model", +"000a36a8 000088 tail1_bea_model", +"000a3730 000088 Rfoot2_bea_model", +"000a37b8 000088 Rfoot1_bea_model", +"000a3840 000088 Lfoot2_bea_model", +"000a38c8 000088 Lfoot1_bea_model", +"000a3950 0000a0 base_bea_model", +"000a39f0 000138 cKF_je_r_bea_1_tbl", +"000a3b28 000008 cKF_bs_r_bea_1", +"", +"000a3b40 000020 bea_1_pal", +"000a3b60 000100 bea_1_eye1_TA_tex_txt", +"000a3c60 000100 bea_1_eye2_TA_tex_txt", +"000a3d60 000100 bea_1_eye3_TA_tex_txt", +"000a3e60 000100 bea_1_eye4_TA_tex_txt", +"000a3f60 000100 bea_1_eye5_TA_tex_txt", +"000a4060 000100 bea_1_eye6_TA_tex_txt", +"000a4160 000100 bea_1_eye7_TA_tex_txt", +"000a4260 000100 bea_1_eye8_TA_tex_txt", +"000a4360 000100 bea_1_mouth1_TA_tex_txt", +"000a4460 000100 bea_1_mouth2_TA_tex_txt", +"000a4560 000100 bea_1_mouth3_TA_tex_txt", +"000a4660 000100 bea_1_mouth4_TA_tex_txt", +"000a4760 000100 bea_1_mouth5_TA_tex_txt", +"000a4860 000100 bea_1_mouth6_TA_tex_txt", +"000a4960 000400 bea_1_tmem_txt", +"", +"000a4d60 000020 bea_2_pal", +"000a4d80 000100 bea_2_eye1_TA_tex_txt", +"000a4e80 000100 bea_2_eye2_TA_tex_txt", +"000a4f80 000100 bea_2_eye3_TA_tex_txt", +"000a5080 000100 bea_2_eye4_TA_tex_txt", +"000a5180 000100 bea_2_eye5_TA_tex_txt", +"000a5280 000100 bea_2_eye6_TA_tex_txt", +"000a5380 000100 bea_2_eye7_TA_tex_txt", +"000a5480 000100 bea_2_eye8_TA_tex_txt", +"000a5580 000100 bea_2_mouth1_TA_tex_txt", +"000a5680 000100 bea_2_mouth2_TA_tex_txt", +"000a5780 000100 bea_2_mouth3_TA_tex_txt", +"000a5880 000100 bea_2_mouth4_TA_tex_txt", +"000a5980 000100 bea_2_mouth5_TA_tex_txt", +"000a5a80 000100 bea_2_mouth6_TA_tex_txt", +"000a5b80 000400 bea_2_tmem_txt", +"", +"000a5f80 000020 bea_3_pal", +"000a5fa0 000100 bea_3_eye1_TA_tex_txt", +"000a60a0 000100 bea_3_eye2_TA_tex_txt", +"000a61a0 000100 bea_3_eye3_TA_tex_txt", +"000a62a0 000100 bea_3_eye4_TA_tex_txt", +"000a63a0 000100 bea_3_eye5_TA_tex_txt", +"000a64a0 000100 bea_3_eye6_TA_tex_txt", +"000a65a0 000100 bea_3_eye7_TA_tex_txt", +"000a66a0 000100 bea_3_eye8_TA_tex_txt", +"000a67a0 000100 bea_3_mouth1_TA_tex_txt", +"000a68a0 000100 bea_3_mouth2_TA_tex_txt", +"000a69a0 000100 bea_3_mouth3_TA_tex_txt", +"000a6aa0 000100 bea_3_mouth4_TA_tex_txt", +"000a6ba0 000100 bea_3_mouth5_TA_tex_txt", +"000a6ca0 000100 bea_3_mouth6_TA_tex_txt", +"000a6da0 000400 bea_3_tmem_txt", +"", +"000a71a0 000020 bea_5_pal", +"000a71c0 000100 bea_5_eye1_TA_tex_txt", +"000a72c0 000100 bea_5_eye2_TA_tex_txt", +"000a73c0 000100 bea_5_eye3_TA_tex_txt", +"000a74c0 000100 bea_5_eye4_TA_tex_txt", +"000a75c0 000100 bea_5_eye5_TA_tex_txt", +"000a76c0 000100 bea_5_eye6_TA_tex_txt", +"000a77c0 000100 bea_5_eye7_TA_tex_txt", +"000a78c0 000100 bea_5_eye8_TA_tex_txt", +"000a79c0 000100 bea_5_mouth1_TA_tex_txt", +"000a7ac0 000100 bea_5_mouth2_TA_tex_txt", +"000a7bc0 000100 bea_5_mouth3_TA_tex_txt", +"000a7cc0 000100 bea_5_mouth4_TA_tex_txt", +"000a7dc0 000100 bea_5_mouth5_TA_tex_txt", +"000a7ec0 000100 bea_5_mouth6_TA_tex_txt", +"000a7fc0 000400 bea_5_tmem_txt", +"", +"000a83c0 000020 bea_6_pal", +"000a83e0 000100 bea_6_eye1_TA_tex_txt", +"000a84e0 000100 bea_6_eye2_TA_tex_txt", +"000a85e0 000100 bea_6_eye3_TA_tex_txt", +"000a86e0 000100 bea_6_eye4_TA_tex_txt", +"000a87e0 000100 bea_6_eye5_TA_tex_txt", +"000a88e0 000100 bea_6_eye6_TA_tex_txt", +"000a89e0 000100 bea_6_eye7_TA_tex_txt", +"000a8ae0 000100 bea_6_eye8_TA_tex_txt", +"000a8be0 000100 bea_6_mouth1_TA_tex_txt", +"000a8ce0 000100 bea_6_mouth2_TA_tex_txt", +"000a8de0 000100 bea_6_mouth3_TA_tex_txt", +"000a8ee0 000100 bea_6_mouth4_TA_tex_txt", +"000a8fe0 000100 bea_6_mouth5_TA_tex_txt", +"000a90e0 000100 bea_6_mouth6_TA_tex_txt", +"000a91e0 000400 bea_6_tmem_txt", +"", +"000a95e0 000020 bea_7_pal", +"000a9600 000100 bea_7_eye1_TA_tex_txt", +"000a9700 000100 bea_7_eye2_TA_tex_txt", +"000a9800 000100 bea_7_eye3_TA_tex_txt", +"000a9900 000100 bea_7_eye4_TA_tex_txt", +"000a9a00 000100 bea_7_eye5_TA_tex_txt", +"000a9b00 000100 bea_7_eye6_TA_tex_txt", +"000a9c00 000100 bea_7_eye7_TA_tex_txt", +"000a9d00 000100 bea_7_eye8_TA_tex_txt", +"000a9e00 000100 bea_7_mouth1_TA_tex_txt", +"000a9f00 000100 bea_7_mouth2_TA_tex_txt", +"000aa000 000100 bea_7_mouth3_TA_tex_txt", +"000aa100 000100 bea_7_mouth4_TA_tex_txt", +"000aa200 000100 bea_7_mouth5_TA_tex_txt", +"000aa300 000100 bea_7_mouth6_TA_tex_txt", +"000aa400 000400 bea_7_tmem_txt", +"", +"000aa800 000020 bea_8_pal", +"000aa820 000100 bea_8_eye1_TA_tex_txt", +"000aa920 000100 bea_8_eye2_TA_tex_txt", +"000aaa20 000100 bea_8_eye3_TA_tex_txt", +"000aab20 000100 bea_8_eye4_TA_tex_txt", +"000aac20 000100 bea_8_eye5_TA_tex_txt", +"000aad20 000100 bea_8_eye6_TA_tex_txt", +"000aae20 000100 bea_8_eye7_TA_tex_txt", +"000aaf20 000100 bea_8_eye8_TA_tex_txt", +"000ab020 000100 bea_8_mouth1_TA_tex_txt", +"000ab120 000100 bea_8_mouth2_TA_tex_txt", +"000ab220 000100 bea_8_mouth3_TA_tex_txt", +"000ab320 000100 bea_8_mouth4_TA_tex_txt", +"000ab420 000100 bea_8_mouth5_TA_tex_txt", +"000ab520 000100 bea_8_mouth6_TA_tex_txt", +"000ab620 000400 bea_8_tmem_txt", +"", +"000aba20 000020 bea_9_pal", +"000aba40 000100 bea_9_eye1_TA_tex_txt", +"000abb40 000100 bea_9_eye2_TA_tex_txt", +"000abc40 000100 bea_9_eye3_TA_tex_txt", +"000abd40 000100 bea_9_eye4_TA_tex_txt", +"000abe40 000100 bea_9_eye5_TA_tex_txt", +"000abf40 000100 bea_9_eye6_TA_tex_txt", +"000ac040 000100 bea_9_eye7_TA_tex_txt", +"000ac140 000100 bea_9_eye8_TA_tex_txt", +"000ac240 000100 bea_9_mouth1_TA_tex_txt", +"000ac340 000100 bea_9_mouth2_TA_tex_txt", +"000ac440 000100 bea_9_mouth3_TA_tex_txt", +"000ac540 000100 bea_9_mouth4_TA_tex_txt", +"000ac640 000100 bea_9_mouth5_TA_tex_txt", +"000ac740 000100 bea_9_mouth6_TA_tex_txt", +"000ac840 000400 bea_9_tmem_txt", +"", +"000acc40 000020 bea_10_pal", +"000acc60 000100 bea_10_eye1_TA_tex_txt", +"000acd60 000100 bea_10_eye2_TA_tex_txt", +"000ace60 000100 bea_10_eye3_TA_tex_txt", +"000acf60 000100 bea_10_eye4_TA_tex_txt", +"000ad060 000100 bea_10_eye5_TA_tex_txt", +"000ad160 000100 bea_10_eye6_TA_tex_txt", +"000ad260 000100 bea_10_eye7_TA_tex_txt", +"000ad360 000100 bea_10_eye8_TA_tex_txt", +"000ad460 000100 bea_10_mouth1_TA_tex_txt", +"000ad560 000100 bea_10_mouth2_TA_tex_txt", +"000ad660 000100 bea_10_mouth3_TA_tex_txt", +"000ad760 000100 bea_10_mouth4_TA_tex_txt", +"000ad860 000100 bea_10_mouth5_TA_tex_txt", +"000ad960 000100 bea_10_mouth6_TA_tex_txt", +"000ada60 000400 bea_10_tmem_txt", +"", +"00120aa8 001740 pbr_1_v", +"001221e8 0001c8 head_pbr_model", +"001223b0 000080 mouth_pbr_model", +"00122430 000080 Rarm2_pbr_model", +"001224b0 000078 Rarm1_pbr_model", +"00122528 000080 Larm2_pbr_model", +"001225a8 000078 Larm1_pbr_model", +"00122620 0000d8 chest_pbr_model", +"001226f8 0000b0 tail1_pbr_model", +"001227a8 0000b0 Rfoot3_pbr_model", +"00122858 000080 Rfoot2_pbr_model", +"001228d8 000058 Rfoot1_pbr_model", +"00122930 0000b0 Lfoot3_pbr_model", +"001229e0 000080 Lfoot2_pbr_model", +"00122a60 000058 Lfoot1_pbr_model", +"00122ab8 000080 base_pbr_model", +"00122b38 000138 cKF_je_r_pbr_1_tbl", +"00122c70 000008 cKF_bs_r_pbr_1", +"", +"00122c80 000020 pbr_1_pal", +"00122ca0 000100 pbr_1_eye1_TA_tex_txt", +"00122da0 000100 pbr_1_eye2_TA_tex_txt", +"00122ea0 000100 pbr_1_eye3_TA_tex_txt", +"00122fa0 000100 pbr_1_eye4_TA_tex_txt", +"001230a0 000100 pbr_1_eye5_TA_tex_txt", +"001231a0 000100 pbr_1_eye6_TA_tex_txt", +"001232a0 000100 pbr_1_eye7_TA_tex_txt", +"001233a0 000100 pbr_1_eye8_TA_tex_txt", +"001234a0 000500 pbr_1_tmem_txt", +"", +"001239a0 000020 pbr_2_pal", +"001239c0 000100 pbr_2_eye1_TA_tex_txt", +"00123ac0 000100 pbr_2_eye2_TA_tex_txt", +"00123bc0 000100 pbr_2_eye3_TA_tex_txt", +"00123cc0 000100 pbr_2_eye4_TA_tex_txt", +"00123dc0 000100 pbr_2_eye5_TA_tex_txt", +"00123ec0 000100 pbr_2_eye6_TA_tex_txt", +"00123fc0 000100 pbr_2_eye7_TA_tex_txt", +"001240c0 000100 pbr_2_eye8_TA_tex_txt", +"001241c0 000500 pbr_2_tmem_txt", +"", +"001246c0 000020 pbr_3_pal", +"001246e0 000100 pbr_3_eye1_TA_tex_txt", +"001247e0 000100 pbr_3_eye2_TA_tex_txt", +"001248e0 000100 pbr_3_eye3_TA_tex_txt", +"001249e0 000100 pbr_3_eye4_TA_tex_txt", +"00124ae0 000100 pbr_3_eye5_TA_tex_txt", +"00124be0 000100 pbr_3_eye6_TA_tex_txt", +"00124ce0 000100 pbr_3_eye7_TA_tex_txt", +"00124de0 000100 pbr_3_eye8_TA_tex_txt", +"00124ee0 000500 pbr_3_tmem_txt", +"", +"001253e0 000020 pbr_4_pal", +"00125400 000100 pbr_4_eye1_TA_tex_txt", +"00125500 000100 pbr_4_eye2_TA_tex_txt", +"00125600 000100 pbr_4_eye3_TA_tex_txt", +"00125700 000100 pbr_4_eye4_TA_tex_txt", +"00125800 000100 pbr_4_eye5_TA_tex_txt", +"00125900 000100 pbr_4_eye6_TA_tex_txt", +"00125a00 000100 pbr_4_eye7_TA_tex_txt", +"00125b00 000100 pbr_4_eye8_TA_tex_txt", +"00125c00 000500 pbr_4_tmem_txt", +"", +"00126100 000020 pbr_5_pal", +"00126120 000100 pbr_5_eye1_TA_tex_txt", +"00126220 000100 pbr_5_eye2_TA_tex_txt", +"00126320 000100 pbr_5_eye3_TA_tex_txt", +"00126420 000100 pbr_5_eye4_TA_tex_txt", +"00126520 000100 pbr_5_eye5_TA_tex_txt", +"00126620 000100 pbr_5_eye6_TA_tex_txt", +"00126720 000100 pbr_5_eye7_TA_tex_txt", +"00126820 000100 pbr_5_eye8_TA_tex_txt", +"00126920 000500 pbr_5_tmem_txt", +"", +"00126e20 001600 brd_1_v", +"00128420 000180 head_brd_model", +"001285a0 000078 mouth_brd_model", +"00128618 000080 Rarm2_brd_model", +"00128698 000078 Rarm1_brd_model", +"00128710 000080 Larm2_brd_model", +"00128790 000078 Larm1_brd_model", +"00128808 0000c8 chest_brd_model", +"001288d0 0000d0 tail1_brd_model", +"001289a0 0000a0 Rfoot3_brd_model", +"00128a40 000080 Rfoot2_brd_model", +"00128ac0 000058 Rfoot1_brd_model", +"00128b18 0000a0 Lfoot3_brd_model", +"00128bb8 000080 Lfoot2_brd_model", +"00128c38 000058 Lfoot1_brd_model", +"00128c90 000088 base_brd_model", +"00128d18 000138 cKF_je_r_brd_1_tbl", +"00128e50 000008 cKF_bs_r_brd_1", +"", +"00128e60 000020 brd_1_pal", +"00128e80 000100 brd_1_eye1_TA_tex_txt", +"00128f80 000100 brd_1_eye2_TA_tex_txt", +"00129080 000100 brd_1_eye3_TA_tex_txt", +"00129180 000100 brd_1_eye4_TA_tex_txt", +"00129280 000100 brd_1_eye5_TA_tex_txt", +"00129380 000100 brd_1_eye6_TA_tex_txt", +"00129480 000100 brd_1_eye7_TA_tex_txt", +"00129580 000100 brd_1_eye8_TA_tex_txt", +"00129680 000500 brd_1_tmem_txt", +"", +"00129b80 000020 brd_2_pal", +"00129ba0 000100 brd_2_eye1_TA_tex_txt", +"00129ca0 000100 brd_2_eye2_TA_tex_txt", +"00129da0 000100 brd_2_eye3_TA_tex_txt", +"00129ea0 000100 brd_2_eye4_TA_tex_txt", +"00129fa0 000100 brd_2_eye5_TA_tex_txt", +"0012a0a0 000100 brd_2_eye6_TA_tex_txt", +"0012a1a0 000100 brd_2_eye7_TA_tex_txt", +"0012a2a0 000100 brd_2_eye8_TA_tex_txt", +"0012a3a0 000500 brd_2_tmem_txt", +"", +"0012a8a0 000020 brd_11_pal", +"0012a8c0 000100 brd_11_eye1_TA_tex_txt", +"0012a9c0 000100 brd_11_eye2_TA_tex_txt", +"0012aac0 000100 brd_11_eye3_TA_tex_txt", +"0012abc0 000100 brd_11_eye4_TA_tex_txt", +"0012acc0 000100 brd_11_eye5_TA_tex_txt", +"0012adc0 000100 brd_11_eye6_TA_tex_txt", +"0012aec0 000100 brd_11_eye7_TA_tex_txt", +"0012afc0 000100 brd_11_eye8_TA_tex_txt", +"0012b0c0 000500 brd_11_tmem_txt", +"", +"0012b5c0 000020 brd_3_pal", +"0012b5e0 000100 brd_3_eye1_TA_tex_txt", +"0012b6e0 000100 brd_3_eye2_TA_tex_txt", +"0012b7e0 000100 brd_3_eye3_TA_tex_txt", +"0012b8e0 000100 brd_3_eye4_TA_tex_txt", +"0012b9e0 000100 brd_3_eye5_TA_tex_txt", +"0012bae0 000100 brd_3_eye6_TA_tex_txt", +"0012bbe0 000100 brd_3_eye7_TA_tex_txt", +"0012bce0 000100 brd_3_eye8_TA_tex_txt", +"0012bde0 000500 brd_3_tmem_txt", +"", +"0012c2e0 000020 brd_4_pal", +"0012c300 000100 brd_4_eye1_TA_tex_txt", +"0012c400 000100 brd_4_eye2_TA_tex_txt", +"0012c500 000100 brd_4_eye3_TA_tex_txt", +"0012c600 000100 brd_4_eye4_TA_tex_txt", +"0012c700 000100 brd_4_eye5_TA_tex_txt", +"0012c800 000100 brd_4_eye6_TA_tex_txt", +"0012c900 000100 brd_4_eye7_TA_tex_txt", +"0012ca00 000100 brd_4_eye8_TA_tex_txt", +"0012cb00 000500 brd_4_tmem_txt", +"", +"0012d000 000020 brd_5_pal", +"0012d020 000100 brd_5_eye1_TA_tex_txt", +"0012d120 000100 brd_5_eye2_TA_tex_txt", +"0012d220 000100 brd_5_eye3_TA_tex_txt", +"0012d320 000100 brd_5_eye4_TA_tex_txt", +"0012d420 000100 brd_5_eye5_TA_tex_txt", +"0012d520 000100 brd_5_eye6_TA_tex_txt", +"0012d620 000100 brd_5_eye7_TA_tex_txt", +"0012d720 000100 brd_5_eye8_TA_tex_txt", +"0012d820 000500 brd_5_tmem_txt", +"", +"0012dd20 000020 brd_6_pal", +"0012dd40 000100 brd_6_eye1_TA_tex_txt", +"0012de40 000100 brd_6_eye2_TA_tex_txt", +"0012df40 000100 brd_6_eye3_TA_tex_txt", +"0012e040 000100 brd_6_eye4_TA_tex_txt", +"0012e140 000100 brd_6_eye5_TA_tex_txt", +"0012e240 000100 brd_6_eye6_TA_tex_txt", +"0012e340 000100 brd_6_eye7_TA_tex_txt", +"0012e440 000100 brd_6_eye8_TA_tex_txt", +"0012e540 000500 brd_6_tmem_txt", +"", +"0012ea40 000020 brd_7_pal", +"0012ea60 000100 brd_7_eye1_TA_tex_txt", +"0012eb60 000100 brd_7_eye2_TA_tex_txt", +"0012ec60 000100 brd_7_eye3_TA_tex_txt", +"0012ed60 000100 brd_7_eye4_TA_tex_txt", +"0012ee60 000100 brd_7_eye5_TA_tex_txt", +"0012ef60 000100 brd_7_eye6_TA_tex_txt", +"0012f060 000100 brd_7_eye7_TA_tex_txt", +"0012f160 000100 brd_7_eye8_TA_tex_txt", +"0012f260 000500 brd_7_tmem_txt", +"", +"0012f760 000020 brd_8_pal", +"0012f780 000100 brd_8_eye1_TA_tex_txt", +"0012f880 000100 brd_8_eye2_TA_tex_txt", +"0012f980 000100 brd_8_eye3_TA_tex_txt", +"0012fa80 000100 brd_8_eye4_TA_tex_txt", +"0012fb80 000100 brd_8_eye5_TA_tex_txt", +"0012fc80 000100 brd_8_eye6_TA_tex_txt", +"0012fd80 000100 brd_8_eye7_TA_tex_txt", +"0012fe80 000100 brd_8_eye8_TA_tex_txt", +"0012ff80 000500 brd_8_tmem_txt", +"", +"00130480 000020 brd_9_pal", +"001304a0 000100 brd_9_eye1_TA_tex_txt", +"001305a0 000100 brd_9_eye2_TA_tex_txt", +"001306a0 000100 brd_9_eye3_TA_tex_txt", +"001307a0 000100 brd_9_eye4_TA_tex_txt", +"001308a0 000100 brd_9_eye5_TA_tex_txt", +"001309a0 000100 brd_9_eye6_TA_tex_txt", +"00130aa0 000100 brd_9_eye7_TA_tex_txt", +"00130ba0 000100 brd_9_eye8_TA_tex_txt", +"00130ca0 000500 brd_9_tmem_txt", +"", +"001311a0 000020 brd_10_pal", +"001311c0 000100 brd_10_eye1_TA_tex_txt", +"001312c0 000100 brd_10_eye2_TA_tex_txt", +"001313c0 000100 brd_10_eye3_TA_tex_txt", +"001314c0 000100 brd_10_eye4_TA_tex_txt", +"001315c0 000100 brd_10_eye5_TA_tex_txt", +"001316c0 000100 brd_10_eye6_TA_tex_txt", +"001317c0 000100 brd_10_eye7_TA_tex_txt", +"001318c0 000100 brd_10_eye8_TA_tex_txt", +"001319c0 000500 brd_10_tmem_txt", +"", +"00188ae8 001700 fox_1_v", +"0018a1e8 000130 head_fox_model", +"0018a318 000088 mouth_fox_model", +"0018a3a0 000088 Rarm2_fox_model", +"0018a428 000078 Rarm1_fox_model", +"0018a4a0 000088 Larm2_fox_model", +"0018a528 000078 Larm1_fox_model", +"0018a5a0 000108 chest_fox_model", +"0018a6a8 000078 tail1_fox_model", +"0018a720 0000b8 tail2_fox_model", +"0018a7d8 000080 Rfoot2_fox_model", +"0018a858 000058 Rfoot1_fox_model", +"0018a8b0 000080 Lfoot2_fox_model", +"0018a930 000058 Lfoot1_fox_model", +"0018a988 0000d0 base_fox_model", +"0018aa58 000138 cKF_je_r_fox_1_tbl", +"0018ab90 000008 cKF_bs_r_fox_1", +"", +"0018aba0 000020 fox_1_pal", +"0018abc0 000100 fox_1_eye1_TA_tex_txt", +"0018acc0 000100 fox_1_eye2_TA_tex_txt", +"0018adc0 000100 fox_1_eye3_TA_tex_txt", +"0018aec0 000100 fox_1_eye4_TA_tex_txt", +"0018afc0 000100 fox_1_eye5_TA_tex_txt", +"0018b0c0 000100 fox_1_eye6_TA_tex_txt", +"0018b1c0 000100 fox_1_eye7_TA_tex_txt", +"0018b2c0 000100 fox_1_eye8_TA_tex_txt", +"0018b3c0 000700 fox_1_tmem_txt", +"", +"0018bac0 001680 bul_1_v", +"0018d140 000208 head_bul_model", +"0018d348 000088 Rarm2_bul_model", +"0018d3d0 000078 Rarm1_bul_model", +"0018d448 000088 Larm2_bul_model", +"0018d4d0 000078 Larm1_bul_model", +"0018d548 0000a0 chest_bul_model", +"0018d5e8 000060 tail1_bul_model", +"0018d648 000090 tail2_bul_model", +"0018d6d8 000080 Rfoot2_bul_model", +"0018d758 000080 Rfoot1_bul_model", +"0018d7d8 000080 Lfoot2_bul_model", +"0018d858 000080 Lfoot1_bul_model", +"0018d8d8 000098 base_bul_model", +"0018d970 000138 cKF_je_r_bul_1_tbl", +"0018daa8 000008 cKF_bs_r_bul_1", +"", +"0018dac0 000020 bul_1_pal", +"0018dae0 000100 bul_1_eye1_TA_tex_txt", +"0018dbe0 000100 bul_1_eye2_TA_tex_txt", +"0018dce0 000100 bul_1_eye3_TA_tex_txt", +"0018dde0 000100 bul_1_eye4_TA_tex_txt", +"0018dee0 000100 bul_1_eye5_TA_tex_txt", +"0018dfe0 000100 bul_1_eye6_TA_tex_txt", +"0018e0e0 000100 bul_1_eye7_TA_tex_txt", +"0018e1e0 000100 bul_1_eye8_TA_tex_txt", +"0018e2e0 000100 bul_1_mouth1_TA_tex_txt", +"0018e3e0 000100 bul_1_mouth2_TA_tex_txt", +"0018e4e0 000100 bul_1_mouth3_TA_tex_txt", +"0018e5e0 000100 bul_1_mouth4_TA_tex_txt", +"0018e6e0 000100 bul_1_mouth5_TA_tex_txt", +"0018e7e0 000100 bul_1_mouth6_TA_tex_txt", +"0018e8e0 000400 bul_1_tmem_txt", +"", +"0018ece0 000020 bul_2_pal", +"0018ed00 000100 bul_2_eye1_TA_tex_txt", +"0018ee00 000100 bul_2_eye2_TA_tex_txt", +"0018ef00 000100 bul_2_eye3_TA_tex_txt", +"0018f000 000100 bul_2_eye4_TA_tex_txt", +"0018f100 000100 bul_2_eye5_TA_tex_txt", +"0018f200 000100 bul_2_eye6_TA_tex_txt", +"0018f300 000100 bul_2_eye7_TA_tex_txt", +"0018f400 000100 bul_2_eye8_TA_tex_txt", +"0018f500 000100 bul_2_mouth1_TA_tex_txt", +"0018f600 000100 bul_2_mouth2_TA_tex_txt", +"0018f700 000100 bul_2_mouth3_TA_tex_txt", +"0018f800 000100 bul_2_mouth4_TA_tex_txt", +"0018f900 000100 bul_2_mouth5_TA_tex_txt", +"0018fa00 000100 bul_2_mouth6_TA_tex_txt", +"0018fb00 000400 bul_2_tmem_txt", +"", +"0018ff00 000020 bul_3_pal", +"0018ff20 000100 bul_3_eye1_TA_tex_txt", +"00190020 000100 bul_3_eye2_TA_tex_txt", +"00190120 000100 bul_3_eye3_TA_tex_txt", +"00190220 000100 bul_3_eye4_TA_tex_txt", +"00190320 000100 bul_3_eye5_TA_tex_txt", +"00190420 000100 bul_3_eye6_TA_tex_txt", +"00190520 000100 bul_3_eye7_TA_tex_txt", +"00190620 000100 bul_3_eye8_TA_tex_txt", +"00190720 000100 bul_3_mouth1_TA_tex_txt", +"00190820 000100 bul_3_mouth2_TA_tex_txt", +"00190920 000100 bul_3_mouth3_TA_tex_txt", +"00190a20 000100 bul_3_mouth4_TA_tex_txt", +"00190b20 000100 bul_3_mouth5_TA_tex_txt", +"00190c20 000100 bul_3_mouth6_TA_tex_txt", +"00190d20 000400 bul_3_tmem_txt", +"", +"00191120 000020 bul_4_pal", +"00191140 000100 bul_4_eye1_TA_tex_txt", +"00191240 000100 bul_4_eye2_TA_tex_txt", +"00191340 000100 bul_4_eye3_TA_tex_txt", +"00191440 000100 bul_4_eye4_TA_tex_txt", +"00191540 000100 bul_4_eye5_TA_tex_txt", +"00191640 000100 bul_4_eye6_TA_tex_txt", +"00191740 000100 bul_4_eye7_TA_tex_txt", +"00191840 000100 bul_4_eye8_TA_tex_txt", +"00191940 000100 bul_4_mouth1_TA_tex_txt", +"00191a40 000100 bul_4_mouth2_TA_tex_txt", +"00191b40 000100 bul_4_mouth3_TA_tex_txt", +"00191c40 000100 bul_4_mouth4_TA_tex_txt", +"00191d40 000100 bul_4_mouth5_TA_tex_txt", +"00191e40 000100 bul_4_mouth6_TA_tex_txt", +"00191f40 000400 bul_4_tmem_txt", +"", +"00192340 001c30 cml_1_v", +"00193f70 0001c0 head_cml_model", +"00194130 0000c0 mouth_cml_model", +"001941f0 000088 Rarm2_cml_model", +"00194278 000078 Rarm1_cml_model", +"001942f0 000088 Larm2_cml_model", +"00194378 000078 Larm1_cml_model", +"001943f0 000250 chest_cml_model", +"00194640 000080 Rfoot2_cml_model", +"001946c0 000058 Rfoot1_cml_model", +"00194718 000080 Lfoot2_cml_model", +"00194798 000058 Lfoot1_cml_model", +"001947f0 000078 base_cml_model", +"00194868 000138 cKF_je_r_cml_1_tbl", +"001949a0 000008 cKF_bs_r_cml_1", +"", +"001949c0 000020 cml_1_pal", +"001949e0 000100 cml_1_eye1_TA_tex_txt", +"00194ae0 000100 cml_1_eye2_TA_tex_txt", +"00194be0 000100 cml_1_eye3_TA_tex_txt", +"00194ce0 000100 cml_1_eye4_TA_tex_txt", +"00194de0 000100 cml_1_eye5_TA_tex_txt", +"00194ee0 000100 cml_1_eye6_TA_tex_txt", +"00194fe0 000100 cml_1_eye7_TA_tex_txt", +"001950e0 000100 cml_1_eye8_TA_tex_txt", +"001951e0 000780 cml_1_tmem_txt", +"", +"00195960 001430 cat_1_v", +"00196d90 000158 head_cat_model", +"00196ee8 000088 Rarm2_cat_model", +"00196f70 000078 Rarm1_cat_model", +"00196fe8 000088 Larm2_cat_model", +"00197070 000078 Larm1_cat_model", +"001970e8 000090 chest_cat_model", +"00197178 000058 tail1_cat_model", +"001971d0 000090 tail2_cat_model", +"00197260 000090 Rfoot2_cat_model", +"001972f0 0000c0 Rfoot1_cat_model", +"001973b0 000090 Lfoot2_cat_model", +"00197440 0000c0 Lfoot1_cat_model", +"00197500 000070 base_cat_model", +"00197570 000138 cKF_je_r_cat_1_tbl", +"001976a8 000008 cKF_bs_r_cat_1", +"", +"001976c0 000020 cat_1_pal", +"001976e0 000100 cat_1_eye1_TA_tex_txt", +"001977e0 000100 cat_1_eye2_TA_tex_txt", +"001978e0 000100 cat_1_eye3_TA_tex_txt", +"001979e0 000100 cat_1_eye4_TA_tex_txt", +"00197ae0 000100 cat_1_eye5_TA_tex_txt", +"00197be0 000100 cat_1_eye6_TA_tex_txt", +"00197ce0 000100 cat_1_eye7_TA_tex_txt", +"00197de0 000100 cat_1_eye8_TA_tex_txt", +"00197ee0 000100 cat_1_mouth1_TA_tex_txt", +"00197fe0 000100 cat_1_mouth2_TA_tex_txt", +"001980e0 000100 cat_1_mouth3_TA_tex_txt", +"001981e0 000100 cat_1_mouth4_TA_tex_txt", +"001982e0 000100 cat_1_mouth5_TA_tex_txt", +"001983e0 000100 cat_1_mouth6_TA_tex_txt", +"001984e0 000400 cat_1_tmem_txt", +"", +"001988e0 000020 cat_2_pal", +"00198900 000100 cat_2_eye1_TA_tex_txt", +"00198a00 000100 cat_2_eye2_TA_tex_txt", +"00198b00 000100 cat_2_eye3_TA_tex_txt", +"00198c00 000100 cat_2_eye4_TA_tex_txt", +"00198d00 000100 cat_2_eye5_TA_tex_txt", +"00198e00 000100 cat_2_eye6_TA_tex_txt", +"00198f00 000100 cat_2_eye7_TA_tex_txt", +"00199000 000100 cat_2_eye8_TA_tex_txt", +"00199100 000100 cat_2_mouth1_TA_tex_txt", +"00199200 000100 cat_2_mouth2_TA_tex_txt", +"00199300 000100 cat_2_mouth3_TA_tex_txt", +"00199400 000100 cat_2_mouth4_TA_tex_txt", +"00199500 000100 cat_2_mouth5_TA_tex_txt", +"00199600 000100 cat_2_mouth6_TA_tex_txt", +"00199700 000400 cat_2_tmem_txt", +"", +"00199b00 000020 cat_11_pal", +"00199b20 000100 cat_11_eye1_TA_tex_txt", +"00199c20 000100 cat_11_eye2_TA_tex_txt", +"00199d20 000100 cat_11_eye3_TA_tex_txt", +"00199e20 000100 cat_11_eye4_TA_tex_txt", +"00199f20 000100 cat_11_eye5_TA_tex_txt", +"0019a020 000100 cat_11_eye6_TA_tex_txt", +"0019a120 000100 cat_11_eye7_TA_tex_txt", +"0019a220 000100 cat_11_eye8_TA_tex_txt", +"0019a320 000100 cat_11_mouth1_TA_tex_txt", +"0019a420 000100 cat_11_mouth2_TA_tex_txt", +"0019a520 000100 cat_11_mouth3_TA_tex_txt", +"0019a620 000100 cat_11_mouth4_TA_tex_txt", +"0019a720 000100 cat_11_mouth5_TA_tex_txt", +"0019a820 000100 cat_11_mouth6_TA_tex_txt", +"0019a920 000400 cat_11_tmem_txt", +"", +"0019ad20 000020 cat_12_pal", +"0019ad40 000100 cat_12_eye1_TA_tex_txt", +"0019ae40 000100 cat_12_eye2_TA_tex_txt", +"0019af40 000100 cat_12_eye3_TA_tex_txt", +"0019b040 000100 cat_12_eye4_TA_tex_txt", +"0019b140 000100 cat_12_eye5_TA_tex_txt", +"0019b240 000100 cat_12_eye6_TA_tex_txt", +"0019b340 000100 cat_12_eye7_TA_tex_txt", +"0019b440 000100 cat_12_eye8_TA_tex_txt", +"0019b540 000100 cat_12_mouth1_TA_tex_txt", +"0019b640 000100 cat_12_mouth2_TA_tex_txt", +"0019b740 000100 cat_12_mouth3_TA_tex_txt", +"0019b840 000100 cat_12_mouth4_TA_tex_txt", +"0019b940 000100 cat_12_mouth5_TA_tex_txt", +"0019ba40 000100 cat_12_mouth6_TA_tex_txt", +"0019bb40 000400 cat_12_tmem_txt", +"", +"0019bf40 000020 cat_13_pal", +"0019bf60 000100 cat_13_eye1_TA_tex_txt", +"0019c060 000100 cat_13_eye2_TA_tex_txt", +"0019c160 000100 cat_13_eye3_TA_tex_txt", +"0019c260 000100 cat_13_eye4_TA_tex_txt", +"0019c360 000100 cat_13_eye5_TA_tex_txt", +"0019c460 000100 cat_13_eye6_TA_tex_txt", +"0019c560 000100 cat_13_eye7_TA_tex_txt", +"0019c660 000100 cat_13_eye8_TA_tex_txt", +"0019c760 000100 cat_13_mouth1_TA_tex_txt", +"0019c860 000100 cat_13_mouth2_TA_tex_txt", +"0019c960 000100 cat_13_mouth3_TA_tex_txt", +"0019ca60 000100 cat_13_mouth4_TA_tex_txt", +"0019cb60 000100 cat_13_mouth5_TA_tex_txt", +"0019cc60 000100 cat_13_mouth6_TA_tex_txt", +"0019cd60 000400 cat_13_tmem_txt", +"", +"0019d160 000020 cat_14_pal", +"0019d180 000100 cat_14_eye1_TA_tex_txt", +"0019d280 000100 cat_14_eye2_TA_tex_txt", +"0019d380 000100 cat_14_eye3_TA_tex_txt", +"0019d480 000100 cat_14_eye4_TA_tex_txt", +"0019d580 000100 cat_14_eye5_TA_tex_txt", +"0019d680 000100 cat_14_eye6_TA_tex_txt", +"0019d780 000100 cat_14_eye7_TA_tex_txt", +"0019d880 000100 cat_14_eye8_TA_tex_txt", +"0019d980 000100 cat_14_mouth1_TA_tex_txt", +"0019da80 000100 cat_14_mouth2_TA_tex_txt", +"0019db80 000100 cat_14_mouth3_TA_tex_txt", +"0019dc80 000100 cat_14_mouth4_TA_tex_txt", +"0019dd80 000100 cat_14_mouth5_TA_tex_txt", +"0019de80 000100 cat_14_mouth6_TA_tex_txt", +"0019df80 000400 cat_14_tmem_txt", +"", +"0019e380 000020 cat_15_pal", +"0019e3a0 000100 cat_15_eye1_TA_tex_txt", +"0019e4a0 000100 cat_15_eye2_TA_tex_txt", +"0019e5a0 000100 cat_15_eye3_TA_tex_txt", +"0019e6a0 000100 cat_15_eye4_TA_tex_txt", +"0019e7a0 000100 cat_15_eye5_TA_tex_txt", +"0019e8a0 000100 cat_15_eye6_TA_tex_txt", +"0019e9a0 000100 cat_15_eye7_TA_tex_txt", +"0019eaa0 000100 cat_15_eye8_TA_tex_txt", +"0019eba0 000100 cat_15_mouth1_TA_tex_txt", +"0019eca0 000100 cat_15_mouth2_TA_tex_txt", +"0019eda0 000100 cat_15_mouth3_TA_tex_txt", +"0019eea0 000100 cat_15_mouth4_TA_tex_txt", +"0019efa0 000100 cat_15_mouth5_TA_tex_txt", +"0019f0a0 000100 cat_15_mouth6_TA_tex_txt", +"0019f1a0 000400 cat_15_tmem_txt", +"", +"0019f5a0 000020 cat_3_pal", +"0019f5c0 000100 cat_3_eye1_TA_tex_txt", +"0019f6c0 000100 cat_3_eye2_TA_tex_txt", +"0019f7c0 000100 cat_3_eye3_TA_tex_txt", +"0019f8c0 000100 cat_3_eye4_TA_tex_txt", +"0019f9c0 000100 cat_3_eye5_TA_tex_txt", +"0019fac0 000100 cat_3_eye6_TA_tex_txt", +"0019fbc0 000100 cat_3_eye7_TA_tex_txt", +"0019fcc0 000100 cat_3_eye8_TA_tex_txt", +"0019fdc0 000100 cat_3_mouth1_TA_tex_txt", +"0019fec0 000100 cat_3_mouth2_TA_tex_txt", +"0019ffc0 000100 cat_3_mouth3_TA_tex_txt", +"001a00c0 000100 cat_3_mouth4_TA_tex_txt", +"001a01c0 000100 cat_3_mouth5_TA_tex_txt", +"001a02c0 000100 cat_3_mouth6_TA_tex_txt", +"001a03c0 000400 cat_3_tmem_txt", +"", +"001a07c0 000020 cat_4_pal", +"001a07e0 000100 cat_4_eye1_TA_tex_txt", +"001a08e0 000100 cat_4_eye2_TA_tex_txt", +"001a09e0 000100 cat_4_eye3_TA_tex_txt", +"001a0ae0 000100 cat_4_eye4_TA_tex_txt", +"001a0be0 000100 cat_4_eye5_TA_tex_txt", +"001a0ce0 000100 cat_4_eye6_TA_tex_txt", +"001a0de0 000100 cat_4_eye7_TA_tex_txt", +"001a0ee0 000100 cat_4_eye8_TA_tex_txt", +"001a0fe0 000100 cat_4_mouth1_TA_tex_txt", +"001a10e0 000100 cat_4_mouth2_TA_tex_txt", +"001a11e0 000100 cat_4_mouth3_TA_tex_txt", +"001a12e0 000100 cat_4_mouth4_TA_tex_txt", +"001a13e0 000100 cat_4_mouth5_TA_tex_txt", +"001a14e0 000100 cat_4_mouth6_TA_tex_txt", +"001a15e0 000400 cat_4_tmem_txt", +"", +"001a19e0 000020 cat_5_pal", +"001a1a00 000100 cat_5_eye1_TA_tex_txt", +"001a1b00 000100 cat_5_eye2_TA_tex_txt", +"001a1c00 000100 cat_5_eye3_TA_tex_txt", +"001a1d00 000100 cat_5_eye4_TA_tex_txt", +"001a1e00 000100 cat_5_eye5_TA_tex_txt", +"001a1f00 000100 cat_5_eye6_TA_tex_txt", +"001a2000 000100 cat_5_eye7_TA_tex_txt", +"001a2100 000100 cat_5_eye8_TA_tex_txt", +"001a2200 000100 cat_5_mouth1_TA_tex_txt", +"001a2300 000100 cat_5_mouth2_TA_tex_txt", +"001a2400 000100 cat_5_mouth3_TA_tex_txt", +"001a2500 000100 cat_5_mouth4_TA_tex_txt", +"001a2600 000100 cat_5_mouth5_TA_tex_txt", +"001a2700 000100 cat_5_mouth6_TA_tex_txt", +"001a2800 000400 cat_5_tmem_txt", +"", +"001a2c00 000020 cat_6_pal", +"001a2c20 000100 cat_6_eye1_TA_tex_txt", +"001a2d20 000100 cat_6_eye2_TA_tex_txt", +"001a2e20 000100 cat_6_eye3_TA_tex_txt", +"001a2f20 000100 cat_6_eye4_TA_tex_txt", +"001a3020 000100 cat_6_eye5_TA_tex_txt", +"001a3120 000100 cat_6_eye6_TA_tex_txt", +"001a3220 000100 cat_6_eye7_TA_tex_txt", +"001a3320 000100 cat_6_eye8_TA_tex_txt", +"001a3420 000100 cat_6_mouth1_TA_tex_txt", +"001a3520 000100 cat_6_mouth2_TA_tex_txt", +"001a3620 000100 cat_6_mouth3_TA_tex_txt", +"001a3720 000100 cat_6_mouth4_TA_tex_txt", +"001a3820 000100 cat_6_mouth5_TA_tex_txt", +"001a3920 000100 cat_6_mouth6_TA_tex_txt", +"001a3a20 000400 cat_6_tmem_txt", +"", +"001a3e20 000020 cat_7_pal", +"001a3e40 000100 cat_7_eye1_TA_tex_txt", +"001a3f40 000100 cat_7_eye2_TA_tex_txt", +"001a4040 000100 cat_7_eye3_TA_tex_txt", +"001a4140 000100 cat_7_eye4_TA_tex_txt", +"001a4240 000100 cat_7_eye5_TA_tex_txt", +"001a4340 000100 cat_7_eye6_TA_tex_txt", +"001a4440 000100 cat_7_eye7_TA_tex_txt", +"001a4540 000100 cat_7_eye8_TA_tex_txt", +"001a4640 000100 cat_7_mouth1_TA_tex_txt", +"001a4740 000100 cat_7_mouth2_TA_tex_txt", +"001a4840 000100 cat_7_mouth3_TA_tex_txt", +"001a4940 000100 cat_7_mouth4_TA_tex_txt", +"001a4a40 000100 cat_7_mouth5_TA_tex_txt", +"001a4b40 000100 cat_7_mouth6_TA_tex_txt", +"001a4c40 000400 cat_7_tmem_txt", +"", +"001a5040 000020 cat_8_pal", +"001a5060 000100 cat_8_eye1_TA_tex_txt", +"001a5160 000100 cat_8_eye2_TA_tex_txt", +"001a5260 000100 cat_8_eye3_TA_tex_txt", +"001a5360 000100 cat_8_eye4_TA_tex_txt", +"001a5460 000100 cat_8_eye5_TA_tex_txt", +"001a5560 000100 cat_8_eye6_TA_tex_txt", +"001a5660 000100 cat_8_eye7_TA_tex_txt", +"001a5760 000100 cat_8_eye8_TA_tex_txt", +"001a5860 000100 cat_8_mouth1_TA_tex_txt", +"001a5960 000100 cat_8_mouth2_TA_tex_txt", +"001a5a60 000100 cat_8_mouth3_TA_tex_txt", +"001a5b60 000100 cat_8_mouth4_TA_tex_txt", +"001a5c60 000100 cat_8_mouth5_TA_tex_txt", +"001a5d60 000100 cat_8_mouth6_TA_tex_txt", +"001a5e60 000400 cat_8_tmem_txt", +"", +"001a6260 000020 cat_9_pal", +"001a6280 000100 cat_9_eye1_TA_tex_txt", +"001a6380 000100 cat_9_eye2_TA_tex_txt", +"001a6480 000100 cat_9_eye3_TA_tex_txt", +"001a6580 000100 cat_9_eye4_TA_tex_txt", +"001a6680 000100 cat_9_eye5_TA_tex_txt", +"001a6780 000100 cat_9_eye6_TA_tex_txt", +"001a6880 000100 cat_9_eye7_TA_tex_txt", +"001a6980 000100 cat_9_eye8_TA_tex_txt", +"001a6a80 000100 cat_9_mouth1_TA_tex_txt", +"001a6b80 000100 cat_9_mouth2_TA_tex_txt", +"001a6c80 000100 cat_9_mouth3_TA_tex_txt", +"001a6d80 000100 cat_9_mouth4_TA_tex_txt", +"001a6e80 000100 cat_9_mouth5_TA_tex_txt", +"001a6f80 000100 cat_9_mouth6_TA_tex_txt", +"001a7080 000400 cat_9_tmem_txt", +"", +"001a7480 000020 cat_10_pal", +"001a74a0 000100 cat_10_eye1_TA_tex_txt", +"001a75a0 000100 cat_10_eye2_TA_tex_txt", +"001a76a0 000100 cat_10_eye3_TA_tex_txt", +"001a77a0 000100 cat_10_eye4_TA_tex_txt", +"001a78a0 000100 cat_10_eye5_TA_tex_txt", +"001a79a0 000100 cat_10_eye6_TA_tex_txt", +"001a7aa0 000100 cat_10_eye7_TA_tex_txt", +"001a7ba0 000100 cat_10_eye8_TA_tex_txt", +"001a7ca0 000100 cat_10_mouth1_TA_tex_txt", +"001a7da0 000100 cat_10_mouth2_TA_tex_txt", +"001a7ea0 000100 cat_10_mouth3_TA_tex_txt", +"001a7fa0 000100 cat_10_mouth4_TA_tex_txt", +"001a80a0 000100 cat_10_mouth5_TA_tex_txt", +"001a81a0 000100 cat_10_mouth6_TA_tex_txt", +"001a82a0 000400 cat_10_tmem_txt", +"", +"001a86a0 001c20 chn_1_v", +"001aa2c0 000240 head_chn_model", +"001aa500 000078 mouth_chn_model", +"001aa578 000080 Rarm2_chn_model", +"001aa5f8 000078 Rarm1_chn_model", +"001aa670 000080 Larm2_chn_model", +"001aa6f0 000078 Larm1_chn_model", +"001aa768 0000c0 chest_chn_model", +"001aa828 0000c0 tail1_chn_model", +"001aa8e8 000098 Rfoot3_chn_model", +"001aa980 000080 Rfoot2_chn_model", +"001aaa00 0000c0 Rfoot1_chn_model", +"001aaac0 000098 Lfoot3_chn_model", +"001aab58 000080 Lfoot2_chn_model", +"001aabd8 0000c0 Lfoot1_chn_model", +"001aac98 000070 base_chn_model", +"001aad08 000138 cKF_je_r_chn_1_tbl", +"001aae40 000008 cKF_bs_r_chn_1", +"", +"001aae60 000020 chn_1_pal", +"001aae80 000100 chn_1_eye1_TA_tex_txt", +"001aaf80 000100 chn_1_eye2_TA_tex_txt", +"001ab080 000100 chn_1_eye3_TA_tex_txt", +"001ab180 000100 chn_1_eye4_TA_tex_txt", +"001ab280 000100 chn_1_eye5_TA_tex_txt", +"001ab380 000100 chn_1_eye6_TA_tex_txt", +"001ab480 000100 chn_1_eye7_TA_tex_txt", +"001ab580 000100 chn_1_eye8_TA_tex_txt", +"001ab680 0004c0 chn_1_tmem_txt", +"", +"001abb40 000020 chn_2_pal", +"001abb60 000100 chn_2_eye1_TA_tex_txt", +"001abc60 000100 chn_2_eye2_TA_tex_txt", +"001abd60 000100 chn_2_eye3_TA_tex_txt", +"001abe60 000100 chn_2_eye4_TA_tex_txt", +"001abf60 000100 chn_2_eye5_TA_tex_txt", +"001ac060 000100 chn_2_eye6_TA_tex_txt", +"001ac160 000100 chn_2_eye7_TA_tex_txt", +"001ac260 000100 chn_2_eye8_TA_tex_txt", +"001ac360 0004c0 chn_2_tmem_txt", +"", +"001ac820 000020 chn_3_pal", +"001ac840 000100 chn_3_eye1_TA_tex_txt", +"001ac940 000100 chn_3_eye2_TA_tex_txt", +"001aca40 000100 chn_3_eye3_TA_tex_txt", +"001acb40 000100 chn_3_eye4_TA_tex_txt", +"001acc40 000100 chn_3_eye5_TA_tex_txt", +"001acd40 000100 chn_3_eye6_TA_tex_txt", +"001ace40 000100 chn_3_eye7_TA_tex_txt", +"001acf40 000100 chn_3_eye8_TA_tex_txt", +"001ad040 0004c0 chn_3_tmem_txt", +"", +"001ad500 000020 chn_4_pal", +"001ad520 000100 chn_4_eye1_TA_tex_txt", +"001ad620 000100 chn_4_eye2_TA_tex_txt", +"001ad720 000100 chn_4_eye3_TA_tex_txt", +"001ad820 000100 chn_4_eye4_TA_tex_txt", +"001ad920 000100 chn_4_eye5_TA_tex_txt", +"001ada20 000100 chn_4_eye6_TA_tex_txt", +"001adb20 000100 chn_4_eye7_TA_tex_txt", +"001adc20 000100 chn_4_eye8_TA_tex_txt", +"001add20 0004c0 chn_4_tmem_txt", +"", +"001ae1e0 000020 chn_5_pal", +"001ae200 000100 chn_5_eye1_TA_tex_txt", +"001ae300 000100 chn_5_eye2_TA_tex_txt", +"001ae400 000100 chn_5_eye3_TA_tex_txt", +"001ae500 000100 chn_5_eye4_TA_tex_txt", +"001ae600 000100 chn_5_eye5_TA_tex_txt", +"001ae700 000100 chn_5_eye6_TA_tex_txt", +"001ae800 000100 chn_5_eye7_TA_tex_txt", +"001ae900 000100 chn_5_eye8_TA_tex_txt", +"001aea00 0004c0 chn_5_tmem_txt", +"", +"001aeec0 000020 chn_6_pal", +"001aeee0 000100 chn_6_eye1_TA_tex_txt", +"001aefe0 000100 chn_6_eye2_TA_tex_txt", +"001af0e0 000100 chn_6_eye3_TA_tex_txt", +"001af1e0 000100 chn_6_eye4_TA_tex_txt", +"001af2e0 000100 chn_6_eye5_TA_tex_txt", +"001af3e0 000100 chn_6_eye6_TA_tex_txt", +"001af4e0 000100 chn_6_eye7_TA_tex_txt", +"001af5e0 000100 chn_6_eye8_TA_tex_txt", +"001af6e0 0004c0 chn_6_tmem_txt", +"", +"001afba0 000020 chn_7_pal", +"001afbc0 000100 chn_7_eye1_TA_tex_txt", +"001afcc0 000100 chn_7_eye2_TA_tex_txt", +"001afdc0 000100 chn_7_eye3_TA_tex_txt", +"001afec0 000100 chn_7_eye4_TA_tex_txt", +"001affc0 000100 chn_7_eye5_TA_tex_txt", +"001b00c0 000100 chn_7_eye6_TA_tex_txt", +"001b01c0 000100 chn_7_eye7_TA_tex_txt", +"001b02c0 000100 chn_7_eye8_TA_tex_txt", +"001b03c0 0004c0 chn_7_tmem_txt", +"", +"001b0880 000020 chn_8_pal", +"001b08a0 000100 chn_8_eye1_TA_tex_txt", +"001b09a0 000100 chn_8_eye2_TA_tex_txt", +"001b0aa0 000100 chn_8_eye3_TA_tex_txt", +"001b0ba0 000100 chn_8_eye4_TA_tex_txt", +"001b0ca0 000100 chn_8_eye5_TA_tex_txt", +"001b0da0 000100 chn_8_eye6_TA_tex_txt", +"001b0ea0 000100 chn_8_eye7_TA_tex_txt", +"001b0fa0 000100 chn_8_eye8_TA_tex_txt", +"001b10a0 0004c0 chn_8_tmem_txt", +"", +"001b1560 000020 chn_9_pal", +"001b1580 000100 chn_9_eye1_TA_tex_txt", +"001b1680 000100 chn_9_eye2_TA_tex_txt", +"001b1780 000100 chn_9_eye3_TA_tex_txt", +"001b1880 000100 chn_9_eye4_TA_tex_txt", +"001b1980 000100 chn_9_eye5_TA_tex_txt", +"001b1a80 000100 chn_9_eye6_TA_tex_txt", +"001b1b80 000100 chn_9_eye7_TA_tex_txt", +"001b1c80 000100 chn_9_eye8_TA_tex_txt", +"001b1d80 0004c0 chn_9_tmem_txt", +"", +"001b2240 0015a0 cbr_1_v", +"001b37e0 0001d8 head_cbr_model", +"001b39b8 000090 Rarm2_cbr_model", +"001b3a48 000088 Rarm1_cbr_model", +"001b3ad0 000090 Larm2_cbr_model", +"001b3b60 000088 Larm1_cbr_model", +"001b3be8 0000c0 chest_cbr_model", +"001b3ca8 000068 tail1_cbr_model", +"001b3d10 000098 Rfoot2_cbr_model", +"001b3da8 000068 Rfoot1_cbr_model", +"001b3e10 000098 Lfoot2_cbr_model", +"001b3ea8 000068 Lfoot1_cbr_model", +"001b3f10 0000d0 base_cbr_model", +"001b3fe0 000138 cKF_je_r_cbr_1_tbl", +"001b4118 000008 cKF_bs_r_cbr_1", +"", +"001b4120 000020 cbr_1_pal", +"001b4140 000100 cbr_1_eye1_TA_tex_txt", +"001b4240 000100 cbr_1_eye2_TA_tex_txt", +"001b4340 000100 cbr_1_eye3_TA_tex_txt", +"001b4440 000100 cbr_1_eye4_TA_tex_txt", +"001b4540 000100 cbr_1_eye5_TA_tex_txt", +"001b4640 000100 cbr_1_eye6_TA_tex_txt", +"001b4740 000100 cbr_1_eye7_TA_tex_txt", +"001b4840 000100 cbr_1_eye8_TA_tex_txt", +"001b4940 000100 cbr_1_mouth1_TA_tex_txt", +"001b4a40 000100 cbr_1_mouth2_TA_tex_txt", +"001b4b40 000100 cbr_1_mouth3_TA_tex_txt", +"001b4c40 000100 cbr_1_mouth4_TA_tex_txt", +"001b4d40 000100 cbr_1_mouth5_TA_tex_txt", +"001b4e40 000100 cbr_1_mouth6_TA_tex_txt", +"001b4f40 000400 cbr_1_tmem_txt", +"", +"001b5340 000020 cbr_2_pal", +"001b5360 000100 cbr_2_eye1_TA_tex_txt", +"001b5460 000100 cbr_2_eye2_TA_tex_txt", +"001b5560 000100 cbr_2_eye3_TA_tex_txt", +"001b5660 000100 cbr_2_eye4_TA_tex_txt", +"001b5760 000100 cbr_2_eye5_TA_tex_txt", +"001b5860 000100 cbr_2_eye6_TA_tex_txt", +"001b5960 000100 cbr_2_eye7_TA_tex_txt", +"001b5a60 000100 cbr_2_eye8_TA_tex_txt", +"001b5b60 000100 cbr_2_mouth1_TA_tex_txt", +"001b5c60 000100 cbr_2_mouth2_TA_tex_txt", +"001b5d60 000100 cbr_2_mouth3_TA_tex_txt", +"001b5e60 000100 cbr_2_mouth4_TA_tex_txt", +"001b5f60 000100 cbr_2_mouth5_TA_tex_txt", +"001b6060 000100 cbr_2_mouth6_TA_tex_txt", +"001b6160 000400 cbr_2_tmem_txt", +"", +"001b6560 000020 cbr_11_pal", +"001b6580 000100 cbr_11_eye1_TA_tex_txt", +"001b6680 000100 cbr_11_eye2_TA_tex_txt", +"001b6780 000100 cbr_11_eye3_TA_tex_txt", +"001b6880 000100 cbr_11_eye4_TA_tex_txt", +"001b6980 000100 cbr_11_eye5_TA_tex_txt", +"001b6a80 000100 cbr_11_eye6_TA_tex_txt", +"001b6b80 000100 cbr_11_eye7_TA_tex_txt", +"001b6c80 000100 cbr_11_eye8_TA_tex_txt", +"001b6d80 000100 cbr_11_mouth1_TA_tex_txt", +"001b6e80 000100 cbr_11_mouth2_TA_tex_txt", +"001b6f80 000100 cbr_11_mouth3_TA_tex_txt", +"001b7080 000100 cbr_11_mouth4_TA_tex_txt", +"001b7180 000100 cbr_11_mouth5_TA_tex_txt", +"001b7280 000100 cbr_11_mouth6_TA_tex_txt", +"001b7380 000400 cbr_11_tmem_txt", +"", +"001b7780 000020 cbr_3_pal", +"001b77a0 000100 cbr_3_eye1_TA_tex_txt", +"001b78a0 000100 cbr_3_eye2_TA_tex_txt", +"001b79a0 000100 cbr_3_eye3_TA_tex_txt", +"001b7aa0 000100 cbr_3_eye4_TA_tex_txt", +"001b7ba0 000100 cbr_3_eye5_TA_tex_txt", +"001b7ca0 000100 cbr_3_eye6_TA_tex_txt", +"001b7da0 000100 cbr_3_eye7_TA_tex_txt", +"001b7ea0 000100 cbr_3_eye8_TA_tex_txt", +"001b7fa0 000100 cbr_3_mouth1_TA_tex_txt", +"001b80a0 000100 cbr_3_mouth2_TA_tex_txt", +"001b81a0 000100 cbr_3_mouth3_TA_tex_txt", +"001b82a0 000100 cbr_3_mouth4_TA_tex_txt", +"001b83a0 000100 cbr_3_mouth5_TA_tex_txt", +"001b84a0 000100 cbr_3_mouth6_TA_tex_txt", +"001b85a0 000400 cbr_3_tmem_txt", +"", +"001b89a0 000020 cbr_4_pal", +"001b89c0 000100 cbr_4_eye1_TA_tex_txt", +"001b8ac0 000100 cbr_4_eye2_TA_tex_txt", +"001b8bc0 000100 cbr_4_eye3_TA_tex_txt", +"001b8cc0 000100 cbr_4_eye4_TA_tex_txt", +"001b8dc0 000100 cbr_4_eye5_TA_tex_txt", +"001b8ec0 000100 cbr_4_eye6_TA_tex_txt", +"001b8fc0 000100 cbr_4_eye7_TA_tex_txt", +"001b90c0 000100 cbr_4_eye8_TA_tex_txt", +"001b91c0 000100 cbr_4_mouth1_TA_tex_txt", +"001b92c0 000100 cbr_4_mouth2_TA_tex_txt", +"001b93c0 000100 cbr_4_mouth3_TA_tex_txt", +"001b94c0 000100 cbr_4_mouth4_TA_tex_txt", +"001b95c0 000100 cbr_4_mouth5_TA_tex_txt", +"001b96c0 000100 cbr_4_mouth6_TA_tex_txt", +"001b97c0 000400 cbr_4_tmem_txt", +"", +"001b9bc0 000020 cbr_5_pal", +"001b9be0 000100 cbr_5_eye1_TA_tex_txt", +"001b9ce0 000100 cbr_5_eye2_TA_tex_txt", +"001b9de0 000100 cbr_5_eye3_TA_tex_txt", +"001b9ee0 000100 cbr_5_eye4_TA_tex_txt", +"001b9fe0 000100 cbr_5_eye5_TA_tex_txt", +"001ba0e0 000100 cbr_5_eye6_TA_tex_txt", +"001ba1e0 000100 cbr_5_eye7_TA_tex_txt", +"001ba2e0 000100 cbr_5_eye8_TA_tex_txt", +"001ba3e0 000100 cbr_5_mouth1_TA_tex_txt", +"001ba4e0 000100 cbr_5_mouth2_TA_tex_txt", +"001ba5e0 000100 cbr_5_mouth3_TA_tex_txt", +"001ba6e0 000100 cbr_5_mouth4_TA_tex_txt", +"001ba7e0 000100 cbr_5_mouth5_TA_tex_txt", +"001ba8e0 000100 cbr_5_mouth6_TA_tex_txt", +"001ba9e0 000400 cbr_5_tmem_txt", +"", +"001bade0 000020 cbr_6_pal", +"001bae00 000100 cbr_6_eye1_TA_tex_txt", +"001baf00 000100 cbr_6_eye2_TA_tex_txt", +"001bb000 000100 cbr_6_eye3_TA_tex_txt", +"001bb100 000100 cbr_6_eye4_TA_tex_txt", +"001bb200 000100 cbr_6_eye5_TA_tex_txt", +"001bb300 000100 cbr_6_eye6_TA_tex_txt", +"001bb400 000100 cbr_6_eye7_TA_tex_txt", +"001bb500 000100 cbr_6_eye8_TA_tex_txt", +"001bb600 000100 cbr_6_mouth1_TA_tex_txt", +"001bb700 000100 cbr_6_mouth2_TA_tex_txt", +"001bb800 000100 cbr_6_mouth3_TA_tex_txt", +"001bb900 000100 cbr_6_mouth4_TA_tex_txt", +"001bba00 000100 cbr_6_mouth5_TA_tex_txt", +"001bbb00 000100 cbr_6_mouth6_TA_tex_txt", +"001bbc00 000400 cbr_6_tmem_txt", +"", +"001bc000 000020 cbr_7_pal", +"001bc020 000100 cbr_7_eye1_TA_tex_txt", +"001bc120 000100 cbr_7_eye2_TA_tex_txt", +"001bc220 000100 cbr_7_eye3_TA_tex_txt", +"001bc320 000100 cbr_7_eye4_TA_tex_txt", +"001bc420 000100 cbr_7_eye5_TA_tex_txt", +"001bc520 000100 cbr_7_eye6_TA_tex_txt", +"001bc620 000100 cbr_7_eye7_TA_tex_txt", +"001bc720 000100 cbr_7_eye8_TA_tex_txt", +"001bc820 000100 cbr_7_mouth1_TA_tex_txt", +"001bc920 000100 cbr_7_mouth2_TA_tex_txt", +"001bca20 000100 cbr_7_mouth3_TA_tex_txt", +"001bcb20 000100 cbr_7_mouth4_TA_tex_txt", +"001bcc20 000100 cbr_7_mouth5_TA_tex_txt", +"001bcd20 000100 cbr_7_mouth6_TA_tex_txt", +"001bce20 000400 cbr_7_tmem_txt", +"", +"001bd220 000020 cbr_8_pal", +"001bd240 000100 cbr_8_eye1_TA_tex_txt", +"001bd340 000100 cbr_8_eye2_TA_tex_txt", +"001bd440 000100 cbr_8_eye3_TA_tex_txt", +"001bd540 000100 cbr_8_eye4_TA_tex_txt", +"001bd640 000100 cbr_8_eye5_TA_tex_txt", +"001bd740 000100 cbr_8_eye6_TA_tex_txt", +"001bd840 000100 cbr_8_eye7_TA_tex_txt", +"001bd940 000100 cbr_8_eye8_TA_tex_txt", +"001bda40 000100 cbr_8_mouth1_TA_tex_txt", +"001bdb40 000100 cbr_8_mouth2_TA_tex_txt", +"001bdc40 000100 cbr_8_mouth3_TA_tex_txt", +"001bdd40 000100 cbr_8_mouth4_TA_tex_txt", +"001bde40 000100 cbr_8_mouth5_TA_tex_txt", +"001bdf40 000100 cbr_8_mouth6_TA_tex_txt", +"001be040 000400 cbr_8_tmem_txt", +"", +"001be440 000020 cbr_9_pal", +"001be460 000100 cbr_9_eye1_TA_tex_txt", +"001be560 000100 cbr_9_eye2_TA_tex_txt", +"001be660 000100 cbr_9_eye3_TA_tex_txt", +"001be760 000100 cbr_9_eye4_TA_tex_txt", +"001be860 000100 cbr_9_eye5_TA_tex_txt", +"001be960 000100 cbr_9_eye6_TA_tex_txt", +"001bea60 000100 cbr_9_eye7_TA_tex_txt", +"001beb60 000100 cbr_9_eye8_TA_tex_txt", +"001bec60 000100 cbr_9_mouth1_TA_tex_txt", +"001bed60 000100 cbr_9_mouth2_TA_tex_txt", +"001bee60 000100 cbr_9_mouth3_TA_tex_txt", +"001bef60 000100 cbr_9_mouth4_TA_tex_txt", +"001bf060 000100 cbr_9_mouth5_TA_tex_txt", +"001bf160 000100 cbr_9_mouth6_TA_tex_txt", +"001bf260 000400 cbr_9_tmem_txt", +"", +"001bf660 000020 cbr_10_pal", +"001bf680 000100 cbr_10_eye1_TA_tex_txt", +"001bf780 000100 cbr_10_eye2_TA_tex_txt", +"001bf880 000100 cbr_10_eye3_TA_tex_txt", +"001bf980 000100 cbr_10_eye4_TA_tex_txt", +"001bfa80 000100 cbr_10_eye5_TA_tex_txt", +"001bfb80 000100 cbr_10_eye6_TA_tex_txt", +"001bfc80 000100 cbr_10_eye7_TA_tex_txt", +"001bfd80 000100 cbr_10_eye8_TA_tex_txt", +"001bfe80 000100 cbr_10_mouth1_TA_tex_txt", +"001bff80 000100 cbr_10_mouth2_TA_tex_txt", +"001c0080 000100 cbr_10_mouth3_TA_tex_txt", +"001c0180 000100 cbr_10_mouth4_TA_tex_txt", +"001c0280 000100 cbr_10_mouth5_TA_tex_txt", +"001c0380 000100 cbr_10_mouth6_TA_tex_txt", +"001c0480 000400 cbr_10_tmem_txt", +"", +"001c1128 0015b0 rcc_1_v", +"001c26d8 000208 head_rcc_model", +"001c28e0 000078 mouth_rcc_model", +"001c2958 0000b8 Rarm2_rcc_model", +"001c2a10 000078 Rarm1_rcc_model", +"001c2a88 0000b8 Larm2_rcc_model", +"001c2b40 000078 Larm1_rcc_model", +"001c2bb8 0000c8 chest_rcc_model", +"001c2c80 000078 tail1_rcc_model", +"001c2cf8 0000a0 tail2_rcc_model", +"001c2d98 000080 Rfoot2_rcc_model", +"001c2e18 000058 Rfoot1_rcc_model", +"001c2e70 000080 Lfoot2_rcc_model", +"001c2ef0 000058 Lfoot1_rcc_model", +"001c2f48 000080 base_rcc_model", +"001c2fc8 000138 cKF_je_r_rcc_1_tbl", +"001c3100 000008 cKF_bs_r_rcc_1", +"", +"001c3120 000020 rcc_1_pal", +"001c3140 000100 rcc_1_eye1_TA_tex_txt", +"001c3240 000100 rcc_1_eye2_TA_tex_txt", +"001c3340 000100 rcc_1_eye3_TA_tex_txt", +"001c3440 000100 rcc_1_eye4_TA_tex_txt", +"001c3540 000100 rcc_1_eye5_TA_tex_txt", +"001c3640 000100 rcc_1_eye6_TA_tex_txt", +"001c3740 000100 rcc_1_eye7_TA_tex_txt", +"001c3840 000100 rcc_1_eye8_TA_tex_txt", +"001c3940 0006c0 rcc_1_tmem_txt", +"", +"001c4000 001630 cow_1_v", +"001c5630 0001e8 head_cow_model", +"001c5818 000088 Rarm2_cow_model", +"001c58a0 000078 Rarm1_cow_model", +"001c5918 000088 Larm2_cow_model", +"001c59a0 000078 Larm1_cow_model", +"001c5a18 0000a8 chest_cow_model", +"001c5ac0 000060 tail1_cow_model", +"001c5b20 000090 tail2_cow_model", +"001c5bb0 000080 Rfoot2_cow_model", +"001c5c30 0000c0 Rfoot1_cow_model", +"001c5cf0 000080 Lfoot2_cow_model", +"001c5d70 0000c0 Lfoot1_cow_model", +"001c5e30 000070 base_cow_model", +"001c5ea0 000138 cKF_je_r_cow_1_tbl", +"001c5fd8 000008 cKF_bs_r_cow_1", +"", +"001c5fe0 000020 cow_1_pal", +"001c6000 000100 cow_1_eye1_TA_tex_txt", +"001c6100 000100 cow_1_eye2_TA_tex_txt", +"001c6200 000100 cow_1_eye3_TA_tex_txt", +"001c6300 000100 cow_1_eye4_TA_tex_txt", +"001c6400 000100 cow_1_eye5_TA_tex_txt", +"001c6500 000100 cow_1_eye6_TA_tex_txt", +"001c6600 000100 cow_1_eye7_TA_tex_txt", +"001c6700 000100 cow_1_eye8_TA_tex_txt", +"001c6800 000100 cow_1_mouth1_TA_tex_txt", +"001c6900 000100 cow_1_mouth2_TA_tex_txt", +"001c6a00 000100 cow_1_mouth3_TA_tex_txt", +"001c6b00 000100 cow_1_mouth4_TA_tex_txt", +"001c6c00 000100 cow_1_mouth5_TA_tex_txt", +"001c6d00 000100 cow_1_mouth6_TA_tex_txt", +"001c6e00 000400 cow_1_tmem_txt", +"", +"001c7200 000020 cow_2_pal", +"001c7220 000100 cow_2_eye1_TA_tex_txt", +"001c7320 000100 cow_2_eye2_TA_tex_txt", +"001c7420 000100 cow_2_eye3_TA_tex_txt", +"001c7520 000100 cow_2_eye4_TA_tex_txt", +"001c7620 000100 cow_2_eye5_TA_tex_txt", +"001c7720 000100 cow_2_eye6_TA_tex_txt", +"001c7820 000100 cow_2_eye7_TA_tex_txt", +"001c7920 000100 cow_2_eye8_TA_tex_txt", +"001c7a20 000100 cow_2_mouth1_TA_tex_txt", +"001c7b20 000100 cow_2_mouth2_TA_tex_txt", +"001c7c20 000100 cow_2_mouth3_TA_tex_txt", +"001c7d20 000100 cow_2_mouth4_TA_tex_txt", +"001c7e20 000100 cow_2_mouth5_TA_tex_txt", +"001c7f20 000100 cow_2_mouth6_TA_tex_txt", +"001c8020 000400 cow_2_tmem_txt", +"", +"001c8420 000020 cow_3_pal", +"001c8440 000100 cow_3_eye1_TA_tex_txt", +"001c8540 000100 cow_3_eye2_TA_tex_txt", +"001c8640 000100 cow_3_eye3_TA_tex_txt", +"001c8740 000100 cow_3_eye4_TA_tex_txt", +"001c8840 000100 cow_3_eye5_TA_tex_txt", +"001c8940 000100 cow_3_eye6_TA_tex_txt", +"001c8a40 000100 cow_3_eye7_TA_tex_txt", +"001c8b40 000100 cow_3_eye8_TA_tex_txt", +"001c8c40 000100 cow_3_mouth1_TA_tex_txt", +"001c8d40 000100 cow_3_mouth2_TA_tex_txt", +"001c8e40 000100 cow_3_mouth3_TA_tex_txt", +"001c8f40 000100 cow_3_mouth4_TA_tex_txt", +"001c9040 000100 cow_3_mouth5_TA_tex_txt", +"001c9140 000100 cow_3_mouth6_TA_tex_txt", +"001c9240 000400 cow_3_tmem_txt", +"", +"001c9640 000020 cow_4_pal", +"001c9660 000100 cow_4_eye1_TA_tex_txt", +"001c9760 000100 cow_4_eye2_TA_tex_txt", +"001c9860 000100 cow_4_eye3_TA_tex_txt", +"001c9960 000100 cow_4_eye4_TA_tex_txt", +"001c9a60 000100 cow_4_eye5_TA_tex_txt", +"001c9b60 000100 cow_4_eye6_TA_tex_txt", +"001c9c60 000100 cow_4_eye7_TA_tex_txt", +"001c9d60 000100 cow_4_eye8_TA_tex_txt", +"001c9e60 000100 cow_4_mouth1_TA_tex_txt", +"001c9f60 000100 cow_4_mouth2_TA_tex_txt", +"001ca060 000100 cow_4_mouth3_TA_tex_txt", +"001ca160 000100 cow_4_mouth4_TA_tex_txt", +"001ca260 000100 cow_4_mouth5_TA_tex_txt", +"001ca360 000100 cow_4_mouth6_TA_tex_txt", +"001ca460 000400 cow_4_tmem_txt", +"", +"001ca860 001790 crd_1_v", +"001cbff0 0001a8 head_crd_model", +"001cc198 000108 mouth_crd_model", +"001cc2a0 000088 Rarm2_crd_model", +"001cc328 000078 Rarm1_crd_model", +"001cc3a0 000088 Larm2_crd_model", +"001cc428 000078 Larm1_crd_model", +"001cc4a0 0000c8 chest_crd_model", +"001cc568 000080 tail1_crd_model", +"001cc5e8 000088 tail2_crd_model", +"001cc670 000080 Rfoot2_crd_model", +"001cc6f0 000058 Rfoot1_crd_model", +"001cc748 000080 Lfoot2_crd_model", +"001cc7c8 000058 Lfoot1_crd_model", +"001cc820 000088 base_crd_model", +"001cc8a8 000138 cKF_je_r_crd_1_tbl", +"001cc9e0 000008 cKF_bs_r_crd_1", +"", +"001cca00 000020 crd_1_pal", +"001cca20 000100 crd_1_eye1_TA_tex_txt", +"001ccb20 000100 crd_1_eye2_TA_tex_txt", +"001ccc20 000100 crd_1_eye3_TA_tex_txt", +"001ccd20 000100 crd_1_eye4_TA_tex_txt", +"001cce20 000100 crd_1_eye5_TA_tex_txt", +"001ccf20 000100 crd_1_eye6_TA_tex_txt", +"001cd020 000100 crd_1_eye7_TA_tex_txt", +"001cd120 000100 crd_1_eye8_TA_tex_txt", +"001cd220 000500 crd_1_tmem_txt", +"", +"001cd720 000020 crd_2_pal", +"001cd740 000100 crd_2_eye1_TA_tex_txt", +"001cd840 000100 crd_2_eye2_TA_tex_txt", +"001cd940 000100 crd_2_eye3_TA_tex_txt", +"001cda40 000100 crd_2_eye4_TA_tex_txt", +"001cdb40 000100 crd_2_eye5_TA_tex_txt", +"001cdc40 000100 crd_2_eye6_TA_tex_txt", +"001cdd40 000100 crd_2_eye7_TA_tex_txt", +"001cde40 000100 crd_2_eye8_TA_tex_txt", +"001cdf40 000500 crd_2_tmem_txt", +"", +"001ce440 000020 crd_3_pal", +"001ce460 000100 crd_3_eye1_TA_tex_txt", +"001ce560 000100 crd_3_eye2_TA_tex_txt", +"001ce660 000100 crd_3_eye3_TA_tex_txt", +"001ce760 000100 crd_3_eye4_TA_tex_txt", +"001ce860 000100 crd_3_eye5_TA_tex_txt", +"001ce960 000100 crd_3_eye6_TA_tex_txt", +"001cea60 000100 crd_3_eye7_TA_tex_txt", +"001ceb60 000100 crd_3_eye8_TA_tex_txt", +"001cec60 000500 crd_3_tmem_txt", +"", +"001cf160 000020 crd_4_pal", +"001cf180 000100 crd_4_eye1_TA_tex_txt", +"001cf280 000100 crd_4_eye2_TA_tex_txt", +"001cf380 000100 crd_4_eye3_TA_tex_txt", +"001cf480 000100 crd_4_eye4_TA_tex_txt", +"001cf580 000100 crd_4_eye5_TA_tex_txt", +"001cf680 000100 crd_4_eye6_TA_tex_txt", +"001cf780 000100 crd_4_eye7_TA_tex_txt", +"001cf880 000100 crd_4_eye8_TA_tex_txt", +"001cf980 000500 crd_4_tmem_txt", +"", +"001cfe80 001a90 owl_1_v", +"001d1910 000240 head_owl_model", +"001d1b50 000098 mouth_owl_model", +"001d1be8 0000d0 Rarm2_owl_model", +"001d1cb8 000078 Rarm1_owl_model", +"001d1d30 0000d0 Larm2_owl_model", +"001d1e00 000078 Larm1_owl_model", +"001d1e78 0000d0 chest_owl_model", +"001d1f48 0000a8 tail1_owl_model", +"001d1ff0 0000a8 Rfoot3_owl_model", +"001d2098 000080 Rfoot2_owl_model", +"001d2118 000058 Rfoot1_owl_model", +"001d2170 0000a8 Lfoot3_owl_model", +"001d2218 000080 Lfoot2_owl_model", +"001d2298 000058 Lfoot1_owl_model", +"001d22f0 000078 base_owl_model", +"001d2368 000138 cKF_je_r_owl_1_tbl", +"001d24a0 000008 cKF_bs_r_owl_1", +"", +"001d24c0 000020 owl_1_pal", +"001d24e0 000100 owl_1_eye1_TA_tex_txt", +"001d25e0 000100 owl_1_eye2_TA_tex_txt", +"001d26e0 000100 owl_1_eye3_TA_tex_txt", +"001d27e0 000100 owl_1_eye4_TA_tex_txt", +"001d28e0 000100 owl_1_eye5_TA_tex_txt", +"001d29e0 000100 owl_1_eye6_TA_tex_txt", +"001d2ae0 000100 owl_1_eye7_TA_tex_txt", +"001d2be0 000100 owl_1_eye8_TA_tex_txt", +"001d2ce0 000640 owl_1_tmem_txt", +"", +"001d3320 001520 rcd_1_v", +"001d4840 0001b8 head_rcd_model", +"001d49f8 000078 mouth_rcd_model", +"001d4a70 0000b8 Rarm2_rcd_model", +"001d4b28 000078 Rarm1_rcd_model", +"001d4ba0 0000b8 Larm2_rcd_model", +"001d4c58 000078 Larm1_rcd_model", +"001d4cd0 0000c8 chest_rcd_model", +"001d4d98 000078 tail1_rcd_model", +"001d4e10 0000a0 tail2_rcd_model", +"001d4eb0 000080 Rfoot2_rcd_model", +"001d4f30 000058 Rfoot1_rcd_model", +"001d4f88 000080 Lfoot2_rcd_model", +"001d5008 000058 Lfoot1_rcd_model", +"001d5060 000080 base_rcd_model", +"001d50e0 000138 cKF_je_r_rcd_1_tbl", +"001d5218 000008 cKF_bs_r_rcd_1", +"", +"001d5220 000020 rcd_1_pal", +"001d5240 000100 rcd_1_eye1_TA_tex_txt", +"001d5340 000100 rcd_1_eye2_TA_tex_txt", +"001d5440 000100 rcd_1_eye3_TA_tex_txt", +"001d5540 000100 rcd_1_eye4_TA_tex_txt", +"001d5640 000100 rcd_1_eye5_TA_tex_txt", +"001d5740 000100 rcd_1_eye6_TA_tex_txt", +"001d5840 000100 rcd_1_eye7_TA_tex_txt", +"001d5940 000100 rcd_1_eye8_TA_tex_txt", +"001d5a40 000640 rcd_1_tmem_txt", +"", +"001d6080 001ae0 grf_1_v", +"001d7b60 000220 head_grf_model", +"001d7d80 0000d8 mouth_grf_model", +"001d7e58 000088 Rarm2_grf_model", +"001d7ee0 000078 Rarm1_grf_model", +"001d7f58 000088 Larm2_grf_model", +"001d7fe0 000078 Larm1_grf_model", +"001d8058 000130 chest_grf_model", +"001d8188 000058 tail1_grf_model", +"001d81e0 000090 tail2_grf_model", +"001d8270 0000a0 Rfoot2_grf_model", +"001d8310 000060 Rfoot1_grf_model", +"001d8370 0000a0 Lfoot2_grf_model", +"001d8410 000060 Lfoot1_grf_model", +"001d8470 000078 base_grf_model", +"001d84e8 000138 cKF_je_r_grf_1_tbl", +"001d8620 000008 cKF_bs_r_grf_1", +"", +"001d8640 000020 grf_1_pal", +"001d8660 000100 grf_1_eye1_TA_tex_txt", +"001d8760 000100 grf_1_eye2_TA_tex_txt", +"001d8860 000100 grf_1_eye3_TA_tex_txt", +"001d8960 000100 grf_1_eye4_TA_tex_txt", +"001d8a60 000100 grf_1_eye5_TA_tex_txt", +"001d8b60 000100 grf_1_eye6_TA_tex_txt", +"001d8c60 000100 grf_1_eye7_TA_tex_txt", +"001d8d60 000100 grf_1_eye8_TA_tex_txt", +"001d8e60 000700 grf_1_tmem_txt", +"", +"001d9560 0016b0 dog_1_v", +"001dac10 0001e8 head_dog_model", +"001dadf8 000080 Rarm2_dog_model", +"001dae78 000078 Rarm_dog_model", +"001daef0 000080 Larm2_dog_model", +"001daf70 000078 Larm1_dog_model", +"001dafe8 0000a8 chest_dog_model", +"001db090 000058 tail1_dog_model", +"001db0e8 000090 tail2_dog_model", +"001db178 000088 Rfoot2_dog_model", +"001db200 000080 Rfoot1_dog_model", +"001db280 000088 Lfoot2_dog_model", +"001db308 000080 Lfoot1_dog_model", +"001db388 000078 base_dog_model", +"001db400 000138 cKF_je_r_dog_1_tbl", +"001db538 000008 cKF_bs_r_dog_1", +"", +"001db540 000020 dog_1_pal", +"001db560 000100 dog_1_eye1_TA_tex_txt", +"001db660 000100 dog_1_eye2_TA_tex_txt", +"001db760 000100 dog_1_eye3_TA_tex_txt", +"001db860 000100 dog_1_eye4_TA_tex_txt", +"001db960 000100 dog_1_eye5_TA_tex_txt", +"001dba60 000100 dog_1_eye6_TA_tex_txt", +"001dbb60 000100 dog_1_eye7_TA_tex_txt", +"001dbc60 000100 dog_1_eye8_TA_tex_txt", +"001dbd60 000100 dog_1_mouth1_TA_tex_txt", +"001dbe60 000100 dog_1_mouth2_TA_tex_txt", +"001dbf60 000100 dog_1_mouth3_TA_tex_txt", +"001dc060 000100 dog_1_mouth4_TA_tex_txt", +"001dc160 000100 dog_1_mouth5_TA_tex_txt", +"001dc260 000100 dog_1_mouth6_TA_tex_txt", +"001dc360 000400 dog_1_tmem_txt", +"", +"001dc760 000020 dog_2_pal", +"001dc780 000100 dog_2_eye1_TA_tex_txt", +"001dc880 000100 dog_2_eye2_TA_tex_txt", +"001dc980 000100 dog_2_eye3_TA_tex_txt", +"001dca80 000100 dog_2_eye4_TA_tex_txt", +"001dcb80 000100 dog_2_eye5_TA_tex_txt", +"001dcc80 000100 dog_2_eye6_TA_tex_txt", +"001dcd80 000100 dog_2_eye7_TA_tex_txt", +"001dce80 000100 dog_2_eye8_TA_tex_txt", +"001dcf80 000100 dog_2_mouth1_TA_tex_txt", +"001dd080 000100 dog_2_mouth2_TA_tex_txt", +"001dd180 000100 dog_2_mouth3_TA_tex_txt", +"001dd280 000100 dog_2_mouth4_TA_tex_txt", +"001dd380 000100 dog_2_mouth5_TA_tex_txt", +"001dd480 000100 dog_2_mouth6_TA_tex_txt", +"001dd580 000400 dog_2_tmem_txt", +"", +"001dd980 000020 dog_3_pal", +"001dd9a0 000100 dog_3_eye1_TA_tex_txt", +"001ddaa0 000100 dog_3_eye2_TA_tex_txt", +"001ddba0 000100 dog_3_eye3_TA_tex_txt", +"001ddca0 000100 dog_3_eye4_TA_tex_txt", +"001ddda0 000100 dog_3_eye5_TA_tex_txt", +"001ddea0 000100 dog_3_eye6_TA_tex_txt", +"001ddfa0 000100 dog_3_eye7_TA_tex_txt", +"001de0a0 000100 dog_3_eye8_TA_tex_txt", +"001de1a0 000100 dog_3_mouth1_TA_tex_txt", +"001de2a0 000100 dog_3_mouth2_TA_tex_txt", +"001de3a0 000100 dog_3_mouth3_TA_tex_txt", +"001de4a0 000100 dog_3_mouth4_TA_tex_txt", +"001de5a0 000100 dog_3_mouth5_TA_tex_txt", +"001de6a0 000100 dog_3_mouth6_TA_tex_txt", +"001de7a0 000400 dog_3_tmem_txt", +"", +"001deba0 000020 dog_4_pal", +"001debc0 000100 dog_4_eye1_TA_tex_txt", +"001decc0 000100 dog_4_eye2_TA_tex_txt", +"001dedc0 000100 dog_4_eye3_TA_tex_txt", +"001deec0 000100 dog_4_eye4_TA_tex_txt", +"001defc0 000100 dog_4_eye5_TA_tex_txt", +"001df0c0 000100 dog_4_eye6_TA_tex_txt", +"001df1c0 000100 dog_4_eye7_TA_tex_txt", +"001df2c0 000100 dog_4_eye8_TA_tex_txt", +"001df3c0 000100 dog_4_mouth1_TA_tex_txt", +"001df4c0 000100 dog_4_mouth2_TA_tex_txt", +"001df5c0 000100 dog_4_mouth3_TA_tex_txt", +"001df6c0 000100 dog_4_mouth4_TA_tex_txt", +"001df7c0 000100 dog_4_mouth5_TA_tex_txt", +"001df8c0 000100 dog_4_mouth6_TA_tex_txt", +"001df9c0 000400 dog_4_tmem_txt", +"", +"001dfdc0 000020 dog_5_pal", +"001dfde0 000100 dog_5_eye1_TA_tex_txt", +"001dfee0 000100 dog_5_eye2_TA_tex_txt", +"001dffe0 000100 dog_5_eye3_TA_tex_txt", +"001e00e0 000100 dog_5_eye4_TA_tex_txt", +"001e01e0 000100 dog_5_eye5_TA_tex_txt", +"001e02e0 000100 dog_5_eye6_TA_tex_txt", +"001e03e0 000100 dog_5_eye7_TA_tex_txt", +"001e04e0 000100 dog_5_eye8_TA_tex_txt", +"001e05e0 000100 dog_5_mouth1_TA_tex_txt", +"001e06e0 000100 dog_5_mouth2_TA_tex_txt", +"001e07e0 000100 dog_5_mouth3_TA_tex_txt", +"001e08e0 000100 dog_5_mouth4_TA_tex_txt", +"001e09e0 000100 dog_5_mouth5_TA_tex_txt", +"001e0ae0 000100 dog_5_mouth6_TA_tex_txt", +"001e0be0 000400 dog_5_tmem_txt", +"", +"001e0fe0 000020 dog_6_pal", +"001e1000 000100 dog_6_eye1_TA_tex_txt", +"001e1100 000100 dog_6_eye2_TA_tex_txt", +"001e1200 000100 dog_6_eye3_TA_tex_txt", +"001e1300 000100 dog_6_eye4_TA_tex_txt", +"001e1400 000100 dog_6_eye5_TA_tex_txt", +"001e1500 000100 dog_6_eye6_TA_tex_txt", +"001e1600 000100 dog_6_eye7_TA_tex_txt", +"001e1700 000100 dog_6_eye8_TA_tex_txt", +"001e1800 000100 dog_6_mouth1_TA_tex_txt", +"001e1900 000100 dog_6_mouth2_TA_tex_txt", +"001e1a00 000100 dog_6_mouth3_TA_tex_txt", +"001e1b00 000100 dog_6_mouth4_TA_tex_txt", +"001e1c00 000100 dog_6_mouth5_TA_tex_txt", +"001e1d00 000100 dog_6_mouth6_TA_tex_txt", +"001e1e00 000400 dog_6_tmem_txt", +"", +"001e2200 000020 dog_7_pal", +"001e2220 000100 dog_7_eye1_TA_tex_txt", +"001e2320 000100 dog_7_eye2_TA_tex_txt", +"001e2420 000100 dog_7_eye3_TA_tex_txt", +"001e2520 000100 dog_7_eye4_TA_tex_txt", +"001e2620 000100 dog_7_eye5_TA_tex_txt", +"001e2720 000100 dog_7_eye6_TA_tex_txt", +"001e2820 000100 dog_7_eye7_TA_tex_txt", +"001e2920 000100 dog_7_eye8_TA_tex_txt", +"001e2a20 000100 dog_7_mouth1_TA_tex_txt", +"001e2b20 000100 dog_7_mouth2_TA_tex_txt", +"001e2c20 000100 dog_7_mouth3_TA_tex_txt", +"001e2d20 000100 dog_7_mouth4_TA_tex_txt", +"001e2e20 000100 dog_7_mouth5_TA_tex_txt", +"001e2f20 000100 dog_7_mouth6_TA_tex_txt", +"001e3020 000400 dog_7_tmem_txt", +"", +"001e3420 000020 dog_8_pal", +"001e3440 000100 dog_8_eye1_TA_tex_txt", +"001e3540 000100 dog_8_eye2_TA_tex_txt", +"001e3640 000100 dog_8_eye3_TA_tex_txt", +"001e3740 000100 dog_8_eye4_TA_tex_txt", +"001e3840 000100 dog_8_eye5_TA_tex_txt", +"001e3940 000100 dog_8_eye6_TA_tex_txt", +"001e3a40 000100 dog_8_eye7_TA_tex_txt", +"001e3b40 000100 dog_8_eye8_TA_tex_txt", +"001e3c40 000100 dog_8_mouth1_TA_tex_txt", +"001e3d40 000100 dog_8_mouth2_TA_tex_txt", +"001e3e40 000100 dog_8_mouth3_TA_tex_txt", +"001e3f40 000100 dog_8_mouth4_TA_tex_txt", +"001e4040 000100 dog_8_mouth5_TA_tex_txt", +"001e4140 000100 dog_8_mouth6_TA_tex_txt", +"001e4240 000400 dog_8_tmem_txt", +"", +"001e4640 000020 dog_9_pal", +"001e4660 000100 dog_9_eye1_TA_tex_txt", +"001e4760 000100 dog_9_eye2_TA_tex_txt", +"001e4860 000100 dog_9_eye3_TA_tex_txt", +"001e4960 000100 dog_9_eye4_TA_tex_txt", +"001e4a60 000100 dog_9_eye5_TA_tex_txt", +"001e4b60 000100 dog_9_eye6_TA_tex_txt", +"001e4c60 000100 dog_9_eye7_TA_tex_txt", +"001e4d60 000100 dog_9_eye8_TA_tex_txt", +"001e4e60 000100 dog_9_mouth1_TA_tex_txt", +"001e4f60 000100 dog_9_mouth2_TA_tex_txt", +"001e5060 000100 dog_9_mouth3_TA_tex_txt", +"001e5160 000100 dog_9_mouth4_TA_tex_txt", +"001e5260 000100 dog_9_mouth5_TA_tex_txt", +"001e5360 000100 dog_9_mouth6_TA_tex_txt", +"001e5460 000400 dog_9_tmem_txt", +"", +"001e5860 000020 dog_10_pal", +"001e5880 000100 dog_10_eye1_TA_tex_txt", +"001e5980 000100 dog_10_eye2_TA_tex_txt", +"001e5a80 000100 dog_10_eye3_TA_tex_txt", +"001e5b80 000100 dog_10_eye4_TA_tex_txt", +"001e5c80 000100 dog_10_eye5_TA_tex_txt", +"001e5d80 000100 dog_10_eye6_TA_tex_txt", +"001e5e80 000100 dog_10_eye7_TA_tex_txt", +"001e5f80 000100 dog_10_eye8_TA_tex_txt", +"001e6080 000100 dog_10_mouth1_TA_tex_txt", +"001e6180 000100 dog_10_mouth2_TA_tex_txt", +"001e6280 000100 dog_10_mouth3_TA_tex_txt", +"001e6380 000100 dog_10_mouth4_TA_tex_txt", +"001e6480 000100 dog_10_mouth5_TA_tex_txt", +"001e6580 000100 dog_10_mouth6_TA_tex_txt", +"001e6680 000400 dog_10_tmem_txt", +"", +"001e6a80 001860 seg_1_v", +"001e82e0 000198 head_seg_model", +"001e8478 000080 mouth_seg_model", +"001e84f8 0000c8 Rarm2_seg_model", +"001e85c0 000068 Rarm1_seg_model", +"001e8628 0000c8 Larm2_seg_model", +"001e86f0 000068 Larm1_seg_model", +"001e8758 000108 chest_seg_model", +"001e8860 000080 tail1_seg_model", +"001e88e0 000088 tail2_seg_model", +"001e8968 000088 Rfoot3_seg_model", +"001e89f0 000080 Rfoot2_seg_model", +"001e8a70 000058 Rfoot1_seg_model", +"001e8ac8 000088 Lfoot3_seg_model", +"001e8b50 000080 Lfoot2_seg_model", +"001e8bd0 000058 Lfoot1_seg_model", +"001e8c28 000080 base_seg_model", +"001e8ca8 000138 cKF_je_r_seg_1_tbl", +"001e8de0 000008 cKF_bs_r_seg_1", +"", +"001e8e00 000020 seg_1_pal", +"001e8e20 000100 seg_1_eye1_TA_tex_txt", +"001e8f20 000100 seg_1_eye2_TA_tex_txt", +"001e9020 000100 seg_1_eye3_TA_tex_txt", +"001e9120 000100 seg_1_eye4_TA_tex_txt", +"001e9220 000100 seg_1_eye5_TA_tex_txt", +"001e9320 000100 seg_1_eye6_TA_tex_txt", +"001e9420 000100 seg_1_eye7_TA_tex_txt", +"001e9520 000100 seg_1_eye8_TA_tex_txt", +"001e9620 000640 seg_1_tmem_txt", +"", +"001e9c60 001580 duk_1_v", +"001eb1e0 000148 head_duk_model", +"001eb328 000090 mouth_duk_model", +"001eb3b8 000080 Rarm2_duk_model", +"001eb438 000078 Rarm1_duk_model", +"001eb4b0 000080 Larm2_duk_model", +"001eb530 000078 Larm1_duk_model", +"001eb5a8 0000c8 chest_duk_model", +"001eb670 000078 tail1_duk_model", +"001eb6e8 000088 Rfoot3_duk_model", +"001eb770 000080 Rfoot2_duk_model", +"001eb7f0 000058 Rfoot1_duk_model", +"001eb848 000088 Lfoot3_duk_model", +"001eb8d0 000080 Lfoot2_duk_model", +"001eb950 000058 Lfoot1_duk_model", +"001eb9a8 000088 base_duk_model", +"001eba30 000138 cKF_je_r_duk_1_tbl", +"001ebb68 000008 cKF_bs_r_duk_1", +"", +"001ebb80 000020 duk_1_pal", +"001ebba0 000100 duk_1_eye1_TA_tex_txt", +"001ebca0 000100 duk_1_eye2_TA_tex_txt", +"001ebda0 000100 duk_1_eye3_TA_tex_txt", +"001ebea0 000100 duk_1_eye4_TA_tex_txt", +"001ebfa0 000100 duk_1_eye5_TA_tex_txt", +"001ec0a0 000100 duk_1_eye6_TA_tex_txt", +"001ec1a0 000100 duk_1_eye7_TA_tex_txt", +"001ec2a0 000100 duk_1_eye8_TA_tex_txt", +"001ec3a0 000100 duk_1_mouth1_TA_tex_txt", +"001ec4a0 000100 duk_1_mouth2_TA_tex_txt", +"001ec5a0 000100 duk_1_mouth3_TA_tex_txt", +"001ec6a0 000100 duk_1_mouth4_TA_tex_txt", +"001ec7a0 000100 duk_1_mouth5_TA_tex_txt", +"001ec8a0 000100 duk_1_mouth6_TA_tex_txt", +"001ec9a0 000400 duk_1_tmem_txt", +"", +"001ecda0 000020 duk_2_pal", +"001ecdc0 000100 duk_2_eye1_TA_tex_txt", +"001ecec0 000100 duk_2_eye2_TA_tex_txt", +"001ecfc0 000100 duk_2_eye3_TA_tex_txt", +"001ed0c0 000100 duk_2_eye4_TA_tex_txt", +"001ed1c0 000100 duk_2_eye5_TA_tex_txt", +"001ed2c0 000100 duk_2_eye6_TA_tex_txt", +"001ed3c0 000100 duk_2_eye7_TA_tex_txt", +"001ed4c0 000100 duk_2_eye8_TA_tex_txt", +"001ed5c0 000100 duk_2_mouth1_TA_tex_txt", +"001ed6c0 000100 duk_2_mouth2_TA_tex_txt", +"001ed7c0 000100 duk_2_mouth3_TA_tex_txt", +"001ed8c0 000100 duk_2_mouth4_TA_tex_txt", +"001ed9c0 000100 duk_2_mouth5_TA_tex_txt", +"001edac0 000100 duk_2_mouth6_TA_tex_txt", +"001edbc0 000400 duk_2_tmem_txt", +"", +"001edfc0 000020 duk_11_pal", +"001edfe0 000100 duk_11_eye1_TA_tex_txt", +"001ee0e0 000100 duk_11_eye2_TA_tex_txt", +"001ee1e0 000100 duk_11_eye3_TA_tex_txt", +"001ee2e0 000100 duk_11_eye4_TA_tex_txt", +"001ee3e0 000100 duk_11_eye5_TA_tex_txt", +"001ee4e0 000100 duk_11_eye6_TA_tex_txt", +"001ee5e0 000100 duk_11_eye7_TA_tex_txt", +"001ee6e0 000100 duk_11_eye8_TA_tex_txt", +"001ee7e0 000100 duk_11_mouth1_TA_tex_txt", +"001ee8e0 000100 duk_11_mouth2_TA_tex_txt", +"001ee9e0 000100 duk_11_mouth3_TA_tex_txt", +"001eeae0 000100 duk_11_mouth4_TA_tex_txt", +"001eebe0 000100 duk_11_mouth5_TA_tex_txt", +"001eece0 000100 duk_11_mouth6_TA_tex_txt", +"001eede0 000400 duk_11_tmem_txt", +"", +"001ef1e0 000020 duk_3_pal", +"001ef200 000100 duk_3_eye1_TA_tex_txt", +"001ef300 000100 duk_3_eye2_TA_tex_txt", +"001ef400 000100 duk_3_eye3_TA_tex_txt", +"001ef500 000100 duk_3_eye4_TA_tex_txt", +"001ef600 000100 duk_3_eye5_TA_tex_txt", +"001ef700 000100 duk_3_eye6_TA_tex_txt", +"001ef800 000100 duk_3_eye7_TA_tex_txt", +"001ef900 000100 duk_3_eye8_TA_tex_txt", +"001efa00 000100 duk_3_mouth1_TA_tex_txt", +"001efb00 000100 duk_3_mouth2_TA_tex_txt", +"001efc00 000100 duk_3_mouth3_TA_tex_txt", +"001efd00 000100 duk_3_mouth4_TA_tex_txt", +"001efe00 000100 duk_3_mouth5_TA_tex_txt", +"001eff00 000100 duk_3_mouth6_TA_tex_txt", +"001f0000 000400 duk_3_tmem_txt", +"", +"001f0400 000020 duk_4_pal", +"001f0420 000100 duk_4_eye1_TA_tex_txt", +"001f0520 000100 duk_4_eye2_TA_tex_txt", +"001f0620 000100 duk_4_eye3_TA_tex_txt", +"001f0720 000100 duk_4_eye4_TA_tex_txt", +"001f0820 000100 duk_4_eye5_TA_tex_txt", +"001f0920 000100 duk_4_eye6_TA_tex_txt", +"001f0a20 000100 duk_4_eye7_TA_tex_txt", +"001f0b20 000100 duk_4_eye8_TA_tex_txt", +"001f0c20 000100 duk_4_mouth1_TA_tex_txt", +"001f0d20 000100 duk_4_mouth2_TA_tex_txt", +"001f0e20 000100 duk_4_mouth3_TA_tex_txt", +"001f0f20 000100 duk_4_mouth4_TA_tex_txt", +"001f1020 000100 duk_4_mouth5_TA_tex_txt", +"001f1120 000100 duk_4_mouth6_TA_tex_txt", +"001f1220 000400 duk_4_tmem_txt", +"", +"001f1620 000020 duk_5_pal", +"001f1640 000100 duk_5_eye1_TA_tex_txt", +"001f1740 000100 duk_5_eye2_TA_tex_txt", +"001f1840 000100 duk_5_eye3_TA_tex_txt", +"001f1940 000100 duk_5_eye4_TA_tex_txt", +"001f1a40 000100 duk_5_eye5_TA_tex_txt", +"001f1b40 000100 duk_5_eye6_TA_tex_txt", +"001f1c40 000100 duk_5_eye7_TA_tex_txt", +"001f1d40 000100 duk_5_eye8_TA_tex_txt", +"001f1e40 000100 duk_5_mouth1_TA_tex_txt", +"001f1f40 000100 duk_5_mouth2_TA_tex_txt", +"001f2040 000100 duk_5_mouth3_TA_tex_txt", +"001f2140 000100 duk_5_mouth4_TA_tex_txt", +"001f2240 000100 duk_5_mouth5_TA_tex_txt", +"001f2340 000100 duk_5_mouth6_TA_tex_txt", +"001f2440 000400 duk_5_tmem_txt", +"", +"001f2840 000020 duk_6_pal", +"001f2860 000100 duk_6_eye1_TA_tex_txt", +"001f2960 000100 duk_6_eye2_TA_tex_txt", +"001f2a60 000100 duk_6_eye3_TA_tex_txt", +"001f2b60 000100 duk_6_eye4_TA_tex_txt", +"001f2c60 000100 duk_6_eye5_TA_tex_txt", +"001f2d60 000100 duk_6_eye6_TA_tex_txt", +"001f2e60 000100 duk_6_eye7_TA_tex_txt", +"001f2f60 000100 duk_6_eye8_TA_tex_txt", +"001f3060 000100 duk_6_mouth1_TA_tex_txt", +"001f3160 000100 duk_6_mouth2_TA_tex_txt", +"001f3260 000100 duk_6_mouth3_TA_tex_txt", +"001f3360 000100 duk_6_mouth4_TA_tex_txt", +"001f3460 000100 duk_6_mouth5_TA_tex_txt", +"001f3560 000100 duk_6_mouth6_TA_tex_txt", +"001f3660 000400 duk_6_tmem_txt", +"", +"001f3a60 000020 duk_7_pal", +"001f3a80 000100 duk_7_eye1_TA_tex_txt", +"001f3b80 000100 duk_7_eye2_TA_tex_txt", +"001f3c80 000100 duk_7_eye3_TA_tex_txt", +"001f3d80 000100 duk_7_eye4_TA_tex_txt", +"001f3e80 000100 duk_7_eye5_TA_tex_txt", +"001f3f80 000100 duk_7_eye6_TA_tex_txt", +"001f4080 000100 duk_7_eye7_TA_tex_txt", +"001f4180 000100 duk_7_eye8_TA_tex_txt", +"001f4280 000100 duk_7_mouth1_TA_tex_txt", +"001f4380 000100 duk_7_mouth2_TA_tex_txt", +"001f4480 000100 duk_7_mouth3_TA_tex_txt", +"001f4580 000100 duk_7_mouth4_TA_tex_txt", +"001f4680 000100 duk_7_mouth5_TA_tex_txt", +"001f4780 000100 duk_7_mouth6_TA_tex_txt", +"001f4880 000400 duk_7_tmem_txt", +"", +"001f4c80 000020 duk_8_pal", +"001f4ca0 000100 duk_8_eye1_TA_tex_txt", +"001f4da0 000100 duk_8_eye2_TA_tex_txt", +"001f4ea0 000100 duk_8_eye3_TA_tex_txt", +"001f4fa0 000100 duk_8_eye4_TA_tex_txt", +"001f50a0 000100 duk_8_eye5_TA_tex_txt", +"001f51a0 000100 duk_8_eye6_TA_tex_txt", +"001f52a0 000100 duk_8_eye7_TA_tex_txt", +"001f53a0 000100 duk_8_eye8_TA_tex_txt", +"001f54a0 000100 duk_8_mouth1_TA_tex_txt", +"001f55a0 000100 duk_8_mouth2_TA_tex_txt", +"001f56a0 000100 duk_8_mouth3_TA_tex_txt", +"001f57a0 000100 duk_8_mouth4_TA_tex_txt", +"001f58a0 000100 duk_8_mouth5_TA_tex_txt", +"001f59a0 000100 duk_8_mouth6_TA_tex_txt", +"001f5aa0 000400 duk_8_tmem_txt", +"", +"001f5ea0 000020 duk_9_pal", +"001f5ec0 000100 duk_9_eye1_TA_tex_txt", +"001f5fc0 000100 duk_9_eye2_TA_tex_txt", +"001f60c0 000100 duk_9_eye3_TA_tex_txt", +"001f61c0 000100 duk_9_eye4_TA_tex_txt", +"001f62c0 000100 duk_9_eye5_TA_tex_txt", +"001f63c0 000100 duk_9_eye6_TA_tex_txt", +"001f64c0 000100 duk_9_eye7_TA_tex_txt", +"001f65c0 000100 duk_9_eye8_TA_tex_txt", +"001f66c0 000100 duk_9_mouth1_TA_tex_txt", +"001f67c0 000100 duk_9_mouth2_TA_tex_txt", +"001f68c0 000100 duk_9_mouth3_TA_tex_txt", +"001f69c0 000100 duk_9_mouth4_TA_tex_txt", +"001f6ac0 000100 duk_9_mouth5_TA_tex_txt", +"001f6bc0 000100 duk_9_mouth6_TA_tex_txt", +"001f6cc0 000400 duk_9_tmem_txt", +"", +"001f70c0 000020 duk_10_pal", +"001f70e0 000100 duk_10_eye1_TA_tex_txt", +"001f71e0 000100 duk_10_eye2_TA_tex_txt", +"001f72e0 000100 duk_10_eye3_TA_tex_txt", +"001f73e0 000100 duk_10_eye4_TA_tex_txt", +"001f74e0 000100 duk_10_eye5_TA_tex_txt", +"001f75e0 000100 duk_10_eye6_TA_tex_txt", +"001f76e0 000100 duk_10_eye7_TA_tex_txt", +"001f77e0 000100 duk_10_eye8_TA_tex_txt", +"001f78e0 000100 duk_10_mouth1_TA_tex_txt", +"001f79e0 000100 duk_10_mouth2_TA_tex_txt", +"001f7ae0 000100 duk_10_mouth3_TA_tex_txt", +"001f7be0 000100 duk_10_mouth4_TA_tex_txt", +"001f7ce0 000100 duk_10_mouth5_TA_tex_txt", +"001f7de0 000100 duk_10_mouth6_TA_tex_txt", +"001f7ee0 000400 duk_10_tmem_txt", +"", +"001f8330 0017c0 elp_1_v", +"001f9af0 0001c0 head_elp_model", +"001f9cb0 000090 mouth_elp_model", +"001f9d40 000088 Rarm2_elp_model", +"001f9dc8 000078 Rarm1_elp_model", +"001f9e40 000088 Larm2_elp_model", +"001f9ec8 000078 Larm1_elp_model", +"001f9f40 0000a0 chest_elp_model", +"001f9fe0 000058 tail1_elp_model", +"001fa038 000090 tail2_elp_model", +"001fa0c8 000090 Rfoot2_elp_model", +"001fa158 000080 Rfoot1_elp_model", +"001fa1d8 000090 Lfoot2_elp_model", +"001fa268 000080 Lfoot1_elp_model", +"001fa2e8 000078 base_elp_model", +"001fa360 000138 cKF_je_r_elp_1_tbl", +"001fa498 000008 cKF_bs_r_elp_1", +"", +"001fa4a0 000020 elp_1_pal", +"001fa4c0 000100 elp_1_eye1_TA_tex_txt", +"001fa5c0 000100 elp_1_eye2_TA_tex_txt", +"001fa6c0 000100 elp_1_eye3_TA_tex_txt", +"001fa7c0 000100 elp_1_eye4_TA_tex_txt", +"001fa8c0 000100 elp_1_eye5_TA_tex_txt", +"001fa9c0 000100 elp_1_eye6_TA_tex_txt", +"001faac0 000100 elp_1_eye7_TA_tex_txt", +"001fabc0 000100 elp_1_eye8_TA_tex_txt", +"001facc0 000100 elp_1_mouth1_TA_tex_txt", +"001fadc0 000100 elp_1_mouth2_TA_tex_txt", +"001faec0 000100 elp_1_mouth3_TA_tex_txt", +"001fafc0 000100 elp_1_mouth4_TA_tex_txt", +"001fb0c0 000100 elp_1_mouth5_TA_tex_txt", +"001fb1c0 000100 elp_1_mouth6_TA_tex_txt", +"001fb2c0 000400 elp_1_tmem_txt", +"", +"001fb6c0 000020 elp_2_pal", +"001fb6e0 000100 elp_2_eye1_TA_tex_txt", +"001fb7e0 000100 elp_2_eye2_TA_tex_txt", +"001fb8e0 000100 elp_2_eye3_TA_tex_txt", +"001fb9e0 000100 elp_2_eye4_TA_tex_txt", +"001fbae0 000100 elp_2_eye5_TA_tex_txt", +"001fbbe0 000100 elp_2_eye6_TA_tex_txt", +"001fbce0 000100 elp_2_eye7_TA_tex_txt", +"001fbde0 000100 elp_2_eye8_TA_tex_txt", +"001fbee0 000100 elp_2_mouth1_TA_tex_txt", +"001fbfe0 000100 elp_2_mouth2_TA_tex_txt", +"001fc0e0 000100 elp_2_mouth3_TA_tex_txt", +"001fc1e0 000100 elp_2_mouth4_TA_tex_txt", +"001fc2e0 000100 elp_2_mouth5_TA_tex_txt", +"001fc3e0 000100 elp_2_mouth6_TA_tex_txt", +"001fc4e0 000400 elp_2_tmem_txt", +"", +"001fc8e0 000020 elp_3_pal", +"001fc900 000100 elp_3_eye1_TA_tex_txt", +"001fca00 000100 elp_3_eye2_TA_tex_txt", +"001fcb00 000100 elp_3_eye3_TA_tex_txt", +"001fcc00 000100 elp_3_eye4_TA_tex_txt", +"001fcd00 000100 elp_3_eye5_TA_tex_txt", +"001fce00 000100 elp_3_eye6_TA_tex_txt", +"001fcf00 000100 elp_3_eye7_TA_tex_txt", +"001fd000 000100 elp_3_eye8_TA_tex_txt", +"001fd100 000100 elp_3_mouth1_TA_tex_txt", +"001fd200 000100 elp_3_mouth2_TA_tex_txt", +"001fd300 000100 elp_3_mouth3_TA_tex_txt", +"001fd400 000100 elp_3_mouth4_TA_tex_txt", +"001fd500 000100 elp_3_mouth5_TA_tex_txt", +"001fd600 000100 elp_3_mouth6_TA_tex_txt", +"001fd700 000400 elp_3_tmem_txt", +"", +"001fdb00 000020 elp_4_pal", +"001fdb20 000100 elp_4_eye1_TA_tex_txt", +"001fdc20 000100 elp_4_eye2_TA_tex_txt", +"001fdd20 000100 elp_4_eye3_TA_tex_txt", +"001fde20 000100 elp_4_eye4_TA_tex_txt", +"001fdf20 000100 elp_4_eye5_TA_tex_txt", +"001fe020 000100 elp_4_eye6_TA_tex_txt", +"001fe120 000100 elp_4_eye7_TA_tex_txt", +"001fe220 000100 elp_4_eye8_TA_tex_txt", +"001fe320 000100 elp_4_mouth1_TA_tex_txt", +"001fe420 000100 elp_4_mouth2_TA_tex_txt", +"001fe520 000100 elp_4_mouth3_TA_tex_txt", +"001fe620 000100 elp_4_mouth4_TA_tex_txt", +"001fe720 000100 elp_4_mouth5_TA_tex_txt", +"001fe820 000100 elp_4_mouth6_TA_tex_txt", +"001fe920 000400 elp_4_tmem_txt", +"", +"001fed20 000020 elp_5_pal", +"001fed40 000100 elp_5_eye1_TA_tex_txt", +"001fee40 000100 elp_5_eye2_TA_tex_txt", +"001fef40 000100 elp_5_eye3_TA_tex_txt", +"001ff040 000100 elp_5_eye4_TA_tex_txt", +"001ff140 000100 elp_5_eye5_TA_tex_txt", +"001ff240 000100 elp_5_eye6_TA_tex_txt", +"001ff340 000100 elp_5_eye7_TA_tex_txt", +"001ff440 000100 elp_5_eye8_TA_tex_txt", +"001ff540 000100 elp_5_mouth1_TA_tex_txt", +"001ff640 000100 elp_5_mouth2_TA_tex_txt", +"001ff740 000100 elp_5_mouth3_TA_tex_txt", +"001ff840 000100 elp_5_mouth4_TA_tex_txt", +"001ff940 000100 elp_5_mouth5_TA_tex_txt", +"001ffa40 000100 elp_5_mouth6_TA_tex_txt", +"001ffb40 000400 elp_5_tmem_txt", +"", +"001fff40 000020 elp_6_pal", +"001fff60 000100 elp_6_eye1_TA_tex_txt", +"00200060 000100 elp_6_eye2_TA_tex_txt", +"00200160 000100 elp_6_eye3_TA_tex_txt", +"00200260 000100 elp_6_eye4_TA_tex_txt", +"00200360 000100 elp_6_eye5_TA_tex_txt", +"00200460 000100 elp_6_eye6_TA_tex_txt", +"00200560 000100 elp_6_eye7_TA_tex_txt", +"00200660 000100 elp_6_eye8_TA_tex_txt", +"00200760 000100 elp_6_mouth1_TA_tex_txt", +"00200860 000100 elp_6_mouth2_TA_tex_txt", +"00200960 000100 elp_6_mouth3_TA_tex_txt", +"00200a60 000100 elp_6_mouth4_TA_tex_txt", +"00200b60 000100 elp_6_mouth5_TA_tex_txt", +"00200c60 000100 elp_6_mouth6_TA_tex_txt", +"00200d60 000400 elp_6_tmem_txt", +"", +"00201160 000020 elp_7_pal", +"00201180 000100 elp_7_eye1_TA_tex_txt", +"00201280 000100 elp_7_eye2_TA_tex_txt", +"00201380 000100 elp_7_eye3_TA_tex_txt", +"00201480 000100 elp_7_eye4_TA_tex_txt", +"00201580 000100 elp_7_eye5_TA_tex_txt", +"00201680 000100 elp_7_eye6_TA_tex_txt", +"00201780 000100 elp_7_eye7_TA_tex_txt", +"00201880 000100 elp_7_eye8_TA_tex_txt", +"00201980 000100 elp_7_mouth1_TA_tex_txt", +"00201a80 000100 elp_7_mouth2_TA_tex_txt", +"00201b80 000100 elp_7_mouth3_TA_tex_txt", +"00201c80 000100 elp_7_mouth4_TA_tex_txt", +"00201d80 000100 elp_7_mouth5_TA_tex_txt", +"00201e80 000100 elp_7_mouth6_TA_tex_txt", +"00201f80 000400 elp_7_tmem_txt", +"", +"0020a880 001240 flg_1_v", +"0020bac0 000148 head_flg_model", +"0020bc08 000088 Rarm2_flg_model", +"0020bc90 000078 Rarm1_flg_model", +"0020bd08 000088 Larm2_flg_model", +"0020bd90 000078 Larm1_flg_model", +"0020be08 0000a8 chest_flg_model", +"0020beb0 000080 Rfoot2_flg_model", +"0020bf30 0000c0 Rfoot1_flg_model", +"0020bff0 000080 Lfoot2_flg_model", +"0020c070 0000c0 Lfoot1_flg_model", +"0020c130 000070 base_flg_model", +"0020c1a0 000138 cKF_je_r_flg_1_tbl", +"0020c2d8 000008 cKF_bs_r_flg_1", +"", +"0020c2e0 000020 flg_1_pal", +"0020c300 000100 flg_1_eye1_TA_tex_txt", +"0020c400 000100 flg_1_eye2_TA_tex_txt", +"0020c500 000100 flg_1_eye3_TA_tex_txt", +"0020c600 000100 flg_1_eye4_TA_tex_txt", +"0020c700 000100 flg_1_eye5_TA_tex_txt", +"0020c800 000100 flg_1_eye6_TA_tex_txt", +"0020c900 000100 flg_1_eye7_TA_tex_txt", +"0020ca00 000100 flg_1_eye8_TA_tex_txt", +"0020cb00 000100 flg_1_mouth1_TA_tex_txt", +"0020cc00 000100 flg_1_mouth2_TA_tex_txt", +"0020cd00 000100 flg_1_mouth3_TA_tex_txt", +"0020ce00 000100 flg_1_mouth4_TA_tex_txt", +"0020cf00 000100 flg_1_mouth5_TA_tex_txt", +"0020d000 000100 flg_1_mouth6_TA_tex_txt", +"0020d100 000400 flg_1_tmem_txt", +"", +"0020d500 000020 flg_2_pal", +"0020d520 000100 flg_2_eye1_TA_tex_txt", +"0020d620 000100 flg_2_eye2_TA_tex_txt", +"0020d720 000100 flg_2_eye3_TA_tex_txt", +"0020d820 000100 flg_2_eye4_TA_tex_txt", +"0020d920 000100 flg_2_eye5_TA_tex_txt", +"0020da20 000100 flg_2_eye6_TA_tex_txt", +"0020db20 000100 flg_2_eye7_TA_tex_txt", +"0020dc20 000100 flg_2_eye8_TA_tex_txt", +"0020dd20 000100 flg_2_mouth1_TA_tex_txt", +"0020de20 000100 flg_2_mouth2_TA_tex_txt", +"0020df20 000100 flg_2_mouth3_TA_tex_txt", +"0020e020 000100 flg_2_mouth4_TA_tex_txt", +"0020e120 000100 flg_2_mouth5_TA_tex_txt", +"0020e220 000100 flg_2_mouth6_TA_tex_txt", +"0020e320 000400 flg_2_tmem_txt", +"", +"0020e720 000020 flg_11_pal", +"0020e740 000100 flg_11_eye1_TA_tex_txt", +"0020e840 000100 flg_11_eye2_TA_tex_txt", +"0020e940 000100 flg_11_eye3_TA_tex_txt", +"0020ea40 000100 flg_11_eye4_TA_tex_txt", +"0020eb40 000100 flg_11_eye5_TA_tex_txt", +"0020ec40 000100 flg_11_eye6_TA_tex_txt", +"0020ed40 000100 flg_11_eye7_TA_tex_txt", +"0020ee40 000100 flg_11_eye8_TA_tex_txt", +"0020ef40 000100 flg_11_mouth1_TA_tex_txt", +"0020f040 000100 flg_11_mouth2_TA_tex_txt", +"0020f140 000100 flg_11_mouth3_TA_tex_txt", +"0020f240 000100 flg_11_mouth4_TA_tex_txt", +"0020f340 000100 flg_11_mouth5_TA_tex_txt", +"0020f440 000100 flg_11_mouth6_TA_tex_txt", +"0020f540 000400 flg_11_tmem_txt", +"", +"0020f940 000020 flg_12_pal", +"0020f960 000100 flg_12_eye1_TA_tex_txt", +"0020fa60 000100 flg_12_eye2_TA_tex_txt", +"0020fb60 000100 flg_12_eye3_TA_tex_txt", +"0020fc60 000100 flg_12_eye4_TA_tex_txt", +"0020fd60 000100 flg_12_eye5_TA_tex_txt", +"0020fe60 000100 flg_12_eye6_TA_tex_txt", +"0020ff60 000100 flg_12_eye7_TA_tex_txt", +"00210060 000100 flg_12_eye8_TA_tex_txt", +"00210160 000100 flg_12_mouth1_TA_tex_txt", +"00210260 000100 flg_12_mouth2_TA_tex_txt", +"00210360 000100 flg_12_mouth3_TA_tex_txt", +"00210460 000100 flg_12_mouth4_TA_tex_txt", +"00210560 000100 flg_12_mouth5_TA_tex_txt", +"00210660 000100 flg_12_mouth6_TA_tex_txt", +"00210760 000380 flg_12_tmem_txt", +"", +"00210ae0 000020 flg_13_pal", +"00210b00 000100 flg_13_eye1_TA_tex_txt", +"00210c00 000100 flg_13_eye2_TA_tex_txt", +"00210d00 000100 flg_13_eye3_TA_tex_txt", +"00210e00 000100 flg_13_eye4_TA_tex_txt", +"00210f00 000100 flg_13_eye5_TA_tex_txt", +"00211000 000100 flg_13_eye6_TA_tex_txt", +"00211100 000100 flg_13_eye7_TA_tex_txt", +"00211200 000100 flg_13_eye8_TA_tex_txt", +"00211300 000100 flg_13_mouth1_TA_tex_txt", +"00211400 000100 flg_13_mouth2_TA_tex_txt", +"00211500 000100 flg_13_mouth3_TA_tex_txt", +"00211600 000100 flg_13_mouth4_TA_tex_txt", +"00211700 000100 flg_13_mouth5_TA_tex_txt", +"00211800 000100 flg_13_mouth6_TA_tex_txt", +"00211900 000400 flg_13_tmem_txt", +"", +"00211d00 000020 flg_3_pal", +"00211d20 000100 flg_3_eye1_TA_tex_txt", +"00211e20 000100 flg_3_eye2_TA_tex_txt", +"00211f20 000100 flg_3_eye3_TA_tex_txt", +"00212020 000100 flg_3_eye4_TA_tex_txt", +"00212120 000100 flg_3_eye5_TA_tex_txt", +"00212220 000100 flg_3_eye6_TA_tex_txt", +"00212320 000100 flg_3_eye7_TA_tex_txt", +"00212420 000100 flg_3_eye8_TA_tex_txt", +"00212520 000100 flg_3_mouth1_TA_tex_txt", +"00212620 000100 flg_3_mouth2_TA_tex_txt", +"00212720 000100 flg_3_mouth3_TA_tex_txt", +"00212820 000100 flg_3_mouth4_TA_tex_txt", +"00212920 000100 flg_3_mouth5_TA_tex_txt", +"00212a20 000100 flg_3_mouth6_TA_tex_txt", +"00212b20 000400 flg_3_tmem_txt", +"", +"00212f20 000020 flg_4_pal", +"00212f40 000100 flg_4_eye1_TA_tex_txt", +"00213040 000100 flg_4_eye2_TA_tex_txt", +"00213140 000100 flg_4_eye3_TA_tex_txt", +"00213240 000100 flg_4_eye4_TA_tex_txt", +"00213340 000100 flg_4_eye5_TA_tex_txt", +"00213440 000100 flg_4_eye6_TA_tex_txt", +"00213540 000100 flg_4_eye7_TA_tex_txt", +"00213640 000100 flg_4_eye8_TA_tex_txt", +"00213740 000100 flg_4_mouth1_TA_tex_txt", +"00213840 000100 flg_4_mouth2_TA_tex_txt", +"00213940 000100 flg_4_mouth3_TA_tex_txt", +"00213a40 000100 flg_4_mouth4_TA_tex_txt", +"00213b40 000100 flg_4_mouth5_TA_tex_txt", +"00213c40 000100 flg_4_mouth6_TA_tex_txt", +"00213d40 000400 flg_4_tmem_txt", +"", +"00214140 000020 flg_5_pal", +"00214160 000100 flg_5_eye1_TA_tex_txt", +"00214260 000100 flg_5_eye2_TA_tex_txt", +"00214360 000100 flg_5_eye3_TA_tex_txt", +"00214460 000100 flg_5_eye4_TA_tex_txt", +"00214560 000100 flg_5_eye5_TA_tex_txt", +"00214660 000100 flg_5_eye6_TA_tex_txt", +"00214760 000100 flg_5_eye7_TA_tex_txt", +"00214860 000100 flg_5_eye8_TA_tex_txt", +"00214960 000100 flg_5_mouth1_TA_tex_txt", +"00214a60 000100 flg_5_mouth2_TA_tex_txt", +"00214b60 000100 flg_5_mouth3_TA_tex_txt", +"00214c60 000100 flg_5_mouth4_TA_tex_txt", +"00214d60 000100 flg_5_mouth5_TA_tex_txt", +"00214e60 000100 flg_5_mouth6_TA_tex_txt", +"00214f60 000400 flg_5_tmem_txt", +"", +"00215360 000020 flg_6_pal", +"00215380 000100 flg_6_eye1_TA_tex_txt", +"00215480 000100 flg_6_eye2_TA_tex_txt", +"00215580 000100 flg_6_eye3_TA_tex_txt", +"00215680 000100 flg_6_eye4_TA_tex_txt", +"00215780 000100 flg_6_eye5_TA_tex_txt", +"00215880 000100 flg_6_eye6_TA_tex_txt", +"00215980 000100 flg_6_eye7_TA_tex_txt", +"00215a80 000100 flg_6_eye8_TA_tex_txt", +"00215b80 000100 flg_6_mouth1_TA_tex_txt", +"00215c80 000100 flg_6_mouth2_TA_tex_txt", +"00215d80 000100 flg_6_mouth3_TA_tex_txt", +"00215e80 000100 flg_6_mouth4_TA_tex_txt", +"00215f80 000100 flg_6_mouth5_TA_tex_txt", +"00216080 000100 flg_6_mouth6_TA_tex_txt", +"00216180 000400 flg_6_tmem_txt", +"", +"00216580 000020 flg_7_pal", +"002165a0 000100 flg_7_eye1_TA_tex_txt", +"002166a0 000100 flg_7_eye2_TA_tex_txt", +"002167a0 000100 flg_7_eye3_TA_tex_txt", +"002168a0 000100 flg_7_eye4_TA_tex_txt", +"002169a0 000100 flg_7_eye5_TA_tex_txt", +"00216aa0 000100 flg_7_eye6_TA_tex_txt", +"00216ba0 000100 flg_7_eye7_TA_tex_txt", +"00216ca0 000100 flg_7_eye8_TA_tex_txt", +"00216da0 000100 flg_7_mouth1_TA_tex_txt", +"00216ea0 000100 flg_7_mouth2_TA_tex_txt", +"00216fa0 000100 flg_7_mouth3_TA_tex_txt", +"002170a0 000100 flg_7_mouth4_TA_tex_txt", +"002171a0 000100 flg_7_mouth5_TA_tex_txt", +"002172a0 000100 flg_7_mouth6_TA_tex_txt", +"002173a0 000400 flg_7_tmem_txt", +"", +"002177a0 000020 flg_8_pal", +"002177c0 000100 flg_8_eye1_TA_tex_txt", +"002178c0 000100 flg_8_eye2_TA_tex_txt", +"002179c0 000100 flg_8_eye3_TA_tex_txt", +"00217ac0 000100 flg_8_eye4_TA_tex_txt", +"00217bc0 000100 flg_8_eye5_TA_tex_txt", +"00217cc0 000100 flg_8_eye6_TA_tex_txt", +"00217dc0 000100 flg_8_eye7_TA_tex_txt", +"00217ec0 000100 flg_8_eye8_TA_tex_txt", +"00217fc0 000100 flg_8_mouth1_TA_tex_txt", +"002180c0 000100 flg_8_mouth2_TA_tex_txt", +"002181c0 000100 flg_8_mouth3_TA_tex_txt", +"002182c0 000100 flg_8_mouth4_TA_tex_txt", +"002183c0 000100 flg_8_mouth5_TA_tex_txt", +"002184c0 000100 flg_8_mouth6_TA_tex_txt", +"002185c0 000400 flg_8_tmem_txt", +"", +"002189c0 000020 flg_9_pal", +"002189e0 000100 flg_9_eye1_TA_tex_txt", +"00218ae0 000100 flg_9_eye2_TA_tex_txt", +"00218be0 000100 flg_9_eye3_TA_tex_txt", +"00218ce0 000100 flg_9_eye4_TA_tex_txt", +"00218de0 000100 flg_9_eye5_TA_tex_txt", +"00218ee0 000100 flg_9_eye6_TA_tex_txt", +"00218fe0 000100 flg_9_eye7_TA_tex_txt", +"002190e0 000100 flg_9_eye8_TA_tex_txt", +"002191e0 000100 flg_9_mouth1_TA_tex_txt", +"002192e0 000100 flg_9_mouth2_TA_tex_txt", +"002193e0 000100 flg_9_mouth3_TA_tex_txt", +"002194e0 000100 flg_9_mouth4_TA_tex_txt", +"002195e0 000100 flg_9_mouth5_TA_tex_txt", +"002196e0 000100 flg_9_mouth6_TA_tex_txt", +"002197e0 000400 flg_9_tmem_txt", +"", +"00219be0 000020 flg_10_pal", +"00219c00 000100 flg_10_eye1_TA_tex_txt", +"00219d00 000100 flg_10_eye2_TA_tex_txt", +"00219e00 000100 flg_10_eye3_TA_tex_txt", +"00219f00 000100 flg_10_eye4_TA_tex_txt", +"0021a000 000100 flg_10_eye5_TA_tex_txt", +"0021a100 000100 flg_10_eye6_TA_tex_txt", +"0021a200 000100 flg_10_eye7_TA_tex_txt", +"0021a300 000100 flg_10_eye8_TA_tex_txt", +"0021a400 000100 flg_10_mouth1_TA_tex_txt", +"0021a500 000100 flg_10_mouth2_TA_tex_txt", +"0021a600 000100 flg_10_mouth3_TA_tex_txt", +"0021a700 000100 flg_10_mouth4_TA_tex_txt", +"0021a800 000100 flg_10_mouth5_TA_tex_txt", +"0021a900 000100 flg_10_mouth6_TA_tex_txt", +"0021aa00 000400 flg_10_tmem_txt", +"", +"0021ae00 001b30 rcf_1_v", +"0021c930 000230 head_rcf_model", +"0021cb60 000078 mouth_rcf_model", +"0021cbd8 0000e0 hand_rcf_model", +"0021ccb8 000088 Rarm2_rcf_model", +"0021cd40 000078 Rarm1_rcf_model", +"0021cdb8 000088 Larm2_rcf_model", +"0021ce40 000078 Larm1_rcf_model", +"0021ceb8 000108 chest_rcf_model", +"0021cfc0 000078 tail1_rcf_model", +"0021d038 0000a0 tail2_rcf_model", +"0021d0d8 000080 Rfoot2_rcf_model", +"0021d158 000058 Rfoot1_rcf_model", +"0021d1b0 000080 Lfoot2_rcf_model", +"0021d230 000058 Lfoot1_rcf_model", +"0021d288 0000d8 base_rcf_model", +"0021d360 000138 cKF_je_r_rcf_1_tbl", +"0021d498 000008 cKF_bs_r_rcf_1", +"", +"0021d4a0 000020 rcf_1_pal", +"0021d4c0 000100 rcf_1_eye1_TA_tex_txt", +"0021d5c0 000100 rcf_1_eye2_TA_tex_txt", +"0021d6c0 000100 rcf_1_eye3_TA_tex_txt", +"0021d7c0 000100 rcf_1_eye4_TA_tex_txt", +"0021d8c0 000100 rcf_1_eye5_TA_tex_txt", +"0021d9c0 000100 rcf_1_eye6_TA_tex_txt", +"0021dac0 000100 rcf_1_eye7_TA_tex_txt", +"0021dbc0 000100 rcf_1_eye8_TA_tex_txt", +"0021dcc0 000700 rcf_1_tmem_txt", +"", +"0021f608 001110 gst_1_v", +"00220718 000218 head_gst_model", +"00220930 000050 feel_gst_model", +"00220980 0000a8 chest_gst_model", +"00220a28 0000a8 tail1_gst_model", +"00220ad0 000070 base_gst_model", +"00220b40 000138 cKF_je_r_gst_1_tbl", +"00220c78 000008 cKF_bs_r_gst_1", +"", +"00220c80 000020 gst_1_pal", +"00220ca0 000100 gst_1_eye1_TA_tex_txt", +"00220da0 000100 gst_1_eye2_TA_tex_txt", +"00220ea0 000100 gst_1_eye3_TA_tex_txt", +"00220fa0 000100 gst_1_eye4_TA_tex_txt", +"002210a0 000100 gst_1_eye5_TA_tex_txt", +"002211a0 000100 gst_1_eye6_TA_tex_txt", +"002212a0 000100 gst_1_eye7_TA_tex_txt", +"002213a0 000100 gst_1_eye8_TA_tex_txt", +"002214a0 000100 gst_1_mouth1_TA_tex_txt", +"002215a0 000100 gst_1_mouth2_TA_tex_txt", +"002216a0 000100 gst_1_mouth3_TA_tex_txt", +"002217a0 000100 gst_1_mouth4_TA_tex_txt", +"002218a0 000100 gst_1_mouth5_TA_tex_txt", +"002219a0 000100 gst_1_mouth6_TA_tex_txt", +"00221aa0 000180 gst_1_tmem_txt", +"", +"00224230 001640 goa_1_v", +"00225870 000220 head_goa_model", +"00225a90 000070 mouth_goa_model", +"00225b00 000088 Rarm2_goa_model", +"00225b88 000078 Rarm1_goa_model", +"00225c00 000088 Larm2_goa_model", +"00225c88 000078 Larm1_goa_model", +"00225d00 0000a0 chest_goa_model", +"00225da0 000060 tail1_goa_model", +"00225e00 000080 Rfoot2_goa_model", +"00225e80 000080 Rfoot1_goa_model", +"00225f00 000080 Lfoot2_goa_model", +"00225f80 000080 Lfoot1_goa_model", +"00226000 0000a8 base_goa_model", +"002260a8 000138 cKF_je_r_goa_1_tbl", +"002261e0 000008 cKF_bs_r_goa_1", +"", +"00226200 000020 goa_1_pal", +"00226220 000100 goa_1_eye1_TA_tex_txt", +"00226320 000100 goa_1_eye2_TA_tex_txt", +"00226420 000100 goa_1_eye3_TA_tex_txt", +"00226520 000100 goa_1_eye4_TA_tex_txt", +"00226620 000100 goa_1_eye5_TA_tex_txt", +"00226720 000100 goa_1_eye6_TA_tex_txt", +"00226820 000100 goa_1_eye7_TA_tex_txt", +"00226920 000100 goa_1_eye8_TA_tex_txt", +"00226a20 000100 goa_1_mouth1_TA_tex_txt", +"00226b20 000100 goa_1_mouth2_TA_tex_txt", +"00226c20 000100 goa_1_mouth3_TA_tex_txt", +"00226d20 000100 goa_1_mouth4_TA_tex_txt", +"00226e20 000100 goa_1_mouth5_TA_tex_txt", +"00226f20 000100 goa_1_mouth6_TA_tex_txt", +"00227020 000400 goa_1_tmem_txt", +"", +"00227420 000020 goa_2_pal", +"00227440 000100 goa_2_eye1_TA_tex_txt", +"00227540 000100 goa_2_eye2_TA_tex_txt", +"00227640 000100 goa_2_eye3_TA_tex_txt", +"00227740 000100 goa_2_eye4_TA_tex_txt", +"00227840 000100 goa_2_eye5_TA_tex_txt", +"00227940 000100 goa_2_eye6_TA_tex_txt", +"00227a40 000100 goa_2_eye7_TA_tex_txt", +"00227b40 000100 goa_2_eye8_TA_tex_txt", +"00227c40 000100 goa_2_mouth1_TA_tex_txt", +"00227d40 000100 goa_2_mouth2_TA_tex_txt", +"00227e40 000100 goa_2_mouth3_TA_tex_txt", +"00227f40 000100 goa_2_mouth4_TA_tex_txt", +"00228040 000100 goa_2_mouth5_TA_tex_txt", +"00228140 000100 goa_2_mouth6_TA_tex_txt", +"00228240 000400 goa_2_tmem_txt", +"", +"00228640 000020 goa_3_pal", +"00228660 000100 goa_3_eye1_TA_tex_txt", +"00228760 000100 goa_3_eye2_TA_tex_txt", +"00228860 000100 goa_3_eye3_TA_tex_txt", +"00228960 000100 goa_3_eye4_TA_tex_txt", +"00228a60 000100 goa_3_eye5_TA_tex_txt", +"00228b60 000100 goa_3_eye6_TA_tex_txt", +"00228c60 000100 goa_3_eye7_TA_tex_txt", +"00228d60 000100 goa_3_eye8_TA_tex_txt", +"00228e60 000100 goa_3_mouth1_TA_tex_txt", +"00228f60 000100 goa_3_mouth2_TA_tex_txt", +"00229060 000100 goa_3_mouth3_TA_tex_txt", +"00229160 000100 goa_3_mouth4_TA_tex_txt", +"00229260 000100 goa_3_mouth5_TA_tex_txt", +"00229360 000100 goa_3_mouth6_TA_tex_txt", +"00229460 000400 goa_3_tmem_txt", +"", +"00229860 000020 goa_4_pal", +"00229880 000100 goa_4_eye1_TA_tex_txt", +"00229980 000100 goa_4_eye2_TA_tex_txt", +"00229a80 000100 goa_4_eye3_TA_tex_txt", +"00229b80 000100 goa_4_eye4_TA_tex_txt", +"00229c80 000100 goa_4_eye5_TA_tex_txt", +"00229d80 000100 goa_4_eye6_TA_tex_txt", +"00229e80 000100 goa_4_eye7_TA_tex_txt", +"00229f80 000100 goa_4_eye8_TA_tex_txt", +"0022a080 000100 goa_4_mouth1_TA_tex_txt", +"0022a180 000100 goa_4_mouth2_TA_tex_txt", +"0022a280 000100 goa_4_mouth3_TA_tex_txt", +"0022a380 000100 goa_4_mouth4_TA_tex_txt", +"0022a480 000100 goa_4_mouth5_TA_tex_txt", +"0022a580 000100 goa_4_mouth6_TA_tex_txt", +"0022a680 000400 goa_4_tmem_txt", +"", +"0022aa80 000020 goa_5_pal", +"0022aaa0 000100 goa_5_eye1_TA_tex_txt", +"0022aba0 000100 goa_5_eye2_TA_tex_txt", +"0022aca0 000100 goa_5_eye3_TA_tex_txt", +"0022ada0 000100 goa_5_eye4_TA_tex_txt", +"0022aea0 000100 goa_5_eye5_TA_tex_txt", +"0022afa0 000100 goa_5_eye6_TA_tex_txt", +"0022b0a0 000100 goa_5_eye7_TA_tex_txt", +"0022b1a0 000100 goa_5_eye8_TA_tex_txt", +"0022b2a0 000100 goa_5_mouth1_TA_tex_txt", +"0022b3a0 000100 goa_5_mouth2_TA_tex_txt", +"0022b4a0 000100 goa_5_mouth3_TA_tex_txt", +"0022b5a0 000100 goa_5_mouth4_TA_tex_txt", +"0022b6a0 000100 goa_5_mouth5_TA_tex_txt", +"0022b7a0 000100 goa_5_mouth6_TA_tex_txt", +"0022b8a0 000400 goa_5_tmem_txt", +"", +"0022bca0 000020 goa_6_pal", +"0022bcc0 000100 goa_6_eye1_TA_tex_txt", +"0022bdc0 000100 goa_6_eye2_TA_tex_txt", +"0022bec0 000100 goa_6_eye3_TA_tex_txt", +"0022bfc0 000100 goa_6_eye4_TA_tex_txt", +"0022c0c0 000100 goa_6_eye5_TA_tex_txt", +"0022c1c0 000100 goa_6_eye6_TA_tex_txt", +"0022c2c0 000100 goa_6_eye7_TA_tex_txt", +"0022c3c0 000100 goa_6_eye8_TA_tex_txt", +"0022c4c0 000100 goa_6_mouth1_TA_tex_txt", +"0022c5c0 000100 goa_6_mouth2_TA_tex_txt", +"0022c6c0 000100 goa_6_mouth3_TA_tex_txt", +"0022c7c0 000100 goa_6_mouth4_TA_tex_txt", +"0022c8c0 000100 goa_6_mouth5_TA_tex_txt", +"0022c9c0 000100 goa_6_mouth6_TA_tex_txt", +"0022cac0 000400 goa_6_tmem_txt", +"", +"0022cec0 001ad0 gor_1_v", +"0022e990 000220 head_gor_model", +"0022ebb0 0000f0 mouth_gor_model", +"0022eca0 0000a0 Rarm2_gor_model", +"0022ed40 000090 Rarm1_gor_model", +"0022edd0 0000a0 Larm2_gor_model", +"0022ee70 000090 Larm1_gor_model", +"0022ef00 0000d8 chest_gor_model", +"0022efd8 000090 Rfoot2_gor_model", +"0022f068 0000c0 Rfoot1_gor_model", +"0022f128 000090 Lfoot2_gor_model", +"0022f1b8 0000c0 Lfoot1_gor_model", +"0022f278 000090 base_gor_model", +"0022f308 000138 cKF_je_r_gor_1_tbl", +"0022f440 000008 cKF_bs_r_gor_1", +"", +"0022f460 000020 gor_1_pal", +"0022f480 000100 gor_1_eye1_TA_tex_txt", +"0022f580 000100 gor_1_eye2_TA_tex_txt", +"0022f680 000100 gor_1_eye3_TA_tex_txt", +"0022f780 000100 gor_1_eye4_TA_tex_txt", +"0022f880 000100 gor_1_eye5_TA_tex_txt", +"0022f980 000100 gor_1_eye6_TA_tex_txt", +"0022fa80 000100 gor_1_eye7_TA_tex_txt", +"0022fb80 000100 gor_1_eye8_TA_tex_txt", +"0022fc80 000100 gor_1_mouth1_TA_tex_txt", +"0022fd80 000100 gor_1_mouth2_TA_tex_txt", +"0022fe80 000100 gor_1_mouth3_TA_tex_txt", +"0022ff80 000100 gor_1_mouth4_TA_tex_txt", +"00230080 000100 gor_1_mouth5_TA_tex_txt", +"00230180 000100 gor_1_mouth6_TA_tex_txt", +"00230280 000400 gor_1_tmem_txt", +"", +"00230680 000020 gor_2_pal", +"002306a0 000100 gor_2_eye1_TA_tex_txt", +"002307a0 000100 gor_2_eye2_TA_tex_txt", +"002308a0 000100 gor_2_eye3_TA_tex_txt", +"002309a0 000100 gor_2_eye4_TA_tex_txt", +"00230aa0 000100 gor_2_eye5_TA_tex_txt", +"00230ba0 000100 gor_2_eye6_TA_tex_txt", +"00230ca0 000100 gor_2_eye7_TA_tex_txt", +"00230da0 000100 gor_2_eye8_TA_tex_txt", +"00230ea0 000100 gor_2_mouth1_TA_tex_txt", +"00230fa0 000100 gor_2_mouth2_TA_tex_txt", +"002310a0 000100 gor_2_mouth3_TA_tex_txt", +"002311a0 000100 gor_2_mouth4_TA_tex_txt", +"002312a0 000100 gor_2_mouth5_TA_tex_txt", +"002313a0 000100 gor_2_mouth6_TA_tex_txt", +"002314a0 000400 gor_2_tmem_txt", +"", +"002318a0 000020 gor_3_pal", +"002318c0 000100 gor_3_eye1_TA_tex_txt", +"002319c0 000100 gor_3_eye2_TA_tex_txt", +"00231ac0 000100 gor_3_eye3_TA_tex_txt", +"00231bc0 000100 gor_3_eye4_TA_tex_txt", +"00231cc0 000100 gor_3_eye5_TA_tex_txt", +"00231dc0 000100 gor_3_eye6_TA_tex_txt", +"00231ec0 000100 gor_3_eye7_TA_tex_txt", +"00231fc0 000100 gor_3_eye8_TA_tex_txt", +"002320c0 000100 gor_3_mouth1_TA_tex_txt", +"002321c0 000100 gor_3_mouth2_TA_tex_txt", +"002322c0 000100 gor_3_mouth3_TA_tex_txt", +"002323c0 000100 gor_3_mouth4_TA_tex_txt", +"002324c0 000100 gor_3_mouth5_TA_tex_txt", +"002325c0 000100 gor_3_mouth6_TA_tex_txt", +"002326c0 000400 gor_3_tmem_txt", +"", +"00232ac0 000020 gor_4_pal", +"00232ae0 000100 gor_4_eye1_TA_tex_txt", +"00232be0 000100 gor_4_eye2_TA_tex_txt", +"00232ce0 000100 gor_4_eye3_TA_tex_txt", +"00232de0 000100 gor_4_eye4_TA_tex_txt", +"00232ee0 000100 gor_4_eye5_TA_tex_txt", +"00232fe0 000100 gor_4_eye6_TA_tex_txt", +"002330e0 000100 gor_4_eye7_TA_tex_txt", +"002331e0 000100 gor_4_eye8_TA_tex_txt", +"002332e0 000100 gor_4_mouth1_TA_tex_txt", +"002333e0 000100 gor_4_mouth2_TA_tex_txt", +"002334e0 000100 gor_4_mouth3_TA_tex_txt", +"002335e0 000100 gor_4_mouth4_TA_tex_txt", +"002336e0 000100 gor_4_mouth5_TA_tex_txt", +"002337e0 000100 gor_4_mouth6_TA_tex_txt", +"002338e0 000400 gor_4_tmem_txt", +"", +"00233ce0 000020 gor_5_pal", +"00233d00 000100 gor_5_eye1_TA_tex_txt", +"00233e00 000100 gor_5_eye2_TA_tex_txt", +"00233f00 000100 gor_5_eye3_TA_tex_txt", +"00234000 000100 gor_5_eye4_TA_tex_txt", +"00234100 000100 gor_5_eye5_TA_tex_txt", +"00234200 000100 gor_5_eye6_TA_tex_txt", +"00234300 000100 gor_5_eye7_TA_tex_txt", +"00234400 000100 gor_5_eye8_TA_tex_txt", +"00234500 000100 gor_5_mouth1_TA_tex_txt", +"00234600 000100 gor_5_mouth2_TA_tex_txt", +"00234700 000100 gor_5_mouth3_TA_tex_txt", +"00234800 000100 gor_5_mouth4_TA_tex_txt", +"00234900 000100 gor_5_mouth5_TA_tex_txt", +"00234a00 000100 gor_5_mouth6_TA_tex_txt", +"00234b00 000400 gor_5_tmem_txt", +"", +"00234f00 0013b0 xct_1_v", +"002362b0 000190 head_xct_model", +"00236440 000088 Rarm2_xct_model", +"002364c8 000078 Rarm1_xct_model", +"00236540 000088 Larm2_xct_model", +"002365c8 000078 Larm1_xct_model", +"00236640 0000b0 chest_xct_model", +"002366f0 000058 tail1_xct_model", +"00236748 000090 tail2_xct_model", +"002367d8 000090 Rfoot2_xct_model", +"00236868 000058 Rfoot1_xct_model", +"002368c0 000090 Lfoot2_xct_model", +"00236950 000058 Lfoot1_xct_model", +"002369a8 000080 base_xct_model", +"00236a28 000138 cKF_je_r_xct_1_tbl", +"00236b60 000008 cKF_bs_r_xct_1", +"", +"00236b80 000020 xct_1_pal", +"00236ba0 000100 xct_1_eye1_TA_tex_txt", +"00236ca0 000100 xct_1_eye2_TA_tex_txt", +"00236da0 000100 xct_1_eye3_TA_tex_txt", +"00236ea0 000100 xct_1_eye4_TA_tex_txt", +"00236fa0 000100 xct_1_eye5_TA_tex_txt", +"002370a0 000100 xct_1_eye6_TA_tex_txt", +"002371a0 000100 xct_1_eye7_TA_tex_txt", +"002372a0 000100 xct_1_eye8_TA_tex_txt", +"002373a0 000100 xct_1_mouth1_TA_tex_txt", +"002374a0 000100 xct_1_mouth2_TA_tex_txt", +"002375a0 000100 xct_1_mouth3_TA_tex_txt", +"002376a0 000100 xct_1_mouth4_TA_tex_txt", +"002377a0 000100 xct_1_mouth5_TA_tex_txt", +"002378a0 000100 xct_1_mouth6_TA_tex_txt", +"002379a0 000580 xct_1_tmem_txt", +"", +"00247428 0016e0 bpt_1_v", +"00248b08 0001a8 head_bpt_model", +"00248cb0 000068 feel_bpt_model", +"00248d18 000088 mouth_bpt_model", +"00248da0 0000c8 Rarm2_bpt_model", +"00248e68 000090 Rarm1_bpt_model", +"00248ef8 0000c8 Larm2_bpt_model", +"00248fc0 000090 Larm1_bpt_model", +"00249050 0000b8 chest_bpt_model", +"00249108 000058 tail1_bpt_model", +"00249160 000090 tail2_bpt_model", +"002491f0 000060 Rfoot2_bpt_model", +"00249250 000080 Rfoot1_bpt_model", +"002492d0 000060 Lfoot2_bpt_model", +"00249330 000088 Lfoot1_bpt_model", +"002493b8 000088 base_bpt_model", +"00249440 000138 cKF_je_r_bpt_1_tbl", +"00249578 000008 cKF_bs_r_bpt_1", +"", +"00249580 000020 bpt_1_pal", +"002495a0 000100 bpt_1_eye1_TA_tex_txt", +"002496a0 000100 bpt_1_eye2_TA_tex_txt", +"002497a0 000100 bpt_1_eye3_TA_tex_txt", +"002498a0 000100 bpt_1_eye4_TA_tex_txt", +"002499a0 000100 bpt_1_eye5_TA_tex_txt", +"00249aa0 000100 bpt_1_eye6_TA_tex_txt", +"00249ba0 000100 bpt_1_eye7_TA_tex_txt", +"00249ca0 000100 bpt_1_eye8_TA_tex_txt", +"00249da0 000700 bpt_1_tmem_txt", +"", +"0024a4a0 001200 pkn_1_v", +"0024b6a0 000180 head_pkn_model", +"0024b820 000088 Rarm2_pkn_model", +"0024b8a8 000078 Rarm1_pkn_model", +"0024b920 000088 Larm2_pkn_model", +"0024b9a8 000078 Larm1_pkn_model", +"0024ba20 0000a0 chest_pkn_model", +"0024bac0 000080 Rfoot2_pkn_model", +"0024bb40 0000b0 Rfoot1_pkn_model", +"0024bbf0 000080 Lfoot2_pkn_model", +"0024bc70 0000b0 Lfoot1_pkn_model", +"0024bd20 000068 base_pkn_model", +"0024bd88 000138 cKF_je_r_pkn_1_tbl", +"0024bec0 000008 cKF_bs_r_pkn_1", +"", +"0024bee0 000020 pkn_1_pal", +"0024bf00 000680 pkn_1_tmem_txt", +"", +"0024e580 0014d0 hem_1_v", +"0024fa50 0001a0 head_hem_model", +"0024fbf0 000080 feel_hem_model", +"0024fc70 000090 mouth_hem_model", +"0024fd00 000088 Rarm2_hem_model", +"0024fd88 000058 Rarm1_hem_model", +"0024fde0 0000d0 chest_hem_model", +"0024feb0 0001f0 base_hem_model", +"002500a0 000138 cKF_je_r_hem_1_tbl", +"002501d8 000008 cKF_bs_r_hem_1", +"", +"002501e0 000020 hem_1_pal", +"00250200 000740 hem_1_tmem_txt", +"", +"00250940 001c60 hip_1_v", +"002525a0 0002d8 head_hip_model", +"00252878 0000c8 mouth_hip_model", +"00252940 000080 Rarm2_hip_model", +"002529c0 000078 Rarm1_hip_model", +"00252a38 000080 Larm2_hip_model", +"00252ab8 000078 Larm1_hip_model", +"00252b30 000090 chest_hip_model", +"00252bc0 000058 tail1_hip_model", +"00252c18 000050 tail2_hip_model", +"00252c68 000090 Rfoot2_hip_model", +"00252cf8 000088 Rfoot1_hip_model", +"00252d80 000088 lfoot1_hip_model", +"00252e08 000090 Lfoot2_hip_model", +"00252e98 000080 base_hip_model", +"00252f18 000138 cKF_je_r_hip_1_tbl", +"00253050 000008 cKF_bs_r_hip_1", +"", +"00253060 000020 hip_1_pal", +"00253080 000100 hip_1_eye1_TA_tex_txt", +"00253180 000100 hip_1_eye2_TA_tex_txt", +"00253280 000100 hip_1_eye3_TA_tex_txt", +"00253380 000100 hip_1_eye4_TA_tex_txt", +"00253480 000100 hip_1_eye5_TA_tex_txt", +"00253580 000100 hip_1_eye6_TA_tex_txt", +"00253680 000100 hip_1_eye7_TA_tex_txt", +"00253780 000100 hip_1_eye8_TA_tex_txt", +"00253880 000500 hip_1_tmem_txt", +"", +"00253d80 000020 hip_2_pal", +"00253da0 000100 hip_2_eye1_TA_tex_txt", +"00253ea0 000100 hip_2_eye2_TA_tex_txt", +"00253fa0 000100 hip_2_eye3_TA_tex_txt", +"002540a0 000100 hip_2_eye4_TA_tex_txt", +"002541a0 000100 hip_2_eye5_TA_tex_txt", +"002542a0 000100 hip_2_eye6_TA_tex_txt", +"002543a0 000100 hip_2_eye7_TA_tex_txt", +"002544a0 000100 hip_2_eye8_TA_tex_txt", +"002545a0 000500 hip_2_tmem_txt", +"", +"00254aa0 000020 hip_3_pal", +"00254ac0 000100 hip_3_eye1_TA_tex_txt", +"00254bc0 000100 hip_3_eye2_TA_tex_txt", +"00254cc0 000100 hip_3_eye3_TA_tex_txt", +"00254dc0 000100 hip_3_eye4_TA_tex_txt", +"00254ec0 000100 hip_3_eye5_TA_tex_txt", +"00254fc0 000100 hip_3_eye6_TA_tex_txt", +"002550c0 000100 hip_3_eye7_TA_tex_txt", +"002551c0 000100 hip_3_eye8_TA_tex_txt", +"002552c0 000500 hip_3_tmem_txt", +"", +"002557c0 000020 hip_4_pal", +"002557e0 000100 hip_4_eye1_TA_tex_txt", +"002558e0 000100 hip_4_eye2_TA_tex_txt", +"002559e0 000100 hip_4_eye3_TA_tex_txt", +"00255ae0 000100 hip_4_eye4_TA_tex_txt", +"00255be0 000100 hip_4_eye5_TA_tex_txt", +"00255ce0 000100 hip_4_eye6_TA_tex_txt", +"00255de0 000100 hip_4_eye7_TA_tex_txt", +"00255ee0 000100 hip_4_eye8_TA_tex_txt", +"00255fe0 000500 hip_4_tmem_txt", +"", +"002564e0 000020 hip_5_pal", +"00256500 000100 hip_5_eye1_TA_tex_txt", +"00256600 000100 hip_5_eye2_TA_tex_txt", +"00256700 000100 hip_5_eye3_TA_tex_txt", +"00256800 000100 hip_5_eye4_TA_tex_txt", +"00256900 000100 hip_5_eye5_TA_tex_txt", +"00256a00 000100 hip_5_eye6_TA_tex_txt", +"00256b00 000100 hip_5_eye7_TA_tex_txt", +"00256c00 000100 hip_5_eye8_TA_tex_txt", +"00256d00 000500 hip_5_tmem_txt", +"", +"00257200 000020 hip_6_pal", +"00257220 000100 hip_6_eye1_TA_tex_txt", +"00257320 000100 hip_6_eye2_TA_tex_txt", +"00257420 000100 hip_6_eye3_TA_tex_txt", +"00257520 000100 hip_6_eye4_TA_tex_txt", +"00257620 000100 hip_6_eye5_TA_tex_txt", +"00257720 000100 hip_6_eye6_TA_tex_txt", +"00257820 000100 hip_6_eye7_TA_tex_txt", +"00257920 000100 hip_6_eye8_TA_tex_txt", +"00257a20 000500 hip_6_tmem_txt", +"", +"00257f20 000020 hip_7_pal", +"00257f40 000100 hip_7_eye1_TA_tex_txt", +"00258040 000100 hip_7_eye2_TA_tex_txt", +"00258140 000100 hip_7_eye3_TA_tex_txt", +"00258240 000100 hip_7_eye4_TA_tex_txt", +"00258340 000100 hip_7_eye5_TA_tex_txt", +"00258440 000100 hip_7_eye6_TA_tex_txt", +"00258540 000100 hip_7_eye7_TA_tex_txt", +"00258640 000100 hip_7_eye8_TA_tex_txt", +"00258740 000500 hip_7_tmem_txt", +"", +"00258c40 001930 hrs_1_v", +"0025a570 000230 head_hrs_model", +"0025a7a0 000090 mouth_hrs_model", +"0025a830 000088 Rarm2_hrs_model", +"0025a8b8 000078 Rarm1_hrs_model", +"0025a930 000088 Larm2_hrs_model", +"0025a9b8 000078 Larm1_hrs_model", +"0025aa30 0000b8 chest_hrs_model", +"0025aae8 000060 tail1_hrs_model", +"0025ab48 000090 tail2_hrs_model", +"0025abd8 000080 Rfoot2_hrs_model", +"0025ac58 0000c0 Rfoot1_hrs_model", +"0025ad18 000080 Lfoot2_hrs_model", +"0025ad98 0000c0 Lfoot1_hrs_model", +"0025ae58 000070 base_hrs_model", +"0025aec8 000138 cKF_je_r_hrs_1_tbl", +"0025b000 000008 cKF_bs_r_hrs_1", +"", +"0025b020 000020 hrs_1_pal", +"0025b040 000100 hrs_1_eye1_TA_tex_txt", +"0025b140 000100 hrs_1_eye2_TA_tex_txt", +"0025b240 000100 hrs_1_eye3_TA_tex_txt", +"0025b340 000100 hrs_1_eye4_TA_tex_txt", +"0025b440 000100 hrs_1_eye5_TA_tex_txt", +"0025b540 000100 hrs_1_eye6_TA_tex_txt", +"0025b640 000100 hrs_1_eye7_TA_tex_txt", +"0025b740 000100 hrs_1_eye8_TA_tex_txt", +"0025b840 000580 hrs_1_tmem_txt", +"", +"0025bdc0 000020 hrs_2_pal", +"0025bde0 000100 hrs_2_eye1_TA_tex_txt", +"0025bee0 000100 hrs_2_eye2_TA_tex_txt", +"0025bfe0 000100 hrs_2_eye3_TA_tex_txt", +"0025c0e0 000100 hrs_2_eye4_TA_tex_txt", +"0025c1e0 000100 hrs_2_eye5_TA_tex_txt", +"0025c2e0 000100 hrs_2_eye6_TA_tex_txt", +"0025c3e0 000100 hrs_2_eye7_TA_tex_txt", +"0025c4e0 000100 hrs_2_eye8_TA_tex_txt", +"0025c5e0 000580 hrs_2_tmem_txt", +"", +"0025cb60 000020 hrs_3_pal", +"0025cb80 000100 hrs_3_eye1_TA_tex_txt", +"0025cc80 000100 hrs_3_eye2_TA_tex_txt", +"0025cd80 000100 hrs_3_eye3_TA_tex_txt", +"0025ce80 000100 hrs_3_eye4_TA_tex_txt", +"0025cf80 000100 hrs_3_eye5_TA_tex_txt", +"0025d080 000100 hrs_3_eye6_TA_tex_txt", +"0025d180 000100 hrs_3_eye7_TA_tex_txt", +"0025d280 000100 hrs_3_eye8_TA_tex_txt", +"0025d380 000580 hrs_3_tmem_txt", +"", +"0025d900 000020 hrs_4_pal", +"0025d920 000100 hrs_4_eye1_TA_tex_txt", +"0025da20 000100 hrs_4_eye2_TA_tex_txt", +"0025db20 000100 hrs_4_eye3_TA_tex_txt", +"0025dc20 000100 hrs_4_eye4_TA_tex_txt", +"0025dd20 000100 hrs_4_eye5_TA_tex_txt", +"0025de20 000100 hrs_4_eye6_TA_tex_txt", +"0025df20 000100 hrs_4_eye7_TA_tex_txt", +"0025e020 000100 hrs_4_eye8_TA_tex_txt", +"0025e120 000580 hrs_4_tmem_txt", +"", +"0025e6a0 000020 hrs_5_pal", +"0025e6c0 000100 hrs_5_eye1_TA_tex_txt", +"0025e7c0 000100 hrs_5_eye2_TA_tex_txt", +"0025e8c0 000100 hrs_5_eye3_TA_tex_txt", +"0025e9c0 000100 hrs_5_eye4_TA_tex_txt", +"0025eac0 000100 hrs_5_eye5_TA_tex_txt", +"0025ebc0 000100 hrs_5_eye6_TA_tex_txt", +"0025ecc0 000100 hrs_5_eye7_TA_tex_txt", +"0025edc0 000100 hrs_5_eye8_TA_tex_txt", +"0025eec0 000580 hrs_5_tmem_txt", +"", +"0025f440 000020 hrs_6_pal", +"0025f460 000100 hrs_6_eye1_TA_tex_txt", +"0025f560 000100 hrs_6_eye2_TA_tex_txt", +"0025f660 000100 hrs_6_eye3_TA_tex_txt", +"0025f760 000100 hrs_6_eye4_TA_tex_txt", +"0025f860 000100 hrs_6_eye5_TA_tex_txt", +"0025f960 000100 hrs_6_eye6_TA_tex_txt", +"0025fa60 000100 hrs_6_eye7_TA_tex_txt", +"0025fb60 000100 hrs_6_eye8_TA_tex_txt", +"0025fc60 000580 hrs_6_tmem_txt", +"", +"002601e0 000020 hrs_7_pal", +"00260200 000100 hrs_7_eye1_TA_tex_txt", +"00260300 000100 hrs_7_eye2_TA_tex_txt", +"00260400 000100 hrs_7_eye3_TA_tex_txt", +"00260500 000100 hrs_7_eye4_TA_tex_txt", +"00260600 000100 hrs_7_eye5_TA_tex_txt", +"00260700 000100 hrs_7_eye6_TA_tex_txt", +"00260800 000100 hrs_7_eye7_TA_tex_txt", +"00260900 000100 hrs_7_eye8_TA_tex_txt", +"00260a00 000580 hrs_7_tmem_txt", +"", +"00260f80 000020 hrs_8_pal", +"00260fa0 000100 hrs_8_eye1_TA_tex_txt", +"002610a0 000100 hrs_8_eye2_TA_tex_txt", +"002611a0 000100 hrs_8_eye3_TA_tex_txt", +"002612a0 000100 hrs_8_eye4_TA_tex_txt", +"002613a0 000100 hrs_8_eye5_TA_tex_txt", +"002614a0 000100 hrs_8_eye6_TA_tex_txt", +"002615a0 000100 hrs_8_eye7_TA_tex_txt", +"002616a0 000100 hrs_8_eye8_TA_tex_txt", +"002617a0 000580 hrs_8_tmem_txt", +"", +"0026b800 0016a0 plj_1_v", +"0026cea0 000150 head_plj_model", +"0026cff0 000080 Rarm2_plj_model", +"0026d070 000088 Rarm1_plj_model", +"0026d0f8 000080 Larm2_plj_model", +"0026d178 000088 Larm1_plj_model", +"0026d200 000140 chest_plj_model", +"0026d340 000058 tail1_plj_model", +"0026d398 0000a0 tail2_plj_model", +"0026d438 000088 Rfoot2_plj_model", +"0026d4c0 000080 Rfoot1_plj_model", +"0026d540 000088 Lfoot2_plj_model", +"0026d5c8 000080 Lfoot1_plj_model", +"0026d648 000078 base_plj_model", +"0026d6c0 000138 cKF_je_r_plj_1_tbl", +"0026d7f8 000008 cKF_bs_r_plj_1", +"", +"0026d800 000020 plj_1_pal", +"0026d820 000100 plj_1_eye1_TA_tex_txt", +"0026d920 000100 plj_1_eye2_TA_tex_txt", +"0026da20 000100 plj_1_eye3_TA_tex_txt", +"0026db20 000100 plj_1_eye4_TA_tex_txt", +"0026dc20 000100 plj_1_eye5_TA_tex_txt", +"0026dd20 000100 plj_1_eye6_TA_tex_txt", +"0026de20 000100 plj_1_eye7_TA_tex_txt", +"0026df20 000100 plj_1_eye8_TA_tex_txt", +"0026e020 000100 plj_1_mouth1_TA_tex_txt", +"0026e120 000100 plj_1_mouth2_TA_tex_txt", +"0026e220 000100 plj_1_mouth3_TA_tex_txt", +"0026e320 000100 plj_1_mouth4_TA_tex_txt", +"0026e420 000100 plj_1_mouth5_TA_tex_txt", +"0026e520 000100 plj_1_mouth6_TA_tex_txt", +"0026e620 000680 plj_1_tmem_txt", +"", +"", +"0026eca0 0016f0 xsq_1_v", +"00270390 000198 head_xsq_model", +"00270528 000088 Rarm2_xsq_model", +"002705b0 000078 Rarm1_xsq_model", +"00270628 000088 Larm2_xsq_model", +"002706b0 000078 Larm1_xsq_model", +"00270728 0000a8 chest_xsq_model", +"002707d0 000070 tail1_xsq_model", +"00270840 0000d0 tail2_xsq_model", +"00270910 000080 Rfoot2_xsq_model", +"00270990 0000c0 Rfoot1_xsq_model", +"00270a50 000080 Lfoot2_xsq_model", +"00270ad0 0000c0 Lfoot1_xsq_model", +"00270b90 000070 base_xsq_model", +"00270c00 000138 cKF_je_r_xsq_1_tbl", +"00270d38 000008 cKF_bs_r_xsq_1", +"", +"00270d40 000020 xsq_1_pal", +"00270d60 000100 xsq_1_eye1_TA_tex_txt", +"00270e60 000100 xsq_1_eye2_TA_tex_txt", +"00270f60 000100 xsq_1_eye3_TA_tex_txt", +"00271060 000100 xsq_1_eye4_TA_tex_txt", +"00271160 000100 xsq_1_eye5_TA_tex_txt", +"00271260 000100 xsq_1_eye6_TA_tex_txt", +"00271360 000100 xsq_1_eye7_TA_tex_txt", +"00271460 000100 xsq_1_eye8_TA_tex_txt", +"00271560 000100 xsq_1_mouth1_TA_tex_txt", +"00271660 000100 xsq_1_mouth2_TA_tex_txt", +"00271760 000100 xsq_1_mouth3_TA_tex_txt", +"00271860 000100 xsq_1_mouth4_TA_tex_txt", +"00271960 000100 xsq_1_mouth5_TA_tex_txt", +"00271a60 000100 xsq_1_mouth6_TA_tex_txt", +"00271b60 000600 xsq_1_tmem_txt", +"", +"0027b3a8 001c50 boa_1_v", +"0027cff8 0001d8 head_boa_model", +"0027d1d0 000088 mouth_boa_model", +"0027d258 000088 Rarm2_boa_model", +"0027d2e0 000078 Rarm1_boa_model", +"0027d358 000088 Larm2_boa_model", +"0027d3e0 000078 Larm1_boa_model", +"0027d458 0001f8 chest_boa_model", +"0027d650 0000a8 Rfoot2_boa_model", +"0027d6f8 000080 Rfoot1_boa_model", +"0027d778 000098 Lfoot2_boa_model", +"0027d810 000080 Lfoot1_boa_model", +"0027d890 000078 base_boa_model", +"0027d908 000138 cKF_je_r_boa_1_tbl", +"0027da40 000008 cKF_bs_r_boa_1", +"", +"0027da60 000020 boa_1_pal", +"0027da80 000100 boa_1_eye1_TA_tex_txt", +"0027db80 000100 boa_1_eye2_TA_tex_txt", +"0027dc80 000100 boa_1_eye3_TA_tex_txt", +"0027dd80 000100 boa_1_eye4_TA_tex_txt", +"0027de80 000100 boa_1_eye5_TA_tex_txt", +"0027df80 000100 boa_1_eye6_TA_tex_txt", +"0027e080 000100 boa_1_eye7_TA_tex_txt", +"0027e180 000100 boa_1_eye8_TA_tex_txt", +"0027e280 0005c0 boa_1_tmem_txt", +"", +"0027e840 001af0 kgr_1_v", +"00280330 000160 head_kgr_model", +"00280490 000080 mouth_kgr_model", +"00280510 000088 Rarm2_kgr_model", +"00280598 000078 Rarm1_kgr_model", +"00280610 000088 Larm2_kgr_model", +"00280698 000078 Larm1_kgr_model", +"00280710 000188 chest_kgr_model", +"00280898 000088 tail1_kgr_model", +"00280920 000080 Rfoot3_kgr_model", +"002809a0 000080 Rfoot2_kgr_model", +"00280a20 0000c8 Rfoot1_kgr_model", +"00280ae8 000080 Lfoot3_kgr_model", +"00280b68 000080 Lfoot2_kgr_model", +"00280be8 0000c8 Lfoot1_kgr_model", +"00280cb0 0000d8 base_kgr_model", +"00280d88 000138 cKF_je_r_kgr_1_tbl", +"00280ec0 000008 cKF_bs_r_kgr_1", +"", +"00280ee0 000020 kgr_1_pal", +"00280f00 000100 kgr_1_eye1_TA_tex_txt", +"00281000 000100 kgr_1_eye2_TA_tex_txt", +"00281100 000100 kgr_1_eye3_TA_tex_txt", +"00281200 000100 kgr_1_eye4_TA_tex_txt", +"00281300 000100 kgr_1_eye5_TA_tex_txt", +"00281400 000100 kgr_1_eye6_TA_tex_txt", +"00281500 000100 kgr_1_eye7_TA_tex_txt", +"00281600 000100 kgr_1_eye8_TA_tex_txt", +"00281700 000440 kgr_1_tmem_txt", +"", +"00281b40 000020 kgr_2_pal", +"00281b60 000100 kgr_2_eye1_TA_tex_txt", +"00281c60 000100 kgr_2_eye2_TA_tex_txt", +"00281d60 000100 kgr_2_eye3_TA_tex_txt", +"00281e60 000100 kgr_2_eye4_TA_tex_txt", +"00281f60 000100 kgr_2_eye5_TA_tex_txt", +"00282060 000100 kgr_2_eye6_TA_tex_txt", +"00282160 000100 kgr_2_eye7_TA_tex_txt", +"00282260 000100 kgr_2_eye8_TA_tex_txt", +"00282360 000440 kgr_2_tmem_txt", +"", +"002827a0 000020 kgr_3_pal", +"002827c0 000100 kgr_3_eye1_TA_tex_txt", +"002828c0 000100 kgr_3_eye2_TA_tex_txt", +"002829c0 000100 kgr_3_eye3_TA_tex_txt", +"00282ac0 000100 kgr_3_eye4_TA_tex_txt", +"00282bc0 000100 kgr_3_eye5_TA_tex_txt", +"00282cc0 000100 kgr_3_eye6_TA_tex_txt", +"00282dc0 000100 kgr_3_eye7_TA_tex_txt", +"00282ec0 000100 kgr_3_eye8_TA_tex_txt", +"00282fc0 000440 kgr_3_tmem_txt", +"", +"00283400 000020 kgr_4_pal", +"00283420 000100 kgr_4_eye1_TA_tex_txt", +"00283520 000100 kgr_4_eye2_TA_tex_txt", +"00283620 000100 kgr_4_eye3_TA_tex_txt", +"00283720 000100 kgr_4_eye4_TA_tex_txt", +"00283820 000100 kgr_4_eye5_TA_tex_txt", +"00283920 000100 kgr_4_eye6_TA_tex_txt", +"00283a20 000100 kgr_4_eye7_TA_tex_txt", +"00283b20 000100 kgr_4_eye8_TA_tex_txt", +"00283c20 000440 kgr_4_tmem_txt", +"", +"00284060 000020 kgr_5_pal", +"00284080 000100 kgr_5_eye1_TA_tex_txt", +"00284180 000100 kgr_5_eye2_TA_tex_txt", +"00284280 000100 kgr_5_eye3_TA_tex_txt", +"00284380 000100 kgr_5_eye4_TA_tex_txt", +"00284480 000100 kgr_5_eye5_TA_tex_txt", +"00284580 000100 kgr_5_eye6_TA_tex_txt", +"00284680 000100 kgr_5_eye7_TA_tex_txt", +"00284780 000100 kgr_5_eye8_TA_tex_txt", +"00284880 000440 kgr_5_tmem_txt", +"", +"00284cc0 000020 kgr_6_pal", +"00284ce0 000100 kgr_6_eye1_TA_tex_txt", +"00284de0 000100 kgr_6_eye2_TA_tex_txt", +"00284ee0 000100 kgr_6_eye3_TA_tex_txt", +"00284fe0 000100 kgr_6_eye4_TA_tex_txt", +"002850e0 000100 kgr_6_eye5_TA_tex_txt", +"002851e0 000100 kgr_6_eye6_TA_tex_txt", +"002852e0 000100 kgr_6_eye7_TA_tex_txt", +"002853e0 000100 kgr_6_eye8_TA_tex_txt", +"002854e0 000440 kgr_6_tmem_txt", +"", +"00285920 001a30 fob_1_v", +"00287350 0001b8 head_fob_model", +"00287508 0000a0 mouth_fob_model", +"002875a8 000090 Rarm2_fob_model", +"00287638 0000a0 Rarm1_fob_model", +"002876d8 000090 Larm2_fob_model", +"00287768 000090 Larm1_fob_model", +"002877f8 000130 chest_fob_model", +"00287928 000080 tail1_fob_model", +"002879a8 0000c0 tail2_fob_model", +"00287a68 000088 Rfoot2_fob_model", +"00287af0 000058 Rfoot1_fob_model", +"00287b48 000088 Lfoot2_fob_model", +"00287bd0 000058 Lfoot1_fob_model", +"00287c28 0000f8 base_fob_model", +"00287d20 000138 cKF_je_r_fob_1_tbl", +"00287e58 000008 cKF_bs_r_fob_1", +"", +"00287e60 000020 fob_1_pal", +"00287e80 000100 fob_1_eye1_TA_tex_txt", +"00287f80 000100 fob_1_eye2_TA_tex_txt", +"00288080 000100 fob_1_eye3_TA_tex_txt", +"00288180 000100 fob_1_eye4_TA_tex_txt", +"00288280 000100 fob_1_eye5_TA_tex_txt", +"00288380 000100 fob_1_eye6_TA_tex_txt", +"00288480 000100 fob_1_eye7_TA_tex_txt", +"00288580 000100 fob_1_eye8_TA_tex_txt", +"00288680 000740 fob_1_tmem_txt", +"", +"00288dc0 001690 kal_1_v", +"0028a450 0001b0 head_kal_model", +"0028a600 000088 Rarm2_kal_model", +"0028a688 000078 Rarm1_kal_model", +"0028a700 000088 Larm2_kal_model", +"0028a788 000078 Larm1_kal_model", +"0028a800 0000a8 chest_kal_model", +"0028a8a8 000080 Rfoot2_kal_model", +"0028a928 0000c0 Rfoot1_kal_model", +"0028a9e8 000080 Lfoot2_kal_model", +"0028aa68 0000c0 Lfoot1_kal_model", +"0028ab28 000070 base_kal_model", +"0028ab98 000138 cKF_je_r_kal_1_tbl", +"0028acd0 000008 cKF_bs_r_kal_1", +"", +"0028ace0 000020 kal_1_pal", +"0028ad00 000100 kal_1_eye1_TA_tex_txt", +"0028ae00 000100 kal_1_eye2_TA_tex_txt", +"0028af00 000100 kal_1_eye3_TA_tex_txt", +"0028b000 000100 kal_1_eye4_TA_tex_txt", +"0028b100 000100 kal_1_eye5_TA_tex_txt", +"0028b200 000100 kal_1_eye6_TA_tex_txt", +"0028b300 000100 kal_1_eye7_TA_tex_txt", +"0028b400 000100 kal_1_eye8_TA_tex_txt", +"0028b500 000100 kal_1_mouth1_TA_tex_txt", +"0028b600 000100 kal_1_mouth2_TA_tex_txt", +"0028b700 000100 kal_1_mouth3_TA_tex_txt", +"0028b800 000100 kal_1_mouth4_TA_tex_txt", +"0028b900 000100 kal_1_mouth5_TA_tex_txt", +"0028ba00 000100 kal_1_mouth6_TA_tex_txt", +"0028bb00 000480 kal_1_tmem_txt", +"", +"0028bf80 000020 kal_2_pal", +"0028bfa0 000100 kal_2_eye1_TA_tex_txt", +"0028c0a0 000100 kal_2_eye2_TA_tex_txt", +"0028c1a0 000100 kal_2_eye3_TA_tex_txt", +"0028c2a0 000100 kal_2_eye4_TA_tex_txt", +"0028c3a0 000100 kal_2_eye5_TA_tex_txt", +"0028c4a0 000100 kal_2_eye6_TA_tex_txt", +"0028c5a0 000100 kal_2_eye7_TA_tex_txt", +"0028c6a0 000100 kal_2_eye8_TA_tex_txt", +"0028c7a0 000100 kal_2_mouth1_TA_tex_txt", +"0028c8a0 000100 kal_2_mouth2_TA_tex_txt", +"0028c9a0 000100 kal_2_mouth3_TA_tex_txt", +"0028caa0 000100 kal_2_mouth4_TA_tex_txt", +"0028cba0 000100 kal_2_mouth5_TA_tex_txt", +"0028cca0 000100 kal_2_mouth6_TA_tex_txt", +"0028cda0 000480 kal_2_tmem_txt", +"", +"0028d220 000020 kal_3_pal", +"0028d240 000100 kal_3_eye1_TA_tex_txt", +"0028d340 000100 kal_3_eye2_TA_tex_txt", +"0028d440 000100 kal_3_eye3_TA_tex_txt", +"0028d540 000100 kal_3_eye4_TA_tex_txt", +"0028d640 000100 kal_3_eye5_TA_tex_txt", +"0028d740 000100 kal_3_eye6_TA_tex_txt", +"0028d840 000100 kal_3_eye7_TA_tex_txt", +"0028d940 000100 kal_3_eye8_TA_tex_txt", +"0028da40 000100 kal_3_mouth1_TA_tex_txt", +"0028db40 000100 kal_3_mouth2_TA_tex_txt", +"0028dc40 000100 kal_3_mouth3_TA_tex_txt", +"0028dd40 000100 kal_3_mouth4_TA_tex_txt", +"0028de40 000100 kal_3_mouth5_TA_tex_txt", +"0028df40 000100 kal_3_mouth6_TA_tex_txt", +"0028e040 000480 kal_3_tmem_txt", +"", +"0028e4c0 000020 kal_4_pal", +"0028e4e0 000100 kal_4_eye1_TA_tex_txt", +"0028e5e0 000100 kal_4_eye2_TA_tex_txt", +"0028e6e0 000100 kal_4_eye3_TA_tex_txt", +"0028e7e0 000100 kal_4_eye4_TA_tex_txt", +"0028e8e0 000100 kal_4_eye5_TA_tex_txt", +"0028e9e0 000100 kal_4_eye6_TA_tex_txt", +"0028eae0 000100 kal_4_eye7_TA_tex_txt", +"0028ebe0 000100 kal_4_eye8_TA_tex_txt", +"0028ece0 000100 kal_4_mouth1_TA_tex_txt", +"0028ede0 000100 kal_4_mouth2_TA_tex_txt", +"0028eee0 000100 kal_4_mouth3_TA_tex_txt", +"0028efe0 000100 kal_4_mouth4_TA_tex_txt", +"0028f0e0 000100 kal_4_mouth5_TA_tex_txt", +"0028f1e0 000100 kal_4_mouth6_TA_tex_txt", +"0028f2e0 000480 kal_4_tmem_txt", +"", +"0028f760 000020 kal_5_pal", +"0028f780 000100 kal_5_eye1_TA_tex_txt", +"0028f880 000100 kal_5_eye2_TA_tex_txt", +"0028f980 000100 kal_5_eye3_TA_tex_txt", +"0028fa80 000100 kal_5_eye4_TA_tex_txt", +"0028fb80 000100 kal_5_eye5_TA_tex_txt", +"0028fc80 000100 kal_5_eye6_TA_tex_txt", +"0028fd80 000100 kal_5_eye7_TA_tex_txt", +"0028fe80 000100 kal_5_eye8_TA_tex_txt", +"0028ff80 000100 kal_5_mouth1_TA_tex_txt", +"00290080 000100 kal_5_mouth2_TA_tex_txt", +"00290180 000100 kal_5_mouth3_TA_tex_txt", +"00290280 000100 kal_5_mouth4_TA_tex_txt", +"00290380 000100 kal_5_mouth5_TA_tex_txt", +"00290480 000100 kal_5_mouth6_TA_tex_txt", +"00290580 000480 kal_5_tmem_txt", +"", +"00290a00 000020 kal_6_pal", +"00290a20 000100 kal_6_eye1_TA_tex_txt", +"00290b20 000100 kal_6_eye2_TA_tex_txt", +"00290c20 000100 kal_6_eye3_TA_tex_txt", +"00290d20 000100 kal_6_eye4_TA_tex_txt", +"00290e20 000100 kal_6_eye5_TA_tex_txt", +"00290f20 000100 kal_6_eye6_TA_tex_txt", +"00291020 000100 kal_6_eye7_TA_tex_txt", +"00291120 000100 kal_6_eye8_TA_tex_txt", +"00291220 000100 kal_6_mouth1_TA_tex_txt", +"00291320 000100 kal_6_mouth2_TA_tex_txt", +"00291420 000100 kal_6_mouth3_TA_tex_txt", +"00291520 000100 kal_6_mouth4_TA_tex_txt", +"00291620 000100 kal_6_mouth5_TA_tex_txt", +"00291720 000100 kal_6_mouth6_TA_tex_txt", +"00291820 000480 kal_6_tmem_txt", +"", +"00294510 001b20 lon_1_v", +"00296030 000280 head_lon_model", +"002962b0 000088 Rarm2_lon_model", +"00296338 000078 Rarm1_lon_model", +"002963b0 000088 Larm2_lon_model", +"00296438 000078 Larm1_lon_model", +"002964b0 0000a8 chest_lon_model", +"00296558 000060 tail1_lon_model", +"002965b8 000090 tail2_lon_model", +"00296648 000080 Rfoot2_lon_model", +"002966c8 0000c0 Rfoot1_lon_model", +"00296788 000080 Lfoot2_lon_model", +"00296808 0000c0 Lfoot1_lon_model", +"002968c8 000070 base_lon_model", +"00296938 000138 cKF_je_r_lon_1_tbl", +"00296a70 000008 cKF_bs_r_lon_1", +"", +"00296a80 000020 lon_1_pal", +"00296aa0 000100 lon_1_eye1_TA_tex_txt", +"00296ba0 000100 lon_1_eye2_TA_tex_txt", +"00296ca0 000100 lon_1_eye3_TA_tex_txt", +"00296da0 000100 lon_1_eye4_TA_tex_txt", +"00296ea0 000100 lon_1_eye5_TA_tex_txt", +"00296fa0 000100 lon_1_eye6_TA_tex_txt", +"002970a0 000100 lon_1_eye7_TA_tex_txt", +"002971a0 000100 lon_1_eye8_TA_tex_txt", +"002972a0 000100 lon_1_mouth1_TA_tex_txt", +"002973a0 000100 lon_1_mouth2_TA_tex_txt", +"002974a0 000100 lon_1_mouth3_TA_tex_txt", +"002975a0 000100 lon_1_mouth4_TA_tex_txt", +"002976a0 000100 lon_1_mouth5_TA_tex_txt", +"002977a0 000100 lon_1_mouth6_TA_tex_txt", +"002978a0 0004c0 lon_1_tmem_txt", +"", +"00297d60 000020 lon_2_pal", +"00297d80 000100 lon_2_eye1_TA_tex_txt", +"00297e80 000100 lon_2_eye2_TA_tex_txt", +"00297f80 000100 lon_2_eye3_TA_tex_txt", +"00298080 000100 lon_2_eye4_TA_tex_txt", +"00298180 000100 lon_2_eye5_TA_tex_txt", +"00298280 000100 lon_2_eye6_TA_tex_txt", +"00298380 000100 lon_2_eye7_TA_tex_txt", +"00298480 000100 lon_2_eye8_TA_tex_txt", +"00298580 000100 lon_2_mouth1_TA_tex_txt", +"00298680 000100 lon_2_mouth2_TA_tex_txt", +"00298780 000100 lon_2_mouth3_TA_tex_txt", +"00298880 000100 lon_2_mouth4_TA_tex_txt", +"00298980 000100 lon_2_mouth5_TA_tex_txt", +"00298a80 000100 lon_2_mouth6_TA_tex_txt", +"00298b80 0004c0 lon_2_tmem_txt", +"", +"00299040 000020 lon_3_pal", +"00299060 000100 lon_3_eye1_TA_tex_txt", +"00299160 000100 lon_3_eye2_TA_tex_txt", +"00299260 000100 lon_3_eye3_TA_tex_txt", +"00299360 000100 lon_3_eye4_TA_tex_txt", +"00299460 000100 lon_3_eye5_TA_tex_txt", +"00299560 000100 lon_3_eye6_TA_tex_txt", +"00299660 000100 lon_3_eye7_TA_tex_txt", +"00299760 000100 lon_3_eye8_TA_tex_txt", +"00299860 000100 lon_3_mouth1_TA_tex_txt", +"00299960 000100 lon_3_mouth2_TA_tex_txt", +"00299a60 000100 lon_3_mouth3_TA_tex_txt", +"00299b60 000100 lon_3_mouth4_TA_tex_txt", +"00299c60 000100 lon_3_mouth5_TA_tex_txt", +"00299d60 000100 lon_3_mouth6_TA_tex_txt", +"00299e60 0004c0 lon_3_tmem_txt", +"", +"0029a320 000020 lon_4_pal", +"0029a340 000100 lon_4_eye1_TA_tex_txt", +"0029a440 000100 lon_4_eye2_TA_tex_txt", +"0029a540 000100 lon_4_eye3_TA_tex_txt", +"0029a640 000100 lon_4_eye4_TA_tex_txt", +"0029a740 000100 lon_4_eye5_TA_tex_txt", +"0029a840 000100 lon_4_eye6_TA_tex_txt", +"0029a940 000100 lon_4_eye7_TA_tex_txt", +"0029aa40 000100 lon_4_eye8_TA_tex_txt", +"0029ab40 000100 lon_4_mouth1_TA_tex_txt", +"0029ac40 000100 lon_4_mouth2_TA_tex_txt", +"0029ad40 000100 lon_4_mouth3_TA_tex_txt", +"0029ae40 000100 lon_4_mouth4_TA_tex_txt", +"0029af40 000100 lon_4_mouth5_TA_tex_txt", +"0029b040 000100 lon_4_mouth6_TA_tex_txt", +"0029b140 0004c0 lon_4_tmem_txt", +"", +"0029d9a0 001420 mos_1_v", +"0029edc0 0001d0 head_mos_model", +"0029ef90 0000e0 mouth_mos_model", +"0029f070 0000b8 hand_mos_model", +"0029f128 000088 Rarm2_mos_model", +"0029f1b0 000078 Rarm1_mos_model", +"0029f228 000088 Larm2_mos_model", +"0029f2b0 000078 Larm1_mos_model", +"0029f328 0000d8 chest_mos_model", +"0029f400 000088 base_mos_model", +"0029f488 000138 cKF_je_r_mos_1_tbl", +"0029f5c0 000008 cKF_bs_r_mos_1", +"", +"0029f5e0 000020 mos_1_pal", +"0029f600 000100 mos_1_eye1_TA_tex_txt", +"0029f700 000100 mos_1_eye2_TA_tex_txt", +"0029f800 000100 mos_1_eye3_TA_tex_txt", +"0029f900 000100 mos_1_eye4_TA_tex_txt", +"0029fa00 000100 mos_1_eye5_TA_tex_txt", +"0029fb00 000100 mos_1_eye6_TA_tex_txt", +"0029fc00 000100 mos_1_eye7_TA_tex_txt", +"0029fd00 000100 mos_1_eye8_TA_tex_txt", +"0029fe00 000100 mos_1_mouth1_TA_tex_txt", +"0029ff00 000100 mos_1_mouth2_TA_tex_txt", +"002a0000 000100 mos_1_mouth3_TA_tex_txt", +"002a0100 000100 mos_1_mouth4_TA_tex_txt", +"002a0200 000100 mos_1_mouth5_TA_tex_txt", +"002a0300 000100 mos_1_mouth6_TA_tex_txt", +"002a0400 000680 mos_1_tmem_txt", +"", +"002a0a80 001420 mol_1_v", +"002a1ea0 0001d0 head_mol_model", +"002a2070 0000e0 mouth_mol_model", +"002a2150 0000b8 hand_mol_model", +"002a2208 000088 Rarm2_mol_model", +"002a2290 000078 Rarm1_mol_model", +"002a2308 000088 Larm2_mol_model", +"002a2390 000078 Larm1_mol_model", +"002a2408 0000d8 chest_mol_model", +"002a24e0 000088 base_mol_model", +"002a2568 000138 cKF_je_r_mol_1_tbl", +"002a26a0 000008 cKF_bs_r_mol_1", +"", +"002a26c0 000020 mol_1_pal", +"002a26e0 000100 mol_1_eye1_TA_tex_txt", +"002a27e0 000100 mol_1_eye2_TA_tex_txt", +"002a28e0 000100 mol_1_eye3_TA_tex_txt", +"002a29e0 000100 mol_1_eye4_TA_tex_txt", +"002a2ae0 000100 mol_1_eye5_TA_tex_txt", +"002a2be0 000100 mol_1_eye6_TA_tex_txt", +"002a2ce0 000100 mol_1_eye7_TA_tex_txt", +"002a2de0 000100 mol_1_eye8_TA_tex_txt", +"002a2ee0 000100 mol_1_mouth1_TA_tex_txt", +"002a2fe0 000100 mol_1_mouth2_TA_tex_txt", +"002a30e0 000100 mol_1_mouth3_TA_tex_txt", +"002a31e0 000100 mol_1_mouth4_TA_tex_txt", +"002a32e0 000100 mol_1_mouth5_TA_tex_txt", +"002a33e0 000100 mol_1_mouth6_TA_tex_txt", +"002a34e0 000680 mol_1_tmem_txt", +"", +"002a3b60 001540 lrc_1_v", +"002a50a0 000188 head_lrc_model", +"002a5228 000078 mouth_lrc_model", +"002a52a0 0000b8 Rarm2_lrc_model", +"002a5358 000078 Rarm1_lrc_model", +"002a53d0 0000b8 Larm2_lrc_model", +"002a5488 000078 Larm1_lrc_model", +"002a5500 0000c8 chest_lrc_model", +"002a55c8 000078 tail1_lrc_model", +"002a5640 0000a0 tail2_lrc_model", +"002a56e0 000080 Rfoot2_lrc_model", +"002a5760 000058 Rfoot1_lrc_model", +"002a57b8 000080 Lfoot2_rcd_model", +"002a5838 000058 Lfoot1_lrc_model", +"002a5890 000080 base_lrc_model", +"002a5910 000138 cKF_je_r_lrc_1_tbl", +"002a5a48 000008 cKF_bs_r_lrc_1", +"", +"002a5a60 000020 lrc_1_pal", +"002a5a80 000100 lrc_1_eye1_TA_tex_txt", +"002a5b80 000100 lrc_1_eye2_TA_tex_txt", +"002a5c80 000100 lrc_1_eye3_TA_tex_txt", +"002a5d80 000100 lrc_1_eye4_TA_tex_txt", +"002a5e80 000100 lrc_1_eye5_TA_tex_txt", +"002a5f80 000100 lrc_1_eye6_TA_tex_txt", +"002a6080 000100 lrc_1_eye7_TA_tex_txt", +"002a6180 000100 lrc_1_eye8_TA_tex_txt", +"002a6280 000680 lrc_1_tmem_txt", +"", +"002a6900 001480 mka_1_v", +"002a7d80 000160 head_mka_model", +"002a7ee0 000088 Rarm2_mka_model", +"002a7f68 000078 Rarm1_mka_model", +"002a7fe0 000088 Larm2_mka_model", +"002a8068 000078 Larm1_mka_model", +"002a80e0 000090 chest_mka_model", +"002a8170 000058 tail1_mka_model", +"002a81c8 000090 tail2_mka_model", +"002a8258 000090 Rfoot2_mka_model", +"002a82e8 0000c0 Rfoot1_mka_model", +"002a83a8 000090 Lfoot2_mka_model", +"002a8438 0000c0 Lfoot1_mka_model", +"002a84f8 000070 base_mka_model", +"002a8568 000138 cKF_je_r_mka_1_tbl", +"002a86a0 000008 cKF_bs_r_mka_1", +"", +"002a86c0 000020 mka_1_pal", +"002a86e0 000480 mka_1_tmem_txt", +"", +"002a99a8 001800 mus_1_v", +"002ab1a8 0001d8 head_mus_model", +"002ab380 000068 mouth_mus_model", +"002ab3e8 000088 Rarm2_mus_model", +"002ab470 000078 Rarm1_mus_model", +"002ab4e8 000088 Larm2_mus_model", +"002ab570 000078 Larm1_mus_model", +"002ab5e8 0000a8 chest_mus_model", +"002ab690 000060 tail1_mus_model", +"002ab6f0 000090 tail2_mus_model", +"002ab780 000080 Rfoot2_mus_model", +"002ab800 0000c0 Rfoot1_mus_model", +"002ab8c0 000080 Lfoot2_mus_model", +"002ab940 0000c0 Lfoot1_mus_model", +"002aba00 000070 base_mus_model", +"002aba70 000138 cKF_je_r_mus_1_tbl", +"002abba8 000008 cKF_bs_r_mus_1", +"", +"002abbc0 000020 mus_1_pal", +"002abbe0 000100 mus_1_eye1_TA_tex_txt", +"002abce0 000100 mus_1_eye2_TA_tex_txt", +"002abde0 000100 mus_1_eye3_TA_tex_txt", +"002abee0 000100 mus_1_eye4_TA_tex_txt", +"002abfe0 000100 mus_1_eye5_TA_tex_txt", +"002ac0e0 000100 mus_1_eye6_TA_tex_txt", +"002ac1e0 000100 mus_1_eye7_TA_tex_txt", +"002ac2e0 000100 mus_1_eye8_TA_tex_txt", +"002ac3e0 000100 mus_1_mouth1_TA_tex_txt", +"002ac4e0 000100 mus_1_mouth2_TA_tex_txt", +"002ac5e0 000100 mus_1_mouth3_TA_tex_txt", +"002ac6e0 000100 mus_1_mouth4_TA_tex_txt", +"002ac7e0 000100 mus_1_mouth5_TA_tex_txt", +"002ac8e0 000100 mus_1_mouth6_TA_tex_txt", +"002ac9e0 000400 mus_1_tmem_txt", +"", +"002acde0 000020 mus_2_pal", +"002ace00 000100 mus_2_eye1_TA_tex_txt", +"002acf00 000100 mus_2_eye2_TA_tex_txt", +"002ad000 000100 mus_2_eye3_TA_tex_txt", +"002ad100 000100 mus_2_eye4_TA_tex_txt", +"002ad200 000100 mus_2_eye5_TA_tex_txt", +"002ad300 000100 mus_2_eye6_TA_tex_txt", +"002ad400 000100 mus_2_eye7_TA_tex_txt", +"002ad500 000100 mus_2_eye8_TA_tex_txt", +"002ad600 000100 mus_2_mouth1_TA_tex_txt", +"002ad700 000100 mus_2_mouth2_TA_tex_txt", +"002ad800 000100 mus_2_mouth3_TA_tex_txt", +"002ad900 000100 mus_2_mouth4_TA_tex_txt", +"002ada00 000100 mus_2_mouth5_TA_tex_txt", +"002adb00 000100 mus_2_mouth6_TA_tex_txt", +"002adc00 000400 mus_2_tmem_txt", +"", +"002ae000 000020 mus_3_pal", +"002ae020 000100 mus_3_eye1_TA_tex_txt", +"002ae120 000100 mus_3_eye2_TA_tex_txt", +"002ae220 000100 mus_3_eye3_TA_tex_txt", +"002ae320 000100 mus_3_eye4_TA_tex_txt", +"002ae420 000100 mus_3_eye5_TA_tex_txt", +"002ae520 000100 mus_3_eye6_TA_tex_txt", +"002ae620 000100 mus_3_eye7_TA_tex_txt", +"002ae720 000100 mus_3_eye8_TA_tex_txt", +"002ae820 000100 mus_3_mouth1_TA_tex_txt", +"002ae920 000100 mus_3_mouth2_TA_tex_txt", +"002aea20 000100 mus_3_mouth3_TA_tex_txt", +"002aeb20 000100 mus_3_mouth4_TA_tex_txt", +"002aec20 000100 mus_3_mouth5_TA_tex_txt", +"002aed20 000100 mus_3_mouth6_TA_tex_txt", +"002aee20 000400 mus_3_tmem_txt", +"", +"002af220 000020 mus_4_pal", +"002af240 000100 mus_4_eye1_TA_tex_txt", +"002af340 000100 mus_4_eye2_TA_tex_txt", +"002af440 000100 mus_4_eye3_TA_tex_txt", +"002af540 000100 mus_4_eye4_TA_tex_txt", +"002af640 000100 mus_4_eye5_TA_tex_txt", +"002af740 000100 mus_4_eye6_TA_tex_txt", +"002af840 000100 mus_4_eye7_TA_tex_txt", +"002af940 000100 mus_4_eye8_TA_tex_txt", +"002afa40 000100 mus_4_mouth1_TA_tex_txt", +"002afb40 000100 mus_4_mouth2_TA_tex_txt", +"002afc40 000100 mus_4_mouth3_TA_tex_txt", +"002afd40 000100 mus_4_mouth4_TA_tex_txt", +"002afe40 000100 mus_4_mouth5_TA_tex_txt", +"002aff40 000100 mus_4_mouth6_TA_tex_txt", +"002b0040 000400 mus_4_tmem_txt", +"", +"002b0440 000020 mus_5_pal", +"002b0460 000100 mus_5_eye1_TA_tex_txt", +"002b0560 000100 mus_5_eye2_TA_tex_txt", +"002b0660 000100 mus_5_eye3_TA_tex_txt", +"002b0760 000100 mus_5_eye4_TA_tex_txt", +"002b0860 000100 mus_5_eye5_TA_tex_txt", +"002b0960 000100 mus_5_eye6_TA_tex_txt", +"002b0a60 000100 mus_5_eye7_TA_tex_txt", +"002b0b60 000100 mus_5_eye8_TA_tex_txt", +"002b0c60 000100 mus_5_mouth1_TA_tex_txt", +"002b0d60 000100 mus_5_mouth2_TA_tex_txt", +"002b0e60 000100 mus_5_mouth3_TA_tex_txt", +"002b0f60 000100 mus_5_mouth4_TA_tex_txt", +"002b1060 000100 mus_5_mouth5_TA_tex_txt", +"002b1160 000100 mus_5_mouth6_TA_tex_txt", +"002b1260 000400 mus_5_tmem_txt", +"", +"002b1660 000020 mus_6_pal", +"002b1680 000100 mus_6_eye1_TA_tex_txt", +"002b1780 000100 mus_6_eye2_TA_tex_txt", +"002b1880 000100 mus_6_eye3_TA_tex_txt", +"002b1980 000100 mus_6_eye4_TA_tex_txt", +"002b1a80 000100 mus_6_eye5_TA_tex_txt", +"002b1b80 000100 mus_6_eye6_TA_tex_txt", +"002b1c80 000100 mus_6_eye7_TA_tex_txt", +"002b1d80 000100 mus_6_eye8_TA_tex_txt", +"002b1e80 000100 mus_6_mouth1_TA_tex_txt", +"002b1f80 000100 mus_6_mouth2_TA_tex_txt", +"002b2080 000100 mus_6_mouth3_TA_tex_txt", +"002b2180 000100 mus_6_mouth4_TA_tex_txt", +"002b2280 000100 mus_6_mouth5_TA_tex_txt", +"002b2380 000100 mus_6_mouth6_TA_tex_txt", +"002b2480 000400 mus_6_tmem_txt", +"", +"002b2880 000020 mus_7_pal", +"002b28a0 000100 mus_7_eye1_TA_tex_txt", +"002b29a0 000100 mus_7_eye2_TA_tex_txt", +"002b2aa0 000100 mus_7_eye3_TA_tex_txt", +"002b2ba0 000100 mus_7_eye4_TA_tex_txt", +"002b2ca0 000100 mus_7_eye5_TA_tex_txt", +"002b2da0 000100 mus_7_eye6_TA_tex_txt", +"002b2ea0 000100 mus_7_eye7_TA_tex_txt", +"002b2fa0 000100 mus_7_eye8_TA_tex_txt", +"002b30a0 000100 mus_7_mouth1_TA_tex_txt", +"002b31a0 000100 mus_7_mouth2_TA_tex_txt", +"002b32a0 000100 mus_7_mouth3_TA_tex_txt", +"002b33a0 000100 mus_7_mouth4_TA_tex_txt", +"002b34a0 000100 mus_7_mouth5_TA_tex_txt", +"002b35a0 000100 mus_7_mouth6_TA_tex_txt", +"002b36a0 000400 mus_7_tmem_txt", +"", +"002b3aa0 000020 mus_8_pal", +"002b3ac0 000100 mus_8_eye1_TA_tex_txt", +"002b3bc0 000100 mus_8_eye2_TA_tex_txt", +"002b3cc0 000100 mus_8_eye3_TA_tex_txt", +"002b3dc0 000100 mus_8_eye4_TA_tex_txt", +"002b3ec0 000100 mus_8_eye5_TA_tex_txt", +"002b3fc0 000100 mus_8_eye6_TA_tex_txt", +"002b40c0 000100 mus_8_eye7_TA_tex_txt", +"002b41c0 000100 mus_8_eye8_TA_tex_txt", +"002b42c0 000100 mus_8_mouth1_TA_tex_txt", +"002b43c0 000100 mus_8_mouth2_TA_tex_txt", +"002b44c0 000100 mus_8_mouth3_TA_tex_txt", +"002b45c0 000100 mus_8_mouth4_TA_tex_txt", +"002b46c0 000100 mus_8_mouth5_TA_tex_txt", +"002b47c0 000100 mus_8_mouth6_TA_tex_txt", +"002b48c0 000400 mus_8_tmem_txt", +"", +"002b4cc0 000020 mus_9_pal", +"002b4ce0 000100 mus_9_eye1_TA_tex_txt", +"002b4de0 000100 mus_9_eye2_TA_tex_txt", +"002b4ee0 000100 mus_9_eye3_TA_tex_txt", +"002b4fe0 000100 mus_9_eye4_TA_tex_txt", +"002b50e0 000100 mus_9_eye5_TA_tex_txt", +"002b51e0 000100 mus_9_eye6_TA_tex_txt", +"002b52e0 000100 mus_9_eye7_TA_tex_txt", +"002b53e0 000100 mus_9_eye8_TA_tex_txt", +"002b54e0 000100 mus_9_mouth1_TA_tex_txt", +"002b55e0 000100 mus_9_mouth2_TA_tex_txt", +"002b56e0 000100 mus_9_mouth3_TA_tex_txt", +"002b57e0 000100 mus_9_mouth4_TA_tex_txt", +"002b58e0 000100 mus_9_mouth5_TA_tex_txt", +"002b59e0 000100 mus_9_mouth6_TA_tex_txt", +"002b5ae0 000400 mus_9_tmem_txt", +"", +"002b5ee0 000020 mus_10_pal", +"002b5f00 000100 mus_10_eye1_TA_tex_txt", +"002b6000 000100 mus_10_eye2_TA_tex_txt", +"002b6100 000100 mus_10_eye3_TA_tex_txt", +"002b6200 000100 mus_10_eye4_TA_tex_txt", +"002b6300 000100 mus_10_eye5_TA_tex_txt", +"002b6400 000100 mus_10_eye6_TA_tex_txt", +"002b6500 000100 mus_10_eye7_TA_tex_txt", +"002b6600 000100 mus_10_eye8_TA_tex_txt", +"002b6700 000100 mus_10_mouth1_TA_tex_txt", +"002b6800 000100 mus_10_mouth2_TA_tex_txt", +"002b6900 000100 mus_10_mouth3_TA_tex_txt", +"002b6a00 000100 mus_10_mouth4_TA_tex_txt", +"002b6b00 000100 mus_10_mouth5_TA_tex_txt", +"002b6c00 000100 mus_10_mouth6_TA_tex_txt", +"002b6d00 000400 mus_10_tmem_txt", +"", +"002c4970 001ca0 hgh_1_v", +"002c6610 0002e0 head_hgh_model", +"002c68f0 000090 mouth_hgh_model", +"002c6980 000088 Rarm2_hgh_model", +"002c6a08 000078 Rarm1_hgh_model", +"002c6a80 000088 Larm2_hgh_model", +"002c6b08 000078 Larm1_hgh_model", +"002c6b80 000128 chest_hgh_model", +"002c6ca8 000080 tail1_hgh_model", +"002c6d28 000088 tail2_hgh_model", +"002c6db0 000080 Rfoot2_hgh_model", +"002c6e30 000058 Rfoot1_hgh_model", +"002c6e88 000080 Lfoot2_hgh_model", +"002c6f08 000058 Lfoot1_hgh_model", +"002c6f60 000070 base_hgh_model", +"002c6fd0 000138 cKF_je_r_hgh_1_tbl", +"002c7108 000008 cKF_bs_r_hgh_1", +"", +"002c7120 000020 hgh_1_pal", +"002c7140 000100 hgh_1_eye1_TA_tex_txt", +"002c7240 000100 hgh_1_eye2_TA_tex_txt", +"002c7340 000100 hgh_1_eye3_TA_tex_txt", +"002c7440 000100 hgh_1_eye4_TA_tex_txt", +"002c7540 000100 hgh_1_eye5_TA_tex_txt", +"002c7640 000100 hgh_1_eye6_TA_tex_txt", +"002c7740 000100 hgh_1_eye7_TA_tex_txt", +"002c7840 000100 hgh_1_eye8_TA_tex_txt", +"002c7940 0006c0 hgh_1_tmem_txt", +"", +"002c8000 001c80 hgs_1_v", +"002c9c80 0002e0 head_hgs_model", +"002c9f60 000090 mouth_hgs_model", +"002c9ff0 000088 Rarm2_hgs_model", +"002ca078 000078 Rarm1_hgs_model", +"002ca0f0 000088 Larm2_hgs_model", +"002ca178 000078 Larm1_hgs_model", +"002ca1f0 000128 chest_hgs_model", +"002ca318 000080 tail1_hgs_model", +"002ca398 000088 tail2_hgs_model", +"002ca420 000080 Rfoot2_hgs_model", +"002ca4a0 000058 Rfoot1_hgs_model", +"002ca4f8 000080 Lfoot2_hgs_model", +"002ca578 000058 Lfoot1_hgs_model", +"002ca5d0 000070 base_hgs_model", +"002ca640 000138 cKF_je_r_hgs_1_tbl", +"002ca778 000008 cKF_bs_r_hgs_1", +"", +"002ca780 000020 hgs_1_pal", +"002ca7a0 000100 hgs_1_eye1_TA_tex_txt", +"002ca8a0 000100 hgs_1_eye2_TA_tex_txt", +"002ca9a0 000100 hgs_1_eye3_TA_tex_txt", +"002caaa0 000100 hgs_1_eye4_TA_tex_txt", +"002caba0 000100 hgs_1_eye5_TA_tex_txt", +"002caca0 000100 hgs_1_eye6_TA_tex_txt", +"002cada0 000100 hgs_1_eye7_TA_tex_txt", +"002caea0 000100 hgs_1_eye8_TA_tex_txt", +"002cafa0 0006c0 hgs_1_tmem_txt", +"", +"0032a7b0 001d80 oct_1_v", +"0032c530 000108 head_oct_model", +"0032c638 0000a8 Rarm2_oct_model", +"0032c6e0 000080 Rarm1_oct_model", +"0032c760 0000b0 Larm2_oct_model", +"0032c810 000080 Larm1_oct_model", +"0032c890 0000a8 chest_oct_model", +"0032c938 0000c0 Rfoot3_oct_model", +"0032c9f8 0000c0 Rfoot2_oct_model", +"0032cab8 0000b8 Rfoot1_oct_model", +"0032cb70 0000c0 Lfoot3_oct_model", +"0032cc30 0000c0 Lfoot2_oct_model", +"0032ccf0 0000c0 Lfoot1_oct_model", +"0032cdb0 000070 base_oct_model", +"0032ce20 000138 cKF_je_r_oct_1_tbl", +"0032cf58 000008 cKF_bs_r_oct_1", +"", +"0032cf60 000020 oct_1_pal", +"0032cf80 000100 oct_1_eye1_TA_tex_txt", +"0032d080 000100 oct_1_eye2_TA_tex_txt", +"0032d180 000100 oct_1_eye3_TA_tex_txt", +"0032d280 000100 oct_1_eye4_TA_tex_txt", +"0032d380 000100 oct_1_eye5_TA_tex_txt", +"0032d480 000100 oct_1_eye6_TA_tex_txt", +"0032d580 000100 oct_1_eye7_TA_tex_txt", +"0032d680 000100 oct_1_eye8_TA_tex_txt", +"0032d780 000200 oct_1_tmem_txt", +"", +"0032d980 0017d0 ost_1_v", +"0032f150 0001d0 head_ost_model", +"0032f320 000078 mouth_ost_model", +"0032f398 000080 Rarm2_ost_model", +"0032f418 000078 Rarm1_ost_model", +"0032f490 000080 Larm2_ost_model", +"0032f510 000078 Larm1_ost_model", +"0032f588 0000d8 chest_ost_model", +"0032f660 0000f8 tail_ost_model", +"0032f758 0000a0 Rfoot3_ost_model", +"0032f7f8 000080 Rfoot2_ost_model", +"0032f878 000058 Rfoot1_ost_model", +"0032f8d0 0000a0 Lfoot3_ost_model", +"0032f970 000080 Lfoot2_ost_model", +"0032f9f0 000058 Lfoot1_ost_model", +"0032fa48 000078 base_ost_model", +"0032fac0 000138 cKF_je_r_ost_1_tbl", +"0032fbf8 000008 cKF_bs_r_ost_1", +"", +"0032fc00 000020 ost_1_pal", +"0032fc20 000100 ost_1_eye1_TA_tex_txt", +"0032fd20 000100 ost_1_eye2_TA_tex_txt", +"0032fe20 000100 ost_1_eye3_TA_tex_txt", +"0032ff20 000100 ost_1_eye4_TA_tex_txt", +"00330020 000100 ost_1_eye5_TA_tex_txt", +"00330120 000100 ost_1_eye6_TA_tex_txt", +"00330220 000100 ost_1_eye7_TA_tex_txt", +"00330320 000100 ost_1_eye8_TA_tex_txt", +"00330420 000540 ost_1_tmem_txt", +"", +"00330960 000020 ost_2_pal", +"00330980 000100 ost_2_eye1_TA_tex_txt", +"00330a80 000100 ost_2_eye2_TA_tex_txt", +"00330b80 000100 ost_2_eye3_TA_tex_txt", +"00330c80 000100 ost_2_eye4_TA_tex_txt", +"00330d80 000100 ost_2_eye5_TA_tex_txt", +"00330e80 000100 ost_2_eye6_TA_tex_txt", +"00330f80 000100 ost_2_eye7_TA_tex_txt", +"00331080 000100 ost_2_eye8_TA_tex_txt", +"00331180 000540 ost_2_tmem_txt", +"", +"003316c0 000020 ost_3_pal", +"003316e0 000100 ost_3_eye1_TA_tex_txt", +"003317e0 000100 ost_3_eye2_TA_tex_txt", +"003318e0 000100 ost_3_eye3_TA_tex_txt", +"003319e0 000100 ost_3_eye4_TA_tex_txt", +"00331ae0 000100 ost_3_eye5_TA_tex_txt", +"00331be0 000100 ost_3_eye6_TA_tex_txt", +"00331ce0 000100 ost_3_eye7_TA_tex_txt", +"00331de0 000100 ost_3_eye8_TA_tex_txt", +"00331ee0 000540 ost_3_tmem_txt", +"", +"00332420 000020 ost_4_pal", +"00332440 000100 ost_4_eye1_TA_tex_txt", +"00332540 000100 ost_4_eye2_TA_tex_txt", +"00332640 000100 ost_4_eye3_TA_tex_txt", +"00332740 000100 ost_4_eye4_TA_tex_txt", +"00332840 000100 ost_4_eye5_TA_tex_txt", +"00332940 000100 ost_4_eye6_TA_tex_txt", +"00332a40 000100 ost_4_eye7_TA_tex_txt", +"00332b40 000100 ost_4_eye8_TA_tex_txt", +"00332c40 000540 ost_4_tmem_txt", +"", +"00333a28 0017e0 pgn_1_v", +"00335208 0001d0 head_pgn_model", +"003353d8 000078 mouth_pgn_model", +"00335450 000080 Rarm2_pgn_model", +"003354d0 000078 Rarm1_pgn_model", +"00335548 000080 Larm2_pgn_model", +"003355c8 000078 Larm1_pgn_model", +"00335640 0000d8 chest_pgn_model", +"00335718 000088 tail1_pgn_model", +"003357a0 000088 Rfoot3_pgn_model", +"00335828 000080 Rfoot2_pgn_model", +"003358a8 000058 Rfoot1_pgn_model", +"00335900 000088 Lfoot3_pgn_model", +"00335988 000080 Lfoot2_pgn_model", +"00335a08 000058 Lfoot1_pgn_model", +"00335a60 0000a0 base_pgn_model", +"00335b00 000138 cKF_je_r_pgn_1_tbl", +"00335c38 000008 cKF_bs_r_pgn_1", +"", +"00335c40 000020 pgn_1_pal", +"00335c60 000100 pgn_1_eye1_TA_tex_txt", +"00335d60 000100 pgn_1_eye2_TA_tex_txt", +"00335e60 000100 pgn_1_eye3_TA_tex_txt", +"00335f60 000100 pgn_1_eye4_TA_tex_txt", +"00336060 000100 pgn_1_eye5_TA_tex_txt", +"00336160 000100 pgn_1_eye6_TA_tex_txt", +"00336260 000100 pgn_1_eye7_TA_tex_txt", +"00336360 000100 pgn_1_eye8_TA_tex_txt", +"00336460 000580 pgn_1_tmem_txt", +"", +"003369e0 000020 pgn_2_pal", +"00336a00 000100 pgn_2_eye1_TA_tex_txt", +"00336b00 000100 pgn_2_eye2_TA_tex_txt", +"00336c00 000100 pgn_2_eye3_TA_tex_txt", +"00336d00 000100 pgn_2_eye4_TA_tex_txt", +"00336e00 000100 pgn_2_eye5_TA_tex_txt", +"00336f00 000100 pgn_2_eye6_TA_tex_txt", +"00337000 000100 pgn_2_eye7_TA_tex_txt", +"00337100 000100 pgn_2_eye8_TA_tex_txt", +"00337200 000580 pgn_2_tmem_txt", +"", +"00337780 000020 pgn_3_pal", +"003377a0 000100 pgn_3_eye1_TA_tex_txt", +"003378a0 000100 pgn_3_eye2_TA_tex_txt", +"003379a0 000100 pgn_3_eye3_TA_tex_txt", +"00337aa0 000100 pgn_3_eye4_TA_tex_txt", +"00337ba0 000100 pgn_3_eye5_TA_tex_txt", +"00337ca0 000100 pgn_3_eye6_TA_tex_txt", +"00337da0 000100 pgn_3_eye7_TA_tex_txt", +"00337ea0 000100 pgn_3_eye8_TA_tex_txt", +"00337fa0 000580 pgn_3_tmem_txt", +"", +"00338520 000020 pgn_4_pal", +"00338540 000100 pgn_4_eye1_TA_tex_txt", +"00338640 000100 pgn_4_eye2_TA_tex_txt", +"00338740 000100 pgn_4_eye3_TA_tex_txt", +"00338840 000100 pgn_4_eye4_TA_tex_txt", +"00338940 000100 pgn_4_eye5_TA_tex_txt", +"00338a40 000100 pgn_4_eye6_TA_tex_txt", +"00338b40 000100 pgn_4_eye7_TA_tex_txt", +"00338c40 000100 pgn_4_eye8_TA_tex_txt", +"00338d40 000580 pgn_4_tmem_txt", +"", +"003392c0 000020 pgn_5_pal", +"003392e0 000100 pgn_5_eye1_TA_tex_txt", +"003393e0 000100 pgn_5_eye2_TA_tex_txt", +"003394e0 000100 pgn_5_eye3_TA_tex_txt", +"003395e0 000100 pgn_5_eye4_TA_tex_txt", +"003396e0 000100 pgn_5_eye5_TA_tex_txt", +"003397e0 000100 pgn_5_eye6_TA_tex_txt", +"003398e0 000100 pgn_5_eye7_TA_tex_txt", +"003399e0 000100 pgn_5_eye8_TA_tex_txt", +"00339ae0 000580 pgn_5_tmem_txt", +"", +"0033a060 000020 pgn_6_pal", +"0033a080 000100 pgn_6_eye1_TA_tex_txt", +"0033a180 000100 pgn_6_eye2_TA_tex_txt", +"0033a280 000100 pgn_6_eye3_TA_tex_txt", +"0033a380 000100 pgn_6_eye4_TA_tex_txt", +"0033a480 000100 pgn_6_eye5_TA_tex_txt", +"0033a580 000100 pgn_6_eye6_TA_tex_txt", +"0033a680 000100 pgn_6_eye7_TA_tex_txt", +"0033a780 000100 pgn_6_eye8_TA_tex_txt", +"0033a880 000580 pgn_6_tmem_txt", +"", +"0033ae00 000020 pgn_7_pal", +"0033ae20 000100 pgn_7_eye1_TA_tex_txt", +"0033af20 000100 pgn_7_eye2_TA_tex_txt", +"0033b020 000100 pgn_7_eye3_TA_tex_txt", +"0033b120 000100 pgn_7_eye4_TA_tex_txt", +"0033b220 000100 pgn_7_eye5_TA_tex_txt", +"0033b320 000100 pgn_7_eye6_TA_tex_txt", +"0033b420 000100 pgn_7_eye7_TA_tex_txt", +"0033b520 000100 pgn_7_eye8_TA_tex_txt", +"0033b620 000580 pgn_7_tmem_txt", +"", +"0033bba0 000020 pgn_8_pal", +"0033bbc0 000100 pgn_8_eye1_TA_tex_txt", +"0033bcc0 000100 pgn_8_eye2_TA_tex_txt", +"0033bdc0 000100 pgn_8_eye3_TA_tex_txt", +"0033bec0 000100 pgn_8_eye4_TA_tex_txt", +"0033bfc0 000100 pgn_8_eye5_TA_tex_txt", +"0033c0c0 000100 pgn_8_eye6_TA_tex_txt", +"0033c1c0 000100 pgn_8_eye7_TA_tex_txt", +"0033c2c0 000100 pgn_8_eye8_TA_tex_txt", +"0033c3c0 000580 pgn_8_tmem_txt", +"", +"0033c940 0013f0 pig_1_v", +"0033dd30 000138 head_pig_model", +"0033de68 000088 Rarm2_pig_model", +"0033def0 000078 Rarm1_pig_model", +"0033df68 000088 Larm2_pig_model", +"0033dff0 000078 Larm1_pig_model", +"0033e068 0000a8 chest_pig_model", +"0033e110 000080 tail1_pig_model", +"0033e190 000080 Rfoot2_pig_model", +"0033e210 0000c0 Rfoot1_pig_model", +"0033e2d0 000080 Lfoot2_pig_model", +"0033e350 0000c0 Lfoot1_pig_model", +"0033e410 000070 base_pig_model", +"0033e480 000138 cKF_je_r_pig_1_tbl", +"0033e5b8 000008 cKF_bs_r_pig_1", +"", +"0033e5c0 000020 pig_1_pal", +"0033e5e0 000100 pig_1_eye1_TA_tex_txt", +"0033e6e0 000100 pig_1_eye2_TA_tex_txt", +"0033e7e0 000100 pig_1_eye3_TA_tex_txt", +"0033e8e0 000100 pig_1_eye4_TA_tex_txt", +"0033e9e0 000100 pig_1_eye5_TA_tex_txt", +"0033eae0 000100 pig_1_eye6_TA_tex_txt", +"0033ebe0 000100 pig_1_eye7_TA_tex_txt", +"0033ece0 000100 pig_1_eye8_TA_tex_txt", +"0033ede0 000100 pig_1_mouth1_TA_tex_txt", +"0033eee0 000100 pig_1_mouth2_TA_tex_txt", +"0033efe0 000100 pig_1_mouth3_TA_tex_txt", +"0033f0e0 000100 pig_1_mouth4_TA_tex_txt", +"0033f1e0 000100 pig_1_mouth5_TA_tex_txt", +"0033f2e0 000100 pig_1_mouth6_TA_tex_txt", +"0033f3e0 000380 pig_1_tmem_txt", +"", +"0033f760 000020 pig_2_pal", +"0033f780 000100 pig_2_eye1_TA_tex_txt", +"0033f880 000100 pig_2_eye2_TA_tex_txt", +"0033f980 000100 pig_2_eye3_TA_tex_txt", +"0033fa80 000100 pig_2_eye4_TA_tex_txt", +"0033fb80 000100 pig_2_eye5_TA_tex_txt", +"0033fc80 000100 pig_2_eye6_TA_tex_txt", +"0033fd80 000100 pig_2_eye7_TA_tex_txt", +"0033fe80 000100 pig_2_eye8_TA_tex_txt", +"0033ff80 000100 pig_2_mouth1_TA_tex_txt", +"00340080 000100 pig_2_mouth2_TA_tex_txt", +"00340180 000100 pig_2_mouth3_TA_tex_txt", +"00340280 000100 pig_2_mouth4_TA_tex_txt", +"00340380 000100 pig_2_mouth5_TA_tex_txt", +"00340480 000100 pig_2_mouth6_TA_tex_txt", +"00340580 000380 pig_2_tmem_txt", +"", +"00340900 000020 pig_11_pal", +"00340920 000100 pig_11_eye1_TA_tex_txt", +"00340a20 000100 pig_11_eye2_TA_tex_txt", +"00340b20 000100 pig_11_eye3_TA_tex_txt", +"00340c20 000100 pig_11_eye4_TA_tex_txt", +"00340d20 000100 pig_11_eye5_TA_tex_txt", +"00340e20 000100 pig_11_eye6_TA_tex_txt", +"00340f20 000100 pig_11_eye7_TA_tex_txt", +"00341020 000100 pig_11_eye8_TA_tex_txt", +"00341120 000100 pig_11_mouth1_TA_tex_txt", +"00341220 000100 pig_11_mouth2_TA_tex_txt", +"00341320 000100 pig_11_mouth3_TA_tex_txt", +"00341420 000100 pig_11_mouth4_TA_tex_txt", +"00341520 000100 pig_11_mouth5_TA_tex_txt", +"00341620 000100 pig_11_mouth6_TA_tex_txt", +"00341720 000380 pig_11_tmem_txt", +"", +"00341aa0 000020 pig_3_pal", +"00341ac0 000100 pig_3_eye1_TA_tex_txt", +"00341bc0 000100 pig_3_eye2_TA_tex_txt", +"00341cc0 000100 pig_3_eye3_TA_tex_txt", +"00341dc0 000100 pig_3_eye4_TA_tex_txt", +"00341ec0 000100 pig_3_eye5_TA_tex_txt", +"00341fc0 000100 pig_3_eye6_TA_tex_txt", +"003420c0 000100 pig_3_eye7_TA_tex_txt", +"003421c0 000100 pig_3_eye8_TA_tex_txt", +"003422c0 000100 pig_3_mouth1_TA_tex_txt", +"003423c0 000100 pig_3_mouth2_TA_tex_txt", +"003424c0 000100 pig_3_mouth3_TA_tex_txt", +"003425c0 000100 pig_3_mouth4_TA_tex_txt", +"003426c0 000100 pig_3_mouth5_TA_tex_txt", +"003427c0 000100 pig_3_mouth6_TA_tex_txt", +"003428c0 000380 pig_3_tmem_txt", +"", +"00342c40 000020 pig_4_pal", +"00342c60 000100 pig_4_eye1_TA_tex_txt", +"00342d60 000100 pig_4_eye2_TA_tex_txt", +"00342e60 000100 pig_4_eye3_TA_tex_txt", +"00342f60 000100 pig_4_eye4_TA_tex_txt", +"00343060 000100 pig_4_eye5_TA_tex_txt", +"00343160 000100 pig_4_eye6_TA_tex_txt", +"00343260 000100 pig_4_eye7_TA_tex_txt", +"00343360 000100 pig_4_eye8_TA_tex_txt", +"00343460 000100 pig_4_mouth1_TA_tex_txt", +"00343560 000100 pig_4_mouth2_TA_tex_txt", +"00343660 000100 pig_4_mouth3_TA_tex_txt", +"00343760 000100 pig_4_mouth4_TA_tex_txt", +"00343860 000100 pig_4_mouth5_TA_tex_txt", +"00343960 000100 pig_4_mouth6_TA_tex_txt", +"00343a60 000380 pig_4_tmem_txt", +"", +"00343de0 000020 pig_5_pal", +"00343e00 000100 pig_5_eye1_TA_tex_txt", +"00343f00 000100 pig_5_eye2_TA_tex_txt", +"00344000 000100 pig_5_eye3_TA_tex_txt", +"00344100 000100 pig_5_eye4_TA_tex_txt", +"00344200 000100 pig_5_eye5_TA_tex_txt", +"00344300 000100 pig_5_eye6_TA_tex_txt", +"00344400 000100 pig_5_eye7_TA_tex_txt", +"00344500 000100 pig_5_eye8_TA_tex_txt", +"00344600 000100 pig_5_mouth1_TA_tex_txt", +"00344700 000100 pig_5_mouth2_TA_tex_txt", +"00344800 000100 pig_5_mouth3_TA_tex_txt", +"00344900 000100 pig_5_mouth4_TA_tex_txt", +"00344a00 000100 pig_5_mouth5_TA_tex_txt", +"00344b00 000100 pig_5_mouth6_TA_tex_txt", +"00344c00 000380 pig_5_tmem_txt", +"", +"00344f80 000020 pig_6_pal", +"00344fa0 000100 pig_6_eye1_TA_tex_txt", +"003450a0 000100 pig_6_eye2_TA_tex_txt", +"003451a0 000100 pig_6_eye3_TA_tex_txt", +"003452a0 000100 pig_6_eye4_TA_tex_txt", +"003453a0 000100 pig_6_eye5_TA_tex_txt", +"003454a0 000100 pig_6_eye6_TA_tex_txt", +"003455a0 000100 pig_6_eye7_TA_tex_txt", +"003456a0 000100 pig_6_eye8_TA_tex_txt", +"003457a0 000100 pig_6_mouth1_TA_tex_txt", +"003458a0 000100 pig_6_mouth2_TA_tex_txt", +"003459a0 000100 pig_6_mouth3_TA_tex_txt", +"00345aa0 000100 pig_6_mouth4_TA_tex_txt", +"00345ba0 000100 pig_6_mouth5_TA_tex_txt", +"00345ca0 000100 pig_6_mouth6_TA_tex_txt", +"00345da0 000380 pig_6_tmem_txt", +"", +"00346120 000020 pig_7_pal", +"00346140 000100 pig_7_eye1_TA_tex_txt", +"00346240 000100 pig_7_eye2_TA_tex_txt", +"00346340 000100 pig_7_eye3_TA_tex_txt", +"00346440 000100 pig_7_eye4_TA_tex_txt", +"00346540 000100 pig_7_eye5_TA_tex_txt", +"00346640 000100 pig_7_eye6_TA_tex_txt", +"00346740 000100 pig_7_eye7_TA_tex_txt", +"00346840 000100 pig_7_eye8_TA_tex_txt", +"00346940 000100 pig_7_mouth1_TA_tex_txt", +"00346a40 000100 pig_7_mouth2_TA_tex_txt", +"00346b40 000100 pig_7_mouth3_TA_tex_txt", +"00346c40 000100 pig_7_mouth4_TA_tex_txt", +"00346d40 000100 pig_7_mouth5_TA_tex_txt", +"00346e40 000100 pig_7_mouth6_TA_tex_txt", +"00346f40 000380 pig_7_tmem_txt", +"", +"003472c0 000020 pig_8_pal", +"003472e0 000100 pig_8_eye1_TA_tex_txt", +"003473e0 000100 pig_8_eye2_TA_tex_txt", +"003474e0 000100 pig_8_eye3_TA_tex_txt", +"003475e0 000100 pig_8_eye4_TA_tex_txt", +"003476e0 000100 pig_8_eye5_TA_tex_txt", +"003477e0 000100 pig_8_eye6_TA_tex_txt", +"003478e0 000100 pig_8_eye7_TA_tex_txt", +"003479e0 000100 pig_8_eye8_TA_tex_txt", +"00347ae0 000100 pig_8_mouth1_TA_tex_txt", +"00347be0 000100 pig_8_mouth2_TA_tex_txt", +"00347ce0 000100 pig_8_mouth3_TA_tex_txt", +"00347de0 000100 pig_8_mouth4_TA_tex_txt", +"00347ee0 000100 pig_8_mouth5_TA_tex_txt", +"00347fe0 000100 pig_8_mouth6_TA_tex_txt", +"003480e0 000380 pig_8_tmem_txt", +"", +"00348460 000020 pig_9_pal", +"00348480 000100 pig_9_eye1_TA_tex_txt", +"00348580 000100 pig_9_eye2_TA_tex_txt", +"00348680 000100 pig_9_eye3_TA_tex_txt", +"00348780 000100 pig_9_eye4_TA_tex_txt", +"00348880 000100 pig_9_eye5_TA_tex_txt", +"00348980 000100 pig_9_eye6_TA_tex_txt", +"00348a80 000100 pig_9_eye7_TA_tex_txt", +"00348b80 000100 pig_9_eye8_TA_tex_txt", +"00348c80 000100 pig_9_mouth1_TA_tex_txt", +"00348d80 000100 pig_9_mouth2_TA_tex_txt", +"00348e80 000100 pig_9_mouth3_TA_tex_txt", +"00348f80 000100 pig_9_mouth4_TA_tex_txt", +"00349080 000100 pig_9_mouth5_TA_tex_txt", +"00349180 000100 pig_9_mouth6_TA_tex_txt", +"00349280 000380 pig_9_tmem_txt", +"", +"00349600 000020 pig_10_pal", +"00349620 000100 pig_10_eye1_TA_tex_txt", +"00349720 000100 pig_10_eye2_TA_tex_txt", +"00349820 000100 pig_10_eye3_TA_tex_txt", +"00349920 000100 pig_10_eye4_TA_tex_txt", +"00349a20 000100 pig_10_eye5_TA_tex_txt", +"00349b20 000100 pig_10_eye6_TA_tex_txt", +"00349c20 000100 pig_10_eye7_TA_tex_txt", +"00349d20 000100 pig_10_eye8_TA_tex_txt", +"00349e20 000100 pig_10_mouth1_TA_tex_txt", +"00349f20 000100 pig_10_mouth2_TA_tex_txt", +"0034a020 000100 pig_10_mouth3_TA_tex_txt", +"0034a120 000100 pig_10_mouth4_TA_tex_txt", +"0034a220 000100 pig_10_mouth5_TA_tex_txt", +"0034a320 000100 pig_10_mouth6_TA_tex_txt", +"0034a420 000380 pig_10_tmem_txt", +"", +"0034a7a0 001cb0 pla_1_v", +"0034c450 0002b8 head_pla_model", +"0034c708 000088 Rarm2_pla_model", +"0034c790 000078 Rarm1_pla_model", +"0034c808 000088 Larm2_pla_model", +"0034c890 000078 Larm1_pla_model", +"0034c908 0000f8 chest_pla_model", +"0034ca00 000088 tail1_pla_model", +"0034ca88 000080 Rfoot2_pla_model", +"0034cb08 000058 Rfoot1_pla_model", +"0034cb60 000080 Lfoot2_pla_model", +"0034cbe0 000058 Lfoot1_pla_model", +"0034cc38 0000a0 base_pla_model", +"0034ccd8 000138 cKF_je_r_pla_1_tbl", +"0034ce10 000008 cKF_bs_r_pla_1", +"", +"0034ce18 001730 plc_1_v", +"0034e548 000198 head_plc_model", +"0034e6e0 000080 Rarm2_plc_model", +"0034e760 000088 Rarm1_plc_model", +"0034e7e8 000080 Larm2_plc_model", +"0034e868 000088 Larm1_plc_model", +"0034e8f0 000108 chest_plc_model", +"0034e9f8 000058 tail1_plc_model", +"0034ea50 0000a0 tail2_plc_model", +"0034eaf0 000088 Rfoot2_plc_model", +"0034eb78 000080 Rfoot1_plc_model", +"0034ebf8 000088 Lfoot2_plc_model", +"0034ec80 000080 Lfoot1_plc_model", +"0034ed00 0000d0 base_plc_model", +"0034edd0 000138 cKF_je_r_plc_1_tbl", +"0034ef08 000008 cKF_bs_r_plc_1", +"", +"0034ef20 000020 plc_1_pal", +"0034ef40 000100 plc_1_eye1_TA_tex_txt", +"0034f040 000100 plc_1_eye2_TA_tex_txt", +"0034f140 000100 plc_1_eye3_TA_tex_txt", +"0034f240 000100 plc_1_eye4_TA_tex_txt", +"0034f340 000100 plc_1_eye5_TA_tex_txt", +"0034f440 000100 plc_1_eye6_TA_tex_txt", +"0034f540 000100 plc_1_eye7_TA_tex_txt", +"0034f640 000100 plc_1_eye8_TA_tex_txt", +"0034f740 000100 plc_1_mouth1_TA_tex_txt", +"0034f840 000100 plc_1_mouth2_TA_tex_txt", +"0034f940 000100 plc_1_mouth3_TA_tex_txt", +"0034fa40 000100 plc_1_mouth4_TA_tex_txt", +"0034fb40 000100 plc_1_mouth5_TA_tex_txt", +"0034fc40 000100 plc_1_mouth6_TA_tex_txt", +"0034fd40 0006c0 plc_1_tmem_txt", +"", +"00350400 000020 pla_1_pal", +"00350420 000100 pla_1_eye1_TA_tex_txt", +"00350520 000100 pla_1_eye2_TA_tex_txt", +"00350620 000100 pla_1_eye3_TA_tex_txt", +"00350720 000100 pla_1_eye4_TA_tex_txt", +"00350820 000100 pla_1_eye5_TA_tex_txt", +"00350920 000100 pla_1_eye6_TA_tex_txt", +"00350a20 000100 pla_1_eye7_TA_tex_txt", +"00350b20 000100 pla_1_eye8_TA_tex_txt", +"00350c20 000100 pla_1_mouth1_TA_tex_txt", +"00350d20 000100 pla_1_mouth2_TA_tex_txt", +"00350e20 000100 pla_1_mouth3_TA_tex_txt", +"00350f20 000100 pla_1_mouth4_TA_tex_txt", +"00351020 000100 pla_1_mouth5_TA_tex_txt", +"00351120 000100 pla_1_mouth6_TA_tex_txt", +"00351220 000580 pla_1_tmem_txt", +"", +"003517a0 001a20 pga_1_v", +"003531c0 0001a0 head_pga_model", +"00353360 0000f0 mouth_pga_model", +"00353450 0000b8 Rarm2_pga_model", +"00353508 0000a8 Rarm1_pga_model", +"003535b0 0000b8 Larm2_pga_model", +"00353668 0000a8 Larm1_pga_model", +"00353710 0000a0 chest_pga_model", +"003537b0 000078 tail1_pga_model", +"00353828 000088 Rfoot3_pga_model", +"003538b0 000080 Rfoot2_pga_model", +"00353930 000058 Rfoot1_pga_model", +"00353988 000088 Lfoot3_pga_model", +"00353a10 000080 Lfoot2_pga_model", +"00353a90 000058 Lfoot1_pga_model", +"00353ae8 000078 base_pga_model", +"00353b60 000138 cKF_je_r_pga_1_tbl", +"00353c98 000008 cKF_bs_r_pga_1", +"", +"00353ca0 000020 pga_1_pal", +"00353cc0 000100 pga_1_eye1_TA_tex_txt", +"00353dc0 000100 pga_1_eye2_TA_tex_txt", +"00353ec0 000100 pga_1_eye3_TA_tex_txt", +"00353fc0 000100 pga_1_eye4_TA_tex_txt", +"003540c0 000100 pga_1_eye5_TA_tex_txt", +"003541c0 000100 pga_1_eye6_TA_tex_txt", +"003542c0 000100 pga_1_eye7_TA_tex_txt", +"003543c0 000100 pga_1_eye8_TA_tex_txt", +"003544c0 000640 pga_1_tmem_txt", +"", +"00354b00 001990 pgb_1_v", +"00356490 0001c0 head_pgb_model", +"00356650 0000b0 mouth_pgb_model", +"00356700 0000b8 Rarm2_pgb_model", +"003567b8 0000a8 Rarm1_pgb_model", +"00356860 0000b8 Larm2_pgb_model", +"00356918 0000a8 Larm1_pgb_model", +"003569c0 0000a0 chest_pgb_model", +"00356a60 000078 tail1_pgb_model", +"00356ad8 000088 Rfoot3_pgb_model", +"00356b60 000080 Rfoot2_pgb_model", +"00356be0 000058 Rfoot1_pgb_model", +"00356c38 000088 Lfoot3_pgb_model", +"00356cc0 000080 Lfoot2_pgb_model", +"00356d40 000058 Lfoot1_pgb_model", +"00356d98 000078 base_pgb_model", +"00356e10 000138 cKF_je_r_pgb_1_tbl", +"00356f48 000008 cKF_bs_r_pgb_1", +"", +"00356f60 000020 pgb_1_pal", +"00356f80 000100 pgb_1_eye1_TA_tex_txt", +"00357080 000100 pgb_1_eye2_TA_tex_txt", +"00357180 000100 pgb_1_eye3_TA_tex_txt", +"00357280 000100 pgb_1_eye4_TA_tex_txt", +"00357380 000100 pgb_1_eye5_TA_tex_txt", +"00357480 000100 pgb_1_eye6_TA_tex_txt", +"00357580 000100 pgb_1_eye7_TA_tex_txt", +"00357680 000100 pgb_1_eye8_TA_tex_txt", +"00357780 000780 pgb_1_tmem_txt", +"", +"00357f00 001a80 plb_1_v", +"00359980 000190 head_plb_model", +"00359b10 0000f0 mouth_plb_model", +"00359c00 0000b8 Rarm2_plb_model", +"00359cb8 000078 Rarm1_plb_model", +"00359d30 0000b8 Larm2_plb_model", +"00359de8 000078 Larm1_plb_model", +"00359e60 000150 chest_plb_model", +"00359fb0 000088 Rfoot3_plb_model", +"0035a038 000080 Rfoot2_plb_model", +"0035a0b8 000058 Rfoot1_plb_model", +"0035a110 000088 Lfoot3_plb_model", +"0035a198 000080 Lfoot2_plb_model", +"0035a218 000058 Lfoot1_plb_model", +"0035a270 0000d0 base_plb_model", +"0035a340 000138 cKF_je_r_plb_1_tbl", +"0035a478 000008 cKF_bs_r_plb_1", +"", +"0035a480 000020 plb_1_pal", +"0035a4a0 000100 plb_1_eye1_TA_tex_txt", +"0035a5a0 000100 plb_1_eye2_TA_tex_txt", +"0035a6a0 000100 plb_1_eye3_TA_tex_txt", +"0035a7a0 000100 plb_1_eye4_TA_tex_txt", +"0035a8a0 000100 plb_1_eye5_TA_tex_txt", +"0035a9a0 000100 plb_1_eye6_TA_tex_txt", +"0035aaa0 000100 plb_1_eye7_TA_tex_txt", +"0035aba0 000100 plb_1_eye8_TA_tex_txt", +"0035aca0 000780 plb_1_tmem_txt", +"", +"0035b420 0015a0 rbt_1_v", +"0035c9c0 0001a8 head_rbt_model", +"0035cb68 000088 Rarm2_rbt_model", +"0035cbf0 000078 Rarm1_rbt_model", +"0035cc68 000088 Larm2_rbt_model", +"0035ccf0 000078 Larm1_rbt_model", +"0035cd68 0000a8 chest_rbt_model", +"0035ce10 000078 tail1_rbt_model", +"0035ce88 000080 Rfoot2_rbt_model", +"0035cf08 0000c0 Rfoot1_rbt_model", +"0035cfc8 000080 Lfoot2_rbt_model", +"0035d048 0000c0 Lfoot1_rbt_model", +"0035d108 000070 base_rbt_model", +"0035d178 000138 cKF_je_r_rbt_1_tbl", +"0035d2b0 000008 cKF_bs_r_rbt_1", +"", +"0035d2c0 000020 rbt_1_pal", +"0035d2e0 000100 rbt_1_eye1_TA_tex_txt", +"0035d3e0 000100 rbt_1_eye2_TA_tex_txt", +"0035d4e0 000100 rbt_1_eye3_TA_tex_txt", +"0035d5e0 000100 rbt_1_eye4_TA_tex_txt", +"0035d6e0 000100 rbt_1_eye5_TA_tex_txt", +"0035d7e0 000100 rbt_1_eye6_TA_tex_txt", +"0035d8e0 000100 rbt_1_eye7_TA_tex_txt", +"0035d9e0 000100 rbt_1_eye8_TA_tex_txt", +"0035dae0 000100 rbt_1_mouth1_TA_tex_txt", +"0035dbe0 000100 rbt_1_mouth2_TA_tex_txt", +"0035dce0 000100 rbt_1_mouth3_TA_tex_txt", +"0035dde0 000100 rbt_1_mouth4_TA_tex_txt", +"0035dee0 000100 rbt_1_mouth5_TA_tex_txt", +"0035dfe0 000100 rbt_1_mouth6_TA_tex_txt", +"0035e0e0 000400 rbt_1_tmem_txt", +"", +"0035e4e0 000020 rbt_2_pal", +"0035e500 000100 rbt_2_eye1_TA_tex_txt", +"0035e600 000100 rbt_2_eye2_TA_tex_txt", +"0035e700 000100 rbt_2_eye3_TA_tex_txt", +"0035e800 000100 rbt_2_eye4_TA_tex_txt", +"0035e900 000100 rbt_2_eye5_TA_tex_txt", +"0035ea00 000100 rbt_2_eye6_TA_tex_txt", +"0035eb00 000100 rbt_2_eye7_TA_tex_txt", +"0035ec00 000100 rbt_2_eye8_TA_tex_txt", +"0035ed00 000100 rbt_2_mouth1_TA_tex_txt", +"0035ee00 000100 rbt_2_mouth2_TA_tex_txt", +"0035ef00 000100 rbt_2_mouth3_TA_tex_txt", +"0035f000 000100 rbt_2_mouth4_TA_tex_txt", +"0035f100 000100 rbt_2_mouth5_TA_tex_txt", +"0035f200 000100 rbt_2_mouth6_TA_tex_txt", +"0035f300 000400 rbt_2_tmem_txt", +"", +"0035f700 000020 rbt_11_pal", +"0035f720 000100 rbt_11_eye1_TA_tex_txt", +"0035f820 000100 rbt_11_eye2_TA_tex_txt", +"0035f920 000100 rbt_11_eye3_TA_tex_txt", +"0035fa20 000100 rbt_11_eye4_TA_tex_txt", +"0035fb20 000100 rbt_11_eye5_TA_tex_txt", +"0035fc20 000100 rbt_11_eye6_TA_tex_txt", +"0035fd20 000100 rbt_11_eye7_TA_tex_txt", +"0035fe20 000100 rbt_11_eye8_TA_tex_txt", +"0035ff20 000100 rbt_11_mouth1_TA_tex_txt", +"00360020 000100 rbt_11_mouth2_TA_tex_txt", +"00360120 000100 rbt_11_mouth3_TA_tex_txt", +"00360220 000100 rbt_11_mouth4_TA_tex_txt", +"00360320 000100 rbt_11_mouth5_TA_tex_txt", +"00360420 000100 rbt_11_mouth6_TA_tex_txt", +"00360520 000400 rbt_11_tmem_txt", +"", +"00360920 000020 rbt_3_pal", +"00360940 000100 rbt_3_eye1_TA_tex_txt", +"00360a40 000100 rbt_3_eye2_TA_tex_txt", +"00360b40 000100 rbt_3_eye3_TA_tex_txt", +"00360c40 000100 rbt_3_eye4_TA_tex_txt", +"00360d40 000100 rbt_3_eye5_TA_tex_txt", +"00360e40 000100 rbt_3_eye6_TA_tex_txt", +"00360f40 000100 rbt_3_eye7_TA_tex_txt", +"00361040 000100 rbt_3_eye8_TA_tex_txt", +"00361140 000100 rbt_3_mouth1_TA_tex_txt", +"00361240 000100 rbt_3_mouth2_TA_tex_txt", +"00361340 000100 rbt_3_mouth3_TA_tex_txt", +"00361440 000100 rbt_3_mouth4_TA_tex_txt", +"00361540 000100 rbt_3_mouth5_TA_tex_txt", +"00361640 000100 rbt_3_mouth6_TA_tex_txt", +"00361740 000400 rbt_3_tmem_txt", +"", +"00361b40 000020 rbt_4_pal", +"00361b60 000100 rbt_4_eye1_TA_tex_txt", +"00361c60 000100 rbt_4_eye2_TA_tex_txt", +"00361d60 000100 rbt_4_eye3_TA_tex_txt", +"00361e60 000100 rbt_4_eye4_TA_tex_txt", +"00361f60 000100 rbt_4_eye5_TA_tex_txt", +"00362060 000100 rbt_4_eye6_TA_tex_txt", +"00362160 000100 rbt_4_eye7_TA_tex_txt", +"00362260 000100 rbt_4_eye8_TA_tex_txt", +"00362360 000100 rbt_4_mouth1_TA_tex_txt", +"00362460 000100 rbt_4_mouth2_TA_tex_txt", +"00362560 000100 rbt_4_mouth3_TA_tex_txt", +"00362660 000100 rbt_4_mouth4_TA_tex_txt", +"00362760 000100 rbt_4_mouth5_TA_tex_txt", +"00362860 000100 rbt_4_mouth6_TA_tex_txt", +"00362960 000400 rbt_4_tmem_txt", +"", +"00362d60 000020 rbt_5_pal", +"00362d80 000100 rbt_5_eye1_TA_tex_txt", +"00362e80 000100 rbt_5_eye2_TA_tex_txt", +"00362f80 000100 rbt_5_eye3_TA_tex_txt", +"00363080 000100 rbt_5_eye4_TA_tex_txt", +"00363180 000100 rbt_5_eye5_TA_tex_txt", +"00363280 000100 rbt_5_eye6_TA_tex_txt", +"00363380 000100 rbt_5_eye7_TA_tex_txt", +"00363480 000100 rbt_5_eye8_TA_tex_txt", +"00363580 000100 rbt_5_mouth1_TA_tex_txt", +"00363680 000100 rbt_5_mouth2_TA_tex_txt", +"00363780 000100 rbt_5_mouth3_TA_tex_txt", +"00363880 000100 rbt_5_mouth4_TA_tex_txt", +"00363980 000100 rbt_5_mouth5_TA_tex_txt", +"00363a80 000100 rbt_5_mouth6_TA_tex_txt", +"00363b80 000400 rbt_5_tmem_txt", +"", +"00363f80 000020 rbt_6_pal", +"00363fa0 000100 rbt_6_eye1_TA_tex_txt", +"003640a0 000100 rbt_6_eye2_TA_tex_txt", +"003641a0 000100 rbt_6_eye3_TA_tex_txt", +"003642a0 000100 rbt_6_eye4_TA_tex_txt", +"003643a0 000100 rbt_6_eye5_TA_tex_txt", +"003644a0 000100 rbt_6_eye6_TA_tex_txt", +"003645a0 000100 rbt_6_eye7_TA_tex_txt", +"003646a0 000100 rbt_6_eye8_TA_tex_txt", +"003647a0 000100 rbt_6_mouth1_TA_tex_txt", +"003648a0 000100 rbt_6_mouth2_TA_tex_txt", +"003649a0 000100 rbt_6_mouth3_TA_tex_txt", +"00364aa0 000100 rbt_6_mouth4_TA_tex_txt", +"00364ba0 000100 rbt_6_mouth5_TA_tex_txt", +"00364ca0 000100 rbt_6_mouth6_TA_tex_txt", +"00364da0 000400 rbt_6_tmem_txt", +"", +"003651a0 000020 rbt_7_pal", +"003651c0 000100 rbt_7_eye1_TA_tex_txt", +"003652c0 000100 rbt_7_eye2_TA_tex_txt", +"003653c0 000100 rbt_7_eye3_TA_tex_txt", +"003654c0 000100 rbt_7_eye4_TA_tex_txt", +"003655c0 000100 rbt_7_eye5_TA_tex_txt", +"003656c0 000100 rbt_7_eye6_TA_tex_txt", +"003657c0 000100 rbt_7_eye7_TA_tex_txt", +"003658c0 000100 rbt_7_eye8_TA_tex_txt", +"003659c0 000100 rbt_7_mouth1_TA_tex_txt", +"00365ac0 000100 rbt_7_mouth2_TA_tex_txt", +"00365bc0 000100 rbt_7_mouth3_TA_tex_txt", +"00365cc0 000100 rbt_7_mouth4_TA_tex_txt", +"00365dc0 000100 rbt_7_mouth5_TA_tex_txt", +"00365ec0 000100 rbt_7_mouth6_TA_tex_txt", +"00365fc0 000400 rbt_7_tmem_txt", +"", +"003663c0 000020 rbt_8_pal", +"003663e0 000100 rbt_8_eye1_TA_tex_txt", +"003664e0 000100 rbt_8_eye2_TA_tex_txt", +"003665e0 000100 rbt_8_eye3_TA_tex_txt", +"003666e0 000100 rbt_8_eye4_TA_tex_txt", +"003667e0 000100 rbt_8_eye5_TA_tex_txt", +"003668e0 000100 rbt_8_eye6_TA_tex_txt", +"003669e0 000100 rbt_8_eye7_TA_tex_txt", +"00366ae0 000100 rbt_8_eye8_TA_tex_txt", +"00366be0 000100 rbt_8_mouth1_TA_tex_txt", +"00366ce0 000100 rbt_8_mouth2_TA_tex_txt", +"00366de0 000100 rbt_8_mouth3_TA_tex_txt", +"00366ee0 000100 rbt_8_mouth4_TA_tex_txt", +"00366fe0 000100 rbt_8_mouth5_TA_tex_txt", +"003670e0 000100 rbt_8_mouth6_TA_tex_txt", +"003671e0 000400 rbt_8_tmem_txt", +"", +"003675e0 000020 rbt_9_pal", +"00367600 000100 rbt_9_eye1_TA_tex_txt", +"00367700 000100 rbt_9_eye2_TA_tex_txt", +"00367800 000100 rbt_9_eye3_TA_tex_txt", +"00367900 000100 rbt_9_eye4_TA_tex_txt", +"00367a00 000100 rbt_9_eye5_TA_tex_txt", +"00367b00 000100 rbt_9_eye6_TA_tex_txt", +"00367c00 000100 rbt_9_eye7_TA_tex_txt", +"00367d00 000100 rbt_9_eye8_TA_tex_txt", +"00367e00 000100 rbt_9_mouth1_TA_tex_txt", +"00367f00 000100 rbt_9_mouth2_TA_tex_txt", +"00368000 000100 rbt_9_mouth3_TA_tex_txt", +"00368100 000100 rbt_9_mouth4_TA_tex_txt", +"00368200 000100 rbt_9_mouth5_TA_tex_txt", +"00368300 000100 rbt_9_mouth6_TA_tex_txt", +"00368400 000400 rbt_9_tmem_txt", +"", +"00368800 000020 rbt_10_pal", +"00368820 000100 rbt_10_eye1_TA_tex_txt", +"00368920 000100 rbt_10_eye2_TA_tex_txt", +"00368a20 000100 rbt_10_eye3_TA_tex_txt", +"00368b20 000100 rbt_10_eye4_TA_tex_txt", +"00368c20 000100 rbt_10_eye5_TA_tex_txt", +"00368d20 000100 rbt_10_eye6_TA_tex_txt", +"00368e20 000100 rbt_10_eye7_TA_tex_txt", +"00368f20 000100 rbt_10_eye8_TA_tex_txt", +"00369020 000100 rbt_10_mouth1_TA_tex_txt", +"00369120 000100 rbt_10_mouth2_TA_tex_txt", +"00369220 000100 rbt_10_mouth3_TA_tex_txt", +"00369320 000100 rbt_10_mouth4_TA_tex_txt", +"00369420 000100 rbt_10_mouth5_TA_tex_txt", +"00369520 000100 rbt_10_mouth6_TA_tex_txt", +"00369620 000400 rbt_10_tmem_txt", +"", +"00369a20 0013b0 mob_1_v", +"0036add0 0001b8 head_mob_model", +"0036af88 0000d0 mouth_mob_model", +"0036b058 0000b8 hand_mob_model", +"0036b110 000088 Rarm2_mob_model", +"0036b198 000078 Rarm1_mob_model", +"0036b210 000088 Larm2_mob_model", +"0036b298 000078 Larm1_mob_model", +"0036b310 0000d0 chest_mob_model", +"0036b3e0 000080 base_mob_model", +"0036b460 000138 cKF_je_r_mob_1_tbl", +"0036b598 000008 cKF_bs_r_mob_1", +"", +"0036b5a0 000020 mob_1_pal", +"0036b5c0 000100 mob_1_eye1_TA_tex_txt", +"0036b6c0 000100 mob_1_eye2_TA_tex_txt", +"0036b7c0 000100 mob_1_eye3_TA_tex_txt", +"0036b8c0 000100 mob_1_eye4_TA_tex_txt", +"0036b9c0 000100 mob_1_eye5_TA_tex_txt", +"0036bac0 000100 mob_1_eye6_TA_tex_txt", +"0036bbc0 000100 mob_1_eye7_TA_tex_txt", +"0036bcc0 000100 mob_1_eye8_TA_tex_txt", +"0036bdc0 000100 mob_1_mouth1_TA_tex_txt", +"0036bec0 000100 mob_1_mouth2_TA_tex_txt", +"0036bfc0 000100 mob_1_mouth3_TA_tex_txt", +"0036c0c0 000100 mob_1_mouth4_TA_tex_txt", +"0036c1c0 000100 mob_1_mouth5_TA_tex_txt", +"0036c2c0 000100 mob_1_mouth6_TA_tex_txt", +"0036c3c0 000680 mob_1_tmem_txt", +"", +"0036ce40 001c00 rhn_1_v", +"0036ea40 000300 head_rhn_model", +"0036ed40 0000d0 mouth_rhn_model", +"0036ee10 000090 Rarm2_rhn_model", +"0036eea0 000080 Rarm1_rhn_model", +"0036ef20 000090 Larm2_rhn_model", +"0036efb0 000080 Larm1_rhn_model", +"0036f030 000098 chest_rhn_model", +"0036f0c8 000058 tail1_rhn_model", +"0036f120 000090 tail2_rhn_model", +"0036f1b0 000098 Rfoot2_rhn_model", +"0036f248 0000b0 Rfoot1_rhn_model", +"0036f2f8 000098 Lfoot2_rhn_model", +"0036f390 0000b0 Lfoot1_rhn_model", +"0036f440 000070 base_rhn_model", +"0036f4b0 000138 cKF_je_r_rhn_1_tbl", +"0036f5e8 000008 cKF_bs_r_rhn_1", +"", +"0036f600 000020 rhn_1_pal", +"0036f620 000100 rhn_1_eye1_TA_tex_txt", +"0036f720 000100 rhn_1_eye2_TA_tex_txt", +"0036f820 000100 rhn_1_eye3_TA_tex_txt", +"0036f920 000100 rhn_1_eye4_TA_tex_txt", +"0036fa20 000100 rhn_1_eye5_TA_tex_txt", +"0036fb20 000100 rhn_1_eye6_TA_tex_txt", +"0036fc20 000100 rhn_1_eye7_TA_tex_txt", +"0036fd20 000100 rhn_1_eye8_TA_tex_txt", +"0036fe20 000100 rhn_1_mouth1_TA_tex_txt", +"0036ff20 000100 rhn_1_mouth2_TA_tex_txt", +"00370020 000100 rhn_1_mouth3_TA_tex_txt", +"00370120 000100 rhn_1_mouth4_TA_tex_txt", +"00370220 000100 rhn_1_mouth5_TA_tex_txt", +"00370320 000100 rhn_1_mouth6_TA_tex_txt", +"00370420 000400 rhn_1_tmem_txt", +"", +"00370820 000020 rhn_2_pal", +"00370840 000100 rhn_2_eye1_TA_tex_txt", +"00370940 000100 rhn_2_eye2_TA_tex_txt", +"00370a40 000100 rhn_2_eye3_TA_tex_txt", +"00370b40 000100 rhn_2_eye4_TA_tex_txt", +"00370c40 000100 rhn_2_eye5_TA_tex_txt", +"00370d40 000100 rhn_2_eye6_TA_tex_txt", +"00370e40 000100 rhn_2_eye7_TA_tex_txt", +"00370f40 000100 rhn_2_eye8_TA_tex_txt", +"00371040 000100 rhn_2_mouth1_TA_tex_txt", +"00371140 000100 rhn_2_mouth2_TA_tex_txt", +"00371240 000100 rhn_2_mouth3_TA_tex_txt", +"00371340 000100 rhn_2_mouth4_TA_tex_txt", +"00371440 000100 rhn_2_mouth5_TA_tex_txt", +"00371540 000100 rhn_2_mouth6_TA_tex_txt", +"00371640 000400 rhn_2_tmem_txt", +"", +"00371a40 000020 rhn_3_pal", +"00371a60 000100 rhn_3_eye1_TA_tex_txt", +"00371b60 000100 rhn_3_eye2_TA_tex_txt", +"00371c60 000100 rhn_3_eye3_TA_tex_txt", +"00371d60 000100 rhn_3_eye4_TA_tex_txt", +"00371e60 000100 rhn_3_eye5_TA_tex_txt", +"00371f60 000100 rhn_3_eye6_TA_tex_txt", +"00372060 000100 rhn_3_eye7_TA_tex_txt", +"00372160 000100 rhn_3_eye8_TA_tex_txt", +"00372260 000100 rhn_3_mouth1_TA_tex_txt", +"00372360 000100 rhn_3_mouth2_TA_tex_txt", +"00372460 000100 rhn_3_mouth3_TA_tex_txt", +"00372560 000100 rhn_3_mouth4_TA_tex_txt", +"00372660 000100 rhn_3_mouth5_TA_tex_txt", +"00372760 000100 rhn_3_mouth6_TA_tex_txt", +"00372860 000400 rhn_3_tmem_txt", +"", +"00372c60 000020 rhn_4_pal", +"00372c80 000100 rhn_4_eye1_TA_tex_txt", +"00372d80 000100 rhn_4_eye2_TA_tex_txt", +"00372e80 000100 rhn_4_eye3_TA_tex_txt", +"00372f80 000100 rhn_4_eye4_TA_tex_txt", +"00373080 000100 rhn_4_eye5_TA_tex_txt", +"00373180 000100 rhn_4_eye6_TA_tex_txt", +"00373280 000100 rhn_4_eye7_TA_tex_txt", +"00373380 000100 rhn_4_eye8_TA_tex_txt", +"00373480 000100 rhn_4_mouth1_TA_tex_txt", +"00373580 000100 rhn_4_mouth2_TA_tex_txt", +"00373680 000100 rhn_4_mouth3_TA_tex_txt", +"00373780 000100 rhn_4_mouth4_TA_tex_txt", +"00373880 000100 rhn_4_mouth5_TA_tex_txt", +"00373980 000100 rhn_4_mouth6_TA_tex_txt", +"00373a80 000400 rhn_4_tmem_txt", +"", +"0037bc48 0013c0 snt_1_v", +"0037d008 000250 head_snt_model", +"0037d258 000088 Larm2_snt_model", +"0037d2e0 000078 Larm1_snt_model", +"0037d358 000178 chest_snt_model", +"0037d4d0 000080 Rfoot2_snt_model", +"0037d550 000058 Rfoot1_snt_model", +"0037d5a8 000080 Lfoot2_snt_model", +"0037d628 000058 Lfoot1_snt_model", +"0037d680 000070 base_snt_model", +"0037d6f0 000138 cKF_je_r_snt_1_tbl", +"0037d828 000008 cKF_bs_r_snt_1", +"", +"0037d840 000020 snt_1_pal", +"0037d860 000100 snt_1_eye1_TA_tex_txt", +"0037d960 000100 snt_1_eye2_TA_tex_txt", +"0037da60 000100 snt_1_eye3_TA_tex_txt", +"0037db60 000100 snt_1_eye4_TA_tex_txt", +"0037dc60 000100 snt_1_eye5_TA_tex_txt", +"0037dd60 000100 snt_1_eye6_TA_tex_txt", +"0037de60 000100 snt_1_eye7_TA_tex_txt", +"0037df60 000100 snt_1_eye8_TA_tex_txt", +"0037e060 000100 snt_1_mouth1_TA_tex_txt", +"0037e160 000100 snt_1_mouth2_TA_tex_txt", +"0037e260 000100 snt_1_mouth3_TA_tex_txt", +"0037e360 000100 snt_1_mouth4_TA_tex_txt", +"0037e460 000100 snt_1_mouth5_TA_tex_txt", +"0037e560 000100 snt_1_mouth6_TA_tex_txt", +"0037e660 000680 snt_1_tmem_txt", +"", +"0037ece0 001700 wip_1_v", +"003803e0 000208 head_wip_model", +"003805e8 000088 Rarm2_wip_model", +"00380670 000078 Rarm1_wip_model", +"003806e8 000088 Larm2_wip_model", +"00380770 000078 Larm1_wip_model", +"003807e8 000120 chest_wip_model", +"00380908 000080 Rfoot2_wip_model", +"00380988 000058 Rfoot1_wip_model", +"003809e0 000080 Lfoot2_wip_model", +"00380a60 000058 Lfoot1_wip_model", +"00380ab8 000078 base_wip_model", +"00380b30 000138 cKF_je_r_wip_1_tbl", +"00380c68 000008 cKF_bs_r_wip_1", +"", +"00380c80 000020 wip_1_pal", +"00380ca0 000100 wip_1_eye1_TA_tex_txt", +"00380da0 000100 wip_1_eye2_TA_tex_txt", +"00380ea0 000100 wip_1_eye3_TA_tex_txt", +"00380fa0 000100 wip_1_eye4_TA_tex_txt", +"003810a0 000100 wip_1_eye5_TA_tex_txt", +"003811a0 000100 wip_1_eye6_TA_tex_txt", +"003812a0 000100 wip_1_eye7_TA_tex_txt", +"003813a0 000100 wip_1_eye8_TA_tex_txt", +"003814a0 000100 wip_1_mouth1_TA_tex_txt", +"003815a0 000100 wip_1_mouth2_TA_tex_txt", +"003816a0 000100 wip_1_mouth3_TA_tex_txt", +"003817a0 000100 wip_1_mouth4_TA_tex_txt", +"003818a0 000100 wip_1_mouth5_TA_tex_txt", +"003819a0 000100 wip_1_mouth6_TA_tex_txt", +"00381aa0 0005c0 wip_1_tmem_txt", +"", +"00382060 001460 shp_1_v", +"003834c0 0001b0 head_shp_model", +"00383670 000088 Rarm2_shp_model", +"003836f8 000060 Rarm1_shp_model", +"00383758 000088 Larm2_shp_model", +"003837e0 000060 Larm1_shp_model", +"00383840 0000d8 chest_shp_model", +"00383918 000088 Rfoot2_shp_model", +"003839a0 000060 Rfoot1_shp_model", +"00383a00 000088 Lfoot2_shp_model", +"00383a88 000060 Lfoot1_shp_model", +"00383ae8 000078 base_shp_model", +"00383b60 000138 cKF_je_r_shp_1_tbl", +"00383c98 000008 cKF_bs_r_shp_1", +"", +"00383ca0 000020 shp_1_pal", +"00383cc0 000100 shp_1_eye1_TA_tex_txt", +"00383dc0 000100 shp_1_eye2_TA_tex_txt", +"00383ec0 000100 shp_1_eye3_TA_tex_txt", +"00383fc0 000100 shp_1_eye4_TA_tex_txt", +"003840c0 000100 shp_1_eye5_TA_tex_txt", +"003841c0 000100 shp_1_eye6_TA_tex_txt", +"003842c0 000100 shp_1_eye7_TA_tex_txt", +"003843c0 000100 shp_1_eye8_TA_tex_txt", +"003844c0 000100 shp_1_mouth1_TA_tex_txt", +"003845c0 000100 shp_1_mouth2_TA_tex_txt", +"003846c0 000100 shp_1_mouth3_TA_tex_txt", +"003847c0 000100 shp_1_mouth4_TA_tex_txt", +"003848c0 000100 shp_1_mouth5_TA_tex_txt", +"003849c0 000100 shp_1_mouth6_TA_tex_txt", +"00384ac0 000400 shp_1_tmem_txt", +"", +"00384ec0 000020 shp_2_pal", +"00384ee0 000100 shp_2_eye1_TA_tex_txt", +"00384fe0 000100 shp_2_eye2_TA_tex_txt", +"003850e0 000100 shp_2_eye3_TA_tex_txt", +"003851e0 000100 shp_2_eye4_TA_tex_txt", +"003852e0 000100 shp_2_eye5_TA_tex_txt", +"003853e0 000100 shp_2_eye6_TA_tex_txt", +"003854e0 000100 shp_2_eye7_TA_tex_txt", +"003855e0 000100 shp_2_eye8_TA_tex_txt", +"003856e0 000100 shp_2_mouth1_TA_tex_txt", +"003857e0 000100 shp_2_mouth2_TA_tex_txt", +"003858e0 000100 shp_2_mouth3_TA_tex_txt", +"003859e0 000100 shp_2_mouth4_TA_tex_txt", +"00385ae0 000100 shp_2_mouth5_TA_tex_txt", +"00385be0 000100 shp_2_mouth6_TA_tex_txt", +"00385ce0 000400 shp_2_tmem_txt", +"", +"003860e0 000020 shp_3_pal", +"00386100 000100 shp_3_eye1_TA_tex_txt", +"00386200 000100 shp_3_eye2_TA_tex_txt", +"00386300 000100 shp_3_eye3_TA_tex_txt", +"00386400 000100 shp_3_eye4_TA_tex_txt", +"00386500 000100 shp_3_eye5_TA_tex_txt", +"00386600 000100 shp_3_eye6_TA_tex_txt", +"00386700 000100 shp_3_eye7_TA_tex_txt", +"00386800 000100 shp_3_eye8_TA_tex_txt", +"00386900 000100 shp_3_mouth1_TA_tex_txt", +"00386a00 000100 shp_3_mouth2_TA_tex_txt", +"00386b00 000100 shp_3_mouth3_TA_tex_txt", +"00386c00 000100 shp_3_mouth4_TA_tex_txt", +"00386d00 000100 shp_3_mouth5_TA_tex_txt", +"00386e00 000100 shp_3_mouth6_TA_tex_txt", +"00386f00 000400 shp_3_tmem_txt", +"", +"00387300 000020 shp_4_pal", +"00387320 000100 shp_4_eye1_TA_tex_txt", +"00387420 000100 shp_4_eye2_TA_tex_txt", +"00387520 000100 shp_4_eye3_TA_tex_txt", +"00387620 000100 shp_4_eye4_TA_tex_txt", +"00387720 000100 shp_4_eye5_TA_tex_txt", +"00387820 000100 shp_4_eye6_TA_tex_txt", +"00387920 000100 shp_4_eye7_TA_tex_txt", +"00387a20 000100 shp_4_eye8_TA_tex_txt", +"00387b20 000100 shp_4_mouth1_TA_tex_txt", +"00387c20 000100 shp_4_mouth2_TA_tex_txt", +"00387d20 000100 shp_4_mouth3_TA_tex_txt", +"00387e20 000100 shp_4_mouth4_TA_tex_txt", +"00387f20 000100 shp_4_mouth5_TA_tex_txt", +"00388020 000100 shp_4_mouth6_TA_tex_txt", +"00388120 000400 shp_4_tmem_txt", +"", +"00388520 000020 shp_5_pal", +"00388540 000100 shp_5_eye1_TA_tex_txt", +"00388640 000100 shp_5_eye2_TA_tex_txt", +"00388740 000100 shp_5_eye3_TA_tex_txt", +"00388840 000100 shp_5_eye4_TA_tex_txt", +"00388940 000100 shp_5_eye5_TA_tex_txt", +"00388a40 000100 shp_5_eye6_TA_tex_txt", +"00388b40 000100 shp_5_eye7_TA_tex_txt", +"00388c40 000100 shp_5_eye8_TA_tex_txt", +"00388d40 000100 shp_5_mouth1_TA_tex_txt", +"00388e40 000100 shp_5_mouth2_TA_tex_txt", +"00388f40 000100 shp_5_mouth3_TA_tex_txt", +"00389040 000100 shp_5_mouth4_TA_tex_txt", +"00389140 000100 shp_5_mouth5_TA_tex_txt", +"00389240 000100 shp_5_mouth6_TA_tex_txt", +"00389340 000400 shp_5_tmem_txt", +"", +"00389740 000020 shp_6_pal", +"00389760 000100 shp_6_eye1_TA_tex_txt", +"00389860 000100 shp_6_eye2_TA_tex_txt", +"00389960 000100 shp_6_eye3_TA_tex_txt", +"00389a60 000100 shp_6_eye4_TA_tex_txt", +"00389b60 000100 shp_6_eye5_TA_tex_txt", +"00389c60 000100 shp_6_eye6_TA_tex_txt", +"00389d60 000100 shp_6_eye7_TA_tex_txt", +"00389e60 000100 shp_6_eye8_TA_tex_txt", +"00389f60 000100 shp_6_mouth1_TA_tex_txt", +"0038a060 000100 shp_6_mouth2_TA_tex_txt", +"0038a160 000100 shp_6_mouth3_TA_tex_txt", +"0038a260 000100 shp_6_mouth4_TA_tex_txt", +"0038a360 000100 shp_6_mouth5_TA_tex_txt", +"0038a460 000100 shp_6_mouth6_TA_tex_txt", +"0038a560 000400 shp_6_tmem_txt", +"", +"0038a960 001650 rcn_1_v", +"0038bfb0 000188 head_rcn_model", +"0038c138 000078 mouth_rcn_model", +"0038c1b0 000088 Rarm2_rcn_model", +"0038c238 000078 Rarm1_rcn_model", +"0038c2b0 000088 Larm2_rcn_model", +"0038c338 000078 Larm1_rcn_model", +"0038c3b0 000108 chest_rcn_model", +"0038c4b8 000078 tail1_rcn_model", +"0038c530 0000a0 tail2_rcn_model", +"0038c5d0 000080 Rfoot2_rcn_model", +"0038c650 000058 Rfoot1_rcn_model", +"0038c6a8 000080 Lfoot2_rcn_model", +"0038c728 000058 Lfoot1_rcn_model", +"0038c780 0000c0 base_rcn_model", +"0038c840 000138 cKF_je_r_rcn_1_tbl", +"0038c978 000008 cKF_bs_r_rcn_1", +"", +"0038c980 000020 rcn_1_pal", +"0038c9a0 000100 rcn_1_eye1_TA_tex_txt", +"0038caa0 000100 rcn_1_eye2_TA_tex_txt", +"0038cba0 000100 rcn_1_eye3_TA_tex_txt", +"0038cca0 000100 rcn_1_eye4_TA_tex_txt", +"0038cda0 000100 rcn_1_eye5_TA_tex_txt", +"0038cea0 000100 rcn_1_eye6_TA_tex_txt", +"0038cfa0 000100 rcn_1_eye7_TA_tex_txt", +"0038d0a0 000100 rcn_1_eye8_TA_tex_txt", +"0038d1a0 000640 rcn_1_tmem_txt", +"", +"003b2cb0 0018c0 kab_1_v", +"003b4570 0001e0 head_kab_model", +"003b4750 000088 mouth_kab_model", +"003b47d8 000088 Rarm2_kab_model", +"003b4860 000078 Rarm1_kab_model", +"003b48d8 000088 Larm2_kab_model", +"003b4960 000078 Larm1_kab_model", +"003b49d8 0000c8 chest_kab_model", +"003b4aa0 0000a8 Rfoot2_kab_model", +"003b4b48 000080 Rfoot1_kab_model", +"003b4bc8 000098 Lfoot2_kab_model", +"003b4c60 000080 Lfoot1_kab_model", +"003b4ce0 000078 base_kab_model", +"003b4d58 000138 cKF_je_r_kab_1_tbl", +"003b4e90 000008 cKF_bs_r_kab_1", +"", +"003b4ea0 000020 kab_1_pal", +"003b4ec0 000100 kab_1_eye1_TA_tex_txt", +"003b4fc0 000100 kab_1_eye2_TA_tex_txt", +"003b50c0 000100 kab_1_eye3_TA_tex_txt", +"003b51c0 000100 kab_1_eye4_TA_tex_txt", +"003b52c0 000100 kab_1_eye5_TA_tex_txt", +"003b53c0 000100 kab_1_eye6_TA_tex_txt", +"003b54c0 000100 kab_1_eye7_TA_tex_txt", +"003b55c0 000100 kab_1_eye8_TA_tex_txt", +"003b56c0 000400 kab_1_tmem_txt", +"", +"004ebac0 001450 ttl_1_v", +"004ecf10 000228 head_ttl_model", +"004ed138 0000a8 mouth_ttl_model", +"004ed1e0 000060 hand_ttl_model", +"004ed240 000088 Rarm2_ttl_model", +"004ed2c8 000058 Rarm1_ttl_model", +"004ed320 000088 Larm2_ttl_model", +"004ed3a8 000058 Larm1_ttl_model", +"004ed400 000118 chest_ttl_model", +"004ed518 000058 tail1_ttl_model", +"004ed570 000088 Rfoot2_ttl_model", +"004ed5f8 000058 Rfoot1_ttl_model", +"004ed650 000088 Lfoot2_ttl_model", +"004ed6d8 000058 Lfoot1_ttl_model", +"004ed730 000068 base_ttl_model", +"004ed798 000138 cKF_je_r_ttl_1_tbl", +"004ed8d0 000008 cKF_bs_r_ttl_1", +"", +"004ed8e0 000020 ttl_1_pal", +"004ed900 000100 ttl_1_eye1_TA_tex_txt", +"004eda00 000100 ttl_1_eye2_TA_tex_txt", +"004edb00 000100 ttl_1_eye3_TA_tex_txt", +"004edc00 000100 ttl_1_eye4_TA_tex_txt", +"004edd00 000100 ttl_1_eye5_TA_tex_txt", +"004ede00 000100 ttl_1_eye6_TA_tex_txt", +"004edf00 000100 ttl_1_eye7_TA_tex_txt", +"004ee000 000100 ttl_1_eye8_TA_tex_txt", +"004ee100 000740 ttl_1_tmem_txt", +"", +"004ee840 0016f0 squ_1_v", +"004eff30 000198 head_squ_model", +"004f00c8 000088 Rarm2_squ_model", +"004f0150 000078 Rarm1_squ_model", +"004f01c8 000088 Larm2_squ_model", +"004f0250 000078 Larm1_squ_model", +"004f02c8 0000a8 chest_squ_model", +"004f0370 000070 tail1_squ_model", +"004f03e0 0000d0 tail2_squ_model", +"004f04b0 000080 Rfoot2_squ_model", +"004f0530 0000c0 Rfoot1_squ_model", +"004f05f0 000080 Lfoot2_squ_model", +"004f0670 0000c0 Lfoot1_squ_model", +"004f0730 000070 base_squ_model", +"004f07a0 000138 cKF_je_r_squ_1_tbl", +"004f08d8 000008 cKF_bs_r_squ_1", +"", +"004f08e0 000020 squ_1_pal", +"004f0900 000100 squ_1_eye1_TA_tex_txt", +"004f0a00 000100 squ_1_eye2_TA_tex_txt", +"004f0b00 000100 squ_1_eye3_TA_tex_txt", +"004f0c00 000100 squ_1_eye4_TA_tex_txt", +"004f0d00 000100 squ_1_eye5_TA_tex_txt", +"004f0e00 000100 squ_1_eye6_TA_tex_txt", +"004f0f00 000100 squ_1_eye7_TA_tex_txt", +"004f1000 000100 squ_1_eye8_TA_tex_txt", +"004f1100 000100 squ_1_mouth1_TA_tex_txt", +"004f1200 000100 squ_1_mouth2_TA_tex_txt", +"004f1300 000100 squ_1_mouth3_TA_tex_txt", +"004f1400 000100 squ_1_mouth4_TA_tex_txt", +"004f1500 000100 squ_1_mouth5_TA_tex_txt", +"004f1600 000100 squ_1_mouth6_TA_tex_txt", +"004f1700 000400 squ_1_tmem_txt", +"", +"004f1b00 000020 squ_2_pal", +"004f1b20 000100 squ_2_eye1_TA_tex_txt", +"004f1c20 000100 squ_2_eye2_TA_tex_txt", +"004f1d20 000100 squ_2_eye3_TA_tex_txt", +"004f1e20 000100 squ_2_eye4_TA_tex_txt", +"004f1f20 000100 squ_2_eye5_TA_tex_txt", +"004f2020 000100 squ_2_eye6_TA_tex_txt", +"004f2120 000100 squ_2_eye7_TA_tex_txt", +"004f2220 000100 squ_2_eye8_TA_tex_txt", +"004f2320 000100 squ_2_mouth1_TA_tex_txt", +"004f2420 000100 squ_2_mouth2_TA_tex_txt", +"004f2520 000100 squ_2_mouth3_TA_tex_txt", +"004f2620 000100 squ_2_mouth4_TA_tex_txt", +"004f2720 000100 squ_2_mouth5_TA_tex_txt", +"004f2820 000100 squ_2_mouth6_TA_tex_txt", +"004f2920 000400 squ_2_tmem_txt", +"", +"004f2d20 000020 squ_11_pal", +"004f2d40 000100 squ_11_eye1_TA_tex_txt", +"004f2e40 000100 squ_11_eye2_TA_tex_txt", +"004f2f40 000100 squ_11_eye3_TA_tex_txt", +"004f3040 000100 squ_11_eye4_TA_tex_txt", +"004f3140 000100 squ_11_eye5_TA_tex_txt", +"004f3240 000100 squ_11_eye6_TA_tex_txt", +"004f3340 000100 squ_11_eye7_TA_tex_txt", +"004f3440 000100 squ_11_eye8_TA_tex_txt", +"004f3540 000100 squ_11_mouth1_TA_tex_txt", +"004f3640 000100 squ_11_mouth2_TA_tex_txt", +"004f3740 000100 squ_11_mouth3_TA_tex_txt", +"004f3840 000100 squ_11_mouth4_TA_tex_txt", +"004f3940 000100 squ_11_mouth5_TA_tex_txt", +"004f3a40 000100 squ_11_mouth6_TA_tex_txt", +"004f3b40 000400 squ_11_tmem_txt", +"", +"004f3f40 000020 squ_3_pal", +"004f3f60 000100 squ_3_eye1_TA_tex_txt", +"004f4060 000100 squ_3_eye2_TA_tex_txt", +"004f4160 000100 squ_3_eye3_TA_tex_txt", +"004f4260 000100 squ_3_eye4_TA_tex_txt", +"004f4360 000100 squ_3_eye5_TA_tex_txt", +"004f4460 000100 squ_3_eye6_TA_tex_txt", +"004f4560 000100 squ_3_eye7_TA_tex_txt", +"004f4660 000100 squ_3_eye8_TA_tex_txt", +"004f4760 000100 squ_3_mouth1_TA_tex_txt", +"004f4860 000100 squ_3_mouth2_TA_tex_txt", +"004f4960 000100 squ_3_mouth3_TA_tex_txt", +"004f4a60 000100 squ_3_mouth4_TA_tex_txt", +"004f4b60 000100 squ_3_mouth5_TA_tex_txt", +"004f4c60 000100 squ_3_mouth6_TA_tex_txt", +"004f4d60 000400 squ_3_tmem_txt", +"", +"004f5160 000020 squ_4_pal", +"004f5180 000100 squ_4_eye1_TA_tex_txt", +"004f5280 000100 squ_4_eye2_TA_tex_txt", +"004f5380 000100 squ_4_eye3_TA_tex_txt", +"004f5480 000100 squ_4_eye4_TA_tex_txt", +"004f5580 000100 squ_4_eye5_TA_tex_txt", +"004f5680 000100 squ_4_eye6_TA_tex_txt", +"004f5780 000100 squ_4_eye7_TA_tex_txt", +"004f5880 000100 squ_4_eye8_TA_tex_txt", +"004f5980 000100 squ_4_mouth1_TA_tex_txt", +"004f5a80 000100 squ_4_mouth2_TA_tex_txt", +"004f5b80 000100 squ_4_mouth3_TA_tex_txt", +"004f5c80 000100 squ_4_mouth4_TA_tex_txt", +"004f5d80 000100 squ_4_mouth5_TA_tex_txt", +"004f5e80 000100 squ_4_mouth6_TA_tex_txt", +"004f5f80 000400 squ_4_tmem_txt", +"", +"004f6380 000020 squ_5_pal", +"004f63a0 000100 squ_5_eye1_TA_tex_txt", +"004f64a0 000100 squ_5_eye2_TA_tex_txt", +"004f65a0 000100 squ_5_eye3_TA_tex_txt", +"004f66a0 000100 squ_5_eye4_TA_tex_txt", +"004f67a0 000100 squ_5_eye5_TA_tex_txt", +"004f68a0 000100 squ_5_eye6_TA_tex_txt", +"004f69a0 000100 squ_5_eye7_TA_tex_txt", +"004f6aa0 000100 squ_5_eye8_TA_tex_txt", +"004f6ba0 000100 squ_5_mouth1_TA_tex_txt", +"004f6ca0 000100 squ_5_mouth2_TA_tex_txt", +"004f6da0 000100 squ_5_mouth3_TA_tex_txt", +"004f6ea0 000100 squ_5_mouth4_TA_tex_txt", +"004f6fa0 000100 squ_5_mouth5_TA_tex_txt", +"004f70a0 000100 squ_5_mouth6_TA_tex_txt", +"004f71a0 000400 squ_5_tmem_txt", +"", +"004f75a0 000020 squ_6_pal", +"004f75c0 000100 squ_6_eye1_TA_tex_txt", +"004f76c0 000100 squ_6_eye2_TA_tex_txt", +"004f77c0 000100 squ_6_eye3_TA_tex_txt", +"004f78c0 000100 squ_6_eye4_TA_tex_txt", +"004f79c0 000100 squ_6_eye5_TA_tex_txt", +"004f7ac0 000100 squ_6_eye6_TA_tex_txt", +"004f7bc0 000100 squ_6_eye7_TA_tex_txt", +"004f7cc0 000100 squ_6_eye8_TA_tex_txt", +"004f7dc0 000100 squ_6_mouth1_TA_tex_txt", +"004f7ec0 000100 squ_6_mouth2_TA_tex_txt", +"004f7fc0 000100 squ_6_mouth3_TA_tex_txt", +"004f80c0 000100 squ_6_mouth4_TA_tex_txt", +"004f81c0 000100 squ_6_mouth5_TA_tex_txt", +"004f82c0 000100 squ_6_mouth6_TA_tex_txt", +"004f83c0 000400 squ_6_tmem_txt", +"", +"004f87c0 000020 squ_7_pal", +"004f87e0 000100 squ_7_eye1_TA_tex_txt", +"004f88e0 000100 squ_7_eye2_TA_tex_txt", +"004f89e0 000100 squ_7_eye3_TA_tex_txt", +"004f8ae0 000100 squ_7_eye4_TA_tex_txt", +"004f8be0 000100 squ_7_eye5_TA_tex_txt", +"004f8ce0 000100 squ_7_eye6_TA_tex_txt", +"004f8de0 000100 squ_7_eye7_TA_tex_txt", +"004f8ee0 000100 squ_7_eye8_TA_tex_txt", +"004f8fe0 000100 squ_7_mouth1_TA_tex_txt", +"004f90e0 000100 squ_7_mouth2_TA_tex_txt", +"004f91e0 000100 squ_7_mouth3_TA_tex_txt", +"004f92e0 000100 squ_7_mouth4_TA_tex_txt", +"004f93e0 000100 squ_7_mouth5_TA_tex_txt", +"004f94e0 000100 squ_7_mouth6_TA_tex_txt", +"004f95e0 000400 squ_7_tmem_txt", +"", +"004f99e0 000020 squ_8_pal", +"004f9a00 000100 squ_8_eye1_TA_tex_txt", +"004f9b00 000100 squ_8_eye2_TA_tex_txt", +"004f9c00 000100 squ_8_eye3_TA_tex_txt", +"004f9d00 000100 squ_8_eye4_TA_tex_txt", +"004f9e00 000100 squ_8_eye5_TA_tex_txt", +"004f9f00 000100 squ_8_eye6_TA_tex_txt", +"004fa000 000100 squ_8_eye7_TA_tex_txt", +"004fa100 000100 squ_8_eye8_TA_tex_txt", +"004fa200 000100 squ_8_mouth1_TA_tex_txt", +"004fa300 000100 squ_8_mouth2_TA_tex_txt", +"004fa400 000100 squ_8_mouth3_TA_tex_txt", +"004fa500 000100 squ_8_mouth4_TA_tex_txt", +"004fa600 000100 squ_8_mouth5_TA_tex_txt", +"004fa700 000100 squ_8_mouth6_TA_tex_txt", +"004fa800 000400 squ_8_tmem_txt", +"", +"004fac00 000020 squ_9_pal", +"004fac20 000100 squ_9_eye1_TA_tex_txt", +"004fad20 000100 squ_9_eye2_TA_tex_txt", +"004fae20 000100 squ_9_eye3_TA_tex_txt", +"004faf20 000100 squ_9_eye4_TA_tex_txt", +"004fb020 000100 squ_9_eye5_TA_tex_txt", +"004fb120 000100 squ_9_eye6_TA_tex_txt", +"004fb220 000100 squ_9_eye7_TA_tex_txt", +"004fb320 000100 squ_9_eye8_TA_tex_txt", +"004fb420 000100 squ_9_mouth1_TA_tex_txt", +"004fb520 000100 squ_9_mouth2_TA_tex_txt", +"004fb620 000100 squ_9_mouth3_TA_tex_txt", +"004fb720 000100 squ_9_mouth4_TA_tex_txt", +"004fb820 000100 squ_9_mouth5_TA_tex_txt", +"004fb920 000100 squ_9_mouth6_TA_tex_txt", +"004fba20 000400 squ_9_tmem_txt", +"", +"004fbe20 000020 squ_10_pal", +"004fbe40 000100 squ_10_eye1_TA_tex_txt", +"004fbf40 000100 squ_10_eye2_TA_tex_txt", +"004fc040 000100 squ_10_eye3_TA_tex_txt", +"004fc140 000100 squ_10_eye4_TA_tex_txt", +"004fc240 000100 squ_10_eye5_TA_tex_txt", +"004fc340 000100 squ_10_eye6_TA_tex_txt", +"004fc440 000100 squ_10_eye7_TA_tex_txt", +"004fc540 000100 squ_10_eye8_TA_tex_txt", +"004fc640 000100 squ_10_mouth1_TA_tex_txt", +"004fc740 000100 squ_10_mouth2_TA_tex_txt", +"004fc840 000100 squ_10_mouth3_TA_tex_txt", +"004fc940 000100 squ_10_mouth4_TA_tex_txt", +"004fca40 000100 squ_10_mouth5_TA_tex_txt", +"004fcb40 000100 squ_10_mouth6_TA_tex_txt", +"004fcc40 000400 squ_10_tmem_txt", +"", +"004fd040 001850 mnk_1_v", +"004fe890 0001a8 head_mnk_model", +"004fea38 000098 Rarm2_mnk_model", +"004fead0 000078 Rarm1_mnk_model", +"004feb48 000098 Larm2_mnk_model", +"004febe0 000078 Larm1_mnk_model", +"004fec58 0000c0 chest_mnk_model", +"004fed18 000078 tail1_mnk_model", +"004fed90 0000c0 tail2_mnk_model", +"004fee50 000090 Rfoot3_mnk_model", +"004feee0 000080 Rfoot2_mnk_model", +"004fef60 000058 Rfoot1_mnk_model", +"004fefb8 000090 Lfoot3_mnk_model", +"004ff048 000080 Lfoot2_mnk_model", +"004ff0c8 000058 Lfoot1_mnk_model", +"004ff120 000098 base_mnk_model", +"004ff1b8 000138 cKF_je_r_mnk_1_tbl", +"004ff2f0 000008 cKF_bs_r_mnk_1", +"", +"004ff300 000020 mnk_1_pal", +"004ff320 000100 mnk_1_eye1_TA_tex_txt", +"004ff420 000100 mnk_1_eye2_TA_tex_txt", +"004ff520 000100 mnk_1_eye3_TA_tex_txt", +"004ff620 000100 mnk_1_eye4_TA_tex_txt", +"004ff720 000100 mnk_1_eye5_TA_tex_txt", +"004ff820 000100 mnk_1_eye6_TA_tex_txt", +"004ff920 000100 mnk_1_eye7_TA_tex_txt", +"004ffa20 000100 mnk_1_eye8_TA_tex_txt", +"004ffb20 000100 mnk_1_mouth1_TA_tex_txt", +"004ffc20 000100 mnk_1_mouth2_TA_tex_txt", +"004ffd20 000100 mnk_1_mouth3_TA_tex_txt", +"004ffe20 000100 mnk_1_mouth4_TA_tex_txt", +"004fff20 000100 mnk_1_mouth5_TA_tex_txt", +"00500020 000100 mnk_1_mouth6_TA_tex_txt", +"00500120 000600 mnk_1_tmem_txt", +"", +"005bc5c0 001700 rcs_1_v", +"005bdcc0 000188 head_rcs_model", +"005bde48 000078 mouth_rcs_model", +"005bdec0 000088 Rarm2_rcs_model", +"005bdf48 000078 Rarm1_rcs_model", +"005bdfc0 000088 Larm2_rcs_model", +"005be048 000078 Larm1_rcs_model", +"005be0c0 000108 chest_rcs_model", +"005be1c8 000078 tail1_rcs_model", +"005be240 0000a0 tail2_rcs_model", +"005be2e0 000080 Rfoot2_rcs_model", +"005be360 000058 Rfoot1_rcs_model", +"005be3b8 000080 Lfoot2_rcs_model", +"005be438 000058 Lfoot1_rcs_model", +"005be490 0000d8 base_rcs_model", +"005be568 000138 cKF_je_r_rcs_1_tbl", +"005be6a0 000008 cKF_bs_r_rcs_1", +"", +"005be6c0 000020 rcs_1_pal", +"005be6e0 000100 rcs_1_eye1_TA_tex_txt", +"005be7e0 000100 rcs_1_eye2_TA_tex_txt", +"005be8e0 000100 rcs_1_eye3_TA_tex_txt", +"005be9e0 000100 rcs_1_eye4_TA_tex_txt", +"005beae0 000100 rcs_1_eye5_TA_tex_txt", +"005bebe0 000100 rcs_1_eye6_TA_tex_txt", +"005bece0 000100 rcs_1_eye7_TA_tex_txt", +"005bede0 000100 rcs_1_eye8_TA_tex_txt", +"005beee0 000580 rcs_1_tmem_txt", +"", +"005df4f8 001ac0 tig_1_v", +"005e0fb8 0001d8 head_tig_model", +"005e1190 000088 mouth_tig_model", +"005e1218 000088 Rarm2_tig_model", +"005e12a0 000078 Rarm1_tig_model", +"005e1318 000088 Larm2_tig_model", +"005e13a0 000078 Larm1_tig_model", +"005e1418 0000a0 chest_tig_model", +"005e14b8 000058 tail1_tig_model", +"005e1510 000090 tail2_tig_model", +"005e15a0 000088 Rfoot2_tig_model", +"005e1628 000080 Rfoot1_tig_model", +"005e16a8 000088 Lfoot2_tig_model", +"005e1730 000080 Lfoot1_tig_model", +"005e17b0 000098 base_tig_model", +"005e1848 000138 cKF_je_r_tig_1_tbl", +"005e1980 000008 cKF_bs_r_tig_1", +"", +"005e19a0 000020 tig_1_pal", +"005e19c0 000100 tig_1_eye1_TA_tex_txt", +"005e1ac0 000100 tig_1_eye2_TA_tex_txt", +"005e1bc0 000100 tig_1_eye3_TA_tex_txt", +"005e1cc0 000100 tig_1_eye4_TA_tex_txt", +"005e1dc0 000100 tig_1_eye5_TA_tex_txt", +"005e1ec0 000100 tig_1_eye6_TA_tex_txt", +"005e1fc0 000100 tig_1_eye7_TA_tex_txt", +"005e20c0 000100 tig_1_eye8_TA_tex_txt", +"005e21c0 000580 tig_1_tmem_txt", +"", +"005e2740 000020 tig_2_pal", +"005e2760 000100 tig_2_eye1_TA_tex_txt", +"005e2860 000100 tig_2_eye2_TA_tex_txt", +"005e2960 000100 tig_2_eye3_TA_tex_txt", +"005e2a60 000100 tig_2_eye4_TA_tex_txt", +"005e2b60 000100 tig_2_eye5_TA_tex_txt", +"005e2c60 000100 tig_2_eye6_TA_tex_txt", +"005e2d60 000100 tig_2_eye7_TA_tex_txt", +"005e2e60 000100 tig_2_eye8_TA_tex_txt", +"005e2f60 000580 tig_2_tmem_txt", +"", +"005e34e0 000020 tig_3_pal", +"005e3500 000100 tig_3_eye1_TA_tex_txt", +"005e3600 000100 tig_3_eye2_TA_tex_txt", +"005e3700 000100 tig_3_eye3_TA_tex_txt", +"005e3800 000100 tig_3_eye4_TA_tex_txt", +"005e3900 000100 tig_3_eye5_TA_tex_txt", +"005e3a00 000100 tig_3_eye6_TA_tex_txt", +"005e3b00 000100 tig_3_eye7_TA_tex_txt", +"005e3c00 000100 tig_3_eye8_TA_tex_txt", +"005e3d00 000580 tig_3_tmem_txt", +"", +"005e4280 000020 tig_4_pal", +"005e42a0 000100 tig_4_eye1_TA_tex_txt", +"005e43a0 000100 tig_4_eye2_TA_tex_txt", +"005e44a0 000100 tig_4_eye3_TA_tex_txt", +"005e45a0 000100 tig_4_eye4_TA_tex_txt", +"005e46a0 000100 tig_4_eye5_TA_tex_txt", +"005e47a0 000100 tig_4_eye6_TA_tex_txt", +"005e48a0 000100 tig_4_eye7_TA_tex_txt", +"005e49a0 000100 tig_4_eye8_TA_tex_txt", +"005e4aa0 000580 tig_4_tmem_txt", +"", +"005f8508 001c50 end_1_v", +"005fa158 000198 head_end_model", +"005fa2f0 000090 Rarm2_end_model", +"005fa380 000078 Rarm1_end_model", +"005fa3f8 000090 Larm2_end_model", +"005fa488 000078 Larm1_end_model", +"005fa500 000088 chest_end_model", +"005fa588 000058 tail1_end_model", +"005fa5e0 000080 Rfoot3_end_model", +"005fa660 000078 Rfoot2_end_model", +"005fa6d8 000090 Rfoot1_end_model", +"005fa768 000098 Lfoot3_end_model", +"005fa800 000080 Lfoot2_end_model", +"005fa880 000080 Lfoot1_end_model", +"005fa900 000168 base_end_model", +"005faa68 000138 cKF_je_r_end_1_tbl", +"005faba0 000008 cKF_bs_r_end_1", +"", +"005fabc0 000020 end_1_pal", +"005fabe0 000100 end_1_eye1_TA_tex_txt", +"005face0 000100 end_1_eye2_TA_tex_txt", +"005fade0 000100 end_1_eye3_TA_tex_txt", +"005faee0 000100 end_1_eye4_TA_tex_txt", +"005fafe0 000100 end_1_eye5_TA_tex_txt", +"005fb0e0 000100 end_1_eye6_TA_tex_txt", +"005fb1e0 000100 end_1_eye7_TA_tex_txt", +"005fb2e0 000100 end_1_eye8_TA_tex_txt", +"005fb3e0 000100 end_1_mouth1_TA_tex_txt", +"005fb4e0 000100 end_1_mouth2_TA_tex_txt", +"005fb5e0 000100 end_1_mouth3_TA_tex_txt", +"005fb6e0 000100 end_1_mouth4_TA_tex_txt", +"005fb7e0 000100 end_1_mouth5_TA_tex_txt", +"005fb8e0 000100 end_1_mouth6_TA_tex_txt", +"005fb9e0 0004c0 end_1_tmem_txt", +"", +"005fe210 001d50 tuk_1_v", +"005fff60 0002e8 head_tuk_model", +"00600248 000078 mouth_tuk_model", +"006002c0 000080 Rarm2_tuk_model", +"00600340 000078 Rarm1_tuk_model", +"006003b8 000080 Larm2_tuk_model", +"00600438 000078 Larm1_tuk_model", +"006004b0 000138 chest_tuk_model", +"006005e8 0000f8 tail_tuk_model", +"006006e0 0000a0 Rfoot3_tuk_model", +"00600780 000080 Rfoot2_tuk_model", +"00600800 000058 Rfoot1_tuk_model", +"00600858 0000a0 Lfoot3_tuk_model", +"006008f8 000080 Lfoot2_tuk_model", +"00600978 000058 Lfoot1_tuk_model", +"006009d0 000070 base_tuk_model", +"00600a40 000138 cKF_je_r_tuk_1_tbl", +"00600b78 000008 cKF_bs_r_tuk_1", +"", +"00600b80 000020 tuk_1_pal", +"00600ba0 000100 tuk_1_eye1_TA_tex_txt", +"00600ca0 000100 tuk_1_eye2_TA_tex_txt", +"00600da0 000100 tuk_1_eye3_TA_tex_txt", +"00600ea0 000100 tuk_1_eye4_TA_tex_txt", +"00600fa0 000100 tuk_1_eye5_TA_tex_txt", +"006010a0 000100 tuk_1_eye6_TA_tex_txt", +"006011a0 000100 tuk_1_eye7_TA_tex_txt", +"006012a0 000100 tuk_1_eye8_TA_tex_txt", +"006013a0 000680 tuk_1_tmem_txt", +"", +"00602088 001760 wol_1_v", +"006037e8 000140 head_wol_model", +"00603928 000088 mouth_wol_model", +"006039b0 000088 Rarm2_wol_model", +"00603a38 000078 Rarm1_wol_model", +"00603ab0 000088 Larm2_wol_model", +"00603b38 000078 Larm1_wol_model", +"00603bb0 0000a0 chest_wol_model", +"00603c50 000060 tail1_wol_model", +"00603cb0 0000b8 tail2_wol_model", +"00603d68 000080 Rfoot2_wol_model", +"00603de8 000080 Rfoot1_wol_model", +"00603e68 000080 Lfoot2_wol_model", +"00603ee8 000080 Lfoot1_wol_model", +"00603f68 0000a8 base_wol_model", +"00604010 000138 cKF_je_r_wol_1_tbl", +"00604148 000008 cKF_bs_r_wol_1", +"", +"00604160 000020 wol_1_pal", +"00604180 000100 wol_1_eye1_TA_tex_txt", +"00604280 000100 wol_1_eye2_TA_tex_txt", +"00604380 000100 wol_1_eye3_TA_tex_txt", +"00604480 000100 wol_1_eye4_TA_tex_txt", +"00604580 000100 wol_1_eye5_TA_tex_txt", +"00604680 000100 wol_1_eye6_TA_tex_txt", +"00604780 000100 wol_1_eye7_TA_tex_txt", +"00604880 000100 wol_1_eye8_TA_tex_txt", +"00604980 000400 wol_1_tmem_txt", +"", +"00604d80 000020 wol_2_pal", +"00604da0 000100 wol_2_eye1_TA_tex_txt", +"00604ea0 000100 wol_2_eye2_TA_tex_txt", +"00604fa0 000100 wol_2_eye3_TA_tex_txt", +"006050a0 000100 wol_2_eye4_TA_tex_txt", +"006051a0 000100 wol_2_eye5_TA_tex_txt", +"006052a0 000100 wol_2_eye6_TA_tex_txt", +"006053a0 000100 wol_2_eye7_TA_tex_txt", +"006054a0 000100 wol_2_eye8_TA_tex_txt", +"006055a0 000400 wol_2_tmem_txt", +"", +"006059a0 000020 wol_3_pal", +"006059c0 000100 wol_3_eye1_TA_tex_txt", +"00605ac0 000100 wol_3_eye2_TA_tex_txt", +"00605bc0 000100 wol_3_eye3_TA_tex_txt", +"00605cc0 000100 wol_3_eye4_TA_tex_txt", +"00605dc0 000100 wol_3_eye5_TA_tex_txt", +"00605ec0 000100 wol_3_eye6_TA_tex_txt", +"00605fc0 000100 wol_3_eye7_TA_tex_txt", +"006060c0 000100 wol_3_eye8_TA_tex_txt", +"006061c0 000400 wol_3_tmem_txt", +"", +"006065c0 000020 wol_4_pal", +"006065e0 000100 wol_4_eye1_TA_tex_txt", +"006066e0 000100 wol_4_eye2_TA_tex_txt", +"006067e0 000100 wol_4_eye3_TA_tex_txt", +"006068e0 000100 wol_4_eye4_TA_tex_txt", +"006069e0 000100 wol_4_eye5_TA_tex_txt", +"00606ae0 000100 wol_4_eye6_TA_tex_txt", +"00606be0 000100 wol_4_eye7_TA_tex_txt", +"00606ce0 000100 wol_4_eye8_TA_tex_txt", +"00606de0 000400 wol_4_tmem_txt", +"", +"006071e0 000020 wol_5_pal", +"00607200 000100 wol_5_eye1_TA_tex_txt", +"00607300 000100 wol_5_eye2_TA_tex_txt", +"00607400 000100 wol_5_eye3_TA_tex_txt", +"00607500 000100 wol_5_eye4_TA_tex_txt", +"00607600 000100 wol_5_eye5_TA_tex_txt", +"00607700 000100 wol_5_eye6_TA_tex_txt", +"00607800 000100 wol_5_eye7_TA_tex_txt", +"00607900 000100 wol_5_eye8_TA_tex_txt", +"00607a00 000400 wol_5_tmem_txt", +"", +"00607e00 000020 wol_6_pal", +"00607e20 000100 wol_6_eye1_TA_tex_txt", +"00607f20 000100 wol_6_eye2_TA_tex_txt", +"00608020 000100 wol_6_eye3_TA_tex_txt", +"00608120 000100 wol_6_eye4_TA_tex_txt", +"00608220 000100 wol_6_eye5_TA_tex_txt", +"00608320 000100 wol_6_eye6_TA_tex_txt", +"00608420 000100 wol_6_eye7_TA_tex_txt", +"00608520 000100 wol_6_eye8_TA_tex_txt", +"00608620 000400 wol_6_tmem_txt", +] + +# Generate YAML output +yaml_output = text_to_yaml(test_lines) +print(yaml_output) From 23ba13017d1bc513e8f1c0081011fb3f4c9fa7b1 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Sat, 27 Jul 2024 21:46:17 -0400 Subject: [PATCH 058/234] Remove unnecessary python file --- tools/tmp.py | 5371 -------------------------------------------------- 1 file changed, 5371 deletions(-) delete mode 100644 tools/tmp.py diff --git a/tools/tmp.py b/tools/tmp.py deleted file mode 100644 index eebd6b13..00000000 --- a/tools/tmp.py +++ /dev/null @@ -1,5371 +0,0 @@ -import sys -from ruamel.yaml import YAML -from ruamel.yaml.comments import CommentedSeq -from ruamel.yaml import scalarint -import re - -data_int = int("0x8064D500", 16) - -# def text_to_yaml(test_lines): -# yaml_dict = {} - -# for line in test_lines: -# parts = line.strip().split() -# if len(parts) != 3: -# continue - -# offset = parts[0] -# size = parts[1] -# name = parts[2] - -# offset_int = int(offset, 16) -# size_int = int(size, 16) -# addrs = CommentedSeq() -# addrs.fa.set_flow_style() -# addrs.append(scalarint.HexCapsInt(data_int + offset_int)) -# addrs.append(scalarint.HexCapsInt(data_int + offset_int + size_int)) - -# if name.endswith(("_tex", "_txt", "_pal")): -# key = f"npc/tex/{name}" -# elif name.endswith("_v"): -# key = f"npc/mdl/{name}" -# else: -# continue - -# yaml_dict[key] = {"addrs": addrs} - -# if name.endswith("_pal"): -# yaml_dict[key]["type"] = "pal16" -# elif name.endswith("_v"): -# yaml_dict[key]["type"] = "vtx" - -# yaml = YAML() -# yaml.default_flow_style = False -# output = yaml.dump(yaml_dict, sys.stdout) -# return output - -def text_to_yaml(test_lines): - yaml_dict = {} - current_tu = None - current_tu_path = None - current_tu_beg = 0 - current_tu_end = 0 - - for line in test_lines: - parts = line.strip().split() - if len(parts) != 3: - if current_tu != None: - addrs = CommentedSeq() - addrs.fa.set_flow_style() - addrs.append(scalarint.HexCapsInt(current_tu_beg)) - addrs.append(scalarint.HexCapsInt(current_tu_end)) - yaml_dict[current_tu_path] = {"addrs": addrs} - - current_tu = None - current_tu_beg = 0 - current_tu_end = 0 - continue - - offset = parts[0] - size = parts[1] - name = parts[2] - - offset_int = int(offset, 16) - size_int = int(size, 16) - - if current_tu == None: - # print(name, re.search("^(\w+_\d+)", name)) - current_tu = re.search("^(\w+_\d+)", name).group() - current_tu_beg = data_int + offset_int - if name.endswith(("_tex", "_txt", "_pal")): - current_tu_path = f"data/npc/tex/{name}.c" - elif name.endswith("_v"): - current_tu_path = f"data/npc/mdl/{name}.c" - - current_tu_end = data_int + offset_int + size_int - - if current_tu != None: - addrs = CommentedSeq() - addrs.fa.set_flow_style() - addrs.append(scalarint.HexCapsInt(current_tu_beg)) - addrs.append(scalarint.HexCapsInt(current_tu_end)) - yaml_dict[current_tu_path] = {"addrs": addrs} - - yaml = YAML() - yaml.default_flow_style = False - output = yaml.dump(yaml_dict, sys.stdout) - return output - -# Test lines -test_lines = [ -"00092ea0 001a50 bev_1_v", -"000948f0 000260 head_bev_model", -"00094b50 000088 Rarm2_bev_model", -"00094bd8 000078 Rarm1_bev_model", -"00094c50 000088 Larm2_bev_model", -"00094cd8 000078 Larm1_bev_model", -"00094d50 000110 chest_bev_model", -"00094e60 000078 tail1_bev_model", -"00094ed8 000088 tail2_bev_model", -"00094f60 000080 Rfoot2_bev_model", -"00094fe0 000058 Rfoot1_bev_model", -"00095038 000080 Lfoot2_bev_model", -"000950b8 000058 Lfoot1_bev_model", -"00095110 000080 base_bev_model", -"00095190 000138 cKF_je_r_bev_1_tbl", -"000952c8 000008 cKF_bs_r_bev_1", -"", -"000952e0 000020 bev_1_pal", -"00095300 000100 bev_1_eye1_TA_tex_txt", -"00095400 000100 bev_1_eye2_TA_tex_txt", -"00095500 000100 bev_1_eye3_TA_tex_txt", -"00095600 000100 bev_1_eye4_TA_tex_txt", -"00095700 000100 bev_1_eye5_TA_tex_txt", -"00095800 000100 bev_1_eye6_TA_tex_txt", -"00095900 000100 bev_1_eye7_TA_tex_txt", -"00095a00 000100 bev_1_eye8_TA_tex_txt", -"00095b00 000500 bev_1_tmem_txt", -"", -"00096338 001730 ant_1_v", -"00097a68 0001b0 head_ant_model", -"00097c18 000098 mouth_ant_model", -"00097cb0 000088 Rarm2_ant_model", -"00097d38 000078 Rarm1_ant_model", -"00097db0 000088 Larm2_ant_model", -"00097e38 000078 Larm1_ant_model", -"00097eb0 0000b0 chest_ant_model", -"00097f60 0000b0 tail1_ant_model", -"00098010 000080 Rfoot2_ant_model", -"00098090 0000a8 Rfoot1_ant_model", -"00098138 000080 Lfoot2_ant_model", -"000981b8 0000a8 Lfoot1_ant_model", -"00098260 000070 base_ant_model", -"000982d0 000138 cKF_je_r_ant_1_tbl", -"00098408 000008 cKF_bs_r_ant_1", -"", -"00098420 000020 ant_1_pal", -"00098440 000100 ant_1_eye1_TA_tex_txt", -"00098540 000100 ant_1_eye2_TA_tex_txt", -"00098640 000100 ant_1_eye3_TA_tex_txt", -"00098740 000100 ant_1_eye4_TA_tex_txt", -"00098840 000100 ant_1_eye5_TA_tex_txt", -"00098940 000100 ant_1_eye6_TA_tex_txt", -"00098a40 000100 ant_1_eye7_TA_tex_txt", -"00098b40 000100 ant_1_eye8_TA_tex_txt", -"00098c40 000500 ant_1_tmem_txt", -"", -"00099140 000020 ant_2_pal", -"00099160 000100 ant_2_eye1_TA_tex_txt", -"00099260 000100 ant_2_eye2_TA_tex_txt", -"00099360 000100 ant_2_eye3_TA_tex_txt", -"00099460 000100 ant_2_eye4_TA_tex_txt", -"00099560 000100 ant_2_eye5_TA_tex_txt", -"00099660 000100 ant_2_eye6_TA_tex_txt", -"00099760 000100 ant_2_eye7_TA_tex_txt", -"00099860 000100 ant_2_eye8_TA_tex_txt", -"00099960 000500 ant_2_tmem_txt", -"", -"00099e60 000020 ant_3_pal", -"00099e80 000100 ant_3_eye1_TA_tex_txt", -"00099f80 000100 ant_3_eye2_TA_tex_txt", -"0009a080 000100 ant_3_eye3_TA_tex_txt", -"0009a180 000100 ant_3_eye4_TA_tex_txt", -"0009a280 000100 ant_3_eye5_TA_tex_txt", -"0009a380 000100 ant_3_eye6_TA_tex_txt", -"0009a480 000100 ant_3_eye7_TA_tex_txt", -"0009a580 000100 ant_3_eye8_TA_tex_txt", -"0009a680 000500 ant_3_tmem_txt", -"", -"0009ab80 000020 ant_4_pal", -"0009aba0 000100 ant_4_eye1_TA_tex_txt", -"0009aca0 000100 ant_4_eye2_TA_tex_txt", -"0009ada0 000100 ant_4_eye3_TA_tex_txt", -"0009aea0 000100 ant_4_eye4_TA_tex_txt", -"0009afa0 000100 ant_4_eye5_TA_tex_txt", -"0009b0a0 000100 ant_4_eye6_TA_tex_txt", -"0009b1a0 000100 ant_4_eye7_TA_tex_txt", -"0009b2a0 000100 ant_4_eye8_TA_tex_txt", -"0009b3a0 000500 ant_4_tmem_txt", -"", -"0009b8a0 000020 ant_5_pal", -"0009b8c0 000100 ant_5_eye1_TA_tex_txt", -"0009b9c0 000100 ant_5_eye2_TA_tex_txt", -"0009bac0 000100 ant_5_eye3_TA_tex_txt", -"0009bbc0 000100 ant_5_eye4_TA_tex_txt", -"0009bcc0 000100 ant_5_eye5_TA_tex_txt", -"0009bdc0 000100 ant_5_eye6_TA_tex_txt", -"0009bec0 000100 ant_5_eye7_TA_tex_txt", -"0009bfc0 000100 ant_5_eye8_TA_tex_txt", -"0009c0c0 000500 ant_5_tmem_txt", -"", -"0009c5c0 001a50 wls_1_v", -"0009e010 0001a0 head_wls_model", -"0009e1b0 000060 mouth_wls_model", -"0009e210 0000e8 Rarm2_wls_model", -"0009e2f8 000078 Rarm1_wls_model", -"0009e370 000088 Larm2_wls_model", -"0009e3f8 000078 Larm1_wls_model", -"0009e470 000218 chest_wls_model", -"0009e688 000088 Rfoot3_wls_model", -"0009e710 000078 Rfoot2_wls_model", -"0009e788 000058 Rfoot1_wls_model", -"0009e7e0 000088 Lfoot3_wls_model", -"0009e868 000078 Lfoot2_wls_model", -"0009e8e0 000058 Lfoot1_wls_model", -"0009e938 000078 base_wls_model", -"0009e9b0 000138 cKF_je_r_wls_1_tbl", -"0009eae8 000008 cKF_bs_r_wls_1", -"", -"0009eb00 000020 wls_1_pal", -"0009eb20 000100 wls_1_eye1_TA_tex_txt", -"0009ec20 000100 wls_1_eye2_TA_tex_txt", -"0009ed20 000100 wls_1_eye3_TA_tex_txt", -"0009ee20 000100 wls_1_eye4_TA_tex_txt", -"0009ef20 000100 wls_1_eye5_TA_tex_txt", -"0009f020 000100 wls_1_eye6_TA_tex_txt", -"0009f120 000100 wls_1_eye7_TA_tex_txt", -"0009f220 000100 wls_1_eye8_TA_tex_txt", -"0009f320 000780 wls_1_tmem_txt", -"", -"000a1b78 001720 bea_1_v", -"000a3298 000158 head_bea_model", -"000a33f0 000080 Rarm2_bea_model", -"000a3470 000080 Rarm1_bea_model", -"000a34f0 000080 Larm2_bea_model", -"000a3570 000080 Larm1_bea_model", -"000a35f0 0000b8 chest_bea_model", -"000a36a8 000088 tail1_bea_model", -"000a3730 000088 Rfoot2_bea_model", -"000a37b8 000088 Rfoot1_bea_model", -"000a3840 000088 Lfoot2_bea_model", -"000a38c8 000088 Lfoot1_bea_model", -"000a3950 0000a0 base_bea_model", -"000a39f0 000138 cKF_je_r_bea_1_tbl", -"000a3b28 000008 cKF_bs_r_bea_1", -"", -"000a3b40 000020 bea_1_pal", -"000a3b60 000100 bea_1_eye1_TA_tex_txt", -"000a3c60 000100 bea_1_eye2_TA_tex_txt", -"000a3d60 000100 bea_1_eye3_TA_tex_txt", -"000a3e60 000100 bea_1_eye4_TA_tex_txt", -"000a3f60 000100 bea_1_eye5_TA_tex_txt", -"000a4060 000100 bea_1_eye6_TA_tex_txt", -"000a4160 000100 bea_1_eye7_TA_tex_txt", -"000a4260 000100 bea_1_eye8_TA_tex_txt", -"000a4360 000100 bea_1_mouth1_TA_tex_txt", -"000a4460 000100 bea_1_mouth2_TA_tex_txt", -"000a4560 000100 bea_1_mouth3_TA_tex_txt", -"000a4660 000100 bea_1_mouth4_TA_tex_txt", -"000a4760 000100 bea_1_mouth5_TA_tex_txt", -"000a4860 000100 bea_1_mouth6_TA_tex_txt", -"000a4960 000400 bea_1_tmem_txt", -"", -"000a4d60 000020 bea_2_pal", -"000a4d80 000100 bea_2_eye1_TA_tex_txt", -"000a4e80 000100 bea_2_eye2_TA_tex_txt", -"000a4f80 000100 bea_2_eye3_TA_tex_txt", -"000a5080 000100 bea_2_eye4_TA_tex_txt", -"000a5180 000100 bea_2_eye5_TA_tex_txt", -"000a5280 000100 bea_2_eye6_TA_tex_txt", -"000a5380 000100 bea_2_eye7_TA_tex_txt", -"000a5480 000100 bea_2_eye8_TA_tex_txt", -"000a5580 000100 bea_2_mouth1_TA_tex_txt", -"000a5680 000100 bea_2_mouth2_TA_tex_txt", -"000a5780 000100 bea_2_mouth3_TA_tex_txt", -"000a5880 000100 bea_2_mouth4_TA_tex_txt", -"000a5980 000100 bea_2_mouth5_TA_tex_txt", -"000a5a80 000100 bea_2_mouth6_TA_tex_txt", -"000a5b80 000400 bea_2_tmem_txt", -"", -"000a5f80 000020 bea_3_pal", -"000a5fa0 000100 bea_3_eye1_TA_tex_txt", -"000a60a0 000100 bea_3_eye2_TA_tex_txt", -"000a61a0 000100 bea_3_eye3_TA_tex_txt", -"000a62a0 000100 bea_3_eye4_TA_tex_txt", -"000a63a0 000100 bea_3_eye5_TA_tex_txt", -"000a64a0 000100 bea_3_eye6_TA_tex_txt", -"000a65a0 000100 bea_3_eye7_TA_tex_txt", -"000a66a0 000100 bea_3_eye8_TA_tex_txt", -"000a67a0 000100 bea_3_mouth1_TA_tex_txt", -"000a68a0 000100 bea_3_mouth2_TA_tex_txt", -"000a69a0 000100 bea_3_mouth3_TA_tex_txt", -"000a6aa0 000100 bea_3_mouth4_TA_tex_txt", -"000a6ba0 000100 bea_3_mouth5_TA_tex_txt", -"000a6ca0 000100 bea_3_mouth6_TA_tex_txt", -"000a6da0 000400 bea_3_tmem_txt", -"", -"000a71a0 000020 bea_5_pal", -"000a71c0 000100 bea_5_eye1_TA_tex_txt", -"000a72c0 000100 bea_5_eye2_TA_tex_txt", -"000a73c0 000100 bea_5_eye3_TA_tex_txt", -"000a74c0 000100 bea_5_eye4_TA_tex_txt", -"000a75c0 000100 bea_5_eye5_TA_tex_txt", -"000a76c0 000100 bea_5_eye6_TA_tex_txt", -"000a77c0 000100 bea_5_eye7_TA_tex_txt", -"000a78c0 000100 bea_5_eye8_TA_tex_txt", -"000a79c0 000100 bea_5_mouth1_TA_tex_txt", -"000a7ac0 000100 bea_5_mouth2_TA_tex_txt", -"000a7bc0 000100 bea_5_mouth3_TA_tex_txt", -"000a7cc0 000100 bea_5_mouth4_TA_tex_txt", -"000a7dc0 000100 bea_5_mouth5_TA_tex_txt", -"000a7ec0 000100 bea_5_mouth6_TA_tex_txt", -"000a7fc0 000400 bea_5_tmem_txt", -"", -"000a83c0 000020 bea_6_pal", -"000a83e0 000100 bea_6_eye1_TA_tex_txt", -"000a84e0 000100 bea_6_eye2_TA_tex_txt", -"000a85e0 000100 bea_6_eye3_TA_tex_txt", -"000a86e0 000100 bea_6_eye4_TA_tex_txt", -"000a87e0 000100 bea_6_eye5_TA_tex_txt", -"000a88e0 000100 bea_6_eye6_TA_tex_txt", -"000a89e0 000100 bea_6_eye7_TA_tex_txt", -"000a8ae0 000100 bea_6_eye8_TA_tex_txt", -"000a8be0 000100 bea_6_mouth1_TA_tex_txt", -"000a8ce0 000100 bea_6_mouth2_TA_tex_txt", -"000a8de0 000100 bea_6_mouth3_TA_tex_txt", -"000a8ee0 000100 bea_6_mouth4_TA_tex_txt", -"000a8fe0 000100 bea_6_mouth5_TA_tex_txt", -"000a90e0 000100 bea_6_mouth6_TA_tex_txt", -"000a91e0 000400 bea_6_tmem_txt", -"", -"000a95e0 000020 bea_7_pal", -"000a9600 000100 bea_7_eye1_TA_tex_txt", -"000a9700 000100 bea_7_eye2_TA_tex_txt", -"000a9800 000100 bea_7_eye3_TA_tex_txt", -"000a9900 000100 bea_7_eye4_TA_tex_txt", -"000a9a00 000100 bea_7_eye5_TA_tex_txt", -"000a9b00 000100 bea_7_eye6_TA_tex_txt", -"000a9c00 000100 bea_7_eye7_TA_tex_txt", -"000a9d00 000100 bea_7_eye8_TA_tex_txt", -"000a9e00 000100 bea_7_mouth1_TA_tex_txt", -"000a9f00 000100 bea_7_mouth2_TA_tex_txt", -"000aa000 000100 bea_7_mouth3_TA_tex_txt", -"000aa100 000100 bea_7_mouth4_TA_tex_txt", -"000aa200 000100 bea_7_mouth5_TA_tex_txt", -"000aa300 000100 bea_7_mouth6_TA_tex_txt", -"000aa400 000400 bea_7_tmem_txt", -"", -"000aa800 000020 bea_8_pal", -"000aa820 000100 bea_8_eye1_TA_tex_txt", -"000aa920 000100 bea_8_eye2_TA_tex_txt", -"000aaa20 000100 bea_8_eye3_TA_tex_txt", -"000aab20 000100 bea_8_eye4_TA_tex_txt", -"000aac20 000100 bea_8_eye5_TA_tex_txt", -"000aad20 000100 bea_8_eye6_TA_tex_txt", -"000aae20 000100 bea_8_eye7_TA_tex_txt", -"000aaf20 000100 bea_8_eye8_TA_tex_txt", -"000ab020 000100 bea_8_mouth1_TA_tex_txt", -"000ab120 000100 bea_8_mouth2_TA_tex_txt", -"000ab220 000100 bea_8_mouth3_TA_tex_txt", -"000ab320 000100 bea_8_mouth4_TA_tex_txt", -"000ab420 000100 bea_8_mouth5_TA_tex_txt", -"000ab520 000100 bea_8_mouth6_TA_tex_txt", -"000ab620 000400 bea_8_tmem_txt", -"", -"000aba20 000020 bea_9_pal", -"000aba40 000100 bea_9_eye1_TA_tex_txt", -"000abb40 000100 bea_9_eye2_TA_tex_txt", -"000abc40 000100 bea_9_eye3_TA_tex_txt", -"000abd40 000100 bea_9_eye4_TA_tex_txt", -"000abe40 000100 bea_9_eye5_TA_tex_txt", -"000abf40 000100 bea_9_eye6_TA_tex_txt", -"000ac040 000100 bea_9_eye7_TA_tex_txt", -"000ac140 000100 bea_9_eye8_TA_tex_txt", -"000ac240 000100 bea_9_mouth1_TA_tex_txt", -"000ac340 000100 bea_9_mouth2_TA_tex_txt", -"000ac440 000100 bea_9_mouth3_TA_tex_txt", -"000ac540 000100 bea_9_mouth4_TA_tex_txt", -"000ac640 000100 bea_9_mouth5_TA_tex_txt", -"000ac740 000100 bea_9_mouth6_TA_tex_txt", -"000ac840 000400 bea_9_tmem_txt", -"", -"000acc40 000020 bea_10_pal", -"000acc60 000100 bea_10_eye1_TA_tex_txt", -"000acd60 000100 bea_10_eye2_TA_tex_txt", -"000ace60 000100 bea_10_eye3_TA_tex_txt", -"000acf60 000100 bea_10_eye4_TA_tex_txt", -"000ad060 000100 bea_10_eye5_TA_tex_txt", -"000ad160 000100 bea_10_eye6_TA_tex_txt", -"000ad260 000100 bea_10_eye7_TA_tex_txt", -"000ad360 000100 bea_10_eye8_TA_tex_txt", -"000ad460 000100 bea_10_mouth1_TA_tex_txt", -"000ad560 000100 bea_10_mouth2_TA_tex_txt", -"000ad660 000100 bea_10_mouth3_TA_tex_txt", -"000ad760 000100 bea_10_mouth4_TA_tex_txt", -"000ad860 000100 bea_10_mouth5_TA_tex_txt", -"000ad960 000100 bea_10_mouth6_TA_tex_txt", -"000ada60 000400 bea_10_tmem_txt", -"", -"00120aa8 001740 pbr_1_v", -"001221e8 0001c8 head_pbr_model", -"001223b0 000080 mouth_pbr_model", -"00122430 000080 Rarm2_pbr_model", -"001224b0 000078 Rarm1_pbr_model", -"00122528 000080 Larm2_pbr_model", -"001225a8 000078 Larm1_pbr_model", -"00122620 0000d8 chest_pbr_model", -"001226f8 0000b0 tail1_pbr_model", -"001227a8 0000b0 Rfoot3_pbr_model", -"00122858 000080 Rfoot2_pbr_model", -"001228d8 000058 Rfoot1_pbr_model", -"00122930 0000b0 Lfoot3_pbr_model", -"001229e0 000080 Lfoot2_pbr_model", -"00122a60 000058 Lfoot1_pbr_model", -"00122ab8 000080 base_pbr_model", -"00122b38 000138 cKF_je_r_pbr_1_tbl", -"00122c70 000008 cKF_bs_r_pbr_1", -"", -"00122c80 000020 pbr_1_pal", -"00122ca0 000100 pbr_1_eye1_TA_tex_txt", -"00122da0 000100 pbr_1_eye2_TA_tex_txt", -"00122ea0 000100 pbr_1_eye3_TA_tex_txt", -"00122fa0 000100 pbr_1_eye4_TA_tex_txt", -"001230a0 000100 pbr_1_eye5_TA_tex_txt", -"001231a0 000100 pbr_1_eye6_TA_tex_txt", -"001232a0 000100 pbr_1_eye7_TA_tex_txt", -"001233a0 000100 pbr_1_eye8_TA_tex_txt", -"001234a0 000500 pbr_1_tmem_txt", -"", -"001239a0 000020 pbr_2_pal", -"001239c0 000100 pbr_2_eye1_TA_tex_txt", -"00123ac0 000100 pbr_2_eye2_TA_tex_txt", -"00123bc0 000100 pbr_2_eye3_TA_tex_txt", -"00123cc0 000100 pbr_2_eye4_TA_tex_txt", -"00123dc0 000100 pbr_2_eye5_TA_tex_txt", -"00123ec0 000100 pbr_2_eye6_TA_tex_txt", -"00123fc0 000100 pbr_2_eye7_TA_tex_txt", -"001240c0 000100 pbr_2_eye8_TA_tex_txt", -"001241c0 000500 pbr_2_tmem_txt", -"", -"001246c0 000020 pbr_3_pal", -"001246e0 000100 pbr_3_eye1_TA_tex_txt", -"001247e0 000100 pbr_3_eye2_TA_tex_txt", -"001248e0 000100 pbr_3_eye3_TA_tex_txt", -"001249e0 000100 pbr_3_eye4_TA_tex_txt", -"00124ae0 000100 pbr_3_eye5_TA_tex_txt", -"00124be0 000100 pbr_3_eye6_TA_tex_txt", -"00124ce0 000100 pbr_3_eye7_TA_tex_txt", -"00124de0 000100 pbr_3_eye8_TA_tex_txt", -"00124ee0 000500 pbr_3_tmem_txt", -"", -"001253e0 000020 pbr_4_pal", -"00125400 000100 pbr_4_eye1_TA_tex_txt", -"00125500 000100 pbr_4_eye2_TA_tex_txt", -"00125600 000100 pbr_4_eye3_TA_tex_txt", -"00125700 000100 pbr_4_eye4_TA_tex_txt", -"00125800 000100 pbr_4_eye5_TA_tex_txt", -"00125900 000100 pbr_4_eye6_TA_tex_txt", -"00125a00 000100 pbr_4_eye7_TA_tex_txt", -"00125b00 000100 pbr_4_eye8_TA_tex_txt", -"00125c00 000500 pbr_4_tmem_txt", -"", -"00126100 000020 pbr_5_pal", -"00126120 000100 pbr_5_eye1_TA_tex_txt", -"00126220 000100 pbr_5_eye2_TA_tex_txt", -"00126320 000100 pbr_5_eye3_TA_tex_txt", -"00126420 000100 pbr_5_eye4_TA_tex_txt", -"00126520 000100 pbr_5_eye5_TA_tex_txt", -"00126620 000100 pbr_5_eye6_TA_tex_txt", -"00126720 000100 pbr_5_eye7_TA_tex_txt", -"00126820 000100 pbr_5_eye8_TA_tex_txt", -"00126920 000500 pbr_5_tmem_txt", -"", -"00126e20 001600 brd_1_v", -"00128420 000180 head_brd_model", -"001285a0 000078 mouth_brd_model", -"00128618 000080 Rarm2_brd_model", -"00128698 000078 Rarm1_brd_model", -"00128710 000080 Larm2_brd_model", -"00128790 000078 Larm1_brd_model", -"00128808 0000c8 chest_brd_model", -"001288d0 0000d0 tail1_brd_model", -"001289a0 0000a0 Rfoot3_brd_model", -"00128a40 000080 Rfoot2_brd_model", -"00128ac0 000058 Rfoot1_brd_model", -"00128b18 0000a0 Lfoot3_brd_model", -"00128bb8 000080 Lfoot2_brd_model", -"00128c38 000058 Lfoot1_brd_model", -"00128c90 000088 base_brd_model", -"00128d18 000138 cKF_je_r_brd_1_tbl", -"00128e50 000008 cKF_bs_r_brd_1", -"", -"00128e60 000020 brd_1_pal", -"00128e80 000100 brd_1_eye1_TA_tex_txt", -"00128f80 000100 brd_1_eye2_TA_tex_txt", -"00129080 000100 brd_1_eye3_TA_tex_txt", -"00129180 000100 brd_1_eye4_TA_tex_txt", -"00129280 000100 brd_1_eye5_TA_tex_txt", -"00129380 000100 brd_1_eye6_TA_tex_txt", -"00129480 000100 brd_1_eye7_TA_tex_txt", -"00129580 000100 brd_1_eye8_TA_tex_txt", -"00129680 000500 brd_1_tmem_txt", -"", -"00129b80 000020 brd_2_pal", -"00129ba0 000100 brd_2_eye1_TA_tex_txt", -"00129ca0 000100 brd_2_eye2_TA_tex_txt", -"00129da0 000100 brd_2_eye3_TA_tex_txt", -"00129ea0 000100 brd_2_eye4_TA_tex_txt", -"00129fa0 000100 brd_2_eye5_TA_tex_txt", -"0012a0a0 000100 brd_2_eye6_TA_tex_txt", -"0012a1a0 000100 brd_2_eye7_TA_tex_txt", -"0012a2a0 000100 brd_2_eye8_TA_tex_txt", -"0012a3a0 000500 brd_2_tmem_txt", -"", -"0012a8a0 000020 brd_11_pal", -"0012a8c0 000100 brd_11_eye1_TA_tex_txt", -"0012a9c0 000100 brd_11_eye2_TA_tex_txt", -"0012aac0 000100 brd_11_eye3_TA_tex_txt", -"0012abc0 000100 brd_11_eye4_TA_tex_txt", -"0012acc0 000100 brd_11_eye5_TA_tex_txt", -"0012adc0 000100 brd_11_eye6_TA_tex_txt", -"0012aec0 000100 brd_11_eye7_TA_tex_txt", -"0012afc0 000100 brd_11_eye8_TA_tex_txt", -"0012b0c0 000500 brd_11_tmem_txt", -"", -"0012b5c0 000020 brd_3_pal", -"0012b5e0 000100 brd_3_eye1_TA_tex_txt", -"0012b6e0 000100 brd_3_eye2_TA_tex_txt", -"0012b7e0 000100 brd_3_eye3_TA_tex_txt", -"0012b8e0 000100 brd_3_eye4_TA_tex_txt", -"0012b9e0 000100 brd_3_eye5_TA_tex_txt", -"0012bae0 000100 brd_3_eye6_TA_tex_txt", -"0012bbe0 000100 brd_3_eye7_TA_tex_txt", -"0012bce0 000100 brd_3_eye8_TA_tex_txt", -"0012bde0 000500 brd_3_tmem_txt", -"", -"0012c2e0 000020 brd_4_pal", -"0012c300 000100 brd_4_eye1_TA_tex_txt", -"0012c400 000100 brd_4_eye2_TA_tex_txt", -"0012c500 000100 brd_4_eye3_TA_tex_txt", -"0012c600 000100 brd_4_eye4_TA_tex_txt", -"0012c700 000100 brd_4_eye5_TA_tex_txt", -"0012c800 000100 brd_4_eye6_TA_tex_txt", -"0012c900 000100 brd_4_eye7_TA_tex_txt", -"0012ca00 000100 brd_4_eye8_TA_tex_txt", -"0012cb00 000500 brd_4_tmem_txt", -"", -"0012d000 000020 brd_5_pal", -"0012d020 000100 brd_5_eye1_TA_tex_txt", -"0012d120 000100 brd_5_eye2_TA_tex_txt", -"0012d220 000100 brd_5_eye3_TA_tex_txt", -"0012d320 000100 brd_5_eye4_TA_tex_txt", -"0012d420 000100 brd_5_eye5_TA_tex_txt", -"0012d520 000100 brd_5_eye6_TA_tex_txt", -"0012d620 000100 brd_5_eye7_TA_tex_txt", -"0012d720 000100 brd_5_eye8_TA_tex_txt", -"0012d820 000500 brd_5_tmem_txt", -"", -"0012dd20 000020 brd_6_pal", -"0012dd40 000100 brd_6_eye1_TA_tex_txt", -"0012de40 000100 brd_6_eye2_TA_tex_txt", -"0012df40 000100 brd_6_eye3_TA_tex_txt", -"0012e040 000100 brd_6_eye4_TA_tex_txt", -"0012e140 000100 brd_6_eye5_TA_tex_txt", -"0012e240 000100 brd_6_eye6_TA_tex_txt", -"0012e340 000100 brd_6_eye7_TA_tex_txt", -"0012e440 000100 brd_6_eye8_TA_tex_txt", -"0012e540 000500 brd_6_tmem_txt", -"", -"0012ea40 000020 brd_7_pal", -"0012ea60 000100 brd_7_eye1_TA_tex_txt", -"0012eb60 000100 brd_7_eye2_TA_tex_txt", -"0012ec60 000100 brd_7_eye3_TA_tex_txt", -"0012ed60 000100 brd_7_eye4_TA_tex_txt", -"0012ee60 000100 brd_7_eye5_TA_tex_txt", -"0012ef60 000100 brd_7_eye6_TA_tex_txt", -"0012f060 000100 brd_7_eye7_TA_tex_txt", -"0012f160 000100 brd_7_eye8_TA_tex_txt", -"0012f260 000500 brd_7_tmem_txt", -"", -"0012f760 000020 brd_8_pal", -"0012f780 000100 brd_8_eye1_TA_tex_txt", -"0012f880 000100 brd_8_eye2_TA_tex_txt", -"0012f980 000100 brd_8_eye3_TA_tex_txt", -"0012fa80 000100 brd_8_eye4_TA_tex_txt", -"0012fb80 000100 brd_8_eye5_TA_tex_txt", -"0012fc80 000100 brd_8_eye6_TA_tex_txt", -"0012fd80 000100 brd_8_eye7_TA_tex_txt", -"0012fe80 000100 brd_8_eye8_TA_tex_txt", -"0012ff80 000500 brd_8_tmem_txt", -"", -"00130480 000020 brd_9_pal", -"001304a0 000100 brd_9_eye1_TA_tex_txt", -"001305a0 000100 brd_9_eye2_TA_tex_txt", -"001306a0 000100 brd_9_eye3_TA_tex_txt", -"001307a0 000100 brd_9_eye4_TA_tex_txt", -"001308a0 000100 brd_9_eye5_TA_tex_txt", -"001309a0 000100 brd_9_eye6_TA_tex_txt", -"00130aa0 000100 brd_9_eye7_TA_tex_txt", -"00130ba0 000100 brd_9_eye8_TA_tex_txt", -"00130ca0 000500 brd_9_tmem_txt", -"", -"001311a0 000020 brd_10_pal", -"001311c0 000100 brd_10_eye1_TA_tex_txt", -"001312c0 000100 brd_10_eye2_TA_tex_txt", -"001313c0 000100 brd_10_eye3_TA_tex_txt", -"001314c0 000100 brd_10_eye4_TA_tex_txt", -"001315c0 000100 brd_10_eye5_TA_tex_txt", -"001316c0 000100 brd_10_eye6_TA_tex_txt", -"001317c0 000100 brd_10_eye7_TA_tex_txt", -"001318c0 000100 brd_10_eye8_TA_tex_txt", -"001319c0 000500 brd_10_tmem_txt", -"", -"00188ae8 001700 fox_1_v", -"0018a1e8 000130 head_fox_model", -"0018a318 000088 mouth_fox_model", -"0018a3a0 000088 Rarm2_fox_model", -"0018a428 000078 Rarm1_fox_model", -"0018a4a0 000088 Larm2_fox_model", -"0018a528 000078 Larm1_fox_model", -"0018a5a0 000108 chest_fox_model", -"0018a6a8 000078 tail1_fox_model", -"0018a720 0000b8 tail2_fox_model", -"0018a7d8 000080 Rfoot2_fox_model", -"0018a858 000058 Rfoot1_fox_model", -"0018a8b0 000080 Lfoot2_fox_model", -"0018a930 000058 Lfoot1_fox_model", -"0018a988 0000d0 base_fox_model", -"0018aa58 000138 cKF_je_r_fox_1_tbl", -"0018ab90 000008 cKF_bs_r_fox_1", -"", -"0018aba0 000020 fox_1_pal", -"0018abc0 000100 fox_1_eye1_TA_tex_txt", -"0018acc0 000100 fox_1_eye2_TA_tex_txt", -"0018adc0 000100 fox_1_eye3_TA_tex_txt", -"0018aec0 000100 fox_1_eye4_TA_tex_txt", -"0018afc0 000100 fox_1_eye5_TA_tex_txt", -"0018b0c0 000100 fox_1_eye6_TA_tex_txt", -"0018b1c0 000100 fox_1_eye7_TA_tex_txt", -"0018b2c0 000100 fox_1_eye8_TA_tex_txt", -"0018b3c0 000700 fox_1_tmem_txt", -"", -"0018bac0 001680 bul_1_v", -"0018d140 000208 head_bul_model", -"0018d348 000088 Rarm2_bul_model", -"0018d3d0 000078 Rarm1_bul_model", -"0018d448 000088 Larm2_bul_model", -"0018d4d0 000078 Larm1_bul_model", -"0018d548 0000a0 chest_bul_model", -"0018d5e8 000060 tail1_bul_model", -"0018d648 000090 tail2_bul_model", -"0018d6d8 000080 Rfoot2_bul_model", -"0018d758 000080 Rfoot1_bul_model", -"0018d7d8 000080 Lfoot2_bul_model", -"0018d858 000080 Lfoot1_bul_model", -"0018d8d8 000098 base_bul_model", -"0018d970 000138 cKF_je_r_bul_1_tbl", -"0018daa8 000008 cKF_bs_r_bul_1", -"", -"0018dac0 000020 bul_1_pal", -"0018dae0 000100 bul_1_eye1_TA_tex_txt", -"0018dbe0 000100 bul_1_eye2_TA_tex_txt", -"0018dce0 000100 bul_1_eye3_TA_tex_txt", -"0018dde0 000100 bul_1_eye4_TA_tex_txt", -"0018dee0 000100 bul_1_eye5_TA_tex_txt", -"0018dfe0 000100 bul_1_eye6_TA_tex_txt", -"0018e0e0 000100 bul_1_eye7_TA_tex_txt", -"0018e1e0 000100 bul_1_eye8_TA_tex_txt", -"0018e2e0 000100 bul_1_mouth1_TA_tex_txt", -"0018e3e0 000100 bul_1_mouth2_TA_tex_txt", -"0018e4e0 000100 bul_1_mouth3_TA_tex_txt", -"0018e5e0 000100 bul_1_mouth4_TA_tex_txt", -"0018e6e0 000100 bul_1_mouth5_TA_tex_txt", -"0018e7e0 000100 bul_1_mouth6_TA_tex_txt", -"0018e8e0 000400 bul_1_tmem_txt", -"", -"0018ece0 000020 bul_2_pal", -"0018ed00 000100 bul_2_eye1_TA_tex_txt", -"0018ee00 000100 bul_2_eye2_TA_tex_txt", -"0018ef00 000100 bul_2_eye3_TA_tex_txt", -"0018f000 000100 bul_2_eye4_TA_tex_txt", -"0018f100 000100 bul_2_eye5_TA_tex_txt", -"0018f200 000100 bul_2_eye6_TA_tex_txt", -"0018f300 000100 bul_2_eye7_TA_tex_txt", -"0018f400 000100 bul_2_eye8_TA_tex_txt", -"0018f500 000100 bul_2_mouth1_TA_tex_txt", -"0018f600 000100 bul_2_mouth2_TA_tex_txt", -"0018f700 000100 bul_2_mouth3_TA_tex_txt", -"0018f800 000100 bul_2_mouth4_TA_tex_txt", -"0018f900 000100 bul_2_mouth5_TA_tex_txt", -"0018fa00 000100 bul_2_mouth6_TA_tex_txt", -"0018fb00 000400 bul_2_tmem_txt", -"", -"0018ff00 000020 bul_3_pal", -"0018ff20 000100 bul_3_eye1_TA_tex_txt", -"00190020 000100 bul_3_eye2_TA_tex_txt", -"00190120 000100 bul_3_eye3_TA_tex_txt", -"00190220 000100 bul_3_eye4_TA_tex_txt", -"00190320 000100 bul_3_eye5_TA_tex_txt", -"00190420 000100 bul_3_eye6_TA_tex_txt", -"00190520 000100 bul_3_eye7_TA_tex_txt", -"00190620 000100 bul_3_eye8_TA_tex_txt", -"00190720 000100 bul_3_mouth1_TA_tex_txt", -"00190820 000100 bul_3_mouth2_TA_tex_txt", -"00190920 000100 bul_3_mouth3_TA_tex_txt", -"00190a20 000100 bul_3_mouth4_TA_tex_txt", -"00190b20 000100 bul_3_mouth5_TA_tex_txt", -"00190c20 000100 bul_3_mouth6_TA_tex_txt", -"00190d20 000400 bul_3_tmem_txt", -"", -"00191120 000020 bul_4_pal", -"00191140 000100 bul_4_eye1_TA_tex_txt", -"00191240 000100 bul_4_eye2_TA_tex_txt", -"00191340 000100 bul_4_eye3_TA_tex_txt", -"00191440 000100 bul_4_eye4_TA_tex_txt", -"00191540 000100 bul_4_eye5_TA_tex_txt", -"00191640 000100 bul_4_eye6_TA_tex_txt", -"00191740 000100 bul_4_eye7_TA_tex_txt", -"00191840 000100 bul_4_eye8_TA_tex_txt", -"00191940 000100 bul_4_mouth1_TA_tex_txt", -"00191a40 000100 bul_4_mouth2_TA_tex_txt", -"00191b40 000100 bul_4_mouth3_TA_tex_txt", -"00191c40 000100 bul_4_mouth4_TA_tex_txt", -"00191d40 000100 bul_4_mouth5_TA_tex_txt", -"00191e40 000100 bul_4_mouth6_TA_tex_txt", -"00191f40 000400 bul_4_tmem_txt", -"", -"00192340 001c30 cml_1_v", -"00193f70 0001c0 head_cml_model", -"00194130 0000c0 mouth_cml_model", -"001941f0 000088 Rarm2_cml_model", -"00194278 000078 Rarm1_cml_model", -"001942f0 000088 Larm2_cml_model", -"00194378 000078 Larm1_cml_model", -"001943f0 000250 chest_cml_model", -"00194640 000080 Rfoot2_cml_model", -"001946c0 000058 Rfoot1_cml_model", -"00194718 000080 Lfoot2_cml_model", -"00194798 000058 Lfoot1_cml_model", -"001947f0 000078 base_cml_model", -"00194868 000138 cKF_je_r_cml_1_tbl", -"001949a0 000008 cKF_bs_r_cml_1", -"", -"001949c0 000020 cml_1_pal", -"001949e0 000100 cml_1_eye1_TA_tex_txt", -"00194ae0 000100 cml_1_eye2_TA_tex_txt", -"00194be0 000100 cml_1_eye3_TA_tex_txt", -"00194ce0 000100 cml_1_eye4_TA_tex_txt", -"00194de0 000100 cml_1_eye5_TA_tex_txt", -"00194ee0 000100 cml_1_eye6_TA_tex_txt", -"00194fe0 000100 cml_1_eye7_TA_tex_txt", -"001950e0 000100 cml_1_eye8_TA_tex_txt", -"001951e0 000780 cml_1_tmem_txt", -"", -"00195960 001430 cat_1_v", -"00196d90 000158 head_cat_model", -"00196ee8 000088 Rarm2_cat_model", -"00196f70 000078 Rarm1_cat_model", -"00196fe8 000088 Larm2_cat_model", -"00197070 000078 Larm1_cat_model", -"001970e8 000090 chest_cat_model", -"00197178 000058 tail1_cat_model", -"001971d0 000090 tail2_cat_model", -"00197260 000090 Rfoot2_cat_model", -"001972f0 0000c0 Rfoot1_cat_model", -"001973b0 000090 Lfoot2_cat_model", -"00197440 0000c0 Lfoot1_cat_model", -"00197500 000070 base_cat_model", -"00197570 000138 cKF_je_r_cat_1_tbl", -"001976a8 000008 cKF_bs_r_cat_1", -"", -"001976c0 000020 cat_1_pal", -"001976e0 000100 cat_1_eye1_TA_tex_txt", -"001977e0 000100 cat_1_eye2_TA_tex_txt", -"001978e0 000100 cat_1_eye3_TA_tex_txt", -"001979e0 000100 cat_1_eye4_TA_tex_txt", -"00197ae0 000100 cat_1_eye5_TA_tex_txt", -"00197be0 000100 cat_1_eye6_TA_tex_txt", -"00197ce0 000100 cat_1_eye7_TA_tex_txt", -"00197de0 000100 cat_1_eye8_TA_tex_txt", -"00197ee0 000100 cat_1_mouth1_TA_tex_txt", -"00197fe0 000100 cat_1_mouth2_TA_tex_txt", -"001980e0 000100 cat_1_mouth3_TA_tex_txt", -"001981e0 000100 cat_1_mouth4_TA_tex_txt", -"001982e0 000100 cat_1_mouth5_TA_tex_txt", -"001983e0 000100 cat_1_mouth6_TA_tex_txt", -"001984e0 000400 cat_1_tmem_txt", -"", -"001988e0 000020 cat_2_pal", -"00198900 000100 cat_2_eye1_TA_tex_txt", -"00198a00 000100 cat_2_eye2_TA_tex_txt", -"00198b00 000100 cat_2_eye3_TA_tex_txt", -"00198c00 000100 cat_2_eye4_TA_tex_txt", -"00198d00 000100 cat_2_eye5_TA_tex_txt", -"00198e00 000100 cat_2_eye6_TA_tex_txt", -"00198f00 000100 cat_2_eye7_TA_tex_txt", -"00199000 000100 cat_2_eye8_TA_tex_txt", -"00199100 000100 cat_2_mouth1_TA_tex_txt", -"00199200 000100 cat_2_mouth2_TA_tex_txt", -"00199300 000100 cat_2_mouth3_TA_tex_txt", -"00199400 000100 cat_2_mouth4_TA_tex_txt", -"00199500 000100 cat_2_mouth5_TA_tex_txt", -"00199600 000100 cat_2_mouth6_TA_tex_txt", -"00199700 000400 cat_2_tmem_txt", -"", -"00199b00 000020 cat_11_pal", -"00199b20 000100 cat_11_eye1_TA_tex_txt", -"00199c20 000100 cat_11_eye2_TA_tex_txt", -"00199d20 000100 cat_11_eye3_TA_tex_txt", -"00199e20 000100 cat_11_eye4_TA_tex_txt", -"00199f20 000100 cat_11_eye5_TA_tex_txt", -"0019a020 000100 cat_11_eye6_TA_tex_txt", -"0019a120 000100 cat_11_eye7_TA_tex_txt", -"0019a220 000100 cat_11_eye8_TA_tex_txt", -"0019a320 000100 cat_11_mouth1_TA_tex_txt", -"0019a420 000100 cat_11_mouth2_TA_tex_txt", -"0019a520 000100 cat_11_mouth3_TA_tex_txt", -"0019a620 000100 cat_11_mouth4_TA_tex_txt", -"0019a720 000100 cat_11_mouth5_TA_tex_txt", -"0019a820 000100 cat_11_mouth6_TA_tex_txt", -"0019a920 000400 cat_11_tmem_txt", -"", -"0019ad20 000020 cat_12_pal", -"0019ad40 000100 cat_12_eye1_TA_tex_txt", -"0019ae40 000100 cat_12_eye2_TA_tex_txt", -"0019af40 000100 cat_12_eye3_TA_tex_txt", -"0019b040 000100 cat_12_eye4_TA_tex_txt", -"0019b140 000100 cat_12_eye5_TA_tex_txt", -"0019b240 000100 cat_12_eye6_TA_tex_txt", -"0019b340 000100 cat_12_eye7_TA_tex_txt", -"0019b440 000100 cat_12_eye8_TA_tex_txt", -"0019b540 000100 cat_12_mouth1_TA_tex_txt", -"0019b640 000100 cat_12_mouth2_TA_tex_txt", -"0019b740 000100 cat_12_mouth3_TA_tex_txt", -"0019b840 000100 cat_12_mouth4_TA_tex_txt", -"0019b940 000100 cat_12_mouth5_TA_tex_txt", -"0019ba40 000100 cat_12_mouth6_TA_tex_txt", -"0019bb40 000400 cat_12_tmem_txt", -"", -"0019bf40 000020 cat_13_pal", -"0019bf60 000100 cat_13_eye1_TA_tex_txt", -"0019c060 000100 cat_13_eye2_TA_tex_txt", -"0019c160 000100 cat_13_eye3_TA_tex_txt", -"0019c260 000100 cat_13_eye4_TA_tex_txt", -"0019c360 000100 cat_13_eye5_TA_tex_txt", -"0019c460 000100 cat_13_eye6_TA_tex_txt", -"0019c560 000100 cat_13_eye7_TA_tex_txt", -"0019c660 000100 cat_13_eye8_TA_tex_txt", -"0019c760 000100 cat_13_mouth1_TA_tex_txt", -"0019c860 000100 cat_13_mouth2_TA_tex_txt", -"0019c960 000100 cat_13_mouth3_TA_tex_txt", -"0019ca60 000100 cat_13_mouth4_TA_tex_txt", -"0019cb60 000100 cat_13_mouth5_TA_tex_txt", -"0019cc60 000100 cat_13_mouth6_TA_tex_txt", -"0019cd60 000400 cat_13_tmem_txt", -"", -"0019d160 000020 cat_14_pal", -"0019d180 000100 cat_14_eye1_TA_tex_txt", -"0019d280 000100 cat_14_eye2_TA_tex_txt", -"0019d380 000100 cat_14_eye3_TA_tex_txt", -"0019d480 000100 cat_14_eye4_TA_tex_txt", -"0019d580 000100 cat_14_eye5_TA_tex_txt", -"0019d680 000100 cat_14_eye6_TA_tex_txt", -"0019d780 000100 cat_14_eye7_TA_tex_txt", -"0019d880 000100 cat_14_eye8_TA_tex_txt", -"0019d980 000100 cat_14_mouth1_TA_tex_txt", -"0019da80 000100 cat_14_mouth2_TA_tex_txt", -"0019db80 000100 cat_14_mouth3_TA_tex_txt", -"0019dc80 000100 cat_14_mouth4_TA_tex_txt", -"0019dd80 000100 cat_14_mouth5_TA_tex_txt", -"0019de80 000100 cat_14_mouth6_TA_tex_txt", -"0019df80 000400 cat_14_tmem_txt", -"", -"0019e380 000020 cat_15_pal", -"0019e3a0 000100 cat_15_eye1_TA_tex_txt", -"0019e4a0 000100 cat_15_eye2_TA_tex_txt", -"0019e5a0 000100 cat_15_eye3_TA_tex_txt", -"0019e6a0 000100 cat_15_eye4_TA_tex_txt", -"0019e7a0 000100 cat_15_eye5_TA_tex_txt", -"0019e8a0 000100 cat_15_eye6_TA_tex_txt", -"0019e9a0 000100 cat_15_eye7_TA_tex_txt", -"0019eaa0 000100 cat_15_eye8_TA_tex_txt", -"0019eba0 000100 cat_15_mouth1_TA_tex_txt", -"0019eca0 000100 cat_15_mouth2_TA_tex_txt", -"0019eda0 000100 cat_15_mouth3_TA_tex_txt", -"0019eea0 000100 cat_15_mouth4_TA_tex_txt", -"0019efa0 000100 cat_15_mouth5_TA_tex_txt", -"0019f0a0 000100 cat_15_mouth6_TA_tex_txt", -"0019f1a0 000400 cat_15_tmem_txt", -"", -"0019f5a0 000020 cat_3_pal", -"0019f5c0 000100 cat_3_eye1_TA_tex_txt", -"0019f6c0 000100 cat_3_eye2_TA_tex_txt", -"0019f7c0 000100 cat_3_eye3_TA_tex_txt", -"0019f8c0 000100 cat_3_eye4_TA_tex_txt", -"0019f9c0 000100 cat_3_eye5_TA_tex_txt", -"0019fac0 000100 cat_3_eye6_TA_tex_txt", -"0019fbc0 000100 cat_3_eye7_TA_tex_txt", -"0019fcc0 000100 cat_3_eye8_TA_tex_txt", -"0019fdc0 000100 cat_3_mouth1_TA_tex_txt", -"0019fec0 000100 cat_3_mouth2_TA_tex_txt", -"0019ffc0 000100 cat_3_mouth3_TA_tex_txt", -"001a00c0 000100 cat_3_mouth4_TA_tex_txt", -"001a01c0 000100 cat_3_mouth5_TA_tex_txt", -"001a02c0 000100 cat_3_mouth6_TA_tex_txt", -"001a03c0 000400 cat_3_tmem_txt", -"", -"001a07c0 000020 cat_4_pal", -"001a07e0 000100 cat_4_eye1_TA_tex_txt", -"001a08e0 000100 cat_4_eye2_TA_tex_txt", -"001a09e0 000100 cat_4_eye3_TA_tex_txt", -"001a0ae0 000100 cat_4_eye4_TA_tex_txt", -"001a0be0 000100 cat_4_eye5_TA_tex_txt", -"001a0ce0 000100 cat_4_eye6_TA_tex_txt", -"001a0de0 000100 cat_4_eye7_TA_tex_txt", -"001a0ee0 000100 cat_4_eye8_TA_tex_txt", -"001a0fe0 000100 cat_4_mouth1_TA_tex_txt", -"001a10e0 000100 cat_4_mouth2_TA_tex_txt", -"001a11e0 000100 cat_4_mouth3_TA_tex_txt", -"001a12e0 000100 cat_4_mouth4_TA_tex_txt", -"001a13e0 000100 cat_4_mouth5_TA_tex_txt", -"001a14e0 000100 cat_4_mouth6_TA_tex_txt", -"001a15e0 000400 cat_4_tmem_txt", -"", -"001a19e0 000020 cat_5_pal", -"001a1a00 000100 cat_5_eye1_TA_tex_txt", -"001a1b00 000100 cat_5_eye2_TA_tex_txt", -"001a1c00 000100 cat_5_eye3_TA_tex_txt", -"001a1d00 000100 cat_5_eye4_TA_tex_txt", -"001a1e00 000100 cat_5_eye5_TA_tex_txt", -"001a1f00 000100 cat_5_eye6_TA_tex_txt", -"001a2000 000100 cat_5_eye7_TA_tex_txt", -"001a2100 000100 cat_5_eye8_TA_tex_txt", -"001a2200 000100 cat_5_mouth1_TA_tex_txt", -"001a2300 000100 cat_5_mouth2_TA_tex_txt", -"001a2400 000100 cat_5_mouth3_TA_tex_txt", -"001a2500 000100 cat_5_mouth4_TA_tex_txt", -"001a2600 000100 cat_5_mouth5_TA_tex_txt", -"001a2700 000100 cat_5_mouth6_TA_tex_txt", -"001a2800 000400 cat_5_tmem_txt", -"", -"001a2c00 000020 cat_6_pal", -"001a2c20 000100 cat_6_eye1_TA_tex_txt", -"001a2d20 000100 cat_6_eye2_TA_tex_txt", -"001a2e20 000100 cat_6_eye3_TA_tex_txt", -"001a2f20 000100 cat_6_eye4_TA_tex_txt", -"001a3020 000100 cat_6_eye5_TA_tex_txt", -"001a3120 000100 cat_6_eye6_TA_tex_txt", -"001a3220 000100 cat_6_eye7_TA_tex_txt", -"001a3320 000100 cat_6_eye8_TA_tex_txt", -"001a3420 000100 cat_6_mouth1_TA_tex_txt", -"001a3520 000100 cat_6_mouth2_TA_tex_txt", -"001a3620 000100 cat_6_mouth3_TA_tex_txt", -"001a3720 000100 cat_6_mouth4_TA_tex_txt", -"001a3820 000100 cat_6_mouth5_TA_tex_txt", -"001a3920 000100 cat_6_mouth6_TA_tex_txt", -"001a3a20 000400 cat_6_tmem_txt", -"", -"001a3e20 000020 cat_7_pal", -"001a3e40 000100 cat_7_eye1_TA_tex_txt", -"001a3f40 000100 cat_7_eye2_TA_tex_txt", -"001a4040 000100 cat_7_eye3_TA_tex_txt", -"001a4140 000100 cat_7_eye4_TA_tex_txt", -"001a4240 000100 cat_7_eye5_TA_tex_txt", -"001a4340 000100 cat_7_eye6_TA_tex_txt", -"001a4440 000100 cat_7_eye7_TA_tex_txt", -"001a4540 000100 cat_7_eye8_TA_tex_txt", -"001a4640 000100 cat_7_mouth1_TA_tex_txt", -"001a4740 000100 cat_7_mouth2_TA_tex_txt", -"001a4840 000100 cat_7_mouth3_TA_tex_txt", -"001a4940 000100 cat_7_mouth4_TA_tex_txt", -"001a4a40 000100 cat_7_mouth5_TA_tex_txt", -"001a4b40 000100 cat_7_mouth6_TA_tex_txt", -"001a4c40 000400 cat_7_tmem_txt", -"", -"001a5040 000020 cat_8_pal", -"001a5060 000100 cat_8_eye1_TA_tex_txt", -"001a5160 000100 cat_8_eye2_TA_tex_txt", -"001a5260 000100 cat_8_eye3_TA_tex_txt", -"001a5360 000100 cat_8_eye4_TA_tex_txt", -"001a5460 000100 cat_8_eye5_TA_tex_txt", -"001a5560 000100 cat_8_eye6_TA_tex_txt", -"001a5660 000100 cat_8_eye7_TA_tex_txt", -"001a5760 000100 cat_8_eye8_TA_tex_txt", -"001a5860 000100 cat_8_mouth1_TA_tex_txt", -"001a5960 000100 cat_8_mouth2_TA_tex_txt", -"001a5a60 000100 cat_8_mouth3_TA_tex_txt", -"001a5b60 000100 cat_8_mouth4_TA_tex_txt", -"001a5c60 000100 cat_8_mouth5_TA_tex_txt", -"001a5d60 000100 cat_8_mouth6_TA_tex_txt", -"001a5e60 000400 cat_8_tmem_txt", -"", -"001a6260 000020 cat_9_pal", -"001a6280 000100 cat_9_eye1_TA_tex_txt", -"001a6380 000100 cat_9_eye2_TA_tex_txt", -"001a6480 000100 cat_9_eye3_TA_tex_txt", -"001a6580 000100 cat_9_eye4_TA_tex_txt", -"001a6680 000100 cat_9_eye5_TA_tex_txt", -"001a6780 000100 cat_9_eye6_TA_tex_txt", -"001a6880 000100 cat_9_eye7_TA_tex_txt", -"001a6980 000100 cat_9_eye8_TA_tex_txt", -"001a6a80 000100 cat_9_mouth1_TA_tex_txt", -"001a6b80 000100 cat_9_mouth2_TA_tex_txt", -"001a6c80 000100 cat_9_mouth3_TA_tex_txt", -"001a6d80 000100 cat_9_mouth4_TA_tex_txt", -"001a6e80 000100 cat_9_mouth5_TA_tex_txt", -"001a6f80 000100 cat_9_mouth6_TA_tex_txt", -"001a7080 000400 cat_9_tmem_txt", -"", -"001a7480 000020 cat_10_pal", -"001a74a0 000100 cat_10_eye1_TA_tex_txt", -"001a75a0 000100 cat_10_eye2_TA_tex_txt", -"001a76a0 000100 cat_10_eye3_TA_tex_txt", -"001a77a0 000100 cat_10_eye4_TA_tex_txt", -"001a78a0 000100 cat_10_eye5_TA_tex_txt", -"001a79a0 000100 cat_10_eye6_TA_tex_txt", -"001a7aa0 000100 cat_10_eye7_TA_tex_txt", -"001a7ba0 000100 cat_10_eye8_TA_tex_txt", -"001a7ca0 000100 cat_10_mouth1_TA_tex_txt", -"001a7da0 000100 cat_10_mouth2_TA_tex_txt", -"001a7ea0 000100 cat_10_mouth3_TA_tex_txt", -"001a7fa0 000100 cat_10_mouth4_TA_tex_txt", -"001a80a0 000100 cat_10_mouth5_TA_tex_txt", -"001a81a0 000100 cat_10_mouth6_TA_tex_txt", -"001a82a0 000400 cat_10_tmem_txt", -"", -"001a86a0 001c20 chn_1_v", -"001aa2c0 000240 head_chn_model", -"001aa500 000078 mouth_chn_model", -"001aa578 000080 Rarm2_chn_model", -"001aa5f8 000078 Rarm1_chn_model", -"001aa670 000080 Larm2_chn_model", -"001aa6f0 000078 Larm1_chn_model", -"001aa768 0000c0 chest_chn_model", -"001aa828 0000c0 tail1_chn_model", -"001aa8e8 000098 Rfoot3_chn_model", -"001aa980 000080 Rfoot2_chn_model", -"001aaa00 0000c0 Rfoot1_chn_model", -"001aaac0 000098 Lfoot3_chn_model", -"001aab58 000080 Lfoot2_chn_model", -"001aabd8 0000c0 Lfoot1_chn_model", -"001aac98 000070 base_chn_model", -"001aad08 000138 cKF_je_r_chn_1_tbl", -"001aae40 000008 cKF_bs_r_chn_1", -"", -"001aae60 000020 chn_1_pal", -"001aae80 000100 chn_1_eye1_TA_tex_txt", -"001aaf80 000100 chn_1_eye2_TA_tex_txt", -"001ab080 000100 chn_1_eye3_TA_tex_txt", -"001ab180 000100 chn_1_eye4_TA_tex_txt", -"001ab280 000100 chn_1_eye5_TA_tex_txt", -"001ab380 000100 chn_1_eye6_TA_tex_txt", -"001ab480 000100 chn_1_eye7_TA_tex_txt", -"001ab580 000100 chn_1_eye8_TA_tex_txt", -"001ab680 0004c0 chn_1_tmem_txt", -"", -"001abb40 000020 chn_2_pal", -"001abb60 000100 chn_2_eye1_TA_tex_txt", -"001abc60 000100 chn_2_eye2_TA_tex_txt", -"001abd60 000100 chn_2_eye3_TA_tex_txt", -"001abe60 000100 chn_2_eye4_TA_tex_txt", -"001abf60 000100 chn_2_eye5_TA_tex_txt", -"001ac060 000100 chn_2_eye6_TA_tex_txt", -"001ac160 000100 chn_2_eye7_TA_tex_txt", -"001ac260 000100 chn_2_eye8_TA_tex_txt", -"001ac360 0004c0 chn_2_tmem_txt", -"", -"001ac820 000020 chn_3_pal", -"001ac840 000100 chn_3_eye1_TA_tex_txt", -"001ac940 000100 chn_3_eye2_TA_tex_txt", -"001aca40 000100 chn_3_eye3_TA_tex_txt", -"001acb40 000100 chn_3_eye4_TA_tex_txt", -"001acc40 000100 chn_3_eye5_TA_tex_txt", -"001acd40 000100 chn_3_eye6_TA_tex_txt", -"001ace40 000100 chn_3_eye7_TA_tex_txt", -"001acf40 000100 chn_3_eye8_TA_tex_txt", -"001ad040 0004c0 chn_3_tmem_txt", -"", -"001ad500 000020 chn_4_pal", -"001ad520 000100 chn_4_eye1_TA_tex_txt", -"001ad620 000100 chn_4_eye2_TA_tex_txt", -"001ad720 000100 chn_4_eye3_TA_tex_txt", -"001ad820 000100 chn_4_eye4_TA_tex_txt", -"001ad920 000100 chn_4_eye5_TA_tex_txt", -"001ada20 000100 chn_4_eye6_TA_tex_txt", -"001adb20 000100 chn_4_eye7_TA_tex_txt", -"001adc20 000100 chn_4_eye8_TA_tex_txt", -"001add20 0004c0 chn_4_tmem_txt", -"", -"001ae1e0 000020 chn_5_pal", -"001ae200 000100 chn_5_eye1_TA_tex_txt", -"001ae300 000100 chn_5_eye2_TA_tex_txt", -"001ae400 000100 chn_5_eye3_TA_tex_txt", -"001ae500 000100 chn_5_eye4_TA_tex_txt", -"001ae600 000100 chn_5_eye5_TA_tex_txt", -"001ae700 000100 chn_5_eye6_TA_tex_txt", -"001ae800 000100 chn_5_eye7_TA_tex_txt", -"001ae900 000100 chn_5_eye8_TA_tex_txt", -"001aea00 0004c0 chn_5_tmem_txt", -"", -"001aeec0 000020 chn_6_pal", -"001aeee0 000100 chn_6_eye1_TA_tex_txt", -"001aefe0 000100 chn_6_eye2_TA_tex_txt", -"001af0e0 000100 chn_6_eye3_TA_tex_txt", -"001af1e0 000100 chn_6_eye4_TA_tex_txt", -"001af2e0 000100 chn_6_eye5_TA_tex_txt", -"001af3e0 000100 chn_6_eye6_TA_tex_txt", -"001af4e0 000100 chn_6_eye7_TA_tex_txt", -"001af5e0 000100 chn_6_eye8_TA_tex_txt", -"001af6e0 0004c0 chn_6_tmem_txt", -"", -"001afba0 000020 chn_7_pal", -"001afbc0 000100 chn_7_eye1_TA_tex_txt", -"001afcc0 000100 chn_7_eye2_TA_tex_txt", -"001afdc0 000100 chn_7_eye3_TA_tex_txt", -"001afec0 000100 chn_7_eye4_TA_tex_txt", -"001affc0 000100 chn_7_eye5_TA_tex_txt", -"001b00c0 000100 chn_7_eye6_TA_tex_txt", -"001b01c0 000100 chn_7_eye7_TA_tex_txt", -"001b02c0 000100 chn_7_eye8_TA_tex_txt", -"001b03c0 0004c0 chn_7_tmem_txt", -"", -"001b0880 000020 chn_8_pal", -"001b08a0 000100 chn_8_eye1_TA_tex_txt", -"001b09a0 000100 chn_8_eye2_TA_tex_txt", -"001b0aa0 000100 chn_8_eye3_TA_tex_txt", -"001b0ba0 000100 chn_8_eye4_TA_tex_txt", -"001b0ca0 000100 chn_8_eye5_TA_tex_txt", -"001b0da0 000100 chn_8_eye6_TA_tex_txt", -"001b0ea0 000100 chn_8_eye7_TA_tex_txt", -"001b0fa0 000100 chn_8_eye8_TA_tex_txt", -"001b10a0 0004c0 chn_8_tmem_txt", -"", -"001b1560 000020 chn_9_pal", -"001b1580 000100 chn_9_eye1_TA_tex_txt", -"001b1680 000100 chn_9_eye2_TA_tex_txt", -"001b1780 000100 chn_9_eye3_TA_tex_txt", -"001b1880 000100 chn_9_eye4_TA_tex_txt", -"001b1980 000100 chn_9_eye5_TA_tex_txt", -"001b1a80 000100 chn_9_eye6_TA_tex_txt", -"001b1b80 000100 chn_9_eye7_TA_tex_txt", -"001b1c80 000100 chn_9_eye8_TA_tex_txt", -"001b1d80 0004c0 chn_9_tmem_txt", -"", -"001b2240 0015a0 cbr_1_v", -"001b37e0 0001d8 head_cbr_model", -"001b39b8 000090 Rarm2_cbr_model", -"001b3a48 000088 Rarm1_cbr_model", -"001b3ad0 000090 Larm2_cbr_model", -"001b3b60 000088 Larm1_cbr_model", -"001b3be8 0000c0 chest_cbr_model", -"001b3ca8 000068 tail1_cbr_model", -"001b3d10 000098 Rfoot2_cbr_model", -"001b3da8 000068 Rfoot1_cbr_model", -"001b3e10 000098 Lfoot2_cbr_model", -"001b3ea8 000068 Lfoot1_cbr_model", -"001b3f10 0000d0 base_cbr_model", -"001b3fe0 000138 cKF_je_r_cbr_1_tbl", -"001b4118 000008 cKF_bs_r_cbr_1", -"", -"001b4120 000020 cbr_1_pal", -"001b4140 000100 cbr_1_eye1_TA_tex_txt", -"001b4240 000100 cbr_1_eye2_TA_tex_txt", -"001b4340 000100 cbr_1_eye3_TA_tex_txt", -"001b4440 000100 cbr_1_eye4_TA_tex_txt", -"001b4540 000100 cbr_1_eye5_TA_tex_txt", -"001b4640 000100 cbr_1_eye6_TA_tex_txt", -"001b4740 000100 cbr_1_eye7_TA_tex_txt", -"001b4840 000100 cbr_1_eye8_TA_tex_txt", -"001b4940 000100 cbr_1_mouth1_TA_tex_txt", -"001b4a40 000100 cbr_1_mouth2_TA_tex_txt", -"001b4b40 000100 cbr_1_mouth3_TA_tex_txt", -"001b4c40 000100 cbr_1_mouth4_TA_tex_txt", -"001b4d40 000100 cbr_1_mouth5_TA_tex_txt", -"001b4e40 000100 cbr_1_mouth6_TA_tex_txt", -"001b4f40 000400 cbr_1_tmem_txt", -"", -"001b5340 000020 cbr_2_pal", -"001b5360 000100 cbr_2_eye1_TA_tex_txt", -"001b5460 000100 cbr_2_eye2_TA_tex_txt", -"001b5560 000100 cbr_2_eye3_TA_tex_txt", -"001b5660 000100 cbr_2_eye4_TA_tex_txt", -"001b5760 000100 cbr_2_eye5_TA_tex_txt", -"001b5860 000100 cbr_2_eye6_TA_tex_txt", -"001b5960 000100 cbr_2_eye7_TA_tex_txt", -"001b5a60 000100 cbr_2_eye8_TA_tex_txt", -"001b5b60 000100 cbr_2_mouth1_TA_tex_txt", -"001b5c60 000100 cbr_2_mouth2_TA_tex_txt", -"001b5d60 000100 cbr_2_mouth3_TA_tex_txt", -"001b5e60 000100 cbr_2_mouth4_TA_tex_txt", -"001b5f60 000100 cbr_2_mouth5_TA_tex_txt", -"001b6060 000100 cbr_2_mouth6_TA_tex_txt", -"001b6160 000400 cbr_2_tmem_txt", -"", -"001b6560 000020 cbr_11_pal", -"001b6580 000100 cbr_11_eye1_TA_tex_txt", -"001b6680 000100 cbr_11_eye2_TA_tex_txt", -"001b6780 000100 cbr_11_eye3_TA_tex_txt", -"001b6880 000100 cbr_11_eye4_TA_tex_txt", -"001b6980 000100 cbr_11_eye5_TA_tex_txt", -"001b6a80 000100 cbr_11_eye6_TA_tex_txt", -"001b6b80 000100 cbr_11_eye7_TA_tex_txt", -"001b6c80 000100 cbr_11_eye8_TA_tex_txt", -"001b6d80 000100 cbr_11_mouth1_TA_tex_txt", -"001b6e80 000100 cbr_11_mouth2_TA_tex_txt", -"001b6f80 000100 cbr_11_mouth3_TA_tex_txt", -"001b7080 000100 cbr_11_mouth4_TA_tex_txt", -"001b7180 000100 cbr_11_mouth5_TA_tex_txt", -"001b7280 000100 cbr_11_mouth6_TA_tex_txt", -"001b7380 000400 cbr_11_tmem_txt", -"", -"001b7780 000020 cbr_3_pal", -"001b77a0 000100 cbr_3_eye1_TA_tex_txt", -"001b78a0 000100 cbr_3_eye2_TA_tex_txt", -"001b79a0 000100 cbr_3_eye3_TA_tex_txt", -"001b7aa0 000100 cbr_3_eye4_TA_tex_txt", -"001b7ba0 000100 cbr_3_eye5_TA_tex_txt", -"001b7ca0 000100 cbr_3_eye6_TA_tex_txt", -"001b7da0 000100 cbr_3_eye7_TA_tex_txt", -"001b7ea0 000100 cbr_3_eye8_TA_tex_txt", -"001b7fa0 000100 cbr_3_mouth1_TA_tex_txt", -"001b80a0 000100 cbr_3_mouth2_TA_tex_txt", -"001b81a0 000100 cbr_3_mouth3_TA_tex_txt", -"001b82a0 000100 cbr_3_mouth4_TA_tex_txt", -"001b83a0 000100 cbr_3_mouth5_TA_tex_txt", -"001b84a0 000100 cbr_3_mouth6_TA_tex_txt", -"001b85a0 000400 cbr_3_tmem_txt", -"", -"001b89a0 000020 cbr_4_pal", -"001b89c0 000100 cbr_4_eye1_TA_tex_txt", -"001b8ac0 000100 cbr_4_eye2_TA_tex_txt", -"001b8bc0 000100 cbr_4_eye3_TA_tex_txt", -"001b8cc0 000100 cbr_4_eye4_TA_tex_txt", -"001b8dc0 000100 cbr_4_eye5_TA_tex_txt", -"001b8ec0 000100 cbr_4_eye6_TA_tex_txt", -"001b8fc0 000100 cbr_4_eye7_TA_tex_txt", -"001b90c0 000100 cbr_4_eye8_TA_tex_txt", -"001b91c0 000100 cbr_4_mouth1_TA_tex_txt", -"001b92c0 000100 cbr_4_mouth2_TA_tex_txt", -"001b93c0 000100 cbr_4_mouth3_TA_tex_txt", -"001b94c0 000100 cbr_4_mouth4_TA_tex_txt", -"001b95c0 000100 cbr_4_mouth5_TA_tex_txt", -"001b96c0 000100 cbr_4_mouth6_TA_tex_txt", -"001b97c0 000400 cbr_4_tmem_txt", -"", -"001b9bc0 000020 cbr_5_pal", -"001b9be0 000100 cbr_5_eye1_TA_tex_txt", -"001b9ce0 000100 cbr_5_eye2_TA_tex_txt", -"001b9de0 000100 cbr_5_eye3_TA_tex_txt", -"001b9ee0 000100 cbr_5_eye4_TA_tex_txt", -"001b9fe0 000100 cbr_5_eye5_TA_tex_txt", -"001ba0e0 000100 cbr_5_eye6_TA_tex_txt", -"001ba1e0 000100 cbr_5_eye7_TA_tex_txt", -"001ba2e0 000100 cbr_5_eye8_TA_tex_txt", -"001ba3e0 000100 cbr_5_mouth1_TA_tex_txt", -"001ba4e0 000100 cbr_5_mouth2_TA_tex_txt", -"001ba5e0 000100 cbr_5_mouth3_TA_tex_txt", -"001ba6e0 000100 cbr_5_mouth4_TA_tex_txt", -"001ba7e0 000100 cbr_5_mouth5_TA_tex_txt", -"001ba8e0 000100 cbr_5_mouth6_TA_tex_txt", -"001ba9e0 000400 cbr_5_tmem_txt", -"", -"001bade0 000020 cbr_6_pal", -"001bae00 000100 cbr_6_eye1_TA_tex_txt", -"001baf00 000100 cbr_6_eye2_TA_tex_txt", -"001bb000 000100 cbr_6_eye3_TA_tex_txt", -"001bb100 000100 cbr_6_eye4_TA_tex_txt", -"001bb200 000100 cbr_6_eye5_TA_tex_txt", -"001bb300 000100 cbr_6_eye6_TA_tex_txt", -"001bb400 000100 cbr_6_eye7_TA_tex_txt", -"001bb500 000100 cbr_6_eye8_TA_tex_txt", -"001bb600 000100 cbr_6_mouth1_TA_tex_txt", -"001bb700 000100 cbr_6_mouth2_TA_tex_txt", -"001bb800 000100 cbr_6_mouth3_TA_tex_txt", -"001bb900 000100 cbr_6_mouth4_TA_tex_txt", -"001bba00 000100 cbr_6_mouth5_TA_tex_txt", -"001bbb00 000100 cbr_6_mouth6_TA_tex_txt", -"001bbc00 000400 cbr_6_tmem_txt", -"", -"001bc000 000020 cbr_7_pal", -"001bc020 000100 cbr_7_eye1_TA_tex_txt", -"001bc120 000100 cbr_7_eye2_TA_tex_txt", -"001bc220 000100 cbr_7_eye3_TA_tex_txt", -"001bc320 000100 cbr_7_eye4_TA_tex_txt", -"001bc420 000100 cbr_7_eye5_TA_tex_txt", -"001bc520 000100 cbr_7_eye6_TA_tex_txt", -"001bc620 000100 cbr_7_eye7_TA_tex_txt", -"001bc720 000100 cbr_7_eye8_TA_tex_txt", -"001bc820 000100 cbr_7_mouth1_TA_tex_txt", -"001bc920 000100 cbr_7_mouth2_TA_tex_txt", -"001bca20 000100 cbr_7_mouth3_TA_tex_txt", -"001bcb20 000100 cbr_7_mouth4_TA_tex_txt", -"001bcc20 000100 cbr_7_mouth5_TA_tex_txt", -"001bcd20 000100 cbr_7_mouth6_TA_tex_txt", -"001bce20 000400 cbr_7_tmem_txt", -"", -"001bd220 000020 cbr_8_pal", -"001bd240 000100 cbr_8_eye1_TA_tex_txt", -"001bd340 000100 cbr_8_eye2_TA_tex_txt", -"001bd440 000100 cbr_8_eye3_TA_tex_txt", -"001bd540 000100 cbr_8_eye4_TA_tex_txt", -"001bd640 000100 cbr_8_eye5_TA_tex_txt", -"001bd740 000100 cbr_8_eye6_TA_tex_txt", -"001bd840 000100 cbr_8_eye7_TA_tex_txt", -"001bd940 000100 cbr_8_eye8_TA_tex_txt", -"001bda40 000100 cbr_8_mouth1_TA_tex_txt", -"001bdb40 000100 cbr_8_mouth2_TA_tex_txt", -"001bdc40 000100 cbr_8_mouth3_TA_tex_txt", -"001bdd40 000100 cbr_8_mouth4_TA_tex_txt", -"001bde40 000100 cbr_8_mouth5_TA_tex_txt", -"001bdf40 000100 cbr_8_mouth6_TA_tex_txt", -"001be040 000400 cbr_8_tmem_txt", -"", -"001be440 000020 cbr_9_pal", -"001be460 000100 cbr_9_eye1_TA_tex_txt", -"001be560 000100 cbr_9_eye2_TA_tex_txt", -"001be660 000100 cbr_9_eye3_TA_tex_txt", -"001be760 000100 cbr_9_eye4_TA_tex_txt", -"001be860 000100 cbr_9_eye5_TA_tex_txt", -"001be960 000100 cbr_9_eye6_TA_tex_txt", -"001bea60 000100 cbr_9_eye7_TA_tex_txt", -"001beb60 000100 cbr_9_eye8_TA_tex_txt", -"001bec60 000100 cbr_9_mouth1_TA_tex_txt", -"001bed60 000100 cbr_9_mouth2_TA_tex_txt", -"001bee60 000100 cbr_9_mouth3_TA_tex_txt", -"001bef60 000100 cbr_9_mouth4_TA_tex_txt", -"001bf060 000100 cbr_9_mouth5_TA_tex_txt", -"001bf160 000100 cbr_9_mouth6_TA_tex_txt", -"001bf260 000400 cbr_9_tmem_txt", -"", -"001bf660 000020 cbr_10_pal", -"001bf680 000100 cbr_10_eye1_TA_tex_txt", -"001bf780 000100 cbr_10_eye2_TA_tex_txt", -"001bf880 000100 cbr_10_eye3_TA_tex_txt", -"001bf980 000100 cbr_10_eye4_TA_tex_txt", -"001bfa80 000100 cbr_10_eye5_TA_tex_txt", -"001bfb80 000100 cbr_10_eye6_TA_tex_txt", -"001bfc80 000100 cbr_10_eye7_TA_tex_txt", -"001bfd80 000100 cbr_10_eye8_TA_tex_txt", -"001bfe80 000100 cbr_10_mouth1_TA_tex_txt", -"001bff80 000100 cbr_10_mouth2_TA_tex_txt", -"001c0080 000100 cbr_10_mouth3_TA_tex_txt", -"001c0180 000100 cbr_10_mouth4_TA_tex_txt", -"001c0280 000100 cbr_10_mouth5_TA_tex_txt", -"001c0380 000100 cbr_10_mouth6_TA_tex_txt", -"001c0480 000400 cbr_10_tmem_txt", -"", -"001c1128 0015b0 rcc_1_v", -"001c26d8 000208 head_rcc_model", -"001c28e0 000078 mouth_rcc_model", -"001c2958 0000b8 Rarm2_rcc_model", -"001c2a10 000078 Rarm1_rcc_model", -"001c2a88 0000b8 Larm2_rcc_model", -"001c2b40 000078 Larm1_rcc_model", -"001c2bb8 0000c8 chest_rcc_model", -"001c2c80 000078 tail1_rcc_model", -"001c2cf8 0000a0 tail2_rcc_model", -"001c2d98 000080 Rfoot2_rcc_model", -"001c2e18 000058 Rfoot1_rcc_model", -"001c2e70 000080 Lfoot2_rcc_model", -"001c2ef0 000058 Lfoot1_rcc_model", -"001c2f48 000080 base_rcc_model", -"001c2fc8 000138 cKF_je_r_rcc_1_tbl", -"001c3100 000008 cKF_bs_r_rcc_1", -"", -"001c3120 000020 rcc_1_pal", -"001c3140 000100 rcc_1_eye1_TA_tex_txt", -"001c3240 000100 rcc_1_eye2_TA_tex_txt", -"001c3340 000100 rcc_1_eye3_TA_tex_txt", -"001c3440 000100 rcc_1_eye4_TA_tex_txt", -"001c3540 000100 rcc_1_eye5_TA_tex_txt", -"001c3640 000100 rcc_1_eye6_TA_tex_txt", -"001c3740 000100 rcc_1_eye7_TA_tex_txt", -"001c3840 000100 rcc_1_eye8_TA_tex_txt", -"001c3940 0006c0 rcc_1_tmem_txt", -"", -"001c4000 001630 cow_1_v", -"001c5630 0001e8 head_cow_model", -"001c5818 000088 Rarm2_cow_model", -"001c58a0 000078 Rarm1_cow_model", -"001c5918 000088 Larm2_cow_model", -"001c59a0 000078 Larm1_cow_model", -"001c5a18 0000a8 chest_cow_model", -"001c5ac0 000060 tail1_cow_model", -"001c5b20 000090 tail2_cow_model", -"001c5bb0 000080 Rfoot2_cow_model", -"001c5c30 0000c0 Rfoot1_cow_model", -"001c5cf0 000080 Lfoot2_cow_model", -"001c5d70 0000c0 Lfoot1_cow_model", -"001c5e30 000070 base_cow_model", -"001c5ea0 000138 cKF_je_r_cow_1_tbl", -"001c5fd8 000008 cKF_bs_r_cow_1", -"", -"001c5fe0 000020 cow_1_pal", -"001c6000 000100 cow_1_eye1_TA_tex_txt", -"001c6100 000100 cow_1_eye2_TA_tex_txt", -"001c6200 000100 cow_1_eye3_TA_tex_txt", -"001c6300 000100 cow_1_eye4_TA_tex_txt", -"001c6400 000100 cow_1_eye5_TA_tex_txt", -"001c6500 000100 cow_1_eye6_TA_tex_txt", -"001c6600 000100 cow_1_eye7_TA_tex_txt", -"001c6700 000100 cow_1_eye8_TA_tex_txt", -"001c6800 000100 cow_1_mouth1_TA_tex_txt", -"001c6900 000100 cow_1_mouth2_TA_tex_txt", -"001c6a00 000100 cow_1_mouth3_TA_tex_txt", -"001c6b00 000100 cow_1_mouth4_TA_tex_txt", -"001c6c00 000100 cow_1_mouth5_TA_tex_txt", -"001c6d00 000100 cow_1_mouth6_TA_tex_txt", -"001c6e00 000400 cow_1_tmem_txt", -"", -"001c7200 000020 cow_2_pal", -"001c7220 000100 cow_2_eye1_TA_tex_txt", -"001c7320 000100 cow_2_eye2_TA_tex_txt", -"001c7420 000100 cow_2_eye3_TA_tex_txt", -"001c7520 000100 cow_2_eye4_TA_tex_txt", -"001c7620 000100 cow_2_eye5_TA_tex_txt", -"001c7720 000100 cow_2_eye6_TA_tex_txt", -"001c7820 000100 cow_2_eye7_TA_tex_txt", -"001c7920 000100 cow_2_eye8_TA_tex_txt", -"001c7a20 000100 cow_2_mouth1_TA_tex_txt", -"001c7b20 000100 cow_2_mouth2_TA_tex_txt", -"001c7c20 000100 cow_2_mouth3_TA_tex_txt", -"001c7d20 000100 cow_2_mouth4_TA_tex_txt", -"001c7e20 000100 cow_2_mouth5_TA_tex_txt", -"001c7f20 000100 cow_2_mouth6_TA_tex_txt", -"001c8020 000400 cow_2_tmem_txt", -"", -"001c8420 000020 cow_3_pal", -"001c8440 000100 cow_3_eye1_TA_tex_txt", -"001c8540 000100 cow_3_eye2_TA_tex_txt", -"001c8640 000100 cow_3_eye3_TA_tex_txt", -"001c8740 000100 cow_3_eye4_TA_tex_txt", -"001c8840 000100 cow_3_eye5_TA_tex_txt", -"001c8940 000100 cow_3_eye6_TA_tex_txt", -"001c8a40 000100 cow_3_eye7_TA_tex_txt", -"001c8b40 000100 cow_3_eye8_TA_tex_txt", -"001c8c40 000100 cow_3_mouth1_TA_tex_txt", -"001c8d40 000100 cow_3_mouth2_TA_tex_txt", -"001c8e40 000100 cow_3_mouth3_TA_tex_txt", -"001c8f40 000100 cow_3_mouth4_TA_tex_txt", -"001c9040 000100 cow_3_mouth5_TA_tex_txt", -"001c9140 000100 cow_3_mouth6_TA_tex_txt", -"001c9240 000400 cow_3_tmem_txt", -"", -"001c9640 000020 cow_4_pal", -"001c9660 000100 cow_4_eye1_TA_tex_txt", -"001c9760 000100 cow_4_eye2_TA_tex_txt", -"001c9860 000100 cow_4_eye3_TA_tex_txt", -"001c9960 000100 cow_4_eye4_TA_tex_txt", -"001c9a60 000100 cow_4_eye5_TA_tex_txt", -"001c9b60 000100 cow_4_eye6_TA_tex_txt", -"001c9c60 000100 cow_4_eye7_TA_tex_txt", -"001c9d60 000100 cow_4_eye8_TA_tex_txt", -"001c9e60 000100 cow_4_mouth1_TA_tex_txt", -"001c9f60 000100 cow_4_mouth2_TA_tex_txt", -"001ca060 000100 cow_4_mouth3_TA_tex_txt", -"001ca160 000100 cow_4_mouth4_TA_tex_txt", -"001ca260 000100 cow_4_mouth5_TA_tex_txt", -"001ca360 000100 cow_4_mouth6_TA_tex_txt", -"001ca460 000400 cow_4_tmem_txt", -"", -"001ca860 001790 crd_1_v", -"001cbff0 0001a8 head_crd_model", -"001cc198 000108 mouth_crd_model", -"001cc2a0 000088 Rarm2_crd_model", -"001cc328 000078 Rarm1_crd_model", -"001cc3a0 000088 Larm2_crd_model", -"001cc428 000078 Larm1_crd_model", -"001cc4a0 0000c8 chest_crd_model", -"001cc568 000080 tail1_crd_model", -"001cc5e8 000088 tail2_crd_model", -"001cc670 000080 Rfoot2_crd_model", -"001cc6f0 000058 Rfoot1_crd_model", -"001cc748 000080 Lfoot2_crd_model", -"001cc7c8 000058 Lfoot1_crd_model", -"001cc820 000088 base_crd_model", -"001cc8a8 000138 cKF_je_r_crd_1_tbl", -"001cc9e0 000008 cKF_bs_r_crd_1", -"", -"001cca00 000020 crd_1_pal", -"001cca20 000100 crd_1_eye1_TA_tex_txt", -"001ccb20 000100 crd_1_eye2_TA_tex_txt", -"001ccc20 000100 crd_1_eye3_TA_tex_txt", -"001ccd20 000100 crd_1_eye4_TA_tex_txt", -"001cce20 000100 crd_1_eye5_TA_tex_txt", -"001ccf20 000100 crd_1_eye6_TA_tex_txt", -"001cd020 000100 crd_1_eye7_TA_tex_txt", -"001cd120 000100 crd_1_eye8_TA_tex_txt", -"001cd220 000500 crd_1_tmem_txt", -"", -"001cd720 000020 crd_2_pal", -"001cd740 000100 crd_2_eye1_TA_tex_txt", -"001cd840 000100 crd_2_eye2_TA_tex_txt", -"001cd940 000100 crd_2_eye3_TA_tex_txt", -"001cda40 000100 crd_2_eye4_TA_tex_txt", -"001cdb40 000100 crd_2_eye5_TA_tex_txt", -"001cdc40 000100 crd_2_eye6_TA_tex_txt", -"001cdd40 000100 crd_2_eye7_TA_tex_txt", -"001cde40 000100 crd_2_eye8_TA_tex_txt", -"001cdf40 000500 crd_2_tmem_txt", -"", -"001ce440 000020 crd_3_pal", -"001ce460 000100 crd_3_eye1_TA_tex_txt", -"001ce560 000100 crd_3_eye2_TA_tex_txt", -"001ce660 000100 crd_3_eye3_TA_tex_txt", -"001ce760 000100 crd_3_eye4_TA_tex_txt", -"001ce860 000100 crd_3_eye5_TA_tex_txt", -"001ce960 000100 crd_3_eye6_TA_tex_txt", -"001cea60 000100 crd_3_eye7_TA_tex_txt", -"001ceb60 000100 crd_3_eye8_TA_tex_txt", -"001cec60 000500 crd_3_tmem_txt", -"", -"001cf160 000020 crd_4_pal", -"001cf180 000100 crd_4_eye1_TA_tex_txt", -"001cf280 000100 crd_4_eye2_TA_tex_txt", -"001cf380 000100 crd_4_eye3_TA_tex_txt", -"001cf480 000100 crd_4_eye4_TA_tex_txt", -"001cf580 000100 crd_4_eye5_TA_tex_txt", -"001cf680 000100 crd_4_eye6_TA_tex_txt", -"001cf780 000100 crd_4_eye7_TA_tex_txt", -"001cf880 000100 crd_4_eye8_TA_tex_txt", -"001cf980 000500 crd_4_tmem_txt", -"", -"001cfe80 001a90 owl_1_v", -"001d1910 000240 head_owl_model", -"001d1b50 000098 mouth_owl_model", -"001d1be8 0000d0 Rarm2_owl_model", -"001d1cb8 000078 Rarm1_owl_model", -"001d1d30 0000d0 Larm2_owl_model", -"001d1e00 000078 Larm1_owl_model", -"001d1e78 0000d0 chest_owl_model", -"001d1f48 0000a8 tail1_owl_model", -"001d1ff0 0000a8 Rfoot3_owl_model", -"001d2098 000080 Rfoot2_owl_model", -"001d2118 000058 Rfoot1_owl_model", -"001d2170 0000a8 Lfoot3_owl_model", -"001d2218 000080 Lfoot2_owl_model", -"001d2298 000058 Lfoot1_owl_model", -"001d22f0 000078 base_owl_model", -"001d2368 000138 cKF_je_r_owl_1_tbl", -"001d24a0 000008 cKF_bs_r_owl_1", -"", -"001d24c0 000020 owl_1_pal", -"001d24e0 000100 owl_1_eye1_TA_tex_txt", -"001d25e0 000100 owl_1_eye2_TA_tex_txt", -"001d26e0 000100 owl_1_eye3_TA_tex_txt", -"001d27e0 000100 owl_1_eye4_TA_tex_txt", -"001d28e0 000100 owl_1_eye5_TA_tex_txt", -"001d29e0 000100 owl_1_eye6_TA_tex_txt", -"001d2ae0 000100 owl_1_eye7_TA_tex_txt", -"001d2be0 000100 owl_1_eye8_TA_tex_txt", -"001d2ce0 000640 owl_1_tmem_txt", -"", -"001d3320 001520 rcd_1_v", -"001d4840 0001b8 head_rcd_model", -"001d49f8 000078 mouth_rcd_model", -"001d4a70 0000b8 Rarm2_rcd_model", -"001d4b28 000078 Rarm1_rcd_model", -"001d4ba0 0000b8 Larm2_rcd_model", -"001d4c58 000078 Larm1_rcd_model", -"001d4cd0 0000c8 chest_rcd_model", -"001d4d98 000078 tail1_rcd_model", -"001d4e10 0000a0 tail2_rcd_model", -"001d4eb0 000080 Rfoot2_rcd_model", -"001d4f30 000058 Rfoot1_rcd_model", -"001d4f88 000080 Lfoot2_rcd_model", -"001d5008 000058 Lfoot1_rcd_model", -"001d5060 000080 base_rcd_model", -"001d50e0 000138 cKF_je_r_rcd_1_tbl", -"001d5218 000008 cKF_bs_r_rcd_1", -"", -"001d5220 000020 rcd_1_pal", -"001d5240 000100 rcd_1_eye1_TA_tex_txt", -"001d5340 000100 rcd_1_eye2_TA_tex_txt", -"001d5440 000100 rcd_1_eye3_TA_tex_txt", -"001d5540 000100 rcd_1_eye4_TA_tex_txt", -"001d5640 000100 rcd_1_eye5_TA_tex_txt", -"001d5740 000100 rcd_1_eye6_TA_tex_txt", -"001d5840 000100 rcd_1_eye7_TA_tex_txt", -"001d5940 000100 rcd_1_eye8_TA_tex_txt", -"001d5a40 000640 rcd_1_tmem_txt", -"", -"001d6080 001ae0 grf_1_v", -"001d7b60 000220 head_grf_model", -"001d7d80 0000d8 mouth_grf_model", -"001d7e58 000088 Rarm2_grf_model", -"001d7ee0 000078 Rarm1_grf_model", -"001d7f58 000088 Larm2_grf_model", -"001d7fe0 000078 Larm1_grf_model", -"001d8058 000130 chest_grf_model", -"001d8188 000058 tail1_grf_model", -"001d81e0 000090 tail2_grf_model", -"001d8270 0000a0 Rfoot2_grf_model", -"001d8310 000060 Rfoot1_grf_model", -"001d8370 0000a0 Lfoot2_grf_model", -"001d8410 000060 Lfoot1_grf_model", -"001d8470 000078 base_grf_model", -"001d84e8 000138 cKF_je_r_grf_1_tbl", -"001d8620 000008 cKF_bs_r_grf_1", -"", -"001d8640 000020 grf_1_pal", -"001d8660 000100 grf_1_eye1_TA_tex_txt", -"001d8760 000100 grf_1_eye2_TA_tex_txt", -"001d8860 000100 grf_1_eye3_TA_tex_txt", -"001d8960 000100 grf_1_eye4_TA_tex_txt", -"001d8a60 000100 grf_1_eye5_TA_tex_txt", -"001d8b60 000100 grf_1_eye6_TA_tex_txt", -"001d8c60 000100 grf_1_eye7_TA_tex_txt", -"001d8d60 000100 grf_1_eye8_TA_tex_txt", -"001d8e60 000700 grf_1_tmem_txt", -"", -"001d9560 0016b0 dog_1_v", -"001dac10 0001e8 head_dog_model", -"001dadf8 000080 Rarm2_dog_model", -"001dae78 000078 Rarm_dog_model", -"001daef0 000080 Larm2_dog_model", -"001daf70 000078 Larm1_dog_model", -"001dafe8 0000a8 chest_dog_model", -"001db090 000058 tail1_dog_model", -"001db0e8 000090 tail2_dog_model", -"001db178 000088 Rfoot2_dog_model", -"001db200 000080 Rfoot1_dog_model", -"001db280 000088 Lfoot2_dog_model", -"001db308 000080 Lfoot1_dog_model", -"001db388 000078 base_dog_model", -"001db400 000138 cKF_je_r_dog_1_tbl", -"001db538 000008 cKF_bs_r_dog_1", -"", -"001db540 000020 dog_1_pal", -"001db560 000100 dog_1_eye1_TA_tex_txt", -"001db660 000100 dog_1_eye2_TA_tex_txt", -"001db760 000100 dog_1_eye3_TA_tex_txt", -"001db860 000100 dog_1_eye4_TA_tex_txt", -"001db960 000100 dog_1_eye5_TA_tex_txt", -"001dba60 000100 dog_1_eye6_TA_tex_txt", -"001dbb60 000100 dog_1_eye7_TA_tex_txt", -"001dbc60 000100 dog_1_eye8_TA_tex_txt", -"001dbd60 000100 dog_1_mouth1_TA_tex_txt", -"001dbe60 000100 dog_1_mouth2_TA_tex_txt", -"001dbf60 000100 dog_1_mouth3_TA_tex_txt", -"001dc060 000100 dog_1_mouth4_TA_tex_txt", -"001dc160 000100 dog_1_mouth5_TA_tex_txt", -"001dc260 000100 dog_1_mouth6_TA_tex_txt", -"001dc360 000400 dog_1_tmem_txt", -"", -"001dc760 000020 dog_2_pal", -"001dc780 000100 dog_2_eye1_TA_tex_txt", -"001dc880 000100 dog_2_eye2_TA_tex_txt", -"001dc980 000100 dog_2_eye3_TA_tex_txt", -"001dca80 000100 dog_2_eye4_TA_tex_txt", -"001dcb80 000100 dog_2_eye5_TA_tex_txt", -"001dcc80 000100 dog_2_eye6_TA_tex_txt", -"001dcd80 000100 dog_2_eye7_TA_tex_txt", -"001dce80 000100 dog_2_eye8_TA_tex_txt", -"001dcf80 000100 dog_2_mouth1_TA_tex_txt", -"001dd080 000100 dog_2_mouth2_TA_tex_txt", -"001dd180 000100 dog_2_mouth3_TA_tex_txt", -"001dd280 000100 dog_2_mouth4_TA_tex_txt", -"001dd380 000100 dog_2_mouth5_TA_tex_txt", -"001dd480 000100 dog_2_mouth6_TA_tex_txt", -"001dd580 000400 dog_2_tmem_txt", -"", -"001dd980 000020 dog_3_pal", -"001dd9a0 000100 dog_3_eye1_TA_tex_txt", -"001ddaa0 000100 dog_3_eye2_TA_tex_txt", -"001ddba0 000100 dog_3_eye3_TA_tex_txt", -"001ddca0 000100 dog_3_eye4_TA_tex_txt", -"001ddda0 000100 dog_3_eye5_TA_tex_txt", -"001ddea0 000100 dog_3_eye6_TA_tex_txt", -"001ddfa0 000100 dog_3_eye7_TA_tex_txt", -"001de0a0 000100 dog_3_eye8_TA_tex_txt", -"001de1a0 000100 dog_3_mouth1_TA_tex_txt", -"001de2a0 000100 dog_3_mouth2_TA_tex_txt", -"001de3a0 000100 dog_3_mouth3_TA_tex_txt", -"001de4a0 000100 dog_3_mouth4_TA_tex_txt", -"001de5a0 000100 dog_3_mouth5_TA_tex_txt", -"001de6a0 000100 dog_3_mouth6_TA_tex_txt", -"001de7a0 000400 dog_3_tmem_txt", -"", -"001deba0 000020 dog_4_pal", -"001debc0 000100 dog_4_eye1_TA_tex_txt", -"001decc0 000100 dog_4_eye2_TA_tex_txt", -"001dedc0 000100 dog_4_eye3_TA_tex_txt", -"001deec0 000100 dog_4_eye4_TA_tex_txt", -"001defc0 000100 dog_4_eye5_TA_tex_txt", -"001df0c0 000100 dog_4_eye6_TA_tex_txt", -"001df1c0 000100 dog_4_eye7_TA_tex_txt", -"001df2c0 000100 dog_4_eye8_TA_tex_txt", -"001df3c0 000100 dog_4_mouth1_TA_tex_txt", -"001df4c0 000100 dog_4_mouth2_TA_tex_txt", -"001df5c0 000100 dog_4_mouth3_TA_tex_txt", -"001df6c0 000100 dog_4_mouth4_TA_tex_txt", -"001df7c0 000100 dog_4_mouth5_TA_tex_txt", -"001df8c0 000100 dog_4_mouth6_TA_tex_txt", -"001df9c0 000400 dog_4_tmem_txt", -"", -"001dfdc0 000020 dog_5_pal", -"001dfde0 000100 dog_5_eye1_TA_tex_txt", -"001dfee0 000100 dog_5_eye2_TA_tex_txt", -"001dffe0 000100 dog_5_eye3_TA_tex_txt", -"001e00e0 000100 dog_5_eye4_TA_tex_txt", -"001e01e0 000100 dog_5_eye5_TA_tex_txt", -"001e02e0 000100 dog_5_eye6_TA_tex_txt", -"001e03e0 000100 dog_5_eye7_TA_tex_txt", -"001e04e0 000100 dog_5_eye8_TA_tex_txt", -"001e05e0 000100 dog_5_mouth1_TA_tex_txt", -"001e06e0 000100 dog_5_mouth2_TA_tex_txt", -"001e07e0 000100 dog_5_mouth3_TA_tex_txt", -"001e08e0 000100 dog_5_mouth4_TA_tex_txt", -"001e09e0 000100 dog_5_mouth5_TA_tex_txt", -"001e0ae0 000100 dog_5_mouth6_TA_tex_txt", -"001e0be0 000400 dog_5_tmem_txt", -"", -"001e0fe0 000020 dog_6_pal", -"001e1000 000100 dog_6_eye1_TA_tex_txt", -"001e1100 000100 dog_6_eye2_TA_tex_txt", -"001e1200 000100 dog_6_eye3_TA_tex_txt", -"001e1300 000100 dog_6_eye4_TA_tex_txt", -"001e1400 000100 dog_6_eye5_TA_tex_txt", -"001e1500 000100 dog_6_eye6_TA_tex_txt", -"001e1600 000100 dog_6_eye7_TA_tex_txt", -"001e1700 000100 dog_6_eye8_TA_tex_txt", -"001e1800 000100 dog_6_mouth1_TA_tex_txt", -"001e1900 000100 dog_6_mouth2_TA_tex_txt", -"001e1a00 000100 dog_6_mouth3_TA_tex_txt", -"001e1b00 000100 dog_6_mouth4_TA_tex_txt", -"001e1c00 000100 dog_6_mouth5_TA_tex_txt", -"001e1d00 000100 dog_6_mouth6_TA_tex_txt", -"001e1e00 000400 dog_6_tmem_txt", -"", -"001e2200 000020 dog_7_pal", -"001e2220 000100 dog_7_eye1_TA_tex_txt", -"001e2320 000100 dog_7_eye2_TA_tex_txt", -"001e2420 000100 dog_7_eye3_TA_tex_txt", -"001e2520 000100 dog_7_eye4_TA_tex_txt", -"001e2620 000100 dog_7_eye5_TA_tex_txt", -"001e2720 000100 dog_7_eye6_TA_tex_txt", -"001e2820 000100 dog_7_eye7_TA_tex_txt", -"001e2920 000100 dog_7_eye8_TA_tex_txt", -"001e2a20 000100 dog_7_mouth1_TA_tex_txt", -"001e2b20 000100 dog_7_mouth2_TA_tex_txt", -"001e2c20 000100 dog_7_mouth3_TA_tex_txt", -"001e2d20 000100 dog_7_mouth4_TA_tex_txt", -"001e2e20 000100 dog_7_mouth5_TA_tex_txt", -"001e2f20 000100 dog_7_mouth6_TA_tex_txt", -"001e3020 000400 dog_7_tmem_txt", -"", -"001e3420 000020 dog_8_pal", -"001e3440 000100 dog_8_eye1_TA_tex_txt", -"001e3540 000100 dog_8_eye2_TA_tex_txt", -"001e3640 000100 dog_8_eye3_TA_tex_txt", -"001e3740 000100 dog_8_eye4_TA_tex_txt", -"001e3840 000100 dog_8_eye5_TA_tex_txt", -"001e3940 000100 dog_8_eye6_TA_tex_txt", -"001e3a40 000100 dog_8_eye7_TA_tex_txt", -"001e3b40 000100 dog_8_eye8_TA_tex_txt", -"001e3c40 000100 dog_8_mouth1_TA_tex_txt", -"001e3d40 000100 dog_8_mouth2_TA_tex_txt", -"001e3e40 000100 dog_8_mouth3_TA_tex_txt", -"001e3f40 000100 dog_8_mouth4_TA_tex_txt", -"001e4040 000100 dog_8_mouth5_TA_tex_txt", -"001e4140 000100 dog_8_mouth6_TA_tex_txt", -"001e4240 000400 dog_8_tmem_txt", -"", -"001e4640 000020 dog_9_pal", -"001e4660 000100 dog_9_eye1_TA_tex_txt", -"001e4760 000100 dog_9_eye2_TA_tex_txt", -"001e4860 000100 dog_9_eye3_TA_tex_txt", -"001e4960 000100 dog_9_eye4_TA_tex_txt", -"001e4a60 000100 dog_9_eye5_TA_tex_txt", -"001e4b60 000100 dog_9_eye6_TA_tex_txt", -"001e4c60 000100 dog_9_eye7_TA_tex_txt", -"001e4d60 000100 dog_9_eye8_TA_tex_txt", -"001e4e60 000100 dog_9_mouth1_TA_tex_txt", -"001e4f60 000100 dog_9_mouth2_TA_tex_txt", -"001e5060 000100 dog_9_mouth3_TA_tex_txt", -"001e5160 000100 dog_9_mouth4_TA_tex_txt", -"001e5260 000100 dog_9_mouth5_TA_tex_txt", -"001e5360 000100 dog_9_mouth6_TA_tex_txt", -"001e5460 000400 dog_9_tmem_txt", -"", -"001e5860 000020 dog_10_pal", -"001e5880 000100 dog_10_eye1_TA_tex_txt", -"001e5980 000100 dog_10_eye2_TA_tex_txt", -"001e5a80 000100 dog_10_eye3_TA_tex_txt", -"001e5b80 000100 dog_10_eye4_TA_tex_txt", -"001e5c80 000100 dog_10_eye5_TA_tex_txt", -"001e5d80 000100 dog_10_eye6_TA_tex_txt", -"001e5e80 000100 dog_10_eye7_TA_tex_txt", -"001e5f80 000100 dog_10_eye8_TA_tex_txt", -"001e6080 000100 dog_10_mouth1_TA_tex_txt", -"001e6180 000100 dog_10_mouth2_TA_tex_txt", -"001e6280 000100 dog_10_mouth3_TA_tex_txt", -"001e6380 000100 dog_10_mouth4_TA_tex_txt", -"001e6480 000100 dog_10_mouth5_TA_tex_txt", -"001e6580 000100 dog_10_mouth6_TA_tex_txt", -"001e6680 000400 dog_10_tmem_txt", -"", -"001e6a80 001860 seg_1_v", -"001e82e0 000198 head_seg_model", -"001e8478 000080 mouth_seg_model", -"001e84f8 0000c8 Rarm2_seg_model", -"001e85c0 000068 Rarm1_seg_model", -"001e8628 0000c8 Larm2_seg_model", -"001e86f0 000068 Larm1_seg_model", -"001e8758 000108 chest_seg_model", -"001e8860 000080 tail1_seg_model", -"001e88e0 000088 tail2_seg_model", -"001e8968 000088 Rfoot3_seg_model", -"001e89f0 000080 Rfoot2_seg_model", -"001e8a70 000058 Rfoot1_seg_model", -"001e8ac8 000088 Lfoot3_seg_model", -"001e8b50 000080 Lfoot2_seg_model", -"001e8bd0 000058 Lfoot1_seg_model", -"001e8c28 000080 base_seg_model", -"001e8ca8 000138 cKF_je_r_seg_1_tbl", -"001e8de0 000008 cKF_bs_r_seg_1", -"", -"001e8e00 000020 seg_1_pal", -"001e8e20 000100 seg_1_eye1_TA_tex_txt", -"001e8f20 000100 seg_1_eye2_TA_tex_txt", -"001e9020 000100 seg_1_eye3_TA_tex_txt", -"001e9120 000100 seg_1_eye4_TA_tex_txt", -"001e9220 000100 seg_1_eye5_TA_tex_txt", -"001e9320 000100 seg_1_eye6_TA_tex_txt", -"001e9420 000100 seg_1_eye7_TA_tex_txt", -"001e9520 000100 seg_1_eye8_TA_tex_txt", -"001e9620 000640 seg_1_tmem_txt", -"", -"001e9c60 001580 duk_1_v", -"001eb1e0 000148 head_duk_model", -"001eb328 000090 mouth_duk_model", -"001eb3b8 000080 Rarm2_duk_model", -"001eb438 000078 Rarm1_duk_model", -"001eb4b0 000080 Larm2_duk_model", -"001eb530 000078 Larm1_duk_model", -"001eb5a8 0000c8 chest_duk_model", -"001eb670 000078 tail1_duk_model", -"001eb6e8 000088 Rfoot3_duk_model", -"001eb770 000080 Rfoot2_duk_model", -"001eb7f0 000058 Rfoot1_duk_model", -"001eb848 000088 Lfoot3_duk_model", -"001eb8d0 000080 Lfoot2_duk_model", -"001eb950 000058 Lfoot1_duk_model", -"001eb9a8 000088 base_duk_model", -"001eba30 000138 cKF_je_r_duk_1_tbl", -"001ebb68 000008 cKF_bs_r_duk_1", -"", -"001ebb80 000020 duk_1_pal", -"001ebba0 000100 duk_1_eye1_TA_tex_txt", -"001ebca0 000100 duk_1_eye2_TA_tex_txt", -"001ebda0 000100 duk_1_eye3_TA_tex_txt", -"001ebea0 000100 duk_1_eye4_TA_tex_txt", -"001ebfa0 000100 duk_1_eye5_TA_tex_txt", -"001ec0a0 000100 duk_1_eye6_TA_tex_txt", -"001ec1a0 000100 duk_1_eye7_TA_tex_txt", -"001ec2a0 000100 duk_1_eye8_TA_tex_txt", -"001ec3a0 000100 duk_1_mouth1_TA_tex_txt", -"001ec4a0 000100 duk_1_mouth2_TA_tex_txt", -"001ec5a0 000100 duk_1_mouth3_TA_tex_txt", -"001ec6a0 000100 duk_1_mouth4_TA_tex_txt", -"001ec7a0 000100 duk_1_mouth5_TA_tex_txt", -"001ec8a0 000100 duk_1_mouth6_TA_tex_txt", -"001ec9a0 000400 duk_1_tmem_txt", -"", -"001ecda0 000020 duk_2_pal", -"001ecdc0 000100 duk_2_eye1_TA_tex_txt", -"001ecec0 000100 duk_2_eye2_TA_tex_txt", -"001ecfc0 000100 duk_2_eye3_TA_tex_txt", -"001ed0c0 000100 duk_2_eye4_TA_tex_txt", -"001ed1c0 000100 duk_2_eye5_TA_tex_txt", -"001ed2c0 000100 duk_2_eye6_TA_tex_txt", -"001ed3c0 000100 duk_2_eye7_TA_tex_txt", -"001ed4c0 000100 duk_2_eye8_TA_tex_txt", -"001ed5c0 000100 duk_2_mouth1_TA_tex_txt", -"001ed6c0 000100 duk_2_mouth2_TA_tex_txt", -"001ed7c0 000100 duk_2_mouth3_TA_tex_txt", -"001ed8c0 000100 duk_2_mouth4_TA_tex_txt", -"001ed9c0 000100 duk_2_mouth5_TA_tex_txt", -"001edac0 000100 duk_2_mouth6_TA_tex_txt", -"001edbc0 000400 duk_2_tmem_txt", -"", -"001edfc0 000020 duk_11_pal", -"001edfe0 000100 duk_11_eye1_TA_tex_txt", -"001ee0e0 000100 duk_11_eye2_TA_tex_txt", -"001ee1e0 000100 duk_11_eye3_TA_tex_txt", -"001ee2e0 000100 duk_11_eye4_TA_tex_txt", -"001ee3e0 000100 duk_11_eye5_TA_tex_txt", -"001ee4e0 000100 duk_11_eye6_TA_tex_txt", -"001ee5e0 000100 duk_11_eye7_TA_tex_txt", -"001ee6e0 000100 duk_11_eye8_TA_tex_txt", -"001ee7e0 000100 duk_11_mouth1_TA_tex_txt", -"001ee8e0 000100 duk_11_mouth2_TA_tex_txt", -"001ee9e0 000100 duk_11_mouth3_TA_tex_txt", -"001eeae0 000100 duk_11_mouth4_TA_tex_txt", -"001eebe0 000100 duk_11_mouth5_TA_tex_txt", -"001eece0 000100 duk_11_mouth6_TA_tex_txt", -"001eede0 000400 duk_11_tmem_txt", -"", -"001ef1e0 000020 duk_3_pal", -"001ef200 000100 duk_3_eye1_TA_tex_txt", -"001ef300 000100 duk_3_eye2_TA_tex_txt", -"001ef400 000100 duk_3_eye3_TA_tex_txt", -"001ef500 000100 duk_3_eye4_TA_tex_txt", -"001ef600 000100 duk_3_eye5_TA_tex_txt", -"001ef700 000100 duk_3_eye6_TA_tex_txt", -"001ef800 000100 duk_3_eye7_TA_tex_txt", -"001ef900 000100 duk_3_eye8_TA_tex_txt", -"001efa00 000100 duk_3_mouth1_TA_tex_txt", -"001efb00 000100 duk_3_mouth2_TA_tex_txt", -"001efc00 000100 duk_3_mouth3_TA_tex_txt", -"001efd00 000100 duk_3_mouth4_TA_tex_txt", -"001efe00 000100 duk_3_mouth5_TA_tex_txt", -"001eff00 000100 duk_3_mouth6_TA_tex_txt", -"001f0000 000400 duk_3_tmem_txt", -"", -"001f0400 000020 duk_4_pal", -"001f0420 000100 duk_4_eye1_TA_tex_txt", -"001f0520 000100 duk_4_eye2_TA_tex_txt", -"001f0620 000100 duk_4_eye3_TA_tex_txt", -"001f0720 000100 duk_4_eye4_TA_tex_txt", -"001f0820 000100 duk_4_eye5_TA_tex_txt", -"001f0920 000100 duk_4_eye6_TA_tex_txt", -"001f0a20 000100 duk_4_eye7_TA_tex_txt", -"001f0b20 000100 duk_4_eye8_TA_tex_txt", -"001f0c20 000100 duk_4_mouth1_TA_tex_txt", -"001f0d20 000100 duk_4_mouth2_TA_tex_txt", -"001f0e20 000100 duk_4_mouth3_TA_tex_txt", -"001f0f20 000100 duk_4_mouth4_TA_tex_txt", -"001f1020 000100 duk_4_mouth5_TA_tex_txt", -"001f1120 000100 duk_4_mouth6_TA_tex_txt", -"001f1220 000400 duk_4_tmem_txt", -"", -"001f1620 000020 duk_5_pal", -"001f1640 000100 duk_5_eye1_TA_tex_txt", -"001f1740 000100 duk_5_eye2_TA_tex_txt", -"001f1840 000100 duk_5_eye3_TA_tex_txt", -"001f1940 000100 duk_5_eye4_TA_tex_txt", -"001f1a40 000100 duk_5_eye5_TA_tex_txt", -"001f1b40 000100 duk_5_eye6_TA_tex_txt", -"001f1c40 000100 duk_5_eye7_TA_tex_txt", -"001f1d40 000100 duk_5_eye8_TA_tex_txt", -"001f1e40 000100 duk_5_mouth1_TA_tex_txt", -"001f1f40 000100 duk_5_mouth2_TA_tex_txt", -"001f2040 000100 duk_5_mouth3_TA_tex_txt", -"001f2140 000100 duk_5_mouth4_TA_tex_txt", -"001f2240 000100 duk_5_mouth5_TA_tex_txt", -"001f2340 000100 duk_5_mouth6_TA_tex_txt", -"001f2440 000400 duk_5_tmem_txt", -"", -"001f2840 000020 duk_6_pal", -"001f2860 000100 duk_6_eye1_TA_tex_txt", -"001f2960 000100 duk_6_eye2_TA_tex_txt", -"001f2a60 000100 duk_6_eye3_TA_tex_txt", -"001f2b60 000100 duk_6_eye4_TA_tex_txt", -"001f2c60 000100 duk_6_eye5_TA_tex_txt", -"001f2d60 000100 duk_6_eye6_TA_tex_txt", -"001f2e60 000100 duk_6_eye7_TA_tex_txt", -"001f2f60 000100 duk_6_eye8_TA_tex_txt", -"001f3060 000100 duk_6_mouth1_TA_tex_txt", -"001f3160 000100 duk_6_mouth2_TA_tex_txt", -"001f3260 000100 duk_6_mouth3_TA_tex_txt", -"001f3360 000100 duk_6_mouth4_TA_tex_txt", -"001f3460 000100 duk_6_mouth5_TA_tex_txt", -"001f3560 000100 duk_6_mouth6_TA_tex_txt", -"001f3660 000400 duk_6_tmem_txt", -"", -"001f3a60 000020 duk_7_pal", -"001f3a80 000100 duk_7_eye1_TA_tex_txt", -"001f3b80 000100 duk_7_eye2_TA_tex_txt", -"001f3c80 000100 duk_7_eye3_TA_tex_txt", -"001f3d80 000100 duk_7_eye4_TA_tex_txt", -"001f3e80 000100 duk_7_eye5_TA_tex_txt", -"001f3f80 000100 duk_7_eye6_TA_tex_txt", -"001f4080 000100 duk_7_eye7_TA_tex_txt", -"001f4180 000100 duk_7_eye8_TA_tex_txt", -"001f4280 000100 duk_7_mouth1_TA_tex_txt", -"001f4380 000100 duk_7_mouth2_TA_tex_txt", -"001f4480 000100 duk_7_mouth3_TA_tex_txt", -"001f4580 000100 duk_7_mouth4_TA_tex_txt", -"001f4680 000100 duk_7_mouth5_TA_tex_txt", -"001f4780 000100 duk_7_mouth6_TA_tex_txt", -"001f4880 000400 duk_7_tmem_txt", -"", -"001f4c80 000020 duk_8_pal", -"001f4ca0 000100 duk_8_eye1_TA_tex_txt", -"001f4da0 000100 duk_8_eye2_TA_tex_txt", -"001f4ea0 000100 duk_8_eye3_TA_tex_txt", -"001f4fa0 000100 duk_8_eye4_TA_tex_txt", -"001f50a0 000100 duk_8_eye5_TA_tex_txt", -"001f51a0 000100 duk_8_eye6_TA_tex_txt", -"001f52a0 000100 duk_8_eye7_TA_tex_txt", -"001f53a0 000100 duk_8_eye8_TA_tex_txt", -"001f54a0 000100 duk_8_mouth1_TA_tex_txt", -"001f55a0 000100 duk_8_mouth2_TA_tex_txt", -"001f56a0 000100 duk_8_mouth3_TA_tex_txt", -"001f57a0 000100 duk_8_mouth4_TA_tex_txt", -"001f58a0 000100 duk_8_mouth5_TA_tex_txt", -"001f59a0 000100 duk_8_mouth6_TA_tex_txt", -"001f5aa0 000400 duk_8_tmem_txt", -"", -"001f5ea0 000020 duk_9_pal", -"001f5ec0 000100 duk_9_eye1_TA_tex_txt", -"001f5fc0 000100 duk_9_eye2_TA_tex_txt", -"001f60c0 000100 duk_9_eye3_TA_tex_txt", -"001f61c0 000100 duk_9_eye4_TA_tex_txt", -"001f62c0 000100 duk_9_eye5_TA_tex_txt", -"001f63c0 000100 duk_9_eye6_TA_tex_txt", -"001f64c0 000100 duk_9_eye7_TA_tex_txt", -"001f65c0 000100 duk_9_eye8_TA_tex_txt", -"001f66c0 000100 duk_9_mouth1_TA_tex_txt", -"001f67c0 000100 duk_9_mouth2_TA_tex_txt", -"001f68c0 000100 duk_9_mouth3_TA_tex_txt", -"001f69c0 000100 duk_9_mouth4_TA_tex_txt", -"001f6ac0 000100 duk_9_mouth5_TA_tex_txt", -"001f6bc0 000100 duk_9_mouth6_TA_tex_txt", -"001f6cc0 000400 duk_9_tmem_txt", -"", -"001f70c0 000020 duk_10_pal", -"001f70e0 000100 duk_10_eye1_TA_tex_txt", -"001f71e0 000100 duk_10_eye2_TA_tex_txt", -"001f72e0 000100 duk_10_eye3_TA_tex_txt", -"001f73e0 000100 duk_10_eye4_TA_tex_txt", -"001f74e0 000100 duk_10_eye5_TA_tex_txt", -"001f75e0 000100 duk_10_eye6_TA_tex_txt", -"001f76e0 000100 duk_10_eye7_TA_tex_txt", -"001f77e0 000100 duk_10_eye8_TA_tex_txt", -"001f78e0 000100 duk_10_mouth1_TA_tex_txt", -"001f79e0 000100 duk_10_mouth2_TA_tex_txt", -"001f7ae0 000100 duk_10_mouth3_TA_tex_txt", -"001f7be0 000100 duk_10_mouth4_TA_tex_txt", -"001f7ce0 000100 duk_10_mouth5_TA_tex_txt", -"001f7de0 000100 duk_10_mouth6_TA_tex_txt", -"001f7ee0 000400 duk_10_tmem_txt", -"", -"001f8330 0017c0 elp_1_v", -"001f9af0 0001c0 head_elp_model", -"001f9cb0 000090 mouth_elp_model", -"001f9d40 000088 Rarm2_elp_model", -"001f9dc8 000078 Rarm1_elp_model", -"001f9e40 000088 Larm2_elp_model", -"001f9ec8 000078 Larm1_elp_model", -"001f9f40 0000a0 chest_elp_model", -"001f9fe0 000058 tail1_elp_model", -"001fa038 000090 tail2_elp_model", -"001fa0c8 000090 Rfoot2_elp_model", -"001fa158 000080 Rfoot1_elp_model", -"001fa1d8 000090 Lfoot2_elp_model", -"001fa268 000080 Lfoot1_elp_model", -"001fa2e8 000078 base_elp_model", -"001fa360 000138 cKF_je_r_elp_1_tbl", -"001fa498 000008 cKF_bs_r_elp_1", -"", -"001fa4a0 000020 elp_1_pal", -"001fa4c0 000100 elp_1_eye1_TA_tex_txt", -"001fa5c0 000100 elp_1_eye2_TA_tex_txt", -"001fa6c0 000100 elp_1_eye3_TA_tex_txt", -"001fa7c0 000100 elp_1_eye4_TA_tex_txt", -"001fa8c0 000100 elp_1_eye5_TA_tex_txt", -"001fa9c0 000100 elp_1_eye6_TA_tex_txt", -"001faac0 000100 elp_1_eye7_TA_tex_txt", -"001fabc0 000100 elp_1_eye8_TA_tex_txt", -"001facc0 000100 elp_1_mouth1_TA_tex_txt", -"001fadc0 000100 elp_1_mouth2_TA_tex_txt", -"001faec0 000100 elp_1_mouth3_TA_tex_txt", -"001fafc0 000100 elp_1_mouth4_TA_tex_txt", -"001fb0c0 000100 elp_1_mouth5_TA_tex_txt", -"001fb1c0 000100 elp_1_mouth6_TA_tex_txt", -"001fb2c0 000400 elp_1_tmem_txt", -"", -"001fb6c0 000020 elp_2_pal", -"001fb6e0 000100 elp_2_eye1_TA_tex_txt", -"001fb7e0 000100 elp_2_eye2_TA_tex_txt", -"001fb8e0 000100 elp_2_eye3_TA_tex_txt", -"001fb9e0 000100 elp_2_eye4_TA_tex_txt", -"001fbae0 000100 elp_2_eye5_TA_tex_txt", -"001fbbe0 000100 elp_2_eye6_TA_tex_txt", -"001fbce0 000100 elp_2_eye7_TA_tex_txt", -"001fbde0 000100 elp_2_eye8_TA_tex_txt", -"001fbee0 000100 elp_2_mouth1_TA_tex_txt", -"001fbfe0 000100 elp_2_mouth2_TA_tex_txt", -"001fc0e0 000100 elp_2_mouth3_TA_tex_txt", -"001fc1e0 000100 elp_2_mouth4_TA_tex_txt", -"001fc2e0 000100 elp_2_mouth5_TA_tex_txt", -"001fc3e0 000100 elp_2_mouth6_TA_tex_txt", -"001fc4e0 000400 elp_2_tmem_txt", -"", -"001fc8e0 000020 elp_3_pal", -"001fc900 000100 elp_3_eye1_TA_tex_txt", -"001fca00 000100 elp_3_eye2_TA_tex_txt", -"001fcb00 000100 elp_3_eye3_TA_tex_txt", -"001fcc00 000100 elp_3_eye4_TA_tex_txt", -"001fcd00 000100 elp_3_eye5_TA_tex_txt", -"001fce00 000100 elp_3_eye6_TA_tex_txt", -"001fcf00 000100 elp_3_eye7_TA_tex_txt", -"001fd000 000100 elp_3_eye8_TA_tex_txt", -"001fd100 000100 elp_3_mouth1_TA_tex_txt", -"001fd200 000100 elp_3_mouth2_TA_tex_txt", -"001fd300 000100 elp_3_mouth3_TA_tex_txt", -"001fd400 000100 elp_3_mouth4_TA_tex_txt", -"001fd500 000100 elp_3_mouth5_TA_tex_txt", -"001fd600 000100 elp_3_mouth6_TA_tex_txt", -"001fd700 000400 elp_3_tmem_txt", -"", -"001fdb00 000020 elp_4_pal", -"001fdb20 000100 elp_4_eye1_TA_tex_txt", -"001fdc20 000100 elp_4_eye2_TA_tex_txt", -"001fdd20 000100 elp_4_eye3_TA_tex_txt", -"001fde20 000100 elp_4_eye4_TA_tex_txt", -"001fdf20 000100 elp_4_eye5_TA_tex_txt", -"001fe020 000100 elp_4_eye6_TA_tex_txt", -"001fe120 000100 elp_4_eye7_TA_tex_txt", -"001fe220 000100 elp_4_eye8_TA_tex_txt", -"001fe320 000100 elp_4_mouth1_TA_tex_txt", -"001fe420 000100 elp_4_mouth2_TA_tex_txt", -"001fe520 000100 elp_4_mouth3_TA_tex_txt", -"001fe620 000100 elp_4_mouth4_TA_tex_txt", -"001fe720 000100 elp_4_mouth5_TA_tex_txt", -"001fe820 000100 elp_4_mouth6_TA_tex_txt", -"001fe920 000400 elp_4_tmem_txt", -"", -"001fed20 000020 elp_5_pal", -"001fed40 000100 elp_5_eye1_TA_tex_txt", -"001fee40 000100 elp_5_eye2_TA_tex_txt", -"001fef40 000100 elp_5_eye3_TA_tex_txt", -"001ff040 000100 elp_5_eye4_TA_tex_txt", -"001ff140 000100 elp_5_eye5_TA_tex_txt", -"001ff240 000100 elp_5_eye6_TA_tex_txt", -"001ff340 000100 elp_5_eye7_TA_tex_txt", -"001ff440 000100 elp_5_eye8_TA_tex_txt", -"001ff540 000100 elp_5_mouth1_TA_tex_txt", -"001ff640 000100 elp_5_mouth2_TA_tex_txt", -"001ff740 000100 elp_5_mouth3_TA_tex_txt", -"001ff840 000100 elp_5_mouth4_TA_tex_txt", -"001ff940 000100 elp_5_mouth5_TA_tex_txt", -"001ffa40 000100 elp_5_mouth6_TA_tex_txt", -"001ffb40 000400 elp_5_tmem_txt", -"", -"001fff40 000020 elp_6_pal", -"001fff60 000100 elp_6_eye1_TA_tex_txt", -"00200060 000100 elp_6_eye2_TA_tex_txt", -"00200160 000100 elp_6_eye3_TA_tex_txt", -"00200260 000100 elp_6_eye4_TA_tex_txt", -"00200360 000100 elp_6_eye5_TA_tex_txt", -"00200460 000100 elp_6_eye6_TA_tex_txt", -"00200560 000100 elp_6_eye7_TA_tex_txt", -"00200660 000100 elp_6_eye8_TA_tex_txt", -"00200760 000100 elp_6_mouth1_TA_tex_txt", -"00200860 000100 elp_6_mouth2_TA_tex_txt", -"00200960 000100 elp_6_mouth3_TA_tex_txt", -"00200a60 000100 elp_6_mouth4_TA_tex_txt", -"00200b60 000100 elp_6_mouth5_TA_tex_txt", -"00200c60 000100 elp_6_mouth6_TA_tex_txt", -"00200d60 000400 elp_6_tmem_txt", -"", -"00201160 000020 elp_7_pal", -"00201180 000100 elp_7_eye1_TA_tex_txt", -"00201280 000100 elp_7_eye2_TA_tex_txt", -"00201380 000100 elp_7_eye3_TA_tex_txt", -"00201480 000100 elp_7_eye4_TA_tex_txt", -"00201580 000100 elp_7_eye5_TA_tex_txt", -"00201680 000100 elp_7_eye6_TA_tex_txt", -"00201780 000100 elp_7_eye7_TA_tex_txt", -"00201880 000100 elp_7_eye8_TA_tex_txt", -"00201980 000100 elp_7_mouth1_TA_tex_txt", -"00201a80 000100 elp_7_mouth2_TA_tex_txt", -"00201b80 000100 elp_7_mouth3_TA_tex_txt", -"00201c80 000100 elp_7_mouth4_TA_tex_txt", -"00201d80 000100 elp_7_mouth5_TA_tex_txt", -"00201e80 000100 elp_7_mouth6_TA_tex_txt", -"00201f80 000400 elp_7_tmem_txt", -"", -"0020a880 001240 flg_1_v", -"0020bac0 000148 head_flg_model", -"0020bc08 000088 Rarm2_flg_model", -"0020bc90 000078 Rarm1_flg_model", -"0020bd08 000088 Larm2_flg_model", -"0020bd90 000078 Larm1_flg_model", -"0020be08 0000a8 chest_flg_model", -"0020beb0 000080 Rfoot2_flg_model", -"0020bf30 0000c0 Rfoot1_flg_model", -"0020bff0 000080 Lfoot2_flg_model", -"0020c070 0000c0 Lfoot1_flg_model", -"0020c130 000070 base_flg_model", -"0020c1a0 000138 cKF_je_r_flg_1_tbl", -"0020c2d8 000008 cKF_bs_r_flg_1", -"", -"0020c2e0 000020 flg_1_pal", -"0020c300 000100 flg_1_eye1_TA_tex_txt", -"0020c400 000100 flg_1_eye2_TA_tex_txt", -"0020c500 000100 flg_1_eye3_TA_tex_txt", -"0020c600 000100 flg_1_eye4_TA_tex_txt", -"0020c700 000100 flg_1_eye5_TA_tex_txt", -"0020c800 000100 flg_1_eye6_TA_tex_txt", -"0020c900 000100 flg_1_eye7_TA_tex_txt", -"0020ca00 000100 flg_1_eye8_TA_tex_txt", -"0020cb00 000100 flg_1_mouth1_TA_tex_txt", -"0020cc00 000100 flg_1_mouth2_TA_tex_txt", -"0020cd00 000100 flg_1_mouth3_TA_tex_txt", -"0020ce00 000100 flg_1_mouth4_TA_tex_txt", -"0020cf00 000100 flg_1_mouth5_TA_tex_txt", -"0020d000 000100 flg_1_mouth6_TA_tex_txt", -"0020d100 000400 flg_1_tmem_txt", -"", -"0020d500 000020 flg_2_pal", -"0020d520 000100 flg_2_eye1_TA_tex_txt", -"0020d620 000100 flg_2_eye2_TA_tex_txt", -"0020d720 000100 flg_2_eye3_TA_tex_txt", -"0020d820 000100 flg_2_eye4_TA_tex_txt", -"0020d920 000100 flg_2_eye5_TA_tex_txt", -"0020da20 000100 flg_2_eye6_TA_tex_txt", -"0020db20 000100 flg_2_eye7_TA_tex_txt", -"0020dc20 000100 flg_2_eye8_TA_tex_txt", -"0020dd20 000100 flg_2_mouth1_TA_tex_txt", -"0020de20 000100 flg_2_mouth2_TA_tex_txt", -"0020df20 000100 flg_2_mouth3_TA_tex_txt", -"0020e020 000100 flg_2_mouth4_TA_tex_txt", -"0020e120 000100 flg_2_mouth5_TA_tex_txt", -"0020e220 000100 flg_2_mouth6_TA_tex_txt", -"0020e320 000400 flg_2_tmem_txt", -"", -"0020e720 000020 flg_11_pal", -"0020e740 000100 flg_11_eye1_TA_tex_txt", -"0020e840 000100 flg_11_eye2_TA_tex_txt", -"0020e940 000100 flg_11_eye3_TA_tex_txt", -"0020ea40 000100 flg_11_eye4_TA_tex_txt", -"0020eb40 000100 flg_11_eye5_TA_tex_txt", -"0020ec40 000100 flg_11_eye6_TA_tex_txt", -"0020ed40 000100 flg_11_eye7_TA_tex_txt", -"0020ee40 000100 flg_11_eye8_TA_tex_txt", -"0020ef40 000100 flg_11_mouth1_TA_tex_txt", -"0020f040 000100 flg_11_mouth2_TA_tex_txt", -"0020f140 000100 flg_11_mouth3_TA_tex_txt", -"0020f240 000100 flg_11_mouth4_TA_tex_txt", -"0020f340 000100 flg_11_mouth5_TA_tex_txt", -"0020f440 000100 flg_11_mouth6_TA_tex_txt", -"0020f540 000400 flg_11_tmem_txt", -"", -"0020f940 000020 flg_12_pal", -"0020f960 000100 flg_12_eye1_TA_tex_txt", -"0020fa60 000100 flg_12_eye2_TA_tex_txt", -"0020fb60 000100 flg_12_eye3_TA_tex_txt", -"0020fc60 000100 flg_12_eye4_TA_tex_txt", -"0020fd60 000100 flg_12_eye5_TA_tex_txt", -"0020fe60 000100 flg_12_eye6_TA_tex_txt", -"0020ff60 000100 flg_12_eye7_TA_tex_txt", -"00210060 000100 flg_12_eye8_TA_tex_txt", -"00210160 000100 flg_12_mouth1_TA_tex_txt", -"00210260 000100 flg_12_mouth2_TA_tex_txt", -"00210360 000100 flg_12_mouth3_TA_tex_txt", -"00210460 000100 flg_12_mouth4_TA_tex_txt", -"00210560 000100 flg_12_mouth5_TA_tex_txt", -"00210660 000100 flg_12_mouth6_TA_tex_txt", -"00210760 000380 flg_12_tmem_txt", -"", -"00210ae0 000020 flg_13_pal", -"00210b00 000100 flg_13_eye1_TA_tex_txt", -"00210c00 000100 flg_13_eye2_TA_tex_txt", -"00210d00 000100 flg_13_eye3_TA_tex_txt", -"00210e00 000100 flg_13_eye4_TA_tex_txt", -"00210f00 000100 flg_13_eye5_TA_tex_txt", -"00211000 000100 flg_13_eye6_TA_tex_txt", -"00211100 000100 flg_13_eye7_TA_tex_txt", -"00211200 000100 flg_13_eye8_TA_tex_txt", -"00211300 000100 flg_13_mouth1_TA_tex_txt", -"00211400 000100 flg_13_mouth2_TA_tex_txt", -"00211500 000100 flg_13_mouth3_TA_tex_txt", -"00211600 000100 flg_13_mouth4_TA_tex_txt", -"00211700 000100 flg_13_mouth5_TA_tex_txt", -"00211800 000100 flg_13_mouth6_TA_tex_txt", -"00211900 000400 flg_13_tmem_txt", -"", -"00211d00 000020 flg_3_pal", -"00211d20 000100 flg_3_eye1_TA_tex_txt", -"00211e20 000100 flg_3_eye2_TA_tex_txt", -"00211f20 000100 flg_3_eye3_TA_tex_txt", -"00212020 000100 flg_3_eye4_TA_tex_txt", -"00212120 000100 flg_3_eye5_TA_tex_txt", -"00212220 000100 flg_3_eye6_TA_tex_txt", -"00212320 000100 flg_3_eye7_TA_tex_txt", -"00212420 000100 flg_3_eye8_TA_tex_txt", -"00212520 000100 flg_3_mouth1_TA_tex_txt", -"00212620 000100 flg_3_mouth2_TA_tex_txt", -"00212720 000100 flg_3_mouth3_TA_tex_txt", -"00212820 000100 flg_3_mouth4_TA_tex_txt", -"00212920 000100 flg_3_mouth5_TA_tex_txt", -"00212a20 000100 flg_3_mouth6_TA_tex_txt", -"00212b20 000400 flg_3_tmem_txt", -"", -"00212f20 000020 flg_4_pal", -"00212f40 000100 flg_4_eye1_TA_tex_txt", -"00213040 000100 flg_4_eye2_TA_tex_txt", -"00213140 000100 flg_4_eye3_TA_tex_txt", -"00213240 000100 flg_4_eye4_TA_tex_txt", -"00213340 000100 flg_4_eye5_TA_tex_txt", -"00213440 000100 flg_4_eye6_TA_tex_txt", -"00213540 000100 flg_4_eye7_TA_tex_txt", -"00213640 000100 flg_4_eye8_TA_tex_txt", -"00213740 000100 flg_4_mouth1_TA_tex_txt", -"00213840 000100 flg_4_mouth2_TA_tex_txt", -"00213940 000100 flg_4_mouth3_TA_tex_txt", -"00213a40 000100 flg_4_mouth4_TA_tex_txt", -"00213b40 000100 flg_4_mouth5_TA_tex_txt", -"00213c40 000100 flg_4_mouth6_TA_tex_txt", -"00213d40 000400 flg_4_tmem_txt", -"", -"00214140 000020 flg_5_pal", -"00214160 000100 flg_5_eye1_TA_tex_txt", -"00214260 000100 flg_5_eye2_TA_tex_txt", -"00214360 000100 flg_5_eye3_TA_tex_txt", -"00214460 000100 flg_5_eye4_TA_tex_txt", -"00214560 000100 flg_5_eye5_TA_tex_txt", -"00214660 000100 flg_5_eye6_TA_tex_txt", -"00214760 000100 flg_5_eye7_TA_tex_txt", -"00214860 000100 flg_5_eye8_TA_tex_txt", -"00214960 000100 flg_5_mouth1_TA_tex_txt", -"00214a60 000100 flg_5_mouth2_TA_tex_txt", -"00214b60 000100 flg_5_mouth3_TA_tex_txt", -"00214c60 000100 flg_5_mouth4_TA_tex_txt", -"00214d60 000100 flg_5_mouth5_TA_tex_txt", -"00214e60 000100 flg_5_mouth6_TA_tex_txt", -"00214f60 000400 flg_5_tmem_txt", -"", -"00215360 000020 flg_6_pal", -"00215380 000100 flg_6_eye1_TA_tex_txt", -"00215480 000100 flg_6_eye2_TA_tex_txt", -"00215580 000100 flg_6_eye3_TA_tex_txt", -"00215680 000100 flg_6_eye4_TA_tex_txt", -"00215780 000100 flg_6_eye5_TA_tex_txt", -"00215880 000100 flg_6_eye6_TA_tex_txt", -"00215980 000100 flg_6_eye7_TA_tex_txt", -"00215a80 000100 flg_6_eye8_TA_tex_txt", -"00215b80 000100 flg_6_mouth1_TA_tex_txt", -"00215c80 000100 flg_6_mouth2_TA_tex_txt", -"00215d80 000100 flg_6_mouth3_TA_tex_txt", -"00215e80 000100 flg_6_mouth4_TA_tex_txt", -"00215f80 000100 flg_6_mouth5_TA_tex_txt", -"00216080 000100 flg_6_mouth6_TA_tex_txt", -"00216180 000400 flg_6_tmem_txt", -"", -"00216580 000020 flg_7_pal", -"002165a0 000100 flg_7_eye1_TA_tex_txt", -"002166a0 000100 flg_7_eye2_TA_tex_txt", -"002167a0 000100 flg_7_eye3_TA_tex_txt", -"002168a0 000100 flg_7_eye4_TA_tex_txt", -"002169a0 000100 flg_7_eye5_TA_tex_txt", -"00216aa0 000100 flg_7_eye6_TA_tex_txt", -"00216ba0 000100 flg_7_eye7_TA_tex_txt", -"00216ca0 000100 flg_7_eye8_TA_tex_txt", -"00216da0 000100 flg_7_mouth1_TA_tex_txt", -"00216ea0 000100 flg_7_mouth2_TA_tex_txt", -"00216fa0 000100 flg_7_mouth3_TA_tex_txt", -"002170a0 000100 flg_7_mouth4_TA_tex_txt", -"002171a0 000100 flg_7_mouth5_TA_tex_txt", -"002172a0 000100 flg_7_mouth6_TA_tex_txt", -"002173a0 000400 flg_7_tmem_txt", -"", -"002177a0 000020 flg_8_pal", -"002177c0 000100 flg_8_eye1_TA_tex_txt", -"002178c0 000100 flg_8_eye2_TA_tex_txt", -"002179c0 000100 flg_8_eye3_TA_tex_txt", -"00217ac0 000100 flg_8_eye4_TA_tex_txt", -"00217bc0 000100 flg_8_eye5_TA_tex_txt", -"00217cc0 000100 flg_8_eye6_TA_tex_txt", -"00217dc0 000100 flg_8_eye7_TA_tex_txt", -"00217ec0 000100 flg_8_eye8_TA_tex_txt", -"00217fc0 000100 flg_8_mouth1_TA_tex_txt", -"002180c0 000100 flg_8_mouth2_TA_tex_txt", -"002181c0 000100 flg_8_mouth3_TA_tex_txt", -"002182c0 000100 flg_8_mouth4_TA_tex_txt", -"002183c0 000100 flg_8_mouth5_TA_tex_txt", -"002184c0 000100 flg_8_mouth6_TA_tex_txt", -"002185c0 000400 flg_8_tmem_txt", -"", -"002189c0 000020 flg_9_pal", -"002189e0 000100 flg_9_eye1_TA_tex_txt", -"00218ae0 000100 flg_9_eye2_TA_tex_txt", -"00218be0 000100 flg_9_eye3_TA_tex_txt", -"00218ce0 000100 flg_9_eye4_TA_tex_txt", -"00218de0 000100 flg_9_eye5_TA_tex_txt", -"00218ee0 000100 flg_9_eye6_TA_tex_txt", -"00218fe0 000100 flg_9_eye7_TA_tex_txt", -"002190e0 000100 flg_9_eye8_TA_tex_txt", -"002191e0 000100 flg_9_mouth1_TA_tex_txt", -"002192e0 000100 flg_9_mouth2_TA_tex_txt", -"002193e0 000100 flg_9_mouth3_TA_tex_txt", -"002194e0 000100 flg_9_mouth4_TA_tex_txt", -"002195e0 000100 flg_9_mouth5_TA_tex_txt", -"002196e0 000100 flg_9_mouth6_TA_tex_txt", -"002197e0 000400 flg_9_tmem_txt", -"", -"00219be0 000020 flg_10_pal", -"00219c00 000100 flg_10_eye1_TA_tex_txt", -"00219d00 000100 flg_10_eye2_TA_tex_txt", -"00219e00 000100 flg_10_eye3_TA_tex_txt", -"00219f00 000100 flg_10_eye4_TA_tex_txt", -"0021a000 000100 flg_10_eye5_TA_tex_txt", -"0021a100 000100 flg_10_eye6_TA_tex_txt", -"0021a200 000100 flg_10_eye7_TA_tex_txt", -"0021a300 000100 flg_10_eye8_TA_tex_txt", -"0021a400 000100 flg_10_mouth1_TA_tex_txt", -"0021a500 000100 flg_10_mouth2_TA_tex_txt", -"0021a600 000100 flg_10_mouth3_TA_tex_txt", -"0021a700 000100 flg_10_mouth4_TA_tex_txt", -"0021a800 000100 flg_10_mouth5_TA_tex_txt", -"0021a900 000100 flg_10_mouth6_TA_tex_txt", -"0021aa00 000400 flg_10_tmem_txt", -"", -"0021ae00 001b30 rcf_1_v", -"0021c930 000230 head_rcf_model", -"0021cb60 000078 mouth_rcf_model", -"0021cbd8 0000e0 hand_rcf_model", -"0021ccb8 000088 Rarm2_rcf_model", -"0021cd40 000078 Rarm1_rcf_model", -"0021cdb8 000088 Larm2_rcf_model", -"0021ce40 000078 Larm1_rcf_model", -"0021ceb8 000108 chest_rcf_model", -"0021cfc0 000078 tail1_rcf_model", -"0021d038 0000a0 tail2_rcf_model", -"0021d0d8 000080 Rfoot2_rcf_model", -"0021d158 000058 Rfoot1_rcf_model", -"0021d1b0 000080 Lfoot2_rcf_model", -"0021d230 000058 Lfoot1_rcf_model", -"0021d288 0000d8 base_rcf_model", -"0021d360 000138 cKF_je_r_rcf_1_tbl", -"0021d498 000008 cKF_bs_r_rcf_1", -"", -"0021d4a0 000020 rcf_1_pal", -"0021d4c0 000100 rcf_1_eye1_TA_tex_txt", -"0021d5c0 000100 rcf_1_eye2_TA_tex_txt", -"0021d6c0 000100 rcf_1_eye3_TA_tex_txt", -"0021d7c0 000100 rcf_1_eye4_TA_tex_txt", -"0021d8c0 000100 rcf_1_eye5_TA_tex_txt", -"0021d9c0 000100 rcf_1_eye6_TA_tex_txt", -"0021dac0 000100 rcf_1_eye7_TA_tex_txt", -"0021dbc0 000100 rcf_1_eye8_TA_tex_txt", -"0021dcc0 000700 rcf_1_tmem_txt", -"", -"0021f608 001110 gst_1_v", -"00220718 000218 head_gst_model", -"00220930 000050 feel_gst_model", -"00220980 0000a8 chest_gst_model", -"00220a28 0000a8 tail1_gst_model", -"00220ad0 000070 base_gst_model", -"00220b40 000138 cKF_je_r_gst_1_tbl", -"00220c78 000008 cKF_bs_r_gst_1", -"", -"00220c80 000020 gst_1_pal", -"00220ca0 000100 gst_1_eye1_TA_tex_txt", -"00220da0 000100 gst_1_eye2_TA_tex_txt", -"00220ea0 000100 gst_1_eye3_TA_tex_txt", -"00220fa0 000100 gst_1_eye4_TA_tex_txt", -"002210a0 000100 gst_1_eye5_TA_tex_txt", -"002211a0 000100 gst_1_eye6_TA_tex_txt", -"002212a0 000100 gst_1_eye7_TA_tex_txt", -"002213a0 000100 gst_1_eye8_TA_tex_txt", -"002214a0 000100 gst_1_mouth1_TA_tex_txt", -"002215a0 000100 gst_1_mouth2_TA_tex_txt", -"002216a0 000100 gst_1_mouth3_TA_tex_txt", -"002217a0 000100 gst_1_mouth4_TA_tex_txt", -"002218a0 000100 gst_1_mouth5_TA_tex_txt", -"002219a0 000100 gst_1_mouth6_TA_tex_txt", -"00221aa0 000180 gst_1_tmem_txt", -"", -"00224230 001640 goa_1_v", -"00225870 000220 head_goa_model", -"00225a90 000070 mouth_goa_model", -"00225b00 000088 Rarm2_goa_model", -"00225b88 000078 Rarm1_goa_model", -"00225c00 000088 Larm2_goa_model", -"00225c88 000078 Larm1_goa_model", -"00225d00 0000a0 chest_goa_model", -"00225da0 000060 tail1_goa_model", -"00225e00 000080 Rfoot2_goa_model", -"00225e80 000080 Rfoot1_goa_model", -"00225f00 000080 Lfoot2_goa_model", -"00225f80 000080 Lfoot1_goa_model", -"00226000 0000a8 base_goa_model", -"002260a8 000138 cKF_je_r_goa_1_tbl", -"002261e0 000008 cKF_bs_r_goa_1", -"", -"00226200 000020 goa_1_pal", -"00226220 000100 goa_1_eye1_TA_tex_txt", -"00226320 000100 goa_1_eye2_TA_tex_txt", -"00226420 000100 goa_1_eye3_TA_tex_txt", -"00226520 000100 goa_1_eye4_TA_tex_txt", -"00226620 000100 goa_1_eye5_TA_tex_txt", -"00226720 000100 goa_1_eye6_TA_tex_txt", -"00226820 000100 goa_1_eye7_TA_tex_txt", -"00226920 000100 goa_1_eye8_TA_tex_txt", -"00226a20 000100 goa_1_mouth1_TA_tex_txt", -"00226b20 000100 goa_1_mouth2_TA_tex_txt", -"00226c20 000100 goa_1_mouth3_TA_tex_txt", -"00226d20 000100 goa_1_mouth4_TA_tex_txt", -"00226e20 000100 goa_1_mouth5_TA_tex_txt", -"00226f20 000100 goa_1_mouth6_TA_tex_txt", -"00227020 000400 goa_1_tmem_txt", -"", -"00227420 000020 goa_2_pal", -"00227440 000100 goa_2_eye1_TA_tex_txt", -"00227540 000100 goa_2_eye2_TA_tex_txt", -"00227640 000100 goa_2_eye3_TA_tex_txt", -"00227740 000100 goa_2_eye4_TA_tex_txt", -"00227840 000100 goa_2_eye5_TA_tex_txt", -"00227940 000100 goa_2_eye6_TA_tex_txt", -"00227a40 000100 goa_2_eye7_TA_tex_txt", -"00227b40 000100 goa_2_eye8_TA_tex_txt", -"00227c40 000100 goa_2_mouth1_TA_tex_txt", -"00227d40 000100 goa_2_mouth2_TA_tex_txt", -"00227e40 000100 goa_2_mouth3_TA_tex_txt", -"00227f40 000100 goa_2_mouth4_TA_tex_txt", -"00228040 000100 goa_2_mouth5_TA_tex_txt", -"00228140 000100 goa_2_mouth6_TA_tex_txt", -"00228240 000400 goa_2_tmem_txt", -"", -"00228640 000020 goa_3_pal", -"00228660 000100 goa_3_eye1_TA_tex_txt", -"00228760 000100 goa_3_eye2_TA_tex_txt", -"00228860 000100 goa_3_eye3_TA_tex_txt", -"00228960 000100 goa_3_eye4_TA_tex_txt", -"00228a60 000100 goa_3_eye5_TA_tex_txt", -"00228b60 000100 goa_3_eye6_TA_tex_txt", -"00228c60 000100 goa_3_eye7_TA_tex_txt", -"00228d60 000100 goa_3_eye8_TA_tex_txt", -"00228e60 000100 goa_3_mouth1_TA_tex_txt", -"00228f60 000100 goa_3_mouth2_TA_tex_txt", -"00229060 000100 goa_3_mouth3_TA_tex_txt", -"00229160 000100 goa_3_mouth4_TA_tex_txt", -"00229260 000100 goa_3_mouth5_TA_tex_txt", -"00229360 000100 goa_3_mouth6_TA_tex_txt", -"00229460 000400 goa_3_tmem_txt", -"", -"00229860 000020 goa_4_pal", -"00229880 000100 goa_4_eye1_TA_tex_txt", -"00229980 000100 goa_4_eye2_TA_tex_txt", -"00229a80 000100 goa_4_eye3_TA_tex_txt", -"00229b80 000100 goa_4_eye4_TA_tex_txt", -"00229c80 000100 goa_4_eye5_TA_tex_txt", -"00229d80 000100 goa_4_eye6_TA_tex_txt", -"00229e80 000100 goa_4_eye7_TA_tex_txt", -"00229f80 000100 goa_4_eye8_TA_tex_txt", -"0022a080 000100 goa_4_mouth1_TA_tex_txt", -"0022a180 000100 goa_4_mouth2_TA_tex_txt", -"0022a280 000100 goa_4_mouth3_TA_tex_txt", -"0022a380 000100 goa_4_mouth4_TA_tex_txt", -"0022a480 000100 goa_4_mouth5_TA_tex_txt", -"0022a580 000100 goa_4_mouth6_TA_tex_txt", -"0022a680 000400 goa_4_tmem_txt", -"", -"0022aa80 000020 goa_5_pal", -"0022aaa0 000100 goa_5_eye1_TA_tex_txt", -"0022aba0 000100 goa_5_eye2_TA_tex_txt", -"0022aca0 000100 goa_5_eye3_TA_tex_txt", -"0022ada0 000100 goa_5_eye4_TA_tex_txt", -"0022aea0 000100 goa_5_eye5_TA_tex_txt", -"0022afa0 000100 goa_5_eye6_TA_tex_txt", -"0022b0a0 000100 goa_5_eye7_TA_tex_txt", -"0022b1a0 000100 goa_5_eye8_TA_tex_txt", -"0022b2a0 000100 goa_5_mouth1_TA_tex_txt", -"0022b3a0 000100 goa_5_mouth2_TA_tex_txt", -"0022b4a0 000100 goa_5_mouth3_TA_tex_txt", -"0022b5a0 000100 goa_5_mouth4_TA_tex_txt", -"0022b6a0 000100 goa_5_mouth5_TA_tex_txt", -"0022b7a0 000100 goa_5_mouth6_TA_tex_txt", -"0022b8a0 000400 goa_5_tmem_txt", -"", -"0022bca0 000020 goa_6_pal", -"0022bcc0 000100 goa_6_eye1_TA_tex_txt", -"0022bdc0 000100 goa_6_eye2_TA_tex_txt", -"0022bec0 000100 goa_6_eye3_TA_tex_txt", -"0022bfc0 000100 goa_6_eye4_TA_tex_txt", -"0022c0c0 000100 goa_6_eye5_TA_tex_txt", -"0022c1c0 000100 goa_6_eye6_TA_tex_txt", -"0022c2c0 000100 goa_6_eye7_TA_tex_txt", -"0022c3c0 000100 goa_6_eye8_TA_tex_txt", -"0022c4c0 000100 goa_6_mouth1_TA_tex_txt", -"0022c5c0 000100 goa_6_mouth2_TA_tex_txt", -"0022c6c0 000100 goa_6_mouth3_TA_tex_txt", -"0022c7c0 000100 goa_6_mouth4_TA_tex_txt", -"0022c8c0 000100 goa_6_mouth5_TA_tex_txt", -"0022c9c0 000100 goa_6_mouth6_TA_tex_txt", -"0022cac0 000400 goa_6_tmem_txt", -"", -"0022cec0 001ad0 gor_1_v", -"0022e990 000220 head_gor_model", -"0022ebb0 0000f0 mouth_gor_model", -"0022eca0 0000a0 Rarm2_gor_model", -"0022ed40 000090 Rarm1_gor_model", -"0022edd0 0000a0 Larm2_gor_model", -"0022ee70 000090 Larm1_gor_model", -"0022ef00 0000d8 chest_gor_model", -"0022efd8 000090 Rfoot2_gor_model", -"0022f068 0000c0 Rfoot1_gor_model", -"0022f128 000090 Lfoot2_gor_model", -"0022f1b8 0000c0 Lfoot1_gor_model", -"0022f278 000090 base_gor_model", -"0022f308 000138 cKF_je_r_gor_1_tbl", -"0022f440 000008 cKF_bs_r_gor_1", -"", -"0022f460 000020 gor_1_pal", -"0022f480 000100 gor_1_eye1_TA_tex_txt", -"0022f580 000100 gor_1_eye2_TA_tex_txt", -"0022f680 000100 gor_1_eye3_TA_tex_txt", -"0022f780 000100 gor_1_eye4_TA_tex_txt", -"0022f880 000100 gor_1_eye5_TA_tex_txt", -"0022f980 000100 gor_1_eye6_TA_tex_txt", -"0022fa80 000100 gor_1_eye7_TA_tex_txt", -"0022fb80 000100 gor_1_eye8_TA_tex_txt", -"0022fc80 000100 gor_1_mouth1_TA_tex_txt", -"0022fd80 000100 gor_1_mouth2_TA_tex_txt", -"0022fe80 000100 gor_1_mouth3_TA_tex_txt", -"0022ff80 000100 gor_1_mouth4_TA_tex_txt", -"00230080 000100 gor_1_mouth5_TA_tex_txt", -"00230180 000100 gor_1_mouth6_TA_tex_txt", -"00230280 000400 gor_1_tmem_txt", -"", -"00230680 000020 gor_2_pal", -"002306a0 000100 gor_2_eye1_TA_tex_txt", -"002307a0 000100 gor_2_eye2_TA_tex_txt", -"002308a0 000100 gor_2_eye3_TA_tex_txt", -"002309a0 000100 gor_2_eye4_TA_tex_txt", -"00230aa0 000100 gor_2_eye5_TA_tex_txt", -"00230ba0 000100 gor_2_eye6_TA_tex_txt", -"00230ca0 000100 gor_2_eye7_TA_tex_txt", -"00230da0 000100 gor_2_eye8_TA_tex_txt", -"00230ea0 000100 gor_2_mouth1_TA_tex_txt", -"00230fa0 000100 gor_2_mouth2_TA_tex_txt", -"002310a0 000100 gor_2_mouth3_TA_tex_txt", -"002311a0 000100 gor_2_mouth4_TA_tex_txt", -"002312a0 000100 gor_2_mouth5_TA_tex_txt", -"002313a0 000100 gor_2_mouth6_TA_tex_txt", -"002314a0 000400 gor_2_tmem_txt", -"", -"002318a0 000020 gor_3_pal", -"002318c0 000100 gor_3_eye1_TA_tex_txt", -"002319c0 000100 gor_3_eye2_TA_tex_txt", -"00231ac0 000100 gor_3_eye3_TA_tex_txt", -"00231bc0 000100 gor_3_eye4_TA_tex_txt", -"00231cc0 000100 gor_3_eye5_TA_tex_txt", -"00231dc0 000100 gor_3_eye6_TA_tex_txt", -"00231ec0 000100 gor_3_eye7_TA_tex_txt", -"00231fc0 000100 gor_3_eye8_TA_tex_txt", -"002320c0 000100 gor_3_mouth1_TA_tex_txt", -"002321c0 000100 gor_3_mouth2_TA_tex_txt", -"002322c0 000100 gor_3_mouth3_TA_tex_txt", -"002323c0 000100 gor_3_mouth4_TA_tex_txt", -"002324c0 000100 gor_3_mouth5_TA_tex_txt", -"002325c0 000100 gor_3_mouth6_TA_tex_txt", -"002326c0 000400 gor_3_tmem_txt", -"", -"00232ac0 000020 gor_4_pal", -"00232ae0 000100 gor_4_eye1_TA_tex_txt", -"00232be0 000100 gor_4_eye2_TA_tex_txt", -"00232ce0 000100 gor_4_eye3_TA_tex_txt", -"00232de0 000100 gor_4_eye4_TA_tex_txt", -"00232ee0 000100 gor_4_eye5_TA_tex_txt", -"00232fe0 000100 gor_4_eye6_TA_tex_txt", -"002330e0 000100 gor_4_eye7_TA_tex_txt", -"002331e0 000100 gor_4_eye8_TA_tex_txt", -"002332e0 000100 gor_4_mouth1_TA_tex_txt", -"002333e0 000100 gor_4_mouth2_TA_tex_txt", -"002334e0 000100 gor_4_mouth3_TA_tex_txt", -"002335e0 000100 gor_4_mouth4_TA_tex_txt", -"002336e0 000100 gor_4_mouth5_TA_tex_txt", -"002337e0 000100 gor_4_mouth6_TA_tex_txt", -"002338e0 000400 gor_4_tmem_txt", -"", -"00233ce0 000020 gor_5_pal", -"00233d00 000100 gor_5_eye1_TA_tex_txt", -"00233e00 000100 gor_5_eye2_TA_tex_txt", -"00233f00 000100 gor_5_eye3_TA_tex_txt", -"00234000 000100 gor_5_eye4_TA_tex_txt", -"00234100 000100 gor_5_eye5_TA_tex_txt", -"00234200 000100 gor_5_eye6_TA_tex_txt", -"00234300 000100 gor_5_eye7_TA_tex_txt", -"00234400 000100 gor_5_eye8_TA_tex_txt", -"00234500 000100 gor_5_mouth1_TA_tex_txt", -"00234600 000100 gor_5_mouth2_TA_tex_txt", -"00234700 000100 gor_5_mouth3_TA_tex_txt", -"00234800 000100 gor_5_mouth4_TA_tex_txt", -"00234900 000100 gor_5_mouth5_TA_tex_txt", -"00234a00 000100 gor_5_mouth6_TA_tex_txt", -"00234b00 000400 gor_5_tmem_txt", -"", -"00234f00 0013b0 xct_1_v", -"002362b0 000190 head_xct_model", -"00236440 000088 Rarm2_xct_model", -"002364c8 000078 Rarm1_xct_model", -"00236540 000088 Larm2_xct_model", -"002365c8 000078 Larm1_xct_model", -"00236640 0000b0 chest_xct_model", -"002366f0 000058 tail1_xct_model", -"00236748 000090 tail2_xct_model", -"002367d8 000090 Rfoot2_xct_model", -"00236868 000058 Rfoot1_xct_model", -"002368c0 000090 Lfoot2_xct_model", -"00236950 000058 Lfoot1_xct_model", -"002369a8 000080 base_xct_model", -"00236a28 000138 cKF_je_r_xct_1_tbl", -"00236b60 000008 cKF_bs_r_xct_1", -"", -"00236b80 000020 xct_1_pal", -"00236ba0 000100 xct_1_eye1_TA_tex_txt", -"00236ca0 000100 xct_1_eye2_TA_tex_txt", -"00236da0 000100 xct_1_eye3_TA_tex_txt", -"00236ea0 000100 xct_1_eye4_TA_tex_txt", -"00236fa0 000100 xct_1_eye5_TA_tex_txt", -"002370a0 000100 xct_1_eye6_TA_tex_txt", -"002371a0 000100 xct_1_eye7_TA_tex_txt", -"002372a0 000100 xct_1_eye8_TA_tex_txt", -"002373a0 000100 xct_1_mouth1_TA_tex_txt", -"002374a0 000100 xct_1_mouth2_TA_tex_txt", -"002375a0 000100 xct_1_mouth3_TA_tex_txt", -"002376a0 000100 xct_1_mouth4_TA_tex_txt", -"002377a0 000100 xct_1_mouth5_TA_tex_txt", -"002378a0 000100 xct_1_mouth6_TA_tex_txt", -"002379a0 000580 xct_1_tmem_txt", -"", -"00247428 0016e0 bpt_1_v", -"00248b08 0001a8 head_bpt_model", -"00248cb0 000068 feel_bpt_model", -"00248d18 000088 mouth_bpt_model", -"00248da0 0000c8 Rarm2_bpt_model", -"00248e68 000090 Rarm1_bpt_model", -"00248ef8 0000c8 Larm2_bpt_model", -"00248fc0 000090 Larm1_bpt_model", -"00249050 0000b8 chest_bpt_model", -"00249108 000058 tail1_bpt_model", -"00249160 000090 tail2_bpt_model", -"002491f0 000060 Rfoot2_bpt_model", -"00249250 000080 Rfoot1_bpt_model", -"002492d0 000060 Lfoot2_bpt_model", -"00249330 000088 Lfoot1_bpt_model", -"002493b8 000088 base_bpt_model", -"00249440 000138 cKF_je_r_bpt_1_tbl", -"00249578 000008 cKF_bs_r_bpt_1", -"", -"00249580 000020 bpt_1_pal", -"002495a0 000100 bpt_1_eye1_TA_tex_txt", -"002496a0 000100 bpt_1_eye2_TA_tex_txt", -"002497a0 000100 bpt_1_eye3_TA_tex_txt", -"002498a0 000100 bpt_1_eye4_TA_tex_txt", -"002499a0 000100 bpt_1_eye5_TA_tex_txt", -"00249aa0 000100 bpt_1_eye6_TA_tex_txt", -"00249ba0 000100 bpt_1_eye7_TA_tex_txt", -"00249ca0 000100 bpt_1_eye8_TA_tex_txt", -"00249da0 000700 bpt_1_tmem_txt", -"", -"0024a4a0 001200 pkn_1_v", -"0024b6a0 000180 head_pkn_model", -"0024b820 000088 Rarm2_pkn_model", -"0024b8a8 000078 Rarm1_pkn_model", -"0024b920 000088 Larm2_pkn_model", -"0024b9a8 000078 Larm1_pkn_model", -"0024ba20 0000a0 chest_pkn_model", -"0024bac0 000080 Rfoot2_pkn_model", -"0024bb40 0000b0 Rfoot1_pkn_model", -"0024bbf0 000080 Lfoot2_pkn_model", -"0024bc70 0000b0 Lfoot1_pkn_model", -"0024bd20 000068 base_pkn_model", -"0024bd88 000138 cKF_je_r_pkn_1_tbl", -"0024bec0 000008 cKF_bs_r_pkn_1", -"", -"0024bee0 000020 pkn_1_pal", -"0024bf00 000680 pkn_1_tmem_txt", -"", -"0024e580 0014d0 hem_1_v", -"0024fa50 0001a0 head_hem_model", -"0024fbf0 000080 feel_hem_model", -"0024fc70 000090 mouth_hem_model", -"0024fd00 000088 Rarm2_hem_model", -"0024fd88 000058 Rarm1_hem_model", -"0024fde0 0000d0 chest_hem_model", -"0024feb0 0001f0 base_hem_model", -"002500a0 000138 cKF_je_r_hem_1_tbl", -"002501d8 000008 cKF_bs_r_hem_1", -"", -"002501e0 000020 hem_1_pal", -"00250200 000740 hem_1_tmem_txt", -"", -"00250940 001c60 hip_1_v", -"002525a0 0002d8 head_hip_model", -"00252878 0000c8 mouth_hip_model", -"00252940 000080 Rarm2_hip_model", -"002529c0 000078 Rarm1_hip_model", -"00252a38 000080 Larm2_hip_model", -"00252ab8 000078 Larm1_hip_model", -"00252b30 000090 chest_hip_model", -"00252bc0 000058 tail1_hip_model", -"00252c18 000050 tail2_hip_model", -"00252c68 000090 Rfoot2_hip_model", -"00252cf8 000088 Rfoot1_hip_model", -"00252d80 000088 lfoot1_hip_model", -"00252e08 000090 Lfoot2_hip_model", -"00252e98 000080 base_hip_model", -"00252f18 000138 cKF_je_r_hip_1_tbl", -"00253050 000008 cKF_bs_r_hip_1", -"", -"00253060 000020 hip_1_pal", -"00253080 000100 hip_1_eye1_TA_tex_txt", -"00253180 000100 hip_1_eye2_TA_tex_txt", -"00253280 000100 hip_1_eye3_TA_tex_txt", -"00253380 000100 hip_1_eye4_TA_tex_txt", -"00253480 000100 hip_1_eye5_TA_tex_txt", -"00253580 000100 hip_1_eye6_TA_tex_txt", -"00253680 000100 hip_1_eye7_TA_tex_txt", -"00253780 000100 hip_1_eye8_TA_tex_txt", -"00253880 000500 hip_1_tmem_txt", -"", -"00253d80 000020 hip_2_pal", -"00253da0 000100 hip_2_eye1_TA_tex_txt", -"00253ea0 000100 hip_2_eye2_TA_tex_txt", -"00253fa0 000100 hip_2_eye3_TA_tex_txt", -"002540a0 000100 hip_2_eye4_TA_tex_txt", -"002541a0 000100 hip_2_eye5_TA_tex_txt", -"002542a0 000100 hip_2_eye6_TA_tex_txt", -"002543a0 000100 hip_2_eye7_TA_tex_txt", -"002544a0 000100 hip_2_eye8_TA_tex_txt", -"002545a0 000500 hip_2_tmem_txt", -"", -"00254aa0 000020 hip_3_pal", -"00254ac0 000100 hip_3_eye1_TA_tex_txt", -"00254bc0 000100 hip_3_eye2_TA_tex_txt", -"00254cc0 000100 hip_3_eye3_TA_tex_txt", -"00254dc0 000100 hip_3_eye4_TA_tex_txt", -"00254ec0 000100 hip_3_eye5_TA_tex_txt", -"00254fc0 000100 hip_3_eye6_TA_tex_txt", -"002550c0 000100 hip_3_eye7_TA_tex_txt", -"002551c0 000100 hip_3_eye8_TA_tex_txt", -"002552c0 000500 hip_3_tmem_txt", -"", -"002557c0 000020 hip_4_pal", -"002557e0 000100 hip_4_eye1_TA_tex_txt", -"002558e0 000100 hip_4_eye2_TA_tex_txt", -"002559e0 000100 hip_4_eye3_TA_tex_txt", -"00255ae0 000100 hip_4_eye4_TA_tex_txt", -"00255be0 000100 hip_4_eye5_TA_tex_txt", -"00255ce0 000100 hip_4_eye6_TA_tex_txt", -"00255de0 000100 hip_4_eye7_TA_tex_txt", -"00255ee0 000100 hip_4_eye8_TA_tex_txt", -"00255fe0 000500 hip_4_tmem_txt", -"", -"002564e0 000020 hip_5_pal", -"00256500 000100 hip_5_eye1_TA_tex_txt", -"00256600 000100 hip_5_eye2_TA_tex_txt", -"00256700 000100 hip_5_eye3_TA_tex_txt", -"00256800 000100 hip_5_eye4_TA_tex_txt", -"00256900 000100 hip_5_eye5_TA_tex_txt", -"00256a00 000100 hip_5_eye6_TA_tex_txt", -"00256b00 000100 hip_5_eye7_TA_tex_txt", -"00256c00 000100 hip_5_eye8_TA_tex_txt", -"00256d00 000500 hip_5_tmem_txt", -"", -"00257200 000020 hip_6_pal", -"00257220 000100 hip_6_eye1_TA_tex_txt", -"00257320 000100 hip_6_eye2_TA_tex_txt", -"00257420 000100 hip_6_eye3_TA_tex_txt", -"00257520 000100 hip_6_eye4_TA_tex_txt", -"00257620 000100 hip_6_eye5_TA_tex_txt", -"00257720 000100 hip_6_eye6_TA_tex_txt", -"00257820 000100 hip_6_eye7_TA_tex_txt", -"00257920 000100 hip_6_eye8_TA_tex_txt", -"00257a20 000500 hip_6_tmem_txt", -"", -"00257f20 000020 hip_7_pal", -"00257f40 000100 hip_7_eye1_TA_tex_txt", -"00258040 000100 hip_7_eye2_TA_tex_txt", -"00258140 000100 hip_7_eye3_TA_tex_txt", -"00258240 000100 hip_7_eye4_TA_tex_txt", -"00258340 000100 hip_7_eye5_TA_tex_txt", -"00258440 000100 hip_7_eye6_TA_tex_txt", -"00258540 000100 hip_7_eye7_TA_tex_txt", -"00258640 000100 hip_7_eye8_TA_tex_txt", -"00258740 000500 hip_7_tmem_txt", -"", -"00258c40 001930 hrs_1_v", -"0025a570 000230 head_hrs_model", -"0025a7a0 000090 mouth_hrs_model", -"0025a830 000088 Rarm2_hrs_model", -"0025a8b8 000078 Rarm1_hrs_model", -"0025a930 000088 Larm2_hrs_model", -"0025a9b8 000078 Larm1_hrs_model", -"0025aa30 0000b8 chest_hrs_model", -"0025aae8 000060 tail1_hrs_model", -"0025ab48 000090 tail2_hrs_model", -"0025abd8 000080 Rfoot2_hrs_model", -"0025ac58 0000c0 Rfoot1_hrs_model", -"0025ad18 000080 Lfoot2_hrs_model", -"0025ad98 0000c0 Lfoot1_hrs_model", -"0025ae58 000070 base_hrs_model", -"0025aec8 000138 cKF_je_r_hrs_1_tbl", -"0025b000 000008 cKF_bs_r_hrs_1", -"", -"0025b020 000020 hrs_1_pal", -"0025b040 000100 hrs_1_eye1_TA_tex_txt", -"0025b140 000100 hrs_1_eye2_TA_tex_txt", -"0025b240 000100 hrs_1_eye3_TA_tex_txt", -"0025b340 000100 hrs_1_eye4_TA_tex_txt", -"0025b440 000100 hrs_1_eye5_TA_tex_txt", -"0025b540 000100 hrs_1_eye6_TA_tex_txt", -"0025b640 000100 hrs_1_eye7_TA_tex_txt", -"0025b740 000100 hrs_1_eye8_TA_tex_txt", -"0025b840 000580 hrs_1_tmem_txt", -"", -"0025bdc0 000020 hrs_2_pal", -"0025bde0 000100 hrs_2_eye1_TA_tex_txt", -"0025bee0 000100 hrs_2_eye2_TA_tex_txt", -"0025bfe0 000100 hrs_2_eye3_TA_tex_txt", -"0025c0e0 000100 hrs_2_eye4_TA_tex_txt", -"0025c1e0 000100 hrs_2_eye5_TA_tex_txt", -"0025c2e0 000100 hrs_2_eye6_TA_tex_txt", -"0025c3e0 000100 hrs_2_eye7_TA_tex_txt", -"0025c4e0 000100 hrs_2_eye8_TA_tex_txt", -"0025c5e0 000580 hrs_2_tmem_txt", -"", -"0025cb60 000020 hrs_3_pal", -"0025cb80 000100 hrs_3_eye1_TA_tex_txt", -"0025cc80 000100 hrs_3_eye2_TA_tex_txt", -"0025cd80 000100 hrs_3_eye3_TA_tex_txt", -"0025ce80 000100 hrs_3_eye4_TA_tex_txt", -"0025cf80 000100 hrs_3_eye5_TA_tex_txt", -"0025d080 000100 hrs_3_eye6_TA_tex_txt", -"0025d180 000100 hrs_3_eye7_TA_tex_txt", -"0025d280 000100 hrs_3_eye8_TA_tex_txt", -"0025d380 000580 hrs_3_tmem_txt", -"", -"0025d900 000020 hrs_4_pal", -"0025d920 000100 hrs_4_eye1_TA_tex_txt", -"0025da20 000100 hrs_4_eye2_TA_tex_txt", -"0025db20 000100 hrs_4_eye3_TA_tex_txt", -"0025dc20 000100 hrs_4_eye4_TA_tex_txt", -"0025dd20 000100 hrs_4_eye5_TA_tex_txt", -"0025de20 000100 hrs_4_eye6_TA_tex_txt", -"0025df20 000100 hrs_4_eye7_TA_tex_txt", -"0025e020 000100 hrs_4_eye8_TA_tex_txt", -"0025e120 000580 hrs_4_tmem_txt", -"", -"0025e6a0 000020 hrs_5_pal", -"0025e6c0 000100 hrs_5_eye1_TA_tex_txt", -"0025e7c0 000100 hrs_5_eye2_TA_tex_txt", -"0025e8c0 000100 hrs_5_eye3_TA_tex_txt", -"0025e9c0 000100 hrs_5_eye4_TA_tex_txt", -"0025eac0 000100 hrs_5_eye5_TA_tex_txt", -"0025ebc0 000100 hrs_5_eye6_TA_tex_txt", -"0025ecc0 000100 hrs_5_eye7_TA_tex_txt", -"0025edc0 000100 hrs_5_eye8_TA_tex_txt", -"0025eec0 000580 hrs_5_tmem_txt", -"", -"0025f440 000020 hrs_6_pal", -"0025f460 000100 hrs_6_eye1_TA_tex_txt", -"0025f560 000100 hrs_6_eye2_TA_tex_txt", -"0025f660 000100 hrs_6_eye3_TA_tex_txt", -"0025f760 000100 hrs_6_eye4_TA_tex_txt", -"0025f860 000100 hrs_6_eye5_TA_tex_txt", -"0025f960 000100 hrs_6_eye6_TA_tex_txt", -"0025fa60 000100 hrs_6_eye7_TA_tex_txt", -"0025fb60 000100 hrs_6_eye8_TA_tex_txt", -"0025fc60 000580 hrs_6_tmem_txt", -"", -"002601e0 000020 hrs_7_pal", -"00260200 000100 hrs_7_eye1_TA_tex_txt", -"00260300 000100 hrs_7_eye2_TA_tex_txt", -"00260400 000100 hrs_7_eye3_TA_tex_txt", -"00260500 000100 hrs_7_eye4_TA_tex_txt", -"00260600 000100 hrs_7_eye5_TA_tex_txt", -"00260700 000100 hrs_7_eye6_TA_tex_txt", -"00260800 000100 hrs_7_eye7_TA_tex_txt", -"00260900 000100 hrs_7_eye8_TA_tex_txt", -"00260a00 000580 hrs_7_tmem_txt", -"", -"00260f80 000020 hrs_8_pal", -"00260fa0 000100 hrs_8_eye1_TA_tex_txt", -"002610a0 000100 hrs_8_eye2_TA_tex_txt", -"002611a0 000100 hrs_8_eye3_TA_tex_txt", -"002612a0 000100 hrs_8_eye4_TA_tex_txt", -"002613a0 000100 hrs_8_eye5_TA_tex_txt", -"002614a0 000100 hrs_8_eye6_TA_tex_txt", -"002615a0 000100 hrs_8_eye7_TA_tex_txt", -"002616a0 000100 hrs_8_eye8_TA_tex_txt", -"002617a0 000580 hrs_8_tmem_txt", -"", -"0026b800 0016a0 plj_1_v", -"0026cea0 000150 head_plj_model", -"0026cff0 000080 Rarm2_plj_model", -"0026d070 000088 Rarm1_plj_model", -"0026d0f8 000080 Larm2_plj_model", -"0026d178 000088 Larm1_plj_model", -"0026d200 000140 chest_plj_model", -"0026d340 000058 tail1_plj_model", -"0026d398 0000a0 tail2_plj_model", -"0026d438 000088 Rfoot2_plj_model", -"0026d4c0 000080 Rfoot1_plj_model", -"0026d540 000088 Lfoot2_plj_model", -"0026d5c8 000080 Lfoot1_plj_model", -"0026d648 000078 base_plj_model", -"0026d6c0 000138 cKF_je_r_plj_1_tbl", -"0026d7f8 000008 cKF_bs_r_plj_1", -"", -"0026d800 000020 plj_1_pal", -"0026d820 000100 plj_1_eye1_TA_tex_txt", -"0026d920 000100 plj_1_eye2_TA_tex_txt", -"0026da20 000100 plj_1_eye3_TA_tex_txt", -"0026db20 000100 plj_1_eye4_TA_tex_txt", -"0026dc20 000100 plj_1_eye5_TA_tex_txt", -"0026dd20 000100 plj_1_eye6_TA_tex_txt", -"0026de20 000100 plj_1_eye7_TA_tex_txt", -"0026df20 000100 plj_1_eye8_TA_tex_txt", -"0026e020 000100 plj_1_mouth1_TA_tex_txt", -"0026e120 000100 plj_1_mouth2_TA_tex_txt", -"0026e220 000100 plj_1_mouth3_TA_tex_txt", -"0026e320 000100 plj_1_mouth4_TA_tex_txt", -"0026e420 000100 plj_1_mouth5_TA_tex_txt", -"0026e520 000100 plj_1_mouth6_TA_tex_txt", -"0026e620 000680 plj_1_tmem_txt", -"", -"", -"0026eca0 0016f0 xsq_1_v", -"00270390 000198 head_xsq_model", -"00270528 000088 Rarm2_xsq_model", -"002705b0 000078 Rarm1_xsq_model", -"00270628 000088 Larm2_xsq_model", -"002706b0 000078 Larm1_xsq_model", -"00270728 0000a8 chest_xsq_model", -"002707d0 000070 tail1_xsq_model", -"00270840 0000d0 tail2_xsq_model", -"00270910 000080 Rfoot2_xsq_model", -"00270990 0000c0 Rfoot1_xsq_model", -"00270a50 000080 Lfoot2_xsq_model", -"00270ad0 0000c0 Lfoot1_xsq_model", -"00270b90 000070 base_xsq_model", -"00270c00 000138 cKF_je_r_xsq_1_tbl", -"00270d38 000008 cKF_bs_r_xsq_1", -"", -"00270d40 000020 xsq_1_pal", -"00270d60 000100 xsq_1_eye1_TA_tex_txt", -"00270e60 000100 xsq_1_eye2_TA_tex_txt", -"00270f60 000100 xsq_1_eye3_TA_tex_txt", -"00271060 000100 xsq_1_eye4_TA_tex_txt", -"00271160 000100 xsq_1_eye5_TA_tex_txt", -"00271260 000100 xsq_1_eye6_TA_tex_txt", -"00271360 000100 xsq_1_eye7_TA_tex_txt", -"00271460 000100 xsq_1_eye8_TA_tex_txt", -"00271560 000100 xsq_1_mouth1_TA_tex_txt", -"00271660 000100 xsq_1_mouth2_TA_tex_txt", -"00271760 000100 xsq_1_mouth3_TA_tex_txt", -"00271860 000100 xsq_1_mouth4_TA_tex_txt", -"00271960 000100 xsq_1_mouth5_TA_tex_txt", -"00271a60 000100 xsq_1_mouth6_TA_tex_txt", -"00271b60 000600 xsq_1_tmem_txt", -"", -"0027b3a8 001c50 boa_1_v", -"0027cff8 0001d8 head_boa_model", -"0027d1d0 000088 mouth_boa_model", -"0027d258 000088 Rarm2_boa_model", -"0027d2e0 000078 Rarm1_boa_model", -"0027d358 000088 Larm2_boa_model", -"0027d3e0 000078 Larm1_boa_model", -"0027d458 0001f8 chest_boa_model", -"0027d650 0000a8 Rfoot2_boa_model", -"0027d6f8 000080 Rfoot1_boa_model", -"0027d778 000098 Lfoot2_boa_model", -"0027d810 000080 Lfoot1_boa_model", -"0027d890 000078 base_boa_model", -"0027d908 000138 cKF_je_r_boa_1_tbl", -"0027da40 000008 cKF_bs_r_boa_1", -"", -"0027da60 000020 boa_1_pal", -"0027da80 000100 boa_1_eye1_TA_tex_txt", -"0027db80 000100 boa_1_eye2_TA_tex_txt", -"0027dc80 000100 boa_1_eye3_TA_tex_txt", -"0027dd80 000100 boa_1_eye4_TA_tex_txt", -"0027de80 000100 boa_1_eye5_TA_tex_txt", -"0027df80 000100 boa_1_eye6_TA_tex_txt", -"0027e080 000100 boa_1_eye7_TA_tex_txt", -"0027e180 000100 boa_1_eye8_TA_tex_txt", -"0027e280 0005c0 boa_1_tmem_txt", -"", -"0027e840 001af0 kgr_1_v", -"00280330 000160 head_kgr_model", -"00280490 000080 mouth_kgr_model", -"00280510 000088 Rarm2_kgr_model", -"00280598 000078 Rarm1_kgr_model", -"00280610 000088 Larm2_kgr_model", -"00280698 000078 Larm1_kgr_model", -"00280710 000188 chest_kgr_model", -"00280898 000088 tail1_kgr_model", -"00280920 000080 Rfoot3_kgr_model", -"002809a0 000080 Rfoot2_kgr_model", -"00280a20 0000c8 Rfoot1_kgr_model", -"00280ae8 000080 Lfoot3_kgr_model", -"00280b68 000080 Lfoot2_kgr_model", -"00280be8 0000c8 Lfoot1_kgr_model", -"00280cb0 0000d8 base_kgr_model", -"00280d88 000138 cKF_je_r_kgr_1_tbl", -"00280ec0 000008 cKF_bs_r_kgr_1", -"", -"00280ee0 000020 kgr_1_pal", -"00280f00 000100 kgr_1_eye1_TA_tex_txt", -"00281000 000100 kgr_1_eye2_TA_tex_txt", -"00281100 000100 kgr_1_eye3_TA_tex_txt", -"00281200 000100 kgr_1_eye4_TA_tex_txt", -"00281300 000100 kgr_1_eye5_TA_tex_txt", -"00281400 000100 kgr_1_eye6_TA_tex_txt", -"00281500 000100 kgr_1_eye7_TA_tex_txt", -"00281600 000100 kgr_1_eye8_TA_tex_txt", -"00281700 000440 kgr_1_tmem_txt", -"", -"00281b40 000020 kgr_2_pal", -"00281b60 000100 kgr_2_eye1_TA_tex_txt", -"00281c60 000100 kgr_2_eye2_TA_tex_txt", -"00281d60 000100 kgr_2_eye3_TA_tex_txt", -"00281e60 000100 kgr_2_eye4_TA_tex_txt", -"00281f60 000100 kgr_2_eye5_TA_tex_txt", -"00282060 000100 kgr_2_eye6_TA_tex_txt", -"00282160 000100 kgr_2_eye7_TA_tex_txt", -"00282260 000100 kgr_2_eye8_TA_tex_txt", -"00282360 000440 kgr_2_tmem_txt", -"", -"002827a0 000020 kgr_3_pal", -"002827c0 000100 kgr_3_eye1_TA_tex_txt", -"002828c0 000100 kgr_3_eye2_TA_tex_txt", -"002829c0 000100 kgr_3_eye3_TA_tex_txt", -"00282ac0 000100 kgr_3_eye4_TA_tex_txt", -"00282bc0 000100 kgr_3_eye5_TA_tex_txt", -"00282cc0 000100 kgr_3_eye6_TA_tex_txt", -"00282dc0 000100 kgr_3_eye7_TA_tex_txt", -"00282ec0 000100 kgr_3_eye8_TA_tex_txt", -"00282fc0 000440 kgr_3_tmem_txt", -"", -"00283400 000020 kgr_4_pal", -"00283420 000100 kgr_4_eye1_TA_tex_txt", -"00283520 000100 kgr_4_eye2_TA_tex_txt", -"00283620 000100 kgr_4_eye3_TA_tex_txt", -"00283720 000100 kgr_4_eye4_TA_tex_txt", -"00283820 000100 kgr_4_eye5_TA_tex_txt", -"00283920 000100 kgr_4_eye6_TA_tex_txt", -"00283a20 000100 kgr_4_eye7_TA_tex_txt", -"00283b20 000100 kgr_4_eye8_TA_tex_txt", -"00283c20 000440 kgr_4_tmem_txt", -"", -"00284060 000020 kgr_5_pal", -"00284080 000100 kgr_5_eye1_TA_tex_txt", -"00284180 000100 kgr_5_eye2_TA_tex_txt", -"00284280 000100 kgr_5_eye3_TA_tex_txt", -"00284380 000100 kgr_5_eye4_TA_tex_txt", -"00284480 000100 kgr_5_eye5_TA_tex_txt", -"00284580 000100 kgr_5_eye6_TA_tex_txt", -"00284680 000100 kgr_5_eye7_TA_tex_txt", -"00284780 000100 kgr_5_eye8_TA_tex_txt", -"00284880 000440 kgr_5_tmem_txt", -"", -"00284cc0 000020 kgr_6_pal", -"00284ce0 000100 kgr_6_eye1_TA_tex_txt", -"00284de0 000100 kgr_6_eye2_TA_tex_txt", -"00284ee0 000100 kgr_6_eye3_TA_tex_txt", -"00284fe0 000100 kgr_6_eye4_TA_tex_txt", -"002850e0 000100 kgr_6_eye5_TA_tex_txt", -"002851e0 000100 kgr_6_eye6_TA_tex_txt", -"002852e0 000100 kgr_6_eye7_TA_tex_txt", -"002853e0 000100 kgr_6_eye8_TA_tex_txt", -"002854e0 000440 kgr_6_tmem_txt", -"", -"00285920 001a30 fob_1_v", -"00287350 0001b8 head_fob_model", -"00287508 0000a0 mouth_fob_model", -"002875a8 000090 Rarm2_fob_model", -"00287638 0000a0 Rarm1_fob_model", -"002876d8 000090 Larm2_fob_model", -"00287768 000090 Larm1_fob_model", -"002877f8 000130 chest_fob_model", -"00287928 000080 tail1_fob_model", -"002879a8 0000c0 tail2_fob_model", -"00287a68 000088 Rfoot2_fob_model", -"00287af0 000058 Rfoot1_fob_model", -"00287b48 000088 Lfoot2_fob_model", -"00287bd0 000058 Lfoot1_fob_model", -"00287c28 0000f8 base_fob_model", -"00287d20 000138 cKF_je_r_fob_1_tbl", -"00287e58 000008 cKF_bs_r_fob_1", -"", -"00287e60 000020 fob_1_pal", -"00287e80 000100 fob_1_eye1_TA_tex_txt", -"00287f80 000100 fob_1_eye2_TA_tex_txt", -"00288080 000100 fob_1_eye3_TA_tex_txt", -"00288180 000100 fob_1_eye4_TA_tex_txt", -"00288280 000100 fob_1_eye5_TA_tex_txt", -"00288380 000100 fob_1_eye6_TA_tex_txt", -"00288480 000100 fob_1_eye7_TA_tex_txt", -"00288580 000100 fob_1_eye8_TA_tex_txt", -"00288680 000740 fob_1_tmem_txt", -"", -"00288dc0 001690 kal_1_v", -"0028a450 0001b0 head_kal_model", -"0028a600 000088 Rarm2_kal_model", -"0028a688 000078 Rarm1_kal_model", -"0028a700 000088 Larm2_kal_model", -"0028a788 000078 Larm1_kal_model", -"0028a800 0000a8 chest_kal_model", -"0028a8a8 000080 Rfoot2_kal_model", -"0028a928 0000c0 Rfoot1_kal_model", -"0028a9e8 000080 Lfoot2_kal_model", -"0028aa68 0000c0 Lfoot1_kal_model", -"0028ab28 000070 base_kal_model", -"0028ab98 000138 cKF_je_r_kal_1_tbl", -"0028acd0 000008 cKF_bs_r_kal_1", -"", -"0028ace0 000020 kal_1_pal", -"0028ad00 000100 kal_1_eye1_TA_tex_txt", -"0028ae00 000100 kal_1_eye2_TA_tex_txt", -"0028af00 000100 kal_1_eye3_TA_tex_txt", -"0028b000 000100 kal_1_eye4_TA_tex_txt", -"0028b100 000100 kal_1_eye5_TA_tex_txt", -"0028b200 000100 kal_1_eye6_TA_tex_txt", -"0028b300 000100 kal_1_eye7_TA_tex_txt", -"0028b400 000100 kal_1_eye8_TA_tex_txt", -"0028b500 000100 kal_1_mouth1_TA_tex_txt", -"0028b600 000100 kal_1_mouth2_TA_tex_txt", -"0028b700 000100 kal_1_mouth3_TA_tex_txt", -"0028b800 000100 kal_1_mouth4_TA_tex_txt", -"0028b900 000100 kal_1_mouth5_TA_tex_txt", -"0028ba00 000100 kal_1_mouth6_TA_tex_txt", -"0028bb00 000480 kal_1_tmem_txt", -"", -"0028bf80 000020 kal_2_pal", -"0028bfa0 000100 kal_2_eye1_TA_tex_txt", -"0028c0a0 000100 kal_2_eye2_TA_tex_txt", -"0028c1a0 000100 kal_2_eye3_TA_tex_txt", -"0028c2a0 000100 kal_2_eye4_TA_tex_txt", -"0028c3a0 000100 kal_2_eye5_TA_tex_txt", -"0028c4a0 000100 kal_2_eye6_TA_tex_txt", -"0028c5a0 000100 kal_2_eye7_TA_tex_txt", -"0028c6a0 000100 kal_2_eye8_TA_tex_txt", -"0028c7a0 000100 kal_2_mouth1_TA_tex_txt", -"0028c8a0 000100 kal_2_mouth2_TA_tex_txt", -"0028c9a0 000100 kal_2_mouth3_TA_tex_txt", -"0028caa0 000100 kal_2_mouth4_TA_tex_txt", -"0028cba0 000100 kal_2_mouth5_TA_tex_txt", -"0028cca0 000100 kal_2_mouth6_TA_tex_txt", -"0028cda0 000480 kal_2_tmem_txt", -"", -"0028d220 000020 kal_3_pal", -"0028d240 000100 kal_3_eye1_TA_tex_txt", -"0028d340 000100 kal_3_eye2_TA_tex_txt", -"0028d440 000100 kal_3_eye3_TA_tex_txt", -"0028d540 000100 kal_3_eye4_TA_tex_txt", -"0028d640 000100 kal_3_eye5_TA_tex_txt", -"0028d740 000100 kal_3_eye6_TA_tex_txt", -"0028d840 000100 kal_3_eye7_TA_tex_txt", -"0028d940 000100 kal_3_eye8_TA_tex_txt", -"0028da40 000100 kal_3_mouth1_TA_tex_txt", -"0028db40 000100 kal_3_mouth2_TA_tex_txt", -"0028dc40 000100 kal_3_mouth3_TA_tex_txt", -"0028dd40 000100 kal_3_mouth4_TA_tex_txt", -"0028de40 000100 kal_3_mouth5_TA_tex_txt", -"0028df40 000100 kal_3_mouth6_TA_tex_txt", -"0028e040 000480 kal_3_tmem_txt", -"", -"0028e4c0 000020 kal_4_pal", -"0028e4e0 000100 kal_4_eye1_TA_tex_txt", -"0028e5e0 000100 kal_4_eye2_TA_tex_txt", -"0028e6e0 000100 kal_4_eye3_TA_tex_txt", -"0028e7e0 000100 kal_4_eye4_TA_tex_txt", -"0028e8e0 000100 kal_4_eye5_TA_tex_txt", -"0028e9e0 000100 kal_4_eye6_TA_tex_txt", -"0028eae0 000100 kal_4_eye7_TA_tex_txt", -"0028ebe0 000100 kal_4_eye8_TA_tex_txt", -"0028ece0 000100 kal_4_mouth1_TA_tex_txt", -"0028ede0 000100 kal_4_mouth2_TA_tex_txt", -"0028eee0 000100 kal_4_mouth3_TA_tex_txt", -"0028efe0 000100 kal_4_mouth4_TA_tex_txt", -"0028f0e0 000100 kal_4_mouth5_TA_tex_txt", -"0028f1e0 000100 kal_4_mouth6_TA_tex_txt", -"0028f2e0 000480 kal_4_tmem_txt", -"", -"0028f760 000020 kal_5_pal", -"0028f780 000100 kal_5_eye1_TA_tex_txt", -"0028f880 000100 kal_5_eye2_TA_tex_txt", -"0028f980 000100 kal_5_eye3_TA_tex_txt", -"0028fa80 000100 kal_5_eye4_TA_tex_txt", -"0028fb80 000100 kal_5_eye5_TA_tex_txt", -"0028fc80 000100 kal_5_eye6_TA_tex_txt", -"0028fd80 000100 kal_5_eye7_TA_tex_txt", -"0028fe80 000100 kal_5_eye8_TA_tex_txt", -"0028ff80 000100 kal_5_mouth1_TA_tex_txt", -"00290080 000100 kal_5_mouth2_TA_tex_txt", -"00290180 000100 kal_5_mouth3_TA_tex_txt", -"00290280 000100 kal_5_mouth4_TA_tex_txt", -"00290380 000100 kal_5_mouth5_TA_tex_txt", -"00290480 000100 kal_5_mouth6_TA_tex_txt", -"00290580 000480 kal_5_tmem_txt", -"", -"00290a00 000020 kal_6_pal", -"00290a20 000100 kal_6_eye1_TA_tex_txt", -"00290b20 000100 kal_6_eye2_TA_tex_txt", -"00290c20 000100 kal_6_eye3_TA_tex_txt", -"00290d20 000100 kal_6_eye4_TA_tex_txt", -"00290e20 000100 kal_6_eye5_TA_tex_txt", -"00290f20 000100 kal_6_eye6_TA_tex_txt", -"00291020 000100 kal_6_eye7_TA_tex_txt", -"00291120 000100 kal_6_eye8_TA_tex_txt", -"00291220 000100 kal_6_mouth1_TA_tex_txt", -"00291320 000100 kal_6_mouth2_TA_tex_txt", -"00291420 000100 kal_6_mouth3_TA_tex_txt", -"00291520 000100 kal_6_mouth4_TA_tex_txt", -"00291620 000100 kal_6_mouth5_TA_tex_txt", -"00291720 000100 kal_6_mouth6_TA_tex_txt", -"00291820 000480 kal_6_tmem_txt", -"", -"00294510 001b20 lon_1_v", -"00296030 000280 head_lon_model", -"002962b0 000088 Rarm2_lon_model", -"00296338 000078 Rarm1_lon_model", -"002963b0 000088 Larm2_lon_model", -"00296438 000078 Larm1_lon_model", -"002964b0 0000a8 chest_lon_model", -"00296558 000060 tail1_lon_model", -"002965b8 000090 tail2_lon_model", -"00296648 000080 Rfoot2_lon_model", -"002966c8 0000c0 Rfoot1_lon_model", -"00296788 000080 Lfoot2_lon_model", -"00296808 0000c0 Lfoot1_lon_model", -"002968c8 000070 base_lon_model", -"00296938 000138 cKF_je_r_lon_1_tbl", -"00296a70 000008 cKF_bs_r_lon_1", -"", -"00296a80 000020 lon_1_pal", -"00296aa0 000100 lon_1_eye1_TA_tex_txt", -"00296ba0 000100 lon_1_eye2_TA_tex_txt", -"00296ca0 000100 lon_1_eye3_TA_tex_txt", -"00296da0 000100 lon_1_eye4_TA_tex_txt", -"00296ea0 000100 lon_1_eye5_TA_tex_txt", -"00296fa0 000100 lon_1_eye6_TA_tex_txt", -"002970a0 000100 lon_1_eye7_TA_tex_txt", -"002971a0 000100 lon_1_eye8_TA_tex_txt", -"002972a0 000100 lon_1_mouth1_TA_tex_txt", -"002973a0 000100 lon_1_mouth2_TA_tex_txt", -"002974a0 000100 lon_1_mouth3_TA_tex_txt", -"002975a0 000100 lon_1_mouth4_TA_tex_txt", -"002976a0 000100 lon_1_mouth5_TA_tex_txt", -"002977a0 000100 lon_1_mouth6_TA_tex_txt", -"002978a0 0004c0 lon_1_tmem_txt", -"", -"00297d60 000020 lon_2_pal", -"00297d80 000100 lon_2_eye1_TA_tex_txt", -"00297e80 000100 lon_2_eye2_TA_tex_txt", -"00297f80 000100 lon_2_eye3_TA_tex_txt", -"00298080 000100 lon_2_eye4_TA_tex_txt", -"00298180 000100 lon_2_eye5_TA_tex_txt", -"00298280 000100 lon_2_eye6_TA_tex_txt", -"00298380 000100 lon_2_eye7_TA_tex_txt", -"00298480 000100 lon_2_eye8_TA_tex_txt", -"00298580 000100 lon_2_mouth1_TA_tex_txt", -"00298680 000100 lon_2_mouth2_TA_tex_txt", -"00298780 000100 lon_2_mouth3_TA_tex_txt", -"00298880 000100 lon_2_mouth4_TA_tex_txt", -"00298980 000100 lon_2_mouth5_TA_tex_txt", -"00298a80 000100 lon_2_mouth6_TA_tex_txt", -"00298b80 0004c0 lon_2_tmem_txt", -"", -"00299040 000020 lon_3_pal", -"00299060 000100 lon_3_eye1_TA_tex_txt", -"00299160 000100 lon_3_eye2_TA_tex_txt", -"00299260 000100 lon_3_eye3_TA_tex_txt", -"00299360 000100 lon_3_eye4_TA_tex_txt", -"00299460 000100 lon_3_eye5_TA_tex_txt", -"00299560 000100 lon_3_eye6_TA_tex_txt", -"00299660 000100 lon_3_eye7_TA_tex_txt", -"00299760 000100 lon_3_eye8_TA_tex_txt", -"00299860 000100 lon_3_mouth1_TA_tex_txt", -"00299960 000100 lon_3_mouth2_TA_tex_txt", -"00299a60 000100 lon_3_mouth3_TA_tex_txt", -"00299b60 000100 lon_3_mouth4_TA_tex_txt", -"00299c60 000100 lon_3_mouth5_TA_tex_txt", -"00299d60 000100 lon_3_mouth6_TA_tex_txt", -"00299e60 0004c0 lon_3_tmem_txt", -"", -"0029a320 000020 lon_4_pal", -"0029a340 000100 lon_4_eye1_TA_tex_txt", -"0029a440 000100 lon_4_eye2_TA_tex_txt", -"0029a540 000100 lon_4_eye3_TA_tex_txt", -"0029a640 000100 lon_4_eye4_TA_tex_txt", -"0029a740 000100 lon_4_eye5_TA_tex_txt", -"0029a840 000100 lon_4_eye6_TA_tex_txt", -"0029a940 000100 lon_4_eye7_TA_tex_txt", -"0029aa40 000100 lon_4_eye8_TA_tex_txt", -"0029ab40 000100 lon_4_mouth1_TA_tex_txt", -"0029ac40 000100 lon_4_mouth2_TA_tex_txt", -"0029ad40 000100 lon_4_mouth3_TA_tex_txt", -"0029ae40 000100 lon_4_mouth4_TA_tex_txt", -"0029af40 000100 lon_4_mouth5_TA_tex_txt", -"0029b040 000100 lon_4_mouth6_TA_tex_txt", -"0029b140 0004c0 lon_4_tmem_txt", -"", -"0029d9a0 001420 mos_1_v", -"0029edc0 0001d0 head_mos_model", -"0029ef90 0000e0 mouth_mos_model", -"0029f070 0000b8 hand_mos_model", -"0029f128 000088 Rarm2_mos_model", -"0029f1b0 000078 Rarm1_mos_model", -"0029f228 000088 Larm2_mos_model", -"0029f2b0 000078 Larm1_mos_model", -"0029f328 0000d8 chest_mos_model", -"0029f400 000088 base_mos_model", -"0029f488 000138 cKF_je_r_mos_1_tbl", -"0029f5c0 000008 cKF_bs_r_mos_1", -"", -"0029f5e0 000020 mos_1_pal", -"0029f600 000100 mos_1_eye1_TA_tex_txt", -"0029f700 000100 mos_1_eye2_TA_tex_txt", -"0029f800 000100 mos_1_eye3_TA_tex_txt", -"0029f900 000100 mos_1_eye4_TA_tex_txt", -"0029fa00 000100 mos_1_eye5_TA_tex_txt", -"0029fb00 000100 mos_1_eye6_TA_tex_txt", -"0029fc00 000100 mos_1_eye7_TA_tex_txt", -"0029fd00 000100 mos_1_eye8_TA_tex_txt", -"0029fe00 000100 mos_1_mouth1_TA_tex_txt", -"0029ff00 000100 mos_1_mouth2_TA_tex_txt", -"002a0000 000100 mos_1_mouth3_TA_tex_txt", -"002a0100 000100 mos_1_mouth4_TA_tex_txt", -"002a0200 000100 mos_1_mouth5_TA_tex_txt", -"002a0300 000100 mos_1_mouth6_TA_tex_txt", -"002a0400 000680 mos_1_tmem_txt", -"", -"002a0a80 001420 mol_1_v", -"002a1ea0 0001d0 head_mol_model", -"002a2070 0000e0 mouth_mol_model", -"002a2150 0000b8 hand_mol_model", -"002a2208 000088 Rarm2_mol_model", -"002a2290 000078 Rarm1_mol_model", -"002a2308 000088 Larm2_mol_model", -"002a2390 000078 Larm1_mol_model", -"002a2408 0000d8 chest_mol_model", -"002a24e0 000088 base_mol_model", -"002a2568 000138 cKF_je_r_mol_1_tbl", -"002a26a0 000008 cKF_bs_r_mol_1", -"", -"002a26c0 000020 mol_1_pal", -"002a26e0 000100 mol_1_eye1_TA_tex_txt", -"002a27e0 000100 mol_1_eye2_TA_tex_txt", -"002a28e0 000100 mol_1_eye3_TA_tex_txt", -"002a29e0 000100 mol_1_eye4_TA_tex_txt", -"002a2ae0 000100 mol_1_eye5_TA_tex_txt", -"002a2be0 000100 mol_1_eye6_TA_tex_txt", -"002a2ce0 000100 mol_1_eye7_TA_tex_txt", -"002a2de0 000100 mol_1_eye8_TA_tex_txt", -"002a2ee0 000100 mol_1_mouth1_TA_tex_txt", -"002a2fe0 000100 mol_1_mouth2_TA_tex_txt", -"002a30e0 000100 mol_1_mouth3_TA_tex_txt", -"002a31e0 000100 mol_1_mouth4_TA_tex_txt", -"002a32e0 000100 mol_1_mouth5_TA_tex_txt", -"002a33e0 000100 mol_1_mouth6_TA_tex_txt", -"002a34e0 000680 mol_1_tmem_txt", -"", -"002a3b60 001540 lrc_1_v", -"002a50a0 000188 head_lrc_model", -"002a5228 000078 mouth_lrc_model", -"002a52a0 0000b8 Rarm2_lrc_model", -"002a5358 000078 Rarm1_lrc_model", -"002a53d0 0000b8 Larm2_lrc_model", -"002a5488 000078 Larm1_lrc_model", -"002a5500 0000c8 chest_lrc_model", -"002a55c8 000078 tail1_lrc_model", -"002a5640 0000a0 tail2_lrc_model", -"002a56e0 000080 Rfoot2_lrc_model", -"002a5760 000058 Rfoot1_lrc_model", -"002a57b8 000080 Lfoot2_rcd_model", -"002a5838 000058 Lfoot1_lrc_model", -"002a5890 000080 base_lrc_model", -"002a5910 000138 cKF_je_r_lrc_1_tbl", -"002a5a48 000008 cKF_bs_r_lrc_1", -"", -"002a5a60 000020 lrc_1_pal", -"002a5a80 000100 lrc_1_eye1_TA_tex_txt", -"002a5b80 000100 lrc_1_eye2_TA_tex_txt", -"002a5c80 000100 lrc_1_eye3_TA_tex_txt", -"002a5d80 000100 lrc_1_eye4_TA_tex_txt", -"002a5e80 000100 lrc_1_eye5_TA_tex_txt", -"002a5f80 000100 lrc_1_eye6_TA_tex_txt", -"002a6080 000100 lrc_1_eye7_TA_tex_txt", -"002a6180 000100 lrc_1_eye8_TA_tex_txt", -"002a6280 000680 lrc_1_tmem_txt", -"", -"002a6900 001480 mka_1_v", -"002a7d80 000160 head_mka_model", -"002a7ee0 000088 Rarm2_mka_model", -"002a7f68 000078 Rarm1_mka_model", -"002a7fe0 000088 Larm2_mka_model", -"002a8068 000078 Larm1_mka_model", -"002a80e0 000090 chest_mka_model", -"002a8170 000058 tail1_mka_model", -"002a81c8 000090 tail2_mka_model", -"002a8258 000090 Rfoot2_mka_model", -"002a82e8 0000c0 Rfoot1_mka_model", -"002a83a8 000090 Lfoot2_mka_model", -"002a8438 0000c0 Lfoot1_mka_model", -"002a84f8 000070 base_mka_model", -"002a8568 000138 cKF_je_r_mka_1_tbl", -"002a86a0 000008 cKF_bs_r_mka_1", -"", -"002a86c0 000020 mka_1_pal", -"002a86e0 000480 mka_1_tmem_txt", -"", -"002a99a8 001800 mus_1_v", -"002ab1a8 0001d8 head_mus_model", -"002ab380 000068 mouth_mus_model", -"002ab3e8 000088 Rarm2_mus_model", -"002ab470 000078 Rarm1_mus_model", -"002ab4e8 000088 Larm2_mus_model", -"002ab570 000078 Larm1_mus_model", -"002ab5e8 0000a8 chest_mus_model", -"002ab690 000060 tail1_mus_model", -"002ab6f0 000090 tail2_mus_model", -"002ab780 000080 Rfoot2_mus_model", -"002ab800 0000c0 Rfoot1_mus_model", -"002ab8c0 000080 Lfoot2_mus_model", -"002ab940 0000c0 Lfoot1_mus_model", -"002aba00 000070 base_mus_model", -"002aba70 000138 cKF_je_r_mus_1_tbl", -"002abba8 000008 cKF_bs_r_mus_1", -"", -"002abbc0 000020 mus_1_pal", -"002abbe0 000100 mus_1_eye1_TA_tex_txt", -"002abce0 000100 mus_1_eye2_TA_tex_txt", -"002abde0 000100 mus_1_eye3_TA_tex_txt", -"002abee0 000100 mus_1_eye4_TA_tex_txt", -"002abfe0 000100 mus_1_eye5_TA_tex_txt", -"002ac0e0 000100 mus_1_eye6_TA_tex_txt", -"002ac1e0 000100 mus_1_eye7_TA_tex_txt", -"002ac2e0 000100 mus_1_eye8_TA_tex_txt", -"002ac3e0 000100 mus_1_mouth1_TA_tex_txt", -"002ac4e0 000100 mus_1_mouth2_TA_tex_txt", -"002ac5e0 000100 mus_1_mouth3_TA_tex_txt", -"002ac6e0 000100 mus_1_mouth4_TA_tex_txt", -"002ac7e0 000100 mus_1_mouth5_TA_tex_txt", -"002ac8e0 000100 mus_1_mouth6_TA_tex_txt", -"002ac9e0 000400 mus_1_tmem_txt", -"", -"002acde0 000020 mus_2_pal", -"002ace00 000100 mus_2_eye1_TA_tex_txt", -"002acf00 000100 mus_2_eye2_TA_tex_txt", -"002ad000 000100 mus_2_eye3_TA_tex_txt", -"002ad100 000100 mus_2_eye4_TA_tex_txt", -"002ad200 000100 mus_2_eye5_TA_tex_txt", -"002ad300 000100 mus_2_eye6_TA_tex_txt", -"002ad400 000100 mus_2_eye7_TA_tex_txt", -"002ad500 000100 mus_2_eye8_TA_tex_txt", -"002ad600 000100 mus_2_mouth1_TA_tex_txt", -"002ad700 000100 mus_2_mouth2_TA_tex_txt", -"002ad800 000100 mus_2_mouth3_TA_tex_txt", -"002ad900 000100 mus_2_mouth4_TA_tex_txt", -"002ada00 000100 mus_2_mouth5_TA_tex_txt", -"002adb00 000100 mus_2_mouth6_TA_tex_txt", -"002adc00 000400 mus_2_tmem_txt", -"", -"002ae000 000020 mus_3_pal", -"002ae020 000100 mus_3_eye1_TA_tex_txt", -"002ae120 000100 mus_3_eye2_TA_tex_txt", -"002ae220 000100 mus_3_eye3_TA_tex_txt", -"002ae320 000100 mus_3_eye4_TA_tex_txt", -"002ae420 000100 mus_3_eye5_TA_tex_txt", -"002ae520 000100 mus_3_eye6_TA_tex_txt", -"002ae620 000100 mus_3_eye7_TA_tex_txt", -"002ae720 000100 mus_3_eye8_TA_tex_txt", -"002ae820 000100 mus_3_mouth1_TA_tex_txt", -"002ae920 000100 mus_3_mouth2_TA_tex_txt", -"002aea20 000100 mus_3_mouth3_TA_tex_txt", -"002aeb20 000100 mus_3_mouth4_TA_tex_txt", -"002aec20 000100 mus_3_mouth5_TA_tex_txt", -"002aed20 000100 mus_3_mouth6_TA_tex_txt", -"002aee20 000400 mus_3_tmem_txt", -"", -"002af220 000020 mus_4_pal", -"002af240 000100 mus_4_eye1_TA_tex_txt", -"002af340 000100 mus_4_eye2_TA_tex_txt", -"002af440 000100 mus_4_eye3_TA_tex_txt", -"002af540 000100 mus_4_eye4_TA_tex_txt", -"002af640 000100 mus_4_eye5_TA_tex_txt", -"002af740 000100 mus_4_eye6_TA_tex_txt", -"002af840 000100 mus_4_eye7_TA_tex_txt", -"002af940 000100 mus_4_eye8_TA_tex_txt", -"002afa40 000100 mus_4_mouth1_TA_tex_txt", -"002afb40 000100 mus_4_mouth2_TA_tex_txt", -"002afc40 000100 mus_4_mouth3_TA_tex_txt", -"002afd40 000100 mus_4_mouth4_TA_tex_txt", -"002afe40 000100 mus_4_mouth5_TA_tex_txt", -"002aff40 000100 mus_4_mouth6_TA_tex_txt", -"002b0040 000400 mus_4_tmem_txt", -"", -"002b0440 000020 mus_5_pal", -"002b0460 000100 mus_5_eye1_TA_tex_txt", -"002b0560 000100 mus_5_eye2_TA_tex_txt", -"002b0660 000100 mus_5_eye3_TA_tex_txt", -"002b0760 000100 mus_5_eye4_TA_tex_txt", -"002b0860 000100 mus_5_eye5_TA_tex_txt", -"002b0960 000100 mus_5_eye6_TA_tex_txt", -"002b0a60 000100 mus_5_eye7_TA_tex_txt", -"002b0b60 000100 mus_5_eye8_TA_tex_txt", -"002b0c60 000100 mus_5_mouth1_TA_tex_txt", -"002b0d60 000100 mus_5_mouth2_TA_tex_txt", -"002b0e60 000100 mus_5_mouth3_TA_tex_txt", -"002b0f60 000100 mus_5_mouth4_TA_tex_txt", -"002b1060 000100 mus_5_mouth5_TA_tex_txt", -"002b1160 000100 mus_5_mouth6_TA_tex_txt", -"002b1260 000400 mus_5_tmem_txt", -"", -"002b1660 000020 mus_6_pal", -"002b1680 000100 mus_6_eye1_TA_tex_txt", -"002b1780 000100 mus_6_eye2_TA_tex_txt", -"002b1880 000100 mus_6_eye3_TA_tex_txt", -"002b1980 000100 mus_6_eye4_TA_tex_txt", -"002b1a80 000100 mus_6_eye5_TA_tex_txt", -"002b1b80 000100 mus_6_eye6_TA_tex_txt", -"002b1c80 000100 mus_6_eye7_TA_tex_txt", -"002b1d80 000100 mus_6_eye8_TA_tex_txt", -"002b1e80 000100 mus_6_mouth1_TA_tex_txt", -"002b1f80 000100 mus_6_mouth2_TA_tex_txt", -"002b2080 000100 mus_6_mouth3_TA_tex_txt", -"002b2180 000100 mus_6_mouth4_TA_tex_txt", -"002b2280 000100 mus_6_mouth5_TA_tex_txt", -"002b2380 000100 mus_6_mouth6_TA_tex_txt", -"002b2480 000400 mus_6_tmem_txt", -"", -"002b2880 000020 mus_7_pal", -"002b28a0 000100 mus_7_eye1_TA_tex_txt", -"002b29a0 000100 mus_7_eye2_TA_tex_txt", -"002b2aa0 000100 mus_7_eye3_TA_tex_txt", -"002b2ba0 000100 mus_7_eye4_TA_tex_txt", -"002b2ca0 000100 mus_7_eye5_TA_tex_txt", -"002b2da0 000100 mus_7_eye6_TA_tex_txt", -"002b2ea0 000100 mus_7_eye7_TA_tex_txt", -"002b2fa0 000100 mus_7_eye8_TA_tex_txt", -"002b30a0 000100 mus_7_mouth1_TA_tex_txt", -"002b31a0 000100 mus_7_mouth2_TA_tex_txt", -"002b32a0 000100 mus_7_mouth3_TA_tex_txt", -"002b33a0 000100 mus_7_mouth4_TA_tex_txt", -"002b34a0 000100 mus_7_mouth5_TA_tex_txt", -"002b35a0 000100 mus_7_mouth6_TA_tex_txt", -"002b36a0 000400 mus_7_tmem_txt", -"", -"002b3aa0 000020 mus_8_pal", -"002b3ac0 000100 mus_8_eye1_TA_tex_txt", -"002b3bc0 000100 mus_8_eye2_TA_tex_txt", -"002b3cc0 000100 mus_8_eye3_TA_tex_txt", -"002b3dc0 000100 mus_8_eye4_TA_tex_txt", -"002b3ec0 000100 mus_8_eye5_TA_tex_txt", -"002b3fc0 000100 mus_8_eye6_TA_tex_txt", -"002b40c0 000100 mus_8_eye7_TA_tex_txt", -"002b41c0 000100 mus_8_eye8_TA_tex_txt", -"002b42c0 000100 mus_8_mouth1_TA_tex_txt", -"002b43c0 000100 mus_8_mouth2_TA_tex_txt", -"002b44c0 000100 mus_8_mouth3_TA_tex_txt", -"002b45c0 000100 mus_8_mouth4_TA_tex_txt", -"002b46c0 000100 mus_8_mouth5_TA_tex_txt", -"002b47c0 000100 mus_8_mouth6_TA_tex_txt", -"002b48c0 000400 mus_8_tmem_txt", -"", -"002b4cc0 000020 mus_9_pal", -"002b4ce0 000100 mus_9_eye1_TA_tex_txt", -"002b4de0 000100 mus_9_eye2_TA_tex_txt", -"002b4ee0 000100 mus_9_eye3_TA_tex_txt", -"002b4fe0 000100 mus_9_eye4_TA_tex_txt", -"002b50e0 000100 mus_9_eye5_TA_tex_txt", -"002b51e0 000100 mus_9_eye6_TA_tex_txt", -"002b52e0 000100 mus_9_eye7_TA_tex_txt", -"002b53e0 000100 mus_9_eye8_TA_tex_txt", -"002b54e0 000100 mus_9_mouth1_TA_tex_txt", -"002b55e0 000100 mus_9_mouth2_TA_tex_txt", -"002b56e0 000100 mus_9_mouth3_TA_tex_txt", -"002b57e0 000100 mus_9_mouth4_TA_tex_txt", -"002b58e0 000100 mus_9_mouth5_TA_tex_txt", -"002b59e0 000100 mus_9_mouth6_TA_tex_txt", -"002b5ae0 000400 mus_9_tmem_txt", -"", -"002b5ee0 000020 mus_10_pal", -"002b5f00 000100 mus_10_eye1_TA_tex_txt", -"002b6000 000100 mus_10_eye2_TA_tex_txt", -"002b6100 000100 mus_10_eye3_TA_tex_txt", -"002b6200 000100 mus_10_eye4_TA_tex_txt", -"002b6300 000100 mus_10_eye5_TA_tex_txt", -"002b6400 000100 mus_10_eye6_TA_tex_txt", -"002b6500 000100 mus_10_eye7_TA_tex_txt", -"002b6600 000100 mus_10_eye8_TA_tex_txt", -"002b6700 000100 mus_10_mouth1_TA_tex_txt", -"002b6800 000100 mus_10_mouth2_TA_tex_txt", -"002b6900 000100 mus_10_mouth3_TA_tex_txt", -"002b6a00 000100 mus_10_mouth4_TA_tex_txt", -"002b6b00 000100 mus_10_mouth5_TA_tex_txt", -"002b6c00 000100 mus_10_mouth6_TA_tex_txt", -"002b6d00 000400 mus_10_tmem_txt", -"", -"002c4970 001ca0 hgh_1_v", -"002c6610 0002e0 head_hgh_model", -"002c68f0 000090 mouth_hgh_model", -"002c6980 000088 Rarm2_hgh_model", -"002c6a08 000078 Rarm1_hgh_model", -"002c6a80 000088 Larm2_hgh_model", -"002c6b08 000078 Larm1_hgh_model", -"002c6b80 000128 chest_hgh_model", -"002c6ca8 000080 tail1_hgh_model", -"002c6d28 000088 tail2_hgh_model", -"002c6db0 000080 Rfoot2_hgh_model", -"002c6e30 000058 Rfoot1_hgh_model", -"002c6e88 000080 Lfoot2_hgh_model", -"002c6f08 000058 Lfoot1_hgh_model", -"002c6f60 000070 base_hgh_model", -"002c6fd0 000138 cKF_je_r_hgh_1_tbl", -"002c7108 000008 cKF_bs_r_hgh_1", -"", -"002c7120 000020 hgh_1_pal", -"002c7140 000100 hgh_1_eye1_TA_tex_txt", -"002c7240 000100 hgh_1_eye2_TA_tex_txt", -"002c7340 000100 hgh_1_eye3_TA_tex_txt", -"002c7440 000100 hgh_1_eye4_TA_tex_txt", -"002c7540 000100 hgh_1_eye5_TA_tex_txt", -"002c7640 000100 hgh_1_eye6_TA_tex_txt", -"002c7740 000100 hgh_1_eye7_TA_tex_txt", -"002c7840 000100 hgh_1_eye8_TA_tex_txt", -"002c7940 0006c0 hgh_1_tmem_txt", -"", -"002c8000 001c80 hgs_1_v", -"002c9c80 0002e0 head_hgs_model", -"002c9f60 000090 mouth_hgs_model", -"002c9ff0 000088 Rarm2_hgs_model", -"002ca078 000078 Rarm1_hgs_model", -"002ca0f0 000088 Larm2_hgs_model", -"002ca178 000078 Larm1_hgs_model", -"002ca1f0 000128 chest_hgs_model", -"002ca318 000080 tail1_hgs_model", -"002ca398 000088 tail2_hgs_model", -"002ca420 000080 Rfoot2_hgs_model", -"002ca4a0 000058 Rfoot1_hgs_model", -"002ca4f8 000080 Lfoot2_hgs_model", -"002ca578 000058 Lfoot1_hgs_model", -"002ca5d0 000070 base_hgs_model", -"002ca640 000138 cKF_je_r_hgs_1_tbl", -"002ca778 000008 cKF_bs_r_hgs_1", -"", -"002ca780 000020 hgs_1_pal", -"002ca7a0 000100 hgs_1_eye1_TA_tex_txt", -"002ca8a0 000100 hgs_1_eye2_TA_tex_txt", -"002ca9a0 000100 hgs_1_eye3_TA_tex_txt", -"002caaa0 000100 hgs_1_eye4_TA_tex_txt", -"002caba0 000100 hgs_1_eye5_TA_tex_txt", -"002caca0 000100 hgs_1_eye6_TA_tex_txt", -"002cada0 000100 hgs_1_eye7_TA_tex_txt", -"002caea0 000100 hgs_1_eye8_TA_tex_txt", -"002cafa0 0006c0 hgs_1_tmem_txt", -"", -"0032a7b0 001d80 oct_1_v", -"0032c530 000108 head_oct_model", -"0032c638 0000a8 Rarm2_oct_model", -"0032c6e0 000080 Rarm1_oct_model", -"0032c760 0000b0 Larm2_oct_model", -"0032c810 000080 Larm1_oct_model", -"0032c890 0000a8 chest_oct_model", -"0032c938 0000c0 Rfoot3_oct_model", -"0032c9f8 0000c0 Rfoot2_oct_model", -"0032cab8 0000b8 Rfoot1_oct_model", -"0032cb70 0000c0 Lfoot3_oct_model", -"0032cc30 0000c0 Lfoot2_oct_model", -"0032ccf0 0000c0 Lfoot1_oct_model", -"0032cdb0 000070 base_oct_model", -"0032ce20 000138 cKF_je_r_oct_1_tbl", -"0032cf58 000008 cKF_bs_r_oct_1", -"", -"0032cf60 000020 oct_1_pal", -"0032cf80 000100 oct_1_eye1_TA_tex_txt", -"0032d080 000100 oct_1_eye2_TA_tex_txt", -"0032d180 000100 oct_1_eye3_TA_tex_txt", -"0032d280 000100 oct_1_eye4_TA_tex_txt", -"0032d380 000100 oct_1_eye5_TA_tex_txt", -"0032d480 000100 oct_1_eye6_TA_tex_txt", -"0032d580 000100 oct_1_eye7_TA_tex_txt", -"0032d680 000100 oct_1_eye8_TA_tex_txt", -"0032d780 000200 oct_1_tmem_txt", -"", -"0032d980 0017d0 ost_1_v", -"0032f150 0001d0 head_ost_model", -"0032f320 000078 mouth_ost_model", -"0032f398 000080 Rarm2_ost_model", -"0032f418 000078 Rarm1_ost_model", -"0032f490 000080 Larm2_ost_model", -"0032f510 000078 Larm1_ost_model", -"0032f588 0000d8 chest_ost_model", -"0032f660 0000f8 tail_ost_model", -"0032f758 0000a0 Rfoot3_ost_model", -"0032f7f8 000080 Rfoot2_ost_model", -"0032f878 000058 Rfoot1_ost_model", -"0032f8d0 0000a0 Lfoot3_ost_model", -"0032f970 000080 Lfoot2_ost_model", -"0032f9f0 000058 Lfoot1_ost_model", -"0032fa48 000078 base_ost_model", -"0032fac0 000138 cKF_je_r_ost_1_tbl", -"0032fbf8 000008 cKF_bs_r_ost_1", -"", -"0032fc00 000020 ost_1_pal", -"0032fc20 000100 ost_1_eye1_TA_tex_txt", -"0032fd20 000100 ost_1_eye2_TA_tex_txt", -"0032fe20 000100 ost_1_eye3_TA_tex_txt", -"0032ff20 000100 ost_1_eye4_TA_tex_txt", -"00330020 000100 ost_1_eye5_TA_tex_txt", -"00330120 000100 ost_1_eye6_TA_tex_txt", -"00330220 000100 ost_1_eye7_TA_tex_txt", -"00330320 000100 ost_1_eye8_TA_tex_txt", -"00330420 000540 ost_1_tmem_txt", -"", -"00330960 000020 ost_2_pal", -"00330980 000100 ost_2_eye1_TA_tex_txt", -"00330a80 000100 ost_2_eye2_TA_tex_txt", -"00330b80 000100 ost_2_eye3_TA_tex_txt", -"00330c80 000100 ost_2_eye4_TA_tex_txt", -"00330d80 000100 ost_2_eye5_TA_tex_txt", -"00330e80 000100 ost_2_eye6_TA_tex_txt", -"00330f80 000100 ost_2_eye7_TA_tex_txt", -"00331080 000100 ost_2_eye8_TA_tex_txt", -"00331180 000540 ost_2_tmem_txt", -"", -"003316c0 000020 ost_3_pal", -"003316e0 000100 ost_3_eye1_TA_tex_txt", -"003317e0 000100 ost_3_eye2_TA_tex_txt", -"003318e0 000100 ost_3_eye3_TA_tex_txt", -"003319e0 000100 ost_3_eye4_TA_tex_txt", -"00331ae0 000100 ost_3_eye5_TA_tex_txt", -"00331be0 000100 ost_3_eye6_TA_tex_txt", -"00331ce0 000100 ost_3_eye7_TA_tex_txt", -"00331de0 000100 ost_3_eye8_TA_tex_txt", -"00331ee0 000540 ost_3_tmem_txt", -"", -"00332420 000020 ost_4_pal", -"00332440 000100 ost_4_eye1_TA_tex_txt", -"00332540 000100 ost_4_eye2_TA_tex_txt", -"00332640 000100 ost_4_eye3_TA_tex_txt", -"00332740 000100 ost_4_eye4_TA_tex_txt", -"00332840 000100 ost_4_eye5_TA_tex_txt", -"00332940 000100 ost_4_eye6_TA_tex_txt", -"00332a40 000100 ost_4_eye7_TA_tex_txt", -"00332b40 000100 ost_4_eye8_TA_tex_txt", -"00332c40 000540 ost_4_tmem_txt", -"", -"00333a28 0017e0 pgn_1_v", -"00335208 0001d0 head_pgn_model", -"003353d8 000078 mouth_pgn_model", -"00335450 000080 Rarm2_pgn_model", -"003354d0 000078 Rarm1_pgn_model", -"00335548 000080 Larm2_pgn_model", -"003355c8 000078 Larm1_pgn_model", -"00335640 0000d8 chest_pgn_model", -"00335718 000088 tail1_pgn_model", -"003357a0 000088 Rfoot3_pgn_model", -"00335828 000080 Rfoot2_pgn_model", -"003358a8 000058 Rfoot1_pgn_model", -"00335900 000088 Lfoot3_pgn_model", -"00335988 000080 Lfoot2_pgn_model", -"00335a08 000058 Lfoot1_pgn_model", -"00335a60 0000a0 base_pgn_model", -"00335b00 000138 cKF_je_r_pgn_1_tbl", -"00335c38 000008 cKF_bs_r_pgn_1", -"", -"00335c40 000020 pgn_1_pal", -"00335c60 000100 pgn_1_eye1_TA_tex_txt", -"00335d60 000100 pgn_1_eye2_TA_tex_txt", -"00335e60 000100 pgn_1_eye3_TA_tex_txt", -"00335f60 000100 pgn_1_eye4_TA_tex_txt", -"00336060 000100 pgn_1_eye5_TA_tex_txt", -"00336160 000100 pgn_1_eye6_TA_tex_txt", -"00336260 000100 pgn_1_eye7_TA_tex_txt", -"00336360 000100 pgn_1_eye8_TA_tex_txt", -"00336460 000580 pgn_1_tmem_txt", -"", -"003369e0 000020 pgn_2_pal", -"00336a00 000100 pgn_2_eye1_TA_tex_txt", -"00336b00 000100 pgn_2_eye2_TA_tex_txt", -"00336c00 000100 pgn_2_eye3_TA_tex_txt", -"00336d00 000100 pgn_2_eye4_TA_tex_txt", -"00336e00 000100 pgn_2_eye5_TA_tex_txt", -"00336f00 000100 pgn_2_eye6_TA_tex_txt", -"00337000 000100 pgn_2_eye7_TA_tex_txt", -"00337100 000100 pgn_2_eye8_TA_tex_txt", -"00337200 000580 pgn_2_tmem_txt", -"", -"00337780 000020 pgn_3_pal", -"003377a0 000100 pgn_3_eye1_TA_tex_txt", -"003378a0 000100 pgn_3_eye2_TA_tex_txt", -"003379a0 000100 pgn_3_eye3_TA_tex_txt", -"00337aa0 000100 pgn_3_eye4_TA_tex_txt", -"00337ba0 000100 pgn_3_eye5_TA_tex_txt", -"00337ca0 000100 pgn_3_eye6_TA_tex_txt", -"00337da0 000100 pgn_3_eye7_TA_tex_txt", -"00337ea0 000100 pgn_3_eye8_TA_tex_txt", -"00337fa0 000580 pgn_3_tmem_txt", -"", -"00338520 000020 pgn_4_pal", -"00338540 000100 pgn_4_eye1_TA_tex_txt", -"00338640 000100 pgn_4_eye2_TA_tex_txt", -"00338740 000100 pgn_4_eye3_TA_tex_txt", -"00338840 000100 pgn_4_eye4_TA_tex_txt", -"00338940 000100 pgn_4_eye5_TA_tex_txt", -"00338a40 000100 pgn_4_eye6_TA_tex_txt", -"00338b40 000100 pgn_4_eye7_TA_tex_txt", -"00338c40 000100 pgn_4_eye8_TA_tex_txt", -"00338d40 000580 pgn_4_tmem_txt", -"", -"003392c0 000020 pgn_5_pal", -"003392e0 000100 pgn_5_eye1_TA_tex_txt", -"003393e0 000100 pgn_5_eye2_TA_tex_txt", -"003394e0 000100 pgn_5_eye3_TA_tex_txt", -"003395e0 000100 pgn_5_eye4_TA_tex_txt", -"003396e0 000100 pgn_5_eye5_TA_tex_txt", -"003397e0 000100 pgn_5_eye6_TA_tex_txt", -"003398e0 000100 pgn_5_eye7_TA_tex_txt", -"003399e0 000100 pgn_5_eye8_TA_tex_txt", -"00339ae0 000580 pgn_5_tmem_txt", -"", -"0033a060 000020 pgn_6_pal", -"0033a080 000100 pgn_6_eye1_TA_tex_txt", -"0033a180 000100 pgn_6_eye2_TA_tex_txt", -"0033a280 000100 pgn_6_eye3_TA_tex_txt", -"0033a380 000100 pgn_6_eye4_TA_tex_txt", -"0033a480 000100 pgn_6_eye5_TA_tex_txt", -"0033a580 000100 pgn_6_eye6_TA_tex_txt", -"0033a680 000100 pgn_6_eye7_TA_tex_txt", -"0033a780 000100 pgn_6_eye8_TA_tex_txt", -"0033a880 000580 pgn_6_tmem_txt", -"", -"0033ae00 000020 pgn_7_pal", -"0033ae20 000100 pgn_7_eye1_TA_tex_txt", -"0033af20 000100 pgn_7_eye2_TA_tex_txt", -"0033b020 000100 pgn_7_eye3_TA_tex_txt", -"0033b120 000100 pgn_7_eye4_TA_tex_txt", -"0033b220 000100 pgn_7_eye5_TA_tex_txt", -"0033b320 000100 pgn_7_eye6_TA_tex_txt", -"0033b420 000100 pgn_7_eye7_TA_tex_txt", -"0033b520 000100 pgn_7_eye8_TA_tex_txt", -"0033b620 000580 pgn_7_tmem_txt", -"", -"0033bba0 000020 pgn_8_pal", -"0033bbc0 000100 pgn_8_eye1_TA_tex_txt", -"0033bcc0 000100 pgn_8_eye2_TA_tex_txt", -"0033bdc0 000100 pgn_8_eye3_TA_tex_txt", -"0033bec0 000100 pgn_8_eye4_TA_tex_txt", -"0033bfc0 000100 pgn_8_eye5_TA_tex_txt", -"0033c0c0 000100 pgn_8_eye6_TA_tex_txt", -"0033c1c0 000100 pgn_8_eye7_TA_tex_txt", -"0033c2c0 000100 pgn_8_eye8_TA_tex_txt", -"0033c3c0 000580 pgn_8_tmem_txt", -"", -"0033c940 0013f0 pig_1_v", -"0033dd30 000138 head_pig_model", -"0033de68 000088 Rarm2_pig_model", -"0033def0 000078 Rarm1_pig_model", -"0033df68 000088 Larm2_pig_model", -"0033dff0 000078 Larm1_pig_model", -"0033e068 0000a8 chest_pig_model", -"0033e110 000080 tail1_pig_model", -"0033e190 000080 Rfoot2_pig_model", -"0033e210 0000c0 Rfoot1_pig_model", -"0033e2d0 000080 Lfoot2_pig_model", -"0033e350 0000c0 Lfoot1_pig_model", -"0033e410 000070 base_pig_model", -"0033e480 000138 cKF_je_r_pig_1_tbl", -"0033e5b8 000008 cKF_bs_r_pig_1", -"", -"0033e5c0 000020 pig_1_pal", -"0033e5e0 000100 pig_1_eye1_TA_tex_txt", -"0033e6e0 000100 pig_1_eye2_TA_tex_txt", -"0033e7e0 000100 pig_1_eye3_TA_tex_txt", -"0033e8e0 000100 pig_1_eye4_TA_tex_txt", -"0033e9e0 000100 pig_1_eye5_TA_tex_txt", -"0033eae0 000100 pig_1_eye6_TA_tex_txt", -"0033ebe0 000100 pig_1_eye7_TA_tex_txt", -"0033ece0 000100 pig_1_eye8_TA_tex_txt", -"0033ede0 000100 pig_1_mouth1_TA_tex_txt", -"0033eee0 000100 pig_1_mouth2_TA_tex_txt", -"0033efe0 000100 pig_1_mouth3_TA_tex_txt", -"0033f0e0 000100 pig_1_mouth4_TA_tex_txt", -"0033f1e0 000100 pig_1_mouth5_TA_tex_txt", -"0033f2e0 000100 pig_1_mouth6_TA_tex_txt", -"0033f3e0 000380 pig_1_tmem_txt", -"", -"0033f760 000020 pig_2_pal", -"0033f780 000100 pig_2_eye1_TA_tex_txt", -"0033f880 000100 pig_2_eye2_TA_tex_txt", -"0033f980 000100 pig_2_eye3_TA_tex_txt", -"0033fa80 000100 pig_2_eye4_TA_tex_txt", -"0033fb80 000100 pig_2_eye5_TA_tex_txt", -"0033fc80 000100 pig_2_eye6_TA_tex_txt", -"0033fd80 000100 pig_2_eye7_TA_tex_txt", -"0033fe80 000100 pig_2_eye8_TA_tex_txt", -"0033ff80 000100 pig_2_mouth1_TA_tex_txt", -"00340080 000100 pig_2_mouth2_TA_tex_txt", -"00340180 000100 pig_2_mouth3_TA_tex_txt", -"00340280 000100 pig_2_mouth4_TA_tex_txt", -"00340380 000100 pig_2_mouth5_TA_tex_txt", -"00340480 000100 pig_2_mouth6_TA_tex_txt", -"00340580 000380 pig_2_tmem_txt", -"", -"00340900 000020 pig_11_pal", -"00340920 000100 pig_11_eye1_TA_tex_txt", -"00340a20 000100 pig_11_eye2_TA_tex_txt", -"00340b20 000100 pig_11_eye3_TA_tex_txt", -"00340c20 000100 pig_11_eye4_TA_tex_txt", -"00340d20 000100 pig_11_eye5_TA_tex_txt", -"00340e20 000100 pig_11_eye6_TA_tex_txt", -"00340f20 000100 pig_11_eye7_TA_tex_txt", -"00341020 000100 pig_11_eye8_TA_tex_txt", -"00341120 000100 pig_11_mouth1_TA_tex_txt", -"00341220 000100 pig_11_mouth2_TA_tex_txt", -"00341320 000100 pig_11_mouth3_TA_tex_txt", -"00341420 000100 pig_11_mouth4_TA_tex_txt", -"00341520 000100 pig_11_mouth5_TA_tex_txt", -"00341620 000100 pig_11_mouth6_TA_tex_txt", -"00341720 000380 pig_11_tmem_txt", -"", -"00341aa0 000020 pig_3_pal", -"00341ac0 000100 pig_3_eye1_TA_tex_txt", -"00341bc0 000100 pig_3_eye2_TA_tex_txt", -"00341cc0 000100 pig_3_eye3_TA_tex_txt", -"00341dc0 000100 pig_3_eye4_TA_tex_txt", -"00341ec0 000100 pig_3_eye5_TA_tex_txt", -"00341fc0 000100 pig_3_eye6_TA_tex_txt", -"003420c0 000100 pig_3_eye7_TA_tex_txt", -"003421c0 000100 pig_3_eye8_TA_tex_txt", -"003422c0 000100 pig_3_mouth1_TA_tex_txt", -"003423c0 000100 pig_3_mouth2_TA_tex_txt", -"003424c0 000100 pig_3_mouth3_TA_tex_txt", -"003425c0 000100 pig_3_mouth4_TA_tex_txt", -"003426c0 000100 pig_3_mouth5_TA_tex_txt", -"003427c0 000100 pig_3_mouth6_TA_tex_txt", -"003428c0 000380 pig_3_tmem_txt", -"", -"00342c40 000020 pig_4_pal", -"00342c60 000100 pig_4_eye1_TA_tex_txt", -"00342d60 000100 pig_4_eye2_TA_tex_txt", -"00342e60 000100 pig_4_eye3_TA_tex_txt", -"00342f60 000100 pig_4_eye4_TA_tex_txt", -"00343060 000100 pig_4_eye5_TA_tex_txt", -"00343160 000100 pig_4_eye6_TA_tex_txt", -"00343260 000100 pig_4_eye7_TA_tex_txt", -"00343360 000100 pig_4_eye8_TA_tex_txt", -"00343460 000100 pig_4_mouth1_TA_tex_txt", -"00343560 000100 pig_4_mouth2_TA_tex_txt", -"00343660 000100 pig_4_mouth3_TA_tex_txt", -"00343760 000100 pig_4_mouth4_TA_tex_txt", -"00343860 000100 pig_4_mouth5_TA_tex_txt", -"00343960 000100 pig_4_mouth6_TA_tex_txt", -"00343a60 000380 pig_4_tmem_txt", -"", -"00343de0 000020 pig_5_pal", -"00343e00 000100 pig_5_eye1_TA_tex_txt", -"00343f00 000100 pig_5_eye2_TA_tex_txt", -"00344000 000100 pig_5_eye3_TA_tex_txt", -"00344100 000100 pig_5_eye4_TA_tex_txt", -"00344200 000100 pig_5_eye5_TA_tex_txt", -"00344300 000100 pig_5_eye6_TA_tex_txt", -"00344400 000100 pig_5_eye7_TA_tex_txt", -"00344500 000100 pig_5_eye8_TA_tex_txt", -"00344600 000100 pig_5_mouth1_TA_tex_txt", -"00344700 000100 pig_5_mouth2_TA_tex_txt", -"00344800 000100 pig_5_mouth3_TA_tex_txt", -"00344900 000100 pig_5_mouth4_TA_tex_txt", -"00344a00 000100 pig_5_mouth5_TA_tex_txt", -"00344b00 000100 pig_5_mouth6_TA_tex_txt", -"00344c00 000380 pig_5_tmem_txt", -"", -"00344f80 000020 pig_6_pal", -"00344fa0 000100 pig_6_eye1_TA_tex_txt", -"003450a0 000100 pig_6_eye2_TA_tex_txt", -"003451a0 000100 pig_6_eye3_TA_tex_txt", -"003452a0 000100 pig_6_eye4_TA_tex_txt", -"003453a0 000100 pig_6_eye5_TA_tex_txt", -"003454a0 000100 pig_6_eye6_TA_tex_txt", -"003455a0 000100 pig_6_eye7_TA_tex_txt", -"003456a0 000100 pig_6_eye8_TA_tex_txt", -"003457a0 000100 pig_6_mouth1_TA_tex_txt", -"003458a0 000100 pig_6_mouth2_TA_tex_txt", -"003459a0 000100 pig_6_mouth3_TA_tex_txt", -"00345aa0 000100 pig_6_mouth4_TA_tex_txt", -"00345ba0 000100 pig_6_mouth5_TA_tex_txt", -"00345ca0 000100 pig_6_mouth6_TA_tex_txt", -"00345da0 000380 pig_6_tmem_txt", -"", -"00346120 000020 pig_7_pal", -"00346140 000100 pig_7_eye1_TA_tex_txt", -"00346240 000100 pig_7_eye2_TA_tex_txt", -"00346340 000100 pig_7_eye3_TA_tex_txt", -"00346440 000100 pig_7_eye4_TA_tex_txt", -"00346540 000100 pig_7_eye5_TA_tex_txt", -"00346640 000100 pig_7_eye6_TA_tex_txt", -"00346740 000100 pig_7_eye7_TA_tex_txt", -"00346840 000100 pig_7_eye8_TA_tex_txt", -"00346940 000100 pig_7_mouth1_TA_tex_txt", -"00346a40 000100 pig_7_mouth2_TA_tex_txt", -"00346b40 000100 pig_7_mouth3_TA_tex_txt", -"00346c40 000100 pig_7_mouth4_TA_tex_txt", -"00346d40 000100 pig_7_mouth5_TA_tex_txt", -"00346e40 000100 pig_7_mouth6_TA_tex_txt", -"00346f40 000380 pig_7_tmem_txt", -"", -"003472c0 000020 pig_8_pal", -"003472e0 000100 pig_8_eye1_TA_tex_txt", -"003473e0 000100 pig_8_eye2_TA_tex_txt", -"003474e0 000100 pig_8_eye3_TA_tex_txt", -"003475e0 000100 pig_8_eye4_TA_tex_txt", -"003476e0 000100 pig_8_eye5_TA_tex_txt", -"003477e0 000100 pig_8_eye6_TA_tex_txt", -"003478e0 000100 pig_8_eye7_TA_tex_txt", -"003479e0 000100 pig_8_eye8_TA_tex_txt", -"00347ae0 000100 pig_8_mouth1_TA_tex_txt", -"00347be0 000100 pig_8_mouth2_TA_tex_txt", -"00347ce0 000100 pig_8_mouth3_TA_tex_txt", -"00347de0 000100 pig_8_mouth4_TA_tex_txt", -"00347ee0 000100 pig_8_mouth5_TA_tex_txt", -"00347fe0 000100 pig_8_mouth6_TA_tex_txt", -"003480e0 000380 pig_8_tmem_txt", -"", -"00348460 000020 pig_9_pal", -"00348480 000100 pig_9_eye1_TA_tex_txt", -"00348580 000100 pig_9_eye2_TA_tex_txt", -"00348680 000100 pig_9_eye3_TA_tex_txt", -"00348780 000100 pig_9_eye4_TA_tex_txt", -"00348880 000100 pig_9_eye5_TA_tex_txt", -"00348980 000100 pig_9_eye6_TA_tex_txt", -"00348a80 000100 pig_9_eye7_TA_tex_txt", -"00348b80 000100 pig_9_eye8_TA_tex_txt", -"00348c80 000100 pig_9_mouth1_TA_tex_txt", -"00348d80 000100 pig_9_mouth2_TA_tex_txt", -"00348e80 000100 pig_9_mouth3_TA_tex_txt", -"00348f80 000100 pig_9_mouth4_TA_tex_txt", -"00349080 000100 pig_9_mouth5_TA_tex_txt", -"00349180 000100 pig_9_mouth6_TA_tex_txt", -"00349280 000380 pig_9_tmem_txt", -"", -"00349600 000020 pig_10_pal", -"00349620 000100 pig_10_eye1_TA_tex_txt", -"00349720 000100 pig_10_eye2_TA_tex_txt", -"00349820 000100 pig_10_eye3_TA_tex_txt", -"00349920 000100 pig_10_eye4_TA_tex_txt", -"00349a20 000100 pig_10_eye5_TA_tex_txt", -"00349b20 000100 pig_10_eye6_TA_tex_txt", -"00349c20 000100 pig_10_eye7_TA_tex_txt", -"00349d20 000100 pig_10_eye8_TA_tex_txt", -"00349e20 000100 pig_10_mouth1_TA_tex_txt", -"00349f20 000100 pig_10_mouth2_TA_tex_txt", -"0034a020 000100 pig_10_mouth3_TA_tex_txt", -"0034a120 000100 pig_10_mouth4_TA_tex_txt", -"0034a220 000100 pig_10_mouth5_TA_tex_txt", -"0034a320 000100 pig_10_mouth6_TA_tex_txt", -"0034a420 000380 pig_10_tmem_txt", -"", -"0034a7a0 001cb0 pla_1_v", -"0034c450 0002b8 head_pla_model", -"0034c708 000088 Rarm2_pla_model", -"0034c790 000078 Rarm1_pla_model", -"0034c808 000088 Larm2_pla_model", -"0034c890 000078 Larm1_pla_model", -"0034c908 0000f8 chest_pla_model", -"0034ca00 000088 tail1_pla_model", -"0034ca88 000080 Rfoot2_pla_model", -"0034cb08 000058 Rfoot1_pla_model", -"0034cb60 000080 Lfoot2_pla_model", -"0034cbe0 000058 Lfoot1_pla_model", -"0034cc38 0000a0 base_pla_model", -"0034ccd8 000138 cKF_je_r_pla_1_tbl", -"0034ce10 000008 cKF_bs_r_pla_1", -"", -"0034ce18 001730 plc_1_v", -"0034e548 000198 head_plc_model", -"0034e6e0 000080 Rarm2_plc_model", -"0034e760 000088 Rarm1_plc_model", -"0034e7e8 000080 Larm2_plc_model", -"0034e868 000088 Larm1_plc_model", -"0034e8f0 000108 chest_plc_model", -"0034e9f8 000058 tail1_plc_model", -"0034ea50 0000a0 tail2_plc_model", -"0034eaf0 000088 Rfoot2_plc_model", -"0034eb78 000080 Rfoot1_plc_model", -"0034ebf8 000088 Lfoot2_plc_model", -"0034ec80 000080 Lfoot1_plc_model", -"0034ed00 0000d0 base_plc_model", -"0034edd0 000138 cKF_je_r_plc_1_tbl", -"0034ef08 000008 cKF_bs_r_plc_1", -"", -"0034ef20 000020 plc_1_pal", -"0034ef40 000100 plc_1_eye1_TA_tex_txt", -"0034f040 000100 plc_1_eye2_TA_tex_txt", -"0034f140 000100 plc_1_eye3_TA_tex_txt", -"0034f240 000100 plc_1_eye4_TA_tex_txt", -"0034f340 000100 plc_1_eye5_TA_tex_txt", -"0034f440 000100 plc_1_eye6_TA_tex_txt", -"0034f540 000100 plc_1_eye7_TA_tex_txt", -"0034f640 000100 plc_1_eye8_TA_tex_txt", -"0034f740 000100 plc_1_mouth1_TA_tex_txt", -"0034f840 000100 plc_1_mouth2_TA_tex_txt", -"0034f940 000100 plc_1_mouth3_TA_tex_txt", -"0034fa40 000100 plc_1_mouth4_TA_tex_txt", -"0034fb40 000100 plc_1_mouth5_TA_tex_txt", -"0034fc40 000100 plc_1_mouth6_TA_tex_txt", -"0034fd40 0006c0 plc_1_tmem_txt", -"", -"00350400 000020 pla_1_pal", -"00350420 000100 pla_1_eye1_TA_tex_txt", -"00350520 000100 pla_1_eye2_TA_tex_txt", -"00350620 000100 pla_1_eye3_TA_tex_txt", -"00350720 000100 pla_1_eye4_TA_tex_txt", -"00350820 000100 pla_1_eye5_TA_tex_txt", -"00350920 000100 pla_1_eye6_TA_tex_txt", -"00350a20 000100 pla_1_eye7_TA_tex_txt", -"00350b20 000100 pla_1_eye8_TA_tex_txt", -"00350c20 000100 pla_1_mouth1_TA_tex_txt", -"00350d20 000100 pla_1_mouth2_TA_tex_txt", -"00350e20 000100 pla_1_mouth3_TA_tex_txt", -"00350f20 000100 pla_1_mouth4_TA_tex_txt", -"00351020 000100 pla_1_mouth5_TA_tex_txt", -"00351120 000100 pla_1_mouth6_TA_tex_txt", -"00351220 000580 pla_1_tmem_txt", -"", -"003517a0 001a20 pga_1_v", -"003531c0 0001a0 head_pga_model", -"00353360 0000f0 mouth_pga_model", -"00353450 0000b8 Rarm2_pga_model", -"00353508 0000a8 Rarm1_pga_model", -"003535b0 0000b8 Larm2_pga_model", -"00353668 0000a8 Larm1_pga_model", -"00353710 0000a0 chest_pga_model", -"003537b0 000078 tail1_pga_model", -"00353828 000088 Rfoot3_pga_model", -"003538b0 000080 Rfoot2_pga_model", -"00353930 000058 Rfoot1_pga_model", -"00353988 000088 Lfoot3_pga_model", -"00353a10 000080 Lfoot2_pga_model", -"00353a90 000058 Lfoot1_pga_model", -"00353ae8 000078 base_pga_model", -"00353b60 000138 cKF_je_r_pga_1_tbl", -"00353c98 000008 cKF_bs_r_pga_1", -"", -"00353ca0 000020 pga_1_pal", -"00353cc0 000100 pga_1_eye1_TA_tex_txt", -"00353dc0 000100 pga_1_eye2_TA_tex_txt", -"00353ec0 000100 pga_1_eye3_TA_tex_txt", -"00353fc0 000100 pga_1_eye4_TA_tex_txt", -"003540c0 000100 pga_1_eye5_TA_tex_txt", -"003541c0 000100 pga_1_eye6_TA_tex_txt", -"003542c0 000100 pga_1_eye7_TA_tex_txt", -"003543c0 000100 pga_1_eye8_TA_tex_txt", -"003544c0 000640 pga_1_tmem_txt", -"", -"00354b00 001990 pgb_1_v", -"00356490 0001c0 head_pgb_model", -"00356650 0000b0 mouth_pgb_model", -"00356700 0000b8 Rarm2_pgb_model", -"003567b8 0000a8 Rarm1_pgb_model", -"00356860 0000b8 Larm2_pgb_model", -"00356918 0000a8 Larm1_pgb_model", -"003569c0 0000a0 chest_pgb_model", -"00356a60 000078 tail1_pgb_model", -"00356ad8 000088 Rfoot3_pgb_model", -"00356b60 000080 Rfoot2_pgb_model", -"00356be0 000058 Rfoot1_pgb_model", -"00356c38 000088 Lfoot3_pgb_model", -"00356cc0 000080 Lfoot2_pgb_model", -"00356d40 000058 Lfoot1_pgb_model", -"00356d98 000078 base_pgb_model", -"00356e10 000138 cKF_je_r_pgb_1_tbl", -"00356f48 000008 cKF_bs_r_pgb_1", -"", -"00356f60 000020 pgb_1_pal", -"00356f80 000100 pgb_1_eye1_TA_tex_txt", -"00357080 000100 pgb_1_eye2_TA_tex_txt", -"00357180 000100 pgb_1_eye3_TA_tex_txt", -"00357280 000100 pgb_1_eye4_TA_tex_txt", -"00357380 000100 pgb_1_eye5_TA_tex_txt", -"00357480 000100 pgb_1_eye6_TA_tex_txt", -"00357580 000100 pgb_1_eye7_TA_tex_txt", -"00357680 000100 pgb_1_eye8_TA_tex_txt", -"00357780 000780 pgb_1_tmem_txt", -"", -"00357f00 001a80 plb_1_v", -"00359980 000190 head_plb_model", -"00359b10 0000f0 mouth_plb_model", -"00359c00 0000b8 Rarm2_plb_model", -"00359cb8 000078 Rarm1_plb_model", -"00359d30 0000b8 Larm2_plb_model", -"00359de8 000078 Larm1_plb_model", -"00359e60 000150 chest_plb_model", -"00359fb0 000088 Rfoot3_plb_model", -"0035a038 000080 Rfoot2_plb_model", -"0035a0b8 000058 Rfoot1_plb_model", -"0035a110 000088 Lfoot3_plb_model", -"0035a198 000080 Lfoot2_plb_model", -"0035a218 000058 Lfoot1_plb_model", -"0035a270 0000d0 base_plb_model", -"0035a340 000138 cKF_je_r_plb_1_tbl", -"0035a478 000008 cKF_bs_r_plb_1", -"", -"0035a480 000020 plb_1_pal", -"0035a4a0 000100 plb_1_eye1_TA_tex_txt", -"0035a5a0 000100 plb_1_eye2_TA_tex_txt", -"0035a6a0 000100 plb_1_eye3_TA_tex_txt", -"0035a7a0 000100 plb_1_eye4_TA_tex_txt", -"0035a8a0 000100 plb_1_eye5_TA_tex_txt", -"0035a9a0 000100 plb_1_eye6_TA_tex_txt", -"0035aaa0 000100 plb_1_eye7_TA_tex_txt", -"0035aba0 000100 plb_1_eye8_TA_tex_txt", -"0035aca0 000780 plb_1_tmem_txt", -"", -"0035b420 0015a0 rbt_1_v", -"0035c9c0 0001a8 head_rbt_model", -"0035cb68 000088 Rarm2_rbt_model", -"0035cbf0 000078 Rarm1_rbt_model", -"0035cc68 000088 Larm2_rbt_model", -"0035ccf0 000078 Larm1_rbt_model", -"0035cd68 0000a8 chest_rbt_model", -"0035ce10 000078 tail1_rbt_model", -"0035ce88 000080 Rfoot2_rbt_model", -"0035cf08 0000c0 Rfoot1_rbt_model", -"0035cfc8 000080 Lfoot2_rbt_model", -"0035d048 0000c0 Lfoot1_rbt_model", -"0035d108 000070 base_rbt_model", -"0035d178 000138 cKF_je_r_rbt_1_tbl", -"0035d2b0 000008 cKF_bs_r_rbt_1", -"", -"0035d2c0 000020 rbt_1_pal", -"0035d2e0 000100 rbt_1_eye1_TA_tex_txt", -"0035d3e0 000100 rbt_1_eye2_TA_tex_txt", -"0035d4e0 000100 rbt_1_eye3_TA_tex_txt", -"0035d5e0 000100 rbt_1_eye4_TA_tex_txt", -"0035d6e0 000100 rbt_1_eye5_TA_tex_txt", -"0035d7e0 000100 rbt_1_eye6_TA_tex_txt", -"0035d8e0 000100 rbt_1_eye7_TA_tex_txt", -"0035d9e0 000100 rbt_1_eye8_TA_tex_txt", -"0035dae0 000100 rbt_1_mouth1_TA_tex_txt", -"0035dbe0 000100 rbt_1_mouth2_TA_tex_txt", -"0035dce0 000100 rbt_1_mouth3_TA_tex_txt", -"0035dde0 000100 rbt_1_mouth4_TA_tex_txt", -"0035dee0 000100 rbt_1_mouth5_TA_tex_txt", -"0035dfe0 000100 rbt_1_mouth6_TA_tex_txt", -"0035e0e0 000400 rbt_1_tmem_txt", -"", -"0035e4e0 000020 rbt_2_pal", -"0035e500 000100 rbt_2_eye1_TA_tex_txt", -"0035e600 000100 rbt_2_eye2_TA_tex_txt", -"0035e700 000100 rbt_2_eye3_TA_tex_txt", -"0035e800 000100 rbt_2_eye4_TA_tex_txt", -"0035e900 000100 rbt_2_eye5_TA_tex_txt", -"0035ea00 000100 rbt_2_eye6_TA_tex_txt", -"0035eb00 000100 rbt_2_eye7_TA_tex_txt", -"0035ec00 000100 rbt_2_eye8_TA_tex_txt", -"0035ed00 000100 rbt_2_mouth1_TA_tex_txt", -"0035ee00 000100 rbt_2_mouth2_TA_tex_txt", -"0035ef00 000100 rbt_2_mouth3_TA_tex_txt", -"0035f000 000100 rbt_2_mouth4_TA_tex_txt", -"0035f100 000100 rbt_2_mouth5_TA_tex_txt", -"0035f200 000100 rbt_2_mouth6_TA_tex_txt", -"0035f300 000400 rbt_2_tmem_txt", -"", -"0035f700 000020 rbt_11_pal", -"0035f720 000100 rbt_11_eye1_TA_tex_txt", -"0035f820 000100 rbt_11_eye2_TA_tex_txt", -"0035f920 000100 rbt_11_eye3_TA_tex_txt", -"0035fa20 000100 rbt_11_eye4_TA_tex_txt", -"0035fb20 000100 rbt_11_eye5_TA_tex_txt", -"0035fc20 000100 rbt_11_eye6_TA_tex_txt", -"0035fd20 000100 rbt_11_eye7_TA_tex_txt", -"0035fe20 000100 rbt_11_eye8_TA_tex_txt", -"0035ff20 000100 rbt_11_mouth1_TA_tex_txt", -"00360020 000100 rbt_11_mouth2_TA_tex_txt", -"00360120 000100 rbt_11_mouth3_TA_tex_txt", -"00360220 000100 rbt_11_mouth4_TA_tex_txt", -"00360320 000100 rbt_11_mouth5_TA_tex_txt", -"00360420 000100 rbt_11_mouth6_TA_tex_txt", -"00360520 000400 rbt_11_tmem_txt", -"", -"00360920 000020 rbt_3_pal", -"00360940 000100 rbt_3_eye1_TA_tex_txt", -"00360a40 000100 rbt_3_eye2_TA_tex_txt", -"00360b40 000100 rbt_3_eye3_TA_tex_txt", -"00360c40 000100 rbt_3_eye4_TA_tex_txt", -"00360d40 000100 rbt_3_eye5_TA_tex_txt", -"00360e40 000100 rbt_3_eye6_TA_tex_txt", -"00360f40 000100 rbt_3_eye7_TA_tex_txt", -"00361040 000100 rbt_3_eye8_TA_tex_txt", -"00361140 000100 rbt_3_mouth1_TA_tex_txt", -"00361240 000100 rbt_3_mouth2_TA_tex_txt", -"00361340 000100 rbt_3_mouth3_TA_tex_txt", -"00361440 000100 rbt_3_mouth4_TA_tex_txt", -"00361540 000100 rbt_3_mouth5_TA_tex_txt", -"00361640 000100 rbt_3_mouth6_TA_tex_txt", -"00361740 000400 rbt_3_tmem_txt", -"", -"00361b40 000020 rbt_4_pal", -"00361b60 000100 rbt_4_eye1_TA_tex_txt", -"00361c60 000100 rbt_4_eye2_TA_tex_txt", -"00361d60 000100 rbt_4_eye3_TA_tex_txt", -"00361e60 000100 rbt_4_eye4_TA_tex_txt", -"00361f60 000100 rbt_4_eye5_TA_tex_txt", -"00362060 000100 rbt_4_eye6_TA_tex_txt", -"00362160 000100 rbt_4_eye7_TA_tex_txt", -"00362260 000100 rbt_4_eye8_TA_tex_txt", -"00362360 000100 rbt_4_mouth1_TA_tex_txt", -"00362460 000100 rbt_4_mouth2_TA_tex_txt", -"00362560 000100 rbt_4_mouth3_TA_tex_txt", -"00362660 000100 rbt_4_mouth4_TA_tex_txt", -"00362760 000100 rbt_4_mouth5_TA_tex_txt", -"00362860 000100 rbt_4_mouth6_TA_tex_txt", -"00362960 000400 rbt_4_tmem_txt", -"", -"00362d60 000020 rbt_5_pal", -"00362d80 000100 rbt_5_eye1_TA_tex_txt", -"00362e80 000100 rbt_5_eye2_TA_tex_txt", -"00362f80 000100 rbt_5_eye3_TA_tex_txt", -"00363080 000100 rbt_5_eye4_TA_tex_txt", -"00363180 000100 rbt_5_eye5_TA_tex_txt", -"00363280 000100 rbt_5_eye6_TA_tex_txt", -"00363380 000100 rbt_5_eye7_TA_tex_txt", -"00363480 000100 rbt_5_eye8_TA_tex_txt", -"00363580 000100 rbt_5_mouth1_TA_tex_txt", -"00363680 000100 rbt_5_mouth2_TA_tex_txt", -"00363780 000100 rbt_5_mouth3_TA_tex_txt", -"00363880 000100 rbt_5_mouth4_TA_tex_txt", -"00363980 000100 rbt_5_mouth5_TA_tex_txt", -"00363a80 000100 rbt_5_mouth6_TA_tex_txt", -"00363b80 000400 rbt_5_tmem_txt", -"", -"00363f80 000020 rbt_6_pal", -"00363fa0 000100 rbt_6_eye1_TA_tex_txt", -"003640a0 000100 rbt_6_eye2_TA_tex_txt", -"003641a0 000100 rbt_6_eye3_TA_tex_txt", -"003642a0 000100 rbt_6_eye4_TA_tex_txt", -"003643a0 000100 rbt_6_eye5_TA_tex_txt", -"003644a0 000100 rbt_6_eye6_TA_tex_txt", -"003645a0 000100 rbt_6_eye7_TA_tex_txt", -"003646a0 000100 rbt_6_eye8_TA_tex_txt", -"003647a0 000100 rbt_6_mouth1_TA_tex_txt", -"003648a0 000100 rbt_6_mouth2_TA_tex_txt", -"003649a0 000100 rbt_6_mouth3_TA_tex_txt", -"00364aa0 000100 rbt_6_mouth4_TA_tex_txt", -"00364ba0 000100 rbt_6_mouth5_TA_tex_txt", -"00364ca0 000100 rbt_6_mouth6_TA_tex_txt", -"00364da0 000400 rbt_6_tmem_txt", -"", -"003651a0 000020 rbt_7_pal", -"003651c0 000100 rbt_7_eye1_TA_tex_txt", -"003652c0 000100 rbt_7_eye2_TA_tex_txt", -"003653c0 000100 rbt_7_eye3_TA_tex_txt", -"003654c0 000100 rbt_7_eye4_TA_tex_txt", -"003655c0 000100 rbt_7_eye5_TA_tex_txt", -"003656c0 000100 rbt_7_eye6_TA_tex_txt", -"003657c0 000100 rbt_7_eye7_TA_tex_txt", -"003658c0 000100 rbt_7_eye8_TA_tex_txt", -"003659c0 000100 rbt_7_mouth1_TA_tex_txt", -"00365ac0 000100 rbt_7_mouth2_TA_tex_txt", -"00365bc0 000100 rbt_7_mouth3_TA_tex_txt", -"00365cc0 000100 rbt_7_mouth4_TA_tex_txt", -"00365dc0 000100 rbt_7_mouth5_TA_tex_txt", -"00365ec0 000100 rbt_7_mouth6_TA_tex_txt", -"00365fc0 000400 rbt_7_tmem_txt", -"", -"003663c0 000020 rbt_8_pal", -"003663e0 000100 rbt_8_eye1_TA_tex_txt", -"003664e0 000100 rbt_8_eye2_TA_tex_txt", -"003665e0 000100 rbt_8_eye3_TA_tex_txt", -"003666e0 000100 rbt_8_eye4_TA_tex_txt", -"003667e0 000100 rbt_8_eye5_TA_tex_txt", -"003668e0 000100 rbt_8_eye6_TA_tex_txt", -"003669e0 000100 rbt_8_eye7_TA_tex_txt", -"00366ae0 000100 rbt_8_eye8_TA_tex_txt", -"00366be0 000100 rbt_8_mouth1_TA_tex_txt", -"00366ce0 000100 rbt_8_mouth2_TA_tex_txt", -"00366de0 000100 rbt_8_mouth3_TA_tex_txt", -"00366ee0 000100 rbt_8_mouth4_TA_tex_txt", -"00366fe0 000100 rbt_8_mouth5_TA_tex_txt", -"003670e0 000100 rbt_8_mouth6_TA_tex_txt", -"003671e0 000400 rbt_8_tmem_txt", -"", -"003675e0 000020 rbt_9_pal", -"00367600 000100 rbt_9_eye1_TA_tex_txt", -"00367700 000100 rbt_9_eye2_TA_tex_txt", -"00367800 000100 rbt_9_eye3_TA_tex_txt", -"00367900 000100 rbt_9_eye4_TA_tex_txt", -"00367a00 000100 rbt_9_eye5_TA_tex_txt", -"00367b00 000100 rbt_9_eye6_TA_tex_txt", -"00367c00 000100 rbt_9_eye7_TA_tex_txt", -"00367d00 000100 rbt_9_eye8_TA_tex_txt", -"00367e00 000100 rbt_9_mouth1_TA_tex_txt", -"00367f00 000100 rbt_9_mouth2_TA_tex_txt", -"00368000 000100 rbt_9_mouth3_TA_tex_txt", -"00368100 000100 rbt_9_mouth4_TA_tex_txt", -"00368200 000100 rbt_9_mouth5_TA_tex_txt", -"00368300 000100 rbt_9_mouth6_TA_tex_txt", -"00368400 000400 rbt_9_tmem_txt", -"", -"00368800 000020 rbt_10_pal", -"00368820 000100 rbt_10_eye1_TA_tex_txt", -"00368920 000100 rbt_10_eye2_TA_tex_txt", -"00368a20 000100 rbt_10_eye3_TA_tex_txt", -"00368b20 000100 rbt_10_eye4_TA_tex_txt", -"00368c20 000100 rbt_10_eye5_TA_tex_txt", -"00368d20 000100 rbt_10_eye6_TA_tex_txt", -"00368e20 000100 rbt_10_eye7_TA_tex_txt", -"00368f20 000100 rbt_10_eye8_TA_tex_txt", -"00369020 000100 rbt_10_mouth1_TA_tex_txt", -"00369120 000100 rbt_10_mouth2_TA_tex_txt", -"00369220 000100 rbt_10_mouth3_TA_tex_txt", -"00369320 000100 rbt_10_mouth4_TA_tex_txt", -"00369420 000100 rbt_10_mouth5_TA_tex_txt", -"00369520 000100 rbt_10_mouth6_TA_tex_txt", -"00369620 000400 rbt_10_tmem_txt", -"", -"00369a20 0013b0 mob_1_v", -"0036add0 0001b8 head_mob_model", -"0036af88 0000d0 mouth_mob_model", -"0036b058 0000b8 hand_mob_model", -"0036b110 000088 Rarm2_mob_model", -"0036b198 000078 Rarm1_mob_model", -"0036b210 000088 Larm2_mob_model", -"0036b298 000078 Larm1_mob_model", -"0036b310 0000d0 chest_mob_model", -"0036b3e0 000080 base_mob_model", -"0036b460 000138 cKF_je_r_mob_1_tbl", -"0036b598 000008 cKF_bs_r_mob_1", -"", -"0036b5a0 000020 mob_1_pal", -"0036b5c0 000100 mob_1_eye1_TA_tex_txt", -"0036b6c0 000100 mob_1_eye2_TA_tex_txt", -"0036b7c0 000100 mob_1_eye3_TA_tex_txt", -"0036b8c0 000100 mob_1_eye4_TA_tex_txt", -"0036b9c0 000100 mob_1_eye5_TA_tex_txt", -"0036bac0 000100 mob_1_eye6_TA_tex_txt", -"0036bbc0 000100 mob_1_eye7_TA_tex_txt", -"0036bcc0 000100 mob_1_eye8_TA_tex_txt", -"0036bdc0 000100 mob_1_mouth1_TA_tex_txt", -"0036bec0 000100 mob_1_mouth2_TA_tex_txt", -"0036bfc0 000100 mob_1_mouth3_TA_tex_txt", -"0036c0c0 000100 mob_1_mouth4_TA_tex_txt", -"0036c1c0 000100 mob_1_mouth5_TA_tex_txt", -"0036c2c0 000100 mob_1_mouth6_TA_tex_txt", -"0036c3c0 000680 mob_1_tmem_txt", -"", -"0036ce40 001c00 rhn_1_v", -"0036ea40 000300 head_rhn_model", -"0036ed40 0000d0 mouth_rhn_model", -"0036ee10 000090 Rarm2_rhn_model", -"0036eea0 000080 Rarm1_rhn_model", -"0036ef20 000090 Larm2_rhn_model", -"0036efb0 000080 Larm1_rhn_model", -"0036f030 000098 chest_rhn_model", -"0036f0c8 000058 tail1_rhn_model", -"0036f120 000090 tail2_rhn_model", -"0036f1b0 000098 Rfoot2_rhn_model", -"0036f248 0000b0 Rfoot1_rhn_model", -"0036f2f8 000098 Lfoot2_rhn_model", -"0036f390 0000b0 Lfoot1_rhn_model", -"0036f440 000070 base_rhn_model", -"0036f4b0 000138 cKF_je_r_rhn_1_tbl", -"0036f5e8 000008 cKF_bs_r_rhn_1", -"", -"0036f600 000020 rhn_1_pal", -"0036f620 000100 rhn_1_eye1_TA_tex_txt", -"0036f720 000100 rhn_1_eye2_TA_tex_txt", -"0036f820 000100 rhn_1_eye3_TA_tex_txt", -"0036f920 000100 rhn_1_eye4_TA_tex_txt", -"0036fa20 000100 rhn_1_eye5_TA_tex_txt", -"0036fb20 000100 rhn_1_eye6_TA_tex_txt", -"0036fc20 000100 rhn_1_eye7_TA_tex_txt", -"0036fd20 000100 rhn_1_eye8_TA_tex_txt", -"0036fe20 000100 rhn_1_mouth1_TA_tex_txt", -"0036ff20 000100 rhn_1_mouth2_TA_tex_txt", -"00370020 000100 rhn_1_mouth3_TA_tex_txt", -"00370120 000100 rhn_1_mouth4_TA_tex_txt", -"00370220 000100 rhn_1_mouth5_TA_tex_txt", -"00370320 000100 rhn_1_mouth6_TA_tex_txt", -"00370420 000400 rhn_1_tmem_txt", -"", -"00370820 000020 rhn_2_pal", -"00370840 000100 rhn_2_eye1_TA_tex_txt", -"00370940 000100 rhn_2_eye2_TA_tex_txt", -"00370a40 000100 rhn_2_eye3_TA_tex_txt", -"00370b40 000100 rhn_2_eye4_TA_tex_txt", -"00370c40 000100 rhn_2_eye5_TA_tex_txt", -"00370d40 000100 rhn_2_eye6_TA_tex_txt", -"00370e40 000100 rhn_2_eye7_TA_tex_txt", -"00370f40 000100 rhn_2_eye8_TA_tex_txt", -"00371040 000100 rhn_2_mouth1_TA_tex_txt", -"00371140 000100 rhn_2_mouth2_TA_tex_txt", -"00371240 000100 rhn_2_mouth3_TA_tex_txt", -"00371340 000100 rhn_2_mouth4_TA_tex_txt", -"00371440 000100 rhn_2_mouth5_TA_tex_txt", -"00371540 000100 rhn_2_mouth6_TA_tex_txt", -"00371640 000400 rhn_2_tmem_txt", -"", -"00371a40 000020 rhn_3_pal", -"00371a60 000100 rhn_3_eye1_TA_tex_txt", -"00371b60 000100 rhn_3_eye2_TA_tex_txt", -"00371c60 000100 rhn_3_eye3_TA_tex_txt", -"00371d60 000100 rhn_3_eye4_TA_tex_txt", -"00371e60 000100 rhn_3_eye5_TA_tex_txt", -"00371f60 000100 rhn_3_eye6_TA_tex_txt", -"00372060 000100 rhn_3_eye7_TA_tex_txt", -"00372160 000100 rhn_3_eye8_TA_tex_txt", -"00372260 000100 rhn_3_mouth1_TA_tex_txt", -"00372360 000100 rhn_3_mouth2_TA_tex_txt", -"00372460 000100 rhn_3_mouth3_TA_tex_txt", -"00372560 000100 rhn_3_mouth4_TA_tex_txt", -"00372660 000100 rhn_3_mouth5_TA_tex_txt", -"00372760 000100 rhn_3_mouth6_TA_tex_txt", -"00372860 000400 rhn_3_tmem_txt", -"", -"00372c60 000020 rhn_4_pal", -"00372c80 000100 rhn_4_eye1_TA_tex_txt", -"00372d80 000100 rhn_4_eye2_TA_tex_txt", -"00372e80 000100 rhn_4_eye3_TA_tex_txt", -"00372f80 000100 rhn_4_eye4_TA_tex_txt", -"00373080 000100 rhn_4_eye5_TA_tex_txt", -"00373180 000100 rhn_4_eye6_TA_tex_txt", -"00373280 000100 rhn_4_eye7_TA_tex_txt", -"00373380 000100 rhn_4_eye8_TA_tex_txt", -"00373480 000100 rhn_4_mouth1_TA_tex_txt", -"00373580 000100 rhn_4_mouth2_TA_tex_txt", -"00373680 000100 rhn_4_mouth3_TA_tex_txt", -"00373780 000100 rhn_4_mouth4_TA_tex_txt", -"00373880 000100 rhn_4_mouth5_TA_tex_txt", -"00373980 000100 rhn_4_mouth6_TA_tex_txt", -"00373a80 000400 rhn_4_tmem_txt", -"", -"0037bc48 0013c0 snt_1_v", -"0037d008 000250 head_snt_model", -"0037d258 000088 Larm2_snt_model", -"0037d2e0 000078 Larm1_snt_model", -"0037d358 000178 chest_snt_model", -"0037d4d0 000080 Rfoot2_snt_model", -"0037d550 000058 Rfoot1_snt_model", -"0037d5a8 000080 Lfoot2_snt_model", -"0037d628 000058 Lfoot1_snt_model", -"0037d680 000070 base_snt_model", -"0037d6f0 000138 cKF_je_r_snt_1_tbl", -"0037d828 000008 cKF_bs_r_snt_1", -"", -"0037d840 000020 snt_1_pal", -"0037d860 000100 snt_1_eye1_TA_tex_txt", -"0037d960 000100 snt_1_eye2_TA_tex_txt", -"0037da60 000100 snt_1_eye3_TA_tex_txt", -"0037db60 000100 snt_1_eye4_TA_tex_txt", -"0037dc60 000100 snt_1_eye5_TA_tex_txt", -"0037dd60 000100 snt_1_eye6_TA_tex_txt", -"0037de60 000100 snt_1_eye7_TA_tex_txt", -"0037df60 000100 snt_1_eye8_TA_tex_txt", -"0037e060 000100 snt_1_mouth1_TA_tex_txt", -"0037e160 000100 snt_1_mouth2_TA_tex_txt", -"0037e260 000100 snt_1_mouth3_TA_tex_txt", -"0037e360 000100 snt_1_mouth4_TA_tex_txt", -"0037e460 000100 snt_1_mouth5_TA_tex_txt", -"0037e560 000100 snt_1_mouth6_TA_tex_txt", -"0037e660 000680 snt_1_tmem_txt", -"", -"0037ece0 001700 wip_1_v", -"003803e0 000208 head_wip_model", -"003805e8 000088 Rarm2_wip_model", -"00380670 000078 Rarm1_wip_model", -"003806e8 000088 Larm2_wip_model", -"00380770 000078 Larm1_wip_model", -"003807e8 000120 chest_wip_model", -"00380908 000080 Rfoot2_wip_model", -"00380988 000058 Rfoot1_wip_model", -"003809e0 000080 Lfoot2_wip_model", -"00380a60 000058 Lfoot1_wip_model", -"00380ab8 000078 base_wip_model", -"00380b30 000138 cKF_je_r_wip_1_tbl", -"00380c68 000008 cKF_bs_r_wip_1", -"", -"00380c80 000020 wip_1_pal", -"00380ca0 000100 wip_1_eye1_TA_tex_txt", -"00380da0 000100 wip_1_eye2_TA_tex_txt", -"00380ea0 000100 wip_1_eye3_TA_tex_txt", -"00380fa0 000100 wip_1_eye4_TA_tex_txt", -"003810a0 000100 wip_1_eye5_TA_tex_txt", -"003811a0 000100 wip_1_eye6_TA_tex_txt", -"003812a0 000100 wip_1_eye7_TA_tex_txt", -"003813a0 000100 wip_1_eye8_TA_tex_txt", -"003814a0 000100 wip_1_mouth1_TA_tex_txt", -"003815a0 000100 wip_1_mouth2_TA_tex_txt", -"003816a0 000100 wip_1_mouth3_TA_tex_txt", -"003817a0 000100 wip_1_mouth4_TA_tex_txt", -"003818a0 000100 wip_1_mouth5_TA_tex_txt", -"003819a0 000100 wip_1_mouth6_TA_tex_txt", -"00381aa0 0005c0 wip_1_tmem_txt", -"", -"00382060 001460 shp_1_v", -"003834c0 0001b0 head_shp_model", -"00383670 000088 Rarm2_shp_model", -"003836f8 000060 Rarm1_shp_model", -"00383758 000088 Larm2_shp_model", -"003837e0 000060 Larm1_shp_model", -"00383840 0000d8 chest_shp_model", -"00383918 000088 Rfoot2_shp_model", -"003839a0 000060 Rfoot1_shp_model", -"00383a00 000088 Lfoot2_shp_model", -"00383a88 000060 Lfoot1_shp_model", -"00383ae8 000078 base_shp_model", -"00383b60 000138 cKF_je_r_shp_1_tbl", -"00383c98 000008 cKF_bs_r_shp_1", -"", -"00383ca0 000020 shp_1_pal", -"00383cc0 000100 shp_1_eye1_TA_tex_txt", -"00383dc0 000100 shp_1_eye2_TA_tex_txt", -"00383ec0 000100 shp_1_eye3_TA_tex_txt", -"00383fc0 000100 shp_1_eye4_TA_tex_txt", -"003840c0 000100 shp_1_eye5_TA_tex_txt", -"003841c0 000100 shp_1_eye6_TA_tex_txt", -"003842c0 000100 shp_1_eye7_TA_tex_txt", -"003843c0 000100 shp_1_eye8_TA_tex_txt", -"003844c0 000100 shp_1_mouth1_TA_tex_txt", -"003845c0 000100 shp_1_mouth2_TA_tex_txt", -"003846c0 000100 shp_1_mouth3_TA_tex_txt", -"003847c0 000100 shp_1_mouth4_TA_tex_txt", -"003848c0 000100 shp_1_mouth5_TA_tex_txt", -"003849c0 000100 shp_1_mouth6_TA_tex_txt", -"00384ac0 000400 shp_1_tmem_txt", -"", -"00384ec0 000020 shp_2_pal", -"00384ee0 000100 shp_2_eye1_TA_tex_txt", -"00384fe0 000100 shp_2_eye2_TA_tex_txt", -"003850e0 000100 shp_2_eye3_TA_tex_txt", -"003851e0 000100 shp_2_eye4_TA_tex_txt", -"003852e0 000100 shp_2_eye5_TA_tex_txt", -"003853e0 000100 shp_2_eye6_TA_tex_txt", -"003854e0 000100 shp_2_eye7_TA_tex_txt", -"003855e0 000100 shp_2_eye8_TA_tex_txt", -"003856e0 000100 shp_2_mouth1_TA_tex_txt", -"003857e0 000100 shp_2_mouth2_TA_tex_txt", -"003858e0 000100 shp_2_mouth3_TA_tex_txt", -"003859e0 000100 shp_2_mouth4_TA_tex_txt", -"00385ae0 000100 shp_2_mouth5_TA_tex_txt", -"00385be0 000100 shp_2_mouth6_TA_tex_txt", -"00385ce0 000400 shp_2_tmem_txt", -"", -"003860e0 000020 shp_3_pal", -"00386100 000100 shp_3_eye1_TA_tex_txt", -"00386200 000100 shp_3_eye2_TA_tex_txt", -"00386300 000100 shp_3_eye3_TA_tex_txt", -"00386400 000100 shp_3_eye4_TA_tex_txt", -"00386500 000100 shp_3_eye5_TA_tex_txt", -"00386600 000100 shp_3_eye6_TA_tex_txt", -"00386700 000100 shp_3_eye7_TA_tex_txt", -"00386800 000100 shp_3_eye8_TA_tex_txt", -"00386900 000100 shp_3_mouth1_TA_tex_txt", -"00386a00 000100 shp_3_mouth2_TA_tex_txt", -"00386b00 000100 shp_3_mouth3_TA_tex_txt", -"00386c00 000100 shp_3_mouth4_TA_tex_txt", -"00386d00 000100 shp_3_mouth5_TA_tex_txt", -"00386e00 000100 shp_3_mouth6_TA_tex_txt", -"00386f00 000400 shp_3_tmem_txt", -"", -"00387300 000020 shp_4_pal", -"00387320 000100 shp_4_eye1_TA_tex_txt", -"00387420 000100 shp_4_eye2_TA_tex_txt", -"00387520 000100 shp_4_eye3_TA_tex_txt", -"00387620 000100 shp_4_eye4_TA_tex_txt", -"00387720 000100 shp_4_eye5_TA_tex_txt", -"00387820 000100 shp_4_eye6_TA_tex_txt", -"00387920 000100 shp_4_eye7_TA_tex_txt", -"00387a20 000100 shp_4_eye8_TA_tex_txt", -"00387b20 000100 shp_4_mouth1_TA_tex_txt", -"00387c20 000100 shp_4_mouth2_TA_tex_txt", -"00387d20 000100 shp_4_mouth3_TA_tex_txt", -"00387e20 000100 shp_4_mouth4_TA_tex_txt", -"00387f20 000100 shp_4_mouth5_TA_tex_txt", -"00388020 000100 shp_4_mouth6_TA_tex_txt", -"00388120 000400 shp_4_tmem_txt", -"", -"00388520 000020 shp_5_pal", -"00388540 000100 shp_5_eye1_TA_tex_txt", -"00388640 000100 shp_5_eye2_TA_tex_txt", -"00388740 000100 shp_5_eye3_TA_tex_txt", -"00388840 000100 shp_5_eye4_TA_tex_txt", -"00388940 000100 shp_5_eye5_TA_tex_txt", -"00388a40 000100 shp_5_eye6_TA_tex_txt", -"00388b40 000100 shp_5_eye7_TA_tex_txt", -"00388c40 000100 shp_5_eye8_TA_tex_txt", -"00388d40 000100 shp_5_mouth1_TA_tex_txt", -"00388e40 000100 shp_5_mouth2_TA_tex_txt", -"00388f40 000100 shp_5_mouth3_TA_tex_txt", -"00389040 000100 shp_5_mouth4_TA_tex_txt", -"00389140 000100 shp_5_mouth5_TA_tex_txt", -"00389240 000100 shp_5_mouth6_TA_tex_txt", -"00389340 000400 shp_5_tmem_txt", -"", -"00389740 000020 shp_6_pal", -"00389760 000100 shp_6_eye1_TA_tex_txt", -"00389860 000100 shp_6_eye2_TA_tex_txt", -"00389960 000100 shp_6_eye3_TA_tex_txt", -"00389a60 000100 shp_6_eye4_TA_tex_txt", -"00389b60 000100 shp_6_eye5_TA_tex_txt", -"00389c60 000100 shp_6_eye6_TA_tex_txt", -"00389d60 000100 shp_6_eye7_TA_tex_txt", -"00389e60 000100 shp_6_eye8_TA_tex_txt", -"00389f60 000100 shp_6_mouth1_TA_tex_txt", -"0038a060 000100 shp_6_mouth2_TA_tex_txt", -"0038a160 000100 shp_6_mouth3_TA_tex_txt", -"0038a260 000100 shp_6_mouth4_TA_tex_txt", -"0038a360 000100 shp_6_mouth5_TA_tex_txt", -"0038a460 000100 shp_6_mouth6_TA_tex_txt", -"0038a560 000400 shp_6_tmem_txt", -"", -"0038a960 001650 rcn_1_v", -"0038bfb0 000188 head_rcn_model", -"0038c138 000078 mouth_rcn_model", -"0038c1b0 000088 Rarm2_rcn_model", -"0038c238 000078 Rarm1_rcn_model", -"0038c2b0 000088 Larm2_rcn_model", -"0038c338 000078 Larm1_rcn_model", -"0038c3b0 000108 chest_rcn_model", -"0038c4b8 000078 tail1_rcn_model", -"0038c530 0000a0 tail2_rcn_model", -"0038c5d0 000080 Rfoot2_rcn_model", -"0038c650 000058 Rfoot1_rcn_model", -"0038c6a8 000080 Lfoot2_rcn_model", -"0038c728 000058 Lfoot1_rcn_model", -"0038c780 0000c0 base_rcn_model", -"0038c840 000138 cKF_je_r_rcn_1_tbl", -"0038c978 000008 cKF_bs_r_rcn_1", -"", -"0038c980 000020 rcn_1_pal", -"0038c9a0 000100 rcn_1_eye1_TA_tex_txt", -"0038caa0 000100 rcn_1_eye2_TA_tex_txt", -"0038cba0 000100 rcn_1_eye3_TA_tex_txt", -"0038cca0 000100 rcn_1_eye4_TA_tex_txt", -"0038cda0 000100 rcn_1_eye5_TA_tex_txt", -"0038cea0 000100 rcn_1_eye6_TA_tex_txt", -"0038cfa0 000100 rcn_1_eye7_TA_tex_txt", -"0038d0a0 000100 rcn_1_eye8_TA_tex_txt", -"0038d1a0 000640 rcn_1_tmem_txt", -"", -"003b2cb0 0018c0 kab_1_v", -"003b4570 0001e0 head_kab_model", -"003b4750 000088 mouth_kab_model", -"003b47d8 000088 Rarm2_kab_model", -"003b4860 000078 Rarm1_kab_model", -"003b48d8 000088 Larm2_kab_model", -"003b4960 000078 Larm1_kab_model", -"003b49d8 0000c8 chest_kab_model", -"003b4aa0 0000a8 Rfoot2_kab_model", -"003b4b48 000080 Rfoot1_kab_model", -"003b4bc8 000098 Lfoot2_kab_model", -"003b4c60 000080 Lfoot1_kab_model", -"003b4ce0 000078 base_kab_model", -"003b4d58 000138 cKF_je_r_kab_1_tbl", -"003b4e90 000008 cKF_bs_r_kab_1", -"", -"003b4ea0 000020 kab_1_pal", -"003b4ec0 000100 kab_1_eye1_TA_tex_txt", -"003b4fc0 000100 kab_1_eye2_TA_tex_txt", -"003b50c0 000100 kab_1_eye3_TA_tex_txt", -"003b51c0 000100 kab_1_eye4_TA_tex_txt", -"003b52c0 000100 kab_1_eye5_TA_tex_txt", -"003b53c0 000100 kab_1_eye6_TA_tex_txt", -"003b54c0 000100 kab_1_eye7_TA_tex_txt", -"003b55c0 000100 kab_1_eye8_TA_tex_txt", -"003b56c0 000400 kab_1_tmem_txt", -"", -"004ebac0 001450 ttl_1_v", -"004ecf10 000228 head_ttl_model", -"004ed138 0000a8 mouth_ttl_model", -"004ed1e0 000060 hand_ttl_model", -"004ed240 000088 Rarm2_ttl_model", -"004ed2c8 000058 Rarm1_ttl_model", -"004ed320 000088 Larm2_ttl_model", -"004ed3a8 000058 Larm1_ttl_model", -"004ed400 000118 chest_ttl_model", -"004ed518 000058 tail1_ttl_model", -"004ed570 000088 Rfoot2_ttl_model", -"004ed5f8 000058 Rfoot1_ttl_model", -"004ed650 000088 Lfoot2_ttl_model", -"004ed6d8 000058 Lfoot1_ttl_model", -"004ed730 000068 base_ttl_model", -"004ed798 000138 cKF_je_r_ttl_1_tbl", -"004ed8d0 000008 cKF_bs_r_ttl_1", -"", -"004ed8e0 000020 ttl_1_pal", -"004ed900 000100 ttl_1_eye1_TA_tex_txt", -"004eda00 000100 ttl_1_eye2_TA_tex_txt", -"004edb00 000100 ttl_1_eye3_TA_tex_txt", -"004edc00 000100 ttl_1_eye4_TA_tex_txt", -"004edd00 000100 ttl_1_eye5_TA_tex_txt", -"004ede00 000100 ttl_1_eye6_TA_tex_txt", -"004edf00 000100 ttl_1_eye7_TA_tex_txt", -"004ee000 000100 ttl_1_eye8_TA_tex_txt", -"004ee100 000740 ttl_1_tmem_txt", -"", -"004ee840 0016f0 squ_1_v", -"004eff30 000198 head_squ_model", -"004f00c8 000088 Rarm2_squ_model", -"004f0150 000078 Rarm1_squ_model", -"004f01c8 000088 Larm2_squ_model", -"004f0250 000078 Larm1_squ_model", -"004f02c8 0000a8 chest_squ_model", -"004f0370 000070 tail1_squ_model", -"004f03e0 0000d0 tail2_squ_model", -"004f04b0 000080 Rfoot2_squ_model", -"004f0530 0000c0 Rfoot1_squ_model", -"004f05f0 000080 Lfoot2_squ_model", -"004f0670 0000c0 Lfoot1_squ_model", -"004f0730 000070 base_squ_model", -"004f07a0 000138 cKF_je_r_squ_1_tbl", -"004f08d8 000008 cKF_bs_r_squ_1", -"", -"004f08e0 000020 squ_1_pal", -"004f0900 000100 squ_1_eye1_TA_tex_txt", -"004f0a00 000100 squ_1_eye2_TA_tex_txt", -"004f0b00 000100 squ_1_eye3_TA_tex_txt", -"004f0c00 000100 squ_1_eye4_TA_tex_txt", -"004f0d00 000100 squ_1_eye5_TA_tex_txt", -"004f0e00 000100 squ_1_eye6_TA_tex_txt", -"004f0f00 000100 squ_1_eye7_TA_tex_txt", -"004f1000 000100 squ_1_eye8_TA_tex_txt", -"004f1100 000100 squ_1_mouth1_TA_tex_txt", -"004f1200 000100 squ_1_mouth2_TA_tex_txt", -"004f1300 000100 squ_1_mouth3_TA_tex_txt", -"004f1400 000100 squ_1_mouth4_TA_tex_txt", -"004f1500 000100 squ_1_mouth5_TA_tex_txt", -"004f1600 000100 squ_1_mouth6_TA_tex_txt", -"004f1700 000400 squ_1_tmem_txt", -"", -"004f1b00 000020 squ_2_pal", -"004f1b20 000100 squ_2_eye1_TA_tex_txt", -"004f1c20 000100 squ_2_eye2_TA_tex_txt", -"004f1d20 000100 squ_2_eye3_TA_tex_txt", -"004f1e20 000100 squ_2_eye4_TA_tex_txt", -"004f1f20 000100 squ_2_eye5_TA_tex_txt", -"004f2020 000100 squ_2_eye6_TA_tex_txt", -"004f2120 000100 squ_2_eye7_TA_tex_txt", -"004f2220 000100 squ_2_eye8_TA_tex_txt", -"004f2320 000100 squ_2_mouth1_TA_tex_txt", -"004f2420 000100 squ_2_mouth2_TA_tex_txt", -"004f2520 000100 squ_2_mouth3_TA_tex_txt", -"004f2620 000100 squ_2_mouth4_TA_tex_txt", -"004f2720 000100 squ_2_mouth5_TA_tex_txt", -"004f2820 000100 squ_2_mouth6_TA_tex_txt", -"004f2920 000400 squ_2_tmem_txt", -"", -"004f2d20 000020 squ_11_pal", -"004f2d40 000100 squ_11_eye1_TA_tex_txt", -"004f2e40 000100 squ_11_eye2_TA_tex_txt", -"004f2f40 000100 squ_11_eye3_TA_tex_txt", -"004f3040 000100 squ_11_eye4_TA_tex_txt", -"004f3140 000100 squ_11_eye5_TA_tex_txt", -"004f3240 000100 squ_11_eye6_TA_tex_txt", -"004f3340 000100 squ_11_eye7_TA_tex_txt", -"004f3440 000100 squ_11_eye8_TA_tex_txt", -"004f3540 000100 squ_11_mouth1_TA_tex_txt", -"004f3640 000100 squ_11_mouth2_TA_tex_txt", -"004f3740 000100 squ_11_mouth3_TA_tex_txt", -"004f3840 000100 squ_11_mouth4_TA_tex_txt", -"004f3940 000100 squ_11_mouth5_TA_tex_txt", -"004f3a40 000100 squ_11_mouth6_TA_tex_txt", -"004f3b40 000400 squ_11_tmem_txt", -"", -"004f3f40 000020 squ_3_pal", -"004f3f60 000100 squ_3_eye1_TA_tex_txt", -"004f4060 000100 squ_3_eye2_TA_tex_txt", -"004f4160 000100 squ_3_eye3_TA_tex_txt", -"004f4260 000100 squ_3_eye4_TA_tex_txt", -"004f4360 000100 squ_3_eye5_TA_tex_txt", -"004f4460 000100 squ_3_eye6_TA_tex_txt", -"004f4560 000100 squ_3_eye7_TA_tex_txt", -"004f4660 000100 squ_3_eye8_TA_tex_txt", -"004f4760 000100 squ_3_mouth1_TA_tex_txt", -"004f4860 000100 squ_3_mouth2_TA_tex_txt", -"004f4960 000100 squ_3_mouth3_TA_tex_txt", -"004f4a60 000100 squ_3_mouth4_TA_tex_txt", -"004f4b60 000100 squ_3_mouth5_TA_tex_txt", -"004f4c60 000100 squ_3_mouth6_TA_tex_txt", -"004f4d60 000400 squ_3_tmem_txt", -"", -"004f5160 000020 squ_4_pal", -"004f5180 000100 squ_4_eye1_TA_tex_txt", -"004f5280 000100 squ_4_eye2_TA_tex_txt", -"004f5380 000100 squ_4_eye3_TA_tex_txt", -"004f5480 000100 squ_4_eye4_TA_tex_txt", -"004f5580 000100 squ_4_eye5_TA_tex_txt", -"004f5680 000100 squ_4_eye6_TA_tex_txt", -"004f5780 000100 squ_4_eye7_TA_tex_txt", -"004f5880 000100 squ_4_eye8_TA_tex_txt", -"004f5980 000100 squ_4_mouth1_TA_tex_txt", -"004f5a80 000100 squ_4_mouth2_TA_tex_txt", -"004f5b80 000100 squ_4_mouth3_TA_tex_txt", -"004f5c80 000100 squ_4_mouth4_TA_tex_txt", -"004f5d80 000100 squ_4_mouth5_TA_tex_txt", -"004f5e80 000100 squ_4_mouth6_TA_tex_txt", -"004f5f80 000400 squ_4_tmem_txt", -"", -"004f6380 000020 squ_5_pal", -"004f63a0 000100 squ_5_eye1_TA_tex_txt", -"004f64a0 000100 squ_5_eye2_TA_tex_txt", -"004f65a0 000100 squ_5_eye3_TA_tex_txt", -"004f66a0 000100 squ_5_eye4_TA_tex_txt", -"004f67a0 000100 squ_5_eye5_TA_tex_txt", -"004f68a0 000100 squ_5_eye6_TA_tex_txt", -"004f69a0 000100 squ_5_eye7_TA_tex_txt", -"004f6aa0 000100 squ_5_eye8_TA_tex_txt", -"004f6ba0 000100 squ_5_mouth1_TA_tex_txt", -"004f6ca0 000100 squ_5_mouth2_TA_tex_txt", -"004f6da0 000100 squ_5_mouth3_TA_tex_txt", -"004f6ea0 000100 squ_5_mouth4_TA_tex_txt", -"004f6fa0 000100 squ_5_mouth5_TA_tex_txt", -"004f70a0 000100 squ_5_mouth6_TA_tex_txt", -"004f71a0 000400 squ_5_tmem_txt", -"", -"004f75a0 000020 squ_6_pal", -"004f75c0 000100 squ_6_eye1_TA_tex_txt", -"004f76c0 000100 squ_6_eye2_TA_tex_txt", -"004f77c0 000100 squ_6_eye3_TA_tex_txt", -"004f78c0 000100 squ_6_eye4_TA_tex_txt", -"004f79c0 000100 squ_6_eye5_TA_tex_txt", -"004f7ac0 000100 squ_6_eye6_TA_tex_txt", -"004f7bc0 000100 squ_6_eye7_TA_tex_txt", -"004f7cc0 000100 squ_6_eye8_TA_tex_txt", -"004f7dc0 000100 squ_6_mouth1_TA_tex_txt", -"004f7ec0 000100 squ_6_mouth2_TA_tex_txt", -"004f7fc0 000100 squ_6_mouth3_TA_tex_txt", -"004f80c0 000100 squ_6_mouth4_TA_tex_txt", -"004f81c0 000100 squ_6_mouth5_TA_tex_txt", -"004f82c0 000100 squ_6_mouth6_TA_tex_txt", -"004f83c0 000400 squ_6_tmem_txt", -"", -"004f87c0 000020 squ_7_pal", -"004f87e0 000100 squ_7_eye1_TA_tex_txt", -"004f88e0 000100 squ_7_eye2_TA_tex_txt", -"004f89e0 000100 squ_7_eye3_TA_tex_txt", -"004f8ae0 000100 squ_7_eye4_TA_tex_txt", -"004f8be0 000100 squ_7_eye5_TA_tex_txt", -"004f8ce0 000100 squ_7_eye6_TA_tex_txt", -"004f8de0 000100 squ_7_eye7_TA_tex_txt", -"004f8ee0 000100 squ_7_eye8_TA_tex_txt", -"004f8fe0 000100 squ_7_mouth1_TA_tex_txt", -"004f90e0 000100 squ_7_mouth2_TA_tex_txt", -"004f91e0 000100 squ_7_mouth3_TA_tex_txt", -"004f92e0 000100 squ_7_mouth4_TA_tex_txt", -"004f93e0 000100 squ_7_mouth5_TA_tex_txt", -"004f94e0 000100 squ_7_mouth6_TA_tex_txt", -"004f95e0 000400 squ_7_tmem_txt", -"", -"004f99e0 000020 squ_8_pal", -"004f9a00 000100 squ_8_eye1_TA_tex_txt", -"004f9b00 000100 squ_8_eye2_TA_tex_txt", -"004f9c00 000100 squ_8_eye3_TA_tex_txt", -"004f9d00 000100 squ_8_eye4_TA_tex_txt", -"004f9e00 000100 squ_8_eye5_TA_tex_txt", -"004f9f00 000100 squ_8_eye6_TA_tex_txt", -"004fa000 000100 squ_8_eye7_TA_tex_txt", -"004fa100 000100 squ_8_eye8_TA_tex_txt", -"004fa200 000100 squ_8_mouth1_TA_tex_txt", -"004fa300 000100 squ_8_mouth2_TA_tex_txt", -"004fa400 000100 squ_8_mouth3_TA_tex_txt", -"004fa500 000100 squ_8_mouth4_TA_tex_txt", -"004fa600 000100 squ_8_mouth5_TA_tex_txt", -"004fa700 000100 squ_8_mouth6_TA_tex_txt", -"004fa800 000400 squ_8_tmem_txt", -"", -"004fac00 000020 squ_9_pal", -"004fac20 000100 squ_9_eye1_TA_tex_txt", -"004fad20 000100 squ_9_eye2_TA_tex_txt", -"004fae20 000100 squ_9_eye3_TA_tex_txt", -"004faf20 000100 squ_9_eye4_TA_tex_txt", -"004fb020 000100 squ_9_eye5_TA_tex_txt", -"004fb120 000100 squ_9_eye6_TA_tex_txt", -"004fb220 000100 squ_9_eye7_TA_tex_txt", -"004fb320 000100 squ_9_eye8_TA_tex_txt", -"004fb420 000100 squ_9_mouth1_TA_tex_txt", -"004fb520 000100 squ_9_mouth2_TA_tex_txt", -"004fb620 000100 squ_9_mouth3_TA_tex_txt", -"004fb720 000100 squ_9_mouth4_TA_tex_txt", -"004fb820 000100 squ_9_mouth5_TA_tex_txt", -"004fb920 000100 squ_9_mouth6_TA_tex_txt", -"004fba20 000400 squ_9_tmem_txt", -"", -"004fbe20 000020 squ_10_pal", -"004fbe40 000100 squ_10_eye1_TA_tex_txt", -"004fbf40 000100 squ_10_eye2_TA_tex_txt", -"004fc040 000100 squ_10_eye3_TA_tex_txt", -"004fc140 000100 squ_10_eye4_TA_tex_txt", -"004fc240 000100 squ_10_eye5_TA_tex_txt", -"004fc340 000100 squ_10_eye6_TA_tex_txt", -"004fc440 000100 squ_10_eye7_TA_tex_txt", -"004fc540 000100 squ_10_eye8_TA_tex_txt", -"004fc640 000100 squ_10_mouth1_TA_tex_txt", -"004fc740 000100 squ_10_mouth2_TA_tex_txt", -"004fc840 000100 squ_10_mouth3_TA_tex_txt", -"004fc940 000100 squ_10_mouth4_TA_tex_txt", -"004fca40 000100 squ_10_mouth5_TA_tex_txt", -"004fcb40 000100 squ_10_mouth6_TA_tex_txt", -"004fcc40 000400 squ_10_tmem_txt", -"", -"004fd040 001850 mnk_1_v", -"004fe890 0001a8 head_mnk_model", -"004fea38 000098 Rarm2_mnk_model", -"004fead0 000078 Rarm1_mnk_model", -"004feb48 000098 Larm2_mnk_model", -"004febe0 000078 Larm1_mnk_model", -"004fec58 0000c0 chest_mnk_model", -"004fed18 000078 tail1_mnk_model", -"004fed90 0000c0 tail2_mnk_model", -"004fee50 000090 Rfoot3_mnk_model", -"004feee0 000080 Rfoot2_mnk_model", -"004fef60 000058 Rfoot1_mnk_model", -"004fefb8 000090 Lfoot3_mnk_model", -"004ff048 000080 Lfoot2_mnk_model", -"004ff0c8 000058 Lfoot1_mnk_model", -"004ff120 000098 base_mnk_model", -"004ff1b8 000138 cKF_je_r_mnk_1_tbl", -"004ff2f0 000008 cKF_bs_r_mnk_1", -"", -"004ff300 000020 mnk_1_pal", -"004ff320 000100 mnk_1_eye1_TA_tex_txt", -"004ff420 000100 mnk_1_eye2_TA_tex_txt", -"004ff520 000100 mnk_1_eye3_TA_tex_txt", -"004ff620 000100 mnk_1_eye4_TA_tex_txt", -"004ff720 000100 mnk_1_eye5_TA_tex_txt", -"004ff820 000100 mnk_1_eye6_TA_tex_txt", -"004ff920 000100 mnk_1_eye7_TA_tex_txt", -"004ffa20 000100 mnk_1_eye8_TA_tex_txt", -"004ffb20 000100 mnk_1_mouth1_TA_tex_txt", -"004ffc20 000100 mnk_1_mouth2_TA_tex_txt", -"004ffd20 000100 mnk_1_mouth3_TA_tex_txt", -"004ffe20 000100 mnk_1_mouth4_TA_tex_txt", -"004fff20 000100 mnk_1_mouth5_TA_tex_txt", -"00500020 000100 mnk_1_mouth6_TA_tex_txt", -"00500120 000600 mnk_1_tmem_txt", -"", -"005bc5c0 001700 rcs_1_v", -"005bdcc0 000188 head_rcs_model", -"005bde48 000078 mouth_rcs_model", -"005bdec0 000088 Rarm2_rcs_model", -"005bdf48 000078 Rarm1_rcs_model", -"005bdfc0 000088 Larm2_rcs_model", -"005be048 000078 Larm1_rcs_model", -"005be0c0 000108 chest_rcs_model", -"005be1c8 000078 tail1_rcs_model", -"005be240 0000a0 tail2_rcs_model", -"005be2e0 000080 Rfoot2_rcs_model", -"005be360 000058 Rfoot1_rcs_model", -"005be3b8 000080 Lfoot2_rcs_model", -"005be438 000058 Lfoot1_rcs_model", -"005be490 0000d8 base_rcs_model", -"005be568 000138 cKF_je_r_rcs_1_tbl", -"005be6a0 000008 cKF_bs_r_rcs_1", -"", -"005be6c0 000020 rcs_1_pal", -"005be6e0 000100 rcs_1_eye1_TA_tex_txt", -"005be7e0 000100 rcs_1_eye2_TA_tex_txt", -"005be8e0 000100 rcs_1_eye3_TA_tex_txt", -"005be9e0 000100 rcs_1_eye4_TA_tex_txt", -"005beae0 000100 rcs_1_eye5_TA_tex_txt", -"005bebe0 000100 rcs_1_eye6_TA_tex_txt", -"005bece0 000100 rcs_1_eye7_TA_tex_txt", -"005bede0 000100 rcs_1_eye8_TA_tex_txt", -"005beee0 000580 rcs_1_tmem_txt", -"", -"005df4f8 001ac0 tig_1_v", -"005e0fb8 0001d8 head_tig_model", -"005e1190 000088 mouth_tig_model", -"005e1218 000088 Rarm2_tig_model", -"005e12a0 000078 Rarm1_tig_model", -"005e1318 000088 Larm2_tig_model", -"005e13a0 000078 Larm1_tig_model", -"005e1418 0000a0 chest_tig_model", -"005e14b8 000058 tail1_tig_model", -"005e1510 000090 tail2_tig_model", -"005e15a0 000088 Rfoot2_tig_model", -"005e1628 000080 Rfoot1_tig_model", -"005e16a8 000088 Lfoot2_tig_model", -"005e1730 000080 Lfoot1_tig_model", -"005e17b0 000098 base_tig_model", -"005e1848 000138 cKF_je_r_tig_1_tbl", -"005e1980 000008 cKF_bs_r_tig_1", -"", -"005e19a0 000020 tig_1_pal", -"005e19c0 000100 tig_1_eye1_TA_tex_txt", -"005e1ac0 000100 tig_1_eye2_TA_tex_txt", -"005e1bc0 000100 tig_1_eye3_TA_tex_txt", -"005e1cc0 000100 tig_1_eye4_TA_tex_txt", -"005e1dc0 000100 tig_1_eye5_TA_tex_txt", -"005e1ec0 000100 tig_1_eye6_TA_tex_txt", -"005e1fc0 000100 tig_1_eye7_TA_tex_txt", -"005e20c0 000100 tig_1_eye8_TA_tex_txt", -"005e21c0 000580 tig_1_tmem_txt", -"", -"005e2740 000020 tig_2_pal", -"005e2760 000100 tig_2_eye1_TA_tex_txt", -"005e2860 000100 tig_2_eye2_TA_tex_txt", -"005e2960 000100 tig_2_eye3_TA_tex_txt", -"005e2a60 000100 tig_2_eye4_TA_tex_txt", -"005e2b60 000100 tig_2_eye5_TA_tex_txt", -"005e2c60 000100 tig_2_eye6_TA_tex_txt", -"005e2d60 000100 tig_2_eye7_TA_tex_txt", -"005e2e60 000100 tig_2_eye8_TA_tex_txt", -"005e2f60 000580 tig_2_tmem_txt", -"", -"005e34e0 000020 tig_3_pal", -"005e3500 000100 tig_3_eye1_TA_tex_txt", -"005e3600 000100 tig_3_eye2_TA_tex_txt", -"005e3700 000100 tig_3_eye3_TA_tex_txt", -"005e3800 000100 tig_3_eye4_TA_tex_txt", -"005e3900 000100 tig_3_eye5_TA_tex_txt", -"005e3a00 000100 tig_3_eye6_TA_tex_txt", -"005e3b00 000100 tig_3_eye7_TA_tex_txt", -"005e3c00 000100 tig_3_eye8_TA_tex_txt", -"005e3d00 000580 tig_3_tmem_txt", -"", -"005e4280 000020 tig_4_pal", -"005e42a0 000100 tig_4_eye1_TA_tex_txt", -"005e43a0 000100 tig_4_eye2_TA_tex_txt", -"005e44a0 000100 tig_4_eye3_TA_tex_txt", -"005e45a0 000100 tig_4_eye4_TA_tex_txt", -"005e46a0 000100 tig_4_eye5_TA_tex_txt", -"005e47a0 000100 tig_4_eye6_TA_tex_txt", -"005e48a0 000100 tig_4_eye7_TA_tex_txt", -"005e49a0 000100 tig_4_eye8_TA_tex_txt", -"005e4aa0 000580 tig_4_tmem_txt", -"", -"005f8508 001c50 end_1_v", -"005fa158 000198 head_end_model", -"005fa2f0 000090 Rarm2_end_model", -"005fa380 000078 Rarm1_end_model", -"005fa3f8 000090 Larm2_end_model", -"005fa488 000078 Larm1_end_model", -"005fa500 000088 chest_end_model", -"005fa588 000058 tail1_end_model", -"005fa5e0 000080 Rfoot3_end_model", -"005fa660 000078 Rfoot2_end_model", -"005fa6d8 000090 Rfoot1_end_model", -"005fa768 000098 Lfoot3_end_model", -"005fa800 000080 Lfoot2_end_model", -"005fa880 000080 Lfoot1_end_model", -"005fa900 000168 base_end_model", -"005faa68 000138 cKF_je_r_end_1_tbl", -"005faba0 000008 cKF_bs_r_end_1", -"", -"005fabc0 000020 end_1_pal", -"005fabe0 000100 end_1_eye1_TA_tex_txt", -"005face0 000100 end_1_eye2_TA_tex_txt", -"005fade0 000100 end_1_eye3_TA_tex_txt", -"005faee0 000100 end_1_eye4_TA_tex_txt", -"005fafe0 000100 end_1_eye5_TA_tex_txt", -"005fb0e0 000100 end_1_eye6_TA_tex_txt", -"005fb1e0 000100 end_1_eye7_TA_tex_txt", -"005fb2e0 000100 end_1_eye8_TA_tex_txt", -"005fb3e0 000100 end_1_mouth1_TA_tex_txt", -"005fb4e0 000100 end_1_mouth2_TA_tex_txt", -"005fb5e0 000100 end_1_mouth3_TA_tex_txt", -"005fb6e0 000100 end_1_mouth4_TA_tex_txt", -"005fb7e0 000100 end_1_mouth5_TA_tex_txt", -"005fb8e0 000100 end_1_mouth6_TA_tex_txt", -"005fb9e0 0004c0 end_1_tmem_txt", -"", -"005fe210 001d50 tuk_1_v", -"005fff60 0002e8 head_tuk_model", -"00600248 000078 mouth_tuk_model", -"006002c0 000080 Rarm2_tuk_model", -"00600340 000078 Rarm1_tuk_model", -"006003b8 000080 Larm2_tuk_model", -"00600438 000078 Larm1_tuk_model", -"006004b0 000138 chest_tuk_model", -"006005e8 0000f8 tail_tuk_model", -"006006e0 0000a0 Rfoot3_tuk_model", -"00600780 000080 Rfoot2_tuk_model", -"00600800 000058 Rfoot1_tuk_model", -"00600858 0000a0 Lfoot3_tuk_model", -"006008f8 000080 Lfoot2_tuk_model", -"00600978 000058 Lfoot1_tuk_model", -"006009d0 000070 base_tuk_model", -"00600a40 000138 cKF_je_r_tuk_1_tbl", -"00600b78 000008 cKF_bs_r_tuk_1", -"", -"00600b80 000020 tuk_1_pal", -"00600ba0 000100 tuk_1_eye1_TA_tex_txt", -"00600ca0 000100 tuk_1_eye2_TA_tex_txt", -"00600da0 000100 tuk_1_eye3_TA_tex_txt", -"00600ea0 000100 tuk_1_eye4_TA_tex_txt", -"00600fa0 000100 tuk_1_eye5_TA_tex_txt", -"006010a0 000100 tuk_1_eye6_TA_tex_txt", -"006011a0 000100 tuk_1_eye7_TA_tex_txt", -"006012a0 000100 tuk_1_eye8_TA_tex_txt", -"006013a0 000680 tuk_1_tmem_txt", -"", -"00602088 001760 wol_1_v", -"006037e8 000140 head_wol_model", -"00603928 000088 mouth_wol_model", -"006039b0 000088 Rarm2_wol_model", -"00603a38 000078 Rarm1_wol_model", -"00603ab0 000088 Larm2_wol_model", -"00603b38 000078 Larm1_wol_model", -"00603bb0 0000a0 chest_wol_model", -"00603c50 000060 tail1_wol_model", -"00603cb0 0000b8 tail2_wol_model", -"00603d68 000080 Rfoot2_wol_model", -"00603de8 000080 Rfoot1_wol_model", -"00603e68 000080 Lfoot2_wol_model", -"00603ee8 000080 Lfoot1_wol_model", -"00603f68 0000a8 base_wol_model", -"00604010 000138 cKF_je_r_wol_1_tbl", -"00604148 000008 cKF_bs_r_wol_1", -"", -"00604160 000020 wol_1_pal", -"00604180 000100 wol_1_eye1_TA_tex_txt", -"00604280 000100 wol_1_eye2_TA_tex_txt", -"00604380 000100 wol_1_eye3_TA_tex_txt", -"00604480 000100 wol_1_eye4_TA_tex_txt", -"00604580 000100 wol_1_eye5_TA_tex_txt", -"00604680 000100 wol_1_eye6_TA_tex_txt", -"00604780 000100 wol_1_eye7_TA_tex_txt", -"00604880 000100 wol_1_eye8_TA_tex_txt", -"00604980 000400 wol_1_tmem_txt", -"", -"00604d80 000020 wol_2_pal", -"00604da0 000100 wol_2_eye1_TA_tex_txt", -"00604ea0 000100 wol_2_eye2_TA_tex_txt", -"00604fa0 000100 wol_2_eye3_TA_tex_txt", -"006050a0 000100 wol_2_eye4_TA_tex_txt", -"006051a0 000100 wol_2_eye5_TA_tex_txt", -"006052a0 000100 wol_2_eye6_TA_tex_txt", -"006053a0 000100 wol_2_eye7_TA_tex_txt", -"006054a0 000100 wol_2_eye8_TA_tex_txt", -"006055a0 000400 wol_2_tmem_txt", -"", -"006059a0 000020 wol_3_pal", -"006059c0 000100 wol_3_eye1_TA_tex_txt", -"00605ac0 000100 wol_3_eye2_TA_tex_txt", -"00605bc0 000100 wol_3_eye3_TA_tex_txt", -"00605cc0 000100 wol_3_eye4_TA_tex_txt", -"00605dc0 000100 wol_3_eye5_TA_tex_txt", -"00605ec0 000100 wol_3_eye6_TA_tex_txt", -"00605fc0 000100 wol_3_eye7_TA_tex_txt", -"006060c0 000100 wol_3_eye8_TA_tex_txt", -"006061c0 000400 wol_3_tmem_txt", -"", -"006065c0 000020 wol_4_pal", -"006065e0 000100 wol_4_eye1_TA_tex_txt", -"006066e0 000100 wol_4_eye2_TA_tex_txt", -"006067e0 000100 wol_4_eye3_TA_tex_txt", -"006068e0 000100 wol_4_eye4_TA_tex_txt", -"006069e0 000100 wol_4_eye5_TA_tex_txt", -"00606ae0 000100 wol_4_eye6_TA_tex_txt", -"00606be0 000100 wol_4_eye7_TA_tex_txt", -"00606ce0 000100 wol_4_eye8_TA_tex_txt", -"00606de0 000400 wol_4_tmem_txt", -"", -"006071e0 000020 wol_5_pal", -"00607200 000100 wol_5_eye1_TA_tex_txt", -"00607300 000100 wol_5_eye2_TA_tex_txt", -"00607400 000100 wol_5_eye3_TA_tex_txt", -"00607500 000100 wol_5_eye4_TA_tex_txt", -"00607600 000100 wol_5_eye5_TA_tex_txt", -"00607700 000100 wol_5_eye6_TA_tex_txt", -"00607800 000100 wol_5_eye7_TA_tex_txt", -"00607900 000100 wol_5_eye8_TA_tex_txt", -"00607a00 000400 wol_5_tmem_txt", -"", -"00607e00 000020 wol_6_pal", -"00607e20 000100 wol_6_eye1_TA_tex_txt", -"00607f20 000100 wol_6_eye2_TA_tex_txt", -"00608020 000100 wol_6_eye3_TA_tex_txt", -"00608120 000100 wol_6_eye4_TA_tex_txt", -"00608220 000100 wol_6_eye5_TA_tex_txt", -"00608320 000100 wol_6_eye6_TA_tex_txt", -"00608420 000100 wol_6_eye7_TA_tex_txt", -"00608520 000100 wol_6_eye8_TA_tex_txt", -"00608620 000400 wol_6_tmem_txt", -] - -# Generate YAML output -yaml_output = text_to_yaml(test_lines) -print(yaml_output) From 9326cfd81b636484b721e53b49108591c1e83c5e Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Sat, 27 Jul 2024 21:57:34 -0400 Subject: [PATCH 059/234] Actually link npc_draw_data.c --- config/rel_slices.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/config/rel_slices.yml b/config/rel_slices.yml index d7971df2..d94b0444 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -1906,6 +1906,8 @@ data/model/mural/obj_mural.c: .data: [0x80904600, 0x80904700] data/npc/default_list.c: .data: [0x8096CD90, 0x8096D328] +data/npc/npc_draw_data.c: + .data: [0x8096D328, 0x80977450] data/npc/grow_list.c: .data: [0x80977450, 0x80977540] data/npc/house_list.c: From 1366a25c48115fe21d21fbd9fe86345e679e0eaa Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Sun, 28 Jul 2024 01:17:12 -0400 Subject: [PATCH 060/234] Use anime_X_Z definitions where applicable --- include/libforest/emu64/emu64.hpp | 13 - include/libforest/gbi_extensions.h | 30 + src/data/model/mural/obj_mural.c | 8 +- src/data/model/obj_e_boat/obj_e_boat.c | 531 +++---- src/data/npc/model/mdl/ant_1.c | 1177 +++++++------- src/data/npc/model/mdl/bea_1.c | 1107 ++++++------- src/data/npc/model/mdl/bev_1.c | 1319 ++++++++-------- src/data/npc/model/mdl/boa_1.c | 1460 ++++++++--------- src/data/npc/model/mdl/bpt_1.c | 1343 ++++++++-------- src/data/npc/model/mdl/brd_1.c | 1243 +++++++-------- src/data/npc/model/mdl/bul_1.c | 1243 +++++++-------- src/data/npc/model/mdl/cat_1.c | 1079 ++++++------- src/data/npc/model/mdl/cbr_1.c | 1260 +++++++-------- src/data/npc/model/mdl/chn_1.c | 1441 ++++++++--------- src/data/npc/model/mdl/cml_1.c | 1363 ++++++++-------- src/data/npc/model/mdl/cow_1.c | 1246 +++++++-------- src/data/npc/model/mdl/crd_1.c | 1300 +++++++--------- src/data/npc/model/mdl/dog_1.c | 1195 +++++++------- src/data/npc/model/mdl/duk_1.c | 1183 +++++++------- src/data/npc/model/mdl/elp_1.c | 1243 +++++++-------- src/data/npc/model/mdl/end_1.c | 1347 ++++++++-------- src/data/npc/model/mdl/flg_1.c | 965 ++++++------ src/data/npc/model/mdl/fob_1.c | 1384 ++++++++-------- src/data/npc/model/mdl/fox_1.c | 1237 +++++++-------- src/data/npc/model/mdl/goa_1.c | 1178 +++++++------- src/data/npc/model/mdl/gor_1.c | 1428 ++++++++--------- src/data/npc/model/mdl/grf_1.c | 1448 ++++++++--------- src/data/npc/model/mdl/gst_1.c | 754 +++++---- src/data/npc/model/mdl/hem_1.c | 1151 +++++++------- src/data/npc/model/mdl/hgh_1.c | 1483 ++++++++---------- src/data/npc/model/mdl/hgs_1.c | 1483 ++++++++---------- src/data/npc/model/mdl/hip_1.c | 1392 ++++++++--------- src/data/npc/model/mdl/hrs_1.c | 1334 ++++++++-------- src/data/npc/model/mdl/kab_1.c | 1196 +++++++------- src/data/npc/model/mdl/kal_1.c | 1061 ++++++------- src/data/npc/model/mdl/kgr_1.c | 1431 ++++++++--------- src/data/npc/model/mdl/lon_1.c | 1379 ++++++++-------- src/data/npc/model/mdl/lrc_1.c | 1244 +++++++-------- src/data/npc/model/mdl/mka_1.c | 1090 ++++++------- src/data/npc/model/mdl/mnk_1.c | 1393 ++++++++--------- src/data/npc/model/mdl/mob_1.c | 1024 ++++++------ src/data/npc/model/mdl/mol_1.c | 1056 ++++++------- src/data/npc/model/mdl/mos_1.c | 1056 ++++++------- src/data/npc/model/mdl/mus_1.c | 1244 +++++++-------- src/data/npc/model/mdl/oct_1.c | 1405 ++++++++--------- src/data/npc/model/mdl/ost_1.c | 1348 ++++++++-------- src/data/npc/model/mdl/owl_1.c | 1470 ++++++++--------- src/data/npc/model/mdl/pbr_1.c | 1302 ++++++++-------- src/data/npc/model/mdl/pga_1.c | 1471 ++++++++--------- src/data/npc/model/mdl/pgb_1.c | 1463 ++++++++--------- src/data/npc/model/mdl/pgn_1.c | 1242 +++++++-------- src/data/npc/model/mdl/pig_1.c | 1036 ++++++------ src/data/npc/model/mdl/pkn_1.c | 992 ++++++------ src/data/npc/model/mdl/pla_1.c | 1336 ++++++++-------- src/data/npc/model/mdl/plb_1.c | 1469 ++++++++--------- src/data/npc/model/mdl/plc_1.c | 1273 +++++++-------- src/data/npc/model/mdl/plj_1.c | 1210 +++++++------- src/data/npc/model/mdl/rbt_1.c | 1141 +++++++------- src/data/npc/model/mdl/rcc_1.c | 1311 ++++++++-------- src/data/npc/model/mdl/rcd_1.c | 1250 +++++++-------- src/data/npc/model/mdl/rcf_1.c | 1529 +++++++++--------- src/data/npc/model/mdl/rcn_1.c | 1254 +++++++-------- src/data/npc/model/mdl/rcs_1.c | 1287 +++++++-------- src/data/npc/model/mdl/rhn_1.c | 1529 +++++++++--------- src/data/npc/model/mdl/seg_1.c | 1433 ++++++++--------- src/data/npc/model/mdl/shp_1.c | 1007 ++++++------ src/data/npc/model/mdl/snt_1.c | 1197 +++++++------- src/data/npc/model/mdl/squ_1.c | 1266 +++++++-------- src/data/npc/model/mdl/tig_1.c | 1285 +++++++-------- src/data/npc/model/mdl/ttl_1.c | 1219 +++++++-------- src/data/npc/model/mdl/tuk_1.c | 1646 +++++++++----------- src/data/npc/model/mdl/wip_1.c | 1211 +++++++------- src/data/npc/model/mdl/wls_1.c | 1463 ++++++++--------- src/data/npc/model/mdl/wol_1.c | 1142 +++++++------- src/data/npc/model/mdl/xct_1.c | 1050 ++++++------- src/data/npc/model/mdl/xsq_1.c | 1266 +++++++-------- src/static/libforest/emu64/emu64_print.cpp | 6 +- 77 files changed, 42925 insertions(+), 49126 deletions(-) diff --git a/include/libforest/emu64/emu64.hpp b/include/libforest/emu64/emu64.hpp index a7d1fdf2..106f7542 100644 --- a/include/libforest/emu64/emu64.hpp +++ b/include/libforest/emu64/emu64.hpp @@ -129,19 +129,6 @@ #define EMU64_TLUT_IA16 0x0000 #define EMU64_TLUT_RGBA5551 0x8000 -#define SOFTSPRITE_MTX_SEG 0x07 -#define ANIME_1_TXT_SEG 0x08 -#define ANIME_2_TXT_SEG 0x09 -#define ANIME_3_TXT_SEG 0x0A -#define ANIME_4_TXT_SEG 0x0B -#define ANIME_5_TXT_SEG 0x0C -#define ANIME_6_TXT_SEG 0x0D - -#define SEGMENT_SHIFT 24 - -#define SEG_2_SEGADDR(seg) (seg << SEGMENT_SHIFT) -#define SEG_EQUALS(seg_addr, seg) (seg_addr == SEG_2_SEGADDR(seg)) - /* TODO: figure out where this actually belongs */ namespace std { typedef struct __va_list_struct __tag_va_List; diff --git a/include/libforest/gbi_extensions.h b/include/libforest/gbi_extensions.h index 29b2a68c..a877bfe9 100644 --- a/include/libforest/gbi_extensions.h +++ b/include/libforest/gbi_extensions.h @@ -11,6 +11,36 @@ extern "C" { #include #include "dolphin/gx.h" +#define SOFTSPRITE_MTX_SEG 0x07 +#define ANIME_1_TXT_SEG 0x08 +#define ANIME_2_TXT_SEG 0x09 +#define ANIME_3_TXT_SEG 0x0A +#define ANIME_4_TXT_SEG 0x0B +#define ANIME_5_TXT_SEG 0x0C +#define ANIME_6_TXT_SEG 0x0D + +#define ANIME_4_TXT_SIZE 0x800 +#define ANIME_6_MODEL_SIZE 0x408 + +#define SEGMENT_SHIFT 24 + +#define SEG_2_SEGADDR(seg) (seg << SEGMENT_SHIFT) +#define SEG_EQUALS(seg_addr, seg) (seg_addr == SEG_2_SEGADDR(seg)) + +#define softsprite_mtx SEG_2_SEGADDR(SOFTSPRITE_MTX_SEG) +#define anime_1_txt SEG_2_SEGADDR(ANIME_1_TXT_SEG) +#define anime_1_model SEG_2_SEGADDR(ANIME_1_TXT_SEG) +#define anime_2_txt SEG_2_SEGADDR(ANIME_2_TXT_SEG) +#define anime_2_model SEG_2_SEGADDR(ANIME_2_TXT_SEG) +#define anime_3_txt SEG_2_SEGADDR(ANIME_3_TXT_SEG) +#define anime_3_model SEG_2_SEGADDR(ANIME_3_TXT_SEG) +#define anime_4_txt SEG_2_SEGADDR(ANIME_4_TXT_SEG) +#define anime_4_model SEG_2_SEGADDR(ANIME_4_TXT_SEG) +#define anime_5_txt SEG_2_SEGADDR(ANIME_5_TXT_SEG) +#define anime_5_model SEG_2_SEGADDR(ANIME_5_TXT_SEG) +#define anime_6_txt SEG_2_SEGADDR(ANIME_6_TXT_SEG) +#define anime_6_model SEG_2_SEGADDR(ANIME_6_TXT_SEG) + /* New Microcode Command Ids */ #define G_TRIN 0x09 #define G_TRIN_INDEPEND 0x0A diff --git a/src/data/model/mural/obj_mural.c b/src/data/model/mural/obj_mural.c index c2efa085..6eccd999 100644 --- a/src/data/model/mural/obj_mural.c +++ b/src/data/model/mural/obj_mural.c @@ -14,11 +14,11 @@ Gfx obj_mural_model[] = { /* @BUG - These commands were never updated for Dolphin and therefore render broken */ #ifndef BUGFIXES - gsDPLoadTLUT_pal16(15, 0x08000000), - gsDPLoadTextureBlock_4b(0x09000000, G_IM_FMT_CI, 32, 32, 15, G_TX_MIRROR | G_TX_WRAP, G_TX_MIRROR | G_TX_CLAMP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPLoadTLUT_pal16(15, anime_1_txt), + gsDPLoadTextureBlock_4b(anime_2_txt, G_IM_FMT_CI, 32, 32, 15, G_TX_MIRROR | G_TX_WRAP, G_TX_MIRROR | G_TX_CLAMP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), #else - gsDPLoadTLUT_Dolphin(15, 16, 1, 0x08000000), - gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPLoadTLUT_Dolphin(15, 16, 1, anime_1_txt), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), #endif gsDPSetPrimColor(0, 128, 255, 255, 255, 255), gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), diff --git a/src/data/model/obj_e_boat/obj_e_boat.c b/src/data/model/obj_e_boat/obj_e_boat.c index 0b123c0e..8ed35500 100644 --- a/src/data/model/obj_e_boat/obj_e_boat.c +++ b/src/data/model/obj_e_boat/obj_e_boat.c @@ -29,246 +29,219 @@ static Gfx obj_e_boat_boat1_model[] = { gsDPSetPrimColor(0, 128, 255, 255, 255, 255), gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), gsSPVertex(&obj_e_boat_v[30], 30, 0), - gsSPNTrianglesInit_5b( - 4, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 4, 5, 6 // tri2 - ), - gsSPNTriangles_5b( - 4, 6, 7, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 - ), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), gsDPLoadTextureBlock_4b_Dolphin(obj_s_boat_t7_tex_txt, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), - gsSPNTrianglesInit_5b( - 2, // tri count - 8, 9, 10, // tri0 - 8, 10, 11, // tri1 - 0, 0, 0 // tri2 - ), + gsSPNTrianglesInit_5b(2, // tri count + 8, 9, 10, // tri0 + 8, 10, 11, // tri1 + 0, 0, 0 // tri2 + ), gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), - gsSPNTrianglesInit_5b( - 2, // tri count - 12, 13, 14, // tri0 - 12, 14, 15, // tri1 - 0, 0, 0 // tri2 - ), + gsSPNTrianglesInit_5b(2, // tri count + 12, 13, 14, // tri0 + 12, 14, 15, // tri1 + 0, 0, 0 // tri2 + ), gsDPLoadTextureBlock_4b_Dolphin(obj_s_boat_t1_tex_txt, G_IM_FMT_CI, 32, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), - gsSPNTrianglesInit_5b( - 5, // tri count - 16, 17, 18, // tri0 - 16, 18, 19, // tri1 - 16, 20, 21 // tri2 - ), - gsSPNTriangles_5b( - 16, 21, 17, // tri0 - 20, 22, 21, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 - ), + gsSPNTrianglesInit_5b(5, // tri count + 16, 17, 18, // tri0 + 16, 18, 19, // tri1 + 16, 20, 21 // tri2 + ), + gsSPNTriangles_5b(16, 21, 17, // tri0 + 20, 22, 21, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), gsDPLoadTextureBlock_4b_Dolphin(obj_s_boat_t3_tex_txt, G_IM_FMT_CI, 32, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), - gsSPNTrianglesInit_5b( - 5, // tri count - 23, 24, 25, // tri0 - 23, 25, 26, // tri1 - 23, 27, 24 // tri2 - ), - gsSPNTriangles_5b( - 26, 25, 28, // tri0 - 26, 28, 29, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 - ), + gsSPNTrianglesInit_5b(5, // tri count + 23, 24, 25, // tri0 + 23, 25, 26, // tri1 + 23, 27, 24 // tri2 + ), + gsSPNTriangles_5b(26, 25, 28, // tri0 + 26, 28, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), gsDPLoadTextureBlock_4b_Dolphin(obj_s_boat_t2_tex_txt, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), gsSPVertex(&obj_e_boat_v[60], 31, 0), - gsSPNTrianglesInit_5b( - 8, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 4, 5, 6 // tri2 - ), - gsSPNTriangles_5b( - 4, 6, 7, // tri0 - 8, 9, 10, // tri1 - 8, 10, 11, // tri2 - 12, 13, 14 // tri3 - ), - gsSPNTriangles_5b( - 12, 14, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 - ), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), gsDPLoadTextureBlock_4b_Dolphin(obj_s_boat_t5_tex_txt, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), - gsSPNTrianglesInit_5b( - 4, // tri count - 16, 17, 18, // tri0 - 16, 18, 19, // tri1 - 20, 21, 22 // tri2 - ), - gsSPNTriangles_5b( - 20, 22, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 - ), + gsSPNTrianglesInit_5b(4, // tri count + 16, 17, 18, // tri0 + 16, 18, 19, // tri1 + 20, 21, 22 // tri2 + ), + gsSPNTriangles_5b(20, 22, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), gsDPLoadTextureBlock_4b_Dolphin(obj_s_boat_t8_tex_txt, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), - gsSPNTrianglesInit_5b( - 2, // tri count - 23, 24, 25, // tri0 - 23, 25, 26, // tri1 - 0, 0, 0 // tri2 - ), + gsSPNTrianglesInit_5b(2, // tri count + 23, 24, 25, // tri0 + 23, 25, 26, // tri1 + 0, 0, 0 // tri2 + ), gsDPLoadTextureBlock_4b_Dolphin(obj_s_boat_t4_tex_txt, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), - gsSPNTrianglesInit_5b( - 2, // tri count - 27, 28, 29, // tri0 - 27, 29, 30, // tri1 - 0, 0, 0 // tri2 - ), + gsSPNTrianglesInit_5b(2, // tri count + 27, 28, 29, // tri0 + 27, 29, 30, // tri1 + 0, 0, 0 // tri2 + ), gsDPLoadTextureBlock_4b_Dolphin(obj_s_boat_t3_tex_txt, G_IM_FMT_CI, 32, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), gsSPVertex(&obj_e_boat_v[91], 7, 0), - gsSPNTrianglesInit_5b( - 5, // tri count - 0, 1, 2, // tri0 - 0, 3, 1, // tri1 - 4, 5, 6 // tri2 - ), - gsSPNTriangles_5b( - 4, 3, 0, // tri0 - 4, 6, 3, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 - ), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 3, 0, // tri0 + 4, 6, 3, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), gsSPEndDisplayList(), }; static Gfx obj_e_boat_water1_model[] = { gsSPTexture(0, 0, 0, 0, G_ON), - gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, COMBINED, 0, TEXEL0, 0), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, + COMBINED, 0, TEXEL0, 0), gsDPSetPrimColor(0, 255, 190, 210, 255, 230), gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), gsDPLoadTextureBlock_4b_Dolphin(obj_s_boat_water2_pic_i4, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), gsDPLoadTextureBlock_4b_Dolphin(obj_s_boat_water1_pic_i4, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 14), - gsSPDisplayList(0x09000000), + gsSPDisplayList(anime_2_model), gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), gsSPVertex(&obj_e_boat_v[142], 14, 0), - gsSPNTrianglesInit_5b( - 14, // tri count - 0, 1, 2, // tri0 - 2, 1, 3, // tri1 - 4, 5, 6 // tri2 - ), - gsSPNTriangles_5b( - 2, 7, 8, // tri0 - 2, 9, 0, // tri1 - 10, 11, 12, // tri2 - 8, 9, 2 // tri3 - ), - gsSPNTriangles_5b( - 3, 7, 2, // tri0 - 8, 13, 10, // tri1 - 6, 13, 8, // tri2 - 8, 12, 9 // tri3 - ), - gsSPNTriangles_5b( - 10, 12, 8, // tri0 - 8, 4, 6, // tri1 - 7, 4, 8, // tri2 - 0, 0, 0 // tri3 - ), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(2, 7, 8, // tri0 + 2, 9, 0, // tri1 + 10, 11, 12, // tri2 + 8, 9, 2 // tri3 + ), + gsSPNTriangles_5b(3, 7, 2, // tri0 + 8, 13, 10, // tri1 + 6, 13, 8, // tri2 + 8, 12, 9 // tri3 + ), + gsSPNTriangles_5b(10, 12, 8, // tri0 + 8, 4, 6, // tri1 + 7, 4, 8, // tri2 + 0, 0, 0 // tri3 + ), gsSPEndDisplayList(), }; static Gfx obj_e_boat_water2_model[] = { gsSPTexture(0, 0, 0, 0, G_ON), - gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, COMBINED, 0, TEXEL0, 0), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, + COMBINED, 0, TEXEL0, 0), gsDPSetPrimColor(0, 255, 190, 210, 255, 230), gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), gsDPLoadTextureBlock_4b_Dolphin(obj_s_boat_water2_pic_i4, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), gsDPLoadTextureBlock_4b_Dolphin(obj_s_boat_water1_pic_i4, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 14), - gsSPDisplayList(0x09000000), - gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPDisplayList(anime_2_model), + gsSPMatrix(anime_6_model + sizeof(Mtx) * 2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), gsSPVertex(&obj_e_boat_v[125], 5, 0), - gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPMatrix(anime_6_model + sizeof(Mtx) * 3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), gsSPVertex(&obj_e_boat_v[130], 12, 5), - gsSPNTrianglesInit_5b( - 8, // tri count - 1, 5, 6, // tri0 - 3, 7, 8, // tri1 - 0, 4, 9 // tri2 - ), - gsSPNTriangles_5b( - 4, 10, 11, // tri0 - 0, 12, 13, // tri1 - 4, 2, 14, // tri2 - 3, 1, 15 // tri3 - ), - gsSPNTriangles_5b( - 2, 3, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 - ), + gsSPNTrianglesInit_5b(8, // tri count + 1, 5, 6, // tri0 + 3, 7, 8, // tri1 + 0, 4, 9 // tri2 + ), + gsSPNTriangles_5b(4, 10, 11, // tri0 + 0, 12, 13, // tri1 + 4, 2, 14, // tri2 + 3, 1, 15 // tri3 + ), + gsSPNTriangles_5b(2, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), gsSPEndDisplayList(), }; static Gfx obj_e_boat_water3_model[] = { gsSPTexture(0, 0, 0, 0, G_ON), - gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, COMBINED, 0, TEXEL0, 0), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, + COMBINED, 0, TEXEL0, 0), gsDPSetPrimColor(0, 255, 190, 210, 255, 230), gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), gsDPLoadTextureBlock_4b_Dolphin(obj_s_boat_water2_pic_i4, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), gsDPLoadTextureBlock_4b_Dolphin(obj_s_boat_water1_pic_i4, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 14), - gsSPDisplayList(0x09000000), - gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPDisplayList(anime_2_model), + gsSPMatrix(anime_6_model + sizeof(Mtx) * 3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), gsSPVertex(&obj_e_boat_v[98], 5, 0), - gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPMatrix(anime_6_model + sizeof(Mtx) * 4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), gsSPVertex(&obj_e_boat_v[103], 22, 5), - gsSPNTrianglesInit_5b( - 8, // tri count - 0, 1, 5, // tri0 - 0, 6, 7, // tri1 - 1, 2, 8 // tri2 - ), - gsSPNTriangles_5b( - 2, 3, 9, // tri0 - 3, 4, 10, // tri1 - 4, 11, 12, // tri2 - 3, 13, 14 // tri3 - ), - gsSPNTriangles_5b( - 1, 15, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 - ), - gsSPNTrianglesInit_5b( - 8, // tri count - 17, 18, 19, // tri0 - 20, 21, 22, // tri1 - 19, 23, 24 // tri2 - ), - gsSPNTriangles_5b( - 20, 22, 25, // tri0 - 23, 26, 24, // tri1 - 25, 26, 23, // tri2 - 25, 23, 20 // tri3 - ), - gsSPNTriangles_5b( - 24, 17, 19, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 - ), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 5, // tri0 + 0, 6, 7, // tri1 + 1, 2, 8 // tri2 + ), + gsSPNTriangles_5b(2, 3, 9, // tri0 + 3, 4, 10, // tri1 + 4, 11, 12, // tri2 + 3, 13, 14 // tri3 + ), + gsSPNTriangles_5b(1, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(8, // tri count + 17, 18, 19, // tri0 + 20, 21, 22, // tri1 + 19, 23, 24 // tri2 + ), + gsSPNTriangles_5b(20, 22, 25, // tri0 + 23, 26, 24, // tri1 + 25, 26, 23, // tri2 + 25, 23, 20 // tri3 + ), + gsSPNTriangles_5b(24, 17, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), gsSPEndDisplayList(), }; @@ -280,65 +253,92 @@ static Gfx obj_e_boat_oar1_model[] = { gsDPSetPrimColor(0, 128, 255, 255, 255, 255), gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), gsSPVertex(&obj_e_boat_v[0], 30, 0), - gsSPNTrianglesInit_5b( - 2, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 0, 0, 0 // tri2 - ), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 0, 0 // tri2 + ), gsDPLoadTextureBlock_4b_Dolphin(obj_s_boat_t11_tex_txt, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), - gsSPNTrianglesInit_5b( - 6, // tri count - 6, 7, 8, // tri0 - 6, 8, 9, // tri1 - 10, 11, 12 // tri2 - ), - gsSPNTriangles_5b( - 10, 12, 13, // tri0 - 14, 15, 16, // tri1 - 14, 16, 17, // tri2 - 0, 0, 0 // tri3 - ), + gsSPNTrianglesInit_5b(6, // tri count + 6, 7, 8, // tri0 + 6, 8, 9, // tri1 + 10, 11, 12 // tri2 + ), + gsSPNTriangles_5b(10, 12, 13, // tri0 + 14, 15, 16, // tri1 + 14, 16, 17, // tri2 + 0, 0, 0 // tri3 + ), gsDPLoadTextureBlock_4b_Dolphin(obj_s_boat_t9_tex_txt, G_IM_FMT_CI, 48, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), - gsSPNTrianglesInit_5b( - 4, // tri count - 18, 19, 20, // tri0 - 21, 18, 20, // tri1 - 22, 23, 24 // tri2 - ), - gsSPNTriangles_5b( - 25, 22, 24, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 - ), + gsSPNTrianglesInit_5b(4, // tri count + 18, 19, 20, // tri0 + 21, 18, 20, // tri1 + 22, 23, 24 // tri2 + ), + gsSPNTriangles_5b(25, 22, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), gsDPLoadTextureBlock_4b_Dolphin(obj_s_boat_t9_tex_txt, G_IM_FMT_CI, 48, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), - gsSPNTrianglesInit_5b( - 2, // tri count - 26, 27, 28, // tri0 - 26, 28, 29, // tri1 - 0, 0, 0 // tri2 - ), + gsSPNTrianglesInit_5b(2, // tri count + 26, 27, 28, // tri0 + 26, 28, 29, // tri1 + 0, 0, 0 // tri2 + ), gsSPEndDisplayList(), }; extern cKF_Joint_R_c cKF_je_r_obj_e_boat_tbl[] = { - /* joint 0 */ obj_e_boat_boat1_model, 2, cKF_JOINT_FLAG_DISP_OPA, 0,0,0, - /* joint 1 */ NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 300,2200,-4500, - /* joint 2 */ obj_e_boat_oar1_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0, - /* joint 3 */ NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,4000, - /* joint 4 */ obj_e_boat_water1_model, 1, cKF_JOINT_FLAG_DISP_XLU, 0,0,0, - /* joint 5 */ obj_e_boat_water2_model, 1, cKF_JOINT_FLAG_DISP_XLU, 8400,0,0, - /* joint 6 */ obj_e_boat_water3_model, 0, cKF_JOINT_FLAG_DISP_XLU, 4600,0,0, + /* joint 0 */ obj_e_boat_boat1_model, + 2, + cKF_JOINT_FLAG_DISP_OPA, + 0, + 0, + 0, + /* joint 1 */ NULL, + 1, + cKF_JOINT_FLAG_DISP_OPA, + 300, + 2200, + -4500, + /* joint 2 */ obj_e_boat_oar1_model, + 0, + cKF_JOINT_FLAG_DISP_OPA, + 0, + 0, + 0, + /* joint 3 */ NULL, + 1, + cKF_JOINT_FLAG_DISP_OPA, + 0, + 0, + 4000, + /* joint 4 */ obj_e_boat_water1_model, + 1, + cKF_JOINT_FLAG_DISP_XLU, + 0, + 0, + 0, + /* joint 5 */ obj_e_boat_water2_model, + 1, + cKF_JOINT_FLAG_DISP_XLU, + 8400, + 0, + 0, + /* joint 6 */ obj_e_boat_water3_model, + 0, + cKF_JOINT_FLAG_DISP_XLU, + 4600, + 0, + 0, }; -extern cKF_Skeleton_R_c cKF_bs_r_obj_e_boat = { - 7, // 7 total joints - 5, // 5 displayed joints (rendered joints) - cKF_je_r_obj_e_boat_tbl -}; +extern cKF_Skeleton_R_c cKF_bs_r_obj_e_boat = { 7, // 7 total joints + 5, // 5 displayed joints (rendered joints) + cKF_je_r_obj_e_boat_tbl }; static u8 cKF_ckcb_r_obj_e_boat_tbl[] = { /* joint 0 */ cKF_ANIMITION_BIT_NONE, @@ -350,59 +350,32 @@ static u8 cKF_ckcb_r_obj_e_boat_tbl[] = { /* joint 6 */ cKF_ANIMITION_BIT_NONE }; -static s16 cKF_kn_obj_e_boat_tbl[] = { - 8, - 5, - 9 -}; +static s16 cKF_kn_obj_e_boat_tbl[] = { 8, 5, 9 }; // Fixed position table (used when the joint has no translation) static s16 cKF_c_obj_e_boat_tbl[] = { - /* joint 0 */ 0, 0, 0, - /* joint 1 */ 0, 0, 0, - /* joint 2 */ 0, 900, 900, - /* joint 3 */ -450, 900, 450, - /* joint 4 */ 0, 0, 0, - /* joint 5 */ 0, 0, 0, - /* joint 6 */ 0, 0, 0 + /* joint 0 */ 0, 0, 0, + /* joint 1 */ 0, 0, 0, + /* joint 2 */ 0, 900, 900, + /* joint 3 */ -450, 900, 450, + /* joint 4 */ 0, 0, 0, + /* joint 5 */ 0, 0, 0, + /* joint 6 */ 0, 0, 0 }; /* frame value slope */ static s16 cKF_ds_obj_e_boat_tbl[] = { /* joint 2 X rotational frames */ - 1, 904, 648, - 13, 1075, 212, - 23, 1099, -60, - 40, 920, -572, - 45, 828, -481, - 62, 701, 20, - 80, 877, 651, - 81, 900, 675, + 1, 904, 648, 13, 1075, 212, 23, 1099, -60, 40, 920, -572, 45, 828, -481, 62, 701, 20, 80, 877, 651, 81, 900, 675, /* joint 2 Y rotational frames */ - 1, 449, 134, - 27, 495, -50, - 43, 442, -124, - 67, 405, 49, - 81, 449, 132, - + 1, 449, 134, 27, 495, -50, 43, 442, -124, 67, 405, 49, 81, 449, 132, + /* joint 2 Z rotational frames */ - 1, -180, 143, - 5, -143, 443, - 20, 141, 303, - 26, 177, 119, - 40, 183, -81, - 44, 156, -370, - 60, -141, -305, - 65, -173, -137, - 81, -180, 83 + 1, -180, 143, 5, -143, 443, 20, 141, 303, 26, 177, 119, 40, 183, -81, 44, 156, -370, 60, -141, -305, 65, -173, -137, + 81, -180, 83 }; extern cKF_Animation_R_c cKF_ba_r_obj_e_boat = { - cKF_ckcb_r_obj_e_boat_tbl, - cKF_ds_obj_e_boat_tbl, - cKF_kn_obj_e_boat_tbl, - cKF_c_obj_e_boat_tbl, - -1, - 81 + cKF_ckcb_r_obj_e_boat_tbl, cKF_ds_obj_e_boat_tbl, cKF_kn_obj_e_boat_tbl, cKF_c_obj_e_boat_tbl, -1, 81 }; diff --git a/src/data/npc/model/mdl/ant_1.c b/src/data/npc/model/mdl/ant_1.c index 7134431f..a4d4a4f8 100644 --- a/src/data/npc/model/mdl/ant_1.c +++ b/src/data/npc/model/mdl/ant_1.c @@ -6,670 +6,593 @@ static Vtx ant_1_v[] = { }; static Gfx head_ant_model[] = { -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&ant_1_v[21], 8, 0), -gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 48, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&ant_1_v[29], 22, 8), -gsSPNTrianglesInit_5b( - 9, // tri count - 4, 6, 8, // tri0 - 4, 10, 9, // tri1 - 1, 12, 11 // tri2 -), -gsSPNTriangles_5b( - 1, 14, 13, // tri0 - 4, 16, 15, // tri1 - 7, 4, 17, // tri2 - 1, 7, 18 // tri3 -), -gsSPNTriangles_5b( - 7, 19, 20, // tri0 - 3, 1, 21, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 5, // tri count - 0, 2, 22, // tri0 - 5, 0, 23, // tri1 - 0, 24, 25 // tri2 -), -gsSPNTriangles_5b( - 2, 26, 27, // tri0 - 5, 28, 29, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&ant_1_v[51], 27, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 1, 3, 2, // tri1 - 4, 0, 5 // tri2 -), -gsSPNTriangles_5b( - 5, 6, 4, // tri0 - 5, 7, 6, // tri1 - 2, 8, 0, // tri2 - 0, 8, 5 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 19, // tri count - 9, 10, 11, // tri0 - 9, 12, 13, // tri1 - 14, 15, 9 // tri2 -), -gsSPNTriangles_5b( - 16, 17, 18, // tri0 - 19, 20, 11, // tri1 - 21, 22, 23, // tri2 - 12, 9, 15 // tri3 -), -gsSPNTriangles_5b( - 24, 14, 25, // tri0 - 26, 24, 25, // tri1 - 9, 13, 21, // tri2 - 17, 16, 21 // tri3 -), -gsSPNTriangles_5b( - 25, 14, 9, // tri0 - 16, 10, 9, // tri1 - 21, 13, 22, // tri2 - 25, 11, 20 // tri3 -), -gsSPNTriangles_5b( - 9, 11, 25, // tri0 - 21, 16, 9, // tri1 - 25, 20, 26, // tri2 - 23, 17, 21 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 48, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&ant_1_v[78], 28, 0), -gsSPNTrianglesInit_5b( - 4, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 1, 0, 4 // tri2 -), -gsSPNTriangles_5b( - 5, 3, 2, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 6, 7, 8, // tri0 - 8, 9, 6, // tri1 - 10, 11, 12 // tri2 -), -gsSPNTriangles_5b( - 12, 13, 10, // tri0 - 11, 10, 6, // tri1 - 11, 6, 9, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 8, // tri count - 14, 15, 16, // tri0 - 17, 16, 15, // tri1 - 18, 19, 20 // tri2 -), -gsSPNTriangles_5b( - 21, 22, 23, // tri0 - 15, 14, 18, // tri1 - 18, 20, 21, // tri2 - 22, 21, 20 // tri3 -), -gsSPNTriangles_5b( - 14, 19, 18, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 2, // tri count - 24, 25, 26, // tri0 - 24, 27, 25, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&ant_1_v[106], 9, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 3, 2, 4, // tri1 - 4, 5, 3 // tri2 -), -gsSPNTriangles_5b( - 5, 6, 3, // tri0 - 0, 7, 1, // tri1 - 3, 8, 2, // tri2 - 2, 8, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ant_1_v[21], 8, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 48, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ant_1_v[29], 22, 8), + gsSPNTrianglesInit_5b(9, // tri count + 4, 6, 8, // tri0 + 4, 10, 9, // tri1 + 1, 12, 11 // tri2 + ), + gsSPNTriangles_5b(1, 14, 13, // tri0 + 4, 16, 15, // tri1 + 7, 4, 17, // tri2 + 1, 7, 18 // tri3 + ), + gsSPNTriangles_5b(7, 19, 20, // tri0 + 3, 1, 21, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 2, 22, // tri0 + 5, 0, 23, // tri1 + 0, 24, 25 // tri2 + ), + gsSPNTriangles_5b(2, 26, 27, // tri0 + 5, 28, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&ant_1_v[51], 27, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b(5, 6, 4, // tri0 + 5, 7, 6, // tri1 + 2, 8, 0, // tri2 + 0, 8, 5 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(19, // tri count + 9, 10, 11, // tri0 + 9, 12, 13, // tri1 + 14, 15, 9 // tri2 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 19, 20, 11, // tri1 + 21, 22, 23, // tri2 + 12, 9, 15 // tri3 + ), + gsSPNTriangles_5b(24, 14, 25, // tri0 + 26, 24, 25, // tri1 + 9, 13, 21, // tri2 + 17, 16, 21 // tri3 + ), + gsSPNTriangles_5b(25, 14, 9, // tri0 + 16, 10, 9, // tri1 + 21, 13, 22, // tri2 + 25, 11, 20 // tri3 + ), + gsSPNTriangles_5b(9, 11, 25, // tri0 + 21, 16, 9, // tri1 + 25, 20, 26, // tri2 + 23, 17, 21 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 48, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&ant_1_v[78], 28, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 0, 4 // tri2 + ), + gsSPNTriangles_5b(5, 3, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 6, 7, 8, // tri0 + 8, 9, 6, // tri1 + 10, 11, 12 // tri2 + ), + gsSPNTriangles_5b(12, 13, 10, // tri0 + 11, 10, 6, // tri1 + 11, 6, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(8, // tri count + 14, 15, 16, // tri0 + 17, 16, 15, // tri1 + 18, 19, 20 // tri2 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 15, 14, 18, // tri1 + 18, 20, 21, // tri2 + 22, 21, 20 // tri3 + ), + gsSPNTriangles_5b(14, 19, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 24, 25, 26, // tri0 + 24, 27, 25, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&ant_1_v[106], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 3, // tri0 + 0, 7, 1, // tri1 + 3, 8, 2, // tri2 + 2, 8, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx mouth_ant_model[] = { -gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&ant_1_v[0], 7, 0), -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&ant_1_v[7], 14, 7), -gsSPNTrianglesInit_5b( - 5, // tri count - 3, 2, 7, // tri0 - 0, 5, 8, // tri1 - 1, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 11, // tri0 - 2, 1, 12, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 3, // tri count - 6, 13, 14, // tri0 - 4, 15, 16, // tri1 - 4, 17, 6 // tri2 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 18, 19, 20, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ant_1_v[0], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ant_1_v[7], 14, 7), + gsSPNTrianglesInit_5b(5, // tri count + 3, 2, 7, // tri0 + 0, 5, 8, // tri1 + 1, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 2, 1, 12, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 6, 13, 14, // tri0 + 4, 15, 16, // tri1 + 4, 17, 6 // tri2 + ), + gsSPNTrianglesInit_5b(1, // tri count + 18, 19, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_ant_model[] = { -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&ant_1_v[151], 5, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&ant_1_v[156], 16, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 5, 6, // tri0 - 4, 7, 8, // tri1 - 4, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 0, 1, 11, // tri0 - 2, 4, 12, // tri1 - 0, 13, 14, // tri2 - 3, 0, 15 // tri3 -), -gsSPNTriangles_5b( - 4, 3, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 20, 19, 18, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ant_1_v[151], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ant_1_v[156], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(0, 1, 11, // tri0 + 2, 4, 12, // tri1 + 0, 13, 14, // tri2 + 3, 0, 15 // tri3 + ), + gsSPNTriangles_5b(4, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 19, 18, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_ant_model[] = { -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&ant_1_v[172], 4, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&ant_1_v[176], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 0, 6, 7, // tri1 - 2, 0, 8 // tri2 -), -gsSPNTriangles_5b( - 3, 2, 9, // tri0 - 2, 11, 10, // tri1 - 3, 13, 12, // tri2 - 1, 3, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ant_1_v[172], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ant_1_v[176], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 2, 0, 8 // tri2 + ), + gsSPNTriangles_5b(3, 2, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 1, 3, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_ant_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&ant_1_v[115], 5, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&ant_1_v[120], 16, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 5, 6, // tri0 - 4, 7, 8, // tri1 - 4, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 11, // tri0 - 4, 2, 12, // tri1 - 0, 13, 14, // tri2 - 0, 3, 15 // tri3 -), -gsSPNTriangles_5b( - 3, 4, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 18, 17, 20, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ant_1_v[115], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ant_1_v[120], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 + ), + gsSPNTriangles_5b(3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_ant_model[] = { -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&ant_1_v[136], 4, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&ant_1_v[140], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 0, 6, 7, // tri1 - 0, 2, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 3, 9, // tri0 - 2, 11, 10, // tri1 - 3, 13, 12, // tri2 - 3, 1, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ant_1_v[136], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ant_1_v[140], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 + ), + gsSPNTriangles_5b(2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_ant_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&ant_1_v[187], 7, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&ant_1_v[194], 22, 7), -gsSPNTrianglesInit_5b( - 14, // tri count - 6, 7, 8, // tri0 - 4, 9, 1, // tri1 - 5, 0, 10 // tri2 -), -gsSPNTriangles_5b( - 2, 6, 11, // tri0 - 6, 3, 12, // tri1 - 1, 13, 14, // tri2 - 0, 15, 16 // tri3 -), -gsSPNTriangles_5b( - 0, 17, 18, // tri0 - 1, 20, 19, // tri1 - 2, 21, 22, // tri2 - 2, 23, 0 // tri3 -), -gsSPNTriangles_5b( - 3, 24, 25, // tri0 - 6, 26, 27, // tri1 - 3, 1, 28, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&ant_1_v[216], 13, 0), -gsSPNTrianglesInit_5b( - 10, // tri count - 0, 1, 2, // tri0 - 2, 3, 4, // tri1 - 5, 6, 4 // tri2 -), -gsSPNTriangles_5b( - 0, 7, 8, // tri0 - 9, 8, 7, // tri1 - 6, 5, 10, // tri2 - 10, 5, 11 // tri3 -), -gsSPNTriangles_5b( - 4, 3, 5, // tri0 - 9, 12, 8, // tri1 - 8, 1, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ant_1_v[187], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ant_1_v[194], 22, 7), + gsSPNTrianglesInit_5b(14, // tri count + 6, 7, 8, // tri0 + 4, 9, 1, // tri1 + 5, 0, 10 // tri2 + ), + gsSPNTriangles_5b(2, 6, 11, // tri0 + 6, 3, 12, // tri1 + 1, 13, 14, // tri2 + 0, 15, 16 // tri3 + ), + gsSPNTriangles_5b(0, 17, 18, // tri0 + 1, 20, 19, // tri1 + 2, 21, 22, // tri2 + 2, 23, 0 // tri3 + ), + gsSPNTriangles_5b(3, 24, 25, // tri0 + 6, 26, 27, // tri1 + 3, 1, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&ant_1_v[216], 13, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 5, 6, 4 // tri2 + ), + gsSPNTriangles_5b(0, 7, 8, // tri0 + 9, 8, 7, // tri1 + 6, 5, 10, // tri2 + 10, 5, 11 // tri3 + ), + gsSPNTriangles_5b(4, 3, 5, // tri0 + 9, 12, 8, // tri1 + 8, 1, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail1_ant_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&ant_1_v[229], 30, 0), -gsSPNTrianglesInit_5b( - 16, // tri count - 0, 1, 2, // tri0 - 2, 1, 3, // tri1 - 2, 4, 0 // tri2 -), -gsSPNTriangles_5b( - 3, 5, 6, // tri0 - 7, 8, 4, // tri1 - 2, 9, 7, // tri2 - 10, 7, 9 // tri3 -), -gsSPNTriangles_5b( - 10, 8, 7, // tri0 - 6, 11, 9, // tri1 - 1, 5, 3, // tri2 - 3, 9, 2 // tri3 -), -gsSPNTriangles_5b( - 7, 4, 2, // tri0 - 11, 6, 12, // tri1 - 9, 3, 6, // tri2 - 9, 11, 10 // tri3 -), -gsSPNTriangles_5b( - 12, 10, 11, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 2, // tri count - 13, 14, 15, // tri0 - 15, 16, 13, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 16, // tri count - 17, 18, 19, // tri0 - 19, 18, 20, // tri1 - 19, 21, 17 // tri2 -), -gsSPNTriangles_5b( - 20, 22, 23, // tri0 - 24, 25, 21, // tri1 - 19, 26, 24, // tri2 - 27, 24, 26 // tri3 -), -gsSPNTriangles_5b( - 27, 25, 24, // tri0 - 23, 28, 26, // tri1 - 18, 22, 20, // tri2 - 20, 26, 19 // tri3 -), -gsSPNTriangles_5b( - 24, 21, 19, // tri0 - 28, 23, 29, // tri1 - 26, 20, 23, // tri2 - 26, 28, 27 // tri3 -), -gsSPNTriangles_5b( - 29, 27, 28, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ant_1_v[229], 30, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(3, 5, 6, // tri0 + 7, 8, 4, // tri1 + 2, 9, 7, // tri2 + 10, 7, 9 // tri3 + ), + gsSPNTriangles_5b(10, 8, 7, // tri0 + 6, 11, 9, // tri1 + 1, 5, 3, // tri2 + 3, 9, 2 // tri3 + ), + gsSPNTriangles_5b(7, 4, 2, // tri0 + 11, 6, 12, // tri1 + 9, 3, 6, // tri2 + 9, 11, 10 // tri3 + ), + gsSPNTriangles_5b(12, 10, 11, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 13, 14, 15, // tri0 + 15, 16, 13, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(16, // tri count + 17, 18, 19, // tri0 + 19, 18, 20, // tri1 + 19, 21, 17 // tri2 + ), + gsSPNTriangles_5b(20, 22, 23, // tri0 + 24, 25, 21, // tri1 + 19, 26, 24, // tri2 + 27, 24, 26 // tri3 + ), + gsSPNTriangles_5b(27, 25, 24, // tri0 + 23, 28, 26, // tri1 + 18, 22, 20, // tri2 + 20, 26, 19 // tri3 + ), + gsSPNTriangles_5b(24, 21, 19, // tri0 + 28, 23, 29, // tri1 + 26, 20, 23, // tri2 + 26, 28, 27 // tri3 + ), + gsSPNTriangles_5b(29, 27, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_ant_model[] = { -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&ant_1_v[308], 5, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&ant_1_v[313], 18, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 0, 5, // tri0 - 0, 7, 6, // tri1 - 2, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 0, 1, 10, // tri0 - 1, 2, 11, // tri1 - 2, 4, 12, // tri2 - 1, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 15, 16, 17, // tri0 - 18, 19, 20, // tri1 - 21, 17, 22 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ant_1_v[308], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ant_1_v[313], 18, 5), + gsSPNTrianglesInit_5b(7, // tri count + 3, 0, 5, // tri0 + 0, 7, 6, // tri1 + 2, 9, 8 // tri2 + ), + gsSPNTriangles_5b(0, 1, 10, // tri0 + 1, 2, 11, // tri1 + 2, 4, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 21, 17, 22 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_ant_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&ant_1_v[331], 4, 0), -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&ant_1_v[335], 22, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 2, 4, // tri0 - 1, 5, 6, // tri1 - 2, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 1, 9, // tri0 - 0, 11, 10, // tri1 - 0, 3, 12, // tri2 - 0, 13, 1 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 14, 15, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 17, 18, 19, // tri0 - 20, 21, 22, // tri1 - 18, 23, 19 // tri2 -), -gsSPNTriangles_5b( - 24, 22, 21, // tri0 - 24, 21, 17, // tri1 - 17, 19, 24, // tri2 - 22, 25, 20 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ant_1_v[331], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ant_1_v[335], 22, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 2, 4, // tri0 + 1, 5, 6, // tri1 + 2, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 1, 9, // tri0 + 0, 11, 10, // tri1 + 0, 3, 12, // tri2 + 0, 13, 1 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 14, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 17, 18, 19, // tri0 + 20, 21, 22, // tri1 + 18, 23, 19 // tri2 + ), + gsSPNTriangles_5b(24, 22, 21, // tri0 + 24, 21, 17, // tri1 + 17, 19, 24, // tri2 + 22, 25, 20 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_ant_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&ant_1_v[259], 5, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&ant_1_v[264], 18, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 3, 5, // tri0 - 0, 7, 6, // tri1 - 2, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 10, // tri0 - 2, 1, 11, // tri1 - 4, 2, 12, // tri2 - 1, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 15, 16, 17, // tri0 - 18, 19, 20, // tri1 - 21, 15, 22 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ant_1_v[259], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ant_1_v[264], 18, 5), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 5, // tri0 + 0, 7, 6, // tri1 + 2, 9, 8 // tri2 + ), + gsSPNTriangles_5b(1, 0, 10, // tri0 + 2, 1, 11, // tri1 + 4, 2, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 21, 15, 22 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_ant_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&ant_1_v[282], 4, 0), -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&ant_1_v[286], 22, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 2, 3, 4, // tri0 - 1, 5, 6, // tri1 - 2, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 1, 2, 9, // tri0 - 0, 11, 10, // tri1 - 3, 0, 12, // tri2 - 1, 13, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 14, 15, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 17, 18, 19, // tri0 - 20, 21, 22, // tri1 - 17, 23, 18 // tri2 -), -gsSPNTriangles_5b( - 21, 20, 24, // tri0 - 19, 21, 24, // tri1 - 24, 17, 19, // tri2 - 22, 25, 20 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ant_1_v[282], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ant_1_v[286], 22, 4), + gsSPNTrianglesInit_5b(7, // tri count + 2, 3, 4, // tri0 + 1, 5, 6, // tri1 + 2, 7, 8 // tri2 + ), + gsSPNTriangles_5b(1, 2, 9, // tri0 + 0, 11, 10, // tri1 + 3, 0, 12, // tri2 + 1, 13, 0 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 14, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 17, 18, 19, // tri0 + 20, 21, 22, // tri1 + 17, 23, 18 // tri2 + ), + gsSPNTriangles_5b(21, 20, 24, // tri0 + 19, 21, 24, // tri1 + 24, 17, 19, // tri2 + 22, 25, 20 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx base_ant_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&ant_1_v[357], 14, 0), -gsSPNTrianglesInit_5b( - 12, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 2, 1 // tri2 -), -gsSPNTriangles_5b( - 7, 8, 9, // tri0 - 10, 2, 7, // tri1 - 10, 0, 2, // tri2 - 4, 11, 12 // tri3 -), -gsSPNTriangles_5b( - 5, 4, 13, // tri0 - 4, 12, 13, // tri1 - 3, 5, 9, // tri2 - 9, 8, 3 // tri3 -), -gsSPNTriangles_5b( - 9, 10, 7, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ant_1_v[357], 14, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 2, 1 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 2, 7, // tri1 + 10, 0, 2, // tri2 + 4, 11, 12 // tri3 + ), + gsSPNTriangles_5b(5, 4, 13, // tri0 + 4, 12, 13, // tri1 + 3, 5, 9, // tri2 + 9, 8, 3 // tri3 + ), + gsSPNTriangles_5b(9, 10, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_ant_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -701,4 +624,4 @@ static cKF_Joint_R_c cKF_je_r_ant_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_ant_1 = { 26, 13, cKF_je_r_ant_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_ant_1 = { 26, 13, cKF_je_r_ant_1_tbl }; diff --git a/src/data/npc/model/mdl/bea_1.c b/src/data/npc/model/mdl/bea_1.c index b9665e68..a2e9934a 100644 --- a/src/data/npc/model/mdl/bea_1.c +++ b/src/data/npc/model/mdl/bea_1.c @@ -6,631 +6,556 @@ static Vtx bea_1_v[] = { }; static Gfx head_bea_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&bea_1_v[0], 24, 0), -gsSPNTrianglesInit_5b( - 28, // tri count - 0, 1, 2, // tri0 - 2, 1, 3, // tri1 - 4, 0, 5 // tri2 -), -gsSPNTriangles_5b( - 6, 7, 8, // tri0 - 6, 8, 3, // tri1 - 9, 5, 10, // tri2 - 3, 8, 2 // tri3 -), -gsSPNTriangles_5b( - 10, 5, 11, // tri0 - 5, 0, 2, // tri1 - 8, 7, 12, // tri2 - 10, 11, 13 // tri3 -), -gsSPNTriangles_5b( - 2, 11, 5, // tri0 - 8, 11, 2, // tri1 - 12, 11, 8, // tri2 - 13, 11, 12 // tri3 -), -gsSPNTriangles_5b( - 14, 15, 6, // tri0 - 14, 6, 3, // tri1 - 14, 3, 16, // tri2 - 6, 15, 7 // tri3 -), -gsSPNTriangles_5b( - 16, 3, 1, // tri0 - 16, 1, 17, // tri1 - 17, 1, 18, // tri2 - 0, 19, 18 // tri3 -), -gsSPNTriangles_5b( - 16, 17, 20, // tri0 - 13, 12, 21, // tri1 - 22, 15, 14, // tri2 - 15, 23, 7 // tri3 -), -gsSPNTriangles_5b( - 18, 1, 0, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&bea_1_v[24], 15, 0), -gsSPNTrianglesInit_5b( - 16, // tri count - 0, 1, 2, // tri0 - 3, 0, 2, // tri1 - 3, 2, 4 // tri2 -), -gsSPNTriangles_5b( - 2, 1, 5, // tri0 - 2, 6, 7, // tri1 - 7, 8, 2, // tri2 - 5, 6, 2 // tri3 -), -gsSPNTriangles_5b( - 8, 7, 9, // tri0 - 8, 10, 11, // tri1 - 12, 5, 1, // tri2 - 13, 14, 1 // tri3 -), -gsSPNTriangles_5b( - 8, 11, 4, // tri0 - 0, 13, 1, // tri1 - 2, 8, 4, // tri2 - 9, 10, 8 // tri3 -), -gsSPNTriangles_5b( - 1, 14, 12, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&bea_1_v[39], 18, 0), -gsSPNTrianglesInit_5b( - 22, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 5, 4, 6 // tri2 -), -gsSPNTriangles_5b( - 1, 3, 7, // tri0 - 8, 6, 9, // tri1 - 8, 9, 10, // tri2 - 7, 8, 10 // tri3 -), -gsSPNTriangles_5b( - 1, 0, 3, // tri0 - 8, 7, 5, // tri1 - 8, 5, 6, // tri2 - 3, 5, 7 // tri3 -), -gsSPNTriangles_5b( - 3, 0, 4, // tri0 - 11, 4, 0, // tri1 - 9, 6, 11, // tri2 - 12, 11, 0 // tri3 -), -gsSPNTriangles_5b( - 11, 13, 9, // tri0 - 6, 4, 14, // tri1 - 12, 0, 15, // tri2 - 9, 16, 17 // tri3 -), -gsSPNTriangles_5b( - 17, 10, 9, // tri0 - 2, 15, 0, // tri1 - 9, 13, 16, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&bea_1_v[57], 26, 0), -gsSPNTrianglesInit_5b( - 20, // tri count - 0, 1, 2, // tri0 - 2, 1, 3, // tri1 - 4, 0, 5 // tri2 -), -gsSPNTriangles_5b( - 6, 7, 8, // tri0 - 9, 8, 10, // tri1 - 11, 12, 13, // tri2 - 10, 13, 9 // tri3 -), -gsSPNTriangles_5b( - 11, 13, 10, // tri0 - 14, 15, 16, // tri1 - 17, 18, 19, // tri2 - 7, 10, 8 // tri3 -), -gsSPNTriangles_5b( - 7, 11, 10, // tri0 - 16, 20, 21, // tri1 - 16, 21, 14, // tri2 - 19, 22, 23 // tri3 -), -gsSPNTriangles_5b( - 19, 23, 17, // tri0 - 24, 3, 1, // tri1 - 2, 3, 25, // tri2 - 25, 5, 2 // tri3 -), -gsSPNTriangles_5b( - 5, 0, 2, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bea_1_v[0], 24, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 6, 8, 3, // tri1 + 9, 5, 10, // tri2 + 3, 8, 2 // tri3 + ), + gsSPNTriangles_5b(10, 5, 11, // tri0 + 5, 0, 2, // tri1 + 8, 7, 12, // tri2 + 10, 11, 13 // tri3 + ), + gsSPNTriangles_5b(2, 11, 5, // tri0 + 8, 11, 2, // tri1 + 12, 11, 8, // tri2 + 13, 11, 12 // tri3 + ), + gsSPNTriangles_5b(14, 15, 6, // tri0 + 14, 6, 3, // tri1 + 14, 3, 16, // tri2 + 6, 15, 7 // tri3 + ), + gsSPNTriangles_5b(16, 3, 1, // tri0 + 16, 1, 17, // tri1 + 17, 1, 18, // tri2 + 0, 19, 18 // tri3 + ), + gsSPNTriangles_5b(16, 17, 20, // tri0 + 13, 12, 21, // tri1 + 22, 15, 14, // tri2 + 15, 23, 7 // tri3 + ), + gsSPNTriangles_5b(18, 1, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&bea_1_v[24], 15, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b(2, 1, 5, // tri0 + 2, 6, 7, // tri1 + 7, 8, 2, // tri2 + 5, 6, 2 // tri3 + ), + gsSPNTriangles_5b(8, 7, 9, // tri0 + 8, 10, 11, // tri1 + 12, 5, 1, // tri2 + 13, 14, 1 // tri3 + ), + gsSPNTriangles_5b(8, 11, 4, // tri0 + 0, 13, 1, // tri1 + 2, 8, 4, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(1, 14, 12, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&bea_1_v[39], 18, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 4, 6 // tri2 + ), + gsSPNTriangles_5b(1, 3, 7, // tri0 + 8, 6, 9, // tri1 + 8, 9, 10, // tri2 + 7, 8, 10 // tri3 + ), + gsSPNTriangles_5b(1, 0, 3, // tri0 + 8, 7, 5, // tri1 + 8, 5, 6, // tri2 + 3, 5, 7 // tri3 + ), + gsSPNTriangles_5b(3, 0, 4, // tri0 + 11, 4, 0, // tri1 + 9, 6, 11, // tri2 + 12, 11, 0 // tri3 + ), + gsSPNTriangles_5b(11, 13, 9, // tri0 + 6, 4, 14, // tri1 + 12, 0, 15, // tri2 + 9, 16, 17 // tri3 + ), + gsSPNTriangles_5b(17, 10, 9, // tri0 + 2, 15, 0, // tri1 + 9, 13, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&bea_1_v[57], 26, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 9, 8, 10, // tri1 + 11, 12, 13, // tri2 + 10, 13, 9 // tri3 + ), + gsSPNTriangles_5b(11, 13, 10, // tri0 + 14, 15, 16, // tri1 + 17, 18, 19, // tri2 + 7, 10, 8 // tri3 + ), + gsSPNTriangles_5b(7, 11, 10, // tri0 + 16, 20, 21, // tri1 + 16, 21, 14, // tri2 + 19, 22, 23 // tri3 + ), + gsSPNTriangles_5b(19, 23, 17, // tri0 + 24, 3, 1, // tri1 + 2, 3, 25, // tri2 + 25, 5, 2 // tri3 + ), + gsSPNTriangles_5b(5, 0, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_bea_model[] = { -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&bea_1_v[120], 6, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&bea_1_v[126], 13, 6), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 6, 7, // tri0 - 4, 5, 8, // tri1 - 1, 4, 9 // tri2 -), -gsSPNTriangles_5b( - 5, 10, 11, // tri0 - 3, 2, 12, // tri1 - 4, 13, 14, // tri2 - 5, 3, 15 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 16, 17, 18, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bea_1_v[120], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bea_1_v[126], 13, 6), + gsSPNTrianglesInit_5b(7, // tri count + 0, 6, 7, // tri0 + 4, 5, 8, // tri1 + 1, 4, 9 // tri2 + ), + gsSPNTriangles_5b(5, 10, 11, // tri0 + 3, 2, 12, // tri1 + 4, 13, 14, // tri2 + 5, 3, 15 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 16, 17, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_bea_model[] = { -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&bea_1_v[139], 6, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&bea_1_v[145], 12, 6), -gsSPNTrianglesInit_5b( - 8, // tri count - 4, 6, 7, // tri0 - 0, 8, 9, // tri1 - 1, 10, 11 // tri2 -), -gsSPNTriangles_5b( - 2, 12, 13, // tri0 - 1, 0, 14, // tri1 - 2, 1, 15, // tri2 - 5, 3, 16 // tri3 -), -gsSPNTriangles_5b( - 0, 4, 17, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bea_1_v[139], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bea_1_v[145], 12, 6), + gsSPNTrianglesInit_5b(8, // tri count + 4, 6, 7, // tri0 + 0, 8, 9, // tri1 + 1, 10, 11 // tri2 + ), + gsSPNTriangles_5b(2, 12, 13, // tri0 + 1, 0, 14, // tri1 + 2, 1, 15, // tri2 + 5, 3, 16 // tri3 + ), + gsSPNTriangles_5b(0, 4, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_bea_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&bea_1_v[83], 6, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&bea_1_v[89], 13, 6), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 6, 7, // tri0 - 5, 4, 8, // tri1 - 4, 1, 9 // tri2 -), -gsSPNTriangles_5b( - 5, 10, 11, // tri0 - 2, 3, 12, // tri1 - 4, 13, 14, // tri2 - 3, 5, 15 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 16, 17, 18, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bea_1_v[83], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bea_1_v[89], 13, 6), + gsSPNTrianglesInit_5b(7, // tri count + 0, 6, 7, // tri0 + 5, 4, 8, // tri1 + 4, 1, 9 // tri2 + ), + gsSPNTriangles_5b(5, 10, 11, // tri0 + 2, 3, 12, // tri1 + 4, 13, 14, // tri2 + 3, 5, 15 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 16, 17, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_bea_model[] = { -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&bea_1_v[102], 6, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&bea_1_v[108], 12, 6), -gsSPNTrianglesInit_5b( - 8, // tri count - 4, 6, 7, // tri0 - 0, 8, 9, // tri1 - 1, 10, 11 // tri2 -), -gsSPNTriangles_5b( - 2, 12, 13, // tri0 - 0, 1, 14, // tri1 - 1, 2, 15, // tri2 - 3, 5, 16 // tri3 -), -gsSPNTriangles_5b( - 4, 0, 17, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bea_1_v[102], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bea_1_v[108], 12, 6), + gsSPNTrianglesInit_5b(8, // tri count + 4, 6, 7, // tri0 + 0, 8, 9, // tri1 + 1, 10, 11 // tri2 + ), + gsSPNTriangles_5b(2, 12, 13, // tri0 + 0, 1, 14, // tri1 + 1, 2, 15, // tri2 + 3, 5, 16 // tri3 + ), + gsSPNTriangles_5b(4, 0, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_bea_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&bea_1_v[157], 10, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&bea_1_v[167], 21, 10), -gsSPNTrianglesInit_5b( - 14, // tri count - 0, 2, 10, // tri0 - 3, 11, 12, // tri1 - 4, 6, 13 // tri2 -), -gsSPNTriangles_5b( - 7, 1, 14, // tri0 - 9, 15, 16, // tri1 - 6, 9, 17, // tri2 - 4, 18, 19 // tri3 -), -gsSPNTriangles_5b( - 8, 20, 21, // tri0 - 8, 3, 22, // tri1 - 2, 23, 24, // tri2 - 8, 25, 2 // tri3 -), -gsSPNTriangles_5b( - 2, 26, 27, // tri0 - 9, 7, 28, // tri1 - 1, 29, 30, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&bea_1_v[188], 21, 10), -gsSPNTrianglesInit_5b( - 3, // tri count - 3, 11, 10, // tri0 - 3, 5, 12, // tri1 - 9, 13, 14 // tri2 -), -gsSPNTrianglesInit_5b( - 13, // tri count - 15, 16, 17, // tri0 - 17, 18, 15, // tri1 - 16, 15, 19 // tri2 -), -gsSPNTriangles_5b( - 16, 19, 20, // tri0 - 21, 22, 23, // tri1 - 24, 25, 23, // tri2 - 26, 23, 25 // tri3 -), -gsSPNTriangles_5b( - 23, 26, 27, // tri0 - 23, 27, 21, // tri1 - 23, 22, 28, // tri2 - 23, 28, 24 // tri3 -), -gsSPNTriangles_5b( - 19, 29, 30, // tri0 - 20, 19, 30, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bea_1_v[157], 10, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bea_1_v[167], 21, 10), + gsSPNTrianglesInit_5b(14, // tri count + 0, 2, 10, // tri0 + 3, 11, 12, // tri1 + 4, 6, 13 // tri2 + ), + gsSPNTriangles_5b(7, 1, 14, // tri0 + 9, 15, 16, // tri1 + 6, 9, 17, // tri2 + 4, 18, 19 // tri3 + ), + gsSPNTriangles_5b(8, 20, 21, // tri0 + 8, 3, 22, // tri1 + 2, 23, 24, // tri2 + 8, 25, 2 // tri3 + ), + gsSPNTriangles_5b(2, 26, 27, // tri0 + 9, 7, 28, // tri1 + 1, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&bea_1_v[188], 21, 10), + gsSPNTrianglesInit_5b(3, // tri count + 3, 11, 10, // tri0 + 3, 5, 12, // tri1 + 9, 13, 14 // tri2 + ), + gsSPNTrianglesInit_5b(13, // tri count + 15, 16, 17, // tri0 + 17, 18, 15, // tri1 + 16, 15, 19 // tri2 + ), + gsSPNTriangles_5b(16, 19, 20, // tri0 + 21, 22, 23, // tri1 + 24, 25, 23, // tri2 + 26, 23, 25 // tri3 + ), + gsSPNTriangles_5b(23, 26, 27, // tri0 + 23, 27, 21, // tri1 + 23, 22, 28, // tri2 + 23, 28, 24 // tri3 + ), + gsSPNTriangles_5b(19, 29, 30, // tri0 + 20, 19, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail1_bea_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&bea_1_v[209], 5, 0), -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&bea_1_v[214], 20, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 5, 6, // tri0 - 2, 7, 8, // tri1 - 3, 9, 2 // tri2 -), -gsSPNTriangles_5b( - 0, 2, 10, // tri0 - 1, 11, 12, // tri1 - 4, 1, 13, // tri2 - 0, 14, 15 // tri3 -), -gsSPNTrianglesInit_5b( - 4, // tri count - 16, 17, 18, // tri0 - 19, 16, 20, // tri1 - 21, 22, 23 // tri2 -), -gsSPNTriangles_5b( - 24, 17, 21, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bea_1_v[209], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bea_1_v[214], 20, 5), + gsSPNTrianglesInit_5b(7, // tri count + 3, 5, 6, // tri0 + 2, 7, 8, // tri1 + 3, 9, 2 // tri2 + ), + gsSPNTriangles_5b(0, 2, 10, // tri0 + 1, 11, 12, // tri1 + 4, 1, 13, // tri2 + 0, 14, 15 // tri3 + ), + gsSPNTrianglesInit_5b(4, // tri count + 16, 17, 18, // tri0 + 19, 16, 20, // tri1 + 21, 22, 23 // tri2 + ), + gsSPNTriangles_5b(24, 17, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_bea_model[] = { -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&bea_1_v[285], 5, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&bea_1_v[290], 20, 5), -gsSPNTrianglesInit_5b( - 10, // tri count - 3, 5, 6, // tri0 - 1, 7, 8, // tri1 - 3, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 1, 4, 11, // tri0 - 2, 12, 13, // tri1 - 3, 0, 14, // tri2 - 3, 15, 16 // tri3 -), -gsSPNTriangles_5b( - 2, 17, 0, // tri0 - 4, 3, 18, // tri1 - 1, 19, 20, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 21, 22, 23, // tri0 - 21, 23, 24, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bea_1_v[285], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bea_1_v[290], 20, 5), + gsSPNTrianglesInit_5b(10, // tri count + 3, 5, 6, // tri0 + 1, 7, 8, // tri1 + 3, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 4, 11, // tri0 + 2, 12, 13, // tri1 + 3, 0, 14, // tri2 + 3, 15, 16 // tri3 + ), + gsSPNTriangles_5b(2, 17, 0, // tri0 + 4, 3, 18, // tri1 + 1, 19, 20, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 21, 22, 23, // tri0 + 21, 23, 24, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_bea_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&bea_1_v[310], 7, 0), -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&bea_1_v[317], 19, 7), -gsSPNTrianglesInit_5b( - 11, // tri count - 2, 7, 4, // tri0 - 2, 0, 8, // tri1 - 3, 9, 1 // tri2 -), -gsSPNTriangles_5b( - 4, 10, 5, // tri0 - 4, 11, 12, // tri1 - 3, 6, 13, // tri2 - 5, 14, 15 // tri3 -), -gsSPNTriangles_5b( - 4, 17, 16, // tri0 - 0, 18, 19, // tri1 - 6, 5, 20, // tri2 - 3, 21, 22 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 23, 24, 25, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bea_1_v[310], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bea_1_v[317], 19, 7), + gsSPNTrianglesInit_5b(11, // tri count + 2, 7, 4, // tri0 + 2, 0, 8, // tri1 + 3, 9, 1 // tri2 + ), + gsSPNTriangles_5b(4, 10, 5, // tri0 + 4, 11, 12, // tri1 + 3, 6, 13, // tri2 + 5, 14, 15 // tri3 + ), + gsSPNTriangles_5b(4, 17, 16, // tri0 + 0, 18, 19, // tri1 + 6, 5, 20, // tri2 + 3, 21, 22 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 23, 24, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_bea_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&bea_1_v[234], 5, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&bea_1_v[239], 20, 5), -gsSPNTrianglesInit_5b( - 10, // tri count - 3, 5, 6, // tri0 - 1, 7, 8, // tri1 - 3, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 4, 1, 11, // tri0 - 2, 12, 13, // tri1 - 0, 14, 15, // tri2 - 0, 3, 16 // tri3 -), -gsSPNTriangles_5b( - 0, 17, 2, // tri0 - 3, 4, 18, // tri1 - 1, 19, 20, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 21, 22, 23, // tri0 - 21, 23, 24, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bea_1_v[234], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bea_1_v[239], 20, 5), + gsSPNTrianglesInit_5b(10, // tri count + 3, 5, 6, // tri0 + 1, 7, 8, // tri1 + 3, 9, 10 // tri2 + ), + gsSPNTriangles_5b(4, 1, 11, // tri0 + 2, 12, 13, // tri1 + 0, 14, 15, // tri2 + 0, 3, 16 // tri3 + ), + gsSPNTriangles_5b(0, 17, 2, // tri0 + 3, 4, 18, // tri1 + 1, 19, 20, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 21, 22, 23, // tri0 + 21, 23, 24, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_bea_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&bea_1_v[259], 7, 0), -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&bea_1_v[266], 19, 7), -gsSPNTrianglesInit_5b( - 11, // tri count - 4, 7, 2, // tri0 - 0, 2, 8, // tri1 - 1, 9, 3 // tri2 -), -gsSPNTriangles_5b( - 5, 10, 4, // tri0 - 4, 11, 12, // tri1 - 6, 3, 13, // tri2 - 5, 14, 15 // tri3 -), -gsSPNTriangles_5b( - 4, 17, 16, // tri0 - 0, 18, 19, // tri1 - 5, 6, 20, // tri2 - 3, 21, 22 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 23, 24, 25, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bea_1_v[259], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bea_1_v[266], 19, 7), + gsSPNTrianglesInit_5b(11, // tri count + 4, 7, 2, // tri0 + 0, 2, 8, // tri1 + 1, 9, 3 // tri2 + ), + gsSPNTriangles_5b(5, 10, 4, // tri0 + 4, 11, 12, // tri1 + 6, 3, 13, // tri2 + 5, 14, 15 // tri3 + ), + gsSPNTriangles_5b(4, 17, 16, // tri0 + 0, 18, 19, // tri1 + 5, 6, 20, // tri2 + 3, 21, 22 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 23, 24, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx base_bea_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&bea_1_v[336], 20, 0), -gsSPNTrianglesInit_5b( - 16, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 7, 8, 9, // tri0 - 10, 5, 4, // tri1 - 11, 12, 13, // tri2 - 5, 14, 6 // tri3 -), -gsSPNTriangles_5b( - 0, 3, 14, // tri0 - 5, 15, 14, // tri1 - 13, 16, 17, // tri2 - 17, 18, 9 // tri3 -), -gsSPNTriangles_5b( - 14, 15, 0, // tri0 - 9, 19, 17, // tri1 - 17, 19, 13, // tri2 - 13, 12, 16 // tri3 -), -gsSPNTriangles_5b( - 7, 9, 18, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&bea_1_v[356], 14, 0), -gsSPNTrianglesInit_5b( - 11, // tri count - 0, 1, 2, // tri0 - 3, 0, 4, // tri1 - 5, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 8, 5, 7, // tri0 - 6, 9, 10, // tri1 - 8, 9, 5, // tri2 - 6, 10, 7 // tri3 -), -gsSPNTriangles_5b( - 3, 4, 11, // tri0 - 12, 11, 4, // tri1 - 3, 1, 0, // tri2 - 13, 1, 3 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bea_1_v[336], 20, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 5, 4, // tri1 + 11, 12, 13, // tri2 + 5, 14, 6 // tri3 + ), + gsSPNTriangles_5b(0, 3, 14, // tri0 + 5, 15, 14, // tri1 + 13, 16, 17, // tri2 + 17, 18, 9 // tri3 + ), + gsSPNTriangles_5b(14, 15, 0, // tri0 + 9, 19, 17, // tri1 + 17, 19, 13, // tri2 + 13, 12, 16 // tri3 + ), + gsSPNTriangles_5b(7, 9, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&bea_1_v[356], 14, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 5, 7, // tri0 + 6, 9, 10, // tri1 + 8, 9, 5, // tri2 + 6, 10, 7 // tri3 + ), + gsSPNTriangles_5b(3, 4, 11, // tri0 + 12, 11, 4, // tri1 + 3, 1, 0, // tri2 + 13, 1, 3 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_bea_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -662,4 +587,4 @@ static cKF_Joint_R_c cKF_je_r_bea_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_bea_1 = { 26, 12, cKF_je_r_bea_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_bea_1 = { 26, 12, cKF_je_r_bea_1_tbl }; diff --git a/src/data/npc/model/mdl/bev_1.c b/src/data/npc/model/mdl/bev_1.c index 1c6f2ace..8e21a82a 100644 --- a/src/data/npc/model/mdl/bev_1.c +++ b/src/data/npc/model/mdl/bev_1.c @@ -6,748 +6,657 @@ static Vtx bev_1_v[] = { }; static Gfx head_bev_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&bev_1_v[0], 29, 0), -gsSPNTrianglesInit_5b( - 4, // tri count - 0, 1, 2, // tri0 - 3, 4, 0, // tri1 - 0, 5, 3 // tri2 -), -gsSPNTriangles_5b( - 2, 5, 0, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 13, // tri count - 6, 7, 8, // tri0 - 9, 10, 11, // tri1 - 12, 13, 14 // tri2 -), -gsSPNTriangles_5b( - 12, 15, 13, // tri0 - 16, 17, 18, // tri1 - 16, 18, 19, // tri2 - 14, 20, 12 // tri3 -), -gsSPNTriangles_5b( - 11, 21, 9, // tri0 - 8, 22, 6, // tri1 - 23, 24, 25, // tri2 - 26, 27, 23 // tri3 -), -gsSPNTriangles_5b( - 23, 28, 26, // tri0 - 25, 28, 23, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&bev_1_v[29], 29, 0), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 1, 2, // tri0 - 0, 3, 4, // tri1 - 0, 4, 5 // tri2 -), -gsSPNTriangles_5b( - 3, 6, 7, // tri0 - 0, 8, 9, // tri1 - 10, 11, 3, // tri2 - 2, 11, 10 // tri3 -), -gsSPNTriangles_5b( - 3, 0, 12, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 13, // tri count - 13, 14, 15, // tri0 - 16, 17, 14, // tri1 - 14, 18, 19 // tri2 -), -gsSPNTriangles_5b( - 14, 19, 16, // tri0 - 14, 17, 20, // tri1 - 20, 15, 14, // tri2 - 21, 22, 16 // tri3 -), -gsSPNTriangles_5b( - 16, 19, 23, // tri0 - 23, 24, 21, // tri1 - 13, 18, 14, // tri2 - 22, 17, 16 // tri3 -), -gsSPNTriangles_5b( - 21, 16, 23, // tri0 - 15, 25, 13, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 26, 27, 28, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPVertex(&bev_1_v[58], 30, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 28, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 3, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 8, 9, 10, // tri0 - 11, 12, 13, // tri1 - 14, 15, 16, // tri2 - 8, 17, 18 // tri3 -), -gsSPNTriangles_5b( - 12, 19, 17, // tri0 - 1, 4, 3, // tri1 - 20, 21, 22, // tri2 - 23, 2, 1 // tri3 -), -gsSPNTriangles_5b( - 19, 1, 0, // tri0 - 24, 2, 21, // tri1 - 20, 14, 24, // tri2 - 17, 10, 13 // tri3 -), -gsSPNTriangles_5b( - 17, 0, 18, // tri0 - 18, 0, 24, // tri1 - 0, 17, 19, // tri2 - 2, 24, 0 // tri3 -), -gsSPNTriangles_5b( - 23, 21, 2, // tri0 - 19, 12, 4, // tri1 - 25, 8, 16, // tri2 - 25, 16, 26 // tri3 -), -gsSPNTriangles_5b( - 13, 12, 17, // tri0 - 24, 21, 20, // tri1 - 7, 22, 21, // tri2 - 5, 4, 12 // tri3 -), -gsSPNTriangles_5b( - 5, 6, 3, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 27, 28, 29, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPVertex(&bev_1_v[88], 19, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 9, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 4, 6, 5 // tri2 -), -gsSPNTriangles_5b( - 4, 3, 7, // tri0 - 8, 9, 6, // tri1 - 10, 11, 1, // tri2 - 12, 13, 14 // tri3 -), -gsSPNTriangles_5b( - 15, 16, 17, // tri0 - 17, 16, 18, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&bev_1_v[107], 18, 0), -gsSPNTrianglesInit_5b( - 14, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 9, 10, 11, // tri0 - 5, 11, 12, // tri1 - 2, 13, 0, // tri2 - 11, 14, 9 // tri3 -), -gsSPNTriangles_5b( - 8, 15, 16, // tri0 - 5, 17, 3, // tri1 - 15, 8, 2, // tri2 - 2, 1, 15 // tri3 -), -gsSPNTriangles_5b( - 12, 17, 5, // tri0 - 8, 16, 6, // tri1 - 10, 12, 11, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 60), -gsSPVertex(&bev_1_v[125], 23, 0), -gsSPNTrianglesInit_5b( - 27, // tri count - 0, 1, 2, // tri0 - 3, 1, 4, // tri1 - 5, 1, 3 // tri2 -), -gsSPNTriangles_5b( - 6, 7, 8, // tri0 - 9, 10, 11, // tri1 - 12, 7, 6, // tri2 - 5, 13, 14 // tri3 -), -gsSPNTriangles_5b( - 2, 1, 5, // tri0 - 9, 15, 5, // tri1 - 5, 14, 7, // tri2 - 16, 3, 17 // tri3 -), -gsSPNTriangles_5b( - 17, 9, 16, // tri0 - 18, 19, 20, // tri1 - 7, 12, 5, // tri2 - 5, 16, 9 // tri3 -), -gsSPNTriangles_5b( - 2, 6, 0, // tri0 - 4, 17, 3, // tri1 - 17, 4, 10, // tri2 - 21, 14, 13 // tri3 -), -gsSPNTriangles_5b( - 22, 8, 7, // tri0 - 15, 13, 5, // tri1 - 13, 15, 21, // tri2 - 3, 16, 5 // tri3 -), -gsSPNTriangles_5b( - 8, 0, 6, // tri0 - 10, 9, 17, // tri1 - 5, 12, 2, // tri2 - 6, 2, 12 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&bev_1_v[148], 18, 0), -gsSPNTrianglesInit_5b( - 19, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 4, 3 // tri2 -), -gsSPNTriangles_5b( - 7, 8, 9, // tri0 - 4, 10, 11, // tri1 - 4, 6, 12, // tri2 - 4, 13, 10 // tri3 -), -gsSPNTriangles_5b( - 5, 14, 3, // tri0 - 14, 5, 0, // tri1 - 6, 9, 8, // tri2 - 11, 5, 4 // tri3 -), -gsSPNTriangles_5b( - 5, 11, 1, // tri0 - 8, 12, 6, // tri1 - 15, 9, 6, // tri2 - 15, 16, 9 // tri3 -), -gsSPNTriangles_5b( - 1, 0, 5, // tri0 - 15, 6, 3, // tri1 - 12, 13, 4, // tri2 - 0, 17, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bev_1_v[0], 29, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 0, 5, 3 // tri2 + ), + gsSPNTriangles_5b(2, 5, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(13, // tri count + 6, 7, 8, // tri0 + 9, 10, 11, // tri1 + 12, 13, 14 // tri2 + ), + gsSPNTriangles_5b(12, 15, 13, // tri0 + 16, 17, 18, // tri1 + 16, 18, 19, // tri2 + 14, 20, 12 // tri3 + ), + gsSPNTriangles_5b(11, 21, 9, // tri0 + 8, 22, 6, // tri1 + 23, 24, 25, // tri2 + 26, 27, 23 // tri3 + ), + gsSPNTriangles_5b(23, 28, 26, // tri0 + 25, 28, 23, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&bev_1_v[29], 29, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b(3, 6, 7, // tri0 + 0, 8, 9, // tri1 + 10, 11, 3, // tri2 + 2, 11, 10 // tri3 + ), + gsSPNTriangles_5b(3, 0, 12, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(13, // tri count + 13, 14, 15, // tri0 + 16, 17, 14, // tri1 + 14, 18, 19 // tri2 + ), + gsSPNTriangles_5b(14, 19, 16, // tri0 + 14, 17, 20, // tri1 + 20, 15, 14, // tri2 + 21, 22, 16 // tri3 + ), + gsSPNTriangles_5b(16, 19, 23, // tri0 + 23, 24, 21, // tri1 + 13, 18, 14, // tri2 + 22, 17, 16 // tri3 + ), + gsSPNTriangles_5b(21, 16, 23, // tri0 + 15, 25, 13, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 26, 27, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPVertex(&bev_1_v[58], 30, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 14, 15, 16, // tri2 + 8, 17, 18 // tri3 + ), + gsSPNTriangles_5b(12, 19, 17, // tri0 + 1, 4, 3, // tri1 + 20, 21, 22, // tri2 + 23, 2, 1 // tri3 + ), + gsSPNTriangles_5b(19, 1, 0, // tri0 + 24, 2, 21, // tri1 + 20, 14, 24, // tri2 + 17, 10, 13 // tri3 + ), + gsSPNTriangles_5b(17, 0, 18, // tri0 + 18, 0, 24, // tri1 + 0, 17, 19, // tri2 + 2, 24, 0 // tri3 + ), + gsSPNTriangles_5b(23, 21, 2, // tri0 + 19, 12, 4, // tri1 + 25, 8, 16, // tri2 + 25, 16, 26 // tri3 + ), + gsSPNTriangles_5b(13, 12, 17, // tri0 + 24, 21, 20, // tri1 + 7, 22, 21, // tri2 + 5, 4, 12 // tri3 + ), + gsSPNTriangles_5b(5, 6, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 27, 28, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPVertex(&bev_1_v[88], 19, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(4, 3, 7, // tri0 + 8, 9, 6, // tri1 + 10, 11, 1, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 17, 16, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&bev_1_v[107], 18, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 5, 11, 12, // tri1 + 2, 13, 0, // tri2 + 11, 14, 9 // tri3 + ), + gsSPNTriangles_5b(8, 15, 16, // tri0 + 5, 17, 3, // tri1 + 15, 8, 2, // tri2 + 2, 1, 15 // tri3 + ), + gsSPNTriangles_5b(12, 17, 5, // tri0 + 8, 16, 6, // tri1 + 10, 12, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsSPVertex(&bev_1_v[125], 23, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 3, 1, 4, // tri1 + 5, 1, 3 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 9, 10, 11, // tri1 + 12, 7, 6, // tri2 + 5, 13, 14 // tri3 + ), + gsSPNTriangles_5b(2, 1, 5, // tri0 + 9, 15, 5, // tri1 + 5, 14, 7, // tri2 + 16, 3, 17 // tri3 + ), + gsSPNTriangles_5b(17, 9, 16, // tri0 + 18, 19, 20, // tri1 + 7, 12, 5, // tri2 + 5, 16, 9 // tri3 + ), + gsSPNTriangles_5b(2, 6, 0, // tri0 + 4, 17, 3, // tri1 + 17, 4, 10, // tri2 + 21, 14, 13 // tri3 + ), + gsSPNTriangles_5b(22, 8, 7, // tri0 + 15, 13, 5, // tri1 + 13, 15, 21, // tri2 + 3, 16, 5 // tri3 + ), + gsSPNTriangles_5b(8, 0, 6, // tri0 + 10, 9, 17, // tri1 + 5, 12, 2, // tri2 + 6, 2, 12 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&bev_1_v[148], 18, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 4, 3 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 4, 10, 11, // tri1 + 4, 6, 12, // tri2 + 4, 13, 10 // tri3 + ), + gsSPNTriangles_5b(5, 14, 3, // tri0 + 14, 5, 0, // tri1 + 6, 9, 8, // tri2 + 11, 5, 4 // tri3 + ), + gsSPNTriangles_5b(5, 11, 1, // tri0 + 8, 12, 6, // tri1 + 15, 9, 6, // tri2 + 15, 16, 9 // tri3 + ), + gsSPNTriangles_5b(1, 0, 5, // tri0 + 15, 6, 3, // tri1 + 12, 13, 4, // tri2 + 0, 17, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_bev_model[] = { -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&bev_1_v[202], 5, 0), -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&bev_1_v[207], 16, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 5, 6, // tri0 - 4, 7, 8, // tri1 - 4, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 0, 1, 11, // tri0 - 2, 4, 12, // tri1 - 0, 13, 14, // tri2 - 3, 0, 15 // tri3 -), -gsSPNTriangles_5b( - 4, 3, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 20, 19, 18, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bev_1_v[202], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bev_1_v[207], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(0, 1, 11, // tri0 + 2, 4, 12, // tri1 + 0, 13, 14, // tri2 + 3, 0, 15 // tri3 + ), + gsSPNTriangles_5b(4, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 19, 18, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_bev_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&bev_1_v[223], 4, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&bev_1_v[227], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 1, 4, 5, // tri0 - 2, 6, 7, // tri1 - 0, 2, 8 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 9, // tri0 - 0, 11, 10, // tri1 - 1, 13, 12, // tri2 - 3, 1, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bev_1_v[223], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bev_1_v[227], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 1, 4, 5, // tri0 + 2, 6, 7, // tri1 + 0, 2, 8 // tri2 + ), + gsSPNTriangles_5b(1, 0, 9, // tri0 + 0, 11, 10, // tri1 + 1, 13, 12, // tri2 + 3, 1, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_bev_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&bev_1_v[166], 5, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&bev_1_v[171], 16, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 5, 6, // tri0 - 4, 7, 8, // tri1 - 4, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 11, // tri0 - 4, 2, 12, // tri1 - 0, 13, 14, // tri2 - 0, 3, 15 // tri3 -), -gsSPNTriangles_5b( - 3, 4, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 18, 17, 20, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bev_1_v[166], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bev_1_v[171], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 + ), + gsSPNTriangles_5b(3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_bev_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&bev_1_v[187], 4, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&bev_1_v[191], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 1, 6, 7, // tri1 - 1, 0, 8 // tri2 -), -gsSPNTriangles_5b( - 0, 3, 9, // tri0 - 0, 11, 10, // tri1 - 3, 13, 12, // tri2 - 3, 2, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bev_1_v[187], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bev_1_v[191], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 1, 6, 7, // tri1 + 1, 0, 8 // tri2 + ), + gsSPNTriangles_5b(0, 3, 9, // tri0 + 0, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 2, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_bev_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&bev_1_v[238], 11, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&bev_1_v[249], 12, 11), -gsSPNTrianglesInit_5b( - 8, // tri count - 3, 11, 12, // tri0 - 4, 13, 8, // tri1 - 3, 8, 14 // tri2 -), -gsSPNTriangles_5b( - 8, 15, 16, // tri0 - 7, 18, 17, // tri1 - 7, 6, 19, // tri2 - 4, 7, 20 // tri3 -), -gsSPNTriangles_5b( - 6, 21, 22, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&bev_1_v[261], 18, 11), -gsSPNTrianglesInit_5b( - 9, // tri count - 1, 0, 11, // tri0 - 9, 10, 12, // tri1 - 5, 13, 14 // tri2 -), -gsSPNTriangles_5b( - 5, 9, 15, // tri0 - 10, 1, 16, // tri1 - 2, 17, 18, // tri2 - 0, 2, 19 // tri3 -), -gsSPNTriangles_5b( - 10, 20, 21, // tri0 - 1, 22, 23, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 2, // tri count - 24, 25, 26, // tri0 - 27, 28, 24, // tri1 - 0, 0, 0 // tri2 -), -gsSPVertex(&bev_1_v[279], 18, 0), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 2, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 2, 7, 0, // tri0 - 5, 1, 0, // tri1 - 0, 3, 5, // tri2 - 1, 8, 2 // tri3 -), -gsSPNTriangles_5b( - 1, 5, 8, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 8, // tri count - 9, 10, 11, // tri0 - 11, 12, 9, // tri1 - 13, 10, 9 // tri2 -), -gsSPNTriangles_5b( - 14, 15, 16, // tri0 - 11, 14, 16, // tri1 - 11, 17, 14, // tri2 - 10, 17, 11 // tri3 -), -gsSPNTriangles_5b( - 16, 12, 11, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bev_1_v[238], 11, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bev_1_v[249], 12, 11), + gsSPNTrianglesInit_5b(8, // tri count + 3, 11, 12, // tri0 + 4, 13, 8, // tri1 + 3, 8, 14 // tri2 + ), + gsSPNTriangles_5b(8, 15, 16, // tri0 + 7, 18, 17, // tri1 + 7, 6, 19, // tri2 + 4, 7, 20 // tri3 + ), + gsSPNTriangles_5b(6, 21, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&bev_1_v[261], 18, 11), + gsSPNTrianglesInit_5b(9, // tri count + 1, 0, 11, // tri0 + 9, 10, 12, // tri1 + 5, 13, 14 // tri2 + ), + gsSPNTriangles_5b(5, 9, 15, // tri0 + 10, 1, 16, // tri1 + 2, 17, 18, // tri2 + 0, 2, 19 // tri3 + ), + gsSPNTriangles_5b(10, 20, 21, // tri0 + 1, 22, 23, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 24, 25, 26, // tri0 + 27, 28, 24, // tri1 + 0, 0, 0 // tri2 + ), + gsSPVertex(&bev_1_v[279], 18, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(2, 7, 0, // tri0 + 5, 1, 0, // tri1 + 0, 3, 5, // tri2 + 1, 8, 2 // tri3 + ), + gsSPNTriangles_5b(1, 5, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(8, // tri count + 9, 10, 11, // tri0 + 11, 12, 9, // tri1 + 13, 10, 9 // tri2 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 11, 14, 16, // tri1 + 11, 17, 14, // tri2 + 10, 17, 11 // tri3 + ), + gsSPNTriangles_5b(16, 12, 11, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail1_bev_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&bev_1_v[317], 3, 0), -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&bev_1_v[320], 11, 3), -gsSPNTrianglesInit_5b( - 7, // tri count - 1, 3, 4, // tri0 - 1, 0, 5, // tri1 - 2, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 0, 8, 9, // tri0 - 0, 2, 10, // tri1 - 1, 11, 12, // tri2 - 2, 1, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bev_1_v[317], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bev_1_v[320], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 1, 3, 4, // tri0 + 1, 0, 5, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(0, 8, 9, // tri0 + 0, 2, 10, // tri1 + 1, 11, 12, // tri2 + 2, 1, 13 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail2_bev_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&bev_1_v[297], 4, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&bev_1_v[301], 16, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 3, 4, // tri0 - 3, 0, 5, // tri1 - 1, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 8, 9, // tri0 - 2, 10, 1, // tri1 - 1, 11, 0, // tri2 - 3, 12, 13 // tri3 -), -gsSPNTriangles_5b( - 3, 14, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 16, 17, 18, // tri0 - 18, 19, 16, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bev_1_v[297], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bev_1_v[301], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 3, 4, // tri0 + 3, 0, 5, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 2, 10, 1, // tri1 + 1, 11, 0, // tri2 + 3, 12, 13 // tri3 + ), + gsSPNTriangles_5b(3, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 18, 19, 16, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_bev_model[] = { -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&bev_1_v[362], 5, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&bev_1_v[367], 17, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 4, 0, 5, // tri0 - 0, 7, 6, // tri1 - 3, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 1, 2, 10, // tri0 - 2, 3, 11, // tri1 - 3, 4, 12, // tri2 - 2, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 15, 16, 17, // tri0 - 18, 19, 20, // tri1 - 18, 21, 19 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bev_1_v[362], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bev_1_v[367], 17, 5), + gsSPNTrianglesInit_5b(7, // tri count + 4, 0, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 + ), + gsSPNTriangles_5b(1, 2, 10, // tri0 + 2, 3, 11, // tri1 + 3, 4, 12, // tri2 + 2, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_bev_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&bev_1_v[384], 9, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 1, 3, 4, // tri1 - 1, 5, 2 // tri2 -), -gsSPNTriangles_5b( - 6, 7, 8, // tri0 - 6, 8, 0, // tri1 - 0, 2, 6, // tri2 - 4, 5, 1 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bev_1_v[384], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 1, 5, 2 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 6, 8, 0, // tri1 + 0, 2, 6, // tri2 + 4, 5, 1 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_bev_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&bev_1_v[331], 5, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&bev_1_v[336], 17, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 4, 5, // tri0 - 0, 7, 6, // tri1 - 3, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 1, 10, // tri0 - 3, 2, 11, // tri1 - 4, 3, 12, // tri2 - 2, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 15, 16, 17, // tri0 - 18, 19, 20, // tri1 - 19, 21, 20 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bev_1_v[331], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bev_1_v[336], 17, 5), + gsSPNTrianglesInit_5b(7, // tri count + 0, 4, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 + ), + gsSPNTriangles_5b(2, 1, 10, // tri0 + 3, 2, 11, // tri1 + 4, 3, 12, // tri2 + 2, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_bev_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&bev_1_v[353], 9, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 3, 4, 1, // tri1 - 0, 5, 1 // tri2 -), -gsSPNTriangles_5b( - 6, 7, 8, // tri0 - 2, 6, 8, // tri1 - 8, 0, 2, // tri2 - 1, 5, 3 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bev_1_v[353], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 0, 5, 1 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 2, 6, 8, // tri1 + 8, 0, 2, // tri2 + 1, 5, 3 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx base_bev_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&bev_1_v[393], 28, 0), -gsSPNTrianglesInit_5b( - 24, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 3, 5 // tri2 -), -gsSPNTriangles_5b( - 7, 8, 0, // tri0 - 9, 10, 11, // tri1 - 9, 12, 6, // tri2 - 13, 14, 6 // tri3 -), -gsSPNTriangles_5b( - 15, 13, 12, // tri0 - 9, 16, 12, // tri1 - 15, 12, 16, // tri2 - 6, 12, 13 // tri3 -), -gsSPNTriangles_5b( - 6, 10, 9, // tri0 - 3, 17, 4, // tri1 - 13, 18, 19, // tri2 - 14, 19, 20 // tri3 -), -gsSPNTriangles_5b( - 15, 18, 13, // tri0 - 14, 13, 19, // tri1 - 21, 16, 22, // tri2 - 1, 23, 2 // tri3 -), -gsSPNTriangles_5b( - 15, 21, 18, // tri0 - 24, 25, 26, // tri1 - 22, 9, 11, // tri2 - 11, 10, 27 // tri3 -), -gsSPNTriangles_5b( - 16, 9, 22, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bev_1_v[393], 28, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 5 // tri2 + ), + gsSPNTriangles_5b(7, 8, 0, // tri0 + 9, 10, 11, // tri1 + 9, 12, 6, // tri2 + 13, 14, 6 // tri3 + ), + gsSPNTriangles_5b(15, 13, 12, // tri0 + 9, 16, 12, // tri1 + 15, 12, 16, // tri2 + 6, 12, 13 // tri3 + ), + gsSPNTriangles_5b(6, 10, 9, // tri0 + 3, 17, 4, // tri1 + 13, 18, 19, // tri2 + 14, 19, 20 // tri3 + ), + gsSPNTriangles_5b(15, 18, 13, // tri0 + 14, 13, 19, // tri1 + 21, 16, 22, // tri2 + 1, 23, 2 // tri3 + ), + gsSPNTriangles_5b(15, 21, 18, // tri0 + 24, 25, 26, // tri1 + 22, 9, 11, // tri2 + 11, 10, 27 // tri3 + ), + gsSPNTriangles_5b(16, 9, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_bev_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -779,4 +688,4 @@ static cKF_Joint_R_c cKF_je_r_bev_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_bev_1 = { 26, 13, cKF_je_r_bev_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_bev_1 = { 26, 13, cKF_je_r_bev_1_tbl }; diff --git a/src/data/npc/model/mdl/boa_1.c b/src/data/npc/model/mdl/boa_1.c index 3b00111f..7910010e 100644 --- a/src/data/npc/model/mdl/boa_1.c +++ b/src/data/npc/model/mdl/boa_1.c @@ -6,822 +6,718 @@ static Vtx boa_1_v[] = { }; static Gfx head_boa_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&boa_1_v[26], 28, 0), -gsSPNTrianglesInit_5b( - 2, // tri count - 0, 1, 2, // tri0 - 2, 3, 0, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 4, // tri count - 4, 5, 6, // tri0 - 7, 5, 4, // tri1 - 8, 5, 7 // tri2 -), -gsSPNTriangles_5b( - 6, 5, 9, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 2, // tri count - 10, 11, 12, // tri0 - 12, 13, 10, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000180, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 10, // tri count - 14, 15, 16, // tri0 - 15, 17, 18, // tri1 - 17, 15, 14 // tri2 -), -gsSPNTriangles_5b( - 17, 14, 19, // tri0 - 17, 19, 20, // tri1 - 18, 16, 15, // tri2 - 16, 18, 20 // tri3 -), -gsSPNTriangles_5b( - 14, 16, 19, // tri0 - 20, 18, 17, // tri1 - 20, 19, 16, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 10, // tri count - 21, 22, 23, // tri0 - 24, 25, 22, // tri1 - 23, 22, 25 // tri2 -), -gsSPNTriangles_5b( - 26, 23, 25, // tri0 - 27, 26, 25, // tri1 - 22, 21, 24, // tri2 - 27, 24, 21 // tri3 -), -gsSPNTriangles_5b( - 26, 21, 23, // tri0 - 25, 24, 27, // tri1 - 21, 26, 27, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&boa_1_v[54], 22, 0), -gsSPNTrianglesInit_5b( - 27, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 4, 3, 6 // tri2 -), -gsSPNTriangles_5b( - 6, 7, 4, // tri0 - 8, 1, 6, // tri1 - 5, 9, 3, // tri2 - 3, 9, 10 // tri3 -), -gsSPNTriangles_5b( - 0, 11, 7, // tri0 - 0, 12, 11, // tri1 - 10, 8, 3, // tri2 - 13, 2, 14 // tri3 -), -gsSPNTriangles_5b( - 7, 15, 16, // tri0 - 17, 18, 1, // tri1 - 19, 20, 21, // tri2 - 21, 13, 14 // tri3 -), -gsSPNTriangles_5b( - 2, 1, 18, // tri0 - 15, 7, 11, // tri1 - 13, 21, 20, // tri2 - 15, 11, 19 // tri3 -), -gsSPNTriangles_5b( - 16, 4, 7, // tri0 - 14, 2, 18, // tri1 - 19, 11, 20, // tri2 - 1, 8, 17 // tri3 -), -gsSPNTriangles_5b( - 7, 6, 0, // tri0 - 0, 6, 1, // tri1 - 6, 3, 8, // tri2 - 0, 2, 12 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsSPVertex(&boa_1_v[76], 21, 0), -gsSPNTrianglesInit_5b( - 20, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 5, 9, 3, // tri0 - 10, 2, 11, // tri1 - 12, 6, 13, // tri2 - 5, 8, 7 // tri3 -), -gsSPNTriangles_5b( - 4, 8, 5, // tri0 - 14, 11, 2, // tri1 - 6, 12, 15, // tri2 - 1, 14, 2 // tri3 -), -gsSPNTriangles_5b( - 6, 15, 7, // tri0 - 3, 9, 16, // tri1 - 17, 18, 13, // tri2 - 1, 0, 16 // tri3 -), -gsSPNTriangles_5b( - 13, 18, 12, // tri0 - 16, 0, 19, // tri1 - 10, 20, 17, // tri2 - 11, 20, 10 // tri3 -), -gsSPNTriangles_5b( - 16, 19, 3, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&boa_1_v[97], 32, 0), -gsSPNTrianglesInit_5b( - 27, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 9, 10, 11, // tri0 - 12, 13, 1, // tri1 - 14, 15, 16, // tri2 - 3, 9, 17 // tri3 -), -gsSPNTriangles_5b( - 4, 3, 18, // tri0 - 19, 8, 7, // tri1 - 20, 21, 22, // tri2 - 23, 20, 11 // tri3 -), -gsSPNTriangles_5b( - 9, 3, 10, // tri0 - 20, 23, 21, // tri1 - 1, 0, 12, // tri2 - 11, 20, 24 // tri3 -), -gsSPNTriangles_5b( - 1, 22, 25, // tri0 - 1, 25, 2, // tri1 - 26, 23, 11, // tri2 - 13, 22, 1 // tri3 -), -gsSPNTriangles_5b( - 11, 24, 9, // tri0 - 8, 27, 17, // tri1 - 17, 27, 3, // tri2 - 28, 29, 30 // tri3 -), -gsSPNTriangles_5b( - 8, 0, 6, // tri0 - 2, 6, 0, // tri1 - 22, 13, 24, // tri2 - 22, 24, 20 // tri3 -), -gsSPVertex(&boa_1_v[128], 27, 0), -gsSPNTrianglesInit_5b( - 15, // tri count - 0, 1, 2, // tri0 - 3, 0, 2, // tri1 - 0, 4, 1 // tri2 -), -gsSPNTriangles_5b( - 5, 6, 7, // tri0 - 8, 9, 10, // tri1 - 11, 0, 3, // tri2 - 12, 8, 10 // tri3 -), -gsSPNTriangles_5b( - 13, 14, 15, // tri0 - 14, 13, 16, // tri1 - 17, 18, 19, // tri2 - 20, 21, 22 // tri3 -), -gsSPNTriangles_5b( - 22, 23, 20, // tri0 - 5, 24, 6, // tri1 - 23, 25, 20, // tri2 - 15, 26, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&boa_1_v[26], 28, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 4, 5, 6, // tri0 + 7, 5, 4, // tri1 + 8, 5, 7 // tri2 + ), + gsSPNTriangles_5b(6, 5, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 10, 11, 12, // tri0 + 12, 13, 10, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x180, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(10, // tri count + 14, 15, 16, // tri0 + 15, 17, 18, // tri1 + 17, 15, 14 // tri2 + ), + gsSPNTriangles_5b(17, 14, 19, // tri0 + 17, 19, 20, // tri1 + 18, 16, 15, // tri2 + 16, 18, 20 // tri3 + ), + gsSPNTriangles_5b(14, 16, 19, // tri0 + 20, 18, 17, // tri1 + 20, 19, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(10, // tri count + 21, 22, 23, // tri0 + 24, 25, 22, // tri1 + 23, 22, 25 // tri2 + ), + gsSPNTriangles_5b(26, 23, 25, // tri0 + 27, 26, 25, // tri1 + 22, 21, 24, // tri2 + 27, 24, 21 // tri3 + ), + gsSPNTriangles_5b(26, 21, 23, // tri0 + 25, 24, 27, // tri1 + 21, 26, 27, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&boa_1_v[54], 22, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 3, 6 // tri2 + ), + gsSPNTriangles_5b(6, 7, 4, // tri0 + 8, 1, 6, // tri1 + 5, 9, 3, // tri2 + 3, 9, 10 // tri3 + ), + gsSPNTriangles_5b(0, 11, 7, // tri0 + 0, 12, 11, // tri1 + 10, 8, 3, // tri2 + 13, 2, 14 // tri3 + ), + gsSPNTriangles_5b(7, 15, 16, // tri0 + 17, 18, 1, // tri1 + 19, 20, 21, // tri2 + 21, 13, 14 // tri3 + ), + gsSPNTriangles_5b(2, 1, 18, // tri0 + 15, 7, 11, // tri1 + 13, 21, 20, // tri2 + 15, 11, 19 // tri3 + ), + gsSPNTriangles_5b(16, 4, 7, // tri0 + 14, 2, 18, // tri1 + 19, 11, 20, // tri2 + 1, 8, 17 // tri3 + ), + gsSPNTriangles_5b(7, 6, 0, // tri0 + 0, 6, 1, // tri1 + 6, 3, 8, // tri2 + 0, 2, 12 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&boa_1_v[76], 21, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(5, 9, 3, // tri0 + 10, 2, 11, // tri1 + 12, 6, 13, // tri2 + 5, 8, 7 // tri3 + ), + gsSPNTriangles_5b(4, 8, 5, // tri0 + 14, 11, 2, // tri1 + 6, 12, 15, // tri2 + 1, 14, 2 // tri3 + ), + gsSPNTriangles_5b(6, 15, 7, // tri0 + 3, 9, 16, // tri1 + 17, 18, 13, // tri2 + 1, 0, 16 // tri3 + ), + gsSPNTriangles_5b(13, 18, 12, // tri0 + 16, 0, 19, // tri1 + 10, 20, 17, // tri2 + 11, 20, 10 // tri3 + ), + gsSPNTriangles_5b(16, 19, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&boa_1_v[97], 32, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 13, 1, // tri1 + 14, 15, 16, // tri2 + 3, 9, 17 // tri3 + ), + gsSPNTriangles_5b(4, 3, 18, // tri0 + 19, 8, 7, // tri1 + 20, 21, 22, // tri2 + 23, 20, 11 // tri3 + ), + gsSPNTriangles_5b(9, 3, 10, // tri0 + 20, 23, 21, // tri1 + 1, 0, 12, // tri2 + 11, 20, 24 // tri3 + ), + gsSPNTriangles_5b(1, 22, 25, // tri0 + 1, 25, 2, // tri1 + 26, 23, 11, // tri2 + 13, 22, 1 // tri3 + ), + gsSPNTriangles_5b(11, 24, 9, // tri0 + 8, 27, 17, // tri1 + 17, 27, 3, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b(8, 0, 6, // tri0 + 2, 6, 0, // tri1 + 22, 13, 24, // tri2 + 22, 24, 20 // tri3 + ), + gsSPVertex(&boa_1_v[128], 27, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 11, 0, 3, // tri2 + 12, 8, 10 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 14, 13, 16, // tri1 + 17, 18, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(22, 23, 20, // tri0 + 5, 24, 6, // tri1 + 23, 25, 20, // tri2 + 15, 26, 13 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx mouth_boa_model[] = { -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&boa_1_v[0], 6, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 24, 15, GX_MIRROR, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&boa_1_v[6], 20, 6), -gsSPNTrianglesInit_5b( - 10, // tri count - 3, 4, 6, // tri0 - 5, 2, 7, // tri1 - 2, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 2, 1, 10, // tri0 - 1, 11, 12, // tri1 - 0, 13, 14, // tri2 - 3, 15, 16 // tri3 -), -gsSPNTriangles_5b( - 0, 3, 17, // tri0 - 1, 18, 19, // tri1 - 1, 0, 20, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 21, 22, 23, // tri0 - 23, 24, 25, // tri1 - 23, 25, 21 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&boa_1_v[0], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 24, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&boa_1_v[6], 20, 6), + gsSPNTrianglesInit_5b(10, // tri count + 3, 4, 6, // tri0 + 5, 2, 7, // tri1 + 2, 8, 9 // tri2 + ), + gsSPNTriangles_5b(2, 1, 10, // tri0 + 1, 11, 12, // tri1 + 0, 13, 14, // tri2 + 3, 15, 16 // tri3 + ), + gsSPNTriangles_5b(0, 3, 17, // tri0 + 1, 18, 19, // tri1 + 1, 0, 20, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 21, 22, 23, // tri0 + 23, 24, 25, // tri1 + 23, 25, 21 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_boa_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&boa_1_v[189], 4, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&boa_1_v[193], 16, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 4, 5, // tri0 - 1, 6, 7, // tri1 - 2, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 1, 10, 11, // tri0 - 0, 2, 12, // tri1 - 0, 13, 1, // tri2 - 2, 3, 14 // tri3 -), -gsSPNTriangles_5b( - 3, 1, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 16, 17, 18, // tri0 - 19, 18, 17, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&boa_1_v[189], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&boa_1_v[193], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 1, 6, 7, // tri1 + 2, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 10, 11, // tri0 + 0, 2, 12, // tri1 + 0, 13, 1, // tri2 + 2, 3, 14 // tri3 + ), + gsSPNTriangles_5b(3, 1, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 19, 18, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_boa_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&boa_1_v[209], 3, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&boa_1_v[212], 11, 3), -gsSPNTrianglesInit_5b( - 7, // tri count - 2, 3, 1, // tri0 - 0, 5, 4, // tri1 - 2, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 8, 9, // tri0 - 0, 10, 11, // tri1 - 2, 0, 12, // tri2 - 0, 1, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&boa_1_v[209], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&boa_1_v[212], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 2, 3, 1, // tri0 + 0, 5, 4, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 0, 10, 11, // tri1 + 2, 0, 12, // tri2 + 0, 1, 13 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_boa_model[] = { -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&boa_1_v[155], 4, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&boa_1_v[159], 16, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 4, 5, // tri0 - 1, 6, 7, // tri1 - 2, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 1, 10, 11, // tri0 - 2, 0, 12, // tri1 - 1, 13, 0, // tri2 - 3, 2, 14 // tri3 -), -gsSPNTriangles_5b( - 1, 3, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 16, 17, 18, // tri0 - 17, 16, 19, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&boa_1_v[155], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&boa_1_v[159], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 1, 6, 7, // tri1 + 2, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 10, 11, // tri0 + 2, 0, 12, // tri1 + 1, 13, 0, // tri2 + 3, 2, 14 // tri3 + ), + gsSPNTriangles_5b(1, 3, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_boa_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&boa_1_v[175], 3, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&boa_1_v[178], 11, 3), -gsSPNTrianglesInit_5b( - 7, // tri count - 1, 3, 2, // tri0 - 0, 5, 4, // tri1 - 2, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 8, 9, // tri0 - 0, 10, 11, // tri1 - 0, 2, 12, // tri2 - 1, 0, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&boa_1_v[175], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&boa_1_v[178], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 1, 3, 2, // tri0 + 0, 5, 4, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 0, 10, 11, // tri1 + 0, 2, 12, // tri2 + 1, 0, 13 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_boa_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&boa_1_v[223], 10, 0), -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&boa_1_v[233], 20, 10), -gsSPNTrianglesInit_5b( - 13, // tri count - 2, 5, 10, // tri0 - 5, 6, 11, // tri1 - 1, 12, 13 // tri2 -), -gsSPNTriangles_5b( - 3, 14, 15, // tri0 - 3, 2, 16, // tri1 - 4, 17, 18, // tri2 - 0, 4, 19 // tri3 -), -gsSPNTriangles_5b( - 7, 20, 21, // tri0 - 0, 22, 23, // tri1 - 6, 8, 24, // tri2 - 7, 1, 25 // tri3 -), -gsSPNTriangles_5b( - 8, 26, 27, // tri0 - 5, 28, 29, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&boa_1_v[253], 4, 10), -gsSPNTrianglesInit_5b( - 3, // tri count - 1, 9, 10, // tri0 - 9, 0, 11, // tri1 - 5, 12, 13 // tri2 -), -gsSPVertex(&boa_1_v[257], 23, 0), -gsSPNTrianglesInit_5b( - 18, // tri count - 0, 1, 2, // tri0 - 3, 0, 2, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 3, 7, 0, // tri0 - 0, 7, 8, // tri1 - 9, 10, 11, // tri2 - 1, 12, 13 // tri3 -), -gsSPNTriangles_5b( - 0, 8, 12, // tri0 - 9, 14, 15, // tri1 - 15, 10, 9, // tri2 - 0, 12, 1 // tri3 -), -gsSPNTriangles_5b( - 10, 16, 11, // tri0 - 11, 17, 9, // tri1 - 11, 18, 17, // tri2 - 14, 19, 15 // tri3 -), -gsSPNTriangles_5b( - 3, 20, 7, // tri0 - 16, 10, 15, // tri1 - 5, 21, 22, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 24, 15, GX_REPEAT, GX_CLAMP, 0, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&boa_1_v[280], 31, 0), -gsSPNTrianglesInit_5b( - 21, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 4, 5, 0 // tri2 -), -gsSPNTriangles_5b( - 6, 7, 8, // tri0 - 9, 10, 7, // tri1 - 9, 7, 6, // tri2 - 11, 0, 5 // tri3 -), -gsSPNTriangles_5b( - 2, 7, 10, // tri0 - 2, 10, 3, // tri1 - 2, 8, 7, // tri2 - 1, 8, 2 // tri3 -), -gsSPNTriangles_5b( - 8, 1, 12, // tri0 - 13, 10, 9, // tri1 - 12, 1, 0, // tri2 - 12, 0, 11 // tri3 -), -gsSPNTriangles_5b( - 14, 3, 10, // tri0 - 14, 4, 3, // tri1 - 10, 13, 14, // tri2 - 0, 3, 4 // tri3 -), -gsSPNTriangles_5b( - 9, 15, 13, // tri0 - 5, 16, 11, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 20, 18, 17, // tri1 - 0, 0, 0 // tri2 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 21, 22, 23, // tri0 - 24, 22, 21, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000180, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 8, // tri count - 25, 26, 27, // tri0 - 26, 25, 28, // tri1 - 26, 29, 27 // tri2 -), -gsSPNTriangles_5b( - 29, 26, 28, // tri0 - 30, 25, 27, // tri1 - 25, 30, 28, // tri2 - 29, 30, 27 // tri3 -), -gsSPNTriangles_5b( - 30, 29, 28, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&boa_1_v[311], 30, 0), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 4, 3, 2 // tri2 -), -gsSPNTriangles_5b( - 0, 3, 5, // tri0 - 3, 0, 2, // tri1 - 4, 1, 5, // tri2 - 1, 4, 2 // tri3 -), -gsSPNTriangles_5b( - 1, 0, 5, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 8, // tri count - 6, 7, 8, // tri0 - 9, 10, 11, // tri1 - 10, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 6, 9, 11, // tri0 - 9, 6, 8, // tri1 - 10, 7, 11, // tri2 - 7, 10, 8 // tri3 -), -gsSPNTriangles_5b( - 7, 6, 11, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 24, 15, GX_MIRROR, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 178, 178, 178, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 12, 13, 14, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 15, 16, 17, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 18, 19, 20, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 21, 22, 23, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 24, 25, 26, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 27, 28, 29, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&boa_1_v[223], 10, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&boa_1_v[233], 20, 10), + gsSPNTrianglesInit_5b(13, // tri count + 2, 5, 10, // tri0 + 5, 6, 11, // tri1 + 1, 12, 13 // tri2 + ), + gsSPNTriangles_5b(3, 14, 15, // tri0 + 3, 2, 16, // tri1 + 4, 17, 18, // tri2 + 0, 4, 19 // tri3 + ), + gsSPNTriangles_5b(7, 20, 21, // tri0 + 0, 22, 23, // tri1 + 6, 8, 24, // tri2 + 7, 1, 25 // tri3 + ), + gsSPNTriangles_5b(8, 26, 27, // tri0 + 5, 28, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&boa_1_v[253], 4, 10), + gsSPNTrianglesInit_5b(3, // tri count + 1, 9, 10, // tri0 + 9, 0, 11, // tri1 + 5, 12, 13 // tri2 + ), + gsSPVertex(&boa_1_v[257], 23, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(3, 7, 0, // tri0 + 0, 7, 8, // tri1 + 9, 10, 11, // tri2 + 1, 12, 13 // tri3 + ), + gsSPNTriangles_5b(0, 8, 12, // tri0 + 9, 14, 15, // tri1 + 15, 10, 9, // tri2 + 0, 12, 1 // tri3 + ), + gsSPNTriangles_5b(10, 16, 11, // tri0 + 11, 17, 9, // tri1 + 11, 18, 17, // tri2 + 14, 19, 15 // tri3 + ), + gsSPNTriangles_5b(3, 20, 7, // tri0 + 16, 10, 15, // tri1 + 5, 21, 22, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 24, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&boa_1_v[280], 31, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 0 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 9, 10, 7, // tri1 + 9, 7, 6, // tri2 + 11, 0, 5 // tri3 + ), + gsSPNTriangles_5b(2, 7, 10, // tri0 + 2, 10, 3, // tri1 + 2, 8, 7, // tri2 + 1, 8, 2 // tri3 + ), + gsSPNTriangles_5b(8, 1, 12, // tri0 + 13, 10, 9, // tri1 + 12, 1, 0, // tri2 + 12, 0, 11 // tri3 + ), + gsSPNTriangles_5b(14, 3, 10, // tri0 + 14, 4, 3, // tri1 + 10, 13, 14, // tri2 + 0, 3, 4 // tri3 + ), + gsSPNTriangles_5b(9, 15, 13, // tri0 + 5, 16, 11, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 18, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPNTrianglesInit_5b(2, // tri count + 21, 22, 23, // tri0 + 24, 22, 21, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x180, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(8, // tri count + 25, 26, 27, // tri0 + 26, 25, 28, // tri1 + 26, 29, 27 // tri2 + ), + gsSPNTriangles_5b(29, 26, 28, // tri0 + 30, 25, 27, // tri1 + 25, 30, 28, // tri2 + 29, 30, 27 // tri3 + ), + gsSPNTriangles_5b(30, 29, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&boa_1_v[311], 30, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 3, 2 // tri2 + ), + gsSPNTriangles_5b(0, 3, 5, // tri0 + 3, 0, 2, // tri1 + 4, 1, 5, // tri2 + 1, 4, 2 // tri3 + ), + gsSPNTriangles_5b(1, 0, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(8, // tri count + 6, 7, 8, // tri0 + 9, 10, 11, // tri1 + 10, 9, 8 // tri2 + ), + gsSPNTriangles_5b(6, 9, 11, // tri0 + 9, 6, 8, // tri1 + 10, 7, 11, // tri2 + 7, 10, 8 // tri3 + ), + gsSPNTriangles_5b(7, 6, 11, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 24, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 178, 178, 178, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 12, 13, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPNTrianglesInit_5b(1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPNTrianglesInit_5b(1, // tri count + 18, 19, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPNTrianglesInit_5b(1, // tri count + 21, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPNTrianglesInit_5b(1, // tri count + 24, 25, 26, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPNTrianglesInit_5b(1, // tri count + 27, 28, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_boa_model[] = { -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&boa_1_v[382], 6, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&boa_1_v[388], 14, 6), -gsSPNTrianglesInit_5b( - 5, // tri count - 2, 4, 6, // tri0 - 0, 2, 7, // tri1 - 4, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 0, 11, 10, // tri0 - 2, 12, 13, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 2, // tri count - 3, 5, 14, // tri0 - 5, 1, 15, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 3, // tri count - 16, 17, 18, // tri0 - 18, 17, 19, // tri1 - 16, 19, 17 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&boa_1_v[382], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&boa_1_v[388], 14, 6), + gsSPNTrianglesInit_5b(5, // tri count + 2, 4, 6, // tri0 + 0, 2, 7, // tri1 + 4, 9, 8 // tri2 + ), + gsSPNTriangles_5b(0, 11, 10, // tri0 + 2, 12, 13, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 3, 5, 14, // tri0 + 5, 1, 15, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 16, 17, 18, // tri0 + 18, 17, 19, // tri1 + 16, 19, 17 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_boa_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&boa_1_v[402], 8, 0), -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&boa_1_v[410], 13, 8), -gsSPNTrianglesInit_5b( - 9, // tri count - 6, 8, 9, // tri0 - 7, 4, 10, // tri1 - 5, 11, 12 // tri2 -), -gsSPNTriangles_5b( - 2, 6, 13, // tri0 - 0, 2, 14, // tri1 - 3, 15, 5, // tri2 - 3, 16, 17 // tri3 -), -gsSPNTriangles_5b( - 3, 1, 18, // tri0 - 2, 19, 20, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&boa_1_v[402], 8, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&boa_1_v[410], 13, 8), + gsSPNTrianglesInit_5b(9, // tri count + 6, 8, 9, // tri0 + 7, 4, 10, // tri1 + 5, 11, 12 // tri2 + ), + gsSPNTriangles_5b(2, 6, 13, // tri0 + 0, 2, 14, // tri1 + 3, 15, 5, // tri2 + 3, 16, 17 // tri3 + ), + gsSPNTriangles_5b(3, 1, 18, // tri0 + 2, 19, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_boa_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&boa_1_v[341], 6, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&boa_1_v[347], 14, 6), -gsSPNTrianglesInit_5b( - 2, // tri count - 5, 3, 6, // tri0 - 1, 5, 7, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 5, // tri count - 2, 8, 9, // tri0 - 4, 2, 10, // tri1 - 2, 0, 11 // tri2 -), -gsSPNTriangles_5b( - 4, 13, 12, // tri0 - 0, 15, 14, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 16, 17, 18, // tri0 - 19, 17, 16, // tri1 - 17, 19, 18 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&boa_1_v[341], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&boa_1_v[347], 14, 6), + gsSPNTrianglesInit_5b(2, // tri count + 5, 3, 6, // tri0 + 1, 5, 7, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(5, // tri count + 2, 8, 9, // tri0 + 4, 2, 10, // tri1 + 2, 0, 11 // tri2 + ), + gsSPNTriangles_5b(4, 13, 12, // tri0 + 0, 15, 14, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 16, 17, 18, // tri0 + 19, 17, 16, // tri1 + 17, 19, 18 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_boa_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&boa_1_v[361], 8, 0), -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&boa_1_v[369], 13, 8), -gsSPNTrianglesInit_5b( - 9, // tri count - 6, 8, 9, // tri0 - 4, 2, 10, // tri1 - 4, 11, 12 // tri2 -), -gsSPNTriangles_5b( - 7, 5, 13, // tri0 - 3, 6, 14, // tri1 - 2, 0, 15, // tri2 - 1, 3, 16 // tri3 -), -gsSPNTriangles_5b( - 3, 17, 18, // tri0 - 2, 19, 20, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&boa_1_v[361], 8, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&boa_1_v[369], 13, 8), + gsSPNTrianglesInit_5b(9, // tri count + 6, 8, 9, // tri0 + 4, 2, 10, // tri1 + 4, 11, 12 // tri2 + ), + gsSPNTriangles_5b(7, 5, 13, // tri0 + 3, 6, 14, // tri1 + 2, 0, 15, // tri2 + 1, 3, 16 // tri3 + ), + gsSPNTriangles_5b(3, 17, 18, // tri0 + 2, 19, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx base_boa_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&boa_1_v[423], 30, 0), -gsSPNTrianglesInit_5b( - 20, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 9, 10, 11, // tri0 - 12, 13, 14, // tri1 - 15, 16, 17, // tri2 - 5, 9, 3 // tri3 -), -gsSPNTriangles_5b( - 15, 18, 19, // tri0 - 20, 13, 12, // tri1 - 8, 7, 21, // tri2 - 11, 3, 9 // tri3 -), -gsSPNTriangles_5b( - 19, 16, 15, // tri0 - 22, 15, 17, // tri1 - 20, 23, 13, // tri2 - 7, 24, 21 // tri3 -), -gsSPNTriangles_5b( - 21, 24, 25, // tri0 - 14, 26, 12, // tri1 - 8, 27, 6, // tri2 - 21, 28, 8 // tri3 -), -gsSPNTriangles_5b( - 12, 29, 20, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&boa_1_v[423], 30, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 13, 14, // tri1 + 15, 16, 17, // tri2 + 5, 9, 3 // tri3 + ), + gsSPNTriangles_5b(15, 18, 19, // tri0 + 20, 13, 12, // tri1 + 8, 7, 21, // tri2 + 11, 3, 9 // tri3 + ), + gsSPNTriangles_5b(19, 16, 15, // tri0 + 22, 15, 17, // tri1 + 20, 23, 13, // tri2 + 7, 24, 21 // tri3 + ), + gsSPNTriangles_5b(21, 24, 25, // tri0 + 14, 26, 12, // tri1 + 8, 27, 6, // tri2 + 21, 28, 8 // tri3 + ), + gsSPNTriangles_5b(12, 29, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_boa_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -853,4 +749,4 @@ static cKF_Joint_R_c cKF_je_r_boa_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_boa_1 = { 26, 12, cKF_je_r_boa_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_boa_1 = { 26, 12, cKF_je_r_boa_1_tbl }; diff --git a/src/data/npc/model/mdl/bpt_1.c b/src/data/npc/model/mdl/bpt_1.c index 813f42b7..003366b0 100644 --- a/src/data/npc/model/mdl/bpt_1.c +++ b/src/data/npc/model/mdl/bpt_1.c @@ -6,766 +6,675 @@ static Vtx bpt_1_v[] = { }; static Gfx head_bpt_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&bpt_1_v[21], 25, 0), -gsSPNTrianglesInit_5b( - 34, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 7, 6, 5, // tri0 - 8, 9, 10, // tri1 - 11, 12, 5, // tri2 - 5, 12, 10 // tri3 -), -gsSPNTriangles_5b( - 13, 14, 15, // tri0 - 10, 12, 8, // tri1 - 13, 9, 16, // tri2 - 13, 16, 17 // tri3 -), -gsSPNTriangles_5b( - 9, 8, 16, // tri0 - 17, 14, 13, // tri1 - 0, 18, 19, // tri2 - 17, 16, 20 // tri3 -), -gsSPNTriangles_5b( - 17, 20, 21, // tri0 - 20, 16, 8, // tri1 - 21, 14, 17, // tri2 - 14, 21, 19 // tri3 -), -gsSPNTriangles_5b( - 14, 19, 18, // tri0 - 15, 14, 18, // tri1 - 11, 4, 22, // tri2 - 15, 18, 0 // tri3 -), -gsSPNTriangles_5b( - 23, 20, 11, // tri0 - 11, 8, 12, // tri1 - 24, 23, 22, // tri2 - 11, 20, 8 // tri3 -), -gsSPNTriangles_5b( - 19, 23, 24, // tri0 - 23, 19, 21, // tri1 - 21, 20, 23, // tri2 - 19, 1, 0 // tri3 -), -gsSPNTriangles_5b( - 5, 4, 11, // tri0 - 22, 23, 11, // tri1 - 24, 1, 19, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&bpt_1_v[46], 27, 0), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 1, 2, // tri0 - 1, 3, 4, // tri1 - 5, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 8, 5, 4, // tri0 - 5, 7, 4, // tri1 - 4, 3, 8, // tri2 - 3, 1, 0 // tri3 -), -gsSPNTriangles_5b( - 9, 7, 6, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 24, // tri count - 10, 11, 12, // tri0 - 13, 14, 10, // tri1 - 10, 15, 16 // tri2 -), -gsSPNTriangles_5b( - 17, 18, 19, // tri0 - 20, 21, 12, // tri1 - 14, 18, 17, // tri2 - 10, 22, 13 // tri3 -), -gsSPNTriangles_5b( - 23, 15, 10, // tri0 - 11, 16, 24, // tri1 - 24, 20, 11, // tri2 - 15, 23, 17 // tri3 -), -gsSPNTriangles_5b( - 13, 18, 14, // tri0 - 11, 20, 12, // tri1 - 24, 25, 21, // tri2 - 13, 19, 18 // tri3 -), -gsSPNTriangles_5b( - 12, 22, 10, // tri0 - 16, 11, 10, // tri1 - 10, 14, 23, // tri2 - 19, 26, 17 // tri3 -), -gsSPNTriangles_5b( - 21, 20, 24, // tri0 - 24, 16, 15, // tri1 - 17, 26, 15, // tri2 - 15, 25, 24 // tri3 -), -gsSPNTriangles_5b( - 17, 23, 14, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&bpt_1_v[73], 24, 0), -gsSPNTrianglesInit_5b( - 14, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 5 // tri2 -), -gsSPNTriangles_5b( - 5, 4, 6, // tri0 - 8, 7, 6, // tri1 - 9, 10, 11, // tri2 - 6, 4, 12 // tri3 -), -gsSPNTriangles_5b( - 5, 13, 3, // tri0 - 9, 14, 10, // tri1 - 2, 15, 0, // tri2 - 11, 1, 9 // tri3 -), -gsSPNTriangles_5b( - 12, 8, 6, // tri0 - 9, 1, 0, // tri1 - 0, 14, 9, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 16, 17, 18, // tri0 - 17, 16, 19, // tri1 - 19, 20, 21 // tri2 -), -gsSPNTriangles_5b( - 22, 19, 16, // tri0 - 20, 19, 22, // tri1 - 23, 21, 20, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsSPVertex(&bpt_1_v[97], 17, 0), -gsSPNTrianglesInit_5b( - 11, // tri count - 0, 1, 2, // tri0 - 3, 4, 2, // tri1 - 0, 2, 5 // tri2 -), -gsSPNTriangles_5b( - 6, 7, 5, // tri0 - 8, 0, 9, // tri1 - 5, 10, 6, // tri2 - 9, 0, 11 // tri3 -), -gsSPNTriangles_5b( - 2, 12, 3, // tri0 - 5, 2, 4, // tri1 - 5, 4, 10, // tri2 - 9, 13, 8 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 1, // tri count - 14, 15, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bpt_1_v[21], 25, 0), + gsSPNTrianglesInit_5b(34, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 6, 5, // tri0 + 8, 9, 10, // tri1 + 11, 12, 5, // tri2 + 5, 12, 10 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 10, 12, 8, // tri1 + 13, 9, 16, // tri2 + 13, 16, 17 // tri3 + ), + gsSPNTriangles_5b(9, 8, 16, // tri0 + 17, 14, 13, // tri1 + 0, 18, 19, // tri2 + 17, 16, 20 // tri3 + ), + gsSPNTriangles_5b(17, 20, 21, // tri0 + 20, 16, 8, // tri1 + 21, 14, 17, // tri2 + 14, 21, 19 // tri3 + ), + gsSPNTriangles_5b(14, 19, 18, // tri0 + 15, 14, 18, // tri1 + 11, 4, 22, // tri2 + 15, 18, 0 // tri3 + ), + gsSPNTriangles_5b(23, 20, 11, // tri0 + 11, 8, 12, // tri1 + 24, 23, 22, // tri2 + 11, 20, 8 // tri3 + ), + gsSPNTriangles_5b(19, 23, 24, // tri0 + 23, 19, 21, // tri1 + 21, 20, 23, // tri2 + 19, 1, 0 // tri3 + ), + gsSPNTriangles_5b(5, 4, 11, // tri0 + 22, 23, 11, // tri1 + 24, 1, 19, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&bpt_1_v[46], 27, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 5, 4, // tri0 + 5, 7, 4, // tri1 + 4, 3, 8, // tri2 + 3, 1, 0 // tri3 + ), + gsSPNTriangles_5b(9, 7, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(24, // tri count + 10, 11, 12, // tri0 + 13, 14, 10, // tri1 + 10, 15, 16 // tri2 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 20, 21, 12, // tri1 + 14, 18, 17, // tri2 + 10, 22, 13 // tri3 + ), + gsSPNTriangles_5b(23, 15, 10, // tri0 + 11, 16, 24, // tri1 + 24, 20, 11, // tri2 + 15, 23, 17 // tri3 + ), + gsSPNTriangles_5b(13, 18, 14, // tri0 + 11, 20, 12, // tri1 + 24, 25, 21, // tri2 + 13, 19, 18 // tri3 + ), + gsSPNTriangles_5b(12, 22, 10, // tri0 + 16, 11, 10, // tri1 + 10, 14, 23, // tri2 + 19, 26, 17 // tri3 + ), + gsSPNTriangles_5b(21, 20, 24, // tri0 + 24, 16, 15, // tri1 + 17, 26, 15, // tri2 + 15, 25, 24 // tri3 + ), + gsSPNTriangles_5b(17, 23, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&bpt_1_v[73], 24, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 5 // tri2 + ), + gsSPNTriangles_5b(5, 4, 6, // tri0 + 8, 7, 6, // tri1 + 9, 10, 11, // tri2 + 6, 4, 12 // tri3 + ), + gsSPNTriangles_5b(5, 13, 3, // tri0 + 9, 14, 10, // tri1 + 2, 15, 0, // tri2 + 11, 1, 9 // tri3 + ), + gsSPNTriangles_5b(12, 8, 6, // tri0 + 9, 1, 0, // tri1 + 0, 14, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 19, 20, 21 // tri2 + ), + gsSPNTriangles_5b(22, 19, 16, // tri0 + 20, 19, 22, // tri1 + 23, 21, 20, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&bpt_1_v[97], 17, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 0, 2, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 5, // tri0 + 8, 0, 9, // tri1 + 5, 10, 6, // tri2 + 9, 0, 11 // tri3 + ), + gsSPNTriangles_5b(2, 12, 3, // tri0 + 5, 2, 4, // tri1 + 5, 4, 10, // tri2 + 9, 13, 8 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(1, // tri count + 14, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx feel_bpt_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 32, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&bpt_1_v[114], 14, 0), -gsSPNTrianglesInit_5b( - 15, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 1 // tri2 -), -gsSPNTriangles_5b( - 8, 5, 4, // tri0 - 9, 1, 7, // tri1 - 4, 10, 9, // tri2 - 7, 11, 9 // tri3 -), -gsSPNTriangles_5b( - 5, 12, 3, // tri0 - 4, 3, 10, // tri1 - 9, 10, 1, // tri2 - 2, 13, 0 // tri3 -), -gsSPNTriangles_5b( - 1, 0, 6, // tri0 - 9, 11, 4, // tri1 - 10, 2, 1, // tri2 - 4, 11, 8 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 32, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bpt_1_v[114], 14, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 1 // tri2 + ), + gsSPNTriangles_5b(8, 5, 4, // tri0 + 9, 1, 7, // tri1 + 4, 10, 9, // tri2 + 7, 11, 9 // tri3 + ), + gsSPNTriangles_5b(5, 12, 3, // tri0 + 4, 3, 10, // tri1 + 9, 10, 1, // tri2 + 2, 13, 0 // tri3 + ), + gsSPNTriangles_5b(1, 0, 6, // tri0 + 9, 11, 4, // tri1 + 10, 2, 1, // tri2 + 4, 11, 8 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx mouth_bpt_model[] = { -gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&bpt_1_v[0], 5, 0), -gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&bpt_1_v[5], 16, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 1, 5, 6, // tri0 - 1, 7, 0, // tri1 - 0, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 3, 4, 10, // tri0 - 4, 12, 11, // tri1 - 2, 13, 14, // tri2 - 3, 15, 2 // tri3 -), -gsSPNTriangles_5b( - 4, 0, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 17, 19, 20, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bpt_1_v[0], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bpt_1_v[5], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 1, 5, 6, // tri0 + 1, 7, 0, // tri1 + 0, 8, 9 // tri2 + ), + gsSPNTriangles_5b(3, 4, 10, // tri0 + 4, 12, 11, // tri1 + 2, 13, 14, // tri2 + 3, 15, 2 // tri3 + ), + gsSPNTriangles_5b(4, 0, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 17, 19, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_bpt_model[] = { -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&bpt_1_v[169], 6, 0), -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&bpt_1_v[175], 22, 6), -gsSPNTrianglesInit_5b( - 4, // tri count - 0, 6, 4, // tri0 - 0, 2, 7, // tri1 - 2, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 4, 10, 11, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 4, // tri count - 5, 3, 12, // tri0 - 3, 13, 14, // tri1 - 1, 5, 15 // tri2 -), -gsSPNTriangles_5b( - 1, 16, 17, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 3, // tri count - 18, 19, 20, // tri0 - 20, 21, 18, // tri1 - 18, 22, 19 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 3, // tri count - 23, 24, 25, // tri0 - 25, 26, 23, // tri1 - 24, 27, 25 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bpt_1_v[169], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bpt_1_v[175], 22, 6), + gsSPNTrianglesInit_5b(4, // tri count + 0, 6, 4, // tri0 + 0, 2, 7, // tri1 + 2, 8, 9 // tri2 + ), + gsSPNTriangles_5b(4, 10, 11, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 5, 3, 12, // tri0 + 3, 13, 14, // tri1 + 1, 5, 15 // tri2 + ), + gsSPNTriangles_5b(1, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 18, 19, 20, // tri0 + 20, 21, 18, // tri1 + 18, 22, 19 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 23, 24, 25, // tri0 + 25, 26, 23, // tri1 + 24, 27, 25 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_bpt_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&bpt_1_v[197], 3, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&bpt_1_v[200], 11, 3), -gsSPNTrianglesInit_5b( - 3, // tri count - 0, 1, 3, // tri0 - 1, 4, 5, // tri1 - 0, 7, 6 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 4, // tri count - 2, 0, 8, // tri0 - 2, 9, 1, // tri1 - 0, 10, 11 // tri2 -), -gsSPNTriangles_5b( - 2, 12, 13, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bpt_1_v[197], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bpt_1_v[200], 11, 3), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 3, // tri0 + 1, 4, 5, // tri1 + 0, 7, 6 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 2, 0, 8, // tri0 + 2, 9, 1, // tri1 + 0, 10, 11 // tri2 + ), + gsSPNTriangles_5b(2, 12, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_bpt_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&bpt_1_v[128], 5, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&bpt_1_v[133], 22, 5), -gsSPNTrianglesInit_5b( - 4, // tri count - 3, 5, 6, // tri0 - 2, 7, 8, // tri1 - 3, 0, 9 // tri2 -), -gsSPNTriangles_5b( - 2, 10, 0, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 4, // tri count - 3, 11, 12, // tri0 - 1, 13, 14, // tri1 - 1, 4, 15 // tri2 -), -gsSPNTriangles_5b( - 4, 3, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 3, // tri count - 17, 18, 19, // tri0 - 18, 20, 19, // tri1 - 19, 21, 17 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 3, // tri count - 22, 23, 24, // tri0 - 22, 24, 25, // tri1 - 25, 26, 22 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bpt_1_v[128], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bpt_1_v[133], 22, 5), + gsSPNTrianglesInit_5b(4, // tri count + 3, 5, 6, // tri0 + 2, 7, 8, // tri1 + 3, 0, 9 // tri2 + ), + gsSPNTriangles_5b(2, 10, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 3, 11, 12, // tri0 + 1, 13, 14, // tri1 + 1, 4, 15 // tri2 + ), + gsSPNTriangles_5b(4, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 17, 18, 19, // tri0 + 18, 20, 19, // tri1 + 19, 21, 17 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 22, 23, 24, // tri0 + 22, 24, 25, // tri1 + 25, 26, 22 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_bpt_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&bpt_1_v[155], 3, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&bpt_1_v[158], 11, 3), -gsSPNTrianglesInit_5b( - 3, // tri count - 0, 4, 3, // tri0 - 1, 5, 6, // tri1 - 1, 0, 7 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 4, // tri count - 1, 8, 2, // tri0 - 2, 9, 10, // tri1 - 0, 2, 11 // tri2 -), -gsSPNTriangles_5b( - 0, 12, 13, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bpt_1_v[155], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bpt_1_v[158], 11, 3), + gsSPNTrianglesInit_5b(3, // tri count + 0, 4, 3, // tri0 + 1, 5, 6, // tri1 + 1, 0, 7 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 1, 8, 2, // tri0 + 2, 9, 10, // tri1 + 0, 2, 11 // tri2 + ), + gsSPNTriangles_5b(0, 12, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_bpt_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&bpt_1_v[211], 7, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&bpt_1_v[218], 23, 7), -gsSPNTrianglesInit_5b( - 15, // tri count - 4, 5, 7, // tri0 - 3, 8, 9, // tri1 - 6, 10, 1 // tri2 -), -gsSPNTriangles_5b( - 1, 11, 12, // tri0 - 1, 14, 13, // tri1 - 0, 15, 16, // tri2 - 6, 0, 17 // tri3 -), -gsSPNTriangles_5b( - 5, 18, 19, // tri0 - 6, 20, 21, // tri1 - 2, 22, 23, // tri2 - 2, 24, 3 // tri3 -), -gsSPNTriangles_5b( - 1, 25, 2, // tri0 - 3, 26, 5, // tri1 - 4, 27, 28, // tri2 - 4, 29, 0 // tri3 -), -gsSPVertex(&bpt_1_v[241], 16, 0), -gsSPNTrianglesInit_5b( - 18, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 0 // tri2 -), -gsSPNTriangles_5b( - 8, 9, 10, // tri0 - 8, 10, 3, // tri1 - 5, 8, 3, // tri2 - 2, 11, 6 // tri3 -), -gsSPNTriangles_5b( - 0, 7, 12, // tri0 - 1, 0, 4, // tri1 - 12, 13, 4, // tri2 - 5, 13, 14 // tri3 -), -gsSPNTriangles_5b( - 0, 2, 6, // tri0 - 12, 4, 0, // tri1 - 8, 15, 9, // tri2 - 10, 9, 11 // tri3 -), -gsSPNTriangles_5b( - 8, 14, 15, // tri0 - 5, 14, 8, // tri1 - 2, 3, 10, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bpt_1_v[211], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bpt_1_v[218], 23, 7), + gsSPNTrianglesInit_5b(15, // tri count + 4, 5, 7, // tri0 + 3, 8, 9, // tri1 + 6, 10, 1 // tri2 + ), + gsSPNTriangles_5b(1, 11, 12, // tri0 + 1, 14, 13, // tri1 + 0, 15, 16, // tri2 + 6, 0, 17 // tri3 + ), + gsSPNTriangles_5b(5, 18, 19, // tri0 + 6, 20, 21, // tri1 + 2, 22, 23, // tri2 + 2, 24, 3 // tri3 + ), + gsSPNTriangles_5b(1, 25, 2, // tri0 + 3, 26, 5, // tri1 + 4, 27, 28, // tri2 + 4, 29, 0 // tri3 + ), + gsSPVertex(&bpt_1_v[241], 16, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 0 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 8, 10, 3, // tri1 + 5, 8, 3, // tri2 + 2, 11, 6 // tri3 + ), + gsSPNTriangles_5b(0, 7, 12, // tri0 + 1, 0, 4, // tri1 + 12, 13, 4, // tri2 + 5, 13, 14 // tri3 + ), + gsSPNTriangles_5b(0, 2, 6, // tri0 + 12, 4, 0, // tri1 + 8, 15, 9, // tri2 + 10, 9, 11 // tri3 + ), + gsSPNTriangles_5b(8, 14, 15, // tri0 + 5, 14, 8, // tri1 + 2, 3, 10, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail1_bpt_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000580, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&bpt_1_v[276], 6, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 2, // tri0 - 3, 0, 4, // tri1 - 2, 1, 3 // tri2 -), -gsSPNTriangles_5b( - 4, 5, 3, // tri0 - 3, 5, 2, // tri1 - 2, 4, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x580, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bpt_1_v[276], 6, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 2, 1, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 3, 5, 2, // tri1 + 2, 4, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail2_bpt_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&bpt_1_v[257], 3, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000580, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&bpt_1_v[260], 16, 3), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 3, 4, // tri0 - 0, 5, 6, // tri1 - 2, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 1, 9, // tri0 - 1, 0, 10, // tri1 - 0, 2, 11, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 9, // tri count - 12, 13, 14, // tri0 - 15, 13, 16, // tri1 - 14, 16, 17 // tri2 -), -gsSPNTriangles_5b( - 16, 13, 12, // tri0 - 12, 17, 16, // tri1 - 16, 14, 15, // tri2 - 15, 14, 13 // tri3 -), -gsSPNTriangles_5b( - 14, 18, 12, // tri0 - 17, 18, 14, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bpt_1_v[257], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x580, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bpt_1_v[260], 16, 3), + gsSPNTrianglesInit_5b(6, // tri count + 0, 3, 4, // tri0 + 0, 5, 6, // tri1 + 2, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 1, 9, // tri0 + 1, 0, 10, // tri1 + 0, 2, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(9, // tri count + 12, 13, 14, // tri0 + 15, 13, 16, // tri1 + 14, 16, 17 // tri2 + ), + gsSPNTriangles_5b(16, 13, 12, // tri0 + 12, 17, 16, // tri1 + 16, 14, 15, // tri2 + 15, 14, 13 // tri3 + ), + gsSPNTriangles_5b(14, 18, 12, // tri0 + 17, 18, 14, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_bpt_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000580, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&bpt_1_v[312], 8, 0), -gsSPNTrianglesInit_5b( - 10, // tri count - 0, 1, 2, // tri0 - 3, 4, 0, // tri1 - 5, 1, 6 // tri2 -), -gsSPNTriangles_5b( - 5, 3, 7, // tri0 - 5, 7, 2, // tri1 - 2, 7, 3, // tri2 - 2, 1, 5 // tri3 -), -gsSPNTriangles_5b( - 5, 4, 3, // tri0 - 5, 6, 4, // tri1 - 2, 3, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x580, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bpt_1_v[312], 8, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 1, 6 // tri2 + ), + gsSPNTriangles_5b(5, 3, 7, // tri0 + 5, 7, 2, // tri1 + 2, 7, 3, // tri2 + 2, 1, 5 // tri3 + ), + gsSPNTriangles_5b(5, 4, 3, // tri0 + 5, 6, 4, // tri1 + 2, 3, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_bpt_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&bpt_1_v[320], 8, 0), -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&bpt_1_v[328], 13, 8), -gsSPNTrianglesInit_5b( - 9, // tri count - 0, 2, 8, // tri0 - 3, 1, 9, // tri1 - 3, 10, 6 // tri2 -), -gsSPNTriangles_5b( - 4, 11, 2, // tri0 - 2, 12, 13, // tri1 - 1, 14, 15, // tri2 - 5, 7, 16 // tri3 -), -gsSPNTriangles_5b( - 7, 17, 18, // tri0 - 5, 19, 20, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bpt_1_v[320], 8, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bpt_1_v[328], 13, 8), + gsSPNTrianglesInit_5b(9, // tri count + 0, 2, 8, // tri0 + 3, 1, 9, // tri1 + 3, 10, 6 // tri2 + ), + gsSPNTriangles_5b(4, 11, 2, // tri0 + 2, 12, 13, // tri1 + 1, 14, 15, // tri2 + 5, 7, 16 // tri3 + ), + gsSPNTriangles_5b(7, 17, 18, // tri0 + 5, 19, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_bpt_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000580, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&bpt_1_v[282], 8, 0), -gsSPNTrianglesInit_5b( - 10, // tri count - 0, 1, 2, // tri0 - 3, 1, 4, // tri1 - 5, 6, 4 // tri2 -), -gsSPNTriangles_5b( - 2, 3, 4, // tri0 - 2, 6, 0, // tri1 - 0, 7, 1, // tri2 - 1, 3, 2 // tri3 -), -gsSPNTriangles_5b( - 4, 6, 2, // tri0 - 1, 7, 4, // tri1 - 7, 5, 4, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x580, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bpt_1_v[282], 8, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 1, 4, // tri1 + 5, 6, 4 // tri2 + ), + gsSPNTriangles_5b(2, 3, 4, // tri0 + 2, 6, 0, // tri1 + 0, 7, 1, // tri2 + 1, 3, 2 // tri3 + ), + gsSPNTriangles_5b(4, 6, 2, // tri0 + 1, 7, 4, // tri1 + 7, 5, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_bpt_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&bpt_1_v[290], 6, 0), -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&bpt_1_v[296], 16, 6), -gsSPNTrianglesInit_5b( - 8, // tri count - 1, 6, 7, // tri0 - 4, 8, 0, // tri1 - 1, 9, 2 // tri2 -), -gsSPNTriangles_5b( - 3, 11, 10, // tri0 - 5, 3, 12, // tri1 - 5, 13, 14, // tri2 - 1, 15, 16 // tri3 -), -gsSPNTriangles_5b( - 0, 18, 17, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 19, 20, 21, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bpt_1_v[290], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bpt_1_v[296], 16, 6), + gsSPNTrianglesInit_5b(8, // tri count + 1, 6, 7, // tri0 + 4, 8, 0, // tri1 + 1, 9, 2 // tri2 + ), + gsSPNTriangles_5b(3, 11, 10, // tri0 + 5, 3, 12, // tri1 + 5, 13, 14, // tri2 + 1, 15, 16 // tri3 + ), + gsSPNTriangles_5b(0, 18, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx base_bpt_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&bpt_1_v[341], 25, 0), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 1, 2, // tri0 - 2, 3, 0, // tri1 - 0, 3, 4 // tri2 -), -gsSPNTriangles_5b( - 5, 6, 7, // tri0 - 2, 1, 6, // tri1 - 2, 6, 5, // tri2 - 4, 8, 0 // tri3 -), -gsSPNTriangles_5b( - 9, 8, 4, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 9, // tri count - 10, 11, 12, // tri0 - 10, 13, 11, // tri1 - 14, 15, 13 // tri2 -), -gsSPNTriangles_5b( - 14, 13, 10, // tri0 - 12, 11, 16, // tri1 - 17, 18, 19, // tri2 - 17, 19, 20 // tri3 -), -gsSPNTriangles_5b( - 21, 22, 23, // tri0 - 23, 24, 21, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bpt_1_v[341], 25, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 0, 3, 4 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 2, 1, 6, // tri1 + 2, 6, 5, // tri2 + 4, 8, 0 // tri3 + ), + gsSPNTriangles_5b(9, 8, 4, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(9, // tri count + 10, 11, 12, // tri0 + 10, 13, 11, // tri1 + 14, 15, 13 // tri2 + ), + gsSPNTriangles_5b(14, 13, 10, // tri0 + 12, 11, 16, // tri1 + 17, 18, 19, // tri2 + 17, 19, 20 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 23, 24, 21, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_bpt_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -797,4 +706,4 @@ static cKF_Joint_R_c cKF_je_r_bpt_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_bpt_1 = { 26, 15, cKF_je_r_bpt_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_bpt_1 = { 26, 15, cKF_je_r_bpt_1_tbl }; diff --git a/src/data/npc/model/mdl/brd_1.c b/src/data/npc/model/mdl/brd_1.c index c0c18063..e3aa839c 100644 --- a/src/data/npc/model/mdl/brd_1.c +++ b/src/data/npc/model/mdl/brd_1.c @@ -6,710 +6,631 @@ static Vtx brd_1_v[] = { }; static Gfx head_brd_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&brd_1_v[12], 21, 0), -gsSPNTrianglesInit_5b( - 10, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 2, 6, 0 // tri2 -), -gsSPNTriangles_5b( - 3, 7, 4, // tri0 - 8, 9, 2, // tri1 - 8, 7, 3, // tri2 - 3, 9, 8 // tri3 -), -gsSPNTriangles_5b( - 1, 10, 2, // tri0 - 3, 11, 9, // tri1 - 9, 11, 2, // tri2 - 0, 0, 0 // tri3 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 2, // tri count - 12, 13, 14, // tri0 - 15, 14, 13, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 2, // tri count - 16, 17, 18, // tri0 - 19, 20, 17, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&brd_1_v[33], 24, 0), -gsSPNTrianglesInit_5b( - 10, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 9, 10, 11, // tri0 - 3, 8, 4, // tri1 - 9, 8, 7, // tri2 - 9, 7, 10 // tri3 -), -gsSPNTriangles_5b( - 5, 4, 12, // tri0 - 13, 10, 7, // tri1 - 4, 8, 9, // tri2 - 0, 0, 0 // tri3 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 14, 15, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 20, 18, 17, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 21, 22, 23, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPVertex(&brd_1_v[57], 29, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 4, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 1, 0, 6 // tri2 -), -gsSPNTriangles_5b( - 7, 8, 9, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 10, 11, 12, // tri0 - 13, 14, 15, // tri1 - 14, 11, 15 // tri2 -), -gsSPNTriangles_5b( - 16, 13, 15, // tri0 - 17, 13, 18, // tri1 - 19, 20, 11, // tri2 - 13, 16, 18 // tri3 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 21, 22, 23, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 2, // tri count - 24, 25, 26, // tri0 - 27, 28, 26, // tri1 - 0, 0, 0 // tri2 -), -gsSPVertex(&brd_1_v[86], 17, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 0, 1, 2, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 3, // tri count - 3, 4, 5, // tri0 - 3, 6, 7, // tri1 - 8, 5, 9 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 3, // tri count - 10, 11, 12, // tri0 - 13, 14, 15, // tri1 - 15, 14, 16 // tri2 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&brd_1_v[12], 21, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 6, 0 // tri2 + ), + gsSPNTriangles_5b(3, 7, 4, // tri0 + 8, 9, 2, // tri1 + 8, 7, 3, // tri2 + 3, 9, 8 // tri3 + ), + gsSPNTriangles_5b(1, 10, 2, // tri0 + 3, 11, 9, // tri1 + 9, 11, 2, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 12, 13, 14, // tri0 + 15, 14, 13, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 19, 20, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&brd_1_v[33], 24, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 3, 8, 4, // tri1 + 9, 8, 7, // tri2 + 9, 7, 10 // tri3 + ), + gsSPNTriangles_5b(5, 4, 12, // tri0 + 13, 10, 7, // tri1 + 4, 8, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 14, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 18, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 21, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPVertex(&brd_1_v[57], 29, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 0, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 10, 11, 12, // tri0 + 13, 14, 15, // tri1 + 14, 11, 15 // tri2 + ), + gsSPNTriangles_5b(16, 13, 15, // tri0 + 17, 13, 18, // tri1 + 19, 20, 11, // tri2 + 13, 16, 18 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 21, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 24, 25, 26, // tri0 + 27, 28, 26, // tri1 + 0, 0, 0 // tri2 + ), + gsSPVertex(&brd_1_v[86], 17, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(3, // tri count + 3, 4, 5, // tri0 + 3, 6, 7, // tri1 + 8, 5, 9 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 10, 11, 12, // tri0 + 13, 14, 15, // tri1 + 15, 14, 16 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx mouth_brd_model[] = { -gsSPMatrix(0x0D000380, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&brd_1_v[0], 5, 0), -gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&brd_1_v[5], 7, 5), -gsSPNTrianglesInit_5b( - 5, // tri count - 3, 1, 5, // tri0 - 4, 7, 6, // tri1 - 3, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 1, 4, 10, // tri0 - 0, 2, 11, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*14, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&brd_1_v[0], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&brd_1_v[5], 7, 5), + gsSPNTrianglesInit_5b(5, // tri count + 3, 1, 5, // tri0 + 4, 7, 6, // tri1 + 3, 9, 8 // tri2 + ), + gsSPNTriangles_5b(1, 4, 10, // tri0 + 0, 2, 11, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_brd_model[] = { -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&brd_1_v[134], 4, 0), -gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&brd_1_v[138], 15, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 1, 3, 6, // tri1 - 3, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 9, 10, // tri0 - 2, 11, 0, // tri1 - 3, 12, 13, // tri2 - 3, 0, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 15, 16, 17, // tri0 - 18, 15, 17, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&brd_1_v[134], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&brd_1_v[138], 15, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 1, 3, 6, // tri1 + 3, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 9, 10, // tri0 + 2, 11, 0, // tri1 + 3, 12, 13, // tri2 + 3, 0, 14 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 15, 16, 17, // tri0 + 18, 15, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_brd_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&brd_1_v[153], 3, 0), -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&brd_1_v[156], 9, 3), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 3, // tri0 - 2, 0, 4, // tri1 - 0, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 1, 7, 8, // tri0 - 1, 2, 9, // tri1 - 2, 10, 11, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&brd_1_v[153], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&brd_1_v[156], 9, 3), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 3, // tri0 + 2, 0, 4, // tri1 + 0, 5, 6 // tri2 + ), + gsSPNTriangles_5b(1, 7, 8, // tri0 + 1, 2, 9, // tri1 + 2, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_brd_model[] = { -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&brd_1_v[103], 4, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&brd_1_v[107], 15, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 3, 1, 6, // tri1 - 3, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 0, 9, 10, // tri0 - 0, 11, 2, // tri1 - 3, 12, 13, // tri2 - 0, 3, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 15, 16, 17, // tri0 - 15, 17, 18, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&brd_1_v[103], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&brd_1_v[107], 15, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 3, 1, 6, // tri1 + 3, 7, 8 // tri2 + ), + gsSPNTriangles_5b(0, 9, 10, // tri0 + 0, 11, 2, // tri1 + 3, 12, 13, // tri2 + 0, 3, 14 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 15, 16, 17, // tri0 + 15, 17, 18, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_brd_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&brd_1_v[122], 3, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&brd_1_v[125], 9, 3), -gsSPNTrianglesInit_5b( - 6, // tri count - 1, 0, 3, // tri0 - 0, 2, 4, // tri1 - 0, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 1, 7, 8, // tri0 - 2, 1, 9, // tri1 - 2, 10, 11, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&brd_1_v[122], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&brd_1_v[125], 9, 3), + gsSPNTrianglesInit_5b(6, // tri count + 1, 0, 3, // tri0 + 0, 2, 4, // tri1 + 0, 5, 6 // tri2 + ), + gsSPNTriangles_5b(1, 7, 8, // tri0 + 2, 1, 9, // tri1 + 2, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_brd_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&brd_1_v[165], 9, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 252, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&brd_1_v[174], 20, 9), -gsSPNTrianglesInit_5b( - 14, // tri count - 0, 9, 10, // tri0 - 8, 11, 12, // tri1 - 1, 0, 13 // tri2 -), -gsSPNTriangles_5b( - 0, 3, 14, // tri0 - 4, 15, 7, // tri1 - 3, 7, 16, // tri2 - 7, 17, 18 // tri3 -), -gsSPNTriangles_5b( - 3, 20, 19, // tri0 - 8, 2, 21, // tri1 - 5, 8, 22, // tri2 - 5, 23, 24 // tri3 -), -gsSPNTriangles_5b( - 6, 26, 25, // tri0 - 6, 5, 27, // tri1 - 4, 6, 28, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&brd_1_v[194], 17, 0), -gsSPNTrianglesInit_5b( - 20, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 3, 6, 4 // tri2 -), -gsSPNTriangles_5b( - 1, 6, 2, // tri0 - 7, 8, 9, // tri1 - 7, 10, 11, // tri2 - 0, 12, 13 // tri3 -), -gsSPNTriangles_5b( - 5, 14, 10, // tri0 - 6, 11, 4, // tri1 - 10, 14, 11, // tri2 - 9, 13, 12 // tri3 -), -gsSPNTriangles_5b( - 5, 15, 3, // tri0 - 9, 12, 7, // tri1 - 11, 8, 7, // tri2 - 2, 16, 0 // tri3 -), -gsSPNTriangles_5b( - 13, 1, 0, // tri0 - 4, 14, 5, // tri1 - 1, 9, 6, // tri2 - 8, 6, 9 // tri3 -), -gsSPNTriangles_5b( - 8, 11, 6, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&brd_1_v[165], 9, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&brd_1_v[174], 20, 9), + gsSPNTrianglesInit_5b(14, // tri count + 0, 9, 10, // tri0 + 8, 11, 12, // tri1 + 1, 0, 13 // tri2 + ), + gsSPNTriangles_5b(0, 3, 14, // tri0 + 4, 15, 7, // tri1 + 3, 7, 16, // tri2 + 7, 17, 18 // tri3 + ), + gsSPNTriangles_5b(3, 20, 19, // tri0 + 8, 2, 21, // tri1 + 5, 8, 22, // tri2 + 5, 23, 24 // tri3 + ), + gsSPNTriangles_5b(6, 26, 25, // tri0 + 6, 5, 27, // tri1 + 4, 6, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&brd_1_v[194], 17, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(1, 6, 2, // tri0 + 7, 8, 9, // tri1 + 7, 10, 11, // tri2 + 0, 12, 13 // tri3 + ), + gsSPNTriangles_5b(5, 14, 10, // tri0 + 6, 11, 4, // tri1 + 10, 14, 11, // tri2 + 9, 13, 12 // tri3 + ), + gsSPNTriangles_5b(5, 15, 3, // tri0 + 9, 12, 7, // tri1 + 11, 8, 7, // tri2 + 2, 16, 0 // tri3 + ), + gsSPNTriangles_5b(13, 1, 0, // tri0 + 4, 14, 5, // tri1 + 1, 9, 6, // tri2 + 8, 6, 9 // tri3 + ), + gsSPNTriangles_5b(8, 11, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail1_brd_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&brd_1_v[211], 5, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&brd_1_v[216], 15, 5), -gsSPNTrianglesInit_5b( - 3, // tri count - 1, 2, 5, // tri0 - 2, 0, 6, // tri1 - 1, 7, 8 // tri2 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 3, 1, 4, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 0, 4, 9, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 4, 1, 10, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 4, 0, 3, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 0, 11, 12, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPNTrianglesInit_5b( - 6, // tri count - 13, 14, 15, // tri0 - 15, 14, 16, // tri1 - 15, 17, 13 // tri2 -), -gsSPNTriangles_5b( - 15, 18, 19, // tri0 - 16, 18, 15, // tri1 - 19, 17, 15, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&brd_1_v[211], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&brd_1_v[216], 15, 5), + gsSPNTrianglesInit_5b(3, // tri count + 1, 2, 5, // tri0 + 2, 0, 6, // tri1 + 1, 7, 8 // tri2 + ), + gsSPNTrianglesInit_5b(1, // tri count + 3, 1, 4, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 0, 4, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 4, 1, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 4, 0, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 0, 11, 12, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPNTrianglesInit_5b(6, // tri count + 13, 14, 15, // tri0 + 15, 14, 16, // tri1 + 15, 17, 13 // tri2 + ), + gsSPNTriangles_5b(15, 18, 19, // tri0 + 16, 18, 15, // tri1 + 19, 17, 15, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot3_brd_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&brd_1_v[281], 4, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&brd_1_v[285], 20, 4), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 3, 4, // tri0 - 1, 0, 5, // tri1 - 3, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 2, 8, 9, // tri0 - 2, 10, 3, // tri1 - 1, 11, 12, // tri2 - 0, 0, 0 // tri3 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 6, // tri count - 13, 14, 15, // tri0 - 13, 16, 14, // tri1 - 13, 17, 18 // tri2 -), -gsSPNTriangles_5b( - 13, 19, 17, // tri0 - 15, 19, 13, // tri1 - 18, 20, 13, // tri2 - 0, 0, 0 // tri3 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 21, 22, 23, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&brd_1_v[281], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&brd_1_v[285], 20, 4), + gsSPNTrianglesInit_5b(6, // tri count + 0, 3, 4, // tri0 + 1, 0, 5, // tri1 + 3, 6, 7 // tri2 + ), + gsSPNTriangles_5b(2, 8, 9, // tri0 + 2, 10, 3, // tri1 + 1, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(6, // tri count + 13, 14, 15, // tri0 + 13, 16, 14, // tri1 + 13, 17, 18 // tri2 + ), + gsSPNTriangles_5b(13, 19, 17, // tri0 + 15, 19, 13, // tri1 + 18, 20, 13, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 21, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_brd_model[] = { -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&brd_1_v[305], 4, 0), -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&brd_1_v[309], 14, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 1, 6, 7, // tri1 - 3, 0, 8 // tri2 -), -gsSPNTriangles_5b( - 0, 2, 9, // tri0 - 2, 10, 11, // tri1 - 1, 3, 12, // tri2 - 3, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 15, 16, 17, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&brd_1_v[305], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&brd_1_v[309], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 1, 6, 7, // tri1 + 3, 0, 8 // tri2 + ), + gsSPNTriangles_5b(0, 2, 9, // tri0 + 2, 10, 11, // tri1 + 1, 3, 12, // tri2 + 3, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_brd_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&brd_1_v[323], 8, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 2, // tri0 - 1, 0, 3, // tri1 - 2, 4, 0 // tri2 -), -gsSPNTriangles_5b( - 5, 6, 4, // tri0 - 5, 4, 2, // tri1 - 3, 7, 1, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&brd_1_v[323], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 1, 0, 3, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(5, 6, 4, // tri0 + 5, 4, 2, // tri1 + 3, 7, 1, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot3_brd_model[] = { -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&brd_1_v[231], 4, 0), -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&brd_1_v[235], 20, 4), -gsSPNTrianglesInit_5b( - 6, // tri count - 3, 0, 4, // tri0 - 0, 1, 5, // tri1 - 3, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 3, 8, 9, // tri0 - 3, 10, 2, // tri1 - 1, 11, 12, // tri2 - 0, 0, 0 // tri3 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 6, // tri count - 13, 14, 15, // tri0 - 14, 16, 15, // tri1 - 17, 18, 15 // tri2 -), -gsSPNTriangles_5b( - 18, 19, 15, // tri0 - 15, 19, 13, // tri1 - 15, 20, 17, // tri2 - 0, 0, 0 // tri3 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 21, 22, 23, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&brd_1_v[231], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&brd_1_v[235], 20, 4), + gsSPNTrianglesInit_5b(6, // tri count + 3, 0, 4, // tri0 + 0, 1, 5, // tri1 + 3, 6, 7 // tri2 + ), + gsSPNTriangles_5b(3, 8, 9, // tri0 + 3, 10, 2, // tri1 + 1, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(6, // tri count + 13, 14, 15, // tri0 + 14, 16, 15, // tri1 + 17, 18, 15 // tri2 + ), + gsSPNTriangles_5b(18, 19, 15, // tri0 + 15, 19, 13, // tri1 + 15, 20, 17, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 21, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_brd_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&brd_1_v[255], 4, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&brd_1_v[259], 14, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 1, 6, 7, // tri1 - 0, 3, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 0, 9, // tri0 - 2, 10, 11, // tri1 - 3, 1, 12, // tri2 - 3, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 15, 16, 17, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&brd_1_v[255], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&brd_1_v[259], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 1, 6, 7, // tri1 + 0, 3, 8 // tri2 + ), + gsSPNTriangles_5b(2, 0, 9, // tri0 + 2, 10, 11, // tri1 + 3, 1, 12, // tri2 + 3, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_brd_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&brd_1_v[273], 8, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 2, // tri0 - 3, 2, 1, // tri1 - 2, 4, 0 // tri2 -), -gsSPNTriangles_5b( - 0, 4, 5, // tri0 - 0, 5, 6, // tri1 - 1, 7, 3, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&brd_1_v[273], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(0, 4, 5, // tri0 + 0, 5, 6, // tri1 + 1, 7, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx base_brd_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&brd_1_v[331], 21, 0), -gsSPNTrianglesInit_5b( - 28, // tri count - 0, 1, 2, // tri0 - 3, 0, 4, // tri1 - 2, 1, 5 // tri2 -), -gsSPNTriangles_5b( - 4, 0, 2, // tri0 - 1, 6, 7, // tri1 - 8, 3, 9, // tri2 - 8, 9, 10 // tri3 -), -gsSPNTriangles_5b( - 10, 9, 11, // tri0 - 12, 5, 7, // tri1 - 9, 3, 4, // tri2 - 13, 14, 15 // tri3 -), -gsSPNTriangles_5b( - 10, 11, 14, // tri0 - 13, 15, 16, // tri1 - 14, 11, 15, // tri2 - 13, 16, 17 // tri3 -), -gsSPNTriangles_5b( - 17, 16, 18, // tri0 - 1, 0, 19, // tri1 - 1, 19, 6, // tri2 - 19, 0, 20 // tri3 -), -gsSPNTriangles_5b( - 6, 19, 13, // tri0 - 13, 19, 20, // tri1 - 20, 3, 8, // tri2 - 8, 10, 20 // tri3 -), -gsSPNTriangles_5b( - 0, 3, 20, // tri0 - 13, 20, 14, // tri1 - 10, 14, 20, // tri2 - 7, 5, 1 // tri3 -), -gsSPNTriangles_5b( - 17, 6, 13, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&brd_1_v[331], 21, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 2, 1, 5 // tri2 + ), + gsSPNTriangles_5b(4, 0, 2, // tri0 + 1, 6, 7, // tri1 + 8, 3, 9, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(10, 9, 11, // tri0 + 12, 5, 7, // tri1 + 9, 3, 4, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(10, 11, 14, // tri0 + 13, 15, 16, // tri1 + 14, 11, 15, // tri2 + 13, 16, 17 // tri3 + ), + gsSPNTriangles_5b(17, 16, 18, // tri0 + 1, 0, 19, // tri1 + 1, 19, 6, // tri2 + 19, 0, 20 // tri3 + ), + gsSPNTriangles_5b(6, 19, 13, // tri0 + 13, 19, 20, // tri1 + 20, 3, 8, // tri2 + 8, 10, 20 // tri3 + ), + gsSPNTriangles_5b(0, 3, 20, // tri0 + 13, 20, 14, // tri1 + 10, 14, 20, // tri2 + 7, 5, 1 // tri3 + ), + gsSPNTriangles_5b(17, 6, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_brd_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -741,4 +662,4 @@ static cKF_Joint_R_c cKF_je_r_brd_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_brd_1 = { 26, 15, cKF_je_r_brd_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_brd_1 = { 26, 15, cKF_je_r_brd_1_tbl }; diff --git a/src/data/npc/model/mdl/bul_1.c b/src/data/npc/model/mdl/bul_1.c index 911644de..eae818d6 100644 --- a/src/data/npc/model/mdl/bul_1.c +++ b/src/data/npc/model/mdl/bul_1.c @@ -6,707 +6,622 @@ static Vtx bul_1_v[] = { }; static Gfx head_bul_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&bul_1_v[0], 19, 0), -gsSPNTrianglesInit_5b( - 24, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 5, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 8, 9, 10, // tri0 - 11, 12, 13, // tri1 - 3, 7, 9, // tri2 - 14, 15, 2 // tri3 -), -gsSPNTriangles_5b( - 16, 15, 10, // tri0 - 8, 3, 9, // tri1 - 5, 7, 3, // tri2 - 8, 14, 17 // tri3 -), -gsSPNTriangles_5b( - 14, 8, 15, // tri0 - 17, 5, 4, // tri1 - 8, 4, 3, // tri2 - 10, 15, 8 // tri3 -), -gsSPNTriangles_5b( - 0, 18, 1, // tri0 - 1, 14, 2, // tri1 - 13, 12, 5, // tri2 - 13, 5, 17 // tri3 -), -gsSPNTriangles_5b( - 17, 4, 8, // tri0 - 13, 17, 14, // tri1 - 11, 13, 1, // tri2 - 1, 18, 11 // tri3 -), -gsSPNTriangles_5b( - 14, 1, 13, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&bul_1_v[19], 27, 0), -gsSPNTrianglesInit_5b( - 24, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 3 // tri2 -), -gsSPNTriangles_5b( - 8, 9, 10, // tri0 - 11, 12, 13, // tri1 - 9, 6, 5, // tri2 - 0, 14, 15 // tri3 -), -gsSPNTriangles_5b( - 8, 14, 16, // tri0 - 9, 5, 10, // tri1 - 5, 6, 3, // tri2 - 17, 15, 10 // tri3 -), -gsSPNTriangles_5b( - 14, 10, 15, // tri0 - 4, 3, 17, // tri1 - 5, 4, 10, // tri2 - 10, 14, 8 // tri3 -), -gsSPNTriangles_5b( - 1, 18, 2, // tri0 - 0, 15, 1, // tri1 - 17, 3, 12, // tri2 - 17, 12, 11 // tri3 -), -gsSPNTriangles_5b( - 10, 4, 17, // tri0 - 15, 17, 11, // tri1 - 1, 11, 13, // tri2 - 13, 18, 1 // tri3 -), -gsSPNTriangles_5b( - 11, 1, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 5, // tri count - 19, 20, 21, // tri0 - 22, 23, 24, // tri1 - 21, 25, 19 // tri2 -), -gsSPNTriangles_5b( - 26, 22, 24, // tri0 - 24, 25, 26, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPSetPrimColor(0, 128, 253, 255, 255, 255), -gsSPVertex(&bul_1_v[46], 21, 0), -gsSPNTrianglesInit_5b( - 5, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 5, 0, 3 // tri2 -), -gsSPNTriangles_5b( - 1, 6, 2, // tri0 - 1, 7, 6, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPNTrianglesInit_5b( - 14, // tri count - 8, 9, 10, // tri0 - 9, 8, 11, // tri1 - 12, 11, 8 // tri2 -), -gsSPNTriangles_5b( - 13, 14, 15, // tri0 - 16, 10, 9, // tri1 - 10, 14, 8, // tri2 - 17, 13, 18 // tri3 -), -gsSPNTriangles_5b( - 15, 18, 13, // tri0 - 14, 13, 19, // tri1 - 13, 17, 12, // tri2 - 19, 8, 14 // tri3 -), -gsSPNTriangles_5b( - 18, 15, 20, // tri0 - 12, 19, 13, // tri1 - 8, 19, 12, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&bul_1_v[67], 26, 0), -gsSPNTrianglesInit_5b( - 36, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 9, 3, 10, // tri0 - 10, 11, 12, // tri1 - 8, 7, 13, // tri2 - 9, 12, 14 // tri3 -), -gsSPNTriangles_5b( - 15, 14, 16, // tri0 - 12, 17, 14, // tri1 - 14, 17, 16, // tri2 - 16, 18, 15 // tri3 -), -gsSPNTriangles_5b( - 18, 19, 7, // tri0 - 6, 15, 18, // tri1 - 20, 9, 15, // tri2 - 14, 15, 9 // tri3 -), -gsSPNTriangles_5b( - 18, 7, 6, // tri0 - 21, 1, 22, // tri1 - 21, 4, 3, // tri2 - 3, 9, 20 // tri3 -), -gsSPNTriangles_5b( - 15, 6, 20, // tri0 - 10, 12, 9, // tri1 - 20, 23, 3, // tri2 - 2, 23, 20 // tri3 -), -gsSPNTriangles_5b( - 8, 2, 6, // tri0 - 5, 24, 10, // tri1 - 16, 19, 18, // tri2 - 22, 1, 0 // tri3 -), -gsSPNTriangles_5b( - 5, 4, 22, // tri0 - 8, 25, 0, // tri1 - 2, 1, 21, // tri2 - 5, 10, 3 // tri3 -), -gsSPNTriangles_5b( - 3, 23, 21, // tri0 - 21, 23, 2, // tri1 - 2, 8, 0, // tri2 - 20, 6, 2 // tri3 -), -gsSPNTriangles_5b( - 22, 4, 21, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&bul_1_v[93], 26, 0), -gsSPNTrianglesInit_5b( - 14, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 4, 7 // tri2 -), -gsSPNTriangles_5b( - 3, 8, 4, // tri0 - 9, 10, 11, // tri1 - 2, 6, 7, // tri2 - 1, 6, 2 // tri3 -), -gsSPNTriangles_5b( - 9, 3, 10, // tri0 - 8, 3, 9, // tri1 - 5, 4, 6, // tri2 - 4, 8, 12 // tri3 -), -gsSPNTriangles_5b( - 12, 7, 4, // tri0 - 5, 10, 3, // tri1 - 6, 1, 5, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 14, // tri count - 13, 14, 15, // tri0 - 16, 17, 14, // tri1 - 18, 19, 20 // tri2 -), -gsSPNTriangles_5b( - 21, 22, 15, // tri0 - 23, 21, 14, // tri1 - 23, 14, 17, // tri2 - 15, 14, 21 // tri3 -), -gsSPNTriangles_5b( - 20, 23, 17, // tri0 - 20, 17, 24, // tri1 - 20, 24, 18, // tri2 - 16, 14, 13 // tri3 -), -gsSPNTriangles_5b( - 16, 24, 17, // tri0 - 25, 24, 16, // tri1 - 18, 24, 25, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bul_1_v[0], 19, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 3, 7, 9, // tri2 + 14, 15, 2 // tri3 + ), + gsSPNTriangles_5b(16, 15, 10, // tri0 + 8, 3, 9, // tri1 + 5, 7, 3, // tri2 + 8, 14, 17 // tri3 + ), + gsSPNTriangles_5b(14, 8, 15, // tri0 + 17, 5, 4, // tri1 + 8, 4, 3, // tri2 + 10, 15, 8 // tri3 + ), + gsSPNTriangles_5b(0, 18, 1, // tri0 + 1, 14, 2, // tri1 + 13, 12, 5, // tri2 + 13, 5, 17 // tri3 + ), + gsSPNTriangles_5b(17, 4, 8, // tri0 + 13, 17, 14, // tri1 + 11, 13, 1, // tri2 + 1, 18, 11 // tri3 + ), + gsSPNTriangles_5b(14, 1, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&bul_1_v[19], 27, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 3 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 9, 6, 5, // tri2 + 0, 14, 15 // tri3 + ), + gsSPNTriangles_5b(8, 14, 16, // tri0 + 9, 5, 10, // tri1 + 5, 6, 3, // tri2 + 17, 15, 10 // tri3 + ), + gsSPNTriangles_5b(14, 10, 15, // tri0 + 4, 3, 17, // tri1 + 5, 4, 10, // tri2 + 10, 14, 8 // tri3 + ), + gsSPNTriangles_5b(1, 18, 2, // tri0 + 0, 15, 1, // tri1 + 17, 3, 12, // tri2 + 17, 12, 11 // tri3 + ), + gsSPNTriangles_5b(10, 4, 17, // tri0 + 15, 17, 11, // tri1 + 1, 11, 13, // tri2 + 13, 18, 1 // tri3 + ), + gsSPNTriangles_5b(11, 1, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(5, // tri count + 19, 20, 21, // tri0 + 22, 23, 24, // tri1 + 21, 25, 19 // tri2 + ), + gsSPNTriangles_5b(26, 22, 24, // tri0 + 24, 25, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetPrimColor(0, 128, 253, 255, 255, 255), + gsSPVertex(&bul_1_v[46], 21, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 0, 3 // tri2 + ), + gsSPNTriangles_5b(1, 6, 2, // tri0 + 1, 7, 6, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPNTrianglesInit_5b(14, // tri count + 8, 9, 10, // tri0 + 9, 8, 11, // tri1 + 12, 11, 8 // tri2 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 16, 10, 9, // tri1 + 10, 14, 8, // tri2 + 17, 13, 18 // tri3 + ), + gsSPNTriangles_5b(15, 18, 13, // tri0 + 14, 13, 19, // tri1 + 13, 17, 12, // tri2 + 19, 8, 14 // tri3 + ), + gsSPNTriangles_5b(18, 15, 20, // tri0 + 12, 19, 13, // tri1 + 8, 19, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&bul_1_v[67], 26, 0), + gsSPNTrianglesInit_5b(36, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 3, 10, // tri0 + 10, 11, 12, // tri1 + 8, 7, 13, // tri2 + 9, 12, 14 // tri3 + ), + gsSPNTriangles_5b(15, 14, 16, // tri0 + 12, 17, 14, // tri1 + 14, 17, 16, // tri2 + 16, 18, 15 // tri3 + ), + gsSPNTriangles_5b(18, 19, 7, // tri0 + 6, 15, 18, // tri1 + 20, 9, 15, // tri2 + 14, 15, 9 // tri3 + ), + gsSPNTriangles_5b(18, 7, 6, // tri0 + 21, 1, 22, // tri1 + 21, 4, 3, // tri2 + 3, 9, 20 // tri3 + ), + gsSPNTriangles_5b(15, 6, 20, // tri0 + 10, 12, 9, // tri1 + 20, 23, 3, // tri2 + 2, 23, 20 // tri3 + ), + gsSPNTriangles_5b(8, 2, 6, // tri0 + 5, 24, 10, // tri1 + 16, 19, 18, // tri2 + 22, 1, 0 // tri3 + ), + gsSPNTriangles_5b(5, 4, 22, // tri0 + 8, 25, 0, // tri1 + 2, 1, 21, // tri2 + 5, 10, 3 // tri3 + ), + gsSPNTriangles_5b(3, 23, 21, // tri0 + 21, 23, 2, // tri1 + 2, 8, 0, // tri2 + 20, 6, 2 // tri3 + ), + gsSPNTriangles_5b(22, 4, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&bul_1_v[93], 26, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 4, 7 // tri2 + ), + gsSPNTriangles_5b(3, 8, 4, // tri0 + 9, 10, 11, // tri1 + 2, 6, 7, // tri2 + 1, 6, 2 // tri3 + ), + gsSPNTriangles_5b(9, 3, 10, // tri0 + 8, 3, 9, // tri1 + 5, 4, 6, // tri2 + 4, 8, 12 // tri3 + ), + gsSPNTriangles_5b(12, 7, 4, // tri0 + 5, 10, 3, // tri1 + 6, 1, 5, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(14, // tri count + 13, 14, 15, // tri0 + 16, 17, 14, // tri1 + 18, 19, 20 // tri2 + ), + gsSPNTriangles_5b(21, 22, 15, // tri0 + 23, 21, 14, // tri1 + 23, 14, 17, // tri2 + 15, 14, 21 // tri3 + ), + gsSPNTriangles_5b(20, 23, 17, // tri0 + 20, 17, 24, // tri1 + 20, 24, 18, // tri2 + 16, 14, 13 // tri3 + ), + gsSPNTriangles_5b(16, 24, 17, // tri0 + 25, 24, 16, // tri1 + 18, 24, 25, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_bul_model[] = { -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&bul_1_v[155], 5, 0), -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&bul_1_v[160], 16, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 5, 6, // tri0 - 4, 7, 8, // tri1 - 4, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 0, 1, 11, // tri0 - 2, 4, 12, // tri1 - 0, 13, 14, // tri2 - 3, 0, 15 // tri3 -), -gsSPNTriangles_5b( - 4, 3, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 20, 19, 18, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bul_1_v[155], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bul_1_v[160], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(0, 1, 11, // tri0 + 2, 4, 12, // tri1 + 0, 13, 14, // tri2 + 3, 0, 15 // tri3 + ), + gsSPNTriangles_5b(4, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 19, 18, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_bul_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&bul_1_v[176], 4, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&bul_1_v[180], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 0, 6, 7, // tri1 - 2, 0, 8 // tri2 -), -gsSPNTriangles_5b( - 3, 2, 9, // tri0 - 2, 11, 10, // tri1 - 3, 13, 12, // tri2 - 1, 3, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bul_1_v[176], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bul_1_v[180], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 2, 0, 8 // tri2 + ), + gsSPNTriangles_5b(3, 2, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 1, 3, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_bul_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&bul_1_v[119], 5, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&bul_1_v[124], 16, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 5, 6, // tri0 - 4, 7, 8, // tri1 - 4, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 11, // tri0 - 4, 2, 12, // tri1 - 0, 13, 14, // tri2 - 0, 3, 15 // tri3 -), -gsSPNTriangles_5b( - 3, 4, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 18, 17, 20, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bul_1_v[119], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bul_1_v[124], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 + ), + gsSPNTriangles_5b(3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_bul_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&bul_1_v[140], 4, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&bul_1_v[144], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 0, 6, 7, // tri1 - 0, 2, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 3, 9, // tri0 - 2, 11, 10, // tri1 - 3, 13, 12, // tri2 - 3, 1, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bul_1_v[140], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bul_1_v[144], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 + ), + gsSPNTriangles_5b(2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_bul_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&bul_1_v[191], 7, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&bul_1_v[198], 20, 7), -gsSPNTrianglesInit_5b( - 13, // tri count - 0, 2, 7, // tri0 - 6, 8, 9, // tri1 - 0, 10, 11 // tri2 -), -gsSPNTriangles_5b( - 1, 12, 5, // tri0 - 1, 13, 14, // tri1 - 2, 16, 15, // tri2 - 5, 17, 18 // tri3 -), -gsSPNTriangles_5b( - 5, 19, 20, // tri0 - 2, 21, 22, // tri1 - 6, 0, 23, // tri2 - 1, 6, 24 // tri3 -), -gsSPNTriangles_5b( - 3, 5, 25, // tri0 - 4, 26, 2, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&bul_1_v[218], 10, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 0, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 5, 4, 8, // tri0 - 2, 6, 0, // tri1 - 1, 9, 2, // tri2 - 7, 4, 3 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bul_1_v[191], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bul_1_v[198], 20, 7), + gsSPNTrianglesInit_5b(13, // tri count + 0, 2, 7, // tri0 + 6, 8, 9, // tri1 + 0, 10, 11 // tri2 + ), + gsSPNTriangles_5b(1, 12, 5, // tri0 + 1, 13, 14, // tri1 + 2, 16, 15, // tri2 + 5, 17, 18 // tri3 + ), + gsSPNTriangles_5b(5, 19, 20, // tri0 + 2, 21, 22, // tri1 + 6, 0, 23, // tri2 + 1, 6, 24 // tri3 + ), + gsSPNTriangles_5b(3, 5, 25, // tri0 + 4, 26, 2, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&bul_1_v[218], 10, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 7 // tri2 + ), + gsSPNTriangles_5b(5, 4, 8, // tri0 + 2, 6, 0, // tri1 + 1, 9, 2, // tri2 + 7, 4, 3 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail1_bul_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&bul_1_v[242], 8, 0), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 1, 0, 4 // tri2 -), -gsSPNTriangles_5b( - 4, 3, 1, // tri0 - 0, 2, 6, // tri1 - 7, 5, 6, // tri2 - 6, 2, 7 // tri3 -), -gsSPNTriangles_5b( - 5, 7, 3, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bul_1_v[242], 8, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 0, 4 // tri2 + ), + gsSPNTriangles_5b(4, 3, 1, // tri0 + 0, 2, 6, // tri1 + 7, 5, 6, // tri2 + 6, 2, 7 // tri3 + ), + gsSPNTriangles_5b(5, 7, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail2_bul_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&bul_1_v[228], 4, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&bul_1_v[232], 10, 4), -gsSPNTrianglesInit_5b( - 4, // tri count - 2, 1, 4, // tri0 - 3, 2, 5, // tri1 - 0, 3, 6 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 7, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 8, // tri count - 8, 9, 10, // tri0 - 11, 9, 12, // tri1 - 12, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 10, 9, 11, // tri0 - 10, 11, 13, // tri1 - 13, 11, 12, // tri2 - 13, 8, 10 // tri3 -), -gsSPNTriangles_5b( - 12, 8, 13, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bul_1_v[228], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bul_1_v[232], 10, 4), + gsSPNTrianglesInit_5b(4, // tri count + 2, 1, 4, // tri0 + 3, 2, 5, // tri1 + 0, 3, 6 // tri2 + ), + gsSPNTriangles_5b(1, 0, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(8, // tri count + 8, 9, 10, // tri0 + 11, 9, 12, // tri1 + 12, 9, 8 // tri2 + ), + gsSPNTriangles_5b(10, 9, 11, // tri0 + 10, 11, 13, // tri1 + 13, 11, 12, // tri2 + 13, 8, 10 // tri3 + ), + gsSPNTriangles_5b(12, 8, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_bul_model[] = { -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&bul_1_v[290], 5, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&bul_1_v[295], 16, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 2, 3, 5, // tri0 - 0, 2, 6, // tri1 - 3, 8, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 10, 9, // tri0 - 4, 1, 11, // tri1 - 2, 12, 13, // tri2 - 3, 4, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 15, 16, 17, // tri0 - 17, 18, 19, // tri1 - 15, 20, 16 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bul_1_v[290], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bul_1_v[295], 16, 5), + gsSPNTrianglesInit_5b(7, // tri count + 2, 3, 5, // tri0 + 0, 2, 6, // tri1 + 3, 8, 7 // tri2 + ), + gsSPNTriangles_5b(1, 10, 9, // tri0 + 4, 1, 11, // tri1 + 2, 12, 13, // tri2 + 3, 4, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 17, 18, 19, // tri1 + 15, 20, 16 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_bul_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&bul_1_v[311], 6, 0), -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&bul_1_v[317], 13, 6), -gsSPNTrianglesInit_5b( - 9, // tri count - 0, 6, 7, // tri0 - 2, 5, 8, // tri1 - 5, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 5, 1, 11, // tri0 - 0, 3, 12, // tri1 - 4, 2, 13, // tri2 - 3, 4, 14 // tri3 -), -gsSPNTriangles_5b( - 3, 15, 16, // tri0 - 2, 17, 18, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bul_1_v[311], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bul_1_v[317], 13, 6), + gsSPNTrianglesInit_5b(9, // tri count + 0, 6, 7, // tri0 + 2, 5, 8, // tri1 + 5, 9, 10 // tri2 + ), + gsSPNTriangles_5b(5, 1, 11, // tri0 + 0, 3, 12, // tri1 + 4, 2, 13, // tri2 + 3, 4, 14 // tri3 + ), + gsSPNTriangles_5b(3, 15, 16, // tri0 + 2, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_bul_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&bul_1_v[250], 5, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&bul_1_v[255], 16, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 2, 5, // tri0 - 2, 0, 6, // tri1 - 3, 8, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 10, 9, // tri0 - 1, 4, 11, // tri1 - 2, 12, 13, // tri2 - 4, 3, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 15, 16, 17, // tri0 - 18, 19, 15, // tri1 - 16, 20, 17 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bul_1_v[250], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bul_1_v[255], 16, 5), + gsSPNTrianglesInit_5b(7, // tri count + 3, 2, 5, // tri0 + 2, 0, 6, // tri1 + 3, 8, 7 // tri2 + ), + gsSPNTriangles_5b(1, 10, 9, // tri0 + 1, 4, 11, // tri1 + 2, 12, 13, // tri2 + 4, 3, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 15, // tri1 + 16, 20, 17 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_bul_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&bul_1_v[271], 6, 0), -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&bul_1_v[277], 13, 6), -gsSPNTrianglesInit_5b( - 9, // tri count - 4, 6, 7, // tri0 - 3, 1, 8, // tri1 - 3, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 5, 3, 11, // tri0 - 2, 4, 12, // tri1 - 1, 0, 13, // tri2 - 0, 2, 14 // tri3 -), -gsSPNTriangles_5b( - 2, 15, 16, // tri0 - 1, 17, 18, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bul_1_v[271], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bul_1_v[277], 13, 6), + gsSPNTrianglesInit_5b(9, // tri count + 4, 6, 7, // tri0 + 3, 1, 8, // tri1 + 3, 9, 10 // tri2 + ), + gsSPNTriangles_5b(5, 3, 11, // tri0 + 2, 4, 12, // tri1 + 1, 0, 13, // tri2 + 0, 2, 14 // tri3 + ), + gsSPNTriangles_5b(2, 15, 16, // tri0 + 1, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx base_bul_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&bul_1_v[330], 30, 0), -gsSPNTrianglesInit_5b( - 3, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 2, 1, 6 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), -gsSPNTrianglesInit_5b( - 14, // tri count - 7, 8, 9, // tri0 - 10, 11, 12, // tri1 - 13, 14, 15 // tri2 -), -gsSPNTriangles_5b( - 16, 17, 18, // tri0 - 9, 19, 7, // tri1 - 20, 11, 21, // tri2 - 20, 21, 17 // tri3 -), -gsSPNTriangles_5b( - 12, 15, 14, // tri0 - 11, 20, 12, // tri1 - 8, 7, 13, // tri2 - 13, 15, 8 // tri3 -), -gsSPNTriangles_5b( - 21, 18, 17, // tri0 - 14, 10, 12, // tri1 - 18, 22, 16, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 3, // tri count - 23, 24, 25, // tri0 - 26, 27, 28, // tri1 - 29, 24, 23 // tri2 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bul_1_v[330], 30, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 1, 6 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPNTrianglesInit_5b(14, // tri count + 7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 13, 14, 15 // tri2 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 9, 19, 7, // tri1 + 20, 11, 21, // tri2 + 20, 21, 17 // tri3 + ), + gsSPNTriangles_5b(12, 15, 14, // tri0 + 11, 20, 12, // tri1 + 8, 7, 13, // tri2 + 13, 15, 8 // tri3 + ), + gsSPNTriangles_5b(21, 18, 17, // tri0 + 14, 10, 12, // tri1 + 18, 22, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 23, 24, 25, // tri0 + 26, 27, 28, // tri1 + 29, 24, 23 // tri2 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_bul_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -738,4 +653,4 @@ static cKF_Joint_R_c cKF_je_r_bul_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_bul_1 = { 26, 13, cKF_je_r_bul_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_bul_1 = { 26, 13, cKF_je_r_bul_1_tbl }; diff --git a/src/data/npc/model/mdl/cat_1.c b/src/data/npc/model/mdl/cat_1.c index a5fb7382..75edea65 100644 --- a/src/data/npc/model/mdl/cat_1.c +++ b/src/data/npc/model/mdl/cat_1.c @@ -6,617 +6,548 @@ static Vtx cat_1_v[] = { }; static Gfx head_cat_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&cat_1_v[0], 6, 0), -gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&cat_1_v[6], 13, 6), -gsSPNTrianglesInit_5b( - 9, // tri count - 1, 0, 6, // tri0 - 1, 7, 8, // tri1 - 3, 1, 9 // tri2 -), -gsSPNTriangles_5b( - 4, 11, 10, // tri0 - 5, 4, 12, // tri1 - 5, 13, 0, // tri2 - 0, 15, 14 // tri3 -), -gsSPNTriangles_5b( - 5, 16, 17, // tri0 - 4, 2, 18, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&cat_1_v[19], 31, 0), -gsSPNTrianglesInit_5b( - 17, // tri count - 0, 1, 2, // tri0 - 2, 1, 3, // tri1 - 0, 2, 4 // tri2 -), -gsSPNTriangles_5b( - 3, 5, 2, // tri0 - 6, 7, 8, // tri1 - 1, 9, 10, // tri2 - 11, 12, 10 // tri3 -), -gsSPNTriangles_5b( - 13, 10, 12, // tri0 - 10, 9, 11, // tri1 - 14, 8, 13, // tri2 - 1, 0, 9 // tri3 -), -gsSPNTriangles_5b( - 14, 13, 12, // tri0 - 8, 7, 13, // tri1 - 14, 15, 8, // tri2 - 7, 10, 13 // tri3 -), -gsSPNTriangles_5b( - 10, 3, 1, // tri0 - 7, 3, 10, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 16, // tri count - 16, 17, 18, // tri0 - 19, 20, 21, // tri1 - 16, 18, 22 // tri2 -), -gsSPNTriangles_5b( - 20, 23, 21, // tri0 - 21, 23, 24, // tri1 - 23, 20, 22, // tri2 - 23, 22, 25 // tri3 -), -gsSPNTriangles_5b( - 26, 16, 22, // tri0 - 23, 27, 24, // tri1 - 23, 25, 27, // tri2 - 24, 28, 21 // tri3 -), -gsSPNTriangles_5b( - 25, 22, 18, // tri0 - 28, 29, 21, // tri1 - 28, 30, 29, // tri2 - 21, 29, 19 // tri3 -), -gsSPNTriangles_5b( - 22, 20, 26, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&cat_1_v[50], 22, 0), -gsSPNTrianglesInit_5b( - 29, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 2, 3 // tri2 -), -gsSPNTriangles_5b( - 6, 3, 7, // tri0 - 3, 2, 8, // tri1 - 8, 2, 9, // tri2 - 8, 9, 10 // tri3 -), -gsSPNTriangles_5b( - 11, 4, 8, // tri0 - 8, 10, 11, // tri1 - 12, 13, 14, // tri2 - 12, 15, 16 // tri3 -), -gsSPNTriangles_5b( - 4, 14, 13, // tri0 - 13, 16, 5, // tri1 - 16, 13, 12, // tri2 - 3, 8, 4 // tri3 -), -gsSPNTriangles_5b( - 7, 3, 5, // tri0 - 5, 17, 18, // tri1 - 5, 4, 13, // tri2 - 16, 15, 17 // tri3 -), -gsSPNTriangles_5b( - 18, 7, 5, // tri0 - 19, 6, 20, // tri1 - 21, 7, 18, // tri2 - 20, 7, 21 // tri3 -), -gsSPNTriangles_5b( - 20, 6, 7, // tri0 - 0, 6, 19, // tri1 - 4, 11, 14, // tri2 - 2, 1, 9 // tri3 -), -gsSPNTriangles_5b( - 16, 17, 5, // tri0 - 0, 2, 6, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cat_1_v[0], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cat_1_v[6], 13, 6), + gsSPNTrianglesInit_5b(9, // tri count + 1, 0, 6, // tri0 + 1, 7, 8, // tri1 + 3, 1, 9 // tri2 + ), + gsSPNTriangles_5b(4, 11, 10, // tri0 + 5, 4, 12, // tri1 + 5, 13, 0, // tri2 + 0, 15, 14 // tri3 + ), + gsSPNTriangles_5b(5, 16, 17, // tri0 + 4, 2, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&cat_1_v[19], 31, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 0, 2, 4 // tri2 + ), + gsSPNTriangles_5b(3, 5, 2, // tri0 + 6, 7, 8, // tri1 + 1, 9, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(13, 10, 12, // tri0 + 10, 9, 11, // tri1 + 14, 8, 13, // tri2 + 1, 0, 9 // tri3 + ), + gsSPNTriangles_5b(14, 13, 12, // tri0 + 8, 7, 13, // tri1 + 14, 15, 8, // tri2 + 7, 10, 13 // tri3 + ), + gsSPNTriangles_5b(10, 3, 1, // tri0 + 7, 3, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(16, // tri count + 16, 17, 18, // tri0 + 19, 20, 21, // tri1 + 16, 18, 22 // tri2 + ), + gsSPNTriangles_5b(20, 23, 21, // tri0 + 21, 23, 24, // tri1 + 23, 20, 22, // tri2 + 23, 22, 25 // tri3 + ), + gsSPNTriangles_5b(26, 16, 22, // tri0 + 23, 27, 24, // tri1 + 23, 25, 27, // tri2 + 24, 28, 21 // tri3 + ), + gsSPNTriangles_5b(25, 22, 18, // tri0 + 28, 29, 21, // tri1 + 28, 30, 29, // tri2 + 21, 29, 19 // tri3 + ), + gsSPNTriangles_5b(22, 20, 26, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&cat_1_v[50], 22, 0), + gsSPNTrianglesInit_5b(29, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 2, 3 // tri2 + ), + gsSPNTriangles_5b(6, 3, 7, // tri0 + 3, 2, 8, // tri1 + 8, 2, 9, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(11, 4, 8, // tri0 + 8, 10, 11, // tri1 + 12, 13, 14, // tri2 + 12, 15, 16 // tri3 + ), + gsSPNTriangles_5b(4, 14, 13, // tri0 + 13, 16, 5, // tri1 + 16, 13, 12, // tri2 + 3, 8, 4 // tri3 + ), + gsSPNTriangles_5b(7, 3, 5, // tri0 + 5, 17, 18, // tri1 + 5, 4, 13, // tri2 + 16, 15, 17 // tri3 + ), + gsSPNTriangles_5b(18, 7, 5, // tri0 + 19, 6, 20, // tri1 + 21, 7, 18, // tri2 + 20, 7, 21 // tri3 + ), + gsSPNTriangles_5b(20, 6, 7, // tri0 + 0, 6, 19, // tri1 + 4, 11, 14, // tri2 + 2, 1, 9 // tri3 + ), + gsSPNTriangles_5b(16, 17, 5, // tri0 + 0, 2, 6, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_cat_model[] = { -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&cat_1_v[108], 5, 0), -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&cat_1_v[113], 16, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 5, 3, // tri0 - 1, 4, 6, // tri1 - 1, 8, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 10, 9, // tri0 - 0, 1, 11, // tri1 - 2, 12, 13, // tri2 - 2, 0, 14 // tri3 -), -gsSPNTriangles_5b( - 2, 15, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 20, 18, 17, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cat_1_v[108], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cat_1_v[113], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 2, 5, 3, // tri0 + 1, 4, 6, // tri1 + 1, 8, 7 // tri2 + ), + gsSPNTriangles_5b(1, 10, 9, // tri0 + 0, 1, 11, // tri1 + 2, 12, 13, // tri2 + 2, 0, 14 // tri3 + ), + gsSPNTriangles_5b(2, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 18, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_cat_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&cat_1_v[129], 4, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&cat_1_v[133], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 1, 2, 4, // tri0 - 1, 5, 6, // tri1 - 0, 8, 7 // tri2 -), -gsSPNTriangles_5b( - 2, 9, 10, // tri0 - 3, 0, 11, // tri1 - 0, 1, 12, // tri2 - 0, 13, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cat_1_v[129], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cat_1_v[133], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 1, 2, 4, // tri0 + 1, 5, 6, // tri1 + 0, 8, 7 // tri2 + ), + gsSPNTriangles_5b(2, 9, 10, // tri0 + 3, 0, 11, // tri1 + 0, 1, 12, // tri2 + 0, 13, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_cat_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&cat_1_v[72], 5, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&cat_1_v[77], 16, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 5, 6, // tri0 - 4, 7, 8, // tri1 - 4, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 11, // tri0 - 4, 2, 12, // tri1 - 0, 13, 14, // tri2 - 0, 3, 15 // tri3 -), -gsSPNTriangles_5b( - 3, 4, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 18, 17, 20, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cat_1_v[72], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cat_1_v[77], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 + ), + gsSPNTriangles_5b(3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_cat_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&cat_1_v[93], 4, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&cat_1_v[97], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 4, 5, // tri0 - 1, 6, 7, // tri1 - 1, 3, 8 // tri2 -), -gsSPNTriangles_5b( - 3, 0, 9, // tri0 - 3, 11, 10, // tri1 - 0, 13, 12, // tri2 - 0, 2, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cat_1_v[93], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cat_1_v[97], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 4, 5, // tri0 + 1, 6, 7, // tri1 + 1, 3, 8 // tri2 + ), + gsSPNTriangles_5b(3, 0, 9, // tri0 + 3, 11, 10, // tri1 + 0, 13, 12, // tri2 + 0, 2, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_cat_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&cat_1_v[144], 7, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&cat_1_v[151], 20, 7), -gsSPNTrianglesInit_5b( - 13, // tri count - 0, 7, 3, // tri0 - 1, 2, 8, // tri1 - 4, 6, 9 // tri2 -), -gsSPNTriangles_5b( - 6, 5, 10, // tri0 - 3, 11, 12, // tri1 - 2, 13, 14, // tri2 - 2, 15, 16 // tri3 -), -gsSPNTriangles_5b( - 3, 18, 17, // tri0 - 4, 19, 20, // tri1 - 4, 21, 2, // tri2 - 5, 22, 23 // tri3 -), -gsSPNTriangles_5b( - 6, 24, 25, // tri0 - 5, 3, 26, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cat_1_v[144], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cat_1_v[151], 20, 7), + gsSPNTrianglesInit_5b(13, // tri count + 0, 7, 3, // tri0 + 1, 2, 8, // tri1 + 4, 6, 9 // tri2 + ), + gsSPNTriangles_5b(6, 5, 10, // tri0 + 3, 11, 12, // tri1 + 2, 13, 14, // tri2 + 2, 15, 16 // tri3 + ), + gsSPNTriangles_5b(3, 18, 17, // tri0 + 4, 19, 20, // tri1 + 4, 21, 2, // tri2 + 5, 22, 23 // tri3 + ), + gsSPNTriangles_5b(6, 24, 25, // tri0 + 5, 3, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail1_cat_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&cat_1_v[195], 8, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 2, // tri0 - 3, 0, 4, // tri1 - 2, 1, 5 // tri2 -), -gsSPNTriangles_5b( - 4, 6, 3, // tri0 - 5, 7, 2, // tri1 - 2, 4, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cat_1_v[195], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 2, 1, 5 // tri2 + ), + gsSPNTriangles_5b(4, 6, 3, // tri0 + 5, 7, 2, // tri1 + 2, 4, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail2_cat_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&cat_1_v[171], 4, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&cat_1_v[175], 20, 4), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 4, 5, // tri0 - 1, 6, 7, // tri1 - 3, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 3, 2, 10, // tri0 - 2, 1, 11, // tri1 - 0, 3, 12, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 9, // tri count - 13, 14, 15, // tri0 - 16, 14, 17, // tri1 - 18, 17, 19 // tri2 -), -gsSPNTriangles_5b( - 17, 14, 13, // tri0 - 13, 19, 17, // tri1 - 17, 18, 20, // tri2 - 21, 15, 14 // tri3 -), -gsSPNTriangles_5b( - 15, 22, 13, // tri0 - 19, 23, 18, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cat_1_v[171], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cat_1_v[175], 20, 4), + gsSPNTrianglesInit_5b(6, // tri count + 0, 4, 5, // tri0 + 1, 6, 7, // tri1 + 3, 8, 9 // tri2 + ), + gsSPNTriangles_5b(3, 2, 10, // tri0 + 2, 1, 11, // tri1 + 0, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(9, // tri count + 13, 14, 15, // tri0 + 16, 14, 17, // tri1 + 18, 17, 19 // tri2 + ), + gsSPNTriangles_5b(17, 14, 13, // tri0 + 13, 19, 17, // tri1 + 17, 18, 20, // tri2 + 21, 15, 14 // tri3 + ), + gsSPNTriangles_5b(15, 22, 13, // tri0 + 19, 23, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_cat_model[] = { -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&cat_1_v[256], 5, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&cat_1_v[261], 20, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 6, 5, // tri0 - 0, 8, 7, // tri1 - 3, 2, 9 // tri2 -), -gsSPNTriangles_5b( - 0, 4, 10, // tri0 - 0, 11, 12, // tri1 - 1, 0, 13, // tri2 - 2, 1, 14 // tri3 -), -gsSPNTriangles_5b( - 2, 15, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 4, // tri count - 17, 18, 19, // tri0 - 20, 21, 22, // tri1 - 18, 23, 21 // tri2 -), -gsSPNTriangles_5b( - 21, 24, 18, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cat_1_v[256], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cat_1_v[261], 20, 5), + gsSPNTrianglesInit_5b(8, // tri count + 2, 6, 5, // tri0 + 0, 8, 7, // tri1 + 3, 2, 9 // tri2 + ), + gsSPNTriangles_5b(0, 4, 10, // tri0 + 0, 11, 12, // tri1 + 1, 0, 13, // tri2 + 2, 1, 14 // tri3 + ), + gsSPNTriangles_5b(2, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(4, // tri count + 17, 18, 19, // tri0 + 20, 21, 22, // tri1 + 18, 23, 21 // tri2 + ), + gsSPNTriangles_5b(21, 24, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_cat_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&cat_1_v[281], 6, 0), -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&cat_1_v[287], 22, 6), -gsSPNTrianglesInit_5b( - 7, // tri count - 2, 7, 6, // tri0 - 0, 1, 8, // tri1 - 0, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 1, 5, 11, // tri0 - 4, 2, 12, // tri1 - 1, 13, 14, // tri2 - 0, 15, 3 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 16, 17, 18, // tri0 - 18, 19, 16, // tri1 - 20, 21, 22 // tri2 -), -gsSPNTriangles_5b( - 23, 18, 17, // tri0 - 23, 17, 21, // tri1 - 21, 20, 23, // tri2 - 22, 24, 20 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsSPNTrianglesInit_5b( - 1, // tri count - 25, 26, 27, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cat_1_v[281], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cat_1_v[287], 22, 6), + gsSPNTrianglesInit_5b(7, // tri count + 2, 7, 6, // tri0 + 0, 1, 8, // tri1 + 0, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 5, 11, // tri0 + 4, 2, 12, // tri1 + 1, 13, 14, // tri2 + 0, 15, 3 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 16, 17, 18, // tri0 + 18, 19, 16, // tri1 + 20, 21, 22 // tri2 + ), + gsSPNTriangles_5b(23, 18, 17, // tri0 + 23, 17, 21, // tri1 + 21, 20, 23, // tri2 + 22, 24, 20 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsSPNTrianglesInit_5b(1, // tri count + 25, 26, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_cat_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&cat_1_v[203], 5, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&cat_1_v[208], 20, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 1, 0, 5, // tri0 - 2, 7, 6, // tri1 - 2, 1, 8 // tri2 -), -gsSPNTriangles_5b( - 3, 2, 9, // tri0 - 2, 10, 11, // tri1 - 0, 13, 12, // tri2 - 0, 4, 14 // tri3 -), -gsSPNTriangles_5b( - 0, 15, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 4, // tri count - 17, 18, 19, // tri0 - 20, 21, 18, // tri1 - 20, 22, 23 // tri2 -), -gsSPNTriangles_5b( - 18, 24, 20, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cat_1_v[203], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cat_1_v[208], 20, 5), + gsSPNTrianglesInit_5b(8, // tri count + 1, 0, 5, // tri0 + 2, 7, 6, // tri1 + 2, 1, 8 // tri2 + ), + gsSPNTriangles_5b(3, 2, 9, // tri0 + 2, 10, 11, // tri1 + 0, 13, 12, // tri2 + 0, 4, 14 // tri3 + ), + gsSPNTriangles_5b(0, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(4, // tri count + 17, 18, 19, // tri0 + 20, 21, 18, // tri1 + 20, 22, 23 // tri2 + ), + gsSPNTriangles_5b(18, 24, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_cat_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&cat_1_v[228], 6, 0), -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&cat_1_v[234], 22, 6), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 6, // tri0 - 0, 7, 8, // tri1 - 1, 10, 9 // tri2 -), -gsSPNTriangles_5b( - 0, 2, 11, // tri0 - 3, 12, 13, // tri1 - 0, 14, 1, // tri2 - 5, 1, 15 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 16, 17, 18, // tri0 - 19, 20, 21, // tri1 - 16, 22, 17 // tri2 -), -gsSPNTriangles_5b( - 21, 23, 19, // tri0 - 24, 16, 18, // tri1 - 18, 20, 24, // tri2 - 20, 19, 24 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsSPNTrianglesInit_5b( - 1, // tri count - 25, 26, 27, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cat_1_v[228], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cat_1_v[234], 22, 6), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 6, // tri0 + 0, 7, 8, // tri1 + 1, 10, 9 // tri2 + ), + gsSPNTriangles_5b(0, 2, 11, // tri0 + 3, 12, 13, // tri1 + 0, 14, 1, // tri2 + 5, 1, 15 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 16, 17, 18, // tri0 + 19, 20, 21, // tri1 + 16, 22, 17 // tri2 + ), + gsSPNTriangles_5b(21, 23, 19, // tri0 + 24, 16, 18, // tri1 + 18, 20, 24, // tri2 + 20, 19, 24 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsSPNTrianglesInit_5b(1, // tri count + 25, 26, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx base_cat_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&cat_1_v[309], 14, 0), -gsSPNTrianglesInit_5b( - 12, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 3, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 4, 7, 5, // tri0 - 8, 0, 9, // tri1 - 10, 5, 7, // tri2 - 6, 11, 12 // tri3 -), -gsSPNTriangles_5b( - 9, 0, 13, // tri0 - 12, 3, 6, // tri1 - 12, 11, 8, // tri2 - 8, 9, 12 // tri3 -), -gsSPNTriangles_5b( - 0, 2, 13, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cat_1_v[309], 14, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 8, 0, 9, // tri1 + 10, 5, 7, // tri2 + 6, 11, 12 // tri3 + ), + gsSPNTriangles_5b(9, 0, 13, // tri0 + 12, 3, 6, // tri1 + 12, 11, 8, // tri2 + 8, 9, 12 // tri3 + ), + gsSPNTriangles_5b(0, 2, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_cat_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -648,4 +579,4 @@ static cKF_Joint_R_c cKF_je_r_cat_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_cat_1 = { 26, 13, cKF_je_r_cat_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_cat_1 = { 26, 13, cKF_je_r_cat_1_tbl }; diff --git a/src/data/npc/model/mdl/cbr_1.c b/src/data/npc/model/mdl/cbr_1.c index c207becd..1045a7cf 100644 --- a/src/data/npc/model/mdl/cbr_1.c +++ b/src/data/npc/model/mdl/cbr_1.c @@ -6,714 +6,626 @@ static Vtx cbr_1_v[] = { }; static Gfx head_cbr_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&cbr_1_v[0], 30, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 3, 2, 4, // tri1 - 3, 4, 5 // tri2 -), -gsSPNTriangles_5b( - 5, 6, 7, // tri0 - 7, 3, 5, // tri1 - 3, 7, 0, // tri2 - 0, 2, 3 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 30, // tri count - 8, 9, 10, // tri0 - 11, 12, 8, // tri1 - 13, 14, 15 // tri2 -), -gsSPNTriangles_5b( - 16, 17, 10, // tri0 - 17, 11, 8, // tri1 - 12, 13, 9, // tri2 - 8, 12, 9 // tri3 -), -gsSPNTriangles_5b( - 16, 18, 19, // tri0 - 18, 9, 15, // tri1 - 20, 21, 22, // tri2 - 20, 23, 24 // tri3 -), -gsSPNTriangles_5b( - 24, 25, 17, // tri0 - 26, 11, 27, // tri1 - 24, 23, 25, // tri2 - 25, 27, 11 // tri3 -), -gsSPNTriangles_5b( - 28, 23, 22, // tri0 - 16, 20, 24, // tri1 - 25, 11, 17, // tri2 - 23, 28, 27 // tri3 -), -gsSPNTriangles_5b( - 23, 27, 25, // tri0 - 21, 20, 16, // tri1 - 22, 23, 20, // tri2 - 22, 29, 28 // tri3 -), -gsSPNTriangles_5b( - 15, 9, 13, // tri0 - 24, 17, 16, // tri1 - 10, 18, 16, // tri2 - 15, 19, 18 // tri3 -), -gsSPNTriangles_5b( - 10, 9, 18, // tri0 - 17, 8, 10, // tri1 - 12, 11, 26, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&cbr_1_v[30], 10, 0), -gsSPNTrianglesInit_5b( - 3, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 3, 4, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 3, // tri count - 5, 6, 7, // tri0 - 5, 7, 8, // tri1 - 8, 9, 5 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&cbr_1_v[40], 32, 0), -gsSPNTrianglesInit_5b( - 42, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 3, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 7, 8, 9, // tri0 - 10, 11, 4, // tri1 - 12, 13, 14, // tri2 - 15, 16, 14 // tri3 -), -gsSPNTriangles_5b( - 1, 0, 17, // tri0 - 11, 10, 18, // tri1 - 5, 15, 19, // tri2 - 20, 7, 21 // tri3 -), -gsSPNTriangles_5b( - 22, 19, 15, // tri0 - 4, 20, 5, // tri1 - 12, 21, 9, // tri2 - 6, 19, 23 // tri3 -), -gsSPNTriangles_5b( - 15, 5, 20, // tri0 - 2, 1, 24, // tri1 - 23, 10, 3, // tri2 - 17, 4, 11 // tri3 -), -gsSPNTriangles_5b( - 9, 8, 25, // tri0 - 17, 0, 7, // tri1 - 24, 1, 26, // tri2 - 14, 27, 15 // tri3 -), -gsSPNTriangles_5b( - 15, 27, 22, // tri0 - 20, 16, 15, // tri1 - 21, 16, 20, // tri2 - 9, 21, 7 // tri3 -), -gsSPNTriangles_5b( - 19, 22, 23, // tri0 - 23, 18, 10, // tri1 - 3, 6, 23, // tri2 - 28, 26, 11 // tri3 -), -gsSPNTriangles_5b( - 17, 7, 20, // tri0 - 0, 2, 8, // tri1 - 4, 17, 20, // tri2 - 25, 2, 29 // tri3 -), -gsSPNTriangles_5b( - 30, 9, 25, // tri0 - 19, 6, 5, // tri1 - 4, 3, 10, // tri2 - 16, 21, 12 // tri3 -), -gsSPNTriangles_5b( - 12, 14, 16, // tri0 - 28, 31, 24, // tri1 - 24, 26, 28, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&cbr_1_v[72], 20, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 2, // tri0 - 3, 1, 0, // tri1 - 0, 4, 5 // tri2 -), -gsSPNTriangles_5b( - 5, 4, 6, // tri0 - 7, 8, 9, // tri1 - 8, 10, 11, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 12, 13, 14, // tri0 - 15, 12, 16, // tri1 - 17, 15, 16 // tri2 -), -gsSPNTriangles_5b( - 18, 19, 17, // tri0 - 14, 18, 16, // tri1 - 16, 12, 14, // tri2 - 17, 16, 18 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&cbr_1_v[92], 20, 0), -gsSPNTrianglesInit_5b( - 26, // tri count - 0, 1, 2, // tri0 - 3, 2, 4, // tri1 - 5, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 8, 9, 5, // tri0 - 10, 3, 11, // tri1 - 6, 11, 12, // tri2 - 13, 14, 15 // tri3 -), -gsSPNTriangles_5b( - 10, 6, 5, // tri0 - 3, 16, 17, // tri1 - 12, 7, 6, // tri2 - 14, 13, 9 // tri3 -), -gsSPNTriangles_5b( - 13, 2, 18, // tri0 - 9, 8, 14, // tri1 - 2, 1, 4, // tri2 - 18, 9, 13 // tri3 -), -gsSPNTriangles_5b( - 4, 16, 3, // tri0 - 11, 6, 10, // tri1 - 17, 11, 3, // tri2 - 11, 17, 19 // tri3 -), -gsSPNTriangles_5b( - 2, 13, 0, // tri0 - 15, 0, 13, // tri1 - 3, 10, 18, // tri2 - 5, 18, 10 // tri3 -), -gsSPNTriangles_5b( - 5, 9, 18, // tri0 - 3, 18, 2, // tri1 - 19, 12, 11, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cbr_1_v[0], 30, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 7, 3, 5, // tri1 + 3, 7, 0, // tri2 + 0, 2, 3 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(30, // tri count + 8, 9, 10, // tri0 + 11, 12, 8, // tri1 + 13, 14, 15 // tri2 + ), + gsSPNTriangles_5b(16, 17, 10, // tri0 + 17, 11, 8, // tri1 + 12, 13, 9, // tri2 + 8, 12, 9 // tri3 + ), + gsSPNTriangles_5b(16, 18, 19, // tri0 + 18, 9, 15, // tri1 + 20, 21, 22, // tri2 + 20, 23, 24 // tri3 + ), + gsSPNTriangles_5b(24, 25, 17, // tri0 + 26, 11, 27, // tri1 + 24, 23, 25, // tri2 + 25, 27, 11 // tri3 + ), + gsSPNTriangles_5b(28, 23, 22, // tri0 + 16, 20, 24, // tri1 + 25, 11, 17, // tri2 + 23, 28, 27 // tri3 + ), + gsSPNTriangles_5b(23, 27, 25, // tri0 + 21, 20, 16, // tri1 + 22, 23, 20, // tri2 + 22, 29, 28 // tri3 + ), + gsSPNTriangles_5b(15, 9, 13, // tri0 + 24, 17, 16, // tri1 + 10, 18, 16, // tri2 + 15, 19, 18 // tri3 + ), + gsSPNTriangles_5b(10, 9, 18, // tri0 + 17, 8, 10, // tri1 + 12, 11, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&cbr_1_v[30], 10, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 4, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 5, 6, 7, // tri0 + 5, 7, 8, // tri1 + 8, 9, 5 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&cbr_1_v[40], 32, 0), + gsSPNTrianglesInit_5b(42, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 11, 4, // tri1 + 12, 13, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b(1, 0, 17, // tri0 + 11, 10, 18, // tri1 + 5, 15, 19, // tri2 + 20, 7, 21 // tri3 + ), + gsSPNTriangles_5b(22, 19, 15, // tri0 + 4, 20, 5, // tri1 + 12, 21, 9, // tri2 + 6, 19, 23 // tri3 + ), + gsSPNTriangles_5b(15, 5, 20, // tri0 + 2, 1, 24, // tri1 + 23, 10, 3, // tri2 + 17, 4, 11 // tri3 + ), + gsSPNTriangles_5b(9, 8, 25, // tri0 + 17, 0, 7, // tri1 + 24, 1, 26, // tri2 + 14, 27, 15 // tri3 + ), + gsSPNTriangles_5b(15, 27, 22, // tri0 + 20, 16, 15, // tri1 + 21, 16, 20, // tri2 + 9, 21, 7 // tri3 + ), + gsSPNTriangles_5b(19, 22, 23, // tri0 + 23, 18, 10, // tri1 + 3, 6, 23, // tri2 + 28, 26, 11 // tri3 + ), + gsSPNTriangles_5b(17, 7, 20, // tri0 + 0, 2, 8, // tri1 + 4, 17, 20, // tri2 + 25, 2, 29 // tri3 + ), + gsSPNTriangles_5b(30, 9, 25, // tri0 + 19, 6, 5, // tri1 + 4, 3, 10, // tri2 + 16, 21, 12 // tri3 + ), + gsSPNTriangles_5b(12, 14, 16, // tri0 + 28, 31, 24, // tri1 + 24, 26, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&cbr_1_v[72], 20, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b(5, 4, 6, // tri0 + 7, 8, 9, // tri1 + 8, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 12, 13, 14, // tri0 + 15, 12, 16, // tri1 + 17, 15, 16 // tri2 + ), + gsSPNTriangles_5b(18, 19, 17, // tri0 + 14, 18, 16, // tri1 + 16, 12, 14, // tri2 + 17, 16, 18 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&cbr_1_v[92], 20, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 5, // tri0 + 10, 3, 11, // tri1 + 6, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(10, 6, 5, // tri0 + 3, 16, 17, // tri1 + 12, 7, 6, // tri2 + 14, 13, 9 // tri3 + ), + gsSPNTriangles_5b(13, 2, 18, // tri0 + 9, 8, 14, // tri1 + 2, 1, 4, // tri2 + 18, 9, 13 // tri3 + ), + gsSPNTriangles_5b(4, 16, 3, // tri0 + 11, 6, 10, // tri1 + 17, 11, 3, // tri2 + 11, 17, 19 // tri3 + ), + gsSPNTriangles_5b(2, 13, 0, // tri0 + 15, 0, 13, // tri1 + 3, 10, 18, // tri2 + 5, 18, 10 // tri3 + ), + gsSPNTriangles_5b(5, 9, 18, // tri0 + 3, 18, 2, // tri1 + 19, 12, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_cbr_model[] = { -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&cbr_1_v[112], 4, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 60), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&cbr_1_v[116], 16, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 0, 4, // tri0 - 0, 5, 6, // tri1 - 0, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 3, 9, 10, // tri0 - 3, 11, 12, // tri1 - 0, 1, 13, // tri2 - 1, 3, 14 // tri3 -), -gsSPNTriangles_5b( - 3, 2, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 16, 17, 18, // tri0 - 19, 18, 17, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cbr_1_v[112], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cbr_1_v[116], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 0, 4, // tri0 + 0, 5, 6, // tri1 + 0, 7, 8 // tri2 + ), + gsSPNTriangles_5b(3, 9, 10, // tri0 + 3, 11, 12, // tri1 + 0, 1, 13, // tri2 + 1, 3, 14 // tri3 + ), + gsSPNTriangles_5b(3, 2, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 19, 18, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_cbr_model[] = { -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&cbr_1_v[132], 4, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 60), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&cbr_1_v[136], 12, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 3, 5, 4, // tri0 - 1, 7, 6, // tri1 - 3, 8, 1 // tri2 -), -gsSPNTriangles_5b( - 0, 1, 9, // tri0 - 2, 10, 11, // tri1 - 3, 2, 12, // tri2 - 0, 13, 2 // tri3 -), -gsSPNTriangles_5b( - 0, 14, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cbr_1_v[132], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cbr_1_v[136], 12, 4), + gsSPNTrianglesInit_5b(8, // tri count + 3, 5, 4, // tri0 + 1, 7, 6, // tri1 + 3, 8, 1 // tri2 + ), + gsSPNTriangles_5b(0, 1, 9, // tri0 + 2, 10, 11, // tri1 + 3, 2, 12, // tri2 + 0, 13, 2 // tri3 + ), + gsSPNTriangles_5b(0, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_cbr_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&cbr_1_v[200], 4, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 60), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&cbr_1_v[204], 16, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 3, 4, // tri0 - 0, 2, 5, // tri1 - 0, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 3, 1, 8, // tri0 - 0, 9, 10, // tri1 - 3, 11, 12, // tri2 - 1, 0, 13 // tri3 -), -gsSPNTriangles_5b( - 3, 14, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 16, 17, 18, // tri0 - 17, 16, 19, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cbr_1_v[200], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cbr_1_v[204], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 3, 4, // tri0 + 0, 2, 5, // tri1 + 0, 6, 7 // tri2 + ), + gsSPNTriangles_5b(3, 1, 8, // tri0 + 0, 9, 10, // tri1 + 3, 11, 12, // tri2 + 1, 0, 13 // tri3 + ), + gsSPNTriangles_5b(3, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_cbr_model[] = { -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&cbr_1_v[220], 6, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 60), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&cbr_1_v[226], 12, 6), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 6, 7, // tri0 - 2, 8, 5, // tri1 - 2, 10, 9 // tri2 -), -gsSPNTriangles_5b( - 5, 12, 11, // tri0 - 3, 13, 1, // tri1 - 5, 14, 4, // tri2 - 4, 15, 16 // tri3 -), -gsSPNTriangles_5b( - 2, 0, 17, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cbr_1_v[220], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cbr_1_v[226], 12, 6), + gsSPNTrianglesInit_5b(8, // tri count + 0, 6, 7, // tri0 + 2, 8, 5, // tri1 + 2, 10, 9 // tri2 + ), + gsSPNTriangles_5b(5, 12, 11, // tri0 + 3, 13, 1, // tri1 + 5, 14, 4, // tri2 + 4, 15, 16 // tri3 + ), + gsSPNTriangles_5b(2, 0, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_cbr_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&cbr_1_v[148], 9, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 252, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&cbr_1_v[157], 22, 9), -gsSPNTrianglesInit_5b( - 15, // tri count - 7, 0, 9, // tri0 - 1, 4, 10, // tri1 - 6, 7, 11 // tri2 -), -gsSPNTriangles_5b( - 4, 13, 12, // tri0 - 3, 15, 14, // tri1 - 0, 2, 16, // tri2 - 5, 17, 18 // tri3 -), -gsSPNTriangles_5b( - 2, 19, 20, // tri0 - 5, 6, 21, // tri1 - 6, 22, 23, // tri2 - 3, 5, 24 // tri3 -), -gsSPNTriangles_5b( - 0, 25, 26, // tri0 - 4, 8, 27, // tri1 - 8, 3, 28, // tri2 - 8, 29, 30 // tri3 -), -gsSPVertex(&cbr_1_v[179], 21, 9), -gsSPNTrianglesInit_5b( - 2, // tri count - 7, 9, 10, // tri0 - 7, 11, 12, // tri1 - 0, 0, 0 // tri2 -), -gsSPNTrianglesInit_5b( - 15, // tri count - 13, 14, 15, // tri0 - 14, 13, 16, // tri1 - 17, 18, 19 // tri2 -), -gsSPNTriangles_5b( - 20, 16, 13, // tri0 - 21, 22, 17, // tri1 - 20, 23, 16, // tri2 - 24, 23, 20 // tri3 -), -gsSPNTriangles_5b( - 25, 19, 18, // tri0 - 23, 18, 16, // tri1 - 22, 21, 26, // tri2 - 18, 17, 16 // tri3 -), -gsSPNTriangles_5b( - 22, 27, 28, // tri0 - 17, 22, 16, // tri1 - 19, 29, 17, // tri2 - 17, 29, 21 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cbr_1_v[148], 9, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cbr_1_v[157], 22, 9), + gsSPNTrianglesInit_5b(15, // tri count + 7, 0, 9, // tri0 + 1, 4, 10, // tri1 + 6, 7, 11 // tri2 + ), + gsSPNTriangles_5b(4, 13, 12, // tri0 + 3, 15, 14, // tri1 + 0, 2, 16, // tri2 + 5, 17, 18 // tri3 + ), + gsSPNTriangles_5b(2, 19, 20, // tri0 + 5, 6, 21, // tri1 + 6, 22, 23, // tri2 + 3, 5, 24 // tri3 + ), + gsSPNTriangles_5b(0, 25, 26, // tri0 + 4, 8, 27, // tri1 + 8, 3, 28, // tri2 + 8, 29, 30 // tri3 + ), + gsSPVertex(&cbr_1_v[179], 21, 9), + gsSPNTrianglesInit_5b(2, // tri count + 7, 9, 10, // tri0 + 7, 11, 12, // tri1 + 0, 0, 0 // tri2 + ), + gsSPNTrianglesInit_5b(15, // tri count + 13, 14, 15, // tri0 + 14, 13, 16, // tri1 + 17, 18, 19 // tri2 + ), + gsSPNTriangles_5b(20, 16, 13, // tri0 + 21, 22, 17, // tri1 + 20, 23, 16, // tri2 + 24, 23, 20 // tri3 + ), + gsSPNTriangles_5b(25, 19, 18, // tri0 + 23, 18, 16, // tri1 + 22, 21, 26, // tri2 + 18, 17, 16 // tri3 + ), + gsSPNTriangles_5b(22, 27, 28, // tri0 + 17, 22, 16, // tri1 + 19, 29, 17, // tri2 + 17, 29, 21 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail1_cbr_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 60, 60), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&cbr_1_v[306], 6, 0), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 1, 2, // tri0 - 1, 0, 3, // tri1 - 4, 0, 2 // tri2 -), -gsSPNTriangles_5b( - 0, 4, 3, // tri0 - 1, 5, 2, // tri1 - 5, 1, 3, // tri2 - 5, 4, 2 // tri3 -), -gsSPNTriangles_5b( - 4, 5, 3, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 60, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cbr_1_v[306], 6, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 1, 0, 3, // tri1 + 4, 0, 2 // tri2 + ), + gsSPNTriangles_5b(0, 4, 3, // tri0 + 1, 5, 2, // tri1 + 5, 1, 3, // tri2 + 5, 4, 2 // tri3 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_cbr_model[] = { -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&cbr_1_v[272], 5, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 60), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&cbr_1_v[277], 19, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 5, 3, // tri0 - 1, 0, 6, // tri1 - 3, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 1, 9, 10, // tri0 - 3, 11, 12, // tri1 - 4, 13, 0, // tri2 - 1, 15, 14 // tri3 -), -gsSPNTriangles_5b( - 2, 1, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 4, // tri count - 17, 18, 19, // tri0 - 20, 19, 18, // tri1 - 21, 22, 20 // tri2 -), -gsSPNTriangles_5b( - 18, 23, 20, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cbr_1_v[272], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cbr_1_v[277], 19, 5), + gsSPNTrianglesInit_5b(8, // tri count + 2, 5, 3, // tri0 + 1, 0, 6, // tri1 + 3, 7, 8 // tri2 + ), + gsSPNTriangles_5b(1, 9, 10, // tri0 + 3, 11, 12, // tri1 + 4, 13, 0, // tri2 + 1, 15, 14 // tri3 + ), + gsSPNTriangles_5b(2, 1, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(4, // tri count + 17, 18, 19, // tri0 + 20, 19, 18, // tri1 + 21, 22, 20 // tri2 + ), + gsSPNTriangles_5b(18, 23, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_cbr_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 60), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&cbr_1_v[296], 10, 0), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 4, 6, 7, // tri0 - 5, 8, 9, // tri1 - 5, 9, 6, // tri2 - 8, 0, 3 // tri3 -), -gsSPNTriangles_5b( - 8, 3, 9, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cbr_1_v[296], 10, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 5, 8, 9, // tri1 + 5, 9, 6, // tri2 + 8, 0, 3 // tri3 + ), + gsSPNTriangles_5b(8, 3, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_cbr_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&cbr_1_v[238], 5, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 60), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&cbr_1_v[243], 19, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 4, 5, 6, // tri0 - 2, 7, 8, // tri1 - 4, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 4, 11, 0, // tri0 - 3, 12, 4, // tri1 - 3, 2, 13, // tri2 - 2, 1, 14 // tri3 -), -gsSPNTriangles_5b( - 2, 16, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 4, // tri count - 17, 18, 19, // tri0 - 20, 18, 21, // tri1 - 18, 17, 21 // tri2 -), -gsSPNTriangles_5b( - 20, 22, 23, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cbr_1_v[238], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cbr_1_v[243], 19, 5), + gsSPNTrianglesInit_5b(8, // tri count + 4, 5, 6, // tri0 + 2, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(4, 11, 0, // tri0 + 3, 12, 4, // tri1 + 3, 2, 13, // tri2 + 2, 1, 14 // tri3 + ), + gsSPNTriangles_5b(2, 16, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(4, // tri count + 17, 18, 19, // tri0 + 20, 18, 21, // tri1 + 18, 17, 21 // tri2 + ), + gsSPNTriangles_5b(20, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_cbr_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 60), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&cbr_1_v[262], 10, 0), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 4, 6, 7, // tri0 - 5, 0, 3, // tri1 - 5, 3, 6, // tri2 - 1, 8, 9 // tri3 -), -gsSPNTriangles_5b( - 1, 9, 2, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cbr_1_v[262], 10, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 5, 0, 3, // tri1 + 5, 3, 6, // tri2 + 1, 8, 9 // tri3 + ), + gsSPNTriangles_5b(1, 9, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx base_cbr_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 60, 60), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&cbr_1_v[312], 16, 0), -gsSPNTrianglesInit_5b( - 22, // tri count - 0, 1, 2, // tri0 - 2, 3, 0, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 6, 5, 7, // tri0 - 7, 8, 9, // tri1 - 10, 11, 9, // tri2 - 3, 2, 11 // tri3 -), -gsSPNTriangles_5b( - 12, 1, 13, // tri0 - 11, 2, 14, // tri1 - 2, 1, 14, // tri2 - 6, 12, 4 // tri3 -), -gsSPNTriangles_5b( - 12, 6, 14, // tri0 - 6, 15, 14, // tri1 - 15, 9, 14, // tri2 - 9, 8, 10 // tri3 -), -gsSPNTriangles_5b( - 9, 11, 14, // tri0 - 11, 10, 3, // tri1 - 0, 13, 1, // tri2 - 1, 12, 14 // tri3 -), -gsSPNTriangles_5b( - 13, 4, 12, // tri0 - 9, 15, 7, // tri1 - 7, 15, 6, // tri2 - 0, 0, 0 // tri3 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 252, 124), -gsSPVertex(&cbr_1_v[328], 18, 0), -gsSPNTrianglesInit_5b( - 16, // tri count - 0, 1, 2, // tri0 - 2, 3, 4, // tri1 - 5, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 8, 9, 10, // tri0 - 11, 12, 13, // tri1 - 13, 7, 11, // tri2 - 14, 12, 11 // tri3 -), -gsSPNTriangles_5b( - 7, 13, 5, // tri0 - 11, 8, 14, // tri1 - 10, 14, 8, // tri2 - 4, 15, 2 // tri3 -), -gsSPNTriangles_5b( - 2, 15, 0, // tri0 - 3, 10, 9, // tri1 - 16, 17, 1, // tri2 - 1, 0, 16 // tri3 -), -gsSPNTriangles_5b( - 9, 4, 3, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 60, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cbr_1_v[312], 16, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(6, 5, 7, // tri0 + 7, 8, 9, // tri1 + 10, 11, 9, // tri2 + 3, 2, 11 // tri3 + ), + gsSPNTriangles_5b(12, 1, 13, // tri0 + 11, 2, 14, // tri1 + 2, 1, 14, // tri2 + 6, 12, 4 // tri3 + ), + gsSPNTriangles_5b(12, 6, 14, // tri0 + 6, 15, 14, // tri1 + 15, 9, 14, // tri2 + 9, 8, 10 // tri3 + ), + gsSPNTriangles_5b(9, 11, 14, // tri0 + 11, 10, 3, // tri1 + 0, 13, 1, // tri2 + 1, 12, 14 // tri3 + ), + gsSPNTriangles_5b(13, 4, 12, // tri0 + 9, 15, 7, // tri1 + 7, 15, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsSPVertex(&cbr_1_v[328], 18, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 13, 7, 11, // tri2 + 14, 12, 11 // tri3 + ), + gsSPNTriangles_5b(7, 13, 5, // tri0 + 11, 8, 14, // tri1 + 10, 14, 8, // tri2 + 4, 15, 2 // tri3 + ), + gsSPNTriangles_5b(2, 15, 0, // tri0 + 3, 10, 9, // tri1 + 16, 17, 1, // tri2 + 1, 0, 16 // tri3 + ), + gsSPNTriangles_5b(9, 4, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_cbr_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -745,4 +657,4 @@ static cKF_Joint_R_c cKF_je_r_cbr_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_cbr_1 = { 26, 12, cKF_je_r_cbr_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_cbr_1 = { 26, 12, cKF_je_r_cbr_1_tbl }; diff --git a/src/data/npc/model/mdl/chn_1.c b/src/data/npc/model/mdl/chn_1.c index 71aeef73..84c3e787 100644 --- a/src/data/npc/model/mdl/chn_1.c +++ b/src/data/npc/model/mdl/chn_1.c @@ -6,816 +6,723 @@ static Vtx chn_1_v[] = { }; static Gfx head_chn_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&chn_1_v[11], 8, 0), -gsSPMatrix(0x0D000380, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&chn_1_v[19], 21, 8), -gsSPNTrianglesInit_5b( - 14, // tri count - 6, 8, 9, // tri0 - 6, 4, 10, // tri1 - 3, 11, 12 // tri2 -), -gsSPNTriangles_5b( - 3, 2, 13, // tri0 - 1, 14, 15, // tri1 - 1, 0, 16, // tri2 - 7, 17, 18 // tri3 -), -gsSPNTriangles_5b( - 7, 6, 19, // tri0 - 0, 20, 21, // tri1 - 0, 7, 22, // tri2 - 2, 23, 24 // tri3 -), -gsSPNTriangles_5b( - 2, 1, 25, // tri0 - 5, 26, 27, // tri1 - 5, 3, 28, // tri2 - 0, 0, 0 // tri3 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&chn_1_v[40], 27, 0), -gsSPNTrianglesInit_5b( - 26, // tri count - 0, 1, 2, // tri0 - 3, 4, 0, // tri1 - 0, 2, 5 // tri2 -), -gsSPNTriangles_5b( - 6, 7, 2, // tri0 - 7, 6, 8, // tri1 - 9, 10, 11, // tri2 - 12, 13, 14 // tri3 -), -gsSPNTriangles_5b( - 5, 2, 7, // tri0 - 5, 7, 11, // tri1 - 11, 10, 12, // tri2 - 8, 1, 0 // tri3 -), -gsSPNTriangles_5b( - 15, 11, 7, // tri0 - 4, 8, 0, // tri1 - 7, 8, 4, // tri2 - 14, 13, 9 // tri3 -), -gsSPNTriangles_5b( - 14, 0, 5, // tri0 - 11, 12, 5, // tri1 - 5, 12, 14, // tri2 - 11, 15, 16 // tri3 -), -gsSPNTriangles_5b( - 16, 15, 14, // tri0 - 11, 16, 9, // tri1 - 9, 16, 14, // tri2 - 0, 14, 15 // tri3 -), -gsSPNTriangles_5b( - 7, 4, 3, // tri0 - 15, 3, 0, // tri1 - 7, 3, 15, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 17, 18, 19, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 2, // tri count - 20, 21, 22, // tri0 - 22, 21, 23, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 24, 25, 26, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPVertex(&chn_1_v[67], 23, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 2, // tri count - 0, 1, 2, // tri0 - 3, 4, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 8, // tri count - 5, 6, 7, // tri0 - 8, 9, 6, // tri1 - 6, 10, 8 // tri2 -), -gsSPNTriangles_5b( - 6, 9, 7, // tri0 - 8, 10, 11, // tri1 - 12, 7, 13, // tri2 - 14, 8, 11 // tri3 -), -gsSPNTriangles_5b( - 13, 15, 12, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 2, // tri count - 16, 17, 18, // tri0 - 16, 18, 19, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 20, 21, 22, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPVertex(&chn_1_v[90], 31, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 5, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 3, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 7, 0, 8, // tri0 - 7, 8, 9, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 2, // tri count - 10, 11, 12, // tri0 - 12, 13, 14, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 11, // tri count - 15, 16, 17, // tri0 - 18, 19, 20, // tri1 - 21, 22, 17 // tri2 -), -gsSPNTriangles_5b( - 23, 24, 25, // tri0 - 20, 15, 18, // tri1 - 26, 27, 28, // tri2 - 25, 29, 23 // tri3 -), -gsSPNTriangles_5b( - 28, 30, 26, // tri0 - 24, 23, 26, // tri1 - 17, 18, 15, // tri2 - 17, 16, 21 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&chn_1_v[121], 24, 0), -gsSPNTrianglesInit_5b( - 18, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 1, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 8, 3, 9, // tri0 - 10, 11, 2, // tri1 - 12, 13, 9, // tri2 - 2, 11, 0 // tri3 -), -gsSPNTriangles_5b( - 5, 14, 3, // tri0 - 15, 13, 12, // tri1 - 9, 3, 12, // tri2 - 7, 2, 1 // tri3 -), -gsSPNTriangles_5b( - 8, 16, 4, // tri0 - 12, 2, 15, // tri1 - 2, 12, 10, // tri2 - 10, 12, 3 // tri3 -), -gsSPNTriangles_5b( - 3, 14, 10, // tri0 - 15, 2, 7, // tri1 - 4, 3, 8, // tri2 - 0, 0, 0 // tri3 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 3, // tri count - 17, 18, 19, // tri0 - 19, 18, 20, // tri1 - 21, 22, 23 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&chn_1_v[11], 8, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*14, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&chn_1_v[19], 21, 8), + gsSPNTrianglesInit_5b(14, // tri count + 6, 8, 9, // tri0 + 6, 4, 10, // tri1 + 3, 11, 12 // tri2 + ), + gsSPNTriangles_5b(3, 2, 13, // tri0 + 1, 14, 15, // tri1 + 1, 0, 16, // tri2 + 7, 17, 18 // tri3 + ), + gsSPNTriangles_5b(7, 6, 19, // tri0 + 0, 20, 21, // tri1 + 0, 7, 22, // tri2 + 2, 23, 24 // tri3 + ), + gsSPNTriangles_5b(2, 1, 25, // tri0 + 5, 26, 27, // tri1 + 5, 3, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&chn_1_v[40], 27, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 0, 2, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 2, // tri0 + 7, 6, 8, // tri1 + 9, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(5, 2, 7, // tri0 + 5, 7, 11, // tri1 + 11, 10, 12, // tri2 + 8, 1, 0 // tri3 + ), + gsSPNTriangles_5b(15, 11, 7, // tri0 + 4, 8, 0, // tri1 + 7, 8, 4, // tri2 + 14, 13, 9 // tri3 + ), + gsSPNTriangles_5b(14, 0, 5, // tri0 + 11, 12, 5, // tri1 + 5, 12, 14, // tri2 + 11, 15, 16 // tri3 + ), + gsSPNTriangles_5b(16, 15, 14, // tri0 + 11, 16, 9, // tri1 + 9, 16, 14, // tri2 + 0, 14, 15 // tri3 + ), + gsSPNTriangles_5b(7, 4, 3, // tri0 + 15, 3, 0, // tri1 + 7, 3, 15, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 17, 18, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 20, 21, 22, // tri0 + 22, 21, 23, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 24, 25, 26, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPVertex(&chn_1_v[67], 23, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(8, // tri count + 5, 6, 7, // tri0 + 8, 9, 6, // tri1 + 6, 10, 8 // tri2 + ), + gsSPNTriangles_5b(6, 9, 7, // tri0 + 8, 10, 11, // tri1 + 12, 7, 13, // tri2 + 14, 8, 11 // tri3 + ), + gsSPNTriangles_5b(13, 15, 12, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 16, 18, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 20, 21, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPVertex(&chn_1_v[90], 31, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 0, 8, // tri0 + 7, 8, 9, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 10, 11, 12, // tri0 + 12, 13, 14, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(11, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 21, 22, 17 // tri2 + ), + gsSPNTriangles_5b(23, 24, 25, // tri0 + 20, 15, 18, // tri1 + 26, 27, 28, // tri2 + 25, 29, 23 // tri3 + ), + gsSPNTriangles_5b(28, 30, 26, // tri0 + 24, 23, 26, // tri1 + 17, 18, 15, // tri2 + 17, 16, 21 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&chn_1_v[121], 24, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 3, 9, // tri0 + 10, 11, 2, // tri1 + 12, 13, 9, // tri2 + 2, 11, 0 // tri3 + ), + gsSPNTriangles_5b(5, 14, 3, // tri0 + 15, 13, 12, // tri1 + 9, 3, 12, // tri2 + 7, 2, 1 // tri3 + ), + gsSPNTriangles_5b(8, 16, 4, // tri0 + 12, 2, 15, // tri1 + 2, 12, 10, // tri2 + 10, 12, 3 // tri3 + ), + gsSPNTriangles_5b(3, 14, 10, // tri0 + 15, 2, 7, // tri1 + 4, 3, 8, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(3, // tri count + 17, 18, 19, // tri0 + 19, 18, 20, // tri1 + 21, 22, 23 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx mouth_chn_model[] = { -gsSPMatrix(0x0D000380, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&chn_1_v[0], 4, 0), -gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&chn_1_v[4], 7, 4), -gsSPNTrianglesInit_5b( - 5, // tri count - 0, 1, 4, // tri0 - 2, 6, 5, // tri1 - 0, 8, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 2, 9, // tri0 - 3, 0, 10, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*14, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&chn_1_v[0], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&chn_1_v[4], 7, 4), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 4, // tri0 + 2, 6, 5, // tri1 + 0, 8, 7 // tri2 + ), + gsSPNTriangles_5b(1, 2, 9, // tri0 + 3, 0, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_chn_model[] = { -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&chn_1_v[176], 4, 0), -gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&chn_1_v[180], 15, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 1, 3, 6, // tri1 - 3, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 9, 10, // tri0 - 2, 11, 0, // tri1 - 3, 12, 13, // tri2 - 3, 0, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 15, 16, 17, // tri0 - 18, 15, 17, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&chn_1_v[176], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&chn_1_v[180], 15, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 1, 3, 6, // tri1 + 3, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 9, 10, // tri0 + 2, 11, 0, // tri1 + 3, 12, 13, // tri2 + 3, 0, 14 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 15, 16, 17, // tri0 + 18, 15, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_chn_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&chn_1_v[195], 3, 0), -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&chn_1_v[198], 9, 3), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 3, // tri0 - 2, 0, 4, // tri1 - 0, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 1, 7, 8, // tri0 - 1, 2, 9, // tri1 - 2, 10, 11, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&chn_1_v[195], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&chn_1_v[198], 9, 3), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 3, // tri0 + 2, 0, 4, // tri1 + 0, 5, 6 // tri2 + ), + gsSPNTriangles_5b(1, 7, 8, // tri0 + 1, 2, 9, // tri1 + 2, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_chn_model[] = { -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&chn_1_v[145], 4, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&chn_1_v[149], 15, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 3, 1, 6, // tri1 - 3, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 0, 9, 10, // tri0 - 0, 11, 2, // tri1 - 3, 12, 13, // tri2 - 0, 3, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 15, 16, 17, // tri0 - 15, 17, 18, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&chn_1_v[145], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&chn_1_v[149], 15, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 3, 1, 6, // tri1 + 3, 7, 8 // tri2 + ), + gsSPNTriangles_5b(0, 9, 10, // tri0 + 0, 11, 2, // tri1 + 3, 12, 13, // tri2 + 0, 3, 14 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 15, 16, 17, // tri0 + 15, 17, 18, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_chn_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&chn_1_v[164], 3, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&chn_1_v[167], 9, 3), -gsSPNTrianglesInit_5b( - 6, // tri count - 1, 0, 3, // tri0 - 0, 2, 4, // tri1 - 0, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 1, 7, 8, // tri0 - 2, 1, 9, // tri1 - 2, 10, 11, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&chn_1_v[164], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&chn_1_v[167], 9, 3), + gsSPNTrianglesInit_5b(6, // tri count + 1, 0, 3, // tri0 + 0, 2, 4, // tri1 + 0, 5, 6 // tri2 + ), + gsSPNTriangles_5b(1, 7, 8, // tri0 + 2, 1, 9, // tri1 + 2, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_chn_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&chn_1_v[207], 7, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&chn_1_v[214], 24, 7), -gsSPNTrianglesInit_5b( - 15, // tri count - 3, 7, 8, // tri0 - 4, 9, 1, // tri1 - 5, 0, 10 // tri2 -), -gsSPNTriangles_5b( - 2, 11, 12, // tri0 - 1, 13, 14, // tri1 - 0, 15, 16, // tri2 - 0, 17, 18 // tri3 -), -gsSPNTriangles_5b( - 1, 19, 20, // tri0 - 2, 21, 22, // tri1 - 2, 23, 0, // tri2 - 3, 24, 25 // tri3 -), -gsSPNTriangles_5b( - 3, 1, 26, // tri0 - 2, 6, 27, // tri1 - 6, 3, 28, // tri2 - 1, 29, 30 // tri3 -), -gsSPVertex(&chn_1_v[238], 17, 7), -gsSPNTrianglesInit_5b( - 1, // tri count - 0, 7, 8, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPNTrianglesInit_5b( - 13, // tri count - 9, 10, 11, // tri0 - 12, 13, 14, // tri1 - 15, 11, 16 // tri2 -), -gsSPNTriangles_5b( - 17, 12, 18, // tri0 - 19, 17, 20, // tri1 - 21, 22, 23, // tri2 - 21, 19, 22 // tri3 -), -gsSPNTriangles_5b( - 23, 16, 21, // tri0 - 16, 23, 15, // tri1 - 18, 20, 17, // tri2 - 20, 22, 19 // tri3 -), -gsSPNTriangles_5b( - 11, 15, 9, // tri0 - 14, 18, 12, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&chn_1_v[207], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&chn_1_v[214], 24, 7), + gsSPNTrianglesInit_5b(15, // tri count + 3, 7, 8, // tri0 + 4, 9, 1, // tri1 + 5, 0, 10 // tri2 + ), + gsSPNTriangles_5b(2, 11, 12, // tri0 + 1, 13, 14, // tri1 + 0, 15, 16, // tri2 + 0, 17, 18 // tri3 + ), + gsSPNTriangles_5b(1, 19, 20, // tri0 + 2, 21, 22, // tri1 + 2, 23, 0, // tri2 + 3, 24, 25 // tri3 + ), + gsSPNTriangles_5b(3, 1, 26, // tri0 + 2, 6, 27, // tri1 + 6, 3, 28, // tri2 + 1, 29, 30 // tri3 + ), + gsSPVertex(&chn_1_v[238], 17, 7), + gsSPNTrianglesInit_5b(1, // tri count + 0, 7, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPNTrianglesInit_5b(13, // tri count + 9, 10, 11, // tri0 + 12, 13, 14, // tri1 + 15, 11, 16 // tri2 + ), + gsSPNTriangles_5b(17, 12, 18, // tri0 + 19, 17, 20, // tri1 + 21, 22, 23, // tri2 + 21, 19, 22 // tri3 + ), + gsSPNTriangles_5b(23, 16, 21, // tri0 + 16, 23, 15, // tri1 + 18, 20, 17, // tri2 + 20, 22, 19 // tri3 + ), + gsSPNTriangles_5b(11, 15, 9, // tri0 + 14, 18, 12, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail1_chn_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&chn_1_v[255], 27, 0), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 1, 2, // tri0 - 2, 1, 3, // tri1 - 2, 4, 0 // tri2 -), -gsSPNTriangles_5b( - 3, 5, 6, // tri0 - 7, 8, 4, // tri1 - 2, 9, 7, // tri2 - 10, 7, 9 // tri3 -), -gsSPNTriangles_5b( - 10, 8, 7, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 11, 12, 13, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 3, // tri count - 14, 15, 16, // tri0 - 16, 17, 18, // tri1 - 19, 20, 18 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 21, 22, 23, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 24, 25, 26, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPVertex(&chn_1_v[282], 10, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 4, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 8, 9, 6, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&chn_1_v[255], 27, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(3, 5, 6, // tri0 + 7, 8, 4, // tri1 + 2, 9, 7, // tri2 + 10, 7, 9 // tri3 + ), + gsSPNTriangles_5b(10, 8, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 11, 12, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(3, // tri count + 14, 15, 16, // tri0 + 16, 17, 18, // tri1 + 19, 20, 18 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 21, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 24, 25, 26, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPVertex(&chn_1_v[282], 10, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(8, 9, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot3_chn_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&chn_1_v[364], 4, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&chn_1_v[368], 20, 4), -gsSPNTrianglesInit_5b( - 6, // tri count - 1, 4, 5, // tri0 - 1, 6, 3, // tri1 - 3, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 0, 9, // tri0 - 0, 3, 10, // tri1 - 2, 11, 12, // tri2 - 0, 0, 0 // tri3 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 6, // tri count - 13, 14, 15, // tri0 - 16, 17, 15, // tri1 - 15, 17, 18 // tri2 -), -gsSPNTriangles_5b( - 15, 18, 13, // tri0 - 15, 19, 20, // tri1 - 15, 20, 16, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 21, 22, 23, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&chn_1_v[364], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&chn_1_v[368], 20, 4), + gsSPNTrianglesInit_5b(6, // tri count + 1, 4, 5, // tri0 + 1, 6, 3, // tri1 + 3, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 0, 9, // tri0 + 0, 3, 10, // tri1 + 2, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(6, // tri count + 13, 14, 15, // tri0 + 16, 17, 15, // tri1 + 15, 17, 18 // tri2 + ), + gsSPNTriangles_5b(15, 18, 13, // tri0 + 15, 19, 20, // tri1 + 15, 20, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 21, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_chn_model[] = { -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&chn_1_v[388], 5, 0), -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&chn_1_v[393], 14, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 2, 5, 6, // tri0 - 3, 4, 7, // tri1 - 4, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 0, 2, 10, // tri0 - 4, 1, 11, // tri1 - 3, 12, 13, // tri2 - 4, 14, 15 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 16, 17, 18, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&chn_1_v[388], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&chn_1_v[393], 14, 5), + gsSPNTrianglesInit_5b(7, // tri count + 2, 5, 6, // tri0 + 3, 4, 7, // tri1 + 4, 8, 9 // tri2 + ), + gsSPNTriangles_5b(0, 2, 10, // tri0 + 4, 1, 11, // tri1 + 3, 12, 13, // tri2 + 4, 14, 15 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 16, 17, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_chn_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&chn_1_v[407], 4, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&chn_1_v[411], 25, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 3, 4, // tri0 - 0, 5, 1, // tri1 - 0, 7, 6 // tri2 -), -gsSPNTriangles_5b( - 2, 1, 8, // tri0 - 2, 9, 10, // tri1 - 1, 11, 12, // tri2 - 3, 2, 13 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 14, 15, 16, // tri0 - 17, 18, 19, // tri1 - 16, 20, 14 // tri2 -), -gsSPNTriangles_5b( - 21, 22, 23, // tri0 - 21, 23, 24, // tri1 - 19, 25, 17, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsSPNTrianglesInit_5b( - 1, // tri count - 26, 27, 28, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&chn_1_v[407], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&chn_1_v[411], 25, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 4, // tri0 + 0, 5, 1, // tri1 + 0, 7, 6 // tri2 + ), + gsSPNTriangles_5b(2, 1, 8, // tri0 + 2, 9, 10, // tri1 + 1, 11, 12, // tri2 + 3, 2, 13 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 14, 15, 16, // tri0 + 17, 18, 19, // tri1 + 16, 20, 14 // tri2 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 21, 23, 24, // tri1 + 19, 25, 17, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsSPNTrianglesInit_5b(1, // tri count + 26, 27, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot3_chn_model[] = { -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&chn_1_v[292], 4, 0), -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&chn_1_v[296], 20, 4), -gsSPNTrianglesInit_5b( - 6, // tri count - 3, 4, 5, // tri0 - 3, 6, 1, // tri1 - 3, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 0, 2, 9, // tri0 - 3, 0, 10, // tri1 - 2, 11, 12, // tri2 - 0, 0, 0 // tri3 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 6, // tri count - 13, 14, 15, // tri0 - 13, 16, 17, // tri1 - 18, 16, 13 // tri2 -), -gsSPNTriangles_5b( - 15, 18, 13, // tri0 - 19, 20, 13, // tri1 - 17, 19, 13, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 21, 22, 23, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&chn_1_v[292], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&chn_1_v[296], 20, 4), + gsSPNTrianglesInit_5b(6, // tri count + 3, 4, 5, // tri0 + 3, 6, 1, // tri1 + 3, 7, 8 // tri2 + ), + gsSPNTriangles_5b(0, 2, 9, // tri0 + 3, 0, 10, // tri1 + 2, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(6, // tri count + 13, 14, 15, // tri0 + 13, 16, 17, // tri1 + 18, 16, 13 // tri2 + ), + gsSPNTriangles_5b(15, 18, 13, // tri0 + 19, 20, 13, // tri1 + 17, 19, 13, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 21, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_chn_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&chn_1_v[316], 5, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&chn_1_v[321], 14, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 2, 5, 6, // tri0 - 4, 3, 7, // tri1 - 4, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 2, 0, 10, // tri0 - 1, 4, 11, // tri1 - 3, 12, 13, // tri2 - 4, 14, 15 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 16, 17, 18, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&chn_1_v[316], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&chn_1_v[321], 14, 5), + gsSPNTrianglesInit_5b(7, // tri count + 2, 5, 6, // tri0 + 4, 3, 7, // tri1 + 4, 8, 9 // tri2 + ), + gsSPNTriangles_5b(2, 0, 10, // tri0 + 1, 4, 11, // tri1 + 3, 12, 13, // tri2 + 4, 14, 15 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 16, 17, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_chn_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&chn_1_v[335], 4, 0), -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&chn_1_v[339], 25, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 0, 4, // tri0 - 1, 5, 0, // tri1 - 0, 7, 6 // tri2 -), -gsSPNTriangles_5b( - 1, 2, 8, // tri0 - 2, 9, 10, // tri1 - 1, 11, 12, // tri2 - 2, 3, 13 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 14, 15, 16, // tri0 - 17, 18, 19, // tri1 - 16, 20, 14 // tri2 -), -gsSPNTriangles_5b( - 21, 22, 23, // tri0 - 21, 23, 24, // tri1 - 19, 25, 17, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsSPNTrianglesInit_5b( - 1, // tri count - 26, 27, 28, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&chn_1_v[335], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&chn_1_v[339], 25, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 0, 4, // tri0 + 1, 5, 0, // tri1 + 0, 7, 6 // tri2 + ), + gsSPNTriangles_5b(1, 2, 8, // tri0 + 2, 9, 10, // tri1 + 1, 11, 12, // tri2 + 2, 3, 13 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 14, 15, 16, // tri0 + 17, 18, 19, // tri1 + 16, 20, 14 // tri2 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 21, 23, 24, // tri1 + 19, 25, 17, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsSPNTrianglesInit_5b(1, // tri count + 26, 27, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx base_chn_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&chn_1_v[436], 14, 0), -gsSPNTrianglesInit_5b( - 12, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 2, 1 // tri2 -), -gsSPNTriangles_5b( - 7, 8, 9, // tri0 - 10, 2, 7, // tri1 - 10, 0, 2, // tri2 - 4, 11, 12 // tri3 -), -gsSPNTriangles_5b( - 5, 4, 13, // tri0 - 4, 12, 13, // tri1 - 3, 5, 9, // tri2 - 9, 8, 3 // tri3 -), -gsSPNTriangles_5b( - 9, 10, 7, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&chn_1_v[436], 14, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 2, 1 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 2, 7, // tri1 + 10, 0, 2, // tri2 + 4, 11, 12 // tri3 + ), + gsSPNTriangles_5b(5, 4, 13, // tri0 + 4, 12, 13, // tri1 + 3, 5, 9, // tri2 + 9, 8, 3 // tri3 + ), + gsSPNTriangles_5b(9, 10, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_chn_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -847,4 +754,4 @@ static cKF_Joint_R_c cKF_je_r_chn_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_chn_1 = { 26, 15, cKF_je_r_chn_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_chn_1 = { 26, 15, cKF_je_r_chn_1_tbl }; diff --git a/src/data/npc/model/mdl/cml_1.c b/src/data/npc/model/mdl/cml_1.c index 650bcad3..cec7081f 100644 --- a/src/data/npc/model/mdl/cml_1.c +++ b/src/data/npc/model/mdl/cml_1.c @@ -6,769 +6,674 @@ static Vtx cml_1_v[] = { }; static Gfx head_cml_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&cml_1_v[26], 6, 0), -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&cml_1_v[32], 16, 6), -gsSPNTrianglesInit_5b( - 11, // tri count - 2, 7, 6, // tri0 - 4, 1, 8, // tri1 - 2, 3, 9 // tri2 -), -gsSPNTriangles_5b( - 4, 10, 11, // tri0 - 1, 5, 12, // tri1 - 5, 2, 13, // tri2 - 5, 14, 15 // tri3 -), -gsSPNTriangles_5b( - 1, 17, 16, // tri0 - 3, 18, 19, // tri1 - 0, 4, 20, // tri2 - 3, 0, 21 // tri3 -), -gsSPVertex(&cml_1_v[48], 32, 0), -gsSPNTrianglesInit_5b( - 19, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 6, 7, 8, // tri0 - 2, 9, 3, // tri1 - 10, 11, 8, // tri2 - 2, 1, 12 // tri3 -), -gsSPNTriangles_5b( - 13, 0, 3, // tri0 - 14, 12, 15, // tri1 - 16, 17, 13, // tri2 - 13, 18, 19 // tri3 -), -gsSPNTriangles_5b( - 13, 19, 20, // tri0 - 12, 21, 15, // tri1 - 20, 16, 13, // tri2 - 14, 22, 12 // tri3 -), -gsSPNTriangles_5b( - 12, 23, 21, // tri0 - 24, 8, 25, // tri1 - 26, 4, 27, // tri2 - 28, 29, 30 // tri3 -), -gsSPVertex(&cml_1_v[79], 32, 0), -gsSPNTrianglesInit_5b( - 19, // tri count - 0, 1, 2, // tri0 - 2, 3, 0, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 4, 7, 8, // tri0 - 4, 8, 0, // tri1 - 7, 9, 10, // tri2 - 11, 12, 13 // tri3 -), -gsSPNTriangles_5b( - 14, 15, 16, // tri0 - 17, 18, 11, // tri1 - 14, 19, 20, // tri2 - 17, 21, 18 // tri3 -), -gsSPNTriangles_5b( - 22, 23, 24, // tri0 - 11, 9, 17, // tri1 - 9, 6, 17, // tri2 - 23, 12, 24 // tri3 -), -gsSPNTriangles_5b( - 25, 26, 27, // tri0 - 28, 16, 15, // tri1 - 10, 13, 29, // tri2 - 17, 6, 30 // tri3 -), -gsSPVertex(&cml_1_v[110], 32, 0), -gsSPNTrianglesInit_5b( - 23, // tri count - 0, 1, 2, // tri0 - 2, 1, 3, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 7, 8, 9, // tri0 - 3, 1, 10, // tri1 - 11, 12, 13, // tri2 - 6, 5, 14 // tri3 -), -gsSPNTriangles_5b( - 0, 15, 10, // tri0 - 16, 17, 18, // tri1 - 19, 20, 21, // tri2 - 19, 21, 18 // tri3 -), -gsSPNTriangles_5b( - 22, 13, 14, // tri0 - 19, 23, 14, // tri1 - 10, 4, 3, // tri2 - 6, 14, 13 // tri3 -), -gsSPNTriangles_5b( - 16, 9, 8, // tri0 - 22, 14, 23, // tri1 - 24, 3, 6, // tri2 - 25, 26, 27 // tri3 -), -gsSPNTriangles_5b( - 28, 29, 30, // tri0 - 28, 30, 8, // tri1 - 22, 30, 29, // tri2 - 27, 26, 11 // tri3 -), -gsSPVertex(&cml_1_v[141], 29, 0), -gsSPNTrianglesInit_5b( - 1, // tri count - 0, 1, 2, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 3, // tri count - 3, 4, 5, // tri0 - 6, 3, 5, // tri1 - 5, 7, 6 // tri2 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 8, 9, 10, // tri0 - 10, 11, 8, // tri1 - 12, 11, 10 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 253, 255, 255, 255), -gsSPNTrianglesInit_5b( - 8, // tri count - 13, 14, 15, // tri0 - 16, 17, 18, // tri1 - 18, 17, 15 // tri2 -), -gsSPNTriangles_5b( - 16, 19, 20, // tri0 - 18, 21, 16, // tri1 - 22, 15, 14, // tri2 - 15, 22, 18 // tri3 -), -gsSPNTriangles_5b( - 19, 16, 21, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000180, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPNTrianglesInit_5b( - 4, // tri count - 23, 24, 25, // tri0 - 24, 26, 25, // tri1 - 24, 27, 26 // tri2 -), -gsSPNTriangles_5b( - 28, 27, 24, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&cml_1_v[170], 5, 0), -gsSPNTrianglesInit_5b( - 3, // tri count - 0, 1, 2, // tri0 - 3, 1, 0, // tri1 - 4, 3, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cml_1_v[26], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cml_1_v[32], 16, 6), + gsSPNTrianglesInit_5b(11, // tri count + 2, 7, 6, // tri0 + 4, 1, 8, // tri1 + 2, 3, 9 // tri2 + ), + gsSPNTriangles_5b(4, 10, 11, // tri0 + 1, 5, 12, // tri1 + 5, 2, 13, // tri2 + 5, 14, 15 // tri3 + ), + gsSPNTriangles_5b(1, 17, 16, // tri0 + 3, 18, 19, // tri1 + 0, 4, 20, // tri2 + 3, 0, 21 // tri3 + ), + gsSPVertex(&cml_1_v[48], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 2, 9, 3, // tri1 + 10, 11, 8, // tri2 + 2, 1, 12 // tri3 + ), + gsSPNTriangles_5b(13, 0, 3, // tri0 + 14, 12, 15, // tri1 + 16, 17, 13, // tri2 + 13, 18, 19 // tri3 + ), + gsSPNTriangles_5b(13, 19, 20, // tri0 + 12, 21, 15, // tri1 + 20, 16, 13, // tri2 + 14, 22, 12 // tri3 + ), + gsSPNTriangles_5b(12, 23, 21, // tri0 + 24, 8, 25, // tri1 + 26, 4, 27, // tri2 + 28, 29, 30 // tri3 + ), + gsSPVertex(&cml_1_v[79], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 8, // tri0 + 4, 8, 0, // tri1 + 7, 9, 10, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 17, 18, 11, // tri1 + 14, 19, 20, // tri2 + 17, 21, 18 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 11, 9, 17, // tri1 + 9, 6, 17, // tri2 + 23, 12, 24 // tri3 + ), + gsSPNTriangles_5b(25, 26, 27, // tri0 + 28, 16, 15, // tri1 + 10, 13, 29, // tri2 + 17, 6, 30 // tri3 + ), + gsSPVertex(&cml_1_v[110], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 3, 1, 10, // tri1 + 11, 12, 13, // tri2 + 6, 5, 14 // tri3 + ), + gsSPNTriangles_5b(0, 15, 10, // tri0 + 16, 17, 18, // tri1 + 19, 20, 21, // tri2 + 19, 21, 18 // tri3 + ), + gsSPNTriangles_5b(22, 13, 14, // tri0 + 19, 23, 14, // tri1 + 10, 4, 3, // tri2 + 6, 14, 13 // tri3 + ), + gsSPNTriangles_5b(16, 9, 8, // tri0 + 22, 14, 23, // tri1 + 24, 3, 6, // tri2 + 25, 26, 27 // tri3 + ), + gsSPNTriangles_5b(28, 29, 30, // tri0 + 28, 30, 8, // tri1 + 22, 30, 29, // tri2 + 27, 26, 11 // tri3 + ), + gsSPVertex(&cml_1_v[141], 29, 0), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 3, 4, 5, // tri0 + 6, 3, 5, // tri1 + 5, 7, 6 // tri2 + ), + gsSPNTrianglesInit_5b(3, // tri count + 8, 9, 10, // tri0 + 10, 11, 8, // tri1 + 12, 11, 10 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 253, 255, 255, 255), + gsSPNTrianglesInit_5b(8, // tri count + 13, 14, 15, // tri0 + 16, 17, 18, // tri1 + 18, 17, 15 // tri2 + ), + gsSPNTriangles_5b(16, 19, 20, // tri0 + 18, 21, 16, // tri1 + 22, 15, 14, // tri2 + 15, 22, 18 // tri3 + ), + gsSPNTriangles_5b(19, 16, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x180, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPNTrianglesInit_5b(4, // tri count + 23, 24, 25, // tri0 + 24, 26, 25, // tri1 + 24, 27, 26 // tri2 + ), + gsSPNTriangles_5b(28, 27, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&cml_1_v[170], 5, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 4, 3, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx mouth_cml_model[] = { -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&cml_1_v[0], 6, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&cml_1_v[6], 20, 6), -gsSPNTrianglesInit_5b( - 6, // tri count - 1, 5, 6, // tri0 - 1, 7, 8, // tri1 - 0, 3, 9 // tri2 -), -gsSPNTriangles_5b( - 3, 10, 11, // tri0 - 5, 0, 12, // tri1 - 5, 13, 14, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 2, // tri count - 4, 2, 15, // tri0 - 2, 17, 16, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 3, // tri count - 18, 19, 20, // tri0 - 20, 21, 22, // tri1 - 20, 22, 18 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 1, // tri count - 23, 24, 25, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cml_1_v[0], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cml_1_v[6], 20, 6), + gsSPNTrianglesInit_5b(6, // tri count + 1, 5, 6, // tri0 + 1, 7, 8, // tri1 + 0, 3, 9 // tri2 + ), + gsSPNTriangles_5b(3, 10, 11, // tri0 + 5, 0, 12, // tri1 + 5, 13, 14, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 4, 2, 15, // tri0 + 2, 17, 16, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 18, 19, 20, // tri0 + 20, 21, 22, // tri1 + 20, 22, 18 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(1, // tri count + 23, 24, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_cml_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&cml_1_v[209], 4, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&cml_1_v[213], 16, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 4, 5, // tri0 - 3, 6, 7, // tri1 - 3, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 0, 1, 10, // tri0 - 1, 3, 11, // tri1 - 0, 12, 13, // tri2 - 2, 0, 14 // tri3 -), -gsSPNTriangles_5b( - 3, 2, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 16, 17, 18, // tri0 - 19, 18, 17, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cml_1_v[209], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cml_1_v[213], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 0, 4, 5, // tri0 + 3, 6, 7, // tri1 + 3, 8, 9 // tri2 + ), + gsSPNTriangles_5b(0, 1, 10, // tri0 + 1, 3, 11, // tri1 + 0, 12, 13, // tri2 + 2, 0, 14 // tri3 + ), + gsSPNTriangles_5b(3, 2, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 19, 18, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_cml_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&cml_1_v[229], 3, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&cml_1_v[232], 11, 3), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 2, 3, // tri0 - 2, 5, 4, // tri1 - 1, 7, 6 // tri2 -), -gsSPNTriangles_5b( - 2, 1, 8, // tri0 - 1, 0, 9, // tri1 - 0, 10, 11, // tri2 - 2, 12, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cml_1_v[229], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cml_1_v[232], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 0, 2, 3, // tri0 + 2, 5, 4, // tri1 + 1, 7, 6 // tri2 + ), + gsSPNTriangles_5b(2, 1, 8, // tri0 + 1, 0, 9, // tri1 + 0, 10, 11, // tri2 + 2, 12, 13 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_cml_model[] = { -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&cml_1_v[175], 4, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&cml_1_v[179], 16, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 4, 5, // tri0 - 3, 6, 7, // tri1 - 3, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 10, // tri0 - 3, 1, 11, // tri1 - 0, 12, 13, // tri2 - 0, 2, 14 // tri3 -), -gsSPNTriangles_5b( - 2, 3, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 16, 17, 18, // tri0 - 17, 16, 19, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cml_1_v[175], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cml_1_v[179], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 0, 4, 5, // tri0 + 3, 6, 7, // tri1 + 3, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 0, 10, // tri0 + 3, 1, 11, // tri1 + 0, 12, 13, // tri2 + 0, 2, 14 // tri3 + ), + gsSPNTriangles_5b(2, 3, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_cml_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&cml_1_v[195], 3, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&cml_1_v[198], 11, 3), -gsSPNTrianglesInit_5b( - 7, // tri count - 2, 0, 3, // tri0 - 2, 5, 4, // tri1 - 1, 7, 6 // tri2 -), -gsSPNTriangles_5b( - 1, 2, 8, // tri0 - 0, 1, 9, // tri1 - 0, 10, 11, // tri2 - 2, 12, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cml_1_v[195], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cml_1_v[198], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 2, 0, 3, // tri0 + 2, 5, 4, // tri1 + 1, 7, 6 // tri2 + ), + gsSPNTriangles_5b(1, 2, 8, // tri0 + 0, 1, 9, // tri1 + 0, 10, 11, // tri2 + 2, 12, 13 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_cml_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&cml_1_v[243], 8, 0), -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0005C0, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&cml_1_v[251], 24, 8), -gsSPNTrianglesInit_5b( - 16, // tri count - 7, 4, 8, // tri0 - 2, 9, 10, // tri1 - 0, 11, 12 // tri2 -), -gsSPNTriangles_5b( - 5, 13, 14, // tri0 - 4, 2, 15, // tri1 - 5, 16, 0, // tri2 - 5, 17, 18 // tri3 -), -gsSPNTriangles_5b( - 6, 19, 20, // tri0 - 3, 6, 21, // tri1 - 3, 22, 5, // tri2 - 7, 23, 24 // tri3 -), -gsSPNTriangles_5b( - 7, 25, 6, // tri0 - 1, 26, 27, // tri1 - 2, 1, 28, // tri2 - 1, 0, 29 // tri3 -), -gsSPNTriangles_5b( - 3, 30, 31, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&cml_1_v[275], 26, 0), -gsSPNTrianglesInit_5b( - 28, // tri count - 0, 1, 2, // tri0 - 2, 1, 3, // tri1 - 2, 3, 4 // tri2 -), -gsSPNTriangles_5b( - 5, 6, 7, // tri0 - 5, 7, 8, // tri1 - 9, 10, 11, // tri2 - 1, 0, 12 // tri3 -), -gsSPNTriangles_5b( - 13, 6, 11, // tri0 - 12, 0, 14, // tri1 - 15, 12, 16, // tri2 - 11, 10, 17 // tri3 -), -gsSPNTriangles_5b( - 17, 13, 11, // tri0 - 6, 13, 16, // tri1 - 10, 3, 15, // tri2 - 14, 7, 16 // tri3 -), -gsSPNTriangles_5b( - 14, 16, 12, // tri0 - 16, 7, 6, // tri1 - 15, 3, 1, // tri2 - 11, 6, 5 // tri3 -), -gsSPNTriangles_5b( - 4, 3, 10, // tri0 - 4, 10, 9, // tri1 - 8, 7, 14, // tri2 - 8, 14, 18 // tri3 -), -gsSPNTriangles_5b( - 18, 14, 0, // tri0 - 16, 13, 17, // tri1 - 16, 17, 15, // tri2 - 15, 17, 10 // tri3 -), -gsSPNTriangles_5b( - 1, 12, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 3, // tri count - 19, 20, 21, // tri0 - 22, 23, 24, // tri1 - 19, 25, 20 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsSPVertex(&cml_1_v[301], 30, 0), -gsSPNTrianglesInit_5b( - 5, // tri count - 0, 1, 2, // tri0 - 3, 4, 2, // tri1 - 2, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 7, 5, 2, // tri0 - 2, 8, 9, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 3, // tri count - 10, 11, 12, // tri0 - 10, 12, 13, // tri1 - 11, 14, 12 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0004C0, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsSPNTrianglesInit_5b( - 5, // tri count - 15, 16, 17, // tri0 - 18, 19, 20, // tri1 - 20, 21, 17 // tri2 -), -gsSPNTriangles_5b( - 22, 23, 17, // tri0 - 17, 16, 24, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 3, // tri count - 25, 26, 27, // tri0 - 28, 25, 27, // tri1 - 28, 27, 29 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsSPVertex(&cml_1_v[331], 28, 0), -gsSPNTrianglesInit_5b( - 5, // tri count - 0, 1, 2, // tri0 - 2, 3, 4, // tri1 - 5, 6, 2 // tri2 -), -gsSPNTriangles_5b( - 2, 7, 8, // tri0 - 9, 10, 2, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 3, // tri count - 11, 12, 13, // tri0 - 12, 14, 15, // tri1 - 12, 15, 13 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 5, // tri count - 16, 17, 18, // tri0 - 19, 20, 21, // tri1 - 18, 22, 23 // tri2 -), -gsSPNTriangles_5b( - 24, 25, 18, // tri0 - 19, 26, 27, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000580, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&cml_1_v[359], 26, 0), -gsSPNTrianglesInit_5b( - 2, // tri count - 0, 1, 2, // tri0 - 2, 1, 3, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 2, // tri count - 4, 5, 6, // tri0 - 7, 5, 4, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0005C0, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 20, // tri count - 8, 9, 10, // tri0 - 8, 10, 11, // tri1 - 12, 13, 14 // tri2 -), -gsSPNTriangles_5b( - 12, 14, 15, // tri0 - 9, 8, 16, // tri1 - 16, 15, 14, // tri2 - 17, 18, 19 // tri3 -), -gsSPNTriangles_5b( - 11, 10, 17, // tri0 - 20, 10, 21, // tri1 - 22, 21, 9, // tri2 - 20, 17, 10 // tri3 -), -gsSPNTriangles_5b( - 17, 20, 18, // tri0 - 23, 24, 14, // tri1 - 19, 25, 13, // tri2 - 25, 23, 14 // tri3 -), -gsSPNTriangles_5b( - 19, 13, 17, // tri0 - 14, 24, 16, // tri1 - 16, 24, 9, // tri2 - 17, 13, 12 // tri3 -), -gsSPNTriangles_5b( - 9, 24, 22, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cml_1_v[243], 8, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x5C0, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cml_1_v[251], 24, 8), + gsSPNTrianglesInit_5b(16, // tri count + 7, 4, 8, // tri0 + 2, 9, 10, // tri1 + 0, 11, 12 // tri2 + ), + gsSPNTriangles_5b(5, 13, 14, // tri0 + 4, 2, 15, // tri1 + 5, 16, 0, // tri2 + 5, 17, 18 // tri3 + ), + gsSPNTriangles_5b(6, 19, 20, // tri0 + 3, 6, 21, // tri1 + 3, 22, 5, // tri2 + 7, 23, 24 // tri3 + ), + gsSPNTriangles_5b(7, 25, 6, // tri0 + 1, 26, 27, // tri1 + 2, 1, 28, // tri2 + 1, 0, 29 // tri3 + ), + gsSPNTriangles_5b(3, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&cml_1_v[275], 26, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 2, 3, 4 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 7, 8, // tri1 + 9, 10, 11, // tri2 + 1, 0, 12 // tri3 + ), + gsSPNTriangles_5b(13, 6, 11, // tri0 + 12, 0, 14, // tri1 + 15, 12, 16, // tri2 + 11, 10, 17 // tri3 + ), + gsSPNTriangles_5b(17, 13, 11, // tri0 + 6, 13, 16, // tri1 + 10, 3, 15, // tri2 + 14, 7, 16 // tri3 + ), + gsSPNTriangles_5b(14, 16, 12, // tri0 + 16, 7, 6, // tri1 + 15, 3, 1, // tri2 + 11, 6, 5 // tri3 + ), + gsSPNTriangles_5b(4, 3, 10, // tri0 + 4, 10, 9, // tri1 + 8, 7, 14, // tri2 + 8, 14, 18 // tri3 + ), + gsSPNTriangles_5b(18, 14, 0, // tri0 + 16, 13, 17, // tri1 + 16, 17, 15, // tri2 + 15, 17, 10 // tri3 + ), + gsSPNTriangles_5b(1, 12, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 19, 20, 21, // tri0 + 22, 23, 24, // tri1 + 19, 25, 20 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&cml_1_v[301], 30, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 2, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 2, // tri0 + 2, 8, 9, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 10, 11, 12, // tri0 + 10, 12, 13, // tri1 + 11, 14, 12 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x4C0, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPNTrianglesInit_5b(5, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 20, 21, 17 // tri2 + ), + gsSPNTriangles_5b(22, 23, 17, // tri0 + 17, 16, 24, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 25, 26, 27, // tri0 + 28, 25, 27, // tri1 + 28, 27, 29 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&cml_1_v[331], 28, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 5, 6, 2 // tri2 + ), + gsSPNTriangles_5b(2, 7, 8, // tri0 + 9, 10, 2, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 11, 12, 13, // tri0 + 12, 14, 15, // tri1 + 12, 15, 13 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(5, // tri count + 16, 17, 18, // tri0 + 19, 20, 21, // tri1 + 18, 22, 23 // tri2 + ), + gsSPNTriangles_5b(24, 25, 18, // tri0 + 19, 26, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x580, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cml_1_v[359], 26, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 4, 5, 6, // tri0 + 7, 5, 4, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x5C0, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(20, // tri count + 8, 9, 10, // tri0 + 8, 10, 11, // tri1 + 12, 13, 14 // tri2 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 9, 8, 16, // tri1 + 16, 15, 14, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(11, 10, 17, // tri0 + 20, 10, 21, // tri1 + 22, 21, 9, // tri2 + 20, 17, 10 // tri3 + ), + gsSPNTriangles_5b(17, 20, 18, // tri0 + 23, 24, 14, // tri1 + 19, 25, 13, // tri2 + 25, 23, 14 // tri3 + ), + gsSPNTriangles_5b(19, 13, 17, // tri0 + 14, 24, 16, // tri1 + 16, 24, 9, // tri2 + 17, 13, 12 // tri3 + ), + gsSPNTriangles_5b(9, 24, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_cml_model[] = { -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&cml_1_v[410], 4, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&cml_1_v[414], 14, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 0, 4, // tri0 - 0, 6, 5, // tri1 - 2, 8, 7 // tri2 -), -gsSPNTriangles_5b( - 0, 1, 9, // tri0 - 1, 2, 10, // tri1 - 2, 3, 11, // tri2 - 1, 12, 13 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 14, 15, 16, // tri0 - 17, 15, 14, // tri1 - 17, 16, 15 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cml_1_v[410], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cml_1_v[414], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 0, 4, // tri0 + 0, 6, 5, // tri1 + 2, 8, 7 // tri2 + ), + gsSPNTriangles_5b(0, 1, 9, // tri0 + 1, 2, 10, // tri1 + 2, 3, 11, // tri2 + 1, 12, 13 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 14, 15, 16, // tri0 + 17, 15, 14, // tri1 + 17, 16, 15 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_cml_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&cml_1_v[428], 7, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 5, 6, 3 // tri2 -), -gsSPNTriangles_5b( - 5, 0, 6, // tri0 - 2, 1, 4, // tri1 - 2, 6, 0, // tri2 - 3, 2, 4 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cml_1_v[428], 7, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 3 // tri2 + ), + gsSPNTriangles_5b(5, 0, 6, // tri0 + 2, 1, 4, // tri1 + 2, 6, 0, // tri2 + 3, 2, 4 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_cml_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&cml_1_v[385], 4, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&cml_1_v[389], 14, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 3, 4, // tri0 - 0, 6, 5, // tri1 - 2, 8, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 9, // tri0 - 2, 1, 10, // tri1 - 3, 2, 11, // tri2 - 1, 12, 13 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 14, 15, 16, // tri0 - 16, 15, 17, // tri1 - 15, 14, 17 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cml_1_v[385], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cml_1_v[389], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 4, // tri0 + 0, 6, 5, // tri1 + 2, 8, 7 // tri2 + ), + gsSPNTriangles_5b(1, 0, 9, // tri0 + 2, 1, 10, // tri1 + 3, 2, 11, // tri2 + 1, 12, 13 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 14, 15, 16, // tri0 + 16, 15, 17, // tri1 + 15, 14, 17 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_cml_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&cml_1_v[403], 7, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 5, 6, 3 // tri2 -), -gsSPNTriangles_5b( - 6, 2, 3, // tri0 - 4, 1, 0, // tri1 - 2, 6, 0, // tri2 - 4, 0, 5 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cml_1_v[403], 7, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 3 // tri2 + ), + gsSPNTriangles_5b(6, 2, 3, // tri0 + 4, 1, 0, // tri1 + 2, 6, 0, // tri2 + 4, 0, 5 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx base_cml_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000740, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 252, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&cml_1_v[435], 16, 0), -gsSPNTrianglesInit_5b( - 22, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 3, 6, 4 // tri2 -), -gsSPNTriangles_5b( - 3, 7, 6, // tri0 - 4, 6, 8, // tri1 - 8, 9, 4, // tri2 - 10, 9, 8 // tri3 -), -gsSPNTriangles_5b( - 2, 5, 11, // tri0 - 2, 11, 12, // tri1 - 13, 14, 15, // tri2 - 15, 12, 13 // tri3 -), -gsSPNTriangles_5b( - 12, 11, 13, // tri0 - 3, 2, 1, // tri1 - 3, 5, 2, // tri2 - 13, 10, 14 // tri3 -), -gsSPNTriangles_5b( - 9, 13, 11, // tri0 - 7, 3, 1, // tri1 - 9, 10, 13, // tri2 - 9, 11, 5 // tri3 -), -gsSPNTriangles_5b( - 9, 5, 4, // tri0 - 12, 15, 0, // tri1 - 2, 12, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x740, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 252, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cml_1_v[435], 16, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(3, 7, 6, // tri0 + 4, 6, 8, // tri1 + 8, 9, 4, // tri2 + 10, 9, 8 // tri3 + ), + gsSPNTriangles_5b(2, 5, 11, // tri0 + 2, 11, 12, // tri1 + 13, 14, 15, // tri2 + 15, 12, 13 // tri3 + ), + gsSPNTriangles_5b(12, 11, 13, // tri0 + 3, 2, 1, // tri1 + 3, 5, 2, // tri2 + 13, 10, 14 // tri3 + ), + gsSPNTriangles_5b(9, 13, 11, // tri0 + 7, 3, 1, // tri1 + 9, 10, 13, // tri2 + 9, 11, 5 // tri3 + ), + gsSPNTriangles_5b(9, 5, 4, // tri0 + 12, 15, 0, // tri1 + 2, 12, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_cml_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -800,4 +705,4 @@ static cKF_Joint_R_c cKF_je_r_cml_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_cml_1 = { 26, 12, cKF_je_r_cml_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_cml_1 = { 26, 12, cKF_je_r_cml_1_tbl }; diff --git a/src/data/npc/model/mdl/cow_1.c b/src/data/npc/model/mdl/cow_1.c index 37401c11..5a6cb699 100644 --- a/src/data/npc/model/mdl/cow_1.c +++ b/src/data/npc/model/mdl/cow_1.c @@ -6,708 +6,624 @@ static Vtx cow_1_v[] = { }; static Gfx head_cow_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&cow_1_v[0], 28, 0), -gsSPNTrianglesInit_5b( - 16, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 5, 7 // tri2 -), -gsSPNTriangles_5b( - 4, 8, 5, // tri0 - 6, 9, 10, // tri1 - 3, 11, 12, // tri2 - 6, 7, 9 // tri3 -), -gsSPNTriangles_5b( - 4, 13, 8, // tri0 - 0, 2, 3, // tri1 - 2, 11, 3, // tri2 - 10, 1, 0 // tri3 -), -gsSPNTriangles_5b( - 13, 4, 3, // tri0 - 3, 12, 13, // tri1 - 10, 0, 6, // tri2 - 5, 6, 0 // tri3 -), -gsSPNTriangles_5b( - 3, 5, 0, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 16, // tri count - 14, 15, 16, // tri0 - 17, 18, 19, // tri1 - 20, 17, 21 // tri2 -), -gsSPNTriangles_5b( - 17, 22, 18, // tri0 - 23, 24, 21, // tri1 - 25, 26, 19, // tri2 - 24, 20, 21 // tri3 -), -gsSPNTriangles_5b( - 22, 27, 18, // tri0 - 19, 14, 16, // tri1 - 19, 26, 14, // tri2 - 16, 15, 23 // tri3 -), -gsSPNTriangles_5b( - 19, 18, 27, // tri0 - 27, 25, 19, // tri1 - 21, 16, 23, // tri2 - 16, 21, 17 // tri3 -), -gsSPNTriangles_5b( - 16, 17, 19, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 48, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&cow_1_v[28], 27, 0), -gsSPNTrianglesInit_5b( - 38, // tri count - 0, 1, 2, // tri0 - 3, 4, 0, // tri1 - 5, 4, 3 // tri2 -), -gsSPNTriangles_5b( - 6, 7, 5, // tri0 - 1, 8, 2, // tri1 - 6, 9, 10, // tri2 - 10, 11, 2 // tri3 -), -gsSPNTriangles_5b( - 1, 0, 12, // tri0 - 0, 4, 13, // tri1 - 13, 4, 5, // tri2 - 14, 15, 16 // tri3 -), -gsSPNTriangles_5b( - 17, 12, 13, // tri0 - 5, 16, 13, // tri1 - 3, 9, 5, // tri2 - 3, 11, 10 // tri3 -), -gsSPNTriangles_5b( - 18, 19, 12, // tri0 - 20, 17, 16, // tri1 - 13, 16, 17, // tri2 - 12, 17, 18 // tri3 -), -gsSPNTriangles_5b( - 18, 21, 19, // tri0 - 22, 18, 17, // tri1 - 20, 21, 22, // tri2 - 15, 21, 20 // tri3 -), -gsSPNTriangles_5b( - 16, 15, 20, // tri0 - 22, 21, 18, // tri1 - 17, 20, 22, // tri2 - 0, 11, 3 // tri3 -), -gsSPNTriangles_5b( - 10, 9, 3, // tri0 - 2, 11, 0, // tri1 - 5, 9, 6, // tri2 - 12, 19, 23 // tri3 -), -gsSPNTriangles_5b( - 16, 5, 7, // tri0 - 6, 24, 7, // tri1 - 13, 12, 0, // tri2 - 7, 25, 14 // tri3 -), -gsSPNTriangles_5b( - 23, 26, 1, // tri0 - 1, 12, 23, // tri1 - 14, 16, 7, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&cow_1_v[55], 29, 0), -gsSPNTrianglesInit_5b( - 14, // tri count - 0, 1, 2, // tri0 - 3, 4, 2, // tri1 - 2, 4, 0 // tri2 -), -gsSPNTriangles_5b( - 5, 6, 7, // tri0 - 8, 4, 3, // tri1 - 7, 6, 9, // tri2 - 5, 10, 11 // tri3 -), -gsSPNTriangles_5b( - 5, 11, 6, // tri0 - 7, 12, 5, // tri1 - 9, 6, 8, // tri2 - 8, 11, 4 // tri3 -), -gsSPNTriangles_5b( - 10, 0, 4, // tri0 - 10, 4, 11, // tri1 - 8, 6, 11, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 5, // tri count - 13, 14, 15, // tri0 - 16, 17, 18, // tri1 - 18, 19, 16 // tri2 -), -gsSPNTriangles_5b( - 15, 17, 20, // tri0 - 20, 13, 15, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPSetPrimColor(0, 128, 253, 255, 255, 255), -gsSPNTrianglesInit_5b( - 5, // tri count - 21, 22, 23, // tri0 - 24, 25, 26, // tri1 - 25, 27, 26 // tri2 -), -gsSPNTriangles_5b( - 25, 28, 27, // tri0 - 23, 24, 21, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&cow_1_v[84], 28, 0), -gsSPNTrianglesInit_5b( - 14, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 5, 6, 1 // tri2 -), -gsSPNTriangles_5b( - 7, 8, 9, // tri0 - 10, 11, 12, // tri1 - 1, 0, 5, // tri2 - 1, 12, 11 // tri3 -), -gsSPNTriangles_5b( - 3, 2, 8, // tri0 - 5, 0, 3, // tri1 - 2, 3, 0, // tri2 - 8, 7, 3 // tri3 -), -gsSPNTriangles_5b( - 4, 3, 7, // tri0 - 11, 2, 1, // tri1 - 12, 1, 6, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 16, // tri count - 13, 14, 15, // tri0 - 16, 17, 18, // tri1 - 19, 20, 21 // tri2 -), -gsSPNTriangles_5b( - 14, 22, 23, // tri0 - 21, 15, 19, // tri1 - 20, 17, 16, // tri2 - 23, 19, 14 // tri3 -), -gsSPNTriangles_5b( - 23, 18, 17, // tri0 - 24, 25, 22, // tri1 - 18, 26, 27, // tri2 - 24, 22, 13 // tri3 -), -gsSPNTriangles_5b( - 16, 18, 27, // tri0 - 14, 19, 15, // tri1 - 17, 20, 19, // tri2 - 22, 14, 13 // tri3 -), -gsSPNTriangles_5b( - 17, 19, 23, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cow_1_v[0], 28, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 5, 7 // tri2 + ), + gsSPNTriangles_5b(4, 8, 5, // tri0 + 6, 9, 10, // tri1 + 3, 11, 12, // tri2 + 6, 7, 9 // tri3 + ), + gsSPNTriangles_5b(4, 13, 8, // tri0 + 0, 2, 3, // tri1 + 2, 11, 3, // tri2 + 10, 1, 0 // tri3 + ), + gsSPNTriangles_5b(13, 4, 3, // tri0 + 3, 12, 13, // tri1 + 10, 0, 6, // tri2 + 5, 6, 0 // tri3 + ), + gsSPNTriangles_5b(3, 5, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(16, // tri count + 14, 15, 16, // tri0 + 17, 18, 19, // tri1 + 20, 17, 21 // tri2 + ), + gsSPNTriangles_5b(17, 22, 18, // tri0 + 23, 24, 21, // tri1 + 25, 26, 19, // tri2 + 24, 20, 21 // tri3 + ), + gsSPNTriangles_5b(22, 27, 18, // tri0 + 19, 14, 16, // tri1 + 19, 26, 14, // tri2 + 16, 15, 23 // tri3 + ), + gsSPNTriangles_5b(19, 18, 27, // tri0 + 27, 25, 19, // tri1 + 21, 16, 23, // tri2 + 16, 21, 17 // tri3 + ), + gsSPNTriangles_5b(16, 17, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 48, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&cow_1_v[28], 27, 0), + gsSPNTrianglesInit_5b(38, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 4, 3 // tri2 + ), + gsSPNTriangles_5b(6, 7, 5, // tri0 + 1, 8, 2, // tri1 + 6, 9, 10, // tri2 + 10, 11, 2 // tri3 + ), + gsSPNTriangles_5b(1, 0, 12, // tri0 + 0, 4, 13, // tri1 + 13, 4, 5, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(17, 12, 13, // tri0 + 5, 16, 13, // tri1 + 3, 9, 5, // tri2 + 3, 11, 10 // tri3 + ), + gsSPNTriangles_5b(18, 19, 12, // tri0 + 20, 17, 16, // tri1 + 13, 16, 17, // tri2 + 12, 17, 18 // tri3 + ), + gsSPNTriangles_5b(18, 21, 19, // tri0 + 22, 18, 17, // tri1 + 20, 21, 22, // tri2 + 15, 21, 20 // tri3 + ), + gsSPNTriangles_5b(16, 15, 20, // tri0 + 22, 21, 18, // tri1 + 17, 20, 22, // tri2 + 0, 11, 3 // tri3 + ), + gsSPNTriangles_5b(10, 9, 3, // tri0 + 2, 11, 0, // tri1 + 5, 9, 6, // tri2 + 12, 19, 23 // tri3 + ), + gsSPNTriangles_5b(16, 5, 7, // tri0 + 6, 24, 7, // tri1 + 13, 12, 0, // tri2 + 7, 25, 14 // tri3 + ), + gsSPNTriangles_5b(23, 26, 1, // tri0 + 1, 12, 23, // tri1 + 14, 16, 7, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&cow_1_v[55], 29, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 4, 3, // tri1 + 7, 6, 9, // tri2 + 5, 10, 11 // tri3 + ), + gsSPNTriangles_5b(5, 11, 6, // tri0 + 7, 12, 5, // tri1 + 9, 6, 8, // tri2 + 8, 11, 4 // tri3 + ), + gsSPNTriangles_5b(10, 0, 4, // tri0 + 10, 4, 11, // tri1 + 8, 6, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(5, // tri count + 13, 14, 15, // tri0 + 16, 17, 18, // tri1 + 18, 19, 16 // tri2 + ), + gsSPNTriangles_5b(15, 17, 20, // tri0 + 20, 13, 15, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetPrimColor(0, 128, 253, 255, 255, 255), + gsSPNTrianglesInit_5b(5, // tri count + 21, 22, 23, // tri0 + 24, 25, 26, // tri1 + 25, 27, 26 // tri2 + ), + gsSPNTriangles_5b(25, 28, 27, // tri0 + 23, 24, 21, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cow_1_v[84], 28, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 1 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 1, 0, 5, // tri2 + 1, 12, 11 // tri3 + ), + gsSPNTriangles_5b(3, 2, 8, // tri0 + 5, 0, 3, // tri1 + 2, 3, 0, // tri2 + 8, 7, 3 // tri3 + ), + gsSPNTriangles_5b(4, 3, 7, // tri0 + 11, 2, 1, // tri1 + 12, 1, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(16, // tri count + 13, 14, 15, // tri0 + 16, 17, 18, // tri1 + 19, 20, 21 // tri2 + ), + gsSPNTriangles_5b(14, 22, 23, // tri0 + 21, 15, 19, // tri1 + 20, 17, 16, // tri2 + 23, 19, 14 // tri3 + ), + gsSPNTriangles_5b(23, 18, 17, // tri0 + 24, 25, 22, // tri1 + 18, 26, 27, // tri2 + 24, 22, 13 // tri3 + ), + gsSPNTriangles_5b(16, 18, 27, // tri0 + 14, 19, 15, // tri1 + 17, 20, 19, // tri2 + 22, 14, 13 // tri3 + ), + gsSPNTriangles_5b(17, 19, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_cow_model[] = { -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&cow_1_v[148], 5, 0), -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&cow_1_v[153], 16, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 5, 6, // tri0 - 4, 7, 8, // tri1 - 4, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 0, 1, 11, // tri0 - 2, 4, 12, // tri1 - 0, 13, 14, // tri2 - 3, 0, 15 // tri3 -), -gsSPNTriangles_5b( - 4, 3, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 20, 19, 18, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cow_1_v[148], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cow_1_v[153], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(0, 1, 11, // tri0 + 2, 4, 12, // tri1 + 0, 13, 14, // tri2 + 3, 0, 15 // tri3 + ), + gsSPNTriangles_5b(4, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 19, 18, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_cow_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&cow_1_v[169], 4, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&cow_1_v[173], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 0, 6, 7, // tri1 - 2, 0, 8 // tri2 -), -gsSPNTriangles_5b( - 3, 2, 9, // tri0 - 2, 11, 10, // tri1 - 3, 13, 12, // tri2 - 1, 3, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cow_1_v[169], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cow_1_v[173], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 2, 0, 8 // tri2 + ), + gsSPNTriangles_5b(3, 2, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 1, 3, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_cow_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&cow_1_v[112], 5, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&cow_1_v[117], 16, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 5, 6, // tri0 - 4, 7, 8, // tri1 - 4, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 11, // tri0 - 4, 2, 12, // tri1 - 0, 13, 14, // tri2 - 0, 3, 15 // tri3 -), -gsSPNTriangles_5b( - 3, 4, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 18, 17, 20, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cow_1_v[112], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cow_1_v[117], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 + ), + gsSPNTriangles_5b(3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_cow_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&cow_1_v[133], 4, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&cow_1_v[137], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 0, 6, 7, // tri1 - 0, 2, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 3, 9, // tri0 - 2, 11, 10, // tri1 - 3, 13, 12, // tri2 - 3, 1, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cow_1_v[133], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cow_1_v[137], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 + ), + gsSPNTriangles_5b(2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_cow_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&cow_1_v[184], 7, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 252, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&cow_1_v[191], 20, 7), -gsSPNTrianglesInit_5b( - 13, // tri count - 4, 7, 1, // tri0 - 5, 0, 8, // tri1 - 2, 6, 9 // tri2 -), -gsSPNTriangles_5b( - 6, 3, 10, // tri0 - 1, 11, 12, // tri1 - 0, 13, 14, // tri2 - 0, 15, 16 // tri3 -), -gsSPNTriangles_5b( - 1, 18, 17, // tri0 - 2, 19, 20, // tri1 - 2, 21, 0, // tri2 - 3, 22, 23 // tri3 -), -gsSPNTriangles_5b( - 6, 24, 25, // tri0 - 3, 1, 26, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&cow_1_v[211], 11, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 5, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 8, 1, 9, // tri0 - 10, 6, 0, // tri1 - 2, 1, 8, // tri2 - 7, 3, 5 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cow_1_v[184], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cow_1_v[191], 20, 7), + gsSPNTrianglesInit_5b(13, // tri count + 4, 7, 1, // tri0 + 5, 0, 8, // tri1 + 2, 6, 9 // tri2 + ), + gsSPNTriangles_5b(6, 3, 10, // tri0 + 1, 11, 12, // tri1 + 0, 13, 14, // tri2 + 0, 15, 16 // tri3 + ), + gsSPNTriangles_5b(1, 18, 17, // tri0 + 2, 19, 20, // tri1 + 2, 21, 0, // tri2 + 3, 22, 23 // tri3 + ), + gsSPNTriangles_5b(6, 24, 25, // tri0 + 3, 1, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&cow_1_v[211], 11, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 1, 9, // tri0 + 10, 6, 0, // tri1 + 2, 1, 8, // tri2 + 7, 3, 5 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail1_cow_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&cow_1_v[236], 8, 0), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 1, 0, 4 // tri2 -), -gsSPNTriangles_5b( - 4, 3, 1, // tri0 - 0, 2, 6, // tri1 - 7, 5, 6, // tri2 - 6, 2, 7 // tri3 -), -gsSPNTriangles_5b( - 5, 7, 3, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cow_1_v[236], 8, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 0, 4 // tri2 + ), + gsSPNTriangles_5b(4, 3, 1, // tri0 + 0, 2, 6, // tri1 + 7, 5, 6, // tri2 + 6, 2, 7 // tri3 + ), + gsSPNTriangles_5b(5, 7, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail2_cow_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&cow_1_v[222], 4, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&cow_1_v[226], 10, 4), -gsSPNTrianglesInit_5b( - 4, // tri count - 2, 1, 4, // tri0 - 3, 2, 5, // tri1 - 0, 3, 6 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 7, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 8, // tri count - 8, 9, 10, // tri0 - 11, 9, 12, // tri1 - 12, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 10, 9, 11, // tri0 - 10, 11, 13, // tri1 - 13, 11, 12, // tri2 - 13, 8, 10 // tri3 -), -gsSPNTriangles_5b( - 12, 8, 13, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cow_1_v[222], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cow_1_v[226], 10, 4), + gsSPNTrianglesInit_5b(4, // tri count + 2, 1, 4, // tri0 + 3, 2, 5, // tri1 + 0, 3, 6 // tri2 + ), + gsSPNTriangles_5b(1, 0, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(8, // tri count + 8, 9, 10, // tri0 + 11, 9, 12, // tri1 + 12, 9, 8 // tri2 + ), + gsSPNTriangles_5b(10, 9, 11, // tri0 + 10, 11, 13, // tri1 + 13, 11, 12, // tri2 + 13, 8, 10 // tri3 + ), + gsSPNTriangles_5b(12, 8, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_cow_model[] = { -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&cow_1_v[293], 5, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&cow_1_v[298], 17, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 0, 5, // tri0 - 0, 7, 6, // tri1 - 2, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 0, 1, 10, // tri0 - 1, 2, 11, // tri1 - 2, 4, 12, // tri2 - 1, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 15, 16, 17, // tri0 - 18, 19, 15, // tri1 - 20, 17, 21 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cow_1_v[293], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cow_1_v[298], 17, 5), + gsSPNTrianglesInit_5b(7, // tri count + 3, 0, 5, // tri0 + 0, 7, 6, // tri1 + 2, 9, 8 // tri2 + ), + gsSPNTriangles_5b(0, 1, 10, // tri0 + 1, 2, 11, // tri1 + 2, 4, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 15, // tri1 + 20, 17, 21 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_cow_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&cow_1_v[315], 4, 0), -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 252, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&cow_1_v[319], 22, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 3, 4, // tri0 - 0, 5, 1, // tri1 - 1, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 3, 2, 8, // tri0 - 2, 9, 10, // tri1 - 2, 1, 11, // tri2 - 0, 13, 12 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 14, 15, 16, // tri0 - 14, 16, 17, // tri1 - 17, 18, 14 // tri2 -), -gsSPNTriangles_5b( - 15, 19, 20, // tri0 - 21, 22, 18, // tri1 - 20, 16, 15, // tri2 - 17, 21, 18 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 252, 124), -gsSPNTrianglesInit_5b( - 1, // tri count - 23, 24, 25, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cow_1_v[315], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cow_1_v[319], 22, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 4, // tri0 + 0, 5, 1, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b(3, 2, 8, // tri0 + 2, 9, 10, // tri1 + 2, 1, 11, // tri2 + 0, 13, 12 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 14, 15, 16, // tri0 + 14, 16, 17, // tri1 + 17, 18, 14 // tri2 + ), + gsSPNTriangles_5b(15, 19, 20, // tri0 + 21, 22, 18, // tri1 + 20, 16, 15, // tri2 + 17, 21, 18 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsSPNTrianglesInit_5b(1, // tri count + 23, 24, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_cow_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&cow_1_v[244], 5, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&cow_1_v[249], 17, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 3, 5, // tri0 - 0, 7, 6, // tri1 - 2, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 10, // tri0 - 2, 1, 11, // tri1 - 4, 2, 12, // tri2 - 1, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 15, 16, 17, // tri0 - 17, 18, 19, // tri1 - 20, 15, 21 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cow_1_v[244], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cow_1_v[249], 17, 5), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 5, // tri0 + 0, 7, 6, // tri1 + 2, 9, 8 // tri2 + ), + gsSPNTriangles_5b(1, 0, 10, // tri0 + 2, 1, 11, // tri1 + 4, 2, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 17, 18, 19, // tri1 + 20, 15, 21 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_cow_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&cow_1_v[266], 5, 0), -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 252, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&cow_1_v[271], 22, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 5, // tri0 - 4, 6, 7, // tri1 - 3, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 4, 0, 10, // tri0 - 0, 11, 12, // tri1 - 4, 13, 3, // tri2 - 2, 3, 14 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 15, 16, 17, // tri0 - 18, 19, 20, // tri1 - 15, 21, 16 // tri2 -), -gsSPNTriangles_5b( - 20, 22, 18, // tri0 - 23, 15, 17, // tri1 - 17, 19, 23, // tri2 - 19, 18, 23 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 252, 124), -gsSPNTrianglesInit_5b( - 1, // tri count - 24, 25, 26, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cow_1_v[266], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cow_1_v[271], 22, 5), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 5, // tri0 + 4, 6, 7, // tri1 + 3, 9, 8 // tri2 + ), + gsSPNTriangles_5b(4, 0, 10, // tri0 + 0, 11, 12, // tri1 + 4, 13, 3, // tri2 + 2, 3, 14 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 15, 21, 16 // tri2 + ), + gsSPNTriangles_5b(20, 22, 18, // tri0 + 23, 15, 17, // tri1 + 17, 19, 23, // tri2 + 19, 18, 23 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsSPNTrianglesInit_5b(1, // tri count + 24, 25, 26, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx base_cow_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 252, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&cow_1_v[341], 14, 0), -gsSPNTrianglesInit_5b( - 12, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 5, 6, 3 // tri2 -), -gsSPNTriangles_5b( - 5, 7, 8, // tri0 - 4, 0, 2, // tri1 - 0, 9, 1, // tri2 - 7, 10, 11 // tri3 -), -gsSPNTriangles_5b( - 7, 11, 8, // tri0 - 10, 12, 11, // tri1 - 3, 0, 4, // tri2 - 13, 11, 12 // tri3 -), -gsSPNTriangles_5b( - 8, 6, 5, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cow_1_v[341], 14, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 3 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 4, 0, 2, // tri1 + 0, 9, 1, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b(7, 11, 8, // tri0 + 10, 12, 11, // tri1 + 3, 0, 4, // tri2 + 13, 11, 12 // tri3 + ), + gsSPNTriangles_5b(8, 6, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_cow_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -739,4 +655,4 @@ static cKF_Joint_R_c cKF_je_r_cow_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_cow_1 = { 26, 13, cKF_je_r_cow_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_cow_1 = { 26, 13, cKF_je_r_cow_1_tbl }; diff --git a/src/data/npc/model/mdl/crd_1.c b/src/data/npc/model/mdl/crd_1.c index 4a0e62f8..4cf2adf8 100644 --- a/src/data/npc/model/mdl/crd_1.c +++ b/src/data/npc/model/mdl/crd_1.c @@ -6,740 +6,652 @@ static Vtx crd_1_v[] = { }; static Gfx head_crd_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000180, G_IM_FMT_CI, 16, 48, 15, GX_MIRROR, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 188), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&crd_1_v[49], 32, 0), -gsSPNTrianglesInit_5b( - 45, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 1 // tri2 -), -gsSPNTriangles_5b( - 8, 9, 10, // tri0 - 8, 5, 9, // tri1 - 11, 12, 13, // tri2 - 6, 14, 7 // tri3 -), -gsSPNTriangles_5b( - 15, 16, 17, // tri0 - 13, 18, 11, // tri1 - 15, 17, 6, // tri2 - 7, 2, 1 // tri3 -), -gsSPNTriangles_5b( - 9, 19, 10, // tri0 - 5, 8, 3, // tri1 - 2, 20, 0, // tri2 - 21, 12, 22 // tri3 -), -gsSPNTriangles_5b( - 12, 11, 22, // tri0 - 8, 12, 21, // tri1 - 15, 22, 16, // tri2 - 23, 24, 16 // tri3 -), -gsSPNTriangles_5b( - 11, 25, 23, // tri0 - 1, 0, 3, // tri1 - 1, 3, 8, // tri2 - 12, 8, 10 // tri3 -), -gsSPNTriangles_5b( - 16, 24, 26, // tri0 - 17, 16, 27, // tri1 - 28, 25, 29, // tri2 - 29, 25, 11 // tri3 -), -gsSPNTriangles_5b( - 28, 26, 24, // tri0 - 23, 25, 28, // tri1 - 6, 1, 15, // tri2 - 10, 13, 12 // tri3 -), -gsSPNTriangles_5b( - 7, 14, 30, // tri0 - 5, 4, 31, // tri1 - 30, 20, 2, // tri2 - 2, 7, 30 // tri3 -), -gsSPNTriangles_5b( - 31, 19, 9, // tri0 - 9, 5, 31, // tri1 - 21, 15, 1, // tri2 - 1, 8, 21 // tri3 -), -gsSPNTriangles_5b( - 22, 15, 21, // tri0 - 28, 24, 23, // tri1 - 16, 22, 23, // tri2 - 23, 22, 11 // tri3 -), -gsSPNTriangles_5b( - 11, 18, 29, // tri0 - 26, 27, 16, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&crd_1_v[81], 18, 0), -gsSPNTrianglesInit_5b( - 19, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 3, 6, 4 // tri2 -), -gsSPNTriangles_5b( - 0, 2, 7, // tri0 - 5, 4, 1, // tri1 - 7, 2, 8, // tri2 - 9, 10, 11 // tri3 -), -gsSPNTriangles_5b( - 11, 12, 9, // tri0 - 6, 13, 14, // tri1 - 14, 15, 6, // tri2 - 11, 16, 12 // tri3 -), -gsSPNTriangles_5b( - 5, 1, 0, // tri0 - 1, 9, 2, // tri1 - 2, 12, 8, // tri2 - 15, 1, 4 // tri3 -), -gsSPNTriangles_5b( - 6, 15, 4, // tri0 - 12, 2, 9, // tri1 - 14, 17, 15, // tri2 - 15, 9, 1 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&crd_1_v[99], 31, 0), -gsSPNTrianglesInit_5b( - 32, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 7, 1, 8, // tri0 - 9, 10, 11, // tri1 - 12, 13, 2, // tri2 - 3, 2, 6 // tri3 -), -gsSPNTriangles_5b( - 10, 14, 15, // tri0 - 11, 16, 17, // tri1 - 10, 15, 11, // tri2 - 11, 17, 9 // tri3 -), -gsSPNTriangles_5b( - 12, 11, 15, // tri0 - 7, 18, 16, // tri1 - 19, 8, 20, // tri2 - 20, 8, 1 // tri3 -), -gsSPNTriangles_5b( - 20, 1, 0, // tri0 - 2, 1, 12, // tri1 - 7, 11, 1, // tri2 - 8, 21, 22 // tri3 -), -gsSPNTriangles_5b( - 13, 15, 2, // tri0 - 1, 11, 12, // tri1 - 2, 15, 14, // tri2 - 15, 13, 12 // tri3 -), -gsSPNTriangles_5b( - 8, 16, 18, // tri0 - 8, 18, 7, // tri1 - 16, 11, 7, // tri2 - 21, 8, 19 // tri3 -), -gsSPNTriangles_5b( - 6, 2, 4, // tri0 - 14, 4, 2, // tri1 - 22, 16, 8, // tri2 - 19, 23, 21 // tri3 -), -gsSPNTriangles_5b( - 16, 22, 17, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), -gsDPSetTileSize(0, 0, 0, 60, 60), -gsSPNTrianglesInit_5b( - 5, // tri count - 24, 25, 26, // tri0 - 26, 25, 27, // tri1 - 25, 28, 29 // tri2 -), -gsSPNTriangles_5b( - 27, 25, 29, // tri0 - 30, 24, 26, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&crd_1_v[130], 10, 0), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 4, 0, 3 // tri2 -), -gsSPNTriangles_5b( - 5, 6, 4, // tri0 - 5, 4, 3, // tri1 - 7, 8, 9, // tri2 - 6, 9, 4 // tri3 -), -gsSPNTriangles_5b( - 7, 9, 6, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x180, G_IM_FMT_CI, 16, 48, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 188), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&crd_1_v[49], 32, 0), + gsSPNTrianglesInit_5b(45, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 1 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 8, 5, 9, // tri1 + 11, 12, 13, // tri2 + 6, 14, 7 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 13, 18, 11, // tri1 + 15, 17, 6, // tri2 + 7, 2, 1 // tri3 + ), + gsSPNTriangles_5b(9, 19, 10, // tri0 + 5, 8, 3, // tri1 + 2, 20, 0, // tri2 + 21, 12, 22 // tri3 + ), + gsSPNTriangles_5b(12, 11, 22, // tri0 + 8, 12, 21, // tri1 + 15, 22, 16, // tri2 + 23, 24, 16 // tri3 + ), + gsSPNTriangles_5b(11, 25, 23, // tri0 + 1, 0, 3, // tri1 + 1, 3, 8, // tri2 + 12, 8, 10 // tri3 + ), + gsSPNTriangles_5b(16, 24, 26, // tri0 + 17, 16, 27, // tri1 + 28, 25, 29, // tri2 + 29, 25, 11 // tri3 + ), + gsSPNTriangles_5b(28, 26, 24, // tri0 + 23, 25, 28, // tri1 + 6, 1, 15, // tri2 + 10, 13, 12 // tri3 + ), + gsSPNTriangles_5b(7, 14, 30, // tri0 + 5, 4, 31, // tri1 + 30, 20, 2, // tri2 + 2, 7, 30 // tri3 + ), + gsSPNTriangles_5b(31, 19, 9, // tri0 + 9, 5, 31, // tri1 + 21, 15, 1, // tri2 + 1, 8, 21 // tri3 + ), + gsSPNTriangles_5b(22, 15, 21, // tri0 + 28, 24, 23, // tri1 + 16, 22, 23, // tri2 + 23, 22, 11 // tri3 + ), + gsSPNTriangles_5b(11, 18, 29, // tri0 + 26, 27, 16, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&crd_1_v[81], 18, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(0, 2, 7, // tri0 + 5, 4, 1, // tri1 + 7, 2, 8, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b(11, 12, 9, // tri0 + 6, 13, 14, // tri1 + 14, 15, 6, // tri2 + 11, 16, 12 // tri3 + ), + gsSPNTriangles_5b(5, 1, 0, // tri0 + 1, 9, 2, // tri1 + 2, 12, 8, // tri2 + 15, 1, 4 // tri3 + ), + gsSPNTriangles_5b(6, 15, 4, // tri0 + 12, 2, 9, // tri1 + 14, 17, 15, // tri2 + 15, 9, 1 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&crd_1_v[99], 31, 0), + gsSPNTrianglesInit_5b(32, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 1, 8, // tri0 + 9, 10, 11, // tri1 + 12, 13, 2, // tri2 + 3, 2, 6 // tri3 + ), + gsSPNTriangles_5b(10, 14, 15, // tri0 + 11, 16, 17, // tri1 + 10, 15, 11, // tri2 + 11, 17, 9 // tri3 + ), + gsSPNTriangles_5b(12, 11, 15, // tri0 + 7, 18, 16, // tri1 + 19, 8, 20, // tri2 + 20, 8, 1 // tri3 + ), + gsSPNTriangles_5b(20, 1, 0, // tri0 + 2, 1, 12, // tri1 + 7, 11, 1, // tri2 + 8, 21, 22 // tri3 + ), + gsSPNTriangles_5b(13, 15, 2, // tri0 + 1, 11, 12, // tri1 + 2, 15, 14, // tri2 + 15, 13, 12 // tri3 + ), + gsSPNTriangles_5b(8, 16, 18, // tri0 + 8, 18, 7, // tri1 + 16, 11, 7, // tri2 + 21, 8, 19 // tri3 + ), + gsSPNTriangles_5b(6, 2, 4, // tri0 + 14, 4, 2, // tri1 + 22, 16, 8, // tri2 + 19, 23, 21 // tri3 + ), + gsSPNTriangles_5b(16, 22, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 60, 60), + gsSPNTrianglesInit_5b(5, // tri count + 24, 25, 26, // tri0 + 26, 25, 27, // tri1 + 25, 28, 29 // tri2 + ), + gsSPNTriangles_5b(27, 25, 29, // tri0 + 30, 24, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&crd_1_v[130], 10, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 4, // tri0 + 5, 4, 3, // tri1 + 7, 8, 9, // tri2 + 6, 9, 4 // tri3 + ), + gsSPNTriangles_5b(7, 9, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx mouth_crd_model[] = { -gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&crd_1_v[0], 7, 0), -gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&crd_1_v[7], 22, 7), -gsSPNTrianglesInit_5b( - 8, // tri count - 5, 7, 8, // tri0 - 6, 5, 9, // tri1 - 6, 10, 11 // tri2 -), -gsSPNTriangles_5b( - 4, 12, 13, // tri0 - 0, 6, 14, // tri1 - 5, 15, 16, // tri2 - 5, 4, 17 // tri3 -), -gsSPNTriangles_5b( - 4, 3, 18, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), -gsDPSetTileSize(0, 0, 0, 60, 60), -gsSPNTrianglesInit_5b( - 2, // tri count - 2, 19, 20, // tri0 - 1, 21, 2, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 3, // tri count - 22, 23, 24, // tri0 - 25, 26, 27, // tri1 - 26, 28, 27 // tri2 -), -gsSPVertex(&crd_1_v[29], 20, 0), -gsSPNTrianglesInit_5b( - 3, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 3, 6, 4 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 7, 8, 9, // tri0 - 10, 11, 7, // tri1 - 7, 9, 12 // tri2 -), -gsSPNTriangles_5b( - 8, 13, 9, // tri0 - 10, 14, 11, // tri1 - 12, 10, 7, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), -gsDPSetTileSize(0, 0, 0, 60, 60), -gsSPNTrianglesInit_5b( - 3, // tri count - 15, 16, 17, // tri0 - 16, 18, 17, // tri1 - 18, 19, 17 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&crd_1_v[0], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&crd_1_v[7], 22, 7), + gsSPNTrianglesInit_5b(8, // tri count + 5, 7, 8, // tri0 + 6, 5, 9, // tri1 + 6, 10, 11 // tri2 + ), + gsSPNTriangles_5b(4, 12, 13, // tri0 + 0, 6, 14, // tri1 + 5, 15, 16, // tri2 + 5, 4, 17 // tri3 + ), + gsSPNTriangles_5b(4, 3, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 60, 60), + gsSPNTrianglesInit_5b(2, // tri count + 2, 19, 20, // tri0 + 1, 21, 2, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 22, 23, 24, // tri0 + 25, 26, 27, // tri1 + 26, 28, 27 // tri2 + ), + gsSPVertex(&crd_1_v[29], 20, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 7, 8, 9, // tri0 + 10, 11, 7, // tri1 + 7, 9, 12 // tri2 + ), + gsSPNTriangles_5b(8, 13, 9, // tri0 + 10, 14, 11, // tri1 + 12, 10, 7, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 60, 60), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 16, 18, 17, // tri1 + 18, 19, 17 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_crd_model[] = { -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&crd_1_v[176], 5, 0), -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&crd_1_v[181], 16, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 5, 3, // tri0 - 1, 4, 6, // tri1 - 1, 8, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 10, 9, // tri0 - 0, 1, 11, // tri1 - 2, 12, 13, // tri2 - 2, 0, 14 // tri3 -), -gsSPNTriangles_5b( - 2, 15, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 20, 18, 17, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&crd_1_v[176], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&crd_1_v[181], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 2, 5, 3, // tri0 + 1, 4, 6, // tri1 + 1, 8, 7 // tri2 + ), + gsSPNTriangles_5b(1, 10, 9, // tri0 + 0, 1, 11, // tri1 + 2, 12, 13, // tri2 + 2, 0, 14 // tri3 + ), + gsSPNTriangles_5b(2, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 18, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_crd_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&crd_1_v[197], 4, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&crd_1_v[201], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 2, 4, // tri0 - 0, 5, 6, // tri1 - 1, 8, 7 // tri2 -), -gsSPNTriangles_5b( - 2, 9, 10, // tri0 - 3, 1, 11, // tri1 - 1, 0, 12, // tri2 - 1, 13, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&crd_1_v[197], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&crd_1_v[201], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 2, 4, // tri0 + 0, 5, 6, // tri1 + 1, 8, 7 // tri2 + ), + gsSPNTriangles_5b(2, 9, 10, // tri0 + 3, 1, 11, // tri1 + 1, 0, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_crd_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&crd_1_v[140], 5, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&crd_1_v[145], 16, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 5, 6, // tri0 - 4, 7, 8, // tri1 - 4, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 11, // tri0 - 4, 2, 12, // tri1 - 0, 13, 14, // tri2 - 0, 3, 15 // tri3 -), -gsSPNTriangles_5b( - 3, 4, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 18, 17, 20, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&crd_1_v[140], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&crd_1_v[145], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 + ), + gsSPNTriangles_5b(3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_crd_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&crd_1_v[161], 4, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&crd_1_v[165], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 0, 6, 7, // tri1 - 0, 2, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 3, 9, // tri0 - 2, 11, 10, // tri1 - 3, 13, 12, // tri2 - 3, 1, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&crd_1_v[161], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&crd_1_v[165], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 + ), + gsSPNTriangles_5b(2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_crd_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&crd_1_v[212], 9, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 252, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&crd_1_v[221], 20, 9), -gsSPNTrianglesInit_5b( - 14, // tri count - 0, 9, 10, // tri0 - 8, 11, 12, // tri1 - 1, 0, 13 // tri2 -), -gsSPNTriangles_5b( - 0, 3, 14, // tri0 - 4, 15, 7, // tri1 - 3, 7, 16, // tri2 - 7, 17, 18 // tri3 -), -gsSPNTriangles_5b( - 3, 20, 19, // tri0 - 8, 2, 21, // tri1 - 5, 8, 22, // tri2 - 5, 23, 24 // tri3 -), -gsSPNTriangles_5b( - 6, 26, 25, // tri0 - 6, 5, 27, // tri1 - 4, 6, 28, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&crd_1_v[241], 17, 0), -gsSPNTrianglesInit_5b( - 20, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 3, 6, 4 // tri2 -), -gsSPNTriangles_5b( - 1, 6, 2, // tri0 - 7, 8, 9, // tri1 - 7, 10, 11, // tri2 - 0, 12, 13 // tri3 -), -gsSPNTriangles_5b( - 5, 14, 10, // tri0 - 6, 11, 4, // tri1 - 10, 14, 11, // tri2 - 9, 13, 12 // tri3 -), -gsSPNTriangles_5b( - 5, 15, 3, // tri0 - 9, 12, 7, // tri1 - 11, 8, 7, // tri2 - 2, 16, 0 // tri3 -), -gsSPNTriangles_5b( - 13, 1, 0, // tri0 - 4, 14, 5, // tri1 - 1, 9, 6, // tri2 - 8, 6, 9 // tri3 -), -gsSPNTriangles_5b( - 8, 11, 6, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&crd_1_v[212], 9, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&crd_1_v[221], 20, 9), + gsSPNTrianglesInit_5b(14, // tri count + 0, 9, 10, // tri0 + 8, 11, 12, // tri1 + 1, 0, 13 // tri2 + ), + gsSPNTriangles_5b(0, 3, 14, // tri0 + 4, 15, 7, // tri1 + 3, 7, 16, // tri2 + 7, 17, 18 // tri3 + ), + gsSPNTriangles_5b(3, 20, 19, // tri0 + 8, 2, 21, // tri1 + 5, 8, 22, // tri2 + 5, 23, 24 // tri3 + ), + gsSPNTriangles_5b(6, 26, 25, // tri0 + 6, 5, 27, // tri1 + 4, 6, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&crd_1_v[241], 17, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(1, 6, 2, // tri0 + 7, 8, 9, // tri1 + 7, 10, 11, // tri2 + 0, 12, 13 // tri3 + ), + gsSPNTriangles_5b(5, 14, 10, // tri0 + 6, 11, 4, // tri1 + 10, 14, 11, // tri2 + 9, 13, 12 // tri3 + ), + gsSPNTriangles_5b(5, 15, 3, // tri0 + 9, 12, 7, // tri1 + 11, 8, 7, // tri2 + 2, 16, 0 // tri3 + ), + gsSPNTriangles_5b(13, 1, 0, // tri0 + 4, 14, 5, // tri1 + 1, 9, 6, // tri2 + 8, 6, 9 // tri3 + ), + gsSPNTriangles_5b(8, 11, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail1_crd_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&crd_1_v[278], 4, 0), -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&crd_1_v[282], 12, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 1, 4, 5, // tri0 - 2, 6, 7, // tri1 - 2, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 1, 10, 11, // tri0 - 3, 1, 12, // tri1 - 1, 0, 13, // tri2 - 2, 3, 14 // tri3 -), -gsSPNTriangles_5b( - 0, 2, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&crd_1_v[278], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&crd_1_v[282], 12, 4), + gsSPNTrianglesInit_5b(8, // tri count + 1, 4, 5, // tri0 + 2, 6, 7, // tri1 + 2, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 10, 11, // tri0 + 3, 1, 12, // tri1 + 1, 0, 13, // tri2 + 2, 3, 14 // tri3 + ), + gsSPNTriangles_5b(0, 2, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail2_crd_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&crd_1_v[258], 4, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&crd_1_v[262], 16, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 4, 5, // tri0 - 0, 6, 7, // tri1 - 3, 0, 8 // tri2 -), -gsSPNTriangles_5b( - 0, 1, 9, // tri0 - 3, 11, 10, // tri1 - 1, 13, 12, // tri2 - 2, 3, 14 // tri3 -), -gsSPNTriangles_5b( - 1, 2, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 16, 17, 18, // tri0 - 18, 17, 19, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&crd_1_v[258], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&crd_1_v[262], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 0, 4, 5, // tri0 + 0, 6, 7, // tri1 + 3, 0, 8 // tri2 + ), + gsSPNTriangles_5b(0, 1, 9, // tri0 + 3, 11, 10, // tri1 + 1, 13, 12, // tri2 + 2, 3, 14 // tri3 + ), + gsSPNTriangles_5b(1, 2, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 18, 17, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_crd_model[] = { -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&crd_1_v[325], 5, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&crd_1_v[330], 17, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 4, 0, 5, // tri0 - 0, 7, 6, // tri1 - 3, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 1, 2, 10, // tri0 - 2, 3, 11, // tri1 - 3, 4, 12, // tri2 - 2, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 15, 16, 17, // tri0 - 18, 19, 20, // tri1 - 18, 21, 19 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&crd_1_v[325], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&crd_1_v[330], 17, 5), + gsSPNTrianglesInit_5b(7, // tri count + 4, 0, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 + ), + gsSPNTriangles_5b(1, 2, 10, // tri0 + 2, 3, 11, // tri1 + 3, 4, 12, // tri2 + 2, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_crd_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&crd_1_v[347], 9, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 1, 3, 4, // tri1 - 1, 5, 2 // tri2 -), -gsSPNTriangles_5b( - 6, 7, 8, // tri0 - 6, 8, 0, // tri1 - 0, 2, 6, // tri2 - 4, 5, 1 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&crd_1_v[347], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 1, 5, 2 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 6, 8, 0, // tri1 + 0, 2, 6, // tri2 + 4, 5, 1 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_crd_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&crd_1_v[294], 5, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&crd_1_v[299], 17, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 4, 5, // tri0 - 0, 7, 6, // tri1 - 3, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 1, 10, // tri0 - 3, 2, 11, // tri1 - 4, 3, 12, // tri2 - 2, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 15, 16, 17, // tri0 - 18, 19, 20, // tri1 - 19, 21, 20 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&crd_1_v[294], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&crd_1_v[299], 17, 5), + gsSPNTrianglesInit_5b(7, // tri count + 0, 4, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 + ), + gsSPNTriangles_5b(2, 1, 10, // tri0 + 3, 2, 11, // tri1 + 4, 3, 12, // tri2 + 2, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_crd_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&crd_1_v[316], 9, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 3, 4, 1, // tri1 - 0, 5, 1 // tri2 -), -gsSPNTriangles_5b( - 6, 7, 8, // tri0 - 2, 6, 8, // tri1 - 8, 0, 2, // tri2 - 1, 5, 3 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&crd_1_v[316], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 0, 5, 1 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 2, 6, 8, // tri1 + 8, 0, 2, // tri2 + 1, 5, 3 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx base_crd_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&crd_1_v[356], 21, 0), -gsSPNTrianglesInit_5b( - 28, // tri count - 0, 1, 2, // tri0 - 3, 0, 4, // tri1 - 2, 1, 5 // tri2 -), -gsSPNTriangles_5b( - 4, 0, 2, // tri0 - 1, 6, 7, // tri1 - 8, 3, 9, // tri2 - 8, 9, 10 // tri3 -), -gsSPNTriangles_5b( - 10, 9, 11, // tri0 - 12, 5, 7, // tri1 - 9, 3, 4, // tri2 - 13, 14, 15 // tri3 -), -gsSPNTriangles_5b( - 10, 11, 14, // tri0 - 13, 15, 16, // tri1 - 14, 11, 15, // tri2 - 13, 16, 17 // tri3 -), -gsSPNTriangles_5b( - 17, 16, 18, // tri0 - 1, 0, 19, // tri1 - 1, 19, 6, // tri2 - 19, 0, 20 // tri3 -), -gsSPNTriangles_5b( - 6, 19, 13, // tri0 - 13, 19, 20, // tri1 - 20, 3, 8, // tri2 - 8, 10, 20 // tri3 -), -gsSPNTriangles_5b( - 0, 3, 20, // tri0 - 13, 20, 14, // tri1 - 10, 14, 20, // tri2 - 7, 5, 1 // tri3 -), -gsSPNTriangles_5b( - 17, 6, 13, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&crd_1_v[356], 21, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 2, 1, 5 // tri2 + ), + gsSPNTriangles_5b(4, 0, 2, // tri0 + 1, 6, 7, // tri1 + 8, 3, 9, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(10, 9, 11, // tri0 + 12, 5, 7, // tri1 + 9, 3, 4, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(10, 11, 14, // tri0 + 13, 15, 16, // tri1 + 14, 11, 15, // tri2 + 13, 16, 17 // tri3 + ), + gsSPNTriangles_5b(17, 16, 18, // tri0 + 1, 0, 19, // tri1 + 1, 19, 6, // tri2 + 19, 0, 20 // tri3 + ), + gsSPNTriangles_5b(6, 19, 13, // tri0 + 13, 19, 20, // tri1 + 20, 3, 8, // tri2 + 8, 10, 20 // tri3 + ), + gsSPNTriangles_5b(0, 3, 20, // tri0 + 13, 20, 14, // tri1 + 10, 14, 20, // tri2 + 7, 5, 1 // tri3 + ), + gsSPNTriangles_5b(17, 6, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_crd_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -771,4 +683,4 @@ static cKF_Joint_R_c cKF_je_r_crd_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_crd_1 = { 26, 14, cKF_je_r_crd_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_crd_1 = { 26, 14, cKF_je_r_crd_1_tbl }; diff --git a/src/data/npc/model/mdl/dog_1.c b/src/data/npc/model/mdl/dog_1.c index 48181e62..a4f6583a 100644 --- a/src/data/npc/model/mdl/dog_1.c +++ b/src/data/npc/model/mdl/dog_1.c @@ -6,681 +6,600 @@ static Vtx dog_1_v[] = { }; static Gfx head_dog_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&dog_1_v[0], 7, 0), -gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&dog_1_v[7], 14, 7), -gsSPNTrianglesInit_5b( - 10, // tri count - 3, 7, 8, // tri0 - 3, 1, 9, // tri1 - 1, 11, 10 // tri2 -), -gsSPNTriangles_5b( - 4, 2, 12, // tri0 - 0, 13, 2, // tri1 - 1, 4, 14, // tri2 - 5, 3, 15 // tri3 -), -gsSPNTriangles_5b( - 0, 16, 17, // tri0 - 0, 6, 18, // tri1 - 2, 19, 20, // tri2 - 0, 0, 0 // tri3 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&dog_1_v[21], 31, 0), -gsSPNTrianglesInit_5b( - 32, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 2, 1, 6 // tri2 -), -gsSPNTriangles_5b( - 7, 0, 8, // tri0 - 9, 4, 3, // tri1 - 5, 10, 8, // tri2 - 11, 12, 13 // tri3 -), -gsSPNTriangles_5b( - 10, 14, 15, // tri0 - 5, 14, 10, // tri1 - 6, 16, 9, // tri2 - 7, 17, 0 // tri3 -), -gsSPNTriangles_5b( - 18, 19, 16, // tri0 - 5, 2, 3, // tri1 - 2, 6, 3, // tri2 - 3, 6, 9 // tri3 -), -gsSPNTriangles_5b( - 18, 16, 6, // tri0 - 13, 14, 4, // tri1 - 4, 11, 13, // tri2 - 6, 1, 18 // tri3 -), -gsSPNTriangles_5b( - 13, 12, 20, // tri0 - 21, 19, 18, // tri1 - 8, 10, 7, // tri2 - 17, 1, 0 // tri3 -), -gsSPNTriangles_5b( - 7, 10, 15, // tri0 - 4, 14, 5, // tri1 - 9, 11, 4, // tri2 - 8, 2, 5 // tri3 -), -gsSPNTriangles_5b( - 8, 0, 2, // tri0 - 20, 14, 13, // tri1 - 18, 1, 21, // tri2 - 21, 1, 17 // tri3 -), -gsSPNTriangles_5b( - 15, 14, 20, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 13, // tri count - 22, 23, 24, // tri0 - 25, 26, 27, // tri1 - 22, 24, 28 // tri2 -), -gsSPNTriangles_5b( - 26, 22, 28, // tri0 - 26, 25, 22, // tri1 - 29, 24, 30, // tri2 - 24, 23, 30 // tri3 -), -gsSPNTriangles_5b( - 27, 28, 29, // tri0 - 30, 22, 29, // tri1 - 22, 25, 29, // tri2 - 30, 23, 22 // tri3 -), -gsSPNTriangles_5b( - 25, 27, 29, // tri0 - 29, 28, 24, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&dog_1_v[52], 21, 0), -gsSPNTrianglesInit_5b( - 27, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 7, 5, 8, // tri0 - 9, 6, 5, // tri1 - 9, 7, 10, // tri2 - 11, 10, 12 // tri3 -), -gsSPNTriangles_5b( - 10, 13, 12, // tri0 - 5, 7, 9, // tri1 - 4, 6, 14, // tri2 - 4, 14, 15 // tri3 -), -gsSPNTriangles_5b( - 16, 17, 13, // tri0 - 17, 16, 18, // tri1 - 14, 6, 0, // tri2 - 18, 16, 8 // tri3 -), -gsSPNTriangles_5b( - 14, 0, 3, // tri0 - 15, 14, 19, // tri1 - 10, 16, 13, // tri2 - 3, 19, 14 // tri3 -), -gsSPNTriangles_5b( - 7, 16, 10, // tri0 - 9, 10, 20, // tri1 - 10, 11, 20, // tri2 - 20, 11, 1 // tri3 -), -gsSPNTriangles_5b( - 1, 0, 20, // tri0 - 20, 0, 9, // tri1 - 6, 9, 0, // tri2 - 7, 8, 16 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&dog_1_v[73], 28, 0), -gsSPNTrianglesInit_5b( - 23, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 9, 8, 10, // tri0 - 11, 5, 4, // tri1 - 2, 12, 11, // tri2 - 13, 2, 1 // tri3 -), -gsSPNTriangles_5b( - 8, 5, 12, // tri0 - 11, 12, 5, // tri1 - 5, 7, 3, // tri2 - 8, 9, 6 // tri3 -), -gsSPNTriangles_5b( - 10, 14, 9, // tri0 - 4, 15, 11, // tri1 - 16, 14, 10, // tri2 - 13, 17, 16 // tri3 -), -gsSPNTriangles_5b( - 13, 16, 2, // tri0 - 2, 16, 10, // tri1 - 12, 10, 8, // tri2 - 11, 0, 2 // tri3 -), -gsSPNTriangles_5b( - 18, 1, 0, // tri0 - 0, 11, 15, // tri1 - 8, 7, 5, // tri2 - 10, 12, 2 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 13, // tri count - 19, 20, 21, // tri0 - 19, 22, 23, // tri1 - 19, 24, 22 // tri2 -), -gsSPNTriangles_5b( - 22, 25, 23, // tri0 - 19, 21, 24, // tri1 - 26, 20, 19, // tri2 - 26, 25, 22 // tri3 -), -gsSPNTriangles_5b( - 21, 27, 24, // tri0 - 20, 26, 22, // tri1 - 20, 22, 27, // tri2 - 22, 24, 27 // tri3 -), -gsSPNTriangles_5b( - 23, 26, 19, // tri0 - 23, 25, 26, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&dog_1_v[0], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&dog_1_v[7], 14, 7), + gsSPNTrianglesInit_5b(10, // tri count + 3, 7, 8, // tri0 + 3, 1, 9, // tri1 + 1, 11, 10 // tri2 + ), + gsSPNTriangles_5b(4, 2, 12, // tri0 + 0, 13, 2, // tri1 + 1, 4, 14, // tri2 + 5, 3, 15 // tri3 + ), + gsSPNTriangles_5b(0, 16, 17, // tri0 + 0, 6, 18, // tri1 + 2, 19, 20, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&dog_1_v[21], 31, 0), + gsSPNTrianglesInit_5b(32, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 1, 6 // tri2 + ), + gsSPNTriangles_5b(7, 0, 8, // tri0 + 9, 4, 3, // tri1 + 5, 10, 8, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(10, 14, 15, // tri0 + 5, 14, 10, // tri1 + 6, 16, 9, // tri2 + 7, 17, 0 // tri3 + ), + gsSPNTriangles_5b(18, 19, 16, // tri0 + 5, 2, 3, // tri1 + 2, 6, 3, // tri2 + 3, 6, 9 // tri3 + ), + gsSPNTriangles_5b(18, 16, 6, // tri0 + 13, 14, 4, // tri1 + 4, 11, 13, // tri2 + 6, 1, 18 // tri3 + ), + gsSPNTriangles_5b(13, 12, 20, // tri0 + 21, 19, 18, // tri1 + 8, 10, 7, // tri2 + 17, 1, 0 // tri3 + ), + gsSPNTriangles_5b(7, 10, 15, // tri0 + 4, 14, 5, // tri1 + 9, 11, 4, // tri2 + 8, 2, 5 // tri3 + ), + gsSPNTriangles_5b(8, 0, 2, // tri0 + 20, 14, 13, // tri1 + 18, 1, 21, // tri2 + 21, 1, 17 // tri3 + ), + gsSPNTriangles_5b(15, 14, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(13, // tri count + 22, 23, 24, // tri0 + 25, 26, 27, // tri1 + 22, 24, 28 // tri2 + ), + gsSPNTriangles_5b(26, 22, 28, // tri0 + 26, 25, 22, // tri1 + 29, 24, 30, // tri2 + 24, 23, 30 // tri3 + ), + gsSPNTriangles_5b(27, 28, 29, // tri0 + 30, 22, 29, // tri1 + 22, 25, 29, // tri2 + 30, 23, 22 // tri3 + ), + gsSPNTriangles_5b(25, 27, 29, // tri0 + 29, 28, 24, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&dog_1_v[52], 21, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 6, 5, // tri1 + 9, 7, 10, // tri2 + 11, 10, 12 // tri3 + ), + gsSPNTriangles_5b(10, 13, 12, // tri0 + 5, 7, 9, // tri1 + 4, 6, 14, // tri2 + 4, 14, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 13, // tri0 + 17, 16, 18, // tri1 + 14, 6, 0, // tri2 + 18, 16, 8 // tri3 + ), + gsSPNTriangles_5b(14, 0, 3, // tri0 + 15, 14, 19, // tri1 + 10, 16, 13, // tri2 + 3, 19, 14 // tri3 + ), + gsSPNTriangles_5b(7, 16, 10, // tri0 + 9, 10, 20, // tri1 + 10, 11, 20, // tri2 + 20, 11, 1 // tri3 + ), + gsSPNTriangles_5b(1, 0, 20, // tri0 + 20, 0, 9, // tri1 + 6, 9, 0, // tri2 + 7, 8, 16 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&dog_1_v[73], 28, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 8, 10, // tri0 + 11, 5, 4, // tri1 + 2, 12, 11, // tri2 + 13, 2, 1 // tri3 + ), + gsSPNTriangles_5b(8, 5, 12, // tri0 + 11, 12, 5, // tri1 + 5, 7, 3, // tri2 + 8, 9, 6 // tri3 + ), + gsSPNTriangles_5b(10, 14, 9, // tri0 + 4, 15, 11, // tri1 + 16, 14, 10, // tri2 + 13, 17, 16 // tri3 + ), + gsSPNTriangles_5b(13, 16, 2, // tri0 + 2, 16, 10, // tri1 + 12, 10, 8, // tri2 + 11, 0, 2 // tri3 + ), + gsSPNTriangles_5b(18, 1, 0, // tri0 + 0, 11, 15, // tri1 + 8, 7, 5, // tri2 + 10, 12, 2 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(13, // tri count + 19, 20, 21, // tri0 + 19, 22, 23, // tri1 + 19, 24, 22 // tri2 + ), + gsSPNTriangles_5b(22, 25, 23, // tri0 + 19, 21, 24, // tri1 + 26, 20, 19, // tri2 + 26, 25, 22 // tri3 + ), + gsSPNTriangles_5b(21, 27, 24, // tri0 + 20, 26, 22, // tri1 + 20, 22, 27, // tri2 + 22, 24, 27 // tri3 + ), + gsSPNTriangles_5b(23, 26, 19, // tri0 + 23, 25, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_dog_model[] = { -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&dog_1_v[132], 4, 0), -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&dog_1_v[136], 13, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 1, 4, 5, // tri0 - 2, 6, 1, // tri1 - 0, 1, 7 // tri2 -), -gsSPNTriangles_5b( - 3, 8, 9, // tri0 - 0, 11, 10, // tri1 - 3, 0, 12, // tri2 - 3, 13, 2 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 14, 15, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&dog_1_v[132], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&dog_1_v[136], 13, 4), + gsSPNTrianglesInit_5b(7, // tri count + 1, 4, 5, // tri0 + 2, 6, 1, // tri1 + 0, 1, 7 // tri2 + ), + gsSPNTriangles_5b(3, 8, 9, // tri0 + 0, 11, 10, // tri1 + 3, 0, 12, // tri2 + 3, 13, 2 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 14, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm_dog_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&dog_1_v[149], 3, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&dog_1_v[152], 11, 3), -gsSPNTrianglesInit_5b( - 7, // tri count - 2, 3, 4, // tri0 - 0, 6, 5, // tri1 - 0, 2, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 8, 9, // tri0 - 2, 1, 10, // tri1 - 1, 0, 11, // tri2 - 0, 12, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&dog_1_v[149], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&dog_1_v[152], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 2, 3, 4, // tri0 + 0, 6, 5, // tri1 + 0, 2, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 2, 1, 10, // tri1 + 1, 0, 11, // tri2 + 0, 12, 13 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_dog_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&dog_1_v[101], 4, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&dog_1_v[105], 13, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 1, 4, 5, // tri0 - 1, 6, 2, // tri1 - 1, 0, 7 // tri2 -), -gsSPNTriangles_5b( - 3, 8, 9, // tri0 - 0, 11, 10, // tri1 - 0, 3, 12, // tri2 - 2, 13, 3 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 14, 15, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&dog_1_v[101], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&dog_1_v[105], 13, 4), + gsSPNTrianglesInit_5b(7, // tri count + 1, 4, 5, // tri0 + 1, 6, 2, // tri1 + 1, 0, 7 // tri2 + ), + gsSPNTriangles_5b(3, 8, 9, // tri0 + 0, 11, 10, // tri1 + 0, 3, 12, // tri2 + 2, 13, 3 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 14, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_dog_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&dog_1_v[118], 3, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&dog_1_v[121], 11, 3), -gsSPNTrianglesInit_5b( - 7, // tri count - 2, 3, 4, // tri0 - 0, 6, 5, // tri1 - 2, 0, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 8, 9, // tri0 - 1, 2, 10, // tri1 - 0, 11, 12, // tri2 - 0, 1, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&dog_1_v[118], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&dog_1_v[121], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 2, 3, 4, // tri0 + 0, 6, 5, // tri1 + 2, 0, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 1, 2, 10, // tri1 + 0, 11, 12, // tri2 + 0, 1, 13 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_dog_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&dog_1_v[163], 32, 0), -gsSPNTrianglesInit_5b( - 29, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 3, 6, 4 // tri2 -), -gsSPNTriangles_5b( - 2, 7, 8, // tri0 - 5, 9, 3, // tri1 - 10, 11, 12, // tri2 - 13, 14, 15 // tri3 -), -gsSPNTriangles_5b( - 16, 17, 18, // tri0 - 13, 19, 14, // tri1 - 20, 7, 2, // tri2 - 21, 9, 5 // tri3 -), -gsSPNTriangles_5b( - 22, 1, 0, // tri0 - 23, 6, 3, // tri1 - 10, 12, 24, // tri2 - 24, 25, 10 // tri3 -), -gsSPNTriangles_5b( - 18, 25, 24, // tri0 - 19, 26, 21, // tri1 - 3, 9, 23, // tri2 - 0, 27, 22 // tri3 -), -gsSPNTriangles_5b( - 2, 1, 20, // tri0 - 5, 14, 21, // tri1 - 0, 2, 8, // tri2 - 28, 7, 19 // tri3 -), -gsSPNTriangles_5b( - 29, 7, 28, // tri0 - 22, 27, 30, // tri1 - 20, 19, 7, // tri2 - 8, 27, 0 // tri3 -), -gsSPNTriangles_5b( - 19, 20, 26, // tri0 - 22, 30, 31, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&dog_1_v[195], 12, 0), -gsSPNTrianglesInit_5b( - 5, // tri count - 0, 1, 2, // tri0 - 2, 1, 3, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 5, 7, 8, // tri0 - 9, 10, 11, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&dog_1_v[163], 32, 0), + gsSPNTrianglesInit_5b(29, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(2, 7, 8, // tri0 + 5, 9, 3, // tri1 + 10, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 13, 19, 14, // tri1 + 20, 7, 2, // tri2 + 21, 9, 5 // tri3 + ), + gsSPNTriangles_5b(22, 1, 0, // tri0 + 23, 6, 3, // tri1 + 10, 12, 24, // tri2 + 24, 25, 10 // tri3 + ), + gsSPNTriangles_5b(18, 25, 24, // tri0 + 19, 26, 21, // tri1 + 3, 9, 23, // tri2 + 0, 27, 22 // tri3 + ), + gsSPNTriangles_5b(2, 1, 20, // tri0 + 5, 14, 21, // tri1 + 0, 2, 8, // tri2 + 28, 7, 19 // tri3 + ), + gsSPNTriangles_5b(29, 7, 28, // tri0 + 22, 27, 30, // tri1 + 20, 19, 7, // tri2 + 8, 27, 0 // tri3 + ), + gsSPNTriangles_5b(19, 20, 26, // tri0 + 22, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&dog_1_v[195], 12, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 9, 10, 11, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail1_dog_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&dog_1_v[234], 15, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 0 // tri2 -), -gsSPNTriangles_5b( - 8, 9, 10, // tri0 - 11, 8, 12, // tri1 - 10, 13, 8, // tri2 - 5, 1, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&dog_1_v[234], 15, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 0 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 11, 8, 12, // tri1 + 10, 13, 8, // tri2 + 5, 1, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail2_dog_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&dog_1_v[207], 6, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&dog_1_v[213], 21, 6), -gsSPNTrianglesInit_5b( - 8, // tri count - 1, 6, 7, // tri0 - 3, 8, 9, // tri1 - 4, 10, 11 // tri2 -), -gsSPNTriangles_5b( - 3, 12, 13, // tri0 - 3, 2, 14, // tri1 - 1, 0, 15, // tri2 - 0, 4, 16 // tri3 -), -gsSPNTriangles_5b( - 5, 3, 17, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 4, // tri count - 18, 19, 20, // tri0 - 21, 22, 23, // tri1 - 20, 22, 24 // tri2 -), -gsSPNTriangles_5b( - 25, 18, 26, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&dog_1_v[207], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&dog_1_v[213], 21, 6), + gsSPNTrianglesInit_5b(8, // tri count + 1, 6, 7, // tri0 + 3, 8, 9, // tri1 + 4, 10, 11 // tri2 + ), + gsSPNTriangles_5b(3, 12, 13, // tri0 + 3, 2, 14, // tri1 + 1, 0, 15, // tri2 + 0, 4, 16 // tri3 + ), + gsSPNTriangles_5b(5, 3, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(4, // tri count + 18, 19, 20, // tri0 + 21, 22, 23, // tri1 + 20, 22, 24 // tri2 + ), + gsSPNTriangles_5b(25, 18, 26, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_dog_model[] = { -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&dog_1_v[294], 6, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&dog_1_v[300], 18, 6), -gsSPNTrianglesInit_5b( - 9, // tri count - 4, 3, 6, // tri0 - 3, 7, 8, // tri1 - 2, 9, 3 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 10, // tri0 - 2, 11, 12, // tri1 - 0, 13, 14, // tri2 - 1, 15, 2 // tri3 -), -gsSPNTriangles_5b( - 1, 16, 17, // tri0 - 0, 5, 18, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 19, 20, 21, // tri0 - 21, 22, 23, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&dog_1_v[294], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&dog_1_v[300], 18, 6), + gsSPNTrianglesInit_5b(9, // tri count + 4, 3, 6, // tri0 + 3, 7, 8, // tri1 + 2, 9, 3 // tri2 + ), + gsSPNTriangles_5b(1, 0, 10, // tri0 + 2, 11, 12, // tri1 + 0, 13, 14, // tri2 + 1, 15, 2 // tri3 + ), + gsSPNTriangles_5b(1, 16, 17, // tri0 + 0, 5, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 19, 20, 21, // tri0 + 21, 22, 23, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_dog_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&dog_1_v[318], 6, 0), -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&dog_1_v[324], 15, 6), -gsSPNTrianglesInit_5b( - 10, // tri count - 1, 7, 6, // tri0 - 1, 0, 8, // tri1 - 3, 4, 9 // tri2 -), -gsSPNTriangles_5b( - 4, 10, 11, // tri0 - 2, 1, 12, // tri1 - 2, 13, 14, // tri2 - 0, 15, 16 // tri3 -), -gsSPNTriangles_5b( - 0, 3, 17, // tri0 - 3, 18, 19, // tri1 - 5, 2, 20, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&dog_1_v[318], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&dog_1_v[324], 15, 6), + gsSPNTrianglesInit_5b(10, // tri count + 1, 7, 6, // tri0 + 1, 0, 8, // tri1 + 3, 4, 9 // tri2 + ), + gsSPNTriangles_5b(4, 10, 11, // tri0 + 2, 1, 12, // tri1 + 2, 13, 14, // tri2 + 0, 15, 16 // tri3 + ), + gsSPNTriangles_5b(0, 3, 17, // tri0 + 3, 18, 19, // tri1 + 5, 2, 20, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_dog_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&dog_1_v[249], 6, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&dog_1_v[255], 18, 6), -gsSPNTrianglesInit_5b( - 9, // tri count - 3, 4, 6, // tri0 - 3, 7, 8, // tri1 - 3, 9, 2 // tri2 -), -gsSPNTriangles_5b( - 0, 1, 10, // tri0 - 2, 11, 12, // tri1 - 0, 13, 14, // tri2 - 2, 15, 1 // tri3 -), -gsSPNTriangles_5b( - 1, 16, 17, // tri0 - 5, 0, 18, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 19, 20, 21, // tri0 - 22, 23, 19, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&dog_1_v[249], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&dog_1_v[255], 18, 6), + gsSPNTrianglesInit_5b(9, // tri count + 3, 4, 6, // tri0 + 3, 7, 8, // tri1 + 3, 9, 2 // tri2 + ), + gsSPNTriangles_5b(0, 1, 10, // tri0 + 2, 11, 12, // tri1 + 0, 13, 14, // tri2 + 2, 15, 1 // tri3 + ), + gsSPNTriangles_5b(1, 16, 17, // tri0 + 5, 0, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 19, 20, 21, // tri0 + 22, 23, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_dog_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&dog_1_v[273], 6, 0), -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&dog_1_v[279], 15, 6), -gsSPNTrianglesInit_5b( - 10, // tri count - 1, 7, 6, // tri0 - 0, 1, 8, // tri1 - 4, 3, 9 // tri2 -), -gsSPNTriangles_5b( - 4, 10, 11, // tri0 - 1, 2, 12, // tri1 - 2, 13, 14, // tri2 - 0, 15, 16 // tri3 -), -gsSPNTriangles_5b( - 3, 0, 17, // tri0 - 3, 18, 19, // tri1 - 2, 5, 20, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&dog_1_v[273], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&dog_1_v[279], 15, 6), + gsSPNTrianglesInit_5b(10, // tri count + 1, 7, 6, // tri0 + 0, 1, 8, // tri1 + 4, 3, 9 // tri2 + ), + gsSPNTriangles_5b(4, 10, 11, // tri0 + 1, 2, 12, // tri1 + 2, 13, 14, // tri2 + 0, 15, 16 // tri3 + ), + gsSPNTriangles_5b(3, 0, 17, // tri0 + 3, 18, 19, // tri1 + 2, 5, 20, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx base_dog_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&dog_1_v[339], 24, 0), -gsSPNTrianglesInit_5b( - 11, // tri count - 0, 1, 2, // tri0 - 0, 3, 4, // tri1 - 5, 2, 6 // tri2 -), -gsSPNTriangles_5b( - 7, 5, 6, // tri0 - 2, 5, 8, // tri1 - 9, 4, 3, // tri2 - 8, 0, 2 // tri3 -), -gsSPNTriangles_5b( - 0, 8, 3, // tri0 - 5, 7, 10, // tri1 - 4, 1, 0, // tri2 - 4, 11, 1 // tri3 -), -gsSPNTrianglesInit_5b( - 11, // tri count - 12, 13, 14, // tri0 - 15, 16, 17, // tri1 - 16, 18, 17 // tri2 -), -gsSPNTriangles_5b( - 19, 20, 15, // tri0 - 13, 15, 20, // tri1 - 19, 17, 21, // tri2 - 17, 19, 15 // tri3 -), -gsSPNTriangles_5b( - 13, 16, 15, // tri0 - 20, 14, 13, // tri1 - 12, 14, 22, // tri2 - 23, 22, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&dog_1_v[339], 24, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 5, 2, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 6, // tri0 + 2, 5, 8, // tri1 + 9, 4, 3, // tri2 + 8, 0, 2 // tri3 + ), + gsSPNTriangles_5b(0, 8, 3, // tri0 + 5, 7, 10, // tri1 + 4, 1, 0, // tri2 + 4, 11, 1 // tri3 + ), + gsSPNTrianglesInit_5b(11, // tri count + 12, 13, 14, // tri0 + 15, 16, 17, // tri1 + 16, 18, 17 // tri2 + ), + gsSPNTriangles_5b(19, 20, 15, // tri0 + 13, 15, 20, // tri1 + 19, 17, 21, // tri2 + 17, 19, 15 // tri3 + ), + gsSPNTriangles_5b(13, 16, 15, // tri0 + 20, 14, 13, // tri1 + 12, 14, 22, // tri2 + 23, 22, 14 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_dog_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -712,4 +631,4 @@ static cKF_Joint_R_c cKF_je_r_dog_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_dog_1 = { 26, 13, cKF_je_r_dog_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_dog_1 = { 26, 13, cKF_je_r_dog_1_tbl }; diff --git a/src/data/npc/model/mdl/duk_1.c b/src/data/npc/model/mdl/duk_1.c index 5fcfdea2..0804ad49 100644 --- a/src/data/npc/model/mdl/duk_1.c +++ b/src/data/npc/model/mdl/duk_1.c @@ -6,679 +6,602 @@ static Vtx duk_1_v[] = { }; static Gfx head_duk_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&duk_1_v[26], 19, 0), -gsSPNTrianglesInit_5b( - 26, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 0 // tri2 -), -gsSPNTriangles_5b( - 5, 4, 8, // tri0 - 5, 9, 3, // tri1 - 6, 4, 10, // tri2 - 4, 3, 10 // tri3 -), -gsSPNTriangles_5b( - 2, 8, 4, // tri0 - 2, 4, 6, // tri1 - 6, 10, 7, // tri2 - 11, 12, 10 // tri3 -), -gsSPNTriangles_5b( - 11, 10, 3, // tri0 - 10, 12, 7, // tri1 - 7, 12, 13, // tri2 - 7, 13, 14 // tri3 -), -gsSPNTriangles_5b( - 0, 7, 14, // tri0 - 15, 11, 16, // tri1 - 16, 3, 9, // tri2 - 16, 11, 3 // tri3 -), -gsSPNTriangles_5b( - 15, 13, 12, // tri0 - 12, 11, 15, // tri1 - 17, 18, 8, // tri2 - 2, 1, 17 // tri3 -), -gsSPNTriangles_5b( - 17, 8, 2, // tri0 - 2, 6, 0, // tri1 - 8, 18, 5, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&duk_1_v[45], 13, 0), -gsSPNTrianglesInit_5b( - 14, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 1, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 7, 2, // tri0 - 5, 8, 0, // tri1 - 0, 2, 9, // tri2 - 10, 3, 5 // tri3 -), -gsSPNTriangles_5b( - 10, 5, 9, // tri0 - 4, 11, 8, // tri1 - 4, 8, 5, // tri2 - 9, 2, 12 // tri3 -), -gsSPNTriangles_5b( - 9, 12, 10, // tri0 - 12, 2, 7, // tri1 - 9, 5, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&duk_1_v[58], 27, 0), -gsSPNTrianglesInit_5b( - 27, // tri count - 0, 1, 2, // tri0 - 3, 0, 4, // tri1 - 5, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 8, 9, 10, // tri0 - 0, 3, 11, // tri1 - 0, 12, 1, // tri2 - 13, 14, 15 // tri3 -), -gsSPNTriangles_5b( - 11, 12, 0, // tri0 - 16, 17, 8, // tri1 - 7, 15, 5, // tri2 - 6, 18, 19 // tri3 -), -gsSPNTriangles_5b( - 19, 20, 7, // tri0 - 4, 8, 10, // tri1 - 10, 3, 4, // tri2 - 16, 8, 4 // tri3 -), -gsSPNTriangles_5b( - 21, 14, 13, // tri0 - 22, 20, 23, // tri1 - 24, 25, 22, // tri2 - 24, 22, 23 // tri3 -), -gsSPNTriangles_5b( - 2, 4, 0, // tri0 - 7, 20, 13, // tri1 - 13, 20, 22, // tri2 - 23, 20, 19 // tri3 -), -gsSPNTriangles_5b( - 15, 7, 13, // tri0 - 19, 7, 6, // tri1 - 4, 2, 16, // tri2 - 19, 18, 26 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&duk_1_v[85], 16, 0), -gsSPNTrianglesInit_5b( - 18, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 5, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 8, 9, 10, // tri0 - 0, 2, 4, // tri1 - 11, 5, 4, // tri2 - 6, 5, 11 // tri3 -), -gsSPNTriangles_5b( - 10, 7, 6, // tri0 - 11, 12, 6, // tri1 - 4, 12, 11, // tri2 - 12, 4, 2 // tri3 -), -gsSPNTriangles_5b( - 12, 13, 8, // tri0 - 7, 14, 5, // tri1 - 5, 14, 3, // tri2 - 8, 6, 12 // tri3 -), -gsSPNTriangles_5b( - 6, 8, 10, // tri0 - 2, 15, 12, // tri1 - 4, 3, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&duk_1_v[26], 19, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 0 // tri2 + ), + gsSPNTriangles_5b(5, 4, 8, // tri0 + 5, 9, 3, // tri1 + 6, 4, 10, // tri2 + 4, 3, 10 // tri3 + ), + gsSPNTriangles_5b(2, 8, 4, // tri0 + 2, 4, 6, // tri1 + 6, 10, 7, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(11, 10, 3, // tri0 + 10, 12, 7, // tri1 + 7, 12, 13, // tri2 + 7, 13, 14 // tri3 + ), + gsSPNTriangles_5b(0, 7, 14, // tri0 + 15, 11, 16, // tri1 + 16, 3, 9, // tri2 + 16, 11, 3 // tri3 + ), + gsSPNTriangles_5b(15, 13, 12, // tri0 + 12, 11, 15, // tri1 + 17, 18, 8, // tri2 + 2, 1, 17 // tri3 + ), + gsSPNTriangles_5b(17, 8, 2, // tri0 + 2, 6, 0, // tri1 + 8, 18, 5, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&duk_1_v[45], 13, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 7, 2, // tri0 + 5, 8, 0, // tri1 + 0, 2, 9, // tri2 + 10, 3, 5 // tri3 + ), + gsSPNTriangles_5b(10, 5, 9, // tri0 + 4, 11, 8, // tri1 + 4, 8, 5, // tri2 + 9, 2, 12 // tri3 + ), + gsSPNTriangles_5b(9, 12, 10, // tri0 + 12, 2, 7, // tri1 + 9, 5, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&duk_1_v[58], 27, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 0, 3, 11, // tri1 + 0, 12, 1, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(11, 12, 0, // tri0 + 16, 17, 8, // tri1 + 7, 15, 5, // tri2 + 6, 18, 19 // tri3 + ), + gsSPNTriangles_5b(19, 20, 7, // tri0 + 4, 8, 10, // tri1 + 10, 3, 4, // tri2 + 16, 8, 4 // tri3 + ), + gsSPNTriangles_5b(21, 14, 13, // tri0 + 22, 20, 23, // tri1 + 24, 25, 22, // tri2 + 24, 22, 23 // tri3 + ), + gsSPNTriangles_5b(2, 4, 0, // tri0 + 7, 20, 13, // tri1 + 13, 20, 22, // tri2 + 23, 20, 19 // tri3 + ), + gsSPNTriangles_5b(15, 7, 13, // tri0 + 19, 7, 6, // tri1 + 4, 2, 16, // tri2 + 19, 18, 26 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&duk_1_v[85], 16, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 0, 2, 4, // tri1 + 11, 5, 4, // tri2 + 6, 5, 11 // tri3 + ), + gsSPNTriangles_5b(10, 7, 6, // tri0 + 11, 12, 6, // tri1 + 4, 12, 11, // tri2 + 12, 4, 2 // tri3 + ), + gsSPNTriangles_5b(12, 13, 8, // tri0 + 7, 14, 5, // tri1 + 5, 14, 3, // tri2 + 8, 6, 12 // tri3 + ), + gsSPNTriangles_5b(6, 8, 10, // tri0 + 2, 15, 12, // tri1 + 4, 3, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx mouth_duk_model[] = { -gsSPMatrix(0x0D000380, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&duk_1_v[0], 4, 0), -gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&duk_1_v[4], 22, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 4, // tri0 - 2, 6, 5, // tri1 - 1, 2, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 8, 9, // tri0 - 0, 11, 10, // tri1 - 3, 0, 12, // tri2 - 0, 14, 13 // tri3 -), -gsSPNTrianglesInit_5b( - 10, // tri count - 15, 16, 17, // tri0 - 18, 17, 16, // tri1 - 18, 16, 19 // tri2 -), -gsSPNTriangles_5b( - 20, 21, 22, // tri0 - 20, 22, 23, // tri1 - 16, 15, 24, // tri2 - 24, 19, 16 // tri3 -), -gsSPNTriangles_5b( - 18, 19, 24, // tri0 - 25, 18, 24, // tri1 - 15, 17, 20, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*14, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&duk_1_v[0], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&duk_1_v[4], 22, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 4, // tri0 + 2, 6, 5, // tri1 + 1, 2, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 0, 11, 10, // tri1 + 3, 0, 12, // tri2 + 0, 14, 13 // tri3 + ), + gsSPNTrianglesInit_5b(10, // tri count + 15, 16, 17, // tri0 + 18, 17, 16, // tri1 + 18, 16, 19 // tri2 + ), + gsSPNTriangles_5b(20, 21, 22, // tri0 + 20, 22, 23, // tri1 + 16, 15, 24, // tri2 + 24, 19, 16 // tri3 + ), + gsSPNTriangles_5b(18, 19, 24, // tri0 + 25, 18, 24, // tri1 + 15, 17, 20, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_duk_model[] = { -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&duk_1_v[133], 4, 0), -gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&duk_1_v[137], 15, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 0, 4, // tri0 - 3, 5, 6, // tri1 - 1, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 1, 9, 0, // tri0 - 3, 10, 11, // tri1 - 2, 3, 12, // tri2 - 3, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 15, 16, 17, // tri0 - 18, 15, 17, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&duk_1_v[133], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&duk_1_v[137], 15, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 0, 4, // tri0 + 3, 5, 6, // tri1 + 1, 7, 8 // tri2 + ), + gsSPNTriangles_5b(1, 9, 0, // tri0 + 3, 10, 11, // tri1 + 2, 3, 12, // tri2 + 3, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 15, 16, 17, // tri0 + 18, 15, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_duk_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&duk_1_v[152], 4, 0), -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&duk_1_v[156], 9, 4), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 4, // tri0 - 2, 0, 5, // tri1 - 0, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 8, 9, // tri0 - 1, 3, 10, // tri1 - 3, 11, 12, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&duk_1_v[152], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&duk_1_v[156], 9, 4), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 4, // tri0 + 2, 0, 5, // tri1 + 0, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 1, 3, 10, // tri1 + 3, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_duk_model[] = { -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&duk_1_v[101], 4, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&duk_1_v[105], 15, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 3, 4, // tri0 - 3, 5, 6, // tri1 - 0, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 0, 9, 1, // tri0 - 3, 10, 11, // tri1 - 3, 2, 12, // tri2 - 3, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 15, 16, 17, // tri0 - 15, 17, 18, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&duk_1_v[101], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&duk_1_v[105], 15, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 4, // tri0 + 3, 5, 6, // tri1 + 0, 7, 8 // tri2 + ), + gsSPNTriangles_5b(0, 9, 1, // tri0 + 3, 10, 11, // tri1 + 3, 2, 12, // tri2 + 3, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 15, 16, 17, // tri0 + 15, 17, 18, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_duk_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&duk_1_v[120], 4, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&duk_1_v[124], 9, 4), -gsSPNTrianglesInit_5b( - 6, // tri count - 1, 0, 4, // tri0 - 0, 2, 5, // tri1 - 0, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 8, 9, // tri0 - 3, 1, 10, // tri1 - 3, 11, 12, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&duk_1_v[120], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&duk_1_v[124], 9, 4), + gsSPNTrianglesInit_5b(6, // tri count + 1, 0, 4, // tri0 + 0, 2, 5, // tri1 + 0, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 3, 1, 10, // tri1 + 3, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_duk_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&duk_1_v[165], 9, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 252, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&duk_1_v[174], 20, 9), -gsSPNTrianglesInit_5b( - 14, // tri count - 0, 9, 10, // tri0 - 8, 11, 12, // tri1 - 1, 0, 13 // tri2 -), -gsSPNTriangles_5b( - 0, 3, 14, // tri0 - 4, 15, 7, // tri1 - 3, 7, 16, // tri2 - 7, 17, 18 // tri3 -), -gsSPNTriangles_5b( - 3, 20, 19, // tri0 - 8, 2, 21, // tri1 - 5, 8, 22, // tri2 - 5, 23, 24 // tri3 -), -gsSPNTriangles_5b( - 6, 26, 25, // tri0 - 6, 5, 27, // tri1 - 4, 6, 28, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&duk_1_v[194], 17, 0), -gsSPNTrianglesInit_5b( - 20, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 3, 6, 4 // tri2 -), -gsSPNTriangles_5b( - 1, 6, 2, // tri0 - 7, 8, 9, // tri1 - 7, 10, 11, // tri2 - 0, 12, 13 // tri3 -), -gsSPNTriangles_5b( - 5, 14, 10, // tri0 - 6, 11, 4, // tri1 - 10, 14, 11, // tri2 - 9, 13, 12 // tri3 -), -gsSPNTriangles_5b( - 5, 15, 3, // tri0 - 9, 12, 7, // tri1 - 11, 8, 7, // tri2 - 2, 16, 0 // tri3 -), -gsSPNTriangles_5b( - 13, 1, 0, // tri0 - 4, 14, 5, // tri1 - 1, 9, 6, // tri2 - 8, 6, 9 // tri3 -), -gsSPNTriangles_5b( - 8, 11, 6, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&duk_1_v[165], 9, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&duk_1_v[174], 20, 9), + gsSPNTrianglesInit_5b(14, // tri count + 0, 9, 10, // tri0 + 8, 11, 12, // tri1 + 1, 0, 13 // tri2 + ), + gsSPNTriangles_5b(0, 3, 14, // tri0 + 4, 15, 7, // tri1 + 3, 7, 16, // tri2 + 7, 17, 18 // tri3 + ), + gsSPNTriangles_5b(3, 20, 19, // tri0 + 8, 2, 21, // tri1 + 5, 8, 22, // tri2 + 5, 23, 24 // tri3 + ), + gsSPNTriangles_5b(6, 26, 25, // tri0 + 6, 5, 27, // tri1 + 4, 6, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&duk_1_v[194], 17, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(1, 6, 2, // tri0 + 7, 8, 9, // tri1 + 7, 10, 11, // tri2 + 0, 12, 13 // tri3 + ), + gsSPNTriangles_5b(5, 14, 10, // tri0 + 6, 11, 4, // tri1 + 10, 14, 11, // tri2 + 9, 13, 12 // tri3 + ), + gsSPNTriangles_5b(5, 15, 3, // tri0 + 9, 12, 7, // tri1 + 11, 8, 7, // tri2 + 2, 16, 0 // tri3 + ), + gsSPNTriangles_5b(13, 1, 0, // tri0 + 4, 14, 5, // tri1 + 1, 9, 6, // tri2 + 8, 6, 9 // tri3 + ), + gsSPNTriangles_5b(8, 11, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail1_duk_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&duk_1_v[211], 6, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&duk_1_v[217], 6, 6), -gsSPNTrianglesInit_5b( - 6, // tri count - 2, 6, 4, // tri0 - 0, 4, 7, // tri1 - 1, 8, 5 // tri2 -), -gsSPNTriangles_5b( - 3, 9, 2, // tri0 - 5, 10, 3, // tri1 - 1, 0, 11, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&duk_1_v[211], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&duk_1_v[217], 6, 6), + gsSPNTrianglesInit_5b(6, // tri count + 2, 6, 4, // tri0 + 0, 4, 7, // tri1 + 1, 8, 5 // tri2 + ), + gsSPNTriangles_5b(3, 9, 2, // tri0 + 5, 10, 3, // tri1 + 1, 0, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot3_duk_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&duk_1_v[272], 4, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&duk_1_v[276], 16, 4), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 4, 5, // tri0 - 2, 1, 6, // tri1 - 2, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 0, 3, 9, // tri0 - 1, 0, 10, // tri1 - 0, 11, 12, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 5, // tri count - 13, 14, 15, // tri0 - 16, 17, 13, // tri1 - 13, 15, 16 // tri2 -), -gsSPNTriangles_5b( - 18, 17, 16, // tri0 - 18, 16, 19, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&duk_1_v[272], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&duk_1_v[276], 16, 4), + gsSPNTrianglesInit_5b(6, // tri count + 0, 4, 5, // tri0 + 2, 1, 6, // tri1 + 2, 7, 8 // tri2 + ), + gsSPNTriangles_5b(0, 3, 9, // tri0 + 1, 0, 10, // tri1 + 0, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(5, // tri count + 13, 14, 15, // tri0 + 16, 17, 13, // tri1 + 13, 15, 16 // tri2 + ), + gsSPNTriangles_5b(18, 17, 16, // tri0 + 18, 16, 19, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_duk_model[] = { -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&duk_1_v[292], 5, 0), -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&duk_1_v[297], 14, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 2, 5, 6, // tri0 - 2, 3, 7, // tri1 - 3, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 0, 2, 10, // tri0 - 4, 1, 11, // tri1 - 2, 12, 13, // tri2 - 4, 14, 15 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 16, 17, 18, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&duk_1_v[292], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&duk_1_v[297], 14, 5), + gsSPNTrianglesInit_5b(7, // tri count + 2, 5, 6, // tri0 + 2, 3, 7, // tri1 + 3, 8, 9 // tri2 + ), + gsSPNTriangles_5b(0, 2, 10, // tri0 + 4, 1, 11, // tri1 + 2, 12, 13, // tri2 + 4, 14, 15 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 16, 17, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_duk_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&duk_1_v[311], 10, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 7, 0, 8, // tri0 - 6, 9, 4, // tri1 - 0, 7, 1, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&duk_1_v[311], 10, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 0, 8, // tri0 + 6, 9, 4, // tri1 + 0, 7, 1, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot3_duk_model[] = { -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&duk_1_v[223], 4, 0), -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&duk_1_v[227], 16, 4), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 4, 5, // tri0 - 1, 6, 7, // tri1 - 1, 2, 8 // tri2 -), -gsSPNTriangles_5b( - 3, 0, 9, // tri0 - 0, 1, 10, // tri1 - 0, 11, 12, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 5, // tri count - 13, 14, 15, // tri0 - 15, 16, 17, // tri1 - 17, 13, 15 // tri2 -), -gsSPNTriangles_5b( - 18, 17, 16, // tri0 - 18, 16, 19, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&duk_1_v[223], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&duk_1_v[227], 16, 4), + gsSPNTrianglesInit_5b(6, // tri count + 0, 4, 5, // tri0 + 1, 6, 7, // tri1 + 1, 2, 8 // tri2 + ), + gsSPNTriangles_5b(3, 0, 9, // tri0 + 0, 1, 10, // tri1 + 0, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(5, // tri count + 13, 14, 15, // tri0 + 15, 16, 17, // tri1 + 17, 13, 15 // tri2 + ), + gsSPNTriangles_5b(18, 17, 16, // tri0 + 18, 16, 19, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_duk_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&duk_1_v[243], 5, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&duk_1_v[248], 14, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 2, 5, 6, // tri0 - 3, 2, 7, // tri1 - 3, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 2, 0, 10, // tri0 - 1, 4, 11, // tri1 - 2, 12, 13, // tri2 - 4, 14, 15 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 16, 17, 18, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&duk_1_v[243], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&duk_1_v[248], 14, 5), + gsSPNTrianglesInit_5b(7, // tri count + 2, 5, 6, // tri0 + 3, 2, 7, // tri1 + 3, 8, 9 // tri2 + ), + gsSPNTriangles_5b(2, 0, 10, // tri0 + 1, 4, 11, // tri1 + 2, 12, 13, // tri2 + 4, 14, 15 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 16, 17, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_duk_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&duk_1_v[262], 10, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 7, 3, 8, // tri0 - 6, 9, 4, // tri1 - 2, 8, 3, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&duk_1_v[262], 10, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 3, 8, // tri0 + 6, 9, 4, // tri1 + 2, 8, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx base_duk_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&duk_1_v[321], 23, 0), -gsSPNTrianglesInit_5b( - 30, // tri count - 0, 1, 2, // tri0 - 3, 0, 4, // tri1 - 2, 1, 5 // tri2 -), -gsSPNTriangles_5b( - 4, 0, 2, // tri0 - 5, 1, 6, // tri1 - 7, 3, 8, // tri2 - 7, 8, 9 // tri3 -), -gsSPNTriangles_5b( - 9, 8, 10, // tri0 - 5, 6, 11, // tri1 - 12, 5, 11, // tri2 - 8, 3, 4 // tri3 -), -gsSPNTriangles_5b( - 13, 14, 15, // tri0 - 9, 10, 14, // tri1 - 13, 15, 16, // tri2 - 14, 10, 15 // tri3 -), -gsSPNTriangles_5b( - 13, 16, 17, // tri0 - 17, 16, 18, // tri1 - 18, 16, 19, // tri2 - 1, 0, 20 // tri3 -), -gsSPNTriangles_5b( - 1, 20, 21, // tri0 - 20, 0, 22, // tri1 - 21, 20, 13, // tri2 - 13, 20, 22 // tri3 -), -gsSPNTriangles_5b( - 6, 1, 21, // tri0 - 21, 13, 17, // tri1 - 22, 3, 7, // tri2 - 7, 9, 22 // tri3 -), -gsSPNTriangles_5b( - 0, 3, 22, // tri0 - 13, 22, 14, // tri1 - 9, 14, 22, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&duk_1_v[321], 23, 0), + gsSPNTrianglesInit_5b(30, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 2, 1, 5 // tri2 + ), + gsSPNTriangles_5b(4, 0, 2, // tri0 + 5, 1, 6, // tri1 + 7, 3, 8, // tri2 + 7, 8, 9 // tri3 + ), + gsSPNTriangles_5b(9, 8, 10, // tri0 + 5, 6, 11, // tri1 + 12, 5, 11, // tri2 + 8, 3, 4 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 9, 10, 14, // tri1 + 13, 15, 16, // tri2 + 14, 10, 15 // tri3 + ), + gsSPNTriangles_5b(13, 16, 17, // tri0 + 17, 16, 18, // tri1 + 18, 16, 19, // tri2 + 1, 0, 20 // tri3 + ), + gsSPNTriangles_5b(1, 20, 21, // tri0 + 20, 0, 22, // tri1 + 21, 20, 13, // tri2 + 13, 20, 22 // tri3 + ), + gsSPNTriangles_5b(6, 1, 21, // tri0 + 21, 13, 17, // tri1 + 22, 3, 7, // tri2 + 7, 9, 22 // tri3 + ), + gsSPNTriangles_5b(0, 3, 22, // tri0 + 13, 22, 14, // tri1 + 9, 14, 22, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_duk_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -710,4 +633,4 @@ static cKF_Joint_R_c cKF_je_r_duk_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_duk_1 = { 26, 15, cKF_je_r_duk_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_duk_1 = { 26, 15, cKF_je_r_duk_1_tbl }; diff --git a/src/data/npc/model/mdl/elp_1.c b/src/data/npc/model/mdl/elp_1.c index 78e02d70..4b1a3fd3 100644 --- a/src/data/npc/model/mdl/elp_1.c +++ b/src/data/npc/model/mdl/elp_1.c @@ -6,709 +6,626 @@ static Vtx elp_1_v[] = { }; static Gfx head_elp_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&elp_1_v[27], 6, 0), -gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&elp_1_v[33], 13, 6), -gsSPNTrianglesInit_5b( - 9, // tri count - 5, 6, 3, // tri0 - 1, 7, 8, // tri1 - 0, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 2, 11, 12, // tri0 - 3, 13, 2, // tri1 - 3, 14, 15, // tri2 - 2, 16, 0 // tri3 -), -gsSPNTriangles_5b( - 0, 17, 1, // tri0 - 1, 18, 4, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&elp_1_v[46], 26, 0), -gsSPNTrianglesInit_5b( - 18, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 9, 10, 11, // tri0 - 12, 10, 9, // tri1 - 0, 13, 1, // tri2 - 2, 14, 15 // tri3 -), -gsSPNTriangles_5b( - 12, 9, 16, // tri0 - 17, 18, 19, // tri1 - 18, 20, 21, // tri2 - 18, 22, 19 // tri3 -), -gsSPNTriangles_5b( - 18, 23, 20, // tri0 - 24, 9, 25, // tri1 - 5, 6, 8, // tri2 - 11, 25, 9 // tri3 -), -gsSPNTriangles_5b( - 8, 3, 5, // tri0 - 2, 15, 0, // tri1 - 21, 22, 18, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&elp_1_v[72], 24, 0), -gsSPNTrianglesInit_5b( - 16, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 3, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 8, 0, 3, // tri0 - 9, 7, 6, // tri1 - 5, 6, 3, // tri2 - 5, 10, 6 // tri3 -), -gsSPNTriangles_5b( - 10, 9, 6, // tri0 - 11, 12, 1, // tri1 - 11, 1, 13, // tri2 - 2, 4, 0 // tri3 -), -gsSPNTriangles_5b( - 1, 12, 2, // tri0 - 3, 0, 4, // tri1 - 3, 7, 8, // tri2 - 8, 13, 0 // tri3 -), -gsSPNTriangles_5b( - 13, 1, 0, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 8, // tri count - 14, 15, 16, // tri0 - 17, 18, 19, // tri1 - 19, 18, 20 // tri2 -), -gsSPNTriangles_5b( - 20, 21, 19, // tri0 - 16, 22, 14, // tri1 - 16, 21, 20, // tri2 - 20, 22, 16 // tri3 -), -gsSPNTriangles_5b( - 19, 23, 17, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000180, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 124), -gsSPVertex(&elp_1_v[96], 21, 0), -gsSPNTrianglesInit_5b( - 22, // tri count - 0, 1, 2, // tri0 - 3, 1, 4, // tri1 - 5, 3, 4 // tri2 -), -gsSPNTriangles_5b( - 4, 1, 6, // tri0 - 7, 8, 6, // tri1 - 9, 7, 10, // tri2 - 4, 11, 5 // tri3 -), -gsSPNTriangles_5b( - 4, 8, 11, // tri0 - 6, 8, 4, // tri1 - 12, 7, 6, // tri2 - 13, 11, 14 // tri3 -), -gsSPNTriangles_5b( - 10, 15, 9, // tri0 - 6, 16, 12, // tri1 - 8, 7, 9, // tri2 - 8, 9, 14 // tri3 -), -gsSPNTriangles_5b( - 8, 14, 11, // tri0 - 15, 17, 9, // tri1 - 17, 18, 14, // tri2 - 1, 16, 6 // tri3 -), -gsSPNTriangles_5b( - 9, 17, 14, // tri0 - 14, 18, 13, // tri1 - 19, 20, 1, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&elp_1_v[117], 16, 0), -gsSPNTrianglesInit_5b( - 16, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 2, 6, 0 // tri2 -), -gsSPNTriangles_5b( - 7, 8, 3, // tri0 - 9, 3, 10, // tri1 - 4, 3, 9, // tri2 - 3, 11, 7 // tri3 -), -gsSPNTriangles_5b( - 5, 12, 1, // tri0 - 5, 1, 11, // tri1 - 11, 1, 13, // tri2 - 13, 1, 0 // tri3 -), -gsSPNTriangles_5b( - 3, 8, 10, // tri0 - 14, 10, 8, // tri1 - 1, 12, 15, // tri2 - 3, 5, 11 // tri3 -), -gsSPNTriangles_5b( - 1, 15, 2, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&elp_1_v[27], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&elp_1_v[33], 13, 6), + gsSPNTrianglesInit_5b(9, // tri count + 5, 6, 3, // tri0 + 1, 7, 8, // tri1 + 0, 9, 10 // tri2 + ), + gsSPNTriangles_5b(2, 11, 12, // tri0 + 3, 13, 2, // tri1 + 3, 14, 15, // tri2 + 2, 16, 0 // tri3 + ), + gsSPNTriangles_5b(0, 17, 1, // tri0 + 1, 18, 4, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&elp_1_v[46], 26, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 10, 9, // tri1 + 0, 13, 1, // tri2 + 2, 14, 15 // tri3 + ), + gsSPNTriangles_5b(12, 9, 16, // tri0 + 17, 18, 19, // tri1 + 18, 20, 21, // tri2 + 18, 22, 19 // tri3 + ), + gsSPNTriangles_5b(18, 23, 20, // tri0 + 24, 9, 25, // tri1 + 5, 6, 8, // tri2 + 11, 25, 9 // tri3 + ), + gsSPNTriangles_5b(8, 3, 5, // tri0 + 2, 15, 0, // tri1 + 21, 22, 18, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&elp_1_v[72], 24, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 0, 3, // tri0 + 9, 7, 6, // tri1 + 5, 6, 3, // tri2 + 5, 10, 6 // tri3 + ), + gsSPNTriangles_5b(10, 9, 6, // tri0 + 11, 12, 1, // tri1 + 11, 1, 13, // tri2 + 2, 4, 0 // tri3 + ), + gsSPNTriangles_5b(1, 12, 2, // tri0 + 3, 0, 4, // tri1 + 3, 7, 8, // tri2 + 8, 13, 0 // tri3 + ), + gsSPNTriangles_5b(13, 1, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(8, // tri count + 14, 15, 16, // tri0 + 17, 18, 19, // tri1 + 19, 18, 20 // tri2 + ), + gsSPNTriangles_5b(20, 21, 19, // tri0 + 16, 22, 14, // tri1 + 16, 21, 20, // tri2 + 20, 22, 16 // tri3 + ), + gsSPNTriangles_5b(19, 23, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x180, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 124), + gsSPVertex(&elp_1_v[96], 21, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 3, 1, 4, // tri1 + 5, 3, 4 // tri2 + ), + gsSPNTriangles_5b(4, 1, 6, // tri0 + 7, 8, 6, // tri1 + 9, 7, 10, // tri2 + 4, 11, 5 // tri3 + ), + gsSPNTriangles_5b(4, 8, 11, // tri0 + 6, 8, 4, // tri1 + 12, 7, 6, // tri2 + 13, 11, 14 // tri3 + ), + gsSPNTriangles_5b(10, 15, 9, // tri0 + 6, 16, 12, // tri1 + 8, 7, 9, // tri2 + 8, 9, 14 // tri3 + ), + gsSPNTriangles_5b(8, 14, 11, // tri0 + 15, 17, 9, // tri1 + 17, 18, 14, // tri2 + 1, 16, 6 // tri3 + ), + gsSPNTriangles_5b(9, 17, 14, // tri0 + 14, 18, 13, // tri1 + 19, 20, 1, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&elp_1_v[117], 16, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 6, 0 // tri2 + ), + gsSPNTriangles_5b(7, 8, 3, // tri0 + 9, 3, 10, // tri1 + 4, 3, 9, // tri2 + 3, 11, 7 // tri3 + ), + gsSPNTriangles_5b(5, 12, 1, // tri0 + 5, 1, 11, // tri1 + 11, 1, 13, // tri2 + 13, 1, 0 // tri3 + ), + gsSPNTriangles_5b(3, 8, 10, // tri0 + 14, 10, 8, // tri1 + 1, 12, 15, // tri2 + 3, 5, 11 // tri3 + ), + gsSPNTriangles_5b(1, 15, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx mouth_elp_model[] = { -gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&elp_1_v[0], 5, 0), -gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&elp_1_v[5], 22, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 1, 2, 5, // tri0 - 0, 1, 6, // tri1 - 4, 0, 7 // tri2 -), -gsSPNTriangles_5b( - 4, 8, 3, // tri0 - 0, 9, 10, // tri1 - 0, 11, 12, // tri2 - 2, 14, 13 // tri3 -), -gsSPNTriangles_5b( - 3, 15, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 6, // tri count - 17, 18, 19, // tri0 - 20, 21, 22, // tri1 - 21, 23, 22 // tri2 -), -gsSPNTriangles_5b( - 22, 24, 20, // tri0 - 25, 20, 24, // tri1 - 23, 21, 26, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&elp_1_v[0], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&elp_1_v[5], 22, 5), + gsSPNTrianglesInit_5b(8, // tri count + 1, 2, 5, // tri0 + 0, 1, 6, // tri1 + 4, 0, 7 // tri2 + ), + gsSPNTriangles_5b(4, 8, 3, // tri0 + 0, 9, 10, // tri1 + 0, 11, 12, // tri2 + 2, 14, 13 // tri3 + ), + gsSPNTriangles_5b(3, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(6, // tri count + 17, 18, 19, // tri0 + 20, 21, 22, // tri1 + 21, 23, 22 // tri2 + ), + gsSPNTriangles_5b(22, 24, 20, // tri0 + 25, 20, 24, // tri1 + 23, 21, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_elp_model[] = { -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&elp_1_v[169], 5, 0), -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&elp_1_v[174], 16, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 1, 5, 6, // tri0 - 0, 1, 7, // tri1 - 4, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 4, 2, 10, // tri0 - 1, 4, 11, // tri1 - 3, 12, 13, // tri2 - 4, 14, 15 // tri3 -), -gsSPNTriangles_5b( - 3, 0, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 19, 20, 17, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&elp_1_v[169], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&elp_1_v[174], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 1, 5, 6, // tri0 + 0, 1, 7, // tri1 + 4, 8, 9 // tri2 + ), + gsSPNTriangles_5b(4, 2, 10, // tri0 + 1, 4, 11, // tri1 + 3, 12, 13, // tri2 + 4, 14, 15 // tri3 + ), + gsSPNTriangles_5b(3, 0, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 19, 20, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_elp_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&elp_1_v[190], 4, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&elp_1_v[194], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 2, 1, 4, // tri0 - 2, 5, 6, // tri1 - 0, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 0, 9, 10, // tri0 - 1, 0, 11, // tri1 - 1, 13, 12, // tri2 - 0, 3, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&elp_1_v[190], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&elp_1_v[194], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 2, 1, 4, // tri0 + 2, 5, 6, // tri1 + 0, 7, 8 // tri2 + ), + gsSPNTriangles_5b(0, 9, 10, // tri0 + 1, 0, 11, // tri1 + 1, 13, 12, // tri2 + 0, 3, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_elp_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&elp_1_v[133], 5, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&elp_1_v[138], 16, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 1, 5, 6, // tri0 - 1, 0, 7, // tri1 - 4, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 2, 4, 10, // tri0 - 4, 1, 11, // tri1 - 3, 12, 13, // tri2 - 4, 14, 15 // tri3 -), -gsSPNTriangles_5b( - 0, 3, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 19, 20, 17, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&elp_1_v[133], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&elp_1_v[138], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 1, 5, 6, // tri0 + 1, 0, 7, // tri1 + 4, 8, 9 // tri2 + ), + gsSPNTriangles_5b(2, 4, 10, // tri0 + 4, 1, 11, // tri1 + 3, 12, 13, // tri2 + 4, 14, 15 // tri3 + ), + gsSPNTriangles_5b(0, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 19, 20, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_elp_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&elp_1_v[154], 4, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&elp_1_v[158], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 1, 2, 4, // tri0 - 2, 5, 6, // tri1 - 0, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 3, 0, 9, // tri0 - 0, 1, 10, // tri1 - 1, 12, 11, // tri2 - 0, 13, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&elp_1_v[154], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&elp_1_v[158], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 1, 2, 4, // tri0 + 2, 5, 6, // tri1 + 0, 7, 8 // tri2 + ), + gsSPNTriangles_5b(3, 0, 9, // tri0 + 0, 1, 10, // tri1 + 1, 12, 11, // tri2 + 0, 13, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_elp_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&elp_1_v[205], 28, 0), -gsSPNTrianglesInit_5b( - 10, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 0, 6, 1 // tri2 -), -gsSPNTriangles_5b( - 2, 1, 7, // tri0 - 2, 7, 8, // tri1 - 9, 10, 3, // tri2 - 9, 3, 11 // tri3 -), -gsSPNTriangles_5b( - 8, 7, 10, // tri0 - 8, 10, 9, // tri1 - 11, 3, 5, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 14, // tri count - 12, 13, 14, // tri0 - 12, 15, 13, // tri1 - 16, 14, 13 // tri2 -), -gsSPNTriangles_5b( - 17, 18, 19, // tri0 - 13, 18, 16, // tri1 - 20, 21, 15, // tri2 - 22, 23, 24 // tri3 -), -gsSPNTriangles_5b( - 16, 18, 17, // tri0 - 19, 23, 22, // tri1 - 24, 25, 22, // tri2 - 26, 21, 20 // tri3 -), -gsSPNTriangles_5b( - 20, 27, 26, // tri0 - 22, 17, 19, // tri1 - 15, 12, 20, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&elp_1_v[233], 7, 0), -gsSPNTrianglesInit_5b( - 5, // tri count - 0, 1, 2, // tri0 - 3, 1, 4, // tri1 - 4, 5, 3 // tri2 -), -gsSPNTriangles_5b( - 1, 3, 2, // tri0 - 2, 6, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&elp_1_v[205], 28, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 1 // tri2 + ), + gsSPNTriangles_5b(2, 1, 7, // tri0 + 2, 7, 8, // tri1 + 9, 10, 3, // tri2 + 9, 3, 11 // tri3 + ), + gsSPNTriangles_5b(8, 7, 10, // tri0 + 8, 10, 9, // tri1 + 11, 3, 5, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(14, // tri count + 12, 13, 14, // tri0 + 12, 15, 13, // tri1 + 16, 14, 13 // tri2 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 13, 18, 16, // tri1 + 20, 21, 15, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b(16, 18, 17, // tri0 + 19, 23, 22, // tri1 + 24, 25, 22, // tri2 + 26, 21, 20 // tri3 + ), + gsSPNTriangles_5b(20, 27, 26, // tri0 + 22, 17, 19, // tri1 + 15, 12, 20, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&elp_1_v[233], 7, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 1, 4, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b(1, 3, 2, // tri0 + 2, 6, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail1_elp_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&elp_1_v[266], 8, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 2, // tri0 - 2, 3, 0, // tri1 - 4, 1, 5 // tri2 -), -gsSPNTriangles_5b( - 1, 4, 2, // tri0 - 6, 4, 5, // tri1 - 7, 0, 3, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&elp_1_v[266], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 1, 5 // tri2 + ), + gsSPNTriangles_5b(1, 4, 2, // tri0 + 6, 4, 5, // tri1 + 7, 0, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail2_elp_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&elp_1_v[240], 4, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&elp_1_v[244], 22, 4), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 3, 4, // tri0 - 0, 5, 6, // tri1 - 2, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 1, 9, // tri0 - 3, 2, 10, // tri1 - 3, 11, 12, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 11, // tri count - 13, 14, 15, // tri0 - 15, 16, 13, // tri1 - 17, 18, 19 // tri2 -), -gsSPNTriangles_5b( - 20, 15, 21, // tri0 - 22, 19, 18, // tri1 - 21, 15, 14, // tri2 - 16, 15, 23 // tri3 -), -gsSPNTriangles_5b( - 21, 18, 24, // tri0 - 18, 25, 22, // tri1 - 21, 14, 25, // tri2 - 25, 18, 21 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&elp_1_v[240], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&elp_1_v[244], 22, 4), + gsSPNTrianglesInit_5b(6, // tri count + 0, 3, 4, // tri0 + 0, 5, 6, // tri1 + 2, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 1, 9, // tri0 + 3, 2, 10, // tri1 + 3, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(11, // tri count + 13, 14, 15, // tri0 + 15, 16, 13, // tri1 + 17, 18, 19 // tri2 + ), + gsSPNTriangles_5b(20, 15, 21, // tri0 + 22, 19, 18, // tri1 + 21, 15, 14, // tri2 + 16, 15, 23 // tri3 + ), + gsSPNTriangles_5b(21, 18, 24, // tri0 + 18, 25, 22, // tri1 + 21, 14, 25, // tri2 + 25, 18, 21 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_elp_model[] = { -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&elp_1_v[315], 5, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&elp_1_v[320], 17, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 5, 6, // tri0 - 0, 7, 8, // tri1 - 2, 10, 9 // tri2 -), -gsSPNTriangles_5b( - 1, 11, 0, // tri0 - 4, 2, 12, // tri1 - 1, 4, 13, // tri2 - 1, 14, 15 // tri3 -), -gsSPNTriangles_5b( - 0, 16, 3, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 4, // tri count - 17, 18, 19, // tri0 - 20, 18, 17, // tri1 - 17, 21, 20 // tri2 -), -gsSPNTriangles_5b( - 19, 18, 20, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&elp_1_v[315], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&elp_1_v[320], 17, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 0, 7, 8, // tri1 + 2, 10, 9 // tri2 + ), + gsSPNTriangles_5b(1, 11, 0, // tri0 + 4, 2, 12, // tri1 + 1, 4, 13, // tri2 + 1, 14, 15 // tri3 + ), + gsSPNTriangles_5b(0, 16, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(4, // tri count + 17, 18, 19, // tri0 + 20, 18, 17, // tri1 + 17, 21, 20 // tri2 + ), + gsSPNTriangles_5b(19, 18, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_elp_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&elp_1_v[337], 6, 0), -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&elp_1_v[343], 13, 6), -gsSPNTrianglesInit_5b( - 9, // tri count - 1, 3, 6, // tri0 - 2, 1, 7, // tri1 - 3, 0, 8 // tri2 -), -gsSPNTriangles_5b( - 4, 2, 9, // tri0 - 0, 5, 10, // tri1 - 1, 12, 11, // tri2 - 0, 13, 14 // tri3 -), -gsSPNTriangles_5b( - 2, 15, 16, // tri0 - 5, 17, 18, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&elp_1_v[337], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&elp_1_v[343], 13, 6), + gsSPNTrianglesInit_5b(9, // tri count + 1, 3, 6, // tri0 + 2, 1, 7, // tri1 + 3, 0, 8 // tri2 + ), + gsSPNTriangles_5b(4, 2, 9, // tri0 + 0, 5, 10, // tri1 + 1, 12, 11, // tri2 + 0, 13, 14 // tri3 + ), + gsSPNTriangles_5b(2, 15, 16, // tri0 + 5, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_elp_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&elp_1_v[274], 5, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&elp_1_v[279], 17, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 5, 6, // tri0 - 2, 8, 7, // tri1 - 0, 9, 1 // tri2 -), -gsSPNTriangles_5b( - 2, 4, 10, // tri0 - 4, 1, 11, // tri1 - 1, 12, 13, // tri2 - 0, 14, 15 // tri3 -), -gsSPNTriangles_5b( - 3, 16, 0, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 4, // tri count - 17, 18, 19, // tri0 - 19, 18, 20, // tri1 - 20, 21, 19 // tri2 -), -gsSPNTriangles_5b( - 20, 18, 17, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&elp_1_v[274], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&elp_1_v[279], 17, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 2, 8, 7, // tri1 + 0, 9, 1 // tri2 + ), + gsSPNTriangles_5b(2, 4, 10, // tri0 + 4, 1, 11, // tri1 + 1, 12, 13, // tri2 + 0, 14, 15 // tri3 + ), + gsSPNTriangles_5b(3, 16, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(4, // tri count + 17, 18, 19, // tri0 + 19, 18, 20, // tri1 + 20, 21, 19 // tri2 + ), + gsSPNTriangles_5b(20, 18, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_elp_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&elp_1_v[296], 6, 0), -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&elp_1_v[302], 13, 6), -gsSPNTrianglesInit_5b( - 9, // tri count - 0, 3, 6, // tri0 - 3, 1, 7, // tri1 - 1, 2, 8 // tri2 -), -gsSPNTriangles_5b( - 4, 9, 10, // tri0 - 2, 11, 12, // tri1 - 0, 13, 14, // tri2 - 1, 16, 15 // tri3 -), -gsSPNTriangles_5b( - 4, 0, 17, // tri0 - 2, 5, 18, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&elp_1_v[296], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&elp_1_v[302], 13, 6), + gsSPNTrianglesInit_5b(9, // tri count + 0, 3, 6, // tri0 + 3, 1, 7, // tri1 + 1, 2, 8 // tri2 + ), + gsSPNTriangles_5b(4, 9, 10, // tri0 + 2, 11, 12, // tri1 + 0, 13, 14, // tri2 + 1, 16, 15 // tri3 + ), + gsSPNTriangles_5b(4, 0, 17, // tri0 + 2, 5, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx base_elp_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&elp_1_v[356], 24, 0), -gsSPNTrianglesInit_5b( - 10, // tri count - 0, 1, 2, // tri0 - 2, 1, 3, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 7, 8, 9, // tri0 - 8, 7, 10, // tri1 - 9, 3, 7, // tri2 - 3, 1, 7 // tri3 -), -gsSPNTriangles_5b( - 6, 11, 4, // tri0 - 10, 6, 5, // tri1 - 10, 5, 8, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 10, // tri count - 12, 13, 14, // tri0 - 15, 14, 13, // tri1 - 16, 17, 18 // tri2 -), -gsSPNTriangles_5b( - 14, 19, 12, // tri0 - 14, 17, 19, // tri1 - 20, 21, 22, // tri2 - 23, 22, 15 // tri3 -), -gsSPNTriangles_5b( - 13, 23, 15, // tri0 - 22, 23, 20, // tri1 - 19, 17, 16, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&elp_1_v[356], 24, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 8, 7, 10, // tri1 + 9, 3, 7, // tri2 + 3, 1, 7 // tri3 + ), + gsSPNTriangles_5b(6, 11, 4, // tri0 + 10, 6, 5, // tri1 + 10, 5, 8, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(10, // tri count + 12, 13, 14, // tri0 + 15, 14, 13, // tri1 + 16, 17, 18 // tri2 + ), + gsSPNTriangles_5b(14, 19, 12, // tri0 + 14, 17, 19, // tri1 + 20, 21, 22, // tri2 + 23, 22, 15 // tri3 + ), + gsSPNTriangles_5b(13, 23, 15, // tri0 + 22, 23, 20, // tri1 + 19, 17, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_elp_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -740,4 +657,4 @@ static cKF_Joint_R_c cKF_je_r_elp_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_elp_1 = { 26, 14, cKF_je_r_elp_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_elp_1 = { 26, 14, cKF_je_r_elp_1_tbl }; diff --git a/src/data/npc/model/mdl/end_1.c b/src/data/npc/model/mdl/end_1.c index 6d99c2ae..78e18ed3 100644 --- a/src/data/npc/model/mdl/end_1.c +++ b/src/data/npc/model/mdl/end_1.c @@ -6,765 +6,674 @@ static Vtx end_1_v[] = { }; static Gfx head_end_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&end_1_v[0], 27, 0), -gsSPNTrianglesInit_5b( - 20, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 3, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 8, 9, 10, // tri0 - 7, 6, 11, // tri1 - 10, 9, 12, // tri2 - 12, 9, 13 // tri3 -), -gsSPNTriangles_5b( - 7, 14, 15, // tri0 - 11, 14, 7, // tri1 - 10, 16, 8, // tri2 - 4, 7, 15 // tri3 -), -gsSPNTriangles_5b( - 2, 16, 10, // tri0 - 2, 10, 0, // tri1 - 15, 17, 4, // tri2 - 5, 0, 12 // tri3 -), -gsSPNTriangles_5b( - 13, 6, 3, // tri0 - 5, 13, 3, // tri1 - 12, 13, 5, // tri2 - 12, 0, 10 // tri3 -), -gsSPNTriangles_5b( - 7, 4, 3, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 8, // tri count - 18, 19, 20, // tri0 - 21, 18, 22, // tri1 - 20, 23, 22 // tri2 -), -gsSPNTriangles_5b( - 20, 22, 18, // tri0 - 24, 18, 21, // tri1 - 25, 21, 22, // tri2 - 18, 24, 19 // tri3 -), -gsSPNTriangles_5b( - 21, 26, 24, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&end_1_v[27], 32, 0), -gsSPNTrianglesInit_5b( - 16, // tri count - 0, 1, 2, // tri0 - 3, 4, 1, // tri1 - 5, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 8, 6, 9, // tri0 - 10, 11, 12, // tri1 - 13, 11, 10, // tri2 - 14, 15, 1 // tri3 -), -gsSPNTriangles_5b( - 16, 17, 5, // tri0 - 18, 19, 20, // tri1 - 6, 5, 17, // tri2 - 21, 8, 22 // tri3 -), -gsSPNTriangles_5b( - 7, 6, 8, // tri0 - 23, 17, 16, // tri1 - 24, 25, 26, // tri2 - 27, 28, 16 // tri3 -), -gsSPNTriangles_5b( - 29, 30, 3, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&end_1_v[58], 32, 0), -gsSPNTrianglesInit_5b( - 15, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 9, 10, 11, // tri0 - 10, 12, 13, // tri1 - 12, 14, 15, // tri2 - 2, 16, 17 // tri3 -), -gsSPNTriangles_5b( - 18, 19, 20, // tri0 - 21, 11, 22, // tri1 - 15, 23, 13, // tri2 - 5, 24, 3 // tri3 -), -gsSPNTriangles_5b( - 13, 23, 25, // tri0 - 9, 12, 10, // tri1 - 26, 27, 28, // tri2 - 29, 8, 30 // tri3 -), -gsSPVertex(&end_1_v[89], 32, 0), -gsSPNTrianglesInit_5b( - 17, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 2, 1, 6 // tri2 -), -gsSPNTriangles_5b( - 2, 7, 5, // tri0 - 8, 9, 10, // tri1 - 11, 9, 8, // tri2 - 12, 13, 3 // tri3 -), -gsSPNTriangles_5b( - 12, 14, 15, // tri0 - 12, 3, 16, // tri1 - 17, 18, 19, // tri2 - 17, 20, 21 // tri3 -), -gsSPNTriangles_5b( - 22, 23, 11, // tri0 - 19, 18, 24, // tri1 - 25, 8, 10, // tri2 - 21, 26, 27 // tri3 -), -gsSPNTriangles_5b( - 22, 28, 25, // tri0 - 29, 30, 31, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&end_1_v[121], 32, 0), -gsSPNTrianglesInit_5b( - 22, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 3 // tri2 -), -gsSPNTriangles_5b( - 8, 1, 9, // tri0 - 10, 11, 12, // tri1 - 6, 13, 12, // tri2 - 7, 6, 12 // tri3 -), -gsSPNTriangles_5b( - 6, 3, 14, // tri0 - 15, 16, 14, // tri1 - 4, 17, 8, // tri2 - 12, 13, 10 // tri3 -), -gsSPNTriangles_5b( - 18, 19, 20, // tri0 - 21, 10, 13, // tri1 - 7, 22, 20, // tri2 - 23, 24, 11 // tri3 -), -gsSPNTriangles_5b( - 12, 11, 7, // tri0 - 25, 26, 16, // tri1 - 4, 8, 9, // tri2 - 22, 27, 18 // tri3 -), -gsSPNTriangles_5b( - 28, 29, 30, // tri0 - 28, 30, 31, // tri1 - 20, 22, 18, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&end_1_v[153], 18, 0), -gsSPNTrianglesInit_5b( - 12, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 0, 7 // tri2 -), -gsSPNTriangles_5b( - 8, 5, 9, // tri0 - 2, 7, 0, // tri1 - 5, 8, 3, // tri2 - 10, 11, 12 // tri3 -), -gsSPNTriangles_5b( - 11, 10, 13, // tri0 - 14, 15, 16, // tri1 - 12, 11, 16, // tri2 - 12, 17, 10 // tri3 -), -gsSPNTriangles_5b( - 14, 11, 13, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&end_1_v[0], 27, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 7, 6, 11, // tri1 + 10, 9, 12, // tri2 + 12, 9, 13 // tri3 + ), + gsSPNTriangles_5b(7, 14, 15, // tri0 + 11, 14, 7, // tri1 + 10, 16, 8, // tri2 + 4, 7, 15 // tri3 + ), + gsSPNTriangles_5b(2, 16, 10, // tri0 + 2, 10, 0, // tri1 + 15, 17, 4, // tri2 + 5, 0, 12 // tri3 + ), + gsSPNTriangles_5b(13, 6, 3, // tri0 + 5, 13, 3, // tri1 + 12, 13, 5, // tri2 + 12, 0, 10 // tri3 + ), + gsSPNTriangles_5b(7, 4, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(8, // tri count + 18, 19, 20, // tri0 + 21, 18, 22, // tri1 + 20, 23, 22 // tri2 + ), + gsSPNTriangles_5b(20, 22, 18, // tri0 + 24, 18, 21, // tri1 + 25, 21, 22, // tri2 + 18, 24, 19 // tri3 + ), + gsSPNTriangles_5b(21, 26, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&end_1_v[27], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 6, 9, // tri0 + 10, 11, 12, // tri1 + 13, 11, 10, // tri2 + 14, 15, 1 // tri3 + ), + gsSPNTriangles_5b(16, 17, 5, // tri0 + 18, 19, 20, // tri1 + 6, 5, 17, // tri2 + 21, 8, 22 // tri3 + ), + gsSPNTriangles_5b(7, 6, 8, // tri0 + 23, 17, 16, // tri1 + 24, 25, 26, // tri2 + 27, 28, 16 // tri3 + ), + gsSPNTriangles_5b(29, 30, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&end_1_v[58], 32, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 10, 12, 13, // tri1 + 12, 14, 15, // tri2 + 2, 16, 17 // tri3 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 21, 11, 22, // tri1 + 15, 23, 13, // tri2 + 5, 24, 3 // tri3 + ), + gsSPNTriangles_5b(13, 23, 25, // tri0 + 9, 12, 10, // tri1 + 26, 27, 28, // tri2 + 29, 8, 30 // tri3 + ), + gsSPVertex(&end_1_v[89], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 1, 6 // tri2 + ), + gsSPNTriangles_5b(2, 7, 5, // tri0 + 8, 9, 10, // tri1 + 11, 9, 8, // tri2 + 12, 13, 3 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 12, 3, 16, // tri1 + 17, 18, 19, // tri2 + 17, 20, 21 // tri3 + ), + gsSPNTriangles_5b(22, 23, 11, // tri0 + 19, 18, 24, // tri1 + 25, 8, 10, // tri2 + 21, 26, 27 // tri3 + ), + gsSPNTriangles_5b(22, 28, 25, // tri0 + 29, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&end_1_v[121], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 3 // tri2 + ), + gsSPNTriangles_5b(8, 1, 9, // tri0 + 10, 11, 12, // tri1 + 6, 13, 12, // tri2 + 7, 6, 12 // tri3 + ), + gsSPNTriangles_5b(6, 3, 14, // tri0 + 15, 16, 14, // tri1 + 4, 17, 8, // tri2 + 12, 13, 10 // tri3 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 21, 10, 13, // tri1 + 7, 22, 20, // tri2 + 23, 24, 11 // tri3 + ), + gsSPNTriangles_5b(12, 11, 7, // tri0 + 25, 26, 16, // tri1 + 4, 8, 9, // tri2 + 22, 27, 18 // tri3 + ), + gsSPNTriangles_5b(28, 29, 30, // tri0 + 28, 30, 31, // tri1 + 20, 22, 18, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&end_1_v[153], 18, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 0, 7 // tri2 + ), + gsSPNTriangles_5b(8, 5, 9, // tri0 + 2, 7, 0, // tri1 + 5, 8, 3, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(11, 10, 13, // tri0 + 14, 15, 16, // tri1 + 12, 11, 16, // tri2 + 12, 17, 10 // tri3 + ), + gsSPNTriangles_5b(14, 11, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_end_model[] = { -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&end_1_v[206], 4, 0), -gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&end_1_v[210], 17, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 2, 4, // tri0 - 3, 1, 5, // tri1 - 2, 3, 6 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 7, // tri0 - 2, 8, 9, // tri1 - 1, 10, 11, // tri2 - 0, 12, 13 // tri3 -), -gsSPNTrianglesInit_5b( - 9, // tri count - 14, 15, 16, // tri0 - 16, 17, 18, // tri1 - 19, 14, 20 // tri2 -), -gsSPNTriangles_5b( - 20, 18, 19, // tri0 - 19, 18, 17, // tri1 - 15, 14, 19, // tri2 - 17, 15, 19 // tri3 -), -gsSPNTriangles_5b( - 16, 20, 14, // tri0 - 18, 20, 16, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&end_1_v[206], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&end_1_v[210], 17, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 2, 4, // tri0 + 3, 1, 5, // tri1 + 2, 3, 6 // tri2 + ), + gsSPNTriangles_5b(1, 0, 7, // tri0 + 2, 8, 9, // tri1 + 1, 10, 11, // tri2 + 0, 12, 13 // tri3 + ), + gsSPNTrianglesInit_5b(9, // tri count + 14, 15, 16, // tri0 + 16, 17, 18, // tri1 + 19, 14, 20 // tri2 + ), + gsSPNTriangles_5b(20, 18, 19, // tri0 + 19, 18, 17, // tri1 + 15, 14, 19, // tri2 + 17, 15, 19 // tri3 + ), + gsSPNTriangles_5b(16, 20, 14, // tri0 + 18, 20, 16, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_end_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&end_1_v[227], 3, 0), -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&end_1_v[230], 11, 3), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 2, 3, // tri0 - 2, 5, 4, // tri1 - 1, 7, 6 // tri2 -), -gsSPNTriangles_5b( - 2, 1, 8, // tri0 - 1, 0, 9, // tri1 - 0, 10, 11, // tri2 - 2, 12, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&end_1_v[227], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&end_1_v[230], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 0, 2, 3, // tri0 + 2, 5, 4, // tri1 + 1, 7, 6 // tri2 + ), + gsSPNTriangles_5b(2, 1, 8, // tri0 + 1, 0, 9, // tri1 + 0, 10, 11, // tri2 + 2, 12, 13 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_end_model[] = { -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&end_1_v[171], 4, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&end_1_v[175], 17, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 1, 3, 4, // tri0 - 3, 2, 5, // tri1 - 2, 0, 6 // tri2 -), -gsSPNTriangles_5b( - 0, 1, 7, // tri0 - 2, 8, 9, // tri1 - 1, 10, 11, // tri2 - 0, 12, 13 // tri3 -), -gsSPNTrianglesInit_5b( - 9, // tri count - 14, 15, 16, // tri0 - 17, 18, 15, // tri1 - 19, 20, 16 // tri2 -), -gsSPNTriangles_5b( - 16, 20, 14, // tri0 - 16, 15, 18, // tri1 - 16, 18, 17, // tri2 - 17, 19, 16 // tri3 -), -gsSPNTriangles_5b( - 20, 19, 17, // tri0 - 17, 15, 20, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&end_1_v[171], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&end_1_v[175], 17, 4), + gsSPNTrianglesInit_5b(7, // tri count + 1, 3, 4, // tri0 + 3, 2, 5, // tri1 + 2, 0, 6 // tri2 + ), + gsSPNTriangles_5b(0, 1, 7, // tri0 + 2, 8, 9, // tri1 + 1, 10, 11, // tri2 + 0, 12, 13 // tri3 + ), + gsSPNTrianglesInit_5b(9, // tri count + 14, 15, 16, // tri0 + 17, 18, 15, // tri1 + 19, 20, 16 // tri2 + ), + gsSPNTriangles_5b(16, 20, 14, // tri0 + 16, 15, 18, // tri1 + 16, 18, 17, // tri2 + 17, 19, 16 // tri3 + ), + gsSPNTriangles_5b(20, 19, 17, // tri0 + 17, 15, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_end_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&end_1_v[192], 3, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&end_1_v[195], 11, 3), -gsSPNTrianglesInit_5b( - 7, // tri count - 2, 0, 3, // tri0 - 2, 5, 4, // tri1 - 1, 7, 6 // tri2 -), -gsSPNTriangles_5b( - 1, 2, 8, // tri0 - 0, 1, 9, // tri1 - 0, 10, 11, // tri2 - 2, 12, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&end_1_v[192], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&end_1_v[195], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 2, 0, 3, // tri0 + 2, 5, 4, // tri1 + 1, 7, 6 // tri2 + ), + gsSPNTriangles_5b(1, 2, 8, // tri0 + 0, 1, 9, // tri1 + 0, 10, 11, // tri2 + 2, 12, 13 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_end_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&end_1_v[241], 5, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&end_1_v[246], 21, 5), -gsSPNTrianglesInit_5b( - 11, // tri count - 2, 5, 6, // tri0 - 0, 2, 7, // tri1 - 4, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 0, 10, 11, // tri0 - 1, 12, 3, // tri1 - 1, 13, 14, // tri2 - 3, 15, 16 // tri3 -), -gsSPNTriangles_5b( - 2, 17, 18, // tri0 - 4, 0, 19, // tri1 - 1, 4, 20, // tri2 - 2, 3, 21 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 22, 23, 24, // tri0 - 24, 25, 22, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&end_1_v[241], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&end_1_v[246], 21, 5), + gsSPNTrianglesInit_5b(11, // tri count + 2, 5, 6, // tri0 + 0, 2, 7, // tri1 + 4, 8, 9 // tri2 + ), + gsSPNTriangles_5b(0, 10, 11, // tri0 + 1, 12, 3, // tri1 + 1, 13, 14, // tri2 + 3, 15, 16 // tri3 + ), + gsSPNTriangles_5b(2, 17, 18, // tri0 + 4, 0, 19, // tri1 + 1, 4, 20, // tri2 + 2, 3, 21 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 22, 23, 24, // tri0 + 24, 25, 22, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx tail1_end_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&end_1_v[267], 9, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 3, 0, 4, // tri1 - 5, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 8, 3, 4, // tri0 - 8, 2, 1, // tri1 - 1, 3, 8, // tri2 - 2, 4, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&end_1_v[267], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 3, 4, // tri0 + 8, 2, 1, // tri1 + 1, 3, 8, // tri2 + 2, 4, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot3_end_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&end_1_v[332], 3, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&end_1_v[335], 13, 3), -gsSPNTrianglesInit_5b( - 6, // tri count - 1, 4, 3, // tri0 - 2, 5, 0, // tri1 - 2, 1, 6 // tri2 -), -gsSPNTriangles_5b( - 2, 8, 7, // tri0 - 0, 9, 1, // tri1 - 0, 11, 10, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 12, 13, 14, // tri0 - 14, 13, 15, // tri1 - 15, 13, 12 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&end_1_v[332], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&end_1_v[335], 13, 3), + gsSPNTrianglesInit_5b(6, // tri count + 1, 4, 3, // tri0 + 2, 5, 0, // tri1 + 2, 1, 6 // tri2 + ), + gsSPNTriangles_5b(2, 8, 7, // tri0 + 0, 9, 1, // tri1 + 0, 11, 10, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 12, 13, 14, // tri0 + 14, 13, 15, // tri1 + 15, 13, 12 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_end_model[] = { -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&end_1_v[348], 4, 0), -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&end_1_v[352], 10, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 1, 4, // tri0 - 1, 0, 5, // tri1 - 1, 7, 6 // tri2 -), -gsSPNTriangles_5b( - 3, 9, 8, // tri0 - 2, 10, 0, // tri1 - 0, 12, 11, // tri2 - 2, 3, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&end_1_v[348], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&end_1_v[352], 10, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 1, 4, // tri0 + 1, 0, 5, // tri1 + 1, 7, 6 // tri2 + ), + gsSPNTriangles_5b(3, 9, 8, // tri0 + 2, 10, 0, // tri1 + 0, 12, 11, // tri2 + 2, 3, 13 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_end_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&end_1_v[362], 5, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&end_1_v[367], 23, 5), -gsSPNTrianglesInit_5b( - 10, // tri count - 2, 0, 5, // tri0 - 3, 2, 6, // tri1 - 4, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 0, 1, 9, // tri0 - 2, 10, 11, // tri1 - 1, 4, 12, // tri2 - 3, 13, 14 // tri3 -), -gsSPNTriangles_5b( - 4, 3, 15, // tri0 - 0, 16, 17, // tri1 - 1, 18, 19, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 7, // tri count - 20, 21, 22, // tri0 - 23, 24, 21, // tri1 - 23, 25, 24 // tri2 -), -gsSPNTriangles_5b( - 24, 22, 21, // tri0 - 26, 25, 23, // tri1 - 24, 25, 27, // tri2 - 27, 22, 24 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&end_1_v[362], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&end_1_v[367], 23, 5), + gsSPNTrianglesInit_5b(10, // tri count + 2, 0, 5, // tri0 + 3, 2, 6, // tri1 + 4, 7, 8 // tri2 + ), + gsSPNTriangles_5b(0, 1, 9, // tri0 + 2, 10, 11, // tri1 + 1, 4, 12, // tri2 + 3, 13, 14 // tri3 + ), + gsSPNTriangles_5b(4, 3, 15, // tri0 + 0, 16, 17, // tri1 + 1, 18, 19, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(7, // tri count + 20, 21, 22, // tri0 + 23, 24, 21, // tri1 + 23, 25, 24 // tri2 + ), + gsSPNTriangles_5b(24, 22, 21, // tri0 + 26, 25, 23, // tri1 + 24, 25, 27, // tri2 + 27, 22, 24 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot3_end_model[] = { -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&end_1_v[276], 6, 0), -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&end_1_v[282], 14, 6), -gsSPNTrianglesInit_5b( - 2, // tri count - 2, 6, 0, // tri0 - 0, 7, 5, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 4, // tri count - 1, 9, 8, // tri0 - 4, 11, 10, // tri1 - 3, 4, 12 // tri2 -), -gsSPNTriangles_5b( - 3, 14, 13, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 15, 16, 17, // tri0 - 17, 16, 18, // tri1 - 18, 16, 19 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&end_1_v[276], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&end_1_v[282], 14, 6), + gsSPNTrianglesInit_5b(2, // tri count + 2, 6, 0, // tri0 + 0, 7, 5, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 1, 9, 8, // tri0 + 4, 11, 10, // tri1 + 3, 4, 12 // tri2 + ), + gsSPNTriangles_5b(3, 14, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 17, 16, 18, // tri1 + 18, 16, 19 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_end_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&end_1_v[296], 4, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&end_1_v[300], 14, 4), -gsSPNTrianglesInit_5b( - 9, // tri count - 0, 5, 4, // tri0 - 2, 1, 6, // tri1 - 1, 0, 7 // tri2 -), -gsSPNTriangles_5b( - 2, 9, 8, // tri0 - 1, 11, 10, // tri1 - 0, 3, 12, // tri2 - 3, 2, 13 // tri3 -), -gsSPNTriangles_5b( - 0, 14, 15, // tri0 - 2, 16, 17, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&end_1_v[296], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&end_1_v[300], 14, 4), + gsSPNTrianglesInit_5b(9, // tri count + 0, 5, 4, // tri0 + 2, 1, 6, // tri1 + 1, 0, 7 // tri2 + ), + gsSPNTriangles_5b(2, 9, 8, // tri0 + 1, 11, 10, // tri1 + 0, 3, 12, // tri2 + 3, 2, 13 // tri3 + ), + gsSPNTriangles_5b(0, 14, 15, // tri0 + 2, 16, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_end_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&end_1_v[314], 5, 0), -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&end_1_v[319], 13, 5), -gsSPNTrianglesInit_5b( - 9, // tri count - 1, 5, 6, // tri0 - 2, 7, 8, // tri1 - 0, 2, 9 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 10, // tri0 - 2, 3, 11, // tri1 - 3, 4, 12, // tri2 - 4, 13, 14 // tri3 -), -gsSPNTriangles_5b( - 4, 1, 15, // tri0 - 3, 16, 17, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&end_1_v[314], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&end_1_v[319], 13, 5), + gsSPNTrianglesInit_5b(9, // tri count + 1, 5, 6, // tri0 + 2, 7, 8, // tri1 + 0, 2, 9 // tri2 + ), + gsSPNTriangles_5b(1, 0, 10, // tri0 + 2, 3, 11, // tri1 + 3, 4, 12, // tri2 + 4, 13, 14 // tri3 + ), + gsSPNTriangles_5b(4, 1, 15, // tri0 + 3, 16, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx base_end_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 24, 15, GX_MIRROR, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 92), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&end_1_v[390], 28, 0), -gsSPNTrianglesInit_5b( - 2, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), -gsDPSetTileSize(0, 0, 0, 60, 60), -gsSPNTrianglesInit_5b( - 2, // tri count - 4, 5, 6, // tri0 - 4, 6, 7, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000180, G_IM_FMT_CI, 32, 40, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 2, // tri count - 8, 9, 10, // tri0 - 8, 10, 11, // tri1 - 0, 0, 0 // tri2 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 28), -gsSPNTrianglesInit_5b( - 4, // tri count - 12, 13, 14, // tri0 - 12, 14, 15, // tri1 - 16, 17, 18 // tri2 -), -gsSPNTriangles_5b( - 16, 18, 19, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 4, // tri count - 20, 21, 22, // tri0 - 20, 22, 23, // tri1 - 24, 25, 26 // tri2 -), -gsSPNTriangles_5b( - 24, 26, 27, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&end_1_v[418], 21, 0), -gsSPNTrianglesInit_5b( - 2, // tri count - 0, 1, 2, // tri0 - 3, 1, 0, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 17, // tri count - 4, 5, 6, // tri0 - 6, 7, 8, // tri1 - 6, 8, 4 // tri2 -), -gsSPNTriangles_5b( - 9, 10, 11, // tri0 - 9, 11, 12, // tri1 - 10, 8, 7, // tri2 - 10, 7, 11 // tri3 -), -gsSPNTriangles_5b( - 13, 5, 14, // tri0 - 13, 14, 15, // tri1 - 16, 17, 18, // tri2 - 18, 19, 16 // tri3 -), -gsSPNTriangles_5b( - 9, 12, 16, // tri0 - 9, 16, 19, // tri1 - 17, 20, 18, // tri2 - 15, 20, 17 // tri3 -), -gsSPNTriangles_5b( - 15, 17, 13, // tri0 - 4, 14, 5, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&end_1_v[439], 14, 0), -gsSPNTrianglesInit_5b( - 15, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 0, 6, 1 // tri2 -), -gsSPNTriangles_5b( - 7, 8, 9, // tri0 - 9, 10, 7, // tri1 - 11, 2, 5, // tri2 - 5, 8, 3 // tri3 -), -gsSPNTriangles_5b( - 2, 11, 0, // tri0 - 7, 3, 8, // tri1 - 4, 11, 5, // tri2 - 6, 10, 9 // tri3 -), -gsSPNTriangles_5b( - 6, 12, 13, // tri0 - 6, 13, 10, // tri1 - 9, 1, 6, // tri2 - 12, 4, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 24, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 92), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&end_1_v[390], 28, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 60, 60), + gsSPNTrianglesInit_5b(2, // tri count + 4, 5, 6, // tri0 + 4, 6, 7, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x180, G_IM_FMT_CI, 32, 40, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 8, 9, 10, // tri0 + 8, 10, 11, // tri1 + 0, 0, 0 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 28), + gsSPNTrianglesInit_5b(4, // tri count + 12, 13, 14, // tri0 + 12, 14, 15, // tri1 + 16, 17, 18 // tri2 + ), + gsSPNTriangles_5b(16, 18, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 20, 21, 22, // tri0 + 20, 22, 23, // tri1 + 24, 25, 26 // tri2 + ), + gsSPNTriangles_5b(24, 26, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&end_1_v[418], 21, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(17, // tri count + 4, 5, 6, // tri0 + 6, 7, 8, // tri1 + 6, 8, 4 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 9, 11, 12, // tri1 + 10, 8, 7, // tri2 + 10, 7, 11 // tri3 + ), + gsSPNTriangles_5b(13, 5, 14, // tri0 + 13, 14, 15, // tri1 + 16, 17, 18, // tri2 + 18, 19, 16 // tri3 + ), + gsSPNTriangles_5b(9, 12, 16, // tri0 + 9, 16, 19, // tri1 + 17, 20, 18, // tri2 + 15, 20, 17 // tri3 + ), + gsSPNTriangles_5b(15, 17, 13, // tri0 + 4, 14, 5, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&end_1_v[439], 14, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 1 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 9, 10, 7, // tri1 + 11, 2, 5, // tri2 + 5, 8, 3 // tri3 + ), + gsSPNTriangles_5b(2, 11, 0, // tri0 + 7, 3, 8, // tri1 + 4, 11, 5, // tri2 + 6, 10, 9 // tri3 + ), + gsSPNTriangles_5b(6, 12, 13, // tri0 + 6, 13, 10, // tri1 + 9, 1, 6, // tri2 + 12, 4, 13 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_end_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -796,4 +705,4 @@ static cKF_Joint_R_c cKF_je_r_end_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_end_1 = { 26, 14, cKF_je_r_end_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_end_1 = { 26, 14, cKF_je_r_end_1_tbl }; diff --git a/src/data/npc/model/mdl/flg_1.c b/src/data/npc/model/mdl/flg_1.c index dc3e6965..30df65c6 100644 --- a/src/data/npc/model/mdl/flg_1.c +++ b/src/data/npc/model/mdl/flg_1.c @@ -6,551 +6,488 @@ static Vtx flg_1_v[] = { }; static Gfx head_flg_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&flg_1_v[0], 18, 0), -gsSPNTrianglesInit_5b( - 19, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 5, 4, 6 // tri2 -), -gsSPNTriangles_5b( - 3, 7, 8, // tri0 - 6, 9, 5, // tri1 - 5, 7, 3, // tri2 - 10, 11, 8 // tri3 -), -gsSPNTriangles_5b( - 8, 7, 12, // tri0 - 13, 9, 6, // tri1 - 5, 12, 7, // tri2 - 2, 5, 9 // tri3 -), -gsSPNTriangles_5b( - 13, 2, 9, // tri0 - 2, 12, 5, // tri1 - 12, 14, 10, // tri2 - 10, 8, 12 // tri3 -), -gsSPNTriangles_5b( - 13, 15, 0, // tri0 - 0, 2, 13, // tri1 - 6, 16, 13, // tri2 - 8, 17, 3 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&flg_1_v[18], 22, 0), -gsSPNTrianglesInit_5b( - 18, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 3, 6, 4 // tri2 -), -gsSPNTriangles_5b( - 2, 7, 8, // tri0 - 9, 4, 10, // tri1 - 11, 1, 0, // tri2 - 11, 12, 1 // tri3 -), -gsSPNTriangles_5b( - 4, 6, 10, // tri0 - 13, 4, 9, // tri1 - 5, 4, 13, // tri2 - 2, 1, 7 // tri3 -), -gsSPNTriangles_5b( - 14, 0, 2, // tri0 - 13, 9, 14, // tri1 - 14, 2, 13, // tri2 - 8, 5, 13 // tri3 -), -gsSPNTriangles_5b( - 8, 13, 2, // tri0 - 1, 12, 15, // tri1 - 1, 15, 7, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 4, // tri count - 16, 17, 18, // tri0 - 16, 19, 17, // tri1 - 17, 20, 18 // tri2 -), -gsSPNTriangles_5b( - 19, 21, 17, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 32, 40, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&flg_1_v[40], 32, 0), -gsSPNTrianglesInit_5b( - 45, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 8, 2, 1, // tri0 - 8, 7, 2, // tri1 - 9, 10, 11, // tri2 - 6, 12, 13 // tri3 -), -gsSPNTriangles_5b( - 14, 7, 6, // tri0 - 15, 16, 10, // tri1 - 16, 17, 10, // tri2 - 17, 11, 10 // tri3 -), -gsSPNTriangles_5b( - 18, 19, 20, // tri0 - 5, 21, 3, // tri1 - 11, 22, 9, // tri2 - 23, 24, 25 // tri3 -), -gsSPNTriangles_5b( - 24, 2, 25, // tri0 - 21, 24, 23, // tri1 - 26, 25, 27, // tri2 - 17, 28, 29 // tri3 -), -gsSPNTriangles_5b( - 5, 4, 30, // tri0 - 29, 22, 11, // tri1 - 11, 17, 29, // tri2 - 30, 19, 18 // tri3 -), -gsSPNTriangles_5b( - 18, 5, 30, // tri0 - 21, 18, 20, // tri1 - 21, 5, 18, // tri2 - 14, 13, 27 // tri3 -), -gsSPNTriangles_5b( - 2, 7, 14, // tri0 - 0, 24, 21, // tri1 - 10, 26, 15, // tri2 - 23, 26, 10 // tri3 -), -gsSPNTriangles_5b( - 10, 21, 23, // tri0 - 25, 26, 23, // tri1 - 10, 9, 3, // tri2 - 10, 3, 21 // tri3 -), -gsSPNTriangles_5b( - 21, 20, 0, // tri0 - 2, 24, 0, // tri1 - 27, 13, 12, // tri2 - 27, 12, 31 // tri3 -), -gsSPNTriangles_5b( - 15, 27, 31, // tri0 - 16, 28, 17, // tri1 - 26, 27, 15, // tri2 - 6, 13, 14 // tri3 -), -gsSPNTriangles_5b( - 27, 25, 14, // tri0 - 14, 25, 2, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&flg_1_v[0], 18, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 4, 6 // tri2 + ), + gsSPNTriangles_5b(3, 7, 8, // tri0 + 6, 9, 5, // tri1 + 5, 7, 3, // tri2 + 10, 11, 8 // tri3 + ), + gsSPNTriangles_5b(8, 7, 12, // tri0 + 13, 9, 6, // tri1 + 5, 12, 7, // tri2 + 2, 5, 9 // tri3 + ), + gsSPNTriangles_5b(13, 2, 9, // tri0 + 2, 12, 5, // tri1 + 12, 14, 10, // tri2 + 10, 8, 12 // tri3 + ), + gsSPNTriangles_5b(13, 15, 0, // tri0 + 0, 2, 13, // tri1 + 6, 16, 13, // tri2 + 8, 17, 3 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&flg_1_v[18], 22, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(2, 7, 8, // tri0 + 9, 4, 10, // tri1 + 11, 1, 0, // tri2 + 11, 12, 1 // tri3 + ), + gsSPNTriangles_5b(4, 6, 10, // tri0 + 13, 4, 9, // tri1 + 5, 4, 13, // tri2 + 2, 1, 7 // tri3 + ), + gsSPNTriangles_5b(14, 0, 2, // tri0 + 13, 9, 14, // tri1 + 14, 2, 13, // tri2 + 8, 5, 13 // tri3 + ), + gsSPNTriangles_5b(8, 13, 2, // tri0 + 1, 12, 15, // tri1 + 1, 15, 7, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 16, 17, 18, // tri0 + 16, 19, 17, // tri1 + 17, 20, 18 // tri2 + ), + gsSPNTriangles_5b(19, 21, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 32, 40, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&flg_1_v[40], 32, 0), + gsSPNTrianglesInit_5b(45, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(8, 2, 1, // tri0 + 8, 7, 2, // tri1 + 9, 10, 11, // tri2 + 6, 12, 13 // tri3 + ), + gsSPNTriangles_5b(14, 7, 6, // tri0 + 15, 16, 10, // tri1 + 16, 17, 10, // tri2 + 17, 11, 10 // tri3 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 5, 21, 3, // tri1 + 11, 22, 9, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b(24, 2, 25, // tri0 + 21, 24, 23, // tri1 + 26, 25, 27, // tri2 + 17, 28, 29 // tri3 + ), + gsSPNTriangles_5b(5, 4, 30, // tri0 + 29, 22, 11, // tri1 + 11, 17, 29, // tri2 + 30, 19, 18 // tri3 + ), + gsSPNTriangles_5b(18, 5, 30, // tri0 + 21, 18, 20, // tri1 + 21, 5, 18, // tri2 + 14, 13, 27 // tri3 + ), + gsSPNTriangles_5b(2, 7, 14, // tri0 + 0, 24, 21, // tri1 + 10, 26, 15, // tri2 + 23, 26, 10 // tri3 + ), + gsSPNTriangles_5b(10, 21, 23, // tri0 + 25, 26, 23, // tri1 + 10, 9, 3, // tri2 + 10, 3, 21 // tri3 + ), + gsSPNTriangles_5b(21, 20, 0, // tri0 + 2, 24, 0, // tri1 + 27, 13, 12, // tri2 + 27, 12, 31 // tri3 + ), + gsSPNTriangles_5b(15, 27, 31, // tri0 + 16, 28, 17, // tri1 + 26, 27, 15, // tri2 + 6, 13, 14 // tri3 + ), + gsSPNTriangles_5b(27, 25, 14, // tri0 + 14, 25, 2, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_flg_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&flg_1_v[108], 5, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&flg_1_v[113], 16, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 5, 3, // tri0 - 1, 4, 6, // tri1 - 1, 8, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 10, 9, // tri0 - 0, 1, 11, // tri1 - 2, 12, 13, // tri2 - 2, 0, 14 // tri3 -), -gsSPNTriangles_5b( - 2, 15, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 20, 18, 17, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&flg_1_v[108], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&flg_1_v[113], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 2, 5, 3, // tri0 + 1, 4, 6, // tri1 + 1, 8, 7 // tri2 + ), + gsSPNTriangles_5b(1, 10, 9, // tri0 + 0, 1, 11, // tri1 + 2, 12, 13, // tri2 + 2, 0, 14 // tri3 + ), + gsSPNTriangles_5b(2, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 18, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_flg_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&flg_1_v[129], 4, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&flg_1_v[133], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 2, 4, // tri0 - 0, 5, 6, // tri1 - 1, 8, 7 // tri2 -), -gsSPNTriangles_5b( - 2, 9, 10, // tri0 - 3, 1, 11, // tri1 - 1, 0, 12, // tri2 - 1, 13, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&flg_1_v[129], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&flg_1_v[133], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 2, 4, // tri0 + 0, 5, 6, // tri1 + 1, 8, 7 // tri2 + ), + gsSPNTriangles_5b(2, 9, 10, // tri0 + 3, 1, 11, // tri1 + 1, 0, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_flg_model[] = { -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&flg_1_v[72], 5, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&flg_1_v[77], 16, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 5, 6, // tri0 - 4, 7, 8, // tri1 - 4, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 11, // tri0 - 4, 2, 12, // tri1 - 0, 13, 14, // tri2 - 0, 3, 15 // tri3 -), -gsSPNTriangles_5b( - 3, 4, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 18, 17, 20, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&flg_1_v[72], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&flg_1_v[77], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 + ), + gsSPNTriangles_5b(3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_flg_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&flg_1_v[93], 4, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&flg_1_v[97], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 0, 6, 7, // tri1 - 0, 2, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 3, 9, // tri0 - 2, 11, 10, // tri1 - 3, 13, 12, // tri2 - 3, 1, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&flg_1_v[93], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&flg_1_v[97], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 + ), + gsSPNTriangles_5b(2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_flg_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&flg_1_v[144], 7, 0), -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&flg_1_v[151], 20, 7), -gsSPNTrianglesInit_5b( - 13, // tri count - 3, 1, 7, // tri0 - 6, 8, 9, // tri1 - 3, 10, 11 // tri2 -), -gsSPNTriangles_5b( - 2, 12, 0, // tri0 - 2, 13, 14, // tri1 - 1, 16, 15, // tri2 - 0, 17, 18 // tri3 -), -gsSPNTriangles_5b( - 0, 19, 20, // tri0 - 1, 21, 22, // tri1 - 6, 3, 23, // tri2 - 2, 6, 24 // tri3 -), -gsSPNTriangles_5b( - 4, 0, 25, // tri0 - 5, 26, 1, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&flg_1_v[171], 9, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 0, 3, 4, // tri1 - 0, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 4, 3, 7, // tri0 - 2, 5, 0, // tri1 - 1, 8, 2, // tri2 - 6, 3, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&flg_1_v[144], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&flg_1_v[151], 20, 7), + gsSPNTrianglesInit_5b(13, // tri count + 3, 1, 7, // tri0 + 6, 8, 9, // tri1 + 3, 10, 11 // tri2 + ), + gsSPNTriangles_5b(2, 12, 0, // tri0 + 2, 13, 14, // tri1 + 1, 16, 15, // tri2 + 0, 17, 18 // tri3 + ), + gsSPNTriangles_5b(0, 19, 20, // tri0 + 1, 21, 22, // tri1 + 6, 3, 23, // tri2 + 2, 6, 24 // tri3 + ), + gsSPNTriangles_5b(4, 0, 25, // tri0 + 5, 26, 1, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&flg_1_v[171], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 0, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 3, 7, // tri0 + 2, 5, 0, // tri1 + 1, 8, 2, // tri2 + 6, 3, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_flg_model[] = { -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&flg_1_v[230], 5, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&flg_1_v[235], 17, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 4, 0, 5, // tri0 - 0, 7, 6, // tri1 - 3, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 1, 2, 10, // tri0 - 2, 3, 11, // tri1 - 3, 4, 12, // tri2 - 2, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 15, 16, 17, // tri0 - 18, 19, 20, // tri1 - 18, 21, 19 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&flg_1_v[230], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&flg_1_v[235], 17, 5), + gsSPNTrianglesInit_5b(7, // tri count + 4, 0, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 + ), + gsSPNTriangles_5b(1, 2, 10, // tri0 + 2, 3, 11, // tri1 + 3, 4, 12, // tri2 + 2, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_flg_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&flg_1_v[252], 4, 0), -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&flg_1_v[256], 22, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 3, 4, // tri0 - 0, 5, 1, // tri1 - 1, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 3, 2, 8, // tri0 - 2, 9, 10, // tri1 - 2, 1, 11, // tri2 - 0, 13, 12 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 14, 15, 16, // tri0 - 14, 16, 17, // tri1 - 17, 18, 14 // tri2 -), -gsSPNTriangles_5b( - 19, 20, 21, // tri0 - 21, 20, 18, // tri1 - 21, 22, 19, // tri2 - 17, 21, 18 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsSPNTrianglesInit_5b( - 1, // tri count - 23, 24, 25, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&flg_1_v[252], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&flg_1_v[256], 22, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 4, // tri0 + 0, 5, 1, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b(3, 2, 8, // tri0 + 2, 9, 10, // tri1 + 2, 1, 11, // tri2 + 0, 13, 12 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 14, 15, 16, // tri0 + 14, 16, 17, // tri1 + 17, 18, 14 // tri2 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 21, 20, 18, // tri1 + 21, 22, 19, // tri2 + 17, 21, 18 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsSPNTrianglesInit_5b(1, // tri count + 23, 24, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_flg_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&flg_1_v[180], 5, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&flg_1_v[185], 17, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 4, 5, // tri0 - 0, 7, 6, // tri1 - 3, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 1, 10, // tri0 - 3, 2, 11, // tri1 - 4, 3, 12, // tri2 - 2, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 15, 16, 17, // tri0 - 18, 19, 20, // tri1 - 19, 21, 20 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&flg_1_v[180], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&flg_1_v[185], 17, 5), + gsSPNTrianglesInit_5b(7, // tri count + 0, 4, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 + ), + gsSPNTriangles_5b(2, 1, 10, // tri0 + 3, 2, 11, // tri1 + 4, 3, 12, // tri2 + 2, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_flg_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&flg_1_v[202], 6, 0), -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&flg_1_v[208], 22, 6), -gsSPNTrianglesInit_5b( - 7, // tri count - 4, 0, 6, // tri0 - 1, 7, 0, // tri1 - 1, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 2, 5, 10, // tri0 - 2, 11, 12, // tri1 - 1, 3, 13, // tri2 - 0, 15, 14 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 16, 17, 18, // tri0 - 19, 16, 18, // tri1 - 18, 20, 19 // tri2 -), -gsSPNTriangles_5b( - 21, 22, 23, // tri0 - 20, 22, 21, // tri1 - 23, 24, 21, // tri2 - 20, 21, 19 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsSPNTrianglesInit_5b( - 1, // tri count - 25, 26, 27, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&flg_1_v[202], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&flg_1_v[208], 22, 6), + gsSPNTrianglesInit_5b(7, // tri count + 4, 0, 6, // tri0 + 1, 7, 0, // tri1 + 1, 8, 9 // tri2 + ), + gsSPNTriangles_5b(2, 5, 10, // tri0 + 2, 11, 12, // tri1 + 1, 3, 13, // tri2 + 0, 15, 14 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 16, 17, 18, // tri0 + 19, 16, 18, // tri1 + 18, 20, 19 // tri2 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 20, 22, 21, // tri1 + 23, 24, 21, // tri2 + 20, 21, 19 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsSPNTrianglesInit_5b(1, // tri count + 25, 26, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx base_flg_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&flg_1_v[278], 14, 0), -gsSPNTrianglesInit_5b( - 12, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 9, 5, 4, // tri0 - 10, 4, 0, // tri1 - 10, 9, 4, // tri2 - 7, 11, 12 // tri3 -), -gsSPNTriangles_5b( - 8, 7, 13, // tri0 - 2, 10, 0, // tri1 - 2, 1, 6, // tri2 - 6, 8, 2 // tri3 -), -gsSPNTriangles_5b( - 7, 12, 13, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&flg_1_v[278], 14, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 5, 4, // tri0 + 10, 4, 0, // tri1 + 10, 9, 4, // tri2 + 7, 11, 12 // tri3 + ), + gsSPNTriangles_5b(8, 7, 13, // tri0 + 2, 10, 0, // tri1 + 2, 1, 6, // tri2 + 6, 8, 2 // tri3 + ), + gsSPNTriangles_5b(7, 12, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_flg_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -582,4 +519,4 @@ static cKF_Joint_R_c cKF_je_r_flg_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_flg_1 = { 26, 11, cKF_je_r_flg_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_flg_1 = { 26, 11, cKF_je_r_flg_1_tbl }; diff --git a/src/data/npc/model/mdl/fob_1.c b/src/data/npc/model/mdl/fob_1.c index 10a2f946..6621c847 100644 --- a/src/data/npc/model/mdl/fob_1.c +++ b/src/data/npc/model/mdl/fob_1.c @@ -6,785 +6,691 @@ static Vtx fob_1_v[] = { }; static Gfx head_fob_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), -gsSPVertex(&fob_1_v[22], 32, 0), -gsSPNTrianglesInit_5b( - 37, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 7, 6, 5, // tri0 - 7, 5, 9, // tri1 - 10, 2, 1, // tri2 - 1, 11, 12 // tri3 -), -gsSPNTriangles_5b( - 0, 13, 1, // tri0 - 14, 5, 4, // tri1 - 5, 6, 3, // tri2 - 15, 4, 3 // tri3 -), -gsSPNTriangles_5b( - 16, 4, 15, // tri0 - 8, 17, 18, // tri1 - 11, 19, 20, // tri2 - 21, 22, 23 // tri3 -), -gsSPNTriangles_5b( - 17, 8, 7, // tri0 - 24, 12, 20, // tri1 - 25, 3, 26, // tri2 - 23, 22, 2 // tri3 -), -gsSPNTriangles_5b( - 13, 19, 11, // tri0 - 1, 13, 11, // tri1 - 18, 24, 20, // tri2 - 27, 28, 8 // tri3 -), -gsSPNTriangles_5b( - 1, 12, 10, // tri0 - 5, 14, 9, // tri1 - 26, 28, 27, // tri2 - 28, 3, 6 // tri3 -), -gsSPNTriangles_5b( - 17, 7, 29, // tri0 - 20, 19, 27, // tri1 - 27, 19, 26, // tri2 - 15, 25, 13 // tri3 -), -gsSPNTriangles_5b( - 2, 10, 23, // tri0 - 23, 9, 14, // tri1 - 30, 23, 10, // tri2 - 9, 23, 30 // tri3 -), -gsSPNTriangles_5b( - 3, 25, 15, // tri0 - 12, 24, 31, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&fob_1_v[54], 29, 0), -gsSPNTrianglesInit_5b( - 13, // tri count - 0, 1, 2, // tri0 - 2, 3, 0, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 5, 7, 6, // tri0 - 4, 8, 9, // tri1 - 7, 10, 11, // tri2 - 12, 13, 14 // tri3 -), -gsSPNTriangles_5b( - 15, 14, 1, // tri0 - 15, 1, 0, // tri1 - 16, 3, 2, // tri2 - 17, 8, 18 // tri3 -), -gsSPNTriangles_5b( - 18, 19, 16, // tri0 - 16, 20, 18, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 21, 22, 23, // tri0 - 24, 22, 21, // tri1 - 23, 25, 21 // tri2 -), -gsSPNTriangles_5b( - 22, 24, 26, // tri0 - 25, 27, 28, // tri1 - 25, 28, 21, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&fob_1_v[83], 30, 0), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 1, 2, // tri0 - 3, 2, 1, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 7, 8, 5, // tri0 - 7, 5, 4, // tri1 - 9, 1, 0, // tri2 - 6, 10, 4 // tri3 -), -gsSPNTriangles_5b( - 0, 11, 9, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 2, // tri count - 12, 13, 14, // tri0 - 14, 15, 12, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 2, // tri count - 16, 17, 18, // tri0 - 18, 19, 16, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 60), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 8, // tri count - 20, 21, 22, // tri0 - 23, 24, 25, // tri1 - 26, 20, 27 // tri2 -), -gsSPNTriangles_5b( - 28, 23, 29, // tri0 - 29, 26, 27, // tri1 - 29, 27, 28, // tri2 - 23, 25, 29 // tri3 -), -gsSPNTriangles_5b( - 26, 21, 20, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&fob_1_v[113], 19, 0), -gsSPNTrianglesInit_5b( - 19, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 7, 8, 9, // tri0 - 7, 9, 10, // tri1 - 4, 6, 11, // tri2 - 12, 7, 10 // tri3 -), -gsSPNTriangles_5b( - 5, 13, 14, // tri0 - 5, 14, 6, // tri1 - 15, 16, 17, // tri2 - 1, 9, 8 // tri3 -), -gsSPNTriangles_5b( - 10, 16, 15, // tri0 - 10, 15, 12, // tri1 - 17, 18, 15, // tri2 - 11, 18, 17 // tri3 -), -gsSPNTriangles_5b( - 11, 17, 4, // tri0 - 8, 2, 1, // tri1 - 3, 14, 13, // tri2 - 3, 13, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&fob_1_v[22], 32, 0), + gsSPNTrianglesInit_5b(37, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(7, 6, 5, // tri0 + 7, 5, 9, // tri1 + 10, 2, 1, // tri2 + 1, 11, 12 // tri3 + ), + gsSPNTriangles_5b(0, 13, 1, // tri0 + 14, 5, 4, // tri1 + 5, 6, 3, // tri2 + 15, 4, 3 // tri3 + ), + gsSPNTriangles_5b(16, 4, 15, // tri0 + 8, 17, 18, // tri1 + 11, 19, 20, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b(17, 8, 7, // tri0 + 24, 12, 20, // tri1 + 25, 3, 26, // tri2 + 23, 22, 2 // tri3 + ), + gsSPNTriangles_5b(13, 19, 11, // tri0 + 1, 13, 11, // tri1 + 18, 24, 20, // tri2 + 27, 28, 8 // tri3 + ), + gsSPNTriangles_5b(1, 12, 10, // tri0 + 5, 14, 9, // tri1 + 26, 28, 27, // tri2 + 28, 3, 6 // tri3 + ), + gsSPNTriangles_5b(17, 7, 29, // tri0 + 20, 19, 27, // tri1 + 27, 19, 26, // tri2 + 15, 25, 13 // tri3 + ), + gsSPNTriangles_5b(2, 10, 23, // tri0 + 23, 9, 14, // tri1 + 30, 23, 10, // tri2 + 9, 23, 30 // tri3 + ), + gsSPNTriangles_5b(3, 25, 15, // tri0 + 12, 24, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&fob_1_v[54], 29, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 4, 8, 9, // tri1 + 7, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 14, 1, // tri0 + 15, 1, 0, // tri1 + 16, 3, 2, // tri2 + 17, 8, 18 // tri3 + ), + gsSPNTriangles_5b(18, 19, 16, // tri0 + 16, 20, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 21, 22, 23, // tri0 + 24, 22, 21, // tri1 + 23, 25, 21 // tri2 + ), + gsSPNTriangles_5b(22, 24, 26, // tri0 + 25, 27, 28, // tri1 + 25, 28, 21, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&fob_1_v[83], 30, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 5, // tri0 + 7, 5, 4, // tri1 + 9, 1, 0, // tri2 + 6, 10, 4 // tri3 + ), + gsSPNTriangles_5b(0, 11, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 12, 13, 14, // tri0 + 14, 15, 12, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 18, 19, 16, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(8, // tri count + 20, 21, 22, // tri0 + 23, 24, 25, // tri1 + 26, 20, 27 // tri2 + ), + gsSPNTriangles_5b(28, 23, 29, // tri0 + 29, 26, 27, // tri1 + 29, 27, 28, // tri2 + 23, 25, 29 // tri3 + ), + gsSPNTriangles_5b(26, 21, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&fob_1_v[113], 19, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 7, 9, 10, // tri1 + 4, 6, 11, // tri2 + 12, 7, 10 // tri3 + ), + gsSPNTriangles_5b(5, 13, 14, // tri0 + 5, 14, 6, // tri1 + 15, 16, 17, // tri2 + 1, 9, 8 // tri3 + ), + gsSPNTriangles_5b(10, 16, 15, // tri0 + 10, 15, 12, // tri1 + 17, 18, 15, // tri2 + 11, 18, 17 // tri3 + ), + gsSPNTriangles_5b(11, 17, 4, // tri0 + 8, 2, 1, // tri1 + 3, 14, 13, // tri2 + 3, 13, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx mouth_fob_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), -gsSPVertex(&fob_1_v[0], 7, 0), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsSPVertex(&fob_1_v[7], 15, 7), -gsSPNTrianglesInit_5b( - 9, // tri count - 6, 7, 8, // tri0 - 6, 4, 9, // tri1 - 1, 10, 11 // tri2 -), -gsSPNTriangles_5b( - 2, 0, 12, // tri0 - 4, 1, 13, // tri1 - 0, 5, 14, // tri2 - 5, 6, 15 // tri3 -), -gsSPNTriangles_5b( - 0, 16, 17, // tri0 - 1, 3, 18, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 19, 20, 21, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&fob_1_v[0], 7, 0), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&fob_1_v[7], 15, 7), + gsSPNTrianglesInit_5b(9, // tri count + 6, 7, 8, // tri0 + 6, 4, 9, // tri1 + 1, 10, 11 // tri2 + ), + gsSPNTriangles_5b(2, 0, 12, // tri0 + 4, 1, 13, // tri1 + 0, 5, 14, // tri2 + 5, 6, 15 // tri3 + ), + gsSPNTriangles_5b(0, 16, 17, // tri0 + 1, 3, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_fob_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), -gsSPVertex(&fob_1_v[166], 4, 0), -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&fob_1_v[170], 16, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 4, 5, // tri0 - 1, 6, 7, // tri1 - 2, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 1, 10, 11, // tri0 - 0, 2, 12, // tri1 - 0, 13, 1, // tri2 - 2, 3, 14 // tri3 -), -gsSPNTriangles_5b( - 3, 1, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 16, 17, 18, // tri0 - 19, 18, 17, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&fob_1_v[166], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&fob_1_v[170], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 1, 6, 7, // tri1 + 2, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 10, 11, // tri0 + 0, 2, 12, // tri1 + 0, 13, 1, // tri2 + 2, 3, 14 // tri3 + ), + gsSPNTriangles_5b(3, 1, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 19, 18, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_fob_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), -gsSPVertex(&fob_1_v[186], 3, 0), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&fob_1_v[189], 11, 3), -gsSPNTrianglesInit_5b( - 7, // tri count - 1, 3, 2, // tri0 - 0, 5, 4, // tri1 - 1, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 2, 8, 9, // tri0 - 0, 10, 11, // tri1 - 1, 0, 12, // tri2 - 0, 2, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&fob_1_v[186], 3, 0), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&fob_1_v[189], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 1, 3, 2, // tri0 + 0, 5, 4, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b(2, 8, 9, // tri0 + 0, 10, 11, // tri1 + 1, 0, 12, // tri2 + 0, 2, 13 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_fob_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), -gsSPVertex(&fob_1_v[132], 4, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&fob_1_v[136], 16, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 4, 5, // tri0 - 1, 6, 7, // tri1 - 2, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 1, 10, 11, // tri0 - 2, 0, 12, // tri1 - 1, 13, 0, // tri2 - 3, 2, 14 // tri3 -), -gsSPNTriangles_5b( - 1, 3, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 16, 17, 18, // tri0 - 17, 16, 19, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&fob_1_v[132], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&fob_1_v[136], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 1, 6, 7, // tri1 + 2, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 10, 11, // tri0 + 2, 0, 12, // tri1 + 1, 13, 0, // tri2 + 3, 2, 14 // tri3 + ), + gsSPNTriangles_5b(1, 3, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_fob_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), -gsSPVertex(&fob_1_v[152], 3, 0), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&fob_1_v[155], 11, 3), -gsSPNTrianglesInit_5b( - 7, // tri count - 2, 3, 1, // tri0 - 0, 5, 4, // tri1 - 1, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 2, 8, 9, // tri0 - 0, 10, 11, // tri1 - 0, 1, 12, // tri2 - 2, 0, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&fob_1_v[152], 3, 0), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&fob_1_v[155], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 2, 3, 1, // tri0 + 0, 5, 4, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b(2, 8, 9, // tri0 + 0, 10, 11, // tri1 + 0, 1, 12, // tri2 + 2, 0, 13 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_fob_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000700, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), -gsSPVertex(&fob_1_v[200], 11, 0), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000580, G_IM_FMT_CI, 48, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&fob_1_v[211], 13, 11), -gsSPNTrianglesInit_5b( - 9, // tri count - 10, 4, 11, // tri0 - 4, 12, 13, // tri1 - 7, 9, 14 // tri2 -), -gsSPNTriangles_5b( - 2, 7, 15, // tri0 - 2, 16, 17, // tri1 - 8, 10, 18, // tri2 - 9, 8, 19 // tri3 -), -gsSPNTriangles_5b( - 8, 20, 21, // tri0 - 9, 22, 23, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&fob_1_v[224], 20, 11), -gsSPNTrianglesInit_5b( - 8, // tri count - 6, 11, 12, // tri0 - 1, 13, 14, // tri1 - 0, 15, 16 // tri2 -), -gsSPNTriangles_5b( - 6, 17, 18, // tri0 - 5, 1, 19, // tri1 - 0, 3, 20, // tri2 - 1, 6, 21 // tri3 -), -gsSPNTriangles_5b( - 6, 0, 22, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 23, 24, 25, // tri0 - 26, 27, 25, // tri1 - 23, 28, 24 // tri2 -), -gsSPNTriangles_5b( - 29, 30, 26, // tri0 - 25, 27, 23, // tri1 - 25, 29, 26, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&fob_1_v[244], 19, 0), -gsSPNTrianglesInit_5b( - 10, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 9, 10, 7, // tri0 - 10, 11, 7, // tri1 - 5, 1, 0, // tri2 - 7, 12, 9 // tri3 -), -gsSPNTriangles_5b( - 3, 13, 4, // tri0 - 0, 14, 5, // tri1 - 5, 14, 3, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 2, // tri count - 15, 16, 17, // tri0 - 16, 15, 18, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x700, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&fob_1_v[200], 11, 0), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x580, G_IM_FMT_CI, 48, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&fob_1_v[211], 13, 11), + gsSPNTrianglesInit_5b(9, // tri count + 10, 4, 11, // tri0 + 4, 12, 13, // tri1 + 7, 9, 14 // tri2 + ), + gsSPNTriangles_5b(2, 7, 15, // tri0 + 2, 16, 17, // tri1 + 8, 10, 18, // tri2 + 9, 8, 19 // tri3 + ), + gsSPNTriangles_5b(8, 20, 21, // tri0 + 9, 22, 23, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&fob_1_v[224], 20, 11), + gsSPNTrianglesInit_5b(8, // tri count + 6, 11, 12, // tri0 + 1, 13, 14, // tri1 + 0, 15, 16 // tri2 + ), + gsSPNTriangles_5b(6, 17, 18, // tri0 + 5, 1, 19, // tri1 + 0, 3, 20, // tri2 + 1, 6, 21 // tri3 + ), + gsSPNTriangles_5b(6, 0, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 23, 24, 25, // tri0 + 26, 27, 25, // tri1 + 23, 28, 24 // tri2 + ), + gsSPNTriangles_5b(29, 30, 26, // tri0 + 25, 27, 23, // tri1 + 25, 29, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&fob_1_v[244], 19, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 7, // tri0 + 10, 11, 7, // tri1 + 5, 1, 0, // tri2 + 7, 12, 9 // tri3 + ), + gsSPNTriangles_5b(3, 13, 4, // tri0 + 0, 14, 5, // tri1 + 5, 14, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 15, 16, 17, // tri0 + 16, 15, 18, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx tail1_fob_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000700, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), -gsSPVertex(&fob_1_v[300], 3, 0), -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&fob_1_v[303], 11, 3), -gsSPNTrianglesInit_5b( - 7, // tri count - 1, 3, 4, // tri0 - 1, 0, 5, // tri1 - 2, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 8, 9, // tri0 - 2, 1, 10, // tri1 - 0, 11, 12, // tri2 - 0, 2, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x700, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&fob_1_v[300], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&fob_1_v[303], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 1, 3, 4, // tri0 + 1, 0, 5, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 2, 1, 10, // tri1 + 0, 11, 12, // tri2 + 0, 2, 13 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail2_fob_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), -gsSPVertex(&fob_1_v[263], 4, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&fob_1_v[267], 20, 4), -gsSPNTrianglesInit_5b( - 12, // tri count - 2, 0, 4, // tri0 - 2, 5, 6, // tri1 - 1, 2, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 8, 9, // tri0 - 0, 3, 10, // tri1 - 3, 11, 12, // tri2 - 3, 1, 13 // tri3 -), -gsSPNTriangles_5b( - 1, 14, 15, // tri0 - 0, 16, 17, // tri1 - 0, 18, 19, // tri2 - 2, 20, 21 // tri3 -), -gsSPNTriangles_5b( - 3, 22, 23, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&fob_1_v[287], 13, 0), -gsSPNTrianglesInit_5b( - 16, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 0, 7 // tri2 -), -gsSPNTriangles_5b( - 7, 8, 9, // tri0 - 6, 1, 0, // tri1 - 8, 10, 9, // tri2 - 5, 4, 6 // tri3 -), -gsSPNTriangles_5b( - 11, 12, 3, // tri0 - 7, 11, 3, // tri1 - 7, 5, 6, // tri2 - 3, 5, 7 // tri3 -), -gsSPNTriangles_5b( - 2, 10, 8, // tri0 - 7, 0, 2, // tri1 - 9, 12, 11, // tri2 - 2, 8, 7 // tri3 -), -gsSPNTriangles_5b( - 9, 11, 7, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&fob_1_v[263], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&fob_1_v[267], 20, 4), + gsSPNTrianglesInit_5b(12, // tri count + 2, 0, 4, // tri0 + 2, 5, 6, // tri1 + 1, 2, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 0, 3, 10, // tri1 + 3, 11, 12, // tri2 + 3, 1, 13 // tri3 + ), + gsSPNTriangles_5b(1, 14, 15, // tri0 + 0, 16, 17, // tri1 + 0, 18, 19, // tri2 + 2, 20, 21 // tri3 + ), + gsSPNTriangles_5b(3, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&fob_1_v[287], 13, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 0, 7 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 6, 1, 0, // tri1 + 8, 10, 9, // tri2 + 5, 4, 6 // tri3 + ), + gsSPNTriangles_5b(11, 12, 3, // tri0 + 7, 11, 3, // tri1 + 7, 5, 6, // tri2 + 3, 5, 7 // tri3 + ), + gsSPNTriangles_5b(2, 10, 8, // tri0 + 7, 0, 2, // tri1 + 9, 12, 11, // tri2 + 2, 8, 7 // tri3 + ), + gsSPNTriangles_5b(9, 11, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_fob_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), -gsSPVertex(&fob_1_v[339], 4, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&fob_1_v[343], 14, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 0, 4, // tri0 - 0, 6, 5, // tri1 - 2, 8, 7 // tri2 -), -gsSPNTriangles_5b( - 0, 1, 9, // tri0 - 1, 2, 10, // tri1 - 2, 3, 11, // tri2 - 1, 12, 13 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 14, 15, 16, // tri0 - 17, 15, 14, // tri1 - 17, 16, 15 // tri2 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&fob_1_v[339], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&fob_1_v[343], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 0, 4, // tri0 + 0, 6, 5, // tri1 + 2, 8, 7 // tri2 + ), + gsSPNTriangles_5b(0, 1, 9, // tri0 + 1, 2, 10, // tri1 + 2, 3, 11, // tri2 + 1, 12, 13 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 14, 15, 16, // tri0 + 17, 15, 14, // tri1 + 17, 16, 15 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_fob_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), -gsSPVertex(&fob_1_v[357], 7, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 1, 3, 4, // tri1 - 1, 5, 2 // tri2 -), -gsSPNTriangles_5b( - 6, 4, 3, // tri0 - 6, 3, 0, // tri1 - 0, 2, 6, // tri2 - 4, 5, 1 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&fob_1_v[357], 7, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 1, 5, 2 // tri2 + ), + gsSPNTriangles_5b(6, 4, 3, // tri0 + 6, 3, 0, // tri1 + 0, 2, 6, // tri2 + 4, 5, 1 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_fob_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), -gsSPVertex(&fob_1_v[314], 4, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&fob_1_v[318], 14, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 3, 4, // tri0 - 0, 6, 5, // tri1 - 2, 8, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 9, // tri0 - 2, 1, 10, // tri1 - 3, 2, 11, // tri2 - 1, 12, 13 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 14, 15, 16, // tri0 - 16, 15, 17, // tri1 - 15, 14, 17 // tri2 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&fob_1_v[314], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&fob_1_v[318], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 4, // tri0 + 0, 6, 5, // tri1 + 2, 8, 7 // tri2 + ), + gsSPNTriangles_5b(1, 0, 9, // tri0 + 2, 1, 10, // tri1 + 3, 2, 11, // tri2 + 1, 12, 13 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 14, 15, 16, // tri0 + 16, 15, 17, // tri1 + 15, 14, 17 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_fob_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), -gsSPVertex(&fob_1_v[332], 7, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 3, 4, 1, // tri1 - 0, 5, 1 // tri2 -), -gsSPNTriangles_5b( - 4, 3, 6, // tri0 - 2, 4, 6, // tri1 - 6, 0, 2, // tri2 - 1, 5, 3 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&fob_1_v[332], 7, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 0, 5, 1 // tri2 + ), + gsSPNTriangles_5b(4, 3, 6, // tri0 + 2, 4, 6, // tri1 + 6, 0, 2, // tri2 + 1, 5, 3 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx base_fob_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000580, G_IM_FMT_CI, 48, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), -gsSPVertex(&fob_1_v[364], 26, 0), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 4, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 8, 2, 7, // tri0 - 7, 6, 8, // tri1 - 7, 5, 4, // tri2 - 2, 8, 0 // tri3 -), -gsSPNTriangles_5b( - 5, 9, 3, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000700, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 19, // tri count - 10, 11, 12, // tri0 - 13, 14, 15, // tri1 - 16, 17, 18 // tri2 -), -gsSPNTriangles_5b( - 19, 20, 13, // tri0 - 21, 15, 22, // tri1 - 17, 15, 21, // tri2 - 21, 22, 23 // tri3 -), -gsSPNTriangles_5b( - 23, 22, 24, // tri0 - 23, 12, 18, // tri1 - 19, 17, 16, // tri2 - 16, 18, 12 // tri3 -), -gsSPNTriangles_5b( - 14, 24, 22, // tri0 - 14, 22, 15, // tri1 - 19, 15, 17, // tri2 - 23, 25, 10 // tri3 -), -gsSPNTriangles_5b( - 24, 25, 23, // tri0 - 15, 19, 13, // tri1 - 10, 12, 23, // tri2 - 18, 21, 23 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000580, G_IM_FMT_CI, 48, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&fob_1_v[390], 29, 0), -gsSPNTrianglesInit_5b( - 12, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 4, 7 // tri2 -), -gsSPNTriangles_5b( - 7, 8, 9, // tri0 - 4, 6, 5, // tri1 - 0, 2, 3, // tri2 - 9, 8, 10 // tri3 -), -gsSPNTriangles_5b( - 6, 7, 9, // tri0 - 5, 11, 3, // tri1 - 9, 12, 6, // tri2 - 8, 13, 10 // tri3 -), -gsSPNTriangles_5b( - 3, 2, 4, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000700, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 10, // tri count - 14, 15, 16, // tri0 - 17, 18, 19, // tri1 - 20, 16, 15 // tri2 -), -gsSPNTriangles_5b( - 21, 18, 22, // tri0 - 23, 24, 25, // tri1 - 23, 25, 16, // tri2 - 15, 26, 27 // tri3 -), -gsSPNTriangles_5b( - 14, 26, 15, // tri0 - 16, 25, 14, // tri1 - 26, 28, 27, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x580, G_IM_FMT_CI, 48, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&fob_1_v[364], 26, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 2, 7, // tri0 + 7, 6, 8, // tri1 + 7, 5, 4, // tri2 + 2, 8, 0 // tri3 + ), + gsSPNTriangles_5b(5, 9, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x700, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(19, // tri count + 10, 11, 12, // tri0 + 13, 14, 15, // tri1 + 16, 17, 18 // tri2 + ), + gsSPNTriangles_5b(19, 20, 13, // tri0 + 21, 15, 22, // tri1 + 17, 15, 21, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b(23, 22, 24, // tri0 + 23, 12, 18, // tri1 + 19, 17, 16, // tri2 + 16, 18, 12 // tri3 + ), + gsSPNTriangles_5b(14, 24, 22, // tri0 + 14, 22, 15, // tri1 + 19, 15, 17, // tri2 + 23, 25, 10 // tri3 + ), + gsSPNTriangles_5b(24, 25, 23, // tri0 + 15, 19, 13, // tri1 + 10, 12, 23, // tri2 + 18, 21, 23 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x580, G_IM_FMT_CI, 48, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&fob_1_v[390], 29, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 4, 7 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 4, 6, 5, // tri1 + 0, 2, 3, // tri2 + 9, 8, 10 // tri3 + ), + gsSPNTriangles_5b(6, 7, 9, // tri0 + 5, 11, 3, // tri1 + 9, 12, 6, // tri2 + 8, 13, 10 // tri3 + ), + gsSPNTriangles_5b(3, 2, 4, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x700, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(10, // tri count + 14, 15, 16, // tri0 + 17, 18, 19, // tri1 + 20, 16, 15 // tri2 + ), + gsSPNTriangles_5b(21, 18, 22, // tri0 + 23, 24, 25, // tri1 + 23, 25, 16, // tri2 + 15, 26, 27 // tri3 + ), + gsSPNTriangles_5b(14, 26, 15, // tri0 + 16, 25, 14, // tri1 + 26, 28, 27, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_fob_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -816,4 +722,4 @@ static cKF_Joint_R_c cKF_je_r_fob_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_fob_1 = { 26, 14, cKF_je_r_fob_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_fob_1 = { 26, 14, cKF_je_r_fob_1_tbl }; diff --git a/src/data/npc/model/mdl/fox_1.c b/src/data/npc/model/mdl/fox_1.c index b2fb7524..4feb66a0 100644 --- a/src/data/npc/model/mdl/fox_1.c +++ b/src/data/npc/model/mdl/fox_1.c @@ -6,706 +6,623 @@ static Vtx fox_1_v[] = { }; static Gfx head_fox_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&fox_1_v[22], 32, 0), -gsSPNTrianglesInit_5b( - 37, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 7, 6, 5, // tri0 - 7, 5, 9, // tri1 - 10, 2, 1, // tri2 - 1, 11, 12 // tri3 -), -gsSPNTriangles_5b( - 0, 13, 1, // tri0 - 14, 5, 4, // tri1 - 5, 6, 3, // tri2 - 15, 4, 3 // tri3 -), -gsSPNTriangles_5b( - 16, 4, 15, // tri0 - 8, 17, 18, // tri1 - 11, 19, 20, // tri2 - 21, 22, 23 // tri3 -), -gsSPNTriangles_5b( - 17, 8, 7, // tri0 - 24, 12, 20, // tri1 - 25, 3, 26, // tri2 - 23, 22, 2 // tri3 -), -gsSPNTriangles_5b( - 13, 19, 11, // tri0 - 1, 13, 11, // tri1 - 18, 24, 20, // tri2 - 27, 28, 8 // tri3 -), -gsSPNTriangles_5b( - 1, 12, 10, // tri0 - 5, 14, 9, // tri1 - 26, 28, 27, // tri2 - 28, 3, 6 // tri3 -), -gsSPNTriangles_5b( - 17, 7, 29, // tri0 - 20, 19, 27, // tri1 - 27, 19, 26, // tri2 - 15, 25, 13 // tri3 -), -gsSPNTriangles_5b( - 2, 10, 23, // tri0 - 23, 9, 14, // tri1 - 30, 23, 10, // tri2 - 9, 23, 30 // tri3 -), -gsSPNTriangles_5b( - 3, 25, 15, // tri0 - 12, 24, 31, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&fox_1_v[54], 29, 0), -gsSPNTrianglesInit_5b( - 13, // tri count - 0, 1, 2, // tri0 - 2, 3, 0, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 5, 7, 6, // tri0 - 4, 8, 9, // tri1 - 7, 10, 11, // tri2 - 12, 13, 14 // tri3 -), -gsSPNTriangles_5b( - 15, 14, 1, // tri0 - 15, 1, 0, // tri1 - 16, 3, 2, // tri2 - 17, 8, 18 // tri3 -), -gsSPNTriangles_5b( - 18, 19, 16, // tri0 - 16, 20, 18, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 2, // tri count - 21, 22, 23, // tri0 - 23, 24, 21, // tri1 - 0, 0, 0 // tri2 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 25, 26, 27, // tri0 - 27, 28, 25, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&fox_1_v[83], 20, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 3, 4, 5 // tri2 -), -gsSPNTriangles_5b( - 6, 4, 3, // tri0 - 5, 0, 3, // tri1 - 4, 6, 7, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 8, // tri count - 8, 9, 10, // tri0 - 8, 10, 11, // tri1 - 12, 13, 14 // tri2 -), -gsSPNTriangles_5b( - 12, 15, 16, // tri0 - 11, 10, 17, // tri1 - 14, 15, 12, // tri2 - 17, 18, 11 // tri3 -), -gsSPNTriangles_5b( - 19, 16, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&fox_1_v[22], 32, 0), + gsSPNTrianglesInit_5b(37, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(7, 6, 5, // tri0 + 7, 5, 9, // tri1 + 10, 2, 1, // tri2 + 1, 11, 12 // tri3 + ), + gsSPNTriangles_5b(0, 13, 1, // tri0 + 14, 5, 4, // tri1 + 5, 6, 3, // tri2 + 15, 4, 3 // tri3 + ), + gsSPNTriangles_5b(16, 4, 15, // tri0 + 8, 17, 18, // tri1 + 11, 19, 20, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b(17, 8, 7, // tri0 + 24, 12, 20, // tri1 + 25, 3, 26, // tri2 + 23, 22, 2 // tri3 + ), + gsSPNTriangles_5b(13, 19, 11, // tri0 + 1, 13, 11, // tri1 + 18, 24, 20, // tri2 + 27, 28, 8 // tri3 + ), + gsSPNTriangles_5b(1, 12, 10, // tri0 + 5, 14, 9, // tri1 + 26, 28, 27, // tri2 + 28, 3, 6 // tri3 + ), + gsSPNTriangles_5b(17, 7, 29, // tri0 + 20, 19, 27, // tri1 + 27, 19, 26, // tri2 + 15, 25, 13 // tri3 + ), + gsSPNTriangles_5b(2, 10, 23, // tri0 + 23, 9, 14, // tri1 + 30, 23, 10, // tri2 + 9, 23, 30 // tri3 + ), + gsSPNTriangles_5b(3, 25, 15, // tri0 + 12, 24, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&fox_1_v[54], 29, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 4, 8, 9, // tri1 + 7, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 14, 1, // tri0 + 15, 1, 0, // tri1 + 16, 3, 2, // tri2 + 17, 8, 18 // tri3 + ), + gsSPNTriangles_5b(18, 19, 16, // tri0 + 16, 20, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 21, 22, 23, // tri0 + 23, 24, 21, // tri1 + 0, 0, 0 // tri2 + ), + gsSPNTrianglesInit_5b(2, // tri count + 25, 26, 27, // tri0 + 27, 28, 25, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&fox_1_v[83], 20, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b(6, 4, 3, // tri0 + 5, 0, 3, // tri1 + 4, 6, 7, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(8, // tri count + 8, 9, 10, // tri0 + 8, 10, 11, // tri1 + 12, 13, 14 // tri2 + ), + gsSPNTriangles_5b(12, 15, 16, // tri0 + 11, 10, 17, // tri1 + 14, 15, 12, // tri2 + 17, 18, 11 // tri3 + ), + gsSPNTriangles_5b(19, 16, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx mouth_fox_model[] = { -gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&fox_1_v[0], 7, 0), -gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&fox_1_v[7], 15, 7), -gsSPNTrianglesInit_5b( - 9, // tri count - 6, 7, 8, // tri0 - 6, 4, 9, // tri1 - 1, 10, 11 // tri2 -), -gsSPNTriangles_5b( - 2, 0, 12, // tri0 - 4, 1, 13, // tri1 - 0, 5, 14, // tri2 - 5, 6, 15 // tri3 -), -gsSPNTriangles_5b( - 0, 16, 17, // tri0 - 1, 3, 18, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 19, 20, 21, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&fox_1_v[0], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&fox_1_v[7], 15, 7), + gsSPNTrianglesInit_5b(9, // tri count + 6, 7, 8, // tri0 + 6, 4, 9, // tri1 + 1, 10, 11 // tri2 + ), + gsSPNTriangles_5b(2, 0, 12, // tri0 + 4, 1, 13, // tri1 + 0, 5, 14, // tri2 + 5, 6, 15 // tri3 + ), + gsSPNTriangles_5b(0, 16, 17, // tri0 + 1, 3, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_fox_model[] = { -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&fox_1_v[137], 4, 0), -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&fox_1_v[141], 16, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 4, 5, // tri0 - 1, 6, 7, // tri1 - 2, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 1, 10, 11, // tri0 - 0, 2, 12, // tri1 - 0, 13, 1, // tri2 - 2, 3, 14 // tri3 -), -gsSPNTriangles_5b( - 3, 1, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 16, 17, 18, // tri0 - 19, 18, 17, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&fox_1_v[137], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&fox_1_v[141], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 1, 6, 7, // tri1 + 2, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 10, 11, // tri0 + 0, 2, 12, // tri1 + 0, 13, 1, // tri2 + 2, 3, 14 // tri3 + ), + gsSPNTriangles_5b(3, 1, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 19, 18, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_fox_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&fox_1_v[157], 3, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&fox_1_v[160], 11, 3), -gsSPNTrianglesInit_5b( - 7, // tri count - 2, 3, 1, // tri0 - 0, 5, 4, // tri1 - 2, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 8, 9, // tri0 - 0, 10, 11, // tri1 - 2, 0, 12, // tri2 - 0, 1, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&fox_1_v[157], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&fox_1_v[160], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 2, 3, 1, // tri0 + 0, 5, 4, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 0, 10, 11, // tri1 + 2, 0, 12, // tri2 + 0, 1, 13 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_fox_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&fox_1_v[103], 4, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&fox_1_v[107], 16, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 4, 5, // tri0 - 1, 6, 7, // tri1 - 2, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 1, 10, 11, // tri0 - 2, 0, 12, // tri1 - 1, 13, 0, // tri2 - 3, 2, 14 // tri3 -), -gsSPNTriangles_5b( - 1, 3, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 16, 17, 18, // tri0 - 17, 16, 19, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&fox_1_v[103], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&fox_1_v[107], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 1, 6, 7, // tri1 + 2, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 10, 11, // tri0 + 2, 0, 12, // tri1 + 1, 13, 0, // tri2 + 3, 2, 14 // tri3 + ), + gsSPNTriangles_5b(1, 3, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_fox_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&fox_1_v[123], 3, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&fox_1_v[126], 11, 3), -gsSPNTrianglesInit_5b( - 7, // tri count - 1, 3, 2, // tri0 - 0, 5, 4, // tri1 - 2, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 8, 9, // tri0 - 0, 10, 11, // tri1 - 0, 2, 12, // tri2 - 1, 0, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&fox_1_v[123], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&fox_1_v[126], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 1, 3, 2, // tri0 + 0, 5, 4, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 0, 10, 11, // tri1 + 0, 2, 12, // tri2 + 1, 0, 13 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_fox_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&fox_1_v[171], 11, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&fox_1_v[182], 13, 11), -gsSPNTrianglesInit_5b( - 9, // tri count - 7, 2, 11, // tri0 - 2, 12, 13, // tri1 - 8, 14, 15 // tri2 -), -gsSPNTriangles_5b( - 1, 8, 16, // tri0 - 1, 17, 18, // tri1 - 9, 7, 19, // tri2 - 10, 9, 20 // tri3 -), -gsSPNTriangles_5b( - 7, 22, 21, // tri0 - 8, 10, 23, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&fox_1_v[195], 20, 11), -gsSPNTrianglesInit_5b( - 8, // tri count - 3, 5, 11, // tri0 - 4, 13, 12, // tri1 - 5, 14, 15 // tri2 -), -gsSPNTriangles_5b( - 4, 16, 6, // tri0 - 3, 17, 18, // tri1 - 4, 0, 19, // tri2 - 6, 20, 5 // tri3 -), -gsSPNTriangles_5b( - 0, 21, 22, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 23, 24, 25, // tri0 - 25, 24, 26, // tri1 - 27, 28, 23 // tri2 -), -gsSPNTriangles_5b( - 26, 29, 30, // tri0 - 25, 27, 23, // tri1 - 26, 30, 25, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&fox_1_v[215], 12, 0), -gsSPNTrianglesInit_5b( - 12, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 9, // tri0 - 1, 9, 6, // tri1 - 3, 10, 4, // tri2 - 5, 4, 11 // tri3 -), -gsSPNTriangles_5b( - 3, 8, 10, // tri0 - 6, 8, 3, // tri1 - 2, 1, 5, // tri2 - 6, 3, 1 // tri3 -), -gsSPNTriangles_5b( - 3, 5, 1, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&fox_1_v[171], 11, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&fox_1_v[182], 13, 11), + gsSPNTrianglesInit_5b(9, // tri count + 7, 2, 11, // tri0 + 2, 12, 13, // tri1 + 8, 14, 15 // tri2 + ), + gsSPNTriangles_5b(1, 8, 16, // tri0 + 1, 17, 18, // tri1 + 9, 7, 19, // tri2 + 10, 9, 20 // tri3 + ), + gsSPNTriangles_5b(7, 22, 21, // tri0 + 8, 10, 23, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&fox_1_v[195], 20, 11), + gsSPNTrianglesInit_5b(8, // tri count + 3, 5, 11, // tri0 + 4, 13, 12, // tri1 + 5, 14, 15 // tri2 + ), + gsSPNTriangles_5b(4, 16, 6, // tri0 + 3, 17, 18, // tri1 + 4, 0, 19, // tri2 + 6, 20, 5 // tri3 + ), + gsSPNTriangles_5b(0, 21, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 23, 24, 25, // tri0 + 25, 24, 26, // tri1 + 27, 28, 23 // tri2 + ), + gsSPNTriangles_5b(26, 29, 30, // tri0 + 25, 27, 23, // tri1 + 26, 30, 25, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&fox_1_v[215], 12, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(1, 0, 9, // tri0 + 1, 9, 6, // tri1 + 3, 10, 4, // tri2 + 5, 4, 11 // tri3 + ), + gsSPNTriangles_5b(3, 8, 10, // tri0 + 6, 8, 3, // tri1 + 2, 1, 5, // tri2 + 6, 3, 1 // tri3 + ), + gsSPNTriangles_5b(3, 5, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail1_fox_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&fox_1_v[264], 3, 0), -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&fox_1_v[267], 11, 3), -gsSPNTrianglesInit_5b( - 7, // tri count - 1, 3, 4, // tri0 - 1, 0, 5, // tri1 - 2, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 8, 9, // tri0 - 2, 1, 10, // tri1 - 0, 11, 12, // tri2 - 0, 2, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&fox_1_v[264], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&fox_1_v[267], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 1, 3, 4, // tri0 + 1, 0, 5, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 2, 1, 10, // tri1 + 0, 11, 12, // tri2 + 0, 2, 13 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail2_fox_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&fox_1_v[227], 4, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&fox_1_v[231], 20, 4), -gsSPNTrianglesInit_5b( - 12, // tri count - 2, 0, 4, // tri0 - 2, 5, 6, // tri1 - 1, 2, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 8, 9, // tri0 - 0, 3, 10, // tri1 - 3, 11, 12, // tri2 - 3, 1, 13 // tri3 -), -gsSPNTriangles_5b( - 1, 14, 15, // tri0 - 0, 16, 17, // tri1 - 0, 18, 19, // tri2 - 2, 20, 21 // tri3 -), -gsSPNTriangles_5b( - 3, 22, 23, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&fox_1_v[251], 13, 0), -gsSPNTrianglesInit_5b( - 16, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 0, 7 // tri2 -), -gsSPNTriangles_5b( - 7, 8, 9, // tri0 - 6, 1, 0, // tri1 - 8, 10, 9, // tri2 - 5, 4, 6 // tri3 -), -gsSPNTriangles_5b( - 11, 12, 3, // tri0 - 7, 11, 3, // tri1 - 7, 5, 6, // tri2 - 3, 5, 7 // tri3 -), -gsSPNTriangles_5b( - 2, 10, 8, // tri0 - 7, 0, 2, // tri1 - 9, 12, 11, // tri2 - 2, 8, 7 // tri3 -), -gsSPNTriangles_5b( - 9, 11, 7, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&fox_1_v[227], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&fox_1_v[231], 20, 4), + gsSPNTrianglesInit_5b(12, // tri count + 2, 0, 4, // tri0 + 2, 5, 6, // tri1 + 1, 2, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 0, 3, 10, // tri1 + 3, 11, 12, // tri2 + 3, 1, 13 // tri3 + ), + gsSPNTriangles_5b(1, 14, 15, // tri0 + 0, 16, 17, // tri1 + 0, 18, 19, // tri2 + 2, 20, 21 // tri3 + ), + gsSPNTriangles_5b(3, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&fox_1_v[251], 13, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 0, 7 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 6, 1, 0, // tri1 + 8, 10, 9, // tri2 + 5, 4, 6 // tri3 + ), + gsSPNTriangles_5b(11, 12, 3, // tri0 + 7, 11, 3, // tri1 + 7, 5, 6, // tri2 + 3, 5, 7 // tri3 + ), + gsSPNTriangles_5b(2, 10, 8, // tri0 + 7, 0, 2, // tri1 + 9, 12, 11, // tri2 + 2, 8, 7 // tri3 + ), + gsSPNTriangles_5b(9, 11, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_fox_model[] = { -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&fox_1_v[303], 4, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&fox_1_v[307], 14, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 0, 4, // tri0 - 0, 6, 5, // tri1 - 2, 8, 7 // tri2 -), -gsSPNTriangles_5b( - 0, 1, 9, // tri0 - 1, 2, 10, // tri1 - 2, 3, 11, // tri2 - 1, 12, 13 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 14, 15, 16, // tri0 - 17, 15, 14, // tri1 - 17, 16, 15 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&fox_1_v[303], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&fox_1_v[307], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 0, 4, // tri0 + 0, 6, 5, // tri1 + 2, 8, 7 // tri2 + ), + gsSPNTriangles_5b(0, 1, 9, // tri0 + 1, 2, 10, // tri1 + 2, 3, 11, // tri2 + 1, 12, 13 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 14, 15, 16, // tri0 + 17, 15, 14, // tri1 + 17, 16, 15 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_fox_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&fox_1_v[321], 7, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 1, 3, 4, // tri1 - 1, 5, 2 // tri2 -), -gsSPNTriangles_5b( - 6, 4, 3, // tri0 - 6, 3, 0, // tri1 - 0, 2, 6, // tri2 - 4, 5, 1 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&fox_1_v[321], 7, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 1, 5, 2 // tri2 + ), + gsSPNTriangles_5b(6, 4, 3, // tri0 + 6, 3, 0, // tri1 + 0, 2, 6, // tri2 + 4, 5, 1 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_fox_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&fox_1_v[278], 4, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&fox_1_v[282], 14, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 3, 4, // tri0 - 0, 6, 5, // tri1 - 2, 8, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 9, // tri0 - 2, 1, 10, // tri1 - 3, 2, 11, // tri2 - 1, 12, 13 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 14, 15, 16, // tri0 - 16, 15, 17, // tri1 - 15, 14, 17 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&fox_1_v[278], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&fox_1_v[282], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 4, // tri0 + 0, 6, 5, // tri1 + 2, 8, 7 // tri2 + ), + gsSPNTriangles_5b(1, 0, 9, // tri0 + 2, 1, 10, // tri1 + 3, 2, 11, // tri2 + 1, 12, 13 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 14, 15, 16, // tri0 + 16, 15, 17, // tri1 + 15, 14, 17 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_fox_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&fox_1_v[296], 7, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 3, 4, 1, // tri1 - 0, 5, 1 // tri2 -), -gsSPNTriangles_5b( - 4, 3, 6, // tri0 - 2, 4, 6, // tri1 - 6, 0, 2, // tri2 - 1, 5, 3 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&fox_1_v[296], 7, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 0, 5, 1 // tri2 + ), + gsSPNTriangles_5b(4, 3, 6, // tri0 + 2, 4, 6, // tri1 + 6, 0, 2, // tri2 + 1, 5, 3 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx base_fox_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 48, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&fox_1_v[328], 26, 0), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 4, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 8, 2, 7, // tri0 - 7, 6, 8, // tri1 - 7, 5, 4, // tri2 - 2, 8, 0 // tri3 -), -gsSPNTriangles_5b( - 5, 9, 3, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 19, // tri count - 10, 11, 12, // tri0 - 13, 14, 15, // tri1 - 13, 15, 16 // tri2 -), -gsSPNTriangles_5b( - 17, 18, 19, // tri0 - 16, 20, 13, // tri1 - 21, 15, 22, // tri2 - 18, 15, 21 // tri3 -), -gsSPNTriangles_5b( - 21, 22, 23, // tri0 - 23, 22, 24, // tri1 - 21, 23, 19, // tri2 - 16, 18, 17 // tri3 -), -gsSPNTriangles_5b( - 17, 19, 12, // tri0 - 14, 24, 22, // tri1 - 14, 22, 15, // tri2 - 16, 15, 18 // tri3 -), -gsSPNTriangles_5b( - 23, 12, 19, // tri0 - 12, 23, 25, // tri1 - 12, 25, 10, // tri2 - 24, 25, 23 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 48, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&fox_1_v[354], 14, 0), -gsSPNTrianglesInit_5b( - 12, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 0, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 2, 8, 6, // tri0 - 5, 9, 10, // tri1 - 5, 10, 3, // tri2 - 6, 0, 2 // tri3 -), -gsSPNTriangles_5b( - 11, 7, 12, // tri0 - 12, 3, 10, // tri1 - 7, 11, 13, // tri2 - 10, 11, 12 // tri3 -), -gsSPNTriangles_5b( - 13, 0, 7, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 48, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&fox_1_v[328], 26, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 2, 7, // tri0 + 7, 6, 8, // tri1 + 7, 5, 4, // tri2 + 2, 8, 0 // tri3 + ), + gsSPNTriangles_5b(5, 9, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(19, // tri count + 10, 11, 12, // tri0 + 13, 14, 15, // tri1 + 13, 15, 16 // tri2 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 16, 20, 13, // tri1 + 21, 15, 22, // tri2 + 18, 15, 21 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 23, 22, 24, // tri1 + 21, 23, 19, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b(17, 19, 12, // tri0 + 14, 24, 22, // tri1 + 14, 22, 15, // tri2 + 16, 15, 18 // tri3 + ), + gsSPNTriangles_5b(23, 12, 19, // tri0 + 12, 23, 25, // tri1 + 12, 25, 10, // tri2 + 24, 25, 23 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 48, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&fox_1_v[354], 14, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 7 // tri2 + ), + gsSPNTriangles_5b(2, 8, 6, // tri0 + 5, 9, 10, // tri1 + 5, 10, 3, // tri2 + 6, 0, 2 // tri3 + ), + gsSPNTriangles_5b(11, 7, 12, // tri0 + 12, 3, 10, // tri1 + 7, 11, 13, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(13, 0, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_fox_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -737,4 +654,4 @@ static cKF_Joint_R_c cKF_je_r_fox_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_fox_1 = { 26, 14, cKF_je_r_fox_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_fox_1 = { 26, 14, cKF_je_r_fox_1_tbl }; diff --git a/src/data/npc/model/mdl/goa_1.c b/src/data/npc/model/mdl/goa_1.c index aec033dc..ceb20f40 100644 --- a/src/data/npc/model/mdl/goa_1.c +++ b/src/data/npc/model/mdl/goa_1.c @@ -6,671 +6,593 @@ static Vtx goa_1_v[] = { }; static Gfx head_goa_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 32, 40, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&goa_1_v[7], 24, 0), -gsSPNTrianglesInit_5b( - 34, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 9, 10, 11, // tri0 - 12, 13, 14, // tri1 - 15, 7, 6, // tri2 - 16, 12, 17 // tri3 -), -gsSPNTriangles_5b( - 1, 6, 11, // tri0 - 17, 5, 18, // tri1 - 6, 18, 15, // tri2 - 15, 18, 5 // tri3 -), -gsSPNTriangles_5b( - 19, 7, 15, // tri0 - 5, 4, 15, // tri1 - 0, 17, 1, // tri2 - 20, 8, 7 // tri3 -), -gsSPNTriangles_5b( - 21, 19, 4, // tri0 - 15, 4, 19, // tri1 - 7, 19, 20, // tri2 - 20, 22, 8 // tri3 -), -gsSPNTriangles_5b( - 23, 20, 19, // tri0 - 21, 22, 23, // tri1 - 3, 22, 21, // tri2 - 4, 3, 21 // tri3 -), -gsSPNTriangles_5b( - 23, 22, 20, // tri0 - 19, 21, 23, // tri1 - 12, 5, 17, // tri2 - 18, 6, 1 // tri3 -), -gsSPNTriangles_5b( - 1, 17, 18, // tri0 - 1, 11, 2, // tri1 - 5, 12, 14, // tri2 - 9, 11, 6 // tri3 -), -gsSPNTriangles_5b( - 5, 14, 3, // tri0 - 8, 9, 6, // tri1 - 16, 17, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&goa_1_v[31], 25, 0), -gsSPNTrianglesInit_5b( - 16, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 9, 5, 4, // tri0 - 1, 0, 5, // tri1 - 5, 0, 10, // tri2 - 11, 4, 3 // tri3 -), -gsSPNTriangles_5b( - 12, 11, 3, // tri0 - 10, 0, 13, // tri1 - 7, 6, 10, // tri2 - 8, 12, 6 // tri3 -), -gsSPNTriangles_5b( - 3, 6, 12, // tri0 - 5, 9, 1, // tri1 - 10, 6, 3, // tri2 - 3, 5, 10 // tri3 -), -gsSPNTriangles_5b( - 2, 13, 0, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 12, // tri count - 14, 15, 16, // tri0 - 17, 18, 19, // tri1 - 20, 21, 19 // tri2 -), -gsSPNTriangles_5b( - 17, 19, 21, // tri0 - 17, 15, 18, // tri1 - 22, 19, 18, // tri2 - 22, 18, 14 // tri3 -), -gsSPNTriangles_5b( - 15, 23, 24, // tri0 - 19, 22, 20, // tri1 - 24, 16, 15, // tri2 - 23, 15, 17 // tri3 -), -gsSPNTriangles_5b( - 14, 18, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&goa_1_v[56], 26, 0), -gsSPNTrianglesInit_5b( - 18, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 0, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 8, 2, 1, // tri0 - 5, 7, 9, // tri1 - 9, 10, 3, // tri2 - 11, 12, 8 // tri3 -), -gsSPNTriangles_5b( - 13, 1, 14, // tri0 - 8, 1, 11, // tri1 - 14, 1, 0, // tri2 - 14, 0, 15 // tri3 -), -gsSPNTriangles_5b( - 15, 0, 5, // tri0 - 15, 5, 16, // tri1 - 16, 5, 4, // tri2 - 3, 5, 9 // tri3 -), -gsSPNTriangles_5b( - 2, 6, 0, // tri0 - 1, 13, 11, // tri1 - 7, 5, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 253, 255, 255, 255), -gsSPNTrianglesInit_5b( - 7, // tri count - 17, 18, 19, // tri0 - 20, 19, 21, // tri1 - 20, 22, 19 // tri2 -), -gsSPNTriangles_5b( - 21, 23, 20, // tri0 - 22, 17, 19, // tri1 - 24, 18, 17, // tri2 - 17, 25, 24 // tri3 -), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&goa_1_v[82], 31, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 1, 3, 4, // tri1 - 2, 5, 0 // tri2 -), -gsSPNTriangles_5b( - 4, 3, 6, // tri0 - 4, 7, 1, // tri1 - 6, 8, 4, // tri2 - 1, 7, 2 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 13, // tri count - 9, 10, 11, // tri0 - 12, 13, 14, // tri1 - 14, 15, 9 // tri2 -), -gsSPNTriangles_5b( - 9, 15, 16, // tri0 - 12, 17, 18, // tri1 - 13, 19, 20, // tri2 - 14, 9, 11 // tri3 -), -gsSPNTriangles_5b( - 11, 17, 12, // tri0 - 21, 10, 9, // tri1 - 12, 18, 19, // tri2 - 16, 21, 9 // tri3 -), -gsSPNTriangles_5b( - 19, 13, 12, // tri0 - 11, 12, 14, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 22, 23, 24, // tri0 - 22, 24, 25, // tri1 - 25, 24, 26 // tri2 -), -gsSPNTriangles_5b( - 27, 28, 29, // tri0 - 29, 23, 22, // tri1 - 28, 27, 30, // tri2 - 22, 27, 29 // tri3 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&goa_1_v[113], 13, 0), -gsSPNTrianglesInit_5b( - 13, // tri count - 0, 1, 2, // tri0 - 1, 3, 4, // tri1 - 5, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 2, 8, 5, // tri0 - 0, 3, 1, // tri1 - 5, 9, 0, // tri2 - 7, 9, 5 // tri3 -), -gsSPNTriangles_5b( - 10, 11, 1, // tri0 - 12, 4, 3, // tri1 - 2, 5, 0, // tri2 - 1, 11, 2 // tri3 -), -gsSPNTriangles_5b( - 5, 8, 6, // tri0 - 4, 10, 1, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 32, 40, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&goa_1_v[7], 24, 0), + gsSPNTrianglesInit_5b(34, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 13, 14, // tri1 + 15, 7, 6, // tri2 + 16, 12, 17 // tri3 + ), + gsSPNTriangles_5b(1, 6, 11, // tri0 + 17, 5, 18, // tri1 + 6, 18, 15, // tri2 + 15, 18, 5 // tri3 + ), + gsSPNTriangles_5b(19, 7, 15, // tri0 + 5, 4, 15, // tri1 + 0, 17, 1, // tri2 + 20, 8, 7 // tri3 + ), + gsSPNTriangles_5b(21, 19, 4, // tri0 + 15, 4, 19, // tri1 + 7, 19, 20, // tri2 + 20, 22, 8 // tri3 + ), + gsSPNTriangles_5b(23, 20, 19, // tri0 + 21, 22, 23, // tri1 + 3, 22, 21, // tri2 + 4, 3, 21 // tri3 + ), + gsSPNTriangles_5b(23, 22, 20, // tri0 + 19, 21, 23, // tri1 + 12, 5, 17, // tri2 + 18, 6, 1 // tri3 + ), + gsSPNTriangles_5b(1, 17, 18, // tri0 + 1, 11, 2, // tri1 + 5, 12, 14, // tri2 + 9, 11, 6 // tri3 + ), + gsSPNTriangles_5b(5, 14, 3, // tri0 + 8, 9, 6, // tri1 + 16, 17, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&goa_1_v[31], 25, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 5, 4, // tri0 + 1, 0, 5, // tri1 + 5, 0, 10, // tri2 + 11, 4, 3 // tri3 + ), + gsSPNTriangles_5b(12, 11, 3, // tri0 + 10, 0, 13, // tri1 + 7, 6, 10, // tri2 + 8, 12, 6 // tri3 + ), + gsSPNTriangles_5b(3, 6, 12, // tri0 + 5, 9, 1, // tri1 + 10, 6, 3, // tri2 + 3, 5, 10 // tri3 + ), + gsSPNTriangles_5b(2, 13, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(12, // tri count + 14, 15, 16, // tri0 + 17, 18, 19, // tri1 + 20, 21, 19 // tri2 + ), + gsSPNTriangles_5b(17, 19, 21, // tri0 + 17, 15, 18, // tri1 + 22, 19, 18, // tri2 + 22, 18, 14 // tri3 + ), + gsSPNTriangles_5b(15, 23, 24, // tri0 + 19, 22, 20, // tri1 + 24, 16, 15, // tri2 + 23, 15, 17 // tri3 + ), + gsSPNTriangles_5b(14, 18, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&goa_1_v[56], 26, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 2, 1, // tri0 + 5, 7, 9, // tri1 + 9, 10, 3, // tri2 + 11, 12, 8 // tri3 + ), + gsSPNTriangles_5b(13, 1, 14, // tri0 + 8, 1, 11, // tri1 + 14, 1, 0, // tri2 + 14, 0, 15 // tri3 + ), + gsSPNTriangles_5b(15, 0, 5, // tri0 + 15, 5, 16, // tri1 + 16, 5, 4, // tri2 + 3, 5, 9 // tri3 + ), + gsSPNTriangles_5b(2, 6, 0, // tri0 + 1, 13, 11, // tri1 + 7, 5, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 253, 255, 255, 255), + gsSPNTrianglesInit_5b(7, // tri count + 17, 18, 19, // tri0 + 20, 19, 21, // tri1 + 20, 22, 19 // tri2 + ), + gsSPNTriangles_5b(21, 23, 20, // tri0 + 22, 17, 19, // tri1 + 24, 18, 17, // tri2 + 17, 25, 24 // tri3 + ), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&goa_1_v[82], 31, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 2, 5, 0 // tri2 + ), + gsSPNTriangles_5b(4, 3, 6, // tri0 + 4, 7, 1, // tri1 + 6, 8, 4, // tri2 + 1, 7, 2 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(13, // tri count + 9, 10, 11, // tri0 + 12, 13, 14, // tri1 + 14, 15, 9 // tri2 + ), + gsSPNTriangles_5b(9, 15, 16, // tri0 + 12, 17, 18, // tri1 + 13, 19, 20, // tri2 + 14, 9, 11 // tri3 + ), + gsSPNTriangles_5b(11, 17, 12, // tri0 + 21, 10, 9, // tri1 + 12, 18, 19, // tri2 + 16, 21, 9 // tri3 + ), + gsSPNTriangles_5b(19, 13, 12, // tri0 + 11, 12, 14, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 22, 23, 24, // tri0 + 22, 24, 25, // tri1 + 25, 24, 26 // tri2 + ), + gsSPNTriangles_5b(27, 28, 29, // tri0 + 29, 23, 22, // tri1 + 28, 27, 30, // tri2 + 22, 27, 29 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&goa_1_v[113], 13, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(2, 8, 5, // tri0 + 0, 3, 1, // tri1 + 5, 9, 0, // tri2 + 7, 9, 5 // tri3 + ), + gsSPNTriangles_5b(10, 11, 1, // tri0 + 12, 4, 3, // tri1 + 2, 5, 0, // tri2 + 1, 11, 2 // tri3 + ), + gsSPNTriangles_5b(5, 8, 6, // tri0 + 4, 10, 1, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx mouth_goa_model[] = { -gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&goa_1_v[0], 4, 0), -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&goa_1_v[4], 3, 4), -gsSPNTrianglesInit_5b( - 3, // tri count - 1, 4, 3, // tri0 - 2, 0, 5, // tri1 - 0, 3, 6 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&goa_1_v[0], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&goa_1_v[4], 3, 4), + gsSPNTrianglesInit_5b(3, // tri count + 1, 4, 3, // tri0 + 2, 0, 5, // tri1 + 0, 3, 6 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_goa_model[] = { -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&goa_1_v[162], 5, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&goa_1_v[167], 16, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 5, 6, // tri0 - 4, 7, 8, // tri1 - 4, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 0, 1, 11, // tri0 - 2, 4, 12, // tri1 - 0, 13, 14, // tri2 - 3, 0, 15 // tri3 -), -gsSPNTriangles_5b( - 4, 3, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 20, 19, 18, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&goa_1_v[162], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&goa_1_v[167], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(0, 1, 11, // tri0 + 2, 4, 12, // tri1 + 0, 13, 14, // tri2 + 3, 0, 15 // tri3 + ), + gsSPNTriangles_5b(4, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 19, 18, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_goa_model[] = { -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&goa_1_v[183], 4, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&goa_1_v[187], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 0, 6, 7, // tri1 - 2, 0, 8 // tri2 -), -gsSPNTriangles_5b( - 3, 2, 9, // tri0 - 2, 11, 10, // tri1 - 3, 13, 12, // tri2 - 1, 3, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&goa_1_v[183], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&goa_1_v[187], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 2, 0, 8 // tri2 + ), + gsSPNTriangles_5b(3, 2, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 1, 3, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_goa_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&goa_1_v[126], 5, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&goa_1_v[131], 16, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 5, 6, // tri0 - 4, 7, 8, // tri1 - 4, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 11, // tri0 - 4, 2, 12, // tri1 - 0, 13, 14, // tri2 - 0, 3, 15 // tri3 -), -gsSPNTriangles_5b( - 3, 4, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 18, 17, 20, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&goa_1_v[126], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&goa_1_v[131], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 + ), + gsSPNTriangles_5b(3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_goa_model[] = { -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&goa_1_v[147], 4, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&goa_1_v[151], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 0, 6, 7, // tri1 - 0, 2, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 3, 9, // tri0 - 2, 11, 10, // tri1 - 3, 13, 12, // tri2 - 3, 1, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&goa_1_v[147], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&goa_1_v[151], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 + ), + gsSPNTriangles_5b(2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_goa_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&goa_1_v[198], 7, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&goa_1_v[205], 20, 7), -gsSPNTrianglesInit_5b( - 13, // tri count - 0, 2, 7, // tri0 - 6, 8, 9, // tri1 - 0, 10, 11 // tri2 -), -gsSPNTriangles_5b( - 1, 12, 5, // tri0 - 1, 13, 14, // tri1 - 2, 16, 15, // tri2 - 5, 17, 18 // tri3 -), -gsSPNTriangles_5b( - 5, 19, 20, // tri0 - 2, 21, 22, // tri1 - 6, 0, 23, // tri2 - 1, 6, 24 // tri3 -), -gsSPNTriangles_5b( - 3, 5, 25, // tri0 - 4, 26, 2, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&goa_1_v[225], 10, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 0, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 5, 4, 8, // tri0 - 2, 6, 0, // tri1 - 1, 9, 2, // tri2 - 7, 4, 3 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&goa_1_v[198], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&goa_1_v[205], 20, 7), + gsSPNTrianglesInit_5b(13, // tri count + 0, 2, 7, // tri0 + 6, 8, 9, // tri1 + 0, 10, 11 // tri2 + ), + gsSPNTriangles_5b(1, 12, 5, // tri0 + 1, 13, 14, // tri1 + 2, 16, 15, // tri2 + 5, 17, 18 // tri3 + ), + gsSPNTriangles_5b(5, 19, 20, // tri0 + 2, 21, 22, // tri1 + 6, 0, 23, // tri2 + 1, 6, 24 // tri3 + ), + gsSPNTriangles_5b(3, 5, 25, // tri0 + 4, 26, 2, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&goa_1_v[225], 10, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 7 // tri2 + ), + gsSPNTriangles_5b(5, 4, 8, // tri0 + 2, 6, 0, // tri1 + 1, 9, 2, // tri2 + 7, 4, 3 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail1_goa_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&goa_1_v[235], 11, 0), -gsSPNTrianglesInit_5b( - 10, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 3, 2, 4 // tri2 -), -gsSPNTriangles_5b( - 5, 6, 7, // tri0 - 7, 1, 0, // tri1 - 5, 0, 8, // tri2 - 6, 5, 9 // tri3 -), -gsSPNTriangles_5b( - 0, 5, 7, // tri0 - 8, 9, 5, // tri1 - 3, 10, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&goa_1_v[235], 11, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 7, 1, 0, // tri1 + 5, 0, 8, // tri2 + 6, 5, 9 // tri3 + ), + gsSPNTriangles_5b(0, 5, 7, // tri0 + 8, 9, 5, // tri1 + 3, 10, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_goa_model[] = { -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&goa_1_v[286], 5, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&goa_1_v[291], 16, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 2, 3, 5, // tri0 - 0, 2, 6, // tri1 - 3, 8, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 10, 9, // tri0 - 4, 1, 11, // tri1 - 2, 12, 13, // tri2 - 3, 4, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 15, 16, 17, // tri0 - 17, 18, 19, // tri1 - 15, 20, 16 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&goa_1_v[286], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&goa_1_v[291], 16, 5), + gsSPNTrianglesInit_5b(7, // tri count + 2, 3, 5, // tri0 + 0, 2, 6, // tri1 + 3, 8, 7 // tri2 + ), + gsSPNTriangles_5b(1, 10, 9, // tri0 + 4, 1, 11, // tri1 + 2, 12, 13, // tri2 + 3, 4, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 17, 18, 19, // tri1 + 15, 20, 16 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_goa_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&goa_1_v[307], 6, 0), -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&goa_1_v[313], 13, 6), -gsSPNTrianglesInit_5b( - 9, // tri count - 0, 6, 7, // tri0 - 2, 5, 8, // tri1 - 5, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 5, 1, 11, // tri0 - 0, 3, 12, // tri1 - 4, 2, 13, // tri2 - 3, 4, 14 // tri3 -), -gsSPNTriangles_5b( - 3, 15, 16, // tri0 - 2, 17, 18, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&goa_1_v[307], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&goa_1_v[313], 13, 6), + gsSPNTrianglesInit_5b(9, // tri count + 0, 6, 7, // tri0 + 2, 5, 8, // tri1 + 5, 9, 10 // tri2 + ), + gsSPNTriangles_5b(5, 1, 11, // tri0 + 0, 3, 12, // tri1 + 4, 2, 13, // tri2 + 3, 4, 14 // tri3 + ), + gsSPNTriangles_5b(3, 15, 16, // tri0 + 2, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_goa_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&goa_1_v[246], 5, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&goa_1_v[251], 16, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 2, 5, // tri0 - 2, 0, 6, // tri1 - 3, 8, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 10, 9, // tri0 - 1, 4, 11, // tri1 - 2, 12, 13, // tri2 - 4, 3, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 15, 16, 17, // tri0 - 18, 19, 15, // tri1 - 16, 20, 17 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&goa_1_v[246], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&goa_1_v[251], 16, 5), + gsSPNTrianglesInit_5b(7, // tri count + 3, 2, 5, // tri0 + 2, 0, 6, // tri1 + 3, 8, 7 // tri2 + ), + gsSPNTriangles_5b(1, 10, 9, // tri0 + 1, 4, 11, // tri1 + 2, 12, 13, // tri2 + 4, 3, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 15, // tri1 + 16, 20, 17 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_goa_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&goa_1_v[267], 6, 0), -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&goa_1_v[273], 13, 6), -gsSPNTrianglesInit_5b( - 9, // tri count - 4, 6, 7, // tri0 - 3, 1, 8, // tri1 - 3, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 5, 3, 11, // tri0 - 2, 4, 12, // tri1 - 1, 0, 13, // tri2 - 0, 2, 14 // tri3 -), -gsSPNTriangles_5b( - 2, 15, 16, // tri0 - 1, 17, 18, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&goa_1_v[267], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&goa_1_v[273], 13, 6), + gsSPNTrianglesInit_5b(9, // tri count + 4, 6, 7, // tri0 + 3, 1, 8, // tri1 + 3, 9, 10 // tri2 + ), + gsSPNTriangles_5b(5, 3, 11, // tri0 + 2, 4, 12, // tri1 + 1, 0, 13, // tri2 + 0, 2, 14 // tri3 + ), + gsSPNTriangles_5b(2, 15, 16, // tri0 + 1, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx base_goa_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&goa_1_v[326], 30, 0), -gsSPNTrianglesInit_5b( - 3, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 2, 1, 6 // tri2 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), -gsSPNTrianglesInit_5b( - 14, // tri count - 7, 8, 9, // tri0 - 10, 11, 12, // tri1 - 13, 14, 15 // tri2 -), -gsSPNTriangles_5b( - 16, 17, 18, // tri0 - 9, 19, 7, // tri1 - 20, 11, 21, // tri2 - 20, 21, 17 // tri3 -), -gsSPNTriangles_5b( - 12, 15, 14, // tri0 - 11, 20, 12, // tri1 - 8, 7, 13, // tri2 - 13, 15, 8 // tri3 -), -gsSPNTriangles_5b( - 21, 18, 17, // tri0 - 14, 10, 12, // tri1 - 18, 22, 16, // tri2 - 0, 0, 0 // tri3 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 3, // tri count - 23, 24, 25, // tri0 - 26, 27, 28, // tri1 - 29, 24, 23 // tri2 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&goa_1_v[326], 30, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 1, 6 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPNTrianglesInit_5b(14, // tri count + 7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 13, 14, 15 // tri2 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 9, 19, 7, // tri1 + 20, 11, 21, // tri2 + 20, 21, 17 // tri3 + ), + gsSPNTriangles_5b(12, 15, 14, // tri0 + 11, 20, 12, // tri1 + 8, 7, 13, // tri2 + 13, 15, 8 // tri3 + ), + gsSPNTriangles_5b(21, 18, 17, // tri0 + 14, 10, 12, // tri1 + 18, 22, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 23, 24, 25, // tri0 + 26, 27, 28, // tri1 + 29, 24, 23 // tri2 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_goa_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -702,4 +624,4 @@ static cKF_Joint_R_c cKF_je_r_goa_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_goa_1 = { 26, 13, cKF_je_r_goa_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_goa_1 = { 26, 13, cKF_je_r_goa_1_tbl }; diff --git a/src/data/npc/model/mdl/gor_1.c b/src/data/npc/model/mdl/gor_1.c index e82cf014..5ddf32c4 100644 --- a/src/data/npc/model/mdl/gor_1.c +++ b/src/data/npc/model/mdl/gor_1.c @@ -6,803 +6,705 @@ static Vtx gor_1_v[] = { }; static Gfx head_gor_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&gor_1_v[32], 10, 0), -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&gor_1_v[42], 21, 10), -gsSPNTrianglesInit_5b( - 13, // tri count - 9, 10, 11, // tri0 - 0, 7, 12, // tri1 - 0, 13, 14 // tri2 -), -gsSPNTriangles_5b( - 7, 15, 16, // tri0 - 0, 17, 18, // tri1 - 8, 19, 7, // tri2 - 0, 20, 9 // tri3 -), -gsSPNTriangles_5b( - 4, 21, 22, // tri0 - 1, 9, 23, // tri1 - 1, 24, 25, // tri2 - 8, 4, 26 // tri3 -), -gsSPNTriangles_5b( - 8, 27, 28, // tri0 - 9, 29, 30, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&gor_1_v[63], 13, 10), -gsSPNTrianglesInit_5b( - 3, // tri count - 9, 10, 11, // tri0 - 8, 12, 13, // tri1 - 8, 14, 15 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 252, 124), -gsSPNTrianglesInit_5b( - 5, // tri count - 5, 16, 17, // tri0 - 5, 2, 18, // tri1 - 6, 19, 20 // tri2 -), -gsSPNTriangles_5b( - 3, 6, 21, // tri0 - 6, 5, 22, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&gor_1_v[76], 21, 0), -gsSPNTrianglesInit_5b( - 25, // tri count - 0, 1, 2, // tri0 - 2, 3, 4, // tri1 - 2, 5, 3 // tri2 -), -gsSPNTriangles_5b( - 5, 6, 3, // tri0 - 6, 7, 3, // tri1 - 8, 5, 2, // tri2 - 6, 5, 8 // tri3 -), -gsSPNTriangles_5b( - 9, 7, 6, // tri0 - 2, 4, 0, // tri1 - 6, 10, 9, // tri2 - 9, 10, 11 // tri3 -), -gsSPNTriangles_5b( - 2, 1, 8, // tri0 - 1, 12, 13, // tri1 - 0, 14, 15, // tri2 - 16, 17, 10 // tri3 -), -gsSPNTriangles_5b( - 15, 18, 12, // tri0 - 15, 1, 0, // tri1 - 10, 8, 16, // tri2 - 13, 8, 1 // tri3 -), -gsSPNTriangles_5b( - 13, 16, 8, // tri0 - 11, 10, 17, // tri1 - 8, 10, 6, // tri2 - 11, 19, 9 // tri3 -), -gsSPNTriangles_5b( - 17, 20, 11, // tri0 - 12, 1, 15, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&gor_1_v[97], 22, 0), -gsSPNTrianglesInit_5b( - 28, // tri count - 0, 1, 2, // tri0 - 0, 3, 4, // tri1 - 5, 0, 4 // tri2 -), -gsSPNTriangles_5b( - 6, 7, 8, // tri0 - 9, 1, 0, // tri1 - 2, 1, 10, // tri2 - 11, 12, 13 // tri3 -), -gsSPNTriangles_5b( - 2, 3, 0, // tri0 - 14, 7, 15, // tri1 - 15, 16, 14, // tri2 - 8, 7, 17 // tri3 -), -gsSPNTriangles_5b( - 18, 13, 19, // tri0 - 7, 14, 10, // tri1 - 18, 14, 20, // tri2 - 20, 11, 18 // tri3 -), -gsSPNTriangles_5b( - 14, 16, 20, // tri0 - 18, 19, 10, // tri1 - 9, 8, 17, // tri2 - 0, 5, 9 // tri3 -), -gsSPNTriangles_5b( - 7, 6, 15, // tri0 - 10, 1, 9, // tri1 - 19, 13, 2, // tri2 - 9, 17, 10 // tri3 -), -gsSPNTriangles_5b( - 10, 17, 7, // tri0 - 10, 19, 2, // tri1 - 10, 14, 18, // tri2 - 13, 18, 11 // tri3 -), -gsSPNTriangles_5b( - 8, 21, 6, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&gor_1_v[119], 29, 0), -gsSPNTrianglesInit_5b( - 28, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 9, 6, 10, // tri0 - 3, 5, 11, // tri1 - 2, 12, 13, // tri2 - 14, 15, 16 // tri3 -), -gsSPNTriangles_5b( - 17, 16, 10, // tri0 - 18, 19, 9, // tri1 - 17, 20, 14, // tri2 - 16, 17, 14 // tri3 -), -gsSPNTriangles_5b( - 18, 9, 16, // tri0 - 0, 10, 8, // tri1 - 10, 16, 9, // tri2 - 10, 0, 17 // tri3 -), -gsSPNTriangles_5b( - 6, 9, 11, // tri0 - 20, 17, 21, // tri1 - 5, 7, 6, // tri2 - 16, 15, 18 // tri3 -), -gsSPNTriangles_5b( - 21, 17, 0, // tri0 - 8, 10, 6, // tri1 - 8, 1, 0, // tri2 - 21, 2, 13 // tri3 -), -gsSPNTriangles_5b( - 13, 20, 21, // tri0 - 0, 2, 21, // tri1 - 11, 9, 19, // tri2 - 11, 19, 3 // tri3 -), -gsSPNTriangles_5b( - 11, 5, 6, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), -gsDPSetTileSize(0, 0, 0, 60, 60), -gsSPNTrianglesInit_5b( - 5, // tri count - 22, 23, 24, // tri0 - 25, 26, 23, // tri1 - 25, 23, 22 // tri2 -), -gsSPNTriangles_5b( - 27, 26, 25, // tri0 - 27, 25, 28, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&gor_1_v[148], 20, 0), -gsSPNTrianglesInit_5b( - 12, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 0, 2 // tri2 -), -gsSPNTriangles_5b( - 7, 8, 6, // tri0 - 5, 9, 3, // tri1 - 2, 7, 6, // tri2 - 10, 11, 12 // tri3 -), -gsSPNTriangles_5b( - 13, 14, 15, // tri0 - 10, 12, 16, // tri1 - 16, 17, 18, // tri2 - 15, 19, 13 // tri3 -), -gsSPNTriangles_5b( - 16, 18, 10, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&gor_1_v[32], 10, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&gor_1_v[42], 21, 10), + gsSPNTrianglesInit_5b(13, // tri count + 9, 10, 11, // tri0 + 0, 7, 12, // tri1 + 0, 13, 14 // tri2 + ), + gsSPNTriangles_5b(7, 15, 16, // tri0 + 0, 17, 18, // tri1 + 8, 19, 7, // tri2 + 0, 20, 9 // tri3 + ), + gsSPNTriangles_5b(4, 21, 22, // tri0 + 1, 9, 23, // tri1 + 1, 24, 25, // tri2 + 8, 4, 26 // tri3 + ), + gsSPNTriangles_5b(8, 27, 28, // tri0 + 9, 29, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&gor_1_v[63], 13, 10), + gsSPNTrianglesInit_5b(3, // tri count + 9, 10, 11, // tri0 + 8, 12, 13, // tri1 + 8, 14, 15 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsSPNTrianglesInit_5b(5, // tri count + 5, 16, 17, // tri0 + 5, 2, 18, // tri1 + 6, 19, 20 // tri2 + ), + gsSPNTriangles_5b(3, 6, 21, // tri0 + 6, 5, 22, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&gor_1_v[76], 21, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 2, 5, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 3, // tri0 + 6, 7, 3, // tri1 + 8, 5, 2, // tri2 + 6, 5, 8 // tri3 + ), + gsSPNTriangles_5b(9, 7, 6, // tri0 + 2, 4, 0, // tri1 + 6, 10, 9, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b(2, 1, 8, // tri0 + 1, 12, 13, // tri1 + 0, 14, 15, // tri2 + 16, 17, 10 // tri3 + ), + gsSPNTriangles_5b(15, 18, 12, // tri0 + 15, 1, 0, // tri1 + 10, 8, 16, // tri2 + 13, 8, 1 // tri3 + ), + gsSPNTriangles_5b(13, 16, 8, // tri0 + 11, 10, 17, // tri1 + 8, 10, 6, // tri2 + 11, 19, 9 // tri3 + ), + gsSPNTriangles_5b(17, 20, 11, // tri0 + 12, 1, 15, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&gor_1_v[97], 22, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 5, 0, 4 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 9, 1, 0, // tri1 + 2, 1, 10, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(2, 3, 0, // tri0 + 14, 7, 15, // tri1 + 15, 16, 14, // tri2 + 8, 7, 17 // tri3 + ), + gsSPNTriangles_5b(18, 13, 19, // tri0 + 7, 14, 10, // tri1 + 18, 14, 20, // tri2 + 20, 11, 18 // tri3 + ), + gsSPNTriangles_5b(14, 16, 20, // tri0 + 18, 19, 10, // tri1 + 9, 8, 17, // tri2 + 0, 5, 9 // tri3 + ), + gsSPNTriangles_5b(7, 6, 15, // tri0 + 10, 1, 9, // tri1 + 19, 13, 2, // tri2 + 9, 17, 10 // tri3 + ), + gsSPNTriangles_5b(10, 17, 7, // tri0 + 10, 19, 2, // tri1 + 10, 14, 18, // tri2 + 13, 18, 11 // tri3 + ), + gsSPNTriangles_5b(8, 21, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&gor_1_v[119], 29, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 6, 10, // tri0 + 3, 5, 11, // tri1 + 2, 12, 13, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(17, 16, 10, // tri0 + 18, 19, 9, // tri1 + 17, 20, 14, // tri2 + 16, 17, 14 // tri3 + ), + gsSPNTriangles_5b(18, 9, 16, // tri0 + 0, 10, 8, // tri1 + 10, 16, 9, // tri2 + 10, 0, 17 // tri3 + ), + gsSPNTriangles_5b(6, 9, 11, // tri0 + 20, 17, 21, // tri1 + 5, 7, 6, // tri2 + 16, 15, 18 // tri3 + ), + gsSPNTriangles_5b(21, 17, 0, // tri0 + 8, 10, 6, // tri1 + 8, 1, 0, // tri2 + 21, 2, 13 // tri3 + ), + gsSPNTriangles_5b(13, 20, 21, // tri0 + 0, 2, 21, // tri1 + 11, 9, 19, // tri2 + 11, 19, 3 // tri3 + ), + gsSPNTriangles_5b(11, 5, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 60, 60), + gsSPNTrianglesInit_5b(5, // tri count + 22, 23, 24, // tri0 + 25, 26, 23, // tri1 + 25, 23, 22 // tri2 + ), + gsSPNTriangles_5b(27, 26, 25, // tri0 + 27, 25, 28, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&gor_1_v[148], 20, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 0, 2 // tri2 + ), + gsSPNTriangles_5b(7, 8, 6, // tri0 + 5, 9, 3, // tri1 + 2, 7, 6, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 10, 12, 16, // tri1 + 16, 17, 18, // tri2 + 15, 19, 13 // tri3 + ), + gsSPNTriangles_5b(16, 18, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx mouth_gor_model[] = { -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&gor_1_v[0], 7, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), -gsDPSetTileSize(0, 0, 0, 60, 60), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&gor_1_v[7], 18, 7), -gsSPNTrianglesInit_5b( - 2, // tri count - 3, 7, 8, // tri0 - 3, 9, 0, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), -gsDPSetTileSize(0, 0, 0, 60, 60), -gsSPNTrianglesInit_5b( - 7, // tri count - 2, 4, 10, // tri0 - 5, 11, 12, // tri1 - 4, 6, 13 // tri2 -), -gsSPNTriangles_5b( - 4, 14, 15, // tri0 - 5, 1, 16, // tri1 - 6, 5, 17, // tri2 - 6, 18, 19 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), -gsDPSetTileSize(0, 0, 0, 60, 60), -gsSPNTrianglesInit_5b( - 3, // tri count - 20, 21, 22, // tri0 - 22, 23, 24, // tri1 - 22, 24, 20 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), -gsDPSetTileSize(0, 0, 0, 60, 60), -gsSPVertex(&gor_1_v[25], 7, 0), -gsSPNTrianglesInit_5b( - 5, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 5, 0 // tri2 -), -gsSPNTriangles_5b( - 6, 3, 5, // tri0 - 0, 2, 6, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&gor_1_v[0], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 60, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&gor_1_v[7], 18, 7), + gsSPNTrianglesInit_5b(2, // tri count + 3, 7, 8, // tri0 + 3, 9, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 60, 60), + gsSPNTrianglesInit_5b(7, // tri count + 2, 4, 10, // tri0 + 5, 11, 12, // tri1 + 4, 6, 13 // tri2 + ), + gsSPNTriangles_5b(4, 14, 15, // tri0 + 5, 1, 16, // tri1 + 6, 5, 17, // tri2 + 6, 18, 19 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 60, 60), + gsSPNTrianglesInit_5b(3, // tri count + 20, 21, 22, // tri0 + 22, 23, 24, // tri1 + 22, 24, 20 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 60, 60), + gsSPVertex(&gor_1_v[25], 7, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 5, 0 // tri2 + ), + gsSPNTriangles_5b(6, 3, 5, // tri0 + 0, 2, 6, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_gor_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&gor_1_v[214], 4, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 60), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&gor_1_v[218], 21, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 5, 4, // tri0 - 0, 7, 6, // tri1 - 1, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 1, 10, // tri0 - 0, 2, 11, // tri1 - 3, 0, 12, // tri2 - 1, 3, 13 // tri3 -), -gsSPNTriangles_5b( - 0, 14, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 8, // tri count - 16, 17, 18, // tri0 - 18, 19, 20, // tri1 - 20, 19, 21 // tri2 -), -gsSPNTriangles_5b( - 19, 22, 23, // tri0 - 24, 18, 17, // tri1 - 24, 22, 18, // tri2 - 18, 22, 19 // tri3 -), -gsSPNTriangles_5b( - 23, 22, 24, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&gor_1_v[214], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&gor_1_v[218], 21, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 5, 4, // tri0 + 0, 7, 6, // tri1 + 1, 9, 8 // tri2 + ), + gsSPNTriangles_5b(2, 1, 10, // tri0 + 0, 2, 11, // tri1 + 3, 0, 12, // tri2 + 1, 3, 13 // tri3 + ), + gsSPNTriangles_5b(0, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(8, // tri count + 16, 17, 18, // tri0 + 18, 19, 20, // tri1 + 20, 19, 21 // tri2 + ), + gsSPNTriangles_5b(19, 22, 23, // tri0 + 24, 18, 17, // tri1 + 24, 22, 18, // tri2 + 18, 22, 19 // tri3 + ), + gsSPNTriangles_5b(23, 22, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_gor_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&gor_1_v[239], 5, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 60), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&gor_1_v[244], 16, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 4, 6, 5, // tri0 - 0, 8, 7, // tri1 - 4, 0, 9 // tri2 -), -gsSPNTriangles_5b( - 1, 10, 11, // tri0 - 1, 12, 0, // tri1 - 4, 13, 3, // tri2 - 2, 3, 14 // tri3 -), -gsSPNTriangles_5b( - 3, 16, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 20, 18, 17, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&gor_1_v[239], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&gor_1_v[244], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 4, 6, 5, // tri0 + 0, 8, 7, // tri1 + 4, 0, 9 // tri2 + ), + gsSPNTriangles_5b(1, 10, 11, // tri0 + 1, 12, 0, // tri1 + 4, 13, 3, // tri2 + 2, 3, 14 // tri3 + ), + gsSPNTriangles_5b(3, 16, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 18, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_gor_model[] = { -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&gor_1_v[168], 4, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 60), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&gor_1_v[172], 21, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 1, 5, 4, // tri0 - 3, 7, 6, // tri1 - 0, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 0, 1, 10, // tri0 - 3, 11, 12, // tri1 - 3, 2, 13, // tri2 - 2, 0, 14 // tri3 -), -gsSPNTriangles_5b( - 1, 3, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 8, // tri count - 16, 17, 18, // tri0 - 18, 19, 20, // tri1 - 21, 19, 18 // tri2 -), -gsSPNTriangles_5b( - 21, 22, 23, // tri0 - 17, 16, 24, // tri1 - 16, 22, 24, // tri2 - 23, 22, 16 // tri3 -), -gsSPNTriangles_5b( - 24, 22, 21, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&gor_1_v[168], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&gor_1_v[172], 21, 4), + gsSPNTrianglesInit_5b(8, // tri count + 1, 5, 4, // tri0 + 3, 7, 6, // tri1 + 0, 9, 8 // tri2 + ), + gsSPNTriangles_5b(0, 1, 10, // tri0 + 3, 11, 12, // tri1 + 3, 2, 13, // tri2 + 2, 0, 14 // tri3 + ), + gsSPNTriangles_5b(1, 3, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(8, // tri count + 16, 17, 18, // tri0 + 18, 19, 20, // tri1 + 21, 19, 18 // tri2 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 17, 16, 24, // tri1 + 16, 22, 24, // tri2 + 23, 22, 16 // tri3 + ), + gsSPNTriangles_5b(24, 22, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_gor_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&gor_1_v[193], 5, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 60), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&gor_1_v[198], 16, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 4, 6, 5, // tri0 - 2, 8, 7, // tri1 - 2, 4, 9 // tri2 -), -gsSPNTriangles_5b( - 3, 10, 11, // tri0 - 2, 12, 3, // tri1 - 0, 13, 4, // tri2 - 1, 3, 14 // tri3 -), -gsSPNTriangles_5b( - 1, 16, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 19, 18, 20, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&gor_1_v[193], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&gor_1_v[198], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 4, 6, 5, // tri0 + 2, 8, 7, // tri1 + 2, 4, 9 // tri2 + ), + gsSPNTriangles_5b(3, 10, 11, // tri0 + 2, 12, 3, // tri1 + 0, 13, 4, // tri2 + 1, 3, 14 // tri3 + ), + gsSPNTriangles_5b(1, 16, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 19, 18, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx chest_gor_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&gor_1_v[260], 10, 0), -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&gor_1_v[270], 8, 10), -gsSPNTrianglesInit_5b( - 6, // tri count - 2, 10, 11, // tri0 - 2, 12, 13, // tri1 - 1, 7, 14 // tri2 -), -gsSPNTriangles_5b( - 9, 0, 15, // tri0 - 2, 1, 16, // tri1 - 0, 2, 17, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 252, 124), -gsSPVertex(&gor_1_v[278], 17, 10), -gsSPNTrianglesInit_5b( - 10, // tri count - 3, 4, 10, // tri0 - 4, 12, 11, // tri1 - 3, 13, 14 // tri2 -), -gsSPNTriangles_5b( - 4, 15, 16, // tri0 - 4, 8, 17, // tri1 - 6, 18, 19, // tri2 - 6, 3, 20 // tri3 -), -gsSPNTriangles_5b( - 5, 21, 22, // tri0 - 8, 23, 24, // tri1 - 8, 25, 26, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&gor_1_v[295], 19, 0), -gsSPNTrianglesInit_5b( - 13, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 7, 6, 9, // tri0 - 10, 11, 12, // tri1 - 9, 5, 4, // tri2 - 4, 7, 9 // tri3 -), -gsSPNTriangles_5b( - 8, 13, 6, // tri0 - 5, 14, 3, // tri1 - 2, 15, 16, // tri2 - 12, 17, 18 // tri3 -), -gsSPNTriangles_5b( - 2, 16, 0, // tri0 - 18, 10, 12, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&gor_1_v[260], 10, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&gor_1_v[270], 8, 10), + gsSPNTrianglesInit_5b(6, // tri count + 2, 10, 11, // tri0 + 2, 12, 13, // tri1 + 1, 7, 14 // tri2 + ), + gsSPNTriangles_5b(9, 0, 15, // tri0 + 2, 1, 16, // tri1 + 0, 2, 17, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsSPVertex(&gor_1_v[278], 17, 10), + gsSPNTrianglesInit_5b(10, // tri count + 3, 4, 10, // tri0 + 4, 12, 11, // tri1 + 3, 13, 14 // tri2 + ), + gsSPNTriangles_5b(4, 15, 16, // tri0 + 4, 8, 17, // tri1 + 6, 18, 19, // tri2 + 6, 3, 20 // tri3 + ), + gsSPNTriangles_5b(5, 21, 22, // tri0 + 8, 23, 24, // tri1 + 8, 25, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&gor_1_v[295], 19, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(7, 6, 9, // tri0 + 10, 11, 12, // tri1 + 9, 5, 4, // tri2 + 4, 7, 9 // tri3 + ), + gsSPNTriangles_5b(8, 13, 6, // tri0 + 5, 14, 3, // tri1 + 2, 15, 16, // tri2 + 12, 17, 18 // tri3 + ), + gsSPNTriangles_5b(2, 16, 0, // tri0 + 18, 10, 12, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_gor_model[] = { -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&gor_1_v[359], 4, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&gor_1_v[363], 18, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 3, 4, // tri0 - 1, 5, 6, // tri1 - 0, 2, 7 // tri2 -), -gsSPNTriangles_5b( - 2, 8, 9, // tri0 - 1, 10, 3, // tri1 - 1, 0, 11, // tri2 - 1, 13, 12 // tri3 -), -gsSPNTriangles_5b( - 2, 15, 14, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 6, // tri count - 16, 17, 18, // tri0 - 19, 17, 16, // tri1 - 20, 21, 18 // tri2 -), -gsSPNTriangles_5b( - 18, 17, 19, // tri0 - 16, 20, 19, // tri1 - 19, 20, 18, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&gor_1_v[359], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&gor_1_v[363], 18, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 3, 4, // tri0 + 1, 5, 6, // tri1 + 0, 2, 7 // tri2 + ), + gsSPNTriangles_5b(2, 8, 9, // tri0 + 1, 10, 3, // tri1 + 1, 0, 11, // tri2 + 1, 13, 12 // tri3 + ), + gsSPNTriangles_5b(2, 15, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(6, // tri count + 16, 17, 18, // tri0 + 19, 17, 16, // tri1 + 20, 21, 18 // tri2 + ), + gsSPNTriangles_5b(18, 17, 19, // tri0 + 16, 20, 19, // tri1 + 19, 20, 18, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_gor_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&gor_1_v[381], 9, 0), -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 60), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&gor_1_v[390], 14, 9), -gsSPNTrianglesInit_5b( - 2, // tri count - 5, 9, 10, // tri0 - 5, 12, 11, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 4, // tri count - 0, 1, 13, // tri0 - 1, 3, 14, // tri1 - 1, 15, 16 // tri2 -), -gsSPNTriangles_5b( - 6, 0, 17, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), -gsDPSetTileSize(0, 0, 0, 60, 60), -gsSPNTrianglesInit_5b( - 4, // tri count - 8, 18, 4, // tri0 - 4, 19, 20, // tri1 - 2, 4, 21 // tri2 -), -gsSPNTriangles_5b( - 7, 22, 8, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&gor_1_v[381], 9, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&gor_1_v[390], 14, 9), + gsSPNTrianglesInit_5b(2, // tri count + 5, 9, 10, // tri0 + 5, 12, 11, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 13, // tri0 + 1, 3, 14, // tri1 + 1, 15, 16 // tri2 + ), + gsSPNTriangles_5b(6, 0, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 60, 60), + gsSPNTrianglesInit_5b(4, // tri count + 8, 18, 4, // tri0 + 4, 19, 20, // tri1 + 2, 4, 21 // tri2 + ), + gsSPNTriangles_5b(7, 22, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_gor_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&gor_1_v[314], 4, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&gor_1_v[318], 18, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 3, 2, 4, // tri0 - 0, 5, 6, // tri1 - 2, 1, 7 // tri2 -), -gsSPNTriangles_5b( - 2, 8, 9, // tri0 - 3, 10, 0, // tri1 - 1, 0, 11, // tri2 - 0, 13, 12 // tri3 -), -gsSPNTriangles_5b( - 2, 15, 14, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 6, // tri count - 16, 17, 18, // tri0 - 18, 17, 19, // tri1 - 16, 20, 21 // tri2 -), -gsSPNTriangles_5b( - 19, 17, 16, // tri0 - 19, 21, 18, // tri1 - 16, 21, 19, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&gor_1_v[314], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&gor_1_v[318], 18, 4), + gsSPNTrianglesInit_5b(8, // tri count + 3, 2, 4, // tri0 + 0, 5, 6, // tri1 + 2, 1, 7 // tri2 + ), + gsSPNTriangles_5b(2, 8, 9, // tri0 + 3, 10, 0, // tri1 + 1, 0, 11, // tri2 + 0, 13, 12 // tri3 + ), + gsSPNTriangles_5b(2, 15, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(6, // tri count + 16, 17, 18, // tri0 + 18, 17, 19, // tri1 + 16, 20, 21 // tri2 + ), + gsSPNTriangles_5b(19, 17, 16, // tri0 + 19, 21, 18, // tri1 + 16, 21, 19, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_gor_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&gor_1_v[336], 9, 0), -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 60), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&gor_1_v[345], 14, 9), -gsSPNTrianglesInit_5b( - 2, // tri count - 6, 10, 9, // tri0 - 6, 11, 12, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 4, // tri count - 1, 13, 14, // tri0 - 0, 4, 15, // tri1 - 1, 0, 16 // tri2 -), -gsSPNTriangles_5b( - 8, 1, 17, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), -gsDPSetTileSize(0, 0, 0, 60, 60), -gsSPNTrianglesInit_5b( - 4, // tri count - 3, 18, 19, // tri0 - 5, 7, 20, // tri1 - 3, 2, 21 // tri2 -), -gsSPNTriangles_5b( - 3, 22, 7, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&gor_1_v[336], 9, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&gor_1_v[345], 14, 9), + gsSPNTrianglesInit_5b(2, // tri count + 6, 10, 9, // tri0 + 6, 11, 12, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 1, 13, 14, // tri0 + 0, 4, 15, // tri1 + 1, 0, 16 // tri2 + ), + gsSPNTriangles_5b(8, 1, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 60, 60), + gsSPNTrianglesInit_5b(4, // tri count + 3, 18, 19, // tri0 + 5, 7, 20, // tri1 + 3, 2, 21 // tri2 + ), + gsSPNTriangles_5b(3, 22, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx base_gor_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&gor_1_v[404], 25, 0), -gsSPNTrianglesInit_5b( - 11, // tri count - 0, 1, 2, // tri0 - 2, 3, 4, // tri1 - 2, 1, 3 // tri2 -), -gsSPNTriangles_5b( - 1, 5, 6, // tri0 - 1, 6, 3, // tri1 - 7, 4, 8, // tri2 - 9, 10, 11 // tri3 -), -gsSPNTriangles_5b( - 2, 9, 0, // tri0 - 8, 12, 7, // tri1 - 11, 0, 9, // tri2 - 4, 7, 2 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), -gsDPSetTileSize(0, 0, 0, 60, 60), -gsSPNTrianglesInit_5b( - 8, // tri count - 13, 14, 15, // tri0 - 13, 15, 16, // tri1 - 17, 14, 13 // tri2 -), -gsSPNTriangles_5b( - 13, 18, 17, // tri0 - 19, 20, 16, // tri1 - 15, 14, 21, // tri2 - 16, 15, 19 // tri3 -), -gsSPNTriangles_5b( - 22, 23, 24, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&gor_1_v[404], 25, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 2, 1, 3 // tri2 + ), + gsSPNTriangles_5b(1, 5, 6, // tri0 + 1, 6, 3, // tri1 + 7, 4, 8, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b(2, 9, 0, // tri0 + 8, 12, 7, // tri1 + 11, 0, 9, // tri2 + 4, 7, 2 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 60, 60), + gsSPNTrianglesInit_5b(8, // tri count + 13, 14, 15, // tri0 + 13, 15, 16, // tri1 + 17, 14, 13 // tri2 + ), + gsSPNTriangles_5b(13, 18, 17, // tri0 + 19, 20, 16, // tri1 + 15, 14, 21, // tri2 + 16, 15, 19 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_gor_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -834,4 +736,4 @@ static cKF_Joint_R_c cKF_je_r_gor_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_gor_1 = { 26, 12, cKF_je_r_gor_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_gor_1 = { 26, 12, cKF_je_r_gor_1_tbl }; diff --git a/src/data/npc/model/mdl/grf_1.c b/src/data/npc/model/mdl/grf_1.c index 362e1ce2..be9e7c67 100644 --- a/src/data/npc/model/mdl/grf_1.c +++ b/src/data/npc/model/mdl/grf_1.c @@ -6,820 +6,720 @@ static Vtx grf_1_v[] = { }; static Gfx head_grf_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&grf_1_v[32], 6, 0), -gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&grf_1_v[38], 20, 6), -gsSPNTrianglesInit_5b( - 10, // tri count - 1, 2, 6, // tri0 - 3, 5, 7, // tri1 - 5, 0, 8 // tri2 -), -gsSPNTriangles_5b( - 0, 10, 9, // tri0 - 5, 11, 12, // tri1 - 2, 4, 13, // tri2 - 1, 14, 15 // tri3 -), -gsSPNTriangles_5b( - 0, 16, 17, // tri0 - 0, 1, 18, // tri1 - 2, 19, 20, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 3, // tri count - 21, 22, 23, // tri0 - 21, 24, 22, // tri1 - 25, 22, 24 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&grf_1_v[58], 10, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 2 // tri2 -), -gsSPNTriangles_5b( - 2, 1, 6, // tri0 - 5, 4, 8, // tri1 - 5, 9, 3, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&grf_1_v[68], 30, 0), -gsSPNTrianglesInit_5b( - 22, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 1, 9, 2, // tri0 - 8, 10, 6, // tri1 - 7, 11, 8, // tri2 - 4, 12, 13 // tri3 -), -gsSPNTriangles_5b( - 4, 13, 14, // tri0 - 0, 2, 15, // tri1 - 16, 13, 12, // tri2 - 17, 18, 19 // tri3 -), -gsSPNTriangles_5b( - 20, 21, 22, // tri0 - 12, 4, 3, // tri1 - 12, 3, 23, // tri2 - 18, 24, 19 // tri3 -), -gsSPNTriangles_5b( - 25, 5, 4, // tri0 - 4, 14, 25, // tri1 - 12, 26, 16, // tri2 - 20, 22, 27 // tri3 -), -gsSPNTriangles_5b( - 26, 12, 23, // tri0 - 1, 28, 9, // tri1 - 29, 6, 10, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&grf_1_v[98], 26, 0), -gsSPNTrianglesInit_5b( - 16, // tri count - 0, 1, 2, // tri0 - 2, 1, 3, // tri1 - 4, 5, 0 // tri2 -), -gsSPNTriangles_5b( - 6, 7, 3, // tri0 - 2, 3, 8, // tri1 - 3, 1, 9, // tri2 - 0, 10, 11 // tri3 -), -gsSPNTriangles_5b( - 12, 8, 3, // tri0 - 13, 0, 11, // tri1 - 12, 3, 7, // tri2 - 0, 13, 4 // tri3 -), -gsSPNTriangles_5b( - 5, 1, 0, // tri0 - 3, 9, 6, // tri1 - 10, 0, 2, // tri2 - 2, 14, 10 // tri3 -), -gsSPNTriangles_5b( - 8, 14, 2, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 12, // tri count - 15, 16, 17, // tri0 - 17, 18, 15, // tri1 - 17, 16, 19 // tri2 -), -gsSPNTriangles_5b( - 19, 20, 21, // tri0 - 21, 22, 18, // tri1 - 18, 19, 21, // tri2 - 21, 20, 22 // tri3 -), -gsSPNTriangles_5b( - 23, 19, 16, // tri0 - 24, 16, 15, // tri1 - 22, 20, 25, // tri2 - 20, 19, 23 // tri3 -), -gsSPNTriangles_5b( - 17, 19, 18, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&grf_1_v[124], 19, 0), -gsSPNTrianglesInit_5b( - 14, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 4, 7, 8, // tri0 - 2, 1, 3, // tri1 - 4, 6, 9, // tri2 - 8, 5, 4 // tri3 -), -gsSPNTriangles_5b( - 9, 7, 4, // tri0 - 6, 5, 8, // tri1 - 6, 8, 9, // tri2 - 3, 1, 10 // tri3 -), -gsSPNTriangles_5b( - 10, 11, 3, // tri0 - 3, 11, 0, // tri1 - 0, 10, 1, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 8, 15, GX_MIRROR, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 28), -gsSPNTrianglesInit_5b( - 5, // tri count - 12, 13, 14, // tri0 - 12, 15, 16, // tri1 - 14, 13, 17 // tri2 -), -gsSPNTriangles_5b( - 16, 13, 12, // tri0 - 17, 18, 14, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&grf_1_v[143], 21, 0), -gsSPNTrianglesInit_5b( - 20, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 9, 10, 5, // tri0 - 11, 9, 12, // tri1 - 12, 13, 11, // tri2 - 7, 6, 14 // tri3 -), -gsSPNTriangles_5b( - 13, 12, 15, // tri0 - 13, 15, 16, // tri1 - 3, 5, 17, // tri2 - 6, 15, 18 // tri3 -), -gsSPNTriangles_5b( - 1, 14, 6, // tri0 - 11, 19, 9, // tri1 - 8, 16, 15, // tri2 - 10, 9, 19 // tri3 -), -gsSPNTriangles_5b( - 1, 18, 20, // tri0 - 15, 6, 8, // tri1 - 5, 4, 9, // tri2 - 4, 12, 9 // tri3 -), -gsSPNTriangles_5b( - 18, 1, 6, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grf_1_v[32], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&grf_1_v[38], 20, 6), + gsSPNTrianglesInit_5b(10, // tri count + 1, 2, 6, // tri0 + 3, 5, 7, // tri1 + 5, 0, 8 // tri2 + ), + gsSPNTriangles_5b(0, 10, 9, // tri0 + 5, 11, 12, // tri1 + 2, 4, 13, // tri2 + 1, 14, 15 // tri3 + ), + gsSPNTriangles_5b(0, 16, 17, // tri0 + 0, 1, 18, // tri1 + 2, 19, 20, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 21, 22, 23, // tri0 + 21, 24, 22, // tri1 + 25, 22, 24 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&grf_1_v[58], 10, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 2 // tri2 + ), + gsSPNTriangles_5b(2, 1, 6, // tri0 + 5, 4, 8, // tri1 + 5, 9, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&grf_1_v[68], 30, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(1, 9, 2, // tri0 + 8, 10, 6, // tri1 + 7, 11, 8, // tri2 + 4, 12, 13 // tri3 + ), + gsSPNTriangles_5b(4, 13, 14, // tri0 + 0, 2, 15, // tri1 + 16, 13, 12, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(20, 21, 22, // tri0 + 12, 4, 3, // tri1 + 12, 3, 23, // tri2 + 18, 24, 19 // tri3 + ), + gsSPNTriangles_5b(25, 5, 4, // tri0 + 4, 14, 25, // tri1 + 12, 26, 16, // tri2 + 20, 22, 27 // tri3 + ), + gsSPNTriangles_5b(26, 12, 23, // tri0 + 1, 28, 9, // tri1 + 29, 6, 10, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&grf_1_v[98], 26, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 5, 0 // tri2 + ), + gsSPNTriangles_5b(6, 7, 3, // tri0 + 2, 3, 8, // tri1 + 3, 1, 9, // tri2 + 0, 10, 11 // tri3 + ), + gsSPNTriangles_5b(12, 8, 3, // tri0 + 13, 0, 11, // tri1 + 12, 3, 7, // tri2 + 0, 13, 4 // tri3 + ), + gsSPNTriangles_5b(5, 1, 0, // tri0 + 3, 9, 6, // tri1 + 10, 0, 2, // tri2 + 2, 14, 10 // tri3 + ), + gsSPNTriangles_5b(8, 14, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(12, // tri count + 15, 16, 17, // tri0 + 17, 18, 15, // tri1 + 17, 16, 19 // tri2 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 21, 22, 18, // tri1 + 18, 19, 21, // tri2 + 21, 20, 22 // tri3 + ), + gsSPNTriangles_5b(23, 19, 16, // tri0 + 24, 16, 15, // tri1 + 22, 20, 25, // tri2 + 20, 19, 23 // tri3 + ), + gsSPNTriangles_5b(17, 19, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&grf_1_v[124], 19, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 8, // tri0 + 2, 1, 3, // tri1 + 4, 6, 9, // tri2 + 8, 5, 4 // tri3 + ), + gsSPNTriangles_5b(9, 7, 4, // tri0 + 6, 5, 8, // tri1 + 6, 8, 9, // tri2 + 3, 1, 10 // tri3 + ), + gsSPNTriangles_5b(10, 11, 3, // tri0 + 3, 11, 0, // tri1 + 0, 10, 1, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 8, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 28), + gsSPNTrianglesInit_5b(5, // tri count + 12, 13, 14, // tri0 + 12, 15, 16, // tri1 + 14, 13, 17 // tri2 + ), + gsSPNTriangles_5b(16, 13, 12, // tri0 + 17, 18, 14, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&grf_1_v[143], 21, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 5, // tri0 + 11, 9, 12, // tri1 + 12, 13, 11, // tri2 + 7, 6, 14 // tri3 + ), + gsSPNTriangles_5b(13, 12, 15, // tri0 + 13, 15, 16, // tri1 + 3, 5, 17, // tri2 + 6, 15, 18 // tri3 + ), + gsSPNTriangles_5b(1, 14, 6, // tri0 + 11, 19, 9, // tri1 + 8, 16, 15, // tri2 + 10, 9, 19 // tri3 + ), + gsSPNTriangles_5b(1, 18, 20, // tri0 + 15, 6, 8, // tri1 + 5, 4, 9, // tri2 + 4, 12, 9 // tri3 + ), + gsSPNTriangles_5b(18, 1, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx mouth_grf_model[] = { -gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&grf_1_v[0], 7, 0), -gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&grf_1_v[7], 18, 7), -gsSPNTrianglesInit_5b( - 2, // tri count - 3, 7, 1, // tri0 - 1, 8, 9, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 5, 10, // tri0 - 6, 0, 11, // tri1 - 4, 6, 12 // tri2 -), -gsSPNTriangles_5b( - 5, 13, 14, // tri0 - 6, 15, 16, // tri1 - 2, 17, 18, // tri2 - 0, 19, 20 // tri3 -), -gsSPNTriangles_5b( - 5, 4, 21, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 1, // tri count - 22, 23, 24, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&grf_1_v[25], 7, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 2, // tri0 - 3, 2, 1, // tri1 - 2, 4, 0 // tri2 -), -gsSPNTriangles_5b( - 3, 5, 4, // tri0 - 1, 6, 3, // tri1 - 4, 2, 3, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grf_1_v[0], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&grf_1_v[7], 18, 7), + gsSPNTrianglesInit_5b(2, // tri count + 3, 7, 1, // tri0 + 1, 8, 9, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(8, // tri count + 2, 5, 10, // tri0 + 6, 0, 11, // tri1 + 4, 6, 12 // tri2 + ), + gsSPNTriangles_5b(5, 13, 14, // tri0 + 6, 15, 16, // tri1 + 2, 17, 18, // tri2 + 0, 19, 20 // tri3 + ), + gsSPNTriangles_5b(5, 4, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(1, // tri count + 22, 23, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&grf_1_v[25], 7, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 1, 6, 3, // tri1 + 4, 2, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_grf_model[] = { -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&grf_1_v[198], 4, 0), -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&grf_1_v[202], 16, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 4, 5, // tri0 - 3, 6, 7, // tri1 - 3, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 2, 0, 10, // tri0 - 0, 3, 11, // tri1 - 2, 12, 13, // tri2 - 1, 2, 14 // tri3 -), -gsSPNTriangles_5b( - 3, 1, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 16, 17, 18, // tri0 - 19, 18, 17, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grf_1_v[198], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&grf_1_v[202], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 3, 6, 7, // tri1 + 3, 8, 9 // tri2 + ), + gsSPNTriangles_5b(2, 0, 10, // tri0 + 0, 3, 11, // tri1 + 2, 12, 13, // tri2 + 1, 2, 14 // tri3 + ), + gsSPNTriangles_5b(3, 1, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 19, 18, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_grf_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&grf_1_v[218], 3, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&grf_1_v[221], 11, 3), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 3, // tri0 - 1, 5, 4, // tri1 - 2, 7, 6 // tri2 -), -gsSPNTriangles_5b( - 1, 2, 8, // tri0 - 2, 0, 9, // tri1 - 0, 10, 11, // tri2 - 1, 12, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grf_1_v[218], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&grf_1_v[221], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 3, // tri0 + 1, 5, 4, // tri1 + 2, 7, 6 // tri2 + ), + gsSPNTriangles_5b(1, 2, 8, // tri0 + 2, 0, 9, // tri1 + 0, 10, 11, // tri2 + 1, 12, 13 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_grf_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&grf_1_v[164], 4, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&grf_1_v[168], 16, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 4, 5, // tri0 - 3, 6, 7, // tri1 - 3, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 0, 2, 10, // tri0 - 3, 0, 11, // tri1 - 2, 12, 13, // tri2 - 2, 1, 14 // tri3 -), -gsSPNTriangles_5b( - 1, 3, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 16, 17, 18, // tri0 - 17, 16, 19, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grf_1_v[164], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&grf_1_v[168], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 3, 6, 7, // tri1 + 3, 8, 9 // tri2 + ), + gsSPNTriangles_5b(0, 2, 10, // tri0 + 3, 0, 11, // tri1 + 2, 12, 13, // tri2 + 2, 1, 14 // tri3 + ), + gsSPNTriangles_5b(1, 3, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_grf_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&grf_1_v[184], 3, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&grf_1_v[187], 11, 3), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 2, 3, // tri0 - 0, 5, 4, // tri1 - 1, 7, 6 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 8, // tri0 - 2, 1, 9, // tri1 - 2, 10, 11, // tri2 - 0, 12, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grf_1_v[184], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&grf_1_v[187], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 0, 2, 3, // tri0 + 0, 5, 4, // tri1 + 1, 7, 6 // tri2 + ), + gsSPNTriangles_5b(1, 0, 8, // tri0 + 2, 1, 9, // tri1 + 2, 10, 11, // tri2 + 0, 12, 13 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_grf_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&grf_1_v[232], 10, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&grf_1_v[242], 22, 10), -gsSPNTrianglesInit_5b( - 14, // tri count - 9, 10, 11, // tri0 - 9, 12, 13, // tri1 - 8, 0, 14 // tri2 -), -gsSPNTriangles_5b( - 9, 6, 15, // tri0 - 0, 7, 16, // tri1 - 8, 17, 18, // tri2 - 4, 8, 19 // tri3 -), -gsSPNTriangles_5b( - 3, 20, 21, // tri0 - 4, 22, 23, // tri1 - 7, 1, 24, // tri2 - 1, 25, 26 // tri3 -), -gsSPNTriangles_5b( - 6, 27, 28, // tri0 - 3, 9, 29, // tri1 - 7, 30, 31, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&grf_1_v[264], 21, 10), -gsSPNTrianglesInit_5b( - 2, // tri count - 2, 3, 10, // tri0 - 6, 5, 11, // tri1 - 0, 0, 0 // tri2 -), -gsSPNTrianglesInit_5b( - 15, // tri count - 12, 13, 14, // tri0 - 15, 16, 12, // tri1 - 17, 18, 19 // tri2 -), -gsSPNTriangles_5b( - 20, 21, 22, // tri0 - 22, 21, 23, // tri1 - 17, 19, 23, // tri2 - 14, 13, 24 // tri3 -), -gsSPNTriangles_5b( - 20, 22, 25, // tri0 - 15, 26, 16, // tri1 - 13, 12, 16, // tri2 - 27, 19, 18 // tri3 -), -gsSPNTriangles_5b( - 28, 23, 21, // tri0 - 28, 17, 23, // tri1 - 26, 15, 29, // tri2 - 30, 14, 24 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&grf_1_v[285], 20, 0), -gsSPNTrianglesInit_5b( - 22, // tri count - 0, 1, 2, // tri0 - 3, 4, 2, // tri1 - 3, 1, 4 // tri2 -), -gsSPNTriangles_5b( - 1, 3, 2, // tri0 - 5, 6, 7, // tri1 - 7, 6, 8, // tri2 - 4, 0, 2 // tri3 -), -gsSPNTriangles_5b( - 1, 0, 4, // tri0 - 9, 5, 10, // tri1 - 11, 12, 13, // tri2 - 12, 11, 14 // tri3 -), -gsSPNTriangles_5b( - 12, 14, 13, // tri0 - 15, 11, 13, // tri1 - 11, 15, 14, // tri2 - 14, 15, 13 // tri3 -), -gsSPNTriangles_5b( - 16, 8, 17, // tri0 - 18, 17, 9, // tri1 - 18, 9, 19, // tri2 - 17, 18, 16 // tri3 -), -gsSPNTriangles_5b( - 8, 16, 7, // tri0 - 7, 10, 5, // tri1 - 10, 19, 9, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&grf_1_v[305], 12, 0), -gsSPNTrianglesInit_5b( - 10, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 7, 8, 9, // tri0 - 9, 10, 7, // tri1 - 2, 8, 7, // tri2 - 1, 0, 6 // tri3 -), -gsSPNTriangles_5b( - 6, 11, 4, // tri0 - 7, 3, 2, // tri1 - 6, 5, 1, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grf_1_v[232], 10, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&grf_1_v[242], 22, 10), + gsSPNTrianglesInit_5b(14, // tri count + 9, 10, 11, // tri0 + 9, 12, 13, // tri1 + 8, 0, 14 // tri2 + ), + gsSPNTriangles_5b(9, 6, 15, // tri0 + 0, 7, 16, // tri1 + 8, 17, 18, // tri2 + 4, 8, 19 // tri3 + ), + gsSPNTriangles_5b(3, 20, 21, // tri0 + 4, 22, 23, // tri1 + 7, 1, 24, // tri2 + 1, 25, 26 // tri3 + ), + gsSPNTriangles_5b(6, 27, 28, // tri0 + 3, 9, 29, // tri1 + 7, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grf_1_v[264], 21, 10), + gsSPNTrianglesInit_5b(2, // tri count + 2, 3, 10, // tri0 + 6, 5, 11, // tri1 + 0, 0, 0 // tri2 + ), + gsSPNTrianglesInit_5b(15, // tri count + 12, 13, 14, // tri0 + 15, 16, 12, // tri1 + 17, 18, 19 // tri2 + ), + gsSPNTriangles_5b(20, 21, 22, // tri0 + 22, 21, 23, // tri1 + 17, 19, 23, // tri2 + 14, 13, 24 // tri3 + ), + gsSPNTriangles_5b(20, 22, 25, // tri0 + 15, 26, 16, // tri1 + 13, 12, 16, // tri2 + 27, 19, 18 // tri3 + ), + gsSPNTriangles_5b(28, 23, 21, // tri0 + 28, 17, 23, // tri1 + 26, 15, 29, // tri2 + 30, 14, 24 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&grf_1_v[285], 20, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 3, 1, 4 // tri2 + ), + gsSPNTriangles_5b(1, 3, 2, // tri0 + 5, 6, 7, // tri1 + 7, 6, 8, // tri2 + 4, 0, 2 // tri3 + ), + gsSPNTriangles_5b(1, 0, 4, // tri0 + 9, 5, 10, // tri1 + 11, 12, 13, // tri2 + 12, 11, 14 // tri3 + ), + gsSPNTriangles_5b(12, 14, 13, // tri0 + 15, 11, 13, // tri1 + 11, 15, 14, // tri2 + 14, 15, 13 // tri3 + ), + gsSPNTriangles_5b(16, 8, 17, // tri0 + 18, 17, 9, // tri1 + 18, 9, 19, // tri2 + 17, 18, 16 // tri3 + ), + gsSPNTriangles_5b(8, 16, 7, // tri0 + 7, 10, 5, // tri1 + 10, 19, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&grf_1_v[305], 12, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 9, 10, 7, // tri1 + 2, 8, 7, // tri2 + 1, 0, 6 // tri3 + ), + gsSPNTriangles_5b(6, 11, 4, // tri0 + 7, 3, 2, // tri1 + 6, 5, 1, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail1_grf_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&grf_1_v[328], 6, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 4, 5, 3 // tri2 -), -gsSPNTriangles_5b( - 4, 3, 2, // tri0 - 0, 5, 4, // tri1 - 0, 4, 1, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grf_1_v[328], 6, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b(4, 3, 2, // tri0 + 0, 5, 4, // tri1 + 0, 4, 1, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail2_grf_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&grf_1_v[317], 3, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&grf_1_v[320], 8, 3), -gsSPNTrianglesInit_5b( - 3, // tri count - 2, 3, 0, // tri0 - 1, 4, 2, // tri1 - 0, 5, 1 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 6, 7, 8, // tri0 - 7, 6, 9, // tri1 - 9, 6, 10 // tri2 -), -gsSPNTriangles_5b( - 9, 8, 7, // tri0 - 10, 6, 8, // tri1 - 8, 9, 10, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grf_1_v[317], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&grf_1_v[320], 8, 3), + gsSPNTrianglesInit_5b(3, // tri count + 2, 3, 0, // tri0 + 1, 4, 2, // tri1 + 0, 5, 1 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 6, 7, 8, // tri0 + 7, 6, 9, // tri1 + 9, 6, 10 // tri2 + ), + gsSPNTriangles_5b(9, 8, 7, // tri0 + 10, 6, 8, // tri1 + 8, 9, 10, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_grf_model[] = { -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&grf_1_v[374], 4, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000680, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&grf_1_v[378], 18, 4), -gsSPNTrianglesInit_5b( - 12, // tri count - 0, 1, 4, // tri0 - 0, 5, 6, // tri1 - 1, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 9, 10, // tri0 - 2, 1, 11, // tri1 - 1, 2, 12, // tri2 - 0, 13, 14 // tri3 -), -gsSPNTriangles_5b( - 2, 0, 15, // tri0 - 2, 16, 17, // tri1 - 1, 3, 18, // tri2 - 3, 2, 19 // tri3 -), -gsSPNTriangles_5b( - 2, 20, 21, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&grf_1_v[396], 10, 0), -gsSPNTrianglesInit_5b( - 4, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 9, 7, 6, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grf_1_v[374], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x680, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&grf_1_v[378], 18, 4), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 4, // tri0 + 0, 5, 6, // tri1 + 1, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 9, 10, // tri0 + 2, 1, 11, // tri1 + 1, 2, 12, // tri2 + 0, 13, 14 // tri3 + ), + gsSPNTriangles_5b(2, 0, 15, // tri0 + 2, 16, 17, // tri1 + 1, 3, 18, // tri2 + 3, 2, 19 // tri3 + ), + gsSPNTriangles_5b(2, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grf_1_v[396], 10, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 7, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_grf_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000680, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&grf_1_v[406], 8, 0), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 1, 2, // tri0 - 2, 3, 4, // tri1 - 4, 3, 5 // tri2 -), -gsSPNTriangles_5b( - 5, 1, 6, // tri0 - 2, 7, 0, // tri1 - 4, 7, 2, // tri2 - 6, 4, 5 // tri3 -), -gsSPNTriangles_5b( - 0, 6, 1, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x680, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grf_1_v[406], 8, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 4, 3, 5 // tri2 + ), + gsSPNTriangles_5b(5, 1, 6, // tri0 + 2, 7, 0, // tri1 + 4, 7, 2, // tri2 + 6, 4, 5 // tri3 + ), + gsSPNTriangles_5b(0, 6, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_grf_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&grf_1_v[334], 4, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000680, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&grf_1_v[338], 18, 4), -gsSPNTrianglesInit_5b( - 12, // tri count - 1, 0, 4, // tri0 - 0, 5, 6, // tri1 - 1, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 9, 10, // tri0 - 1, 2, 11, // tri1 - 2, 1, 12, // tri2 - 0, 13, 14 // tri3 -), -gsSPNTriangles_5b( - 0, 2, 15, // tri0 - 2, 16, 17, // tri1 - 3, 1, 18, // tri2 - 2, 3, 19 // tri3 -), -gsSPNTriangles_5b( - 2, 20, 21, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&grf_1_v[356], 10, 0), -gsSPNTrianglesInit_5b( - 4, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 8, 7, 9, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grf_1_v[334], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x680, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&grf_1_v[338], 18, 4), + gsSPNTrianglesInit_5b(12, // tri count + 1, 0, 4, // tri0 + 0, 5, 6, // tri1 + 1, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 9, 10, // tri0 + 1, 2, 11, // tri1 + 2, 1, 12, // tri2 + 0, 13, 14 // tri3 + ), + gsSPNTriangles_5b(0, 2, 15, // tri0 + 2, 16, 17, // tri1 + 3, 1, 18, // tri2 + 2, 3, 19 // tri3 + ), + gsSPNTriangles_5b(2, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grf_1_v[356], 10, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(8, 7, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_grf_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000680, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&grf_1_v[366], 8, 0), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 1, 2, // tri0 - 3, 4, 0, // tri1 - 5, 4, 3 // tri2 -), -gsSPNTriangles_5b( - 6, 1, 5, // tri0 - 2, 7, 0, // tri1 - 0, 7, 3, // tri2 - 5, 3, 6 // tri3 -), -gsSPNTriangles_5b( - 1, 6, 2, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x680, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grf_1_v[366], 8, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 4, 3 // tri2 + ), + gsSPNTriangles_5b(6, 1, 5, // tri0 + 2, 7, 0, // tri1 + 0, 7, 3, // tri2 + 5, 3, 6 // tri3 + ), + gsSPNTriangles_5b(1, 6, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx base_grf_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000680, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&grf_1_v[414], 16, 0), -gsSPNTrianglesInit_5b( - 22, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 3, 6, 4 // tri2 -), -gsSPNTriangles_5b( - 3, 7, 6, // tri0 - 4, 6, 8, // tri1 - 8, 9, 4, // tri2 - 10, 9, 8 // tri3 -), -gsSPNTriangles_5b( - 2, 5, 11, // tri0 - 2, 11, 12, // tri1 - 13, 14, 15, // tri2 - 15, 12, 13 // tri3 -), -gsSPNTriangles_5b( - 12, 11, 13, // tri0 - 3, 2, 1, // tri1 - 3, 5, 2, // tri2 - 13, 10, 14 // tri3 -), -gsSPNTriangles_5b( - 9, 13, 11, // tri0 - 7, 3, 1, // tri1 - 9, 10, 13, // tri2 - 9, 11, 5 // tri3 -), -gsSPNTriangles_5b( - 9, 5, 4, // tri0 - 12, 15, 0, // tri1 - 2, 12, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x680, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grf_1_v[414], 16, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(3, 7, 6, // tri0 + 4, 6, 8, // tri1 + 8, 9, 4, // tri2 + 10, 9, 8 // tri3 + ), + gsSPNTriangles_5b(2, 5, 11, // tri0 + 2, 11, 12, // tri1 + 13, 14, 15, // tri2 + 15, 12, 13 // tri3 + ), + gsSPNTriangles_5b(12, 11, 13, // tri0 + 3, 2, 1, // tri1 + 3, 5, 2, // tri2 + 13, 10, 14 // tri3 + ), + gsSPNTriangles_5b(9, 13, 11, // tri0 + 7, 3, 1, // tri1 + 9, 10, 13, // tri2 + 9, 11, 5 // tri3 + ), + gsSPNTriangles_5b(9, 5, 4, // tri0 + 12, 15, 0, // tri1 + 2, 12, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_grf_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -851,4 +751,4 @@ static cKF_Joint_R_c cKF_je_r_grf_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_grf_1 = { 26, 14, cKF_je_r_grf_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_grf_1 = { 26, 14, cKF_je_r_grf_1_tbl }; diff --git a/src/data/npc/model/mdl/gst_1.c b/src/data/npc/model/mdl/gst_1.c index e85e372f..1d315ae1 100644 --- a/src/data/npc/model/mdl/gst_1.c +++ b/src/data/npc/model/mdl/gst_1.c @@ -6,422 +6,370 @@ static Vtx gst_1_v[] = { }; static Gfx head_gst_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, PRIMITIVE, 0, ENVIRONMENT, 0, COMBINED, 0, PRIM_LOD_FRAC, COMBINED, 0, 0, 0, COMBINED), -gsDPSetPrimColor(0, 127, 255, 255, 255, 180), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&gst_1_v[0], 13, 0), -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&gst_1_v[13], 19, 13), -gsSPNTrianglesInit_5b( - 13, // tri count - 10, 13, 14, // tri0 - 9, 1, 15, // tri1 - 0, 7, 16 // tri2 -), -gsSPNTriangles_5b( - 0, 18, 17, // tri0 - 6, 4, 19, // tri1 - 2, 5, 20, // tri2 - 3, 21, 22 // tri3 -), -gsSPNTriangles_5b( - 2, 23, 1, // tri0 - 0, 24, 4, // tri1 - 11, 25, 26, // tri2 - 3, 6, 27 // tri3 -), -gsSPNTriangles_5b( - 1, 29, 28, // tri0 - 5, 30, 31, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&gst_1_v[32], 15, 13), -gsSPNTrianglesInit_5b( - 9, // tri count - 6, 13, 14, // tri0 - 12, 15, 16, // tri1 - 8, 17, 18 // tri2 -), -gsSPNTriangles_5b( - 8, 11, 19, // tri0 - 12, 10, 20, // tri1 - 1, 21, 22, // tri2 - 0, 23, 24 // tri3 -), -gsSPNTriangles_5b( - 5, 3, 25, // tri0 - 3, 26, 27, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&gst_1_v[47], 13, 0), -gsSPNTrianglesInit_5b( - 16, // tri count - 0, 1, 2, // tri0 - 3, 1, 0, // tri1 - 4, 1, 3 // tri2 -), -gsSPNTriangles_5b( - 2, 1, 4, // tri0 - 5, 6, 2, // tri1 - 3, 7, 8, // tri2 - 8, 9, 4 // tri3 -), -gsSPNTriangles_5b( - 4, 3, 8, // tri0 - 4, 9, 5, // tri1 - 2, 6, 10, // tri2 - 10, 11, 0 // tri3 -), -gsSPNTriangles_5b( - 0, 2, 10, // tri0 - 0, 11, 12, // tri1 - 4, 5, 2, // tri2 - 12, 7, 3 // tri3 -), -gsSPNTriangles_5b( - 3, 0, 12, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&gst_1_v[60], 32, 0), -gsSPNTrianglesInit_5b( - 23, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 5, 7 // tri2 -), -gsSPNTriangles_5b( - 2, 1, 8, // tri0 - 2, 8, 9, // tri1 - 10, 11, 4, // tri2 - 11, 12, 5 // tri3 -), -gsSPNTriangles_5b( - 5, 12, 13, // tri0 - 14, 15, 16, // tri1 - 17, 18, 10, // tri2 - 11, 10, 18 // tri3 -), -gsSPNTriangles_5b( - 19, 20, 21, // tri0 - 19, 21, 0, // tri1 - 15, 14, 22, // tri2 - 22, 23, 15 // tri3 -), -gsSPNTriangles_5b( - 22, 24, 25, // tri0 - 5, 4, 11, // tri1 - 26, 16, 15, // tri2 - 27, 26, 28 // tri3 -), -gsSPNTriangles_5b( - 27, 28, 29, // tri0 - 2, 30, 18, // tri1 - 2, 18, 0, // tri2 - 21, 20, 8 // tri3 -), -gsSPVertex(&gst_1_v[91], 32, 0), -gsSPNTrianglesInit_5b( - 21, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 4, 6, 7, // tri0 - 8, 9, 10, // tri1 - 5, 11, 12, // tri2 - 13, 14, 15 // tri3 -), -gsSPNTriangles_5b( - 12, 6, 5, // tri0 - 7, 6, 12, // tri1 - 3, 12, 11, // tri2 - 3, 11, 0 // tri3 -), -gsSPNTriangles_5b( - 16, 17, 18, // tri0 - 19, 18, 20, // tri1 - 7, 12, 3, // tri2 - 7, 21, 22 // tri3 -), -gsSPNTriangles_5b( - 23, 24, 25, // tri0 - 23, 25, 26, // tri1 - 23, 15, 14, // tri2 - 27, 2, 28 // tri3 -), -gsSPNTriangles_5b( - 18, 17, 29, // tri0 - 30, 31, 16, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&gst_1_v[123], 21, 0), -gsSPNTrianglesInit_5b( - 12, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 2, 3, 0 // tri2 -), -gsSPNTriangles_5b( - 6, 3, 5, // tri0 - 7, 8, 1, // tri1 - 4, 8, 7, // tri2 - 9, 10, 4 // tri3 -), -gsSPNTriangles_5b( - 11, 10, 9, // tri0 - 12, 6, 11, // tri1 - 13, 14, 1, // tri2 - 15, 16, 17 // tri3 -), -gsSPNTriangles_5b( - 18, 19, 20, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&gst_1_v[144], 19, 0), -gsSPNTrianglesInit_5b( - 22, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 3 // tri2 -), -gsSPNTriangles_5b( - 6, 8, 2, // tri0 - 9, 10, 4, // tri1 - 2, 8, 11, // tri2 - 12, 13, 0 // tri3 -), -gsSPNTriangles_5b( - 14, 5, 4, // tri0 - 2, 15, 0, // tri1 - 3, 8, 6, // tri2 - 16, 15, 2 // tri3 -), -gsSPNTriangles_5b( - 2, 1, 6, // tri0 - 11, 8, 3, // tri1 - 5, 11, 3, // tri2 - 2, 11, 16 // tri3 -), -gsSPNTriangles_5b( - 17, 12, 15, // tri0 - 18, 4, 3, // tri1 - 0, 15, 12, // tri2 - 15, 16, 17 // tri3 -), -gsSPNTriangles_5b( - 4, 10, 14, // tri0 - 4, 18, 9, // tri1 - 3, 7, 18, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&gst_1_v[163], 15, 0), -gsSPNTrianglesInit_5b( - 14, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 0, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 3, 8, 7, // tri0 - 9, 2, 1, // tri1 - 4, 3, 6, // tri2 - 10, 11, 6 // tri3 -), -gsSPNTriangles_5b( - 6, 11, 4, // tri0 - 7, 6, 3, // tri1 - 2, 10, 0, // tri2 - 6, 0, 10 // tri3 -), -gsSPNTriangles_5b( - 5, 12, 3, // tri0 - 7, 13, 0, // tri1 - 12, 5, 14, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, PRIMITIVE, 0, ENVIRONMENT, 0, COMBINED, 0, PRIM_LOD_FRAC, COMBINED, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 127, 255, 255, 255, 180), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&gst_1_v[0], 13, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&gst_1_v[13], 19, 13), + gsSPNTrianglesInit_5b(13, // tri count + 10, 13, 14, // tri0 + 9, 1, 15, // tri1 + 0, 7, 16 // tri2 + ), + gsSPNTriangles_5b(0, 18, 17, // tri0 + 6, 4, 19, // tri1 + 2, 5, 20, // tri2 + 3, 21, 22 // tri3 + ), + gsSPNTriangles_5b(2, 23, 1, // tri0 + 0, 24, 4, // tri1 + 11, 25, 26, // tri2 + 3, 6, 27 // tri3 + ), + gsSPNTriangles_5b(1, 29, 28, // tri0 + 5, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&gst_1_v[32], 15, 13), + gsSPNTrianglesInit_5b(9, // tri count + 6, 13, 14, // tri0 + 12, 15, 16, // tri1 + 8, 17, 18 // tri2 + ), + gsSPNTriangles_5b(8, 11, 19, // tri0 + 12, 10, 20, // tri1 + 1, 21, 22, // tri2 + 0, 23, 24 // tri3 + ), + gsSPNTriangles_5b(5, 3, 25, // tri0 + 3, 26, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&gst_1_v[47], 13, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 4, 1, 3 // tri2 + ), + gsSPNTriangles_5b(2, 1, 4, // tri0 + 5, 6, 2, // tri1 + 3, 7, 8, // tri2 + 8, 9, 4 // tri3 + ), + gsSPNTriangles_5b(4, 3, 8, // tri0 + 4, 9, 5, // tri1 + 2, 6, 10, // tri2 + 10, 11, 0 // tri3 + ), + gsSPNTriangles_5b(0, 2, 10, // tri0 + 0, 11, 12, // tri1 + 4, 5, 2, // tri2 + 12, 7, 3 // tri3 + ), + gsSPNTriangles_5b(3, 0, 12, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&gst_1_v[60], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 5, 7 // tri2 + ), + gsSPNTriangles_5b(2, 1, 8, // tri0 + 2, 8, 9, // tri1 + 10, 11, 4, // tri2 + 11, 12, 5 // tri3 + ), + gsSPNTriangles_5b(5, 12, 13, // tri0 + 14, 15, 16, // tri1 + 17, 18, 10, // tri2 + 11, 10, 18 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 19, 21, 0, // tri1 + 15, 14, 22, // tri2 + 22, 23, 15 // tri3 + ), + gsSPNTriangles_5b(22, 24, 25, // tri0 + 5, 4, 11, // tri1 + 26, 16, 15, // tri2 + 27, 26, 28 // tri3 + ), + gsSPNTriangles_5b(27, 28, 29, // tri0 + 2, 30, 18, // tri1 + 2, 18, 0, // tri2 + 21, 20, 8 // tri3 + ), + gsSPVertex(&gst_1_v[91], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 5, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(12, 6, 5, // tri0 + 7, 6, 12, // tri1 + 3, 12, 11, // tri2 + 3, 11, 0 // tri3 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 19, 18, 20, // tri1 + 7, 12, 3, // tri2 + 7, 21, 22 // tri3 + ), + gsSPNTriangles_5b(23, 24, 25, // tri0 + 23, 25, 26, // tri1 + 23, 15, 14, // tri2 + 27, 2, 28 // tri3 + ), + gsSPNTriangles_5b(18, 17, 29, // tri0 + 30, 31, 16, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&gst_1_v[123], 21, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 3, 0 // tri2 + ), + gsSPNTriangles_5b(6, 3, 5, // tri0 + 7, 8, 1, // tri1 + 4, 8, 7, // tri2 + 9, 10, 4 // tri3 + ), + gsSPNTriangles_5b(11, 10, 9, // tri0 + 12, 6, 11, // tri1 + 13, 14, 1, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&gst_1_v[144], 19, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 3 // tri2 + ), + gsSPNTriangles_5b(6, 8, 2, // tri0 + 9, 10, 4, // tri1 + 2, 8, 11, // tri2 + 12, 13, 0 // tri3 + ), + gsSPNTriangles_5b(14, 5, 4, // tri0 + 2, 15, 0, // tri1 + 3, 8, 6, // tri2 + 16, 15, 2 // tri3 + ), + gsSPNTriangles_5b(2, 1, 6, // tri0 + 11, 8, 3, // tri1 + 5, 11, 3, // tri2 + 2, 11, 16 // tri3 + ), + gsSPNTriangles_5b(17, 12, 15, // tri0 + 18, 4, 3, // tri1 + 0, 15, 12, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b(4, 10, 14, // tri0 + 4, 18, 9, // tri1 + 3, 7, 18, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&gst_1_v[163], 15, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 7 // tri2 + ), + gsSPNTriangles_5b(3, 8, 7, // tri0 + 9, 2, 1, // tri1 + 4, 3, 6, // tri2 + 10, 11, 6 // tri3 + ), + gsSPNTriangles_5b(6, 11, 4, // tri0 + 7, 6, 3, // tri1 + 2, 10, 0, // tri2 + 6, 0, 10 // tri3 + ), + gsSPNTriangles_5b(5, 12, 3, // tri0 + 7, 13, 0, // tri1 + 12, 5, 14, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx feel_gst_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, PRIMITIVE, 0, ENVIRONMENT, 0, COMBINED, 0, PRIM_LOD_FRAC, COMBINED, 0, 0, 0, COMBINED), -gsDPSetPrimColor(0, 20, 255, 255, 255, 255), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&gst_1_v[178], 4, 0), -gsSPNTrianglesInit_5b( - 2, // tri count - 0, 1, 2, // tri0 - 2, 3, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, PRIMITIVE, 0, ENVIRONMENT, 0, COMBINED, 0, PRIM_LOD_FRAC, COMBINED, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 20, 255, 255, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&gst_1_v[178], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx chest_gst_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, PRIMITIVE, 0, ENVIRONMENT, 0, COMBINED, 0, PRIM_LOD_FRAC, COMBINED, 0, 0, 0, COMBINED), -gsDPSetPrimColor(0, 127, 255, 255, 255, 180), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&gst_1_v[182], 10, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&gst_1_v[192], 22, 10), -gsSPNTrianglesInit_5b( - 14, // tri count - 8, 2, 10, // tri0 - 6, 11, 12, // tri1 - 7, 13, 14 // tri2 -), -gsSPNTriangles_5b( - 0, 1, 15, // tri0 - 5, 0, 16, // tri1 - 1, 9, 17, // tri2 - 3, 4, 18 // tri3 -), -gsSPNTriangles_5b( - 3, 19, 20, // tri0 - 2, 3, 21, // tri1 - 2, 22, 23, // tri2 - 4, 24, 25 // tri3 -), -gsSPNTriangles_5b( - 3, 26, 27, // tri0 - 9, 28, 29, // tri1 - 1, 30, 31, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&gst_1_v[214], 6, 10), -gsSPNTrianglesInit_5b( - 4, // tri count - 6, 5, 10, // tri0 - 5, 11, 12, // tri1 - 8, 13, 14 // tri2 -), -gsSPNTriangles_5b( - 4, 7, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, PRIMITIVE, 0, ENVIRONMENT, 0, COMBINED, 0, PRIM_LOD_FRAC, COMBINED, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 127, 255, 255, 255, 180), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&gst_1_v[182], 10, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&gst_1_v[192], 22, 10), + gsSPNTrianglesInit_5b(14, // tri count + 8, 2, 10, // tri0 + 6, 11, 12, // tri1 + 7, 13, 14 // tri2 + ), + gsSPNTriangles_5b(0, 1, 15, // tri0 + 5, 0, 16, // tri1 + 1, 9, 17, // tri2 + 3, 4, 18 // tri3 + ), + gsSPNTriangles_5b(3, 19, 20, // tri0 + 2, 3, 21, // tri1 + 2, 22, 23, // tri2 + 4, 24, 25 // tri3 + ), + gsSPNTriangles_5b(3, 26, 27, // tri0 + 9, 28, 29, // tri1 + 1, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&gst_1_v[214], 6, 10), + gsSPNTrianglesInit_5b(4, // tri count + 6, 5, 10, // tri0 + 5, 11, 12, // tri1 + 8, 13, 14 // tri2 + ), + gsSPNTriangles_5b(4, 7, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail1_gst_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, PRIMITIVE, 0, ENVIRONMENT, 0, COMBINED, 0, PRIM_LOD_FRAC, COMBINED, 0, 0, 0, COMBINED), -gsDPSetPrimColor(0, 127, 255, 255, 255, 180), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&gst_1_v[220], 8, 0), -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&gst_1_v[228], 20, 8), -gsSPNTrianglesInit_5b( - 14, // tri count - 1, 0, 8, // tri0 - 1, 9, 10, // tri1 - 6, 11, 12 // tri2 -), -gsSPNTriangles_5b( - 4, 13, 14, // tri0 - 6, 7, 15, // tri1 - 2, 1, 16, // tri2 - 0, 6, 17 // tri3 -), -gsSPNTriangles_5b( - 5, 4, 18, // tri0 - 2, 19, 3, // tri1 - 5, 20, 7, // tri2 - 3, 21, 22 // tri3 -), -gsSPNTriangles_5b( - 5, 23, 24, // tri0 - 4, 25, 26, // tri1 - 4, 3, 27, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&gst_1_v[248], 7, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 2, // tri0 - 2, 1, 3, // tri1 - 4, 2, 5 // tri2 -), -gsSPNTriangles_5b( - 0, 2, 4, // tri0 - 3, 6, 2, // tri1 - 2, 6, 5, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, PRIMITIVE, 0, ENVIRONMENT, 0, COMBINED, 0, PRIM_LOD_FRAC, COMBINED, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 127, 255, 255, 255, 180), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&gst_1_v[220], 8, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&gst_1_v[228], 20, 8), + gsSPNTrianglesInit_5b(14, // tri count + 1, 0, 8, // tri0 + 1, 9, 10, // tri1 + 6, 11, 12 // tri2 + ), + gsSPNTriangles_5b(4, 13, 14, // tri0 + 6, 7, 15, // tri1 + 2, 1, 16, // tri2 + 0, 6, 17 // tri3 + ), + gsSPNTriangles_5b(5, 4, 18, // tri0 + 2, 19, 3, // tri1 + 5, 20, 7, // tri2 + 3, 21, 22 // tri3 + ), + gsSPNTriangles_5b(5, 23, 24, // tri0 + 4, 25, 26, // tri1 + 4, 3, 27, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&gst_1_v[248], 7, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 2, 5 // tri2 + ), + gsSPNTriangles_5b(0, 2, 4, // tri0 + 3, 6, 2, // tri1 + 2, 6, 5, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx base_gst_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, PRIMITIVE, 0, ENVIRONMENT, 0, COMBINED, 0, PRIM_LOD_FRAC, COMBINED, 0, 0, 0, COMBINED), -gsDPSetPrimColor(0, 127, 255, 255, 255, 180), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&gst_1_v[255], 18, 0), -gsSPNTrianglesInit_5b( - 16, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 3, 6, 4 // tri2 -), -gsSPNTriangles_5b( - 7, 8, 9, // tri0 - 9, 8, 6, // tri1 - 1, 7, 2, // tri2 - 10, 1, 11 // tri3 -), -gsSPNTriangles_5b( - 10, 12, 13, // tri0 - 12, 14, 13, // tri1 - 14, 15, 13, // tri2 - 16, 4, 17 // tri3 -), -gsSPNTriangles_5b( - 15, 17, 13, // tri0 - 6, 3, 9, // tri1 - 9, 2, 7, // tri2 - 17, 15, 16 // tri3 -), -gsSPNTriangles_5b( - 11, 12, 10, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, PRIMITIVE, 0, ENVIRONMENT, 0, COMBINED, 0, PRIM_LOD_FRAC, COMBINED, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 127, 255, 255, 255, 180), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&gst_1_v[255], 18, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 9, 8, 6, // tri1 + 1, 7, 2, // tri2 + 10, 1, 11 // tri3 + ), + gsSPNTriangles_5b(10, 12, 13, // tri0 + 12, 14, 13, // tri1 + 14, 15, 13, // tri2 + 16, 4, 17 // tri3 + ), + gsSPNTriangles_5b(15, 17, 13, // tri0 + 6, 3, 9, // tri1 + 9, 2, 7, // tri2 + 17, 15, 16 // tri3 + ), + gsSPNTriangles_5b(11, 12, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_gst_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_XLU, 0,1000,0 }, @@ -453,4 +401,4 @@ static cKF_Joint_R_c cKF_je_r_gst_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_gst_1 = { 26, 5, cKF_je_r_gst_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_gst_1 = { 26, 5, cKF_je_r_gst_1_tbl }; diff --git a/src/data/npc/model/mdl/hem_1.c b/src/data/npc/model/mdl/hem_1.c index 2c7672ed..b0256321 100644 --- a/src/data/npc/model/mdl/hem_1.c +++ b/src/data/npc/model/mdl/hem_1.c @@ -6,644 +6,557 @@ static Vtx hem_1_v[] = { }; static Gfx head_hem_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hem_1_v[26], 9, 0), -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 380, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&hem_1_v[35], 23, 9), -gsSPNTrianglesInit_5b( - 14, // tri count - 4, 2, 9, // tri0 - 1, 10, 11, // tri1 - 4, 12, 13 // tri2 -), -gsSPNTriangles_5b( - 5, 14, 15, // tri0 - 4, 16, 17, // tri1 - 1, 3, 18, // tri2 - 5, 19, 20 // tri3 -), -gsSPNTriangles_5b( - 2, 0, 21, // tri0 - 3, 5, 22, // tri1 - 4, 23, 24, // tri2 - 0, 1, 25 // tri3 -), -gsSPNTriangles_5b( - 1, 27, 26, // tri0 - 5, 28, 29, // tri1 - 0, 30, 31, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&hem_1_v[58], 20, 9), -gsSPNTrianglesInit_5b( - 4, // tri count - 6, 9, 10, // tri0 - 6, 11, 8, // tri1 - 7, 4, 12 // tri2 -), -gsSPNTriangles_5b( - 5, 8, 13, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 14, 15, 16, // tri0 - 17, 18, 19, // tri1 - 0, 0, 0 // tri2 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 124), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 8, // tri count - 20, 21, 22, // tri0 - 23, 21, 24, // tri1 - 25, 21, 20 // tri2 -), -gsSPNTriangles_5b( - 24, 21, 26, // tri0 - 27, 21, 25, // tri1 - 26, 21, 27, // tri2 - 28, 21, 23 // tri3 -), -gsSPNTriangles_5b( - 22, 21, 28, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 124), -gsSPVertex(&hem_1_v[78], 14, 0), -gsSPNTrianglesInit_5b( - 14, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 8, 9, 6, // tri0 - 10, 4, 3, // tri1 - 3, 0, 10, // tri2 - 5, 11, 3 // tri3 -), -gsSPNTriangles_5b( - 5, 7, 6, // tri0 - 6, 11, 5, // tri1 - 0, 12, 10, // tri2 - 8, 13, 9 // tri3 -), -gsSPNTriangles_5b( - 9, 13, 2, // tri0 - 2, 12, 0, // tri1 - 2, 1, 9, // tri2 - 0, 0, 0 // tri3 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 60, 124), -gsSPVertex(&hem_1_v[92], 25, 0), -gsSPNTrianglesInit_5b( - 30, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 1 // tri2 -), -gsSPNTriangles_5b( - 8, 9, 10, // tri0 - 11, 12, 13, // tri1 - 13, 7, 11, // tri2 - 14, 4, 15 // tri3 -), -gsSPNTriangles_5b( - 14, 15, 9, // tri0 - 2, 1, 13, // tri1 - 2, 13, 16, // tri2 - 5, 4, 14 // tri3 -), -gsSPNTriangles_5b( - 5, 14, 17, // tri0 - 18, 19, 12, // tri1 - 4, 19, 18, // tri2 - 10, 20, 8 // tri3 -), -gsSPNTriangles_5b( - 1, 21, 6, // tri0 - 9, 8, 14, // tri1 - 13, 1, 7, // tri2 - 16, 13, 12 // tri3 -), -gsSPNTriangles_5b( - 16, 12, 22, // tri0 - 22, 12, 19, // tri1 - 22, 19, 3, // tri2 - 12, 11, 18 // tri3 -), -gsSPNTriangles_5b( - 18, 15, 4, // tri0 - 17, 14, 8, // tri1 - 17, 8, 23, // tri2 - 23, 8, 20 // tri3 -), -gsSPNTriangles_5b( - 23, 20, 24, // tri0 - 3, 19, 4, // tri1 - 0, 21, 1, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hem_1_v[26], 9, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 380, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hem_1_v[35], 23, 9), + gsSPNTrianglesInit_5b(14, // tri count + 4, 2, 9, // tri0 + 1, 10, 11, // tri1 + 4, 12, 13 // tri2 + ), + gsSPNTriangles_5b(5, 14, 15, // tri0 + 4, 16, 17, // tri1 + 1, 3, 18, // tri2 + 5, 19, 20 // tri3 + ), + gsSPNTriangles_5b(2, 0, 21, // tri0 + 3, 5, 22, // tri1 + 4, 23, 24, // tri2 + 0, 1, 25 // tri3 + ), + gsSPNTriangles_5b(1, 27, 26, // tri0 + 5, 28, 29, // tri1 + 0, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&hem_1_v[58], 20, 9), + gsSPNTrianglesInit_5b(4, // tri count + 6, 9, 10, // tri0 + 6, 11, 8, // tri1 + 7, 4, 12 // tri2 + ), + gsSPNTriangles_5b(5, 8, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 14, 15, 16, // tri0 + 17, 18, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 124), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(8, // tri count + 20, 21, 22, // tri0 + 23, 21, 24, // tri1 + 25, 21, 20 // tri2 + ), + gsSPNTriangles_5b(24, 21, 26, // tri0 + 27, 21, 25, // tri1 + 26, 21, 27, // tri2 + 28, 21, 23 // tri3 + ), + gsSPNTriangles_5b(22, 21, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 124), + gsSPVertex(&hem_1_v[78], 14, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(8, 9, 6, // tri0 + 10, 4, 3, // tri1 + 3, 0, 10, // tri2 + 5, 11, 3 // tri3 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 6, 11, 5, // tri1 + 0, 12, 10, // tri2 + 8, 13, 9 // tri3 + ), + gsSPNTriangles_5b(9, 13, 2, // tri0 + 2, 12, 0, // tri1 + 2, 1, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 60, 124), + gsSPVertex(&hem_1_v[92], 25, 0), + gsSPNTrianglesInit_5b(30, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 1 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 13, 7, 11, // tri2 + 14, 4, 15 // tri3 + ), + gsSPNTriangles_5b(14, 15, 9, // tri0 + 2, 1, 13, // tri1 + 2, 13, 16, // tri2 + 5, 4, 14 // tri3 + ), + gsSPNTriangles_5b(5, 14, 17, // tri0 + 18, 19, 12, // tri1 + 4, 19, 18, // tri2 + 10, 20, 8 // tri3 + ), + gsSPNTriangles_5b(1, 21, 6, // tri0 + 9, 8, 14, // tri1 + 13, 1, 7, // tri2 + 16, 13, 12 // tri3 + ), + gsSPNTriangles_5b(16, 12, 22, // tri0 + 22, 12, 19, // tri1 + 22, 19, 3, // tri2 + 12, 11, 18 // tri3 + ), + gsSPNTriangles_5b(18, 15, 4, // tri0 + 17, 14, 8, // tri1 + 17, 8, 23, // tri2 + 23, 8, 20 // tri3 + ), + gsSPNTriangles_5b(23, 20, 24, // tri0 + 3, 19, 4, // tri1 + 0, 21, 1, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx feel_hem_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hem_1_v[117], 16, 0), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 2, 4, 0 // tri2 -), -gsSPNTriangles_5b( - 5, 1, 3, // tri0 - 2, 6, 4, // tri1 - 1, 7, 2, // tri2 - 5, 4, 8 // tri3 -), -gsSPNTriangles_5b( - 9, 1, 5, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000580, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 1, // tri count - 10, 11, 12, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 13, 14, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hem_1_v[117], 16, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(5, 1, 3, // tri0 + 2, 6, 4, // tri1 + 1, 7, 2, // tri2 + 5, 4, 8 // tri3 + ), + gsSPNTriangles_5b(9, 1, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x580, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(1, // tri count + 10, 11, 12, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPNTrianglesInit_5b(1, // tri count + 13, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx mouth_hem_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hem_1_v[0], 5, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&hem_1_v[5], 21, 5), -gsSPNTrianglesInit_5b( - 10, // tri count - 2, 6, 5, // tri0 - 2, 8, 7, // tri1 - 3, 10, 9 // tri2 -), -gsSPNTriangles_5b( - 2, 1, 11, // tri0 - 0, 2, 12, // tri1 - 3, 0, 13, // tri2 - 1, 4, 14 // tri3 -), -gsSPNTriangles_5b( - 4, 16, 15, // tri0 - 4, 3, 17, // tri1 - 3, 19, 18, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 5, // tri count - 20, 21, 22, // tri0 - 23, 21, 20, // tri1 - 24, 21, 25 // tri2 -), -gsSPNTriangles_5b( - 25, 21, 23, // tri0 - 22, 21, 24, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hem_1_v[0], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hem_1_v[5], 21, 5), + gsSPNTrianglesInit_5b(10, // tri count + 2, 6, 5, // tri0 + 2, 8, 7, // tri1 + 3, 10, 9 // tri2 + ), + gsSPNTriangles_5b(2, 1, 11, // tri0 + 0, 2, 12, // tri1 + 3, 0, 13, // tri2 + 1, 4, 14 // tri3 + ), + gsSPNTriangles_5b(4, 16, 15, // tri0 + 4, 3, 17, // tri1 + 3, 19, 18, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(5, // tri count + 20, 21, 22, // tri0 + 23, 21, 20, // tri1 + 24, 21, 25 // tri2 + ), + gsSPNTriangles_5b(25, 21, 23, // tri0 + 22, 21, 24, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_hem_model[] = { -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hem_1_v[133], 5, 0), -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&hem_1_v[138], 16, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 5, 6, // tri0 - 4, 7, 8, // tri1 - 4, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 0, 1, 11, // tri0 - 2, 4, 12, // tri1 - 0, 13, 14, // tri2 - 3, 0, 15 // tri3 -), -gsSPNTriangles_5b( - 4, 3, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 20, 19, 18, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hem_1_v[133], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hem_1_v[138], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(0, 1, 11, // tri0 + 2, 4, 12, // tri1 + 0, 13, 14, // tri2 + 3, 0, 15 // tri3 + ), + gsSPNTriangles_5b(4, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 19, 18, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_hem_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hem_1_v[154], 9, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 3, 5 // tri2 -), -gsSPNTriangles_5b( - 7, 0, 6, // tri0 - 7, 6, 5, // tri1 - 1, 0, 7, // tri2 - 2, 8, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hem_1_v[154], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 5 // tri2 + ), + gsSPNTriangles_5b(7, 0, 6, // tri0 + 7, 6, 5, // tri1 + 1, 0, 7, // tri2 + 2, 8, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_hem_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hem_1_v[163], 9, 0), -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 380, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&hem_1_v[172], 22, 9), -gsSPNTrianglesInit_5b( - 14, // tri count - 4, 5, 9, // tri0 - 2, 3, 10, // tri1 - 8, 11, 12 // tri2 -), -gsSPNTriangles_5b( - 3, 8, 13, // tri0 - 2, 14, 15, // tri1 - 0, 6, 16, // tri2 - 0, 18, 17 // tri3 -), -gsSPNTriangles_5b( - 5, 19, 20, // tri0 - 8, 4, 21, // tri1 - 1, 23, 22, // tri2 - 7, 1, 24 // tri3 -), -gsSPNTriangles_5b( - 6, 25, 26, // tri0 - 0, 27, 28, // tri1 - 1, 29, 30, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&hem_1_v[194], 15, 9), -gsSPNTrianglesInit_5b( - 2, // tri count - 1, 2, 9, // tri0 - 5, 0, 10, // tri1 - 0, 0, 0 // tri2 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 11, 12, 13, // tri0 - 14, 15, 16, // tri1 - 14, 16, 17 // tri2 -), -gsSPNTriangles_5b( - 17, 13, 18, // tri0 - 14, 17, 18, // tri1 - 18, 13, 12, // tri2 - 13, 19, 11 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 20, 21, 22, // tri0 - 23, 20, 22, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hem_1_v[163], 9, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 380, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hem_1_v[172], 22, 9), + gsSPNTrianglesInit_5b(14, // tri count + 4, 5, 9, // tri0 + 2, 3, 10, // tri1 + 8, 11, 12 // tri2 + ), + gsSPNTriangles_5b(3, 8, 13, // tri0 + 2, 14, 15, // tri1 + 0, 6, 16, // tri2 + 0, 18, 17 // tri3 + ), + gsSPNTriangles_5b(5, 19, 20, // tri0 + 8, 4, 21, // tri1 + 1, 23, 22, // tri2 + 7, 1, 24 // tri3 + ), + gsSPNTriangles_5b(6, 25, 26, // tri0 + 0, 27, 28, // tri1 + 1, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&hem_1_v[194], 15, 9), + gsSPNTrianglesInit_5b(2, // tri count + 1, 2, 9, // tri0 + 5, 0, 10, // tri1 + 0, 0, 0 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 11, 12, 13, // tri0 + 14, 15, 16, // tri1 + 14, 16, 17 // tri2 + ), + gsSPNTriangles_5b(17, 13, 18, // tri0 + 14, 17, 18, // tri1 + 18, 13, 12, // tri2 + 13, 19, 11 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 20, 21, 22, // tri0 + 23, 20, 22, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx base_hem_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hem_1_v[209], 32, 0), -gsSPNTrianglesInit_5b( - 39, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 0, 4, 5 // tri2 -), -gsSPNTriangles_5b( - 6, 7, 8, // tri0 - 6, 8, 9, // tri1 - 10, 7, 11, // tri2 - 5, 1, 0 // tri3 -), -gsSPNTriangles_5b( - 12, 8, 7, // tri0 - 12, 7, 10, // tri1 - 13, 14, 15, // tri2 - 13, 15, 16 // tri3 -), -gsSPNTriangles_5b( - 17, 18, 19, // tri0 - 17, 19, 20, // tri1 - 10, 2, 1, // tri2 - 10, 1, 12 // tri3 -), -gsSPNTriangles_5b( - 9, 8, 5, // tri0 - 9, 21, 22, // tri1 - 9, 22, 6, // tri2 - 11, 23, 3 // tri3 -), -gsSPNTriangles_5b( - 5, 8, 12, // tri0 - 20, 19, 14, // tri1 - 20, 14, 13, // tri2 - 11, 7, 6 // tri3 -), -gsSPNTriangles_5b( - 12, 1, 5, // tri0 - 11, 2, 10, // tri1 - 21, 9, 5, // tri2 - 5, 24, 21 // tri3 -), -gsSPNTriangles_5b( - 11, 6, 22, // tri0 - 11, 22, 25, // tri1 - 16, 15, 18, // tri2 - 16, 18, 17 // tri3 -), -gsSPNTriangles_5b( - 11, 25, 26, // tri0 - 11, 26, 5, // tri1 - 3, 2, 11, // tri2 - 4, 0, 3 // tri3 -), -gsSPNTriangles_5b( - 4, 3, 23, // tri0 - 27, 28, 29, // tri1 - 27, 29, 30, // tri2 - 31, 25, 22 // tri3 -), -gsSPVertex(&hem_1_v[241], 12, 0), -gsSPNTrianglesInit_5b( - 15, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 3, 5, 0 // tri2 -), -gsSPNTriangles_5b( - 6, 7, 4, // tri0 - 6, 4, 3, // tri1 - 2, 1, 7, // tri2 - 2, 7, 6 // tri3 -), -gsSPNTriangles_5b( - 8, 0, 2, // tri0 - 8, 2, 9, // tri1 - 10, 3, 0, // tri2 - 10, 0, 8 // tri3 -), -gsSPNTriangles_5b( - 11, 6, 3, // tri0 - 11, 3, 10, // tri1 - 9, 2, 6, // tri2 - 9, 6, 11 // tri3 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 380, 124), -gsSPVertex(&hem_1_v[253], 27, 0), -gsSPNTrianglesInit_5b( - 32, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 2, 1 // tri2 -), -gsSPNTriangles_5b( - 7, 8, 9, // tri0 - 10, 11, 12, // tri1 - 13, 8, 14, // tri2 - 15, 14, 7 // tri3 -), -gsSPNTriangles_5b( - 9, 11, 7, // tri0 - 12, 16, 10, // tri1 - 7, 14, 8, // tri2 - 4, 17, 18 // tri3 -), -gsSPNTriangles_5b( - 19, 6, 1, // tri0 - 4, 3, 17, // tri1 - 7, 10, 15, // tri2 - 20, 21, 2 // tri3 -), -gsSPNTriangles_5b( - 3, 22, 23, // tri0 - 20, 24, 14, // tri1 - 10, 16, 23, // tri2 - 15, 25, 14 // tri3 -), -gsSPNTriangles_5b( - 6, 13, 24, // tri0 - 16, 12, 17, // tri1 - 17, 3, 16, // tri2 - 14, 24, 13 // tri3 -), -gsSPNTriangles_5b( - 24, 2, 6, // tri0 - 23, 26, 10, // tri1 - 23, 16, 3, // tri2 - 14, 25, 20 // tri3 -), -gsSPNTriangles_5b( - 11, 10, 7, // tri0 - 2, 24, 20, // tri1 - 5, 22, 3, // tri2 - 2, 21, 0 // tri3 -), -gsSPNTriangles_5b( - 10, 26, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&hem_1_v[280], 32, 0), -gsSPNTrianglesInit_5b( - 39, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 0, 4, 5 // tri2 -), -gsSPNTriangles_5b( - 6, 7, 8, // tri0 - 6, 8, 9, // tri1 - 10, 7, 11, // tri2 - 5, 1, 0 // tri3 -), -gsSPNTriangles_5b( - 12, 8, 7, // tri0 - 12, 7, 10, // tri1 - 13, 14, 15, // tri2 - 13, 15, 16 // tri3 -), -gsSPNTriangles_5b( - 17, 18, 19, // tri0 - 17, 19, 20, // tri1 - 10, 2, 1, // tri2 - 10, 1, 12 // tri3 -), -gsSPNTriangles_5b( - 9, 8, 5, // tri0 - 9, 21, 22, // tri1 - 9, 22, 6, // tri2 - 11, 23, 3 // tri3 -), -gsSPNTriangles_5b( - 5, 8, 12, // tri0 - 20, 19, 14, // tri1 - 20, 14, 13, // tri2 - 11, 7, 6 // tri3 -), -gsSPNTriangles_5b( - 12, 1, 5, // tri0 - 11, 2, 10, // tri1 - 21, 9, 5, // tri2 - 5, 24, 21 // tri3 -), -gsSPNTriangles_5b( - 11, 6, 22, // tri0 - 11, 22, 25, // tri1 - 16, 15, 18, // tri2 - 16, 18, 17 // tri3 -), -gsSPNTriangles_5b( - 11, 25, 26, // tri0 - 11, 26, 5, // tri1 - 3, 2, 11, // tri2 - 4, 0, 3 // tri3 -), -gsSPNTriangles_5b( - 4, 3, 23, // tri0 - 27, 28, 29, // tri1 - 27, 29, 30, // tri2 - 31, 25, 22 // tri3 -), -gsSPVertex(&hem_1_v[312], 21, 0), -gsSPNTrianglesInit_5b( - 15, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 3, 5, 0 // tri2 -), -gsSPNTriangles_5b( - 6, 7, 4, // tri0 - 6, 4, 3, // tri1 - 2, 1, 7, // tri2 - 2, 7, 6 // tri3 -), -gsSPNTriangles_5b( - 8, 0, 2, // tri0 - 8, 2, 9, // tri1 - 10, 3, 0, // tri2 - 10, 0, 8 // tri3 -), -gsSPNTriangles_5b( - 11, 6, 3, // tri0 - 11, 3, 10, // tri1 - 9, 2, 6, // tri2 - 9, 6, 11 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 8, // tri count - 12, 13, 14, // tri0 - 15, 16, 17, // tri1 - 16, 12, 18 // tri2 -), -gsSPNTriangles_5b( - 12, 16, 19, // tri0 - 17, 20, 15, // tri1 - 14, 18, 12, // tri2 - 13, 12, 19 // tri3 -), -gsSPNTriangles_5b( - 15, 19, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hem_1_v[209], 32, 0), + gsSPNTrianglesInit_5b(39, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 6, 8, 9, // tri1 + 10, 7, 11, // tri2 + 5, 1, 0 // tri3 + ), + gsSPNTriangles_5b(12, 8, 7, // tri0 + 12, 7, 10, // tri1 + 13, 14, 15, // tri2 + 13, 15, 16 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 17, 19, 20, // tri1 + 10, 2, 1, // tri2 + 10, 1, 12 // tri3 + ), + gsSPNTriangles_5b(9, 8, 5, // tri0 + 9, 21, 22, // tri1 + 9, 22, 6, // tri2 + 11, 23, 3 // tri3 + ), + gsSPNTriangles_5b(5, 8, 12, // tri0 + 20, 19, 14, // tri1 + 20, 14, 13, // tri2 + 11, 7, 6 // tri3 + ), + gsSPNTriangles_5b(12, 1, 5, // tri0 + 11, 2, 10, // tri1 + 21, 9, 5, // tri2 + 5, 24, 21 // tri3 + ), + gsSPNTriangles_5b(11, 6, 22, // tri0 + 11, 22, 25, // tri1 + 16, 15, 18, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b(11, 25, 26, // tri0 + 11, 26, 5, // tri1 + 3, 2, 11, // tri2 + 4, 0, 3 // tri3 + ), + gsSPNTriangles_5b(4, 3, 23, // tri0 + 27, 28, 29, // tri1 + 27, 29, 30, // tri2 + 31, 25, 22 // tri3 + ), + gsSPVertex(&hem_1_v[241], 12, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 0 // tri2 + ), + gsSPNTriangles_5b(6, 7, 4, // tri0 + 6, 4, 3, // tri1 + 2, 1, 7, // tri2 + 2, 7, 6 // tri3 + ), + gsSPNTriangles_5b(8, 0, 2, // tri0 + 8, 2, 9, // tri1 + 10, 3, 0, // tri2 + 10, 0, 8 // tri3 + ), + gsSPNTriangles_5b(11, 6, 3, // tri0 + 11, 3, 10, // tri1 + 9, 2, 6, // tri2 + 9, 6, 11 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 380, 124), + gsSPVertex(&hem_1_v[253], 27, 0), + gsSPNTrianglesInit_5b(32, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 2, 1 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 13, 8, 14, // tri2 + 15, 14, 7 // tri3 + ), + gsSPNTriangles_5b(9, 11, 7, // tri0 + 12, 16, 10, // tri1 + 7, 14, 8, // tri2 + 4, 17, 18 // tri3 + ), + gsSPNTriangles_5b(19, 6, 1, // tri0 + 4, 3, 17, // tri1 + 7, 10, 15, // tri2 + 20, 21, 2 // tri3 + ), + gsSPNTriangles_5b(3, 22, 23, // tri0 + 20, 24, 14, // tri1 + 10, 16, 23, // tri2 + 15, 25, 14 // tri3 + ), + gsSPNTriangles_5b(6, 13, 24, // tri0 + 16, 12, 17, // tri1 + 17, 3, 16, // tri2 + 14, 24, 13 // tri3 + ), + gsSPNTriangles_5b(24, 2, 6, // tri0 + 23, 26, 10, // tri1 + 23, 16, 3, // tri2 + 14, 25, 20 // tri3 + ), + gsSPNTriangles_5b(11, 10, 7, // tri0 + 2, 24, 20, // tri1 + 5, 22, 3, // tri2 + 2, 21, 0 // tri3 + ), + gsSPNTriangles_5b(10, 26, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&hem_1_v[280], 32, 0), + gsSPNTrianglesInit_5b(39, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 6, 8, 9, // tri1 + 10, 7, 11, // tri2 + 5, 1, 0 // tri3 + ), + gsSPNTriangles_5b(12, 8, 7, // tri0 + 12, 7, 10, // tri1 + 13, 14, 15, // tri2 + 13, 15, 16 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 17, 19, 20, // tri1 + 10, 2, 1, // tri2 + 10, 1, 12 // tri3 + ), + gsSPNTriangles_5b(9, 8, 5, // tri0 + 9, 21, 22, // tri1 + 9, 22, 6, // tri2 + 11, 23, 3 // tri3 + ), + gsSPNTriangles_5b(5, 8, 12, // tri0 + 20, 19, 14, // tri1 + 20, 14, 13, // tri2 + 11, 7, 6 // tri3 + ), + gsSPNTriangles_5b(12, 1, 5, // tri0 + 11, 2, 10, // tri1 + 21, 9, 5, // tri2 + 5, 24, 21 // tri3 + ), + gsSPNTriangles_5b(11, 6, 22, // tri0 + 11, 22, 25, // tri1 + 16, 15, 18, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b(11, 25, 26, // tri0 + 11, 26, 5, // tri1 + 3, 2, 11, // tri2 + 4, 0, 3 // tri3 + ), + gsSPNTriangles_5b(4, 3, 23, // tri0 + 27, 28, 29, // tri1 + 27, 29, 30, // tri2 + 31, 25, 22 // tri3 + ), + gsSPVertex(&hem_1_v[312], 21, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 0 // tri2 + ), + gsSPNTriangles_5b(6, 7, 4, // tri0 + 6, 4, 3, // tri1 + 2, 1, 7, // tri2 + 2, 7, 6 // tri3 + ), + gsSPNTriangles_5b(8, 0, 2, // tri0 + 8, 2, 9, // tri1 + 10, 3, 0, // tri2 + 10, 0, 8 // tri3 + ), + gsSPNTriangles_5b(11, 6, 3, // tri0 + 11, 3, 10, // tri1 + 9, 2, 6, // tri2 + 9, 6, 11 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(8, // tri count + 12, 13, 14, // tri0 + 15, 16, 17, // tri1 + 16, 12, 18 // tri2 + ), + gsSPNTriangles_5b(12, 16, 19, // tri0 + 17, 20, 15, // tri1 + 14, 18, 12, // tri2 + 13, 12, 19 // tri3 + ), + gsSPNTriangles_5b(15, 19, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_hem_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,500,0 }, @@ -675,4 +588,4 @@ static cKF_Joint_R_c cKF_je_r_hem_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_hem_1 = { 26, 7, cKF_je_r_hem_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_hem_1 = { 26, 7, cKF_je_r_hem_1_tbl }; diff --git a/src/data/npc/model/mdl/hgh_1.c b/src/data/npc/model/mdl/hgh_1.c index 3463756c..78bfb94c 100644 --- a/src/data/npc/model/mdl/hgh_1.c +++ b/src/data/npc/model/mdl/hgh_1.c @@ -6,838 +6,737 @@ static Vtx hgh_1_v[] = { }; static Gfx head_hgh_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hgh_1_v[26], 23, 0), -gsSPNTrianglesInit_5b( - 2, // tri count - 0, 1, 2, // tri0 - 2, 1, 3, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 3, // tri count - 4, 5, 6, // tri0 - 7, 8, 9, // tri1 - 10, 6, 11 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 12, 13, 14, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 15, 16, 17, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 3, // tri count - 18, 19, 20, // tri0 - 20, 21, 18, // tri1 - 22, 21, 20 // tri2 -), -gsSPVertex(&hgh_1_v[49], 18, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 11, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 7, 6, 9, // tri0 - 9, 10, 11, // tri1 - 12, 13, 14, // tri2 - 9, 11, 7 // tri3 -), -gsSPNTriangles_5b( - 8, 15, 16, // tri0 - 2, 12, 17, // tri1 - 17, 0, 2, // tri2 - 8, 16, 6 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&hgh_1_v[67], 24, 0), -gsSPNTrianglesInit_5b( - 30, // tri count - 0, 1, 2, // tri0 - 2, 3, 4, // tri1 - 2, 1, 5 // tri2 -), -gsSPNTriangles_5b( - 6, 7, 8, // tri0 - 9, 8, 7, // tri1 - 10, 5, 11, // tri2 - 3, 12, 13 // tri3 -), -gsSPNTriangles_5b( - 4, 3, 14, // tri0 - 5, 10, 6, // tri1 - 15, 1, 0, // tri2 - 16, 0, 4 // tri3 -), -gsSPNTriangles_5b( - 9, 17, 13, // tri0 - 18, 19, 20, // tri1 - 4, 0, 2, // tri2 - 15, 18, 11 // tri3 -), -gsSPNTriangles_5b( - 21, 22, 17, // tri0 - 2, 12, 3, // tri1 - 12, 8, 9, // tri2 - 5, 6, 23 // tri3 -), -gsSPNTriangles_5b( - 8, 12, 2, // tri0 - 23, 6, 8, // tri1 - 11, 18, 20, // tri2 - 21, 17, 9 // tri3 -), -gsSPNTriangles_5b( - 23, 2, 5, // tri0 - 8, 2, 23, // tri1 - 11, 5, 1, // tri2 - 11, 1, 15 // tri3 -), -gsSPNTriangles_5b( - 13, 12, 9, // tri0 - 11, 20, 10, // tri1 - 7, 21, 9, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&hgh_1_v[91], 18, 0), -gsSPNTrianglesInit_5b( - 18, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 3, 7 // tri2 -), -gsSPNTriangles_5b( - 5, 8, 9, // tri0 - 10, 9, 11, // tri1 - 5, 9, 10, // tri2 - 5, 10, 7 // tri3 -), -gsSPNTriangles_5b( - 5, 7, 3, // tri0 - 12, 13, 14, // tri1 - 12, 14, 15, // tri2 - 7, 10, 11 // tri3 -), -gsSPNTriangles_5b( - 7, 11, 6, // tri0 - 16, 0, 17, // tri1 - 15, 2, 12, // tri2 - 13, 17, 14 // tri3 -), -gsSPNTriangles_5b( - 17, 0, 14, // tri0 - 15, 14, 0, // tri1 - 2, 15, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 32, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), -gsDPSetTileSize(0, 0, 0, 252, 252), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hgh_1_v[109], 26, 0), -gsSPNTrianglesInit_5b( - 20, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 1, 7 // tri2 -), -gsSPNTriangles_5b( - 8, 4, 9, // tri0 - 4, 10, 11, // tri1 - 5, 12, 3, // tri2 - 13, 14, 15 // tri3 -), -gsSPNTriangles_5b( - 16, 17, 18, // tri0 - 7, 19, 6, // tri1 - 9, 20, 8, // tri2 - 2, 21, 0 // tri3 -), -gsSPNTriangles_5b( - 18, 14, 16, // tri0 - 15, 22, 13, // tri1 - 14, 18, 23, // tri2 - 23, 15, 14 // tri3 -), -gsSPNTriangles_5b( - 0, 7, 1, // tri0 - 21, 24, 0, // tri1 - 4, 11, 9, // tri2 - 3, 10, 4 // tri3 -), -gsSPNTriangles_5b( - 7, 25, 19, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hgh_1_v[135], 29, 0), -gsSPNTrianglesInit_5b( - 9, // tri count - 0, 1, 2, // tri0 - 0, 3, 4, // tri1 - 2, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 7, 8, 9, // tri0 - 6, 3, 0, // tri1 - 3, 7, 4, // tri2 - 9, 10, 4 // tri3 -), -gsSPNTriangles_5b( - 6, 0, 2, // tri0 - 9, 4, 7, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 4, // tri count - 11, 12, 13, // tri0 - 11, 13, 14, // tri1 - 11, 15, 12 // tri2 -), -gsSPNTriangles_5b( - 11, 14, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 4, // tri count - 17, 18, 19, // tri0 - 18, 20, 19, // tri1 - 21, 17, 19 // tri2 -), -gsSPNTriangles_5b( - 19, 22, 21, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 32, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), -gsDPSetTileSize(0, 0, 0, 252, 252), -gsSPNTrianglesInit_5b( - 1, // tri count - 23, 24, 25, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 26, 27, 28, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPVertex(&hgh_1_v[164], 27, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 2, // tri count - 0, 1, 2, // tri0 - 3, 1, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 4, 5, 6, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 7, 8, 9, // tri0 - 10, 11, 12, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 13, 14, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 8, // tri count - 16, 17, 18, // tri0 - 19, 20, 21, // tri1 - 21, 20, 22 // tri2 -), -gsSPNTriangles_5b( - 23, 19, 24, // tri0 - 21, 24, 19, // tri1 - 18, 25, 16, // tri2 - 25, 18, 23 // tri3 -), -gsSPNTriangles_5b( - 24, 26, 23, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&hgh_1_v[191], 14, 0), -gsSPNTrianglesInit_5b( - 12, // tri count - 0, 1, 2, // tri0 - 2, 1, 3, // tri1 - 4, 5, 2 // tri2 -), -gsSPNTriangles_5b( - 2, 5, 6, // tri0 - 2, 6, 0, // tri1 - 2, 3, 4, // tri2 - 7, 8, 9 // tri3 -), -gsSPNTriangles_5b( - 9, 8, 10, // tri0 - 9, 10, 11, // tri1 - 9, 12, 7, // tri2 - 9, 13, 12 // tri3 -), -gsSPNTriangles_5b( - 11, 13, 9, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgh_1_v[26], 23, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(3, // tri count + 4, 5, 6, // tri0 + 7, 8, 9, // tri1 + 10, 6, 11 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 12, 13, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(3, // tri count + 18, 19, 20, // tri0 + 20, 21, 18, // tri1 + 22, 21, 20 // tri2 + ), + gsSPVertex(&hgh_1_v[49], 18, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(7, 6, 9, // tri0 + 9, 10, 11, // tri1 + 12, 13, 14, // tri2 + 9, 11, 7 // tri3 + ), + gsSPNTriangles_5b(8, 15, 16, // tri0 + 2, 12, 17, // tri1 + 17, 0, 2, // tri2 + 8, 16, 6 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&hgh_1_v[67], 24, 0), + gsSPNTrianglesInit_5b(30, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 2, 1, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 9, 8, 7, // tri1 + 10, 5, 11, // tri2 + 3, 12, 13 // tri3 + ), + gsSPNTriangles_5b(4, 3, 14, // tri0 + 5, 10, 6, // tri1 + 15, 1, 0, // tri2 + 16, 0, 4 // tri3 + ), + gsSPNTriangles_5b(9, 17, 13, // tri0 + 18, 19, 20, // tri1 + 4, 0, 2, // tri2 + 15, 18, 11 // tri3 + ), + gsSPNTriangles_5b(21, 22, 17, // tri0 + 2, 12, 3, // tri1 + 12, 8, 9, // tri2 + 5, 6, 23 // tri3 + ), + gsSPNTriangles_5b(8, 12, 2, // tri0 + 23, 6, 8, // tri1 + 11, 18, 20, // tri2 + 21, 17, 9 // tri3 + ), + gsSPNTriangles_5b(23, 2, 5, // tri0 + 8, 2, 23, // tri1 + 11, 5, 1, // tri2 + 11, 1, 15 // tri3 + ), + gsSPNTriangles_5b(13, 12, 9, // tri0 + 11, 20, 10, // tri1 + 7, 21, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&hgh_1_v[91], 18, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b(5, 8, 9, // tri0 + 10, 9, 11, // tri1 + 5, 9, 10, // tri2 + 5, 10, 7 // tri3 + ), + gsSPNTriangles_5b(5, 7, 3, // tri0 + 12, 13, 14, // tri1 + 12, 14, 15, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b(7, 11, 6, // tri0 + 16, 0, 17, // tri1 + 15, 2, 12, // tri2 + 13, 17, 14 // tri3 + ), + gsSPNTriangles_5b(17, 0, 14, // tri0 + 15, 14, 0, // tri1 + 2, 15, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 32, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 252), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgh_1_v[109], 26, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 1, 7 // tri2 + ), + gsSPNTriangles_5b(8, 4, 9, // tri0 + 4, 10, 11, // tri1 + 5, 12, 3, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 7, 19, 6, // tri1 + 9, 20, 8, // tri2 + 2, 21, 0 // tri3 + ), + gsSPNTriangles_5b(18, 14, 16, // tri0 + 15, 22, 13, // tri1 + 14, 18, 23, // tri2 + 23, 15, 14 // tri3 + ), + gsSPNTriangles_5b(0, 7, 1, // tri0 + 21, 24, 0, // tri1 + 4, 11, 9, // tri2 + 3, 10, 4 // tri3 + ), + gsSPNTriangles_5b(7, 25, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgh_1_v[135], 29, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 2, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 6, 3, 0, // tri1 + 3, 7, 4, // tri2 + 9, 10, 4 // tri3 + ), + gsSPNTriangles_5b(6, 0, 2, // tri0 + 9, 4, 7, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 11, 12, 13, // tri0 + 11, 13, 14, // tri1 + 11, 15, 12 // tri2 + ), + gsSPNTriangles_5b(11, 14, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(4, // tri count + 17, 18, 19, // tri0 + 18, 20, 19, // tri1 + 21, 17, 19 // tri2 + ), + gsSPNTriangles_5b(19, 22, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 32, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 252), + gsSPNTrianglesInit_5b(1, // tri count + 23, 24, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 26, 27, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPVertex(&hgh_1_v[164], 27, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 4, 5, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPNTrianglesInit_5b(2, // tri count + 7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 13, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(8, // tri count + 16, 17, 18, // tri0 + 19, 20, 21, // tri1 + 21, 20, 22 // tri2 + ), + gsSPNTriangles_5b(23, 19, 24, // tri0 + 21, 24, 19, // tri1 + 18, 25, 16, // tri2 + 25, 18, 23 // tri3 + ), + gsSPNTriangles_5b(24, 26, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&hgh_1_v[191], 14, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 5, 2 // tri2 + ), + gsSPNTriangles_5b(2, 5, 6, // tri0 + 2, 6, 0, // tri1 + 2, 3, 4, // tri2 + 7, 8, 9 // tri3 + ), + gsSPNTriangles_5b(9, 8, 10, // tri0 + 9, 10, 11, // tri1 + 9, 12, 7, // tri2 + 9, 13, 12 // tri3 + ), + gsSPNTriangles_5b(11, 13, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx mouth_hgh_model[] = { -gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hgh_1_v[0], 5, 0), -gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&hgh_1_v[5], 21, 5), -gsSPNTrianglesInit_5b( - 10, // tri count - 0, 3, 5, // tri0 - 1, 0, 6, // tri1 - 3, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 9, 10, // tri0 - 4, 1, 11, // tri1 - 4, 12, 13, // tri2 - 4, 14, 2 // tri3 -), -gsSPNTriangles_5b( - 4, 15, 16, // tri0 - 1, 17, 18, // tri1 - 3, 2, 19, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 5, // tri count - 20, 21, 22, // tri0 - 21, 23, 24, // tri1 - 25, 23, 21 // tri2 -), -gsSPNTriangles_5b( - 25, 21, 20, // tri0 - 22, 21, 24, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgh_1_v[0], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hgh_1_v[5], 21, 5), + gsSPNTrianglesInit_5b(10, // tri count + 0, 3, 5, // tri0 + 1, 0, 6, // tri1 + 3, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 9, 10, // tri0 + 4, 1, 11, // tri1 + 4, 12, 13, // tri2 + 4, 14, 2 // tri3 + ), + gsSPNTriangles_5b(4, 15, 16, // tri0 + 1, 17, 18, // tri1 + 3, 2, 19, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(5, // tri count + 20, 21, 22, // tri0 + 21, 23, 24, // tri1 + 25, 23, 21 // tri2 + ), + gsSPNTriangles_5b(25, 21, 20, // tri0 + 22, 21, 24, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_hgh_model[] = { -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hgh_1_v[241], 5, 0), -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&hgh_1_v[246], 16, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 5, 6, // tri0 - 4, 7, 8, // tri1 - 4, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 0, 1, 11, // tri0 - 2, 4, 12, // tri1 - 0, 13, 14, // tri2 - 3, 0, 15 // tri3 -), -gsSPNTriangles_5b( - 4, 3, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 20, 19, 18, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgh_1_v[241], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hgh_1_v[246], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(0, 1, 11, // tri0 + 2, 4, 12, // tri1 + 0, 13, 14, // tri2 + 3, 0, 15 // tri3 + ), + gsSPNTriangles_5b(4, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 19, 18, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_hgh_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hgh_1_v[262], 4, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&hgh_1_v[266], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 0, 6, 7, // tri1 - 2, 0, 8 // tri2 -), -gsSPNTriangles_5b( - 3, 2, 9, // tri0 - 2, 11, 10, // tri1 - 3, 13, 12, // tri2 - 1, 3, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgh_1_v[262], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hgh_1_v[266], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 2, 0, 8 // tri2 + ), + gsSPNTriangles_5b(3, 2, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 1, 3, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_hgh_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hgh_1_v[205], 5, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&hgh_1_v[210], 16, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 5, 6, // tri0 - 4, 7, 8, // tri1 - 4, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 11, // tri0 - 4, 2, 12, // tri1 - 0, 13, 14, // tri2 - 0, 3, 15 // tri3 -), -gsSPNTriangles_5b( - 3, 4, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 18, 17, 20, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgh_1_v[205], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hgh_1_v[210], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 + ), + gsSPNTriangles_5b(3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_hgh_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hgh_1_v[226], 4, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&hgh_1_v[230], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 0, 6, 7, // tri1 - 0, 2, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 3, 9, // tri0 - 2, 11, 10, // tri1 - 3, 13, 12, // tri2 - 3, 1, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgh_1_v[226], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hgh_1_v[230], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 + ), + gsSPNTriangles_5b(2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_hgh_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hgh_1_v[277], 11, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&hgh_1_v[288], 20, 11), -gsSPNTrianglesInit_5b( - 10, // tri count - 3, 12, 11, // tri0 - 3, 13, 14, // tri1 - 5, 15, 16 // tri2 -), -gsSPNTriangles_5b( - 5, 17, 18, // tri0 - 5, 7, 19, // tri1 - 7, 1, 20, // tri2 - 0, 21, 22 // tri3 -), -gsSPNTriangles_5b( - 7, 23, 24, // tri0 - 2, 0, 25, // tri1 - 0, 3, 26, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 4, // tri count - 10, 27, 4, // tri0 - 10, 9, 28, // tri1 - 9, 8, 29 // tri2 -), -gsSPNTriangles_5b( - 8, 6, 30, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&hgh_1_v[308], 20, 0), -gsSPNTrianglesInit_5b( - 3, // tri count - 0, 1, 2, // tri0 - 3, 4, 2, // tri1 - 5, 6, 7 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 8, 9, 10, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 11, 12, 13, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 3, // tri count - 14, 15, 16, // tri0 - 17, 18, 16, // tri1 - 16, 19, 14 // tri2 -), -gsSPVertex(&hgh_1_v[328], 17, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 18, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 3, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 7, 6, 5, // tri0 - 8, 9, 10, // tri1 - 6, 11, 0, // tri2 - 10, 12, 13 // tri3 -), -gsSPNTriangles_5b( - 6, 14, 11, // tri0 - 2, 9, 4, // tri1 - 15, 7, 16, // tri2 - 13, 8, 10 // tri3 -), -gsSPNTriangles_5b( - 13, 5, 8, // tri0 - 7, 5, 16, // tri1 - 0, 3, 6, // tri2 - 0, 2, 4 // tri3 -), -gsSPNTriangles_5b( - 15, 11, 14, // tri0 - 10, 9, 2, // tri1 - 5, 4, 8, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgh_1_v[277], 11, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hgh_1_v[288], 20, 11), + gsSPNTrianglesInit_5b(10, // tri count + 3, 12, 11, // tri0 + 3, 13, 14, // tri1 + 5, 15, 16 // tri2 + ), + gsSPNTriangles_5b(5, 17, 18, // tri0 + 5, 7, 19, // tri1 + 7, 1, 20, // tri2 + 0, 21, 22 // tri3 + ), + gsSPNTriangles_5b(7, 23, 24, // tri0 + 2, 0, 25, // tri1 + 0, 3, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 10, 27, 4, // tri0 + 10, 9, 28, // tri1 + 9, 8, 29 // tri2 + ), + gsSPNTriangles_5b(8, 6, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&hgh_1_v[308], 20, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 5, 6, 7 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 8, 9, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 11, 12, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(3, // tri count + 14, 15, 16, // tri0 + 17, 18, 16, // tri1 + 16, 19, 14 // tri2 + ), + gsSPVertex(&hgh_1_v[328], 17, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 6, 5, // tri0 + 8, 9, 10, // tri1 + 6, 11, 0, // tri2 + 10, 12, 13 // tri3 + ), + gsSPNTriangles_5b(6, 14, 11, // tri0 + 2, 9, 4, // tri1 + 15, 7, 16, // tri2 + 13, 8, 10 // tri3 + ), + gsSPNTriangles_5b(13, 5, 8, // tri0 + 7, 5, 16, // tri1 + 0, 3, 6, // tri2 + 0, 2, 4 // tri3 + ), + gsSPNTriangles_5b(15, 11, 14, // tri0 + 10, 9, 2, // tri1 + 5, 4, 8, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail1_hgh_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hgh_1_v[365], 4, 0), -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000680, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&hgh_1_v[369], 12, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 1, 4, 5, // tri0 - 2, 6, 7, // tri1 - 2, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 1, 10, 11, // tri0 - 3, 1, 12, // tri1 - 1, 0, 13, // tri2 - 2, 3, 14 // tri3 -), -gsSPNTriangles_5b( - 0, 2, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgh_1_v[365], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x680, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hgh_1_v[369], 12, 4), + gsSPNTrianglesInit_5b(8, // tri count + 1, 4, 5, // tri0 + 2, 6, 7, // tri1 + 2, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 10, 11, // tri0 + 3, 1, 12, // tri1 + 1, 0, 13, // tri2 + 2, 3, 14 // tri3 + ), + gsSPNTriangles_5b(0, 2, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail2_hgh_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hgh_1_v[345], 4, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000680, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&hgh_1_v[349], 16, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 4, 5, // tri0 - 0, 6, 7, // tri1 - 3, 0, 8 // tri2 -), -gsSPNTriangles_5b( - 0, 1, 9, // tri0 - 3, 11, 10, // tri1 - 1, 13, 12, // tri2 - 2, 3, 14 // tri3 -), -gsSPNTriangles_5b( - 1, 2, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 16, 17, 18, // tri0 - 18, 17, 19, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgh_1_v[345], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x680, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hgh_1_v[349], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 0, 4, 5, // tri0 + 0, 6, 7, // tri1 + 3, 0, 8 // tri2 + ), + gsSPNTriangles_5b(0, 1, 9, // tri0 + 3, 11, 10, // tri1 + 1, 13, 12, // tri2 + 2, 3, 14 // tri3 + ), + gsSPNTriangles_5b(1, 2, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 18, 17, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_hgh_model[] = { -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hgh_1_v[412], 5, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&hgh_1_v[417], 17, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 4, 0, 5, // tri0 - 0, 7, 6, // tri1 - 3, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 1, 2, 10, // tri0 - 2, 3, 11, // tri1 - 3, 4, 12, // tri2 - 2, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 15, 16, 17, // tri0 - 18, 19, 20, // tri1 - 18, 21, 19 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgh_1_v[412], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hgh_1_v[417], 17, 5), + gsSPNTrianglesInit_5b(7, // tri count + 4, 0, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 + ), + gsSPNTriangles_5b(1, 2, 10, // tri0 + 2, 3, 11, // tri1 + 3, 4, 12, // tri2 + 2, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_hgh_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hgh_1_v[434], 9, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 1, 3, 4, // tri1 - 1, 5, 2 // tri2 -), -gsSPNTriangles_5b( - 6, 7, 8, // tri0 - 6, 8, 0, // tri1 - 0, 2, 6, // tri2 - 4, 5, 1 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgh_1_v[434], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 1, 5, 2 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 6, 8, 0, // tri1 + 0, 2, 6, // tri2 + 4, 5, 1 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_hgh_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hgh_1_v[381], 5, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&hgh_1_v[386], 17, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 4, 5, // tri0 - 0, 7, 6, // tri1 - 3, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 1, 10, // tri0 - 3, 2, 11, // tri1 - 4, 3, 12, // tri2 - 2, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 15, 16, 17, // tri0 - 18, 19, 20, // tri1 - 19, 21, 20 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgh_1_v[381], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hgh_1_v[386], 17, 5), + gsSPNTrianglesInit_5b(7, // tri count + 0, 4, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 + ), + gsSPNTriangles_5b(2, 1, 10, // tri0 + 3, 2, 11, // tri1 + 4, 3, 12, // tri2 + 2, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_hgh_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hgh_1_v[403], 9, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 3, 4, 1, // tri1 - 0, 5, 1 // tri2 -), -gsSPNTriangles_5b( - 6, 7, 8, // tri0 - 2, 6, 8, // tri1 - 8, 0, 2, // tri2 - 1, 5, 3 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgh_1_v[403], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 0, 5, 1 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 2, 6, 8, // tri1 + 8, 0, 2, // tri2 + 1, 5, 3 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx base_hgh_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hgh_1_v[443], 15, 0), -gsSPNTrianglesInit_5b( - 16, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 2, 1, 6 // tri2 -), -gsSPNTriangles_5b( - 3, 7, 8, // tri0 - 1, 8, 9, // tri1 - 0, 4, 8, // tri2 - 10, 6, 9 // tri3 -), -gsSPNTriangles_5b( - 7, 3, 11, // tri0 - 7, 11, 12, // tri1 - 13, 8, 7, // tri2 - 7, 12, 13 // tri3 -), -gsSPNTriangles_5b( - 13, 12, 14, // tri0 - 8, 1, 0, // tri1 - 8, 4, 3, // tri2 - 0, 5, 4 // tri3 -), -gsSPNTriangles_5b( - 9, 6, 1, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgh_1_v[443], 15, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 1, 6 // tri2 + ), + gsSPNTriangles_5b(3, 7, 8, // tri0 + 1, 8, 9, // tri1 + 0, 4, 8, // tri2 + 10, 6, 9 // tri3 + ), + gsSPNTriangles_5b(7, 3, 11, // tri0 + 7, 11, 12, // tri1 + 13, 8, 7, // tri2 + 7, 12, 13 // tri3 + ), + gsSPNTriangles_5b(13, 12, 14, // tri0 + 8, 1, 0, // tri1 + 8, 4, 3, // tri2 + 0, 5, 4 // tri3 + ), + gsSPNTriangles_5b(9, 6, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_hgh_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,600,0 }, @@ -869,4 +768,4 @@ static cKF_Joint_R_c cKF_je_r_hgh_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_hgh_1 = { 26, 14, cKF_je_r_hgh_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_hgh_1 = { 26, 14, cKF_je_r_hgh_1_tbl }; diff --git a/src/data/npc/model/mdl/hgs_1.c b/src/data/npc/model/mdl/hgs_1.c index 71e21167..245fdc63 100644 --- a/src/data/npc/model/mdl/hgs_1.c +++ b/src/data/npc/model/mdl/hgs_1.c @@ -6,838 +6,737 @@ static Vtx hgs_1_v[] = { }; static Gfx head_hgs_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hgs_1_v[26], 23, 0), -gsSPNTrianglesInit_5b( - 2, // tri count - 0, 1, 2, // tri0 - 2, 1, 3, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 3, // tri count - 4, 5, 6, // tri0 - 7, 8, 9, // tri1 - 10, 6, 11 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 12, 13, 14, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 15, 16, 17, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 3, // tri count - 18, 19, 20, // tri0 - 20, 21, 18, // tri1 - 22, 21, 20 // tri2 -), -gsSPVertex(&hgs_1_v[49], 18, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 11, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 7, 6, 9, // tri0 - 9, 10, 11, // tri1 - 12, 13, 14, // tri2 - 9, 11, 7 // tri3 -), -gsSPNTriangles_5b( - 8, 15, 16, // tri0 - 2, 12, 17, // tri1 - 17, 0, 2, // tri2 - 8, 16, 6 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&hgs_1_v[67], 24, 0), -gsSPNTrianglesInit_5b( - 30, // tri count - 0, 1, 2, // tri0 - 2, 3, 4, // tri1 - 2, 1, 5 // tri2 -), -gsSPNTriangles_5b( - 6, 7, 8, // tri0 - 9, 8, 7, // tri1 - 10, 5, 11, // tri2 - 3, 12, 13 // tri3 -), -gsSPNTriangles_5b( - 4, 3, 14, // tri0 - 5, 10, 6, // tri1 - 15, 1, 0, // tri2 - 16, 0, 4 // tri3 -), -gsSPNTriangles_5b( - 9, 17, 13, // tri0 - 18, 19, 20, // tri1 - 4, 0, 2, // tri2 - 15, 18, 11 // tri3 -), -gsSPNTriangles_5b( - 21, 22, 17, // tri0 - 2, 12, 3, // tri1 - 12, 8, 9, // tri2 - 5, 6, 23 // tri3 -), -gsSPNTriangles_5b( - 8, 12, 2, // tri0 - 23, 6, 8, // tri1 - 11, 18, 20, // tri2 - 21, 17, 9 // tri3 -), -gsSPNTriangles_5b( - 23, 2, 5, // tri0 - 8, 2, 23, // tri1 - 11, 5, 1, // tri2 - 11, 1, 15 // tri3 -), -gsSPNTriangles_5b( - 13, 12, 9, // tri0 - 11, 20, 10, // tri1 - 7, 21, 9, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&hgs_1_v[91], 18, 0), -gsSPNTrianglesInit_5b( - 18, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 3, 7 // tri2 -), -gsSPNTriangles_5b( - 5, 8, 9, // tri0 - 10, 9, 11, // tri1 - 5, 9, 10, // tri2 - 5, 10, 7 // tri3 -), -gsSPNTriangles_5b( - 5, 7, 3, // tri0 - 12, 13, 14, // tri1 - 12, 14, 15, // tri2 - 7, 10, 11 // tri3 -), -gsSPNTriangles_5b( - 7, 11, 6, // tri0 - 16, 0, 17, // tri1 - 15, 2, 12, // tri2 - 13, 17, 14 // tri3 -), -gsSPNTriangles_5b( - 17, 0, 14, // tri0 - 15, 14, 0, // tri1 - 2, 15, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 32, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), -gsDPSetTileSize(0, 0, 0, 252, 252), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hgs_1_v[109], 26, 0), -gsSPNTrianglesInit_5b( - 20, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 1, 7 // tri2 -), -gsSPNTriangles_5b( - 8, 4, 9, // tri0 - 4, 10, 11, // tri1 - 5, 12, 3, // tri2 - 13, 14, 15 // tri3 -), -gsSPNTriangles_5b( - 16, 17, 18, // tri0 - 7, 19, 6, // tri1 - 9, 20, 8, // tri2 - 2, 21, 0 // tri3 -), -gsSPNTriangles_5b( - 18, 14, 16, // tri0 - 15, 22, 13, // tri1 - 14, 18, 23, // tri2 - 23, 15, 14 // tri3 -), -gsSPNTriangles_5b( - 0, 7, 1, // tri0 - 21, 24, 0, // tri1 - 4, 11, 9, // tri2 - 3, 10, 4 // tri3 -), -gsSPNTriangles_5b( - 7, 25, 19, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hgs_1_v[135], 29, 0), -gsSPNTrianglesInit_5b( - 9, // tri count - 0, 1, 2, // tri0 - 0, 3, 4, // tri1 - 2, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 7, 8, 9, // tri0 - 6, 3, 0, // tri1 - 3, 7, 4, // tri2 - 9, 10, 4 // tri3 -), -gsSPNTriangles_5b( - 6, 0, 2, // tri0 - 9, 4, 7, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 4, // tri count - 11, 12, 13, // tri0 - 11, 13, 14, // tri1 - 11, 15, 12 // tri2 -), -gsSPNTriangles_5b( - 11, 14, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 4, // tri count - 17, 18, 19, // tri0 - 18, 20, 19, // tri1 - 21, 17, 19 // tri2 -), -gsSPNTriangles_5b( - 19, 22, 21, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 32, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), -gsDPSetTileSize(0, 0, 0, 252, 252), -gsSPNTrianglesInit_5b( - 1, // tri count - 23, 24, 25, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 26, 27, 28, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPVertex(&hgs_1_v[164], 27, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 2, // tri count - 0, 1, 2, // tri0 - 3, 1, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 4, 5, 6, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 7, 8, 9, // tri0 - 10, 11, 12, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 13, 14, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 8, // tri count - 16, 17, 18, // tri0 - 19, 20, 21, // tri1 - 21, 20, 22 // tri2 -), -gsSPNTriangles_5b( - 23, 19, 24, // tri0 - 21, 24, 19, // tri1 - 18, 25, 16, // tri2 - 25, 18, 23 // tri3 -), -gsSPNTriangles_5b( - 24, 26, 23, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&hgs_1_v[191], 14, 0), -gsSPNTrianglesInit_5b( - 12, // tri count - 0, 1, 2, // tri0 - 2, 1, 3, // tri1 - 4, 5, 2 // tri2 -), -gsSPNTriangles_5b( - 2, 5, 6, // tri0 - 2, 6, 0, // tri1 - 2, 3, 4, // tri2 - 7, 8, 9 // tri3 -), -gsSPNTriangles_5b( - 9, 8, 10, // tri0 - 9, 10, 11, // tri1 - 9, 12, 7, // tri2 - 9, 13, 12 // tri3 -), -gsSPNTriangles_5b( - 11, 13, 9, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgs_1_v[26], 23, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(3, // tri count + 4, 5, 6, // tri0 + 7, 8, 9, // tri1 + 10, 6, 11 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 12, 13, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(3, // tri count + 18, 19, 20, // tri0 + 20, 21, 18, // tri1 + 22, 21, 20 // tri2 + ), + gsSPVertex(&hgs_1_v[49], 18, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(7, 6, 9, // tri0 + 9, 10, 11, // tri1 + 12, 13, 14, // tri2 + 9, 11, 7 // tri3 + ), + gsSPNTriangles_5b(8, 15, 16, // tri0 + 2, 12, 17, // tri1 + 17, 0, 2, // tri2 + 8, 16, 6 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&hgs_1_v[67], 24, 0), + gsSPNTrianglesInit_5b(30, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 2, 1, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 9, 8, 7, // tri1 + 10, 5, 11, // tri2 + 3, 12, 13 // tri3 + ), + gsSPNTriangles_5b(4, 3, 14, // tri0 + 5, 10, 6, // tri1 + 15, 1, 0, // tri2 + 16, 0, 4 // tri3 + ), + gsSPNTriangles_5b(9, 17, 13, // tri0 + 18, 19, 20, // tri1 + 4, 0, 2, // tri2 + 15, 18, 11 // tri3 + ), + gsSPNTriangles_5b(21, 22, 17, // tri0 + 2, 12, 3, // tri1 + 12, 8, 9, // tri2 + 5, 6, 23 // tri3 + ), + gsSPNTriangles_5b(8, 12, 2, // tri0 + 23, 6, 8, // tri1 + 11, 18, 20, // tri2 + 21, 17, 9 // tri3 + ), + gsSPNTriangles_5b(23, 2, 5, // tri0 + 8, 2, 23, // tri1 + 11, 5, 1, // tri2 + 11, 1, 15 // tri3 + ), + gsSPNTriangles_5b(13, 12, 9, // tri0 + 11, 20, 10, // tri1 + 7, 21, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&hgs_1_v[91], 18, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b(5, 8, 9, // tri0 + 10, 9, 11, // tri1 + 5, 9, 10, // tri2 + 5, 10, 7 // tri3 + ), + gsSPNTriangles_5b(5, 7, 3, // tri0 + 12, 13, 14, // tri1 + 12, 14, 15, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b(7, 11, 6, // tri0 + 16, 0, 17, // tri1 + 15, 2, 12, // tri2 + 13, 17, 14 // tri3 + ), + gsSPNTriangles_5b(17, 0, 14, // tri0 + 15, 14, 0, // tri1 + 2, 15, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 32, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 252), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgs_1_v[109], 26, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 1, 7 // tri2 + ), + gsSPNTriangles_5b(8, 4, 9, // tri0 + 4, 10, 11, // tri1 + 5, 12, 3, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 7, 19, 6, // tri1 + 9, 20, 8, // tri2 + 2, 21, 0 // tri3 + ), + gsSPNTriangles_5b(18, 14, 16, // tri0 + 15, 22, 13, // tri1 + 14, 18, 23, // tri2 + 23, 15, 14 // tri3 + ), + gsSPNTriangles_5b(0, 7, 1, // tri0 + 21, 24, 0, // tri1 + 4, 11, 9, // tri2 + 3, 10, 4 // tri3 + ), + gsSPNTriangles_5b(7, 25, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgs_1_v[135], 29, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 2, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 6, 3, 0, // tri1 + 3, 7, 4, // tri2 + 9, 10, 4 // tri3 + ), + gsSPNTriangles_5b(6, 0, 2, // tri0 + 9, 4, 7, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 11, 12, 13, // tri0 + 11, 13, 14, // tri1 + 11, 15, 12 // tri2 + ), + gsSPNTriangles_5b(11, 14, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(4, // tri count + 17, 18, 19, // tri0 + 18, 20, 19, // tri1 + 21, 17, 19 // tri2 + ), + gsSPNTriangles_5b(19, 22, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 32, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 252), + gsSPNTrianglesInit_5b(1, // tri count + 23, 24, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 26, 27, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPVertex(&hgs_1_v[164], 27, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 4, 5, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPNTrianglesInit_5b(2, // tri count + 7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 13, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(8, // tri count + 16, 17, 18, // tri0 + 19, 20, 21, // tri1 + 21, 20, 22 // tri2 + ), + gsSPNTriangles_5b(23, 19, 24, // tri0 + 21, 24, 19, // tri1 + 18, 25, 16, // tri2 + 25, 18, 23 // tri3 + ), + gsSPNTriangles_5b(24, 26, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&hgs_1_v[191], 14, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 5, 2 // tri2 + ), + gsSPNTriangles_5b(2, 5, 6, // tri0 + 2, 6, 0, // tri1 + 2, 3, 4, // tri2 + 7, 8, 9 // tri3 + ), + gsSPNTriangles_5b(9, 8, 10, // tri0 + 9, 10, 11, // tri1 + 9, 12, 7, // tri2 + 9, 13, 12 // tri3 + ), + gsSPNTriangles_5b(11, 13, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx mouth_hgs_model[] = { -gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hgs_1_v[0], 5, 0), -gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&hgs_1_v[5], 21, 5), -gsSPNTrianglesInit_5b( - 10, // tri count - 0, 3, 5, // tri0 - 1, 0, 6, // tri1 - 3, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 9, 10, // tri0 - 4, 1, 11, // tri1 - 4, 12, 13, // tri2 - 4, 14, 2 // tri3 -), -gsSPNTriangles_5b( - 4, 15, 16, // tri0 - 1, 17, 18, // tri1 - 3, 2, 19, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 5, // tri count - 20, 21, 22, // tri0 - 21, 23, 24, // tri1 - 25, 23, 21 // tri2 -), -gsSPNTriangles_5b( - 25, 21, 20, // tri0 - 22, 21, 24, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgs_1_v[0], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hgs_1_v[5], 21, 5), + gsSPNTrianglesInit_5b(10, // tri count + 0, 3, 5, // tri0 + 1, 0, 6, // tri1 + 3, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 9, 10, // tri0 + 4, 1, 11, // tri1 + 4, 12, 13, // tri2 + 4, 14, 2 // tri3 + ), + gsSPNTriangles_5b(4, 15, 16, // tri0 + 1, 17, 18, // tri1 + 3, 2, 19, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(5, // tri count + 20, 21, 22, // tri0 + 21, 23, 24, // tri1 + 25, 23, 21 // tri2 + ), + gsSPNTriangles_5b(25, 21, 20, // tri0 + 22, 21, 24, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_hgs_model[] = { -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hgs_1_v[239], 4, 0), -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&hgs_1_v[243], 16, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 0, 4, // tri0 - 3, 5, 6, // tri1 - 0, 1, 7 // tri2 -), -gsSPNTriangles_5b( - 0, 8, 9, // tri0 - 1, 10, 11, // tri1 - 1, 3, 12, // tri2 - 3, 2, 13 // tri3 -), -gsSPNTriangles_5b( - 2, 14, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 16, 17, 18, // tri0 - 18, 19, 16, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgs_1_v[239], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hgs_1_v[243], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 0, 4, // tri0 + 3, 5, 6, // tri1 + 0, 1, 7 // tri2 + ), + gsSPNTriangles_5b(0, 8, 9, // tri0 + 1, 10, 11, // tri1 + 1, 3, 12, // tri2 + 3, 2, 13 // tri3 + ), + gsSPNTriangles_5b(2, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 18, 19, 16, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_hgs_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hgs_1_v[259], 3, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&hgs_1_v[262], 11, 3), -gsSPNTrianglesInit_5b( - 7, // tri count - 2, 3, 4, // tri0 - 0, 5, 6, // tri1 - 1, 0, 7 // tri2 -), -gsSPNTriangles_5b( - 2, 1, 8, // tri0 - 1, 10, 9, // tri1 - 0, 2, 11, // tri2 - 1, 12, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgs_1_v[259], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hgs_1_v[262], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 2, 3, 4, // tri0 + 0, 5, 6, // tri1 + 1, 0, 7 // tri2 + ), + gsSPNTriangles_5b(2, 1, 8, // tri0 + 1, 10, 9, // tri1 + 0, 2, 11, // tri2 + 1, 12, 13 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_hgs_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hgs_1_v[205], 4, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&hgs_1_v[209], 16, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 2, 4, // tri0 - 3, 5, 6, // tri1 - 1, 0, 7 // tri2 -), -gsSPNTriangles_5b( - 0, 8, 9, // tri0 - 1, 10, 11, // tri1 - 3, 1, 12, // tri2 - 2, 3, 13 // tri3 -), -gsSPNTriangles_5b( - 2, 14, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 16, 17, 18, // tri0 - 18, 19, 16, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgs_1_v[205], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hgs_1_v[209], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 0, 2, 4, // tri0 + 3, 5, 6, // tri1 + 1, 0, 7 // tri2 + ), + gsSPNTriangles_5b(0, 8, 9, // tri0 + 1, 10, 11, // tri1 + 3, 1, 12, // tri2 + 2, 3, 13 // tri3 + ), + gsSPNTriangles_5b(2, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 18, 19, 16, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_hgs_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hgs_1_v[225], 3, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&hgs_1_v[228], 11, 3), -gsSPNTrianglesInit_5b( - 7, // tri count - 2, 3, 4, // tri0 - 0, 5, 6, // tri1 - 0, 1, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 2, 8, // tri0 - 1, 10, 9, // tri1 - 2, 0, 11, // tri2 - 1, 12, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgs_1_v[225], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hgs_1_v[228], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 2, 3, 4, // tri0 + 0, 5, 6, // tri1 + 0, 1, 7 // tri2 + ), + gsSPNTriangles_5b(1, 2, 8, // tri0 + 1, 10, 9, // tri1 + 2, 0, 11, // tri2 + 1, 12, 13 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_hgs_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hgs_1_v[273], 11, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&hgs_1_v[284], 20, 11), -gsSPNTrianglesInit_5b( - 10, // tri count - 3, 12, 11, // tri0 - 3, 13, 14, // tri1 - 5, 15, 16 // tri2 -), -gsSPNTriangles_5b( - 5, 17, 18, // tri0 - 5, 7, 19, // tri1 - 7, 1, 20, // tri2 - 0, 21, 22 // tri3 -), -gsSPNTriangles_5b( - 7, 23, 24, // tri0 - 2, 0, 25, // tri1 - 0, 3, 26, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 4, // tri count - 10, 27, 4, // tri0 - 10, 9, 28, // tri1 - 9, 8, 29 // tri2 -), -gsSPNTriangles_5b( - 8, 6, 30, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&hgs_1_v[304], 20, 0), -gsSPNTrianglesInit_5b( - 3, // tri count - 0, 1, 2, // tri0 - 3, 4, 2, // tri1 - 5, 6, 7 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 8, 9, 10, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 11, 12, 13, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 3, // tri count - 14, 15, 16, // tri0 - 17, 18, 16, // tri1 - 16, 19, 14 // tri2 -), -gsSPVertex(&hgs_1_v[324], 19, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 18, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 3, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 7, 6, 5, // tri0 - 8, 9, 10, // tri1 - 6, 11, 0, // tri2 - 10, 12, 13 // tri3 -), -gsSPNTriangles_5b( - 14, 15, 11, // tri0 - 2, 9, 16, // tri1 - 17, 7, 18, // tri2 - 13, 8, 10 // tri3 -), -gsSPNTriangles_5b( - 13, 5, 8, // tri0 - 7, 5, 18, // tri1 - 0, 3, 6, // tri2 - 0, 2, 4 // tri3 -), -gsSPNTriangles_5b( - 17, 11, 15, // tri0 - 10, 9, 2, // tri1 - 5, 4, 8, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgs_1_v[273], 11, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hgs_1_v[284], 20, 11), + gsSPNTrianglesInit_5b(10, // tri count + 3, 12, 11, // tri0 + 3, 13, 14, // tri1 + 5, 15, 16 // tri2 + ), + gsSPNTriangles_5b(5, 17, 18, // tri0 + 5, 7, 19, // tri1 + 7, 1, 20, // tri2 + 0, 21, 22 // tri3 + ), + gsSPNTriangles_5b(7, 23, 24, // tri0 + 2, 0, 25, // tri1 + 0, 3, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 10, 27, 4, // tri0 + 10, 9, 28, // tri1 + 9, 8, 29 // tri2 + ), + gsSPNTriangles_5b(8, 6, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&hgs_1_v[304], 20, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 5, 6, 7 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 8, 9, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 11, 12, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(3, // tri count + 14, 15, 16, // tri0 + 17, 18, 16, // tri1 + 16, 19, 14 // tri2 + ), + gsSPVertex(&hgs_1_v[324], 19, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 6, 5, // tri0 + 8, 9, 10, // tri1 + 6, 11, 0, // tri2 + 10, 12, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 11, // tri0 + 2, 9, 16, // tri1 + 17, 7, 18, // tri2 + 13, 8, 10 // tri3 + ), + gsSPNTriangles_5b(13, 5, 8, // tri0 + 7, 5, 18, // tri1 + 0, 3, 6, // tri2 + 0, 2, 4 // tri3 + ), + gsSPNTriangles_5b(17, 11, 15, // tri0 + 10, 9, 2, // tri1 + 5, 4, 8, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail1_hgs_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hgs_1_v[363], 4, 0), -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000680, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&hgs_1_v[367], 12, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 1, 4, 5, // tri0 - 2, 6, 7, // tri1 - 2, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 1, 10, 11, // tri0 - 3, 1, 12, // tri1 - 1, 0, 13, // tri2 - 2, 3, 14 // tri3 -), -gsSPNTriangles_5b( - 0, 2, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgs_1_v[363], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x680, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hgs_1_v[367], 12, 4), + gsSPNTrianglesInit_5b(8, // tri count + 1, 4, 5, // tri0 + 2, 6, 7, // tri1 + 2, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 10, 11, // tri0 + 3, 1, 12, // tri1 + 1, 0, 13, // tri2 + 2, 3, 14 // tri3 + ), + gsSPNTriangles_5b(0, 2, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail2_hgs_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hgs_1_v[343], 4, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000680, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&hgs_1_v[347], 16, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 4, 5, // tri0 - 0, 6, 7, // tri1 - 3, 0, 8 // tri2 -), -gsSPNTriangles_5b( - 0, 1, 9, // tri0 - 3, 11, 10, // tri1 - 1, 13, 12, // tri2 - 2, 3, 14 // tri3 -), -gsSPNTriangles_5b( - 1, 2, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 16, 17, 18, // tri0 - 18, 17, 19, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgs_1_v[343], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x680, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hgs_1_v[347], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 0, 4, 5, // tri0 + 0, 6, 7, // tri1 + 3, 0, 8 // tri2 + ), + gsSPNTriangles_5b(0, 1, 9, // tri0 + 3, 11, 10, // tri1 + 1, 13, 12, // tri2 + 2, 3, 14 // tri3 + ), + gsSPNTriangles_5b(1, 2, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 18, 17, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_hgs_model[] = { -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hgs_1_v[410], 5, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&hgs_1_v[415], 17, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 4, 0, 5, // tri0 - 0, 7, 6, // tri1 - 3, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 1, 2, 10, // tri0 - 2, 3, 11, // tri1 - 3, 4, 12, // tri2 - 2, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 15, 16, 17, // tri0 - 18, 19, 20, // tri1 - 18, 21, 19 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgs_1_v[410], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hgs_1_v[415], 17, 5), + gsSPNTrianglesInit_5b(7, // tri count + 4, 0, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 + ), + gsSPNTriangles_5b(1, 2, 10, // tri0 + 2, 3, 11, // tri1 + 3, 4, 12, // tri2 + 2, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_hgs_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hgs_1_v[432], 9, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 1, 3, 4, // tri1 - 1, 5, 2 // tri2 -), -gsSPNTriangles_5b( - 6, 7, 8, // tri0 - 6, 8, 0, // tri1 - 0, 2, 6, // tri2 - 4, 5, 1 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgs_1_v[432], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 1, 5, 2 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 6, 8, 0, // tri1 + 0, 2, 6, // tri2 + 4, 5, 1 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_hgs_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hgs_1_v[379], 5, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&hgs_1_v[384], 17, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 4, 5, // tri0 - 0, 7, 6, // tri1 - 3, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 1, 10, // tri0 - 3, 2, 11, // tri1 - 4, 3, 12, // tri2 - 2, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 15, 16, 17, // tri0 - 18, 19, 20, // tri1 - 19, 21, 20 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgs_1_v[379], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hgs_1_v[384], 17, 5), + gsSPNTrianglesInit_5b(7, // tri count + 0, 4, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 + ), + gsSPNTriangles_5b(2, 1, 10, // tri0 + 3, 2, 11, // tri1 + 4, 3, 12, // tri2 + 2, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_hgs_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hgs_1_v[401], 9, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 3, 4, 1, // tri1 - 0, 5, 1 // tri2 -), -gsSPNTriangles_5b( - 6, 7, 8, // tri0 - 2, 6, 8, // tri1 - 8, 0, 2, // tri2 - 1, 5, 3 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgs_1_v[401], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 0, 5, 1 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 2, 6, 8, // tri1 + 8, 0, 2, // tri2 + 1, 5, 3 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx base_hgs_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hgs_1_v[441], 15, 0), -gsSPNTrianglesInit_5b( - 16, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 2, 1, 6 // tri2 -), -gsSPNTriangles_5b( - 3, 7, 8, // tri0 - 1, 8, 9, // tri1 - 0, 4, 8, // tri2 - 10, 6, 9 // tri3 -), -gsSPNTriangles_5b( - 7, 3, 11, // tri0 - 7, 11, 12, // tri1 - 13, 8, 7, // tri2 - 7, 12, 13 // tri3 -), -gsSPNTriangles_5b( - 13, 12, 14, // tri0 - 8, 1, 0, // tri1 - 8, 4, 3, // tri2 - 0, 5, 4 // tri3 -), -gsSPNTriangles_5b( - 9, 6, 1, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgs_1_v[441], 15, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 1, 6 // tri2 + ), + gsSPNTriangles_5b(3, 7, 8, // tri0 + 1, 8, 9, // tri1 + 0, 4, 8, // tri2 + 10, 6, 9 // tri3 + ), + gsSPNTriangles_5b(7, 3, 11, // tri0 + 7, 11, 12, // tri1 + 13, 8, 7, // tri2 + 7, 12, 13 // tri3 + ), + gsSPNTriangles_5b(13, 12, 14, // tri0 + 8, 1, 0, // tri1 + 8, 4, 3, // tri2 + 0, 5, 4 // tri3 + ), + gsSPNTriangles_5b(9, 6, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_hgs_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,600,0 }, @@ -869,4 +768,4 @@ static cKF_Joint_R_c cKF_je_r_hgs_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_hgs_1 = { 26, 14, cKF_je_r_hgs_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_hgs_1 = { 26, 14, cKF_je_r_hgs_1_tbl }; diff --git a/src/data/npc/model/mdl/hip_1.c b/src/data/npc/model/mdl/hip_1.c index 4b056651..7f1eda27 100644 --- a/src/data/npc/model/mdl/hip_1.c +++ b/src/data/npc/model/mdl/hip_1.c @@ -6,789 +6,695 @@ static Vtx hip_1_v[] = { }; static Gfx head_hip_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hip_1_v[28], 7, 0), -gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&hip_1_v[35], 18, 7), -gsSPNTrianglesInit_5b( - 12, // tri count - 1, 7, 8, // tri0 - 1, 9, 10, // tri1 - 2, 11, 12 // tri2 -), -gsSPNTriangles_5b( - 2, 13, 14, // tri0 - 3, 4, 15, // tri1 - 5, 6, 16, // tri2 - 5, 17, 18 // tri3 -), -gsSPNTriangles_5b( - 4, 19, 20, // tri0 - 1, 3, 21, // tri1 - 6, 2, 22, // tri2 - 0, 1, 23 // tri3 -), -gsSPNTriangles_5b( - 2, 0, 24, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&hip_1_v[53], 27, 0), -gsSPNTrianglesInit_5b( - 12, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 1, 4, 5 // tri2 -), -gsSPNTriangles_5b( - 1, 5, 2, // tri0 - 4, 0, 3, // tri1 - 4, 3, 5, // tri2 - 6, 7, 8 // tri3 -), -gsSPNTriangles_5b( - 6, 8, 9, // tri0 - 10, 6, 9, // tri1 - 10, 9, 11, // tri2 - 7, 10, 11 // tri3 -), -gsSPNTriangles_5b( - 7, 11, 8, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 12, 13, 14, // tri0 - 15, 16, 17, // tri1 - 14, 18, 12 // tri2 -), -gsSPNTriangles_5b( - 14, 15, 19, // tri0 - 19, 15, 17, // tri1 - 18, 19, 17, // tri2 - 19, 18, 14 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 5, // tri count - 20, 21, 22, // tri0 - 22, 23, 24, // tri1 - 24, 25, 20 // tri2 -), -gsSPNTriangles_5b( - 22, 24, 20, // tri0 - 20, 26, 21, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&hip_1_v[80], 26, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 3, 2, 1 // tri2 -), -gsSPNTriangles_5b( - 0, 6, 7, // tri0 - 5, 2, 3, // tri1 - 1, 7, 3, // tri2 - 0, 7, 1 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 124), -gsSPNTrianglesInit_5b( - 20, // tri count - 8, 9, 10, // tri0 - 8, 11, 12, // tri1 - 8, 12, 13 // tri2 -), -gsSPNTriangles_5b( - 8, 14, 15, // tri0 - 11, 16, 17, // tri1 - 18, 19, 20, // tri2 - 19, 21, 12 // tri3 -), -gsSPNTriangles_5b( - 11, 15, 16, // tri0 - 20, 19, 12, // tri1 - 17, 16, 22, // tri2 - 9, 13, 23 // tri3 -), -gsSPNTriangles_5b( - 12, 11, 17, // tri0 - 12, 17, 20, // tri1 - 17, 22, 24, // tri2 - 24, 18, 20 // tri3 -), -gsSPNTriangles_5b( - 20, 17, 24, // tri0 - 15, 11, 8, // tri1 - 13, 12, 21, // tri2 - 21, 25, 13 // tri3 -), -gsSPNTriangles_5b( - 9, 8, 13, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&hip_1_v[106], 21, 0), -gsSPNTrianglesInit_5b( - 24, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 9, 10, 3, // tri0 - 11, 12, 9, // tri1 - 0, 11, 13, // tri2 - 3, 5, 14 // tri3 -), -gsSPNTriangles_5b( - 15, 13, 14, // tri0 - 11, 14, 13, // tri1 - 11, 16, 12, // tri2 - 9, 14, 11 // tri3 -), -gsSPNTriangles_5b( - 15, 14, 5, // tri0 - 3, 14, 9, // tri1 - 8, 7, 4, // tri2 - 3, 17, 8 // tri3 -), -gsSPNTriangles_5b( - 17, 3, 10, // tri0 - 2, 1, 18, // tri1 - 19, 6, 8, // tri2 - 2, 16, 11 // tri3 -), -gsSPNTriangles_5b( - 20, 16, 2, // tri0 - 2, 18, 20, // tri1 - 8, 17, 19, // tri2 - 2, 11, 0 // tri3 -), -gsSPNTriangles_5b( - 4, 3, 8, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_MIRROR, 0, 0), -gsDPSetTileSize(0, 0, 0, 60, 252), -gsSPVertex(&hip_1_v[127], 32, 0), -gsSPNTrianglesInit_5b( - 15, // tri count - 0, 1, 2, // tri0 - 3, 4, 0, // tri1 - 5, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 8, 9, 10, // tri0 - 11, 12, 13, // tri1 - 14, 15, 4, // tri2 - 16, 4, 3 // tri3 -), -gsSPNTriangles_5b( - 9, 17, 10, // tri0 - 18, 12, 11, // tri1 - 19, 20, 21, // tri2 - 20, 19, 22 // tri3 -), -gsSPNTriangles_5b( - 23, 24, 25, // tri0 - 23, 26, 27, // tri1 - 28, 29, 30, // tri2 - 2, 1, 31 // tri3 -), -gsSPVertex(&hip_1_v[159], 32, 0), -gsSPNTrianglesInit_5b( - 26, // tri count - 0, 1, 2, // tri0 - 3, 2, 1, // tri1 - 4, 5, 3 // tri2 -), -gsSPNTriangles_5b( - 6, 7, 8, // tri0 - 9, 10, 11, // tri1 - 0, 12, 13, // tri2 - 14, 15, 16 // tri3 -), -gsSPNTriangles_5b( - 16, 17, 18, // tri0 - 19, 20, 13, // tri1 - 21, 18, 17, // tri2 - 22, 12, 23 // tri3 -), -gsSPNTriangles_5b( - 13, 22, 24, // tri0 - 16, 19, 25, // tri1 - 16, 15, 19, // tri2 - 5, 14, 18 // tri3 -), -gsSPNTriangles_5b( - 4, 3, 1, // tri0 - 15, 26, 27, // tri1 - 27, 20, 15, // tri2 - 18, 28, 5 // tri3 -), -gsSPNTriangles_5b( - 12, 0, 2, // tri0 - 19, 15, 20, // tri1 - 1, 27, 26, // tri2 - 1, 26, 4 // tri3 -), -gsSPNTriangles_5b( - 2, 29, 12, // tri0 - 16, 18, 14, // tri1 - 25, 17, 16, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&hip_1_v[189], 25, 0), -gsSPNTrianglesInit_5b( - 3, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 4, // tri count - 9, 10, 11, // tri0 - 12, 13, 14, // tri1 - 9, 11, 15 // tri2 -), -gsSPNTriangles_5b( - 16, 13, 12, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 4, // tri count - 17, 18, 19, // tri0 - 19, 20, 17, // tri1 - 21, 22, 23 // tri2 -), -gsSPNTriangles_5b( - 24, 21, 23, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&hip_1_v[214], 18, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 4, 3 // tri2 -), -gsSPNTriangles_5b( - 1, 7, 8, // tri0 - 6, 3, 9, // tri1 - 0, 7, 1, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 4, // tri count - 10, 11, 12, // tri0 - 13, 14, 15, // tri1 - 12, 16, 10 // tri2 -), -gsSPNTriangles_5b( - 15, 17, 13, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hip_1_v[28], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hip_1_v[35], 18, 7), + gsSPNTrianglesInit_5b(12, // tri count + 1, 7, 8, // tri0 + 1, 9, 10, // tri1 + 2, 11, 12 // tri2 + ), + gsSPNTriangles_5b(2, 13, 14, // tri0 + 3, 4, 15, // tri1 + 5, 6, 16, // tri2 + 5, 17, 18 // tri3 + ), + gsSPNTriangles_5b(4, 19, 20, // tri0 + 1, 3, 21, // tri1 + 6, 2, 22, // tri2 + 0, 1, 23 // tri3 + ), + gsSPNTriangles_5b(2, 0, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&hip_1_v[53], 27, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b(1, 5, 2, // tri0 + 4, 0, 3, // tri1 + 4, 3, 5, // tri2 + 6, 7, 8 // tri3 + ), + gsSPNTriangles_5b(6, 8, 9, // tri0 + 10, 6, 9, // tri1 + 10, 9, 11, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b(7, 11, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 12, 13, 14, // tri0 + 15, 16, 17, // tri1 + 14, 18, 12 // tri2 + ), + gsSPNTriangles_5b(14, 15, 19, // tri0 + 19, 15, 17, // tri1 + 18, 19, 17, // tri2 + 19, 18, 14 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(5, // tri count + 20, 21, 22, // tri0 + 22, 23, 24, // tri1 + 24, 25, 20 // tri2 + ), + gsSPNTriangles_5b(22, 24, 20, // tri0 + 20, 26, 21, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&hip_1_v[80], 26, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 2, 1 // tri2 + ), + gsSPNTriangles_5b(0, 6, 7, // tri0 + 5, 2, 3, // tri1 + 1, 7, 3, // tri2 + 0, 7, 1 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 124), + gsSPNTrianglesInit_5b(20, // tri count + 8, 9, 10, // tri0 + 8, 11, 12, // tri1 + 8, 12, 13 // tri2 + ), + gsSPNTriangles_5b(8, 14, 15, // tri0 + 11, 16, 17, // tri1 + 18, 19, 20, // tri2 + 19, 21, 12 // tri3 + ), + gsSPNTriangles_5b(11, 15, 16, // tri0 + 20, 19, 12, // tri1 + 17, 16, 22, // tri2 + 9, 13, 23 // tri3 + ), + gsSPNTriangles_5b(12, 11, 17, // tri0 + 12, 17, 20, // tri1 + 17, 22, 24, // tri2 + 24, 18, 20 // tri3 + ), + gsSPNTriangles_5b(20, 17, 24, // tri0 + 15, 11, 8, // tri1 + 13, 12, 21, // tri2 + 21, 25, 13 // tri3 + ), + gsSPNTriangles_5b(9, 8, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&hip_1_v[106], 21, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 3, // tri0 + 11, 12, 9, // tri1 + 0, 11, 13, // tri2 + 3, 5, 14 // tri3 + ), + gsSPNTriangles_5b(15, 13, 14, // tri0 + 11, 14, 13, // tri1 + 11, 16, 12, // tri2 + 9, 14, 11 // tri3 + ), + gsSPNTriangles_5b(15, 14, 5, // tri0 + 3, 14, 9, // tri1 + 8, 7, 4, // tri2 + 3, 17, 8 // tri3 + ), + gsSPNTriangles_5b(17, 3, 10, // tri0 + 2, 1, 18, // tri1 + 19, 6, 8, // tri2 + 2, 16, 11 // tri3 + ), + gsSPNTriangles_5b(20, 16, 2, // tri0 + 2, 18, 20, // tri1 + 8, 17, 19, // tri2 + 2, 11, 0 // tri3 + ), + gsSPNTriangles_5b(4, 3, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 60, 252), + gsSPVertex(&hip_1_v[127], 32, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 14, 15, 4, // tri2 + 16, 4, 3 // tri3 + ), + gsSPNTriangles_5b(9, 17, 10, // tri0 + 18, 12, 11, // tri1 + 19, 20, 21, // tri2 + 20, 19, 22 // tri3 + ), + gsSPNTriangles_5b(23, 24, 25, // tri0 + 23, 26, 27, // tri1 + 28, 29, 30, // tri2 + 2, 1, 31 // tri3 + ), + gsSPVertex(&hip_1_v[159], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 9, 10, 11, // tri1 + 0, 12, 13, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 19, 20, 13, // tri1 + 21, 18, 17, // tri2 + 22, 12, 23 // tri3 + ), + gsSPNTriangles_5b(13, 22, 24, // tri0 + 16, 19, 25, // tri1 + 16, 15, 19, // tri2 + 5, 14, 18 // tri3 + ), + gsSPNTriangles_5b(4, 3, 1, // tri0 + 15, 26, 27, // tri1 + 27, 20, 15, // tri2 + 18, 28, 5 // tri3 + ), + gsSPNTriangles_5b(12, 0, 2, // tri0 + 19, 15, 20, // tri1 + 1, 27, 26, // tri2 + 1, 26, 4 // tri3 + ), + gsSPNTriangles_5b(2, 29, 12, // tri0 + 16, 18, 14, // tri1 + 25, 17, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&hip_1_v[189], 25, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 9, 10, 11, // tri0 + 12, 13, 14, // tri1 + 9, 11, 15 // tri2 + ), + gsSPNTriangles_5b(16, 13, 12, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 17, 18, 19, // tri0 + 19, 20, 17, // tri1 + 21, 22, 23 // tri2 + ), + gsSPNTriangles_5b(24, 21, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&hip_1_v[214], 18, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 4, 3 // tri2 + ), + gsSPNTriangles_5b(1, 7, 8, // tri0 + 6, 3, 9, // tri1 + 0, 7, 1, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 10, 11, 12, // tri0 + 13, 14, 15, // tri1 + 12, 16, 10 // tri2 + ), + gsSPNTriangles_5b(15, 17, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx mouth_hip_model[] = { -gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hip_1_v[0], 5, 0), -gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&hip_1_v[5], 23, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 2, 5, 6, // tri0 - 4, 8, 7, // tri1 - 0, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 4, 3, 11, // tri0 - 1, 2, 12, // tri1 - 0, 4, 13, // tri2 - 2, 0, 14 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 2, // tri count - 3, 1, 15, // tri0 - 3, 16, 17, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 4, // tri count - 18, 19, 20, // tri0 - 21, 22, 23, // tri1 - 18, 23, 22 // tri2 -), -gsSPNTriangles_5b( - 18, 22, 19, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 2, // tri count - 24, 25, 26, // tri0 - 27, 25, 24, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hip_1_v[0], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hip_1_v[5], 23, 5), + gsSPNTrianglesInit_5b(7, // tri count + 2, 5, 6, // tri0 + 4, 8, 7, // tri1 + 0, 9, 10 // tri2 + ), + gsSPNTriangles_5b(4, 3, 11, // tri0 + 1, 2, 12, // tri1 + 0, 4, 13, // tri2 + 2, 0, 14 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 3, 1, 15, // tri0 + 3, 16, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 18, 19, 20, // tri0 + 21, 22, 23, // tri1 + 18, 23, 22 // tri2 + ), + gsSPNTriangles_5b(18, 22, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 24, 25, 26, // tri0 + 27, 25, 24, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_hip_model[] = { -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hip_1_v[265], 5, 0), -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&hip_1_v[270], 13, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 5, // tri0 - 0, 6, 7, // tri1 - 3, 2, 8 // tri2 -), -gsSPNTriangles_5b( - 1, 4, 9, // tri0 - 1, 10, 11, // tri1 - 2, 12, 13, // tri2 - 2, 0, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 15, 16, 17, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hip_1_v[265], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hip_1_v[270], 13, 5), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 5, // tri0 + 0, 6, 7, // tri1 + 3, 2, 8 // tri2 + ), + gsSPNTriangles_5b(1, 4, 9, // tri0 + 1, 10, 11, // tri1 + 2, 12, 13, // tri2 + 2, 0, 14 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_hip_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hip_1_v[283], 4, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&hip_1_v[287], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 4, 5, // tri0 - 0, 2, 6, // tri1 - 3, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 9, // tri0 - 3, 1, 10, // tri1 - 2, 11, 12, // tri2 - 1, 13, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hip_1_v[283], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hip_1_v[287], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 4, 5, // tri0 + 0, 2, 6, // tri1 + 3, 7, 8 // tri2 + ), + gsSPNTriangles_5b(1, 0, 9, // tri0 + 3, 1, 10, // tri1 + 2, 11, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_hip_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hip_1_v[232], 5, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&hip_1_v[237], 13, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 1, 0, 5, // tri0 - 0, 6, 7, // tri1 - 2, 3, 8 // tri2 -), -gsSPNTriangles_5b( - 4, 1, 9, // tri0 - 1, 10, 11, // tri1 - 2, 12, 13, // tri2 - 0, 2, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 15, 16, 17, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hip_1_v[232], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hip_1_v[237], 13, 5), + gsSPNTrianglesInit_5b(7, // tri count + 1, 0, 5, // tri0 + 0, 6, 7, // tri1 + 2, 3, 8 // tri2 + ), + gsSPNTriangles_5b(4, 1, 9, // tri0 + 1, 10, 11, // tri1 + 2, 12, 13, // tri2 + 0, 2, 14 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_hip_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hip_1_v[250], 4, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&hip_1_v[254], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 4, 5, // tri0 - 2, 0, 6, // tri1 - 3, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 0, 1, 9, // tri0 - 1, 3, 10, // tri1 - 2, 11, 12, // tri2 - 1, 13, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hip_1_v[250], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hip_1_v[254], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 4, 5, // tri0 + 2, 0, 6, // tri1 + 3, 7, 8 // tri2 + ), + gsSPNTriangles_5b(0, 1, 9, // tri0 + 1, 3, 10, // tri1 + 2, 11, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_hip_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 60), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hip_1_v[298], 16, 0), -gsSPNTrianglesInit_5b( - 15, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 9, 10, 4, // tri0 - 3, 0, 2, // tri1 - 11, 12, 13, // tri2 - 7, 6, 12 // tri3 -), -gsSPNTriangles_5b( - 13, 9, 11, // tri0 - 7, 12, 11, // tri1 - 4, 10, 5, // tri2 - 14, 2, 1 // tri3 -), -gsSPNTriangles_5b( - 0, 3, 5, // tri0 - 15, 6, 8, // tri1 - 15, 8, 14, // tri2 - 10, 9, 13 // tri3 -), -gsSPVertex(&hip_1_v[314], 19, 0), -gsSPNTrianglesInit_5b( - 10, // tri count - 0, 1, 2, // tri0 - 3, 4, 0, // tri1 - 3, 0, 5 // tri2 -), -gsSPNTriangles_5b( - 4, 6, 7, // tri0 - 4, 7, 8, // tri1 - 9, 10, 11, // tri2 - 12, 6, 4 // tri3 -), -gsSPNTriangles_5b( - 13, 14, 15, // tri0 - 13, 15, 16, // tri1 - 13, 17, 18, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hip_1_v[298], 16, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 4, // tri0 + 3, 0, 2, // tri1 + 11, 12, 13, // tri2 + 7, 6, 12 // tri3 + ), + gsSPNTriangles_5b(13, 9, 11, // tri0 + 7, 12, 11, // tri1 + 4, 10, 5, // tri2 + 14, 2, 1 // tri3 + ), + gsSPNTriangles_5b(0, 3, 5, // tri0 + 15, 6, 8, // tri1 + 15, 8, 14, // tri2 + 10, 9, 13 // tri3 + ), + gsSPVertex(&hip_1_v[314], 19, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 3, 0, 5 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 4, 7, 8, // tri1 + 9, 10, 11, // tri2 + 12, 6, 4 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 13, 15, 16, // tri1 + 13, 17, 18, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail1_hip_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0004C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hip_1_v[342], 12, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 4, 6, 7, // tri0 - 8, 9, 10, // tri1 - 8, 10, 11, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x4C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hip_1_v[342], 12, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail2_hip_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0004C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hip_1_v[333], 9, 0), -gsSPNTrianglesInit_5b( - 3, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x4C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hip_1_v[333], 9, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_hip_model[] = { -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hip_1_v[392], 5, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 60), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&hip_1_v[397], 16, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 5, 6, // tri0 - 2, 0, 7, // tri1 - 1, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 1, 3, 10, // tri0 - 4, 2, 11, // tri1 - 0, 1, 12, // tri2 - 0, 13, 14 // tri3 -), -gsSPNTriangles_5b( - 2, 15, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 19, 20, 17, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hip_1_v[392], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hip_1_v[397], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 2, 0, 7, // tri1 + 1, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 3, 10, // tri0 + 4, 2, 11, // tri1 + 0, 1, 12, // tri2 + 0, 13, 14 // tri3 + ), + gsSPNTriangles_5b(2, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 19, 20, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_hip_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hip_1_v[413], 5, 0), -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 60), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&hip_1_v[418], 12, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 3, 5, 6, // tri0 - 3, 2, 7, // tri1 - 2, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 4, 10, 0, // tri0 - 0, 11, 12, // tri1 - 0, 13, 1, // tri2 - 2, 1, 14 // tri3 -), -gsSPNTriangles_5b( - 4, 15, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hip_1_v[413], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hip_1_v[418], 12, 5), + gsSPNTrianglesInit_5b(8, // tri count + 3, 5, 6, // tri0 + 3, 2, 7, // tri1 + 2, 8, 9 // tri2 + ), + gsSPNTriangles_5b(4, 10, 0, // tri0 + 0, 11, 12, // tri1 + 0, 13, 1, // tri2 + 2, 1, 14 // tri3 + ), + gsSPNTriangles_5b(4, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx lfoot1_hip_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hip_1_v[375], 5, 0), -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 60), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&hip_1_v[380], 12, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 3, 6, 5, // tri0 - 0, 1, 7, // tri1 - 2, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 2, 10, 4, // tri0 - 4, 11, 12, // tri1 - 1, 4, 13, // tri2 - 0, 14, 3 // tri3 -), -gsSPNTriangles_5b( - 0, 15, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hip_1_v[375], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hip_1_v[380], 12, 5), + gsSPNTrianglesInit_5b(8, // tri count + 3, 6, 5, // tri0 + 0, 1, 7, // tri1 + 2, 8, 9 // tri2 + ), + gsSPNTriangles_5b(2, 10, 4, // tri0 + 4, 11, 12, // tri1 + 1, 4, 13, // tri2 + 0, 14, 3 // tri3 + ), + gsSPNTriangles_5b(0, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_hip_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hip_1_v[354], 5, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 60), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&hip_1_v[359], 16, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 4, 5, 6, // tri0 - 3, 7, 8, // tri1 - 4, 3, 9 // tri2 -), -gsSPNTriangles_5b( - 0, 2, 10, // tri0 - 4, 11, 12, // tri1 - 2, 13, 14, // tri2 - 2, 4, 15 // tri3 -), -gsSPNTriangles_5b( - 3, 1, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 19, 20, 17, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hip_1_v[354], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hip_1_v[359], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 4, 5, 6, // tri0 + 3, 7, 8, // tri1 + 4, 3, 9 // tri2 + ), + gsSPNTriangles_5b(0, 2, 10, // tri0 + 4, 11, 12, // tri1 + 2, 13, 14, // tri2 + 2, 4, 15 // tri3 + ), + gsSPNTriangles_5b(3, 1, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 19, 20, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx base_hip_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hip_1_v[430], 24, 0), -gsSPNTrianglesInit_5b( - 20, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 1, 6, 4 // tri2 -), -gsSPNTriangles_5b( - 3, 7, 8, // tri0 - 9, 2, 10, // tri1 - 9, 10, 11, // tri2 - 11, 10, 12 // tri3 -), -gsSPNTriangles_5b( - 12, 10, 13, // tri0 - 14, 8, 7, // tri1 - 8, 14, 15, // tri2 - 2, 9, 0 // tri3 -), -gsSPNTriangles_5b( - 8, 15, 16, // tri0 - 4, 6, 5, // tri1 - 6, 1, 0, // tri2 - 5, 7, 3 // tri3 -), -gsSPNTriangles_5b( - 17, 18, 19, // tri0 - 17, 20, 18, // tri1 - 20, 21, 18, // tri2 - 20, 22, 21 // tri3 -), -gsSPNTriangles_5b( - 21, 22, 23, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hip_1_v[430], 24, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 6, 4 // tri2 + ), + gsSPNTriangles_5b(3, 7, 8, // tri0 + 9, 2, 10, // tri1 + 9, 10, 11, // tri2 + 11, 10, 12 // tri3 + ), + gsSPNTriangles_5b(12, 10, 13, // tri0 + 14, 8, 7, // tri1 + 8, 14, 15, // tri2 + 2, 9, 0 // tri3 + ), + gsSPNTriangles_5b(8, 15, 16, // tri0 + 4, 6, 5, // tri1 + 6, 1, 0, // tri2 + 5, 7, 3 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 17, 20, 18, // tri1 + 20, 21, 18, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_hip_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -820,4 +726,4 @@ static cKF_Joint_R_c cKF_je_r_hip_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_hip_1 = { 26, 14, cKF_je_r_hip_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_hip_1 = { 26, 14, cKF_je_r_hip_1_tbl }; diff --git a/src/data/npc/model/mdl/hrs_1.c b/src/data/npc/model/mdl/hrs_1.c index 1cd72ac0..b9eac946 100644 --- a/src/data/npc/model/mdl/hrs_1.c +++ b/src/data/npc/model/mdl/hrs_1.c @@ -6,757 +6,669 @@ static Vtx hrs_1_v[] = { }; static Gfx head_hrs_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hrs_1_v[24], 6, 0), -gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 60), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&hrs_1_v[30], 23, 6), -gsSPNTrianglesInit_5b( - 14, // tri count - 2, 6, 7, // tri0 - 0, 8, 9, // tri1 - 2, 5, 10 // tri2 -), -gsSPNTriangles_5b( - 3, 2, 11, // tri0 - 1, 4, 12, // tri1 - 1, 13, 14, // tri2 - 5, 0, 15 // tri3 -), -gsSPNTriangles_5b( - 5, 16, 17, // tri0 - 0, 18, 19, // tri1 - 0, 1, 20, // tri2 - 5, 21, 22 // tri3 -), -gsSPNTriangles_5b( - 5, 23, 24, // tri0 - 5, 26, 25, // tri1 - 0, 28, 27, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 24, 15, GX_MIRROR, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 92), -gsSPVertex(&hrs_1_v[53], 19, 0), -gsSPNTrianglesInit_5b( - 21, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 3, 7 // tri2 -), -gsSPNTriangles_5b( - 8, 1, 9, // tri0 - 1, 0, 10, // tri1 - 11, 3, 6, // tri2 - 12, 2, 6 // tri3 -), -gsSPNTriangles_5b( - 4, 3, 11, // tri0 - 13, 11, 8, // tri1 - 2, 1, 8, // tri2 - 8, 11, 6 // tri3 -), -gsSPNTriangles_5b( - 8, 6, 2, // tri0 - 7, 12, 6, // tri1 - 2, 12, 0, // tri2 - 11, 13, 4 // tri3 -), -gsSPNTriangles_5b( - 9, 13, 8, // tri0 - 5, 7, 3, // tri1 - 10, 9, 1, // tri2 - 14, 15, 16 // tri3 -), -gsSPNTriangles_5b( - 14, 16, 17, // tri0 - 14, 17, 18, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&hrs_1_v[72], 25, 0), -gsSPNTrianglesInit_5b( - 20, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 9, 4, 3, // tri0 - 10, 11, 12, // tri1 - 11, 10, 6, // tri2 - 2, 1, 13 // tri3 -), -gsSPNTriangles_5b( - 8, 2, 6, // tri0 - 6, 2, 11, // tri1 - 2, 8, 0, // tri2 - 13, 11, 2 // tri3 -), -gsSPNTriangles_5b( - 12, 11, 13, // tri0 - 0, 8, 3, // tri1 - 14, 15, 12, // tri2 - 3, 8, 7 // tri3 -), -gsSPNTriangles_5b( - 12, 15, 16, // tri0 - 7, 9, 3, // tri1 - 3, 5, 0, // tri2 - 13, 14, 12 // tri3 -), -gsSPNTriangles_5b( - 12, 16, 10, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 17, 18, 19, // tri0 - 20, 18, 17, // tri1 - 21, 22, 23 // tri2 -), -gsSPNTriangles_5b( - 24, 17, 19, // tri0 - 22, 18, 20, // tri1 - 21, 19, 18, // tri2 - 21, 18, 22 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&hrs_1_v[97], 10, 0), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 1, 2, // tri0 - 3, 0, 2, // tri1 - 4, 5, 0 // tri2 -), -gsSPNTriangles_5b( - 4, 0, 3, // tri0 - 6, 7, 8, // tri1 - 8, 7, 5, // tri2 - 8, 5, 4 // tri3 -), -gsSPNTriangles_5b( - 6, 9, 7, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&hrs_1_v[107], 27, 0), -gsSPNTrianglesInit_5b( - 35, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 6, 0, // tri0 - 9, 10, 11, // tri1 - 8, 0, 6, // tri2 - 12, 11, 8 // tri3 -), -gsSPNTriangles_5b( - 11, 12, 9, // tri0 - 1, 13, 2, // tri1 - 13, 1, 14, // tri2 - 15, 16, 17 // tri3 -), -gsSPNTriangles_5b( - 5, 1, 0, // tri0 - 18, 10, 19, // tri1 - 16, 14, 4, // tri2 - 19, 20, 21 // tri3 -), -gsSPNTriangles_5b( - 22, 21, 20, // tri0 - 14, 15, 13, // tri1 - 23, 20, 19, // tri2 - 24, 19, 21 // tri3 -), -gsSPNTriangles_5b( - 18, 25, 26, // tri0 - 14, 1, 5, // tri1 - 11, 10, 18, // tri2 - 19, 10, 23 // tri3 -), -gsSPNTriangles_5b( - 16, 15, 14, // tri0 - 9, 23, 10, // tri1 - 8, 7, 12, // tri2 - 4, 14, 5 // tri3 -), -gsSPNTriangles_5b( - 18, 19, 24, // tri0 - 4, 3, 24, // tri1 - 3, 25, 18, // tri2 - 18, 24, 3 // tri3 -), -gsSPNTriangles_5b( - 5, 25, 3, // tri0 - 24, 22, 17, // tri1 - 24, 17, 4, // tri2 - 26, 25, 5 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&hrs_1_v[134], 22, 0), -gsSPNTrianglesInit_5b( - 10, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 1 // tri2 -), -gsSPNTriangles_5b( - 2, 8, 0, // tri0 - 9, 6, 0, // tri1 - 5, 10, 3, // tri2 - 11, 12, 5 // tri3 -), -gsSPNTriangles_5b( - 11, 4, 13, // tri0 - 1, 0, 6, // tri1 - 11, 5, 4, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 60), -gsSPNTrianglesInit_5b( - 7, // tri count - 14, 15, 16, // tri0 - 17, 18, 19, // tri1 - 19, 18, 16 // tri2 -), -gsSPNTriangles_5b( - 19, 20, 21, // tri0 - 15, 20, 19, // tri1 - 16, 15, 19, // tri2 - 19, 21, 17 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hrs_1_v[24], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hrs_1_v[30], 23, 6), + gsSPNTrianglesInit_5b(14, // tri count + 2, 6, 7, // tri0 + 0, 8, 9, // tri1 + 2, 5, 10 // tri2 + ), + gsSPNTriangles_5b(3, 2, 11, // tri0 + 1, 4, 12, // tri1 + 1, 13, 14, // tri2 + 5, 0, 15 // tri3 + ), + gsSPNTriangles_5b(5, 16, 17, // tri0 + 0, 18, 19, // tri1 + 0, 1, 20, // tri2 + 5, 21, 22 // tri3 + ), + gsSPNTriangles_5b(5, 23, 24, // tri0 + 5, 26, 25, // tri1 + 0, 28, 27, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 24, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 92), + gsSPVertex(&hrs_1_v[53], 19, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b(8, 1, 9, // tri0 + 1, 0, 10, // tri1 + 11, 3, 6, // tri2 + 12, 2, 6 // tri3 + ), + gsSPNTriangles_5b(4, 3, 11, // tri0 + 13, 11, 8, // tri1 + 2, 1, 8, // tri2 + 8, 11, 6 // tri3 + ), + gsSPNTriangles_5b(8, 6, 2, // tri0 + 7, 12, 6, // tri1 + 2, 12, 0, // tri2 + 11, 13, 4 // tri3 + ), + gsSPNTriangles_5b(9, 13, 8, // tri0 + 5, 7, 3, // tri1 + 10, 9, 1, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(14, 16, 17, // tri0 + 14, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&hrs_1_v[72], 25, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 4, 3, // tri0 + 10, 11, 12, // tri1 + 11, 10, 6, // tri2 + 2, 1, 13 // tri3 + ), + gsSPNTriangles_5b(8, 2, 6, // tri0 + 6, 2, 11, // tri1 + 2, 8, 0, // tri2 + 13, 11, 2 // tri3 + ), + gsSPNTriangles_5b(12, 11, 13, // tri0 + 0, 8, 3, // tri1 + 14, 15, 12, // tri2 + 3, 8, 7 // tri3 + ), + gsSPNTriangles_5b(12, 15, 16, // tri0 + 7, 9, 3, // tri1 + 3, 5, 0, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b(12, 16, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 17, 18, 19, // tri0 + 20, 18, 17, // tri1 + 21, 22, 23 // tri2 + ), + gsSPNTriangles_5b(24, 17, 19, // tri0 + 22, 18, 20, // tri1 + 21, 19, 18, // tri2 + 21, 18, 22 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&hrs_1_v[97], 10, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 5, 0 // tri2 + ), + gsSPNTriangles_5b(4, 0, 3, // tri0 + 6, 7, 8, // tri1 + 8, 7, 5, // tri2 + 8, 5, 4 // tri3 + ), + gsSPNTriangles_5b(6, 9, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&hrs_1_v[107], 27, 0), + gsSPNTrianglesInit_5b(35, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 6, 0, // tri0 + 9, 10, 11, // tri1 + 8, 0, 6, // tri2 + 12, 11, 8 // tri3 + ), + gsSPNTriangles_5b(11, 12, 9, // tri0 + 1, 13, 2, // tri1 + 13, 1, 14, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b(5, 1, 0, // tri0 + 18, 10, 19, // tri1 + 16, 14, 4, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(22, 21, 20, // tri0 + 14, 15, 13, // tri1 + 23, 20, 19, // tri2 + 24, 19, 21 // tri3 + ), + gsSPNTriangles_5b(18, 25, 26, // tri0 + 14, 1, 5, // tri1 + 11, 10, 18, // tri2 + 19, 10, 23 // tri3 + ), + gsSPNTriangles_5b(16, 15, 14, // tri0 + 9, 23, 10, // tri1 + 8, 7, 12, // tri2 + 4, 14, 5 // tri3 + ), + gsSPNTriangles_5b(18, 19, 24, // tri0 + 4, 3, 24, // tri1 + 3, 25, 18, // tri2 + 18, 24, 3 // tri3 + ), + gsSPNTriangles_5b(5, 25, 3, // tri0 + 24, 22, 17, // tri1 + 24, 17, 4, // tri2 + 26, 25, 5 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&hrs_1_v[134], 22, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 1 // tri2 + ), + gsSPNTriangles_5b(2, 8, 0, // tri0 + 9, 6, 0, // tri1 + 5, 10, 3, // tri2 + 11, 12, 5 // tri3 + ), + gsSPNTriangles_5b(11, 4, 13, // tri0 + 1, 0, 6, // tri1 + 11, 5, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsSPNTrianglesInit_5b(7, // tri count + 14, 15, 16, // tri0 + 17, 18, 19, // tri1 + 19, 18, 16 // tri2 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 15, 20, 19, // tri1 + 16, 15, 19, // tri2 + 19, 21, 17 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx mouth_hrs_model[] = { -gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hrs_1_v[0], 5, 0), -gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 60), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&hrs_1_v[5], 19, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 5, 6, // tri0 - 2, 7, 8, // tri1 - 4, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 4, 0, 11, // tri0 - 1, 12, 13, // tri1 - 1, 3, 14, // tri2 - 2, 4, 15 // tri3 -), -gsSPNTrianglesInit_5b( - 4, // tri count - 16, 17, 18, // tri0 - 18, 17, 19, // tri1 - 20, 21, 22 // tri2 -), -gsSPNTriangles_5b( - 18, 23, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hrs_1_v[0], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hrs_1_v[5], 19, 5), + gsSPNTrianglesInit_5b(7, // tri count + 0, 5, 6, // tri0 + 2, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(4, 0, 11, // tri0 + 1, 12, 13, // tri1 + 1, 3, 14, // tri2 + 2, 4, 15 // tri3 + ), + gsSPNTrianglesInit_5b(4, // tri count + 16, 17, 18, // tri0 + 18, 17, 19, // tri1 + 20, 21, 22 // tri2 + ), + gsSPNTriangles_5b(18, 23, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_hrs_model[] = { -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hrs_1_v[192], 5, 0), -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&hrs_1_v[197], 16, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 5, 6, // tri0 - 4, 7, 8, // tri1 - 4, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 0, 1, 11, // tri0 - 2, 4, 12, // tri1 - 0, 13, 14, // tri2 - 3, 0, 15 // tri3 -), -gsSPNTriangles_5b( - 4, 3, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 20, 19, 18, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hrs_1_v[192], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hrs_1_v[197], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(0, 1, 11, // tri0 + 2, 4, 12, // tri1 + 0, 13, 14, // tri2 + 3, 0, 15 // tri3 + ), + gsSPNTriangles_5b(4, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 19, 18, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_hrs_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hrs_1_v[213], 4, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&hrs_1_v[217], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 0, 6, 7, // tri1 - 2, 0, 8 // tri2 -), -gsSPNTriangles_5b( - 3, 2, 9, // tri0 - 2, 11, 10, // tri1 - 3, 13, 12, // tri2 - 1, 3, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hrs_1_v[213], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hrs_1_v[217], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 2, 0, 8 // tri2 + ), + gsSPNTriangles_5b(3, 2, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 1, 3, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_hrs_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hrs_1_v[156], 5, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&hrs_1_v[161], 16, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 5, 6, // tri0 - 4, 7, 8, // tri1 - 4, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 11, // tri0 - 4, 2, 12, // tri1 - 0, 13, 14, // tri2 - 0, 3, 15 // tri3 -), -gsSPNTriangles_5b( - 3, 4, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 18, 17, 20, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hrs_1_v[156], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hrs_1_v[161], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 + ), + gsSPNTriangles_5b(3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_hrs_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hrs_1_v[177], 4, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&hrs_1_v[181], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 0, 6, 7, // tri1 - 0, 2, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 3, 9, // tri0 - 2, 11, 10, // tri1 - 3, 13, 12, // tri2 - 3, 1, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hrs_1_v[177], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hrs_1_v[181], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 + ), + gsSPNTriangles_5b(2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_hrs_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hrs_1_v[228], 7, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&hrs_1_v[235], 20, 7), -gsSPNTrianglesInit_5b( - 13, // tri count - 3, 1, 7, // tri0 - 6, 8, 9, // tri1 - 3, 10, 11 // tri2 -), -gsSPNTriangles_5b( - 2, 12, 0, // tri0 - 2, 13, 14, // tri1 - 1, 16, 15, // tri2 - 0, 17, 18 // tri3 -), -gsSPNTriangles_5b( - 0, 19, 20, // tri0 - 1, 21, 22, // tri1 - 6, 3, 23, // tri2 - 2, 6, 24 // tri3 -), -gsSPNTriangles_5b( - 4, 0, 25, // tri0 - 5, 26, 1, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&hrs_1_v[255], 14, 0), -gsSPNTrianglesInit_5b( - 12, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 4, 6, 7, // tri0 - 8, 9, 10, // tri1 - 8, 10, 11, // tri2 - 6, 5, 12 // tri3 -), -gsSPNTriangles_5b( - 11, 10, 5, // tri0 - 11, 5, 4, // tri1 - 1, 13, 2, // tri2 - 3, 2, 9 // tri3 -), -gsSPNTriangles_5b( - 3, 9, 8, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hrs_1_v[228], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hrs_1_v[235], 20, 7), + gsSPNTrianglesInit_5b(13, // tri count + 3, 1, 7, // tri0 + 6, 8, 9, // tri1 + 3, 10, 11 // tri2 + ), + gsSPNTriangles_5b(2, 12, 0, // tri0 + 2, 13, 14, // tri1 + 1, 16, 15, // tri2 + 0, 17, 18 // tri3 + ), + gsSPNTriangles_5b(0, 19, 20, // tri0 + 1, 21, 22, // tri1 + 6, 3, 23, // tri2 + 2, 6, 24 // tri3 + ), + gsSPNTriangles_5b(4, 0, 25, // tri0 + 5, 26, 1, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&hrs_1_v[255], 14, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 6, 5, 12 // tri3 + ), + gsSPNTriangles_5b(11, 10, 5, // tri0 + 11, 5, 4, // tri1 + 1, 13, 2, // tri2 + 3, 2, 9 // tri3 + ), + gsSPNTriangles_5b(3, 9, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail1_hrs_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hrs_1_v[283], 8, 0), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 1, 0, 4 // tri2 -), -gsSPNTriangles_5b( - 4, 3, 1, // tri0 - 0, 2, 6, // tri1 - 7, 5, 6, // tri2 - 6, 2, 7 // tri3 -), -gsSPNTriangles_5b( - 5, 7, 3, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hrs_1_v[283], 8, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 0, 4 // tri2 + ), + gsSPNTriangles_5b(4, 3, 1, // tri0 + 0, 2, 6, // tri1 + 7, 5, 6, // tri2 + 6, 2, 7 // tri3 + ), + gsSPNTriangles_5b(5, 7, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail2_hrs_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hrs_1_v[269], 4, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&hrs_1_v[273], 10, 4), -gsSPNTrianglesInit_5b( - 4, // tri count - 2, 1, 4, // tri0 - 3, 2, 5, // tri1 - 0, 3, 6 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 7, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 8, // tri count - 8, 9, 10, // tri0 - 11, 9, 12, // tri1 - 12, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 10, 9, 11, // tri0 - 10, 11, 13, // tri1 - 13, 11, 12, // tri2 - 13, 8, 10 // tri3 -), -gsSPNTriangles_5b( - 12, 8, 13, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hrs_1_v[269], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hrs_1_v[273], 10, 4), + gsSPNTrianglesInit_5b(4, // tri count + 2, 1, 4, // tri0 + 3, 2, 5, // tri1 + 0, 3, 6 // tri2 + ), + gsSPNTriangles_5b(1, 0, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(8, // tri count + 8, 9, 10, // tri0 + 11, 9, 12, // tri1 + 12, 9, 8 // tri2 + ), + gsSPNTriangles_5b(10, 9, 11, // tri0 + 10, 11, 13, // tri1 + 13, 11, 12, // tri2 + 13, 8, 10 // tri3 + ), + gsSPNTriangles_5b(12, 8, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_hrs_model[] = { -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hrs_1_v[341], 5, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&hrs_1_v[346], 17, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 4, 0, 5, // tri0 - 0, 7, 6, // tri1 - 3, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 1, 2, 10, // tri0 - 2, 3, 11, // tri1 - 3, 4, 12, // tri2 - 2, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 15, 16, 17, // tri0 - 18, 19, 20, // tri1 - 18, 21, 19 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hrs_1_v[341], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hrs_1_v[346], 17, 5), + gsSPNTrianglesInit_5b(7, // tri count + 4, 0, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 + ), + gsSPNTriangles_5b(1, 2, 10, // tri0 + 2, 3, 11, // tri1 + 3, 4, 12, // tri2 + 2, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_hrs_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hrs_1_v[363], 4, 0), -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&hrs_1_v[367], 22, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 3, 4, // tri0 - 0, 5, 1, // tri1 - 1, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 3, 2, 8, // tri0 - 2, 9, 10, // tri1 - 2, 1, 11, // tri2 - 0, 13, 12 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 14, 15, 16, // tri0 - 14, 16, 17, // tri1 - 17, 18, 14 // tri2 -), -gsSPNTriangles_5b( - 19, 20, 21, // tri0 - 21, 20, 18, // tri1 - 21, 22, 19, // tri2 - 17, 21, 18 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsSPNTrianglesInit_5b( - 1, // tri count - 23, 24, 25, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hrs_1_v[363], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hrs_1_v[367], 22, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 4, // tri0 + 0, 5, 1, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b(3, 2, 8, // tri0 + 2, 9, 10, // tri1 + 2, 1, 11, // tri2 + 0, 13, 12 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 14, 15, 16, // tri0 + 14, 16, 17, // tri1 + 17, 18, 14 // tri2 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 21, 20, 18, // tri1 + 21, 22, 19, // tri2 + 17, 21, 18 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsSPNTrianglesInit_5b(1, // tri count + 23, 24, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_hrs_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hrs_1_v[291], 5, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&hrs_1_v[296], 17, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 4, 5, // tri0 - 0, 7, 6, // tri1 - 3, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 1, 10, // tri0 - 3, 2, 11, // tri1 - 4, 3, 12, // tri2 - 2, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 15, 16, 17, // tri0 - 18, 19, 20, // tri1 - 19, 21, 20 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hrs_1_v[291], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hrs_1_v[296], 17, 5), + gsSPNTrianglesInit_5b(7, // tri count + 0, 4, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 + ), + gsSPNTriangles_5b(2, 1, 10, // tri0 + 3, 2, 11, // tri1 + 4, 3, 12, // tri2 + 2, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_hrs_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hrs_1_v[313], 6, 0), -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&hrs_1_v[319], 22, 6), -gsSPNTrianglesInit_5b( - 7, // tri count - 4, 0, 6, // tri0 - 1, 7, 0, // tri1 - 1, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 2, 5, 10, // tri0 - 2, 11, 12, // tri1 - 1, 3, 13, // tri2 - 0, 15, 14 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 16, 17, 18, // tri0 - 19, 16, 18, // tri1 - 18, 20, 19 // tri2 -), -gsSPNTriangles_5b( - 21, 22, 23, // tri0 - 20, 22, 21, // tri1 - 23, 24, 21, // tri2 - 20, 21, 19 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsSPNTrianglesInit_5b( - 1, // tri count - 25, 26, 27, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hrs_1_v[313], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hrs_1_v[319], 22, 6), + gsSPNTrianglesInit_5b(7, // tri count + 4, 0, 6, // tri0 + 1, 7, 0, // tri1 + 1, 8, 9 // tri2 + ), + gsSPNTriangles_5b(2, 5, 10, // tri0 + 2, 11, 12, // tri1 + 1, 3, 13, // tri2 + 0, 15, 14 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 16, 17, 18, // tri0 + 19, 16, 18, // tri1 + 18, 20, 19 // tri2 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 20, 22, 21, // tri1 + 23, 24, 21, // tri2 + 20, 21, 19 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsSPNTrianglesInit_5b(1, // tri count + 25, 26, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx base_hrs_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&hrs_1_v[389], 14, 0), -gsSPNTrianglesInit_5b( - 12, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 9, 5, 4, // tri0 - 10, 4, 0, // tri1 - 10, 9, 4, // tri2 - 7, 11, 12 // tri3 -), -gsSPNTriangles_5b( - 8, 7, 13, // tri0 - 2, 10, 0, // tri1 - 2, 1, 6, // tri2 - 6, 8, 2 // tri3 -), -gsSPNTriangles_5b( - 7, 12, 13, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hrs_1_v[389], 14, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 5, 4, // tri0 + 10, 4, 0, // tri1 + 10, 9, 4, // tri2 + 7, 11, 12 // tri3 + ), + gsSPNTriangles_5b(8, 7, 13, // tri0 + 2, 10, 0, // tri1 + 2, 1, 6, // tri2 + 6, 8, 2 // tri3 + ), + gsSPNTriangles_5b(7, 12, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_hrs_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -788,4 +700,4 @@ static cKF_Joint_R_c cKF_je_r_hrs_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_hrs_1 = { 26, 14, cKF_je_r_hrs_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_hrs_1 = { 26, 14, cKF_je_r_hrs_1_tbl }; diff --git a/src/data/npc/model/mdl/kab_1.c b/src/data/npc/model/mdl/kab_1.c index 0c4d2ec8..83bc7758 100644 --- a/src/data/npc/model/mdl/kab_1.c +++ b/src/data/npc/model/mdl/kab_1.c @@ -6,679 +6,597 @@ static Vtx kab_1_v[] = { }; static Gfx head_kab_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&kab_1_v[26], 28, 0), -gsSPNTrianglesInit_5b( - 2, // tri count - 0, 1, 2, // tri0 - 2, 3, 0, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 4, // tri count - 4, 5, 6, // tri0 - 7, 5, 4, // tri1 - 8, 5, 7 // tri2 -), -gsSPNTriangles_5b( - 6, 5, 9, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 2, // tri count - 10, 11, 12, // tri0 - 12, 13, 10, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 10, // tri count - 14, 15, 16, // tri0 - 15, 17, 18, // tri1 - 17, 15, 14 // tri2 -), -gsSPNTriangles_5b( - 17, 14, 19, // tri0 - 17, 19, 20, // tri1 - 18, 16, 15, // tri2 - 16, 18, 20 // tri3 -), -gsSPNTriangles_5b( - 14, 16, 19, // tri0 - 20, 18, 17, // tri1 - 20, 19, 16, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 10, // tri count - 21, 22, 23, // tri0 - 24, 25, 22, // tri1 - 23, 22, 25 // tri2 -), -gsSPNTriangles_5b( - 26, 23, 25, // tri0 - 27, 26, 25, // tri1 - 22, 21, 24, // tri2 - 27, 24, 21 // tri3 -), -gsSPNTriangles_5b( - 26, 21, 23, // tri0 - 25, 24, 27, // tri1 - 21, 26, 27, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&kab_1_v[54], 23, 0), -gsSPNTrianglesInit_5b( - 28, // tri count - 0, 1, 2, // tri0 - 0, 3, 1, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 5, 4, 7, // tri0 - 7, 8, 5, // tri1 - 9, 3, 7, // tri2 - 6, 10, 4 // tri3 -), -gsSPNTriangles_5b( - 4, 10, 11, // tri0 - 0, 12, 8, // tri1 - 0, 2, 12, // tri2 - 11, 9, 4 // tri3 -), -gsSPNTriangles_5b( - 13, 1, 14, // tri0 - 8, 15, 16, // tri1 - 17, 18, 3, // tri2 - 19, 20, 21 // tri3 -), -gsSPNTriangles_5b( - 19, 21, 22, // tri0 - 21, 13, 14, // tri1 - 1, 3, 18, // tri2 - 15, 8, 12 // tri3 -), -gsSPNTriangles_5b( - 13, 21, 20, // tri0 - 15, 12, 19, // tri1 - 16, 5, 8, // tri2 - 14, 1, 18 // tri3 -), -gsSPNTriangles_5b( - 19, 12, 20, // tri0 - 3, 9, 17, // tri1 - 8, 7, 0, // tri2 - 0, 7, 3 // tri3 -), -gsSPNTriangles_5b( - 7, 4, 9, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsSPVertex(&kab_1_v[77], 22, 0), -gsSPNTrianglesInit_5b( - 21, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 9, 10, // tri0 - 11, 4, 3, // tri1 - 12, 13, 14, // tri2 - 3, 8, 11 // tri3 -), -gsSPNTriangles_5b( - 15, 12, 16, // tri0 - 10, 17, 2, // tri1 - 10, 14, 13, // tri2 - 9, 14, 10 // tri3 -), -gsSPNTriangles_5b( - 18, 11, 8, // tri0 - 12, 15, 19, // tri1 - 7, 18, 8, // tri2 - 2, 17, 0 // tri3 -), -gsSPNTriangles_5b( - 12, 19, 13, // tri0 - 5, 20, 16, // tri1 - 5, 16, 21, // tri2 - 16, 20, 15 // tri3 -), -gsSPNTriangles_5b( - 0, 6, 1, // tri0 - 7, 6, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&kab_1_v[99], 32, 0), -gsSPNTrianglesInit_5b( - 27, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 9, 10, 11, // tri0 - 12, 13, 1, // tri1 - 14, 15, 16, // tri2 - 17, 14, 11 // tri3 -), -gsSPNTriangles_5b( - 4, 3, 18, // tri0 - 19, 8, 7, // tri1 - 9, 3, 10, // tri2 - 13, 16, 1 // tri3 -), -gsSPNTriangles_5b( - 14, 17, 15, // tri0 - 11, 20, 9, // tri1 - 1, 0, 12, // tri2 - 11, 14, 20 // tri3 -), -gsSPNTriangles_5b( - 1, 16, 21, // tri0 - 1, 21, 2, // tri1 - 22, 17, 11, // tri2 - 23, 24, 25 // tri3 -), -gsSPNTriangles_5b( - 8, 0, 6, // tri0 - 8, 26, 27, // tri1 - 27, 26, 3, // tri2 - 2, 6, 0 // tri3 -), -gsSPNTriangles_5b( - 5, 10, 3, // tri0 - 16, 13, 20, // tri1 - 16, 20, 14, // tri2 - 28, 29, 30 // tri3 -), -gsSPVertex(&kab_1_v[130], 29, 0), -gsSPNTrianglesInit_5b( - 15, // tri count - 0, 1, 2, // tri0 - 3, 0, 2, // tri1 - 0, 4, 1 // tri2 -), -gsSPNTriangles_5b( - 5, 6, 7, // tri0 - 8, 5, 7, // tri1 - 9, 0, 3, // tri2 - 10, 11, 12 // tri3 -), -gsSPNTriangles_5b( - 13, 14, 8, // tri0 - 15, 16, 17, // tri1 - 18, 19, 20, // tri2 - 20, 21, 18 // tri3 -), -gsSPNTriangles_5b( - 22, 23, 24, // tri0 - 21, 25, 18, // tri1 - 26, 27, 22, // tri2 - 12, 28, 10 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kab_1_v[26], 28, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 4, 5, 6, // tri0 + 7, 5, 4, // tri1 + 8, 5, 7 // tri2 + ), + gsSPNTriangles_5b(6, 5, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 10, 11, 12, // tri0 + 12, 13, 10, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(10, // tri count + 14, 15, 16, // tri0 + 15, 17, 18, // tri1 + 17, 15, 14 // tri2 + ), + gsSPNTriangles_5b(17, 14, 19, // tri0 + 17, 19, 20, // tri1 + 18, 16, 15, // tri2 + 16, 18, 20 // tri3 + ), + gsSPNTriangles_5b(14, 16, 19, // tri0 + 20, 18, 17, // tri1 + 20, 19, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(10, // tri count + 21, 22, 23, // tri0 + 24, 25, 22, // tri1 + 23, 22, 25 // tri2 + ), + gsSPNTriangles_5b(26, 23, 25, // tri0 + 27, 26, 25, // tri1 + 22, 21, 24, // tri2 + 27, 24, 21 // tri3 + ), + gsSPNTriangles_5b(26, 21, 23, // tri0 + 25, 24, 27, // tri1 + 21, 26, 27, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&kab_1_v[54], 23, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 4, 7, // tri0 + 7, 8, 5, // tri1 + 9, 3, 7, // tri2 + 6, 10, 4 // tri3 + ), + gsSPNTriangles_5b(4, 10, 11, // tri0 + 0, 12, 8, // tri1 + 0, 2, 12, // tri2 + 11, 9, 4 // tri3 + ), + gsSPNTriangles_5b(13, 1, 14, // tri0 + 8, 15, 16, // tri1 + 17, 18, 3, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(19, 21, 22, // tri0 + 21, 13, 14, // tri1 + 1, 3, 18, // tri2 + 15, 8, 12 // tri3 + ), + gsSPNTriangles_5b(13, 21, 20, // tri0 + 15, 12, 19, // tri1 + 16, 5, 8, // tri2 + 14, 1, 18 // tri3 + ), + gsSPNTriangles_5b(19, 12, 20, // tri0 + 3, 9, 17, // tri1 + 8, 7, 0, // tri2 + 0, 7, 3 // tri3 + ), + gsSPNTriangles_5b(7, 4, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&kab_1_v[77], 22, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 9, 10, // tri0 + 11, 4, 3, // tri1 + 12, 13, 14, // tri2 + 3, 8, 11 // tri3 + ), + gsSPNTriangles_5b(15, 12, 16, // tri0 + 10, 17, 2, // tri1 + 10, 14, 13, // tri2 + 9, 14, 10 // tri3 + ), + gsSPNTriangles_5b(18, 11, 8, // tri0 + 12, 15, 19, // tri1 + 7, 18, 8, // tri2 + 2, 17, 0 // tri3 + ), + gsSPNTriangles_5b(12, 19, 13, // tri0 + 5, 20, 16, // tri1 + 5, 16, 21, // tri2 + 16, 20, 15 // tri3 + ), + gsSPNTriangles_5b(0, 6, 1, // tri0 + 7, 6, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&kab_1_v[99], 32, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 13, 1, // tri1 + 14, 15, 16, // tri2 + 17, 14, 11 // tri3 + ), + gsSPNTriangles_5b(4, 3, 18, // tri0 + 19, 8, 7, // tri1 + 9, 3, 10, // tri2 + 13, 16, 1 // tri3 + ), + gsSPNTriangles_5b(14, 17, 15, // tri0 + 11, 20, 9, // tri1 + 1, 0, 12, // tri2 + 11, 14, 20 // tri3 + ), + gsSPNTriangles_5b(1, 16, 21, // tri0 + 1, 21, 2, // tri1 + 22, 17, 11, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b(8, 0, 6, // tri0 + 8, 26, 27, // tri1 + 27, 26, 3, // tri2 + 2, 6, 0 // tri3 + ), + gsSPNTriangles_5b(5, 10, 3, // tri0 + 16, 13, 20, // tri1 + 16, 20, 14, // tri2 + 28, 29, 30 // tri3 + ), + gsSPVertex(&kab_1_v[130], 29, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 5, 7, // tri1 + 9, 0, 3, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(13, 14, 8, // tri0 + 15, 16, 17, // tri1 + 18, 19, 20, // tri2 + 20, 21, 18 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 21, 25, 18, // tri1 + 26, 27, 22, // tri2 + 12, 28, 10 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx mouth_kab_model[] = { -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&kab_1_v[0], 6, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 24, 15, GX_MIRROR, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&kab_1_v[6], 20, 6), -gsSPNTrianglesInit_5b( - 10, // tri count - 3, 4, 6, // tri0 - 5, 2, 7, // tri1 - 2, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 2, 1, 10, // tri0 - 1, 11, 12, // tri1 - 0, 13, 14, // tri2 - 3, 15, 16 // tri3 -), -gsSPNTriangles_5b( - 0, 3, 17, // tri0 - 1, 18, 19, // tri1 - 1, 0, 20, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 21, 22, 23, // tri0 - 23, 24, 25, // tri1 - 23, 25, 21 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kab_1_v[0], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 24, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kab_1_v[6], 20, 6), + gsSPNTrianglesInit_5b(10, // tri count + 3, 4, 6, // tri0 + 5, 2, 7, // tri1 + 2, 8, 9 // tri2 + ), + gsSPNTriangles_5b(2, 1, 10, // tri0 + 1, 11, 12, // tri1 + 0, 13, 14, // tri2 + 3, 15, 16 // tri3 + ), + gsSPNTriangles_5b(0, 3, 17, // tri0 + 1, 18, 19, // tri1 + 1, 0, 20, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 21, 22, 23, // tri0 + 23, 24, 25, // tri1 + 23, 25, 21 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_kab_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&kab_1_v[193], 4, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&kab_1_v[197], 16, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 4, 5, // tri0 - 1, 6, 7, // tri1 - 2, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 1, 10, 11, // tri0 - 0, 2, 12, // tri1 - 0, 13, 1, // tri2 - 2, 3, 14 // tri3 -), -gsSPNTriangles_5b( - 3, 1, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 16, 17, 18, // tri0 - 19, 18, 17, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kab_1_v[193], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kab_1_v[197], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 1, 6, 7, // tri1 + 2, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 10, 11, // tri0 + 0, 2, 12, // tri1 + 0, 13, 1, // tri2 + 2, 3, 14 // tri3 + ), + gsSPNTriangles_5b(3, 1, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 19, 18, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_kab_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&kab_1_v[213], 3, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&kab_1_v[216], 11, 3), -gsSPNTrianglesInit_5b( - 7, // tri count - 2, 3, 1, // tri0 - 0, 5, 4, // tri1 - 2, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 8, 9, // tri0 - 0, 10, 11, // tri1 - 2, 0, 12, // tri2 - 0, 1, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kab_1_v[213], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kab_1_v[216], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 2, 3, 1, // tri0 + 0, 5, 4, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 0, 10, 11, // tri1 + 2, 0, 12, // tri2 + 0, 1, 13 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_kab_model[] = { -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&kab_1_v[159], 4, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&kab_1_v[163], 16, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 4, 5, // tri0 - 1, 6, 7, // tri1 - 2, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 1, 10, 11, // tri0 - 2, 0, 12, // tri1 - 1, 13, 0, // tri2 - 3, 2, 14 // tri3 -), -gsSPNTriangles_5b( - 1, 3, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 16, 17, 18, // tri0 - 17, 16, 19, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kab_1_v[159], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kab_1_v[163], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 1, 6, 7, // tri1 + 2, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 10, 11, // tri0 + 2, 0, 12, // tri1 + 1, 13, 0, // tri2 + 3, 2, 14 // tri3 + ), + gsSPNTriangles_5b(1, 3, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_kab_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&kab_1_v[179], 3, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&kab_1_v[182], 11, 3), -gsSPNTrianglesInit_5b( - 7, // tri count - 1, 3, 2, // tri0 - 0, 5, 4, // tri1 - 2, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 8, 9, // tri0 - 0, 10, 11, // tri1 - 0, 2, 12, // tri2 - 1, 0, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kab_1_v[179], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kab_1_v[182], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 1, 3, 2, // tri0 + 0, 5, 4, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 0, 10, 11, // tri1 + 0, 2, 12, // tri2 + 1, 0, 13 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_kab_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&kab_1_v[227], 10, 0), -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&kab_1_v[237], 20, 10), -gsSPNTrianglesInit_5b( - 13, // tri count - 2, 5, 10, // tri0 - 5, 6, 11, // tri1 - 1, 12, 13 // tri2 -), -gsSPNTriangles_5b( - 3, 14, 15, // tri0 - 3, 2, 16, // tri1 - 4, 17, 18, // tri2 - 0, 4, 19 // tri3 -), -gsSPNTriangles_5b( - 7, 20, 21, // tri0 - 0, 22, 23, // tri1 - 6, 8, 24, // tri2 - 7, 1, 25 // tri3 -), -gsSPNTriangles_5b( - 8, 26, 27, // tri0 - 5, 28, 29, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&kab_1_v[257], 4, 10), -gsSPNTrianglesInit_5b( - 3, // tri count - 1, 9, 10, // tri0 - 9, 0, 11, // tri1 - 5, 12, 13 // tri2 -), -gsSPVertex(&kab_1_v[261], 23, 0), -gsSPNTrianglesInit_5b( - 18, // tri count - 0, 1, 2, // tri0 - 3, 0, 2, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 3, 7, 0, // tri0 - 0, 7, 8, // tri1 - 9, 10, 11, // tri2 - 1, 12, 13 // tri3 -), -gsSPNTriangles_5b( - 0, 8, 12, // tri0 - 9, 14, 15, // tri1 - 15, 10, 9, // tri2 - 0, 12, 1 // tri3 -), -gsSPNTriangles_5b( - 10, 16, 11, // tri0 - 11, 17, 9, // tri1 - 11, 18, 17, // tri2 - 14, 19, 15 // tri3 -), -gsSPNTriangles_5b( - 3, 20, 7, // tri0 - 16, 10, 15, // tri1 - 5, 21, 22, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kab_1_v[227], 10, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kab_1_v[237], 20, 10), + gsSPNTrianglesInit_5b(13, // tri count + 2, 5, 10, // tri0 + 5, 6, 11, // tri1 + 1, 12, 13 // tri2 + ), + gsSPNTriangles_5b(3, 14, 15, // tri0 + 3, 2, 16, // tri1 + 4, 17, 18, // tri2 + 0, 4, 19 // tri3 + ), + gsSPNTriangles_5b(7, 20, 21, // tri0 + 0, 22, 23, // tri1 + 6, 8, 24, // tri2 + 7, 1, 25 // tri3 + ), + gsSPNTriangles_5b(8, 26, 27, // tri0 + 5, 28, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&kab_1_v[257], 4, 10), + gsSPNTrianglesInit_5b(3, // tri count + 1, 9, 10, // tri0 + 9, 0, 11, // tri1 + 5, 12, 13 // tri2 + ), + gsSPVertex(&kab_1_v[261], 23, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(3, 7, 0, // tri0 + 0, 7, 8, // tri1 + 9, 10, 11, // tri2 + 1, 12, 13 // tri3 + ), + gsSPNTriangles_5b(0, 8, 12, // tri0 + 9, 14, 15, // tri1 + 15, 10, 9, // tri2 + 0, 12, 1 // tri3 + ), + gsSPNTriangles_5b(10, 16, 11, // tri0 + 11, 17, 9, // tri1 + 11, 18, 17, // tri2 + 14, 19, 15 // tri3 + ), + gsSPNTriangles_5b(3, 20, 7, // tri0 + 16, 10, 15, // tri1 + 5, 21, 22, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_kab_model[] = { -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&kab_1_v[325], 6, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&kab_1_v[331], 14, 6), -gsSPNTrianglesInit_5b( - 5, // tri count - 2, 4, 6, // tri0 - 0, 2, 7, // tri1 - 4, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 0, 11, 10, // tri0 - 2, 12, 13, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 2, // tri count - 3, 5, 14, // tri0 - 5, 1, 15, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 3, // tri count - 16, 17, 18, // tri0 - 18, 17, 19, // tri1 - 16, 19, 17 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kab_1_v[325], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kab_1_v[331], 14, 6), + gsSPNTrianglesInit_5b(5, // tri count + 2, 4, 6, // tri0 + 0, 2, 7, // tri1 + 4, 9, 8 // tri2 + ), + gsSPNTriangles_5b(0, 11, 10, // tri0 + 2, 12, 13, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 3, 5, 14, // tri0 + 5, 1, 15, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 16, 17, 18, // tri0 + 18, 17, 19, // tri1 + 16, 19, 17 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_kab_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&kab_1_v[345], 8, 0), -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&kab_1_v[353], 13, 8), -gsSPNTrianglesInit_5b( - 9, // tri count - 6, 8, 9, // tri0 - 7, 4, 10, // tri1 - 5, 11, 12 // tri2 -), -gsSPNTriangles_5b( - 2, 6, 13, // tri0 - 0, 2, 14, // tri1 - 3, 15, 5, // tri2 - 3, 16, 17 // tri3 -), -gsSPNTriangles_5b( - 3, 1, 18, // tri0 - 2, 19, 20, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kab_1_v[345], 8, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kab_1_v[353], 13, 8), + gsSPNTrianglesInit_5b(9, // tri count + 6, 8, 9, // tri0 + 7, 4, 10, // tri1 + 5, 11, 12 // tri2 + ), + gsSPNTriangles_5b(2, 6, 13, // tri0 + 0, 2, 14, // tri1 + 3, 15, 5, // tri2 + 3, 16, 17 // tri3 + ), + gsSPNTriangles_5b(3, 1, 18, // tri0 + 2, 19, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_kab_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&kab_1_v[284], 6, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&kab_1_v[290], 14, 6), -gsSPNTrianglesInit_5b( - 2, // tri count - 5, 3, 6, // tri0 - 1, 5, 7, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 5, // tri count - 2, 8, 9, // tri0 - 4, 2, 10, // tri1 - 2, 0, 11 // tri2 -), -gsSPNTriangles_5b( - 4, 13, 12, // tri0 - 0, 15, 14, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 16, 17, 18, // tri0 - 19, 17, 16, // tri1 - 17, 19, 18 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kab_1_v[284], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kab_1_v[290], 14, 6), + gsSPNTrianglesInit_5b(2, // tri count + 5, 3, 6, // tri0 + 1, 5, 7, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(5, // tri count + 2, 8, 9, // tri0 + 4, 2, 10, // tri1 + 2, 0, 11 // tri2 + ), + gsSPNTriangles_5b(4, 13, 12, // tri0 + 0, 15, 14, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 16, 17, 18, // tri0 + 19, 17, 16, // tri1 + 17, 19, 18 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_kab_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&kab_1_v[304], 8, 0), -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&kab_1_v[312], 13, 8), -gsSPNTrianglesInit_5b( - 9, // tri count - 6, 8, 9, // tri0 - 4, 2, 10, // tri1 - 4, 11, 12 // tri2 -), -gsSPNTriangles_5b( - 7, 5, 13, // tri0 - 3, 6, 14, // tri1 - 2, 0, 15, // tri2 - 1, 3, 16 // tri3 -), -gsSPNTriangles_5b( - 3, 17, 18, // tri0 - 2, 19, 20, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kab_1_v[304], 8, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kab_1_v[312], 13, 8), + gsSPNTrianglesInit_5b(9, // tri count + 6, 8, 9, // tri0 + 4, 2, 10, // tri1 + 4, 11, 12 // tri2 + ), + gsSPNTriangles_5b(7, 5, 13, // tri0 + 3, 6, 14, // tri1 + 2, 0, 15, // tri2 + 1, 3, 16 // tri3 + ), + gsSPNTriangles_5b(3, 17, 18, // tri0 + 2, 19, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx base_kab_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&kab_1_v[366], 30, 0), -gsSPNTrianglesInit_5b( - 20, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 9, 10, 11, // tri0 - 12, 13, 14, // tri1 - 15, 16, 17, // tri2 - 5, 9, 3 // tri3 -), -gsSPNTriangles_5b( - 15, 18, 19, // tri0 - 20, 13, 12, // tri1 - 8, 7, 21, // tri2 - 11, 3, 9 // tri3 -), -gsSPNTriangles_5b( - 19, 16, 15, // tri0 - 22, 15, 17, // tri1 - 20, 23, 13, // tri2 - 7, 24, 21 // tri3 -), -gsSPNTriangles_5b( - 21, 24, 25, // tri0 - 14, 26, 12, // tri1 - 8, 27, 6, // tri2 - 21, 28, 8 // tri3 -), -gsSPNTriangles_5b( - 12, 29, 20, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kab_1_v[366], 30, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 13, 14, // tri1 + 15, 16, 17, // tri2 + 5, 9, 3 // tri3 + ), + gsSPNTriangles_5b(15, 18, 19, // tri0 + 20, 13, 12, // tri1 + 8, 7, 21, // tri2 + 11, 3, 9 // tri3 + ), + gsSPNTriangles_5b(19, 16, 15, // tri0 + 22, 15, 17, // tri1 + 20, 23, 13, // tri2 + 7, 24, 21 // tri3 + ), + gsSPNTriangles_5b(21, 24, 25, // tri0 + 14, 26, 12, // tri1 + 8, 27, 6, // tri2 + 21, 28, 8 // tri3 + ), + gsSPNTriangles_5b(12, 29, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_kab_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -710,4 +628,4 @@ static cKF_Joint_R_c cKF_je_r_kab_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_kab_1 = { 26, 12, cKF_je_r_kab_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_kab_1 = { 26, 12, cKF_je_r_kab_1_tbl }; diff --git a/src/data/npc/model/mdl/kal_1.c b/src/data/npc/model/mdl/kal_1.c index ad95b306..920f1499 100644 --- a/src/data/npc/model/mdl/kal_1.c +++ b/src/data/npc/model/mdl/kal_1.c @@ -6,603 +6,532 @@ static Vtx kal_1_v[] = { }; static Gfx head_kal_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&kal_1_v[0], 25, 0), -gsSPNTrianglesInit_5b( - 29, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 0, 6, 1 // tri2 -), -gsSPNTriangles_5b( - 7, 8, 9, // tri0 - 6, 10, 1, // tri1 - 11, 12, 13, // tri2 - 11, 13, 14 // tri3 -), -gsSPNTriangles_5b( - 6, 0, 15, // tri0 - 9, 16, 5, // tri1 - 7, 9, 4, // tri2 - 17, 7, 4 // tri3 -), -gsSPNTriangles_5b( - 15, 0, 18, // tri0 - 3, 5, 19, // tri1 - 15, 20, 6, // tri2 - 5, 4, 9 // tri3 -), -gsSPNTriangles_5b( - 15, 13, 12, // tri0 - 11, 14, 5, // tri1 - 19, 5, 14, // tri2 - 21, 22, 12 // tri3 -), -gsSPNTriangles_5b( - 23, 15, 18, // tri0 - 13, 15, 23, // tri1 - 23, 19, 14, // tri2 - 23, 14, 13 // tri3 -), -gsSPNTriangles_5b( - 12, 22, 15, // tri0 - 11, 24, 21, // tri1 - 12, 11, 21, // tri2 - 5, 24, 11 // tri3 -), -gsSPNTriangles_5b( - 4, 3, 17, // tri0 - 2, 18, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&kal_1_v[25], 22, 0), -gsSPNTrianglesInit_5b( - 14, // tri count - 0, 1, 2, // tri0 - 3, 4, 2, // tri1 - 3, 5, 4 // tri2 -), -gsSPNTriangles_5b( - 6, 7, 8, // tri0 - 2, 4, 9, // tri1 - 7, 10, 11, // tri2 - 7, 11, 8 // tri3 -), -gsSPNTriangles_5b( - 0, 8, 1, // tri0 - 8, 0, 12, // tri1 - 12, 0, 2, // tri2 - 12, 6, 8 // tri3 -), -gsSPNTriangles_5b( - 1, 3, 2, // tri0 - 2, 9, 12, // tri1 - 8, 11, 1, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 13, 14, 15, // tri0 - 16, 17, 18, // tri1 - 17, 16, 19 // tri2 -), -gsSPNTriangles_5b( - 20, 14, 21, // tri0 - 21, 17, 19, // tri1 - 19, 20, 21, // tri2 - 20, 15, 14 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 32, 40, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&kal_1_v[47], 21, 0), -gsSPNTrianglesInit_5b( - 26, // tri count - 0, 1, 2, // tri0 - 2, 3, 0, // tri1 - 4, 5, 2 // tri2 -), -gsSPNTriangles_5b( - 6, 7, 8, // tri0 - 9, 3, 2, // tri1 - 0, 3, 10, // tri2 - 0, 10, 11 // tri3 -), -gsSPNTriangles_5b( - 12, 0, 11, // tri0 - 4, 13, 14, // tri1 - 15, 0, 12, // tri2 - 14, 16, 4 // tri3 -), -gsSPNTriangles_5b( - 9, 5, 17, // tri0 - 17, 4, 16, // tri1 - 17, 5, 4, // tri2 - 18, 13, 1 // tri3 -), -gsSPNTriangles_5b( - 9, 10, 3, // tri0 - 2, 5, 9, // tri1 - 13, 4, 1, // tri2 - 19, 13, 18 // tri3 -), -gsSPNTriangles_5b( - 15, 1, 0, // tri0 - 1, 15, 18, // tri1 - 6, 19, 18, // tri2 - 18, 15, 6 // tri3 -), -gsSPNTriangles_5b( - 8, 20, 19, // tri0 - 19, 6, 8, // tri1 - 2, 1, 4, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&kal_1_v[68], 32, 0), -gsSPNTrianglesInit_5b( - 16, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 1, 9, 2, // tri0 - 10, 11, 12, // tri1 - 6, 13, 14, // tri2 - 15, 16, 13 // tri3 -), -gsSPNTriangles_5b( - 17, 18, 19, // tri0 - 19, 20, 17, // tri1 - 21, 19, 12, // tri2 - 3, 5, 22 // tri3 -), -gsSPNTriangles_5b( - 5, 23, 24, // tri0 - 13, 25, 15, // tri1 - 26, 27, 22, // tri2 - 0, 28, 29 // tri3 -), -gsSPNTriangles_5b( - 30, 31, 21, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&kal_1_v[100], 32, 0), -gsSPNTrianglesInit_5b( - 19, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 0, 2, 6 // tri2 -), -gsSPNTriangles_5b( - 7, 8, 9, // tri0 - 10, 11, 12, // tri1 - 13, 14, 15, // tri2 - 6, 16, 15 // tri3 -), -gsSPNTriangles_5b( - 3, 5, 17, // tri0 - 17, 18, 19, // tri1 - 7, 20, 21, // tri2 - 22, 23, 24 // tri3 -), -gsSPNTriangles_5b( - 12, 11, 25, // tri0 - 26, 10, 12, // tri1 - 7, 9, 27, // tri2 - 22, 24, 12 // tri3 -), -gsSPNTriangles_5b( - 21, 28, 7, // tri0 - 17, 19, 29, // tri1 - 7, 28, 30, // tri2 - 31, 13, 15 // tri3 -), -gsSPVertex(&kal_1_v[132], 9, 0), -gsSPNTrianglesInit_5b( - 3, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kal_1_v[0], 25, 0), + gsSPNTrianglesInit_5b(29, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 1 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 6, 10, 1, // tri1 + 11, 12, 13, // tri2 + 11, 13, 14 // tri3 + ), + gsSPNTriangles_5b(6, 0, 15, // tri0 + 9, 16, 5, // tri1 + 7, 9, 4, // tri2 + 17, 7, 4 // tri3 + ), + gsSPNTriangles_5b(15, 0, 18, // tri0 + 3, 5, 19, // tri1 + 15, 20, 6, // tri2 + 5, 4, 9 // tri3 + ), + gsSPNTriangles_5b(15, 13, 12, // tri0 + 11, 14, 5, // tri1 + 19, 5, 14, // tri2 + 21, 22, 12 // tri3 + ), + gsSPNTriangles_5b(23, 15, 18, // tri0 + 13, 15, 23, // tri1 + 23, 19, 14, // tri2 + 23, 14, 13 // tri3 + ), + gsSPNTriangles_5b(12, 22, 15, // tri0 + 11, 24, 21, // tri1 + 12, 11, 21, // tri2 + 5, 24, 11 // tri3 + ), + gsSPNTriangles_5b(4, 3, 17, // tri0 + 2, 18, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&kal_1_v[25], 22, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 2, 4, 9, // tri1 + 7, 10, 11, // tri2 + 7, 11, 8 // tri3 + ), + gsSPNTriangles_5b(0, 8, 1, // tri0 + 8, 0, 12, // tri1 + 12, 0, 2, // tri2 + 12, 6, 8 // tri3 + ), + gsSPNTriangles_5b(1, 3, 2, // tri0 + 2, 9, 12, // tri1 + 8, 11, 1, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 13, 14, 15, // tri0 + 16, 17, 18, // tri1 + 17, 16, 19 // tri2 + ), + gsSPNTriangles_5b(20, 14, 21, // tri0 + 21, 17, 19, // tri1 + 19, 20, 21, // tri2 + 20, 15, 14 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 32, 40, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&kal_1_v[47], 21, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 2 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 9, 3, 2, // tri1 + 0, 3, 10, // tri2 + 0, 10, 11 // tri3 + ), + gsSPNTriangles_5b(12, 0, 11, // tri0 + 4, 13, 14, // tri1 + 15, 0, 12, // tri2 + 14, 16, 4 // tri3 + ), + gsSPNTriangles_5b(9, 5, 17, // tri0 + 17, 4, 16, // tri1 + 17, 5, 4, // tri2 + 18, 13, 1 // tri3 + ), + gsSPNTriangles_5b(9, 10, 3, // tri0 + 2, 5, 9, // tri1 + 13, 4, 1, // tri2 + 19, 13, 18 // tri3 + ), + gsSPNTriangles_5b(15, 1, 0, // tri0 + 1, 15, 18, // tri1 + 6, 19, 18, // tri2 + 18, 15, 6 // tri3 + ), + gsSPNTriangles_5b(8, 20, 19, // tri0 + 19, 6, 8, // tri1 + 2, 1, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&kal_1_v[68], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(1, 9, 2, // tri0 + 10, 11, 12, // tri1 + 6, 13, 14, // tri2 + 15, 16, 13 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 19, 20, 17, // tri1 + 21, 19, 12, // tri2 + 3, 5, 22 // tri3 + ), + gsSPNTriangles_5b(5, 23, 24, // tri0 + 13, 25, 15, // tri1 + 26, 27, 22, // tri2 + 0, 28, 29 // tri3 + ), + gsSPNTriangles_5b(30, 31, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&kal_1_v[100], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 2, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 13, 14, 15, // tri2 + 6, 16, 15 // tri3 + ), + gsSPNTriangles_5b(3, 5, 17, // tri0 + 17, 18, 19, // tri1 + 7, 20, 21, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b(12, 11, 25, // tri0 + 26, 10, 12, // tri1 + 7, 9, 27, // tri2 + 22, 24, 12 // tri3 + ), + gsSPNTriangles_5b(21, 28, 7, // tri0 + 17, 19, 29, // tri1 + 7, 28, 30, // tri2 + 31, 13, 15 // tri3 + ), + gsSPVertex(&kal_1_v[132], 9, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_kal_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&kal_1_v[177], 5, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&kal_1_v[182], 16, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 5, 3, // tri0 - 1, 4, 6, // tri1 - 1, 8, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 10, 9, // tri0 - 0, 1, 11, // tri1 - 2, 12, 13, // tri2 - 2, 0, 14 // tri3 -), -gsSPNTriangles_5b( - 2, 15, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 20, 18, 17, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kal_1_v[177], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kal_1_v[182], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 2, 5, 3, // tri0 + 1, 4, 6, // tri1 + 1, 8, 7 // tri2 + ), + gsSPNTriangles_5b(1, 10, 9, // tri0 + 0, 1, 11, // tri1 + 2, 12, 13, // tri2 + 2, 0, 14 // tri3 + ), + gsSPNTriangles_5b(2, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 18, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_kal_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&kal_1_v[198], 4, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&kal_1_v[202], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 2, 4, // tri0 - 0, 5, 6, // tri1 - 1, 8, 7 // tri2 -), -gsSPNTriangles_5b( - 2, 9, 10, // tri0 - 3, 1, 11, // tri1 - 1, 0, 12, // tri2 - 1, 13, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kal_1_v[198], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kal_1_v[202], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 2, 4, // tri0 + 0, 5, 6, // tri1 + 1, 8, 7 // tri2 + ), + gsSPNTriangles_5b(2, 9, 10, // tri0 + 3, 1, 11, // tri1 + 1, 0, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_kal_model[] = { -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&kal_1_v[141], 5, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&kal_1_v[146], 16, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 5, 6, // tri0 - 4, 7, 8, // tri1 - 4, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 11, // tri0 - 4, 2, 12, // tri1 - 0, 13, 14, // tri2 - 0, 3, 15 // tri3 -), -gsSPNTriangles_5b( - 3, 4, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 18, 17, 20, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kal_1_v[141], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kal_1_v[146], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 + ), + gsSPNTriangles_5b(3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_kal_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&kal_1_v[162], 4, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&kal_1_v[166], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 0, 6, 7, // tri1 - 0, 2, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 3, 9, // tri0 - 2, 11, 10, // tri1 - 3, 13, 12, // tri2 - 3, 1, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kal_1_v[162], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kal_1_v[166], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 + ), + gsSPNTriangles_5b(2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_kal_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&kal_1_v[213], 7, 0), -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&kal_1_v[220], 20, 7), -gsSPNTrianglesInit_5b( - 13, // tri count - 3, 1, 7, // tri0 - 6, 8, 9, // tri1 - 3, 10, 11 // tri2 -), -gsSPNTriangles_5b( - 2, 12, 0, // tri0 - 2, 13, 14, // tri1 - 1, 16, 15, // tri2 - 0, 17, 18 // tri3 -), -gsSPNTriangles_5b( - 0, 19, 20, // tri0 - 1, 21, 22, // tri1 - 6, 3, 23, // tri2 - 2, 6, 24 // tri3 -), -gsSPNTriangles_5b( - 4, 0, 25, // tri0 - 5, 26, 1, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&kal_1_v[240], 9, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 0, 3, 4, // tri1 - 0, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 4, 3, 7, // tri0 - 2, 5, 0, // tri1 - 1, 8, 2, // tri2 - 6, 3, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kal_1_v[213], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kal_1_v[220], 20, 7), + gsSPNTrianglesInit_5b(13, // tri count + 3, 1, 7, // tri0 + 6, 8, 9, // tri1 + 3, 10, 11 // tri2 + ), + gsSPNTriangles_5b(2, 12, 0, // tri0 + 2, 13, 14, // tri1 + 1, 16, 15, // tri2 + 0, 17, 18 // tri3 + ), + gsSPNTriangles_5b(0, 19, 20, // tri0 + 1, 21, 22, // tri1 + 6, 3, 23, // tri2 + 2, 6, 24 // tri3 + ), + gsSPNTriangles_5b(4, 0, 25, // tri0 + 5, 26, 1, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&kal_1_v[240], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 0, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 3, 7, // tri0 + 2, 5, 0, // tri1 + 1, 8, 2, // tri2 + 6, 3, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_kal_model[] = { -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&kal_1_v[299], 5, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&kal_1_v[304], 17, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 4, 0, 5, // tri0 - 0, 7, 6, // tri1 - 3, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 1, 2, 10, // tri0 - 2, 3, 11, // tri1 - 3, 4, 12, // tri2 - 2, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 15, 16, 17, // tri0 - 18, 19, 20, // tri1 - 18, 21, 19 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kal_1_v[299], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kal_1_v[304], 17, 5), + gsSPNTrianglesInit_5b(7, // tri count + 4, 0, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 + ), + gsSPNTriangles_5b(1, 2, 10, // tri0 + 2, 3, 11, // tri1 + 3, 4, 12, // tri2 + 2, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_kal_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&kal_1_v[321], 4, 0), -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&kal_1_v[325], 22, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 3, 4, // tri0 - 0, 5, 1, // tri1 - 1, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 3, 2, 8, // tri0 - 2, 9, 10, // tri1 - 2, 1, 11, // tri2 - 0, 13, 12 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 14, 15, 16, // tri0 - 14, 16, 17, // tri1 - 17, 18, 14 // tri2 -), -gsSPNTriangles_5b( - 19, 20, 21, // tri0 - 21, 20, 18, // tri1 - 21, 22, 19, // tri2 - 17, 21, 18 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsSPNTrianglesInit_5b( - 1, // tri count - 23, 24, 25, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kal_1_v[321], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kal_1_v[325], 22, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 4, // tri0 + 0, 5, 1, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b(3, 2, 8, // tri0 + 2, 9, 10, // tri1 + 2, 1, 11, // tri2 + 0, 13, 12 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 14, 15, 16, // tri0 + 14, 16, 17, // tri1 + 17, 18, 14 // tri2 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 21, 20, 18, // tri1 + 21, 22, 19, // tri2 + 17, 21, 18 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsSPNTrianglesInit_5b(1, // tri count + 23, 24, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_kal_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&kal_1_v[249], 5, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&kal_1_v[254], 17, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 4, 5, // tri0 - 0, 7, 6, // tri1 - 3, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 1, 10, // tri0 - 3, 2, 11, // tri1 - 4, 3, 12, // tri2 - 2, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 15, 16, 17, // tri0 - 18, 19, 20, // tri1 - 19, 21, 20 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kal_1_v[249], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kal_1_v[254], 17, 5), + gsSPNTrianglesInit_5b(7, // tri count + 0, 4, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 + ), + gsSPNTriangles_5b(2, 1, 10, // tri0 + 3, 2, 11, // tri1 + 4, 3, 12, // tri2 + 2, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_kal_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&kal_1_v[271], 6, 0), -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&kal_1_v[277], 22, 6), -gsSPNTrianglesInit_5b( - 7, // tri count - 4, 0, 6, // tri0 - 1, 7, 0, // tri1 - 1, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 2, 5, 10, // tri0 - 2, 11, 12, // tri1 - 1, 3, 13, // tri2 - 0, 15, 14 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 16, 17, 18, // tri0 - 19, 16, 18, // tri1 - 18, 20, 19 // tri2 -), -gsSPNTriangles_5b( - 21, 22, 23, // tri0 - 20, 22, 21, // tri1 - 23, 24, 21, // tri2 - 20, 21, 19 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsSPNTrianglesInit_5b( - 1, // tri count - 25, 26, 27, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kal_1_v[271], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kal_1_v[277], 22, 6), + gsSPNTrianglesInit_5b(7, // tri count + 4, 0, 6, // tri0 + 1, 7, 0, // tri1 + 1, 8, 9 // tri2 + ), + gsSPNTriangles_5b(2, 5, 10, // tri0 + 2, 11, 12, // tri1 + 1, 3, 13, // tri2 + 0, 15, 14 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 16, 17, 18, // tri0 + 19, 16, 18, // tri1 + 18, 20, 19 // tri2 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 20, 22, 21, // tri1 + 23, 24, 21, // tri2 + 20, 21, 19 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsSPNTrianglesInit_5b(1, // tri count + 25, 26, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx base_kal_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&kal_1_v[347], 14, 0), -gsSPNTrianglesInit_5b( - 12, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 9, 5, 4, // tri0 - 10, 4, 0, // tri1 - 10, 9, 4, // tri2 - 7, 11, 12 // tri3 -), -gsSPNTriangles_5b( - 8, 7, 13, // tri0 - 2, 10, 0, // tri1 - 2, 1, 6, // tri2 - 6, 8, 2 // tri3 -), -gsSPNTriangles_5b( - 7, 12, 13, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kal_1_v[347], 14, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 5, 4, // tri0 + 10, 4, 0, // tri1 + 10, 9, 4, // tri2 + 7, 11, 12 // tri3 + ), + gsSPNTriangles_5b(8, 7, 13, // tri0 + 2, 10, 0, // tri1 + 2, 1, 6, // tri2 + 6, 8, 2 // tri3 + ), + gsSPNTriangles_5b(7, 12, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_kal_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -634,4 +563,4 @@ static cKF_Joint_R_c cKF_je_r_kal_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_kal_1 = { 26, 11, cKF_je_r_kal_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_kal_1 = { 26, 11, cKF_je_r_kal_1_tbl }; diff --git a/src/data/npc/model/mdl/kgr_1.c b/src/data/npc/model/mdl/kgr_1.c index 9e3b0b04..4c24a6eb 100644 --- a/src/data/npc/model/mdl/kgr_1.c +++ b/src/data/npc/model/mdl/kgr_1.c @@ -6,811 +6,718 @@ static Vtx kgr_1_v[] = { }; static Gfx head_kgr_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&kgr_1_v[18], 6, 0), -gsSPMatrix(0x0D000380, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&kgr_1_v[24], 19, 6), -gsSPNTrianglesInit_5b( - 12, // tri count - 4, 6, 7, // tri0 - 0, 9, 8, // tri1 - 3, 1, 10 // tri2 -), -gsSPNTriangles_5b( - 1, 12, 11, // tri0 - 1, 0, 13, // tri1 - 3, 14, 15, // tri2 - 2, 17, 16 // tri3 -), -gsSPNTriangles_5b( - 4, 2, 18, // tri0 - 0, 5, 19, // tri1 - 5, 20, 21, // tri2 - 2, 3, 22 // tri3 -), -gsSPNTriangles_5b( - 1, 23, 24, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&kgr_1_v[43], 29, 0), -gsSPNTrianglesInit_5b( - 11, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 0, 2 // tri2 -), -gsSPNTriangles_5b( - 6, 2, 4, // tri0 - 7, 6, 8, // tri1 - 4, 2, 5, // tri2 - 8, 9, 7 // tri3 -), -gsSPNTriangles_5b( - 5, 10, 3, // tri0 - 7, 0, 6, // tri1 - 6, 4, 3, // tri2 - 6, 3, 8 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000180, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 18, // tri count - 11, 12, 13, // tri0 - 14, 15, 16, // tri1 - 17, 18, 19 // tri2 -), -gsSPNTriangles_5b( - 14, 20, 13, // tri0 - 21, 22, 17, // tri1 - 15, 23, 17, // tri2 - 15, 14, 23 // tri3 -), -gsSPNTriangles_5b( - 12, 11, 24, // tri0 - 17, 24, 21, // tri1 - 19, 15, 17, // tri2 - 11, 25, 26 // tri3 -), -gsSPNTriangles_5b( - 11, 26, 27, // tri0 - 16, 28, 20, // tri1 - 16, 20, 14, // tri2 - 13, 25, 11 // tri3 -), -gsSPNTriangles_5b( - 13, 23, 14, // tri0 - 17, 12, 24, // tri1 - 27, 24, 11, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&kgr_1_v[72], 31, 0), -gsSPNTrianglesInit_5b( - 2, // tri count - 0, 1, 2, // tri0 - 3, 0, 2, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 14, // tri count - 4, 5, 6, // tri0 - 7, 8, 9, // tri1 - 7, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 7, 11, 8, // tri0 - 10, 4, 7, // tri1 - 9, 12, 13, // tri2 - 8, 12, 9 // tri3 -), -gsSPNTriangles_5b( - 11, 7, 4, // tri0 - 12, 8, 11, // tri1 - 6, 14, 11, // tri2 - 5, 4, 10 // tri3 -), -gsSPNTriangles_5b( - 14, 13, 12, // tri0 - 11, 14, 12, // tri1 - 4, 6, 11, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 14, // tri count - 15, 16, 17, // tri0 - 18, 19, 20, // tri1 - 16, 21, 17 // tri2 -), -gsSPNTriangles_5b( - 22, 23, 24, // tri0 - 25, 19, 26, // tri1 - 26, 19, 27, // tri2 - 23, 21, 28 // tri3 -), -gsSPNTriangles_5b( - 29, 27, 30, // tri0 - 22, 21, 23, // tri1 - 29, 26, 27, // tri2 - 18, 20, 15 // tri3 -), -gsSPNTriangles_5b( - 17, 18, 15, // tri0 - 16, 28, 21, // tri1 - 19, 25, 20, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kgr_1_v[18], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*14, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kgr_1_v[24], 19, 6), + gsSPNTrianglesInit_5b(12, // tri count + 4, 6, 7, // tri0 + 0, 9, 8, // tri1 + 3, 1, 10 // tri2 + ), + gsSPNTriangles_5b(1, 12, 11, // tri0 + 1, 0, 13, // tri1 + 3, 14, 15, // tri2 + 2, 17, 16 // tri3 + ), + gsSPNTriangles_5b(4, 2, 18, // tri0 + 0, 5, 19, // tri1 + 5, 20, 21, // tri2 + 2, 3, 22 // tri3 + ), + gsSPNTriangles_5b(1, 23, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&kgr_1_v[43], 29, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 0, 2 // tri2 + ), + gsSPNTriangles_5b(6, 2, 4, // tri0 + 7, 6, 8, // tri1 + 4, 2, 5, // tri2 + 8, 9, 7 // tri3 + ), + gsSPNTriangles_5b(5, 10, 3, // tri0 + 7, 0, 6, // tri1 + 6, 4, 3, // tri2 + 6, 3, 8 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x180, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(18, // tri count + 11, 12, 13, // tri0 + 14, 15, 16, // tri1 + 17, 18, 19 // tri2 + ), + gsSPNTriangles_5b(14, 20, 13, // tri0 + 21, 22, 17, // tri1 + 15, 23, 17, // tri2 + 15, 14, 23 // tri3 + ), + gsSPNTriangles_5b(12, 11, 24, // tri0 + 17, 24, 21, // tri1 + 19, 15, 17, // tri2 + 11, 25, 26 // tri3 + ), + gsSPNTriangles_5b(11, 26, 27, // tri0 + 16, 28, 20, // tri1 + 16, 20, 14, // tri2 + 13, 25, 11 // tri3 + ), + gsSPNTriangles_5b(13, 23, 14, // tri0 + 17, 12, 24, // tri1 + 27, 24, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&kgr_1_v[72], 31, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(14, // tri count + 4, 5, 6, // tri0 + 7, 8, 9, // tri1 + 7, 9, 10 // tri2 + ), + gsSPNTriangles_5b(7, 11, 8, // tri0 + 10, 4, 7, // tri1 + 9, 12, 13, // tri2 + 8, 12, 9 // tri3 + ), + gsSPNTriangles_5b(11, 7, 4, // tri0 + 12, 8, 11, // tri1 + 6, 14, 11, // tri2 + 5, 4, 10 // tri3 + ), + gsSPNTriangles_5b(14, 13, 12, // tri0 + 11, 14, 12, // tri1 + 4, 6, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(14, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 16, 21, 17 // tri2 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 25, 19, 26, // tri1 + 26, 19, 27, // tri2 + 23, 21, 28 // tri3 + ), + gsSPNTriangles_5b(29, 27, 30, // tri0 + 22, 21, 23, // tri1 + 29, 26, 27, // tri2 + 18, 20, 15 // tri3 + ), + gsSPNTriangles_5b(17, 18, 15, // tri0 + 16, 28, 21, // tri1 + 19, 25, 20, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx mouth_kgr_model[] = { -gsSPMatrix(0x0D000380, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&kgr_1_v[0], 5, 0), -gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&kgr_1_v[5], 13, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 5, // tri0 - 2, 3, 6, // tri1 - 0, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 4, 0, 9, // tri0 - 4, 10, 11, // tri1 - 3, 13, 12, // tri2 - 3, 4, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 15, 16, 17, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*14, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kgr_1_v[0], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kgr_1_v[5], 13, 5), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 5, // tri0 + 2, 3, 6, // tri1 + 0, 7, 8 // tri2 + ), + gsSPNTriangles_5b(4, 0, 9, // tri0 + 4, 10, 11, // tri1 + 3, 13, 12, // tri2 + 3, 4, 14 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_kgr_model[] = { -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&kgr_1_v[137], 4, 0), -gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&kgr_1_v[141], 16, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 4, 5, // tri0 - 1, 6, 7, // tri1 - 1, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 0, 2, 10, // tri0 - 2, 1, 11, // tri1 - 0, 12, 13, // tri2 - 3, 0, 14 // tri3 -), -gsSPNTriangles_5b( - 1, 3, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 16, 17, 18, // tri0 - 19, 18, 17, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kgr_1_v[137], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kgr_1_v[141], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 0, 4, 5, // tri0 + 1, 6, 7, // tri1 + 1, 8, 9 // tri2 + ), + gsSPNTriangles_5b(0, 2, 10, // tri0 + 2, 1, 11, // tri1 + 0, 12, 13, // tri2 + 3, 0, 14 // tri3 + ), + gsSPNTriangles_5b(1, 3, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 19, 18, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_kgr_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&kgr_1_v[157], 3, 0), -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&kgr_1_v[160], 11, 3), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 3, // tri0 - 1, 5, 4, // tri1 - 2, 7, 6 // tri2 -), -gsSPNTriangles_5b( - 1, 2, 8, // tri0 - 2, 0, 9, // tri1 - 0, 10, 11, // tri2 - 1, 12, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kgr_1_v[157], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kgr_1_v[160], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 3, // tri0 + 1, 5, 4, // tri1 + 2, 7, 6 // tri2 + ), + gsSPNTriangles_5b(1, 2, 8, // tri0 + 2, 0, 9, // tri1 + 0, 10, 11, // tri2 + 1, 12, 13 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_kgr_model[] = { -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&kgr_1_v[103], 4, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&kgr_1_v[107], 16, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 4, 5, // tri0 - 1, 6, 7, // tri1 - 1, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 2, 0, 10, // tri0 - 1, 2, 11, // tri1 - 0, 12, 13, // tri2 - 0, 3, 14 // tri3 -), -gsSPNTriangles_5b( - 3, 1, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 16, 17, 18, // tri0 - 17, 16, 19, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kgr_1_v[103], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kgr_1_v[107], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 0, 4, 5, // tri0 + 1, 6, 7, // tri1 + 1, 8, 9 // tri2 + ), + gsSPNTriangles_5b(2, 0, 10, // tri0 + 1, 2, 11, // tri1 + 0, 12, 13, // tri2 + 0, 3, 14 // tri3 + ), + gsSPNTriangles_5b(3, 1, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_kgr_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&kgr_1_v[123], 3, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&kgr_1_v[126], 11, 3), -gsSPNTrianglesInit_5b( - 7, // tri count - 1, 0, 3, // tri0 - 1, 5, 4, // tri1 - 2, 7, 6 // tri2 -), -gsSPNTriangles_5b( - 2, 1, 8, // tri0 - 0, 2, 9, // tri1 - 0, 10, 11, // tri2 - 1, 12, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kgr_1_v[123], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kgr_1_v[126], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 1, 0, 3, // tri0 + 1, 5, 4, // tri1 + 2, 7, 6 // tri2 + ), + gsSPNTriangles_5b(2, 1, 8, // tri0 + 0, 2, 9, // tri1 + 0, 10, 11, // tri2 + 1, 12, 13 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_kgr_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&kgr_1_v[171], 8, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&kgr_1_v[179], 24, 8), -gsSPNTrianglesInit_5b( - 15, // tri count - 4, 2, 8, // tri0 - 7, 9, 10, // tri1 - 4, 11, 12 // tri2 -), -gsSPNTriangles_5b( - 3, 13, 1, // tri0 - 3, 14, 15, // tri1 - 2, 17, 16, // tri2 - 1, 18, 19 // tri3 -), -gsSPNTriangles_5b( - 1, 20, 21, // tri0 - 2, 22, 23, // tri1 - 7, 4, 24, // tri2 - 3, 7, 25 // tri3 -), -gsSPNTriangles_5b( - 5, 1, 26, // tri0 - 6, 27, 2, // tri1 - 7, 28, 29, // tri2 - 7, 30, 31 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&kgr_1_v[203], 18, 8), -gsSPNTrianglesInit_5b( - 3, // tri count - 0, 9, 8, // tri0 - 0, 10, 11, // tri1 - 0, 13, 12 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsSPNTrianglesInit_5b( - 4, // tri count - 14, 15, 16, // tri0 - 17, 18, 19, // tri1 - 20, 21, 22 // tri2 -), -gsSPNTriangles_5b( - 23, 24, 25, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&kgr_1_v[221], 30, 0), -gsSPNTrianglesInit_5b( - 15, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 4, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 8, 5, 7, // tri0 - 9, 10, 8, // tri1 - 3, 5, 8, // tri2 - 9, 1, 11 // tri3 -), -gsSPNTriangles_5b( - 2, 6, 0, // tri0 - 7, 6, 2, // tri1 - 2, 9, 8, // tri2 - 2, 8, 7 // tri3 -), -gsSPNTriangles_5b( - 4, 7, 5, // tri0 - 8, 10, 3, // tri1 - 11, 10, 9, // tri2 - 9, 2, 1 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 12, 13, 14, // tri0 - 15, 16, 13, // tri1 - 14, 17, 12 // tri2 -), -gsSPNTriangles_5b( - 16, 18, 13, // tri0 - 14, 19, 17, // tri1 - 12, 15, 13, // tri2 - 0, 0, 0 // tri3 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 3, // tri count - 20, 21, 22, // tri0 - 23, 24, 20, // tri1 - 22, 23, 20 // tri2 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 4, // tri count - 25, 26, 27, // tri0 - 26, 28, 29, // tri1 - 26, 25, 28 // tri2 -), -gsSPNTriangles_5b( - 29, 27, 26, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kgr_1_v[171], 8, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kgr_1_v[179], 24, 8), + gsSPNTrianglesInit_5b(15, // tri count + 4, 2, 8, // tri0 + 7, 9, 10, // tri1 + 4, 11, 12 // tri2 + ), + gsSPNTriangles_5b(3, 13, 1, // tri0 + 3, 14, 15, // tri1 + 2, 17, 16, // tri2 + 1, 18, 19 // tri3 + ), + gsSPNTriangles_5b(1, 20, 21, // tri0 + 2, 22, 23, // tri1 + 7, 4, 24, // tri2 + 3, 7, 25 // tri3 + ), + gsSPNTriangles_5b(5, 1, 26, // tri0 + 6, 27, 2, // tri1 + 7, 28, 29, // tri2 + 7, 30, 31 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&kgr_1_v[203], 18, 8), + gsSPNTrianglesInit_5b(3, // tri count + 0, 9, 8, // tri0 + 0, 10, 11, // tri1 + 0, 13, 12 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsSPNTrianglesInit_5b(4, // tri count + 14, 15, 16, // tri0 + 17, 18, 19, // tri1 + 20, 21, 22 // tri2 + ), + gsSPNTriangles_5b(23, 24, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&kgr_1_v[221], 30, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 5, 7, // tri0 + 9, 10, 8, // tri1 + 3, 5, 8, // tri2 + 9, 1, 11 // tri3 + ), + gsSPNTriangles_5b(2, 6, 0, // tri0 + 7, 6, 2, // tri1 + 2, 9, 8, // tri2 + 2, 8, 7 // tri3 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 8, 10, 3, // tri1 + 11, 10, 9, // tri2 + 9, 2, 1 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 12, 13, 14, // tri0 + 15, 16, 13, // tri1 + 14, 17, 12 // tri2 + ), + gsSPNTriangles_5b(16, 18, 13, // tri0 + 14, 19, 17, // tri1 + 12, 15, 13, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(3, // tri count + 20, 21, 22, // tri0 + 23, 24, 20, // tri1 + 22, 23, 20 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(4, // tri count + 25, 26, 27, // tri0 + 26, 28, 29, // tri1 + 26, 25, 28 // tri2 + ), + gsSPNTriangles_5b(29, 27, 26, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail1_kgr_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&kgr_1_v[251], 4, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&kgr_1_v[255], 18, 4), -gsSPNTrianglesInit_5b( - 9, // tri count - 2, 4, 5, // tri0 - 1, 6, 7, // tri1 - 2, 0, 8 // tri2 -), -gsSPNTriangles_5b( - 0, 1, 9, // tri0 - 0, 10, 11, // tri1 - 3, 12, 1, // tri2 - 1, 13, 14 // tri3 -), -gsSPNTriangles_5b( - 2, 15, 16, // tri0 - 2, 17, 3, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 18, 19, 20, // tri0 - 21, 19, 18, // tri1 - 20, 19, 21 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kgr_1_v[251], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kgr_1_v[255], 18, 4), + gsSPNTrianglesInit_5b(9, // tri count + 2, 4, 5, // tri0 + 1, 6, 7, // tri1 + 2, 0, 8 // tri2 + ), + gsSPNTriangles_5b(0, 1, 9, // tri0 + 0, 10, 11, // tri1 + 3, 12, 1, // tri2 + 1, 13, 14 // tri3 + ), + gsSPNTriangles_5b(2, 15, 16, // tri0 + 2, 17, 3, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 18, 19, 20, // tri0 + 21, 19, 18, // tri1 + 20, 19, 21 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot3_kgr_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&kgr_1_v[332], 3, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&kgr_1_v[335], 13, 3), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 3, 4, // tri0 - 2, 1, 5, // tri1 - 2, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 2, 8, 9, // tri0 - 1, 0, 10, // tri1 - 0, 2, 11, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 12, 13, 14, // tri0 - 14, 15, 12, // tri1 - 14, 13, 15 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kgr_1_v[332], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kgr_1_v[335], 13, 3), + gsSPNTrianglesInit_5b(6, // tri count + 0, 3, 4, // tri0 + 2, 1, 5, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(2, 8, 9, // tri0 + 1, 0, 10, // tri1 + 0, 2, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 12, 13, 14, // tri0 + 14, 15, 12, // tri1 + 14, 13, 15 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_kgr_model[] = { -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&kgr_1_v[348], 3, 0), -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&kgr_1_v[351], 14, 3), -gsSPNTrianglesInit_5b( - 7, // tri count - 2, 3, 4, // tri0 - 1, 2, 5, // tri1 - 1, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 0, 1, 8, // tri0 - 2, 0, 9, // tri1 - 1, 10, 11, // tri2 - 2, 12, 13 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 14, 15, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kgr_1_v[348], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kgr_1_v[351], 14, 3), + gsSPNTrianglesInit_5b(7, // tri count + 2, 3, 4, // tri0 + 1, 2, 5, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b(0, 1, 8, // tri0 + 2, 0, 9, // tri1 + 1, 10, 11, // tri2 + 2, 12, 13 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 14, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_kgr_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&kgr_1_v[365], 5, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&kgr_1_v[370], 20, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 3, 2, 5, // tri0 - 0, 6, 1, // tri1 - 0, 4, 7 // tri2 -), -gsSPNTriangles_5b( - 0, 9, 8, // tri0 - 4, 3, 10, // tri1 - 1, 11, 12, // tri2 - 3, 13, 14 // tri3 -), -gsSPNTriangles_5b( - 2, 1, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 16, 17, 18, // tri0 - 17, 19, 20, // tri1 - 17, 16, 19 // tri2 -), -gsSPNTriangles_5b( - 20, 21, 17, // tri0 - 16, 18, 21, // tri1 - 16, 21, 20, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsSPNTrianglesInit_5b( - 1, // tri count - 22, 23, 24, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kgr_1_v[365], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kgr_1_v[370], 20, 5), + gsSPNTrianglesInit_5b(8, // tri count + 3, 2, 5, // tri0 + 0, 6, 1, // tri1 + 0, 4, 7 // tri2 + ), + gsSPNTriangles_5b(0, 9, 8, // tri0 + 4, 3, 10, // tri1 + 1, 11, 12, // tri2 + 3, 13, 14 // tri3 + ), + gsSPNTriangles_5b(2, 1, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 16, 17, 18, // tri0 + 17, 19, 20, // tri1 + 17, 16, 19 // tri2 + ), + gsSPNTriangles_5b(20, 21, 17, // tri0 + 16, 18, 21, // tri1 + 16, 21, 20, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsSPNTrianglesInit_5b(1, // tri count + 22, 23, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot3_kgr_model[] = { -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&kgr_1_v[273], 3, 0), -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&kgr_1_v[276], 13, 3), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 3, 4, // tri0 - 1, 5, 6, // tri1 - 1, 2, 7 // tri2 -), -gsSPNTriangles_5b( - 2, 8, 9, // tri0 - 0, 1, 10, // tri1 - 2, 0, 11, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 12, 13, 14, // tri0 - 14, 15, 12, // tri1 - 15, 13, 12 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kgr_1_v[273], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kgr_1_v[276], 13, 3), + gsSPNTrianglesInit_5b(6, // tri count + 0, 3, 4, // tri0 + 1, 5, 6, // tri1 + 1, 2, 7 // tri2 + ), + gsSPNTriangles_5b(2, 8, 9, // tri0 + 0, 1, 10, // tri1 + 2, 0, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 12, 13, 14, // tri0 + 14, 15, 12, // tri1 + 15, 13, 12 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_kgr_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&kgr_1_v[289], 3, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&kgr_1_v[292], 14, 3), -gsSPNTrianglesInit_5b( - 7, // tri count - 2, 3, 4, // tri0 - 2, 1, 5, // tri1 - 1, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 8, // tri0 - 0, 2, 9, // tri1 - 1, 10, 11, // tri2 - 2, 12, 13 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 14, 15, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kgr_1_v[289], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kgr_1_v[292], 14, 3), + gsSPNTrianglesInit_5b(7, // tri count + 2, 3, 4, // tri0 + 2, 1, 5, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 0, 8, // tri0 + 0, 2, 9, // tri1 + 1, 10, 11, // tri2 + 2, 12, 13 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 14, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_kgr_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&kgr_1_v[306], 6, 0), -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&kgr_1_v[312], 20, 6), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 2, 6, // tri0 - 4, 7, 8, // tri1 - 1, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 4, 5, 11, // tri0 - 3, 13, 12, // tri1 - 5, 1, 14, // tri2 - 4, 15, 3 // tri3 -), -gsSPNTriangles_5b( - 2, 3, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 17, 18, 19, // tri0 - 20, 21, 18, // tri1 - 21, 19, 18 // tri2 -), -gsSPNTriangles_5b( - 18, 22, 20, // tri0 - 20, 22, 17, // tri1 - 20, 17, 19, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsSPNTrianglesInit_5b( - 1, // tri count - 23, 24, 25, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kgr_1_v[306], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kgr_1_v[312], 20, 6), + gsSPNTrianglesInit_5b(8, // tri count + 0, 2, 6, // tri0 + 4, 7, 8, // tri1 + 1, 9, 10 // tri2 + ), + gsSPNTriangles_5b(4, 5, 11, // tri0 + 3, 13, 12, // tri1 + 5, 1, 14, // tri2 + 4, 15, 3 // tri3 + ), + gsSPNTriangles_5b(2, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 17, 18, 19, // tri0 + 20, 21, 18, // tri1 + 21, 19, 18 // tri2 + ), + gsSPNTriangles_5b(18, 22, 20, // tri0 + 20, 22, 17, // tri1 + 20, 17, 19, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsSPNTrianglesInit_5b(1, // tri count + 23, 24, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx base_kgr_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&kgr_1_v[390], 28, 0), -gsSPNTrianglesInit_5b( - 28, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 9, 10, 4, // tri0 - 9, 4, 3, // tri1 - 10, 6, 5, // tri2 - 10, 5, 4 // tri3 -), -gsSPNTriangles_5b( - 11, 12, 13, // tri0 - 11, 13, 2, // tri1 - 12, 14, 0, // tri2 - 12, 0, 13 // tri3 -), -gsSPNTriangles_5b( - 15, 16, 11, // tri0 - 6, 17, 7, // tri1 - 2, 13, 0, // tri2 - 5, 18, 3 // tri3 -), -gsSPNTriangles_5b( - 9, 19, 10, // tri0 - 11, 16, 12, // tri1 - 20, 21, 22, // tri2 - 20, 23, 24 // tri3 -), -gsSPNTriangles_5b( - 24, 25, 20, // tri0 - 11, 26, 15, // tri1 - 25, 16, 15, // tri2 - 12, 27, 14 // tri3 -), -gsSPNTriangles_5b( - 21, 7, 17, // tri0 - 21, 17, 22, // tri1 - 22, 23, 20, // tri2 - 10, 17, 6 // tri3 -), -gsSPNTriangles_5b( - 24, 16, 25, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&kgr_1_v[418], 13, 0), -gsSPNTrianglesInit_5b( - 4, // tri count - 0, 1, 2, // tri0 - 0, 3, 4, // tri1 - 4, 5, 0 // tri2 -), -gsSPNTriangles_5b( - 0, 5, 1, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 6, 7, 8, // tri0 - 9, 10, 6, // tri1 - 10, 9, 11 // tri2 -), -gsSPNTriangles_5b( - 12, 8, 11, // tri0 - 11, 9, 12, // tri1 - 11, 8, 7, // tri2 - 8, 9, 6 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kgr_1_v[390], 28, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 4, // tri0 + 9, 4, 3, // tri1 + 10, 6, 5, // tri2 + 10, 5, 4 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 11, 13, 2, // tri1 + 12, 14, 0, // tri2 + 12, 0, 13 // tri3 + ), + gsSPNTriangles_5b(15, 16, 11, // tri0 + 6, 17, 7, // tri1 + 2, 13, 0, // tri2 + 5, 18, 3 // tri3 + ), + gsSPNTriangles_5b(9, 19, 10, // tri0 + 11, 16, 12, // tri1 + 20, 21, 22, // tri2 + 20, 23, 24 // tri3 + ), + gsSPNTriangles_5b(24, 25, 20, // tri0 + 11, 26, 15, // tri1 + 25, 16, 15, // tri2 + 12, 27, 14 // tri3 + ), + gsSPNTriangles_5b(21, 7, 17, // tri0 + 21, 17, 22, // tri1 + 22, 23, 20, // tri2 + 10, 17, 6 // tri3 + ), + gsSPNTriangles_5b(24, 16, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&kgr_1_v[418], 13, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 4, 5, 0 // tri2 + ), + gsSPNTriangles_5b(0, 5, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 6, 7, 8, // tri0 + 9, 10, 6, // tri1 + 10, 9, 11 // tri2 + ), + gsSPNTriangles_5b(12, 8, 11, // tri0 + 11, 9, 12, // tri1 + 11, 8, 7, // tri2 + 8, 9, 6 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_kgr_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -842,4 +749,4 @@ static cKF_Joint_R_c cKF_je_r_kgr_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_kgr_1 = { 26, 15, cKF_je_r_kgr_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_kgr_1 = { 26, 15, cKF_je_r_kgr_1_tbl }; diff --git a/src/data/npc/model/mdl/lon_1.c b/src/data/npc/model/mdl/lon_1.c index 6cd3a11d..9208d650 100644 --- a/src/data/npc/model/mdl/lon_1.c +++ b/src/data/npc/model/mdl/lon_1.c @@ -6,780 +6,685 @@ static Vtx lon_1_v[] = { }; static Gfx head_lon_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 178, 178, 178, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&lon_1_v[0], 19, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 4, 6, 7, // tri0 - 7, 8, 9, // tri1 - 7, 9, 4, // tri2 - 0, 0, 0 // tri3 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 7, // tri count - 10, 11, 12, // tri0 - 13, 14, 11, // tri1 - 11, 10, 15 // tri2 -), -gsSPNTriangles_5b( - 16, 17, 12, // tri0 - 12, 18, 16, // tri1 - 11, 15, 13, // tri2 - 12, 17, 10 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 32, 40, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&lon_1_v[19], 32, 0), -gsSPNTrianglesInit_5b( - 20, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 4, 1, 0 // tri2 -), -gsSPNTriangles_5b( - 5, 6, 7, // tri0 - 8, 9, 10, // tri1 - 6, 11, 7, // tri2 - 8, 12, 9 // tri3 -), -gsSPNTriangles_5b( - 11, 2, 13, // tri0 - 14, 1, 12, // tri1 - 1, 15, 12, // tri2 - 11, 16, 2 // tri3 -), -gsSPNTriangles_5b( - 15, 1, 4, // tri0 - 17, 18, 19, // tri1 - 20, 21, 22, // tri2 - 23, 24, 25 // tri3 -), -gsSPNTriangles_5b( - 26, 18, 17, // tri0 - 25, 24, 20, // tri1 - 27, 21, 28, // tri2 - 27, 29, 30 // tri3 -), -gsSPNTriangles_5b( - 31, 8, 10, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&lon_1_v[51], 32, 0), -gsSPNTrianglesInit_5b( - 19, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 3, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 8, 4, 7, // tri0 - 9, 10, 11, // tri1 - 12, 13, 14, // tri2 - 8, 2, 1 // tri3 -), -gsSPNTriangles_5b( - 0, 2, 8, // tri0 - 8, 1, 15, // tri1 - 16, 5, 15, // tri2 - 17, 0, 8 // tri3 -), -gsSPNTriangles_5b( - 17, 7, 18, // tri0 - 19, 20, 21, // tri1 - 21, 13, 19, // tri2 - 12, 14, 22 // tri3 -), -gsSPNTriangles_5b( - 22, 23, 24, // tri0 - 25, 9, 26, // tri1 - 27, 26, 28, // tri2 - 29, 30, 31 // tri3 -), -gsSPVertex(&lon_1_v[83], 32, 0), -gsSPNTrianglesInit_5b( - 31, // tri count - 0, 1, 2, // tri0 - 1, 3, 2, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 7, 8, 9, // tri0 - 3, 10, 11, // tri1 - 12, 2, 11, // tri2 - 6, 13, 4 // tri3 -), -gsSPNTriangles_5b( - 9, 8, 2, // tri0 - 14, 9, 15, // tri1 - 16, 17, 18, // tri2 - 8, 7, 0 // tri3 -), -gsSPNTriangles_5b( - 0, 2, 8, // tri0 - 2, 3, 11, // tri1 - 19, 20, 21, // tri2 - 21, 22, 23 // tri3 -), -gsSPNTriangles_5b( - 24, 21, 23, // tri0 - 21, 9, 25, // tri1 - 19, 21, 12, // tri2 - 24, 15, 9 // tri3 -), -gsSPNTriangles_5b( - 15, 26, 16, // tri0 - 16, 14, 15, // tri1 - 9, 21, 24, // tri2 - 2, 12, 25 // tri3 -), -gsSPNTriangles_5b( - 25, 12, 21, // tri0 - 2, 25, 9, // tri1 - 16, 27, 28, // tri2 - 28, 7, 16 // tri3 -), -gsSPNTriangles_5b( - 14, 16, 7, // tri0 - 10, 29, 6, // tri1 - 4, 19, 12, // tri2 - 10, 5, 12 // tri3 -), -gsSPVertex(&lon_1_v[113], 28, 0), -gsSPNTrianglesInit_5b( - 1, // tri count - 0, 1, 2, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 30, // tri count - 3, 4, 5, // tri0 - 6, 7, 8, // tri1 - 9, 10, 3 // tri2 -), -gsSPNTriangles_5b( - 11, 12, 13, // tri0 - 7, 12, 9, // tri1 - 14, 15, 11, // tri2 - 3, 7, 9 // tri3 -), -gsSPNTriangles_5b( - 16, 17, 14, // tri0 - 12, 6, 18, // tri1 - 19, 18, 6, // tri2 - 3, 10, 4 // tri3 -), -gsSPNTriangles_5b( - 19, 6, 20, // tri0 - 21, 3, 22, // tri1 - 17, 15, 14, // tri2 - 23, 14, 24 // tri3 -), -gsSPNTriangles_5b( - 3, 5, 22, // tri0 - 7, 3, 21, // tri1 - 25, 13, 18, // tri2 - 17, 26, 15 // tri3 -), -gsSPNTriangles_5b( - 24, 14, 13, // tri0 - 10, 27, 4, // tri1 - 12, 7, 6, // tri2 - 18, 13, 12 // tri3 -), -gsSPNTriangles_5b( - 11, 9, 12, // tri0 - 14, 23, 16, // tri1 - 8, 7, 21, // tri2 - 24, 13, 25 // tri3 -), -gsSPNTriangles_5b( - 25, 18, 19, // tri0 - 20, 6, 8, // tri1 - 11, 13, 14, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&lon_1_v[141], 24, 0), -gsSPNTrianglesInit_5b( - 28, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 9, 10, 11, // tri0 - 12, 9, 11, // tri1 - 12, 11, 13, // tri2 - 6, 9, 14 // tri3 -), -gsSPNTriangles_5b( - 15, 10, 6, // tri0 - 0, 2, 16, // tri1 - 8, 3, 5, // tri2 - 17, 12, 18 // tri3 -), -gsSPNTriangles_5b( - 13, 19, 12, // tri0 - 16, 20, 18, // tri1 - 5, 6, 8, // tri2 - 18, 20, 17 // tri3 -), -gsSPNTriangles_5b( - 14, 7, 6, // tri0 - 16, 18, 0, // tri1 - 10, 15, 21, // tri2 - 19, 13, 22 // tri3 -), -gsSPNTriangles_5b( - 22, 13, 11, // tri0 - 22, 11, 21, // tri1 - 9, 6, 10, // tri2 - 18, 19, 23 // tri3 -), -gsSPNTriangles_5b( - 22, 23, 19, // tri0 - 21, 11, 10, // tri1 - 19, 18, 12, // tri2 - 23, 0, 18 // tri3 -), -gsSPNTriangles_5b( - 6, 5, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&lon_1_v[165], 27, 0), -gsSPNTrianglesInit_5b( - 9, // tri count - 0, 1, 2, // tri0 - 3, 0, 4, // tri1 - 2, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 4, 0, 7, // tri0 - 2, 7, 0, // tri1 - 7, 6, 8, // tri2 - 8, 6, 9 // tri3 -), -gsSPNTriangles_5b( - 1, 5, 2, // tri0 - 6, 7, 2, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 8, // tri count - 10, 11, 12, // tri0 - 13, 10, 12, // tri1 - 12, 14, 15 // tri2 -), -gsSPNTriangles_5b( - 12, 15, 13, // tri0 - 14, 16, 15, // tri1 - 14, 17, 16, // tri2 - 13, 11, 10 // tri3 -), -gsSPNTriangles_5b( - 16, 17, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 18, 19, 20, // tri0 - 20, 21, 18, // tri1 - 22, 23, 24 // tri2 -), -gsSPNTriangles_5b( - 25, 19, 18, // tri0 - 18, 24, 25, // tri1 - 24, 26, 22, // tri2 - 23, 25, 24 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 178, 178, 178, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&lon_1_v[0], 19, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 7, 8, 9, // tri1 + 7, 9, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(7, // tri count + 10, 11, 12, // tri0 + 13, 14, 11, // tri1 + 11, 10, 15 // tri2 + ), + gsSPNTriangles_5b(16, 17, 12, // tri0 + 12, 18, 16, // tri1 + 11, 15, 13, // tri2 + 12, 17, 10 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 32, 40, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&lon_1_v[19], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 1, 0 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 6, 11, 7, // tri2 + 8, 12, 9 // tri3 + ), + gsSPNTriangles_5b(11, 2, 13, // tri0 + 14, 1, 12, // tri1 + 1, 15, 12, // tri2 + 11, 16, 2 // tri3 + ), + gsSPNTriangles_5b(15, 1, 4, // tri0 + 17, 18, 19, // tri1 + 20, 21, 22, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b(26, 18, 17, // tri0 + 25, 24, 20, // tri1 + 27, 21, 28, // tri2 + 27, 29, 30 // tri3 + ), + gsSPNTriangles_5b(31, 8, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&lon_1_v[51], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 4, 7, // tri0 + 9, 10, 11, // tri1 + 12, 13, 14, // tri2 + 8, 2, 1 // tri3 + ), + gsSPNTriangles_5b(0, 2, 8, // tri0 + 8, 1, 15, // tri1 + 16, 5, 15, // tri2 + 17, 0, 8 // tri3 + ), + gsSPNTriangles_5b(17, 7, 18, // tri0 + 19, 20, 21, // tri1 + 21, 13, 19, // tri2 + 12, 14, 22 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 25, 9, 26, // tri1 + 27, 26, 28, // tri2 + 29, 30, 31 // tri3 + ), + gsSPVertex(&lon_1_v[83], 32, 0), + gsSPNTrianglesInit_5b(31, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 3, 10, 11, // tri1 + 12, 2, 11, // tri2 + 6, 13, 4 // tri3 + ), + gsSPNTriangles_5b(9, 8, 2, // tri0 + 14, 9, 15, // tri1 + 16, 17, 18, // tri2 + 8, 7, 0 // tri3 + ), + gsSPNTriangles_5b(0, 2, 8, // tri0 + 2, 3, 11, // tri1 + 19, 20, 21, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b(24, 21, 23, // tri0 + 21, 9, 25, // tri1 + 19, 21, 12, // tri2 + 24, 15, 9 // tri3 + ), + gsSPNTriangles_5b(15, 26, 16, // tri0 + 16, 14, 15, // tri1 + 9, 21, 24, // tri2 + 2, 12, 25 // tri3 + ), + gsSPNTriangles_5b(25, 12, 21, // tri0 + 2, 25, 9, // tri1 + 16, 27, 28, // tri2 + 28, 7, 16 // tri3 + ), + gsSPNTriangles_5b(14, 16, 7, // tri0 + 10, 29, 6, // tri1 + 4, 19, 12, // tri2 + 10, 5, 12 // tri3 + ), + gsSPVertex(&lon_1_v[113], 28, 0), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(30, // tri count + 3, 4, 5, // tri0 + 6, 7, 8, // tri1 + 9, 10, 3 // tri2 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 7, 12, 9, // tri1 + 14, 15, 11, // tri2 + 3, 7, 9 // tri3 + ), + gsSPNTriangles_5b(16, 17, 14, // tri0 + 12, 6, 18, // tri1 + 19, 18, 6, // tri2 + 3, 10, 4 // tri3 + ), + gsSPNTriangles_5b(19, 6, 20, // tri0 + 21, 3, 22, // tri1 + 17, 15, 14, // tri2 + 23, 14, 24 // tri3 + ), + gsSPNTriangles_5b(3, 5, 22, // tri0 + 7, 3, 21, // tri1 + 25, 13, 18, // tri2 + 17, 26, 15 // tri3 + ), + gsSPNTriangles_5b(24, 14, 13, // tri0 + 10, 27, 4, // tri1 + 12, 7, 6, // tri2 + 18, 13, 12 // tri3 + ), + gsSPNTriangles_5b(11, 9, 12, // tri0 + 14, 23, 16, // tri1 + 8, 7, 21, // tri2 + 24, 13, 25 // tri3 + ), + gsSPNTriangles_5b(25, 18, 19, // tri0 + 20, 6, 8, // tri1 + 11, 13, 14, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&lon_1_v[141], 24, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 9, 11, // tri1 + 12, 11, 13, // tri2 + 6, 9, 14 // tri3 + ), + gsSPNTriangles_5b(15, 10, 6, // tri0 + 0, 2, 16, // tri1 + 8, 3, 5, // tri2 + 17, 12, 18 // tri3 + ), + gsSPNTriangles_5b(13, 19, 12, // tri0 + 16, 20, 18, // tri1 + 5, 6, 8, // tri2 + 18, 20, 17 // tri3 + ), + gsSPNTriangles_5b(14, 7, 6, // tri0 + 16, 18, 0, // tri1 + 10, 15, 21, // tri2 + 19, 13, 22 // tri3 + ), + gsSPNTriangles_5b(22, 13, 11, // tri0 + 22, 11, 21, // tri1 + 9, 6, 10, // tri2 + 18, 19, 23 // tri3 + ), + gsSPNTriangles_5b(22, 23, 19, // tri0 + 21, 11, 10, // tri1 + 19, 18, 12, // tri2 + 23, 0, 18 // tri3 + ), + gsSPNTriangles_5b(6, 5, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&lon_1_v[165], 27, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 2, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 0, 7, // tri0 + 2, 7, 0, // tri1 + 7, 6, 8, // tri2 + 8, 6, 9 // tri3 + ), + gsSPNTriangles_5b(1, 5, 2, // tri0 + 6, 7, 2, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(8, // tri count + 10, 11, 12, // tri0 + 13, 10, 12, // tri1 + 12, 14, 15 // tri2 + ), + gsSPNTriangles_5b(12, 15, 13, // tri0 + 14, 16, 15, // tri1 + 14, 17, 16, // tri2 + 13, 11, 10 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 18, 19, 20, // tri0 + 20, 21, 18, // tri1 + 22, 23, 24 // tri2 + ), + gsSPNTriangles_5b(25, 19, 18, // tri0 + 18, 24, 25, // tri1 + 24, 26, 22, // tri2 + 23, 25, 24 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_lon_model[] = { -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&lon_1_v[228], 5, 0), -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&lon_1_v[233], 16, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 5, 3, // tri0 - 1, 4, 6, // tri1 - 1, 8, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 10, 9, // tri0 - 0, 1, 11, // tri1 - 2, 12, 13, // tri2 - 2, 0, 14 // tri3 -), -gsSPNTriangles_5b( - 2, 15, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 20, 18, 17, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&lon_1_v[228], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&lon_1_v[233], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 2, 5, 3, // tri0 + 1, 4, 6, // tri1 + 1, 8, 7 // tri2 + ), + gsSPNTriangles_5b(1, 10, 9, // tri0 + 0, 1, 11, // tri1 + 2, 12, 13, // tri2 + 2, 0, 14 // tri3 + ), + gsSPNTriangles_5b(2, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 18, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_lon_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&lon_1_v[249], 4, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&lon_1_v[253], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 2, 4, // tri0 - 0, 5, 6, // tri1 - 1, 8, 7 // tri2 -), -gsSPNTriangles_5b( - 2, 9, 10, // tri0 - 3, 1, 11, // tri1 - 1, 0, 12, // tri2 - 1, 13, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&lon_1_v[249], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&lon_1_v[253], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 2, 4, // tri0 + 0, 5, 6, // tri1 + 1, 8, 7 // tri2 + ), + gsSPNTriangles_5b(2, 9, 10, // tri0 + 3, 1, 11, // tri1 + 1, 0, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_lon_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&lon_1_v[192], 5, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&lon_1_v[197], 16, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 5, 6, // tri0 - 4, 7, 8, // tri1 - 4, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 11, // tri0 - 4, 2, 12, // tri1 - 0, 13, 14, // tri2 - 0, 3, 15 // tri3 -), -gsSPNTriangles_5b( - 3, 4, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 18, 17, 20, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&lon_1_v[192], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&lon_1_v[197], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 + ), + gsSPNTriangles_5b(3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_lon_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&lon_1_v[213], 4, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&lon_1_v[217], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 0, 6, 7, // tri1 - 0, 2, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 3, 9, // tri0 - 2, 11, 10, // tri1 - 3, 13, 12, // tri2 - 3, 1, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&lon_1_v[213], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&lon_1_v[217], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 + ), + gsSPNTriangles_5b(2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_lon_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&lon_1_v[264], 7, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&lon_1_v[271], 20, 7), -gsSPNTrianglesInit_5b( - 13, // tri count - 3, 1, 7, // tri0 - 6, 8, 9, // tri1 - 3, 10, 11 // tri2 -), -gsSPNTriangles_5b( - 2, 12, 0, // tri0 - 2, 13, 14, // tri1 - 1, 16, 15, // tri2 - 0, 17, 18 // tri3 -), -gsSPNTriangles_5b( - 0, 19, 20, // tri0 - 1, 21, 22, // tri1 - 6, 3, 23, // tri2 - 2, 6, 24 // tri3 -), -gsSPNTriangles_5b( - 4, 0, 25, // tri0 - 5, 26, 1, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&lon_1_v[291], 9, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 0, 3, 4, // tri1 - 0, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 4, 3, 7, // tri0 - 2, 5, 0, // tri1 - 1, 8, 2, // tri2 - 6, 3, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&lon_1_v[264], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&lon_1_v[271], 20, 7), + gsSPNTrianglesInit_5b(13, // tri count + 3, 1, 7, // tri0 + 6, 8, 9, // tri1 + 3, 10, 11 // tri2 + ), + gsSPNTriangles_5b(2, 12, 0, // tri0 + 2, 13, 14, // tri1 + 1, 16, 15, // tri2 + 0, 17, 18 // tri3 + ), + gsSPNTriangles_5b(0, 19, 20, // tri0 + 1, 21, 22, // tri1 + 6, 3, 23, // tri2 + 2, 6, 24 // tri3 + ), + gsSPNTriangles_5b(4, 0, 25, // tri0 + 5, 26, 1, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&lon_1_v[291], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 0, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 3, 7, // tri0 + 2, 5, 0, // tri1 + 1, 8, 2, // tri2 + 6, 3, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail1_lon_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&lon_1_v[314], 8, 0), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 1, 0, 4 // tri2 -), -gsSPNTriangles_5b( - 4, 3, 1, // tri0 - 0, 2, 6, // tri1 - 7, 5, 6, // tri2 - 6, 2, 7 // tri3 -), -gsSPNTriangles_5b( - 5, 7, 3, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&lon_1_v[314], 8, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 0, 4 // tri2 + ), + gsSPNTriangles_5b(4, 3, 1, // tri0 + 0, 2, 6, // tri1 + 7, 5, 6, // tri2 + 6, 2, 7 // tri3 + ), + gsSPNTriangles_5b(5, 7, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail2_lon_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&lon_1_v[300], 4, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&lon_1_v[304], 10, 4), -gsSPNTrianglesInit_5b( - 4, // tri count - 2, 1, 4, // tri0 - 3, 2, 5, // tri1 - 0, 3, 6 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 7, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 8, // tri count - 8, 9, 10, // tri0 - 11, 9, 12, // tri1 - 12, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 10, 9, 11, // tri0 - 10, 11, 13, // tri1 - 13, 11, 12, // tri2 - 13, 8, 10 // tri3 -), -gsSPNTriangles_5b( - 12, 8, 13, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&lon_1_v[300], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&lon_1_v[304], 10, 4), + gsSPNTrianglesInit_5b(4, // tri count + 2, 1, 4, // tri0 + 3, 2, 5, // tri1 + 0, 3, 6 // tri2 + ), + gsSPNTriangles_5b(1, 0, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(8, // tri count + 8, 9, 10, // tri0 + 11, 9, 12, // tri1 + 12, 9, 8 // tri2 + ), + gsSPNTriangles_5b(10, 9, 11, // tri0 + 10, 11, 13, // tri1 + 13, 11, 12, // tri2 + 13, 8, 10 // tri3 + ), + gsSPNTriangles_5b(12, 8, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_lon_model[] = { -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&lon_1_v[372], 5, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&lon_1_v[377], 17, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 4, 0, 5, // tri0 - 0, 7, 6, // tri1 - 3, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 1, 2, 10, // tri0 - 2, 3, 11, // tri1 - 3, 4, 12, // tri2 - 2, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 15, 16, 17, // tri0 - 18, 19, 20, // tri1 - 18, 21, 19 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&lon_1_v[372], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&lon_1_v[377], 17, 5), + gsSPNTrianglesInit_5b(7, // tri count + 4, 0, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 + ), + gsSPNTriangles_5b(1, 2, 10, // tri0 + 2, 3, 11, // tri1 + 3, 4, 12, // tri2 + 2, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_lon_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&lon_1_v[394], 4, 0), -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&lon_1_v[398], 22, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 3, 4, // tri0 - 0, 5, 1, // tri1 - 1, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 3, 2, 8, // tri0 - 2, 9, 10, // tri1 - 2, 1, 11, // tri2 - 0, 13, 12 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 14, 15, 16, // tri0 - 14, 16, 17, // tri1 - 17, 18, 14 // tri2 -), -gsSPNTriangles_5b( - 19, 20, 21, // tri0 - 21, 20, 18, // tri1 - 21, 22, 19, // tri2 - 17, 21, 18 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsSPNTrianglesInit_5b( - 1, // tri count - 23, 24, 25, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&lon_1_v[394], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&lon_1_v[398], 22, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 4, // tri0 + 0, 5, 1, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b(3, 2, 8, // tri0 + 2, 9, 10, // tri1 + 2, 1, 11, // tri2 + 0, 13, 12 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 14, 15, 16, // tri0 + 14, 16, 17, // tri1 + 17, 18, 14 // tri2 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 21, 20, 18, // tri1 + 21, 22, 19, // tri2 + 17, 21, 18 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsSPNTrianglesInit_5b(1, // tri count + 23, 24, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_lon_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&lon_1_v[322], 5, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&lon_1_v[327], 17, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 4, 5, // tri0 - 0, 7, 6, // tri1 - 3, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 1, 10, // tri0 - 3, 2, 11, // tri1 - 4, 3, 12, // tri2 - 2, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 15, 16, 17, // tri0 - 18, 19, 20, // tri1 - 19, 21, 20 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&lon_1_v[322], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&lon_1_v[327], 17, 5), + gsSPNTrianglesInit_5b(7, // tri count + 0, 4, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 + ), + gsSPNTriangles_5b(2, 1, 10, // tri0 + 3, 2, 11, // tri1 + 4, 3, 12, // tri2 + 2, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_lon_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&lon_1_v[344], 6, 0), -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&lon_1_v[350], 22, 6), -gsSPNTrianglesInit_5b( - 7, // tri count - 4, 0, 6, // tri0 - 1, 7, 0, // tri1 - 1, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 2, 5, 10, // tri0 - 2, 11, 12, // tri1 - 1, 3, 13, // tri2 - 0, 15, 14 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 16, 17, 18, // tri0 - 19, 16, 18, // tri1 - 18, 20, 19 // tri2 -), -gsSPNTriangles_5b( - 21, 22, 23, // tri0 - 20, 22, 21, // tri1 - 23, 24, 21, // tri2 - 20, 21, 19 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsSPNTrianglesInit_5b( - 1, // tri count - 25, 26, 27, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&lon_1_v[344], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&lon_1_v[350], 22, 6), + gsSPNTrianglesInit_5b(7, // tri count + 4, 0, 6, // tri0 + 1, 7, 0, // tri1 + 1, 8, 9 // tri2 + ), + gsSPNTriangles_5b(2, 5, 10, // tri0 + 2, 11, 12, // tri1 + 1, 3, 13, // tri2 + 0, 15, 14 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 16, 17, 18, // tri0 + 19, 16, 18, // tri1 + 18, 20, 19 // tri2 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 20, 22, 21, // tri1 + 23, 24, 21, // tri2 + 20, 21, 19 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsSPNTrianglesInit_5b(1, // tri count + 25, 26, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx base_lon_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&lon_1_v[420], 14, 0), -gsSPNTrianglesInit_5b( - 12, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 9, 5, 4, // tri0 - 10, 4, 0, // tri1 - 10, 9, 4, // tri2 - 7, 11, 12 // tri3 -), -gsSPNTriangles_5b( - 8, 7, 13, // tri0 - 2, 10, 0, // tri1 - 2, 1, 6, // tri2 - 6, 8, 2 // tri3 -), -gsSPNTriangles_5b( - 7, 12, 13, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&lon_1_v[420], 14, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 5, 4, // tri0 + 10, 4, 0, // tri1 + 10, 9, 4, // tri2 + 7, 11, 12 // tri3 + ), + gsSPNTriangles_5b(8, 7, 13, // tri0 + 2, 10, 0, // tri1 + 2, 1, 6, // tri2 + 6, 8, 2 // tri3 + ), + gsSPNTriangles_5b(7, 12, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_lon_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -811,4 +716,4 @@ static cKF_Joint_R_c cKF_je_r_lon_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_lon_1 = { 26, 13, cKF_je_r_lon_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_lon_1 = { 26, 13, cKF_je_r_lon_1_tbl }; diff --git a/src/data/npc/model/mdl/lrc_1.c b/src/data/npc/model/mdl/lrc_1.c index f1363391..0d254a5a 100644 --- a/src/data/npc/model/mdl/lrc_1.c +++ b/src/data/npc/model/mdl/lrc_1.c @@ -6,710 +6,626 @@ static Vtx lrc_1_v[] = { }; static Gfx head_lrc_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&lrc_1_v[14], 28, 0), -gsSPNTrianglesInit_5b( - 39, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 0, 9, 1, // tri0 - 10, 5, 4, // tri1 - 5, 6, 3, // tri2 - 0, 4, 11 // tri3 -), -gsSPNTriangles_5b( - 0, 11, 12, // tri0 - 4, 3, 11, // tri1 - 13, 14, 4, // tri2 - 13, 4, 0 // tri3 -), -gsSPNTriangles_5b( - 8, 15, 16, // tri0 - 17, 18, 19, // tri1 - 15, 8, 7, // tri2 - 20, 21, 19 // tri3 -), -gsSPNTriangles_5b( - 12, 11, 22, // tri0 - 12, 22, 23, // tri1 - 22, 11, 3, // tri2 - 23, 9, 12 // tri3 -), -gsSPNTriangles_5b( - 9, 23, 18, // tri0 - 9, 18, 17, // tri1 - 1, 9, 17, // tri2 - 16, 20, 19 // tri3 -), -gsSPNTriangles_5b( - 24, 25, 8, // tri0 - 24, 22, 25, // tri1 - 25, 3, 6, // tri2 - 25, 22, 3 // tri3 -), -gsSPNTriangles_5b( - 19, 18, 24, // tri0 - 24, 18, 23, // tri1 - 23, 22, 24, // tri2 - 4, 14, 10 // tri3 -), -gsSPNTriangles_5b( - 2, 13, 0, // tri0 - 8, 16, 24, // tri1 - 16, 19, 24, // tri2 - 8, 25, 6 // tri3 -), -gsSPNTriangles_5b( - 19, 21, 17, // tri0 - 26, 27, 14, // tri1 - 26, 14, 13, // tri2 - 12, 9, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&lrc_1_v[42], 31, 0), -gsSPNTrianglesInit_5b( - 4, // tri count - 0, 1, 2, // tri0 - 2, 3, 4, // tri1 - 2, 4, 0 // tri2 -), -gsSPNTriangles_5b( - 0, 5, 1, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 4, // tri count - 6, 7, 8, // tri0 - 8, 9, 10, // tri1 - 8, 10, 6 // tri2 -), -gsSPNTriangles_5b( - 6, 11, 7, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 253, 255, 255), -gsSPNTrianglesInit_5b( - 3, // tri count - 12, 13, 14, // tri0 - 12, 15, 16, // tri1 - 14, 15, 12 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPNTrianglesInit_5b( - 5, // tri count - 17, 18, 19, // tri0 - 19, 20, 21, // tri1 - 19, 22, 17 // tri2 -), -gsSPNTriangles_5b( - 19, 21, 23, // tri0 - 23, 22, 19, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPSetPrimColor(0, 128, 255, 253, 255, 255), -gsSPNTrianglesInit_5b( - 5, // tri count - 24, 25, 26, // tri0 - 26, 27, 28, // tri1 - 28, 29, 26 // tri2 -), -gsSPNTriangles_5b( - 26, 29, 24, // tri0 - 25, 30, 26, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&lrc_1_v[73], 24, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 4, 2, 5 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 6, // tri0 - 7, 4, 5, // tri1 - 4, 3, 2, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 17, // tri count - 8, 9, 10, // tri0 - 11, 10, 12, // tri1 - 10, 11, 8 // tri2 -), -gsSPNTriangles_5b( - 13, 14, 15, // tri0 - 14, 16, 17, // tri1 - 14, 17, 18, // tri2 - 11, 19, 20 // tri3 -), -gsSPNTriangles_5b( - 20, 8, 11, // tri0 - 17, 21, 18, // tri1 - 19, 11, 22, // tri2 - 15, 14, 18 // tri3 -), -gsSPNTriangles_5b( - 15, 18, 12, // tri0 - 22, 18, 21, // tri1 - 12, 22, 11, // tri2 - 12, 10, 15 // tri3 -), -gsSPNTriangles_5b( - 18, 22, 12, // tri0 - 20, 23, 8, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&lrc_1_v[14], 28, 0), + gsSPNTrianglesInit_5b(39, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(0, 9, 1, // tri0 + 10, 5, 4, // tri1 + 5, 6, 3, // tri2 + 0, 4, 11 // tri3 + ), + gsSPNTriangles_5b(0, 11, 12, // tri0 + 4, 3, 11, // tri1 + 13, 14, 4, // tri2 + 13, 4, 0 // tri3 + ), + gsSPNTriangles_5b(8, 15, 16, // tri0 + 17, 18, 19, // tri1 + 15, 8, 7, // tri2 + 20, 21, 19 // tri3 + ), + gsSPNTriangles_5b(12, 11, 22, // tri0 + 12, 22, 23, // tri1 + 22, 11, 3, // tri2 + 23, 9, 12 // tri3 + ), + gsSPNTriangles_5b(9, 23, 18, // tri0 + 9, 18, 17, // tri1 + 1, 9, 17, // tri2 + 16, 20, 19 // tri3 + ), + gsSPNTriangles_5b(24, 25, 8, // tri0 + 24, 22, 25, // tri1 + 25, 3, 6, // tri2 + 25, 22, 3 // tri3 + ), + gsSPNTriangles_5b(19, 18, 24, // tri0 + 24, 18, 23, // tri1 + 23, 22, 24, // tri2 + 4, 14, 10 // tri3 + ), + gsSPNTriangles_5b(2, 13, 0, // tri0 + 8, 16, 24, // tri1 + 16, 19, 24, // tri2 + 8, 25, 6 // tri3 + ), + gsSPNTriangles_5b(19, 21, 17, // tri0 + 26, 27, 14, // tri1 + 26, 14, 13, // tri2 + 12, 9, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&lrc_1_v[42], 31, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(0, 5, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(4, // tri count + 6, 7, 8, // tri0 + 8, 9, 10, // tri1 + 8, 10, 6 // tri2 + ), + gsSPNTriangles_5b(6, 11, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 253, 255, 255), + gsSPNTrianglesInit_5b(3, // tri count + 12, 13, 14, // tri0 + 12, 15, 16, // tri1 + 14, 15, 12 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPNTrianglesInit_5b(5, // tri count + 17, 18, 19, // tri0 + 19, 20, 21, // tri1 + 19, 22, 17 // tri2 + ), + gsSPNTriangles_5b(19, 21, 23, // tri0 + 23, 22, 19, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetPrimColor(0, 128, 255, 253, 255, 255), + gsSPNTrianglesInit_5b(5, // tri count + 24, 25, 26, // tri0 + 26, 27, 28, // tri1 + 28, 29, 26 // tri2 + ), + gsSPNTriangles_5b(26, 29, 24, // tri0 + 25, 30, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&lrc_1_v[73], 24, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 2, 5 // tri2 + ), + gsSPNTriangles_5b(1, 0, 6, // tri0 + 7, 4, 5, // tri1 + 4, 3, 2, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(17, // tri count + 8, 9, 10, // tri0 + 11, 10, 12, // tri1 + 10, 11, 8 // tri2 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 14, 16, 17, // tri1 + 14, 17, 18, // tri2 + 11, 19, 20 // tri3 + ), + gsSPNTriangles_5b(20, 8, 11, // tri0 + 17, 21, 18, // tri1 + 19, 11, 22, // tri2 + 15, 14, 18 // tri3 + ), + gsSPNTriangles_5b(15, 18, 12, // tri0 + 22, 18, 21, // tri1 + 12, 22, 11, // tri2 + 12, 10, 15 // tri3 + ), + gsSPNTriangles_5b(18, 22, 12, // tri0 + 20, 23, 8, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx mouth_lrc_model[] = { -gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&lrc_1_v[0], 5, 0), -gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&lrc_1_v[5], 9, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 5, 6, // tri0 - 2, 8, 7, // tri1 - 0, 4, 9 // tri2 -), -gsSPNTriangles_5b( - 1, 10, 3, // tri0 - 4, 3, 11, // tri1 - 2, 0, 12, // tri2 - 1, 2, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&lrc_1_v[0], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&lrc_1_v[5], 9, 5), + gsSPNTrianglesInit_5b(7, // tri count + 3, 5, 6, // tri0 + 2, 8, 7, // tri1 + 0, 4, 9 // tri2 + ), + gsSPNTriangles_5b(1, 10, 3, // tri0 + 4, 3, 11, // tri1 + 2, 0, 12, // tri2 + 1, 2, 13 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_lrc_model[] = { -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&lrc_1_v[142], 6, 0), -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&lrc_1_v[148], 24, 6), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 5, 6, // tri0 - 0, 2, 7, // tri1 - 0, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 2, 10, 11, // tri0 - 1, 12, 13, // tri1 - 3, 1, 14, // tri2 - 1, 0, 15 // tri3 -), -gsSPNTriangles_5b( - 4, 16, 17, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 18, 19, 20, // tri0 - 18, 20, 21, // tri1 - 22, 20, 19 // tri2 -), -gsSPNTriangles_5b( - 21, 22, 23, // tri0 - 24, 23, 22, // tri1 - 19, 25, 22, // tri2 - 22, 21, 20 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000180, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 2, // tri count - 26, 27, 28, // tri0 - 26, 29, 27, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&lrc_1_v[142], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&lrc_1_v[148], 24, 6), + gsSPNTrianglesInit_5b(8, // tri count + 2, 5, 6, // tri0 + 0, 2, 7, // tri1 + 0, 8, 9 // tri2 + ), + gsSPNTriangles_5b(2, 10, 11, // tri0 + 1, 12, 13, // tri1 + 3, 1, 14, // tri2 + 1, 0, 15 // tri3 + ), + gsSPNTriangles_5b(4, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 18, 19, 20, // tri0 + 18, 20, 21, // tri1 + 22, 20, 19 // tri2 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 24, 23, 22, // tri1 + 19, 25, 22, // tri2 + 22, 21, 20 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x180, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 26, 27, 28, // tri0 + 26, 29, 27, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_lrc_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&lrc_1_v[172], 4, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&lrc_1_v[176], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 1, 4, 0, // tri0 - 3, 6, 5, // tri1 - 1, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 0, 9, 10, // tri0 - 3, 11, 12, // tri1 - 2, 3, 13, // tri2 - 3, 0, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&lrc_1_v[172], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&lrc_1_v[176], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 1, 4, 0, // tri0 + 3, 6, 5, // tri1 + 1, 7, 8 // tri2 + ), + gsSPNTriangles_5b(0, 9, 10, // tri0 + 3, 11, 12, // tri1 + 2, 3, 13, // tri2 + 3, 0, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_lrc_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&lrc_1_v[97], 6, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&lrc_1_v[103], 24, 6), -gsSPNTrianglesInit_5b( - 8, // tri count - 5, 2, 6, // tri0 - 2, 0, 7, // tri1 - 0, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 2, 10, 11, // tri0 - 1, 12, 13, // tri1 - 1, 3, 14, // tri2 - 0, 1, 15 // tri3 -), -gsSPNTriangles_5b( - 4, 16, 17, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 18, 19, 20, // tri0 - 18, 20, 21, // tri1 - 20, 19, 22 // tri2 -), -gsSPNTriangles_5b( - 23, 22, 18, // tri0 - 22, 23, 24, // tri1 - 22, 25, 20, // tri2 - 19, 18, 22 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000180, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 2, // tri count - 26, 27, 28, // tri0 - 26, 29, 27, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&lrc_1_v[97], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&lrc_1_v[103], 24, 6), + gsSPNTrianglesInit_5b(8, // tri count + 5, 2, 6, // tri0 + 2, 0, 7, // tri1 + 0, 8, 9 // tri2 + ), + gsSPNTriangles_5b(2, 10, 11, // tri0 + 1, 12, 13, // tri1 + 1, 3, 14, // tri2 + 0, 1, 15 // tri3 + ), + gsSPNTriangles_5b(4, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 18, 19, 20, // tri0 + 18, 20, 21, // tri1 + 20, 19, 22 // tri2 + ), + gsSPNTriangles_5b(23, 22, 18, // tri0 + 22, 23, 24, // tri1 + 22, 25, 20, // tri2 + 19, 18, 22 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x180, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 26, 27, 28, // tri0 + 26, 29, 27, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_lrc_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&lrc_1_v[127], 4, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&lrc_1_v[131], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 4, 1, // tri0 - 3, 6, 5, // tri1 - 1, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 0, 9, 10, // tri0 - 3, 11, 12, // tri1 - 3, 2, 13, // tri2 - 0, 3, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&lrc_1_v[127], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&lrc_1_v[131], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 4, 1, // tri0 + 3, 6, 5, // tri1 + 1, 7, 8 // tri2 + ), + gsSPNTriangles_5b(0, 9, 10, // tri0 + 3, 11, 12, // tri1 + 3, 2, 13, // tri2 + 0, 3, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_lrc_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 48, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&lrc_1_v[187], 25, 0), -gsSPNTrianglesInit_5b( - 31, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 5 // tri2 -), -gsSPNTriangles_5b( - 8, 5, 4, // tri0 - 9, 10, 11, // tri1 - 11, 12, 13, // tri2 - 14, 2, 9 // tri3 -), -gsSPNTriangles_5b( - 13, 8, 0, // tri0 - 11, 15, 12, // tri1 - 16, 0, 17, // tri2 - 16, 1, 0 // tri3 -), -gsSPNTriangles_5b( - 8, 17, 0, // tri0 - 13, 14, 11, // tri1 - 0, 14, 13, // tri2 - 13, 5, 8 // tri3 -), -gsSPNTriangles_5b( - 5, 12, 6, // tri0 - 5, 13, 12, // tri1 - 15, 11, 18, // tri2 - 11, 10, 18 // tri3 -), -gsSPNTriangles_5b( - 2, 14, 0, // tri0 - 11, 14, 9, // tri1 - 19, 20, 2, // tri2 - 19, 2, 1 // tri3 -), -gsSPNTriangles_5b( - 1, 16, 21, // tri0 - 10, 9, 22, // tri1 - 10, 22, 23, // tri2 - 24, 18, 10 // tri3 -), -gsSPNTriangles_5b( - 20, 9, 2, // tri0 - 9, 20, 22, // tri1 - 1, 21, 19, // tri2 - 23, 24, 10 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0004C0, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&lrc_1_v[212], 15, 0), -gsSPNTrianglesInit_5b( - 16, // tri count - 0, 1, 2, // tri0 - 0, 3, 4, // tri1 - 5, 3, 6 // tri2 -), -gsSPNTriangles_5b( - 3, 7, 6, // tri0 - 8, 1, 9, // tri1 - 10, 2, 11, // tri2 - 7, 2, 10 // tri3 -), -gsSPNTriangles_5b( - 2, 7, 3, // tri0 - 2, 1, 11, // tri1 - 4, 3, 5, // tri2 - 12, 9, 1 // tri3 -), -gsSPNTriangles_5b( - 0, 2, 3, // tri0 - 12, 1, 0, // tri1 - 8, 11, 1, // tri2 - 11, 8, 13 // tri3 -), -gsSPNTriangles_5b( - 14, 6, 7, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 48, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&lrc_1_v[187], 25, 0), + gsSPNTrianglesInit_5b(31, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 5 // tri2 + ), + gsSPNTriangles_5b(8, 5, 4, // tri0 + 9, 10, 11, // tri1 + 11, 12, 13, // tri2 + 14, 2, 9 // tri3 + ), + gsSPNTriangles_5b(13, 8, 0, // tri0 + 11, 15, 12, // tri1 + 16, 0, 17, // tri2 + 16, 1, 0 // tri3 + ), + gsSPNTriangles_5b(8, 17, 0, // tri0 + 13, 14, 11, // tri1 + 0, 14, 13, // tri2 + 13, 5, 8 // tri3 + ), + gsSPNTriangles_5b(5, 12, 6, // tri0 + 5, 13, 12, // tri1 + 15, 11, 18, // tri2 + 11, 10, 18 // tri3 + ), + gsSPNTriangles_5b(2, 14, 0, // tri0 + 11, 14, 9, // tri1 + 19, 20, 2, // tri2 + 19, 2, 1 // tri3 + ), + gsSPNTriangles_5b(1, 16, 21, // tri0 + 10, 9, 22, // tri1 + 10, 22, 23, // tri2 + 24, 18, 10 // tri3 + ), + gsSPNTriangles_5b(20, 9, 2, // tri0 + 9, 20, 22, // tri1 + 1, 21, 19, // tri2 + 23, 24, 10 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x4C0, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&lrc_1_v[212], 15, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(3, 7, 6, // tri0 + 8, 1, 9, // tri1 + 10, 2, 11, // tri2 + 7, 2, 10 // tri3 + ), + gsSPNTriangles_5b(2, 7, 3, // tri0 + 2, 1, 11, // tri1 + 4, 3, 5, // tri2 + 12, 9, 1 // tri3 + ), + gsSPNTriangles_5b(0, 2, 3, // tri0 + 12, 1, 0, // tri1 + 8, 11, 1, // tri2 + 11, 8, 13 // tri3 + ), + gsSPNTriangles_5b(14, 6, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail1_lrc_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&lrc_1_v[252], 4, 0), -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0005C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&lrc_1_v[256], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 1, 4, 5, // tri0 - 1, 0, 6, // tri1 - 2, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 1, 9, 10, // tri0 - 2, 1, 11, // tri1 - 0, 12, 13, // tri2 - 0, 3, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&lrc_1_v[252], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x5C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&lrc_1_v[256], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 1, 4, 5, // tri0 + 1, 0, 6, // tri1 + 2, 7, 8 // tri2 + ), + gsSPNTriangles_5b(1, 9, 10, // tri0 + 2, 1, 11, // tri1 + 0, 12, 13, // tri2 + 0, 3, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail2_lrc_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&lrc_1_v[227], 4, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0005C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&lrc_1_v[231], 21, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 4, 5, // tri0 - 0, 3, 6, // tri1 - 1, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 0, 9, // tri0 - 1, 2, 10, // tri1 - 0, 11, 12, // tri2 - 3, 1, 13 // tri3 -), -gsSPNTriangles_5b( - 2, 14, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 12, // tri count - 16, 17, 18, // tri0 - 19, 17, 16, // tri1 - 20, 21, 22 // tri2 -), -gsSPNTriangles_5b( - 20, 23, 16, // tri0 - 18, 21, 16, // tri1 - 16, 23, 19, // tri2 - 23, 22, 24 // tri3 -), -gsSPNTriangles_5b( - 24, 22, 21, // tri0 - 16, 21, 20, // tri1 - 24, 19, 23, // tri2 - 22, 23, 20 // tri3 -), -gsSPNTriangles_5b( - 21, 18, 24, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&lrc_1_v[227], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x5C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&lrc_1_v[231], 21, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 0, 3, 6, // tri1 + 1, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 0, 9, // tri0 + 1, 2, 10, // tri1 + 0, 11, 12, // tri2 + 3, 1, 13 // tri3 + ), + gsSPNTriangles_5b(2, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(12, // tri count + 16, 17, 18, // tri0 + 19, 17, 16, // tri1 + 20, 21, 22 // tri2 + ), + gsSPNTriangles_5b(20, 23, 16, // tri0 + 18, 21, 16, // tri1 + 16, 23, 19, // tri2 + 23, 22, 24 // tri3 + ), + gsSPNTriangles_5b(24, 22, 21, // tri0 + 16, 21, 20, // tri1 + 24, 19, 23, // tri2 + 22, 23, 20 // tri3 + ), + gsSPNTriangles_5b(21, 18, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_lrc_model[] = { -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&lrc_1_v[292], 5, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&lrc_1_v[297], 15, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 0, 5, // tri0 - 0, 7, 6, // tri1 - 2, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 0, 1, 10, // tri0 - 1, 2, 11, // tri1 - 2, 4, 12, // tri2 - 1, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 15, 16, 17, // tri0 - 18, 16, 15, // tri1 - 19, 17, 16 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&lrc_1_v[292], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&lrc_1_v[297], 15, 5), + gsSPNTrianglesInit_5b(7, // tri count + 3, 0, 5, // tri0 + 0, 7, 6, // tri1 + 2, 9, 8 // tri2 + ), + gsSPNTriangles_5b(0, 1, 10, // tri0 + 1, 2, 11, // tri1 + 2, 4, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 16, 15, // tri1 + 19, 17, 16 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_lrc_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&lrc_1_v[312], 9, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 1, 6, 2 // tri2 -), -gsSPNTriangles_5b( - 7, 5, 4, // tri0 - 7, 4, 0, // tri1 - 0, 2, 7, // tri2 - 5, 8, 3 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&lrc_1_v[312], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 6, 2 // tri2 + ), + gsSPNTriangles_5b(7, 5, 4, // tri0 + 7, 4, 0, // tri1 + 0, 2, 7, // tri2 + 5, 8, 3 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_rcd_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&lrc_1_v[267], 4, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&lrc_1_v[271], 14, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 3, 4, // tri0 - 0, 6, 5, // tri1 - 2, 8, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 9, // tri0 - 2, 1, 10, // tri1 - 3, 2, 11, // tri2 - 1, 12, 13 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 14, 15, 16, // tri0 - 16, 15, 17, // tri1 - 15, 14, 17 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&lrc_1_v[267], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&lrc_1_v[271], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 4, // tri0 + 0, 6, 5, // tri1 + 2, 8, 7 // tri2 + ), + gsSPNTriangles_5b(1, 0, 9, // tri0 + 2, 1, 10, // tri1 + 3, 2, 11, // tri2 + 1, 12, 13 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 14, 15, 16, // tri0 + 16, 15, 17, // tri1 + 15, 14, 17 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_lrc_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&lrc_1_v[285], 7, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 3, 4, 1, // tri1 - 0, 5, 1 // tri2 -), -gsSPNTriangles_5b( - 4, 3, 6, // tri0 - 2, 4, 6, // tri1 - 6, 0, 2, // tri2 - 1, 5, 3 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&lrc_1_v[285], 7, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 0, 5, 1 // tri2 + ), + gsSPNTriangles_5b(4, 3, 6, // tri0 + 2, 4, 6, // tri1 + 6, 0, 2, // tri2 + 1, 5, 3 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx base_lrc_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&lrc_1_v[321], 19, 0), -gsSPNTrianglesInit_5b( - 27, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 5, 7, 8, // tri0 - 5, 8, 6, // tri1 - 6, 8, 9, // tri2 - 7, 1, 0 // tri3 -), -gsSPNTriangles_5b( - 1, 4, 2, // tri0 - 1, 7, 5, // tri1 - 1, 5, 4, // tri2 - 10, 11, 12 // tri3 -), -gsSPNTriangles_5b( - 10, 6, 9, // tri0 - 4, 6, 10, // tri1 - 2, 4, 13, // tri2 - 2, 13, 14 // tri3 -), -gsSPNTriangles_5b( - 15, 14, 16, // tri0 - 17, 12, 11, // tri1 - 15, 16, 17, // tri2 - 18, 10, 12 // tri3 -), -gsSPNTriangles_5b( - 10, 13, 4, // tri0 - 18, 13, 10, // tri1 - 16, 14, 18, // tri2 - 18, 14, 13 // tri3 -), -gsSPNTriangles_5b( - 9, 11, 10, // tri0 - 17, 16, 12, // tri1 - 3, 2, 14, // tri2 - 14, 15, 3 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&lrc_1_v[321], 19, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 5, 8, 6, // tri1 + 6, 8, 9, // tri2 + 7, 1, 0 // tri3 + ), + gsSPNTriangles_5b(1, 4, 2, // tri0 + 1, 7, 5, // tri1 + 1, 5, 4, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(10, 6, 9, // tri0 + 4, 6, 10, // tri1 + 2, 4, 13, // tri2 + 2, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 14, 16, // tri0 + 17, 12, 11, // tri1 + 15, 16, 17, // tri2 + 18, 10, 12 // tri3 + ), + gsSPNTriangles_5b(10, 13, 4, // tri0 + 18, 13, 10, // tri1 + 16, 14, 18, // tri2 + 18, 14, 13 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 17, 16, 12, // tri1 + 3, 2, 14, // tri2 + 14, 15, 3 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_lrc_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -741,4 +657,4 @@ static cKF_Joint_R_c cKF_je_r_lrc_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_lrc_1 = { 26, 14, cKF_je_r_lrc_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_lrc_1 = { 26, 14, cKF_je_r_lrc_1_tbl }; diff --git a/src/data/npc/model/mdl/mka_1.c b/src/data/npc/model/mdl/mka_1.c index 7ecc536e..84c48934 100644 --- a/src/data/npc/model/mdl/mka_1.c +++ b/src/data/npc/model/mdl/mka_1.c @@ -6,623 +6,553 @@ static Vtx mka_1_v[] = { }; static Gfx head_mka_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mka_1_v[0], 6, 0), -gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&mka_1_v[6], 23, 6), -gsSPNTrianglesInit_5b( - 9, // tri count - 3, 1, 6, // tri0 - 4, 8, 7, // tri1 - 5, 4, 9 // tri2 -), -gsSPNTriangles_5b( - 5, 10, 0, // tri0 - 0, 12, 11, // tri1 - 5, 13, 14, // tri2 - 4, 2, 15 // tri3 -), -gsSPNTriangles_5b( - 1, 0, 16, // tri0 - 1, 17, 18, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 19, 20, 21, // tri0 - 22, 23, 24, // tri1 - 25, 26, 22 // tri2 -), -gsSPNTriangles_5b( - 27, 28, 19, // tri0 - 21, 27, 19, // tri1 - 22, 24, 25, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&mka_1_v[29], 22, 0), -gsSPNTrianglesInit_5b( - 29, // tri count - 0, 1, 2, // tri0 - 3, 1, 0, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 4, 6, 7, // tri0 - 8, 1, 4, // tri1 - 4, 7, 8, // tri2 - 9, 2, 10 // tri3 -), -gsSPNTriangles_5b( - 11, 5, 3, // tri0 - 1, 10, 2, // tri1 - 2, 12, 0, // tri2 - 12, 2, 9 // tri3 -), -gsSPNTriangles_5b( - 0, 13, 14, // tri0 - 11, 3, 15, // tri1 - 12, 16, 13, // tri2 - 14, 15, 0 // tri3 -), -gsSPNTriangles_5b( - 17, 11, 18, // tri0 - 19, 15, 14, // tri1 - 18, 15, 19, // tri2 - 18, 11, 15 // tri3 -), -gsSPNTriangles_5b( - 20, 11, 17, // tri0 - 5, 21, 6, // tri1 - 20, 5, 11, // tri2 - 20, 21, 5 // tri3 -), -gsSPNTriangles_5b( - 1, 8, 10, // tri0 - 12, 13, 0, // tri1 - 3, 5, 4, // tri2 - 9, 16, 12 // tri3 -), -gsSPNTriangles_5b( - 3, 4, 1, // tri0 - 15, 3, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 32, 13, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&mka_1_v[51], 26, 0), -gsSPNTrianglesInit_5b( - 35, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 1 // tri2 -), -gsSPNTriangles_5b( - 3, 5, 8, // tri0 - 9, 10, 5, // tri1 - 11, 3, 12, // tri2 - 3, 13, 4 // tri3 -), -gsSPNTriangles_5b( - 11, 13, 3, // tri0 - 10, 0, 5, // tri1 - 0, 14, 6, // tri2 - 15, 16, 17 // tri3 -), -gsSPNTriangles_5b( - 17, 16, 1, // tri0 - 16, 15, 12, // tri1 - 16, 12, 8, // tri2 - 10, 14, 0 // tri3 -), -gsSPNTriangles_5b( - 16, 2, 1, // tri0 - 16, 8, 2, // tri1 - 1, 7, 17, // tri2 - 8, 12, 3 // tri3 -), -gsSPNTriangles_5b( - 7, 18, 17, // tri0 - 7, 19, 18, // tri1 - 20, 11, 12, // tri2 - 6, 1, 0 // tri3 -), -gsSPNTriangles_5b( - 2, 8, 0, // tri0 - 17, 18, 21, // tri1 - 5, 0, 8, // tri2 - 12, 15, 20 // tri3 -), -gsSPNTriangles_5b( - 22, 23, 6, // tri0 - 5, 4, 24, // tri1 - 7, 6, 23, // tri2 - 6, 14, 25 // tri3 -), -gsSPNTriangles_5b( - 7, 23, 19, // tri0 - 21, 15, 17, // tri1 - 24, 9, 5, // tri2 - 6, 25, 22 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mka_1_v[0], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mka_1_v[6], 23, 6), + gsSPNTrianglesInit_5b(9, // tri count + 3, 1, 6, // tri0 + 4, 8, 7, // tri1 + 5, 4, 9 // tri2 + ), + gsSPNTriangles_5b(5, 10, 0, // tri0 + 0, 12, 11, // tri1 + 5, 13, 14, // tri2 + 4, 2, 15 // tri3 + ), + gsSPNTriangles_5b(1, 0, 16, // tri0 + 1, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 19, 20, 21, // tri0 + 22, 23, 24, // tri1 + 25, 26, 22 // tri2 + ), + gsSPNTriangles_5b(27, 28, 19, // tri0 + 21, 27, 19, // tri1 + 22, 24, 25, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&mka_1_v[29], 22, 0), + gsSPNTrianglesInit_5b(29, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 1, 4, // tri1 + 4, 7, 8, // tri2 + 9, 2, 10 // tri3 + ), + gsSPNTriangles_5b(11, 5, 3, // tri0 + 1, 10, 2, // tri1 + 2, 12, 0, // tri2 + 12, 2, 9 // tri3 + ), + gsSPNTriangles_5b(0, 13, 14, // tri0 + 11, 3, 15, // tri1 + 12, 16, 13, // tri2 + 14, 15, 0 // tri3 + ), + gsSPNTriangles_5b(17, 11, 18, // tri0 + 19, 15, 14, // tri1 + 18, 15, 19, // tri2 + 18, 11, 15 // tri3 + ), + gsSPNTriangles_5b(20, 11, 17, // tri0 + 5, 21, 6, // tri1 + 20, 5, 11, // tri2 + 20, 21, 5 // tri3 + ), + gsSPNTriangles_5b(1, 8, 10, // tri0 + 12, 13, 0, // tri1 + 3, 5, 4, // tri2 + 9, 16, 12 // tri3 + ), + gsSPNTriangles_5b(3, 4, 1, // tri0 + 15, 3, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 32, 13, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&mka_1_v[51], 26, 0), + gsSPNTrianglesInit_5b(35, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 8, // tri0 + 9, 10, 5, // tri1 + 11, 3, 12, // tri2 + 3, 13, 4 // tri3 + ), + gsSPNTriangles_5b(11, 13, 3, // tri0 + 10, 0, 5, // tri1 + 0, 14, 6, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b(17, 16, 1, // tri0 + 16, 15, 12, // tri1 + 16, 12, 8, // tri2 + 10, 14, 0 // tri3 + ), + gsSPNTriangles_5b(16, 2, 1, // tri0 + 16, 8, 2, // tri1 + 1, 7, 17, // tri2 + 8, 12, 3 // tri3 + ), + gsSPNTriangles_5b(7, 18, 17, // tri0 + 7, 19, 18, // tri1 + 20, 11, 12, // tri2 + 6, 1, 0 // tri3 + ), + gsSPNTriangles_5b(2, 8, 0, // tri0 + 17, 18, 21, // tri1 + 5, 0, 8, // tri2 + 12, 15, 20 // tri3 + ), + gsSPNTriangles_5b(22, 23, 6, // tri0 + 5, 4, 24, // tri1 + 7, 6, 23, // tri2 + 6, 14, 25 // tri3 + ), + gsSPNTriangles_5b(7, 23, 19, // tri0 + 21, 15, 17, // tri1 + 24, 9, 5, // tri2 + 6, 25, 22 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_mka_model[] = { -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mka_1_v[113], 5, 0), -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&mka_1_v[118], 16, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 5, 3, // tri0 - 1, 4, 6, // tri1 - 1, 8, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 10, 9, // tri0 - 0, 1, 11, // tri1 - 2, 12, 13, // tri2 - 2, 0, 14 // tri3 -), -gsSPNTriangles_5b( - 2, 15, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 20, 18, 17, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mka_1_v[113], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mka_1_v[118], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 2, 5, 3, // tri0 + 1, 4, 6, // tri1 + 1, 8, 7 // tri2 + ), + gsSPNTriangles_5b(1, 10, 9, // tri0 + 0, 1, 11, // tri1 + 2, 12, 13, // tri2 + 2, 0, 14 // tri3 + ), + gsSPNTriangles_5b(2, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 18, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_mka_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mka_1_v[134], 4, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&mka_1_v[138], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 2, 4, // tri0 - 0, 5, 6, // tri1 - 1, 8, 7 // tri2 -), -gsSPNTriangles_5b( - 2, 9, 10, // tri0 - 3, 1, 11, // tri1 - 1, 0, 12, // tri2 - 1, 13, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mka_1_v[134], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mka_1_v[138], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 2, 4, // tri0 + 0, 5, 6, // tri1 + 1, 8, 7 // tri2 + ), + gsSPNTriangles_5b(2, 9, 10, // tri0 + 3, 1, 11, // tri1 + 1, 0, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_mka_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mka_1_v[77], 5, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&mka_1_v[82], 16, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 5, 6, // tri0 - 4, 7, 8, // tri1 - 4, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 11, // tri0 - 4, 2, 12, // tri1 - 0, 13, 14, // tri2 - 0, 3, 15 // tri3 -), -gsSPNTriangles_5b( - 3, 4, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 18, 17, 20, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mka_1_v[77], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mka_1_v[82], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 + ), + gsSPNTriangles_5b(3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_mka_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mka_1_v[98], 4, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&mka_1_v[102], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 0, 6, 7, // tri1 - 0, 2, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 3, 9, // tri0 - 2, 11, 10, // tri1 - 3, 13, 12, // tri2 - 3, 1, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mka_1_v[98], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mka_1_v[102], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 + ), + gsSPNTriangles_5b(2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_mka_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mka_1_v[149], 7, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&mka_1_v[156], 20, 7), -gsSPNTrianglesInit_5b( - 13, // tri count - 0, 7, 3, // tri0 - 1, 2, 8, // tri1 - 4, 6, 9 // tri2 -), -gsSPNTriangles_5b( - 6, 5, 10, // tri0 - 3, 11, 12, // tri1 - 2, 13, 14, // tri2 - 2, 15, 16 // tri3 -), -gsSPNTriangles_5b( - 3, 18, 17, // tri0 - 4, 19, 20, // tri1 - 4, 21, 2, // tri2 - 5, 22, 23 // tri3 -), -gsSPNTriangles_5b( - 6, 24, 25, // tri0 - 5, 3, 26, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mka_1_v[149], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mka_1_v[156], 20, 7), + gsSPNTrianglesInit_5b(13, // tri count + 0, 7, 3, // tri0 + 1, 2, 8, // tri1 + 4, 6, 9 // tri2 + ), + gsSPNTriangles_5b(6, 5, 10, // tri0 + 3, 11, 12, // tri1 + 2, 13, 14, // tri2 + 2, 15, 16 // tri3 + ), + gsSPNTriangles_5b(3, 18, 17, // tri0 + 4, 19, 20, // tri1 + 4, 21, 2, // tri2 + 5, 22, 23 // tri3 + ), + gsSPNTriangles_5b(6, 24, 25, // tri0 + 5, 3, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail1_mka_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mka_1_v[200], 8, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 2, // tri0 - 3, 0, 4, // tri1 - 2, 1, 5 // tri2 -), -gsSPNTriangles_5b( - 4, 6, 3, // tri0 - 5, 7, 2, // tri1 - 2, 4, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mka_1_v[200], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 2, 1, 5 // tri2 + ), + gsSPNTriangles_5b(4, 6, 3, // tri0 + 5, 7, 2, // tri1 + 2, 4, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail2_mka_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mka_1_v[176], 4, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&mka_1_v[180], 20, 4), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 4, 5, // tri0 - 1, 6, 7, // tri1 - 3, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 3, 2, 10, // tri0 - 2, 1, 11, // tri1 - 0, 3, 12, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 9, // tri count - 13, 14, 15, // tri0 - 16, 14, 17, // tri1 - 18, 17, 19 // tri2 -), -gsSPNTriangles_5b( - 17, 14, 13, // tri0 - 13, 19, 17, // tri1 - 17, 18, 20, // tri2 - 21, 15, 14 // tri3 -), -gsSPNTriangles_5b( - 15, 22, 13, // tri0 - 19, 23, 18, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mka_1_v[176], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mka_1_v[180], 20, 4), + gsSPNTrianglesInit_5b(6, // tri count + 0, 4, 5, // tri0 + 1, 6, 7, // tri1 + 3, 8, 9 // tri2 + ), + gsSPNTriangles_5b(3, 2, 10, // tri0 + 2, 1, 11, // tri1 + 0, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(9, // tri count + 13, 14, 15, // tri0 + 16, 14, 17, // tri1 + 18, 17, 19 // tri2 + ), + gsSPNTriangles_5b(17, 14, 13, // tri0 + 13, 19, 17, // tri1 + 17, 18, 20, // tri2 + 21, 15, 14 // tri3 + ), + gsSPNTriangles_5b(15, 22, 13, // tri0 + 19, 23, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_mka_model[] = { -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mka_1_v[261], 5, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&mka_1_v[266], 20, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 6, 5, // tri0 - 0, 8, 7, // tri1 - 3, 2, 9 // tri2 -), -gsSPNTriangles_5b( - 0, 4, 10, // tri0 - 0, 11, 12, // tri1 - 1, 0, 13, // tri2 - 2, 1, 14 // tri3 -), -gsSPNTriangles_5b( - 2, 15, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 4, // tri count - 17, 18, 19, // tri0 - 20, 21, 22, // tri1 - 18, 23, 21 // tri2 -), -gsSPNTriangles_5b( - 21, 24, 18, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mka_1_v[261], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mka_1_v[266], 20, 5), + gsSPNTrianglesInit_5b(8, // tri count + 2, 6, 5, // tri0 + 0, 8, 7, // tri1 + 3, 2, 9 // tri2 + ), + gsSPNTriangles_5b(0, 4, 10, // tri0 + 0, 11, 12, // tri1 + 1, 0, 13, // tri2 + 2, 1, 14 // tri3 + ), + gsSPNTriangles_5b(2, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(4, // tri count + 17, 18, 19, // tri0 + 20, 21, 22, // tri1 + 18, 23, 21 // tri2 + ), + gsSPNTriangles_5b(21, 24, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_mka_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mka_1_v[286], 6, 0), -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&mka_1_v[292], 22, 6), -gsSPNTrianglesInit_5b( - 7, // tri count - 2, 7, 6, // tri0 - 0, 1, 8, // tri1 - 0, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 1, 5, 11, // tri0 - 4, 2, 12, // tri1 - 1, 13, 14, // tri2 - 0, 15, 3 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 16, 17, 18, // tri0 - 18, 19, 16, // tri1 - 20, 21, 22 // tri2 -), -gsSPNTriangles_5b( - 23, 18, 17, // tri0 - 23, 17, 21, // tri1 - 21, 20, 23, // tri2 - 22, 24, 20 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsSPNTrianglesInit_5b( - 1, // tri count - 25, 26, 27, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mka_1_v[286], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mka_1_v[292], 22, 6), + gsSPNTrianglesInit_5b(7, // tri count + 2, 7, 6, // tri0 + 0, 1, 8, // tri1 + 0, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 5, 11, // tri0 + 4, 2, 12, // tri1 + 1, 13, 14, // tri2 + 0, 15, 3 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 16, 17, 18, // tri0 + 18, 19, 16, // tri1 + 20, 21, 22 // tri2 + ), + gsSPNTriangles_5b(23, 18, 17, // tri0 + 23, 17, 21, // tri1 + 21, 20, 23, // tri2 + 22, 24, 20 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsSPNTrianglesInit_5b(1, // tri count + 25, 26, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_mka_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mka_1_v[208], 5, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&mka_1_v[213], 20, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 1, 0, 5, // tri0 - 2, 7, 6, // tri1 - 2, 1, 8 // tri2 -), -gsSPNTriangles_5b( - 3, 2, 9, // tri0 - 2, 10, 11, // tri1 - 0, 13, 12, // tri2 - 0, 4, 14 // tri3 -), -gsSPNTriangles_5b( - 0, 15, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 4, // tri count - 17, 18, 19, // tri0 - 20, 21, 18, // tri1 - 20, 22, 23 // tri2 -), -gsSPNTriangles_5b( - 18, 24, 20, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mka_1_v[208], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mka_1_v[213], 20, 5), + gsSPNTrianglesInit_5b(8, // tri count + 1, 0, 5, // tri0 + 2, 7, 6, // tri1 + 2, 1, 8 // tri2 + ), + gsSPNTriangles_5b(3, 2, 9, // tri0 + 2, 10, 11, // tri1 + 0, 13, 12, // tri2 + 0, 4, 14 // tri3 + ), + gsSPNTriangles_5b(0, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(4, // tri count + 17, 18, 19, // tri0 + 20, 21, 18, // tri1 + 20, 22, 23 // tri2 + ), + gsSPNTriangles_5b(18, 24, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_mka_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mka_1_v[233], 6, 0), -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&mka_1_v[239], 22, 6), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 6, // tri0 - 0, 7, 8, // tri1 - 1, 10, 9 // tri2 -), -gsSPNTriangles_5b( - 0, 2, 11, // tri0 - 3, 12, 13, // tri1 - 0, 14, 1, // tri2 - 5, 1, 15 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 16, 17, 18, // tri0 - 19, 20, 21, // tri1 - 16, 22, 17 // tri2 -), -gsSPNTriangles_5b( - 21, 23, 19, // tri0 - 24, 16, 18, // tri1 - 18, 20, 24, // tri2 - 20, 19, 24 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsSPNTrianglesInit_5b( - 1, // tri count - 25, 26, 27, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mka_1_v[233], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mka_1_v[239], 22, 6), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 6, // tri0 + 0, 7, 8, // tri1 + 1, 10, 9 // tri2 + ), + gsSPNTriangles_5b(0, 2, 11, // tri0 + 3, 12, 13, // tri1 + 0, 14, 1, // tri2 + 5, 1, 15 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 16, 17, 18, // tri0 + 19, 20, 21, // tri1 + 16, 22, 17 // tri2 + ), + gsSPNTriangles_5b(21, 23, 19, // tri0 + 24, 16, 18, // tri1 + 18, 20, 24, // tri2 + 20, 19, 24 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsSPNTrianglesInit_5b(1, // tri count + 25, 26, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx base_mka_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mka_1_v[314], 14, 0), -gsSPNTrianglesInit_5b( - 12, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 3, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 4, 7, 5, // tri0 - 8, 0, 9, // tri1 - 10, 5, 7, // tri2 - 6, 11, 12 // tri3 -), -gsSPNTriangles_5b( - 9, 0, 13, // tri0 - 12, 3, 6, // tri1 - 12, 11, 8, // tri2 - 8, 9, 12 // tri3 -), -gsSPNTriangles_5b( - 0, 2, 13, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mka_1_v[314], 14, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 8, 0, 9, // tri1 + 10, 5, 7, // tri2 + 6, 11, 12 // tri3 + ), + gsSPNTriangles_5b(9, 0, 13, // tri0 + 12, 3, 6, // tri1 + 12, 11, 8, // tri2 + 8, 9, 12 // tri3 + ), + gsSPNTriangles_5b(0, 2, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_mka_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -654,4 +584,4 @@ static cKF_Joint_R_c cKF_je_r_mka_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_mka_1 = { 26, 13, cKF_je_r_mka_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_mka_1 = { 26, 13, cKF_je_r_mka_1_tbl }; diff --git a/src/data/npc/model/mdl/mnk_1.c b/src/data/npc/model/mdl/mnk_1.c index a343d9d5..1abb4e7f 100644 --- a/src/data/npc/model/mdl/mnk_1.c +++ b/src/data/npc/model/mdl/mnk_1.c @@ -6,793 +6,698 @@ static Vtx mnk_1_v[] = { }; static Gfx head_mnk_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mnk_1_v[0], 15, 0), -gsSPNTrianglesInit_5b( - 20, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 5, 1, 3 // tri2 -), -gsSPNTriangles_5b( - 6, 7, 3, // tri0 - 8, 0, 9, // tri1 - 9, 10, 8, // tri2 - 3, 0, 6 // tri3 -), -gsSPNTriangles_5b( - 8, 7, 6, // tri0 - 7, 11, 12, // tri1 - 3, 1, 0, // tri2 - 12, 11, 13 // tri3 -), -gsSPNTriangles_5b( - 13, 11, 8, // tri0 - 3, 7, 4, // tri1 - 2, 1, 5, // tri2 - 12, 4, 7 // tri3 -), -gsSPNTriangles_5b( - 0, 14, 9, // tri0 - 8, 11, 7, // tri1 - 6, 0, 8, // tri2 - 8, 10, 13 // tri3 -), -gsSPNTriangles_5b( - 2, 14, 0, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 250, 255), -gsSPVertex(&mnk_1_v[15], 28, 0), -gsSPNTrianglesInit_5b( - 39, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 6, 0, 9, // tri0 - 10, 7, 11, // tri1 - 12, 1, 13, // tri2 - 14, 15, 8 // tri3 -), -gsSPNTriangles_5b( - 0, 16, 13, // tri0 - 2, 17, 0, // tri1 - 15, 14, 18, // tri2 - 8, 10, 19 // tri3 -), -gsSPNTriangles_5b( - 8, 7, 10, // tri0 - 20, 16, 5, // tri1 - 13, 1, 0, // tri2 - 15, 21, 8 // tri3 -), -gsSPNTriangles_5b( - 13, 16, 20, // tri0 - 3, 21, 15, // tri1 - 6, 5, 16, // tri2 - 6, 8, 21 // tri3 -), -gsSPNTriangles_5b( - 10, 22, 23, // tri0 - 24, 25, 17, // tri1 - 16, 0, 6, // tri2 - 21, 5, 6 // tri3 -), -gsSPNTriangles_5b( - 5, 21, 3, // tri0 - 5, 4, 20, // tri1 - 17, 9, 0, // tri2 - 26, 17, 25 // tri3 -), -gsSPNTriangles_5b( - 22, 10, 26, // tri0 - 25, 22, 26, // tri1 - 11, 9, 17, // tri2 - 6, 9, 27 // tri3 -), -gsSPNTriangles_5b( - 11, 7, 27, // tri0 - 11, 26, 10, // tri1 - 17, 26, 11, // tri2 - 27, 9, 11 // tri3 -), -gsSPNTriangles_5b( - 27, 7, 6, // tri0 - 24, 17, 2, // tri1 - 19, 10, 23, // tri2 - 8, 19, 14 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&mnk_1_v[43], 25, 0), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 1, 2, // tri0 - 2, 3, 4, // tri1 - 5, 1, 0 // tri2 -), -gsSPNTriangles_5b( - 6, 7, 4, // tri0 - 4, 3, 6, // tri1 - 2, 8, 0, // tri2 - 4, 8, 2 // tri3 -), -gsSPNTriangles_5b( - 0, 9, 5, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 15, // tri count - 10, 11, 12, // tri0 - 13, 14, 15, // tri1 - 16, 13, 15 // tri2 -), -gsSPNTriangles_5b( - 12, 16, 17, // tri0 - 14, 13, 18, // tri1 - 17, 19, 12, // tri2 - 15, 17, 16 // tri3 -), -gsSPNTriangles_5b( - 18, 20, 14, // tri0 - 21, 18, 12, // tri1 - 12, 19, 10, // tri2 - 18, 13, 16 // tri3 -), -gsSPNTriangles_5b( - 18, 16, 12, // tri0 - 22, 20, 18, // tri1 - 23, 24, 22, // tri2 - 18, 23, 22 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&mnk_1_v[68], 26, 0), -gsSPNTrianglesInit_5b( - 14, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 9, 10, 3, // tri0 - 2, 4, 11, // tri1 - 5, 9, 3, // tri2 - 12, 13, 14 // tri3 -), -gsSPNTriangles_5b( - 14, 15, 12, // tri0 - 14, 16, 15, // tri1 - 8, 17, 6, // tri2 - 13, 18, 14 // tri3 -), -gsSPNTriangles_5b( - 6, 19, 7, // tri0 - 2, 11, 20, // tri1 - 20, 0, 2, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 252, 255, 255), -gsSPNTrianglesInit_5b( - 3, // tri count - 21, 22, 23, // tri0 - 23, 24, 25, // tri1 - 25, 21, 23 // tri2 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mnk_1_v[0], 15, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 1, 3 // tri2 + ), + gsSPNTriangles_5b(6, 7, 3, // tri0 + 8, 0, 9, // tri1 + 9, 10, 8, // tri2 + 3, 0, 6 // tri3 + ), + gsSPNTriangles_5b(8, 7, 6, // tri0 + 7, 11, 12, // tri1 + 3, 1, 0, // tri2 + 12, 11, 13 // tri3 + ), + gsSPNTriangles_5b(13, 11, 8, // tri0 + 3, 7, 4, // tri1 + 2, 1, 5, // tri2 + 12, 4, 7 // tri3 + ), + gsSPNTriangles_5b(0, 14, 9, // tri0 + 8, 11, 7, // tri1 + 6, 0, 8, // tri2 + 8, 10, 13 // tri3 + ), + gsSPNTriangles_5b(2, 14, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 250, 255), + gsSPVertex(&mnk_1_v[15], 28, 0), + gsSPNTrianglesInit_5b(39, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(6, 0, 9, // tri0 + 10, 7, 11, // tri1 + 12, 1, 13, // tri2 + 14, 15, 8 // tri3 + ), + gsSPNTriangles_5b(0, 16, 13, // tri0 + 2, 17, 0, // tri1 + 15, 14, 18, // tri2 + 8, 10, 19 // tri3 + ), + gsSPNTriangles_5b(8, 7, 10, // tri0 + 20, 16, 5, // tri1 + 13, 1, 0, // tri2 + 15, 21, 8 // tri3 + ), + gsSPNTriangles_5b(13, 16, 20, // tri0 + 3, 21, 15, // tri1 + 6, 5, 16, // tri2 + 6, 8, 21 // tri3 + ), + gsSPNTriangles_5b(10, 22, 23, // tri0 + 24, 25, 17, // tri1 + 16, 0, 6, // tri2 + 21, 5, 6 // tri3 + ), + gsSPNTriangles_5b(5, 21, 3, // tri0 + 5, 4, 20, // tri1 + 17, 9, 0, // tri2 + 26, 17, 25 // tri3 + ), + gsSPNTriangles_5b(22, 10, 26, // tri0 + 25, 22, 26, // tri1 + 11, 9, 17, // tri2 + 6, 9, 27 // tri3 + ), + gsSPNTriangles_5b(11, 7, 27, // tri0 + 11, 26, 10, // tri1 + 17, 26, 11, // tri2 + 27, 9, 11 // tri3 + ), + gsSPNTriangles_5b(27, 7, 6, // tri0 + 24, 17, 2, // tri1 + 19, 10, 23, // tri2 + 8, 19, 14 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mnk_1_v[43], 25, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 5, 1, 0 // tri2 + ), + gsSPNTriangles_5b(6, 7, 4, // tri0 + 4, 3, 6, // tri1 + 2, 8, 0, // tri2 + 4, 8, 2 // tri3 + ), + gsSPNTriangles_5b(0, 9, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(15, // tri count + 10, 11, 12, // tri0 + 13, 14, 15, // tri1 + 16, 13, 15 // tri2 + ), + gsSPNTriangles_5b(12, 16, 17, // tri0 + 14, 13, 18, // tri1 + 17, 19, 12, // tri2 + 15, 17, 16 // tri3 + ), + gsSPNTriangles_5b(18, 20, 14, // tri0 + 21, 18, 12, // tri1 + 12, 19, 10, // tri2 + 18, 13, 16 // tri3 + ), + gsSPNTriangles_5b(18, 16, 12, // tri0 + 22, 20, 18, // tri1 + 23, 24, 22, // tri2 + 18, 23, 22 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&mnk_1_v[68], 26, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 3, // tri0 + 2, 4, 11, // tri1 + 5, 9, 3, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(14, 15, 12, // tri0 + 14, 16, 15, // tri1 + 8, 17, 6, // tri2 + 13, 18, 14 // tri3 + ), + gsSPNTriangles_5b(6, 19, 7, // tri0 + 2, 11, 20, // tri1 + 20, 0, 2, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 252, 255, 255), + gsSPNTrianglesInit_5b(3, // tri count + 21, 22, 23, // tri0 + 23, 24, 25, // tri1 + 25, 21, 23 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_mnk_model[] = { -gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mnk_1_v[134], 4, 0), -gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&mnk_1_v[138], 22, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 3, 4, // tri0 - 0, 2, 5, // tri1 - 0, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 2, 8, 9, // tri0 - 1, 10, 11, // tri1 - 3, 1, 12, // tri2 - 1, 0, 13 // tri3 -), -gsSPNTriangles_5b( - 3, 14, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 9, // tri count - 16, 17, 18, // tri0 - 19, 20, 16, // tri1 - 20, 21, 16 // tri2 -), -gsSPNTriangles_5b( - 17, 16, 21, // tri0 - 16, 18, 19, // tri1 - 21, 19, 18, // tri2 - 21, 18, 17 // tri3 -), -gsSPNTriangles_5b( - 22, 23, 24, // tri0 - 22, 24, 25, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mnk_1_v[134], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mnk_1_v[138], 22, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 3, 4, // tri0 + 0, 2, 5, // tri1 + 0, 6, 7 // tri2 + ), + gsSPNTriangles_5b(2, 8, 9, // tri0 + 1, 10, 11, // tri1 + 3, 1, 12, // tri2 + 1, 0, 13 // tri3 + ), + gsSPNTriangles_5b(3, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(9, // tri count + 16, 17, 18, // tri0 + 19, 20, 16, // tri1 + 20, 21, 16 // tri2 + ), + gsSPNTriangles_5b(17, 16, 21, // tri0 + 16, 18, 19, // tri1 + 21, 19, 18, // tri2 + 21, 18, 17 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 22, 24, 25, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_mnk_model[] = { -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mnk_1_v[160], 3, 0), -gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&mnk_1_v[163], 11, 3), -gsSPNTrianglesInit_5b( - 7, // tri count - 2, 3, 1, // tri0 - 0, 5, 4, // tri1 - 2, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 8, 9, // tri0 - 0, 10, 11, // tri1 - 2, 0, 12, // tri2 - 0, 1, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mnk_1_v[160], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mnk_1_v[163], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 2, 3, 1, // tri0 + 0, 5, 4, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 0, 10, 11, // tri1 + 2, 0, 12, // tri2 + 0, 1, 13 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_mnk_model[] = { -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mnk_1_v[94], 4, 0), -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&mnk_1_v[98], 22, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 3, 2, 4, // tri0 - 2, 0, 5, // tri1 - 0, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 2, 8, 9, // tri0 - 1, 10, 11, // tri1 - 1, 3, 12, // tri2 - 0, 1, 13 // tri3 -), -gsSPNTriangles_5b( - 3, 14, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 9, // tri count - 16, 17, 18, // tri0 - 18, 19, 20, // tri1 - 18, 21, 19 // tri2 -), -gsSPNTriangles_5b( - 21, 18, 17, // tri0 - 20, 16, 18, // tri1 - 17, 16, 20, // tri2 - 17, 20, 21 // tri3 -), -gsSPNTriangles_5b( - 22, 23, 24, // tri0 - 22, 24, 25, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mnk_1_v[94], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mnk_1_v[98], 22, 4), + gsSPNTrianglesInit_5b(8, // tri count + 3, 2, 4, // tri0 + 2, 0, 5, // tri1 + 0, 6, 7 // tri2 + ), + gsSPNTriangles_5b(2, 8, 9, // tri0 + 1, 10, 11, // tri1 + 1, 3, 12, // tri2 + 0, 1, 13 // tri3 + ), + gsSPNTriangles_5b(3, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(9, // tri count + 16, 17, 18, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19 // tri2 + ), + gsSPNTriangles_5b(21, 18, 17, // tri0 + 20, 16, 18, // tri1 + 17, 16, 20, // tri2 + 17, 20, 21 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 22, 24, 25, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_mnk_model[] = { -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mnk_1_v[120], 3, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&mnk_1_v[123], 11, 3), -gsSPNTrianglesInit_5b( - 7, // tri count - 1, 3, 2, // tri0 - 0, 5, 4, // tri1 - 2, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 8, 9, // tri0 - 0, 10, 11, // tri1 - 0, 2, 12, // tri2 - 1, 0, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mnk_1_v[120], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mnk_1_v[123], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 1, 3, 2, // tri0 + 0, 5, 4, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 0, 10, 11, // tri1 + 0, 2, 12, // tri2 + 1, 0, 13 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_mnk_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mnk_1_v[174], 9, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&mnk_1_v[183], 21, 9), -gsSPNTrianglesInit_5b( - 13, // tri count - 2, 1, 9, // tri0 - 1, 0, 10, // tri1 - 1, 12, 11 // tri2 -), -gsSPNTriangles_5b( - 0, 13, 14, // tri0 - 0, 6, 15, // tri1 - 0, 16, 17, // tri2 - 7, 19, 18 // tri3 -), -gsSPNTriangles_5b( - 4, 20, 21, // tri0 - 3, 22, 23, // tri1 - 4, 3, 24, // tri2 - 2, 25, 3 // tri3 -), -gsSPNTriangles_5b( - 8, 27, 26, // tri0 - 4, 28, 29, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&mnk_1_v[204], 22, 9), -gsSPNTrianglesInit_5b( - 3, // tri count - 5, 9, 7, // tri0 - 8, 10, 6, // tri1 - 5, 4, 11 // tri2 -), -gsSPNTrianglesInit_5b( - 16, // tri count - 12, 13, 14, // tri0 - 15, 16, 17, // tri1 - 18, 19, 20 // tri2 -), -gsSPNTriangles_5b( - 18, 20, 17, // tri0 - 21, 22, 23, // tri1 - 19, 18, 24, // tri2 - 17, 16, 24 // tri3 -), -gsSPNTriangles_5b( - 25, 26, 14, // tri0 - 19, 27, 12, // tri1 - 21, 28, 15, // tri2 - 28, 21, 29 // tri3 -), -gsSPNTriangles_5b( - 30, 14, 13, // tri0 - 30, 25, 14, // tri1 - 21, 23, 29, // tri2 - 24, 18, 17 // tri3 -), -gsSPNTriangles_5b( - 24, 27, 19, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mnk_1_v[174], 9, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mnk_1_v[183], 21, 9), + gsSPNTrianglesInit_5b(13, // tri count + 2, 1, 9, // tri0 + 1, 0, 10, // tri1 + 1, 12, 11 // tri2 + ), + gsSPNTriangles_5b(0, 13, 14, // tri0 + 0, 6, 15, // tri1 + 0, 16, 17, // tri2 + 7, 19, 18 // tri3 + ), + gsSPNTriangles_5b(4, 20, 21, // tri0 + 3, 22, 23, // tri1 + 4, 3, 24, // tri2 + 2, 25, 3 // tri3 + ), + gsSPNTriangles_5b(8, 27, 26, // tri0 + 4, 28, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&mnk_1_v[204], 22, 9), + gsSPNTrianglesInit_5b(3, // tri count + 5, 9, 7, // tri0 + 8, 10, 6, // tri1 + 5, 4, 11 // tri2 + ), + gsSPNTrianglesInit_5b(16, // tri count + 12, 13, 14, // tri0 + 15, 16, 17, // tri1 + 18, 19, 20 // tri2 + ), + gsSPNTriangles_5b(18, 20, 17, // tri0 + 21, 22, 23, // tri1 + 19, 18, 24, // tri2 + 17, 16, 24 // tri3 + ), + gsSPNTriangles_5b(25, 26, 14, // tri0 + 19, 27, 12, // tri1 + 21, 28, 15, // tri2 + 28, 21, 29 // tri3 + ), + gsSPNTriangles_5b(30, 14, 13, // tri0 + 30, 25, 14, // tri1 + 21, 23, 29, // tri2 + 24, 18, 17 // tri3 + ), + gsSPNTriangles_5b(24, 27, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail1_mnk_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mnk_1_v[258], 3, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&mnk_1_v[261], 9, 3), -gsSPNTrianglesInit_5b( - 6, // tri count - 1, 3, 4, // tri0 - 1, 0, 5, // tri1 - 0, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 0, 2, 8, // tri0 - 2, 9, 10, // tri1 - 2, 1, 11, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mnk_1_v[258], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mnk_1_v[261], 9, 3), + gsSPNTrianglesInit_5b(6, // tri count + 1, 3, 4, // tri0 + 1, 0, 5, // tri1 + 0, 6, 7 // tri2 + ), + gsSPNTriangles_5b(0, 2, 8, // tri0 + 2, 9, 10, // tri1 + 2, 1, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail2_mnk_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mnk_1_v[226], 3, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&mnk_1_v[229], 9, 3), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 3, 4, // tri0 - 0, 2, 5, // tri1 - 1, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 8, // tri0 - 2, 9, 10, // tri1 - 2, 1, 11, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&mnk_1_v[238], 20, 0), -gsSPNTrianglesInit_5b( - 31, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 3, 5, 2 // tri2 -), -gsSPNTriangles_5b( - 2, 5, 6, // tri0 - 2, 6, 7, // tri1 - 8, 9, 10, // tri2 - 8, 10, 11 // tri3 -), -gsSPNTriangles_5b( - 11, 10, 12, // tri0 - 11, 12, 13, // tri1 - 13, 12, 14, // tri2 - 13, 14, 15 // tri3 -), -gsSPNTriangles_5b( - 3, 16, 4, // tri0 - 17, 13, 15, // tri1 - 17, 15, 18, // tri2 - 4, 16, 1 // tri3 -), -gsSPNTriangles_5b( - 4, 1, 5, // tri0 - 5, 1, 0, // tri1 - 5, 0, 6, // tri2 - 6, 0, 19 // tri3 -), -gsSPNTriangles_5b( - 6, 19, 10, // tri0 - 10, 19, 17, // tri1 - 10, 17, 12, // tri2 - 12, 17, 18 // tri3 -), -gsSPNTriangles_5b( - 12, 18, 14, // tri0 - 0, 8, 11, // tri1 - 0, 11, 19, // tri2 - 2, 8, 0 // tri3 -), -gsSPNTriangles_5b( - 19, 11, 13, // tri0 - 19, 13, 17, // tri1 - 16, 3, 2, // tri2 - 16, 2, 1 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mnk_1_v[226], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mnk_1_v[229], 9, 3), + gsSPNTrianglesInit_5b(6, // tri count + 0, 3, 4, // tri0 + 0, 2, 5, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 0, 8, // tri0 + 2, 9, 10, // tri1 + 2, 1, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&mnk_1_v[238], 20, 0), + gsSPNTrianglesInit_5b(31, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 2 // tri2 + ), + gsSPNTriangles_5b(2, 5, 6, // tri0 + 2, 6, 7, // tri1 + 8, 9, 10, // tri2 + 8, 10, 11 // tri3 + ), + gsSPNTriangles_5b(11, 10, 12, // tri0 + 11, 12, 13, // tri1 + 13, 12, 14, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(3, 16, 4, // tri0 + 17, 13, 15, // tri1 + 17, 15, 18, // tri2 + 4, 16, 1 // tri3 + ), + gsSPNTriangles_5b(4, 1, 5, // tri0 + 5, 1, 0, // tri1 + 5, 0, 6, // tri2 + 6, 0, 19 // tri3 + ), + gsSPNTriangles_5b(6, 19, 10, // tri0 + 10, 19, 17, // tri1 + 10, 17, 12, // tri2 + 12, 17, 18 // tri3 + ), + gsSPNTriangles_5b(12, 18, 14, // tri0 + 0, 8, 11, // tri1 + 0, 11, 19, // tri2 + 2, 8, 0 // tri3 + ), + gsSPNTriangles_5b(19, 11, 13, // tri0 + 19, 13, 17, // tri1 + 16, 3, 2, // tri2 + 16, 2, 1 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot3_mnk_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mnk_1_v[317], 3, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000580, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&mnk_1_v[320], 21, 3), -gsSPNTrianglesInit_5b( - 9, // tri count - 2, 3, 4, // tri0 - 0, 5, 6, // tri1 - 0, 2, 7 // tri2 -), -gsSPNTriangles_5b( - 2, 8, 9, // tri0 - 2, 1, 10, // tri1 - 2, 11, 12, // tri2 - 0, 13, 14 // tri3 -), -gsSPNTriangles_5b( - 1, 15, 16, // tri0 - 1, 0, 17, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 4, // tri count - 18, 19, 20, // tri0 - 20, 21, 18, // tri1 - 20, 22, 21 // tri2 -), -gsSPNTriangles_5b( - 18, 23, 19, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mnk_1_v[317], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x580, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mnk_1_v[320], 21, 3), + gsSPNTrianglesInit_5b(9, // tri count + 2, 3, 4, // tri0 + 0, 5, 6, // tri1 + 0, 2, 7 // tri2 + ), + gsSPNTriangles_5b(2, 8, 9, // tri0 + 2, 1, 10, // tri1 + 2, 11, 12, // tri2 + 0, 13, 14 // tri3 + ), + gsSPNTriangles_5b(1, 15, 16, // tri0 + 1, 0, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(4, // tri count + 18, 19, 20, // tri0 + 20, 21, 18, // tri1 + 20, 22, 21 // tri2 + ), + gsSPNTriangles_5b(18, 23, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_mnk_model[] = { -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mnk_1_v[341], 3, 0), -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000580, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&mnk_1_v[344], 14, 3), -gsSPNTrianglesInit_5b( - 7, // tri count - 2, 3, 4, // tri0 - 1, 5, 6, // tri1 - 2, 0, 7 // tri2 -), -gsSPNTriangles_5b( - 0, 1, 8, // tri0 - 1, 9, 10, // tri1 - 1, 2, 11, // tri2 - 2, 12, 13 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 14, 15, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mnk_1_v[341], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x580, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mnk_1_v[344], 14, 3), + gsSPNTrianglesInit_5b(7, // tri count + 2, 3, 4, // tri0 + 1, 5, 6, // tri1 + 2, 0, 7 // tri2 + ), + gsSPNTriangles_5b(0, 1, 8, // tri0 + 1, 9, 10, // tri1 + 1, 2, 11, // tri2 + 2, 12, 13 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 14, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_mnk_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000580, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mnk_1_v[358], 6, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 3, 2, 4 // tri2 -), -gsSPNTriangles_5b( - 5, 4, 1, // tri0 - 4, 5, 3, // tri1 - 1, 0, 5, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x580, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mnk_1_v[358], 6, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b(5, 4, 1, // tri0 + 4, 5, 3, // tri1 + 1, 0, 5, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot3_mnk_model[] = { -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mnk_1_v[270], 3, 0), -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000580, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&mnk_1_v[273], 21, 3), -gsSPNTrianglesInit_5b( - 9, // tri count - 2, 3, 4, // tri0 - 0, 5, 6, // tri1 - 2, 0, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 2, 8, // tri0 - 1, 9, 10, // tri1 - 2, 11, 12, // tri2 - 0, 13, 14 // tri3 -), -gsSPNTriangles_5b( - 1, 15, 16, // tri0 - 0, 1, 17, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 4, // tri count - 18, 19, 20, // tri0 - 20, 21, 18, // tri1 - 21, 22, 18 // tri2 -), -gsSPNTriangles_5b( - 19, 23, 20, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mnk_1_v[270], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x580, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mnk_1_v[273], 21, 3), + gsSPNTrianglesInit_5b(9, // tri count + 2, 3, 4, // tri0 + 0, 5, 6, // tri1 + 2, 0, 7 // tri2 + ), + gsSPNTriangles_5b(1, 2, 8, // tri0 + 1, 9, 10, // tri1 + 2, 11, 12, // tri2 + 0, 13, 14 // tri3 + ), + gsSPNTriangles_5b(1, 15, 16, // tri0 + 0, 1, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(4, // tri count + 18, 19, 20, // tri0 + 20, 21, 18, // tri1 + 21, 22, 18 // tri2 + ), + gsSPNTriangles_5b(19, 23, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_mnk_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mnk_1_v[294], 3, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000580, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&mnk_1_v[297], 14, 3), -gsSPNTrianglesInit_5b( - 7, // tri count - 2, 3, 4, // tri0 - 1, 5, 6, // tri1 - 0, 2, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 8, // tri0 - 1, 9, 10, // tri1 - 2, 1, 11, // tri2 - 2, 12, 13 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 14, 15, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mnk_1_v[294], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x580, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mnk_1_v[297], 14, 3), + gsSPNTrianglesInit_5b(7, // tri count + 2, 3, 4, // tri0 + 1, 5, 6, // tri1 + 0, 2, 7 // tri2 + ), + gsSPNTriangles_5b(1, 0, 8, // tri0 + 1, 9, 10, // tri1 + 2, 1, 11, // tri2 + 2, 12, 13 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 14, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_mnk_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000580, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mnk_1_v[311], 6, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 4, 1, 0 // tri2 -), -gsSPNTriangles_5b( - 2, 4, 5, // tri0 - 0, 5, 4, // tri1 - 5, 3, 2, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x580, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mnk_1_v[311], 6, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 1, 0 // tri2 + ), + gsSPNTriangles_5b(2, 4, 5, // tri0 + 0, 5, 4, // tri1 + 5, 3, 2, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx base_mnk_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0005C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mnk_1_v[364], 25, 0), -gsSPNTrianglesInit_5b( - 24, // tri count - 0, 1, 2, // tri0 - 3, 0, 4, // tri1 - 2, 1, 5 // tri2 -), -gsSPNTriangles_5b( - 4, 0, 2, // tri0 - 6, 5, 1, // tri1 - 3, 7, 8, // tri2 - 8, 7, 9 // tri3 -), -gsSPNTriangles_5b( - 7, 3, 4, // tri0 - 10, 11, 12, // tri1 - 8, 9, 11, // tri2 - 10, 12, 13 // tri3 -), -gsSPNTriangles_5b( - 11, 9, 12, // tri0 - 10, 13, 14, // tri1 - 1, 0, 15, // tri2 - 1, 15, 16 // tri3 -), -gsSPNTriangles_5b( - 15, 0, 17, // tri0 - 16, 15, 10, // tri1 - 10, 15, 17, // tri2 - 8, 17, 3 // tri3 -), -gsSPNTriangles_5b( - 0, 3, 17, // tri0 - 10, 17, 11, // tri1 - 8, 11, 17, // tri2 - 1, 16, 6 // tri3 -), -gsSPNTriangles_5b( - 14, 16, 10, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 3, // tri count - 18, 19, 20, // tri0 - 21, 22, 23, // tri1 - 20, 24, 18 // tri2 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x5C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mnk_1_v[364], 25, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 2, 1, 5 // tri2 + ), + gsSPNTriangles_5b(4, 0, 2, // tri0 + 6, 5, 1, // tri1 + 3, 7, 8, // tri2 + 8, 7, 9 // tri3 + ), + gsSPNTriangles_5b(7, 3, 4, // tri0 + 10, 11, 12, // tri1 + 8, 9, 11, // tri2 + 10, 12, 13 // tri3 + ), + gsSPNTriangles_5b(11, 9, 12, // tri0 + 10, 13, 14, // tri1 + 1, 0, 15, // tri2 + 1, 15, 16 // tri3 + ), + gsSPNTriangles_5b(15, 0, 17, // tri0 + 16, 15, 10, // tri1 + 10, 15, 17, // tri2 + 8, 17, 3 // tri3 + ), + gsSPNTriangles_5b(0, 3, 17, // tri0 + 10, 17, 11, // tri1 + 8, 11, 17, // tri2 + 1, 16, 6 // tri3 + ), + gsSPNTriangles_5b(14, 16, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 18, 19, 20, // tri0 + 21, 22, 23, // tri1 + 20, 24, 18 // tri2 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_mnk_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -824,4 +729,4 @@ static cKF_Joint_R_c cKF_je_r_mnk_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_mnk_1 = { 26, 15, cKF_je_r_mnk_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_mnk_1 = { 26, 15, cKF_je_r_mnk_1_tbl }; diff --git a/src/data/npc/model/mdl/mob_1.c b/src/data/npc/model/mdl/mob_1.c index 40b00982..35ad5777 100644 --- a/src/data/npc/model/mdl/mob_1.c +++ b/src/data/npc/model/mdl/mob_1.c @@ -6,579 +6,507 @@ static Vtx mob_1_v[] = { }; static Gfx head_mob_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mob_1_v[32], 10, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mob_1_v[42], 15, 10), -gsSPNTrianglesInit_5b( - 10, // tri count - 0, 10, 11, // tri0 - 1, 12, 13, // tri1 - 7, 0, 14 // tri2 -), -gsSPNTriangles_5b( - 0, 1, 15, // tri0 - 3, 16, 17, // tri1 - 5, 18, 19, // tri2 - 4, 3, 20 // tri3 -), -gsSPNTriangles_5b( - 0, 21, 22, // tri0 - 1, 4, 23, // tri1 - 5, 7, 24, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mob_1_v[57], 20, 10), -gsSPNTrianglesInit_5b( - 8, // tri count - 8, 11, 10, // tri0 - 8, 13, 12, // tri1 - 9, 15, 14 // tri2 -), -gsSPNTriangles_5b( - 8, 6, 16, // tri0 - 2, 9, 17, // tri1 - 9, 8, 18, // tri2 - 9, 19, 20 // tri3 -), -gsSPNTriangles_5b( - 8, 21, 22, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 23, 24, 25, // tri0 - 26, 23, 25, // tri1 - 27, 26, 25 // tri2 -), -gsSPNTriangles_5b( - 28, 27, 25, // tri0 - 29, 28, 25, // tri1 - 24, 29, 25, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&mob_1_v[77], 31, 0), -gsSPNTrianglesInit_5b( - 12, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 3, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 0, 7, 1, // tri0 - 8, 9, 10, // tri1 - 8, 10, 11, // tri2 - 12, 13, 14 // tri3 -), -gsSPNTriangles_5b( - 15, 16, 17, // tri0 - 15, 17, 18, // tri1 - 12, 14, 19, // tri2 - 20, 21, 22 // tri3 -), -gsSPNTriangles_5b( - 20, 22, 23, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 24, 25, 26, // tri0 - 27, 28, 26, // tri1 - 25, 27, 26 // tri2 -), -gsSPNTriangles_5b( - 29, 24, 26, // tri0 - 30, 29, 26, // tri1 - 28, 30, 26, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&mob_1_v[108], 31, 0), -gsSPNTrianglesInit_5b( - 10, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 3, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 7, 8, 9, // tri0 - 10, 2, 6, // tri1 - 9, 11, 7, // tri2 - 8, 4, 3 // tri3 -), -gsSPNTriangles_5b( - 2, 10, 0, // tri0 - 6, 5, 10, // tri1 - 3, 9, 8, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 12, 13, 14, // tri0 - 15, 16, 17, // tri1 - 16, 15, 12 // tri2 -), -gsSPNTriangles_5b( - 18, 14, 13, // tri0 - 12, 19, 16, // tri1 - 14, 19, 12, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 13, // tri count - 20, 21, 22, // tri0 - 23, 22, 24, // tri1 - 23, 25, 26 // tri2 -), -gsSPNTriangles_5b( - 23, 26, 20, // tri0 - 20, 22, 23, // tri1 - 27, 28, 26, // tri2 - 20, 26, 28 // tri3 -), -gsSPNTriangles_5b( - 26, 25, 29, // tri0 - 25, 24, 30, // tri1 - 28, 21, 20, // tri2 - 25, 30, 29 // tri3 -), -gsSPNTriangles_5b( - 24, 25, 23, // tri0 - 29, 27, 26, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mob_1_v[32], 10, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mob_1_v[42], 15, 10), + gsSPNTrianglesInit_5b(10, // tri count + 0, 10, 11, // tri0 + 1, 12, 13, // tri1 + 7, 0, 14 // tri2 + ), + gsSPNTriangles_5b(0, 1, 15, // tri0 + 3, 16, 17, // tri1 + 5, 18, 19, // tri2 + 4, 3, 20 // tri3 + ), + gsSPNTriangles_5b(0, 21, 22, // tri0 + 1, 4, 23, // tri1 + 5, 7, 24, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mob_1_v[57], 20, 10), + gsSPNTrianglesInit_5b(8, // tri count + 8, 11, 10, // tri0 + 8, 13, 12, // tri1 + 9, 15, 14 // tri2 + ), + gsSPNTriangles_5b(8, 6, 16, // tri0 + 2, 9, 17, // tri1 + 9, 8, 18, // tri2 + 9, 19, 20 // tri3 + ), + gsSPNTriangles_5b(8, 21, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 23, 24, 25, // tri0 + 26, 23, 25, // tri1 + 27, 26, 25 // tri2 + ), + gsSPNTriangles_5b(28, 27, 25, // tri0 + 29, 28, 25, // tri1 + 24, 29, 25, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&mob_1_v[77], 31, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(0, 7, 1, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 15, 17, 18, // tri1 + 12, 14, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(20, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 24, 25, 26, // tri0 + 27, 28, 26, // tri1 + 25, 27, 26 // tri2 + ), + gsSPNTriangles_5b(29, 24, 26, // tri0 + 30, 29, 26, // tri1 + 28, 30, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&mob_1_v[108], 31, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 2, 6, // tri1 + 9, 11, 7, // tri2 + 8, 4, 3 // tri3 + ), + gsSPNTriangles_5b(2, 10, 0, // tri0 + 6, 5, 10, // tri1 + 3, 9, 8, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 12, 13, 14, // tri0 + 15, 16, 17, // tri1 + 16, 15, 12 // tri2 + ), + gsSPNTriangles_5b(18, 14, 13, // tri0 + 12, 19, 16, // tri1 + 14, 19, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(13, // tri count + 20, 21, 22, // tri0 + 23, 22, 24, // tri1 + 23, 25, 26 // tri2 + ), + gsSPNTriangles_5b(23, 26, 20, // tri0 + 20, 22, 23, // tri1 + 27, 28, 26, // tri2 + 20, 26, 28 // tri3 + ), + gsSPNTriangles_5b(26, 25, 29, // tri0 + 25, 24, 30, // tri1 + 28, 21, 20, // tri2 + 25, 30, 29 // tri3 + ), + gsSPNTriangles_5b(24, 25, 23, // tri0 + 29, 27, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx mouth_mob_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mob_1_v[0], 5, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&mob_1_v[5], 21, 5), -gsSPNTrianglesInit_5b( - 10, // tri count - 2, 5, 6, // tri0 - 2, 7, 8, // tri1 - 4, 3, 9 // tri2 -), -gsSPNTriangles_5b( - 3, 10, 11, // tri0 - 4, 12, 13, // tri1 - 1, 4, 14, // tri2 - 3, 0, 15 // tri3 -), -gsSPNTriangles_5b( - 2, 16, 17, // tri0 - 2, 1, 18, // tri1 - 0, 2, 19, // tri2 - 0, 0, 0 // tri3 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 4, // tri count - 20, 21, 22, // tri0 - 20, 22, 23, // tri1 - 23, 24, 25 // tri2 -), -gsSPNTriangles_5b( - 23, 25, 20, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&mob_1_v[26], 6, 0), -gsSPNTrianglesInit_5b( - 3, // tri count - 0, 1, 2, // tri0 - 2, 3, 0, // tri1 - 4, 5, 2 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mob_1_v[0], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mob_1_v[5], 21, 5), + gsSPNTrianglesInit_5b(10, // tri count + 2, 5, 6, // tri0 + 2, 7, 8, // tri1 + 4, 3, 9 // tri2 + ), + gsSPNTriangles_5b(3, 10, 11, // tri0 + 4, 12, 13, // tri1 + 1, 4, 14, // tri2 + 3, 0, 15 // tri3 + ), + gsSPNTriangles_5b(2, 16, 17, // tri0 + 2, 1, 18, // tri1 + 0, 2, 19, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 20, 21, 22, // tri0 + 20, 22, 23, // tri1 + 23, 24, 25 // tri2 + ), + gsSPNTriangles_5b(23, 25, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&mob_1_v[26], 6, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 2 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx hand_mob_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mob_1_v[175], 25, 0), -gsSPNTrianglesInit_5b( - 30, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 3, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 7, 8, 5, // tri0 - 7, 5, 9, // tri1 - 0, 10, 1, // tri2 - 11, 8, 4 // tri3 -), -gsSPNTriangles_5b( - 11, 4, 3, // tri0 - 12, 13, 14, // tri1 - 9, 13, 12, // tri2 - 9, 12, 7 // tri3 -), -gsSPNTriangles_5b( - 0, 2, 10, // tri0 - 6, 5, 8, // tri1 - 6, 8, 11, // tri2 - 11, 10, 2 // tri3 -), -gsSPNTriangles_5b( - 11, 2, 6, // tri0 - 3, 1, 10, // tri1 - 3, 10, 11, // tri2 - 6, 2, 1 // tri3 -), -gsSPNTriangles_5b( - 6, 1, 3, // tri0 - 13, 15, 14, // tri1 - 9, 5, 4, // tri2 - 9, 4, 16 // tri3 -), -gsSPNTriangles_5b( - 16, 15, 13, // tri0 - 16, 13, 9, // tri1 - 15, 12, 14, // tri2 - 16, 4, 8 // tri3 -), -gsSPNTriangles_5b( - 16, 8, 7, // tri0 - 7, 12, 15, // tri1 - 7, 15, 16, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 12, // tri count - 17, 18, 19, // tri0 - 19, 18, 20, // tri1 - 19, 20, 21 // tri2 -), -gsSPNTriangles_5b( - 20, 22, 21, // tri0 - 18, 17, 22, // tri1 - 18, 22, 20, // tri2 - 19, 23, 17 // tri3 -), -gsSPNTriangles_5b( - 17, 23, 24, // tri0 - 17, 24, 22, // tri1 - 24, 21, 22, // tri2 - 23, 19, 21 // tri3 -), -gsSPNTriangles_5b( - 23, 21, 24, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mob_1_v[175], 25, 0), + gsSPNTrianglesInit_5b(30, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 5, // tri0 + 7, 5, 9, // tri1 + 0, 10, 1, // tri2 + 11, 8, 4 // tri3 + ), + gsSPNTriangles_5b(11, 4, 3, // tri0 + 12, 13, 14, // tri1 + 9, 13, 12, // tri2 + 9, 12, 7 // tri3 + ), + gsSPNTriangles_5b(0, 2, 10, // tri0 + 6, 5, 8, // tri1 + 6, 8, 11, // tri2 + 11, 10, 2 // tri3 + ), + gsSPNTriangles_5b(11, 2, 6, // tri0 + 3, 1, 10, // tri1 + 3, 10, 11, // tri2 + 6, 2, 1 // tri3 + ), + gsSPNTriangles_5b(6, 1, 3, // tri0 + 13, 15, 14, // tri1 + 9, 5, 4, // tri2 + 9, 4, 16 // tri3 + ), + gsSPNTriangles_5b(16, 15, 13, // tri0 + 16, 13, 9, // tri1 + 15, 12, 14, // tri2 + 16, 4, 8 // tri3 + ), + gsSPNTriangles_5b(16, 8, 7, // tri0 + 7, 12, 15, // tri1 + 7, 15, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(12, // tri count + 17, 18, 19, // tri0 + 19, 18, 20, // tri1 + 19, 20, 21 // tri2 + ), + gsSPNTriangles_5b(20, 22, 21, // tri0 + 18, 17, 22, // tri1 + 18, 22, 20, // tri2 + 19, 23, 17 // tri3 + ), + gsSPNTriangles_5b(17, 23, 24, // tri0 + 17, 24, 22, // tri1 + 24, 21, 22, // tri2 + 23, 19, 21 // tri3 + ), + gsSPNTriangles_5b(23, 21, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_mob_model[] = { -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mob_1_v[200], 5, 0), -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&mob_1_v[205], 16, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 5, 6, // tri0 - 4, 7, 8, // tri1 - 4, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 0, 1, 11, // tri0 - 2, 4, 12, // tri1 - 0, 13, 14, // tri2 - 3, 0, 15 // tri3 -), -gsSPNTriangles_5b( - 4, 3, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 20, 19, 18, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mob_1_v[200], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mob_1_v[205], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(0, 1, 11, // tri0 + 2, 4, 12, // tri1 + 0, 13, 14, // tri2 + 3, 0, 15 // tri3 + ), + gsSPNTriangles_5b(4, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 19, 18, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_mob_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mob_1_v[221], 4, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&mob_1_v[225], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 0, 6, 7, // tri1 - 2, 0, 8 // tri2 -), -gsSPNTriangles_5b( - 3, 2, 9, // tri0 - 2, 11, 10, // tri1 - 3, 13, 12, // tri2 - 1, 3, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mob_1_v[221], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mob_1_v[225], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 2, 0, 8 // tri2 + ), + gsSPNTriangles_5b(3, 2, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 1, 3, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_mob_model[] = { -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mob_1_v[139], 5, 0), -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&mob_1_v[144], 16, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 5, 6, // tri0 - 4, 7, 8, // tri1 - 4, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 11, // tri0 - 4, 2, 12, // tri1 - 0, 13, 14, // tri2 - 0, 3, 15 // tri3 -), -gsSPNTriangles_5b( - 3, 4, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 18, 17, 20, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mob_1_v[139], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mob_1_v[144], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 + ), + gsSPNTriangles_5b(3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_mob_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mob_1_v[160], 4, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&mob_1_v[164], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 0, 6, 7, // tri1 - 0, 2, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 3, 9, // tri0 - 2, 11, 10, // tri1 - 3, 13, 12, // tri2 - 3, 1, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mob_1_v[160], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mob_1_v[164], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 + ), + gsSPNTriangles_5b(2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_mob_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mob_1_v[236], 9, 0), -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 64, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&mob_1_v[245], 22, 9), -gsSPNTrianglesInit_5b( - 14, // tri count - 0, 9, 3, // tri0 - 1, 10, 8, // tri1 - 4, 11, 5 // tri2 -), -gsSPNTriangles_5b( - 6, 12, 2, // tri0 - 8, 13, 14, // tri1 - 8, 15, 7, // tri2 - 2, 16, 17 // tri3 -), -gsSPNTriangles_5b( - 1, 18, 19, // tri0 - 3, 20, 21, // tri1 - 4, 22, 23, // tri2 - 0, 24, 25 // tri3 -), -gsSPNTriangles_5b( - 0, 5, 26, // tri0 - 2, 27, 28, // tri1 - 1, 29, 30, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&mob_1_v[267], 6, 9), -gsSPNTrianglesInit_5b( - 4, // tri count - 3, 9, 10, // tri0 - 3, 11, 1, // tri1 - 4, 12, 13 // tri2 -), -gsSPNTriangles_5b( - 4, 2, 14, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&mob_1_v[273], 18, 0), -gsSPNTrianglesInit_5b( - 16, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 3, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 4, 7, 8, // tri0 - 9, 10, 11, // tri1 - 12, 13, 14, // tri2 - 7, 10, 15 // tri3 -), -gsSPNTriangles_5b( - 4, 8, 5, // tri0 - 16, 1, 17, // tri1 - 15, 8, 7, // tri2 - 9, 15, 10 // tri3 -), -gsSPNTriangles_5b( - 11, 12, 14, // tri0 - 11, 14, 9, // tri1 - 13, 17, 14, // tri2 - 1, 16, 2 // tri3 -), -gsSPNTriangles_5b( - 17, 13, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mob_1_v[236], 9, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 64, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mob_1_v[245], 22, 9), + gsSPNTrianglesInit_5b(14, // tri count + 0, 9, 3, // tri0 + 1, 10, 8, // tri1 + 4, 11, 5 // tri2 + ), + gsSPNTriangles_5b(6, 12, 2, // tri0 + 8, 13, 14, // tri1 + 8, 15, 7, // tri2 + 2, 16, 17 // tri3 + ), + gsSPNTriangles_5b(1, 18, 19, // tri0 + 3, 20, 21, // tri1 + 4, 22, 23, // tri2 + 0, 24, 25 // tri3 + ), + gsSPNTriangles_5b(0, 5, 26, // tri0 + 2, 27, 28, // tri1 + 1, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&mob_1_v[267], 6, 9), + gsSPNTrianglesInit_5b(4, // tri count + 3, 9, 10, // tri0 + 3, 11, 1, // tri1 + 4, 12, 13 // tri2 + ), + gsSPNTriangles_5b(4, 2, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&mob_1_v[273], 18, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 8, // tri0 + 9, 10, 11, // tri1 + 12, 13, 14, // tri2 + 7, 10, 15 // tri3 + ), + gsSPNTriangles_5b(4, 8, 5, // tri0 + 16, 1, 17, // tri1 + 15, 8, 7, // tri2 + 9, 15, 10 // tri3 + ), + gsSPNTriangles_5b(11, 12, 14, // tri0 + 11, 14, 9, // tri1 + 13, 17, 14, // tri2 + 1, 16, 2 // tri3 + ), + gsSPNTriangles_5b(17, 13, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx base_mob_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 64, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mob_1_v[291], 24, 0), -gsSPNTrianglesInit_5b( - 26, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 0, 6, 1 // tri2 -), -gsSPNTriangles_5b( - 0, 7, 6, // tri0 - 5, 4, 8, // tri1 - 9, 4, 10, // tri2 - 9, 10, 11 // tri3 -), -gsSPNTriangles_5b( - 6, 12, 1, // tri0 - 13, 3, 5, // tri1 - 13, 2, 14, // tri2 - 13, 14, 15 // tri3 -), -gsSPNTriangles_5b( - 16, 1, 12, // tri0 - 17, 18, 6, // tri1 - 17, 6, 19, // tri2 - 2, 1, 16 // tri3 -), -gsSPNTriangles_5b( - 2, 16, 14, // tri0 - 6, 18, 12, // tri1 - 3, 20, 4, // tri2 - 21, 17, 19 // tri3 -), -gsSPNTriangles_5b( - 21, 19, 22, // tri0 - 15, 23, 3, // tri1 - 15, 3, 13, // tri2 - 20, 3, 23 // tri3 -), -gsSPNTriangles_5b( - 19, 6, 7, // tri0 - 20, 10, 4, // tri1 - 8, 4, 9, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 64, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mob_1_v[291], 24, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 1 // tri2 + ), + gsSPNTriangles_5b(0, 7, 6, // tri0 + 5, 4, 8, // tri1 + 9, 4, 10, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b(6, 12, 1, // tri0 + 13, 3, 5, // tri1 + 13, 2, 14, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(16, 1, 12, // tri0 + 17, 18, 6, // tri1 + 17, 6, 19, // tri2 + 2, 1, 16 // tri3 + ), + gsSPNTriangles_5b(2, 16, 14, // tri0 + 6, 18, 12, // tri1 + 3, 20, 4, // tri2 + 21, 17, 19 // tri3 + ), + gsSPNTriangles_5b(21, 19, 22, // tri0 + 15, 23, 3, // tri1 + 15, 3, 13, // tri2 + 20, 3, 23 // tri3 + ), + gsSPNTriangles_5b(19, 6, 7, // tri0 + 20, 10, 4, // tri1 + 8, 4, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_mob_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, @@ -610,4 +538,4 @@ static cKF_Joint_R_c cKF_je_r_mob_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_mob_1 = { 26, 9, cKF_je_r_mob_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_mob_1 = { 26, 9, cKF_je_r_mob_1_tbl }; diff --git a/src/data/npc/model/mdl/mol_1.c b/src/data/npc/model/mdl/mol_1.c index 69a78ae0..c90cb022 100644 --- a/src/data/npc/model/mdl/mol_1.c +++ b/src/data/npc/model/mdl/mol_1.c @@ -6,596 +6,522 @@ static Vtx mol_1_v[] = { }; static Gfx head_mol_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mol_1_v[34], 10, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&mol_1_v[44], 15, 10), -gsSPNTrianglesInit_5b( - 10, // tri count - 1, 4, 10, // tri0 - 5, 7, 11, // tri1 - 0, 12, 13 // tri2 -), -gsSPNTriangles_5b( - 1, 14, 15, // tri0 - 7, 0, 16, // tri1 - 0, 1, 17, // tri2 - 3, 18, 19 // tri3 -), -gsSPNTriangles_5b( - 5, 20, 21, // tri0 - 4, 3, 22, // tri1 - 0, 23, 24, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&mol_1_v[59], 20, 10), -gsSPNTrianglesInit_5b( - 8, // tri count - 9, 10, 11, // tri0 - 8, 12, 13, // tri1 - 8, 15, 14 // tri2 -), -gsSPNTriangles_5b( - 8, 17, 16, // tri0 - 9, 19, 18, // tri1 - 8, 6, 20, // tri2 - 2, 9, 21 // tri3 -), -gsSPNTriangles_5b( - 9, 8, 22, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 23, 24, 25, // tri0 - 26, 23, 25, // tri1 - 27, 26, 25 // tri2 -), -gsSPNTriangles_5b( - 28, 27, 25, // tri0 - 29, 28, 25, // tri1 - 24, 29, 25, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&mol_1_v[79], 31, 0), -gsSPNTrianglesInit_5b( - 12, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 3, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 0, 7, 1, // tri0 - 8, 9, 10, // tri1 - 8, 10, 11, // tri2 - 12, 13, 14 // tri3 -), -gsSPNTriangles_5b( - 15, 16, 17, // tri0 - 15, 17, 18, // tri1 - 12, 14, 19, // tri2 - 20, 21, 22 // tri3 -), -gsSPNTriangles_5b( - 20, 22, 23, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 24, 25, 26, // tri0 - 27, 28, 26, // tri1 - 25, 27, 26 // tri2 -), -gsSPNTriangles_5b( - 29, 24, 26, // tri0 - 30, 29, 26, // tri1 - 28, 30, 26, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&mol_1_v[110], 25, 0), -gsSPNTrianglesInit_5b( - 10, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 3, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 7, 8, 9, // tri0 - 10, 2, 6, // tri1 - 9, 11, 7, // tri2 - 8, 4, 3 // tri3 -), -gsSPNTriangles_5b( - 2, 10, 0, // tri0 - 6, 5, 10, // tri1 - 3, 9, 8, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 4, // tri count - 12, 13, 14, // tri0 - 15, 16, 17, // tri1 - 14, 18, 12 // tri2 -), -gsSPNTriangles_5b( - 14, 13, 17, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 19, 20, 21, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 22, 23, 24, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&mol_1_v[135], 11, 0), -gsSPNTrianglesInit_5b( - 13, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 8, 0, // tri0 - 2, 1, 5, // tri1 - 2, 5, 6, // tri2 - 6, 8, 2 // tri3 -), -gsSPNTriangles_5b( - 4, 9, 5, // tri0 - 6, 5, 9, // tri1 - 5, 1, 3, // tri2 - 1, 0, 10 // tri3 -), -gsSPNTriangles_5b( - 9, 7, 6, // tri0 - 1, 10, 3, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mol_1_v[34], 10, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mol_1_v[44], 15, 10), + gsSPNTrianglesInit_5b(10, // tri count + 1, 4, 10, // tri0 + 5, 7, 11, // tri1 + 0, 12, 13 // tri2 + ), + gsSPNTriangles_5b(1, 14, 15, // tri0 + 7, 0, 16, // tri1 + 0, 1, 17, // tri2 + 3, 18, 19 // tri3 + ), + gsSPNTriangles_5b(5, 20, 21, // tri0 + 4, 3, 22, // tri1 + 0, 23, 24, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&mol_1_v[59], 20, 10), + gsSPNTrianglesInit_5b(8, // tri count + 9, 10, 11, // tri0 + 8, 12, 13, // tri1 + 8, 15, 14 // tri2 + ), + gsSPNTriangles_5b(8, 17, 16, // tri0 + 9, 19, 18, // tri1 + 8, 6, 20, // tri2 + 2, 9, 21 // tri3 + ), + gsSPNTriangles_5b(9, 8, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 23, 24, 25, // tri0 + 26, 23, 25, // tri1 + 27, 26, 25 // tri2 + ), + gsSPNTriangles_5b(28, 27, 25, // tri0 + 29, 28, 25, // tri1 + 24, 29, 25, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&mol_1_v[79], 31, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(0, 7, 1, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 15, 17, 18, // tri1 + 12, 14, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(20, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 24, 25, 26, // tri0 + 27, 28, 26, // tri1 + 25, 27, 26 // tri2 + ), + gsSPNTriangles_5b(29, 24, 26, // tri0 + 30, 29, 26, // tri1 + 28, 30, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&mol_1_v[110], 25, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 2, 6, // tri1 + 9, 11, 7, // tri2 + 8, 4, 3 // tri3 + ), + gsSPNTriangles_5b(2, 10, 0, // tri0 + 6, 5, 10, // tri1 + 3, 9, 8, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 12, 13, 14, // tri0 + 15, 16, 17, // tri1 + 14, 18, 12 // tri2 + ), + gsSPNTriangles_5b(14, 13, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 22, 23, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&mol_1_v[135], 11, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 8, 0, // tri0 + 2, 1, 5, // tri1 + 2, 5, 6, // tri2 + 6, 8, 2 // tri3 + ), + gsSPNTriangles_5b(4, 9, 5, // tri0 + 6, 5, 9, // tri1 + 5, 1, 3, // tri2 + 1, 0, 10 // tri3 + ), + gsSPNTriangles_5b(9, 7, 6, // tri0 + 1, 10, 3, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx mouth_mol_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mol_1_v[0], 5, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&mol_1_v[5], 23, 5), -gsSPNTrianglesInit_5b( - 10, // tri count - 2, 5, 6, // tri0 - 2, 7, 8, // tri1 - 4, 3, 9 // tri2 -), -gsSPNTriangles_5b( - 3, 10, 11, // tri0 - 4, 12, 13, // tri1 - 1, 4, 14, // tri2 - 3, 0, 15 // tri3 -), -gsSPNTriangles_5b( - 2, 16, 17, // tri0 - 2, 1, 18, // tri1 - 0, 2, 19, // tri2 - 0, 0, 0 // tri3 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 2, // tri count - 20, 21, 22, // tri0 - 20, 22, 23, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 2, // tri count - 24, 25, 26, // tri0 - 24, 26, 27, // tri1 - 0, 0, 0 // tri2 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&mol_1_v[28], 6, 0), -gsSPNTrianglesInit_5b( - 3, // tri count - 0, 1, 2, // tri0 - 2, 3, 0, // tri1 - 4, 5, 2 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mol_1_v[0], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mol_1_v[5], 23, 5), + gsSPNTrianglesInit_5b(10, // tri count + 2, 5, 6, // tri0 + 2, 7, 8, // tri1 + 4, 3, 9 // tri2 + ), + gsSPNTriangles_5b(3, 10, 11, // tri0 + 4, 12, 13, // tri1 + 1, 4, 14, // tri2 + 3, 0, 15 // tri3 + ), + gsSPNTriangles_5b(2, 16, 17, // tri0 + 2, 1, 18, // tri1 + 0, 2, 19, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 20, 21, 22, // tri0 + 20, 22, 23, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 24, 25, 26, // tri0 + 24, 26, 27, // tri1 + 0, 0, 0 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&mol_1_v[28], 6, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 2 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx hand_mol_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mol_1_v[182], 25, 0), -gsSPNTrianglesInit_5b( - 30, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 3, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 7, 8, 5, // tri0 - 7, 5, 9, // tri1 - 0, 10, 1, // tri2 - 11, 8, 4 // tri3 -), -gsSPNTriangles_5b( - 11, 4, 3, // tri0 - 12, 13, 14, // tri1 - 9, 13, 12, // tri2 - 9, 12, 7 // tri3 -), -gsSPNTriangles_5b( - 0, 2, 10, // tri0 - 6, 5, 8, // tri1 - 6, 8, 11, // tri2 - 11, 10, 2 // tri3 -), -gsSPNTriangles_5b( - 11, 2, 6, // tri0 - 3, 1, 10, // tri1 - 3, 10, 11, // tri2 - 6, 2, 1 // tri3 -), -gsSPNTriangles_5b( - 6, 1, 3, // tri0 - 13, 15, 14, // tri1 - 9, 5, 4, // tri2 - 9, 4, 16 // tri3 -), -gsSPNTriangles_5b( - 16, 15, 13, // tri0 - 16, 13, 9, // tri1 - 15, 12, 14, // tri2 - 16, 4, 8 // tri3 -), -gsSPNTriangles_5b( - 16, 8, 7, // tri0 - 7, 12, 15, // tri1 - 7, 15, 16, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 12, // tri count - 17, 18, 19, // tri0 - 19, 18, 20, // tri1 - 19, 20, 21 // tri2 -), -gsSPNTriangles_5b( - 20, 22, 21, // tri0 - 18, 17, 22, // tri1 - 18, 22, 20, // tri2 - 19, 23, 17 // tri3 -), -gsSPNTriangles_5b( - 17, 23, 24, // tri0 - 17, 24, 22, // tri1 - 24, 21, 22, // tri2 - 23, 19, 21 // tri3 -), -gsSPNTriangles_5b( - 23, 21, 24, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mol_1_v[182], 25, 0), + gsSPNTrianglesInit_5b(30, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 5, // tri0 + 7, 5, 9, // tri1 + 0, 10, 1, // tri2 + 11, 8, 4 // tri3 + ), + gsSPNTriangles_5b(11, 4, 3, // tri0 + 12, 13, 14, // tri1 + 9, 13, 12, // tri2 + 9, 12, 7 // tri3 + ), + gsSPNTriangles_5b(0, 2, 10, // tri0 + 6, 5, 8, // tri1 + 6, 8, 11, // tri2 + 11, 10, 2 // tri3 + ), + gsSPNTriangles_5b(11, 2, 6, // tri0 + 3, 1, 10, // tri1 + 3, 10, 11, // tri2 + 6, 2, 1 // tri3 + ), + gsSPNTriangles_5b(6, 1, 3, // tri0 + 13, 15, 14, // tri1 + 9, 5, 4, // tri2 + 9, 4, 16 // tri3 + ), + gsSPNTriangles_5b(16, 15, 13, // tri0 + 16, 13, 9, // tri1 + 15, 12, 14, // tri2 + 16, 4, 8 // tri3 + ), + gsSPNTriangles_5b(16, 8, 7, // tri0 + 7, 12, 15, // tri1 + 7, 15, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(12, // tri count + 17, 18, 19, // tri0 + 19, 18, 20, // tri1 + 19, 20, 21 // tri2 + ), + gsSPNTriangles_5b(20, 22, 21, // tri0 + 18, 17, 22, // tri1 + 18, 22, 20, // tri2 + 19, 23, 17 // tri3 + ), + gsSPNTriangles_5b(17, 23, 24, // tri0 + 17, 24, 22, // tri1 + 24, 21, 22, // tri2 + 23, 19, 21 // tri3 + ), + gsSPNTriangles_5b(23, 21, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_mol_model[] = { -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mol_1_v[207], 5, 0), -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&mol_1_v[212], 16, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 5, 6, // tri0 - 4, 7, 8, // tri1 - 4, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 0, 1, 11, // tri0 - 2, 4, 12, // tri1 - 0, 13, 14, // tri2 - 3, 0, 15 // tri3 -), -gsSPNTriangles_5b( - 4, 3, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 20, 19, 18, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mol_1_v[207], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mol_1_v[212], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(0, 1, 11, // tri0 + 2, 4, 12, // tri1 + 0, 13, 14, // tri2 + 3, 0, 15 // tri3 + ), + gsSPNTriangles_5b(4, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 19, 18, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_mol_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mol_1_v[228], 4, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&mol_1_v[232], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 0, 6, 7, // tri1 - 2, 0, 8 // tri2 -), -gsSPNTriangles_5b( - 3, 2, 9, // tri0 - 2, 11, 10, // tri1 - 3, 13, 12, // tri2 - 1, 3, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mol_1_v[228], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mol_1_v[232], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 2, 0, 8 // tri2 + ), + gsSPNTriangles_5b(3, 2, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 1, 3, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_mol_model[] = { -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mol_1_v[146], 5, 0), -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&mol_1_v[151], 16, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 5, 6, // tri0 - 4, 7, 8, // tri1 - 4, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 11, // tri0 - 4, 2, 12, // tri1 - 0, 13, 14, // tri2 - 0, 3, 15 // tri3 -), -gsSPNTriangles_5b( - 3, 4, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 18, 17, 20, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mol_1_v[146], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mol_1_v[151], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 + ), + gsSPNTriangles_5b(3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_mol_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mol_1_v[167], 4, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&mol_1_v[171], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 0, 6, 7, // tri1 - 0, 2, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 3, 9, // tri0 - 2, 11, 10, // tri1 - 3, 13, 12, // tri2 - 3, 1, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mol_1_v[167], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mol_1_v[171], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 + ), + gsSPNTriangles_5b(2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_mol_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mol_1_v[243], 9, 0), -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 64, 24, 15, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 92), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&mol_1_v[252], 22, 9), -gsSPNTrianglesInit_5b( - 14, // tri count - 0, 9, 3, // tri0 - 1, 10, 8, // tri1 - 4, 11, 5 // tri2 -), -gsSPNTriangles_5b( - 6, 12, 2, // tri0 - 8, 13, 14, // tri1 - 8, 15, 7, // tri2 - 2, 16, 17 // tri3 -), -gsSPNTriangles_5b( - 1, 18, 19, // tri0 - 3, 20, 21, // tri1 - 4, 22, 23, // tri2 - 0, 24, 25 // tri3 -), -gsSPNTriangles_5b( - 0, 5, 26, // tri0 - 2, 27, 28, // tri1 - 1, 29, 30, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&mol_1_v[274], 6, 9), -gsSPNTrianglesInit_5b( - 4, // tri count - 3, 9, 10, // tri0 - 3, 11, 1, // tri1 - 4, 12, 13 // tri2 -), -gsSPNTriangles_5b( - 4, 2, 14, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&mol_1_v[280], 18, 0), -gsSPNTrianglesInit_5b( - 16, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 3, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 4, 7, 8, // tri0 - 9, 10, 11, // tri1 - 12, 13, 14, // tri2 - 7, 10, 15 // tri3 -), -gsSPNTriangles_5b( - 4, 8, 5, // tri0 - 16, 1, 17, // tri1 - 15, 8, 7, // tri2 - 9, 15, 10 // tri3 -), -gsSPNTriangles_5b( - 11, 12, 14, // tri0 - 11, 14, 9, // tri1 - 13, 17, 14, // tri2 - 1, 16, 2 // tri3 -), -gsSPNTriangles_5b( - 17, 13, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mol_1_v[243], 9, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 64, 24, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 92), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mol_1_v[252], 22, 9), + gsSPNTrianglesInit_5b(14, // tri count + 0, 9, 3, // tri0 + 1, 10, 8, // tri1 + 4, 11, 5 // tri2 + ), + gsSPNTriangles_5b(6, 12, 2, // tri0 + 8, 13, 14, // tri1 + 8, 15, 7, // tri2 + 2, 16, 17 // tri3 + ), + gsSPNTriangles_5b(1, 18, 19, // tri0 + 3, 20, 21, // tri1 + 4, 22, 23, // tri2 + 0, 24, 25 // tri3 + ), + gsSPNTriangles_5b(0, 5, 26, // tri0 + 2, 27, 28, // tri1 + 1, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&mol_1_v[274], 6, 9), + gsSPNTrianglesInit_5b(4, // tri count + 3, 9, 10, // tri0 + 3, 11, 1, // tri1 + 4, 12, 13 // tri2 + ), + gsSPNTriangles_5b(4, 2, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&mol_1_v[280], 18, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 8, // tri0 + 9, 10, 11, // tri1 + 12, 13, 14, // tri2 + 7, 10, 15 // tri3 + ), + gsSPNTriangles_5b(4, 8, 5, // tri0 + 16, 1, 17, // tri1 + 15, 8, 7, // tri2 + 9, 15, 10 // tri3 + ), + gsSPNTriangles_5b(11, 12, 14, // tri0 + 11, 14, 9, // tri1 + 13, 17, 14, // tri2 + 1, 16, 2 // tri3 + ), + gsSPNTriangles_5b(17, 13, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx base_mol_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 64, 24, 15, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 92), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mol_1_v[298], 24, 0), -gsSPNTrianglesInit_5b( - 26, // tri count - 0, 1, 2, // tri0 - 3, 4, 1, // tri1 - 5, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 3, 8, 9, // tri0 - 10, 9, 8, // tri1 - 10, 8, 11, // tri2 - 12, 13, 5 // tri3 -), -gsSPNTriangles_5b( - 12, 5, 14, // tri0 - 8, 3, 1, // tri1 - 6, 15, 16, // tri2 - 17, 18, 19 // tri3 -), -gsSPNTriangles_5b( - 17, 19, 20, // tri0 - 13, 15, 6, // tri1 - 13, 6, 5, // tri2 - 19, 18, 16 // tri3 -), -gsSPNTriangles_5b( - 11, 17, 20, // tri0 - 11, 20, 10, // tri1 - 11, 8, 21, // tri2 - 6, 16, 18 // tri3 -), -gsSPNTriangles_5b( - 2, 1, 4, // tri0 - 2, 4, 22, // tri1 - 21, 1, 0, // tri2 - 23, 7, 6 // tri3 -), -gsSPNTriangles_5b( - 23, 6, 18, // tri0 - 8, 1, 21, // tri1 - 23, 18, 17, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 64, 24, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 92), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mol_1_v[298], 24, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(3, 8, 9, // tri0 + 10, 9, 8, // tri1 + 10, 8, 11, // tri2 + 12, 13, 5 // tri3 + ), + gsSPNTriangles_5b(12, 5, 14, // tri0 + 8, 3, 1, // tri1 + 6, 15, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(17, 19, 20, // tri0 + 13, 15, 6, // tri1 + 13, 6, 5, // tri2 + 19, 18, 16 // tri3 + ), + gsSPNTriangles_5b(11, 17, 20, // tri0 + 11, 20, 10, // tri1 + 11, 8, 21, // tri2 + 6, 16, 18 // tri3 + ), + gsSPNTriangles_5b(2, 1, 4, // tri0 + 2, 4, 22, // tri1 + 21, 1, 0, // tri2 + 23, 7, 6 // tri3 + ), + gsSPNTriangles_5b(23, 6, 18, // tri0 + 8, 1, 21, // tri1 + 23, 18, 17, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_mol_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, @@ -627,4 +553,4 @@ static cKF_Joint_R_c cKF_je_r_mol_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_mol_1 = { 26, 9, cKF_je_r_mol_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_mol_1 = { 26, 9, cKF_je_r_mol_1_tbl }; diff --git a/src/data/npc/model/mdl/mos_1.c b/src/data/npc/model/mdl/mos_1.c index f8d29505..9959781e 100644 --- a/src/data/npc/model/mdl/mos_1.c +++ b/src/data/npc/model/mdl/mos_1.c @@ -6,596 +6,522 @@ static Vtx mos_1_v[] = { }; static Gfx head_mos_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mos_1_v[34], 10, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&mos_1_v[44], 15, 10), -gsSPNTrianglesInit_5b( - 10, // tri count - 1, 4, 10, // tri0 - 5, 7, 11, // tri1 - 0, 12, 13 // tri2 -), -gsSPNTriangles_5b( - 1, 14, 15, // tri0 - 7, 0, 16, // tri1 - 0, 1, 17, // tri2 - 3, 18, 19 // tri3 -), -gsSPNTriangles_5b( - 5, 20, 21, // tri0 - 4, 3, 22, // tri1 - 0, 23, 24, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&mos_1_v[59], 20, 10), -gsSPNTrianglesInit_5b( - 8, // tri count - 9, 10, 11, // tri0 - 8, 12, 13, // tri1 - 8, 15, 14 // tri2 -), -gsSPNTriangles_5b( - 8, 17, 16, // tri0 - 9, 19, 18, // tri1 - 8, 6, 20, // tri2 - 2, 9, 21 // tri3 -), -gsSPNTriangles_5b( - 9, 8, 22, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 23, 24, 25, // tri0 - 26, 23, 25, // tri1 - 27, 26, 25 // tri2 -), -gsSPNTriangles_5b( - 28, 27, 25, // tri0 - 29, 28, 25, // tri1 - 24, 29, 25, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&mos_1_v[79], 31, 0), -gsSPNTrianglesInit_5b( - 12, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 3, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 0, 7, 1, // tri0 - 8, 9, 10, // tri1 - 8, 10, 11, // tri2 - 12, 13, 14 // tri3 -), -gsSPNTriangles_5b( - 15, 16, 17, // tri0 - 15, 17, 18, // tri1 - 12, 14, 19, // tri2 - 20, 21, 22 // tri3 -), -gsSPNTriangles_5b( - 20, 22, 23, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 24, 25, 26, // tri0 - 27, 28, 26, // tri1 - 25, 27, 26 // tri2 -), -gsSPNTriangles_5b( - 29, 24, 26, // tri0 - 30, 29, 26, // tri1 - 28, 30, 26, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&mos_1_v[110], 25, 0), -gsSPNTrianglesInit_5b( - 10, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 3, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 7, 8, 9, // tri0 - 10, 2, 6, // tri1 - 9, 11, 7, // tri2 - 8, 4, 3 // tri3 -), -gsSPNTriangles_5b( - 2, 10, 0, // tri0 - 6, 5, 10, // tri1 - 3, 9, 8, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 4, // tri count - 12, 13, 14, // tri0 - 15, 16, 17, // tri1 - 14, 18, 12 // tri2 -), -gsSPNTriangles_5b( - 14, 13, 17, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 19, 20, 21, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 22, 23, 24, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&mos_1_v[135], 11, 0), -gsSPNTrianglesInit_5b( - 13, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 8, 0, // tri0 - 2, 1, 5, // tri1 - 2, 5, 6, // tri2 - 6, 8, 2 // tri3 -), -gsSPNTriangles_5b( - 4, 9, 5, // tri0 - 6, 5, 9, // tri1 - 5, 1, 3, // tri2 - 1, 0, 10 // tri3 -), -gsSPNTriangles_5b( - 9, 7, 6, // tri0 - 1, 10, 3, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mos_1_v[34], 10, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mos_1_v[44], 15, 10), + gsSPNTrianglesInit_5b(10, // tri count + 1, 4, 10, // tri0 + 5, 7, 11, // tri1 + 0, 12, 13 // tri2 + ), + gsSPNTriangles_5b(1, 14, 15, // tri0 + 7, 0, 16, // tri1 + 0, 1, 17, // tri2 + 3, 18, 19 // tri3 + ), + gsSPNTriangles_5b(5, 20, 21, // tri0 + 4, 3, 22, // tri1 + 0, 23, 24, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&mos_1_v[59], 20, 10), + gsSPNTrianglesInit_5b(8, // tri count + 9, 10, 11, // tri0 + 8, 12, 13, // tri1 + 8, 15, 14 // tri2 + ), + gsSPNTriangles_5b(8, 17, 16, // tri0 + 9, 19, 18, // tri1 + 8, 6, 20, // tri2 + 2, 9, 21 // tri3 + ), + gsSPNTriangles_5b(9, 8, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 23, 24, 25, // tri0 + 26, 23, 25, // tri1 + 27, 26, 25 // tri2 + ), + gsSPNTriangles_5b(28, 27, 25, // tri0 + 29, 28, 25, // tri1 + 24, 29, 25, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&mos_1_v[79], 31, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(0, 7, 1, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 15, 17, 18, // tri1 + 12, 14, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(20, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 24, 25, 26, // tri0 + 27, 28, 26, // tri1 + 25, 27, 26 // tri2 + ), + gsSPNTriangles_5b(29, 24, 26, // tri0 + 30, 29, 26, // tri1 + 28, 30, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&mos_1_v[110], 25, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 2, 6, // tri1 + 9, 11, 7, // tri2 + 8, 4, 3 // tri3 + ), + gsSPNTriangles_5b(2, 10, 0, // tri0 + 6, 5, 10, // tri1 + 3, 9, 8, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 12, 13, 14, // tri0 + 15, 16, 17, // tri1 + 14, 18, 12 // tri2 + ), + gsSPNTriangles_5b(14, 13, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 22, 23, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&mos_1_v[135], 11, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 8, 0, // tri0 + 2, 1, 5, // tri1 + 2, 5, 6, // tri2 + 6, 8, 2 // tri3 + ), + gsSPNTriangles_5b(4, 9, 5, // tri0 + 6, 5, 9, // tri1 + 5, 1, 3, // tri2 + 1, 0, 10 // tri3 + ), + gsSPNTriangles_5b(9, 7, 6, // tri0 + 1, 10, 3, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx mouth_mos_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mos_1_v[0], 5, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&mos_1_v[5], 23, 5), -gsSPNTrianglesInit_5b( - 10, // tri count - 2, 5, 6, // tri0 - 2, 7, 8, // tri1 - 4, 3, 9 // tri2 -), -gsSPNTriangles_5b( - 3, 10, 11, // tri0 - 4, 12, 13, // tri1 - 1, 4, 14, // tri2 - 3, 0, 15 // tri3 -), -gsSPNTriangles_5b( - 2, 16, 17, // tri0 - 2, 1, 18, // tri1 - 0, 2, 19, // tri2 - 0, 0, 0 // tri3 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 2, // tri count - 20, 21, 22, // tri0 - 20, 22, 23, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 2, // tri count - 24, 25, 26, // tri0 - 24, 26, 27, // tri1 - 0, 0, 0 // tri2 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&mos_1_v[28], 6, 0), -gsSPNTrianglesInit_5b( - 3, // tri count - 0, 1, 2, // tri0 - 2, 3, 0, // tri1 - 4, 5, 2 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mos_1_v[0], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mos_1_v[5], 23, 5), + gsSPNTrianglesInit_5b(10, // tri count + 2, 5, 6, // tri0 + 2, 7, 8, // tri1 + 4, 3, 9 // tri2 + ), + gsSPNTriangles_5b(3, 10, 11, // tri0 + 4, 12, 13, // tri1 + 1, 4, 14, // tri2 + 3, 0, 15 // tri3 + ), + gsSPNTriangles_5b(2, 16, 17, // tri0 + 2, 1, 18, // tri1 + 0, 2, 19, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 20, 21, 22, // tri0 + 20, 22, 23, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 24, 25, 26, // tri0 + 24, 26, 27, // tri1 + 0, 0, 0 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&mos_1_v[28], 6, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 2 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx hand_mos_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mos_1_v[182], 25, 0), -gsSPNTrianglesInit_5b( - 30, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 3, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 7, 8, 5, // tri0 - 7, 5, 9, // tri1 - 0, 10, 1, // tri2 - 11, 8, 4 // tri3 -), -gsSPNTriangles_5b( - 11, 4, 3, // tri0 - 12, 13, 14, // tri1 - 9, 13, 12, // tri2 - 9, 12, 7 // tri3 -), -gsSPNTriangles_5b( - 0, 2, 10, // tri0 - 6, 5, 8, // tri1 - 6, 8, 11, // tri2 - 11, 10, 2 // tri3 -), -gsSPNTriangles_5b( - 11, 2, 6, // tri0 - 3, 1, 10, // tri1 - 3, 10, 11, // tri2 - 6, 2, 1 // tri3 -), -gsSPNTriangles_5b( - 6, 1, 3, // tri0 - 13, 15, 14, // tri1 - 9, 5, 4, // tri2 - 9, 4, 16 // tri3 -), -gsSPNTriangles_5b( - 16, 15, 13, // tri0 - 16, 13, 9, // tri1 - 15, 12, 14, // tri2 - 16, 4, 8 // tri3 -), -gsSPNTriangles_5b( - 16, 8, 7, // tri0 - 7, 12, 15, // tri1 - 7, 15, 16, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 12, // tri count - 17, 18, 19, // tri0 - 19, 18, 20, // tri1 - 19, 20, 21 // tri2 -), -gsSPNTriangles_5b( - 20, 22, 21, // tri0 - 18, 17, 22, // tri1 - 18, 22, 20, // tri2 - 19, 23, 17 // tri3 -), -gsSPNTriangles_5b( - 17, 23, 24, // tri0 - 17, 24, 22, // tri1 - 24, 21, 22, // tri2 - 23, 19, 21 // tri3 -), -gsSPNTriangles_5b( - 23, 21, 24, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mos_1_v[182], 25, 0), + gsSPNTrianglesInit_5b(30, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 5, // tri0 + 7, 5, 9, // tri1 + 0, 10, 1, // tri2 + 11, 8, 4 // tri3 + ), + gsSPNTriangles_5b(11, 4, 3, // tri0 + 12, 13, 14, // tri1 + 9, 13, 12, // tri2 + 9, 12, 7 // tri3 + ), + gsSPNTriangles_5b(0, 2, 10, // tri0 + 6, 5, 8, // tri1 + 6, 8, 11, // tri2 + 11, 10, 2 // tri3 + ), + gsSPNTriangles_5b(11, 2, 6, // tri0 + 3, 1, 10, // tri1 + 3, 10, 11, // tri2 + 6, 2, 1 // tri3 + ), + gsSPNTriangles_5b(6, 1, 3, // tri0 + 13, 15, 14, // tri1 + 9, 5, 4, // tri2 + 9, 4, 16 // tri3 + ), + gsSPNTriangles_5b(16, 15, 13, // tri0 + 16, 13, 9, // tri1 + 15, 12, 14, // tri2 + 16, 4, 8 // tri3 + ), + gsSPNTriangles_5b(16, 8, 7, // tri0 + 7, 12, 15, // tri1 + 7, 15, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(12, // tri count + 17, 18, 19, // tri0 + 19, 18, 20, // tri1 + 19, 20, 21 // tri2 + ), + gsSPNTriangles_5b(20, 22, 21, // tri0 + 18, 17, 22, // tri1 + 18, 22, 20, // tri2 + 19, 23, 17 // tri3 + ), + gsSPNTriangles_5b(17, 23, 24, // tri0 + 17, 24, 22, // tri1 + 24, 21, 22, // tri2 + 23, 19, 21 // tri3 + ), + gsSPNTriangles_5b(23, 21, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_mos_model[] = { -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mos_1_v[207], 5, 0), -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&mos_1_v[212], 16, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 5, 6, // tri0 - 4, 7, 8, // tri1 - 4, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 0, 1, 11, // tri0 - 2, 4, 12, // tri1 - 0, 13, 14, // tri2 - 3, 0, 15 // tri3 -), -gsSPNTriangles_5b( - 4, 3, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 20, 19, 18, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mos_1_v[207], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mos_1_v[212], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(0, 1, 11, // tri0 + 2, 4, 12, // tri1 + 0, 13, 14, // tri2 + 3, 0, 15 // tri3 + ), + gsSPNTriangles_5b(4, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 19, 18, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_mos_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mos_1_v[228], 4, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&mos_1_v[232], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 0, 6, 7, // tri1 - 2, 0, 8 // tri2 -), -gsSPNTriangles_5b( - 3, 2, 9, // tri0 - 2, 11, 10, // tri1 - 3, 13, 12, // tri2 - 1, 3, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mos_1_v[228], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mos_1_v[232], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 2, 0, 8 // tri2 + ), + gsSPNTriangles_5b(3, 2, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 1, 3, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_mos_model[] = { -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mos_1_v[146], 5, 0), -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&mos_1_v[151], 16, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 5, 6, // tri0 - 4, 7, 8, // tri1 - 4, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 11, // tri0 - 4, 2, 12, // tri1 - 0, 13, 14, // tri2 - 0, 3, 15 // tri3 -), -gsSPNTriangles_5b( - 3, 4, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 18, 17, 20, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mos_1_v[146], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mos_1_v[151], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 + ), + gsSPNTriangles_5b(3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_mos_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mos_1_v[167], 4, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&mos_1_v[171], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 0, 6, 7, // tri1 - 0, 2, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 3, 9, // tri0 - 2, 11, 10, // tri1 - 3, 13, 12, // tri2 - 3, 1, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mos_1_v[167], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mos_1_v[171], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 + ), + gsSPNTriangles_5b(2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_mos_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mos_1_v[243], 9, 0), -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 64, 24, 15, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 92), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&mos_1_v[252], 22, 9), -gsSPNTrianglesInit_5b( - 14, // tri count - 0, 9, 3, // tri0 - 1, 10, 8, // tri1 - 4, 11, 5 // tri2 -), -gsSPNTriangles_5b( - 6, 12, 2, // tri0 - 8, 13, 14, // tri1 - 8, 15, 7, // tri2 - 2, 16, 17 // tri3 -), -gsSPNTriangles_5b( - 1, 18, 19, // tri0 - 3, 20, 21, // tri1 - 4, 22, 23, // tri2 - 0, 24, 25 // tri3 -), -gsSPNTriangles_5b( - 0, 5, 26, // tri0 - 2, 27, 28, // tri1 - 1, 29, 30, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&mos_1_v[274], 6, 9), -gsSPNTrianglesInit_5b( - 4, // tri count - 3, 9, 10, // tri0 - 3, 11, 1, // tri1 - 4, 12, 13 // tri2 -), -gsSPNTriangles_5b( - 4, 2, 14, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&mos_1_v[280], 18, 0), -gsSPNTrianglesInit_5b( - 16, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 3, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 4, 7, 8, // tri0 - 9, 10, 11, // tri1 - 12, 13, 14, // tri2 - 7, 10, 15 // tri3 -), -gsSPNTriangles_5b( - 4, 8, 5, // tri0 - 16, 1, 17, // tri1 - 15, 8, 7, // tri2 - 9, 15, 10 // tri3 -), -gsSPNTriangles_5b( - 11, 12, 14, // tri0 - 11, 14, 9, // tri1 - 13, 17, 14, // tri2 - 1, 16, 2 // tri3 -), -gsSPNTriangles_5b( - 17, 13, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mos_1_v[243], 9, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 64, 24, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 92), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mos_1_v[252], 22, 9), + gsSPNTrianglesInit_5b(14, // tri count + 0, 9, 3, // tri0 + 1, 10, 8, // tri1 + 4, 11, 5 // tri2 + ), + gsSPNTriangles_5b(6, 12, 2, // tri0 + 8, 13, 14, // tri1 + 8, 15, 7, // tri2 + 2, 16, 17 // tri3 + ), + gsSPNTriangles_5b(1, 18, 19, // tri0 + 3, 20, 21, // tri1 + 4, 22, 23, // tri2 + 0, 24, 25 // tri3 + ), + gsSPNTriangles_5b(0, 5, 26, // tri0 + 2, 27, 28, // tri1 + 1, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&mos_1_v[274], 6, 9), + gsSPNTrianglesInit_5b(4, // tri count + 3, 9, 10, // tri0 + 3, 11, 1, // tri1 + 4, 12, 13 // tri2 + ), + gsSPNTriangles_5b(4, 2, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&mos_1_v[280], 18, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 8, // tri0 + 9, 10, 11, // tri1 + 12, 13, 14, // tri2 + 7, 10, 15 // tri3 + ), + gsSPNTriangles_5b(4, 8, 5, // tri0 + 16, 1, 17, // tri1 + 15, 8, 7, // tri2 + 9, 15, 10 // tri3 + ), + gsSPNTriangles_5b(11, 12, 14, // tri0 + 11, 14, 9, // tri1 + 13, 17, 14, // tri2 + 1, 16, 2 // tri3 + ), + gsSPNTriangles_5b(17, 13, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx base_mos_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 64, 24, 15, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 92), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mos_1_v[298], 24, 0), -gsSPNTrianglesInit_5b( - 26, // tri count - 0, 1, 2, // tri0 - 3, 4, 1, // tri1 - 5, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 3, 8, 9, // tri0 - 10, 9, 8, // tri1 - 10, 8, 11, // tri2 - 12, 13, 5 // tri3 -), -gsSPNTriangles_5b( - 12, 5, 14, // tri0 - 8, 3, 1, // tri1 - 6, 15, 16, // tri2 - 17, 18, 19 // tri3 -), -gsSPNTriangles_5b( - 17, 19, 20, // tri0 - 13, 15, 6, // tri1 - 13, 6, 5, // tri2 - 19, 18, 16 // tri3 -), -gsSPNTriangles_5b( - 11, 17, 20, // tri0 - 11, 20, 10, // tri1 - 11, 8, 21, // tri2 - 6, 16, 18 // tri3 -), -gsSPNTriangles_5b( - 2, 1, 4, // tri0 - 2, 4, 22, // tri1 - 21, 1, 0, // tri2 - 23, 7, 6 // tri3 -), -gsSPNTriangles_5b( - 23, 6, 18, // tri0 - 8, 1, 21, // tri1 - 23, 18, 17, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 64, 24, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 92), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mos_1_v[298], 24, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(3, 8, 9, // tri0 + 10, 9, 8, // tri1 + 10, 8, 11, // tri2 + 12, 13, 5 // tri3 + ), + gsSPNTriangles_5b(12, 5, 14, // tri0 + 8, 3, 1, // tri1 + 6, 15, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(17, 19, 20, // tri0 + 13, 15, 6, // tri1 + 13, 6, 5, // tri2 + 19, 18, 16 // tri3 + ), + gsSPNTriangles_5b(11, 17, 20, // tri0 + 11, 20, 10, // tri1 + 11, 8, 21, // tri2 + 6, 16, 18 // tri3 + ), + gsSPNTriangles_5b(2, 1, 4, // tri0 + 2, 4, 22, // tri1 + 21, 1, 0, // tri2 + 23, 7, 6 // tri3 + ), + gsSPNTriangles_5b(23, 6, 18, // tri0 + 8, 1, 21, // tri1 + 23, 18, 17, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_mos_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, @@ -627,4 +553,4 @@ static cKF_Joint_R_c cKF_je_r_mos_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_mos_1 = { 26, 9, cKF_je_r_mos_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_mos_1 = { 26, 9, cKF_je_r_mos_1_tbl }; diff --git a/src/data/npc/model/mdl/mus_1.c b/src/data/npc/model/mdl/mus_1.c index e12a6515..b730eb4c 100644 --- a/src/data/npc/model/mdl/mus_1.c +++ b/src/data/npc/model/mdl/mus_1.c @@ -6,709 +6,627 @@ static Vtx mus_1_v[] = { }; static Gfx head_mus_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mus_1_v[8], 19, 0), -gsSPNTrianglesInit_5b( - 14, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 9, 7, 6, // tri0 - 9, 10, 11, // tri1 - 5, 4, 0, // tri2 - 12, 5, 0 // tri3 -), -gsSPNTriangles_5b( - 6, 10, 9, // tri0 - 11, 13, 14, // tri1 - 11, 14, 9, // tri2 - 8, 15, 6 // tri3 -), -gsSPNTriangles_5b( - 2, 12, 0, // tri0 - 5, 16, 17, // tri1 - 5, 17, 18, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&mus_1_v[27], 20, 0), -gsSPNTrianglesInit_5b( - 25, // tri count - 0, 1, 2, // tri0 - 2, 3, 4, // tri1 - 2, 1, 3 // tri2 -), -gsSPNTriangles_5b( - 0, 5, 6, // tri0 - 6, 1, 0, // tri1 - 7, 8, 9, // tri2 - 10, 11, 12 // tri3 -), -gsSPNTriangles_5b( - 10, 12, 7, // tri0 - 12, 3, 8, // tri1 - 7, 12, 8, // tri2 - 7, 13, 10 // tri3 -), -gsSPNTriangles_5b( - 14, 4, 3, // tri0 - 12, 15, 14, // tri1 - 7, 9, 16, // tri2 - 3, 12, 14 // tri3 -), -gsSPNTriangles_5b( - 16, 13, 7, // tri0 - 1, 6, 8, // tri1 - 1, 8, 3, // tri2 - 8, 6, 9 // tri3 -), -gsSPNTriangles_5b( - 10, 17, 18, // tri0 - 10, 18, 11, // tri1 - 15, 12, 11, // tri2 - 9, 6, 5 // tri3 -), -gsSPNTriangles_5b( - 9, 5, 19, // tri0 - 16, 9, 19, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&mus_1_v[47], 19, 0), -gsSPNTrianglesInit_5b( - 23, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 9, 10, 11, // tri0 - 12, 13, 14, // tri1 - 0, 12, 14, // tri2 - 9, 11, 6 // tri3 -), -gsSPNTriangles_5b( - 15, 7, 6, // tri0 - 13, 12, 4, // tri1 - 16, 1, 0, // tri2 - 5, 4, 12 // tri3 -), -gsSPNTriangles_5b( - 3, 5, 11, // tri0 - 5, 12, 0, // tri1 - 17, 5, 0, // tri2 - 6, 5, 17 // tri3 -), -gsSPNTriangles_5b( - 2, 18, 17, // tri0 - 6, 11, 5, // tri1 - 15, 6, 17, // tri2 - 17, 0, 2 // tri3 -), -gsSPNTriangles_5b( - 8, 9, 6, // tri0 - 0, 14, 16, // tri1 - 17, 18, 15, // tri2 - 10, 3, 11 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&mus_1_v[66], 14, 0), -gsSPNTrianglesInit_5b( - 16, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 5, 6, 3 // tri2 -), -gsSPNTriangles_5b( - 1, 7, 8, // tri0 - 1, 9, 10, // tri1 - 10, 7, 1, // tri2 - 5, 4, 10 // tri3 -), -gsSPNTriangles_5b( - 8, 2, 1, // tri0 - 9, 11, 5, // tri1 - 12, 13, 5, // tri2 - 11, 9, 1 // tri3 -), -gsSPNTriangles_5b( - 1, 0, 12, // tri0 - 10, 9, 5, // tri1 - 13, 6, 5, // tri2 - 12, 11, 1 // tri3 -), -gsSPNTriangles_5b( - 5, 11, 12, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&mus_1_v[80], 26, 0), -gsSPNTrianglesInit_5b( - 24, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 1, 7 // tri2 -), -gsSPNTriangles_5b( - 8, 9, 10, // tri0 - 11, 12, 13, // tri1 - 14, 15, 16, // tri2 - 17, 7, 0 // tri3 -), -gsSPNTriangles_5b( - 13, 14, 11, // tri0 - 10, 9, 11, // tri1 - 16, 8, 10, // tri2 - 3, 5, 6 // tri3 -), -gsSPNTriangles_5b( - 17, 4, 3, // tri0 - 13, 18, 19, // tri1 - 0, 7, 1, // tri2 - 15, 14, 13 // tri3 -), -gsSPNTriangles_5b( - 20, 15, 13, // tri0 - 13, 19, 21, // tri1 - 11, 14, 10, // tri2 - 2, 22, 23 // tri3 -), -gsSPNTriangles_5b( - 2, 23, 24, // tri0 - 7, 3, 6, // tri1 - 16, 10, 14, // tri2 - 3, 7, 17 // tri3 -), -gsSPNTriangles_5b( - 0, 25, 17, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&mus_1_v[106], 12, 0), -gsSPNTrianglesInit_5b( - 4, // tri count - 0, 1, 2, // tri0 - 3, 4, 0, // tri1 - 2, 5, 0 // tri2 -), -gsSPNTriangles_5b( - 0, 5, 3, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 4, // tri count - 6, 7, 8, // tri0 - 9, 10, 8, // tri1 - 8, 11, 6 // tri2 -), -gsSPNTriangles_5b( - 8, 7, 9, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mus_1_v[8], 19, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 7, 6, // tri0 + 9, 10, 11, // tri1 + 5, 4, 0, // tri2 + 12, 5, 0 // tri3 + ), + gsSPNTriangles_5b(6, 10, 9, // tri0 + 11, 13, 14, // tri1 + 11, 14, 9, // tri2 + 8, 15, 6 // tri3 + ), + gsSPNTriangles_5b(2, 12, 0, // tri0 + 5, 16, 17, // tri1 + 5, 17, 18, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&mus_1_v[27], 20, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 2, 1, 3 // tri2 + ), + gsSPNTriangles_5b(0, 5, 6, // tri0 + 6, 1, 0, // tri1 + 7, 8, 9, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(10, 12, 7, // tri0 + 12, 3, 8, // tri1 + 7, 12, 8, // tri2 + 7, 13, 10 // tri3 + ), + gsSPNTriangles_5b(14, 4, 3, // tri0 + 12, 15, 14, // tri1 + 7, 9, 16, // tri2 + 3, 12, 14 // tri3 + ), + gsSPNTriangles_5b(16, 13, 7, // tri0 + 1, 6, 8, // tri1 + 1, 8, 3, // tri2 + 8, 6, 9 // tri3 + ), + gsSPNTriangles_5b(10, 17, 18, // tri0 + 10, 18, 11, // tri1 + 15, 12, 11, // tri2 + 9, 6, 5 // tri3 + ), + gsSPNTriangles_5b(9, 5, 19, // tri0 + 16, 9, 19, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&mus_1_v[47], 19, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 13, 14, // tri1 + 0, 12, 14, // tri2 + 9, 11, 6 // tri3 + ), + gsSPNTriangles_5b(15, 7, 6, // tri0 + 13, 12, 4, // tri1 + 16, 1, 0, // tri2 + 5, 4, 12 // tri3 + ), + gsSPNTriangles_5b(3, 5, 11, // tri0 + 5, 12, 0, // tri1 + 17, 5, 0, // tri2 + 6, 5, 17 // tri3 + ), + gsSPNTriangles_5b(2, 18, 17, // tri0 + 6, 11, 5, // tri1 + 15, 6, 17, // tri2 + 17, 0, 2 // tri3 + ), + gsSPNTriangles_5b(8, 9, 6, // tri0 + 0, 14, 16, // tri1 + 17, 18, 15, // tri2 + 10, 3, 11 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&mus_1_v[66], 14, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 3 // tri2 + ), + gsSPNTriangles_5b(1, 7, 8, // tri0 + 1, 9, 10, // tri1 + 10, 7, 1, // tri2 + 5, 4, 10 // tri3 + ), + gsSPNTriangles_5b(8, 2, 1, // tri0 + 9, 11, 5, // tri1 + 12, 13, 5, // tri2 + 11, 9, 1 // tri3 + ), + gsSPNTriangles_5b(1, 0, 12, // tri0 + 10, 9, 5, // tri1 + 13, 6, 5, // tri2 + 12, 11, 1 // tri3 + ), + gsSPNTriangles_5b(5, 11, 12, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&mus_1_v[80], 26, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 1, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 14, 15, 16, // tri2 + 17, 7, 0 // tri3 + ), + gsSPNTriangles_5b(13, 14, 11, // tri0 + 10, 9, 11, // tri1 + 16, 8, 10, // tri2 + 3, 5, 6 // tri3 + ), + gsSPNTriangles_5b(17, 4, 3, // tri0 + 13, 18, 19, // tri1 + 0, 7, 1, // tri2 + 15, 14, 13 // tri3 + ), + gsSPNTriangles_5b(20, 15, 13, // tri0 + 13, 19, 21, // tri1 + 11, 14, 10, // tri2 + 2, 22, 23 // tri3 + ), + gsSPNTriangles_5b(2, 23, 24, // tri0 + 7, 3, 6, // tri1 + 16, 10, 14, // tri2 + 3, 7, 17 // tri3 + ), + gsSPNTriangles_5b(0, 25, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&mus_1_v[106], 12, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 2, 5, 0 // tri2 + ), + gsSPNTriangles_5b(0, 5, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 6, 7, 8, // tri0 + 9, 10, 8, // tri1 + 8, 11, 6 // tri2 + ), + gsSPNTriangles_5b(8, 7, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx mouth_mus_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mus_1_v[0], 8, 0), -gsSPNTrianglesInit_5b( - 2, // tri count - 0, 1, 2, // tri0 - 2, 3, 0, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 2, // tri count - 4, 5, 6, // tri0 - 6, 5, 7, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mus_1_v[0], 8, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 4, 5, 6, // tri0 + 6, 5, 7, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_mus_model[] = { -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mus_1_v[154], 5, 0), -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&mus_1_v[159], 16, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 5, 3, // tri0 - 1, 4, 6, // tri1 - 1, 8, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 10, 9, // tri0 - 0, 1, 11, // tri1 - 2, 12, 13, // tri2 - 2, 0, 14 // tri3 -), -gsSPNTriangles_5b( - 2, 15, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 20, 18, 17, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mus_1_v[154], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mus_1_v[159], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 2, 5, 3, // tri0 + 1, 4, 6, // tri1 + 1, 8, 7 // tri2 + ), + gsSPNTriangles_5b(1, 10, 9, // tri0 + 0, 1, 11, // tri1 + 2, 12, 13, // tri2 + 2, 0, 14 // tri3 + ), + gsSPNTriangles_5b(2, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 18, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_mus_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mus_1_v[175], 4, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&mus_1_v[179], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 2, 4, // tri0 - 0, 5, 6, // tri1 - 1, 8, 7 // tri2 -), -gsSPNTriangles_5b( - 2, 9, 10, // tri0 - 3, 1, 11, // tri1 - 1, 0, 12, // tri2 - 1, 13, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mus_1_v[175], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mus_1_v[179], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 2, 4, // tri0 + 0, 5, 6, // tri1 + 1, 8, 7 // tri2 + ), + gsSPNTriangles_5b(2, 9, 10, // tri0 + 3, 1, 11, // tri1 + 1, 0, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_mus_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mus_1_v[118], 5, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&mus_1_v[123], 16, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 5, 6, // tri0 - 4, 7, 8, // tri1 - 4, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 11, // tri0 - 4, 2, 12, // tri1 - 0, 13, 14, // tri2 - 0, 3, 15 // tri3 -), -gsSPNTriangles_5b( - 3, 4, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 18, 17, 20, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mus_1_v[118], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mus_1_v[123], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 + ), + gsSPNTriangles_5b(3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_mus_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mus_1_v[139], 4, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&mus_1_v[143], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 0, 6, 7, // tri1 - 0, 2, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 3, 9, // tri0 - 2, 11, 10, // tri1 - 3, 13, 12, // tri2 - 3, 1, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mus_1_v[139], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mus_1_v[143], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 + ), + gsSPNTriangles_5b(2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_mus_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mus_1_v[190], 7, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 252, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&mus_1_v[197], 20, 7), -gsSPNTrianglesInit_5b( - 13, // tri count - 3, 1, 7, // tri0 - 6, 8, 9, // tri1 - 3, 10, 11 // tri2 -), -gsSPNTriangles_5b( - 2, 12, 0, // tri0 - 2, 13, 14, // tri1 - 1, 16, 15, // tri2 - 0, 17, 18 // tri3 -), -gsSPNTriangles_5b( - 0, 19, 20, // tri0 - 1, 21, 22, // tri1 - 6, 3, 23, // tri2 - 2, 6, 24 // tri3 -), -gsSPNTriangles_5b( - 4, 0, 25, // tri0 - 5, 26, 1, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&mus_1_v[217], 9, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 0, 3, 4, // tri1 - 0, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 4, 3, 7, // tri0 - 2, 5, 0, // tri1 - 1, 8, 2, // tri2 - 6, 3, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mus_1_v[190], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mus_1_v[197], 20, 7), + gsSPNTrianglesInit_5b(13, // tri count + 3, 1, 7, // tri0 + 6, 8, 9, // tri1 + 3, 10, 11 // tri2 + ), + gsSPNTriangles_5b(2, 12, 0, // tri0 + 2, 13, 14, // tri1 + 1, 16, 15, // tri2 + 0, 17, 18 // tri3 + ), + gsSPNTriangles_5b(0, 19, 20, // tri0 + 1, 21, 22, // tri1 + 6, 3, 23, // tri2 + 2, 6, 24 // tri3 + ), + gsSPNTriangles_5b(4, 0, 25, // tri0 + 5, 26, 1, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&mus_1_v[217], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 0, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 3, 7, // tri0 + 2, 5, 0, // tri1 + 1, 8, 2, // tri2 + 6, 3, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail1_mus_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mus_1_v[256], 10, 0), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 1, 2, // tri0 - 3, 4, 2, // tri1 - 2, 1, 3 // tri2 -), -gsSPNTriangles_5b( - 4, 3, 5, // tri0 - 6, 5, 7, // tri1 - 8, 0, 9, // tri2 - 5, 6, 4 // tri3 -), -gsSPNTriangles_5b( - 0, 8, 1, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mus_1_v[256], 10, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 2, 1, 3 // tri2 + ), + gsSPNTriangles_5b(4, 3, 5, // tri0 + 6, 5, 7, // tri1 + 8, 0, 9, // tri2 + 5, 6, 4 // tri3 + ), + gsSPNTriangles_5b(0, 8, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail2_mus_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mus_1_v[226], 6, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&mus_1_v[232], 24, 6), -gsSPNTrianglesInit_5b( - 8, // tri count - 3, 2, 6, // tri0 - 2, 8, 7, // tri1 - 4, 3, 9 // tri2 -), -gsSPNTriangles_5b( - 3, 11, 10, // tri0 - 0, 5, 12, // tri1 - 5, 14, 13, // tri2 - 2, 1, 15 // tri3 -), -gsSPNTriangles_5b( - 1, 17, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 4, // tri count - 18, 19, 20, // tri0 - 21, 22, 23, // tri1 - 24, 25, 26 // tri2 -), -gsSPNTriangles_5b( - 27, 28, 29, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mus_1_v[226], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mus_1_v[232], 24, 6), + gsSPNTrianglesInit_5b(8, // tri count + 3, 2, 6, // tri0 + 2, 8, 7, // tri1 + 4, 3, 9 // tri2 + ), + gsSPNTriangles_5b(3, 11, 10, // tri0 + 0, 5, 12, // tri1 + 5, 14, 13, // tri2 + 2, 1, 15 // tri3 + ), + gsSPNTriangles_5b(1, 17, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(4, // tri count + 18, 19, 20, // tri0 + 21, 22, 23, // tri1 + 24, 25, 26 // tri2 + ), + gsSPNTriangles_5b(27, 28, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_mus_model[] = { -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mus_1_v[318], 6, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&mus_1_v[324], 18, 6), -gsSPNTrianglesInit_5b( - 7, // tri count - 4, 0, 6, // tri0 - 0, 8, 7, // tri1 - 3, 10, 9 // tri2 -), -gsSPNTriangles_5b( - 1, 2, 11, // tri0 - 2, 3, 12, // tri1 - 3, 5, 13, // tri2 - 2, 14, 15 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 16, 17, 18, // tri0 - 19, 20, 21, // tri1 - 22, 23, 20 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mus_1_v[318], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mus_1_v[324], 18, 6), + gsSPNTrianglesInit_5b(7, // tri count + 4, 0, 6, // tri0 + 0, 8, 7, // tri1 + 3, 10, 9 // tri2 + ), + gsSPNTriangles_5b(1, 2, 11, // tri0 + 2, 3, 12, // tri1 + 3, 5, 13, // tri2 + 2, 14, 15 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 16, 17, 18, // tri0 + 19, 20, 21, // tri1 + 22, 23, 20 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_mus_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mus_1_v[342], 4, 0), -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 252, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&mus_1_v[346], 24, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 3, 4, // tri0 - 0, 5, 1, // tri1 - 1, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 3, 2, 8, // tri0 - 2, 9, 10, // tri1 - 2, 1, 11, // tri2 - 0, 13, 12 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 14, 15, 16, // tri0 - 14, 16, 17, // tri1 - 17, 18, 14 // tri2 -), -gsSPNTriangles_5b( - 19, 20, 21, // tri0 - 22, 23, 18, // tri1 - 21, 24, 19, // tri2 - 17, 22, 18 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 252, 124), -gsSPNTrianglesInit_5b( - 1, // tri count - 25, 26, 27, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mus_1_v[342], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mus_1_v[346], 24, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 4, // tri0 + 0, 5, 1, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b(3, 2, 8, // tri0 + 2, 9, 10, // tri1 + 2, 1, 11, // tri2 + 0, 13, 12 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 14, 15, 16, // tri0 + 14, 16, 17, // tri1 + 17, 18, 14 // tri2 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 22, 23, 18, // tri1 + 21, 24, 19, // tri2 + 17, 22, 18 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsSPNTrianglesInit_5b(1, // tri count + 25, 26, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_mus_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mus_1_v[266], 6, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&mus_1_v[272], 18, 6), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 4, 6, // tri0 - 0, 8, 7, // tri1 - 3, 10, 9 // tri2 -), -gsSPNTriangles_5b( - 2, 1, 11, // tri0 - 3, 2, 12, // tri1 - 5, 3, 13, // tri2 - 2, 14, 15 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 16, 17, 18, // tri0 - 19, 20, 21, // tri1 - 20, 22, 23 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mus_1_v[266], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mus_1_v[272], 18, 6), + gsSPNTrianglesInit_5b(7, // tri count + 0, 4, 6, // tri0 + 0, 8, 7, // tri1 + 3, 10, 9 // tri2 + ), + gsSPNTriangles_5b(2, 1, 11, // tri0 + 3, 2, 12, // tri1 + 5, 3, 13, // tri2 + 2, 14, 15 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 16, 17, 18, // tri0 + 19, 20, 21, // tri1 + 20, 22, 23 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_mus_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mus_1_v[290], 4, 0), -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 252, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&mus_1_v[294], 24, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 0, 4, // tri0 - 1, 5, 0, // tri1 - 1, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 2, 3, 8, // tri0 - 2, 9, 10, // tri1 - 1, 2, 11, // tri2 - 0, 13, 12 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 14, 15, 16, // tri0 - 17, 14, 16, // tri1 - 16, 18, 17 // tri2 -), -gsSPNTriangles_5b( - 19, 20, 21, // tri0 - 18, 22, 23, // tri1 - 21, 24, 19, // tri2 - 18, 23, 17 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 252, 124), -gsSPNTrianglesInit_5b( - 1, // tri count - 25, 26, 27, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mus_1_v[290], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mus_1_v[294], 24, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 0, 4, // tri0 + 1, 5, 0, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b(2, 3, 8, // tri0 + 2, 9, 10, // tri1 + 1, 2, 11, // tri2 + 0, 13, 12 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 14, 15, 16, // tri0 + 17, 14, 16, // tri1 + 16, 18, 17 // tri2 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 18, 22, 23, // tri1 + 21, 24, 19, // tri2 + 18, 23, 17 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsSPNTrianglesInit_5b(1, // tri count + 25, 26, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx base_mus_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 252, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&mus_1_v[370], 14, 0), -gsSPNTrianglesInit_5b( - 12, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 9, 5, 4, // tri0 - 10, 4, 0, // tri1 - 10, 9, 4, // tri2 - 7, 11, 12 // tri3 -), -gsSPNTriangles_5b( - 8, 7, 13, // tri0 - 2, 10, 0, // tri1 - 2, 1, 6, // tri2 - 6, 8, 2 // tri3 -), -gsSPNTriangles_5b( - 7, 12, 13, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mus_1_v[370], 14, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 5, 4, // tri0 + 10, 4, 0, // tri1 + 10, 9, 4, // tri2 + 7, 11, 12 // tri3 + ), + gsSPNTriangles_5b(8, 7, 13, // tri0 + 2, 10, 0, // tri1 + 2, 1, 6, // tri2 + 6, 8, 2 // tri3 + ), + gsSPNTriangles_5b(7, 12, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_mus_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -740,4 +658,4 @@ static cKF_Joint_R_c cKF_je_r_mus_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_mus_1 = { 26, 14, cKF_je_r_mus_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_mus_1 = { 26, 14, cKF_je_r_mus_1_tbl }; diff --git a/src/data/npc/model/mdl/oct_1.c b/src/data/npc/model/mdl/oct_1.c index 3f95ea2c..da4a64d2 100644 --- a/src/data/npc/model/mdl/oct_1.c +++ b/src/data/npc/model/mdl/oct_1.c @@ -6,794 +6,697 @@ static Vtx oct_1_v[] = { }; static Gfx head_oct_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&oct_1_v[0], 19, 0), -gsSPNTrianglesInit_5b( - 11, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 2, 6, 0 // tri2 -), -gsSPNTriangles_5b( - 7, 8, 4, // tri0 - 9, 10, 7, // tri1 - 10, 2, 1, // tri2 - 5, 11, 3 // tri3 -), -gsSPNTriangles_5b( - 9, 2, 10, // tri0 - 7, 3, 9, // tri1 - 1, 12, 10, // tri2 - 4, 3, 7 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 4, // tri count - 13, 14, 15, // tri0 - 13, 15, 16, // tri1 - 15, 17, 18 // tri2 -), -gsSPNTriangles_5b( - 15, 18, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&oct_1_v[19], 32, 0), -gsSPNTrianglesInit_5b( - 37, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 5 // tri2 -), -gsSPNTriangles_5b( - 8, 9, 10, // tri0 - 8, 10, 11, // tri1 - 12, 13, 14, // tri2 - 2, 15, 0 // tri3 -), -gsSPNTriangles_5b( - 2, 16, 17, // tri0 - 18, 16, 1, // tri1 - 19, 20, 7, // tri2 - 16, 2, 1 // tri3 -), -gsSPNTriangles_5b( - 21, 22, 20, // tri0 - 1, 0, 23, // tri1 - 3, 16, 18, // tri2 - 21, 0, 15 // tri3 -), -gsSPNTriangles_5b( - 21, 15, 22, // tri0 - 17, 7, 20, // tri1 - 24, 12, 25, // tri2 - 16, 5, 17 // tri3 -), -gsSPNTriangles_5b( - 5, 7, 17, // tri0 - 17, 22, 15, // tri1 - 25, 12, 26, // tri2 - 20, 22, 17 // tri3 -), -gsSPNTriangles_5b( - 13, 21, 19, // tri0 - 19, 7, 27, // tri1 - 14, 13, 19, // tri2 - 15, 2, 17 // tri3 -), -gsSPNTriangles_5b( - 12, 24, 28, // tri0 - 14, 26, 12, // tri1 - 13, 12, 23, // tri2 - 3, 29, 30 // tri3 -), -gsSPNTriangles_5b( - 11, 6, 31, // tri0 - 11, 31, 8, // tri1 - 29, 3, 10, // tri2 - 1, 23, 28 // tri3 -), -gsSPNTriangles_5b( - 28, 23, 12, // tri0 - 4, 3, 30, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&oct_1_v[51], 19, 0), -gsSPNTrianglesInit_5b( - 10, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 3, 4, 0 // tri2 -), -gsSPNTriangles_5b( - 5, 6, 7, // tri0 - 8, 9, 10, // tri1 - 8, 3, 2, // tri2 - 11, 12, 13 // tri3 -), -gsSPNTriangles_5b( - 11, 13, 14, // tri0 - 15, 16, 2, // tri1 - 17, 18, 13, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&oct_1_v[0], 19, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 6, 0 // tri2 + ), + gsSPNTriangles_5b(7, 8, 4, // tri0 + 9, 10, 7, // tri1 + 10, 2, 1, // tri2 + 5, 11, 3 // tri3 + ), + gsSPNTriangles_5b(9, 2, 10, // tri0 + 7, 3, 9, // tri1 + 1, 12, 10, // tri2 + 4, 3, 7 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 13, 14, 15, // tri0 + 13, 15, 16, // tri1 + 15, 17, 18 // tri2 + ), + gsSPNTriangles_5b(15, 18, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&oct_1_v[19], 32, 0), + gsSPNTrianglesInit_5b(37, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 5 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 8, 10, 11, // tri1 + 12, 13, 14, // tri2 + 2, 15, 0 // tri3 + ), + gsSPNTriangles_5b(2, 16, 17, // tri0 + 18, 16, 1, // tri1 + 19, 20, 7, // tri2 + 16, 2, 1 // tri3 + ), + gsSPNTriangles_5b(21, 22, 20, // tri0 + 1, 0, 23, // tri1 + 3, 16, 18, // tri2 + 21, 0, 15 // tri3 + ), + gsSPNTriangles_5b(21, 15, 22, // tri0 + 17, 7, 20, // tri1 + 24, 12, 25, // tri2 + 16, 5, 17 // tri3 + ), + gsSPNTriangles_5b(5, 7, 17, // tri0 + 17, 22, 15, // tri1 + 25, 12, 26, // tri2 + 20, 22, 17 // tri3 + ), + gsSPNTriangles_5b(13, 21, 19, // tri0 + 19, 7, 27, // tri1 + 14, 13, 19, // tri2 + 15, 2, 17 // tri3 + ), + gsSPNTriangles_5b(12, 24, 28, // tri0 + 14, 26, 12, // tri1 + 13, 12, 23, // tri2 + 3, 29, 30 // tri3 + ), + gsSPNTriangles_5b(11, 6, 31, // tri0 + 11, 31, 8, // tri1 + 29, 3, 10, // tri2 + 1, 23, 28 // tri3 + ), + gsSPNTriangles_5b(28, 23, 12, // tri0 + 4, 3, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&oct_1_v[51], 19, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 4, 0 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 3, 2, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(11, 13, 14, // tri0 + 15, 16, 2, // tri1 + 17, 18, 13, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_oct_model[] = { -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&oct_1_v[117], 5, 0), -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 60), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&oct_1_v[122], 25, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 5, 3, // tri0 - 2, 7, 6, // tri1 - 0, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 10, // tri0 - 2, 1, 11, // tri1 - 4, 12, 0, // tri2 - 0, 14, 13 // tri3 -), -gsSPNTriangles_5b( - 2, 15, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 14, // tri count - 17, 18, 19, // tri0 - 20, 21, 22, // tri1 - 20, 23, 24 // tri2 -), -gsSPNTriangles_5b( - 19, 22, 21, // tri0 - 22, 23, 20, // tri1 - 19, 18, 25, // tri2 - 25, 23, 22 // tri3 -), -gsSPNTriangles_5b( - 26, 27, 28, // tri0 - 21, 20, 27, // tri1 - 27, 20, 24, // tri2 - 29, 21, 27 // tri3 -), -gsSPNTriangles_5b( - 19, 21, 29, // tri0 - 25, 22, 19, // tri1 - 24, 28, 27, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&oct_1_v[117], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&oct_1_v[122], 25, 5), + gsSPNTrianglesInit_5b(8, // tri count + 2, 5, 3, // tri0 + 2, 7, 6, // tri1 + 0, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 0, 10, // tri0 + 2, 1, 11, // tri1 + 4, 12, 0, // tri2 + 0, 14, 13 // tri3 + ), + gsSPNTriangles_5b(2, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(14, // tri count + 17, 18, 19, // tri0 + 20, 21, 22, // tri1 + 20, 23, 24 // tri2 + ), + gsSPNTriangles_5b(19, 22, 21, // tri0 + 22, 23, 20, // tri1 + 19, 18, 25, // tri2 + 25, 23, 22 // tri3 + ), + gsSPNTriangles_5b(26, 27, 28, // tri0 + 21, 20, 27, // tri1 + 27, 20, 24, // tri2 + 29, 21, 27 // tri3 + ), + gsSPNTriangles_5b(19, 21, 29, // tri0 + 25, 22, 19, // tri1 + 24, 28, 27, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_oct_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&oct_1_v[147], 4, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 60), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&oct_1_v[151], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 5, 4, // tri0 - 3, 7, 6, // tri1 - 2, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 3, 2, 10, // tri0 - 2, 0, 11, // tri1 - 1, 3, 12, // tri2 - 1, 13, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&oct_1_v[147], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&oct_1_v[151], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 5, 4, // tri0 + 3, 7, 6, // tri1 + 2, 9, 8 // tri2 + ), + gsSPNTriangles_5b(3, 2, 10, // tri0 + 2, 0, 11, // tri1 + 1, 3, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_oct_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&oct_1_v[70], 5, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 60), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&oct_1_v[75], 14, 5), -gsSPNTrianglesInit_5b( - 9, // tri count - 3, 5, 2, // tri0 - 2, 7, 6, // tri1 - 0, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 0, 1, 10, // tri0 - 1, 2, 11, // tri1 - 0, 12, 4, // tri2 - 0, 14, 13 // tri3 -), -gsSPNTriangles_5b( - 2, 15, 16, // tri0 - 2, 17, 18, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&oct_1_v[89], 13, 0), -gsSPNTrianglesInit_5b( - 13, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 5 // tri2 -), -gsSPNTriangles_5b( - 4, 3, 0, // tri0 - 5, 7, 3, // tri1 - 8, 1, 0, // tri2 - 3, 7, 8 // tri3 -), -gsSPNTriangles_5b( - 9, 10, 11, // tri0 - 10, 5, 4, // tri1 - 6, 5, 10, // tri2 - 12, 4, 0 // tri3 -), -gsSPNTriangles_5b( - 0, 3, 8, // tri0 - 10, 9, 6, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&oct_1_v[70], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&oct_1_v[75], 14, 5), + gsSPNTrianglesInit_5b(9, // tri count + 3, 5, 2, // tri0 + 2, 7, 6, // tri1 + 0, 8, 9 // tri2 + ), + gsSPNTriangles_5b(0, 1, 10, // tri0 + 1, 2, 11, // tri1 + 0, 12, 4, // tri2 + 0, 14, 13 // tri3 + ), + gsSPNTriangles_5b(2, 15, 16, // tri0 + 2, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&oct_1_v[89], 13, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 5 // tri2 + ), + gsSPNTriangles_5b(4, 3, 0, // tri0 + 5, 7, 3, // tri1 + 8, 1, 0, // tri2 + 3, 7, 8 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 10, 5, 4, // tri1 + 6, 5, 10, // tri2 + 12, 4, 0 // tri3 + ), + gsSPNTriangles_5b(0, 3, 8, // tri0 + 10, 9, 6, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_oct_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&oct_1_v[102], 4, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 60), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&oct_1_v[106], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 5, 4, // tri0 - 3, 7, 6, // tri1 - 2, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 3, 10, // tri0 - 0, 2, 11, // tri1 - 3, 1, 12, // tri2 - 1, 13, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&oct_1_v[102], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&oct_1_v[106], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 5, 4, // tri0 + 3, 7, 6, // tri1 + 2, 9, 8 // tri2 + ), + gsSPNTriangles_5b(2, 3, 10, // tri0 + 0, 2, 11, // tri1 + 3, 1, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_oct_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&oct_1_v[162], 7, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&oct_1_v[169], 20, 7), -gsSPNTrianglesInit_5b( - 13, // tri count - 3, 1, 7, // tri0 - 6, 8, 9, // tri1 - 3, 10, 11 // tri2 -), -gsSPNTriangles_5b( - 2, 12, 0, // tri0 - 2, 13, 14, // tri1 - 1, 16, 15, // tri2 - 0, 17, 18 // tri3 -), -gsSPNTriangles_5b( - 0, 19, 20, // tri0 - 1, 21, 22, // tri1 - 6, 3, 23, // tri2 - 2, 6, 24 // tri3 -), -gsSPNTriangles_5b( - 4, 0, 25, // tri0 - 5, 26, 1, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&oct_1_v[189], 9, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 0, 3, 4, // tri1 - 0, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 4, 3, 7, // tri0 - 2, 5, 0, // tri1 - 1, 8, 2, // tri2 - 6, 3, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&oct_1_v[162], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&oct_1_v[169], 20, 7), + gsSPNTrianglesInit_5b(13, // tri count + 3, 1, 7, // tri0 + 6, 8, 9, // tri1 + 3, 10, 11 // tri2 + ), + gsSPNTriangles_5b(2, 12, 0, // tri0 + 2, 13, 14, // tri1 + 1, 16, 15, // tri2 + 0, 17, 18 // tri3 + ), + gsSPNTriangles_5b(0, 19, 20, // tri0 + 1, 21, 22, // tri1 + 6, 3, 23, // tri2 + 2, 6, 24 // tri3 + ), + gsSPNTriangles_5b(4, 0, 25, // tri0 + 5, 26, 1, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&oct_1_v[189], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 0, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 3, 7, // tri0 + 2, 5, 0, // tri1 + 1, 8, 2, // tri2 + 6, 3, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot3_oct_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&oct_1_v[329], 12, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000180, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&oct_1_v[341], 10, 12), -gsSPNTrianglesInit_5b( - 7, // tri count - 1, 12, 13, // tri0 - 0, 1, 14, // tri1 - 3, 15, 16 // tri2 -), -gsSPNTriangles_5b( - 2, 17, 3, // tri0 - 2, 18, 19, // tri1 - 1, 3, 20, // tri2 - 2, 0, 21 // tri3 -), -gsSPVertex(&oct_1_v[351], 10, 12), -gsSPNTrianglesInit_5b( - 7, // tri count - 4, 12, 6, // tri0 - 6, 13, 14, // tri1 - 6, 15, 7 // tri2 -), -gsSPNTriangles_5b( - 7, 16, 17, // tri0 - 4, 18, 19, // tri1 - 4, 5, 20, // tri2 - 5, 7, 21 // tri3 -), -gsSPVertex(&oct_1_v[361], 19, 12), -gsSPNTrianglesInit_5b( - 7, // tri count - 11, 12, 8, // tri0 - 8, 13, 14, // tri1 - 11, 15, 16 // tri2 -), -gsSPNTriangles_5b( - 11, 10, 17, // tri0 - 10, 9, 18, // tri1 - 9, 19, 20, // tri2 - 8, 21, 9 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 22, 23, 24, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 25, 26, 27, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 28, 29, 30, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&oct_1_v[329], 12, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x180, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&oct_1_v[341], 10, 12), + gsSPNTrianglesInit_5b(7, // tri count + 1, 12, 13, // tri0 + 0, 1, 14, // tri1 + 3, 15, 16 // tri2 + ), + gsSPNTriangles_5b(2, 17, 3, // tri0 + 2, 18, 19, // tri1 + 1, 3, 20, // tri2 + 2, 0, 21 // tri3 + ), + gsSPVertex(&oct_1_v[351], 10, 12), + gsSPNTrianglesInit_5b(7, // tri count + 4, 12, 6, // tri0 + 6, 13, 14, // tri1 + 6, 15, 7 // tri2 + ), + gsSPNTriangles_5b(7, 16, 17, // tri0 + 4, 18, 19, // tri1 + 4, 5, 20, // tri2 + 5, 7, 21 // tri3 + ), + gsSPVertex(&oct_1_v[361], 19, 12), + gsSPNTrianglesInit_5b(7, // tri count + 11, 12, 8, // tri0 + 8, 13, 14, // tri1 + 11, 15, 16 // tri2 + ), + gsSPNTriangles_5b(11, 10, 17, // tri0 + 10, 9, 18, // tri1 + 9, 19, 20, // tri2 + 8, 21, 9 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 22, 23, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPNTrianglesInit_5b(1, // tri count + 25, 26, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPNTrianglesInit_5b(1, // tri count + 28, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_oct_model[] = { -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&oct_1_v[380], 12, 0), -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000180, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&oct_1_v[392], 12, 12), -gsSPNTrianglesInit_5b( - 8, // tri count - 1, 13, 12, // tri0 - 9, 14, 15, // tri1 - 9, 16, 17 // tri2 -), -gsSPNTriangles_5b( - 1, 18, 19, // tri0 - 0, 9, 20, // tri1 - 9, 6, 21, // tri2 - 1, 0, 22 // tri3 -), -gsSPNTriangles_5b( - 6, 1, 23, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&oct_1_v[404], 12, 12), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 3, 12, // tri0 - 3, 13, 14, // tri1 - 8, 15, 16 // tri2 -), -gsSPNTriangles_5b( - 11, 17, 18, // tri0 - 11, 8, 19, // tri1 - 3, 11, 20, // tri2 - 8, 2, 21 // tri3 -), -gsSPNTriangles_5b( - 11, 23, 22, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&oct_1_v[416], 12, 12), -gsSPNTrianglesInit_5b( - 8, // tri count - 5, 7, 12, // tri0 - 4, 13, 14, // tri1 - 4, 5, 15 // tri2 -), -gsSPNTriangles_5b( - 7, 10, 16, // tri0 - 7, 17, 18, // tri1 - 10, 4, 19, // tri2 - 4, 20, 21 // tri3 -), -gsSPNTriangles_5b( - 7, 22, 23, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&oct_1_v[380], 12, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x180, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&oct_1_v[392], 12, 12), + gsSPNTrianglesInit_5b(8, // tri count + 1, 13, 12, // tri0 + 9, 14, 15, // tri1 + 9, 16, 17 // tri2 + ), + gsSPNTriangles_5b(1, 18, 19, // tri0 + 0, 9, 20, // tri1 + 9, 6, 21, // tri2 + 1, 0, 22 // tri3 + ), + gsSPNTriangles_5b(6, 1, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&oct_1_v[404], 12, 12), + gsSPNTrianglesInit_5b(8, // tri count + 2, 3, 12, // tri0 + 3, 13, 14, // tri1 + 8, 15, 16 // tri2 + ), + gsSPNTriangles_5b(11, 17, 18, // tri0 + 11, 8, 19, // tri1 + 3, 11, 20, // tri2 + 8, 2, 21 // tri3 + ), + gsSPNTriangles_5b(11, 23, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&oct_1_v[416], 12, 12), + gsSPNTrianglesInit_5b(8, // tri count + 5, 7, 12, // tri0 + 4, 13, 14, // tri1 + 4, 5, 15 // tri2 + ), + gsSPNTriangles_5b(7, 10, 16, // tri0 + 7, 17, 18, // tri1 + 10, 4, 19, // tri2 + 4, 20, 21 // tri3 + ), + gsSPNTriangles_5b(7, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_oct_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&oct_1_v[428], 4, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&oct_1_v[432], 26, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 2, 4, 5, // tri0 - 1, 6, 7, // tri1 - 3, 2, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 1, 9, // tri0 - 0, 11, 10, // tri1 - 0, 12, 1, // tri2 - 0, 3, 13 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 14, 15, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000180, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 13, // tri count - 17, 18, 19, // tri0 - 17, 19, 20, // tri1 - 20, 21, 22 // tri2 -), -gsSPNTriangles_5b( - 23, 24, 25, // tri0 - 25, 26, 23, // tri1 - 27, 28, 29, // tri2 - 29, 24, 27 // tri3 -), -gsSPNTriangles_5b( - 24, 23, 27, // tri0 - 18, 26, 25, // tri1 - 29, 28, 21, // tri2 - 20, 22, 17 // tri3 -), -gsSPNTriangles_5b( - 20, 29, 21, // tri0 - 25, 19, 18, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&oct_1_v[428], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&oct_1_v[432], 26, 4), + gsSPNTrianglesInit_5b(7, // tri count + 2, 4, 5, // tri0 + 1, 6, 7, // tri1 + 3, 2, 8 // tri2 + ), + gsSPNTriangles_5b(2, 1, 9, // tri0 + 0, 11, 10, // tri1 + 0, 12, 1, // tri2 + 0, 3, 13 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 14, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x180, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(13, // tri count + 17, 18, 19, // tri0 + 17, 19, 20, // tri1 + 20, 21, 22 // tri2 + ), + gsSPNTriangles_5b(23, 24, 25, // tri0 + 25, 26, 23, // tri1 + 27, 28, 29, // tri2 + 29, 24, 27 // tri3 + ), + gsSPNTriangles_5b(24, 23, 27, // tri0 + 18, 26, 25, // tri1 + 29, 28, 21, // tri2 + 20, 22, 17 // tri3 + ), + gsSPNTriangles_5b(20, 29, 21, // tri0 + 25, 19, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot3_oct_model[] = { -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&oct_1_v[198], 12, 0), -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000180, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&oct_1_v[210], 10, 12), -gsSPNTrianglesInit_5b( - 7, // tri count - 1, 12, 13, // tri0 - 1, 0, 14, // tri1 - 3, 15, 16 // tri2 -), -gsSPNTriangles_5b( - 3, 17, 2, // tri0 - 2, 18, 19, // tri1 - 3, 1, 20, // tri2 - 0, 2, 21 // tri3 -), -gsSPVertex(&oct_1_v[220], 10, 12), -gsSPNTrianglesInit_5b( - 7, // tri count - 6, 12, 4, // tri0 - 6, 13, 14, // tri1 - 7, 15, 6 // tri2 -), -gsSPNTriangles_5b( - 7, 16, 17, // tri0 - 4, 18, 19, // tri1 - 5, 4, 20, // tri2 - 7, 5, 21 // tri3 -), -gsSPVertex(&oct_1_v[230], 19, 12), -gsSPNTrianglesInit_5b( - 7, // tri count - 8, 12, 11, // tri0 - 8, 13, 14, // tri1 - 11, 15, 16 // tri2 -), -gsSPNTriangles_5b( - 10, 11, 17, // tri0 - 9, 10, 18, // tri1 - 9, 19, 20, // tri2 - 9, 21, 8 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 22, 23, 24, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 25, 26, 27, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 28, 29, 30, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&oct_1_v[198], 12, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x180, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&oct_1_v[210], 10, 12), + gsSPNTrianglesInit_5b(7, // tri count + 1, 12, 13, // tri0 + 1, 0, 14, // tri1 + 3, 15, 16 // tri2 + ), + gsSPNTriangles_5b(3, 17, 2, // tri0 + 2, 18, 19, // tri1 + 3, 1, 20, // tri2 + 0, 2, 21 // tri3 + ), + gsSPVertex(&oct_1_v[220], 10, 12), + gsSPNTrianglesInit_5b(7, // tri count + 6, 12, 4, // tri0 + 6, 13, 14, // tri1 + 7, 15, 6 // tri2 + ), + gsSPNTriangles_5b(7, 16, 17, // tri0 + 4, 18, 19, // tri1 + 5, 4, 20, // tri2 + 7, 5, 21 // tri3 + ), + gsSPVertex(&oct_1_v[230], 19, 12), + gsSPNTrianglesInit_5b(7, // tri count + 8, 12, 11, // tri0 + 8, 13, 14, // tri1 + 11, 15, 16 // tri2 + ), + gsSPNTriangles_5b(10, 11, 17, // tri0 + 9, 10, 18, // tri1 + 9, 19, 20, // tri2 + 9, 21, 8 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 22, 23, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPNTrianglesInit_5b(1, // tri count + 25, 26, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPNTrianglesInit_5b(1, // tri count + 28, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_oct_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&oct_1_v[249], 12, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000180, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&oct_1_v[261], 12, 12), -gsSPNTrianglesInit_5b( - 8, // tri count - 1, 13, 12, // tri0 - 9, 14, 15, // tri1 - 9, 16, 17 // tri2 -), -gsSPNTriangles_5b( - 1, 18, 19, // tri0 - 9, 0, 20, // tri1 - 6, 9, 21, // tri2 - 0, 1, 22 // tri3 -), -gsSPNTriangles_5b( - 1, 6, 23, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&oct_1_v[273], 12, 12), -gsSPNTrianglesInit_5b( - 8, // tri count - 3, 2, 12, // tri0 - 3, 13, 14, // tri1 - 8, 15, 16 // tri2 -), -gsSPNTriangles_5b( - 11, 17, 18, // tri0 - 8, 11, 19, // tri1 - 11, 3, 20, // tri2 - 2, 8, 21 // tri3 -), -gsSPNTriangles_5b( - 11, 23, 22, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&oct_1_v[285], 12, 12), -gsSPNTrianglesInit_5b( - 8, // tri count - 7, 5, 12, // tri0 - 4, 13, 14, // tri1 - 5, 4, 15 // tri2 -), -gsSPNTriangles_5b( - 10, 7, 16, // tri0 - 7, 17, 18, // tri1 - 4, 10, 19, // tri2 - 4, 20, 21 // tri3 -), -gsSPNTriangles_5b( - 7, 22, 23, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&oct_1_v[249], 12, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x180, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&oct_1_v[261], 12, 12), + gsSPNTrianglesInit_5b(8, // tri count + 1, 13, 12, // tri0 + 9, 14, 15, // tri1 + 9, 16, 17 // tri2 + ), + gsSPNTriangles_5b(1, 18, 19, // tri0 + 9, 0, 20, // tri1 + 6, 9, 21, // tri2 + 0, 1, 22 // tri3 + ), + gsSPNTriangles_5b(1, 6, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&oct_1_v[273], 12, 12), + gsSPNTrianglesInit_5b(8, // tri count + 3, 2, 12, // tri0 + 3, 13, 14, // tri1 + 8, 15, 16 // tri2 + ), + gsSPNTriangles_5b(11, 17, 18, // tri0 + 8, 11, 19, // tri1 + 11, 3, 20, // tri2 + 2, 8, 21 // tri3 + ), + gsSPNTriangles_5b(11, 23, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&oct_1_v[285], 12, 12), + gsSPNTrianglesInit_5b(8, // tri count + 7, 5, 12, // tri0 + 4, 13, 14, // tri1 + 5, 4, 15 // tri2 + ), + gsSPNTriangles_5b(10, 7, 16, // tri0 + 7, 17, 18, // tri1 + 4, 10, 19, // tri2 + 4, 20, 21 // tri3 + ), + gsSPNTriangles_5b(7, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_oct_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&oct_1_v[297], 6, 0), -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&oct_1_v[303], 13, 6), -gsSPNTrianglesInit_5b( - 7, // tri count - 4, 0, 6, // tri0 - 1, 7, 0, // tri1 - 0, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 1, 2, 10, // tri0 - 3, 11, 12, // tri1 - 1, 13, 14, // tri2 - 3, 5, 15 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 16, 17, 18, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000180, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&oct_1_v[316], 13, 0), -gsSPNTrianglesInit_5b( - 13, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 3, 5, 8, // tri0 - 2, 9, 0, // tri1 - 9, 2, 6, // tri2 - 8, 9, 6 // tri3 -), -gsSPNTriangles_5b( - 7, 3, 8, // tri0 - 0, 10, 11, // tri1 - 11, 1, 0, // tri2 - 5, 4, 12 // tri3 -), -gsSPNTriangles_5b( - 12, 10, 5, // tri0 - 12, 11, 10, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&oct_1_v[297], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&oct_1_v[303], 13, 6), + gsSPNTrianglesInit_5b(7, // tri count + 4, 0, 6, // tri0 + 1, 7, 0, // tri1 + 0, 9, 8 // tri2 + ), + gsSPNTriangles_5b(1, 2, 10, // tri0 + 3, 11, 12, // tri1 + 1, 13, 14, // tri2 + 3, 5, 15 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 16, 17, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x180, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&oct_1_v[316], 13, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(3, 5, 8, // tri0 + 2, 9, 0, // tri1 + 9, 2, 6, // tri2 + 8, 9, 6 // tri3 + ), + gsSPNTriangles_5b(7, 3, 8, // tri0 + 0, 10, 11, // tri1 + 11, 1, 0, // tri2 + 5, 4, 12 // tri3 + ), + gsSPNTriangles_5b(12, 10, 5, // tri0 + 12, 11, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx base_oct_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&oct_1_v[458], 14, 0), -gsSPNTrianglesInit_5b( - 12, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 9, 5, 4, // tri0 - 10, 4, 0, // tri1 - 10, 9, 4, // tri2 - 7, 11, 12 // tri3 -), -gsSPNTriangles_5b( - 8, 7, 13, // tri0 - 2, 10, 0, // tri1 - 2, 1, 6, // tri2 - 6, 8, 2 // tri3 -), -gsSPNTriangles_5b( - 7, 12, 13, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&oct_1_v[458], 14, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 5, 4, // tri0 + 10, 4, 0, // tri1 + 10, 9, 4, // tri2 + 7, 11, 12 // tri3 + ), + gsSPNTriangles_5b(8, 7, 13, // tri0 + 2, 10, 0, // tri1 + 2, 1, 6, // tri2 + 6, 8, 2 // tri3 + ), + gsSPNTriangles_5b(7, 12, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_oct_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -825,4 +728,4 @@ static cKF_Joint_R_c cKF_je_r_oct_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_oct_1 = { 26, 13, cKF_je_r_oct_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_oct_1 = { 26, 13, cKF_je_r_oct_1_tbl }; diff --git a/src/data/npc/model/mdl/ost_1.c b/src/data/npc/model/mdl/ost_1.c index 22d56684..a1ecf115 100644 --- a/src/data/npc/model/mdl/ost_1.c +++ b/src/data/npc/model/mdl/ost_1.c @@ -6,767 +6,679 @@ static Vtx ost_1_v[] = { }; static Gfx head_ost_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&ost_1_v[12], 8, 0), -gsSPMatrix(0x0D000380, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&ost_1_v[20], 21, 8), -gsSPNTrianglesInit_5b( - 4, // tri count - 4, 6, 8, // tri0 - 6, 1, 9, // tri1 - 6, 10, 11 // tri2 -), -gsSPNTriangles_5b( - 6, 12, 13, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 2, 14, // tri0 - 3, 15, 16, // tri1 - 2, 17, 18 // tri2 -), -gsSPNTriangles_5b( - 5, 19, 20, // tri0 - 5, 3, 21, // tri1 - 0, 22, 23, // tri2 - 7, 5, 24 // tri3 -), -gsSPNTriangles_5b( - 2, 7, 25, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 60), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 26, 27, 28, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPVertex(&ost_1_v[41], 21, 0), -gsSPNTrianglesInit_5b( - 1, // tri count - 0, 1, 2, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 3, 4, 5, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 16, // tri count - 6, 7, 8, // tri0 - 8, 7, 9, // tri1 - 9, 10, 8 // tri2 -), -gsSPNTriangles_5b( - 8, 11, 6, // tri0 - 12, 6, 11, // tri1 - 13, 14, 7, // tri2 - 15, 9, 16 // tri3 -), -gsSPNTriangles_5b( - 17, 18, 6, // tri0 - 9, 19, 16, // tri1 - 10, 9, 15, // tri2 - 20, 6, 18 // tri3 -), -gsSPNTriangles_5b( - 17, 6, 12, // tri0 - 9, 7, 14, // tri1 - 20, 7, 6, // tri2 - 19, 9, 14 // tri3 -), -gsSPNTriangles_5b( - 7, 20, 13, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&ost_1_v[62], 31, 0), -gsSPNTrianglesInit_5b( - 14, // tri count - 0, 1, 2, // tri0 - 3, 0, 4, // tri1 - 5, 6, 3 // tri2 -), -gsSPNTriangles_5b( - 1, 3, 6, // tri0 - 7, 2, 1, // tri1 - 8, 4, 2, // tri2 - 9, 8, 2 // tri3 -), -gsSPNTriangles_5b( - 3, 10, 11, // tri0 - 4, 0, 2, // tri1 - 12, 9, 2, // tri2 - 3, 11, 5 // tri3 -), -gsSPNTriangles_5b( - 4, 10, 3, // tri0 - 2, 7, 12, // tri1 - 3, 1, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 22, // tri count - 13, 14, 15, // tri0 - 16, 17, 18, // tri1 - 19, 14, 13 // tri2 -), -gsSPNTriangles_5b( - 18, 17, 20, // tri0 - 21, 22, 23, // tri1 - 17, 16, 22, // tri2 - 23, 22, 16 // tri3 -), -gsSPNTriangles_5b( - 24, 25, 26, // tri0 - 21, 27, 22, // tri1 - 20, 28, 24, // tri2 - 29, 25, 24 // tri3 -), -gsSPNTriangles_5b( - 21, 13, 15, // tri0 - 24, 28, 27, // tri1 - 24, 27, 15, // tri2 - 15, 14, 29 // tri3 -), -gsSPNTriangles_5b( - 29, 24, 15, // tri0 - 15, 27, 21, // tri1 - 24, 26, 20, // tri2 - 26, 25, 30 // tri3 -), -gsSPNTriangles_5b( - 22, 27, 28, // tri0 - 22, 28, 17, // tri1 - 17, 28, 20, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&ost_1_v[93], 10, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 3, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 0, 7, 8, // tri0 - 9, 7, 0, // tri1 - 0, 2, 9, // tri2 - 8, 1, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ost_1_v[12], 8, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*14, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ost_1_v[20], 21, 8), + gsSPNTrianglesInit_5b(4, // tri count + 4, 6, 8, // tri0 + 6, 1, 9, // tri1 + 6, 10, 11 // tri2 + ), + gsSPNTriangles_5b(6, 12, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 2, 14, // tri0 + 3, 15, 16, // tri1 + 2, 17, 18 // tri2 + ), + gsSPNTriangles_5b(5, 19, 20, // tri0 + 5, 3, 21, // tri1 + 0, 22, 23, // tri2 + 7, 5, 24 // tri3 + ), + gsSPNTriangles_5b(2, 7, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 26, 27, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPVertex(&ost_1_v[41], 21, 0), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPNTrianglesInit_5b(1, // tri count + 3, 4, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(16, // tri count + 6, 7, 8, // tri0 + 8, 7, 9, // tri1 + 9, 10, 8 // tri2 + ), + gsSPNTriangles_5b(8, 11, 6, // tri0 + 12, 6, 11, // tri1 + 13, 14, 7, // tri2 + 15, 9, 16 // tri3 + ), + gsSPNTriangles_5b(17, 18, 6, // tri0 + 9, 19, 16, // tri1 + 10, 9, 15, // tri2 + 20, 6, 18 // tri3 + ), + gsSPNTriangles_5b(17, 6, 12, // tri0 + 9, 7, 14, // tri1 + 20, 7, 6, // tri2 + 19, 9, 14 // tri3 + ), + gsSPNTriangles_5b(7, 20, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&ost_1_v[62], 31, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 3 // tri2 + ), + gsSPNTriangles_5b(1, 3, 6, // tri0 + 7, 2, 1, // tri1 + 8, 4, 2, // tri2 + 9, 8, 2 // tri3 + ), + gsSPNTriangles_5b(3, 10, 11, // tri0 + 4, 0, 2, // tri1 + 12, 9, 2, // tri2 + 3, 11, 5 // tri3 + ), + gsSPNTriangles_5b(4, 10, 3, // tri0 + 2, 7, 12, // tri1 + 3, 1, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(22, // tri count + 13, 14, 15, // tri0 + 16, 17, 18, // tri1 + 19, 14, 13 // tri2 + ), + gsSPNTriangles_5b(18, 17, 20, // tri0 + 21, 22, 23, // tri1 + 17, 16, 22, // tri2 + 23, 22, 16 // tri3 + ), + gsSPNTriangles_5b(24, 25, 26, // tri0 + 21, 27, 22, // tri1 + 20, 28, 24, // tri2 + 29, 25, 24 // tri3 + ), + gsSPNTriangles_5b(21, 13, 15, // tri0 + 24, 28, 27, // tri1 + 24, 27, 15, // tri2 + 15, 14, 29 // tri3 + ), + gsSPNTriangles_5b(29, 24, 15, // tri0 + 15, 27, 21, // tri1 + 24, 26, 20, // tri2 + 26, 25, 30 // tri3 + ), + gsSPNTriangles_5b(22, 27, 28, // tri0 + 22, 28, 17, // tri1 + 17, 28, 20, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&ost_1_v[93], 10, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(0, 7, 8, // tri0 + 9, 7, 0, // tri1 + 0, 2, 9, // tri2 + 8, 1, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx mouth_ost_model[] = { -gsSPMatrix(0x0D000380, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&ost_1_v[0], 5, 0), -gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&ost_1_v[5], 7, 5), -gsSPNTrianglesInit_5b( - 5, // tri count - 2, 0, 5, // tri0 - 3, 7, 6, // tri1 - 2, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 0, 3, 10, // tri0 - 4, 1, 11, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*14, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ost_1_v[0], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ost_1_v[5], 7, 5), + gsSPNTrianglesInit_5b(5, // tri count + 2, 0, 5, // tri0 + 3, 7, 6, // tri1 + 2, 9, 8 // tri2 + ), + gsSPNTriangles_5b(0, 3, 10, // tri0 + 4, 1, 11, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_ost_model[] = { -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&ost_1_v[134], 4, 0), -gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&ost_1_v[138], 15, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 1, 3, 6, // tri1 - 3, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 9, 10, // tri0 - 2, 11, 0, // tri1 - 3, 12, 13, // tri2 - 3, 0, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 15, 16, 17, // tri0 - 18, 15, 17, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ost_1_v[134], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ost_1_v[138], 15, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 1, 3, 6, // tri1 + 3, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 9, 10, // tri0 + 2, 11, 0, // tri1 + 3, 12, 13, // tri2 + 3, 0, 14 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 15, 16, 17, // tri0 + 18, 15, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_ost_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&ost_1_v[153], 3, 0), -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&ost_1_v[156], 9, 3), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 3, // tri0 - 2, 0, 4, // tri1 - 0, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 1, 7, 8, // tri0 - 1, 2, 9, // tri1 - 2, 10, 11, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ost_1_v[153], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ost_1_v[156], 9, 3), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 3, // tri0 + 2, 0, 4, // tri1 + 0, 5, 6 // tri2 + ), + gsSPNTriangles_5b(1, 7, 8, // tri0 + 1, 2, 9, // tri1 + 2, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_ost_model[] = { -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&ost_1_v[103], 4, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&ost_1_v[107], 15, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 3, 1, 6, // tri1 - 3, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 0, 9, 10, // tri0 - 0, 11, 2, // tri1 - 3, 12, 13, // tri2 - 0, 3, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 15, 16, 17, // tri0 - 15, 17, 18, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ost_1_v[103], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ost_1_v[107], 15, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 3, 1, 6, // tri1 + 3, 7, 8 // tri2 + ), + gsSPNTriangles_5b(0, 9, 10, // tri0 + 0, 11, 2, // tri1 + 3, 12, 13, // tri2 + 0, 3, 14 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 15, 16, 17, // tri0 + 15, 17, 18, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_ost_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&ost_1_v[122], 3, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&ost_1_v[125], 9, 3), -gsSPNTrianglesInit_5b( - 6, // tri count - 1, 0, 3, // tri0 - 0, 2, 4, // tri1 - 0, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 1, 7, 8, // tri0 - 2, 1, 9, // tri1 - 2, 10, 11, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ost_1_v[122], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ost_1_v[125], 9, 3), + gsSPNTrianglesInit_5b(6, // tri count + 1, 0, 3, // tri0 + 0, 2, 4, // tri1 + 0, 5, 6 // tri2 + ), + gsSPNTriangles_5b(1, 7, 8, // tri0 + 2, 1, 9, // tri1 + 2, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_ost_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&ost_1_v[165], 9, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&ost_1_v[174], 20, 9), -gsSPNTrianglesInit_5b( - 14, // tri count - 1, 10, 9, // tri0 - 0, 11, 12, // tri1 - 0, 8, 13 // tri2 -), -gsSPNTriangles_5b( - 8, 2, 14, // tri0 - 1, 0, 15, // tri1 - 3, 1, 16, // tri2 - 7, 17, 18 // tri3 -), -gsSPNTriangles_5b( - 8, 19, 20, // tri0 - 2, 7, 21, // tri1 - 7, 6, 22, // tri2 - 4, 23, 5 // tri3 -), -gsSPNTriangles_5b( - 6, 5, 24, // tri0 - 5, 25, 26, // tri1 - 6, 28, 27, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&ost_1_v[194], 25, 0), -gsSPNTrianglesInit_5b( - 28, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 2, 6, 0 // tri2 -), -gsSPNTriangles_5b( - 5, 7, 3, // tri0 - 5, 8, 9, // tri1 - 5, 9, 10, // tri2 - 11, 0, 12 // tri3 -), -gsSPNTriangles_5b( - 11, 12, 13, // tri0 - 8, 14, 15, // tri1 - 8, 15, 9, // tri2 - 14, 11, 13 // tri3 -), -gsSPNTriangles_5b( - 14, 13, 15, // tri0 - 7, 5, 10, // tri1 - 7, 10, 16, // tri2 - 0, 6, 17 // tri3 -), -gsSPNTriangles_5b( - 0, 17, 12, // tri0 - 18, 19, 11, // tri1 - 18, 14, 8, // tri2 - 1, 20, 2 // tri3 -), -gsSPNTriangles_5b( - 3, 21, 4, // tri0 - 19, 1, 22, // tri1 - 23, 24, 4, // tri2 - 8, 24, 23 // tri3 -), -gsSPNTriangles_5b( - 4, 24, 5, // tri0 - 0, 22, 1, // tri1 - 22, 11, 19, // tri2 - 8, 23, 18 // tri3 -), -gsSPNTriangles_5b( - 11, 14, 18, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ost_1_v[165], 9, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ost_1_v[174], 20, 9), + gsSPNTrianglesInit_5b(14, // tri count + 1, 10, 9, // tri0 + 0, 11, 12, // tri1 + 0, 8, 13 // tri2 + ), + gsSPNTriangles_5b(8, 2, 14, // tri0 + 1, 0, 15, // tri1 + 3, 1, 16, // tri2 + 7, 17, 18 // tri3 + ), + gsSPNTriangles_5b(8, 19, 20, // tri0 + 2, 7, 21, // tri1 + 7, 6, 22, // tri2 + 4, 23, 5 // tri3 + ), + gsSPNTriangles_5b(6, 5, 24, // tri0 + 5, 25, 26, // tri1 + 6, 28, 27, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&ost_1_v[194], 25, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 6, 0 // tri2 + ), + gsSPNTriangles_5b(5, 7, 3, // tri0 + 5, 8, 9, // tri1 + 5, 9, 10, // tri2 + 11, 0, 12 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 8, 14, 15, // tri1 + 8, 15, 9, // tri2 + 14, 11, 13 // tri3 + ), + gsSPNTriangles_5b(14, 13, 15, // tri0 + 7, 5, 10, // tri1 + 7, 10, 16, // tri2 + 0, 6, 17 // tri3 + ), + gsSPNTriangles_5b(0, 17, 12, // tri0 + 18, 19, 11, // tri1 + 18, 14, 8, // tri2 + 1, 20, 2 // tri3 + ), + gsSPNTriangles_5b(3, 21, 4, // tri0 + 19, 1, 22, // tri1 + 23, 24, 4, // tri2 + 8, 24, 23 // tri3 + ), + gsSPNTriangles_5b(4, 24, 5, // tri0 + 0, 22, 1, // tri1 + 22, 11, 19, // tri2 + 8, 23, 18 // tri3 + ), + gsSPNTriangles_5b(11, 14, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail_ost_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&ost_1_v[219], 4, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&ost_1_v[223], 20, 4), -gsSPNTrianglesInit_5b( - 3, // tri count - 0, 4, 5, // tri0 - 1, 6, 7, // tri1 - 1, 8, 9 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 2, // tri count - 0, 3, 10, // tri0 - 2, 0, 11, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 0, 12, 13, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 6, // tri count - 3, 1, 14, // tri0 - 1, 15, 16, // tri1 - 0, 17, 18 // tri2 -), -gsSPNTriangles_5b( - 1, 2, 19, // tri0 - 1, 20, 21, // tri1 - 0, 22, 23, // tri2 - 0, 0, 0 // tri3 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&ost_1_v[243], 21, 0), -gsSPNTrianglesInit_5b( - 14, // tri count - 0, 1, 2, // tri0 - 2, 1, 3, // tri1 - 2, 4, 0 // tri2 -), -gsSPNTriangles_5b( - 3, 5, 6, // tri0 - 7, 8, 4, // tri1 - 2, 9, 7, // tri2 - 10, 7, 9 // tri3 -), -gsSPNTriangles_5b( - 10, 8, 7, // tri0 - 6, 11, 9, // tri1 - 1, 5, 3, // tri2 - 3, 9, 2 // tri3 -), -gsSPNTriangles_5b( - 7, 4, 2, // tri0 - 9, 11, 10, // tri1 - 9, 3, 6, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 8, // tri count - 12, 13, 14, // tri0 - 14, 13, 15, // tri1 - 14, 16, 12 // tri2 -), -gsSPNTriangles_5b( - 17, 18, 16, // tri0 - 14, 19, 17, // tri1 - 13, 20, 15, // tri2 - 15, 19, 14 // tri3 -), -gsSPNTriangles_5b( - 17, 16, 14, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ost_1_v[219], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ost_1_v[223], 20, 4), + gsSPNTrianglesInit_5b(3, // tri count + 0, 4, 5, // tri0 + 1, 6, 7, // tri1 + 1, 8, 9 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 0, 3, 10, // tri0 + 2, 0, 11, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 0, 12, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(6, // tri count + 3, 1, 14, // tri0 + 1, 15, 16, // tri1 + 0, 17, 18 // tri2 + ), + gsSPNTriangles_5b(1, 2, 19, // tri0 + 1, 20, 21, // tri1 + 0, 22, 23, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ost_1_v[243], 21, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(3, 5, 6, // tri0 + 7, 8, 4, // tri1 + 2, 9, 7, // tri2 + 10, 7, 9 // tri3 + ), + gsSPNTriangles_5b(10, 8, 7, // tri0 + 6, 11, 9, // tri1 + 1, 5, 3, // tri2 + 3, 9, 2 // tri3 + ), + gsSPNTriangles_5b(7, 4, 2, // tri0 + 9, 11, 10, // tri1 + 9, 3, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(8, // tri count + 12, 13, 14, // tri0 + 14, 13, 15, // tri1 + 14, 16, 12 // tri2 + ), + gsSPNTriangles_5b(17, 18, 16, // tri0 + 14, 19, 17, // tri1 + 13, 20, 15, // tri2 + 15, 19, 14 // tri3 + ), + gsSPNTriangles_5b(17, 16, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot3_ost_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&ost_1_v[314], 4, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0004C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&ost_1_v[318], 20, 4), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 3, 4, // tri0 - 1, 0, 5, // tri1 - 3, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 2, 8, 9, // tri0 - 2, 10, 3, // tri1 - 1, 11, 12, // tri2 - 0, 0, 0 // tri3 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 6, // tri count - 13, 14, 15, // tri0 - 13, 16, 14, // tri1 - 13, 17, 18 // tri2 -), -gsSPNTriangles_5b( - 13, 19, 17, // tri0 - 15, 19, 13, // tri1 - 18, 20, 13, // tri2 - 0, 0, 0 // tri3 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 21, 22, 23, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ost_1_v[314], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x4C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ost_1_v[318], 20, 4), + gsSPNTrianglesInit_5b(6, // tri count + 0, 3, 4, // tri0 + 1, 0, 5, // tri1 + 3, 6, 7 // tri2 + ), + gsSPNTriangles_5b(2, 8, 9, // tri0 + 2, 10, 3, // tri1 + 1, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(6, // tri count + 13, 14, 15, // tri0 + 13, 16, 14, // tri1 + 13, 17, 18 // tri2 + ), + gsSPNTriangles_5b(13, 19, 17, // tri0 + 15, 19, 13, // tri1 + 18, 20, 13, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 21, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_ost_model[] = { -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&ost_1_v[338], 4, 0), -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0004C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&ost_1_v[342], 14, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 1, 6, 7, // tri1 - 3, 0, 8 // tri2 -), -gsSPNTriangles_5b( - 0, 2, 9, // tri0 - 2, 10, 11, // tri1 - 1, 3, 12, // tri2 - 3, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 15, 16, 17, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ost_1_v[338], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x4C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ost_1_v[342], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 1, 6, 7, // tri1 + 3, 0, 8 // tri2 + ), + gsSPNTriangles_5b(0, 2, 9, // tri0 + 2, 10, 11, // tri1 + 1, 3, 12, // tri2 + 3, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_ost_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0004C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&ost_1_v[356], 8, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 2, // tri0 - 1, 0, 3, // tri1 - 2, 4, 0 // tri2 -), -gsSPNTriangles_5b( - 5, 6, 4, // tri0 - 5, 4, 2, // tri1 - 3, 7, 1, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x4C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ost_1_v[356], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 1, 0, 3, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(5, 6, 4, // tri0 + 5, 4, 2, // tri1 + 3, 7, 1, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot3_ost_model[] = { -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&ost_1_v[264], 4, 0), -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0004C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&ost_1_v[268], 20, 4), -gsSPNTrianglesInit_5b( - 6, // tri count - 3, 0, 4, // tri0 - 0, 1, 5, // tri1 - 3, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 3, 8, 9, // tri0 - 3, 10, 2, // tri1 - 1, 11, 12, // tri2 - 0, 0, 0 // tri3 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 6, // tri count - 13, 14, 15, // tri0 - 14, 16, 15, // tri1 - 17, 18, 15 // tri2 -), -gsSPNTriangles_5b( - 18, 19, 15, // tri0 - 15, 19, 13, // tri1 - 15, 20, 17, // tri2 - 0, 0, 0 // tri3 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 21, 22, 23, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ost_1_v[264], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x4C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ost_1_v[268], 20, 4), + gsSPNTrianglesInit_5b(6, // tri count + 3, 0, 4, // tri0 + 0, 1, 5, // tri1 + 3, 6, 7 // tri2 + ), + gsSPNTriangles_5b(3, 8, 9, // tri0 + 3, 10, 2, // tri1 + 1, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(6, // tri count + 13, 14, 15, // tri0 + 14, 16, 15, // tri1 + 17, 18, 15 // tri2 + ), + gsSPNTriangles_5b(18, 19, 15, // tri0 + 15, 19, 13, // tri1 + 15, 20, 17, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 21, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_ost_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&ost_1_v[288], 4, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0004C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&ost_1_v[292], 14, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 1, 6, 7, // tri1 - 0, 3, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 0, 9, // tri0 - 2, 10, 11, // tri1 - 3, 1, 12, // tri2 - 3, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 15, 16, 17, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ost_1_v[288], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x4C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ost_1_v[292], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 1, 6, 7, // tri1 + 0, 3, 8 // tri2 + ), + gsSPNTriangles_5b(2, 0, 9, // tri0 + 2, 10, 11, // tri1 + 3, 1, 12, // tri2 + 3, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_ost_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0004C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&ost_1_v[306], 8, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 2, // tri0 - 3, 2, 1, // tri1 - 2, 4, 0 // tri2 -), -gsSPNTriangles_5b( - 0, 4, 5, // tri0 - 0, 5, 6, // tri1 - 1, 7, 3, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x4C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ost_1_v[306], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(0, 4, 5, // tri0 + 0, 5, 6, // tri1 + 1, 7, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx base_ost_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&ost_1_v[364], 17, 0), -gsSPNTrianglesInit_5b( - 20, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 5 // tri2 -), -gsSPNTriangles_5b( - 4, 8, 9, // tri0 - 0, 9, 10, // tri1 - 9, 8, 11, // tri2 - 12, 10, 11 // tri3 -), -gsSPNTriangles_5b( - 2, 5, 9, // tri0 - 4, 3, 13, // tri1 - 4, 13, 14, // tri2 - 14, 13, 15 // tri3 -), -gsSPNTriangles_5b( - 4, 9, 5, // tri0 - 11, 10, 9, // tri1 - 14, 8, 4, // tri2 - 2, 1, 6 // tri3 -), -gsSPNTriangles_5b( - 6, 5, 2, // tri0 - 6, 1, 16, // tri1 - 16, 7, 6, // tri2 - 2, 9, 0 // tri3 -), -gsSPNTriangles_5b( - 5, 7, 3, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ost_1_v[364], 17, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 5 // tri2 + ), + gsSPNTriangles_5b(4, 8, 9, // tri0 + 0, 9, 10, // tri1 + 9, 8, 11, // tri2 + 12, 10, 11 // tri3 + ), + gsSPNTriangles_5b(2, 5, 9, // tri0 + 4, 3, 13, // tri1 + 4, 13, 14, // tri2 + 14, 13, 15 // tri3 + ), + gsSPNTriangles_5b(4, 9, 5, // tri0 + 11, 10, 9, // tri1 + 14, 8, 4, // tri2 + 2, 1, 6 // tri3 + ), + gsSPNTriangles_5b(6, 5, 2, // tri0 + 6, 1, 16, // tri1 + 16, 7, 6, // tri2 + 2, 9, 0 // tri3 + ), + gsSPNTriangles_5b(5, 7, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_ost_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -798,4 +710,4 @@ static cKF_Joint_R_c cKF_je_r_ost_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_ost_1 = { 26, 15, cKF_je_r_ost_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_ost_1 = { 26, 15, cKF_je_r_ost_1_tbl }; diff --git a/src/data/npc/model/mdl/owl_1.c b/src/data/npc/model/mdl/owl_1.c index b135c0f7..0b5eeb88 100644 --- a/src/data/npc/model/mdl/owl_1.c +++ b/src/data/npc/model/mdl/owl_1.c @@ -6,832 +6,736 @@ static Vtx owl_1_v[] = { }; static Gfx head_owl_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&owl_1_v[14], 9, 0), -gsSPMatrix(0x0D000380, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&owl_1_v[23], 21, 9), -gsSPNTrianglesInit_5b( - 10, // tri count - 0, 1, 9, // tri0 - 1, 11, 10, // tri1 - 4, 2, 12 // tri2 -), -gsSPNTriangles_5b( - 2, 14, 13, // tri0 - 7, 0, 15, // tri1 - 0, 17, 16, // tri2 - 1, 4, 18 // tri3 -), -gsSPNTriangles_5b( - 4, 20, 19, // tri0 - 5, 7, 21, // tri1 - 7, 23, 22, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 32, 8, 15, GX_MIRROR, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 252, 28), -gsDPSetPrimColor(0, 128, 255, 250, 255, 255), -gsSPNTrianglesInit_5b( - 4, // tri count - 3, 8, 24, // tri0 - 8, 6, 25, // tri1 - 6, 27, 26 // tri2 -), -gsSPNTriangles_5b( - 8, 29, 28, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&owl_1_v[44], 30, 0), -gsSPNTrianglesInit_5b( - 2, // tri count - 0, 1, 2, // tri0 - 2, 3, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 4, 5, 6, // tri0 - 6, 7, 4, // tri1 - 0, 0, 0 // tri2 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 252, 60), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 24, // tri count - 8, 9, 10, // tri0 - 11, 12, 13, // tri1 - 11, 13, 14 // tri2 -), -gsSPNTriangles_5b( - 15, 14, 13, // tri0 - 12, 16, 17, // tri1 - 12, 17, 13, // tri2 - 18, 19, 20 // tri3 -), -gsSPNTriangles_5b( - 17, 21, 8, // tri0 - 12, 11, 22, // tri1 - 20, 23, 16, // tri2 - 24, 25, 23 // tri3 -), -gsSPNTriangles_5b( - 26, 9, 8, // tri0 - 16, 12, 20, // tri1 - 8, 13, 17, // tri2 - 21, 27, 28 // tri3 -), -gsSPNTriangles_5b( - 20, 19, 29, // tri0 - 20, 29, 24, // tri1 - 28, 26, 8, // tri2 - 28, 8, 21 // tri3 -), -gsSPNTriangles_5b( - 23, 20, 24, // tri0 - 10, 13, 8, // tri1 - 20, 12, 18, // tri2 - 22, 18, 12 // tri3 -), -gsSPNTriangles_5b( - 13, 10, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&owl_1_v[74], 32, 0), -gsSPNTrianglesInit_5b( - 46, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 4, 6, 7, // tri0 - 8, 9, 10, // tri1 - 11, 2, 12, // tri2 - 8, 6, 13 // tri3 -), -gsSPNTriangles_5b( - 14, 15, 16, // tri0 - 17, 18, 16, // tri1 - 2, 1, 19, // tri2 - 19, 1, 7 // tri3 -), -gsSPNTriangles_5b( - 19, 7, 20, // tri0 - 15, 14, 21, // tri1 - 22, 23, 14, // tri2 - 19, 24, 17 // tri3 -), -gsSPNTriangles_5b( - 20, 7, 6, // tri0 - 25, 26, 12, // tri1 - 14, 18, 22, // tri2 - 20, 8, 27 // tri3 -), -gsSPNTriangles_5b( - 18, 17, 24, // tri0 - 24, 19, 20, // tri1 - 24, 20, 28, // tri2 - 23, 22, 28 // tri3 -), -gsSPNTriangles_5b( - 22, 24, 28, // tri0 - 24, 22, 18, // tri1 - 28, 27, 23, // tri2 - 29, 21, 14 // tri3 -), -gsSPNTriangles_5b( - 16, 18, 14, // tri0 - 14, 23, 29, // tri1 - 27, 10, 29, // tri2 - 13, 9, 8 // tri3 -), -gsSPNTriangles_5b( - 12, 26, 11, // tri0 - 6, 8, 20, // tri1 - 19, 12, 2, // tri2 - 29, 23, 27 // tri3 -), -gsSPNTriangles_5b( - 16, 25, 17, // tri0 - 12, 17, 25, // tri1 - 17, 12, 19, // tri2 - 27, 28, 20 // tri3 -), -gsSPNTriangles_5b( - 10, 27, 8, // tri0 - 4, 7, 1, // tri1 - 4, 1, 0, // tri2 - 3, 2, 11 // tri3 -), -gsSPNTriangles_5b( - 11, 30, 3, // tri0 - 13, 6, 5, // tri1 - 5, 31, 13, // tri2 - 0, 0, 0 // tri3 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&owl_1_v[106], 17, 0), -gsSPNTrianglesInit_5b( - 1, // tri count - 0, 1, 2, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 3, // tri count - 3, 4, 5, // tri0 - 5, 6, 3, // tri1 - 3, 7, 4 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 32, 8, 15, GX_MIRROR, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 252, 28), -gsDPSetPrimColor(0, 128, 255, 250, 255, 255), -gsSPNTrianglesInit_5b( - 7, // tri count - 8, 9, 10, // tri0 - 11, 12, 13, // tri1 - 14, 15, 9 // tri2 -), -gsSPNTriangles_5b( - 14, 9, 8, // tri0 - 11, 13, 14, // tri1 - 16, 12, 11, // tri2 - 14, 13, 15 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&owl_1_v[14], 9, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*14, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&owl_1_v[23], 21, 9), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 9, // tri0 + 1, 11, 10, // tri1 + 4, 2, 12 // tri2 + ), + gsSPNTriangles_5b(2, 14, 13, // tri0 + 7, 0, 15, // tri1 + 0, 17, 16, // tri2 + 1, 4, 18 // tri3 + ), + gsSPNTriangles_5b(4, 20, 19, // tri0 + 5, 7, 21, // tri1 + 7, 23, 22, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 32, 8, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 28), + gsDPSetPrimColor(0, 128, 255, 250, 255, 255), + gsSPNTrianglesInit_5b(4, // tri count + 3, 8, 24, // tri0 + 8, 6, 25, // tri1 + 6, 27, 26 // tri2 + ), + gsSPNTriangles_5b(8, 29, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&owl_1_v[44], 30, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPNTrianglesInit_5b(2, // tri count + 4, 5, 6, // tri0 + 6, 7, 4, // tri1 + 0, 0, 0 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 60), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(24, // tri count + 8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 11, 13, 14 // tri2 + ), + gsSPNTriangles_5b(15, 14, 13, // tri0 + 12, 16, 17, // tri1 + 12, 17, 13, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(17, 21, 8, // tri0 + 12, 11, 22, // tri1 + 20, 23, 16, // tri2 + 24, 25, 23 // tri3 + ), + gsSPNTriangles_5b(26, 9, 8, // tri0 + 16, 12, 20, // tri1 + 8, 13, 17, // tri2 + 21, 27, 28 // tri3 + ), + gsSPNTriangles_5b(20, 19, 29, // tri0 + 20, 29, 24, // tri1 + 28, 26, 8, // tri2 + 28, 8, 21 // tri3 + ), + gsSPNTriangles_5b(23, 20, 24, // tri0 + 10, 13, 8, // tri1 + 20, 12, 18, // tri2 + 22, 18, 12 // tri3 + ), + gsSPNTriangles_5b(13, 10, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&owl_1_v[74], 32, 0), + gsSPNTrianglesInit_5b(46, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 11, 2, 12, // tri2 + 8, 6, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 17, 18, 16, // tri1 + 2, 1, 19, // tri2 + 19, 1, 7 // tri3 + ), + gsSPNTriangles_5b(19, 7, 20, // tri0 + 15, 14, 21, // tri1 + 22, 23, 14, // tri2 + 19, 24, 17 // tri3 + ), + gsSPNTriangles_5b(20, 7, 6, // tri0 + 25, 26, 12, // tri1 + 14, 18, 22, // tri2 + 20, 8, 27 // tri3 + ), + gsSPNTriangles_5b(18, 17, 24, // tri0 + 24, 19, 20, // tri1 + 24, 20, 28, // tri2 + 23, 22, 28 // tri3 + ), + gsSPNTriangles_5b(22, 24, 28, // tri0 + 24, 22, 18, // tri1 + 28, 27, 23, // tri2 + 29, 21, 14 // tri3 + ), + gsSPNTriangles_5b(16, 18, 14, // tri0 + 14, 23, 29, // tri1 + 27, 10, 29, // tri2 + 13, 9, 8 // tri3 + ), + gsSPNTriangles_5b(12, 26, 11, // tri0 + 6, 8, 20, // tri1 + 19, 12, 2, // tri2 + 29, 23, 27 // tri3 + ), + gsSPNTriangles_5b(16, 25, 17, // tri0 + 12, 17, 25, // tri1 + 17, 12, 19, // tri2 + 27, 28, 20 // tri3 + ), + gsSPNTriangles_5b(10, 27, 8, // tri0 + 4, 7, 1, // tri1 + 4, 1, 0, // tri2 + 3, 2, 11 // tri3 + ), + gsSPNTriangles_5b(11, 30, 3, // tri0 + 13, 6, 5, // tri1 + 5, 31, 13, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&owl_1_v[106], 17, 0), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 3, 4, 5, // tri0 + 5, 6, 3, // tri1 + 3, 7, 4 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 32, 8, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 28), + gsDPSetPrimColor(0, 128, 255, 250, 255, 255), + gsSPNTrianglesInit_5b(7, // tri count + 8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 14, 15, 9 // tri2 + ), + gsSPNTriangles_5b(14, 9, 8, // tri0 + 11, 13, 14, // tri1 + 16, 12, 11, // tri2 + 14, 13, 15 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx mouth_owl_model[] = { -gsSPMatrix(0x0D000380, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&owl_1_v[0], 6, 0), -gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&owl_1_v[6], 8, 6), -gsSPNTrianglesInit_5b( - 1, // tri count - 2, 3, 6, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 5, // tri count - 1, 5, 7, // tri0 - 4, 0, 8, // tri1 - 0, 1, 9 // tri2 -), -gsSPNTriangles_5b( - 1, 10, 11, // tri0 - 0, 12, 13, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*14, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&owl_1_v[0], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&owl_1_v[6], 8, 6), + gsSPNTrianglesInit_5b(1, // tri count + 2, 3, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(5, // tri count + 1, 5, 7, // tri0 + 4, 0, 8, // tri1 + 0, 1, 9 // tri2 + ), + gsSPNTriangles_5b(1, 10, 11, // tri0 + 0, 12, 13, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_owl_model[] = { -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&owl_1_v[174], 6, 0), -gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&owl_1_v[180], 25, 6), -gsSPNTrianglesInit_5b( - 9, // tri count - 4, 6, 7, // tri0 - 0, 2, 8, // tri1 - 5, 4, 9 // tri2 -), -gsSPNTriangles_5b( - 3, 5, 10, // tri0 - 0, 11, 12, // tri1 - 4, 1, 13, // tri2 - 0, 14, 15 // tri3 -), -gsSPNTriangles_5b( - 3, 16, 17, // tri0 - 4, 18, 19, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 20, 21, 22, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 3, // tri count - 23, 24, 25, // tri0 - 26, 27, 23, // tri1 - 23, 25, 26 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 28, 29, 30, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPVertex(&owl_1_v[205], 6, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 0, 1, 2, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 3, 4, 5, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&owl_1_v[174], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&owl_1_v[180], 25, 6), + gsSPNTrianglesInit_5b(9, // tri count + 4, 6, 7, // tri0 + 0, 2, 8, // tri1 + 5, 4, 9 // tri2 + ), + gsSPNTriangles_5b(3, 5, 10, // tri0 + 0, 11, 12, // tri1 + 4, 1, 13, // tri2 + 0, 14, 15 // tri3 + ), + gsSPNTriangles_5b(3, 16, 17, // tri0 + 4, 18, 19, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 20, 21, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(3, // tri count + 23, 24, 25, // tri0 + 26, 27, 23, // tri1 + 23, 25, 26 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 28, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPVertex(&owl_1_v[205], 6, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 3, 4, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_owl_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&owl_1_v[211], 3, 0), -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&owl_1_v[214], 11, 3), -gsSPNTrianglesInit_5b( - 7, // tri count - 1, 2, 3, // tri0 - 0, 4, 5, // tri1 - 2, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 8, 9, // tri0 - 2, 10, 11, // tri1 - 0, 1, 12, // tri2 - 2, 0, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&owl_1_v[211], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&owl_1_v[214], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 1, 2, 3, // tri0 + 0, 4, 5, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 2, 10, 11, // tri1 + 0, 1, 12, // tri2 + 2, 0, 13 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_owl_model[] = { -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&owl_1_v[123], 6, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&owl_1_v[129], 25, 6), -gsSPNTrianglesInit_5b( - 9, // tri count - 4, 6, 7, // tri0 - 2, 0, 8, // tri1 - 4, 5, 9 // tri2 -), -gsSPNTriangles_5b( - 5, 3, 10, // tri0 - 0, 11, 12, // tri1 - 1, 4, 13, // tri2 - 0, 14, 15 // tri3 -), -gsSPNTriangles_5b( - 3, 16, 17, // tri0 - 4, 18, 19, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 20, 21, 22, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 3, // tri count - 23, 24, 25, // tri0 - 25, 26, 27, // tri1 - 27, 23, 25 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 28, 29, 30, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPVertex(&owl_1_v[154], 6, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 0, 1, 2, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 3, 4, 5, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&owl_1_v[123], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&owl_1_v[129], 25, 6), + gsSPNTrianglesInit_5b(9, // tri count + 4, 6, 7, // tri0 + 2, 0, 8, // tri1 + 4, 5, 9 // tri2 + ), + gsSPNTriangles_5b(5, 3, 10, // tri0 + 0, 11, 12, // tri1 + 1, 4, 13, // tri2 + 0, 14, 15 // tri3 + ), + gsSPNTriangles_5b(3, 16, 17, // tri0 + 4, 18, 19, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 20, 21, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(3, // tri count + 23, 24, 25, // tri0 + 25, 26, 27, // tri1 + 27, 23, 25 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 28, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPVertex(&owl_1_v[154], 6, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 3, 4, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_owl_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&owl_1_v[160], 3, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&owl_1_v[163], 11, 3), -gsSPNTrianglesInit_5b( - 7, // tri count - 2, 1, 3, // tri0 - 0, 4, 5, // tri1 - 2, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 8, 9, // tri0 - 2, 10, 11, // tri1 - 1, 0, 12, // tri2 - 0, 2, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&owl_1_v[160], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&owl_1_v[163], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 2, 1, 3, // tri0 + 0, 4, 5, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 2, 10, 11, // tri1 + 1, 0, 12, // tri2 + 0, 2, 13 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_owl_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&owl_1_v[225], 9, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 252, 255, 255), -gsSPVertex(&owl_1_v[234], 23, 9), -gsSPNTrianglesInit_5b( - 14, // tri count - 3, 8, 9, // tri0 - 7, 2, 10, // tri1 - 7, 11, 12 // tri2 -), -gsSPNTriangles_5b( - 6, 13, 14, // tri0 - 4, 15, 16, // tri1 - 2, 5, 17, // tri2 - 6, 18, 19 // tri3 -), -gsSPNTriangles_5b( - 0, 20, 21, // tri0 - 1, 22, 23, // tri1 - 8, 24, 25, // tri2 - 0, 7, 26 // tri3 -), -gsSPNTriangles_5b( - 1, 6, 27, // tri0 - 2, 28, 29, // tri1 - 3, 30, 31, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&owl_1_v[257], 5, 9), -gsSPNTrianglesInit_5b( - 4, // tri count - 4, 3, 9, // tri0 - 5, 10, 11, // tri1 - 8, 1, 12 // tri2 -), -gsSPNTriangles_5b( - 6, 0, 13, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&owl_1_v[262], 21, 0), -gsSPNTrianglesInit_5b( - 19, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 0, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 8, 9, 10, // tri0 - 11, 8, 10, // tri1 - 10, 9, 12, // tri2 - 13, 12, 14 // tri3 -), -gsSPNTriangles_5b( - 10, 12, 13, // tri0 - 2, 15, 0, // tri1 - 16, 8, 17, // tri2 - 14, 12, 15 // tri3 -), -gsSPNTriangles_5b( - 18, 17, 11, // tri0 - 13, 14, 19, // tri1 - 1, 0, 7, // tri2 - 20, 5, 4 // tri3 -), -gsSPNTriangles_5b( - 5, 16, 3, // tri0 - 17, 3, 16, // tri1 - 15, 2, 14, // tri2 - 17, 8, 11 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&owl_1_v[225], 9, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 252, 255, 255), + gsSPVertex(&owl_1_v[234], 23, 9), + gsSPNTrianglesInit_5b(14, // tri count + 3, 8, 9, // tri0 + 7, 2, 10, // tri1 + 7, 11, 12 // tri2 + ), + gsSPNTriangles_5b(6, 13, 14, // tri0 + 4, 15, 16, // tri1 + 2, 5, 17, // tri2 + 6, 18, 19 // tri3 + ), + gsSPNTriangles_5b(0, 20, 21, // tri0 + 1, 22, 23, // tri1 + 8, 24, 25, // tri2 + 0, 7, 26 // tri3 + ), + gsSPNTriangles_5b(1, 6, 27, // tri0 + 2, 28, 29, // tri1 + 3, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&owl_1_v[257], 5, 9), + gsSPNTrianglesInit_5b(4, // tri count + 4, 3, 9, // tri0 + 5, 10, 11, // tri1 + 8, 1, 12 // tri2 + ), + gsSPNTriangles_5b(6, 0, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&owl_1_v[262], 21, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 11, 8, 10, // tri1 + 10, 9, 12, // tri2 + 13, 12, 14 // tri3 + ), + gsSPNTriangles_5b(10, 12, 13, // tri0 + 2, 15, 0, // tri1 + 16, 8, 17, // tri2 + 14, 12, 15 // tri3 + ), + gsSPNTriangles_5b(18, 17, 11, // tri0 + 13, 14, 19, // tri1 + 1, 0, 7, // tri2 + 20, 5, 4 // tri3 + ), + gsSPNTriangles_5b(5, 16, 3, // tri0 + 17, 3, 16, // tri1 + 15, 2, 14, // tri2 + 17, 8, 11 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail1_owl_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&owl_1_v[283], 5, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&owl_1_v[288], 16, 5), -gsSPNTrianglesInit_5b( - 3, // tri count - 2, 4, 5, // tri0 - 4, 3, 6, // tri1 - 3, 1, 7 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 2, // tri count - 2, 8, 9, // tri0 - 1, 10, 11, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 2, // tri count - 1, 0, 12, // tri0 - 0, 2, 13, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 6, // tri count - 14, 15, 16, // tri0 - 16, 15, 17, // tri1 - 16, 18, 14 // tri2 -), -gsSPNTriangles_5b( - 16, 19, 20, // tri0 - 17, 19, 16, // tri1 - 20, 18, 16, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&owl_1_v[283], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&owl_1_v[288], 16, 5), + gsSPNTrianglesInit_5b(3, // tri count + 2, 4, 5, // tri0 + 4, 3, 6, // tri1 + 3, 1, 7 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 2, 8, 9, // tri0 + 1, 10, 11, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 1, 0, 12, // tri0 + 0, 2, 13, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(6, // tri count + 14, 15, 16, // tri0 + 16, 15, 17, // tri1 + 16, 18, 14 // tri2 + ), + gsSPNTriangles_5b(16, 19, 20, // tri0 + 17, 19, 16, // tri1 + 20, 18, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot3_owl_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&owl_1_v[354], 4, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0005C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&owl_1_v[358], 20, 4), -gsSPNTrianglesInit_5b( - 6, // tri count - 1, 4, 5, // tri0 - 1, 6, 3, // tri1 - 3, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 0, 9, // tri0 - 0, 3, 10, // tri1 - 2, 11, 12, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 1, // tri count - 13, 14, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 6, // tri count - 16, 17, 18, // tri0 - 18, 17, 19, // tri1 - 18, 19, 20 // tri2 -), -gsSPNTriangles_5b( - 18, 21, 22, // tri0 - 18, 22, 16, // tri1 - 20, 23, 18, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&owl_1_v[354], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x5C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&owl_1_v[358], 20, 4), + gsSPNTrianglesInit_5b(6, // tri count + 1, 4, 5, // tri0 + 1, 6, 3, // tri1 + 3, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 0, 9, // tri0 + 0, 3, 10, // tri1 + 2, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(1, // tri count + 13, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(6, // tri count + 16, 17, 18, // tri0 + 18, 17, 19, // tri1 + 18, 19, 20 // tri2 + ), + gsSPNTriangles_5b(18, 21, 22, // tri0 + 18, 22, 16, // tri1 + 20, 23, 18, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_owl_model[] = { -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&owl_1_v[378], 4, 0), -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0005C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&owl_1_v[382], 14, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 1, 3, 6, // tri1 - 2, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 0, 2, 9, // tri0 - 3, 0, 10, // tri1 - 3, 11, 12, // tri2 - 1, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 15, 16, 17, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&owl_1_v[378], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x5C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&owl_1_v[382], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 1, 3, 6, // tri1 + 2, 7, 8 // tri2 + ), + gsSPNTriangles_5b(0, 2, 9, // tri0 + 3, 0, 10, // tri1 + 3, 11, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_owl_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0005C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&owl_1_v[396], 8, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 2, // tri0 - 1, 0, 3, // tri1 - 2, 4, 0 // tri2 -), -gsSPNTriangles_5b( - 5, 6, 4, // tri0 - 3, 7, 1, // tri1 - 4, 2, 5, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x5C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&owl_1_v[396], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 1, 0, 3, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(5, 6, 4, // tri0 + 3, 7, 1, // tri1 + 4, 2, 5, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot3_owl_model[] = { -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&owl_1_v[304], 4, 0), -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0005C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&owl_1_v[308], 20, 4), -gsSPNTrianglesInit_5b( - 6, // tri count - 3, 4, 5, // tri0 - 3, 6, 1, // tri1 - 3, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 0, 2, 9, // tri0 - 3, 0, 10, // tri1 - 2, 11, 12, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 1, // tri count - 13, 14, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 6, // tri count - 16, 17, 18, // tri0 - 19, 17, 16, // tri1 - 20, 19, 16 // tri2 -), -gsSPNTriangles_5b( - 21, 22, 16, // tri0 - 18, 21, 16, // tri1 - 16, 23, 20, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&owl_1_v[304], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x5C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&owl_1_v[308], 20, 4), + gsSPNTrianglesInit_5b(6, // tri count + 3, 4, 5, // tri0 + 3, 6, 1, // tri1 + 3, 7, 8 // tri2 + ), + gsSPNTriangles_5b(0, 2, 9, // tri0 + 3, 0, 10, // tri1 + 2, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(1, // tri count + 13, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(6, // tri count + 16, 17, 18, // tri0 + 19, 17, 16, // tri1 + 20, 19, 16 // tri2 + ), + gsSPNTriangles_5b(21, 22, 16, // tri0 + 18, 21, 16, // tri1 + 16, 23, 20, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_owl_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&owl_1_v[328], 4, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0005C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&owl_1_v[332], 14, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 3, 1, 6, // tri1 - 2, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 0, 9, // tri0 - 0, 3, 10, // tri1 - 3, 11, 12, // tri2 - 1, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 15, 16, 17, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&owl_1_v[328], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x5C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&owl_1_v[332], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 3, 1, 6, // tri1 + 2, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 0, 9, // tri0 + 0, 3, 10, // tri1 + 3, 11, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_owl_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0005C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&owl_1_v[346], 8, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 2, // tri0 - 3, 2, 1, // tri1 - 2, 4, 0 // tri2 -), -gsSPNTriangles_5b( - 4, 5, 6, // tri0 - 1, 7, 3, // tri1 - 6, 0, 4, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x5C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&owl_1_v[346], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(4, 5, 6, // tri0 + 1, 7, 3, // tri1 + 6, 0, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx base_owl_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 252, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&owl_1_v[404], 21, 0), -gsSPNTrianglesInit_5b( - 23, // tri count - 0, 1, 2, // tri0 - 2, 3, 0, // tri1 - 4, 1, 5 // tri2 -), -gsSPNTriangles_5b( - 4, 6, 7, // tri0 - 3, 2, 7, // tri1 - 8, 9, 5, // tri2 - 5, 10, 11 // tri3 -), -gsSPNTriangles_5b( - 7, 2, 4, // tri0 - 12, 13, 14, // tri1 - 15, 16, 17, // tri2 - 10, 5, 9 // tri3 -), -gsSPNTriangles_5b( - 13, 12, 18, // tri0 - 5, 11, 4, // tri1 - 7, 18, 3, // tri2 - 9, 15, 10 // tri3 -), -gsSPNTriangles_5b( - 4, 11, 19, // tri0 - 6, 13, 7, // tri1 - 0, 8, 1, // tri2 - 1, 4, 2 // tri3 -), -gsSPNTriangles_5b( - 5, 1, 8, // tri0 - 17, 10, 15, // tri1 - 14, 20, 12, // tri2 - 18, 7, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 252, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&owl_1_v[404], 21, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 1, 5 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 3, 2, 7, // tri1 + 8, 9, 5, // tri2 + 5, 10, 11 // tri3 + ), + gsSPNTriangles_5b(7, 2, 4, // tri0 + 12, 13, 14, // tri1 + 15, 16, 17, // tri2 + 10, 5, 9 // tri3 + ), + gsSPNTriangles_5b(13, 12, 18, // tri0 + 5, 11, 4, // tri1 + 7, 18, 3, // tri2 + 9, 15, 10 // tri3 + ), + gsSPNTriangles_5b(4, 11, 19, // tri0 + 6, 13, 7, // tri1 + 0, 8, 1, // tri2 + 1, 4, 2 // tri3 + ), + gsSPNTriangles_5b(5, 1, 8, // tri0 + 17, 10, 15, // tri1 + 14, 20, 12, // tri2 + 18, 7, 13 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_owl_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -863,4 +767,4 @@ static cKF_Joint_R_c cKF_je_r_owl_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_owl_1 = { 26, 15, cKF_je_r_owl_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_owl_1 = { 26, 15, cKF_je_r_owl_1_tbl }; diff --git a/src/data/npc/model/mdl/pbr_1.c b/src/data/npc/model/mdl/pbr_1.c index 8c534a90..eebb9d04 100644 --- a/src/data/npc/model/mdl/pbr_1.c +++ b/src/data/npc/model/mdl/pbr_1.c @@ -6,742 +6,658 @@ static Vtx pbr_1_v[] = { }; static Gfx head_pbr_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pbr_1_v[21], 6, 0), -gsSPMatrix(0x0D000380, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pbr_1_v[27], 18, 6), -gsSPNTrianglesInit_5b( - 12, // tri count - 0, 6, 7, // tri0 - 0, 5, 8, // tri1 - 5, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 5, 3, 11, // tri0 - 2, 12, 13, // tri1 - 2, 4, 14, // tri2 - 4, 15, 16 // tri3 -), -gsSPNTriangles_5b( - 4, 1, 17, // tri0 - 1, 18, 19, // tri1 - 1, 0, 20, // tri2 - 3, 21, 22 // tri3 -), -gsSPNTriangles_5b( - 3, 2, 23, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pbr_1_v[45], 31, 0), -gsSPNTrianglesInit_5b( - 15, // tri count - 0, 1, 2, // tri0 - 3, 4, 2, // tri1 - 2, 4, 5 // tri2 -), -gsSPNTriangles_5b( - 6, 7, 8, // tri0 - 2, 6, 8, // tri1 - 9, 6, 5, // tri2 - 1, 10, 11 // tri3 -), -gsSPNTriangles_5b( - 0, 10, 1, // tri0 - 9, 7, 6, // tri1 - 2, 1, 3, // tri2 - 5, 6, 2 // tri3 -), -gsSPNTriangles_5b( - 11, 12, 3, // tri0 - 2, 8, 0, // tri1 - 5, 13, 9, // tri2 - 3, 1, 11 // tri3 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 48, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 18, // tri count - 14, 15, 16, // tri0 - 17, 18, 19, // tri1 - 17, 20, 21 // tri2 -), -gsSPNTriangles_5b( - 19, 18, 22, // tri0 - 23, 22, 18, // tri1 - 16, 24, 14, // tri2 - 17, 16, 25 // tri3 -), -gsSPNTriangles_5b( - 17, 26, 27, // tri0 - 16, 15, 28, // tri1 - 28, 25, 16, // tri2 - 18, 27, 29 // tri3 -), -gsSPNTriangles_5b( - 25, 26, 17, // tri0 - 27, 18, 17, // tri1 - 21, 16, 17, // tri2 - 24, 16, 21 // tri3 -), -gsSPNTriangles_5b( - 19, 20, 17, // tri0 - 29, 30, 18, // tri1 - 18, 30, 23, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&pbr_1_v[76], 23, 0), -gsSPNTrianglesInit_5b( - 33, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 8, 9, 6, // tri0 - 10, 5, 4, // tri1 - 11, 12, 3, // tri2 - 9, 0, 2 // tri3 -), -gsSPNTriangles_5b( - 5, 11, 3, // tri0 - 2, 13, 9, // tri1 - 13, 2, 10, // tri2 - 5, 14, 11 // tri3 -), -gsSPNTriangles_5b( - 11, 14, 15, // tri0 - 7, 16, 12, // tri1 - 12, 8, 7, // tri2 - 17, 7, 6 // tri3 -), -gsSPNTriangles_5b( - 7, 17, 18, // tri0 - 16, 7, 18, // tri1 - 6, 19, 17, // tri2 - 5, 10, 2 // tri3 -), -gsSPNTriangles_5b( - 16, 3, 12, // tri0 - 9, 8, 0, // tri1 - 18, 20, 16, // tri2 - 21, 2, 1 // tri3 -), -gsSPNTriangles_5b( - 14, 5, 21, // tri0 - 21, 1, 14, // tri1 - 2, 21, 5, // tri2 - 15, 14, 1 // tri3 -), -gsSPNTriangles_5b( - 12, 11, 22, // tri0 - 15, 1, 0, // tri1 - 11, 15, 0, // tri2 - 0, 8, 22 // tri3 -), -gsSPNTriangles_5b( - 22, 11, 0, // tri0 - 22, 8, 12, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pbr_1_v[99], 16, 0), -gsSPNTrianglesInit_5b( - 11, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 2, 3 // tri2 -), -gsSPNTriangles_5b( - 6, 3, 7, // tri0 - 8, 4, 3, // tri1 - 2, 1, 8, // tri2 - 2, 8, 3 // tri3 -), -gsSPNTriangles_5b( - 8, 9, 4, // tri0 - 3, 5, 7, // tri1 - 6, 0, 2, // tri2 - 1, 10, 8 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 3, // tri count - 11, 12, 13, // tri0 - 13, 14, 15, // tri1 - 13, 15, 11 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pbr_1_v[21], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*14, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pbr_1_v[27], 18, 6), + gsSPNTrianglesInit_5b(12, // tri count + 0, 6, 7, // tri0 + 0, 5, 8, // tri1 + 5, 9, 10 // tri2 + ), + gsSPNTriangles_5b(5, 3, 11, // tri0 + 2, 12, 13, // tri1 + 2, 4, 14, // tri2 + 4, 15, 16 // tri3 + ), + gsSPNTriangles_5b(4, 1, 17, // tri0 + 1, 18, 19, // tri1 + 1, 0, 20, // tri2 + 3, 21, 22 // tri3 + ), + gsSPNTriangles_5b(3, 2, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pbr_1_v[45], 31, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 2, 6, 8, // tri1 + 9, 6, 5, // tri2 + 1, 10, 11 // tri3 + ), + gsSPNTriangles_5b(0, 10, 1, // tri0 + 9, 7, 6, // tri1 + 2, 1, 3, // tri2 + 5, 6, 2 // tri3 + ), + gsSPNTriangles_5b(11, 12, 3, // tri0 + 2, 8, 0, // tri1 + 5, 13, 9, // tri2 + 3, 1, 11 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 48, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(18, // tri count + 14, 15, 16, // tri0 + 17, 18, 19, // tri1 + 17, 20, 21 // tri2 + ), + gsSPNTriangles_5b(19, 18, 22, // tri0 + 23, 22, 18, // tri1 + 16, 24, 14, // tri2 + 17, 16, 25 // tri3 + ), + gsSPNTriangles_5b(17, 26, 27, // tri0 + 16, 15, 28, // tri1 + 28, 25, 16, // tri2 + 18, 27, 29 // tri3 + ), + gsSPNTriangles_5b(25, 26, 17, // tri0 + 27, 18, 17, // tri1 + 21, 16, 17, // tri2 + 24, 16, 21 // tri3 + ), + gsSPNTriangles_5b(19, 20, 17, // tri0 + 29, 30, 18, // tri1 + 18, 30, 23, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&pbr_1_v[76], 23, 0), + gsSPNTrianglesInit_5b(33, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(8, 9, 6, // tri0 + 10, 5, 4, // tri1 + 11, 12, 3, // tri2 + 9, 0, 2 // tri3 + ), + gsSPNTriangles_5b(5, 11, 3, // tri0 + 2, 13, 9, // tri1 + 13, 2, 10, // tri2 + 5, 14, 11 // tri3 + ), + gsSPNTriangles_5b(11, 14, 15, // tri0 + 7, 16, 12, // tri1 + 12, 8, 7, // tri2 + 17, 7, 6 // tri3 + ), + gsSPNTriangles_5b(7, 17, 18, // tri0 + 16, 7, 18, // tri1 + 6, 19, 17, // tri2 + 5, 10, 2 // tri3 + ), + gsSPNTriangles_5b(16, 3, 12, // tri0 + 9, 8, 0, // tri1 + 18, 20, 16, // tri2 + 21, 2, 1 // tri3 + ), + gsSPNTriangles_5b(14, 5, 21, // tri0 + 21, 1, 14, // tri1 + 2, 21, 5, // tri2 + 15, 14, 1 // tri3 + ), + gsSPNTriangles_5b(12, 11, 22, // tri0 + 15, 1, 0, // tri1 + 11, 15, 0, // tri2 + 0, 8, 22 // tri3 + ), + gsSPNTriangles_5b(22, 11, 0, // tri0 + 22, 8, 12, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pbr_1_v[99], 16, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 2, 3 // tri2 + ), + gsSPNTriangles_5b(6, 3, 7, // tri0 + 8, 4, 3, // tri1 + 2, 1, 8, // tri2 + 2, 8, 3 // tri3 + ), + gsSPNTriangles_5b(8, 9, 4, // tri0 + 3, 5, 7, // tri1 + 6, 0, 2, // tri2 + 1, 10, 8 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 11, 12, 13, // tri0 + 13, 14, 15, // tri1 + 13, 15, 11 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx mouth_pbr_model[] = { -gsSPMatrix(0x0D000380, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pbr_1_v[0], 5, 0), -gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pbr_1_v[5], 16, 5), -gsSPNTrianglesInit_5b( - 6, // tri count - 3, 0, 5, // tri0 - 4, 7, 6, // tri1 - 3, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 0, 4, 10, // tri0 - 2, 1, 11, // tri1 - 1, 13, 12, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 14, 15, 16, // tri0 - 17, 18, 19, // tri1 - 19, 18, 20 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*14, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pbr_1_v[0], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pbr_1_v[5], 16, 5), + gsSPNTrianglesInit_5b(6, // tri count + 3, 0, 5, // tri0 + 4, 7, 6, // tri1 + 3, 9, 8 // tri2 + ), + gsSPNTriangles_5b(0, 4, 10, // tri0 + 2, 1, 11, // tri1 + 1, 13, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 14, 15, 16, // tri0 + 17, 18, 19, // tri1 + 19, 18, 20 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_pbr_model[] = { -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pbr_1_v[146], 4, 0), -gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pbr_1_v[150], 15, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 1, 3, 6, // tri1 - 3, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 9, 10, // tri0 - 2, 11, 0, // tri1 - 3, 12, 13, // tri2 - 3, 0, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 15, 16, 17, // tri0 - 18, 15, 17, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pbr_1_v[146], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pbr_1_v[150], 15, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 1, 3, 6, // tri1 + 3, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 9, 10, // tri0 + 2, 11, 0, // tri1 + 3, 12, 13, // tri2 + 3, 0, 14 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 15, 16, 17, // tri0 + 18, 15, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_pbr_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pbr_1_v[165], 3, 0), -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pbr_1_v[168], 9, 3), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 3, // tri0 - 2, 0, 4, // tri1 - 0, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 1, 7, 8, // tri0 - 1, 2, 9, // tri1 - 2, 10, 11, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pbr_1_v[165], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pbr_1_v[168], 9, 3), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 3, // tri0 + 2, 0, 4, // tri1 + 0, 5, 6 // tri2 + ), + gsSPNTriangles_5b(1, 7, 8, // tri0 + 1, 2, 9, // tri1 + 2, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_pbr_model[] = { -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pbr_1_v[115], 4, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pbr_1_v[119], 15, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 3, 1, 6, // tri1 - 3, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 0, 9, 10, // tri0 - 0, 11, 2, // tri1 - 3, 12, 13, // tri2 - 0, 3, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 15, 16, 17, // tri0 - 15, 17, 18, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pbr_1_v[115], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pbr_1_v[119], 15, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 3, 1, 6, // tri1 + 3, 7, 8 // tri2 + ), + gsSPNTriangles_5b(0, 9, 10, // tri0 + 0, 11, 2, // tri1 + 3, 12, 13, // tri2 + 0, 3, 14 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 15, 16, 17, // tri0 + 15, 17, 18, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_pbr_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pbr_1_v[134], 3, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pbr_1_v[137], 9, 3), -gsSPNTrianglesInit_5b( - 6, // tri count - 1, 0, 3, // tri0 - 0, 2, 4, // tri1 - 0, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 1, 7, 8, // tri0 - 2, 1, 9, // tri1 - 2, 10, 11, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pbr_1_v[134], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pbr_1_v[137], 9, 3), + gsSPNTrianglesInit_5b(6, // tri count + 1, 0, 3, // tri0 + 0, 2, 4, // tri1 + 0, 5, 6 // tri2 + ), + gsSPNTriangles_5b(1, 7, 8, // tri0 + 2, 1, 9, // tri1 + 2, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_pbr_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pbr_1_v[177], 8, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pbr_1_v[185], 21, 8), -gsSPNTrianglesInit_5b( - 14, // tri count - 2, 8, 9, // tri0 - 6, 10, 11, // tri1 - 3, 5, 12 // tri2 -), -gsSPNTriangles_5b( - 1, 6, 13, // tri0 - 5, 14, 15, // tri1 - 4, 16, 17, // tri2 - 1, 18, 19 // tri3 -), -gsSPNTriangles_5b( - 0, 1, 20, // tri0 - 4, 7, 21, // tri1 - 7, 0, 22, // tri2 - 0, 24, 23 // tri3 -), -gsSPNTriangles_5b( - 6, 2, 25, // tri0 - 3, 26, 27, // tri1 - 5, 4, 28, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&pbr_1_v[206], 26, 0), -gsSPNTrianglesInit_5b( - 29, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 9, 10, 11, // tri0 - 12, 13, 14, // tri1 - 15, 13, 16, // tri2 - 11, 17, 9 // tri3 -), -gsSPNTriangles_5b( - 2, 12, 0, // tri0 - 16, 18, 15, // tri1 - 13, 11, 16, // tri2 - 13, 2, 11 // tri3 -), -gsSPNTriangles_5b( - 15, 14, 13, // tri0 - 6, 19, 20, // tri1 - 11, 10, 16, // tri2 - 5, 21, 3 // tri3 -), -gsSPNTriangles_5b( - 8, 19, 6, // tri0 - 19, 8, 1, // tri1 - 17, 3, 21, // tri2 - 17, 21, 9 // tri3 -), -gsSPNTriangles_5b( - 0, 19, 1, // tri0 - 13, 12, 2, // tri1 - 22, 16, 10, // tri2 - 23, 21, 5 // tri3 -), -gsSPNTriangles_5b( - 20, 24, 6, // tri0 - 5, 25, 23, // tri1 - 20, 19, 12, // tri2 - 10, 21, 23 // tri3 -), -gsSPNTriangles_5b( - 23, 22, 10, // tri0 - 12, 14, 20, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pbr_1_v[177], 8, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pbr_1_v[185], 21, 8), + gsSPNTrianglesInit_5b(14, // tri count + 2, 8, 9, // tri0 + 6, 10, 11, // tri1 + 3, 5, 12 // tri2 + ), + gsSPNTriangles_5b(1, 6, 13, // tri0 + 5, 14, 15, // tri1 + 4, 16, 17, // tri2 + 1, 18, 19 // tri3 + ), + gsSPNTriangles_5b(0, 1, 20, // tri0 + 4, 7, 21, // tri1 + 7, 0, 22, // tri2 + 0, 24, 23 // tri3 + ), + gsSPNTriangles_5b(6, 2, 25, // tri0 + 3, 26, 27, // tri1 + 5, 4, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&pbr_1_v[206], 26, 0), + gsSPNTrianglesInit_5b(29, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 13, 14, // tri1 + 15, 13, 16, // tri2 + 11, 17, 9 // tri3 + ), + gsSPNTriangles_5b(2, 12, 0, // tri0 + 16, 18, 15, // tri1 + 13, 11, 16, // tri2 + 13, 2, 11 // tri3 + ), + gsSPNTriangles_5b(15, 14, 13, // tri0 + 6, 19, 20, // tri1 + 11, 10, 16, // tri2 + 5, 21, 3 // tri3 + ), + gsSPNTriangles_5b(8, 19, 6, // tri0 + 19, 8, 1, // tri1 + 17, 3, 21, // tri2 + 17, 21, 9 // tri3 + ), + gsSPNTriangles_5b(0, 19, 1, // tri0 + 13, 12, 2, // tri1 + 22, 16, 10, // tri2 + 23, 21, 5 // tri3 + ), + gsSPNTriangles_5b(20, 24, 6, // tri0 + 5, 25, 23, // tri1 + 20, 19, 12, // tri2 + 10, 21, 23 // tri3 + ), + gsSPNTriangles_5b(23, 22, 10, // tri0 + 12, 14, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail1_pbr_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pbr_1_v[232], 4, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pbr_1_v[236], 15, 4), -gsSPNTrianglesInit_5b( - 4, // tri count - 2, 3, 4, // tri0 - 3, 1, 5, // tri1 - 2, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 8, 9, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 1, 0, 10, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 0, 2, 11, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPNTrianglesInit_5b( - 6, // tri count - 12, 13, 14, // tri0 - 14, 13, 15, // tri1 - 14, 16, 12 // tri2 -), -gsSPNTriangles_5b( - 14, 17, 18, // tri0 - 15, 17, 14, // tri1 - 18, 16, 14, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pbr_1_v[232], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pbr_1_v[236], 15, 4), + gsSPNTrianglesInit_5b(4, // tri count + 2, 3, 4, // tri0 + 3, 1, 5, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 1, 0, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 0, 2, 11, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPNTrianglesInit_5b(6, // tri count + 12, 13, 14, // tri0 + 14, 13, 15, // tri1 + 14, 16, 12 // tri2 + ), + gsSPNTriangles_5b(14, 17, 18, // tri0 + 15, 17, 14, // tri1 + 18, 16, 14, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot3_pbr_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pbr_1_v[301], 4, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pbr_1_v[305], 20, 4), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 3, 4, // tri0 - 1, 0, 5, // tri1 - 3, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 2, 8, 9, // tri0 - 2, 10, 3, // tri1 - 1, 11, 12, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 6, // tri count - 13, 14, 15, // tri0 - 13, 16, 14, // tri1 - 13, 17, 18 // tri2 -), -gsSPNTriangles_5b( - 13, 19, 17, // tri0 - 15, 19, 13, // tri1 - 18, 20, 13, // tri2 - 0, 0, 0 // tri3 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 21, 22, 23, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pbr_1_v[301], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pbr_1_v[305], 20, 4), + gsSPNTrianglesInit_5b(6, // tri count + 0, 3, 4, // tri0 + 1, 0, 5, // tri1 + 3, 6, 7 // tri2 + ), + gsSPNTriangles_5b(2, 8, 9, // tri0 + 2, 10, 3, // tri1 + 1, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(6, // tri count + 13, 14, 15, // tri0 + 13, 16, 14, // tri1 + 13, 17, 18 // tri2 + ), + gsSPNTriangles_5b(13, 19, 17, // tri0 + 15, 19, 13, // tri1 + 18, 20, 13, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 21, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_pbr_model[] = { -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pbr_1_v[325], 4, 0), -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pbr_1_v[329], 14, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 1, 6, 7, // tri1 - 3, 0, 8 // tri2 -), -gsSPNTriangles_5b( - 0, 2, 9, // tri0 - 2, 10, 11, // tri1 - 1, 3, 12, // tri2 - 3, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 15, 16, 17, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pbr_1_v[325], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pbr_1_v[329], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 1, 6, 7, // tri1 + 3, 0, 8 // tri2 + ), + gsSPNTriangles_5b(0, 2, 9, // tri0 + 2, 10, 11, // tri1 + 1, 3, 12, // tri2 + 3, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_pbr_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pbr_1_v[343], 8, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 2, // tri0 - 1, 0, 3, // tri1 - 2, 4, 0 // tri2 -), -gsSPNTriangles_5b( - 5, 6, 4, // tri0 - 3, 7, 1, // tri1 - 4, 2, 5, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pbr_1_v[343], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 1, 0, 3, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(5, 6, 4, // tri0 + 3, 7, 1, // tri1 + 4, 2, 5, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot3_pbr_model[] = { -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pbr_1_v[251], 4, 0), -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pbr_1_v[255], 20, 4), -gsSPNTrianglesInit_5b( - 6, // tri count - 3, 0, 4, // tri0 - 0, 1, 5, // tri1 - 3, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 3, 8, 9, // tri0 - 3, 10, 2, // tri1 - 1, 11, 12, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 6, // tri count - 13, 14, 15, // tri0 - 14, 16, 15, // tri1 - 17, 18, 15 // tri2 -), -gsSPNTriangles_5b( - 18, 19, 15, // tri0 - 15, 19, 13, // tri1 - 15, 20, 17, // tri2 - 0, 0, 0 // tri3 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 21, 22, 23, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pbr_1_v[251], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pbr_1_v[255], 20, 4), + gsSPNTrianglesInit_5b(6, // tri count + 3, 0, 4, // tri0 + 0, 1, 5, // tri1 + 3, 6, 7 // tri2 + ), + gsSPNTriangles_5b(3, 8, 9, // tri0 + 3, 10, 2, // tri1 + 1, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(6, // tri count + 13, 14, 15, // tri0 + 14, 16, 15, // tri1 + 17, 18, 15 // tri2 + ), + gsSPNTriangles_5b(18, 19, 15, // tri0 + 15, 19, 13, // tri1 + 15, 20, 17, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 21, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_pbr_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pbr_1_v[275], 4, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pbr_1_v[279], 14, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 1, 6, 7, // tri1 - 0, 3, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 0, 9, // tri0 - 2, 10, 11, // tri1 - 3, 1, 12, // tri2 - 3, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 15, 16, 17, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pbr_1_v[275], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pbr_1_v[279], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 1, 6, 7, // tri1 + 0, 3, 8 // tri2 + ), + gsSPNTriangles_5b(2, 0, 9, // tri0 + 2, 10, 11, // tri1 + 3, 1, 12, // tri2 + 3, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_pbr_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pbr_1_v[293], 8, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 2, // tri0 - 3, 2, 1, // tri1 - 2, 4, 0 // tri2 -), -gsSPNTriangles_5b( - 4, 5, 6, // tri0 - 1, 7, 3, // tri1 - 6, 0, 4, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pbr_1_v[293], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(4, 5, 6, // tri0 + 1, 7, 3, // tri1 + 6, 0, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx base_pbr_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0004C0, G_IM_FMT_CI, 16, 8, 15, GX_MIRROR, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 28), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pbr_1_v[351], 21, 0), -gsSPNTrianglesInit_5b( - 23, // tri count - 0, 1, 2, // tri0 - 2, 3, 0, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 3, 7, 8, // tri0 - 9, 1, 10, // tri1 - 6, 8, 4, // tri2 - 7, 4, 8 // tri3 -), -gsSPNTriangles_5b( - 11, 12, 13, // tri0 - 10, 13, 14, // tri1 - 11, 10, 15, // tri2 - 16, 12, 11 // tri3 -), -gsSPNTriangles_5b( - 16, 11, 17, // tri0 - 15, 10, 1, // tri1 - 17, 11, 15, // tri2 - 10, 14, 9 // tri3 -), -gsSPNTriangles_5b( - 5, 18, 19, // tri0 - 5, 19, 6, // tri1 - 8, 6, 20, // tri2 - 8, 20, 0 // tri3 -), -gsSPNTriangles_5b( - 6, 19, 20, // tri0 - 8, 0, 3, // tri1 - 1, 9, 2, // tri2 - 10, 11, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x4C0, G_IM_FMT_CI, 16, 8, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 28), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pbr_1_v[351], 21, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(3, 7, 8, // tri0 + 9, 1, 10, // tri1 + 6, 8, 4, // tri2 + 7, 4, 8 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 10, 13, 14, // tri1 + 11, 10, 15, // tri2 + 16, 12, 11 // tri3 + ), + gsSPNTriangles_5b(16, 11, 17, // tri0 + 15, 10, 1, // tri1 + 17, 11, 15, // tri2 + 10, 14, 9 // tri3 + ), + gsSPNTriangles_5b(5, 18, 19, // tri0 + 5, 19, 6, // tri1 + 8, 6, 20, // tri2 + 8, 20, 0 // tri3 + ), + gsSPNTriangles_5b(6, 19, 20, // tri0 + 8, 0, 3, // tri1 + 1, 9, 2, // tri2 + 10, 11, 13 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_pbr_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -773,4 +689,4 @@ static cKF_Joint_R_c cKF_je_r_pbr_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_pbr_1 = { 26, 15, cKF_je_r_pbr_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_pbr_1 = { 26, 15, cKF_je_r_pbr_1_tbl }; diff --git a/src/data/npc/model/mdl/pga_1.c b/src/data/npc/model/mdl/pga_1.c index f4ad1820..af359b9a 100644 --- a/src/data/npc/model/mdl/pga_1.c +++ b/src/data/npc/model/mdl/pga_1.c @@ -6,835 +6,734 @@ static Vtx pga_1_v[] = { }; static Gfx head_pga_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000180, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pga_1_v[40], 30, 0), -gsSPNTrianglesInit_5b( - 1, // tri count - 0, 1, 2, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 15, // tri count - 3, 4, 5, // tri0 - 6, 7, 8, // tri1 - 9, 10, 11 // tri2 -), -gsSPNTriangles_5b( - 3, 5, 9, // tri0 - 12, 13, 6, // tri1 - 14, 9, 15, // tri2 - 5, 12, 9 // tri3 -), -gsSPNTriangles_5b( - 13, 12, 5, // tri0 - 16, 7, 6, // tri1 - 9, 14, 17, // tri2 - 16, 13, 5 // tri3 -), -gsSPNTriangles_5b( - 6, 9, 12, // tri0 - 6, 13, 16, // tri1 - 17, 10, 9, // tri2 - 11, 3, 9 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 5, // tri count - 18, 19, 20, // tri0 - 18, 20, 21, // tri1 - 22, 23, 19 // tri2 -), -gsSPNTriangles_5b( - 24, 21, 20, // tri0 - 22, 19, 18, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 2, // tri count - 25, 26, 27, // tri0 - 27, 28, 29, // tri1 - 0, 0, 0 // tri2 -), -gsSPVertex(&pga_1_v[70], 12, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 0, 1, 2, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 3, 4, 5, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 6, 7, 8, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 9, 10, 11, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&pga_1_v[82], 30, 0), -gsSPNTrianglesInit_5b( - 48, // tri count - 0, 1, 2, // tri0 - 3, 4, 1, // tri1 - 5, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 5, 8, 9, // tri0 - 6, 10, 11, // tri1 - 6, 11, 3, // tri2 - 6, 9, 10 // tri3 -), -gsSPNTriangles_5b( - 12, 13, 14, // tri0 - 2, 15, 12, // tri1 - 12, 16, 17, // tri2 - 11, 10, 18 // tri3 -), -gsSPNTriangles_5b( - 11, 18, 19, // tri0 - 4, 11, 19, // tri1 - 4, 15, 2, // tri2 - 1, 4, 2 // tri3 -), -gsSPNTriangles_5b( - 13, 20, 14, // tri0 - 5, 21, 22, // tri1 - 13, 18, 20, // tri2 - 20, 9, 8 // tri3 -), -gsSPNTriangles_5b( - 12, 15, 13, // tri0 - 13, 15, 19, // tri1 - 19, 18, 13, // tri2 - 23, 16, 14 // tri3 -), -gsSPNTriangles_5b( - 14, 8, 23, // tri0 - 9, 6, 5, // tri1 - 8, 5, 22, // tri2 - 16, 12, 14 // tri3 -), -gsSPNTriangles_5b( - 24, 25, 26, // tri0 - 17, 2, 12, // tri1 - 14, 20, 8, // tri2 - 11, 4, 3 // tri3 -), -gsSPNTriangles_5b( - 9, 20, 18, // tri0 - 18, 10, 9, // tri1 - 19, 15, 4, // tri2 - 3, 27, 26 // tri3 -), -gsSPNTriangles_5b( - 24, 7, 6, // tri0 - 26, 27, 7, // tri1 - 26, 7, 24, // tri2 - 6, 3, 25 // tri3 -), -gsSPNTriangles_5b( - 25, 24, 6, // tri0 - 3, 26, 25, // tri1 - 7, 21, 5, // tri2 - 27, 3, 1 // tri3 -), -gsSPNTriangles_5b( - 27, 28, 29, // tri0 - 29, 21, 7, // tri1 - 29, 7, 27, // tri2 - 1, 28, 27 // tri3 -), -gsSPNTriangles_5b( - 0, 28, 1, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&pga_1_v[112], 7, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 2, // tri0 - 3, 2, 4, // tri1 - 1, 5, 2 // tri2 -), -gsSPNTriangles_5b( - 2, 6, 0, // tri0 - 2, 3, 6, // tri1 - 4, 2, 5, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x180, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pga_1_v[40], 30, 0), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(15, // tri count + 3, 4, 5, // tri0 + 6, 7, 8, // tri1 + 9, 10, 11 // tri2 + ), + gsSPNTriangles_5b(3, 5, 9, // tri0 + 12, 13, 6, // tri1 + 14, 9, 15, // tri2 + 5, 12, 9 // tri3 + ), + gsSPNTriangles_5b(13, 12, 5, // tri0 + 16, 7, 6, // tri1 + 9, 14, 17, // tri2 + 16, 13, 5 // tri3 + ), + gsSPNTriangles_5b(6, 9, 12, // tri0 + 6, 13, 16, // tri1 + 17, 10, 9, // tri2 + 11, 3, 9 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(5, // tri count + 18, 19, 20, // tri0 + 18, 20, 21, // tri1 + 22, 23, 19 // tri2 + ), + gsSPNTriangles_5b(24, 21, 20, // tri0 + 22, 19, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 25, 26, 27, // tri0 + 27, 28, 29, // tri1 + 0, 0, 0 // tri2 + ), + gsSPVertex(&pga_1_v[70], 12, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 3, 4, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 6, 7, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 9, 10, 11, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&pga_1_v[82], 30, 0), + gsSPNTrianglesInit_5b(48, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(5, 8, 9, // tri0 + 6, 10, 11, // tri1 + 6, 11, 3, // tri2 + 6, 9, 10 // tri3 + ), + gsSPNTriangles_5b(12, 13, 14, // tri0 + 2, 15, 12, // tri1 + 12, 16, 17, // tri2 + 11, 10, 18 // tri3 + ), + gsSPNTriangles_5b(11, 18, 19, // tri0 + 4, 11, 19, // tri1 + 4, 15, 2, // tri2 + 1, 4, 2 // tri3 + ), + gsSPNTriangles_5b(13, 20, 14, // tri0 + 5, 21, 22, // tri1 + 13, 18, 20, // tri2 + 20, 9, 8 // tri3 + ), + gsSPNTriangles_5b(12, 15, 13, // tri0 + 13, 15, 19, // tri1 + 19, 18, 13, // tri2 + 23, 16, 14 // tri3 + ), + gsSPNTriangles_5b(14, 8, 23, // tri0 + 9, 6, 5, // tri1 + 8, 5, 22, // tri2 + 16, 12, 14 // tri3 + ), + gsSPNTriangles_5b(24, 25, 26, // tri0 + 17, 2, 12, // tri1 + 14, 20, 8, // tri2 + 11, 4, 3 // tri3 + ), + gsSPNTriangles_5b(9, 20, 18, // tri0 + 18, 10, 9, // tri1 + 19, 15, 4, // tri2 + 3, 27, 26 // tri3 + ), + gsSPNTriangles_5b(24, 7, 6, // tri0 + 26, 27, 7, // tri1 + 26, 7, 24, // tri2 + 6, 3, 25 // tri3 + ), + gsSPNTriangles_5b(25, 24, 6, // tri0 + 3, 26, 25, // tri1 + 7, 21, 5, // tri2 + 27, 3, 1 // tri3 + ), + gsSPNTriangles_5b(27, 28, 29, // tri0 + 29, 21, 7, // tri1 + 29, 7, 27, // tri2 + 1, 28, 27 // tri3 + ), + gsSPNTriangles_5b(0, 28, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&pga_1_v[112], 7, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 1, 5, 2 // tri2 + ), + gsSPNTriangles_5b(2, 6, 0, // tri0 + 2, 3, 6, // tri1 + 4, 2, 5, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx mouth_pga_model[] = { -gsSPMatrix(0x0D000380, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pga_1_v[0], 5, 0), -gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pga_1_v[5], 15, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 5, 6, // tri0 - 4, 8, 7, // tri1 - 2, 4, 9 // tri2 -), -gsSPNTriangles_5b( - 4, 0, 10, // tri0 - 2, 11, 12, // tri1 - 0, 13, 14, // tri2 - 2, 15, 16 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 2, // tri count - 1, 3, 17, // tri0 - 3, 19, 18, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&pga_1_v[20], 20, 0), -gsSPNTrianglesInit_5b( - 16, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 1 // tri2 -), -gsSPNTriangles_5b( - 0, 8, 6, // tri0 - 9, 10, 4, // tri1 - 11, 10, 9, // tri2 - 12, 8, 10 // tri3 -), -gsSPNTriangles_5b( - 12, 10, 11, // tri0 - 8, 0, 4, // tri1 - 4, 10, 8, // tri2 - 4, 0, 2 // tri3 -), -gsSPNTriangles_5b( - 4, 2, 5, // tri0 - 9, 4, 3, // tri1 - 6, 8, 12, // tri2 - 1, 0, 6 // tri3 -), -gsSPNTriangles_5b( - 3, 13, 9, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 4, // tri count - 14, 15, 16, // tri0 - 17, 15, 14, // tri1 - 17, 14, 18 // tri2 -), -gsSPNTriangles_5b( - 14, 16, 19, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*14, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pga_1_v[0], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pga_1_v[5], 15, 5), + gsSPNTrianglesInit_5b(7, // tri count + 0, 5, 6, // tri0 + 4, 8, 7, // tri1 + 2, 4, 9 // tri2 + ), + gsSPNTriangles_5b(4, 0, 10, // tri0 + 2, 11, 12, // tri1 + 0, 13, 14, // tri2 + 2, 15, 16 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 1, 3, 17, // tri0 + 3, 19, 18, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&pga_1_v[20], 20, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 1 // tri2 + ), + gsSPNTriangles_5b(0, 8, 6, // tri0 + 9, 10, 4, // tri1 + 11, 10, 9, // tri2 + 12, 8, 10 // tri3 + ), + gsSPNTriangles_5b(12, 10, 11, // tri0 + 8, 0, 4, // tri1 + 4, 10, 8, // tri2 + 4, 0, 2 // tri3 + ), + gsSPNTriangles_5b(4, 2, 5, // tri0 + 9, 4, 3, // tri1 + 6, 8, 12, // tri2 + 1, 0, 6 // tri3 + ), + gsSPNTriangles_5b(3, 13, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 14, 15, 16, // tri0 + 17, 15, 14, // tri1 + 17, 14, 18 // tri2 + ), + gsSPNTriangles_5b(14, 16, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_pga_model[] = { -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pga_1_v[192], 5, 0), -gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pga_1_v[197], 23, 5), -gsSPNTrianglesInit_5b( - 9, // tri count - 3, 5, 6, // tri0 - 2, 4, 7, // tri1 - 0, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 3, 1, 10, // tri0 - 3, 11, 12, // tri1 - 0, 2, 13, // tri2 - 4, 14, 15 // tri3 -), -gsSPNTriangles_5b( - 2, 17, 16, // tri0 - 4, 3, 18, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 19, 20, 21, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 4, // tri count - 22, 23, 24, // tri0 - 24, 25, 22, // tri1 - 22, 26, 23 // tri2 -), -gsSPNTriangles_5b( - 25, 27, 22, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pga_1_v[192], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pga_1_v[197], 23, 5), + gsSPNTrianglesInit_5b(9, // tri count + 3, 5, 6, // tri0 + 2, 4, 7, // tri1 + 0, 8, 9 // tri2 + ), + gsSPNTriangles_5b(3, 1, 10, // tri0 + 3, 11, 12, // tri1 + 0, 2, 13, // tri2 + 4, 14, 15 // tri3 + ), + gsSPNTriangles_5b(2, 17, 16, // tri0 + 4, 3, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(4, // tri count + 22, 23, 24, // tri0 + 24, 25, 22, // tri1 + 22, 26, 23 // tri2 + ), + gsSPNTriangles_5b(25, 27, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_pga_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pga_1_v[220], 8, 0), -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pga_1_v[228], 13, 8), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 8, 9, // tri0 - 0, 10, 11, // tri1 - 3, 0, 12 // tri2 -), -gsSPNTriangles_5b( - 5, 13, 14, // tri0 - 5, 4, 15, // tri1 - 1, 6, 16, // tri2 - 7, 18, 17 // tri3 -), -gsSPNTriangles_5b( - 0, 20, 19, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&pga_1_v[241], 24, 0), -gsSPNTrianglesInit_5b( - 15, // tri count - 0, 1, 2, // tri0 - 0, 3, 4, // tri1 - 5, 4, 3 // tri2 -), -gsSPNTriangles_5b( - 6, 7, 8, // tri0 - 4, 1, 0, // tri1 - 9, 10, 6, // tri2 - 11, 12, 13 // tri3 -), -gsSPNTriangles_5b( - 14, 15, 16, // tri0 - 10, 11, 7, // tri1 - 16, 17, 14, // tri2 - 8, 18, 6 // tri3 -), -gsSPNTriangles_5b( - 7, 6, 10, // tri0 - 19, 20, 21, // tri1 - 13, 12, 22, // tri2 - 23, 19, 21 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pga_1_v[220], 8, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pga_1_v[228], 13, 8), + gsSPNTrianglesInit_5b(8, // tri count + 2, 8, 9, // tri0 + 0, 10, 11, // tri1 + 3, 0, 12 // tri2 + ), + gsSPNTriangles_5b(5, 13, 14, // tri0 + 5, 4, 15, // tri1 + 1, 6, 16, // tri2 + 7, 18, 17 // tri3 + ), + gsSPNTriangles_5b(0, 20, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&pga_1_v[241], 24, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 5, 4, 3 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 4, 1, 0, // tri1 + 9, 10, 6, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 10, 11, 7, // tri1 + 16, 17, 14, // tri2 + 8, 18, 6 // tri3 + ), + gsSPNTriangles_5b(7, 6, 10, // tri0 + 19, 20, 21, // tri1 + 13, 12, 22, // tri2 + 23, 19, 21 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_pga_model[] = { -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pga_1_v[119], 5, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pga_1_v[124], 23, 5), -gsSPNTrianglesInit_5b( - 9, // tri count - 3, 5, 6, // tri0 - 4, 2, 7, // tri1 - 0, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 1, 3, 10, // tri0 - 3, 11, 12, // tri1 - 2, 0, 13, // tri2 - 4, 14, 15 // tri3 -), -gsSPNTriangles_5b( - 2, 17, 16, // tri0 - 3, 4, 18, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 19, 20, 21, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 4, // tri count - 22, 23, 24, // tri0 - 24, 25, 22, // tri1 - 23, 26, 24 // tri2 -), -gsSPNTriangles_5b( - 24, 27, 25, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pga_1_v[119], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pga_1_v[124], 23, 5), + gsSPNTrianglesInit_5b(9, // tri count + 3, 5, 6, // tri0 + 4, 2, 7, // tri1 + 0, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 3, 10, // tri0 + 3, 11, 12, // tri1 + 2, 0, 13, // tri2 + 4, 14, 15 // tri3 + ), + gsSPNTriangles_5b(2, 17, 16, // tri0 + 3, 4, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(4, // tri count + 22, 23, 24, // tri0 + 24, 25, 22, // tri1 + 23, 26, 24 // tri2 + ), + gsSPNTriangles_5b(24, 27, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_pga_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pga_1_v[147], 8, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pga_1_v[155], 13, 8), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 8, 9, // tri0 - 0, 10, 11, // tri1 - 0, 3, 12 // tri2 -), -gsSPNTriangles_5b( - 5, 13, 14, // tri0 - 4, 5, 15, // tri1 - 6, 1, 16, // tri2 - 7, 18, 17 // tri3 -), -gsSPNTriangles_5b( - 0, 20, 19, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&pga_1_v[168], 24, 0), -gsSPNTrianglesInit_5b( - 15, // tri count - 0, 1, 2, // tri0 - 3, 4, 2, // tri1 - 4, 3, 5 // tri2 -), -gsSPNTriangles_5b( - 6, 7, 8, // tri0 - 2, 1, 3, // tri1 - 8, 9, 10, // tri2 - 11, 12, 13 // tri3 -), -gsSPNTriangles_5b( - 14, 15, 16, // tri0 - 7, 13, 9, // tri1 - 16, 17, 14, // tri2 - 8, 18, 6 // tri3 -), -gsSPNTriangles_5b( - 9, 8, 7, // tri0 - 19, 20, 21, // tri1 - 22, 12, 11, // tri2 - 19, 21, 23 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pga_1_v[147], 8, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pga_1_v[155], 13, 8), + gsSPNTrianglesInit_5b(8, // tri count + 2, 8, 9, // tri0 + 0, 10, 11, // tri1 + 0, 3, 12 // tri2 + ), + gsSPNTriangles_5b(5, 13, 14, // tri0 + 4, 5, 15, // tri1 + 6, 1, 16, // tri2 + 7, 18, 17 // tri3 + ), + gsSPNTriangles_5b(0, 20, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&pga_1_v[168], 24, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 4, 3, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 2, 1, 3, // tri1 + 8, 9, 10, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 7, 13, 9, // tri1 + 16, 17, 14, // tri2 + 8, 18, 6 // tri3 + ), + gsSPNTriangles_5b(9, 8, 7, // tri0 + 19, 20, 21, // tri1 + 22, 12, 11, // tri2 + 19, 21, 23 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_pga_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pga_1_v[265], 32, 0), -gsSPNTrianglesInit_5b( - 40, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 7, 8, 9, // tri0 - 10, 7, 11, // tri1 - 3, 12, 0, // tri2 - 13, 14, 5 // tri3 -), -gsSPNTriangles_5b( - 15, 16, 17, // tri0 - 18, 19, 20, // tri1 - 1, 20, 2, // tri2 - 3, 19, 18 // tri3 -), -gsSPNTriangles_5b( - 7, 17, 16, // tri0 - 21, 4, 18, // tri1 - 17, 4, 21, // tri2 - 8, 22, 9 // tri3 -), -gsSPNTriangles_5b( - 21, 15, 17, // tri0 - 18, 20, 21, // tri1 - 3, 18, 23, // tri2 - 21, 20, 24 // tri3 -), -gsSPNTriangles_5b( - 21, 24, 15, // tri0 - 8, 15, 22, // tri1 - 2, 19, 3, // tri2 - 16, 8, 7 // tri3 -), -gsSPNTriangles_5b( - 9, 11, 7, // tri0 - 13, 17, 7, // tri1 - 23, 25, 26, // tri2 - 27, 6, 5 // tri3 -), -gsSPNTriangles_5b( - 27, 5, 28, // tri0 - 23, 18, 6, // tri1 - 6, 18, 4, // tri2 - 4, 17, 5 // tri3 -), -gsSPNTriangles_5b( - 25, 23, 6, // tri0 - 5, 17, 13, // tri1 - 14, 13, 10, // tri2 - 13, 7, 10 // tri3 -), -gsSPNTriangles_5b( - 26, 3, 23, // tri0 - 12, 3, 26, // tri1 - 12, 26, 29, // tri2 - 28, 30, 31 // tri3 -), -gsSPNTriangles_5b( - 28, 31, 27, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pga_1_v[265], 32, 0), + gsSPNTrianglesInit_5b(40, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 7, 11, // tri1 + 3, 12, 0, // tri2 + 13, 14, 5 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 1, 20, 2, // tri2 + 3, 19, 18 // tri3 + ), + gsSPNTriangles_5b(7, 17, 16, // tri0 + 21, 4, 18, // tri1 + 17, 4, 21, // tri2 + 8, 22, 9 // tri3 + ), + gsSPNTriangles_5b(21, 15, 17, // tri0 + 18, 20, 21, // tri1 + 3, 18, 23, // tri2 + 21, 20, 24 // tri3 + ), + gsSPNTriangles_5b(21, 24, 15, // tri0 + 8, 15, 22, // tri1 + 2, 19, 3, // tri2 + 16, 8, 7 // tri3 + ), + gsSPNTriangles_5b(9, 11, 7, // tri0 + 13, 17, 7, // tri1 + 23, 25, 26, // tri2 + 27, 6, 5 // tri3 + ), + gsSPNTriangles_5b(27, 5, 28, // tri0 + 23, 18, 6, // tri1 + 6, 18, 4, // tri2 + 4, 17, 5 // tri3 + ), + gsSPNTriangles_5b(25, 23, 6, // tri0 + 5, 17, 13, // tri1 + 14, 13, 10, // tri2 + 13, 7, 10 // tri3 + ), + gsSPNTriangles_5b(26, 3, 23, // tri0 + 12, 3, 26, // tri1 + 12, 26, 29, // tri2 + 28, 30, 31 // tri3 + ), + gsSPNTriangles_5b(28, 31, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail1_pga_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pga_1_v[408], 5, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pga_1_v[413], 5, 5), -gsSPNTrianglesInit_5b( - 5, // tri count - 2, 5, 0, // tri0 - 0, 6, 3, // tri1 - 1, 7, 2 // tri2 -), -gsSPNTriangles_5b( - 4, 8, 1, // tri0 - 4, 3, 9, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pga_1_v[408], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pga_1_v[413], 5, 5), + gsSPNTrianglesInit_5b(5, // tri count + 2, 5, 0, // tri0 + 0, 6, 3, // tri1 + 1, 7, 2 // tri2 + ), + gsSPNTriangles_5b(4, 8, 1, // tri0 + 4, 3, 9, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot3_pga_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pga_1_v[344], 3, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pga_1_v[347], 18, 3), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 3, 4, // tri0 - 1, 0, 5, // tri1 - 0, 2, 6 // tri2 -), -gsSPNTriangles_5b( - 2, 1, 7, // tri0 - 2, 8, 9, // tri1 - 0, 10, 11, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 5, // tri count - 12, 13, 14, // tri0 - 12, 14, 15, // tri1 - 16, 17, 18 // tri2 -), -gsSPNTriangles_5b( - 18, 19, 16, // tri0 - 16, 20, 17, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pga_1_v[344], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pga_1_v[347], 18, 3), + gsSPNTrianglesInit_5b(6, // tri count + 0, 3, 4, // tri0 + 1, 0, 5, // tri1 + 0, 2, 6 // tri2 + ), + gsSPNTriangles_5b(2, 1, 7, // tri0 + 2, 8, 9, // tri1 + 0, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(5, // tri count + 12, 13, 14, // tri0 + 12, 14, 15, // tri1 + 16, 17, 18 // tri2 + ), + gsSPNTriangles_5b(18, 19, 16, // tri0 + 16, 20, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_pga_model[] = { -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pga_1_v[365], 4, 0), -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pga_1_v[369], 14, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 2, 6, 7, // tri1 - 3, 0, 8 // tri2 -), -gsSPNTriangles_5b( - 1, 2, 9, // tri0 - 2, 10, 11, // tri1 - 2, 3, 12, // tri2 - 3, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 15, 16, 17, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pga_1_v[365], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pga_1_v[369], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 2, 6, 7, // tri1 + 3, 0, 8 // tri2 + ), + gsSPNTriangles_5b(1, 2, 9, // tri0 + 2, 10, 11, // tri1 + 2, 3, 12, // tri2 + 3, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_pga_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pga_1_v[383], 8, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 3, 2, 4 // tri2 -), -gsSPNTriangles_5b( - 5, 0, 6, // tri0 - 4, 7, 3, // tri1 - 0, 5, 1, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pga_1_v[383], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b(5, 0, 6, // tri0 + 4, 7, 3, // tri1 + 0, 5, 1, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot3_pga_model[] = { -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pga_1_v[297], 3, 0), -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pga_1_v[300], 18, 3), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 3, 4, // tri0 - 0, 1, 5, // tri1 - 2, 0, 6 // tri2 -), -gsSPNTriangles_5b( - 1, 7, 8, // tri0 - 1, 2, 9, // tri1 - 0, 10, 11, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 5, // tri count - 12, 13, 14, // tri0 - 12, 14, 15, // tri1 - 16, 17, 18 // tri2 -), -gsSPNTriangles_5b( - 18, 19, 16, // tri0 - 17, 20, 18, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pga_1_v[297], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pga_1_v[300], 18, 3), + gsSPNTrianglesInit_5b(6, // tri count + 0, 3, 4, // tri0 + 0, 1, 5, // tri1 + 2, 0, 6 // tri2 + ), + gsSPNTriangles_5b(1, 7, 8, // tri0 + 1, 2, 9, // tri1 + 0, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(5, // tri count + 12, 13, 14, // tri0 + 12, 14, 15, // tri1 + 16, 17, 18 // tri2 + ), + gsSPNTriangles_5b(18, 19, 16, // tri0 + 17, 20, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_pga_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pga_1_v[318], 4, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pga_1_v[322], 14, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 2, 6, 7, // tri1 - 0, 3, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 1, 9, // tri0 - 2, 10, 11, // tri1 - 3, 2, 12, // tri2 - 3, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 15, 16, 17, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pga_1_v[318], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pga_1_v[322], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 2, 6, 7, // tri1 + 0, 3, 8 // tri2 + ), + gsSPNTriangles_5b(2, 1, 9, // tri0 + 2, 10, 11, // tri1 + 3, 2, 12, // tri2 + 3, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_pga_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pga_1_v[336], 8, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 4, 1, 0 // tri2 -), -gsSPNTriangles_5b( - 5, 3, 6, // tri0 - 0, 7, 4, // tri1 - 2, 6, 3, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pga_1_v[336], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 1, 0 // tri2 + ), + gsSPNTriangles_5b(5, 3, 6, // tri0 + 0, 7, 4, // tri1 + 2, 6, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx base_pga_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pga_1_v[391], 17, 0), -gsSPNTrianglesInit_5b( - 21, // tri count - 0, 1, 2, // tri0 - 2, 3, 0, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 4, 7, 8, // tri0 - 3, 9, 10, // tri1 - 7, 6, 11, // tri2 - 12, 13, 10 // tri3 -), -gsSPNTriangles_5b( - 6, 14, 13, // tri0 - 6, 13, 11, // tri1 - 12, 15, 11, // tri2 - 1, 0, 14 // tri3 -), -gsSPNTriangles_5b( - 14, 5, 1, // tri0 - 14, 10, 13, // tri1 - 14, 6, 5, // tri2 - 0, 10, 14 // tri3 -), -gsSPNTriangles_5b( - 11, 13, 12, // tri0 - 6, 7, 4, // tri1 - 11, 15, 7, // tri2 - 16, 3, 2 // tri3 -), -gsSPNTriangles_5b( - 10, 0, 3, // tri0 - 10, 9, 12, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pga_1_v[391], 17, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 8, // tri0 + 3, 9, 10, // tri1 + 7, 6, 11, // tri2 + 12, 13, 10 // tri3 + ), + gsSPNTriangles_5b(6, 14, 13, // tri0 + 6, 13, 11, // tri1 + 12, 15, 11, // tri2 + 1, 0, 14 // tri3 + ), + gsSPNTriangles_5b(14, 5, 1, // tri0 + 14, 10, 13, // tri1 + 14, 6, 5, // tri2 + 0, 10, 14 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 6, 7, 4, // tri1 + 11, 15, 7, // tri2 + 16, 3, 2 // tri3 + ), + gsSPNTriangles_5b(10, 0, 3, // tri0 + 10, 9, 12, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_pga_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -866,4 +765,4 @@ static cKF_Joint_R_c cKF_je_r_pga_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_pga_1 = { 26, 15, cKF_je_r_pga_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_pga_1 = { 26, 15, cKF_je_r_pga_1_tbl }; diff --git a/src/data/npc/model/mdl/pgb_1.c b/src/data/npc/model/mdl/pgb_1.c index 6bb1c6c9..d4f76fc4 100644 --- a/src/data/npc/model/mdl/pgb_1.c +++ b/src/data/npc/model/mdl/pgb_1.c @@ -6,831 +6,730 @@ static Vtx pgb_1_v[] = { }; static Gfx head_pgb_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pgb_1_v[29], 29, 0), -gsSPNTrianglesInit_5b( - 12, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 0, 2, 6, // tri0 - 9, 10, 3, // tri1 - 11, 6, 3, // tri2 - 2, 9, 6 // tri3 -), -gsSPNTriangles_5b( - 10, 9, 2, // tri0 - 6, 11, 12, // tri1 - 3, 6, 9, // tri2 - 12, 7, 6 // tri3 -), -gsSPNTriangles_5b( - 8, 0, 6, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 5, // tri count - 13, 14, 15, // tri0 - 15, 14, 16, // tri1 - 15, 16, 17 // tri2 -), -gsSPNTriangles_5b( - 13, 18, 14, // tri0 - 19, 17, 16, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 4, // tri count - 20, 21, 22, // tri0 - 23, 21, 20, // tri1 - 24, 22, 21 // tri2 -), -gsSPNTriangles_5b( - 21, 23, 25, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 26, 27, 28, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPVertex(&pgb_1_v[58], 11, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 4, // tri count - 0, 1, 2, // tri0 - 2, 3, 4, // tri1 - 4, 3, 5 // tri2 -), -gsSPNTriangles_5b( - 5, 6, 7, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 8, 9, 10, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pgb_1_v[69], 31, 0), -gsSPNTrianglesInit_5b( - 50, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 3, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 3, 2, 4, // tri0 - 7, 8, 9, // tri1 - 10, 11, 7, // tri2 - 7, 12, 13 // tri3 -), -gsSPNTriangles_5b( - 5, 4, 14, // tri0 - 5, 14, 15, // tri1 - 16, 5, 15, // tri2 - 16, 11, 10 // tri3 -), -gsSPNTriangles_5b( - 17, 16, 10, // tri0 - 8, 18, 9, // tri1 - 0, 19, 20, // tri2 - 8, 14, 18 // tri3 -), -gsSPNTriangles_5b( - 18, 2, 1, // tri0 - 7, 11, 8, // tri1 - 8, 11, 15, // tri2 - 15, 14, 8 // tri3 -), -gsSPNTriangles_5b( - 21, 12, 9, // tri0 - 2, 3, 0, // tri1 - 9, 1, 21, // tri2 - 17, 22, 23 // tri3 -), -gsSPNTriangles_5b( - 24, 22, 17, // tri0 - 24, 17, 10, // tri1 - 1, 0, 20, // tri2 - 12, 7, 9 // tri3 -), -gsSPNTriangles_5b( - 25, 26, 27, // tri0 - 13, 10, 7, // tri1 - 9, 18, 1, // tri2 - 5, 16, 6 // tri3 -), -gsSPNTriangles_5b( - 2, 18, 14, // tri0 - 14, 4, 2, // tri1 - 15, 11, 16, // tri2 - 6, 23, 27 // tri3 -), -gsSPNTriangles_5b( - 25, 28, 3, // tri0 - 27, 23, 28, // tri1 - 27, 28, 25, // tri2 - 3, 6, 26 // tri3 -), -gsSPNTriangles_5b( - 26, 25, 3, // tri0 - 6, 27, 26, // tri1 - 28, 19, 0, // tri2 - 23, 6, 17 // tri3 -), -gsSPNTriangles_5b( - 23, 22, 29, // tri0 - 29, 22, 30, // tri1 - 29, 19, 28, // tri2 - 29, 28, 23 // tri3 -), -gsSPNTriangles_5b( - 30, 19, 29, // tri0 - 6, 16, 17, // tri1 - 0, 3, 28, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&pgb_1_v[100], 10, 0), -gsSPNTrianglesInit_5b( - 2, // tri count - 0, 1, 2, // tri0 - 2, 3, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 4, 5, 6, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 7, 8, 9, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgb_1_v[29], 29, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(0, 2, 6, // tri0 + 9, 10, 3, // tri1 + 11, 6, 3, // tri2 + 2, 9, 6 // tri3 + ), + gsSPNTriangles_5b(10, 9, 2, // tri0 + 6, 11, 12, // tri1 + 3, 6, 9, // tri2 + 12, 7, 6 // tri3 + ), + gsSPNTriangles_5b(8, 0, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(5, // tri count + 13, 14, 15, // tri0 + 15, 14, 16, // tri1 + 15, 16, 17 // tri2 + ), + gsSPNTriangles_5b(13, 18, 14, // tri0 + 19, 17, 16, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 20, 21, 22, // tri0 + 23, 21, 20, // tri1 + 24, 22, 21 // tri2 + ), + gsSPNTriangles_5b(21, 23, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 26, 27, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPVertex(&pgb_1_v[58], 11, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 4, 3, 5 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 8, 9, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgb_1_v[69], 31, 0), + gsSPNTrianglesInit_5b(50, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(3, 2, 4, // tri0 + 7, 8, 9, // tri1 + 10, 11, 7, // tri2 + 7, 12, 13 // tri3 + ), + gsSPNTriangles_5b(5, 4, 14, // tri0 + 5, 14, 15, // tri1 + 16, 5, 15, // tri2 + 16, 11, 10 // tri3 + ), + gsSPNTriangles_5b(17, 16, 10, // tri0 + 8, 18, 9, // tri1 + 0, 19, 20, // tri2 + 8, 14, 18 // tri3 + ), + gsSPNTriangles_5b(18, 2, 1, // tri0 + 7, 11, 8, // tri1 + 8, 11, 15, // tri2 + 15, 14, 8 // tri3 + ), + gsSPNTriangles_5b(21, 12, 9, // tri0 + 2, 3, 0, // tri1 + 9, 1, 21, // tri2 + 17, 22, 23 // tri3 + ), + gsSPNTriangles_5b(24, 22, 17, // tri0 + 24, 17, 10, // tri1 + 1, 0, 20, // tri2 + 12, 7, 9 // tri3 + ), + gsSPNTriangles_5b(25, 26, 27, // tri0 + 13, 10, 7, // tri1 + 9, 18, 1, // tri2 + 5, 16, 6 // tri3 + ), + gsSPNTriangles_5b(2, 18, 14, // tri0 + 14, 4, 2, // tri1 + 15, 11, 16, // tri2 + 6, 23, 27 // tri3 + ), + gsSPNTriangles_5b(25, 28, 3, // tri0 + 27, 23, 28, // tri1 + 27, 28, 25, // tri2 + 3, 6, 26 // tri3 + ), + gsSPNTriangles_5b(26, 25, 3, // tri0 + 6, 27, 26, // tri1 + 28, 19, 0, // tri2 + 23, 6, 17 // tri3 + ), + gsSPNTriangles_5b(23, 22, 29, // tri0 + 29, 22, 30, // tri1 + 29, 19, 28, // tri2 + 29, 28, 23 // tri3 + ), + gsSPNTriangles_5b(30, 19, 29, // tri0 + 6, 16, 17, // tri1 + 0, 3, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&pgb_1_v[100], 10, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 4, 5, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 7, 8, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx mouth_pgb_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pgb_1_v[0], 29, 0), -gsSPNTrianglesInit_5b( - 19, // tri count - 0, 1, 2, // tri0 - 3, 4, 0, // tri1 - 5, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 8, 6, 5, // tri0 - 9, 1, 0, // tri1 - 10, 4, 6, // tri2 - 10, 6, 8 // tri3 -), -gsSPNTriangles_5b( - 8, 11, 10, // tri0 - 12, 11, 8, // tri1 - 10, 11, 9, // tri2 - 4, 3, 7 // tri3 -), -gsSPNTriangles_5b( - 7, 6, 4, // tri0 - 5, 7, 13, // tri1 - 0, 4, 10, // tri2 - 5, 14, 12 // tri3 -), -gsSPNTriangles_5b( - 0, 10, 9, // tri0 - 2, 3, 0, // tri1 - 13, 14, 5, // tri2 - 12, 8, 5 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 15, 16, 17, // tri0 - 18, 19, 20, // tri1 - 18, 20, 21 // tri2 -), -gsSPNTriangles_5b( - 17, 19, 18, // tri0 - 17, 18, 15, // tri1 - 15, 22, 16, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000180, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 4, // tri count - 23, 24, 25, // tri0 - 26, 27, 24, // tri1 - 28, 23, 25 // tri2 -), -gsSPNTriangles_5b( - 23, 26, 24, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgb_1_v[0], 29, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 6, 5, // tri0 + 9, 1, 0, // tri1 + 10, 4, 6, // tri2 + 10, 6, 8 // tri3 + ), + gsSPNTriangles_5b(8, 11, 10, // tri0 + 12, 11, 8, // tri1 + 10, 11, 9, // tri2 + 4, 3, 7 // tri3 + ), + gsSPNTriangles_5b(7, 6, 4, // tri0 + 5, 7, 13, // tri1 + 0, 4, 10, // tri2 + 5, 14, 12 // tri3 + ), + gsSPNTriangles_5b(0, 10, 9, // tri0 + 2, 3, 0, // tri1 + 13, 14, 5, // tri2 + 12, 8, 5 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 18, 20, 21 // tri2 + ), + gsSPNTriangles_5b(17, 19, 18, // tri0 + 17, 18, 15, // tri1 + 15, 22, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x180, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 23, 24, 25, // tri0 + 26, 27, 24, // tri1 + 28, 23, 25 // tri2 + ), + gsSPNTriangles_5b(23, 26, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_pgb_model[] = { -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pgb_1_v[183], 5, 0), -gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pgb_1_v[188], 23, 5), -gsSPNTrianglesInit_5b( - 9, // tri count - 3, 5, 6, // tri0 - 2, 4, 7, // tri1 - 0, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 3, 1, 10, // tri0 - 3, 11, 12, // tri1 - 0, 2, 13, // tri2 - 4, 14, 15 // tri3 -), -gsSPNTriangles_5b( - 2, 17, 16, // tri0 - 4, 3, 18, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 19, 20, 21, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 4, // tri count - 22, 23, 24, // tri0 - 24, 25, 22, // tri1 - 22, 26, 23 // tri2 -), -gsSPNTriangles_5b( - 25, 27, 22, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgb_1_v[183], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pgb_1_v[188], 23, 5), + gsSPNTrianglesInit_5b(9, // tri count + 3, 5, 6, // tri0 + 2, 4, 7, // tri1 + 0, 8, 9 // tri2 + ), + gsSPNTriangles_5b(3, 1, 10, // tri0 + 3, 11, 12, // tri1 + 0, 2, 13, // tri2 + 4, 14, 15 // tri3 + ), + gsSPNTriangles_5b(2, 17, 16, // tri0 + 4, 3, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(4, // tri count + 22, 23, 24, // tri0 + 24, 25, 22, // tri1 + 22, 26, 23 // tri2 + ), + gsSPNTriangles_5b(25, 27, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_pgb_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pgb_1_v[211], 8, 0), -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pgb_1_v[219], 13, 8), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 8, 9, // tri0 - 0, 10, 11, // tri1 - 3, 0, 12 // tri2 -), -gsSPNTriangles_5b( - 5, 13, 14, // tri0 - 5, 4, 15, // tri1 - 1, 6, 16, // tri2 - 7, 18, 17 // tri3 -), -gsSPNTriangles_5b( - 0, 20, 19, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&pgb_1_v[232], 24, 0), -gsSPNTrianglesInit_5b( - 15, // tri count - 0, 1, 2, // tri0 - 0, 3, 4, // tri1 - 5, 4, 3 // tri2 -), -gsSPNTriangles_5b( - 6, 7, 8, // tri0 - 4, 1, 0, // tri1 - 9, 10, 6, // tri2 - 11, 12, 13 // tri3 -), -gsSPNTriangles_5b( - 14, 15, 16, // tri0 - 10, 11, 7, // tri1 - 16, 17, 14, // tri2 - 8, 18, 6 // tri3 -), -gsSPNTriangles_5b( - 7, 6, 10, // tri0 - 19, 20, 21, // tri1 - 13, 12, 22, // tri2 - 23, 19, 21 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgb_1_v[211], 8, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pgb_1_v[219], 13, 8), + gsSPNTrianglesInit_5b(8, // tri count + 2, 8, 9, // tri0 + 0, 10, 11, // tri1 + 3, 0, 12 // tri2 + ), + gsSPNTriangles_5b(5, 13, 14, // tri0 + 5, 4, 15, // tri1 + 1, 6, 16, // tri2 + 7, 18, 17 // tri3 + ), + gsSPNTriangles_5b(0, 20, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&pgb_1_v[232], 24, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 5, 4, 3 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 4, 1, 0, // tri1 + 9, 10, 6, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 10, 11, 7, // tri1 + 16, 17, 14, // tri2 + 8, 18, 6 // tri3 + ), + gsSPNTriangles_5b(7, 6, 10, // tri0 + 19, 20, 21, // tri1 + 13, 12, 22, // tri2 + 23, 19, 21 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_pgb_model[] = { -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pgb_1_v[110], 5, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pgb_1_v[115], 23, 5), -gsSPNTrianglesInit_5b( - 9, // tri count - 3, 5, 6, // tri0 - 4, 2, 7, // tri1 - 0, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 1, 3, 10, // tri0 - 3, 11, 12, // tri1 - 2, 0, 13, // tri2 - 4, 14, 15 // tri3 -), -gsSPNTriangles_5b( - 2, 17, 16, // tri0 - 3, 4, 18, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 19, 20, 21, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 4, // tri count - 22, 23, 24, // tri0 - 24, 25, 22, // tri1 - 23, 26, 24 // tri2 -), -gsSPNTriangles_5b( - 24, 27, 25, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgb_1_v[110], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pgb_1_v[115], 23, 5), + gsSPNTrianglesInit_5b(9, // tri count + 3, 5, 6, // tri0 + 4, 2, 7, // tri1 + 0, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 3, 10, // tri0 + 3, 11, 12, // tri1 + 2, 0, 13, // tri2 + 4, 14, 15 // tri3 + ), + gsSPNTriangles_5b(2, 17, 16, // tri0 + 3, 4, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(4, // tri count + 22, 23, 24, // tri0 + 24, 25, 22, // tri1 + 23, 26, 24 // tri2 + ), + gsSPNTriangles_5b(24, 27, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_pgb_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pgb_1_v[138], 8, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pgb_1_v[146], 13, 8), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 8, 9, // tri0 - 0, 10, 11, // tri1 - 0, 3, 12 // tri2 -), -gsSPNTriangles_5b( - 5, 13, 14, // tri0 - 4, 5, 15, // tri1 - 6, 1, 16, // tri2 - 7, 18, 17 // tri3 -), -gsSPNTriangles_5b( - 0, 20, 19, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&pgb_1_v[159], 24, 0), -gsSPNTrianglesInit_5b( - 15, // tri count - 0, 1, 2, // tri0 - 3, 4, 2, // tri1 - 4, 3, 5 // tri2 -), -gsSPNTriangles_5b( - 6, 7, 8, // tri0 - 2, 1, 3, // tri1 - 8, 9, 10, // tri2 - 11, 12, 13 // tri3 -), -gsSPNTriangles_5b( - 14, 15, 16, // tri0 - 7, 13, 9, // tri1 - 16, 17, 14, // tri2 - 8, 18, 6 // tri3 -), -gsSPNTriangles_5b( - 9, 8, 7, // tri0 - 19, 20, 21, // tri1 - 22, 12, 11, // tri2 - 19, 21, 23 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgb_1_v[138], 8, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pgb_1_v[146], 13, 8), + gsSPNTrianglesInit_5b(8, // tri count + 2, 8, 9, // tri0 + 0, 10, 11, // tri1 + 0, 3, 12 // tri2 + ), + gsSPNTriangles_5b(5, 13, 14, // tri0 + 4, 5, 15, // tri1 + 6, 1, 16, // tri2 + 7, 18, 17 // tri3 + ), + gsSPNTriangles_5b(0, 20, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&pgb_1_v[159], 24, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 4, 3, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 2, 1, 3, // tri1 + 8, 9, 10, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 7, 13, 9, // tri1 + 16, 17, 14, // tri2 + 8, 18, 6 // tri3 + ), + gsSPNTriangles_5b(9, 8, 7, // tri0 + 19, 20, 21, // tri1 + 22, 12, 11, // tri2 + 19, 21, 23 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_pgb_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pgb_1_v[256], 32, 0), -gsSPNTrianglesInit_5b( - 40, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 7, 8, 9, // tri0 - 10, 7, 11, // tri1 - 3, 12, 0, // tri2 - 13, 14, 5 // tri3 -), -gsSPNTriangles_5b( - 15, 16, 17, // tri0 - 18, 19, 20, // tri1 - 1, 20, 2, // tri2 - 3, 19, 18 // tri3 -), -gsSPNTriangles_5b( - 7, 17, 16, // tri0 - 21, 4, 18, // tri1 - 17, 4, 21, // tri2 - 8, 22, 9 // tri3 -), -gsSPNTriangles_5b( - 21, 15, 17, // tri0 - 18, 20, 21, // tri1 - 3, 18, 23, // tri2 - 21, 20, 24 // tri3 -), -gsSPNTriangles_5b( - 21, 24, 15, // tri0 - 8, 15, 22, // tri1 - 2, 19, 3, // tri2 - 16, 8, 7 // tri3 -), -gsSPNTriangles_5b( - 9, 11, 7, // tri0 - 13, 17, 7, // tri1 - 23, 25, 26, // tri2 - 27, 6, 5 // tri3 -), -gsSPNTriangles_5b( - 27, 5, 28, // tri0 - 23, 18, 6, // tri1 - 6, 18, 4, // tri2 - 4, 17, 5 // tri3 -), -gsSPNTriangles_5b( - 25, 23, 6, // tri0 - 5, 17, 13, // tri1 - 14, 13, 10, // tri2 - 13, 7, 10 // tri3 -), -gsSPNTriangles_5b( - 26, 3, 23, // tri0 - 12, 3, 26, // tri1 - 12, 26, 29, // tri2 - 28, 30, 31 // tri3 -), -gsSPNTriangles_5b( - 28, 31, 27, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgb_1_v[256], 32, 0), + gsSPNTrianglesInit_5b(40, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 7, 11, // tri1 + 3, 12, 0, // tri2 + 13, 14, 5 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 1, 20, 2, // tri2 + 3, 19, 18 // tri3 + ), + gsSPNTriangles_5b(7, 17, 16, // tri0 + 21, 4, 18, // tri1 + 17, 4, 21, // tri2 + 8, 22, 9 // tri3 + ), + gsSPNTriangles_5b(21, 15, 17, // tri0 + 18, 20, 21, // tri1 + 3, 18, 23, // tri2 + 21, 20, 24 // tri3 + ), + gsSPNTriangles_5b(21, 24, 15, // tri0 + 8, 15, 22, // tri1 + 2, 19, 3, // tri2 + 16, 8, 7 // tri3 + ), + gsSPNTriangles_5b(9, 11, 7, // tri0 + 13, 17, 7, // tri1 + 23, 25, 26, // tri2 + 27, 6, 5 // tri3 + ), + gsSPNTriangles_5b(27, 5, 28, // tri0 + 23, 18, 6, // tri1 + 6, 18, 4, // tri2 + 4, 17, 5 // tri3 + ), + gsSPNTriangles_5b(25, 23, 6, // tri0 + 5, 17, 13, // tri1 + 14, 13, 10, // tri2 + 13, 7, 10 // tri3 + ), + gsSPNTriangles_5b(26, 3, 23, // tri0 + 12, 3, 26, // tri1 + 12, 26, 29, // tri2 + 28, 30, 31 // tri3 + ), + gsSPNTriangles_5b(28, 31, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail1_pgb_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pgb_1_v[399], 5, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pgb_1_v[404], 5, 5), -gsSPNTrianglesInit_5b( - 5, // tri count - 2, 5, 0, // tri0 - 0, 6, 3, // tri1 - 1, 7, 2 // tri2 -), -gsSPNTriangles_5b( - 4, 8, 1, // tri0 - 4, 3, 9, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgb_1_v[399], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pgb_1_v[404], 5, 5), + gsSPNTrianglesInit_5b(5, // tri count + 2, 5, 0, // tri0 + 0, 6, 3, // tri1 + 1, 7, 2 // tri2 + ), + gsSPNTriangles_5b(4, 8, 1, // tri0 + 4, 3, 9, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot3_pgb_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pgb_1_v[335], 3, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000740, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pgb_1_v[338], 18, 3), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 3, 4, // tri0 - 1, 0, 5, // tri1 - 0, 2, 6 // tri2 -), -gsSPNTriangles_5b( - 2, 1, 7, // tri0 - 2, 8, 9, // tri1 - 0, 10, 11, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 5, // tri count - 12, 13, 14, // tri0 - 12, 14, 15, // tri1 - 16, 17, 18 // tri2 -), -gsSPNTriangles_5b( - 18, 19, 16, // tri0 - 16, 20, 17, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgb_1_v[335], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x740, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pgb_1_v[338], 18, 3), + gsSPNTrianglesInit_5b(6, // tri count + 0, 3, 4, // tri0 + 1, 0, 5, // tri1 + 0, 2, 6 // tri2 + ), + gsSPNTriangles_5b(2, 1, 7, // tri0 + 2, 8, 9, // tri1 + 0, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(5, // tri count + 12, 13, 14, // tri0 + 12, 14, 15, // tri1 + 16, 17, 18 // tri2 + ), + gsSPNTriangles_5b(18, 19, 16, // tri0 + 16, 20, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_pgb_model[] = { -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pgb_1_v[356], 4, 0), -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000740, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pgb_1_v[360], 14, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 2, 6, 7, // tri1 - 3, 0, 8 // tri2 -), -gsSPNTriangles_5b( - 1, 2, 9, // tri0 - 2, 10, 11, // tri1 - 2, 3, 12, // tri2 - 3, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 15, 16, 17, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgb_1_v[356], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x740, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pgb_1_v[360], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 2, 6, 7, // tri1 + 3, 0, 8 // tri2 + ), + gsSPNTriangles_5b(1, 2, 9, // tri0 + 2, 10, 11, // tri1 + 2, 3, 12, // tri2 + 3, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_pgb_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000740, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pgb_1_v[374], 8, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 3, 2, 4 // tri2 -), -gsSPNTriangles_5b( - 5, 0, 6, // tri0 - 4, 7, 3, // tri1 - 0, 5, 1, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x740, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgb_1_v[374], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b(5, 0, 6, // tri0 + 4, 7, 3, // tri1 + 0, 5, 1, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot3_pgb_model[] = { -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pgb_1_v[288], 3, 0), -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000740, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pgb_1_v[291], 18, 3), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 3, 4, // tri0 - 0, 1, 5, // tri1 - 2, 0, 6 // tri2 -), -gsSPNTriangles_5b( - 1, 7, 8, // tri0 - 1, 2, 9, // tri1 - 0, 10, 11, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 5, // tri count - 12, 13, 14, // tri0 - 12, 14, 15, // tri1 - 16, 17, 18 // tri2 -), -gsSPNTriangles_5b( - 18, 19, 16, // tri0 - 17, 20, 18, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgb_1_v[288], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x740, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pgb_1_v[291], 18, 3), + gsSPNTrianglesInit_5b(6, // tri count + 0, 3, 4, // tri0 + 0, 1, 5, // tri1 + 2, 0, 6 // tri2 + ), + gsSPNTriangles_5b(1, 7, 8, // tri0 + 1, 2, 9, // tri1 + 0, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(5, // tri count + 12, 13, 14, // tri0 + 12, 14, 15, // tri1 + 16, 17, 18 // tri2 + ), + gsSPNTriangles_5b(18, 19, 16, // tri0 + 17, 20, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_pgb_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pgb_1_v[309], 4, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000740, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pgb_1_v[313], 14, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 2, 6, 7, // tri1 - 0, 3, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 1, 9, // tri0 - 2, 10, 11, // tri1 - 3, 2, 12, // tri2 - 3, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 15, 16, 17, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgb_1_v[309], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x740, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pgb_1_v[313], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 2, 6, 7, // tri1 + 0, 3, 8 // tri2 + ), + gsSPNTriangles_5b(2, 1, 9, // tri0 + 2, 10, 11, // tri1 + 3, 2, 12, // tri2 + 3, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_pgb_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000740, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pgb_1_v[327], 8, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 4, 1, 0 // tri2 -), -gsSPNTriangles_5b( - 5, 3, 6, // tri0 - 0, 7, 4, // tri1 - 2, 6, 3, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x740, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgb_1_v[327], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 1, 0 // tri2 + ), + gsSPNTriangles_5b(5, 3, 6, // tri0 + 0, 7, 4, // tri1 + 2, 6, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx base_pgb_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pgb_1_v[382], 17, 0), -gsSPNTrianglesInit_5b( - 21, // tri count - 0, 1, 2, // tri0 - 2, 3, 0, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 4, 7, 8, // tri0 - 3, 9, 10, // tri1 - 7, 6, 11, // tri2 - 12, 13, 10 // tri3 -), -gsSPNTriangles_5b( - 6, 14, 13, // tri0 - 6, 13, 11, // tri1 - 12, 15, 11, // tri2 - 1, 0, 14 // tri3 -), -gsSPNTriangles_5b( - 14, 5, 1, // tri0 - 14, 10, 13, // tri1 - 14, 6, 5, // tri2 - 0, 10, 14 // tri3 -), -gsSPNTriangles_5b( - 11, 13, 12, // tri0 - 6, 7, 4, // tri1 - 11, 15, 7, // tri2 - 16, 3, 2 // tri3 -), -gsSPNTriangles_5b( - 10, 0, 3, // tri0 - 10, 9, 12, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgb_1_v[382], 17, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 8, // tri0 + 3, 9, 10, // tri1 + 7, 6, 11, // tri2 + 12, 13, 10 // tri3 + ), + gsSPNTriangles_5b(6, 14, 13, // tri0 + 6, 13, 11, // tri1 + 12, 15, 11, // tri2 + 1, 0, 14 // tri3 + ), + gsSPNTriangles_5b(14, 5, 1, // tri0 + 14, 10, 13, // tri1 + 14, 6, 5, // tri2 + 0, 10, 14 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 6, 7, 4, // tri1 + 11, 15, 7, // tri2 + 16, 3, 2 // tri3 + ), + gsSPNTriangles_5b(10, 0, 3, // tri0 + 10, 9, 12, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_pgb_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -862,4 +761,4 @@ static cKF_Joint_R_c cKF_je_r_pgb_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_pgb_1 = { 26, 15, cKF_je_r_pgb_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_pgb_1 = { 26, 15, cKF_je_r_pgb_1_tbl }; diff --git a/src/data/npc/model/mdl/pgn_1.c b/src/data/npc/model/mdl/pgn_1.c index 479d787b..3f998fb4 100644 --- a/src/data/npc/model/mdl/pgn_1.c +++ b/src/data/npc/model/mdl/pgn_1.c @@ -6,710 +6,630 @@ static Vtx pgn_1_v[] = { }; static Gfx head_pgn_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pgn_1_v[13], 9, 0), -gsSPMatrix(0x0D000380, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pgn_1_v[22], 9, 9), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 9, // tri0 - 1, 11, 10, // tri1 - 7, 0, 12 // tri2 -), -gsSPNTriangles_5b( - 0, 14, 13, // tri0 - 1, 4, 15, // tri1 - 4, 17, 16, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&pgn_1_v[31], 14, 9), -gsSPNTrianglesInit_5b( - 9, // tri count - 5, 6, 9, // tri0 - 6, 11, 10, // tri1 - 8, 13, 12 // tri2 -), -gsSPNTriangles_5b( - 8, 5, 14, // tri0 - 2, 8, 15, // tri1 - 5, 16, 17, // tri2 - 2, 18, 19 // tri3 -), -gsSPNTriangles_5b( - 3, 2, 20, // tri0 - 2, 22, 21, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&pgn_1_v[45], 16, 0), -gsSPNTrianglesInit_5b( - 18, // tri count - 0, 1, 2, // tri0 - 3, 4, 0, // tri1 - 3, 0, 5 // tri2 -), -gsSPNTriangles_5b( - 2, 5, 0, // tri0 - 6, 4, 7, // tri1 - 6, 7, 8, // tri2 - 9, 10, 11 // tri3 -), -gsSPNTriangles_5b( - 9, 11, 12, // tri0 - 4, 3, 13, // tri1 - 13, 7, 4, // tri2 - 9, 0, 4 // tri3 -), -gsSPNTriangles_5b( - 9, 4, 6, // tri0 - 8, 14, 15, // tri1 - 8, 15, 6, // tri2 - 6, 15, 10 // tri3 -), -gsSPNTriangles_5b( - 6, 10, 9, // tri0 - 12, 1, 0, // tri1 - 12, 0, 9, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&pgn_1_v[61], 31, 0), -gsSPNTrianglesInit_5b( - 30, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 3, 5, 2 // tri2 -), -gsSPNTriangles_5b( - 3, 6, 7, // tri0 - 8, 7, 9, // tri1 - 9, 10, 8, // tri2 - 11, 0, 12 // tri3 -), -gsSPNTriangles_5b( - 11, 1, 0, // tri0 - 13, 14, 4, // tri1 - 15, 14, 16, // tri2 - 17, 18, 19 // tri3 -), -gsSPNTriangles_5b( - 20, 0, 2, // tri0 - 12, 0, 20, // tri1 - 13, 7, 8, // tri2 - 13, 16, 14 // tri3 -), -gsSPNTriangles_5b( - 18, 17, 20, // tri0 - 20, 17, 21, // tri1 - 22, 16, 13, // tri2 - 23, 22, 13 // tri3 -), -gsSPNTriangles_5b( - 20, 21, 24, // tri0 - 3, 7, 13, // tri1 - 5, 18, 20, // tri2 - 13, 4, 3 // tri3 -), -gsSPNTriangles_5b( - 2, 5, 20, // tri0 - 6, 3, 2, // tri1 - 6, 2, 1, // tri2 - 12, 25, 11 // tri3 -), -gsSPNTriangles_5b( - 7, 6, 9, // tri0 - 13, 8, 23, // tri1 - 24, 12, 20, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000180, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 3, // tri count - 26, 27, 28, // tri0 - 27, 26, 29, // tri1 - 30, 28, 27 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&pgn_1_v[92], 23, 0), -gsSPNTrianglesInit_5b( - 4, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 0, 2, 6 // tri2 -), -gsSPNTriangles_5b( - 6, 7, 0, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 5, // tri count - 8, 9, 10, // tri0 - 11, 12, 8, // tri1 - 9, 8, 12 // tri2 -), -gsSPNTriangles_5b( - 10, 13, 8, // tri0 - 8, 14, 11, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 2, // tri count - 15, 16, 17, // tri0 - 17, 18, 15, // tri1 - 0, 0, 0 // tri2 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 19, 20, 21, // tri0 - 21, 22, 19, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgn_1_v[13], 9, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*14, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pgn_1_v[22], 9, 9), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 9, // tri0 + 1, 11, 10, // tri1 + 7, 0, 12 // tri2 + ), + gsSPNTriangles_5b(0, 14, 13, // tri0 + 1, 4, 15, // tri1 + 4, 17, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&pgn_1_v[31], 14, 9), + gsSPNTrianglesInit_5b(9, // tri count + 5, 6, 9, // tri0 + 6, 11, 10, // tri1 + 8, 13, 12 // tri2 + ), + gsSPNTriangles_5b(8, 5, 14, // tri0 + 2, 8, 15, // tri1 + 5, 16, 17, // tri2 + 2, 18, 19 // tri3 + ), + gsSPNTriangles_5b(3, 2, 20, // tri0 + 2, 22, 21, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&pgn_1_v[45], 16, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 3, 0, 5 // tri2 + ), + gsSPNTriangles_5b(2, 5, 0, // tri0 + 6, 4, 7, // tri1 + 6, 7, 8, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b(9, 11, 12, // tri0 + 4, 3, 13, // tri1 + 13, 7, 4, // tri2 + 9, 0, 4 // tri3 + ), + gsSPNTriangles_5b(9, 4, 6, // tri0 + 8, 14, 15, // tri1 + 8, 15, 6, // tri2 + 6, 15, 10 // tri3 + ), + gsSPNTriangles_5b(6, 10, 9, // tri0 + 12, 1, 0, // tri1 + 12, 0, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&pgn_1_v[61], 31, 0), + gsSPNTrianglesInit_5b(30, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 2 // tri2 + ), + gsSPNTriangles_5b(3, 6, 7, // tri0 + 8, 7, 9, // tri1 + 9, 10, 8, // tri2 + 11, 0, 12 // tri3 + ), + gsSPNTriangles_5b(11, 1, 0, // tri0 + 13, 14, 4, // tri1 + 15, 14, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(20, 0, 2, // tri0 + 12, 0, 20, // tri1 + 13, 7, 8, // tri2 + 13, 16, 14 // tri3 + ), + gsSPNTriangles_5b(18, 17, 20, // tri0 + 20, 17, 21, // tri1 + 22, 16, 13, // tri2 + 23, 22, 13 // tri3 + ), + gsSPNTriangles_5b(20, 21, 24, // tri0 + 3, 7, 13, // tri1 + 5, 18, 20, // tri2 + 13, 4, 3 // tri3 + ), + gsSPNTriangles_5b(2, 5, 20, // tri0 + 6, 3, 2, // tri1 + 6, 2, 1, // tri2 + 12, 25, 11 // tri3 + ), + gsSPNTriangles_5b(7, 6, 9, // tri0 + 13, 8, 23, // tri1 + 24, 12, 20, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x180, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 26, 27, 28, // tri0 + 27, 26, 29, // tri1 + 30, 28, 27 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&pgn_1_v[92], 23, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 2, 6 // tri2 + ), + gsSPNTriangles_5b(6, 7, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(5, // tri count + 8, 9, 10, // tri0 + 11, 12, 8, // tri1 + 9, 8, 12 // tri2 + ), + gsSPNTriangles_5b(10, 13, 8, // tri0 + 8, 14, 11, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 15, 16, 17, // tri0 + 17, 18, 15, // tri1 + 0, 0, 0 // tri2 + ), + gsSPNTrianglesInit_5b(2, // tri count + 19, 20, 21, // tri0 + 21, 22, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx mouth_pgn_model[] = { -gsSPMatrix(0x0D000380, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pgn_1_v[0], 5, 0), -gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pgn_1_v[5], 8, 5), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 5, // tri0 - 2, 7, 6, // tri1 - 0, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 4, 2, 10, // tri0 - 3, 0, 11, // tri1 - 1, 4, 12, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*14, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgn_1_v[0], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pgn_1_v[5], 8, 5), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 5, // tri0 + 2, 7, 6, // tri1 + 0, 9, 8 // tri2 + ), + gsSPNTriangles_5b(4, 2, 10, // tri0 + 3, 0, 11, // tri1 + 1, 4, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_pgn_model[] = { -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pgn_1_v[145], 3, 0), -gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pgn_1_v[148], 15, 3), -gsSPNTrianglesInit_5b( - 7, // tri count - 2, 3, 4, // tri0 - 1, 2, 5, // tri1 - 2, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 8, 9, // tri0 - 1, 10, 0, // tri1 - 2, 11, 12, // tri2 - 2, 0, 13 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 14, 15, 16, // tri0 - 17, 14, 16, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgn_1_v[145], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pgn_1_v[148], 15, 3), + gsSPNTrianglesInit_5b(7, // tri count + 2, 3, 4, // tri0 + 1, 2, 5, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 1, 10, 0, // tri1 + 2, 11, 12, // tri2 + 2, 0, 13 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 14, 15, 16, // tri0 + 17, 14, 16, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_pgn_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pgn_1_v[163], 3, 0), -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pgn_1_v[166], 9, 3), -gsSPNTrianglesInit_5b( - 6, // tri count - 2, 3, 4, // tri0 - 1, 2, 5, // tri1 - 1, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 0, 8, 9, // tri0 - 2, 0, 10, // tri1 - 0, 1, 11, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgn_1_v[163], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pgn_1_v[166], 9, 3), + gsSPNTrianglesInit_5b(6, // tri count + 2, 3, 4, // tri0 + 1, 2, 5, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b(0, 8, 9, // tri0 + 2, 0, 10, // tri1 + 0, 1, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_pgn_model[] = { -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pgn_1_v[115], 3, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pgn_1_v[118], 15, 3), -gsSPNTrianglesInit_5b( - 7, // tri count - 2, 3, 4, // tri0 - 2, 1, 5, // tri1 - 2, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 0, 8, 9, // tri0 - 0, 10, 1, // tri1 - 2, 11, 12, // tri2 - 0, 2, 13 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 14, 15, 16, // tri0 - 14, 16, 17, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgn_1_v[115], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pgn_1_v[118], 15, 3), + gsSPNTrianglesInit_5b(7, // tri count + 2, 3, 4, // tri0 + 2, 1, 5, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(0, 8, 9, // tri0 + 0, 10, 1, // tri1 + 2, 11, 12, // tri2 + 0, 2, 13 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 14, 15, 16, // tri0 + 14, 16, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_pgn_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pgn_1_v[133], 3, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pgn_1_v[136], 9, 3), -gsSPNTrianglesInit_5b( - 6, // tri count - 2, 3, 4, // tri0 - 2, 1, 5, // tri1 - 1, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 0, 8, 9, // tri0 - 0, 2, 10, // tri1 - 1, 0, 11, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgn_1_v[133], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pgn_1_v[136], 9, 3), + gsSPNTrianglesInit_5b(6, // tri count + 2, 3, 4, // tri0 + 2, 1, 5, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b(0, 8, 9, // tri0 + 0, 2, 10, // tri1 + 1, 0, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_pgn_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pgn_1_v[175], 11, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pgn_1_v[186], 19, 11), -gsSPNTrianglesInit_5b( - 13, // tri count - 1, 12, 11, // tri0 - 3, 0, 13, // tri1 - 3, 14, 15 // tri2 -), -gsSPNTriangles_5b( - 0, 17, 16, // tri0 - 0, 2, 18, // tri1 - 9, 5, 19, // tri2 - 7, 6, 20 // tri3 -), -gsSPNTriangles_5b( - 5, 8, 21, // tri0 - 10, 23, 22, // tri1 - 6, 4, 24, // tri2 - 6, 26, 25 // tri3 -), -gsSPNTriangles_5b( - 5, 28, 27, // tri0 - 2, 1, 29, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&pgn_1_v[205], 5, 11), -gsSPNTrianglesInit_5b( - 3, // tri count - 1, 9, 11, // tri0 - 9, 13, 12, // tri1 - 4, 15, 14 // tri2 -), -gsSPVertex(&pgn_1_v[210], 21, 0), -gsSPNTrianglesInit_5b( - 21, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 5, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 7, 8, 9, // tri0 - 9, 10, 11, // tri1 - 12, 13, 11, // tri2 - 1, 13, 12 // tri3 -), -gsSPNTriangles_5b( - 14, 6, 4, // tri0 - 1, 15, 2, // tri1 - 4, 16, 14, // tri2 - 12, 15, 1 // tri3 -), -gsSPNTriangles_5b( - 14, 8, 7, // tri0 - 17, 16, 3, // tri1 - 3, 16, 4, // tri2 - 17, 18, 16 // tri3 -), -gsSPNTriangles_5b( - 2, 15, 19, // tri0 - 15, 20, 19, // tri1 - 8, 10, 9, // tri2 - 11, 13, 0 // tri3 -), -gsSPNTriangles_5b( - 11, 10, 12, // tri0 - 7, 6, 14, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgn_1_v[175], 11, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pgn_1_v[186], 19, 11), + gsSPNTrianglesInit_5b(13, // tri count + 1, 12, 11, // tri0 + 3, 0, 13, // tri1 + 3, 14, 15 // tri2 + ), + gsSPNTriangles_5b(0, 17, 16, // tri0 + 0, 2, 18, // tri1 + 9, 5, 19, // tri2 + 7, 6, 20 // tri3 + ), + gsSPNTriangles_5b(5, 8, 21, // tri0 + 10, 23, 22, // tri1 + 6, 4, 24, // tri2 + 6, 26, 25 // tri3 + ), + gsSPNTriangles_5b(5, 28, 27, // tri0 + 2, 1, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&pgn_1_v[205], 5, 11), + gsSPNTrianglesInit_5b(3, // tri count + 1, 9, 11, // tri0 + 9, 13, 12, // tri1 + 4, 15, 14 // tri2 + ), + gsSPVertex(&pgn_1_v[210], 21, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 9, 10, 11, // tri1 + 12, 13, 11, // tri2 + 1, 13, 12 // tri3 + ), + gsSPNTriangles_5b(14, 6, 4, // tri0 + 1, 15, 2, // tri1 + 4, 16, 14, // tri2 + 12, 15, 1 // tri3 + ), + gsSPNTriangles_5b(14, 8, 7, // tri0 + 17, 16, 3, // tri1 + 3, 16, 4, // tri2 + 17, 18, 16 // tri3 + ), + gsSPNTriangles_5b(2, 15, 19, // tri0 + 15, 20, 19, // tri1 + 8, 10, 9, // tri2 + 11, 13, 0 // tri3 + ), + gsSPNTriangles_5b(11, 10, 12, // tri0 + 7, 6, 14, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail1_pgn_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pgn_1_v[231], 5, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pgn_1_v[236], 14, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 3, 2, 5, // tri0 - 0, 4, 6, // tri1 - 4, 3, 7 // tri2 -), -gsSPNTriangles_5b( - 3, 9, 8, // tri0 - 0, 10, 1, // tri1 - 2, 1, 11, // tri2 - 2, 12, 13 // tri3 -), -gsSPNTriangles_5b( - 0, 14, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 16, 17, 18, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgn_1_v[231], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pgn_1_v[236], 14, 5), + gsSPNTrianglesInit_5b(8, // tri count + 3, 2, 5, // tri0 + 0, 4, 6, // tri1 + 4, 3, 7 // tri2 + ), + gsSPNTriangles_5b(3, 9, 8, // tri0 + 0, 10, 1, // tri1 + 2, 1, 11, // tri2 + 2, 12, 13 // tri3 + ), + gsSPNTriangles_5b(0, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 16, 17, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot3_pgn_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pgn_1_v[301], 4, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pgn_1_v[305], 18, 4), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 4, 5, // tri0 - 2, 1, 6, // tri1 - 2, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 0, 3, 9, // tri0 - 1, 0, 10, // tri1 - 0, 11, 12, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 5, // tri count - 13, 14, 15, // tri0 - 16, 17, 13, // tri1 - 13, 15, 16 // tri2 -), -gsSPNTriangles_5b( - 18, 19, 20, // tri0 - 18, 20, 21, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgn_1_v[301], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pgn_1_v[305], 18, 4), + gsSPNTrianglesInit_5b(6, // tri count + 0, 4, 5, // tri0 + 2, 1, 6, // tri1 + 2, 7, 8 // tri2 + ), + gsSPNTriangles_5b(0, 3, 9, // tri0 + 1, 0, 10, // tri1 + 0, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(5, // tri count + 13, 14, 15, // tri0 + 16, 17, 13, // tri1 + 13, 15, 16 // tri2 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 18, 20, 21, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_pgn_model[] = { -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pgn_1_v[323], 5, 0), -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pgn_1_v[328], 14, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 2, 5, 6, // tri0 - 2, 3, 7, // tri1 - 3, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 0, 2, 10, // tri0 - 4, 1, 11, // tri1 - 2, 12, 13, // tri2 - 4, 14, 15 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 16, 17, 18, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgn_1_v[323], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pgn_1_v[328], 14, 5), + gsSPNTrianglesInit_5b(7, // tri count + 2, 5, 6, // tri0 + 2, 3, 7, // tri1 + 3, 8, 9 // tri2 + ), + gsSPNTriangles_5b(0, 2, 10, // tri0 + 4, 1, 11, // tri1 + 2, 12, 13, // tri2 + 4, 14, 15 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 16, 17, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_pgn_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pgn_1_v[342], 10, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 7, 0, 8, // tri0 - 6, 9, 4, // tri1 - 0, 7, 1, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgn_1_v[342], 10, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 0, 8, // tri0 + 6, 9, 4, // tri1 + 0, 7, 1, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot3_pgn_model[] = { -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pgn_1_v[250], 4, 0), -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pgn_1_v[254], 18, 4), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 4, 5, // tri0 - 1, 6, 7, // tri1 - 1, 2, 8 // tri2 -), -gsSPNTriangles_5b( - 3, 0, 9, // tri0 - 0, 1, 10, // tri1 - 0, 11, 12, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 5, // tri count - 13, 14, 15, // tri0 - 15, 16, 17, // tri1 - 17, 13, 15 // tri2 -), -gsSPNTriangles_5b( - 18, 19, 20, // tri0 - 18, 20, 21, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgn_1_v[250], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pgn_1_v[254], 18, 4), + gsSPNTrianglesInit_5b(6, // tri count + 0, 4, 5, // tri0 + 1, 6, 7, // tri1 + 1, 2, 8 // tri2 + ), + gsSPNTriangles_5b(3, 0, 9, // tri0 + 0, 1, 10, // tri1 + 0, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(5, // tri count + 13, 14, 15, // tri0 + 15, 16, 17, // tri1 + 17, 13, 15 // tri2 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 18, 20, 21, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_pgn_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pgn_1_v[272], 5, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pgn_1_v[277], 14, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 2, 5, 6, // tri0 - 3, 2, 7, // tri1 - 3, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 2, 0, 10, // tri0 - 1, 4, 11, // tri1 - 2, 12, 13, // tri2 - 4, 14, 15 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 16, 17, 18, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgn_1_v[272], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pgn_1_v[277], 14, 5), + gsSPNTrianglesInit_5b(7, // tri count + 2, 5, 6, // tri0 + 3, 2, 7, // tri1 + 3, 8, 9 // tri2 + ), + gsSPNTriangles_5b(2, 0, 10, // tri0 + 1, 4, 11, // tri1 + 2, 12, 13, // tri2 + 4, 14, 15 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 16, 17, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_pgn_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pgn_1_v[291], 10, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 7, 3, 8, // tri0 - 6, 9, 4, // tri1 - 2, 8, 3, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgn_1_v[291], 10, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 3, 8, // tri0 + 6, 9, 4, // tri1 + 2, 8, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx base_pgn_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pgn_1_v[352], 30, 0), -gsSPNTrianglesInit_5b( - 15, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 3, 7 // tri2 -), -gsSPNTriangles_5b( - 2, 8, 6, // tri0 - 9, 10, 11, // tri1 - 11, 12, 9, // tri2 - 9, 0, 10 // tri3 -), -gsSPNTriangles_5b( - 1, 13, 8, // tri0 - 10, 0, 2, // tri1 - 7, 14, 6, // tri2 - 6, 14, 2 // tri3 -), -gsSPNTriangles_5b( - 8, 2, 1, // tri0 - 5, 7, 3, // tri1 - 7, 5, 12, // tri2 - 7, 12, 11 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 18, // tri count - 15, 16, 17, // tri0 - 18, 19, 20, // tri1 - 21, 22, 15 // tri2 -), -gsSPNTriangles_5b( - 20, 23, 18, // tri0 - 24, 15, 17, // tri1 - 21, 18, 23, // tri2 - 21, 25, 18 // tri3 -), -gsSPNTriangles_5b( - 21, 24, 25, // tri0 - 22, 21, 26, // tri1 - 17, 27, 24, // tri2 - 15, 22, 16 // tri3 -), -gsSPNTriangles_5b( - 22, 26, 28, // tri0 - 26, 29, 28, // tri1 - 28, 16, 22, // tri2 - 20, 29, 26 // tri3 -), -gsSPNTriangles_5b( - 20, 26, 23, // tri0 - 15, 24, 21, // tri1 - 23, 26, 21, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgn_1_v[352], 30, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b(2, 8, 6, // tri0 + 9, 10, 11, // tri1 + 11, 12, 9, // tri2 + 9, 0, 10 // tri3 + ), + gsSPNTriangles_5b(1, 13, 8, // tri0 + 10, 0, 2, // tri1 + 7, 14, 6, // tri2 + 6, 14, 2 // tri3 + ), + gsSPNTriangles_5b(8, 2, 1, // tri0 + 5, 7, 3, // tri1 + 7, 5, 12, // tri2 + 7, 12, 11 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(18, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 21, 22, 15 // tri2 + ), + gsSPNTriangles_5b(20, 23, 18, // tri0 + 24, 15, 17, // tri1 + 21, 18, 23, // tri2 + 21, 25, 18 // tri3 + ), + gsSPNTriangles_5b(21, 24, 25, // tri0 + 22, 21, 26, // tri1 + 17, 27, 24, // tri2 + 15, 22, 16 // tri3 + ), + gsSPNTriangles_5b(22, 26, 28, // tri0 + 26, 29, 28, // tri1 + 28, 16, 22, // tri2 + 20, 29, 26 // tri3 + ), + gsSPNTriangles_5b(20, 26, 23, // tri0 + 15, 24, 21, // tri1 + 23, 26, 21, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_pgn_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -741,4 +661,4 @@ static cKF_Joint_R_c cKF_je_r_pgn_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_pgn_1 = { 26, 15, cKF_je_r_pgn_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_pgn_1 = { 26, 15, cKF_je_r_pgn_1_tbl }; diff --git a/src/data/npc/model/mdl/pig_1.c b/src/data/npc/model/mdl/pig_1.c index ff1c8320..64d1f4bd 100644 --- a/src/data/npc/model/mdl/pig_1.c +++ b/src/data/npc/model/mdl/pig_1.c @@ -6,592 +6,524 @@ static Vtx pig_1_v[] = { }; static Gfx head_pig_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pig_1_v[0], 23, 0), -gsSPNTrianglesInit_5b( - 31, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 0, 6, 1 // tri2 -), -gsSPNTriangles_5b( - 7, 5, 4, // tri0 - 5, 8, 3, // tri1 - 0, 4, 9, // tri2 - 0, 9, 10 // tri3 -), -gsSPNTriangles_5b( - 4, 3, 9, // tri0 - 11, 12, 4, // tri1 - 11, 4, 0, // tri2 - 13, 10, 9 // tri3 -), -gsSPNTriangles_5b( - 13, 9, 14, // tri0 - 14, 9, 3, // tri1 - 13, 6, 10, // tri2 - 6, 13, 15 // tri3 -), -gsSPNTriangles_5b( - 6, 15, 16, // tri0 - 1, 6, 16, // tri1 - 17, 14, 18, // tri2 - 18, 3, 8 // tri3 -), -gsSPNTriangles_5b( - 18, 14, 3, // tri0 - 17, 15, 13, // tri1 - 17, 13, 14, // tri2 - 4, 12, 7 // tri3 -), -gsSPNTriangles_5b( - 2, 11, 0, // tri0 - 11, 2, 19, // tri1 - 20, 21, 12, // tri2 - 20, 12, 11 // tri3 -), -gsSPNTriangles_5b( - 12, 21, 22, // tri0 - 22, 7, 12, // tri1 - 19, 20, 11, // tri2 - 10, 6, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&pig_1_v[23], 30, 0), -gsSPNTrianglesInit_5b( - 21, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 4, 3 // tri2 -), -gsSPNTriangles_5b( - 7, 1, 0, // tri0 - 6, 1, 7, // tri1 - 7, 0, 8, // tri2 - 8, 0, 9 // tri3 -), -gsSPNTriangles_5b( - 3, 2, 1, // tri0 - 10, 11, 6, // tri1 - 7, 12, 10, // tri2 - 13, 2, 14 // tri3 -), -gsSPNTriangles_5b( - 15, 9, 0, // tri0 - 16, 4, 6, // tri1 - 11, 17, 16, // tri2 - 11, 16, 6 // tri3 -), -gsSPNTriangles_5b( - 0, 13, 15, // tri0 - 15, 18, 9, // tri1 - 10, 6, 7, // tri2 - 8, 12, 7 // tri3 -), -gsSPNTriangles_5b( - 3, 1, 6, // tri0 - 2, 13, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 15, // tri count - 19, 20, 21, // tri0 - 22, 23, 19, // tri1 - 24, 25, 22 // tri2 -), -gsSPNTriangles_5b( - 22, 26, 23, // tri0 - 26, 22, 25, // tri1 - 20, 27, 21, // tri2 - 28, 21, 27 // tri3 -), -gsSPNTriangles_5b( - 21, 29, 19, // tri0 - 19, 29, 22, // tri1 - 24, 28, 27, // tri2 - 21, 28, 24 // tri3 -), -gsSPNTriangles_5b( - 24, 22, 29, // tri0 - 24, 29, 21, // tri1 - 26, 25, 24, // tri2 - 24, 27, 26 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&pig_1_v[53], 14, 0), -gsSPNTrianglesInit_5b( - 15, // tri count - 0, 1, 2, // tri0 - 0, 3, 4, // tri1 - 5, 2, 1 // tri2 -), -gsSPNTriangles_5b( - 6, 7, 4, // tri0 - 5, 1, 8, // tri1 - 1, 4, 8, // tri2 - 5, 9, 10 // tri3 -), -gsSPNTriangles_5b( - 4, 3, 6, // tri0 - 10, 11, 5, // tri1 - 3, 0, 12, // tri2 - 2, 11, 13 // tri3 -), -gsSPNTriangles_5b( - 4, 7, 8, // tri0 - 1, 0, 4, // tri1 - 8, 9, 5, // tri2 - 2, 5, 11 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pig_1_v[0], 23, 0), + gsSPNTrianglesInit_5b(31, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 1 // tri2 + ), + gsSPNTriangles_5b(7, 5, 4, // tri0 + 5, 8, 3, // tri1 + 0, 4, 9, // tri2 + 0, 9, 10 // tri3 + ), + gsSPNTriangles_5b(4, 3, 9, // tri0 + 11, 12, 4, // tri1 + 11, 4, 0, // tri2 + 13, 10, 9 // tri3 + ), + gsSPNTriangles_5b(13, 9, 14, // tri0 + 14, 9, 3, // tri1 + 13, 6, 10, // tri2 + 6, 13, 15 // tri3 + ), + gsSPNTriangles_5b(6, 15, 16, // tri0 + 1, 6, 16, // tri1 + 17, 14, 18, // tri2 + 18, 3, 8 // tri3 + ), + gsSPNTriangles_5b(18, 14, 3, // tri0 + 17, 15, 13, // tri1 + 17, 13, 14, // tri2 + 4, 12, 7 // tri3 + ), + gsSPNTriangles_5b(2, 11, 0, // tri0 + 11, 2, 19, // tri1 + 20, 21, 12, // tri2 + 20, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 21, 22, // tri0 + 22, 7, 12, // tri1 + 19, 20, 11, // tri2 + 10, 6, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&pig_1_v[23], 30, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 4, 3 // tri2 + ), + gsSPNTriangles_5b(7, 1, 0, // tri0 + 6, 1, 7, // tri1 + 7, 0, 8, // tri2 + 8, 0, 9 // tri3 + ), + gsSPNTriangles_5b(3, 2, 1, // tri0 + 10, 11, 6, // tri1 + 7, 12, 10, // tri2 + 13, 2, 14 // tri3 + ), + gsSPNTriangles_5b(15, 9, 0, // tri0 + 16, 4, 6, // tri1 + 11, 17, 16, // tri2 + 11, 16, 6 // tri3 + ), + gsSPNTriangles_5b(0, 13, 15, // tri0 + 15, 18, 9, // tri1 + 10, 6, 7, // tri2 + 8, 12, 7 // tri3 + ), + gsSPNTriangles_5b(3, 1, 6, // tri0 + 2, 13, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(15, // tri count + 19, 20, 21, // tri0 + 22, 23, 19, // tri1 + 24, 25, 22 // tri2 + ), + gsSPNTriangles_5b(22, 26, 23, // tri0 + 26, 22, 25, // tri1 + 20, 27, 21, // tri2 + 28, 21, 27 // tri3 + ), + gsSPNTriangles_5b(21, 29, 19, // tri0 + 19, 29, 22, // tri1 + 24, 28, 27, // tri2 + 21, 28, 24 // tri3 + ), + gsSPNTriangles_5b(24, 22, 29, // tri0 + 24, 29, 21, // tri1 + 26, 25, 24, // tri2 + 24, 27, 26 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&pig_1_v[53], 14, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 5, 2, 1 // tri2 + ), + gsSPNTriangles_5b(6, 7, 4, // tri0 + 5, 1, 8, // tri1 + 1, 4, 8, // tri2 + 5, 9, 10 // tri3 + ), + gsSPNTriangles_5b(4, 3, 6, // tri0 + 10, 11, 5, // tri1 + 3, 0, 12, // tri2 + 2, 11, 13 // tri3 + ), + gsSPNTriangles_5b(4, 7, 8, // tri0 + 1, 0, 4, // tri1 + 8, 9, 5, // tri2 + 2, 5, 11 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_pig_model[] = { -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pig_1_v[103], 5, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pig_1_v[108], 16, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 5, 6, // tri0 - 4, 7, 8, // tri1 - 4, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 0, 1, 11, // tri0 - 2, 4, 12, // tri1 - 0, 13, 14, // tri2 - 3, 0, 15 // tri3 -), -gsSPNTriangles_5b( - 4, 3, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 20, 19, 18, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pig_1_v[103], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pig_1_v[108], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(0, 1, 11, // tri0 + 2, 4, 12, // tri1 + 0, 13, 14, // tri2 + 3, 0, 15 // tri3 + ), + gsSPNTriangles_5b(4, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 19, 18, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_pig_model[] = { -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pig_1_v[124], 4, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pig_1_v[128], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 0, 6, 7, // tri1 - 2, 0, 8 // tri2 -), -gsSPNTriangles_5b( - 3, 2, 9, // tri0 - 2, 11, 10, // tri1 - 3, 13, 12, // tri2 - 1, 3, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pig_1_v[124], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pig_1_v[128], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 2, 0, 8 // tri2 + ), + gsSPNTriangles_5b(3, 2, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 1, 3, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_pig_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pig_1_v[67], 5, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pig_1_v[72], 16, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 5, 6, // tri0 - 4, 7, 8, // tri1 - 4, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 11, // tri0 - 4, 2, 12, // tri1 - 0, 13, 14, // tri2 - 0, 3, 15 // tri3 -), -gsSPNTriangles_5b( - 3, 4, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 18, 17, 20, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pig_1_v[67], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pig_1_v[72], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 + ), + gsSPNTriangles_5b(3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_pig_model[] = { -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pig_1_v[88], 4, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pig_1_v[92], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 0, 6, 7, // tri1 - 0, 2, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 3, 9, // tri0 - 2, 11, 10, // tri1 - 3, 13, 12, // tri2 - 3, 1, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pig_1_v[88], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pig_1_v[92], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 + ), + gsSPNTriangles_5b(2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_pig_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pig_1_v[139], 7, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 252, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pig_1_v[146], 20, 7), -gsSPNTrianglesInit_5b( - 13, // tri count - 4, 7, 1, // tri0 - 5, 0, 8, // tri1 - 2, 6, 9 // tri2 -), -gsSPNTriangles_5b( - 6, 3, 10, // tri0 - 1, 11, 12, // tri1 - 0, 13, 14, // tri2 - 0, 15, 16 // tri3 -), -gsSPNTriangles_5b( - 1, 18, 17, // tri0 - 2, 19, 20, // tri1 - 2, 21, 0, // tri2 - 3, 22, 23 // tri3 -), -gsSPNTriangles_5b( - 6, 24, 25, // tri0 - 3, 1, 26, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&pig_1_v[166], 11, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 5, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 8, 1, 9, // tri0 - 10, 6, 0, // tri1 - 2, 1, 8, // tri2 - 7, 3, 5 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pig_1_v[139], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pig_1_v[146], 20, 7), + gsSPNTrianglesInit_5b(13, // tri count + 4, 7, 1, // tri0 + 5, 0, 8, // tri1 + 2, 6, 9 // tri2 + ), + gsSPNTriangles_5b(6, 3, 10, // tri0 + 1, 11, 12, // tri1 + 0, 13, 14, // tri2 + 0, 15, 16 // tri3 + ), + gsSPNTriangles_5b(1, 18, 17, // tri0 + 2, 19, 20, // tri1 + 2, 21, 0, // tri2 + 3, 22, 23 // tri3 + ), + gsSPNTriangles_5b(6, 24, 25, // tri0 + 3, 1, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&pig_1_v[166], 11, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 1, 9, // tri0 + 10, 6, 0, // tri1 + 2, 1, 8, // tri2 + 7, 3, 5 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail1_pig_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pig_1_v[177], 31, 0), -gsSPNTrianglesInit_5b( - 27, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 7, 8, 9, // tri0 - 7, 9, 10, // tri1 - 11, 12, 4, // tri2 - 11, 4, 13 // tri3 -), -gsSPNTriangles_5b( - 14, 15, 12, // tri0 - 16, 17, 18, // tri1 - 0, 3, 19, // tri2 - 0, 19, 20 // tri3 -), -gsSPNTriangles_5b( - 21, 22, 23, // tri0 - 24, 25, 26, // tri1 - 27, 12, 15, // tri2 - 4, 12, 27 // tri3 -), -gsSPNTriangles_5b( - 27, 5, 4, // tri0 - 4, 6, 25, // tri1 - 22, 14, 12, // tri2 - 17, 16, 24 // tri3 -), -gsSPNTriangles_5b( - 23, 7, 28, // tri0 - 25, 24, 4, // tri1 - 12, 23, 22, // tri2 - 24, 26, 17 // tri3 -), -gsSPNTriangles_5b( - 28, 21, 23, // tri0 - 18, 29, 30, // tri1 - 18, 30, 16, // tri2 - 10, 28, 7 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pig_1_v[177], 31, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 7, 9, 10, // tri1 + 11, 12, 4, // tri2 + 11, 4, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 12, // tri0 + 16, 17, 18, // tri1 + 0, 3, 19, // tri2 + 0, 19, 20 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 24, 25, 26, // tri1 + 27, 12, 15, // tri2 + 4, 12, 27 // tri3 + ), + gsSPNTriangles_5b(27, 5, 4, // tri0 + 4, 6, 25, // tri1 + 22, 14, 12, // tri2 + 17, 16, 24 // tri3 + ), + gsSPNTriangles_5b(23, 7, 28, // tri0 + 25, 24, 4, // tri1 + 12, 23, 22, // tri2 + 24, 26, 17 // tri3 + ), + gsSPNTriangles_5b(28, 21, 23, // tri0 + 18, 29, 30, // tri1 + 18, 30, 16, // tri2 + 10, 28, 7 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_pig_model[] = { -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pig_1_v[257], 5, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pig_1_v[262], 17, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 0, 5, // tri0 - 0, 7, 6, // tri1 - 2, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 0, 1, 10, // tri0 - 1, 2, 11, // tri1 - 2, 4, 12, // tri2 - 1, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 15, 16, 17, // tri0 - 18, 19, 15, // tri1 - 20, 17, 21 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pig_1_v[257], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pig_1_v[262], 17, 5), + gsSPNTrianglesInit_5b(7, // tri count + 3, 0, 5, // tri0 + 0, 7, 6, // tri1 + 2, 9, 8 // tri2 + ), + gsSPNTriangles_5b(0, 1, 10, // tri0 + 1, 2, 11, // tri1 + 2, 4, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 15, // tri1 + 20, 17, 21 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_pig_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pig_1_v[279], 4, 0), -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 252, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pig_1_v[283], 22, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 3, 4, // tri0 - 0, 5, 1, // tri1 - 1, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 3, 2, 8, // tri0 - 2, 9, 10, // tri1 - 2, 1, 11, // tri2 - 0, 13, 12 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 14, 15, 16, // tri0 - 14, 16, 17, // tri1 - 17, 18, 14 // tri2 -), -gsSPNTriangles_5b( - 15, 19, 20, // tri0 - 21, 22, 18, // tri1 - 20, 16, 15, // tri2 - 17, 21, 18 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 252, 124), -gsSPNTrianglesInit_5b( - 1, // tri count - 23, 24, 25, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pig_1_v[279], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pig_1_v[283], 22, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 4, // tri0 + 0, 5, 1, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b(3, 2, 8, // tri0 + 2, 9, 10, // tri1 + 2, 1, 11, // tri2 + 0, 13, 12 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 14, 15, 16, // tri0 + 14, 16, 17, // tri1 + 17, 18, 14 // tri2 + ), + gsSPNTriangles_5b(15, 19, 20, // tri0 + 21, 22, 18, // tri1 + 20, 16, 15, // tri2 + 17, 21, 18 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsSPNTrianglesInit_5b(1, // tri count + 23, 24, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_pig_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pig_1_v[208], 5, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pig_1_v[213], 17, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 3, 5, // tri0 - 0, 7, 6, // tri1 - 2, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 10, // tri0 - 2, 1, 11, // tri1 - 4, 2, 12, // tri2 - 1, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 15, 16, 17, // tri0 - 17, 18, 19, // tri1 - 20, 15, 21 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pig_1_v[208], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pig_1_v[213], 17, 5), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 5, // tri0 + 0, 7, 6, // tri1 + 2, 9, 8 // tri2 + ), + gsSPNTriangles_5b(1, 0, 10, // tri0 + 2, 1, 11, // tri1 + 4, 2, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 17, 18, 19, // tri1 + 20, 15, 21 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_pig_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pig_1_v[230], 5, 0), -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 252, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pig_1_v[235], 22, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 2, 3, 5, // tri0 - 1, 6, 7, // tri1 - 0, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 1, 2, 10, // tri0 - 2, 11, 12, // tri1 - 1, 13, 0, // tri2 - 4, 0, 14 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 15, 16, 17, // tri0 - 18, 19, 20, // tri1 - 15, 21, 16 // tri2 -), -gsSPNTriangles_5b( - 20, 22, 18, // tri0 - 23, 15, 17, // tri1 - 17, 19, 23, // tri2 - 19, 18, 23 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 252, 124), -gsSPNTrianglesInit_5b( - 1, // tri count - 24, 25, 26, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pig_1_v[230], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pig_1_v[235], 22, 5), + gsSPNTrianglesInit_5b(7, // tri count + 2, 3, 5, // tri0 + 1, 6, 7, // tri1 + 0, 9, 8 // tri2 + ), + gsSPNTriangles_5b(1, 2, 10, // tri0 + 2, 11, 12, // tri1 + 1, 13, 0, // tri2 + 4, 0, 14 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 15, 21, 16 // tri2 + ), + gsSPNTriangles_5b(20, 22, 18, // tri0 + 23, 15, 17, // tri1 + 17, 19, 23, // tri2 + 19, 18, 23 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsSPNTrianglesInit_5b(1, // tri count + 24, 25, 26, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx base_pig_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 252, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pig_1_v[305], 14, 0), -gsSPNTrianglesInit_5b( - 12, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 5, 6, 3 // tri2 -), -gsSPNTriangles_5b( - 5, 7, 8, // tri0 - 4, 0, 2, // tri1 - 0, 9, 1, // tri2 - 7, 10, 11 // tri3 -), -gsSPNTriangles_5b( - 7, 11, 8, // tri0 - 10, 12, 11, // tri1 - 3, 0, 4, // tri2 - 13, 11, 12 // tri3 -), -gsSPNTriangles_5b( - 8, 6, 5, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pig_1_v[305], 14, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 3 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 4, 0, 2, // tri1 + 0, 9, 1, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b(7, 11, 8, // tri0 + 10, 12, 11, // tri1 + 3, 0, 4, // tri2 + 13, 11, 12 // tri3 + ), + gsSPNTriangles_5b(8, 6, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_pig_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -623,4 +555,4 @@ static cKF_Joint_R_c cKF_je_r_pig_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_pig_1 = { 26, 12, cKF_je_r_pig_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_pig_1 = { 26, 12, cKF_je_r_pig_1_tbl }; diff --git a/src/data/npc/model/mdl/pkn_1.c b/src/data/npc/model/mdl/pkn_1.c index 2f5e1128..edc06b44 100644 --- a/src/data/npc/model/mdl/pkn_1.c +++ b/src/data/npc/model/mdl/pkn_1.c @@ -6,566 +6,500 @@ static Vtx pkn_1_v[] = { }; static Gfx head_pkn_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pkn_1_v[0], 31, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 0, 4, 5 // tri2 -), -gsSPNTriangles_5b( - 6, 4, 7, // tri0 - 4, 0, 3, // tri1 - 5, 1, 0, // tri2 - 3, 8, 5 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 32, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsSPNTrianglesInit_5b( - 28, // tri count - 9, 10, 11, // tri0 - 12, 11, 13, // tri1 - 11, 10, 14 // tri2 -), -gsSPNTriangles_5b( - 14, 10, 15, // tri0 - 14, 15, 16, // tri1 - 17, 18, 19, // tri2 - 20, 15, 21 // tri3 -), -gsSPNTriangles_5b( - 16, 15, 20, // tri0 - 21, 22, 20, // tri1 - 19, 23, 17, // tri2 - 19, 12, 23 // tri3 -), -gsSPNTriangles_5b( - 23, 12, 13, // tri0 - 24, 12, 19, // tri1 - 10, 21, 15, // tri2 - 24, 10, 9 // tri3 -), -gsSPNTriangles_5b( - 24, 21, 10, // tri0 - 25, 26, 17, // tri1 - 22, 27, 20, // tri2 - 28, 18, 17 // tri3 -), -gsSPNTriangles_5b( - 17, 23, 25, // tri0 - 13, 25, 23, // tri1 - 20, 29, 16, // tri2 - 21, 24, 30 // tri3 -), -gsSPNTriangles_5b( - 30, 24, 19, // tri0 - 30, 22, 21, // tri1 - 19, 18, 30, // tri2 - 11, 12, 9 // tri3 -), -gsSPNTriangles_5b( - 9, 12, 24, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 252, 255, 255), -gsSPVertex(&pkn_1_v[31], 26, 0), -gsSPNTrianglesInit_5b( - 43, // tri count - 0, 1, 2, // tri0 - 0, 3, 4, // tri1 - 0, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 6, 5, 7, // tri0 - 8, 1, 9, // tri1 - 10, 3, 0, // tri2 - 2, 1, 8 // tri3 -), -gsSPNTriangles_5b( - 4, 3, 11, // tri0 - 12, 13, 14, // tri1 - 11, 3, 10, // tri2 - 14, 13, 0 // tri3 -), -gsSPNTriangles_5b( - 0, 13, 15, // tri0 - 15, 13, 12, // tri1 - 16, 17, 18, // tri2 - 18, 17, 0 // tri3 -), -gsSPNTriangles_5b( - 9, 1, 0, // tri0 - 2, 8, 19, // tri1 - 0, 2, 18, // tri2 - 0, 17, 20 // tri3 -), -gsSPNTriangles_5b( - 20, 17, 16, // tri0 - 7, 5, 21, // tri1 - 22, 23, 24, // tri2 - 24, 23, 0 // tri3 -), -gsSPNTriangles_5b( - 21, 5, 0, // tri0 - 0, 6, 24, // tri1 - 0, 23, 25, // tri2 - 25, 23, 22 // tri3 -), -gsSPNTriangles_5b( - 6, 7, 22, // tri0 - 15, 9, 0, // tri1 - 0, 25, 14, // tri2 - 0, 20, 10 // tri3 -), -gsSPNTriangles_5b( - 4, 21, 0, // tri0 - 8, 9, 15, // tri1 - 14, 25, 22, // tri2 - 14, 22, 12 // tri3 -), -gsSPNTriangles_5b( - 7, 21, 4, // tri0 - 10, 20, 16, // tri1 - 10, 16, 11, // tri2 - 15, 12, 8 // tri3 -), -gsSPNTriangles_5b( - 22, 24, 6, // tri0 - 4, 11, 7, // tri1 - 18, 2, 19, // tri2 - 19, 16, 18 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pkn_1_v[57], 22, 0), -gsSPNTrianglesInit_5b( - 11, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 3, 6, 4 // tri2 -), -gsSPNTriangles_5b( - 0, 2, 7, // tri0 - 4, 8, 7, // tri1 - 9, 2, 1, // tri2 - 6, 8, 4 // tri3 -), -gsSPNTriangles_5b( - 1, 10, 9, // tri0 - 11, 12, 9, // tri1 - 8, 0, 7, // tri2 - 11, 9, 10 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 48, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 8, // tri count - 13, 14, 15, // tri0 - 16, 14, 13, // tri1 - 14, 16, 17 // tri2 -), -gsSPNTriangles_5b( - 18, 15, 14, // tri0 - 13, 19, 16, // tri1 - 14, 17, 20, // tri2 - 15, 21, 13 // tri3 -), -gsSPNTriangles_5b( - 20, 18, 14, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pkn_1_v[0], 31, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b(6, 4, 7, // tri0 + 4, 0, 3, // tri1 + 5, 1, 0, // tri2 + 3, 8, 5 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 32, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPNTrianglesInit_5b(28, // tri count + 9, 10, 11, // tri0 + 12, 11, 13, // tri1 + 11, 10, 14 // tri2 + ), + gsSPNTriangles_5b(14, 10, 15, // tri0 + 14, 15, 16, // tri1 + 17, 18, 19, // tri2 + 20, 15, 21 // tri3 + ), + gsSPNTriangles_5b(16, 15, 20, // tri0 + 21, 22, 20, // tri1 + 19, 23, 17, // tri2 + 19, 12, 23 // tri3 + ), + gsSPNTriangles_5b(23, 12, 13, // tri0 + 24, 12, 19, // tri1 + 10, 21, 15, // tri2 + 24, 10, 9 // tri3 + ), + gsSPNTriangles_5b(24, 21, 10, // tri0 + 25, 26, 17, // tri1 + 22, 27, 20, // tri2 + 28, 18, 17 // tri3 + ), + gsSPNTriangles_5b(17, 23, 25, // tri0 + 13, 25, 23, // tri1 + 20, 29, 16, // tri2 + 21, 24, 30 // tri3 + ), + gsSPNTriangles_5b(30, 24, 19, // tri0 + 30, 22, 21, // tri1 + 19, 18, 30, // tri2 + 11, 12, 9 // tri3 + ), + gsSPNTriangles_5b(9, 12, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 252, 255, 255), + gsSPVertex(&pkn_1_v[31], 26, 0), + gsSPNTrianglesInit_5b(43, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 0, 5, 6 // tri2 + ), + gsSPNTriangles_5b(6, 5, 7, // tri0 + 8, 1, 9, // tri1 + 10, 3, 0, // tri2 + 2, 1, 8 // tri3 + ), + gsSPNTriangles_5b(4, 3, 11, // tri0 + 12, 13, 14, // tri1 + 11, 3, 10, // tri2 + 14, 13, 0 // tri3 + ), + gsSPNTriangles_5b(0, 13, 15, // tri0 + 15, 13, 12, // tri1 + 16, 17, 18, // tri2 + 18, 17, 0 // tri3 + ), + gsSPNTriangles_5b(9, 1, 0, // tri0 + 2, 8, 19, // tri1 + 0, 2, 18, // tri2 + 0, 17, 20 // tri3 + ), + gsSPNTriangles_5b(20, 17, 16, // tri0 + 7, 5, 21, // tri1 + 22, 23, 24, // tri2 + 24, 23, 0 // tri3 + ), + gsSPNTriangles_5b(21, 5, 0, // tri0 + 0, 6, 24, // tri1 + 0, 23, 25, // tri2 + 25, 23, 22 // tri3 + ), + gsSPNTriangles_5b(6, 7, 22, // tri0 + 15, 9, 0, // tri1 + 0, 25, 14, // tri2 + 0, 20, 10 // tri3 + ), + gsSPNTriangles_5b(4, 21, 0, // tri0 + 8, 9, 15, // tri1 + 14, 25, 22, // tri2 + 14, 22, 12 // tri3 + ), + gsSPNTriangles_5b(7, 21, 4, // tri0 + 10, 20, 16, // tri1 + 10, 16, 11, // tri2 + 15, 12, 8 // tri3 + ), + gsSPNTriangles_5b(22, 24, 6, // tri0 + 4, 11, 7, // tri1 + 18, 2, 19, // tri2 + 19, 16, 18 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pkn_1_v[57], 22, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(0, 2, 7, // tri0 + 4, 8, 7, // tri1 + 9, 2, 1, // tri2 + 6, 8, 4 // tri3 + ), + gsSPNTriangles_5b(1, 10, 9, // tri0 + 11, 12, 9, // tri1 + 8, 0, 7, // tri2 + 11, 9, 10 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 48, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(8, // tri count + 13, 14, 15, // tri0 + 16, 14, 13, // tri1 + 14, 16, 17 // tri2 + ), + gsSPNTriangles_5b(18, 15, 14, // tri0 + 13, 19, 16, // tri1 + 14, 17, 20, // tri2 + 15, 21, 13 // tri3 + ), + gsSPNTriangles_5b(20, 18, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_pkn_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pkn_1_v[113], 4, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pkn_1_v[117], 16, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 4, 5, // tri0 - 2, 0, 6, // tri1 - 2, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 0, 1, 9, // tri0 - 1, 11, 10, // tri1 - 2, 12, 3, // tri2 - 1, 3, 13 // tri3 -), -gsSPNTriangles_5b( - 1, 15, 14, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 16, 17, 18, // tri0 - 18, 17, 19, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pkn_1_v[113], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pkn_1_v[117], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 2, 0, 6, // tri1 + 2, 7, 8 // tri2 + ), + gsSPNTriangles_5b(0, 1, 9, // tri0 + 1, 11, 10, // tri1 + 2, 12, 3, // tri2 + 1, 3, 13 // tri3 + ), + gsSPNTriangles_5b(1, 15, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 18, 17, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_pkn_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pkn_1_v[133], 3, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pkn_1_v[136], 11, 3), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 2, 3, // tri0 - 0, 4, 5, // tri1 - 1, 7, 6 // tri2 -), -gsSPNTriangles_5b( - 2, 8, 9, // tri0 - 2, 1, 10, // tri1 - 1, 0, 11, // tri2 - 1, 12, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pkn_1_v[133], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pkn_1_v[136], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 0, 2, 3, // tri0 + 0, 4, 5, // tri1 + 1, 7, 6 // tri2 + ), + gsSPNTriangles_5b(2, 8, 9, // tri0 + 2, 1, 10, // tri1 + 1, 0, 11, // tri2 + 1, 12, 13 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_pkn_model[] = { -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pkn_1_v[79], 4, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pkn_1_v[83], 16, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 4, 5, // tri0 - 0, 2, 6, // tri1 - 2, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 9, // tri0 - 1, 11, 10, // tri1 - 3, 12, 2, // tri2 - 3, 1, 13 // tri3 -), -gsSPNTriangles_5b( - 1, 15, 14, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 16, 17, 18, // tri0 - 19, 17, 16, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pkn_1_v[79], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pkn_1_v[83], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 0, 2, 6, // tri1 + 2, 7, 8 // tri2 + ), + gsSPNTriangles_5b(1, 0, 9, // tri0 + 1, 11, 10, // tri1 + 3, 12, 2, // tri2 + 3, 1, 13 // tri3 + ), + gsSPNTriangles_5b(1, 15, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 19, 17, 16, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_pkn_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pkn_1_v[99], 3, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pkn_1_v[102], 11, 3), -gsSPNTrianglesInit_5b( - 7, // tri count - 2, 0, 3, // tri0 - 0, 4, 5, // tri1 - 1, 7, 6 // tri2 -), -gsSPNTriangles_5b( - 2, 8, 9, // tri0 - 1, 2, 10, // tri1 - 0, 1, 11, // tri2 - 1, 12, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pkn_1_v[99], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pkn_1_v[102], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 2, 0, 3, // tri0 + 0, 4, 5, // tri1 + 1, 7, 6 // tri2 + ), + gsSPNTriangles_5b(2, 8, 9, // tri0 + 1, 2, 10, // tri1 + 0, 1, 11, // tri2 + 1, 12, 13 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_pkn_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pkn_1_v[147], 6, 0), -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pkn_1_v[153], 20, 6), -gsSPNTrianglesInit_5b( - 13, // tri count - 4, 6, 1, // tri0 - 4, 0, 7, // tri1 - 2, 5, 8 // tri2 -), -gsSPNTriangles_5b( - 5, 3, 9, // tri0 - 1, 10, 11, // tri1 - 0, 12, 13, // tri2 - 0, 14, 15 // tri3 -), -gsSPNTriangles_5b( - 3, 1, 16, // tri0 - 5, 17, 18, // tri1 - 3, 19, 20, // tri2 - 2, 21, 0 // tri3 -), -gsSPNTriangles_5b( - 1, 23, 22, // tri0 - 2, 24, 25, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&pkn_1_v[173], 7, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 2, 3, 4, // tri1 - 0, 5, 1 // tri2 -), -gsSPNTriangles_5b( - 4, 3, 6, // tri0 - 4, 5, 0, // tri1 - 4, 0, 2, // tri2 - 6, 5, 4 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pkn_1_v[147], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pkn_1_v[153], 20, 6), + gsSPNTrianglesInit_5b(13, // tri count + 4, 6, 1, // tri0 + 4, 0, 7, // tri1 + 2, 5, 8 // tri2 + ), + gsSPNTriangles_5b(5, 3, 9, // tri0 + 1, 10, 11, // tri1 + 0, 12, 13, // tri2 + 0, 14, 15 // tri3 + ), + gsSPNTriangles_5b(3, 1, 16, // tri0 + 5, 17, 18, // tri1 + 3, 19, 20, // tri2 + 2, 21, 0 // tri3 + ), + gsSPNTriangles_5b(1, 23, 22, // tri0 + 2, 24, 25, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&pkn_1_v[173], 7, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 0, 5, 1 // tri2 + ), + gsSPNTriangles_5b(4, 3, 6, // tri0 + 4, 5, 0, // tri1 + 4, 0, 2, // tri2 + 6, 5, 4 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_pkn_model[] = { -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pkn_1_v[228], 5, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pkn_1_v[233], 17, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 1, 5, 6, // tri0 - 2, 3, 7, // tri1 - 1, 2, 8 // tri2 -), -gsSPNTriangles_5b( - 0, 1, 9, // tri0 - 4, 0, 10, // tri1 - 0, 12, 11, // tri2 - 2, 14, 13 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 15, 16, 17, // tri0 - 18, 19, 20, // tri1 - 20, 21, 16 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pkn_1_v[228], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pkn_1_v[233], 17, 5), + gsSPNTrianglesInit_5b(7, // tri count + 1, 5, 6, // tri0 + 2, 3, 7, // tri1 + 1, 2, 8 // tri2 + ), + gsSPNTriangles_5b(0, 1, 9, // tri0 + 4, 0, 10, // tri1 + 0, 12, 11, // tri2 + 2, 14, 13 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 20, 21, 16 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_pkn_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pkn_1_v[250], 4, 0), -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pkn_1_v[254], 22, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 3, 4, // tri0 - 0, 5, 1, // tri1 - 0, 7, 6 // tri2 -), -gsSPNTriangles_5b( - 2, 1, 8, // tri0 - 2, 9, 10, // tri1 - 1, 11, 12, // tri2 - 3, 2, 13 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 14, 15, 16, // tri0 - 17, 18, 19, // tri1 - 15, 20, 16 // tri2 -), -gsSPNTriangles_5b( - 21, 19, 18, // tri0 - 21, 18, 14, // tri1 - 14, 16, 21, // tri2 - 19, 22, 17 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 1, // tri count - 23, 24, 25, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pkn_1_v[250], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pkn_1_v[254], 22, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 4, // tri0 + 0, 5, 1, // tri1 + 0, 7, 6 // tri2 + ), + gsSPNTriangles_5b(2, 1, 8, // tri0 + 2, 9, 10, // tri1 + 1, 11, 12, // tri2 + 3, 2, 13 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 14, 15, 16, // tri0 + 17, 18, 19, // tri1 + 15, 20, 16 // tri2 + ), + gsSPNTriangles_5b(21, 19, 18, // tri0 + 21, 18, 14, // tri1 + 14, 16, 21, // tri2 + 19, 22, 17 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(1, // tri count + 23, 24, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_pkn_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pkn_1_v[180], 5, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pkn_1_v[185], 17, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 1, 5, 6, // tri0 - 3, 2, 7, // tri1 - 2, 1, 8 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 9, // tri0 - 0, 4, 10, // tri1 - 0, 12, 11, // tri2 - 2, 14, 13 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 15, 16, 17, // tri0 - 18, 19, 20, // tri1 - 16, 21, 18 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pkn_1_v[180], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pkn_1_v[185], 17, 5), + gsSPNTrianglesInit_5b(7, // tri count + 1, 5, 6, // tri0 + 3, 2, 7, // tri1 + 2, 1, 8 // tri2 + ), + gsSPNTriangles_5b(1, 0, 9, // tri0 + 0, 4, 10, // tri1 + 0, 12, 11, // tri2 + 2, 14, 13 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 16, 21, 18 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_pkn_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pkn_1_v[202], 4, 0), -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pkn_1_v[206], 22, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 0, 4, // tri0 - 1, 5, 0, // tri1 - 0, 7, 6 // tri2 -), -gsSPNTriangles_5b( - 1, 2, 8, // tri0 - 2, 9, 10, // tri1 - 1, 11, 12, // tri2 - 2, 3, 13 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 14, 15, 16, // tri0 - 17, 18, 19, // tri1 - 14, 20, 15 // tri2 -), -gsSPNTriangles_5b( - 18, 17, 21, // tri0 - 16, 18, 21, // tri1 - 21, 14, 16, // tri2 - 19, 22, 17 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 1, // tri count - 23, 24, 25, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pkn_1_v[202], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pkn_1_v[206], 22, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 0, 4, // tri0 + 1, 5, 0, // tri1 + 0, 7, 6 // tri2 + ), + gsSPNTriangles_5b(1, 2, 8, // tri0 + 2, 9, 10, // tri1 + 1, 11, 12, // tri2 + 2, 3, 13 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 14, 15, 16, // tri0 + 17, 18, 19, // tri1 + 14, 20, 15 // tri2 + ), + gsSPNTriangles_5b(18, 17, 21, // tri0 + 16, 18, 21, // tri1 + 21, 14, 16, // tri2 + 19, 22, 17 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(1, // tri count + 23, 24, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx base_pkn_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pkn_1_v[276], 12, 0), -gsSPNTrianglesInit_5b( - 12, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 5, 6, 3 // tri2 -), -gsSPNTriangles_5b( - 5, 7, 8, // tri0 - 4, 0, 2, // tri1 - 0, 9, 1, // tri2 - 7, 10, 11 // tri3 -), -gsSPNTriangles_5b( - 7, 11, 8, // tri0 - 10, 1, 11, // tri1 - 3, 0, 4, // tri2 - 9, 11, 1 // tri3 -), -gsSPNTriangles_5b( - 8, 6, 5, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pkn_1_v[276], 12, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 3 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 4, 0, 2, // tri1 + 0, 9, 1, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b(7, 11, 8, // tri0 + 10, 1, 11, // tri1 + 3, 0, 4, // tri2 + 9, 11, 1 // tri3 + ), + gsSPNTriangles_5b(8, 6, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_pkn_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -597,4 +531,4 @@ static cKF_Joint_R_c cKF_je_r_pkn_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_pkn_1 = { 26, 11, cKF_je_r_pkn_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_pkn_1 = { 26, 11, cKF_je_r_pkn_1_tbl }; diff --git a/src/data/npc/model/mdl/pla_1.c b/src/data/npc/model/mdl/pla_1.c index 167f096c..8abd8917 100644 --- a/src/data/npc/model/mdl/pla_1.c +++ b/src/data/npc/model/mdl/pla_1.c @@ -6,755 +6,661 @@ static Vtx pla_1_v[] = { }; static Gfx head_pla_model[] = { -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pla_1_v[0], 7, 0), -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pla_1_v[7], 23, 7), -gsSPNTrianglesInit_5b( - 12, // tri count - 1, 7, 8, // tri0 - 6, 9, 10, // tri1 - 3, 11, 12 // tri2 -), -gsSPNTriangles_5b( - 0, 13, 14, // tri0 - 4, 15, 16, // tri1 - 6, 17, 18, // tri2 - 0, 19, 2 // tri3 -), -gsSPNTriangles_5b( - 2, 20, 21, // tri0 - 6, 22, 23, // tri1 - 6, 24, 25, // tri2 - 6, 26, 27 // tri3 -), -gsSPNTriangles_5b( - 6, 29, 28, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&pla_1_v[30], 22, 7), -gsSPNTrianglesInit_5b( - 6, // tri count - 2, 7, 1, // tri0 - 3, 1, 8, // tri1 - 0, 4, 9 // tri2 -), -gsSPNTriangles_5b( - 4, 6, 10, // tri0 - 6, 3, 11, // tri1 - 2, 12, 13, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 1, // tri count - 5, 15, 14, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 12, // tri count - 16, 17, 18, // tri0 - 19, 20, 16, // tri1 - 21, 22, 23 // tri2 -), -gsSPNTriangles_5b( - 16, 20, 24, // tri0 - 25, 26, 21, // tri1 - 27, 17, 16, // tri2 - 21, 23, 28 // tri3 -), -gsSPNTriangles_5b( - 28, 25, 21, // tri0 - 25, 28, 16, // tri1 - 16, 28, 23, // tri2 - 18, 25, 16 // tri3 -), -gsSPNTriangles_5b( - 16, 23, 19, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&pla_1_v[52], 32, 0), -gsSPNTrianglesInit_5b( - 15, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 2, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 8, 9, 10, // tri0 - 4, 3, 11, // tri1 - 12, 13, 14, // tri2 - 15, 16, 4 // tri3 -), -gsSPNTriangles_5b( - 17, 18, 19, // tri0 - 15, 20, 21, // tri1 - 22, 23, 24, // tri2 - 12, 25, 13 // tri3 -), -gsSPNTriangles_5b( - 26, 25, 12, // tri0 - 19, 18, 27, // tri1 - 23, 28, 29, // tri2 - 30, 10, 31 // tri3 -), -gsSPVertex(&pla_1_v[84], 32, 0), -gsSPNTrianglesInit_5b( - 17, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 7, 9, 8, // tri0 - 10, 11, 12, // tri1 - 13, 4, 14, // tri2 - 15, 16, 9 // tri3 -), -gsSPNTriangles_5b( - 6, 5, 4, // tri0 - 4, 13, 17, // tri1 - 18, 6, 4, // tri2 - 15, 9, 19 // tri3 -), -gsSPNTriangles_5b( - 20, 21, 22, // tri0 - 23, 24, 25, // tri1 - 26, 0, 20, // tri2 - 27, 28, 29 // tri3 -), -gsSPNTriangles_5b( - 20, 30, 26, // tri0 - 22, 30, 20, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&pla_1_v[115], 32, 0), -gsSPNTrianglesInit_5b( - 15, // tri count - 0, 1, 2, // tri0 - 2, 1, 3, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 7, 8, 9, // tri0 - 10, 11, 12, // tri1 - 1, 0, 13, // tri2 - 14, 15, 16 // tri3 -), -gsSPNTriangles_5b( - 16, 17, 14, // tri0 - 18, 13, 19, // tri1 - 20, 21, 16, // tri2 - 9, 22, 23 // tri3 -), -gsSPNTriangles_5b( - 24, 25, 26, // tri0 - 27, 28, 29, // tri1 - 30, 9, 8, // tri2 - 12, 31, 10 // tri3 -), -gsSPVertex(&pla_1_v[147], 23, 0), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 4, 9, 10, // tri0 - 11, 12, 13, // tri1 - 14, 15, 16, // tri2 - 17, 18, 19 // tri3 -), -gsSPNTriangles_5b( - 20, 21, 22, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&pla_1_v[170], 21, 0), -gsSPNTrianglesInit_5b( - 14, // tri count - 0, 1, 2, // tri0 - 2, 3, 4, // tri1 - 5, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 0, 2, 8, // tri0 - 0, 8, 9, // tri1 - 10, 11, 6, // tri2 - 10, 6, 12 // tri3 -), -gsSPNTriangles_5b( - 4, 13, 8, // tri0 - 11, 14, 15, // tri1 - 4, 8, 2, // tri2 - 6, 11, 15 // tri3 -), -gsSPNTriangles_5b( - 3, 2, 1, // tri0 - 15, 7, 6, // tri1 - 12, 6, 5, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 3, // tri count - 16, 17, 18, // tri0 - 16, 19, 17, // tri1 - 20, 19, 16 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000180, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&pla_1_v[191], 24, 0), -gsSPNTrianglesInit_5b( - 26, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 6, 8, 2, // tri0 - 5, 9, 3, // tri1 - 2, 10, 0, // tri2 - 4, 11, 12 // tri3 -), -gsSPNTriangles_5b( - 3, 13, 14, // tri0 - 4, 3, 11, // tri1 - 8, 7, 15, // tri2 - 2, 8, 10 // tri3 -), -gsSPNTriangles_5b( - 1, 0, 16, // tri0 - 1, 16, 17, // tri1 - 18, 19, 14, // tri2 - 18, 14, 13 // tri3 -), -gsSPNTriangles_5b( - 1, 17, 20, // tri0 - 1, 20, 21, // tri1 - 2, 1, 21, // tri2 - 18, 13, 9 // tri3 -), -gsSPNTriangles_5b( - 18, 9, 22, // tri0 - 4, 23, 5, // tri1 - 9, 13, 3, // tri2 - 2, 21, 6 // tri3 -), -gsSPNTriangles_5b( - 14, 11, 3, // tri0 - 12, 23, 4, // tri1 - 15, 10, 8, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&pla_1_v[215], 29, 0), -gsSPNTrianglesInit_5b( - 12, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 4, 7, 8, // tri0 - 4, 8, 5, // tri1 - 7, 0, 3, // tri2 - 7, 3, 8 // tri3 -), -gsSPNTriangles_5b( - 9, 4, 6, // tri0 - 10, 11, 6, // tri1 - 10, 6, 5, // tri2 - 10, 5, 12 // tri3 -), -gsSPNTriangles_5b( - 6, 11, 9, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 2, // tri count - 13, 14, 15, // tri0 - 15, 16, 13, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 13, // tri count - 17, 18, 19, // tri0 - 17, 20, 21, // tri1 - 22, 23, 24 // tri2 -), -gsSPNTriangles_5b( - 25, 17, 19, // tri0 - 18, 26, 27, // tri1 - 25, 22, 17, // tri2 - 17, 22, 20 // tri3 -), -gsSPNTriangles_5b( - 23, 22, 25, // tri0 - 19, 18, 28, // tri1 - 27, 28, 18, // tri2 - 24, 20, 22 // tri3 -), -gsSPNTriangles_5b( - 21, 26, 18, // tri0 - 21, 18, 17, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pla_1_v[0], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pla_1_v[7], 23, 7), + gsSPNTrianglesInit_5b(12, // tri count + 1, 7, 8, // tri0 + 6, 9, 10, // tri1 + 3, 11, 12 // tri2 + ), + gsSPNTriangles_5b(0, 13, 14, // tri0 + 4, 15, 16, // tri1 + 6, 17, 18, // tri2 + 0, 19, 2 // tri3 + ), + gsSPNTriangles_5b(2, 20, 21, // tri0 + 6, 22, 23, // tri1 + 6, 24, 25, // tri2 + 6, 26, 27 // tri3 + ), + gsSPNTriangles_5b(6, 29, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&pla_1_v[30], 22, 7), + gsSPNTrianglesInit_5b(6, // tri count + 2, 7, 1, // tri0 + 3, 1, 8, // tri1 + 0, 4, 9 // tri2 + ), + gsSPNTriangles_5b(4, 6, 10, // tri0 + 6, 3, 11, // tri1 + 2, 12, 13, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(1, // tri count + 5, 15, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(12, // tri count + 16, 17, 18, // tri0 + 19, 20, 16, // tri1 + 21, 22, 23 // tri2 + ), + gsSPNTriangles_5b(16, 20, 24, // tri0 + 25, 26, 21, // tri1 + 27, 17, 16, // tri2 + 21, 23, 28 // tri3 + ), + gsSPNTriangles_5b(28, 25, 21, // tri0 + 25, 28, 16, // tri1 + 16, 28, 23, // tri2 + 18, 25, 16 // tri3 + ), + gsSPNTriangles_5b(16, 23, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&pla_1_v[52], 32, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 4, 3, 11, // tri1 + 12, 13, 14, // tri2 + 15, 16, 4 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 15, 20, 21, // tri1 + 22, 23, 24, // tri2 + 12, 25, 13 // tri3 + ), + gsSPNTriangles_5b(26, 25, 12, // tri0 + 19, 18, 27, // tri1 + 23, 28, 29, // tri2 + 30, 10, 31 // tri3 + ), + gsSPVertex(&pla_1_v[84], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 10, 11, 12, // tri1 + 13, 4, 14, // tri2 + 15, 16, 9 // tri3 + ), + gsSPNTriangles_5b(6, 5, 4, // tri0 + 4, 13, 17, // tri1 + 18, 6, 4, // tri2 + 15, 9, 19 // tri3 + ), + gsSPNTriangles_5b(20, 21, 22, // tri0 + 23, 24, 25, // tri1 + 26, 0, 20, // tri2 + 27, 28, 29 // tri3 + ), + gsSPNTriangles_5b(20, 30, 26, // tri0 + 22, 30, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&pla_1_v[115], 32, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 1, 0, 13, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(16, 17, 14, // tri0 + 18, 13, 19, // tri1 + 20, 21, 16, // tri2 + 9, 22, 23 // tri3 + ), + gsSPNTriangles_5b(24, 25, 26, // tri0 + 27, 28, 29, // tri1 + 30, 9, 8, // tri2 + 12, 31, 10 // tri3 + ), + gsSPVertex(&pla_1_v[147], 23, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(4, 9, 10, // tri0 + 11, 12, 13, // tri1 + 14, 15, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(20, 21, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&pla_1_v[170], 21, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(0, 2, 8, // tri0 + 0, 8, 9, // tri1 + 10, 11, 6, // tri2 + 10, 6, 12 // tri3 + ), + gsSPNTriangles_5b(4, 13, 8, // tri0 + 11, 14, 15, // tri1 + 4, 8, 2, // tri2 + 6, 11, 15 // tri3 + ), + gsSPNTriangles_5b(3, 2, 1, // tri0 + 15, 7, 6, // tri1 + 12, 6, 5, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 16, 17, 18, // tri0 + 16, 19, 17, // tri1 + 20, 19, 16 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x180, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&pla_1_v[191], 24, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(6, 8, 2, // tri0 + 5, 9, 3, // tri1 + 2, 10, 0, // tri2 + 4, 11, 12 // tri3 + ), + gsSPNTriangles_5b(3, 13, 14, // tri0 + 4, 3, 11, // tri1 + 8, 7, 15, // tri2 + 2, 8, 10 // tri3 + ), + gsSPNTriangles_5b(1, 0, 16, // tri0 + 1, 16, 17, // tri1 + 18, 19, 14, // tri2 + 18, 14, 13 // tri3 + ), + gsSPNTriangles_5b(1, 17, 20, // tri0 + 1, 20, 21, // tri1 + 2, 1, 21, // tri2 + 18, 13, 9 // tri3 + ), + gsSPNTriangles_5b(18, 9, 22, // tri0 + 4, 23, 5, // tri1 + 9, 13, 3, // tri2 + 2, 21, 6 // tri3 + ), + gsSPNTriangles_5b(14, 11, 3, // tri0 + 12, 23, 4, // tri1 + 15, 10, 8, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&pla_1_v[215], 29, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 8, // tri0 + 4, 8, 5, // tri1 + 7, 0, 3, // tri2 + 7, 3, 8 // tri3 + ), + gsSPNTriangles_5b(9, 4, 6, // tri0 + 10, 11, 6, // tri1 + 10, 6, 5, // tri2 + 10, 5, 12 // tri3 + ), + gsSPNTriangles_5b(6, 11, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 13, 14, 15, // tri0 + 15, 16, 13, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(13, // tri count + 17, 18, 19, // tri0 + 17, 20, 21, // tri1 + 22, 23, 24 // tri2 + ), + gsSPNTriangles_5b(25, 17, 19, // tri0 + 18, 26, 27, // tri1 + 25, 22, 17, // tri2 + 17, 22, 20 // tri3 + ), + gsSPNTriangles_5b(23, 22, 25, // tri0 + 19, 18, 28, // tri1 + 27, 28, 18, // tri2 + 24, 20, 22 // tri3 + ), + gsSPNTriangles_5b(21, 26, 18, // tri0 + 21, 18, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_pla_model[] = { -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pla_1_v[279], 4, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pla_1_v[283], 16, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 4, 5, // tri0 - 1, 6, 7, // tri1 - 2, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 1, 10, 11, // tri0 - 0, 2, 12, // tri1 - 0, 13, 1, // tri2 - 2, 3, 14 // tri3 -), -gsSPNTriangles_5b( - 3, 1, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 16, 17, 18, // tri0 - 19, 18, 17, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pla_1_v[279], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pla_1_v[283], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 1, 6, 7, // tri1 + 2, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 10, 11, // tri0 + 0, 2, 12, // tri1 + 0, 13, 1, // tri2 + 2, 3, 14 // tri3 + ), + gsSPNTriangles_5b(3, 1, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 19, 18, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_pla_model[] = { -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pla_1_v[299], 4, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pla_1_v[303], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 1, 2, 4, // tri0 - 0, 3, 5, // tri1 - 3, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 2, 8, 9, // tri0 - 0, 10, 11, // tri1 - 1, 13, 12, // tri2 - 0, 14, 2 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pla_1_v[299], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pla_1_v[303], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 1, 2, 4, // tri0 + 0, 3, 5, // tri1 + 3, 6, 7 // tri2 + ), + gsSPNTriangles_5b(2, 8, 9, // tri0 + 0, 10, 11, // tri1 + 1, 13, 12, // tri2 + 0, 14, 2 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_pla_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pla_1_v[244], 4, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pla_1_v[248], 16, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 4, 5, // tri0 - 1, 6, 7, // tri1 - 2, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 1, 10, 11, // tri0 - 2, 0, 12, // tri1 - 1, 13, 0, // tri2 - 3, 2, 14 // tri3 -), -gsSPNTriangles_5b( - 1, 3, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 16, 17, 18, // tri0 - 17, 16, 19, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pla_1_v[244], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pla_1_v[248], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 1, 6, 7, // tri1 + 2, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 10, 11, // tri0 + 2, 0, 12, // tri1 + 1, 13, 0, // tri2 + 3, 2, 14 // tri3 + ), + gsSPNTriangles_5b(1, 3, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_pla_model[] = { -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pla_1_v[264], 4, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pla_1_v[268], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 2, 1, 4, // tri0 - 3, 0, 5, // tri1 - 3, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 2, 8, 9, // tri0 - 0, 10, 11, // tri1 - 1, 13, 12, // tri2 - 2, 14, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pla_1_v[264], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pla_1_v[268], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 2, 1, 4, // tri0 + 3, 0, 5, // tri1 + 3, 6, 7 // tri2 + ), + gsSPNTriangles_5b(2, 8, 9, // tri0 + 0, 10, 11, // tri1 + 1, 13, 12, // tri2 + 2, 14, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_pla_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pla_1_v[314], 9, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pla_1_v[323], 11, 9), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 9, // tri0 - 1, 6, 10, // tri1 - 2, 0, 11 // tri2 -), -gsSPNTriangles_5b( - 0, 13, 12, // tri0 - 1, 15, 14, // tri1 - 6, 16, 17, // tri2 - 2, 18, 19 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&pla_1_v[334], 17, 9), -gsSPNTrianglesInit_5b( - 8, // tri count - 7, 9, 10, // tri0 - 4, 8, 11, // tri1 - 4, 12, 13 // tri2 -), -gsSPNTriangles_5b( - 8, 7, 14, // tri0 - 7, 3, 15, // tri1 - 7, 16, 17, // tri2 - 5, 4, 18 // tri3 -), -gsSPNTriangles_5b( - 4, 19, 20, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 2, // tri count - 21, 22, 23, // tri0 - 24, 25, 21, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&pla_1_v[351], 15, 0), -gsSPNTrianglesInit_5b( - 14, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 8, 9, 10, // tri0 - 2, 9, 0, // tri1 - 6, 11, 7, // tri2 - 9, 12, 10 // tri3 -), -gsSPNTriangles_5b( - 8, 13, 6, // tri0 - 10, 13, 8, // tri1 - 5, 7, 3, // tri2 - 14, 8, 7 // tri3 -), -gsSPNTriangles_5b( - 9, 8, 14, // tri0 - 14, 0, 9, // tri1 - 7, 5, 14, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pla_1_v[314], 9, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pla_1_v[323], 11, 9), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 9, // tri0 + 1, 6, 10, // tri1 + 2, 0, 11 // tri2 + ), + gsSPNTriangles_5b(0, 13, 12, // tri0 + 1, 15, 14, // tri1 + 6, 16, 17, // tri2 + 2, 18, 19 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&pla_1_v[334], 17, 9), + gsSPNTrianglesInit_5b(8, // tri count + 7, 9, 10, // tri0 + 4, 8, 11, // tri1 + 4, 12, 13 // tri2 + ), + gsSPNTriangles_5b(8, 7, 14, // tri0 + 7, 3, 15, // tri1 + 7, 16, 17, // tri2 + 5, 4, 18 // tri3 + ), + gsSPNTriangles_5b(4, 19, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 21, 22, 23, // tri0 + 24, 25, 21, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&pla_1_v[351], 15, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 2, 9, 0, // tri1 + 6, 11, 7, // tri2 + 9, 12, 10 // tri3 + ), + gsSPNTriangles_5b(8, 13, 6, // tri0 + 10, 13, 8, // tri1 + 5, 7, 3, // tri2 + 14, 8, 7 // tri3 + ), + gsSPNTriangles_5b(9, 8, 14, // tri0 + 14, 0, 9, // tri1 + 7, 5, 14, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail1_pla_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pla_1_v[366], 3, 0), -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pla_1_v[369], 16, 3), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 2, 3, // tri0 - 2, 4, 5, // tri1 - 1, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 8, // tri0 - 0, 9, 10, // tri1 - 2, 1, 11, // tri2 - 1, 12, 13 // tri3 -), -gsSPNTrianglesInit_5b( - 4, // tri count - 14, 15, 16, // tri0 - 17, 18, 16, // tri1 - 16, 15, 17 // tri2 -), -gsSPNTriangles_5b( - 16, 18, 14, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pla_1_v[366], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pla_1_v[369], 16, 3), + gsSPNTrianglesInit_5b(7, // tri count + 0, 2, 3, // tri0 + 2, 4, 5, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 0, 8, // tri0 + 0, 9, 10, // tri1 + 2, 1, 11, // tri2 + 1, 12, 13 // tri3 + ), + gsSPNTrianglesInit_5b(4, // tri count + 14, 15, 16, // tri0 + 17, 18, 16, // tri1 + 16, 15, 17 // tri2 + ), + gsSPNTriangles_5b(16, 18, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_pla_model[] = { -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pla_1_v[410], 4, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pla_1_v[414], 14, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 1, 4, 5, // tri0 - 2, 3, 6, // tri1 - 1, 2, 7 // tri2 -), -gsSPNTriangles_5b( - 0, 1, 8, // tri0 - 3, 0, 9, // tri1 - 0, 11, 10, // tri2 - 2, 13, 12 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 14, 15, 16, // tri0 - 14, 16, 17, // tri1 - 17, 16, 15 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pla_1_v[410], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pla_1_v[414], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 1, 4, 5, // tri0 + 2, 3, 6, // tri1 + 1, 2, 7 // tri2 + ), + gsSPNTriangles_5b(0, 1, 8, // tri0 + 3, 0, 9, // tri1 + 0, 11, 10, // tri2 + 2, 13, 12 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 14, 15, 16, // tri0 + 14, 16, 17, // tri1 + 17, 16, 15 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_pla_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pla_1_v[428], 7, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 1, 3, 4, // tri1 - 1, 5, 2 // tri2 -), -gsSPNTriangles_5b( - 6, 4, 3, // tri0 - 6, 3, 0, // tri1 - 0, 2, 6, // tri2 - 4, 5, 1 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pla_1_v[428], 7, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 1, 5, 2 // tri2 + ), + gsSPNTriangles_5b(6, 4, 3, // tri0 + 6, 3, 0, // tri1 + 0, 2, 6, // tri2 + 4, 5, 1 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_pla_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pla_1_v[385], 4, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&pla_1_v[389], 14, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 1, 4, 5, // tri0 - 3, 2, 6, // tri1 - 2, 1, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 8, // tri0 - 0, 3, 9, // tri1 - 0, 11, 10, // tri2 - 2, 13, 12 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 14, 15, 16, // tri0 - 17, 14, 16, // tri1 - 15, 14, 17 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pla_1_v[385], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pla_1_v[389], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 1, 4, 5, // tri0 + 3, 2, 6, // tri1 + 2, 1, 7 // tri2 + ), + gsSPNTriangles_5b(1, 0, 8, // tri0 + 0, 3, 9, // tri1 + 0, 11, 10, // tri2 + 2, 13, 12 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 14, 15, 16, // tri0 + 17, 14, 16, // tri1 + 15, 14, 17 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_pla_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pla_1_v[403], 7, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 3, 4, 1, // tri1 - 0, 5, 1 // tri2 -), -gsSPNTriangles_5b( - 4, 3, 6, // tri0 - 2, 4, 6, // tri1 - 6, 0, 2, // tri2 - 1, 5, 3 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pla_1_v[403], 7, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 0, 5, 1 // tri2 + ), + gsSPNTriangles_5b(4, 3, 6, // tri0 + 2, 4, 6, // tri1 + 6, 0, 2, // tri2 + 1, 5, 3 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx base_pla_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&pla_1_v[435], 24, 0), -gsSPNTrianglesInit_5b( - 16, // tri count - 0, 1, 2, // tri0 - 3, 4, 2, // tri1 - 5, 1, 0 // tri2 -), -gsSPNTriangles_5b( - 6, 5, 0, // tri0 - 0, 2, 7, // tri1 - 5, 8, 9, // tri2 - 10, 3, 2 // tri3 -), -gsSPNTriangles_5b( - 2, 1, 10, // tri0 - 9, 1, 5, // tri1 - 5, 11, 8, // tri2 - 8, 3, 10 // tri3 -), -gsSPNTriangles_5b( - 8, 10, 9, // tri0 - 7, 2, 4, // tri1 - 11, 5, 6, // tri2 - 7, 12, 0 // tri3 -), -gsSPNTriangles_5b( - 0, 12, 6, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 12, // tri count - 13, 14, 15, // tri0 - 16, 15, 17, // tri1 - 17, 15, 14 // tri2 -), -gsSPNTriangles_5b( - 18, 19, 20, // tri0 - 21, 22, 23, // tri1 - 20, 16, 18, // tri2 - 23, 14, 21 // tri3 -), -gsSPNTriangles_5b( - 14, 23, 17, // tri0 - 21, 14, 13, // tri1 - 17, 18, 16, // tri2 - 13, 16, 20 // tri3 -), -gsSPNTriangles_5b( - 15, 16, 13, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pla_1_v[435], 24, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 5, 1, 0 // tri2 + ), + gsSPNTriangles_5b(6, 5, 0, // tri0 + 0, 2, 7, // tri1 + 5, 8, 9, // tri2 + 10, 3, 2 // tri3 + ), + gsSPNTriangles_5b(2, 1, 10, // tri0 + 9, 1, 5, // tri1 + 5, 11, 8, // tri2 + 8, 3, 10 // tri3 + ), + gsSPNTriangles_5b(8, 10, 9, // tri0 + 7, 2, 4, // tri1 + 11, 5, 6, // tri2 + 7, 12, 0 // tri3 + ), + gsSPNTriangles_5b(0, 12, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(12, // tri count + 13, 14, 15, // tri0 + 16, 15, 17, // tri1 + 17, 15, 14 // tri2 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 21, 22, 23, // tri1 + 20, 16, 18, // tri2 + 23, 14, 21 // tri3 + ), + gsSPNTriangles_5b(14, 23, 17, // tri0 + 21, 14, 13, // tri1 + 17, 18, 16, // tri2 + 13, 16, 20 // tri3 + ), + gsSPNTriangles_5b(15, 16, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_pla_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -786,4 +692,4 @@ static cKF_Joint_R_c cKF_je_r_pla_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_pla_1 = { 26, 12, cKF_je_r_pla_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_pla_1 = { 26, 12, cKF_je_r_pla_1_tbl }; diff --git a/src/data/npc/model/mdl/plb_1.c b/src/data/npc/model/mdl/plb_1.c index f1587b7e..905b7bcb 100644 --- a/src/data/npc/model/mdl/plb_1.c +++ b/src/data/npc/model/mdl/plb_1.c @@ -6,831 +6,730 @@ static Vtx plb_1_v[] = { }; static Gfx head_plb_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000180, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&plb_1_v[40], 27, 0), -gsSPNTrianglesInit_5b( - 3, // tri count - 0, 1, 2, // tri0 - 2, 3, 4, // tri1 - 4, 0, 2 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 20, // tri count - 5, 6, 7, // tri0 - 8, 9, 10, // tri1 - 5, 11, 12 // tri2 -), -gsSPNTriangles_5b( - 7, 11, 5, // tri0 - 13, 14, 8, // tri1 - 15, 8, 16, // tri2 - 17, 12, 11 // tri3 -), -gsSPNTriangles_5b( - 7, 13, 15, // tri0 - 14, 13, 7, // tri1 - 18, 9, 8, // tri2 - 16, 19, 17 // tri3 -), -gsSPNTriangles_5b( - 18, 14, 7, // tri0 - 15, 17, 11, // tri1 - 8, 15, 13, // tri2 - 19, 16, 10 // tri3 -), -gsSPNTriangles_5b( - 10, 16, 8, // tri0 - 16, 17, 15, // tri1 - 11, 7, 15, // tri2 - 8, 14, 18 // tri3 -), -gsSPNTriangles_5b( - 7, 6, 18, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 5, // tri count - 20, 21, 22, // tri0 - 20, 22, 23, // tri1 - 24, 25, 26 // tri2 -), -gsSPNTriangles_5b( - 23, 22, 26, // tri0 - 23, 26, 25, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&plb_1_v[67], 28, 0), -gsSPNTrianglesInit_5b( - 41, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 6, 9, 10, // tri0 - 7, 11, 12, // tri1 - 7, 12, 3, // tri2 - 7, 10, 11 // tri3 -), -gsSPNTriangles_5b( - 13, 14, 2, // tri0 - 15, 16, 13, // tri1 - 13, 1, 17, // tri2 - 12, 11, 18 // tri3 -), -gsSPNTriangles_5b( - 12, 18, 19, // tri0 - 4, 12, 19, // tri1 - 4, 16, 15, // tri2 - 5, 4, 15 // tri3 -), -gsSPNTriangles_5b( - 14, 20, 2, // tri0 - 14, 18, 20, // tri1 - 20, 10, 9, // tri2 - 13, 16, 14 // tri3 -), -gsSPNTriangles_5b( - 14, 16, 19, // tri0 - 19, 18, 14, // tri1 - 2, 9, 0, // tri2 - 1, 13, 2 // tri3 -), -gsSPNTriangles_5b( - 21, 22, 23, // tri0 - 17, 15, 13, // tri1 - 2, 20, 9, // tri2 - 12, 4, 3 // tri3 -), -gsSPNTriangles_5b( - 10, 20, 18, // tri0 - 18, 11, 10, // tri1 - 19, 16, 4, // tri2 - 3, 24, 23 // tri3 -), -gsSPNTriangles_5b( - 21, 8, 7, // tri0 - 23, 24, 25, // tri1 - 23, 25, 21, // tri2 - 7, 3, 22 // tri3 -), -gsSPNTriangles_5b( - 22, 21, 7, // tri0 - 3, 23, 22, // tri1 - 24, 3, 5, // tri2 - 8, 26, 6 // tri3 -), -gsSPNTriangles_5b( - 5, 27, 24, // tri0 - 10, 7, 6, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&plb_1_v[95], 30, 0), -gsSPNTrianglesInit_5b( - 14, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 3 // tri2 -), -gsSPNTriangles_5b( - 2, 7, 6, // tri0 - 8, 0, 2, // tri1 - 5, 9, 6, // tri2 - 6, 9, 10 // tri3 -), -gsSPNTriangles_5b( - 10, 8, 2, // tri0 - 3, 11, 12, // tri1 - 3, 12, 4, // tri2 - 11, 3, 7 // tri3 -), -gsSPNTriangles_5b( - 7, 2, 1, // tri0 - 10, 2, 6, // tri1 - 6, 3, 5, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_REPEAT, 0, 0), -gsSPNTrianglesInit_5b( - 13, // tri count - 13, 14, 15, // tri0 - 16, 17, 18, // tri1 - 19, 20, 16 // tri2 -), -gsSPNTriangles_5b( - 13, 21, 22, // tri0 - 16, 18, 19, // tri1 - 15, 23, 13, // tri2 - 24, 22, 21 // tri3 -), -gsSPNTriangles_5b( - 25, 26, 27, // tri0 - 25, 24, 28, // tri1 - 13, 22, 14, // tri2 - 21, 28, 24 // tri3 -), -gsSPNTriangles_5b( - 28, 26, 25, // tri0 - 27, 29, 25, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x180, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plb_1_v[40], 27, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 4, 0, 2 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(20, // tri count + 5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 5, 11, 12 // tri2 + ), + gsSPNTriangles_5b(7, 11, 5, // tri0 + 13, 14, 8, // tri1 + 15, 8, 16, // tri2 + 17, 12, 11 // tri3 + ), + gsSPNTriangles_5b(7, 13, 15, // tri0 + 14, 13, 7, // tri1 + 18, 9, 8, // tri2 + 16, 19, 17 // tri3 + ), + gsSPNTriangles_5b(18, 14, 7, // tri0 + 15, 17, 11, // tri1 + 8, 15, 13, // tri2 + 19, 16, 10 // tri3 + ), + gsSPNTriangles_5b(10, 16, 8, // tri0 + 16, 17, 15, // tri1 + 11, 7, 15, // tri2 + 8, 14, 18 // tri3 + ), + gsSPNTriangles_5b(7, 6, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(5, // tri count + 20, 21, 22, // tri0 + 20, 22, 23, // tri1 + 24, 25, 26 // tri2 + ), + gsSPNTriangles_5b(23, 22, 26, // tri0 + 23, 26, 25, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&plb_1_v[67], 28, 0), + gsSPNTrianglesInit_5b(41, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(6, 9, 10, // tri0 + 7, 11, 12, // tri1 + 7, 12, 3, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b(13, 14, 2, // tri0 + 15, 16, 13, // tri1 + 13, 1, 17, // tri2 + 12, 11, 18 // tri3 + ), + gsSPNTriangles_5b(12, 18, 19, // tri0 + 4, 12, 19, // tri1 + 4, 16, 15, // tri2 + 5, 4, 15 // tri3 + ), + gsSPNTriangles_5b(14, 20, 2, // tri0 + 14, 18, 20, // tri1 + 20, 10, 9, // tri2 + 13, 16, 14 // tri3 + ), + gsSPNTriangles_5b(14, 16, 19, // tri0 + 19, 18, 14, // tri1 + 2, 9, 0, // tri2 + 1, 13, 2 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 17, 15, 13, // tri1 + 2, 20, 9, // tri2 + 12, 4, 3 // tri3 + ), + gsSPNTriangles_5b(10, 20, 18, // tri0 + 18, 11, 10, // tri1 + 19, 16, 4, // tri2 + 3, 24, 23 // tri3 + ), + gsSPNTriangles_5b(21, 8, 7, // tri0 + 23, 24, 25, // tri1 + 23, 25, 21, // tri2 + 7, 3, 22 // tri3 + ), + gsSPNTriangles_5b(22, 21, 7, // tri0 + 3, 23, 22, // tri1 + 24, 3, 5, // tri2 + 8, 26, 6 // tri3 + ), + gsSPNTriangles_5b(5, 27, 24, // tri0 + 10, 7, 6, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&plb_1_v[95], 30, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 3 // tri2 + ), + gsSPNTriangles_5b(2, 7, 6, // tri0 + 8, 0, 2, // tri1 + 5, 9, 6, // tri2 + 6, 9, 10 // tri3 + ), + gsSPNTriangles_5b(10, 8, 2, // tri0 + 3, 11, 12, // tri1 + 3, 12, 4, // tri2 + 11, 3, 7 // tri3 + ), + gsSPNTriangles_5b(7, 2, 1, // tri0 + 10, 2, 6, // tri1 + 6, 3, 5, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_REPEAT, 0, 0), + gsSPNTrianglesInit_5b(13, // tri count + 13, 14, 15, // tri0 + 16, 17, 18, // tri1 + 19, 20, 16 // tri2 + ), + gsSPNTriangles_5b(13, 21, 22, // tri0 + 16, 18, 19, // tri1 + 15, 23, 13, // tri2 + 24, 22, 21 // tri3 + ), + gsSPNTriangles_5b(25, 26, 27, // tri0 + 25, 24, 28, // tri1 + 13, 22, 14, // tri2 + 21, 28, 24 // tri3 + ), + gsSPNTriangles_5b(28, 26, 25, // tri0 + 27, 29, 25, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx mouth_plb_model[] = { -gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&plb_1_v[0], 5, 0), -gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&plb_1_v[5], 15, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 5, 6, // tri0 - 4, 8, 7, // tri1 - 2, 4, 9 // tri2 -), -gsSPNTriangles_5b( - 4, 0, 10, // tri0 - 2, 11, 12, // tri1 - 0, 13, 14, // tri2 - 2, 15, 16 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 2, // tri count - 1, 3, 17, // tri0 - 3, 19, 18, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&plb_1_v[20], 20, 0), -gsSPNTrianglesInit_5b( - 16, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 0, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 0, 8, 6, // tri0 - 9, 10, 4, // tri1 - 11, 10, 9, // tri2 - 12, 8, 10 // tri3 -), -gsSPNTriangles_5b( - 12, 10, 11, // tri0 - 8, 0, 4, // tri1 - 4, 10, 8, // tri2 - 4, 0, 2 // tri3 -), -gsSPNTriangles_5b( - 4, 2, 5, // tri0 - 13, 9, 4, // tri1 - 6, 8, 12, // tri2 - 7, 1, 0 // tri3 -), -gsSPNTriangles_5b( - 4, 3, 13, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 4, // tri count - 14, 15, 16, // tri0 - 17, 15, 14, // tri1 - 17, 14, 18 // tri2 -), -gsSPNTriangles_5b( - 14, 16, 19, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plb_1_v[0], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plb_1_v[5], 15, 5), + gsSPNTrianglesInit_5b(7, // tri count + 0, 5, 6, // tri0 + 4, 8, 7, // tri1 + 2, 4, 9 // tri2 + ), + gsSPNTriangles_5b(4, 0, 10, // tri0 + 2, 11, 12, // tri1 + 0, 13, 14, // tri2 + 2, 15, 16 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 1, 3, 17, // tri0 + 3, 19, 18, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&plb_1_v[20], 20, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 7 // tri2 + ), + gsSPNTriangles_5b(0, 8, 6, // tri0 + 9, 10, 4, // tri1 + 11, 10, 9, // tri2 + 12, 8, 10 // tri3 + ), + gsSPNTriangles_5b(12, 10, 11, // tri0 + 8, 0, 4, // tri1 + 4, 10, 8, // tri2 + 4, 0, 2 // tri3 + ), + gsSPNTriangles_5b(4, 2, 5, // tri0 + 13, 9, 4, // tri1 + 6, 8, 12, // tri2 + 7, 1, 0 // tri3 + ), + gsSPNTriangles_5b(4, 3, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 14, 15, 16, // tri0 + 17, 15, 14, // tri1 + 17, 14, 18 // tri2 + ), + gsSPNTriangles_5b(14, 16, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_plb_model[] = { -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&plb_1_v[168], 4, 0), -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&plb_1_v[172], 25, 4), -gsSPNTrianglesInit_5b( - 9, // tri count - 2, 4, 5, // tri0 - 1, 3, 6, // tri1 - 0, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 0, 9, // tri0 - 0, 10, 11, // tri1 - 1, 12, 13, // tri2 - 3, 2, 14 // tri3 -), -gsSPNTriangles_5b( - 0, 1, 15, // tri0 - 2, 16, 17, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 18, 19, 20, // tri0 - 21, 19, 18, // tri1 - 22, 19, 21 // tri2 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 4, // tri count - 23, 24, 25, // tri0 - 25, 26, 27, // tri1 - 24, 28, 25 // tri2 -), -gsSPNTriangles_5b( - 25, 27, 23, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plb_1_v[168], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plb_1_v[172], 25, 4), + gsSPNTrianglesInit_5b(9, // tri count + 2, 4, 5, // tri0 + 1, 3, 6, // tri1 + 0, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 0, 9, // tri0 + 0, 10, 11, // tri1 + 1, 12, 13, // tri2 + 3, 2, 14 // tri3 + ), + gsSPNTriangles_5b(0, 1, 15, // tri0 + 2, 16, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 18, 19, 20, // tri0 + 21, 19, 18, // tri1 + 22, 19, 21 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(4, // tri count + 23, 24, 25, // tri0 + 25, 26, 27, // tri1 + 24, 28, 25 // tri2 + ), + gsSPNTriangles_5b(25, 27, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_plb_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&plb_1_v[197], 3, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&plb_1_v[200], 11, 3), -gsSPNTrianglesInit_5b( - 7, // tri count - 1, 3, 4, // tri0 - 2, 5, 6, // tri1 - 1, 2, 7 // tri2 -), -gsSPNTriangles_5b( - 2, 8, 9, // tri0 - 0, 1, 10, // tri1 - 2, 0, 11, // tri2 - 0, 12, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plb_1_v[197], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plb_1_v[200], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 1, 3, 4, // tri0 + 2, 5, 6, // tri1 + 1, 2, 7 // tri2 + ), + gsSPNTriangles_5b(2, 8, 9, // tri0 + 0, 1, 10, // tri1 + 2, 0, 11, // tri2 + 0, 12, 13 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_plb_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&plb_1_v[125], 4, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&plb_1_v[129], 25, 4), -gsSPNTrianglesInit_5b( - 9, // tri count - 2, 4, 5, // tri0 - 3, 1, 6, // tri1 - 0, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 0, 2, 9, // tri0 - 0, 10, 11, // tri1 - 1, 12, 13, // tri2 - 2, 3, 14 // tri3 -), -gsSPNTriangles_5b( - 1, 0, 15, // tri0 - 2, 16, 17, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 18, 19, 20, // tri0 - 20, 19, 21, // tri1 - 21, 19, 22 // tri2 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 4, // tri count - 23, 24, 25, // tri0 - 26, 27, 23, // tri1 - 23, 28, 24 // tri2 -), -gsSPNTriangles_5b( - 25, 26, 23, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plb_1_v[125], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plb_1_v[129], 25, 4), + gsSPNTrianglesInit_5b(9, // tri count + 2, 4, 5, // tri0 + 3, 1, 6, // tri1 + 0, 7, 8 // tri2 + ), + gsSPNTriangles_5b(0, 2, 9, // tri0 + 0, 10, 11, // tri1 + 1, 12, 13, // tri2 + 2, 3, 14 // tri3 + ), + gsSPNTriangles_5b(1, 0, 15, // tri0 + 2, 16, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 18, 19, 20, // tri0 + 20, 19, 21, // tri1 + 21, 19, 22 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(4, // tri count + 23, 24, 25, // tri0 + 26, 27, 23, // tri1 + 23, 28, 24 // tri2 + ), + gsSPNTriangles_5b(25, 26, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_plb_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&plb_1_v[154], 3, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&plb_1_v[157], 11, 3), -gsSPNTrianglesInit_5b( - 7, // tri count - 1, 3, 4, // tri0 - 2, 5, 6, // tri1 - 2, 1, 7 // tri2 -), -gsSPNTriangles_5b( - 2, 8, 9, // tri0 - 1, 0, 10, // tri1 - 0, 2, 11, // tri2 - 0, 12, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plb_1_v[154], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plb_1_v[157], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 1, 3, 4, // tri0 + 2, 5, 6, // tri1 + 2, 1, 7 // tri2 + ), + gsSPNTriangles_5b(2, 8, 9, // tri0 + 1, 0, 10, // tri1 + 0, 2, 11, // tri2 + 0, 12, 13 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_plb_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&plb_1_v[211], 13, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&plb_1_v[224], 6, 13), -gsSPNTrianglesInit_5b( - 4, // tri count - 12, 9, 13, // tri0 - 9, 14, 15, // tri1 - 11, 10, 16 // tri2 -), -gsSPNTriangles_5b( - 11, 17, 18, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0004C0, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&plb_1_v[230], 19, 13), -gsSPNTrianglesInit_5b( - 13, // tri count - 2, 13, 3, // tri0 - 8, 14, 15, // tri1 - 6, 8, 16 // tri2 -), -gsSPNTriangles_5b( - 2, 1, 17, // tri0 - 1, 0, 18, // tri1 - 1, 20, 19, // tri2 - 0, 21, 22 // tri3 -), -gsSPNTriangles_5b( - 0, 7, 23, // tri0 - 4, 25, 24, // tri1 - 3, 26, 27, // tri2 - 4, 3, 28 // tri3 -), -gsSPNTriangles_5b( - 8, 5, 29, // tri0 - 8, 30, 31, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&plb_1_v[249], 11, 13), -gsSPNTrianglesInit_5b( - 1, // tri count - 5, 4, 13, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 8, // tri count - 14, 15, 16, // tri0 - 14, 16, 17, // tri1 - 18, 19, 20 // tri2 -), -gsSPNTriangles_5b( - 15, 21, 22, // tri0 - 14, 17, 19, // tri1 - 19, 18, 14, // tri2 - 22, 16, 15 // tri3 -), -gsSPNTriangles_5b( - 20, 23, 18, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0004C0, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&plb_1_v[260], 21, 0), -gsSPNTrianglesInit_5b( - 20, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 9, 10, 11, // tri0 - 12, 13, 5, // tri1 - 7, 13, 12, // tri2 - 12, 14, 7 // tri3 -), -gsSPNTriangles_5b( - 5, 1, 12, // tri0 - 12, 1, 0, // tri1 - 12, 0, 14, // tri2 - 15, 14, 0 // tri3 -), -gsSPNTriangles_5b( - 16, 4, 3, // tri0 - 8, 17, 6, // tri1 - 11, 10, 6, // tri2 - 6, 17, 11 // tri3 -), -gsSPNTriangles_5b( - 11, 18, 9, // tri0 - 19, 0, 2, // tri1 - 15, 0, 20, // tri2 - 14, 8, 7 // tri3 -), -gsSPNTriangles_5b( - 5, 4, 1, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plb_1_v[211], 13, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plb_1_v[224], 6, 13), + gsSPNTrianglesInit_5b(4, // tri count + 12, 9, 13, // tri0 + 9, 14, 15, // tri1 + 11, 10, 16 // tri2 + ), + gsSPNTriangles_5b(11, 17, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x4C0, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plb_1_v[230], 19, 13), + gsSPNTrianglesInit_5b(13, // tri count + 2, 13, 3, // tri0 + 8, 14, 15, // tri1 + 6, 8, 16 // tri2 + ), + gsSPNTriangles_5b(2, 1, 17, // tri0 + 1, 0, 18, // tri1 + 1, 20, 19, // tri2 + 0, 21, 22 // tri3 + ), + gsSPNTriangles_5b(0, 7, 23, // tri0 + 4, 25, 24, // tri1 + 3, 26, 27, // tri2 + 4, 3, 28 // tri3 + ), + gsSPNTriangles_5b(8, 5, 29, // tri0 + 8, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&plb_1_v[249], 11, 13), + gsSPNTrianglesInit_5b(1, // tri count + 5, 4, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(8, // tri count + 14, 15, 16, // tri0 + 14, 16, 17, // tri1 + 18, 19, 20 // tri2 + ), + gsSPNTriangles_5b(15, 21, 22, // tri0 + 14, 17, 19, // tri1 + 19, 18, 14, // tri2 + 22, 16, 15 // tri3 + ), + gsSPNTriangles_5b(20, 23, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x4C0, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plb_1_v[260], 21, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 13, 5, // tri1 + 7, 13, 12, // tri2 + 12, 14, 7 // tri3 + ), + gsSPNTriangles_5b(5, 1, 12, // tri0 + 12, 1, 0, // tri1 + 12, 0, 14, // tri2 + 15, 14, 0 // tri3 + ), + gsSPNTriangles_5b(16, 4, 3, // tri0 + 8, 17, 6, // tri1 + 11, 10, 6, // tri2 + 6, 17, 11 // tri3 + ), + gsSPNTriangles_5b(11, 18, 9, // tri0 + 19, 0, 2, // tri1 + 15, 0, 20, // tri2 + 14, 8, 7 // tri3 + ), + gsSPNTriangles_5b(5, 4, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot3_plb_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&plb_1_v[328], 3, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&plb_1_v[331], 18, 3), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 3, 4, // tri0 - 1, 0, 5, // tri1 - 0, 2, 6 // tri2 -), -gsSPNTriangles_5b( - 2, 1, 7, // tri0 - 2, 8, 9, // tri1 - 0, 10, 11, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 5, // tri count - 12, 13, 14, // tri0 - 12, 14, 15, // tri1 - 16, 17, 18 // tri2 -), -gsSPNTriangles_5b( - 18, 19, 16, // tri0 - 16, 20, 17, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plb_1_v[328], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plb_1_v[331], 18, 3), + gsSPNTrianglesInit_5b(6, // tri count + 0, 3, 4, // tri0 + 1, 0, 5, // tri1 + 0, 2, 6 // tri2 + ), + gsSPNTriangles_5b(2, 1, 7, // tri0 + 2, 8, 9, // tri1 + 0, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(5, // tri count + 12, 13, 14, // tri0 + 12, 14, 15, // tri1 + 16, 17, 18 // tri2 + ), + gsSPNTriangles_5b(18, 19, 16, // tri0 + 16, 20, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_plb_model[] = { -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&plb_1_v[349], 4, 0), -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&plb_1_v[353], 14, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 2, 6, 7, // tri1 - 3, 0, 8 // tri2 -), -gsSPNTriangles_5b( - 1, 2, 9, // tri0 - 2, 10, 11, // tri1 - 2, 3, 12, // tri2 - 3, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 15, 16, 17, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plb_1_v[349], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plb_1_v[353], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 2, 6, 7, // tri1 + 3, 0, 8 // tri2 + ), + gsSPNTriangles_5b(1, 2, 9, // tri0 + 2, 10, 11, // tri1 + 2, 3, 12, // tri2 + 3, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_plb_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&plb_1_v[367], 8, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 3, 2, 4 // tri2 -), -gsSPNTriangles_5b( - 5, 0, 6, // tri0 - 4, 7, 3, // tri1 - 0, 5, 1, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plb_1_v[367], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b(5, 0, 6, // tri0 + 4, 7, 3, // tri1 + 0, 5, 1, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot3_plb_model[] = { -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&plb_1_v[281], 3, 0), -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&plb_1_v[284], 18, 3), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 3, 4, // tri0 - 0, 1, 5, // tri1 - 2, 0, 6 // tri2 -), -gsSPNTriangles_5b( - 1, 7, 8, // tri0 - 1, 2, 9, // tri1 - 0, 10, 11, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 5, // tri count - 12, 13, 14, // tri0 - 12, 14, 15, // tri1 - 16, 17, 18 // tri2 -), -gsSPNTriangles_5b( - 18, 19, 16, // tri0 - 17, 20, 18, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plb_1_v[281], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plb_1_v[284], 18, 3), + gsSPNTrianglesInit_5b(6, // tri count + 0, 3, 4, // tri0 + 0, 1, 5, // tri1 + 2, 0, 6 // tri2 + ), + gsSPNTriangles_5b(1, 7, 8, // tri0 + 1, 2, 9, // tri1 + 0, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(5, // tri count + 12, 13, 14, // tri0 + 12, 14, 15, // tri1 + 16, 17, 18 // tri2 + ), + gsSPNTriangles_5b(18, 19, 16, // tri0 + 17, 20, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_plb_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&plb_1_v[302], 4, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&plb_1_v[306], 14, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 2, 6, 7, // tri1 - 0, 3, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 1, 9, // tri0 - 2, 10, 11, // tri1 - 3, 2, 12, // tri2 - 3, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 15, 16, 17, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plb_1_v[302], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plb_1_v[306], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 2, 6, 7, // tri1 + 0, 3, 8 // tri2 + ), + gsSPNTriangles_5b(2, 1, 9, // tri0 + 2, 10, 11, // tri1 + 3, 2, 12, // tri2 + 3, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_plb_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&plb_1_v[320], 8, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 4, 1, 0 // tri2 -), -gsSPNTriangles_5b( - 5, 3, 6, // tri0 - 0, 7, 4, // tri1 - 2, 6, 3, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plb_1_v[320], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 1, 0 // tri2 + ), + gsSPNTriangles_5b(5, 3, 6, // tri0 + 0, 7, 4, // tri1 + 2, 6, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx base_plb_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&plb_1_v[375], 31, 0), -gsSPNTrianglesInit_5b( - 26, // tri count - 0, 1, 2, // tri0 - 2, 1, 3, // tri1 - 4, 0, 2 // tri2 -), -gsSPNTriangles_5b( - 3, 1, 5, // tri0 - 6, 7, 8, // tri1 - 9, 10, 11, // tri2 - 12, 13, 14 // tri3 -), -gsSPNTriangles_5b( - 12, 14, 15, // tri0 - 13, 8, 14, // tri1 - 12, 15, 16, // tri2 - 9, 17, 18 // tri3 -), -gsSPNTriangles_5b( - 19, 20, 21, // tri0 - 1, 0, 22, // tri1 - 23, 24, 25, // tri2 - 22, 0, 26 // tri3 -), -gsSPNTriangles_5b( - 12, 22, 26, // tri0 - 0, 6, 26, // tri1 - 12, 26, 13, // tri2 - 23, 25, 27 // tri3 -), -gsSPNTriangles_5b( - 27, 28, 23, // tri0 - 6, 0, 4, // tri1 - 8, 13, 6, // tri2 - 13, 26, 6 // tri3 -), -gsSPNTriangles_5b( - 4, 7, 6, // tri0 - 5, 20, 29, // tri1 - 20, 5, 30, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000680, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsSPVertex(&plb_1_v[406], 18, 0), -gsSPNTrianglesInit_5b( - 13, // tri count - 0, 1, 2, // tri0 - 1, 3, 4, // tri1 - 1, 4, 2 // tri2 -), -gsSPNTriangles_5b( - 5, 6, 7, // tri0 - 5, 7, 8, // tri1 - 9, 10, 11, // tri2 - 9, 11, 12 // tri3 -), -gsSPNTriangles_5b( - 7, 2, 4, // tri0 - 7, 4, 8, // tri1 - 12, 6, 5, // tri2 - 12, 5, 9 // tri3 -), -gsSPNTriangles_5b( - 7, 6, 0, // tri0 - 2, 7, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0006C0, G_IM_FMT_CI, 16, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 3, // tri count - 13, 14, 15, // tri0 - 13, 15, 16, // tri1 - 16, 17, 13 // tri2 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plb_1_v[375], 31, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 0, 2 // tri2 + ), + gsSPNTriangles_5b(3, 1, 5, // tri0 + 6, 7, 8, // tri1 + 9, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 13, 8, 14, // tri1 + 12, 15, 16, // tri2 + 9, 17, 18 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 1, 0, 22, // tri1 + 23, 24, 25, // tri2 + 22, 0, 26 // tri3 + ), + gsSPNTriangles_5b(12, 22, 26, // tri0 + 0, 6, 26, // tri1 + 12, 26, 13, // tri2 + 23, 25, 27 // tri3 + ), + gsSPNTriangles_5b(27, 28, 23, // tri0 + 6, 0, 4, // tri1 + 8, 13, 6, // tri2 + 13, 26, 6 // tri3 + ), + gsSPNTriangles_5b(4, 7, 6, // tri0 + 5, 20, 29, // tri1 + 20, 5, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x680, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&plb_1_v[406], 18, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 7, 8, // tri1 + 9, 10, 11, // tri2 + 9, 11, 12 // tri3 + ), + gsSPNTriangles_5b(7, 2, 4, // tri0 + 7, 4, 8, // tri1 + 12, 6, 5, // tri2 + 12, 5, 9 // tri3 + ), + gsSPNTriangles_5b(7, 6, 0, // tri0 + 2, 7, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x6C0, G_IM_FMT_CI, 16, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 13, 14, 15, // tri0 + 13, 15, 16, // tri1 + 16, 17, 13 // tri2 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_plb_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -862,4 +761,4 @@ static cKF_Joint_R_c cKF_je_r_plb_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_plb_1 = { 26, 14, cKF_je_r_plb_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_plb_1 = { 26, 14, cKF_je_r_plb_1_tbl }; diff --git a/src/data/npc/model/mdl/plc_1.c b/src/data/npc/model/mdl/plc_1.c index dc9ddc07..47f669b4 100644 --- a/src/data/npc/model/mdl/plc_1.c +++ b/src/data/npc/model/mdl/plc_1.c @@ -6,723 +6,636 @@ static Vtx plc_1_v[] = { }; static Gfx head_plc_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&plc_1_v[0], 29, 0), -gsSPNTrianglesInit_5b( - 12, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 4, 7, 8, // tri0 - 4, 8, 5, // tri1 - 7, 0, 3, // tri2 - 7, 3, 8 // tri3 -), -gsSPNTriangles_5b( - 9, 4, 6, // tri0 - 10, 11, 6, // tri1 - 10, 6, 5, // tri2 - 10, 5, 12 // tri3 -), -gsSPNTriangles_5b( - 6, 11, 9, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 2, // tri count - 13, 14, 15, // tri0 - 15, 16, 13, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 17, 18, 19, // tri0 - 20, 21, 22, // tri1 - 23, 21, 24 // tri2 -), -gsSPNTriangles_5b( - 25, 19, 26, // tri0 - 27, 19, 25, // tri1 - 21, 20, 28, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&plc_1_v[29], 21, 0), -gsSPNTrianglesInit_5b( - 26, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 5, 4, 0, // tri0 - 7, 9, 10, // tri1 - 9, 11, 12, // tri2 - 13, 14, 15 // tri3 -), -gsSPNTriangles_5b( - 8, 3, 6, // tri0 - 2, 16, 14, // tri1 - 3, 8, 10, // tri2 - 2, 1, 17 // tri3 -), -gsSPNTriangles_5b( - 18, 17, 19, // tri0 - 10, 20, 3, // tri1 - 2, 13, 0, // tri2 - 10, 8, 7 // tri3 -), -gsSPNTriangles_5b( - 14, 13, 2, // tri0 - 15, 6, 5, // tri1 - 0, 13, 15, // tri2 - 5, 6, 3 // tri3 -), -gsSPNTriangles_5b( - 15, 5, 0, // tri0 - 19, 12, 11, // tri1 - 11, 18, 19, // tri2 - 12, 20, 10 // tri3 -), -gsSPNTriangles_5b( - 16, 2, 17, // tri0 - 17, 18, 16, // tri1 - 12, 10, 9, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&plc_1_v[50], 30, 0), -gsSPNTrianglesInit_5b( - 22, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 4, 5, 3 // tri2 -), -gsSPNTriangles_5b( - 4, 2, 1, // tri0 - 5, 4, 6, // tri1 - 5, 6, 7, // tri2 - 8, 9, 10 // tri3 -), -gsSPNTriangles_5b( - 8, 10, 11, // tri0 - 5, 12, 13, // tri1 - 1, 14, 4, // tri2 - 4, 3, 2 // tri3 -), -gsSPNTriangles_5b( - 8, 15, 7, // tri0 - 11, 16, 15, // tri1 - 15, 8, 11, // tri2 - 8, 7, 6 // tri3 -), -gsSPNTriangles_5b( - 14, 9, 6, // tri0 - 12, 5, 7, // tri1 - 16, 17, 15, // tri2 - 13, 3, 5 // tri3 -), -gsSPNTriangles_5b( - 3, 13, 0, // tri0 - 7, 17, 12, // tri1 - 6, 4, 14, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 14, // tri count - 18, 19, 20, // tri0 - 19, 21, 22, // tri1 - 18, 23, 24 // tri2 -), -gsSPNTriangles_5b( - 25, 19, 18, // tri0 - 26, 23, 18, // tri1 - 18, 20, 26, // tri2 - 20, 22, 27 // tri3 -), -gsSPNTriangles_5b( - 22, 20, 19, // tri0 - 20, 27, 28, // tri1 - 28, 26, 20, // tri2 - 29, 21, 19 // tri3 -), -gsSPNTriangles_5b( - 25, 24, 29, // tri0 - 29, 19, 25, // tri1 - 18, 24, 25, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&plc_1_v[80], 10, 0), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 1, 2, // tri0 - 3, 2, 1, // tri1 - 3, 1, 4 // tri2 -), -gsSPNTriangles_5b( - 5, 6, 7, // tri0 - 7, 8, 5, // tri1 - 2, 9, 0, // tri2 - 4, 6, 5 // tri3 -), -gsSPNTriangles_5b( - 4, 5, 3, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plc_1_v[0], 29, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 8, // tri0 + 4, 8, 5, // tri1 + 7, 0, 3, // tri2 + 7, 3, 8 // tri3 + ), + gsSPNTriangles_5b(9, 4, 6, // tri0 + 10, 11, 6, // tri1 + 10, 6, 5, // tri2 + 10, 5, 12 // tri3 + ), + gsSPNTriangles_5b(6, 11, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 13, 14, 15, // tri0 + 15, 16, 13, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 17, 18, 19, // tri0 + 20, 21, 22, // tri1 + 23, 21, 24 // tri2 + ), + gsSPNTriangles_5b(25, 19, 26, // tri0 + 27, 19, 25, // tri1 + 21, 20, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&plc_1_v[29], 21, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(5, 4, 0, // tri0 + 7, 9, 10, // tri1 + 9, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(8, 3, 6, // tri0 + 2, 16, 14, // tri1 + 3, 8, 10, // tri2 + 2, 1, 17 // tri3 + ), + gsSPNTriangles_5b(18, 17, 19, // tri0 + 10, 20, 3, // tri1 + 2, 13, 0, // tri2 + 10, 8, 7 // tri3 + ), + gsSPNTriangles_5b(14, 13, 2, // tri0 + 15, 6, 5, // tri1 + 0, 13, 15, // tri2 + 5, 6, 3 // tri3 + ), + gsSPNTriangles_5b(15, 5, 0, // tri0 + 19, 12, 11, // tri1 + 11, 18, 19, // tri2 + 12, 20, 10 // tri3 + ), + gsSPNTriangles_5b(16, 2, 17, // tri0 + 17, 18, 16, // tri1 + 12, 10, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&plc_1_v[50], 30, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b(4, 2, 1, // tri0 + 5, 4, 6, // tri1 + 5, 6, 7, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(8, 10, 11, // tri0 + 5, 12, 13, // tri1 + 1, 14, 4, // tri2 + 4, 3, 2 // tri3 + ), + gsSPNTriangles_5b(8, 15, 7, // tri0 + 11, 16, 15, // tri1 + 15, 8, 11, // tri2 + 8, 7, 6 // tri3 + ), + gsSPNTriangles_5b(14, 9, 6, // tri0 + 12, 5, 7, // tri1 + 16, 17, 15, // tri2 + 13, 3, 5 // tri3 + ), + gsSPNTriangles_5b(3, 13, 0, // tri0 + 7, 17, 12, // tri1 + 6, 4, 14, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(14, // tri count + 18, 19, 20, // tri0 + 19, 21, 22, // tri1 + 18, 23, 24 // tri2 + ), + gsSPNTriangles_5b(25, 19, 18, // tri0 + 26, 23, 18, // tri1 + 18, 20, 26, // tri2 + 20, 22, 27 // tri3 + ), + gsSPNTriangles_5b(22, 20, 19, // tri0 + 20, 27, 28, // tri1 + 28, 26, 20, // tri2 + 29, 21, 19 // tri3 + ), + gsSPNTriangles_5b(25, 24, 29, // tri0 + 29, 19, 25, // tri1 + 18, 24, 25, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&plc_1_v[80], 10, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 3, 1, 4 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 7, 8, 5, // tri1 + 2, 9, 0, // tri2 + 4, 6, 5 // tri3 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_plc_model[] = { -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&plc_1_v[127], 4, 0), -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&plc_1_v[131], 13, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 2, 1, 4, // tri0 - 2, 5, 0, // tri1 - 1, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 0, 8, 9, // tri0 - 3, 0, 10, // tri1 - 1, 3, 11, // tri2 - 2, 12, 13 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 14, 15, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plc_1_v[127], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plc_1_v[131], 13, 4), + gsSPNTrianglesInit_5b(7, // tri count + 2, 1, 4, // tri0 + 2, 5, 0, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b(0, 8, 9, // tri0 + 3, 0, 10, // tri1 + 1, 3, 11, // tri2 + 2, 12, 13 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 14, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_plc_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&plc_1_v[144], 4, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&plc_1_v[148], 16, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 1, 4, 5, // tri0 - 1, 0, 6, // tri1 - 2, 3, 7 // tri2 -), -gsSPNTriangles_5b( - 3, 8, 9, // tri0 - 0, 10, 11, // tri1 - 2, 12, 13, // tri2 - 3, 1, 14 // tri3 -), -gsSPNTriangles_5b( - 2, 15, 0, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 16, 17, 18, // tri0 - 17, 16, 19, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plc_1_v[144], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plc_1_v[148], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 1, 4, 5, // tri0 + 1, 0, 6, // tri1 + 2, 3, 7 // tri2 + ), + gsSPNTriangles_5b(3, 8, 9, // tri0 + 0, 10, 11, // tri1 + 2, 12, 13, // tri2 + 3, 1, 14 // tri3 + ), + gsSPNTriangles_5b(2, 15, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_plc_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&plc_1_v[90], 4, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&plc_1_v[94], 13, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 3, 4, // tri0 - 3, 1, 5, // tri1 - 2, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 0, 8, 9, // tri0 - 1, 10, 11, // tri1 - 0, 12, 2, // tri2 - 1, 2, 13 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 14, 15, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plc_1_v[90], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plc_1_v[94], 13, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 4, // tri0 + 3, 1, 5, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(0, 8, 9, // tri0 + 1, 10, 11, // tri1 + 0, 12, 2, // tri2 + 1, 2, 13 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 14, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_plc_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&plc_1_v[107], 4, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&plc_1_v[111], 16, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 4, 5, // tri0 - 0, 2, 6, // tri1 - 2, 3, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 8, 9, // tri0 - 1, 10, 3, // tri1 - 3, 11, 12, // tri2 - 1, 0, 13 // tri3 -), -gsSPNTriangles_5b( - 0, 14, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 16, 17, 18, // tri0 - 19, 18, 17, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plc_1_v[107], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plc_1_v[111], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 0, 2, 6, // tri1 + 2, 3, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 1, 10, 3, // tri1 + 3, 11, 12, // tri2 + 1, 0, 13 // tri3 + ), + gsSPNTriangles_5b(0, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 19, 18, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx chest_plc_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&plc_1_v[164], 10, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&plc_1_v[174], 18, 10), -gsSPNTrianglesInit_5b( - 12, // tri count - 1, 0, 10, // tri0 - 3, 4, 11, // tri1 - 4, 12, 13 // tri2 -), -gsSPNTriangles_5b( - 1, 14, 15, // tri0 - 2, 16, 17, // tri1 - 2, 18, 19, // tri2 - 4, 8, 20 // tri3 -), -gsSPNTriangles_5b( - 3, 21, 22, // tri0 - 0, 23, 24, // tri1 - 6, 1, 25, // tri2 - 2, 3, 26 // tri3 -), -gsSPNTriangles_5b( - 0, 2, 27, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&plc_1_v[192], 10, 10), -gsSPNTrianglesInit_5b( - 6, // tri count - 5, 10, 11, // tri0 - 7, 9, 12, // tri1 - 7, 13, 14 // tri2 -), -gsSPNTriangles_5b( - 7, 15, 16, // tri0 - 5, 17, 18, // tri1 - 9, 5, 19, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&plc_1_v[202], 22, 0), -gsSPNTrianglesInit_5b( - 11, // tri count - 0, 1, 2, // tri0 - 3, 1, 0, // tri1 - 2, 1, 4 // tri2 -), -gsSPNTriangles_5b( - 5, 6, 2, // tri0 - 7, 4, 1, // tri1 - 6, 5, 8, // tri2 - 9, 6, 10 // tri3 -), -gsSPNTriangles_5b( - 9, 2, 6, // tri0 - 2, 9, 0, // tri1 - 2, 11, 5, // tri2 - 4, 11, 2 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 9, // tri count - 12, 13, 14, // tri0 - 15, 16, 17, // tri1 - 15, 18, 16 // tri2 -), -gsSPNTriangles_5b( - 15, 17, 19, // tri0 - 15, 14, 18, // tri1 - 12, 14, 15, // tri2 - 12, 15, 20 // tri3 -), -gsSPNTriangles_5b( - 19, 20, 15, // tri0 - 17, 16, 21, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plc_1_v[164], 10, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plc_1_v[174], 18, 10), + gsSPNTrianglesInit_5b(12, // tri count + 1, 0, 10, // tri0 + 3, 4, 11, // tri1 + 4, 12, 13 // tri2 + ), + gsSPNTriangles_5b(1, 14, 15, // tri0 + 2, 16, 17, // tri1 + 2, 18, 19, // tri2 + 4, 8, 20 // tri3 + ), + gsSPNTriangles_5b(3, 21, 22, // tri0 + 0, 23, 24, // tri1 + 6, 1, 25, // tri2 + 2, 3, 26 // tri3 + ), + gsSPNTriangles_5b(0, 2, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&plc_1_v[192], 10, 10), + gsSPNTrianglesInit_5b(6, // tri count + 5, 10, 11, // tri0 + 7, 9, 12, // tri1 + 7, 13, 14 // tri2 + ), + gsSPNTriangles_5b(7, 15, 16, // tri0 + 5, 17, 18, // tri1 + 9, 5, 19, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&plc_1_v[202], 22, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 2, 1, 4 // tri2 + ), + gsSPNTriangles_5b(5, 6, 2, // tri0 + 7, 4, 1, // tri1 + 6, 5, 8, // tri2 + 9, 6, 10 // tri3 + ), + gsSPNTriangles_5b(9, 2, 6, // tri0 + 2, 9, 0, // tri1 + 2, 11, 5, // tri2 + 4, 11, 2 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(9, // tri count + 12, 13, 14, // tri0 + 15, 16, 17, // tri1 + 15, 18, 16 // tri2 + ), + gsSPNTriangles_5b(15, 17, 19, // tri0 + 15, 14, 18, // tri1 + 12, 14, 15, // tri2 + 12, 15, 20 // tri3 + ), + gsSPNTriangles_5b(19, 20, 15, // tri0 + 17, 16, 21, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail1_plc_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000580, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&plc_1_v[249], 7, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 2, 3, 0, // tri1 - 4, 3, 2 // tri2 -), -gsSPNTriangles_5b( - 1, 5, 4, // tri0 - 2, 6, 4, // tri1 - 4, 6, 1, // tri2 - 0, 5, 1 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x580, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plc_1_v[249], 7, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 3, 2 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 2, 6, 4, // tri1 + 4, 6, 1, // tri2 + 0, 5, 1 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail2_plc_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&plc_1_v[224], 4, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000580, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&plc_1_v[228], 21, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 4, 5, // tri0 - 0, 6, 7, // tri1 - 3, 1, 8 // tri2 -), -gsSPNTriangles_5b( - 3, 9, 10, // tri0 - 2, 11, 12, // tri1 - 2, 3, 13, // tri2 - 0, 2, 14 // tri3 -), -gsSPNTriangles_5b( - 1, 0, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 12, // tri count - 16, 17, 18, // tri0 - 19, 17, 20, // tri1 - 18, 21, 22 // tri2 -), -gsSPNTriangles_5b( - 23, 22, 21, // tri0 - 23, 21, 20, // tri1 - 20, 21, 19, // tri2 - 20, 17, 16 // tri3 -), -gsSPNTriangles_5b( - 20, 16, 23, // tri0 - 21, 18, 19, // tri1 - 19, 18, 17, // tri2 - 18, 24, 16 // tri3 -), -gsSPNTriangles_5b( - 22, 24, 18, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plc_1_v[224], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x580, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plc_1_v[228], 21, 4), + gsSPNTrianglesInit_5b(8, // tri count + 0, 4, 5, // tri0 + 0, 6, 7, // tri1 + 3, 1, 8 // tri2 + ), + gsSPNTriangles_5b(3, 9, 10, // tri0 + 2, 11, 12, // tri1 + 2, 3, 13, // tri2 + 0, 2, 14 // tri3 + ), + gsSPNTriangles_5b(1, 0, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(12, // tri count + 16, 17, 18, // tri0 + 19, 17, 20, // tri1 + 18, 21, 22 // tri2 + ), + gsSPNTriangles_5b(23, 22, 21, // tri0 + 23, 21, 20, // tri1 + 20, 21, 19, // tri2 + 20, 17, 16 // tri3 + ), + gsSPNTriangles_5b(20, 16, 23, // tri0 + 21, 18, 19, // tri1 + 19, 18, 17, // tri2 + 18, 24, 16 // tri3 + ), + gsSPNTriangles_5b(22, 24, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_plc_model[] = { -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&plc_1_v[297], 5, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&plc_1_v[302], 17, 5), -gsSPNTrianglesInit_5b( - 9, // tri count - 3, 4, 5, // tri0 - 3, 6, 7, // tri1 - 0, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 3, 10, 11, // tri0 - 2, 3, 12, // tri1 - 1, 2, 13, // tri2 - 0, 14, 15 // tri3 -), -gsSPNTriangles_5b( - 4, 0, 16, // tri0 - 2, 17, 18, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 19, 20, 21, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plc_1_v[297], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plc_1_v[302], 17, 5), + gsSPNTrianglesInit_5b(9, // tri count + 3, 4, 5, // tri0 + 3, 6, 7, // tri1 + 0, 8, 9 // tri2 + ), + gsSPNTriangles_5b(3, 10, 11, // tri0 + 2, 3, 12, // tri1 + 1, 2, 13, // tri2 + 0, 14, 15 // tri3 + ), + gsSPNTriangles_5b(4, 0, 16, // tri0 + 2, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_plc_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&plc_1_v[319], 6, 0), -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&plc_1_v[325], 13, 6), -gsSPNTrianglesInit_5b( - 9, // tri count - 3, 6, 7, // tri0 - 3, 4, 8, // tri1 - 5, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 2, 3, 11, // tri0 - 0, 2, 12, // tri1 - 1, 13, 5, // tri2 - 1, 14, 15 // tri3 -), -gsSPNTriangles_5b( - 1, 0, 16, // tri0 - 2, 17, 18, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plc_1_v[319], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plc_1_v[325], 13, 6), + gsSPNTrianglesInit_5b(9, // tri count + 3, 6, 7, // tri0 + 3, 4, 8, // tri1 + 5, 9, 10 // tri2 + ), + gsSPNTriangles_5b(2, 3, 11, // tri0 + 0, 2, 12, // tri1 + 1, 13, 5, // tri2 + 1, 14, 15 // tri3 + ), + gsSPNTriangles_5b(1, 0, 16, // tri0 + 2, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_plc_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&plc_1_v[256], 5, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&plc_1_v[261], 17, 5), -gsSPNTrianglesInit_5b( - 9, // tri count - 0, 5, 6, // tri0 - 3, 7, 8, // tri1 - 2, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 0, 11, 12, // tri0 - 0, 4, 13, // tri1 - 2, 1, 14, // tri2 - 3, 2, 15 // tri3 -), -gsSPNTriangles_5b( - 3, 16, 17, // tri0 - 4, 3, 18, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 19, 20, 21, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plc_1_v[256], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plc_1_v[261], 17, 5), + gsSPNTrianglesInit_5b(9, // tri count + 0, 5, 6, // tri0 + 3, 7, 8, // tri1 + 2, 9, 10 // tri2 + ), + gsSPNTriangles_5b(0, 11, 12, // tri0 + 0, 4, 13, // tri1 + 2, 1, 14, // tri2 + 3, 2, 15 // tri3 + ), + gsSPNTriangles_5b(3, 16, 17, // tri0 + 4, 3, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_plc_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&plc_1_v[278], 6, 0), -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&plc_1_v[284], 13, 6), -gsSPNTrianglesInit_5b( - 9, // tri count - 2, 6, 7, // tri0 - 1, 8, 9, // tri1 - 0, 1, 10 // tri2 -), -gsSPNTriangles_5b( - 2, 0, 11, // tri0 - 1, 4, 12, // tri1 - 3, 13, 14, // tri2 - 3, 2, 15 // tri3 -), -gsSPNTriangles_5b( - 4, 16, 17, // tri0 - 3, 18, 5, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plc_1_v[278], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plc_1_v[284], 13, 6), + gsSPNTrianglesInit_5b(9, // tri count + 2, 6, 7, // tri0 + 1, 8, 9, // tri1 + 0, 1, 10 // tri2 + ), + gsSPNTriangles_5b(2, 0, 11, // tri0 + 1, 4, 12, // tri1 + 3, 13, 14, // tri2 + 3, 2, 15 // tri3 + ), + gsSPNTriangles_5b(4, 16, 17, // tri0 + 3, 18, 5, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx base_plc_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&plc_1_v[338], 25, 0), -gsSPNTrianglesInit_5b( - 12, // tri count - 0, 1, 2, // tri0 - 2, 1, 3, // tri1 - 4, 5, 3 // tri2 -), -gsSPNTriangles_5b( - 6, 7, 8, // tri0 - 0, 9, 8, // tri1 - 10, 4, 11, // tri2 - 2, 9, 0 // tri3 -), -gsSPNTriangles_5b( - 3, 5, 2, // tri0 - 8, 12, 6, // tri1 - 11, 13, 10, // tri2 - 3, 11, 4 // tri3 -), -gsSPNTriangles_5b( - 8, 7, 0, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 4, // tri count - 14, 15, 16, // tri0 - 16, 17, 14, // tri1 - 14, 18, 19 // tri2 -), -gsSPNTriangles_5b( - 19, 15, 14, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 3, // tri count - 20, 21, 22, // tri0 - 23, 24, 20, // tri1 - 20, 24, 21 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000680, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&plc_1_v[363], 8, 0), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 0, 3, 4 // tri2 -), -gsSPNTriangles_5b( - 5, 4, 3, // tri0 - 6, 1, 5, // tri1 - 6, 5, 7, // tri2 - 1, 0, 4 // tri3 -), -gsSPNTriangles_5b( - 1, 4, 5, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plc_1_v[338], 25, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 0, 9, 8, // tri1 + 10, 4, 11, // tri2 + 2, 9, 0 // tri3 + ), + gsSPNTriangles_5b(3, 5, 2, // tri0 + 8, 12, 6, // tri1 + 11, 13, 10, // tri2 + 3, 11, 4 // tri3 + ), + gsSPNTriangles_5b(8, 7, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 14, 15, 16, // tri0 + 16, 17, 14, // tri1 + 14, 18, 19 // tri2 + ), + gsSPNTriangles_5b(19, 15, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 20, 21, 22, // tri0 + 23, 24, 20, // tri1 + 20, 24, 21 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x680, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&plc_1_v[363], 8, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 3, 4 // tri2 + ), + gsSPNTriangles_5b(5, 4, 3, // tri0 + 6, 1, 5, // tri1 + 6, 5, 7, // tri2 + 1, 0, 4 // tri3 + ), + gsSPNTriangles_5b(1, 4, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_plc_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -754,4 +667,4 @@ static cKF_Joint_R_c cKF_je_r_plc_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_plc_1 = { 26, 13, cKF_je_r_plc_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_plc_1 = { 26, 13, cKF_je_r_plc_1_tbl }; diff --git a/src/data/npc/model/mdl/plj_1.c b/src/data/npc/model/mdl/plj_1.c index 801efd5a..02ece23a 100644 --- a/src/data/npc/model/mdl/plj_1.c +++ b/src/data/npc/model/mdl/plj_1.c @@ -6,689 +6,607 @@ static Vtx plj_1_v[] = { }; static Gfx head_plj_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&plj_1_v[0], 18, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 9, 10, 11, // tri0 - 12, 13, 14, // tri1 - 15, 16, 17, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&plj_1_v[18], 21, 0), -gsSPNTrianglesInit_5b( - 26, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 5, 6, 3 // tri2 -), -gsSPNTriangles_5b( - 7, 8, 6, // tri0 - 9, 10, 11, // tri1 - 12, 13, 14, // tri2 - 11, 10, 7 // tri3 -), -gsSPNTriangles_5b( - 13, 2, 1, // tri0 - 2, 15, 0, // tri1 - 16, 17, 18, // tri2 - 14, 9, 12 // tri3 -), -gsSPNTriangles_5b( - 6, 5, 17, // tri0 - 9, 14, 1, // tri1 - 6, 8, 3, // tri2 - 4, 3, 19 // tri3 -), -gsSPNTriangles_5b( - 1, 20, 9, // tri0 - 6, 16, 7, // tri1 - 1, 14, 13, // tri2 - 17, 16, 6 // tri3 -), -gsSPNTriangles_5b( - 18, 12, 11, // tri0 - 7, 16, 18, // tri1 - 11, 12, 9, // tri2 - 18, 11, 7 // tri3 -), -gsSPNTriangles_5b( - 19, 0, 15, // tri0 - 15, 4, 19, // tri1 - 0, 20, 1, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000180, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&plj_1_v[39], 30, 0), -gsSPNTrianglesInit_5b( - 22, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 4, 5, 3 // tri2 -), -gsSPNTriangles_5b( - 6, 7, 2, // tri0 - 8, 9, 10, // tri1 - 10, 11, 12, // tri2 - 10, 12, 8 // tri3 -), -gsSPNTriangles_5b( - 13, 14, 1, // tri0 - 9, 8, 7, // tri1 - 2, 14, 6, // tri2 - 15, 12, 11 // tri3 -), -gsSPNTriangles_5b( - 7, 15, 3, // tri0 - 7, 3, 2, // tri1 - 0, 5, 16, // tri2 - 0, 16, 17 // tri3 -), -gsSPNTriangles_5b( - 7, 6, 9, // tri0 - 11, 4, 15, // tri1 - 17, 13, 1, // tri2 - 1, 0, 17 // tri3 -), -gsSPNTriangles_5b( - 3, 15, 4, // tri0 - 15, 7, 8, // tri1 - 15, 8, 12, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 14, // tri count - 18, 19, 20, // tri0 - 21, 22, 20, // tri1 - 18, 22, 23 // tri2 -), -gsSPNTriangles_5b( - 18, 24, 19, // tri0 - 25, 23, 22, // tri1 - 26, 27, 23, // tri2 - 23, 25, 28 // tri3 -), -gsSPNTriangles_5b( - 21, 29, 22, // tri0 - 20, 19, 21, // tri1 - 23, 28, 26, // tri2 - 20, 22, 18 // tri3 -), -gsSPNTriangles_5b( - 27, 24, 18, // tri0 - 18, 23, 27, // tri1 - 22, 29, 25, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&plj_1_v[69], 10, 0), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 5, 6, 3 // tri2 -), -gsSPNTriangles_5b( - 1, 7, 8, // tri0 - 8, 9, 1, // tri1 - 0, 7, 1, // tri2 - 2, 5, 4 // tri3 -), -gsSPNTriangles_5b( - 2, 4, 0, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plj_1_v[0], 18, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 13, 14, // tri1 + 15, 16, 17, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&plj_1_v[18], 21, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 3 // tri2 + ), + gsSPNTriangles_5b(7, 8, 6, // tri0 + 9, 10, 11, // tri1 + 12, 13, 14, // tri2 + 11, 10, 7 // tri3 + ), + gsSPNTriangles_5b(13, 2, 1, // tri0 + 2, 15, 0, // tri1 + 16, 17, 18, // tri2 + 14, 9, 12 // tri3 + ), + gsSPNTriangles_5b(6, 5, 17, // tri0 + 9, 14, 1, // tri1 + 6, 8, 3, // tri2 + 4, 3, 19 // tri3 + ), + gsSPNTriangles_5b(1, 20, 9, // tri0 + 6, 16, 7, // tri1 + 1, 14, 13, // tri2 + 17, 16, 6 // tri3 + ), + gsSPNTriangles_5b(18, 12, 11, // tri0 + 7, 16, 18, // tri1 + 11, 12, 9, // tri2 + 18, 11, 7 // tri3 + ), + gsSPNTriangles_5b(19, 0, 15, // tri0 + 15, 4, 19, // tri1 + 0, 20, 1, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x180, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&plj_1_v[39], 30, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b(6, 7, 2, // tri0 + 8, 9, 10, // tri1 + 10, 11, 12, // tri2 + 10, 12, 8 // tri3 + ), + gsSPNTriangles_5b(13, 14, 1, // tri0 + 9, 8, 7, // tri1 + 2, 14, 6, // tri2 + 15, 12, 11 // tri3 + ), + gsSPNTriangles_5b(7, 15, 3, // tri0 + 7, 3, 2, // tri1 + 0, 5, 16, // tri2 + 0, 16, 17 // tri3 + ), + gsSPNTriangles_5b(7, 6, 9, // tri0 + 11, 4, 15, // tri1 + 17, 13, 1, // tri2 + 1, 0, 17 // tri3 + ), + gsSPNTriangles_5b(3, 15, 4, // tri0 + 15, 7, 8, // tri1 + 15, 8, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(14, // tri count + 18, 19, 20, // tri0 + 21, 22, 20, // tri1 + 18, 22, 23 // tri2 + ), + gsSPNTriangles_5b(18, 24, 19, // tri0 + 25, 23, 22, // tri1 + 26, 27, 23, // tri2 + 23, 25, 28 // tri3 + ), + gsSPNTriangles_5b(21, 29, 22, // tri0 + 20, 19, 21, // tri1 + 23, 28, 26, // tri2 + 20, 22, 18 // tri3 + ), + gsSPNTriangles_5b(27, 24, 18, // tri0 + 18, 23, 27, // tri1 + 22, 29, 25, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&plj_1_v[69], 10, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 3 // tri2 + ), + gsSPNTriangles_5b(1, 7, 8, // tri0 + 8, 9, 1, // tri1 + 0, 7, 1, // tri2 + 2, 5, 4 // tri3 + ), + gsSPNTriangles_5b(2, 4, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_plj_model[] = { -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&plj_1_v[116], 4, 0), -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&plj_1_v[120], 13, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 2, 1, 4, // tri0 - 2, 5, 0, // tri1 - 1, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 0, 8, 9, // tri0 - 3, 0, 10, // tri1 - 1, 3, 11, // tri2 - 2, 12, 13 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 14, 15, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plj_1_v[116], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plj_1_v[120], 13, 4), + gsSPNTrianglesInit_5b(7, // tri count + 2, 1, 4, // tri0 + 2, 5, 0, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b(0, 8, 9, // tri0 + 3, 0, 10, // tri1 + 1, 3, 11, // tri2 + 2, 12, 13 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 14, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_plj_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&plj_1_v[133], 4, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&plj_1_v[137], 16, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 3, 4, 5, // tri0 - 3, 2, 6, // tri1 - 1, 0, 7 // tri2 -), -gsSPNTriangles_5b( - 0, 8, 9, // tri0 - 2, 10, 11, // tri1 - 1, 12, 13, // tri2 - 0, 3, 14 // tri3 -), -gsSPNTriangles_5b( - 1, 15, 2, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 16, 17, 18, // tri0 - 17, 16, 19, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plj_1_v[133], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plj_1_v[137], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 3, 4, 5, // tri0 + 3, 2, 6, // tri1 + 1, 0, 7 // tri2 + ), + gsSPNTriangles_5b(0, 8, 9, // tri0 + 2, 10, 11, // tri1 + 1, 12, 13, // tri2 + 0, 3, 14 // tri3 + ), + gsSPNTriangles_5b(1, 15, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_plj_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&plj_1_v[79], 4, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&plj_1_v[83], 13, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 3, 4, // tri0 - 3, 1, 5, // tri1 - 2, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 0, 8, 9, // tri0 - 1, 10, 11, // tri1 - 0, 12, 2, // tri2 - 1, 2, 13 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 14, 15, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plj_1_v[79], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plj_1_v[83], 13, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 4, // tri0 + 3, 1, 5, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(0, 8, 9, // tri0 + 1, 10, 11, // tri1 + 0, 12, 2, // tri2 + 1, 2, 13 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 14, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_plj_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&plj_1_v[96], 4, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&plj_1_v[100], 16, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 3, 4, 5, // tri0 - 1, 3, 6, // tri1 - 3, 0, 7 // tri2 -), -gsSPNTriangles_5b( - 2, 8, 9, // tri0 - 2, 10, 0, // tri1 - 0, 11, 12, // tri2 - 2, 1, 13 // tri3 -), -gsSPNTriangles_5b( - 1, 14, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 16, 17, 18, // tri0 - 19, 18, 17, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plj_1_v[96], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plj_1_v[100], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 3, 4, 5, // tri0 + 1, 3, 6, // tri1 + 3, 0, 7 // tri2 + ), + gsSPNTriangles_5b(2, 8, 9, // tri0 + 2, 10, 0, // tri1 + 0, 11, 12, // tri2 + 2, 1, 13 // tri3 + ), + gsSPNTriangles_5b(1, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 19, 18, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx chest_plj_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&plj_1_v[153], 10, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&plj_1_v[163], 10, 10), -gsSPNTrianglesInit_5b( - 6, // tri count - 2, 10, 11, // tri0 - 0, 12, 13, // tri1 - 9, 0, 14 // tri2 -), -gsSPNTriangles_5b( - 2, 9, 15, // tri0 - 0, 16, 17, // tri1 - 2, 18, 19, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&plj_1_v[173], 18, 10), -gsSPNTrianglesInit_5b( - 12, // tri count - 5, 4, 10, // tri0 - 7, 8, 11, // tri1 - 6, 12, 13 // tri2 -), -gsSPNTriangles_5b( - 8, 3, 14, // tri0 - 7, 15, 16, // tri1 - 4, 17, 18, // tri2 - 1, 5, 19 // tri3 -), -gsSPNTriangles_5b( - 6, 7, 20, // tri0 - 8, 21, 22, // tri1 - 5, 23, 24, // tri2 - 4, 6, 25 // tri3 -), -gsSPNTriangles_5b( - 6, 26, 27, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&plj_1_v[191], 24, 0), -gsSPNTrianglesInit_5b( - 12, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 4, 6, 7, // tri0 - 8, 9, 10, // tri1 - 8, 10, 11, // tri2 - 9, 0, 3 // tri3 -), -gsSPNTriangles_5b( - 9, 3, 10, // tri0 - 12, 5, 4, // tri1 - 12, 4, 13, // tri2 - 3, 2, 11 // tri3 -), -gsSPNTriangles_5b( - 3, 11, 10, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 9, // tri count - 14, 15, 16, // tri0 - 14, 17, 15, // tri1 - 18, 19, 20 // tri2 -), -gsSPNTriangles_5b( - 14, 21, 17, // tri0 - 14, 20, 21, // tri1 - 18, 20, 14, // tri2 - 18, 14, 22 // tri3 -), -gsSPNTriangles_5b( - 16, 22, 14, // tri0 - 15, 17, 23, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&plj_1_v[215], 12, 0), -gsSPNTrianglesInit_5b( - 11, // tri count - 0, 1, 2, // tri0 - 1, 0, 3, // tri1 - 1, 4, 5 // tri2 -), -gsSPNTriangles_5b( - 6, 2, 1, // tri0 - 3, 4, 1, // tri1 - 7, 4, 3, // tri2 - 1, 8, 6 // tri3 -), -gsSPNTriangles_5b( - 5, 8, 1, // tri0 - 9, 5, 4, // tri1 - 2, 6, 10, // tri2 - 0, 2, 11 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plj_1_v[153], 10, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plj_1_v[163], 10, 10), + gsSPNTrianglesInit_5b(6, // tri count + 2, 10, 11, // tri0 + 0, 12, 13, // tri1 + 9, 0, 14 // tri2 + ), + gsSPNTriangles_5b(2, 9, 15, // tri0 + 0, 16, 17, // tri1 + 2, 18, 19, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&plj_1_v[173], 18, 10), + gsSPNTrianglesInit_5b(12, // tri count + 5, 4, 10, // tri0 + 7, 8, 11, // tri1 + 6, 12, 13 // tri2 + ), + gsSPNTriangles_5b(8, 3, 14, // tri0 + 7, 15, 16, // tri1 + 4, 17, 18, // tri2 + 1, 5, 19 // tri3 + ), + gsSPNTriangles_5b(6, 7, 20, // tri0 + 8, 21, 22, // tri1 + 5, 23, 24, // tri2 + 4, 6, 25 // tri3 + ), + gsSPNTriangles_5b(6, 26, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&plj_1_v[191], 24, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 9, 0, 3 // tri3 + ), + gsSPNTriangles_5b(9, 3, 10, // tri0 + 12, 5, 4, // tri1 + 12, 4, 13, // tri2 + 3, 2, 11 // tri3 + ), + gsSPNTriangles_5b(3, 11, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(9, // tri count + 14, 15, 16, // tri0 + 14, 17, 15, // tri1 + 18, 19, 20 // tri2 + ), + gsSPNTriangles_5b(14, 21, 17, // tri0 + 14, 20, 21, // tri1 + 18, 20, 14, // tri2 + 18, 14, 22 // tri3 + ), + gsSPNTriangles_5b(16, 22, 14, // tri0 + 15, 17, 23, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&plj_1_v[215], 12, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 1, 0, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b(6, 2, 1, // tri0 + 3, 4, 1, // tri1 + 7, 4, 3, // tri2 + 1, 8, 6 // tri3 + ), + gsSPNTriangles_5b(5, 8, 1, // tri0 + 9, 5, 4, // tri1 + 2, 6, 10, // tri2 + 0, 2, 11 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail1_plj_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&plj_1_v[252], 7, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 2, 3, 0, // tri1 - 4, 3, 2 // tri2 -), -gsSPNTriangles_5b( - 1, 5, 4, // tri0 - 2, 6, 4, // tri1 - 4, 6, 1, // tri2 - 0, 5, 1 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plj_1_v[252], 7, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 3, 2 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 2, 6, 4, // tri1 + 4, 6, 1, // tri2 + 0, 5, 1 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail2_plj_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&plj_1_v[227], 4, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&plj_1_v[231], 21, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 4, 5, // tri0 - 0, 6, 7, // tri1 - 3, 1, 8 // tri2 -), -gsSPNTriangles_5b( - 3, 9, 10, // tri0 - 2, 11, 12, // tri1 - 2, 3, 13, // tri2 - 0, 2, 14 // tri3 -), -gsSPNTriangles_5b( - 1, 0, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 12, // tri count - 16, 17, 18, // tri0 - 19, 17, 20, // tri1 - 18, 21, 22 // tri2 -), -gsSPNTriangles_5b( - 23, 22, 21, // tri0 - 23, 21, 20, // tri1 - 20, 21, 19, // tri2 - 20, 17, 16 // tri3 -), -gsSPNTriangles_5b( - 20, 16, 23, // tri0 - 21, 18, 19, // tri1 - 19, 18, 17, // tri2 - 18, 24, 16 // tri3 -), -gsSPNTriangles_5b( - 22, 24, 18, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plj_1_v[227], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plj_1_v[231], 21, 4), + gsSPNTrianglesInit_5b(8, // tri count + 0, 4, 5, // tri0 + 0, 6, 7, // tri1 + 3, 1, 8 // tri2 + ), + gsSPNTriangles_5b(3, 9, 10, // tri0 + 2, 11, 12, // tri1 + 2, 3, 13, // tri2 + 0, 2, 14 // tri3 + ), + gsSPNTriangles_5b(1, 0, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(12, // tri count + 16, 17, 18, // tri0 + 19, 17, 20, // tri1 + 18, 21, 22 // tri2 + ), + gsSPNTriangles_5b(23, 22, 21, // tri0 + 23, 21, 20, // tri1 + 20, 21, 19, // tri2 + 20, 17, 16 // tri3 + ), + gsSPNTriangles_5b(20, 16, 23, // tri0 + 21, 18, 19, // tri1 + 19, 18, 17, // tri2 + 18, 24, 16 // tri3 + ), + gsSPNTriangles_5b(22, 24, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_plj_model[] = { -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&plj_1_v[300], 5, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000580, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&plj_1_v[305], 17, 5), -gsSPNTrianglesInit_5b( - 9, // tri count - 3, 4, 5, // tri0 - 3, 6, 7, // tri1 - 0, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 3, 10, 11, // tri0 - 2, 3, 12, // tri1 - 1, 2, 13, // tri2 - 0, 14, 15 // tri3 -), -gsSPNTriangles_5b( - 4, 0, 16, // tri0 - 2, 17, 18, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 19, 20, 21, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plj_1_v[300], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x580, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plj_1_v[305], 17, 5), + gsSPNTrianglesInit_5b(9, // tri count + 3, 4, 5, // tri0 + 3, 6, 7, // tri1 + 0, 8, 9 // tri2 + ), + gsSPNTriangles_5b(3, 10, 11, // tri0 + 2, 3, 12, // tri1 + 1, 2, 13, // tri2 + 0, 14, 15 // tri3 + ), + gsSPNTriangles_5b(4, 0, 16, // tri0 + 2, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_plj_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&plj_1_v[322], 6, 0), -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000580, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&plj_1_v[328], 13, 6), -gsSPNTrianglesInit_5b( - 9, // tri count - 4, 6, 7, // tri0 - 5, 3, 8, // tri1 - 3, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 1, 4, 11, // tri0 - 0, 1, 12, // tri1 - 2, 13, 3, // tri2 - 2, 14, 15 // tri3 -), -gsSPNTriangles_5b( - 2, 0, 16, // tri0 - 1, 17, 18, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plj_1_v[322], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x580, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plj_1_v[328], 13, 6), + gsSPNTrianglesInit_5b(9, // tri count + 4, 6, 7, // tri0 + 5, 3, 8, // tri1 + 3, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 4, 11, // tri0 + 0, 1, 12, // tri1 + 2, 13, 3, // tri2 + 2, 14, 15 // tri3 + ), + gsSPNTriangles_5b(2, 0, 16, // tri0 + 1, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_plj_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&plj_1_v[259], 5, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000580, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&plj_1_v[264], 17, 5), -gsSPNTrianglesInit_5b( - 9, // tri count - 4, 3, 5, // tri0 - 3, 6, 7, // tri1 - 3, 2, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 0, 9, // tri0 - 1, 4, 10, // tri1 - 1, 11, 12, // tri2 - 2, 13, 14 // tri3 -), -gsSPNTriangles_5b( - 3, 15, 16, // tri0 - 1, 17, 18, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 19, 20, 21, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plj_1_v[259], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x580, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plj_1_v[264], 17, 5), + gsSPNTrianglesInit_5b(9, // tri count + 4, 3, 5, // tri0 + 3, 6, 7, // tri1 + 3, 2, 8 // tri2 + ), + gsSPNTriangles_5b(2, 0, 9, // tri0 + 1, 4, 10, // tri1 + 1, 11, 12, // tri2 + 2, 13, 14 // tri3 + ), + gsSPNTriangles_5b(3, 15, 16, // tri0 + 1, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_plj_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&plj_1_v[281], 6, 0), -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000580, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&plj_1_v[287], 13, 6), -gsSPNTrianglesInit_5b( - 9, // tri count - 4, 6, 3, // tri0 - 3, 7, 8, // tri1 - 5, 1, 9 // tri2 -), -gsSPNTriangles_5b( - 5, 10, 11, // tri0 - 2, 3, 12, // tri1 - 1, 0, 13, // tri2 - 0, 2, 14 // tri3 -), -gsSPNTriangles_5b( - 2, 15, 16, // tri0 - 1, 17, 18, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plj_1_v[281], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x580, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plj_1_v[287], 13, 6), + gsSPNTrianglesInit_5b(9, // tri count + 4, 6, 3, // tri0 + 3, 7, 8, // tri1 + 5, 1, 9 // tri2 + ), + gsSPNTriangles_5b(5, 10, 11, // tri0 + 2, 3, 12, // tri1 + 1, 0, 13, // tri2 + 0, 2, 14 // tri3 + ), + gsSPNTriangles_5b(2, 15, 16, // tri0 + 1, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx base_plj_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000580, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&plj_1_v[341], 21, 0), -gsSPNTrianglesInit_5b( - 20, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 9, 10, 11, // tri0 - 12, 4, 3, // tri1 - 3, 5, 13, // tri2 - 10, 14, 15 // tri3 -), -gsSPNTriangles_5b( - 6, 16, 17, // tri0 - 9, 12, 3, // tri1 - 3, 13, 8, // tri2 - 15, 11, 10 // tri3 -), -gsSPNTriangles_5b( - 18, 19, 17, // tri0 - 14, 19, 18, // tri1 - 18, 15, 14, // tri2 - 8, 13, 6 // tri3 -), -gsSPNTriangles_5b( - 17, 7, 6, // tri0 - 11, 12, 9, // tri1 - 3, 20, 9, // tri2 - 17, 16, 18 // tri3 -), -gsSPNTriangles_5b( - 8, 20, 3, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x580, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plj_1_v[341], 21, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 4, 3, // tri1 + 3, 5, 13, // tri2 + 10, 14, 15 // tri3 + ), + gsSPNTriangles_5b(6, 16, 17, // tri0 + 9, 12, 3, // tri1 + 3, 13, 8, // tri2 + 15, 11, 10 // tri3 + ), + gsSPNTriangles_5b(18, 19, 17, // tri0 + 14, 19, 18, // tri1 + 18, 15, 14, // tri2 + 8, 13, 6 // tri3 + ), + gsSPNTriangles_5b(17, 7, 6, // tri0 + 11, 12, 9, // tri1 + 3, 20, 9, // tri2 + 17, 16, 18 // tri3 + ), + gsSPNTriangles_5b(8, 20, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_plj_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -720,4 +638,4 @@ static cKF_Joint_R_c cKF_je_r_plj_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_plj_1 = { 26, 13, cKF_je_r_plj_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_plj_1 = { 26, 13, cKF_je_r_plj_1_tbl }; diff --git a/src/data/npc/model/mdl/rbt_1.c b/src/data/npc/model/mdl/rbt_1.c index 71cb7915..fb1e29fd 100644 --- a/src/data/npc/model/mdl/rbt_1.c +++ b/src/data/npc/model/mdl/rbt_1.c @@ -6,649 +6,572 @@ static Vtx rbt_1_v[] = { }; static Gfx head_rbt_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rbt_1_v[0], 16, 0), -gsSPNTrianglesInit_5b( - 12, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 2, 6, 5 // tri2 -), -gsSPNTriangles_5b( - 7, 8, 9, // tri0 - 10, 11, 7, // tri1 - 9, 12, 7, // tri2 - 10, 13, 14 // tri3 -), -gsSPNTriangles_5b( - 2, 15, 0, // tri0 - 5, 6, 3, // tri1 - 14, 11, 10, // tri2 - 5, 15, 2 // tri3 -), -gsSPNTriangles_5b( - 7, 12, 10, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&rbt_1_v[16], 23, 0), -gsSPNTrianglesInit_5b( - 29, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 3, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 7, 3, 6, // tri0 - 8, 9, 10, // tri1 - 10, 11, 12, // tri2 - 10, 9, 11 // tri3 -), -gsSPNTriangles_5b( - 8, 5, 4, // tri0 - 4, 9, 8, // tri1 - 13, 14, 3, // tri2 - 15, 11, 14 // tri3 -), -gsSPNTriangles_5b( - 16, 15, 14, // tri0 - 7, 17, 18, // tri1 - 2, 12, 11, // tri2 - 13, 3, 7 // tri3 -), -gsSPNTriangles_5b( - 11, 15, 2, // tri0 - 9, 4, 14, // tri1 - 9, 14, 11, // tri2 - 14, 4, 3 // tri3 -), -gsSPNTriangles_5b( - 19, 0, 15, // tri0 - 20, 21, 19, // tri1 - 20, 19, 22, // tri2 - 18, 13, 7 // tri3 -), -gsSPNTriangles_5b( - 2, 15, 0, // tri0 - 13, 18, 22, // tri1 - 16, 22, 19, // tri2 - 14, 13, 16 // tri3 -), -gsSPNTriangles_5b( - 15, 16, 19, // tri0 - 22, 16, 13, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&rbt_1_v[39], 19, 0), -gsSPNTrianglesInit_5b( - 23, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 5, 9, 10, // tri0 - 11, 12, 6, // tri1 - 13, 11, 6, // tri2 - 14, 3, 5 // tri3 -), -gsSPNTriangles_5b( - 15, 0, 14, // tri0 - 13, 0, 15, // tri1 - 16, 15, 10, // tri2 - 9, 16, 10 // tri3 -), -gsSPNTriangles_5b( - 13, 8, 17, // tri0 - 16, 18, 15, // tri1 - 5, 10, 14, // tri2 - 2, 3, 14 // tri3 -), -gsSPNTriangles_5b( - 12, 11, 18, // tri0 - 6, 8, 13, // tri1 - 15, 11, 13, // tri2 - 17, 1, 0 // tri3 -), -gsSPNTriangles_5b( - 0, 13, 17, // tri0 - 14, 10, 15, // tri1 - 0, 2, 14, // tri2 - 15, 18, 11 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&rbt_1_v[58], 14, 0), -gsSPNTrianglesInit_5b( - 16, // tri count - 0, 1, 2, // tri0 - 2, 3, 0, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 4, 7, 5, // tri0 - 3, 8, 0, // tri1 - 0, 8, 9, // tri2 - 8, 3, 6 // tri3 -), -gsSPNTriangles_5b( - 8, 6, 10, // tri0 - 2, 4, 6, // tri1 - 8, 11, 9, // tri2 - 8, 10, 11 // tri3 -), -gsSPNTriangles_5b( - 9, 12, 0, // tri0 - 10, 6, 5, // tri1 - 12, 1, 0, // tri2 - 12, 13, 1 // tri3 -), -gsSPNTriangles_5b( - 6, 3, 2, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&rbt_1_v[72], 28, 0), -gsSPNTrianglesInit_5b( - 32, // tri count - 0, 1, 2, // tri0 - 3, 4, 1, // tri1 - 5, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 4, 2, 1, // tri0 - 6, 8, 7, // tri1 - 9, 5, 10, // tri2 - 2, 11, 12 // tri3 -), -gsSPNTriangles_5b( - 13, 14, 15, // tri0 - 13, 16, 2, // tri1 - 17, 18, 19, // tri2 - 9, 18, 17 // tri3 -), -gsSPNTriangles_5b( - 5, 9, 6, // tri0 - 17, 20, 9, // tri1 - 2, 14, 13, // tri2 - 15, 16, 13 // tri3 -), -gsSPNTriangles_5b( - 14, 4, 21, // tri0 - 20, 22, 8, // tri1 - 23, 24, 9, // tri2 - 25, 15, 14 // tri3 -), -gsSPNTriangles_5b( - 21, 26, 14, // tri0 - 8, 6, 20, // tri1 - 20, 19, 27, // tri2 - 19, 20, 17 // tri3 -), -gsSPNTriangles_5b( - 10, 23, 9, // tri0 - 2, 12, 0, // tri1 - 3, 21, 4, // tri2 - 27, 22, 20 // tri3 -), -gsSPNTriangles_5b( - 14, 26, 25, // tri0 - 14, 2, 4, // tri1 - 16, 11, 2, // tri2 - 9, 24, 18 // tri3 -), -gsSPNTriangles_5b( - 6, 9, 20, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rbt_1_v[0], 16, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 6, 5 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 11, 7, // tri1 + 9, 12, 7, // tri2 + 10, 13, 14 // tri3 + ), + gsSPNTriangles_5b(2, 15, 0, // tri0 + 5, 6, 3, // tri1 + 14, 11, 10, // tri2 + 5, 15, 2 // tri3 + ), + gsSPNTriangles_5b(7, 12, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rbt_1_v[16], 23, 0), + gsSPNTrianglesInit_5b(29, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 3, 6, // tri0 + 8, 9, 10, // tri1 + 10, 11, 12, // tri2 + 10, 9, 11 // tri3 + ), + gsSPNTriangles_5b(8, 5, 4, // tri0 + 4, 9, 8, // tri1 + 13, 14, 3, // tri2 + 15, 11, 14 // tri3 + ), + gsSPNTriangles_5b(16, 15, 14, // tri0 + 7, 17, 18, // tri1 + 2, 12, 11, // tri2 + 13, 3, 7 // tri3 + ), + gsSPNTriangles_5b(11, 15, 2, // tri0 + 9, 4, 14, // tri1 + 9, 14, 11, // tri2 + 14, 4, 3 // tri3 + ), + gsSPNTriangles_5b(19, 0, 15, // tri0 + 20, 21, 19, // tri1 + 20, 19, 22, // tri2 + 18, 13, 7 // tri3 + ), + gsSPNTriangles_5b(2, 15, 0, // tri0 + 13, 18, 22, // tri1 + 16, 22, 19, // tri2 + 14, 13, 16 // tri3 + ), + gsSPNTriangles_5b(15, 16, 19, // tri0 + 22, 16, 13, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rbt_1_v[39], 19, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(5, 9, 10, // tri0 + 11, 12, 6, // tri1 + 13, 11, 6, // tri2 + 14, 3, 5 // tri3 + ), + gsSPNTriangles_5b(15, 0, 14, // tri0 + 13, 0, 15, // tri1 + 16, 15, 10, // tri2 + 9, 16, 10 // tri3 + ), + gsSPNTriangles_5b(13, 8, 17, // tri0 + 16, 18, 15, // tri1 + 5, 10, 14, // tri2 + 2, 3, 14 // tri3 + ), + gsSPNTriangles_5b(12, 11, 18, // tri0 + 6, 8, 13, // tri1 + 15, 11, 13, // tri2 + 17, 1, 0 // tri3 + ), + gsSPNTriangles_5b(0, 13, 17, // tri0 + 14, 10, 15, // tri1 + 0, 2, 14, // tri2 + 15, 18, 11 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rbt_1_v[58], 14, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 3, 8, 0, // tri1 + 0, 8, 9, // tri2 + 8, 3, 6 // tri3 + ), + gsSPNTriangles_5b(8, 6, 10, // tri0 + 2, 4, 6, // tri1 + 8, 11, 9, // tri2 + 8, 10, 11 // tri3 + ), + gsSPNTriangles_5b(9, 12, 0, // tri0 + 10, 6, 5, // tri1 + 12, 1, 0, // tri2 + 12, 13, 1 // tri3 + ), + gsSPNTriangles_5b(6, 3, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rbt_1_v[72], 28, 0), + gsSPNTrianglesInit_5b(32, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(4, 2, 1, // tri0 + 6, 8, 7, // tri1 + 9, 5, 10, // tri2 + 2, 11, 12 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 13, 16, 2, // tri1 + 17, 18, 19, // tri2 + 9, 18, 17 // tri3 + ), + gsSPNTriangles_5b(5, 9, 6, // tri0 + 17, 20, 9, // tri1 + 2, 14, 13, // tri2 + 15, 16, 13 // tri3 + ), + gsSPNTriangles_5b(14, 4, 21, // tri0 + 20, 22, 8, // tri1 + 23, 24, 9, // tri2 + 25, 15, 14 // tri3 + ), + gsSPNTriangles_5b(21, 26, 14, // tri0 + 8, 6, 20, // tri1 + 20, 19, 27, // tri2 + 19, 20, 17 // tri3 + ), + gsSPNTriangles_5b(10, 23, 9, // tri0 + 2, 12, 0, // tri1 + 3, 21, 4, // tri2 + 27, 22, 20 // tri3 + ), + gsSPNTriangles_5b(14, 26, 25, // tri0 + 14, 2, 4, // tri1 + 16, 11, 2, // tri2 + 9, 24, 18 // tri3 + ), + gsSPNTriangles_5b(6, 9, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_rbt_model[] = { -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rbt_1_v[136], 5, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rbt_1_v[141], 16, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 5, 3, // tri0 - 1, 4, 6, // tri1 - 1, 8, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 10, 9, // tri0 - 0, 1, 11, // tri1 - 2, 12, 13, // tri2 - 2, 0, 14 // tri3 -), -gsSPNTriangles_5b( - 2, 15, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 20, 18, 17, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rbt_1_v[136], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rbt_1_v[141], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 2, 5, 3, // tri0 + 1, 4, 6, // tri1 + 1, 8, 7 // tri2 + ), + gsSPNTriangles_5b(1, 10, 9, // tri0 + 0, 1, 11, // tri1 + 2, 12, 13, // tri2 + 2, 0, 14 // tri3 + ), + gsSPNTriangles_5b(2, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 18, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_rbt_model[] = { -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rbt_1_v[157], 4, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rbt_1_v[161], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 2, 4, // tri0 - 0, 5, 6, // tri1 - 1, 8, 7 // tri2 -), -gsSPNTriangles_5b( - 2, 9, 10, // tri0 - 3, 1, 11, // tri1 - 1, 0, 12, // tri2 - 1, 13, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rbt_1_v[157], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rbt_1_v[161], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 2, 4, // tri0 + 0, 5, 6, // tri1 + 1, 8, 7 // tri2 + ), + gsSPNTriangles_5b(2, 9, 10, // tri0 + 3, 1, 11, // tri1 + 1, 0, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_rbt_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rbt_1_v[100], 5, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rbt_1_v[105], 16, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 5, 6, // tri0 - 4, 7, 8, // tri1 - 4, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 11, // tri0 - 4, 2, 12, // tri1 - 0, 13, 14, // tri2 - 0, 3, 15 // tri3 -), -gsSPNTriangles_5b( - 3, 4, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 18, 17, 20, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rbt_1_v[100], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rbt_1_v[105], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 + ), + gsSPNTriangles_5b(3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_rbt_model[] = { -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rbt_1_v[121], 4, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rbt_1_v[125], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 0, 6, 7, // tri1 - 0, 2, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 3, 9, // tri0 - 2, 11, 10, // tri1 - 3, 13, 12, // tri2 - 3, 1, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rbt_1_v[121], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rbt_1_v[125], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 + ), + gsSPNTriangles_5b(2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_rbt_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rbt_1_v[172], 7, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 252, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rbt_1_v[179], 20, 7), -gsSPNTrianglesInit_5b( - 13, // tri count - 3, 1, 7, // tri0 - 6, 8, 9, // tri1 - 3, 10, 11 // tri2 -), -gsSPNTriangles_5b( - 2, 12, 0, // tri0 - 2, 13, 14, // tri1 - 1, 16, 15, // tri2 - 0, 17, 18 // tri3 -), -gsSPNTriangles_5b( - 0, 19, 20, // tri0 - 1, 21, 22, // tri1 - 6, 3, 23, // tri2 - 2, 6, 24 // tri3 -), -gsSPNTriangles_5b( - 4, 0, 25, // tri0 - 5, 26, 1, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&rbt_1_v[199], 9, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 0, 3, 4, // tri1 - 0, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 4, 3, 7, // tri0 - 2, 5, 0, // tri1 - 1, 8, 2, // tri2 - 6, 3, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rbt_1_v[172], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rbt_1_v[179], 20, 7), + gsSPNTrianglesInit_5b(13, // tri count + 3, 1, 7, // tri0 + 6, 8, 9, // tri1 + 3, 10, 11 // tri2 + ), + gsSPNTriangles_5b(2, 12, 0, // tri0 + 2, 13, 14, // tri1 + 1, 16, 15, // tri2 + 0, 17, 18 // tri3 + ), + gsSPNTriangles_5b(0, 19, 20, // tri0 + 1, 21, 22, // tri1 + 6, 3, 23, // tri2 + 2, 6, 24 // tri3 + ), + gsSPNTriangles_5b(4, 0, 25, // tri0 + 5, 26, 1, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rbt_1_v[199], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 0, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 3, 7, // tri0 + 2, 5, 0, // tri1 + 1, 8, 2, // tri2 + 6, 3, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail1_rbt_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rbt_1_v[208], 18, 0), -gsSPNTrianglesInit_5b( - 10, // tri count - 0, 1, 2, // tri0 - 2, 1, 3, // tri1 - 4, 0, 5 // tri2 -), -gsSPNTriangles_5b( - 4, 6, 1, // tri0 - 1, 6, 3, // tri1 - 7, 4, 5, // tri2 - 1, 0, 4 // tri3 -), -gsSPNTriangles_5b( - 6, 4, 7, // tri0 - 8, 6, 7, // tri1 - 3, 6, 8, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 10, // tri count - 9, 10, 11, // tri0 - 11, 10, 12, // tri1 - 10, 13, 12 // tri2 -), -gsSPNTriangles_5b( - 13, 14, 15, // tri0 - 10, 9, 14, // tri1 - 15, 14, 16, // tri2 - 14, 9, 16 // tri3 -), -gsSPNTriangles_5b( - 14, 13, 10, // tri0 - 12, 13, 17, // tri1 - 17, 13, 15, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rbt_1_v[208], 18, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b(4, 6, 1, // tri0 + 1, 6, 3, // tri1 + 7, 4, 5, // tri2 + 1, 0, 4 // tri3 + ), + gsSPNTriangles_5b(6, 4, 7, // tri0 + 8, 6, 7, // tri1 + 3, 6, 8, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(10, // tri count + 9, 10, 11, // tri0 + 11, 10, 12, // tri1 + 10, 13, 12 // tri2 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 10, 9, 14, // tri1 + 15, 14, 16, // tri2 + 14, 9, 16 // tri3 + ), + gsSPNTriangles_5b(14, 13, 10, // tri0 + 12, 13, 17, // tri1 + 17, 13, 15, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_rbt_model[] = { -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rbt_1_v[280], 6, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rbt_1_v[286], 18, 6), -gsSPNTrianglesInit_5b( - 7, // tri count - 4, 0, 6, // tri0 - 0, 8, 7, // tri1 - 3, 10, 9 // tri2 -), -gsSPNTriangles_5b( - 1, 2, 11, // tri0 - 2, 3, 12, // tri1 - 3, 5, 13, // tri2 - 2, 14, 15 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 16, 17, 18, // tri0 - 19, 20, 21, // tri1 - 22, 23, 20 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rbt_1_v[280], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rbt_1_v[286], 18, 6), + gsSPNTrianglesInit_5b(7, // tri count + 4, 0, 6, // tri0 + 0, 8, 7, // tri1 + 3, 10, 9 // tri2 + ), + gsSPNTriangles_5b(1, 2, 11, // tri0 + 2, 3, 12, // tri1 + 3, 5, 13, // tri2 + 2, 14, 15 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 16, 17, 18, // tri0 + 19, 20, 21, // tri1 + 22, 23, 20 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_rbt_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rbt_1_v[304], 4, 0), -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 252, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rbt_1_v[308], 24, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 3, 4, // tri0 - 0, 5, 1, // tri1 - 1, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 3, 2, 8, // tri0 - 2, 9, 10, // tri1 - 2, 1, 11, // tri2 - 0, 13, 12 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 14, 15, 16, // tri0 - 14, 16, 17, // tri1 - 17, 18, 14 // tri2 -), -gsSPNTriangles_5b( - 19, 20, 21, // tri0 - 22, 23, 18, // tri1 - 21, 24, 19, // tri2 - 17, 22, 18 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 252, 124), -gsSPNTrianglesInit_5b( - 1, // tri count - 25, 26, 27, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rbt_1_v[304], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rbt_1_v[308], 24, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 4, // tri0 + 0, 5, 1, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b(3, 2, 8, // tri0 + 2, 9, 10, // tri1 + 2, 1, 11, // tri2 + 0, 13, 12 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 14, 15, 16, // tri0 + 14, 16, 17, // tri1 + 17, 18, 14 // tri2 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 22, 23, 18, // tri1 + 21, 24, 19, // tri2 + 17, 22, 18 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsSPNTrianglesInit_5b(1, // tri count + 25, 26, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_rbt_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rbt_1_v[226], 6, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rbt_1_v[232], 18, 6), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 4, 6, // tri0 - 0, 8, 7, // tri1 - 3, 10, 9 // tri2 -), -gsSPNTriangles_5b( - 2, 1, 11, // tri0 - 3, 2, 12, // tri1 - 5, 3, 13, // tri2 - 2, 14, 15 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 16, 17, 18, // tri0 - 19, 20, 21, // tri1 - 20, 22, 23 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rbt_1_v[226], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rbt_1_v[232], 18, 6), + gsSPNTrianglesInit_5b(7, // tri count + 0, 4, 6, // tri0 + 0, 8, 7, // tri1 + 3, 10, 9 // tri2 + ), + gsSPNTriangles_5b(2, 1, 11, // tri0 + 3, 2, 12, // tri1 + 5, 3, 13, // tri2 + 2, 14, 15 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 16, 17, 18, // tri0 + 19, 20, 21, // tri1 + 20, 22, 23 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_rbt_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rbt_1_v[250], 6, 0), -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 252, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rbt_1_v[256], 24, 6), -gsSPNTrianglesInit_5b( - 7, // tri count - 4, 0, 6, // tri0 - 1, 7, 0, // tri1 - 1, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 2, 5, 10, // tri0 - 2, 11, 12, // tri1 - 1, 3, 13, // tri2 - 0, 15, 14 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 16, 17, 18, // tri0 - 19, 16, 18, // tri1 - 18, 20, 19 // tri2 -), -gsSPNTriangles_5b( - 21, 22, 23, // tri0 - 20, 24, 25, // tri1 - 23, 26, 21, // tri2 - 20, 25, 19 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 252, 124), -gsSPNTrianglesInit_5b( - 1, // tri count - 27, 28, 29, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rbt_1_v[250], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rbt_1_v[256], 24, 6), + gsSPNTrianglesInit_5b(7, // tri count + 4, 0, 6, // tri0 + 1, 7, 0, // tri1 + 1, 8, 9 // tri2 + ), + gsSPNTriangles_5b(2, 5, 10, // tri0 + 2, 11, 12, // tri1 + 1, 3, 13, // tri2 + 0, 15, 14 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 16, 17, 18, // tri0 + 19, 16, 18, // tri1 + 18, 20, 19 // tri2 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 20, 24, 25, // tri1 + 23, 26, 21, // tri2 + 20, 25, 19 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsSPNTrianglesInit_5b(1, // tri count + 27, 28, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx base_rbt_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 252, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rbt_1_v[332], 14, 0), -gsSPNTrianglesInit_5b( - 12, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 9, 5, 4, // tri0 - 10, 4, 0, // tri1 - 10, 9, 4, // tri2 - 7, 11, 12 // tri3 -), -gsSPNTriangles_5b( - 8, 7, 13, // tri0 - 2, 10, 0, // tri1 - 2, 1, 6, // tri2 - 6, 8, 2 // tri3 -), -gsSPNTriangles_5b( - 7, 12, 13, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rbt_1_v[332], 14, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 5, 4, // tri0 + 10, 4, 0, // tri1 + 10, 9, 4, // tri2 + 7, 11, 12 // tri3 + ), + gsSPNTriangles_5b(8, 7, 13, // tri0 + 2, 10, 0, // tri1 + 2, 1, 6, // tri2 + 6, 8, 2 // tri3 + ), + gsSPNTriangles_5b(7, 12, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_rbt_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -680,4 +603,4 @@ static cKF_Joint_R_c cKF_je_r_rbt_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_rbt_1 = { 26, 12, cKF_je_r_rbt_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_rbt_1 = { 26, 12, cKF_je_r_rbt_1_tbl }; diff --git a/src/data/npc/model/mdl/rcc_1.c b/src/data/npc/model/mdl/rcc_1.c index 2b969d19..f60787f3 100644 --- a/src/data/npc/model/mdl/rcc_1.c +++ b/src/data/npc/model/mdl/rcc_1.c @@ -6,746 +6,657 @@ static Vtx rcc_1_v[] = { }; static Gfx head_rcc_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcc_1_v[14], 28, 0), -gsSPNTrianglesInit_5b( - 39, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 0, 9, 1, // tri0 - 10, 5, 4, // tri1 - 5, 6, 3, // tri2 - 0, 4, 11 // tri3 -), -gsSPNTriangles_5b( - 0, 11, 12, // tri0 - 4, 3, 11, // tri1 - 13, 14, 4, // tri2 - 13, 4, 0 // tri3 -), -gsSPNTriangles_5b( - 8, 15, 16, // tri0 - 17, 18, 19, // tri1 - 15, 8, 7, // tri2 - 20, 21, 19 // tri3 -), -gsSPNTriangles_5b( - 12, 11, 22, // tri0 - 12, 22, 23, // tri1 - 22, 11, 3, // tri2 - 23, 9, 12 // tri3 -), -gsSPNTriangles_5b( - 9, 23, 18, // tri0 - 9, 18, 17, // tri1 - 1, 9, 17, // tri2 - 16, 20, 19 // tri3 -), -gsSPNTriangles_5b( - 24, 25, 8, // tri0 - 24, 22, 25, // tri1 - 25, 3, 6, // tri2 - 25, 22, 3 // tri3 -), -gsSPNTriangles_5b( - 19, 18, 24, // tri0 - 24, 18, 23, // tri1 - 23, 22, 24, // tri2 - 4, 14, 10 // tri3 -), -gsSPNTriangles_5b( - 2, 13, 0, // tri0 - 8, 16, 24, // tri1 - 16, 19, 24, // tri2 - 8, 25, 6 // tri3 -), -gsSPNTriangles_5b( - 19, 21, 17, // tri0 - 26, 27, 14, // tri1 - 26, 14, 13, // tri2 - 12, 9, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&rcc_1_v[42], 29, 0), -gsSPNTrianglesInit_5b( - 17, // tri count - 0, 1, 2, // tri0 - 2, 3, 4, // tri1 - 5, 2, 1 // tri2 -), -gsSPNTriangles_5b( - 3, 2, 5, // tri0 - 6, 7, 1, // tri1 - 7, 8, 9, // tri2 - 10, 4, 3 // tri3 -), -gsSPNTriangles_5b( - 11, 12, 3, // tri0 - 11, 3, 5, // tri1 - 5, 9, 11, // tri2 - 12, 10, 3 // tri3 -), -gsSPNTriangles_5b( - 1, 0, 6, // tri0 - 6, 13, 7, // tri1 - 14, 12, 11, // tri2 - 1, 9, 5 // tri3 -), -gsSPNTriangles_5b( - 9, 1, 7, // tri0 - 12, 15, 10, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 16, 17, 18, // tri0 - 16, 18, 19, // tri1 - 20, 21, 22 // tri2 -), -gsSPNTriangles_5b( - 21, 19, 18, // tri0 - 21, 18, 22, // tri1 - 17, 16, 23, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 253, 255, 255), -gsSPNTrianglesInit_5b( - 3, // tri count - 24, 25, 26, // tri0 - 27, 25, 24, // tri1 - 24, 28, 27 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rcc_1_v[71], 26, 0), -gsSPNTrianglesInit_5b( - 4, // tri count - 0, 1, 2, // tri0 - 2, 3, 4, // tri1 - 2, 4, 0 // tri2 -), -gsSPNTriangles_5b( - 0, 5, 1, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 253, 255, 255), -gsSPNTrianglesInit_5b( - 5, // tri count - 6, 7, 8, // tri0 - 6, 9, 10, // tri1 - 11, 12, 6 // tri2 -), -gsSPNTriangles_5b( - 8, 11, 6, // tri0 - 10, 7, 6, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPNTrianglesInit_5b( - 4, // tri count - 13, 14, 15, // tri0 - 15, 16, 17, // tri1 - 15, 17, 13 // tri2 -), -gsSPNTriangles_5b( - 13, 18, 14, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 5, // tri count - 19, 20, 21, // tri0 - 19, 22, 23, // tri1 - 21, 24, 19 // tri2 -), -gsSPNTriangles_5b( - 19, 25, 22, // tri0 - 23, 20, 19, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&rcc_1_v[97], 15, 0), -gsSPNTrianglesInit_5b( - 10, // tri count - 0, 1, 2, // tri0 - 3, 4, 2, // tri1 - 3, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 0, 7, 8, // tri0 - 5, 3, 1, // tri1 - 5, 1, 0, // tri2 - 2, 1, 3 // tri3 -), -gsSPNTriangles_5b( - 2, 7, 0, // tri0 - 8, 9, 0, // tri1 - 6, 4, 3, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 4, // tri count - 10, 11, 12, // tri0 - 13, 14, 12, // tri1 - 12, 14, 10 // tri2 -), -gsSPNTriangles_5b( - 12, 11, 13, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcc_1_v[14], 28, 0), + gsSPNTrianglesInit_5b(39, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(0, 9, 1, // tri0 + 10, 5, 4, // tri1 + 5, 6, 3, // tri2 + 0, 4, 11 // tri3 + ), + gsSPNTriangles_5b(0, 11, 12, // tri0 + 4, 3, 11, // tri1 + 13, 14, 4, // tri2 + 13, 4, 0 // tri3 + ), + gsSPNTriangles_5b(8, 15, 16, // tri0 + 17, 18, 19, // tri1 + 15, 8, 7, // tri2 + 20, 21, 19 // tri3 + ), + gsSPNTriangles_5b(12, 11, 22, // tri0 + 12, 22, 23, // tri1 + 22, 11, 3, // tri2 + 23, 9, 12 // tri3 + ), + gsSPNTriangles_5b(9, 23, 18, // tri0 + 9, 18, 17, // tri1 + 1, 9, 17, // tri2 + 16, 20, 19 // tri3 + ), + gsSPNTriangles_5b(24, 25, 8, // tri0 + 24, 22, 25, // tri1 + 25, 3, 6, // tri2 + 25, 22, 3 // tri3 + ), + gsSPNTriangles_5b(19, 18, 24, // tri0 + 24, 18, 23, // tri1 + 23, 22, 24, // tri2 + 4, 14, 10 // tri3 + ), + gsSPNTriangles_5b(2, 13, 0, // tri0 + 8, 16, 24, // tri1 + 16, 19, 24, // tri2 + 8, 25, 6 // tri3 + ), + gsSPNTriangles_5b(19, 21, 17, // tri0 + 26, 27, 14, // tri1 + 26, 14, 13, // tri2 + 12, 9, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rcc_1_v[42], 29, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 5, 2, 1 // tri2 + ), + gsSPNTriangles_5b(3, 2, 5, // tri0 + 6, 7, 1, // tri1 + 7, 8, 9, // tri2 + 10, 4, 3 // tri3 + ), + gsSPNTriangles_5b(11, 12, 3, // tri0 + 11, 3, 5, // tri1 + 5, 9, 11, // tri2 + 12, 10, 3 // tri3 + ), + gsSPNTriangles_5b(1, 0, 6, // tri0 + 6, 13, 7, // tri1 + 14, 12, 11, // tri2 + 1, 9, 5 // tri3 + ), + gsSPNTriangles_5b(9, 1, 7, // tri0 + 12, 15, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 16, 17, 18, // tri0 + 16, 18, 19, // tri1 + 20, 21, 22 // tri2 + ), + gsSPNTriangles_5b(21, 19, 18, // tri0 + 21, 18, 22, // tri1 + 17, 16, 23, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 253, 255, 255), + gsSPNTrianglesInit_5b(3, // tri count + 24, 25, 26, // tri0 + 27, 25, 24, // tri1 + 24, 28, 27 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcc_1_v[71], 26, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(0, 5, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 253, 255, 255), + gsSPNTrianglesInit_5b(5, // tri count + 6, 7, 8, // tri0 + 6, 9, 10, // tri1 + 11, 12, 6 // tri2 + ), + gsSPNTriangles_5b(8, 11, 6, // tri0 + 10, 7, 6, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPNTrianglesInit_5b(4, // tri count + 13, 14, 15, // tri0 + 15, 16, 17, // tri1 + 15, 17, 13 // tri2 + ), + gsSPNTriangles_5b(13, 18, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(5, // tri count + 19, 20, 21, // tri0 + 19, 22, 23, // tri1 + 21, 24, 19 // tri2 + ), + gsSPNTriangles_5b(19, 25, 22, // tri0 + 23, 20, 19, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rcc_1_v[97], 15, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(0, 7, 8, // tri0 + 5, 3, 1, // tri1 + 5, 1, 0, // tri2 + 2, 1, 3 // tri3 + ), + gsSPNTriangles_5b(2, 7, 0, // tri0 + 8, 9, 0, // tri1 + 6, 4, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 10, 11, 12, // tri0 + 13, 14, 12, // tri1 + 12, 14, 10 // tri2 + ), + gsSPNTriangles_5b(12, 11, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx mouth_rcc_model[] = { -gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcc_1_v[0], 5, 0), -gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rcc_1_v[5], 9, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 5, 6, // tri0 - 4, 8, 7, // tri1 - 2, 1, 9 // tri2 -), -gsSPNTriangles_5b( - 3, 10, 0, // tri0 - 1, 0, 11, // tri1 - 4, 2, 12, // tri2 - 3, 4, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcc_1_v[0], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcc_1_v[5], 9, 5), + gsSPNTrianglesInit_5b(7, // tri count + 0, 5, 6, // tri0 + 4, 8, 7, // tri1 + 2, 1, 9 // tri2 + ), + gsSPNTriangles_5b(3, 10, 0, // tri0 + 1, 0, 11, // tri1 + 4, 2, 12, // tri2 + 3, 4, 13 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_rcc_model[] = { -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcc_1_v[153], 4, 0), -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rcc_1_v[157], 23, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 3, 4, // tri0 - 0, 2, 5, // tri1 - 0, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 2, 8, 9, // tri0 - 1, 10, 11, // tri1 - 3, 1, 12, // tri2 - 1, 0, 13 // tri3 -), -gsSPNTriangles_5b( - 3, 14, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 16, 17, 18, // tri0 - 16, 18, 19, // tri1 - 20, 18, 17 // tri2 -), -gsSPNTriangles_5b( - 19, 20, 21, // tri0 - 22, 21, 20, // tri1 - 17, 22, 20, // tri2 - 20, 19, 18 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 2, // tri count - 23, 24, 25, // tri0 - 23, 26, 24, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcc_1_v[153], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcc_1_v[157], 23, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 3, 4, // tri0 + 0, 2, 5, // tri1 + 0, 6, 7 // tri2 + ), + gsSPNTriangles_5b(2, 8, 9, // tri0 + 1, 10, 11, // tri1 + 3, 1, 12, // tri2 + 1, 0, 13 // tri3 + ), + gsSPNTriangles_5b(3, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 16, 17, 18, // tri0 + 16, 18, 19, // tri1 + 20, 18, 17 // tri2 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 22, 21, 20, // tri1 + 17, 22, 20, // tri2 + 20, 19, 18 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 23, 24, 25, // tri0 + 23, 26, 24, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_rcc_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcc_1_v[180], 3, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rcc_1_v[183], 11, 3), -gsSPNTrianglesInit_5b( - 7, // tri count - 2, 0, 3, // tri0 - 1, 2, 4, // tri1 - 2, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 0, 7, 8, // tri0 - 1, 9, 10, // tri1 - 2, 12, 11, // tri2 - 1, 13, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcc_1_v[180], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcc_1_v[183], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 2, 0, 3, // tri0 + 1, 2, 4, // tri1 + 2, 5, 6 // tri2 + ), + gsSPNTriangles_5b(0, 7, 8, // tri0 + 1, 9, 10, // tri1 + 2, 12, 11, // tri2 + 1, 13, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_rcc_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcc_1_v[112], 4, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rcc_1_v[116], 23, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 3, 2, 4, // tri0 - 2, 0, 5, // tri1 - 0, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 2, 8, 9, // tri0 - 1, 10, 11, // tri1 - 1, 3, 12, // tri2 - 0, 1, 13 // tri3 -), -gsSPNTriangles_5b( - 3, 14, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 16, 17, 18, // tri0 - 16, 18, 19, // tri1 - 18, 17, 20 // tri2 -), -gsSPNTriangles_5b( - 21, 20, 16, // tri0 - 20, 21, 22, // tri1 - 20, 22, 18, // tri2 - 17, 16, 20 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 2, // tri count - 23, 24, 25, // tri0 - 23, 26, 24, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcc_1_v[112], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcc_1_v[116], 23, 4), + gsSPNTrianglesInit_5b(8, // tri count + 3, 2, 4, // tri0 + 2, 0, 5, // tri1 + 0, 6, 7 // tri2 + ), + gsSPNTriangles_5b(2, 8, 9, // tri0 + 1, 10, 11, // tri1 + 1, 3, 12, // tri2 + 0, 1, 13 // tri3 + ), + gsSPNTriangles_5b(3, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 16, 17, 18, // tri0 + 16, 18, 19, // tri1 + 18, 17, 20 // tri2 + ), + gsSPNTriangles_5b(21, 20, 16, // tri0 + 20, 21, 22, // tri1 + 20, 22, 18, // tri2 + 17, 16, 20 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 23, 24, 25, // tri0 + 23, 26, 24, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_rcc_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcc_1_v[139], 3, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rcc_1_v[142], 11, 3), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 2, 3, // tri0 - 2, 1, 4, // tri1 - 2, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 0, 7, 8, // tri0 - 1, 9, 10, // tri1 - 2, 12, 11, // tri2 - 0, 13, 1 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcc_1_v[139], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcc_1_v[142], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 0, 2, 3, // tri0 + 2, 1, 4, // tri1 + 2, 5, 6 // tri2 + ), + gsSPNTriangles_5b(0, 7, 8, // tri0 + 1, 9, 10, // tri1 + 2, 12, 11, // tri2 + 0, 13, 1 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_rcc_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcc_1_v[194], 25, 0), -gsSPNTrianglesInit_5b( - 31, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 5 // tri2 -), -gsSPNTriangles_5b( - 8, 5, 4, // tri0 - 9, 10, 11, // tri1 - 11, 12, 13, // tri2 - 14, 2, 9 // tri3 -), -gsSPNTriangles_5b( - 13, 8, 0, // tri0 - 11, 15, 12, // tri1 - 16, 0, 17, // tri2 - 16, 1, 0 // tri3 -), -gsSPNTriangles_5b( - 8, 17, 0, // tri0 - 13, 14, 11, // tri1 - 0, 14, 13, // tri2 - 13, 5, 8 // tri3 -), -gsSPNTriangles_5b( - 5, 12, 6, // tri0 - 5, 13, 12, // tri1 - 15, 11, 18, // tri2 - 11, 10, 18 // tri3 -), -gsSPNTriangles_5b( - 2, 14, 0, // tri0 - 11, 14, 9, // tri1 - 19, 20, 2, // tri2 - 19, 2, 1 // tri3 -), -gsSPNTriangles_5b( - 1, 16, 21, // tri0 - 10, 9, 22, // tri1 - 10, 22, 23, // tri2 - 24, 18, 10 // tri3 -), -gsSPNTriangles_5b( - 20, 9, 2, // tri0 - 9, 20, 22, // tri1 - 1, 21, 19, // tri2 - 23, 24, 10 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 48, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&rcc_1_v[219], 15, 0), -gsSPNTrianglesInit_5b( - 16, // tri count - 0, 1, 2, // tri0 - 0, 3, 4, // tri1 - 5, 3, 6 // tri2 -), -gsSPNTriangles_5b( - 3, 7, 6, // tri0 - 8, 1, 9, // tri1 - 10, 2, 11, // tri2 - 7, 2, 10 // tri3 -), -gsSPNTriangles_5b( - 2, 7, 3, // tri0 - 2, 1, 11, // tri1 - 4, 3, 5, // tri2 - 12, 9, 1 // tri3 -), -gsSPNTriangles_5b( - 0, 2, 3, // tri0 - 12, 1, 0, // tri1 - 8, 11, 1, // tri2 - 11, 8, 13 // tri3 -), -gsSPNTriangles_5b( - 14, 6, 7, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcc_1_v[194], 25, 0), + gsSPNTrianglesInit_5b(31, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 5 // tri2 + ), + gsSPNTriangles_5b(8, 5, 4, // tri0 + 9, 10, 11, // tri1 + 11, 12, 13, // tri2 + 14, 2, 9 // tri3 + ), + gsSPNTriangles_5b(13, 8, 0, // tri0 + 11, 15, 12, // tri1 + 16, 0, 17, // tri2 + 16, 1, 0 // tri3 + ), + gsSPNTriangles_5b(8, 17, 0, // tri0 + 13, 14, 11, // tri1 + 0, 14, 13, // tri2 + 13, 5, 8 // tri3 + ), + gsSPNTriangles_5b(5, 12, 6, // tri0 + 5, 13, 12, // tri1 + 15, 11, 18, // tri2 + 11, 10, 18 // tri3 + ), + gsSPNTriangles_5b(2, 14, 0, // tri0 + 11, 14, 9, // tri1 + 19, 20, 2, // tri2 + 19, 2, 1 // tri3 + ), + gsSPNTriangles_5b(1, 16, 21, // tri0 + 10, 9, 22, // tri1 + 10, 22, 23, // tri2 + 24, 18, 10 // tri3 + ), + gsSPNTriangles_5b(20, 9, 2, // tri0 + 9, 20, 22, // tri1 + 1, 21, 19, // tri2 + 23, 24, 10 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 48, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rcc_1_v[219], 15, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(3, 7, 6, // tri0 + 8, 1, 9, // tri1 + 10, 2, 11, // tri2 + 7, 2, 10 // tri3 + ), + gsSPNTriangles_5b(2, 7, 3, // tri0 + 2, 1, 11, // tri1 + 4, 3, 5, // tri2 + 12, 9, 1 // tri3 + ), + gsSPNTriangles_5b(0, 2, 3, // tri0 + 12, 1, 0, // tri1 + 8, 11, 1, // tri2 + 11, 8, 13 // tri3 + ), + gsSPNTriangles_5b(14, 6, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail1_rcc_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcc_1_v[259], 4, 0), -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rcc_1_v[263], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 1, 4, 5, // tri0 - 1, 0, 6, // tri1 - 2, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 1, 9, 10, // tri0 - 2, 1, 11, // tri1 - 0, 12, 13, // tri2 - 0, 3, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcc_1_v[259], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcc_1_v[263], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 1, 4, 5, // tri0 + 1, 0, 6, // tri1 + 2, 7, 8 // tri2 + ), + gsSPNTriangles_5b(1, 9, 10, // tri0 + 2, 1, 11, // tri1 + 0, 12, 13, // tri2 + 0, 3, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail2_rcc_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcc_1_v[234], 4, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rcc_1_v[238], 21, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 4, 5, // tri0 - 0, 3, 6, // tri1 - 1, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 0, 9, // tri0 - 1, 2, 10, // tri1 - 0, 11, 12, // tri2 - 3, 1, 13 // tri3 -), -gsSPNTriangles_5b( - 2, 14, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 12, // tri count - 16, 17, 18, // tri0 - 19, 17, 16, // tri1 - 20, 21, 22 // tri2 -), -gsSPNTriangles_5b( - 20, 23, 16, // tri0 - 18, 21, 16, // tri1 - 16, 23, 19, // tri2 - 23, 22, 24 // tri3 -), -gsSPNTriangles_5b( - 24, 22, 21, // tri0 - 16, 21, 20, // tri1 - 24, 19, 23, // tri2 - 22, 23, 20 // tri3 -), -gsSPNTriangles_5b( - 21, 18, 24, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcc_1_v[234], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcc_1_v[238], 21, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 0, 3, 6, // tri1 + 1, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 0, 9, // tri0 + 1, 2, 10, // tri1 + 0, 11, 12, // tri2 + 3, 1, 13 // tri3 + ), + gsSPNTriangles_5b(2, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(12, // tri count + 16, 17, 18, // tri0 + 19, 17, 16, // tri1 + 20, 21, 22 // tri2 + ), + gsSPNTriangles_5b(20, 23, 16, // tri0 + 18, 21, 16, // tri1 + 16, 23, 19, // tri2 + 23, 22, 24 // tri3 + ), + gsSPNTriangles_5b(24, 22, 21, // tri0 + 16, 21, 20, // tri1 + 24, 19, 23, // tri2 + 22, 23, 20 // tri3 + ), + gsSPNTriangles_5b(21, 18, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_rcc_model[] = { -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcc_1_v[299], 5, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rcc_1_v[304], 15, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 0, 5, // tri0 - 0, 7, 6, // tri1 - 2, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 0, 1, 10, // tri0 - 1, 2, 11, // tri1 - 2, 4, 12, // tri2 - 1, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 15, 16, 17, // tri0 - 18, 16, 15, // tri1 - 19, 17, 16 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcc_1_v[299], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcc_1_v[304], 15, 5), + gsSPNTrianglesInit_5b(7, // tri count + 3, 0, 5, // tri0 + 0, 7, 6, // tri1 + 2, 9, 8 // tri2 + ), + gsSPNTriangles_5b(0, 1, 10, // tri0 + 1, 2, 11, // tri1 + 2, 4, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 16, 15, // tri1 + 19, 17, 16 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_rcc_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcc_1_v[319], 9, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 1, 6, 2 // tri2 -), -gsSPNTriangles_5b( - 7, 5, 4, // tri0 - 7, 4, 0, // tri1 - 0, 2, 7, // tri2 - 5, 8, 3 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcc_1_v[319], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 6, 2 // tri2 + ), + gsSPNTriangles_5b(7, 5, 4, // tri0 + 7, 4, 0, // tri1 + 0, 2, 7, // tri2 + 5, 8, 3 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_rcc_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcc_1_v[274], 4, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rcc_1_v[278], 14, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 3, 4, // tri0 - 0, 6, 5, // tri1 - 2, 8, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 9, // tri0 - 2, 1, 10, // tri1 - 3, 2, 11, // tri2 - 1, 12, 13 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 14, 15, 16, // tri0 - 16, 15, 17, // tri1 - 15, 14, 17 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcc_1_v[274], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcc_1_v[278], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 4, // tri0 + 0, 6, 5, // tri1 + 2, 8, 7 // tri2 + ), + gsSPNTriangles_5b(1, 0, 9, // tri0 + 2, 1, 10, // tri1 + 3, 2, 11, // tri2 + 1, 12, 13 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 14, 15, 16, // tri0 + 16, 15, 17, // tri1 + 15, 14, 17 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_rcc_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcc_1_v[292], 7, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 3, 4, 1, // tri1 - 0, 5, 1 // tri2 -), -gsSPNTriangles_5b( - 4, 3, 6, // tri0 - 2, 4, 6, // tri1 - 6, 0, 2, // tri2 - 1, 5, 3 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcc_1_v[292], 7, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 0, 5, 1 // tri2 + ), + gsSPNTriangles_5b(4, 3, 6, // tri0 + 2, 4, 6, // tri1 + 6, 0, 2, // tri2 + 1, 5, 3 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx base_rcc_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000680, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcc_1_v[328], 19, 0), -gsSPNTrianglesInit_5b( - 27, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 5, 7, 8, // tri0 - 5, 8, 6, // tri1 - 6, 8, 9, // tri2 - 7, 1, 0 // tri3 -), -gsSPNTriangles_5b( - 1, 4, 2, // tri0 - 1, 7, 5, // tri1 - 1, 5, 4, // tri2 - 10, 11, 12 // tri3 -), -gsSPNTriangles_5b( - 10, 6, 9, // tri0 - 4, 6, 10, // tri1 - 2, 4, 13, // tri2 - 2, 13, 14 // tri3 -), -gsSPNTriangles_5b( - 15, 14, 16, // tri0 - 17, 12, 11, // tri1 - 15, 16, 17, // tri2 - 18, 10, 12 // tri3 -), -gsSPNTriangles_5b( - 10, 13, 4, // tri0 - 18, 13, 10, // tri1 - 16, 14, 18, // tri2 - 18, 14, 13 // tri3 -), -gsSPNTriangles_5b( - 9, 11, 10, // tri0 - 17, 16, 12, // tri1 - 3, 2, 14, // tri2 - 14, 15, 3 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x680, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcc_1_v[328], 19, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 5, 8, 6, // tri1 + 6, 8, 9, // tri2 + 7, 1, 0 // tri3 + ), + gsSPNTriangles_5b(1, 4, 2, // tri0 + 1, 7, 5, // tri1 + 1, 5, 4, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(10, 6, 9, // tri0 + 4, 6, 10, // tri1 + 2, 4, 13, // tri2 + 2, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 14, 16, // tri0 + 17, 12, 11, // tri1 + 15, 16, 17, // tri2 + 18, 10, 12 // tri3 + ), + gsSPNTriangles_5b(10, 13, 4, // tri0 + 18, 13, 10, // tri1 + 16, 14, 18, // tri2 + 18, 14, 13 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 17, 16, 12, // tri1 + 3, 2, 14, // tri2 + 14, 15, 3 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_rcc_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -777,4 +688,4 @@ static cKF_Joint_R_c cKF_je_r_rcc_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_rcc_1 = { 26, 14, cKF_je_r_rcc_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_rcc_1 = { 26, 14, cKF_je_r_rcc_1_tbl }; diff --git a/src/data/npc/model/mdl/rcd_1.c b/src/data/npc/model/mdl/rcd_1.c index 74f0e6a8..259ef442 100644 --- a/src/data/npc/model/mdl/rcd_1.c +++ b/src/data/npc/model/mdl/rcd_1.c @@ -6,713 +6,629 @@ static Vtx rcd_1_v[] = { }; static Gfx head_rcd_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcd_1_v[14], 28, 0), -gsSPNTrianglesInit_5b( - 39, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 6, 8, 9, // tri0 - 0, 10, 1, // tri1 - 11, 5, 4, // tri2 - 5, 8, 3 // tri3 -), -gsSPNTriangles_5b( - 0, 4, 12, // tri0 - 0, 12, 13, // tri1 - 4, 3, 12, // tri2 - 14, 15, 4 // tri3 -), -gsSPNTriangles_5b( - 14, 4, 0, // tri0 - 6, 16, 17, // tri1 - 18, 19, 20, // tri2 - 16, 6, 9 // tri3 -), -gsSPNTriangles_5b( - 21, 22, 20, // tri0 - 13, 12, 23, // tri1 - 13, 23, 24, // tri2 - 23, 12, 3 // tri3 -), -gsSPNTriangles_5b( - 24, 10, 13, // tri0 - 10, 24, 19, // tri1 - 10, 19, 18, // tri2 - 1, 10, 18 // tri3 -), -gsSPNTriangles_5b( - 17, 21, 20, // tri0 - 25, 7, 6, // tri1 - 25, 23, 7, // tri2 - 7, 3, 8 // tri3 -), -gsSPNTriangles_5b( - 7, 23, 3, // tri0 - 20, 19, 25, // tri1 - 25, 19, 24, // tri2 - 24, 23, 25 // tri3 -), -gsSPNTriangles_5b( - 4, 15, 11, // tri0 - 2, 14, 0, // tri1 - 6, 17, 25, // tri2 - 17, 20, 25 // tri3 -), -gsSPNTriangles_5b( - 20, 22, 18, // tri0 - 26, 27, 15, // tri1 - 26, 15, 14, // tri2 - 13, 10, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&rcd_1_v[42], 29, 0), -gsSPNTrianglesInit_5b( - 17, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 5, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 8, 5, 4, // tri0 - 6, 5, 8, // tri1 - 9, 10, 4, // tri2 - 10, 11, 12 // tri3 -), -gsSPNTriangles_5b( - 2, 7, 6, // tri0 - 13, 0, 6, // tri1 - 13, 6, 8, // tri2 - 8, 12, 13 // tri3 -), -gsSPNTriangles_5b( - 0, 2, 6, // tri0 - 4, 3, 9, // tri1 - 9, 14, 10, // tri2 - 15, 0, 13 // tri3 -), -gsSPNTriangles_5b( - 4, 12, 8, // tri0 - 12, 4, 10, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 16, 17, 18, // tri0 - 17, 16, 19, // tri1 - 17, 19, 20 // tri2 -), -gsSPNTriangles_5b( - 21, 22, 23, // tri0 - 22, 20, 19, // tri1 - 22, 19, 23, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 253, 255, 255), -gsSPNTrianglesInit_5b( - 3, // tri count - 24, 25, 26, // tri0 - 26, 25, 27, // tri1 - 26, 28, 24 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rcd_1_v[71], 26, 0), -gsSPNTrianglesInit_5b( - 4, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 3, 4, 5 // tri2 -), -gsSPNTriangles_5b( - 3, 5, 0, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 253, 255, 255), -gsSPNTrianglesInit_5b( - 5, // tri count - 6, 7, 8, // tri0 - 6, 9, 10, // tri1 - 11, 12, 6 // tri2 -), -gsSPNTriangles_5b( - 8, 11, 6, // tri0 - 10, 7, 6, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPNTrianglesInit_5b( - 4, // tri count - 13, 14, 15, // tri0 - 16, 17, 18, // tri1 - 16, 18, 13 // tri2 -), -gsSPNTriangles_5b( - 13, 15, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 5, // tri count - 19, 20, 21, // tri0 - 19, 22, 23, // tri1 - 21, 24, 19 // tri2 -), -gsSPNTriangles_5b( - 19, 25, 22, // tri0 - 23, 20, 19, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcd_1_v[14], 28, 0), + gsSPNTrianglesInit_5b(39, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(6, 8, 9, // tri0 + 0, 10, 1, // tri1 + 11, 5, 4, // tri2 + 5, 8, 3 // tri3 + ), + gsSPNTriangles_5b(0, 4, 12, // tri0 + 0, 12, 13, // tri1 + 4, 3, 12, // tri2 + 14, 15, 4 // tri3 + ), + gsSPNTriangles_5b(14, 4, 0, // tri0 + 6, 16, 17, // tri1 + 18, 19, 20, // tri2 + 16, 6, 9 // tri3 + ), + gsSPNTriangles_5b(21, 22, 20, // tri0 + 13, 12, 23, // tri1 + 13, 23, 24, // tri2 + 23, 12, 3 // tri3 + ), + gsSPNTriangles_5b(24, 10, 13, // tri0 + 10, 24, 19, // tri1 + 10, 19, 18, // tri2 + 1, 10, 18 // tri3 + ), + gsSPNTriangles_5b(17, 21, 20, // tri0 + 25, 7, 6, // tri1 + 25, 23, 7, // tri2 + 7, 3, 8 // tri3 + ), + gsSPNTriangles_5b(7, 23, 3, // tri0 + 20, 19, 25, // tri1 + 25, 19, 24, // tri2 + 24, 23, 25 // tri3 + ), + gsSPNTriangles_5b(4, 15, 11, // tri0 + 2, 14, 0, // tri1 + 6, 17, 25, // tri2 + 17, 20, 25 // tri3 + ), + gsSPNTriangles_5b(20, 22, 18, // tri0 + 26, 27, 15, // tri1 + 26, 15, 14, // tri2 + 13, 10, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rcd_1_v[42], 29, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 5, 4, // tri0 + 6, 5, 8, // tri1 + 9, 10, 4, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(2, 7, 6, // tri0 + 13, 0, 6, // tri1 + 13, 6, 8, // tri2 + 8, 12, 13 // tri3 + ), + gsSPNTriangles_5b(0, 2, 6, // tri0 + 4, 3, 9, // tri1 + 9, 14, 10, // tri2 + 15, 0, 13 // tri3 + ), + gsSPNTriangles_5b(4, 12, 8, // tri0 + 12, 4, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 17, 19, 20 // tri2 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 22, 20, 19, // tri1 + 22, 19, 23, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 253, 255, 255), + gsSPNTrianglesInit_5b(3, // tri count + 24, 25, 26, // tri0 + 26, 25, 27, // tri1 + 26, 28, 24 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcd_1_v[71], 26, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b(3, 5, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 253, 255, 255), + gsSPNTrianglesInit_5b(5, // tri count + 6, 7, 8, // tri0 + 6, 9, 10, // tri1 + 11, 12, 6 // tri2 + ), + gsSPNTriangles_5b(8, 11, 6, // tri0 + 10, 7, 6, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPNTrianglesInit_5b(4, // tri count + 13, 14, 15, // tri0 + 16, 17, 18, // tri1 + 16, 18, 13 // tri2 + ), + gsSPNTriangles_5b(13, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(5, // tri count + 19, 20, 21, // tri0 + 19, 22, 23, // tri1 + 21, 24, 19 // tri2 + ), + gsSPNTriangles_5b(19, 25, 22, // tri0 + 23, 20, 19, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx mouth_rcd_model[] = { -gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcd_1_v[0], 5, 0), -gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rcd_1_v[5], 9, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 5, 6, // tri0 - 4, 8, 7, // tri1 - 2, 1, 9 // tri2 -), -gsSPNTriangles_5b( - 3, 10, 0, // tri0 - 1, 0, 11, // tri1 - 4, 2, 12, // tri2 - 3, 4, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcd_1_v[0], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcd_1_v[5], 9, 5), + gsSPNTrianglesInit_5b(7, // tri count + 0, 5, 6, // tri0 + 4, 8, 7, // tri1 + 2, 1, 9 // tri2 + ), + gsSPNTriangles_5b(3, 10, 0, // tri0 + 1, 0, 11, // tri1 + 4, 2, 12, // tri2 + 3, 4, 13 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_rcd_model[] = { -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcd_1_v[141], 6, 0), -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rcd_1_v[147], 23, 6), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 5, 6, // tri0 - 0, 2, 7, // tri1 - 0, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 2, 10, 11, // tri0 - 1, 12, 13, // tri1 - 3, 1, 14, // tri2 - 1, 0, 15 // tri3 -), -gsSPNTriangles_5b( - 4, 16, 17, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 18, 19, 20, // tri0 - 18, 20, 21, // tri1 - 22, 20, 19 // tri2 -), -gsSPNTriangles_5b( - 21, 22, 23, // tri0 - 24, 23, 22, // tri1 - 19, 24, 22, // tri2 - 22, 21, 20 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 2, // tri count - 25, 26, 27, // tri0 - 25, 28, 26, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcd_1_v[141], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcd_1_v[147], 23, 6), + gsSPNTrianglesInit_5b(8, // tri count + 2, 5, 6, // tri0 + 0, 2, 7, // tri1 + 0, 8, 9 // tri2 + ), + gsSPNTriangles_5b(2, 10, 11, // tri0 + 1, 12, 13, // tri1 + 3, 1, 14, // tri2 + 1, 0, 15 // tri3 + ), + gsSPNTriangles_5b(4, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 18, 19, 20, // tri0 + 18, 20, 21, // tri1 + 22, 20, 19 // tri2 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 24, 23, 22, // tri1 + 19, 24, 22, // tri2 + 22, 21, 20 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 25, 26, 27, // tri0 + 25, 28, 26, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_rcd_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcd_1_v[170], 4, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rcd_1_v[174], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 1, 4, 0, // tri0 - 3, 6, 5, // tri1 - 1, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 0, 9, 10, // tri0 - 3, 11, 12, // tri1 - 2, 3, 13, // tri2 - 3, 0, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcd_1_v[170], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcd_1_v[174], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 1, 4, 0, // tri0 + 3, 6, 5, // tri1 + 1, 7, 8 // tri2 + ), + gsSPNTriangles_5b(0, 9, 10, // tri0 + 3, 11, 12, // tri1 + 2, 3, 13, // tri2 + 3, 0, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_rcd_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcd_1_v[97], 6, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rcd_1_v[103], 23, 6), -gsSPNTrianglesInit_5b( - 8, // tri count - 5, 2, 6, // tri0 - 2, 0, 7, // tri1 - 0, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 2, 10, 11, // tri0 - 1, 12, 13, // tri1 - 1, 3, 14, // tri2 - 0, 1, 15 // tri3 -), -gsSPNTriangles_5b( - 4, 16, 17, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 18, 19, 20, // tri0 - 18, 20, 21, // tri1 - 20, 19, 22 // tri2 -), -gsSPNTriangles_5b( - 23, 22, 18, // tri0 - 22, 23, 24, // tri1 - 22, 24, 20, // tri2 - 19, 18, 22 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 2, // tri count - 25, 26, 27, // tri0 - 25, 28, 26, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcd_1_v[97], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcd_1_v[103], 23, 6), + gsSPNTrianglesInit_5b(8, // tri count + 5, 2, 6, // tri0 + 2, 0, 7, // tri1 + 0, 8, 9 // tri2 + ), + gsSPNTriangles_5b(2, 10, 11, // tri0 + 1, 12, 13, // tri1 + 1, 3, 14, // tri2 + 0, 1, 15 // tri3 + ), + gsSPNTriangles_5b(4, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 18, 19, 20, // tri0 + 18, 20, 21, // tri1 + 20, 19, 22 // tri2 + ), + gsSPNTriangles_5b(23, 22, 18, // tri0 + 22, 23, 24, // tri1 + 22, 24, 20, // tri2 + 19, 18, 22 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 25, 26, 27, // tri0 + 25, 28, 26, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_rcd_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcd_1_v[126], 4, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rcd_1_v[130], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 4, 1, // tri0 - 3, 6, 5, // tri1 - 1, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 0, 9, 10, // tri0 - 3, 11, 12, // tri1 - 3, 2, 13, // tri2 - 0, 3, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcd_1_v[126], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcd_1_v[130], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 4, 1, // tri0 + 3, 6, 5, // tri1 + 1, 7, 8 // tri2 + ), + gsSPNTriangles_5b(0, 9, 10, // tri0 + 3, 11, 12, // tri1 + 3, 2, 13, // tri2 + 0, 3, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_rcd_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000180, G_IM_FMT_CI, 48, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcd_1_v[185], 25, 0), -gsSPNTrianglesInit_5b( - 31, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 5 // tri2 -), -gsSPNTriangles_5b( - 8, 5, 4, // tri0 - 9, 10, 11, // tri1 - 11, 12, 13, // tri2 - 14, 2, 9 // tri3 -), -gsSPNTriangles_5b( - 13, 8, 0, // tri0 - 11, 15, 12, // tri1 - 16, 0, 17, // tri2 - 16, 1, 0 // tri3 -), -gsSPNTriangles_5b( - 8, 17, 0, // tri0 - 13, 14, 11, // tri1 - 0, 14, 13, // tri2 - 13, 5, 8 // tri3 -), -gsSPNTriangles_5b( - 5, 12, 6, // tri0 - 5, 13, 12, // tri1 - 15, 11, 18, // tri2 - 11, 10, 18 // tri3 -), -gsSPNTriangles_5b( - 2, 14, 0, // tri0 - 11, 14, 9, // tri1 - 19, 20, 2, // tri2 - 19, 2, 1 // tri3 -), -gsSPNTriangles_5b( - 1, 16, 21, // tri0 - 10, 9, 22, // tri1 - 10, 22, 23, // tri2 - 24, 18, 10 // tri3 -), -gsSPNTriangles_5b( - 20, 9, 2, // tri0 - 9, 20, 22, // tri1 - 1, 21, 19, // tri2 - 23, 24, 10 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&rcd_1_v[210], 15, 0), -gsSPNTrianglesInit_5b( - 16, // tri count - 0, 1, 2, // tri0 - 0, 3, 4, // tri1 - 5, 3, 6 // tri2 -), -gsSPNTriangles_5b( - 3, 7, 6, // tri0 - 8, 1, 9, // tri1 - 10, 2, 11, // tri2 - 7, 2, 10 // tri3 -), -gsSPNTriangles_5b( - 2, 7, 3, // tri0 - 2, 1, 11, // tri1 - 4, 3, 5, // tri2 - 12, 9, 1 // tri3 -), -gsSPNTriangles_5b( - 0, 2, 3, // tri0 - 12, 1, 0, // tri1 - 8, 11, 1, // tri2 - 11, 8, 13 // tri3 -), -gsSPNTriangles_5b( - 14, 6, 7, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x180, G_IM_FMT_CI, 48, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcd_1_v[185], 25, 0), + gsSPNTrianglesInit_5b(31, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 5 // tri2 + ), + gsSPNTriangles_5b(8, 5, 4, // tri0 + 9, 10, 11, // tri1 + 11, 12, 13, // tri2 + 14, 2, 9 // tri3 + ), + gsSPNTriangles_5b(13, 8, 0, // tri0 + 11, 15, 12, // tri1 + 16, 0, 17, // tri2 + 16, 1, 0 // tri3 + ), + gsSPNTriangles_5b(8, 17, 0, // tri0 + 13, 14, 11, // tri1 + 0, 14, 13, // tri2 + 13, 5, 8 // tri3 + ), + gsSPNTriangles_5b(5, 12, 6, // tri0 + 5, 13, 12, // tri1 + 15, 11, 18, // tri2 + 11, 10, 18 // tri3 + ), + gsSPNTriangles_5b(2, 14, 0, // tri0 + 11, 14, 9, // tri1 + 19, 20, 2, // tri2 + 19, 2, 1 // tri3 + ), + gsSPNTriangles_5b(1, 16, 21, // tri0 + 10, 9, 22, // tri1 + 10, 22, 23, // tri2 + 24, 18, 10 // tri3 + ), + gsSPNTriangles_5b(20, 9, 2, // tri0 + 9, 20, 22, // tri1 + 1, 21, 19, // tri2 + 23, 24, 10 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rcd_1_v[210], 15, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(3, 7, 6, // tri0 + 8, 1, 9, // tri1 + 10, 2, 11, // tri2 + 7, 2, 10 // tri3 + ), + gsSPNTriangles_5b(2, 7, 3, // tri0 + 2, 1, 11, // tri1 + 4, 3, 5, // tri2 + 12, 9, 1 // tri3 + ), + gsSPNTriangles_5b(0, 2, 3, // tri0 + 12, 1, 0, // tri1 + 8, 11, 1, // tri2 + 11, 8, 13 // tri3 + ), + gsSPNTriangles_5b(14, 6, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail1_rcd_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcd_1_v[250], 4, 0), -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000580, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rcd_1_v[254], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 1, 4, 5, // tri0 - 1, 0, 6, // tri1 - 2, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 1, 9, 10, // tri0 - 2, 1, 11, // tri1 - 0, 12, 13, // tri2 - 0, 3, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcd_1_v[250], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x580, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcd_1_v[254], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 1, 4, 5, // tri0 + 1, 0, 6, // tri1 + 2, 7, 8 // tri2 + ), + gsSPNTriangles_5b(1, 9, 10, // tri0 + 2, 1, 11, // tri1 + 0, 12, 13, // tri2 + 0, 3, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail2_rcd_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcd_1_v[225], 4, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000580, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rcd_1_v[229], 21, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 4, 5, // tri0 - 0, 3, 6, // tri1 - 1, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 0, 9, // tri0 - 1, 2, 10, // tri1 - 0, 11, 12, // tri2 - 3, 1, 13 // tri3 -), -gsSPNTriangles_5b( - 2, 14, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 12, // tri count - 16, 17, 18, // tri0 - 19, 17, 16, // tri1 - 20, 21, 22 // tri2 -), -gsSPNTriangles_5b( - 20, 23, 16, // tri0 - 18, 21, 16, // tri1 - 16, 23, 19, // tri2 - 23, 22, 24 // tri3 -), -gsSPNTriangles_5b( - 24, 22, 21, // tri0 - 16, 21, 20, // tri1 - 24, 19, 23, // tri2 - 22, 23, 20 // tri3 -), -gsSPNTriangles_5b( - 21, 18, 24, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcd_1_v[225], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x580, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcd_1_v[229], 21, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 0, 3, 6, // tri1 + 1, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 0, 9, // tri0 + 1, 2, 10, // tri1 + 0, 11, 12, // tri2 + 3, 1, 13 // tri3 + ), + gsSPNTriangles_5b(2, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(12, // tri count + 16, 17, 18, // tri0 + 19, 17, 16, // tri1 + 20, 21, 22 // tri2 + ), + gsSPNTriangles_5b(20, 23, 16, // tri0 + 18, 21, 16, // tri1 + 16, 23, 19, // tri2 + 23, 22, 24 // tri3 + ), + gsSPNTriangles_5b(24, 22, 21, // tri0 + 16, 21, 20, // tri1 + 24, 19, 23, // tri2 + 22, 23, 20 // tri3 + ), + gsSPNTriangles_5b(21, 18, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_rcd_model[] = { -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcd_1_v[290], 5, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rcd_1_v[295], 15, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 0, 5, // tri0 - 0, 7, 6, // tri1 - 2, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 0, 1, 10, // tri0 - 1, 2, 11, // tri1 - 2, 4, 12, // tri2 - 1, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 15, 16, 17, // tri0 - 18, 16, 15, // tri1 - 19, 17, 16 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcd_1_v[290], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcd_1_v[295], 15, 5), + gsSPNTrianglesInit_5b(7, // tri count + 3, 0, 5, // tri0 + 0, 7, 6, // tri1 + 2, 9, 8 // tri2 + ), + gsSPNTriangles_5b(0, 1, 10, // tri0 + 1, 2, 11, // tri1 + 2, 4, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 16, 15, // tri1 + 19, 17, 16 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_rcd_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcd_1_v[310], 9, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 1, 6, 2 // tri2 -), -gsSPNTriangles_5b( - 7, 5, 4, // tri0 - 7, 4, 0, // tri1 - 0, 2, 7, // tri2 - 5, 8, 3 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcd_1_v[310], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 6, 2 // tri2 + ), + gsSPNTriangles_5b(7, 5, 4, // tri0 + 7, 4, 0, // tri1 + 0, 2, 7, // tri2 + 5, 8, 3 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_rcd_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcd_1_v[265], 4, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rcd_1_v[269], 14, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 3, 4, // tri0 - 0, 6, 5, // tri1 - 2, 8, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 9, // tri0 - 2, 1, 10, // tri1 - 3, 2, 11, // tri2 - 1, 12, 13 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 14, 15, 16, // tri0 - 16, 15, 17, // tri1 - 15, 14, 17 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcd_1_v[265], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcd_1_v[269], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 4, // tri0 + 0, 6, 5, // tri1 + 2, 8, 7 // tri2 + ), + gsSPNTriangles_5b(1, 0, 9, // tri0 + 2, 1, 10, // tri1 + 3, 2, 11, // tri2 + 1, 12, 13 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 14, 15, 16, // tri0 + 16, 15, 17, // tri1 + 15, 14, 17 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_rcd_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcd_1_v[283], 7, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 3, 4, 1, // tri1 - 0, 5, 1 // tri2 -), -gsSPNTriangles_5b( - 4, 3, 6, // tri0 - 2, 4, 6, // tri1 - 6, 0, 2, // tri2 - 1, 5, 3 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcd_1_v[283], 7, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 0, 5, 1 // tri2 + ), + gsSPNTriangles_5b(4, 3, 6, // tri0 + 2, 4, 6, // tri1 + 6, 0, 2, // tri2 + 1, 5, 3 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx base_rcd_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcd_1_v[319], 19, 0), -gsSPNTrianglesInit_5b( - 27, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 5, 7, 8, // tri0 - 5, 8, 6, // tri1 - 6, 8, 9, // tri2 - 7, 1, 0 // tri3 -), -gsSPNTriangles_5b( - 1, 4, 2, // tri0 - 1, 7, 5, // tri1 - 1, 5, 4, // tri2 - 10, 11, 12 // tri3 -), -gsSPNTriangles_5b( - 10, 6, 9, // tri0 - 4, 6, 10, // tri1 - 2, 4, 13, // tri2 - 2, 13, 14 // tri3 -), -gsSPNTriangles_5b( - 15, 14, 16, // tri0 - 17, 12, 11, // tri1 - 15, 16, 17, // tri2 - 18, 10, 12 // tri3 -), -gsSPNTriangles_5b( - 10, 13, 4, // tri0 - 18, 13, 10, // tri1 - 16, 14, 18, // tri2 - 18, 14, 13 // tri3 -), -gsSPNTriangles_5b( - 9, 11, 10, // tri0 - 17, 16, 12, // tri1 - 3, 2, 14, // tri2 - 14, 15, 3 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcd_1_v[319], 19, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 5, 8, 6, // tri1 + 6, 8, 9, // tri2 + 7, 1, 0 // tri3 + ), + gsSPNTriangles_5b(1, 4, 2, // tri0 + 1, 7, 5, // tri1 + 1, 5, 4, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(10, 6, 9, // tri0 + 4, 6, 10, // tri1 + 2, 4, 13, // tri2 + 2, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 14, 16, // tri0 + 17, 12, 11, // tri1 + 15, 16, 17, // tri2 + 18, 10, 12 // tri3 + ), + gsSPNTriangles_5b(10, 13, 4, // tri0 + 18, 13, 10, // tri1 + 16, 14, 18, // tri2 + 18, 14, 13 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 17, 16, 12, // tri1 + 3, 2, 14, // tri2 + 14, 15, 3 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_rcd_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -744,4 +660,4 @@ static cKF_Joint_R_c cKF_je_r_rcd_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_rcd_1 = { 26, 14, cKF_je_r_rcd_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_rcd_1 = { 26, 14, cKF_je_r_rcd_1_tbl }; diff --git a/src/data/npc/model/mdl/rcf_1.c b/src/data/npc/model/mdl/rcf_1.c index 1f5f9097..0a26219b 100644 --- a/src/data/npc/model/mdl/rcf_1.c +++ b/src/data/npc/model/mdl/rcf_1.c @@ -6,866 +6,761 @@ static Vtx rcf_1_v[] = { }; static Gfx head_rcf_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcf_1_v[14], 28, 0), -gsSPNTrianglesInit_5b( - 39, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 0, 9, 1, // tri0 - 10, 5, 4, // tri1 - 5, 6, 3, // tri2 - 0, 4, 11 // tri3 -), -gsSPNTriangles_5b( - 0, 11, 12, // tri0 - 4, 3, 11, // tri1 - 13, 14, 4, // tri2 - 13, 4, 0 // tri3 -), -gsSPNTriangles_5b( - 8, 15, 16, // tri0 - 17, 18, 19, // tri1 - 15, 8, 7, // tri2 - 20, 21, 19 // tri3 -), -gsSPNTriangles_5b( - 12, 11, 22, // tri0 - 12, 22, 23, // tri1 - 22, 11, 3, // tri2 - 23, 9, 12 // tri3 -), -gsSPNTriangles_5b( - 9, 23, 18, // tri0 - 9, 18, 17, // tri1 - 1, 9, 17, // tri2 - 16, 20, 19 // tri3 -), -gsSPNTriangles_5b( - 24, 25, 8, // tri0 - 24, 22, 25, // tri1 - 25, 3, 6, // tri2 - 25, 22, 3 // tri3 -), -gsSPNTriangles_5b( - 19, 18, 24, // tri0 - 24, 18, 23, // tri1 - 23, 22, 24, // tri2 - 4, 14, 10 // tri3 -), -gsSPNTriangles_5b( - 2, 13, 0, // tri0 - 8, 16, 24, // tri1 - 16, 19, 24, // tri2 - 8, 25, 6 // tri3 -), -gsSPNTriangles_5b( - 19, 21, 17, // tri0 - 26, 27, 14, // tri1 - 26, 14, 13, // tri2 - 12, 9, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&rcf_1_v[42], 27, 0), -gsSPNTrianglesInit_5b( - 17, // tri count - 0, 1, 2, // tri0 - 2, 3, 4, // tri1 - 5, 2, 1 // tri2 -), -gsSPNTriangles_5b( - 3, 2, 5, // tri0 - 6, 7, 1, // tri1 - 7, 8, 9, // tri2 - 10, 4, 3 // tri3 -), -gsSPNTriangles_5b( - 11, 12, 3, // tri0 - 11, 3, 5, // tri1 - 5, 9, 11, // tri2 - 12, 10, 3 // tri3 -), -gsSPNTriangles_5b( - 1, 0, 6, // tri0 - 6, 13, 7, // tri1 - 14, 12, 11, // tri2 - 1, 9, 5 // tri3 -), -gsSPNTriangles_5b( - 9, 1, 7, // tri0 - 12, 15, 10, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 16, 17, 18, // tri0 - 16, 18, 19, // tri1 - 20, 21, 22 // tri2 -), -gsSPNTriangles_5b( - 21, 19, 23, // tri0 - 21, 23, 24, // tri1 - 25, 16, 26, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 253, 255, 255), -gsSPVertex(&rcf_1_v[69], 31, 0), -gsSPNTrianglesInit_5b( - 3, // tri count - 0, 1, 2, // tri0 - 3, 1, 0, // tri1 - 0, 4, 3 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPNTrianglesInit_5b( - 4, // tri count - 5, 6, 7, // tri0 - 7, 8, 9, // tri1 - 7, 9, 5 // tri2 -), -gsSPNTriangles_5b( - 5, 10, 6, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 253, 255, 255), -gsSPNTrianglesInit_5b( - 5, // tri count - 11, 12, 13, // tri0 - 11, 14, 15, // tri1 - 16, 17, 11 // tri2 -), -gsSPNTriangles_5b( - 13, 16, 11, // tri0 - 15, 12, 11, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPNTrianglesInit_5b( - 4, // tri count - 18, 19, 20, // tri0 - 20, 21, 22, // tri1 - 20, 22, 18 // tri2 -), -gsSPNTriangles_5b( - 18, 23, 19, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 5, // tri count - 24, 25, 26, // tri0 - 24, 27, 28, // tri1 - 26, 29, 24 // tri2 -), -gsSPNTriangles_5b( - 24, 30, 27, // tri0 - 28, 25, 24, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcf_1_v[100], 29, 0), -gsSPNTrianglesInit_5b( - 19, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 7, 8, 9, // tri0 - 7, 9, 10, // tri1 - 9, 8, 11, // tri2 - 12, 13, 11 // tri3 -), -gsSPNTriangles_5b( - 12, 11, 14, // tri0 - 6, 15, 4, // tri1 - 11, 13, 9, // tri2 - 16, 2, 1 // tri3 -), -gsSPNTriangles_5b( - 16, 1, 17, // tri0 - 14, 18, 12, // tri1 - 18, 4, 15, // tri2 - 18, 15, 12 // tri3 -), -gsSPNTriangles_5b( - 10, 16, 17, // tri0 - 10, 17, 7, // tri1 - 3, 6, 5, // tri2 - 3, 5, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 60), -gsSPNTrianglesInit_5b( - 8, // tri count - 19, 20, 21, // tri0 - 22, 23, 24, // tri1 - 24, 19, 25 // tri2 -), -gsSPNTriangles_5b( - 24, 25, 26, // tri0 - 26, 22, 24, // tri1 - 19, 21, 25, // tri2 - 22, 27, 23 // tri3 -), -gsSPNTriangles_5b( - 21, 20, 28, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcf_1_v[14], 28, 0), + gsSPNTrianglesInit_5b(39, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(0, 9, 1, // tri0 + 10, 5, 4, // tri1 + 5, 6, 3, // tri2 + 0, 4, 11 // tri3 + ), + gsSPNTriangles_5b(0, 11, 12, // tri0 + 4, 3, 11, // tri1 + 13, 14, 4, // tri2 + 13, 4, 0 // tri3 + ), + gsSPNTriangles_5b(8, 15, 16, // tri0 + 17, 18, 19, // tri1 + 15, 8, 7, // tri2 + 20, 21, 19 // tri3 + ), + gsSPNTriangles_5b(12, 11, 22, // tri0 + 12, 22, 23, // tri1 + 22, 11, 3, // tri2 + 23, 9, 12 // tri3 + ), + gsSPNTriangles_5b(9, 23, 18, // tri0 + 9, 18, 17, // tri1 + 1, 9, 17, // tri2 + 16, 20, 19 // tri3 + ), + gsSPNTriangles_5b(24, 25, 8, // tri0 + 24, 22, 25, // tri1 + 25, 3, 6, // tri2 + 25, 22, 3 // tri3 + ), + gsSPNTriangles_5b(19, 18, 24, // tri0 + 24, 18, 23, // tri1 + 23, 22, 24, // tri2 + 4, 14, 10 // tri3 + ), + gsSPNTriangles_5b(2, 13, 0, // tri0 + 8, 16, 24, // tri1 + 16, 19, 24, // tri2 + 8, 25, 6 // tri3 + ), + gsSPNTriangles_5b(19, 21, 17, // tri0 + 26, 27, 14, // tri1 + 26, 14, 13, // tri2 + 12, 9, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rcf_1_v[42], 27, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 5, 2, 1 // tri2 + ), + gsSPNTriangles_5b(3, 2, 5, // tri0 + 6, 7, 1, // tri1 + 7, 8, 9, // tri2 + 10, 4, 3 // tri3 + ), + gsSPNTriangles_5b(11, 12, 3, // tri0 + 11, 3, 5, // tri1 + 5, 9, 11, // tri2 + 12, 10, 3 // tri3 + ), + gsSPNTriangles_5b(1, 0, 6, // tri0 + 6, 13, 7, // tri1 + 14, 12, 11, // tri2 + 1, 9, 5 // tri3 + ), + gsSPNTriangles_5b(9, 1, 7, // tri0 + 12, 15, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 16, 17, 18, // tri0 + 16, 18, 19, // tri1 + 20, 21, 22 // tri2 + ), + gsSPNTriangles_5b(21, 19, 23, // tri0 + 21, 23, 24, // tri1 + 25, 16, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 253, 255, 255), + gsSPVertex(&rcf_1_v[69], 31, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 0, 4, 3 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPNTrianglesInit_5b(4, // tri count + 5, 6, 7, // tri0 + 7, 8, 9, // tri1 + 7, 9, 5 // tri2 + ), + gsSPNTriangles_5b(5, 10, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 253, 255, 255), + gsSPNTrianglesInit_5b(5, // tri count + 11, 12, 13, // tri0 + 11, 14, 15, // tri1 + 16, 17, 11 // tri2 + ), + gsSPNTriangles_5b(13, 16, 11, // tri0 + 15, 12, 11, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPNTrianglesInit_5b(4, // tri count + 18, 19, 20, // tri0 + 20, 21, 22, // tri1 + 20, 22, 18 // tri2 + ), + gsSPNTriangles_5b(18, 23, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(5, // tri count + 24, 25, 26, // tri0 + 24, 27, 28, // tri1 + 26, 29, 24 // tri2 + ), + gsSPNTriangles_5b(24, 30, 27, // tri0 + 28, 25, 24, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcf_1_v[100], 29, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 7, 9, 10, // tri1 + 9, 8, 11, // tri2 + 12, 13, 11 // tri3 + ), + gsSPNTriangles_5b(12, 11, 14, // tri0 + 6, 15, 4, // tri1 + 11, 13, 9, // tri2 + 16, 2, 1 // tri3 + ), + gsSPNTriangles_5b(16, 1, 17, // tri0 + 14, 18, 12, // tri1 + 18, 4, 15, // tri2 + 18, 15, 12 // tri3 + ), + gsSPNTriangles_5b(10, 16, 17, // tri0 + 10, 17, 7, // tri1 + 3, 6, 5, // tri2 + 3, 5, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsSPNTrianglesInit_5b(8, // tri count + 19, 20, 21, // tri0 + 22, 23, 24, // tri1 + 24, 19, 25 // tri2 + ), + gsSPNTriangles_5b(24, 25, 26, // tri0 + 26, 22, 24, // tri1 + 19, 21, 25, // tri2 + 22, 27, 23 // tri3 + ), + gsSPNTriangles_5b(21, 20, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx mouth_rcf_model[] = { -gsSPMatrix(0x0D000380, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcf_1_v[0], 5, 0), -gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rcf_1_v[5], 9, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 5, 6, // tri0 - 4, 8, 7, // tri1 - 2, 1, 9 // tri2 -), -gsSPNTriangles_5b( - 3, 10, 0, // tri0 - 1, 0, 11, // tri1 - 4, 2, 12, // tri2 - 3, 4, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*14, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcf_1_v[0], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcf_1_v[5], 9, 5), + gsSPNTrianglesInit_5b(7, // tri count + 0, 5, 6, // tri0 + 4, 8, 7, // tri1 + 2, 1, 9 // tri2 + ), + gsSPNTriangles_5b(3, 10, 0, // tri0 + 1, 0, 11, // tri1 + 4, 2, 12, // tri2 + 3, 4, 13 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx hand_rcf_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), -gsDPSetTileSize(0, 0, 0, 60, 60), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcf_1_v[163], 28, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 0, 3, 4 // tri2 -), -gsSPNTriangles_5b( - 3, 5, 6, // tri0 - 3, 6, 7, // tri1 - 3, 7, 4, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 14, // tri count - 8, 9, 10, // tri0 - 11, 12, 9, // tri1 - 13, 14, 15 // tri2 -), -gsSPNTriangles_5b( - 16, 17, 14, // tri0 - 18, 10, 19, // tri1 - 20, 21, 17, // tri2 - 21, 20, 18 // tri3 -), -gsSPNTriangles_5b( - 17, 16, 20, // tri0 - 14, 13, 16, // tri1 - 12, 11, 13, // tri2 - 9, 8, 11 // tri3 -), -gsSPNTriangles_5b( - 10, 18, 8, // tri0 - 19, 21, 18, // tri1 - 15, 12, 13, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), -gsDPSetTileSize(0, 0, 0, 60, 60), -gsSPNTrianglesInit_5b( - 4, // tri count - 22, 23, 24, // tri0 - 22, 24, 25, // tri1 - 24, 26, 27 // tri2 -), -gsSPNTriangles_5b( - 24, 27, 25, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&rcf_1_v[191], 7, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 2, // tri0 - 1, 3, 2, // tri1 - 3, 4, 2 // tri2 -), -gsSPNTriangles_5b( - 4, 5, 2, // tri0 - 5, 6, 2, // tri1 - 6, 0, 2, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 60, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcf_1_v[163], 28, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 3, 4 // tri2 + ), + gsSPNTriangles_5b(3, 5, 6, // tri0 + 3, 6, 7, // tri1 + 3, 7, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(14, // tri count + 8, 9, 10, // tri0 + 11, 12, 9, // tri1 + 13, 14, 15 // tri2 + ), + gsSPNTriangles_5b(16, 17, 14, // tri0 + 18, 10, 19, // tri1 + 20, 21, 17, // tri2 + 21, 20, 18 // tri3 + ), + gsSPNTriangles_5b(17, 16, 20, // tri0 + 14, 13, 16, // tri1 + 12, 11, 13, // tri2 + 9, 8, 11 // tri3 + ), + gsSPNTriangles_5b(10, 18, 8, // tri0 + 19, 21, 18, // tri1 + 15, 12, 13, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 60, 60), + gsSPNTrianglesInit_5b(4, // tri count + 22, 23, 24, // tri0 + 22, 24, 25, // tri1 + 24, 26, 27 // tri2 + ), + gsSPNTriangles_5b(24, 27, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rcf_1_v[191], 7, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 5, 6, 2, // tri1 + 6, 0, 2, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_rcf_model[] = { -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcf_1_v[198], 4, 0), -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rcf_1_v[202], 16, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 4, 5, // tri0 - 1, 6, 7, // tri1 - 2, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 1, 10, 11, // tri0 - 0, 2, 12, // tri1 - 0, 13, 1, // tri2 - 2, 3, 14 // tri3 -), -gsSPNTriangles_5b( - 3, 1, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 16, 17, 18, // tri0 - 19, 18, 17, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcf_1_v[198], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcf_1_v[202], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 1, 6, 7, // tri1 + 2, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 10, 11, // tri0 + 0, 2, 12, // tri1 + 0, 13, 1, // tri2 + 2, 3, 14 // tri3 + ), + gsSPNTriangles_5b(3, 1, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 19, 18, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_rcf_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcf_1_v[218], 3, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rcf_1_v[221], 11, 3), -gsSPNTrianglesInit_5b( - 7, // tri count - 2, 3, 1, // tri0 - 0, 5, 4, // tri1 - 2, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 8, 9, // tri0 - 0, 10, 11, // tri1 - 2, 0, 12, // tri2 - 0, 1, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcf_1_v[218], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcf_1_v[221], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 2, 3, 1, // tri0 + 0, 5, 4, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 0, 10, 11, // tri1 + 2, 0, 12, // tri2 + 0, 1, 13 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_rcf_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcf_1_v[129], 4, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rcf_1_v[133], 16, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 4, 5, // tri0 - 1, 6, 7, // tri1 - 2, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 1, 10, 11, // tri0 - 2, 0, 12, // tri1 - 1, 13, 0, // tri2 - 3, 2, 14 // tri3 -), -gsSPNTriangles_5b( - 1, 3, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 16, 17, 18, // tri0 - 17, 16, 19, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcf_1_v[129], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcf_1_v[133], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 1, 6, 7, // tri1 + 2, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 10, 11, // tri0 + 2, 0, 12, // tri1 + 1, 13, 0, // tri2 + 3, 2, 14 // tri3 + ), + gsSPNTriangles_5b(1, 3, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_rcf_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcf_1_v[149], 3, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rcf_1_v[152], 11, 3), -gsSPNTrianglesInit_5b( - 7, // tri count - 1, 3, 2, // tri0 - 0, 5, 4, // tri1 - 2, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 8, 9, // tri0 - 0, 10, 11, // tri1 - 0, 2, 12, // tri2 - 1, 0, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcf_1_v[149], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcf_1_v[152], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 1, 3, 2, // tri0 + 0, 5, 4, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 0, 10, 11, // tri1 + 0, 2, 12, // tri2 + 1, 0, 13 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_rcf_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcf_1_v[232], 11, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rcf_1_v[243], 12, 11), -gsSPNTrianglesInit_5b( - 8, // tri count - 10, 11, 9, // tri0 - 8, 12, 10, // tri1 - 9, 13, 14 // tri2 -), -gsSPNTriangles_5b( - 3, 15, 16, // tri0 - 8, 3, 17, // tri1 - 5, 18, 19, // tri2 - 8, 21, 20 // tri3 -), -gsSPNTriangles_5b( - 5, 9, 22, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&rcf_1_v[255], 13, 11), -gsSPNTrianglesInit_5b( - 9, // tri count - 2, 11, 12, // tri0 - 2, 1, 13, // tri1 - 7, 0, 14 // tri2 -), -gsSPNTriangles_5b( - 1, 7, 15, // tri0 - 0, 4, 16, // tri1 - 6, 17, 18, // tri2 - 4, 6, 19 // tri3 -), -gsSPNTriangles_5b( - 7, 20, 21, // tri0 - 0, 22, 23, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&rcf_1_v[268], 24, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 2, // tri0 - 2, 1, 3, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 2, 3, 5, // tri0 - 0, 7, 1, // tri1 - 2, 5, 4, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 8, 9, 10, // tri0 - 11, 12, 13, // tri1 - 11, 8, 10 // tri2 -), -gsSPNTriangles_5b( - 10, 12, 11, // tri0 - 13, 14, 11, // tri1 - 13, 15, 14, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 6, // tri count - 16, 17, 18, // tri0 - 19, 18, 20, // tri1 - 21, 20, 18 // tri2 -), -gsSPNTriangles_5b( - 22, 18, 19, // tri0 - 18, 23, 16, // tri1 - 18, 22, 23, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcf_1_v[232], 11, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcf_1_v[243], 12, 11), + gsSPNTrianglesInit_5b(8, // tri count + 10, 11, 9, // tri0 + 8, 12, 10, // tri1 + 9, 13, 14 // tri2 + ), + gsSPNTriangles_5b(3, 15, 16, // tri0 + 8, 3, 17, // tri1 + 5, 18, 19, // tri2 + 8, 21, 20 // tri3 + ), + gsSPNTriangles_5b(5, 9, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rcf_1_v[255], 13, 11), + gsSPNTrianglesInit_5b(9, // tri count + 2, 11, 12, // tri0 + 2, 1, 13, // tri1 + 7, 0, 14 // tri2 + ), + gsSPNTriangles_5b(1, 7, 15, // tri0 + 0, 4, 16, // tri1 + 6, 17, 18, // tri2 + 4, 6, 19 // tri3 + ), + gsSPNTriangles_5b(7, 20, 21, // tri0 + 0, 22, 23, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rcf_1_v[268], 24, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(2, 3, 5, // tri0 + 0, 7, 1, // tri1 + 2, 5, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 11, 8, 10 // tri2 + ), + gsSPNTriangles_5b(10, 12, 11, // tri0 + 13, 14, 11, // tri1 + 13, 15, 14, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(6, // tri count + 16, 17, 18, // tri0 + 19, 18, 20, // tri1 + 21, 20, 18 // tri2 + ), + gsSPNTriangles_5b(22, 18, 19, // tri0 + 18, 23, 16, // tri1 + 18, 22, 23, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail1_rcf_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcf_1_v[317], 4, 0), -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rcf_1_v[321], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 1, 4, 5, // tri0 - 1, 0, 6, // tri1 - 2, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 1, 9, 10, // tri0 - 2, 1, 11, // tri1 - 0, 12, 13, // tri2 - 0, 3, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcf_1_v[317], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcf_1_v[321], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 1, 4, 5, // tri0 + 1, 0, 6, // tri1 + 2, 7, 8 // tri2 + ), + gsSPNTriangles_5b(1, 9, 10, // tri0 + 2, 1, 11, // tri1 + 0, 12, 13, // tri2 + 0, 3, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail2_rcf_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcf_1_v[292], 4, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rcf_1_v[296], 21, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 4, 5, // tri0 - 0, 3, 6, // tri1 - 1, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 0, 9, // tri0 - 1, 2, 10, // tri1 - 0, 11, 12, // tri2 - 3, 1, 13 // tri3 -), -gsSPNTriangles_5b( - 2, 14, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 12, // tri count - 16, 17, 18, // tri0 - 19, 17, 16, // tri1 - 20, 21, 22 // tri2 -), -gsSPNTriangles_5b( - 20, 23, 16, // tri0 - 18, 21, 16, // tri1 - 16, 23, 19, // tri2 - 23, 22, 24 // tri3 -), -gsSPNTriangles_5b( - 24, 22, 21, // tri0 - 16, 21, 20, // tri1 - 24, 19, 23, // tri2 - 22, 23, 20 // tri3 -), -gsSPNTriangles_5b( - 21, 18, 24, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcf_1_v[292], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcf_1_v[296], 21, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 0, 3, 6, // tri1 + 1, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 0, 9, // tri0 + 1, 2, 10, // tri1 + 0, 11, 12, // tri2 + 3, 1, 13 // tri3 + ), + gsSPNTriangles_5b(2, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(12, // tri count + 16, 17, 18, // tri0 + 19, 17, 16, // tri1 + 20, 21, 22 // tri2 + ), + gsSPNTriangles_5b(20, 23, 16, // tri0 + 18, 21, 16, // tri1 + 16, 23, 19, // tri2 + 23, 22, 24 // tri3 + ), + gsSPNTriangles_5b(24, 22, 21, // tri0 + 16, 21, 20, // tri1 + 24, 19, 23, // tri2 + 22, 23, 20 // tri3 + ), + gsSPNTriangles_5b(21, 18, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_rcf_model[] = { -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcf_1_v[361], 5, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rcf_1_v[366], 15, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 0, 5, // tri0 - 0, 7, 6, // tri1 - 2, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 0, 1, 10, // tri0 - 1, 2, 11, // tri1 - 2, 4, 12, // tri2 - 1, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 15, 16, 17, // tri0 - 18, 16, 15, // tri1 - 19, 17, 16 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcf_1_v[361], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcf_1_v[366], 15, 5), + gsSPNTrianglesInit_5b(7, // tri count + 3, 0, 5, // tri0 + 0, 7, 6, // tri1 + 2, 9, 8 // tri2 + ), + gsSPNTriangles_5b(0, 1, 10, // tri0 + 1, 2, 11, // tri1 + 2, 4, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 16, 15, // tri1 + 19, 17, 16 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_rcf_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcf_1_v[381], 9, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 1, 6, 2 // tri2 -), -gsSPNTriangles_5b( - 7, 5, 4, // tri0 - 7, 4, 0, // tri1 - 0, 2, 7, // tri2 - 5, 8, 3 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcf_1_v[381], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 6, 2 // tri2 + ), + gsSPNTriangles_5b(7, 5, 4, // tri0 + 7, 4, 0, // tri1 + 0, 2, 7, // tri2 + 5, 8, 3 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_rcf_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcf_1_v[332], 5, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rcf_1_v[337], 15, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 3, 5, // tri0 - 0, 7, 6, // tri1 - 2, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 10, // tri0 - 2, 1, 11, // tri1 - 4, 2, 12, // tri2 - 1, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 15, 16, 17, // tri0 - 17, 16, 18, // tri1 - 16, 15, 19 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcf_1_v[332], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcf_1_v[337], 15, 5), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 5, // tri0 + 0, 7, 6, // tri1 + 2, 9, 8 // tri2 + ), + gsSPNTriangles_5b(1, 0, 10, // tri0 + 2, 1, 11, // tri1 + 4, 2, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 17, 16, 18, // tri1 + 16, 15, 19 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_rcf_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcf_1_v[352], 9, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 0, 6, 1 // tri2 -), -gsSPNTriangles_5b( - 4, 3, 7, // tri0 - 2, 4, 7, // tri1 - 7, 0, 2, // tri2 - 5, 8, 3 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcf_1_v[352], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 1 // tri2 + ), + gsSPNTriangles_5b(4, 3, 7, // tri0 + 2, 4, 7, // tri1 + 7, 0, 2, // tri2 + 5, 8, 3 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx base_rcf_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000580, G_IM_FMT_CI, 48, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcf_1_v[390], 24, 0), -gsSPNTrianglesInit_5b( - 12, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 9, 10, 7, // tri0 - 2, 11, 0, // tri1 - 6, 8, 12, // tri2 - 12, 13, 6 // tri3 -), -gsSPNTriangles_5b( - 2, 8, 11, // tri0 - 11, 3, 0, // tri1 - 8, 2, 12, // tri2 - 0, 3, 5 // tri3 -), -gsSPNTriangles_5b( - 9, 7, 6, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 8, // tri count - 14, 15, 16, // tri0 - 17, 18, 16, // tri1 - 16, 15, 17 // tri2 -), -gsSPNTriangles_5b( - 16, 19, 14, // tri0 - 18, 17, 20, // tri1 - 19, 21, 22, // tri2 - 20, 23, 18 // tri3 -), -gsSPNTriangles_5b( - 22, 14, 19, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&rcf_1_v[414], 21, 0), -gsSPNTrianglesInit_5b( - 29, // tri count - 0, 1, 2, // tri0 - 3, 4, 0, // tri1 - 0, 4, 1 // tri2 -), -gsSPNTriangles_5b( - 5, 6, 7, // tri0 - 8, 3, 9, // tri1 - 7, 10, 4, // tri2 - 11, 12, 13 // tri3 -), -gsSPNTriangles_5b( - 4, 5, 7, // tri0 - 11, 13, 2, // tri1 - 2, 13, 9, // tri2 - 2, 14, 11 // tri3 -), -gsSPNTriangles_5b( - 15, 14, 2, // tri0 - 10, 15, 1, // tri1 - 10, 1, 4, // tri2 - 5, 4, 3 // tri3 -), -gsSPNTriangles_5b( - 8, 9, 13, // tri0 - 5, 3, 8, // tri1 - 0, 2, 9, // tri2 - 2, 1, 15 // tri3 -), -gsSPNTriangles_5b( - 16, 17, 15, // tri0 - 16, 18, 17, // tri1 - 16, 15, 10, // tri2 - 18, 16, 19 // tri3 -), -gsSPNTriangles_5b( - 14, 20, 11, // tri0 - 17, 20, 14, // tri1 - 17, 18, 20, // tri2 - 15, 17, 14 // tri3 -), -gsSPNTriangles_5b( - 19, 10, 7, // tri0 - 19, 16, 10, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x580, G_IM_FMT_CI, 48, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcf_1_v[390], 24, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 7, // tri0 + 2, 11, 0, // tri1 + 6, 8, 12, // tri2 + 12, 13, 6 // tri3 + ), + gsSPNTriangles_5b(2, 8, 11, // tri0 + 11, 3, 0, // tri1 + 8, 2, 12, // tri2 + 0, 3, 5 // tri3 + ), + gsSPNTriangles_5b(9, 7, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(8, // tri count + 14, 15, 16, // tri0 + 17, 18, 16, // tri1 + 16, 15, 17 // tri2 + ), + gsSPNTriangles_5b(16, 19, 14, // tri0 + 18, 17, 20, // tri1 + 19, 21, 22, // tri2 + 20, 23, 18 // tri3 + ), + gsSPNTriangles_5b(22, 14, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rcf_1_v[414], 21, 0), + gsSPNTrianglesInit_5b(29, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 3, 9, // tri1 + 7, 10, 4, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(4, 5, 7, // tri0 + 11, 13, 2, // tri1 + 2, 13, 9, // tri2 + 2, 14, 11 // tri3 + ), + gsSPNTriangles_5b(15, 14, 2, // tri0 + 10, 15, 1, // tri1 + 10, 1, 4, // tri2 + 5, 4, 3 // tri3 + ), + gsSPNTriangles_5b(8, 9, 13, // tri0 + 5, 3, 8, // tri1 + 0, 2, 9, // tri2 + 2, 1, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 16, 18, 17, // tri1 + 16, 15, 10, // tri2 + 18, 16, 19 // tri3 + ), + gsSPNTriangles_5b(14, 20, 11, // tri0 + 17, 20, 14, // tri1 + 17, 18, 20, // tri2 + 15, 17, 14 // tri3 + ), + gsSPNTriangles_5b(19, 10, 7, // tri0 + 19, 16, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_rcf_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -897,4 +792,4 @@ static cKF_Joint_R_c cKF_je_r_rcf_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_rcf_1 = { 26, 15, cKF_je_r_rcf_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_rcf_1 = { 26, 15, cKF_je_r_rcf_1_tbl }; diff --git a/src/data/npc/model/mdl/rcn_1.c b/src/data/npc/model/mdl/rcn_1.c index 3e117790..d5aa6626 100644 --- a/src/data/npc/model/mdl/rcn_1.c +++ b/src/data/npc/model/mdl/rcn_1.c @@ -6,715 +6,631 @@ static Vtx rcn_1_v[] = { }; static Gfx head_rcn_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcn_1_v[14], 28, 0), -gsSPNTrianglesInit_5b( - 39, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 0, 9, 1, // tri0 - 10, 5, 4, // tri1 - 5, 6, 3, // tri2 - 0, 4, 11 // tri3 -), -gsSPNTriangles_5b( - 0, 11, 12, // tri0 - 4, 3, 11, // tri1 - 13, 14, 4, // tri2 - 13, 4, 0 // tri3 -), -gsSPNTriangles_5b( - 8, 15, 16, // tri0 - 17, 18, 19, // tri1 - 15, 8, 7, // tri2 - 20, 21, 19 // tri3 -), -gsSPNTriangles_5b( - 12, 11, 22, // tri0 - 12, 22, 23, // tri1 - 22, 11, 3, // tri2 - 23, 9, 12 // tri3 -), -gsSPNTriangles_5b( - 9, 23, 18, // tri0 - 9, 18, 17, // tri1 - 1, 9, 17, // tri2 - 16, 20, 19 // tri3 -), -gsSPNTriangles_5b( - 24, 25, 8, // tri0 - 24, 22, 25, // tri1 - 25, 3, 6, // tri2 - 25, 22, 3 // tri3 -), -gsSPNTriangles_5b( - 19, 18, 24, // tri0 - 24, 18, 23, // tri1 - 23, 22, 24, // tri2 - 4, 14, 10 // tri3 -), -gsSPNTriangles_5b( - 2, 13, 0, // tri0 - 8, 16, 24, // tri1 - 16, 19, 24, // tri2 - 8, 25, 6 // tri3 -), -gsSPNTriangles_5b( - 19, 21, 17, // tri0 - 26, 27, 14, // tri1 - 26, 14, 13, // tri2 - 12, 9, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&rcn_1_v[42], 31, 0), -gsSPNTrianglesInit_5b( - 4, // tri count - 0, 1, 2, // tri0 - 2, 3, 4, // tri1 - 2, 4, 0 // tri2 -), -gsSPNTriangles_5b( - 0, 5, 1, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 4, // tri count - 6, 7, 8, // tri0 - 8, 9, 10, // tri1 - 8, 10, 6 // tri2 -), -gsSPNTriangles_5b( - 6, 11, 7, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 253, 255, 255), -gsSPNTrianglesInit_5b( - 3, // tri count - 12, 13, 14, // tri0 - 12, 15, 16, // tri1 - 14, 15, 12 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPNTrianglesInit_5b( - 5, // tri count - 17, 18, 19, // tri0 - 19, 20, 21, // tri1 - 19, 22, 17 // tri2 -), -gsSPNTriangles_5b( - 19, 21, 23, // tri0 - 23, 22, 19, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPSetPrimColor(0, 128, 255, 253, 255, 255), -gsSPNTrianglesInit_5b( - 5, // tri count - 24, 25, 26, // tri0 - 26, 27, 28, // tri1 - 28, 29, 26 // tri2 -), -gsSPNTriangles_5b( - 26, 29, 24, // tri0 - 25, 30, 26, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rcn_1_v[73], 24, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 4, 2, 5 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 6, // tri0 - 7, 4, 5, // tri1 - 4, 3, 2, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 17, // tri count - 8, 9, 10, // tri0 - 11, 10, 12, // tri1 - 10, 11, 8 // tri2 -), -gsSPNTriangles_5b( - 13, 14, 15, // tri0 - 14, 16, 17, // tri1 - 14, 17, 18, // tri2 - 11, 19, 20 // tri3 -), -gsSPNTriangles_5b( - 20, 8, 11, // tri0 - 17, 21, 18, // tri1 - 19, 11, 22, // tri2 - 15, 14, 18 // tri3 -), -gsSPNTriangles_5b( - 15, 18, 12, // tri0 - 22, 18, 21, // tri1 - 12, 22, 11, // tri2 - 12, 10, 15 // tri3 -), -gsSPNTriangles_5b( - 18, 22, 12, // tri0 - 20, 23, 8, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcn_1_v[14], 28, 0), + gsSPNTrianglesInit_5b(39, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(0, 9, 1, // tri0 + 10, 5, 4, // tri1 + 5, 6, 3, // tri2 + 0, 4, 11 // tri3 + ), + gsSPNTriangles_5b(0, 11, 12, // tri0 + 4, 3, 11, // tri1 + 13, 14, 4, // tri2 + 13, 4, 0 // tri3 + ), + gsSPNTriangles_5b(8, 15, 16, // tri0 + 17, 18, 19, // tri1 + 15, 8, 7, // tri2 + 20, 21, 19 // tri3 + ), + gsSPNTriangles_5b(12, 11, 22, // tri0 + 12, 22, 23, // tri1 + 22, 11, 3, // tri2 + 23, 9, 12 // tri3 + ), + gsSPNTriangles_5b(9, 23, 18, // tri0 + 9, 18, 17, // tri1 + 1, 9, 17, // tri2 + 16, 20, 19 // tri3 + ), + gsSPNTriangles_5b(24, 25, 8, // tri0 + 24, 22, 25, // tri1 + 25, 3, 6, // tri2 + 25, 22, 3 // tri3 + ), + gsSPNTriangles_5b(19, 18, 24, // tri0 + 24, 18, 23, // tri1 + 23, 22, 24, // tri2 + 4, 14, 10 // tri3 + ), + gsSPNTriangles_5b(2, 13, 0, // tri0 + 8, 16, 24, // tri1 + 16, 19, 24, // tri2 + 8, 25, 6 // tri3 + ), + gsSPNTriangles_5b(19, 21, 17, // tri0 + 26, 27, 14, // tri1 + 26, 14, 13, // tri2 + 12, 9, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rcn_1_v[42], 31, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(0, 5, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(4, // tri count + 6, 7, 8, // tri0 + 8, 9, 10, // tri1 + 8, 10, 6 // tri2 + ), + gsSPNTriangles_5b(6, 11, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 253, 255, 255), + gsSPNTrianglesInit_5b(3, // tri count + 12, 13, 14, // tri0 + 12, 15, 16, // tri1 + 14, 15, 12 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPNTrianglesInit_5b(5, // tri count + 17, 18, 19, // tri0 + 19, 20, 21, // tri1 + 19, 22, 17 // tri2 + ), + gsSPNTriangles_5b(19, 21, 23, // tri0 + 23, 22, 19, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetPrimColor(0, 128, 255, 253, 255, 255), + gsSPNTrianglesInit_5b(5, // tri count + 24, 25, 26, // tri0 + 26, 27, 28, // tri1 + 28, 29, 26 // tri2 + ), + gsSPNTriangles_5b(26, 29, 24, // tri0 + 25, 30, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcn_1_v[73], 24, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 2, 5 // tri2 + ), + gsSPNTriangles_5b(1, 0, 6, // tri0 + 7, 4, 5, // tri1 + 4, 3, 2, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(17, // tri count + 8, 9, 10, // tri0 + 11, 10, 12, // tri1 + 10, 11, 8 // tri2 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 14, 16, 17, // tri1 + 14, 17, 18, // tri2 + 11, 19, 20 // tri3 + ), + gsSPNTriangles_5b(20, 8, 11, // tri0 + 17, 21, 18, // tri1 + 19, 11, 22, // tri2 + 15, 14, 18 // tri3 + ), + gsSPNTriangles_5b(15, 18, 12, // tri0 + 22, 18, 21, // tri1 + 12, 22, 11, // tri2 + 12, 10, 15 // tri3 + ), + gsSPNTriangles_5b(18, 22, 12, // tri0 + 20, 23, 8, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx mouth_rcn_model[] = { -gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcn_1_v[0], 5, 0), -gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rcn_1_v[5], 9, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 5, 6, // tri0 - 2, 8, 7, // tri1 - 0, 4, 9 // tri2 -), -gsSPNTriangles_5b( - 1, 10, 3, // tri0 - 4, 3, 11, // tri1 - 2, 0, 12, // tri2 - 1, 2, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcn_1_v[0], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcn_1_v[5], 9, 5), + gsSPNTrianglesInit_5b(7, // tri count + 3, 5, 6, // tri0 + 2, 8, 7, // tri1 + 0, 4, 9 // tri2 + ), + gsSPNTriangles_5b(1, 10, 3, // tri0 + 4, 3, 11, // tri1 + 2, 0, 12, // tri2 + 1, 2, 13 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_rcn_model[] = { -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcn_1_v[131], 4, 0), -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rcn_1_v[135], 16, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 4, 5, // tri0 - 1, 6, 7, // tri1 - 2, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 1, 10, 11, // tri0 - 0, 2, 12, // tri1 - 0, 13, 1, // tri2 - 2, 3, 14 // tri3 -), -gsSPNTriangles_5b( - 3, 1, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 16, 17, 18, // tri0 - 19, 18, 17, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcn_1_v[131], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcn_1_v[135], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 1, 6, 7, // tri1 + 2, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 10, 11, // tri0 + 0, 2, 12, // tri1 + 0, 13, 1, // tri2 + 2, 3, 14 // tri3 + ), + gsSPNTriangles_5b(3, 1, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 19, 18, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_rcn_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcn_1_v[151], 3, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rcn_1_v[154], 11, 3), -gsSPNTrianglesInit_5b( - 7, // tri count - 2, 3, 1, // tri0 - 0, 5, 4, // tri1 - 2, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 8, 9, // tri0 - 0, 10, 11, // tri1 - 2, 0, 12, // tri2 - 0, 1, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcn_1_v[151], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcn_1_v[154], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 2, 3, 1, // tri0 + 0, 5, 4, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 0, 10, 11, // tri1 + 2, 0, 12, // tri2 + 0, 1, 13 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_rcn_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcn_1_v[97], 4, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rcn_1_v[101], 16, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 4, 5, // tri0 - 1, 6, 7, // tri1 - 2, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 1, 10, 11, // tri0 - 2, 0, 12, // tri1 - 1, 13, 0, // tri2 - 3, 2, 14 // tri3 -), -gsSPNTriangles_5b( - 1, 3, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 16, 17, 18, // tri0 - 17, 16, 19, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcn_1_v[97], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcn_1_v[101], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 1, 6, 7, // tri1 + 2, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 10, 11, // tri0 + 2, 0, 12, // tri1 + 1, 13, 0, // tri2 + 3, 2, 14 // tri3 + ), + gsSPNTriangles_5b(1, 3, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_rcn_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcn_1_v[117], 3, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rcn_1_v[120], 11, 3), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 3, 2, // tri0 - 1, 5, 4, // tri1 - 2, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 0, 8, 9, // tri0 - 1, 10, 11, // tri1 - 1, 2, 12, // tri2 - 0, 1, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcn_1_v[117], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcn_1_v[120], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 2, // tri0 + 1, 5, 4, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(0, 8, 9, // tri0 + 1, 10, 11, // tri1 + 1, 2, 12, // tri2 + 0, 1, 13 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_rcn_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcn_1_v[165], 11, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rcn_1_v[176], 13, 11), -gsSPNTrianglesInit_5b( - 9, // tri count - 1, 3, 11, // tri0 - 2, 13, 12, // tri1 - 3, 0, 14 // tri2 -), -gsSPNTriangles_5b( - 0, 2, 15, // tri0 - 5, 16, 17, // tri1 - 5, 1, 18, // tri2 - 1, 19, 20 // tri3 -), -gsSPNTriangles_5b( - 9, 21, 22, // tri0 - 2, 9, 23, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&rcn_1_v[189], 20, 11), -gsSPNTrianglesInit_5b( - 8, // tri count - 10, 11, 4, // tri0 - 6, 12, 13, // tri1 - 7, 6, 14 // tri2 -), -gsSPNTriangles_5b( - 8, 15, 16, // tri0 - 7, 18, 17, // tri1 - 7, 19, 10, // tri2 - 8, 4, 20 // tri3 -), -gsSPNTriangles_5b( - 4, 21, 22, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 23, 24, 25, // tri0 - 25, 26, 27, // tri1 - 23, 28, 24 // tri2 -), -gsSPNTriangles_5b( - 26, 29, 27, // tri0 - 25, 30, 23, // tri1 - 27, 30, 25, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&rcn_1_v[209], 12, 0), -gsSPNTrianglesInit_5b( - 12, // tri count - 0, 1, 2, // tri0 - 3, 4, 1, // tri1 - 5, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 0, 2, 6, // tri0 - 0, 5, 8, // tri1 - 3, 0, 8, // tri2 - 9, 8, 5 // tri3 -), -gsSPNTriangles_5b( - 3, 1, 0, // tri0 - 10, 8, 9, // tri1 - 8, 11, 3, // tri2 - 8, 10, 11 // tri3 -), -gsSPNTriangles_5b( - 0, 6, 5, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcn_1_v[165], 11, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcn_1_v[176], 13, 11), + gsSPNTrianglesInit_5b(9, // tri count + 1, 3, 11, // tri0 + 2, 13, 12, // tri1 + 3, 0, 14 // tri2 + ), + gsSPNTriangles_5b(0, 2, 15, // tri0 + 5, 16, 17, // tri1 + 5, 1, 18, // tri2 + 1, 19, 20 // tri3 + ), + gsSPNTriangles_5b(9, 21, 22, // tri0 + 2, 9, 23, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rcn_1_v[189], 20, 11), + gsSPNTrianglesInit_5b(8, // tri count + 10, 11, 4, // tri0 + 6, 12, 13, // tri1 + 7, 6, 14 // tri2 + ), + gsSPNTriangles_5b(8, 15, 16, // tri0 + 7, 18, 17, // tri1 + 7, 19, 10, // tri2 + 8, 4, 20 // tri3 + ), + gsSPNTriangles_5b(4, 21, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 23, 24, 25, // tri0 + 25, 26, 27, // tri1 + 23, 28, 24 // tri2 + ), + gsSPNTriangles_5b(26, 29, 27, // tri0 + 25, 30, 23, // tri1 + 27, 30, 25, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rcn_1_v[209], 12, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(0, 2, 6, // tri0 + 0, 5, 8, // tri1 + 3, 0, 8, // tri2 + 9, 8, 5 // tri3 + ), + gsSPNTriangles_5b(3, 1, 0, // tri0 + 10, 8, 9, // tri1 + 8, 11, 3, // tri2 + 8, 10, 11 // tri3 + ), + gsSPNTriangles_5b(0, 6, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail1_rcn_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcn_1_v[246], 4, 0), -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rcn_1_v[250], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 1, 4, 5, // tri0 - 1, 0, 6, // tri1 - 2, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 1, 9, 10, // tri0 - 2, 1, 11, // tri1 - 0, 12, 13, // tri2 - 0, 3, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcn_1_v[246], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcn_1_v[250], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 1, 4, 5, // tri0 + 1, 0, 6, // tri1 + 2, 7, 8 // tri2 + ), + gsSPNTriangles_5b(1, 9, 10, // tri0 + 2, 1, 11, // tri1 + 0, 12, 13, // tri2 + 0, 3, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail2_rcn_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcn_1_v[221], 4, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rcn_1_v[225], 21, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 4, 5, // tri0 - 0, 3, 6, // tri1 - 1, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 0, 9, // tri0 - 1, 2, 10, // tri1 - 0, 11, 12, // tri2 - 3, 1, 13 // tri3 -), -gsSPNTriangles_5b( - 2, 14, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 12, // tri count - 16, 17, 18, // tri0 - 19, 17, 16, // tri1 - 20, 21, 22 // tri2 -), -gsSPNTriangles_5b( - 20, 23, 16, // tri0 - 18, 21, 16, // tri1 - 16, 23, 19, // tri2 - 23, 22, 24 // tri3 -), -gsSPNTriangles_5b( - 24, 22, 21, // tri0 - 16, 21, 20, // tri1 - 24, 19, 23, // tri2 - 22, 23, 20 // tri3 -), -gsSPNTriangles_5b( - 21, 18, 24, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcn_1_v[221], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcn_1_v[225], 21, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 0, 3, 6, // tri1 + 1, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 0, 9, // tri0 + 1, 2, 10, // tri1 + 0, 11, 12, // tri2 + 3, 1, 13 // tri3 + ), + gsSPNTriangles_5b(2, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(12, // tri count + 16, 17, 18, // tri0 + 19, 17, 16, // tri1 + 20, 21, 22 // tri2 + ), + gsSPNTriangles_5b(20, 23, 16, // tri0 + 18, 21, 16, // tri1 + 16, 23, 19, // tri2 + 23, 22, 24 // tri3 + ), + gsSPNTriangles_5b(24, 22, 21, // tri0 + 16, 21, 20, // tri1 + 24, 19, 23, // tri2 + 22, 23, 20 // tri3 + ), + gsSPNTriangles_5b(21, 18, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_rcn_model[] = { -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcn_1_v[290], 5, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rcn_1_v[295], 15, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 0, 5, // tri0 - 0, 7, 6, // tri1 - 2, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 0, 1, 10, // tri0 - 1, 2, 11, // tri1 - 2, 4, 12, // tri2 - 1, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 15, 16, 17, // tri0 - 18, 16, 15, // tri1 - 19, 17, 16 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcn_1_v[290], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcn_1_v[295], 15, 5), + gsSPNTrianglesInit_5b(7, // tri count + 3, 0, 5, // tri0 + 0, 7, 6, // tri1 + 2, 9, 8 // tri2 + ), + gsSPNTriangles_5b(0, 1, 10, // tri0 + 1, 2, 11, // tri1 + 2, 4, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 16, 15, // tri1 + 19, 17, 16 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_rcn_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcn_1_v[310], 9, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 1, 6, 2 // tri2 -), -gsSPNTriangles_5b( - 7, 5, 4, // tri0 - 7, 4, 0, // tri1 - 0, 2, 7, // tri2 - 5, 8, 3 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcn_1_v[310], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 6, 2 // tri2 + ), + gsSPNTriangles_5b(7, 5, 4, // tri0 + 7, 4, 0, // tri1 + 0, 2, 7, // tri2 + 5, 8, 3 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_rcn_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcn_1_v[261], 5, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rcn_1_v[266], 15, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 3, 5, // tri0 - 0, 7, 6, // tri1 - 2, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 10, // tri0 - 2, 1, 11, // tri1 - 4, 2, 12, // tri2 - 1, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 15, 16, 17, // tri0 - 17, 16, 18, // tri1 - 16, 15, 19 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcn_1_v[261], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcn_1_v[266], 15, 5), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 5, // tri0 + 0, 7, 6, // tri1 + 2, 9, 8 // tri2 + ), + gsSPNTriangles_5b(1, 0, 10, // tri0 + 2, 1, 11, // tri1 + 4, 2, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 17, 16, 18, // tri1 + 16, 15, 19 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_rcn_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcn_1_v[281], 9, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 0, 6, 1 // tri2 -), -gsSPNTriangles_5b( - 4, 3, 7, // tri0 - 2, 4, 7, // tri1 - 7, 0, 2, // tri2 - 5, 8, 3 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcn_1_v[281], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 1 // tri2 + ), + gsSPNTriangles_5b(4, 3, 7, // tri0 + 2, 4, 7, // tri1 + 7, 0, 2, // tri2 + 5, 8, 3 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx base_rcn_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 48, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcn_1_v[319], 24, 0), -gsSPNTrianglesInit_5b( - 12, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 0, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 2, 8, 6, // tri0 - 5, 9, 10, // tri1 - 5, 10, 3, // tri2 - 6, 0, 2 // tri3 -), -gsSPNTriangles_5b( - 11, 7, 12, // tri0 - 12, 3, 10, // tri1 - 7, 11, 13, // tri2 - 10, 11, 12 // tri3 -), -gsSPNTriangles_5b( - 13, 0, 7, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 8, // tri count - 14, 15, 16, // tri0 - 17, 18, 19, // tri1 - 20, 14, 21 // tri2 -), -gsSPNTriangles_5b( - 20, 22, 18, // tri0 - 18, 17, 20, // tri1 - 21, 22, 20, // tri2 - 16, 21, 14 // tri3 -), -gsSPNTriangles_5b( - 19, 23, 17, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&rcn_1_v[343], 14, 0), -gsSPNTrianglesInit_5b( - 17, // tri count - 0, 1, 2, // tri0 - 3, 4, 0, // tri1 - 5, 6, 1 // tri2 -), -gsSPNTriangles_5b( - 6, 7, 8, // tri0 - 5, 7, 6, // tri1 - 4, 9, 5, // tri2 - 5, 9, 7 // tri3 -), -gsSPNTriangles_5b( - 9, 10, 11, // tri0 - 0, 4, 1, // tri1 - 3, 9, 4, // tri2 - 9, 3, 10 // tri3 -), -gsSPNTriangles_5b( - 11, 7, 9, // tri0 - 11, 8, 7, // tri1 - 8, 12, 6, // tri2 - 6, 13, 2 // tri3 -), -gsSPNTriangles_5b( - 13, 6, 12, // tri0 - 6, 2, 1, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 48, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcn_1_v[319], 24, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 7 // tri2 + ), + gsSPNTriangles_5b(2, 8, 6, // tri0 + 5, 9, 10, // tri1 + 5, 10, 3, // tri2 + 6, 0, 2 // tri3 + ), + gsSPNTriangles_5b(11, 7, 12, // tri0 + 12, 3, 10, // tri1 + 7, 11, 13, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(13, 0, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(8, // tri count + 14, 15, 16, // tri0 + 17, 18, 19, // tri1 + 20, 14, 21 // tri2 + ), + gsSPNTriangles_5b(20, 22, 18, // tri0 + 18, 17, 20, // tri1 + 21, 22, 20, // tri2 + 16, 21, 14 // tri3 + ), + gsSPNTriangles_5b(19, 23, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rcn_1_v[343], 14, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 6, 1 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 5, 7, 6, // tri1 + 4, 9, 5, // tri2 + 5, 9, 7 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 0, 4, 1, // tri1 + 3, 9, 4, // tri2 + 9, 3, 10 // tri3 + ), + gsSPNTriangles_5b(11, 7, 9, // tri0 + 11, 8, 7, // tri1 + 8, 12, 6, // tri2 + 6, 13, 2 // tri3 + ), + gsSPNTriangles_5b(13, 6, 12, // tri0 + 6, 2, 1, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_rcn_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -746,4 +662,4 @@ static cKF_Joint_R_c cKF_je_r_rcn_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_rcn_1 = { 26, 14, cKF_je_r_rcn_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_rcn_1 = { 26, 14, cKF_je_r_rcn_1_tbl }; diff --git a/src/data/npc/model/mdl/rcs_1.c b/src/data/npc/model/mdl/rcs_1.c index 90680f4a..5c3b0965 100644 --- a/src/data/npc/model/mdl/rcs_1.c +++ b/src/data/npc/model/mdl/rcs_1.c @@ -6,733 +6,646 @@ static Vtx rcs_1_v[] = { }; static Gfx head_rcs_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcs_1_v[14], 28, 0), -gsSPNTrianglesInit_5b( - 39, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 0, 9, 1, // tri0 - 10, 5, 4, // tri1 - 5, 6, 3, // tri2 - 0, 4, 11 // tri3 -), -gsSPNTriangles_5b( - 0, 11, 12, // tri0 - 4, 3, 11, // tri1 - 13, 14, 4, // tri2 - 13, 4, 0 // tri3 -), -gsSPNTriangles_5b( - 8, 15, 16, // tri0 - 17, 18, 19, // tri1 - 15, 8, 7, // tri2 - 20, 21, 19 // tri3 -), -gsSPNTriangles_5b( - 12, 11, 22, // tri0 - 12, 22, 23, // tri1 - 22, 11, 3, // tri2 - 23, 9, 12 // tri3 -), -gsSPNTriangles_5b( - 9, 23, 18, // tri0 - 9, 18, 17, // tri1 - 1, 9, 17, // tri2 - 16, 20, 19 // tri3 -), -gsSPNTriangles_5b( - 24, 25, 8, // tri0 - 24, 22, 25, // tri1 - 25, 3, 6, // tri2 - 25, 22, 3 // tri3 -), -gsSPNTriangles_5b( - 19, 18, 24, // tri0 - 24, 18, 23, // tri1 - 23, 22, 24, // tri2 - 4, 14, 10 // tri3 -), -gsSPNTriangles_5b( - 2, 13, 0, // tri0 - 8, 16, 24, // tri1 - 16, 19, 24, // tri2 - 8, 25, 6 // tri3 -), -gsSPNTriangles_5b( - 19, 21, 17, // tri0 - 26, 27, 14, // tri1 - 26, 14, 13, // tri2 - 12, 9, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&rcs_1_v[42], 31, 0), -gsSPNTrianglesInit_5b( - 4, // tri count - 0, 1, 2, // tri0 - 2, 3, 4, // tri1 - 2, 4, 0 // tri2 -), -gsSPNTriangles_5b( - 0, 5, 1, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 4, // tri count - 6, 7, 8, // tri0 - 8, 9, 10, // tri1 - 8, 10, 6 // tri2 -), -gsSPNTriangles_5b( - 6, 11, 7, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 253, 255, 255), -gsSPNTrianglesInit_5b( - 3, // tri count - 12, 13, 14, // tri0 - 12, 15, 16, // tri1 - 14, 15, 12 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPNTrianglesInit_5b( - 5, // tri count - 17, 18, 19, // tri0 - 19, 20, 21, // tri1 - 19, 22, 17 // tri2 -), -gsSPNTriangles_5b( - 19, 21, 23, // tri0 - 23, 22, 19, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPSetPrimColor(0, 128, 255, 253, 255, 255), -gsSPNTrianglesInit_5b( - 5, // tri count - 24, 25, 26, // tri0 - 26, 27, 28, // tri1 - 28, 29, 26 // tri2 -), -gsSPNTriangles_5b( - 26, 29, 24, // tri0 - 25, 30, 26, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rcs_1_v[73], 24, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 4, 2, 5 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 6, // tri0 - 7, 4, 5, // tri1 - 4, 3, 2, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 17, // tri count - 8, 9, 10, // tri0 - 11, 10, 12, // tri1 - 10, 11, 8 // tri2 -), -gsSPNTriangles_5b( - 13, 14, 15, // tri0 - 14, 16, 17, // tri1 - 14, 17, 18, // tri2 - 11, 19, 20 // tri3 -), -gsSPNTriangles_5b( - 20, 8, 11, // tri0 - 17, 21, 18, // tri1 - 19, 11, 22, // tri2 - 15, 14, 18 // tri3 -), -gsSPNTriangles_5b( - 15, 18, 12, // tri0 - 22, 18, 21, // tri1 - 12, 22, 11, // tri2 - 12, 10, 15 // tri3 -), -gsSPNTriangles_5b( - 18, 22, 12, // tri0 - 20, 23, 8, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcs_1_v[14], 28, 0), + gsSPNTrianglesInit_5b(39, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(0, 9, 1, // tri0 + 10, 5, 4, // tri1 + 5, 6, 3, // tri2 + 0, 4, 11 // tri3 + ), + gsSPNTriangles_5b(0, 11, 12, // tri0 + 4, 3, 11, // tri1 + 13, 14, 4, // tri2 + 13, 4, 0 // tri3 + ), + gsSPNTriangles_5b(8, 15, 16, // tri0 + 17, 18, 19, // tri1 + 15, 8, 7, // tri2 + 20, 21, 19 // tri3 + ), + gsSPNTriangles_5b(12, 11, 22, // tri0 + 12, 22, 23, // tri1 + 22, 11, 3, // tri2 + 23, 9, 12 // tri3 + ), + gsSPNTriangles_5b(9, 23, 18, // tri0 + 9, 18, 17, // tri1 + 1, 9, 17, // tri2 + 16, 20, 19 // tri3 + ), + gsSPNTriangles_5b(24, 25, 8, // tri0 + 24, 22, 25, // tri1 + 25, 3, 6, // tri2 + 25, 22, 3 // tri3 + ), + gsSPNTriangles_5b(19, 18, 24, // tri0 + 24, 18, 23, // tri1 + 23, 22, 24, // tri2 + 4, 14, 10 // tri3 + ), + gsSPNTriangles_5b(2, 13, 0, // tri0 + 8, 16, 24, // tri1 + 16, 19, 24, // tri2 + 8, 25, 6 // tri3 + ), + gsSPNTriangles_5b(19, 21, 17, // tri0 + 26, 27, 14, // tri1 + 26, 14, 13, // tri2 + 12, 9, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rcs_1_v[42], 31, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(0, 5, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(4, // tri count + 6, 7, 8, // tri0 + 8, 9, 10, // tri1 + 8, 10, 6 // tri2 + ), + gsSPNTriangles_5b(6, 11, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 253, 255, 255), + gsSPNTrianglesInit_5b(3, // tri count + 12, 13, 14, // tri0 + 12, 15, 16, // tri1 + 14, 15, 12 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPNTrianglesInit_5b(5, // tri count + 17, 18, 19, // tri0 + 19, 20, 21, // tri1 + 19, 22, 17 // tri2 + ), + gsSPNTriangles_5b(19, 21, 23, // tri0 + 23, 22, 19, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetPrimColor(0, 128, 255, 253, 255, 255), + gsSPNTrianglesInit_5b(5, // tri count + 24, 25, 26, // tri0 + 26, 27, 28, // tri1 + 28, 29, 26 // tri2 + ), + gsSPNTriangles_5b(26, 29, 24, // tri0 + 25, 30, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcs_1_v[73], 24, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 2, 5 // tri2 + ), + gsSPNTriangles_5b(1, 0, 6, // tri0 + 7, 4, 5, // tri1 + 4, 3, 2, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(17, // tri count + 8, 9, 10, // tri0 + 11, 10, 12, // tri1 + 10, 11, 8 // tri2 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 14, 16, 17, // tri1 + 14, 17, 18, // tri2 + 11, 19, 20 // tri3 + ), + gsSPNTriangles_5b(20, 8, 11, // tri0 + 17, 21, 18, // tri1 + 19, 11, 22, // tri2 + 15, 14, 18 // tri3 + ), + gsSPNTriangles_5b(15, 18, 12, // tri0 + 22, 18, 21, // tri1 + 12, 22, 11, // tri2 + 12, 10, 15 // tri3 + ), + gsSPNTriangles_5b(18, 22, 12, // tri0 + 20, 23, 8, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx mouth_rcs_model[] = { -gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcs_1_v[0], 5, 0), -gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rcs_1_v[5], 9, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 5, 6, // tri0 - 2, 8, 7, // tri1 - 0, 4, 9 // tri2 -), -gsSPNTriangles_5b( - 1, 10, 3, // tri0 - 4, 3, 11, // tri1 - 2, 0, 12, // tri2 - 1, 2, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcs_1_v[0], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcs_1_v[5], 9, 5), + gsSPNTrianglesInit_5b(7, // tri count + 3, 5, 6, // tri0 + 2, 8, 7, // tri1 + 0, 4, 9 // tri2 + ), + gsSPNTriangles_5b(1, 10, 3, // tri0 + 4, 3, 11, // tri1 + 2, 0, 12, // tri2 + 1, 2, 13 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_rcs_model[] = { -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcs_1_v[131], 4, 0), -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rcs_1_v[135], 16, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 4, 5, // tri0 - 1, 6, 7, // tri1 - 2, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 1, 10, 11, // tri0 - 0, 2, 12, // tri1 - 0, 13, 1, // tri2 - 2, 3, 14 // tri3 -), -gsSPNTriangles_5b( - 3, 1, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 16, 17, 18, // tri0 - 19, 18, 17, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcs_1_v[131], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcs_1_v[135], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 1, 6, 7, // tri1 + 2, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 10, 11, // tri0 + 0, 2, 12, // tri1 + 0, 13, 1, // tri2 + 2, 3, 14 // tri3 + ), + gsSPNTriangles_5b(3, 1, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 19, 18, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_rcs_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcs_1_v[151], 3, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rcs_1_v[154], 11, 3), -gsSPNTrianglesInit_5b( - 7, // tri count - 2, 3, 1, // tri0 - 0, 5, 4, // tri1 - 2, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 8, 9, // tri0 - 0, 10, 11, // tri1 - 2, 0, 12, // tri2 - 0, 1, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcs_1_v[151], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcs_1_v[154], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 2, 3, 1, // tri0 + 0, 5, 4, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 0, 10, 11, // tri1 + 2, 0, 12, // tri2 + 0, 1, 13 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_rcs_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcs_1_v[97], 4, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rcs_1_v[101], 16, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 4, 5, // tri0 - 1, 6, 7, // tri1 - 2, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 1, 10, 11, // tri0 - 2, 0, 12, // tri1 - 1, 13, 0, // tri2 - 3, 2, 14 // tri3 -), -gsSPNTriangles_5b( - 1, 3, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 16, 17, 18, // tri0 - 17, 16, 19, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcs_1_v[97], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcs_1_v[101], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 1, 6, 7, // tri1 + 2, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 10, 11, // tri0 + 2, 0, 12, // tri1 + 1, 13, 0, // tri2 + 3, 2, 14 // tri3 + ), + gsSPNTriangles_5b(1, 3, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_rcs_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcs_1_v[117], 3, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rcs_1_v[120], 11, 3), -gsSPNTrianglesInit_5b( - 7, // tri count - 1, 3, 2, // tri0 - 0, 5, 4, // tri1 - 2, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 8, 9, // tri0 - 0, 10, 11, // tri1 - 0, 2, 12, // tri2 - 1, 0, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcs_1_v[117], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcs_1_v[120], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 1, 3, 2, // tri0 + 0, 5, 4, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 0, 10, 11, // tri1 + 0, 2, 12, // tri2 + 1, 0, 13 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_rcs_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcs_1_v[165], 11, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rcs_1_v[176], 12, 11), -gsSPNTrianglesInit_5b( - 8, // tri count - 10, 11, 9, // tri0 - 8, 12, 10, // tri1 - 9, 13, 14 // tri2 -), -gsSPNTriangles_5b( - 3, 15, 16, // tri0 - 8, 3, 17, // tri1 - 5, 18, 19, // tri2 - 8, 21, 20 // tri3 -), -gsSPNTriangles_5b( - 5, 9, 22, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&rcs_1_v[188], 13, 11), -gsSPNTrianglesInit_5b( - 9, // tri count - 2, 11, 12, // tri0 - 2, 1, 13, // tri1 - 7, 0, 14 // tri2 -), -gsSPNTriangles_5b( - 1, 7, 15, // tri0 - 0, 4, 16, // tri1 - 6, 17, 18, // tri2 - 4, 6, 19 // tri3 -), -gsSPNTriangles_5b( - 7, 20, 21, // tri0 - 0, 22, 23, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&rcs_1_v[201], 24, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 2, // tri0 - 2, 1, 3, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 2, 3, 5, // tri0 - 0, 7, 1, // tri1 - 2, 5, 4, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 8, 9, 10, // tri0 - 11, 12, 13, // tri1 - 11, 8, 10 // tri2 -), -gsSPNTriangles_5b( - 10, 12, 11, // tri0 - 13, 14, 11, // tri1 - 13, 15, 14, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 6, // tri count - 16, 17, 18, // tri0 - 19, 18, 20, // tri1 - 21, 20, 18 // tri2 -), -gsSPNTriangles_5b( - 22, 18, 19, // tri0 - 18, 23, 16, // tri1 - 18, 22, 23, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcs_1_v[165], 11, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcs_1_v[176], 12, 11), + gsSPNTrianglesInit_5b(8, // tri count + 10, 11, 9, // tri0 + 8, 12, 10, // tri1 + 9, 13, 14 // tri2 + ), + gsSPNTriangles_5b(3, 15, 16, // tri0 + 8, 3, 17, // tri1 + 5, 18, 19, // tri2 + 8, 21, 20 // tri3 + ), + gsSPNTriangles_5b(5, 9, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rcs_1_v[188], 13, 11), + gsSPNTrianglesInit_5b(9, // tri count + 2, 11, 12, // tri0 + 2, 1, 13, // tri1 + 7, 0, 14 // tri2 + ), + gsSPNTriangles_5b(1, 7, 15, // tri0 + 0, 4, 16, // tri1 + 6, 17, 18, // tri2 + 4, 6, 19 // tri3 + ), + gsSPNTriangles_5b(7, 20, 21, // tri0 + 0, 22, 23, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rcs_1_v[201], 24, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(2, 3, 5, // tri0 + 0, 7, 1, // tri1 + 2, 5, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 11, 8, 10 // tri2 + ), + gsSPNTriangles_5b(10, 12, 11, // tri0 + 13, 14, 11, // tri1 + 13, 15, 14, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(6, // tri count + 16, 17, 18, // tri0 + 19, 18, 20, // tri1 + 21, 20, 18 // tri2 + ), + gsSPNTriangles_5b(22, 18, 19, // tri0 + 18, 23, 16, // tri1 + 18, 22, 23, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail1_rcs_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcs_1_v[250], 4, 0), -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rcs_1_v[254], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 1, 4, 5, // tri0 - 1, 0, 6, // tri1 - 2, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 1, 9, 10, // tri0 - 2, 1, 11, // tri1 - 0, 12, 13, // tri2 - 0, 3, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcs_1_v[250], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcs_1_v[254], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 1, 4, 5, // tri0 + 1, 0, 6, // tri1 + 2, 7, 8 // tri2 + ), + gsSPNTriangles_5b(1, 9, 10, // tri0 + 2, 1, 11, // tri1 + 0, 12, 13, // tri2 + 0, 3, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail2_rcs_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcs_1_v[225], 4, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rcs_1_v[229], 21, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 4, 5, // tri0 - 0, 3, 6, // tri1 - 1, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 0, 9, // tri0 - 1, 2, 10, // tri1 - 0, 11, 12, // tri2 - 3, 1, 13 // tri3 -), -gsSPNTriangles_5b( - 2, 14, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 12, // tri count - 16, 17, 18, // tri0 - 19, 17, 16, // tri1 - 20, 21, 22 // tri2 -), -gsSPNTriangles_5b( - 20, 23, 16, // tri0 - 18, 21, 16, // tri1 - 16, 23, 19, // tri2 - 23, 22, 24 // tri3 -), -gsSPNTriangles_5b( - 24, 22, 21, // tri0 - 16, 21, 20, // tri1 - 24, 19, 23, // tri2 - 22, 23, 20 // tri3 -), -gsSPNTriangles_5b( - 21, 18, 24, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcs_1_v[225], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcs_1_v[229], 21, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 0, 3, 6, // tri1 + 1, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 0, 9, // tri0 + 1, 2, 10, // tri1 + 0, 11, 12, // tri2 + 3, 1, 13 // tri3 + ), + gsSPNTriangles_5b(2, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(12, // tri count + 16, 17, 18, // tri0 + 19, 17, 16, // tri1 + 20, 21, 22 // tri2 + ), + gsSPNTriangles_5b(20, 23, 16, // tri0 + 18, 21, 16, // tri1 + 16, 23, 19, // tri2 + 23, 22, 24 // tri3 + ), + gsSPNTriangles_5b(24, 22, 21, // tri0 + 16, 21, 20, // tri1 + 24, 19, 23, // tri2 + 22, 23, 20 // tri3 + ), + gsSPNTriangles_5b(21, 18, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_rcs_model[] = { -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcs_1_v[294], 5, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rcs_1_v[299], 15, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 0, 5, // tri0 - 0, 7, 6, // tri1 - 2, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 0, 1, 10, // tri0 - 1, 2, 11, // tri1 - 2, 4, 12, // tri2 - 1, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 15, 16, 17, // tri0 - 18, 16, 15, // tri1 - 19, 17, 16 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcs_1_v[294], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcs_1_v[299], 15, 5), + gsSPNTrianglesInit_5b(7, // tri count + 3, 0, 5, // tri0 + 0, 7, 6, // tri1 + 2, 9, 8 // tri2 + ), + gsSPNTriangles_5b(0, 1, 10, // tri0 + 1, 2, 11, // tri1 + 2, 4, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 16, 15, // tri1 + 19, 17, 16 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_rcs_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcs_1_v[314], 9, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 1, 6, 2 // tri2 -), -gsSPNTriangles_5b( - 7, 5, 4, // tri0 - 7, 4, 0, // tri1 - 0, 2, 7, // tri2 - 5, 8, 3 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcs_1_v[314], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 6, 2 // tri2 + ), + gsSPNTriangles_5b(7, 5, 4, // tri0 + 7, 4, 0, // tri1 + 0, 2, 7, // tri2 + 5, 8, 3 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_rcs_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcs_1_v[265], 5, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rcs_1_v[270], 15, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 3, 5, // tri0 - 0, 7, 6, // tri1 - 2, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 10, // tri0 - 2, 1, 11, // tri1 - 4, 2, 12, // tri2 - 1, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 15, 16, 17, // tri0 - 17, 16, 18, // tri1 - 16, 15, 19 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcs_1_v[265], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcs_1_v[270], 15, 5), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 5, // tri0 + 0, 7, 6, // tri1 + 2, 9, 8 // tri2 + ), + gsSPNTriangles_5b(1, 0, 10, // tri0 + 2, 1, 11, // tri1 + 4, 2, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 17, 16, 18, // tri1 + 16, 15, 19 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_rcs_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcs_1_v[285], 9, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 0, 6, 1 // tri2 -), -gsSPNTriangles_5b( - 4, 3, 7, // tri0 - 2, 4, 7, // tri1 - 7, 0, 2, // tri2 - 5, 8, 3 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcs_1_v[285], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 1 // tri2 + ), + gsSPNTriangles_5b(4, 3, 7, // tri0 + 2, 4, 7, // tri1 + 7, 0, 2, // tri2 + 5, 8, 3 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx base_rcs_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 48, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rcs_1_v[323], 24, 0), -gsSPNTrianglesInit_5b( - 12, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 9, 10, 7, // tri0 - 2, 11, 0, // tri1 - 6, 8, 12, // tri2 - 12, 13, 6 // tri3 -), -gsSPNTriangles_5b( - 2, 8, 11, // tri0 - 11, 3, 0, // tri1 - 8, 2, 12, // tri2 - 0, 3, 5 // tri3 -), -gsSPNTriangles_5b( - 9, 7, 6, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 8, // tri count - 14, 15, 16, // tri0 - 17, 18, 16, // tri1 - 16, 15, 17 // tri2 -), -gsSPNTriangles_5b( - 16, 19, 14, // tri0 - 18, 17, 20, // tri1 - 19, 21, 22, // tri2 - 20, 23, 18 // tri3 -), -gsSPNTriangles_5b( - 22, 14, 19, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&rcs_1_v[347], 21, 0), -gsSPNTrianglesInit_5b( - 29, // tri count - 0, 1, 2, // tri0 - 3, 4, 0, // tri1 - 0, 4, 1 // tri2 -), -gsSPNTriangles_5b( - 5, 6, 7, // tri0 - 8, 3, 9, // tri1 - 7, 10, 4, // tri2 - 11, 12, 13 // tri3 -), -gsSPNTriangles_5b( - 4, 5, 7, // tri0 - 11, 13, 2, // tri1 - 2, 13, 9, // tri2 - 2, 14, 11 // tri3 -), -gsSPNTriangles_5b( - 15, 14, 2, // tri0 - 10, 15, 1, // tri1 - 10, 1, 4, // tri2 - 5, 4, 3 // tri3 -), -gsSPNTriangles_5b( - 8, 9, 13, // tri0 - 5, 3, 8, // tri1 - 0, 2, 9, // tri2 - 2, 1, 15 // tri3 -), -gsSPNTriangles_5b( - 16, 17, 15, // tri0 - 16, 18, 17, // tri1 - 16, 15, 10, // tri2 - 18, 16, 19 // tri3 -), -gsSPNTriangles_5b( - 14, 20, 11, // tri0 - 17, 20, 14, // tri1 - 17, 18, 20, // tri2 - 15, 17, 14 // tri3 -), -gsSPNTriangles_5b( - 19, 10, 7, // tri0 - 19, 16, 10, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 48, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcs_1_v[323], 24, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 7, // tri0 + 2, 11, 0, // tri1 + 6, 8, 12, // tri2 + 12, 13, 6 // tri3 + ), + gsSPNTriangles_5b(2, 8, 11, // tri0 + 11, 3, 0, // tri1 + 8, 2, 12, // tri2 + 0, 3, 5 // tri3 + ), + gsSPNTriangles_5b(9, 7, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(8, // tri count + 14, 15, 16, // tri0 + 17, 18, 16, // tri1 + 16, 15, 17 // tri2 + ), + gsSPNTriangles_5b(16, 19, 14, // tri0 + 18, 17, 20, // tri1 + 19, 21, 22, // tri2 + 20, 23, 18 // tri3 + ), + gsSPNTriangles_5b(22, 14, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rcs_1_v[347], 21, 0), + gsSPNTrianglesInit_5b(29, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 3, 9, // tri1 + 7, 10, 4, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(4, 5, 7, // tri0 + 11, 13, 2, // tri1 + 2, 13, 9, // tri2 + 2, 14, 11 // tri3 + ), + gsSPNTriangles_5b(15, 14, 2, // tri0 + 10, 15, 1, // tri1 + 10, 1, 4, // tri2 + 5, 4, 3 // tri3 + ), + gsSPNTriangles_5b(8, 9, 13, // tri0 + 5, 3, 8, // tri1 + 0, 2, 9, // tri2 + 2, 1, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 16, 18, 17, // tri1 + 16, 15, 10, // tri2 + 18, 16, 19 // tri3 + ), + gsSPNTriangles_5b(14, 20, 11, // tri0 + 17, 20, 14, // tri1 + 17, 18, 20, // tri2 + 15, 17, 14 // tri3 + ), + gsSPNTriangles_5b(19, 10, 7, // tri0 + 19, 16, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_rcs_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -764,4 +677,4 @@ static cKF_Joint_R_c cKF_je_r_rcs_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_rcs_1 = { 26, 14, cKF_je_r_rcs_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_rcs_1 = { 26, 14, cKF_je_r_rcs_1_tbl }; diff --git a/src/data/npc/model/mdl/rhn_1.c b/src/data/npc/model/mdl/rhn_1.c index f4942b35..b391fe58 100644 --- a/src/data/npc/model/mdl/rhn_1.c +++ b/src/data/npc/model/mdl/rhn_1.c @@ -6,862 +6,759 @@ static Vtx rhn_1_v[] = { }; static Gfx head_rhn_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rhn_1_v[21], 8, 0), -gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 252, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rhn_1_v[29], 19, 8), -gsSPNTrianglesInit_5b( - 13, // tri count - 0, 8, 6, // tri0 - 5, 9, 4, // tri1 - 3, 10, 5 // tri2 -), -gsSPNTriangles_5b( - 0, 11, 12, // tri0 - 4, 13, 14, // tri1 - 2, 15, 16, // tri2 - 3, 17, 18 // tri3 -), -gsSPNTriangles_5b( - 5, 19, 20, // tri0 - 0, 4, 21, // tri1 - 3, 1, 22, // tri2 - 7, 23, 2 // tri3 -), -gsSPNTriangles_5b( - 6, 24, 25, // tri0 - 6, 26, 7, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&rhn_1_v[48], 27, 0), -gsSPNTrianglesInit_5b( - 2, // tri count - 0, 1, 2, // tri0 - 2, 3, 4, // tri1 - 0, 0, 0 // tri2 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 5, 6, 7, // tri0 - 8, 9, 5, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 15, // tri count - 10, 11, 12, // tri0 - 13, 14, 15, // tri1 - 16, 17, 14 // tri2 -), -gsSPNTriangles_5b( - 18, 19, 20, // tri0 - 11, 21, 14, // tri1 - 19, 13, 22, // tri2 - 23, 22, 13 // tri3 -), -gsSPNTriangles_5b( - 24, 17, 16, // tri0 - 14, 21, 25, // tri1 - 15, 26, 13, // tri2 - 13, 26, 23 // tri3 -), -gsSPNTriangles_5b( - 25, 15, 14, // tri0 - 14, 13, 16, // tri1 - 14, 12, 11, // tri2 - 22, 20, 19 // tri3 -), -gsSPVertex(&rhn_1_v[75], 17, 0), -gsSPNTrianglesInit_5b( - 15, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 1, 9, // tri0 - 10, 11, 12, // tri1 - 9, 8, 2, // tri2 - 2, 13, 0 // tri3 -), -gsSPNTriangles_5b( - 8, 9, 6, // tri0 - 8, 4, 3, // tri1 - 11, 10, 8, // tri2 - 3, 2, 8 // tri3 -), -gsSPNTriangles_5b( - 14, 15, 16, // tri0 - 8, 7, 11, // tri1 - 13, 2, 15, // tri2 - 15, 14, 13 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_MIRROR, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 124), -gsSPVertex(&rhn_1_v[92], 29, 0), -gsSPNTrianglesInit_5b( - 39, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 2, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 4, 3, 0, // tri0 - 4, 0, 7, // tri1 - 4, 8, 5, // tri2 - 4, 9, 8 // tri3 -), -gsSPNTriangles_5b( - 10, 11, 12, // tri0 - 13, 14, 12, // tri1 - 15, 10, 6, // tri2 - 8, 13, 16 // tri3 -), -gsSPNTriangles_5b( - 6, 9, 7, // tri0 - 17, 18, 6, // tri1 - 10, 17, 6, // tri2 - 18, 17, 19 // tri3 -), -gsSPNTriangles_5b( - 10, 14, 19, // tri0 - 20, 21, 22, // tri1 - 12, 14, 10, // tri2 - 18, 9, 6 // tri3 -), -gsSPNTriangles_5b( - 2, 7, 0, // tri0 - 22, 12, 11, // tri1 - 19, 17, 10, // tri2 - 6, 2, 15 // tri3 -), -gsSPNTriangles_5b( - 8, 18, 23, // tri0 - 8, 23, 13, // tri1 - 24, 25, 26, // tri2 - 19, 23, 18 // tri3 -), -gsSPNTriangles_5b( - 19, 14, 13, // tri0 - 25, 24, 22, // tri1 - 12, 24, 13, // tri2 - 8, 9, 18 // tri3 -), -gsSPNTriangles_5b( - 7, 9, 4, // tri0 - 24, 12, 22, // tri1 - 5, 27, 3, // tri2 - 13, 23, 19 // tri3 -), -gsSPNTriangles_5b( - 16, 5, 8, // tri0 - 22, 11, 20, // tri1 - 22, 21, 25, // tri2 - 28, 20, 11 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&rhn_1_v[121], 25, 0), -gsSPNTrianglesInit_5b( - 27, // tri count - 0, 1, 2, // tri0 - 0, 3, 4, // tri1 - 5, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 8, 9, 10, // tri0 - 11, 0, 2, // tri1 - 12, 5, 7, // tri2 - 13, 14, 15 // tri3 -), -gsSPNTriangles_5b( - 16, 7, 14, // tri0 - 13, 16, 14, // tri1 - 2, 15, 11, // tri2 - 17, 18, 4 // tri3 -), -gsSPNTriangles_5b( - 3, 0, 19, // tri0 - 20, 3, 21, // tri1 - 4, 18, 0, // tri2 - 7, 16, 12 // tri3 -), -gsSPNTriangles_5b( - 4, 22, 23, // tri0 - 7, 8, 14, // tri1 - 14, 11, 15, // tri2 - 0, 18, 1 // tri3 -), -gsSPNTriangles_5b( - 9, 8, 24, // tri0 - 4, 23, 17, // tri1 - 8, 7, 24, // tri2 - 24, 7, 6 // tri3 -), -gsSPNTriangles_5b( - 22, 4, 20, // tri0 - 20, 4, 3, // tri1 - 19, 21, 3, // tri2 - 10, 14, 8 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&rhn_1_v[146], 16, 0), -gsSPNTrianglesInit_5b( - 16, // tri count - 0, 1, 2, // tri0 - 2, 3, 4, // tri1 - 5, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 7, 0, 5, // tri0 - 6, 5, 8, // tri1 - 4, 9, 2, // tri2 - 8, 10, 6 // tri3 -), -gsSPNTriangles_5b( - 2, 1, 3, // tri0 - 4, 11, 8, // tri1 - 1, 0, 12, // tri2 - 11, 10, 8 // tri3 -), -gsSPNTriangles_5b( - 8, 9, 4, // tri0 - 13, 6, 10, // tri1 - 14, 3, 1, // tri2 - 10, 11, 15 // tri3 -), -gsSPNTriangles_5b( - 2, 5, 0, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&rhn_1_v[162], 27, 0), -gsSPNTrianglesInit_5b( - 22, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 3, 5 // tri2 -), -gsSPNTriangles_5b( - 2, 7, 0, // tri0 - 8, 9, 10, // tri1 - 3, 6, 10, // tri2 - 1, 0, 3 // tri3 -), -gsSPNTriangles_5b( - 11, 12, 8, // tri0 - 13, 14, 2, // tri1 - 8, 13, 1, // tri2 - 1, 9, 8 // tri3 -), -gsSPNTriangles_5b( - 8, 15, 11, // tri0 - 3, 9, 1, // tri1 - 3, 0, 7, // tri2 - 10, 9, 3 // tri3 -), -gsSPNTriangles_5b( - 16, 5, 4, // tri0 - 10, 15, 8, // tri1 - 12, 11, 17, // tri2 - 14, 13, 8 // tri3 -), -gsSPNTriangles_5b( - 2, 1, 13, // tri0 - 7, 4, 3, // tri1 - 8, 12, 14, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), -gsDPSetTileSize(0, 0, 0, 60, 60), -gsSPNTrianglesInit_5b( - 3, // tri count - 18, 19, 20, // tri0 - 21, 18, 20, // tri1 - 21, 20, 22 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), -gsDPSetTileSize(0, 0, 0, 60, 60), -gsSPNTrianglesInit_5b( - 2, // tri count - 23, 24, 25, // tri0 - 26, 23, 25, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&rhn_1_v[189], 14, 0), -gsSPNTrianglesInit_5b( - 4, // tri count - 0, 1, 2, // tri0 - 3, 2, 1, // tri1 - 0, 2, 4 // tri2 -), -gsSPNTriangles_5b( - 3, 4, 2, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), -gsDPSetTileSize(0, 0, 0, 60, 60), -gsSPNTrianglesInit_5b( - 2, // tri count - 5, 6, 7, // tri0 - 5, 7, 8, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 4, // tri count - 9, 10, 11, // tri0 - 10, 9, 12, // tri1 - 13, 9, 11 // tri2 -), -gsSPNTriangles_5b( - 9, 13, 12, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model + sizeof(Mtx) * 7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rhn_1_v[21], 8, 0), + gsSPMatrix(anime_6_model + sizeof(Mtx) * 13.0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rhn_1_v[29], 19, 8), + gsSPNTrianglesInit_5b(13, // tri count + 0, 8, 6, // tri0 + 5, 9, 4, // tri1 + 3, 10, 5 // tri2 + ), + gsSPNTriangles_5b(0, 11, 12, // tri0 + 4, 13, 14, // tri1 + 2, 15, 16, // tri2 + 3, 17, 18 // tri3 + ), + gsSPNTriangles_5b(5, 19, 20, // tri0 + 0, 4, 21, // tri1 + 3, 1, 22, // tri2 + 7, 23, 2 // tri3 + ), + gsSPNTriangles_5b(6, 24, 25, // tri0 + 6, 26, 7, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rhn_1_v[48], 27, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 0, 0, 0 // tri2 + ), + gsSPNTrianglesInit_5b(2, // tri count + 5, 6, 7, // tri0 + 8, 9, 5, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(15, // tri count + 10, 11, 12, // tri0 + 13, 14, 15, // tri1 + 16, 17, 14 // tri2 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 11, 21, 14, // tri1 + 19, 13, 22, // tri2 + 23, 22, 13 // tri3 + ), + gsSPNTriangles_5b(24, 17, 16, // tri0 + 14, 21, 25, // tri1 + 15, 26, 13, // tri2 + 13, 26, 23 // tri3 + ), + gsSPNTriangles_5b(25, 15, 14, // tri0 + 14, 13, 16, // tri1 + 14, 12, 11, // tri2 + 22, 20, 19 // tri3 + ), + gsSPVertex(&rhn_1_v[75], 17, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 1, 9, // tri0 + 10, 11, 12, // tri1 + 9, 8, 2, // tri2 + 2, 13, 0 // tri3 + ), + gsSPNTriangles_5b(8, 9, 6, // tri0 + 8, 4, 3, // tri1 + 11, 10, 8, // tri2 + 3, 2, 8 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 8, 7, 11, // tri1 + 13, 2, 15, // tri2 + 15, 14, 13 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 124), + gsSPVertex(&rhn_1_v[92], 29, 0), + gsSPNTrianglesInit_5b(39, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(4, 3, 0, // tri0 + 4, 0, 7, // tri1 + 4, 8, 5, // tri2 + 4, 9, 8 // tri3 + ), + gsSPNTriangles_5b(10, 11, 12, // tri0 + 13, 14, 12, // tri1 + 15, 10, 6, // tri2 + 8, 13, 16 // tri3 + ), + gsSPNTriangles_5b(6, 9, 7, // tri0 + 17, 18, 6, // tri1 + 10, 17, 6, // tri2 + 18, 17, 19 // tri3 + ), + gsSPNTriangles_5b(10, 14, 19, // tri0 + 20, 21, 22, // tri1 + 12, 14, 10, // tri2 + 18, 9, 6 // tri3 + ), + gsSPNTriangles_5b(2, 7, 0, // tri0 + 22, 12, 11, // tri1 + 19, 17, 10, // tri2 + 6, 2, 15 // tri3 + ), + gsSPNTriangles_5b(8, 18, 23, // tri0 + 8, 23, 13, // tri1 + 24, 25, 26, // tri2 + 19, 23, 18 // tri3 + ), + gsSPNTriangles_5b(19, 14, 13, // tri0 + 25, 24, 22, // tri1 + 12, 24, 13, // tri2 + 8, 9, 18 // tri3 + ), + gsSPNTriangles_5b(7, 9, 4, // tri0 + 24, 12, 22, // tri1 + 5, 27, 3, // tri2 + 13, 23, 19 // tri3 + ), + gsSPNTriangles_5b(16, 5, 8, // tri0 + 22, 11, 20, // tri1 + 22, 21, 25, // tri2 + 28, 20, 11 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rhn_1_v[121], 25, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 11, 0, 2, // tri1 + 12, 5, 7, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(16, 7, 14, // tri0 + 13, 16, 14, // tri1 + 2, 15, 11, // tri2 + 17, 18, 4 // tri3 + ), + gsSPNTriangles_5b(3, 0, 19, // tri0 + 20, 3, 21, // tri1 + 4, 18, 0, // tri2 + 7, 16, 12 // tri3 + ), + gsSPNTriangles_5b(4, 22, 23, // tri0 + 7, 8, 14, // tri1 + 14, 11, 15, // tri2 + 0, 18, 1 // tri3 + ), + gsSPNTriangles_5b(9, 8, 24, // tri0 + 4, 23, 17, // tri1 + 8, 7, 24, // tri2 + 24, 7, 6 // tri3 + ), + gsSPNTriangles_5b(22, 4, 20, // tri0 + 20, 4, 3, // tri1 + 19, 21, 3, // tri2 + 10, 14, 8 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rhn_1_v[146], 16, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(7, 0, 5, // tri0 + 6, 5, 8, // tri1 + 4, 9, 2, // tri2 + 8, 10, 6 // tri3 + ), + gsSPNTriangles_5b(2, 1, 3, // tri0 + 4, 11, 8, // tri1 + 1, 0, 12, // tri2 + 11, 10, 8 // tri3 + ), + gsSPNTriangles_5b(8, 9, 4, // tri0 + 13, 6, 10, // tri1 + 14, 3, 1, // tri2 + 10, 11, 15 // tri3 + ), + gsSPNTriangles_5b(2, 5, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rhn_1_v[162], 27, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 5 // tri2 + ), + gsSPNTriangles_5b(2, 7, 0, // tri0 + 8, 9, 10, // tri1 + 3, 6, 10, // tri2 + 1, 0, 3 // tri3 + ), + gsSPNTriangles_5b(11, 12, 8, // tri0 + 13, 14, 2, // tri1 + 8, 13, 1, // tri2 + 1, 9, 8 // tri3 + ), + gsSPNTriangles_5b(8, 15, 11, // tri0 + 3, 9, 1, // tri1 + 3, 0, 7, // tri2 + 10, 9, 3 // tri3 + ), + gsSPNTriangles_5b(16, 5, 4, // tri0 + 10, 15, 8, // tri1 + 12, 11, 17, // tri2 + 14, 13, 8 // tri3 + ), + gsSPNTriangles_5b(2, 1, 13, // tri0 + 7, 4, 3, // tri1 + 8, 12, 14, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 60, 60), + gsSPNTrianglesInit_5b(3, // tri count + 18, 19, 20, // tri0 + 21, 18, 20, // tri1 + 21, 20, 22 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 60, 60), + gsSPNTrianglesInit_5b(2, // tri count + 23, 24, 25, // tri0 + 26, 23, 25, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rhn_1_v[189], 14, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 0, 2, 4 // tri2 + ), + gsSPNTriangles_5b(3, 4, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 60, 60), + gsSPNTrianglesInit_5b(2, // tri count + 5, 6, 7, // tri0 + 5, 7, 8, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 9, 10, 11, // tri0 + 10, 9, 12, // tri1 + 13, 9, 11 // tri2 + ), + gsSPNTriangles_5b(9, 13, 12, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx mouth_rhn_model[] = { -gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rhn_1_v[0], 5, 0), -gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rhn_1_v[5], 16, 5), -gsSPNTrianglesInit_5b( - 4, // tri count - 0, 5, 6, // tri0 - 2, 7, 8, // tri1 - 0, 4, 9 // tri2 -), -gsSPNTriangles_5b( - 4, 2, 10, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), -gsDPSetTileSize(0, 0, 0, 60, 60), -gsSPNTrianglesInit_5b( - 2, // tri count - 3, 1, 11, // tri0 - 1, 13, 12, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 2, // tri count - 14, 15, 16, // tri0 - 16, 15, 17, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), -gsDPSetTileSize(0, 0, 0, 60, 60), -gsSPNTrianglesInit_5b( - 1, // tri count - 18, 19, 20, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model + sizeof(Mtx) * 13.0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rhn_1_v[0], 5, 0), + gsSPMatrix(anime_6_model + sizeof(Mtx) * 12.0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rhn_1_v[5], 16, 5), + gsSPNTrianglesInit_5b(4, // tri count + 0, 5, 6, // tri0 + 2, 7, 8, // tri1 + 0, 4, 9 // tri2 + ), + gsSPNTriangles_5b(4, 2, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 60, 60), + gsSPNTrianglesInit_5b(2, // tri count + 3, 1, 11, // tri0 + 1, 13, 12, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 14, 15, 16, // tri0 + 16, 15, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 60, 60), + gsSPNTrianglesInit_5b(1, // tri count + 18, 19, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_rhn_model[] = { -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rhn_1_v[237], 5, 0), -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 60), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rhn_1_v[242], 18, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 3, 5, 6, // tri0 - 3, 0, 7, // tri1 - 3, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 0, 1, 10, // tri0 - 2, 12, 11, // tri1 - 3, 13, 4, // tri2 - 2, 4, 14 // tri3 -), -gsSPNTriangles_5b( - 1, 16, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 20, 21, 22, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model + sizeof(Mtx) * 10.0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rhn_1_v[237], 5, 0), + gsSPMatrix(anime_6_model + sizeof(Mtx) * 11.0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rhn_1_v[242], 18, 5), + gsSPNTrianglesInit_5b(8, // tri count + 3, 5, 6, // tri0 + 3, 0, 7, // tri1 + 3, 8, 9 // tri2 + ), + gsSPNTriangles_5b(0, 1, 10, // tri0 + 2, 12, 11, // tri1 + 3, 13, 4, // tri2 + 2, 4, 14 // tri3 + ), + gsSPNTriangles_5b(1, 16, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 21, 22, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_rhn_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rhn_1_v[260], 4, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 60), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rhn_1_v[264], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 4, 5, // tri0 - 0, 1, 6, // tri1 - 3, 0, 7 // tri2 -), -gsSPNTriangles_5b( - 3, 8, 9, // tri0 - 1, 10, 11, // tri1 - 2, 3, 12, // tri2 - 3, 13, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model + sizeof(Mtx) * 7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rhn_1_v[260], 4, 0), + gsSPMatrix(anime_6_model + sizeof(Mtx) * 10.0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rhn_1_v[264], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 4, 5, // tri0 + 0, 1, 6, // tri1 + 3, 0, 7 // tri2 + ), + gsSPNTriangles_5b(3, 8, 9, // tri0 + 1, 10, 11, // tri1 + 2, 3, 12, // tri2 + 3, 13, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_rhn_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rhn_1_v[203], 4, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 60), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rhn_1_v[207], 16, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 3, 4, // tri0 - 0, 2, 5, // tri1 - 0, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 3, 1, 8, // tri0 - 1, 0, 9, // tri1 - 0, 10, 11, // tri2 - 3, 12, 13 // tri3 -), -gsSPNTriangles_5b( - 3, 14, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 16, 17, 18, // tri0 - 17, 16, 19, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model + sizeof(Mtx) * 8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rhn_1_v[203], 4, 0), + gsSPMatrix(anime_6_model + sizeof(Mtx) * 9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rhn_1_v[207], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 3, 4, // tri0 + 0, 2, 5, // tri1 + 0, 6, 7 // tri2 + ), + gsSPNTriangles_5b(3, 1, 8, // tri0 + 1, 0, 9, // tri1 + 0, 10, 11, // tri2 + 3, 12, 13 // tri3 + ), + gsSPNTriangles_5b(3, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_rhn_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rhn_1_v[223], 3, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 60), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rhn_1_v[226], 11, 3), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 3, // tri0 - 0, 5, 4, // tri1 - 2, 7, 6 // tri2 -), -gsSPNTriangles_5b( - 2, 0, 8, // tri0 - 1, 2, 9, // tri1 - 1, 10, 11, // tri2 - 1, 12, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model + sizeof(Mtx) * 7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rhn_1_v[223], 3, 0), + gsSPMatrix(anime_6_model + sizeof(Mtx) * 8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rhn_1_v[226], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 3, // tri0 + 0, 5, 4, // tri1 + 2, 7, 6 // tri2 + ), + gsSPNTriangles_5b(2, 0, 8, // tri0 + 1, 2, 9, // tri1 + 1, 10, 11, // tri2 + 1, 12, 13 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_rhn_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rhn_1_v[275], 7, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 252, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rhn_1_v[282], 24, 7), -gsSPNTrianglesInit_5b( - 14, // tri count - 6, 5, 7, // tri0 - 6, 9, 8, // tri1 - 0, 10, 11 // tri2 -), -gsSPNTriangles_5b( - 0, 12, 13, // tri0 - 3, 14, 15, // tri1 - 5, 2, 16, // tri2 - 5, 17, 18 // tri3 -), -gsSPNTriangles_5b( - 4, 19, 1, // tri0 - 4, 20, 21, // tri1 - 1, 22, 23, // tri2 - 2, 24, 25 // tri3 -), -gsSPNTriangles_5b( - 3, 6, 26, // tri0 - 5, 27, 28, // tri1 - 2, 0, 29, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 0, 1, 30, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rhn_1_v[275], 7, 0), + gsSPMatrix(anime_6_model + sizeof(Mtx) * 7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rhn_1_v[282], 24, 7), + gsSPNTrianglesInit_5b(14, // tri count + 6, 5, 7, // tri0 + 6, 9, 8, // tri1 + 0, 10, 11 // tri2 + ), + gsSPNTriangles_5b(0, 12, 13, // tri0 + 3, 14, 15, // tri1 + 5, 2, 16, // tri2 + 5, 17, 18 // tri3 + ), + gsSPNTriangles_5b(4, 19, 1, // tri0 + 4, 20, 21, // tri1 + 1, 22, 23, // tri2 + 2, 24, 25 // tri3 + ), + gsSPNTriangles_5b(3, 6, 26, // tri0 + 5, 27, 28, // tri1 + 2, 0, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx tail1_rhn_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rhn_1_v[328], 8, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 2, // tri0 - 2, 3, 0, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 4, 7, 1, // tri0 - 6, 7, 4, // tri1 - 1, 0, 4, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rhn_1_v[328], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 1, // tri0 + 6, 7, 4, // tri1 + 1, 0, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail2_rhn_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rhn_1_v[306], 4, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rhn_1_v[310], 18, 4), -gsSPNTrianglesInit_5b( - 6, // tri count - 1, 4, 5, // tri0 - 1, 0, 6, // tri1 - 3, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 9, 10, // tri0 - 3, 2, 11, // tri1 - 0, 3, 12, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 9, // tri count - 13, 14, 15, // tri0 - 16, 17, 18, // tri1 - 14, 17, 15 // tri2 -), -gsSPNTriangles_5b( - 19, 20, 14, // tri0 - 18, 21, 16, // tri1 - 19, 13, 17, // tri2 - 17, 13, 15 // tri3 -), -gsSPNTriangles_5b( - 14, 13, 19, // tri0 - 17, 16, 19, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model + sizeof(Mtx) * 5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rhn_1_v[306], 4, 0), + gsSPMatrix(anime_6_model + sizeof(Mtx) * 6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rhn_1_v[310], 18, 4), + gsSPNTrianglesInit_5b(6, // tri count + 1, 4, 5, // tri0 + 1, 0, 6, // tri1 + 3, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 9, 10, // tri0 + 3, 2, 11, // tri1 + 0, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(9, // tri count + 13, 14, 15, // tri0 + 16, 17, 18, // tri1 + 14, 17, 15 // tri2 + ), + gsSPNTriangles_5b(19, 20, 14, // tri0 + 18, 21, 16, // tri1 + 19, 13, 17, // tri2 + 17, 13, 15 // tri3 + ), + gsSPNTriangles_5b(14, 13, 19, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_rhn_model[] = { -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rhn_1_v[388], 4, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 60), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rhn_1_v[392], 17, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 4, 5, // tri0 - 2, 1, 6, // tri1 - 1, 0, 7 // tri2 -), -gsSPNTriangles_5b( - 0, 8, 9, // tri0 - 0, 3, 10, // tri1 - 3, 2, 11, // tri2 - 0, 13, 12 // tri3 -), -gsSPNTriangles_5b( - 2, 15, 14, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 4, // tri count - 16, 17, 18, // tri0 - 18, 19, 16, // tri1 - 17, 16, 20 // tri2 -), -gsSPNTriangles_5b( - 20, 18, 17, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model + sizeof(Mtx) * 3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rhn_1_v[388], 4, 0), + gsSPMatrix(anime_6_model + sizeof(Mtx) * 4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rhn_1_v[392], 17, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 2, 1, 6, // tri1 + 1, 0, 7 // tri2 + ), + gsSPNTriangles_5b(0, 8, 9, // tri0 + 0, 3, 10, // tri1 + 3, 2, 11, // tri2 + 0, 13, 12 // tri3 + ), + gsSPNTriangles_5b(2, 15, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(4, // tri count + 16, 17, 18, // tri0 + 18, 19, 16, // tri1 + 17, 16, 20 // tri2 + ), + gsSPNTriangles_5b(20, 18, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_rhn_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rhn_1_v[409], 5, 0), -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 252, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rhn_1_v[414], 20, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 2, 6, 5, // tri0 - 3, 2, 7, // tri1 - 0, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 10, // tri0 - 0, 4, 11, // tri1 - 1, 12, 2, // tri2 - 1, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 15, 16, 17, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 60), -gsSPNTrianglesInit_5b( - 7, // tri count - 18, 19, 20, // tri0 - 21, 20, 22, // tri1 - 18, 23, 24 // tri2 -), -gsSPNTriangles_5b( - 22, 23, 21, // tri0 - 22, 24, 23, // tri1 - 24, 19, 18, // tri2 - 20, 21, 18 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rhn_1_v[409], 5, 0), + gsSPMatrix(anime_6_model + sizeof(Mtx) * 3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rhn_1_v[414], 20, 5), + gsSPNTrianglesInit_5b(7, // tri count + 2, 6, 5, // tri0 + 3, 2, 7, // tri1 + 0, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 0, 10, // tri0 + 0, 4, 11, // tri1 + 1, 12, 2, // tri2 + 1, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsSPNTrianglesInit_5b(7, // tri count + 18, 19, 20, // tri0 + 21, 20, 22, // tri1 + 18, 23, 24 // tri2 + ), + gsSPNTriangles_5b(22, 23, 21, // tri0 + 22, 24, 23, // tri1 + 24, 19, 18, // tri2 + 20, 21, 18 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_rhn_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rhn_1_v[336], 5, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 60), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rhn_1_v[341], 19, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 3, 2, 5, // tri0 - 2, 1, 6, // tri1 - 2, 8, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 9, // tri0 - 2, 10, 11, // tri1 - 0, 12, 13, // tri2 - 0, 4, 14 // tri3 -), -gsSPNTriangles_5b( - 0, 16, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 4, // tri count - 17, 18, 19, // tri0 - 20, 21, 18, // tri1 - 18, 22, 20 // tri2 -), -gsSPNTriangles_5b( - 20, 22, 23, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model + sizeof(Mtx) * 1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rhn_1_v[336], 5, 0), + gsSPMatrix(anime_6_model + sizeof(Mtx) * 2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rhn_1_v[341], 19, 5), + gsSPNTrianglesInit_5b(8, // tri count + 3, 2, 5, // tri0 + 2, 1, 6, // tri1 + 2, 8, 7 // tri2 + ), + gsSPNTriangles_5b(1, 0, 9, // tri0 + 2, 10, 11, // tri1 + 0, 12, 13, // tri2 + 0, 4, 14 // tri3 + ), + gsSPNTriangles_5b(0, 16, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(4, // tri count + 17, 18, 19, // tri0 + 20, 21, 18, // tri1 + 18, 22, 20 // tri2 + ), + gsSPNTriangles_5b(20, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_rhn_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rhn_1_v[360], 6, 0), -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 252, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&rhn_1_v[366], 22, 6), -gsSPNTrianglesInit_5b( - 7, // tri count - 1, 7, 6, // tri0 - 0, 3, 8, // tri1 - 3, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 3, 4, 11, // tri0 - 5, 2, 12, // tri1 - 0, 13, 1, // tri2 - 0, 14, 15 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 16, 17, 18, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 60), -gsSPNTrianglesInit_5b( - 7, // tri count - 19, 20, 21, // tri0 - 22, 23, 24, // tri1 - 19, 21, 25 // tri2 -), -gsSPNTriangles_5b( - 24, 26, 22, // tri0 - 27, 19, 25, // tri1 - 25, 23, 27, // tri2 - 23, 22, 27 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rhn_1_v[360], 6, 0), + gsSPMatrix(anime_6_model + sizeof(Mtx) * 1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rhn_1_v[366], 22, 6), + gsSPNTrianglesInit_5b(7, // tri count + 1, 7, 6, // tri0 + 0, 3, 8, // tri1 + 3, 9, 10 // tri2 + ), + gsSPNTriangles_5b(3, 4, 11, // tri0 + 5, 2, 12, // tri1 + 0, 13, 1, // tri2 + 0, 14, 15 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 16, 17, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsSPNTrianglesInit_5b(7, // tri count + 19, 20, 21, // tri0 + 22, 23, 24, // tri1 + 19, 21, 25 // tri2 + ), + gsSPNTriangles_5b(24, 26, 22, // tri0 + 27, 19, 25, // tri1 + 25, 23, 27, // tri2 + 23, 22, 27 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx base_rhn_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 252, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&rhn_1_v[434], 14, 0), -gsSPNTrianglesInit_5b( - 12, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 3, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 5, 0, 2, // tri0 - 8, 9, 1, // tri1 - 4, 0, 5, // tri2 - 10, 1, 9 // tri3 -), -gsSPNTriangles_5b( - 11, 9, 12, // tri0 - 0, 8, 1, // tri1 - 11, 10, 9, // tri2 - 7, 13, 3 // tri3 -), -gsSPNTriangles_5b( - 5, 6, 3, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rhn_1_v[434], 14, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 7 // tri2 + ), + gsSPNTriangles_5b(5, 0, 2, // tri0 + 8, 9, 1, // tri1 + 4, 0, 5, // tri2 + 10, 1, 9 // tri3 + ), + gsSPNTriangles_5b(11, 9, 12, // tri0 + 0, 8, 1, // tri1 + 11, 10, 9, // tri2 + 7, 13, 3 // tri3 + ), + gsSPNTriangles_5b(5, 6, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_rhn_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -893,4 +790,4 @@ static cKF_Joint_R_c cKF_je_r_rhn_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_rhn_1 = { 26, 14, cKF_je_r_rhn_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_rhn_1 = { 26, 14, cKF_je_r_rhn_1_tbl }; diff --git a/src/data/npc/model/mdl/seg_1.c b/src/data/npc/model/mdl/seg_1.c index a1ec0bb6..f0108d77 100644 --- a/src/data/npc/model/mdl/seg_1.c +++ b/src/data/npc/model/mdl/seg_1.c @@ -6,816 +6,721 @@ static Vtx seg_1_v[] = { }; static Gfx head_seg_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 24, 15, GX_MIRROR, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 92), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&seg_1_v[21], 30, 0), -gsSPNTrianglesInit_5b( - 11, // tri count - 0, 1, 2, // tri0 - 3, 4, 0, // tri1 - 3, 5, 4 // tri2 -), -gsSPNTriangles_5b( - 4, 6, 0, // tri0 - 7, 3, 0, // tri1 - 7, 0, 2, // tri2 - 0, 6, 1 // tri3 -), -gsSPNTriangles_5b( - 5, 8, 4, // tri0 - 4, 9, 6, // tri1 - 7, 10, 3, // tri2 - 10, 5, 3 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 3, // tri count - 11, 12, 13, // tri0 - 11, 13, 14, // tri1 - 14, 15, 11 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 17, // tri count - 16, 17, 18, // tri0 - 16, 19, 20, // tri1 - 17, 21, 22 // tri2 -), -gsSPNTriangles_5b( - 23, 20, 24, // tri0 - 23, 25, 26, // tri1 - 27, 23, 28, // tri2 - 24, 25, 23 // tri3 -), -gsSPNTriangles_5b( - 20, 23, 16, // tri0 - 18, 19, 16, // tri1 - 22, 18, 17, // tri2 - 24, 22, 21 // tri3 -), -gsSPNTriangles_5b( - 24, 21, 25, // tri0 - 21, 17, 26, // tri1 - 26, 25, 21, // tri2 - 26, 17, 29 // tri3 -), -gsSPNTriangles_5b( - 17, 16, 27, // tri0 - 27, 16, 23, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&seg_1_v[51], 27, 0), -gsSPNTrianglesInit_5b( - 39, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 3, 2, 4 // tri2 -), -gsSPNTriangles_5b( - 5, 1, 0, // tri0 - 6, 7, 1, // tri1 - 8, 4, 9, // tri2 - 10, 11, 12 // tri3 -), -gsSPNTriangles_5b( - 13, 14, 15, // tri0 - 16, 7, 6, // tri1 - 17, 18, 19, // tri2 - 5, 17, 6 // tri3 -), -gsSPNTriangles_5b( - 9, 4, 2, // tri0 - 15, 14, 8, // tri1 - 4, 20, 21, // tri2 - 4, 21, 5 // tri3 -), -gsSPNTriangles_5b( - 4, 8, 20, // tri0 - 9, 22, 23, // tri1 - 1, 5, 6, // tri2 - 7, 16, 24 // tri3 -), -gsSPNTriangles_5b( - 24, 23, 22, // tri0 - 19, 18, 25, // tri1 - 10, 24, 16, // tri2 - 23, 24, 10 // tri3 -), -gsSPNTriangles_5b( - 9, 23, 15, // tri0 - 3, 26, 0, // tri1 - 21, 17, 5, // tri2 - 23, 10, 12 // tri3 -), -gsSPNTriangles_5b( - 11, 10, 16, // tri0 - 19, 16, 6, // tri1 - 11, 16, 19, // tri2 - 25, 11, 19 // tri3 -), -gsSPNTriangles_5b( - 12, 13, 15, // tri0 - 15, 23, 12, // tri1 - 19, 6, 17, // tri2 - 8, 9, 15 // tri3 -), -gsSPNTriangles_5b( - 2, 22, 9, // tri0 - 5, 0, 26, // tri1 - 26, 3, 4, // tri2 - 4, 5, 26 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000180, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&seg_1_v[78], 24, 0), -gsSPNTrianglesInit_5b( - 21, // tri count - 0, 1, 2, // tri0 - 2, 3, 4, // tri1 - 5, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 3, 2, 8, // tri0 - 5, 7, 9, // tri1 - 4, 0, 2, // tri2 - 8, 10, 11 // tri3 -), -gsSPNTriangles_5b( - 12, 5, 9, // tri0 - 12, 1, 0, // tri1 - 13, 10, 8, // tri2 - 7, 6, 14 // tri3 -), -gsSPNTriangles_5b( - 13, 7, 10, // tri0 - 10, 14, 11, // tri1 - 2, 1, 13, // tri2 - 13, 1, 9 // tri3 -), -gsSPNTriangles_5b( - 9, 7, 13, // tri0 - 14, 10, 7, // tri1 - 15, 3, 8, // tri2 - 9, 1, 12 // tri3 -), -gsSPNTriangles_5b( - 8, 11, 15, // tri0 - 2, 13, 8, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 2, // tri count - 16, 17, 18, // tri0 - 18, 19, 16, // tri1 - 0, 0, 0 // tri2 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 20, 21, 22, // tri0 - 22, 23, 20, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 24, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 92), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&seg_1_v[21], 30, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b(4, 6, 0, // tri0 + 7, 3, 0, // tri1 + 7, 0, 2, // tri2 + 0, 6, 1 // tri3 + ), + gsSPNTriangles_5b(5, 8, 4, // tri0 + 4, 9, 6, // tri1 + 7, 10, 3, // tri2 + 10, 5, 3 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 11, 12, 13, // tri0 + 11, 13, 14, // tri1 + 14, 15, 11 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(17, // tri count + 16, 17, 18, // tri0 + 16, 19, 20, // tri1 + 17, 21, 22 // tri2 + ), + gsSPNTriangles_5b(23, 20, 24, // tri0 + 23, 25, 26, // tri1 + 27, 23, 28, // tri2 + 24, 25, 23 // tri3 + ), + gsSPNTriangles_5b(20, 23, 16, // tri0 + 18, 19, 16, // tri1 + 22, 18, 17, // tri2 + 24, 22, 21 // tri3 + ), + gsSPNTriangles_5b(24, 21, 25, // tri0 + 21, 17, 26, // tri1 + 26, 25, 21, // tri2 + 26, 17, 29 // tri3 + ), + gsSPNTriangles_5b(17, 16, 27, // tri0 + 27, 16, 23, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&seg_1_v[51], 27, 0), + gsSPNTrianglesInit_5b(39, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b(5, 1, 0, // tri0 + 6, 7, 1, // tri1 + 8, 4, 9, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 16, 7, 6, // tri1 + 17, 18, 19, // tri2 + 5, 17, 6 // tri3 + ), + gsSPNTriangles_5b(9, 4, 2, // tri0 + 15, 14, 8, // tri1 + 4, 20, 21, // tri2 + 4, 21, 5 // tri3 + ), + gsSPNTriangles_5b(4, 8, 20, // tri0 + 9, 22, 23, // tri1 + 1, 5, 6, // tri2 + 7, 16, 24 // tri3 + ), + gsSPNTriangles_5b(24, 23, 22, // tri0 + 19, 18, 25, // tri1 + 10, 24, 16, // tri2 + 23, 24, 10 // tri3 + ), + gsSPNTriangles_5b(9, 23, 15, // tri0 + 3, 26, 0, // tri1 + 21, 17, 5, // tri2 + 23, 10, 12 // tri3 + ), + gsSPNTriangles_5b(11, 10, 16, // tri0 + 19, 16, 6, // tri1 + 11, 16, 19, // tri2 + 25, 11, 19 // tri3 + ), + gsSPNTriangles_5b(12, 13, 15, // tri0 + 15, 23, 12, // tri1 + 19, 6, 17, // tri2 + 8, 9, 15 // tri3 + ), + gsSPNTriangles_5b(2, 22, 9, // tri0 + 5, 0, 26, // tri1 + 26, 3, 4, // tri2 + 4, 5, 26 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x180, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&seg_1_v[78], 24, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(3, 2, 8, // tri0 + 5, 7, 9, // tri1 + 4, 0, 2, // tri2 + 8, 10, 11 // tri3 + ), + gsSPNTriangles_5b(12, 5, 9, // tri0 + 12, 1, 0, // tri1 + 13, 10, 8, // tri2 + 7, 6, 14 // tri3 + ), + gsSPNTriangles_5b(13, 7, 10, // tri0 + 10, 14, 11, // tri1 + 2, 1, 13, // tri2 + 13, 1, 9 // tri3 + ), + gsSPNTriangles_5b(9, 7, 13, // tri0 + 14, 10, 7, // tri1 + 15, 3, 8, // tri2 + 9, 1, 12 // tri3 + ), + gsSPNTriangles_5b(8, 11, 15, // tri0 + 2, 13, 8, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 18, 19, 16, // tri1 + 0, 0, 0 // tri2 + ), + gsSPNTrianglesInit_5b(2, // tri count + 20, 21, 22, // tri0 + 22, 23, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx mouth_seg_model[] = { -gsSPMatrix(0x0D0003C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&seg_1_v[0], 5, 0), -gsSPMatrix(0x0D000380, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&seg_1_v[5], 16, 5), -gsSPNTrianglesInit_5b( - 6, // tri count - 2, 4, 5, // tri0 - 3, 7, 6, // tri1 - 2, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 4, 3, 10, // tri0 - 1, 0, 11, // tri1 - 0, 13, 12, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 14, 15, 16, // tri0 - 17, 18, 19, // tri1 - 19, 18, 20 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*15, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&seg_1_v[0], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*14, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&seg_1_v[5], 16, 5), + gsSPNTrianglesInit_5b(6, // tri count + 2, 4, 5, // tri0 + 3, 7, 6, // tri1 + 2, 9, 8 // tri2 + ), + gsSPNTriangles_5b(4, 3, 10, // tri0 + 1, 0, 11, // tri1 + 0, 13, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 14, 15, 16, // tri0 + 17, 18, 19, // tri1 + 19, 18, 20 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_seg_model[] = { -gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&seg_1_v[145], 4, 0), -gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&seg_1_v[149], 26, 4), -gsSPNTrianglesInit_5b( - 6, // tri count - 1, 3, 4, // tri0 - 0, 5, 6, // tri1 - 2, 0, 7 // tri2 -), -gsSPNTriangles_5b( - 0, 8, 9, // tri0 - 1, 10, 11, // tri1 - 0, 1, 12, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 2, 13, 14, // tri0 - 3, 2, 15, // tri1 - 2, 16, 17 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 18, 19, 20, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 2, // tri count - 21, 22, 23, // tri0 - 24, 22, 21, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 3, // tri count - 25, 26, 27, // tri0 - 27, 28, 25, // tri1 - 25, 29, 26 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&seg_1_v[175], 3, 0), -gsSPNTrianglesInit_5b( - 1, // tri count - 0, 1, 2, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&seg_1_v[145], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&seg_1_v[149], 26, 4), + gsSPNTrianglesInit_5b(6, // tri count + 1, 3, 4, // tri0 + 0, 5, 6, // tri1 + 2, 0, 7 // tri2 + ), + gsSPNTriangles_5b(0, 8, 9, // tri0 + 1, 10, 11, // tri1 + 0, 1, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 2, 13, 14, // tri0 + 3, 2, 15, // tri1 + 2, 16, 17 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 18, 19, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 21, 22, 23, // tri0 + 24, 22, 21, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(3, // tri count + 25, 26, 27, // tri0 + 27, 28, 25, // tri1 + 25, 29, 26 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&seg_1_v[175], 3, 0), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_seg_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&seg_1_v[178], 10, 0), -gsSPNTrianglesInit_5b( - 1, // tri count - 0, 1, 2, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 6, // tri count - 3, 4, 5, // tri0 - 5, 6, 7, // tri1 - 8, 9, 4 // tri2 -), -gsSPNTriangles_5b( - 7, 6, 9, // tri0 - 4, 3, 8, // tri1 - 7, 3, 5, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&seg_1_v[178], 10, 0), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(6, // tri count + 3, 4, 5, // tri0 + 5, 6, 7, // tri1 + 8, 9, 4 // tri2 + ), + gsSPNTriangles_5b(7, 6, 9, // tri0 + 4, 3, 8, // tri1 + 7, 3, 5, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_seg_model[] = { -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&seg_1_v[102], 4, 0), -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&seg_1_v[106], 26, 4), -gsSPNTrianglesInit_5b( - 6, // tri count - 3, 1, 4, // tri0 - 0, 5, 6, // tri1 - 0, 2, 7 // tri2 -), -gsSPNTriangles_5b( - 0, 8, 9, // tri0 - 1, 10, 11, // tri1 - 1, 0, 12, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 2, 13, 14, // tri0 - 2, 3, 15, // tri1 - 2, 16, 17 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 18, 19, 20, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 2, // tri count - 21, 22, 23, // tri0 - 23, 22, 24, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 3, // tri count - 25, 26, 27, // tri0 - 27, 28, 25, // tri1 - 26, 29, 27 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&seg_1_v[132], 3, 0), -gsSPNTrianglesInit_5b( - 1, // tri count - 0, 1, 2, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&seg_1_v[102], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&seg_1_v[106], 26, 4), + gsSPNTrianglesInit_5b(6, // tri count + 3, 1, 4, // tri0 + 0, 5, 6, // tri1 + 0, 2, 7 // tri2 + ), + gsSPNTriangles_5b(0, 8, 9, // tri0 + 1, 10, 11, // tri1 + 1, 0, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 2, 13, 14, // tri0 + 2, 3, 15, // tri1 + 2, 16, 17 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 18, 19, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 21, 22, 23, // tri0 + 23, 22, 24, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(3, // tri count + 25, 26, 27, // tri0 + 27, 28, 25, // tri1 + 26, 29, 27 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&seg_1_v[132], 3, 0), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_seg_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&seg_1_v[135], 10, 0), -gsSPNTrianglesInit_5b( - 1, // tri count - 0, 1, 2, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 6, // tri count - 3, 4, 5, // tri0 - 6, 7, 3, // tri1 - 4, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 8, 7, 6, // tri0 - 9, 5, 4, // tri1 - 3, 5, 6, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&seg_1_v[135], 10, 0), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(6, // tri count + 3, 4, 5, // tri0 + 6, 7, 3, // tri1 + 4, 8, 9 // tri2 + ), + gsSPNTriangles_5b(8, 7, 6, // tri0 + 9, 5, 4, // tri1 + 3, 5, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_seg_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&seg_1_v[188], 9, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&seg_1_v[197], 20, 9), -gsSPNTrianglesInit_5b( - 2, // tri count - 2, 9, 3, // tri0 - 5, 4, 10, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 4, // tri count - 8, 11, 12, // tri0 - 8, 5, 13, // tri1 - 4, 3, 14 // tri2 -), -gsSPNTriangles_5b( - 3, 15, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 8, // tri count - 8, 17, 18, // tri0 - 6, 8, 19, // tri1 - 2, 1, 20 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 21, // tri0 - 1, 23, 22, // tri1 - 0, 24, 25, // tri2 - 0, 7, 26 // tri3 -), -gsSPNTriangles_5b( - 4, 28, 27, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&seg_1_v[217], 25, 0), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 5, 7 // tri2 -), -gsSPNTriangles_5b( - 8, 4, 3, // tri0 - 9, 2, 1, // tri1 - 10, 11, 12, // tri2 - 13, 14, 3 // tri3 -), -gsSPNTriangles_5b( - 2, 14, 13, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 4, // tri count - 15, 16, 17, // tri0 - 18, 16, 19, // tri1 - 20, 21, 22 // tri2 -), -gsSPNTriangles_5b( - 23, 24, 20, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&seg_1_v[242], 15, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 1, 2, // tri0 - 3, 4, 0, // tri1 - 0, 4, 5 // tri2 -), -gsSPNTriangles_5b( - 0, 5, 1, // tri0 - 6, 1, 5, // tri1 - 7, 8, 9, // tri2 - 10, 11, 12 // tri3 -), -gsSPNTriangles_5b( - 13, 14, 12, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&seg_1_v[188], 9, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&seg_1_v[197], 20, 9), + gsSPNTrianglesInit_5b(2, // tri count + 2, 9, 3, // tri0 + 5, 4, 10, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(4, // tri count + 8, 11, 12, // tri0 + 8, 5, 13, // tri1 + 4, 3, 14 // tri2 + ), + gsSPNTriangles_5b(3, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(8, // tri count + 8, 17, 18, // tri0 + 6, 8, 19, // tri1 + 2, 1, 20 // tri2 + ), + gsSPNTriangles_5b(1, 0, 21, // tri0 + 1, 23, 22, // tri1 + 0, 24, 25, // tri2 + 0, 7, 26 // tri3 + ), + gsSPNTriangles_5b(4, 28, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&seg_1_v[217], 25, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 5, 7 // tri2 + ), + gsSPNTriangles_5b(8, 4, 3, // tri0 + 9, 2, 1, // tri1 + 10, 11, 12, // tri2 + 13, 14, 3 // tri3 + ), + gsSPNTriangles_5b(2, 14, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(4, // tri count + 15, 16, 17, // tri0 + 18, 16, 19, // tri1 + 20, 21, 22 // tri2 + ), + gsSPNTriangles_5b(23, 24, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&seg_1_v[242], 15, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b(0, 5, 1, // tri0 + 6, 1, 5, // tri1 + 7, 8, 9, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(13, 14, 12, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail1_seg_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&seg_1_v[270], 3, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&seg_1_v[273], 6, 3), -gsSPNTrianglesInit_5b( - 4, // tri count - 1, 0, 3, // tri0 - 0, 2, 4, // tri1 - 1, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 2, 7, 8, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&seg_1_v[270], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&seg_1_v[273], 6, 3), + gsSPNTrianglesInit_5b(4, // tri count + 1, 0, 3, // tri0 + 0, 2, 4, // tri1 + 1, 5, 6 // tri2 + ), + gsSPNTriangles_5b(2, 7, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail2_seg_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&seg_1_v[257], 3, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&seg_1_v[260], 10, 3), -gsSPNTrianglesInit_5b( - 4, // tri count - 1, 2, 3, // tri0 - 0, 4, 5, // tri1 - 2, 0, 6 // tri2 -), -gsSPNTriangles_5b( - 1, 7, 8, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 9, 10, 11, // tri0 - 11, 12, 9, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&seg_1_v[257], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&seg_1_v[260], 10, 3), + gsSPNTrianglesInit_5b(4, // tri count + 1, 2, 3, // tri0 + 0, 4, 5, // tri1 + 2, 0, 6 // tri2 + ), + gsSPNTriangles_5b(1, 7, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 9, 10, 11, // tri0 + 11, 12, 9, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot3_seg_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&seg_1_v[326], 3, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&seg_1_v[329], 18, 3), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 3, 4, // tri0 - 1, 0, 5, // tri1 - 0, 2, 6 // tri2 -), -gsSPNTriangles_5b( - 2, 1, 7, // tri0 - 2, 8, 9, // tri1 - 0, 10, 11, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 5, // tri count - 12, 13, 14, // tri0 - 12, 14, 15, // tri1 - 16, 17, 18 // tri2 -), -gsSPNTriangles_5b( - 18, 19, 16, // tri0 - 16, 20, 17, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&seg_1_v[326], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&seg_1_v[329], 18, 3), + gsSPNTrianglesInit_5b(6, // tri count + 0, 3, 4, // tri0 + 1, 0, 5, // tri1 + 0, 2, 6 // tri2 + ), + gsSPNTriangles_5b(2, 1, 7, // tri0 + 2, 8, 9, // tri1 + 0, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(5, // tri count + 12, 13, 14, // tri0 + 12, 14, 15, // tri1 + 16, 17, 18 // tri2 + ), + gsSPNTriangles_5b(18, 19, 16, // tri0 + 16, 20, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_seg_model[] = { -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&seg_1_v[347], 4, 0), -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&seg_1_v[351], 14, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 2, 6, 7, // tri1 - 3, 0, 8 // tri2 -), -gsSPNTriangles_5b( - 1, 2, 9, // tri0 - 2, 10, 11, // tri1 - 2, 3, 12, // tri2 - 3, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 15, 16, 17, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&seg_1_v[347], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&seg_1_v[351], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 2, 6, 7, // tri1 + 3, 0, 8 // tri2 + ), + gsSPNTriangles_5b(1, 2, 9, // tri0 + 2, 10, 11, // tri1 + 2, 3, 12, // tri2 + 3, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_seg_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&seg_1_v[365], 8, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 3, 2, 4 // tri2 -), -gsSPNTriangles_5b( - 5, 0, 6, // tri0 - 4, 7, 3, // tri1 - 0, 5, 1, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&seg_1_v[365], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b(5, 0, 6, // tri0 + 4, 7, 3, // tri1 + 0, 5, 1, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot3_seg_model[] = { -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&seg_1_v[279], 3, 0), -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&seg_1_v[282], 18, 3), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 3, 4, // tri0 - 0, 1, 5, // tri1 - 2, 0, 6 // tri2 -), -gsSPNTriangles_5b( - 1, 7, 8, // tri0 - 1, 2, 9, // tri1 - 0, 10, 11, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 5, // tri count - 12, 13, 14, // tri0 - 12, 14, 15, // tri1 - 16, 17, 18 // tri2 -), -gsSPNTriangles_5b( - 18, 19, 16, // tri0 - 17, 20, 18, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&seg_1_v[279], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&seg_1_v[282], 18, 3), + gsSPNTrianglesInit_5b(6, // tri count + 0, 3, 4, // tri0 + 0, 1, 5, // tri1 + 2, 0, 6 // tri2 + ), + gsSPNTriangles_5b(1, 7, 8, // tri0 + 1, 2, 9, // tri1 + 0, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(5, // tri count + 12, 13, 14, // tri0 + 12, 14, 15, // tri1 + 16, 17, 18 // tri2 + ), + gsSPNTriangles_5b(18, 19, 16, // tri0 + 17, 20, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_seg_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&seg_1_v[300], 4, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&seg_1_v[304], 14, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 2, 6, 7, // tri1 - 0, 3, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 1, 9, // tri0 - 2, 10, 11, // tri1 - 3, 2, 12, // tri2 - 3, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 15, 16, 17, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&seg_1_v[300], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&seg_1_v[304], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 2, 6, 7, // tri1 + 0, 3, 8 // tri2 + ), + gsSPNTriangles_5b(2, 1, 9, // tri0 + 2, 10, 11, // tri1 + 3, 2, 12, // tri2 + 3, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_seg_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&seg_1_v[318], 8, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 4, 1, 0 // tri2 -), -gsSPNTriangles_5b( - 5, 3, 6, // tri0 - 0, 7, 4, // tri1 - 2, 6, 3, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&seg_1_v[318], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 1, 0 // tri2 + ), + gsSPNTriangles_5b(5, 3, 6, // tri0 + 0, 7, 4, // tri1 + 2, 6, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx base_seg_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000180, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&seg_1_v[373], 17, 0), -gsSPNTrianglesInit_5b( - 24, // tri count - 0, 1, 2, // tri0 - 2, 1, 3, // tri1 - 4, 0, 2 // tri2 -), -gsSPNTriangles_5b( - 3, 1, 5, // tri0 - 6, 7, 8, // tri1 - 4, 7, 6, // tri2 - 9, 10, 11 // tri3 -), -gsSPNTriangles_5b( - 9, 11, 12, // tri0 - 10, 8, 11, // tri1 - 13, 9, 12, // tri2 - 10, 14, 6 // tri3 -), -gsSPNTriangles_5b( - 8, 10, 6, // tri0 - 1, 0, 15, // tri1 - 15, 9, 13, // tri2 - 15, 0, 14 // tri3 -), -gsSPNTriangles_5b( - 9, 15, 14, // tri0 - 0, 6, 14, // tri1 - 9, 14, 10, // tri2 - 15, 13, 5 // tri3 -), -gsSPNTriangles_5b( - 5, 1, 15, // tri0 - 6, 0, 4, // tri1 - 12, 16, 13, // tri2 - 5, 16, 3 // tri3 -), -gsSPNTriangles_5b( - 16, 5, 13, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x180, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&seg_1_v[373], 17, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 0, 2 // tri2 + ), + gsSPNTriangles_5b(3, 1, 5, // tri0 + 6, 7, 8, // tri1 + 4, 7, 6, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b(9, 11, 12, // tri0 + 10, 8, 11, // tri1 + 13, 9, 12, // tri2 + 10, 14, 6 // tri3 + ), + gsSPNTriangles_5b(8, 10, 6, // tri0 + 1, 0, 15, // tri1 + 15, 9, 13, // tri2 + 15, 0, 14 // tri3 + ), + gsSPNTriangles_5b(9, 15, 14, // tri0 + 0, 6, 14, // tri1 + 9, 14, 10, // tri2 + 15, 13, 5 // tri3 + ), + gsSPNTriangles_5b(5, 1, 15, // tri0 + 6, 0, 4, // tri1 + 12, 16, 13, // tri2 + 5, 16, 3 // tri3 + ), + gsSPNTriangles_5b(16, 5, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_seg_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -847,4 +752,4 @@ static cKF_Joint_R_c cKF_je_r_seg_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_seg_1 = { 26, 16, cKF_je_r_seg_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_seg_1 = { 26, 16, cKF_je_r_seg_1_tbl }; diff --git a/src/data/npc/model/mdl/shp_1.c b/src/data/npc/model/mdl/shp_1.c index e6093a77..6392e117 100644 --- a/src/data/npc/model/mdl/shp_1.c +++ b/src/data/npc/model/mdl/shp_1.c @@ -6,575 +6,506 @@ static Vtx shp_1_v[] = { }; static Gfx head_shp_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&shp_1_v[0], 5, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), -gsDPSetTileSize(0, 0, 0, 252, 252), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&shp_1_v[5], 24, 5), -gsSPNTrianglesInit_5b( - 5, // tri count - 2, 1, 5, // tri0 - 4, 3, 6, // tri1 - 0, 4, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 8, // tri0 - 3, 2, 9, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 14, // tri count - 10, 11, 12, // tri0 - 12, 13, 14, // tri1 - 12, 11, 15 // tri2 -), -gsSPNTriangles_5b( - 15, 13, 12, // tri0 - 16, 17, 18, // tri1 - 18, 19, 16, // tri2 - 18, 20, 21 // tri3 -), -gsSPNTriangles_5b( - 21, 19, 18, // tri0 - 17, 20, 18, // tri1 - 22, 23, 24, // tri2 - 24, 25, 26 // tri3 -), -gsSPNTriangles_5b( - 26, 27, 24, // tri0 - 24, 27, 28, // tri1 - 24, 28, 22, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&shp_1_v[29], 32, 0), -gsSPNTrianglesInit_5b( - 19, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 9, 8, 10, // tri0 - 10, 11, 12, // tri1 - 10, 12, 9, // tri2 - 13, 4, 14 // tri3 -), -gsSPNTriangles_5b( - 15, 7, 6, // tri0 - 8, 9, 6, // tri1 - 16, 13, 17, // tri2 - 18, 2, 16 // tri3 -), -gsSPNTriangles_5b( - 19, 20, 21, // tri0 - 22, 21, 23, // tri1 - 24, 5, 25, // tri2 - 26, 27, 20 // tri3 -), -gsSPNTriangles_5b( - 12, 11, 28, // tri0 - 24, 25, 29, // tri1 - 29, 30, 24, // tri2 - 6, 31, 15 // tri3 -), -gsSPVertex(&shp_1_v[61], 32, 0), -gsSPNTrianglesInit_5b( - 11, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 9, 10, 11, // tri0 - 12, 13, 14, // tri1 - 15, 16, 17, // tri2 - 18, 19, 20 // tri3 -), -gsSPNTriangles_5b( - 21, 22, 23, // tri0 - 24, 25, 26, // tri1 - 27, 28, 29, // tri2 - 30, 31, 14 // tri3 -), -gsSPVertex(&shp_1_v[93], 27, 0), -gsSPNTrianglesInit_5b( - 14, // tri count - 0, 1, 2, // tri0 - 3, 4, 0, // tri1 - 2, 3, 0 // tri2 -), -gsSPNTriangles_5b( - 5, 6, 7, // tri0 - 8, 9, 10, // tri1 - 8, 2, 1, // tri2 - 11, 7, 12 // tri3 -), -gsSPNTriangles_5b( - 12, 13, 14, // tri0 - 15, 16, 17, // tri1 - 18, 15, 19, // tri2 - 20, 21, 22 // tri3 -), -gsSPNTriangles_5b( - 16, 23, 24, // tri0 - 25, 4, 3, // tri1 - 26, 20, 22, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&shp_1_v[120], 24, 0), -gsSPNTrianglesInit_5b( - 11, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 0, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 7, 8, 5, // tri0 - 7, 5, 9, // tri1 - 1, 0, 9, // tri2 - 9, 5, 4 // tri3 -), -gsSPNTriangles_5b( - 4, 1, 9, // tri0 - 9, 0, 7, // tri1 - 2, 6, 0, // tri2 - 5, 8, 3 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 8, // tri count - 10, 11, 12, // tri0 - 13, 14, 15, // tri1 - 15, 14, 16 // tri2 -), -gsSPNTriangles_5b( - 16, 11, 10, // tri0 - 10, 15, 16, // tri1 - 10, 12, 17, // tri2 - 17, 13, 15 // tri3 -), -gsSPNTriangles_5b( - 17, 15, 10, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 5, // tri count - 18, 19, 20, // tri0 - 21, 22, 20, // tri1 - 23, 21, 20 // tri2 -), -gsSPNTriangles_5b( - 22, 18, 20, // tri0 - 20, 19, 23, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&shp_1_v[0], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 252), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&shp_1_v[5], 24, 5), + gsSPNTrianglesInit_5b(5, // tri count + 2, 1, 5, // tri0 + 4, 3, 6, // tri1 + 0, 4, 7 // tri2 + ), + gsSPNTriangles_5b(1, 0, 8, // tri0 + 3, 2, 9, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(14, // tri count + 10, 11, 12, // tri0 + 12, 13, 14, // tri1 + 12, 11, 15 // tri2 + ), + gsSPNTriangles_5b(15, 13, 12, // tri0 + 16, 17, 18, // tri1 + 18, 19, 16, // tri2 + 18, 20, 21 // tri3 + ), + gsSPNTriangles_5b(21, 19, 18, // tri0 + 17, 20, 18, // tri1 + 22, 23, 24, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(26, 27, 24, // tri0 + 24, 27, 28, // tri1 + 24, 28, 22, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&shp_1_v[29], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 8, 10, // tri0 + 10, 11, 12, // tri1 + 10, 12, 9, // tri2 + 13, 4, 14 // tri3 + ), + gsSPNTriangles_5b(15, 7, 6, // tri0 + 8, 9, 6, // tri1 + 16, 13, 17, // tri2 + 18, 2, 16 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 22, 21, 23, // tri1 + 24, 5, 25, // tri2 + 26, 27, 20 // tri3 + ), + gsSPNTriangles_5b(12, 11, 28, // tri0 + 24, 25, 29, // tri1 + 29, 30, 24, // tri2 + 6, 31, 15 // tri3 + ), + gsSPVertex(&shp_1_v[61], 32, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 13, 14, // tri1 + 15, 16, 17, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 24, 25, 26, // tri1 + 27, 28, 29, // tri2 + 30, 31, 14 // tri3 + ), + gsSPVertex(&shp_1_v[93], 27, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 2, 3, 0 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 2, 1, // tri2 + 11, 7, 12 // tri3 + ), + gsSPNTriangles_5b(12, 13, 14, // tri0 + 15, 16, 17, // tri1 + 18, 15, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(16, 23, 24, // tri0 + 25, 4, 3, // tri1 + 26, 20, 22, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&shp_1_v[120], 24, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 7 // tri2 + ), + gsSPNTriangles_5b(7, 8, 5, // tri0 + 7, 5, 9, // tri1 + 1, 0, 9, // tri2 + 9, 5, 4 // tri3 + ), + gsSPNTriangles_5b(4, 1, 9, // tri0 + 9, 0, 7, // tri1 + 2, 6, 0, // tri2 + 5, 8, 3 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(8, // tri count + 10, 11, 12, // tri0 + 13, 14, 15, // tri1 + 15, 14, 16 // tri2 + ), + gsSPNTriangles_5b(16, 11, 10, // tri0 + 10, 15, 16, // tri1 + 10, 12, 17, // tri2 + 17, 13, 15 // tri3 + ), + gsSPNTriangles_5b(17, 15, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(5, // tri count + 18, 19, 20, // tri0 + 21, 22, 20, // tri1 + 23, 21, 20 // tri2 + ), + gsSPNTriangles_5b(22, 18, 20, // tri0 + 20, 19, 23, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_shp_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&shp_1_v[175], 5, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&shp_1_v[180], 17, 5), -gsSPNTrianglesInit_5b( - 9, // tri count - 1, 2, 5, // tri0 - 3, 0, 6, // tri1 - 4, 7, 0 // tri2 -), -gsSPNTriangles_5b( - 0, 8, 9, // tri0 - 1, 10, 11, // tri1 - 1, 12, 4, // tri2 - 0, 13, 14 // tri3 -), -gsSPNTriangles_5b( - 1, 15, 16, // tri0 - 4, 17, 18, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 19, 20, 21, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&shp_1_v[175], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&shp_1_v[180], 17, 5), + gsSPNTrianglesInit_5b(9, // tri count + 1, 2, 5, // tri0 + 3, 0, 6, // tri1 + 4, 7, 0 // tri2 + ), + gsSPNTriangles_5b(0, 8, 9, // tri0 + 1, 10, 11, // tri1 + 1, 12, 4, // tri2 + 0, 13, 14 // tri3 + ), + gsSPNTriangles_5b(1, 15, 16, // tri0 + 4, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_shp_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&shp_1_v[197], 9, 0), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 0, 6, 1 // tri2 -), -gsSPNTriangles_5b( - 1, 6, 7, // tri0 - 2, 8, 0, // tri1 - 0, 8, 3, // tri2 - 5, 0, 3 // tri3 -), -gsSPNTriangles_5b( - 7, 2, 1, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&shp_1_v[197], 9, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 1 // tri2 + ), + gsSPNTriangles_5b(1, 6, 7, // tri0 + 2, 8, 0, // tri1 + 0, 8, 3, // tri2 + 5, 0, 3 // tri3 + ), + gsSPNTriangles_5b(7, 2, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_shp_model[] = { -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&shp_1_v[144], 5, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&shp_1_v[149], 17, 5), -gsSPNTrianglesInit_5b( - 9, // tri count - 2, 1, 5, // tri0 - 0, 3, 6, // tri1 - 0, 7, 4 // tri2 -), -gsSPNTriangles_5b( - 0, 8, 9, // tri0 - 1, 10, 11, // tri1 - 4, 12, 1, // tri2 - 0, 13, 14 // tri3 -), -gsSPNTriangles_5b( - 1, 15, 16, // tri0 - 4, 17, 18, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 19, 20, 21, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&shp_1_v[144], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&shp_1_v[149], 17, 5), + gsSPNTrianglesInit_5b(9, // tri count + 2, 1, 5, // tri0 + 0, 3, 6, // tri1 + 0, 7, 4 // tri2 + ), + gsSPNTriangles_5b(0, 8, 9, // tri0 + 1, 10, 11, // tri1 + 4, 12, 1, // tri2 + 0, 13, 14 // tri3 + ), + gsSPNTriangles_5b(1, 15, 16, // tri0 + 4, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_shp_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&shp_1_v[166], 9, 0), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 1, 6, 2 // tri2 -), -gsSPNTriangles_5b( - 7, 6, 1, // tri0 - 2, 8, 0, // tri1 - 5, 8, 2, // tri2 - 5, 2, 3 // tri3 -), -gsSPNTriangles_5b( - 1, 0, 7, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&shp_1_v[166], 9, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 6, 2 // tri2 + ), + gsSPNTriangles_5b(7, 6, 1, // tri0 + 2, 8, 0, // tri1 + 5, 8, 2, // tri2 + 5, 2, 3 // tri3 + ), + gsSPNTriangles_5b(1, 0, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_shp_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&shp_1_v[206], 26, 0), -gsSPNTrianglesInit_5b( - 10, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 3, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 5, 4, 2, // tri0 - 2, 4, 0, // tri1 - 7, 8, 6, // tri2 - 6, 8, 3 // tri3 -), -gsSPNTriangles_5b( - 9, 10, 11, // tri0 - 12, 1, 0, // tri1 - 11, 10, 7, // tri2 - 0, 0, 0 // tri3 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 13, 14, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 16, 17, 18, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 3, // tri count - 19, 20, 21, // tri0 - 22, 23, 24, // tri1 - 22, 24, 25 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), -gsDPSetTileSize(0, 0, 0, 252, 252), -gsSPVertex(&shp_1_v[232], 14, 0), -gsSPNTrianglesInit_5b( - 12, // tri count - 0, 1, 2, // tri0 - 2, 1, 3, // tri1 - 4, 5, 2 // tri2 -), -gsSPNTriangles_5b( - 2, 5, 6, // tri0 - 2, 6, 0, // tri1 - 2, 3, 4, // tri2 - 7, 8, 9 // tri3 -), -gsSPNTriangles_5b( - 9, 8, 10, // tri0 - 11, 12, 9, // tri1 - 9, 12, 13, // tri2 - 9, 13, 7 // tri3 -), -gsSPNTriangles_5b( - 9, 10, 11, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&shp_1_v[206], 26, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 4, 2, // tri0 + 2, 4, 0, // tri1 + 7, 8, 6, // tri2 + 6, 8, 3 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 1, 0, // tri1 + 11, 10, 7, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 13, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 16, 17, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(3, // tri count + 19, 20, 21, // tri0 + 22, 23, 24, // tri1 + 22, 24, 25 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 252), + gsSPVertex(&shp_1_v[232], 14, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 5, 2 // tri2 + ), + gsSPNTriangles_5b(2, 5, 6, // tri0 + 2, 6, 0, // tri1 + 2, 3, 4, // tri2 + 7, 8, 9 // tri3 + ), + gsSPNTriangles_5b(9, 8, 10, // tri0 + 11, 12, 9, // tri1 + 9, 12, 13, // tri2 + 9, 13, 7 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_shp_model[] = { -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&shp_1_v[279], 5, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&shp_1_v[284], 17, 5), -gsSPNTrianglesInit_5b( - 9, // tri count - 1, 2, 5, // tri0 - 3, 0, 6, // tri1 - 4, 7, 0 // tri2 -), -gsSPNTriangles_5b( - 0, 8, 9, // tri0 - 1, 10, 11, // tri1 - 1, 12, 4, // tri2 - 0, 13, 14 // tri3 -), -gsSPNTriangles_5b( - 1, 15, 16, // tri0 - 4, 17, 18, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 19, 20, 21, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&shp_1_v[279], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&shp_1_v[284], 17, 5), + gsSPNTrianglesInit_5b(9, // tri count + 1, 2, 5, // tri0 + 3, 0, 6, // tri1 + 4, 7, 0 // tri2 + ), + gsSPNTriangles_5b(0, 8, 9, // tri0 + 1, 10, 11, // tri1 + 1, 12, 4, // tri2 + 0, 13, 14 // tri3 + ), + gsSPNTriangles_5b(1, 15, 16, // tri0 + 4, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_shp_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&shp_1_v[301], 11, 0), -gsSPNTrianglesInit_5b( - 10, // tri count - 0, 1, 2, // tri0 - 3, 4, 1, // tri1 - 1, 0, 3 // tri2 -), -gsSPNTriangles_5b( - 1, 5, 6, // tri0 - 2, 7, 0, // tri1 - 0, 7, 8, // tri2 - 9, 10, 3 // tri3 -), -gsSPNTriangles_5b( - 8, 3, 0, // tri0 - 6, 2, 1, // tri1 - 3, 8, 9, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&shp_1_v[301], 11, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 1, 0, 3 // tri2 + ), + gsSPNTriangles_5b(1, 5, 6, // tri0 + 2, 7, 0, // tri1 + 0, 7, 8, // tri2 + 9, 10, 3 // tri3 + ), + gsSPNTriangles_5b(8, 3, 0, // tri0 + 6, 2, 1, // tri1 + 3, 8, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_shp_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&shp_1_v[246], 5, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&shp_1_v[251], 17, 5), -gsSPNTrianglesInit_5b( - 9, // tri count - 2, 1, 5, // tri0 - 0, 3, 6, // tri1 - 0, 7, 4 // tri2 -), -gsSPNTriangles_5b( - 0, 8, 9, // tri0 - 1, 10, 11, // tri1 - 4, 12, 1, // tri2 - 0, 13, 14 // tri3 -), -gsSPNTriangles_5b( - 1, 15, 16, // tri0 - 4, 17, 18, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 19, 20, 21, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&shp_1_v[246], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&shp_1_v[251], 17, 5), + gsSPNTrianglesInit_5b(9, // tri count + 2, 1, 5, // tri0 + 0, 3, 6, // tri1 + 0, 7, 4 // tri2 + ), + gsSPNTriangles_5b(0, 8, 9, // tri0 + 1, 10, 11, // tri1 + 4, 12, 1, // tri2 + 0, 13, 14 // tri3 + ), + gsSPNTriangles_5b(1, 15, 16, // tri0 + 4, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_shp_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&shp_1_v[268], 11, 0), -gsSPNTrianglesInit_5b( - 10, // tri count - 0, 1, 2, // tri0 - 1, 3, 4, // tri1 - 4, 2, 1 // tri2 -), -gsSPNTriangles_5b( - 5, 6, 1, // tri0 - 2, 7, 0, // tri1 - 8, 7, 2, // tri2 - 4, 9, 10 // tri3 -), -gsSPNTriangles_5b( - 2, 4, 8, // tri0 - 1, 0, 5, // tri1 - 10, 8, 4, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&shp_1_v[268], 11, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 4, 2, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 1, // tri0 + 2, 7, 0, // tri1 + 8, 7, 2, // tri2 + 4, 9, 10 // tri3 + ), + gsSPNTriangles_5b(2, 4, 8, // tri0 + 1, 0, 5, // tri1 + 10, 8, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx base_shp_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), -gsDPSetTileSize(0, 0, 0, 252, 252), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&shp_1_v[312], 14, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 2, // tri0 - 2, 1, 3, // tri1 - 4, 5, 2 // tri2 -), -gsSPNTriangles_5b( - 2, 5, 6, // tri0 - 2, 6, 0, // tri1 - 2, 3, 4, // tri2 - 0, 0, 0 // tri3 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 6, // tri count - 7, 8, 9, // tri0 - 9, 8, 10, // tri1 - 11, 12, 9 // tri2 -), -gsSPNTriangles_5b( - 9, 12, 13, // tri0 - 9, 13, 7, // tri1 - 9, 10, 11, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 252), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&shp_1_v[312], 14, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 5, 2 // tri2 + ), + gsSPNTriangles_5b(2, 5, 6, // tri0 + 2, 6, 0, // tri1 + 2, 3, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(6, // tri count + 7, 8, 9, // tri0 + 9, 8, 10, // tri1 + 11, 12, 9 // tri2 + ), + gsSPNTriangles_5b(9, 12, 13, // tri0 + 9, 13, 7, // tri1 + 9, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_shp_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -606,4 +537,4 @@ static cKF_Joint_R_c cKF_je_r_shp_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_shp_1 = { 26, 11, cKF_je_r_shp_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_shp_1 = { 26, 11, cKF_je_r_shp_1_tbl }; diff --git a/src/data/npc/model/mdl/snt_1.c b/src/data/npc/model/mdl/snt_1.c index a6279d0e..dbe979b1 100644 --- a/src/data/npc/model/mdl/snt_1.c +++ b/src/data/npc/model/mdl/snt_1.c @@ -6,674 +6,585 @@ static Vtx snt_1_v[] = { }; static Gfx head_snt_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&snt_1_v[0], 26, 0), -gsSPNTrianglesInit_5b( - 10, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 1, 4, 5 // tri2 -), -gsSPNTriangles_5b( - 1, 5, 2, // tri0 - 5, 6, 7, // tri1 - 6, 0, 3, // tri2 - 7, 2, 5 // tri3 -), -gsSPNTriangles_5b( - 3, 2, 7, // tri0 - 5, 4, 6, // tri1 - 7, 6, 3, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 19, // tri count - 8, 9, 10, // tri0 - 11, 12, 13, // tri1 - 13, 14, 11 // tri2 -), -gsSPNTriangles_5b( - 8, 15, 9, // tri0 - 16, 12, 17, // tri1 - 17, 8, 16, // tri2 - 15, 8, 18 // tri3 -), -gsSPNTriangles_5b( - 19, 20, 18, // tri0 - 21, 11, 22, // tri1 - 23, 19, 8, // tri2 - 23, 8, 17 // tri3 -), -gsSPNTriangles_5b( - 10, 16, 8, // tri0 - 14, 24, 11, // tri1 - 12, 11, 17, // tri2 - 17, 11, 21 // tri3 -), -gsSPNTriangles_5b( - 17, 21, 23, // tri0 - 18, 8, 19, // tri1 - 22, 25, 21, // tri2 - 22, 11, 24 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&snt_1_v[26], 29, 0), -gsSPNTrianglesInit_5b( - 37, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 9, 10, 11, // tri0 - 5, 9, 12, // tri1 - 5, 12, 13, // tri2 - 12, 9, 14 // tri3 -), -gsSPNTriangles_5b( - 13, 15, 16, // tri0 - 5, 16, 3, // tri1 - 11, 14, 9, // tri2 - 17, 2, 1 // tri3 -), -gsSPNTriangles_5b( - 4, 3, 18, // tri0 - 8, 7, 19, // tri1 - 18, 11, 10, // tri2 - 0, 20, 1 // tri3 -), -gsSPNTriangles_5b( - 21, 2, 17, // tri0 - 8, 11, 6, // tri1 - 1, 7, 6, // tri2 - 1, 6, 17 // tri3 -), -gsSPNTriangles_5b( - 11, 8, 22, // tri0 - 7, 1, 20, // tri1 - 9, 5, 4, // tri2 - 9, 4, 10 // tri3 -), -gsSPNTriangles_5b( - 23, 19, 20, // tri0 - 22, 14, 11, // tri1 - 17, 6, 18, // tri2 - 3, 21, 17 // tri3 -), -gsSPNTriangles_5b( - 18, 6, 11, // tri0 - 17, 18, 3, // tri1 - 20, 19, 7, // tri2 - 0, 24, 25 // tri3 -), -gsSPNTriangles_5b( - 14, 26, 12, // tri0 - 27, 26, 14, // tri1 - 16, 5, 13, // tri2 - 16, 15, 28 // tri3 -), -gsSPNTriangles_5b( - 18, 10, 4, // tri0 - 19, 22, 8, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 252, 255, 255), -gsSPVertex(&snt_1_v[55], 23, 0), -gsSPNTrianglesInit_5b( - 5, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 2, 4 // tri2 -), -gsSPNTriangles_5b( - 2, 6, 0, // tri0 - 4, 3, 6, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPNTrianglesInit_5b( - 4, // tri count - 7, 8, 9, // tri0 - 9, 10, 7, // tri1 - 7, 10, 11 // tri2 -), -gsSPNTriangles_5b( - 11, 8, 7, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 11, // tri count - 12, 13, 14, // tri0 - 15, 16, 17, // tri1 - 17, 16, 18 // tri2 -), -gsSPNTriangles_5b( - 18, 19, 17, // tri0 - 17, 19, 20, // tri1 - 12, 21, 22, // tri2 - 17, 12, 14 // tri3 -), -gsSPNTriangles_5b( - 17, 14, 15, // tri0 - 22, 13, 12, // tri1 - 20, 21, 12, // tri2 - 12, 17, 20 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000180, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&snt_1_v[78], 16, 0), -gsSPNTrianglesInit_5b( - 10, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 1, 6, 2 // tri2 -), -gsSPNTriangles_5b( - 4, 7, 5, // tri0 - 5, 8, 3, // tri1 - 9, 10, 2, // tri2 - 11, 12, 3 // tri3 -), -gsSPNTriangles_5b( - 1, 13, 6, // tri0 - 3, 14, 11, // tri1 - 2, 15, 9, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&snt_1_v[94], 17, 0), -gsSPNTrianglesInit_5b( - 30, // tri count - 0, 1, 2, // tri0 - 1, 3, 2, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 7, 8, 5, // tri0 - 7, 9, 10, // tri1 - 11, 8, 7, // tri2 - 11, 7, 12 // tri3 -), -gsSPNTriangles_5b( - 12, 13, 3, // tri0 - 4, 14, 15, // tri1 - 15, 14, 2, // tri2 - 14, 4, 2 // tri3 -), -gsSPNTriangles_5b( - 10, 13, 12, // tri0 - 10, 9, 13, // tri1 - 12, 7, 10, // tri2 - 4, 6, 0 // tri3 -), -gsSPNTriangles_5b( - 4, 0, 2, // tri0 - 5, 8, 11, // tri1 - 5, 11, 1, // tri2 - 0, 6, 5 // tri3 -), -gsSPNTriangles_5b( - 0, 5, 1, // tri0 - 11, 12, 1, // tri1 - 16, 9, 7, // tri2 - 3, 13, 9 // tri3 -), -gsSPNTriangles_5b( - 3, 9, 16, // tri0 - 16, 7, 5, // tri1 - 1, 12, 3, // tri2 - 4, 16, 5 // tri3 -), -gsSPNTriangles_5b( - 16, 4, 15, // tri0 - 3, 15, 2, // tri1 - 16, 15, 3, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&snt_1_v[111], 17, 0), -gsSPNTrianglesInit_5b( - 30, // tri count - 0, 1, 2, // tri0 - 0, 3, 1, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 5, 7, 8, // tri0 - 9, 10, 8, // tri1 - 11, 8, 7, // tri2 - 11, 7, 12 // tri3 -), -gsSPNTriangles_5b( - 3, 13, 11, // tri0 - 14, 15, 6, // tri1 - 0, 15, 14, // tri2 - 0, 6, 15 // tri3 -), -gsSPNTriangles_5b( - 11, 13, 9, // tri0 - 13, 10, 9, // tri1 - 9, 8, 11, // tri2 - 0, 2, 4 // tri3 -), -gsSPNTriangles_5b( - 0, 4, 6, // tri0 - 1, 12, 7, // tri1 - 1, 7, 5, // tri2 - 1, 5, 4 // tri3 -), -gsSPNTriangles_5b( - 1, 4, 2, // tri0 - 1, 11, 12, // tri1 - 8, 10, 16, // tri2 - 16, 10, 13 // tri3 -), -gsSPNTriangles_5b( - 16, 13, 3, // tri0 - 5, 8, 16, // tri1 - 3, 11, 1, // tri2 - 5, 16, 6 // tri3 -), -gsSPNTriangles_5b( - 14, 6, 16, // tri0 - 0, 14, 3, // tri1 - 3, 14, 16, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&snt_1_v[0], 26, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b(1, 5, 2, // tri0 + 5, 6, 7, // tri1 + 6, 0, 3, // tri2 + 7, 2, 5 // tri3 + ), + gsSPNTriangles_5b(3, 2, 7, // tri0 + 5, 4, 6, // tri1 + 7, 6, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(19, // tri count + 8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 13, 14, 11 // tri2 + ), + gsSPNTriangles_5b(8, 15, 9, // tri0 + 16, 12, 17, // tri1 + 17, 8, 16, // tri2 + 15, 8, 18 // tri3 + ), + gsSPNTriangles_5b(19, 20, 18, // tri0 + 21, 11, 22, // tri1 + 23, 19, 8, // tri2 + 23, 8, 17 // tri3 + ), + gsSPNTriangles_5b(10, 16, 8, // tri0 + 14, 24, 11, // tri1 + 12, 11, 17, // tri2 + 17, 11, 21 // tri3 + ), + gsSPNTriangles_5b(17, 21, 23, // tri0 + 18, 8, 19, // tri1 + 22, 25, 21, // tri2 + 22, 11, 24 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&snt_1_v[26], 29, 0), + gsSPNTrianglesInit_5b(37, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 5, 9, 12, // tri1 + 5, 12, 13, // tri2 + 12, 9, 14 // tri3 + ), + gsSPNTriangles_5b(13, 15, 16, // tri0 + 5, 16, 3, // tri1 + 11, 14, 9, // tri2 + 17, 2, 1 // tri3 + ), + gsSPNTriangles_5b(4, 3, 18, // tri0 + 8, 7, 19, // tri1 + 18, 11, 10, // tri2 + 0, 20, 1 // tri3 + ), + gsSPNTriangles_5b(21, 2, 17, // tri0 + 8, 11, 6, // tri1 + 1, 7, 6, // tri2 + 1, 6, 17 // tri3 + ), + gsSPNTriangles_5b(11, 8, 22, // tri0 + 7, 1, 20, // tri1 + 9, 5, 4, // tri2 + 9, 4, 10 // tri3 + ), + gsSPNTriangles_5b(23, 19, 20, // tri0 + 22, 14, 11, // tri1 + 17, 6, 18, // tri2 + 3, 21, 17 // tri3 + ), + gsSPNTriangles_5b(18, 6, 11, // tri0 + 17, 18, 3, // tri1 + 20, 19, 7, // tri2 + 0, 24, 25 // tri3 + ), + gsSPNTriangles_5b(14, 26, 12, // tri0 + 27, 26, 14, // tri1 + 16, 5, 13, // tri2 + 16, 15, 28 // tri3 + ), + gsSPNTriangles_5b(18, 10, 4, // tri0 + 19, 22, 8, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 252, 255, 255), + gsSPVertex(&snt_1_v[55], 23, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 2, 4 // tri2 + ), + gsSPNTriangles_5b(2, 6, 0, // tri0 + 4, 3, 6, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPNTrianglesInit_5b(4, // tri count + 7, 8, 9, // tri0 + 9, 10, 7, // tri1 + 7, 10, 11 // tri2 + ), + gsSPNTriangles_5b(11, 8, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(11, // tri count + 12, 13, 14, // tri0 + 15, 16, 17, // tri1 + 17, 16, 18 // tri2 + ), + gsSPNTriangles_5b(18, 19, 17, // tri0 + 17, 19, 20, // tri1 + 12, 21, 22, // tri2 + 17, 12, 14 // tri3 + ), + gsSPNTriangles_5b(17, 14, 15, // tri0 + 22, 13, 12, // tri1 + 20, 21, 12, // tri2 + 12, 17, 20 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x180, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&snt_1_v[78], 16, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 6, 2 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 5, 8, 3, // tri1 + 9, 10, 2, // tri2 + 11, 12, 3 // tri3 + ), + gsSPNTriangles_5b(1, 13, 6, // tri0 + 3, 14, 11, // tri1 + 2, 15, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&snt_1_v[94], 17, 0), + gsSPNTrianglesInit_5b(30, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 5, // tri0 + 7, 9, 10, // tri1 + 11, 8, 7, // tri2 + 11, 7, 12 // tri3 + ), + gsSPNTriangles_5b(12, 13, 3, // tri0 + 4, 14, 15, // tri1 + 15, 14, 2, // tri2 + 14, 4, 2 // tri3 + ), + gsSPNTriangles_5b(10, 13, 12, // tri0 + 10, 9, 13, // tri1 + 12, 7, 10, // tri2 + 4, 6, 0 // tri3 + ), + gsSPNTriangles_5b(4, 0, 2, // tri0 + 5, 8, 11, // tri1 + 5, 11, 1, // tri2 + 0, 6, 5 // tri3 + ), + gsSPNTriangles_5b(0, 5, 1, // tri0 + 11, 12, 1, // tri1 + 16, 9, 7, // tri2 + 3, 13, 9 // tri3 + ), + gsSPNTriangles_5b(3, 9, 16, // tri0 + 16, 7, 5, // tri1 + 1, 12, 3, // tri2 + 4, 16, 5 // tri3 + ), + gsSPNTriangles_5b(16, 4, 15, // tri0 + 3, 15, 2, // tri1 + 16, 15, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&snt_1_v[111], 17, 0), + gsSPNTrianglesInit_5b(30, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 9, 10, 8, // tri1 + 11, 8, 7, // tri2 + 11, 7, 12 // tri3 + ), + gsSPNTriangles_5b(3, 13, 11, // tri0 + 14, 15, 6, // tri1 + 0, 15, 14, // tri2 + 0, 6, 15 // tri3 + ), + gsSPNTriangles_5b(11, 13, 9, // tri0 + 13, 10, 9, // tri1 + 9, 8, 11, // tri2 + 0, 2, 4 // tri3 + ), + gsSPNTriangles_5b(0, 4, 6, // tri0 + 1, 12, 7, // tri1 + 1, 7, 5, // tri2 + 1, 5, 4 // tri3 + ), + gsSPNTriangles_5b(1, 4, 2, // tri0 + 1, 11, 12, // tri1 + 8, 10, 16, // tri2 + 16, 10, 13 // tri3 + ), + gsSPNTriangles_5b(16, 13, 3, // tri0 + 5, 8, 16, // tri1 + 3, 11, 1, // tri2 + 5, 16, 6 // tri3 + ), + gsSPNTriangles_5b(14, 6, 16, // tri0 + 0, 14, 3, // tri1 + 3, 14, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_snt_model[] = { -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&snt_1_v[128], 4, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&snt_1_v[132], 16, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 4, 5, // tri0 - 3, 6, 7, // tri1 - 3, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 10, // tri0 - 3, 1, 11, // tri1 - 0, 12, 13, // tri2 - 0, 2, 14 // tri3 -), -gsSPNTriangles_5b( - 2, 3, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 16, 17, 18, // tri0 - 17, 16, 19, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&snt_1_v[128], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&snt_1_v[132], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 0, 4, 5, // tri0 + 3, 6, 7, // tri1 + 3, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 0, 10, // tri0 + 3, 1, 11, // tri1 + 0, 12, 13, // tri2 + 0, 2, 14 // tri3 + ), + gsSPNTriangles_5b(2, 3, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_snt_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&snt_1_v[148], 3, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&snt_1_v[151], 11, 3), -gsSPNTrianglesInit_5b( - 7, // tri count - 2, 3, 4, // tri0 - 0, 5, 6, // tri1 - 0, 1, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 2, 8, // tri0 - 1, 10, 9, // tri1 - 2, 12, 11, // tri2 - 2, 0, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&snt_1_v[148], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&snt_1_v[151], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 2, 3, 4, // tri0 + 0, 5, 6, // tri1 + 0, 1, 7 // tri2 + ), + gsSPNTriangles_5b(1, 2, 8, // tri0 + 1, 10, 9, // tri1 + 2, 12, 11, // tri2 + 2, 0, 13 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_snt_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&snt_1_v[162], 6, 0), -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&snt_1_v[168], 22, 6), -gsSPNTrianglesInit_5b( - 14, // tri count - 0, 4, 6, // tri0 - 4, 3, 7, // tri1 - 3, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 10, // tri0 - 2, 1, 11, // tri1 - 2, 12, 13, // tri2 - 0, 14, 15 // tri3 -), -gsSPNTriangles_5b( - 0, 16, 17, // tri0 - 3, 18, 19, // tri1 - 5, 20, 21, // tri2 - 3, 5, 22 // tri3 -), -gsSPNTriangles_5b( - 2, 23, 24, // tri0 - 2, 25, 5, // tri1 - 1, 26, 27, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&snt_1_v[190], 25, 0), -gsSPNTrianglesInit_5b( - 22, // tri count - 0, 1, 2, // tri0 - 1, 3, 4, // tri1 - 0, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 6, 5, 7, // tri0 - 2, 8, 0, // tri1 - 8, 9, 5, // tri2 - 9, 10, 7 // tri3 -), -gsSPNTriangles_5b( - 7, 10, 11, // tri0 - 8, 2, 12, // tri1 - 9, 12, 13, // tri2 - 10, 13, 14 // tri3 -), -gsSPNTriangles_5b( - 6, 3, 1, // tri0 - 12, 9, 8, // tri1 - 5, 0, 8, // tri2 - 7, 5, 9 // tri3 -), -gsSPNTriangles_5b( - 13, 10, 9, // tri0 - 13, 12, 4, // tri1 - 2, 1, 4, // tri2 - 6, 1, 0 // tri3 -), -gsSPNTriangles_5b( - 4, 12, 2, // tri0 - 11, 10, 15, // tri1 - 10, 14, 15, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 8, // tri count - 16, 17, 18, // tri0 - 16, 19, 17, // tri1 - 19, 20, 21 // tri2 -), -gsSPNTriangles_5b( - 19, 16, 20, // tri0 - 21, 22, 19, // tri1 - 17, 19, 22, // tri2 - 23, 17, 22 // tri3 -), -gsSPNTriangles_5b( - 21, 20, 24, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&snt_1_v[215], 28, 0), -gsSPNTrianglesInit_5b( - 18, // tri count - 0, 1, 2, // tri0 - 2, 3, 0, // tri1 - 4, 1, 0 // tri2 -), -gsSPNTriangles_5b( - 3, 5, 0, // tri0 - 3, 6, 7, // tri1 - 8, 4, 0, // tri2 - 2, 6, 3 // tri3 -), -gsSPNTriangles_5b( - 8, 9, 10, // tri0 - 0, 5, 8, // tri1 - 11, 5, 12, // tri2 - 7, 12, 3 // tri3 -), -gsSPNTriangles_5b( - 11, 8, 5, // tri0 - 8, 11, 9, // tri1 - 13, 6, 1, // tri2 - 10, 14, 4 // tri3 -), -gsSPNTriangles_5b( - 14, 13, 1, // tri0 - 10, 4, 8, // tri1 - 1, 6, 2, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 253, 255, 255), -gsSPNTrianglesInit_5b( - 19, // tri count - 15, 16, 17, // tri0 - 15, 18, 19, // tri1 - 20, 15, 19 // tri2 -), -gsSPNTriangles_5b( - 21, 16, 20, // tri0 - 21, 20, 19, // tri1 - 22, 23, 16, // tri2 - 22, 16, 21 // tri3 -), -gsSPNTriangles_5b( - 24, 25, 19, // tri0 - 25, 26, 22, // tri1 - 26, 27, 22, // tri2 - 24, 19, 18 // tri3 -), -gsSPNTriangles_5b( - 25, 24, 26, // tri0 - 27, 18, 22, // tri1 - 27, 26, 24, // tri2 - 25, 21, 19 // tri3 -), -gsSPNTriangles_5b( - 25, 22, 21, // tri0 - 18, 27, 24, // tri1 - 17, 22, 18, // tri2 - 17, 18, 15 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&snt_1_v[162], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&snt_1_v[168], 22, 6), + gsSPNTrianglesInit_5b(14, // tri count + 0, 4, 6, // tri0 + 4, 3, 7, // tri1 + 3, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 0, 10, // tri0 + 2, 1, 11, // tri1 + 2, 12, 13, // tri2 + 0, 14, 15 // tri3 + ), + gsSPNTriangles_5b(0, 16, 17, // tri0 + 3, 18, 19, // tri1 + 5, 20, 21, // tri2 + 3, 5, 22 // tri3 + ), + gsSPNTriangles_5b(2, 23, 24, // tri0 + 2, 25, 5, // tri1 + 1, 26, 27, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&snt_1_v[190], 25, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 0, 5, 6 // tri2 + ), + gsSPNTriangles_5b(6, 5, 7, // tri0 + 2, 8, 0, // tri1 + 8, 9, 5, // tri2 + 9, 10, 7 // tri3 + ), + gsSPNTriangles_5b(7, 10, 11, // tri0 + 8, 2, 12, // tri1 + 9, 12, 13, // tri2 + 10, 13, 14 // tri3 + ), + gsSPNTriangles_5b(6, 3, 1, // tri0 + 12, 9, 8, // tri1 + 5, 0, 8, // tri2 + 7, 5, 9 // tri3 + ), + gsSPNTriangles_5b(13, 10, 9, // tri0 + 13, 12, 4, // tri1 + 2, 1, 4, // tri2 + 6, 1, 0 // tri3 + ), + gsSPNTriangles_5b(4, 12, 2, // tri0 + 11, 10, 15, // tri1 + 10, 14, 15, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(8, // tri count + 16, 17, 18, // tri0 + 16, 19, 17, // tri1 + 19, 20, 21 // tri2 + ), + gsSPNTriangles_5b(19, 16, 20, // tri0 + 21, 22, 19, // tri1 + 17, 19, 22, // tri2 + 23, 17, 22 // tri3 + ), + gsSPNTriangles_5b(21, 20, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&snt_1_v[215], 28, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 1, 0 // tri2 + ), + gsSPNTriangles_5b(3, 5, 0, // tri0 + 3, 6, 7, // tri1 + 8, 4, 0, // tri2 + 2, 6, 3 // tri3 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 0, 5, 8, // tri1 + 11, 5, 12, // tri2 + 7, 12, 3 // tri3 + ), + gsSPNTriangles_5b(11, 8, 5, // tri0 + 8, 11, 9, // tri1 + 13, 6, 1, // tri2 + 10, 14, 4 // tri3 + ), + gsSPNTriangles_5b(14, 13, 1, // tri0 + 10, 4, 8, // tri1 + 1, 6, 2, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 253, 255, 255), + gsSPNTrianglesInit_5b(19, // tri count + 15, 16, 17, // tri0 + 15, 18, 19, // tri1 + 20, 15, 19 // tri2 + ), + gsSPNTriangles_5b(21, 16, 20, // tri0 + 21, 20, 19, // tri1 + 22, 23, 16, // tri2 + 22, 16, 21 // tri3 + ), + gsSPNTriangles_5b(24, 25, 19, // tri0 + 25, 26, 22, // tri1 + 26, 27, 22, // tri2 + 24, 19, 18 // tri3 + ), + gsSPNTriangles_5b(25, 24, 26, // tri0 + 27, 18, 22, // tri1 + 27, 26, 24, // tri2 + 25, 21, 19 // tri3 + ), + gsSPNTriangles_5b(25, 22, 21, // tri0 + 18, 27, 24, // tri1 + 17, 22, 18, // tri2 + 17, 18, 15 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_snt_model[] = { -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&snt_1_v[273], 5, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&snt_1_v[278], 16, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 4, 0, 5, // tri0 - 0, 7, 6, // tri1 - 2, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 0, 1, 10, // tri0 - 1, 3, 11, // tri1 - 2, 4, 12, // tri2 - 1, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 15, 16, 17, // tri0 - 18, 19, 20, // tri1 - 18, 17, 19 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&snt_1_v[273], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&snt_1_v[278], 16, 5), + gsSPNTrianglesInit_5b(7, // tri count + 4, 0, 5, // tri0 + 0, 7, 6, // tri1 + 2, 9, 8 // tri2 + ), + gsSPNTriangles_5b(0, 1, 10, // tri0 + 1, 3, 11, // tri1 + 2, 4, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 18, 17, 19 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_snt_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&snt_1_v[294], 9, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 1, 3, 4, // tri1 - 1, 5, 2 // tri2 -), -gsSPNTriangles_5b( - 6, 4, 3, // tri0 - 6, 3, 7, // tri1 - 7, 8, 6, // tri2 - 4, 5, 1 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&snt_1_v[294], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 1, 5, 2 // tri2 + ), + gsSPNTriangles_5b(6, 4, 3, // tri0 + 6, 3, 7, // tri1 + 7, 8, 6, // tri2 + 4, 5, 1 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_snt_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&snt_1_v[243], 5, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&snt_1_v[248], 16, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 4, 5, // tri0 - 0, 7, 6, // tri1 - 2, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 10, // tri0 - 3, 1, 11, // tri1 - 4, 2, 12, // tri2 - 1, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 15, 16, 17, // tri0 - 18, 19, 20, // tri1 - 19, 15, 20 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&snt_1_v[243], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&snt_1_v[248], 16, 5), + gsSPNTrianglesInit_5b(7, // tri count + 0, 4, 5, // tri0 + 0, 7, 6, // tri1 + 2, 9, 8 // tri2 + ), + gsSPNTriangles_5b(1, 0, 10, // tri0 + 3, 1, 11, // tri1 + 4, 2, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 19, 15, 20 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_snt_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&snt_1_v[264], 9, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 3, 4, 1, // tri1 - 0, 5, 1 // tri2 -), -gsSPNTriangles_5b( - 4, 3, 6, // tri0 - 7, 4, 6, // tri1 - 6, 8, 7, // tri2 - 1, 5, 3 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&snt_1_v[264], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 0, 5, 1 // tri2 + ), + gsSPNTriangles_5b(4, 3, 6, // tri0 + 7, 4, 6, // tri1 + 6, 8, 7, // tri2 + 1, 5, 3 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx base_snt_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&snt_1_v[303], 13, 0), -gsSPNTrianglesInit_5b( - 18, // tri count - 0, 1, 2, // tri0 - 0, 3, 4, // tri1 - 0, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 7, 8, 1, // tri0 - 7, 1, 4, // tri1 - 9, 10, 11, // tri2 - 11, 12, 9 // tri3 -), -gsSPNTriangles_5b( - 0, 2, 5, // tri0 - 9, 7, 10, // tri1 - 12, 2, 8, // tri2 - 8, 7, 9 // tri3 -), -gsSPNTriangles_5b( - 12, 11, 6, // tri0 - 5, 12, 6, // tri1 - 6, 3, 0, // tri2 - 4, 1, 0 // tri3 -), -gsSPNTriangles_5b( - 8, 9, 12, // tri0 - 2, 1, 8, // tri1 - 12, 5, 2, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&snt_1_v[303], 13, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 0, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 1, // tri0 + 7, 1, 4, // tri1 + 9, 10, 11, // tri2 + 11, 12, 9 // tri3 + ), + gsSPNTriangles_5b(0, 2, 5, // tri0 + 9, 7, 10, // tri1 + 12, 2, 8, // tri2 + 8, 7, 9 // tri3 + ), + gsSPNTriangles_5b(12, 11, 6, // tri0 + 5, 12, 6, // tri1 + 6, 3, 0, // tri2 + 4, 1, 0 // tri3 + ), + gsSPNTriangles_5b(8, 9, 12, // tri0 + 2, 1, 8, // tri1 + 12, 5, 2, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_snt_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -705,4 +616,4 @@ static cKF_Joint_R_c cKF_je_r_snt_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_snt_1 = { 26, 9, cKF_je_r_snt_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_snt_1 = { 26, 9, cKF_je_r_snt_1_tbl }; diff --git a/src/data/npc/model/mdl/squ_1.c b/src/data/npc/model/mdl/squ_1.c index 053e13b7..57a5cfcd 100644 --- a/src/data/npc/model/mdl/squ_1.c +++ b/src/data/npc/model/mdl/squ_1.c @@ -6,719 +6,633 @@ static Vtx squ_1_v[] = { }; static Gfx head_squ_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&squ_1_v[0], 12, 0), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 1, 2, // tri0 - 3, 2, 4, // tri1 - 3, 4, 5 // tri2 -), -gsSPNTriangles_5b( - 6, 7, 8, // tri0 - 8, 9, 6, // tri1 - 10, 6, 9, // tri2 - 10, 9, 11 // tri3 -), -gsSPNTriangles_5b( - 2, 3, 0, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&squ_1_v[12], 25, 0), -gsSPNTrianglesInit_5b( - 32, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 2, 1, 4 // tri2 -), -gsSPNTriangles_5b( - 5, 6, 7, // tri0 - 4, 1, 8, // tri1 - 4, 8, 9, // tri2 - 10, 4, 9 // tri3 -), -gsSPNTriangles_5b( - 11, 0, 12, // tri0 - 12, 3, 13, // tri1 - 12, 0, 3, // tri2 - 11, 8, 1 // tri3 -), -gsSPNTriangles_5b( - 1, 0, 11, // tri0 - 14, 2, 4, // tri1 - 15, 3, 2, // tri2 - 16, 15, 2 // tri3 -), -gsSPNTriangles_5b( - 10, 17, 18, // tri0 - 7, 13, 3, // tri1 - 14, 4, 10, // tri2 - 3, 15, 7 // tri3 -), -gsSPNTriangles_5b( - 19, 5, 15, // tri0 - 20, 21, 19, // tri1 - 18, 14, 10, // tri2 - 7, 15, 5 // tri3 -), -gsSPNTriangles_5b( - 14, 18, 22, // tri0 - 23, 16, 14, // tri1 - 2, 14, 16, // tri2 - 15, 16, 23 // tri3 -), -gsSPNTriangles_5b( - 22, 24, 20, // tri0 - 14, 22, 23, // tri1 - 23, 19, 15, // tri2 - 19, 23, 20 // tri3 -), -gsSPNTriangles_5b( - 20, 23, 22, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&squ_1_v[37], 20, 0), -gsSPNTrianglesInit_5b( - 24, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 2, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 8, 9, 3, // tri0 - 10, 8, 3, // tri1 - 11, 0, 2, // tri2 - 12, 13, 11 // tri3 -), -gsSPNTriangles_5b( - 10, 13, 12, // tri0 - 7, 14, 15, // tri1 - 6, 14, 7, // tri2 - 10, 5, 16 // tri3 -), -gsSPNTriangles_5b( - 2, 7, 11, // tri0 - 17, 0, 11, // tri1 - 9, 8, 18, // tri2 - 3, 5, 10 // tri3 -), -gsSPNTriangles_5b( - 12, 8, 10, // tri0 - 16, 19, 13, // tri1 - 13, 10, 16, // tri2 - 11, 7, 12 // tri3 -), -gsSPNTriangles_5b( - 13, 17, 11, // tri0 - 8, 12, 15, // tri1 - 15, 12, 7, // tri2 - 15, 18, 8 // tri3 -), -gsSPNTriangles_5b( - 13, 19, 17, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&squ_1_v[57], 14, 0), -gsSPNTrianglesInit_5b( - 16, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 3, 6, 4 // tri2 -), -gsSPNTriangles_5b( - 1, 7, 2, // tri0 - 2, 7, 8, // tri1 - 7, 1, 5, // tri2 - 7, 5, 9 // tri3 -), -gsSPNTriangles_5b( - 7, 10, 8, // tri0 - 7, 9, 10, // tri1 - 8, 11, 2, // tri2 - 9, 5, 4 // tri3 -), -gsSPNTriangles_5b( - 11, 12, 2, // tri0 - 11, 13, 12, // tri1 - 0, 3, 5, // tri2 - 5, 1, 0 // tri3 -), -gsSPNTriangles_5b( - 2, 12, 0, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&squ_1_v[71], 20, 0), -gsSPNTrianglesInit_5b( - 20, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 4, 0, 3 // tri2 -), -gsSPNTriangles_5b( - 4, 3, 5, // tri0 - 6, 7, 8, // tri1 - 0, 4, 9, // tri2 - 10, 8, 11 // tri3 -), -gsSPNTriangles_5b( - 4, 5, 12, // tri0 - 4, 12, 13, // tri1 - 14, 15, 16, // tri2 - 14, 16, 17 // tri3 -), -gsSPNTriangles_5b( - 10, 14, 17, // tri0 - 10, 17, 6, // tri1 - 9, 1, 0, // tri2 - 6, 8, 10 // tri3 -), -gsSPNTriangles_5b( - 18, 9, 4, // tri0 - 14, 11, 19, // tri1 - 11, 14, 10, // tri2 - 19, 15, 14 // tri3 -), -gsSPNTriangles_5b( - 4, 13, 18, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&squ_1_v[0], 12, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 8, 9, 6, // tri1 + 10, 6, 9, // tri2 + 10, 9, 11 // tri3 + ), + gsSPNTriangles_5b(2, 3, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&squ_1_v[12], 25, 0), + gsSPNTrianglesInit_5b(32, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 2, 1, 4 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 4, 1, 8, // tri1 + 4, 8, 9, // tri2 + 10, 4, 9 // tri3 + ), + gsSPNTriangles_5b(11, 0, 12, // tri0 + 12, 3, 13, // tri1 + 12, 0, 3, // tri2 + 11, 8, 1 // tri3 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 14, 2, 4, // tri1 + 15, 3, 2, // tri2 + 16, 15, 2 // tri3 + ), + gsSPNTriangles_5b(10, 17, 18, // tri0 + 7, 13, 3, // tri1 + 14, 4, 10, // tri2 + 3, 15, 7 // tri3 + ), + gsSPNTriangles_5b(19, 5, 15, // tri0 + 20, 21, 19, // tri1 + 18, 14, 10, // tri2 + 7, 15, 5 // tri3 + ), + gsSPNTriangles_5b(14, 18, 22, // tri0 + 23, 16, 14, // tri1 + 2, 14, 16, // tri2 + 15, 16, 23 // tri3 + ), + gsSPNTriangles_5b(22, 24, 20, // tri0 + 14, 22, 23, // tri1 + 23, 19, 15, // tri2 + 19, 23, 20 // tri3 + ), + gsSPNTriangles_5b(20, 23, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&squ_1_v[37], 20, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 3, // tri0 + 10, 8, 3, // tri1 + 11, 0, 2, // tri2 + 12, 13, 11 // tri3 + ), + gsSPNTriangles_5b(10, 13, 12, // tri0 + 7, 14, 15, // tri1 + 6, 14, 7, // tri2 + 10, 5, 16 // tri3 + ), + gsSPNTriangles_5b(2, 7, 11, // tri0 + 17, 0, 11, // tri1 + 9, 8, 18, // tri2 + 3, 5, 10 // tri3 + ), + gsSPNTriangles_5b(12, 8, 10, // tri0 + 16, 19, 13, // tri1 + 13, 10, 16, // tri2 + 11, 7, 12 // tri3 + ), + gsSPNTriangles_5b(13, 17, 11, // tri0 + 8, 12, 15, // tri1 + 15, 12, 7, // tri2 + 15, 18, 8 // tri3 + ), + gsSPNTriangles_5b(13, 19, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&squ_1_v[57], 14, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(1, 7, 2, // tri0 + 2, 7, 8, // tri1 + 7, 1, 5, // tri2 + 7, 5, 9 // tri3 + ), + gsSPNTriangles_5b(7, 10, 8, // tri0 + 7, 9, 10, // tri1 + 8, 11, 2, // tri2 + 9, 5, 4 // tri3 + ), + gsSPNTriangles_5b(11, 12, 2, // tri0 + 11, 13, 12, // tri1 + 0, 3, 5, // tri2 + 5, 1, 0 // tri3 + ), + gsSPNTriangles_5b(2, 12, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&squ_1_v[71], 20, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b(4, 3, 5, // tri0 + 6, 7, 8, // tri1 + 0, 4, 9, // tri2 + 10, 8, 11 // tri3 + ), + gsSPNTriangles_5b(4, 5, 12, // tri0 + 4, 12, 13, // tri1 + 14, 15, 16, // tri2 + 14, 16, 17 // tri3 + ), + gsSPNTriangles_5b(10, 14, 17, // tri0 + 10, 17, 6, // tri1 + 9, 1, 0, // tri2 + 6, 8, 10 // tri3 + ), + gsSPNTriangles_5b(18, 9, 4, // tri0 + 14, 11, 19, // tri1 + 11, 14, 10, // tri2 + 19, 15, 14 // tri3 + ), + gsSPNTriangles_5b(4, 13, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_squ_model[] = { -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&squ_1_v[127], 5, 0), -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&squ_1_v[132], 16, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 5, 6, // tri0 - 4, 7, 8, // tri1 - 4, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 0, 1, 11, // tri0 - 2, 4, 12, // tri1 - 0, 13, 14, // tri2 - 3, 0, 15 // tri3 -), -gsSPNTriangles_5b( - 4, 3, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 20, 19, 18, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&squ_1_v[127], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&squ_1_v[132], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(0, 1, 11, // tri0 + 2, 4, 12, // tri1 + 0, 13, 14, // tri2 + 3, 0, 15 // tri3 + ), + gsSPNTriangles_5b(4, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 19, 18, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_squ_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&squ_1_v[148], 4, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&squ_1_v[152], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 0, 6, 7, // tri1 - 2, 0, 8 // tri2 -), -gsSPNTriangles_5b( - 3, 2, 9, // tri0 - 2, 11, 10, // tri1 - 3, 13, 12, // tri2 - 1, 3, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&squ_1_v[148], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&squ_1_v[152], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 2, 0, 8 // tri2 + ), + gsSPNTriangles_5b(3, 2, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 1, 3, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_squ_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&squ_1_v[91], 5, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&squ_1_v[96], 16, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 5, 6, // tri0 - 4, 7, 8, // tri1 - 4, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 11, // tri0 - 4, 2, 12, // tri1 - 0, 13, 14, // tri2 - 0, 3, 15 // tri3 -), -gsSPNTriangles_5b( - 3, 4, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 18, 17, 20, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&squ_1_v[91], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&squ_1_v[96], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 + ), + gsSPNTriangles_5b(3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_squ_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&squ_1_v[112], 4, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&squ_1_v[116], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 0, 6, 7, // tri1 - 0, 2, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 3, 9, // tri0 - 2, 11, 10, // tri1 - 3, 13, 12, // tri2 - 3, 1, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&squ_1_v[112], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&squ_1_v[116], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 + ), + gsSPNTriangles_5b(2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_squ_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&squ_1_v[163], 7, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&squ_1_v[170], 20, 7), -gsSPNTrianglesInit_5b( - 13, // tri count - 3, 1, 7, // tri0 - 6, 8, 9, // tri1 - 3, 10, 11 // tri2 -), -gsSPNTriangles_5b( - 2, 12, 0, // tri0 - 2, 13, 14, // tri1 - 1, 16, 15, // tri2 - 0, 17, 18 // tri3 -), -gsSPNTriangles_5b( - 0, 19, 20, // tri0 - 1, 21, 22, // tri1 - 6, 3, 23, // tri2 - 2, 6, 24 // tri3 -), -gsSPNTriangles_5b( - 4, 0, 25, // tri0 - 5, 26, 1, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&squ_1_v[190], 9, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 0, 3, 4, // tri1 - 0, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 4, 3, 7, // tri0 - 2, 5, 0, // tri1 - 1, 8, 2, // tri2 - 6, 3, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&squ_1_v[163], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&squ_1_v[170], 20, 7), + gsSPNTrianglesInit_5b(13, // tri count + 3, 1, 7, // tri0 + 6, 8, 9, // tri1 + 3, 10, 11 // tri2 + ), + gsSPNTriangles_5b(2, 12, 0, // tri0 + 2, 13, 14, // tri1 + 1, 16, 15, // tri2 + 0, 17, 18 // tri3 + ), + gsSPNTriangles_5b(0, 19, 20, // tri0 + 1, 21, 22, // tri1 + 6, 3, 23, // tri2 + 2, 6, 24 // tri3 + ), + gsSPNTriangles_5b(4, 0, 25, // tri0 + 5, 26, 1, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&squ_1_v[190], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 0, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 3, 7, // tri0 + 2, 5, 0, // tri1 + 1, 8, 2, // tri2 + 6, 3, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail1_squ_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&squ_1_v[242], 13, 0), -gsSPNTrianglesInit_5b( - 17, // tri count - 0, 1, 2, // tri0 - 0, 3, 1, // tri1 - 4, 3, 5 // tri2 -), -gsSPNTriangles_5b( - 6, 7, 8, // tri0 - 8, 9, 6, // tri1 - 10, 9, 11, // tri2 - 6, 3, 4 // tri3 -), -gsSPNTriangles_5b( - 4, 7, 6, // tri0 - 9, 2, 6, // tri1 - 5, 3, 10, // tri2 - 2, 9, 0 // tri3 -), -gsSPNTriangles_5b( - 0, 10, 3, // tri0 - 9, 10, 0, // tri1 - 11, 9, 8, // tri2 - 11, 12, 10 // tri3 -), -gsSPNTriangles_5b( - 10, 12, 5, // tri0 - 6, 1, 3, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&squ_1_v[242], 13, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 3, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 8, 9, 6, // tri1 + 10, 9, 11, // tri2 + 6, 3, 4 // tri3 + ), + gsSPNTriangles_5b(4, 7, 6, // tri0 + 9, 2, 6, // tri1 + 5, 3, 10, // tri2 + 2, 9, 0 // tri3 + ), + gsSPNTriangles_5b(0, 10, 3, // tri0 + 9, 10, 0, // tri1 + 11, 9, 8, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(10, 12, 5, // tri0 + 6, 1, 3, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail2_squ_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&squ_1_v[199], 6, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&squ_1_v[205], 16, 6), -gsSPNTrianglesInit_5b( - 11, // tri count - 3, 6, 7, // tri0 - 5, 1, 8, // tri1 - 5, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 2, 0, 11, // tri0 - 0, 3, 12, // tri1 - 0, 13, 14, // tri2 - 2, 15, 16 // tri3 -), -gsSPNTriangles_5b( - 2, 17, 1, // tri0 - 4, 18, 3, // tri1 - 4, 5, 19, // tri2 - 5, 20, 21 // tri3 -), -gsSPVertex(&squ_1_v[221], 21, 0), -gsSPNTrianglesInit_5b( - 35, // tri count - 0, 1, 2, // tri0 - 0, 3, 4, // tri1 - 0, 4, 5 // tri2 -), -gsSPNTriangles_5b( - 6, 7, 8, // tri0 - 9, 10, 11, // tri1 - 9, 11, 5, // tri2 - 6, 12, 7 // tri3 -), -gsSPNTriangles_5b( - 13, 10, 14, // tri0 - 9, 7, 12, // tri1 - 5, 4, 7, // tri2 - 5, 7, 9 // tri3 -), -gsSPNTriangles_5b( - 8, 7, 4, // tri0 - 13, 15, 16, // tri1 - 17, 18, 19, // tri2 - 17, 19, 15 // tri3 -), -gsSPNTriangles_5b( - 13, 17, 15, // tri0 - 19, 18, 8, // tri1 - 11, 10, 13, // tri2 - 20, 2, 16 // tri3 -), -gsSPNTriangles_5b( - 11, 13, 1, // tri0 - 10, 12, 14, // tri1 - 12, 10, 9, // tri2 - 14, 17, 13 // tri3 -), -gsSPNTriangles_5b( - 8, 18, 6, // tri0 - 19, 20, 16, // tri1 - 19, 16, 15, // tri2 - 20, 19, 8 // tri3 -), -gsSPNTriangles_5b( - 2, 3, 0, // tri0 - 3, 8, 4, // tri1 - 5, 11, 1, // tri2 - 5, 1, 0 // tri3 -), -gsSPNTriangles_5b( - 1, 13, 16, // tri0 - 20, 8, 3, // tri1 - 1, 16, 2, // tri2 - 2, 20, 3 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&squ_1_v[199], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&squ_1_v[205], 16, 6), + gsSPNTrianglesInit_5b(11, // tri count + 3, 6, 7, // tri0 + 5, 1, 8, // tri1 + 5, 9, 10 // tri2 + ), + gsSPNTriangles_5b(2, 0, 11, // tri0 + 0, 3, 12, // tri1 + 0, 13, 14, // tri2 + 2, 15, 16 // tri3 + ), + gsSPNTriangles_5b(2, 17, 1, // tri0 + 4, 18, 3, // tri1 + 4, 5, 19, // tri2 + 5, 20, 21 // tri3 + ), + gsSPVertex(&squ_1_v[221], 21, 0), + gsSPNTrianglesInit_5b(35, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 9, 10, 11, // tri1 + 9, 11, 5, // tri2 + 6, 12, 7 // tri3 + ), + gsSPNTriangles_5b(13, 10, 14, // tri0 + 9, 7, 12, // tri1 + 5, 4, 7, // tri2 + 5, 7, 9 // tri3 + ), + gsSPNTriangles_5b(8, 7, 4, // tri0 + 13, 15, 16, // tri1 + 17, 18, 19, // tri2 + 17, 19, 15 // tri3 + ), + gsSPNTriangles_5b(13, 17, 15, // tri0 + 19, 18, 8, // tri1 + 11, 10, 13, // tri2 + 20, 2, 16 // tri3 + ), + gsSPNTriangles_5b(11, 13, 1, // tri0 + 10, 12, 14, // tri1 + 12, 10, 9, // tri2 + 14, 17, 13 // tri3 + ), + gsSPNTriangles_5b(8, 18, 6, // tri0 + 19, 20, 16, // tri1 + 19, 16, 15, // tri2 + 20, 19, 8 // tri3 + ), + gsSPNTriangles_5b(2, 3, 0, // tri0 + 3, 8, 4, // tri1 + 5, 11, 1, // tri2 + 5, 1, 0 // tri3 + ), + gsSPNTriangles_5b(1, 13, 16, // tri0 + 20, 8, 3, // tri1 + 1, 16, 2, // tri2 + 2, 20, 3 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_squ_model[] = { -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&squ_1_v[305], 5, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&squ_1_v[310], 17, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 4, 0, 5, // tri0 - 0, 7, 6, // tri1 - 3, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 1, 2, 10, // tri0 - 2, 3, 11, // tri1 - 3, 4, 12, // tri2 - 2, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 15, 16, 17, // tri0 - 18, 19, 20, // tri1 - 18, 21, 19 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&squ_1_v[305], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&squ_1_v[310], 17, 5), + gsSPNTrianglesInit_5b(7, // tri count + 4, 0, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 + ), + gsSPNTriangles_5b(1, 2, 10, // tri0 + 2, 3, 11, // tri1 + 3, 4, 12, // tri2 + 2, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_squ_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&squ_1_v[327], 4, 0), -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&squ_1_v[331], 22, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 3, 4, // tri0 - 0, 5, 1, // tri1 - 1, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 3, 2, 8, // tri0 - 2, 9, 10, // tri1 - 2, 1, 11, // tri2 - 0, 13, 12 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 14, 15, 16, // tri0 - 14, 16, 17, // tri1 - 17, 18, 14 // tri2 -), -gsSPNTriangles_5b( - 19, 20, 21, // tri0 - 21, 20, 18, // tri1 - 21, 22, 19, // tri2 - 17, 21, 18 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsSPNTrianglesInit_5b( - 1, // tri count - 23, 24, 25, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&squ_1_v[327], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&squ_1_v[331], 22, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 4, // tri0 + 0, 5, 1, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b(3, 2, 8, // tri0 + 2, 9, 10, // tri1 + 2, 1, 11, // tri2 + 0, 13, 12 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 14, 15, 16, // tri0 + 14, 16, 17, // tri1 + 17, 18, 14 // tri2 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 21, 20, 18, // tri1 + 21, 22, 19, // tri2 + 17, 21, 18 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsSPNTrianglesInit_5b(1, // tri count + 23, 24, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_squ_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&squ_1_v[255], 5, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&squ_1_v[260], 17, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 4, 5, // tri0 - 0, 7, 6, // tri1 - 3, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 1, 10, // tri0 - 3, 2, 11, // tri1 - 4, 3, 12, // tri2 - 2, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 15, 16, 17, // tri0 - 18, 19, 20, // tri1 - 19, 21, 20 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&squ_1_v[255], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&squ_1_v[260], 17, 5), + gsSPNTrianglesInit_5b(7, // tri count + 0, 4, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 + ), + gsSPNTriangles_5b(2, 1, 10, // tri0 + 3, 2, 11, // tri1 + 4, 3, 12, // tri2 + 2, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_squ_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&squ_1_v[277], 6, 0), -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&squ_1_v[283], 22, 6), -gsSPNTrianglesInit_5b( - 7, // tri count - 4, 0, 6, // tri0 - 1, 7, 0, // tri1 - 1, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 2, 5, 10, // tri0 - 2, 11, 12, // tri1 - 1, 3, 13, // tri2 - 0, 15, 14 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 16, 17, 18, // tri0 - 19, 16, 18, // tri1 - 18, 20, 19 // tri2 -), -gsSPNTriangles_5b( - 21, 22, 23, // tri0 - 20, 22, 21, // tri1 - 23, 24, 21, // tri2 - 20, 21, 19 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsSPNTrianglesInit_5b( - 1, // tri count - 25, 26, 27, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&squ_1_v[277], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&squ_1_v[283], 22, 6), + gsSPNTrianglesInit_5b(7, // tri count + 4, 0, 6, // tri0 + 1, 7, 0, // tri1 + 1, 8, 9 // tri2 + ), + gsSPNTriangles_5b(2, 5, 10, // tri0 + 2, 11, 12, // tri1 + 1, 3, 13, // tri2 + 0, 15, 14 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 16, 17, 18, // tri0 + 19, 16, 18, // tri1 + 18, 20, 19 // tri2 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 20, 22, 21, // tri1 + 23, 24, 21, // tri2 + 20, 21, 19 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsSPNTrianglesInit_5b(1, // tri count + 25, 26, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx base_squ_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&squ_1_v[353], 14, 0), -gsSPNTrianglesInit_5b( - 12, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 9, 5, 4, // tri0 - 10, 4, 0, // tri1 - 10, 9, 4, // tri2 - 7, 11, 12 // tri3 -), -gsSPNTriangles_5b( - 8, 7, 13, // tri0 - 2, 10, 0, // tri1 - 2, 1, 6, // tri2 - 6, 8, 2 // tri3 -), -gsSPNTriangles_5b( - 7, 12, 13, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&squ_1_v[353], 14, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 5, 4, // tri0 + 10, 4, 0, // tri1 + 10, 9, 4, // tri2 + 7, 11, 12 // tri3 + ), + gsSPNTriangles_5b(8, 7, 13, // tri0 + 2, 10, 0, // tri1 + 2, 1, 6, // tri2 + 6, 8, 2 // tri3 + ), + gsSPNTriangles_5b(7, 12, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_squ_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -750,4 +664,4 @@ static cKF_Joint_R_c cKF_je_r_squ_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_squ_1 = { 26, 13, cKF_je_r_squ_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_squ_1 = { 26, 13, cKF_je_r_squ_1_tbl }; diff --git a/src/data/npc/model/mdl/tig_1.c b/src/data/npc/model/mdl/tig_1.c index 3c5fefa7..45efef1a 100644 --- a/src/data/npc/model/mdl/tig_1.c +++ b/src/data/npc/model/mdl/tig_1.c @@ -6,732 +6,645 @@ static Vtx tig_1_v[] = { }; static Gfx head_tig_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&tig_1_v[21], 17, 0), -gsSPNTrianglesInit_5b( - 19, // tri count - 0, 1, 2, // tri0 - 1, 0, 3, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 0, 7, 8, // tri0 - 6, 9, 4, // tri1 - 3, 0, 8, // tri2 - 10, 11, 12 // tri3 -), -gsSPNTriangles_5b( - 12, 11, 7, // tri0 - 8, 13, 3, // tri1 - 6, 14, 9, // tri2 - 15, 4, 9 // tri3 -), -gsSPNTriangles_5b( - 12, 14, 10, // tri0 - 15, 9, 2, // tri1 - 2, 1, 16, // tri2 - 7, 0, 12 // tri3 -), -gsSPNTriangles_5b( - 12, 9, 14, // tri0 - 2, 12, 0, // tri1 - 9, 12, 2, // tri2 - 16, 15, 2 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&tig_1_v[38], 32, 0), -gsSPNTrianglesInit_5b( - 36, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 2, 1 // tri2 -), -gsSPNTriangles_5b( - 0, 7, 3, // tri0 - 8, 1, 0, // tri1 - 2, 9, 0, // tri2 - 10, 11, 5 // tri3 -), -gsSPNTriangles_5b( - 12, 13, 7, // tri0 - 9, 2, 6, // tri1 - 9, 14, 12, // tri2 - 0, 9, 15 // tri3 -), -gsSPNTriangles_5b( - 6, 16, 17, // tri0 - 18, 19, 20, // tri1 - 13, 4, 3, // tri2 - 1, 16, 6 // tri3 -), -gsSPNTriangles_5b( - 0, 21, 8, // tri0 - 17, 18, 22, // tri1 - 7, 15, 12, // tri2 - 18, 17, 8 // tri3 -), -gsSPNTriangles_5b( - 14, 23, 24, // tri0 - 8, 16, 1, // tri1 - 7, 13, 3, // tri2 - 12, 14, 4 // tri3 -), -gsSPNTriangles_5b( - 8, 17, 16, // tri0 - 3, 21, 0, // tri1 - 15, 7, 0, // tri2 - 17, 25, 6 // tri3 -), -gsSPNTriangles_5b( - 4, 13, 12, // tri0 - 12, 15, 9, // tri1 - 6, 25, 9, // tri2 - 14, 9, 25 // tri3 -), -gsSPNTriangles_5b( - 26, 23, 27, // tri0 - 28, 29, 30, // tri1 - 10, 5, 24, // tri2 - 22, 18, 20 // tri3 -), -gsSPNTriangles_5b( - 31, 30, 29, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&tig_1_v[70], 27, 0), -gsSPNTrianglesInit_5b( - 11, // tri count - 0, 1, 2, // tri0 - 3, 0, 2, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 3, 2, 7, // tri0 - 8, 4, 6, // tri1 - 3, 7, 9, // tri2 - 10, 8, 6 // tri3 -), -gsSPNTriangles_5b( - 3, 11, 12, // tri0 - 3, 12, 13, // tri1 - 6, 5, 14, // tri2 - 14, 15, 6 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 9, // tri count - 16, 17, 18, // tri0 - 19, 20, 21, // tri1 - 18, 22, 16 // tri2 -), -gsSPNTriangles_5b( - 23, 24, 20, // tri0 - 23, 17, 16, // tri1 - 18, 25, 22, // tri2 - 17, 23, 19 // tri3 -), -gsSPNTriangles_5b( - 20, 19, 23, // tri0 - 26, 25, 18, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 32, 40, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&tig_1_v[97], 32, 0), -gsSPNTrianglesInit_5b( - 23, // tri count - 0, 1, 2, // tri0 - 3, 0, 4, // tri1 - 5, 6, 3 // tri2 -), -gsSPNTriangles_5b( - 7, 8, 6, // tri0 - 9, 10, 11, // tri1 - 12, 13, 14, // tri2 - 15, 0, 2 // tri3 -), -gsSPNTriangles_5b( - 7, 6, 5, // tri0 - 16, 17, 18, // tri1 - 5, 3, 19, // tri2 - 18, 20, 21 // tri3 -), -gsSPNTriangles_5b( - 0, 3, 22, // tri0 - 23, 5, 19, // tri1 - 13, 24, 25, // tri2 - 26, 10, 19 // tri3 -), -gsSPNTriangles_5b( - 14, 17, 16, // tri0 - 27, 28, 20, // tri1 - 27, 20, 15, // tri2 - 3, 6, 29 // tri3 -), -gsSPNTriangles_5b( - 11, 13, 25, // tri0 - 19, 10, 30, // tri1 - 26, 4, 17, // tri2 - 31, 27, 15 // tri3 -), -gsSPVertex(&tig_1_v[129], 30, 0), -gsSPNTrianglesInit_5b( - 22, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 9, 10, 8, // tri0 - 5, 11, 0, // tri1 - 0, 2, 12, // tri2 - 13, 14, 7 // tri3 -), -gsSPNTriangles_5b( - 15, 16, 17, // tri0 - 18, 19, 6, // tri1 - 18, 6, 3, // tri2 - 0, 16, 3 // tri3 -), -gsSPNTriangles_5b( - 0, 3, 5, // tri0 - 8, 20, 4, // tri1 - 4, 6, 8, // tri2 - 12, 17, 16 // tri3 -), -gsSPNTriangles_5b( - 5, 21, 22, // tri0 - 23, 13, 19, // tri1 - 18, 15, 24, // tri2 - 25, 20, 26 // tri3 -), -gsSPNTriangles_5b( - 27, 4, 20, // tri0 - 28, 11, 29, // tri1 - 29, 11, 22, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&tig_1_v[159], 18, 0), -gsSPNTrianglesInit_5b( - 14, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 4, 9, 10, // tri0 - 0, 2, 11, // tri1 - 12, 5, 4, // tri2 - 8, 13, 6 // tri3 -), -gsSPNTriangles_5b( - 14, 15, 3, // tri0 - 11, 16, 0, // tri1 - 10, 12, 4, // tri2 - 3, 17, 14 // tri3 -), -gsSPNTriangles_5b( - 6, 13, 1, // tri0 - 5, 17, 3, // tri1 - 1, 0, 6, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tig_1_v[21], 17, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 1, 0, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(0, 7, 8, // tri0 + 6, 9, 4, // tri1 + 3, 0, 8, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(12, 11, 7, // tri0 + 8, 13, 3, // tri1 + 6, 14, 9, // tri2 + 15, 4, 9 // tri3 + ), + gsSPNTriangles_5b(12, 14, 10, // tri0 + 15, 9, 2, // tri1 + 2, 1, 16, // tri2 + 7, 0, 12 // tri3 + ), + gsSPNTriangles_5b(12, 9, 14, // tri0 + 2, 12, 0, // tri1 + 9, 12, 2, // tri2 + 16, 15, 2 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&tig_1_v[38], 32, 0), + gsSPNTrianglesInit_5b(36, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 2, 1 // tri2 + ), + gsSPNTriangles_5b(0, 7, 3, // tri0 + 8, 1, 0, // tri1 + 2, 9, 0, // tri2 + 10, 11, 5 // tri3 + ), + gsSPNTriangles_5b(12, 13, 7, // tri0 + 9, 2, 6, // tri1 + 9, 14, 12, // tri2 + 0, 9, 15 // tri3 + ), + gsSPNTriangles_5b(6, 16, 17, // tri0 + 18, 19, 20, // tri1 + 13, 4, 3, // tri2 + 1, 16, 6 // tri3 + ), + gsSPNTriangles_5b(0, 21, 8, // tri0 + 17, 18, 22, // tri1 + 7, 15, 12, // tri2 + 18, 17, 8 // tri3 + ), + gsSPNTriangles_5b(14, 23, 24, // tri0 + 8, 16, 1, // tri1 + 7, 13, 3, // tri2 + 12, 14, 4 // tri3 + ), + gsSPNTriangles_5b(8, 17, 16, // tri0 + 3, 21, 0, // tri1 + 15, 7, 0, // tri2 + 17, 25, 6 // tri3 + ), + gsSPNTriangles_5b(4, 13, 12, // tri0 + 12, 15, 9, // tri1 + 6, 25, 9, // tri2 + 14, 9, 25 // tri3 + ), + gsSPNTriangles_5b(26, 23, 27, // tri0 + 28, 29, 30, // tri1 + 10, 5, 24, // tri2 + 22, 18, 20 // tri3 + ), + gsSPNTriangles_5b(31, 30, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&tig_1_v[70], 27, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(3, 2, 7, // tri0 + 8, 4, 6, // tri1 + 3, 7, 9, // tri2 + 10, 8, 6 // tri3 + ), + gsSPNTriangles_5b(3, 11, 12, // tri0 + 3, 12, 13, // tri1 + 6, 5, 14, // tri2 + 14, 15, 6 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(9, // tri count + 16, 17, 18, // tri0 + 19, 20, 21, // tri1 + 18, 22, 16 // tri2 + ), + gsSPNTriangles_5b(23, 24, 20, // tri0 + 23, 17, 16, // tri1 + 18, 25, 22, // tri2 + 17, 23, 19 // tri3 + ), + gsSPNTriangles_5b(20, 19, 23, // tri0 + 26, 25, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 32, 40, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&tig_1_v[97], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 3 // tri2 + ), + gsSPNTriangles_5b(7, 8, 6, // tri0 + 9, 10, 11, // tri1 + 12, 13, 14, // tri2 + 15, 0, 2 // tri3 + ), + gsSPNTriangles_5b(7, 6, 5, // tri0 + 16, 17, 18, // tri1 + 5, 3, 19, // tri2 + 18, 20, 21 // tri3 + ), + gsSPNTriangles_5b(0, 3, 22, // tri0 + 23, 5, 19, // tri1 + 13, 24, 25, // tri2 + 26, 10, 19 // tri3 + ), + gsSPNTriangles_5b(14, 17, 16, // tri0 + 27, 28, 20, // tri1 + 27, 20, 15, // tri2 + 3, 6, 29 // tri3 + ), + gsSPNTriangles_5b(11, 13, 25, // tri0 + 19, 10, 30, // tri1 + 26, 4, 17, // tri2 + 31, 27, 15 // tri3 + ), + gsSPVertex(&tig_1_v[129], 30, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 8, // tri0 + 5, 11, 0, // tri1 + 0, 2, 12, // tri2 + 13, 14, 7 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 18, 19, 6, // tri1 + 18, 6, 3, // tri2 + 0, 16, 3 // tri3 + ), + gsSPNTriangles_5b(0, 3, 5, // tri0 + 8, 20, 4, // tri1 + 4, 6, 8, // tri2 + 12, 17, 16 // tri3 + ), + gsSPNTriangles_5b(5, 21, 22, // tri0 + 23, 13, 19, // tri1 + 18, 15, 24, // tri2 + 25, 20, 26 // tri3 + ), + gsSPNTriangles_5b(27, 4, 20, // tri0 + 28, 11, 29, // tri1 + 29, 11, 22, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&tig_1_v[159], 18, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(4, 9, 10, // tri0 + 0, 2, 11, // tri1 + 12, 5, 4, // tri2 + 8, 13, 6 // tri3 + ), + gsSPNTriangles_5b(14, 15, 3, // tri0 + 11, 16, 0, // tri1 + 10, 12, 4, // tri2 + 3, 17, 14 // tri3 + ), + gsSPNTriangles_5b(6, 13, 1, // tri0 + 5, 17, 3, // tri1 + 1, 0, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx mouth_tig_model[] = { -gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&tig_1_v[0], 5, 0), -gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&tig_1_v[5], 16, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 1, 5, 6, // tri0 - 2, 7, 8, // tri1 - 4, 0, 9 // tri2 -), -gsSPNTriangles_5b( - 3, 10, 11, // tri0 - 4, 12, 3, // tri1 - 0, 2, 13, // tri2 - 0, 14, 15 // tri3 -), -gsSPNTriangles_5b( - 1, 3, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 17, 19, 20, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tig_1_v[0], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&tig_1_v[5], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 1, 5, 6, // tri0 + 2, 7, 8, // tri1 + 4, 0, 9 // tri2 + ), + gsSPNTriangles_5b(3, 10, 11, // tri0 + 4, 12, 3, // tri1 + 0, 2, 13, // tri2 + 0, 14, 15 // tri3 + ), + gsSPNTriangles_5b(1, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 17, 19, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_tig_model[] = { -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&tig_1_v[214], 5, 0), -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&tig_1_v[219], 17, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 5, 6, // tri0 - 3, 7, 8, // tri1 - 4, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 0, 1, 11, // tri0 - 1, 4, 12, // tri1 - 0, 13, 14, // tri2 - 2, 0, 15 // tri3 -), -gsSPNTriangles_5b( - 3, 2, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 20, 21, 18, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tig_1_v[214], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&tig_1_v[219], 17, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 3, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(0, 1, 11, // tri0 + 1, 4, 12, // tri1 + 0, 13, 14, // tri2 + 2, 0, 15 // tri3 + ), + gsSPNTriangles_5b(3, 2, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 21, 18, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_tig_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&tig_1_v[236], 4, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&tig_1_v[240], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 2, 4, // tri0 - 3, 6, 5, // tri1 - 1, 8, 7 // tri2 -), -gsSPNTriangles_5b( - 3, 1, 9, // tri0 - 1, 0, 10, // tri1 - 0, 11, 12, // tri2 - 2, 13, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tig_1_v[236], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&tig_1_v[240], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 2, 4, // tri0 + 3, 6, 5, // tri1 + 1, 8, 7 // tri2 + ), + gsSPNTriangles_5b(3, 1, 9, // tri0 + 1, 0, 10, // tri1 + 0, 11, 12, // tri2 + 2, 13, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_tig_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&tig_1_v[177], 5, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&tig_1_v[182], 17, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 5, 6, // tri0 - 3, 7, 8, // tri1 - 4, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 11, // tri0 - 4, 1, 12, // tri1 - 0, 13, 14, // tri2 - 0, 2, 15 // tri3 -), -gsSPNTriangles_5b( - 2, 3, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 18, 20, 21, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tig_1_v[177], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&tig_1_v[182], 17, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 3, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 4, 1, 12, // tri1 + 0, 13, 14, // tri2 + 0, 2, 15 // tri3 + ), + gsSPNTriangles_5b(2, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 18, 20, 21, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_tig_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&tig_1_v[199], 4, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&tig_1_v[203], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 2, 0, 4, // tri0 - 3, 6, 5, // tri1 - 1, 8, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 3, 9, // tri0 - 0, 1, 10, // tri1 - 0, 11, 12, // tri2 - 2, 13, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tig_1_v[199], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&tig_1_v[203], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 2, 0, 4, // tri0 + 3, 6, 5, // tri1 + 1, 8, 7 // tri2 + ), + gsSPNTriangles_5b(1, 3, 9, // tri0 + 0, 1, 10, // tri1 + 0, 11, 12, // tri2 + 2, 13, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_tig_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&tig_1_v[251], 7, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&tig_1_v[258], 20, 7), -gsSPNTrianglesInit_5b( - 13, // tri count - 0, 2, 7, // tri0 - 6, 8, 9, // tri1 - 0, 10, 11 // tri2 -), -gsSPNTriangles_5b( - 1, 12, 5, // tri0 - 1, 13, 14, // tri1 - 2, 16, 15, // tri2 - 5, 17, 18 // tri3 -), -gsSPNTriangles_5b( - 5, 19, 20, // tri0 - 2, 21, 22, // tri1 - 6, 0, 23, // tri2 - 1, 6, 24 // tri3 -), -gsSPNTriangles_5b( - 3, 5, 25, // tri0 - 4, 26, 2, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&tig_1_v[278], 10, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 0, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 5, 4, 8, // tri0 - 2, 6, 0, // tri1 - 1, 9, 2, // tri2 - 7, 4, 3 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tig_1_v[251], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&tig_1_v[258], 20, 7), + gsSPNTrianglesInit_5b(13, // tri count + 0, 2, 7, // tri0 + 6, 8, 9, // tri1 + 0, 10, 11 // tri2 + ), + gsSPNTriangles_5b(1, 12, 5, // tri0 + 1, 13, 14, // tri1 + 2, 16, 15, // tri2 + 5, 17, 18 // tri3 + ), + gsSPNTriangles_5b(5, 19, 20, // tri0 + 2, 21, 22, // tri1 + 6, 0, 23, // tri2 + 1, 6, 24 // tri3 + ), + gsSPNTriangles_5b(3, 5, 25, // tri0 + 4, 26, 2, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&tig_1_v[278], 10, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 7 // tri2 + ), + gsSPNTriangles_5b(5, 4, 8, // tri0 + 2, 6, 0, // tri1 + 1, 9, 2, // tri2 + 7, 4, 3 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail1_tig_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&tig_1_v[312], 8, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 2, // tri0 - 3, 0, 4, // tri1 - 2, 1, 5 // tri2 -), -gsSPNTriangles_5b( - 4, 6, 3, // tri0 - 5, 7, 2, // tri1 - 2, 4, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tig_1_v[312], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 2, 1, 5 // tri2 + ), + gsSPNTriangles_5b(4, 6, 3, // tri0 + 5, 7, 2, // tri1 + 2, 4, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail2_tig_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&tig_1_v[288], 4, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&tig_1_v[292], 20, 4), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 4, 5, // tri0 - 1, 6, 7, // tri1 - 3, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 3, 2, 10, // tri0 - 2, 1, 11, // tri1 - 0, 3, 12, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 9, // tri count - 13, 14, 15, // tri0 - 16, 14, 17, // tri1 - 18, 17, 19 // tri2 -), -gsSPNTriangles_5b( - 17, 14, 13, // tri0 - 13, 19, 17, // tri1 - 17, 18, 20, // tri2 - 21, 15, 14 // tri3 -), -gsSPNTriangles_5b( - 15, 22, 13, // tri0 - 19, 23, 18, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tig_1_v[288], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&tig_1_v[292], 20, 4), + gsSPNTrianglesInit_5b(6, // tri count + 0, 4, 5, // tri0 + 1, 6, 7, // tri1 + 3, 8, 9 // tri2 + ), + gsSPNTriangles_5b(3, 2, 10, // tri0 + 2, 1, 11, // tri1 + 0, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(9, // tri count + 13, 14, 15, // tri0 + 16, 14, 17, // tri1 + 18, 17, 19 // tri2 + ), + gsSPNTriangles_5b(17, 14, 13, // tri0 + 13, 19, 17, // tri1 + 17, 18, 20, // tri2 + 21, 15, 14 // tri3 + ), + gsSPNTriangles_5b(15, 22, 13, // tri0 + 19, 23, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_tig_model[] = { -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&tig_1_v[361], 5, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&tig_1_v[366], 17, 5), -gsSPNTrianglesInit_5b( - 9, // tri count - 3, 5, 6, // tri0 - 2, 3, 7, // tri1 - 0, 2, 8 // tri2 -), -gsSPNTriangles_5b( - 1, 9, 10, // tri0 - 4, 1, 11, // tri1 - 2, 12, 13, // tri2 - 3, 4, 14 // tri3 -), -gsSPNTriangles_5b( - 1, 15, 16, // tri0 - 3, 17, 18, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 19, 20, 21, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tig_1_v[361], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&tig_1_v[366], 17, 5), + gsSPNTrianglesInit_5b(9, // tri count + 3, 5, 6, // tri0 + 2, 3, 7, // tri1 + 0, 2, 8 // tri2 + ), + gsSPNTriangles_5b(1, 9, 10, // tri0 + 4, 1, 11, // tri1 + 2, 12, 13, // tri2 + 3, 4, 14 // tri3 + ), + gsSPNTriangles_5b(1, 15, 16, // tri0 + 3, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_tig_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&tig_1_v[383], 6, 0), -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&tig_1_v[389], 13, 6), -gsSPNTrianglesInit_5b( - 9, // tri count - 2, 6, 7, // tri0 - 3, 8, 9, // tri1 - 3, 4, 10 // tri2 -), -gsSPNTriangles_5b( - 4, 2, 11, // tri0 - 0, 3, 12, // tri1 - 5, 1, 13, // tri2 - 5, 14, 15 // tri3 -), -gsSPNTriangles_5b( - 2, 5, 16, // tri0 - 0, 17, 18, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tig_1_v[383], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&tig_1_v[389], 13, 6), + gsSPNTrianglesInit_5b(9, // tri count + 2, 6, 7, // tri0 + 3, 8, 9, // tri1 + 3, 4, 10 // tri2 + ), + gsSPNTriangles_5b(4, 2, 11, // tri0 + 0, 3, 12, // tri1 + 5, 1, 13, // tri2 + 5, 14, 15 // tri3 + ), + gsSPNTriangles_5b(2, 5, 16, // tri0 + 0, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_tig_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&tig_1_v[320], 5, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&tig_1_v[325], 17, 5), -gsSPNTrianglesInit_5b( - 9, // tri count - 3, 5, 6, // tri0 - 3, 2, 7, // tri1 - 2, 0, 8 // tri2 -), -gsSPNTriangles_5b( - 1, 9, 10, // tri0 - 1, 4, 11, // tri1 - 2, 12, 13, // tri2 - 4, 3, 14 // tri3 -), -gsSPNTriangles_5b( - 1, 15, 16, // tri0 - 3, 17, 18, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 19, 20, 21, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tig_1_v[320], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&tig_1_v[325], 17, 5), + gsSPNTrianglesInit_5b(9, // tri count + 3, 5, 6, // tri0 + 3, 2, 7, // tri1 + 2, 0, 8 // tri2 + ), + gsSPNTriangles_5b(1, 9, 10, // tri0 + 1, 4, 11, // tri1 + 2, 12, 13, // tri2 + 4, 3, 14 // tri3 + ), + gsSPNTriangles_5b(1, 15, 16, // tri0 + 3, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_tig_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&tig_1_v[342], 6, 0), -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&tig_1_v[348], 13, 6), -gsSPNTrianglesInit_5b( - 9, // tri count - 1, 6, 7, // tri0 - 2, 8, 9, // tri1 - 0, 2, 10 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 11, // tri0 - 2, 4, 12, // tri1 - 5, 3, 13, // tri2 - 3, 14, 15 // tri3 -), -gsSPNTriangles_5b( - 3, 1, 16, // tri0 - 4, 17, 18, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tig_1_v[342], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&tig_1_v[348], 13, 6), + gsSPNTrianglesInit_5b(9, // tri count + 1, 6, 7, // tri0 + 2, 8, 9, // tri1 + 0, 2, 10 // tri2 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 2, 4, 12, // tri1 + 5, 3, 13, // tri2 + 3, 14, 15 // tri3 + ), + gsSPNTriangles_5b(3, 1, 16, // tri0 + 4, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx base_tig_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&tig_1_v[402], 26, 0), -gsSPNTrianglesInit_5b( - 3, // tri count - 0, 1, 2, // tri0 - 3, 1, 0, // tri1 - 2, 1, 4 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), -gsSPNTrianglesInit_5b( - 14, // tri count - 5, 6, 7, // tri0 - 8, 9, 10, // tri1 - 11, 12, 13 // tri2 -), -gsSPNTriangles_5b( - 14, 15, 16, // tri0 - 7, 17, 5, // tri1 - 18, 9, 19, // tri2 - 18, 19, 15 // tri3 -), -gsSPNTriangles_5b( - 10, 13, 12, // tri0 - 9, 18, 10, // tri1 - 6, 5, 11, // tri2 - 11, 13, 6 // tri3 -), -gsSPNTriangles_5b( - 19, 16, 15, // tri0 - 12, 8, 10, // tri1 - 16, 20, 14, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 3, // tri count - 21, 22, 23, // tri0 - 23, 22, 24, // tri1 - 25, 22, 21 // tri2 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tig_1_v[402], 26, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 2, 1, 4 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPNTrianglesInit_5b(14, // tri count + 5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 11, 12, 13 // tri2 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 7, 17, 5, // tri1 + 18, 9, 19, // tri2 + 18, 19, 15 // tri3 + ), + gsSPNTriangles_5b(10, 13, 12, // tri0 + 9, 18, 10, // tri1 + 6, 5, 11, // tri2 + 11, 13, 6 // tri3 + ), + gsSPNTriangles_5b(19, 16, 15, // tri0 + 12, 8, 10, // tri1 + 16, 20, 14, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 21, 22, 23, // tri0 + 23, 22, 24, // tri1 + 25, 22, 21 // tri2 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_tig_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -763,4 +676,4 @@ static cKF_Joint_R_c cKF_je_r_tig_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_tig_1 = { 26, 14, cKF_je_r_tig_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_tig_1 = { 26, 14, cKF_je_r_tig_1_tbl }; diff --git a/src/data/npc/model/mdl/ttl_1.c b/src/data/npc/model/mdl/ttl_1.c index f92aea63..5de8b6fe 100644 --- a/src/data/npc/model/mdl/ttl_1.c +++ b/src/data/npc/model/mdl/ttl_1.c @@ -6,696 +6,615 @@ static Vtx ttl_1_v[] = { }; static Gfx head_ttl_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&ttl_1_v[26], 23, 0), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 1, 2, // tri0 - 3, 4, 2, // tri1 - 2, 4, 5 // tri2 -), -gsSPNTriangles_5b( - 1, 6, 2, // tri0 - 2, 6, 7, // tri1 - 8, 3, 2, // tri2 - 2, 7, 8 // tri3 -), -gsSPNTriangles_5b( - 2, 5, 0, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 124), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 14, // tri count - 9, 10, 11, // tri0 - 11, 10, 12, // tri1 - 13, 12, 14 // tri2 -), -gsSPNTriangles_5b( - 15, 16, 17, // tri0 - 15, 18, 19, // tri1 - 19, 20, 15, // tri2 - 14, 21, 22 // tri3 -), -gsSPNTriangles_5b( - 22, 13, 14, // tri0 - 12, 13, 11, // tri1 - 11, 20, 9, // tri2 - 17, 16, 22 // tri3 -), -gsSPNTriangles_5b( - 17, 18, 15, // tri0 - 22, 21, 17, // tri1 - 19, 9, 20, // tri2 - 0, 0, 0 // tri3 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 60, 124), -gsSPVertex(&ttl_1_v[49], 16, 0), -gsSPNTrianglesInit_5b( - 14, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 9, 10, 6, // tri0 - 1, 0, 11, // tri1 - 11, 7, 1, // tri2 - 12, 5, 4 // tri3 -), -gsSPNTriangles_5b( - 12, 4, 10, // tri0 - 10, 9, 12, // tri1 - 11, 8, 7, // tri2 - 2, 13, 0 // tri3 -), -gsSPNTriangles_5b( - 5, 14, 3, // tri0 - 6, 15, 9, // tri1 - 8, 15, 6, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&ttl_1_v[65], 17, 0), -gsSPNTrianglesInit_5b( - 19, // tri count - 0, 1, 2, // tri0 - 2, 3, 0, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 7, 8, 9, // tri0 - 8, 10, 11, // tri1 - 8, 11, 9, // tri2 - 8, 7, 12 // tri3 -), -gsSPNTriangles_5b( - 4, 13, 3, // tri0 - 4, 3, 5, // tri1 - 5, 2, 14, // tri2 - 5, 3, 2 // tri3 -), -gsSPNTriangles_5b( - 0, 10, 1, // tri0 - 1, 10, 8, // tri1 - 1, 12, 14, // tri2 - 1, 14, 2 // tri3 -), -gsSPNTriangles_5b( - 14, 6, 5, // tri0 - 12, 1, 8, // tri1 - 6, 15, 4, // tri2 - 9, 16, 7 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&ttl_1_v[82], 27, 0), -gsSPNTrianglesInit_5b( - 30, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 3, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 5, 7, 8, // tri0 - 9, 1, 0, // tri1 - 4, 10, 11, // tri2 - 12, 13, 9 // tri3 -), -gsSPNTriangles_5b( - 6, 14, 15, // tri0 - 16, 17, 3, // tri1 - 14, 6, 8, // tri2 - 2, 1, 7 // tri3 -), -gsSPNTriangles_5b( - 18, 12, 19, // tri0 - 18, 19, 20, // tri1 - 18, 15, 14, // tri2 - 2, 21, 22 // tri3 -), -gsSPNTriangles_5b( - 17, 23, 3, // tri0 - 4, 23, 10, // tri1 - 5, 8, 6, // tri2 - 11, 21, 5 // tri3 -), -gsSPNTriangles_5b( - 6, 15, 16, // tri0 - 24, 25, 26, // tri1 - 21, 2, 5, // tri2 - 22, 0, 2 // tri3 -), -gsSPNTriangles_5b( - 14, 12, 18, // tri0 - 8, 13, 14, // tri1 - 3, 23, 4, // tri2 - 14, 13, 12 // tri3 -), -gsSPNTriangles_5b( - 7, 5, 2, // tri0 - 5, 4, 11, // tri1 - 16, 3, 6, // tri2 - 0, 0, 0 // tri3 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&ttl_1_v[109], 24, 0), -gsSPNTrianglesInit_5b( - 4, // tri count - 0, 1, 2, // tri0 - 2, 3, 4, // tri1 - 2, 4, 0 // tri2 -), -gsSPNTriangles_5b( - 0, 5, 1, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 14, // tri count - 6, 7, 8, // tri0 - 9, 10, 11, // tri1 - 12, 13, 14 // tri2 -), -gsSPNTriangles_5b( - 12, 15, 13, // tri0 - 9, 16, 8, // tri1 - 8, 16, 6, // tri2 - 14, 17, 6 // tri3 -), -gsSPNTriangles_5b( - 11, 18, 13, // tri0 - 17, 7, 6, // tri1 - 11, 19, 9, // tri2 - 11, 10, 18 // tri3 -), -gsSPNTriangles_5b( - 9, 19, 16, // tri0 - 6, 12, 14, // tri1 - 13, 15, 11, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 2, // tri count - 20, 21, 22, // tri0 - 20, 23, 21, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ttl_1_v[26], 23, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b(1, 6, 2, // tri0 + 2, 6, 7, // tri1 + 8, 3, 2, // tri2 + 2, 7, 8 // tri3 + ), + gsSPNTriangles_5b(2, 5, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 124), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(14, // tri count + 9, 10, 11, // tri0 + 11, 10, 12, // tri1 + 13, 12, 14 // tri2 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 15, 18, 19, // tri1 + 19, 20, 15, // tri2 + 14, 21, 22 // tri3 + ), + gsSPNTriangles_5b(22, 13, 14, // tri0 + 12, 13, 11, // tri1 + 11, 20, 9, // tri2 + 17, 16, 22 // tri3 + ), + gsSPNTriangles_5b(17, 18, 15, // tri0 + 22, 21, 17, // tri1 + 19, 9, 20, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 60, 124), + gsSPVertex(&ttl_1_v[49], 16, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 6, // tri0 + 1, 0, 11, // tri1 + 11, 7, 1, // tri2 + 12, 5, 4 // tri3 + ), + gsSPNTriangles_5b(12, 4, 10, // tri0 + 10, 9, 12, // tri1 + 11, 8, 7, // tri2 + 2, 13, 0 // tri3 + ), + gsSPNTriangles_5b(5, 14, 3, // tri0 + 6, 15, 9, // tri1 + 8, 15, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ttl_1_v[65], 17, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 8, 10, 11, // tri1 + 8, 11, 9, // tri2 + 8, 7, 12 // tri3 + ), + gsSPNTriangles_5b(4, 13, 3, // tri0 + 4, 3, 5, // tri1 + 5, 2, 14, // tri2 + 5, 3, 2 // tri3 + ), + gsSPNTriangles_5b(0, 10, 1, // tri0 + 1, 10, 8, // tri1 + 1, 12, 14, // tri2 + 1, 14, 2 // tri3 + ), + gsSPNTriangles_5b(14, 6, 5, // tri0 + 12, 1, 8, // tri1 + 6, 15, 4, // tri2 + 9, 16, 7 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&ttl_1_v[82], 27, 0), + gsSPNTrianglesInit_5b(30, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 9, 1, 0, // tri1 + 4, 10, 11, // tri2 + 12, 13, 9 // tri3 + ), + gsSPNTriangles_5b(6, 14, 15, // tri0 + 16, 17, 3, // tri1 + 14, 6, 8, // tri2 + 2, 1, 7 // tri3 + ), + gsSPNTriangles_5b(18, 12, 19, // tri0 + 18, 19, 20, // tri1 + 18, 15, 14, // tri2 + 2, 21, 22 // tri3 + ), + gsSPNTriangles_5b(17, 23, 3, // tri0 + 4, 23, 10, // tri1 + 5, 8, 6, // tri2 + 11, 21, 5 // tri3 + ), + gsSPNTriangles_5b(6, 15, 16, // tri0 + 24, 25, 26, // tri1 + 21, 2, 5, // tri2 + 22, 0, 2 // tri3 + ), + gsSPNTriangles_5b(14, 12, 18, // tri0 + 8, 13, 14, // tri1 + 3, 23, 4, // tri2 + 14, 13, 12 // tri3 + ), + gsSPNTriangles_5b(7, 5, 2, // tri0 + 5, 4, 11, // tri1 + 16, 3, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ttl_1_v[109], 24, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(0, 5, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(14, // tri count + 6, 7, 8, // tri0 + 9, 10, 11, // tri1 + 12, 13, 14 // tri2 + ), + gsSPNTriangles_5b(12, 15, 13, // tri0 + 9, 16, 8, // tri1 + 8, 16, 6, // tri2 + 14, 17, 6 // tri3 + ), + gsSPNTriangles_5b(11, 18, 13, // tri0 + 17, 7, 6, // tri1 + 11, 19, 9, // tri2 + 11, 10, 18 // tri3 + ), + gsSPNTriangles_5b(9, 19, 16, // tri0 + 6, 12, 14, // tri1 + 13, 15, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 20, 21, 22, // tri0 + 20, 23, 21, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx mouth_ttl_model[] = { -gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&ttl_1_v[0], 5, 0), -gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&ttl_1_v[5], 21, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 1, 2, 5, // tri0 - 3, 0, 6, // tri1 - 1, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 4, 1, 9, // tri0 - 4, 10, 11, // tri1 - 0, 13, 12, // tri2 - 0, 4, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 15, 16, 17, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 10, // tri count - 18, 19, 20, // tri0 - 20, 19, 21, // tri1 - 20, 22, 18 // tri2 -), -gsSPNTriangles_5b( - 21, 23, 20, // tri0 - 22, 24, 25, // tri1 - 21, 19, 25, // tri2 - 25, 24, 23 // tri3 -), -gsSPNTriangles_5b( - 25, 19, 18, // tri0 - 18, 22, 25, // tri1 - 25, 23, 21, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ttl_1_v[0], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ttl_1_v[5], 21, 5), + gsSPNTrianglesInit_5b(7, // tri count + 1, 2, 5, // tri0 + 3, 0, 6, // tri1 + 1, 7, 8 // tri2 + ), + gsSPNTriangles_5b(4, 1, 9, // tri0 + 4, 10, 11, // tri1 + 0, 13, 12, // tri2 + 0, 4, 14 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(10, // tri count + 18, 19, 20, // tri0 + 20, 19, 21, // tri1 + 20, 22, 18 // tri2 + ), + gsSPNTriangles_5b(21, 23, 20, // tri0 + 22, 24, 25, // tri1 + 21, 19, 25, // tri2 + 25, 24, 23 // tri3 + ), + gsSPNTriangles_5b(25, 19, 18, // tri0 + 18, 22, 25, // tri1 + 25, 23, 21, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx hand_ttl_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&ttl_1_v[160], 13, 0), -gsSPNTrianglesInit_5b( - 2, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 0, 0, 0 // tri2 -), -gsSPNTrianglesInit_5b( - 5, // tri count - 4, 5, 6, // tri0 - 7, 8, 9, // tri1 - 7, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 8, 11, 12, // tri0 - 8, 12, 9, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ttl_1_v[160], 13, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsSPNTrianglesInit_5b(5, // tri count + 4, 5, 6, // tri0 + 7, 8, 9, // tri1 + 7, 9, 10 // tri2 + ), + gsSPNTriangles_5b(8, 11, 12, // tri0 + 8, 12, 9, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_ttl_model[] = { -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&ttl_1_v[173], 4, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&ttl_1_v[177], 16, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 1, 2, 4, // tri0 - 2, 0, 5, // tri1 - 0, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 3, 1, 8, // tri0 - 0, 3, 9, // tri1 - 0, 10, 11, // tri2 - 1, 12, 13 // tri3 -), -gsSPNTriangles_5b( - 1, 14, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 16, 17, 18, // tri0 - 19, 18, 17, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ttl_1_v[173], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ttl_1_v[177], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 1, 2, 4, // tri0 + 2, 0, 5, // tri1 + 0, 6, 7 // tri2 + ), + gsSPNTriangles_5b(3, 1, 8, // tri0 + 0, 3, 9, // tri1 + 0, 10, 11, // tri2 + 1, 12, 13 // tri3 + ), + gsSPNTriangles_5b(1, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 19, 18, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_ttl_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&ttl_1_v[193], 7, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 3, 2, 4, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 4, 2, 5, // tri0 - 5, 1, 6, // tri1 - 1, 0, 6, // tri2 - 2, 3, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ttl_1_v[193], 7, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 2, 5, // tri0 + 5, 1, 6, // tri1 + 1, 0, 6, // tri2 + 2, 3, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_ttl_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&ttl_1_v[133], 4, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&ttl_1_v[137], 16, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 1, 4, // tri0 - 0, 2, 5, // tri1 - 0, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 3, 8, // tri0 - 3, 0, 9, // tri1 - 0, 10, 11, // tri2 - 1, 12, 13 // tri3 -), -gsSPNTriangles_5b( - 1, 14, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 16, 17, 18, // tri0 - 17, 16, 19, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ttl_1_v[133], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ttl_1_v[137], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 1, 4, // tri0 + 0, 2, 5, // tri1 + 0, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 3, 8, // tri0 + 3, 0, 9, // tri1 + 0, 10, 11, // tri2 + 1, 12, 13 // tri3 + ), + gsSPNTriangles_5b(1, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_ttl_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&ttl_1_v[153], 7, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 3, 0, 4, // tri1 - 5, 6, 3 // tri2 -), -gsSPNTriangles_5b( - 6, 0, 3, // tri0 - 5, 1, 6, // tri1 - 5, 2, 1, // tri2 - 2, 4, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ttl_1_v[153], 7, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 3 // tri2 + ), + gsSPNTriangles_5b(6, 0, 3, // tri0 + 5, 1, 6, // tri1 + 5, 2, 1, // tri2 + 2, 4, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_ttl_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&ttl_1_v[200], 8, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&ttl_1_v[208], 22, 8), -gsSPNTrianglesInit_5b( - 7, // tri count - 7, 8, 9, // tri0 - 7, 10, 5, // tri1 - 7, 11, 12 // tri2 -), -gsSPNTriangles_5b( - 5, 13, 14, // tri0 - 5, 15, 3, // tri1 - 3, 16, 17, // tri2 - 3, 18, 19 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 124), -gsSPNTrianglesInit_5b( - 7, // tri count - 2, 20, 21, // tri0 - 2, 0, 22, // tri1 - 1, 23, 24 // tri2 -), -gsSPNTriangles_5b( - 6, 2, 25, // tri0 - 1, 4, 26, // tri1 - 0, 27, 28, // tri2 - 1, 29, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 124), -gsSPVertex(&ttl_1_v[230], 21, 0), -gsSPNTrianglesInit_5b( - 23, // tri count - 0, 1, 2, // tri0 - 2, 1, 3, // tri1 - 3, 1, 4 // tri2 -), -gsSPNTriangles_5b( - 4, 1, 5, // tri0 - 5, 1, 6, // tri1 - 7, 8, 9, // tri2 - 6, 1, 0 // tri3 -), -gsSPNTriangles_5b( - 3, 10, 11, // tri0 - 4, 8, 10, // tri1 - 5, 9, 8, // tri2 - 6, 12, 9 // tri3 -), -gsSPNTriangles_5b( - 0, 13, 12, // tri0 - 2, 11, 13, // tri1 - 14, 11, 10, // tri2 - 14, 10, 15 // tri3 -), -gsSPNTriangles_5b( - 11, 2, 3, // tri0 - 10, 3, 4, // tri1 - 8, 4, 5, // tri2 - 9, 5, 6 // tri3 -), -gsSPNTriangles_5b( - 12, 6, 0, // tri0 - 13, 0, 2, // tri1 - 15, 10, 8, // tri2 - 15, 8, 7 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 124), -gsSPNTrianglesInit_5b( - 3, // tri count - 16, 17, 18, // tri0 - 19, 16, 18, // tri1 - 18, 17, 20 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ttl_1_v[200], 8, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ttl_1_v[208], 22, 8), + gsSPNTrianglesInit_5b(7, // tri count + 7, 8, 9, // tri0 + 7, 10, 5, // tri1 + 7, 11, 12 // tri2 + ), + gsSPNTriangles_5b(5, 13, 14, // tri0 + 5, 15, 3, // tri1 + 3, 16, 17, // tri2 + 3, 18, 19 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 124), + gsSPNTrianglesInit_5b(7, // tri count + 2, 20, 21, // tri0 + 2, 0, 22, // tri1 + 1, 23, 24 // tri2 + ), + gsSPNTriangles_5b(6, 2, 25, // tri0 + 1, 4, 26, // tri1 + 0, 27, 28, // tri2 + 1, 29, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 124), + gsSPVertex(&ttl_1_v[230], 21, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 3, 1, 4 // tri2 + ), + gsSPNTriangles_5b(4, 1, 5, // tri0 + 5, 1, 6, // tri1 + 7, 8, 9, // tri2 + 6, 1, 0 // tri3 + ), + gsSPNTriangles_5b(3, 10, 11, // tri0 + 4, 8, 10, // tri1 + 5, 9, 8, // tri2 + 6, 12, 9 // tri3 + ), + gsSPNTriangles_5b(0, 13, 12, // tri0 + 2, 11, 13, // tri1 + 14, 11, 10, // tri2 + 14, 10, 15 // tri3 + ), + gsSPNTriangles_5b(11, 2, 3, // tri0 + 10, 3, 4, // tri1 + 8, 4, 5, // tri2 + 9, 5, 6 // tri3 + ), + gsSPNTriangles_5b(12, 6, 0, // tri0 + 13, 0, 2, // tri1 + 15, 10, 8, // tri2 + 15, 8, 7 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 124), + gsSPNTrianglesInit_5b(3, // tri count + 16, 17, 18, // tri0 + 19, 16, 18, // tri1 + 18, 17, 20 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx tail1_ttl_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&ttl_1_v[251], 5, 0), -gsSPNTrianglesInit_5b( - 4, // tri count - 0, 1, 2, // tri0 - 1, 3, 2, // tri1 - 4, 0, 2 // tri2 -), -gsSPNTriangles_5b( - 3, 4, 2, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ttl_1_v[251], 5, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 0, 2 // tri2 + ), + gsSPNTriangles_5b(3, 4, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_ttl_model[] = { -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&ttl_1_v[286], 4, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&ttl_1_v[290], 19, 4), -gsSPNTrianglesInit_5b( - 9, // tri count - 2, 4, 5, // tri0 - 2, 6, 7, // tri1 - 0, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 1, 10, 11, // tri0 - 2, 3, 12, // tri1 - 1, 2, 13, // tri2 - 0, 1, 14 // tri3 -), -gsSPNTriangles_5b( - 3, 0, 15, // tri0 - 0, 16, 17, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 18, 19, 20, // tri0 - 21, 20, 19, // tri1 - 21, 19, 22 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ttl_1_v[286], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ttl_1_v[290], 19, 4), + gsSPNTrianglesInit_5b(9, // tri count + 2, 4, 5, // tri0 + 2, 6, 7, // tri1 + 0, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 10, 11, // tri0 + 2, 3, 12, // tri1 + 1, 2, 13, // tri2 + 0, 1, 14 // tri3 + ), + gsSPNTriangles_5b(3, 0, 15, // tri0 + 0, 16, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 18, 19, 20, // tri0 + 21, 20, 19, // tri1 + 21, 19, 22 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_ttl_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&ttl_1_v[309], 7, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 1, 3, 4, // tri1 - 1, 5, 2 // tri2 -), -gsSPNTriangles_5b( - 6, 4, 3, // tri0 - 6, 3, 0, // tri1 - 0, 2, 6, // tri2 - 4, 5, 1 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ttl_1_v[309], 7, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 1, 5, 2 // tri2 + ), + gsSPNTriangles_5b(6, 4, 3, // tri0 + 6, 3, 0, // tri1 + 0, 2, 6, // tri2 + 4, 5, 1 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_ttl_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&ttl_1_v[256], 4, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&ttl_1_v[260], 19, 4), -gsSPNTrianglesInit_5b( - 9, // tri count - 2, 4, 5, // tri0 - 2, 6, 7, // tri1 - 0, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 1, 10, 11, // tri0 - 3, 2, 12, // tri1 - 2, 1, 13, // tri2 - 1, 0, 14 // tri3 -), -gsSPNTriangles_5b( - 0, 3, 15, // tri0 - 0, 16, 17, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 18, 19, 20, // tri0 - 21, 19, 18, // tri1 - 21, 18, 22 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ttl_1_v[256], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ttl_1_v[260], 19, 4), + gsSPNTrianglesInit_5b(9, // tri count + 2, 4, 5, // tri0 + 2, 6, 7, // tri1 + 0, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 10, 11, // tri0 + 3, 2, 12, // tri1 + 2, 1, 13, // tri2 + 1, 0, 14 // tri3 + ), + gsSPNTriangles_5b(0, 3, 15, // tri0 + 0, 16, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 18, 19, 20, // tri0 + 21, 19, 18, // tri1 + 21, 18, 22 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_ttl_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&ttl_1_v[279], 7, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 3, 4, 1, // tri1 - 0, 5, 1 // tri2 -), -gsSPNTriangles_5b( - 4, 3, 6, // tri0 - 2, 4, 6, // tri1 - 6, 0, 2, // tri2 - 1, 5, 3 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ttl_1_v[279], 7, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 0, 5, 1 // tri2 + ), + gsSPNTriangles_5b(4, 3, 6, // tri0 + 2, 4, 6, // tri1 + 6, 0, 2, // tri2 + 1, 5, 3 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx base_ttl_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&ttl_1_v[316], 9, 0), -gsSPNTrianglesInit_5b( - 10, // tri count - 0, 1, 2, // tri0 - 0, 3, 1, // tri1 - 4, 3, 0 // tri2 -), -gsSPNTriangles_5b( - 5, 6, 7, // tri0 - 5, 3, 8, // tri1 - 4, 8, 3, // tri2 - 8, 6, 5 // tri3 -), -gsSPNTriangles_5b( - 3, 5, 1, // tri0 - 7, 1, 5, // tri1 - 1, 7, 2, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ttl_1_v[316], 9, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 3, 0 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 3, 8, // tri1 + 4, 8, 3, // tri2 + 8, 6, 5 // tri3 + ), + gsSPNTriangles_5b(3, 5, 1, // tri0 + 7, 1, 5, // tri1 + 1, 7, 2, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_ttl_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -727,4 +646,4 @@ static cKF_Joint_R_c cKF_je_r_ttl_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_ttl_1 = { 26, 14, cKF_je_r_ttl_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_ttl_1 = { 26, 14, cKF_je_r_ttl_1_tbl }; diff --git a/src/data/npc/model/mdl/tuk_1.c b/src/data/npc/model/mdl/tuk_1.c index 3bbfbe4f..3adced76 100644 --- a/src/data/npc/model/mdl/tuk_1.c +++ b/src/data/npc/model/mdl/tuk_1.c @@ -6,928 +6,816 @@ static Vtx tuk_1_v[] = { }; static Gfx head_tuk_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&tuk_1_v[11], 9, 0), -gsSPMatrix(0x0D000380, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&tuk_1_v[20], 19, 9), -gsSPNTrianglesInit_5b( - 9, // tri count - 5, 3, 9, // tri0 - 1, 6, 10, // tri1 - 5, 11, 12 // tri2 -), -gsSPNTriangles_5b( - 6, 13, 14, // tri0 - 7, 15, 16, // tri1 - 8, 17, 18, // tri2 - 7, 5, 19 // tri3 -), -gsSPNTriangles_5b( - 6, 8, 20, // tri0 - 8, 7, 21, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 4, // tri count - 2, 4, 22, // tri0 - 4, 23, 24, // tri1 - 4, 25, 26 // tri2 -), -gsSPNTriangles_5b( - 4, 0, 27, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 124), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&tuk_1_v[39], 23, 0), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 1, 2, // tri0 - 3, 4, 2, // tri1 - 2, 4, 5 // tri2 -), -gsSPNTriangles_5b( - 1, 6, 2, // tri0 - 2, 6, 7, // tri1 - 8, 3, 2, // tri2 - 2, 7, 8 // tri3 -), -gsSPNTriangles_5b( - 2, 5, 0, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 124), -gsSPNTrianglesInit_5b( - 14, // tri count - 9, 10, 11, // tri0 - 11, 10, 12, // tri1 - 13, 12, 14 // tri2 -), -gsSPNTriangles_5b( - 15, 16, 17, // tri0 - 15, 18, 19, // tri1 - 19, 20, 15, // tri2 - 14, 21, 22 // tri3 -), -gsSPNTriangles_5b( - 22, 13, 14, // tri0 - 12, 13, 11, // tri1 - 11, 20, 9, // tri2 - 17, 16, 22 // tri3 -), -gsSPNTriangles_5b( - 17, 18, 15, // tri0 - 22, 21, 17, // tri1 - 19, 9, 20, // tri2 - 0, 0, 0 // tri3 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_REPEAT, 0, 0), -gsDPSetTileSize(0, 0, 0, 60, 124), -gsSPVertex(&tuk_1_v[62], 27, 0), -gsSPNTrianglesInit_5b( - 14, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 9, 10, 6, // tri0 - 1, 0, 11, // tri1 - 11, 7, 1, // tri2 - 12, 5, 4 // tri3 -), -gsSPNTriangles_5b( - 12, 4, 10, // tri0 - 10, 9, 12, // tri1 - 11, 8, 7, // tri2 - 2, 13, 0 // tri3 -), -gsSPNTriangles_5b( - 5, 14, 3, // tri0 - 6, 15, 9, // tri1 - 8, 15, 6, // tri2 - 0, 0, 0 // tri3 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000180, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 60), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 12, // tri count - 16, 17, 18, // tri0 - 19, 20, 21, // tri1 - 19, 21, 22 // tri2 -), -gsSPNTriangles_5b( - 23, 18, 17, // tri0 - 17, 16, 24, // tri1 - 20, 25, 21, // tri2 - 26, 21, 25 // tri3 -), -gsSPNTriangles_5b( - 22, 17, 24, // tri0 - 22, 24, 19, // tri1 - 21, 26, 23, // tri2 - 17, 22, 23 // tri3 -), -gsSPNTriangles_5b( - 23, 22, 21, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&tuk_1_v[89], 13, 0), -gsSPNTrianglesInit_5b( - 13, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 3, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 2, 7, 0, // tri0 - 8, 5, 0, // tri1 - 7, 9, 0, // tri2 - 5, 10, 6 // tri3 -), -gsSPNTriangles_5b( - 8, 10, 5, // tri0 - 11, 9, 7, // tri1 - 0, 9, 8, // tri2 - 5, 4, 1 // tri3 -), -gsSPNTriangles_5b( - 5, 1, 0, // tri0 - 6, 10, 12, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&tuk_1_v[102], 21, 0), -gsSPNTrianglesInit_5b( - 18, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 4, 9, 5, // tri0 - 8, 2, 10, // tri1 - 11, 4, 3, // tri2 - 10, 2, 4 // tri3 -), -gsSPNTriangles_5b( - 12, 8, 7, // tri0 - 9, 4, 1, // tri1 - 6, 8, 13, // tri2 - 4, 11, 10 // tri3 -), -gsSPNTriangles_5b( - 4, 2, 1, // tri0 - 10, 14, 8, // tri1 - 13, 8, 14, // tri2 - 2, 12, 0 // tri3 -), -gsSPNTriangles_5b( - 12, 2, 8, // tri0 - 15, 16, 17, // tri1 - 18, 19, 20, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&tuk_1_v[123], 14, 0), -gsSPNTrianglesInit_5b( - 16, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 3, 6, 4 // tri2 -), -gsSPNTriangles_5b( - 2, 7, 8, // tri0 - 9, 5, 10, // tri1 - 7, 11, 12, // tri2 - 5, 9, 3 // tri3 -), -gsSPNTriangles_5b( - 8, 0, 2, // tri0 - 4, 13, 10, // tri1 - 12, 11, 0, // tri2 - 10, 5, 4 // tri3 -), -gsSPNTriangles_5b( - 0, 8, 12, // tri0 - 12, 8, 7, // tri1 - 10, 13, 9, // tri2 - 0, 11, 1 // tri3 -), -gsSPNTriangles_5b( - 6, 13, 4, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&tuk_1_v[137], 29, 0), -gsSPNTrianglesInit_5b( - 23, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 5, 9, 3, // tri0 - 2, 10, 0, // tri1 - 8, 11, 6, // tri2 - 6, 12, 7 // tri3 -), -gsSPNTriangles_5b( - 4, 13, 5, // tri0 - 5, 13, 1, // tri1 - 10, 6, 0, // tri2 - 0, 5, 1 // tri3 -), -gsSPNTriangles_5b( - 10, 12, 6, // tri0 - 0, 6, 14, // tri1 - 14, 6, 11, // tri2 - 14, 11, 15 // tri3 -), -gsSPNTriangles_5b( - 16, 9, 5, // tri0 - 16, 5, 17, // tri1 - 16, 18, 15, // tri2 - 15, 18, 14 // tri3 -), -gsSPNTriangles_5b( - 17, 18, 16, // tri0 - 14, 18, 17, // tri1 - 17, 5, 0, // tri2 - 0, 14, 17 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), -gsDPSetTileSize(0, 0, 0, 60, 60), -gsSPNTrianglesInit_5b( - 10, // tri count - 19, 20, 21, // tri0 - 22, 23, 19, // tri1 - 21, 24, 25 // tri2 -), -gsSPNTriangles_5b( - 25, 22, 19, // tri0 - 25, 19, 21, // tri1 - 23, 26, 27, // tri2 - 24, 21, 20 // tri3 -), -gsSPNTriangles_5b( - 27, 19, 23, // tri0 - 20, 28, 24, // tri1 - 19, 27, 20, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&tuk_1_v[166], 5, 0), -gsSPNTrianglesInit_5b( - 3, // tri count - 0, 1, 2, // tri0 - 0, 3, 1, // tri1 - 1, 3, 4 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tuk_1_v[11], 9, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*14, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&tuk_1_v[20], 19, 9), + gsSPNTrianglesInit_5b(9, // tri count + 5, 3, 9, // tri0 + 1, 6, 10, // tri1 + 5, 11, 12 // tri2 + ), + gsSPNTriangles_5b(6, 13, 14, // tri0 + 7, 15, 16, // tri1 + 8, 17, 18, // tri2 + 7, 5, 19 // tri3 + ), + gsSPNTriangles_5b(6, 8, 20, // tri0 + 8, 7, 21, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(4, // tri count + 2, 4, 22, // tri0 + 4, 23, 24, // tri1 + 4, 25, 26 // tri2 + ), + gsSPNTriangles_5b(4, 0, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 124), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tuk_1_v[39], 23, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b(1, 6, 2, // tri0 + 2, 6, 7, // tri1 + 8, 3, 2, // tri2 + 2, 7, 8 // tri3 + ), + gsSPNTriangles_5b(2, 5, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 124), + gsSPNTrianglesInit_5b(14, // tri count + 9, 10, 11, // tri0 + 11, 10, 12, // tri1 + 13, 12, 14 // tri2 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 15, 18, 19, // tri1 + 19, 20, 15, // tri2 + 14, 21, 22 // tri3 + ), + gsSPNTriangles_5b(22, 13, 14, // tri0 + 12, 13, 11, // tri1 + 11, 20, 9, // tri2 + 17, 16, 22 // tri3 + ), + gsSPNTriangles_5b(17, 18, 15, // tri0 + 22, 21, 17, // tri1 + 19, 9, 20, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 60, 124), + gsSPVertex(&tuk_1_v[62], 27, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 6, // tri0 + 1, 0, 11, // tri1 + 11, 7, 1, // tri2 + 12, 5, 4 // tri3 + ), + gsSPNTriangles_5b(12, 4, 10, // tri0 + 10, 9, 12, // tri1 + 11, 8, 7, // tri2 + 2, 13, 0 // tri3 + ), + gsSPNTriangles_5b(5, 14, 3, // tri0 + 6, 15, 9, // tri1 + 8, 15, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x180, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(12, // tri count + 16, 17, 18, // tri0 + 19, 20, 21, // tri1 + 19, 21, 22 // tri2 + ), + gsSPNTriangles_5b(23, 18, 17, // tri0 + 17, 16, 24, // tri1 + 20, 25, 21, // tri2 + 26, 21, 25 // tri3 + ), + gsSPNTriangles_5b(22, 17, 24, // tri0 + 22, 24, 19, // tri1 + 21, 26, 23, // tri2 + 17, 22, 23 // tri3 + ), + gsSPNTriangles_5b(23, 22, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&tuk_1_v[89], 13, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(2, 7, 0, // tri0 + 8, 5, 0, // tri1 + 7, 9, 0, // tri2 + 5, 10, 6 // tri3 + ), + gsSPNTriangles_5b(8, 10, 5, // tri0 + 11, 9, 7, // tri1 + 0, 9, 8, // tri2 + 5, 4, 1 // tri3 + ), + gsSPNTriangles_5b(5, 1, 0, // tri0 + 6, 10, 12, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&tuk_1_v[102], 21, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(4, 9, 5, // tri0 + 8, 2, 10, // tri1 + 11, 4, 3, // tri2 + 10, 2, 4 // tri3 + ), + gsSPNTriangles_5b(12, 8, 7, // tri0 + 9, 4, 1, // tri1 + 6, 8, 13, // tri2 + 4, 11, 10 // tri3 + ), + gsSPNTriangles_5b(4, 2, 1, // tri0 + 10, 14, 8, // tri1 + 13, 8, 14, // tri2 + 2, 12, 0 // tri3 + ), + gsSPNTriangles_5b(12, 2, 8, // tri0 + 15, 16, 17, // tri1 + 18, 19, 20, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&tuk_1_v[123], 14, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(2, 7, 8, // tri0 + 9, 5, 10, // tri1 + 7, 11, 12, // tri2 + 5, 9, 3 // tri3 + ), + gsSPNTriangles_5b(8, 0, 2, // tri0 + 4, 13, 10, // tri1 + 12, 11, 0, // tri2 + 10, 5, 4 // tri3 + ), + gsSPNTriangles_5b(0, 8, 12, // tri0 + 12, 8, 7, // tri1 + 10, 13, 9, // tri2 + 0, 11, 1 // tri3 + ), + gsSPNTriangles_5b(6, 13, 4, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&tuk_1_v[137], 29, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(5, 9, 3, // tri0 + 2, 10, 0, // tri1 + 8, 11, 6, // tri2 + 6, 12, 7 // tri3 + ), + gsSPNTriangles_5b(4, 13, 5, // tri0 + 5, 13, 1, // tri1 + 10, 6, 0, // tri2 + 0, 5, 1 // tri3 + ), + gsSPNTriangles_5b(10, 12, 6, // tri0 + 0, 6, 14, // tri1 + 14, 6, 11, // tri2 + 14, 11, 15 // tri3 + ), + gsSPNTriangles_5b(16, 9, 5, // tri0 + 16, 5, 17, // tri1 + 16, 18, 15, // tri2 + 15, 18, 14 // tri3 + ), + gsSPNTriangles_5b(17, 18, 16, // tri0 + 14, 18, 17, // tri1 + 17, 5, 0, // tri2 + 0, 14, 17 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 60, 60), + gsSPNTrianglesInit_5b(10, // tri count + 19, 20, 21, // tri0 + 22, 23, 19, // tri1 + 21, 24, 25 // tri2 + ), + gsSPNTriangles_5b(25, 22, 19, // tri0 + 25, 19, 21, // tri1 + 23, 26, 27, // tri2 + 24, 21, 20 // tri3 + ), + gsSPNTriangles_5b(27, 19, 23, // tri0 + 20, 28, 24, // tri1 + 19, 27, 20, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&tuk_1_v[166], 5, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 3, 4 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx mouth_tuk_model[] = { -gsSPMatrix(0x0D000380, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&tuk_1_v[0], 4, 0), -gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&tuk_1_v[4], 7, 4), -gsSPNTrianglesInit_5b( - 5, // tri count - 0, 3, 4, // tri0 - 2, 1, 5, // tri1 - 3, 7, 6 // tri2 -), -gsSPNTriangles_5b( - 1, 9, 8, // tri0 - 3, 2, 10, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*14, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tuk_1_v[0], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&tuk_1_v[4], 7, 4), + gsSPNTrianglesInit_5b(5, // tri count + 0, 3, 4, // tri0 + 2, 1, 5, // tri1 + 3, 7, 6 // tri2 + ), + gsSPNTriangles_5b(1, 9, 8, // tri0 + 3, 2, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_tuk_model[] = { -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&tuk_1_v[204], 6, 0), -gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&tuk_1_v[210], 15, 6), -gsSPNTrianglesInit_5b( - 7, // tri count - 4, 6, 7, // tri0 - 2, 4, 8, // tri1 - 4, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 3, 11, 12, // tri0 - 3, 13, 0, // tri1 - 5, 14, 15, // tri2 - 5, 1, 16 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 20, 17, 19, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tuk_1_v[204], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&tuk_1_v[210], 15, 6), + gsSPNTrianglesInit_5b(7, // tri count + 4, 6, 7, // tri0 + 2, 4, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(3, 11, 12, // tri0 + 3, 13, 0, // tri1 + 5, 14, 15, // tri2 + 5, 1, 16 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 17, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_tuk_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&tuk_1_v[225], 3, 0), -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&tuk_1_v[228], 9, 3), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 3, // tri0 - 2, 0, 4, // tri1 - 0, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 1, 7, 8, // tri0 - 1, 2, 9, // tri1 - 2, 10, 11, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tuk_1_v[225], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&tuk_1_v[228], 9, 3), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 3, // tri0 + 2, 0, 4, // tri1 + 0, 5, 6 // tri2 + ), + gsSPNTriangles_5b(1, 7, 8, // tri0 + 1, 2, 9, // tri1 + 2, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_tuk_model[] = { -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&tuk_1_v[171], 6, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&tuk_1_v[177], 15, 6), -gsSPNTrianglesInit_5b( - 7, // tri count - 4, 6, 7, // tri0 - 4, 2, 8, // tri1 - 4, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 0, 11, 12, // tri0 - 0, 13, 3, // tri1 - 5, 14, 15, // tri2 - 1, 5, 16 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 17, 19, 20, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tuk_1_v[171], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&tuk_1_v[177], 15, 6), + gsSPNTrianglesInit_5b(7, // tri count + 4, 6, 7, // tri0 + 4, 2, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(0, 11, 12, // tri0 + 0, 13, 3, // tri1 + 5, 14, 15, // tri2 + 1, 5, 16 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 17, 19, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_tuk_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&tuk_1_v[192], 3, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&tuk_1_v[195], 9, 3), -gsSPNTrianglesInit_5b( - 6, // tri count - 1, 0, 3, // tri0 - 0, 2, 4, // tri1 - 0, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 1, 7, 8, // tri0 - 2, 1, 9, // tri1 - 2, 10, 11, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tuk_1_v[192], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&tuk_1_v[195], 9, 3), + gsSPNTrianglesInit_5b(6, // tri count + 1, 0, 3, // tri0 + 0, 2, 4, // tri1 + 0, 5, 6 // tri2 + ), + gsSPNTriangles_5b(1, 7, 8, // tri0 + 2, 1, 9, // tri1 + 2, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_tuk_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&tuk_1_v[237], 8, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&tuk_1_v[245], 20, 8), -gsSPNTrianglesInit_5b( - 14, // tri count - 5, 8, 0, // tri0 - 0, 9, 6, // tri1 - 5, 11, 10 // tri2 -), -gsSPNTriangles_5b( - 4, 3, 12, // tri0 - 7, 13, 3, // tri1 - 3, 14, 15, // tri2 - 4, 17, 16 // tri3 -), -gsSPNTriangles_5b( - 5, 4, 18, // tri0 - 6, 20, 19, // tri1 - 7, 2, 21, // tri2 - 2, 1, 22 // tri3 -), -gsSPNTriangles_5b( - 1, 6, 23, // tri0 - 1, 24, 25, // tri1 - 2, 27, 26, // tri2 - 0, 0, 0 // tri3 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&tuk_1_v[265], 18, 0), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 2, 1 // tri2 -), -gsSPNTriangles_5b( - 6, 7, 4, // tri0 - 2, 8, 0, // tri1 - 5, 9, 3, // tri2 - 1, 7, 6 // tri3 -), -gsSPNTriangles_5b( - 4, 3, 6, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 6, // tri count - 10, 11, 12, // tri0 - 10, 12, 13, // tri1 - 11, 10, 14 // tri2 -), -gsSPNTriangles_5b( - 12, 15, 16, // tri0 - 14, 17, 11, // tri1 - 16, 13, 12, // tri2 - 0, 0, 0 // tri3 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&tuk_1_v[283], 26, 0), -gsSPNTrianglesInit_5b( - 32, // tri count - 0, 1, 2, // tri0 - 3, 2, 4, // tri1 - 5, 2, 1 // tri2 -), -gsSPNTriangles_5b( - 5, 6, 2, // tri0 - 7, 8, 9, // tri1 - 9, 10, 11, // tri2 - 9, 12, 7 // tri3 -), -gsSPNTriangles_5b( - 2, 6, 4, // tri0 - 13, 14, 2, // tri1 - 11, 12, 9, // tri2 - 11, 0, 15 // tri3 -), -gsSPNTriangles_5b( - 11, 15, 16, // tri0 - 13, 7, 17, // tri1 - 13, 17, 18, // tri2 - 0, 19, 20 // tri3 -), -gsSPNTriangles_5b( - 0, 20, 15, // tri0 - 14, 13, 18, // tri1 - 14, 18, 21, // tri2 - 12, 11, 16 // tri3 -), -gsSPNTriangles_5b( - 12, 16, 22, // tri0 - 7, 23, 8, // tri1 - 10, 24, 11, // tri2 - 0, 24, 1 // tri3 -), -gsSPNTriangles_5b( - 23, 13, 3, // tri0 - 1, 24, 10, // tri1 - 3, 8, 23, // tri2 - 9, 25, 10 // tri3 -), -gsSPNTriangles_5b( - 8, 25, 9, // tri0 - 2, 19, 0, // tri1 - 2, 3, 13, // tri2 - 7, 12, 22 // tri3 -), -gsSPNTriangles_5b( - 7, 22, 17, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tuk_1_v[237], 8, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&tuk_1_v[245], 20, 8), + gsSPNTrianglesInit_5b(14, // tri count + 5, 8, 0, // tri0 + 0, 9, 6, // tri1 + 5, 11, 10 // tri2 + ), + gsSPNTriangles_5b(4, 3, 12, // tri0 + 7, 13, 3, // tri1 + 3, 14, 15, // tri2 + 4, 17, 16 // tri3 + ), + gsSPNTriangles_5b(5, 4, 18, // tri0 + 6, 20, 19, // tri1 + 7, 2, 21, // tri2 + 2, 1, 22 // tri3 + ), + gsSPNTriangles_5b(1, 6, 23, // tri0 + 1, 24, 25, // tri1 + 2, 27, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&tuk_1_v[265], 18, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 2, 1 // tri2 + ), + gsSPNTriangles_5b(6, 7, 4, // tri0 + 2, 8, 0, // tri1 + 5, 9, 3, // tri2 + 1, 7, 6 // tri3 + ), + gsSPNTriangles_5b(4, 3, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(6, // tri count + 10, 11, 12, // tri0 + 10, 12, 13, // tri1 + 11, 10, 14 // tri2 + ), + gsSPNTriangles_5b(12, 15, 16, // tri0 + 14, 17, 11, // tri1 + 16, 13, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&tuk_1_v[283], 26, 0), + gsSPNTrianglesInit_5b(32, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 5, 2, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 2, // tri0 + 7, 8, 9, // tri1 + 9, 10, 11, // tri2 + 9, 12, 7 // tri3 + ), + gsSPNTriangles_5b(2, 6, 4, // tri0 + 13, 14, 2, // tri1 + 11, 12, 9, // tri2 + 11, 0, 15 // tri3 + ), + gsSPNTriangles_5b(11, 15, 16, // tri0 + 13, 7, 17, // tri1 + 13, 17, 18, // tri2 + 0, 19, 20 // tri3 + ), + gsSPNTriangles_5b(0, 20, 15, // tri0 + 14, 13, 18, // tri1 + 14, 18, 21, // tri2 + 12, 11, 16 // tri3 + ), + gsSPNTriangles_5b(12, 16, 22, // tri0 + 7, 23, 8, // tri1 + 10, 24, 11, // tri2 + 0, 24, 1 // tri3 + ), + gsSPNTriangles_5b(23, 13, 3, // tri0 + 1, 24, 10, // tri1 + 3, 8, 23, // tri2 + 9, 25, 10 // tri3 + ), + gsSPNTriangles_5b(8, 25, 9, // tri0 + 2, 19, 0, // tri1 + 2, 3, 13, // tri2 + 7, 12, 22 // tri3 + ), + gsSPNTriangles_5b(7, 22, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail_tuk_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&tuk_1_v[309], 6, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000580, G_IM_FMT_CI, 16, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&tuk_1_v[315], 20, 6), -gsSPNTrianglesInit_5b( - 3, // tri count - 1, 6, 7, // tri0 - 3, 8, 9, // tri1 - 3, 10, 11 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 2, // tri count - 1, 0, 12, // tri0 - 5, 2, 13, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 1, 14, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 3, 16, // tri0 - 3, 17, 18, // tri1 - 1, 19, 20 // tri2 -), -gsSPNTriangles_5b( - 4, 5, 21, // tri0 - 4, 22, 23, // tri1 - 2, 24, 25, // tri2 - 0, 0, 0 // tri3 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&tuk_1_v[335], 21, 0), -gsSPNTrianglesInit_5b( - 14, // tri count - 0, 1, 2, // tri0 - 2, 1, 3, // tri1 - 2, 4, 0 // tri2 -), -gsSPNTriangles_5b( - 3, 5, 6, // tri0 - 7, 8, 4, // tri1 - 2, 9, 7, // tri2 - 10, 7, 9 // tri3 -), -gsSPNTriangles_5b( - 10, 8, 7, // tri0 - 6, 11, 9, // tri1 - 1, 5, 3, // tri2 - 3, 9, 2 // tri3 -), -gsSPNTriangles_5b( - 7, 4, 2, // tri0 - 9, 11, 10, // tri1 - 9, 3, 6, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 8, // tri count - 12, 13, 14, // tri0 - 14, 13, 15, // tri1 - 14, 16, 12 // tri2 -), -gsSPNTriangles_5b( - 17, 18, 16, // tri0 - 14, 19, 17, // tri1 - 13, 20, 15, // tri2 - 15, 19, 14 // tri3 -), -gsSPNTriangles_5b( - 17, 16, 14, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tuk_1_v[309], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x580, G_IM_FMT_CI, 16, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tuk_1_v[315], 20, 6), + gsSPNTrianglesInit_5b(3, // tri count + 1, 6, 7, // tri0 + 3, 8, 9, // tri1 + 3, 10, 11 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 1, 0, 12, // tri0 + 5, 2, 13, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 1, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(6, // tri count + 0, 3, 16, // tri0 + 3, 17, 18, // tri1 + 1, 19, 20 // tri2 + ), + gsSPNTriangles_5b(4, 5, 21, // tri0 + 4, 22, 23, // tri1 + 2, 24, 25, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tuk_1_v[335], 21, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(3, 5, 6, // tri0 + 7, 8, 4, // tri1 + 2, 9, 7, // tri2 + 10, 7, 9 // tri3 + ), + gsSPNTriangles_5b(10, 8, 7, // tri0 + 6, 11, 9, // tri1 + 1, 5, 3, // tri2 + 3, 9, 2 // tri3 + ), + gsSPNTriangles_5b(7, 4, 2, // tri0 + 9, 11, 10, // tri1 + 9, 3, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(8, // tri count + 12, 13, 14, // tri0 + 14, 13, 15, // tri1 + 14, 16, 12 // tri2 + ), + gsSPNTriangles_5b(17, 18, 16, // tri0 + 14, 19, 17, // tri1 + 13, 20, 15, // tri2 + 15, 19, 14 // tri3 + ), + gsSPNTriangles_5b(17, 16, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot3_tuk_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&tuk_1_v[406], 4, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&tuk_1_v[410], 20, 4), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 3, 4, // tri0 - 1, 0, 5, // tri1 - 3, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 2, 8, 9, // tri0 - 2, 10, 3, // tri1 - 1, 11, 12, // tri2 - 0, 0, 0 // tri3 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 6, // tri count - 13, 14, 15, // tri0 - 13, 16, 14, // tri1 - 13, 17, 18 // tri2 -), -gsSPNTriangles_5b( - 13, 19, 17, // tri0 - 15, 19, 13, // tri1 - 18, 20, 13, // tri2 - 0, 0, 0 // tri3 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 21, 22, 23, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tuk_1_v[406], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&tuk_1_v[410], 20, 4), + gsSPNTrianglesInit_5b(6, // tri count + 0, 3, 4, // tri0 + 1, 0, 5, // tri1 + 3, 6, 7 // tri2 + ), + gsSPNTriangles_5b(2, 8, 9, // tri0 + 2, 10, 3, // tri1 + 1, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(6, // tri count + 13, 14, 15, // tri0 + 13, 16, 14, // tri1 + 13, 17, 18 // tri2 + ), + gsSPNTriangles_5b(13, 19, 17, // tri0 + 15, 19, 13, // tri1 + 18, 20, 13, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 21, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_tuk_model[] = { -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&tuk_1_v[430], 4, 0), -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&tuk_1_v[434], 14, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 1, 6, 7, // tri1 - 3, 0, 8 // tri2 -), -gsSPNTriangles_5b( - 0, 2, 9, // tri0 - 2, 10, 11, // tri1 - 1, 3, 12, // tri2 - 3, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 15, 16, 17, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tuk_1_v[430], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&tuk_1_v[434], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 1, 6, 7, // tri1 + 3, 0, 8 // tri2 + ), + gsSPNTriangles_5b(0, 2, 9, // tri0 + 2, 10, 11, // tri1 + 1, 3, 12, // tri2 + 3, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_tuk_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&tuk_1_v[448], 8, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 2, // tri0 - 1, 0, 3, // tri1 - 2, 4, 0 // tri2 -), -gsSPNTriangles_5b( - 5, 6, 4, // tri0 - 5, 4, 2, // tri1 - 3, 7, 1, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tuk_1_v[448], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 1, 0, 3, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(5, 6, 4, // tri0 + 5, 4, 2, // tri1 + 3, 7, 1, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot3_tuk_model[] = { -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&tuk_1_v[356], 4, 0), -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&tuk_1_v[360], 20, 4), -gsSPNTrianglesInit_5b( - 6, // tri count - 3, 0, 4, // tri0 - 0, 1, 5, // tri1 - 3, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 3, 8, 9, // tri0 - 3, 10, 2, // tri1 - 1, 11, 12, // tri2 - 0, 0, 0 // tri3 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 6, // tri count - 13, 14, 15, // tri0 - 14, 16, 15, // tri1 - 17, 18, 15 // tri2 -), -gsSPNTriangles_5b( - 18, 19, 15, // tri0 - 15, 19, 13, // tri1 - 15, 20, 17, // tri2 - 0, 0, 0 // tri3 -), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 1, // tri count - 21, 22, 23, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tuk_1_v[356], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&tuk_1_v[360], 20, 4), + gsSPNTrianglesInit_5b(6, // tri count + 3, 0, 4, // tri0 + 0, 1, 5, // tri1 + 3, 6, 7 // tri2 + ), + gsSPNTriangles_5b(3, 8, 9, // tri0 + 3, 10, 2, // tri1 + 1, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(6, // tri count + 13, 14, 15, // tri0 + 14, 16, 15, // tri1 + 17, 18, 15 // tri2 + ), + gsSPNTriangles_5b(18, 19, 15, // tri0 + 15, 19, 13, // tri1 + 15, 20, 17, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 21, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_tuk_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&tuk_1_v[380], 4, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&tuk_1_v[384], 14, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 1, 6, 7, // tri1 - 0, 3, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 0, 9, // tri0 - 2, 10, 11, // tri1 - 3, 1, 12, // tri2 - 3, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 15, 16, 17, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tuk_1_v[380], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&tuk_1_v[384], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 1, 6, 7, // tri1 + 0, 3, 8 // tri2 + ), + gsSPNTriangles_5b(2, 0, 9, // tri0 + 2, 10, 11, // tri1 + 3, 1, 12, // tri2 + 3, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_tuk_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&tuk_1_v[398], 8, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 2, // tri0 - 3, 2, 1, // tri1 - 2, 4, 0 // tri2 -), -gsSPNTriangles_5b( - 0, 4, 5, // tri0 - 0, 5, 6, // tri1 - 1, 7, 3, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tuk_1_v[398], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(0, 4, 5, // tri0 + 0, 5, 6, // tri1 + 1, 7, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx base_tuk_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&tuk_1_v[456], 13, 0), -gsSPNTrianglesInit_5b( - 16, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 1, 7 // tri2 -), -gsSPNTriangles_5b( - 7, 8, 6, // tri0 - 7, 0, 3, // tri1 - 3, 8, 7, // tri2 - 9, 10, 11 // tri3 -), -gsSPNTriangles_5b( - 10, 2, 11, // tri0 - 3, 0, 10, // tri1 - 3, 10, 4, // tri2 - 12, 4, 9 // tri3 -), -gsSPNTriangles_5b( - 5, 4, 12, // tri0 - 10, 9, 4, // tri1 - 7, 1, 0, // tri2 - 5, 8, 3 // tri3 -), -gsSPNTriangles_5b( - 2, 10, 0, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tuk_1_v[456], 13, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 1, 7 // tri2 + ), + gsSPNTriangles_5b(7, 8, 6, // tri0 + 7, 0, 3, // tri1 + 3, 8, 7, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b(10, 2, 11, // tri0 + 3, 0, 10, // tri1 + 3, 10, 4, // tri2 + 12, 4, 9 // tri3 + ), + gsSPNTriangles_5b(5, 4, 12, // tri0 + 10, 9, 4, // tri1 + 7, 1, 0, // tri2 + 5, 8, 3 // tri3 + ), + gsSPNTriangles_5b(2, 10, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_tuk_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -959,4 +847,4 @@ static cKF_Joint_R_c cKF_je_r_tuk_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_tuk_1 = { 26, 15, cKF_je_r_tuk_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_tuk_1 = { 26, 15, cKF_je_r_tuk_1_tbl }; diff --git a/src/data/npc/model/mdl/wip_1.c b/src/data/npc/model/mdl/wip_1.c index 0a7b0f7f..e0972177 100644 --- a/src/data/npc/model/mdl/wip_1.c +++ b/src/data/npc/model/mdl/wip_1.c @@ -6,686 +6,599 @@ static Vtx wip_1_v[] = { }; static Gfx head_wip_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&wip_1_v[0], 15, 0), -gsSPNTrianglesInit_5b( - 17, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 5, 1, 3 // tri2 -), -gsSPNTriangles_5b( - 6, 3, 7, // tri0 - 6, 7, 8, // tri1 - 1, 0, 7, // tri2 - 9, 10, 8 // tri3 -), -gsSPNTriangles_5b( - 6, 11, 12, // tri0 - 13, 11, 10, // tri1 - 3, 6, 4, // tri2 - 12, 4, 6 // tri3 -), -gsSPNTriangles_5b( - 14, 9, 8, // tri0 - 14, 8, 7, // tri1 - 7, 0, 14, // tri2 - 11, 6, 8 // tri3 -), -gsSPNTriangles_5b( - 8, 10, 11, // tri0 - 7, 3, 1, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&wip_1_v[15], 27, 0), -gsSPNTrianglesInit_5b( - 29, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 9, 10, 11, // tri0 - 5, 4, 12, // tri1 - 13, 14, 15, // tri2 - 16, 14, 17 // tri3 -), -gsSPNTriangles_5b( - 16, 18, 19, // tri0 - 20, 3, 5, // tri1 - 6, 8, 11, // tri2 - 15, 21, 13 // tri3 -), -gsSPNTriangles_5b( - 2, 12, 0, // tri0 - 22, 23, 24, // tri1 - 19, 1, 16, // tri2 - 17, 18, 16 // tri3 -), -gsSPNTriangles_5b( - 2, 1, 19, // tri0 - 23, 3, 20, // tri1 - 25, 5, 2, // tri2 - 7, 6, 21 // tri3 -), -gsSPNTriangles_5b( - 13, 6, 26, // tri0 - 10, 9, 22, // tri1 - 22, 24, 10, // tri2 - 20, 24, 23 // tri3 -), -gsSPNTriangles_5b( - 11, 8, 9, // tri0 - 21, 6, 13, // tri1 - 17, 14, 13, // tri2 - 2, 5, 12 // tri3 -), -gsSPNTriangles_5b( - 19, 25, 2, // tri0 - 13, 26, 17, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&wip_1_v[42], 13, 0), -gsSPNTrianglesInit_5b( - 11, // tri count - 0, 1, 2, // tri0 - 2, 3, 0, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 4, 6, 7, // tri0 - 7, 8, 4, // tri1 - 5, 3, 2, // tri2 - 9, 10, 11 // tri3 -), -gsSPNTriangles_5b( - 9, 12, 8, // tri0 - 5, 2, 6, // tri1 - 7, 9, 8, // tri2 - 11, 12, 9 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000180, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&wip_1_v[55], 32, 0), -gsSPNTrianglesInit_5b( - 24, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 3, 7 // tri2 -), -gsSPNTriangles_5b( - 8, 9, 10, // tri0 - 11, 3, 6, // tri1 - 6, 7, 12, // tri2 - 8, 13, 14 // tri3 -), -gsSPNTriangles_5b( - 15, 7, 16, // tri0 - 12, 17, 6, // tri1 - 18, 9, 8, // tri2 - 2, 4, 11 // tri3 -), -gsSPNTriangles_5b( - 2, 11, 0, // tri0 - 19, 20, 21, // tri1 - 22, 23, 24, // tri2 - 5, 25, 26 // tri3 -), -gsSPNTriangles_5b( - 25, 5, 4, // tri0 - 27, 28, 29, // tri1 - 29, 30, 27, // tri2 - 20, 19, 27 // tri3 -), -gsSPNTriangles_5b( - 27, 30, 20, // tri0 - 26, 29, 5, // tri1 - 23, 22, 26, // tri2 - 23, 26, 25 // tri3 -), -gsSPNTriangles_5b( - 1, 24, 23, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&wip_1_v[86], 32, 0), -gsSPNTrianglesInit_5b( - 25, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 9, 0, // tri0 - 10, 5, 4, // tri1 - 4, 1, 10, // tri2 - 5, 11, 3 // tri3 -), -gsSPNTriangles_5b( - 6, 12, 7, // tri0 - 7, 12, 13, // tri1 - 0, 8, 14, // tri2 - 15, 16, 13 // tri3 -), -gsSPNTriangles_5b( - 17, 18, 9, // tri0 - 19, 20, 21, // tri1 - 21, 22, 19, // tri2 - 8, 18, 6 // tri3 -), -gsSPNTriangles_5b( - 7, 14, 8, // tri0 - 20, 23, 21, // tri1 - 24, 25, 14, // tri2 - 26, 19, 5 // tri3 -), -gsSPNTriangles_5b( - 27, 28, 6, // tri0 - 21, 29, 30, // tri1 - 6, 18, 27, // tri2 - 1, 0, 10 // tri3 -), -gsSPNTriangles_5b( - 21, 23, 29, // tri0 - 2, 31, 9, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&wip_1_v[118], 30, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 3 // tri2 -), -gsSPNTriangles_5b( - 8, 9, 10, // tri0 - 11, 12, 13, // tri1 - 13, 12, 14, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0001C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 18, // tri count - 15, 16, 17, // tri0 - 18, 19, 20, // tri1 - 21, 22, 23 // tri2 -), -gsSPNTriangles_5b( - 23, 24, 21, // tri0 - 21, 17, 18, // tri1 - 18, 25, 21, // tri2 - 26, 15, 24 // tri3 -), -gsSPNTriangles_5b( - 27, 22, 25, // tri0 - 21, 24, 17, // tri1 - 18, 28, 19, // tri2 - 16, 29, 17 // tri3 -), -gsSPNTriangles_5b( - 21, 25, 22, // tri0 - 25, 20, 27, // tri1 - 17, 24, 15, // tri2 - 24, 23, 26 // tri3 -), -gsSPNTriangles_5b( - 20, 25, 18, // tri0 - 17, 29, 28, // tri1 - 17, 28, 18, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&wip_1_v[148], 20, 0), -gsSPNTrianglesInit_5b( - 10, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 9, 10, 1, // tri0 - 11, 10, 12, // tri1 - 13, 14, 11, // tri2 - 2, 3, 15 // tri3 -), -gsSPNTriangles_5b( - 16, 14, 17, // tri0 - 8, 16, 18, // tri1 - 4, 7, 19, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wip_1_v[0], 15, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 1, 3 // tri2 + ), + gsSPNTriangles_5b(6, 3, 7, // tri0 + 6, 7, 8, // tri1 + 1, 0, 7, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(6, 11, 12, // tri0 + 13, 11, 10, // tri1 + 3, 6, 4, // tri2 + 12, 4, 6 // tri3 + ), + gsSPNTriangles_5b(14, 9, 8, // tri0 + 14, 8, 7, // tri1 + 7, 0, 14, // tri2 + 11, 6, 8 // tri3 + ), + gsSPNTriangles_5b(8, 10, 11, // tri0 + 7, 3, 1, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&wip_1_v[15], 27, 0), + gsSPNTrianglesInit_5b(29, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 5, 4, 12, // tri1 + 13, 14, 15, // tri2 + 16, 14, 17 // tri3 + ), + gsSPNTriangles_5b(16, 18, 19, // tri0 + 20, 3, 5, // tri1 + 6, 8, 11, // tri2 + 15, 21, 13 // tri3 + ), + gsSPNTriangles_5b(2, 12, 0, // tri0 + 22, 23, 24, // tri1 + 19, 1, 16, // tri2 + 17, 18, 16 // tri3 + ), + gsSPNTriangles_5b(2, 1, 19, // tri0 + 23, 3, 20, // tri1 + 25, 5, 2, // tri2 + 7, 6, 21 // tri3 + ), + gsSPNTriangles_5b(13, 6, 26, // tri0 + 10, 9, 22, // tri1 + 22, 24, 10, // tri2 + 20, 24, 23 // tri3 + ), + gsSPNTriangles_5b(11, 8, 9, // tri0 + 21, 6, 13, // tri1 + 17, 14, 13, // tri2 + 2, 5, 12 // tri3 + ), + gsSPNTriangles_5b(19, 25, 2, // tri0 + 13, 26, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&wip_1_v[42], 13, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 7, 8, 4, // tri1 + 5, 3, 2, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b(9, 12, 8, // tri0 + 5, 2, 6, // tri1 + 7, 9, 8, // tri2 + 11, 12, 9 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x180, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&wip_1_v[55], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 11, 3, 6, // tri1 + 6, 7, 12, // tri2 + 8, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 7, 16, // tri0 + 12, 17, 6, // tri1 + 18, 9, 8, // tri2 + 2, 4, 11 // tri3 + ), + gsSPNTriangles_5b(2, 11, 0, // tri0 + 19, 20, 21, // tri1 + 22, 23, 24, // tri2 + 5, 25, 26 // tri3 + ), + gsSPNTriangles_5b(25, 5, 4, // tri0 + 27, 28, 29, // tri1 + 29, 30, 27, // tri2 + 20, 19, 27 // tri3 + ), + gsSPNTriangles_5b(27, 30, 20, // tri0 + 26, 29, 5, // tri1 + 23, 22, 26, // tri2 + 23, 26, 25 // tri3 + ), + gsSPNTriangles_5b(1, 24, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&wip_1_v[86], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 9, 0, // tri0 + 10, 5, 4, // tri1 + 4, 1, 10, // tri2 + 5, 11, 3 // tri3 + ), + gsSPNTriangles_5b(6, 12, 7, // tri0 + 7, 12, 13, // tri1 + 0, 8, 14, // tri2 + 15, 16, 13 // tri3 + ), + gsSPNTriangles_5b(17, 18, 9, // tri0 + 19, 20, 21, // tri1 + 21, 22, 19, // tri2 + 8, 18, 6 // tri3 + ), + gsSPNTriangles_5b(7, 14, 8, // tri0 + 20, 23, 21, // tri1 + 24, 25, 14, // tri2 + 26, 19, 5 // tri3 + ), + gsSPNTriangles_5b(27, 28, 6, // tri0 + 21, 29, 30, // tri1 + 6, 18, 27, // tri2 + 1, 0, 10 // tri3 + ), + gsSPNTriangles_5b(21, 23, 29, // tri0 + 2, 31, 9, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&wip_1_v[118], 30, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 3 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 13, 12, 14, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(18, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 21, 22, 23 // tri2 + ), + gsSPNTriangles_5b(23, 24, 21, // tri0 + 21, 17, 18, // tri1 + 18, 25, 21, // tri2 + 26, 15, 24 // tri3 + ), + gsSPNTriangles_5b(27, 22, 25, // tri0 + 21, 24, 17, // tri1 + 18, 28, 19, // tri2 + 16, 29, 17 // tri3 + ), + gsSPNTriangles_5b(21, 25, 22, // tri0 + 25, 20, 27, // tri1 + 17, 24, 15, // tri2 + 24, 23, 26 // tri3 + ), + gsSPNTriangles_5b(20, 25, 18, // tri0 + 17, 29, 28, // tri1 + 17, 28, 18, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&wip_1_v[148], 20, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 1, // tri0 + 11, 10, 12, // tri1 + 13, 14, 11, // tri2 + 2, 3, 15 // tri3 + ), + gsSPNTriangles_5b(16, 14, 17, // tri0 + 8, 16, 18, // tri1 + 4, 7, 19, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_wip_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&wip_1_v[202], 4, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&wip_1_v[206], 16, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 4, 5, // tri0 - 3, 6, 7, // tri1 - 3, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 0, 1, 10, // tri0 - 1, 3, 11, // tri1 - 0, 12, 13, // tri2 - 2, 0, 14 // tri3 -), -gsSPNTriangles_5b( - 3, 2, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 16, 17, 18, // tri0 - 19, 18, 17, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wip_1_v[202], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wip_1_v[206], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 0, 4, 5, // tri0 + 3, 6, 7, // tri1 + 3, 8, 9 // tri2 + ), + gsSPNTriangles_5b(0, 1, 10, // tri0 + 1, 3, 11, // tri1 + 0, 12, 13, // tri2 + 2, 0, 14 // tri3 + ), + gsSPNTriangles_5b(3, 2, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 19, 18, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_wip_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&wip_1_v[222], 3, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&wip_1_v[225], 11, 3), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 2, 3, // tri0 - 2, 5, 4, // tri1 - 1, 7, 6 // tri2 -), -gsSPNTriangles_5b( - 2, 1, 8, // tri0 - 1, 0, 9, // tri1 - 0, 10, 11, // tri2 - 2, 12, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wip_1_v[222], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wip_1_v[225], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 0, 2, 3, // tri0 + 2, 5, 4, // tri1 + 1, 7, 6 // tri2 + ), + gsSPNTriangles_5b(2, 1, 8, // tri0 + 1, 0, 9, // tri1 + 0, 10, 11, // tri2 + 2, 12, 13 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_wip_model[] = { -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&wip_1_v[168], 4, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&wip_1_v[172], 16, 4), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 4, 5, // tri0 - 3, 6, 7, // tri1 - 3, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 10, // tri0 - 3, 1, 11, // tri1 - 0, 12, 13, // tri2 - 0, 2, 14 // tri3 -), -gsSPNTriangles_5b( - 2, 3, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 16, 17, 18, // tri0 - 17, 16, 19, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wip_1_v[168], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wip_1_v[172], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 0, 4, 5, // tri0 + 3, 6, 7, // tri1 + 3, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 0, 10, // tri0 + 3, 1, 11, // tri1 + 0, 12, 13, // tri2 + 0, 2, 14 // tri3 + ), + gsSPNTriangles_5b(2, 3, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_wip_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&wip_1_v[188], 3, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&wip_1_v[191], 11, 3), -gsSPNTrianglesInit_5b( - 7, // tri count - 2, 0, 3, // tri0 - 2, 5, 4, // tri1 - 1, 7, 6 // tri2 -), -gsSPNTriangles_5b( - 1, 2, 8, // tri0 - 0, 1, 9, // tri1 - 0, 10, 11, // tri2 - 2, 12, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wip_1_v[188], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wip_1_v[191], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 2, 0, 3, // tri0 + 2, 5, 4, // tri1 + 1, 7, 6 // tri2 + ), + gsSPNTriangles_5b(1, 2, 8, // tri0 + 0, 1, 9, // tri1 + 0, 10, 11, // tri2 + 2, 12, 13 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_wip_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&wip_1_v[236], 8, 0), -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&wip_1_v[244], 24, 8), -gsSPNTrianglesInit_5b( - 16, // tri count - 0, 8, 9, // tri0 - 0, 10, 11, // tri1 - 4, 2, 12 // tri2 -), -gsSPNTriangles_5b( - 3, 13, 14, // tri0 - 7, 15, 16, // tri1 - 3, 6, 17, // tri2 - 7, 18, 19 // tri3 -), -gsSPNTriangles_5b( - 2, 1, 20, // tri0 - 1, 0, 21, // tri1 - 3, 22, 23, // tri2 - 7, 4, 24 // tri3 -), -gsSPNTriangles_5b( - 2, 25, 26, // tri0 - 0, 5, 27, // tri1 - 5, 3, 28, // tri2 - 6, 7, 29 // tri3 -), -gsSPNTriangles_5b( - 2, 30, 31, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&wip_1_v[268], 15, 0), -gsSPNTrianglesInit_5b( - 18, // tri count - 0, 1, 2, // tri0 - 3, 1, 4, // tri1 - 5, 3, 6 // tri2 -), -gsSPNTriangles_5b( - 7, 6, 8, // tri0 - 3, 5, 2, // tri1 - 9, 10, 11, // tri2 - 12, 13, 0 // tri3 -), -gsSPNTriangles_5b( - 13, 9, 11, // tri0 - 11, 10, 14, // tri1 - 14, 10, 8, // tri2 - 4, 1, 0 // tri3 -), -gsSPNTriangles_5b( - 8, 10, 7, // tri0 - 4, 8, 3, // tri1 - 0, 11, 4, // tri2 - 4, 11, 14 // tri3 -), -gsSPNTriangles_5b( - 2, 12, 0, // tri0 - 2, 1, 3, // tri1 - 14, 8, 4, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0003C0, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&wip_1_v[283], 19, 0), -gsSPNTrianglesInit_5b( - 30, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 3, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 7, 8, 9, // tri0 - 7, 9, 10, // tri1 - 2, 1, 11, // tri2 - 4, 0, 2 // tri3 -), -gsSPNTriangles_5b( - 12, 13, 0, // tri0 - 11, 1, 14, // tri1 - 15, 16, 13, // tri2 - 9, 14, 16 // tri3 -), -gsSPNTriangles_5b( - 14, 1, 16, // tri0 - 8, 11, 14, // tri1 - 17, 15, 12, // tri2 - 17, 12, 18 // tri3 -), -gsSPNTriangles_5b( - 16, 1, 13, // tri0 - 10, 9, 15, // tri1 - 10, 15, 17, // tri2 - 18, 12, 4 // tri3 -), -gsSPNTriangles_5b( - 18, 4, 3, // tri0 - 13, 1, 0, // tri1 - 5, 2, 11, // tri2 - 11, 8, 5 // tri3 -), -gsSPNTriangles_5b( - 14, 9, 8, // tri0 - 16, 15, 9, // tri1 - 13, 12, 15, // tri2 - 0, 4, 12 // tri3 -), -gsSPNTriangles_5b( - 2, 5, 4, // tri0 - 6, 5, 8, // tri1 - 6, 8, 7, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wip_1_v[236], 8, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wip_1_v[244], 24, 8), + gsSPNTrianglesInit_5b(16, // tri count + 0, 8, 9, // tri0 + 0, 10, 11, // tri1 + 4, 2, 12 // tri2 + ), + gsSPNTriangles_5b(3, 13, 14, // tri0 + 7, 15, 16, // tri1 + 3, 6, 17, // tri2 + 7, 18, 19 // tri3 + ), + gsSPNTriangles_5b(2, 1, 20, // tri0 + 1, 0, 21, // tri1 + 3, 22, 23, // tri2 + 7, 4, 24 // tri3 + ), + gsSPNTriangles_5b(2, 25, 26, // tri0 + 0, 5, 27, // tri1 + 5, 3, 28, // tri2 + 6, 7, 29 // tri3 + ), + gsSPNTriangles_5b(2, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&wip_1_v[268], 15, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 1, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 6, 8, // tri0 + 3, 5, 2, // tri1 + 9, 10, 11, // tri2 + 12, 13, 0 // tri3 + ), + gsSPNTriangles_5b(13, 9, 11, // tri0 + 11, 10, 14, // tri1 + 14, 10, 8, // tri2 + 4, 1, 0 // tri3 + ), + gsSPNTriangles_5b(8, 10, 7, // tri0 + 4, 8, 3, // tri1 + 0, 11, 4, // tri2 + 4, 11, 14 // tri3 + ), + gsSPNTriangles_5b(2, 12, 0, // tri0 + 2, 1, 3, // tri1 + 14, 8, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wip_1_v[283], 19, 0), + gsSPNTrianglesInit_5b(30, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 7, 9, 10, // tri1 + 2, 1, 11, // tri2 + 4, 0, 2 // tri3 + ), + gsSPNTriangles_5b(12, 13, 0, // tri0 + 11, 1, 14, // tri1 + 15, 16, 13, // tri2 + 9, 14, 16 // tri3 + ), + gsSPNTriangles_5b(14, 1, 16, // tri0 + 8, 11, 14, // tri1 + 17, 15, 12, // tri2 + 17, 12, 18 // tri3 + ), + gsSPNTriangles_5b(16, 1, 13, // tri0 + 10, 9, 15, // tri1 + 10, 15, 17, // tri2 + 18, 12, 4 // tri3 + ), + gsSPNTriangles_5b(18, 4, 3, // tri0 + 13, 1, 0, // tri1 + 5, 2, 11, // tri2 + 11, 8, 5 // tri3 + ), + gsSPNTriangles_5b(14, 9, 8, // tri0 + 16, 15, 9, // tri1 + 13, 12, 15, // tri2 + 0, 4, 12 // tri3 + ), + gsSPNTriangles_5b(2, 5, 4, // tri0 + 6, 5, 8, // tri1 + 6, 8, 7, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_wip_model[] = { -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&wip_1_v[327], 4, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&wip_1_v[331], 14, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 0, 4, // tri0 - 0, 6, 5, // tri1 - 2, 8, 7 // tri2 -), -gsSPNTriangles_5b( - 0, 1, 9, // tri0 - 1, 2, 10, // tri1 - 2, 3, 11, // tri2 - 1, 12, 13 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 14, 15, 16, // tri0 - 17, 15, 14, // tri1 - 17, 16, 15 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wip_1_v[327], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wip_1_v[331], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 0, 4, // tri0 + 0, 6, 5, // tri1 + 2, 8, 7 // tri2 + ), + gsSPNTriangles_5b(0, 1, 9, // tri0 + 1, 2, 10, // tri1 + 2, 3, 11, // tri2 + 1, 12, 13 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 14, 15, 16, // tri0 + 17, 15, 14, // tri1 + 17, 16, 15 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_wip_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&wip_1_v[345], 7, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 5, 6, 3 // tri2 -), -gsSPNTriangles_5b( - 5, 0, 6, // tri0 - 2, 1, 4, // tri1 - 2, 6, 0, // tri2 - 3, 2, 4 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wip_1_v[345], 7, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 3 // tri2 + ), + gsSPNTriangles_5b(5, 0, 6, // tri0 + 2, 1, 4, // tri1 + 2, 6, 0, // tri2 + 3, 2, 4 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_wip_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&wip_1_v[302], 4, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&wip_1_v[306], 14, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 3, 4, // tri0 - 0, 6, 5, // tri1 - 2, 8, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 9, // tri0 - 2, 1, 10, // tri1 - 3, 2, 11, // tri2 - 1, 12, 13 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 14, 15, 16, // tri0 - 16, 15, 17, // tri1 - 15, 14, 17 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wip_1_v[302], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wip_1_v[306], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 4, // tri0 + 0, 6, 5, // tri1 + 2, 8, 7 // tri2 + ), + gsSPNTriangles_5b(1, 0, 9, // tri0 + 2, 1, 10, // tri1 + 3, 2, 11, // tri2 + 1, 12, 13 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 14, 15, 16, // tri0 + 16, 15, 17, // tri1 + 15, 14, 17 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_wip_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&wip_1_v[320], 7, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 5, 6, 3 // tri2 -), -gsSPNTriangles_5b( - 6, 2, 3, // tri0 - 4, 1, 0, // tri1 - 2, 6, 0, // tri2 - 4, 0, 5 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wip_1_v[320], 7, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 3 // tri2 + ), + gsSPNTriangles_5b(6, 2, 3, // tri0 + 4, 1, 0, // tri1 + 2, 6, 0, // tri2 + 4, 0, 5 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx base_wip_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&wip_1_v[352], 16, 0), -gsSPNTrianglesInit_5b( - 22, // tri count - 0, 1, 2, // tri0 - 1, 3, 2, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 4, 6, 7, // tri0 - 4, 8, 9, // tri1 - 10, 11, 12, // tri2 - 4, 9, 5 // tri3 -), -gsSPNTriangles_5b( - 9, 8, 13, // tri0 - 11, 6, 0, // tri1 - 11, 0, 12, // tri2 - 1, 5, 9 // tri3 -), -gsSPNTriangles_5b( - 3, 1, 9, // tri0 - 9, 13, 3, // tri1 - 0, 6, 5, // tri2 - 0, 5, 1 // tri3 -), -gsSPNTriangles_5b( - 8, 4, 14, // tri0 - 14, 4, 7, // tri1 - 7, 15, 14, // tri2 - 11, 10, 15 // tri3 -), -gsSPNTriangles_5b( - 11, 15, 7, // tri0 - 11, 7, 6, // tri1 - 2, 12, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wip_1_v[352], 16, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 4, 8, 9, // tri1 + 10, 11, 12, // tri2 + 4, 9, 5 // tri3 + ), + gsSPNTriangles_5b(9, 8, 13, // tri0 + 11, 6, 0, // tri1 + 11, 0, 12, // tri2 + 1, 5, 9 // tri3 + ), + gsSPNTriangles_5b(3, 1, 9, // tri0 + 9, 13, 3, // tri1 + 0, 6, 5, // tri2 + 0, 5, 1 // tri3 + ), + gsSPNTriangles_5b(8, 4, 14, // tri0 + 14, 4, 7, // tri1 + 7, 15, 14, // tri2 + 11, 10, 15 // tri3 + ), + gsSPNTriangles_5b(11, 15, 7, // tri0 + 11, 7, 6, // tri1 + 2, 12, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_wip_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,800,0 }, @@ -717,4 +630,4 @@ static cKF_Joint_R_c cKF_je_r_wip_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_wip_1 = { 26, 11, cKF_je_r_wip_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_wip_1 = { 26, 11, cKF_je_r_wip_1_tbl }; diff --git a/src/data/npc/model/mdl/wls_1.c b/src/data/npc/model/mdl/wls_1.c index 51a3024a..b7f5c606 100644 --- a/src/data/npc/model/mdl/wls_1.c +++ b/src/data/npc/model/mdl/wls_1.c @@ -6,828 +6,727 @@ static Vtx wls_1_v[] = { }; static Gfx head_wls_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&wls_1_v[10], 10, 0), -gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&wls_1_v[20], 20, 10), -gsSPNTrianglesInit_5b( - 13, // tri count - 1, 10, 11, // tri0 - 4, 12, 6, // tri1 - 8, 13, 14 // tri2 -), -gsSPNTriangles_5b( - 9, 15, 16, // tri0 - 7, 17, 5, // tri1 - 0, 18, 19, // tri2 - 0, 1, 20 // tri3 -), -gsSPNTriangles_5b( - 0, 21, 22, // tri0 - 4, 23, 24, // tri1 - 5, 25, 3, // tri2 - 3, 26, 4 // tri3 -), -gsSPNTriangles_5b( - 5, 27, 28, // tri0 - 1, 8, 29, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&wls_1_v[40], 11, 10), -gsSPNTrianglesInit_5b( - 3, // tri count - 9, 0, 10, // tri0 - 7, 9, 11, // tri1 - 8, 6, 12 // tri2 -), -gsSPNTrianglesInit_5b( - 4, // tri count - 2, 14, 13, // tri0 - 2, 16, 15, // tri1 - 2, 18, 17 // tri2 -), -gsSPNTriangles_5b( - 2, 20, 19, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&wls_1_v[51], 31, 0), -gsSPNTrianglesInit_5b( - 12, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 3, 2, 4 // tri2 -), -gsSPNTriangles_5b( - 5, 4, 2, // tri0 - 6, 0, 3, // tri1 - 6, 3, 7, // tri2 - 7, 3, 4 // tri3 -), -gsSPNTriangles_5b( - 1, 8, 5, // tri0 - 1, 5, 2, // tri1 - 8, 9, 10, // tri2 - 8, 10, 5 // tri3 -), -gsSPNTriangles_5b( - 5, 10, 4, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 12, // tri count - 11, 12, 13, // tri0 - 11, 13, 14, // tri1 - 15, 12, 11 // tri2 -), -gsSPNTriangles_5b( - 12, 15, 16, // tri0 - 17, 11, 14, // tri1 - 17, 14, 18, // tri2 - 15, 11, 17 // tri3 -), -gsSPNTriangles_5b( - 12, 16, 19, // tri0 - 12, 19, 13, // tri1 - 16, 20, 21, // tri2 - 16, 21, 19 // tri3 -), -gsSPNTriangles_5b( - 15, 20, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 9, // tri count - 22, 23, 24, // tri0 - 25, 26, 27, // tri1 - 28, 29, 26 // tri2 -), -gsSPNTriangles_5b( - 28, 26, 25, // tri0 - 26, 29, 22, // tri1 - 24, 27, 26, // tri2 - 24, 26, 22 // tri3 -), -gsSPNTriangles_5b( - 23, 22, 30, // tri0 - 30, 22, 29, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&wls_1_v[82], 21, 0), -gsSPNTrianglesInit_5b( - 30, // tri count - 0, 1, 2, // tri0 - 2, 3, 4, // tri1 - 5, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 8, 9, 10, // tri0 - 6, 11, 1, // tri1 - 0, 12, 7, // tri2 - 13, 14, 5 // tri3 -), -gsSPNTriangles_5b( - 5, 14, 6, // tri0 - 10, 15, 16, // tri1 - 9, 15, 10, // tri2 - 3, 8, 4 // tri3 -), -gsSPNTriangles_5b( - 0, 7, 1, // tri0 - 15, 9, 17, // tri1 - 11, 6, 14, // tri2 - 9, 8, 3 // tri3 -), -gsSPNTriangles_5b( - 2, 1, 11, // tri0 - 16, 18, 10, // tri1 - 13, 12, 0, // tri2 - 5, 12, 13 // tri3 -), -gsSPNTriangles_5b( - 2, 19, 0, // tri0 - 1, 7, 6, // tri1 - 10, 18, 8, // tri2 - 8, 18, 4 // tri3 -), -gsSPNTriangles_5b( - 7, 12, 5, // tri0 - 4, 18, 16, // tri1 - 4, 19, 2, // tri2 - 17, 3, 2 // tri3 -), -gsSPNTriangles_5b( - 3, 17, 9, // tri0 - 20, 2, 11, // tri1 - 17, 2, 20, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&wls_1_v[103], 11, 0), -gsSPNTrianglesInit_5b( - 10, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 0, 3, 6 // tri2 -), -gsSPNTriangles_5b( - 7, 5, 4, // tri0 - 0, 6, 1, // tri1 - 8, 4, 3, // tri2 - 9, 7, 4 // tri3 -), -gsSPNTriangles_5b( - 8, 3, 0, // tri0 - 6, 3, 10, // tri1 - 10, 3, 5, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wls_1_v[10], 10, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wls_1_v[20], 20, 10), + gsSPNTrianglesInit_5b(13, // tri count + 1, 10, 11, // tri0 + 4, 12, 6, // tri1 + 8, 13, 14 // tri2 + ), + gsSPNTriangles_5b(9, 15, 16, // tri0 + 7, 17, 5, // tri1 + 0, 18, 19, // tri2 + 0, 1, 20 // tri3 + ), + gsSPNTriangles_5b(0, 21, 22, // tri0 + 4, 23, 24, // tri1 + 5, 25, 3, // tri2 + 3, 26, 4 // tri3 + ), + gsSPNTriangles_5b(5, 27, 28, // tri0 + 1, 8, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&wls_1_v[40], 11, 10), + gsSPNTrianglesInit_5b(3, // tri count + 9, 0, 10, // tri0 + 7, 9, 11, // tri1 + 8, 6, 12 // tri2 + ), + gsSPNTrianglesInit_5b(4, // tri count + 2, 14, 13, // tri0 + 2, 16, 15, // tri1 + 2, 18, 17 // tri2 + ), + gsSPNTriangles_5b(2, 20, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&wls_1_v[51], 31, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b(5, 4, 2, // tri0 + 6, 0, 3, // tri1 + 6, 3, 7, // tri2 + 7, 3, 4 // tri3 + ), + gsSPNTriangles_5b(1, 8, 5, // tri0 + 1, 5, 2, // tri1 + 8, 9, 10, // tri2 + 8, 10, 5 // tri3 + ), + gsSPNTriangles_5b(5, 10, 4, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(12, // tri count + 11, 12, 13, // tri0 + 11, 13, 14, // tri1 + 15, 12, 11 // tri2 + ), + gsSPNTriangles_5b(12, 15, 16, // tri0 + 17, 11, 14, // tri1 + 17, 14, 18, // tri2 + 15, 11, 17 // tri3 + ), + gsSPNTriangles_5b(12, 16, 19, // tri0 + 12, 19, 13, // tri1 + 16, 20, 21, // tri2 + 16, 21, 19 // tri3 + ), + gsSPNTriangles_5b(15, 20, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(9, // tri count + 22, 23, 24, // tri0 + 25, 26, 27, // tri1 + 28, 29, 26 // tri2 + ), + gsSPNTriangles_5b(28, 26, 25, // tri0 + 26, 29, 22, // tri1 + 24, 27, 26, // tri2 + 24, 26, 22 // tri3 + ), + gsSPNTriangles_5b(23, 22, 30, // tri0 + 30, 22, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&wls_1_v[82], 21, 0), + gsSPNTrianglesInit_5b(30, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 6, 11, 1, // tri1 + 0, 12, 7, // tri2 + 13, 14, 5 // tri3 + ), + gsSPNTriangles_5b(5, 14, 6, // tri0 + 10, 15, 16, // tri1 + 9, 15, 10, // tri2 + 3, 8, 4 // tri3 + ), + gsSPNTriangles_5b(0, 7, 1, // tri0 + 15, 9, 17, // tri1 + 11, 6, 14, // tri2 + 9, 8, 3 // tri3 + ), + gsSPNTriangles_5b(2, 1, 11, // tri0 + 16, 18, 10, // tri1 + 13, 12, 0, // tri2 + 5, 12, 13 // tri3 + ), + gsSPNTriangles_5b(2, 19, 0, // tri0 + 1, 7, 6, // tri1 + 10, 18, 8, // tri2 + 8, 18, 4 // tri3 + ), + gsSPNTriangles_5b(7, 12, 5, // tri0 + 4, 18, 16, // tri1 + 4, 19, 2, // tri2 + 17, 3, 2 // tri3 + ), + gsSPNTriangles_5b(3, 17, 9, // tri0 + 20, 2, 11, // tri1 + 17, 2, 20, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&wls_1_v[103], 11, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 4, // tri0 + 0, 6, 1, // tri1 + 8, 4, 3, // tri2 + 9, 7, 4 // tri3 + ), + gsSPNTriangles_5b(8, 3, 0, // tri0 + 6, 3, 10, // tri1 + 10, 3, 5, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx mouth_wls_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&wls_1_v[0], 10, 0), -gsSPNTrianglesInit_5b( - 10, // tri count - 0, 1, 2, // tri0 - 1, 0, 3, // tri1 - 1, 3, 4 // tri2 -), -gsSPNTriangles_5b( - 5, 3, 6, // tri0 - 1, 7, 2, // tri1 - 2, 7, 8, // tri2 - 2, 8, 6 // tri3 -), -gsSPNTriangles_5b( - 9, 5, 6, // tri0 - 7, 1, 4, // tri1 - 7, 4, 8, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wls_1_v[0], 10, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 1, 0, 3, // tri1 + 1, 3, 4 // tri2 + ), + gsSPNTriangles_5b(5, 3, 6, // tri0 + 1, 7, 2, // tri1 + 2, 7, 8, // tri2 + 2, 8, 6 // tri3 + ), + gsSPNTriangles_5b(9, 5, 6, // tri0 + 7, 1, 4, // tri1 + 7, 4, 8, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_wls_model[] = { -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&wls_1_v[149], 5, 0), -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&wls_1_v[154], 24, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 3, 0, 5, // tri0 - 3, 6, 7, // tri1 - 1, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 1, 10, 0, // tri0 - 4, 3, 11, // tri1 - 2, 4, 12, // tri2 - 4, 13, 14 // tri3 -), -gsSPNTriangles_5b( - 4, 15, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 17, 19, 20, // tri1 - 0, 0, 0 // tri2 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 21, 22, 23, // tri0 - 21, 23, 24, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 2, // tri count - 25, 26, 27, // tri0 - 25, 27, 28, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&wls_1_v[178], 16, 0), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 4, 6, 7, // tri0 - 8, 9, 10, // tri1 - 8, 10, 11, // tri2 - 12, 13, 14 // tri3 -), -gsSPNTriangles_5b( - 12, 14, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wls_1_v[149], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wls_1_v[154], 24, 5), + gsSPNTrianglesInit_5b(8, // tri count + 3, 0, 5, // tri0 + 3, 6, 7, // tri1 + 1, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 10, 0, // tri0 + 4, 3, 11, // tri1 + 2, 4, 12, // tri2 + 4, 13, 14 // tri3 + ), + gsSPNTriangles_5b(4, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 17, 19, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPNTrianglesInit_5b(2, // tri count + 21, 22, 23, // tri0 + 21, 23, 24, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 25, 26, 27, // tri0 + 25, 27, 28, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&wls_1_v[178], 16, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_wls_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&wls_1_v[194], 3, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&wls_1_v[197], 11, 3), -gsSPNTrianglesInit_5b( - 7, // tri count - 2, 0, 3, // tri0 - 0, 4, 5, // tri1 - 0, 1, 6 // tri2 -), -gsSPNTriangles_5b( - 1, 7, 8, // tri0 - 1, 2, 9, // tri1 - 2, 10, 11, // tri2 - 0, 12, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wls_1_v[194], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wls_1_v[197], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 2, 0, 3, // tri0 + 0, 4, 5, // tri1 + 0, 1, 6 // tri2 + ), + gsSPNTriangles_5b(1, 7, 8, // tri0 + 1, 2, 9, // tri1 + 2, 10, 11, // tri2 + 0, 12, 13 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_wls_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&wls_1_v[114], 5, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&wls_1_v[119], 16, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 3, 5, // tri0 - 3, 6, 7, // tri1 - 0, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 0, 10, 1, // tri0 - 3, 4, 11, // tri1 - 4, 2, 12, // tri2 - 4, 13, 14 // tri3 -), -gsSPNTriangles_5b( - 4, 15, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 17, 19, 20, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wls_1_v[114], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wls_1_v[119], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 3, 5, // tri0 + 3, 6, 7, // tri1 + 0, 8, 9 // tri2 + ), + gsSPNTriangles_5b(0, 10, 1, // tri0 + 3, 4, 11, // tri1 + 4, 2, 12, // tri2 + 4, 13, 14 // tri3 + ), + gsSPNTriangles_5b(4, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 17, 19, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_wls_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&wls_1_v[135], 3, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&wls_1_v[138], 11, 3), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 3, 4, // tri0 - 0, 5, 6, // tri1 - 1, 0, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 8, 9, // tri0 - 2, 1, 10, // tri1 - 2, 11, 12, // tri2 - 0, 2, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wls_1_v[135], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wls_1_v[138], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 4, // tri0 + 0, 5, 6, // tri1 + 1, 0, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 2, 1, 10, // tri1 + 2, 11, 12, // tri2 + 0, 2, 13 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_wls_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&wls_1_v[208], 7, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&wls_1_v[215], 21, 7), -gsSPNTrianglesInit_5b( - 14, // tri count - 6, 4, 7, // tri0 - 0, 8, 9, // tri1 - 4, 10, 11 // tri2 -), -gsSPNTriangles_5b( - 2, 6, 12, // tri0 - 6, 14, 13, // tri1 - 3, 5, 15, // tri2 - 0, 16, 17 // tri3 -), -gsSPNTriangles_5b( - 4, 18, 19, // tri0 - 3, 20, 21, // tri1 - 0, 2, 22, // tri2 - 4, 1, 23 // tri3 -), -gsSPNTriangles_5b( - 1, 3, 24, // tri0 - 3, 25, 26, // tri1 - 5, 0, 27, // tri2 - 0, 0, 0 // tri3 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&wls_1_v[236], 26, 0), -gsSPNTrianglesInit_5b( - 2, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 0, 0, 0 // tri2 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000340, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPNTrianglesInit_5b( - 24, // tri count - 4, 5, 6, // tri0 - 4, 6, 7, // tri1 - 8, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 8, 10, 11, // tri0 - 12, 13, 10, // tri1 - 14, 15, 16, // tri2 - 14, 16, 17 // tri3 -), -gsSPNTriangles_5b( - 18, 17, 16, // tri0 - 18, 19, 9, // tri1 - 11, 10, 20, // tri2 - 5, 21, 22 // tri3 -), -gsSPNTriangles_5b( - 5, 22, 23, // tri0 - 21, 5, 4, // tri1 - 6, 15, 14, // tri2 - 9, 19, 13 // tri3 -), -gsSPNTriangles_5b( - 7, 6, 14, // tri0 - 6, 24, 23, // tri1 - 18, 9, 8, // tri2 - 13, 25, 20 // tri3 -), -gsSPNTriangles_5b( - 13, 20, 10, // tri0 - 5, 23, 24, // tri1 - 16, 19, 18, // tri2 - 23, 15, 6 // tri3 -), -gsSPNTriangles_5b( - 13, 12, 9, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000440, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&wls_1_v[262], 31, 0), -gsSPNTrianglesInit_5b( - 4, // tri count - 0, 1, 2, // tri0 - 3, 4, 1, // tri1 - 4, 3, 5 // tri2 -), -gsSPNTriangles_5b( - 1, 5, 6, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0004C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 4, // tri count - 7, 8, 9, // tri0 - 10, 11, 12, // tri1 - 13, 8, 7 // tri2 -), -gsSPNTriangles_5b( - 9, 8, 13, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 2, // tri count - 14, 15, 16, // tri0 - 16, 15, 17, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000540, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 12, // tri count - 18, 19, 20, // tri0 - 21, 22, 19, // tri1 - 23, 24, 22 // tri2 -), -gsSPNTriangles_5b( - 25, 26, 24, // tri0 - 20, 19, 22, // tri1 - 20, 22, 27, // tri2 - 28, 21, 18 // tri3 -), -gsSPNTriangles_5b( - 19, 18, 21, // tri0 - 22, 21, 23, // tri1 - 24, 23, 25, // tri2 - 26, 25, 29 // tri3 -), -gsSPNTriangles_5b( - 18, 30, 28, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&wls_1_v[293], 29, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 4, 0, 3 // tri2 -), -gsSPNTriangles_5b( - 5, 6, 7, // tri0 - 8, 2, 1, // tri1 - 8, 1, 9, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000580, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 22, // tri count - 10, 11, 12, // tri0 - 10, 12, 13, // tri1 - 13, 12, 14 // tri2 -), -gsSPNTriangles_5b( - 14, 12, 15, // tri0 - 16, 11, 10, // tri1 - 17, 18, 19, // tri2 - 20, 12, 21 // tri3 -), -gsSPNTriangles_5b( - 22, 21, 11, // tri0 - 21, 12, 11, // tri1 - 19, 18, 23, // tri2 - 21, 24, 20 // tri3 -), -gsSPNTriangles_5b( - 25, 24, 26, // tri0 - 26, 23, 25, // tri1 - 21, 22, 19, // tri2 - 11, 27, 22 // tri3 -), -gsSPNTriangles_5b( - 25, 20, 24, // tri0 - 22, 27, 17, // tri1 - 19, 26, 24, // tri2 - 19, 24, 21 // tri3 -), -gsSPNTriangles_5b( - 23, 26, 19, // tri0 - 19, 22, 17, // tri1 - 14, 15, 28, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wls_1_v[208], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wls_1_v[215], 21, 7), + gsSPNTrianglesInit_5b(14, // tri count + 6, 4, 7, // tri0 + 0, 8, 9, // tri1 + 4, 10, 11 // tri2 + ), + gsSPNTriangles_5b(2, 6, 12, // tri0 + 6, 14, 13, // tri1 + 3, 5, 15, // tri2 + 0, 16, 17 // tri3 + ), + gsSPNTriangles_5b(4, 18, 19, // tri0 + 3, 20, 21, // tri1 + 0, 2, 22, // tri2 + 4, 1, 23 // tri3 + ), + gsSPNTriangles_5b(1, 3, 24, // tri0 + 3, 25, 26, // tri1 + 5, 0, 27, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wls_1_v[236], 26, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(24, // tri count + 4, 5, 6, // tri0 + 4, 6, 7, // tri1 + 8, 9, 10 // tri2 + ), + gsSPNTriangles_5b(8, 10, 11, // tri0 + 12, 13, 10, // tri1 + 14, 15, 16, // tri2 + 14, 16, 17 // tri3 + ), + gsSPNTriangles_5b(18, 17, 16, // tri0 + 18, 19, 9, // tri1 + 11, 10, 20, // tri2 + 5, 21, 22 // tri3 + ), + gsSPNTriangles_5b(5, 22, 23, // tri0 + 21, 5, 4, // tri1 + 6, 15, 14, // tri2 + 9, 19, 13 // tri3 + ), + gsSPNTriangles_5b(7, 6, 14, // tri0 + 6, 24, 23, // tri1 + 18, 9, 8, // tri2 + 13, 25, 20 // tri3 + ), + gsSPNTriangles_5b(13, 20, 10, // tri0 + 5, 23, 24, // tri1 + 16, 19, 18, // tri2 + 23, 15, 6 // tri3 + ), + gsSPNTriangles_5b(13, 12, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&wls_1_v[262], 31, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 4, 3, 5 // tri2 + ), + gsSPNTriangles_5b(1, 5, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x4C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 13, 8, 7 // tri2 + ), + gsSPNTriangles_5b(9, 8, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 14, 15, 16, // tri0 + 16, 15, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(12, // tri count + 18, 19, 20, // tri0 + 21, 22, 19, // tri1 + 23, 24, 22 // tri2 + ), + gsSPNTriangles_5b(25, 26, 24, // tri0 + 20, 19, 22, // tri1 + 20, 22, 27, // tri2 + 28, 21, 18 // tri3 + ), + gsSPNTriangles_5b(19, 18, 21, // tri0 + 22, 21, 23, // tri1 + 24, 23, 25, // tri2 + 26, 25, 29 // tri3 + ), + gsSPNTriangles_5b(18, 30, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&wls_1_v[293], 29, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 2, 1, // tri1 + 8, 1, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x580, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(22, // tri count + 10, 11, 12, // tri0 + 10, 12, 13, // tri1 + 13, 12, 14 // tri2 + ), + gsSPNTriangles_5b(14, 12, 15, // tri0 + 16, 11, 10, // tri1 + 17, 18, 19, // tri2 + 20, 12, 21 // tri3 + ), + gsSPNTriangles_5b(22, 21, 11, // tri0 + 21, 12, 11, // tri1 + 19, 18, 23, // tri2 + 21, 24, 20 // tri3 + ), + gsSPNTriangles_5b(25, 24, 26, // tri0 + 26, 23, 25, // tri1 + 21, 22, 19, // tri2 + 11, 27, 22 // tri3 + ), + gsSPNTriangles_5b(25, 20, 24, // tri0 + 22, 27, 17, // tri1 + 19, 26, 24, // tri2 + 19, 24, 21 // tri3 + ), + gsSPNTriangles_5b(23, 26, 19, // tri0 + 19, 22, 17, // tri1 + 14, 15, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot3_wls_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&wls_1_v[364], 3, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&wls_1_v[367], 18, 3), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 3, 4, // tri0 - 2, 1, 5, // tri1 - 2, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 0, 2, 8, // tri0 - 1, 0, 9, // tri1 - 0, 10, 11, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 5, // tri count - 12, 13, 14, // tri0 - 15, 16, 12, // tri1 - 12, 14, 15 // tri2 -), -gsSPNTriangles_5b( - 17, 18, 19, // tri0 - 17, 19, 20, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wls_1_v[364], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wls_1_v[367], 18, 3), + gsSPNTrianglesInit_5b(6, // tri count + 0, 3, 4, // tri0 + 2, 1, 5, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(0, 2, 8, // tri0 + 1, 0, 9, // tri1 + 0, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(5, // tri count + 12, 13, 14, // tri0 + 15, 16, 12, // tri1 + 12, 14, 15 // tri2 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 17, 19, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_wls_model[] = { -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&wls_1_v[385], 4, 0), -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&wls_1_v[389], 10, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 2, 4, 5, // tri0 - 2, 3, 6, // tri1 - 0, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 1, 2, 9, // tri0 - 3, 10, 11, // tri1 - 3, 0, 12, // tri2 - 0, 1, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wls_1_v[385], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wls_1_v[389], 10, 4), + gsSPNTrianglesInit_5b(7, // tri count + 2, 4, 5, // tri0 + 2, 3, 6, // tri1 + 0, 7, 8 // tri2 + ), + gsSPNTriangles_5b(1, 2, 9, // tri0 + 3, 10, 11, // tri1 + 3, 0, 12, // tri2 + 0, 1, 13 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_wls_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&wls_1_v[399], 7, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 5, 6, 3 // tri2 -), -gsSPNTriangles_5b( - 5, 0, 6, // tri0 - 2, 1, 4, // tri1 - 2, 6, 0, // tri2 - 3, 2, 4 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wls_1_v[399], 7, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 3 // tri2 + ), + gsSPNTriangles_5b(5, 0, 6, // tri0 + 2, 1, 4, // tri1 + 2, 6, 0, // tri2 + 3, 2, 4 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot3_wls_model[] = { -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&wls_1_v[322], 3, 0), -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&wls_1_v[325], 18, 3), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 3, 4, // tri0 - 1, 5, 6, // tri1 - 1, 2, 7 // tri2 -), -gsSPNTriangles_5b( - 2, 0, 8, // tri0 - 0, 1, 9, // tri1 - 0, 10, 11, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 5, // tri count - 12, 13, 14, // tri0 - 14, 15, 16, // tri1 - 16, 12, 14 // tri2 -), -gsSPNTriangles_5b( - 17, 18, 19, // tri0 - 17, 19, 20, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wls_1_v[322], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wls_1_v[325], 18, 3), + gsSPNTrianglesInit_5b(6, // tri count + 0, 3, 4, // tri0 + 1, 5, 6, // tri1 + 1, 2, 7 // tri2 + ), + gsSPNTriangles_5b(2, 0, 8, // tri0 + 0, 1, 9, // tri1 + 0, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(5, // tri count + 12, 13, 14, // tri0 + 14, 15, 16, // tri1 + 16, 12, 14 // tri2 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 17, 19, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_wls_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&wls_1_v[343], 4, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&wls_1_v[347], 10, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 2, 4, 5, // tri0 - 3, 2, 6, // tri1 - 0, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 1, 9, // tri0 - 3, 10, 11, // tri1 - 0, 3, 12, // tri2 - 1, 0, 13 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wls_1_v[343], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wls_1_v[347], 10, 4), + gsSPNTrianglesInit_5b(7, // tri count + 2, 4, 5, // tri0 + 3, 2, 6, // tri1 + 0, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 1, 9, // tri0 + 3, 10, 11, // tri1 + 0, 3, 12, // tri2 + 1, 0, 13 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_wls_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0000C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&wls_1_v[357], 7, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 5, 6, 3 // tri2 -), -gsSPNTriangles_5b( - 6, 2, 3, // tri0 - 4, 1, 0, // tri1 - 2, 6, 0, // tri2 - 4, 0, 5 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wls_1_v[357], 7, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 3 // tri2 + ), + gsSPNTriangles_5b(6, 2, 3, // tri0 + 4, 1, 0, // tri1 + 2, 6, 0, // tri2 + 4, 0, 5 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx base_wls_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B0002C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&wls_1_v[406], 15, 0), -gsSPNTrianglesInit_5b( - 21, // tri count - 0, 1, 2, // tri0 - 1, 0, 3, // tri1 - 1, 3, 4 // tri2 -), -gsSPNTriangles_5b( - 5, 0, 2, // tri0 - 6, 3, 0, // tri1 - 6, 0, 5, // tri2 - 5, 2, 7 // tri3 -), -gsSPNTriangles_5b( - 1, 8, 9, // tri0 - 10, 11, 12, // tri1 - 10, 6, 13, // tri2 - 9, 7, 2 // tri3 -), -gsSPNTriangles_5b( - 8, 1, 4, // tri0 - 9, 2, 1, // tri1 - 7, 14, 5, // tri2 - 6, 5, 14 // tri3 -), -gsSPNTriangles_5b( - 10, 4, 3, // tri0 - 10, 3, 6, // tri1 - 12, 4, 10, // tri2 - 13, 11, 10 // tri3 -), -gsSPNTriangles_5b( - 4, 12, 8, // tri0 - 14, 13, 6, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wls_1_v[406], 15, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 1, 0, 3, // tri1 + 1, 3, 4 // tri2 + ), + gsSPNTriangles_5b(5, 0, 2, // tri0 + 6, 3, 0, // tri1 + 6, 0, 5, // tri2 + 5, 2, 7 // tri3 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 10, 11, 12, // tri1 + 10, 6, 13, // tri2 + 9, 7, 2 // tri3 + ), + gsSPNTriangles_5b(8, 1, 4, // tri0 + 9, 2, 1, // tri1 + 7, 14, 5, // tri2 + 6, 5, 14 // tri3 + ), + gsSPNTriangles_5b(10, 4, 3, // tri0 + 10, 3, 6, // tri1 + 12, 4, 10, // tri2 + 13, 11, 10 // tri3 + ), + gsSPNTriangles_5b(4, 12, 8, // tri0 + 14, 13, 6, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_wls_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -859,4 +758,4 @@ static cKF_Joint_R_c cKF_je_r_wls_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_wls_1 = { 26, 14, cKF_je_r_wls_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_wls_1 = { 26, 14, cKF_je_r_wls_1_tbl }; diff --git a/src/data/npc/model/mdl/wol_1.c b/src/data/npc/model/mdl/wol_1.c index 155a9297..e2e76613 100644 --- a/src/data/npc/model/mdl/wol_1.c +++ b/src/data/npc/model/mdl/wol_1.c @@ -6,654 +6,580 @@ static Vtx wol_1_v[] = { }; static Gfx head_wol_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000080, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&wol_1_v[24], 32, 0), -gsSPNTrianglesInit_5b( - 31, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 9, 1, 10, // tri0 - 11, 12, 8, // tri1 - 13, 14, 15, // tri2 - 8, 13, 16 // tri3 -), -gsSPNTriangles_5b( - 8, 16, 6, // tri0 - 8, 12, 17, // tri1 - 5, 18, 7, // tri2 - 7, 3, 5 // tri3 -), -gsSPNTriangles_5b( - 15, 19, 20, // tri0 - 15, 20, 13, // tri1 - 21, 22, 23, // tri2 - 24, 2, 25 // tri3 -), -gsSPNTriangles_5b( - 22, 21, 10, // tri0 - 22, 10, 26, // tri1 - 26, 0, 27, // tri2 - 1, 0, 10 // tri3 -), -gsSPNTriangles_5b( - 27, 0, 24, // tri0 - 23, 9, 21, // tri1 - 25, 27, 24, // tri2 - 11, 8, 7 // tri3 -), -gsSPNTriangles_5b( - 13, 8, 17, // tri0 - 7, 18, 11, // tri1 - 17, 14, 13, // tri2 - 26, 28, 22 // tri3 -), -gsSPNTriangles_5b( - 27, 28, 26, // tri0 - 11, 18, 29, // tri1 - 5, 4, 30, // tri2 - 17, 31, 14 // tri3 -), -gsSPVertex(&wol_1_v[56], 25, 0), -gsSPNTrianglesInit_5b( - 4, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 4 // tri2 -), -gsSPNTriangles_5b( - 8, 9, 7, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 15, // tri count - 10, 11, 12, // tri0 - 13, 10, 14, // tri1 - 15, 16, 17 // tri2 -), -gsSPNTriangles_5b( - 12, 14, 10, // tri0 - 18, 19, 16, // tri1 - 14, 20, 13, // tri2 - 10, 13, 21 // tri3 -), -gsSPNTriangles_5b( - 21, 17, 16, // tri0 - 16, 10, 21, // tri1 - 17, 22, 15, // tri2 - 16, 19, 11 // tri3 -), -gsSPNTriangles_5b( - 16, 11, 10, // tri0 - 16, 15, 18, // tri1 - 23, 22, 17, // tri2 - 24, 13, 20 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&wol_1_v[81], 29, 0), -gsSPNTrianglesInit_5b( - 11, // tri count - 0, 1, 2, // tri0 - 3, 4, 1, // tri1 - 1, 5, 2 // tri2 -), -gsSPNTriangles_5b( - 6, 7, 8, // tri0 - 8, 4, 3, // tri1 - 5, 1, 4, // tri2 - 4, 7, 5 // tri3 -), -gsSPNTriangles_5b( - 4, 8, 7, // tri0 - 9, 8, 3, // tri1 - 6, 8, 9, // tri2 - 10, 1, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 2, // tri count - 11, 12, 13, // tri0 - 11, 14, 12, // tri1 - 0, 0, 0 // tri2 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 8, // tri count - 15, 16, 17, // tri0 - 18, 19, 20, // tri1 - 16, 21, 22 // tri2 -), -gsSPNTriangles_5b( - 23, 24, 20, // tri0 - 25, 24, 26, // tri1 - 17, 27, 15, // tri2 - 28, 27, 22 // tri3 -), -gsSPNTriangles_5b( - 26, 18, 25, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wol_1_v[24], 32, 0), + gsSPNTrianglesInit_5b(31, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 1, 10, // tri0 + 11, 12, 8, // tri1 + 13, 14, 15, // tri2 + 8, 13, 16 // tri3 + ), + gsSPNTriangles_5b(8, 16, 6, // tri0 + 8, 12, 17, // tri1 + 5, 18, 7, // tri2 + 7, 3, 5 // tri3 + ), + gsSPNTriangles_5b(15, 19, 20, // tri0 + 15, 20, 13, // tri1 + 21, 22, 23, // tri2 + 24, 2, 25 // tri3 + ), + gsSPNTriangles_5b(22, 21, 10, // tri0 + 22, 10, 26, // tri1 + 26, 0, 27, // tri2 + 1, 0, 10 // tri3 + ), + gsSPNTriangles_5b(27, 0, 24, // tri0 + 23, 9, 21, // tri1 + 25, 27, 24, // tri2 + 11, 8, 7 // tri3 + ), + gsSPNTriangles_5b(13, 8, 17, // tri0 + 7, 18, 11, // tri1 + 17, 14, 13, // tri2 + 26, 28, 22 // tri3 + ), + gsSPNTriangles_5b(27, 28, 26, // tri0 + 11, 18, 29, // tri1 + 5, 4, 30, // tri2 + 17, 31, 14 // tri3 + ), + gsSPVertex(&wol_1_v[56], 25, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 4 // tri2 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(15, // tri count + 10, 11, 12, // tri0 + 13, 10, 14, // tri1 + 15, 16, 17 // tri2 + ), + gsSPNTriangles_5b(12, 14, 10, // tri0 + 18, 19, 16, // tri1 + 14, 20, 13, // tri2 + 10, 13, 21 // tri3 + ), + gsSPNTriangles_5b(21, 17, 16, // tri0 + 16, 10, 21, // tri1 + 17, 22, 15, // tri2 + 16, 19, 11 // tri3 + ), + gsSPNTriangles_5b(16, 11, 10, // tri0 + 16, 15, 18, // tri1 + 23, 22, 17, // tri2 + 24, 13, 20 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&wol_1_v[81], 29, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 1, 5, 2 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 8, 4, 3, // tri1 + 5, 1, 4, // tri2 + 4, 7, 5 // tri3 + ), + gsSPNTriangles_5b(4, 8, 7, // tri0 + 9, 8, 3, // tri1 + 6, 8, 9, // tri2 + 10, 1, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 11, 12, 13, // tri0 + 11, 14, 12, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(8, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 16, 21, 22 // tri2 + ), + gsSPNTriangles_5b(23, 24, 20, // tri0 + 25, 24, 26, // tri1 + 17, 27, 15, // tri2 + 28, 27, 22 // tri3 + ), + gsSPNTriangles_5b(26, 18, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx mouth_wol_model[] = { -gsSPMatrix(0x0D000340, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&wol_1_v[0], 10, 0), -gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&wol_1_v[10], 14, 10), -gsSPNTrianglesInit_5b( - 10, // tri count - 4, 0, 10, // tri0 - 6, 2, 3, // tri1 - 2, 6, 11 // tri2 -), -gsSPNTriangles_5b( - 8, 4, 12, // tri0 - 5, 4, 8, // tri1 - 2, 13, 14, // tri2 - 4, 15, 16 // tri3 -), -gsSPNTriangles_5b( - 1, 2, 17, // tri0 - 9, 18, 19, // tri1 - 9, 20, 7, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 21, 22, 23, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wol_1_v[0], 10, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wol_1_v[10], 14, 10), + gsSPNTrianglesInit_5b(10, // tri count + 4, 0, 10, // tri0 + 6, 2, 3, // tri1 + 2, 6, 11 // tri2 + ), + gsSPNTriangles_5b(8, 4, 12, // tri0 + 5, 4, 8, // tri1 + 2, 13, 14, // tri2 + 4, 15, 16 // tri3 + ), + gsSPNTriangles_5b(1, 2, 17, // tri0 + 9, 18, 19, // tri1 + 9, 20, 7, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 21, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_wol_model[] = { -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&wol_1_v[146], 5, 0), -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&wol_1_v[151], 16, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 5, 6, // tri0 - 4, 7, 8, // tri1 - 4, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 0, 1, 11, // tri0 - 2, 4, 12, // tri1 - 0, 13, 14, // tri2 - 3, 0, 15 // tri3 -), -gsSPNTriangles_5b( - 4, 3, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 20, 19, 18, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wol_1_v[146], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wol_1_v[151], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(0, 1, 11, // tri0 + 2, 4, 12, // tri1 + 0, 13, 14, // tri2 + 3, 0, 15 // tri3 + ), + gsSPNTriangles_5b(4, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 19, 18, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_wol_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&wol_1_v[167], 4, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&wol_1_v[171], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 0, 6, 7, // tri1 - 2, 0, 8 // tri2 -), -gsSPNTriangles_5b( - 3, 2, 9, // tri0 - 2, 11, 10, // tri1 - 3, 13, 12, // tri2 - 1, 3, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wol_1_v[167], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wol_1_v[171], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 2, 0, 8 // tri2 + ), + gsSPNTriangles_5b(3, 2, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 1, 3, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_wol_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&wol_1_v[110], 5, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&wol_1_v[115], 16, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 5, 6, // tri0 - 4, 7, 8, // tri1 - 4, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 11, // tri0 - 4, 2, 12, // tri1 - 0, 13, 14, // tri2 - 0, 3, 15 // tri3 -), -gsSPNTriangles_5b( - 3, 4, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 18, 17, 20, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wol_1_v[110], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wol_1_v[115], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 + ), + gsSPNTriangles_5b(3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_wol_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&wol_1_v[131], 4, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&wol_1_v[135], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 0, 6, 7, // tri1 - 0, 2, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 3, 9, // tri0 - 2, 11, 10, // tri1 - 3, 13, 12, // tri2 - 3, 1, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wol_1_v[131], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wol_1_v[135], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 + ), + gsSPNTriangles_5b(2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_wol_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&wol_1_v[182], 7, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&wol_1_v[189], 20, 7), -gsSPNTrianglesInit_5b( - 13, // tri count - 0, 2, 7, // tri0 - 6, 8, 9, // tri1 - 0, 10, 11 // tri2 -), -gsSPNTriangles_5b( - 1, 12, 5, // tri0 - 1, 13, 14, // tri1 - 2, 16, 15, // tri2 - 5, 17, 18 // tri3 -), -gsSPNTriangles_5b( - 5, 19, 20, // tri0 - 2, 21, 22, // tri1 - 6, 0, 23, // tri2 - 1, 6, 24 // tri3 -), -gsSPNTriangles_5b( - 3, 5, 25, // tri0 - 4, 26, 2, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&wol_1_v[209], 10, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 0, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 5, 4, 8, // tri0 - 2, 6, 0, // tri1 - 1, 9, 2, // tri2 - 7, 4, 3 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wol_1_v[182], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wol_1_v[189], 20, 7), + gsSPNTrianglesInit_5b(13, // tri count + 0, 2, 7, // tri0 + 6, 8, 9, // tri1 + 0, 10, 11 // tri2 + ), + gsSPNTriangles_5b(1, 12, 5, // tri0 + 1, 13, 14, // tri1 + 2, 16, 15, // tri2 + 5, 17, 18 // tri3 + ), + gsSPNTriangles_5b(5, 19, 20, // tri0 + 2, 21, 22, // tri1 + 6, 0, 23, // tri2 + 1, 6, 24 // tri3 + ), + gsSPNTriangles_5b(3, 5, 25, // tri0 + 4, 26, 2, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&wol_1_v[209], 10, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 7 // tri2 + ), + gsSPNTriangles_5b(5, 4, 8, // tri0 + 2, 6, 0, // tri1 + 1, 9, 2, // tri2 + 7, 4, 3 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail1_wol_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&wol_1_v[255], 9, 0), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 0, 4, 5 // tri2 -), -gsSPNTriangles_5b( - 2, 6, 3, // tri0 - 7, 3, 6, // tri1 - 8, 5, 4, // tri2 - 3, 4, 0 // tri3 -), -gsSPNTriangles_5b( - 5, 1, 0, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wol_1_v[255], 9, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b(2, 6, 3, // tri0 + 7, 3, 6, // tri1 + 8, 5, 4, // tri2 + 3, 4, 0 // tri3 + ), + gsSPNTriangles_5b(5, 1, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail2_wol_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&wol_1_v[219], 5, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&wol_1_v[224], 12, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 3, 5, // tri0 - 4, 6, 7, // tri1 - 2, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 0, 10, 11, // tri0 - 3, 12, 13, // tri1 - 3, 4, 14, // tri2 - 4, 1, 15 // tri3 -), -gsSPNTriangles_5b( - 0, 2, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&wol_1_v[236], 19, 0), -gsSPNTrianglesInit_5b( - 20, // tri count - 0, 1, 2, // tri0 - 3, 2, 1, // tri1 - 4, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 5, 7, 6, // tri0 - 8, 9, 10, // tri1 - 11, 10, 9, // tri2 - 12, 13, 14 // tri3 -), -gsSPNTriangles_5b( - 13, 15, 14, // tri0 - 10, 7, 5, // tri1 - 2, 15, 13, // tri2 - 10, 5, 4 // tri3 -), -gsSPNTriangles_5b( - 4, 8, 10, // tri0 - 6, 1, 0, // tri1 - 0, 4, 6, // tri2 - 2, 13, 12 // tri3 -), -gsSPNTriangles_5b( - 2, 12, 0, // tri0 - 14, 16, 17, // tri1 - 14, 17, 12, // tri2 - 16, 14, 18 // tri3 -), -gsSPNTriangles_5b( - 1, 6, 3, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wol_1_v[219], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wol_1_v[224], 12, 5), + gsSPNTrianglesInit_5b(8, // tri count + 2, 3, 5, // tri0 + 4, 6, 7, // tri1 + 2, 8, 9 // tri2 + ), + gsSPNTriangles_5b(0, 10, 11, // tri0 + 3, 12, 13, // tri1 + 3, 4, 14, // tri2 + 4, 1, 15 // tri3 + ), + gsSPNTriangles_5b(0, 2, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&wol_1_v[236], 19, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 11, 10, 9, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(13, 15, 14, // tri0 + 10, 7, 5, // tri1 + 2, 15, 13, // tri2 + 10, 5, 4 // tri3 + ), + gsSPNTriangles_5b(4, 8, 10, // tri0 + 6, 1, 0, // tri1 + 0, 4, 6, // tri2 + 2, 13, 12 // tri3 + ), + gsSPNTriangles_5b(2, 12, 0, // tri0 + 14, 16, 17, // tri1 + 14, 17, 12, // tri2 + 16, 14, 18 // tri3 + ), + gsSPNTriangles_5b(1, 6, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_wol_model[] = { -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&wol_1_v[304], 5, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&wol_1_v[309], 16, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 2, 3, 5, // tri0 - 0, 2, 6, // tri1 - 3, 8, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 10, 9, // tri0 - 4, 1, 11, // tri1 - 2, 12, 13, // tri2 - 3, 4, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 15, 16, 17, // tri0 - 17, 18, 19, // tri1 - 15, 20, 16 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wol_1_v[304], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wol_1_v[309], 16, 5), + gsSPNTrianglesInit_5b(7, // tri count + 2, 3, 5, // tri0 + 0, 2, 6, // tri1 + 3, 8, 7 // tri2 + ), + gsSPNTriangles_5b(1, 10, 9, // tri0 + 4, 1, 11, // tri1 + 2, 12, 13, // tri2 + 3, 4, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 17, 18, 19, // tri1 + 15, 20, 16 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_wol_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&wol_1_v[325], 6, 0), -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&wol_1_v[331], 13, 6), -gsSPNTrianglesInit_5b( - 9, // tri count - 0, 6, 7, // tri0 - 2, 5, 8, // tri1 - 5, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 5, 1, 11, // tri0 - 0, 3, 12, // tri1 - 4, 2, 13, // tri2 - 3, 4, 14 // tri3 -), -gsSPNTriangles_5b( - 3, 15, 16, // tri0 - 2, 17, 18, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wol_1_v[325], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wol_1_v[331], 13, 6), + gsSPNTrianglesInit_5b(9, // tri count + 0, 6, 7, // tri0 + 2, 5, 8, // tri1 + 5, 9, 10 // tri2 + ), + gsSPNTriangles_5b(5, 1, 11, // tri0 + 0, 3, 12, // tri1 + 4, 2, 13, // tri2 + 3, 4, 14 // tri3 + ), + gsSPNTriangles_5b(3, 15, 16, // tri0 + 2, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_wol_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&wol_1_v[264], 5, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&wol_1_v[269], 16, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 2, 5, // tri0 - 2, 0, 6, // tri1 - 3, 8, 7 // tri2 -), -gsSPNTriangles_5b( - 1, 10, 9, // tri0 - 1, 4, 11, // tri1 - 2, 12, 13, // tri2 - 4, 3, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 15, 16, 17, // tri0 - 18, 19, 15, // tri1 - 16, 20, 17 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wol_1_v[264], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wol_1_v[269], 16, 5), + gsSPNTrianglesInit_5b(7, // tri count + 3, 2, 5, // tri0 + 2, 0, 6, // tri1 + 3, 8, 7 // tri2 + ), + gsSPNTriangles_5b(1, 10, 9, // tri0 + 1, 4, 11, // tri1 + 2, 12, 13, // tri2 + 4, 3, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 15, // tri1 + 16, 20, 17 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_wol_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&wol_1_v[285], 6, 0), -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&wol_1_v[291], 13, 6), -gsSPNTrianglesInit_5b( - 9, // tri count - 4, 6, 7, // tri0 - 3, 1, 8, // tri1 - 3, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 5, 3, 11, // tri0 - 2, 4, 12, // tri1 - 1, 0, 13, // tri2 - 0, 2, 14 // tri3 -), -gsSPNTriangles_5b( - 2, 15, 16, // tri0 - 1, 17, 18, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wol_1_v[285], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wol_1_v[291], 13, 6), + gsSPNTrianglesInit_5b(9, // tri count + 4, 6, 7, // tri0 + 3, 1, 8, // tri1 + 3, 9, 10 // tri2 + ), + gsSPNTriangles_5b(5, 3, 11, // tri0 + 2, 4, 12, // tri1 + 1, 0, 13, // tri2 + 0, 2, 14 // tri3 + ), + gsSPNTriangles_5b(2, 15, 16, // tri0 + 1, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx base_wol_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&wol_1_v[344], 30, 0), -gsSPNTrianglesInit_5b( - 3, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 2, 1, 6 // tri2 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), -gsDPLoadTextureBlock_4b_Dolphin(0x0A000000, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), -gsSPNTrianglesInit_5b( - 14, // tri count - 7, 8, 9, // tri0 - 10, 11, 12, // tri1 - 13, 14, 15 // tri2 -), -gsSPNTriangles_5b( - 16, 17, 18, // tri0 - 9, 19, 7, // tri1 - 20, 11, 21, // tri2 - 20, 21, 17 // tri3 -), -gsSPNTriangles_5b( - 12, 15, 14, // tri0 - 11, 20, 12, // tri1 - 8, 7, 13, // tri2 - 13, 15, 8 // tri3 -), -gsSPNTriangles_5b( - 21, 18, 17, // tri0 - 14, 10, 12, // tri1 - 18, 22, 16, // tri2 - 0, 0, 0 // tri3 -), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 3, // tri count - 23, 24, 25, // tri0 - 26, 27, 28, // tri1 - 29, 24, 23 // tri2 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wol_1_v[344], 30, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 1, 6 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPNTrianglesInit_5b(14, // tri count + 7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 13, 14, 15 // tri2 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 9, 19, 7, // tri1 + 20, 11, 21, // tri2 + 20, 21, 17 // tri3 + ), + gsSPNTriangles_5b(12, 15, 14, // tri0 + 11, 20, 12, // tri1 + 8, 7, 13, // tri2 + 13, 15, 8 // tri3 + ), + gsSPNTriangles_5b(21, 18, 17, // tri0 + 14, 10, 12, // tri1 + 18, 22, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 23, 24, 25, // tri0 + 26, 27, 28, // tri1 + 29, 24, 23 // tri2 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_wol_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -685,4 +611,4 @@ static cKF_Joint_R_c cKF_je_r_wol_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_wol_1 = { 26, 14, cKF_je_r_wol_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_wol_1 = { 26, 14, cKF_je_r_wol_1_tbl }; diff --git a/src/data/npc/model/mdl/xct_1.c b/src/data/npc/model/mdl/xct_1.c index d5cf3d12..961c2668 100644 --- a/src/data/npc/model/mdl/xct_1.c +++ b/src/data/npc/model/mdl/xct_1.c @@ -6,602 +6,534 @@ static Vtx xct_1_v[] = { }; static Gfx head_xct_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&xct_1_v[0], 6, 0), -gsSPMatrix(0x0D000300, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 32, 24, 15, GX_MIRROR, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 252, 92), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&xct_1_v[6], 13, 6), -gsSPNTrianglesInit_5b( - 9, // tri count - 1, 0, 6, // tri0 - 1, 7, 8, // tri1 - 3, 1, 9 // tri2 -), -gsSPNTriangles_5b( - 4, 11, 10, // tri0 - 5, 4, 12, // tri1 - 5, 13, 0, // tri2 - 0, 15, 14 // tri3 -), -gsSPNTriangles_5b( - 5, 16, 17, // tri0 - 4, 2, 18, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 124), -gsSPVertex(&xct_1_v[19], 22, 0), -gsSPNTrianglesInit_5b( - 29, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 2, 1, 4 // tri2 -), -gsSPNTriangles_5b( - 5, 6, 7, // tri0 - 2, 4, 8, // tri1 - 3, 2, 9, // tri2 - 9, 8, 10 // tri3 -), -gsSPNTriangles_5b( - 2, 8, 9, // tri0 - 4, 1, 11, // tri1 - 4, 11, 12, // tri2 - 13, 8, 4 // tri3 -), -gsSPNTriangles_5b( - 4, 12, 13, // tri0 - 5, 10, 14, // tri1 - 8, 14, 10, // tri2 - 10, 7, 9 // tri3 -), -gsSPNTriangles_5b( - 7, 10, 5, // tri0 - 9, 15, 16, // tri1 - 7, 6, 15, // tri2 - 16, 3, 9 // tri3 -), -gsSPNTriangles_5b( - 17, 0, 18, // tri0 - 19, 3, 16, // tri1 - 18, 3, 19, // tri2 - 18, 0, 3 // tri3 -), -gsSPNTriangles_5b( - 20, 0, 17, // tri0 - 1, 21, 11, // tri1 - 20, 1, 0, // tri2 - 20, 21, 1 // tri3 -), -gsSPNTriangles_5b( - 8, 13, 14, // tri0 - 7, 15, 9, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 252, 60), -gsSPVertex(&xct_1_v[41], 21, 0), -gsSPNTrianglesInit_5b( - 10, // tri count - 0, 1, 2, // tri0 - 3, 4, 2, // tri1 - 5, 2, 4 // tri2 -), -gsSPNTriangles_5b( - 2, 1, 3, // tri0 - 6, 7, 5, // tri1 - 0, 8, 1, // tri2 - 6, 5, 4 // tri3 -), -gsSPNTriangles_5b( - 6, 9, 7, // tri0 - 8, 10, 11, // tri1 - 8, 0, 10, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000100, G_IM_FMT_CI, 32, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 252, 60), -gsSPNTrianglesInit_5b( - 7, // tri count - 12, 13, 14, // tri0 - 15, 13, 12, // tri1 - 13, 16, 14 // tri2 -), -gsSPNTriangles_5b( - 16, 17, 18, // tri0 - 13, 17, 16, // tri1 - 19, 18, 17, // tri2 - 17, 20, 19 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 252, 60), -gsSPVertex(&xct_1_v[62], 15, 0), -gsSPNTrianglesInit_5b( - 16, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 5, 4, 6 // tri2 -), -gsSPNTriangles_5b( - 4, 3, 2, // tri0 - 4, 2, 7, // tri1 - 8, 3, 5, // tri2 - 4, 9, 6 // tri3 -), -gsSPNTriangles_5b( - 4, 7, 9, // tri0 - 6, 10, 5, // tri1 - 7, 2, 1, // tri2 - 10, 11, 5 // tri3 -), -gsSPNTriangles_5b( - 10, 12, 11, // tri0 - 0, 13, 1, // tri1 - 5, 11, 8, // tri2 - 14, 0, 2 // tri3 -), -gsSPNTriangles_5b( - 2, 3, 14, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&xct_1_v[0], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 32, 24, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 92), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&xct_1_v[6], 13, 6), + gsSPNTrianglesInit_5b(9, // tri count + 1, 0, 6, // tri0 + 1, 7, 8, // tri1 + 3, 1, 9 // tri2 + ), + gsSPNTriangles_5b(4, 11, 10, // tri0 + 5, 4, 12, // tri1 + 5, 13, 0, // tri2 + 0, 15, 14 // tri3 + ), + gsSPNTriangles_5b(5, 16, 17, // tri0 + 4, 2, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 124), + gsSPVertex(&xct_1_v[19], 22, 0), + gsSPNTrianglesInit_5b(29, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 2, 1, 4 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 2, 4, 8, // tri1 + 3, 2, 9, // tri2 + 9, 8, 10 // tri3 + ), + gsSPNTriangles_5b(2, 8, 9, // tri0 + 4, 1, 11, // tri1 + 4, 11, 12, // tri2 + 13, 8, 4 // tri3 + ), + gsSPNTriangles_5b(4, 12, 13, // tri0 + 5, 10, 14, // tri1 + 8, 14, 10, // tri2 + 10, 7, 9 // tri3 + ), + gsSPNTriangles_5b(7, 10, 5, // tri0 + 9, 15, 16, // tri1 + 7, 6, 15, // tri2 + 16, 3, 9 // tri3 + ), + gsSPNTriangles_5b(17, 0, 18, // tri0 + 19, 3, 16, // tri1 + 18, 3, 19, // tri2 + 18, 0, 3 // tri3 + ), + gsSPNTriangles_5b(20, 0, 17, // tri0 + 1, 21, 11, // tri1 + 20, 1, 0, // tri2 + 20, 21, 1 // tri3 + ), + gsSPNTriangles_5b(8, 13, 14, // tri0 + 7, 15, 9, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 60), + gsSPVertex(&xct_1_v[41], 21, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 5, 2, 4 // tri2 + ), + gsSPNTriangles_5b(2, 1, 3, // tri0 + 6, 7, 5, // tri1 + 0, 8, 1, // tri2 + 6, 5, 4 // tri3 + ), + gsSPNTriangles_5b(6, 9, 7, // tri0 + 8, 10, 11, // tri1 + 8, 0, 10, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 32, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 60), + gsSPNTrianglesInit_5b(7, // tri count + 12, 13, 14, // tri0 + 15, 13, 12, // tri1 + 13, 16, 14 // tri2 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 13, 17, 16, // tri1 + 19, 18, 17, // tri2 + 17, 20, 19 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 60), + gsSPVertex(&xct_1_v[62], 15, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 4, 6 // tri2 + ), + gsSPNTriangles_5b(4, 3, 2, // tri0 + 4, 2, 7, // tri1 + 8, 3, 5, // tri2 + 4, 9, 6 // tri3 + ), + gsSPNTriangles_5b(4, 7, 9, // tri0 + 6, 10, 5, // tri1 + 7, 2, 1, // tri2 + 10, 11, 5 // tri3 + ), + gsSPNTriangles_5b(10, 12, 11, // tri0 + 0, 13, 1, // tri1 + 5, 11, 8, // tri2 + 14, 0, 2 // tri3 + ), + gsSPNTriangles_5b(2, 3, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_xct_model[] = { -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&xct_1_v[113], 6, 0), -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&xct_1_v[119], 13, 6), -gsSPNTrianglesInit_5b( - 9, // tri count - 3, 6, 4, // tri0 - 1, 5, 7, // tri1 - 2, 1, 8 // tri2 -), -gsSPNTriangles_5b( - 1, 10, 9, // tri0 - 2, 0, 1, // tri1 - 2, 11, 12, // tri2 - 3, 13, 14 // tri3 -), -gsSPNTriangles_5b( - 2, 3, 0, // tri0 - 3, 2, 15, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 1, // tri count - 16, 17, 18, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&xct_1_v[113], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&xct_1_v[119], 13, 6), + gsSPNTrianglesInit_5b(9, // tri count + 3, 6, 4, // tri0 + 1, 5, 7, // tri1 + 2, 1, 8 // tri2 + ), + gsSPNTriangles_5b(1, 10, 9, // tri0 + 2, 0, 1, // tri1 + 2, 11, 12, // tri2 + 3, 13, 14 // tri3 + ), + gsSPNTriangles_5b(2, 3, 0, // tri0 + 3, 2, 15, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 16, 17, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_xct_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&xct_1_v[132], 4, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&xct_1_v[136], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 2, 4, // tri0 - 0, 5, 6, // tri1 - 1, 8, 7 // tri2 -), -gsSPNTriangles_5b( - 2, 9, 10, // tri0 - 3, 1, 11, // tri1 - 1, 0, 12, // tri2 - 1, 13, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&xct_1_v[132], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&xct_1_v[136], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 2, 4, // tri0 + 0, 5, 6, // tri1 + 1, 8, 7 // tri2 + ), + gsSPNTriangles_5b(2, 9, 10, // tri0 + 3, 1, 11, // tri1 + 1, 0, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_xct_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&xct_1_v[77], 5, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&xct_1_v[82], 16, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 5, 6, // tri0 - 4, 7, 8, // tri1 - 4, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 11, // tri0 - 4, 2, 12, // tri1 - 0, 13, 14, // tri2 - 0, 3, 15 // tri3 -), -gsSPNTriangles_5b( - 3, 4, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 18, 17, 20, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&xct_1_v[77], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&xct_1_v[82], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 + ), + gsSPNTriangles_5b(3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_xct_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&xct_1_v[98], 4, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&xct_1_v[102], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 4, 5, // tri0 - 2, 6, 7, // tri1 - 2, 1, 8 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 9, // tri0 - 1, 11, 10, // tri1 - 0, 13, 12, // tri2 - 0, 3, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&xct_1_v[98], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&xct_1_v[102], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 4, 5, // tri0 + 2, 6, 7, // tri1 + 2, 1, 8 // tri2 + ), + gsSPNTriangles_5b(1, 0, 9, // tri0 + 1, 11, 10, // tri1 + 0, 13, 12, // tri2 + 0, 3, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_xct_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&xct_1_v[147], 9, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000200, G_IM_FMT_CI, 32, 24, 15, GX_MIRROR, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 252, 92), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&xct_1_v[156], 22, 9), -gsSPNTrianglesInit_5b( - 14, // tri count - 2, 10, 9, // tri0 - 5, 11, 12, // tri1 - 6, 13, 14 // tri2 -), -gsSPNTriangles_5b( - 2, 15, 16, // tri0 - 8, 17, 18, // tri1 - 2, 19, 20, // tri2 - 7, 21, 22 // tri3 -), -gsSPNTriangles_5b( - 3, 8, 23, // tri0 - 7, 0, 24, // tri1 - 5, 3, 25, // tri2 - 8, 4, 26 // tri3 -), -gsSPNTriangles_5b( - 1, 7, 27, // tri0 - 2, 28, 4, // tri1 - 8, 29, 30, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&xct_1_v[178], 18, 9), -gsSPNTrianglesInit_5b( - 3, // tri count - 1, 9, 2, // tri0 - 7, 10, 11, // tri1 - 0, 6, 12 // tri2 -), -gsSPNTrianglesInit_5b( - 6, // tri count - 13, 14, 15, // tri0 - 16, 17, 18, // tri1 - 18, 19, 20 // tri2 -), -gsSPNTriangles_5b( - 21, 15, 22, // tri0 - 23, 24, 16, // tri1 - 25, 14, 26, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&xct_1_v[147], 9, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 32, 24, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 92), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&xct_1_v[156], 22, 9), + gsSPNTrianglesInit_5b(14, // tri count + 2, 10, 9, // tri0 + 5, 11, 12, // tri1 + 6, 13, 14 // tri2 + ), + gsSPNTriangles_5b(2, 15, 16, // tri0 + 8, 17, 18, // tri1 + 2, 19, 20, // tri2 + 7, 21, 22 // tri3 + ), + gsSPNTriangles_5b(3, 8, 23, // tri0 + 7, 0, 24, // tri1 + 5, 3, 25, // tri2 + 8, 4, 26 // tri3 + ), + gsSPNTriangles_5b(1, 7, 27, // tri0 + 2, 28, 4, // tri1 + 8, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&xct_1_v[178], 18, 9), + gsSPNTrianglesInit_5b(3, // tri count + 1, 9, 2, // tri0 + 7, 10, 11, // tri1 + 0, 6, 12 // tri2 + ), + gsSPNTrianglesInit_5b(6, // tri count + 13, 14, 15, // tri0 + 16, 17, 18, // tri1 + 18, 19, 20 // tri2 + ), + gsSPNTriangles_5b(21, 15, 22, // tri0 + 23, 24, 16, // tri1 + 25, 14, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail1_xct_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&xct_1_v[220], 8, 0), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 1, 2, // tri0 - 3, 0, 4, // tri1 - 2, 1, 5 // tri2 -), -gsSPNTriangles_5b( - 4, 6, 3, // tri0 - 5, 7, 2, // tri1 - 2, 4, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&xct_1_v[220], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 2, 1, 5 // tri2 + ), + gsSPNTriangles_5b(4, 6, 3, // tri0 + 5, 7, 2, // tri1 + 2, 4, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail2_xct_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&xct_1_v[196], 4, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000400, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&xct_1_v[200], 20, 4), -gsSPNTrianglesInit_5b( - 6, // tri count - 0, 4, 5, // tri0 - 1, 6, 7, // tri1 - 3, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 3, 2, 10, // tri0 - 2, 1, 11, // tri1 - 0, 3, 12, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 9, // tri count - 13, 14, 15, // tri0 - 16, 14, 17, // tri1 - 18, 17, 19 // tri2 -), -gsSPNTriangles_5b( - 17, 14, 13, // tri0 - 13, 19, 17, // tri1 - 17, 18, 20, // tri2 - 21, 15, 14 // tri3 -), -gsSPNTriangles_5b( - 15, 22, 13, // tri0 - 19, 23, 18, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&xct_1_v[196], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&xct_1_v[200], 20, 4), + gsSPNTrianglesInit_5b(6, // tri count + 0, 4, 5, // tri0 + 1, 6, 7, // tri1 + 3, 8, 9 // tri2 + ), + gsSPNTriangles_5b(3, 2, 10, // tri0 + 2, 1, 11, // tri1 + 0, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(9, // tri count + 13, 14, 15, // tri0 + 16, 14, 17, // tri1 + 18, 17, 19 // tri2 + ), + gsSPNTriangles_5b(17, 14, 13, // tri0 + 13, 19, 17, // tri1 + 17, 18, 20, // tri2 + 21, 15, 14 // tri3 + ), + gsSPNTriangles_5b(15, 22, 13, // tri0 + 19, 23, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_xct_model[] = { -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&xct_1_v[262], 5, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&xct_1_v[267], 20, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 2, 6, 5, // tri0 - 0, 8, 7, // tri1 - 3, 2, 9 // tri2 -), -gsSPNTriangles_5b( - 0, 4, 10, // tri0 - 0, 11, 12, // tri1 - 1, 0, 13, // tri2 - 2, 1, 14 // tri3 -), -gsSPNTriangles_5b( - 2, 15, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 4, // tri count - 17, 18, 19, // tri0 - 20, 21, 22, // tri1 - 18, 23, 21 // tri2 -), -gsSPNTriangles_5b( - 21, 24, 18, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&xct_1_v[262], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&xct_1_v[267], 20, 5), + gsSPNTrianglesInit_5b(8, // tri count + 2, 6, 5, // tri0 + 0, 8, 7, // tri1 + 3, 2, 9 // tri2 + ), + gsSPNTriangles_5b(0, 4, 10, // tri0 + 0, 11, 12, // tri1 + 1, 0, 13, // tri2 + 2, 1, 14 // tri3 + ), + gsSPNTriangles_5b(2, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(4, // tri count + 17, 18, 19, // tri0 + 20, 21, 22, // tri1 + 18, 23, 21 // tri2 + ), + gsSPNTriangles_5b(21, 24, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_xct_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&xct_1_v[287], 9, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 3, 2, 4, // tri1 - 5, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 4, 6, 3, // tri0 - 4, 7, 6, // tri1 - 7, 8, 5, // tri2 - 2, 3, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&xct_1_v[287], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(4, 6, 3, // tri0 + 4, 7, 6, // tri1 + 7, 8, 5, // tri2 + 2, 3, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_xct_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&xct_1_v[228], 5, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&xct_1_v[233], 20, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 1, 0, 5, // tri0 - 2, 7, 6, // tri1 - 2, 1, 8 // tri2 -), -gsSPNTriangles_5b( - 3, 2, 9, // tri0 - 2, 10, 11, // tri1 - 0, 13, 12, // tri2 - 0, 4, 14 // tri3 -), -gsSPNTriangles_5b( - 0, 15, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 4, // tri count - 17, 18, 19, // tri0 - 20, 21, 18, // tri1 - 20, 22, 23 // tri2 -), -gsSPNTriangles_5b( - 18, 24, 20, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&xct_1_v[228], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&xct_1_v[233], 20, 5), + gsSPNTrianglesInit_5b(8, // tri count + 1, 0, 5, // tri0 + 2, 7, 6, // tri1 + 2, 1, 8 // tri2 + ), + gsSPNTriangles_5b(3, 2, 9, // tri0 + 2, 10, 11, // tri1 + 0, 13, 12, // tri2 + 0, 4, 14 // tri3 + ), + gsSPNTriangles_5b(0, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(4, // tri count + 17, 18, 19, // tri0 + 20, 21, 18, // tri1 + 20, 22, 23 // tri2 + ), + gsSPNTriangles_5b(18, 24, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_xct_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&xct_1_v[253], 9, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 3, 0, 2, // tri1 - 2, 4, 3 // tri2 -), -gsSPNTriangles_5b( - 5, 6, 1, // tri0 - 4, 7, 3, // tri1 - 1, 0, 5, // tri2 - 4, 8, 7 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&xct_1_v[253], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 2, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 1, // tri0 + 4, 7, 3, // tri1 + 1, 0, 5, // tri2 + 4, 8, 7 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx base_xct_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 124, 60), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&xct_1_v[296], 19, 0), -gsSPNTrianglesInit_5b( - 20, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 4, 3, 2 // tri2 -), -gsSPNTriangles_5b( - 5, 6, 7, // tri0 - 8, 9, 6, // tri1 - 10, 11, 12, // tri2 - 10, 13, 11 // tri3 -), -gsSPNTriangles_5b( - 4, 2, 6, // tri0 - 12, 11, 14, // tri1 - 9, 7, 6, // tri2 - 15, 12, 16 // tri3 -), -gsSPNTriangles_5b( - 16, 17, 15, // tri0 - 7, 9, 17, // tri1 - 1, 6, 2, // tri2 - 5, 16, 12 // tri3 -), -gsSPNTriangles_5b( - 18, 10, 12, // tri0 - 6, 1, 8, // tri1 - 17, 16, 7, // tri2 - 12, 15, 18 // tri3 -), -gsSPNTriangles_5b( - 7, 16, 5, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&xct_1_v[296], 19, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 3, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 9, 6, // tri1 + 10, 11, 12, // tri2 + 10, 13, 11 // tri3 + ), + gsSPNTriangles_5b(4, 2, 6, // tri0 + 12, 11, 14, // tri1 + 9, 7, 6, // tri2 + 15, 12, 16 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 7, 9, 17, // tri1 + 1, 6, 2, // tri2 + 5, 16, 12 // tri3 + ), + gsSPNTriangles_5b(18, 10, 12, // tri0 + 6, 1, 8, // tri1 + 17, 16, 7, // tri2 + 12, 15, 18 // tri3 + ), + gsSPNTriangles_5b(7, 16, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_xct_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -633,4 +565,4 @@ static cKF_Joint_R_c cKF_je_r_xct_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_xct_1 = { 26, 13, cKF_je_r_xct_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_xct_1 = { 26, 13, cKF_je_r_xct_1_tbl }; diff --git a/src/data/npc/model/mdl/xsq_1.c b/src/data/npc/model/mdl/xsq_1.c index 0f206f84..986f3de1 100644 --- a/src/data/npc/model/mdl/xsq_1.c +++ b/src/data/npc/model/mdl/xsq_1.c @@ -6,719 +6,633 @@ static Vtx xsq_1_v[] = { }; static Gfx head_xsq_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&xsq_1_v[0], 12, 0), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 1, 2, // tri0 - 3, 2, 4, // tri1 - 3, 4, 5 // tri2 -), -gsSPNTriangles_5b( - 6, 7, 8, // tri0 - 8, 9, 6, // tri1 - 10, 6, 9, // tri2 - 10, 9, 11 // tri3 -), -gsSPNTriangles_5b( - 2, 3, 0, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000040, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&xsq_1_v[12], 25, 0), -gsSPNTrianglesInit_5b( - 32, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 2, 1, 4 // tri2 -), -gsSPNTriangles_5b( - 5, 6, 7, // tri0 - 4, 1, 8, // tri1 - 4, 8, 9, // tri2 - 10, 4, 9 // tri3 -), -gsSPNTriangles_5b( - 11, 0, 12, // tri0 - 12, 3, 13, // tri1 - 12, 0, 3, // tri2 - 11, 8, 1 // tri3 -), -gsSPNTriangles_5b( - 1, 0, 11, // tri0 - 14, 2, 4, // tri1 - 15, 3, 2, // tri2 - 16, 15, 2 // tri3 -), -gsSPNTriangles_5b( - 10, 17, 18, // tri0 - 7, 13, 3, // tri1 - 14, 4, 10, // tri2 - 3, 15, 7 // tri3 -), -gsSPNTriangles_5b( - 19, 5, 15, // tri0 - 20, 21, 19, // tri1 - 18, 14, 10, // tri2 - 7, 15, 5 // tri3 -), -gsSPNTriangles_5b( - 14, 18, 22, // tri0 - 23, 16, 14, // tri1 - 2, 14, 16, // tri2 - 15, 16, 23 // tri3 -), -gsSPNTriangles_5b( - 22, 24, 20, // tri0 - 14, 22, 23, // tri1 - 23, 19, 15, // tri2 - 19, 23, 20 // tri3 -), -gsSPNTriangles_5b( - 20, 23, 22, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x08000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&xsq_1_v[37], 20, 0), -gsSPNTrianglesInit_5b( - 24, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 2, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 8, 9, 3, // tri0 - 10, 8, 3, // tri1 - 11, 0, 2, // tri2 - 12, 13, 11 // tri3 -), -gsSPNTriangles_5b( - 10, 13, 12, // tri0 - 7, 14, 15, // tri1 - 6, 14, 7, // tri2 - 10, 5, 16 // tri3 -), -gsSPNTriangles_5b( - 2, 7, 11, // tri0 - 17, 0, 11, // tri1 - 9, 8, 18, // tri2 - 3, 5, 10 // tri3 -), -gsSPNTriangles_5b( - 12, 8, 10, // tri0 - 16, 19, 13, // tri1 - 13, 10, 16, // tri2 - 11, 7, 12 // tri3 -), -gsSPNTriangles_5b( - 13, 17, 11, // tri0 - 8, 12, 15, // tri1 - 15, 12, 7, // tri2 - 15, 18, 8 // tri3 -), -gsSPNTriangles_5b( - 13, 19, 17, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&xsq_1_v[57], 14, 0), -gsSPNTrianglesInit_5b( - 16, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 3, 6, 4 // tri2 -), -gsSPNTriangles_5b( - 1, 7, 2, // tri0 - 2, 7, 8, // tri1 - 7, 1, 5, // tri2 - 7, 5, 9 // tri3 -), -gsSPNTriangles_5b( - 7, 10, 8, // tri0 - 7, 9, 10, // tri1 - 8, 11, 2, // tri2 - 9, 5, 4 // tri3 -), -gsSPNTriangles_5b( - 11, 12, 2, // tri0 - 11, 13, 12, // tri1 - 0, 3, 5, // tri2 - 5, 1, 0 // tri3 -), -gsSPNTriangles_5b( - 2, 12, 0, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPVertex(&xsq_1_v[71], 20, 0), -gsSPNTrianglesInit_5b( - 20, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 4, 0, 3 // tri2 -), -gsSPNTriangles_5b( - 4, 3, 5, // tri0 - 6, 7, 8, // tri1 - 0, 4, 9, // tri2 - 10, 8, 11 // tri3 -), -gsSPNTriangles_5b( - 4, 5, 12, // tri0 - 4, 12, 13, // tri1 - 14, 15, 16, // tri2 - 14, 16, 17 // tri3 -), -gsSPNTriangles_5b( - 10, 14, 17, // tri0 - 10, 17, 6, // tri1 - 9, 1, 0, // tri2 - 6, 8, 10 // tri3 -), -gsSPNTriangles_5b( - 18, 9, 4, // tri0 - 14, 11, 19, // tri1 - 11, 14, 10, // tri2 - 19, 15, 14 // tri3 -), -gsSPNTriangles_5b( - 4, 13, 18, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&xsq_1_v[0], 12, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 8, 9, 6, // tri1 + 10, 6, 9, // tri2 + 10, 9, 11 // tri3 + ), + gsSPNTriangles_5b(2, 3, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&xsq_1_v[12], 25, 0), + gsSPNTrianglesInit_5b(32, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 2, 1, 4 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 4, 1, 8, // tri1 + 4, 8, 9, // tri2 + 10, 4, 9 // tri3 + ), + gsSPNTriangles_5b(11, 0, 12, // tri0 + 12, 3, 13, // tri1 + 12, 0, 3, // tri2 + 11, 8, 1 // tri3 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 14, 2, 4, // tri1 + 15, 3, 2, // tri2 + 16, 15, 2 // tri3 + ), + gsSPNTriangles_5b(10, 17, 18, // tri0 + 7, 13, 3, // tri1 + 14, 4, 10, // tri2 + 3, 15, 7 // tri3 + ), + gsSPNTriangles_5b(19, 5, 15, // tri0 + 20, 21, 19, // tri1 + 18, 14, 10, // tri2 + 7, 15, 5 // tri3 + ), + gsSPNTriangles_5b(14, 18, 22, // tri0 + 23, 16, 14, // tri1 + 2, 14, 16, // tri2 + 15, 16, 23 // tri3 + ), + gsSPNTriangles_5b(22, 24, 20, // tri0 + 14, 22, 23, // tri1 + 23, 19, 15, // tri2 + 19, 23, 20 // tri3 + ), + gsSPNTriangles_5b(20, 23, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&xsq_1_v[37], 20, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 3, // tri0 + 10, 8, 3, // tri1 + 11, 0, 2, // tri2 + 12, 13, 11 // tri3 + ), + gsSPNTriangles_5b(10, 13, 12, // tri0 + 7, 14, 15, // tri1 + 6, 14, 7, // tri2 + 10, 5, 16 // tri3 + ), + gsSPNTriangles_5b(2, 7, 11, // tri0 + 17, 0, 11, // tri1 + 9, 8, 18, // tri2 + 3, 5, 10 // tri3 + ), + gsSPNTriangles_5b(12, 8, 10, // tri0 + 16, 19, 13, // tri1 + 13, 10, 16, // tri2 + 11, 7, 12 // tri3 + ), + gsSPNTriangles_5b(13, 17, 11, // tri0 + 8, 12, 15, // tri1 + 15, 12, 7, // tri2 + 15, 18, 8 // tri3 + ), + gsSPNTriangles_5b(13, 19, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&xsq_1_v[57], 14, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(1, 7, 2, // tri0 + 2, 7, 8, // tri1 + 7, 1, 5, // tri2 + 7, 5, 9 // tri3 + ), + gsSPNTriangles_5b(7, 10, 8, // tri0 + 7, 9, 10, // tri1 + 8, 11, 2, // tri2 + 9, 5, 4 // tri3 + ), + gsSPNTriangles_5b(11, 12, 2, // tri0 + 11, 13, 12, // tri1 + 0, 3, 5, // tri2 + 5, 1, 0 // tri3 + ), + gsSPNTriangles_5b(2, 12, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&xsq_1_v[71], 20, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b(4, 3, 5, // tri0 + 6, 7, 8, // tri1 + 0, 4, 9, // tri2 + 10, 8, 11 // tri3 + ), + gsSPNTriangles_5b(4, 5, 12, // tri0 + 4, 12, 13, // tri1 + 14, 15, 16, // tri2 + 14, 16, 17 // tri3 + ), + gsSPNTriangles_5b(10, 14, 17, // tri0 + 10, 17, 6, // tri1 + 9, 1, 0, // tri2 + 6, 8, 10 // tri3 + ), + gsSPNTriangles_5b(18, 9, 4, // tri0 + 14, 11, 19, // tri1 + 11, 14, 10, // tri2 + 19, 15, 14 // tri3 + ), + gsSPNTriangles_5b(4, 13, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rarm2_xsq_model[] = { -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&xsq_1_v[127], 5, 0), -gsSPMatrix(0x0D0002C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&xsq_1_v[132], 16, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 5, 6, // tri0 - 4, 7, 8, // tri1 - 4, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 0, 1, 11, // tri0 - 2, 4, 12, // tri1 - 0, 13, 14, // tri2 - 3, 0, 15 // tri3 -), -gsSPNTriangles_5b( - 4, 3, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 20, 19, 18, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&xsq_1_v[127], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&xsq_1_v[132], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(0, 1, 11, // tri0 + 2, 4, 12, // tri1 + 0, 13, 14, // tri2 + 3, 0, 15 // tri3 + ), + gsSPNTriangles_5b(4, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 19, 18, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rarm1_xsq_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&xsq_1_v[148], 4, 0), -gsSPMatrix(0x0D000280, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&xsq_1_v[152], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 0, 6, 7, // tri1 - 2, 0, 8 // tri2 -), -gsSPNTriangles_5b( - 3, 2, 9, // tri0 - 2, 11, 10, // tri1 - 3, 13, 12, // tri2 - 1, 3, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&xsq_1_v[148], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&xsq_1_v[152], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 2, 0, 8 // tri2 + ), + gsSPNTriangles_5b(3, 2, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 1, 3, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Larm2_xsq_model[] = { -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&xsq_1_v[91], 5, 0), -gsSPMatrix(0x0D000240, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&xsq_1_v[96], 16, 5), -gsSPNTrianglesInit_5b( - 8, // tri count - 0, 5, 6, // tri0 - 4, 7, 8, // tri1 - 4, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 1, 0, 11, // tri0 - 4, 2, 12, // tri1 - 0, 13, 14, // tri2 - 0, 3, 15 // tri3 -), -gsSPNTriangles_5b( - 3, 4, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPNTrianglesInit_5b( - 2, // tri count - 17, 18, 19, // tri0 - 18, 17, 20, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&xsq_1_v[91], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&xsq_1_v[96], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 + ), + gsSPNTriangles_5b(3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Larm1_xsq_model[] = { -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&xsq_1_v[112], 4, 0), -gsSPMatrix(0x0D000200, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&xsq_1_v[116], 11, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 3, 4, 5, // tri0 - 0, 6, 7, // tri1 - 0, 2, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 3, 9, // tri0 - 2, 11, 10, // tri1 - 3, 13, 12, // tri2 - 3, 1, 14 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&xsq_1_v[112], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&xsq_1_v[116], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 + ), + gsSPNTriangles_5b(2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx chest_xsq_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&xsq_1_v[163], 7, 0), -gsSPMatrix(0x0D0001C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&xsq_1_v[170], 20, 7), -gsSPNTrianglesInit_5b( - 13, // tri count - 3, 1, 7, // tri0 - 6, 8, 9, // tri1 - 3, 10, 11 // tri2 -), -gsSPNTriangles_5b( - 2, 12, 0, // tri0 - 2, 13, 14, // tri1 - 1, 16, 15, // tri2 - 0, 17, 18 // tri3 -), -gsSPNTriangles_5b( - 0, 19, 20, // tri0 - 1, 21, 22, // tri1 - 6, 3, 23, // tri2 - 2, 6, 24 // tri3 -), -gsSPNTriangles_5b( - 4, 0, 25, // tri0 - 5, 26, 1, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPVertex(&xsq_1_v[190], 9, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 1, 2, // tri0 - 0, 3, 4, // tri1 - 0, 5, 6 // tri2 -), -gsSPNTriangles_5b( - 4, 3, 7, // tri0 - 2, 5, 0, // tri1 - 1, 8, 2, // tri2 - 6, 3, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&xsq_1_v[163], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&xsq_1_v[170], 20, 7), + gsSPNTrianglesInit_5b(13, // tri count + 3, 1, 7, // tri0 + 6, 8, 9, // tri1 + 3, 10, 11 // tri2 + ), + gsSPNTriangles_5b(2, 12, 0, // tri0 + 2, 13, 14, // tri1 + 1, 16, 15, // tri2 + 0, 17, 18 // tri3 + ), + gsSPNTriangles_5b(0, 19, 20, // tri0 + 1, 21, 22, // tri1 + 6, 3, 23, // tri2 + 2, 6, 24 // tri3 + ), + gsSPNTriangles_5b(4, 0, 25, // tri0 + 5, 26, 1, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&xsq_1_v[190], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 0, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 3, 7, // tri0 + 2, 5, 0, // tri1 + 1, 8, 2, // tri2 + 6, 3, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail1_xsq_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&xsq_1_v[242], 13, 0), -gsSPNTrianglesInit_5b( - 17, // tri count - 0, 1, 2, // tri0 - 0, 3, 1, // tri1 - 4, 3, 5 // tri2 -), -gsSPNTriangles_5b( - 6, 7, 8, // tri0 - 8, 9, 6, // tri1 - 10, 9, 11, // tri2 - 6, 3, 4 // tri3 -), -gsSPNTriangles_5b( - 4, 7, 6, // tri0 - 9, 2, 6, // tri1 - 5, 3, 10, // tri2 - 2, 9, 0 // tri3 -), -gsSPNTriangles_5b( - 0, 10, 3, // tri0 - 9, 10, 0, // tri1 - 11, 9, 8, // tri2 - 11, 12, 10 // tri3 -), -gsSPNTriangles_5b( - 10, 12, 5, // tri0 - 6, 1, 3, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&xsq_1_v[242], 13, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 3, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 8, 9, 6, // tri1 + 10, 9, 11, // tri2 + 6, 3, 4 // tri3 + ), + gsSPNTriangles_5b(4, 7, 6, // tri0 + 9, 2, 6, // tri1 + 5, 3, 10, // tri2 + 2, 9, 0 // tri3 + ), + gsSPNTriangles_5b(0, 10, 3, // tri0 + 9, 10, 0, // tri1 + 11, 9, 8, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(10, 12, 5, // tri0 + 6, 1, 3, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx tail2_xsq_model[] = { -gsSPMatrix(0x0D000140, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&xsq_1_v[199], 6, 0), -gsSPMatrix(0x0D000180, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000500, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&xsq_1_v[205], 16, 6), -gsSPNTrianglesInit_5b( - 11, // tri count - 3, 6, 7, // tri0 - 5, 1, 8, // tri1 - 5, 9, 10 // tri2 -), -gsSPNTriangles_5b( - 2, 0, 11, // tri0 - 0, 3, 12, // tri1 - 0, 13, 14, // tri2 - 2, 15, 16 // tri3 -), -gsSPNTriangles_5b( - 2, 17, 1, // tri0 - 4, 18, 3, // tri1 - 4, 5, 19, // tri2 - 5, 20, 21 // tri3 -), -gsSPVertex(&xsq_1_v[221], 21, 0), -gsSPNTrianglesInit_5b( - 35, // tri count - 0, 1, 2, // tri0 - 0, 3, 4, // tri1 - 0, 4, 5 // tri2 -), -gsSPNTriangles_5b( - 6, 7, 8, // tri0 - 9, 10, 11, // tri1 - 9, 11, 5, // tri2 - 6, 12, 7 // tri3 -), -gsSPNTriangles_5b( - 13, 10, 14, // tri0 - 9, 7, 12, // tri1 - 5, 4, 7, // tri2 - 5, 7, 9 // tri3 -), -gsSPNTriangles_5b( - 8, 7, 4, // tri0 - 13, 15, 16, // tri1 - 17, 18, 19, // tri2 - 17, 19, 15 // tri3 -), -gsSPNTriangles_5b( - 13, 17, 15, // tri0 - 19, 18, 8, // tri1 - 11, 10, 13, // tri2 - 20, 2, 16 // tri3 -), -gsSPNTriangles_5b( - 11, 13, 1, // tri0 - 10, 12, 14, // tri1 - 12, 10, 9, // tri2 - 14, 17, 13 // tri3 -), -gsSPNTriangles_5b( - 8, 18, 6, // tri0 - 19, 20, 16, // tri1 - 19, 16, 15, // tri2 - 20, 19, 8 // tri3 -), -gsSPNTriangles_5b( - 2, 3, 0, // tri0 - 3, 8, 4, // tri1 - 5, 11, 1, // tri2 - 5, 1, 0 // tri3 -), -gsSPNTriangles_5b( - 1, 13, 16, // tri0 - 20, 8, 3, // tri1 - 1, 16, 2, // tri2 - 2, 20, 3 // tri3 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&xsq_1_v[199], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&xsq_1_v[205], 16, 6), + gsSPNTrianglesInit_5b(11, // tri count + 3, 6, 7, // tri0 + 5, 1, 8, // tri1 + 5, 9, 10 // tri2 + ), + gsSPNTriangles_5b(2, 0, 11, // tri0 + 0, 3, 12, // tri1 + 0, 13, 14, // tri2 + 2, 15, 16 // tri3 + ), + gsSPNTriangles_5b(2, 17, 1, // tri0 + 4, 18, 3, // tri1 + 4, 5, 19, // tri2 + 5, 20, 21 // tri3 + ), + gsSPVertex(&xsq_1_v[221], 21, 0), + gsSPNTrianglesInit_5b(35, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 9, 10, 11, // tri1 + 9, 11, 5, // tri2 + 6, 12, 7 // tri3 + ), + gsSPNTriangles_5b(13, 10, 14, // tri0 + 9, 7, 12, // tri1 + 5, 4, 7, // tri2 + 5, 7, 9 // tri3 + ), + gsSPNTriangles_5b(8, 7, 4, // tri0 + 13, 15, 16, // tri1 + 17, 18, 19, // tri2 + 17, 19, 15 // tri3 + ), + gsSPNTriangles_5b(13, 17, 15, // tri0 + 19, 18, 8, // tri1 + 11, 10, 13, // tri2 + 20, 2, 16 // tri3 + ), + gsSPNTriangles_5b(11, 13, 1, // tri0 + 10, 12, 14, // tri1 + 12, 10, 9, // tri2 + 14, 17, 13 // tri3 + ), + gsSPNTriangles_5b(8, 18, 6, // tri0 + 19, 20, 16, // tri1 + 19, 16, 15, // tri2 + 20, 19, 8 // tri3 + ), + gsSPNTriangles_5b(2, 3, 0, // tri0 + 3, 8, 4, // tri1 + 5, 11, 1, // tri2 + 5, 1, 0 // tri3 + ), + gsSPNTriangles_5b(1, 13, 16, // tri0 + 20, 8, 3, // tri1 + 1, 16, 2, // tri2 + 2, 20, 3 // tri3 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot2_xsq_model[] = { -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&xsq_1_v[305], 5, 0), -gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&xsq_1_v[310], 17, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 4, 0, 5, // tri0 - 0, 7, 6, // tri1 - 3, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 1, 2, 10, // tri0 - 2, 3, 11, // tri1 - 3, 4, 12, // tri2 - 2, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 15, 16, 17, // tri0 - 18, 19, 20, // tri1 - 18, 21, 19 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&xsq_1_v[305], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&xsq_1_v[310], 17, 5), + gsSPNTrianglesInit_5b(7, // tri count + 4, 0, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 + ), + gsSPNTriangles_5b(1, 2, 10, // tri0 + 2, 3, 11, // tri1 + 3, 4, 12, // tri2 + 2, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Rfoot1_xsq_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&xsq_1_v[327], 4, 0), -gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&xsq_1_v[331], 22, 4), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 3, 4, // tri0 - 0, 5, 1, // tri1 - 1, 6, 7 // tri2 -), -gsSPNTriangles_5b( - 3, 2, 8, // tri0 - 2, 9, 10, // tri1 - 2, 1, 11, // tri2 - 0, 13, 12 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 14, 15, 16, // tri0 - 14, 16, 17, // tri1 - 17, 18, 14 // tri2 -), -gsSPNTriangles_5b( - 19, 20, 21, // tri0 - 21, 20, 18, // tri1 - 21, 22, 19, // tri2 - 17, 21, 18 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsSPNTrianglesInit_5b( - 1, // tri count - 23, 24, 25, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&xsq_1_v[327], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&xsq_1_v[331], 22, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 4, // tri0 + 0, 5, 1, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b(3, 2, 8, // tri0 + 2, 9, 10, // tri1 + 2, 1, 11, // tri2 + 0, 13, 12 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 14, 15, 16, // tri0 + 14, 16, 17, // tri1 + 17, 18, 14 // tri2 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 21, 20, 18, // tri1 + 21, 22, 19, // tri2 + 17, 21, 18 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsSPNTrianglesInit_5b(1, // tri count + 23, 24, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot2_xsq_model[] = { -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&xsq_1_v[255], 5, 0), -gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&xsq_1_v[260], 17, 5), -gsSPNTrianglesInit_5b( - 7, // tri count - 0, 4, 5, // tri0 - 0, 7, 6, // tri1 - 3, 9, 8 // tri2 -), -gsSPNTriangles_5b( - 2, 1, 10, // tri0 - 3, 2, 11, // tri1 - 4, 3, 12, // tri2 - 2, 13, 14 // tri3 -), -gsSPNTrianglesInit_5b( - 3, // tri count - 15, 16, 17, // tri0 - 18, 19, 20, // tri1 - 19, 21, 20 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&xsq_1_v[255], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&xsq_1_v[260], 17, 5), + gsSPNTrianglesInit_5b(7, // tri count + 0, 4, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 + ), + gsSPNTriangles_5b(2, 1, 10, // tri0 + 3, 2, 11, // tri1 + 4, 3, 12, // tri2 + 2, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx Lfoot1_xsq_model[] = { -gsSPMatrix(0x0D000000, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&xsq_1_v[277], 6, 0), -gsSPMatrix(0x0D000040, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPVertex(&xsq_1_v[283], 22, 6), -gsSPNTrianglesInit_5b( - 7, // tri count - 4, 0, 6, // tri0 - 1, 7, 0, // tri1 - 1, 8, 9 // tri2 -), -gsSPNTriangles_5b( - 2, 5, 10, // tri0 - 2, 11, 12, // tri1 - 1, 3, 13, // tri2 - 0, 15, 14 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), -gsSPNTrianglesInit_5b( - 7, // tri count - 16, 17, 18, // tri0 - 19, 16, 18, // tri1 - 18, 20, 19 // tri2 -), -gsSPNTriangles_5b( - 21, 22, 23, // tri0 - 20, 22, 21, // tri1 - 23, 24, 21, // tri2 - 20, 21, 19 // tri3 -), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsSPNTrianglesInit_5b( - 1, // tri count - 25, 26, 27, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0 // tri2 -), -gsSPEndDisplayList(), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&xsq_1_v[277], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&xsq_1_v[283], 22, 6), + gsSPNTrianglesInit_5b(7, // tri count + 4, 0, 6, // tri0 + 1, 7, 0, // tri1 + 1, 8, 9 // tri2 + ), + gsSPNTriangles_5b(2, 5, 10, // tri0 + 2, 11, 12, // tri1 + 1, 3, 13, // tri2 + 0, 15, 14 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 16, 17, 18, // tri0 + 19, 16, 18, // tri1 + 18, 20, 19 // tri2 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 20, 22, 21, // tri1 + 23, 24, 21, // tri2 + 20, 21, 19 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsSPNTrianglesInit_5b(1, // tri count + 25, 26, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), }; static Gfx base_xsq_model[] = { -gsSPTexture(0, 0, 0, 0, G_ON), -gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), -gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), -gsDPLoadTextureBlock_4b_Dolphin(0x0B000300, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), -gsDPSetTileSize(0, 0, 0, 508, 124), -gsDPSetPrimColor(0, 128, 255, 255, 255, 255), -gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), -gsSPVertex(&xsq_1_v[353], 14, 0), -gsSPNTrianglesInit_5b( - 12, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 6, 7, 8 // tri2 -), -gsSPNTriangles_5b( - 9, 5, 4, // tri0 - 10, 4, 0, // tri1 - 10, 9, 4, // tri2 - 7, 11, 12 // tri3 -), -gsSPNTriangles_5b( - 8, 7, 13, // tri0 - 2, 10, 0, // tri1 - 2, 1, 6, // tri2 - 6, 8, 2 // tri3 -), -gsSPNTriangles_5b( - 7, 12, 13, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 -), -gsSPEndDisplayList(), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&xsq_1_v[353], 14, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 5, 4, // tri0 + 10, 4, 0, // tri1 + 10, 9, 4, // tri2 + 7, 11, 12 // tri3 + ), + gsSPNTriangles_5b(8, 7, 13, // tri0 + 2, 10, 0, // tri1 + 2, 1, 6, // tri2 + 6, 8, 2 // tri3 + ), + gsSPNTriangles_5b(7, 12, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), }; - // clang-format off static cKF_Joint_R_c cKF_je_r_xsq_1_tbl[] = { /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, @@ -750,4 +664,4 @@ static cKF_Joint_R_c cKF_je_r_xsq_1_tbl[] = { }; // clang-format on -extern cKF_Skeleton_R_c cKF_bs_r_xsq_1 = { 26, 13, cKF_je_r_xsq_1_tbl }; \ No newline at end of file +extern cKF_Skeleton_R_c cKF_bs_r_xsq_1 = { 26, 13, cKF_je_r_xsq_1_tbl }; diff --git a/src/static/libforest/emu64/emu64_print.cpp b/src/static/libforest/emu64/emu64_print.cpp index 6280a06c..1da4bda2 100644 --- a/src/static/libforest/emu64/emu64_print.cpp +++ b/src/static/libforest/emu64/emu64_print.cpp @@ -60,12 +60,12 @@ const char* emu64::segchk(u32 segment) { s = "anime_5_model"; } else if (SEG_EQUALS(segment, ANIME_6_TXT_SEG)) { s = "anime_6_model"; - } else if (segment > SEG_2_SEGADDR(ANIME_4_TXT_SEG) && segment < (SEG_2_SEGADDR(ANIME_4_TXT_SEG) + 0x800)) { + } else if (segment > anime_4_txt && segment < (anime_4_txt + ANIME_4_TXT_SIZE)) { snprintf(buf, sizeof(buf) - 1, str0, segment - SEG_2_SEGADDR(ANIME_4_TXT_SEG)); s = buf; } else { - if (segment > 0xD000000 && segment < 0xD000408) { - int comb = segment - 0x0D000000; + if (segment > anime_6_model && segment < (anime_6_model + ANIME_6_MODEL_SIZE)) { + int comb = segment - anime_6_model; snprintf(buf, sizeof(buf) - 1, str1, comb / (int)sizeof(Mtx)); s = buf; } else { From 1bc3e886c5894e607b060ec1dc73ebe40495a7d5 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Sun, 28 Jul 2024 12:41:48 -0400 Subject: [PATCH 061/234] Use mbi segment macros --- include/libforest/gbi_extensions.h | 31 ++++++++++------------ src/static/libforest/emu64/emu64_print.cpp | 2 +- 2 files changed, 15 insertions(+), 18 deletions(-) diff --git a/include/libforest/gbi_extensions.h b/include/libforest/gbi_extensions.h index a877bfe9..4cde0755 100644 --- a/include/libforest/gbi_extensions.h +++ b/include/libforest/gbi_extensions.h @@ -22,24 +22,21 @@ extern "C" { #define ANIME_4_TXT_SIZE 0x800 #define ANIME_6_MODEL_SIZE 0x408 -#define SEGMENT_SHIFT 24 +#define SEG_EQUALS(seg_addr, seg) (seg_addr == SEGMENT_ADDR(seg, 0)) -#define SEG_2_SEGADDR(seg) (seg << SEGMENT_SHIFT) -#define SEG_EQUALS(seg_addr, seg) (seg_addr == SEG_2_SEGADDR(seg)) - -#define softsprite_mtx SEG_2_SEGADDR(SOFTSPRITE_MTX_SEG) -#define anime_1_txt SEG_2_SEGADDR(ANIME_1_TXT_SEG) -#define anime_1_model SEG_2_SEGADDR(ANIME_1_TXT_SEG) -#define anime_2_txt SEG_2_SEGADDR(ANIME_2_TXT_SEG) -#define anime_2_model SEG_2_SEGADDR(ANIME_2_TXT_SEG) -#define anime_3_txt SEG_2_SEGADDR(ANIME_3_TXT_SEG) -#define anime_3_model SEG_2_SEGADDR(ANIME_3_TXT_SEG) -#define anime_4_txt SEG_2_SEGADDR(ANIME_4_TXT_SEG) -#define anime_4_model SEG_2_SEGADDR(ANIME_4_TXT_SEG) -#define anime_5_txt SEG_2_SEGADDR(ANIME_5_TXT_SEG) -#define anime_5_model SEG_2_SEGADDR(ANIME_5_TXT_SEG) -#define anime_6_txt SEG_2_SEGADDR(ANIME_6_TXT_SEG) -#define anime_6_model SEG_2_SEGADDR(ANIME_6_TXT_SEG) +#define softsprite_mtx SEGMENT_ADDR(SOFTSPRITE_MTX_SEG, 0) +#define anime_1_txt SEGMENT_ADDR(ANIME_1_TXT_SEG, 0) +#define anime_1_model SEGMENT_ADDR(ANIME_1_TXT_SEG, 0) +#define anime_2_txt SEGMENT_ADDR(ANIME_2_TXT_SEG, 0) +#define anime_2_model SEGMENT_ADDR(ANIME_2_TXT_SEG, 0) +#define anime_3_txt SEGMENT_ADDR(ANIME_3_TXT_SEG, 0) +#define anime_3_model SEGMENT_ADDR(ANIME_3_TXT_SEG, 0) +#define anime_4_txt SEGMENT_ADDR(ANIME_4_TXT_SEG, 0) +#define anime_4_model SEGMENT_ADDR(ANIME_4_TXT_SEG, 0) +#define anime_5_txt SEGMENT_ADDR(ANIME_5_TXT_SEG, 0) +#define anime_5_model SEGMENT_ADDR(ANIME_5_TXT_SEG, 0) +#define anime_6_txt SEGMENT_ADDR(ANIME_6_TXT_SEG, 0) +#define anime_6_model SEGMENT_ADDR(ANIME_6_TXT_SEG, 0) /* New Microcode Command Ids */ #define G_TRIN 0x09 diff --git a/src/static/libforest/emu64/emu64_print.cpp b/src/static/libforest/emu64/emu64_print.cpp index 1da4bda2..05969f7e 100644 --- a/src/static/libforest/emu64/emu64_print.cpp +++ b/src/static/libforest/emu64/emu64_print.cpp @@ -61,7 +61,7 @@ const char* emu64::segchk(u32 segment) { } else if (SEG_EQUALS(segment, ANIME_6_TXT_SEG)) { s = "anime_6_model"; } else if (segment > anime_4_txt && segment < (anime_4_txt + ANIME_4_TXT_SIZE)) { - snprintf(buf, sizeof(buf) - 1, str0, segment - SEG_2_SEGADDR(ANIME_4_TXT_SEG)); + snprintf(buf, sizeof(buf) - 1, str0, segment - anime_4_txt); s = buf; } else { if (segment > anime_6_model && segment < (anime_6_model + ANIME_6_MODEL_SIZE)) { From 466058140b35482f364abfceebd8c1b2ab537782 Mon Sep 17 00:00:00 2001 From: SwareJonge <41187958+SwareJonge@users.noreply.github.com> Date: Sun, 28 Jul 2024 20:17:30 +0200 Subject: [PATCH 062/234] Fix sjiswrap path for Windows --- common.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/common.py b/common.py index 0554d158..14df4b33 100644 --- a/common.py +++ b/common.py @@ -215,12 +215,12 @@ CC = os.path.join(CODEWARRIOR, "mwcceppc.exe") CC_R = os.path.join(CODEWARRIOR_RODATA_POOL_FIX, "mwcceppc.exe") OCC = os.path.join(SDK_CW, "mwcceppc.exe") LD = os.path.join(CODEWARRIOR, "mwldeppc.exe") -SJISWRAP = f"{TOOLS}/sjiswrap.exe" if platform != "win32": LD = f"wibo {LD}" - SJISWRAP = f"wibo {SJISWRAP}" + SJISWRAP = f"wibo {TOOLS}/sjiswrap.exe" else: ORTHRUS = os.path.join(TOOLS, "orthrus.exe") + SJISWRAP = os.path.join(TOOLS, "sjiswrap.exe") # DevkitPPC DEVKITPPC = os.environ.get("DEVKITPPC") From 536a7f03467d4817dd1ab8dca86fa2392c5b9838 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Sun, 28 Jul 2024 19:36:25 -0400 Subject: [PATCH 063/234] Add npc joint names based on exposed names and observations --- include/ac_npc.h | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/include/ac_npc.h b/include/ac_npc.h index 710264a2..b6d0ef70 100644 --- a/include/ac_npc.h +++ b/include/ac_npc.h @@ -25,6 +25,37 @@ extern "C" { #define aNPC_SPNPC_BIT_SET(field, bit) ((field) |= (1 << (bit))) #define aNPC_SPNPC_BIT_CLR(field, bit) ((field) &= ~(1 << (bit))) +enum { + aNPC_JOINT_BASE_ROOT, + aNPC_JOINT_BASE, + aNPC_JOINT_LFOOT_ROOT, + aNPC_JOINT_LFOOT1, + aNPC_JOINT_LFOOT2, + aNPC_JOINT_LFOOT3, + aNPC_JOINT_RFOOT_ROOT, + aNPC_JOINT_RFOOT1, + aNPC_JOINT_RFOOT2, + aNPC_JOINT_RFOOT3, + aNPC_JOINT_TAIL_ROOT, + aNPC_JOINT_TAIL1, + aNPC_JOINT_TAIL2, + aNPC_JOINT_CHEST, + aNPC_JOINT_LARM_ROOT, + aNPC_JOINT_LARM1, + aNPC_JOINT_LARM2, + aNPC_JOINT_RARM_ROOT, + aNPC_JOINT_RARM1, + aNPC_JOINT_RARM2, + aNPC_JOINT_HAND, + aNPC_JOINT_HEAD_ROOT, + aNPC_JOINT_MOUTH_ROOT, + aNPC_JOINT_MOUTH, + aNPC_JOINT_HEAD, + aNPC_JOINT_FEEL, + + aNPC_JOINT_NUM +}; + typedef struct ac_npc_clip_s aNPC_Clip_c; #define aNPC_EYE_TEX_NUM 8 From d4a8d6a099e5071330e388e97af09e469e532e4e Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Mon, 29 Jul 2024 14:39:31 -0400 Subject: [PATCH 064/234] Fix .text symbol file alignment, add ALL_NPC_NUM define --- config/symbols.yml | 3988 ++++++++++++++++++++-------------------- include/m_name_table.h | 1 + 2 files changed, 1995 insertions(+), 1994 deletions(-) diff --git a/config/symbols.yml b/config/symbols.yml index 4dccb822..44442904 100644 --- a/config/symbols.yml +++ b/config/symbols.yml @@ -52918,294 +52918,294 @@ src/static/OSResetSW.c: #src/main.c: # 0x80407CB9: main src/ac_quest_talk_island.c: - 0x8048D769: aQMgr_init_normal_info - 0x8048D7A5: aQMgr_set_number_free_str - 0x8048D809: aQMgr_set_number_item_str - 0x8048D871: aQMgr_set_number_free_str_add_gatu - 0x8048D8FD: aQMgr_set_number_free_str_add_nichi - 0x8048D989: aQMgr_normal_set_free_str - 0x8048D9F1: aQMgr_set_calendar_free_str - 0x8048DA91: aQMgr_get_rnd_no_cut_10 - 0x8048DBBD: aQMgr_get_possession_ftr_cpt_wl_rnd - 0x8048DD21: aQMgr_get_possession_item_rnd - 0x8048E295: aQMgr_order_decide_trade_common_item - 0x8048E469: aQMgr_order_decide_trade_common_pay - 0x8048E49D: aQMgr_order_decide_trade_common - 0x8048E4E9: aQMgr_trade_give_item - 0x8048E5A9: aQMgr_trade_take_item - 0x8048E631: aQMgr_trade_take_money - 0x8048E665: aQMgr_trade_give_money - 0x8048E749: aQMgr_set_give_and_take_mode_GIVE - 0x8048E7F1: aQMgr_set_give_item_and_take_money_mode_GIVE - 0x8048E855: aQMgr_set_give_money_and_take_item_mode_GIVE - 0x8048E8E5: aQMgr_set_give_money_and_take_item_mode_TAKE - 0x8048E941: aQMgr_set_give_and_take_mode_TAKE - 0x8048E9C5: aQMgr_order_change_roof_color - 0x8048EA6D: aQMgr_order_change_gobi - 0x8048EAB5: aQMgr_order_cancel_remove - 0x8048EAF5: aQMgr_control_animal_info - 0x8048EB59: aQMgr_order_decide_trade_1 - 0x8048EBA1: aQMgr_order_decide_trade_2 - 0x8048EBE9: aQMgr_order_decide_trade_3 - 0x8048EC45: aQMgr_order_decide_trade_4 - 0x8048ECA9: aQMgr_order_decide_trade_5 - 0x8048ECF1: aQMgr_order_decide_trade_6 - 0x8048ED39: aQMgr_order_decide_trade_7 - 0x8048ED81: aQMgr_order_decide_trade_8 - 0x8048EDC9: aQMgr_order_decide_trade_9 - 0x8048EE25: aQMgr_order_decide_trade_10 - 0x8048EE89: aQMgr_order_decide_trade_11 - 0x8048EED1: aQMgr_order_decide_trade_12 - 0x8048EF19: aQMgr_order_decide_trade_13 - 0x8048EF61: aQMgr_order_decide_trade_14 - 0x8048EF8D: aQMgr_order_decide_trade_15 - 0x8048EFB9: aQMgr_order_decide_trade_16 - 0x8048EFE5: aQMgr_order_decide_trade_17 - 0x8048F511: aQMgr_order_decide_trade - 0x8048F559: aQMgr_order_move_trade_no_term - 0x8048F5E5: aQMgr_order_move_trade_1 - 0x8048F609: aQMgr_order_move_trade_2 - 0x8048F62D: aQMgr_order_move_trade_3 - 0x8048F651: aQMgr_order_move_trade_4 - 0x8048F675: aQMgr_order_move_trade_5 - 0x8048F699: aQMgr_order_move_trade_6 - 0x8048F6BD: aQMgr_order_move_trade_7 - 0x8048F6E1: aQMgr_order_move_trade_8 - 0x8048F705: aQMgr_order_move_trade_9 - 0x8048F725: aQMgr_order_move_trade_10 - 0x8048F745: aQMgr_order_move_trade_11 - 0x8048F765: aQMgr_order_move_trade_12 - 0x8048F785: aQMgr_order_move_trade_13 - 0x8048F7A5: aQMgr_order_move_trade_14 - 0x8048F7D5: aQMgr_order_move_trade_15 - 0x8048F805: aQMgr_order_move_trade_16 - 0x8048F835: aQMgr_order_move_trade_17 - 0x8048F865: aQMgr_order_move_trade_18 - 0x8048F895: aQMgr_order_move_trade_19 - 0x8048F8C5: aQMgr_order_move_trade_20 - 0x8048F8F5: aQMgr_order_move_trade_21 - 0x8048F925: aQMgr_order_move_trade_22 - 0x8048FA91: aQMgr_order_trade - 0x8048FAE1: aQMgr_order_show_letter - 0x8048FB71: aQMgr_order_fluctuation_friendship - 0x8048FBB1: aQMgr_order_play_memory_melody - 0x8048FC11: aQMgr_order_set_calendar - 0x8048FC99: aQMgr_order_input_birthday - 0x8048FD31: aQMgr_set_random_string - 0x8048FDD1: aQMgr_order_set_string_1 - 0x8048FE95: aQMgr_set_random_number_item_str - 0x8048FF0D: aQMgr_order_set_string_2 - 0x8048FFC1: aQMgr_order_set_string_3 - 0x80490035: aQMgr_order_set_string_4 - 0x80490245: aQMgr_order_set_string - 0x804910E9: aQMgr_talk_normal_open_letter - 0x80491309: aQMgr_talk_normal_open_birthday - 0x80491355: aQMgr_talk_normal_open_gobi - 0x804913B1: aQMgr_talk_normal_open_msg - 0x80491401: aQMgr_talk_normal_give_item - 0x80491451: aQMgr_talk_normal_to_wait_order + 0x8048D768: aQMgr_init_normal_info + 0x8048D7A4: aQMgr_set_number_free_str + 0x8048D808: aQMgr_set_number_item_str + 0x8048D870: aQMgr_set_number_free_str_add_gatu + 0x8048D8FC: aQMgr_set_number_free_str_add_nichi + 0x8048D988: aQMgr_normal_set_free_str + 0x8048D9F0: aQMgr_set_calendar_free_str + 0x8048DA90: aQMgr_get_rnd_no_cut_10 + 0x8048DBBC: aQMgr_get_possession_ftr_cpt_wl_rnd + 0x8048DD20: aQMgr_get_possession_item_rnd + 0x8048E294: aQMgr_order_decide_trade_common_item + 0x8048E468: aQMgr_order_decide_trade_common_pay + 0x8048E49C: aQMgr_order_decide_trade_common + 0x8048E4E8: aQMgr_trade_give_item + 0x8048E5A8: aQMgr_trade_take_item + 0x8048E630: aQMgr_trade_take_money + 0x8048E664: aQMgr_trade_give_money + 0x8048E748: aQMgr_set_give_and_take_mode_GIVE + 0x8048E7F0: aQMgr_set_give_item_and_take_money_mode_GIVE + 0x8048E854: aQMgr_set_give_money_and_take_item_mode_GIVE + 0x8048E8E4: aQMgr_set_give_money_and_take_item_mode_TAKE + 0x8048E940: aQMgr_set_give_and_take_mode_TAKE + 0x8048E9C4: aQMgr_order_change_roof_color + 0x8048EA6C: aQMgr_order_change_gobi + 0x8048EAB4: aQMgr_order_cancel_remove + 0x8048EAF4: aQMgr_control_animal_info + 0x8048EB58: aQMgr_order_decide_trade_1 + 0x8048EBA0: aQMgr_order_decide_trade_2 + 0x8048EBE8: aQMgr_order_decide_trade_3 + 0x8048EC44: aQMgr_order_decide_trade_4 + 0x8048ECA8: aQMgr_order_decide_trade_5 + 0x8048ECF0: aQMgr_order_decide_trade_6 + 0x8048ED38: aQMgr_order_decide_trade_7 + 0x8048ED80: aQMgr_order_decide_trade_8 + 0x8048EDC8: aQMgr_order_decide_trade_9 + 0x8048EE24: aQMgr_order_decide_trade_10 + 0x8048EE88: aQMgr_order_decide_trade_11 + 0x8048EED0: aQMgr_order_decide_trade_12 + 0x8048EF18: aQMgr_order_decide_trade_13 + 0x8048EF60: aQMgr_order_decide_trade_14 + 0x8048EF8C: aQMgr_order_decide_trade_15 + 0x8048EFB8: aQMgr_order_decide_trade_16 + 0x8048EFE4: aQMgr_order_decide_trade_17 + 0x8048F510: aQMgr_order_decide_trade + 0x8048F558: aQMgr_order_move_trade_no_term + 0x8048F5E4: aQMgr_order_move_trade_1 + 0x8048F608: aQMgr_order_move_trade_2 + 0x8048F62C: aQMgr_order_move_trade_3 + 0x8048F650: aQMgr_order_move_trade_4 + 0x8048F674: aQMgr_order_move_trade_5 + 0x8048F698: aQMgr_order_move_trade_6 + 0x8048F6BC: aQMgr_order_move_trade_7 + 0x8048F6E0: aQMgr_order_move_trade_8 + 0x8048F704: aQMgr_order_move_trade_9 + 0x8048F724: aQMgr_order_move_trade_10 + 0x8048F744: aQMgr_order_move_trade_11 + 0x8048F764: aQMgr_order_move_trade_12 + 0x8048F784: aQMgr_order_move_trade_13 + 0x8048F7A4: aQMgr_order_move_trade_14 + 0x8048F7D4: aQMgr_order_move_trade_15 + 0x8048F804: aQMgr_order_move_trade_16 + 0x8048F834: aQMgr_order_move_trade_17 + 0x8048F864: aQMgr_order_move_trade_18 + 0x8048F894: aQMgr_order_move_trade_19 + 0x8048F8C4: aQMgr_order_move_trade_20 + 0x8048F8F4: aQMgr_order_move_trade_21 + 0x8048F924: aQMgr_order_move_trade_22 + 0x8048FA90: aQMgr_order_trade + 0x8048FAE0: aQMgr_order_show_letter + 0x8048FB70: aQMgr_order_fluctuation_friendship + 0x8048FBB0: aQMgr_order_play_memory_melody + 0x8048FC10: aQMgr_order_set_calendar + 0x8048FC98: aQMgr_order_input_birthday + 0x8048FD30: aQMgr_set_random_string + 0x8048FDD0: aQMgr_order_set_string_1 + 0x8048FE94: aQMgr_set_random_number_item_str + 0x8048FF0C: aQMgr_order_set_string_2 + 0x8048FFC0: aQMgr_order_set_string_3 + 0x80490034: aQMgr_order_set_string_4 + 0x80490244: aQMgr_order_set_string + 0x804910E8: aQMgr_talk_normal_open_letter + 0x80491308: aQMgr_talk_normal_open_birthday + 0x80491354: aQMgr_talk_normal_open_gobi + 0x804913B0: aQMgr_talk_normal_open_msg + 0x80491400: aQMgr_talk_normal_give_item + 0x80491450: aQMgr_talk_normal_to_wait_order 0x8068B310: l_quest_category_0 0x8068B31C: l_quest_category_1 0x8068B424: constellation_table 0x812FCAA8: l_aqmgr_str 0x812FCAB8: l_normal_info src/ac_quest_talk_normal_init.c: - 0x804915F5: aQMgr_init_normal_info - 0x80491631: aQMgr_set_number_free_str - 0x80491695: aQMgr_set_number_item_str - 0x80491775: aQMgr_set_number_free_str_add_gatu - 0x80491801: aQMgr_set_number_free_str_add_nichi - 0x8049293D: aQMgr_normal_set_free_str - 0x80492A61: aQMgr_set_calendar_free_str - 0x80492B15: aQMgr_get_rnd_no_cut_10 - 0x80492B9D: aQMgr_get_possession_ftr_cpt_wl_rnd - 0x80492D11: aQMgr_get_possession_item_rnd - 0x80492E35: aQMgr_order_decide_trade_common_item - 0x80493065: aQMgr_order_decide_trade_common_pay - 0x80493099: aQMgr_order_decide_trade_common - 0x804930ED: aQMgr_trade_give_item - 0x8049313D: aQMgr_trade_take_item - 0x804931A1: aQMgr_trade_take_money - 0x804931D5: aQMgr_trade_give_money - 0x804932B9: aQMgr_set_give_and_take_mode_GIVE - 0x80493361: aQMgr_set_give_item_and_take_money_mode_GIVE - 0x804933C5: aQMgr_set_give_money_and_take_item_mode_GIVE - 0x80493455: aQMgr_set_give_money_and_take_item_mode_TAKE - 0x804934B1: aQMgr_set_give_and_take_mode_TAKE - 0x80494461: aQMgr_order_change_roof_color - 0x80494509: aQMgr_order_change_gobi - 0x80494551: aQMgr_order_cancel_remove - 0x80494591: aQMgr_control_animal_info - 0x804945F5: aQMgr_order_decide_trade_1 - 0x80494645: aQMgr_order_decide_trade_2 - 0x80494695: aQMgr_order_decide_trade_3 - 0x804946F5: aQMgr_order_decide_trade_4 - 0x8049475D: aQMgr_order_decide_trade_5 - 0x804947AD: aQMgr_order_decide_trade_6 - 0x804947FD: aQMgr_order_decide_trade_7 - 0x8049484D: aQMgr_order_decide_trade_8 - 0x8049489D: aQMgr_order_decide_trade_9 - 0x804948FD: aQMgr_order_decide_trade_10 - 0x80494965: aQMgr_order_decide_trade_11 - 0x804949B5: aQMgr_order_decide_trade_12 - 0x80494A05: aQMgr_order_decide_trade_13 - 0x80494A55: aQMgr_order_decide_trade_14 - 0x80494A81: aQMgr_order_decide_trade_15 - 0x80494AAD: aQMgr_order_decide_trade_16 - 0x80494AD9: aQMgr_order_decide_trade_17 - 0x80494B05: aQMgr_order_decide_trade - 0x80494B51: aQMgr_order_move_trade_no_term - 0x80494BE5: aQMgr_order_move_trade_1 - 0x80494C09: aQMgr_order_move_trade_2 - 0x80494C2D: aQMgr_order_move_trade_3 - 0x80494C51: aQMgr_order_move_trade_4 - 0x80494C75: aQMgr_order_move_trade_5 - 0x80494C99: aQMgr_order_move_trade_6 - 0x80494CBD: aQMgr_order_move_trade_7 - 0x80494CE1: aQMgr_order_move_trade_8 - 0x80494D05: aQMgr_order_move_trade_9 - 0x80494D25: aQMgr_order_move_trade_10 - 0x80494D45: aQMgr_order_move_trade_11 - 0x80494D65: aQMgr_order_move_trade_12 - 0x80494D85: aQMgr_order_move_trade_13 - 0x80494DA5: aQMgr_order_move_trade_14 - 0x80494DD5: aQMgr_order_move_trade_15 - 0x80494E05: aQMgr_order_move_trade_16 - 0x80494E35: aQMgr_order_move_trade_17 - 0x80494E65: aQMgr_order_move_trade_18 - 0x80494E95: aQMgr_order_move_trade_19 - 0x80494EC5: aQMgr_order_move_trade_20 - 0x80494EF5: aQMgr_order_move_trade_21 - 0x80494F25: aQMgr_order_move_trade_22 - 0x80494F45: aQMgr_order_trade - 0x80494F91: aQMgr_order_show_letter - 0x80494FD9: aQMgr_order_fluctuation_friendship - 0x80495019: aQMgr_order_play_memory_melody - 0x80495079: aQMgr_order_set_calendar - 0x80495101: aQMgr_order_input_birthday - 0x80495149: aQMgr_set_random_string - 0x804951E9: aQMgr_order_set_string_1 - 0x804952AD: aQMgr_set_random_number_item_str - 0x80495325: aQMgr_order_set_string_2 - 0x80495401: aQMgr_order_set_string_3 - 0x80495475: aQMgr_order_set_string_4 - 0x80495685: aQMgr_order_set_string - 0x80495975: aQMgr_talk_normal_open_letter - 0x80495A69: aQMgr_talk_normal_open_birthday - 0x80495AB5: aQMgr_talk_normal_open_gobi - 0x80495B19: aQMgr_talk_normal_open_msg - 0x80495B69: aQMgr_talk_normal_give_item - 0x80495BB9: aQMgr_talk_normal_to_wait_order + 0x804915F4: aQMgr_init_normal_info + 0x80491630: aQMgr_set_number_free_str + 0x80491694: aQMgr_set_number_item_str + 0x80491774: aQMgr_set_number_free_str_add_gatu + 0x80491800: aQMgr_set_number_free_str_add_nichi + 0x8049293C: aQMgr_normal_set_free_str + 0x80492A60: aQMgr_set_calendar_free_str + 0x80492B14: aQMgr_get_rnd_no_cut_10 + 0x80492B9C: aQMgr_get_possession_ftr_cpt_wl_rnd + 0x80492D10: aQMgr_get_possession_item_rnd + 0x80492E34: aQMgr_order_decide_trade_common_item + 0x80493064: aQMgr_order_decide_trade_common_pay + 0x80493098: aQMgr_order_decide_trade_common + 0x804930EC: aQMgr_trade_give_item + 0x8049313C: aQMgr_trade_take_item + 0x804931A0: aQMgr_trade_take_money + 0x804931D4: aQMgr_trade_give_money + 0x804932B8: aQMgr_set_give_and_take_mode_GIVE + 0x80493360: aQMgr_set_give_item_and_take_money_mode_GIVE + 0x804933C4: aQMgr_set_give_money_and_take_item_mode_GIVE + 0x80493454: aQMgr_set_give_money_and_take_item_mode_TAKE + 0x804934B0: aQMgr_set_give_and_take_mode_TAKE + 0x80494460: aQMgr_order_change_roof_color + 0x80494508: aQMgr_order_change_gobi + 0x80494550: aQMgr_order_cancel_remove + 0x80494590: aQMgr_control_animal_info + 0x804945F4: aQMgr_order_decide_trade_1 + 0x80494644: aQMgr_order_decide_trade_2 + 0x80494694: aQMgr_order_decide_trade_3 + 0x804946F4: aQMgr_order_decide_trade_4 + 0x8049475C: aQMgr_order_decide_trade_5 + 0x804947AC: aQMgr_order_decide_trade_6 + 0x804947FC: aQMgr_order_decide_trade_7 + 0x8049484C: aQMgr_order_decide_trade_8 + 0x8049489C: aQMgr_order_decide_trade_9 + 0x804948FC: aQMgr_order_decide_trade_10 + 0x80494964: aQMgr_order_decide_trade_11 + 0x804949B4: aQMgr_order_decide_trade_12 + 0x80494A04: aQMgr_order_decide_trade_13 + 0x80494A54: aQMgr_order_decide_trade_14 + 0x80494A80: aQMgr_order_decide_trade_15 + 0x80494AAC: aQMgr_order_decide_trade_16 + 0x80494AD8: aQMgr_order_decide_trade_17 + 0x80494B04: aQMgr_order_decide_trade + 0x80494B50: aQMgr_order_move_trade_no_term + 0x80494BE4: aQMgr_order_move_trade_1 + 0x80494C08: aQMgr_order_move_trade_2 + 0x80494C2C: aQMgr_order_move_trade_3 + 0x80494C50: aQMgr_order_move_trade_4 + 0x80494C74: aQMgr_order_move_trade_5 + 0x80494C98: aQMgr_order_move_trade_6 + 0x80494CBC: aQMgr_order_move_trade_7 + 0x80494CE0: aQMgr_order_move_trade_8 + 0x80494D04: aQMgr_order_move_trade_9 + 0x80494D24: aQMgr_order_move_trade_10 + 0x80494D44: aQMgr_order_move_trade_11 + 0x80494D64: aQMgr_order_move_trade_12 + 0x80494D84: aQMgr_order_move_trade_13 + 0x80494DA4: aQMgr_order_move_trade_14 + 0x80494DD4: aQMgr_order_move_trade_15 + 0x80494E04: aQMgr_order_move_trade_16 + 0x80494E34: aQMgr_order_move_trade_17 + 0x80494E64: aQMgr_order_move_trade_18 + 0x80494E94: aQMgr_order_move_trade_19 + 0x80494EC4: aQMgr_order_move_trade_20 + 0x80494EF4: aQMgr_order_move_trade_21 + 0x80494F24: aQMgr_order_move_trade_22 + 0x80494F44: aQMgr_order_trade + 0x80494F90: aQMgr_order_show_letter + 0x80494FD8: aQMgr_order_fluctuation_friendship + 0x80495018: aQMgr_order_play_memory_melody + 0x80495078: aQMgr_order_set_calendar + 0x80495100: aQMgr_order_input_birthday + 0x80495148: aQMgr_set_random_string + 0x804951E8: aQMgr_order_set_string_1 + 0x804952AC: aQMgr_set_random_number_item_str + 0x80495324: aQMgr_order_set_string_2 + 0x80495400: aQMgr_order_set_string_3 + 0x80495474: aQMgr_order_set_string_4 + 0x80495684: aQMgr_order_set_string + 0x80495974: aQMgr_talk_normal_open_letter + 0x80495A68: aQMgr_talk_normal_open_birthday + 0x80495AB4: aQMgr_talk_normal_open_gobi + 0x80495B18: aQMgr_talk_normal_open_msg + 0x80495B68: aQMgr_talk_normal_give_item + 0x80495BB8: aQMgr_talk_normal_to_wait_order 0x8068B748: l_quest_category_0 0x8068B754: l_quest_category_1 0x8068B9F4: constellation_table 0x812FCB5C: l_aqmgr_str 0x812FCB6C: l_normal_info src/bg_cherry_item.c: - 0x804AFE75: bIT_copy_vtx - 0x804AFEC9: bIT_draw_shadow - 0x804B003D: bIT_clip_ct - 0x804B01A1: bIT_clip_dt - 0x804B01E9: bit_draw_ta_set - 0x804B0239: bit_draw_ta_clr - 0x804B0285: bIT_individual_draw_check - 0x804B02C1: mFI_search_unit_around_high - 0x804B0421: bIT_actor_fade_entry - 0x804B0555: bIT_actor_fade_move - 0x804B05A1: bIT_actor_fade_draw - 0x804B0639: bIT_actor_ten_coin_entryR - 0x804B0A29: bIT_actor_ten_coin_entry - 0x804B0AA9: bg_item_ten_coin_entry_ex - 0x804B0AED: bIT_actor_ten_coin_move - 0x804B0C15: bIT_actor_ten_coin_draw_af - 0x804B0C59: bIT_actor_ten_coin_draw_bf - 0x804B0CB9: bIT_actor_ten_coin_draw - 0x804B0EB9: bIT_actor_ten_coin_destruct - 0x804B0F41: bg_item_common_palload - 0x804B0F85: bIT_actor_rand_pos_get_blk_correct - 0x804B0FB9: bIT_actor_rand_pos_get_plus - 0x804B1099: bIT_actor_rand_pos_get - 0x804B1149: bIT_actor_shin_effect_entry - 0x804B1291: bIT_actor_shin_effect_check - 0x804B12CD: bIT_actor_shin_effect_move - 0x804B1475: bIT_actor_drop_move_plant_destruct - 0x804B14E1: bIT_common_moneytree_check - 0x804B159D: bIT_common_bury_after - 0x804B178D: bIT_common_hole_throw - 0x804B193D: bIT_actor_drop_move_fly_destruct - 0x804B1A09: func_calc_spec_drop_time - 0x804B1A51: bIT_actor_drop_entry_main - 0x804B1CD9: fruit_set - 0x804B22E5: bIT_fruit_set - 0x804B230D: drop_fruit - 0x804B24FD: BIT_actor_tree_cutcount_check - 0x804B25CD: bg_item_tree_fruit_drop - 0x804B2749: bIT_actor_dig_hole_effect_entry - 0x804B2811: bIT_actor_bury_hole_effect_entry - 0x804B2865: bIT_actor_hole_effect_entry - 0x804B2AB1: bIT_actor_hole_effect_destruct - 0x804B2B9D: bIT_actor_hole_effect_move - 0x804B2D6D: bIT_actor_hole_effect_draw - 0x804B2DE5: bIT_actor_player_drop_entry - 0x804B2FC9: bIT_drop_entry_v1 - 0x804B310D: bIT_actor_fly_entry - 0x804B3325: bIT_actor_drop_entry - 0x804B349D: bIT_actor_drop_move - 0x804B356D: bIT_actor_drop_destruct - 0x804B35E9: bIT_actor_drop_move_plant - 0x804B3821: bIT_actor_drop_move_bury_destruct - 0x804B3841: bIT_actor_drop_move_bury - 0x804B388D: bIT_actor_drop_move_bury_change - 0x804B390D: bIT_actor_drop_wait_bee - 0x804B3979: bIT_actor_drop_move_wait - 0x804B39E1: bIT_actor_drop_move_fly - 0x804B3F71: bIT_actor_drop_draw - 0x804B3FE9: bIT_actor_drop_draw_nrm - 0x804B408D: bit_cmn_s_single_draw_loop_type1 - 0x804B4149: bit_cmn_single_draw_loop_type1 - 0x804B42B9: bit_cmn_single_draw_item_shadow - 0x804B43CD: bit_cmn_single_draw_BT_shadow - 0x804B44F1: fg_no2fg_type - 0x804B46B5: bit_cmn_single_drawS_shadow - 0x804B478D: bit_cmn_single_draw_item_body - 0x804B4845: bit_cmn_single_draw - 0x804B48ED: bit_cmn_single_draw_BT - 0x804B4AD5: bit_cmn_single_drawS - 0x804B4BAD: bIT_common_info_tbl_copy - 0x804B4BCD: bIT_common_clear_treeatr - 0x804B4C7D: m_GetCItTable_TreeTblChk - 0x804B4F85: bIT_actor_pit_entry - 0x804B5095: bIT_actor_pit_move - 0x804B53AD: bIT_actor_pit_destruct - 0x804B542D: bg_item_common_chg_BGDataR_b - 0x804B55A9: bg_item_common_chg_BGDataR - 0x804B5621: bg_item_common_outPutData - 0x804B5695: bg_item_common_classifyitemDataTable - 0x804B59DD: bg_item_common_set_draw_tbl - 0x804B5A7D: bg_shin_effect_being_check - 0x804B5C35: bg_item_common_chg_draw_tbl_perfect - 0x804B5F4D: bg_item_common_renew_draw_and_crs_data_perfect - 0x804B5FD1: bg_item_common_destruct - 0x804B6035: bg_item_common_culling_check - 0x804B6085: bg_item_common_culling_check_talk - 0x804B60F1: bg_item_common_culling_check_loop - 0x804B618D: bg_item_common_culling_check_talk_loop - 0x804B6229: bg_item_common_check_talk_tree - 0x804B6281: bg_item_common_draw_check - 0x804B6329: bg_item_common_move - 0x804B6449: bIT_actor_pit_entry_del - 0x804B64B5: bIT_actor_pit_fall - 0x804B658D: bIT_actor_pit_fall_stop - 0x804B6659: bIT_actor_pit_exit - 0x804B6705: bg_item_common_draw_loop_type1 - 0x804B67E9: bg_item_common_s_draw_loop_type1 - 0x804B68CD: bg_item_common_draw_item_body - 0x804B6949: bg_item_common_draw_item_shadow - 0x804B6A65: bg_item_common_draw_item - 0x804B6BB9: bIT_actor_pit_draw_nrm - 0x804B6C1D: bIT_actor_pit_draw - 0x804B6C9D: bg_item_common_draw - 0x804B6E59: bg_item_common_construct + 0x804AFE74: bIT_copy_vtx + 0x804AFEC8: bIT_draw_shadow + 0x804B003C: bIT_clip_ct + 0x804B01A0: bIT_clip_dt + 0x804B01E8: bit_draw_ta_set + 0x804B0238: bit_draw_ta_clr + 0x804B0284: bIT_individual_draw_check + 0x804B02C0: mFI_search_unit_around_high + 0x804B0420: bIT_actor_fade_entry + 0x804B0554: bIT_actor_fade_move + 0x804B05A0: bIT_actor_fade_draw + 0x804B0638: bIT_actor_ten_coin_entryR + 0x804B0A28: bIT_actor_ten_coin_entry + 0x804B0AA8: bg_item_ten_coin_entry_ex + 0x804B0AEC: bIT_actor_ten_coin_move + 0x804B0C14: bIT_actor_ten_coin_draw_af + 0x804B0C58: bIT_actor_ten_coin_draw_bf + 0x804B0CB8: bIT_actor_ten_coin_draw + 0x804B0EB8: bIT_actor_ten_coin_destruct + 0x804B0F40: bg_item_common_palload + 0x804B0F84: bIT_actor_rand_pos_get_blk_correct + 0x804B0FB8: bIT_actor_rand_pos_get_plus + 0x804B1098: bIT_actor_rand_pos_get + 0x804B1148: bIT_actor_shin_effect_entry + 0x804B1290: bIT_actor_shin_effect_check + 0x804B12CC: bIT_actor_shin_effect_move + 0x804B1474: bIT_actor_drop_move_plant_destruct + 0x804B14E0: bIT_common_moneytree_check + 0x804B159C: bIT_common_bury_after + 0x804B178C: bIT_common_hole_throw + 0x804B193C: bIT_actor_drop_move_fly_destruct + 0x804B1A08: func_calc_spec_drop_time + 0x804B1A50: bIT_actor_drop_entry_main + 0x804B1CD8: fruit_set + 0x804B22E4: bIT_fruit_set + 0x804B230C: drop_fruit + 0x804B24FC: BIT_actor_tree_cutcount_check + 0x804B25CC: bg_item_tree_fruit_drop + 0x804B2748: bIT_actor_dig_hole_effect_entry + 0x804B2810: bIT_actor_bury_hole_effect_entry + 0x804B2864: bIT_actor_hole_effect_entry + 0x804B2AB0: bIT_actor_hole_effect_destruct + 0x804B2B9C: bIT_actor_hole_effect_move + 0x804B2D6C: bIT_actor_hole_effect_draw + 0x804B2DE4: bIT_actor_player_drop_entry + 0x804B2FC8: bIT_drop_entry_v1 + 0x804B310C: bIT_actor_fly_entry + 0x804B3324: bIT_actor_drop_entry + 0x804B349C: bIT_actor_drop_move + 0x804B356C: bIT_actor_drop_destruct + 0x804B35E8: bIT_actor_drop_move_plant + 0x804B3820: bIT_actor_drop_move_bury_destruct + 0x804B3840: bIT_actor_drop_move_bury + 0x804B388C: bIT_actor_drop_move_bury_change + 0x804B390C: bIT_actor_drop_wait_bee + 0x804B3978: bIT_actor_drop_move_wait + 0x804B39E0: bIT_actor_drop_move_fly + 0x804B3F70: bIT_actor_drop_draw + 0x804B3FE8: bIT_actor_drop_draw_nrm + 0x804B408C: bit_cmn_s_single_draw_loop_type1 + 0x804B4148: bit_cmn_single_draw_loop_type1 + 0x804B42B8: bit_cmn_single_draw_item_shadow + 0x804B43CC: bit_cmn_single_draw_BT_shadow + 0x804B44F0: fg_no2fg_type + 0x804B46B4: bit_cmn_single_drawS_shadow + 0x804B478C: bit_cmn_single_draw_item_body + 0x804B4844: bit_cmn_single_draw + 0x804B48EC: bit_cmn_single_draw_BT + 0x804B4AD4: bit_cmn_single_drawS + 0x804B4BAC: bIT_common_info_tbl_copy + 0x804B4BCC: bIT_common_clear_treeatr + 0x804B4C7C: m_GetCItTable_TreeTblChk + 0x804B4F84: bIT_actor_pit_entry + 0x804B5094: bIT_actor_pit_move + 0x804B53AC: bIT_actor_pit_destruct + 0x804B542C: bg_item_common_chg_BGDataR_b + 0x804B55A8: bg_item_common_chg_BGDataR + 0x804B5620: bg_item_common_outPutData + 0x804B5694: bg_item_common_classifyitemDataTable + 0x804B59DC: bg_item_common_set_draw_tbl + 0x804B5A7C: bg_shin_effect_being_check + 0x804B5C34: bg_item_common_chg_draw_tbl_perfect + 0x804B5F4C: bg_item_common_renew_draw_and_crs_data_perfect + 0x804B5FD0: bg_item_common_destruct + 0x804B6034: bg_item_common_culling_check + 0x804B6084: bg_item_common_culling_check_talk + 0x804B60F0: bg_item_common_culling_check_loop + 0x804B618C: bg_item_common_culling_check_talk_loop + 0x804B6228: bg_item_common_check_talk_tree + 0x804B6280: bg_item_common_draw_check + 0x804B6328: bg_item_common_move + 0x804B6448: bIT_actor_pit_entry_del + 0x804B64B4: bIT_actor_pit_fall + 0x804B658C: bIT_actor_pit_fall_stop + 0x804B6658: bIT_actor_pit_exit + 0x804B6704: bg_item_common_draw_loop_type1 + 0x804B67E8: bg_item_common_s_draw_loop_type1 + 0x804B68CC: bg_item_common_draw_item_body + 0x804B6948: bg_item_common_draw_item_shadow + 0x804B6A64: bg_item_common_draw_item + 0x804B6BB8: bIT_actor_pit_draw_nrm + 0x804B6C1C: bIT_actor_pit_draw + 0x804B6C9C: bg_item_common_draw + 0x804B6E58: bg_item_common_construct 0x8068FC8C: pos_table 0x8068FCCC: pos_table2 0x80690828: typeData_table_dummy @@ -53599,110 +53599,110 @@ src/bg_cherry_item.c: 0x8069282C: rnd_data_z 0x80692BC8: type_data_table_p_a src/bg_item.c: - 0x804B71F9: bIT_copy_vtx - 0x804B724D: bIT_draw_shadow - 0x804B73C1: bIT_clip_ct - 0x804B7525: bIT_clip_dt - 0x804B756D: bit_draw_ta_set - 0x804B75BD: bit_draw_ta_clr - 0x804B7609: bIT_individual_draw_check - 0x804B7645: mFI_search_unit_around_high - 0x804B77A5: bIT_actor_fade_entry - 0x804B78D9: bIT_actor_fade_move - 0x804B7925: bIT_actor_fade_draw - 0x804B79BD: bIT_actor_ten_coin_entryR - 0x804B7DAD: bIT_actor_ten_coin_entry - 0x804B7E2D: bg_item_ten_coin_entry_ex - 0x804B7E71: bIT_actor_ten_coin_move - 0x804B7F99: bIT_actor_ten_coin_draw_af - 0x804B7FDD: bIT_actor_ten_coin_draw_bf - 0x804B803D: bIT_actor_ten_coin_draw - 0x804B823D: bIT_actor_ten_coin_destruct - 0x804B82C5: bg_item_common_palload - 0x804B8309: bIT_actor_rand_pos_get_blk_correct - 0x804B833D: bIT_actor_rand_pos_get_plus - 0x804B841D: bIT_actor_rand_pos_get - 0x804B84CD: bIT_actor_shin_effect_entry - 0x804B8615: bIT_actor_shin_effect_check - 0x804B8651: bIT_actor_shin_effect_move - 0x804B87F9: bIT_actor_drop_move_plant_destruct - 0x804B8865: bIT_common_moneytree_check - 0x804B8921: bIT_common_bury_after - 0x804B8B11: bIT_common_hole_throw - 0x804B8CC1: bIT_actor_drop_move_fly_destruct - 0x804B8D8D: func_calc_spec_drop_time - 0x804B8DD5: bIT_actor_drop_entry_main - 0x804B905D: fruit_set - 0x804B9669: bIT_fruit_set - 0x804B9691: drop_fruit - 0x804B9881: BIT_actor_tree_cutcount_check - 0x804B9951: bg_item_tree_fruit_drop - 0x804B9ACD: bIT_actor_dig_hole_effect_entry - 0x804B9B95: bIT_actor_bury_hole_effect_entry - 0x804B9BE9: bIT_actor_hole_effect_entry - 0x804B9E35: bIT_actor_hole_effect_destruct - 0x804B9F21: bIT_actor_hole_effect_move - 0x804BA0F1: bIT_actor_hole_effect_draw - 0x804BA169: bIT_actor_player_drop_entry - 0x804BA34D: bIT_drop_entry_v1 - 0x804BA491: bIT_actor_fly_entry - 0x804BA6A9: bIT_actor_drop_entry - 0x804BA821: bIT_actor_drop_move - 0x804BA8F1: bIT_actor_drop_destruct - 0x804BA96D: bIT_actor_drop_move_plant - 0x804BABA5: bIT_actor_drop_move_bury_destruct - 0x804BABC5: bIT_actor_drop_move_bury - 0x804BAC11: bIT_actor_drop_move_bury_change - 0x804BAC91: bIT_actor_drop_wait_bee - 0x804BACFD: bIT_actor_drop_move_wait - 0x804BAD65: bIT_actor_drop_move_fly - 0x804BB2F5: bIT_actor_drop_draw - 0x804BB36D: bIT_actor_drop_draw_nrm - 0x804BB411: bit_cmn_s_single_draw_loop_type1 - 0x804BB4CD: bit_cmn_single_draw_loop_type1 - 0x804BB63D: bit_cmn_single_draw_item_shadow - 0x804BB751: bit_cmn_single_draw_BT_shadow - 0x804BB875: fg_no2fg_type - 0x804BBA39: bit_cmn_single_drawS_shadow - 0x804BBB11: bit_cmn_single_draw_item_body - 0x804BBBC9: bit_cmn_single_draw - 0x804BBC71: bit_cmn_single_draw_BT - 0x804BBE59: bit_cmn_single_drawS - 0x804BBF31: bIT_common_info_tbl_copy - 0x804BBF51: bIT_common_clear_treeatr - 0x804BC001: m_GetCItTable_TreeTblChk - 0x804BC309: bIT_actor_pit_entry - 0x804BC419: bIT_actor_pit_move - 0x804BC731: bIT_actor_pit_destruct - 0x804BC7B1: bg_item_common_chg_BGDataR_b - 0x804BC92D: bg_item_common_chg_BGDataR - 0x804BC9A5: bg_item_common_outPutData - 0x804BCA19: bg_item_common_classifyitemDataTable - 0x804BCD61: bg_item_common_set_draw_tbl - 0x804BCE01: bg_shin_effect_being_check - 0x804BCFB9: bg_item_common_chg_draw_tbl_perfect - 0x804BD2D1: bg_item_common_renew_draw_and_crs_data_perfect - 0x804BD355: bg_item_common_destruct - 0x804BD3B9: bg_item_common_culling_check - 0x804BD409: bg_item_common_culling_check_talk - 0x804BD475: bg_item_common_culling_check_loop - 0x804BD511: bg_item_common_culling_check_talk_loop - 0x804BD5AD: bg_item_common_check_talk_tree - 0x804BD605: bg_item_common_draw_check - 0x804BD6AD: bg_item_common_move - 0x804BD7CD: bIT_actor_pit_entry_del - 0x804BD839: bIT_actor_pit_fall - 0x804BD911: bIT_actor_pit_fall_stop - 0x804BD9DD: bIT_actor_pit_exit - 0x804BDA89: bg_item_common_draw_loop_type1 - 0x804BDB6D: bg_item_common_s_draw_loop_type1 - 0x804BDC51: bg_item_common_draw_item_body - 0x804BDCCD: bg_item_common_draw_item_shadow - 0x804BDDE9: bg_item_common_draw_item - 0x804BDF3D: bIT_actor_pit_draw_nrm - 0x804BDFA1: bIT_actor_pit_draw - 0x804BE021: bg_item_common_draw - 0x804BE1DD: bg_item_common_construct + 0x804B71F8: bIT_copy_vtx + 0x804B724C: bIT_draw_shadow + 0x804B73C0: bIT_clip_ct + 0x804B7524: bIT_clip_dt + 0x804B756C: bit_draw_ta_set + 0x804B75BC: bit_draw_ta_clr + 0x804B7608: bIT_individual_draw_check + 0x804B7644: mFI_search_unit_around_high + 0x804B77A4: bIT_actor_fade_entry + 0x804B78D8: bIT_actor_fade_move + 0x804B7924: bIT_actor_fade_draw + 0x804B79BC: bIT_actor_ten_coin_entryR + 0x804B7DAC: bIT_actor_ten_coin_entry + 0x804B7E2C: bg_item_ten_coin_entry_ex + 0x804B7E70: bIT_actor_ten_coin_move + 0x804B7F98: bIT_actor_ten_coin_draw_af + 0x804B7FDC: bIT_actor_ten_coin_draw_bf + 0x804B803C: bIT_actor_ten_coin_draw + 0x804B823C: bIT_actor_ten_coin_destruct + 0x804B82C4: bg_item_common_palload + 0x804B8308: bIT_actor_rand_pos_get_blk_correct + 0x804B833C: bIT_actor_rand_pos_get_plus + 0x804B841C: bIT_actor_rand_pos_get + 0x804B84CC: bIT_actor_shin_effect_entry + 0x804B8614: bIT_actor_shin_effect_check + 0x804B8650: bIT_actor_shin_effect_move + 0x804B87F8: bIT_actor_drop_move_plant_destruct + 0x804B8864: bIT_common_moneytree_check + 0x804B8920: bIT_common_bury_after + 0x804B8B10: bIT_common_hole_throw + 0x804B8CC0: bIT_actor_drop_move_fly_destruct + 0x804B8D8C: func_calc_spec_drop_time + 0x804B8DD4: bIT_actor_drop_entry_main + 0x804B905C: fruit_set + 0x804B9668: bIT_fruit_set + 0x804B9690: drop_fruit + 0x804B9880: BIT_actor_tree_cutcount_check + 0x804B9950: bg_item_tree_fruit_drop + 0x804B9ACC: bIT_actor_dig_hole_effect_entry + 0x804B9B94: bIT_actor_bury_hole_effect_entry + 0x804B9BE8: bIT_actor_hole_effect_entry + 0x804B9E34: bIT_actor_hole_effect_destruct + 0x804B9F20: bIT_actor_hole_effect_move + 0x804BA0F0: bIT_actor_hole_effect_draw + 0x804BA168: bIT_actor_player_drop_entry + 0x804BA34C: bIT_drop_entry_v1 + 0x804BA490: bIT_actor_fly_entry + 0x804BA6A8: bIT_actor_drop_entry + 0x804BA820: bIT_actor_drop_move + 0x804BA8F0: bIT_actor_drop_destruct + 0x804BA96C: bIT_actor_drop_move_plant + 0x804BABA4: bIT_actor_drop_move_bury_destruct + 0x804BABC4: bIT_actor_drop_move_bury + 0x804BAC10: bIT_actor_drop_move_bury_change + 0x804BAC90: bIT_actor_drop_wait_bee + 0x804BACFC: bIT_actor_drop_move_wait + 0x804BAD64: bIT_actor_drop_move_fly + 0x804BB2F4: bIT_actor_drop_draw + 0x804BB36C: bIT_actor_drop_draw_nrm + 0x804BB410: bit_cmn_s_single_draw_loop_type1 + 0x804BB4CC: bit_cmn_single_draw_loop_type1 + 0x804BB63C: bit_cmn_single_draw_item_shadow + 0x804BB750: bit_cmn_single_draw_BT_shadow + 0x804BB874: fg_no2fg_type + 0x804BBA38: bit_cmn_single_drawS_shadow + 0x804BBB10: bit_cmn_single_draw_item_body + 0x804BBBC8: bit_cmn_single_draw + 0x804BBC70: bit_cmn_single_draw_BT + 0x804BBE58: bit_cmn_single_drawS + 0x804BBF30: bIT_common_info_tbl_copy + 0x804BBF50: bIT_common_clear_treeatr + 0x804BC000: m_GetCItTable_TreeTblChk + 0x804BC308: bIT_actor_pit_entry + 0x804BC418: bIT_actor_pit_move + 0x804BC730: bIT_actor_pit_destruct + 0x804BC7B0: bg_item_common_chg_BGDataR_b + 0x804BC92C: bg_item_common_chg_BGDataR + 0x804BC9A4: bg_item_common_outPutData + 0x804BCA18: bg_item_common_classifyitemDataTable + 0x804BCD60: bg_item_common_set_draw_tbl + 0x804BCE00: bg_shin_effect_being_check + 0x804BCFB8: bg_item_common_chg_draw_tbl_perfect + 0x804BD2D0: bg_item_common_renew_draw_and_crs_data_perfect + 0x804BD354: bg_item_common_destruct + 0x804BD3B8: bg_item_common_culling_check + 0x804BD408: bg_item_common_culling_check_talk + 0x804BD474: bg_item_common_culling_check_loop + 0x804BD510: bg_item_common_culling_check_talk_loop + 0x804BD5AC: bg_item_common_check_talk_tree + 0x804BD604: bg_item_common_draw_check + 0x804BD6AC: bg_item_common_move + 0x804BD7CC: bIT_actor_pit_entry_del + 0x804BD838: bIT_actor_pit_fall + 0x804BD910: bIT_actor_pit_fall_stop + 0x804BD9DC: bIT_actor_pit_exit + 0x804BDA88: bg_item_common_draw_loop_type1 + 0x804BDB6C: bg_item_common_s_draw_loop_type1 + 0x804BDC50: bg_item_common_draw_item_body + 0x804BDCCC: bg_item_common_draw_item_shadow + 0x804BDDE8: bg_item_common_draw_item + 0x804BDF3C: bIT_actor_pit_draw_nrm + 0x804BDFA0: bIT_actor_pit_draw + 0x804BE020: bg_item_common_draw + 0x804BE1DC: bg_item_common_construct 0x80692C04: pos_table 0x80692C44: pos_table2 0x806937A0: typeData_table_dummy @@ -54100,110 +54100,110 @@ src/bg_item.c: 0x8069578C: rnd_data_z 0x80695B20: type_data_table_p_a src/bg_winter_item.c: - 0x804BECF1: bIT_copy_vtx - 0x804BED45: bIT_draw_shadow - 0x804BEEB9: bIT_clip_ct - 0x804BF01D: bIT_clip_dt - 0x804BF065: bit_draw_ta_set - 0x804BF0B5: bit_draw_ta_clr - 0x804BF101: bIT_individual_draw_check - 0x804BF13D: mFI_search_unit_around_high - 0x804BF29D: bIT_actor_fade_entry - 0x804BF3D1: bIT_actor_fade_move - 0x804BF41D: bIT_actor_fade_draw - 0x804BF4B5: bIT_actor_ten_coin_entryR - 0x804BF8A5: bIT_actor_ten_coin_entry - 0x804BF925: bg_item_ten_coin_entry_ex - 0x804BF969: bIT_actor_ten_coin_move - 0x804BFA91: bIT_actor_ten_coin_draw_af - 0x804BFAD5: bIT_actor_ten_coin_draw_bf - 0x804BFB35: bIT_actor_ten_coin_draw - 0x804BFD35: bIT_actor_ten_coin_destruct - 0x804BFDBD: bg_item_common_palload - 0x804BFE01: bIT_actor_rand_pos_get_blk_correct - 0x804BFE35: bIT_actor_rand_pos_get_plus - 0x804BFF15: bIT_actor_rand_pos_get - 0x804BFFC5: bIT_actor_shin_effect_entry - 0x804C010D: bIT_actor_shin_effect_check - 0x804C0149: bIT_actor_shin_effect_move - 0x804C02F1: bIT_actor_drop_move_plant_destruct - 0x804C035D: bIT_common_moneytree_check - 0x804C0419: bIT_common_bury_after - 0x804C0609: bIT_common_hole_throw - 0x804C07B9: bIT_actor_drop_move_fly_destruct - 0x804C0885: func_calc_spec_drop_time - 0x804C08CD: bIT_actor_drop_entry_main - 0x804C0B55: fruit_set - 0x804C1161: bIT_fruit_set - 0x804C1189: drop_fruit - 0x804C1379: BIT_actor_tree_cutcount_check - 0x804C1449: bg_item_tree_fruit_drop - 0x804C15C5: bIT_actor_dig_hole_effect_entry - 0x804C168D: bIT_actor_bury_hole_effect_entry - 0x804C16E1: bIT_actor_hole_effect_entry - 0x804C192D: bIT_actor_hole_effect_destruct - 0x804C1A19: bIT_actor_hole_effect_move - 0x804C1BE9: bIT_actor_hole_effect_draw - 0x804C1C61: bIT_actor_player_drop_entry - 0x804C1E45: bIT_drop_entry_v1 - 0x804C1F89: bIT_actor_fly_entry - 0x804C21A1: bIT_actor_drop_entry - 0x804C2319: bIT_actor_drop_move - 0x804C23E9: bIT_actor_drop_destruct - 0x804C2465: bIT_actor_drop_move_plant - 0x804C269D: bIT_actor_drop_move_bury_destruct - 0x804C26BD: bIT_actor_drop_move_bury - 0x804C2709: bIT_actor_drop_move_bury_change - 0x804C2789: bIT_actor_drop_wait_bee - 0x804C27F5: bIT_actor_drop_move_wait - 0x804C285D: bIT_actor_drop_move_fly - 0x804C2DED: bIT_actor_drop_draw - 0x804C2E65: bIT_actor_drop_draw_nrm - 0x804C2F09: bit_cmn_s_single_draw_loop_type1 - 0x804C2FC5: bit_cmn_single_draw_loop_type1 - 0x804C3135: bit_cmn_single_draw_item_shadow - 0x804C3249: bit_cmn_single_draw_BT_shadow - 0x804C336D: fg_no2fg_type - 0x804C3531: bit_cmn_single_drawS_shadow - 0x804C3609: bit_cmn_single_draw_item_body - 0x804C36C1: bit_cmn_single_draw - 0x804C3769: bit_cmn_single_draw_BT - 0x804C3951: bit_cmn_single_drawS - 0x804C3A29: bIT_common_info_tbl_copy - 0x804C3A49: bIT_common_clear_treeatr - 0x804C3AF9: m_GetCItTable_TreeTblChk - 0x804C3E01: bIT_actor_pit_entry - 0x804C3F11: bIT_actor_pit_move - 0x804C4229: bIT_actor_pit_destruct - 0x804C42A9: bg_item_common_chg_BGDataR_b - 0x804C4425: bg_item_common_chg_BGDataR - 0x804C449D: bg_item_common_outPutData - 0x804C4511: bg_item_common_classifyitemDataTable - 0x804C4859: bg_item_common_set_draw_tbl - 0x804C48F9: bg_shin_effect_being_check - 0x804C4AB1: bg_item_common_chg_draw_tbl_perfect - 0x804C4DC9: bg_item_common_renew_draw_and_crs_data_perfect - 0x804C4E4D: bg_item_common_destruct - 0x804C4EB1: bg_item_common_culling_check - 0x804C4F01: bg_item_common_culling_check_talk - 0x804C4F6D: bg_item_common_culling_check_loop - 0x804C5009: bg_item_common_culling_check_talk_loop - 0x804C50A5: bg_item_common_check_talk_tree - 0x804C50FD: bg_item_common_draw_check - 0x804C51A5: bg_item_common_move - 0x804C52C5: bIT_actor_pit_entry_del - 0x804C5331: bIT_actor_pit_fall - 0x804C5409: bIT_actor_pit_fall_stop - 0x804C54D5: bIT_actor_pit_exit - 0x804C5581: bg_item_common_draw_loop_type1 - 0x804C5665: bg_item_common_s_draw_loop_type1 - 0x804C5749: bg_item_common_draw_item_body - 0x804C57C5: bg_item_common_draw_item_shadow - 0x804C58E1: bg_item_common_draw_item - 0x804C5A35: bIT_actor_pit_draw_nrm - 0x804C5A99: bIT_actor_pit_draw - 0x804C5B19: bg_item_common_draw - 0x804C5CD5: bg_item_common_construct + 0x804BECF0: bIT_copy_vtx + 0x804BED44: bIT_draw_shadow + 0x804BEEB8: bIT_clip_ct + 0x804BF01C: bIT_clip_dt + 0x804BF064: bit_draw_ta_set + 0x804BF0B4: bit_draw_ta_clr + 0x804BF100: bIT_individual_draw_check + 0x804BF13C: mFI_search_unit_around_high + 0x804BF29C: bIT_actor_fade_entry + 0x804BF3D0: bIT_actor_fade_move + 0x804BF41C: bIT_actor_fade_draw + 0x804BF4B4: bIT_actor_ten_coin_entryR + 0x804BF8A4: bIT_actor_ten_coin_entry + 0x804BF924: bg_item_ten_coin_entry_ex + 0x804BF968: bIT_actor_ten_coin_move + 0x804BFA90: bIT_actor_ten_coin_draw_af + 0x804BFAD4: bIT_actor_ten_coin_draw_bf + 0x804BFB34: bIT_actor_ten_coin_draw + 0x804BFD34: bIT_actor_ten_coin_destruct + 0x804BFDBC: bg_item_common_palload + 0x804BFE00: bIT_actor_rand_pos_get_blk_correct + 0x804BFE34: bIT_actor_rand_pos_get_plus + 0x804BFF14: bIT_actor_rand_pos_get + 0x804BFFC4: bIT_actor_shin_effect_entry + 0x804C010C: bIT_actor_shin_effect_check + 0x804C0148: bIT_actor_shin_effect_move + 0x804C02F0: bIT_actor_drop_move_plant_destruct + 0x804C035C: bIT_common_moneytree_check + 0x804C0418: bIT_common_bury_after + 0x804C0608: bIT_common_hole_throw + 0x804C07B8: bIT_actor_drop_move_fly_destruct + 0x804C0884: func_calc_spec_drop_time + 0x804C08CC: bIT_actor_drop_entry_main + 0x804C0B54: fruit_set + 0x804C1160: bIT_fruit_set + 0x804C1188: drop_fruit + 0x804C1378: BIT_actor_tree_cutcount_check + 0x804C1448: bg_item_tree_fruit_drop + 0x804C15C4: bIT_actor_dig_hole_effect_entry + 0x804C168C: bIT_actor_bury_hole_effect_entry + 0x804C16E0: bIT_actor_hole_effect_entry + 0x804C192C: bIT_actor_hole_effect_destruct + 0x804C1A18: bIT_actor_hole_effect_move + 0x804C1BE8: bIT_actor_hole_effect_draw + 0x804C1C60: bIT_actor_player_drop_entry + 0x804C1E44: bIT_drop_entry_v1 + 0x804C1F88: bIT_actor_fly_entry + 0x804C21A0: bIT_actor_drop_entry + 0x804C2318: bIT_actor_drop_move + 0x804C23E8: bIT_actor_drop_destruct + 0x804C2464: bIT_actor_drop_move_plant + 0x804C269C: bIT_actor_drop_move_bury_destruct + 0x804C26BC: bIT_actor_drop_move_bury + 0x804C2708: bIT_actor_drop_move_bury_change + 0x804C2788: bIT_actor_drop_wait_bee + 0x804C27F4: bIT_actor_drop_move_wait + 0x804C285C: bIT_actor_drop_move_fly + 0x804C2DEC: bIT_actor_drop_draw + 0x804C2E64: bIT_actor_drop_draw_nrm + 0x804C2F08: bit_cmn_s_single_draw_loop_type1 + 0x804C2FC4: bit_cmn_single_draw_loop_type1 + 0x804C3134: bit_cmn_single_draw_item_shadow + 0x804C3248: bit_cmn_single_draw_BT_shadow + 0x804C336C: fg_no2fg_type + 0x804C3530: bit_cmn_single_drawS_shadow + 0x804C3608: bit_cmn_single_draw_item_body + 0x804C36C0: bit_cmn_single_draw + 0x804C3768: bit_cmn_single_draw_BT + 0x804C3950: bit_cmn_single_drawS + 0x804C3A28: bIT_common_info_tbl_copy + 0x804C3A48: bIT_common_clear_treeatr + 0x804C3AF8: m_GetCItTable_TreeTblChk + 0x804C3E00: bIT_actor_pit_entry + 0x804C3F10: bIT_actor_pit_move + 0x804C4228: bIT_actor_pit_destruct + 0x804C42A8: bg_item_common_chg_BGDataR_b + 0x804C4424: bg_item_common_chg_BGDataR + 0x804C449C: bg_item_common_outPutData + 0x804C4510: bg_item_common_classifyitemDataTable + 0x804C4858: bg_item_common_set_draw_tbl + 0x804C48F8: bg_shin_effect_being_check + 0x804C4AB0: bg_item_common_chg_draw_tbl_perfect + 0x804C4DC8: bg_item_common_renew_draw_and_crs_data_perfect + 0x804C4E4C: bg_item_common_destruct + 0x804C4EB0: bg_item_common_culling_check + 0x804C4F00: bg_item_common_culling_check_talk + 0x804C4F6C: bg_item_common_culling_check_loop + 0x804C5008: bg_item_common_culling_check_talk_loop + 0x804C50A4: bg_item_common_check_talk_tree + 0x804C50FC: bg_item_common_draw_check + 0x804C51A4: bg_item_common_move + 0x804C52C4: bIT_actor_pit_entry_del + 0x804C5330: bIT_actor_pit_fall + 0x804C5408: bIT_actor_pit_fall_stop + 0x804C54D4: bIT_actor_pit_exit + 0x804C5580: bg_item_common_draw_loop_type1 + 0x804C5664: bg_item_common_s_draw_loop_type1 + 0x804C5748: bg_item_common_draw_item_body + 0x804C57C4: bg_item_common_draw_item_shadow + 0x804C58E0: bg_item_common_draw_item + 0x804C5A34: bIT_actor_pit_draw_nrm + 0x804C5A98: bIT_actor_pit_draw + 0x804C5B18: bg_item_common_draw + 0x804C5CD4: bg_item_common_construct 0x80695DBC: pos_table 0x80695DFC: pos_table2 0x80696958: typeData_table_dummy @@ -54601,110 +54601,110 @@ src/bg_winter_item.c: 0x8069895C: rnd_data_z 0x80698CF8: type_data_table_p_a src/bg_xmas_item.c: - 0x804C6109: bIT_copy_vtx - 0x804C615D: bIT_draw_shadow - 0x804C62D1: bIT_clip_ct - 0x804C6435: bIT_clip_dt - 0x804C647D: bit_draw_ta_set - 0x804C64CD: bit_draw_ta_clr - 0x804C6519: bIT_individual_draw_check - 0x804C6555: mFI_search_unit_around_high - 0x804C66B5: bIT_actor_fade_entry - 0x804C67E9: bIT_actor_fade_move - 0x804C6835: bIT_actor_fade_draw - 0x804C68CD: bIT_actor_ten_coin_entryR - 0x804C6CBD: bIT_actor_ten_coin_entry - 0x804C6D3D: bg_item_ten_coin_entry_ex - 0x804C6D81: bIT_actor_ten_coin_move - 0x804C6EA9: bIT_actor_ten_coin_draw_af - 0x804C6EED: bIT_actor_ten_coin_draw_bf - 0x804C6F4D: bIT_actor_ten_coin_draw - 0x804C714D: bIT_actor_ten_coin_destruct - 0x804C71D5: bg_item_common_palload - 0x804C7219: bIT_actor_rand_pos_get_blk_correct - 0x804C724D: bIT_actor_rand_pos_get_plus - 0x804C732D: bIT_actor_rand_pos_get - 0x804C73DD: bIT_actor_shin_effect_entry - 0x804C7525: bIT_actor_shin_effect_check - 0x804C7561: bIT_actor_shin_effect_move - 0x804C7709: bIT_actor_drop_move_plant_destruct - 0x804C7775: bIT_common_moneytree_check - 0x804C7831: bIT_common_bury_after - 0x804C7A21: bIT_common_hole_throw - 0x804C7BD1: bIT_actor_drop_move_fly_destruct - 0x804C7C9D: func_calc_spec_drop_time - 0x804C7CE5: bIT_actor_drop_entry_main - 0x804C7F6D: fruit_set - 0x804C8579: bIT_fruit_set - 0x804C85A1: drop_fruit - 0x804C8791: BIT_actor_tree_cutcount_check - 0x804C8861: bg_item_tree_fruit_drop - 0x804C89DD: bIT_actor_dig_hole_effect_entry - 0x804C8AA5: bIT_actor_bury_hole_effect_entry - 0x804C8AF9: bIT_actor_hole_effect_entry - 0x804C8D45: bIT_actor_hole_effect_destruct - 0x804C8E31: bIT_actor_hole_effect_move - 0x804C9001: bIT_actor_hole_effect_draw - 0x804C9079: bIT_actor_player_drop_entry - 0x804C925D: bIT_drop_entry_v1 - 0x804C93A1: bIT_actor_fly_entry - 0x804C95B9: bIT_actor_drop_entry - 0x804C9731: bIT_actor_drop_move - 0x804C9801: bIT_actor_drop_destruct - 0x804C987D: bIT_actor_drop_move_plant - 0x804C9AB5: bIT_actor_drop_move_bury_destruct - 0x804C9AD5: bIT_actor_drop_move_bury - 0x804C9B21: bIT_actor_drop_move_bury_change - 0x804C9BA1: bIT_actor_drop_wait_bee - 0x804C9C0D: bIT_actor_drop_move_wait - 0x804C9C75: bIT_actor_drop_move_fly - 0x804CA205: bIT_actor_drop_draw - 0x804CA27D: bIT_actor_drop_draw_nrm - 0x804CA321: bit_cmn_s_single_draw_loop_type1 - 0x804CA3DD: bit_cmn_single_draw_loop_type1 - 0x804CA54D: bit_cmn_single_draw_item_shadow - 0x804CA661: bit_cmn_single_draw_BT_shadow - 0x804CA785: fg_no2fg_type - 0x804CA949: bit_cmn_single_drawS_shadow - 0x804CAA21: bit_cmn_single_draw_item_body - 0x804CAAD9: bit_cmn_single_draw - 0x804CAB81: bit_cmn_single_draw_BT - 0x804CAD69: bit_cmn_single_drawS - 0x804CAE41: bIT_common_info_tbl_copy - 0x804CAE61: bIT_common_clear_treeatr - 0x804CAF11: m_GetCItTable_TreeTblChk - 0x804CB219: bIT_actor_pit_entry - 0x804CB329: bIT_actor_pit_move - 0x804CB641: bIT_actor_pit_destruct - 0x804CB6C1: bg_item_common_chg_BGDataR_b - 0x804CB83D: bg_item_common_chg_BGDataR - 0x804CB8B5: bg_item_common_outPutData - 0x804CB929: bg_item_common_classifyitemDataTable - 0x804CBC71: bg_item_common_set_draw_tbl - 0x804CBD11: bg_shin_effect_being_check - 0x804CBEC9: bg_item_common_chg_draw_tbl_perfect - 0x804CC1E1: bg_item_common_renew_draw_and_crs_data_perfect - 0x804CC265: bg_item_common_destruct - 0x804CC2C9: bg_item_common_culling_check - 0x804CC319: bg_item_common_culling_check_talk - 0x804CC385: bg_item_common_culling_check_loop - 0x804CC421: bg_item_common_culling_check_talk_loop - 0x804CC4BD: bg_item_common_check_talk_tree - 0x804CC515: bg_item_common_draw_check - 0x804CC5BD: bg_item_common_move - 0x804CC6DD: bIT_actor_pit_entry_del - 0x804CC749: bIT_actor_pit_fall - 0x804CC821: bIT_actor_pit_fall_stop - 0x804CC8ED: bIT_actor_pit_exit - 0x804CC999: bg_item_common_draw_loop_type1 - 0x804CCA7D: bg_item_common_s_draw_loop_type1 - 0x804CCB61: bg_item_common_draw_item_body - 0x804CCBDD: bg_item_common_draw_item_shadow - 0x804CCCF9: bg_item_common_draw_item - 0x804CCE4D: bIT_actor_pit_draw_nrm - 0x804CCEB1: bIT_actor_pit_draw - 0x804CCF31: bg_item_common_draw - 0x804CD0ED: bg_item_common_construct + 0x804C6108: bIT_copy_vtx + 0x804C615C: bIT_draw_shadow + 0x804C62D0: bIT_clip_ct + 0x804C6434: bIT_clip_dt + 0x804C647C: bit_draw_ta_set + 0x804C64CC: bit_draw_ta_clr + 0x804C6518: bIT_individual_draw_check + 0x804C6554: mFI_search_unit_around_high + 0x804C66B4: bIT_actor_fade_entry + 0x804C67E8: bIT_actor_fade_move + 0x804C6834: bIT_actor_fade_draw + 0x804C68CC: bIT_actor_ten_coin_entryR + 0x804C6CBC: bIT_actor_ten_coin_entry + 0x804C6D3C: bg_item_ten_coin_entry_ex + 0x804C6D80: bIT_actor_ten_coin_move + 0x804C6EA8: bIT_actor_ten_coin_draw_af + 0x804C6EEC: bIT_actor_ten_coin_draw_bf + 0x804C6F4C: bIT_actor_ten_coin_draw + 0x804C714C: bIT_actor_ten_coin_destruct + 0x804C71D4: bg_item_common_palload + 0x804C7218: bIT_actor_rand_pos_get_blk_correct + 0x804C724C: bIT_actor_rand_pos_get_plus + 0x804C732C: bIT_actor_rand_pos_get + 0x804C73DC: bIT_actor_shin_effect_entry + 0x804C7524: bIT_actor_shin_effect_check + 0x804C7560: bIT_actor_shin_effect_move + 0x804C7708: bIT_actor_drop_move_plant_destruct + 0x804C7774: bIT_common_moneytree_check + 0x804C7830: bIT_common_bury_after + 0x804C7A20: bIT_common_hole_throw + 0x804C7BD0: bIT_actor_drop_move_fly_destruct + 0x804C7C9C: func_calc_spec_drop_time + 0x804C7CE4: bIT_actor_drop_entry_main + 0x804C7F6C: fruit_set + 0x804C8578: bIT_fruit_set + 0x804C85A0: drop_fruit + 0x804C8790: BIT_actor_tree_cutcount_check + 0x804C8860: bg_item_tree_fruit_drop + 0x804C89DC: bIT_actor_dig_hole_effect_entry + 0x804C8AA4: bIT_actor_bury_hole_effect_entry + 0x804C8AF8: bIT_actor_hole_effect_entry + 0x804C8D44: bIT_actor_hole_effect_destruct + 0x804C8E30: bIT_actor_hole_effect_move + 0x804C9000: bIT_actor_hole_effect_draw + 0x804C9078: bIT_actor_player_drop_entry + 0x804C925C: bIT_drop_entry_v1 + 0x804C93A0: bIT_actor_fly_entry + 0x804C95B8: bIT_actor_drop_entry + 0x804C9730: bIT_actor_drop_move + 0x804C9800: bIT_actor_drop_destruct + 0x804C987C: bIT_actor_drop_move_plant + 0x804C9AB4: bIT_actor_drop_move_bury_destruct + 0x804C9AD4: bIT_actor_drop_move_bury + 0x804C9B20: bIT_actor_drop_move_bury_change + 0x804C9BA0: bIT_actor_drop_wait_bee + 0x804C9C0C: bIT_actor_drop_move_wait + 0x804C9C74: bIT_actor_drop_move_fly + 0x804CA204: bIT_actor_drop_draw + 0x804CA27C: bIT_actor_drop_draw_nrm + 0x804CA320: bit_cmn_s_single_draw_loop_type1 + 0x804CA3DC: bit_cmn_single_draw_loop_type1 + 0x804CA54C: bit_cmn_single_draw_item_shadow + 0x804CA660: bit_cmn_single_draw_BT_shadow + 0x804CA784: fg_no2fg_type + 0x804CA948: bit_cmn_single_drawS_shadow + 0x804CAA20: bit_cmn_single_draw_item_body + 0x804CAAD8: bit_cmn_single_draw + 0x804CAB80: bit_cmn_single_draw_BT + 0x804CAD68: bit_cmn_single_drawS + 0x804CAE40: bIT_common_info_tbl_copy + 0x804CAE60: bIT_common_clear_treeatr + 0x804CAF10: m_GetCItTable_TreeTblChk + 0x804CB218: bIT_actor_pit_entry + 0x804CB328: bIT_actor_pit_move + 0x804CB640: bIT_actor_pit_destruct + 0x804CB6C0: bg_item_common_chg_BGDataR_b + 0x804CB83C: bg_item_common_chg_BGDataR + 0x804CB8B4: bg_item_common_outPutData + 0x804CB928: bg_item_common_classifyitemDataTable + 0x804CBC70: bg_item_common_set_draw_tbl + 0x804CBD10: bg_shin_effect_being_check + 0x804CBEC8: bg_item_common_chg_draw_tbl_perfect + 0x804CC1E0: bg_item_common_renew_draw_and_crs_data_perfect + 0x804CC264: bg_item_common_destruct + 0x804CC2C8: bg_item_common_culling_check + 0x804CC318: bg_item_common_culling_check_talk + 0x804CC384: bg_item_common_culling_check_loop + 0x804CC420: bg_item_common_culling_check_talk_loop + 0x804CC4BC: bg_item_common_check_talk_tree + 0x804CC514: bg_item_common_draw_check + 0x804CC5BC: bg_item_common_move + 0x804CC6DC: bIT_actor_pit_entry_del + 0x804CC748: bIT_actor_pit_fall + 0x804CC820: bIT_actor_pit_fall_stop + 0x804CC8EC: bIT_actor_pit_exit + 0x804CC998: bg_item_common_draw_loop_type1 + 0x804CCA7C: bg_item_common_s_draw_loop_type1 + 0x804CCB60: bg_item_common_draw_item_body + 0x804CCBDC: bg_item_common_draw_item_shadow + 0x804CCCF8: bg_item_common_draw_item + 0x804CCE4C: bIT_actor_pit_draw_nrm + 0x804CCEB0: bIT_actor_pit_draw + 0x804CCF30: bg_item_common_draw + 0x804CD0EC: bg_item_common_construct 0x80698D34: pos_table 0x80698D74: pos_table2 0x806998D0: typeData_table_dummy @@ -55102,305 +55102,305 @@ src/bg_xmas_item.c: 0x8069B95C: rnd_data_z 0x8069BCF4: type_data_table_p_a src/m_all_grow.c: - 0x80373BD9: mAGrw_ChangeItemBlock2 + 0x80373BD8: mAGrw_ChangeItemBlock2 src/m_all_grow_ovl.c: - 0x80510F99: mAGrw_ChangeItemBlock2 + 0x80510F98: mAGrw_ChangeItemBlock2 src/ac_ev_ghost.c: - 0x8051FED9: aEGH_change_talk_proc + 0x8051FED8: aEGH_change_talk_proc 0x806A07E0: umbrella_list 0x806A08D4: dt_tbl 0x806A08F8: proc_table 0x806A090C: init_table src/ac_ev_soncho.c: - 0x8052438D: aEGH_change_talk_proc + 0x8052438C: aEGH_change_talk_proc src/ac_hatumode_control.c: - 0x80429581: aHN0_set_request_act + 0x80429580: aHN0_set_request_act 0x80683F5C: dt_tbl 0x80684044: init_table src/ac_hanabi_npc0.c: - 0x80528515: aHN0_actor_ct - 0x80528599: aHN0_actor_save - 0x805285D1: aHN0_actor_dt - 0x80528609: aHN0_actor_init - 0x80528641: aHN0_actor_move - 0x80528679: aHN0_actor_draw - 0x80528709: aHN0_set_request_act - 0x80528C29: aHN0_think_main_proc - 0x80528D59: aHN0_think_init_proc - 0x80528D95: aHN0_think_proc - 0x80528DC9: aHN0_schedule_init_proc - 0x80528E7D: aHN0_schedule_main_proc - 0x80528F09: aHN0_schedule_proc - 0x80528FCD: aHN0_talk_init - 0x80528FF1: aHN0_talk_end_chk + 0x80528514: aHN0_actor_ct + 0x80528598: aHN0_actor_save + 0x805285D0: aHN0_actor_dt + 0x80528608: aHN0_actor_init + 0x80528640: aHN0_actor_move + 0x80528678: aHN0_actor_draw + 0x80528708: aHN0_set_request_act + 0x80528C28: aHN0_think_main_proc + 0x80528D58: aHN0_think_init_proc + 0x80528D94: aHN0_think_proc + 0x80528DC8: aHN0_schedule_init_proc + 0x80528E7C: aHN0_schedule_main_proc + 0x80528F08: aHN0_schedule_proc + 0x80528FCC: aHN0_talk_init + 0x80528FF0: aHN0_talk_end_chk src/ac_hatumode_npc0.c: - 0x8052AB55: aHN0_actor_ct - 0x8052AC71: aHN0_actor_save - 0x8052AC91: aHN0_actor_dt - 0x8052AD15: aHN0_actor_init - 0x8052AD4D: aHN0_actor_move - 0x8052AE09: aHN0_actor_draw - 0x8052B025: aHN0_talk_init - 0x8052B069: aHN0_talk_end_chk - 0x8052BA4D: aHN0_think_main_proc - 0x8052BAE9: aHN0_think_init_proc - 0x8052BBB5: aHN0_think_proc - 0x8052BBF5: aHN0_schedule_init_proc - 0x8052BC41: aHN0_schedule_main_proc - 0x8052BCF9: aHN0_schedule_proc + 0x8052AB54: aHN0_actor_ct + 0x8052AC70: aHN0_actor_save + 0x8052AC90: aHN0_actor_dt + 0x8052AD14: aHN0_actor_init + 0x8052AD4C: aHN0_actor_move + 0x8052AE08: aHN0_actor_draw + 0x8052B024: aHN0_talk_init + 0x8052B068: aHN0_talk_end_chk + 0x8052BA4C: aHN0_think_main_proc + 0x8052BAE8: aHN0_think_init_proc + 0x8052BBB4: aHN0_think_proc + 0x8052BBF4: aHN0_schedule_init_proc + 0x8052BC40: aHN0_schedule_main_proc + 0x8052BCF8: aHN0_schedule_proc 0x806A1428: proc_table src/ac_npc.c: - 0x8052C131: aNPC_dma_cloth_data - 0x8052C1ED: aNPC_getP_cloth_tex_rom - 0x8052C251: aNPC_getP_cloth_pal_rom - 0x8052C2B5: aNPC_dma_cloth_tex_data_fg - 0x8052C2F9: aNPC_dma_cloth_pal_data_fg - 0x8052C33D: aNPC_dma_cloth_data_fg - 0x8052C3E5: aNPC_reset_trans_condition_cloth_data - 0x8052C43D: aNPC_get_same_cloth_data_area - 0x8052C475: aNPC_dma_cloth_data_check - 0x8052C501: aNPC_get_new_cloth_data_area - 0x8052C541: aNPC_get_no_use_cloth_data_area - 0x8052C599: aNPC_cancel_cloth_data - 0x8052C5D1: aNPC_dma_regist_cloth_data - 0x8052C6A5: aNPC_dma_regist_check_cloth_data - 0x8052C701: aNPC_keep_cloth_data_area - 0x8052C7ED: aNPC_rebuild_cloth_data - 0x8052C811: aNPC_change_cloth_data - 0x8052C8F9: aNPC_setup_chg_cloth - 0x8052C905: aNPC_setup_next_cloth - 0x8052C911: aNPC_setup_cloth - 0x8052C929: aNPC_get_feel_info - 0x8052C951: aNPC_clear_all_morph_counter - 0x8052C969: aNPC_check_talk_anime - 0x8052CA0D: aNPC_set_anime_se_info - 0x8052CAF9: aNPC_Animation_init - 0x8052CDF1: aNPC_check_anime_timing - 0x8052CEA5: aNPC_anime_proc_foot - 0x8052D005: aNPC_anime_proc_other - 0x8052D051: aNPC_anime_se_proc - 0x8052D0D9: aNPC_anime_proc - 0x8052D1AD: aNPC_check_kutipaku - 0x8052D23D: aNPC_getP_anmData - 0x8052D269: aNPC_get_seq_cnt - 0x8052D289: aNPC_set_tex_anime - 0x8052D389: aNPC_tex_anm_ctrl_stop_seq - 0x8052D3B5: aNPC_tex_anm_ctrl_set_pat - 0x8052D429: aNPC_tex_anm_ctrl_rnd_seq - 0x8052D57D: aNPC_tex_anm_ctrl_talk_seq - 0x8052D6B1: aNPC_tex_anm_ctrl_fix_seq - 0x8052D6C9: aNPC_tex_anm_ctrl - 0x8052D845: aNPC_set_frame_sub_speed - 0x8052D881: aNPC_set_anime_speed - 0x8052D8AD: aNPC_OngenTrgStart - 0x8052DA61: aNPC_putaway_right_item - 0x8052DAFD: aNPC_takeout_right_item - 0x8052DC4D: aNPC_chk_right_hand - 0x8052DCE5: aNPC_clear_left_hand_info - 0x8052DD01: aNPC_chk_left_hand - 0x8052DDED: aNPC_check_look_range - 0x8052DE6D: aNPC_check_look_player - 0x8052DEED: aNPC_check_attention - 0x8052DFD5: aNPC_look_target - 0x8052E0CD: aNPC_check_condition_search_eye - 0x8052E0F9: aNPC_search_eye_target_sub - 0x8052E1BD: aNPC_search_eye_target - 0x8052E2C1: aNPC_set_head_request_sub - 0x8052E30D: aNPC_set_head_request - 0x8052E381: aNPC_force_call_req_proc - 0x8052E40D: aNPC_check_manpu_demoCode - 0x8052E545: aNPC_clear_timing_demoCode - 0x8052E5BD: aNPC_check_timing_demoCode - 0x8052E761: aNPC_check_feel_demoCode - 0x8052E855: aNPC_setup_talk_start - 0x8052E8D5: aNPC_setup_talk_end - 0x8052E925: aNPC_set_talk_info_talk_request_check - 0x8052E9CD: aNPC_talk_request_event_npc - 0x8052EAA1: aNPC_normal_talk_request - 0x8052EB21: aNPC_set_talk_info_force_call - 0x8052EB71: aNPC_force_talk_request - 0x8052EC61: aNPC_talk_request_normal_npc - 0x8052ED41: aNPC_talk_request_check - 0x8052EE01: aNPC_BGcheck - 0x8052F669: aNPC_set_over_friendship - 0x8052F8CD: aNPC_set_mv_angl - 0x8052F915: aNPC_set_avoid_pos - 0x8052F941: aNPC_set_dst_pos - 0x8052F975: aNPC_check_feel_tim - 0x8052F9D5: aNPC_calc_force_call_timer - 0x8052FA35: aNPC_calc_timer - 0x8052FA71: aNPC_position_move - 0x8052FAF5: aNPC_angle_calc - 0x8052FB35: aNPC_set_body_angle - 0x8052FD35: aNPC_calc_fatigue - 0x8052FE15: aNPC_setupAction - 0x8052FEAD: aNPC_actor_move_hide - 0x8052FEF9: aNPC_actor_move_show_before - 0x8052FF59: aNPC_actor_move_show_after - 0x8052FFDD: aNPC_actor_move_show - 0x80530091: aNPC_actor_move - 0x805300E1: aNPC_check_mask_cat_type - 0x80530139: aNPC_set_shadow_pos - 0x805301B1: aNPC_set_chn_base - 0x8053027D: aNPC_set_head_angl - 0x805302E9: aNPC_actor_draw_before - 0x8053032D: aNPC_set_right_hand_item - 0x805303C9: aNPC_set_left_hand_item - 0x80530451: aNPC_set_foot_eff - 0x80530489: aNPC_set_feel_eff - 0x805304BD: aNPC_set_accessory_mtx - 0x80530551: aNPC_actor_draw_after - 0x805305B1: aNPC_actor_draw_sub - 0x805308BD: aNPC_actor_draw - 0x805308FD: aNPC_set_eff - 0x80530999: aNPC_set_feel_effect - 0x80530B1D: aNPC_set_other_effect - 0x80530C75: aNPC_check_arrive_destination - 0x80530DB5: aNPC_set_feel_info - 0x80530E11: aNPC_set_act_obj - 0x80530F29: aNPC_check_live_target - 0x80530F59: aNPC_act_wait - 0x80530F99: aNPC_act_move - 0x80530FE9: aNPC_act_search_move - 0x80531149: aNPC_act_avoid_move - 0x80531325: aNPC_act_to_point_move - 0x805313FD: aNPC_act_turn - 0x8053141D: aNPC_act_search_turn - 0x80531495: aNPC_act_to_point_turn - 0x80531525: aNPC_act_anm_seq - 0x8053153D: aNPC_act_return_trans_item - 0x805315C1: aNPC_act_special_proc - 0x805315E9: aNPC_chk_request_act - 0x805316E5: aNPC_set_request_act - 0x80531741: aNPC_action_proc - 0x805317C9: aNPC_act_wait_main_proc - 0x80531841: aNPC_act_wait_chg_data_proc - 0x80531895: aNPC_act_wait_init_proc - 0x805318ED: aNPC_act_wait_proc - 0x80531921: aNPC_act_walk_setupAction - 0x80531975: aNPC_act_walk_main_proc - 0x805319F5: aNPC_act_walk_chg_data_proc - 0x80531A59: aNPC_act_walk_init_proc - 0x80531AD5: aNPC_act_walk_proc - 0x80531B09: aNPC_act_turn_main_proc - 0x80531B5D: aNPC_act_turn_chg_data_proc - 0x80531BC1: aNPC_act_turn_init_proc - 0x80531CA5: aNPC_act_turn_proc - 0x805331C1: aNPC_Init_OrderValue - 0x8053321D: aNPC_talk_demo_proc - 0x80533259: aNPC_talk_end_check - 0x805332DD: aNPC_act_talk_chg_step - 0x80533311: aNPC_act_talk_turn - 0x80533351: aNPC_act_talk_wait - 0x80533431: aNPC_act_talk - 0x80533489: aNPC_act_talk_main_proc - 0x805334C1: aNPC_act_talk_init_proc - 0x8053356D: aNPC_act_talk_proc - 0x80533DED: aNPC_act_trans_chg_step - 0x80533EC9: aNPC_act_trans_set_arg_data - 0x80533EED: aNPC_act_trans_move - 0x80533F65: aNPC_act_trans - 0x80533FD1: aNPC_act_trans_wait - 0x80534029: aNPC_act_trans_send_mail - 0x8053409D: aNPC_act_trans_main_proc - 0x80534125: aNPC_act_trans_chg_data_proc - 0x80534131: aNPC_act_trans_init_proc - 0x805341B5: aNPC_act_trans_proc - 0x805341E9: aNPC_act_get_chg_step - 0x80534369: aNPC_act_get_move - 0x805343D9: aNPC_act_get - 0x8053446D: aNPC_act_get_pull - 0x805344E9: aNPC_act_get_pull_wait - 0x805345F5: aNPC_act_get_putaway - 0x80534635: aNPC_act_get_chg_cloth - 0x80534915: aNPC_act_get_return - 0x80534989: aNPC_act_estimate - 0x805349E9: aNPC_act_get_main_proc - 0x80534A71: aNPC_act_get_chg_data_proc - 0x80534A7D: aNPC_act_get_init_proc - 0x80534AFD: aNPC_act_get_proc - 0x80534B31: aNPC_act_ensou_main_proc - 0x80534B55: aNPC_act_ensou_init_proc - 0x80534B89: aNPC_act_ensou_proc - 0x80535255: aNPC_check_uzai_cross - 0x8053533D: aNPC_check_uzai - 0x80535B2D: aNPC_avoid_obstacle - 0x80535C59: aNPC_chk_talk_start - 0x805360A1: aNPC_check_fatigue - 0x805361A9: aNPC_hate_player - 0x80536255: aNPC_love_player - 0x805363D5: aNPC_chk_friendship_lv - 0x8053644D: aNPC_chk_friendship_sub - 0x805364D9: aNPC_chk_friendship - 0x805365BD: aNPC_think_chk_interrupt_proc - 0x805368A1: aNPC_think_wait_init_proc - 0x805368D5: aNPC_think_wait_proc - 0x805368FD: aNPC_think_special_proc - 0x80536925: aNPC_think_init_proc - 0x80536981: aNPC_think_main_proc - 0x805369BD: aNPC_think_proc - 0x80536D2D: aNPC_think_wander_decide_next - 0x80536F79: aNPC_think_wander_next_act - 0x80536FA5: aNPC_think_wander_main_proc - 0x80536FE1: aNPC_think_wander_init_proc - 0x80537105: aNPC_think_wander_proc - 0x80537D79: aNPC_set_hide_request - 0x80537DC9: aNPC_set_hide_flg - 0x80537E8D: aNPC_stand_schedule_main_proc - 0x80537F0D: aNPC_stand_schedule_init_proc - 0x80537F61: aNPC_stand_schedule_proc - 0x80537F95: aNPC_wander_schedule_main_proc - 0x80537FE9: aNPC_wander_schedule_init_proc - 0x80538035: aNPC_wander_schedule_proc - 0x805380E9: aNPC_special_schedule_proc - 0x80538111: aNPC_schedule_init - 0x805381AD: aNPC_chg_schedule - 0x805381D1: aNPC_set_schedule - 0x805381F9: aNPC_schedule_proc - 0x8053829D: aNPC_first_set_schedule - 0x80538319: aNPC_field_schedule_think_init - 0x80538379: aNPC_field_schedule_main_proc - 0x80538451: aNPC_field_schedule_init_proc - 0x805384B9: aNPC_field_schedule_proc - 0x805384ED: aNPC_in_house_schedule_think_init - 0x80538521: aNPC_in_house_schedule_main_proc - 0x80538631: aNPC_in_house_schedule_init_proc - 0x805386D9: aNPC_in_house_schedule_proc - 0x805387B1: aNPC_sleep_schedule_main_proc - 0x80538879: aNPC_sleep_schedule_init_proc - 0x805388E5: aNPC_sleep_schedule_proc - 0x80538919: aNPC_actor_init_common_proc - 0x8053898D: aNPC_actor_init_for_normal - 0x805389F1: aNPC_actor_init_for_special - 0x80538B25: aNPC_actor_init - 0x80538B6D: aNPC_make_accessory - 0x80538C01: aNPC_setP_friendship - 0x80538CB1: aNPC_set_start_pos - 0x80538CE1: aNPC_actor_schedule - 0x80538D95: aNPC_actor_ct - 0x80539301: aNPC_actor_dt - 0x8053941D: aNPC_actor_save_for_normal - 0x8053953D: aNPC_actor_save_for_special - 0x80539595: aNPC_actor_save - 0x80539619: aNPC_actor_birth_check - 0x8053972D: aNPC_rebuild_dma - 0x8053974D: aNPC_set_attention_request_proc - 0x80539795: aNPC_get_draw_data_idx - 0x8053986D: aNPC_check_dma_cloth_data - 0x80539905: aNPC_check_dma_cloth_data_sub - 0x80539955: aNPC_check_dma_eventNpc_cloth_data - 0x805399C5: aNPC_check_dma_maskNpc_cloth_data - 0x805399FD: aNPC_setupNpc_check - 0x80539A8D: aNPC_setupActor_sub - 0x80539B45: aNPC_setupActor_proc - 0x8053A13D: aNPC_free_actor_area_proc - 0x8053A185: aNPC_dma_draw_data_proc - 0x8053A355: aNPC_actor_ct_c - 0x8053A6FD: aNPC_actor_dt_c - 0x8053A785: aNPC_check_cond_to_greeting - 0x8053A805: aNPC_greeting_area_check - 0x8053A945: aNPC_set_attention - 0x8053AAB1: aNPC_actor_move_c + 0x8052C130: aNPC_dma_cloth_data + 0x8052C1EC: aNPC_getP_cloth_tex_rom + 0x8052C250: aNPC_getP_cloth_pal_rom + 0x8052C2B4: aNPC_dma_cloth_tex_data_fg + 0x8052C2F8: aNPC_dma_cloth_pal_data_fg + 0x8052C33C: aNPC_dma_cloth_data_fg + 0x8052C3E4: aNPC_reset_trans_condition_cloth_data + 0x8052C43C: aNPC_get_same_cloth_data_area + 0x8052C474: aNPC_dma_cloth_data_check + 0x8052C500: aNPC_get_new_cloth_data_area + 0x8052C540: aNPC_get_no_use_cloth_data_area + 0x8052C598: aNPC_cancel_cloth_data + 0x8052C5D0: aNPC_dma_regist_cloth_data + 0x8052C6A4: aNPC_dma_regist_check_cloth_data + 0x8052C700: aNPC_keep_cloth_data_area + 0x8052C7EC: aNPC_rebuild_cloth_data + 0x8052C810: aNPC_change_cloth_data + 0x8052C8F8: aNPC_setup_chg_cloth + 0x8052C904: aNPC_setup_next_cloth + 0x8052C910: aNPC_setup_cloth + 0x8052C928: aNPC_get_feel_info + 0x8052C950: aNPC_clear_all_morph_counter + 0x8052C968: aNPC_check_talk_anime + 0x8052CA0C: aNPC_set_anime_se_info + 0x8052CAF8: aNPC_Animation_init + 0x8052CDF0: aNPC_check_anime_timing + 0x8052CEA4: aNPC_anime_proc_foot + 0x8052D004: aNPC_anime_proc_other + 0x8052D050: aNPC_anime_se_proc + 0x8052D0D8: aNPC_anime_proc + 0x8052D1AC: aNPC_check_kutipaku + 0x8052D23C: aNPC_getP_anmData + 0x8052D268: aNPC_get_seq_cnt + 0x8052D288: aNPC_set_tex_anime + 0x8052D388: aNPC_tex_anm_ctrl_stop_seq + 0x8052D3B4: aNPC_tex_anm_ctrl_set_pat + 0x8052D428: aNPC_tex_anm_ctrl_rnd_seq + 0x8052D57C: aNPC_tex_anm_ctrl_talk_seq + 0x8052D6B0: aNPC_tex_anm_ctrl_fix_seq + 0x8052D6C8: aNPC_tex_anm_ctrl + 0x8052D844: aNPC_set_frame_sub_speed + 0x8052D880: aNPC_set_anime_speed + 0x8052D8AC: aNPC_OngenTrgStart + 0x8052DA60: aNPC_putaway_right_item + 0x8052DAFC: aNPC_takeout_right_item + 0x8052DC4C: aNPC_chk_right_hand + 0x8052DCE4: aNPC_clear_left_hand_info + 0x8052DD00: aNPC_chk_left_hand + 0x8052DDEC: aNPC_check_look_range + 0x8052DE6C: aNPC_check_look_player + 0x8052DEEC: aNPC_check_attention + 0x8052DFD4: aNPC_look_target + 0x8052E0CC: aNPC_check_condition_search_eye + 0x8052E0F8: aNPC_search_eye_target_sub + 0x8052E1BC: aNPC_search_eye_target + 0x8052E2C0: aNPC_set_head_request_sub + 0x8052E30C: aNPC_set_head_request + 0x8052E380: aNPC_force_call_req_proc + 0x8052E40C: aNPC_check_manpu_demoCode + 0x8052E544: aNPC_clear_timing_demoCode + 0x8052E5BC: aNPC_check_timing_demoCode + 0x8052E760: aNPC_check_feel_demoCode + 0x8052E854: aNPC_setup_talk_start + 0x8052E8D4: aNPC_setup_talk_end + 0x8052E924: aNPC_set_talk_info_talk_request_check + 0x8052E9CC: aNPC_talk_request_event_npc + 0x8052EAA0: aNPC_normal_talk_request + 0x8052EB20: aNPC_set_talk_info_force_call + 0x8052EB70: aNPC_force_talk_request + 0x8052EC60: aNPC_talk_request_normal_npc + 0x8052ED40: aNPC_talk_request_check + 0x8052EE00: aNPC_BGcheck + 0x8052F668: aNPC_set_over_friendship + 0x8052F8CC: aNPC_set_mv_angl + 0x8052F914: aNPC_set_avoid_pos + 0x8052F940: aNPC_set_dst_pos + 0x8052F974: aNPC_check_feel_tim + 0x8052F9D4: aNPC_calc_force_call_timer + 0x8052FA34: aNPC_calc_timer + 0x8052FA70: aNPC_position_move + 0x8052FAF4: aNPC_angle_calc + 0x8052FB34: aNPC_set_body_angle + 0x8052FD34: aNPC_calc_fatigue + 0x8052FE14: aNPC_setupAction + 0x8052FEAC: aNPC_actor_move_hide + 0x8052FEF8: aNPC_actor_move_show_before + 0x8052FF58: aNPC_actor_move_show_after + 0x8052FFDC: aNPC_actor_move_show + 0x80530090: aNPC_actor_move + 0x805300E0: aNPC_check_mask_cat_type + 0x80530138: aNPC_set_shadow_pos + 0x805301B0: aNPC_set_chn_base + 0x8053027C: aNPC_set_head_angl + 0x805302E8: aNPC_actor_draw_before + 0x8053032C: aNPC_set_right_hand_item + 0x805303C8: aNPC_set_left_hand_item + 0x80530450: aNPC_set_foot_eff + 0x80530488: aNPC_set_feel_eff + 0x805304BC: aNPC_set_accessory_mtx + 0x80530550: aNPC_actor_draw_after + 0x805305B0: aNPC_actor_draw_sub + 0x805308BC: aNPC_actor_draw + 0x805308FC: aNPC_set_eff + 0x80530998: aNPC_set_feel_effect + 0x80530B1C: aNPC_set_other_effect + 0x80530C74: aNPC_check_arrive_destination + 0x80530DB4: aNPC_set_feel_info + 0x80530E10: aNPC_set_act_obj + 0x80530F28: aNPC_check_live_target + 0x80530F58: aNPC_act_wait + 0x80530F98: aNPC_act_move + 0x80530FE8: aNPC_act_search_move + 0x80531148: aNPC_act_avoid_move + 0x80531324: aNPC_act_to_point_move + 0x805313FC: aNPC_act_turn + 0x8053141C: aNPC_act_search_turn + 0x80531494: aNPC_act_to_point_turn + 0x80531524: aNPC_act_anm_seq + 0x8053153C: aNPC_act_return_trans_item + 0x805315C0: aNPC_act_special_proc + 0x805315E8: aNPC_chk_request_act + 0x805316E4: aNPC_set_request_act + 0x80531740: aNPC_action_proc + 0x805317C8: aNPC_act_wait_main_proc + 0x80531840: aNPC_act_wait_chg_data_proc + 0x80531894: aNPC_act_wait_init_proc + 0x805318EC: aNPC_act_wait_proc + 0x80531920: aNPC_act_walk_setupAction + 0x80531974: aNPC_act_walk_main_proc + 0x805319F4: aNPC_act_walk_chg_data_proc + 0x80531A58: aNPC_act_walk_init_proc + 0x80531AD4: aNPC_act_walk_proc + 0x80531B08: aNPC_act_turn_main_proc + 0x80531B5C: aNPC_act_turn_chg_data_proc + 0x80531BC0: aNPC_act_turn_init_proc + 0x80531CA4: aNPC_act_turn_proc + 0x805331C0: aNPC_Init_OrderValue + 0x8053321C: aNPC_talk_demo_proc + 0x80533258: aNPC_talk_end_check + 0x805332DC: aNPC_act_talk_chg_step + 0x80533310: aNPC_act_talk_turn + 0x80533350: aNPC_act_talk_wait + 0x80533430: aNPC_act_talk + 0x80533488: aNPC_act_talk_main_proc + 0x805334C0: aNPC_act_talk_init_proc + 0x8053356C: aNPC_act_talk_proc + 0x80533DEC: aNPC_act_trans_chg_step + 0x80533EC8: aNPC_act_trans_set_arg_data + 0x80533EEC: aNPC_act_trans_move + 0x80533F64: aNPC_act_trans + 0x80533FD0: aNPC_act_trans_wait + 0x80534028: aNPC_act_trans_send_mail + 0x8053409C: aNPC_act_trans_main_proc + 0x80534124: aNPC_act_trans_chg_data_proc + 0x80534130: aNPC_act_trans_init_proc + 0x805341B4: aNPC_act_trans_proc + 0x805341E8: aNPC_act_get_chg_step + 0x80534368: aNPC_act_get_move + 0x805343D8: aNPC_act_get + 0x8053446C: aNPC_act_get_pull + 0x805344E8: aNPC_act_get_pull_wait + 0x805345F4: aNPC_act_get_putaway + 0x80534634: aNPC_act_get_chg_cloth + 0x80534914: aNPC_act_get_return + 0x80534988: aNPC_act_estimate + 0x805349E8: aNPC_act_get_main_proc + 0x80534A70: aNPC_act_get_chg_data_proc + 0x80534A7C: aNPC_act_get_init_proc + 0x80534AFC: aNPC_act_get_proc + 0x80534B30: aNPC_act_ensou_main_proc + 0x80534B54: aNPC_act_ensou_init_proc + 0x80534B88: aNPC_act_ensou_proc + 0x80535254: aNPC_check_uzai_cross + 0x8053533C: aNPC_check_uzai + 0x80535B2C: aNPC_avoid_obstacle + 0x80535C58: aNPC_chk_talk_start + 0x805360A0: aNPC_check_fatigue + 0x805361A8: aNPC_hate_player + 0x80536254: aNPC_love_player + 0x805363D4: aNPC_chk_friendship_lv + 0x8053644C: aNPC_chk_friendship_sub + 0x805364D8: aNPC_chk_friendship + 0x805365BC: aNPC_think_chk_interrupt_proc + 0x805368A0: aNPC_think_wait_init_proc + 0x805368D4: aNPC_think_wait_proc + 0x805368FC: aNPC_think_special_proc + 0x80536924: aNPC_think_init_proc + 0x80536980: aNPC_think_main_proc + 0x805369BC: aNPC_think_proc + 0x80536D2C: aNPC_think_wander_decide_next + 0x80536F78: aNPC_think_wander_next_act + 0x80536FA4: aNPC_think_wander_main_proc + 0x80536FE0: aNPC_think_wander_init_proc + 0x80537104: aNPC_think_wander_proc + 0x80537D78: aNPC_set_hide_request + 0x80537DC8: aNPC_set_hide_flg + 0x80537E8C: aNPC_stand_schedule_main_proc + 0x80537F0C: aNPC_stand_schedule_init_proc + 0x80537F60: aNPC_stand_schedule_proc + 0x80537F94: aNPC_wander_schedule_main_proc + 0x80537FE8: aNPC_wander_schedule_init_proc + 0x80538034: aNPC_wander_schedule_proc + 0x805380E8: aNPC_special_schedule_proc + 0x80538110: aNPC_schedule_init + 0x805381AC: aNPC_chg_schedule + 0x805381D0: aNPC_set_schedule + 0x805381F8: aNPC_schedule_proc + 0x8053829C: aNPC_first_set_schedule + 0x80538318: aNPC_field_schedule_think_init + 0x80538378: aNPC_field_schedule_main_proc + 0x80538450: aNPC_field_schedule_init_proc + 0x805384B8: aNPC_field_schedule_proc + 0x805384EC: aNPC_in_house_schedule_think_init + 0x80538520: aNPC_in_house_schedule_main_proc + 0x80538630: aNPC_in_house_schedule_init_proc + 0x805386D8: aNPC_in_house_schedule_proc + 0x805387B0: aNPC_sleep_schedule_main_proc + 0x80538878: aNPC_sleep_schedule_init_proc + 0x805388E4: aNPC_sleep_schedule_proc + 0x80538918: aNPC_actor_init_common_proc + 0x8053898C: aNPC_actor_init_for_normal + 0x805389F0: aNPC_actor_init_for_special + 0x80538B24: aNPC_actor_init + 0x80538B6C: aNPC_make_accessory + 0x80538C00: aNPC_setP_friendship + 0x80538CB0: aNPC_set_start_pos + 0x80538CE0: aNPC_actor_schedule + 0x80538D94: aNPC_actor_ct + 0x80539300: aNPC_actor_dt + 0x8053941C: aNPC_actor_save_for_normal + 0x8053953C: aNPC_actor_save_for_special + 0x80539594: aNPC_actor_save + 0x80539618: aNPC_actor_birth_check + 0x8053972C: aNPC_rebuild_dma + 0x8053974C: aNPC_set_attention_request_proc + 0x80539794: aNPC_get_draw_data_idx + 0x8053986C: aNPC_check_dma_cloth_data + 0x80539904: aNPC_check_dma_cloth_data_sub + 0x80539954: aNPC_check_dma_eventNpc_cloth_data + 0x805399C4: aNPC_check_dma_maskNpc_cloth_data + 0x805399FC: aNPC_setupNpc_check + 0x80539A8C: aNPC_setupActor_sub + 0x80539B44: aNPC_setupActor_proc + 0x8053A13C: aNPC_free_actor_area_proc + 0x8053A184: aNPC_dma_draw_data_proc + 0x8053A354: aNPC_actor_ct_c + 0x8053A6FC: aNPC_actor_dt_c + 0x8053A784: aNPC_check_cond_to_greeting + 0x8053A804: aNPC_greeting_area_check + 0x8053A944: aNPC_set_attention + 0x8053AAB0: aNPC_actor_move_c 0x806A1500: aNPC_req_default_data 0x806A1530: aNPC_animeTable 0x806A1CE0: aNPC_animeSeqNoTable @@ -55421,257 +55421,257 @@ src/ac_npc.c: 0x81301840: aNPC_ctrlActor 0x81319AC8: aNPC_clip src/ac_npc2.c: - 0x8053AD41: aNPC_dma_cloth_data - 0x8053ADFD: aNPC_getP_cloth_tex_rom - 0x8053AE61: aNPC_getP_cloth_pal_rom - 0x8053AEC5: aNPC_dma_cloth_tex_data_fg - 0x8053AF09: aNPC_dma_cloth_pal_data_fg - 0x8053AF4D: aNPC_dma_cloth_data_fg - 0x8053AFF5: aNPC_reset_trans_condition_cloth_data - 0x8053B04D: aNPC_get_same_cloth_data_area - 0x8053B085: aNPC_dma_cloth_data_check - 0x8053B111: aNPC_get_new_cloth_data_area - 0x8053B151: aNPC_get_no_use_cloth_data_area - 0x8053B1A9: aNPC_cancel_cloth_data - 0x8053B1E1: aNPC_dma_regist_cloth_data - 0x8053B2B5: aNPC_dma_regist_check_cloth_data - 0x8053B311: aNPC_keep_cloth_data_area - 0x8053B3FD: aNPC_rebuild_cloth_data - 0x8053B421: aNPC_change_cloth_data - 0x8053B509: aNPC_setup_chg_cloth - 0x8053B515: aNPC_setup_next_cloth - 0x8053B521: aNPC_setup_cloth - 0x8053B539: aNPC_get_feel_info - 0x8053B561: aNPC_clear_all_morph_counter - 0x8053B579: aNPC_check_talk_anime - 0x8053B61D: aNPC_set_anime_se_info - 0x8053B709: aNPC_Animation_init - 0x8053BA01: aNPC_check_anime_timing - 0x8053BAB5: aNPC_anime_proc_foot - 0x8053BBFD: aNPC_anime_proc_other - 0x8053BC49: aNPC_anime_se_proc - 0x8053BCD1: aNPC_anime_proc - 0x8053BDA5: aNPC_check_kutipaku - 0x8053BE35: aNPC_getP_anmData - 0x8053BE61: aNPC_get_seq_cnt - 0x8053BE81: aNPC_set_tex_anime - 0x8053BF81: aNPC_tex_anm_ctrl_stop_seq - 0x8053BFAD: aNPC_tex_anm_ctrl_set_pat - 0x8053C021: aNPC_tex_anm_ctrl_rnd_seq - 0x8053C175: aNPC_tex_anm_ctrl_talk_seq - 0x8053C2A9: aNPC_tex_anm_ctrl_fix_seq - 0x8053C2C1: aNPC_tex_anm_ctrl - 0x8053C43D: aNPC_set_frame_sub_speed - 0x8053C479: aNPC_set_anime_speed - 0x8053C4A5: aNPC_OngenTrgStart - 0x8053C551: aNPC_putaway_right_item - 0x8053C5ED: aNPC_takeout_right_item - 0x8053C729: aNPC_chk_right_hand - 0x8053C7C1: aNPC_clear_left_hand_info - 0x8053C7DD: aNPC_chk_left_hand - 0x8053C8C9: aNPC_check_look_range - 0x8053C949: aNPC_check_look_player - 0x8053C9C9: aNPC_check_attention - 0x8053CAB1: aNPC_look_target - 0x8053CBA1: aNPC_check_condition_search_eye - 0x8053CBCD: aNPC_search_eye_target_sub - 0x8053CC91: aNPC_search_eye_target - 0x8053CD95: aNPC_set_head_request_sub - 0x8053CDE1: aNPC_set_head_request - 0x8053CE55: aNPC_force_call_req_proc - 0x8053CEE1: aNPC_check_manpu_demoCode - 0x8053D019: aNPC_clear_timing_demoCode - 0x8053D091: aNPC_check_timing_demoCode - 0x8053D2E9: aNPC_check_feel_demoCode - 0x8053D3DD: aNPC_setup_talk_start - 0x8053D45D: aNPC_setup_talk_end - 0x8053D4B5: aNPC_set_talk_info_talk_request_check - 0x8053D55D: aNPC_talk_request_event_npc - 0x8053D631: aNPC_normal_talk_request - 0x8053D6B1: aNPC_set_talk_info_force_call - 0x8053D701: aNPC_force_talk_request - 0x8053D7F1: aNPC_talk_request_normal_npc - 0x8053D8D1: aNPC_talk_request_check - 0x8053D9C5: aNPC_BGcheck - 0x8053DB01: aNPC_set_over_friendship - 0x8053DBA1: aNPC_set_mv_angl - 0x8053DBE9: aNPC_set_avoid_pos - 0x8053DC11: aNPC_set_dst_pos - 0x8053DC41: aNPC_check_feel_tim - 0x8053DC85: aNPC_calc_force_call_timer - 0x8053DCCD: aNPC_calc_timer - 0x8053DCED: aNPC_position_move - 0x8053DD51: aNPC_angle_calc - 0x8053DD91: aNPC_set_body_angle - 0x8053DDFD: aNPC_calc_fatigue - 0x8053DE39: aNPC_setupAction - 0x8053DED1: aNPC_actor_move_hide - 0x8053DF1D: aNPC_actor_move_show_before - 0x8053DF65: aNPC_actor_move_show_after - 0x8053DFE9: aNPC_actor_move_show - 0x8053E06D: aNPC_actor_move - 0x8053E0BD: aNPC_check_mask_cat_type - 0x8053E115: aNPC_set_shadow_pos - 0x8053E18D: aNPC_set_chn_base - 0x8053E259: aNPC_set_head_angl - 0x8053E2C5: aNPC_actor_draw_before - 0x8053E309: aNPC_set_right_hand_item - 0x8053E3A5: aNPC_set_left_hand_item - 0x8053E42D: aNPC_set_foot_eff - 0x8053E465: aNPC_set_feel_eff - 0x8053E499: aNPC_set_accessory_mtx - 0x8053E52D: aNPC_actor_draw_after - 0x8053E58D: aNPC_actor_draw_sub - 0x8053E899: aNPC_actor_draw - 0x8053E8D9: aNPC_set_eff - 0x8053E975: aNPC_set_feel_effect - 0x8053EAF9: aNPC_set_other_effect - 0x8053EBB9: aNPC_check_arrive_destination - 0x8053ED21: aNPC_set_feel_info - 0x8053ED7D: aNPC_set_act_obj - 0x8053EDFD: aNPC_check_live_target - 0x8053EE2D: aNPC_act_wait - 0x8053EE6D: aNPC_act_move - 0x8053EEBD: aNPC_act_search_move - 0x8053EF7D: aNPC_act_avoid_move - 0x8053F075: aNPC_act_to_point_move - 0x8053F171: aNPC_act_turn - 0x8053F191: aNPC_act_search_turn - 0x8053F209: aNPC_act_to_point_turn - 0x8053F299: aNPC_act_anm_seq - 0x8053F2ED: aNPC_act_return_trans_item - 0x8053F365: aNPC_act_special_proc - 0x8053F38D: aNPC_chk_request_act - 0x8053F489: aNPC_set_request_act - 0x8053F4E5: aNPC_action_proc - 0x8053F56D: aNPC_act_wait_main_proc - 0x8053F5E5: aNPC_act_wait_chg_data_proc - 0x8053F639: aNPC_act_wait_init_proc - 0x8053F691: aNPC_act_wait_proc - 0x8053F6C5: aNPC_act_walk_setupAction - 0x8053F719: aNPC_act_walk_main_proc - 0x8053F7A9: aNPC_act_walk_chg_data_proc - 0x8053F801: aNPC_act_walk_init_proc - 0x8053F84D: aNPC_act_walk_proc - 0x8053F881: aNPC_act_turn_main_proc - 0x8053F8D5: aNPC_act_turn_chg_data_proc - 0x8053F939: aNPC_act_turn_init_proc - 0x8053FA15: aNPC_act_turn_proc - 0x8053FA49: aNPC_Init_OrderValue - 0x8053FAA5: aNPC_talk_demo_proc - 0x8053FAE1: aNPC_talk_end_check - 0x8053FB65: aNPC_act_talk_chg_step - 0x8053FBB1: aNPC_act_talk_turn - 0x8053FBF1: aNPC_act_talk_wait - 0x8053FCD1: aNPC_act_talk - 0x8053FD29: aNPC_act_talk_main_proc - 0x8053FD61: aNPC_act_talk_init_proc - 0x8053FDF1: aNPC_act_talk_proc - 0x8053FF69: aNPC_act_trans_chg_step - 0x80540045: aNPC_act_trans_set_arg_data - 0x80540069: aNPC_act_trans_move - 0x805400E1: aNPC_act_trans - 0x8054014D: aNPC_act_trans_wait - 0x805401A5: aNPC_act_trans_send_mail - 0x80540219: aNPC_act_trans_main_proc - 0x805402A1: aNPC_act_trans_chg_data_proc - 0x805402AD: aNPC_act_trans_init_proc - 0x80540331: aNPC_act_trans_proc - 0x80540365: aNPC_act_get_chg_step - 0x805404E5: aNPC_act_get_move - 0x80540555: aNPC_act_get - 0x805405E9: aNPC_act_get_pull - 0x80540665: aNPC_act_get_pull_wait - 0x80540771: aNPC_act_get_putaway - 0x805407B1: aNPC_act_get_chg_cloth - 0x8054087D: aNPC_act_get_return - 0x805408F1: aNPC_act_estimate - 0x80540951: aNPC_act_get_main_proc - 0x805409D9: aNPC_act_get_chg_data_proc - 0x805409E5: aNPC_act_get_init_proc - 0x80540A65: aNPC_act_get_proc - 0x80540FA5: aNPC_act_ensou_main_proc - 0x80540FB9: aNPC_act_ensou_init_proc - 0x80540FED: aNPC_act_ensou_proc - 0x8054105D: aNPC_check_uzai_cross - 0x80541111: aNPC_check_uzai - 0x805412C5: aNPC_chk_talk_start - 0x80541355: aNPC_check_fatigue - 0x80541EED: aNPC_avoid_obstacle - 0x80541F7D: aNPC_hate_player - 0x8054216D: aNPC_love_player - 0x8054235D: aNPC_chk_friendship_lv - 0x805423B5: aNPC_chk_friendship_sub - 0x80542435: aNPC_chk_friendship - 0x805424AD: aNPC_think_chk_interrupt_proc - 0x805425AD: aNPC_think_wait_init_proc - 0x805425E1: aNPC_think_wait_proc - 0x805426A1: aNPC_think_special_proc - 0x805426C9: aNPC_think_init_proc - 0x80542725: aNPC_think_main_proc - 0x80542761: aNPC_think_proc - 0x805427C9: aNPC_think_wander_decide_next - 0x80542985: aNPC_think_wander_next_act - 0x805429B1: aNPC_think_wander_main_proc - 0x805429FD: aNPC_think_wander_init_proc - 0x80542A3D: aNPC_think_wander_proc - 0x8054313D: aNPC_set_hide_request - 0x8054318D: aNPC_set_hide_flg - 0x805431D1: aNPC_sleep_schedule_main_proc - 0x80543205: aNPC_sleep_schedule_init_proc - 0x80543251: aNPC_sleep_schedule_proc - 0x80543285: aNPC_stand_schedule_main_proc - 0x805432FD: aNPC_stand_schedule_init_proc - 0x80543349: aNPC_stand_schedule_proc - 0x8054337D: aNPC_wander_schedule_main_proc - 0x8054339D: aNPC_wander_schedule_init_proc - 0x805433E9: aNPC_wander_schedule_proc - 0x8054341D: aNPC_special_schedule_proc - 0x80543445: aNPC_schedule_init - 0x80543481: aNPC_chg_schedule - 0x805434A5: aNPC_set_schedule - 0x805434CD: aNPC_schedule_proc - 0x80543511: aNPC_first_set_schedule - 0x80543569: aNPC_field_schedule_think_init - 0x8054359D: aNPC_field_schedule_main_proc - 0x80543649: aNPC_field_schedule_init_proc - 0x805436C5: aNPC_field_schedule_proc - 0x805436F9: aNPC_in_house_schedule_think_init - 0x8054372D: aNPC_in_house_schedule_main_proc - 0x805437C5: aNPC_in_house_schedule_init_proc - 0x80543851: aNPC_in_house_schedule_proc - 0x80543885: aNPC_actor_init_common_proc - 0x805438F9: aNPC_actor_init_for_normal - 0x8054395D: aNPC_actor_init_for_special - 0x80543A91: aNPC_actor_init - 0x80543AD9: aNPC_make_accessory - 0x80543B6D: aNPC_setP_friendship - 0x80543D05: aNPC_set_start_pos - 0x80543E59: aNPC_actor_schedule - 0x80543F0D: aNPC_actor_ct - 0x805443FD: aNPC_actor_dt - 0x805444F9: aNPC_actor_save_for_normal - 0x805445B9: aNPC_actor_save_for_special - 0x80544611: aNPC_actor_save - 0x80544671: aNPC_actor_birth_check - 0x80544785: aNPC_rebuild_dma - 0x805449D5: aNPC_set_attention_request_proc - 0x80544A1D: aNPC_get_draw_data_idx - 0x80544AF5: aNPC_check_dma_cloth_data - 0x80544B8D: aNPC_check_dma_cloth_data_sub - 0x80544BDD: aNPC_check_dma_eventNpc_cloth_data - 0x80544C4D: aNPC_check_dma_maskNpc_cloth_data - 0x80544C85: aNPC_setupNpc_check - 0x80544D15: aNPC_setupActor_sub - 0x80544DCD: aNPC_setupActor_proc - 0x80544FC9: aNPC_free_actor_area_proc - 0x80544FE9: aNPC_dma_draw_data_proc - 0x80545035: aNPC_actor_ct_c - 0x805453B9: aNPC_actor_dt_c - 0x805453DD: aNPC_check_cond_to_greeting - 0x8054545D: aNPC_greeting_area_check - 0x8054559D: aNPC_set_attention - 0x80545605: aNPC_actor_move_c + 0x8053AD40: aNPC_dma_cloth_data + 0x8053ADFC: aNPC_getP_cloth_tex_rom + 0x8053AE60: aNPC_getP_cloth_pal_rom + 0x8053AEC4: aNPC_dma_cloth_tex_data_fg + 0x8053AF08: aNPC_dma_cloth_pal_data_fg + 0x8053AF4C: aNPC_dma_cloth_data_fg + 0x8053AFF4: aNPC_reset_trans_condition_cloth_data + 0x8053B04C: aNPC_get_same_cloth_data_area + 0x8053B084: aNPC_dma_cloth_data_check + 0x8053B110: aNPC_get_new_cloth_data_area + 0x8053B150: aNPC_get_no_use_cloth_data_area + 0x8053B1A8: aNPC_cancel_cloth_data + 0x8053B1E0: aNPC_dma_regist_cloth_data + 0x8053B2B4: aNPC_dma_regist_check_cloth_data + 0x8053B310: aNPC_keep_cloth_data_area + 0x8053B3FC: aNPC_rebuild_cloth_data + 0x8053B420: aNPC_change_cloth_data + 0x8053B508: aNPC_setup_chg_cloth + 0x8053B514: aNPC_setup_next_cloth + 0x8053B520: aNPC_setup_cloth + 0x8053B538: aNPC_get_feel_info + 0x8053B560: aNPC_clear_all_morph_counter + 0x8053B578: aNPC_check_talk_anime + 0x8053B61C: aNPC_set_anime_se_info + 0x8053B708: aNPC_Animation_init + 0x8053BA00: aNPC_check_anime_timing + 0x8053BAB4: aNPC_anime_proc_foot + 0x8053BBFC: aNPC_anime_proc_other + 0x8053BC48: aNPC_anime_se_proc + 0x8053BCD0: aNPC_anime_proc + 0x8053BDA4: aNPC_check_kutipaku + 0x8053BE34: aNPC_getP_anmData + 0x8053BE60: aNPC_get_seq_cnt + 0x8053BE80: aNPC_set_tex_anime + 0x8053BF80: aNPC_tex_anm_ctrl_stop_seq + 0x8053BFAC: aNPC_tex_anm_ctrl_set_pat + 0x8053C020: aNPC_tex_anm_ctrl_rnd_seq + 0x8053C174: aNPC_tex_anm_ctrl_talk_seq + 0x8053C2A8: aNPC_tex_anm_ctrl_fix_seq + 0x8053C2C0: aNPC_tex_anm_ctrl + 0x8053C43C: aNPC_set_frame_sub_speed + 0x8053C478: aNPC_set_anime_speed + 0x8053C4A4: aNPC_OngenTrgStart + 0x8053C550: aNPC_putaway_right_item + 0x8053C5EC: aNPC_takeout_right_item + 0x8053C728: aNPC_chk_right_hand + 0x8053C7C0: aNPC_clear_left_hand_info + 0x8053C7DC: aNPC_chk_left_hand + 0x8053C8C8: aNPC_check_look_range + 0x8053C948: aNPC_check_look_player + 0x8053C9C8: aNPC_check_attention + 0x8053CAB0: aNPC_look_target + 0x8053CBA0: aNPC_check_condition_search_eye + 0x8053CBCC: aNPC_search_eye_target_sub + 0x8053CC90: aNPC_search_eye_target + 0x8053CD94: aNPC_set_head_request_sub + 0x8053CDE0: aNPC_set_head_request + 0x8053CE54: aNPC_force_call_req_proc + 0x8053CEE0: aNPC_check_manpu_demoCode + 0x8053D018: aNPC_clear_timing_demoCode + 0x8053D090: aNPC_check_timing_demoCode + 0x8053D2E8: aNPC_check_feel_demoCode + 0x8053D3DC: aNPC_setup_talk_start + 0x8053D45C: aNPC_setup_talk_end + 0x8053D4B4: aNPC_set_talk_info_talk_request_check + 0x8053D55C: aNPC_talk_request_event_npc + 0x8053D630: aNPC_normal_talk_request + 0x8053D6B0: aNPC_set_talk_info_force_call + 0x8053D700: aNPC_force_talk_request + 0x8053D7F0: aNPC_talk_request_normal_npc + 0x8053D8D0: aNPC_talk_request_check + 0x8053D9C4: aNPC_BGcheck + 0x8053DB00: aNPC_set_over_friendship + 0x8053DBA0: aNPC_set_mv_angl + 0x8053DBE8: aNPC_set_avoid_pos + 0x8053DC10: aNPC_set_dst_pos + 0x8053DC40: aNPC_check_feel_tim + 0x8053DC84: aNPC_calc_force_call_timer + 0x8053DCCC: aNPC_calc_timer + 0x8053DCEC: aNPC_position_move + 0x8053DD50: aNPC_angle_calc + 0x8053DD90: aNPC_set_body_angle + 0x8053DDFC: aNPC_calc_fatigue + 0x8053DE38: aNPC_setupAction + 0x8053DED0: aNPC_actor_move_hide + 0x8053DF1C: aNPC_actor_move_show_before + 0x8053DF64: aNPC_actor_move_show_after + 0x8053DFE8: aNPC_actor_move_show + 0x8053E06C: aNPC_actor_move + 0x8053E0BC: aNPC_check_mask_cat_type + 0x8053E114: aNPC_set_shadow_pos + 0x8053E18C: aNPC_set_chn_base + 0x8053E258: aNPC_set_head_angl + 0x8053E2C4: aNPC_actor_draw_before + 0x8053E308: aNPC_set_right_hand_item + 0x8053E3A4: aNPC_set_left_hand_item + 0x8053E42C: aNPC_set_foot_eff + 0x8053E464: aNPC_set_feel_eff + 0x8053E498: aNPC_set_accessory_mtx + 0x8053E52C: aNPC_actor_draw_after + 0x8053E58C: aNPC_actor_draw_sub + 0x8053E898: aNPC_actor_draw + 0x8053E8D8: aNPC_set_eff + 0x8053E974: aNPC_set_feel_effect + 0x8053EAF8: aNPC_set_other_effect + 0x8053EBB8: aNPC_check_arrive_destination + 0x8053ED20: aNPC_set_feel_info + 0x8053ED7C: aNPC_set_act_obj + 0x8053EDFC: aNPC_check_live_target + 0x8053EE2C: aNPC_act_wait + 0x8053EE6C: aNPC_act_move + 0x8053EEBC: aNPC_act_search_move + 0x8053EF7C: aNPC_act_avoid_move + 0x8053F074: aNPC_act_to_point_move + 0x8053F170: aNPC_act_turn + 0x8053F190: aNPC_act_search_turn + 0x8053F208: aNPC_act_to_point_turn + 0x8053F298: aNPC_act_anm_seq + 0x8053F2EC: aNPC_act_return_trans_item + 0x8053F364: aNPC_act_special_proc + 0x8053F38C: aNPC_chk_request_act + 0x8053F488: aNPC_set_request_act + 0x8053F4E4: aNPC_action_proc + 0x8053F56C: aNPC_act_wait_main_proc + 0x8053F5E4: aNPC_act_wait_chg_data_proc + 0x8053F638: aNPC_act_wait_init_proc + 0x8053F690: aNPC_act_wait_proc + 0x8053F6C4: aNPC_act_walk_setupAction + 0x8053F718: aNPC_act_walk_main_proc + 0x8053F7A8: aNPC_act_walk_chg_data_proc + 0x8053F800: aNPC_act_walk_init_proc + 0x8053F84C: aNPC_act_walk_proc + 0x8053F880: aNPC_act_turn_main_proc + 0x8053F8D4: aNPC_act_turn_chg_data_proc + 0x8053F938: aNPC_act_turn_init_proc + 0x8053FA14: aNPC_act_turn_proc + 0x8053FA48: aNPC_Init_OrderValue + 0x8053FAA4: aNPC_talk_demo_proc + 0x8053FAE0: aNPC_talk_end_check + 0x8053FB64: aNPC_act_talk_chg_step + 0x8053FBB0: aNPC_act_talk_turn + 0x8053FBF0: aNPC_act_talk_wait + 0x8053FCD0: aNPC_act_talk + 0x8053FD28: aNPC_act_talk_main_proc + 0x8053FD60: aNPC_act_talk_init_proc + 0x8053FDF0: aNPC_act_talk_proc + 0x8053FF68: aNPC_act_trans_chg_step + 0x80540044: aNPC_act_trans_set_arg_data + 0x80540068: aNPC_act_trans_move + 0x805400E0: aNPC_act_trans + 0x8054014C: aNPC_act_trans_wait + 0x805401A4: aNPC_act_trans_send_mail + 0x80540218: aNPC_act_trans_main_proc + 0x805402A0: aNPC_act_trans_chg_data_proc + 0x805402AC: aNPC_act_trans_init_proc + 0x80540330: aNPC_act_trans_proc + 0x80540364: aNPC_act_get_chg_step + 0x805404E4: aNPC_act_get_move + 0x80540554: aNPC_act_get + 0x805405E8: aNPC_act_get_pull + 0x80540664: aNPC_act_get_pull_wait + 0x80540770: aNPC_act_get_putaway + 0x805407B0: aNPC_act_get_chg_cloth + 0x8054087C: aNPC_act_get_return + 0x805408F0: aNPC_act_estimate + 0x80540950: aNPC_act_get_main_proc + 0x805409D8: aNPC_act_get_chg_data_proc + 0x805409E4: aNPC_act_get_init_proc + 0x80540A64: aNPC_act_get_proc + 0x80540FA4: aNPC_act_ensou_main_proc + 0x80540FB8: aNPC_act_ensou_init_proc + 0x80540FEC: aNPC_act_ensou_proc + 0x8054105C: aNPC_check_uzai_cross + 0x80541110: aNPC_check_uzai + 0x805412C4: aNPC_chk_talk_start + 0x80541354: aNPC_check_fatigue + 0x80541EEC: aNPC_avoid_obstacle + 0x80541F7C: aNPC_hate_player + 0x8054216C: aNPC_love_player + 0x8054235C: aNPC_chk_friendship_lv + 0x805423B4: aNPC_chk_friendship_sub + 0x80542434: aNPC_chk_friendship + 0x805424AC: aNPC_think_chk_interrupt_proc + 0x805425AC: aNPC_think_wait_init_proc + 0x805425E0: aNPC_think_wait_proc + 0x805426A0: aNPC_think_special_proc + 0x805426C8: aNPC_think_init_proc + 0x80542724: aNPC_think_main_proc + 0x80542760: aNPC_think_proc + 0x805427C8: aNPC_think_wander_decide_next + 0x80542984: aNPC_think_wander_next_act + 0x805429B0: aNPC_think_wander_main_proc + 0x805429FC: aNPC_think_wander_init_proc + 0x80542A3C: aNPC_think_wander_proc + 0x8054313C: aNPC_set_hide_request + 0x8054318C: aNPC_set_hide_flg + 0x805431D0: aNPC_sleep_schedule_main_proc + 0x80543204: aNPC_sleep_schedule_init_proc + 0x80543250: aNPC_sleep_schedule_proc + 0x80543284: aNPC_stand_schedule_main_proc + 0x805432FC: aNPC_stand_schedule_init_proc + 0x80543348: aNPC_stand_schedule_proc + 0x8054337C: aNPC_wander_schedule_main_proc + 0x8054339C: aNPC_wander_schedule_init_proc + 0x805433E8: aNPC_wander_schedule_proc + 0x8054341C: aNPC_special_schedule_proc + 0x80543444: aNPC_schedule_init + 0x80543480: aNPC_chg_schedule + 0x805434A4: aNPC_set_schedule + 0x805434CC: aNPC_schedule_proc + 0x80543510: aNPC_first_set_schedule + 0x80543568: aNPC_field_schedule_think_init + 0x8054359C: aNPC_field_schedule_main_proc + 0x80543648: aNPC_field_schedule_init_proc + 0x805436C4: aNPC_field_schedule_proc + 0x805436F8: aNPC_in_house_schedule_think_init + 0x8054372C: aNPC_in_house_schedule_main_proc + 0x805437C4: aNPC_in_house_schedule_init_proc + 0x80543850: aNPC_in_house_schedule_proc + 0x80543884: aNPC_actor_init_common_proc + 0x805438F8: aNPC_actor_init_for_normal + 0x8054395C: aNPC_actor_init_for_special + 0x80543A90: aNPC_actor_init + 0x80543AD8: aNPC_make_accessory + 0x80543B6C: aNPC_setP_friendship + 0x80543D04: aNPC_set_start_pos + 0x80543E58: aNPC_actor_schedule + 0x80543F0C: aNPC_actor_ct + 0x805443FC: aNPC_actor_dt + 0x805444F8: aNPC_actor_save_for_normal + 0x805445B8: aNPC_actor_save_for_special + 0x80544610: aNPC_actor_save + 0x80544670: aNPC_actor_birth_check + 0x80544784: aNPC_rebuild_dma + 0x805449D4: aNPC_set_attention_request_proc + 0x80544A1C: aNPC_get_draw_data_idx + 0x80544AF4: aNPC_check_dma_cloth_data + 0x80544B8C: aNPC_check_dma_cloth_data_sub + 0x80544BDC: aNPC_check_dma_eventNpc_cloth_data + 0x80544C4C: aNPC_check_dma_maskNpc_cloth_data + 0x80544C84: aNPC_setupNpc_check + 0x80544D14: aNPC_setupActor_sub + 0x80544DCC: aNPC_setupActor_proc + 0x80544FC8: aNPC_free_actor_area_proc + 0x80544FE8: aNPC_dma_draw_data_proc + 0x80545034: aNPC_actor_ct_c + 0x805453B8: aNPC_actor_dt_c + 0x805453DC: aNPC_check_cond_to_greeting + 0x8054545C: aNPC_greeting_area_check + 0x8054559C: aNPC_set_attention + 0x80545604: aNPC_actor_move_c 0x806A2C78: aNPC_req_default_data 0x806A2CA8: aNPC_animeTable 0x806A3458: aNPC_animeSeqNoTable @@ -55692,170 +55692,170 @@ src/ac_npc2.c: 0x81319BF8: aNPC_ctrlActor 0x81319F94: aNPC_clip src/ac_npc_conv_master.c: - 0x80545B7D: aNSC_set_animation - 0x80545BCD: aNSC_BGcheck - 0x80545C11: aNSC_check_present_balloon - 0x80545C7D: aNSC_calc_talk_start_tim - 0x80545CA5: aNSC_request_show_camera - 0x80545D19: aNSC_Set_ListenAble - 0x80545D3D: aNSC_set_sell_camera - 0x80545DD1: aNSC_sell_camera - 0x80545E71: aNSC_talk_demo_proc - 0x80545EE1: aNSC_set_stop_spd - 0x80545EFD: aNSC_set_walk_spd - 0x80545F29: aNSC_set_run_spd - 0x80545F55: aNSC_set_rehouse_order_date - 0x80545F7D: aNSC_set_make_basement_info - 0x80545FD9: aNSC_getP_free_ftr_order - 0x80546011: aNSC_set_ftr_order - 0x8054605D: aNSC_set_last_day_str - 0x805460B1: aNSC_set_pw_name_str - 0x8054610D: aNSC_set_value_str - 0x80546169: aNSC_set_item_name_str - 0x805461CD: aNSC_set_item_str - 0x80546225: aNSC_set_pw_password_str - 0x80546285: aNSC_set_pw_info_str - 0x805462ED: aNSC_pc_check_password_famicom - 0x80546335: aNSC_pc_check_password_npc - 0x805463A1: aNSC_pc_check_password_card_e - 0x805463A9: aNSC_pc_check_password_magazine - 0x8054641D: aNSC_pc_check_password_card_e_mini - 0x80546435: aNSC_pc_check_password_user - 0x8054647D: aNSC_pc_check_password - 0x80546541: aNSC_check_possession_item_make_password - 0x805465ED: aNSC_set_buy_sum_str - 0x805466C1: aNSC_decide_next_move_act - 0x805467D1: aNSC_set_zone_data - 0x80546855: aNSC_set_player_angl - 0x80546861: aNSC_money_check - 0x80546881: aNSC_get_sell_price - 0x805468A1: aNSC_check_money_overflow - 0x80546935: aNSC_check_buy_item_sub - 0x805469D9: aNSC_check_buy_paper - 0x80546AC9: aNSC_check_buy_item_single - 0x80546BE1: aNSC_check_buy_item_plural - 0x80546C6D: aNSC_check_buy_item - 0x80546CA1: aNSC_check_item_with_ticket - 0x80546D21: aNSC_setup_ticket_remain - 0x80546D69: aNSC_check_same_month_ticket - 0x80546DCD: aNSC_get_msg_no - 0x80546E15: aNSC_Set_continue_msg_num - 0x80546E55: aNSC_ChangeMsgData - 0x80546E95: aNSC_set_player_angle - 0x80546F9D: aNSC_set_talk_info_show_item - 0x80546FD5: aNSC_set_talk_info_show_cloth - 0x8054700D: aNSC_set_talk_info_sell_item - 0x805470CD: aNSC_set_talk_info_message_ctrl - 0x805470F5: aNSC_set_talk_info_message_ctrl_aprilfool - 0x8054713D: aNSC_set_talk_info_message_ctrl_tokubai - 0x80547165: aNSC_message_ctrl - 0x80547545: aNSC_buy_item_single - 0x80547635: aNSC_buy_paper - 0x80547745: aNSC_buy_item_only_one - 0x80547955: aNSC_get_start_call_msg_no - 0x80547991: aNSC_set_talk_info_start_wait - 0x80547B85: aNSC_set_talk_info_start_wait1 - 0x80547C65: aNSC_set_talk_info_start_wait2 - 0x80547CB1: aNSC_set_talk_info_start_wait3 - 0x80547CED: aNSC_set_talk_info_start_wait4 - 0x80547D15: aNSC_start_wait - 0x80547FC9: aNSC_say_hello_approach - 0x80548059: aNSC_say_hello_end_wait - 0x805480CD: aNSC_check_col_chg_or_make_basement - 0x80548199: aNSC_check_roof_col_order - 0x805482D1: aNSC_check_roof_col_order2 - 0x805483C5: aNSC_present_balloon_start_wait - 0x80548421: aNSC_present_balloon_trans_move - 0x8054845D: aNSC_present_balloon_trans_takeout - 0x80548539: aNSC_present_balloon_trans_wait - 0x80548579: aNSC_present_balloon_end_wait - 0x805485E1: aNSC_set_talk_info_request_Q_start_wait - 0x80548611: aNSC_request_Q_start_wait - 0x80548695: aNSC_request_Q_answer_wait - 0x805487A9: aNSC_request_Q_answer_wait2 - 0x80548939: aNSC_request_Q_end_wait - 0x805489AD: aNSC_answer_buy_item - 0x80548A29: aNSC_buy_menu_open_wait - 0x80548A81: aNSC_buy_menu_close_wait - 0x80548AB5: aNSC_msg_win_open_wait - 0x80548B7D: aNSC_buy_sum_check - 0x80548C79: aNSC_buy_check - 0x80548EF9: aNSC_buy_after_service - 0x80548F75: aNSC_buy_continue_check - 0x80549061: aNSC_receive_check - 0x80549105: aNSC_msg_win_open_wait2 - 0x805491CD: aNSC_order_check - 0x805492C9: aNSC_sell_check_before - 0x80549331: aNSC_sell_check - 0x805493E9: aNSC_sell_answer0 - 0x8054961D: aNSC_sell_item_with_ticket - 0x805496D5: aNSC_show_item_check - 0x805498A1: aNSC_chg_cloth_start_wait - 0x80549969: aNSC_chg_cloth_end_wait - 0x805499C5: aNSC_pw_entry_send_addr_start_wait - 0x80549A3D: aNSC_pw_msg_win_open_wait - 0x80549AE9: aNSC_pw_send_addr_check - 0x80549BC5: aNSC_pw_sel_item_start_wait - 0x80549C3D: aNSC_pw_msg_win_open_wait2 - 0x80549CED: aNSC_pw_send_check - 0x80549E19: aNSC_pw_retry_sel_item_check - 0x80549EE1: aNSC_pc_input_pw_start_wait - 0x80549F59: aNSC_pc_msg_win_open_wait - 0x80549FED: aNSC_pc_retry_input_pw_check - 0x8054A0E1: aNSC_pc_present_start_wait - 0x8054A13D: aNSC_pc_present_trans_takeout - 0x8054A219: aNSC_pc_present_trans_wait - 0x8054A259: aNSC_pc_present_end_wait - 0x8054A2C1: aNSC_wait - 0x8054A339: aNSC_walk_pl_other_zone - 0x8054A3B1: aNSC_turn - 0x8054A449: aNSC_set_talk_info_goodbye_wait - 0x8054A479: aNSC_goodbye_wait - 0x8054A515: aNSC_say_goodbye - 0x8054A575: aNSC_exit_wait - 0x8054A5E9: aNSC_say_hello_approach_init - 0x8054A609: aNSC_say_hello_end_wait_init - 0x8054A631: aNSC_check_col_chg_or_make_basement_init - 0x8054A651: aNSC_check_roof_col_order_init - 0x8054A691: aNSC_check_roof_col_order2_init - 0x8054A6BD: aNSC_present_balloon_start_wait_init - 0x8054A6D9: aNSC_present_balloon_trans_move_init - 0x8054A765: aNSC_present_balloon_trans_takeout_init - 0x8054A7A5: aNSC_present_balloon_end_wait_init - 0x8054A7B5: aNSC_request_Q_answer_wait_init - 0x8054A7F5: aNSC_request_Q_end_wait_init - 0x8054A815: aNSC_answer_buy_item_init - 0x8054A841: aNSC_buy_menu_open_wait_init - 0x8054A865: aNSC_buy_menu_close_wait_init - 0x8054A8A9: aNSC_msg_win_open_wait_init - 0x8054A8CD: aNSC_buy_sum_check_init - 0x8054A8F9: aNSC_buy_check_init - 0x8054A9F1: aNSC_buy_after_service_init - 0x8054AA1D: aNSC_order_select_menu_close_wait_init - 0x8054AA61: aNSC_order_check_init - 0x8054AA8D: aNSC_sell_check_before_init - 0x8054AACD: aNSC_sell_answer0_init - 0x8054ABE5: aNSC_sell_answer1_init - 0x8054AC19: aNSC_sell_item_init - 0x8054AC7D: aNSC_sell_item_with_ticket_init - 0x8054ACCD: aNSC_sell_refuse0_init - 0x8054ACD9: aNSC_show_item_check_init - 0x8054ACF9: aNSC_chg_cloth_start_wait_init - 0x8054AD1D: aNSC_pw_entry_send_addr_start_wait_init - 0x8054AD49: aNSC_pw_make_menu_close_wait_init - 0x8054ADAD: aNSC_pw_send_addr_check_init - 0x8054ADCD: aNSC_pw_sel_item_menu_close_wait_init - 0x8054AE11: aNSC_pc_input_pw_start_wait_init - 0x8054AE4D: aNSC_pc_chk_menu_close_wait_init - 0x8054AE95: aNSC_pc_present_trans_takeout_init - 0x8054AF1D: aNSC_pc_present_end_wait_init - 0x8054AF2D: aNSC_wait_init - 0x8054AF4D: aNSC_walk_pl_same_zone_init - 0x8054AF6D: aNSC_run_pl_same_zone_init - 0x8054AF8D: aNSC_goodbye_wait_init - 0x8054AFAD: aNSC_say_goodbye_init - 0x8054AFD1: aNSC_init_proc - 0x8054B005: aNSC_setupAction + 0x80545B7C: aNSC_set_animation + 0x80545BCC: aNSC_BGcheck + 0x80545C10: aNSC_check_present_balloon + 0x80545C7C: aNSC_calc_talk_start_tim + 0x80545CA4: aNSC_request_show_camera + 0x80545D18: aNSC_Set_ListenAble + 0x80545D3C: aNSC_set_sell_camera + 0x80545DD0: aNSC_sell_camera + 0x80545E70: aNSC_talk_demo_proc + 0x80545EE0: aNSC_set_stop_spd + 0x80545EFC: aNSC_set_walk_spd + 0x80545F28: aNSC_set_run_spd + 0x80545F54: aNSC_set_rehouse_order_date + 0x80545F7C: aNSC_set_make_basement_info + 0x80545FD8: aNSC_getP_free_ftr_order + 0x80546010: aNSC_set_ftr_order + 0x8054605C: aNSC_set_last_day_str + 0x805460B0: aNSC_set_pw_name_str + 0x8054610C: aNSC_set_value_str + 0x80546168: aNSC_set_item_name_str + 0x805461CC: aNSC_set_item_str + 0x80546224: aNSC_set_pw_password_str + 0x80546284: aNSC_set_pw_info_str + 0x805462EC: aNSC_pc_check_password_famicom + 0x80546334: aNSC_pc_check_password_npc + 0x805463A0: aNSC_pc_check_password_card_e + 0x805463A8: aNSC_pc_check_password_magazine + 0x8054641C: aNSC_pc_check_password_card_e_mini + 0x80546434: aNSC_pc_check_password_user + 0x8054647C: aNSC_pc_check_password + 0x80546540: aNSC_check_possession_item_make_password + 0x805465EC: aNSC_set_buy_sum_str + 0x805466C0: aNSC_decide_next_move_act + 0x805467D0: aNSC_set_zone_data + 0x80546854: aNSC_set_player_angl + 0x80546860: aNSC_money_check + 0x80546880: aNSC_get_sell_price + 0x805468A0: aNSC_check_money_overflow + 0x80546934: aNSC_check_buy_item_sub + 0x805469D8: aNSC_check_buy_paper + 0x80546AC8: aNSC_check_buy_item_single + 0x80546BE0: aNSC_check_buy_item_plural + 0x80546C6C: aNSC_check_buy_item + 0x80546CA0: aNSC_check_item_with_ticket + 0x80546D20: aNSC_setup_ticket_remain + 0x80546D68: aNSC_check_same_month_ticket + 0x80546DCC: aNSC_get_msg_no + 0x80546E14: aNSC_Set_continue_msg_num + 0x80546E54: aNSC_ChangeMsgData + 0x80546E94: aNSC_set_player_angle + 0x80546F9C: aNSC_set_talk_info_show_item + 0x80546FD4: aNSC_set_talk_info_show_cloth + 0x8054700C: aNSC_set_talk_info_sell_item + 0x805470CC: aNSC_set_talk_info_message_ctrl + 0x805470F4: aNSC_set_talk_info_message_ctrl_aprilfool + 0x8054713C: aNSC_set_talk_info_message_ctrl_tokubai + 0x80547164: aNSC_message_ctrl + 0x80547544: aNSC_buy_item_single + 0x80547634: aNSC_buy_paper + 0x80547744: aNSC_buy_item_only_one + 0x80547954: aNSC_get_start_call_msg_no + 0x80547990: aNSC_set_talk_info_start_wait + 0x80547B84: aNSC_set_talk_info_start_wait1 + 0x80547C64: aNSC_set_talk_info_start_wait2 + 0x80547CB0: aNSC_set_talk_info_start_wait3 + 0x80547CEC: aNSC_set_talk_info_start_wait4 + 0x80547D14: aNSC_start_wait + 0x80547FC8: aNSC_say_hello_approach + 0x80548058: aNSC_say_hello_end_wait + 0x805480CC: aNSC_check_col_chg_or_make_basement + 0x80548198: aNSC_check_roof_col_order + 0x805482D0: aNSC_check_roof_col_order2 + 0x805483C4: aNSC_present_balloon_start_wait + 0x80548420: aNSC_present_balloon_trans_move + 0x8054845C: aNSC_present_balloon_trans_takeout + 0x80548538: aNSC_present_balloon_trans_wait + 0x80548578: aNSC_present_balloon_end_wait + 0x805485E0: aNSC_set_talk_info_request_Q_start_wait + 0x80548610: aNSC_request_Q_start_wait + 0x80548694: aNSC_request_Q_answer_wait + 0x805487A8: aNSC_request_Q_answer_wait2 + 0x80548938: aNSC_request_Q_end_wait + 0x805489AC: aNSC_answer_buy_item + 0x80548A28: aNSC_buy_menu_open_wait + 0x80548A80: aNSC_buy_menu_close_wait + 0x80548AB4: aNSC_msg_win_open_wait + 0x80548B7C: aNSC_buy_sum_check + 0x80548C78: aNSC_buy_check + 0x80548EF8: aNSC_buy_after_service + 0x80548F74: aNSC_buy_continue_check + 0x80549060: aNSC_receive_check + 0x80549104: aNSC_msg_win_open_wait2 + 0x805491CC: aNSC_order_check + 0x805492C8: aNSC_sell_check_before + 0x80549330: aNSC_sell_check + 0x805493E8: aNSC_sell_answer0 + 0x8054961C: aNSC_sell_item_with_ticket + 0x805496D4: aNSC_show_item_check + 0x805498A0: aNSC_chg_cloth_start_wait + 0x80549968: aNSC_chg_cloth_end_wait + 0x805499C4: aNSC_pw_entry_send_addr_start_wait + 0x80549A3C: aNSC_pw_msg_win_open_wait + 0x80549AE8: aNSC_pw_send_addr_check + 0x80549BC4: aNSC_pw_sel_item_start_wait + 0x80549C3C: aNSC_pw_msg_win_open_wait2 + 0x80549CEC: aNSC_pw_send_check + 0x80549E18: aNSC_pw_retry_sel_item_check + 0x80549EE0: aNSC_pc_input_pw_start_wait + 0x80549F58: aNSC_pc_msg_win_open_wait + 0x80549FEC: aNSC_pc_retry_input_pw_check + 0x8054A0E0: aNSC_pc_present_start_wait + 0x8054A13C: aNSC_pc_present_trans_takeout + 0x8054A218: aNSC_pc_present_trans_wait + 0x8054A258: aNSC_pc_present_end_wait + 0x8054A2C0: aNSC_wait + 0x8054A338: aNSC_walk_pl_other_zone + 0x8054A3B0: aNSC_turn + 0x8054A448: aNSC_set_talk_info_goodbye_wait + 0x8054A478: aNSC_goodbye_wait + 0x8054A514: aNSC_say_goodbye + 0x8054A574: aNSC_exit_wait + 0x8054A5E8: aNSC_say_hello_approach_init + 0x8054A608: aNSC_say_hello_end_wait_init + 0x8054A630: aNSC_check_col_chg_or_make_basement_init + 0x8054A650: aNSC_check_roof_col_order_init + 0x8054A690: aNSC_check_roof_col_order2_init + 0x8054A6BC: aNSC_present_balloon_start_wait_init + 0x8054A6D8: aNSC_present_balloon_trans_move_init + 0x8054A764: aNSC_present_balloon_trans_takeout_init + 0x8054A7A4: aNSC_present_balloon_end_wait_init + 0x8054A7B4: aNSC_request_Q_answer_wait_init + 0x8054A7F4: aNSC_request_Q_end_wait_init + 0x8054A814: aNSC_answer_buy_item_init + 0x8054A840: aNSC_buy_menu_open_wait_init + 0x8054A864: aNSC_buy_menu_close_wait_init + 0x8054A8A8: aNSC_msg_win_open_wait_init + 0x8054A8CC: aNSC_buy_sum_check_init + 0x8054A8F8: aNSC_buy_check_init + 0x8054A9F0: aNSC_buy_after_service_init + 0x8054AA1C: aNSC_order_select_menu_close_wait_init + 0x8054AA60: aNSC_order_check_init + 0x8054AA8C: aNSC_sell_check_before_init + 0x8054AACC: aNSC_sell_answer0_init + 0x8054ABE4: aNSC_sell_answer1_init + 0x8054AC18: aNSC_sell_item_init + 0x8054AC7C: aNSC_sell_item_with_ticket_init + 0x8054ACCC: aNSC_sell_refuse0_init + 0x8054ACD8: aNSC_show_item_check_init + 0x8054ACF8: aNSC_chg_cloth_start_wait_init + 0x8054AD1C: aNSC_pw_entry_send_addr_start_wait_init + 0x8054AD48: aNSC_pw_make_menu_close_wait_init + 0x8054ADAC: aNSC_pw_send_addr_check_init + 0x8054ADCC: aNSC_pw_sel_item_menu_close_wait_init + 0x8054AE10: aNSC_pc_input_pw_start_wait_init + 0x8054AE4C: aNSC_pc_chk_menu_close_wait_init + 0x8054AE94: aNSC_pc_present_trans_takeout_init + 0x8054AF1C: aNSC_pc_present_end_wait_init + 0x8054AF2C: aNSC_wait_init + 0x8054AF4C: aNSC_walk_pl_same_zone_init + 0x8054AF6C: aNSC_run_pl_same_zone_init + 0x8054AF8C: aNSC_goodbye_wait_init + 0x8054AFAC: aNSC_say_goodbye_init + 0x8054AFD0: aNSC_init_proc + 0x8054B004: aNSC_setupAction 0x806A4640: aNSC_item1_0_tanni_type 0x806A4740: aNSC_item1_1_tanni_type 0x806A4744: aNSC_item1_2_tanni_type @@ -55875,170 +55875,170 @@ src/ac_npc_conv_master.c: 0x806A4A78: aNSC_item_tanni_type 0x806A4B6C: aNSC_exchange_itemNo src/ac_npc_depart_master.c: - 0x8054D495: aNSC_set_animation - 0x8054D4E5: aNSC_BGcheck - 0x8054D529: aNSC_check_present_balloon - 0x8054D595: aNSC_calc_talk_start_tim - 0x8054D5BD: aNSC_request_show_camera - 0x8054D631: aNSC_Set_ListenAble - 0x8054D655: aNSC_set_sell_camera - 0x8054D6E9: aNSC_sell_camera - 0x8054D789: aNSC_talk_demo_proc - 0x8054D7F9: aNSC_set_stop_spd - 0x8054D815: aNSC_set_walk_spd - 0x8054D841: aNSC_set_run_spd - 0x8054D86D: aNSC_set_rehouse_order_date - 0x8054D895: aNSC_set_make_basement_info - 0x8054D8F1: aNSC_getP_free_ftr_order - 0x8054D929: aNSC_set_ftr_order - 0x8054D975: aNSC_set_last_day_str - 0x8054D9C9: aNSC_set_pw_name_str - 0x8054DA25: aNSC_set_value_str - 0x8054DA81: aNSC_set_item_name_str - 0x8054DAE5: aNSC_set_item_str - 0x8054DB3D: aNSC_set_pw_password_str - 0x8054DB9D: aNSC_set_pw_info_str - 0x8054DC05: aNSC_pc_check_password_famicom - 0x8054DC4D: aNSC_pc_check_password_npc - 0x8054DCB9: aNSC_pc_check_password_card_e - 0x8054DCC1: aNSC_pc_check_password_magazine - 0x8054DD35: aNSC_pc_check_password_card_e_mini - 0x8054DD4D: aNSC_pc_check_password_user - 0x8054DD95: aNSC_pc_check_password - 0x8054DE59: aNSC_check_possession_item_make_password - 0x8054DF05: aNSC_set_buy_sum_str - 0x8054DFD9: aNSC_decide_next_move_act - 0x8054E0E9: aNSC_set_zone_data - 0x8054E16D: aNSC_set_player_angl - 0x8054E179: aNSC_money_check - 0x8054E199: aNSC_get_sell_price - 0x8054E1B9: aNSC_check_money_overflow - 0x8054E24D: aNSC_check_buy_item_sub - 0x8054E2F1: aNSC_check_buy_paper - 0x8054E3E1: aNSC_check_buy_item_single - 0x8054E4F9: aNSC_check_buy_item_plural - 0x8054E585: aNSC_check_buy_item - 0x8054E5B9: aNSC_check_item_with_ticket - 0x8054E639: aNSC_setup_ticket_remain - 0x8054E681: aNSC_check_same_month_ticket - 0x8054E6E5: aNSC_get_msg_no - 0x8054E72D: aNSC_Set_continue_msg_num - 0x8054E76D: aNSC_ChangeMsgData - 0x8054E7AD: aNSC_set_player_angle - 0x8054E8B5: aNSC_set_talk_info_show_item - 0x8054E8ED: aNSC_set_talk_info_show_cloth - 0x8054E925: aNSC_set_talk_info_sell_item - 0x8054E9E5: aNSC_set_talk_info_message_ctrl - 0x8054EA0D: aNSC_set_talk_info_message_ctrl_aprilfool - 0x8054EA55: aNSC_set_talk_info_message_ctrl_tokubai - 0x8054EA7D: aNSC_message_ctrl - 0x8054EE5D: aNSC_buy_item_single - 0x8054EF4D: aNSC_buy_paper - 0x8054F05D: aNSC_buy_item_only_one - 0x8054F26D: aNSC_get_start_call_msg_no - 0x8054F2A9: aNSC_set_talk_info_start_wait - 0x8054F49D: aNSC_set_talk_info_start_wait1 - 0x8054F57D: aNSC_set_talk_info_start_wait2 - 0x8054F5C9: aNSC_set_talk_info_start_wait3 - 0x8054F605: aNSC_set_talk_info_start_wait4 - 0x8054F62D: aNSC_start_wait - 0x8054F8E1: aNSC_say_hello_approach - 0x8054F971: aNSC_say_hello_end_wait - 0x8054F9E5: aNSC_check_col_chg_or_make_basement - 0x8054FAB1: aNSC_check_roof_col_order - 0x8054FBE9: aNSC_check_roof_col_order2 - 0x8054FCDD: aNSC_present_balloon_start_wait - 0x8054FD39: aNSC_present_balloon_trans_move - 0x8054FD75: aNSC_present_balloon_trans_takeout - 0x8054FE51: aNSC_present_balloon_trans_wait - 0x8054FE91: aNSC_present_balloon_end_wait - 0x8054FEF9: aNSC_set_talk_info_request_Q_start_wait - 0x8054FF29: aNSC_request_Q_start_wait - 0x8054FFAD: aNSC_request_Q_answer_wait - 0x805500C1: aNSC_request_Q_answer_wait2 - 0x80550251: aNSC_request_Q_end_wait - 0x805502C5: aNSC_answer_buy_item - 0x80550341: aNSC_buy_menu_open_wait - 0x80550399: aNSC_buy_menu_close_wait - 0x805503CD: aNSC_msg_win_open_wait - 0x80550495: aNSC_buy_sum_check - 0x80550591: aNSC_buy_check - 0x80550811: aNSC_buy_after_service - 0x8055088D: aNSC_buy_continue_check - 0x80550979: aNSC_receive_check - 0x80550A1D: aNSC_msg_win_open_wait2 - 0x80550AE5: aNSC_order_check - 0x80550BE1: aNSC_sell_check_before - 0x80550C49: aNSC_sell_check - 0x80550D01: aNSC_sell_answer0 - 0x80550F35: aNSC_sell_item_with_ticket - 0x80550FED: aNSC_show_item_check - 0x805511B9: aNSC_chg_cloth_start_wait - 0x80551281: aNSC_chg_cloth_end_wait - 0x805512DD: aNSC_pw_entry_send_addr_start_wait - 0x80551355: aNSC_pw_msg_win_open_wait - 0x80551401: aNSC_pw_send_addr_check - 0x805514DD: aNSC_pw_sel_item_start_wait - 0x80551555: aNSC_pw_msg_win_open_wait2 - 0x80551605: aNSC_pw_send_check - 0x80551731: aNSC_pw_retry_sel_item_check - 0x805517F9: aNSC_pc_input_pw_start_wait - 0x80551871: aNSC_pc_msg_win_open_wait - 0x80551905: aNSC_pc_retry_input_pw_check - 0x805519F9: aNSC_pc_present_start_wait - 0x80551A55: aNSC_pc_present_trans_takeout - 0x80551B31: aNSC_pc_present_trans_wait - 0x80551B71: aNSC_pc_present_end_wait - 0x80551BD9: aNSC_wait - 0x80551C51: aNSC_walk_pl_other_zone - 0x80551CC9: aNSC_turn - 0x80551D61: aNSC_set_talk_info_goodbye_wait - 0x80551D91: aNSC_goodbye_wait - 0x80551E2D: aNSC_say_goodbye - 0x80551E8D: aNSC_exit_wait - 0x80551F01: aNSC_say_hello_approach_init - 0x80551F21: aNSC_say_hello_end_wait_init - 0x80551F49: aNSC_check_col_chg_or_make_basement_init - 0x80551F69: aNSC_check_roof_col_order_init - 0x80551FA9: aNSC_check_roof_col_order2_init - 0x80551FD5: aNSC_present_balloon_start_wait_init - 0x80551FF1: aNSC_present_balloon_trans_move_init - 0x8055207D: aNSC_present_balloon_trans_takeout_init - 0x805520BD: aNSC_present_balloon_end_wait_init - 0x805520CD: aNSC_request_Q_answer_wait_init - 0x8055210D: aNSC_request_Q_end_wait_init - 0x8055212D: aNSC_answer_buy_item_init - 0x80552159: aNSC_buy_menu_open_wait_init - 0x8055217D: aNSC_buy_menu_close_wait_init - 0x805521C1: aNSC_msg_win_open_wait_init - 0x805521E5: aNSC_buy_sum_check_init - 0x80552211: aNSC_buy_check_init - 0x80552309: aNSC_buy_after_service_init - 0x80552335: aNSC_order_select_menu_close_wait_init - 0x80552379: aNSC_order_check_init - 0x805523A5: aNSC_sell_check_before_init - 0x805523E5: aNSC_sell_answer0_init - 0x805524FD: aNSC_sell_answer1_init - 0x80552531: aNSC_sell_item_init - 0x80552595: aNSC_sell_item_with_ticket_init - 0x805525E5: aNSC_sell_refuse0_init - 0x805525F1: aNSC_show_item_check_init - 0x80552611: aNSC_chg_cloth_start_wait_init - 0x80552635: aNSC_pw_entry_send_addr_start_wait_init - 0x80552661: aNSC_pw_make_menu_close_wait_init - 0x805526C5: aNSC_pw_send_addr_check_init - 0x805526E5: aNSC_pw_sel_item_menu_close_wait_init - 0x80552729: aNSC_pc_input_pw_start_wait_init - 0x80552765: aNSC_pc_chk_menu_close_wait_init - 0x805527AD: aNSC_pc_present_trans_takeout_init - 0x80552835: aNSC_pc_present_end_wait_init - 0x80552845: aNSC_wait_init - 0x80552865: aNSC_walk_pl_same_zone_init - 0x80552885: aNSC_run_pl_same_zone_init - 0x805528A5: aNSC_goodbye_wait_init - 0x805528C5: aNSC_say_goodbye_init - 0x805528E9: aNSC_init_proc - 0x8055291D: aNSC_setupAction + 0x8054D494: aNSC_set_animation + 0x8054D4E4: aNSC_BGcheck + 0x8054D528: aNSC_check_present_balloon + 0x8054D594: aNSC_calc_talk_start_tim + 0x8054D5BC: aNSC_request_show_camera + 0x8054D630: aNSC_Set_ListenAble + 0x8054D654: aNSC_set_sell_camera + 0x8054D6E8: aNSC_sell_camera + 0x8054D788: aNSC_talk_demo_proc + 0x8054D7F8: aNSC_set_stop_spd + 0x8054D814: aNSC_set_walk_spd + 0x8054D840: aNSC_set_run_spd + 0x8054D86C: aNSC_set_rehouse_order_date + 0x8054D894: aNSC_set_make_basement_info + 0x8054D8F0: aNSC_getP_free_ftr_order + 0x8054D928: aNSC_set_ftr_order + 0x8054D974: aNSC_set_last_day_str + 0x8054D9C8: aNSC_set_pw_name_str + 0x8054DA24: aNSC_set_value_str + 0x8054DA80: aNSC_set_item_name_str + 0x8054DAE4: aNSC_set_item_str + 0x8054DB3C: aNSC_set_pw_password_str + 0x8054DB9C: aNSC_set_pw_info_str + 0x8054DC04: aNSC_pc_check_password_famicom + 0x8054DC4C: aNSC_pc_check_password_npc + 0x8054DCB8: aNSC_pc_check_password_card_e + 0x8054DCC0: aNSC_pc_check_password_magazine + 0x8054DD34: aNSC_pc_check_password_card_e_mini + 0x8054DD4C: aNSC_pc_check_password_user + 0x8054DD94: aNSC_pc_check_password + 0x8054DE58: aNSC_check_possession_item_make_password + 0x8054DF04: aNSC_set_buy_sum_str + 0x8054DFD8: aNSC_decide_next_move_act + 0x8054E0E8: aNSC_set_zone_data + 0x8054E16C: aNSC_set_player_angl + 0x8054E178: aNSC_money_check + 0x8054E198: aNSC_get_sell_price + 0x8054E1B8: aNSC_check_money_overflow + 0x8054E24C: aNSC_check_buy_item_sub + 0x8054E2F0: aNSC_check_buy_paper + 0x8054E3E0: aNSC_check_buy_item_single + 0x8054E4F8: aNSC_check_buy_item_plural + 0x8054E584: aNSC_check_buy_item + 0x8054E5B8: aNSC_check_item_with_ticket + 0x8054E638: aNSC_setup_ticket_remain + 0x8054E680: aNSC_check_same_month_ticket + 0x8054E6E4: aNSC_get_msg_no + 0x8054E72C: aNSC_Set_continue_msg_num + 0x8054E76C: aNSC_ChangeMsgData + 0x8054E7AC: aNSC_set_player_angle + 0x8054E8B4: aNSC_set_talk_info_show_item + 0x8054E8EC: aNSC_set_talk_info_show_cloth + 0x8054E924: aNSC_set_talk_info_sell_item + 0x8054E9E4: aNSC_set_talk_info_message_ctrl + 0x8054EA0C: aNSC_set_talk_info_message_ctrl_aprilfool + 0x8054EA54: aNSC_set_talk_info_message_ctrl_tokubai + 0x8054EA7C: aNSC_message_ctrl + 0x8054EE5C: aNSC_buy_item_single + 0x8054EF4C: aNSC_buy_paper + 0x8054F05C: aNSC_buy_item_only_one + 0x8054F26C: aNSC_get_start_call_msg_no + 0x8054F2A8: aNSC_set_talk_info_start_wait + 0x8054F49C: aNSC_set_talk_info_start_wait1 + 0x8054F57C: aNSC_set_talk_info_start_wait2 + 0x8054F5C8: aNSC_set_talk_info_start_wait3 + 0x8054F604: aNSC_set_talk_info_start_wait4 + 0x8054F62C: aNSC_start_wait + 0x8054F8E0: aNSC_say_hello_approach + 0x8054F970: aNSC_say_hello_end_wait + 0x8054F9E4: aNSC_check_col_chg_or_make_basement + 0x8054FAB0: aNSC_check_roof_col_order + 0x8054FBE8: aNSC_check_roof_col_order2 + 0x8054FCDC: aNSC_present_balloon_start_wait + 0x8054FD38: aNSC_present_balloon_trans_move + 0x8054FD74: aNSC_present_balloon_trans_takeout + 0x8054FE50: aNSC_present_balloon_trans_wait + 0x8054FE90: aNSC_present_balloon_end_wait + 0x8054FEF8: aNSC_set_talk_info_request_Q_start_wait + 0x8054FF28: aNSC_request_Q_start_wait + 0x8054FFAC: aNSC_request_Q_answer_wait + 0x805500C0: aNSC_request_Q_answer_wait2 + 0x80550250: aNSC_request_Q_end_wait + 0x805502C4: aNSC_answer_buy_item + 0x80550340: aNSC_buy_menu_open_wait + 0x80550398: aNSC_buy_menu_close_wait + 0x805503CC: aNSC_msg_win_open_wait + 0x80550494: aNSC_buy_sum_check + 0x80550590: aNSC_buy_check + 0x80550810: aNSC_buy_after_service + 0x8055088C: aNSC_buy_continue_check + 0x80550978: aNSC_receive_check + 0x80550A1C: aNSC_msg_win_open_wait2 + 0x80550AE4: aNSC_order_check + 0x80550BE0: aNSC_sell_check_before + 0x80550C48: aNSC_sell_check + 0x80550D00: aNSC_sell_answer0 + 0x80550F34: aNSC_sell_item_with_ticket + 0x80550FEC: aNSC_show_item_check + 0x805511B8: aNSC_chg_cloth_start_wait + 0x80551280: aNSC_chg_cloth_end_wait + 0x805512DC: aNSC_pw_entry_send_addr_start_wait + 0x80551354: aNSC_pw_msg_win_open_wait + 0x80551400: aNSC_pw_send_addr_check + 0x805514DC: aNSC_pw_sel_item_start_wait + 0x80551554: aNSC_pw_msg_win_open_wait2 + 0x80551604: aNSC_pw_send_check + 0x80551730: aNSC_pw_retry_sel_item_check + 0x805517F8: aNSC_pc_input_pw_start_wait + 0x80551870: aNSC_pc_msg_win_open_wait + 0x80551904: aNSC_pc_retry_input_pw_check + 0x805519F8: aNSC_pc_present_start_wait + 0x80551A54: aNSC_pc_present_trans_takeout + 0x80551B30: aNSC_pc_present_trans_wait + 0x80551B70: aNSC_pc_present_end_wait + 0x80551BD8: aNSC_wait + 0x80551C50: aNSC_walk_pl_other_zone + 0x80551CC8: aNSC_turn + 0x80551D60: aNSC_set_talk_info_goodbye_wait + 0x80551D90: aNSC_goodbye_wait + 0x80551E2C: aNSC_say_goodbye + 0x80551E8C: aNSC_exit_wait + 0x80551F00: aNSC_say_hello_approach_init + 0x80551F20: aNSC_say_hello_end_wait_init + 0x80551F48: aNSC_check_col_chg_or_make_basement_init + 0x80551F68: aNSC_check_roof_col_order_init + 0x80551FA8: aNSC_check_roof_col_order2_init + 0x80551FD4: aNSC_present_balloon_start_wait_init + 0x80551FF0: aNSC_present_balloon_trans_move_init + 0x8055207C: aNSC_present_balloon_trans_takeout_init + 0x805520BC: aNSC_present_balloon_end_wait_init + 0x805520CC: aNSC_request_Q_answer_wait_init + 0x8055210C: aNSC_request_Q_end_wait_init + 0x8055212C: aNSC_answer_buy_item_init + 0x80552158: aNSC_buy_menu_open_wait_init + 0x8055217C: aNSC_buy_menu_close_wait_init + 0x805521C0: aNSC_msg_win_open_wait_init + 0x805521E4: aNSC_buy_sum_check_init + 0x80552210: aNSC_buy_check_init + 0x80552308: aNSC_buy_after_service_init + 0x80552334: aNSC_order_select_menu_close_wait_init + 0x80552378: aNSC_order_check_init + 0x805523A4: aNSC_sell_check_before_init + 0x805523E4: aNSC_sell_answer0_init + 0x805524FC: aNSC_sell_answer1_init + 0x80552530: aNSC_sell_item_init + 0x80552594: aNSC_sell_item_with_ticket_init + 0x805525E4: aNSC_sell_refuse0_init + 0x805525F0: aNSC_show_item_check_init + 0x80552610: aNSC_chg_cloth_start_wait_init + 0x80552634: aNSC_pw_entry_send_addr_start_wait_init + 0x80552660: aNSC_pw_make_menu_close_wait_init + 0x805526C4: aNSC_pw_send_addr_check_init + 0x805526E4: aNSC_pw_sel_item_menu_close_wait_init + 0x80552728: aNSC_pc_input_pw_start_wait_init + 0x80552764: aNSC_pc_chk_menu_close_wait_init + 0x805527AC: aNSC_pc_present_trans_takeout_init + 0x80552834: aNSC_pc_present_end_wait_init + 0x80552844: aNSC_wait_init + 0x80552864: aNSC_walk_pl_same_zone_init + 0x80552884: aNSC_run_pl_same_zone_init + 0x805528A4: aNSC_goodbye_wait_init + 0x805528C4: aNSC_say_goodbye_init + 0x805528E8: aNSC_init_proc + 0x8055291C: aNSC_setupAction 0x806A5854: aNSC_item1_0_tanni_type 0x806A5954: aNSC_item1_1_tanni_type 0x806A5958: aNSC_item1_2_tanni_type @@ -56058,145 +56058,145 @@ src/ac_npc_depart_master.c: 0x806A5C8C: aNSC_item_tanni_type 0x806A5D80: aNSC_exchange_itemNo src/ac_npc_mamedanuki.c: - 0x8055A4ED: aNSC_set_animation - 0x8055A53D: aNSC_BGcheck - 0x8055A581: aNSC_calc_talk_start_tim - 0x8055A5A9: aNSC_request_show_camera - 0x8055A61D: aNSC_Set_ListenAble - 0x8055A641: aNSC_set_sell_camera - 0x8055A6D5: aNSC_sell_camera - 0x8055A775: aNSC_talk_demo_proc - 0x8055A7E5: aNSC_set_stop_spd - 0x8055A801: aNSC_set_walk_spd - 0x8055A82D: aNSC_set_run_spd - 0x8055A859: aNSC_getP_free_ftr_order - 0x8055A891: aNSC_set_ftr_order - 0x8055A8DD: aNSC_set_last_day_str - 0x8055A931: aNSC_set_pw_name_str - 0x8055A98D: aNSC_set_value_str - 0x8055A9E9: aNSC_set_item_name_str - 0x8055AA4D: aNSC_set_item_str - 0x8055AAA5: aNSC_set_pw_password_str - 0x8055AB05: aNSC_set_pw_info_str - 0x8055AB6D: aNSC_pc_check_password_famicom - 0x8055ABB5: aNSC_pc_check_password_npc - 0x8055AC21: aNSC_pc_check_password_card_e - 0x8055AC29: aNSC_pc_check_password_magazine - 0x8055AC9D: aNSC_pc_check_password_card_e_mini - 0x8055ACB5: aNSC_pc_check_password_user - 0x8055ACFD: aNSC_pc_check_password - 0x8055ADC1: aNSC_check_possession_item_make_password - 0x8055AE6D: aNSC_set_buy_sum_str - 0x8055AF41: aNSC_decide_next_move_act - 0x8055B0C5: aNSC_set_zone_data - 0x8055B14D: aNSC_set_player_angl - 0x8055B159: aNSC_money_check - 0x8055B179: aNSC_get_sell_price - 0x8055B199: aNSC_check_money_overflow - 0x8055B22D: aNSC_check_buy_item_sub - 0x8055B2D1: aNSC_check_buy_paper - 0x8055B3C1: aNSC_check_buy_item_single - 0x8055B4D9: aNSC_check_buy_item_plural - 0x8055B565: aNSC_check_buy_item - 0x8055B599: aNSC_check_item_with_ticket - 0x8055B619: aNSC_setup_ticket_remain - 0x8055B661: aNSC_check_same_month_ticket - 0x8055B6C5: aNSC_get_msg_no - 0x8055B6FD: aNSC_Set_continue_msg_num - 0x8055B73D: aNSC_ChangeMsgData - 0x8055B77D: aNSC_set_player_angle - 0x8055B885: aNSC_set_talk_info_show_item - 0x8055B8BD: aNSC_set_talk_info_show_cloth - 0x8055B8F5: aNSC_set_talk_info_sell_item - 0x8055B9B5: aNSC_set_talk_info_message_ctrl - 0x8055BF0D: aNSC_message_ctrl - 0x8055BFFD: aNSC_buy_item_single - 0x8055C0ED: aNSC_buy_paper - 0x8055C1FD: aNSC_buy_item_only_one - 0x8055C40D: aNSC_set_talk_info_start_wait - 0x8055C461: aNSC_start_wait - 0x8055C4E5: aNSC_say_hello_approach - 0x8055C57D: aNSC_say_hello_end_wait - 0x8055C5F1: aNSC_set_talk_info_request_Q_start_wait - 0x8055C621: aNSC_request_Q_start_wait - 0x8055C6A5: aNSC_request_Q_answer_wait - 0x8055C7B9: aNSC_request_Q_answer_wait2 - 0x8055C949: aNSC_request_Q_end_wait - 0x8055C9BD: aNSC_answer_buy_item - 0x8055CA39: aNSC_buy_menu_open_wait - 0x8055CA91: aNSC_buy_menu_close_wait - 0x8055CAC5: aNSC_msg_win_open_wait - 0x8055CB8D: aNSC_buy_sum_check - 0x8055CC89: aNSC_buy_check - 0x8055CF09: aNSC_buy_after_service - 0x8055CF85: aNSC_buy_continue_check - 0x8055D071: aNSC_receive_check - 0x8055D115: aNSC_msg_win_open_wait2 - 0x8055D1DD: aNSC_order_check - 0x8055D2D9: aNSC_sell_check_before - 0x8055D341: aNSC_sell_check - 0x8055D3F9: aNSC_sell_answer0 - 0x8055D62D: aNSC_sell_item_with_ticket - 0x8055D6E5: aNSC_show_item_check - 0x8055D8B1: aNSC_chg_cloth_start_wait - 0x8055D979: aNSC_chg_cloth_end_wait - 0x8055D9D5: aNSC_pw_entry_send_addr_start_wait - 0x8055DA4D: aNSC_pw_msg_win_open_wait - 0x8055DAF9: aNSC_pw_send_addr_check - 0x8055DBD5: aNSC_pw_sel_item_start_wait - 0x8055DC4D: aNSC_pw_msg_win_open_wait2 - 0x8055DCFD: aNSC_pw_send_check - 0x8055DE29: aNSC_pw_retry_sel_item_check - 0x8055DEF1: aNSC_pc_input_pw_start_wait - 0x8055DF69: aNSC_pc_msg_win_open_wait - 0x8055DFFD: aNSC_pc_retry_input_pw_check - 0x8055E0F1: aNSC_pc_present_start_wait - 0x8055E14D: aNSC_pc_present_trans_takeout - 0x8055E229: aNSC_pc_present_trans_wait - 0x8055E269: aNSC_pc_present_end_wait - 0x8055E2D1: aNSC_wait - 0x8055E349: aNSC_walk_pl_other_zone - 0x8055E3C1: aNSC_turn - 0x8055E459: aNSC_set_talk_info_goodbye_wait - 0x8055E489: aNSC_goodbye_wait - 0x8055E555: aNSC_say_goodbye - 0x8055E5B5: aNSC_exit_wait - 0x8055E621: aNSC_say_hello_approach_init - 0x8055E641: aNSC_say_hello_end_wait_init - 0x8055E669: aNSC_request_Q_answer_wait_init - 0x8055E6A9: aNSC_request_Q_end_wait_init - 0x8055E6C9: aNSC_answer_buy_item_init - 0x8055E6F5: aNSC_buy_menu_open_wait_init - 0x8055E719: aNSC_buy_menu_close_wait_init - 0x8055E75D: aNSC_msg_win_open_wait_init - 0x8055E781: aNSC_buy_sum_check_init - 0x8055E7AD: aNSC_buy_check_init - 0x8055E8A5: aNSC_buy_after_service_init - 0x8055E8D1: aNSC_order_select_menu_close_wait_init - 0x8055E915: aNSC_order_check_init - 0x8055E941: aNSC_sell_check_before_init - 0x8055E981: aNSC_sell_answer0_init - 0x8055EA99: aNSC_sell_answer1_init - 0x8055EACD: aNSC_sell_item_init - 0x8055EB31: aNSC_sell_item_with_ticket_init - 0x8055EB81: aNSC_sell_refuse0_init - 0x8055EB8D: aNSC_show_item_check_init - 0x8055EBAD: aNSC_chg_cloth_start_wait_init - 0x8055EBD1: aNSC_pw_entry_send_addr_start_wait_init - 0x8055EBFD: aNSC_pw_make_menu_close_wait_init - 0x8055EC61: aNSC_pw_send_addr_check_init - 0x8055EC81: aNSC_pw_sel_item_menu_close_wait_init - 0x8055ECC5: aNSC_pc_input_pw_start_wait_init - 0x8055ED01: aNSC_pc_chk_menu_close_wait_init - 0x8055ED49: aNSC_pc_present_trans_takeout_init - 0x8055EDD1: aNSC_pc_present_end_wait_init - 0x8055EDE1: aNSC_wait_init - 0x8055EE01: aNSC_walk_pl_same_zone_init - 0x8055EE21: aNSC_run_pl_same_zone_init - 0x8055EE41: aNSC_goodbye_wait_init - 0x8055EE61: aNSC_say_goodbye_init - 0x8055EE85: aNSC_init_proc - 0x8055EEB9: aNSC_setupAction + 0x8055A4EC: aNSC_set_animation + 0x8055A53C: aNSC_BGcheck + 0x8055A580: aNSC_calc_talk_start_tim + 0x8055A5A8: aNSC_request_show_camera + 0x8055A61C: aNSC_Set_ListenAble + 0x8055A640: aNSC_set_sell_camera + 0x8055A6D4: aNSC_sell_camera + 0x8055A774: aNSC_talk_demo_proc + 0x8055A7E4: aNSC_set_stop_spd + 0x8055A800: aNSC_set_walk_spd + 0x8055A82C: aNSC_set_run_spd + 0x8055A858: aNSC_getP_free_ftr_order + 0x8055A890: aNSC_set_ftr_order + 0x8055A8DC: aNSC_set_last_day_str + 0x8055A930: aNSC_set_pw_name_str + 0x8055A98C: aNSC_set_value_str + 0x8055A9E8: aNSC_set_item_name_str + 0x8055AA4C: aNSC_set_item_str + 0x8055AAA4: aNSC_set_pw_password_str + 0x8055AB04: aNSC_set_pw_info_str + 0x8055AB6C: aNSC_pc_check_password_famicom + 0x8055ABB4: aNSC_pc_check_password_npc + 0x8055AC20: aNSC_pc_check_password_card_e + 0x8055AC28: aNSC_pc_check_password_magazine + 0x8055AC9C: aNSC_pc_check_password_card_e_mini + 0x8055ACB4: aNSC_pc_check_password_user + 0x8055ACFC: aNSC_pc_check_password + 0x8055ADC0: aNSC_check_possession_item_make_password + 0x8055AE6C: aNSC_set_buy_sum_str + 0x8055AF40: aNSC_decide_next_move_act + 0x8055B0C4: aNSC_set_zone_data + 0x8055B14C: aNSC_set_player_angl + 0x8055B158: aNSC_money_check + 0x8055B178: aNSC_get_sell_price + 0x8055B198: aNSC_check_money_overflow + 0x8055B22C: aNSC_check_buy_item_sub + 0x8055B2D0: aNSC_check_buy_paper + 0x8055B3C0: aNSC_check_buy_item_single + 0x8055B4D8: aNSC_check_buy_item_plural + 0x8055B564: aNSC_check_buy_item + 0x8055B598: aNSC_check_item_with_ticket + 0x8055B618: aNSC_setup_ticket_remain + 0x8055B660: aNSC_check_same_month_ticket + 0x8055B6C4: aNSC_get_msg_no + 0x8055B6FC: aNSC_Set_continue_msg_num + 0x8055B73C: aNSC_ChangeMsgData + 0x8055B77C: aNSC_set_player_angle + 0x8055B884: aNSC_set_talk_info_show_item + 0x8055B8BC: aNSC_set_talk_info_show_cloth + 0x8055B8F4: aNSC_set_talk_info_sell_item + 0x8055B9B4: aNSC_set_talk_info_message_ctrl + 0x8055BF0C: aNSC_message_ctrl + 0x8055BFFC: aNSC_buy_item_single + 0x8055C0EC: aNSC_buy_paper + 0x8055C1FC: aNSC_buy_item_only_one + 0x8055C40C: aNSC_set_talk_info_start_wait + 0x8055C460: aNSC_start_wait + 0x8055C4E4: aNSC_say_hello_approach + 0x8055C57C: aNSC_say_hello_end_wait + 0x8055C5F0: aNSC_set_talk_info_request_Q_start_wait + 0x8055C620: aNSC_request_Q_start_wait + 0x8055C6A4: aNSC_request_Q_answer_wait + 0x8055C7B8: aNSC_request_Q_answer_wait2 + 0x8055C948: aNSC_request_Q_end_wait + 0x8055C9BC: aNSC_answer_buy_item + 0x8055CA38: aNSC_buy_menu_open_wait + 0x8055CA90: aNSC_buy_menu_close_wait + 0x8055CAC4: aNSC_msg_win_open_wait + 0x8055CB8C: aNSC_buy_sum_check + 0x8055CC88: aNSC_buy_check + 0x8055CF08: aNSC_buy_after_service + 0x8055CF84: aNSC_buy_continue_check + 0x8055D070: aNSC_receive_check + 0x8055D114: aNSC_msg_win_open_wait2 + 0x8055D1DC: aNSC_order_check + 0x8055D2D8: aNSC_sell_check_before + 0x8055D340: aNSC_sell_check + 0x8055D3F8: aNSC_sell_answer0 + 0x8055D62C: aNSC_sell_item_with_ticket + 0x8055D6E4: aNSC_show_item_check + 0x8055D8B0: aNSC_chg_cloth_start_wait + 0x8055D978: aNSC_chg_cloth_end_wait + 0x8055D9D4: aNSC_pw_entry_send_addr_start_wait + 0x8055DA4C: aNSC_pw_msg_win_open_wait + 0x8055DAF8: aNSC_pw_send_addr_check + 0x8055DBD4: aNSC_pw_sel_item_start_wait + 0x8055DC4C: aNSC_pw_msg_win_open_wait2 + 0x8055DCFC: aNSC_pw_send_check + 0x8055DE28: aNSC_pw_retry_sel_item_check + 0x8055DEF0: aNSC_pc_input_pw_start_wait + 0x8055DF68: aNSC_pc_msg_win_open_wait + 0x8055DFFC: aNSC_pc_retry_input_pw_check + 0x8055E0F0: aNSC_pc_present_start_wait + 0x8055E14C: aNSC_pc_present_trans_takeout + 0x8055E228: aNSC_pc_present_trans_wait + 0x8055E268: aNSC_pc_present_end_wait + 0x8055E2D0: aNSC_wait + 0x8055E348: aNSC_walk_pl_other_zone + 0x8055E3C0: aNSC_turn + 0x8055E458: aNSC_set_talk_info_goodbye_wait + 0x8055E488: aNSC_goodbye_wait + 0x8055E554: aNSC_say_goodbye + 0x8055E5B4: aNSC_exit_wait + 0x8055E620: aNSC_say_hello_approach_init + 0x8055E640: aNSC_say_hello_end_wait_init + 0x8055E668: aNSC_request_Q_answer_wait_init + 0x8055E6A8: aNSC_request_Q_end_wait_init + 0x8055E6C8: aNSC_answer_buy_item_init + 0x8055E6F4: aNSC_buy_menu_open_wait_init + 0x8055E718: aNSC_buy_menu_close_wait_init + 0x8055E75C: aNSC_msg_win_open_wait_init + 0x8055E780: aNSC_buy_sum_check_init + 0x8055E7AC: aNSC_buy_check_init + 0x8055E8A4: aNSC_buy_after_service_init + 0x8055E8D0: aNSC_order_select_menu_close_wait_init + 0x8055E914: aNSC_order_check_init + 0x8055E940: aNSC_sell_check_before_init + 0x8055E980: aNSC_sell_answer0_init + 0x8055EA98: aNSC_sell_answer1_init + 0x8055EACC: aNSC_sell_item_init + 0x8055EB30: aNSC_sell_item_with_ticket_init + 0x8055EB80: aNSC_sell_refuse0_init + 0x8055EB8C: aNSC_show_item_check_init + 0x8055EBAC: aNSC_chg_cloth_start_wait_init + 0x8055EBD0: aNSC_pw_entry_send_addr_start_wait_init + 0x8055EBFC: aNSC_pw_make_menu_close_wait_init + 0x8055EC60: aNSC_pw_send_addr_check_init + 0x8055EC80: aNSC_pw_sel_item_menu_close_wait_init + 0x8055ECC4: aNSC_pc_input_pw_start_wait_init + 0x8055ED00: aNSC_pc_chk_menu_close_wait_init + 0x8055ED48: aNSC_pc_present_trans_takeout_init + 0x8055EDD0: aNSC_pc_present_end_wait_init + 0x8055EDE0: aNSC_wait_init + 0x8055EE00: aNSC_walk_pl_same_zone_init + 0x8055EE20: aNSC_run_pl_same_zone_init + 0x8055EE40: aNSC_goodbye_wait_init + 0x8055EE60: aNSC_say_goodbye_init + 0x8055EE84: aNSC_init_proc + 0x8055EEB8: aNSC_setupAction 0x806A99E4: aNSC_item1_0_tanni_type 0x806A9AE4: aNSC_item1_1_tanni_type 0x806A9AE8: aNSC_item1_2_tanni_type @@ -56216,170 +56216,170 @@ src/ac_npc_mamedanuki.c: 0x806A9E1C: aNSC_item_tanni_type 0x806A9F30: aNSC_exchange_itemNo src/ac_npc_shop_master.c: - 0x80577115: aNSC_set_animation - 0x80577165: aNSC_BGcheck - 0x805771A9: aNSC_check_present_balloon - 0x80577215: aNSC_calc_talk_start_tim - 0x8057723D: aNSC_request_show_camera - 0x805772B1: aNSC_Set_ListenAble - 0x805772D5: aNSC_set_sell_camera - 0x80577369: aNSC_sell_camera - 0x80577409: aNSC_talk_demo_proc - 0x80577479: aNSC_set_stop_spd - 0x80577495: aNSC_set_walk_spd - 0x805774C1: aNSC_set_run_spd - 0x805774ED: aNSC_set_rehouse_order_date - 0x80577515: aNSC_set_make_basement_info - 0x80577571: aNSC_getP_free_ftr_order - 0x805775A9: aNSC_set_ftr_order - 0x805775F5: aNSC_set_last_day_str - 0x80577649: aNSC_set_pw_name_str - 0x805776A5: aNSC_set_value_str - 0x80577701: aNSC_set_item_name_str - 0x80577765: aNSC_set_item_str - 0x805777BD: aNSC_set_pw_password_str - 0x8057781D: aNSC_set_pw_info_str - 0x80577885: aNSC_pc_check_password_famicom - 0x805778CD: aNSC_pc_check_password_npc - 0x80577939: aNSC_pc_check_password_card_e - 0x80577941: aNSC_pc_check_password_magazine - 0x805779B5: aNSC_pc_check_password_card_e_mini - 0x805779CD: aNSC_pc_check_password_user - 0x80577A15: aNSC_pc_check_password - 0x80577AD9: aNSC_check_possession_item_make_password - 0x80577B85: aNSC_set_buy_sum_str - 0x80577C59: aNSC_decide_next_move_act - 0x80577D69: aNSC_set_zone_data - 0x80577DED: aNSC_set_player_angl - 0x80577DF9: aNSC_money_check - 0x80577E19: aNSC_get_sell_price - 0x80577E39: aNSC_check_money_overflow - 0x80577ECD: aNSC_check_buy_item_sub - 0x80577F71: aNSC_check_buy_paper - 0x80578061: aNSC_check_buy_item_single - 0x80578179: aNSC_check_buy_item_plural - 0x80578205: aNSC_check_buy_item - 0x80578239: aNSC_check_item_with_ticket - 0x805782B9: aNSC_setup_ticket_remain - 0x80578301: aNSC_check_same_month_ticket - 0x80578365: aNSC_get_msg_no - 0x805783AD: aNSC_Set_continue_msg_num - 0x805783ED: aNSC_ChangeMsgData - 0x8057842D: aNSC_set_player_angle - 0x80578535: aNSC_set_talk_info_show_item - 0x8057856D: aNSC_set_talk_info_show_cloth - 0x805785A5: aNSC_set_talk_info_sell_item - 0x80578665: aNSC_set_talk_info_message_ctrl - 0x8057868D: aNSC_set_talk_info_message_ctrl_aprilfool - 0x805786D5: aNSC_set_talk_info_message_ctrl_tokubai - 0x805786FD: aNSC_message_ctrl - 0x80578ADD: aNSC_buy_item_single - 0x80578BCD: aNSC_buy_paper - 0x80578CDD: aNSC_buy_item_only_one - 0x80578EED: aNSC_get_start_call_msg_no - 0x80578F29: aNSC_set_talk_info_start_wait - 0x8057911D: aNSC_set_talk_info_start_wait1 - 0x805791FD: aNSC_set_talk_info_start_wait2 - 0x80579249: aNSC_set_talk_info_start_wait3 - 0x80579285: aNSC_set_talk_info_start_wait4 - 0x805792AD: aNSC_start_wait - 0x80579561: aNSC_say_hello_approach - 0x805795F1: aNSC_say_hello_end_wait - 0x80579665: aNSC_check_col_chg_or_make_basement - 0x80579731: aNSC_check_roof_col_order - 0x80579869: aNSC_check_roof_col_order2 - 0x8057995D: aNSC_present_balloon_start_wait - 0x805799B9: aNSC_present_balloon_trans_move - 0x805799F5: aNSC_present_balloon_trans_takeout - 0x80579AD1: aNSC_present_balloon_trans_wait - 0x80579B11: aNSC_present_balloon_end_wait - 0x80579B79: aNSC_set_talk_info_request_Q_start_wait - 0x80579BA9: aNSC_request_Q_start_wait - 0x80579C2D: aNSC_request_Q_answer_wait - 0x80579D41: aNSC_request_Q_answer_wait2 - 0x80579ED1: aNSC_request_Q_end_wait - 0x80579F45: aNSC_answer_buy_item - 0x80579FC1: aNSC_buy_menu_open_wait - 0x8057A019: aNSC_buy_menu_close_wait - 0x8057A04D: aNSC_msg_win_open_wait - 0x8057A115: aNSC_buy_sum_check - 0x8057A211: aNSC_buy_check - 0x8057A491: aNSC_buy_after_service - 0x8057A50D: aNSC_buy_continue_check - 0x8057A5F9: aNSC_receive_check - 0x8057A69D: aNSC_msg_win_open_wait2 - 0x8057A765: aNSC_order_check - 0x8057A861: aNSC_sell_check_before - 0x8057A8C9: aNSC_sell_check - 0x8057A981: aNSC_sell_answer0 - 0x8057ABB5: aNSC_sell_item_with_ticket - 0x8057AC6D: aNSC_show_item_check - 0x8057AE39: aNSC_chg_cloth_start_wait - 0x8057AF01: aNSC_chg_cloth_end_wait - 0x8057AF5D: aNSC_pw_entry_send_addr_start_wait - 0x8057AFD5: aNSC_pw_msg_win_open_wait - 0x8057B081: aNSC_pw_send_addr_check - 0x8057B15D: aNSC_pw_sel_item_start_wait - 0x8057B1D5: aNSC_pw_msg_win_open_wait2 - 0x8057B285: aNSC_pw_send_check - 0x8057B3B1: aNSC_pw_retry_sel_item_check - 0x8057B479: aNSC_pc_input_pw_start_wait - 0x8057B4F1: aNSC_pc_msg_win_open_wait - 0x8057B585: aNSC_pc_retry_input_pw_check - 0x8057B679: aNSC_pc_present_start_wait - 0x8057B6D5: aNSC_pc_present_trans_takeout - 0x8057B7B1: aNSC_pc_present_trans_wait - 0x8057B7F1: aNSC_pc_present_end_wait - 0x8057B859: aNSC_wait - 0x8057B8D1: aNSC_walk_pl_other_zone - 0x8057B949: aNSC_turn - 0x8057B9E1: aNSC_set_talk_info_goodbye_wait - 0x8057BA11: aNSC_goodbye_wait - 0x8057BAAD: aNSC_say_goodbye - 0x8057BB0D: aNSC_exit_wait - 0x8057BB81: aNSC_say_hello_approach_init - 0x8057BBA1: aNSC_say_hello_end_wait_init - 0x8057BBC9: aNSC_check_col_chg_or_make_basement_init - 0x8057BBE9: aNSC_check_roof_col_order_init - 0x8057BC29: aNSC_check_roof_col_order2_init - 0x8057BC55: aNSC_present_balloon_start_wait_init - 0x8057BC71: aNSC_present_balloon_trans_move_init - 0x8057BCFD: aNSC_present_balloon_trans_takeout_init - 0x8057BD3D: aNSC_present_balloon_end_wait_init - 0x8057BD4D: aNSC_request_Q_answer_wait_init - 0x8057BD8D: aNSC_request_Q_end_wait_init - 0x8057BDAD: aNSC_answer_buy_item_init - 0x8057BDD9: aNSC_buy_menu_open_wait_init - 0x8057BDFD: aNSC_buy_menu_close_wait_init - 0x8057BE41: aNSC_msg_win_open_wait_init - 0x8057BE65: aNSC_buy_sum_check_init - 0x8057BE91: aNSC_buy_check_init - 0x8057BF89: aNSC_buy_after_service_init - 0x8057BFB5: aNSC_order_select_menu_close_wait_init - 0x8057BFF9: aNSC_order_check_init - 0x8057C025: aNSC_sell_check_before_init - 0x8057C065: aNSC_sell_answer0_init - 0x8057C17D: aNSC_sell_answer1_init - 0x8057C1B1: aNSC_sell_item_init - 0x8057C215: aNSC_sell_item_with_ticket_init - 0x8057C265: aNSC_sell_refuse0_init - 0x8057C271: aNSC_show_item_check_init - 0x8057C291: aNSC_chg_cloth_start_wait_init - 0x8057C2B5: aNSC_pw_entry_send_addr_start_wait_init - 0x8057C2E1: aNSC_pw_make_menu_close_wait_init - 0x8057C345: aNSC_pw_send_addr_check_init - 0x8057C365: aNSC_pw_sel_item_menu_close_wait_init - 0x8057C3A9: aNSC_pc_input_pw_start_wait_init - 0x8057C3E5: aNSC_pc_chk_menu_close_wait_init - 0x8057C42D: aNSC_pc_present_trans_takeout_init - 0x8057C4B5: aNSC_pc_present_end_wait_init - 0x8057C4C5: aNSC_wait_init - 0x8057C4E5: aNSC_walk_pl_same_zone_init - 0x8057C505: aNSC_run_pl_same_zone_init - 0x8057C525: aNSC_goodbye_wait_init - 0x8057C545: aNSC_say_goodbye_init - 0x8057C569: aNSC_init_proc - 0x8057C59D: aNSC_setupAction + 0x80577114: aNSC_set_animation + 0x80577164: aNSC_BGcheck + 0x805771A8: aNSC_check_present_balloon + 0x80577214: aNSC_calc_talk_start_tim + 0x8057723C: aNSC_request_show_camera + 0x805772B0: aNSC_Set_ListenAble + 0x805772D4: aNSC_set_sell_camera + 0x80577368: aNSC_sell_camera + 0x80577408: aNSC_talk_demo_proc + 0x80577478: aNSC_set_stop_spd + 0x80577494: aNSC_set_walk_spd + 0x805774C0: aNSC_set_run_spd + 0x805774EC: aNSC_set_rehouse_order_date + 0x80577514: aNSC_set_make_basement_info + 0x80577570: aNSC_getP_free_ftr_order + 0x805775A8: aNSC_set_ftr_order + 0x805775F4: aNSC_set_last_day_str + 0x80577648: aNSC_set_pw_name_str + 0x805776A4: aNSC_set_value_str + 0x80577700: aNSC_set_item_name_str + 0x80577764: aNSC_set_item_str + 0x805777BC: aNSC_set_pw_password_str + 0x8057781C: aNSC_set_pw_info_str + 0x80577884: aNSC_pc_check_password_famicom + 0x805778CC: aNSC_pc_check_password_npc + 0x80577938: aNSC_pc_check_password_card_e + 0x80577940: aNSC_pc_check_password_magazine + 0x805779B4: aNSC_pc_check_password_card_e_mini + 0x805779CC: aNSC_pc_check_password_user + 0x80577A14: aNSC_pc_check_password + 0x80577AD8: aNSC_check_possession_item_make_password + 0x80577B84: aNSC_set_buy_sum_str + 0x80577C58: aNSC_decide_next_move_act + 0x80577D68: aNSC_set_zone_data + 0x80577DEC: aNSC_set_player_angl + 0x80577DF8: aNSC_money_check + 0x80577E18: aNSC_get_sell_price + 0x80577E38: aNSC_check_money_overflow + 0x80577ECC: aNSC_check_buy_item_sub + 0x80577F70: aNSC_check_buy_paper + 0x80578060: aNSC_check_buy_item_single + 0x80578178: aNSC_check_buy_item_plural + 0x80578204: aNSC_check_buy_item + 0x80578238: aNSC_check_item_with_ticket + 0x805782B8: aNSC_setup_ticket_remain + 0x80578300: aNSC_check_same_month_ticket + 0x80578364: aNSC_get_msg_no + 0x805783AC: aNSC_Set_continue_msg_num + 0x805783EC: aNSC_ChangeMsgData + 0x8057842C: aNSC_set_player_angle + 0x80578534: aNSC_set_talk_info_show_item + 0x8057856C: aNSC_set_talk_info_show_cloth + 0x805785A4: aNSC_set_talk_info_sell_item + 0x80578664: aNSC_set_talk_info_message_ctrl + 0x8057868C: aNSC_set_talk_info_message_ctrl_aprilfool + 0x805786D4: aNSC_set_talk_info_message_ctrl_tokubai + 0x805786FC: aNSC_message_ctrl + 0x80578ADC: aNSC_buy_item_single + 0x80578BCC: aNSC_buy_paper + 0x80578CDC: aNSC_buy_item_only_one + 0x80578EEC: aNSC_get_start_call_msg_no + 0x80578F28: aNSC_set_talk_info_start_wait + 0x8057911C: aNSC_set_talk_info_start_wait1 + 0x805791FC: aNSC_set_talk_info_start_wait2 + 0x80579248: aNSC_set_talk_info_start_wait3 + 0x80579284: aNSC_set_talk_info_start_wait4 + 0x805792AC: aNSC_start_wait + 0x80579560: aNSC_say_hello_approach + 0x805795F0: aNSC_say_hello_end_wait + 0x80579664: aNSC_check_col_chg_or_make_basement + 0x80579730: aNSC_check_roof_col_order + 0x80579868: aNSC_check_roof_col_order2 + 0x8057995C: aNSC_present_balloon_start_wait + 0x805799B8: aNSC_present_balloon_trans_move + 0x805799F4: aNSC_present_balloon_trans_takeout + 0x80579AD0: aNSC_present_balloon_trans_wait + 0x80579B10: aNSC_present_balloon_end_wait + 0x80579B78: aNSC_set_talk_info_request_Q_start_wait + 0x80579BA8: aNSC_request_Q_start_wait + 0x80579C2C: aNSC_request_Q_answer_wait + 0x80579D40: aNSC_request_Q_answer_wait2 + 0x80579ED0: aNSC_request_Q_end_wait + 0x80579F44: aNSC_answer_buy_item + 0x80579FC0: aNSC_buy_menu_open_wait + 0x8057A018: aNSC_buy_menu_close_wait + 0x8057A04C: aNSC_msg_win_open_wait + 0x8057A114: aNSC_buy_sum_check + 0x8057A210: aNSC_buy_check + 0x8057A490: aNSC_buy_after_service + 0x8057A50C: aNSC_buy_continue_check + 0x8057A5F8: aNSC_receive_check + 0x8057A69C: aNSC_msg_win_open_wait2 + 0x8057A764: aNSC_order_check + 0x8057A860: aNSC_sell_check_before + 0x8057A8C8: aNSC_sell_check + 0x8057A980: aNSC_sell_answer0 + 0x8057ABB4: aNSC_sell_item_with_ticket + 0x8057AC6C: aNSC_show_item_check + 0x8057AE38: aNSC_chg_cloth_start_wait + 0x8057AF00: aNSC_chg_cloth_end_wait + 0x8057AF5C: aNSC_pw_entry_send_addr_start_wait + 0x8057AFD4: aNSC_pw_msg_win_open_wait + 0x8057B080: aNSC_pw_send_addr_check + 0x8057B15C: aNSC_pw_sel_item_start_wait + 0x8057B1D4: aNSC_pw_msg_win_open_wait2 + 0x8057B284: aNSC_pw_send_check + 0x8057B3B0: aNSC_pw_retry_sel_item_check + 0x8057B478: aNSC_pc_input_pw_start_wait + 0x8057B4F0: aNSC_pc_msg_win_open_wait + 0x8057B584: aNSC_pc_retry_input_pw_check + 0x8057B678: aNSC_pc_present_start_wait + 0x8057B6D4: aNSC_pc_present_trans_takeout + 0x8057B7B0: aNSC_pc_present_trans_wait + 0x8057B7F0: aNSC_pc_present_end_wait + 0x8057B858: aNSC_wait + 0x8057B8D0: aNSC_walk_pl_other_zone + 0x8057B948: aNSC_turn + 0x8057B9E0: aNSC_set_talk_info_goodbye_wait + 0x8057BA10: aNSC_goodbye_wait + 0x8057BAAC: aNSC_say_goodbye + 0x8057BB0C: aNSC_exit_wait + 0x8057BB80: aNSC_say_hello_approach_init + 0x8057BBA0: aNSC_say_hello_end_wait_init + 0x8057BBC8: aNSC_check_col_chg_or_make_basement_init + 0x8057BBE8: aNSC_check_roof_col_order_init + 0x8057BC28: aNSC_check_roof_col_order2_init + 0x8057BC54: aNSC_present_balloon_start_wait_init + 0x8057BC70: aNSC_present_balloon_trans_move_init + 0x8057BCFC: aNSC_present_balloon_trans_takeout_init + 0x8057BD3C: aNSC_present_balloon_end_wait_init + 0x8057BD4C: aNSC_request_Q_answer_wait_init + 0x8057BD8C: aNSC_request_Q_end_wait_init + 0x8057BDAC: aNSC_answer_buy_item_init + 0x8057BDD8: aNSC_buy_menu_open_wait_init + 0x8057BDFC: aNSC_buy_menu_close_wait_init + 0x8057BE40: aNSC_msg_win_open_wait_init + 0x8057BE64: aNSC_buy_sum_check_init + 0x8057BE90: aNSC_buy_check_init + 0x8057BF88: aNSC_buy_after_service_init + 0x8057BFB4: aNSC_order_select_menu_close_wait_init + 0x8057BFF8: aNSC_order_check_init + 0x8057C024: aNSC_sell_check_before_init + 0x8057C064: aNSC_sell_answer0_init + 0x8057C17C: aNSC_sell_answer1_init + 0x8057C1B0: aNSC_sell_item_init + 0x8057C214: aNSC_sell_item_with_ticket_init + 0x8057C264: aNSC_sell_refuse0_init + 0x8057C270: aNSC_show_item_check_init + 0x8057C290: aNSC_chg_cloth_start_wait_init + 0x8057C2B4: aNSC_pw_entry_send_addr_start_wait_init + 0x8057C2E0: aNSC_pw_make_menu_close_wait_init + 0x8057C344: aNSC_pw_send_addr_check_init + 0x8057C364: aNSC_pw_sel_item_menu_close_wait_init + 0x8057C3A8: aNSC_pc_input_pw_start_wait_init + 0x8057C3E4: aNSC_pc_chk_menu_close_wait_init + 0x8057C42C: aNSC_pc_present_trans_takeout_init + 0x8057C4B4: aNSC_pc_present_end_wait_init + 0x8057C4C4: aNSC_wait_init + 0x8057C4E4: aNSC_walk_pl_same_zone_init + 0x8057C504: aNSC_run_pl_same_zone_init + 0x8057C524: aNSC_goodbye_wait_init + 0x8057C544: aNSC_say_goodbye_init + 0x8057C568: aNSC_init_proc + 0x8057C59C: aNSC_setupAction 0x806BFE18: aNSC_item1_0_tanni_type 0x806BFF18: aNSC_item1_1_tanni_type 0x806BFF1C: aNSC_item1_2_tanni_type @@ -56399,188 +56399,188 @@ src/ac_npc_shop_master.c: 0x806C0250: aNSC_item_tanni_type 0x806C0344: aNSC_exchange_itemNo src/ac_npc_needlework.c: - 0x80564CA1: player_go_away - 0x80564CE1: player_buy + 0x80564CA0: player_go_away + 0x80564CE0: player_buy 0x806BE35C: dt_tbl 0x806BE3A8: proc_table 0x806BE3C8: init_table src/ac_npc_shop_mastersp.c: - 0x8057CB61: player_go_away - 0x8057CBB9: player_buy + 0x8057CB60: player_go_away + 0x8057CBB8: player_buy src/ac_npc_p_sel2.c: - 0x805682D1: aNPS2_make_door_data - 0x8056852D: aNPS2_setup_game_start + 0x805682D0: aNPS2_make_door_data + 0x8056852C: aNPS2_setup_game_start src/ac_npc_station_master.c: - 0x8057F7C1: aNPS2_make_door_data - 0x8057F825: aNPS2_setup_game_start + 0x8057F7C0: aNPS2_make_door_data + 0x8057F824: aNPS2_setup_game_start 0x806C0C14: proc_table 0x806C0C5C: dt_tbl 0x806C0CCC: init_table src/ac_npc_super_master.c: - 0x80580C21: aNSC_set_animation - 0x80580C71: aNSC_BGcheck - 0x80580CB5: aNSC_check_present_balloon - 0x80580D21: aNSC_calc_talk_start_tim - 0x80580D49: aNSC_request_show_camera - 0x80580DBD: aNSC_Set_ListenAble - 0x80580DE1: aNSC_set_sell_camera - 0x80580E75: aNSC_sell_camera - 0x80580F15: aNSC_talk_demo_proc - 0x80580F85: aNSC_set_stop_spd - 0x80580FA1: aNSC_set_walk_spd - 0x80580FCD: aNSC_set_run_spd - 0x80580FF9: aNSC_set_rehouse_order_date - 0x80581021: aNSC_set_make_basement_info - 0x8058107D: aNSC_getP_free_ftr_order - 0x805810B5: aNSC_set_ftr_order - 0x80581101: aNSC_set_last_day_str - 0x80581155: aNSC_set_pw_name_str - 0x805811B1: aNSC_set_value_str - 0x8058120D: aNSC_set_item_name_str - 0x80581271: aNSC_set_item_str - 0x805812C9: aNSC_set_pw_password_str - 0x80581329: aNSC_set_pw_info_str - 0x80581391: aNSC_pc_check_password_famicom - 0x805813D9: aNSC_pc_check_password_npc - 0x80581445: aNSC_pc_check_password_card_e - 0x8058144D: aNSC_pc_check_password_magazine - 0x805814C1: aNSC_pc_check_password_card_e_mini - 0x805814D9: aNSC_pc_check_password_user - 0x80581521: aNSC_pc_check_password - 0x805815E5: aNSC_check_possession_item_make_password - 0x80581691: aNSC_set_buy_sum_str - 0x80581765: aNSC_decide_next_move_act - 0x80581875: aNSC_set_zone_data - 0x805818F9: aNSC_set_player_angl - 0x80581905: aNSC_money_check - 0x80581925: aNSC_get_sell_price - 0x80581945: aNSC_check_money_overflow - 0x805819D9: aNSC_check_buy_item_sub - 0x80581A7D: aNSC_check_buy_paper - 0x80581B6D: aNSC_check_buy_item_single - 0x80581C85: aNSC_check_buy_item_plural - 0x80581D11: aNSC_check_buy_item - 0x80581D45: aNSC_check_item_with_ticket - 0x80581DC5: aNSC_setup_ticket_remain - 0x80581E0D: aNSC_check_same_month_ticket - 0x80581E71: aNSC_get_msg_no - 0x80581EB9: aNSC_Set_continue_msg_num - 0x80581EF9: aNSC_ChangeMsgData - 0x80581F39: aNSC_set_player_angle - 0x80582041: aNSC_set_talk_info_show_item - 0x80582079: aNSC_set_talk_info_show_cloth - 0x805820B1: aNSC_set_talk_info_sell_item - 0x80582171: aNSC_set_talk_info_message_ctrl - 0x80582199: aNSC_set_talk_info_message_ctrl_aprilfool - 0x805821E1: aNSC_set_talk_info_message_ctrl_tokubai - 0x80582209: aNSC_message_ctrl - 0x805825E9: aNSC_buy_item_single - 0x805826D9: aNSC_buy_paper - 0x805827E9: aNSC_buy_item_only_one - 0x805829F9: aNSC_get_start_call_msg_no - 0x80582A35: aNSC_set_talk_info_start_wait - 0x80582C29: aNSC_set_talk_info_start_wait1 - 0x80582D09: aNSC_set_talk_info_start_wait2 - 0x80582D55: aNSC_set_talk_info_start_wait3 - 0x80582D91: aNSC_set_talk_info_start_wait4 - 0x80582DB9: aNSC_start_wait - 0x8058306D: aNSC_say_hello_approach - 0x805830FD: aNSC_say_hello_end_wait - 0x80583171: aNSC_check_col_chg_or_make_basement - 0x8058323D: aNSC_check_roof_col_order - 0x80583375: aNSC_check_roof_col_order2 - 0x80583469: aNSC_present_balloon_start_wait - 0x805834C5: aNSC_present_balloon_trans_move - 0x80583501: aNSC_present_balloon_trans_takeout - 0x805835DD: aNSC_present_balloon_trans_wait - 0x8058361D: aNSC_present_balloon_end_wait - 0x80583685: aNSC_set_talk_info_request_Q_start_wait - 0x805836B5: aNSC_request_Q_start_wait - 0x80583739: aNSC_request_Q_answer_wait - 0x8058384D: aNSC_request_Q_answer_wait2 - 0x805839DD: aNSC_request_Q_end_wait - 0x80583A51: aNSC_answer_buy_item - 0x80583ACD: aNSC_buy_menu_open_wait - 0x80583B25: aNSC_buy_menu_close_wait - 0x80583B59: aNSC_msg_win_open_wait - 0x80583C21: aNSC_buy_sum_check - 0x80583D1D: aNSC_buy_check - 0x80583F9D: aNSC_buy_after_service - 0x80584019: aNSC_buy_continue_check - 0x80584105: aNSC_receive_check - 0x805841A9: aNSC_msg_win_open_wait2 - 0x80584271: aNSC_order_check - 0x8058436D: aNSC_sell_check_before - 0x805843D5: aNSC_sell_check - 0x8058448D: aNSC_sell_answer0 - 0x805846C1: aNSC_sell_item_with_ticket - 0x80584779: aNSC_show_item_check - 0x80584945: aNSC_chg_cloth_start_wait - 0x80584A0D: aNSC_chg_cloth_end_wait - 0x80584A69: aNSC_pw_entry_send_addr_start_wait - 0x80584AE1: aNSC_pw_msg_win_open_wait - 0x80584B8D: aNSC_pw_send_addr_check - 0x80584C69: aNSC_pw_sel_item_start_wait - 0x80584CE1: aNSC_pw_msg_win_open_wait2 - 0x80584D91: aNSC_pw_send_check - 0x80584EBD: aNSC_pw_retry_sel_item_check - 0x80584F85: aNSC_pc_input_pw_start_wait - 0x80584FFD: aNSC_pc_msg_win_open_wait - 0x80585091: aNSC_pc_retry_input_pw_check - 0x80585185: aNSC_pc_present_start_wait - 0x805851E1: aNSC_pc_present_trans_takeout - 0x805852BD: aNSC_pc_present_trans_wait - 0x805852FD: aNSC_pc_present_end_wait - 0x80585365: aNSC_wait - 0x805853DD: aNSC_walk_pl_other_zone - 0x80585455: aNSC_turn - 0x805854ED: aNSC_set_talk_info_goodbye_wait - 0x8058551D: aNSC_goodbye_wait - 0x805855B9: aNSC_say_goodbye - 0x80585619: aNSC_exit_wait - 0x8058568D: aNSC_say_hello_approach_init - 0x805856AD: aNSC_say_hello_end_wait_init - 0x805856D5: aNSC_check_col_chg_or_make_basement_init - 0x805856F5: aNSC_check_roof_col_order_init - 0x80585735: aNSC_check_roof_col_order2_init - 0x80585761: aNSC_present_balloon_start_wait_init - 0x8058577D: aNSC_present_balloon_trans_move_init - 0x80585809: aNSC_present_balloon_trans_takeout_init - 0x80585849: aNSC_present_balloon_end_wait_init - 0x80585859: aNSC_request_Q_answer_wait_init - 0x80585899: aNSC_request_Q_end_wait_init - 0x805858B9: aNSC_answer_buy_item_init - 0x805858E5: aNSC_buy_menu_open_wait_init - 0x80585909: aNSC_buy_menu_close_wait_init - 0x8058594D: aNSC_msg_win_open_wait_init - 0x80585971: aNSC_buy_sum_check_init - 0x8058599D: aNSC_buy_check_init - 0x80585A95: aNSC_buy_after_service_init - 0x80585AC1: aNSC_order_select_menu_close_wait_init - 0x80585B05: aNSC_order_check_init - 0x80585B31: aNSC_sell_check_before_init - 0x80585B71: aNSC_sell_answer0_init - 0x80585C89: aNSC_sell_answer1_init - 0x80585CBD: aNSC_sell_item_init - 0x80585D21: aNSC_sell_item_with_ticket_init - 0x80585D71: aNSC_sell_refuse0_init - 0x80585D7D: aNSC_show_item_check_init - 0x80585D9D: aNSC_chg_cloth_start_wait_init - 0x80585DC1: aNSC_pw_entry_send_addr_start_wait_init - 0x80585DED: aNSC_pw_make_menu_close_wait_init - 0x80585E51: aNSC_pw_send_addr_check_init - 0x80585E71: aNSC_pw_sel_item_menu_close_wait_init - 0x80585EB5: aNSC_pc_input_pw_start_wait_init - 0x80585EF1: aNSC_pc_chk_menu_close_wait_init - 0x80585F39: aNSC_pc_present_trans_takeout_init - 0x80585FC1: aNSC_pc_present_end_wait_init - 0x80585FD1: aNSC_wait_init - 0x80585FF1: aNSC_walk_pl_same_zone_init - 0x80586011: aNSC_run_pl_same_zone_init - 0x80586031: aNSC_goodbye_wait_init - 0x80586051: aNSC_say_goodbye_init - 0x80586075: aNSC_init_proc - 0x805860A9: aNSC_setupAction + 0x80580C20: aNSC_set_animation + 0x80580C70: aNSC_BGcheck + 0x80580CB4: aNSC_check_present_balloon + 0x80580D20: aNSC_calc_talk_start_tim + 0x80580D48: aNSC_request_show_camera + 0x80580DBC: aNSC_Set_ListenAble + 0x80580DE0: aNSC_set_sell_camera + 0x80580E74: aNSC_sell_camera + 0x80580F14: aNSC_talk_demo_proc + 0x80580F84: aNSC_set_stop_spd + 0x80580FA0: aNSC_set_walk_spd + 0x80580FCC: aNSC_set_run_spd + 0x80580FF8: aNSC_set_rehouse_order_date + 0x80581020: aNSC_set_make_basement_info + 0x8058107C: aNSC_getP_free_ftr_order + 0x805810B4: aNSC_set_ftr_order + 0x80581100: aNSC_set_last_day_str + 0x80581154: aNSC_set_pw_name_str + 0x805811B0: aNSC_set_value_str + 0x8058120C: aNSC_set_item_name_str + 0x80581270: aNSC_set_item_str + 0x805812C8: aNSC_set_pw_password_str + 0x80581328: aNSC_set_pw_info_str + 0x80581390: aNSC_pc_check_password_famicom + 0x805813D8: aNSC_pc_check_password_npc + 0x80581444: aNSC_pc_check_password_card_e + 0x8058144C: aNSC_pc_check_password_magazine + 0x805814C0: aNSC_pc_check_password_card_e_mini + 0x805814D8: aNSC_pc_check_password_user + 0x80581520: aNSC_pc_check_password + 0x805815E4: aNSC_check_possession_item_make_password + 0x80581690: aNSC_set_buy_sum_str + 0x80581764: aNSC_decide_next_move_act + 0x80581874: aNSC_set_zone_data + 0x805818F8: aNSC_set_player_angl + 0x80581904: aNSC_money_check + 0x80581924: aNSC_get_sell_price + 0x80581944: aNSC_check_money_overflow + 0x805819D8: aNSC_check_buy_item_sub + 0x80581A7C: aNSC_check_buy_paper + 0x80581B6C: aNSC_check_buy_item_single + 0x80581C84: aNSC_check_buy_item_plural + 0x80581D10: aNSC_check_buy_item + 0x80581D44: aNSC_check_item_with_ticket + 0x80581DC4: aNSC_setup_ticket_remain + 0x80581E0C: aNSC_check_same_month_ticket + 0x80581E70: aNSC_get_msg_no + 0x80581EB8: aNSC_Set_continue_msg_num + 0x80581EF8: aNSC_ChangeMsgData + 0x80581F38: aNSC_set_player_angle + 0x80582040: aNSC_set_talk_info_show_item + 0x80582078: aNSC_set_talk_info_show_cloth + 0x805820B0: aNSC_set_talk_info_sell_item + 0x80582170: aNSC_set_talk_info_message_ctrl + 0x80582198: aNSC_set_talk_info_message_ctrl_aprilfool + 0x805821E0: aNSC_set_talk_info_message_ctrl_tokubai + 0x80582208: aNSC_message_ctrl + 0x805825E8: aNSC_buy_item_single + 0x805826D8: aNSC_buy_paper + 0x805827E8: aNSC_buy_item_only_one + 0x805829F8: aNSC_get_start_call_msg_no + 0x80582A34: aNSC_set_talk_info_start_wait + 0x80582C28: aNSC_set_talk_info_start_wait1 + 0x80582D08: aNSC_set_talk_info_start_wait2 + 0x80582D54: aNSC_set_talk_info_start_wait3 + 0x80582D90: aNSC_set_talk_info_start_wait4 + 0x80582DB8: aNSC_start_wait + 0x8058306C: aNSC_say_hello_approach + 0x805830FC: aNSC_say_hello_end_wait + 0x80583170: aNSC_check_col_chg_or_make_basement + 0x8058323C: aNSC_check_roof_col_order + 0x80583374: aNSC_check_roof_col_order2 + 0x80583468: aNSC_present_balloon_start_wait + 0x805834C4: aNSC_present_balloon_trans_move + 0x80583500: aNSC_present_balloon_trans_takeout + 0x805835DC: aNSC_present_balloon_trans_wait + 0x8058361C: aNSC_present_balloon_end_wait + 0x80583684: aNSC_set_talk_info_request_Q_start_wait + 0x805836B4: aNSC_request_Q_start_wait + 0x80583738: aNSC_request_Q_answer_wait + 0x8058384C: aNSC_request_Q_answer_wait2 + 0x805839DC: aNSC_request_Q_end_wait + 0x80583A50: aNSC_answer_buy_item + 0x80583ACC: aNSC_buy_menu_open_wait + 0x80583B24: aNSC_buy_menu_close_wait + 0x80583B58: aNSC_msg_win_open_wait + 0x80583C20: aNSC_buy_sum_check + 0x80583D1C: aNSC_buy_check + 0x80583F9C: aNSC_buy_after_service + 0x80584018: aNSC_buy_continue_check + 0x80584104: aNSC_receive_check + 0x805841A8: aNSC_msg_win_open_wait2 + 0x80584270: aNSC_order_check + 0x8058436C: aNSC_sell_check_before + 0x805843D4: aNSC_sell_check + 0x8058448C: aNSC_sell_answer0 + 0x805846C0: aNSC_sell_item_with_ticket + 0x80584778: aNSC_show_item_check + 0x80584944: aNSC_chg_cloth_start_wait + 0x80584A0C: aNSC_chg_cloth_end_wait + 0x80584A68: aNSC_pw_entry_send_addr_start_wait + 0x80584AE0: aNSC_pw_msg_win_open_wait + 0x80584B8C: aNSC_pw_send_addr_check + 0x80584C68: aNSC_pw_sel_item_start_wait + 0x80584CE0: aNSC_pw_msg_win_open_wait2 + 0x80584D90: aNSC_pw_send_check + 0x80584EBC: aNSC_pw_retry_sel_item_check + 0x80584F84: aNSC_pc_input_pw_start_wait + 0x80584FFC: aNSC_pc_msg_win_open_wait + 0x80585090: aNSC_pc_retry_input_pw_check + 0x80585184: aNSC_pc_present_start_wait + 0x805851E0: aNSC_pc_present_trans_takeout + 0x805852BC: aNSC_pc_present_trans_wait + 0x805852FC: aNSC_pc_present_end_wait + 0x80585364: aNSC_wait + 0x805853DC: aNSC_walk_pl_other_zone + 0x80585454: aNSC_turn + 0x805854EC: aNSC_set_talk_info_goodbye_wait + 0x8058551C: aNSC_goodbye_wait + 0x805855B8: aNSC_say_goodbye + 0x80585618: aNSC_exit_wait + 0x8058568C: aNSC_say_hello_approach_init + 0x805856AC: aNSC_say_hello_end_wait_init + 0x805856D4: aNSC_check_col_chg_or_make_basement_init + 0x805856F4: aNSC_check_roof_col_order_init + 0x80585734: aNSC_check_roof_col_order2_init + 0x80585760: aNSC_present_balloon_start_wait_init + 0x8058577C: aNSC_present_balloon_trans_move_init + 0x80585808: aNSC_present_balloon_trans_takeout_init + 0x80585848: aNSC_present_balloon_end_wait_init + 0x80585858: aNSC_request_Q_answer_wait_init + 0x80585898: aNSC_request_Q_end_wait_init + 0x805858B8: aNSC_answer_buy_item_init + 0x805858E4: aNSC_buy_menu_open_wait_init + 0x80585908: aNSC_buy_menu_close_wait_init + 0x8058594C: aNSC_msg_win_open_wait_init + 0x80585970: aNSC_buy_sum_check_init + 0x8058599C: aNSC_buy_check_init + 0x80585A94: aNSC_buy_after_service_init + 0x80585AC0: aNSC_order_select_menu_close_wait_init + 0x80585B04: aNSC_order_check_init + 0x80585B30: aNSC_sell_check_before_init + 0x80585B70: aNSC_sell_answer0_init + 0x80585C88: aNSC_sell_answer1_init + 0x80585CBC: aNSC_sell_item_init + 0x80585D20: aNSC_sell_item_with_ticket_init + 0x80585D70: aNSC_sell_refuse0_init + 0x80585D7C: aNSC_show_item_check_init + 0x80585D9C: aNSC_chg_cloth_start_wait_init + 0x80585DC0: aNSC_pw_entry_send_addr_start_wait_init + 0x80585DEC: aNSC_pw_make_menu_close_wait_init + 0x80585E50: aNSC_pw_send_addr_check_init + 0x80585E70: aNSC_pw_sel_item_menu_close_wait_init + 0x80585EB4: aNSC_pc_input_pw_start_wait_init + 0x80585EF0: aNSC_pc_chk_menu_close_wait_init + 0x80585F38: aNSC_pc_present_trans_takeout_init + 0x80585FC0: aNSC_pc_present_end_wait_init + 0x80585FD0: aNSC_wait_init + 0x80585FF0: aNSC_walk_pl_same_zone_init + 0x80586010: aNSC_run_pl_same_zone_init + 0x80586030: aNSC_goodbye_wait_init + 0x80586050: aNSC_say_goodbye_init + 0x80586074: aNSC_init_proc + 0x805860A8: aNSC_setupAction 0x806C135C: aNSC_item1_0_tanni_type 0x806C145C: aNSC_item1_1_tanni_type 0x806C1460: aNSC_item1_2_tanni_type @@ -56600,101 +56600,101 @@ src/ac_npc_super_master.c: 0x806C1794: aNSC_item_tanni_type 0x806C1888: aNSC_exchange_itemNo src/ac_tokyoso_control.c: - 0x804AB041: aTKN1_set_request_act + 0x804AB040: aTKN1_set_request_act 0x8068F438: init_table src/ac_tokyoso_npc1.c: - 0x8058C3BD: aTKN1_set_request_act + 0x8058C3BC: aTKN1_set_request_act 0x806C2400: dt_tbl 0x806C2474: proc_table src/ac_br_shop.c: - 0x805A8769: change_FGUnit + 0x805A8768: change_FGUnit src/ac_buggy.c: - 0x805A9E19: change_FGUnit + 0x805A9E18: change_FGUnit src/ac_count02.c: - 0x805AB8B9: aCOU_actor_ct - 0x805AB989: aCOU_actor_dt - 0x805ABAE9: aCOU_wait - 0x805ABC05: aCOU_setup_action - 0x805ABCA1: aCOU_actor_move - 0x805ABDAD: aCOU_actor_init - 0x805ABE25: aCOU_actor_draw_before - 0x805ABE89: aCOU_actor_draw + 0x805AB8B8: aCOU_actor_ct + 0x805AB988: aCOU_actor_dt + 0x805ABAE8: aCOU_wait + 0x805ABC04: aCOU_setup_action + 0x805ABCA0: aCOU_actor_move + 0x805ABDAC: aCOU_actor_init + 0x805ABE24: aCOU_actor_draw_before + 0x805ABE88: aCOU_actor_draw src/ac_countdown.c: - 0x805AC0AD: aCOU_actor_ct - 0x805AC121: aCOU_actor_dt - 0x805AC335: aCOU_wait - 0x805AC401: aCOU_setup_action - 0x805AC4A1: aCOU_actor_move - 0x805AC5ED: aCOU_actor_init - 0x805AC665: aCOU_actor_draw_before - 0x805AC7B1: aCOU_actor_draw + 0x805AC0AC: aCOU_actor_ct + 0x805AC120: aCOU_actor_dt + 0x805AC334: aCOU_wait + 0x805AC400: aCOU_setup_action + 0x805AC4A0: aCOU_actor_move + 0x805AC5EC: aCOU_actor_init + 0x805AC664: aCOU_actor_draw_before + 0x805AC7B0: aCOU_actor_draw src/ac_house.c: - 0x805AFB2D: change_FGUnit + 0x805AFB2C: change_FGUnit src/ac_kamakura.c: - 0x805B1DE5: change_FGUnit + 0x805B1DE4: change_FGUnit src/ac_mikanbox.c: - 0x805B3011: aMIK_actor_ct + 0x805B3010: aMIK_actor_ct 0x805B3E59: aMIK_actor_init - 0x805B4055: aMIK_actor_draw + 0x805B4054: aMIK_actor_draw 0x806C5BB0: init_table 0x806C5BD0: obj_e_mikanbox_v src/ac_mikuji.c: - 0x805B414D: aMIK_actor_ct - 0x805B437D: aMIK_actor_init - 0x805B43F5: aMIK_actor_draw + 0x805B414C: aMIK_actor_ct + 0x805B437C: aMIK_actor_init + 0x805B43F4: aMIK_actor_draw src/ac_turi_npc0.c: - 0x805900B1: aTR0_actor_ct - 0x805901D9: aTR0_actor_dt - 0x80590285: aTR0_actor_move - 0x805902BD: aTR0_actor_draw + 0x805900B0: aTR0_actor_ct + 0x805901D8: aTR0_actor_dt + 0x80590284: aTR0_actor_move + 0x805902BC: aTR0_actor_draw src/ac_train0.c: - 0x805BFC29: aTR0_actor_ct - 0x805BFCDD: aTR0_actor_dt - 0x805C00F5: calc_speed1 - 0x805C014D: calc_speed2 - 0x805C03ED: aTR0_actor_move - 0x805C04E1: aTR0_actor_draw + 0x805BFC28: aTR0_actor_ct + 0x805BFCDC: aTR0_actor_dt + 0x805C00F4: calc_speed1 + 0x805C014C: calc_speed2 + 0x805C03EC: aTR0_actor_move + 0x805C04E0: aTR0_actor_draw src/ac_train1.c: - 0x805C0709: calc_speed1 - 0x805C0761: calc_speed2 + 0x805C0708: calc_speed1 + 0x805C0760: calc_speed2 src/ac_ev_angler.c: - 0x80518395: get_fish_save_area - 0x805186F5: getP_top_of_angler_pID - 0x80518719: set_top_of_angler_pID - 0x80518751: get_top_of_angler_size + 0x80518394: get_fish_save_area + 0x805186F4: getP_top_of_angler_pID + 0x80518718: set_top_of_angler_pID + 0x80518750: get_top_of_angler_size src/ac_turi.c: - 0x805C1291: get_fish_save_area - 0x805C12F1: get_top_of_angler_size - 0x805C1315: set_top_of_angler_pID - 0x805C134D: getP_top_of_angler_pID + 0x805C1290: get_fish_save_area + 0x805C12F0: get_top_of_angler_size + 0x805C1314: set_top_of_angler_pID + 0x805C134C: getP_top_of_angler_pID src/m_submenu.c: - 0x803EFD79: mSM_move_End + 0x803EFD78: mSM_move_End src/m_submenu_ovl.c: - 0x805EF449: mSM_move_End + 0x805EF448: mSM_move_End src/m_inventory_ovl.c: - 0x805E448D: mIV_get_win_posY + 0x805E448C: mIV_get_win_posY src/m_tag_ovl.c: - 0x805F89B1: mIV_get_win_posY + 0x805F89B0: mIV_get_win_posY src/ef_turi_hane0.c: - 0x80624049: eTH0_init - 0x806240BD: eTH0_ct - 0x80624139: eTH0_mv - 0x8062413D: eTH0_dw + 0x80624048: eTH0_init + 0x806240BC: eTH0_ct + 0x80624138: eTH0_mv + 0x8062413C: eTH0_dw src/ef_turi_hane1.c: - 0x80624261: eTH0_init - 0x806242D5: eTH0_ct - 0x806242F5: eTH0_mv - 0x806242F9: eTH0_dw + 0x80624260: eTH0_init + 0x806242D4: eTH0_ct + 0x806242F4: eTH0_mv + 0x806242F8: eTH0_dw src/ef_takurami.c: - 0x80620A7D: eTM_init - 0x80620BC5: eTM_ct - 0x80620D05: eTM_mv - 0x80620DBD: eTM_dw + 0x80620A7C: eTM_init + 0x80620BC4: eTM_ct + 0x80620D04: eTM_mv + 0x80620DBC: eTM_dw src/ef_turi_mizu.c: - 0x806247C1: eTM_init - 0x80624891: eTM_ct - 0x80624989: eTM_mv - 0x80624B11: eTM_dw + 0x806247C0: eTM_init + 0x80624890: eTM_ct + 0x80624988: eTM_mv + 0x80624B10: eTM_dw src/padmgr.c: 0x8065F138: this src/ac_gyo_release.c: diff --git a/include/m_name_table.h b/include/m_name_table.h index c5fd2277..da58bca7 100644 --- a/include/m_name_table.h +++ b/include/m_name_table.h @@ -141,6 +141,7 @@ typedef struct offset_table_s { /* TODO: these should be calculated via definitions later */ #define NPC_NUM 236 #define NPC_ISLANDER_NUM 18 +#define ALL_NPC_NUM NPC_NUM + 2 // include the two test villagers #define TICKET_STACK_MAX 5 #define WISP_STACK_MAX 5 From c52f83907fef6b72735aa506e87b77afc2efdf97 Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Thu, 1 Aug 2024 16:10:43 +0000 Subject: [PATCH 065/234] Clean up extraneous comments in dockerfile --- Dockerfile | 2 -- 1 file changed, 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 3186b800..4661476f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -26,12 +26,10 @@ RUN wget https://apt.devkitpro.org/install-devkitpro-pacman RUN chmod +x install-devkitpro-pacman # assume yes for in-script apt commands RUN sed -i 's/^apt-get.*$/& -y/g' install-devkitpro-pacman -# now do dkp-pacman installation RUN ./install-devkitpro-pacman RUN rm install-devkitpro-pacman # workaround for a dumb WSL bug that happens with Windows Docker. if we don't do this, devkitPPC installation fails on Windows. RUN if [ ! -e /etc/mtab ]; then ln -s /proc/self/mounts /etc/mtab; fi -# and finally, we get to install devkitPPC RUN dkp-pacman -S devkitPPC --noconfirm # dear fucking god this is hacky but it works (needed otherwise next step fails) RUN rm /usr/bin/cpp /usr/bin/g++ /lib/cpp From c151492f7ce2ccb9295844e37455f0ea3475318f Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 03:11:58 +0000 Subject: [PATCH 066/234] Add compiler download & setup --- Dockerfile | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Dockerfile b/Dockerfile index 4661476f..2ebafc3c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -16,6 +16,12 @@ COPY ./tools/ppcdis/requirements.txt /temp/tools/ppcdis/requirements.txt RUN pip install --break-system-packages -r /temp/requirements.txt RUN rm -rf /temp +# --- compiler download and setup --- +RUN wget https://files.decomp.dev/compilers_latest.zip +RUN mkdir compilers_temp && unzip compilers_latest.zip -d compilers_temp +RUN mv compilers_temp/GC/1.2.5n/ tools/ && mv compilers_temp/GC/1.3.2/ tools/ && mv compilers_temp/GC/1.3.2r/ tools/ +RUN rm -r compilers_temp compilers_latest.zip + # --- wibo installation --- RUN wget https://github.com/decompals/wibo/releases/download/0.6.13/wibo RUN install ./wibo /usr/bin From 27668ab595c3b201f333d688996f020de0a832f3 Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 03:21:34 +0000 Subject: [PATCH 067/234] Fix missing unzip install and fix compilers not going in the right folder --- Dockerfile | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 2ebafc3c..36d152ae 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,9 @@ FROM ubuntu:24.04 as build +# --- set up work directory --- +RUN mkdir /ac-decomp +WORKDIR /ac-decomp + # --- basic package installation --- RUN apt-get update && \ apt-get install -y \ @@ -7,6 +11,7 @@ RUN apt-get update && \ ninja-build \ python3 \ python3-pip \ + unzip \ wget # --- python package installation --- @@ -19,7 +24,7 @@ RUN rm -rf /temp # --- compiler download and setup --- RUN wget https://files.decomp.dev/compilers_latest.zip RUN mkdir compilers_temp && unzip compilers_latest.zip -d compilers_temp -RUN mv compilers_temp/GC/1.2.5n/ tools/ && mv compilers_temp/GC/1.3.2/ tools/ && mv compilers_temp/GC/1.3.2r/ tools/ +RUN mv compilers_temp/GC/1.2.5n/ /ac-decomp/tools/ && mv compilers_temp/GC/1.3.2/ /ac-decomp/tools/ && mv compilers_temp/GC/1.3.2r/ /ac-decomp/tools/ RUN rm -r compilers_temp compilers_latest.zip # --- wibo installation --- @@ -49,9 +54,7 @@ RUN cd /N64_SDK/ultra/usr/ && find -type f -maxdepth 1 -delete && find . -not -n # modify Gpopmtx's param member to be unsigned int RUN sed -i 's/unsigned char param:8;/unsigned int param:8;/g' /N64_SDK/ultra/usr/include/PR/gbi.h -# --- set up work directory and env vars --- -RUN mkdir /ac-decomp -WORKDIR /ac-decomp +# --- set up env vars --- ENV PATH="/ac-decomp/tools:${PATH}" ENV N64_SDK="/N64_SDK" ENV DEVKITPPC="/opt/devkitpro/devkitPPC" From a8c47cba590f93de7b4bc2f939071a3cb7bd44fc Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 03:41:47 +0000 Subject: [PATCH 068/234] Undo most of previous commit --- Dockerfile | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/Dockerfile b/Dockerfile index 36d152ae..a14af6fd 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,9 +1,5 @@ FROM ubuntu:24.04 as build -# --- set up work directory --- -RUN mkdir /ac-decomp -WORKDIR /ac-decomp - # --- basic package installation --- RUN apt-get update && \ apt-get install -y \ @@ -24,7 +20,7 @@ RUN rm -rf /temp # --- compiler download and setup --- RUN wget https://files.decomp.dev/compilers_latest.zip RUN mkdir compilers_temp && unzip compilers_latest.zip -d compilers_temp -RUN mv compilers_temp/GC/1.2.5n/ /ac-decomp/tools/ && mv compilers_temp/GC/1.3.2/ /ac-decomp/tools/ && mv compilers_temp/GC/1.3.2r/ /ac-decomp/tools/ +RUN mv compilers_temp/GC/1.2.5n/ tools/ && mv compilers_temp/GC/1.3.2/ tools/ && mv compilers_temp/GC/1.3.2r/ tools/ RUN rm -r compilers_temp compilers_latest.zip # --- wibo installation --- @@ -54,7 +50,9 @@ RUN cd /N64_SDK/ultra/usr/ && find -type f -maxdepth 1 -delete && find . -not -n # modify Gpopmtx's param member to be unsigned int RUN sed -i 's/unsigned char param:8;/unsigned int param:8;/g' /N64_SDK/ultra/usr/include/PR/gbi.h -# --- set up env vars --- +# --- set up work directory and env vars --- +RUN mkdir /ac-decomp +WORKDIR /ac-decomp ENV PATH="/ac-decomp/tools:${PATH}" ENV N64_SDK="/N64_SDK" ENV DEVKITPPC="/opt/devkitpro/devkitPPC" From 97a29a89b735cee15daf013720fab9f3743f72c9 Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 03:56:13 +0000 Subject: [PATCH 069/234] Revert compiler downloading for now --- Dockerfile | 7 ------- 1 file changed, 7 deletions(-) diff --git a/Dockerfile b/Dockerfile index a14af6fd..4661476f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,7 +7,6 @@ RUN apt-get update && \ ninja-build \ python3 \ python3-pip \ - unzip \ wget # --- python package installation --- @@ -17,12 +16,6 @@ COPY ./tools/ppcdis/requirements.txt /temp/tools/ppcdis/requirements.txt RUN pip install --break-system-packages -r /temp/requirements.txt RUN rm -rf /temp -# --- compiler download and setup --- -RUN wget https://files.decomp.dev/compilers_latest.zip -RUN mkdir compilers_temp && unzip compilers_latest.zip -d compilers_temp -RUN mv compilers_temp/GC/1.2.5n/ tools/ && mv compilers_temp/GC/1.3.2/ tools/ && mv compilers_temp/GC/1.3.2r/ tools/ -RUN rm -r compilers_temp compilers_latest.zip - # --- wibo installation --- RUN wget https://github.com/decompals/wibo/releases/download/0.6.13/wibo RUN install ./wibo /usr/bin From 978aa21e02d8a24a349ba5d6b0d17200752bc103 Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 04:09:57 +0000 Subject: [PATCH 070/234] Create build-docker.sh --- build-docker.sh | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 build-docker.sh diff --git a/build-docker.sh b/build-docker.sh new file mode 100644 index 00000000..f4ee9cc8 --- /dev/null +++ b/build-docker.sh @@ -0,0 +1,13 @@ +docker build -t ac-decomp . +if [ -e /bin/curl ]; then + curl -O https://files.decomp.dev/compilers_latest.zip +elif [ -e /bin/wget ]; then + wget https://files.decomp.dev/compilers_latest.zip +else + echo "You do not seem to have curl or wget installed on this system. Please install one or the other to continue." + exit 0 +fi + +mkdir compilers_temp && if [ -e /bin/unzip ]; then unzip compilers_latest.zip -d compilers_temp; else echo "You do not seem to have unzip installed on this system. Please install it to continue."; exit 1; fi +mv compilers_temp/GC/1.2.5n/ tools/ && mv compilers_temp/GC/1.3.2/ tools/ && mv compilers_temp/GC/1.3.2r/ tools/ +echo "Docker image setup is now complete. You may proceed with the instructions." From 74e6e24589fb4570b1ffc6b68e49d2e84ba872f5 Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 04:13:50 +0000 Subject: [PATCH 071/234] Create build-docker.bat --- build-docker.bat | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 build-docker.bat diff --git a/build-docker.bat b/build-docker.bat new file mode 100644 index 00000000..2df1ccf1 --- /dev/null +++ b/build-docker.bat @@ -0,0 +1,7 @@ +docker build -t ac-decomp . +curl -O https://files.decomp.dev/compilers_latest.zip +Expand-Archive -LiteralPath compilers_latest.zip -DestinationPath compilers_temp +move compilers_temp\GC\1.2.5n\ tools\ && mv compilers_temp\GC\1.3.2\ tools\ && mv compilers_temp\GC\1.3.2r\ tools\ +Remove-Item compilers_latest.zip +Remove-Item -Path compilers_temp\ -Recurse +echo "Docker image setup is now complete. You may proceed with the instructions." From 9db2f8d990dc2930553fdb12ce3000722d50739c Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 04:15:28 +0000 Subject: [PATCH 072/234] Update build-docker.sh --- build-docker.sh | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/build-docker.sh b/build-docker.sh index f4ee9cc8..0e3d8298 100644 --- a/build-docker.sh +++ b/build-docker.sh @@ -8,6 +8,13 @@ else exit 0 fi -mkdir compilers_temp && if [ -e /bin/unzip ]; then unzip compilers_latest.zip -d compilers_temp; else echo "You do not seem to have unzip installed on this system. Please install it to continue."; exit 1; fi +mkdir compilers_temp +if [ -e /bin/unzip ]; then + unzip compilers_latest.zip -d compilers_temp +else + echo "You do not seem to have unzip installed on this system. Please install it to continue." + exit 1 +fi mv compilers_temp/GC/1.2.5n/ tools/ && mv compilers_temp/GC/1.3.2/ tools/ && mv compilers_temp/GC/1.3.2r/ tools/ +rm -r compilers_temp compilers_latest.zip echo "Docker image setup is now complete. You may proceed with the instructions." From acd1982abdead01784190088fcfa576efcb2b6d2 Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 04:19:35 +0000 Subject: [PATCH 073/234] Rename build-docker.bat to build-docker.ps1 --- build-docker.bat => build-docker.ps1 | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename build-docker.bat => build-docker.ps1 (100%) diff --git a/build-docker.bat b/build-docker.ps1 similarity index 100% rename from build-docker.bat rename to build-docker.ps1 From c97aed3ab1e9531c2500dd3c15dfd63c8272da93 Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 04:20:29 +0000 Subject: [PATCH 074/234] Update README.MD --- README.MD | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/README.MD b/README.MD index 2c0ac959..8d738847 100644 --- a/README.MD +++ b/README.MD @@ -19,11 +19,10 @@ Use `--recursive` when cloning to have ppcdis in the repository. 1. [Dump a copy of the game](./docs/extract_game.md) and extract all files. 2. Place **main.dol**, **foresta.rel.szs**, **forest_1st.arc**, and **forest_2nd.arc** in *dump/*. -3. Download the [CodeWarrior 1.3.2, 1.3.2r, and 1.2.5n compilers](https://files.decomp.dev/compilers_latest.zip) and extract them to *tools/1.3.2/*, *tools/1.3.2r/*, and *tools/1.2.5n/*, respectively. -4. Install Docker. -5. Build the Docker image (`docker build -t ac-decomp .`). -6. Run configure.py (`docker run --rm -v ${PWD}:/ac-decomp ac-decomp python3 configure.py`). -7. Run build.py (`docker run --rm -v ${PWD}:/ac-decomp ac-decomp python3 build.py`). +3. Install Docker. +4. Build the Docker image. If using MacOS or Linux, run `chmod +x build-docker.sh && ./build-docker.sh`. If using Windows, run the `build-docker.ps1` file. +5. Run configure.py (`docker run --rm -v ${PWD}:/ac-decomp ac-decomp python3 configure.py`). +6. Run build.py (`docker run --rm -v ${PWD}:/ac-decomp ac-decomp python3 build.py`). ### Build manually From c8e7d5377d65e5e46e60657b8372899a23f2fc7f Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 04:56:39 +0000 Subject: [PATCH 075/234] Update and rename build-docker.ps1 to build-docker.bat --- build-docker.bat | 15 +++++++++++++++ build-docker.ps1 | 7 ------- 2 files changed, 15 insertions(+), 7 deletions(-) create mode 100644 build-docker.bat delete mode 100644 build-docker.ps1 diff --git a/build-docker.bat b/build-docker.bat new file mode 100644 index 00000000..72841f7e --- /dev/null +++ b/build-docker.bat @@ -0,0 +1,15 @@ +@echo off +echo "Please ensure Docker Desktop is running before you continue." +pause +docker build -t ac-decomp . +curl -O https://files.decomp.dev/compilers_latest.zip +mkdir compilers_temp +tar -xf compilers_latest.zip -C compilers_temp +xcopy compilers_temp\GC\1.2.5n\ tools\1.2.5n\ /E /I +xcopy compilers_temp\GC\1.3.2\ tools\1.3.2\ /E /I +xcopy compilers_temp\GC\1.3.2r\ tools\1.3.2r\ /E /I +del compilers_latest.zip +rmdir /S /Q compilers_temp\ +echo "Docker image setup is now complete. You may proceed with the instructions." +pause +exit diff --git a/build-docker.ps1 b/build-docker.ps1 deleted file mode 100644 index 2df1ccf1..00000000 --- a/build-docker.ps1 +++ /dev/null @@ -1,7 +0,0 @@ -docker build -t ac-decomp . -curl -O https://files.decomp.dev/compilers_latest.zip -Expand-Archive -LiteralPath compilers_latest.zip -DestinationPath compilers_temp -move compilers_temp\GC\1.2.5n\ tools\ && mv compilers_temp\GC\1.3.2\ tools\ && mv compilers_temp\GC\1.3.2r\ tools\ -Remove-Item compilers_latest.zip -Remove-Item -Path compilers_temp\ -Recurse -echo "Docker image setup is now complete. You may proceed with the instructions." From 17a86201c6350e76386936182ae22d1478d2e2c6 Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 04:57:24 +0000 Subject: [PATCH 076/234] Update README.MD --- README.MD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.MD b/README.MD index 8d738847..92eae8eb 100644 --- a/README.MD +++ b/README.MD @@ -20,7 +20,7 @@ Use `--recursive` when cloning to have ppcdis in the repository. 1. [Dump a copy of the game](./docs/extract_game.md) and extract all files. 2. Place **main.dol**, **foresta.rel.szs**, **forest_1st.arc**, and **forest_2nd.arc** in *dump/*. 3. Install Docker. -4. Build the Docker image. If using MacOS or Linux, run `chmod +x build-docker.sh && ./build-docker.sh`. If using Windows, run the `build-docker.ps1` file. +4. Build the Docker image. If using MacOS or Linux (including WSL), run `chmod +x build-docker.sh && ./build-docker.sh`. If using Windows, run the `build-docker.bat` file. 5. Run configure.py (`docker run --rm -v ${PWD}:/ac-decomp ac-decomp python3 configure.py`). 6. Run build.py (`docker run --rm -v ${PWD}:/ac-decomp ac-decomp python3 build.py`). From 98d1884cffcd423b93cb9e21d85dbb934f522046 Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 05:03:10 +0000 Subject: [PATCH 077/234] Add notifier to make sure user has Docker --- build-docker.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/build-docker.sh b/build-docker.sh index 0e3d8298..4d01dc82 100644 --- a/build-docker.sh +++ b/build-docker.sh @@ -1,3 +1,5 @@ +echo "Ensure Docker has been properly installed before continuing." +read -p "Press enter to continue or CTRL-C to exit." docker build -t ac-decomp . if [ -e /bin/curl ]; then curl -O https://files.decomp.dev/compilers_latest.zip From da21463aac05ed6eefd1596e7c85c74b3c619003 Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 05:03:38 +0000 Subject: [PATCH 078/234] Make messaging more consistent --- build-docker.bat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build-docker.bat b/build-docker.bat index 72841f7e..b752d425 100644 --- a/build-docker.bat +++ b/build-docker.bat @@ -1,5 +1,5 @@ @echo off -echo "Please ensure Docker Desktop is running before you continue." +echo "Please ensure Docker Desktop is running before continuing." pause docker build -t ac-decomp . curl -O https://files.decomp.dev/compilers_latest.zip From 544e49b52412ad10056778e24058e56a9cdd0ab8 Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 05:04:04 +0000 Subject: [PATCH 079/234] Make messaging more consistent --- build-docker.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build-docker.sh b/build-docker.sh index 4d01dc82..503350ad 100644 --- a/build-docker.sh +++ b/build-docker.sh @@ -1,4 +1,4 @@ -echo "Ensure Docker has been properly installed before continuing." +echo "Please ensure Docker has been properly installed before continuing." read -p "Press enter to continue or CTRL-C to exit." docker build -t ac-decomp . if [ -e /bin/curl ]; then From c7554be7cdebf01cba13f35fcf300462781f9c15 Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 05:04:21 +0000 Subject: [PATCH 080/234] Update build-docker.sh --- build-docker.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build-docker.sh b/build-docker.sh index 503350ad..872eb728 100644 --- a/build-docker.sh +++ b/build-docker.sh @@ -1,5 +1,5 @@ echo "Please ensure Docker has been properly installed before continuing." -read -p "Press enter to continue or CTRL-C to exit." +read -p "Press Enter to continue or CTRL-C to exit." docker build -t ac-decomp . if [ -e /bin/curl ]; then curl -O https://files.decomp.dev/compilers_latest.zip From 67b717649a9637fd939906ac824321f8884027c9 Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 05:04:43 +0000 Subject: [PATCH 081/234] Update build-docker.sh --- build-docker.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build-docker.sh b/build-docker.sh index 872eb728..c99ea0a0 100644 --- a/build-docker.sh +++ b/build-docker.sh @@ -1,4 +1,4 @@ -echo "Please ensure Docker has been properly installed before continuing." +echo "Please ensure Docker is installed before continuing." read -p "Press Enter to continue or CTRL-C to exit." docker build -t ac-decomp . if [ -e /bin/curl ]; then From 36d2f9a8fd459d5a5e34cf2669df3393afde2f01 Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 05:06:02 +0000 Subject: [PATCH 082/234] Update build-docker.sh --- build-docker.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/build-docker.sh b/build-docker.sh index c99ea0a0..4ed73dc4 100644 --- a/build-docker.sh +++ b/build-docker.sh @@ -15,6 +15,8 @@ if [ -e /bin/unzip ]; then unzip compilers_latest.zip -d compilers_temp else echo "You do not seem to have unzip installed on this system. Please install it to continue." + rm compilers_latest.zip + rm -r compilers_temp exit 1 fi mv compilers_temp/GC/1.2.5n/ tools/ && mv compilers_temp/GC/1.3.2/ tools/ && mv compilers_temp/GC/1.3.2r/ tools/ From 005bb9c13d9263617ea66d0d3dc24bc47eac5ed1 Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 05:09:18 +0000 Subject: [PATCH 083/234] Update README.MD --- README.MD | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.MD b/README.MD index 92eae8eb..bc42ff02 100644 --- a/README.MD +++ b/README.MD @@ -7,6 +7,7 @@ Decompilation in progress of Animal Crossing (GAFE01) A decompilation of the original N64 version of the game is being worked on [here](https://github.com/zeldaret/af). + ## Cloning Use `--recursive` when cloning to have ppcdis in the repository. @@ -26,7 +27,7 @@ Use `--recursive` when cloning to have ppcdis in the repository. ### Build manually -> ℹ️ When building manually from a work directory originally used for Docker, you will need to run `sudo ninja -t clean` for the build to execute properly. +> ℹ️ When building manually from a work directory previously used for Docker, you will need to run `sudo ninja -t clean` for the build to execute properly. 1. [Dump a copy of the game](./docs/extract_game.md) and extract all files. 2. Place **main.dol**, **foresta.rel.szs**, **forest_1st.arc**, and **forest_2nd.arc** in *dump/*. From 407de26eeefe8b8536e684b0d27b4d1bdd48829d Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 05:13:03 +0000 Subject: [PATCH 084/234] Make Windows disclaimer more detailed --- README.MD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.MD b/README.MD index bc42ff02..4ffbe3af 100644 --- a/README.MD +++ b/README.MD @@ -14,7 +14,7 @@ Use `--recursive` when cloning to have ppcdis in the repository. ## Building -> ℹ️ When using Windows, it's recommended to use WSL. +> ℹ️ The build is known to run disproportionately slow on Windows, so we recommend using WSL for both build methods when using Windows. ### Docker From d786d614f26c11f22ebdb16dd60ceacbe9b40e68 Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 05:14:16 +0000 Subject: [PATCH 085/234] Make messaging less redundant --- README.MD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.MD b/README.MD index 4ffbe3af..2ff5abd6 100644 --- a/README.MD +++ b/README.MD @@ -14,7 +14,7 @@ Use `--recursive` when cloning to have ppcdis in the repository. ## Building -> ℹ️ The build is known to run disproportionately slow on Windows, so we recommend using WSL for both build methods when using Windows. +> ℹ️ When using Windows, the build is known to run disproportionately slow when run natively, so we recommend using WSL. ### Docker From 079f8dce91b1f3927c3b4cbee3676793c79c4b57 Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 05:15:26 +0000 Subject: [PATCH 086/234] Fix typo --- README.MD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.MD b/README.MD index 2ff5abd6..de6f0773 100644 --- a/README.MD +++ b/README.MD @@ -14,7 +14,7 @@ Use `--recursive` when cloning to have ppcdis in the repository. ## Building -> ℹ️ When using Windows, the build is known to run disproportionately slow when run natively, so we recommend using WSL. +> ℹ️ When using Windows, the build is known to run disproportionately slow when ran natively, so we recommend using WSL. ### Docker From 7485a409e04f2b034448560fc757cf9eb08e74ca Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 05:15:51 +0000 Subject: [PATCH 087/234] Fix redundancy --- README.MD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.MD b/README.MD index de6f0773..27a6b2cd 100644 --- a/README.MD +++ b/README.MD @@ -14,7 +14,7 @@ Use `--recursive` when cloning to have ppcdis in the repository. ## Building -> ℹ️ When using Windows, the build is known to run disproportionately slow when ran natively, so we recommend using WSL. +> ℹ️ On Windows, the build is known to run disproportionately slow when ran natively, so we recommend using WSL. ### Docker From bf4a53bc3434372da0c6c066bb6918466ce92234 Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 05:18:49 +0000 Subject: [PATCH 088/234] Update README.MD --- README.MD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.MD b/README.MD index 27a6b2cd..f4db1dd1 100644 --- a/README.MD +++ b/README.MD @@ -36,7 +36,7 @@ Use `--recursive` when cloning to have ppcdis in the repository. 5. Install Python modules from requirements.txt (`pip install -r requirements.txt`). 6. Install version 0.6.13 of [wibo](https://github.com/decompals/wibo) - Wibo is a lightweight Wine replacement that's tailor-made for use with decomp projects. Regular Wine can be used if preferred, but for the purposes of this guide, these instructions will use wibo. - - Download [version 0.6.13 GitHub release](https://github.com/decompals/wibo/releases/tag/0.6.13) and run `install ./wibo /usr/bin` to install it to your system. + - Download the [GitHub release of version 0.6.13](https://github.com/decompals/wibo/releases/tag/0.6.13) and run `install ./wibo /usr/bin` to install it to your system. 7. Install devkitPPC. - To get devkitPPC, you'll need [devkitPro Pacman](https://devkitpro.org/wiki/devkitPro_pacman#Installing_devkitPro_Pacman). - Run `dkp-pacman -S devkitPPC` once dkp-pacman is installed to install devkitPPC. From 26a35d580f062dc4d41a584711dd846353c20c34 Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 05:21:43 +0000 Subject: [PATCH 089/234] Update Dockerfile --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 4661476f..fbe6b183 100644 --- a/Dockerfile +++ b/Dockerfile @@ -28,7 +28,7 @@ RUN chmod +x install-devkitpro-pacman RUN sed -i 's/^apt-get.*$/& -y/g' install-devkitpro-pacman RUN ./install-devkitpro-pacman RUN rm install-devkitpro-pacman -# workaround for a dumb WSL bug that happens with Windows Docker. if we don't do this, devkitPPC installation fails on Windows. +# workaround for a dumb bug that happens with Windows Docker. if we don't do this, devkitPPC installation fails on Windows. RUN if [ ! -e /etc/mtab ]; then ln -s /proc/self/mounts /etc/mtab; fi RUN dkp-pacman -S devkitPPC --noconfirm # dear fucking god this is hacky but it works (needed otherwise next step fails) From 2ea8e32049f44b6444201167e2ac81febdf2911d Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 05:26:13 +0000 Subject: [PATCH 090/234] Rename build-docker.bat to docker-setup.bat --- build-docker.bat => docker-setup.bat | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename build-docker.bat => docker-setup.bat (100%) diff --git a/build-docker.bat b/docker-setup.bat similarity index 100% rename from build-docker.bat rename to docker-setup.bat From f006b89fb5961b699f205db3d6e7ef686f8638e1 Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 05:26:26 +0000 Subject: [PATCH 091/234] Rename build-docker.sh to docker-setup.sh --- build-docker.sh => docker-setup.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename build-docker.sh => docker-setup.sh (100%) diff --git a/build-docker.sh b/docker-setup.sh similarity index 100% rename from build-docker.sh rename to docker-setup.sh From fc8522cb445b97dacc3fa6c9515d2ad40ad68fe0 Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 05:26:57 +0000 Subject: [PATCH 092/234] Make messaging less confusing --- README.MD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.MD b/README.MD index f4db1dd1..299986bf 100644 --- a/README.MD +++ b/README.MD @@ -21,7 +21,7 @@ Use `--recursive` when cloning to have ppcdis in the repository. 1. [Dump a copy of the game](./docs/extract_game.md) and extract all files. 2. Place **main.dol**, **foresta.rel.szs**, **forest_1st.arc**, and **forest_2nd.arc** in *dump/*. 3. Install Docker. -4. Build the Docker image. If using MacOS or Linux (including WSL), run `chmod +x build-docker.sh && ./build-docker.sh`. If using Windows, run the `build-docker.bat` file. +4. Set up the Docker image. If using MacOS or Linux (including WSL), run `chmod +x docker-setup.sh && ./docker-setup.sh`. If using Windows, run the `docker-setup.bat` file. 5. Run configure.py (`docker run --rm -v ${PWD}:/ac-decomp ac-decomp python3 configure.py`). 6. Run build.py (`docker run --rm -v ${PWD}:/ac-decomp ac-decomp python3 build.py`). From 014a0af0a1fa8597c3792e1b0a19a91c3b9c75cc Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 05:34:19 +0000 Subject: [PATCH 093/234] Rearrange docker command --- docker-setup.bat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-setup.bat b/docker-setup.bat index b752d425..e4c09736 100644 --- a/docker-setup.bat +++ b/docker-setup.bat @@ -1,7 +1,6 @@ @echo off echo "Please ensure Docker Desktop is running before continuing." pause -docker build -t ac-decomp . curl -O https://files.decomp.dev/compilers_latest.zip mkdir compilers_temp tar -xf compilers_latest.zip -C compilers_temp @@ -10,6 +9,7 @@ xcopy compilers_temp\GC\1.3.2\ tools\1.3.2\ /E /I xcopy compilers_temp\GC\1.3.2r\ tools\1.3.2r\ /E /I del compilers_latest.zip rmdir /S /Q compilers_temp\ +docker build -t ac-decomp . echo "Docker image setup is now complete. You may proceed with the instructions." pause exit From 1874c92f56d843fe67c904ce09a81c992835f9f8 Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 05:34:54 +0000 Subject: [PATCH 094/234] Rearrange docker command --- docker-setup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-setup.sh b/docker-setup.sh index 4ed73dc4..8acf7a8b 100644 --- a/docker-setup.sh +++ b/docker-setup.sh @@ -1,6 +1,5 @@ echo "Please ensure Docker is installed before continuing." read -p "Press Enter to continue or CTRL-C to exit." -docker build -t ac-decomp . if [ -e /bin/curl ]; then curl -O https://files.decomp.dev/compilers_latest.zip elif [ -e /bin/wget ]; then @@ -21,4 +20,5 @@ else fi mv compilers_temp/GC/1.2.5n/ tools/ && mv compilers_temp/GC/1.3.2/ tools/ && mv compilers_temp/GC/1.3.2r/ tools/ rm -r compilers_temp compilers_latest.zip +docker build -t ac-decomp . echo "Docker image setup is now complete. You may proceed with the instructions." From 62a22b242a1fe05828c88fad657d2caca4dc1537 Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 05:45:05 +0000 Subject: [PATCH 095/234] Improve existence checks --- docker-setup.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docker-setup.sh b/docker-setup.sh index 8acf7a8b..65453b80 100644 --- a/docker-setup.sh +++ b/docker-setup.sh @@ -1,8 +1,8 @@ echo "Please ensure Docker is installed before continuing." read -p "Press Enter to continue or CTRL-C to exit." -if [ -e /bin/curl ]; then +if command -v curl &> /dev/null; then curl -O https://files.decomp.dev/compilers_latest.zip -elif [ -e /bin/wget ]; then +elif command -v wget &> /dev/null; then wget https://files.decomp.dev/compilers_latest.zip else echo "You do not seem to have curl or wget installed on this system. Please install one or the other to continue." @@ -10,7 +10,7 @@ else fi mkdir compilers_temp -if [ -e /bin/unzip ]; then +if command -v unzip &> /dev/null; then unzip compilers_latest.zip -d compilers_temp else echo "You do not seem to have unzip installed on this system. Please install it to continue." From e9bba0543e2755e9ddfed7bbe36a88d8e8bb6ceb Mon Sep 17 00:00:00 2001 From: Weaky322 Date: Mon, 5 Aug 2024 01:41:14 -0600 Subject: [PATCH 096/234] Link ef_hanabi_dummy.c --- config/rel_slices.yml | 1356 +++++++++++++++++++++-------------------- src/ef_hanabi_dummy.c | 62 +- 2 files changed, 737 insertions(+), 681 deletions(-) diff --git a/config/rel_slices.yml b/config/rel_slices.yml index d94b0444..e87f554a 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -1123,6 +1123,10 @@ ef_footprint.c: .text: [0x8060BCB0, 0x8060C21C] .rodata: [0x8064C0B0, 0x8064C0E0] .data: [0x806D2430, 0x806D2470] +ef_hanabi_dummy.c: + .text: [0x8060E6D8, 0x8060E9B8] + .rodata: [0x8064C2A0, 0x8064C2C0] + .data: [0x806D2858, 0x806D2888] ef_killer.c: .text: [0x80614178, 0x8061481C] .rodata: [0x8064C680, 0x8064C6C0] @@ -1196,701 +1200,45 @@ ac_weather_fine.c: # dataobject.obj NPC draw data TUs data/npc/model/mdl/bev_1.c: - .data: [0x806E03A0, 0x806E27D0] + .data: [0x806E03A0, 0x806E27D0] data/npc/model/tex/bev_1.c: - .data: [0x806E27E0, 0x806E3500] + .data: [0x806E27E0, 0x806E3500] data/npc/model/mdl/ant_1.c: - .data: [0x806E3838, 0x806E5910] + .data: [0x806E3838, 0x806E5910] data/npc/model/tex/ant_1.c: - .data: [0x806E5920, 0x806E6640] + .data: [0x806E5920, 0x806E6640] data/npc/model/tex/ant_2.c: - .data: [0x806E6640, 0x806E7360] + .data: [0x806E6640, 0x806E7360] data/npc/model/tex/ant_3.c: - .data: [0x806E7360, 0x806E8080] + .data: [0x806E7360, 0x806E8080] data/npc/model/tex/ant_4.c: - .data: [0x806E8080, 0x806E8DA0] + .data: [0x806E8080, 0x806E8DA0] data/npc/model/tex/ant_5.c: - .data: [0x806E8DA0, 0x806E9AC0] + .data: [0x806E8DA0, 0x806E9AC0] data/npc/model/mdl/wls_1.c: - .data: [0x806E9AC0, 0x806EBFF0] + .data: [0x806E9AC0, 0x806EBFF0] data/npc/model/tex/wls_1.c: - .data: [0x806EC000, 0x806ECFA0] + .data: [0x806EC000, 0x806ECFA0] data/npc/model/mdl/bea_1.c: - .data: [0x806EF078, 0x806F1030] + .data: [0x806EF078, 0x806F1030] data/npc/model/tex/bea_1.c: - .data: [0x806F1040, 0x806F2260] + .data: [0x806F1040, 0x806F2260] data/npc/model/tex/bea_2.c: - .data: [0x806F2260, 0x806F3480] + .data: [0x806F2260, 0x806F3480] data/npc/model/tex/bea_3.c: - .data: [0x806F3480, 0x806F46A0] + .data: [0x806F3480, 0x806F46A0] data/npc/model/tex/bea_5.c: - .data: [0x806F46A0, 0x806F58C0] + .data: [0x806F46A0, 0x806F58C0] data/npc/model/tex/bea_6.c: - .data: [0x806F58C0, 0x806F6AE0] + .data: [0x806F58C0, 0x806F6AE0] data/npc/model/tex/bea_7.c: - .data: [0x806F6AE0, 0x806F7D00] + .data: [0x806F6AE0, 0x806F7D00] data/npc/model/tex/bea_8.c: - .data: [0x806F7D00, 0x806F8F20] + .data: [0x806F7D00, 0x806F8F20] data/npc/model/tex/bea_9.c: - .data: [0x806F8F20, 0x806FA140] + .data: [0x806F8F20, 0x806FA140] data/npc/model/tex/bea_10.c: - .data: [0x806FA140, 0x806FB360] -data/npc/model/mdl/pbr_1.c: - .data: [0x8076DFA8, 0x80770178] -data/npc/model/tex/pbr_1.c: - .data: [0x80770180, 0x80770EA0] -data/npc/model/tex/pbr_2.c: - .data: [0x80770EA0, 0x80771BC0] -data/npc/model/tex/pbr_3.c: - .data: [0x80771BC0, 0x807728E0] -data/npc/model/tex/pbr_4.c: - .data: [0x807728E0, 0x80773600] -data/npc/model/tex/pbr_5.c: - .data: [0x80773600, 0x80774320] -data/npc/model/mdl/brd_1.c: - .data: [0x80774320, 0x80776358] -data/npc/model/tex/brd_1.c: - .data: [0x80776360, 0x80777080] -data/npc/model/tex/brd_2.c: - .data: [0x80777080, 0x80777DA0] -data/npc/model/tex/brd_11.c: - .data: [0x80777DA0, 0x80778AC0] -data/npc/model/tex/brd_3.c: - .data: [0x80778AC0, 0x807797E0] -data/npc/model/tex/brd_4.c: - .data: [0x807797E0, 0x8077A500] -data/npc/model/tex/brd_5.c: - .data: [0x8077A500, 0x8077B220] -data/npc/model/tex/brd_6.c: - .data: [0x8077B220, 0x8077BF40] -data/npc/model/tex/brd_7.c: - .data: [0x8077BF40, 0x8077CC60] -data/npc/model/tex/brd_8.c: - .data: [0x8077CC60, 0x8077D980] -data/npc/model/tex/brd_9.c: - .data: [0x8077D980, 0x8077E6A0] -data/npc/model/tex/brd_10.c: - .data: [0x8077E6A0, 0x8077F3C0] -data/npc/model/mdl/fox_1.c: - .data: [0x807D5FE8, 0x807D8098] -data/npc/model/tex/fox_1.c: - .data: [0x807D80A0, 0x807D8FC0] -data/npc/model/mdl/bul_1.c: - .data: [0x807D8FC0, 0x807DAFB0] -data/npc/model/tex/bul_1.c: - .data: [0x807DAFC0, 0x807DC1E0] -data/npc/model/tex/bul_2.c: - .data: [0x807DC1E0, 0x807DD400] -data/npc/model/tex/bul_3.c: - .data: [0x807DD400, 0x807DE620] -data/npc/model/tex/bul_4.c: - .data: [0x807DE620, 0x807DF840] -data/npc/model/mdl/cml_1.c: - .data: [0x807DF840, 0x807E1EA8] -data/npc/model/tex/cml_1.c: - .data: [0x807E1EC0, 0x807E2E60] -data/npc/model/mdl/cat_1.c: - .data: [0x807E2E60, 0x807E4BB0] -data/npc/model/tex/cat_1.c: - .data: [0x807E4BC0, 0x807E5DE0] -data/npc/model/tex/cat_2.c: - .data: [0x807E5DE0, 0x807E7000] -data/npc/model/tex/cat_11.c: - .data: [0x807E7000, 0x807E8220] -data/npc/model/tex/cat_12.c: - .data: [0x807E8220, 0x807E9440] -data/npc/model/tex/cat_13.c: - .data: [0x807E9440, 0x807EA660] -data/npc/model/tex/cat_14.c: - .data: [0x807EA660, 0x807EB880] -data/npc/model/tex/cat_15.c: - .data: [0x807EB880, 0x807ECAA0] -data/npc/model/tex/cat_3.c: - .data: [0x807ECAA0, 0x807EDCC0] -data/npc/model/tex/cat_4.c: - .data: [0x807EDCC0, 0x807EEEE0] -data/npc/model/tex/cat_5.c: - .data: [0x807EEEE0, 0x807F0100] -data/npc/model/tex/cat_6.c: - .data: [0x807F0100, 0x807F1320] -data/npc/model/tex/cat_7.c: - .data: [0x807F1320, 0x807F2540] -data/npc/model/tex/cat_8.c: - .data: [0x807F2540, 0x807F3760] -data/npc/model/tex/cat_9.c: - .data: [0x807F3760, 0x807F4980] -data/npc/model/tex/cat_10.c: - .data: [0x807F4980, 0x807F5BA0] -data/npc/model/mdl/chn_1.c: - .data: [0x807F5BA0, 0x807F8348] -data/npc/model/tex/chn_1.c: - .data: [0x807F8360, 0x807F9040] -data/npc/model/tex/chn_2.c: - .data: [0x807F9040, 0x807F9D20] -data/npc/model/tex/chn_3.c: - .data: [0x807F9D20, 0x807FAA00] -data/npc/model/tex/chn_4.c: - .data: [0x807FAA00, 0x807FB6E0] -data/npc/model/tex/chn_5.c: - .data: [0x807FB6E0, 0x807FC3C0] -data/npc/model/tex/chn_6.c: - .data: [0x807FC3C0, 0x807FD0A0] -data/npc/model/tex/chn_7.c: - .data: [0x807FD0A0, 0x807FDD80] -data/npc/model/tex/chn_8.c: - .data: [0x807FDD80, 0x807FEA60] -data/npc/model/tex/chn_9.c: - .data: [0x807FEA60, 0x807FF740] -data/npc/model/mdl/cbr_1.c: - .data: [0x807FF740, 0x80801620] -data/npc/model/tex/cbr_1.c: - .data: [0x80801620, 0x80802840] -data/npc/model/tex/cbr_2.c: - .data: [0x80802840, 0x80803A60] -data/npc/model/tex/cbr_11.c: - .data: [0x80803A60, 0x80804C80] -data/npc/model/tex/cbr_3.c: - .data: [0x80804C80, 0x80805EA0] -data/npc/model/tex/cbr_4.c: - .data: [0x80805EA0, 0x808070C0] -data/npc/model/tex/cbr_5.c: - .data: [0x808070C0, 0x808082E0] -data/npc/model/tex/cbr_6.c: - .data: [0x808082E0, 0x80809500] -data/npc/model/tex/cbr_7.c: - .data: [0x80809500, 0x8080A720] -data/npc/model/tex/cbr_8.c: - .data: [0x8080A720, 0x8080B940] -data/npc/model/tex/cbr_9.c: - .data: [0x8080B940, 0x8080CB60] -data/npc/model/tex/cbr_10.c: - .data: [0x8080CB60, 0x8080DD80] -data/npc/model/mdl/rcc_1.c: - .data: [0x8080E628, 0x80810608] -data/npc/model/tex/rcc_1.c: - .data: [0x80810620, 0x80811500] -data/npc/model/mdl/cow_1.c: - .data: [0x80811500, 0x808134E0] -data/npc/model/tex/cow_1.c: - .data: [0x808134E0, 0x80814700] -data/npc/model/tex/cow_2.c: - .data: [0x80814700, 0x80815920] -data/npc/model/tex/cow_3.c: - .data: [0x80815920, 0x80816B40] -data/npc/model/tex/cow_4.c: - .data: [0x80816B40, 0x80817D60] -data/npc/model/mdl/crd_1.c: - .data: [0x80817D60, 0x80819EE8] -data/npc/model/tex/crd_1.c: - .data: [0x80819F00, 0x8081AC20] -data/npc/model/tex/crd_2.c: - .data: [0x8081AC20, 0x8081B940] -data/npc/model/tex/crd_3.c: - .data: [0x8081B940, 0x8081C660] -data/npc/model/tex/crd_4.c: - .data: [0x8081C660, 0x8081D380] -data/npc/model/mdl/owl_1.c: - .data: [0x8081D380, 0x8081F9A8] -data/npc/model/tex/owl_1.c: - .data: [0x8081F9C0, 0x80820820] -data/npc/model/mdl/rcd_1.c: - .data: [0x80820820, 0x80822720] -data/npc/model/tex/rcd_1.c: - .data: [0x80822720, 0x80823580] -data/npc/model/mdl/grf_1.c: - .data: [0x80823580, 0x80825B28] -data/npc/model/tex/grf_1.c: - .data: [0x80825B40, 0x80826A60] -data/npc/model/mdl/dog_1.c: - .data: [0x80826A60, 0x80828A40] -data/npc/model/tex/dog_1.c: - .data: [0x80828A40, 0x80829C60] -data/npc/model/tex/dog_2.c: - .data: [0x80829C60, 0x8082AE80] -data/npc/model/tex/dog_3.c: - .data: [0x8082AE80, 0x8082C0A0] -data/npc/model/tex/dog_4.c: - .data: [0x8082C0A0, 0x8082D2C0] -data/npc/model/tex/dog_5.c: - .data: [0x8082D2C0, 0x8082E4E0] -data/npc/model/tex/dog_6.c: - .data: [0x8082E4E0, 0x8082F700] -data/npc/model/tex/dog_7.c: - .data: [0x8082F700, 0x80830920] -data/npc/model/tex/dog_8.c: - .data: [0x80830920, 0x80831B40] -data/npc/model/tex/dog_9.c: - .data: [0x80831B40, 0x80832D60] -data/npc/model/tex/dog_10.c: - .data: [0x80832D60, 0x80833F80] -data/npc/model/mdl/seg_1.c: - .data: [0x80833F80, 0x808362E8] -data/npc/model/tex/seg_1.c: - .data: [0x80836300, 0x80837160] -data/npc/model/mdl/duk_1.c: - .data: [0x80837160, 0x80839070] -data/npc/model/tex/duk_1.c: - .data: [0x80839080, 0x8083A2A0] -data/npc/model/tex/duk_2.c: - .data: [0x8083A2A0, 0x8083B4C0] -data/npc/model/tex/duk_11.c: - .data: [0x8083B4C0, 0x8083C6E0] -data/npc/model/tex/duk_3.c: - .data: [0x8083C6E0, 0x8083D900] -data/npc/model/tex/duk_4.c: - .data: [0x8083D900, 0x8083EB20] -data/npc/model/tex/duk_5.c: - .data: [0x8083EB20, 0x8083FD40] -data/npc/model/tex/duk_6.c: - .data: [0x8083FD40, 0x80840F60] -data/npc/model/tex/duk_7.c: - .data: [0x80840F60, 0x80842180] -data/npc/model/tex/duk_8.c: - .data: [0x80842180, 0x808433A0] -data/npc/model/tex/duk_9.c: - .data: [0x808433A0, 0x808445C0] -data/npc/model/tex/duk_10.c: - .data: [0x808445C0, 0x808457E0] -data/npc/model/mdl/elp_1.c: - .data: [0x80845830, 0x808479A0] -data/npc/model/tex/elp_1.c: - .data: [0x808479A0, 0x80848BC0] -data/npc/model/tex/elp_2.c: - .data: [0x80848BC0, 0x80849DE0] -data/npc/model/tex/elp_3.c: - .data: [0x80849DE0, 0x8084B000] -data/npc/model/tex/elp_4.c: - .data: [0x8084B000, 0x8084C220] -data/npc/model/tex/elp_5.c: - .data: [0x8084C220, 0x8084D440] -data/npc/model/tex/elp_6.c: - .data: [0x8084D440, 0x8084E660] -data/npc/model/tex/elp_7.c: - .data: [0x8084E660, 0x8084F880] -data/npc/model/mdl/flg_1.c: - .data: [0x80857D80, 0x808597E0] -data/npc/model/tex/flg_1.c: - .data: [0x808597E0, 0x8085AA00] -data/npc/model/tex/flg_2.c: - .data: [0x8085AA00, 0x8085BC20] -data/npc/model/tex/flg_11.c: - .data: [0x8085BC20, 0x8085CE40] -data/npc/model/tex/flg_12.c: - .data: [0x8085CE40, 0x8085DFE0] -data/npc/model/tex/flg_13.c: - .data: [0x8085DFE0, 0x8085F200] -data/npc/model/tex/flg_3.c: - .data: [0x8085F200, 0x80860420] -data/npc/model/tex/flg_4.c: - .data: [0x80860420, 0x80861640] -data/npc/model/tex/flg_5.c: - .data: [0x80861640, 0x80862860] -data/npc/model/tex/flg_6.c: - .data: [0x80862860, 0x80863A80] -data/npc/model/tex/flg_7.c: - .data: [0x80863A80, 0x80864CA0] -data/npc/model/tex/flg_8.c: - .data: [0x80864CA0, 0x80865EC0] -data/npc/model/tex/flg_9.c: - .data: [0x80865EC0, 0x808670E0] -data/npc/model/tex/flg_10.c: - .data: [0x808670E0, 0x80868300] -data/npc/model/mdl/rcf_1.c: - .data: [0x80868300, 0x8086A9A0] -data/npc/model/tex/rcf_1.c: - .data: [0x8086A9A0, 0x8086B8C0] -data/npc/model/mdl/gst_1.c: - .data: [0x8086CB08, 0x8086E180] -data/npc/model/tex/gst_1.c: - .data: [0x8086E180, 0x8086F120] -data/npc/model/mdl/goa_1.c: - .data: [0x80871730, 0x808736E8] -data/npc/model/tex/goa_1.c: - .data: [0x80873700, 0x80874920] -data/npc/model/tex/goa_2.c: - .data: [0x80874920, 0x80875B40] -data/npc/model/tex/goa_3.c: - .data: [0x80875B40, 0x80876D60] -data/npc/model/tex/goa_4.c: - .data: [0x80876D60, 0x80877F80] -data/npc/model/tex/goa_5.c: - .data: [0x80877F80, 0x808791A0] -data/npc/model/tex/goa_6.c: - .data: [0x808791A0, 0x8087A3C0] -data/npc/model/mdl/gor_1.c: - .data: [0x8087A3C0, 0x8087C948] -data/npc/model/tex/gor_1.c: - .data: [0x8087C960, 0x8087DB80] -data/npc/model/tex/gor_2.c: - .data: [0x8087DB80, 0x8087EDA0] -data/npc/model/tex/gor_3.c: - .data: [0x8087EDA0, 0x8087FFC0] -data/npc/model/tex/gor_4.c: - .data: [0x8087FFC0, 0x808811E0] -data/npc/model/tex/gor_5.c: - .data: [0x808811E0, 0x80882400] -data/npc/model/mdl/xct_1.c: - .data: [0x80882400, 0x80884068] -data/npc/model/tex/xct_1.c: - .data: [0x80884080, 0x80885420] -data/npc/model/mdl/bpt_1.c: - .data: [0x80894928, 0x80896A80] -data/npc/model/tex/bpt_1.c: - .data: [0x80896A80, 0x808979A0] -data/npc/model/mdl/pkn_1.c: - .data: [0x808979A0, 0x808993C8] -data/npc/model/tex/pkn_1.c: - .data: [0x808993E0, 0x80899A80] -data/npc/model/mdl/hem_1.c: - .data: [0x8089BA80, 0x8089D6E0] -data/npc/model/tex/hem_1.c: - .data: [0x8089D6E0, 0x8089DE40] -data/npc/model/mdl/hip_1.c: - .data: [0x8089DE40, 0x808A0558] -data/npc/model/tex/hip_1.c: - .data: [0x808A0560, 0x808A1280] -data/npc/model/tex/hip_2.c: - .data: [0x808A1280, 0x808A1FA0] -data/npc/model/tex/hip_3.c: - .data: [0x808A1FA0, 0x808A2CC0] -data/npc/model/tex/hip_4.c: - .data: [0x808A2CC0, 0x808A39E0] -data/npc/model/tex/hip_5.c: - .data: [0x808A39E0, 0x808A4700] -data/npc/model/tex/hip_6.c: - .data: [0x808A4700, 0x808A5420] -data/npc/model/tex/hip_7.c: - .data: [0x808A5420, 0x808A6140] -data/npc/model/mdl/hrs_1.c: - .data: [0x808A6140, 0x808A8508] -data/npc/model/tex/hrs_1.c: - .data: [0x808A8520, 0x808A92C0] -data/npc/model/tex/hrs_2.c: - .data: [0x808A92C0, 0x808AA060] -data/npc/model/tex/hrs_3.c: - .data: [0x808AA060, 0x808AAE00] -data/npc/model/tex/hrs_4.c: - .data: [0x808AAE00, 0x808ABBA0] -data/npc/model/tex/hrs_5.c: - .data: [0x808ABBA0, 0x808AC940] -data/npc/model/tex/hrs_6.c: - .data: [0x808AC940, 0x808AD6E0] -data/npc/model/tex/hrs_7.c: - .data: [0x808AD6E0, 0x808AE480] -data/npc/model/tex/hrs_8.c: - .data: [0x808AE480, 0x808AF220] -data/npc/model/mdl/plj_1.c: - .data: [0x808B8D00, 0x808BAD00] -data/npc/model/tex/plj_1.c: - .data: [0x808BAD00, 0x808BC1A0] -data/npc/model/mdl/xsq_1.c: - .data: [0x808BC1A0, 0x808BE240] -data/npc/model/tex/xsq_1.c: - .data: [0x808BE240, 0x808BF660] -data/npc/model/mdl/boa_1.c: - .data: [0x808C88A8, 0x808CAF48] -data/npc/model/tex/boa_1.c: - .data: [0x808CAF60, 0x808CBD40] -data/npc/model/mdl/kgr_1.c: - .data: [0x808CBD40, 0x808CE3C8] -data/npc/model/tex/kgr_1.c: - .data: [0x808CE3E0, 0x808CF040] -data/npc/model/tex/kgr_2.c: - .data: [0x808CF040, 0x808CFCA0] -data/npc/model/tex/kgr_3.c: - .data: [0x808CFCA0, 0x808D0900] -data/npc/model/tex/kgr_4.c: - .data: [0x808D0900, 0x808D1560] -data/npc/model/tex/kgr_5.c: - .data: [0x808D1560, 0x808D21C0] -data/npc/model/tex/kgr_6.c: - .data: [0x808D21C0, 0x808D2E20] -data/npc/model/mdl/fob_1.c: - .data: [0x808D2E20, 0x808D5360] -data/npc/model/tex/fob_1.c: - .data: [0x808D5360, 0x808D62C0] -data/npc/model/mdl/kal_1.c: - .data: [0x808D62C0, 0x808D81D8] -data/npc/model/tex/kal_1.c: - .data: [0x808D81E0, 0x808D9480] -data/npc/model/tex/kal_2.c: - .data: [0x808D9480, 0x808DA720] -data/npc/model/tex/kal_3.c: - .data: [0x808DA720, 0x808DB9C0] -data/npc/model/tex/kal_4.c: - .data: [0x808DB9C0, 0x808DCC60] -data/npc/model/tex/kal_5.c: - .data: [0x808DCC60, 0x808DDF00] -data/npc/model/tex/kal_6.c: - .data: [0x808DDF00, 0x808DF1A0] -data/npc/model/mdl/lon_1.c: - .data: [0x808E1A10, 0x808E3F78] -data/npc/model/tex/lon_1.c: - .data: [0x808E3F80, 0x808E5260] -data/npc/model/tex/lon_2.c: - .data: [0x808E5260, 0x808E6540] -data/npc/model/tex/lon_3.c: - .data: [0x808E6540, 0x808E7820] -data/npc/model/tex/lon_4.c: - .data: [0x808E7820, 0x808E8B00] -data/npc/model/mdl/mos_1.c: - .data: [0x808EAEA0, 0x808ECAC8] -data/npc/model/tex/mos_1.c: - .data: [0x808ECAE0, 0x808EDF80] -data/npc/model/mdl/mol_1.c: - .data: [0x808EDF80, 0x808EFBA8] -data/npc/model/tex/mol_1.c: - .data: [0x808EFBC0, 0x808F1060] -data/npc/model/mdl/lrc_1.c: - .data: [0x808F1060, 0x808F2F50] -data/npc/model/tex/lrc_1.c: - .data: [0x808F2F60, 0x808F3E00] -data/npc/model/mdl/mka_1.c: - .data: [0x808F3E00, 0x808F5BA8] -data/npc/model/tex/mka_1.c: - .data: [0x808F5BC0, 0x808F6060] -data/npc/model/mdl/mus_1.c: - .data: [0x808F6EA8, 0x808F90B0] -data/npc/model/tex/mus_1.c: - .data: [0x808F90C0, 0x808FA2E0] -data/npc/model/tex/mus_2.c: - .data: [0x808FA2E0, 0x808FB500] -data/npc/model/tex/mus_3.c: - .data: [0x808FB500, 0x808FC720] -data/npc/model/tex/mus_4.c: - .data: [0x808FC720, 0x808FD940] -data/npc/model/tex/mus_5.c: - .data: [0x808FD940, 0x808FEB60] -data/npc/model/tex/mus_6.c: - .data: [0x808FEB60, 0x808FFD80] -data/npc/model/tex/mus_7.c: - .data: [0x808FFD80, 0x80900FA0] -data/npc/model/tex/mus_8.c: - .data: [0x80900FA0, 0x809021C0] -data/npc/model/tex/mus_9.c: - .data: [0x809021C0, 0x809033E0] -data/npc/model/tex/mus_10.c: - .data: [0x809033E0, 0x80904600] -data/npc/model/mdl/hgh_1.c: - .data: [0x80911E70, 0x80914610] -data/npc/model/tex/hgh_1.c: - .data: [0x80914620, 0x80915500] -data/npc/model/mdl/hgs_1.c: - .data: [0x80915500, 0x80917C80] -data/npc/model/tex/hgs_1.c: - .data: [0x80917C80, 0x80918B60] -data/npc/model/mdl/oct_1.c: - .data: [0x80977CB0, 0x8097A460] -data/npc/model/tex/oct_1.c: - .data: [0x8097A460, 0x8097AE80] -data/npc/model/mdl/ost_1.c: - .data: [0x8097AE80, 0x8097D100] -data/npc/model/tex/ost_1.c: - .data: [0x8097D100, 0x8097DE60] -data/npc/model/tex/ost_2.c: - .data: [0x8097DE60, 0x8097EBC0] -data/npc/model/tex/ost_3.c: - .data: [0x8097EBC0, 0x8097F920] -data/npc/model/tex/ost_4.c: - .data: [0x8097F920, 0x80980680] -data/npc/model/mdl/pgn_1.c: - .data: [0x80980F28, 0x80983140] -data/npc/model/tex/pgn_1.c: - .data: [0x80983140, 0x80983EE0] -data/npc/model/tex/pgn_2.c: - .data: [0x80983EE0, 0x80984C80] -data/npc/model/tex/pgn_3.c: - .data: [0x80984C80, 0x80985A20] -data/npc/model/tex/pgn_4.c: - .data: [0x80985A20, 0x809867C0] -data/npc/model/tex/pgn_5.c: - .data: [0x809867C0, 0x80987560] -data/npc/model/tex/pgn_6.c: - .data: [0x80987560, 0x80988300] -data/npc/model/tex/pgn_7.c: - .data: [0x80988300, 0x809890A0] -data/npc/model/tex/pgn_8.c: - .data: [0x809890A0, 0x80989E40] -data/npc/model/mdl/pig_1.c: - .data: [0x80989E40, 0x8098BAC0] -data/npc/model/tex/pig_1.c: - .data: [0x8098BAC0, 0x8098CC60] -data/npc/model/tex/pig_2.c: - .data: [0x8098CC60, 0x8098DE00] -data/npc/model/tex/pig_11.c: - .data: [0x8098DE00, 0x8098EFA0] -data/npc/model/tex/pig_3.c: - .data: [0x8098EFA0, 0x80990140] -data/npc/model/tex/pig_4.c: - .data: [0x80990140, 0x809912E0] -data/npc/model/tex/pig_5.c: - .data: [0x809912E0, 0x80992480] -data/npc/model/tex/pig_6.c: - .data: [0x80992480, 0x80993620] -data/npc/model/tex/pig_7.c: - .data: [0x80993620, 0x809947C0] -data/npc/model/tex/pig_8.c: - .data: [0x809947C0, 0x80995960] -data/npc/model/tex/pig_9.c: - .data: [0x80995960, 0x80996B00] -data/npc/model/tex/pig_10.c: - .data: [0x80996B00, 0x80997CA0] -data/npc/model/mdl/pla_1.c: - .data: [0x80997CA0, 0x8099A318] -data/npc/model/mdl/plc_1.c: - .data: [0x8099A318, 0x8099C410] -data/npc/model/tex/plc_1.c: - .data: [0x8099C420, 0x8099D900] -data/npc/model/tex/pla_1.c: - .data: [0x8099D900, 0x8099ECA0] -data/npc/model/mdl/pga_1.c: - .data: [0x8099ECA0, 0x809A11A0] -data/npc/model/tex/pga_1.c: - .data: [0x809A11A0, 0x809A2000] -data/npc/model/mdl/pgb_1.c: - .data: [0x809A2000, 0x809A4450] -data/npc/model/tex/pgb_1.c: - .data: [0x809A4460, 0x809A5400] -data/npc/model/mdl/plb_1.c: - .data: [0x809A5400, 0x809A7980] -data/npc/model/tex/plb_1.c: - .data: [0x809A7980, 0x809A8920] -data/npc/model/mdl/rbt_1.c: - .data: [0x809A8920, 0x809AA7B8] -data/npc/model/tex/rbt_1.c: - .data: [0x809AA7C0, 0x809AB9E0] -data/npc/model/tex/rbt_2.c: - .data: [0x809AB9E0, 0x809ACC00] -data/npc/model/tex/rbt_11.c: - .data: [0x809ACC00, 0x809ADE20] -data/npc/model/tex/rbt_3.c: - .data: [0x809ADE20, 0x809AF040] -data/npc/model/tex/rbt_4.c: - .data: [0x809AF040, 0x809B0260] -data/npc/model/tex/rbt_5.c: - .data: [0x809B0260, 0x809B1480] -data/npc/model/tex/rbt_6.c: - .data: [0x809B1480, 0x809B26A0] -data/npc/model/tex/rbt_7.c: - .data: [0x809B26A0, 0x809B38C0] -data/npc/model/tex/rbt_8.c: - .data: [0x809B38C0, 0x809B4AE0] -data/npc/model/tex/rbt_9.c: - .data: [0x809B4AE0, 0x809B5D00] -data/npc/model/tex/rbt_10.c: - .data: [0x809B5D00, 0x809B6F20] -data/npc/model/mdl/mob_1.c: - .data: [0x809B6F20, 0x809B8AA0] -data/npc/model/tex/mob_1.c: - .data: [0x809B8AA0, 0x809B9F40] -data/npc/model/mdl/rhn_1.c: - .data: [0x809BA340, 0x809BCAF0] -data/npc/model/tex/rhn_1.c: - .data: [0x809BCB00, 0x809BDD20] -data/npc/model/tex/rhn_2.c: - .data: [0x809BDD20, 0x809BEF40] -data/npc/model/tex/rhn_3.c: - .data: [0x809BEF40, 0x809C0160] -data/npc/model/tex/rhn_4.c: - .data: [0x809C0160, 0x809C1380] -data/npc/model/mdl/snt_1.c: - .data: [0x809C9148, 0x809CAD30] -data/npc/model/tex/snt_1.c: - .data: [0x809CAD40, 0x809CC1E0] -data/npc/model/mdl/wip_1.c: - .data: [0x809CC1E0, 0x809CE170] -data/npc/model/tex/wip_1.c: - .data: [0x809CE180, 0x809CF560] -data/npc/model/mdl/shp_1.c: - .data: [0x809CF560, 0x809D11A0] -data/npc/model/tex/shp_1.c: - .data: [0x809D11A0, 0x809D23C0] -data/npc/model/tex/shp_2.c: - .data: [0x809D23C0, 0x809D35E0] -data/npc/model/tex/shp_3.c: - .data: [0x809D35E0, 0x809D4800] -data/npc/model/tex/shp_4.c: - .data: [0x809D4800, 0x809D5A20] -data/npc/model/tex/shp_5.c: - .data: [0x809D5A20, 0x809D6C40] -data/npc/model/tex/shp_6.c: - .data: [0x809D6C40, 0x809D7E60] -data/npc/model/mdl/rcn_1.c: - .data: [0x809D7E60, 0x809D9E80] -data/npc/model/tex/rcn_1.c: - .data: [0x809D9E80, 0x809DACE0] -data/npc/model/mdl/kab_1.c: - .data: [0x80A001B0, 0x80A02398] -data/npc/model/tex/kab_1.c: - .data: [0x80A023A0, 0x80A02FC0] -data/npc/model/mdl/ttl_1.c: - .data: [0x80B38FC0, 0x80B3ADD8] -data/npc/model/tex/ttl_1.c: - .data: [0x80B3ADE0, 0x80B3BD40] -data/npc/model/mdl/squ_1.c: - .data: [0x80B3BD40, 0x80B3DDE0] -data/npc/model/tex/squ_1.c: - .data: [0x80B3DDE0, 0x80B3F000] -data/npc/model/tex/squ_2.c: - .data: [0x80B3F000, 0x80B40220] -data/npc/model/tex/squ_11.c: - .data: [0x80B40220, 0x80B41440] -data/npc/model/tex/squ_3.c: - .data: [0x80B41440, 0x80B42660] -data/npc/model/tex/squ_4.c: - .data: [0x80B42660, 0x80B43880] -data/npc/model/tex/squ_5.c: - .data: [0x80B43880, 0x80B44AA0] -data/npc/model/tex/squ_6.c: - .data: [0x80B44AA0, 0x80B45CC0] -data/npc/model/tex/squ_7.c: - .data: [0x80B45CC0, 0x80B46EE0] -data/npc/model/tex/squ_8.c: - .data: [0x80B46EE0, 0x80B48100] -data/npc/model/tex/squ_9.c: - .data: [0x80B48100, 0x80B49320] -data/npc/model/tex/squ_10.c: - .data: [0x80B49320, 0x80B4A540] -data/npc/model/mdl/mnk_1.c: - .data: [0x80B4A540, 0x80B4C7F8] -data/npc/model/tex/mnk_1.c: - .data: [0x80B4C800, 0x80B4DC20] -data/npc/model/mdl/rcs_1.c: - .data: [0x80C09AC0, 0x80C0BBA8] -data/npc/model/tex/rcs_1.c: - .data: [0x80C0BBC0, 0x80C0C960] -data/npc/model/mdl/tig_1.c: - .data: [0x80C2C9F8, 0x80C2EE88] -data/npc/model/tex/tig_1.c: - .data: [0x80C2EEA0, 0x80C2FC40] -data/npc/model/tex/tig_2.c: - .data: [0x80C2FC40, 0x80C309E0] -data/npc/model/tex/tig_3.c: - .data: [0x80C309E0, 0x80C31780] -data/npc/model/tex/tig_4.c: - .data: [0x80C31780, 0x80C32520] -data/npc/model/mdl/end_1.c: - .data: [0x80C45A08, 0x80C480A8] -data/npc/model/tex/end_1.c: - .data: [0x80C480C0, 0x80C493A0] -data/npc/model/mdl/tuk_1.c: - .data: [0x80C4B710, 0x80C4E080] -data/npc/model/tex/tuk_1.c: - .data: [0x80C4E080, 0x80C4EF20] -data/npc/model/mdl/wol_1.c: - .data: [0x80C4F588, 0x80C51650] -data/npc/model/tex/wol_1.c: - .data: [0x80C51660, 0x80C52280] -data/npc/model/tex/wol_2.c: - .data: [0x80C52280, 0x80C52EA0] -data/npc/model/tex/wol_3.c: - .data: [0x80C52EA0, 0x80C53AC0] -data/npc/model/tex/wol_4.c: - .data: [0x80C53AC0, 0x80C546E0] -data/npc/model/tex/wol_5.c: - .data: [0x80C546E0, 0x80C55300] -data/npc/model/tex/wol_6.c: - .data: [0x80C55300, 0x80C55F20] + .data: [0x806FA140, 0x806FB360] # dataobject.obj files @@ -1898,12 +1246,456 @@ data/field/bg/flower/obj_flower.c: .data: [0x8074FE80, 0x807508C0] data/field/bg/flower/obj_flower_leaf.c: .data: [0x807508C0, 0x80751140] +data/npc/model/mdl/pbr_1.c: + .data: [0x8076DFA8, 0x80770178] +data/npc/model/tex/pbr_1.c: + .data: [0x80770180, 0x80770EA0] +data/npc/model/tex/pbr_2.c: + .data: [0x80770EA0, 0x80771BC0] +data/npc/model/tex/pbr_3.c: + .data: [0x80771BC0, 0x807728E0] +data/npc/model/tex/pbr_4.c: + .data: [0x807728E0, 0x80773600] +data/npc/model/tex/pbr_5.c: + .data: [0x80773600, 0x80774320] +data/npc/model/mdl/brd_1.c: + .data: [0x80774320, 0x80776358] +data/npc/model/tex/brd_1.c: + .data: [0x80776360, 0x80777080] +data/npc/model/tex/brd_2.c: + .data: [0x80777080, 0x80777DA0] +data/npc/model/tex/brd_11.c: + .data: [0x80777DA0, 0x80778AC0] +data/npc/model/tex/brd_3.c: + .data: [0x80778AC0, 0x807797E0] +data/npc/model/tex/brd_4.c: + .data: [0x807797E0, 0x8077A500] +data/npc/model/tex/brd_5.c: + .data: [0x8077A500, 0x8077B220] +data/npc/model/tex/brd_6.c: + .data: [0x8077B220, 0x8077BF40] +data/npc/model/tex/brd_7.c: + .data: [0x8077BF40, 0x8077CC60] +data/npc/model/tex/brd_8.c: + .data: [0x8077CC60, 0x8077D980] +data/npc/model/tex/brd_9.c: + .data: [0x8077D980, 0x8077E6A0] +data/npc/model/tex/brd_10.c: + .data: [0x8077E6A0, 0x8077F3C0] +data/npc/model/mdl/fox_1.c: + .data: [0x807D5FE8, 0x807D8098] +data/npc/model/tex/fox_1.c: + .data: [0x807D80A0, 0x807D8FC0] +data/npc/model/mdl/bul_1.c: + .data: [0x807D8FC0, 0x807DAFB0] +data/npc/model/tex/bul_1.c: + .data: [0x807DAFC0, 0x807DC1E0] +data/npc/model/tex/bul_2.c: + .data: [0x807DC1E0, 0x807DD400] +data/npc/model/tex/bul_3.c: + .data: [0x807DD400, 0x807DE620] +data/npc/model/tex/bul_4.c: + .data: [0x807DE620, 0x807DF840] +data/npc/model/mdl/cml_1.c: + .data: [0x807DF840, 0x807E1EA8] +data/npc/model/tex/cml_1.c: + .data: [0x807E1EC0, 0x807E2E60] +data/npc/model/mdl/cat_1.c: + .data: [0x807E2E60, 0x807E4BB0] +data/npc/model/tex/cat_1.c: + .data: [0x807E4BC0, 0x807E5DE0] +data/npc/model/tex/cat_2.c: + .data: [0x807E5DE0, 0x807E7000] +data/npc/model/tex/cat_11.c: + .data: [0x807E7000, 0x807E8220] +data/npc/model/tex/cat_12.c: + .data: [0x807E8220, 0x807E9440] +data/npc/model/tex/cat_13.c: + .data: [0x807E9440, 0x807EA660] +data/npc/model/tex/cat_14.c: + .data: [0x807EA660, 0x807EB880] +data/npc/model/tex/cat_15.c: + .data: [0x807EB880, 0x807ECAA0] +data/npc/model/tex/cat_3.c: + .data: [0x807ECAA0, 0x807EDCC0] +data/npc/model/tex/cat_4.c: + .data: [0x807EDCC0, 0x807EEEE0] +data/npc/model/tex/cat_5.c: + .data: [0x807EEEE0, 0x807F0100] +data/npc/model/tex/cat_6.c: + .data: [0x807F0100, 0x807F1320] +data/npc/model/tex/cat_7.c: + .data: [0x807F1320, 0x807F2540] +data/npc/model/tex/cat_8.c: + .data: [0x807F2540, 0x807F3760] +data/npc/model/tex/cat_9.c: + .data: [0x807F3760, 0x807F4980] +data/npc/model/tex/cat_10.c: + .data: [0x807F4980, 0x807F5BA0] +data/npc/model/mdl/chn_1.c: + .data: [0x807F5BA0, 0x807F8348] +data/npc/model/tex/chn_1.c: + .data: [0x807F8360, 0x807F9040] +data/npc/model/tex/chn_2.c: + .data: [0x807F9040, 0x807F9D20] +data/npc/model/tex/chn_3.c: + .data: [0x807F9D20, 0x807FAA00] +data/npc/model/tex/chn_4.c: + .data: [0x807FAA00, 0x807FB6E0] +data/npc/model/tex/chn_5.c: + .data: [0x807FB6E0, 0x807FC3C0] +data/npc/model/tex/chn_6.c: + .data: [0x807FC3C0, 0x807FD0A0] +data/npc/model/tex/chn_7.c: + .data: [0x807FD0A0, 0x807FDD80] +data/npc/model/tex/chn_8.c: + .data: [0x807FDD80, 0x807FEA60] +data/npc/model/tex/chn_9.c: + .data: [0x807FEA60, 0x807FF740] +data/npc/model/mdl/cbr_1.c: + .data: [0x807FF740, 0x80801620] +data/npc/model/tex/cbr_1.c: + .data: [0x80801620, 0x80802840] +data/npc/model/tex/cbr_2.c: + .data: [0x80802840, 0x80803A60] +data/npc/model/tex/cbr_11.c: + .data: [0x80803A60, 0x80804C80] +data/npc/model/tex/cbr_3.c: + .data: [0x80804C80, 0x80805EA0] +data/npc/model/tex/cbr_4.c: + .data: [0x80805EA0, 0x808070C0] +data/npc/model/tex/cbr_5.c: + .data: [0x808070C0, 0x808082E0] +data/npc/model/tex/cbr_6.c: + .data: [0x808082E0, 0x80809500] +data/npc/model/tex/cbr_7.c: + .data: [0x80809500, 0x8080A720] +data/npc/model/tex/cbr_8.c: + .data: [0x8080A720, 0x8080B940] +data/npc/model/tex/cbr_9.c: + .data: [0x8080B940, 0x8080CB60] +data/npc/model/tex/cbr_10.c: + .data: [0x8080CB60, 0x8080DD80] data/combi/data_combi.c: .data: [0x8080DD80, 0x8080E628] +data/npc/model/mdl/rcc_1.c: + .data: [0x8080E628, 0x80810608] +data/npc/model/tex/rcc_1.c: + .data: [0x80810620, 0x80811500] +data/npc/model/mdl/cow_1.c: + .data: [0x80811500, 0x808134E0] +data/npc/model/tex/cow_1.c: + .data: [0x808134E0, 0x80814700] +data/npc/model/tex/cow_2.c: + .data: [0x80814700, 0x80815920] +data/npc/model/tex/cow_3.c: + .data: [0x80815920, 0x80816B40] +data/npc/model/tex/cow_4.c: + .data: [0x80816B40, 0x80817D60] +data/npc/model/mdl/crd_1.c: + .data: [0x80817D60, 0x80819EE8] +data/npc/model/tex/crd_1.c: + .data: [0x80819F00, 0x8081AC20] +data/npc/model/tex/crd_2.c: + .data: [0x8081AC20, 0x8081B940] +data/npc/model/tex/crd_3.c: + .data: [0x8081B940, 0x8081C660] +data/npc/model/tex/crd_4.c: + .data: [0x8081C660, 0x8081D380] +data/npc/model/mdl/owl_1.c: + .data: [0x8081D380, 0x8081F9A8] +data/npc/model/tex/owl_1.c: + .data: [0x8081F9C0, 0x80820820] +data/npc/model/mdl/rcd_1.c: + .data: [0x80820820, 0x80822720] +data/npc/model/tex/rcd_1.c: + .data: [0x80822720, 0x80823580] +data/npc/model/mdl/grf_1.c: + .data: [0x80823580, 0x80825B28] +data/npc/model/tex/grf_1.c: + .data: [0x80825B40, 0x80826A60] +data/npc/model/mdl/dog_1.c: + .data: [0x80826A60, 0x80828A40] +data/npc/model/tex/dog_1.c: + .data: [0x80828A40, 0x80829C60] +data/npc/model/tex/dog_2.c: + .data: [0x80829C60, 0x8082AE80] +data/npc/model/tex/dog_3.c: + .data: [0x8082AE80, 0x8082C0A0] +data/npc/model/tex/dog_4.c: + .data: [0x8082C0A0, 0x8082D2C0] +data/npc/model/tex/dog_5.c: + .data: [0x8082D2C0, 0x8082E4E0] +data/npc/model/tex/dog_6.c: + .data: [0x8082E4E0, 0x8082F700] +data/npc/model/tex/dog_7.c: + .data: [0x8082F700, 0x80830920] +data/npc/model/tex/dog_8.c: + .data: [0x80830920, 0x80831B40] +data/npc/model/tex/dog_9.c: + .data: [0x80831B40, 0x80832D60] +data/npc/model/tex/dog_10.c: + .data: [0x80832D60, 0x80833F80] +data/npc/model/mdl/seg_1.c: + .data: [0x80833F80, 0x808362E8] +data/npc/model/tex/seg_1.c: + .data: [0x80836300, 0x80837160] +data/npc/model/mdl/duk_1.c: + .data: [0x80837160, 0x80839070] +data/npc/model/tex/duk_1.c: + .data: [0x80839080, 0x8083A2A0] +data/npc/model/tex/duk_2.c: + .data: [0x8083A2A0, 0x8083B4C0] +data/npc/model/tex/duk_11.c: + .data: [0x8083B4C0, 0x8083C6E0] +data/npc/model/tex/duk_3.c: + .data: [0x8083C6E0, 0x8083D900] +data/npc/model/tex/duk_4.c: + .data: [0x8083D900, 0x8083EB20] +data/npc/model/tex/duk_5.c: + .data: [0x8083EB20, 0x8083FD40] +data/npc/model/tex/duk_6.c: + .data: [0x8083FD40, 0x80840F60] +data/npc/model/tex/duk_7.c: + .data: [0x80840F60, 0x80842180] +data/npc/model/tex/duk_8.c: + .data: [0x80842180, 0x808433A0] +data/npc/model/tex/duk_9.c: + .data: [0x808433A0, 0x808445C0] +data/npc/model/tex/duk_10.c: + .data: [0x808445C0, 0x808457E0] +data/npc/model/mdl/elp_1.c: + .data: [0x80845830, 0x808479A0] +data/npc/model/tex/elp_1.c: + .data: [0x808479A0, 0x80848BC0] +data/npc/model/tex/elp_2.c: + .data: [0x80848BC0, 0x80849DE0] +data/npc/model/tex/elp_3.c: + .data: [0x80849DE0, 0x8084B000] +data/npc/model/tex/elp_4.c: + .data: [0x8084B000, 0x8084C220] +data/npc/model/tex/elp_5.c: + .data: [0x8084C220, 0x8084D440] +data/npc/model/tex/elp_6.c: + .data: [0x8084D440, 0x8084E660] +data/npc/model/tex/elp_7.c: + .data: [0x8084E660, 0x8084F880] +data/npc/model/mdl/flg_1.c: + .data: [0x80857D80, 0x808597E0] +data/npc/model/tex/flg_1.c: + .data: [0x808597E0, 0x8085AA00] +data/npc/model/tex/flg_2.c: + .data: [0x8085AA00, 0x8085BC20] +data/npc/model/tex/flg_11.c: + .data: [0x8085BC20, 0x8085CE40] +data/npc/model/tex/flg_12.c: + .data: [0x8085CE40, 0x8085DFE0] +data/npc/model/tex/flg_13.c: + .data: [0x8085DFE0, 0x8085F200] +data/npc/model/tex/flg_3.c: + .data: [0x8085F200, 0x80860420] +data/npc/model/tex/flg_4.c: + .data: [0x80860420, 0x80861640] +data/npc/model/tex/flg_5.c: + .data: [0x80861640, 0x80862860] +data/npc/model/tex/flg_6.c: + .data: [0x80862860, 0x80863A80] +data/npc/model/tex/flg_7.c: + .data: [0x80863A80, 0x80864CA0] +data/npc/model/tex/flg_8.c: + .data: [0x80864CA0, 0x80865EC0] +data/npc/model/tex/flg_9.c: + .data: [0x80865EC0, 0x808670E0] +data/npc/model/tex/flg_10.c: + .data: [0x808670E0, 0x80868300] +data/npc/model/mdl/rcf_1.c: + .data: [0x80868300, 0x8086A9A0] +data/npc/model/tex/rcf_1.c: + .data: [0x8086A9A0, 0x8086B8C0] +data/npc/model/mdl/gst_1.c: + .data: [0x8086CB08, 0x8086E180] +data/npc/model/tex/gst_1.c: + .data: [0x8086E180, 0x8086F120] +data/npc/model/mdl/goa_1.c: + .data: [0x80871730, 0x808736E8] +data/npc/model/tex/goa_1.c: + .data: [0x80873700, 0x80874920] +data/npc/model/tex/goa_2.c: + .data: [0x80874920, 0x80875B40] +data/npc/model/tex/goa_3.c: + .data: [0x80875B40, 0x80876D60] +data/npc/model/tex/goa_4.c: + .data: [0x80876D60, 0x80877F80] +data/npc/model/tex/goa_5.c: + .data: [0x80877F80, 0x808791A0] +data/npc/model/tex/goa_6.c: + .data: [0x808791A0, 0x8087A3C0] +data/npc/model/mdl/gor_1.c: + .data: [0x8087A3C0, 0x8087C948] +data/npc/model/tex/gor_1.c: + .data: [0x8087C960, 0x8087DB80] +data/npc/model/tex/gor_2.c: + .data: [0x8087DB80, 0x8087EDA0] +data/npc/model/tex/gor_3.c: + .data: [0x8087EDA0, 0x8087FFC0] +data/npc/model/tex/gor_4.c: + .data: [0x8087FFC0, 0x808811E0] +data/npc/model/tex/gor_5.c: + .data: [0x808811E0, 0x80882400] +data/npc/model/mdl/xct_1.c: + .data: [0x80882400, 0x80884068] +data/npc/model/tex/xct_1.c: + .data: [0x80884080, 0x80885420] +data/npc/model/mdl/bpt_1.c: + .data: [0x80894928, 0x80896A80] +data/npc/model/tex/bpt_1.c: + .data: [0x80896A80, 0x808979A0] +data/npc/model/mdl/pkn_1.c: + .data: [0x808979A0, 0x808993C8] +data/npc/model/tex/pkn_1.c: + .data: [0x808993E0, 0x80899A80] +data/npc/model/mdl/hem_1.c: + .data: [0x8089BA80, 0x8089D6E0] +data/npc/model/tex/hem_1.c: + .data: [0x8089D6E0, 0x8089DE40] +data/npc/model/mdl/hip_1.c: + .data: [0x8089DE40, 0x808A0558] +data/npc/model/tex/hip_1.c: + .data: [0x808A0560, 0x808A1280] +data/npc/model/tex/hip_2.c: + .data: [0x808A1280, 0x808A1FA0] +data/npc/model/tex/hip_3.c: + .data: [0x808A1FA0, 0x808A2CC0] +data/npc/model/tex/hip_4.c: + .data: [0x808A2CC0, 0x808A39E0] +data/npc/model/tex/hip_5.c: + .data: [0x808A39E0, 0x808A4700] +data/npc/model/tex/hip_6.c: + .data: [0x808A4700, 0x808A5420] +data/npc/model/tex/hip_7.c: + .data: [0x808A5420, 0x808A6140] +data/npc/model/mdl/hrs_1.c: + .data: [0x808A6140, 0x808A8508] +data/npc/model/tex/hrs_1.c: + .data: [0x808A8520, 0x808A92C0] +data/npc/model/tex/hrs_2.c: + .data: [0x808A92C0, 0x808AA060] +data/npc/model/tex/hrs_3.c: + .data: [0x808AA060, 0x808AAE00] +data/npc/model/tex/hrs_4.c: + .data: [0x808AAE00, 0x808ABBA0] +data/npc/model/tex/hrs_5.c: + .data: [0x808ABBA0, 0x808AC940] +data/npc/model/tex/hrs_6.c: + .data: [0x808AC940, 0x808AD6E0] +data/npc/model/tex/hrs_7.c: + .data: [0x808AD6E0, 0x808AE480] +data/npc/model/tex/hrs_8.c: + .data: [0x808AE480, 0x808AF220] +data/npc/model/mdl/plj_1.c: + .data: [0x808B8D00, 0x808BAD00] +data/npc/model/tex/plj_1.c: + .data: [0x808BAD00, 0x808BC1A0] +data/npc/model/mdl/xsq_1.c: + .data: [0x808BC1A0, 0x808BE240] +data/npc/model/tex/xsq_1.c: + .data: [0x808BE240, 0x808BF660] data/item/item_name.c: .data: [0x808BF660, 0x808C8830] +data/npc/model/mdl/boa_1.c: + .data: [0x808C88A8, 0x808CAF48] +data/npc/model/tex/boa_1.c: + .data: [0x808CAF60, 0x808CBD40] +data/npc/model/mdl/kgr_1.c: + .data: [0x808CBD40, 0x808CE3C8] +data/npc/model/tex/kgr_1.c: + .data: [0x808CE3E0, 0x808CF040] +data/npc/model/tex/kgr_2.c: + .data: [0x808CF040, 0x808CFCA0] +data/npc/model/tex/kgr_3.c: + .data: [0x808CFCA0, 0x808D0900] +data/npc/model/tex/kgr_4.c: + .data: [0x808D0900, 0x808D1560] +data/npc/model/tex/kgr_5.c: + .data: [0x808D1560, 0x808D21C0] +data/npc/model/tex/kgr_6.c: + .data: [0x808D21C0, 0x808D2E20] +data/npc/model/mdl/fob_1.c: + .data: [0x808D2E20, 0x808D5360] +data/npc/model/tex/fob_1.c: + .data: [0x808D5360, 0x808D62C0] +data/npc/model/mdl/kal_1.c: + .data: [0x808D62C0, 0x808D81D8] +data/npc/model/tex/kal_1.c: + .data: [0x808D81E0, 0x808D9480] +data/npc/model/tex/kal_2.c: + .data: [0x808D9480, 0x808DA720] +data/npc/model/tex/kal_3.c: + .data: [0x808DA720, 0x808DB9C0] +data/npc/model/tex/kal_4.c: + .data: [0x808DB9C0, 0x808DCC60] +data/npc/model/tex/kal_5.c: + .data: [0x808DCC60, 0x808DDF00] +data/npc/model/tex/kal_6.c: + .data: [0x808DDF00, 0x808DF1A0] +data/npc/model/mdl/lon_1.c: + .data: [0x808E1A10, 0x808E3F78] +data/npc/model/tex/lon_1.c: + .data: [0x808E3F80, 0x808E5260] +data/npc/model/tex/lon_2.c: + .data: [0x808E5260, 0x808E6540] +data/npc/model/tex/lon_3.c: + .data: [0x808E6540, 0x808E7820] +data/npc/model/tex/lon_4.c: + .data: [0x808E7820, 0x808E8B00] +data/npc/model/mdl/mos_1.c: + .data: [0x808EAEA0, 0x808ECAC8] +data/npc/model/tex/mos_1.c: + .data: [0x808ECAE0, 0x808EDF80] +data/npc/model/mdl/mol_1.c: + .data: [0x808EDF80, 0x808EFBA8] +data/npc/model/tex/mol_1.c: + .data: [0x808EFBC0, 0x808F1060] +data/npc/model/mdl/lrc_1.c: + .data: [0x808F1060, 0x808F2F50] +data/npc/model/tex/lrc_1.c: + .data: [0x808F2F60, 0x808F3E00] +data/npc/model/mdl/mka_1.c: + .data: [0x808F3E00, 0x808F5BA8] +data/npc/model/tex/mka_1.c: + .data: [0x808F5BC0, 0x808F6060] +data/npc/model/mdl/mus_1.c: + .data: [0x808F6EA8, 0x808F90B0] +data/npc/model/tex/mus_1.c: + .data: [0x808F90C0, 0x808FA2E0] +data/npc/model/tex/mus_2.c: + .data: [0x808FA2E0, 0x808FB500] +data/npc/model/tex/mus_3.c: + .data: [0x808FB500, 0x808FC720] +data/npc/model/tex/mus_4.c: + .data: [0x808FC720, 0x808FD940] +data/npc/model/tex/mus_5.c: + .data: [0x808FD940, 0x808FEB60] +data/npc/model/tex/mus_6.c: + .data: [0x808FEB60, 0x808FFD80] +data/npc/model/tex/mus_7.c: + .data: [0x808FFD80, 0x80900FA0] +data/npc/model/tex/mus_8.c: + .data: [0x80900FA0, 0x809021C0] +data/npc/model/tex/mus_9.c: + .data: [0x809021C0, 0x809033E0] +data/npc/model/tex/mus_10.c: + .data: [0x809033E0, 0x80904600] data/model/mural/obj_mural.c: .data: [0x80904600, 0x80904700] +data/npc/model/mdl/hgh_1.c: + .data: [0x80911E70, 0x80914610] +data/npc/model/tex/hgh_1.c: + .data: [0x80914620, 0x80915500] +data/npc/model/mdl/hgs_1.c: + .data: [0x80915500, 0x80917C80] +data/npc/model/tex/hgs_1.c: + .data: [0x80917C80, 0x80918B60] data/npc/default_list.c: .data: [0x8096CD90, 0x8096D328] data/npc/npc_draw_data.c: @@ -1912,6 +1704,196 @@ data/npc/grow_list.c: .data: [0x80977450, 0x80977540] data/npc/house_list.c: .data: [0x80977540, 0x80977CB0] +data/npc/model/mdl/oct_1.c: + .data: [0x80977CB0, 0x8097A460] +data/npc/model/tex/oct_1.c: + .data: [0x8097A460, 0x8097AE80] +data/npc/model/mdl/ost_1.c: + .data: [0x8097AE80, 0x8097D100] +data/npc/model/tex/ost_1.c: + .data: [0x8097D100, 0x8097DE60] +data/npc/model/tex/ost_2.c: + .data: [0x8097DE60, 0x8097EBC0] +data/npc/model/tex/ost_3.c: + .data: [0x8097EBC0, 0x8097F920] +data/npc/model/tex/ost_4.c: + .data: [0x8097F920, 0x80980680] +data/npc/model/mdl/pgn_1.c: + .data: [0x80980F28, 0x80983140] +data/npc/model/tex/pgn_1.c: + .data: [0x80983140, 0x80983EE0] +data/npc/model/tex/pgn_2.c: + .data: [0x80983EE0, 0x80984C80] +data/npc/model/tex/pgn_3.c: + .data: [0x80984C80, 0x80985A20] +data/npc/model/tex/pgn_4.c: + .data: [0x80985A20, 0x809867C0] +data/npc/model/tex/pgn_5.c: + .data: [0x809867C0, 0x80987560] +data/npc/model/tex/pgn_6.c: + .data: [0x80987560, 0x80988300] +data/npc/model/tex/pgn_7.c: + .data: [0x80988300, 0x809890A0] +data/npc/model/tex/pgn_8.c: + .data: [0x809890A0, 0x80989E40] +data/npc/model/mdl/pig_1.c: + .data: [0x80989E40, 0x8098BAC0] +data/npc/model/tex/pig_1.c: + .data: [0x8098BAC0, 0x8098CC60] +data/npc/model/tex/pig_2.c: + .data: [0x8098CC60, 0x8098DE00] +data/npc/model/tex/pig_11.c: + .data: [0x8098DE00, 0x8098EFA0] +data/npc/model/tex/pig_3.c: + .data: [0x8098EFA0, 0x80990140] +data/npc/model/tex/pig_4.c: + .data: [0x80990140, 0x809912E0] +data/npc/model/tex/pig_5.c: + .data: [0x809912E0, 0x80992480] +data/npc/model/tex/pig_6.c: + .data: [0x80992480, 0x80993620] +data/npc/model/tex/pig_7.c: + .data: [0x80993620, 0x809947C0] +data/npc/model/tex/pig_8.c: + .data: [0x809947C0, 0x80995960] +data/npc/model/tex/pig_9.c: + .data: [0x80995960, 0x80996B00] +data/npc/model/tex/pig_10.c: + .data: [0x80996B00, 0x80997CA0] +data/npc/model/mdl/pla_1.c: + .data: [0x80997CA0, 0x8099A318] +data/npc/model/mdl/plc_1.c: + .data: [0x8099A318, 0x8099C410] +data/npc/model/tex/plc_1.c: + .data: [0x8099C420, 0x8099D900] +data/npc/model/tex/pla_1.c: + .data: [0x8099D900, 0x8099ECA0] +data/npc/model/mdl/pga_1.c: + .data: [0x8099ECA0, 0x809A11A0] +data/npc/model/tex/pga_1.c: + .data: [0x809A11A0, 0x809A2000] +data/npc/model/mdl/pgb_1.c: + .data: [0x809A2000, 0x809A4450] +data/npc/model/tex/pgb_1.c: + .data: [0x809A4460, 0x809A5400] +data/npc/model/mdl/plb_1.c: + .data: [0x809A5400, 0x809A7980] +data/npc/model/tex/plb_1.c: + .data: [0x809A7980, 0x809A8920] +data/npc/model/mdl/rbt_1.c: + .data: [0x809A8920, 0x809AA7B8] +data/npc/model/tex/rbt_1.c: + .data: [0x809AA7C0, 0x809AB9E0] +data/npc/model/tex/rbt_2.c: + .data: [0x809AB9E0, 0x809ACC00] +data/npc/model/tex/rbt_11.c: + .data: [0x809ACC00, 0x809ADE20] +data/npc/model/tex/rbt_3.c: + .data: [0x809ADE20, 0x809AF040] +data/npc/model/tex/rbt_4.c: + .data: [0x809AF040, 0x809B0260] +data/npc/model/tex/rbt_5.c: + .data: [0x809B0260, 0x809B1480] +data/npc/model/tex/rbt_6.c: + .data: [0x809B1480, 0x809B26A0] +data/npc/model/tex/rbt_7.c: + .data: [0x809B26A0, 0x809B38C0] +data/npc/model/tex/rbt_8.c: + .data: [0x809B38C0, 0x809B4AE0] +data/npc/model/tex/rbt_9.c: + .data: [0x809B4AE0, 0x809B5D00] +data/npc/model/tex/rbt_10.c: + .data: [0x809B5D00, 0x809B6F20] +data/npc/model/mdl/mob_1.c: + .data: [0x809B6F20, 0x809B8AA0] +data/npc/model/tex/mob_1.c: + .data: [0x809B8AA0, 0x809B9F40] +data/npc/model/mdl/rhn_1.c: + .data: [0x809BA340, 0x809BCAF0] +data/npc/model/tex/rhn_1.c: + .data: [0x809BCB00, 0x809BDD20] +data/npc/model/tex/rhn_2.c: + .data: [0x809BDD20, 0x809BEF40] +data/npc/model/tex/rhn_3.c: + .data: [0x809BEF40, 0x809C0160] +data/npc/model/tex/rhn_4.c: + .data: [0x809C0160, 0x809C1380] +data/npc/model/mdl/snt_1.c: + .data: [0x809C9148, 0x809CAD30] +data/npc/model/tex/snt_1.c: + .data: [0x809CAD40, 0x809CC1E0] +data/npc/model/mdl/wip_1.c: + .data: [0x809CC1E0, 0x809CE170] +data/npc/model/tex/wip_1.c: + .data: [0x809CE180, 0x809CF560] +data/npc/model/mdl/shp_1.c: + .data: [0x809CF560, 0x809D11A0] +data/npc/model/tex/shp_1.c: + .data: [0x809D11A0, 0x809D23C0] +data/npc/model/tex/shp_2.c: + .data: [0x809D23C0, 0x809D35E0] +data/npc/model/tex/shp_3.c: + .data: [0x809D35E0, 0x809D4800] +data/npc/model/tex/shp_4.c: + .data: [0x809D4800, 0x809D5A20] +data/npc/model/tex/shp_5.c: + .data: [0x809D5A20, 0x809D6C40] +data/npc/model/tex/shp_6.c: + .data: [0x809D6C40, 0x809D7E60] +data/npc/model/mdl/rcn_1.c: + .data: [0x809D7E60, 0x809D9E80] +data/npc/model/tex/rcn_1.c: + .data: [0x809D9E80, 0x809DACE0] +data/npc/model/mdl/kab_1.c: + .data: [0x80A001B0, 0x80A02398] +data/npc/model/tex/kab_1.c: + .data: [0x80A023A0, 0x80A02FC0] +data/npc/model/mdl/ttl_1.c: + .data: [0x80B38FC0, 0x80B3ADD8] +data/npc/model/tex/ttl_1.c: + .data: [0x80B3ADE0, 0x80B3BD40] +data/npc/model/mdl/squ_1.c: + .data: [0x80B3BD40, 0x80B3DDE0] +data/npc/model/tex/squ_1.c: + .data: [0x80B3DDE0, 0x80B3F000] +data/npc/model/tex/squ_2.c: + .data: [0x80B3F000, 0x80B40220] +data/npc/model/tex/squ_11.c: + .data: [0x80B40220, 0x80B41440] +data/npc/model/tex/squ_3.c: + .data: [0x80B41440, 0x80B42660] +data/npc/model/tex/squ_4.c: + .data: [0x80B42660, 0x80B43880] +data/npc/model/tex/squ_5.c: + .data: [0x80B43880, 0x80B44AA0] +data/npc/model/tex/squ_6.c: + .data: [0x80B44AA0, 0x80B45CC0] +data/npc/model/tex/squ_7.c: + .data: [0x80B45CC0, 0x80B46EE0] +data/npc/model/tex/squ_8.c: + .data: [0x80B46EE0, 0x80B48100] +data/npc/model/tex/squ_9.c: + .data: [0x80B48100, 0x80B49320] +data/npc/model/tex/squ_10.c: + .data: [0x80B49320, 0x80B4A540] +data/npc/model/mdl/mnk_1.c: + .data: [0x80B4A540, 0x80B4C7F8] +data/npc/model/tex/mnk_1.c: + .data: [0x80B4C800, 0x80B4DC20] +data/npc/model/mdl/rcs_1.c: + .data: [0x80C09AC0, 0x80C0BBA8] +data/npc/model/tex/rcs_1.c: + .data: [0x80C0BBC0, 0x80C0C960] +data/npc/model/mdl/tig_1.c: + .data: [0x80C2C9F8, 0x80C2EE88] +data/npc/model/tex/tig_1.c: + .data: [0x80C2EEA0, 0x80C2FC40] +data/npc/model/tex/tig_2.c: + .data: [0x80C2FC40, 0x80C309E0] +data/npc/model/tex/tig_3.c: + .data: [0x80C309E0, 0x80C31780] +data/npc/model/tex/tig_4.c: + .data: [0x80C31780, 0x80C32520] data/titledemo/pact0.c: .data: [0x80C411D8, 0x80C42038] data/titledemo/pact1.c: @@ -1922,6 +1904,28 @@ data/titledemo/pact3.c: .data: [0x80C43D18, 0x80C44B98] data/titledemo/pact4.c: .data: [0x80C44B98, 0x80C45A08] +data/npc/model/mdl/end_1.c: + .data: [0x80C45A08, 0x80C480A8] +data/npc/model/tex/end_1.c: + .data: [0x80C480C0, 0x80C493A0] +data/npc/model/mdl/tuk_1.c: + .data: [0x80C4B710, 0x80C4E080] +data/npc/model/tex/tuk_1.c: + .data: [0x80C4E080, 0x80C4EF20] +data/npc/model/mdl/wol_1.c: + .data: [0x80C4F588, 0x80C51650] +data/npc/model/tex/wol_1.c: + .data: [0x80C51660, 0x80C52280] +data/npc/model/tex/wol_2.c: + .data: [0x80C52280, 0x80C52EA0] +data/npc/model/tex/wol_3.c: + .data: [0x80C52EA0, 0x80C53AC0] +data/npc/model/tex/wol_4.c: + .data: [0x80C53AC0, 0x80C546E0] +data/npc/model/tex/wol_5.c: + .data: [0x80C546E0, 0x80C55300] +data/npc/model/tex/wol_6.c: + .data: [0x80C55300, 0x80C55F20] data/field/bg/beach_pal.c: .data: [0x80C59CA8, 0x80C59E28] data/field/bg/bush_pal.c: diff --git a/src/ef_hanabi_dummy.c b/src/ef_hanabi_dummy.c index aefed319..37cd70fe 100644 --- a/src/ef_hanabi_dummy.c +++ b/src/ef_hanabi_dummy.c @@ -1,5 +1,7 @@ #include "ef_effect_control.h" +#include "m_common_data.h" + static void eHanabiDummy_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1); static void eHanabiDummy_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg); static void eHanabiDummy_mv(eEC_Effect_c* effect, GAME* game); @@ -18,17 +20,67 @@ eEC_PROFILE_c iam_ef_hanabi_dummy = { }; static void eHanabiDummy_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1) { - // TODO + (*eEC_CLIP->make_effect_proc)(eEC_EFFECT_HANABI_DUMMY, pos, NULL, game, NULL, item_name, prio, arg0, arg1); } static void eHanabiDummy_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg) { - // TODO + effect->timer = 0x50; + effect->effect_specific[0] = RANDOM(6); } static void eHanabiDummy_mv(eEC_Effect_c* effect, GAME* game) { - // TODO + rgba_t light_color; + s16 frames_passed = 80 - effect->timer; + + if (frames_passed == 10) { + static rgba_t dummy_light[] = { + { 50, 30, 20, 255 }, + { 20, 60, 20, 255 }, + { 40, 10, 60, 255 }, + { 40, 20, 20, 255 }, + { 20, 40, 20, 255 }, + { 60, 60, 30, 255 }, + }; + + eEC_CLIP->decide_light_power_proc(&light_color, dummy_light[effect->effect_specific[0]], effect->position, game, 2.0f, 0.0f, 480.0f); + if (effect->arg0 != 0) { + light_color.r = light_color.r * 2.0f; + light_color.g = light_color.g * 2.0f; + light_color.b = light_color.b * 2.0f; + } + + eEC_CLIP->regist_effect_light(light_color, 20, 50, TRUE); + } + if (frames_passed == 72) { + xyz_t pos = effect->position; + u16 sfx_no; + + pos.y += 200.0f; + + switch (effect->effect_specific[0]) { + case 0: + case 1: + sfx_no = 0x210F; + break; + case 2: + sfx_no = 0x2110; + break; + case 3: + case 4: + sfx_no = 0x2111; + break; + case 5: + sfx_no = 0x2112; + break; + default: + sfx_no = 0x210F; + break; + } + + sAdo_OngenTrgStart(sfx_no, &pos); + } } static void eHanabiDummy_dw(eEC_Effect_c* effect, GAME* game) { - // TODO -} + // empty +} \ No newline at end of file From e8ffa5eac8a034845741e18a51e83e355498a521 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Mon, 5 Aug 2024 07:14:18 -0400 Subject: [PATCH 097/234] Implement & link ef_break_axe, ef_hanabi_dummy improvements --- config/rel_slices.yml | 4 + include/audio_defs.h | 9 ++- src/ef_break_axe.c | 176 +++++++++++++++++++++++++++++++++++++++++- src/ef_hanabi_dummy.c | 80 +++++++++++-------- 4 files changed, 231 insertions(+), 38 deletions(-) diff --git a/config/rel_slices.yml b/config/rel_slices.yml index e87f554a..2cd5a06e 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -1083,6 +1083,10 @@ ef_ase_ch.c: .text: [0x806052A8, 0x806054F0] .rodata: [0x8064BCA8, 0x8064BCC0] .data: [0x806D1EC8, 0x806D1F08] +ef_break_axe.c: + .text: [0x806054F0, 0x8060672C] + .rodata: [0x8064BCC0, 0x8064BD60] + .data: [0x806D1F08, 0x806D1F20] ef_bubu.c: .text: [0x8060672C, 0x80606878] .rodata: [0x8064BD60, 0x8064BD68] diff --git a/include/audio_defs.h b/include/audio_defs.h index 6bb37d99..26ff6e9e 100644 --- a/include/audio_defs.h +++ b/include/audio_defs.h @@ -12,8 +12,9 @@ extern "C" { #define VOICE_MODE_SILENT 2 /* audio is monophonic */ -#define MONO(id) (id | 0x1000) -#define SE_FLAG_15(id) (id | 0x8000) +#define MONO(id) ((id) | 0x1000) +#define HANABI(id) ((id) | 0x2000) /* TODO: better name, this probably is some echo effect modifier */ +#define SE_FLAG_15(id) ((id) | 0x8000) // TODO: Make the rest of Sound Effects with parameters #define SE_REGISTER MONO(0x50) @@ -83,6 +84,10 @@ typedef enum audio_sound_effects { NA_SE_ROD_STROKE = 0x109, NA_SE_ROD_BACK, + NA_SE_HANABI0 = HANABI(0x10F), + NA_SE_HANABI1 = HANABI(0x110), + NA_SE_HANABI2 = HANABI(0x111), + NA_SE_HANABI3 = HANABI(0x112), NA_SE_EAT = 0x113, NA_SE_WEAR = 0x11C, diff --git a/src/ef_break_axe.c b/src/ef_break_axe.c index d0c8233d..c24bc726 100644 --- a/src/ef_break_axe.c +++ b/src/ef_break_axe.c @@ -1,5 +1,10 @@ #include "ef_effect_control.h" +#include "m_common_data.h" +#include "m_debug.h" +#include "m_rcp.h" +#include "sys_matrix.h" + static void eBreak_Axe_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1); static void eBreak_Axe_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg); static void eBreak_Axe_mv(eEC_Effect_c* effect, GAME* game); @@ -18,17 +23,180 @@ eEC_PROFILE_c iam_ef_break_axe = { }; static void eBreak_Axe_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1) { - // TODO + eEC_CLIP->make_effect_proc(eEC_EFFECT_BREAK_AXE, pos, NULL, game, &angle, item_name, prio, arg0, arg1); } static void eBreak_Axe_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg) { - // TODO + s16 angle = *(s16*)ct_arg + DEG2SHORT_ANGLE2(180.0f); + f32 speed_xz; + f32 speed_y; + f32 tz; + f32 ty; + f32 tx; + s16 add_angle; + + effect->timer = RANDOM(10) * 2 + (35 + GETREG(TAKREG, 60)) * 2; + effect->effect_specific[5] = effect->timer; + + if (effect->arg0 > 1) { + effect->scale.x = effect->scale.y = effect->scale.z = (1.0f + fqrand()) * 0.01f; + } else { + effect->scale.x = effect->scale.y = effect->scale.z = 0.01f; + } + + effect->offset.x = effect->position.y; + effect->offset.y = mCoBG_GetBgY_AngleS_FromWpos(NULL, effect->position, 0.0f); + if (effect->arg0 == 0) { + angle += (int)((40.0f + GETREG(TAKREG, 56) + RANDOM_F(20.0f + GETREG(TAKREG, 57))) * 182.04445f); + effect->offset.y += 10.0f; + } else if (effect->arg0 == 1) { + angle += (int)((20.0f + GETREG(TAKREG, 58) + RANDOM_F(20.0f + GETREG(TAKREG, 59))) * 182.04445f); + effect->offset.y += 15.0f; + } else { + angle += RANDOM_F(14563.0f); + effect->offset.y += 3.0f; + } + + effect->effect_specific[4] = *(s16*)ct_arg; + if (effect->arg0 == 0) { + tx = -17.0f + GETREG(TAKREG, 32); + ty = 34.0f + GETREG(TAKREG, 33); + tz = 20.0f + GETREG(TAKREG, 34); + + effect->position.x += tz * sin_s(effect->effect_specific[4]) + tx * cos_s(effect->effect_specific[4]); + effect->position.y += ty; + effect->position.z += tz * cos_s(effect->effect_specific[4]) - tx * sin_s(effect->effect_specific[4]); + + effect->effect_specific[0] = (-20.0f + GETREG(TAKREG, 35)) * 182.04445f; + add_angle = (int)((-77.0f + GETREG(TAKREG, 36)) * 182.04445f); + effect->effect_specific[4] += add_angle; + effect->effect_specific[2] = (0.0f + GETREG(TAKREG, 37)) * 182.04445f; + effect->effect_specific[1] = qrand() & 0xFFF; + effect->effect_specific[3] = qrand() & 0xFFF; + + speed_xz = (0.5f + GETREG(TAKREG, 48) * 0.1f) * 0.5f + RANDOM_F((1.5f + GETREG(TAKREG, 49) * 0.1f) * 0.5f); + speed_y = (8.0f + GETREG(TAKREG, 50) * 0.1f) * 0.5f + RANDOM_F((2.0f + GETREG(TAKREG, 51) * 0.1f) * 0.5f); + } else if (effect->arg0 == 1) { + tz = -4.0f + GETREG(TAKREG, 38); + ty = 27.0f + GETREG(TAKREG, 39); + tx = 17.0f + GETREG(TAKREG, 40); + + effect->position.x += tx * sin_s(effect->effect_specific[4]) + tz * cos_s(effect->effect_specific[4]); + effect->position.y += ty; + effect->position.z += tx * cos_s(effect->effect_specific[4]) - tz * sin_s(effect->effect_specific[4]); + + effect->effect_specific[0] = (-20.0f + GETREG(TAKREG, 41)) * 182.04445f; + add_angle = (int)((-77.0f + GETREG(TAKREG, 42)) * 182.04445f); + effect->effect_specific[4] += add_angle; + effect->effect_specific[2] = (0.0f + GETREG(TAKREG, 43)) * 182.04445f; + effect->effect_specific[1] = qrand() & 0xFFF; + effect->effect_specific[3] = qrand() & 0xFFF; + + speed_xz = (1.5f + GETREG(TAKREG, 52) * 0.1f) * 0.5f + RANDOM_F((1.0f + GETREG(TAKREG, 53) * 0.1f) * 0.5f); + speed_y = (7.5f + GETREG(TAKREG, 54) * 0.1f) * 0.5f + RANDOM_F((3.0f + GETREG(TAKREG, 55) * 0.1f) * 0.5f); + } else { + effect->position.x += RANDOM2_F(10.0f); + effect->position.y += RANDOM2_F(10.0f); + effect->position.z += RANDOM2_F(10.0f); + + effect->effect_specific[0] = qrand(); + effect->effect_specific[2] = qrand(); + effect->effect_specific[1] = qrand() & 0x1FFF; + effect->effect_specific[3] = qrand() & 0x1FFF; + + speed_xz = (2.0f + GETREG(TAKREG, 44) * 0.1f) * 0.5f + RANDOM_F((3.5f + GETREG(TAKREG, 45) * 0.1f) * 0.5f); + speed_y = (8.0f + GETREG(TAKREG, 46) * 0.1f) * 0.5f + RANDOM_F((5.0f + GETREG(TAKREG, 47) * 0.1f) * 0.5f); + } + + effect->velocity.x = speed_xz * sin_s(angle); + effect->velocity.z = speed_xz * cos_s(angle); + effect->velocity.y = speed_y; + effect->acceleration.y = -0.25f; } static void eBreak_Axe_mv(eEC_Effect_c* effect, GAME* game) { - // TODO + u32 ut_attr = mCoBG_Wpos2Attribute(effect->position, NULL); + + effect->offset.x = effect->position.y; + effect->offset.z = effect->offset.y; + effect->offset.y = mCoBG_GetBgY_AngleS_FromWpos(NULL, effect->position, 0.0f); + + if (effect->arg0 == 0) { + effect->offset.y += 10.0f; + } else if (effect->arg0 == 1) { + effect->offset.y += 15.0f; + } + + xyz_t_add(&effect->velocity, &effect->acceleration, &effect->velocity); + xyz_t_add(&effect->position, &effect->velocity, &effect->position); + + effect->effect_specific[0] += effect->effect_specific[1]; + effect->effect_specific[2] += effect->effect_specific[3]; + + if (effect->timer <= ((35 + GETREG(TAKREG, 60)) * 2 - 5)) { + if (effect->position.y < effect->offset.y && mCoBG_CheckWaterAttribute(ut_attr)) { + xyz_t_mult_v(&effect->velocity, 0.8f); + add_calc_short_angle2(&effect->effect_specific[1], 0, 1.0f - sqrtf(0.9f), 182, 9); + add_calc_short_angle2(&effect->effect_specific[3], 0, 1.0f - sqrtf(0.9f), 182, 9); + } + + if (effect->position.y < effect->offset.y && effect->offset.x >= effect->offset.y && + effect->velocity.y < 0.0f) { + if (mCoBG_CheckWaterAttribute(ut_attr)) { + if (effect->arg0 < 2) { + eEC_CLIP->effect_make_proc(eEC_EFFECT_AMI_MIZU, effect->position, effect->prio, 0, game, + effect->item_name, 0, 0); + eEC_CLIP->effect_make_proc(eEC_EFFECT_TURI_HAMON, effect->position, effect->prio, 0, game, + effect->item_name, 0, 0); + } + } else { + effect->position.y = effect->offset.y; + effect->velocity.x *= 0.6f; + effect->velocity.y *= -0.6f; + effect->velocity.z *= 0.6f; + + effect->effect_specific[1] >>= 1; + effect->effect_specific[3] >>= 1; + } + } + + if (effect->position.y < effect->offset.y && effect->position.y >= effect->offset.z) { + effect->position.x -= effect->velocity.x; + effect->position.y -= effect->velocity.y; + effect->position.z -= effect->velocity.z; + + effect->velocity.x *= -0.6f; + effect->velocity.z *= -0.6f; + } + } } +extern Gfx ef_axe1_model[]; +extern Gfx ef_axe2_model[]; +extern Gfx ef_axe3_model[]; + static void eBreak_Axe_dw(eEC_Effect_c* effect, GAME* game) { - // TODO + u8 a = (int)eEC_CLIP->calc_adjust_proc(effect->timer, 0, (15 + GETREG(TAKREG, 61)) * 2, 0.0f, 255.0f); + + _texture_z_light_fog_prim_xlu(game->graph); + + OPEN_DISP(game->graph); + + Matrix_translate(effect->position.x, effect->position.y, effect->position.z, 0); + Matrix_RotateY(effect->effect_specific[4] + (int)(GETREG(TAKREG, 21) * 182.04445f), 1); + Matrix_rotateXYZ(effect->effect_specific[0] + (int)(GETREG(TAKREG, 20) * 182.04445f), 0, + effect->effect_specific[2] + (int)(GETREG(TAKREG, 22) * 182.04445f), 1); + Matrix_scale(effect->scale.x, effect->scale.y, effect->scale.z, 1); + + gDPSetPrimColor(NEXT_POLY_XLU_DISP, 0, 128, 255, 255, 255, a); + gSPMatrix(NEXT_POLY_XLU_DISP, _Matrix_to_Mtx_new(game->graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + if (effect->arg0 == 0) { + gSPDisplayList(NEXT_POLY_XLU_DISP, ef_axe1_model); + } else if (effect->arg0 == 1) { + gSPDisplayList(NEXT_POLY_XLU_DISP, ef_axe2_model); + } else { + gSPDisplayList(NEXT_POLY_XLU_DISP, ef_axe3_model); + } + + CLOSE_DISP(game->graph); } diff --git a/src/ef_hanabi_dummy.c b/src/ef_hanabi_dummy.c index 37cd70fe..acc51cc2 100644 --- a/src/ef_hanabi_dummy.c +++ b/src/ef_hanabi_dummy.c @@ -2,6 +2,24 @@ #include "m_common_data.h" +#define eHanabiDummy_TIMER 80 +#define eHanabiDummy_MIN_POWER 0.0f +#define eHanabiDummy_MAX_POWER 2.0f +#define eHanabiDummy_MAX_DIST (mFI_UNIT_BASE_SIZE_F * 12) + +enum { + eHanabiDummy_TYPE0, + eHanabiDummy_TYPE1, + eHanabiDummy_TYPE2, + eHanabiDummy_TYPE3, + eHanabiDummy_TYPE4, + eHanabiDummy_TYPE5, + + eHanabiDummy_TYPE_NUM +}; + +#define eHanabiDummy_TYPE_ARG (effect->effect_specific[0]) + static void eHanabiDummy_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1); static void eHanabiDummy_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg); static void eHanabiDummy_mv(eEC_Effect_c* effect, GAME* game); @@ -24,63 +42,61 @@ static void eHanabiDummy_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 it } static void eHanabiDummy_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg) { - effect->timer = 0x50; - effect->effect_specific[0] = RANDOM(6); + effect->timer = eHanabiDummy_TIMER; + eHanabiDummy_TYPE_ARG = RANDOM(eHanabiDummy_TYPE_NUM); } static void eHanabiDummy_mv(eEC_Effect_c* effect, GAME* game) { rgba_t light_color; - s16 frames_passed = 80 - effect->timer; - + s16 frames_passed = eHanabiDummy_TIMER - effect->timer; + if (frames_passed == 10) { - static rgba_t dummy_light[] = { - { 50, 30, 20, 255 }, - { 20, 60, 20, 255 }, - { 40, 10, 60, 255 }, - { 40, 20, 20, 255 }, - { 20, 40, 20, 255 }, - { 60, 60, 30, 255 }, + static rgba_t dummy_light[eHanabiDummy_TYPE_NUM] = { + { 50, 30, 20, 255 }, { 20, 60, 20, 255 }, { 40, 10, 60, 255 }, + { 40, 20, 20, 255 }, { 20, 40, 20, 255 }, { 60, 60, 30, 255 }, }; - - eEC_CLIP->decide_light_power_proc(&light_color, dummy_light[effect->effect_specific[0]], effect->position, game, 2.0f, 0.0f, 480.0f); + + eEC_CLIP->decide_light_power_proc(&light_color, dummy_light[eHanabiDummy_TYPE_ARG], effect->position, game, + eHanabiDummy_MAX_POWER, eHanabiDummy_MIN_POWER, eHanabiDummy_MAX_DIST); if (effect->arg0 != 0) { - light_color.r = light_color.r * 2.0f; - light_color.g = light_color.g * 2.0f; - light_color.b = light_color.b * 2.0f; + light_color.r = light_color.r * eHanabiDummy_MAX_POWER; + light_color.g = light_color.g * eHanabiDummy_MAX_POWER; + light_color.b = light_color.b * eHanabiDummy_MAX_POWER; } - + eEC_CLIP->regist_effect_light(light_color, 20, 50, TRUE); } + if (frames_passed == 72) { xyz_t pos = effect->position; u16 sfx_no; pos.y += 200.0f; - - switch (effect->effect_specific[0]) { - case 0: - case 1: - sfx_no = 0x210F; + + switch (eHanabiDummy_TYPE_ARG) { + case eHanabiDummy_TYPE0: + case eHanabiDummy_TYPE1: + sfx_no = NA_SE_HANABI0; break; - case 2: - sfx_no = 0x2110; + case eHanabiDummy_TYPE2: + sfx_no = NA_SE_HANABI1; break; - case 3: - case 4: - sfx_no = 0x2111; + case eHanabiDummy_TYPE3: + case eHanabiDummy_TYPE4: + sfx_no = NA_SE_HANABI2; break; - case 5: - sfx_no = 0x2112; + case eHanabiDummy_TYPE5: + sfx_no = NA_SE_HANABI3; break; default: - sfx_no = 0x210F; + sfx_no = NA_SE_HANABI0; break; } - + sAdo_OngenTrgStart(sfx_no, &pos); } } static void eHanabiDummy_dw(eEC_Effect_c* effect, GAME* game) { // empty -} \ No newline at end of file +} From c240aa9fcd5b52a7f59a47558351d378f8fb7c10 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Mon, 5 Aug 2024 08:28:47 -0400 Subject: [PATCH 098/234] Implement & link ef_dash_asimoto --- config/rel_slices.yml | 4 + src/ef_dash_asimoto.c | 170 ++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 169 insertions(+), 5 deletions(-) diff --git a/config/rel_slices.yml b/config/rel_slices.yml index 2cd5a06e..7c1caddf 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -1119,6 +1119,10 @@ ef_coin.c: .text: [0x80608060, 0x806087EC] .rodata: [0x8064BE48, 0x8064BEA0] .data: [0x806D20C0, 0x806D2128] +ef_dash_asimoto.c: + .text: [0x806087EC, 0x80609030] + .rodata: [0x8064BEA0, 0x8064BEB8] + .data: [0x806D2128, 0x806D21B0] ef_flash.c: .text: [0x8060B7B4, 0x8060BCB0] .rodata: [0x8064C078, 0x8064C0B0] diff --git a/src/ef_dash_asimoto.c b/src/ef_dash_asimoto.c index 5484966d..61d531bf 100644 --- a/src/ef_dash_asimoto.c +++ b/src/ef_dash_asimoto.c @@ -1,5 +1,7 @@ #include "ef_effect_control.h" +#include "m_common_data.h" + static void eDashAsimoto_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1); static void eDashAsimoto_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg); static void eDashAsimoto_mv(eEC_Effect_c* effect, GAME* game); @@ -17,18 +19,176 @@ eEC_PROFILE_c iam_ef_dash_asimoto = { // clang-format on }; -static void eDashAsimoto_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1) { - // TODO +static xyz_t eDahsAsimoto_GetMakeOffset(xyz_t pos, s16 angle_y) { + xyz_t base_ofs = { 0.0f, 0.0f, 10.0f }; + + sMath_RotateY(&base_ofs, SHORTANGLE2RAD(angle_y)); + xyz_t_add(&pos, &base_ofs, &pos); + return pos; } +static void eDashAsimoto_Hanabira_Make(eEC_Effect_c* effect, GAME* game) { + mActor_name_t* item_p = mFI_GetUnitFG(effect->position); + + if (item_p != NULL && *item_p >= FLOWER_PANSIES0 && *item_p <= FLOWER_TULIP2) { + int i; + + for (i = 0; i < 2; i++) { + eEC_CLIP->effect_make_proc(eEC_EFFECT_HANABIRA, effect->position, effect->prio, 0, game, effect->item_name, + *item_p - FLOWER_PANSIES0, 0); + } + } +} + +static void eDashAsimoto_RainDay(eEC_Effect_c* effect, GAME* game) { + xyz_t pos = effect->position; + xyz_t bush_pos; + xyz_t ofs; + int i; + + ofs = eDahsAsimoto_GetMakeOffset(pos, effect->effect_specific[0]); + bush_pos = ofs; + + switch (effect->arg0) { + case mCoBG_ATTRIBUTE_BUSH: + i = 2; + do { + eEC_CLIP->effect_make_proc(eEC_EFFECT_BUSH_HAPPA, bush_pos, effect->prio, effect->effect_specific[0], + game, effect->item_name, effect->arg0, 1); + } while (i-- != 0); + break; + case mCoBG_ATTRIBUTE_FLOOR: + break; + case mCoBG_ATTRIBUTE_WAVE: + eEC_CLIP->effect_make_proc(eEC_EFFECT_SIBUKI, effect->position, effect->prio, effect->effect_specific[0], + game, effect->item_name, effect->arg0, 1); + break; + default: + eEC_CLIP->effect_make_proc(eEC_EFFECT_SIBUKI, effect->position, effect->prio, effect->effect_specific[0], + game, effect->item_name, effect->arg0, 0); + break; + } +} + +static void eDashAsimoto_FineDay(eEC_Effect_c* effect, GAME* game) { + xyz_t pos = effect->position; + xyz_t bush_pos; + xyz_t ofs; + int season; + int i; + + ofs = eDahsAsimoto_GetMakeOffset(pos, effect->effect_specific[0]); + bush_pos = ofs; + season = Common_Get(time.season); + + switch (season) { + case mTM_SEASON_WINTER: { + switch (effect->arg0) { + case mCoBG_ATTRIBUTE_GRASS0: + case mCoBG_ATTRIBUTE_GRASS1: + case mCoBG_ATTRIBUTE_GRASS2: + case mCoBG_ATTRIBUTE_GRASS3: + eEC_CLIP->effect_make_proc(eEC_EFFECT_YUKIHANE, effect->position, effect->prio, + effect->effect_specific[0], game, effect->item_name, effect->arg0, + effect->arg1); + break; + case mCoBG_ATTRIBUTE_BUSH: + i = 2; + do { + eEC_CLIP->effect_make_proc(eEC_EFFECT_BUSH_HAPPA, bush_pos, effect->prio, + effect->effect_specific[0], game, effect->item_name, effect->arg0, + 1); + } while (i-- != 0); + + i = 2; + do { + eEC_CLIP->effect_make_proc(eEC_EFFECT_BUSH_YUKI, bush_pos, effect->prio, + effect->effect_specific[0], game, effect->item_name, effect->arg0, + 0); + } while (i-- != 0); + break; + case mCoBG_ATTRIBUTE_FLOOR: + break; + case mCoBG_ATTRIBUTE_SAND: + eEC_CLIP->effect_make_proc(eEC_EFFECT_SANDSPLASH, effect->position, effect->prio, + effect->effect_specific[0], game, effect->item_name, effect->arg0, 0); + break; + case mCoBG_ATTRIBUTE_WAVE: + eEC_CLIP->effect_make_proc(eEC_EFFECT_SIBUKI, effect->position, effect->prio, + effect->effect_specific[0], game, effect->item_name, effect->arg0, 1); + break; + default: + eEC_CLIP->effect_make_proc(eEC_EFFECT_DUST, effect->position, effect->prio, + effect->effect_specific[0], game, effect->item_name, effect->arg0, 8); + break; + } + break; + } + + default: { + switch (effect->arg0) { + case mCoBG_ATTRIBUTE_BUSH: + i = 2; + do { + eEC_CLIP->effect_make_proc(eEC_EFFECT_BUSH_HAPPA, bush_pos, effect->prio, + effect->effect_specific[0], game, effect->item_name, effect->arg0, + 1); + } while (i-- != 0); + break; + case mCoBG_ATTRIBUTE_FLOOR: + break; + case mCoBG_ATTRIBUTE_SAND: + eEC_CLIP->effect_make_proc(eEC_EFFECT_SANDSPLASH, effect->position, effect->prio, + effect->effect_specific[0], game, effect->item_name, effect->arg0, 0); + break; + case mCoBG_ATTRIBUTE_WAVE: + eEC_CLIP->effect_make_proc(eEC_EFFECT_SIBUKI, effect->position, effect->prio, + effect->effect_specific[0], game, effect->item_name, effect->arg0, 1); + break; + default: + eEC_CLIP->effect_make_proc(eEC_EFFECT_DUST, effect->position, effect->prio, + effect->effect_specific[0], game, effect->item_name, effect->arg0, 8); + break; + } + break; + } + } +} + +static void eDashAsimoto_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1) { + eEC_CLIP->make_effect_proc(eEC_EFFECT_DASH_ASIMOTO, pos, NULL, game, &angle, item_name, prio, arg0, arg1); +} + +typedef void (*eDashAsimoto_PROC)(eEC_Effect_c*, GAME*); + static void eDashAsimoto_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg) { - // TODO + // clang-format off + static eDashAsimoto_PROC asimoto_func_table[mEnv_WEATHER_NUM] = { + &eDashAsimoto_FineDay, + &eDashAsimoto_RainDay, + &eDashAsimoto_FineDay, + &eDashAsimoto_FineDay, + /* @BUG - the step effect process func for 'leaves' weather is left as NULL */ + #ifdef BUGFIXES + &eDashAsimoto_FineDay, + #else + NULL, + #endif + }; + // clang-format on + s16 weather = mEnv_NowWeather(); + s16* angle_p = (s16*)ct_arg; + + effect->timer = 0; + eDashAsimoto_Hanabira_Make(effect, game); + effect->effect_specific[0] = *angle_p; + (*asimoto_func_table[weather])(effect, game); } static void eDashAsimoto_mv(eEC_Effect_c* effect, GAME* game) { - // TODO + // empty } static void eDashAsimoto_dw(eEC_Effect_c* effect, GAME* game) { - // TODO + // empty } From e2a3c507468b3fbb24c59c206108bffdb10e6493 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Mon, 5 Aug 2024 11:23:41 -0400 Subject: [PATCH 099/234] Implement & link ef_dig_hole --- config/rel_slices.yml | 4 + src/ef_dig_hole.c | 171 +++++++++++++++++++++++++++++++++++++++++- 2 files changed, 171 insertions(+), 4 deletions(-) diff --git a/config/rel_slices.yml b/config/rel_slices.yml index 7c1caddf..605db290 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -1123,6 +1123,10 @@ ef_dash_asimoto.c: .text: [0x806087EC, 0x80609030] .rodata: [0x8064BEA0, 0x8064BEB8] .data: [0x806D2128, 0x806D21B0] +ef_dig_hole.c: + .text: [0x80609030, 0x80609910] + .rodata: [0x8064BEB8, 0x8064BF20] + .data: [0x806D21B0, 0x806D2220] ef_flash.c: .text: [0x8060B7B4, 0x8060BCB0] .rodata: [0x8064C078, 0x8064C0B0] diff --git a/src/ef_dig_hole.c b/src/ef_dig_hole.c index 8842c2ea..ce4d4727 100644 --- a/src/ef_dig_hole.c +++ b/src/ef_dig_hole.c @@ -1,5 +1,10 @@ #include "ef_effect_control.h" +#include "m_common_data.h" +#include "m_player_lib.h" +#include "m_rcp.h" +#include "sys_matrix.h" + static void eDig_Hole_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1); static void eDig_Hole_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg); static void eDig_Hole_mv(eEC_Effect_c* effect, GAME* game); @@ -17,18 +22,176 @@ eEC_PROFILE_c iam_ef_dig_hole = { // clang-format on }; +typedef struct dig_hole_init_data_s { + s16 type; + s16 angle_y; + s16 goal_angle_x; + s16 timer; +} eDig_Hole_init_data_c; + static void eDig_Hole_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1) { - // TODO + GAME_PLAY* play = (GAME_PLAY*)game; + PLAYER_ACTOR* player = GET_PLAYER_ACTOR(play); + + pos.x += player->actor_class.world.position.x + sin_s(angle) * 30.0f; + pos.z += player->actor_class.world.position.z + cos_s(angle) * 30.0f; + pos.x /= 2.0f; + pos.z /= 2.0f; + + eEC_CLIP->make_effect_proc(eEC_EFFECT_DIG_HOLE, pos, NULL, game, &angle, item_name, prio, arg0, arg1); } static void eDig_Hole_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg) { - // TODO + static xyz_t fill_hole_pos_tbl[] = { + { 0.0f, 0.0f, -21.0f }, + { 11.0f, 0.0f, -14.0f }, + { -3.0f, 0.0f, -8.0f }, + }; + + static eDig_Hole_init_data_c init_data[] = { + { 0, DEG2SHORT_ANGLE2(180.0f), DEG2SHORT_ANGLE2(179.0f), 36 }, + { 0, DEG2SHORT_ANGLE2(60.0f), DEG2SHORT_ANGLE2(179.0f), 36 }, + { 0, DEG2SHORT_ANGLE2(300.0f) + 1, DEG2SHORT_ANGLE2(179.0f), 36 }, + { 1, DEG2SHORT_ANGLE2(270.0f), DEG2SHORT_ANGLE2(179.0f), 58 }, + { 1, DEG2SHORT_ANGLE2(270.0f), DEG2SHORT_ANGLE2(179.0f), 46 }, + { 1, DEG2SHORT_ANGLE2(270.0f), DEG2SHORT_ANGLE2(150.0f), 34 }, + }; + + s16* angle_p = (s16*)ct_arg; + + effect->effect_specific[0] = *angle_p; + effect->effect_specific[4] = init_data[effect->arg1].type; + effect->effect_specific[0] += init_data[effect->arg1].angle_y; + effect->effect_specific[3] = init_data[effect->arg1].goal_angle_x; + effect->effect_specific[2] = init_data[effect->arg1].timer; + effect->effect_specific[1] = 0; + + effect->scale = ZeroVec; + + if (effect->effect_specific[4] == 1) { + xyz_t pos = fill_hole_pos_tbl[effect->arg1 - 3]; + + eEC_CLIP->vector_rotate_y_proc(&pos, SHORTANGLE2RAD(effect->effect_specific[0])); + effect->position.x += pos.x; + effect->position.y += 10.0f; + effect->position.z += pos.z; + + eEC_CLIP->effect_make_proc(eEC_EFFECT_DIG_MUD, effect->position, effect->prio, effect->effect_specific[0], game, + effect->item_name, effect->arg0, 6); + } else { + effect->position.x += 5.0f * sin_s(effect->effect_specific[0]); + effect->position.y += 10.0f; + effect->position.z += 5.0f * cos_s(effect->effect_specific[0]); + } + + if (effect->arg0 == mCoBG_ATTRIBUTE_WAVE) { + int i; + s16 mizutama_arg1; + s16 mizutama_angle = *angle_p; + s16 angle; + xyz_t pos = effect->position; + + pos.y = 21.0f; + + if (effect->arg1 <= 2) { + mizutama_arg1 = 0x4000 | (effect->arg1 << 1); + } else { + mizutama_arg1 = 0x4000 | (5 << 1); + } + + for (i = 0; i < 2; i++) { + pos.x = effect->position.x + RANDOM2_F(10.0f); + pos.z = effect->position.z + RANDOM2_F(10.0f); + + if (effect->arg1 > 2) { + angle = mizutama_angle + (s16)(int)(RANDOM2_F(150.0f) * 182.04445f); + } else { + angle = mizutama_angle + (s16)(int)(RANDOM2_F(90.0f) * 182.04445f); + } + + mizutama_angle = angle; + eEC_CLIP->effect_make_proc(eEC_EFFECT_MIZUTAMA, pos, effect->prio, mizutama_angle, game, effect->item_name, + effect->arg0, mizutama_arg1); + } + } + + effect->timer = effect->effect_specific[2]; } static void eDig_Hole_mv(eEC_Effect_c* effect, GAME* game) { - // TODO + if (effect->timer > (effect->effect_specific[2] - 6)) { + effect->scale.x += 0.00108333334f; + effect->scale.y = effect->scale.z = effect->scale.x; + } else if (effect->timer < 6 && effect->effect_specific[4] == 1) { + effect->scale.x -= 0.00108333334f; + effect->scale.y = effect->scale.z = effect->scale.x; + } else if (effect->effect_specific[4] == 1 || effect->timer <= (effect->effect_specific[2] - 8)) { + add_calc_short_angle2(&effect->effect_specific[1], effect->effect_specific[3], 1.0f - sqrtf(0.8f), 1820, 91); + } + + if (effect->timer == (effect->effect_specific[2] - 8)) { + f32 speed; + + if (effect->arg1 == 0 || effect->arg1 == 1 || effect->arg1 == 2) { + speed = 0.15f; + } else { + speed = 0.75f; + } + + effect->velocity.y = 1.0f; + effect->velocity.x = speed * sin_s(effect->effect_specific[0]); + effect->velocity.z = speed * cos_s(effect->effect_specific[0]); + + effect->acceleration.y = -0.1f; + } + + if (effect->effect_specific[4] == 0 || effect->timer > (effect->effect_specific[2] - 30)) { + xyz_t_add(&effect->velocity, &effect->acceleration, &effect->velocity); + xyz_t_add(&effect->position, &effect->velocity, &effect->position); + } } +extern Gfx ef_anahori01_00_model[]; +extern Gfx ef_anahori01_01_model[]; +extern Gfx ef_anahori01_02_model[]; + static void eDig_Hole_dw(eEC_Effect_c* effect, GAME* game) { - // TODO + OPEN_DISP(game->graph); + + _texture_z_light_fog_prim_xlu(game->graph); + Matrix_translate(effect->position.x, effect->position.y, effect->position.z, 0); + Matrix_RotateY(effect->effect_specific[0], 1); + Matrix_RotateX(effect->effect_specific[1], 1); + Matrix_scale(effect->scale.x, effect->scale.y, effect->scale.z, 1); + + gSPMatrix(NEXT_POLY_XLU_DISP, _Matrix_to_Mtx_new(game->graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + if (effect->effect_specific[4] == 0) { + u8 a = (int)eEC_CLIP->calc_adjust_proc(effect->timer, 0, 10, 0.0f, 255.0f); + + gDPSetPrimColor(NEXT_POLY_XLU_DISP, 0, 255, 255, 255, 255, a); + } else { + gDPSetPrimColor(NEXT_POLY_XLU_DISP, 0, 255, 255, 255, 255, 255); + } + + switch (effect->arg0) { + case mCoBG_ATTRIBUTE_GRASS0: + case mCoBG_ATTRIBUTE_GRASS1: + case mCoBG_ATTRIBUTE_GRASS2: + if (effect->effect_specific[4] == 0) { + gSPDisplayList(NEXT_POLY_XLU_DISP, ef_anahori01_00_model); + } else { + gSPDisplayList(NEXT_POLY_XLU_DISP, ef_anahori01_01_model); + } + break; + case mCoBG_ATTRIBUTE_WAVE: + case mCoBG_ATTRIBUTE_SAND: + gSPDisplayList(NEXT_POLY_XLU_DISP, ef_anahori01_02_model); + break; + default: + gSPDisplayList(NEXT_POLY_XLU_DISP, ef_anahori01_01_model); + break; + } + + CLOSE_DISP(game->graph); } From 044c719997d1f4f1723988330cfcf754f564c8d2 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Mon, 5 Aug 2024 12:29:53 -0400 Subject: [PATCH 100/234] Implement & link ef_dig_mud --- config/rel_slices.yml | 4 ++ src/ef_dig_mud.c | 142 ++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 142 insertions(+), 4 deletions(-) diff --git a/config/rel_slices.yml b/config/rel_slices.yml index 605db290..31387508 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -1127,6 +1127,10 @@ ef_dig_hole.c: .text: [0x80609030, 0x80609910] .rodata: [0x8064BEB8, 0x8064BF20] .data: [0x806D21B0, 0x806D2220] +ef_dig_mud.c: + .text: [0x80609910, 0x80609F6C] + .rodata: [0x8064BF20, 0x8064BF70] + .data: [0x806D2220, 0x806D2268] ef_flash.c: .text: [0x8060B7B4, 0x8060BCB0] .rodata: [0x8064C078, 0x8064C0B0] diff --git a/src/ef_dig_mud.c b/src/ef_dig_mud.c index a6d7fa1a..b570f436 100644 --- a/src/ef_dig_mud.c +++ b/src/ef_dig_mud.c @@ -1,5 +1,46 @@ #include "ef_effect_control.h" +#include "m_common_data.h" +#include "m_rcp.h" +#include "sys_matrix.h" +#include "m_debug.h" + +extern u8 ef_mogura01_01_tex[]; +extern u8 ef_mogura01_02_tex[]; +extern u8 ef_mogura01_03_tex[]; +extern u8 ef_mogura01_04_tex[]; + +extern u8 ef_anahori02_01_tex[]; +extern u8 ef_anahori02_02_tex[]; +extern u8 ef_anahori02_03_tex[]; +extern u8 ef_anahori02_04_tex[]; + +extern u8 ef_anahori03_01_tex[]; +extern u8 ef_anahori03_02_tex[]; +extern u8 ef_anahori03_03_tex[]; +extern u8 ef_anahori03_04_tex[]; + +static u8* eDig_Mud_tex_tbl[] = { + ef_anahori02_01_tex, + ef_anahori02_02_tex, + ef_anahori02_03_tex, + ef_anahori02_04_tex, +}; + +static u8* eDig_Mud_Sand_tex_tbl[] = { + ef_anahori03_01_tex, + ef_anahori03_02_tex, + ef_anahori03_03_tex, + ef_anahori03_04_tex, +}; + +static u8* eDig_Mud_Mogura_tex_tbl[] = { + ef_mogura01_02_tex, + ef_mogura01_03_tex, + ef_mogura01_01_tex, + ef_mogura01_04_tex, +}; + static void eDig_Mud_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1); static void eDig_Mud_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg); static void eDig_Mud_mv(eEC_Effect_c* effect, GAME* game); @@ -18,17 +59,110 @@ eEC_PROFILE_c iam_ef_dig_mud = { }; static void eDig_Mud_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1) { - // TODO + eEC_CLIP->make_effect_proc(eEC_EFFECT_DIG_MUD, pos, NULL, game, &angle, item_name, prio, arg0, arg1); } static void eDig_Mud_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg) { - // TODO + s16* angle_p = (s16*)ct_arg; + s16 angle_y = *angle_p; + s16 angle_x = (s16)(int)((-60.0f + RANDOM2_F(20.0f)) * 182.04445f); + f32 cos_x = cos_s(angle_x); + f32 speed = -3.5f + RANDOM2_F(4.5f) * 0.5f; + + if ((effect->arg1 & 0x8000)) { + effect->effect_specific[1] = 1; + effect->arg1 &= ~0x8000; + } else { + effect->effect_specific[1] = 0; + } + + if ((effect->arg1 & 0x4000)) { + effect->scale.x = effect->scale.y = effect->scale.z = (0.5f + GETREG(TAKREG, 15) * 0.01f) * 0.01f; + effect->effect_specific[2] = 1; + effect->arg1 &= ~0x4000; + } else { + effect->scale.x = effect->scale.y = effect->scale.z = 0.01f; + effect->effect_specific[2] = 0; + } + + if (effect->arg1 == 0 || effect->arg1 == 3) { + effect->effect_specific[0] = 32; + } else if (effect->arg1 == 1 || effect->arg1 == 4) { + effect->effect_specific[0] = 30; + } else { + effect->effect_specific[0] = 28; + } + + if (effect->arg1 < 3) { + angle_y += (int)((30.0f + RANDOM2_F(20.0f)) * 182.04445f); + + effect->velocity.x = (speed * cos_x) * sin_s(angle_y); + effect->velocity.y = speed * sin_s(angle_x); + effect->velocity.z = (speed * cos_x) * cos_s(angle_y); + } else if (effect->arg1 < 6) { + angle_y += (s16)(int)((120.0f * effect->arg1) * 182.04445f); + + effect->velocity.x = 0.4f * sin_s(angle_y); + effect->velocity.y = 1.75f + fqrand(); + effect->velocity.z = 0.4f * cos_s(angle_y); + } else if (effect->arg1 != 8) { + effect->velocity.x = sin_s(angle_y); + effect->velocity.y = 2.0f + fqrand(); + effect->velocity.z = cos_s(angle_y); + } else { + effect->velocity.x = 0.0f; + effect->velocity.y = 2.0f + fqrand(); + effect->velocity.z = 0.0f; + } + + effect->acceleration.y = -0.175f; + effect->timer = effect->effect_specific[0]; } static void eDig_Mud_mv(eEC_Effect_c* effect, GAME* game) { - // TODO + xyz_t_add(&effect->velocity, &effect->acceleration, &effect->velocity); + xyz_t_add(&effect->position, &effect->velocity, &effect->position); + + if (effect->timer < 18) { + if (effect->effect_specific[2] != 1) { + eEC_CLIP->calc_adjust_proc(effect->timer, 0, 18, 0.012f, 0.010f); + } else { + eEC_CLIP->calc_adjust_proc(effect->timer, 0, 18, 0.006f, 0.005f); + } + } } +extern Gfx ef_anahori02_00_modelT[]; +extern Gfx ef_anahori03_00_modelT[]; +extern Gfx ef_mogura01_00_modelT[]; + static void eDig_Mud_dw(eEC_Effect_c* effect, GAME* game) { - // TODO + int tex_idx; + + if (effect->timer > 18) { + tex_idx = 0; + } else if (effect->timer > 14) { + tex_idx = 1; + } else if (effect->timer > 10) { + tex_idx = 2; + } else { + tex_idx = 3; + } + + OPEN_DISP(game->graph); + + eEC_CLIP->auto_matrix_xlu_proc(game, &effect->position, &effect->scale); + + if (effect->effect_specific[1] == 1) { + gSPSegment(NEXT_POLY_XLU_DISP, ANIME_1_TXT_SEG, eDig_Mud_Mogura_tex_tbl[tex_idx]); + gSPDisplayList(NEXT_POLY_XLU_DISP, ef_mogura01_00_modelT); + } else if (effect->arg0 == mCoBG_ATTRIBUTE_SAND || effect->arg0 == mCoBG_ATTRIBUTE_WAVE) { + gSPSegment(NEXT_POLY_XLU_DISP, ANIME_1_TXT_SEG, eDig_Mud_Sand_tex_tbl[tex_idx]); + gSPDisplayList(NEXT_POLY_XLU_DISP, ef_anahori03_00_modelT); + } else { + gSPSegment(NEXT_POLY_XLU_DISP, ANIME_1_TXT_SEG, eDig_Mud_tex_tbl[tex_idx]); + gSPDisplayList(NEXT_POLY_XLU_DISP, ef_anahori02_00_modelT); + } + + CLOSE_DISP(game->graph); } From 848df6ec2a094416f81182658c718b9b36089442 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Mon, 5 Aug 2024 22:31:46 -0400 Subject: [PATCH 101/234] Implement & link ef_dig_scoop --- config/rel_slices.yml | 4 ++ src/ef_dig_scoop.c | 155 ++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 155 insertions(+), 4 deletions(-) diff --git a/config/rel_slices.yml b/config/rel_slices.yml index 31387508..1d419a83 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -1131,6 +1131,10 @@ ef_dig_mud.c: .text: [0x80609910, 0x80609F6C] .rodata: [0x8064BF20, 0x8064BF70] .data: [0x806D2220, 0x806D2268] +ef_dig_scoop.c: + .text: [0x80609F6C, 0x8060A808] + .rodata: [0x8064BF70, 0x8064BF90] + .data: [0x806D2268, 0x806D2280] ef_flash.c: .text: [0x8060B7B4, 0x8060BCB0] .rodata: [0x8064C078, 0x8064C0B0] diff --git a/src/ef_dig_scoop.c b/src/ef_dig_scoop.c index 88c2e0be..18eaec38 100644 --- a/src/ef_dig_scoop.c +++ b/src/ef_dig_scoop.c @@ -1,5 +1,8 @@ #include "ef_effect_control.h" +#include "m_common_data.h" +#include "m_player_lib.h" + static void eDig_Scoop_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1); static void eDig_Scoop_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg); static void eDig_Scoop_mv(eEC_Effect_c* effect, GAME* game); @@ -18,17 +21,161 @@ eEC_PROFILE_c iam_ef_dig_scoop = { }; static void eDig_Scoop_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1) { - // TODO + ACTOR* player_actorx = (ACTOR*)GET_PLAYER_ACTOR_GAME(game); + PLAYER_ACTOR* player; + int i; + s16 star_ef_angle; + s16 sand_angle; + xyz_t sand_pos; + s16 dust_angle; + + pos.x += player_actorx->world.position.x + 30.0f * sin_s(angle); + pos.z += player_actorx->world.position.z + 30.0f * cos_s(angle); + pos.x /= 2.0f; + pos.z /= 2.0f; + + if (eEC_CLIP != NULL) { + if (arg1 == 1) { + player = GET_PLAYER_ACTOR_GAME(game); + star_ef_angle = angle + DEG2SHORT_ANGLE2(22.5f); + + switch (arg0) { + case mCoBG_ATTRIBUTE_BUSH: { + int i = 4; + + do { + eEC_CLIP->effect_make_proc(eEC_EFFECT_BUSH_HAPPA, player->actor_class.world.position, prio, + angle, game, item_name, arg0, 1); + } while (i--); + + if (Common_Get(time).season == mTM_SEASON_WINTER) { + int j = 4; + + do { + eEC_CLIP->effect_make_proc(eEC_EFFECT_BUSH_YUKI, player->actor_class.world.position, prio, + angle, game, item_name, arg0, 0); + } while (j--); + } + break; + } + + case mCoBG_ATTRIBUTE_GRASS0: + case mCoBG_ATTRIBUTE_GRASS1: + case mCoBG_ATTRIBUTE_GRASS2: + case mCoBG_ATTRIBUTE_SOIL0: + case mCoBG_ATTRIBUTE_SOIL1: + case mCoBG_ATTRIBUTE_SOIL2: { + f32 ground_dist = mCoBG_GetBgY_AngleS_FromWpos(NULL, pos, 0.0f); + + if (ground_dist < (pos.y + 10.0f)) { + break; + } + } + /* Fallthrough */ + default: { + s16 i; + + pos.y += 11.0f; + for (i = 0; i < 2; i++) { + eEC_CLIP->effect_make_proc(eEC_EFFECT_IMPACT_STAR, pos, prio, star_ef_angle, game, item_name, + arg0, (s16)i); + } + break; + } + } + } else if (arg1 == 0) { + pos.y += 10.0f; + for (i = 0; i < 6; i++) { + eEC_CLIP->effect_make_proc(eEC_EFFECT_DIG_MUD, pos, prio, angle, game, item_name, arg0, i); + } + } else if (arg1 == 3) { + pos.y += 10.0f; + for (i = 3; i < 6; i++) { + eEC_CLIP->effect_make_proc(eEC_EFFECT_DIG_MUD, pos, prio, angle, game, item_name, arg0, i); + } + } else { + pos.y += 5.0f; + + if (Common_Get(time).season == mTM_SEASON_WINTER) { + if (arg0 == mCoBG_ATTRIBUTE_GRASS0 || arg0 == mCoBG_ATTRIBUTE_GRASS1 || + arg0 == mCoBG_ATTRIBUTE_GRASS2) { + for (i = 2; i < 6; i++) { + eEC_CLIP->effect_make_proc(eEC_EFFECT_YUKIDAMA, pos, prio, angle, game, item_name, arg0, + (0x2000 | 0x1000) | i); + } + } else if (arg0 == mCoBG_ATTRIBUTE_SAND) { + sand_angle = angle - DEG2SHORT_ANGLE2(45.0f); + for (i = 0; i < 3; i++) { + xyz_t sand_pos = pos; + + sand_pos.x += 15.0f * sin_s(sand_angle); + sand_pos.z += 15.0f * cos_s(sand_angle); + eEC_CLIP->effect_make_proc(eEC_EFFECT_SANDSPLASH, sand_pos, prio, sand_angle, game, item_name, + 3, 0); + sand_angle += DEG2SHORT_ANGLE2(45.0f); + } + } else if (mEnv_NowWeather() != mEnv_WEATHER_RAIN && arg0 != mCoBG_ATTRIBUTE_WAVE) { + dust_angle = angle - DEG2SHORT_ANGLE2(45.0f); + for (i = 0; i < 3; i++) { + eEC_CLIP->effect_make_proc(eEC_EFFECT_TUMBLE_DUST, pos, prio, dust_angle, game, item_name, arg0, + i); + dust_angle += DEG2SHORT_ANGLE2(45.0f); + } + } else { + for (i = 2; i < 6; i++) { + eEC_CLIP->effect_make_proc(eEC_EFFECT_MIZUTAMA, pos, prio, angle, game, item_name, arg0, + (0x2000 | 0x1000) | i); + } + + if (arg0 == mCoBG_ATTRIBUTE_WAVE) { + eEC_CLIP->effect_make_proc(eEC_EFFECT_AMI_MIZU, pos, prio, angle, game, item_name, 1, 0); + } + } + } else { + if (arg0 == mCoBG_ATTRIBUTE_SAND) { + sand_angle = angle - DEG2SHORT_ANGLE2(45.0f); + + for (i = 0; i < 3; i++) { + xyz_t sand_pos = pos; + + sand_pos.x += 15.0f * sin_s(sand_angle); + sand_pos.z += 15.0f * cos_s(sand_angle); + eEC_CLIP->effect_make_proc(eEC_EFFECT_SANDSPLASH, sand_pos, prio, sand_angle, game, item_name, + 3, 0); + sand_angle += DEG2SHORT_ANGLE2(45.0f); + } + } else if (mEnv_NowWeather() == mEnv_WEATHER_RAIN || arg0 == mCoBG_ATTRIBUTE_WAVE) { + for (i = 2; i < 6; i++) { + eEC_CLIP->effect_make_proc(eEC_EFFECT_MIZUTAMA, pos, prio, angle, game, item_name, arg0, + (0x2000 | 0x1000) | i); + } + + if (arg0 == mCoBG_ATTRIBUTE_WAVE) { + eEC_CLIP->effect_make_proc(eEC_EFFECT_AMI_MIZU, pos, prio, angle, game, item_name, 1, 0); + } + } else { + dust_angle = angle - DEG2SHORT_ANGLE2(45.0f); + for (i = 0; i < 3; i++) { + eEC_CLIP->effect_make_proc(eEC_EFFECT_TUMBLE_DUST, pos, prio, dust_angle, game, item_name, arg0, + i); + dust_angle += DEG2SHORT_ANGLE2(45.0f); + } + } + } + } + } + + eEC_CLIP->make_effect_proc(eEC_EFFECT_DIG_SCOOP, pos, NULL, game, NULL, item_name, prio, arg0, arg1); } static void eDig_Scoop_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg) { - // TODO + effect->timer = 0; } static void eDig_Scoop_mv(eEC_Effect_c* effect, GAME* game) { - // TODO + // empty } static void eDig_Scoop_dw(eEC_Effect_c* effect, GAME* game) { - // TODO + // empty } From 5c45af9a3cea1a365a5d7fb1ad6b9e90d813269e Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Tue, 6 Aug 2024 04:40:29 -0400 Subject: [PATCH 102/234] Implement & link ef_douzou_light --- config/rel_slices.yml | 4 ++++ src/ef_douzou_light.c | 56 +++++++++++++++++++++++++++++++++++++++---- 2 files changed, 56 insertions(+), 4 deletions(-) diff --git a/config/rel_slices.yml b/config/rel_slices.yml index 1d419a83..f3f35c44 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -1135,6 +1135,10 @@ ef_dig_scoop.c: .text: [0x80609F6C, 0x8060A808] .rodata: [0x8064BF70, 0x8064BF90] .data: [0x806D2268, 0x806D2280] +ef_douzou_light.c: + .text: [0x8060A808, 0x8060AAD4] + .rodata: [0x8064BF90, 0x8064BFA8] + .data: [0x806D2280, 0x806D2298] ef_flash.c: .text: [0x8060B7B4, 0x8060BCB0] .rodata: [0x8064C078, 0x8064C0B0] diff --git a/src/ef_douzou_light.c b/src/ef_douzou_light.c index fabcfc5e..4bde47eb 100644 --- a/src/ef_douzou_light.c +++ b/src/ef_douzou_light.c @@ -1,5 +1,9 @@ #include "ef_effect_control.h" +#include "m_common_data.h" +#include "m_rcp.h" +#include "sys_matrix.h" + static void eDouzou_Light_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1); static void eDouzou_Light_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg); static void eDouzou_Light_mv(eEC_Effect_c* effect, GAME* game); @@ -18,17 +22,61 @@ eEC_PROFILE_c iam_ef_douzou_light = { }; static void eDouzou_Light_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1) { - // TODO + eEC_CLIP->make_effect_proc(eEC_EFFECT_DOUZOU_LIGHT, pos, NULL, game, NULL, item_name, prio, arg0, arg1); } static void eDouzou_Light_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg) { - // TODO + switch (effect->arg0) { + case 0: + effect->offset.x = 0.012f; + break; + case 1: + effect->offset.x = 0.011f; + break; + case 2: + effect->offset.x = 0.010f; + break; + default: + effect->offset.x = 0.009f; + break; + } + + effect->timer = 24; } static void eDouzou_Light_mv(eEC_Effect_c* effect, GAME* game) { - // TODO + if (effect->timer > 12) { + effect->scale.x = eEC_CLIP->calc_adjust_proc(effect->timer, 12, 24, effect->offset.x, 0.0f); + } else { + effect->scale.x = eEC_CLIP->calc_adjust_proc(effect->timer, 0, 12, 0.0f, effect->offset.x); + } + + effect->scale.y = effect->scale.z = effect->scale.x; } +extern Gfx ef_carhosi01_00_modelT[]; + static void eDouzou_Light_dw(eEC_Effect_c* effect, GAME* game) { - // TODO + OPEN_DISP(game->graph); + + eEC_CLIP->auto_matrix_xlu_proc(game, &effect->position, &effect->scale); + + switch (effect->arg0) { + case 0: + gDPSetEnvColor(NEXT_POLY_XLU_DISP, 255, 255, 0, 255); + break; + case 1: + gDPSetEnvColor(NEXT_POLY_XLU_DISP, 200, 255, 255, 255); + break; + case 2: + gDPSetEnvColor(NEXT_POLY_XLU_DISP, 255, 100, 100, 255); + break; + default: + gDPSetEnvColor(NEXT_POLY_XLU_DISP, 100, 255, 100, 255); + break; + } + + gSPDisplayList(NEXT_POLY_XLU_DISP, ef_carhosi01_00_modelT); + + CLOSE_DISP(game->graph); } From 2a7ef503d48228660e7c6da5b2d6742045ceaaf9 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Tue, 6 Aug 2024 07:22:32 -0400 Subject: [PATCH 103/234] Implement & link ef_doyon --- config/rel_slices.yml | 4 +++ include/audio_defs.h | 2 ++ src/ef_doyon.c | 60 ++++++++++++++++++++++++++++++++++++++++--- 3 files changed, 62 insertions(+), 4 deletions(-) diff --git a/config/rel_slices.yml b/config/rel_slices.yml index f3f35c44..5e68c7bf 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -1139,6 +1139,10 @@ ef_douzou_light.c: .text: [0x8060A808, 0x8060AAD4] .rodata: [0x8064BF90, 0x8064BFA8] .data: [0x806D2280, 0x806D2298] +ef_doyon.c: + .text: [0x8060AAD4, 0x8060B068] + .rodata: [0x8064BFA8, 0x8064C000] + .data: [0x806D2298, 0x806D22B0] ef_flash.c: .text: [0x8060B7B4, 0x8060BCB0] .rodata: [0x8064C078, 0x8064C0B0] diff --git a/include/audio_defs.h b/include/audio_defs.h index 26ff6e9e..eb3399ed 100644 --- a/include/audio_defs.h +++ b/include/audio_defs.h @@ -100,6 +100,8 @@ typedef enum audio_sound_effects { NA_SE_TREE_TOUCH = 0x134, NA_SE_TREE_YURASU, + NA_SE_DOYON = 0x13F, + NA_SE_KIRIBASU_SCOOP = 0x148, NA_SE_KIRIBASU_OUT, diff --git a/src/ef_doyon.c b/src/ef_doyon.c index a311e8ac..0cde7fe0 100644 --- a/src/ef_doyon.c +++ b/src/ef_doyon.c @@ -1,5 +1,9 @@ #include "ef_effect_control.h" +#include "m_common_data.h" +#include "m_rcp.h" +#include "sys_matrix.h" + static void eDoyon_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1); static void eDoyon_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg); static void eDoyon_mv(eEC_Effect_c* effect, GAME* game); @@ -18,17 +22,65 @@ eEC_PROFILE_c iam_ef_doyon = { }; static void eDoyon_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1) { - // TODO + eEC_CLIP->make_effect_proc(eEC_EFFECT_DOYON, pos, NULL, game, &angle, item_name, prio, arg0, arg1); } static void eDoyon_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg) { - // TODO + s16 rng = qrand(); + s16 rng_angle = (s16)((f32)rng * 0.75f); + + effect->position.x += 10.0f * sin_s(rng_angle); + effect->position.y += 10.0f * cos_s(rng_angle); + + effect->velocity.x += sin_s(rng_angle) * 0.5f; + effect->velocity.y += cos_s(rng_angle) * 0.5f; + + effect->offset.z = 20.0f; + + effect->scale = ZeroVec; + effect->scale.z = 0.1f; + + effect->timer = 60; + sAdo_OngenTrgStart(NA_SE_DOYON, &effect->position); } static void eDoyon_mv(eEC_Effect_c* effect, GAME* game) { - // TODO + f32 progress = eEC_CLIP->calc_adjust_proc(effect->timer, 0, 60, 0.0f, 5.0f); + + xyz_t_add(&effect->velocity, &effect->acceleration, &effect->velocity); + xyz_t_add(&effect->position, &effect->velocity, &effect->position); + + effect->effect_specific[0] += DEG2SHORT_ANGLE2(5.625f); + effect->effect_specific[1] += DEG2SHORT_ANGLE2(5.625f); + + effect->velocity.x *= sqrtf(0.95f); + effect->velocity.y *= sqrtf(0.95f); + + if (effect->timer > 50) { + f32 scale = (60 - effect->timer) * 0.00065f; + + effect->scale.x = scale * (1.0f + 0.2f * cos_s(effect->effect_specific[0])); + effect->scale.y = scale * (1.0f + 0.2f * sin_s(effect->effect_specific[0])); + } else { + effect->scale.x = (1.0f + 0.2f * cos_s(effect->effect_specific[0])) * 0.0065f; + effect->scale.y = (1.0f + 0.2f * sin_s(effect->effect_specific[0])) * 0.0065f; + } + + effect->offset.x = progress * cos_s(effect->effect_specific[1]); + effect->offset.y = progress * sin_s(effect->effect_specific[1]); } +extern Gfx ef_doyon01_00_modelT[]; + static void eDoyon_dw(eEC_Effect_c* effect, GAME* game) { - // TODO + u8 a = (int)eEC_CLIP->calc_adjust_proc(effect->timer, 0, 8, 0.0f, 220.0f); + + OPEN_DISP(game->graph); + + eEC_CLIP->auto_matrix_xlu_offset_proc(game, &effect->position, &effect->scale, &effect->offset); + gDPSetPrimColor(NEXT_POLY_XLU_DISP, 0, 255, 40, 30, 40, a); + gDPSetEnvColor(NEXT_POLY_XLU_DISP, 100, 100, 255, 255); + gSPDisplayList(NEXT_POLY_XLU_DISP, ef_doyon01_00_modelT); + + CLOSE_DISP(game->graph); } From 9dc78031f8974ee2fb03a6b5ece11cabe44064e1 Mon Sep 17 00:00:00 2001 From: Reaperoe Date: Wed, 7 Aug 2024 01:30:40 -0400 Subject: [PATCH 104/234] Implement & link ef_halloween.c --- config/rel_slices.yml | 1359 +++++++++++++++++++++-------------------- src/ef_halloween.c | 23 +- 2 files changed, 699 insertions(+), 683 deletions(-) diff --git a/config/rel_slices.yml b/config/rel_slices.yml index d94b0444..04213a37 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -1123,6 +1123,10 @@ ef_footprint.c: .text: [0x8060BCB0, 0x8060C21C] .rodata: [0x8064C0B0, 0x8064C0E0] .data: [0x806D2430, 0x806D2470] +ef_halloween.c: + .text: [0x8060D44C, 0x8060D654] + .rodata: [0x8064C1C0, 0x8064C1D0] + .data: [0x806D2600, 0x806D2618] ef_killer.c: .text: [0x80614178, 0x8061481C] .rodata: [0x8064C680, 0x8064C6C0] @@ -1193,717 +1197,502 @@ f_furniture.c: .data: [0x806D4D40, 0x806E02A0] ac_weather_fine.c: .data: [0x806D1DA0, 0x806D1DB8] - # dataobject.obj NPC draw data TUs data/npc/model/mdl/bev_1.c: - .data: [0x806E03A0, 0x806E27D0] + .data: [0x806E03A0, 0x806E27D0] data/npc/model/tex/bev_1.c: - .data: [0x806E27E0, 0x806E3500] + .data: [0x806E27E0, 0x806E3500] data/npc/model/mdl/ant_1.c: - .data: [0x806E3838, 0x806E5910] + .data: [0x806E3838, 0x806E5910] data/npc/model/tex/ant_1.c: - .data: [0x806E5920, 0x806E6640] + .data: [0x806E5920, 0x806E6640] data/npc/model/tex/ant_2.c: - .data: [0x806E6640, 0x806E7360] + .data: [0x806E6640, 0x806E7360] data/npc/model/tex/ant_3.c: - .data: [0x806E7360, 0x806E8080] + .data: [0x806E7360, 0x806E8080] data/npc/model/tex/ant_4.c: - .data: [0x806E8080, 0x806E8DA0] + .data: [0x806E8080, 0x806E8DA0] data/npc/model/tex/ant_5.c: - .data: [0x806E8DA0, 0x806E9AC0] + .data: [0x806E8DA0, 0x806E9AC0] data/npc/model/mdl/wls_1.c: - .data: [0x806E9AC0, 0x806EBFF0] + .data: [0x806E9AC0, 0x806EBFF0] data/npc/model/tex/wls_1.c: - .data: [0x806EC000, 0x806ECFA0] + .data: [0x806EC000, 0x806ECFA0] data/npc/model/mdl/bea_1.c: - .data: [0x806EF078, 0x806F1030] + .data: [0x806EF078, 0x806F1030] data/npc/model/tex/bea_1.c: - .data: [0x806F1040, 0x806F2260] + .data: [0x806F1040, 0x806F2260] data/npc/model/tex/bea_2.c: - .data: [0x806F2260, 0x806F3480] + .data: [0x806F2260, 0x806F3480] data/npc/model/tex/bea_3.c: - .data: [0x806F3480, 0x806F46A0] + .data: [0x806F3480, 0x806F46A0] data/npc/model/tex/bea_5.c: - .data: [0x806F46A0, 0x806F58C0] + .data: [0x806F46A0, 0x806F58C0] data/npc/model/tex/bea_6.c: - .data: [0x806F58C0, 0x806F6AE0] + .data: [0x806F58C0, 0x806F6AE0] data/npc/model/tex/bea_7.c: - .data: [0x806F6AE0, 0x806F7D00] + .data: [0x806F6AE0, 0x806F7D00] data/npc/model/tex/bea_8.c: - .data: [0x806F7D00, 0x806F8F20] + .data: [0x806F7D00, 0x806F8F20] data/npc/model/tex/bea_9.c: - .data: [0x806F8F20, 0x806FA140] + .data: [0x806F8F20, 0x806FA140] data/npc/model/tex/bea_10.c: - .data: [0x806FA140, 0x806FB360] -data/npc/model/mdl/pbr_1.c: - .data: [0x8076DFA8, 0x80770178] -data/npc/model/tex/pbr_1.c: - .data: [0x80770180, 0x80770EA0] -data/npc/model/tex/pbr_2.c: - .data: [0x80770EA0, 0x80771BC0] -data/npc/model/tex/pbr_3.c: - .data: [0x80771BC0, 0x807728E0] -data/npc/model/tex/pbr_4.c: - .data: [0x807728E0, 0x80773600] -data/npc/model/tex/pbr_5.c: - .data: [0x80773600, 0x80774320] -data/npc/model/mdl/brd_1.c: - .data: [0x80774320, 0x80776358] -data/npc/model/tex/brd_1.c: - .data: [0x80776360, 0x80777080] -data/npc/model/tex/brd_2.c: - .data: [0x80777080, 0x80777DA0] -data/npc/model/tex/brd_11.c: - .data: [0x80777DA0, 0x80778AC0] -data/npc/model/tex/brd_3.c: - .data: [0x80778AC0, 0x807797E0] -data/npc/model/tex/brd_4.c: - .data: [0x807797E0, 0x8077A500] -data/npc/model/tex/brd_5.c: - .data: [0x8077A500, 0x8077B220] -data/npc/model/tex/brd_6.c: - .data: [0x8077B220, 0x8077BF40] -data/npc/model/tex/brd_7.c: - .data: [0x8077BF40, 0x8077CC60] -data/npc/model/tex/brd_8.c: - .data: [0x8077CC60, 0x8077D980] -data/npc/model/tex/brd_9.c: - .data: [0x8077D980, 0x8077E6A0] -data/npc/model/tex/brd_10.c: - .data: [0x8077E6A0, 0x8077F3C0] -data/npc/model/mdl/fox_1.c: - .data: [0x807D5FE8, 0x807D8098] -data/npc/model/tex/fox_1.c: - .data: [0x807D80A0, 0x807D8FC0] -data/npc/model/mdl/bul_1.c: - .data: [0x807D8FC0, 0x807DAFB0] -data/npc/model/tex/bul_1.c: - .data: [0x807DAFC0, 0x807DC1E0] -data/npc/model/tex/bul_2.c: - .data: [0x807DC1E0, 0x807DD400] -data/npc/model/tex/bul_3.c: - .data: [0x807DD400, 0x807DE620] -data/npc/model/tex/bul_4.c: - .data: [0x807DE620, 0x807DF840] -data/npc/model/mdl/cml_1.c: - .data: [0x807DF840, 0x807E1EA8] -data/npc/model/tex/cml_1.c: - .data: [0x807E1EC0, 0x807E2E60] -data/npc/model/mdl/cat_1.c: - .data: [0x807E2E60, 0x807E4BB0] -data/npc/model/tex/cat_1.c: - .data: [0x807E4BC0, 0x807E5DE0] -data/npc/model/tex/cat_2.c: - .data: [0x807E5DE0, 0x807E7000] -data/npc/model/tex/cat_11.c: - .data: [0x807E7000, 0x807E8220] -data/npc/model/tex/cat_12.c: - .data: [0x807E8220, 0x807E9440] -data/npc/model/tex/cat_13.c: - .data: [0x807E9440, 0x807EA660] -data/npc/model/tex/cat_14.c: - .data: [0x807EA660, 0x807EB880] -data/npc/model/tex/cat_15.c: - .data: [0x807EB880, 0x807ECAA0] -data/npc/model/tex/cat_3.c: - .data: [0x807ECAA0, 0x807EDCC0] -data/npc/model/tex/cat_4.c: - .data: [0x807EDCC0, 0x807EEEE0] -data/npc/model/tex/cat_5.c: - .data: [0x807EEEE0, 0x807F0100] -data/npc/model/tex/cat_6.c: - .data: [0x807F0100, 0x807F1320] -data/npc/model/tex/cat_7.c: - .data: [0x807F1320, 0x807F2540] -data/npc/model/tex/cat_8.c: - .data: [0x807F2540, 0x807F3760] -data/npc/model/tex/cat_9.c: - .data: [0x807F3760, 0x807F4980] -data/npc/model/tex/cat_10.c: - .data: [0x807F4980, 0x807F5BA0] -data/npc/model/mdl/chn_1.c: - .data: [0x807F5BA0, 0x807F8348] -data/npc/model/tex/chn_1.c: - .data: [0x807F8360, 0x807F9040] -data/npc/model/tex/chn_2.c: - .data: [0x807F9040, 0x807F9D20] -data/npc/model/tex/chn_3.c: - .data: [0x807F9D20, 0x807FAA00] -data/npc/model/tex/chn_4.c: - .data: [0x807FAA00, 0x807FB6E0] -data/npc/model/tex/chn_5.c: - .data: [0x807FB6E0, 0x807FC3C0] -data/npc/model/tex/chn_6.c: - .data: [0x807FC3C0, 0x807FD0A0] -data/npc/model/tex/chn_7.c: - .data: [0x807FD0A0, 0x807FDD80] -data/npc/model/tex/chn_8.c: - .data: [0x807FDD80, 0x807FEA60] -data/npc/model/tex/chn_9.c: - .data: [0x807FEA60, 0x807FF740] -data/npc/model/mdl/cbr_1.c: - .data: [0x807FF740, 0x80801620] -data/npc/model/tex/cbr_1.c: - .data: [0x80801620, 0x80802840] -data/npc/model/tex/cbr_2.c: - .data: [0x80802840, 0x80803A60] -data/npc/model/tex/cbr_11.c: - .data: [0x80803A60, 0x80804C80] -data/npc/model/tex/cbr_3.c: - .data: [0x80804C80, 0x80805EA0] -data/npc/model/tex/cbr_4.c: - .data: [0x80805EA0, 0x808070C0] -data/npc/model/tex/cbr_5.c: - .data: [0x808070C0, 0x808082E0] -data/npc/model/tex/cbr_6.c: - .data: [0x808082E0, 0x80809500] -data/npc/model/tex/cbr_7.c: - .data: [0x80809500, 0x8080A720] -data/npc/model/tex/cbr_8.c: - .data: [0x8080A720, 0x8080B940] -data/npc/model/tex/cbr_9.c: - .data: [0x8080B940, 0x8080CB60] -data/npc/model/tex/cbr_10.c: - .data: [0x8080CB60, 0x8080DD80] -data/npc/model/mdl/rcc_1.c: - .data: [0x8080E628, 0x80810608] -data/npc/model/tex/rcc_1.c: - .data: [0x80810620, 0x80811500] -data/npc/model/mdl/cow_1.c: - .data: [0x80811500, 0x808134E0] -data/npc/model/tex/cow_1.c: - .data: [0x808134E0, 0x80814700] -data/npc/model/tex/cow_2.c: - .data: [0x80814700, 0x80815920] -data/npc/model/tex/cow_3.c: - .data: [0x80815920, 0x80816B40] -data/npc/model/tex/cow_4.c: - .data: [0x80816B40, 0x80817D60] -data/npc/model/mdl/crd_1.c: - .data: [0x80817D60, 0x80819EE8] -data/npc/model/tex/crd_1.c: - .data: [0x80819F00, 0x8081AC20] -data/npc/model/tex/crd_2.c: - .data: [0x8081AC20, 0x8081B940] -data/npc/model/tex/crd_3.c: - .data: [0x8081B940, 0x8081C660] -data/npc/model/tex/crd_4.c: - .data: [0x8081C660, 0x8081D380] -data/npc/model/mdl/owl_1.c: - .data: [0x8081D380, 0x8081F9A8] -data/npc/model/tex/owl_1.c: - .data: [0x8081F9C0, 0x80820820] -data/npc/model/mdl/rcd_1.c: - .data: [0x80820820, 0x80822720] -data/npc/model/tex/rcd_1.c: - .data: [0x80822720, 0x80823580] -data/npc/model/mdl/grf_1.c: - .data: [0x80823580, 0x80825B28] -data/npc/model/tex/grf_1.c: - .data: [0x80825B40, 0x80826A60] -data/npc/model/mdl/dog_1.c: - .data: [0x80826A60, 0x80828A40] -data/npc/model/tex/dog_1.c: - .data: [0x80828A40, 0x80829C60] -data/npc/model/tex/dog_2.c: - .data: [0x80829C60, 0x8082AE80] -data/npc/model/tex/dog_3.c: - .data: [0x8082AE80, 0x8082C0A0] -data/npc/model/tex/dog_4.c: - .data: [0x8082C0A0, 0x8082D2C0] -data/npc/model/tex/dog_5.c: - .data: [0x8082D2C0, 0x8082E4E0] -data/npc/model/tex/dog_6.c: - .data: [0x8082E4E0, 0x8082F700] -data/npc/model/tex/dog_7.c: - .data: [0x8082F700, 0x80830920] -data/npc/model/tex/dog_8.c: - .data: [0x80830920, 0x80831B40] -data/npc/model/tex/dog_9.c: - .data: [0x80831B40, 0x80832D60] -data/npc/model/tex/dog_10.c: - .data: [0x80832D60, 0x80833F80] -data/npc/model/mdl/seg_1.c: - .data: [0x80833F80, 0x808362E8] -data/npc/model/tex/seg_1.c: - .data: [0x80836300, 0x80837160] -data/npc/model/mdl/duk_1.c: - .data: [0x80837160, 0x80839070] -data/npc/model/tex/duk_1.c: - .data: [0x80839080, 0x8083A2A0] -data/npc/model/tex/duk_2.c: - .data: [0x8083A2A0, 0x8083B4C0] -data/npc/model/tex/duk_11.c: - .data: [0x8083B4C0, 0x8083C6E0] -data/npc/model/tex/duk_3.c: - .data: [0x8083C6E0, 0x8083D900] -data/npc/model/tex/duk_4.c: - .data: [0x8083D900, 0x8083EB20] -data/npc/model/tex/duk_5.c: - .data: [0x8083EB20, 0x8083FD40] -data/npc/model/tex/duk_6.c: - .data: [0x8083FD40, 0x80840F60] -data/npc/model/tex/duk_7.c: - .data: [0x80840F60, 0x80842180] -data/npc/model/tex/duk_8.c: - .data: [0x80842180, 0x808433A0] -data/npc/model/tex/duk_9.c: - .data: [0x808433A0, 0x808445C0] -data/npc/model/tex/duk_10.c: - .data: [0x808445C0, 0x808457E0] -data/npc/model/mdl/elp_1.c: - .data: [0x80845830, 0x808479A0] -data/npc/model/tex/elp_1.c: - .data: [0x808479A0, 0x80848BC0] -data/npc/model/tex/elp_2.c: - .data: [0x80848BC0, 0x80849DE0] -data/npc/model/tex/elp_3.c: - .data: [0x80849DE0, 0x8084B000] -data/npc/model/tex/elp_4.c: - .data: [0x8084B000, 0x8084C220] -data/npc/model/tex/elp_5.c: - .data: [0x8084C220, 0x8084D440] -data/npc/model/tex/elp_6.c: - .data: [0x8084D440, 0x8084E660] -data/npc/model/tex/elp_7.c: - .data: [0x8084E660, 0x8084F880] -data/npc/model/mdl/flg_1.c: - .data: [0x80857D80, 0x808597E0] -data/npc/model/tex/flg_1.c: - .data: [0x808597E0, 0x8085AA00] -data/npc/model/tex/flg_2.c: - .data: [0x8085AA00, 0x8085BC20] -data/npc/model/tex/flg_11.c: - .data: [0x8085BC20, 0x8085CE40] -data/npc/model/tex/flg_12.c: - .data: [0x8085CE40, 0x8085DFE0] -data/npc/model/tex/flg_13.c: - .data: [0x8085DFE0, 0x8085F200] -data/npc/model/tex/flg_3.c: - .data: [0x8085F200, 0x80860420] -data/npc/model/tex/flg_4.c: - .data: [0x80860420, 0x80861640] -data/npc/model/tex/flg_5.c: - .data: [0x80861640, 0x80862860] -data/npc/model/tex/flg_6.c: - .data: [0x80862860, 0x80863A80] -data/npc/model/tex/flg_7.c: - .data: [0x80863A80, 0x80864CA0] -data/npc/model/tex/flg_8.c: - .data: [0x80864CA0, 0x80865EC0] -data/npc/model/tex/flg_9.c: - .data: [0x80865EC0, 0x808670E0] -data/npc/model/tex/flg_10.c: - .data: [0x808670E0, 0x80868300] -data/npc/model/mdl/rcf_1.c: - .data: [0x80868300, 0x8086A9A0] -data/npc/model/tex/rcf_1.c: - .data: [0x8086A9A0, 0x8086B8C0] -data/npc/model/mdl/gst_1.c: - .data: [0x8086CB08, 0x8086E180] -data/npc/model/tex/gst_1.c: - .data: [0x8086E180, 0x8086F120] -data/npc/model/mdl/goa_1.c: - .data: [0x80871730, 0x808736E8] -data/npc/model/tex/goa_1.c: - .data: [0x80873700, 0x80874920] -data/npc/model/tex/goa_2.c: - .data: [0x80874920, 0x80875B40] -data/npc/model/tex/goa_3.c: - .data: [0x80875B40, 0x80876D60] -data/npc/model/tex/goa_4.c: - .data: [0x80876D60, 0x80877F80] -data/npc/model/tex/goa_5.c: - .data: [0x80877F80, 0x808791A0] -data/npc/model/tex/goa_6.c: - .data: [0x808791A0, 0x8087A3C0] -data/npc/model/mdl/gor_1.c: - .data: [0x8087A3C0, 0x8087C948] -data/npc/model/tex/gor_1.c: - .data: [0x8087C960, 0x8087DB80] -data/npc/model/tex/gor_2.c: - .data: [0x8087DB80, 0x8087EDA0] -data/npc/model/tex/gor_3.c: - .data: [0x8087EDA0, 0x8087FFC0] -data/npc/model/tex/gor_4.c: - .data: [0x8087FFC0, 0x808811E0] -data/npc/model/tex/gor_5.c: - .data: [0x808811E0, 0x80882400] -data/npc/model/mdl/xct_1.c: - .data: [0x80882400, 0x80884068] -data/npc/model/tex/xct_1.c: - .data: [0x80884080, 0x80885420] -data/npc/model/mdl/bpt_1.c: - .data: [0x80894928, 0x80896A80] -data/npc/model/tex/bpt_1.c: - .data: [0x80896A80, 0x808979A0] -data/npc/model/mdl/pkn_1.c: - .data: [0x808979A0, 0x808993C8] -data/npc/model/tex/pkn_1.c: - .data: [0x808993E0, 0x80899A80] -data/npc/model/mdl/hem_1.c: - .data: [0x8089BA80, 0x8089D6E0] -data/npc/model/tex/hem_1.c: - .data: [0x8089D6E0, 0x8089DE40] -data/npc/model/mdl/hip_1.c: - .data: [0x8089DE40, 0x808A0558] -data/npc/model/tex/hip_1.c: - .data: [0x808A0560, 0x808A1280] -data/npc/model/tex/hip_2.c: - .data: [0x808A1280, 0x808A1FA0] -data/npc/model/tex/hip_3.c: - .data: [0x808A1FA0, 0x808A2CC0] -data/npc/model/tex/hip_4.c: - .data: [0x808A2CC0, 0x808A39E0] -data/npc/model/tex/hip_5.c: - .data: [0x808A39E0, 0x808A4700] -data/npc/model/tex/hip_6.c: - .data: [0x808A4700, 0x808A5420] -data/npc/model/tex/hip_7.c: - .data: [0x808A5420, 0x808A6140] -data/npc/model/mdl/hrs_1.c: - .data: [0x808A6140, 0x808A8508] -data/npc/model/tex/hrs_1.c: - .data: [0x808A8520, 0x808A92C0] -data/npc/model/tex/hrs_2.c: - .data: [0x808A92C0, 0x808AA060] -data/npc/model/tex/hrs_3.c: - .data: [0x808AA060, 0x808AAE00] -data/npc/model/tex/hrs_4.c: - .data: [0x808AAE00, 0x808ABBA0] -data/npc/model/tex/hrs_5.c: - .data: [0x808ABBA0, 0x808AC940] -data/npc/model/tex/hrs_6.c: - .data: [0x808AC940, 0x808AD6E0] -data/npc/model/tex/hrs_7.c: - .data: [0x808AD6E0, 0x808AE480] -data/npc/model/tex/hrs_8.c: - .data: [0x808AE480, 0x808AF220] -data/npc/model/mdl/plj_1.c: - .data: [0x808B8D00, 0x808BAD00] -data/npc/model/tex/plj_1.c: - .data: [0x808BAD00, 0x808BC1A0] -data/npc/model/mdl/xsq_1.c: - .data: [0x808BC1A0, 0x808BE240] -data/npc/model/tex/xsq_1.c: - .data: [0x808BE240, 0x808BF660] -data/npc/model/mdl/boa_1.c: - .data: [0x808C88A8, 0x808CAF48] -data/npc/model/tex/boa_1.c: - .data: [0x808CAF60, 0x808CBD40] -data/npc/model/mdl/kgr_1.c: - .data: [0x808CBD40, 0x808CE3C8] -data/npc/model/tex/kgr_1.c: - .data: [0x808CE3E0, 0x808CF040] -data/npc/model/tex/kgr_2.c: - .data: [0x808CF040, 0x808CFCA0] -data/npc/model/tex/kgr_3.c: - .data: [0x808CFCA0, 0x808D0900] -data/npc/model/tex/kgr_4.c: - .data: [0x808D0900, 0x808D1560] -data/npc/model/tex/kgr_5.c: - .data: [0x808D1560, 0x808D21C0] -data/npc/model/tex/kgr_6.c: - .data: [0x808D21C0, 0x808D2E20] -data/npc/model/mdl/fob_1.c: - .data: [0x808D2E20, 0x808D5360] -data/npc/model/tex/fob_1.c: - .data: [0x808D5360, 0x808D62C0] -data/npc/model/mdl/kal_1.c: - .data: [0x808D62C0, 0x808D81D8] -data/npc/model/tex/kal_1.c: - .data: [0x808D81E0, 0x808D9480] -data/npc/model/tex/kal_2.c: - .data: [0x808D9480, 0x808DA720] -data/npc/model/tex/kal_3.c: - .data: [0x808DA720, 0x808DB9C0] -data/npc/model/tex/kal_4.c: - .data: [0x808DB9C0, 0x808DCC60] -data/npc/model/tex/kal_5.c: - .data: [0x808DCC60, 0x808DDF00] -data/npc/model/tex/kal_6.c: - .data: [0x808DDF00, 0x808DF1A0] -data/npc/model/mdl/lon_1.c: - .data: [0x808E1A10, 0x808E3F78] -data/npc/model/tex/lon_1.c: - .data: [0x808E3F80, 0x808E5260] -data/npc/model/tex/lon_2.c: - .data: [0x808E5260, 0x808E6540] -data/npc/model/tex/lon_3.c: - .data: [0x808E6540, 0x808E7820] -data/npc/model/tex/lon_4.c: - .data: [0x808E7820, 0x808E8B00] -data/npc/model/mdl/mos_1.c: - .data: [0x808EAEA0, 0x808ECAC8] -data/npc/model/tex/mos_1.c: - .data: [0x808ECAE0, 0x808EDF80] -data/npc/model/mdl/mol_1.c: - .data: [0x808EDF80, 0x808EFBA8] -data/npc/model/tex/mol_1.c: - .data: [0x808EFBC0, 0x808F1060] -data/npc/model/mdl/lrc_1.c: - .data: [0x808F1060, 0x808F2F50] -data/npc/model/tex/lrc_1.c: - .data: [0x808F2F60, 0x808F3E00] -data/npc/model/mdl/mka_1.c: - .data: [0x808F3E00, 0x808F5BA8] -data/npc/model/tex/mka_1.c: - .data: [0x808F5BC0, 0x808F6060] -data/npc/model/mdl/mus_1.c: - .data: [0x808F6EA8, 0x808F90B0] -data/npc/model/tex/mus_1.c: - .data: [0x808F90C0, 0x808FA2E0] -data/npc/model/tex/mus_2.c: - .data: [0x808FA2E0, 0x808FB500] -data/npc/model/tex/mus_3.c: - .data: [0x808FB500, 0x808FC720] -data/npc/model/tex/mus_4.c: - .data: [0x808FC720, 0x808FD940] -data/npc/model/tex/mus_5.c: - .data: [0x808FD940, 0x808FEB60] -data/npc/model/tex/mus_6.c: - .data: [0x808FEB60, 0x808FFD80] -data/npc/model/tex/mus_7.c: - .data: [0x808FFD80, 0x80900FA0] -data/npc/model/tex/mus_8.c: - .data: [0x80900FA0, 0x809021C0] -data/npc/model/tex/mus_9.c: - .data: [0x809021C0, 0x809033E0] -data/npc/model/tex/mus_10.c: - .data: [0x809033E0, 0x80904600] -data/npc/model/mdl/hgh_1.c: - .data: [0x80911E70, 0x80914610] -data/npc/model/tex/hgh_1.c: - .data: [0x80914620, 0x80915500] -data/npc/model/mdl/hgs_1.c: - .data: [0x80915500, 0x80917C80] -data/npc/model/tex/hgs_1.c: - .data: [0x80917C80, 0x80918B60] -data/npc/model/mdl/oct_1.c: - .data: [0x80977CB0, 0x8097A460] -data/npc/model/tex/oct_1.c: - .data: [0x8097A460, 0x8097AE80] -data/npc/model/mdl/ost_1.c: - .data: [0x8097AE80, 0x8097D100] -data/npc/model/tex/ost_1.c: - .data: [0x8097D100, 0x8097DE60] -data/npc/model/tex/ost_2.c: - .data: [0x8097DE60, 0x8097EBC0] -data/npc/model/tex/ost_3.c: - .data: [0x8097EBC0, 0x8097F920] -data/npc/model/tex/ost_4.c: - .data: [0x8097F920, 0x80980680] -data/npc/model/mdl/pgn_1.c: - .data: [0x80980F28, 0x80983140] -data/npc/model/tex/pgn_1.c: - .data: [0x80983140, 0x80983EE0] -data/npc/model/tex/pgn_2.c: - .data: [0x80983EE0, 0x80984C80] -data/npc/model/tex/pgn_3.c: - .data: [0x80984C80, 0x80985A20] -data/npc/model/tex/pgn_4.c: - .data: [0x80985A20, 0x809867C0] -data/npc/model/tex/pgn_5.c: - .data: [0x809867C0, 0x80987560] -data/npc/model/tex/pgn_6.c: - .data: [0x80987560, 0x80988300] -data/npc/model/tex/pgn_7.c: - .data: [0x80988300, 0x809890A0] -data/npc/model/tex/pgn_8.c: - .data: [0x809890A0, 0x80989E40] -data/npc/model/mdl/pig_1.c: - .data: [0x80989E40, 0x8098BAC0] -data/npc/model/tex/pig_1.c: - .data: [0x8098BAC0, 0x8098CC60] -data/npc/model/tex/pig_2.c: - .data: [0x8098CC60, 0x8098DE00] -data/npc/model/tex/pig_11.c: - .data: [0x8098DE00, 0x8098EFA0] -data/npc/model/tex/pig_3.c: - .data: [0x8098EFA0, 0x80990140] -data/npc/model/tex/pig_4.c: - .data: [0x80990140, 0x809912E0] -data/npc/model/tex/pig_5.c: - .data: [0x809912E0, 0x80992480] -data/npc/model/tex/pig_6.c: - .data: [0x80992480, 0x80993620] -data/npc/model/tex/pig_7.c: - .data: [0x80993620, 0x809947C0] -data/npc/model/tex/pig_8.c: - .data: [0x809947C0, 0x80995960] -data/npc/model/tex/pig_9.c: - .data: [0x80995960, 0x80996B00] -data/npc/model/tex/pig_10.c: - .data: [0x80996B00, 0x80997CA0] -data/npc/model/mdl/pla_1.c: - .data: [0x80997CA0, 0x8099A318] -data/npc/model/mdl/plc_1.c: - .data: [0x8099A318, 0x8099C410] -data/npc/model/tex/plc_1.c: - .data: [0x8099C420, 0x8099D900] -data/npc/model/tex/pla_1.c: - .data: [0x8099D900, 0x8099ECA0] -data/npc/model/mdl/pga_1.c: - .data: [0x8099ECA0, 0x809A11A0] -data/npc/model/tex/pga_1.c: - .data: [0x809A11A0, 0x809A2000] -data/npc/model/mdl/pgb_1.c: - .data: [0x809A2000, 0x809A4450] -data/npc/model/tex/pgb_1.c: - .data: [0x809A4460, 0x809A5400] -data/npc/model/mdl/plb_1.c: - .data: [0x809A5400, 0x809A7980] -data/npc/model/tex/plb_1.c: - .data: [0x809A7980, 0x809A8920] -data/npc/model/mdl/rbt_1.c: - .data: [0x809A8920, 0x809AA7B8] -data/npc/model/tex/rbt_1.c: - .data: [0x809AA7C0, 0x809AB9E0] -data/npc/model/tex/rbt_2.c: - .data: [0x809AB9E0, 0x809ACC00] -data/npc/model/tex/rbt_11.c: - .data: [0x809ACC00, 0x809ADE20] -data/npc/model/tex/rbt_3.c: - .data: [0x809ADE20, 0x809AF040] -data/npc/model/tex/rbt_4.c: - .data: [0x809AF040, 0x809B0260] -data/npc/model/tex/rbt_5.c: - .data: [0x809B0260, 0x809B1480] -data/npc/model/tex/rbt_6.c: - .data: [0x809B1480, 0x809B26A0] -data/npc/model/tex/rbt_7.c: - .data: [0x809B26A0, 0x809B38C0] -data/npc/model/tex/rbt_8.c: - .data: [0x809B38C0, 0x809B4AE0] -data/npc/model/tex/rbt_9.c: - .data: [0x809B4AE0, 0x809B5D00] -data/npc/model/tex/rbt_10.c: - .data: [0x809B5D00, 0x809B6F20] -data/npc/model/mdl/mob_1.c: - .data: [0x809B6F20, 0x809B8AA0] -data/npc/model/tex/mob_1.c: - .data: [0x809B8AA0, 0x809B9F40] -data/npc/model/mdl/rhn_1.c: - .data: [0x809BA340, 0x809BCAF0] -data/npc/model/tex/rhn_1.c: - .data: [0x809BCB00, 0x809BDD20] -data/npc/model/tex/rhn_2.c: - .data: [0x809BDD20, 0x809BEF40] -data/npc/model/tex/rhn_3.c: - .data: [0x809BEF40, 0x809C0160] -data/npc/model/tex/rhn_4.c: - .data: [0x809C0160, 0x809C1380] -data/npc/model/mdl/snt_1.c: - .data: [0x809C9148, 0x809CAD30] -data/npc/model/tex/snt_1.c: - .data: [0x809CAD40, 0x809CC1E0] -data/npc/model/mdl/wip_1.c: - .data: [0x809CC1E0, 0x809CE170] -data/npc/model/tex/wip_1.c: - .data: [0x809CE180, 0x809CF560] -data/npc/model/mdl/shp_1.c: - .data: [0x809CF560, 0x809D11A0] -data/npc/model/tex/shp_1.c: - .data: [0x809D11A0, 0x809D23C0] -data/npc/model/tex/shp_2.c: - .data: [0x809D23C0, 0x809D35E0] -data/npc/model/tex/shp_3.c: - .data: [0x809D35E0, 0x809D4800] -data/npc/model/tex/shp_4.c: - .data: [0x809D4800, 0x809D5A20] -data/npc/model/tex/shp_5.c: - .data: [0x809D5A20, 0x809D6C40] -data/npc/model/tex/shp_6.c: - .data: [0x809D6C40, 0x809D7E60] -data/npc/model/mdl/rcn_1.c: - .data: [0x809D7E60, 0x809D9E80] -data/npc/model/tex/rcn_1.c: - .data: [0x809D9E80, 0x809DACE0] -data/npc/model/mdl/kab_1.c: - .data: [0x80A001B0, 0x80A02398] -data/npc/model/tex/kab_1.c: - .data: [0x80A023A0, 0x80A02FC0] -data/npc/model/mdl/ttl_1.c: - .data: [0x80B38FC0, 0x80B3ADD8] -data/npc/model/tex/ttl_1.c: - .data: [0x80B3ADE0, 0x80B3BD40] -data/npc/model/mdl/squ_1.c: - .data: [0x80B3BD40, 0x80B3DDE0] -data/npc/model/tex/squ_1.c: - .data: [0x80B3DDE0, 0x80B3F000] -data/npc/model/tex/squ_2.c: - .data: [0x80B3F000, 0x80B40220] -data/npc/model/tex/squ_11.c: - .data: [0x80B40220, 0x80B41440] -data/npc/model/tex/squ_3.c: - .data: [0x80B41440, 0x80B42660] -data/npc/model/tex/squ_4.c: - .data: [0x80B42660, 0x80B43880] -data/npc/model/tex/squ_5.c: - .data: [0x80B43880, 0x80B44AA0] -data/npc/model/tex/squ_6.c: - .data: [0x80B44AA0, 0x80B45CC0] -data/npc/model/tex/squ_7.c: - .data: [0x80B45CC0, 0x80B46EE0] -data/npc/model/tex/squ_8.c: - .data: [0x80B46EE0, 0x80B48100] -data/npc/model/tex/squ_9.c: - .data: [0x80B48100, 0x80B49320] -data/npc/model/tex/squ_10.c: - .data: [0x80B49320, 0x80B4A540] -data/npc/model/mdl/mnk_1.c: - .data: [0x80B4A540, 0x80B4C7F8] -data/npc/model/tex/mnk_1.c: - .data: [0x80B4C800, 0x80B4DC20] -data/npc/model/mdl/rcs_1.c: - .data: [0x80C09AC0, 0x80C0BBA8] -data/npc/model/tex/rcs_1.c: - .data: [0x80C0BBC0, 0x80C0C960] -data/npc/model/mdl/tig_1.c: - .data: [0x80C2C9F8, 0x80C2EE88] -data/npc/model/tex/tig_1.c: - .data: [0x80C2EEA0, 0x80C2FC40] -data/npc/model/tex/tig_2.c: - .data: [0x80C2FC40, 0x80C309E0] -data/npc/model/tex/tig_3.c: - .data: [0x80C309E0, 0x80C31780] -data/npc/model/tex/tig_4.c: - .data: [0x80C31780, 0x80C32520] -data/npc/model/mdl/end_1.c: - .data: [0x80C45A08, 0x80C480A8] -data/npc/model/tex/end_1.c: - .data: [0x80C480C0, 0x80C493A0] -data/npc/model/mdl/tuk_1.c: - .data: [0x80C4B710, 0x80C4E080] -data/npc/model/tex/tuk_1.c: - .data: [0x80C4E080, 0x80C4EF20] -data/npc/model/mdl/wol_1.c: - .data: [0x80C4F588, 0x80C51650] -data/npc/model/tex/wol_1.c: - .data: [0x80C51660, 0x80C52280] -data/npc/model/tex/wol_2.c: - .data: [0x80C52280, 0x80C52EA0] -data/npc/model/tex/wol_3.c: - .data: [0x80C52EA0, 0x80C53AC0] -data/npc/model/tex/wol_4.c: - .data: [0x80C53AC0, 0x80C546E0] -data/npc/model/tex/wol_5.c: - .data: [0x80C546E0, 0x80C55300] -data/npc/model/tex/wol_6.c: - .data: [0x80C55300, 0x80C55F20] - - + .data: [0x806FA140, 0x806FB360] # dataobject.obj files data/field/bg/flower/obj_flower.c: .data: [0x8074FE80, 0x807508C0] data/field/bg/flower/obj_flower_leaf.c: .data: [0x807508C0, 0x80751140] +data/npc/model/mdl/pbr_1.c: + .data: [0x8076DFA8, 0x80770178] +data/npc/model/tex/pbr_1.c: + .data: [0x80770180, 0x80770EA0] +data/npc/model/tex/pbr_2.c: + .data: [0x80770EA0, 0x80771BC0] +data/npc/model/tex/pbr_3.c: + .data: [0x80771BC0, 0x807728E0] +data/npc/model/tex/pbr_4.c: + .data: [0x807728E0, 0x80773600] +data/npc/model/tex/pbr_5.c: + .data: [0x80773600, 0x80774320] +data/npc/model/mdl/brd_1.c: + .data: [0x80774320, 0x80776358] +data/npc/model/tex/brd_1.c: + .data: [0x80776360, 0x80777080] +data/npc/model/tex/brd_2.c: + .data: [0x80777080, 0x80777DA0] +data/npc/model/tex/brd_11.c: + .data: [0x80777DA0, 0x80778AC0] +data/npc/model/tex/brd_3.c: + .data: [0x80778AC0, 0x807797E0] +data/npc/model/tex/brd_4.c: + .data: [0x807797E0, 0x8077A500] +data/npc/model/tex/brd_5.c: + .data: [0x8077A500, 0x8077B220] +data/npc/model/tex/brd_6.c: + .data: [0x8077B220, 0x8077BF40] +data/npc/model/tex/brd_7.c: + .data: [0x8077BF40, 0x8077CC60] +data/npc/model/tex/brd_8.c: + .data: [0x8077CC60, 0x8077D980] +data/npc/model/tex/brd_9.c: + .data: [0x8077D980, 0x8077E6A0] +data/npc/model/tex/brd_10.c: + .data: [0x8077E6A0, 0x8077F3C0] +data/npc/model/mdl/fox_1.c: + .data: [0x807D5FE8, 0x807D8098] +data/npc/model/tex/fox_1.c: + .data: [0x807D80A0, 0x807D8FC0] +data/npc/model/mdl/bul_1.c: + .data: [0x807D8FC0, 0x807DAFB0] +data/npc/model/tex/bul_1.c: + .data: [0x807DAFC0, 0x807DC1E0] +data/npc/model/tex/bul_2.c: + .data: [0x807DC1E0, 0x807DD400] +data/npc/model/tex/bul_3.c: + .data: [0x807DD400, 0x807DE620] +data/npc/model/tex/bul_4.c: + .data: [0x807DE620, 0x807DF840] +data/npc/model/mdl/cml_1.c: + .data: [0x807DF840, 0x807E1EA8] +data/npc/model/tex/cml_1.c: + .data: [0x807E1EC0, 0x807E2E60] +data/npc/model/mdl/cat_1.c: + .data: [0x807E2E60, 0x807E4BB0] +data/npc/model/tex/cat_1.c: + .data: [0x807E4BC0, 0x807E5DE0] +data/npc/model/tex/cat_2.c: + .data: [0x807E5DE0, 0x807E7000] +data/npc/model/tex/cat_11.c: + .data: [0x807E7000, 0x807E8220] +data/npc/model/tex/cat_12.c: + .data: [0x807E8220, 0x807E9440] +data/npc/model/tex/cat_13.c: + .data: [0x807E9440, 0x807EA660] +data/npc/model/tex/cat_14.c: + .data: [0x807EA660, 0x807EB880] +data/npc/model/tex/cat_15.c: + .data: [0x807EB880, 0x807ECAA0] +data/npc/model/tex/cat_3.c: + .data: [0x807ECAA0, 0x807EDCC0] +data/npc/model/tex/cat_4.c: + .data: [0x807EDCC0, 0x807EEEE0] +data/npc/model/tex/cat_5.c: + .data: [0x807EEEE0, 0x807F0100] +data/npc/model/tex/cat_6.c: + .data: [0x807F0100, 0x807F1320] +data/npc/model/tex/cat_7.c: + .data: [0x807F1320, 0x807F2540] +data/npc/model/tex/cat_8.c: + .data: [0x807F2540, 0x807F3760] +data/npc/model/tex/cat_9.c: + .data: [0x807F3760, 0x807F4980] +data/npc/model/tex/cat_10.c: + .data: [0x807F4980, 0x807F5BA0] +data/npc/model/mdl/chn_1.c: + .data: [0x807F5BA0, 0x807F8348] +data/npc/model/tex/chn_1.c: + .data: [0x807F8360, 0x807F9040] +data/npc/model/tex/chn_2.c: + .data: [0x807F9040, 0x807F9D20] +data/npc/model/tex/chn_3.c: + .data: [0x807F9D20, 0x807FAA00] +data/npc/model/tex/chn_4.c: + .data: [0x807FAA00, 0x807FB6E0] +data/npc/model/tex/chn_5.c: + .data: [0x807FB6E0, 0x807FC3C0] +data/npc/model/tex/chn_6.c: + .data: [0x807FC3C0, 0x807FD0A0] +data/npc/model/tex/chn_7.c: + .data: [0x807FD0A0, 0x807FDD80] +data/npc/model/tex/chn_8.c: + .data: [0x807FDD80, 0x807FEA60] +data/npc/model/tex/chn_9.c: + .data: [0x807FEA60, 0x807FF740] +data/npc/model/mdl/cbr_1.c: + .data: [0x807FF740, 0x80801620] +data/npc/model/tex/cbr_1.c: + .data: [0x80801620, 0x80802840] +data/npc/model/tex/cbr_2.c: + .data: [0x80802840, 0x80803A60] +data/npc/model/tex/cbr_11.c: + .data: [0x80803A60, 0x80804C80] +data/npc/model/tex/cbr_3.c: + .data: [0x80804C80, 0x80805EA0] +data/npc/model/tex/cbr_4.c: + .data: [0x80805EA0, 0x808070C0] +data/npc/model/tex/cbr_5.c: + .data: [0x808070C0, 0x808082E0] +data/npc/model/tex/cbr_6.c: + .data: [0x808082E0, 0x80809500] +data/npc/model/tex/cbr_7.c: + .data: [0x80809500, 0x8080A720] +data/npc/model/tex/cbr_8.c: + .data: [0x8080A720, 0x8080B940] +data/npc/model/tex/cbr_9.c: + .data: [0x8080B940, 0x8080CB60] +data/npc/model/tex/cbr_10.c: + .data: [0x8080CB60, 0x8080DD80] data/combi/data_combi.c: .data: [0x8080DD80, 0x8080E628] +data/npc/model/mdl/rcc_1.c: + .data: [0x8080E628, 0x80810608] +data/npc/model/tex/rcc_1.c: + .data: [0x80810620, 0x80811500] +data/npc/model/mdl/cow_1.c: + .data: [0x80811500, 0x808134E0] +data/npc/model/tex/cow_1.c: + .data: [0x808134E0, 0x80814700] +data/npc/model/tex/cow_2.c: + .data: [0x80814700, 0x80815920] +data/npc/model/tex/cow_3.c: + .data: [0x80815920, 0x80816B40] +data/npc/model/tex/cow_4.c: + .data: [0x80816B40, 0x80817D60] +data/npc/model/mdl/crd_1.c: + .data: [0x80817D60, 0x80819EE8] +data/npc/model/tex/crd_1.c: + .data: [0x80819F00, 0x8081AC20] +data/npc/model/tex/crd_2.c: + .data: [0x8081AC20, 0x8081B940] +data/npc/model/tex/crd_3.c: + .data: [0x8081B940, 0x8081C660] +data/npc/model/tex/crd_4.c: + .data: [0x8081C660, 0x8081D380] +data/npc/model/mdl/owl_1.c: + .data: [0x8081D380, 0x8081F9A8] +data/npc/model/tex/owl_1.c: + .data: [0x8081F9C0, 0x80820820] +data/npc/model/mdl/rcd_1.c: + .data: [0x80820820, 0x80822720] +data/npc/model/tex/rcd_1.c: + .data: [0x80822720, 0x80823580] +data/npc/model/mdl/grf_1.c: + .data: [0x80823580, 0x80825B28] +data/npc/model/tex/grf_1.c: + .data: [0x80825B40, 0x80826A60] +data/npc/model/mdl/dog_1.c: + .data: [0x80826A60, 0x80828A40] +data/npc/model/tex/dog_1.c: + .data: [0x80828A40, 0x80829C60] +data/npc/model/tex/dog_2.c: + .data: [0x80829C60, 0x8082AE80] +data/npc/model/tex/dog_3.c: + .data: [0x8082AE80, 0x8082C0A0] +data/npc/model/tex/dog_4.c: + .data: [0x8082C0A0, 0x8082D2C0] +data/npc/model/tex/dog_5.c: + .data: [0x8082D2C0, 0x8082E4E0] +data/npc/model/tex/dog_6.c: + .data: [0x8082E4E0, 0x8082F700] +data/npc/model/tex/dog_7.c: + .data: [0x8082F700, 0x80830920] +data/npc/model/tex/dog_8.c: + .data: [0x80830920, 0x80831B40] +data/npc/model/tex/dog_9.c: + .data: [0x80831B40, 0x80832D60] +data/npc/model/tex/dog_10.c: + .data: [0x80832D60, 0x80833F80] +data/npc/model/mdl/seg_1.c: + .data: [0x80833F80, 0x808362E8] +data/npc/model/tex/seg_1.c: + .data: [0x80836300, 0x80837160] +data/npc/model/mdl/duk_1.c: + .data: [0x80837160, 0x80839070] +data/npc/model/tex/duk_1.c: + .data: [0x80839080, 0x8083A2A0] +data/npc/model/tex/duk_2.c: + .data: [0x8083A2A0, 0x8083B4C0] +data/npc/model/tex/duk_11.c: + .data: [0x8083B4C0, 0x8083C6E0] +data/npc/model/tex/duk_3.c: + .data: [0x8083C6E0, 0x8083D900] +data/npc/model/tex/duk_4.c: + .data: [0x8083D900, 0x8083EB20] +data/npc/model/tex/duk_5.c: + .data: [0x8083EB20, 0x8083FD40] +data/npc/model/tex/duk_6.c: + .data: [0x8083FD40, 0x80840F60] +data/npc/model/tex/duk_7.c: + .data: [0x80840F60, 0x80842180] +data/npc/model/tex/duk_8.c: + .data: [0x80842180, 0x808433A0] +data/npc/model/tex/duk_9.c: + .data: [0x808433A0, 0x808445C0] +data/npc/model/tex/duk_10.c: + .data: [0x808445C0, 0x808457E0] +data/npc/model/mdl/elp_1.c: + .data: [0x80845830, 0x808479A0] +data/npc/model/tex/elp_1.c: + .data: [0x808479A0, 0x80848BC0] +data/npc/model/tex/elp_2.c: + .data: [0x80848BC0, 0x80849DE0] +data/npc/model/tex/elp_3.c: + .data: [0x80849DE0, 0x8084B000] +data/npc/model/tex/elp_4.c: + .data: [0x8084B000, 0x8084C220] +data/npc/model/tex/elp_5.c: + .data: [0x8084C220, 0x8084D440] +data/npc/model/tex/elp_6.c: + .data: [0x8084D440, 0x8084E660] +data/npc/model/tex/elp_7.c: + .data: [0x8084E660, 0x8084F880] +data/npc/model/mdl/flg_1.c: + .data: [0x80857D80, 0x808597E0] +data/npc/model/tex/flg_1.c: + .data: [0x808597E0, 0x8085AA00] +data/npc/model/tex/flg_2.c: + .data: [0x8085AA00, 0x8085BC20] +data/npc/model/tex/flg_11.c: + .data: [0x8085BC20, 0x8085CE40] +data/npc/model/tex/flg_12.c: + .data: [0x8085CE40, 0x8085DFE0] +data/npc/model/tex/flg_13.c: + .data: [0x8085DFE0, 0x8085F200] +data/npc/model/tex/flg_3.c: + .data: [0x8085F200, 0x80860420] +data/npc/model/tex/flg_4.c: + .data: [0x80860420, 0x80861640] +data/npc/model/tex/flg_5.c: + .data: [0x80861640, 0x80862860] +data/npc/model/tex/flg_6.c: + .data: [0x80862860, 0x80863A80] +data/npc/model/tex/flg_7.c: + .data: [0x80863A80, 0x80864CA0] +data/npc/model/tex/flg_8.c: + .data: [0x80864CA0, 0x80865EC0] +data/npc/model/tex/flg_9.c: + .data: [0x80865EC0, 0x808670E0] +data/npc/model/tex/flg_10.c: + .data: [0x808670E0, 0x80868300] +data/npc/model/mdl/rcf_1.c: + .data: [0x80868300, 0x8086A9A0] +data/npc/model/tex/rcf_1.c: + .data: [0x8086A9A0, 0x8086B8C0] +data/npc/model/mdl/gst_1.c: + .data: [0x8086CB08, 0x8086E180] +data/npc/model/tex/gst_1.c: + .data: [0x8086E180, 0x8086F120] +data/npc/model/mdl/goa_1.c: + .data: [0x80871730, 0x808736E8] +data/npc/model/tex/goa_1.c: + .data: [0x80873700, 0x80874920] +data/npc/model/tex/goa_2.c: + .data: [0x80874920, 0x80875B40] +data/npc/model/tex/goa_3.c: + .data: [0x80875B40, 0x80876D60] +data/npc/model/tex/goa_4.c: + .data: [0x80876D60, 0x80877F80] +data/npc/model/tex/goa_5.c: + .data: [0x80877F80, 0x808791A0] +data/npc/model/tex/goa_6.c: + .data: [0x808791A0, 0x8087A3C0] +data/npc/model/mdl/gor_1.c: + .data: [0x8087A3C0, 0x8087C948] +data/npc/model/tex/gor_1.c: + .data: [0x8087C960, 0x8087DB80] +data/npc/model/tex/gor_2.c: + .data: [0x8087DB80, 0x8087EDA0] +data/npc/model/tex/gor_3.c: + .data: [0x8087EDA0, 0x8087FFC0] +data/npc/model/tex/gor_4.c: + .data: [0x8087FFC0, 0x808811E0] +data/npc/model/tex/gor_5.c: + .data: [0x808811E0, 0x80882400] +data/npc/model/mdl/xct_1.c: + .data: [0x80882400, 0x80884068] +data/npc/model/tex/xct_1.c: + .data: [0x80884080, 0x80885420] +data/npc/model/mdl/bpt_1.c: + .data: [0x80894928, 0x80896A80] +data/npc/model/tex/bpt_1.c: + .data: [0x80896A80, 0x808979A0] +data/npc/model/mdl/pkn_1.c: + .data: [0x808979A0, 0x808993C8] +data/npc/model/tex/pkn_1.c: + .data: [0x808993E0, 0x80899A80] +data/npc/model/mdl/hem_1.c: + .data: [0x8089BA80, 0x8089D6E0] +data/npc/model/tex/hem_1.c: + .data: [0x8089D6E0, 0x8089DE40] +data/npc/model/mdl/hip_1.c: + .data: [0x8089DE40, 0x808A0558] +data/npc/model/tex/hip_1.c: + .data: [0x808A0560, 0x808A1280] +data/npc/model/tex/hip_2.c: + .data: [0x808A1280, 0x808A1FA0] +data/npc/model/tex/hip_3.c: + .data: [0x808A1FA0, 0x808A2CC0] +data/npc/model/tex/hip_4.c: + .data: [0x808A2CC0, 0x808A39E0] +data/npc/model/tex/hip_5.c: + .data: [0x808A39E0, 0x808A4700] +data/npc/model/tex/hip_6.c: + .data: [0x808A4700, 0x808A5420] +data/npc/model/tex/hip_7.c: + .data: [0x808A5420, 0x808A6140] +data/npc/model/mdl/hrs_1.c: + .data: [0x808A6140, 0x808A8508] +data/npc/model/tex/hrs_1.c: + .data: [0x808A8520, 0x808A92C0] +data/npc/model/tex/hrs_2.c: + .data: [0x808A92C0, 0x808AA060] +data/npc/model/tex/hrs_3.c: + .data: [0x808AA060, 0x808AAE00] +data/npc/model/tex/hrs_4.c: + .data: [0x808AAE00, 0x808ABBA0] +data/npc/model/tex/hrs_5.c: + .data: [0x808ABBA0, 0x808AC940] +data/npc/model/tex/hrs_6.c: + .data: [0x808AC940, 0x808AD6E0] +data/npc/model/tex/hrs_7.c: + .data: [0x808AD6E0, 0x808AE480] +data/npc/model/tex/hrs_8.c: + .data: [0x808AE480, 0x808AF220] +data/npc/model/mdl/plj_1.c: + .data: [0x808B8D00, 0x808BAD00] +data/npc/model/tex/plj_1.c: + .data: [0x808BAD00, 0x808BC1A0] +data/npc/model/mdl/xsq_1.c: + .data: [0x808BC1A0, 0x808BE240] +data/npc/model/tex/xsq_1.c: + .data: [0x808BE240, 0x808BF660] data/item/item_name.c: .data: [0x808BF660, 0x808C8830] +data/npc/model/mdl/boa_1.c: + .data: [0x808C88A8, 0x808CAF48] +data/npc/model/tex/boa_1.c: + .data: [0x808CAF60, 0x808CBD40] +data/npc/model/mdl/kgr_1.c: + .data: [0x808CBD40, 0x808CE3C8] +data/npc/model/tex/kgr_1.c: + .data: [0x808CE3E0, 0x808CF040] +data/npc/model/tex/kgr_2.c: + .data: [0x808CF040, 0x808CFCA0] +data/npc/model/tex/kgr_3.c: + .data: [0x808CFCA0, 0x808D0900] +data/npc/model/tex/kgr_4.c: + .data: [0x808D0900, 0x808D1560] +data/npc/model/tex/kgr_5.c: + .data: [0x808D1560, 0x808D21C0] +data/npc/model/tex/kgr_6.c: + .data: [0x808D21C0, 0x808D2E20] +data/npc/model/mdl/fob_1.c: + .data: [0x808D2E20, 0x808D5360] +data/npc/model/tex/fob_1.c: + .data: [0x808D5360, 0x808D62C0] +data/npc/model/mdl/kal_1.c: + .data: [0x808D62C0, 0x808D81D8] +data/npc/model/tex/kal_1.c: + .data: [0x808D81E0, 0x808D9480] +data/npc/model/tex/kal_2.c: + .data: [0x808D9480, 0x808DA720] +data/npc/model/tex/kal_3.c: + .data: [0x808DA720, 0x808DB9C0] +data/npc/model/tex/kal_4.c: + .data: [0x808DB9C0, 0x808DCC60] +data/npc/model/tex/kal_5.c: + .data: [0x808DCC60, 0x808DDF00] +data/npc/model/tex/kal_6.c: + .data: [0x808DDF00, 0x808DF1A0] +data/npc/model/mdl/lon_1.c: + .data: [0x808E1A10, 0x808E3F78] +data/npc/model/tex/lon_1.c: + .data: [0x808E3F80, 0x808E5260] +data/npc/model/tex/lon_2.c: + .data: [0x808E5260, 0x808E6540] +data/npc/model/tex/lon_3.c: + .data: [0x808E6540, 0x808E7820] +data/npc/model/tex/lon_4.c: + .data: [0x808E7820, 0x808E8B00] +data/npc/model/mdl/mos_1.c: + .data: [0x808EAEA0, 0x808ECAC8] +data/npc/model/tex/mos_1.c: + .data: [0x808ECAE0, 0x808EDF80] +data/npc/model/mdl/mol_1.c: + .data: [0x808EDF80, 0x808EFBA8] +data/npc/model/tex/mol_1.c: + .data: [0x808EFBC0, 0x808F1060] +data/npc/model/mdl/lrc_1.c: + .data: [0x808F1060, 0x808F2F50] +data/npc/model/tex/lrc_1.c: + .data: [0x808F2F60, 0x808F3E00] +data/npc/model/mdl/mka_1.c: + .data: [0x808F3E00, 0x808F5BA8] +data/npc/model/tex/mka_1.c: + .data: [0x808F5BC0, 0x808F6060] +data/npc/model/mdl/mus_1.c: + .data: [0x808F6EA8, 0x808F90B0] +data/npc/model/tex/mus_1.c: + .data: [0x808F90C0, 0x808FA2E0] +data/npc/model/tex/mus_2.c: + .data: [0x808FA2E0, 0x808FB500] +data/npc/model/tex/mus_3.c: + .data: [0x808FB500, 0x808FC720] +data/npc/model/tex/mus_4.c: + .data: [0x808FC720, 0x808FD940] +data/npc/model/tex/mus_5.c: + .data: [0x808FD940, 0x808FEB60] +data/npc/model/tex/mus_6.c: + .data: [0x808FEB60, 0x808FFD80] +data/npc/model/tex/mus_7.c: + .data: [0x808FFD80, 0x80900FA0] +data/npc/model/tex/mus_8.c: + .data: [0x80900FA0, 0x809021C0] +data/npc/model/tex/mus_9.c: + .data: [0x809021C0, 0x809033E0] +data/npc/model/tex/mus_10.c: + .data: [0x809033E0, 0x80904600] data/model/mural/obj_mural.c: .data: [0x80904600, 0x80904700] +data/npc/model/mdl/hgh_1.c: + .data: [0x80911E70, 0x80914610] +data/npc/model/tex/hgh_1.c: + .data: [0x80914620, 0x80915500] +data/npc/model/mdl/hgs_1.c: + .data: [0x80915500, 0x80917C80] +data/npc/model/tex/hgs_1.c: + .data: [0x80917C80, 0x80918B60] data/npc/default_list.c: .data: [0x8096CD90, 0x8096D328] data/npc/npc_draw_data.c: @@ -1912,6 +1701,196 @@ data/npc/grow_list.c: .data: [0x80977450, 0x80977540] data/npc/house_list.c: .data: [0x80977540, 0x80977CB0] +data/npc/model/mdl/oct_1.c: + .data: [0x80977CB0, 0x8097A460] +data/npc/model/tex/oct_1.c: + .data: [0x8097A460, 0x8097AE80] +data/npc/model/mdl/ost_1.c: + .data: [0x8097AE80, 0x8097D100] +data/npc/model/tex/ost_1.c: + .data: [0x8097D100, 0x8097DE60] +data/npc/model/tex/ost_2.c: + .data: [0x8097DE60, 0x8097EBC0] +data/npc/model/tex/ost_3.c: + .data: [0x8097EBC0, 0x8097F920] +data/npc/model/tex/ost_4.c: + .data: [0x8097F920, 0x80980680] +data/npc/model/mdl/pgn_1.c: + .data: [0x80980F28, 0x80983140] +data/npc/model/tex/pgn_1.c: + .data: [0x80983140, 0x80983EE0] +data/npc/model/tex/pgn_2.c: + .data: [0x80983EE0, 0x80984C80] +data/npc/model/tex/pgn_3.c: + .data: [0x80984C80, 0x80985A20] +data/npc/model/tex/pgn_4.c: + .data: [0x80985A20, 0x809867C0] +data/npc/model/tex/pgn_5.c: + .data: [0x809867C0, 0x80987560] +data/npc/model/tex/pgn_6.c: + .data: [0x80987560, 0x80988300] +data/npc/model/tex/pgn_7.c: + .data: [0x80988300, 0x809890A0] +data/npc/model/tex/pgn_8.c: + .data: [0x809890A0, 0x80989E40] +data/npc/model/mdl/pig_1.c: + .data: [0x80989E40, 0x8098BAC0] +data/npc/model/tex/pig_1.c: + .data: [0x8098BAC0, 0x8098CC60] +data/npc/model/tex/pig_2.c: + .data: [0x8098CC60, 0x8098DE00] +data/npc/model/tex/pig_11.c: + .data: [0x8098DE00, 0x8098EFA0] +data/npc/model/tex/pig_3.c: + .data: [0x8098EFA0, 0x80990140] +data/npc/model/tex/pig_4.c: + .data: [0x80990140, 0x809912E0] +data/npc/model/tex/pig_5.c: + .data: [0x809912E0, 0x80992480] +data/npc/model/tex/pig_6.c: + .data: [0x80992480, 0x80993620] +data/npc/model/tex/pig_7.c: + .data: [0x80993620, 0x809947C0] +data/npc/model/tex/pig_8.c: + .data: [0x809947C0, 0x80995960] +data/npc/model/tex/pig_9.c: + .data: [0x80995960, 0x80996B00] +data/npc/model/tex/pig_10.c: + .data: [0x80996B00, 0x80997CA0] +data/npc/model/mdl/pla_1.c: + .data: [0x80997CA0, 0x8099A318] +data/npc/model/mdl/plc_1.c: + .data: [0x8099A318, 0x8099C410] +data/npc/model/tex/plc_1.c: + .data: [0x8099C420, 0x8099D900] +data/npc/model/tex/pla_1.c: + .data: [0x8099D900, 0x8099ECA0] +data/npc/model/mdl/pga_1.c: + .data: [0x8099ECA0, 0x809A11A0] +data/npc/model/tex/pga_1.c: + .data: [0x809A11A0, 0x809A2000] +data/npc/model/mdl/pgb_1.c: + .data: [0x809A2000, 0x809A4450] +data/npc/model/tex/pgb_1.c: + .data: [0x809A4460, 0x809A5400] +data/npc/model/mdl/plb_1.c: + .data: [0x809A5400, 0x809A7980] +data/npc/model/tex/plb_1.c: + .data: [0x809A7980, 0x809A8920] +data/npc/model/mdl/rbt_1.c: + .data: [0x809A8920, 0x809AA7B8] +data/npc/model/tex/rbt_1.c: + .data: [0x809AA7C0, 0x809AB9E0] +data/npc/model/tex/rbt_2.c: + .data: [0x809AB9E0, 0x809ACC00] +data/npc/model/tex/rbt_11.c: + .data: [0x809ACC00, 0x809ADE20] +data/npc/model/tex/rbt_3.c: + .data: [0x809ADE20, 0x809AF040] +data/npc/model/tex/rbt_4.c: + .data: [0x809AF040, 0x809B0260] +data/npc/model/tex/rbt_5.c: + .data: [0x809B0260, 0x809B1480] +data/npc/model/tex/rbt_6.c: + .data: [0x809B1480, 0x809B26A0] +data/npc/model/tex/rbt_7.c: + .data: [0x809B26A0, 0x809B38C0] +data/npc/model/tex/rbt_8.c: + .data: [0x809B38C0, 0x809B4AE0] +data/npc/model/tex/rbt_9.c: + .data: [0x809B4AE0, 0x809B5D00] +data/npc/model/tex/rbt_10.c: + .data: [0x809B5D00, 0x809B6F20] +data/npc/model/mdl/mob_1.c: + .data: [0x809B6F20, 0x809B8AA0] +data/npc/model/tex/mob_1.c: + .data: [0x809B8AA0, 0x809B9F40] +data/npc/model/mdl/rhn_1.c: + .data: [0x809BA340, 0x809BCAF0] +data/npc/model/tex/rhn_1.c: + .data: [0x809BCB00, 0x809BDD20] +data/npc/model/tex/rhn_2.c: + .data: [0x809BDD20, 0x809BEF40] +data/npc/model/tex/rhn_3.c: + .data: [0x809BEF40, 0x809C0160] +data/npc/model/tex/rhn_4.c: + .data: [0x809C0160, 0x809C1380] +data/npc/model/mdl/snt_1.c: + .data: [0x809C9148, 0x809CAD30] +data/npc/model/tex/snt_1.c: + .data: [0x809CAD40, 0x809CC1E0] +data/npc/model/mdl/wip_1.c: + .data: [0x809CC1E0, 0x809CE170] +data/npc/model/tex/wip_1.c: + .data: [0x809CE180, 0x809CF560] +data/npc/model/mdl/shp_1.c: + .data: [0x809CF560, 0x809D11A0] +data/npc/model/tex/shp_1.c: + .data: [0x809D11A0, 0x809D23C0] +data/npc/model/tex/shp_2.c: + .data: [0x809D23C0, 0x809D35E0] +data/npc/model/tex/shp_3.c: + .data: [0x809D35E0, 0x809D4800] +data/npc/model/tex/shp_4.c: + .data: [0x809D4800, 0x809D5A20] +data/npc/model/tex/shp_5.c: + .data: [0x809D5A20, 0x809D6C40] +data/npc/model/tex/shp_6.c: + .data: [0x809D6C40, 0x809D7E60] +data/npc/model/mdl/rcn_1.c: + .data: [0x809D7E60, 0x809D9E80] +data/npc/model/tex/rcn_1.c: + .data: [0x809D9E80, 0x809DACE0] +data/npc/model/mdl/kab_1.c: + .data: [0x80A001B0, 0x80A02398] +data/npc/model/tex/kab_1.c: + .data: [0x80A023A0, 0x80A02FC0] +data/npc/model/mdl/ttl_1.c: + .data: [0x80B38FC0, 0x80B3ADD8] +data/npc/model/tex/ttl_1.c: + .data: [0x80B3ADE0, 0x80B3BD40] +data/npc/model/mdl/squ_1.c: + .data: [0x80B3BD40, 0x80B3DDE0] +data/npc/model/tex/squ_1.c: + .data: [0x80B3DDE0, 0x80B3F000] +data/npc/model/tex/squ_2.c: + .data: [0x80B3F000, 0x80B40220] +data/npc/model/tex/squ_11.c: + .data: [0x80B40220, 0x80B41440] +data/npc/model/tex/squ_3.c: + .data: [0x80B41440, 0x80B42660] +data/npc/model/tex/squ_4.c: + .data: [0x80B42660, 0x80B43880] +data/npc/model/tex/squ_5.c: + .data: [0x80B43880, 0x80B44AA0] +data/npc/model/tex/squ_6.c: + .data: [0x80B44AA0, 0x80B45CC0] +data/npc/model/tex/squ_7.c: + .data: [0x80B45CC0, 0x80B46EE0] +data/npc/model/tex/squ_8.c: + .data: [0x80B46EE0, 0x80B48100] +data/npc/model/tex/squ_9.c: + .data: [0x80B48100, 0x80B49320] +data/npc/model/tex/squ_10.c: + .data: [0x80B49320, 0x80B4A540] +data/npc/model/mdl/mnk_1.c: + .data: [0x80B4A540, 0x80B4C7F8] +data/npc/model/tex/mnk_1.c: + .data: [0x80B4C800, 0x80B4DC20] +data/npc/model/mdl/rcs_1.c: + .data: [0x80C09AC0, 0x80C0BBA8] +data/npc/model/tex/rcs_1.c: + .data: [0x80C0BBC0, 0x80C0C960] +data/npc/model/mdl/tig_1.c: + .data: [0x80C2C9F8, 0x80C2EE88] +data/npc/model/tex/tig_1.c: + .data: [0x80C2EEA0, 0x80C2FC40] +data/npc/model/tex/tig_2.c: + .data: [0x80C2FC40, 0x80C309E0] +data/npc/model/tex/tig_3.c: + .data: [0x80C309E0, 0x80C31780] +data/npc/model/tex/tig_4.c: + .data: [0x80C31780, 0x80C32520] data/titledemo/pact0.c: .data: [0x80C411D8, 0x80C42038] data/titledemo/pact1.c: @@ -1922,6 +1901,28 @@ data/titledemo/pact3.c: .data: [0x80C43D18, 0x80C44B98] data/titledemo/pact4.c: .data: [0x80C44B98, 0x80C45A08] +data/npc/model/mdl/end_1.c: + .data: [0x80C45A08, 0x80C480A8] +data/npc/model/tex/end_1.c: + .data: [0x80C480C0, 0x80C493A0] +data/npc/model/mdl/tuk_1.c: + .data: [0x80C4B710, 0x80C4E080] +data/npc/model/tex/tuk_1.c: + .data: [0x80C4E080, 0x80C4EF20] +data/npc/model/mdl/wol_1.c: + .data: [0x80C4F588, 0x80C51650] +data/npc/model/tex/wol_1.c: + .data: [0x80C51660, 0x80C52280] +data/npc/model/tex/wol_2.c: + .data: [0x80C52280, 0x80C52EA0] +data/npc/model/tex/wol_3.c: + .data: [0x80C52EA0, 0x80C53AC0] +data/npc/model/tex/wol_4.c: + .data: [0x80C53AC0, 0x80C546E0] +data/npc/model/tex/wol_5.c: + .data: [0x80C546E0, 0x80C55300] +data/npc/model/tex/wol_6.c: + .data: [0x80C55300, 0x80C55F20] data/field/bg/beach_pal.c: .data: [0x80C59CA8, 0x80C59E28] data/field/bg/bush_pal.c: diff --git a/src/ef_halloween.c b/src/ef_halloween.c index 923de7e8..82ecbf35 100644 --- a/src/ef_halloween.c +++ b/src/ef_halloween.c @@ -1,5 +1,7 @@ #include "ef_effect_control.h" +#include "m_common_data.h" + static void eHalloween_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1); static void eHalloween_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg); static void eHalloween_mv(eEC_Effect_c* effect, GAME* game); @@ -18,17 +20,30 @@ eEC_PROFILE_c iam_ef_halloween = { }; static void eHalloween_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1) { - // TODO + (*eEC_CLIP->make_effect_proc)(eEC_EFFECT_HALLOWEEN, pos, NULL, game, &angle, item_name, prio, arg0, arg1); } static void eHalloween_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg) { - // TODO + effect->timer = 0x28; + effect->effect_specific[0] = 0; + sAdo_OngenTrgStart(0x107, &effect->position); } static void eHalloween_mv(eEC_Effect_c* effect, GAME* game) { - // TODO + if (effect->effect_specific[0] == 4) { + s16 rnd_angle = qrand(); + xyz_t pos = effect->position; + + pos.x += 18.0f * sin_s(rnd_angle); + pos.y += -25.0f + RANDOM_F(30.0f); + pos.z += 5.0f + (18.0f * cos_s(rnd_angle)); + effect->effect_specific[0] = 0; + eEC_CLIP->effect_make_proc(eEC_EFFECT_HALLOWEEN_SMOKE, pos, effect->prio, rnd_angle, game, effect->item_name, 0, 0); + } + + effect->effect_specific[0]++; } static void eHalloween_dw(eEC_Effect_c* effect, GAME* game) { - // TODO + // empty } From be6c56384e383d6f81317c1f82b2f31a1bdd881e Mon Sep 17 00:00:00 2001 From: Weaky322 Date: Tue, 6 Aug 2024 23:54:27 -0600 Subject: [PATCH 105/234] Link ef_hanatiri.c --- config/rel_slices.yml | 3 +++ src/ef_hanatiri.c | 25 +++++++++++++++++++++---- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/config/rel_slices.yml b/config/rel_slices.yml index 5e68c7bf..d9c6f9e2 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -1155,6 +1155,9 @@ ef_hanabi_dummy.c: .text: [0x8060E6D8, 0x8060E9B8] .rodata: [0x8064C2A0, 0x8064C2C0] .data: [0x806D2858, 0x806D2888] +ef_hanatiri.c: + .text: [0x80610478, 0x8061061C] + .data: [0x806D2C08, 0x806D2C20] ef_killer.c: .text: [0x80614178, 0x8061481C] .rodata: [0x8064C680, 0x8064C6C0] diff --git a/src/ef_hanatiri.c b/src/ef_hanatiri.c index 9102f464..8cfa3966 100644 --- a/src/ef_hanatiri.c +++ b/src/ef_hanatiri.c @@ -1,5 +1,7 @@ #include "ef_effect_control.h" +#include "m_common_data.h" + static void eHanatiri_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1); static void eHanatiri_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg); static void eHanatiri_mv(eEC_Effect_c* effect, GAME* game); @@ -18,17 +20,32 @@ eEC_PROFILE_c iam_ef_hanatiri = { }; static void eHanatiri_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1) { - // TODO + (*eEC_CLIP->make_effect_proc)(eEC_EFFECT_HANATIRI, pos, NULL, game, NULL, item_name, prio, arg0, arg1); } static void eHanatiri_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg) { - // TODO + int i; + + if (effect->arg0 >= FLOWER_PANSIES0 && effect->arg0 <= FLOWER_TULIP2) { + s16 flower_idx = effect->arg0 - FLOWER_PANSIES0; + + for (i = 0; i < 5; i++) { + eEC_CLIP->effect_make_proc(eEC_EFFECT_HANABIRA, effect->position, effect->prio, 0, game, effect->item_name, flower_idx, 5); + } + } + + for (i = 0; i < 4; i++){ + eEC_CLIP->effect_make_proc(eEC_EFFECT_HANABIRA, effect->position, effect->prio, 0, game, effect->item_name, 9, 5); + } + + effect->timer = 0; } static void eHanatiri_mv(eEC_Effect_c* effect, GAME* game) { - // TODO + // empty } static void eHanatiri_dw(eEC_Effect_c* effect, GAME* game) { - // TODO + // empty } + From dec0f895a82052402965929fbcc5147db121f25f Mon Sep 17 00:00:00 2001 From: Weaky322 Date: Wed, 7 Aug 2024 00:00:32 -0600 Subject: [PATCH 106/234] Link ef_hanatiri.c --- config/rel_slices.yml | 6 ++++-- src/ef_halloween.c | 23 +++++++++++++++++++---- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/config/rel_slices.yml b/config/rel_slices.yml index d9c6f9e2..fa30808d 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -1151,6 +1151,10 @@ ef_footprint.c: .text: [0x8060BCB0, 0x8060C21C] .rodata: [0x8064C0B0, 0x8064C0E0] .data: [0x806D2430, 0x806D2470] +ef_halloween.c: + .text: [0x8060D44C, 0x8060D654] + .rodata: [0x8064C1C0, 0x8064C1D0] + .data: [0x806D2600, 0x806D2618] ef_hanabi_dummy.c: .text: [0x8060E6D8, 0x8060E9B8] .rodata: [0x8064C2A0, 0x8064C2C0] @@ -1228,7 +1232,6 @@ f_furniture.c: .data: [0x806D4D40, 0x806E02A0] ac_weather_fine.c: .data: [0x806D1DA0, 0x806D1DB8] - # dataobject.obj NPC draw data TUs data/npc/model/mdl/bev_1.c: .data: [0x806E03A0, 0x806E27D0] @@ -1271,7 +1274,6 @@ data/npc/model/tex/bea_9.c: data/npc/model/tex/bea_10.c: .data: [0x806FA140, 0x806FB360] - # dataobject.obj files data/field/bg/flower/obj_flower.c: .data: [0x8074FE80, 0x807508C0] diff --git a/src/ef_halloween.c b/src/ef_halloween.c index 923de7e8..82ecbf35 100644 --- a/src/ef_halloween.c +++ b/src/ef_halloween.c @@ -1,5 +1,7 @@ #include "ef_effect_control.h" +#include "m_common_data.h" + static void eHalloween_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1); static void eHalloween_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg); static void eHalloween_mv(eEC_Effect_c* effect, GAME* game); @@ -18,17 +20,30 @@ eEC_PROFILE_c iam_ef_halloween = { }; static void eHalloween_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1) { - // TODO + (*eEC_CLIP->make_effect_proc)(eEC_EFFECT_HALLOWEEN, pos, NULL, game, &angle, item_name, prio, arg0, arg1); } static void eHalloween_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg) { - // TODO + effect->timer = 0x28; + effect->effect_specific[0] = 0; + sAdo_OngenTrgStart(0x107, &effect->position); } static void eHalloween_mv(eEC_Effect_c* effect, GAME* game) { - // TODO + if (effect->effect_specific[0] == 4) { + s16 rnd_angle = qrand(); + xyz_t pos = effect->position; + + pos.x += 18.0f * sin_s(rnd_angle); + pos.y += -25.0f + RANDOM_F(30.0f); + pos.z += 5.0f + (18.0f * cos_s(rnd_angle)); + effect->effect_specific[0] = 0; + eEC_CLIP->effect_make_proc(eEC_EFFECT_HALLOWEEN_SMOKE, pos, effect->prio, rnd_angle, game, effect->item_name, 0, 0); + } + + effect->effect_specific[0]++; } static void eHalloween_dw(eEC_Effect_c* effect, GAME* game) { - // TODO + // empty } From 3d30d497220b9ba19657be2eeb30d6c4e2473f78 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Thu, 8 Aug 2024 01:03:56 -0400 Subject: [PATCH 107/234] Add in map icon data, kan_tizu[2] --- config/assets.yml | 139 ++++++++++++++++++++ config/rel_slices.yml | 5 + src/data/submenu/map/kan_tizu.c | 217 +++++++++++++++++++++++++++++++ src/data/submenu/map/kan_tizu2.c | 61 +++++++++ src/m_map_ovl.c | 34 ++--- 5 files changed, 441 insertions(+), 15 deletions(-) create mode 100644 src/data/submenu/map/kan_tizu.c create mode 100644 src/data/submenu/map/kan_tizu2.c diff --git a/config/assets.yml b/config/assets.yml index a9da8621..bd9a4b4a 100644 --- a/config/assets.yml +++ b/config/assets.yml @@ -8596,3 +8596,142 @@ config/rel.yml: addrs: [0x80C55A20, 0x80C55B20] npc/tex/wol_6_tmem_txt: addrs: [0x80C55B20, 0x80C55F20] + # map submenu + submenu/map/kan_tizu_c1_TA_tex_txt: + addrs: [0x80F0B020, 0x80F0B220] + submenu/map/kan_tizu_c1r1_TA_tex_txt: + addrs: [0x80F0B220, 0x80F0B420] + submenu/map/kan_tizu_c1s_TA_tex_txt: + addrs: [0x80F0B420, 0x80F0B620] + submenu/map/kan_tizu_c2_TA_tex_txt: + addrs: [0x80F0B620, 0x80F0B820] + submenu/map/kan_tizu_c2r1_TA_tex_txt: + addrs: [0x80F0B820, 0x80F0BA20] + submenu/map/kan_tizu_c3r1_TA_tex_txt: + addrs: [0x80F0BA20, 0x80F0BC20] + submenu/map/kan_tizu_c4r1_TA_tex_txt: + addrs: [0x80F0BC20, 0x80F0BE20] + submenu/map/kan_tizu_c5r1_TA_tex_txt: + addrs: [0x80F0BE20, 0x80F0C020] + submenu/map/kan_tizu_c6_TA_tex_txt: + addrs: [0x80F0C020, 0x80F0C220] + submenu/map/kan_tizu_c6r1_TA_tex_txt: + addrs: [0x80F0C220, 0x80F0C420] + submenu/map/kan_tizu_c6s_TA_tex_txt: + addrs: [0x80F0C420, 0x80F0C620] + submenu/map/kan_tizu_c7_TA_tex_txt: + addrs: [0x80F0C620, 0x80F0C820] + submenu/map/kan_tizu_c7r1_TA_tex_txt: + addrs: [0x80F0C820, 0x80F0CA20] + submenu/map/kan_tizu_f_TA_tex_txt: + addrs: [0x80F0CA20, 0x80F0CC20] + submenu/map/kan_tizu_r1_TA_tex_txt: + addrs: [0x80F0CC20, 0x80F0CE20] + submenu/map/kan_tizu_r1b_TA_tex_txt: + addrs: [0x80F0CE20, 0x80F0D020] + submenu/map/kan_tizu_r2_TA_tex_txt: + addrs: [0x80F0D020, 0x80F0D220] + submenu/map/kan_tizu_r4_TA_tex_txt: + addrs: [0x80F0D220, 0x80F0D420] + submenu/map/kan_tizu_r5_TA_tex_txt: + addrs: [0x80F0D420, 0x80F0D620] + submenu/map/kan_tizu_r6_TA_tex_txt: + addrs: [0x80F0D620, 0x80F0D820] + submenu/map/kan_tizu_r7_TA_tex_txt: + addrs: [0x80F0D820, 0x80F0DA20] + submenu/map/kan_tizu_c4_TA_tex_txt: + addrs: [0x80F0DA20, 0x80F0DC20] + submenu/map/kan_tizu_c5_TA_tex_txt: + addrs: [0x80F0DC20, 0x80F0DE20] + submenu/map/kan_tizu_c3_TA_tex_txt: + addrs: [0x80F0DE20, 0x80F0E020] + submenu/map/kan_tizu_r7b_TA_tex_txt: + addrs: [0x80F0E020, 0x80F0E220] + submenu/map/kan_tizu_c1r2_TA_tex_txt: + addrs: [0x80F0E220, 0x80F0E420] + submenu/map/kan_tizu_c2r2_TA_tex_txt: + addrs: [0x80F0E420, 0x80F0E620] + submenu/map/kan_tizu_c3r2_TA_tex_txt: + addrs: [0x80F0E620, 0x80F0E820] + submenu/map/kan_tizu_c4r2_TA_tex_txt: + addrs: [0x80F0E820, 0x80F0EA20] + submenu/map/kan_tizu_c5r2_TA_tex_txt: + addrs: [0x80F0EA20, 0x80F0EC20] + submenu/map/kan_tizu_c6r3_TA_tex_txt: + addrs: [0x80F0EC20, 0x80F0EE20] + submenu/map/kan_tizu_c7r3_TA_tex_txt: + addrs: [0x80F0EE20, 0x80F0F020] + submenu/map/kan_tizu_c2s_TA_tex_txt: + addrs: [0x80F0F020, 0x80F0F220] + submenu/map/kan_tizu_c3s_TA_tex_txt: + addrs: [0x80F0F220, 0x80F0F420] + submenu/map/kan_tizu_c4s_TA_tex_txt: + addrs: [0x80F0F420, 0x80F0F620] + submenu/map/kan_tizu_c5s_TA_tex_txt: + addrs: [0x80F0F620, 0x80F0F820] + submenu/map/kan_tizu_c7s_TA_tex_txt: + addrs: [0x80F0F820, 0x80F0FA20] + submenu/map/kan_tizu_r2b_TA_tex_txt: + addrs: [0x80F0FA20, 0x80F0FC20] + submenu/map/kan_tizu_r4b_TA_tex_txt: + addrs: [0x80F0FC20, 0x80F0FE20] + submenu/map/kan_tizu_r5b_TA_tex_txt: + addrs: [0x80F0FE20, 0x80F10020] + submenu/map/kan_tizu_r6b_TA_tex_txt: + addrs: [0x80F10020, 0x80F10220] + submenu/map/kan_tizu_pr1_TA_tex_txt: + addrs: [0x80F10220, 0x80F10420] + submenu/map/kan_tizu_pr2_TA_tex_txt: + addrs: [0x80F10420, 0x80F10620] + submenu/map/kan_tizu_pr4_TA_tex_txt: + addrs: [0x80F10620, 0x80F10820] + submenu/map/kan_tizu_pr5_TA_tex_txt: + addrs: [0x80F10820, 0x80F10A20] + submenu/map/kan_tizu_pr6_TA_tex_txt: + addrs: [0x80F10A20, 0x80F10C20] + submenu/map/kan_tizu_pr7_TA_tex_txt: + addrs: [0x80F10C20, 0x80F10E20] + submenu/map/kan_tizu_c3r1b_TA_tex_txt: + addrs: [0x80F10E20, 0x80F11020] + submenu/map/kan_tizu_c4r1b_TA_tex_txt: + addrs: [0x80F11020, 0x80F11220] + submenu/map/kan_tizu_c1r2b_TA_tex_txt: + addrs: [0x80F11220, 0x80F11420] + submenu/map/kan_tizu_c4r2b_TA_tex_txt: + addrs: [0x80F11420, 0x80F11620] + submenu/map/kan_tizu_c5r2b_TA_tex_txt: + addrs: [0x80F11620, 0x80F11820] + submenu/map/kan_tizu_c6r1b_TA_tex_txt: + addrs: [0x80F11820, 0x80F11A20] + submenu/map/kan_tizu_c7r1b_TA_tex_txt: + addrs: [0x80F11A20, 0x80F11C20] + submenu/map/kan_tizu_tst1_TA_tex_txt: + addrs: [0x80F11C20, 0x80F11E20] + submenu/map/kan_tizu_tr1_TA_tex_txt: + addrs: [0x80F11E20, 0x80F12020] + submenu/map/kan_tizu_t_TA_tex_txt: + addrs: [0x80F12020, 0x80F12220] + submenu/map/kan_tizu_fsh_TA_tex_txt: + addrs: [0x80F12220, 0x80F12420] + submenu/map/kan_tizu_fpo_TA_tex_txt: + addrs: [0x80F12420, 0x80F12620] + submenu/map/kan_tizu_fpk_TA_tex_txt: + addrs: [0x80F12620, 0x80F12820] + submenu/map/kan_tizu_fmh_TA_tex_txt: + addrs: [0x80F12820, 0x80F12A20] + submenu/map/kan_tizu_fko_TA_tex_txt: + addrs: [0x80F12A20, 0x80F12C20] + submenu/map/kan_tizu_mr1_TA_tex_txt: + addrs: [0x80F12C20, 0x80F12E20] + submenu/map/kan_tizu_m_TA_tex_txt: + addrs: [0x80F12E20, 0x80F13020] + submenu/map/kan_tizu_mr1b_TA_tex_txt: + addrs: [0x80F13020, 0x80F13220] + submenu/map/kan_tizu_tr1b_TA_tex_txt: + addrs: [0x80F13220, 0x80F13420] + submenu/map/kan_tizu_fta_TA_tex_txt: + addrs: [0x80F13420, 0x80F13620] + submenu/map/kan_tizu_mwf_TA_tex_txt: + addrs: [0x80F13620, 0x80F13820] + submenu/map/kan_tizu_fmu_TA_tex_txt: + addrs: [0x80F13820, 0x80F13A20] \ No newline at end of file diff --git a/config/rel_slices.yml b/config/rel_slices.yml index fa30808d..b037b4bf 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -1959,6 +1959,11 @@ data/npc/model/tex/wol_5.c: .data: [0x80C546E0, 0x80C55300] data/npc/model/tex/wol_6.c: .data: [0x80C55300, 0x80C55F20] +# map submenu +data/submenu/map/kan_tizu.c: + .data: [0x80F0B020, 0x80F11C20] +data/submenu/map/kan_tizu2.c: + .data: [0x80F11C20, 0x80F13A20] data/field/bg/beach_pal.c: .data: [0x80C59CA8, 0x80C59E28] data/field/bg/bush_pal.c: diff --git a/src/data/submenu/map/kan_tizu.c b/src/data/submenu/map/kan_tizu.c new file mode 100644 index 00000000..144501b4 --- /dev/null +++ b/src/data/submenu/map/kan_tizu.c @@ -0,0 +1,217 @@ +// clang-format off + +extern unsigned char kan_tizu_c1_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c1_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c1r1_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c1r1_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c1s_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c1s_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c2_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c2_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c2r1_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c2r1_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c3r1_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c3r1_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c4r1_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c4r1_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c5r1_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c5r1_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c6_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c6_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c6r1_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c6r1_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c6s_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c6s_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c7_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c7_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c7r1_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c7r1_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_f_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_f_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_r1_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_r1_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_r1b_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_r1b_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_r2_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_r2_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_r4_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_r4_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_r5_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_r5_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_r6_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_r6_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_r7_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_r7_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c4_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c4_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c5_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c5_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c3_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c3_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_r7b_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_r7b_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c1r2_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c1r2_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c2r2_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c2r2_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c3r2_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c3r2_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c4r2_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c4r2_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c5r2_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c5r2_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c6r3_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c6r3_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c7r3_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c7r3_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c2s_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c2s_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c3s_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c3s_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c4s_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c4s_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c5s_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c5s_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c7s_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c7s_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_r2b_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_r2b_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_r4b_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_r4b_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_r5b_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_r5b_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_r6b_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_r6b_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_pr1_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_pr1_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_pr2_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_pr2_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_pr4_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_pr4_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_pr5_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_pr5_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_pr6_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_pr6_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_pr7_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_pr7_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c3r1b_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c3r1b_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c4r1b_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c4r1b_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c1r2b_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c1r2b_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c4r2b_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c4r2b_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c5r2b_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c5r2b_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c6r1b_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c6r1b_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c7r1b_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c7r1b_TA_tex_txt.inc" +}; diff --git a/src/data/submenu/map/kan_tizu2.c b/src/data/submenu/map/kan_tizu2.c new file mode 100644 index 00000000..0c6b045b --- /dev/null +++ b/src/data/submenu/map/kan_tizu2.c @@ -0,0 +1,61 @@ +// clang-format off + +extern unsigned char kan_tizu_tst1_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_tst1_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_tr1_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_tr1_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_t_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_t_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_fsh_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_fsh_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_fpo_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_fpo_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_fpk_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_fpk_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_fmh_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_fmh_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_fko_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_fko_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_mr1_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_mr1_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_m_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_m_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_mr1b_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_mr1b_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_tr1b_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_tr1b_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_fta_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_fta_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_mwf_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_mwf_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_fmu_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_fmu_TA_tex_txt.inc" +}; diff --git a/src/m_map_ovl.c b/src/m_map_ovl.c index 16a5d08b..39bca254 100644 --- a/src/m_map_ovl.c +++ b/src/m_map_ovl.c @@ -115,14 +115,14 @@ static u8* l_map_texture[mFM_BLOCK_TYPE_NUM] = { kan_tizu_c6r1b_TA_tex_txt, kan_tizu_c7r1b_TA_tex_txt, kan_tizu_c7r1b_TA_tex_txt, kan_tizu_c7r1b_TA_tex_txt, kan_tizu_c7r1b_TA_tex_txt, kan_tizu_c7r1b_TA_tex_txt, kan_tizu_c7r1b_TA_tex_txt, kan_tizu_c7r1b_TA_tex_txt, kan_tizu_mwf_TA_tex_txt, kan_tizu_mwf_TA_tex_txt, kan_tizu_mwf_TA_tex_txt, kan_tizu_mwf_TA_tex_txt, - kan_tizu_mwf_TA_tex_txt, kan_tizu_c1r2b_TA_tex_txt, kan_tizu_c4r2b_TA_tex_txt, kan_tizu_c5r2b_TA_tex_txt + kan_tizu_mwf_TA_tex_txt, kan_tizu_c1r2b_TA_tex_txt, kan_tizu_c4r2b_TA_tex_txt, kan_tizu_c5r2b_TA_tex_txt, }; -static u8 l_map_pal[mFM_BLOCK_TYPE_NUM] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0 }; +static u8 l_map_pal[mFM_BLOCK_TYPE_NUM] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, +}; static u8 pluss_bridge[mFM_BLOCK_TYPE_NUM] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x56, 0xff, 0xff, 0xff, 0xff, @@ -130,7 +130,7 @@ static u8 pluss_bridge[mFM_BLOCK_TYPE_NUM] = { 0x6b, 0xff, 0xff, 0xff, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x52, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, }; extern Gfx kan_win_model[]; @@ -156,11 +156,15 @@ extern mMP_HousePos_c mMP_house_pos_list[]; extern Gfx kan_win_mode[]; -static u16 kan_tizu1_pal[16] ATTRIBUTE_ALIGN(32) = { 0x0000, 0xc3b0, 0x9e87, 0xd294, 0xca52, 0xbdef, 0xb5ad, 0xb9ce, - 0xa2e8, 0xb18c, 0xa705, 0xdaff, 0xab4a, 0xffff, 0xb635, 0xbe9f }; +static u16 kan_tizu1_pal[16] ATTRIBUTE_ALIGN(32) = { + 0x0000, 0xc3b0, 0x9e87, 0xd294, 0xca52, 0xbdef, 0xb5ad, 0xb9ce, + 0xa2e8, 0xb18c, 0xa705, 0xdaff, 0xab4a, 0xffff, 0xb635, 0xbe9f, +}; -static u16 kan_tizu2_pal[16] ATTRIBUTE_ALIGN(32) = { 0x0000, 0xc3b0, 0x9e87, 0xc94a, 0xe70d, 0xe1ce, 0xb5ad, 0xb195, - 0xf390, 0xb18c, 0xa705, 0xffff, 0xd54a, 0xdaff, 0xb635, 0xbe9f }; +static u16 kan_tizu2_pal[16] ATTRIBUTE_ALIGN(32) = { + 0x0000, 0xc3b0, 0x9e87, 0xc94a, 0xe70d, 0xe1ce, 0xb5ad, 0xb195, + 0xf390, 0xb18c, 0xa705, 0xffff, 0xd54a, 0xdaff, 0xb635, 0xbe9f, +}; static u16* l_kan_tizu_pal[2] = { kan_tizu1_pal, kan_tizu2_pal }; @@ -303,10 +307,10 @@ static mMP_LabelWord_c mMP_label_word_port = { -83.0f, -25.0f, mMP_label_str_por static mMP_Label_c mMP_label_port = { -93.0f, -30.0f, kan_win_funeT_model, { &mMP_label_word_port, NULL } }; -static mMP_Label_c* mMP_label_data[mMP_LABEL_NUM] = { &mMP_label_npc, &mMP_label_player, &mMP_label_shop, - &mMP_label_police, &mMP_label_post, &mMP_label_shrine, - &mMP_label_station, &mMP_label_junk, &mMP_label_museum, - &mMP_label_needle, &mMP_label_port }; +static mMP_Label_c* mMP_label_data[mMP_LABEL_NUM] = { + &mMP_label_npc, &mMP_label_player, &mMP_label_shop, &mMP_label_police, &mMP_label_post, &mMP_label_shrine, + &mMP_label_station, &mMP_label_junk, &mMP_label_museum, &mMP_label_needle, &mMP_label_port, +}; static int mMP_check_layer(f32 y) { int layer; From b624acc7c1c18f1f8ca77101928435ba42509cfe Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Sun, 11 Aug 2024 07:25:21 -0400 Subject: [PATCH 108/234] Implement & link all bg models and bg_data --- config/assets.yml | 2385 +++- config/rel_disasm_overrides.yml | 4 + config/rel_slices.yml | 549 +- config/symbols.yml | 5 +- include/evw_anime.h | 76 +- include/libforest/gbi_extensions.h | 20 +- include/m_collision_bg.h | 40 + include/m_field_info.h | 18 +- include/m_field_make.h | 416 +- src/data/field/bg/acre/bg_data.c | 11908 ++++++++++++++++ .../grd_player_select/grd_player_select.c | 77 + .../grd_player_select_evw_anime.c | 9 + .../bg/acre/grd_post_office/grd_post_office.c | 670 + .../field/bg/acre/grd_s_c1_1/grd_s_c1_1.c | 297 + .../field/bg/acre/grd_s_c1_2/grd_s_c1_2.c | 330 + .../field/bg/acre/grd_s_c1_3/grd_s_c1_3.c | 312 + .../field/bg/acre/grd_s_c1_4/grd_s_c1_4.c | 342 + .../field/bg/acre/grd_s_c1_5/grd_s_c1_5.c | 283 + .../bg/acre/grd_s_c1_r1_1/grd_s_c1_r1_1.c | 375 + .../grd_s_c1_r1_1/grd_s_c1_r1_1_evw_anime.c | 9 + .../bg/acre/grd_s_c1_r1_2/grd_s_c1_r1_2.c | 344 + .../grd_s_c1_r1_2/grd_s_c1_r1_2_evw_anime.c | 9 + .../bg/acre/grd_s_c1_r1_3/grd_s_c1_r1_3.c | 323 + .../grd_s_c1_r1_3/grd_s_c1_r1_3_evw_anime.c | 9 + .../bg/acre/grd_s_c1_r2_1/grd_s_c1_r2_1.c | 323 + .../grd_s_c1_r2_1/grd_s_c1_r2_1_evw_anime.c | 9 + .../bg/acre/grd_s_c1_r2_2/grd_s_c1_r2_2.c | 310 + .../grd_s_c1_r2_2/grd_s_c1_r2_2_evw_anime.c | 9 + .../bg/acre/grd_s_c1_r2_3/grd_s_c1_r2_3.c | 365 + .../grd_s_c1_r2_3/grd_s_c1_r2_3_evw_anime.c | 9 + .../bg/acre/grd_s_c1_r3_1/grd_s_c1_r3_1.c | 291 + .../grd_s_c1_r3_1/grd_s_c1_r3_1_evw_anime.c | 9 + .../bg/acre/grd_s_c1_r3_2/grd_s_c1_r3_2.c | 313 + .../grd_s_c1_r3_2/grd_s_c1_r3_2_evw_anime.c | 9 + .../bg/acre/grd_s_c1_r3_3/grd_s_c1_r3_3.c | 359 + .../grd_s_c1_r3_3/grd_s_c1_r3_3_evw_anime.c | 9 + .../field/bg/acre/grd_s_c1_s_1/grd_s_c1_s_1.c | 268 + .../field/bg/acre/grd_s_c1_s_2/grd_s_c1_s_2.c | 322 + .../field/bg/acre/grd_s_c1_s_3/grd_s_c1_s_3.c | 323 + .../field/bg/acre/grd_s_c1_s_4/grd_s_c1_s_4.c | 337 + .../field/bg/acre/grd_s_c2_1/grd_s_c2_1.c | 288 + .../field/bg/acre/grd_s_c2_2/grd_s_c2_2.c | 285 + .../field/bg/acre/grd_s_c2_3/grd_s_c2_3.c | 307 + .../bg/acre/grd_s_c2_3/grd_s_c2_3_evw_anime.c | 9 + .../bg/acre/grd_s_c2_r1_1/grd_s_c2_r1_1.c | 319 + .../grd_s_c2_r1_1/grd_s_c2_r1_1_evw_anime.c | 9 + .../bg/acre/grd_s_c2_r1_2/grd_s_c2_r1_2.c | 328 + .../grd_s_c2_r1_2/grd_s_c2_r1_2_evw_anime.c | 9 + .../bg/acre/grd_s_c2_r2_1/grd_s_c2_r2_1.c | 313 + .../grd_s_c2_r2_1/grd_s_c2_r2_1_evw_anime.c | 9 + .../bg/acre/grd_s_c2_r2_2/grd_s_c2_r2_2.c | 355 + .../grd_s_c2_r2_2/grd_s_c2_r2_2_evw_anime.c | 9 + .../field/bg/acre/grd_s_c2_s_1/grd_s_c2_s_1.c | 342 + .../field/bg/acre/grd_s_c2_s_2/grd_s_c2_s_2.c | 323 + .../field/bg/acre/grd_s_c2_s_3/grd_s_c2_s_3.c | 328 + .../field/bg/acre/grd_s_c3_1/grd_s_c3_1.c | 299 + .../field/bg/acre/grd_s_c3_2/grd_s_c3_2.c | 302 + .../bg/acre/grd_s_c3_2/grd_s_c3_2_evw_anime.c | 9 + .../field/bg/acre/grd_s_c3_3/grd_s_c3_3.c | 304 + .../bg/acre/grd_s_c3_r1_1/grd_s_c3_r1_1.c | 292 + .../grd_s_c3_r1_1/grd_s_c3_r1_1_evw_anime.c | 9 + .../bg/acre/grd_s_c3_r1_2/grd_s_c3_r1_2.c | 312 + .../grd_s_c3_r1_2/grd_s_c3_r1_2_evw_anime.c | 9 + .../bg/acre/grd_s_c3_r2_1/grd_s_c3_r2_1.c | 360 + .../grd_s_c3_r2_1/grd_s_c3_r2_1_evw_anime.c | 9 + .../bg/acre/grd_s_c3_r2_2/grd_s_c3_r2_2.c | 365 + .../grd_s_c3_r2_2/grd_s_c3_r2_2_evw_anime.c | 9 + .../field/bg/acre/grd_s_c3_s_1/grd_s_c3_s_1.c | 322 + .../grd_s_c3_s_1/grd_s_c3_s_1_evw_anime.c | 9 + .../field/bg/acre/grd_s_c4_1/grd_s_c4_1.c | 262 + .../field/bg/acre/grd_s_c4_2/grd_s_c4_2.c | 287 + .../field/bg/acre/grd_s_c4_3/grd_s_c4_3.c | 310 + .../bg/acre/grd_s_c4_r1_1/grd_s_c4_r1_1.c | 309 + .../grd_s_c4_r1_1/grd_s_c4_r1_1_evw_anime.c | 9 + .../bg/acre/grd_s_c4_r1_2/grd_s_c4_r1_2.c | 324 + .../grd_s_c4_r1_2/grd_s_c4_r1_2_evw_anime.c | 9 + .../bg/acre/grd_s_c4_r2_1/grd_s_c4_r2_1.c | 307 + .../grd_s_c4_r2_1/grd_s_c4_r2_1_evw_anime.c | 9 + .../bg/acre/grd_s_c4_r2_2/grd_s_c4_r2_2.c | 288 + .../grd_s_c4_r2_2/grd_s_c4_r2_2_evw_anime.c | 9 + .../bg/acre/grd_s_c4_r3_1/grd_s_c4_r3_1.c | 289 + .../grd_s_c4_r3_1/grd_s_c4_r3_1_evw_anime.c | 9 + .../bg/acre/grd_s_c4_r3_2/grd_s_c4_r3_2.c | 271 + .../grd_s_c4_r3_2/grd_s_c4_r3_2_evw_anime.c | 9 + .../field/bg/acre/grd_s_c4_s_1/grd_s_c4_s_1.c | 310 + .../field/bg/acre/grd_s_c4_s_2/grd_s_c4_s_2.c | 341 + .../field/bg/acre/grd_s_c5_1/grd_s_c5_1.c | 256 + .../field/bg/acre/grd_s_c5_2/grd_s_c5_2.c | 347 + .../field/bg/acre/grd_s_c5_3/grd_s_c5_3.c | 267 + .../bg/acre/grd_s_c5_r1_1/grd_s_c5_r1_1.c | 344 + .../grd_s_c5_r1_1/grd_s_c5_r1_1_evw_anime.c | 9 + .../bg/acre/grd_s_c5_r1_2/grd_s_c5_r1_2.c | 354 + .../grd_s_c5_r1_2/grd_s_c5_r1_2_evw_anime.c | 9 + .../bg/acre/grd_s_c5_r2_1/grd_s_c5_r2_1.c | 376 + .../grd_s_c5_r2_1/grd_s_c5_r2_1_evw_anime.c | 9 + .../bg/acre/grd_s_c5_r2_2/grd_s_c5_r2_2.c | 343 + .../grd_s_c5_r2_2/grd_s_c5_r2_2_evw_anime.c | 9 + .../bg/acre/grd_s_c5_r3_1/grd_s_c5_r3_1.c | 328 + .../grd_s_c5_r3_1/grd_s_c5_r3_1_evw_anime.c | 9 + .../bg/acre/grd_s_c5_r3_2/grd_s_c5_r3_2.c | 323 + .../grd_s_c5_r3_2/grd_s_c5_r3_2_evw_anime.c | 9 + .../field/bg/acre/grd_s_c5_s_1/grd_s_c5_s_1.c | 313 + .../field/bg/acre/grd_s_c5_s_2/grd_s_c5_s_2.c | 291 + .../field/bg/acre/grd_s_c6_1/grd_s_c6_1.c | 322 + .../field/bg/acre/grd_s_c6_2/grd_s_c6_2.c | 335 + .../field/bg/acre/grd_s_c6_3/grd_s_c6_3.c | 292 + .../bg/acre/grd_s_c6_r1_1/grd_s_c6_r1_1.c | 339 + .../grd_s_c6_r1_1/grd_s_c6_r1_1_evw_anime.c | 9 + .../bg/acre/grd_s_c6_r1_2/grd_s_c6_r1_2.c | 334 + .../grd_s_c6_r1_2/grd_s_c6_r1_2_evw_anime.c | 9 + .../bg/acre/grd_s_c6_r3_1/grd_s_c6_r3_1.c | 347 + .../grd_s_c6_r3_1/grd_s_c6_r3_1_evw_anime.c | 9 + .../field/bg/acre/grd_s_c6_s_1/grd_s_c6_s_1.c | 297 + .../field/bg/acre/grd_s_c7_1/grd_s_c7_1.c | 286 + .../field/bg/acre/grd_s_c7_2/grd_s_c7_2.c | 360 + .../field/bg/acre/grd_s_c7_3/grd_s_c7_3.c | 308 + .../bg/acre/grd_s_c7_3/grd_s_c7_3_evw_anime.c | 9 + .../bg/acre/grd_s_c7_r1_1/grd_s_c7_r1_1.c | 308 + .../grd_s_c7_r1_1/grd_s_c7_r1_1_evw_anime.c | 9 + .../bg/acre/grd_s_c7_r1_2/grd_s_c7_r1_2.c | 298 + .../grd_s_c7_r1_2/grd_s_c7_r1_2_evw_anime.c | 9 + .../bg/acre/grd_s_c7_r3_1/grd_s_c7_r3_1.c | 344 + .../grd_s_c7_r3_1/grd_s_c7_r3_1_evw_anime.c | 9 + .../bg/acre/grd_s_c7_r3_2/grd_s_c7_r3_2.c | 374 + .../grd_s_c7_r3_2/grd_s_c7_r3_2_evw_anime.c | 9 + .../field/bg/acre/grd_s_c7_s_1/grd_s_c7_s_1.c | 409 + .../field/bg/acre/grd_s_c7_s_2/grd_s_c7_s_2.c | 295 + .../field/bg/acre/grd_s_c7_s_3/grd_s_c7_s_3.c | 325 + .../field/bg/acre/grd_s_e1_1/grd_s_e1_1.c | 186 + .../bg/acre/grd_s_e1_r1_1/grd_s_e1_r1_1.c | 433 + .../grd_s_e1_r1_1/grd_s_e1_r1_1_evw_anime.c | 9 + .../field/bg/acre/grd_s_e2_1/grd_s_e2_1.c | 199 + .../bg/acre/grd_s_e2_c1_1/grd_s_e2_c1_1.c | 193 + .../field/bg/acre/grd_s_e2_m_1/grd_s_e2_m_1.c | 230 + .../field/bg/acre/grd_s_e2_o_1/grd_s_e2_o_1.c | 96 + .../field/bg/acre/grd_s_e2_t_1/grd_s_e2_t_1.c | 258 + .../field/bg/acre/grd_s_e3_1/grd_s_e3_1.c | 187 + .../bg/acre/grd_s_e3_c1_1/grd_s_e3_c1_1.c | 199 + .../field/bg/acre/grd_s_e3_m_1/grd_s_e3_m_1.c | 223 + .../field/bg/acre/grd_s_e3_o_1/grd_s_e3_o_1.c | 96 + .../field/bg/acre/grd_s_e3_t_1/grd_s_e3_t_1.c | 258 + .../field/bg/acre/grd_s_e4_1/grd_s_e4_1.c | 65 + .../field/bg/acre/grd_s_e5_1/grd_s_e5_1.c | 71 + src/data/field/bg/acre/grd_s_f_1/grd_s_f_1.c | 239 + .../field/bg/acre/grd_s_f_10/grd_s_f_10.c | 221 + src/data/field/bg/acre/grd_s_f_2/grd_s_f_2.c | 269 + src/data/field/bg/acre/grd_s_f_3/grd_s_f_3.c | 171 + src/data/field/bg/acre/grd_s_f_4/grd_s_f_4.c | 233 + .../bg/acre/grd_s_f_4/grd_s_f_4_evw_anime.c | 9 + src/data/field/bg/acre/grd_s_f_5/grd_s_f_5.c | 274 + .../bg/acre/grd_s_f_5/grd_s_f_5_evw_anime.c | 9 + src/data/field/bg/acre/grd_s_f_6/grd_s_f_6.c | 275 + .../bg/acre/grd_s_f_6/grd_s_f_6_evw_anime.c | 9 + src/data/field/bg/acre/grd_s_f_7/grd_s_f_7.c | 345 + src/data/field/bg/acre/grd_s_f_8/grd_s_f_8.c | 264 + src/data/field/bg/acre/grd_s_f_9/grd_s_f_9.c | 299 + .../field/bg/acre/grd_s_f_ko_1/grd_s_f_ko_1.c | 284 + .../field/bg/acre/grd_s_f_ko_2/grd_s_f_ko_2.c | 233 + .../field/bg/acre/grd_s_f_ko_3/grd_s_f_ko_3.c | 287 + .../grd_s_f_ko_3/grd_s_f_ko_3_evw_anime.c | 9 + .../field/bg/acre/grd_s_f_mh_1/grd_s_f_mh_1.c | 239 + .../field/bg/acre/grd_s_f_mh_2/grd_s_f_mh_2.c | 228 + .../field/bg/acre/grd_s_f_mh_3/grd_s_f_mh_3.c | 220 + .../field/bg/acre/grd_s_f_mu_1/grd_s_f_mu_1.c | 217 + .../field/bg/acre/grd_s_f_mu_2/grd_s_f_mu_2.c | 217 + .../field/bg/acre/grd_s_f_mu_3/grd_s_f_mu_3.c | 200 + .../grd_s_f_mu_3/grd_s_f_mu_3_evw_anime.c | 9 + .../field/bg/acre/grd_s_f_pk_1/grd_s_f_pk_1.c | 296 + .../field/bg/acre/grd_s_f_pk_2/grd_s_f_pk_2.c | 278 + .../field/bg/acre/grd_s_f_pk_3/grd_s_f_pk_3.c | 322 + .../bg/acre/grd_s_hole_test/grd_s_hole_test.c | 316 + .../field/bg/acre/grd_s_il_1/grd_s_il_1.c | 369 + .../field/bg/acre/grd_s_il_2/grd_s_il_2.c | 522 + .../field/bg/acre/grd_s_il_3/grd_s_il_3.c | 398 + .../field/bg/acre/grd_s_il_4/grd_s_il_4.c | 393 + .../field/bg/acre/grd_s_ir_1/grd_s_ir_1.c | 461 + .../field/bg/acre/grd_s_ir_2/grd_s_ir_2.c | 502 + .../field/bg/acre/grd_s_ir_3/grd_s_ir_3.c | 540 + .../field/bg/acre/grd_s_ir_4/grd_s_ir_4.c | 466 + src/data/field/bg/acre/grd_s_m_1/grd_s_m_1.c | 399 + .../field/bg/acre/grd_s_m_10/grd_s_m_10.c | 403 + src/data/field/bg/acre/grd_s_m_2/grd_s_m_2.c | 412 + src/data/field/bg/acre/grd_s_m_3/grd_s_m_3.c | 374 + src/data/field/bg/acre/grd_s_m_4/grd_s_m_4.c | 389 + src/data/field/bg/acre/grd_s_m_5/grd_s_m_5.c | 426 + src/data/field/bg/acre/grd_s_m_6/grd_s_m_6.c | 410 + src/data/field/bg/acre/grd_s_m_7/grd_s_m_7.c | 383 + src/data/field/bg/acre/grd_s_m_8/grd_s_m_8.c | 365 + src/data/field/bg/acre/grd_s_m_9/grd_s_m_9.c | 374 + .../field/bg/acre/grd_s_m_r1_1/grd_s_m_r1_1.c | 398 + .../grd_s_m_r1_1/grd_s_m_r1_1_evw_anime.c | 9 + .../field/bg/acre/grd_s_m_r1_2/grd_s_m_r1_2.c | 364 + .../grd_s_m_r1_2/grd_s_m_r1_2_evw_anime.c | 9 + .../field/bg/acre/grd_s_m_r1_3/grd_s_m_r1_3.c | 365 + .../grd_s_m_r1_3/grd_s_m_r1_3_evw_anime.c | 9 + .../field/bg/acre/grd_s_m_r1_4/grd_s_m_r1_4.c | 415 + .../grd_s_m_r1_4/grd_s_m_r1_4_evw_anime.c | 9 + .../field/bg/acre/grd_s_m_r1_5/grd_s_m_r1_5.c | 391 + .../grd_s_m_r1_5/grd_s_m_r1_5_evw_anime.c | 9 + .../bg/acre/grd_s_m_r1_b_1/grd_s_m_r1_b_1.c | 372 + .../grd_s_m_r1_b_1/grd_s_m_r1_b_1_evw_anime.c | 9 + .../bg/acre/grd_s_m_r1_b_2/grd_s_m_r1_b_2.c | 402 + .../grd_s_m_r1_b_2/grd_s_m_r1_b_2_evw_anime.c | 9 + .../bg/acre/grd_s_m_r1_b_3/grd_s_m_r1_b_3.c | 383 + .../grd_s_m_r1_b_3/grd_s_m_r1_b_3_evw_anime.c | 9 + .../field/bg/acre/grd_s_m_ta_1/grd_s_m_ta_1.c | 425 + .../grd_s_m_ta_1/grd_s_m_ta_1_evw_anime.c | 9 + .../field/bg/acre/grd_s_m_ta_2/grd_s_m_ta_2.c | 408 + .../grd_s_m_ta_2/grd_s_m_ta_2_evw_anime.c | 9 + .../field/bg/acre/grd_s_m_ta_3/grd_s_m_ta_3.c | 432 + .../grd_s_m_ta_3/grd_s_m_ta_3_evw_anime.c | 9 + .../field/bg/acre/grd_s_m_wf_1/grd_s_m_wf_1.c | 479 + .../grd_s_m_wf_1/grd_s_m_wf_1_evw_anime.c | 9 + .../field/bg/acre/grd_s_m_wf_2/grd_s_m_wf_2.c | 564 + .../grd_s_m_wf_2/grd_s_m_wf_2_evw_anime.c | 9 + .../field/bg/acre/grd_s_m_wf_3/grd_s_m_wf_3.c | 485 + .../grd_s_m_wf_3/grd_s_m_wf_3_evw_anime.c | 9 + src/data/field/bg/acre/grd_s_o_1/grd_s_o_1.c | 139 + .../bg/acre/grd_s_o_1/grd_s_o_1_evw_anime.c | 9 + .../field/bg/acre/grd_s_o_10/grd_s_o_10.c | 133 + .../bg/acre/grd_s_o_10/grd_s_o_10_evw_anime.c | 9 + src/data/field/bg/acre/grd_s_o_2/grd_s_o_2.c | 139 + .../bg/acre/grd_s_o_2/grd_s_o_2_evw_anime.c | 9 + src/data/field/bg/acre/grd_s_o_3/grd_s_o_3.c | 133 + .../bg/acre/grd_s_o_3/grd_s_o_3_evw_anime.c | 9 + src/data/field/bg/acre/grd_s_o_4/grd_s_o_4.c | 139 + .../bg/acre/grd_s_o_4/grd_s_o_4_evw_anime.c | 9 + src/data/field/bg/acre/grd_s_o_5/grd_s_o_5.c | 139 + .../bg/acre/grd_s_o_5/grd_s_o_5_evw_anime.c | 9 + src/data/field/bg/acre/grd_s_o_6/grd_s_o_6.c | 133 + .../bg/acre/grd_s_o_6/grd_s_o_6_evw_anime.c | 9 + src/data/field/bg/acre/grd_s_o_7/grd_s_o_7.c | 139 + .../bg/acre/grd_s_o_7/grd_s_o_7_evw_anime.c | 9 + src/data/field/bg/acre/grd_s_o_8/grd_s_o_8.c | 151 + .../bg/acre/grd_s_o_8/grd_s_o_8_evw_anime.c | 9 + src/data/field/bg/acre/grd_s_o_9/grd_s_o_9.c | 145 + .../bg/acre/grd_s_o_9/grd_s_o_9_evw_anime.c | 9 + .../field/bg/acre/grd_s_o_i_1/grd_s_o_i_1.c | 144 + .../field/bg/acre/grd_s_o_i_2/grd_s_o_i_2.c | 96 + .../acre/grd_s_o_i_2/grd_s_o_i_2_evw_anime.c | 9 + .../field/bg/acre/grd_s_o_r1_1/grd_s_o_r1_1.c | 139 + .../grd_s_o_r1_1/grd_s_o_r1_1_evw_anime.c | 9 + .../field/bg/acre/grd_s_o_r1_2/grd_s_o_r1_2.c | 139 + .../grd_s_o_r1_2/grd_s_o_r1_2_evw_anime.c | 9 + .../field/bg/acre/grd_s_o_r1_3/grd_s_o_r1_3.c | 145 + .../grd_s_o_r1_3/grd_s_o_r1_3_evw_anime.c | 9 + .../field/bg/acre/grd_s_o_r1_4/grd_s_o_r1_4.c | 139 + .../grd_s_o_r1_4/grd_s_o_r1_4_evw_anime.c | 9 + .../field/bg/acre/grd_s_o_r1_5/grd_s_o_r1_5.c | 114 + .../grd_s_o_r1_5/grd_s_o_r1_5_evw_anime.c | 9 + .../bg/acre/grd_s_o_r1_b_1/grd_s_o_r1_b_1.c | 96 + .../grd_s_o_r1_b_1/grd_s_o_r1_b_1_evw_anime.c | 9 + .../bg/acre/grd_s_o_r1_b_2/grd_s_o_r1_b_2.c | 95 + .../grd_s_o_r1_b_2/grd_s_o_r1_b_2_evw_anime.c | 9 + .../bg/acre/grd_s_o_r1_b_3/grd_s_o_r1_b_3.c | 95 + .../grd_s_o_r1_b_3/grd_s_o_r1_b_3_evw_anime.c | 9 + .../field/bg/acre/grd_s_o_ta_1/grd_s_o_ta_1.c | 145 + .../grd_s_o_ta_1/grd_s_o_ta_1_evw_anime.c | 9 + .../field/bg/acre/grd_s_o_ta_2/grd_s_o_ta_2.c | 126 + .../grd_s_o_ta_2/grd_s_o_ta_2_evw_anime.c | 9 + .../field/bg/acre/grd_s_o_ta_3/grd_s_o_ta_3.c | 126 + .../grd_s_o_ta_3/grd_s_o_ta_3_evw_anime.c | 9 + .../field/bg/acre/grd_s_o_wf_1/grd_s_o_wf_1.c | 139 + .../grd_s_o_wf_1/grd_s_o_wf_1_evw_anime.c | 9 + .../field/bg/acre/grd_s_o_wf_2/grd_s_o_wf_2.c | 144 + .../grd_s_o_wf_2/grd_s_o_wf_2_evw_anime.c | 9 + .../field/bg/acre/grd_s_o_wf_3/grd_s_o_wf_3.c | 138 + .../grd_s_o_wf_3/grd_s_o_wf_3_evw_anime.c | 9 + .../field/bg/acre/grd_s_r1_1/grd_s_r1_1.c | 224 + .../bg/acre/grd_s_r1_1/grd_s_r1_1_evw_anime.c | 9 + .../field/bg/acre/grd_s_r1_2/grd_s_r1_2.c | 253 + .../bg/acre/grd_s_r1_2/grd_s_r1_2_evw_anime.c | 9 + .../field/bg/acre/grd_s_r1_3/grd_s_r1_3.c | 270 + .../bg/acre/grd_s_r1_3/grd_s_r1_3_evw_anime.c | 9 + .../field/bg/acre/grd_s_r1_4/grd_s_r1_4.c | 224 + .../bg/acre/grd_s_r1_4/grd_s_r1_4_evw_anime.c | 9 + .../field/bg/acre/grd_s_r1_b_1/grd_s_r1_b_1.c | 278 + .../grd_s_r1_b_1/grd_s_r1_b_1_evw_anime.c | 9 + .../field/bg/acre/grd_s_r1_b_2/grd_s_r1_b_2.c | 321 + .../grd_s_r1_b_2/grd_s_r1_b_2_evw_anime.c | 9 + .../field/bg/acre/grd_s_r1_b_3/grd_s_r1_b_3.c | 325 + .../grd_s_r1_b_3/grd_s_r1_b_3_evw_anime.c | 9 + .../field/bg/acre/grd_s_r1_p_1/grd_s_r1_p_1.c | 312 + .../grd_s_r1_p_1/grd_s_r1_p_1_evw_anime.c | 9 + .../field/bg/acre/grd_s_r2_1/grd_s_r2_1.c | 259 + .../bg/acre/grd_s_r2_1/grd_s_r2_1_evw_anime.c | 9 + .../field/bg/acre/grd_s_r2_2/grd_s_r2_2.c | 219 + .../bg/acre/grd_s_r2_2/grd_s_r2_2_evw_anime.c | 9 + .../field/bg/acre/grd_s_r2_3/grd_s_r2_3.c | 280 + .../bg/acre/grd_s_r2_3/grd_s_r2_3_evw_anime.c | 9 + .../field/bg/acre/grd_s_r2_4/grd_s_r2_4.c | 279 + .../bg/acre/grd_s_r2_4/grd_s_r2_4_evw_anime.c | 9 + .../field/bg/acre/grd_s_r2_b_1/grd_s_r2_b_1.c | 367 + .../grd_s_r2_b_1/grd_s_r2_b_1_evw_anime.c | 9 + .../field/bg/acre/grd_s_r2_b_2/grd_s_r2_b_2.c | 316 + .../grd_s_r2_b_2/grd_s_r2_b_2_evw_anime.c | 9 + .../field/bg/acre/grd_s_r2_b_3/grd_s_r2_b_3.c | 340 + .../grd_s_r2_b_3/grd_s_r2_b_3_evw_anime.c | 9 + .../field/bg/acre/grd_s_r2_p_1/grd_s_r2_p_1.c | 344 + .../grd_s_r2_p_1/grd_s_r2_p_1_evw_anime.c | 9 + .../field/bg/acre/grd_s_r3_1/grd_s_r3_1.c | 283 + .../bg/acre/grd_s_r3_1/grd_s_r3_1_evw_anime.c | 9 + .../field/bg/acre/grd_s_r3_2/grd_s_r3_2.c | 248 + .../bg/acre/grd_s_r3_2/grd_s_r3_2_evw_anime.c | 9 + .../field/bg/acre/grd_s_r3_3/grd_s_r3_3.c | 269 + .../bg/acre/grd_s_r3_3/grd_s_r3_3_evw_anime.c | 9 + .../field/bg/acre/grd_s_r3_4/grd_s_r3_4.c | 248 + .../bg/acre/grd_s_r3_4/grd_s_r3_4_evw_anime.c | 9 + .../field/bg/acre/grd_s_r3_b_1/grd_s_r3_b_1.c | 304 + .../grd_s_r3_b_1/grd_s_r3_b_1_evw_anime.c | 9 + .../field/bg/acre/grd_s_r3_b_2/grd_s_r3_b_2.c | 346 + .../grd_s_r3_b_2/grd_s_r3_b_2_evw_anime.c | 9 + .../field/bg/acre/grd_s_r3_b_3/grd_s_r3_b_3.c | 325 + .../grd_s_r3_b_3/grd_s_r3_b_3_evw_anime.c | 9 + .../field/bg/acre/grd_s_r3_p_1/grd_s_r3_p_1.c | 358 + .../grd_s_r3_p_1/grd_s_r3_p_1_evw_anime.c | 9 + .../field/bg/acre/grd_s_r4_1/grd_s_r4_1.c | 249 + .../bg/acre/grd_s_r4_1/grd_s_r4_1_evw_anime.c | 9 + .../field/bg/acre/grd_s_r4_2/grd_s_r4_2.c | 250 + .../bg/acre/grd_s_r4_2/grd_s_r4_2_evw_anime.c | 9 + .../field/bg/acre/grd_s_r4_3/grd_s_r4_3.c | 253 + .../bg/acre/grd_s_r4_3/grd_s_r4_3_evw_anime.c | 9 + .../field/bg/acre/grd_s_r4_b_1/grd_s_r4_b_1.c | 237 + .../grd_s_r4_b_1/grd_s_r4_b_1_evw_anime.c | 9 + .../field/bg/acre/grd_s_r4_b_2/grd_s_r4_b_2.c | 299 + .../grd_s_r4_b_2/grd_s_r4_b_2_evw_anime.c | 9 + .../field/bg/acre/grd_s_r4_p_1/grd_s_r4_p_1.c | 404 + .../grd_s_r4_p_1/grd_s_r4_p_1_evw_anime.c | 9 + .../field/bg/acre/grd_s_r5_1/grd_s_r5_1.c | 269 + .../bg/acre/grd_s_r5_1/grd_s_r5_1_evw_anime.c | 9 + .../field/bg/acre/grd_s_r5_2/grd_s_r5_2.c | 291 + .../bg/acre/grd_s_r5_2/grd_s_r5_2_evw_anime.c | 9 + .../field/bg/acre/grd_s_r5_3/grd_s_r5_3.c | 269 + .../bg/acre/grd_s_r5_3/grd_s_r5_3_evw_anime.c | 9 + .../field/bg/acre/grd_s_r5_b_1/grd_s_r5_b_1.c | 316 + .../grd_s_r5_b_1/grd_s_r5_b_1_evw_anime.c | 9 + .../field/bg/acre/grd_s_r5_b_2/grd_s_r5_b_2.c | 310 + .../grd_s_r5_b_2/grd_s_r5_b_2_evw_anime.c | 9 + .../field/bg/acre/grd_s_r5_p_1/grd_s_r5_p_1.c | 348 + .../grd_s_r5_p_1/grd_s_r5_p_1_evw_anime.c | 9 + .../field/bg/acre/grd_s_r6_1/grd_s_r6_1.c | 213 + .../bg/acre/grd_s_r6_1/grd_s_r6_1_evw_anime.c | 9 + .../field/bg/acre/grd_s_r6_2/grd_s_r6_2.c | 229 + .../bg/acre/grd_s_r6_2/grd_s_r6_2_evw_anime.c | 9 + .../field/bg/acre/grd_s_r6_3/grd_s_r6_3.c | 223 + .../bg/acre/grd_s_r6_3/grd_s_r6_3_evw_anime.c | 9 + .../field/bg/acre/grd_s_r6_b_1/grd_s_r6_b_1.c | 262 + .../grd_s_r6_b_1/grd_s_r6_b_1_evw_anime.c | 9 + .../field/bg/acre/grd_s_r6_b_2/grd_s_r6_b_2.c | 342 + .../grd_s_r6_b_2/grd_s_r6_b_2_evw_anime.c | 9 + .../field/bg/acre/grd_s_r6_p_1/grd_s_r6_p_1.c | 408 + .../grd_s_r6_p_1/grd_s_r6_p_1_evw_anime.c | 9 + .../field/bg/acre/grd_s_r7_1/grd_s_r7_1.c | 259 + .../bg/acre/grd_s_r7_1/grd_s_r7_1_evw_anime.c | 9 + .../field/bg/acre/grd_s_r7_2/grd_s_r7_2.c | 253 + .../bg/acre/grd_s_r7_2/grd_s_r7_2_evw_anime.c | 9 + .../field/bg/acre/grd_s_r7_3/grd_s_r7_3.c | 234 + .../bg/acre/grd_s_r7_3/grd_s_r7_3_evw_anime.c | 9 + .../field/bg/acre/grd_s_r7_b_1/grd_s_r7_b_1.c | 273 + .../grd_s_r7_b_1/grd_s_r7_b_1_evw_anime.c | 9 + .../field/bg/acre/grd_s_r7_b_2/grd_s_r7_b_2.c | 346 + .../grd_s_r7_b_2/grd_s_r7_b_2_evw_anime.c | 9 + .../field/bg/acre/grd_s_r7_p_1/grd_s_r7_p_1.c | 337 + .../grd_s_r7_p_1/grd_s_r7_p_1_evw_anime.c | 9 + src/data/field/bg/acre/grd_s_t_1/grd_s_t_1.c | 224 + .../bg/acre/grd_s_t_1/grd_s_t_1_evw_anime.c | 9 + .../field/bg/acre/grd_s_t_10/grd_s_t_10.c | 323 + src/data/field/bg/acre/grd_s_t_2/grd_s_t_2.c | 273 + src/data/field/bg/acre/grd_s_t_3/grd_s_t_3.c | 225 + src/data/field/bg/acre/grd_s_t_4/grd_s_t_4.c | 284 + .../bg/acre/grd_s_t_4/grd_s_t_4_evw_anime.c | 9 + src/data/field/bg/acre/grd_s_t_5/grd_s_t_5.c | 340 + .../bg/acre/grd_s_t_5/grd_s_t_5_evw_anime.c | 9 + src/data/field/bg/acre/grd_s_t_6/grd_s_t_6.c | 355 + src/data/field/bg/acre/grd_s_t_7/grd_s_t_7.c | 325 + src/data/field/bg/acre/grd_s_t_8/grd_s_t_8.c | 268 + src/data/field/bg/acre/grd_s_t_9/grd_s_t_9.c | 268 + .../field/bg/acre/grd_s_t_po_1/grd_s_t_po_1.c | 256 + .../field/bg/acre/grd_s_t_po_2/grd_s_t_po_2.c | 253 + .../field/bg/acre/grd_s_t_po_3/grd_s_t_po_3.c | 292 + .../grd_s_t_po_3/grd_s_t_po_3_evw_anime.c | 9 + .../field/bg/acre/grd_s_t_r1_1/grd_s_t_r1_1.c | 294 + .../grd_s_t_r1_1/grd_s_t_r1_1_evw_anime.c | 9 + .../field/bg/acre/grd_s_t_r1_2/grd_s_t_r1_2.c | 339 + .../grd_s_t_r1_2/grd_s_t_r1_2_evw_anime.c | 9 + .../field/bg/acre/grd_s_t_r1_3/grd_s_t_r1_3.c | 344 + .../grd_s_t_r1_3/grd_s_t_r1_3_evw_anime.c | 9 + .../field/bg/acre/grd_s_t_r1_4/grd_s_t_r1_4.c | 328 + .../grd_s_t_r1_4/grd_s_t_r1_4_evw_anime.c | 9 + .../field/bg/acre/grd_s_t_r1_5/grd_s_t_r1_5.c | 339 + .../grd_s_t_r1_5/grd_s_t_r1_5_evw_anime.c | 9 + .../field/bg/acre/grd_s_t_sh_1/grd_s_t_sh_1.c | 256 + .../field/bg/acre/grd_s_t_sh_2/grd_s_t_sh_2.c | 280 + .../grd_s_t_sh_2/grd_s_t_sh_2_evw_anime.c | 9 + .../field/bg/acre/grd_s_t_sh_3/grd_s_t_sh_3.c | 244 + .../bg/acre/grd_s_t_st1_1/grd_s_t_st1_1.c | 280 + .../bg/acre/grd_s_t_st1_2/grd_s_t_st1_2.c | 318 + .../bg/acre/grd_s_t_st1_3/grd_s_t_st1_3.c | 287 + .../field/bg/acre/grd_yamishop/grd_yamishop.c | 476 + src/data/field/bg/acre/myr_etc/myr_etc.c | 74 + .../bg/acre/police_indoor/police_indoor.c | 643 + .../field/bg/acre/rom_museum1/rom_museum1.c | 412 + .../field/bg/acre/rom_museum2/rom_museum2.c | 417 + .../field/bg/acre/rom_museum3/rom_museum3.c | 417 + .../field/bg/acre/rom_museum5/rom_museum5.c | 344 + .../field/bg/acre/rom_shop4_1/rom_shop4_1.c | 612 + .../bg/acre/rom_shop4_fuku/rom_shop4_fuku.c | 604 + .../field/bg/acre/rom_tailor/rom_tailor.c | 930 ++ src/data/field/bg/acre/rom_tent/rom_tent.c | 524 + .../field/bg/acre/rom_toudai/rom_toudai.c | 212 + .../field/bg/acre/rom_train_in/rom_train_in.c | 621 + .../field/bg/acre/rom_uranai/rom_uranai.c | 399 + .../bg/acre/rom_uranai/rom_uranai_evw_anime.c | 9 + src/data/field/bg/acre/room01/room01.c | 96 + src/data/field/bg/acre/tmp/tmp.c | 37 + src/data/field/bg/acre/tmp2/tmp2.c | 149 + src/data/field/bg/acre/tmp3/tmp3.c | 141 + src/data/field/bg/acre/tmp4/tmp4.c | 139 + src/data/field/bg/acre/tmpr/tmpr.c | 55 +- src/data/field/bg/acre/tmpr/tmpr_evw_anime.c | 9 + src/data/field/bg/acre/tmpr2/tmpr2.c | 100 + .../field/bg/acre/tmpr2/tmpr2_evw_anime.c | 9 + src/data/field/bg/acre/tmpr3/tmpr3.c | 242 + .../field/bg/acre/tmpr3/tmpr3_evw_anime.c | 9 + src/data/field/bg/acre/tmpr4/tmpr4.c | 224 + .../field/bg/acre/tmpr4/tmpr4_evw_anime.c | 9 + tools/assetinclude_gen.py | 243 + tools/tu_config.py | 145 +- 428 files changed, 95563 insertions(+), 537 deletions(-) create mode 100644 src/data/field/bg/acre/bg_data.c create mode 100644 src/data/field/bg/acre/grd_player_select/grd_player_select.c create mode 100644 src/data/field/bg/acre/grd_player_select/grd_player_select_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_post_office/grd_post_office.c create mode 100644 src/data/field/bg/acre/grd_s_c1_1/grd_s_c1_1.c create mode 100644 src/data/field/bg/acre/grd_s_c1_2/grd_s_c1_2.c create mode 100644 src/data/field/bg/acre/grd_s_c1_3/grd_s_c1_3.c create mode 100644 src/data/field/bg/acre/grd_s_c1_4/grd_s_c1_4.c create mode 100644 src/data/field/bg/acre/grd_s_c1_5/grd_s_c1_5.c create mode 100644 src/data/field/bg/acre/grd_s_c1_r1_1/grd_s_c1_r1_1.c create mode 100644 src/data/field/bg/acre/grd_s_c1_r1_1/grd_s_c1_r1_1_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_c1_r1_2/grd_s_c1_r1_2.c create mode 100644 src/data/field/bg/acre/grd_s_c1_r1_2/grd_s_c1_r1_2_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_c1_r1_3/grd_s_c1_r1_3.c create mode 100644 src/data/field/bg/acre/grd_s_c1_r1_3/grd_s_c1_r1_3_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_c1_r2_1/grd_s_c1_r2_1.c create mode 100644 src/data/field/bg/acre/grd_s_c1_r2_1/grd_s_c1_r2_1_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_c1_r2_2/grd_s_c1_r2_2.c create mode 100644 src/data/field/bg/acre/grd_s_c1_r2_2/grd_s_c1_r2_2_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_c1_r2_3/grd_s_c1_r2_3.c create mode 100644 src/data/field/bg/acre/grd_s_c1_r2_3/grd_s_c1_r2_3_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_c1_r3_1/grd_s_c1_r3_1.c create mode 100644 src/data/field/bg/acre/grd_s_c1_r3_1/grd_s_c1_r3_1_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_c1_r3_2/grd_s_c1_r3_2.c create mode 100644 src/data/field/bg/acre/grd_s_c1_r3_2/grd_s_c1_r3_2_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_c1_r3_3/grd_s_c1_r3_3.c create mode 100644 src/data/field/bg/acre/grd_s_c1_r3_3/grd_s_c1_r3_3_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_c1_s_1/grd_s_c1_s_1.c create mode 100644 src/data/field/bg/acre/grd_s_c1_s_2/grd_s_c1_s_2.c create mode 100644 src/data/field/bg/acre/grd_s_c1_s_3/grd_s_c1_s_3.c create mode 100644 src/data/field/bg/acre/grd_s_c1_s_4/grd_s_c1_s_4.c create mode 100644 src/data/field/bg/acre/grd_s_c2_1/grd_s_c2_1.c create mode 100644 src/data/field/bg/acre/grd_s_c2_2/grd_s_c2_2.c create mode 100644 src/data/field/bg/acre/grd_s_c2_3/grd_s_c2_3.c create mode 100644 src/data/field/bg/acre/grd_s_c2_3/grd_s_c2_3_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_c2_r1_1/grd_s_c2_r1_1.c create mode 100644 src/data/field/bg/acre/grd_s_c2_r1_1/grd_s_c2_r1_1_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_c2_r1_2/grd_s_c2_r1_2.c create mode 100644 src/data/field/bg/acre/grd_s_c2_r1_2/grd_s_c2_r1_2_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_c2_r2_1/grd_s_c2_r2_1.c create mode 100644 src/data/field/bg/acre/grd_s_c2_r2_1/grd_s_c2_r2_1_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_c2_r2_2/grd_s_c2_r2_2.c create mode 100644 src/data/field/bg/acre/grd_s_c2_r2_2/grd_s_c2_r2_2_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_c2_s_1/grd_s_c2_s_1.c create mode 100644 src/data/field/bg/acre/grd_s_c2_s_2/grd_s_c2_s_2.c create mode 100644 src/data/field/bg/acre/grd_s_c2_s_3/grd_s_c2_s_3.c create mode 100644 src/data/field/bg/acre/grd_s_c3_1/grd_s_c3_1.c create mode 100644 src/data/field/bg/acre/grd_s_c3_2/grd_s_c3_2.c create mode 100644 src/data/field/bg/acre/grd_s_c3_2/grd_s_c3_2_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_c3_3/grd_s_c3_3.c create mode 100644 src/data/field/bg/acre/grd_s_c3_r1_1/grd_s_c3_r1_1.c create mode 100644 src/data/field/bg/acre/grd_s_c3_r1_1/grd_s_c3_r1_1_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_c3_r1_2/grd_s_c3_r1_2.c create mode 100644 src/data/field/bg/acre/grd_s_c3_r1_2/grd_s_c3_r1_2_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_c3_r2_1/grd_s_c3_r2_1.c create mode 100644 src/data/field/bg/acre/grd_s_c3_r2_1/grd_s_c3_r2_1_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_c3_r2_2/grd_s_c3_r2_2.c create mode 100644 src/data/field/bg/acre/grd_s_c3_r2_2/grd_s_c3_r2_2_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_c3_s_1/grd_s_c3_s_1.c create mode 100644 src/data/field/bg/acre/grd_s_c3_s_1/grd_s_c3_s_1_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_c4_1/grd_s_c4_1.c create mode 100644 src/data/field/bg/acre/grd_s_c4_2/grd_s_c4_2.c create mode 100644 src/data/field/bg/acre/grd_s_c4_3/grd_s_c4_3.c create mode 100644 src/data/field/bg/acre/grd_s_c4_r1_1/grd_s_c4_r1_1.c create mode 100644 src/data/field/bg/acre/grd_s_c4_r1_1/grd_s_c4_r1_1_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_c4_r1_2/grd_s_c4_r1_2.c create mode 100644 src/data/field/bg/acre/grd_s_c4_r1_2/grd_s_c4_r1_2_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_c4_r2_1/grd_s_c4_r2_1.c create mode 100644 src/data/field/bg/acre/grd_s_c4_r2_1/grd_s_c4_r2_1_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_c4_r2_2/grd_s_c4_r2_2.c create mode 100644 src/data/field/bg/acre/grd_s_c4_r2_2/grd_s_c4_r2_2_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_c4_r3_1/grd_s_c4_r3_1.c create mode 100644 src/data/field/bg/acre/grd_s_c4_r3_1/grd_s_c4_r3_1_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_c4_r3_2/grd_s_c4_r3_2.c create mode 100644 src/data/field/bg/acre/grd_s_c4_r3_2/grd_s_c4_r3_2_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_c4_s_1/grd_s_c4_s_1.c create mode 100644 src/data/field/bg/acre/grd_s_c4_s_2/grd_s_c4_s_2.c create mode 100644 src/data/field/bg/acre/grd_s_c5_1/grd_s_c5_1.c create mode 100644 src/data/field/bg/acre/grd_s_c5_2/grd_s_c5_2.c create mode 100644 src/data/field/bg/acre/grd_s_c5_3/grd_s_c5_3.c create mode 100644 src/data/field/bg/acre/grd_s_c5_r1_1/grd_s_c5_r1_1.c create mode 100644 src/data/field/bg/acre/grd_s_c5_r1_1/grd_s_c5_r1_1_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_c5_r1_2/grd_s_c5_r1_2.c create mode 100644 src/data/field/bg/acre/grd_s_c5_r1_2/grd_s_c5_r1_2_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_c5_r2_1/grd_s_c5_r2_1.c create mode 100644 src/data/field/bg/acre/grd_s_c5_r2_1/grd_s_c5_r2_1_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_c5_r2_2/grd_s_c5_r2_2.c create mode 100644 src/data/field/bg/acre/grd_s_c5_r2_2/grd_s_c5_r2_2_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_c5_r3_1/grd_s_c5_r3_1.c create mode 100644 src/data/field/bg/acre/grd_s_c5_r3_1/grd_s_c5_r3_1_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_c5_r3_2/grd_s_c5_r3_2.c create mode 100644 src/data/field/bg/acre/grd_s_c5_r3_2/grd_s_c5_r3_2_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_c5_s_1/grd_s_c5_s_1.c create mode 100644 src/data/field/bg/acre/grd_s_c5_s_2/grd_s_c5_s_2.c create mode 100644 src/data/field/bg/acre/grd_s_c6_1/grd_s_c6_1.c create mode 100644 src/data/field/bg/acre/grd_s_c6_2/grd_s_c6_2.c create mode 100644 src/data/field/bg/acre/grd_s_c6_3/grd_s_c6_3.c create mode 100644 src/data/field/bg/acre/grd_s_c6_r1_1/grd_s_c6_r1_1.c create mode 100644 src/data/field/bg/acre/grd_s_c6_r1_1/grd_s_c6_r1_1_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_c6_r1_2/grd_s_c6_r1_2.c create mode 100644 src/data/field/bg/acre/grd_s_c6_r1_2/grd_s_c6_r1_2_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_c6_r3_1/grd_s_c6_r3_1.c create mode 100644 src/data/field/bg/acre/grd_s_c6_r3_1/grd_s_c6_r3_1_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_c6_s_1/grd_s_c6_s_1.c create mode 100644 src/data/field/bg/acre/grd_s_c7_1/grd_s_c7_1.c create mode 100644 src/data/field/bg/acre/grd_s_c7_2/grd_s_c7_2.c create mode 100644 src/data/field/bg/acre/grd_s_c7_3/grd_s_c7_3.c create mode 100644 src/data/field/bg/acre/grd_s_c7_3/grd_s_c7_3_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_c7_r1_1/grd_s_c7_r1_1.c create mode 100644 src/data/field/bg/acre/grd_s_c7_r1_1/grd_s_c7_r1_1_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_c7_r1_2/grd_s_c7_r1_2.c create mode 100644 src/data/field/bg/acre/grd_s_c7_r1_2/grd_s_c7_r1_2_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_c7_r3_1/grd_s_c7_r3_1.c create mode 100644 src/data/field/bg/acre/grd_s_c7_r3_1/grd_s_c7_r3_1_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_c7_r3_2/grd_s_c7_r3_2.c create mode 100644 src/data/field/bg/acre/grd_s_c7_r3_2/grd_s_c7_r3_2_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_c7_s_1/grd_s_c7_s_1.c create mode 100644 src/data/field/bg/acre/grd_s_c7_s_2/grd_s_c7_s_2.c create mode 100644 src/data/field/bg/acre/grd_s_c7_s_3/grd_s_c7_s_3.c create mode 100644 src/data/field/bg/acre/grd_s_e1_1/grd_s_e1_1.c create mode 100644 src/data/field/bg/acre/grd_s_e1_r1_1/grd_s_e1_r1_1.c create mode 100644 src/data/field/bg/acre/grd_s_e1_r1_1/grd_s_e1_r1_1_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_e2_1/grd_s_e2_1.c create mode 100644 src/data/field/bg/acre/grd_s_e2_c1_1/grd_s_e2_c1_1.c create mode 100644 src/data/field/bg/acre/grd_s_e2_m_1/grd_s_e2_m_1.c create mode 100644 src/data/field/bg/acre/grd_s_e2_o_1/grd_s_e2_o_1.c create mode 100644 src/data/field/bg/acre/grd_s_e2_t_1/grd_s_e2_t_1.c create mode 100644 src/data/field/bg/acre/grd_s_e3_1/grd_s_e3_1.c create mode 100644 src/data/field/bg/acre/grd_s_e3_c1_1/grd_s_e3_c1_1.c create mode 100644 src/data/field/bg/acre/grd_s_e3_m_1/grd_s_e3_m_1.c create mode 100644 src/data/field/bg/acre/grd_s_e3_o_1/grd_s_e3_o_1.c create mode 100644 src/data/field/bg/acre/grd_s_e3_t_1/grd_s_e3_t_1.c create mode 100644 src/data/field/bg/acre/grd_s_e4_1/grd_s_e4_1.c create mode 100644 src/data/field/bg/acre/grd_s_e5_1/grd_s_e5_1.c create mode 100644 src/data/field/bg/acre/grd_s_f_1/grd_s_f_1.c create mode 100644 src/data/field/bg/acre/grd_s_f_10/grd_s_f_10.c create mode 100644 src/data/field/bg/acre/grd_s_f_2/grd_s_f_2.c create mode 100644 src/data/field/bg/acre/grd_s_f_3/grd_s_f_3.c create mode 100644 src/data/field/bg/acre/grd_s_f_4/grd_s_f_4.c create mode 100644 src/data/field/bg/acre/grd_s_f_4/grd_s_f_4_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_f_5/grd_s_f_5.c create mode 100644 src/data/field/bg/acre/grd_s_f_5/grd_s_f_5_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_f_6/grd_s_f_6.c create mode 100644 src/data/field/bg/acre/grd_s_f_6/grd_s_f_6_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_f_7/grd_s_f_7.c create mode 100644 src/data/field/bg/acre/grd_s_f_8/grd_s_f_8.c create mode 100644 src/data/field/bg/acre/grd_s_f_9/grd_s_f_9.c create mode 100644 src/data/field/bg/acre/grd_s_f_ko_1/grd_s_f_ko_1.c create mode 100644 src/data/field/bg/acre/grd_s_f_ko_2/grd_s_f_ko_2.c create mode 100644 src/data/field/bg/acre/grd_s_f_ko_3/grd_s_f_ko_3.c create mode 100644 src/data/field/bg/acre/grd_s_f_ko_3/grd_s_f_ko_3_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_f_mh_1/grd_s_f_mh_1.c create mode 100644 src/data/field/bg/acre/grd_s_f_mh_2/grd_s_f_mh_2.c create mode 100644 src/data/field/bg/acre/grd_s_f_mh_3/grd_s_f_mh_3.c create mode 100644 src/data/field/bg/acre/grd_s_f_mu_1/grd_s_f_mu_1.c create mode 100644 src/data/field/bg/acre/grd_s_f_mu_2/grd_s_f_mu_2.c create mode 100644 src/data/field/bg/acre/grd_s_f_mu_3/grd_s_f_mu_3.c create mode 100644 src/data/field/bg/acre/grd_s_f_mu_3/grd_s_f_mu_3_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_f_pk_1/grd_s_f_pk_1.c create mode 100644 src/data/field/bg/acre/grd_s_f_pk_2/grd_s_f_pk_2.c create mode 100644 src/data/field/bg/acre/grd_s_f_pk_3/grd_s_f_pk_3.c create mode 100644 src/data/field/bg/acre/grd_s_hole_test/grd_s_hole_test.c create mode 100644 src/data/field/bg/acre/grd_s_il_1/grd_s_il_1.c create mode 100644 src/data/field/bg/acre/grd_s_il_2/grd_s_il_2.c create mode 100644 src/data/field/bg/acre/grd_s_il_3/grd_s_il_3.c create mode 100644 src/data/field/bg/acre/grd_s_il_4/grd_s_il_4.c create mode 100644 src/data/field/bg/acre/grd_s_ir_1/grd_s_ir_1.c create mode 100644 src/data/field/bg/acre/grd_s_ir_2/grd_s_ir_2.c create mode 100644 src/data/field/bg/acre/grd_s_ir_3/grd_s_ir_3.c create mode 100644 src/data/field/bg/acre/grd_s_ir_4/grd_s_ir_4.c create mode 100644 src/data/field/bg/acre/grd_s_m_1/grd_s_m_1.c create mode 100644 src/data/field/bg/acre/grd_s_m_10/grd_s_m_10.c create mode 100644 src/data/field/bg/acre/grd_s_m_2/grd_s_m_2.c create mode 100644 src/data/field/bg/acre/grd_s_m_3/grd_s_m_3.c create mode 100644 src/data/field/bg/acre/grd_s_m_4/grd_s_m_4.c create mode 100644 src/data/field/bg/acre/grd_s_m_5/grd_s_m_5.c create mode 100644 src/data/field/bg/acre/grd_s_m_6/grd_s_m_6.c create mode 100644 src/data/field/bg/acre/grd_s_m_7/grd_s_m_7.c create mode 100644 src/data/field/bg/acre/grd_s_m_8/grd_s_m_8.c create mode 100644 src/data/field/bg/acre/grd_s_m_9/grd_s_m_9.c create mode 100644 src/data/field/bg/acre/grd_s_m_r1_1/grd_s_m_r1_1.c create mode 100644 src/data/field/bg/acre/grd_s_m_r1_1/grd_s_m_r1_1_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_m_r1_2/grd_s_m_r1_2.c create mode 100644 src/data/field/bg/acre/grd_s_m_r1_2/grd_s_m_r1_2_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_m_r1_3/grd_s_m_r1_3.c create mode 100644 src/data/field/bg/acre/grd_s_m_r1_3/grd_s_m_r1_3_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_m_r1_4/grd_s_m_r1_4.c create mode 100644 src/data/field/bg/acre/grd_s_m_r1_4/grd_s_m_r1_4_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_m_r1_5/grd_s_m_r1_5.c create mode 100644 src/data/field/bg/acre/grd_s_m_r1_5/grd_s_m_r1_5_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_m_r1_b_1/grd_s_m_r1_b_1.c create mode 100644 src/data/field/bg/acre/grd_s_m_r1_b_1/grd_s_m_r1_b_1_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_m_r1_b_2/grd_s_m_r1_b_2.c create mode 100644 src/data/field/bg/acre/grd_s_m_r1_b_2/grd_s_m_r1_b_2_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_m_r1_b_3/grd_s_m_r1_b_3.c create mode 100644 src/data/field/bg/acre/grd_s_m_r1_b_3/grd_s_m_r1_b_3_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_m_ta_1/grd_s_m_ta_1.c create mode 100644 src/data/field/bg/acre/grd_s_m_ta_1/grd_s_m_ta_1_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_m_ta_2/grd_s_m_ta_2.c create mode 100644 src/data/field/bg/acre/grd_s_m_ta_2/grd_s_m_ta_2_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_m_ta_3/grd_s_m_ta_3.c create mode 100644 src/data/field/bg/acre/grd_s_m_ta_3/grd_s_m_ta_3_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_m_wf_1/grd_s_m_wf_1.c create mode 100644 src/data/field/bg/acre/grd_s_m_wf_1/grd_s_m_wf_1_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_m_wf_2/grd_s_m_wf_2.c create mode 100644 src/data/field/bg/acre/grd_s_m_wf_2/grd_s_m_wf_2_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_m_wf_3/grd_s_m_wf_3.c create mode 100644 src/data/field/bg/acre/grd_s_m_wf_3/grd_s_m_wf_3_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_o_1/grd_s_o_1.c create mode 100644 src/data/field/bg/acre/grd_s_o_1/grd_s_o_1_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_o_10/grd_s_o_10.c create mode 100644 src/data/field/bg/acre/grd_s_o_10/grd_s_o_10_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_o_2/grd_s_o_2.c create mode 100644 src/data/field/bg/acre/grd_s_o_2/grd_s_o_2_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_o_3/grd_s_o_3.c create mode 100644 src/data/field/bg/acre/grd_s_o_3/grd_s_o_3_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_o_4/grd_s_o_4.c create mode 100644 src/data/field/bg/acre/grd_s_o_4/grd_s_o_4_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_o_5/grd_s_o_5.c create mode 100644 src/data/field/bg/acre/grd_s_o_5/grd_s_o_5_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_o_6/grd_s_o_6.c create mode 100644 src/data/field/bg/acre/grd_s_o_6/grd_s_o_6_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_o_7/grd_s_o_7.c create mode 100644 src/data/field/bg/acre/grd_s_o_7/grd_s_o_7_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_o_8/grd_s_o_8.c create mode 100644 src/data/field/bg/acre/grd_s_o_8/grd_s_o_8_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_o_9/grd_s_o_9.c create mode 100644 src/data/field/bg/acre/grd_s_o_9/grd_s_o_9_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_o_i_1/grd_s_o_i_1.c create mode 100644 src/data/field/bg/acre/grd_s_o_i_2/grd_s_o_i_2.c create mode 100644 src/data/field/bg/acre/grd_s_o_i_2/grd_s_o_i_2_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_o_r1_1/grd_s_o_r1_1.c create mode 100644 src/data/field/bg/acre/grd_s_o_r1_1/grd_s_o_r1_1_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_o_r1_2/grd_s_o_r1_2.c create mode 100644 src/data/field/bg/acre/grd_s_o_r1_2/grd_s_o_r1_2_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_o_r1_3/grd_s_o_r1_3.c create mode 100644 src/data/field/bg/acre/grd_s_o_r1_3/grd_s_o_r1_3_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_o_r1_4/grd_s_o_r1_4.c create mode 100644 src/data/field/bg/acre/grd_s_o_r1_4/grd_s_o_r1_4_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_o_r1_5/grd_s_o_r1_5.c create mode 100644 src/data/field/bg/acre/grd_s_o_r1_5/grd_s_o_r1_5_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_o_r1_b_1/grd_s_o_r1_b_1.c create mode 100644 src/data/field/bg/acre/grd_s_o_r1_b_1/grd_s_o_r1_b_1_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_o_r1_b_2/grd_s_o_r1_b_2.c create mode 100644 src/data/field/bg/acre/grd_s_o_r1_b_2/grd_s_o_r1_b_2_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_o_r1_b_3/grd_s_o_r1_b_3.c create mode 100644 src/data/field/bg/acre/grd_s_o_r1_b_3/grd_s_o_r1_b_3_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_o_ta_1/grd_s_o_ta_1.c create mode 100644 src/data/field/bg/acre/grd_s_o_ta_1/grd_s_o_ta_1_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_o_ta_2/grd_s_o_ta_2.c create mode 100644 src/data/field/bg/acre/grd_s_o_ta_2/grd_s_o_ta_2_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_o_ta_3/grd_s_o_ta_3.c create mode 100644 src/data/field/bg/acre/grd_s_o_ta_3/grd_s_o_ta_3_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_o_wf_1/grd_s_o_wf_1.c create mode 100644 src/data/field/bg/acre/grd_s_o_wf_1/grd_s_o_wf_1_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_o_wf_2/grd_s_o_wf_2.c create mode 100644 src/data/field/bg/acre/grd_s_o_wf_2/grd_s_o_wf_2_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_o_wf_3/grd_s_o_wf_3.c create mode 100644 src/data/field/bg/acre/grd_s_o_wf_3/grd_s_o_wf_3_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_r1_1/grd_s_r1_1.c create mode 100644 src/data/field/bg/acre/grd_s_r1_1/grd_s_r1_1_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_r1_2/grd_s_r1_2.c create mode 100644 src/data/field/bg/acre/grd_s_r1_2/grd_s_r1_2_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_r1_3/grd_s_r1_3.c create mode 100644 src/data/field/bg/acre/grd_s_r1_3/grd_s_r1_3_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_r1_4/grd_s_r1_4.c create mode 100644 src/data/field/bg/acre/grd_s_r1_4/grd_s_r1_4_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_r1_b_1/grd_s_r1_b_1.c create mode 100644 src/data/field/bg/acre/grd_s_r1_b_1/grd_s_r1_b_1_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_r1_b_2/grd_s_r1_b_2.c create mode 100644 src/data/field/bg/acre/grd_s_r1_b_2/grd_s_r1_b_2_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_r1_b_3/grd_s_r1_b_3.c create mode 100644 src/data/field/bg/acre/grd_s_r1_b_3/grd_s_r1_b_3_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_r1_p_1/grd_s_r1_p_1.c create mode 100644 src/data/field/bg/acre/grd_s_r1_p_1/grd_s_r1_p_1_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_r2_1/grd_s_r2_1.c create mode 100644 src/data/field/bg/acre/grd_s_r2_1/grd_s_r2_1_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_r2_2/grd_s_r2_2.c create mode 100644 src/data/field/bg/acre/grd_s_r2_2/grd_s_r2_2_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_r2_3/grd_s_r2_3.c create mode 100644 src/data/field/bg/acre/grd_s_r2_3/grd_s_r2_3_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_r2_4/grd_s_r2_4.c create mode 100644 src/data/field/bg/acre/grd_s_r2_4/grd_s_r2_4_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_r2_b_1/grd_s_r2_b_1.c create mode 100644 src/data/field/bg/acre/grd_s_r2_b_1/grd_s_r2_b_1_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_r2_b_2/grd_s_r2_b_2.c create mode 100644 src/data/field/bg/acre/grd_s_r2_b_2/grd_s_r2_b_2_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_r2_b_3/grd_s_r2_b_3.c create mode 100644 src/data/field/bg/acre/grd_s_r2_b_3/grd_s_r2_b_3_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_r2_p_1/grd_s_r2_p_1.c create mode 100644 src/data/field/bg/acre/grd_s_r2_p_1/grd_s_r2_p_1_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_r3_1/grd_s_r3_1.c create mode 100644 src/data/field/bg/acre/grd_s_r3_1/grd_s_r3_1_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_r3_2/grd_s_r3_2.c create mode 100644 src/data/field/bg/acre/grd_s_r3_2/grd_s_r3_2_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_r3_3/grd_s_r3_3.c create mode 100644 src/data/field/bg/acre/grd_s_r3_3/grd_s_r3_3_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_r3_4/grd_s_r3_4.c create mode 100644 src/data/field/bg/acre/grd_s_r3_4/grd_s_r3_4_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_r3_b_1/grd_s_r3_b_1.c create mode 100644 src/data/field/bg/acre/grd_s_r3_b_1/grd_s_r3_b_1_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_r3_b_2/grd_s_r3_b_2.c create mode 100644 src/data/field/bg/acre/grd_s_r3_b_2/grd_s_r3_b_2_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_r3_b_3/grd_s_r3_b_3.c create mode 100644 src/data/field/bg/acre/grd_s_r3_b_3/grd_s_r3_b_3_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_r3_p_1/grd_s_r3_p_1.c create mode 100644 src/data/field/bg/acre/grd_s_r3_p_1/grd_s_r3_p_1_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_r4_1/grd_s_r4_1.c create mode 100644 src/data/field/bg/acre/grd_s_r4_1/grd_s_r4_1_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_r4_2/grd_s_r4_2.c create mode 100644 src/data/field/bg/acre/grd_s_r4_2/grd_s_r4_2_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_r4_3/grd_s_r4_3.c create mode 100644 src/data/field/bg/acre/grd_s_r4_3/grd_s_r4_3_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_r4_b_1/grd_s_r4_b_1.c create mode 100644 src/data/field/bg/acre/grd_s_r4_b_1/grd_s_r4_b_1_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_r4_b_2/grd_s_r4_b_2.c create mode 100644 src/data/field/bg/acre/grd_s_r4_b_2/grd_s_r4_b_2_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_r4_p_1/grd_s_r4_p_1.c create mode 100644 src/data/field/bg/acre/grd_s_r4_p_1/grd_s_r4_p_1_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_r5_1/grd_s_r5_1.c create mode 100644 src/data/field/bg/acre/grd_s_r5_1/grd_s_r5_1_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_r5_2/grd_s_r5_2.c create mode 100644 src/data/field/bg/acre/grd_s_r5_2/grd_s_r5_2_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_r5_3/grd_s_r5_3.c create mode 100644 src/data/field/bg/acre/grd_s_r5_3/grd_s_r5_3_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_r5_b_1/grd_s_r5_b_1.c create mode 100644 src/data/field/bg/acre/grd_s_r5_b_1/grd_s_r5_b_1_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_r5_b_2/grd_s_r5_b_2.c create mode 100644 src/data/field/bg/acre/grd_s_r5_b_2/grd_s_r5_b_2_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_r5_p_1/grd_s_r5_p_1.c create mode 100644 src/data/field/bg/acre/grd_s_r5_p_1/grd_s_r5_p_1_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_r6_1/grd_s_r6_1.c create mode 100644 src/data/field/bg/acre/grd_s_r6_1/grd_s_r6_1_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_r6_2/grd_s_r6_2.c create mode 100644 src/data/field/bg/acre/grd_s_r6_2/grd_s_r6_2_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_r6_3/grd_s_r6_3.c create mode 100644 src/data/field/bg/acre/grd_s_r6_3/grd_s_r6_3_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_r6_b_1/grd_s_r6_b_1.c create mode 100644 src/data/field/bg/acre/grd_s_r6_b_1/grd_s_r6_b_1_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_r6_b_2/grd_s_r6_b_2.c create mode 100644 src/data/field/bg/acre/grd_s_r6_b_2/grd_s_r6_b_2_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_r6_p_1/grd_s_r6_p_1.c create mode 100644 src/data/field/bg/acre/grd_s_r6_p_1/grd_s_r6_p_1_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_r7_1/grd_s_r7_1.c create mode 100644 src/data/field/bg/acre/grd_s_r7_1/grd_s_r7_1_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_r7_2/grd_s_r7_2.c create mode 100644 src/data/field/bg/acre/grd_s_r7_2/grd_s_r7_2_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_r7_3/grd_s_r7_3.c create mode 100644 src/data/field/bg/acre/grd_s_r7_3/grd_s_r7_3_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_r7_b_1/grd_s_r7_b_1.c create mode 100644 src/data/field/bg/acre/grd_s_r7_b_1/grd_s_r7_b_1_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_r7_b_2/grd_s_r7_b_2.c create mode 100644 src/data/field/bg/acre/grd_s_r7_b_2/grd_s_r7_b_2_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_r7_p_1/grd_s_r7_p_1.c create mode 100644 src/data/field/bg/acre/grd_s_r7_p_1/grd_s_r7_p_1_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_t_1/grd_s_t_1.c create mode 100644 src/data/field/bg/acre/grd_s_t_1/grd_s_t_1_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_t_10/grd_s_t_10.c create mode 100644 src/data/field/bg/acre/grd_s_t_2/grd_s_t_2.c create mode 100644 src/data/field/bg/acre/grd_s_t_3/grd_s_t_3.c create mode 100644 src/data/field/bg/acre/grd_s_t_4/grd_s_t_4.c create mode 100644 src/data/field/bg/acre/grd_s_t_4/grd_s_t_4_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_t_5/grd_s_t_5.c create mode 100644 src/data/field/bg/acre/grd_s_t_5/grd_s_t_5_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_t_6/grd_s_t_6.c create mode 100644 src/data/field/bg/acre/grd_s_t_7/grd_s_t_7.c create mode 100644 src/data/field/bg/acre/grd_s_t_8/grd_s_t_8.c create mode 100644 src/data/field/bg/acre/grd_s_t_9/grd_s_t_9.c create mode 100644 src/data/field/bg/acre/grd_s_t_po_1/grd_s_t_po_1.c create mode 100644 src/data/field/bg/acre/grd_s_t_po_2/grd_s_t_po_2.c create mode 100644 src/data/field/bg/acre/grd_s_t_po_3/grd_s_t_po_3.c create mode 100644 src/data/field/bg/acre/grd_s_t_po_3/grd_s_t_po_3_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_t_r1_1/grd_s_t_r1_1.c create mode 100644 src/data/field/bg/acre/grd_s_t_r1_1/grd_s_t_r1_1_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_t_r1_2/grd_s_t_r1_2.c create mode 100644 src/data/field/bg/acre/grd_s_t_r1_2/grd_s_t_r1_2_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_t_r1_3/grd_s_t_r1_3.c create mode 100644 src/data/field/bg/acre/grd_s_t_r1_3/grd_s_t_r1_3_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_t_r1_4/grd_s_t_r1_4.c create mode 100644 src/data/field/bg/acre/grd_s_t_r1_4/grd_s_t_r1_4_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_t_r1_5/grd_s_t_r1_5.c create mode 100644 src/data/field/bg/acre/grd_s_t_r1_5/grd_s_t_r1_5_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_t_sh_1/grd_s_t_sh_1.c create mode 100644 src/data/field/bg/acre/grd_s_t_sh_2/grd_s_t_sh_2.c create mode 100644 src/data/field/bg/acre/grd_s_t_sh_2/grd_s_t_sh_2_evw_anime.c create mode 100644 src/data/field/bg/acre/grd_s_t_sh_3/grd_s_t_sh_3.c create mode 100644 src/data/field/bg/acre/grd_s_t_st1_1/grd_s_t_st1_1.c create mode 100644 src/data/field/bg/acre/grd_s_t_st1_2/grd_s_t_st1_2.c create mode 100644 src/data/field/bg/acre/grd_s_t_st1_3/grd_s_t_st1_3.c create mode 100644 src/data/field/bg/acre/grd_yamishop/grd_yamishop.c create mode 100644 src/data/field/bg/acre/myr_etc/myr_etc.c create mode 100644 src/data/field/bg/acre/police_indoor/police_indoor.c create mode 100644 src/data/field/bg/acre/rom_museum1/rom_museum1.c create mode 100644 src/data/field/bg/acre/rom_museum2/rom_museum2.c create mode 100644 src/data/field/bg/acre/rom_museum3/rom_museum3.c create mode 100644 src/data/field/bg/acre/rom_museum5/rom_museum5.c create mode 100644 src/data/field/bg/acre/rom_shop4_1/rom_shop4_1.c create mode 100644 src/data/field/bg/acre/rom_shop4_fuku/rom_shop4_fuku.c create mode 100644 src/data/field/bg/acre/rom_tailor/rom_tailor.c create mode 100644 src/data/field/bg/acre/rom_tent/rom_tent.c create mode 100644 src/data/field/bg/acre/rom_toudai/rom_toudai.c create mode 100644 src/data/field/bg/acre/rom_train_in/rom_train_in.c create mode 100644 src/data/field/bg/acre/rom_uranai/rom_uranai.c create mode 100644 src/data/field/bg/acre/rom_uranai/rom_uranai_evw_anime.c create mode 100644 src/data/field/bg/acre/room01/room01.c create mode 100644 src/data/field/bg/acre/tmp/tmp.c create mode 100644 src/data/field/bg/acre/tmp2/tmp2.c create mode 100644 src/data/field/bg/acre/tmp3/tmp3.c create mode 100644 src/data/field/bg/acre/tmp4/tmp4.c create mode 100644 src/data/field/bg/acre/tmpr/tmpr_evw_anime.c create mode 100644 src/data/field/bg/acre/tmpr2/tmpr2.c create mode 100644 src/data/field/bg/acre/tmpr2/tmpr2_evw_anime.c create mode 100644 src/data/field/bg/acre/tmpr3/tmpr3.c create mode 100644 src/data/field/bg/acre/tmpr3/tmpr3_evw_anime.c create mode 100644 src/data/field/bg/acre/tmpr4/tmpr4.c create mode 100644 src/data/field/bg/acre/tmpr4/tmpr4_evw_anime.c create mode 100644 tools/assetinclude_gen.py diff --git a/config/assets.yml b/config/assets.yml index bd9a4b4a..560a15d2 100644 --- a/config/assets.yml +++ b/config/assets.yml @@ -336,250 +336,6 @@ config/rel.yml: type: pal16 # flowers - flower/obj_flower_tex: - addrs: [0x8074FE80, 0x80750680] - flower/obj_flower_a_v: - addrs: [0x80750680, 0x80750700] - type: vtx - flower/obj_flower_b_v: - addrs: [0x80750700, 0x80750780] - type: vtx - flower/obj_flower_c_v: - addrs: [0x80750780, 0x80750800] - type: vtx - flower/obj_flower_leaf_tex: - addrs: [0x807508C0, 0x807510C0] - flower/obj_flower_leaf_v: - addrs: [0x807510C0, 0x80751100] - type: vtx - - # dataobj.obj item names - itemName_paper: - addrs: [0x808BF660, 0x808C0660] - itemName_money: - addrs: [0x808C0660, 0x808C06A0] - itemName_tool: - addrs: [0x808C06A0, 0x808C0C60] - itemName_fish: - addrs: [0x808C0C60, 0x808C0EE0] - itemName_cloth: - addrs: [0x808C0EE0, 0x808C1ED0] - itemName_etc: - addrs: [0x808C1ED0, 0x808C21E0] - itemName_carpet: - addrs: [0x808C21E0, 0x808C2610] - itemName_wall: - addrs: [0x808C2610, 0x808C2A40] - itemName_fruit: - addrs: [0x808C2A40, 0x808C2AC0] - itemName_plant: - addrs: [0x808C2AC0, 0x808C2B70] - itemName_minidisk: - addrs: [0x808C2B70, 0x808C2EE0] - itemName_dummy: - addrs: [0x808C2EE0, 0x808C2FE0] - itemName_ticket: - addrs: [0x808C2FE0, 0x808C35E0] - itemName_insect: - addrs: [0x808C35E0, 0x808C38B0] - itemName_hukubukuro: - addrs: [0x808C38B0, 0x808C38D0] - itemName_kabu: - addrs: [0x808C38D0, 0x808C3910] - ftrName_table: - addrs: [0x808C3910, 0x808C7910] - ftrName2_table: - addrs: [0x808C7910, 0x808C8830] - # ac_mural.o - obj_mural_v: - addrs: [0x80904600, 0x80904640] - type: vtx - mFM_beach_pal_0: - addrs: [0x80C59CA8, 0x80C59CC8] - type: pal16 - mFM_beach_pal_1: - addrs: [0x80C59CC8, 0x80C59CE8] - type: pal16 - mFM_beach_pal_2: - addrs: [0x80C59CE8, 0x80C59D08] - type: pal16 - mFM_beach_pal_3: - addrs: [0x80C59D08, 0x80C59D28] - type: pal16 - mFM_beach_pal_4: - addrs: [0x80C59D28, 0x80C59D48] - type: pal16 - mFM_beach_pal_5: - addrs: [0x80C59D48, 0x80C59D68] - type: pal16 - mFM_beach_pal_6: - addrs: [0x80C59D68, 0x80C59D88] - type: pal16 - mFM_beach_pal_7: - addrs: [0x80C59D88, 0x80C59DA8] - type: pal16 - mFM_beach_pal_8: - addrs: [0x80C59DA8, 0x80C59DC8] - type: pal16 - mFM_beach_pal_9: - addrs: [0x80C59DC8, 0x80C59DE8] - type: pal16 - mFM_beach_pal_10: - addrs: [0x80C59DE8, 0x80C59E08] - type: pal16 - mFM_beach_pal_11: - addrs: [0x80C59E08, 0x80C59E28] - type: pal16 - mFM_bush_pal_0: - addrs: [0x80C78680, 0x80C786A0] - type: pal16 - mFM_bush_pal_1: - addrs: [0x80C786A0, 0x80C786C0] - type: pal16 - mFM_bush_pal_2: - addrs: [0x80C786C0, 0x80C786E0] - type: pal16 - mFM_bush_pal_3: - addrs: [0x80C786E0, 0x80C78700] - type: pal16 - mFM_bush_pal_4: - addrs: [0x80C78700, 0x80C78720] - type: pal16 - mFM_bush_pal_5: - addrs: [0x80C78720, 0x80C78740] - type: pal16 - mFM_bush_pal_6: - addrs: [0x80C78740, 0x80C78760] - type: pal16 - mFM_bush_pal_7: - addrs: [0x80C78760, 0x80C78780] - type: pal16 - mFM_bush_pal_8: - addrs: [0x80C78780, 0x80C787A0] - type: pal16 - mFM_bush_pal_9: - addrs: [0x80C787A0, 0x80C787C0] - type: pal16 - mFM_bush_pal_10: - addrs: [0x80C787C0, 0x80C787E0] - type: pal16 - mFM_bush_pal_11: - addrs: [0x80C787E0, 0x80C78800] - type: pal16 - mFM_cliff_pal_0: - addrs: [0x80C78988, 0x80C789A8] - type: pal16 - mFM_cliff_pal_1: - addrs: [0x80C789A8, 0x80C789C8] - type: pal16 - mFM_cliff_pal_2: - addrs: [0x80C789C8, 0x80C789E8] - type: pal16 - mFM_cliff_pal_3: - addrs: [0x80C789E8, 0x80C78A08] - type: pal16 - mFM_cliff_pal_4: - addrs: [0x80C78A08, 0x80C78A28] - type: pal16 - mFM_cliff_pal_5: - addrs: [0x80C78A28, 0x80C78A48] - type: pal16 - mFM_cliff_pal_6: - addrs: [0x80C78A48, 0x80C78A68] - type: pal16 - mFM_cliff_pal_7: - addrs: [0x80C78A68, 0x80C78A88] - type: pal16 - mFM_cliff_pal_8: - addrs: [0x80C78A88, 0x80C78AA8] - type: pal16 - mFM_cliff_pal_9: - addrs: [0x80C78AA8, 0x80C78AC8] - type: pal16 - mFM_cliff_pal_10: - addrs: [0x80C78AC8, 0x80C78AE8] - type: pal16 - mFM_cliff_pal_11: - addrs: [0x80C78AE8, 0x80C78B08] - type: pal16 - mFM_earth_pal_0: - addrs: [0x80C90100, 0x80C90120] - type: pal16 - mFM_earth_pal_1: - addrs: [0x80C90120, 0x80C90140] - type: pal16 - mFM_earth_pal_2: - addrs: [0x80C90140, 0x80C90160] - type: pal16 - mFM_earth_pal_3: - addrs: [0x80C90160, 0x80C90180] - type: pal16 - mFM_earth_pal_4: - addrs: [0x80C90180, 0x80C901A0] - type: pal16 - mFM_earth_pal_5: - addrs: [0x80C901A0, 0x80C901C0] - type: pal16 - mFM_earth_pal_6: - addrs: [0x80C901C0, 0x80C901E0] - type: pal16 - mFM_earth_pal_7: - addrs: [0x80C901E0, 0x80C90200] - type: pal16 - mFM_earth_pal_8: - addrs: [0x80C90200, 0x80C90220] - type: pal16 - mFM_earth_pal_9: - addrs: [0x80C90220, 0x80C90240] - type: pal16 - mFM_earth_pal_10: - addrs: [0x80C90240, 0x80C90260] - type: pal16 - mFM_earth_pal_11: - addrs: [0x80C90260, 0x80C90280] - type: pal16 - mFM_rail_pal_0: - addrs: [0x80F8C2C8, 0x80F8C2E8] - type: pal16 - mFM_rail_pal_1: - addrs: [0x80F8C2E8, 0x80F8C308] - type: pal16 - mFM_rail_pal_2: - addrs: [0x80F8C308, 0x80F8C328] - type: pal16 - mFM_rail_pal_3: - addrs: [0x80F8C328, 0x80F8C348] - type: pal16 - mFM_rail_pal_4: - addrs: [0x80F8C348, 0x80F8C368] - type: pal16 - mFM_rail_pal_5: - addrs: [0x80F8C368, 0x80F8C388] - type: pal16 - mFM_rail_pal_6: - addrs: [0x80F8C388, 0x80F8C3A8] - type: pal16 - mFM_rail_pal_7: - addrs: [0x80F8C3A8, 0x80F8C3C8] - type: pal16 - mFM_rail_pal_8: - addrs: [0x80F8C3C8, 0x80F8C3E8] - type: pal16 - mFM_rail_pal_9: - addrs: [0x80F8C3E8, 0x80F8C408] - type: pal16 - mFM_rail_pal_10: - addrs: [0x80F8C408, 0x80F8C428] - type: pal16 - mFM_rail_pal_11: - addrs: [0x80F8C428, 0x80F8C448] - type: pal16 - mFM_rail_pal_12: - addrs: [0x80F8C448, 0x80F8C468] - type: pal16 - # ac_koinobori - - # NPC draw data assets npc/mdl/bev_1_v: addrs: [0x806E03A0, 0x806E1DF0] type: vtx @@ -1036,6 +792,24 @@ config/rel.yml: addrs: [0x806FAE60, 0x806FAF60] npc/tex/bea_10_tmem_txt: addrs: [0x806FAF60, 0x806FB360] + flower/obj_flower_tex: + addrs: [0x8074FE80, 0x80750680] + flower/obj_flower_a_v: + addrs: [0x80750680, 0x80750700] + type: vtx + flower/obj_flower_b_v: + addrs: [0x80750700, 0x80750780] + type: vtx + flower/obj_flower_c_v: + addrs: [0x80750780, 0x80750800] + type: vtx + flower/obj_flower_leaf_tex: + addrs: [0x807508C0, 0x807510C0] + flower/obj_flower_leaf_v: + addrs: [0x807510C0, 0x80751100] + type: vtx + + # dataobj.obj item names npc/mdl/pbr_1_v: addrs: [0x8076DFA8, 0x8076F6E8] type: vtx @@ -5222,6 +4996,42 @@ config/rel.yml: addrs: [0x808BEF60, 0x808BF060] npc/tex/xsq_1_tmem_txt: addrs: [0x808BF060, 0x808BF660] + itemName_paper: + addrs: [0x808BF660, 0x808C0660] + itemName_money: + addrs: [0x808C0660, 0x808C06A0] + itemName_tool: + addrs: [0x808C06A0, 0x808C0C60] + itemName_fish: + addrs: [0x808C0C60, 0x808C0EE0] + itemName_cloth: + addrs: [0x808C0EE0, 0x808C1ED0] + itemName_etc: + addrs: [0x808C1ED0, 0x808C21E0] + itemName_carpet: + addrs: [0x808C21E0, 0x808C2610] + itemName_wall: + addrs: [0x808C2610, 0x808C2A40] + itemName_fruit: + addrs: [0x808C2A40, 0x808C2AC0] + itemName_plant: + addrs: [0x808C2AC0, 0x808C2B70] + itemName_minidisk: + addrs: [0x808C2B70, 0x808C2EE0] + itemName_dummy: + addrs: [0x808C2EE0, 0x808C2FE0] + itemName_ticket: + addrs: [0x808C2FE0, 0x808C35E0] + itemName_insect: + addrs: [0x808C35E0, 0x808C38B0] + itemName_hukubukuro: + addrs: [0x808C38B0, 0x808C38D0] + itemName_kabu: + addrs: [0x808C38D0, 0x808C3910] + ftrName_table: + addrs: [0x808C3910, 0x808C7910] + ftrName2_table: + addrs: [0x808C7910, 0x808C8830] npc/mdl/boa_1_v: addrs: [0x808C88A8, 0x808CA4F8] type: vtx @@ -6172,6 +5982,10 @@ config/rel.yml: addrs: [0x80904100, 0x80904200] npc/tex/mus_10_tmem_txt: addrs: [0x80904200, 0x80904600] + # ac_mural.o + obj_mural_v: + addrs: [0x80904600, 0x80904640] + type: vtx npc/mdl/hgh_1_v: addrs: [0x80911E70, 0x80913B10] type: vtx @@ -8443,6 +8257,9 @@ config/rel.yml: addrs: [0x80C48DE0, 0x80C48EE0] npc/tex/end_1_tmem_txt: addrs: [0x80C48EE0, 0x80C493A0] + field/bg/rom_train_3_pal: + addrs: [0x80C49C00, 0x80C49C20] + type: pal16 npc/mdl/tuk_1_v: addrs: [0x80C4B710, 0x80C4D460] type: vtx @@ -8596,7 +8413,1365 @@ config/rel.yml: addrs: [0x80C55A20, 0x80C55B20] npc/tex/wol_6_tmem_txt: addrs: [0x80C55B20, 0x80C55F20] + mFM_beach_pal_0: + addrs: [0x80C59CA8, 0x80C59CC8] + type: pal16 + mFM_beach_pal_1: + addrs: [0x80C59CC8, 0x80C59CE8] + type: pal16 + mFM_beach_pal_2: + addrs: [0x80C59CE8, 0x80C59D08] + type: pal16 + mFM_beach_pal_3: + addrs: [0x80C59D08, 0x80C59D28] + type: pal16 + mFM_beach_pal_4: + addrs: [0x80C59D28, 0x80C59D48] + type: pal16 + mFM_beach_pal_5: + addrs: [0x80C59D48, 0x80C59D68] + type: pal16 + mFM_beach_pal_6: + addrs: [0x80C59D68, 0x80C59D88] + type: pal16 + mFM_beach_pal_7: + addrs: [0x80C59D88, 0x80C59DA8] + type: pal16 + mFM_beach_pal_8: + addrs: [0x80C59DA8, 0x80C59DC8] + type: pal16 + mFM_beach_pal_9: + addrs: [0x80C59DC8, 0x80C59DE8] + type: pal16 + mFM_beach_pal_10: + addrs: [0x80C59DE8, 0x80C59E08] + type: pal16 + mFM_beach_pal_11: + addrs: [0x80C59E08, 0x80C59E28] + type: pal16 + # grd_yamishop.c + field/bg/rom_yami_wall_pal: + addrs: [0x80C5A240, 0x80C5A260] + type: pal16 + field/bg/rom_yami_floor_pal: + addrs: [0x80C5A260, 0x80C5A280] + type: pal16 + field/bg/rom_yami_box_pal: + addrs: [0x80C5A280, 0x80C5A2A0] + type: pal16 + field/bg/rom_yami_mono01_pal: + addrs: [0x80C5A2A0, 0x80C5A2C0] + type: pal16 + field/bg/rom_yami_mono02_pal: + addrs: [0x80C5A2C0, 0x80C5A2E0] + type: pal16 + field/bg/rom_yami_mono03_pal: + addrs: [0x80C5A2E0, 0x80C5A300] + type: pal16 + field/bg/rom_yami_qup_pal: + addrs: [0x80C5A300, 0x80C5A320] + type: pal16 + field/bg/rom_yami_hyou_pal: + addrs: [0x80C5A320, 0x80C5A340] + type: pal16 + field/bg/rom_yami_step_tex_pal: + addrs: [0x80C5A340, 0x80C5A360] + type: pal16 + field/bg/rom_yami_hugu_pal: + addrs: [0x80C5A360, 0x80C5A380] + type: pal16 + field/bg/rom_yami_tama_pal: + addrs: [0x80C5A380, 0x80C5A3A0] + type: pal16 + field/bg/rom_yami_wall_tex: + addrs: [0x80C5A3A0, 0x80C5A6A0] + field/bg/rom_yami_floor_tex: + addrs: [0x80C5A6A0, 0x80C5AEA0] + field/bg/rom_yami_poll_tex: + addrs: [0x80C5AEA0, 0x80C5AF20] + field/bg/rom_yami_box01_tex: + addrs: [0x80C5AF20, 0x80C5B020] + field/bg/rom_yami_box02_tex: + addrs: [0x80C5B020, 0x80C5B0A0] + field/bg/rom_yami_mono01_tex: + addrs: [0x80C5B0A0, 0x80C5B2A0] + field/bg/rom_yami_mono02_tex: + addrs: [0x80C5B2A0, 0x80C5B4A0] + field/bg/rom_yami_mono03_tex: + addrs: [0x80C5B4A0, 0x80C5B6A0] + field/bg/rom_yami_qup_tex: + addrs: [0x80C5B6A0, 0x80C5B9A0] + field/bg/rom_yami_hyou_tex: + addrs: [0x80C5B9A0, 0x80C5BAA0] + field/bg/rom_yami_hyou02_tex: + addrs: [0x80C5BAA0, 0x80C5BBA0] + field/bg/rom_yami_step_tex: + addrs: [0x80C5BBA0, 0x80C5BFA0] + field/bg/rom_yami_hugu_tex: + addrs: [0x80C5BFA0, 0x80C5C2A0] + field/bg/rom_yami_tama_tex: + addrs: [0x80C5C2A0, 0x80C5C5A0] + field/bg/rom_yami_shadow01_tex: + addrs: [0x80C5C5A0, 0x80C5C6A0] + field/bg/grd_yamishop_v: + addrs: [0x80C5C6A0, 0x80C5D770] + type: vtx + # grd_post_office.c + field/bg/yubin_k_pal: + addrs: [0x80C5DBA0, 0x80C5DBC0] + type: pal16 + field/bg/yubin_k2_pal: + addrs: [0x80C5DBC0, 0x80C5DBE0] + type: pal16 + field/bg/yubin_floor_pal: + addrs: [0x80C5DBE0, 0x80C5DC00] + type: pal16 + field/bg/yubin_hakari_pal: + addrs: [0x80C5DC00, 0x80C5DC20] + type: pal16 + field/bg/yubin_wall_pal: + addrs: [0x80C5DC20, 0x80C5DC40] + type: pal16 + field/bg/yubin_letter_pal: + addrs: [0x80C5DC40, 0x80C5DC60] + type: pal16 + field/bg/yubin_us_bag_pal: + addrs: [0x80C5DC60, 0x80C5DC80] + type: pal16 + field/bg/zzzyubin_tree_pal: + addrs: [0x80C5DC80, 0x80C5DCA0] + type: pal16 + field/bg/yubin_t_pal: + addrs: [0x80C5DCA0, 0x80C5DCC0] + type: pal16 + field/bg/yubin_us_card_pal: + addrs: [0x80C5DCC0, 0x80C5DCE0] + type: pal16 + field/bg/yuibn_kaunta01_tex: + addrs: [0x80C5DCE0, 0x80C5DEE0] + field/bg/yuibn_kaunta02_tex: + addrs: [0x80C5DEE0, 0x80C5E0E0] + field/bg/yuibn_desk01_tex: + addrs: [0x80C5E0E0, 0x80C5E2E0] + field/bg/yubin_ark01_tex: + addrs: [0x80C5E2E0, 0x80C5E6E0] + field/bg/yuibn_kaunta03_tex: + addrs: [0x80C5E6E0, 0x80C5E7E0] + field/bg/yuibn_kaunta04_tex: + addrs: [0x80C5E7E0, 0x80C5E9E0] + field/bg/yubin_floor01_tex: + addrs: [0x80C5E9E0, 0x80C5F1E0] + field/bg/yubin_floor02_tex: + addrs: [0x80C5F1E0, 0x80C5F9E0] + field/bg/yubin_floor03_tex: + addrs: [0x80C5F9E0, 0x80C5FAE0] + field/bg/yubin_hakari01_tex: + addrs: [0x80C5FAE0, 0x80C5FBE0] + field/bg/yubin_hakari02_tex: + addrs: [0x80C5FBE0, 0x80C5FC60] + field/bg/yubin_hakari03_tex: + addrs: [0x80C5FC60, 0x80C5FD60] + field/bg/yubin_wall04_tex: + addrs: [0x80C5FD60, 0x80C60060] + field/bg/yubin_letter01_tex: + addrs: [0x80C60060, 0x80C60160] + field/bg/yubin_window_tex: + addrs: [0x80C60160, 0x80C601E0] + field/bg/yubin_us_bag_tex: + addrs: [0x80C601E0, 0x80C60660] + field/bg/yubin_tree2_tex: + addrs: [0x80C60660, 0x80C60960] + field/bg/yubin_tree_tex: + addrs: [0x80C60960, 0x80C60A60] + field/bg/yubin_tree3_tex: + addrs: [0x80C60A60, 0x80C60AE0] + field/bg/yubin_tree4_tex: + addrs: [0x80C60AE0, 0x80C60B60] + field/bg/yubin_step_tex: + addrs: [0x80C60B60, 0x80C60C60] + field/bg/rom_yubinkyoku_akril_tex: + addrs: [0x80C60C60, 0x80C60CE0] + field/bg/rom_yubinkyoku_shede_tex: + addrs: [0x80C60CE0, 0x80C60DE0] + field/bg/yubin_us_card_tex: + addrs: [0x80C60DE0, 0x80C611E0] + field/bg/yubin_us_mat_tex: + addrs: [0x80C611E0, 0x80C614E0] + field/bg/rom_yubinkyoku_shadow_tex: + addrs: [0x80C614E0, 0x80C615E0] + field/bg/yubin_us_card2_tex: + addrs: [0x80C615E0, 0x80C616E0] + field/bg/grd_post_office_v: + addrs: [0x80C616E0, 0x80C62DE0] + type: vtx + # tmp4.c + field/bg/tmp4_v: + addrs: [0x80C63408, 0x80C640C8] + type: vtx + # tmpr4.c + field/bg/tmpr4_v: + addrs: [0x80C646D8, 0x80C659A8] + type: vtx + # tmp3.c + field/bg/tmp3_v: + addrs: [0x80C66278, 0x80C67298] + type: vtx + # tmpr3.c + field/bg/tmpr3_v: + addrs: [0x80C67838, 0x80C68998] + type: vtx + # tmp.c + field/bg/tmp_v: + addrs: [0x80C69338, 0x80C694F8] + type: vtx + # tmpr.c + field/bg/tmpr_v: + addrs: [0x80C695F0, 0x80C6A330] + type: vtx + # tmp2.c + field/bg/grd_s_cliff_pal: + addrs: [0x80C6A8C8, 0x80C6A8E8] + type: pal16 + field/bg/grd_s_earth_pal: + addrs: [0x80C6A8E8, 0x80C6A908] + type: pal16 + field/bg/grd_s_cliff_tex: + addrs: [0x80C6A908, 0x80C6B108] + field/bg/grd_s_earth_tex: + addrs: [0x80C6B108, 0x80C6B908] + field/bg/grd_s_grass_tex: + addrs: [0x80C6B908, 0x80C6BB08] + field/bg/tmp2_v: + addrs: [0x80C6BB08, 0x80C6C9C8] + type: vtx + # tmpr2.c + field/bg/grd_1_earth_pal: + addrs: [0x80C6CE78, 0x80C6CE98] + type: pal16 + field/bg/grd_s_river_tex: + addrs: [0x80C6CE98, 0x80C6D298] + field/bg/grd_water1_tex: + addrs: [0x80C6D298, 0x80C6D498] + field/bg/grd_s_grass_tex2: + addrs: [0x80C6D498, 0x80C6D698] + field/bg/tmpr2_v: + addrs: [0x80C6D698, 0x80C6D9F8] + type: vtx + mFM_bush_pal_0: + addrs: [0x80C78680, 0x80C786A0] + type: pal16 + mFM_bush_pal_1: + addrs: [0x80C786A0, 0x80C786C0] + type: pal16 + mFM_bush_pal_2: + addrs: [0x80C786C0, 0x80C786E0] + type: pal16 + mFM_bush_pal_3: + addrs: [0x80C786E0, 0x80C78700] + type: pal16 + mFM_bush_pal_4: + addrs: [0x80C78700, 0x80C78720] + type: pal16 + mFM_bush_pal_5: + addrs: [0x80C78720, 0x80C78740] + type: pal16 + mFM_bush_pal_6: + addrs: [0x80C78740, 0x80C78760] + type: pal16 + mFM_bush_pal_7: + addrs: [0x80C78760, 0x80C78780] + type: pal16 + mFM_bush_pal_8: + addrs: [0x80C78780, 0x80C787A0] + type: pal16 + mFM_bush_pal_9: + addrs: [0x80C787A0, 0x80C787C0] + type: pal16 + mFM_bush_pal_10: + addrs: [0x80C787C0, 0x80C787E0] + type: pal16 + mFM_bush_pal_11: + addrs: [0x80C787E0, 0x80C78800] + type: pal16 + mFM_cliff_pal_0: + addrs: [0x80C78988, 0x80C789A8] + type: pal16 + mFM_cliff_pal_1: + addrs: [0x80C789A8, 0x80C789C8] + type: pal16 + mFM_cliff_pal_2: + addrs: [0x80C789C8, 0x80C789E8] + type: pal16 + mFM_cliff_pal_3: + addrs: [0x80C789E8, 0x80C78A08] + type: pal16 + mFM_cliff_pal_4: + addrs: [0x80C78A08, 0x80C78A28] + type: pal16 + mFM_cliff_pal_5: + addrs: [0x80C78A28, 0x80C78A48] + type: pal16 + mFM_cliff_pal_6: + addrs: [0x80C78A48, 0x80C78A68] + type: pal16 + mFM_cliff_pal_7: + addrs: [0x80C78A68, 0x80C78A88] + type: pal16 + mFM_cliff_pal_8: + addrs: [0x80C78A88, 0x80C78AA8] + type: pal16 + mFM_cliff_pal_9: + addrs: [0x80C78AA8, 0x80C78AC8] + type: pal16 + mFM_cliff_pal_10: + addrs: [0x80C78AC8, 0x80C78AE8] + type: pal16 + mFM_cliff_pal_11: + addrs: [0x80C78AE8, 0x80C78B08] + type: pal16 + mFM_earth_pal_0: + addrs: [0x80C90100, 0x80C90120] + type: pal16 + mFM_earth_pal_1: + addrs: [0x80C90120, 0x80C90140] + type: pal16 + mFM_earth_pal_2: + addrs: [0x80C90140, 0x80C90160] + type: pal16 + mFM_earth_pal_3: + addrs: [0x80C90160, 0x80C90180] + type: pal16 + mFM_earth_pal_4: + addrs: [0x80C90180, 0x80C901A0] + type: pal16 + mFM_earth_pal_5: + addrs: [0x80C901A0, 0x80C901C0] + type: pal16 + mFM_earth_pal_6: + addrs: [0x80C901C0, 0x80C901E0] + type: pal16 + mFM_earth_pal_7: + addrs: [0x80C901E0, 0x80C90200] + type: pal16 + mFM_earth_pal_8: + addrs: [0x80C90200, 0x80C90220] + type: pal16 + mFM_earth_pal_9: + addrs: [0x80C90220, 0x80C90240] + type: pal16 + mFM_earth_pal_10: + addrs: [0x80C90240, 0x80C90260] + type: pal16 + mFM_earth_pal_11: + addrs: [0x80C90260, 0x80C90280] + type: pal16 + # map submenu + # grd_s_c1_1.c + field/bg/grd_s_c1_1_v: + addrs: [0x80CE7320, 0x80CE8180] + type: vtx + # grd_s_c1_2.c + field/bg/grd_s_c1_2_v: + addrs: [0x80CE83C0, 0x80CE9290] + type: vtx + # grd_s_c1_3.c + field/bg/grd_s_c1_3_v: + addrs: [0x80CE9510, 0x80CEA330] + type: vtx + # grd_s_c1_4.c + field/bg/grd_s_c1_4_v: + addrs: [0x80CEA598, 0x80CEB5D8] + type: vtx + # grd_s_c1_5.c + field/bg/grd_s_c1_5_v: + addrs: [0x80CEB868, 0x80CEC538] + type: vtx + # grd_s_c1_r1_1.c + field/bg/grd_s_c1_r1_1_v: + addrs: [0x80CEC748, 0x80CED978] + type: vtx + # grd_s_c1_r1_2.c + field/bg/grd_s_c1_r1_2_v: + addrs: [0x80CEDD00, 0x80CEEE20] + type: vtx + # grd_s_c1_r1_3.c + field/bg/grd_s_c1_r1_3_v: + addrs: [0x80CEF138, 0x80CF0258] + type: vtx + # grd_s_c1_r2_1.c + field/bg/grd_s_c1_r2_1_v: + addrs: [0x80CF0548, 0x80CF1648] + type: vtx + # grd_s_c1_r2_2.c + field/bg/grd_s_c1_r2_2_v: + addrs: [0x80CF1970, 0x80CF2AF0] + type: vtx + # grd_s_c1_r2_3.c + field/bg/grd_s_c1_r2_3_v: + addrs: [0x80CF2DD8, 0x80CF40D8] + type: vtx + # grd_s_c1_r3_1.c + field/bg/grd_s_c1_r3_1_v: + addrs: [0x80CF4450, 0x80CF5230] + type: vtx + # grd_s_c1_r3_2.c + field/bg/grd_s_c1_r3_2_v: + addrs: [0x80CF5518, 0x80CF6508] + type: vtx + # grd_s_c1_r3_3.c + field/bg/grd_s_c1_r3_3_v: + addrs: [0x80CF6820, 0x80CF7900] + type: vtx + # grd_s_c1_s_1.c + field/bg/grd_s_c1_s_1_v: + addrs: [0x80CF7C58, 0x80CF8918] + type: vtx + # grd_s_c1_s_2.c + field/bg/grd_s_c1_s_2_v: + addrs: [0x80CF8B38, 0x80CF99F8] + type: vtx + # grd_s_c1_s_3.c + field/bg/grd_s_c1_s_3_v: + addrs: [0x80CF9C60, 0x80CFAC60] + type: vtx + # grd_s_c1_s_4.c + field/bg/grd_s_c1_s_4_v: + addrs: [0x80CFAEA0, 0x80CFBF20] + type: vtx + # grd_s_c2_1.c + field/bg/grd_s_c2_1_v: + addrs: [0x80CFC1B0, 0x80CFCF80] + type: vtx + # grd_s_c2_2.c + field/bg/grd_s_c2_2_v: + addrs: [0x80CFD1D0, 0x80CFE010] + type: vtx + # grd_s_c2_3.c + field/bg/grd_s_c2_3_v: + addrs: [0x80CFE230, 0x80CFF2B0] + type: vtx + # grd_s_c2_r1_1.c + field/bg/grd_s_c2_r1_1_v: + addrs: [0x80CFF5B8, 0x80D00688] + type: vtx + # grd_s_c2_r1_2.c + field/bg/grd_s_c2_r1_2_v: + addrs: [0x80D009B0, 0x80D01B50] + type: vtx + # grd_s_c2_r2_1.c + field/bg/grd_s_c2_r2_1_v: + addrs: [0x80D01E80, 0x80D02E70] + type: vtx + # grd_s_c2_r2_2.c + field/bg/grd_s_c2_r2_2_v: + addrs: [0x80D03150, 0x80D04360] + type: vtx + # grd_s_c2_s_1.c + field/bg/grd_s_c2_s_1_v: + addrs: [0x80D04680, 0x80D05790] + type: vtx + # grd_s_c2_s_2.c + field/bg/grd_s_c2_s_2_v: + addrs: [0x80D05A20, 0x80D06880] + type: vtx + # grd_s_c2_s_3.c + field/bg/grd_s_c2_s_3_v: + addrs: [0x80D06AF0, 0x80D07880] + type: vtx + # grd_s_c3_1.c + field/bg/grd_s_c3_1_v: + addrs: [0x80D07AF0, 0x80D08A30] + type: vtx + # grd_s_c3_2.c + field/bg/grd_s_c3_2_v: + addrs: [0x80D08C90, 0x80D09A90] + type: vtx + # grd_s_c3_3.c + field/bg/grd_s_c3_3_v: + addrs: [0x80D09D80, 0x80D0AAA0] + type: vtx + # grd_s_c3_r1_1.c + field/bg/grd_s_c3_r1_1_v: + addrs: [0x80D0AD00, 0x80D0BBA0] + type: vtx + # grd_s_c3_r1_2.c + field/bg/grd_s_c3_r1_2_v: + addrs: [0x80D0BE58, 0x80D0CE48] + type: vtx + # grd_s_c3_r2_1.c + field/bg/grd_s_c3_r2_1_v: + addrs: [0x80D0D158, 0x80D0E468] + type: vtx + # grd_s_c3_r2_2.c + field/bg/grd_s_c3_r2_2_v: + addrs: [0x80D0E7D8, 0x80D0FAE8] + type: vtx + # grd_s_c3_s_1.c + field/bg/grd_s_c3_s_1_v: + addrs: [0x80D0FE60, 0x80D11330] + type: vtx + # grd_s_c4_1.c + field/bg/grd_s_c4_1_v: + addrs: [0x80D11628, 0x80D12218] + type: vtx + # grd_s_c4_2.c + field/bg/grd_s_c4_2_v: + addrs: [0x80D12430, 0x80D13370] + type: vtx + # grd_s_c4_3.c + field/bg/grd_s_c4_3_v: + addrs: [0x80D135B0, 0x80D14340] + type: vtx + # grd_s_c4_r1_1.c + field/bg/grd_s_c4_r1_1_v: + addrs: [0x80D145A8, 0x80D155A8] + type: vtx + # grd_s_c4_r1_2.c + field/bg/grd_s_c4_r1_2_v: + addrs: [0x80D158C0, 0x80D16860] + type: vtx + # grd_s_c4_r2_1.c + field/bg/grd_s_c4_r2_1_v: + addrs: [0x80D16B90, 0x80D17C00] + type: vtx + # grd_s_c4_r2_2.c + field/bg/grd_s_c4_r2_2_v: + addrs: [0x80D17F08, 0x80D18D08] + type: vtx + # grd_s_c4_r3_1.c + field/bg/grd_s_c4_r3_1_v: + addrs: [0x80D18FC0, 0x80D19DE0] + type: vtx + # grd_s_c4_r3_2.c + field/bg/grd_s_c4_r3_2_v: + addrs: [0x80D1A0D8, 0x80D1AE08] + type: vtx + # grd_s_c4_s_1.c + field/bg/grd_s_c4_s_1_v: + addrs: [0x80D1B088, 0x80D1BDD8] + type: vtx + # grd_s_c4_s_2.c + field/bg/grd_s_c4_s_2_v: + addrs: [0x80D1C030, 0x80D1D020] + type: vtx + # grd_s_c5_1.c + field/bg/grd_s_c5_1_v: + addrs: [0x80D1D2A8, 0x80D1DD98] + type: vtx + # grd_s_c5_2.c + field/bg/grd_s_c5_2_v: + addrs: [0x80D1DFA8, 0x80D1EF28] + type: vtx + # grd_s_c5_3.c + field/bg/grd_s_c5_3_v: + addrs: [0x80D1F1B8, 0x80D1FD08] + type: vtx + # grd_s_c5_r1_1.c + field/bg/grd_s_c5_r1_1_v: + addrs: [0x80D1FF30, 0x80D211D0] + type: vtx + # grd_s_c5_r1_2.c + field/bg/grd_s_c5_r1_2_v: + addrs: [0x80D21520, 0x80D22760] + type: vtx + # grd_s_c5_r2_1.c + field/bg/grd_s_c5_r2_1_v: + addrs: [0x80D22AC0, 0x80D23E40] + type: vtx + # grd_s_c5_r2_2.c + field/bg/grd_s_c5_r2_2_v: + addrs: [0x80D241D0, 0x80D25300] + type: vtx + # grd_s_c5_r3_1.c + field/bg/grd_s_c5_r3_1_v: + addrs: [0x80D25648, 0x80D26658] + type: vtx + # grd_s_c5_r3_2.c + field/bg/grd_s_c5_r3_2_v: + addrs: [0x80D26988, 0x80D27898] + type: vtx + # grd_s_c5_s_1.c + field/bg/grd_s_c5_s_1_v: + addrs: [0x80D27B78, 0x80D288F8] + type: vtx + # grd_s_c5_s_2.c + field/bg/grd_s_c5_s_2_v: + addrs: [0x80D28B20, 0x80D298C0] + type: vtx + # grd_s_c6_1.c + field/bg/grd_s_c6_1_v: + addrs: [0x80D29AC8, 0x80D2A998] + type: vtx + # grd_s_c6_2.c + field/bg/grd_s_c6_2_v: + addrs: [0x80D2AC00, 0x80D2BB80] + type: vtx + # grd_s_c6_3.c + field/bg/grd_s_c6_3_v: + addrs: [0x80D2BE00, 0x80D2CB60] + type: vtx + # grd_s_c6_r1_1.c + field/bg/grd_s_c6_r1_1_v: + addrs: [0x80D2CDB0, 0x80D2DD50] + type: vtx + # grd_s_c6_r1_2.c + field/bg/grd_s_c6_r1_2_v: + addrs: [0x80D2E098, 0x80D2F0B8] + type: vtx + # grd_s_c6_r3_1.c + field/bg/grd_s_c6_r3_1_v: + addrs: [0x80D2F3F8, 0x80D30888] + type: vtx + # grd_s_c6_s_1.c + field/bg/grd_s_c6_s_1_v: + addrs: [0x80D30BB0, 0x80D31A50] + type: vtx + # grd_s_c7_1.c + field/bg/grd_s_c7_1_v: + addrs: [0x80D31C90, 0x80D32A90] + type: vtx + # grd_s_c7_2.c + field/bg/grd_s_c7_2_v: + addrs: [0x80D32CC8, 0x80D33DD8] + type: vtx + # grd_s_c7_3.c + field/bg/grd_s_c7_3_v: + addrs: [0x80D34090, 0x80D35150] + type: vtx + # grd_s_c7_r1_1.c + field/bg/grd_s_c7_r1_1_v: + addrs: [0x80D35460, 0x80D362A0] + type: vtx + # grd_s_c7_r1_2.c + field/bg/grd_s_c7_r1_2_v: + addrs: [0x80D365B0, 0x80D37440] + type: vtx + # grd_s_c7_r3_1.c + field/bg/grd_s_c7_r3_1_v: + addrs: [0x80D37708, 0x80D38908] + type: vtx + # grd_s_c7_r3_2.c + field/bg/grd_s_c7_r3_2_v: + addrs: [0x80D38C58, 0x80D39FA8] + type: vtx + # grd_s_c7_s_1.c + field/bg/grd_s_c7_s_1_v: + addrs: [0x80D3A318, 0x80D3B678] + type: vtx + # grd_s_c7_s_2.c + field/bg/grd_s_c7_s_2_v: + addrs: [0x80D3B938, 0x80D3C5B8] + type: vtx + # grd_s_c7_s_3.c + field/bg/grd_s_c7_s_3_v: + addrs: [0x80D3C800, 0x80D3D6C0] + type: vtx + # grd_s_e1_1.c + field/bg/grd_s_e1_1_v: + addrs: [0x80D3D930, 0x80D3DE90] + type: vtx + # grd_s_e1_r1_1.c + field/bg/grd_s_e1_r1_1_v: + addrs: [0x80D3DFF0, 0x80D3F3E0] + type: vtx + # grd_s_e2_1.c + field/bg/grd_s_e2_1_v: + addrs: [0x80D3F770, 0x80D3FDA0] + type: vtx + # grd_s_e2_c1_1.c + field/bg/grd_s_e2_c1_1_v: + addrs: [0x80D3FF08, 0x80D40568] + type: vtx + # grd_s_e2_m_1.c + field/bg/grd_s_e2_m_1_v: + addrs: [0x80D406C8, 0x80D40D58] + type: vtx + # grd_s_e2_o_1.c + field/bg/grd_s_e2_o_1_v: + addrs: [0x80D40FA0, 0x80D41180] + type: vtx + # grd_s_e2_t_1.c + field/bg/grd_s_e2_t_1_v: + addrs: [0x80D41280, 0x80D41C00] + type: vtx + # grd_s_e3_1.c + field/bg/grd_s_e3_1_v: + addrs: [0x80D41DF0, 0x80D42480] + type: vtx + # grd_s_e3_c1_1.c + field/bg/grd_s_e3_c1_1_v: + addrs: [0x80D425D8, 0x80D42C48] + type: vtx + # grd_s_e3_m_1.c + field/bg/grd_s_e3_m_1_v: + addrs: [0x80D42DB0, 0x80D434C0] + type: vtx + # grd_s_e3_o_1.c + field/bg/grd_s_e3_o_1_v: + addrs: [0x80D436F8, 0x80D438D8] + type: vtx + # grd_s_e3_t_1.c + field/bg/grd_s_e3_t_1_v: + addrs: [0x80D439D8, 0x80D44278] + type: vtx + # grd_s_e4_1.c + field/bg/grd_s_e4_1_v: + addrs: [0x80D44468, 0x80D445C8] + type: vtx + # grd_s_e5_1.c + field/bg/grd_s_e5_1_v: + addrs: [0x80D44670, 0x80D447F0] + type: vtx + # grd_s_f_1.c + field/bg/grd_s_f_1_v: + addrs: [0x80D448A0, 0x80D45410] + type: vtx + # grd_s_f_10.c + field/bg/grd_s_f_10_v: + addrs: [0x80D455F0, 0x80D46210] + type: vtx + # grd_s_f_2.c + field/bg/grd_s_f_2_v: + addrs: [0x80D463D8, 0x80D47118] + type: vtx + # grd_s_f_3.c + field/bg/grd_s_f_3_v: + addrs: [0x80D47320, 0x80D47B00] + type: vtx + # grd_s_f_4.c + field/bg/grd_s_f_4_v: + addrs: [0x80D47C88, 0x80D487F8] + type: vtx + # grd_s_f_5.c + field/bg/grd_s_f_5_v: + addrs: [0x80D48A70, 0x80D499A0] + type: vtx + # grd_s_f_6.c + field/bg/grd_s_f_6_v: + addrs: [0x80D49C60, 0x80D4ABD0] + type: vtx + # grd_s_f_7.c + field/bg/grd_s_f_7_v: + addrs: [0x80D4AE88, 0x80D4C3B8] + type: vtx + # grd_s_f_8.c + field/bg/grd_s_f_8_v: + addrs: [0x80D4C640, 0x80D4D360] + type: vtx + # grd_s_f_9.c + field/bg/grd_s_f_9_v: + addrs: [0x80D4D568, 0x80D4E4D8] + type: vtx + # grd_s_f_ko_1.c + field/bg/grd_s_f_ko_1_v: + addrs: [0x80D4E708, 0x80D4F5D8] + type: vtx + # grd_s_f_ko_2.c + field/bg/grd_s_f_ko_2_v: + addrs: [0x80D4F808, 0x80D502B8] + type: vtx + # grd_s_f_ko_3.c + field/bg/grd_s_f_ko_3_v: + addrs: [0x80D504A0, 0x80D51430] + type: vtx + # grd_s_f_mh_1.c + field/bg/grd_s_f_mh_1_v: + addrs: [0x80D51708, 0x80D523C8] + type: vtx + # grd_s_f_mh_2.c + field/bg/grd_s_f_mh_2_v: + addrs: [0x80D52588, 0x80D53338] + type: vtx + # grd_s_f_mh_3.c + field/bg/grd_s_f_mh_3_v: + addrs: [0x80D534F0, 0x80D53FF0] + type: vtx + # grd_s_f_mu_1.c + field/bg/grd_s_f_mu_1_v: + addrs: [0x80D54190, 0x80D54B90] + type: vtx + # grd_s_f_mu_2.c + field/bg/grd_s_f_mu_2_v: + addrs: [0x80D54D60, 0x80D55750] + type: vtx + # grd_s_f_mu_3.c + field/bg/grd_s_f_mu_3_v: + addrs: [0x80D55930, 0x80D562B0] + type: vtx + # grd_s_f_pk_1.c + field/bg/grd_s_f_pk_1_v: + addrs: [0x80D564B8, 0x80D57378] + type: vtx + # grd_s_f_pk_2.c + field/bg/grd_s_f_pk_2_v: + addrs: [0x80D575B8, 0x80D58358] + type: vtx + # grd_s_f_pk_3.c + field/bg/grd_s_f_pk_3_v: + addrs: [0x80D58580, 0x80D595A0] + type: vtx + # grd_s_hole_test.c + field/bg/grd_s_hole_test_v: + addrs: [0x80D59810, 0x80D5A740] + type: vtx + # grd_s_il_1.c + field/bg/grd_s_il_1_v: + addrs: [0x80D5A9A8, 0x80D5B6C8] + type: vtx + # grd_s_il_2.c + field/bg/grd_s_il_2_v: + addrs: [0x80D5BA18, 0x80D5CF08] + type: vtx + # grd_s_il_3.c + field/bg/grd_s_il_3_v: + addrs: [0x80D5D358, 0x80D5E188] + type: vtx + # grd_s_il_4.c + field/bg/grd_s_il_4_v: + addrs: [0x80D5E4F8, 0x80D5F278] + type: vtx + # grd_s_ir_1.c + field/bg/grd_s_ir_1_v: + addrs: [0x80D5F5E8, 0x80D60668] + type: vtx + # grd_s_ir_2.c + field/bg/grd_s_ir_2_v: + addrs: [0x80D60A60, 0x80D61DD0] + type: vtx + # grd_s_ir_3.c + field/bg/grd_s_ir_3_v: + addrs: [0x80D621F8, 0x80D63748] + type: vtx + # grd_s_ir_4.c + field/bg/grd_s_ir_4_v: + addrs: [0x80D63BB0, 0x80D64D60] + type: vtx + # grd_s_m_1.c + field/bg/grd_s_m_1_v: + addrs: [0x80D65158, 0x80D65F58] + type: vtx + # grd_s_m_10.c + field/bg/grd_s_m_10_v: + addrs: [0x80D662B0, 0x80D670A0] + type: vtx + # grd_s_m_2.c + field/bg/grd_s_m_2_v: + addrs: [0x80D67438, 0x80D68368] + type: vtx + # grd_s_m_3.c + field/bg/grd_s_m_3_v: + addrs: [0x80D68718, 0x80D69578] + type: vtx + # grd_s_m_4.c + field/bg/grd_s_m_4_v: + addrs: [0x80D698C8, 0x80D6A528] + type: vtx + # grd_s_m_5.c + field/bg/grd_s_m_5_v: + addrs: [0x80D6A8A0, 0x80D6B8A0] + type: vtx + # grd_s_m_6.c + field/bg/grd_s_m_6_v: + addrs: [0x80D6BC70, 0x80D6CBE0] + type: vtx + # grd_s_m_7.c + field/bg/grd_s_m_7_v: + addrs: [0x80D6CF60, 0x80D6DBF0] + type: vtx + # grd_s_m_8.c + field/bg/grd_s_m_8_v: + addrs: [0x80D6DF60, 0x80D6EC70] + type: vtx + # grd_s_m_9.c + field/bg/grd_s_m_9_v: + addrs: [0x80D6EFE8, 0x80D6FC28] + type: vtx + # grd_s_m_r1_1.c + field/bg/grd_s_m_r1_1_v: + addrs: [0x80D6FF78, 0x80D70FB8] + type: vtx + # grd_s_m_r1_2.c + field/bg/grd_s_m_r1_2_v: + addrs: [0x80D713F8, 0x80D723C8] + type: vtx + # grd_s_m_r1_3.c + field/bg/grd_s_m_r1_3_v: + addrs: [0x80D727D8, 0x80D73638] + type: vtx + # grd_s_m_r1_4.c + field/bg/grd_s_m_r1_4_v: + addrs: [0x80D73A50, 0x80D74B90] + type: vtx + # grd_s_m_r1_5.c + field/bg/grd_s_m_r1_5_v: + addrs: [0x80D74FF8, 0x80D76238] + type: vtx + # grd_s_m_r1_b_1.c + field/bg/grd_s_m_r1_b_1_v: + addrs: [0x80D76680, 0x80D774E0] + type: vtx + # grd_s_m_r1_b_2.c + field/bg/grd_s_m_r1_b_2_v: + addrs: [0x80D77928, 0x80D78AB8] + type: vtx + # grd_s_m_r1_b_3.c + field/bg/grd_s_m_r1_b_3_v: + addrs: [0x80D78F30, 0x80D79F30] + type: vtx + # grd_s_m_ta_1.c + field/bg/grd_s_m_ta_1_v: + addrs: [0x80D7A370, 0x80D7B320] + type: vtx + # grd_s_m_ta_2.c + field/bg/grd_s_m_ta_2_v: + addrs: [0x80D7B6E8, 0x80D7C568] + type: vtx + # grd_s_m_ta_3.c + field/bg/grd_s_m_ta_3_v: + addrs: [0x80D7C920, 0x80D7D890] + type: vtx + # grd_s_m_wf_1.c + field/bg/grd_s_m_wf_1_v: + addrs: [0x80D7DCB0, 0x80D7EEE0] + type: vtx + # grd_s_m_wf_2.c + field/bg/grd_s_m_wf_2_v: + addrs: [0x80D7F350, 0x80D80B60] + type: vtx + # grd_s_m_wf_3.c + field/bg/grd_s_m_wf_3_v: + addrs: [0x80D81048, 0x80D82348] + type: vtx + # grd_s_o_1.c + field/bg/grd_s_o_1_v: + addrs: [0x80D827C0, 0x80D82B60] + type: vtx + # grd_s_o_10.c + field/bg/grd_s_o_10_v: + addrs: [0x80D82CE0, 0x80D83040] + type: vtx + # grd_s_o_2.c + field/bg/grd_s_o_2_v: + addrs: [0x80D831B8, 0x80D83518] + type: vtx + # grd_s_o_3.c + field/bg/grd_s_o_3_v: + addrs: [0x80D83698, 0x80D839C8] + type: vtx + # grd_s_o_4.c + field/bg/grd_s_o_4_v: + addrs: [0x80D83B40, 0x80D83E90] + type: vtx + # grd_s_o_5.c + field/bg/grd_s_o_5_v: + addrs: [0x80D84010, 0x80D84350] + type: vtx + # grd_s_o_6.c + field/bg/grd_s_o_6_v: + addrs: [0x80D844D0, 0x80D84800] + type: vtx + # grd_s_o_7.c + field/bg/grd_s_o_7_v: + addrs: [0x80D84978, 0x80D84CC8] + type: vtx + # grd_s_o_8.c + field/bg/grd_s_o_8_v: + addrs: [0x80D84E48, 0x80D851E8] + type: vtx + # grd_s_o_9.c + field/bg/grd_s_o_9_v: + addrs: [0x80D85378, 0x80D85708] + type: vtx + # grd_s_o_i_1.c + field/bg/grd_s_o_i_1_v: + addrs: [0x80D85850, 0x80D85B70] + type: vtx + # grd_s_o_i_2.c + field/bg/grd_s_o_i_2_v: + addrs: [0x80D85CF0, 0x80D85ED0] + type: vtx + # grd_s_o_r1_1.c + field/bg/grd_s_o_r1_1_v: + addrs: [0x80D86010, 0x80D863E0] + type: vtx + # grd_s_o_r1_2.c + field/bg/grd_s_o_r1_2_v: + addrs: [0x80D86560, 0x80D86900] + type: vtx + # grd_s_o_r1_3.c + field/bg/grd_s_o_r1_3_v: + addrs: [0x80D86A80, 0x80D86E30] + type: vtx + # grd_s_o_r1_4.c + field/bg/grd_s_o_r1_4_v: + addrs: [0x80D86FB8, 0x80D87338] + type: vtx + # grd_s_o_r1_5.c + field/bg/grd_s_o_r1_5_v: + addrs: [0x80D874B8, 0x80D87778] + type: vtx + # grd_s_o_r1_b_1.c + field/bg/grd_s_o_r1_b_1_v: + addrs: [0x80D878D0, 0x80D87AB0] + type: vtx + # grd_s_o_r1_b_2.c + field/bg/grd_s_o_r1_b_2_v: + addrs: [0x80D87BF0, 0x80D87DD0] + type: vtx + # grd_s_o_r1_b_3.c + field/bg/grd_s_o_r1_b_3_v: + addrs: [0x80D87F08, 0x80D880E8] + type: vtx + # grd_s_o_ta_1.c + field/bg/grd_s_o_ta_1_v: + addrs: [0x80D88220, 0x80D885E0] + type: vtx + # grd_s_o_ta_2.c + field/bg/grd_s_o_ta_2_v: + addrs: [0x80D88768, 0x80D88A48] + type: vtx + # grd_s_o_ta_3.c + field/bg/grd_s_o_ta_3_v: + addrs: [0x80D88BB0, 0x80D88EA0] + type: vtx + # grd_s_o_wf_1.c + field/bg/grd_s_o_wf_1_v: + addrs: [0x80D89008, 0x80D893F8] + type: vtx + # grd_s_o_wf_2.c + field/bg/grd_s_o_wf_2_v: + addrs: [0x80D89578, 0x80D89998] + type: vtx + # grd_s_o_wf_3.c + field/bg/grd_s_o_wf_3_v: + addrs: [0x80D89B18, 0x80D89EF8] + type: vtx + # grd_s_r1_1.c + field/bg/grd_s_r1_1_v: + addrs: [0x80D8A040, 0x80D8AC00] + type: vtx + # grd_s_r1_2.c + field/bg/grd_s_r1_2_v: + addrs: [0x80D8AE38, 0x80D8BAD8] + type: vtx + # grd_s_r1_3.c + field/bg/grd_s_r1_3_v: + addrs: [0x80D8BD70, 0x80D8CAE0] + type: vtx + # grd_s_r1_4.c + field/bg/grd_s_r1_4_v: + addrs: [0x80D8CDA0, 0x80D8D880] + type: vtx + # grd_s_r1_b_1.c + field/bg/grd_s_r1_b_1_v: + addrs: [0x80D8DAB8, 0x80D8E818] + type: vtx + # grd_s_r1_b_2.c + field/bg/grd_s_r1_b_2_v: + addrs: [0x80D8EAF0, 0x80D8FC00] + type: vtx + # grd_s_r1_b_3.c + field/bg/grd_s_r1_b_3_v: + addrs: [0x80D8FF30, 0x80D90EF0] + type: vtx + # grd_s_r1_p_1.c + field/bg/grd_s_r1_p_1_v: + addrs: [0x80D91220, 0x80D921D0] + type: vtx + # grd_s_r2_1.c + field/bg/grd_s_r2_1_v: + addrs: [0x80D924C0, 0x80D93040] + type: vtx + # grd_s_r2_2.c + field/bg/grd_s_r2_2_v: + addrs: [0x80D932E8, 0x80D93F18] + type: vtx + # grd_s_r2_3.c + field/bg/grd_s_r2_3_v: + addrs: [0x80D94148, 0x80D94EE8] + type: vtx + # grd_s_r2_4.c + field/bg/grd_s_r2_4_v: + addrs: [0x80D951B8, 0x80D95F08] + type: vtx + # grd_s_r2_b_1.c + field/bg/grd_s_r2_b_1_v: + addrs: [0x80D961D0, 0x80D97490] + type: vtx + # grd_s_r2_b_2.c + field/bg/grd_s_r2_b_2_v: + addrs: [0x80D97810, 0x80D98850] + type: vtx + # grd_s_r2_b_3.c + field/bg/grd_s_r2_b_3_v: + addrs: [0x80D98B78, 0x80D99D28] + type: vtx + # grd_s_r2_p_1.c + field/bg/grd_s_r2_p_1_v: + addrs: [0x80D9A070, 0x80D9B5B0] + type: vtx + # grd_s_r3_1.c + field/bg/grd_s_r3_1_v: + addrs: [0x80D9B8E0, 0x80D9C6C0] + type: vtx + # grd_s_r3_2.c + field/bg/grd_s_r3_2_v: + addrs: [0x80D9C988, 0x80D9D5F8] + type: vtx + # grd_s_r3_3.c + field/bg/grd_s_r3_3_v: + addrs: [0x80D9D888, 0x80D9E518] + type: vtx + # grd_s_r3_4.c + field/bg/grd_s_r3_4_v: + addrs: [0x80D9E7D0, 0x80D9F3A0] + type: vtx + # grd_s_r3_b_1.c + field/bg/grd_s_r3_b_1_v: + addrs: [0x80D9F630, 0x80DA0520] + type: vtx + # grd_s_r3_b_2.c + field/bg/grd_s_r3_b_2_v: + addrs: [0x80DA0828, 0x80DA19F8] + type: vtx + # grd_s_r3_b_3.c + field/bg/grd_s_r3_b_3_v: + addrs: [0x80DA1D50, 0x80DA2E50] + type: vtx + # grd_s_r3_p_1.c + field/bg/grd_s_r3_p_1_v: + addrs: [0x80DA3180, 0x80DA44F0] + type: vtx + # grd_s_r4_1.c + field/bg/grd_s_r4_1_v: + addrs: [0x80DA4830, 0x80DA54D0] + type: vtx + # grd_s_r4_2.c + field/bg/grd_s_r4_2_v: + addrs: [0x80DA5768, 0x80DA6478] + type: vtx + # grd_s_r4_3.c + field/bg/grd_s_r4_3_v: + addrs: [0x80DA66E0, 0x80DA7270] + type: vtx + # grd_s_r4_b_1.c + field/bg/grd_s_r4_b_1_v: + addrs: [0x80DA7508, 0x80DA7F78] + type: vtx + # grd_s_r4_b_2.c + field/bg/grd_s_r4_b_2_v: + addrs: [0x80DA8208, 0x80DA90E8] + type: vtx + # grd_s_r4_p_1.c + field/bg/grd_s_r4_p_1_v: + addrs: [0x80DA93E8, 0x80DAA5A8] + type: vtx + # grd_s_r5_1.c + field/bg/grd_s_r5_1_v: + addrs: [0x80DAA938, 0x80DAB678] + type: vtx + # grd_s_r5_2.c + field/bg/grd_s_r5_2_v: + addrs: [0x80DAB930, 0x80DAC770] + type: vtx + # grd_s_r5_3.c + field/bg/grd_s_r5_3_v: + addrs: [0x80DACA20, 0x80DAD820] + type: vtx + # grd_s_r5_b_1.c + field/bg/grd_s_r5_b_1_v: + addrs: [0x80DADAD8, 0x80DAEAB8] + type: vtx + # grd_s_r5_b_2.c + field/bg/grd_s_r5_b_2_v: + addrs: [0x80DAEDA8, 0x80DAFD98] + type: vtx + # grd_s_r5_p_1.c + field/bg/grd_s_r5_p_1_v: + addrs: [0x80DB00B0, 0x80DB1210] + type: vtx + # grd_s_r6_1.c + field/bg/grd_s_r6_1_v: + addrs: [0x80DB1540, 0x80DB2010] + type: vtx + # grd_s_r6_2.c + field/bg/grd_s_r6_2_v: + addrs: [0x80DB2268, 0x80DB2DB8] + type: vtx + # grd_s_r6_3.c + field/bg/grd_s_r6_3_v: + addrs: [0x80DB2FF8, 0x80DB3B08] + type: vtx + # grd_s_r6_b_1.c + field/bg/grd_s_r6_b_1_v: + addrs: [0x80DB3D70, 0x80DB4930] + type: vtx + # grd_s_r6_b_2.c + field/bg/grd_s_r6_b_2_v: + addrs: [0x80DB4BE8, 0x80DB5E18] + type: vtx + # grd_s_r6_p_1.c + field/bg/grd_s_r6_p_1_v: + addrs: [0x80DB6138, 0x80DB7428] + type: vtx + # grd_s_r7_1.c + field/bg/grd_s_r7_1_v: + addrs: [0x80DB77B8, 0x80DB8408] + type: vtx + # grd_s_r7_2.c + field/bg/grd_s_r7_2_v: + addrs: [0x80DB86B0, 0x80DB9260] + type: vtx + # grd_s_r7_3.c + field/bg/grd_s_r7_3_v: + addrs: [0x80DB94C0, 0x80DBA020] + type: vtx + # grd_s_r7_b_1.c + field/bg/grd_s_r7_b_1_v: + addrs: [0x80DBA268, 0x80DBAF58] + type: vtx + # grd_s_r7_b_2.c + field/bg/grd_s_r7_b_2_v: + addrs: [0x80DBB228, 0x80DBC478] + type: vtx + # grd_s_r7_p_1.c + field/bg/grd_s_r7_p_1_v: + addrs: [0x80DBC7D0, 0x80DBD8E0] + type: vtx + # grd_s_t_1.c + field/bg/grd_s_t_1_v: + addrs: [0x80DBDBF8, 0x80DBE618] + type: vtx + # grd_s_t_10.c + field/bg/grd_s_t_10_v: + addrs: [0x80DBE858, 0x80DBF688] + type: vtx + # grd_s_t_2.c + field/bg/grd_s_t_2_v: + addrs: [0x80DBF8F8, 0x80DC05E8] + type: vtx + # grd_s_t_3.c + field/bg/grd_s_t_3_v: + addrs: [0x80DC0808, 0x80DC1188] + type: vtx + # grd_s_t_4.c + field/bg/grd_s_t_4_v: + addrs: [0x80DC1378, 0x80DC2218] + type: vtx + # grd_s_t_5.c + field/bg/grd_s_t_5_v: + addrs: [0x80DC2500, 0x80DC3480] + type: vtx + # grd_s_t_6.c + field/bg/grd_s_t_6_v: + addrs: [0x80DC3770, 0x80DC48D0] + type: vtx + # grd_s_t_7.c + field/bg/grd_s_t_7_v: + addrs: [0x80DC4B78, 0x80DC5CC8] + type: vtx + # grd_s_t_8.c + field/bg/grd_s_t_8_v: + addrs: [0x80DC5F48, 0x80DC6B88] + type: vtx + # grd_s_t_9.c + field/bg/grd_s_t_9_v: + addrs: [0x80DC6DA8, 0x80DC7A68] + type: vtx + # grd_s_t_po_1.c + field/bg/grd_s_t_po_1_v: + addrs: [0x80DC7C88, 0x80DC8708] + type: vtx + # grd_s_t_po_2.c + field/bg/grd_s_t_po_2_v: + addrs: [0x80DC8918, 0x80DC9348] + type: vtx + # grd_s_t_po_3.c + field/bg/grd_s_t_po_3_v: + addrs: [0x80DC9578, 0x80DCA3D8] + type: vtx + # grd_s_t_r1_1.c + field/bg/grd_s_t_r1_1_v: + addrs: [0x80DCA6E0, 0x80DCB5D0] + type: vtx + # grd_s_t_r1_2.c + field/bg/grd_s_t_r1_2_v: + addrs: [0x80DCB8E8, 0x80DCCA18] + type: vtx + # grd_s_t_r1_3.c + field/bg/grd_s_t_r1_3_v: + addrs: [0x80DCCD78, 0x80DCDEC8] + type: vtx + # grd_s_t_r1_4.c + field/bg/grd_s_t_r1_4_v: + addrs: [0x80DCE230, 0x80DCF240] + type: vtx + # grd_s_t_r1_5.c + field/bg/grd_s_t_r1_5_v: + addrs: [0x80DCF588, 0x80DD06E8] + type: vtx + # grd_s_t_sh_1.c + field/bg/grd_s_t_sh_1_v: + addrs: [0x80DD0A38, 0x80DD1458] + type: vtx + # grd_s_t_sh_2.c + field/bg/grd_s_t_sh_2_v: + addrs: [0x80DD1678, 0x80DD2338] + type: vtx + # grd_s_t_sh_3.c + field/bg/grd_s_t_sh_3_v: + addrs: [0x80DD2610, 0x80DD3070] + type: vtx + # grd_s_t_st1_1.c + field/bg/grd_s_t_st1_1_v: + addrs: [0x80DD3270, 0x80DD3EA0] + type: vtx + # grd_s_t_st1_2.c + field/bg/grd_s_t_st1_2_v: + addrs: [0x80DD40F0, 0x80DD4FF0] + type: vtx + # grd_s_t_st1_3.c + field/bg/grd_s_t_st1_3_v: + addrs: [0x80DD5280, 0x80DD5F30] + type: vtx + # rom_toudai.c + field/bg/rom_toudai_yuka_pal: + addrs: [0x80F08520, 0x80F08540] + type: pal16 + field/bg/rom_toudai_kabe_pal: + addrs: [0x80F08540, 0x80F08560] + type: pal16 + field/bg/rom_toudai_step_pal: + addrs: [0x80F08560, 0x80F08580] + type: pal16 + field/bg/rom_toudai_meka_pal: + addrs: [0x80F08580, 0x80F085A0] + type: pal16 + field/bg/rom_toudai_ukiwa_pal: + addrs: [0x80F085A0, 0x80F085C0] + type: pal16 + field/bg/rom_toudai_yuka_tex: + addrs: [0x80F085C0, 0x80F08DC0] + field/bg/rom_toudai_kabeA_tex: + addrs: [0x80F08DC0, 0x80F095C0] + field/bg/rom_toudai_kabeB_tex: + addrs: [0x80F095C0, 0x80F09DC0] + field/bg/rom_toudai_step_tex: + addrs: [0x80F09DC0, 0x80F0A1C0] + field/bg/rom_toudai_mekaA_tex: + addrs: [0x80F0A1C0, 0x80F0A2C0] + field/bg/rom_toudai_ukiwa_tex: + addrs: [0x80F0A2C0, 0x80F0A4C0] + field/bg/rom_toudai_kage1_tex: + addrs: [0x80F0A4C0, 0x80F0A540] + field/bg/rom_toudai_mekaC_tex: + addrs: [0x80F0A540, 0x80F0A740] + field/bg/rom_toudai_kage2_tex: + addrs: [0x80F0A740, 0x80F0A7C0] + field/bg/rom_toudai_v: + addrs: [0x80F0A7C0, 0x80F0AE30] + type: vtx submenu/map/kan_tizu_c1_TA_tex_txt: addrs: [0x80F0B020, 0x80F0B220] submenu/map/kan_tizu_c1r1_TA_tex_txt: @@ -8734,4 +9909,724 @@ config/rel.yml: submenu/map/kan_tizu_mwf_TA_tex_txt: addrs: [0x80F13620, 0x80F13820] submenu/map/kan_tizu_fmu_TA_tex_txt: - addrs: [0x80F13820, 0x80F13A20] \ No newline at end of file + addrs: [0x80F13820, 0x80F13A20] + # rom_museum1.c + field/bg/rom_museum1_mado_pal: + addrs: [0x80F13AA0, 0x80F13AC0] + type: pal16 + field/bg/rom_museum1_step_pal: + addrs: [0x80F13AC0, 0x80F13AE0] + type: pal16 + field/bg/rom_museum1_floor_pal: + addrs: [0x80F13AE0, 0x80F13B00] + type: pal16 + field/bg/rom_museum1_wall_pal: + addrs: [0x80F13B00, 0x80F13B20] + type: pal16 + field/bg/rom_museum1_mado1_tex: + addrs: [0x80F13B20, 0x80F14320] + field/bg/rom_museum1_step1_tex: + addrs: [0x80F14320, 0x80F14B20] + field/bg/rom_museum1_step2_tex: + addrs: [0x80F14B20, 0x80F14F20] + field/bg/rom_museum1_floorA_tex: + addrs: [0x80F14F20, 0x80F15720] + field/bg/rom_museum1_floorB_tex: + addrs: [0x80F15720, 0x80F15F20] + field/bg/rom_museum1_mado2_tex: + addrs: [0x80F15F20, 0x80F16720] + field/bg/rom_museum1_sign1_tex: + addrs: [0x80F16720, 0x80F16B20] + field/bg/rom_museum1_wallA_tex: + addrs: [0x80F16B20, 0x80F17320] + field/bg/rom_museum1_wallB_tex: + addrs: [0x80F17320, 0x80F17B20] + field/bg/rom_museum1_sign2_tex: + addrs: [0x80F17B20, 0x80F17F20] + field/bg/rom_museum1_sign3_tex: + addrs: [0x80F17F20, 0x80F18320] + field/bg/rom_museum1_sign4_tex: + addrs: [0x80F18320, 0x80F18720] + field/bg/rom_museum1_v: + addrs: [0x80F18720, 0x80F199E0] + type: vtx + # rom_museum5.c + field/bg/rom_museum5_on_pal: + addrs: [0x80F19DC0, 0x80F19DE0] + type: pal16 + field/bg/rom_museum5_wall_pal: + addrs: [0x80F19DE0, 0x80F19E00] + type: pal16 + field/bg/rom_museum5_floor_pal: + addrs: [0x80F19E00, 0x80F19E20] + type: pal16 + field/bg/rom_museum5_step_pal: + addrs: [0x80F19E20, 0x80F19E40] + type: pal16 + field/bg/rom_museum5_ki_tex: + addrs: [0x80F19E40, 0x80F1A040] + field/bg/rom_museum5_wallA_tex: + addrs: [0x80F1A040, 0x80F1A840] + field/bg/rom_museum5_floor_tex: + addrs: [0x80F1A840, 0x80F1B040] + field/bg/rom_museum5_step_tex: + addrs: [0x80F1B040, 0x80F1B840] + field/bg/rom_museum5_isi_tex: + addrs: [0x80F1B840, 0x80F1BA40] + field/bg/rom_museum5_plate_tex: + addrs: [0x80F1BA40, 0x80F1BC40] + field/bg/rom_museum5_v: + addrs: [0x80F1BC40, 0x80F1C9C0] + type: vtx + # rom_museum2.c + field/bg/rom_museum2_wall_pal: + addrs: [0x80F1D5C0, 0x80F1D5E0] + type: pal16 + field/bg/rom_museum2_floor_pal: + addrs: [0x80F1D5E0, 0x80F1D600] + type: pal16 + field/bg/rom_museum2_step1_pal: + addrs: [0x80F1D600, 0x80F1D620] + type: pal16 + field/bg/rom_museum2_wallA_tex: + addrs: [0x80F1D620, 0x80F1DE20] + field/bg/rom_museum2_wallB_tex: + addrs: [0x80F1DE20, 0x80F1E620] + field/bg/rom_museum2_floorA_tex: + addrs: [0x80F1E620, 0x80F1EE20] + field/bg/rom_museum2_step1_tex: + addrs: [0x80F1EE20, 0x80F1F620] + field/bg/rom_museum2_plate_tex: + addrs: [0x80F1F620, 0x80F1F720] + field/bg/rom_museum2_v: + addrs: [0x80F1F720, 0x80F20820] + type: vtx + # rom_museum3.c + field/bg/rom_museum3_wall_pal: + addrs: [0x80F23E40, 0x80F23E60] + type: pal16 + field/bg/rom_museum3_back_pal: + addrs: [0x80F23E60, 0x80F23E80] + type: pal16 + field/bg/rom_museum3_floor_pal: + addrs: [0x80F23E80, 0x80F23EA0] + type: pal16 + field/bg/rom_museum3_wallA_tex: + addrs: [0x80F23EA0, 0x80F246A0] + field/bg/rom_museum3_wallB_tex: + addrs: [0x80F246A0, 0x80F24EA0] + field/bg/rom_museum3_back_tex: + addrs: [0x80F24EA0, 0x80F256A0] + field/bg/rom_museum3_floorA_tex: + addrs: [0x80F256A0, 0x80F25EA0] + field/bg/rom_museum3_step_tex: + addrs: [0x80F25EA0, 0x80F266A0] + field/bg/rom_museum3_hasira_tex: + addrs: [0x80F266A0, 0x80F267A0] + field/bg/rom_museum3_backside_tex: + addrs: [0x80F267A0, 0x80F26920] + field/bg/rom_museum3_v: + addrs: [0x80F26920, 0x80F27AD0] + type: vtx + # rom_tailor.c + field/bg/rom_tailor_wall_pal: + addrs: [0x80F29260, 0x80F29280] + type: pal16 + field/bg/rom_tailor_floor_pal: + addrs: [0x80F29280, 0x80F292A0] + type: pal16 + field/bg/rom_tailor_mado_pal: + addrs: [0x80F292A0, 0x80F292C0] + type: pal16 + field/bg/rom_tailor_reji_pal: + addrs: [0x80F292C0, 0x80F292E0] + type: pal16 + field/bg/rom_tailor_dogu_pal: + addrs: [0x80F292E0, 0x80F29300] + type: pal16 + field/bg/rom_tailor_misin_pal: + addrs: [0x80F29300, 0x80F29320] + type: pal16 + field/bg/rom_tailor_table_pal: + addrs: [0x80F29320, 0x80F29340] + type: pal16 + field/bg/rom_tailor_box_pal: + addrs: [0x80F29340, 0x80F29360] + type: pal16 + field/bg/rom_tailor_quilt_pal: + addrs: [0x80F29360, 0x80F29380] + type: pal16 + field/bg/rom_tailor_ent_pal: + addrs: [0x80F29380, 0x80F293A0] + type: pal16 + field/bg/rom_tailor_wallA_tex: + addrs: [0x80F293A0, 0x80F29BA0] + field/bg/rom_tailor_wallB_tex: + addrs: [0x80F29BA0, 0x80F2A3A0] + field/bg/rom_tailor_floorA_tex: + addrs: [0x80F2A3A0, 0x80F2ABA0] + field/bg/rom_tailor_floorB_tex: + addrs: [0x80F2ABA0, 0x80F2B3A0] + field/bg/rom_tailor_floorC_tex: + addrs: [0x80F2B3A0, 0x80F2BBA0] + field/bg/rom_tailor_floorD_tex: + addrs: [0x80F2BBA0, 0x80F2C3A0] + field/bg/rom_tailor_kage1_tex: + addrs: [0x80F2C3A0, 0x80F2C4A0] + field/bg/rom_tailor_mado_tex: + addrs: [0x80F2C4A0, 0x80F2C6A0] + field/bg/rom_tailor_pic1_tex: + addrs: [0x80F2C6A0, 0x80F2C8A0] + field/bg/rom_tailor_pic2_tex: + addrs: [0x80F2C8A0, 0x80F2CAA0] + field/bg/rom_tailor_pic3_tex: + addrs: [0x80F2CAA0, 0x80F2CCA0] + field/bg/rom_tailor_pic4_tex: + addrs: [0x80F2CCA0, 0x80F2CEA0] + field/bg/rom_tailor_pic5_tex: + addrs: [0x80F2CEA0, 0x80F2D0A0] + field/bg/rom_tailor_pic6_tex: + addrs: [0x80F2D0A0, 0x80F2D2A0] + field/bg/rom_tailor_pic7_tex: + addrs: [0x80F2D2A0, 0x80F2D4A0] + field/bg/rom_tailor_pic8_tex: + addrs: [0x80F2D4A0, 0x80F2D6A0] + field/bg/rom_tailor_tyoki_tex: + addrs: [0x80F2D6A0, 0x80F2D7A0] + field/bg/rom_tailor_cloth1_tex: + addrs: [0x80F2D7A0, 0x80F2D820] + field/bg/rom_tailor_misin2_tex: + addrs: [0x80F2D820, 0x80F2DA20] + field/bg/rom_tailor_table_mae_tex: + addrs: [0x80F2DA20, 0x80F2DB20] + field/bg/rom_tailor_table_yoko_tex: + addrs: [0x80F2DB20, 0x80F2DBA0] + field/bg/rom_tailor_table_ue_tex: + addrs: [0x80F2DBA0, 0x80F2DCA0] + field/bg/rom_tailor_ito_tex: + addrs: [0x80F2DCA0, 0x80F2DEA0] + field/bg/rom_tailor_table_reji_tex: + addrs: [0x80F2DEA0, 0x80F2DF20] + field/bg/rom_tailor_misin1_tex: + addrs: [0x80F2DF20, 0x80F2E120] + field/bg/rom_tailor_misindai_tex: + addrs: [0x80F2E120, 0x80F2E320] + field/bg/rom_tailor_table_misin1_tex: + addrs: [0x80F2E320, 0x80F2E420] + field/bg/rom_tailor_reji_tex: + addrs: [0x80F2E420, 0x80F2E620] + field/bg/rom_tailor_table_misin2_tex: + addrs: [0x80F2E620, 0x80F2E6A0] + field/bg/rom_tailor_box_tex: + addrs: [0x80F2E6A0, 0x80F2E7A0] + field/bg/rom_tailor_box1_tex: + addrs: [0x80F2E7A0, 0x80F2E820] + field/bg/rom_tailor_box2_tex: + addrs: [0x80F2E820, 0x80F2E8A0] + field/bg/rom_tailor_box3_tex: + addrs: [0x80F2E8A0, 0x80F2E920] + field/bg/rom_tailor_box4_tex: + addrs: [0x80F2E920, 0x80F2E9A0] + field/bg/rom_tailor_box5_tex: + addrs: [0x80F2E9A0, 0x80F2EA20] + field/bg/rom_tailor_box6_tex: + addrs: [0x80F2EA20, 0x80F2EAA0] + field/bg/rom_tailor_box7_tex: + addrs: [0x80F2EAA0, 0x80F2EB20] + field/bg/rom_tailor_box8_tex: + addrs: [0x80F2EB20, 0x80F2EBA0] + field/bg/rom_tailor_kage2_tex: + addrs: [0x80F2EBA0, 0x80F2EC20] + field/bg/rom_tailor_quilt_tex: + addrs: [0x80F2EC20, 0x80F2F420] + field/bg/rom_tailor_ent_tex: + addrs: [0x80F2F420, 0x80F2F520] + field/bg/rom_tailor_misinbari1_tex: + addrs: [0x80F2F520, 0x80F2F5A0] + field/bg/rom_tailor_misinbari2_tex: + addrs: [0x80F2F5A0, 0x80F2F620] + field/bg/rom_tailor_tape_tex: + addrs: [0x80F2F620, 0x80F2F820] + field/bg/rom_tailor_dogu1_tex: + addrs: [0x80F2F820, 0x80F2F8A0] + field/bg/rom_tailor_dogu2_tex: + addrs: [0x80F2F8A0, 0x80F2F920] + field/bg/rom_tailor_v: + addrs: [0x80F2F920, 0x80F31700] + type: vtx + # myr_etc.c + field/bg/myr_kotei_pal: + addrs: [0x80F84780, 0x80F847A0] + type: pal16 + field/bg/myr_enter: + addrs: [0x80F847A0, 0x80F84BA0] + field/bg/myr_window: + addrs: [0x80F84BA0, 0x80F853A0] + field/bg/myr_kotei_v: + addrs: [0x80F853A0, 0x80F85500] + type: vtx + # grd_player_select.c + field/bg/rom_open_pal: + addrs: [0x80F85740, 0x80F85760] + type: pal16 + field/bg/rom_open_floor_tex: + addrs: [0x80F85760, 0x80F85F60] + field/bg/rom_open_shade_tex: + addrs: [0x80F85F60, 0x80F86360] + field/bg/rom_open_spot2_tex_rgb_i4: + addrs: [0x80F86360, 0x80F86560] + field/bg/rom_open_spot_tex: + addrs: [0x80F86560, 0x80F86D60] + field/bg/grd_player_select_v: + addrs: [0x80F86D60, 0x80F86EA0] + type: vtx + # police_indoor.c + field/bg/rom_koban_tel_pal: + addrs: [0x80F86FA0, 0x80F86FC0] + type: pal16 + field/bg/rom_koban_win_pal: + addrs: [0x80F86FC0, 0x80F86FE0] + type: pal16 + field/bg/rom_koban_us_pos_pal: + addrs: [0x80F86FE0, 0x80F87000] + type: pal16 + field/bg/rom_koban_jim_pal: + addrs: [0x80F87000, 0x80F87020] + type: pal16 + field/bg/rom_koban_kabe_pal: + addrs: [0x80F87020, 0x80F87040] + type: pal16 + field/bg/rom_koban_roc_pal: + addrs: [0x80F87040, 0x80F87060] + type: pal16 + field/bg/rom_koban_tel: + addrs: [0x80F87060, 0x80F87260] + field/bg/rom_koban_win: + addrs: [0x80F87260, 0x80F87460] + field/bg/rom_koban_desk_front: + addrs: [0x80F87460, 0x80F87560] + field/bg/rom_koban_desk_side: + addrs: [0x80F87560, 0x80F875E0] + field/bg/rom_koban_desk_top: + addrs: [0x80F875E0, 0x80F876E0] + field/bg/rom_koban_yuka: + addrs: [0x80F876E0, 0x80F87EE0] + field/bg/rom_koban_us_pos1: + addrs: [0x80F87EE0, 0x80F881E0] + field/bg/rom_koban_us_pos2: + addrs: [0x80F881E0, 0x80F884E0] + field/bg/rom_koban_kage1: + addrs: [0x80F884E0, 0x80F885E0] + field/bg/rom_koban_kage2: + addrs: [0x80F885E0, 0x80F88660] + field/bg/rom_koban_ent: + addrs: [0x80F88660, 0x80F88A60] + field/bg/rom_koban_jim_front: + addrs: [0x80F88A60, 0x80F88C60] + field/bg/rom_koban_jim_side: + addrs: [0x80F88C60, 0x80F88D60] + field/bg/rom_koban_jim_top: + addrs: [0x80F88D60, 0x80F88E60] + field/bg/rom_koban_kabe1: + addrs: [0x80F88E60, 0x80F89660] + field/bg/rom_koban_telcode: + addrs: [0x80F89660, 0x80F896E0] + field/bg/rom_koban_book: + addrs: [0x80F896E0, 0x80F89760] + field/bg/rom_koban_roc_s: + addrs: [0x80F89760, 0x80F89860] + field/bg/rom_koban_roc_t: + addrs: [0x80F89860, 0x80F898E0] + field/bg/rom_koban_kabe3: + addrs: [0x80F898E0, 0x80F89CE0] + field/bg/rom_koban_isu: + addrs: [0x80F89CE0, 0x80F89D60] + field/bg/rom_koban_roc_i: + addrs: [0x80F89D60, 0x80F89E60] + field/bg/rom_koban_roc_f3: + addrs: [0x80F89E60, 0x80F8A260] + field/bg/police_indoor_v: + addrs: [0x80F8A260, 0x80F8BCF0] + type: vtx + + # Rail palettes + mFM_rail_pal_0: + addrs: [0x80F8C2C8, 0x80F8C2E8] + type: pal16 + mFM_rail_pal_1: + addrs: [0x80F8C2E8, 0x80F8C308] + type: pal16 + mFM_rail_pal_2: + addrs: [0x80F8C308, 0x80F8C328] + type: pal16 + mFM_rail_pal_3: + addrs: [0x80F8C328, 0x80F8C348] + type: pal16 + mFM_rail_pal_4: + addrs: [0x80F8C348, 0x80F8C368] + type: pal16 + mFM_rail_pal_5: + addrs: [0x80F8C368, 0x80F8C388] + type: pal16 + mFM_rail_pal_6: + addrs: [0x80F8C388, 0x80F8C3A8] + type: pal16 + mFM_rail_pal_7: + addrs: [0x80F8C3A8, 0x80F8C3C8] + type: pal16 + mFM_rail_pal_8: + addrs: [0x80F8C3C8, 0x80F8C3E8] + type: pal16 + mFM_rail_pal_9: + addrs: [0x80F8C3E8, 0x80F8C408] + type: pal16 + mFM_rail_pal_10: + addrs: [0x80F8C408, 0x80F8C428] + type: pal16 + mFM_rail_pal_11: + addrs: [0x80F8C428, 0x80F8C448] + type: pal16 + mFM_rail_pal_12: + addrs: [0x80F8C448, 0x80F8C468] + type: pal16 + # ac_koinobori + + # NPC draw data assets + field/bg/rom_shop_kouhaku_pal: + addrs: [0x80F9CDC0, 0x80F9CDE0] + type: pal16 + field/bg/rom_shop_kouhaku_tex: + addrs: [0x80F9D260, 0x80F9DA60] + # rom_shop4_1.c + field/bg/rom_shop4_1_floor_tex_pal: + addrs: [0x80F9FF80, 0x80F9FFA0] + type: pal16 + field/bg/rom_shop4_1_lamp_tex_pal: + addrs: [0x80F9FFA0, 0x80F9FFC0] + type: pal16 + field/bg/rom_shop4_1_base_tex_pal: + addrs: [0x80F9FFC0, 0x80F9FFE0] + type: pal16 + field/bg/rom_shop4_1_stair_tex_pal: + addrs: [0x80F9FFE0, 0x80FA0000] + type: pal16 + field/bg/rom_shop4_1_table_tex_pal: + addrs: [0x80FA0000, 0x80FA0020] + type: pal16 + field/bg/rom_shop4_1_wall_tex_pal: + addrs: [0x80FA0020, 0x80FA0040] + type: pal16 + field/bg/rom_shop4_1_sign01_tex_pal: + addrs: [0x80FA0040, 0x80FA0060] + type: pal16 + field/bg/rom_shop4_1_kaunta_tex_pal: + addrs: [0x80FA0060, 0x80FA0080] + type: pal16 + field/bg/rom_shop4_1_us_sign01_tex_pal: + addrs: [0x80FA0080, 0x80FA00A0] + type: pal16 + field/bg/rom_shop4_1_us_sign02_tex_pal: + addrs: [0x80FA00A0, 0x80FA00C0] + type: pal16 + field/bg/rom_shop4_1_us_sign03_tex_pal: + addrs: [0x80FA00C0, 0x80FA00E0] + type: pal16 + field/bg/rom_shop4_1_sign03_tex_pal: + addrs: [0x80FA00E0, 0x80FA0100] + type: pal16 + field/bg/rom_shop4_1_reji_tex_pal: + addrs: [0x80FA0100, 0x80FA0120] + type: pal16 + field/bg/rom_shop4_1_floor01_tex: + addrs: [0x80FA0120, 0x80FA0920] + field/bg/rom_shop4_1_lamp_tex: + addrs: [0x80FA0920, 0x80FA09A0] + field/bg/rom_shop4_1_base_tex: + addrs: [0x80FA09A0, 0x80FA0BA0] + field/bg/rom_shop4_1_stair01_tex: + addrs: [0x80FA0BA0, 0x80FA0CA0] + field/bg/rom_shop4_1_table01_tex: + addrs: [0x80FA0CA0, 0x80FA0DA0] + field/bg/rom_shop4_1_table02_tex: + addrs: [0x80FA0DA0, 0x80FA0EA0] + field/bg/rom_shop4_1_wall01_tex: + addrs: [0x80FA0EA0, 0x80FA16A0] + field/bg/rom_shop4_1_wall02_tex: + addrs: [0x80FA16A0, 0x80FA18A0] + field/bg/rom_shop4_1_sign05_tex: + addrs: [0x80FA18A0, 0x80FA1920] + field/bg/rom_shop4_1_kaunta01_tex: + addrs: [0x80FA1920, 0x80FA1B20] + field/bg/rom_shop4_1_kaunta02_tex: + addrs: [0x80FA1B20, 0x80FA1BA0] + field/bg/rom_shop4_1_us_sign01_tex: + addrs: [0x80FA1BA0, 0x80FA1FA0] + field/bg/rom_shop4_1_us_sign02_tex: + addrs: [0x80FA1FA0, 0x80FA20A0] + field/bg/rom_shop4_1_us_sign03_tex: + addrs: [0x80FA20A0, 0x80FA26A0] + field/bg/rom_shop4_1_sign04_tex: + addrs: [0x80FA26A0, 0x80FA27A0] + field/bg/rom_shop4_1_reji01_tex: + addrs: [0x80FA27A0, 0x80FA2AA0] + field/bg/rom_shop4_1_reji02_tex: + addrs: [0x80FA2AA0, 0x80FA2BA0] + field/bg/rom_shop4_1_reji03_tex: + addrs: [0x80FA2BA0, 0x80FA2CA0] + field/bg/rom_shop4_1_floor02_tex: + addrs: [0x80FA2CA0, 0x80FA34A0] + field/bg/rom_shop4_1_floor03_tex: + addrs: [0x80FA34A0, 0x80FA3CA0] + field/bg/rom_shop4_1_floor04_tex: + addrs: [0x80FA3CA0, 0x80FA44A0] + field/bg/rom_shop4_1_shadow01_tex: + addrs: [0x80FA44A0, 0x80FA45A0] + field/bg/rom_shop4_1_shadow02_tex: + addrs: [0x80FA45A0, 0x80FA46A0] + field/bg/rom_shop4_1_lamp02_tex: + addrs: [0x80FA46A0, 0x80FA4720] + field/bg/rom_shop4_1_shadow03_tex: + addrs: [0x80FA4720, 0x80FA4820] + field/bg/rom_shop4_1_v: + addrs: [0x80FA4820, 0x80FA5E40] + type: vtx + # rom_shop4_fuku.c + field/bg/rom_shop4_1_floor_tex_pal2: + addrs: [0x80FA6400, 0x80FA6420] + type: pal16 + field/bg/rom_shop4_1_base_tex_pal2: + addrs: [0x80FA6420, 0x80FA6440] + type: pal16 + field/bg/rom_shop4_1_stair_tex_pal2: + addrs: [0x80FA6440, 0x80FA6460] + type: pal16 + field/bg/rom_shop4_1_table_tex_pal2: + addrs: [0x80FA6460, 0x80FA6480] + type: pal16 + field/bg/rom_shop4_1_wall_tex_pal2: + addrs: [0x80FA6480, 0x80FA64A0] + type: pal16 + field/bg/rom_shop4_1_sign01_tex_pal2: + addrs: [0x80FA64A0, 0x80FA64C0] + type: pal16 + field/bg/rom_shop4_1_kaunta_tex_pal2: + addrs: [0x80FA64C0, 0x80FA64E0] + type: pal16 + field/bg/rom_shop4_2_sign01_us_tex_pal: + addrs: [0x80FA64E0, 0x80FA6500] + type: pal16 + field/bg/rom_shop4_1_us_sign02_tex_pal2: + addrs: [0x80FA6500, 0x80FA6520] + type: pal16 + field/bg/rom_shop4_1_us_sign0_tex_pal: + addrs: [0x80FA6520, 0x80FA6540] + type: pal16 + field/bg/rom_shop4_1_sign03_tex_pal2: + addrs: [0x80FA6540, 0x80FA6560] + type: pal16 + field/bg/rom_shop4_1_reji_tex_pal2: + addrs: [0x80FA6560, 0x80FA6580] + type: pal16 + field/bg/rom_shop_kouhaku_pal2: + addrs: [0x80FA6580, 0x80FA65A0] + type: pal16 + field/bg/rom_shop4_1_floor01_tex2: + addrs: [0x80FA65A0, 0x80FA6DA0] + field/bg/rom_shop4_1_base_tex2: + addrs: [0x80FA6DA0, 0x80FA6FA0] + field/bg/rom_shop4_1_stair01_tex2: + addrs: [0x80FA6FA0, 0x80FA70A0] + field/bg/rom_shop4_1_table01_tex2: + addrs: [0x80FA70A0, 0x80FA71A0] + field/bg/rom_shop4_1_table02_tex2: + addrs: [0x80FA71A0, 0x80FA72A0] + field/bg/rom_shop4_1_wall01_tex2: + addrs: [0x80FA72A0, 0x80FA7AA0] + field/bg/rom_shop4_1_wall02_tex2: + addrs: [0x80FA7AA0, 0x80FA7CA0] + field/bg/rom_shop4_1_sign05_tex2: + addrs: [0x80FA7CA0, 0x80FA7D20] + field/bg/rom_shop4_1_kaunta01_tex2: + addrs: [0x80FA7D20, 0x80FA7F20] + field/bg/rom_shop4_1_kaunta02_tex2: + addrs: [0x80FA7F20, 0x80FA7FA0] + field/bg/rom_shop4_2_us_sign01_tex: + addrs: [0x80FA7FA0, 0x80FA83A0] + field/bg/rom_shop4_1_us_sign02_tex2: + addrs: [0x80FA83A0, 0x80FA84A0] + field/bg/rom_shop4_1_us_sign0_tex: + addrs: [0x80FA84A0, 0x80FA8AA0] + field/bg/rom_shop4_1_sign04_tex2: + addrs: [0x80FA8AA0, 0x80FA8BA0] + field/bg/rom_shop4_1_reji01_tex2: + addrs: [0x80FA8BA0, 0x80FA8EA0] + field/bg/rom_shop4_1_reji02_tex2: + addrs: [0x80FA8EA0, 0x80FA8FA0] + field/bg/rom_shop4_1_reji03_tex2: + addrs: [0x80FA8FA0, 0x80FA90A0] + field/bg/rom_shop4_1_floor02_tex2: + addrs: [0x80FA90A0, 0x80FA98A0] + field/bg/rom_shop4_1_floor03_tex2: + addrs: [0x80FA98A0, 0x80FAA0A0] + field/bg/rom_shop4_1_floor04_tex2: + addrs: [0x80FAA0A0, 0x80FAA8A0] + field/bg/rom_shop4_1_shadow02_tex2: + addrs: [0x80FAA8A0, 0x80FAA9A0] + field/bg/rom_shop_kouhaku_tex2: + addrs: [0x80FAA9A0, 0x80FAB1A0] + field/bg/rom_shop4_fuku_v: + addrs: [0x80FAB1A0, 0x80FAC8C0] + type: vtx + # rom_tent.c + field/bg/rom_tent_box_pal: + addrs: [0x811007A0, 0x811007C0] + type: pal16 + field/bg/rom_tent_can_pal: + addrs: [0x811007C0, 0x811007E0] + type: pal16 + field/bg/rom_tent_mono1_pal: + addrs: [0x811007E0, 0x81100800] + type: pal16 + field/bg/rom_tent_gas_pal: + addrs: [0x81100800, 0x81100820] + type: pal16 + field/bg/rom_tent_enter: + addrs: [0x81100820, 0x81100C20] + field/bg/rom_tent_floor: + addrs: [0x81100C20, 0x81101420] + field/bg/rom_tent_wall1: + addrs: [0x81101420, 0x81101C20] + field/bg/rom_tent_wall2: + addrs: [0x81101C20, 0x81102420] + field/bg/rom_tent_bou: + addrs: [0x81102420, 0x81102440] + field/bg/rom_tent_mono1: + addrs: [0x81102440, 0x81102C40] + field/bg/rom_tent_can: + addrs: [0x81102C40, 0x81102D40] + field/bg/rom_tent_conpas: + addrs: [0x81102D40, 0x81102DC0] + field/bg/rom_tent_box: + addrs: [0x81102DC0, 0x811031C0] + field/bg/rom_tent_kage_m: + addrs: [0x811031C0, 0x81103240] + field/bg/rom_tent_gas: + addrs: [0x81103240, 0x81103440] + field/bg/rom_tent_kage_s: + addrs: [0x81103440, 0x811034C0] + field/bg/rom_tent_kage_b: + addrs: [0x811034C0, 0x811035C0] + field/bg/rom_tent_v: + addrs: [0x811035C0, 0x81104B90] + type: vtx + # room01.c + field/bg/room: + addrs: [0x81104FE0, 0x81105000] + type: pal16 + field/bg/room_floor: + addrs: [0x81105000, 0x81105400] + field/bg/room_wall: + addrs: [0x81105400, 0x81105C00] + field/bg/room_window: + addrs: [0x81105C00, 0x81106400] + field/bg/room01_v: + addrs: [0x81106400, 0x81106980] + type: vtx + # rom_train_in.c + field/bg/rom_train_1_pal: + addrs: [0x81106D40, 0x81106D60] + type: pal16 + field/bg/rom_train_2_pal: + addrs: [0x81106D60, 0x81106D80] + type: pal16 + field/bg/rom_train_seat1_tex: + addrs: [0x81106DA0, 0x811075A0] + field/bg/rom_train_seat2_tex: + addrs: [0x811075A0, 0x81107DA0] + field/bg/rom_train_floor_tex: + addrs: [0x81107DA0, 0x811085A0] + field/bg/rom_train_wall1_tex: + addrs: [0x811085A0, 0x81108DA0] + field/bg/rom_train_roof_tex: + addrs: [0x81108DA0, 0x811095A0] + field/bg/rom_train_wall2_tex: + addrs: [0x811095A0, 0x81109DA0] + field/bg/rom_train_net_tex: + addrs: [0x81109DA0, 0x8110A5A0] + field/bg/rom_train_glass_tex: + addrs: [0x8110A5A0, 0x8110A620] + field/bg/rom_train_light_tex: + addrs: [0x8110A620, 0x8110A820] + field/bg/rom_train_in_v: + addrs: [0x8110A820, 0x8110C910] + type: vtx + # rom_uranai.c + field/bg/rom_uranai_floor_tex_pal: + addrs: [0x8110F620, 0x8110F640] + type: pal16 + field/bg/rom_uranai_wall_tex_pal: + addrs: [0x8110F640, 0x8110F660] + type: pal16 + field/bg/rom_uranai_table_tex_pal: + addrs: [0x8110F660, 0x8110F680] + type: pal16 + field/bg/rom_uranai_tubo_tex_pal: + addrs: [0x8110F680, 0x8110F6A0] + type: pal16 + field/bg/rom_uranai_stand_tex_pal: + addrs: [0x8110F6A0, 0x8110F6C0] + type: pal16 + field/bg/rom_uranai_tex_nuno_pal: + addrs: [0x8110F6C0, 0x8110F6E0] + type: pal16 + field/bg/rom_uranai_tex_bace_pal: + addrs: [0x8110F6E0, 0x8110F700] + type: pal16 + field/bg/rom_uranai_card_tex_pal: + addrs: [0x8110F700, 0x8110F720] + type: pal16 + field/bg/rom_uranai_floor_tex: + addrs: [0x8110F720, 0x8110FF20] + field/bg/rom_uranai_wall01_tex: + addrs: [0x8110FF20, 0x81110520] + field/bg/rom_uranai_wall02_tex: + addrs: [0x81110520, 0x81110920] + field/bg/rom_uranai_wall03_tex: + addrs: [0x81110920, 0x81110D20] + field/bg/rom_uranai_table01_tex: + addrs: [0x81110D20, 0x81110DA0] + field/bg/rom_uranai_table02_tex: + addrs: [0x81110DA0, 0x81110E20] + field/bg/rom_uranai_tubo_tex: + addrs: [0x81110E20, 0x81111020] + field/bg/rom_uranai_shadow01_tex: + addrs: [0x81111020, 0x81111120] + field/bg/rom_uranai_vell_tex: + addrs: [0x81111120, 0x81111520] + field/bg/rom_uranai_vell02_tex: + addrs: [0x81111520, 0x81111920] + field/bg/rom_uranai_stand01_tex: + addrs: [0x81111920, 0x81111B20] + field/bg/rom_uranai_nuno01_tex: + addrs: [0x81111B20, 0x81111BA0] + field/bg/rom_uranai_nuno02_tex: + addrs: [0x81111BA0, 0x81111C20] + field/bg/rom_uranai_bace_tex: + addrs: [0x81111C20, 0x81111E20] + field/bg/rom_uranai_card01_tex: + addrs: [0x81111E20, 0x81112020] + field/bg/rom_uranai_shadow02_tex: + addrs: [0x81112020, 0x81112120] + field/bg/rom_uranai_card02_tex: + addrs: [0x81112120, 0x811125A0] + field/bg/rom_uranai_cris02_tex: + addrs: [0x811125A0, 0x81112DA0] + field/bg/rom_uranai_cris01_tex_rgb_ia8: + addrs: [0x81112DA0, 0x811131A0] + field/bg/rom_uranai_hi02_tex_rgb_i4: + addrs: [0x811131A0, 0x811133A0] + field/bg/rom_uranai_hi03_tex_rgb_i4: + addrs: [0x811133A0, 0x811135A0] + field/bg/rom_uranai_v: + addrs: [0x811135A0, 0x81114A80] + type: vtx diff --git a/config/rel_disasm_overrides.yml b/config/rel_disasm_overrides.yml index 089d6a8f..269e8459 100644 --- a/config/rel_disasm_overrides.yml +++ b/config/rel_disasm_overrides.yml @@ -14,3 +14,7 @@ symbol_aligns: 0x81296140: 32 # .bss m_island.o 0x80904700: 32 # rom_myhome1_floor_v 0x80751140: 32 # dataobject.obj/.data/obj_zassou_tex + 0x80DD61A0: 32 # dataobject/obj/.data/cKF_ckcb_r_int_hnw001_tbl (TU is aligned to 32 because of 32-byte aligned entries) + 0x80F1CCA0: 32 # dataobject/obj/.data/rom_museum5_wall_pal + 0x80F85720: 32 # dataobject/obj/.data/grd_player_select_evw_anime_1 (TU is aligned to 32) + 0x80FACE20: 32 # dataobject/obj/.data/rom_shop4_1_floor_tex_pal diff --git a/config/rel_slices.yml b/config/rel_slices.yml index b037b4bf..2d899f2b 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -1959,21 +1959,560 @@ data/npc/model/tex/wol_5.c: .data: [0x80C546E0, 0x80C55300] data/npc/model/tex/wol_6.c: .data: [0x80C55300, 0x80C55F20] -# map submenu -data/submenu/map/kan_tizu.c: - .data: [0x80F0B020, 0x80F11C20] -data/submenu/map/kan_tizu2.c: - .data: [0x80F11C20, 0x80F13A20] data/field/bg/beach_pal.c: .data: [0x80C59CA8, 0x80C59E28] +data/field/bg/acre/grd_yamishop/grd_yamishop.c: + .data: [0x80C5A240, 0x80C5DBA0] +data/field/bg/acre/grd_post_office/grd_post_office.c: + .data: [0x80C5DBA0, 0x80C63408] +data/field/bg/acre/tmp4/tmp4.c: + .data: [0x80C63408, 0x80C64698] +data/field/bg/acre/tmpr4/tmpr4.c: + .data: [0x80C646D8, 0x80C66278] +data/field/bg/acre/tmp3/tmp3.c: + .data: [0x80C66278, 0x80C677F8] +data/field/bg/acre/tmpr3/tmpr3.c: + .data: [0x80C67838, 0x80C69338] +data/field/bg/acre/tmp/tmp.c: + .data: [0x80C69338, 0x80C695E0] +data/field/bg/acre/tmpr/tmpr.c: + .data: [0x80C695F0, 0x80C6A8C8] +data/field/bg/acre/tmp2/tmp2.c: + .data: [0x80C6A8C8, 0x80C6CE68] +data/field/bg/acre/tmpr2/tmpr2.c: + .data: [0x80C6CE78, 0x80C6DCC0] data/field/bg/bush_pal.c: .data: [0x80C78680, 0x80C78800] data/field/bg/cliff_pal.c: .data: [0x80C78988, 0x80C78B20] data/field/bg/earth_pal.c: .data: [0x80C90100, 0x80C90280] +data/field/bg/acre/grd_s_c1_1/grd_s_c1_1.c: + .data: [0x80CE7320, 0x80CE83C0] +data/field/bg/acre/grd_s_c1_2/grd_s_c1_2.c: + .data: [0x80CE83C0, 0x80CE9510] +data/field/bg/acre/grd_s_c1_3/grd_s_c1_3.c: + .data: [0x80CE9510, 0x80CEA598] +data/field/bg/acre/grd_s_c1_4/grd_s_c1_4.c: + .data: [0x80CEA598, 0x80CEB868] +data/field/bg/acre/grd_s_c1_5/grd_s_c1_5.c: + .data: [0x80CEB868, 0x80CEC738] +data/field/bg/acre/grd_s_c1_r1_1/grd_s_c1_r1_1.c: + .data: [0x80CEC748, 0x80CEDCF0] +data/field/bg/acre/grd_s_c1_r1_2/grd_s_c1_r1_2.c: + .data: [0x80CEDD00, 0x80CEF128] +data/field/bg/acre/grd_s_c1_r1_3/grd_s_c1_r1_3.c: + .data: [0x80CEF138, 0x80CF0538] +data/field/bg/acre/grd_s_c1_r2_1/grd_s_c1_r2_1.c: + .data: [0x80CF0548, 0x80CF1960] +data/field/bg/acre/grd_s_c1_r2_2/grd_s_c1_r2_2.c: + .data: [0x80CF1970, 0x80CF2DC8] +data/field/bg/acre/grd_s_c1_r2_3/grd_s_c1_r2_3.c: + .data: [0x80CF2DD8, 0x80CF4440] +data/field/bg/acre/grd_s_c1_r3_1/grd_s_c1_r3_1.c: + .data: [0x80CF4450, 0x80CF5508] +data/field/bg/acre/grd_s_c1_r3_2/grd_s_c1_r3_2.c: + .data: [0x80CF5518, 0x80CF6810] +data/field/bg/acre/grd_s_c1_r3_3/grd_s_c1_r3_3.c: + .data: [0x80CF6820, 0x80CF7C58] +data/field/bg/acre/grd_s_c1_s_1/grd_s_c1_s_1.c: + .data: [0x80CF7C58, 0x80CF8B38] +data/field/bg/acre/grd_s_c1_s_2/grd_s_c1_s_2.c: + .data: [0x80CF8B38, 0x80CF9C60] +data/field/bg/acre/grd_s_c1_s_3/grd_s_c1_s_3.c: + .data: [0x80CF9C60, 0x80CFAEA0] +data/field/bg/acre/grd_s_c1_s_4/grd_s_c1_s_4.c: + .data: [0x80CFAEA0, 0x80CFC1B0] +data/field/bg/acre/grd_s_c2_1/grd_s_c2_1.c: + .data: [0x80CFC1B0, 0x80CFD1D0] +data/field/bg/acre/grd_s_c2_2/grd_s_c2_2.c: + .data: [0x80CFD1D0, 0x80CFE220] +data/field/bg/acre/grd_s_c2_3/grd_s_c2_3.c: + .data: [0x80CFE230, 0x80CFF5A8] +data/field/bg/acre/grd_s_c2_r1_1/grd_s_c2_r1_1.c: + .data: [0x80CFF5B8, 0x80D009A0] +data/field/bg/acre/grd_s_c2_r1_2/grd_s_c2_r1_2.c: + .data: [0x80D009B0, 0x80D01E70] +data/field/bg/acre/grd_s_c2_r2_1/grd_s_c2_r2_1.c: + .data: [0x80D01E80, 0x80D03140] +data/field/bg/acre/grd_s_c2_r2_2/grd_s_c2_r2_2.c: + .data: [0x80D03150, 0x80D04680] +data/field/bg/acre/grd_s_c2_s_1/grd_s_c2_s_1.c: + .data: [0x80D04680, 0x80D05A20] +data/field/bg/acre/grd_s_c2_s_2/grd_s_c2_s_2.c: + .data: [0x80D05A20, 0x80D06AF0] +data/field/bg/acre/grd_s_c2_s_3/grd_s_c2_s_3.c: + .data: [0x80D06AF0, 0x80D07AF0] +data/field/bg/acre/grd_s_c3_1/grd_s_c3_1.c: + .data: [0x80D07AF0, 0x80D08C80] +data/field/bg/acre/grd_s_c3_2/grd_s_c3_2.c: + .data: [0x80D08C90, 0x80D09D80] +data/field/bg/acre/grd_s_c3_3/grd_s_c3_3.c: + .data: [0x80D09D80, 0x80D0ACF0] +data/field/bg/acre/grd_s_c3_r1_1/grd_s_c3_r1_1.c: + .data: [0x80D0AD00, 0x80D0BE48] +data/field/bg/acre/grd_s_c3_r1_2/grd_s_c3_r1_2.c: + .data: [0x80D0BE58, 0x80D0D148] +data/field/bg/acre/grd_s_c3_r2_1/grd_s_c3_r2_1.c: + .data: [0x80D0D158, 0x80D0E7C8] +data/field/bg/acre/grd_s_c3_r2_2/grd_s_c3_r2_2.c: + .data: [0x80D0E7D8, 0x80D0FE50] +data/field/bg/acre/grd_s_c3_s_1/grd_s_c3_s_1.c: + .data: [0x80D0FE60, 0x80D11628] +data/field/bg/acre/grd_s_c4_1/grd_s_c4_1.c: + .data: [0x80D11628, 0x80D12430] +data/field/bg/acre/grd_s_c4_2/grd_s_c4_2.c: + .data: [0x80D12430, 0x80D135B0] +data/field/bg/acre/grd_s_c4_3/grd_s_c4_3.c: + .data: [0x80D135B0, 0x80D14598] +data/field/bg/acre/grd_s_c4_r1_1/grd_s_c4_r1_1.c: + .data: [0x80D145A8, 0x80D158B0] +data/field/bg/acre/grd_s_c4_r1_2/grd_s_c4_r1_2.c: + .data: [0x80D158C0, 0x80D16B80] +data/field/bg/acre/grd_s_c4_r2_1/grd_s_c4_r2_1.c: + .data: [0x80D16B90, 0x80D17EF8] +data/field/bg/acre/grd_s_c4_r2_2/grd_s_c4_r2_2.c: + .data: [0x80D17F08, 0x80D18FB0] +data/field/bg/acre/grd_s_c4_r3_1/grd_s_c4_r3_1.c: + .data: [0x80D18FC0, 0x80D1A0C8] +data/field/bg/acre/grd_s_c4_r3_2/grd_s_c4_r3_2.c: + .data: [0x80D1A0D8, 0x80D1B088] +data/field/bg/acre/grd_s_c4_s_1/grd_s_c4_s_1.c: + .data: [0x80D1B088, 0x80D1C030] +data/field/bg/acre/grd_s_c4_s_2/grd_s_c4_s_2.c: + .data: [0x80D1C030, 0x80D1D2A8] +data/field/bg/acre/grd_s_c5_1/grd_s_c5_1.c: + .data: [0x80D1D2A8, 0x80D1DFA8] +data/field/bg/acre/grd_s_c5_2/grd_s_c5_2.c: + .data: [0x80D1DFA8, 0x80D1F1B8] +data/field/bg/acre/grd_s_c5_3/grd_s_c5_3.c: + .data: [0x80D1F1B8, 0x80D1FF20] +data/field/bg/acre/grd_s_c5_r1_1/grd_s_c5_r1_1.c: + .data: [0x80D1FF30, 0x80D21510] +data/field/bg/acre/grd_s_c5_r1_2/grd_s_c5_r1_2.c: + .data: [0x80D21520, 0x80D22AB0] +data/field/bg/acre/grd_s_c5_r2_1/grd_s_c5_r2_1.c: + .data: [0x80D22AC0, 0x80D241C0] +data/field/bg/acre/grd_s_c5_r2_2/grd_s_c5_r2_2.c: + .data: [0x80D241D0, 0x80D25638] +data/field/bg/acre/grd_s_c5_r3_1/grd_s_c5_r3_1.c: + .data: [0x80D25648, 0x80D26978] +data/field/bg/acre/grd_s_c5_r3_2/grd_s_c5_r3_2.c: + .data: [0x80D26988, 0x80D27B78] +data/field/bg/acre/grd_s_c5_s_1/grd_s_c5_s_1.c: + .data: [0x80D27B78, 0x80D28B20] +data/field/bg/acre/grd_s_c5_s_2/grd_s_c5_s_2.c: + .data: [0x80D28B20, 0x80D29AC8] +data/field/bg/acre/grd_s_c6_1/grd_s_c6_1.c: + .data: [0x80D29AC8, 0x80D2AC00] +data/field/bg/acre/grd_s_c6_2/grd_s_c6_2.c: + .data: [0x80D2AC00, 0x80D2BE00] +data/field/bg/acre/grd_s_c6_3/grd_s_c6_3.c: + .data: [0x80D2BE00, 0x80D2CDA0] +data/field/bg/acre/grd_s_c6_r1_1/grd_s_c6_r1_1.c: + .data: [0x80D2CDB0, 0x80D2E088] +data/field/bg/acre/grd_s_c6_r1_2/grd_s_c6_r1_2.c: + .data: [0x80D2E098, 0x80D2F3E8] +data/field/bg/acre/grd_s_c6_r3_1/grd_s_c6_r3_1.c: + .data: [0x80D2F3F8, 0x80D30BB0] +data/field/bg/acre/grd_s_c6_s_1/grd_s_c6_s_1.c: + .data: [0x80D30BB0, 0x80D31C90] +data/field/bg/acre/grd_s_c7_1/grd_s_c7_1.c: + .data: [0x80D31C90, 0x80D32CC8] +data/field/bg/acre/grd_s_c7_2/grd_s_c7_2.c: + .data: [0x80D32CC8, 0x80D34080] +data/field/bg/acre/grd_s_c7_3/grd_s_c7_3.c: + .data: [0x80D34090, 0x80D35450] +data/field/bg/acre/grd_s_c7_r1_1/grd_s_c7_r1_1.c: + .data: [0x80D35460, 0x80D365A0] +data/field/bg/acre/grd_s_c7_r1_2/grd_s_c7_r1_2.c: + .data: [0x80D365B0, 0x80D376F8] +data/field/bg/acre/grd_s_c7_r3_1/grd_s_c7_r3_1.c: + .data: [0x80D37708, 0x80D38C48] +data/field/bg/acre/grd_s_c7_r3_2/grd_s_c7_r3_2.c: + .data: [0x80D38C58, 0x80D3A318] +data/field/bg/acre/grd_s_c7_s_1/grd_s_c7_s_1.c: + .data: [0x80D3A318, 0x80D3B938] +data/field/bg/acre/grd_s_c7_s_2/grd_s_c7_s_2.c: + .data: [0x80D3B938, 0x80D3C800] +data/field/bg/acre/grd_s_c7_s_3/grd_s_c7_s_3.c: + .data: [0x80D3C800, 0x80D3D930] +data/field/bg/acre/grd_s_e1_1/grd_s_e1_1.c: + .data: [0x80D3D930, 0x80D3DFE0] +data/field/bg/acre/grd_s_e1_r1_1/grd_s_e1_r1_1.c: + .data: [0x80D3DFF0, 0x80D3F770] +data/field/bg/acre/grd_s_e2_1/grd_s_e2_1.c: + .data: [0x80D3F770, 0x80D3FF08] +data/field/bg/acre/grd_s_e2_c1_1/grd_s_e2_c1_1.c: + .data: [0x80D3FF08, 0x80D406C8] +data/field/bg/acre/grd_s_e2_m_1/grd_s_e2_m_1.c: + .data: [0x80D406C8, 0x80D40FA0] +data/field/bg/acre/grd_s_e2_o_1/grd_s_e2_o_1.c: + .data: [0x80D40FA0, 0x80D41280] +data/field/bg/acre/grd_s_e2_t_1/grd_s_e2_t_1.c: + .data: [0x80D41280, 0x80D41DF0] +data/field/bg/acre/grd_s_e3_1/grd_s_e3_1.c: + .data: [0x80D41DF0, 0x80D425D8] +data/field/bg/acre/grd_s_e3_c1_1/grd_s_e3_c1_1.c: + .data: [0x80D425D8, 0x80D42DB0] +data/field/bg/acre/grd_s_e3_m_1/grd_s_e3_m_1.c: + .data: [0x80D42DB0, 0x80D436F8] +data/field/bg/acre/grd_s_e3_o_1/grd_s_e3_o_1.c: + .data: [0x80D436F8, 0x80D439D8] +data/field/bg/acre/grd_s_e3_t_1/grd_s_e3_t_1.c: + .data: [0x80D439D8, 0x80D44468] +data/field/bg/acre/grd_s_e4_1/grd_s_e4_1.c: + .data: [0x80D44468, 0x80D44670] +data/field/bg/acre/grd_s_e5_1/grd_s_e5_1.c: + .data: [0x80D44670, 0x80D448A0] +data/field/bg/acre/grd_s_f_1/grd_s_f_1.c: + .data: [0x80D448A0, 0x80D455F0] +data/field/bg/acre/grd_s_f_10/grd_s_f_10.c: + .data: [0x80D455F0, 0x80D463D8] +data/field/bg/acre/grd_s_f_2/grd_s_f_2.c: + .data: [0x80D463D8, 0x80D47320] +data/field/bg/acre/grd_s_f_3/grd_s_f_3.c: + .data: [0x80D47320, 0x80D47C78] +data/field/bg/acre/grd_s_f_4/grd_s_f_4.c: + .data: [0x80D47C88, 0x80D48A60] +data/field/bg/acre/grd_s_f_5/grd_s_f_5.c: + .data: [0x80D48A70, 0x80D49C50] +data/field/bg/acre/grd_s_f_6/grd_s_f_6.c: + .data: [0x80D49C60, 0x80D4AE88] +data/field/bg/acre/grd_s_f_7/grd_s_f_7.c: + .data: [0x80D4AE88, 0x80D4C640] +data/field/bg/acre/grd_s_f_8/grd_s_f_8.c: + .data: [0x80D4C640, 0x80D4D568] +data/field/bg/acre/grd_s_f_9/grd_s_f_9.c: + .data: [0x80D4D568, 0x80D4E708] +data/field/bg/acre/grd_s_f_ko_1/grd_s_f_ko_1.c: + .data: [0x80D4E708, 0x80D4F808] +data/field/bg/acre/grd_s_f_ko_2/grd_s_f_ko_2.c: + .data: [0x80D4F808, 0x80D50490] +data/field/bg/acre/grd_s_f_ko_3/grd_s_f_ko_3.c: + .data: [0x80D504A0, 0x80D51708] +data/field/bg/acre/grd_s_f_mh_1/grd_s_f_mh_1.c: + .data: [0x80D51708, 0x80D52588] +data/field/bg/acre/grd_s_f_mh_2/grd_s_f_mh_2.c: + .data: [0x80D52588, 0x80D534F0] +data/field/bg/acre/grd_s_f_mh_3/grd_s_f_mh_3.c: + .data: [0x80D534F0, 0x80D54190] +data/field/bg/acre/grd_s_f_mu_1/grd_s_f_mu_1.c: + .data: [0x80D54190, 0x80D54D60] +data/field/bg/acre/grd_s_f_mu_2/grd_s_f_mu_2.c: + .data: [0x80D54D60, 0x80D55920] +data/field/bg/acre/grd_s_f_mu_3/grd_s_f_mu_3.c: + .data: [0x80D55930, 0x80D564B8] +data/field/bg/acre/grd_s_f_pk_1/grd_s_f_pk_1.c: + .data: [0x80D564B8, 0x80D575B8] +data/field/bg/acre/grd_s_f_pk_2/grd_s_f_pk_2.c: + .data: [0x80D575B8, 0x80D58580] +data/field/bg/acre/grd_s_f_pk_3/grd_s_f_pk_3.c: + .data: [0x80D58580, 0x80D59810] +data/field/bg/acre/grd_s_hole_test/grd_s_hole_test.c: + .data: [0x80D59810, 0x80D5A9A8] +data/field/bg/acre/grd_s_il_1/grd_s_il_1.c: + .data: [0x80D5A9A8, 0x80D5BA18] +data/field/bg/acre/grd_s_il_2/grd_s_il_2.c: + .data: [0x80D5BA18, 0x80D5D358] +data/field/bg/acre/grd_s_il_3/grd_s_il_3.c: + .data: [0x80D5D358, 0x80D5E4F8] +data/field/bg/acre/grd_s_il_4/grd_s_il_4.c: + .data: [0x80D5E4F8, 0x80D5F5E8] +data/field/bg/acre/grd_s_ir_1/grd_s_ir_1.c: + .data: [0x80D5F5E8, 0x80D60A60] +data/field/bg/acre/grd_s_ir_2/grd_s_ir_2.c: + .data: [0x80D60A60, 0x80D621F8] +data/field/bg/acre/grd_s_ir_3/grd_s_ir_3.c: + .data: [0x80D621F8, 0x80D63BB0] +data/field/bg/acre/grd_s_ir_4/grd_s_ir_4.c: + .data: [0x80D63BB0, 0x80D65158] +data/field/bg/acre/grd_s_m_1/grd_s_m_1.c: + .data: [0x80D65158, 0x80D662B0] +data/field/bg/acre/grd_s_m_10/grd_s_m_10.c: + .data: [0x80D662B0, 0x80D67438] +data/field/bg/acre/grd_s_m_2/grd_s_m_2.c: + .data: [0x80D67438, 0x80D68718] +data/field/bg/acre/grd_s_m_3/grd_s_m_3.c: + .data: [0x80D68718, 0x80D698C8] +data/field/bg/acre/grd_s_m_4/grd_s_m_4.c: + .data: [0x80D698C8, 0x80D6A8A0] +data/field/bg/acre/grd_s_m_5/grd_s_m_5.c: + .data: [0x80D6A8A0, 0x80D6BC70] +data/field/bg/acre/grd_s_m_6/grd_s_m_6.c: + .data: [0x80D6BC70, 0x80D6CF60] +data/field/bg/acre/grd_s_m_7/grd_s_m_7.c: + .data: [0x80D6CF60, 0x80D6DF60] +data/field/bg/acre/grd_s_m_8/grd_s_m_8.c: + .data: [0x80D6DF60, 0x80D6EFE8] +data/field/bg/acre/grd_s_m_9/grd_s_m_9.c: + .data: [0x80D6EFE8, 0x80D6FF58] +data/field/bg/acre/grd_s_m_r1_1/grd_s_m_r1_1.c: + .data: [0x80D6FF78, 0x80D713D8] +data/field/bg/acre/grd_s_m_r1_2/grd_s_m_r1_2.c: + .data: [0x80D713F8, 0x80D727B8] +data/field/bg/acre/grd_s_m_r1_3/grd_s_m_r1_3.c: + .data: [0x80D727D8, 0x80D73A30] +data/field/bg/acre/grd_s_m_r1_4/grd_s_m_r1_4.c: + .data: [0x80D73A50, 0x80D74FD8] +data/field/bg/acre/grd_s_m_r1_5/grd_s_m_r1_5.c: + .data: [0x80D74FF8, 0x80D76660] +data/field/bg/acre/grd_s_m_r1_b_1/grd_s_m_r1_b_1.c: + .data: [0x80D76680, 0x80D77908] +data/field/bg/acre/grd_s_m_r1_b_2/grd_s_m_r1_b_2.c: + .data: [0x80D77928, 0x80D78F10] +data/field/bg/acre/grd_s_m_r1_b_3/grd_s_m_r1_b_3.c: + .data: [0x80D78F30, 0x80D7A350] +data/field/bg/acre/grd_s_m_ta_1/grd_s_m_ta_1.c: + .data: [0x80D7A370, 0x80D7B6C8] +data/field/bg/acre/grd_s_m_ta_2/grd_s_m_ta_2.c: + .data: [0x80D7B6E8, 0x80D7C900] +data/field/bg/acre/grd_s_m_ta_3/grd_s_m_ta_3.c: + .data: [0x80D7C920, 0x80D7DC70] +data/field/bg/acre/grd_s_m_wf_1/grd_s_m_wf_1.c: + .data: [0x80D7DCB0, 0x80D7F310] +data/field/bg/acre/grd_s_m_wf_2/grd_s_m_wf_2.c: + .data: [0x80D7F350, 0x80D81008] +data/field/bg/acre/grd_s_m_wf_3/grd_s_m_wf_3.c: + .data: [0x80D81048, 0x80D82780] +data/field/bg/acre/grd_s_o_1/grd_s_o_1.c: + .data: [0x80D827C0, 0x80D82CA0] +data/field/bg/acre/grd_s_o_10/grd_s_o_10.c: + .data: [0x80D82CE0, 0x80D83178] +data/field/bg/acre/grd_s_o_2/grd_s_o_2.c: + .data: [0x80D831B8, 0x80D83658] +data/field/bg/acre/grd_s_o_3/grd_s_o_3.c: + .data: [0x80D83698, 0x80D83B00] +data/field/bg/acre/grd_s_o_4/grd_s_o_4.c: + .data: [0x80D83B40, 0x80D83FD0] +data/field/bg/acre/grd_s_o_5/grd_s_o_5.c: + .data: [0x80D84010, 0x80D84490] +data/field/bg/acre/grd_s_o_6/grd_s_o_6.c: + .data: [0x80D844D0, 0x80D84938] +data/field/bg/acre/grd_s_o_7/grd_s_o_7.c: + .data: [0x80D84978, 0x80D84E08] +data/field/bg/acre/grd_s_o_8/grd_s_o_8.c: + .data: [0x80D84E48, 0x80D85338] +data/field/bg/acre/grd_s_o_9/grd_s_o_9.c: + .data: [0x80D85378, 0x80D85850] +data/field/bg/acre/grd_s_o_i_1/grd_s_o_i_1.c: + .data: [0x80D85850, 0x80D85CB0] +data/field/bg/acre/grd_s_o_i_2/grd_s_o_i_2.c: + .data: [0x80D85CF0, 0x80D85FD0] +data/field/bg/acre/grd_s_o_r1_1/grd_s_o_r1_1.c: + .data: [0x80D86010, 0x80D86520] +data/field/bg/acre/grd_s_o_r1_2/grd_s_o_r1_2.c: + .data: [0x80D86560, 0x80D86A40] +data/field/bg/acre/grd_s_o_r1_3/grd_s_o_r1_3.c: + .data: [0x80D86A80, 0x80D86F78] +data/field/bg/acre/grd_s_o_r1_4/grd_s_o_r1_4.c: + .data: [0x80D86FB8, 0x80D87478] +data/field/bg/acre/grd_s_o_r1_5/grd_s_o_r1_5.c: + .data: [0x80D874B8, 0x80D87890] +data/field/bg/acre/grd_s_o_r1_b_1/grd_s_o_r1_b_1.c: + .data: [0x80D878D0, 0x80D87BB0] +data/field/bg/acre/grd_s_o_r1_b_2/grd_s_o_r1_b_2.c: + .data: [0x80D87BF0, 0x80D87EC8] +data/field/bg/acre/grd_s_o_r1_b_3/grd_s_o_r1_b_3.c: + .data: [0x80D87F08, 0x80D881E0] +data/field/bg/acre/grd_s_o_ta_1/grd_s_o_ta_1.c: + .data: [0x80D88220, 0x80D88728] +data/field/bg/acre/grd_s_o_ta_2/grd_s_o_ta_2.c: + .data: [0x80D88768, 0x80D88B70] +data/field/bg/acre/grd_s_o_ta_3/grd_s_o_ta_3.c: + .data: [0x80D88BB0, 0x80D88FC8] +data/field/bg/acre/grd_s_o_wf_1/grd_s_o_wf_1.c: + .data: [0x80D89008, 0x80D89538] +data/field/bg/acre/grd_s_o_wf_2/grd_s_o_wf_2.c: + .data: [0x80D89578, 0x80D89AD8] +data/field/bg/acre/grd_s_o_wf_3/grd_s_o_wf_3.c: + .data: [0x80D89B18, 0x80D8A030] +data/field/bg/acre/grd_s_r1_1/grd_s_r1_1.c: + .data: [0x80D8A040, 0x80D8AE28] +data/field/bg/acre/grd_s_r1_2/grd_s_r1_2.c: + .data: [0x80D8AE38, 0x80D8BD60] +data/field/bg/acre/grd_s_r1_3/grd_s_r1_3.c: + .data: [0x80D8BD70, 0x80D8CD90] +data/field/bg/acre/grd_s_r1_4/grd_s_r1_4.c: + .data: [0x80D8CDA0, 0x80D8DAA8] +data/field/bg/acre/grd_s_r1_b_1/grd_s_r1_b_1.c: + .data: [0x80D8DAB8, 0x80D8EAE0] +data/field/bg/acre/grd_s_r1_b_2/grd_s_r1_b_2.c: + .data: [0x80D8EAF0, 0x80D8FF20] +data/field/bg/acre/grd_s_r1_b_3/grd_s_r1_b_3.c: + .data: [0x80D8FF30, 0x80D91210] +data/field/bg/acre/grd_s_r1_p_1/grd_s_r1_p_1.c: + .data: [0x80D91220, 0x80D924B0] +data/field/bg/acre/grd_s_r2_1/grd_s_r2_1.c: + .data: [0x80D924C0, 0x80D932D8] +data/field/bg/acre/grd_s_r2_2/grd_s_r2_2.c: + .data: [0x80D932E8, 0x80D94138] +data/field/bg/acre/grd_s_r2_3/grd_s_r2_3.c: + .data: [0x80D94148, 0x80D951A8] +data/field/bg/acre/grd_s_r2_4/grd_s_r2_4.c: + .data: [0x80D951B8, 0x80D961C0] +data/field/bg/acre/grd_s_r2_b_1/grd_s_r2_b_1.c: + .data: [0x80D961D0, 0x80D97800] +data/field/bg/acre/grd_s_r2_b_2/grd_s_r2_b_2.c: + .data: [0x80D97810, 0x80D98B68] +data/field/bg/acre/grd_s_r2_b_3/grd_s_r2_b_3.c: + .data: [0x80D98B78, 0x80D9A060] +data/field/bg/acre/grd_s_r2_p_1/grd_s_r2_p_1.c: + .data: [0x80D9A070, 0x80D9B8D0] +data/field/bg/acre/grd_s_r3_1/grd_s_r3_1.c: + .data: [0x80D9B8E0, 0x80D9C978] +data/field/bg/acre/grd_s_r3_2/grd_s_r3_2.c: + .data: [0x80D9C988, 0x80D9D878] +data/field/bg/acre/grd_s_r3_3/grd_s_r3_3.c: + .data: [0x80D9D888, 0x80D9E7C0] +data/field/bg/acre/grd_s_r3_4/grd_s_r3_4.c: + .data: [0x80D9E7D0, 0x80D9F620] +data/field/bg/acre/grd_s_r3_b_1/grd_s_r3_b_1.c: + .data: [0x80D9F630, 0x80DA0818] +data/field/bg/acre/grd_s_r3_b_2/grd_s_r3_b_2.c: + .data: [0x80DA0828, 0x80DA1D40] +data/field/bg/acre/grd_s_r3_b_3/grd_s_r3_b_3.c: + .data: [0x80DA1D50, 0x80DA3170] +data/field/bg/acre/grd_s_r3_p_1/grd_s_r3_p_1.c: + .data: [0x80DA3180, 0x80DA4820] +data/field/bg/acre/grd_s_r4_1/grd_s_r4_1.c: + .data: [0x80DA4830, 0x80DA5758] +data/field/bg/acre/grd_s_r4_2/grd_s_r4_2.c: + .data: [0x80DA5768, 0x80DA66D0] +data/field/bg/acre/grd_s_r4_3/grd_s_r4_3.c: + .data: [0x80DA66E0, 0x80DA74F8] +data/field/bg/acre/grd_s_r4_b_1/grd_s_r4_b_1.c: + .data: [0x80DA7508, 0x80DA81F8] +data/field/bg/acre/grd_s_r4_b_2/grd_s_r4_b_2.c: + .data: [0x80DA8208, 0x80DA93D8] +data/field/bg/acre/grd_s_r4_p_1/grd_s_r4_p_1.c: + .data: [0x80DA93E8, 0x80DAA928] +data/field/bg/acre/grd_s_r5_1/grd_s_r5_1.c: + .data: [0x80DAA938, 0x80DAB920] +data/field/bg/acre/grd_s_r5_2/grd_s_r5_2.c: + .data: [0x80DAB930, 0x80DACA10] +data/field/bg/acre/grd_s_r5_3/grd_s_r5_3.c: + .data: [0x80DACA20, 0x80DADAC8] +data/field/bg/acre/grd_s_r5_b_1/grd_s_r5_b_1.c: + .data: [0x80DADAD8, 0x80DAED98] +data/field/bg/acre/grd_s_r5_b_2/grd_s_r5_b_2.c: + .data: [0x80DAEDA8, 0x80DB00A0] +data/field/bg/acre/grd_s_r5_p_1/grd_s_r5_p_1.c: + .data: [0x80DB00B0, 0x80DB1530] +data/field/bg/acre/grd_s_r6_1/grd_s_r6_1.c: + .data: [0x80DB1540, 0x80DB2258] +data/field/bg/acre/grd_s_r6_2/grd_s_r6_2.c: + .data: [0x80DB2268, 0x80DB2FE8] +data/field/bg/acre/grd_s_r6_3/grd_s_r6_3.c: + .data: [0x80DB2FF8, 0x80DB3D60] +data/field/bg/acre/grd_s_r6_b_1/grd_s_r6_b_1.c: + .data: [0x80DB3D70, 0x80DB4BD8] +data/field/bg/acre/grd_s_r6_b_2/grd_s_r6_b_2.c: + .data: [0x80DB4BE8, 0x80DB6128] +data/field/bg/acre/grd_s_r6_p_1/grd_s_r6_p_1.c: + .data: [0x80DB6138, 0x80DB77A8] +data/field/bg/acre/grd_s_r7_1/grd_s_r7_1.c: + .data: [0x80DB77B8, 0x80DB86A0] +data/field/bg/acre/grd_s_r7_2/grd_s_r7_2.c: + .data: [0x80DB86B0, 0x80DB94B0] +data/field/bg/acre/grd_s_r7_3/grd_s_r7_3.c: + .data: [0x80DB94C0, 0x80DBA258] +data/field/bg/acre/grd_s_r7_b_1/grd_s_r7_b_1.c: + .data: [0x80DBA268, 0x80DBB218] +data/field/bg/acre/grd_s_r7_b_2/grd_s_r7_b_2.c: + .data: [0x80DBB228, 0x80DBC7C0] +data/field/bg/acre/grd_s_r7_p_1/grd_s_r7_p_1.c: + .data: [0x80DBC7D0, 0x80DBDBE8] +data/field/bg/acre/grd_s_t_1/grd_s_t_1.c: + .data: [0x80DBDBF8, 0x80DBE858] +data/field/bg/acre/grd_s_t_10/grd_s_t_10.c: + .data: [0x80DBE858, 0x80DBF8F8] +data/field/bg/acre/grd_s_t_2/grd_s_t_2.c: + .data: [0x80DBF8F8, 0x80DC0808] +data/field/bg/acre/grd_s_t_3/grd_s_t_3.c: + .data: [0x80DC0808, 0x80DC1368] +data/field/bg/acre/grd_s_t_4/grd_s_t_4.c: + .data: [0x80DC1378, 0x80DC24F0] +data/field/bg/acre/grd_s_t_5/grd_s_t_5.c: + .data: [0x80DC2500, 0x80DC3770] +data/field/bg/acre/grd_s_t_6/grd_s_t_6.c: + .data: [0x80DC3770, 0x80DC4B78] +data/field/bg/acre/grd_s_t_7/grd_s_t_7.c: + .data: [0x80DC4B78, 0x80DC5F48] +data/field/bg/acre/grd_s_t_8/grd_s_t_8.c: + .data: [0x80DC5F48, 0x80DC6DA8] +data/field/bg/acre/grd_s_t_9/grd_s_t_9.c: + .data: [0x80DC6DA8, 0x80DC7C88] +data/field/bg/acre/grd_s_t_po_1/grd_s_t_po_1.c: + .data: [0x80DC7C88, 0x80DC8918] +data/field/bg/acre/grd_s_t_po_2/grd_s_t_po_2.c: + .data: [0x80DC8918, 0x80DC9568] +data/field/bg/acre/grd_s_t_po_3/grd_s_t_po_3.c: + .data: [0x80DC9578, 0x80DCA6D0] +data/field/bg/acre/grd_s_t_r1_1/grd_s_t_r1_1.c: + .data: [0x80DCA6E0, 0x80DCB8D8] +data/field/bg/acre/grd_s_t_r1_2/grd_s_t_r1_2.c: + .data: [0x80DCB8E8, 0x80DCCD68] +data/field/bg/acre/grd_s_t_r1_3/grd_s_t_r1_3.c: + .data: [0x80DCCD78, 0x80DCE220] +data/field/bg/acre/grd_s_t_r1_4/grd_s_t_r1_4.c: + .data: [0x80DCE230, 0x80DCF578] +data/field/bg/acre/grd_s_t_r1_5/grd_s_t_r1_5.c: + .data: [0x80DCF588, 0x80DD0A38] +data/field/bg/acre/grd_s_t_sh_1/grd_s_t_sh_1.c: + .data: [0x80DD0A38, 0x80DD1668] +data/field/bg/acre/grd_s_t_sh_2/grd_s_t_sh_2.c: + .data: [0x80DD1678, 0x80DD2610] +data/field/bg/acre/grd_s_t_sh_3/grd_s_t_sh_3.c: + .data: [0x80DD2610, 0x80DD3270] +data/field/bg/acre/grd_s_t_st1_1/grd_s_t_st1_1.c: + .data: [0x80DD3270, 0x80DD40F0] +data/field/bg/acre/grd_s_t_st1_2/grd_s_t_st1_2.c: + .data: [0x80DD40F0, 0x80DD5280] +data/field/bg/acre/grd_s_t_st1_3/grd_s_t_st1_3.c: + .data: [0x80DD5280, 0x80DD61A0] +data/field/bg/acre/rom_toudai/rom_toudai.c: + .data: [0x80F08520, 0x80F0B020] + +# acres +# data/field/bg/acre/grd_post_office/grd_post_office.c: + # .data: [0x80C5DBA0, 0x80C63408] + +# map submenu +data/submenu/map/kan_tizu.c: + .data: [0x80F0B020, 0x80F11C20] +data/submenu/map/kan_tizu2.c: + .data: [0x80F11C20, 0x80F13A20] +data/field/bg/acre/rom_museum1/rom_museum1.c: + .data: [0x80F13AA0, 0x80F19D68] +data/field/bg/acre/rom_museum5/rom_museum5.c: + .data: [0x80F19DC0, 0x80F1CCA0] +data/field/bg/acre/rom_museum2/rom_museum2.c: + .data: [0x80F1D5C0, 0x80F20B58] +data/field/bg/acre/rom_museum3/rom_museum3.c: + .data: [0x80F23E40, 0x80F27E18] +data/field/bg/acre/rom_tailor/rom_tailor.c: + .data: [0x80F29260, 0x80F31FB0] +data/field/bg/acre/myr_etc/myr_etc.c: + .data: [0x80F84780, 0x80F85720] +data/field/bg/acre/grd_player_select/grd_player_select.c: + .data: [0x80F85740, 0x80F86FA0] +data/field/bg/acre/police_indoor/police_indoor.c: + .data: [0x80F86FA0, 0x80F8C2C8] data/field/bg/rail_pal.c: .data: [0x80F8C2C8, 0x80F8C460] +data/field/bg/acre/rom_shop4_1/rom_shop4_1.c: + .data: [0x80F9FF80, 0x80FA6400] +data/field/bg/acre/rom_shop4_fuku/rom_shop4_fuku.c: + .data: [0x80FA6400, 0x80FACE20] +data/field/bg/acre/rom_tent/rom_tent.c: + .data: [0x811007A0, 0x81104FE0] +data/field/bg/acre/room01/room01.c: + .data: [0x81104FE0, 0x81106C68] +data/field/bg/acre/rom_train_in/rom_train_in.c: + .data: [0x81106D40, 0x8110CE00] +data/field/bg/acre/rom_uranai/rom_uranai.c: + .data: [0x8110F620, 0x81115868] m_bg_tex.c: .bss: [0x8125AC80, 0x81263080] sys_stacks.c: diff --git a/config/symbols.yml b/config/symbols.yml index 44442904..328d60da 100644 --- a/config/symbols.yml +++ b/config/symbols.yml @@ -2633,7 +2633,7 @@ global: 0x8009ae80: _restfpr_27 0x8009ae84: _restfpr_28 0x8009ae88: _restfpr_29 - 0x8009ae98: __save_gpr + # 0x8009ae98: __save_gpr 0x8009ae98: _savegpr_14 0x8009ae9c: _savegpr_15 0x8009aea0: _savegpr_16 @@ -2650,7 +2650,7 @@ global: 0x8009aecc: _savegpr_27 0x8009aed0: _savegpr_28 0x8009aed4: _savegpr_29 - 0x8009aee4: __restore_gpr + # 0x8009aee4: __restore_gpr 0x8009aee4: _restgpr_14 0x8009aee8: _restgpr_15 0x8009aeec: _restgpr_16 @@ -47263,6 +47263,7 @@ global: 0x80FAB1A0: rom_shop4_fuku_v 0x80FAC8C0: rom_shop4_fuku_modelT 0x80FAC928: rom_shop4_fuku_model + 0x80FACE20: rom_shop4_1_floor_tex_pal 0x80FACE40: rom_shop4_2_stair_tex_pal 0x80FACE80: rom_shop4_2_wall_tex_pal 0x80FACEA0: rom_shop4_2_sign01_tex_pal diff --git a/include/evw_anime.h b/include/evw_anime.h index 0fdd0686..f8afb6a9 100644 --- a/include/evw_anime.h +++ b/include/evw_anime.h @@ -5,68 +5,74 @@ #include "m_play_h.h" #ifdef __cplusplus -extern "C"{ +extern "C" { #endif #define EVW_COLOR_BUF_MAX 50 enum { - EVW_ANIME_TYPE_SCROLL1, - EVW_ANIME_TYPE_SCROLL2, - EVW_ANIME_TYPE_COLREG_MANUAL, - EVW_ANIME_TYPE_COLREG_LINEAR, - EVW_ANIME_TYPE_COLREG_NONLINEAR, - EVW_ANIME_TYPE_TEXANIME, + EVW_ANIME_TYPE_SCROLL1, + EVW_ANIME_TYPE_SCROLL2, + EVW_ANIME_TYPE_COLREG_MANUAL, + EVW_ANIME_TYPE_COLREG_LINEAR, + EVW_ANIME_TYPE_COLREG_NONLINEAR, + EVW_ANIME_TYPE_TEXANIME, - EVW_ANIME_TYPE_NUM + EVW_ANIME_TYPE_NUM }; +/* sizeof(EVW_ANIME_COL_PRIM) == 0x5 */ typedef struct evw_anime_col_prim_s { - u8 r; - u8 g; - u8 b; - u8 a; - u8 l; + /* 0x00 */ u8 r; + /* 0x01 */ u8 g; + /* 0x02 */ u8 b; + /* 0x03 */ u8 a; + /* 0x04 */ u8 l; } EVW_ANIME_COL_PRIM; +/* sizeof(EVW_ANIME_COL_ENV) == 0x4 */ typedef struct evw_anime_col_env_s { - u8 r; - u8 g; - u8 b; - u8 a; + /* 0x00 */ u8 r; + /* 0x01 */ u8 g; + /* 0x02 */ u8 b; + /* 0x03 */ u8 a; } EVW_ANIME_COL_ENV; +/* sizeof(EVW_ANIME_COLREG) == 0x10 */ typedef struct evw_anime_col_reg_s { - u16 frame_count; /* total frames in the animation */ - u16 key_count; /* number of animation keyframes */ + /* 0x00 */ u16 frame_count; /* total frames in the animation */ + /* 0x02 */ u16 key_count; /* number of animation keyframes */ - EVW_ANIME_COL_PRIM* prim_colors; /* list of primitive colors per-keyframe */ - EVW_ANIME_COL_ENV* env_colors; /* list of environment colors per-keyframe */ + /* 0x04 */ EVW_ANIME_COL_PRIM* prim_colors; /* list of primitive colors per-keyframe */ + /* 0x08 */ EVW_ANIME_COL_ENV* env_colors; /* list of environment colors per-keyframe */ - u16* keyframes; /* list of keyframe frame indices */ + /* 0x0C */ u16* keyframes; /* list of keyframe frame indices */ } EVW_ANIME_COLREG; +/* sizeof(EVW_ANIME_SCROLL) == 0x4 */ typedef struct evw_anime_scroll_s { - s8 x; /* x (s) texture position */ - s8 y; /* y (t) texture position */ - u8 width; /* texture width */ - u8 height; /* texture height */ + /* 0x00 */ s8 x; /* x (s) texture position */ + /* 0x01 */ s8 y; /* y (t) texture position */ + /* 0x02 */ u8 width; /* texture width */ + /* 0x03 */ u8 height; /* texture height */ } EVW_ANIME_SCROLL; +/* sizeof(EVW_ANIME_TEXANIME) == 0x10 */ typedef struct evw_anime_texanime_s { - u16 frame_count; /* total frames in the animation */ - u16 key_count; /* number of animation keyframes */ + /* 0x00 */ u16 frame_count; /* total frames in the animation */ + /* 0x02 */ u16 key_count; /* number of animation keyframes */ - void** texture_tbl; /* list of each texture */ - u8* animation_pattern; /* list of which texture to use per keyframe (runs at 30 FPS) */ + /* 0x04 */ void** texture_tbl; /* list of each texture */ + /* 0x08 */ u8* animation_pattern; /* list of which texture to use per keyframe (runs at 30 FPS) */ - u16* keyframes; /* list of keyframe frame indices */ + /* 0x0C */ u16* keyframes; /* list of keyframe frame indices */ } EVW_ANIME_TEXANIME; +/* sizeof(EVW_ANIME_DATA) == 0x8 */ typedef struct evw_anime_s { - s8 segment; /* Negative segments signal the end of the animation data array */ - s16 type; - void* data_p; + /* 0x00 */ s8 segment; /* Negative segments signal the end of the animation data array */ + /* 0x02 */ s16 type; + /* 0x04 */ void* data_p; } EVW_ANIME_DATA; extern void Evw_Anime_Set(GAME_PLAY* play, EVW_ANIME_DATA* evw_anime_data); @@ -75,4 +81,4 @@ extern void Evw_Anime_Set(GAME_PLAY* play, EVW_ANIME_DATA* evw_anime_data); } #endif -#endif \ No newline at end of file +#endif diff --git a/include/libforest/gbi_extensions.h b/include/libforest/gbi_extensions.h index 4cde0755..5f7ba482 100644 --- a/include/libforest/gbi_extensions.h +++ b/include/libforest/gbi_extensions.h @@ -675,7 +675,7 @@ do { \ _SHIFTL(G_LOADTLUT, 24, 8) | _SHIFTL(G_TLUT_DOLPHIN, 22, 2) | _SHIFTL(name, 16, 4) | _SHIFTL(unk, 14, 2) | _SHIFTL(count, 0, 14), (unsigned int)addr \ }} -#define gsDPSetTextureImage_Dolphin(fmt, siz, h, w, img) \ +#define gsDPSetTextureImage_Dolphin(fmt, siz, w, h, img) \ {{ \ _SHIFTL(G_SETTIMG, 24, 8) | _SHIFTL(fmt, 21, 3) | _SHIFTL(siz, 19, 2) | _SHIFTL(1, 18, 1) | \ _SHIFTL((h/4)-1, 10, 8) | _SHIFTL((w-1), 0, 10), (unsigned int)img \ @@ -720,7 +720,7 @@ do { \ #define G_DOLPHIN_TLUT_DEFAULT_MODE 15 // used almost always? CI palettes are forced to GX_TF_RGB5A3 #define gsDPLoadTextureBlock_4b_Dolphin(timg, fmt, w, h, pal, ws, wt, ss, st) \ - gsDPSetTextureImage_Dolphin(fmt, G_IM_SIZ_4b, h, w, timg), \ + gsDPSetTextureImage_Dolphin(fmt, G_IM_SIZ_4b, w, h, timg), \ gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, pal, ws, wt, ss, st) #define gDPLoadTextureTile_4b_Dolphin(pkt, timg, fmt, w, h) \ @@ -729,7 +729,11 @@ do { \ gDPSetTile_Dolphin(pkt, G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, 0, 0, 0, 0) \ } while (0); -#define gsSPNTriangles(n) \ +#define gsDPLoadMultiBlock_4b_Dolphin(timg, tile, fmt, w, h, pal, ws, wt, ss, st) \ + gsDPSetTextureImage_Dolphin(fmt, G_IM_SIZ_4b, w, h, timg), \ + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, tile, pal, ws, wt, ss, st) + +#define gsSPNTriangles_Independ(n) \ {{ \ _SHIFTL(G_TRIN_INDEPEND, 24, 8) | _SHIFTL(n-1, 17, 7), 0 \ }} @@ -769,7 +773,7 @@ do { \ #define gSPNTrianglesInit_7b(n, v0, v1, v2, v3, v4, v5) \ {{ \ - (unsigned long long)((((unsigned long long)gsSPNTriangles(n)) << 32) | (gsSPNWTriangleData2(v3, v4, v5) << 22) | \ + (unsigned long long)((((unsigned long long)gsSPNTriangles_Independ(n)) << 32) | (gsSPNWTriangleData2(v3, v4, v5) << 22) | \ (gsSPNTriangleData2(v0, v1, v2) << 1)) | G_VTX_MODE_7bit \ }} @@ -793,10 +797,16 @@ do { \ #define gsSPNTrianglesInit_7b(n, v0, v1, v2, v3, v4, v5) \ {{ \ - (unsigned long long)((((unsigned long long)gsSPNTriangles(n)) << 32) | (gsSPNWTriangleData2(v3, v4, v5) << 22) | \ + (unsigned long long)((((unsigned long long)gsSPNTriangles_Independ(n)) << 32) | (gsSPNWTriangleData2(v3, v4, v5) << 22) | \ (gsSPNTriangleData2(v0, v1, v2) << 1)) | G_VTX_MODE_7bit \ }} +#define gsSPNTriangles(n, v0, v1, v2, v3, v4, v5, v6, v7, v8) \ +{{ \ + _SHIFTL(G_TRIN, 24, 8) | _SHIFTL(n-1, 17, 7) | _SHIFTL(gsSPNTriangleData1(v6, v7, v8, 0), 2, 15) | _SHIFTL(_SHIFTR(gsSPNTriangleData1(v3, v4, v5, 0), 13, 2), 0, 2), \ + _SHIFTL(gsSPNTriangleData1(v3, v4, v5, 0), 19, 13) | _SHIFTL(gsSPNTriangleData1(v0, v1, v2, 0), 4, 15) | _SHIFTL(G_VTX_MODE_5bit, 0, 1) \ +}} + #define gDPSetTexEdgeAlpha(pkt, alpha) \ do { \ Gfx* _g = (Gfx*)(pkt); \ diff --git a/include/m_collision_bg.h b/include/m_collision_bg.h index 81840748..e7097712 100644 --- a/include/m_collision_bg.h +++ b/include/m_collision_bg.h @@ -57,6 +57,46 @@ enum background_attribute { mCoBG_ATTRIBUTE_SAND, mCoBG_ATTRIBUTE_WOOD, mCoBG_ATTRIBUTE_SEA, + + mCoBG_ATTRIBUTE_25, + mCoBG_ATTRIBUTE_26, + mCoBG_ATTRIBUTE_27, + mCoBG_ATTRIBUTE_28, + mCoBG_ATTRIBUTE_29, + mCoBG_ATTRIBUTE_30, + mCoBG_ATTRIBUTE_31, + mCoBG_ATTRIBUTE_32, + mCoBG_ATTRIBUTE_33, + mCoBG_ATTRIBUTE_34, + mCoBG_ATTRIBUTE_35, + mCoBG_ATTRIBUTE_36, + mCoBG_ATTRIBUTE_37, + mCoBG_ATTRIBUTE_38, + mCoBG_ATTRIBUTE_39, + mCoBG_ATTRIBUTE_40, + mCoBG_ATTRIBUTE_41, + mCoBG_ATTRIBUTE_42, + mCoBG_ATTRIBUTE_43, + mCoBG_ATTRIBUTE_44, + mCoBG_ATTRIBUTE_45, + mCoBG_ATTRIBUTE_46, + mCoBG_ATTRIBUTE_47, + mCoBG_ATTRIBUTE_48, + mCoBG_ATTRIBUTE_49, + mCoBG_ATTRIBUTE_50, + mCoBG_ATTRIBUTE_51, + mCoBG_ATTRIBUTE_52, + mCoBG_ATTRIBUTE_53, + mCoBG_ATTRIBUTE_54, + mCoBG_ATTRIBUTE_55, + mCoBG_ATTRIBUTE_56, + mCoBG_ATTRIBUTE_57, + mCoBG_ATTRIBUTE_58, + mCoBG_ATTRIBUTE_59, + mCoBG_ATTRIBUTE_60, + mCoBG_ATTRIBUTE_61, + mCoBG_ATTRIBUTE_62, + mCoBG_ATTRIBUTE_63, // ... mCoBG_ATTRIBUTE_NONE = 100 diff --git a/include/m_field_info.h b/include/m_field_info.h index 9b646568..29bc9834 100644 --- a/include/m_field_info.h +++ b/include/m_field_info.h @@ -140,7 +140,16 @@ enum { }; /* Not sure about these other than the island one */ -enum { mFI_CLIMATE_0, mFI_CLIMATE_ISLAND, mFI_CLIMATE_2, mFI_CLIMATE_3, mFI_CLIMATE_4, mFI_CLIMATE_5, mFI_CLIMATE_NUM }; +enum { + mFI_CLIMATE_0, + mFI_CLIMATE_ISLAND, + mFI_CLIMATE_2, + mFI_CLIMATE_3, + mFI_CLIMATE_4, + mFI_CLIMATE_5, + + mFI_CLIMATE_NUM, +}; enum { mFI_DIGSTATUS_MISS, @@ -185,7 +194,12 @@ typedef struct visible_block_item_info_s { } mFI_item_table_c; enum { - mFI_SOUND_SOURCE_POND = 3, // TODO: might not be correct name + mFI_SOUND_SOURCE_NONE, + mFI_SOUND_SOURCE_RIVER, + mFI_SOUND_SOURCE_OCEAN, + mFI_SOUND_SOURCE_POND, + + mFI_SOUND_SOURCE_NUM }; extern void mFI_ClearFieldData(); diff --git a/include/m_field_make.h b/include/m_field_make.h index 5f306b54..614f4b61 100644 --- a/include/m_field_make.h +++ b/include/m_field_make.h @@ -53,271 +53,271 @@ extern "C" { #define mFM_FIELD_TEX_NUM 27 enum { - mFM_BLOCK_TYPE_BORDER_CLIFF_TOP, - mFM_BLOCK_TYPE_BORDER_CLIFF_RIVER, - mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT, - mFM_BLOCK_TYPE_3, - mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT, - mFM_BLOCK_TYPE_BORDER_CLIFF_CORNER_TOP_LEFT, - mFM_BLOCK_TYPE_6, - mFM_BLOCK_TYPE_7, - mFM_BLOCK_TYPE_BORDER_CLIFF_CORNER_TOP_RIGHT, - mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TUNNEL, - mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TUNNEL, - mFM_BLOCK_TYPE_TRACKS_STATION, - mFM_BLOCK_TYPE_TRACKS_DUMP, - mFM_BLOCK_TYPE_TRACKS_RIVER, - mFM_BLOCK_TYPE_PLAYER_HOUSE, - mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, - mFM_BLOCK_TYPE_CLIFF_BOTTOM_RIGHT_CORNER, - mFM_BLOCK_TYPE_CLIFF_VERTICAL_RIGHT, - mFM_BLOCK_TYPE_CLIFF_TOP_RIGHT_CORNER, - mFM_BLOCK_TYPE_CLIFF_TOP_LEFT_CORNER, - mFM_BLOCK_TYPE_CLIFF_VERTICAL_LEFT, - mFM_BLOCK_TYPE_CLIFF_BOTTOM_LEFT_CORNER, - mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_HORIZONTAL, - mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_BOTTOM_RIGHT_CORNER, - mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_VERTICAL_RIGHT, - mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_TOP_RIGHT_CORNER, - mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_TOP_LEFT_CORNER, - mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_VERTICAL_LEFT, - mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_BOTTOM_LEFT_CORNER, - mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_HORIZONTAL, - mFM_BLOCK_TYPE_WATERFALL_EAST_CLIFF_BOTTOM_RIGHT_CORNER, - mFM_BLOCK_TYPE_WATERFALL_EAST_CLIFF_VERTICAL_RIGHT, - mFM_BLOCK_TYPE_RIVER_EAST_CLIFF_TOP_RIGHT_CORNER, - mFM_BLOCK_TYPE_RIVER_EAST_CLIFF_TOP_LEFT_CORNER, - mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_HORIZONTAL, - mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_TOP_RIGHT_CORNER, - mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_TOP_LEFT_CORNER, - mFM_BLOCK_TYPE_WATERFALL_WEST_CLIFF_VERTICAL_LEFT, - mFM_BLOCK_TYPE_WATERFALL_WEST_CLIFF_BOTTOM_LEFT_CORNER, - mFM_BLOCK_TYPE_FLAT, // grass - mFM_BLOCK_TYPE_RIVER_SOUTH, - mFM_BLOCK_TYPE_RIVER_EAST, - mFM_BLOCK_TYPE_RIVER_WEST, - mFM_BLOCK_TYPE_RIVER_SOUTH_EAST, - mFM_BLOCK_TYPE_RIVER_EAST_SOUTH, - mFM_BLOCK_TYPE_RIVER_SOUTH_WEST, - mFM_BLOCK_TYPE_RIVER_WEST_SOUTH, - mFM_BLOCK_TYPE_RIVER_SOUTH_BRIDGE, - mFM_BLOCK_TYPE_RIVER_EAST_BRIDGE, - mFM_BLOCK_TYPE_RIVER_WEST_BRIDGE, - mFM_BLOCK_TYPE_RIVER_SOUTH_EAST_BRIDGE, - mFM_BLOCK_TYPE_RIVER_EAST_SOUTH_BRIDGE, - mFM_BLOCK_TYPE_RIVER_SOUTH_WEST_BRIDGE, - mFM_BLOCK_TYPE_RIVER_WEST_SOUTH_BRIDGE, - mFM_BLOCK_TYPE_SLOPE_HORIZONTAL, - mFM_BLOCK_TYPE_SLOPE_BOTTOM_RIGHT_CORNER, - mFM_BLOCK_TYPE_SLOPE_VERTICAL_RIGHT, - mFM_BLOCK_TYPE_SLOPE_TOP_RIGHT_CORNER, - mFM_BLOCK_TYPE_SLOPE_TOP_LEFT_CORNER, - mFM_BLOCK_TYPE_SLOPE_VERTICAL_LEFT, - mFM_BLOCK_TYPE_SLOPE_BOTTOM_LEFT_CORNER, - mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TRANSITION, - mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TRANSITION, - mFM_BLOCK_TYPE_BEACH, - mFM_BLOCK_TYPE_BEACH_RIVER, - mFM_BLOCK_TYPE_TRACKS_SHOP, - mFM_BLOCK_TYPE_SHRINE, - mFM_BLOCK_TYPE_TRACKS_POST_OFFICE, - mFM_BLOCK_TYPE_POLICE_BOX, - mFM_BLOCK_TYPE_POOL_SOUTH, - mFM_BLOCK_TYPE_POOL_EAST, - mFM_BLOCK_TYPE_POOL_WEST, - mFM_BLOCK_TYPE_POOL_SOUTH_EAST, - mFM_BLOCK_TYPE_POOL_EAST_SOUTH, - mFM_BLOCK_TYPE_POOL_SOUTH_WEST, - mFM_BLOCK_TYPE_POOL_WEST_SOUTH, - mFM_BLOCK_TYPE_76, - mFM_BLOCK_TYPE_77, - mFM_BLOCK_TYPE_78, - mFM_BLOCK_TYPE_79, - mFM_BLOCK_TYPE_BORDER_CLIFF_OCEAN_LEFT, - mFM_BLOCK_TYPE_BORDER_CLIFF_OCEAN_RIGHT, - mFM_BLOCK_TYPE_BEACH_RIVER_BRIDGE, - mFM_BLOCK_TYPE_OCEAN, - mFM_BLOCK_TYPE_MUSEUM, - mFM_BLOCK_TYPE_NEEDLEWORK, - mFM_BLOCK_TYPE_86, - mFM_BLOCK_TYPE_87, - mFM_BLOCK_TYPE_88, - mFM_BLOCK_TYPE_89, - mFM_BLOCK_TYPE_90, - mFM_BLOCK_TYPE_91, - mFM_BLOCK_TYPE_92, - mFM_BLOCK_TYPE_93, - mFM_BLOCK_TYPE_OCEAN_2, - mFM_BLOCK_TYPE_OCEAN_3, - mFM_BLOCK_TYPE_OCEAN_4, - mFM_BLOCK_TYPE_OCEAN_5, - mFM_BLOCK_TYPE_ISLAND_LEFT, - mFM_BLOCK_TYPE_ISLAND_RIGHT, - mFM_BLOCK_TYPE_PORT, - mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, - mFM_BLOCK_TYPE_OCEAN_6, - mFM_BLOCK_TYPE_OCEAN_7, - mFM_BLOCK_TYPE_OCEAN_8, - mFM_BLOCK_TYPE_105, - mFM_BLOCK_TYPE_106, - mFM_BLOCK_TYPE_107, + mFM_BLOCK_TYPE_BORDER_CLIFF_TOP, + mFM_BLOCK_TYPE_BORDER_CLIFF_RIVER, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT, + mFM_BLOCK_TYPE_3, + mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT, + mFM_BLOCK_TYPE_BORDER_CLIFF_CORNER_TOP_LEFT, + mFM_BLOCK_TYPE_6, + mFM_BLOCK_TYPE_7, + mFM_BLOCK_TYPE_BORDER_CLIFF_CORNER_TOP_RIGHT, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TUNNEL, + mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TUNNEL, + mFM_BLOCK_TYPE_TRACKS_STATION, + mFM_BLOCK_TYPE_TRACKS_DUMP, + mFM_BLOCK_TYPE_TRACKS_RIVER, + mFM_BLOCK_TYPE_PLAYER_HOUSE, + mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, + mFM_BLOCK_TYPE_CLIFF_BOTTOM_RIGHT_CORNER, + mFM_BLOCK_TYPE_CLIFF_VERTICAL_RIGHT, + mFM_BLOCK_TYPE_CLIFF_TOP_RIGHT_CORNER, + mFM_BLOCK_TYPE_CLIFF_TOP_LEFT_CORNER, + mFM_BLOCK_TYPE_CLIFF_VERTICAL_LEFT, + mFM_BLOCK_TYPE_CLIFF_BOTTOM_LEFT_CORNER, + mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_HORIZONTAL, + mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_BOTTOM_RIGHT_CORNER, + mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_VERTICAL_RIGHT, + mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_TOP_RIGHT_CORNER, + mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_TOP_LEFT_CORNER, + mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_VERTICAL_LEFT, + mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_BOTTOM_LEFT_CORNER, + mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_HORIZONTAL, + mFM_BLOCK_TYPE_WATERFALL_EAST_CLIFF_BOTTOM_RIGHT_CORNER, + mFM_BLOCK_TYPE_WATERFALL_EAST_CLIFF_VERTICAL_RIGHT, + mFM_BLOCK_TYPE_RIVER_EAST_CLIFF_TOP_RIGHT_CORNER, + mFM_BLOCK_TYPE_RIVER_EAST_CLIFF_TOP_LEFT_CORNER, + mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_HORIZONTAL, + mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_TOP_RIGHT_CORNER, + mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_TOP_LEFT_CORNER, + mFM_BLOCK_TYPE_WATERFALL_WEST_CLIFF_VERTICAL_LEFT, + mFM_BLOCK_TYPE_WATERFALL_WEST_CLIFF_BOTTOM_LEFT_CORNER, + mFM_BLOCK_TYPE_FLAT, // grass + mFM_BLOCK_TYPE_RIVER_SOUTH, + mFM_BLOCK_TYPE_RIVER_EAST, + mFM_BLOCK_TYPE_RIVER_WEST, + mFM_BLOCK_TYPE_RIVER_SOUTH_EAST, + mFM_BLOCK_TYPE_RIVER_EAST_SOUTH, + mFM_BLOCK_TYPE_RIVER_SOUTH_WEST, + mFM_BLOCK_TYPE_RIVER_WEST_SOUTH, + mFM_BLOCK_TYPE_RIVER_SOUTH_BRIDGE, + mFM_BLOCK_TYPE_RIVER_EAST_BRIDGE, + mFM_BLOCK_TYPE_RIVER_WEST_BRIDGE, + mFM_BLOCK_TYPE_RIVER_SOUTH_EAST_BRIDGE, + mFM_BLOCK_TYPE_RIVER_EAST_SOUTH_BRIDGE, + mFM_BLOCK_TYPE_RIVER_SOUTH_WEST_BRIDGE, + mFM_BLOCK_TYPE_RIVER_WEST_SOUTH_BRIDGE, + mFM_BLOCK_TYPE_SLOPE_HORIZONTAL, + mFM_BLOCK_TYPE_SLOPE_BOTTOM_RIGHT_CORNER, + mFM_BLOCK_TYPE_SLOPE_VERTICAL_RIGHT, + mFM_BLOCK_TYPE_SLOPE_TOP_RIGHT_CORNER, + mFM_BLOCK_TYPE_SLOPE_TOP_LEFT_CORNER, + mFM_BLOCK_TYPE_SLOPE_VERTICAL_LEFT, + mFM_BLOCK_TYPE_SLOPE_BOTTOM_LEFT_CORNER, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TRANSITION, + mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TRANSITION, + mFM_BLOCK_TYPE_BEACH, + mFM_BLOCK_TYPE_BEACH_RIVER, + mFM_BLOCK_TYPE_TRACKS_SHOP, + mFM_BLOCK_TYPE_SHRINE, + mFM_BLOCK_TYPE_TRACKS_POST_OFFICE, + mFM_BLOCK_TYPE_POLICE_BOX, + mFM_BLOCK_TYPE_POOL_SOUTH, + mFM_BLOCK_TYPE_POOL_EAST, + mFM_BLOCK_TYPE_POOL_WEST, + mFM_BLOCK_TYPE_POOL_SOUTH_EAST, + mFM_BLOCK_TYPE_POOL_EAST_SOUTH, + mFM_BLOCK_TYPE_POOL_SOUTH_WEST, + mFM_BLOCK_TYPE_POOL_WEST_SOUTH, + mFM_BLOCK_TYPE_76, + mFM_BLOCK_TYPE_77, + mFM_BLOCK_TYPE_78, + mFM_BLOCK_TYPE_79, + mFM_BLOCK_TYPE_BORDER_CLIFF_OCEAN_LEFT, + mFM_BLOCK_TYPE_BORDER_CLIFF_OCEAN_RIGHT, + mFM_BLOCK_TYPE_BEACH_RIVER_BRIDGE, + mFM_BLOCK_TYPE_OCEAN, + mFM_BLOCK_TYPE_MUSEUM, + mFM_BLOCK_TYPE_NEEDLEWORK, + mFM_BLOCK_TYPE_86, + mFM_BLOCK_TYPE_87, + mFM_BLOCK_TYPE_88, + mFM_BLOCK_TYPE_89, + mFM_BLOCK_TYPE_90, + mFM_BLOCK_TYPE_91, + mFM_BLOCK_TYPE_92, + mFM_BLOCK_TYPE_93, + mFM_BLOCK_TYPE_OCEAN_2, + mFM_BLOCK_TYPE_OCEAN_3, + mFM_BLOCK_TYPE_OCEAN_4, + mFM_BLOCK_TYPE_OCEAN_5, + mFM_BLOCK_TYPE_ISLAND_LEFT, + mFM_BLOCK_TYPE_ISLAND_RIGHT, + mFM_BLOCK_TYPE_PORT, + mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, + mFM_BLOCK_TYPE_OCEAN_6, + mFM_BLOCK_TYPE_OCEAN_7, + mFM_BLOCK_TYPE_OCEAN_8, + mFM_BLOCK_TYPE_105, + mFM_BLOCK_TYPE_106, + mFM_BLOCK_TYPE_107, - mFM_BLOCK_TYPE_NUM, + mFM_BLOCK_TYPE_NUM, - mFM_BLOCK_TYPE_NONE = 255 + mFM_BLOCK_TYPE_NONE = 255 }; /* sizeof(mFM_combination_c) == 2 */ typedef struct block_combination_s { - /* 0x00 */ u16 combination_type:14; /* acre type index */ - /* 0x00 */ u16 height:2; /* 0, 1, 2, or 3 (unused) */ + /* 0x00 */ u16 combination_type : 14; /* acre type index */ + /* 0x00 */ u16 height : 2; /* 0, 1, 2, or 3 (unused) */ } mFM_combination_c; /* sizeof(mFM_fg_c) == 0x200 */ typedef struct fg_items_s { - /* 0x000 */ mActor_name_t items[UT_Z_NUM][UT_X_NUM]; + /* 0x000 */ mActor_name_t items[UT_Z_NUM][UT_X_NUM]; } mFM_fg_c; /* sizeof (mFM_combo_info_c) == 6 */ typedef struct block_combo_s { - /* 0x00 */ mActor_name_t bg_id; - /* 0x02 */ mActor_name_t fg_id; - /* 0x05 */ u8 type; + /* 0x00 */ mActor_name_t bg_id; + /* 0x02 */ mActor_name_t fg_id; + /* 0x05 */ u8 type; } mFM_combo_info_c; typedef struct field_display_list_info_s { - int block_x; - int block_z; - u32 dma_loaded; + int block_x; + int block_z; + u32 dma_loaded; } mFM_field_draw_info_c; typedef struct field_pal_s { - u16* earth_pal; - u16* cliff_pal; - u16* bush_pal; - u16* flower0_pal; - u16* flower1_pal; - u16* flower2_pal; - u16* grass_pal; - u16* tree_pal; - u16* cedar_tree_pal; // probably? - u16* palm_tree_pal; - u16* golden_tree_pal; + u16* earth_pal; + u16* cliff_pal; + u16* bush_pal; + u16* flower0_pal; + u16* flower1_pal; + u16* flower2_pal; + u16* grass_pal; + u16* tree_pal; + u16* cedar_tree_pal; // probably? + u16* palm_tree_pal; + u16* golden_tree_pal; } mFM_field_pal_c; typedef struct field_bg_sound_source_s { - s16 kind; - xyz_t pos; + s16 kind; + xyz_t pos; } mFM_bg_sound_source_c; typedef struct field_bg_info_s { - mFM_combination_c bg_id; - Gfx* opaque_gfx; - Gfx* translucent_gfx; - EVW_ANIME_DATA* animation; - s8 animation_count; - u8 block_type; - u32 block_kind; - int rom_start_addr; - int rom_size; - mCoBG_Collision_u collision[UT_Z_NUM][UT_X_NUM]; - u8 keep_h[UT_Z_NUM][UT_X_NUM]; // base height? - mFM_bg_sound_source_c sound_source[mFM_SOUND_SOURCE_NUM]; + mFM_combination_c bg_id; + Gfx* opaque_gfx; + Gfx* translucent_gfx; + EVW_ANIME_DATA* animation; + s8 animation_count; + u8 block_type; + u32 block_kind; + int rom_start_addr; + int rom_size; + mCoBG_Collision_u collision[UT_Z_NUM][UT_X_NUM]; + u8 keep_h[UT_Z_NUM][UT_X_NUM]; // base height? + mFM_bg_sound_source_c sound_source[mFM_SOUND_SOURCE_NUM]; } mFM_bg_info_c; typedef struct field_fg_move_actor_s { - mActor_name_t name_id; - u8 ut_x; - u8 ut_z; - s8 npc_info_idx; - s16 arg; + mActor_name_t name_id; + u8 ut_x; + u8 ut_z; + s8 npc_info_idx; + s16 arg; } mFM_move_actor_c; typedef struct field_fg_move_actor_data_s { - mActor_name_t name_id; - int block_x; - int block_z; - u8 ut_x; - u8 ut_z; - s8 npc_info_idx; - s16 arg; - u32 desired_block_kind; + mActor_name_t name_id; + int block_x; + int block_z; + u8 ut_x; + u8 ut_z; + s8 npc_info_idx; + s16 arg; + u32 desired_block_kind; } mFM_move_actor_data_c; typedef struct field_fg_info_s { - mActor_name_t fg_id; - mActor_name_t* items_p; - u16* deposit_p; - mFM_move_actor_c move_actors[mFM_MOVE_ACTOR_NUM]; - u16 move_actor_bit_data; - u8 haniwa_step[mFM_HANIWA_STEP_NUM]; + mActor_name_t fg_id; + mActor_name_t* items_p; + u16* deposit_p; + mFM_move_actor_c move_actors[mFM_MOVE_ACTOR_NUM]; + u16 move_actor_bit_data; + u8 haniwa_step[mFM_HANIWA_STEP_NUM]; } mFM_fg_info_c; typedef struct field_block_info_s { - mFM_bg_info_c bg_info; - mFM_fg_info_c fg_info; + mFM_bg_info_c bg_info; + mFM_fg_info_c fg_info; } mFM_block_info_c; typedef struct field_bg_sound_source_data_s { - s16 kind; - u8 ut_x; - u8 ut_z; + s16 kind; + u8 ut_x; + u8 ut_z; } mFM_bg_sound_source_data_c; typedef struct field_bg_data_s { - mActor_name_t bg_id; - Gfx* opaque_gfx; - Gfx* translucent_gfx; - EVW_ANIME_DATA* animation; - s8 animation_count; - u32 rom_start_addr; - u32 rom_end_addr; - mCoBG_Collision_u collision[UT_Z_NUM][UT_X_NUM]; - mFM_bg_sound_source_data_c sound_source[mFM_SOUND_SOURCE_NUM]; + mActor_name_t bg_id; + Gfx* opaque_gfx; + Gfx* translucent_gfx; + EVW_ANIME_DATA* animation; + s8 animation_count; + u32 rom_start_addr; + u32 rom_end_addr; + mCoBG_Collision_u collision[UT_Z_NUM][UT_X_NUM]; + mFM_bg_sound_source_data_c sound_source[mFM_SOUND_SOURCE_NUM]; } mFM_bg_data_c; typedef struct field_fg_data_s { - mActor_name_t fg_id; - mActor_name_t items[UT_Z_NUM][UT_X_NUM]; - u8 haniwa_step[mFM_HANIWA_STEP_NUM]; + mActor_name_t fg_id; + mActor_name_t items[UT_Z_NUM][UT_X_NUM]; + u8 haniwa_step[mFM_HANIWA_STEP_NUM]; } mFM_fg_data_c; typedef struct field_data_s { - mActor_name_t field_name; - u8 block_x_max; - u8 block_z_max; - mFM_combination_c combi[BLOCK_TOTAL_NUM]; - mFM_move_actor_data_c* move_actor_data; - u32 _94; - u32 _98; - u32 _9C; - u32 _A0; + mActor_name_t field_name; + u8 block_x_max; + u8 block_z_max; + mFM_combination_c combi[BLOCK_TOTAL_NUM]; + mFM_move_actor_data_c* move_actor_data; + u32 _94; + u32 _98; + u32 _9C; + u32 _A0; } mFM_field_data_c; typedef struct field_info_s { - mActor_name_t field_id; - u32 _04; // only set, never read? - mFM_field_draw_info_c bg_draw_info[mFM_VISIBLE_BLOCK_NUM]; - u8* bg_display_list_p[mFM_VISIBLE_BLOCK_NUM]; - mFM_field_pal_c field_palette; - mFM_block_info_c* block_info; - mActor_name_t** fg2_p; - int last_bg_idx[mFM_VISIBLE_BLOCK_NUM]; - u16 bg_max; - u8 bg_num; - u8 update_fg; - u8 born_item; - u8 born_actor; - u8 block_x_max; - u8 block_z_max; + mActor_name_t field_id; + u32 _04; // only set, never read? + mFM_field_draw_info_c bg_draw_info[mFM_VISIBLE_BLOCK_NUM]; + u8* bg_display_list_p[mFM_VISIBLE_BLOCK_NUM]; + mFM_field_pal_c field_palette; + mFM_block_info_c* block_info; + mActor_name_t** fg2_p; + int last_bg_idx[mFM_VISIBLE_BLOCK_NUM]; + u16 bg_max; + u8 bg_num; + u8 update_fg; + u8 born_item; + u8 born_actor; + u8 block_x_max; + u8 block_z_max; } mFM_fdinfo_c; enum { - mFM_BG_TEX_TRIANGLE, - mFM_BG_TEX_SQUARE, - mFM_BG_TEX_CIRCLE, + mFM_BG_TEX_TRIANGLE, + mFM_BG_TEX_SQUARE, + mFM_BG_TEX_CIRCLE, - mFM_BG_TEX_NUM + mFM_BG_TEX_NUM }; extern u8* g_block_type_p; diff --git a/src/data/field/bg/acre/bg_data.c b/src/data/field/bg/acre/bg_data.c new file mode 100644 index 00000000..5982d2dd --- /dev/null +++ b/src/data/field/bg/acre/bg_data.c @@ -0,0 +1,11908 @@ +#include "m_field_info.h" + +// clang-format off + +enum __bg_type__ { + BG_TYPE_GRD_S_HOLE_TEST, + BG_TYPE_GRD_S_C1_1, + BG_TYPE_GRD_S_C1_2, + BG_TYPE_GRD_S_C1_3, + BG_TYPE_GRD_S_C1_4, + BG_TYPE_GRD_S_C1_5, + BG_TYPE_GRD_S_C1_R1_1, + BG_TYPE_GRD_S_C1_R1_2, + BG_TYPE_GRD_S_C1_R1_3, + BG_TYPE_GRD_S_C1_R2_1, + BG_TYPE_GRD_S_C1_R2_2, + BG_TYPE_GRD_S_C1_R2_3, + BG_TYPE_GRD_S_C1_R3_1, + BG_TYPE_GRD_S_C1_R3_2, + BG_TYPE_GRD_S_C1_R3_3, + BG_TYPE_GRD_S_C1_S_1, + BG_TYPE_GRD_S_C1_S_2, + BG_TYPE_GRD_S_C1_S_3, + BG_TYPE_GRD_S_C1_S_4, + BG_TYPE_GRD_S_C2_1, + BG_TYPE_GRD_S_C2_2, + BG_TYPE_GRD_S_C2_3, + BG_TYPE_GRD_S_C2_R1_1, + BG_TYPE_GRD_S_C2_R1_2, + BG_TYPE_GRD_S_C2_R2_1, + BG_TYPE_GRD_S_C2_R2_2, + BG_TYPE_GRD_S_C2_S_1, + BG_TYPE_GRD_S_C2_S_2, + BG_TYPE_GRD_S_C2_S_3, + BG_TYPE_GRD_S_C3_1, + BG_TYPE_GRD_S_C3_2, + BG_TYPE_GRD_S_C3_3, + BG_TYPE_GRD_S_C3_R1_1, + BG_TYPE_GRD_S_C3_R1_2, + BG_TYPE_GRD_S_C3_R2_1, + BG_TYPE_GRD_S_C3_R2_2, + BG_TYPE_GRD_S_C3_S_1, + BG_TYPE_GRD_S_C4_1, + BG_TYPE_GRD_S_C4_2, + BG_TYPE_GRD_S_C4_3, + BG_TYPE_GRD_S_C4_R1_1, + BG_TYPE_GRD_S_C4_R1_2, + BG_TYPE_GRD_S_C4_R2_1, + BG_TYPE_GRD_S_C4_R2_2, + BG_TYPE_GRD_S_C4_R3_1, + BG_TYPE_GRD_S_C4_R3_2, + BG_TYPE_GRD_S_C4_S_1, + BG_TYPE_GRD_S_C4_S_2, + BG_TYPE_GRD_S_C5_1, + BG_TYPE_GRD_S_C5_2, + BG_TYPE_GRD_S_C5_3, + BG_TYPE_GRD_S_C5_R1_1, + BG_TYPE_GRD_S_C5_R1_2, + BG_TYPE_GRD_S_C5_R2_1, + BG_TYPE_GRD_S_C5_R2_2, + BG_TYPE_GRD_S_C5_R3_1, + BG_TYPE_GRD_S_C5_R3_2, + BG_TYPE_GRD_S_C5_S_1, + BG_TYPE_GRD_S_C5_S_2, + BG_TYPE_GRD_S_C6_1, + BG_TYPE_GRD_S_C6_2, + BG_TYPE_GRD_S_C6_3, + BG_TYPE_GRD_S_C6_R1_1, + BG_TYPE_GRD_S_C6_R1_2, + BG_TYPE_GRD_S_C6_R3_1, + BG_TYPE_GRD_S_C6_S_1, + BG_TYPE_GRD_S_C7_1, + BG_TYPE_GRD_S_C7_2, + BG_TYPE_GRD_S_C7_3, + BG_TYPE_GRD_S_C7_R1_1, + BG_TYPE_GRD_S_C7_R1_2, + BG_TYPE_GRD_S_C7_R3_1, + BG_TYPE_GRD_S_C7_R3_2, + BG_TYPE_GRD_S_C7_S_1, + BG_TYPE_GRD_S_C7_S_2, + BG_TYPE_GRD_S_C7_S_3, + BG_TYPE_GRD_S_E1_1, + BG_TYPE_GRD_S_E1_R1_1, + BG_TYPE_GRD_S_E2_1, + BG_TYPE_GRD_S_E2_C1_1, + BG_TYPE_GRD_S_E2_M_1, + BG_TYPE_GRD_S_E2_O_1, + BG_TYPE_GRD_S_E2_T_1, + BG_TYPE_GRD_S_E3_1, + BG_TYPE_GRD_S_E3_C1_1, + BG_TYPE_GRD_S_E3_M_1, + BG_TYPE_GRD_S_E3_O_1, + BG_TYPE_GRD_S_E3_T_1, + BG_TYPE_GRD_S_E4_1, + BG_TYPE_GRD_S_E5_1, + BG_TYPE_GRD_S_F_1, + BG_TYPE_GRD_S_F_2, + BG_TYPE_GRD_S_F_3, + BG_TYPE_GRD_S_F_4, + BG_TYPE_GRD_S_F_5, + BG_TYPE_GRD_S_F_6, + BG_TYPE_GRD_S_F_7, + BG_TYPE_GRD_S_F_8, + BG_TYPE_GRD_S_F_9, + BG_TYPE_GRD_S_F_10, + BG_TYPE_GRD_S_F_KO_1, + BG_TYPE_GRD_S_F_KO_2, + BG_TYPE_GRD_S_F_KO_3, + BG_TYPE_GRD_S_F_MH_1, + BG_TYPE_GRD_S_F_MH_2, + BG_TYPE_GRD_S_F_MH_3, + BG_TYPE_GRD_S_F_MU_1, + BG_TYPE_GRD_S_F_MU_2, + BG_TYPE_GRD_S_F_MU_3, + BG_TYPE_GRD_S_F_PK_1, + BG_TYPE_GRD_S_F_PK_2, + BG_TYPE_GRD_S_F_PK_3, + BG_TYPE_GRD_S_IR_1, + BG_TYPE_GRD_S_IR_2, + BG_TYPE_GRD_S_IR_3, + BG_TYPE_GRD_S_IR_4, + BG_TYPE_GRD_S_IL_1, + BG_TYPE_GRD_S_IL_2, + BG_TYPE_GRD_S_IL_3, + BG_TYPE_GRD_S_IL_4, + BG_TYPE_GRD_S_M_1, + BG_TYPE_GRD_S_M_2, + BG_TYPE_GRD_S_M_3, + BG_TYPE_GRD_S_M_4, + BG_TYPE_GRD_S_M_5, + BG_TYPE_GRD_S_M_6, + BG_TYPE_GRD_S_M_7, + BG_TYPE_GRD_S_M_8, + BG_TYPE_GRD_S_M_9, + BG_TYPE_GRD_S_M_10, + BG_TYPE_GRD_S_M_R1_1, + BG_TYPE_GRD_S_M_R1_2, + BG_TYPE_GRD_S_M_R1_3, + BG_TYPE_GRD_S_M_R1_4, + BG_TYPE_GRD_S_M_R1_5, + BG_TYPE_GRD_S_M_R1_B_1, + BG_TYPE_GRD_S_M_R1_B_2, + BG_TYPE_GRD_S_M_R1_B_3, + BG_TYPE_GRD_S_M_TA_1, + BG_TYPE_GRD_S_M_TA_2, + BG_TYPE_GRD_S_M_TA_3, + BG_TYPE_GRD_S_M_WF_1, + BG_TYPE_GRD_S_M_WF_2, + BG_TYPE_GRD_S_M_WF_3, + BG_TYPE_GRD_S_O_1, + BG_TYPE_GRD_S_O_2, + BG_TYPE_GRD_S_O_3, + BG_TYPE_GRD_S_O_4, + BG_TYPE_GRD_S_O_5, + BG_TYPE_GRD_S_O_6, + BG_TYPE_GRD_S_O_7, + BG_TYPE_GRD_S_O_8, + BG_TYPE_GRD_S_O_9, + BG_TYPE_GRD_S_O_10, + BG_TYPE_GRD_S_O_I_1, + BG_TYPE_GRD_S_O_I_2, + BG_TYPE_GRD_S_O_R1_1, + BG_TYPE_GRD_S_O_R1_2, + BG_TYPE_GRD_S_O_R1_3, + BG_TYPE_GRD_S_O_R1_4, + BG_TYPE_GRD_S_O_R1_5, + BG_TYPE_GRD_S_O_R1_B_1, + BG_TYPE_GRD_S_O_R1_B_2, + BG_TYPE_GRD_S_O_R1_B_3, + BG_TYPE_GRD_S_O_TA_1, + BG_TYPE_GRD_S_O_TA_2, + BG_TYPE_GRD_S_O_TA_3, + BG_TYPE_GRD_S_O_WF_1, + BG_TYPE_GRD_S_O_WF_2, + BG_TYPE_GRD_S_O_WF_3, + BG_TYPE_GRD_S_R1_1, + BG_TYPE_GRD_S_R1_2, + BG_TYPE_GRD_S_R1_3, + BG_TYPE_GRD_S_R1_4, + BG_TYPE_GRD_S_R1_B_1, + BG_TYPE_GRD_S_R1_B_2, + BG_TYPE_GRD_S_R1_B_3, + BG_TYPE_GRD_S_R1_P_1, + BG_TYPE_GRD_S_R2_1, + BG_TYPE_GRD_S_R2_2, + BG_TYPE_GRD_S_R2_3, + BG_TYPE_GRD_S_R2_4, + BG_TYPE_GRD_S_R2_B_1, + BG_TYPE_GRD_S_R2_B_2, + BG_TYPE_GRD_S_R2_B_3, + BG_TYPE_GRD_S_R2_P_1, + BG_TYPE_GRD_S_R3_1, + BG_TYPE_GRD_S_R3_2, + BG_TYPE_GRD_S_R3_3, + BG_TYPE_GRD_S_R3_4, + BG_TYPE_GRD_S_R3_B_1, + BG_TYPE_GRD_S_R3_B_2, + BG_TYPE_GRD_S_R3_B_3, + BG_TYPE_GRD_S_R3_P_1, + BG_TYPE_GRD_S_R4_1, + BG_TYPE_GRD_S_R4_2, + BG_TYPE_GRD_S_R4_3, + BG_TYPE_GRD_S_R4_B_1, + BG_TYPE_GRD_S_R4_B_2, + BG_TYPE_GRD_S_R4_P_1, + BG_TYPE_GRD_S_R5_1, + BG_TYPE_GRD_S_R5_2, + BG_TYPE_GRD_S_R5_3, + BG_TYPE_GRD_S_R5_B_1, + BG_TYPE_GRD_S_R5_B_2, + BG_TYPE_GRD_S_R5_P_1, + BG_TYPE_GRD_S_R6_1, + BG_TYPE_GRD_S_R6_2, + BG_TYPE_GRD_S_R6_3, + BG_TYPE_GRD_S_R6_B_1, + BG_TYPE_GRD_S_R6_B_2, + BG_TYPE_GRD_S_R6_P_1, + BG_TYPE_GRD_S_R7_1, + BG_TYPE_GRD_S_R7_2, + BG_TYPE_GRD_S_R7_3, + BG_TYPE_GRD_S_R7_B_1, + BG_TYPE_GRD_S_R7_B_2, + BG_TYPE_GRD_S_R7_P_1, + BG_TYPE_GRD_S_T_R1_1, + BG_TYPE_GRD_S_T_1, + BG_TYPE_GRD_S_T_2, + BG_TYPE_GRD_S_T_3, + BG_TYPE_GRD_S_T_4, + BG_TYPE_GRD_S_T_5, + BG_TYPE_GRD_S_T_6, + BG_TYPE_GRD_S_T_7, + BG_TYPE_GRD_S_T_8, + BG_TYPE_GRD_S_T_9, + BG_TYPE_GRD_S_T_10, + BG_TYPE_GRD_S_T_PO_1, + BG_TYPE_GRD_S_T_PO_2, + BG_TYPE_GRD_S_T_PO_3, + BG_TYPE_GRD_S_T_R1_2, + BG_TYPE_GRD_S_T_R1_3, + BG_TYPE_GRD_S_T_R1_4, + BG_TYPE_GRD_S_T_R1_5, + BG_TYPE_GRD_S_T_SH_1, + BG_TYPE_GRD_S_T_SH_2, + BG_TYPE_GRD_S_T_SH_3, + BG_TYPE_GRD_S_T_ST1_1, + BG_TYPE_GRD_S_T_ST1_2, + BG_TYPE_GRD_S_T_ST1_3, + BG_TYPE_242, + BG_TYPE_ROM_TENT, + BG_TYPE_ROOM01, + BG_TYPE_MYR_ETC, + BG_TYPE_246, + BG_TYPE_248, + BG_TYPE_249, + BG_TYPE_250, + BG_TYPE_251, + BG_TYPE_252, + BG_TYPE_ROM_SHOP4_FUKU, + BG_TYPE_254, + BG_TYPE_ROM_URANAI, + BG_TYPE_ROM_SHOP4_1, + BG_TYPE_257, + BG_TYPE_258, + BG_TYPE_259, + BG_TYPE_260, + BG_TYPE_ROM_TRAIN_IN, + BG_TYPE_GRD_S_F_9, + BG_TYPE_GRD_S_R1_3, + BG_TYPE_GRD_S_C1_3, + BG_TYPE_GRD_S_F_9, + BG_TYPE_GRD_PLAYER_SELECT, + BG_TYPE_GRD_POST_OFFICE, + BG_TYPE_POLICE_INDOOR, + BG_TYPE_TMP, + BG_TYPE_TMP2, + BG_TYPE_TMPR, + BG_TYPE_TMPR2, + BG_TYPE_TMP3, + BG_TYPE_TMPR3, + BG_TYPE_TMP4, + BG_TYPE_TMPR4, + BG_TYPE_GRD_YAMISHOP, + BG_TYPE_ROM_MUSEUM1, + BG_TYPE_ROM_MUSEUM2, + BG_TYPE_ROM_MUSEUM3, + BG_TYPE_ROM_MUSEUM5, + BG_TYPE_282, + BG_TYPE_283, + BG_TYPE_284, + BG_TYPE_285, + BG_TYPE_286, + BG_TYPE_287, + BG_TYPE_288, + BG_TYPE_289, + BG_TYPE_ROM_TAILOR, + BG_TYPE_ROM_TOUDAI, + BG_TYPE_292, +}; + +extern Gfx room01_model[]; +extern Gfx myr_etc_model[]; +extern Gfx tmp_model[]; +extern Gfx tmp_modelT[]; +extern Gfx tmp2_model[]; +extern Gfx tmp2_modelT[]; +extern Gfx tmpr_model[]; +extern Gfx tmpr_modelT[]; +extern EVW_ANIME_DATA* tmpr_evw_anime[]; +extern Gfx tmpr2_model[]; +extern Gfx tmpr2_modelT[]; +extern EVW_ANIME_DATA* tmpr2_evw_anime[]; +extern Gfx tmp3_model[]; +extern Gfx tmp3_modelT[]; +extern Gfx tmpr3_model[]; +extern Gfx tmpr3_modelT[]; +extern EVW_ANIME_DATA* tmpr3_evw_anime[]; +extern Gfx tmp4_model[]; +extern Gfx tmp4_modelT[]; +extern Gfx tmpr4_model[]; +extern Gfx tmpr4_modelT[]; +extern EVW_ANIME_DATA* tmpr4_evw_anime[]; +extern Gfx grd_s_c1_r1_1_model[]; +extern Gfx grd_s_c1_r1_1_modelT[]; +extern EVW_ANIME_DATA* grd_s_c1_r1_1_evw_anime[]; +extern Gfx grd_s_c1_s_1_model[]; +extern Gfx grd_s_c1_s_1_modelT[]; +extern Gfx grd_s_c2_r1_1_model[]; +extern Gfx grd_s_c2_r1_1_modelT[]; +extern EVW_ANIME_DATA* grd_s_c2_r1_1_evw_anime[]; +extern Gfx grd_s_c2_r2_1_model[]; +extern Gfx grd_s_c2_r2_1_modelT[]; +extern EVW_ANIME_DATA* grd_s_c2_r2_1_evw_anime[]; +extern Gfx grd_s_c5_r1_1_model[]; +extern Gfx grd_s_c5_r1_1_modelT[]; +extern EVW_ANIME_DATA* grd_s_c5_r1_1_evw_anime[]; +extern Gfx grd_s_t_r1_1_model[]; +extern Gfx grd_s_t_r1_1_modelT[]; +extern EVW_ANIME_DATA* grd_s_t_r1_1_evw_anime[]; +extern Gfx grd_s_f_1_model[]; +extern Gfx grd_s_f_1_modelT[]; +extern Gfx grd_s_f_2_model[]; +extern Gfx grd_s_f_2_modelT[]; +extern Gfx grd_s_c1_1_model[]; +extern Gfx grd_s_c1_1_modelT[]; +extern Gfx grd_s_c1_r2_1_model[]; +extern Gfx grd_s_c1_r2_1_modelT[]; +extern EVW_ANIME_DATA* grd_s_c1_r2_1_evw_anime[]; +extern Gfx grd_s_c1_r3_1_model[]; +extern Gfx grd_s_c1_r3_1_modelT[]; +extern EVW_ANIME_DATA* grd_s_c1_r3_1_evw_anime[]; +extern Gfx grd_s_c2_1_model[]; +extern Gfx grd_s_c2_1_modelT[]; +extern Gfx grd_s_c3_1_model[]; +extern Gfx grd_s_c3_1_modelT[]; +extern Gfx grd_s_c3_r1_1_model[]; +extern Gfx grd_s_c3_r1_1_modelT[]; +extern EVW_ANIME_DATA* grd_s_c3_r1_1_evw_anime[]; +extern Gfx grd_s_c4_1_model[]; +extern Gfx grd_s_c4_1_modelT[]; +extern Gfx grd_s_c4_r1_1_model[]; +extern Gfx grd_s_c4_r1_1_modelT[]; +extern EVW_ANIME_DATA* grd_s_c4_r1_1_evw_anime[]; +extern Gfx grd_s_c4_r2_1_model[]; +extern Gfx grd_s_c4_r2_1_modelT[]; +extern EVW_ANIME_DATA* grd_s_c4_r2_1_evw_anime[]; +extern Gfx grd_s_c5_1_model[]; +extern Gfx grd_s_c5_1_modelT[]; +extern Gfx grd_s_c5_r2_1_model[]; +extern Gfx grd_s_c5_r2_1_modelT[]; +extern EVW_ANIME_DATA* grd_s_c5_r2_1_evw_anime[]; +extern Gfx grd_s_c5_r3_1_model[]; +extern Gfx grd_s_c5_r3_1_modelT[]; +extern EVW_ANIME_DATA* grd_s_c5_r3_1_evw_anime[]; +extern Gfx grd_s_c6_1_model[]; +extern Gfx grd_s_c6_1_modelT[]; +extern Gfx grd_s_c6_r1_1_model[]; +extern Gfx grd_s_c6_r1_1_modelT[]; +extern EVW_ANIME_DATA* grd_s_c6_r1_1_evw_anime[]; +extern Gfx grd_s_c7_1_model[]; +extern Gfx grd_s_c7_1_modelT[]; +extern Gfx grd_s_r1_1_model[]; +extern Gfx grd_s_r1_1_modelT[]; +extern EVW_ANIME_DATA* grd_s_r1_1_evw_anime[]; +extern Gfx grd_s_r2_1_model[]; +extern Gfx grd_s_r2_1_modelT[]; +extern EVW_ANIME_DATA* grd_s_r2_1_evw_anime[]; +extern Gfx grd_s_r3_1_model[]; +extern Gfx grd_s_r3_1_modelT[]; +extern EVW_ANIME_DATA* grd_s_r3_1_evw_anime[]; +extern Gfx grd_s_r4_1_model[]; +extern Gfx grd_s_r4_1_modelT[]; +extern EVW_ANIME_DATA* grd_s_r4_1_evw_anime[]; +extern Gfx grd_s_r5_1_model[]; +extern Gfx grd_s_r5_1_modelT[]; +extern EVW_ANIME_DATA* grd_s_r5_1_evw_anime[]; +extern Gfx grd_s_r6_1_model[]; +extern Gfx grd_s_r6_1_modelT[]; +extern EVW_ANIME_DATA* grd_s_r6_1_evw_anime[]; +extern Gfx grd_s_r7_1_model[]; +extern Gfx grd_s_r7_1_modelT[]; +extern EVW_ANIME_DATA* grd_s_r7_1_evw_anime[]; +extern Gfx grd_s_c3_r2_1_model[]; +extern Gfx grd_s_c3_r2_1_modelT[]; +extern EVW_ANIME_DATA* grd_s_c3_r2_1_evw_anime[]; +extern Gfx grd_s_c7_r3_1_model[]; +extern Gfx grd_s_c7_r3_1_modelT[]; +extern EVW_ANIME_DATA* grd_s_c7_r3_1_evw_anime[]; +extern Gfx grd_s_c6_r3_1_model[]; +extern Gfx grd_s_c6_r3_1_modelT[]; +extern EVW_ANIME_DATA* grd_s_c6_r3_1_evw_anime[]; +extern Gfx grd_s_r1_b_1_model[]; +extern Gfx grd_s_r1_b_1_modelT[]; +extern EVW_ANIME_DATA* grd_s_r1_b_1_evw_anime[]; +extern Gfx grd_s_r2_b_1_model[]; +extern Gfx grd_s_r2_b_1_modelT[]; +extern EVW_ANIME_DATA* grd_s_r2_b_1_evw_anime[]; +extern Gfx grd_s_r3_b_1_model[]; +extern Gfx grd_s_r3_b_1_modelT[]; +extern EVW_ANIME_DATA* grd_s_r3_b_1_evw_anime[]; +extern Gfx grd_s_r4_b_1_model[]; +extern Gfx grd_s_r4_b_1_modelT[]; +extern EVW_ANIME_DATA* grd_s_r4_b_1_evw_anime[]; +extern Gfx grd_s_r5_b_1_model[]; +extern Gfx grd_s_r5_b_1_modelT[]; +extern EVW_ANIME_DATA* grd_s_r5_b_1_evw_anime[]; +extern Gfx grd_s_r6_b_1_model[]; +extern Gfx grd_s_r6_b_1_modelT[]; +extern EVW_ANIME_DATA* grd_s_r6_b_1_evw_anime[]; +extern Gfx grd_s_r7_b_1_model[]; +extern Gfx grd_s_r7_b_1_modelT[]; +extern EVW_ANIME_DATA* grd_s_r7_b_1_evw_anime[]; +extern Gfx grd_s_t_1_model[]; +extern Gfx grd_s_t_1_modelT[]; +extern EVW_ANIME_DATA* grd_s_t_1_evw_anime[]; +extern Gfx grd_s_c1_s_2_model[]; +extern Gfx grd_s_c1_s_2_modelT[]; +extern Gfx grd_s_c2_s_1_model[]; +extern Gfx grd_s_c2_s_1_modelT[]; +extern Gfx grd_s_c3_s_1_model[]; +extern Gfx grd_s_c3_s_1_modelT[]; +extern EVW_ANIME_DATA* grd_s_c3_s_1_evw_anime[]; +extern Gfx grd_s_c4_s_1_model[]; +extern Gfx grd_s_c4_s_1_modelT[]; +extern Gfx grd_s_c5_s_1_model[]; +extern Gfx grd_s_c5_s_1_modelT[]; +extern Gfx grd_s_c6_s_1_model[]; +extern Gfx grd_s_c6_s_1_modelT[]; +extern Gfx grd_s_c7_s_1_model[]; +extern Gfx grd_s_c4_r3_1_model[]; +extern Gfx grd_s_c4_r3_1_modelT[]; +extern EVW_ANIME_DATA* grd_s_c4_r3_1_evw_anime[]; +extern Gfx grd_s_c7_r1_1_model[]; +extern Gfx grd_s_c7_r1_1_modelT[]; +extern EVW_ANIME_DATA* grd_s_c7_r1_1_evw_anime[]; +extern Gfx grd_s_t_st1_1_model[]; +extern Gfx grd_s_t_st1_1_modelT[]; +extern Gfx grd_s_c1_2_model[]; +extern Gfx grd_s_c1_2_modelT[]; +extern Gfx grd_s_c1_3_model[]; +extern Gfx grd_s_c1_3_modelT[]; +extern Gfx grd_s_c1_4_model[]; +extern Gfx grd_s_c1_4_modelT[]; +extern Gfx grd_s_c1_5_model[]; +extern Gfx grd_s_c1_5_modelT[]; +extern Gfx grd_s_c2_2_model[]; +extern Gfx grd_s_c2_2_modelT[]; +extern Gfx grd_s_r1_2_model[]; +extern Gfx grd_s_r1_2_modelT[]; +extern EVW_ANIME_DATA* grd_s_r1_2_evw_anime[]; +extern Gfx grd_s_r1_3_model[]; +extern Gfx grd_s_r1_3_modelT[]; +extern EVW_ANIME_DATA* grd_s_r1_3_evw_anime[]; +extern Gfx grd_s_r4_2_model[]; +extern Gfx grd_s_r4_2_modelT[]; +extern EVW_ANIME_DATA* grd_s_r4_2_evw_anime[]; +extern Gfx grd_s_r5_2_model[]; +extern Gfx grd_s_r5_2_modelT[]; +extern EVW_ANIME_DATA* grd_s_r5_2_evw_anime[]; +extern Gfx grd_s_r7_2_model[]; +extern Gfx grd_s_r7_2_modelT[]; +extern EVW_ANIME_DATA* grd_s_r7_2_evw_anime[]; +extern Gfx grd_s_r7_3_model[]; +extern Gfx grd_s_r7_3_modelT[]; +extern EVW_ANIME_DATA* grd_s_r7_3_evw_anime[]; +extern Gfx grd_s_c2_s_2_model[]; +extern Gfx grd_s_c2_s_2_modelT[]; +extern Gfx grd_s_c1_s_3_model[]; +extern Gfx grd_s_c4_s_2_model[]; +extern Gfx grd_s_c4_s_2_modelT[]; +extern Gfx grd_s_c5_s_2_model[]; +extern Gfx grd_s_c6_r1_2_model[]; +extern Gfx grd_s_c6_r1_2_modelT[]; +extern EVW_ANIME_DATA* grd_s_c6_r1_2_evw_anime[]; +extern Gfx grd_s_c3_r1_2_model[]; +extern Gfx grd_s_c3_r1_2_modelT[]; +extern EVW_ANIME_DATA* grd_s_c3_r1_2_evw_anime[]; +extern Gfx grd_s_c3_2_model[]; +extern Gfx grd_s_c3_2_modelT[]; +extern EVW_ANIME_DATA* grd_s_c3_2_evw_anime[]; +extern Gfx grd_s_c7_3_model[]; +extern Gfx grd_s_c7_3_modelT[]; +extern EVW_ANIME_DATA* grd_s_c7_3_evw_anime[]; +extern Gfx grd_s_c1_r2_2_model[]; +extern Gfx grd_s_c1_r2_2_modelT[]; +extern EVW_ANIME_DATA* grd_s_c1_r2_2_evw_anime[]; +extern Gfx grd_s_c1_r3_2_model[]; +extern Gfx grd_s_c1_r3_2_modelT[]; +extern EVW_ANIME_DATA* grd_s_c1_r3_2_evw_anime[]; +extern Gfx grd_s_c4_2_model[]; +extern Gfx grd_s_c4_2_modelT[]; +extern Gfx grd_s_c5_2_model[]; +extern Gfx grd_s_c5_2_modelT[]; +extern Gfx grd_s_c6_2_model[]; +extern Gfx grd_s_c6_2_modelT[]; +extern Gfx grd_s_r2_2_model[]; +extern Gfx grd_s_r2_2_modelT[]; +extern EVW_ANIME_DATA* grd_s_r2_2_evw_anime[]; +extern Gfx grd_s_r3_2_model[]; +extern Gfx grd_s_r3_2_modelT[]; +extern EVW_ANIME_DATA* grd_s_r3_2_evw_anime[]; +extern Gfx grd_s_c4_r1_2_model[]; +extern Gfx grd_s_c4_r1_2_modelT[]; +extern EVW_ANIME_DATA* grd_s_c4_r1_2_evw_anime[]; +extern Gfx grd_s_c4_r2_2_model[]; +extern Gfx grd_s_c4_r2_2_modelT[]; +extern EVW_ANIME_DATA* grd_s_c4_r2_2_evw_anime[]; +extern Gfx grd_s_c7_r1_2_model[]; +extern Gfx grd_s_c7_r1_2_modelT[]; +extern EVW_ANIME_DATA* grd_s_c7_r1_2_evw_anime[]; +extern Gfx grd_s_c6_2_model[]; +extern Gfx grd_s_c6_2_modelT[]; +extern Gfx grd_s_c5_r2_2_model[]; +extern Gfx grd_s_c5_r2_2_modelT[]; +extern EVW_ANIME_DATA* grd_s_c5_r2_2_evw_anime[]; +extern Gfx grd_s_c4_r3_2_model[]; +extern Gfx grd_s_c4_r3_2_modelT[]; +extern EVW_ANIME_DATA* grd_s_c4_r3_2_evw_anime[]; +extern Gfx grd_s_r2_3_model[]; +extern Gfx grd_s_r2_3_modelT[]; +extern EVW_ANIME_DATA* grd_s_r2_3_evw_anime[]; +extern Gfx grd_s_r3_3_model[]; +extern Gfx grd_s_r3_3_modelT[]; +extern EVW_ANIME_DATA* grd_s_r3_3_evw_anime[]; +extern Gfx grd_s_c5_r3_2_model[]; +extern Gfx grd_s_c5_r3_2_modelT[]; +extern EVW_ANIME_DATA* grd_s_c5_r3_2_evw_anime[]; +extern Gfx grd_s_c5_3_model[]; +extern Gfx grd_s_c5_3_modelT[]; +extern Gfx grd_s_c4_3_model[]; +extern Gfx grd_s_c4_3_modelT[]; +extern Gfx grd_s_c3_3_model[]; +extern Gfx grd_s_c3_3_modelT[]; +extern Gfx grd_s_c2_3_model[]; +extern Gfx grd_s_c2_3_modelT[]; +extern EVW_ANIME_DATA* grd_s_c2_3_evw_anime[]; +extern Gfx grd_s_r1_p_1_model[]; +extern Gfx grd_s_r1_p_1_modelT[]; +extern EVW_ANIME_DATA* grd_s_r1_p_1_evw_anime[]; +extern Gfx grd_s_r6_2_model[]; +extern Gfx grd_s_r6_2_modelT[]; +extern EVW_ANIME_DATA* grd_s_r6_2_evw_anime[]; +extern Gfx police_indoor_model[]; +extern Gfx police_indoor_modelT[]; +extern Gfx grd_s_c1_r1_2_model[]; +extern Gfx grd_s_c1_r1_2_modelT[]; +extern EVW_ANIME_DATA* grd_s_c1_r1_2_evw_anime[]; +extern Gfx grd_s_c1_r1_3_model[]; +extern Gfx grd_s_c1_r1_3_modelT[]; +extern EVW_ANIME_DATA* grd_s_c1_r1_3_evw_anime[]; +extern Gfx grd_s_c1_r2_3_model[]; +extern Gfx grd_s_c1_r2_3_modelT[]; +extern EVW_ANIME_DATA* grd_s_c1_r2_3_evw_anime[]; +extern Gfx grd_s_c1_r3_3_model[]; +extern Gfx grd_s_c1_r3_3_modelT[]; +extern EVW_ANIME_DATA* grd_s_c1_r3_3_evw_anime[]; +extern Gfx grd_s_c2_r1_2_model[]; +extern Gfx grd_s_c2_r1_2_modelT[]; +extern EVW_ANIME_DATA* grd_s_c2_r1_2_evw_anime[]; +extern Gfx grd_s_c5_r1_2_model[]; +extern Gfx grd_s_c5_r1_2_modelT[]; +extern EVW_ANIME_DATA* grd_s_c5_r1_2_evw_anime[]; +extern Gfx grd_s_c6_3_model[]; +extern Gfx grd_s_c6_3_modelT[]; +extern Gfx grd_s_c7_2_model[]; +extern Gfx grd_s_c7_2_modelT[]; +extern Gfx grd_s_r1_4_model[]; +extern Gfx grd_s_r1_4_modelT[]; +extern EVW_ANIME_DATA* grd_s_r1_4_evw_anime[]; +extern Gfx grd_s_r2_4_model[]; +extern Gfx grd_s_r2_4_modelT[]; +extern EVW_ANIME_DATA* grd_s_r2_4_evw_anime[]; +extern Gfx grd_s_r3_4_model[]; +extern Gfx grd_s_r3_4_modelT[]; +extern EVW_ANIME_DATA* grd_s_r3_4_evw_anime[]; +extern Gfx grd_s_r4_3_model[]; +extern Gfx grd_s_r4_3_modelT[]; +extern EVW_ANIME_DATA* grd_s_r4_3_evw_anime[]; +extern Gfx grd_s_r5_3_model[]; +extern Gfx grd_s_r5_3_modelT[]; +extern EVW_ANIME_DATA* grd_s_r5_3_evw_anime[]; +extern Gfx grd_s_r6_3_model[]; +extern Gfx grd_s_r6_3_modelT[]; +extern EVW_ANIME_DATA* grd_s_r6_3_evw_anime[]; +extern Gfx grd_s_c2_r2_2_model[]; +extern Gfx grd_s_c2_r2_2_modelT[]; +extern EVW_ANIME_DATA* grd_s_c2_r2_2_evw_anime[]; +extern Gfx grd_s_c3_r2_2_model[]; +extern Gfx grd_s_c3_r2_2_modelT[]; +extern EVW_ANIME_DATA* grd_s_c3_r2_2_evw_anime[]; +extern Gfx grd_s_r1_b_2_model[]; +extern Gfx grd_s_r1_b_2_modelT[]; +extern EVW_ANIME_DATA* grd_s_r1_b_2_evw_anime[]; +extern Gfx grd_s_r2_b_2_model[]; +extern Gfx grd_s_r2_b_2_modelT[]; +extern EVW_ANIME_DATA* grd_s_r2_b_2_evw_anime[]; +extern Gfx grd_s_r4_b_2_model[]; +extern Gfx grd_s_r4_b_2_modelT[]; +extern EVW_ANIME_DATA* grd_s_r4_b_2_evw_anime[]; +extern Gfx grd_s_r3_b_2_model[]; +extern Gfx grd_s_r3_b_2_modelT[]; +extern EVW_ANIME_DATA* grd_s_r3_b_2_evw_anime[]; +extern Gfx grd_s_r5_b_2_model[]; +extern Gfx grd_s_r5_b_2_modelT[]; +extern EVW_ANIME_DATA* grd_s_r5_b_2_evw_anime[]; +extern Gfx grd_s_r6_b_2_model[]; +extern Gfx grd_s_r6_b_2_modelT[]; +extern EVW_ANIME_DATA* grd_s_r6_b_2_evw_anime[]; +extern Gfx grd_s_r7_b_2_model[]; +extern Gfx grd_s_r7_b_2_modelT[]; +extern EVW_ANIME_DATA* grd_s_r7_b_2_evw_anime[]; +extern Gfx grd_s_r1_b_3_model[]; +extern Gfx grd_s_r1_b_3_modelT[]; +extern EVW_ANIME_DATA* grd_s_r1_b_3_evw_anime[]; +extern Gfx grd_s_r2_b_3_model[]; +extern Gfx grd_s_r2_b_3_modelT[]; +extern EVW_ANIME_DATA* grd_s_r2_b_3_evw_anime[]; +extern Gfx grd_s_r3_b_3_model[]; +extern Gfx grd_s_r3_b_3_modelT[]; +extern EVW_ANIME_DATA* grd_s_r3_b_3_evw_anime[]; +extern Gfx grd_s_f_3_model[]; +extern Gfx grd_s_f_3_modelT[]; +extern Gfx grd_s_f_4_model[]; +extern Gfx grd_s_f_4_modelT[]; +extern EVW_ANIME_DATA* grd_s_f_4_evw_anime[]; +extern Gfx grd_s_f_5_model[]; +extern Gfx grd_s_f_5_modelT[]; +extern EVW_ANIME_DATA* grd_s_f_5_evw_anime[]; +extern Gfx grd_s_f_6_model[]; +extern Gfx grd_s_f_6_modelT[]; +extern EVW_ANIME_DATA* grd_s_f_6_evw_anime[]; +extern Gfx grd_s_f_7_model[]; +extern Gfx grd_s_f_7_modelT[]; +extern Gfx grd_s_f_8_model[]; +extern Gfx grd_s_f_8_modelT[]; +extern Gfx grd_s_f_9_model[]; +extern Gfx grd_s_f_9_modelT[]; +extern Gfx grd_s_f_10_model[]; +extern Gfx grd_s_f_10_modelT[]; +extern Gfx grd_s_t_2_model[]; +extern Gfx grd_s_t_2_modelT[]; +extern Gfx grd_s_t_3_model[]; +extern Gfx grd_s_t_3_modelT[]; +extern Gfx grd_s_t_4_model[]; +extern Gfx grd_s_t_4_modelT[]; +extern EVW_ANIME_DATA* grd_s_t_4_evw_anime[]; +extern Gfx grd_s_t_5_model[]; +extern Gfx grd_s_t_5_modelT[]; +extern EVW_ANIME_DATA* grd_s_t_5_evw_anime[]; +extern Gfx grd_s_t_6_model[]; +extern Gfx grd_s_t_6_modelT[]; +extern Gfx grd_s_t_7_model[]; +extern Gfx grd_s_t_7_modelT[]; +extern Gfx grd_s_t_8_model[]; +extern Gfx grd_s_t_8_modelT[]; +extern Gfx grd_s_t_9_model[]; +extern Gfx grd_s_t_9_modelT[]; +extern Gfx grd_s_t_10_model[]; +extern Gfx grd_s_t_10_modelT[]; +extern Gfx grd_s_t_r1_2_model[]; +extern Gfx grd_s_t_r1_2_modelT[]; +extern EVW_ANIME_DATA* grd_s_t_r1_2_evw_anime[]; +extern Gfx grd_s_t_r1_3_model[]; +extern Gfx grd_s_t_r1_3_modelT[]; +extern EVW_ANIME_DATA* grd_s_t_r1_3_evw_anime[]; +extern Gfx grd_s_t_r1_4_model[]; +extern Gfx grd_s_t_r1_4_modelT[]; +extern EVW_ANIME_DATA* grd_s_t_r1_4_evw_anime[]; +extern Gfx grd_s_t_r1_5_model[]; +extern Gfx grd_s_t_r1_5_modelT[]; +extern EVW_ANIME_DATA* grd_s_t_r1_5_evw_anime[]; +extern Gfx grd_s_r2_p_1_model[]; +extern Gfx grd_s_r2_p_1_modelT[]; +extern EVW_ANIME_DATA* grd_s_r2_p_1_evw_anime[]; +extern Gfx grd_s_r3_p_1_model[]; +extern Gfx grd_s_r3_p_1_modelT[]; +extern EVW_ANIME_DATA* grd_s_r3_p_1_evw_anime[]; +extern Gfx grd_s_r6_p_1_model[]; +extern Gfx grd_s_r6_p_1_modelT[]; +extern EVW_ANIME_DATA* grd_s_r6_p_1_evw_anime[]; +extern Gfx grd_s_r7_p_1_model[]; +extern Gfx grd_s_r7_p_1_modelT[]; +extern EVW_ANIME_DATA* grd_s_r7_p_1_evw_anime[]; +extern Gfx grd_s_t_st1_2_model[]; +extern Gfx grd_s_t_st1_2_modelT[]; +extern Gfx grd_s_t_st1_3_model[]; +extern Gfx grd_s_t_st1_3_modelT[]; +extern Gfx grd_post_office_model[]; +extern Gfx grd_post_office_modelT[]; +extern Gfx grd_s_r4_p_1_model[]; +extern Gfx grd_s_r4_p_1_modelT[]; +extern EVW_ANIME_DATA* grd_s_r4_p_1_evw_anime[]; +extern Gfx grd_s_r5_p_1_model[]; +extern Gfx grd_s_r5_p_1_modelT[]; +extern EVW_ANIME_DATA* grd_s_r5_p_1_evw_anime[]; +extern Gfx rom_train_in_model[]; +extern Gfx rom_train_in_modelT[]; +extern Gfx grd_s_f_9_model[]; +extern Gfx grd_s_f_9_modelT[]; +extern Gfx grd_s_r1_3_model[]; +extern Gfx grd_s_r1_3_modelT[]; +extern EVW_ANIME_DATA* grd_s_r1_3_evw_anime[]; +extern Gfx grd_s_c1_3_model[]; +extern Gfx grd_s_c1_3_modelT[]; +extern Gfx grd_s_f_9_model[]; +extern Gfx grd_s_f_9_modelT[]; +extern Gfx grd_yamishop_model[]; +extern Gfx grd_yamishop_modelT[]; +extern Gfx grd_player_select_model[]; +extern Gfx grd_player_select_modelT[]; +extern EVW_ANIME_DATA* grd_player_select_evw_anime[]; +extern Gfx grd_s_c1_s_4_model[]; +extern Gfx grd_s_c1_s_4_modelT[]; +extern Gfx grd_s_e1_1_model[]; +extern Gfx grd_s_e1_1_modelT[]; +extern Gfx grd_s_e1_r1_1_model[]; +extern Gfx grd_s_e1_r1_1_modelT[]; +extern EVW_ANIME_DATA* grd_s_e1_r1_1_evw_anime[]; +extern Gfx grd_s_e2_1_model[]; +extern Gfx grd_s_e2_1_modelT[]; +extern Gfx grd_s_e2_c1_1_model[]; +extern Gfx grd_s_e2_c1_1_modelT[]; +extern Gfx grd_s_e2_t_1_model[]; +extern Gfx grd_s_e2_t_1_modelT[]; +extern Gfx grd_s_e3_1_model[]; +extern Gfx grd_s_e3_1_modelT[]; +extern Gfx grd_s_e3_c1_1_model[]; +extern Gfx grd_s_e3_c1_1_modelT[]; +extern Gfx grd_s_e3_t_1_model[]; +extern Gfx grd_s_e3_t_1_modelT[]; +extern Gfx grd_s_e4_1_model[]; +extern Gfx grd_s_e4_1_modelT[]; +extern Gfx grd_s_e5_1_model[]; +extern Gfx grd_s_e5_1_modelT[]; +extern Gfx grd_s_f_ko_1_model[]; +extern Gfx grd_s_f_ko_1_modelT[]; +extern Gfx grd_s_f_ko_2_model[]; +extern Gfx grd_s_f_ko_2_modelT[]; +extern Gfx grd_s_f_ko_3_model[]; +extern Gfx grd_s_f_ko_3_modelT[]; +extern EVW_ANIME_DATA* grd_s_f_ko_3_evw_anime[]; +extern Gfx grd_s_f_mh_1_model[]; +extern Gfx grd_s_f_mh_1_modelT[]; +extern Gfx grd_s_f_mh_2_model[]; +extern Gfx grd_s_f_mh_2_modelT[]; +extern Gfx grd_s_f_mh_3_model[]; +extern Gfx grd_s_f_mh_3_modelT[]; +extern Gfx grd_s_f_pk_1_model[]; +extern Gfx grd_s_f_pk_1_modelT[]; +extern Gfx grd_s_f_pk_2_model[]; +extern Gfx grd_s_f_pk_2_modelT[]; +extern Gfx grd_s_f_pk_3_model[]; +extern Gfx grd_s_f_pk_3_modelT[]; +extern Gfx grd_s_t_po_1_model[]; +extern Gfx grd_s_t_po_1_modelT[]; +extern Gfx grd_s_t_po_2_model[]; +extern Gfx grd_s_t_po_2_modelT[]; +extern Gfx grd_s_t_po_3_model[]; +extern Gfx grd_s_t_po_3_modelT[]; +extern EVW_ANIME_DATA* grd_s_t_po_3_evw_anime[]; +extern Gfx grd_s_t_sh_1_model[]; +extern Gfx grd_s_t_sh_1_modelT[]; +extern Gfx grd_s_t_sh_2_model[]; +extern Gfx grd_s_t_sh_2_modelT[]; +extern EVW_ANIME_DATA* grd_s_t_sh_2_evw_anime[]; +extern Gfx grd_s_t_sh_3_model[]; +extern Gfx grd_s_t_sh_3_modelT[]; +extern Gfx rom_uranai_model[]; +extern Gfx rom_uranai_modelT[]; +extern EVW_ANIME_DATA* rom_uranai_evw_anime[]; +extern Gfx rom_shop4_1_model[]; +extern Gfx rom_shop4_1_modelT[]; +extern Gfx grd_s_hole_test_model[]; +extern Gfx grd_s_hole_test_modelT[]; +extern Gfx grd_s_m_1_model[]; +extern Gfx grd_s_m_1_modelT[]; +extern Gfx grd_s_m_r1_1_model[]; +extern Gfx grd_s_m_r1_1_modelT[]; +extern EVW_ANIME_DATA* grd_s_m_r1_1_evw_anime[]; +extern Gfx grd_s_e2_m_1_model[]; +extern Gfx grd_s_e2_m_1_modelT[]; +extern Gfx grd_s_e3_m_1_model[]; +extern Gfx grd_s_e3_m_1_modelT[]; +extern Gfx rom_shop4_fuku_model[]; +extern Gfx rom_shop4_fuku_modelT[]; +extern Gfx grd_s_m_r1_2_model[]; +extern Gfx grd_s_m_r1_2_modelT[]; +extern EVW_ANIME_DATA* grd_s_m_r1_2_evw_anime[]; +extern Gfx grd_s_m_r1_3_model[]; +extern Gfx grd_s_m_r1_3_modelT[]; +extern EVW_ANIME_DATA* grd_s_m_r1_3_evw_anime[]; +extern Gfx grd_s_m_r1_4_model[]; +extern Gfx grd_s_m_r1_4_modelT[]; +extern EVW_ANIME_DATA* grd_s_m_r1_4_evw_anime[]; +extern Gfx grd_s_m_r1_5_model[]; +extern Gfx grd_s_m_r1_5_modelT[]; +extern EVW_ANIME_DATA* grd_s_m_r1_5_evw_anime[]; +extern Gfx grd_s_m_r1_b_1_model[]; +extern Gfx grd_s_m_r1_b_1_modelT[]; +extern EVW_ANIME_DATA* grd_s_m_r1_b_1_evw_anime[]; +extern Gfx grd_s_m_r1_b_2_model[]; +extern Gfx grd_s_m_r1_b_2_modelT[]; +extern EVW_ANIME_DATA* grd_s_m_r1_b_2_evw_anime[]; +extern Gfx grd_s_m_r1_b_3_model[]; +extern Gfx grd_s_m_r1_b_3_modelT[]; +extern EVW_ANIME_DATA* grd_s_m_r1_b_3_evw_anime[]; +extern Gfx grd_s_m_2_model[]; +extern Gfx grd_s_m_2_modelT[]; +extern Gfx grd_s_m_3_model[]; +extern Gfx grd_s_m_3_modelT[]; +extern Gfx grd_s_m_4_model[]; +extern Gfx grd_s_m_4_modelT[]; +extern Gfx grd_s_m_5_model[]; +extern Gfx grd_s_m_5_modelT[]; +extern Gfx grd_s_m_6_model[]; +extern Gfx grd_s_m_6_modelT[]; +extern Gfx grd_s_m_7_model[]; +extern Gfx grd_s_m_7_modelT[]; +extern Gfx grd_s_m_8_model[]; +extern Gfx grd_s_m_8_modelT[]; +extern Gfx grd_s_m_9_model[]; +extern Gfx grd_s_m_9_modelT[]; +extern Gfx grd_s_m_10_model[]; +extern Gfx grd_s_m_10_modelT[]; +extern Gfx grd_s_c2_s_3_model[]; +extern Gfx grd_s_c2_s_3_modelT[]; +extern Gfx grd_s_c7_s_2_model[]; +extern Gfx grd_s_c7_s_3_model[]; +extern Gfx grd_s_c7_r3_2_model[]; +extern Gfx grd_s_c7_r3_2_modelT[]; +extern EVW_ANIME_DATA* grd_s_c7_r3_2_evw_anime[]; +extern Gfx rom_museum1_model[]; +extern Gfx rom_museum1_modelT[]; +extern Gfx rom_museum2_model[]; +extern Gfx rom_museum2_modelT[]; +extern Gfx rom_museum3_model[]; +extern Gfx rom_museum3_modelT[]; +extern Gfx rom_museum5_model[]; +extern Gfx rom_museum5_modelT[]; +extern Gfx rom_tailor_model[]; +extern Gfx rom_tailor_modelT[]; +extern Gfx rom_toudai_model[]; +extern Gfx rom_toudai_modelT[]; +extern Gfx grd_s_f_mu_1_model[]; +extern Gfx grd_s_f_mu_1_modelT[]; +extern Gfx grd_s_f_mu_2_model[]; +extern Gfx grd_s_f_mu_2_modelT[]; +extern Gfx grd_s_f_mu_3_model[]; +extern Gfx grd_s_f_mu_3_modelT[]; +extern EVW_ANIME_DATA* grd_s_f_mu_3_evw_anime[]; +extern Gfx grd_s_m_ta_1_model[]; +extern Gfx grd_s_m_ta_1_modelT[]; +extern EVW_ANIME_DATA* grd_s_m_ta_1_evw_anime[]; +extern Gfx grd_s_m_ta_2_model[]; +extern Gfx grd_s_m_ta_2_modelT[]; +extern EVW_ANIME_DATA* grd_s_m_ta_2_evw_anime[]; +extern Gfx grd_s_m_ta_3_model[]; +extern Gfx grd_s_m_ta_3_modelT[]; +extern EVW_ANIME_DATA* grd_s_m_ta_3_evw_anime[]; +extern Gfx grd_s_m_wf_1_model[]; +extern Gfx grd_s_m_wf_1_modelT[]; +extern EVW_ANIME_DATA* grd_s_m_wf_1_evw_anime[]; +extern Gfx grd_s_m_wf_2_model[]; +extern Gfx grd_s_m_wf_2_modelT[]; +extern EVW_ANIME_DATA* grd_s_m_wf_2_evw_anime[]; +extern Gfx grd_s_m_wf_3_model[]; +extern Gfx grd_s_m_wf_3_modelT[]; +extern EVW_ANIME_DATA* grd_s_m_wf_3_evw_anime[]; +extern Gfx grd_s_ir_1_model[]; +extern Gfx grd_s_ir_1_modelT[]; +extern Gfx grd_s_il_1_model[]; +extern Gfx grd_s_il_1_modelT[]; +extern Gfx grd_s_ir_2_model[]; +extern Gfx grd_s_ir_2_modelT[]; +extern Gfx grd_s_il_2_model[]; +extern Gfx grd_s_il_2_modelT[]; +extern Gfx grd_s_o_1_model[]; +extern Gfx grd_s_o_1_modelT[]; +extern EVW_ANIME_DATA* grd_s_o_1_evw_anime[]; +extern Gfx grd_s_o_2_model[]; +extern Gfx grd_s_o_2_modelT[]; +extern EVW_ANIME_DATA* grd_s_o_2_evw_anime[]; +extern Gfx grd_s_o_3_model[]; +extern Gfx grd_s_o_3_modelT[]; +extern EVW_ANIME_DATA* grd_s_o_3_evw_anime[]; +extern Gfx grd_s_o_4_model[]; +extern Gfx grd_s_o_4_modelT[]; +extern EVW_ANIME_DATA* grd_s_o_4_evw_anime[]; +extern Gfx grd_s_e2_o_1_model[]; +extern Gfx grd_s_e2_o_1_modelT[]; +extern Gfx grd_s_e3_o_1_model[]; +extern Gfx grd_s_e3_o_1_modelT[]; +extern Gfx grd_s_o_5_model[]; +extern Gfx grd_s_o_5_modelT[]; +extern EVW_ANIME_DATA* grd_s_o_5_evw_anime[]; +extern Gfx grd_s_o_6_model[]; +extern Gfx grd_s_o_6_modelT[]; +extern EVW_ANIME_DATA* grd_s_o_6_evw_anime[]; +extern Gfx grd_s_o_7_model[]; +extern Gfx grd_s_o_7_modelT[]; +extern EVW_ANIME_DATA* grd_s_o_7_evw_anime[]; +extern Gfx grd_s_o_8_model[]; +extern Gfx grd_s_o_8_modelT[]; +extern EVW_ANIME_DATA* grd_s_o_8_evw_anime[]; +extern Gfx grd_s_o_9_model[]; +extern Gfx grd_s_o_9_modelT[]; +extern EVW_ANIME_DATA* grd_s_o_9_evw_anime[]; +extern Gfx grd_s_o_10_model[]; +extern Gfx grd_s_o_10_modelT[]; +extern EVW_ANIME_DATA* grd_s_o_10_evw_anime[]; +extern Gfx grd_s_o_i_1_model[]; +extern Gfx grd_s_o_i_1_modelT[]; +extern Gfx grd_s_o_i_2_model[]; +extern Gfx grd_s_o_i_2_modelT[]; +extern EVW_ANIME_DATA* grd_s_o_i_2_evw_anime[]; +extern Gfx grd_s_o_r1_1_model[]; +extern Gfx grd_s_o_r1_1_modelT[]; +extern EVW_ANIME_DATA* grd_s_o_r1_1_evw_anime[]; +extern Gfx grd_s_o_r1_2_model[]; +extern Gfx grd_s_o_r1_2_modelT[]; +extern EVW_ANIME_DATA* grd_s_o_r1_2_evw_anime[]; +extern Gfx grd_s_o_r1_3_model[]; +extern Gfx grd_s_o_r1_3_modelT[]; +extern EVW_ANIME_DATA* grd_s_o_r1_3_evw_anime[]; +extern Gfx grd_s_o_r1_4_model[]; +extern Gfx grd_s_o_r1_4_modelT[]; +extern EVW_ANIME_DATA* grd_s_o_r1_4_evw_anime[]; +extern Gfx grd_s_o_r1_5_model[]; +extern Gfx grd_s_o_r1_5_modelT[]; +extern EVW_ANIME_DATA* grd_s_o_r1_5_evw_anime[]; +extern Gfx grd_s_o_r1_b_1_model[]; +extern Gfx grd_s_o_r1_b_1_modelT[]; +extern EVW_ANIME_DATA* grd_s_o_r1_b_1_evw_anime[]; +extern Gfx grd_s_o_r1_b_2_model[]; +extern Gfx grd_s_o_r1_b_2_modelT[]; +extern EVW_ANIME_DATA* grd_s_o_r1_b_2_evw_anime[]; +extern Gfx grd_s_o_r1_b_3_model[]; +extern Gfx grd_s_o_r1_b_3_modelT[]; +extern EVW_ANIME_DATA* grd_s_o_r1_b_3_evw_anime[]; +extern Gfx grd_s_o_ta_1_model[]; +extern Gfx grd_s_o_ta_1_modelT[]; +extern EVW_ANIME_DATA* grd_s_o_ta_1_evw_anime[]; +extern Gfx grd_s_o_ta_2_model[]; +extern Gfx grd_s_o_ta_2_modelT[]; +extern EVW_ANIME_DATA* grd_s_o_ta_2_evw_anime[]; +extern Gfx grd_s_o_ta_3_model[]; +extern Gfx grd_s_o_ta_3_modelT[]; +extern EVW_ANIME_DATA* grd_s_o_ta_3_evw_anime[]; +extern Gfx grd_s_o_wf_1_model[]; +extern Gfx grd_s_o_wf_1_modelT[]; +extern EVW_ANIME_DATA* grd_s_o_wf_1_evw_anime[]; +extern Gfx grd_s_o_wf_2_model[]; +extern Gfx grd_s_o_wf_2_modelT[]; +extern EVW_ANIME_DATA* grd_s_o_wf_2_evw_anime[]; +extern Gfx grd_s_o_wf_3_model[]; +extern Gfx grd_s_o_wf_3_modelT[]; +extern EVW_ANIME_DATA* grd_s_o_wf_3_evw_anime[]; +extern Gfx grd_s_ir_2_model[]; +extern Gfx grd_s_ir_2_modelT[]; +extern Gfx grd_s_il_2_model[]; +extern Gfx grd_s_il_2_modelT[]; +extern Gfx grd_s_ir_3_model[]; +extern Gfx grd_s_ir_3_modelT[]; +extern Gfx grd_s_il_3_model[]; +extern Gfx grd_s_il_3_modelT[]; +extern Gfx grd_s_ir_4_model[]; +extern Gfx grd_s_ir_4_modelT[]; +extern Gfx grd_s_il_4_model[]; +extern Gfx grd_s_il_4_modelT[]; +extern Gfx rom_tent_model[]; +extern Gfx rom_tent_modelT[]; + +extern mFM_bg_data_c data_bgd[] = { + { + BG_TYPE_ROOM01, + room01_model, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_259, + NULL, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_260, + NULL, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_242, + NULL, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_MYR_ETC, + myr_etc_model, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_246, + NULL, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_248, + NULL, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_WOOD}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_WOOD}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_WOOD}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_WOOD}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_WOOD}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_WOOD}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_WOOD}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_TMP, + tmp_model, + tmp_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_TMP2, + tmp2_model, + tmp2_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_49}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_48}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_57}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_57}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_57}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_TMPR, + tmpr_model, + tmpr_modelT, + tmpr_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_49}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_50}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_50}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_50}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_46}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_45}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_45}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_49}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_45}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_49}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_49}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_26}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_49}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_60}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_29}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_60}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_46}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_47}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_55}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_47}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_62}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_46}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_49}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_49}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 7, 7 }, + { mFI_SOUND_SOURCE_RIVER, 6, 4 }, + { mFI_SOUND_SOURCE_RIVER, 6, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_TMPR2, + tmpr2_model, + tmpr2_modelT, + tmpr2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_TMP3, + tmp3_model, + tmp3_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_TMPR3, + tmpr3_model, + tmpr3_modelT, + tmpr3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_47}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_47}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_47}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_50}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_50}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_50}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 1, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_56}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_S}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 5 }, + { mFI_SOUND_SOURCE_RIVER, 5, 10 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 14 }, + { mFI_SOUND_SOURCE_OCEAN, 7, 15 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 10 }, + }, + }, + { + BG_TYPE_TMP4, + tmp4_model, + tmp4_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_STONE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_STONE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_STONE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_STONE}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 8, 4, 4, 8, mCoBG_ATTRIBUTE_34}, { 0, 6, 8, 4, 4, 8, mCoBG_ATTRIBUTE_33}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_TMPR4, + tmpr4_model, + tmpr4_modelT, + tmpr4_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_57}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_60}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 5 }, + { mFI_SOUND_SOURCE_RIVER, 5, 10 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 15 }, + { mFI_SOUND_SOURCE_OCEAN, 7, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 15 }, + }, + }, + { + BG_TYPE_GRD_S_C1_R1_1, + grd_s_c1_r1_1_model, + grd_s_c1_r1_1_modelT, + grd_s_c1_r1_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 1, 12, 12, 12, 0, 12, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 1, 16, 16, 0, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 1, 12, 12, 12, 0, 12, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 0, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_53}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 16, 0, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C1_S_1, + grd_s_c1_s_1_model, + grd_s_c1_s_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 14, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 14, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 14, 16, 14, 12, 14, mCoBG_ATTRIBUTE_SOIL2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_SOIL2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 14, 14, 12, 14, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 14, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 14, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 14, 16, 14, 12, 14, mCoBG_ATTRIBUTE_SOIL2}, { 0, 12, 14, 12, 10, 12, mCoBG_ATTRIBUTE_SOIL2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_63}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 10, 12, 10, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 8, 10, 8, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 6, 8, 6, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 6, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 14, 16, mCoBG_ATTRIBUTE_50}, { 0, 14, 16, 14, 12, 14, mCoBG_ATTRIBUTE_50}, { 0, 12, 14, 12, 10, 12, mCoBG_ATTRIBUTE_50}, { 0, 10, 12, 10, 8, 10, mCoBG_ATTRIBUTE_50}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 8, 10, 8, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 6, 8, 6, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 6, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 6, mCoBG_ATTRIBUTE_BUSH}, { 0, 6, 6, 4, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_SOIL2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_SOIL2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 6, 8, 6, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 6, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 6, mCoBG_ATTRIBUTE_BUSH}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_SOIL2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_SOIL2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 6, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C2_R1_1, + grd_s_c2_r1_1_model, + grd_s_c2_r1_1_modelT, + grd_s_c2_r1_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 1, 12, 12, 12, 0, 12, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 1, 12, 12, 12, 0, 12, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 1, 16, 16, 16, 0, 16, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 6, 5 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C2_R2_1, + grd_s_c2_r2_1_model, + grd_s_c2_r2_1_modelT, + grd_s_c2_r2_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 1, 16, 16, 16, 0, 16, mCoBG_ATTRIBUTE_41}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 1, 12, 12, 12, 0, 12, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 1, 12, 12, 12, 0, 12, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 0, 16, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C5_R1_1, + grd_s_c5_r1_1_model, + grd_s_c5_r1_1_modelT, + grd_s_c5_r1_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 1, 16, 16, 16, 0, 16, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 1, 16, 16, 0, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 5, 16, mCoBG_ATTRIBUTE_57}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_T_R1_1, + grd_s_t_r1_1_model, + grd_s_t_r1_1_modelT, + grd_s_t_r1_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_47}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_47}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_47}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 6, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_50}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_50}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_50}, { 0, 5, 6, 4, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 7, 8 }, + { mFI_SOUND_SOURCE_RIVER, 9, 3 }, + { mFI_SOUND_SOURCE_RIVER, 6, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_F_1, + grd_s_f_1_model, + grd_s_f_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_F_2, + grd_s_f_2_model, + grd_s_f_2_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C1_1, + grd_s_c1_1_model, + grd_s_c1_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C1_R2_1, + grd_s_c1_r2_1_model, + grd_s_c1_r2_1_modelT, + grd_s_c1_r2_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 3 }, + { mFI_SOUND_SOURCE_RIVER, 5, 6 }, + { mFI_SOUND_SOURCE_RIVER, 11, 4 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C1_R3_1, + grd_s_c1_r3_1_model, + grd_s_c1_r3_1_modelT, + grd_s_c1_r3_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 3 }, + { mFI_SOUND_SOURCE_RIVER, 4, 2 }, + { mFI_SOUND_SOURCE_RIVER, 11, 4 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C2_1, + grd_s_c2_1_model, + grd_s_c2_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C3_1, + grd_s_c3_1_model, + grd_s_c3_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 1, 16, 16, 16, 16, 4, mCoBG_ATTRIBUTE_58}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 4, mCoBG_ATTRIBUTE_58}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C3_R1_1, + grd_s_c3_r1_1_model, + grd_s_c3_r1_1_modelT, + grd_s_c3_r1_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 4, mCoBG_ATTRIBUTE_58}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 4, mCoBG_ATTRIBUTE_58}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 3, 8 }, + { mFI_SOUND_SOURCE_RIVER, 4, 5 }, + { mFI_SOUND_SOURCE_RIVER, 3, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C4_1, + grd_s_c4_1_model, + grd_s_c4_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 4, mCoBG_ATTRIBUTE_58}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C4_R1_1, + grd_s_c4_r1_1_model, + grd_s_c4_r1_1_modelT, + grd_s_c4_r1_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 6, 8 }, + { mFI_SOUND_SOURCE_RIVER, 6, 4 }, + { mFI_SOUND_SOURCE_RIVER, 4, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C4_R2_1, + grd_s_c4_r2_1_model, + grd_s_c4_r2_1_modelT, + grd_s_c4_r2_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 3 }, + { mFI_SOUND_SOURCE_RIVER, 4, 2 }, + { mFI_SOUND_SOURCE_RIVER, 11, 4 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C5_1, + grd_s_c5_1_model, + grd_s_c5_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 4, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C5_R2_1, + grd_s_c5_r2_1_model, + grd_s_c5_r2_1_modelT, + grd_s_c5_r2_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 4, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 3 }, + { mFI_SOUND_SOURCE_RIVER, 11, 4 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C5_R3_1, + grd_s_c5_r3_1_model, + grd_s_c5_r3_1_modelT, + grd_s_c5_r3_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 7 }, + { mFI_SOUND_SOURCE_RIVER, 4, 8 }, + { mFI_SOUND_SOURCE_RIVER, 11, 6 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C6_1, + grd_s_c6_1_model, + grd_s_c6_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 1, 16, 4, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 4, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C6_R1_1, + grd_s_c6_r1_1_model, + grd_s_c6_r1_1_modelT, + grd_s_c6_r1_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 4, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 4, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 6, 8 }, + { mFI_SOUND_SOURCE_RIVER, 4, 5 }, + { mFI_SOUND_SOURCE_RIVER, 6, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C7_1, + grd_s_c7_1_model, + grd_s_c7_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 4, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R1_1, + grd_s_r1_1_model, + grd_s_r1_1_modelT, + grd_s_r1_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 3, 8 }, + { mFI_SOUND_SOURCE_RIVER, 3, 4 }, + { mFI_SOUND_SOURCE_RIVER, 4, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R2_1, + grd_s_r2_1_model, + grd_s_r2_1_modelT, + grd_s_r2_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 6 }, + { mFI_SOUND_SOURCE_RIVER, 11, 6 }, + { mFI_SOUND_SOURCE_RIVER, 4, 5 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R3_1, + grd_s_r3_1_model, + grd_s_r3_1_modelT, + grd_s_r3_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 7 }, + { mFI_SOUND_SOURCE_RIVER, 5, 4 }, + { mFI_SOUND_SOURCE_RIVER, 11, 6 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R4_1, + grd_s_r4_1_model, + grd_s_r4_1_modelT, + grd_s_r4_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 9, 4 }, + { mFI_SOUND_SOURCE_RIVER, 7, 3 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R5_1, + grd_s_r5_1_model, + grd_s_r5_1_modelT, + grd_s_r5_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 8, 7 }, + { mFI_SOUND_SOURCE_RIVER, 5, 4 }, + { mFI_SOUND_SOURCE_RIVER, 7, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R6_1, + grd_s_r6_1_model, + grd_s_r6_1_modelT, + grd_s_r6_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 4, 4 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R7_1, + grd_s_r7_1_model, + grd_s_r7_1_modelT, + grd_s_r7_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 7, 7 }, + { mFI_SOUND_SOURCE_RIVER, 5, 10 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C3_R2_1, + grd_s_c3_r2_1_model, + grd_s_c3_r2_1_modelT, + grd_s_c3_r2_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 1, 16, 16, 16, 0, 16, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 1, 12, 12, 12, 0, 12, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 1, 12, 12, 12, 0, 12, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_59}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 1, 16, 16, 16, 16, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 1, 16, 16, 16, 16, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_47}, { 1, 16, 16, 16, 16, 0, mCoBG_ATTRIBUTE_42}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 3, 2 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C7_R3_1, + grd_s_c7_r3_1_model, + grd_s_c7_r3_1_modelT, + grd_s_c7_r3_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 4, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 16, 16, 0, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 1, 12, 12, 0, 12, 12, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 1, 12, 12, 0, 12, 12, mCoBG_ATTRIBUTE_WATERFALL}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 16, 16, 0, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 7 }, + { mFI_SOUND_SOURCE_RIVER, 5, 4 }, + { mFI_SOUND_SOURCE_RIVER, 12, 9 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C6_R3_1, + grd_s_c6_r3_1_model, + grd_s_c6_r3_1_modelT, + grd_s_c6_r3_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 4, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 16, 16, 0, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 0, 16, mCoBG_ATTRIBUTE_41}, { 1, 12, 12, 0, 12, 12, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 1, 12, 12, 0, 12, 12, mCoBG_ATTRIBUTE_WATERFALL}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_62}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 16, 0, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_47}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_47}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 4, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 5, 5 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R1_B_1, + grd_s_r1_b_1_model, + grd_s_r1_b_1_modelT, + grd_s_r1_b_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_32}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_32}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_32}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_35}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_35}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 6, 8 }, + { mFI_SOUND_SOURCE_RIVER, 7, 4 }, + { mFI_SOUND_SOURCE_RIVER, 4, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R2_B_1, + grd_s_r2_b_1_model, + grd_s_r2_b_1_modelT, + grd_s_r2_b_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_34}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_33}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_34}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_33}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_34}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_33}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_34}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_33}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_34}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_33}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_34}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_33}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 5 }, + { mFI_SOUND_SOURCE_RIVER, 5, 8 }, + { mFI_SOUND_SOURCE_RIVER, 11, 6 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R3_B_1, + grd_s_r3_b_1_model, + grd_s_r3_b_1_modelT, + grd_s_r3_b_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_62}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_34}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_33}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_34}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_33}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_34}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_33}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 7 }, + { mFI_SOUND_SOURCE_RIVER, 5, 4 }, + { mFI_SOUND_SOURCE_RIVER, 11, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R4_B_1, + grd_s_r4_b_1_model, + grd_s_r4_b_1_modelT, + grd_s_r4_b_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_34}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_33}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_34}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_33}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_34}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_33}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 6 }, + { mFI_SOUND_SOURCE_RIVER, 5, 4 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R5_B_1, + grd_s_r5_b_1_model, + grd_s_r5_b_1_modelT, + grd_s_r5_b_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_59}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_32}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_32}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_32}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_35}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_35}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_32}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_32}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_32}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_35}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_35}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 6, 8 }, + { mFI_SOUND_SOURCE_RIVER, 3, 6 }, + { mFI_SOUND_SOURCE_RIVER, 7, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R6_B_1, + grd_s_r6_b_1_model, + grd_s_r6_b_1_modelT, + grd_s_r6_b_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_32}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_32}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_32}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_35}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_35}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 6, 6 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R7_B_1, + grd_s_r7_b_1_model, + grd_s_r7_b_1_modelT, + grd_s_r7_b_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_32}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_32}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_32}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_35}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_35}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 10, 10 }, + { mFI_SOUND_SOURCE_RIVER, 7, 12 }, + { mFI_SOUND_SOURCE_RIVER, 10, 6 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_T_1, + grd_s_t_1_model, + grd_s_t_1_modelT, + grd_s_t_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_POND, 11, 8 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C1_S_2, + grd_s_c1_s_2_model, + grd_s_c1_s_2_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 4, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C2_S_1, + grd_s_c2_s_1_model, + grd_s_c2_s_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 1, 16, 16, 16, 16, 4, mCoBG_ATTRIBUTE_58}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C3_S_1, + grd_s_c3_s_1_model, + grd_s_c3_s_1_modelT, + grd_s_c3_s_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 4, mCoBG_ATTRIBUTE_58}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 15, 16, 16, 14, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 15, 16, 16, 14, 14, mCoBG_ATTRIBUTE_SOIL2}, { 0, 13, 14, 14, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 15, 16, 16, 14, 14, mCoBG_ATTRIBUTE_SOIL2}, { 0, 13, 14, 14, 14, 12, mCoBG_ATTRIBUTE_48}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_48}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 4, 6, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 15, 16, 16, 16, 14, mCoBG_ATTRIBUTE_SOIL2}, { 0, 15, 14, 16, 16, 14, mCoBG_ATTRIBUTE_48}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_48}, { 0, 7, 6, 8, 6, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_SOIL2}, { 0, 7, 8, 6, 6, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_SOIL2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_SOIL2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_SOIL2}, { 0, 5, 6, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_53}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 0, 16, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_47}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_47}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_47}, { 1, 16, 16, 16, 16, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_POND, 6, 10 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C4_S_1, + grd_s_c4_s_1_model, + grd_s_c4_s_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 14, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 14, 16, 14, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 14, 14, 12, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 14, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 14, 16, 14, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 12, 14, 12, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_47}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_47}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_47}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_58}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 4, mCoBG_ATTRIBUTE_58}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 4, mCoBG_ATTRIBUTE_58}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C5_S_1, + grd_s_c5_s_1_model, + grd_s_c5_s_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_57}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 6, 6, 4, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 8, 8, 6, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 6, 6, 4, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C6_S_1, + grd_s_c6_s_1_model, + grd_s_c6_s_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 6, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 6, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 6, 4, 6, 8, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 6, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 6, 4, 6, 8, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 8, 6, 8, 10, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 6, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 6, 4, 6, 8, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 8, 6, 8, 10, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 10, 8, 10, 12, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 6, 6, 8, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 8, 8, 10, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 10, 10, 12, 12, mCoBG_ATTRIBUTE_SOIL2}, { 0, 13, 12, 12, 14, 14, mCoBG_ATTRIBUTE_SOIL2}, { 0, 15, 14, 14, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 6, 6, 8, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 8, 8, 10, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 10, 10, 12, 12, mCoBG_ATTRIBUTE_SOIL2}, { 0, 13, 12, 12, 14, 14, mCoBG_ATTRIBUTE_SOIL2}, { 0, 15, 14, 14, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 6, 6, 8, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 8, 8, 10, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 10, 10, 12, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 12, 12, 14, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 14, 14, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 6, 6, 8, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 8, 8, 10, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 10, 10, 12, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 12, 12, 14, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 14, 14, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 6, 6, 4, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 8, 8, 6, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 12, 10, 12, 14, 12, mCoBG_ATTRIBUTE_49}, { 0, 14, 12, 14, 16, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 14, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 6, 6, 4, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 14, 12, 14, 16, 14, mCoBG_ATTRIBUTE_49}, { 0, 16, 14, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 14, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C7_S_1, + grd_s_c7_s_1_model, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 4, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_53}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_47}, { 0, 7, 6, 6, 8, 8, mCoBG_ATTRIBUTE_47}, { 0, 9, 8, 8, 10, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 6, 6, 8, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 8, 8, 10, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_48}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_53}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_50}, { 0, 7, 6, 6, 8, 8, mCoBG_ATTRIBUTE_50}, { 0, 9, 8, 8, 10, 10, mCoBG_ATTRIBUTE_50}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_50}, { 1, 10, 10, 10, 4, 10, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C4_R3_1, + grd_s_c4_r3_1_model, + grd_s_c4_r3_1_modelT, + grd_s_c4_r3_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 3 }, + { mFI_SOUND_SOURCE_RIVER, 5, 6 }, + { mFI_SOUND_SOURCE_RIVER, 11, 4 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C7_R1_1, + grd_s_c7_r1_1_model, + grd_s_c7_r1_1_modelT, + grd_s_c7_r1_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 3, 8 }, + { mFI_SOUND_SOURCE_RIVER, 3, 4 }, + { mFI_SOUND_SOURCE_RIVER, 5, 10 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_T_ST1_1, + grd_s_t_st1_1_model, + grd_s_t_st1_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_32}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_32}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_32}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_32}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_32}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_32}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_STONE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_STONE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_STONE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_STONE}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 8, 4, 4, 8, mCoBG_ATTRIBUTE_34}, { 0, 6, 8, 4, 4, 8, mCoBG_ATTRIBUTE_33}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C1_2, + grd_s_c1_2_model, + grd_s_c1_2_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C1_3, + grd_s_c1_3_model, + grd_s_c1_3_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C1_4, + grd_s_c1_4_model, + grd_s_c1_4_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C1_5, + grd_s_c1_5_model, + grd_s_c1_5_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C2_2, + grd_s_c2_2_model, + grd_s_c2_2_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 4, mCoBG_ATTRIBUTE_58}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R1_2, + grd_s_r1_2_model, + grd_s_r1_2_modelT, + grd_s_r1_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 7, 8 }, + { mFI_SOUND_SOURCE_RIVER, 5, 5 }, + { mFI_SOUND_SOURCE_RIVER, 7, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R1_3, + grd_s_r1_3_model, + grd_s_r1_3_modelT, + grd_s_r1_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 9, 8 }, + { mFI_SOUND_SOURCE_RIVER, 8, 4 }, + { mFI_SOUND_SOURCE_RIVER, 7, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R4_2, + grd_s_r4_2_model, + grd_s_r4_2_modelT, + grd_s_r4_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 7, 9 }, + { mFI_SOUND_SOURCE_RIVER, 4, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 4 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R5_2, + grd_s_r5_2_model, + grd_s_r5_2_modelT, + grd_s_r5_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 8, 7 }, + { mFI_SOUND_SOURCE_RIVER, 5, 4 }, + { mFI_SOUND_SOURCE_RIVER, 6, 10 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R7_2, + grd_s_r7_2_model, + grd_s_r7_2_modelT, + grd_s_r7_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 4, 4 }, + { mFI_SOUND_SOURCE_RIVER, 3, 9 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R7_3, + grd_s_r7_3_model, + grd_s_r7_3_modelT, + grd_s_r7_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 6, 6 }, + { mFI_SOUND_SOURCE_RIVER, 4, 10 }, + { mFI_SOUND_SOURCE_RIVER, 10, 6 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C2_S_2, + grd_s_c2_s_2_model, + grd_s_c2_s_2_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 4, mCoBG_ATTRIBUTE_58}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 8, 6, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C1_S_3, + grd_s_c1_s_3_model, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_57}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C4_S_2, + grd_s_c4_s_2_model, + grd_s_c4_s_2_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 16, 14, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 14, 12, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 12, 10, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 10, 8, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 8, 6, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 16, 14, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 14, 12, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 12, 10, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 10, 8, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 8, 6, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 16, 14, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 14, 12, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 12, 10, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 10, 8, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 8, 6, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_47}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_47}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_58}, { 0, 8, 10, 8, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 6, 8, 6, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 6, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 6, 8, 6, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 6, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 6, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 4, mCoBG_ATTRIBUTE_58}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 4, mCoBG_ATTRIBUTE_58}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C5_S_2, + grd_s_c5_s_2_model, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_SOIL2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_SOIL2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_57}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_SOIL2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_SOIL2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_SOIL2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_SOIL2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_SOIL2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_SOIL2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_SOIL2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_63}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 4, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C6_R1_2, + grd_s_c6_r1_2_model, + grd_s_c6_r1_2_modelT, + grd_s_c6_r1_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 4, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 4, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 1, 16, 4, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 3, 8 }, + { mFI_SOUND_SOURCE_RIVER, 3, 4 }, + { mFI_SOUND_SOURCE_RIVER, 3, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C3_R1_2, + grd_s_c3_r1_2_model, + grd_s_c3_r1_2_modelT, + grd_s_c3_r1_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 4, mCoBG_ATTRIBUTE_58}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 4, mCoBG_ATTRIBUTE_58}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 7, 8 }, + { mFI_SOUND_SOURCE_RIVER, 6, 4 }, + { mFI_SOUND_SOURCE_RIVER, 6, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C3_2, + grd_s_c3_2_model, + grd_s_c3_2_modelT, + grd_s_c3_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 0, 16, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_47}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_47}, { 1, 16, 16, 16, 16, 4, mCoBG_ATTRIBUTE_58}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_POND, 8, 6 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C7_3, + grd_s_c7_3_model, + grd_s_c7_3_modelT, + grd_s_c7_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 0, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 16, 0, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 16, 16, 0, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_POND, 11, 5 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C1_R2_2, + grd_s_c1_r2_2_model, + grd_s_c1_r2_2_modelT, + grd_s_c1_r2_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 3 }, + { mFI_SOUND_SOURCE_RIVER, 4, 2 }, + { mFI_SOUND_SOURCE_RIVER, 11, 4 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C1_R3_2, + grd_s_c1_r3_2_model, + grd_s_c1_r3_2_modelT, + grd_s_c1_r3_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 3 }, + { mFI_SOUND_SOURCE_RIVER, 4, 2 }, + { mFI_SOUND_SOURCE_RIVER, 11, 4 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C4_2, + grd_s_c4_2_model, + grd_s_c4_2_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 1, 16, 16, 16, 16, 4, mCoBG_ATTRIBUTE_58}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C5_2, + grd_s_c5_2_model, + grd_s_c5_2_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C6_2, + grd_s_c6_2_model, + grd_s_c6_2_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 1, 16, 4, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 4, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R2_2, + grd_s_r2_2_model, + grd_s_r2_2_modelT, + grd_s_r2_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 8 }, + { mFI_SOUND_SOURCE_RIVER, 11, 7 }, + { mFI_SOUND_SOURCE_RIVER, 4, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R3_2, + grd_s_r3_2_model, + grd_s_r3_2_modelT, + grd_s_r3_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 7 }, + { mFI_SOUND_SOURCE_RIVER, 4, 8 }, + { mFI_SOUND_SOURCE_RIVER, 11, 6 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C4_R1_2, + grd_s_c4_r1_2_model, + grd_s_c4_r1_2_modelT, + grd_s_c4_r1_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 4, 8 }, + { mFI_SOUND_SOURCE_RIVER, 3, 4 }, + { mFI_SOUND_SOURCE_RIVER, 6, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C4_R2_2, + grd_s_c4_r2_2_model, + grd_s_c4_r2_2_modelT, + grd_s_c4_r2_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 6 }, + { mFI_SOUND_SOURCE_RIVER, 11, 6 }, + { mFI_SOUND_SOURCE_RIVER, 4, 6 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C7_R1_2, + grd_s_c7_r1_2_model, + grd_s_c7_r1_2_modelT, + grd_s_c7_r1_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 4, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 3, 8 }, + { mFI_SOUND_SOURCE_RIVER, 3, 4 }, + { mFI_SOUND_SOURCE_RIVER, 3, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C6_2, + grd_s_c6_2_model, + grd_s_c6_2_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 1, 16, 4, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 4, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C5_R2_2, + grd_s_c5_r2_2_model, + grd_s_c5_r2_2_modelT, + grd_s_c5_r2_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 6 }, + { mFI_SOUND_SOURCE_RIVER, 11, 6 }, + { mFI_SOUND_SOURCE_RIVER, 4, 6 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C4_R3_2, + grd_s_c4_r3_2_model, + grd_s_c4_r3_2_modelT, + grd_s_c4_r3_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 4, mCoBG_ATTRIBUTE_58}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 3 }, + { mFI_SOUND_SOURCE_RIVER, 4, 2 }, + { mFI_SOUND_SOURCE_RIVER, 11, 4 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R2_3, + grd_s_r2_3_model, + grd_s_r2_3_modelT, + grd_s_r2_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 4 }, + { mFI_SOUND_SOURCE_RIVER, 11, 5 }, + { mFI_SOUND_SOURCE_RIVER, 4, 4 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R3_3, + grd_s_r3_3_model, + grd_s_r3_3_modelT, + grd_s_r3_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 3 }, + { mFI_SOUND_SOURCE_RIVER, 4, 2 }, + { mFI_SOUND_SOURCE_RIVER, 11, 4 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C5_R3_2, + grd_s_c5_r3_2_model, + grd_s_c5_r3_2_modelT, + grd_s_c5_r3_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 4, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 3 }, + { mFI_SOUND_SOURCE_RIVER, 4, 2 }, + { mFI_SOUND_SOURCE_RIVER, 11, 4 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C5_3, + grd_s_c5_3_model, + grd_s_c5_3_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C4_3, + grd_s_c4_3_model, + grd_s_c4_3_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C3_3, + grd_s_c3_3_model, + grd_s_c3_3_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 4, mCoBG_ATTRIBUTE_58}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C2_3, + grd_s_c2_3_model, + grd_s_c2_3_modelT, + grd_s_c2_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_WATER}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_WATER}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_WATER}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 4, mCoBG_ATTRIBUTE_58}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_WATER}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_POND, 4, 3 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R1_P_1, + grd_s_r1_p_1_model, + grd_s_r1_p_1_modelT, + grd_s_r1_p_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_30}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_28}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_30}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_28}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_59}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 7, 7 }, + { mFI_SOUND_SOURCE_RIVER, 6, 4 }, + { mFI_SOUND_SOURCE_RIVER, 6, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R6_2, + grd_s_r6_2_model, + grd_s_r6_2_modelT, + grd_s_r6_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 5, 5 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_POLICE_INDOOR, + police_indoor_model, + police_indoor_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 7, 7, 7, 7, 7, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C1_R1_2, + grd_s_c1_r1_2_model, + grd_s_c1_r1_2_modelT, + grd_s_c1_r1_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_52}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 0, 16, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 0, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 6, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C1_R1_3, + grd_s_c1_r1_3_model, + grd_s_c1_r1_3_modelT, + grd_s_c1_r1_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 1, 12, 12, 12, 0, 12, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 1, 16, 16, 0, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 1, 12, 12, 12, 0, 12, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 0, 16, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 3, 6 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C1_R2_3, + grd_s_c1_r2_3_model, + grd_s_c1_r2_3_modelT, + grd_s_c1_r2_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 8 }, + { mFI_SOUND_SOURCE_RIVER, 4, 8 }, + { mFI_SOUND_SOURCE_RIVER, 11, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C1_R3_3, + grd_s_c1_r3_3_model, + grd_s_c1_r3_3_modelT, + grd_s_c1_r3_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 4 }, + { mFI_SOUND_SOURCE_RIVER, 11, 5 }, + { mFI_SOUND_SOURCE_RIVER, 4, 4 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C2_R1_2, + grd_s_c2_r1_2_model, + grd_s_c2_r1_2_modelT, + grd_s_c2_r1_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 4, mCoBG_ATTRIBUTE_58}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 0, 16, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 1, 16, 16, 0, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 4, 6 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C5_R1_2, + grd_s_c5_r1_2_model, + grd_s_c5_r1_2_modelT, + grd_s_c5_r1_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 0, 16, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 1, 12, 12, 0, 12, 12, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 1, 12, 12, 0, 12, 12, mCoBG_ATTRIBUTE_WATERFALL}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 8, 4 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C6_3, + grd_s_c6_3_model, + grd_s_c6_3_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 4, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 16, 4, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C7_2, + grd_s_c7_2_model, + grd_s_c7_2_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 4, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R1_4, + grd_s_r1_4_model, + grd_s_r1_4_modelT, + grd_s_r1_4_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 4, 8 }, + { mFI_SOUND_SOURCE_RIVER, 3, 4 }, + { mFI_SOUND_SOURCE_RIVER, 6, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R2_4, + grd_s_r2_4_model, + grd_s_r2_4_modelT, + grd_s_r2_4_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 4 }, + { mFI_SOUND_SOURCE_RIVER, 11, 5 }, + { mFI_SOUND_SOURCE_RIVER, 4, 4 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R3_4, + grd_s_r3_4_model, + grd_s_r3_4_modelT, + grd_s_r3_4_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 4 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R4_3, + grd_s_r4_3_model, + grd_s_r4_3_modelT, + grd_s_r4_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 6 }, + { mFI_SOUND_SOURCE_RIVER, 5, 4 }, + { mFI_SOUND_SOURCE_RIVER, 11, 6 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R5_3, + grd_s_r5_3_model, + grd_s_r5_3_modelT, + grd_s_r5_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 6, 8 }, + { mFI_SOUND_SOURCE_RIVER, 3, 6 }, + { mFI_SOUND_SOURCE_RIVER, 7, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R6_3, + grd_s_r6_3_model, + grd_s_r6_3_modelT, + grd_s_r6_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 3, 3 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C2_R2_2, + grd_s_c2_r2_2_model, + grd_s_c2_r2_2_modelT, + grd_s_c2_r2_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 4, mCoBG_ATTRIBUTE_58}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 0, 16, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 0, 16, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 0, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 0, 16, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 12 }, + { mFI_SOUND_SOURCE_RIVER, 11, 8 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C3_R2_2, + grd_s_c3_r2_2_model, + grd_s_c3_r2_2_modelT, + grd_s_c3_r2_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_60}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 1, 16, 16, 16, 0, 16, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 1, 12, 12, 12, 0, 12, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 1, 12, 12, 12, 0, 12, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 0, 16, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_47}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_47}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_47}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_47}, { 1, 16, 16, 16, 16, 4, mCoBG_ATTRIBUTE_58}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 4, 10 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R1_B_2, + grd_s_r1_b_2_model, + grd_s_r1_b_2_modelT, + grd_s_r1_b_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_30}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_28}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_30}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_28}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 9, 8 }, + { mFI_SOUND_SOURCE_RIVER, 7, 4 }, + { mFI_SOUND_SOURCE_RIVER, 7, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R2_B_2, + grd_s_r2_b_2_model, + grd_s_r2_b_2_modelT, + grd_s_r2_b_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_30}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_28}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_30}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_28}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 7 }, + { mFI_SOUND_SOURCE_RIVER, 4, 8 }, + { mFI_SOUND_SOURCE_RIVER, 11, 6 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R4_B_2, + grd_s_r4_b_2_model, + grd_s_r4_b_2_modelT, + grd_s_r4_b_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 6 }, + { mFI_SOUND_SOURCE_RIVER, 8, 3 }, + { mFI_SOUND_SOURCE_RIVER, 11, 6 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R3_B_2, + grd_s_r3_b_2_model, + grd_s_r3_b_2_modelT, + grd_s_r3_b_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_59}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_30}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_28}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_30}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_28}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 5 }, + { mFI_SOUND_SOURCE_RIVER, 5, 9 }, + { mFI_SOUND_SOURCE_RIVER, 11, 4 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R5_B_2, + grd_s_r5_b_2_model, + grd_s_r5_b_2_modelT, + grd_s_r5_b_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 6, 8 }, + { mFI_SOUND_SOURCE_RIVER, 7, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R6_B_2, + grd_s_r6_b_2_model, + grd_s_r6_b_2_modelT, + grd_s_r6_b_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_30}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_28}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_30}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_28}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_30}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_28}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_30}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_28}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 3, 3 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R7_B_2, + grd_s_r7_b_2_model, + grd_s_r7_b_2_modelT, + grd_s_r7_b_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 4, 4 }, + { mFI_SOUND_SOURCE_RIVER, 4, 9 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R1_B_3, + grd_s_r1_b_3_model, + grd_s_r1_b_3_modelT, + grd_s_r1_b_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 12, 8 }, + { mFI_SOUND_SOURCE_RIVER, 9, 12 }, + { mFI_SOUND_SOURCE_RIVER, 9, 4 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R2_B_3, + grd_s_r2_b_3_model, + grd_s_r2_b_3_modelT, + grd_s_r2_b_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_62}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 4 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R3_B_3, + grd_s_r3_b_3_model, + grd_s_r3_b_3_modelT, + grd_s_r3_b_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_34}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_33}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_34}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_33}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_34}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_33}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 11 }, + { mFI_SOUND_SOURCE_RIVER, 3, 9 }, + { mFI_SOUND_SOURCE_RIVER, 11, 8 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_F_3, + grd_s_f_3_model, + grd_s_f_3_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_F_4, + grd_s_f_4_model, + grd_s_f_4_modelT, + grd_s_f_4_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_POND, 10, 3 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_F_5, + grd_s_f_5_model, + grd_s_f_5_modelT, + grd_s_f_5_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_POND, 4, 9 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_F_6, + grd_s_f_6_model, + grd_s_f_6_modelT, + grd_s_f_6_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_POND, 11, 8 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_F_7, + grd_s_f_7_model, + grd_s_f_7_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_F_8, + grd_s_f_8_model, + grd_s_f_8_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_F_9, + grd_s_f_9_model, + grd_s_f_9_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_F_10, + grd_s_f_10_model, + grd_s_f_10_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_T_2, + grd_s_t_2_model, + grd_s_t_2_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_T_3, + grd_s_t_3_model, + grd_s_t_3_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_T_4, + grd_s_t_4_model, + grd_s_t_4_modelT, + grd_s_t_4_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_POND, 10, 10 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_T_5, + grd_s_t_5_model, + grd_s_t_5_modelT, + grd_s_t_5_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_POND, 5, 8 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_T_6, + grd_s_t_6_model, + grd_s_t_6_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_T_7, + grd_s_t_7_model, + grd_s_t_7_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_T_8, + grd_s_t_8_model, + grd_s_t_8_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_T_9, + grd_s_t_9_model, + grd_s_t_9_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_T_10, + grd_s_t_10_model, + grd_s_t_10_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_T_R1_2, + grd_s_t_r1_2_model, + grd_s_t_r1_2_modelT, + grd_s_t_r1_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_32}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_32}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_32}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_35}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_35}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_35}, { 0, 6, 6, 4, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 8, 8 }, + { mFI_SOUND_SOURCE_RIVER, 10, 3 }, + { mFI_SOUND_SOURCE_RIVER, 7, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_T_R1_3, + grd_s_t_r1_3_model, + grd_s_t_r1_3_modelT, + grd_s_t_r1_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_32}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_32}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_32}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 4, 4, 6, mCoBG_ATTRIBUTE_35}, { 0, 6, 6, 4, 4, 6, mCoBG_ATTRIBUTE_35}, { 0, 6, 6, 4, 4, 6, mCoBG_ATTRIBUTE_35}, { 0, 6, 6, 4, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 7, 8 }, + { mFI_SOUND_SOURCE_RIVER, 10, 3 }, + { mFI_SOUND_SOURCE_RIVER, 4, 10 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_T_R1_4, + grd_s_t_r1_4_model, + grd_s_t_r1_4_modelT, + grd_s_t_r1_4_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_32}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_32}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_32}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_35}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_35}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_35}, { 0, 6, 6, 4, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 4, 8 }, + { mFI_SOUND_SOURCE_RIVER, 3, 4 }, + { mFI_SOUND_SOURCE_RIVER, 6, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_T_R1_5, + grd_s_t_r1_5_model, + grd_s_t_r1_5_modelT, + grd_s_t_r1_5_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_47}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_47}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_47}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_50}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_50}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_50}, { 0, 6, 6, 4, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 3, 8 }, + { mFI_SOUND_SOURCE_RIVER, 3, 4 }, + { mFI_SOUND_SOURCE_RIVER, 3, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R2_P_1, + grd_s_r2_p_1_model, + grd_s_r2_p_1_modelT, + grd_s_r2_p_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_30}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_28}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_30}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_28}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_59}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 7, 7 }, + { mFI_SOUND_SOURCE_RIVER, 4, 6 }, + { mFI_SOUND_SOURCE_RIVER, 11, 6 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R3_P_1, + grd_s_r3_p_1_model, + grd_s_r3_p_1_modelT, + grd_s_r3_p_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_30}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 7, 7 }, + { mFI_SOUND_SOURCE_RIVER, 4, 6 }, + { mFI_SOUND_SOURCE_RIVER, 11, 6 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R6_P_1, + grd_s_r6_p_1_model, + grd_s_r6_p_1_modelT, + grd_s_r6_p_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_30}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_28}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_30}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_28}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 7, 7 }, + { mFI_SOUND_SOURCE_RIVER, 6, 4 }, + { mFI_SOUND_SOURCE_RIVER, 4, 6 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R7_P_1, + grd_s_r7_p_1_model, + grd_s_r7_p_1_modelT, + grd_s_r7_p_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_59}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_30}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_28}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_30}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_28}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_59}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 7, 7 }, + { mFI_SOUND_SOURCE_RIVER, 6, 11 }, + { mFI_SOUND_SOURCE_RIVER, 11, 6 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_T_ST1_2, + grd_s_t_st1_2_model, + grd_s_t_st1_2_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_32}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_32}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_32}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_32}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_32}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_32}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_STONE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_STONE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_STONE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_STONE}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 8, 4, 4, 8, mCoBG_ATTRIBUTE_34}, { 0, 6, 8, 4, 4, 8, mCoBG_ATTRIBUTE_33}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_T_ST1_3, + grd_s_t_st1_3_model, + grd_s_t_st1_3_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_32}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_32}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_32}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_32}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_32}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_32}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_STONE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_STONE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_STONE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_STONE}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 8, 4, 4, 8, mCoBG_ATTRIBUTE_34}, { 0, 6, 8, 4, 4, 8, mCoBG_ATTRIBUTE_33}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_POST_OFFICE, + grd_post_office_model, + grd_post_office_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 7, 7, 7, 7, 7, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R4_P_1, + grd_s_r4_p_1_model, + grd_s_r4_p_1_modelT, + grd_s_r4_p_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_60}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_28}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 7, 7 }, + { mFI_SOUND_SOURCE_RIVER, 6, 4 }, + { mFI_SOUND_SOURCE_RIVER, 11, 6 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R5_P_1, + grd_s_r5_p_1_model, + grd_s_r5_p_1_modelT, + grd_s_r5_p_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_28}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_59}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 7, 7 }, + { mFI_SOUND_SOURCE_RIVER, 4, 6 }, + { mFI_SOUND_SOURCE_RIVER, 6, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_ROM_TRAIN_IN, + rom_train_in_model, + rom_train_in_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_F_9, + grd_s_f_9_model, + grd_s_f_9_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R1_3, + grd_s_r1_3_model, + grd_s_r1_3_modelT, + grd_s_r1_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C1_3, + grd_s_c1_3_model, + grd_s_c1_3_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_F_9, + grd_s_f_9_model, + grd_s_f_9_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_YAMISHOP, + grd_yamishop_model, + grd_yamishop_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_PLAYER_SELECT, + grd_player_select_model, + grd_player_select_modelT, + grd_player_select_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C1_S_4, + grd_s_c1_s_4_model, + grd_s_c1_s_4_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_53}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 6, 6, 4, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_52}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 6, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_E1_1, + grd_s_e1_1_model, + grd_s_e1_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_E1_R1_1, + grd_s_e1_r1_1_model, + grd_s_e1_r1_1_modelT, + grd_s_e1_r1_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 31, 31, 0, 31, 31, mCoBG_ATTRIBUTE_40}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 31, 31, 0, 31, 31, mCoBG_ATTRIBUTE_40}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 31, 31, 0, 31, 31, mCoBG_ATTRIBUTE_40}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 1, 31, 31, 31, 31, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 1, 31, 31, 31, 0, 31, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 1, 31, 31, 31, 0, 31, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 31, 0, 31, 31, 31, mCoBG_ATTRIBUTE_39}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 1, 31, 31, 31, 0, 31, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 31, 0, 31, 31, 31, mCoBG_ATTRIBUTE_39}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 31, 0, 31, 31, 31, mCoBG_ATTRIBUTE_39}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 3 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 8, 6 }, + { mFI_SOUND_SOURCE_RIVER, 5, 3 }, + { mFI_SOUND_SOURCE_RIVER, 6, 10 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_E2_1, + grd_s_e2_1_model, + grd_s_e2_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_E2_C1_1, + grd_s_e2_c1_1_model, + grd_s_e2_c1_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_E2_T_1, + grd_s_e2_t_1_model, + grd_s_e2_t_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_53}, }, + { { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_54}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_E3_1, + grd_s_e3_1_model, + grd_s_e3_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_E3_C1_1, + grd_s_e3_c1_1_model, + grd_s_e3_c1_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_E3_T_1, + grd_s_e3_t_1_model, + grd_s_e3_t_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_52}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, }, + { { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_51}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_E4_1, + grd_s_e4_1_model, + grd_s_e4_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_E5_1, + grd_s_e5_1_model, + grd_s_e5_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_F_KO_1, + grd_s_f_ko_1_model, + grd_s_f_ko_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_F_KO_2, + grd_s_f_ko_2_model, + grd_s_f_ko_2_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_F_KO_3, + grd_s_f_ko_3_model, + grd_s_f_ko_3_modelT, + grd_s_f_ko_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_POND, 12, 5 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_F_MH_1, + grd_s_f_mh_1_model, + grd_s_f_mh_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_F_MH_2, + grd_s_f_mh_2_model, + grd_s_f_mh_2_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_F_MH_3, + grd_s_f_mh_3_model, + grd_s_f_mh_3_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_F_PK_1, + grd_s_f_pk_1_model, + grd_s_f_pk_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_F_PK_2, + grd_s_f_pk_2_model, + grd_s_f_pk_2_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_F_PK_3, + grd_s_f_pk_3_model, + grd_s_f_pk_3_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_T_PO_1, + grd_s_t_po_1_model, + grd_s_t_po_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_T_PO_2, + grd_s_t_po_2_model, + grd_s_t_po_2_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_T_PO_3, + grd_s_t_po_3_model, + grd_s_t_po_3_modelT, + grd_s_t_po_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_POND, 12, 8 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_T_SH_1, + grd_s_t_sh_1_model, + grd_s_t_sh_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_T_SH_2, + grd_s_t_sh_2_model, + grd_s_t_sh_2_modelT, + grd_s_t_sh_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_POND, 5, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_T_SH_3, + grd_s_t_sh_3_model, + grd_s_t_sh_3_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_ROM_URANAI, + rom_uranai_model, + rom_uranai_modelT, + rom_uranai_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 1, 31, 31, 31, 20, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 20, 20, 20, 20, 20, mCoBG_ATTRIBUTE_FLOOR}, { 0, 20, 20, 20, 20, 20, mCoBG_ATTRIBUTE_FLOOR}, { 1, 31, 31, 20, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 1, 31, 31, 31, 20, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 20, 20, 20, 20, 20, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 20, 20, 20, 20, 20, mCoBG_ATTRIBUTE_FLOOR}, { 1, 31, 31, 20, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 1, 20, 20, 20, 4, 20, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 1, 20, 20, 4, 20, 20, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_FLOOR}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 1, 31, 31, 31, 31, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 1, 31, 4, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 1, 31, 31, 31, 31, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 1, 31, 4, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_254, + NULL, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 9, 9, 9, 9, 9, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_258, + NULL, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 9, 9, 9, 9, 9, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 7, 7, 7, 7, 7, mCoBG_ATTRIBUTE_FLOOR}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_ROM_SHOP4_1, + rom_shop4_1_model, + rom_shop4_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_FLOOR}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_FLOOR}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_FLOOR}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_257, + NULL, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 1, 0, 2, 2, 0, mCoBG_ATTRIBUTE_FLOOR}, { 0, 1, 0, 2, 2, 0, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 3, 2, 4, 4, 2, mCoBG_ATTRIBUTE_FLOOR}, { 0, 3, 2, 4, 4, 2, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_HOLE_TEST, + grd_s_hole_test_model, + grd_s_hole_test_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 3, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 3, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 3, 4, 4, 2, 2, mCoBG_ATTRIBUTE_SOIL0}, { 0, 1, 2, 2, 0, 2, mCoBG_ATTRIBUTE_SOIL0}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SOIL0}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SOIL0}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SOIL0}, { 0, 1, 2, 0, 2, 2, mCoBG_ATTRIBUTE_SOIL0}, { 0, 3, 2, 2, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 3, 4, 4, 2, 2, mCoBG_ATTRIBUTE_SOIL0}, { 0, 1, 2, 2, 0, 0, mCoBG_ATTRIBUTE_SOIL0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SOIL0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SOIL0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SOIL0}, { 0, 1, 0, 0, 2, 2, mCoBG_ATTRIBUTE_SOIL0}, { 0, 3, 2, 2, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 3, 4, 4, 2, 2, mCoBG_ATTRIBUTE_SOIL0}, { 0, 1, 2, 2, 0, 0, mCoBG_ATTRIBUTE_SOIL0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SOIL0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SOIL0}, { 0, 1, 0, 0, 2, 2, mCoBG_ATTRIBUTE_SOIL0}, { 0, 3, 2, 2, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 3, 4, 4, 2, 2, mCoBG_ATTRIBUTE_SOIL0}, { 0, 1, 2, 2, 0, 0, mCoBG_ATTRIBUTE_SOIL0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SOIL0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SOIL0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SOIL0}, { 0, 1, 0, 0, 2, 2, mCoBG_ATTRIBUTE_SOIL0}, { 0, 3, 2, 2, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 3, 4, 4, 2, 2, mCoBG_ATTRIBUTE_SOIL0}, { 0, 1, 2, 2, 2, 0, mCoBG_ATTRIBUTE_SOIL0}, { 0, 1, 0, 2, 2, 0, mCoBG_ATTRIBUTE_SOIL0}, { 0, 1, 0, 2, 2, 0, mCoBG_ATTRIBUTE_SOIL0}, { 0, 1, 0, 2, 2, 0, mCoBG_ATTRIBUTE_SOIL0}, { 0, 1, 0, 2, 2, 2, mCoBG_ATTRIBUTE_SOIL0}, { 0, 3, 2, 2, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 3, 4, 4, 4, 2, mCoBG_ATTRIBUTE_SOIL0}, { 0, 3, 2, 4, 4, 2, mCoBG_ATTRIBUTE_SOIL0}, { 0, 3, 2, 4, 4, 2, mCoBG_ATTRIBUTE_SOIL0}, { 0, 3, 2, 4, 4, 2, mCoBG_ATTRIBUTE_SOIL0}, { 0, 3, 2, 4, 4, 2, mCoBG_ATTRIBUTE_SOIL0}, { 0, 3, 2, 4, 4, 2, mCoBG_ATTRIBUTE_SOIL0}, { 0, 3, 2, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 5, 4, 4, 6, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 5, 4, 6, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 6, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 6, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 7, 6, 6, 8, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 7, 6, 8, 8, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 7, 6, 8, 8, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 7, 6, 8, 8, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 7, 6, 8, 6, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 6, 4, mCoBG_ATTRIBUTE_63}, { 0, 6, 4, 6, 8, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 6, 6, 8, 6, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 6, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 7, 6, 6, 8, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 7, 8, 8, 6, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 6, 4, mCoBG_ATTRIBUTE_63}, { 0, 6, 4, 6, 8, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 8, 6, 8, 8, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 8, 8, 8, 8, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 6, 6, 8, 6, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 6, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 7, 6, 6, 8, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_GRASS0}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 7, 8, 8, 6, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 6, 4, mCoBG_ATTRIBUTE_63}, { 0, 6, 4, 6, 8, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 8, 6, 8, 8, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 8, 8, 8, 8, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 6, 6, 8, 6, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 6, 4, 4, mCoBG_ATTRIBUTE_63}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 7, 6, 6, 8, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 7, 8, 8, 6, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 6, mCoBG_ATTRIBUTE_63}, { 0, 6, 6, 4, 6, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 8, 8, 6, 8, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 8, 8, 8, 6, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 6, 8, 6, 4, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 6, 4, 4, 4, mCoBG_ATTRIBUTE_63}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 7, 6, 6, 6, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 7, 8, 6, 6, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 6, mCoBG_ATTRIBUTE_63}, { 0, 6, 6, 4, 6, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 8, 8, 6, 8, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 8, 8, 8, 6, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 6, 8, 6, 4, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 6, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 5, 4, 4, 4, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 5, 6, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 6, mCoBG_ATTRIBUTE_63}, { 0, 6, 6, 4, 6, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 6, 8, 6, 4, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 6, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 6, mCoBG_ATTRIBUTE_63}, { 0, 4, 6, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_M_1, + grd_s_m_1_model, + grd_s_m_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 1, 13 }, + { mFI_SOUND_SOURCE_OCEAN, 5, 13 }, + { mFI_SOUND_SOURCE_OCEAN, 10, 12 }, + { mFI_SOUND_SOURCE_OCEAN, 14, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_M_R1_1, + grd_s_m_r1_1_model, + grd_s_m_r1_1_modelT, + grd_s_m_r1_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_60}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 5 }, + { mFI_SOUND_SOURCE_RIVER, 5, 10 }, + { mFI_SOUND_SOURCE_OCEAN, 1, 11 }, + { mFI_SOUND_SOURCE_OCEAN, 5, 9 }, + { mFI_SOUND_SOURCE_OCEAN, 10, 12 }, + { mFI_SOUND_SOURCE_OCEAN, 14, 11 }, + }, + }, + { + BG_TYPE_GRD_S_E2_M_1, + grd_s_e2_m_1_model, + grd_s_e2_m_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_48}, }, + { { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_48}, }, + { { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_48}, }, + { { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_48}, }, + { { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_48}, }, + { { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_48}, }, + { { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_48}, }, + { { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_48}, }, + { { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_48}, }, + { { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 1, 28, 28, 28, 0, 28, mCoBG_ATTRIBUTE_41}, }, + { { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, { 1, 28, 28, 28, 0, 28, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 1, 12 }, + { mFI_SOUND_SOURCE_OCEAN, 14, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_E3_M_1, + grd_s_e3_m_1_model, + grd_s_e3_m_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_49}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_49}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_49}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_49}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_49}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_49}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_49}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_49}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_49}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 1, 28, 28, 0, 28, 28, mCoBG_ATTRIBUTE_40}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 28, 28, 0, 28, 28, mCoBG_ATTRIBUTE_40}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 1, 11 }, + { mFI_SOUND_SOURCE_OCEAN, 14, 12 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_249, + NULL, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 1, 31, 31, 31, 4, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 1, 31, 31, 4, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 1, 31, 31, 31, 4, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 1, 31, 31, 4, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 1, 31, 31, 31, 31, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 1, 31, 4, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 1, 31, 31, 31, 31, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 1, 31, 4, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_292, + NULL, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_250, + NULL, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_251, + NULL, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 9, 9, 9, 9, 9, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_252, + NULL, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_FLOOR}, { 0, 7, 7, 7, 7, 7, mCoBG_ATTRIBUTE_FLOOR}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_ROM_SHOP4_FUKU, + rom_shop4_fuku_model, + rom_shop4_fuku_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_FLOOR}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_FLOOR}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_FLOOR}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_M_R1_2, + grd_s_m_r1_2_model, + grd_s_m_r1_2_modelT, + grd_s_m_r1_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 1, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_56}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 5 }, + { mFI_SOUND_SOURCE_RIVER, 5, 10 }, + { mFI_SOUND_SOURCE_OCEAN, 1, 11 }, + { mFI_SOUND_SOURCE_OCEAN, 5, 13 }, + { mFI_SOUND_SOURCE_OCEAN, 10, 13 }, + { mFI_SOUND_SOURCE_OCEAN, 14, 11 }, + }, + }, + { + BG_TYPE_GRD_S_M_R1_3, + grd_s_m_r1_3_model, + grd_s_m_r1_3_modelT, + grd_s_m_r1_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 1, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_56}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 5 }, + { mFI_SOUND_SOURCE_RIVER, 5, 10 }, + { mFI_SOUND_SOURCE_OCEAN, 1, 11 }, + { mFI_SOUND_SOURCE_OCEAN, 5, 12 }, + { mFI_SOUND_SOURCE_OCEAN, 10, 12 }, + { mFI_SOUND_SOURCE_OCEAN, 14, 13 }, + }, + }, + { + BG_TYPE_GRD_S_M_R1_4, + grd_s_m_r1_4_model, + grd_s_m_r1_4_modelT, + grd_s_m_r1_4_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_60}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 5 }, + { mFI_SOUND_SOURCE_RIVER, 5, 10 }, + { mFI_SOUND_SOURCE_OCEAN, 1, 13 }, + { mFI_SOUND_SOURCE_OCEAN, 5, 13 }, + { mFI_SOUND_SOURCE_OCEAN, 10, 14 }, + { mFI_SOUND_SOURCE_OCEAN, 14, 11 }, + }, + }, + { + BG_TYPE_GRD_S_M_R1_5, + grd_s_m_r1_5_model, + grd_s_m_r1_5_modelT, + grd_s_m_r1_5_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_57}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_60}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 5 }, + { mFI_SOUND_SOURCE_RIVER, 5, 10 }, + { mFI_SOUND_SOURCE_OCEAN, 1, 14 }, + { mFI_SOUND_SOURCE_OCEAN, 5, 8 }, + { mFI_SOUND_SOURCE_OCEAN, 10, 9 }, + { mFI_SOUND_SOURCE_OCEAN, 14, 13 }, + }, + }, + { + BG_TYPE_GRD_S_M_R1_B_1, + grd_s_m_r1_b_1_model, + grd_s_m_r1_b_1_modelT, + grd_s_m_r1_b_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_32}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_32}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_32}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_35}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_35}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_57}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 5 }, + { mFI_SOUND_SOURCE_RIVER, 5, 10 }, + { mFI_SOUND_SOURCE_OCEAN, 1, 11 }, + { mFI_SOUND_SOURCE_OCEAN, 5, 14 }, + { mFI_SOUND_SOURCE_OCEAN, 10, 13 }, + { mFI_SOUND_SOURCE_OCEAN, 14, 11 }, + }, + }, + { + BG_TYPE_GRD_S_M_R1_B_2, + grd_s_m_r1_b_2_model, + grd_s_m_r1_b_2_modelT, + grd_s_m_r1_b_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_60}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 5 }, + { mFI_SOUND_SOURCE_RIVER, 5, 10 }, + { mFI_SOUND_SOURCE_OCEAN, 1, 11 }, + { mFI_SOUND_SOURCE_OCEAN, 5, 12 }, + { mFI_SOUND_SOURCE_OCEAN, 10, 15 }, + { mFI_SOUND_SOURCE_OCEAN, 14, 12 }, + }, + }, + { + BG_TYPE_GRD_S_M_R1_B_3, + grd_s_m_r1_b_3_model, + grd_s_m_r1_b_3_modelT, + grd_s_m_r1_b_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_32}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_32}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_32}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_35}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_35}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 1, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_56}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 5 }, + { mFI_SOUND_SOURCE_RIVER, 5, 10 }, + { mFI_SOUND_SOURCE_OCEAN, 1, 11 }, + { mFI_SOUND_SOURCE_OCEAN, 5, 15 }, + { mFI_SOUND_SOURCE_OCEAN, 10, 11 }, + { mFI_SOUND_SOURCE_OCEAN, 14, 11 }, + }, + }, + { + BG_TYPE_GRD_S_M_2, + grd_s_m_2_model, + grd_s_m_2_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 1, 11 }, + { mFI_SOUND_SOURCE_OCEAN, 5, 13 }, + { mFI_SOUND_SOURCE_OCEAN, 10, 13 }, + { mFI_SOUND_SOURCE_OCEAN, 14, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_M_3, + grd_s_m_3_model, + grd_s_m_3_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 1, 13 }, + { mFI_SOUND_SOURCE_OCEAN, 5, 15 }, + { mFI_SOUND_SOURCE_OCEAN, 10, 8 }, + { mFI_SOUND_SOURCE_OCEAN, 14, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_M_4, + grd_s_m_4_model, + grd_s_m_4_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 1, 11 }, + { mFI_SOUND_SOURCE_OCEAN, 5, 10 }, + { mFI_SOUND_SOURCE_OCEAN, 10, 9 }, + { mFI_SOUND_SOURCE_OCEAN, 14, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_M_5, + grd_s_m_5_model, + grd_s_m_5_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SE}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 1, 13 }, + { mFI_SOUND_SOURCE_OCEAN, 5, 11 }, + { mFI_SOUND_SOURCE_OCEAN, 10, 13 }, + { mFI_SOUND_SOURCE_OCEAN, 14, 13 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_M_6, + grd_s_m_6_model, + grd_s_m_6_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 1, 11 }, + { mFI_SOUND_SOURCE_OCEAN, 5, 9 }, + { mFI_SOUND_SOURCE_OCEAN, 10, 14 }, + { mFI_SOUND_SOURCE_OCEAN, 14, 12 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_M_7, + grd_s_m_7_model, + grd_s_m_7_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 1, 11 }, + { mFI_SOUND_SOURCE_OCEAN, 5, 12 }, + { mFI_SOUND_SOURCE_OCEAN, 10, 14 }, + { mFI_SOUND_SOURCE_OCEAN, 14, 12 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_M_8, + grd_s_m_8_model, + grd_s_m_8_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 1, 12 }, + { mFI_SOUND_SOURCE_OCEAN, 5, 14 }, + { mFI_SOUND_SOURCE_OCEAN, 10, 14 }, + { mFI_SOUND_SOURCE_OCEAN, 14, 12 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_M_9, + grd_s_m_9_model, + grd_s_m_9_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 0, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 1, 11 }, + { mFI_SOUND_SOURCE_OCEAN, 5, 8 }, + { mFI_SOUND_SOURCE_OCEAN, 10, 10 }, + { mFI_SOUND_SOURCE_OCEAN, 14, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_M_10, + grd_s_m_10_model, + grd_s_m_10_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 1, 12 }, + { mFI_SOUND_SOURCE_OCEAN, 5, 14 }, + { mFI_SOUND_SOURCE_OCEAN, 10, 14 }, + { mFI_SOUND_SOURCE_OCEAN, 14, 12 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C2_S_3, + grd_s_c2_s_3_model, + grd_s_c2_s_3_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 4, mCoBG_ATTRIBUTE_58}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_49}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_49}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_49}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_49}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_49}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_49}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C7_S_2, + grd_s_c7_s_2_model, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 4, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 5, 4, 4, 6, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 6, 6, 8, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 6, 8, 8, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 6, 8, 8, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 6, 6, 8, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 8, 8, 10, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 8, 10, 10, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_49}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 6, 6, 8, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 8, 8, 10, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 10, 10, 12, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_49}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 6, 6, 8, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 8, 8, 10, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 10, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 6, 6, 8, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 8, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_SOIL2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_SOIL2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_SOIL2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 6, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_SOIL2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_SOIL2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_SOIL2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_SOIL2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 5, 4, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_SOIL2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_SOIL2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_SOIL2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_SOIL2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_SOIL2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C7_S_3, + grd_s_c7_s_3_model, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_49}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_49}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_49}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_49}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_49}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 10, 4, 10, 10, 10, mCoBG_ATTRIBUTE_55}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_49}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_49}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_48}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_49}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_49}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_49}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C7_R3_2, + grd_s_c7_r3_2_model, + grd_s_c7_r3_2_modelT, + grd_s_c7_r3_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 4, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 1, 16, 16, 0, 16, 16, mCoBG_ATTRIBUTE_40}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_61}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 1, 12, 12, 0, 12, 12, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 1, 12, 12, 0, 12, 12, mCoBG_ATTRIBUTE_WATERFALL}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 5, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_ROM_MUSEUM1, + rom_museum1_model, + rom_museum1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_ROM_MUSEUM2, + rom_museum2_model, + rom_museum2_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_ROM_MUSEUM3, + rom_museum3_model, + rom_museum3_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_ROM_MUSEUM5, + rom_museum5_model, + rom_museum5_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_282, + NULL, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_283, + NULL, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 7, 8, 8, 6, 6, mCoBG_ATTRIBUTE_47}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_47}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_284, + NULL, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 1, 0, 0, 2, 2, mCoBG_ATTRIBUTE_31}, { 0, 3, 2, 2, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_285, + NULL, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 3, 4, 4, 2, 2, mCoBG_ATTRIBUTE_31}, { 0, 1, 2, 2, 0, 0, mCoBG_ATTRIBUTE_31}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_286, + NULL, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 3, 4, 4, 2, 2, mCoBG_ATTRIBUTE_31}, { 0, 1, 2, 2, 0, 0, mCoBG_ATTRIBUTE_31}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_287, + NULL, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 3, 4, 4, 2, 2, mCoBG_ATTRIBUTE_31}, { 0, 1, 2, 2, 0, 0, mCoBG_ATTRIBUTE_31}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_288, + NULL, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 7, 8, 8, 6, 6, mCoBG_ATTRIBUTE_47}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_47}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 3, 4, 4, 2, 2, mCoBG_ATTRIBUTE_31}, { 0, 1, 2, 2, 0, 0, mCoBG_ATTRIBUTE_31}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_289, + NULL, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_47}, { 0, 7, 6, 6, 8, 8, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_ROM_TAILOR, + rom_tailor_model, + rom_tailor_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 7, 7, 7, 7, 7, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 7, 7, 7, 7, 7, mCoBG_ATTRIBUTE_FLOOR}, { 0, 7, 7, 7, 7, 7, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_ROM_TOUDAI, + rom_toudai_model, + rom_toudai_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 1, 31, 31, 31, 4, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 1, 31, 31, 4, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 1, 6, 4, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 1, 6, 6, 6, 6, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 1, 6, 6, 4, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 1, 6, 6, 6, 4, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 1, 31, 31, 31, 31, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 1, 31, 4, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_F_MU_1, + grd_s_f_mu_1_model, + grd_s_f_mu_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_F_MU_2, + grd_s_f_mu_2_model, + grd_s_f_mu_2_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_F_MU_3, + grd_s_f_mu_3_model, + grd_s_f_mu_3_modelT, + grd_s_f_mu_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_61}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_POND, 12, 8 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_M_TA_1, + grd_s_m_ta_1_model, + grd_s_m_ta_1_modelT, + grd_s_m_ta_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 1, 4, 2, 4, 4, 4, mCoBG_ATTRIBUTE_55}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 1, 11 }, + { mFI_SOUND_SOURCE_OCEAN, 5, 14 }, + { mFI_SOUND_SOURCE_OCEAN, 10, 15 }, + { mFI_SOUND_SOURCE_OCEAN, 14, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_M_TA_2, + grd_s_m_ta_2_model, + grd_s_m_ta_2_modelT, + grd_s_m_ta_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 1, 12 }, + { mFI_SOUND_SOURCE_OCEAN, 5, 14 }, + { mFI_SOUND_SOURCE_OCEAN, 10, 15 }, + { mFI_SOUND_SOURCE_OCEAN, 14, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_M_TA_3, + grd_s_m_ta_3_model, + grd_s_m_ta_3_modelT, + grd_s_m_ta_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 1, 12 }, + { mFI_SOUND_SOURCE_OCEAN, 5, 14 }, + { mFI_SOUND_SOURCE_OCEAN, 10, 14 }, + { mFI_SOUND_SOURCE_OCEAN, 14, 12 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_M_WF_1, + grd_s_m_wf_1_model, + grd_s_m_wf_1_modelT, + grd_s_m_wf_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_28}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 1, 11 }, + { mFI_SOUND_SOURCE_OCEAN, 5, 9 }, + { mFI_SOUND_SOURCE_OCEAN, 10, 13 }, + { mFI_SOUND_SOURCE_OCEAN, 14, 12 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_M_WF_2, + grd_s_m_wf_2_model, + grd_s_m_wf_2_modelT, + grd_s_m_wf_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_28}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 1, 11 }, + { mFI_SOUND_SOURCE_OCEAN, 5, 10 }, + { mFI_SOUND_SOURCE_OCEAN, 10, 12 }, + { mFI_SOUND_SOURCE_OCEAN, 14, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_M_WF_3, + grd_s_m_wf_3_model, + grd_s_m_wf_3_modelT, + grd_s_m_wf_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_28}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 1, 11 }, + { mFI_SOUND_SOURCE_OCEAN, 5, 10 }, + { mFI_SOUND_SOURCE_OCEAN, 10, 15 }, + { mFI_SOUND_SOURCE_OCEAN, 14, 12 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_IR_1, + grd_s_ir_1_model, + grd_s_ir_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_30}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_60}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_IL_1, + grd_s_il_1_model, + grd_s_il_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_61}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 2, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 13, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 2, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 13, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_IR_2, + grd_s_ir_2_model, + grd_s_ir_2_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_30}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_IL_2, + grd_s_il_2_model, + grd_s_il_2_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_59}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_59}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_30}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_28}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 2, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 13, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 2, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 13, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_O_1, + grd_s_o_1_model, + grd_s_o_1_modelT, + grd_s_o_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_O_2, + grd_s_o_2_model, + grd_s_o_2_modelT, + grd_s_o_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_O_3, + grd_s_o_3_model, + grd_s_o_3_modelT, + grd_s_o_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_O_4, + grd_s_o_4_model, + grd_s_o_4_modelT, + grd_s_o_4_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_E2_O_1, + grd_s_e2_o_1_model, + grd_s_e2_o_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_E3_O_1, + grd_s_e3_o_1_model, + grd_s_e3_o_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_O_5, + grd_s_o_5_model, + grd_s_o_5_modelT, + grd_s_o_5_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_O_6, + grd_s_o_6_model, + grd_s_o_6_modelT, + grd_s_o_6_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_O_7, + grd_s_o_7_model, + grd_s_o_7_modelT, + grd_s_o_7_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_O_8, + grd_s_o_8_model, + grd_s_o_8_modelT, + grd_s_o_8_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_O_9, + grd_s_o_9_model, + grd_s_o_9_modelT, + grd_s_o_9_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_O_10, + grd_s_o_10_model, + grd_s_o_10_modelT, + grd_s_o_10_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_O_I_1, + grd_s_o_i_1_model, + grd_s_o_i_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_O_I_2, + grd_s_o_i_2_model, + grd_s_o_i_2_modelT, + grd_s_o_i_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_O_R1_1, + grd_s_o_r1_1_model, + grd_s_o_r1_1_modelT, + grd_s_o_r1_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_O_R1_2, + grd_s_o_r1_2_model, + grd_s_o_r1_2_modelT, + grd_s_o_r1_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_O_R1_3, + grd_s_o_r1_3_model, + grd_s_o_r1_3_modelT, + grd_s_o_r1_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_O_R1_4, + grd_s_o_r1_4_model, + grd_s_o_r1_4_modelT, + grd_s_o_r1_4_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_O_R1_5, + grd_s_o_r1_5_model, + grd_s_o_r1_5_modelT, + grd_s_o_r1_5_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_O_R1_B_1, + grd_s_o_r1_b_1_model, + grd_s_o_r1_b_1_modelT, + grd_s_o_r1_b_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_O_R1_B_2, + grd_s_o_r1_b_2_model, + grd_s_o_r1_b_2_modelT, + grd_s_o_r1_b_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_O_R1_B_3, + grd_s_o_r1_b_3_model, + grd_s_o_r1_b_3_modelT, + grd_s_o_r1_b_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_O_TA_1, + grd_s_o_ta_1_model, + grd_s_o_ta_1_modelT, + grd_s_o_ta_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_O_TA_2, + grd_s_o_ta_2_model, + grd_s_o_ta_2_modelT, + grd_s_o_ta_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_O_TA_3, + grd_s_o_ta_3_model, + grd_s_o_ta_3_modelT, + grd_s_o_ta_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_O_WF_1, + grd_s_o_wf_1_model, + grd_s_o_wf_1_modelT, + grd_s_o_wf_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_O_WF_2, + grd_s_o_wf_2_model, + grd_s_o_wf_2_modelT, + grd_s_o_wf_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_O_WF_3, + grd_s_o_wf_3_model, + grd_s_o_wf_3_modelT, + grd_s_o_wf_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_IR_2, + grd_s_ir_2_model, + grd_s_ir_2_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_30}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_IL_2, + grd_s_il_2_model, + grd_s_il_2_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_59}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_59}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_30}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_28}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 2, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 13, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 2, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 13, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_IR_3, + grd_s_ir_3_model, + grd_s_ir_3_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_30}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_30}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_28}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_IL_3, + grd_s_il_3_model, + grd_s_il_3_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 2, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 13, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 2, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 13, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_IR_4, + grd_s_ir_4_model, + grd_s_ir_4_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_30}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_IL_4, + grd_s_il_4_model, + grd_s_il_4_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_59}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_62}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 2, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 13, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 2, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 13, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_ROM_TENT, + rom_tent_model, + rom_tent_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 7, 7, 7, 7, 7, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 7, 7, 7, 7, 7, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 7, 7, 7, 7, 7, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, +}; diff --git a/src/data/field/bg/acre/grd_player_select/grd_player_select.c b/src/data/field/bg/acre/grd_player_select/grd_player_select.c new file mode 100644 index 00000000..9d46bce7 --- /dev/null +++ b/src/data/field/bg/acre/grd_player_select/grd_player_select.c @@ -0,0 +1,77 @@ +#include "libforest/gbi_extensions.h" + +static u16 rom_open_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_open_pal.inc" +}; + +static u8 rom_open_floor_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_open_floor_tex.inc" +}; + +static u8 rom_open_shade_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_open_shade_tex.inc" +}; + +static u8 rom_open_spot2_tex_rgb_i4[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_open_spot2_tex_rgb_i4.inc" +}; + +static u8 rom_open_spot_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_open_spot_tex.inc" +}; + +static Vtx grd_player_select_v[] = { +#include "assets/field/bg/grd_player_select_v.inc" +}; + +extern Gfx grd_player_select_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, TEXEL1, TEXEL1, 0, 0, 0, COMBINED, + COMBINED, 0, PRIM_LOD_FRAC, 0), + gsDPSetPrimColor(0, 150, 255, 255, 255, 255), + gsDPSetEnvColor(0xFF, 0xFF, 0x82, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(rom_open_spot2_tex_rgb_i4, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 15, 15), + gsDPSetTextureImage_Dolphin(G_IM_FMT_I, G_IM_SIZ_8b, 32, 64, rom_open_spot_tex), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&grd_player_select_v[12], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPSetCombineLERP(0, 0, 0, PRIMITIVE, 0, 0, 0, TEXEL0, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 0, 0, 0, 255), + gsDPLoadTextureBlock_4b_Dolphin(rom_open_shade_tex, G_IM_FMT_I, 32, 64, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&grd_player_select_v[16], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_player_select_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, PRIMITIVE, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 255, 255, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_open_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_open_floor_tex, G_IM_FMT_CI, 64, 64, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&grd_player_select_v[0], 12, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_player_select/grd_player_select_evw_anime.c b/src/data/field/bg/acre/grd_player_select/grd_player_select_evw_anime.c new file mode 100644 index 00000000..19ad969c --- /dev/null +++ b/src/data/field/bg/acre/grd_player_select/grd_player_select_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_player_select_evw_anime_1[] = { { 1, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +extern EVW_ANIME_DATA grd_player_select_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_player_select_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_post_office/grd_post_office.c b/src/data/field/bg/acre/grd_post_office/grd_post_office.c new file mode 100644 index 00000000..cffa8145 --- /dev/null +++ b/src/data/field/bg/acre/grd_post_office/grd_post_office.c @@ -0,0 +1,670 @@ +#include "libforest/gbi_extensions.h" + +static u16 yubin_k_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_k_pal.inc" +}; + +static u16 yubin_k2_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_k2_pal.inc" +}; + +static u16 yubin_floor_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_floor_pal.inc" +}; + +static u16 yubin_hakari_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_hakari_pal.inc" +}; + +static u16 yubin_wall_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_wall_pal.inc" +}; + +static u16 yubin_letter_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_letter_pal.inc" +}; + +static u16 yubin_us_bag_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_us_bag_pal.inc" +}; + +static u16 zzzyubin_tree_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/zzzyubin_tree_pal.inc" +}; + +static u16 yubin_t_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_t_pal.inc" +}; + +static u16 yubin_us_card_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_us_card_pal.inc" +}; + +static u8 yuibn_kaunta01_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yuibn_kaunta01_tex.inc" +}; + +static u8 yuibn_kaunta02_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yuibn_kaunta02_tex.inc" +}; + +static u8 yuibn_desk01_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yuibn_desk01_tex.inc" +}; + +static u8 yubin_ark01_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_ark01_tex.inc" +}; + +static u8 yuibn_kaunta03_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yuibn_kaunta03_tex.inc" +}; + +static u8 yuibn_kaunta04_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yuibn_kaunta04_tex.inc" +}; + +static u8 yubin_floor01_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_floor01_tex.inc" +}; + +static u8 yubin_floor02_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_floor02_tex.inc" +}; + +static u8 yubin_floor03_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_floor03_tex.inc" +}; + +static u8 yubin_hakari01_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_hakari01_tex.inc" +}; + +static u8 yubin_hakari02_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_hakari02_tex.inc" +}; + +static u8 yubin_hakari03_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_hakari03_tex.inc" +}; + +static u8 yubin_wall04_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_wall04_tex.inc" +}; + +static u8 yubin_letter01_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_letter01_tex.inc" +}; + +static u8 yubin_window_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_window_tex.inc" +}; + +static u8 yubin_us_bag_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_us_bag_tex.inc" +}; + +static u8 yubin_tree2_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_tree2_tex.inc" +}; + +static u8 yubin_tree_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_tree_tex.inc" +}; + +static u8 yubin_tree3_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_tree3_tex.inc" +}; + +static u8 yubin_tree4_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_tree4_tex.inc" +}; + +static u8 yubin_step_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_step_tex.inc" +}; + +static u8 rom_yubinkyoku_akril_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yubinkyoku_akril_tex.inc" +}; + +static u8 rom_yubinkyoku_shede_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yubinkyoku_shede_tex.inc" +}; + +static u8 yubin_us_card_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_us_card_tex.inc" +}; + +static u8 yubin_us_mat_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_us_mat_tex.inc" +}; + +static u8 rom_yubinkyoku_shadow_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yubinkyoku_shadow_tex.inc" +}; + +static u8 yubin_us_card2_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_us_card2_tex.inc" +}; + +static Vtx grd_post_office_v[] = { +#include "assets/field/bg/grd_post_office_v.inc" +}; + +extern Gfx grd_post_office_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, COMBINED, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 255, 255, 255, 120), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(rom_yubinkyoku_akril_tex, G_IM_FMT_I, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&grd_post_office_v[197], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_post_office_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTLUT_Dolphin(15, 16, 1, yubin_wall_pal), + gsDPLoadTextureBlock_4b_Dolphin(yubin_window_tex, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&grd_post_office_v[217], 8, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, yubin_k_pal), + gsDPLoadTextureBlock_4b_Dolphin(yuibn_kaunta04_tex, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&grd_post_office_v[225], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, zzzyubin_tree_pal), + gsDPLoadTextureBlock_4b_Dolphin(yubin_tree_tex, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&grd_post_office_v[229], 20, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(yubin_tree2_tex, G_IM_FMT_CI, 32, 48, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 16, 18, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, yubin_k2_pal), + gsDPLoadTextureBlock_4b_Dolphin(yubin_ark01_tex, G_IM_FMT_CI, 32, 64, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&grd_post_office_v[249], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b(1, 5, 2, // tri0 + 4, 6, 7, // tri1 + 4, 7, 5, // tri2 + 6, 8, 9 // tri3 + ), + gsSPNTriangles_5b(6, 9, 7, // tri0 + 8, 10, 11, // tri1 + 8, 11, 9, // tri2 + 10, 12, 13 // tri3 + ), + gsSPNTriangles_5b(10, 13, 11, // tri0 + 12, 14, 15, // tri1 + 12, 15, 13, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(16, 18, 19, // tri0 + 20, 0, 3, // tri1 + 20, 3, 21, // tri2 + 22, 23, 20 // tri3 + ), + gsSPNTriangles_5b(22, 20, 21, // tri0 + 24, 25, 3, // tri1 + 24, 3, 26, // tri2 + 27, 28, 29 // tri3 + ), + gsSPNTriangles_5b(27, 29, 30, // tri0 + 27, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_post_office_v[281], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 3, 4 // tri2 + ), + gsSPNTriangles_5b(0, 4, 5, // tri0 + 0, 5, 6, // tri1 + 0, 6, 7, // tri2 + 0, 7, 8 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 9, 11, 12, // tri1 + 11, 13, 14, // tri2 + 11, 14, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 16, 18, 19, // tri1 + 17, 20, 1, // tri2 + 17, 1, 21 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 22, 24, 25, // tri1 + 26, 27, 28, // tri2 + 26, 28, 29 // tri3 + ), + gsSPNTriangles_5b(27, 30, 3, // tri0 + 27, 3, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_post_office_v[313], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, yubin_us_bag_pal), + gsDPLoadTextureBlock_4b_Dolphin(yubin_us_bag_tex, G_IM_FMT_CI, 48, 48, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&grd_post_office_v[317], 10, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 7, 8, 9, // tri1 + 5, 7, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, yubin_floor_pal), + gsDPLoadTextureBlock_4b_Dolphin(yubin_floor03_tex, G_IM_FMT_CI, 32, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&grd_post_office_v[327], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, yubin_hakari_pal), + gsDPLoadTextureBlock_4b_Dolphin(yubin_hakari03_tex, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&grd_post_office_v[331], 8, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(yubin_hakari02_tex, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 4, 5, 6, // tri0 + 4, 6, 7, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, yubin_letter_pal), + gsDPLoadTextureBlock_4b_Dolphin(yubin_letter01_tex, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&grd_post_office_v[339], 7, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b(2, 5, 3, // tri0 + 2, 1, 6, // tri1 + 2, 6, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, yubin_floor_pal), + gsDPLoadTextureBlock_4b_Dolphin(yubin_us_mat_tex, G_IM_FMT_CI, 48, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&grd_post_office_v[346], 22, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, yubin_us_card_pal), + gsDPLoadTextureBlock_4b_Dolphin(yubin_us_card_tex, G_IM_FMT_CI, 32, 64, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPNTrianglesInit_5b(10, // tri count + 4, 5, 6, // tri0 + 5, 7, 6, // tri1 + 8, 9, 10 // tri2 + ), + gsSPNTriangles_5b(8, 10, 11, // tri0 + 12, 13, 14, // tri1 + 15, 16, 13, // tri2 + 17, 15, 13 // tri3 + ), + gsSPNTriangles_5b(12, 17, 13, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, yubin_t_pal), + gsDPLoadTextureBlock_4b_Dolphin(yubin_step_tex, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&grd_post_office_v[0], 6, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(0, 5, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, yubin_wall_pal), + gsDPLoadTextureBlock_4b_Dolphin(yubin_wall04_tex, G_IM_FMT_CI, 32, 48, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&grd_post_office_v[6], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 1, 0, 4 // tri2 + ), + gsSPNTriangles_5b(3, 5, 2, // tri0 + 3, 6, 5, // tri1 + 7, 4, 8, // tri2 + 4, 0, 8 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 10, 12, 11, // tri1 + 13, 14, 15, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(15, 17, 11, // tri0 + 9, 11, 17, // tri1 + 15, 16, 17, // tri2 + 18, 4, 7 // tri3 + ), + gsSPNTriangles_5b(19, 18, 7, // tri0 + 14, 13, 6, // tri1 + 3, 14, 6, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(21, 23, 22, // tri0 + 20, 22, 24, // tri1 + 20, 24, 25, // tri2 + 20, 25, 26 // tri3 + ), + gsSPNTriangles_5b(27, 26, 25, // tri0 + 28, 29, 30, // tri1 + 29, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_post_office_v[38], 32, 0), + gsSPNTrianglesInit_5b(34, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 1, 0 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 5, 9, // tri2 + 5, 7, 9 // tri3 + ), + gsSPNTriangles_5b(7, 10, 9, // tri0 + 5, 11, 6, // tri1 + 11, 12, 6, // tri2 + 5, 13, 11 // tri3 + ), + gsSPNTriangles_5b(13, 12, 11, // tri0 + 14, 15, 16, // tri1 + 17, 14, 16, // tri2 + 16, 15, 18 // tri3 + ), + gsSPNTriangles_5b(17, 16, 18, // tri0 + 19, 12, 20, // tri1 + 17, 19, 20, // tri2 + 13, 17, 20 // tri3 + ), + gsSPNTriangles_5b(13, 20, 12, // tri0 + 17, 21, 19, // tri1 + 17, 22, 21, // tri2 + 17, 18, 22 // tri3 + ), + gsSPNTriangles_5b(23, 3, 2, // tri0 + 23, 2, 24, // tri1 + 23, 24, 25, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b(26, 23, 27, // tri0 + 23, 25, 27, // tri1 + 25, 28, 27, // tri2 + 23, 29, 3 // tri3 + ), + gsSPNTriangles_5b(29, 30, 3, // tri0 + 23, 31, 29, // tri1 + 31, 30, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, yubin_floor_pal), + gsDPLoadTextureBlock_4b_Dolphin(yubin_floor01_tex, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_MIRROR, 0, 0), + gsSPVertex(&grd_post_office_v[70], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 2, 6, // tri0 + 5, 7, 2, // tri1 + 4, 6, 8, // tri2 + 9, 4, 10 // tri3 + ), + gsSPNTriangles_5b(4, 8, 10, // tri0 + 11, 12, 13, // tri1 + 3, 14, 15, // tri2 + 16, 3, 0 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 17, 20, 18, // tri1 + 20, 21, 18, // tri2 + 21, 22, 18 // tri3 + ), + gsSPNTriangles_5b(23, 20, 17, // tri0 + 21, 20, 24, // tri1 + 25, 17, 19, // tri2 + 26, 25, 27 // tri3 + ), + gsSPNTriangles_5b(26, 17, 25, // tri0 + 26, 23, 17, // tri1 + 21, 28, 22, // tri2 + 29, 30, 31 // tri3 + ), + gsSPNTriangles_5b(21, 24, 31, // tri0 + 30, 21, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(yubin_floor02_tex, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_MIRROR, 0, 0), + gsSPVertex(&grd_post_office_v[102], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 5 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 4, 8, 7, // tri1 + 9, 0, 2, // tri2 + 9, 8, 0 // tri3 + ), + gsSPNTriangles_5b(9, 10, 8, // tri0 + 9, 11, 10, // tri1 + 12, 8, 10, // tri2 + 13, 12, 10 // tri3 + ), + gsSPNTriangles_5b(13, 10, 14, // tri0 + 11, 15, 10, // tri1 + 13, 14, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(17, 20, 18, // tri0 + 21, 22, 23, // tri1 + 22, 19, 23, // tri2 + 19, 18, 23 // tri3 + ), + gsSPNTriangles_5b(21, 24, 22, // tri0 + 21, 25, 24, // tri1 + 21, 26, 25, // tri2 + 27, 28, 25 // tri3 + ), + gsSPNTriangles_5b(29, 30, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_post_office_v[133], 3, 0), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, yubin_k_pal), + gsDPLoadTextureBlock_4b_Dolphin(yuibn_kaunta03_tex, G_IM_FMT_CI, 32, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&grd_post_office_v[136], 28, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(yuibn_desk01_tex, G_IM_FMT_CI, 32, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 4, 5, 6, // tri0 + 4, 6, 7, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(yuibn_kaunta02_tex, G_IM_FMT_CI, 32, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 8, 9, 10, // tri0 + 8, 10, 11, // tri1 + 12, 13, 14 // tri2 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(yuibn_kaunta01_tex, G_IM_FMT_CI, 32, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 16, 17, 18, // tri0 + 16, 18, 19, // tri1 + 20, 21, 22 // tri2 + ), + gsSPNTriangles_5b(20, 22, 23, // tri0 + 24, 25, 26, // tri1 + 24, 26, 27, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, zzzyubin_tree_pal), + gsDPLoadTextureBlock_4b_Dolphin(yubin_tree4_tex, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&grd_post_office_v[164], 14, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 3, 4 // tri2 + ), + gsSPNTriangles_5b(0, 4, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(yubin_tree3_tex, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 6, 7, 8, // tri0 + 6, 8, 9, // tri1 + 7, 10, 11 // tri2 + ), + gsSPNTriangles_5b(7, 11, 8, // tri0 + 10, 12, 13, // tri1 + 10, 13, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, yubin_hakari_pal), + gsDPLoadTextureBlock_4b_Dolphin(yubin_hakari01_tex, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&grd_post_office_v[178], 7, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 2, 1 // tri2 + ), + gsSPNTriangles_5b(4, 1, 5, // tri0 + 6, 3, 2, // tri1 + 6, 2, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, yubin_us_card_pal), + gsDPLoadTextureBlock_4b_Dolphin(yubin_us_card2_tex, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&grd_post_office_v[185], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 0, 0 // tri2 + ), + gsDPSetCombineMode(G_CC_PRIMITIVE, G_CC_PASS2), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsSPVertex(&grd_post_office_v[189], 8, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIM_LOD_FRAC, 0, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 120, 10, 0, 30, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_DECAL2), + gsDPLoadTextureBlock_4b_Dolphin(rom_yubinkyoku_shadow_tex, G_IM_FMT_I, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&grd_post_office_v[201], 8, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_yubinkyoku_shede_tex, G_IM_FMT_I, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&grd_post_office_v[209], 8, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c1_1/grd_s_c1_1.c b/src/data/field/bg/acre/grd_s_c1_1/grd_s_c1_1.c new file mode 100644 index 00000000..45530f34 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c1_1/grd_s_c1_1.c @@ -0,0 +1,297 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c1_1_v[] = { +#include "assets/field/bg/grd_s_c1_1_v.inc" +}; + +extern Gfx grd_s_c1_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c1_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c1_1_v[201], 29, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 4, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 13, 11, 14 // tri3 + ), + gsSPNTriangles_5b( + 0, 15, 16, // tri0 + 17, 18, 19, // tri1 + 18, 3, 20, // tri2 + 3, 1, 20 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 23, // tri0 + 24, 21, 23, // tri1 + 15, 24, 25, // tri2 + 21, 26, 22 // tri3 + ), + gsSPNTriangles_5b( + 26, 27, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_1_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 7, 9, 5, // tri1 + 5, 4, 8, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 14, 7, 15, // tri1 + 7, 16, 15, // tri2 + 16, 17, 15 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 20, // tri0 + 19, 21, 20, // tri1 + 22, 23, 24, // tri2 + 23, 25, 24 // tri3 + ), + gsSPNTriangles_5b( + 26, 10, 12, // tri0 + 27, 28, 29, // tri1 + 28, 30, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_1_v[31], 32, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 2, 3, // tri0 + 8, 9, 10, // tri1 + 9, 1, 10, // tri2 + 1, 0, 10 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 12, 14, 13, // tri1 + 15, 16, 4, // tri2 + 16, 5, 4 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 19, // tri0 + 20, 21, 22, // tri1 + 21, 23, 22, // tri2 + 24, 17, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 27, 28, // tri0 + 27, 29, 28, // tri1 + 30, 31, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_1_v[63], 26, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 11, 9, // tri2 + 12, 13, 4 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 17, 18, 19, // tri1 + 20, 21, 8, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b( + 23, 20, 24, // tri0 + 25, 23, 22, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_1_v[89], 31, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 11, 10, 6, // tri1 + 12, 9, 8, // tri2 + 13, 2, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 14, 16, // tri0 + 17, 16, 18, // tri1 + 3, 1, 0, // tri2 + 19, 7, 4 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 22, // tri0 + 23, 20, 24, // tri1 + 21, 25, 26, // tri2 + 25, 27, 28 // tri3 + ), + gsSPNTriangles_5b( + 29, 23, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_1_v[120], 32, 0), + gsSPNTrianglesInit_5b( + 33, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 4, // tri0 + 1, 4, 2, // tri1 + 4, 6, 2, // tri2 + 6, 7, 2 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 8, 11, 9, // tri1 + 9, 12, 10, // tri2 + 13, 12, 14 // tri3 + ), + gsSPNTriangles_5b( + 12, 9, 14, // tri0 + 9, 11, 14, // tri1 + 11, 15, 14, // tri2 + 12, 13, 16 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 19, // tri0 + 17, 20, 18, // tri1 + 20, 21, 18, // tri2 + 22, 0, 23 // tri3 + ), + gsSPNTriangles_5b( + 22, 1, 0, // tri0 + 24, 12, 25, // tri1 + 24, 10, 12, // tri2 + 8, 26, 11 // tri3 + ), + gsSPNTriangles_5b( + 26, 27, 11, // tri0 + 26, 22, 27, // tri1 + 26, 28, 22, // tri2 + 28, 1, 22 // tri3 + ), + gsSPNTriangles_5b( + 28, 3, 1, // tri0 + 5, 29, 6, // tri1 + 5, 30, 29, // tri2 + 30, 17, 29 // tri3 + ), + gsSPNTriangles_5b( + 30, 20, 17, // tri0 + 30, 31, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_1_v[152], 20, 0), + gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 7, 10, 8, // tri1 + 10, 11, 8, // tri2 + 11, 12, 8 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 14, 16, 15, // tri1 + 14, 17, 16, // tri2 + 2, 3, 18 // tri3 + ), + gsSPNTriangles_5b( + 3, 19, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_1_v[172], 29, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 8, 10, 11, // tri1 + 5, 12, 13, // tri2 + 12, 7, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 21, 18, 22, // tri2 + 16, 3, 23 // tri3 + ), + gsSPNTriangles_5b( + 3, 1, 23, // tri0 + 21, 22, 24, // tri1 + 25, 21, 24, // tri2 + 26, 25, 27 // tri3 + ), + gsSPNTriangles_5b( + 0, 26, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c1_2/grd_s_c1_2.c b/src/data/field/bg/acre/grd_s_c1_2/grd_s_c1_2.c new file mode 100644 index 00000000..8ba43097 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c1_2/grd_s_c1_2.c @@ -0,0 +1,330 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c1_2_v[] = { +#include "assets/field/bg/grd_s_c1_2_v.inc" +}; + +extern Gfx grd_s_c1_2_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c1_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c1_2_v[222], 15, 0), + gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 1, 7, 8, // tri0 + 7, 9, 8, // tri1 + 9, 10, 11, // tri2 + 10, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 12, 14, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_2_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 8, 7, 5, // tri1 + 5, 3, 2, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 9, 12, 10, // tri0 + 10, 12, 13, // tri1 + 12, 14, 13, // tri2 + 14, 15, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 16, 15, // tri0 + 17, 18, 19, // tri1 + 20, 21, 22, // tri2 + 17, 19, 23 // tri3 + ), + gsSPNTriangles_5b( + 19, 24, 23, // tri0 + 25, 26, 27, // tri1 + 26, 28, 27, // tri2 + 26, 29, 28 // tri3 + ), + gsSPVertex(&grd_s_c1_2_v[30], 32, 0), + gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 2, // tri0 + 6, 7, 8, // tri1 + 9, 10, 11, // tri2 + 9, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 9, 13, 12, // tri0 + 14, 15, 16, // tri1 + 17, 18, 19, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 9, 19, // tri0 + 20, 21, 9, // tri1 + 21, 22, 9, // tri2 + 22, 13, 9 // tri3 + ), + gsSPNTriangles_5b( + 19, 23, 17, // tri0 + 24, 11, 25, // tri1 + 26, 27, 28, // tri2 + 27, 29, 28 // tri3 + ), + gsSPNTriangles_5b( + 28, 29, 30, // tri0 + 30, 29, 8, // tri1 + 31, 30, 8, // tri2 + 5, 31, 8 // tri3 + ), + gsSPVertex(&grd_s_c1_2_v[62], 15, 0), + gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 0, // tri0 + 7, 8, 9, // tri1 + 7, 10, 8, // tri2 + 11, 10, 7 // tri3 + ), + gsSPNTriangles_5b( + 11, 6, 12, // tri0 + 10, 11, 12, // tri1 + 6, 5, 12, // tri2 + 13, 12, 5 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_2_v[77], 32, 0), + gsSPNTrianglesInit_5b( + 30, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 3, 8, 9, // tri1 + 3, 4, 8, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 9, 8, 10, // tri0 + 12, 13, 14, // tri1 + 12, 15, 13, // tri2 + 11, 10, 12 // tri3 + ), + gsSPNTriangles_5b( + 10, 15, 12, // tri0 + 14, 13, 16, // tri1 + 13, 17, 16, // tri2 + 16, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 19, 18, 20, // tri1 + 18, 21, 20, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 21, 7, 22, // tri0 + 22, 7, 6, // tri1 + 23, 24, 25, // tri2 + 23, 5, 24 // tri3 + ), + gsSPNTriangles_5b( + 6, 5, 23, // tri0 + 25, 24, 26, // tri1 + 24, 27, 26, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b( + 27, 29, 28, // tri0 + 28, 30, 31, // tri1 + 28, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_2_v[109], 28, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 2, 1, 4 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 4, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 5, 14, 4, // tri1 + 7, 6, 14, // tri2 + 14, 6, 4 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 17, 16, 9, // tri1 + 15, 18, 16, // tri2 + 16, 8, 9 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 16, // tri0 + 20, 21, 22, // tri1 + 22, 21, 19, // tri2 + 19, 18, 22 // tri3 + ), + gsSPNTriangles_5b( + 20, 23, 21, // tri0 + 20, 24, 23, // tri1 + 24, 25, 23, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 10, 25, // tri0 + 26, 27, 10, // tri1 + 11, 10, 27, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_2_v[137], 32, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 3, 4, 0 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 6, // tri0 + 1, 7, 8, // tri1 + 9, 6, 10, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 11, 15, // tri0 + 16, 14, 15, // tri1 + 15, 9, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 18, // tri0 + 22, 23, 21, // tri1 + 22, 24, 23, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 26, // tri0 + 27, 29, 28, // tri1 + 29, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_2_v[169], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 9, 6, 11, // tri1 + 12, 13, 14, // tri2 + 15, 12, 16 // tri3 + ), + gsSPNTriangles_5b( + 13, 17, 18, // tri0 + 17, 8, 19, // tri1 + 20, 21, 22, // tri2 + 21, 15, 23 // tri3 + ), + gsSPNTriangles_5b( + 9, 11, 10, // tri0 + 15, 16, 23, // tri1 + 24, 25, 26, // tri2 + 27, 24, 28 // tri3 + ), + gsSPNTriangles_5b( + 29, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_2_v[201], 6, 0), + gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_2_v[207], 15, 0), + gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 7, 4, 8, // tri1 + 9, 10, 11, // tri2 + 10, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 12, 6, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c1_3/grd_s_c1_3.c b/src/data/field/bg/acre/grd_s_c1_3/grd_s_c1_3.c new file mode 100644 index 00000000..0de7b476 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c1_3/grd_s_c1_3.c @@ -0,0 +1,312 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c1_3_v[] = { +#include "assets/field/bg/grd_s_c1_3_v.inc" +}; + +extern Gfx grd_s_c1_3_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c1_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c1_3_v[203], 23, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 3, 7, // tri0 + 8, 6, 9, // tri1 + 10, 8, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 12, 16, // tri0 + 17, 15, 18, // tri1 + 19, 17, 20, // tri2 + 21, 19, 22 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_3_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 29, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 0, // tri0 + 0, 2, 5, // tri1 + 5, 7, 6, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b( + 9, 11, 10, // tri0 + 9, 12, 11, // tri1 + 8, 13, 9, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 15, 4, 16, // tri0 + 0, 17, 1, // tri1 + 1, 16, 4, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 18, 21, 19, // tri0 + 21, 22, 19, // tri1 + 21, 23, 22, // tri2 + 21, 24, 23 // tri3 + ), + gsSPNTriangles_5b( + 19, 14, 20, // tri0 + 16, 20, 14, // tri1 + 21, 18, 17, // tri2 + 10, 25, 26 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 25, // tri0 + 11, 27, 25, // tri1 + 27, 28, 25, // tri2 + 28, 29, 25 // tri3 + ), + gsSPNTriangles_5b( + 29, 30, 25, // tri0 + 30, 26, 25, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_3_v[31], 32, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 1, 6, // tri0 + 1, 4, 6, // tri1 + 7, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 9, // tri0 + 12, 13, 11, // tri1 + 12, 14, 13, // tri2 + 13, 9, 11 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 16, 15, 18, // tri1 + 19, 20, 21, // tri2 + 22, 23, 21 // tri3 + ), + gsSPNTriangles_5b( + 24, 10, 8, // tri0 + 25, 26, 27, // tri1 + 26, 28, 27, // tri2 + 18, 29, 16 // tri3 + ), + gsSPNTriangles_5b( + 29, 30, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_3_v[62], 12, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b( + 3, 7, 6, // tri0 + 6, 8, 4, // tri1 + 9, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_3_v[74], 32, 0), + gsSPNTrianglesInit_5b( + 39, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 2, // tri0 + 1, 6, 3, // tri1 + 6, 7, 3, // tri2 + 7, 8, 3 // tri3 + ), + gsSPNTriangles_5b( + 8, 4, 3, // tri0 + 6, 9, 7, // tri1 + 6, 10, 9, // tri2 + 9, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 9, 11, 8, // tri0 + 10, 12, 9, // tri1 + 12, 13, 9, // tri2 + 13, 14, 9 // tri3 + ), + gsSPNTriangles_5b( + 14, 11, 9, // tri0 + 12, 15, 13, // tri1 + 12, 16, 15, // tri2 + 15, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 14, // tri0 + 16, 18, 15, // tri1 + 18, 19, 15, // tri2 + 19, 20, 15 // tri3 + ), + gsSPNTriangles_5b( + 20, 17, 15, // tri0 + 18, 21, 19, // tri1 + 18, 22, 21, // tri2 + 21, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 21, 23, 20, // tri0 + 22, 24, 21, // tri1 + 24, 25, 21, // tri2 + 25, 26, 21 // tri3 + ), + gsSPNTriangles_5b( + 26, 23, 21, // tri0 + 24, 27, 25, // tri1 + 24, 28, 27, // tri2 + 28, 29, 27 // tri3 + ), + gsSPNTriangles_5b( + 29, 30, 27, // tri0 + 30, 26, 27, // tri1 + 26, 25, 27, // tri2 + 28, 31, 29 // tri3 + ), + gsSPVertex(&grd_s_c1_3_v[106], 5, 0), + gsSPNTrianglesInit_5b( + 3, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_3_v[111], 32, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 14, 15, 16, // tri2 + 17, 0, 18 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 15, // tri0 + 19, 6, 20, // tri1 + 4, 14, 16, // tri2 + 11, 21, 12 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 22, // tri0 + 21, 19, 22, // tri1 + 9, 11, 13, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 27, 28, // tri0 + 28, 29, 23, // tri1 + 30, 31, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_3_v[143], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 5, 8, 9, // tri0 + 8, 10, 11, // tri1 + 8, 11, 9, // tri2 + 10, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 12, 14, 15, // tri0 + 14, 16, 17, // tri1 + 16, 18, 19, // tri2 + 16, 19, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 20, 21, // tri0 + 22, 23, 24, // tri1 + 25, 26, 23, // tri2 + 27, 28, 26 // tri3 + ), + gsSPNTriangles_5b( + 28, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_3_v[174], 6, 0), + gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_3_v[180], 23, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 8, 3, 10, // tri1 + 11, 12, 13, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 16, // tri0 + 17, 18, 19, // tri1 + 12, 20, 21, // tri2 + 20, 14, 22 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c1_4/grd_s_c1_4.c b/src/data/field/bg/acre/grd_s_c1_4/grd_s_c1_4.c new file mode 100644 index 00000000..f9c8513e --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c1_4/grd_s_c1_4.c @@ -0,0 +1,342 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c1_4_v[] = { +#include "assets/field/bg/grd_s_c1_4_v.inc" +}; + +extern Gfx grd_s_c1_4_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c1_4_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c1_4_v[246], 14, 0), + gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 6, 3, 7, // tri0 + 8, 5, 9, // tri1 + 10, 8, 11, // tri2 + 12, 10, 13 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_4_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 7, 8, 9, // tri1 + 7, 10, 8, // tri2 + 8, 11, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 8, // tri0 + 13, 14, 15, // tri1 + 14, 16, 15, // tri2 + 13, 17, 14 // tri3 + ), + gsSPNTriangles_5b( + 6, 18, 4, // tri0 + 6, 19, 18, // tri1 + 5, 10, 7, // tri2 + 2, 20, 0 // tri3 + ), + gsSPNTriangles_5b( + 2, 21, 20, // tri0 + 22, 23, 24, // tri1 + 23, 25, 24, // tri2 + 25, 26, 24 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 29, // tri0 + 28, 30, 29, // tri1 + 19, 31, 18, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_4_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 7, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 10, // tri0 + 11, 13, 12, // tri1 + 12, 14, 10, // tri2 + 0, 15, 1 // tri3 + ), + gsSPNTriangles_5b( + 16, 15, 0, // tri0 + 17, 18, 19, // tri1 + 20, 21, 22, // tri2 + 23, 20, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 20, // tri0 + 25, 26, 27, // tri1 + 26, 28, 27, // tri2 + 29, 30, 28 // tri3 + ), + gsSPNTriangles_5b( + 30, 27, 28, // tri0 + 30, 31, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_4_v[64], 32, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 8, 10, 9, // tri1 + 11, 12, 4, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 19, 18, 20, // tri1 + 21, 22, 23, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 29, // tri0 + 30, 29, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_4_v[96], 3, 0), + gsSPNTrianglesInit_5b( + 1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_4_v[99], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 5, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 10, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 8, // tri0 + 7, 16, 14, // tri1 + 3, 17, 18, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 21, 23, // tri0 + 24, 2, 25, // tri1 + 26, 25, 27, // tri2 + 28, 27, 20 // tri3 + ), + gsSPNTriangles_5b( + 29, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_4_v[131], 21, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 8, // tri0 + 1, 8, 2, // tri1 + 9, 0, 10, // tri2 + 6, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 16, 17, 14, // tri1 + 18, 19, 20, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 15, // tri0 + 13, 16, 14, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_4_v[152], 32, 0), + gsSPNTrianglesInit_5b( + 29, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 3, 1, // tri0 + 2, 6, 0, // tri1 + 7, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 8, 11, 10, // tri0 + 12, 9, 13, // tri1 + 9, 14, 13, // tri2 + 9, 10, 14 // tri3 + ), + gsSPNTriangles_5b( + 12, 7, 9, // tri0 + 12, 15, 7, // tri1 + 16, 17, 18, // tri2 + 16, 19, 17 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 17, // tri0 + 21, 20, 19, // tri1 + 21, 22, 20, // tri2 + 21, 23, 22 // tri3 + ), + gsSPNTriangles_5b( + 24, 25, 18, // tri0 + 24, 26, 25, // tri1 + 16, 18, 25, // tri2 + 26, 24, 12 // tri3 + ), + gsSPNTriangles_5b( + 24, 15, 12, // tri0 + 27, 0, 6, // tri1 + 8, 28, 11, // tri2 + 29, 30, 28 // tri3 + ), + gsSPNTriangles_5b( + 29, 31, 30, // tri0 + 30, 11, 28, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_4_v[184], 32, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 3, 6, 5, // tri1 + 7, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 8, 11, 10, // tri0 + 12, 13, 14, // tri1 + 12, 15, 13, // tri2 + 13, 16, 14 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 16, // tri0 + 17, 19, 18, // tri1 + 13, 17, 16, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 20, 23, 21, // tri0 + 23, 24, 21, // tri1 + 24, 25, 21, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b( + 24, 27, 26, // tri0 + 27, 28, 26, // tri1 + 28, 29, 26, // tri2 + 28, 0, 29 // tri3 + ), + gsSPNTriangles_5b( + 28, 30, 0, // tri0 + 30, 31, 0, // tri1 + 31, 1, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_4_v[216], 16, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 6, 9, 8, // tri0 + 9, 10, 8, // tri1 + 10, 11, 8, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 13, 12, // tri0 + 13, 14, 12, // tri1 + 14, 15, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_4_v[232], 14, 0), + gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 1, 6, 9, // tri1 + 10, 11, 12, // tri2 + 11, 3, 13 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c1_5/grd_s_c1_5.c b/src/data/field/bg/acre/grd_s_c1_5/grd_s_c1_5.c new file mode 100644 index 00000000..b5c291c7 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c1_5/grd_s_c1_5.c @@ -0,0 +1,283 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c1_5_v[] = { +#include "assets/field/bg/grd_s_c1_5_v.inc" +}; + +extern Gfx grd_s_c1_5_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c1_5_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c1_5_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 8, 10, 9, // tri1 + 11, 6, 12, // tri2 + 11, 13, 6 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 6, // tri0 + 14, 5, 6, // tri1 + 5, 15, 3, // tri2 + 16, 17, 9 // tri3 + ), + gsSPNTriangles_5b( + 17, 7, 9, // tri0 + 17, 18, 7, // tri1 + 18, 19, 7, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 20, 23, 21, // tri0 + 20, 24, 23, // tri1 + 25, 22, 26, // tri2 + 24, 27, 28 // tri3 + ), + gsSPNTriangles_5b( + 24, 29, 27, // tri0 + 29, 30, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_5_v[31], 27, 0), + gsSPNTrianglesInit_5b( + 25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 4, // tri0 + 7, 8, 4, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 11, // tri0 + 12, 14, 13, // tri1 + 12, 15, 14, // tri2 + 13, 14, 16 // tri3 + ), + gsSPNTriangles_5b( + 17, 13, 16, // tri0 + 18, 19, 20, // tri1 + 20, 21, 18, // tri2 + 20, 2, 21 // tri3 + ), + gsSPNTriangles_5b( + 2, 3, 21, // tri0 + 21, 3, 22, // tri1 + 22, 23, 24, // tri2 + 22, 3, 23 // tri3 + ), + gsSPNTriangles_5b( + 23, 25, 24, // tri0 + 24, 25, 26, // tri1 + 25, 16, 26, // tri2 + 16, 14, 26 // tri3 + ), + gsSPNTriangles_5b( + 26, 19, 18, // tri0 + 14, 19, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_5_v[58], 32, 0), + gsSPNTrianglesInit_5b( + 30, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 8, 9, 10, // tri1 + 10, 11, 12, // tri2 + 11, 13, 12 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 13, // tri0 + 14, 16, 15, // tri1 + 16, 17, 18, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 22, // tri0 + 22, 23, 24, // tri1 + 24, 25, 26, // tri2 + 25, 27, 26 // tri3 + ), + gsSPNTriangles_5b( + 25, 28, 27, // tri0 + 24, 23, 25, // tri1 + 22, 21, 23, // tri2 + 20, 29, 21 // tri3 + ), + gsSPNTriangles_5b( + 20, 19, 29, // tri0 + 17, 19, 18, // tri1 + 16, 14, 17, // tri2 + 13, 11, 14 // tri3 + ), + gsSPNTriangles_5b( + 10, 9, 11, // tri0 + 8, 7, 9, // tri1 + 6, 5, 7, // tri2 + 4, 3, 5 // tri3 + ), + gsSPNTriangles_5b( + 2, 1, 3, // tri0 + 4, 30, 2, // tri1 + 8, 31, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_5_v[90], 27, 0), + gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 4, // tri0 + 8, 9, 6, // tri1 + 8, 10, 9, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 11, // tri0 + 15, 16, 17, // tri1 + 17, 18, 19, // tri2 + 17, 16, 18 // tri3 + ), + gsSPNTriangles_5b( + 18, 14, 19, // tri0 + 14, 13, 19, // tri1 + 11, 14, 12, // tri2 + 10, 12, 9 // tri3 + ), + gsSPNTriangles_5b( + 6, 9, 7, // tri0 + 4, 7, 5, // tri1 + 3, 5, 1, // tri2 + 2, 1, 20 // tri3 + ), + gsSPNTriangles_5b( + 21, 20, 22, // tri0 + 22, 20, 23, // tri1 + 24, 25, 26, // tri2 + 24, 23, 25 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_5_v[117], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 8, 10, 9, // tri1 + 11, 12, 13, // tri2 + 11, 14, 12 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 18, 15, 19, // tri1 + 18, 19, 20, // tri2 + 20, 21, 18 // tri3 + ), + gsSPNTriangles_5b( + 20, 22, 21, // tri0 + 22, 23, 24, // tri1 + 24, 25, 26, // tri2 + 26, 27, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 28, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_5_v[147], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 1, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 10, 11, 9, // tri2 + 12, 13, 11 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 13, // tri0 + 16, 17, 18, // tri1 + 19, 16, 20, // tri2 + 21, 19, 22 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 23, // tri0 + 24, 25, 23, // tri1 + 26, 25, 24, // tri2 + 27, 26, 28 // tri3 + ), + gsSPNTriangles_5b( + 29, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_5_v[179], 26, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 3, // tri0 + 6, 5, 7, // tri1 + 8, 9, 10, // tri2 + 9, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 14, // tri0 + 15, 16, 17, // tri1 + 18, 15, 19, // tri2 + 20, 18, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 24, // tri0 + 16, 22, 25, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c1_r1_1/grd_s_c1_r1_1.c b/src/data/field/bg/acre/grd_s_c1_r1_1/grd_s_c1_r1_1.c new file mode 100644 index 00000000..821c22ab --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c1_r1_1/grd_s_c1_r1_1.c @@ -0,0 +1,375 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c1_r1_1_v[] = { +#include "assets/field/bg/grd_s_c1_r1_1_v.inc" +}; + +extern Gfx grd_s_c1_r1_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c1_r1_1_v[256], 24, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 10, 6, 11 // tri3 + ), + gsSPNTriangles_5b(6, 8, 11, // tri0 + 12, 11, 13, // tri1 + 12, 10, 11, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b(13, 15, 14, // tri0 + 15, 16, 14, // tri1 + 16, 17, 14, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b(16, 19, 18, // tri0 + 5, 20, 21, // tri1 + 5, 21, 4, // tri2 + 20, 22, 23 // tri3 + ), + gsSPNTriangles_5b(20, 23, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c1_r1_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c1_r1_1_v[280], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 3, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 8, // tri0 + 7, 9, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_r1_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 0, 12, 1 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 14, 16, 15, // tri1 + 16, 17, 15, // tri2 + 17, 3, 15 // tri3 + ), + gsSPNTriangles_5b(3, 1, 15, // tri0 + 18, 19, 12, // tri1 + 19, 1, 12, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b(18, 21, 20, // tri0 + 21, 13, 20, // tri1 + 18, 22, 21, // tri2 + 23, 24, 11 // tri3 + ), + gsSPNTriangles_5b(24, 25, 11, // tri0 + 25, 10, 11, // tri1 + 26, 27, 28, // tri2 + 26, 29, 27 // tri3 + ), + gsSPNTriangles_5b(26, 30, 29, // tri0 + 30, 31, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r1_1_v[32], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(6, 1, 5, // tri0 + 6, 7, 1, // tri1 + 7, 2, 1, // tri2 + 3, 8, 4 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 10, 12, 11, // tri1 + 9, 13, 10, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(14, 17, 15, // tri0 + 17, 18, 15, // tri1 + 19, 20, 21, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b(20, 23, 22, // tri0 + 23, 24, 22, // tri1 + 23, 25, 24, // tri2 + 25, 26, 24 // tri3 + ), + gsSPNTriangles_5b(22, 27, 21, // tri0 + 27, 28, 21, // tri1 + 28, 29, 30, // tri2 + 29, 31, 30 // tri3 + ), + gsSPNTriangles_5b(29, 16, 31, // tri0 + 30, 21, 28, // tri1 + 16, 15, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r1_1_v[64], 9, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 7, 5, // tri1 + 5, 3, 8, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_r1_1_v[73], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 2, // tri0 + 7, 8, 9, // tri1 + 8, 10, 9, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(12, 14, 13, // tri0 + 15, 14, 12, // tri1 + 15, 16, 14, // tri2 + 17, 16, 15 // tri3 + ), + gsSPNTriangles_5b(17, 18, 16, // tri0 + 18, 19, 16, // tri1 + 20, 19, 18, // tri2 + 20, 21, 19 // tri3 + ), + gsSPNTriangles_5b(22, 21, 20, // tri0 + 22, 23, 21, // tri1 + 22, 24, 23, // tri2 + 25, 26, 27 // tri3 + ), + gsSPNTriangles_5b(25, 27, 28, // tri0 + 27, 26, 29, // tri1 + 7, 9, 29, // tri2 + 29, 26, 7 // tri3 + ), + gsSPNTriangles_5b(8, 30, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r1_1_v[104], 32, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 0, 5, // tri0 + 6, 5, 7, // tri1 + 6, 7, 8, // tri2 + 7, 9, 8 // tri3 + ), + gsSPNTriangles_5b(10, 11, 9, // tri0 + 9, 7, 10, // tri1 + 10, 12, 11, // tri2 + 10, 13, 12 // tri3 + ), + gsSPNTriangles_5b(13, 14, 12, // tri0 + 15, 16, 14, // tri1 + 17, 18, 16, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b(21, 22, 20, // tri0 + 23, 24, 22, // tri1 + 25, 26, 24, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b(26, 25, 27, // tri0 + 24, 23, 25, // tri1 + 22, 21, 23, // tri2 + 20, 19, 21 // tri3 + ), + gsSPNTriangles_5b(18, 17, 19, // tri0 + 16, 15, 17, // tri1 + 14, 13, 15, // tri2 + 29, 30, 31 // tri3 + ), + gsSPVertex(&grd_s_c1_r1_1_v[136], 21, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b(3, 6, 2, // tri0 + 3, 5, 6, // tri1 + 7, 8, 9, // tri2 + 9, 8, 4 // tri3 + ), + gsSPNTriangles_5b(5, 4, 8, // tri0 + 7, 10, 8, // tri1 + 10, 11, 8, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 13, // tri0 + 13, 16, 14, // tri1 + 17, 18, 15, // tri2 + 19, 20, 17 // tri3 + ), + gsSPNTriangles_5b(17, 20, 18, // tri0 + 15, 18, 16, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_r1_1_v[157], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 2, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 4, // tri0 + 5, 7, 6, // tri1 + 7, 8, 9, // tri2 + 7, 5, 8 // tri3 + ), + gsSPNTriangles_5b(4, 2, 5, // tri0 + 10, 11, 9, // tri1 + 9, 8, 10, // tri2 + 12, 13, 11 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 15, 14, 16, // tri1 + 14, 17, 16, // tri2 + 17, 18, 16 // tri3 + ), + gsSPNTriangles_5b(19, 20, 18, // tri0 + 21, 22, 20, // tri1 + 21, 23, 22, // tri2 + 20, 19, 21 // tri3 + ), + gsSPNTriangles_5b(24, 25, 23, // tri0 + 24, 26, 25, // tri1 + 24, 27, 26, // tri2 + 23, 21, 24 // tri3 + ), + gsSPNTriangles_5b(28, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r1_1_v[188], 14, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b(4, 1, 0, // tri0 + 1, 6, 2, // tri1 + 7, 8, 9, // tri2 + 8, 10, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 11, 10, 12, // tri1 + 7, 10, 8, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_r1_1_v[202], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 7, 4, // tri0 + 9, 10, 6, // tri1 + 11, 12, 10, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 14, // tri0 + 18, 19, 20, // tri1 + 21, 20, 17, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b(25, 26, 23, // tri0 + 27, 24, 28, // tri1 + 29, 28, 19, // tri2 + 17, 16, 21 // tri3 + ), + gsSPNTriangles_5b(24, 27, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r1_1_v[232], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 4, 6, // tri0 + 9, 7, 10, // tri1 + 11, 10, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_r1_1_v[245], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 3, 8, // tri0 + 9, 5, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c1_r1_1/grd_s_c1_r1_1_evw_anime.c b/src/data/field/bg/acre/grd_s_c1_r1_1/grd_s_c1_r1_1_evw_anime.c new file mode 100644 index 00000000..1781503d --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c1_r1_1/grd_s_c1_r1_1_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c1_r1_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c1_r1_1_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_c1_r1_1_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_c1_r1_2/grd_s_c1_r1_2.c b/src/data/field/bg/acre/grd_s_c1_r1_2/grd_s_c1_r1_2.c new file mode 100644 index 00000000..a2a7e8ce --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c1_r1_2/grd_s_c1_r1_2.c @@ -0,0 +1,344 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c1_r1_2_v[] = { +#include "assets/field/bg/grd_s_c1_r1_2_v.inc" +}; + +extern Gfx grd_s_c1_r1_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c1_r1_2_v[254], 20, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 1, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 7, 10, 8 // tri3 + ), + gsSPNTriangles_5b(7, 11, 10, // tri0 + 11, 2, 10, // tri1 + 11, 0, 2, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(13, 15, 14, // tri0 + 13, 16, 15, // tri1 + 16, 17, 15, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b(16, 19, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c1_r1_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c1_r1_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 0, 2, 4 // tri2 + ), + gsSPNTriangles_5b(4, 5, 0, // tri0 + 5, 6, 0, // tri1 + 6, 7, 0, // tri2 + 7, 8, 0 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 10, 12, 11, // tri1 + 13, 14, 15, // tri2 + 15, 14, 8 // tri3 + ), + gsSPNTriangles_5b(16, 17, 9, // tri0 + 17, 18, 9, // tri1 + 9, 11, 16, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(22, 19, 23, // tri0 + 19, 21, 23, // tri1 + 21, 24, 23, // tri2 + 21, 25, 24 // tri3 + ), + gsSPNTriangles_5b(26, 27, 28, // tri0 + 26, 28, 25, // tri1 + 29, 27, 26, // tri2 + 29, 30, 27 // tri3 + ), + gsSPNTriangles_5b(30, 29, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r1_2_v[32], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 5, 4 // tri2 + ), + gsSPNTriangles_5b(4, 7, 6, // tri0 + 8, 6, 7, // tri1 + 8, 7, 9, // tri2 + 10, 11, 9 // tri3 + ), + gsSPNTriangles_5b(11, 12, 9, // tri0 + 13, 14, 15, // tri1 + 13, 16, 14, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(20, 13, 21, // tri0 + 15, 22, 13, // tri1 + 23, 2, 24, // tri2 + 1, 25, 2 // tri3 + ), + gsSPNTriangles_5b(1, 26, 25, // tri0 + 4, 3, 26, // tri1 + 27, 28, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r1_2_v[62], 17, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b(3, 6, 5, // tri0 + 5, 7, 4, // tri1 + 1, 4, 2, // tri2 + 4, 8, 2 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 9, 8, 10, // tri1 + 12, 13, 14, // tri2 + 13, 15, 14 // tri3 + ), + gsSPNTriangles_5b(15, 13, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_r1_2_v[79], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 7, 9, 10, // tri1 + 9, 11, 12, // tri2 + 11, 13, 12 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 14, 16, 15, // tri1 + 17, 18, 19, // tri2 + 20, 21, 18 // tri3 + ), + gsSPNTriangles_5b(22, 23, 21, // tri0 + 24, 25, 23, // tri1 + 24, 26, 25, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b(27, 2, 28, // tri0 + 3, 29, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r1_2_v[110], 12, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 8, 9, 10, // tri2 + 9, 11, 10 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_r1_2_v[122], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 12, 14, 13, // tri1 + 14, 15, 13, // tri2 + 16, 17, 15 // tri3 + ), + gsSPNTriangles_5b(16, 18, 17, // tri0 + 19, 20, 18, // tri1 + 21, 22, 20, // tri2 + 21, 23, 22 // tri3 + ), + gsSPNTriangles_5b(21, 24, 23, // tri0 + 25, 26, 24, // tri1 + 27, 28, 26, // tri2 + 26, 25, 27 // tri3 + ), + gsSPNTriangles_5b(27, 29, 28, // tri0 + 30, 31, 29, // tri1 + 27, 30, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r1_2_v[154], 22, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(6, 9, 8, // tri0 + 10, 11, 12, // tri1 + 12, 13, 10, // tri2 + 13, 14, 10 // tri3 + ), + gsSPNTriangles_5b(13, 15, 14, // tri0 + 16, 17, 18, // tri1 + 19, 20, 16, // tri2 + 16, 20, 17 // tri3 + ), + gsSPNTriangles_5b(19, 21, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_r1_2_v[176], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 6, 8, 9, // tri1 + 6, 9, 7, // tri2 + 8, 10, 11 // tri3 + ), + gsSPNTriangles_5b(8, 11, 9, // tri0 + 4, 12, 5, // tri1 + 4, 13, 14, // tri2 + 4, 14, 12 // tri3 + ), + gsSPNTriangles_5b(13, 15, 14, // tri0 + 13, 16, 17, // tri1 + 13, 17, 15, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(19, 21, 20, // tri0 + 20, 22, 18, // tri1 + 22, 23, 18, // tri2 + 0, 24, 1 // tri3 + ), + gsSPNTriangles_5b(0, 25, 24, // tri0 + 25, 26, 24, // tri1 + 27, 28, 29, // tri2 + 28, 30, 29 // tri3 + ), + gsSPNTriangles_5b(25, 21, 19, // tri0 + 25, 19, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r1_2_v[207], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b(2, 5, 3, // tri0 + 6, 7, 8, // tri1 + 9, 10, 11, // tri2 + 9, 12, 10 // tri3 + ), + gsSPNTriangles_5b(6, 13, 7, // tri0 + 14, 15, 16, // tri1 + 14, 17, 15, // tri2 + 16, 18, 19 // tri3 + ), + gsSPNTriangles_5b(16, 15, 18, // tri0 + 19, 18, 20, // tri1 + 18, 21, 20, // tri2 + 20, 22, 23 // tri3 + ), + gsSPNTriangles_5b(20, 21, 22, // tri0 + 23, 22, 6, // tri1 + 22, 24, 6, // tri2 + 6, 25, 26 // tri3 + ), + gsSPNTriangles_5b(6, 24, 25, // tri0 + 25, 27, 28, // tri1 + 25, 29, 27, // tri2 + 29, 12, 27 // tri3 + ), + gsSPNTriangles_5b(12, 29, 10, // tri0 + 29, 30, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r1_2_v[238], 16, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 2, 5, // tri0 + 2, 7, 5, // tri1 + 2, 1, 7, // tri2 + 5, 7, 8 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 15, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c1_r1_2/grd_s_c1_r1_2_evw_anime.c b/src/data/field/bg/acre/grd_s_c1_r1_2/grd_s_c1_r1_2_evw_anime.c new file mode 100644 index 00000000..c0a9b03c --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c1_r1_2/grd_s_c1_r1_2_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c1_r1_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c1_r1_2_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_c1_r1_2_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_c1_r1_3/grd_s_c1_r1_3.c b/src/data/field/bg/acre/grd_s_c1_r1_3/grd_s_c1_r1_3.c new file mode 100644 index 00000000..3ab34b4c --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c1_r1_3/grd_s_c1_r1_3.c @@ -0,0 +1,323 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c1_r1_3_v[] = { +#include "assets/field/bg/grd_s_c1_r1_3_v.inc" +}; + +extern Gfx grd_s_c1_r1_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c1_r1_3_v[247], 27, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 1, // tri0 + 6, 7, 8, // tri1 + 9, 6, 8, // tri2 + 4, 9, 8 // tri3 + ), + gsSPNTriangles_5b(4, 8, 5, // tri0 + 10, 2, 11, // tri1 + 10, 11, 12, // tri2 + 13, 14, 10 // tri3 + ), + gsSPNTriangles_5b(13, 10, 12, // tri0 + 3, 11, 2, // tri1 + 15, 16, 17, // tri2 + 15, 18, 16 // tri3 + ), + gsSPNTriangles_5b(16, 19, 17, // tri0 + 16, 20, 19, // tri1 + 20, 21, 19, // tri2 + 21, 22, 19 // tri3 + ), + gsSPNTriangles_5b(21, 23, 22, // tri0 + 23, 24, 22, // tri1 + 23, 25, 24, // tri2 + 23, 26, 25 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c1_r1_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c1_r1_3_v[0], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 6, 9, 4, // tri2 + 9, 10, 4 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 11, 14, 12, // tri1 + 15, 16, 17, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b(15, 19, 16, // tri0 + 15, 20, 19, // tri1 + 18, 21, 22, // tri2 + 21, 23, 22 // tri3 + ), + gsSPNTriangles_5b(21, 24, 23, // tri0 + 18, 16, 21, // tri1 + 25, 26, 27, // tri2 + 26, 28, 27 // tri3 + ), + gsSPNTriangles_5b(28, 29, 27, // tri0 + 30, 31, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r1_3_v[32], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 7, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 14, 15, 16, // tri1 + 17, 18, 19, // tri2 + 17, 20, 18 // tri3 + ), + gsSPNTriangles_5b(17, 21, 20, // tri0 + 21, 22, 20, // tri1 + 21, 23, 22, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(11, 13, 27, // tri0 + 27, 28, 24, // tri1 + 27, 13, 28, // tri2 + 29, 30, 31 // tri3 + ), + gsSPVertex(&grd_s_c1_r1_3_v[64], 19, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 0 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 7, 9, 8, // tri1 + 7, 10, 9, // tri2 + 11, 12, 7 // tri3 + ), + gsSPNTriangles_5b(13, 14, 12, // tri0 + 15, 13, 12, // tri1 + 11, 15, 12, // tri2 + 16, 17, 11 // tri3 + ), + gsSPNTriangles_5b(17, 15, 11, // tri0 + 18, 0, 5, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_r1_3_v[83], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 3, 9, // tri1 + 8, 10, 3, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 9, 14, 17, // tri1 + 18, 4, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(23, 11, 24, // tri0 + 23, 24, 21, // tri1 + 15, 20, 22, // tri2 + 25, 26, 27 // tri3 + ), + gsSPNTriangles_5b(28, 25, 29, // tri0 + 26, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r1_3_v[115], 24, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 7, 10, 11, // tri1 + 12, 11, 10, // tri2 + 13, 12, 10 // tri3 + ), + gsSPNTriangles_5b(14, 15, 13, // tri0 + 16, 17, 14, // tri1 + 18, 19, 16, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b(18, 21, 20, // tri0 + 21, 22, 23, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_r1_3_v[139], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 4, 0, 5, // tri1 + 5, 8, 7, // tri2 + 9, 10, 5 // tri3 + ), + gsSPNTriangles_5b(10, 8, 5, // tri0 + 9, 5, 11, // tri1 + 5, 0, 11, // tri2 + 0, 2, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 14, // tri0 + 12, 15, 13, // tri1 + 15, 16, 13, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(18, 20, 19, // tri0 + 21, 22, 23, // tri1 + 21, 24, 22, // tri2 + 24, 25, 22 // tri3 + ), + gsSPNTriangles_5b(24, 17, 25, // tri0 + 17, 19, 25, // tri1 + 26, 15, 27, // tri2 + 18, 28, 20 // tri3 + ), + gsSPNTriangles_5b(18, 29, 28, // tri0 + 15, 8, 16, // tri1 + 8, 10, 16, // tri2 + 1, 30, 3 // tri3 + ), + gsSPNTriangles_5b(30, 31, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r1_3_v[171], 23, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(9, 10, 8, // tri0 + 9, 11, 10, // tri1 + 6, 9, 8, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 13, 14, 15, // tri1 + 13, 16, 14, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(17, 20, 18, // tri0 + 20, 21, 18, // tri1 + 21, 22, 18, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_r1_3_v[194], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 3, 6, // tri0 + 5, 2, 3, // tri1 + 4, 6, 7, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 10, 11, 12, // tri1 + 11, 13, 12, // tri2 + 11, 14, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 13, // tri0 + 14, 16, 15, // tri1 + 14, 17, 16, // tri2 + 17, 18, 16 // tri3 + ), + gsSPNTriangles_5b(17, 19, 18, // tri0 + 19, 20, 18, // tri1 + 19, 21, 20, // tri2 + 21, 22, 20 // tri3 + ), + gsSPNTriangles_5b(0, 23, 1, // tri0 + 23, 24, 1, // tri1 + 23, 25, 24, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b(27, 29, 28, // tri0 + 29, 30, 28, // tri1 + 29, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r1_3_v[226], 21, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b(6, 7, 5, // tri0 + 8, 9, 7, // tri1 + 8, 10, 9, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(13, 14, 12, // tri0 + 13, 15, 14, // tri1 + 15, 16, 14, // tri2 + 17, 18, 16 // tri3 + ), + gsSPNTriangles_5b(17, 19, 18, // tri0 + 19, 20, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c1_r1_3/grd_s_c1_r1_3_evw_anime.c b/src/data/field/bg/acre/grd_s_c1_r1_3/grd_s_c1_r1_3_evw_anime.c new file mode 100644 index 00000000..ed87928d --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c1_r1_3/grd_s_c1_r1_3_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c1_r1_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c1_r1_3_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_c1_r1_3_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_c1_r2_1/grd_s_c1_r2_1.c b/src/data/field/bg/acre/grd_s_c1_r2_1/grd_s_c1_r2_1.c new file mode 100644 index 00000000..7f69b817 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c1_r2_1/grd_s_c1_r2_1.c @@ -0,0 +1,323 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c1_r2_1_v[] = { +#include "assets/field/bg/grd_s_c1_r2_1_v.inc" +}; + +extern Gfx grd_s_c1_r2_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c1_r2_1_v[260], 12, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 8, 10, 9, // tri1 + 8, 11, 10, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c1_r2_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c1_r2_1_v[247], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_r2_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 8, 9, 10, // tri1 + 8, 11, 9, // tri2 + 10, 9, 12 // tri3 + ), + gsSPNTriangles_5b(9, 7, 12, // tri0 + 13, 14, 15, // tri1 + 14, 16, 15, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(18, 20, 19, // tri0 + 20, 21, 19, // tri1 + 20, 22, 21, // tri2 + 20, 23, 22 // tri3 + ), + gsSPNTriangles_5b(23, 24, 22, // tri0 + 1, 25, 3, // tri1 + 2, 3, 26, // tri2 + 27, 28, 23 // tri3 + ), + gsSPNTriangles_5b(29, 30, 28, // tri0 + 30, 24, 28, // tri1 + 24, 23, 28, // tri2 + 17, 31, 18 // tri3 + ), + gsSPVertex(&grd_s_c1_r2_1_v[32], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 8, 11, 9, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 12, 21, 18, // tri2 + 22, 23, 21 // tri3 + ), + gsSPNTriangles_5b(22, 24, 23, // tri0 + 21, 12, 22, // tri1 + 24, 25, 23, // tri2 + 26, 25, 24 // tri3 + ), + gsSPNTriangles_5b(26, 27, 28, // tri0 + 26, 24, 27, // tri1 + 29, 30, 31, // tri2 + 30, 8, 31 // tri3 + ), + gsSPVertex(&grd_s_c1_r2_1_v[64], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 8, 9, 6, // tri2 + 3, 7, 10 // tri3 + ), + gsSPNTriangles_5b(11, 12, 4, // tri0 + 13, 14, 12, // tri1 + 13, 12, 15, // tri2 + 15, 12, 11 // tri3 + ), + gsSPNTriangles_5b(15, 11, 16, // tri0 + 11, 17, 16, // tri1 + 18, 16, 17, // tri2 + 19, 9, 8 // tri3 + ), + gsSPNTriangles_5b(20, 21, 22, // tri0 + 21, 14, 22, // tri1 + 5, 7, 1, // tri2 + 7, 3, 1 // tri3 + ), + gsSPNTriangles_5b(23, 24, 25, // tri0 + 26, 27, 19, // tri1 + 28, 29, 30, // tri2 + 28, 31, 29 // tri3 + ), + gsSPVertex(&grd_s_c1_r2_1_v[96], 10, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(6, 9, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_r2_1_v[106], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 8, 7, 10, // tri1 + 9, 6, 7, // tri2 + 11, 10, 12 // tri3 + ), + gsSPNTriangles_5b(2, 13, 12, // tri0 + 14, 15, 0, // tri1 + 16, 17, 18, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(20, 21, 22, // tri0 + 22, 23, 24, // tri1 + 24, 25, 26, // tri2 + 27, 28, 29 // tri3 + ), + gsSPNTriangles_5b(29, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r2_1_v[138], 20, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 13, 14, 10, // tri2 + 15, 16, 13 // tri3 + ), + gsSPNTriangles_5b(17, 18, 15, // tri0 + 9, 19, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_r2_1_v[158], 32, 0), + gsSPNTrianglesInit_5b(38, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 5, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 2, // tri0 + 6, 7, 2, // tri1 + 7, 8, 2, // tri2 + 6, 9, 7 // tri3 + ), + gsSPNTriangles_5b(6, 10, 9, // tri0 + 11, 12, 0, // tri1 + 13, 11, 0, // tri2 + 14, 13, 0 // tri3 + ), + gsSPNTriangles_5b(1, 4, 2, // tri0 + 1, 0, 12, // tri1 + 8, 3, 2, // tri2 + 0, 3, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 18, 17, 16, // tri1 + 19, 11, 20, // tri2 + 11, 21, 20 // tri3 + ), + gsSPNTriangles_5b(21, 11, 22, // tri0 + 11, 23, 22, // tri1 + 11, 19, 12, // tri2 + 11, 13, 23 // tri3 + ), + gsSPNTriangles_5b(10, 6, 24, // tri0 + 24, 6, 5, // tri1 + 18, 25, 17, // tri2 + 25, 26, 17 // tri3 + ), + gsSPNTriangles_5b(27, 28, 25, // tri0 + 27, 25, 18, // tri1 + 29, 27, 16, // tri2 + 27, 18, 16 // tri3 + ), + gsSPNTriangles_5b(30, 29, 31, // tri0 + 29, 16, 31, // tri1 + 31, 16, 15, // tri2 + 10, 24, 31 // tri3 + ), + gsSPNTriangles_5b(24, 30, 31, // tri0 + 10, 31, 15, // tri1 + 10, 15, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_r2_1_v[190], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 4, 2, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 6, 7, 5, // tri1 + 7, 4, 5, // tri2 + 8, 7, 6 // tri3 + ), + gsSPNTriangles_5b(9, 10, 8, // tri0 + 10, 7, 8, // tri1 + 11, 12, 9, // tri2 + 9, 12, 10 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 13, 14, 15, // tri1 + 14, 16, 15, // tri2 + 16, 17, 15 // tri3 + ), + gsSPNTriangles_5b(13, 15, 12, // tri0 + 18, 19, 20, // tri1 + 21, 22, 18, // tri2 + 23, 24, 22 // tri3 + ), + gsSPNTriangles_5b(25, 26, 24, // tri0 + 25, 27, 26, // tri1 + 28, 29, 27, // tri2 + 28, 30, 29 // tri3 + ), + gsSPVertex(&grd_s_c1_r2_1_v[221], 13, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(5, 6, 4, // tri0 + 7, 8, 6, // tri1 + 9, 8, 10, // tri2 + 11, 12, 9 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_r2_1_v[234], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c1_r2_1/grd_s_c1_r2_1_evw_anime.c b/src/data/field/bg/acre/grd_s_c1_r2_1/grd_s_c1_r2_1_evw_anime.c new file mode 100644 index 00000000..5147f9a2 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c1_r2_1/grd_s_c1_r2_1_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c1_r2_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c1_r2_1_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_c1_r2_1_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_c1_r2_2/grd_s_c1_r2_2.c b/src/data/field/bg/acre/grd_s_c1_r2_2/grd_s_c1_r2_2.c new file mode 100644 index 00000000..d53b4e66 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c1_r2_2/grd_s_c1_r2_2.c @@ -0,0 +1,310 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c1_r2_2_v[] = { +#include "assets/field/bg/grd_s_c1_r2_2_v.inc" +}; + +extern Gfx grd_s_c1_r2_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c1_r2_2_v[267], 13, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 9, 1, 3, // tri1 + 7, 0, 10, // tri2 + 5, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 10, 11, // tri0 + 0, 2, 10, // tri1 + 12, 9, 3, // tri2 + 7, 11, 8 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c1_r2_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c1_r2_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 8, 10, 11, // tri1 + 9, 12, 10, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(6, 16, 7, // tri0 + 12, 17, 18, // tri1 + 12, 9, 17, // tri2 + 1, 7, 19 // tri3 + ), + gsSPNTriangles_5b(14, 8, 11, // tri0 + 20, 13, 15, // tri1 + 21, 22, 23, // tri2 + 1, 19, 2 // tri3 + ), + gsSPNTriangles_5b(4, 24, 5, // tri0 + 6, 25, 26, // tri1 + 16, 6, 26, // tri2 + 26, 3, 5 // tri3 + ), + gsSPNTriangles_5b(26, 25, 3, // tri0 + 27, 28, 3, // tri1 + 3, 28, 29, // tri2 + 24, 4, 30 // tri3 + ), + gsSPNTriangles_5b(24, 30, 31, // tri0 + 3, 29, 4, // tri1 + 25, 27, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r2_2_v[32], 30, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 7, 10, 8, // tri1 + 3, 2, 11, // tri2 + 12, 13, 5 // tri3 + ), + gsSPNTriangles_5b(13, 14, 5, // tri0 + 5, 15, 16, // tri1 + 5, 14, 15, // tri2 + 16, 15, 17 // tri3 + ), + gsSPNTriangles_5b(15, 18, 17, // tri0 + 17, 19, 3, // tri1 + 17, 18, 19, // tri2 + 3, 19, 0 // tri3 + ), + gsSPNTriangles_5b(19, 20, 0, // tri0 + 20, 21, 0, // tri1 + 21, 20, 22, // tri2 + 20, 23, 22 // tri3 + ), + gsSPNTriangles_5b(22, 24, 25, // tri0 + 22, 23, 24, // tri1 + 26, 27, 7, // tri2 + 27, 28, 7 // tri3 + ), + gsSPNTriangles_5b(7, 29, 10, // tri0 + 7, 28, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_r2_2_v[62], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 10, 11, 12, // tri1 + 13, 14, 15, // tri2 + 14, 0, 15 // tri3 + ), + gsSPNTriangles_5b(16, 5, 17, // tri0 + 17, 5, 4, // tri1 + 18, 19, 20, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b(24, 23, 22, // tri0 + 24, 22, 19, // tri1 + 22, 21, 25, // tri2 + 24, 19, 18 // tri3 + ), + gsSPNTriangles_5b(26, 27, 16, // tri0 + 28, 29, 25, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r2_2_v[92], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 5, 4 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 13, 14, 15, // tri2 + 13, 15, 16 // tri3 + ), + gsSPNTriangles_5b(2, 17, 18, // tri0 + 19, 20, 21, // tri1 + 19, 21, 22, // tri2 + 20, 13, 16 // tri3 + ), + gsSPNTriangles_5b(20, 16, 21, // tri0 + 23, 24, 25, // tri1 + 26, 11, 10, // tri2 + 26, 10, 27 // tri3 + ), + gsSPNTriangles_5b(23, 28, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r2_2_v[122], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 2, 6 // tri2 + ), + gsSPNTriangles_5b(7, 6, 8, // tri0 + 9, 0, 6, // tri1 + 10, 9, 6, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 17, 18, 12, // tri1 + 19, 20, 21, // tri2 + 11, 22, 12 // tri3 + ), + gsSPNTriangles_5b(22, 17, 12, // tri0 + 18, 23, 12, // tri1 + 24, 14, 16, // tri2 + 25, 11, 13 // tri3 + ), + gsSPNTriangles_5b(26, 27, 28, // tri0 + 29, 30, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r2_2_v[153], 27, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 9, 13, // tri1 + 14, 15, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(20, 17, 21, // tri0 + 18, 22, 19, // tri1 + 11, 20, 23, // tri2 + 24, 25, 26 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_r2_2_v[180], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 2, 6, // tri0 + 7, 8, 9, // tri1 + 0, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(8, 13, 14, // tri0 + 8, 14, 9, // tri1 + 13, 4, 15, // tri2 + 16, 7, 17 // tri3 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 19, 21, 22, // tri1 + 21, 23, 24, // tri2 + 23, 25, 26 // tri3 + ), + gsSPNTriangles_5b(25, 27, 28, // tri0 + 27, 29, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r2_2_v[211], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 7, 9, 10, // tri1 + 9, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_r2_2_v[224], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 3, 4, 0 // tri2 + ), + gsSPNTriangles_5b(4, 3, 5, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 7, 10, 9, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(10, 13, 12, // tri0 + 13, 14, 12, // tri1 + 14, 15, 12, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(14, 17, 16, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19, // tri2 + 19, 22, 20 // tri3 + ), + gsSPNTriangles_5b(22, 23, 20, // tri0 + 24, 25, 26, // tri1 + 24, 27, 28, // tri2 + 24, 28, 25 // tri3 + ), + gsSPNTriangles_5b(25, 29, 26, // tri0 + 23, 30, 20, // tri1 + 23, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r2_2_v[256], 11, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 1, // tri0 + 4, 6, 5, // tri1 + 7, 8, 9, // tri2 + 6, 10, 5 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c1_r2_2/grd_s_c1_r2_2_evw_anime.c b/src/data/field/bg/acre/grd_s_c1_r2_2/grd_s_c1_r2_2_evw_anime.c new file mode 100644 index 00000000..dd4da9ff --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c1_r2_2/grd_s_c1_r2_2_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c1_r2_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c1_r2_2_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_c1_r2_2_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_c1_r2_3/grd_s_c1_r2_3.c b/src/data/field/bg/acre/grd_s_c1_r2_3/grd_s_c1_r2_3.c new file mode 100644 index 00000000..f37b7c36 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c1_r2_3/grd_s_c1_r2_3.c @@ -0,0 +1,365 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c1_r2_3_v[] = { +#include "assets/field/bg/grd_s_c1_r2_3_v.inc" +}; + +extern Gfx grd_s_c1_r2_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c1_r2_3_v[288], 16, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(6, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(12, 13, 10, // tri0 + 12, 14, 13, // tri1 + 12, 15, 14, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c1_r2_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c1_r2_3_v[271], 17, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 6, 9, 7, // tri2 + 0, 10, 11 // tri3 + ), + gsSPNTriangles_5b(12, 4, 13, // tri0 + 10, 8, 14, // tri1 + 9, 15, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_r2_3_v[0], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 5, 9, 6, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 14, 16, 15, // tri1 + 16, 17, 15, // tri2 + 0, 18, 19 // tri3 + ), + gsSPNTriangles_5b(18, 20, 19, // tri0 + 20, 21, 19, // tri1 + 22, 23, 24, // tri2 + 23, 17, 24 // tri3 + ), + gsSPNTriangles_5b(11, 4, 1, // tri0 + 11, 10, 4, // tri1 + 11, 25, 12, // tri2 + 25, 26, 12 // tri3 + ), + gsSPNTriangles_5b(26, 27, 12, // tri0 + 28, 5, 7, // tri1 + 28, 29, 5, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r2_3_v[30], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 4, 8, 5, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(10, 8, 12, // tri0 + 13, 14, 15, // tri1 + 14, 16, 15, // tri2 + 14, 17, 16 // tri3 + ), + gsSPNTriangles_5b(17, 18, 16, // tri0 + 17, 19, 18, // tri1 + 19, 20, 18, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b(22, 24, 23, // tri0 + 9, 25, 7, // tri1 + 12, 26, 11, // tri2 + 27, 28, 29 // tri3 + ), + gsSPNTriangles_5b(27, 30, 28, // tri0 + 28, 31, 29, // tri1 + 30, 0, 2, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r2_3_v[62], 30, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 1, 6, 5, // tri1 + 5, 7, 4, // tri2 + 5, 8, 7 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 10, 12, 11, // tri1 + 10, 13, 12, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(14, 17, 15, // tri0 + 18, 19, 20, // tri1 + 21, 22, 23, // tri2 + 24, 23, 25 // tri3 + ), + gsSPNTriangles_5b(26, 27, 28, // tri0 + 26, 29, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_r2_3_v[92], 17, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 6, 9, 7, // tri2 + 10, 4, 11 // tri3 + ), + gsSPNTriangles_5b(0, 12, 13, // tri0 + 9, 14, 15, // tri1 + 12, 8, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_r2_3_v[109], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(9, 13, 10, // tri0 + 9, 14, 13, // tri1 + 15, 16, 17, // tri2 + 15, 18, 16 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 19, 22, 23, // tri1 + 24, 23, 22, // tri2 + 25, 24, 22 // tri3 + ), + gsSPNTriangles_5b(26, 27, 25, // tri0 + 17, 28, 26, // tri1 + 15, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r2_3_v[140], 32, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 14, 15, 16, // tri2 + 17, 14, 18 // tri3 + ), + gsSPNTriangles_5b(12, 19, 20, // tri0 + 19, 17, 21, // tri1 + 22, 23, 24, // tri2 + 22, 25, 26 // tri3 + ), + gsSPNTriangles_5b(27, 26, 25, // tri0 + 28, 27, 25, // tri1 + 29, 30, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r2_3_v[171], 6, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_r2_3_v[177], 32, 0), + gsSPNTrianglesInit_5b(29, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 2, 6, // tri1 + 6, 4, 7, // tri2 + 4, 8, 7 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 9, 2, 10, // tri1 + 2, 5, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 15, 13, // tri0 + 15, 16, 13, // tri1 + 17, 18, 19, // tri2 + 17, 20, 18 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 22, 12, 23, // tri1 + 22, 24, 12, // tri2 + 21, 23, 25 // tri3 + ), + gsSPNTriangles_5b(23, 12, 25, // tri0 + 26, 21, 25, // tri1 + 21, 27, 22, // tri2 + 21, 28, 27 // tri3 + ), + gsSPNTriangles_5b(28, 26, 29, // tri0 + 28, 21, 26, // tri1 + 18, 9, 11, // tri2 + 18, 20, 9 // tri3 + ), + gsSPNTriangles_5b(30, 19, 31, // tri0 + 30, 17, 19, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r2_3_v[209], 24, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 11, 9, // tri2 + 8, 12, 11 // tri3 + ), + gsSPNTriangles_5b(8, 13, 12, // tri0 + 14, 0, 2, // tri1 + 14, 15, 0, // tri2 + 3, 16, 4 // tri3 + ), + gsSPNTriangles_5b(16, 17, 4, // tri0 + 18, 8, 10, // tri1 + 18, 19, 8, // tri2 + 19, 20, 8 // tri3 + ), + gsSPNTriangles_5b(20, 13, 8, // tri0 + 21, 22, 5, // tri1 + 21, 23, 22, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_r2_3_v[233], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 5, 9, 8, // tri2 + 10, 7, 6 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 12, 14, 13, // tri1 + 15, 12, 16, // tri2 + 12, 11, 16 // tri3 + ), + gsSPNTriangles_5b(14, 17, 13, // tri0 + 14, 18, 17, // tri1 + 18, 19, 17, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b(18, 21, 20, // tri0 + 21, 22, 20, // tri1 + 21, 23, 22, // tri2 + 21, 24, 23 // tri3 + ), + gsSPNTriangles_5b(24, 25, 23, // tri0 + 24, 26, 25, // tri1 + 24, 27, 26, // tri2 + 28, 29, 3 // tri3 + ), + gsSPNTriangles_5b(29, 4, 3, // tri0 + 0, 30, 1, // tri1 + 30, 5, 1, // tri2 + 30, 9, 5 // tri3 + ), + gsSPNTriangles_5b(10, 31, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r2_3_v[265], 6, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c1_r2_3/grd_s_c1_r2_3_evw_anime.c b/src/data/field/bg/acre/grd_s_c1_r2_3/grd_s_c1_r2_3_evw_anime.c new file mode 100644 index 00000000..1b7bb3c7 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c1_r2_3/grd_s_c1_r2_3_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c1_r2_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c1_r2_3_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_c1_r2_3_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_c1_r3_1/grd_s_c1_r3_1.c b/src/data/field/bg/acre/grd_s_c1_r3_1/grd_s_c1_r3_1.c new file mode 100644 index 00000000..ec01d30b --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c1_r3_1/grd_s_c1_r3_1.c @@ -0,0 +1,291 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c1_r3_1_v[] = { +#include "assets/field/bg/grd_s_c1_r3_1_v.inc" +}; + +extern Gfx grd_s_c1_r3_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c1_r3_1_v[208], 14, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(8, 9, 6, // tri0 + 8, 10, 9, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(10, 13, 12, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c1_r3_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c1_r3_1_v[197], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_r3_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 4, 9, 5, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(10, 13, 11, // tri0 + 13, 14, 11, // tri1 + 15, 16, 12, // tri2 + 16, 10, 12 // tri3 + ), + gsSPNTriangles_5b(15, 8, 16, // tri0 + 8, 7, 16, // tri1 + 17, 18, 19, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b(20, 21, 19, // tri0 + 22, 23, 24, // tri1 + 25, 26, 27, // tri2 + 26, 28, 27 // tri3 + ), + gsSPNTriangles_5b(28, 29, 27, // tri0 + 28, 30, 29, // tri1 + 28, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r3_1_v[32], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 1, // tri0 + 4, 6, 5, // tri1 + 2, 3, 7, // tri2 + 3, 8, 7 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 9, 12, 10, // tri1 + 13, 14, 15, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(14, 0, 16, // tri0 + 0, 2, 16, // tri1 + 17, 18, 19, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 22, 24, 23, // tri1 + 22, 25, 24, // tri2 + 22, 26, 25 // tri3 + ), + gsSPNTriangles_5b(27, 28, 29, // tri0 + 27, 30, 28, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r3_1_v[63], 21, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 7, 9, 8, // tri1 + 9, 10, 8, // tri2 + 9, 11, 10 // tri3 + ), + gsSPNTriangles_5b(11, 12, 10, // tri0 + 4, 13, 5, // tri1 + 4, 14, 13, // tri2 + 14, 15, 13 // tri3 + ), + gsSPNTriangles_5b(14, 16, 15, // tri0 + 16, 6, 15, // tri1 + 4, 17, 14, // tri2 + 14, 18, 16 // tri3 + ), + gsSPNTriangles_5b(19, 20, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_r3_1_v[84], 28, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 8, 6, 10, // tri1 + 11, 12, 13, // tri2 + 11, 14, 15 // tri3 + ), + gsSPNTriangles_5b(16, 15, 14, // tri0 + 17, 16, 14, // tri1 + 18, 19, 17, // tri2 + 20, 21, 18 // tri3 + ), + gsSPNTriangles_5b(22, 23, 20, // tri0 + 22, 24, 23, // tri1 + 22, 25, 24, // tri2 + 25, 26, 27 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_r3_1_v[112], 30, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 5, 8, 7 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 8, 10, 9, // tri1 + 8, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 11, 14, 13, // tri1 + 14, 15, 13, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(17, 19, 18, // tri0 + 19, 20, 18, // tri1 + 20, 21, 18, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b(22, 23, 21, // tri0 + 22, 24, 23, // tri1 + 24, 25, 23, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b(26, 27, 25, // tri0 + 27, 28, 25, // tri1 + 27, 29, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_r3_1_v[142], 32, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 11, 12, 13, // tri2 + 11, 14, 12 // tri3 + ), + gsSPNTriangles_5b(14, 15, 12, // tri0 + 5, 16, 7, // tri1 + 16, 17, 7, // tri2 + 17, 18, 7 // tri3 + ), + gsSPNTriangles_5b(5, 4, 19, // tri0 + 4, 20, 19, // tri1 + 9, 19, 10, // tri2 + 19, 20, 10 // tri3 + ), + gsSPNTriangles_5b(3, 21, 2, // tri0 + 3, 22, 21, // tri1 + 22, 23, 21, // tri2 + 9, 8, 24 // tri3 + ), + gsSPNTriangles_5b(8, 25, 24, // tri0 + 8, 26, 25, // tri1 + 27, 28, 29, // tri2 + 27, 30, 28 // tri3 + ), + gsSPNTriangles_5b(17, 27, 18, // tri0 + 27, 29, 18, // tri1 + 0, 26, 31, // tri2 + 0, 25, 26 // tri3 + ), + gsSPVertex(&grd_s_c1_r3_1_v[174], 12, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b(0, 2, 5, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 10, 8, 11 // tri3 + ), + gsSPNTriangles_5b(10, 6, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_r3_1_v[186], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 8, 3, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c1_r3_1/grd_s_c1_r3_1_evw_anime.c b/src/data/field/bg/acre/grd_s_c1_r3_1/grd_s_c1_r3_1_evw_anime.c new file mode 100644 index 00000000..7b5c73e1 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c1_r3_1/grd_s_c1_r3_1_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c1_r3_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c1_r3_1_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_c1_r3_1_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_c1_r3_2/grd_s_c1_r3_2.c b/src/data/field/bg/acre/grd_s_c1_r3_2/grd_s_c1_r3_2.c new file mode 100644 index 00000000..23837a92 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c1_r3_2/grd_s_c1_r3_2.c @@ -0,0 +1,313 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c1_r3_2_v[] = { +#include "assets/field/bg/grd_s_c1_r3_2_v.inc" +}; + +extern Gfx grd_s_c1_r3_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c1_r3_2_v[240], 15, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 11, 14, 13, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c1_r3_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c1_r3_2_v[229], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_r3_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 2, 5 // tri2 + ), + gsSPNTriangles_5b(4, 0, 2, // tri0 + 3, 6, 1, // tri1 + 7, 4, 5, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 14, 15, 16, // tri1 + 14, 17, 15, // tri2 + 17, 18, 15 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 20, 22, 21, // tri1 + 23, 24, 25, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b(27, 25, 26, // tri0 + 28, 29, 30, // tri1 + 29, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r3_2_v[32], 32, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 9, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 16, 18, 17, // tri1 + 18, 19, 20, // tri2 + 21, 22, 3 // tri3 + ), + gsSPNTriangles_5b(23, 24, 8, // tri0 + 10, 25, 11, // tri1 + 26, 27, 28, // tri2 + 26, 29, 27 // tri3 + ), + gsSPVertex(&grd_s_c1_r3_2_v[62], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 12, 14, 13, // tri1 + 15, 16, 17, // tri2 + 18, 16, 15 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 22, 23, 24, // tri1 + 22, 25, 23, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b(27, 29, 28, // tri0 + 29, 30, 28, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r3_2_v[93], 9, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_r3_2_v[102], 32, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 11, 8, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(16, 13, 17, // tri0 + 9, 18, 19, // tri1 + 18, 16, 20, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b(24, 21, 25, // tri0 + 22, 26, 27, // tri1 + 26, 28, 29, // tri2 + 5, 24, 30 // tri3 + ), + gsSPVertex(&grd_s_c1_r3_2_v[133], 14, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 3 // tri2 + ), + gsSPNTriangles_5b(8, 9, 6, // tri0 + 8, 10, 9, // tri1 + 8, 11, 10, // tri2 + 11, 12, 13 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_r3_2_v[147], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 4, 0, 2 // tri2 + ), + gsSPNTriangles_5b(0, 5, 1, // tri0 + 5, 6, 1, // tri1 + 7, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b(8, 11, 10, // tri0 + 11, 12, 10, // tri1 + 12, 13, 10, // tri2 + 12, 6, 13 // tri3 + ), + gsSPNTriangles_5b(6, 5, 13, // tri0 + 3, 14, 4, // tri1 + 3, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b(16, 17, 14, // tri0 + 16, 18, 17, // tri1 + 19, 20, 21, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b(22, 23, 21, // tri0 + 22, 24, 23, // tri1 + 24, 25, 23, // tri2 + 19, 26, 20 // tri3 + ), + gsSPNTriangles_5b(25, 27, 23, // tri0 + 25, 28, 27, // tri1 + 28, 29, 27, // tri2 + 28, 30, 29 // tri3 + ), + gsSPNTriangles_5b(30, 31, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r3_2_v[179], 7, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 3, 6, 5, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_r3_2_v[186], 32, 0), + gsSPNTrianglesInit_5b(39, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 7, 9, 8, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(5, 4, 3, // tri0 + 4, 2, 3, // tri1 + 13, 5, 3, // tri2 + 11, 7, 14 // tri3 + ), + gsSPNTriangles_5b(7, 5, 14, // tri0 + 5, 13, 14, // tri1 + 10, 12, 15, // tri2 + 12, 16, 15 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 20, 19, 21, // tri1 + 20, 17, 19, // tri2 + 13, 3, 22 // tri3 + ), + gsSPNTriangles_5b(1, 22, 3, // tri0 + 1, 23, 22, // tri1 + 24, 21, 25, // tri2 + 24, 20, 21 // tri3 + ), + gsSPNTriangles_5b(24, 26, 20, // tri0 + 24, 27, 26, // tri1 + 26, 17, 20, // tri2 + 26, 28, 17 // tri3 + ), + gsSPNTriangles_5b(28, 29, 17, // tri0 + 28, 15, 29, // tri1 + 28, 30, 15, // tri2 + 30, 31, 15 // tri3 + ), + gsSPNTriangles_5b(31, 10, 15, // tri0 + 31, 9, 10, // tri1 + 31, 8, 9, // tri2 + 17, 29, 18 // tri3 + ), + gsSPNTriangles_5b(29, 15, 18, // tri0 + 15, 16, 18, // tri1 + 10, 9, 11, // tri2 + 9, 7, 11 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_r3_2_v[218], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 8, 3, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c1_r3_2/grd_s_c1_r3_2_evw_anime.c b/src/data/field/bg/acre/grd_s_c1_r3_2/grd_s_c1_r3_2_evw_anime.c new file mode 100644 index 00000000..3d44b58b --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c1_r3_2/grd_s_c1_r3_2_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c1_r3_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c1_r3_2_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_c1_r3_2_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_c1_r3_3/grd_s_c1_r3_3.c b/src/data/field/bg/acre/grd_s_c1_r3_3/grd_s_c1_r3_3.c new file mode 100644 index 00000000..dc7de58e --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c1_r3_3/grd_s_c1_r3_3.c @@ -0,0 +1,359 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c1_r3_3_v[] = { +#include "assets/field/bg/grd_s_c1_r3_3_v.inc" +}; + +extern Gfx grd_s_c1_r3_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c1_r3_3_v[256], 14, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 8, 10, 9, // tri1 + 8, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(12, 13, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c1_r3_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c1_r3_3_v[243], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_r3_3_v[0], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(0, 5, 4, // tri0 + 6, 7, 8, // tri1 + 9, 10, 11, // tri2 + 12, 10, 9 // tri3 + ), + gsSPNTriangles_5b(10, 13, 14, // tri0 + 10, 15, 13, // tri1 + 12, 15, 10, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(18, 17, 19, // tri0 + 14, 20, 17, // tri1 + 20, 19, 17, // tri2 + 2, 21, 22 // tri3 + ), + gsSPNTriangles_5b(21, 23, 22, // tri0 + 23, 24, 22, // tri1 + 25, 26, 27, // tri2 + 26, 28, 27 // tri3 + ), + gsSPNTriangles_5b(29, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r3_3_v[32], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 8, 9, 7, // tri1 + 10, 11, 12, // tri2 + 13, 14, 10 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 21, 22, 23, // tri2 + 22, 24, 25 // tri3 + ), + gsSPNTriangles_5b(24, 26, 25, // tri0 + 24, 27, 26, // tri1 + 27, 28, 29, // tri2 + 28, 1, 0 // tri3 + ), + gsSPNTriangles_5b(1, 30, 3, // tri0 + 30, 8, 3, // tri1 + 30, 31, 8, // tri2 + 27, 29, 26 // tri3 + ), + gsSPNTriangles_5b(28, 0, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r3_3_v[64], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 9, 8, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 13, 12, // tri0 + 15, 16, 13, // tri1 + 16, 15, 17, // tri2 + 17, 18, 16 // tri3 + ), + gsSPNTriangles_5b(19, 18, 17, // tri0 + 19, 20, 18, // tri1 + 21, 20, 19, // tri2 + 21, 22, 20 // tri3 + ), + gsSPNTriangles_5b(21, 23, 22, // tri0 + 24, 25, 26, // tri1 + 26, 25, 27, // tri2 + 28, 24, 29 // tri3 + ), + gsSPNTriangles_5b(24, 30, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r3_3_v[95], 10, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 8, 7, 4, // tri1 + 8, 9, 7, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_r3_3_v[105], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(7, 3, 8, // tri0 + 1, 9, 10, // tri1 + 9, 6, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 12, 16, // tri0 + 17, 18, 19, // tri1 + 18, 20, 21, // tri2 + 20, 15, 22 // tri3 + ), + gsSPNTriangles_5b(23, 24, 25, // tri0 + 23, 26, 24, // tri1 + 25, 27, 28, // tri2 + 27, 17, 29 // tri3 + ), + gsSPNTriangles_5b(25, 28, 23, // tri0 + 30, 24, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r3_3_v[137], 12, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 4 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 6, 8, 7, // tri1 + 1, 11, 5, // tri2 + 11, 3, 5 // tri3 + ), + gsSPNTriangles_5b(3, 6, 4, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_r3_3_v[149], 32, 0), + gsSPNTrianglesInit_5b(37, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(0, 5, 3, // tri0 + 0, 6, 5, // tri1 + 4, 3, 7, // tri2 + 3, 8, 7 // tri3 + ), + gsSPNTriangles_5b(3, 5, 8, // tri0 + 5, 9, 8, // tri1 + 7, 10, 11, // tri2 + 7, 8, 10 // tri3 + ), + gsSPNTriangles_5b(8, 12, 10, // tri0 + 8, 9, 12, // tri1 + 11, 13, 14, // tri2 + 11, 10, 13 // tri3 + ), + gsSPNTriangles_5b(10, 12, 13, // tri0 + 12, 15, 13, // tri1 + 14, 16, 17, // tri2 + 14, 13, 16 // tri3 + ), + gsSPNTriangles_5b(13, 18, 16, // tri0 + 13, 15, 18, // tri1 + 17, 16, 19, // tri2 + 16, 20, 19 // tri3 + ), + gsSPNTriangles_5b(16, 21, 20, // tri0 + 16, 18, 21, // tri1 + 19, 22, 23, // tri2 + 19, 20, 22 // tri3 + ), + gsSPNTriangles_5b(20, 24, 22, // tri0 + 20, 21, 24, // tri1 + 23, 25, 26, // tri2 + 23, 22, 25 // tri3 + ), + gsSPNTriangles_5b(22, 27, 25, // tri0 + 22, 24, 27, // tri1 + 26, 25, 28, // tri2 + 25, 29, 28 // tri3 + ), + gsSPNTriangles_5b(25, 30, 29, // tri0 + 25, 27, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r3_3_v[180], 6, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_r3_3_v[186], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 12, 14, 13, // tri1 + 14, 15, 13, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(14, 17, 16, // tri0 + 17, 18, 16, // tri1 + 18, 19, 16, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(23, 20, 22, // tri0 + 20, 24, 21, // tri1 + 24, 25, 21, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b(26, 27, 25, // tri0 + 26, 28, 27, // tri1 + 28, 29, 27, // tri2 + 29, 30, 27 // tri3 + ), + gsSPNTriangles_5b(30, 31, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r3_3_v[218], 12, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 5, 6, 3, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_r3_3_v[230], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c1_r3_3/grd_s_c1_r3_3_evw_anime.c b/src/data/field/bg/acre/grd_s_c1_r3_3/grd_s_c1_r3_3_evw_anime.c new file mode 100644 index 00000000..78234e1d --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c1_r3_3/grd_s_c1_r3_3_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c1_r3_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c1_r3_3_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_c1_r3_3_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_c1_s_1/grd_s_c1_s_1.c b/src/data/field/bg/acre/grd_s_c1_s_1/grd_s_c1_s_1.c new file mode 100644 index 00000000..c31806b2 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c1_s_1/grd_s_c1_s_1.c @@ -0,0 +1,268 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c1_s_1_v[] = { +#include "assets/field/bg/grd_s_c1_s_1_v.inc" +}; + +extern Gfx grd_s_c1_s_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c1_s_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c1_s_1_v[193], 11, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_s_1_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 3, 5 // tri2 + ), + gsSPNTriangles_5b( + 3, 6, 5, // tri0 + 7, 8, 9, // tri1 + 7, 10, 8, // tri2 + 10, 11, 8 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 14, // tri0 + 15, 16, 1, // tri1 + 15, 17, 16, // tri2 + 17, 18, 16 // tri3 + ), + gsSPNTriangles_5b( + 13, 19, 14, // tri0 + 19, 20, 14, // tri1 + 21, 22, 23, // tri2 + 21, 24, 22 // tri3 + ), + gsSPNTriangles_5b( + 24, 25, 22, // tri0 + 25, 26, 22, // tri1 + 13, 12, 27, // tri2 + 12, 28, 27 // tri3 + ), + gsSPNTriangles_5b( + 12, 29, 28, // tri0 + 30, 23, 31, // tri1 + 30, 21, 23, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_s_1_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 10, 13, 11, // tri2 + 14, 8, 11 // tri3 + ), + gsSPNTriangles_5b( + 15, 5, 16, // tri0 + 5, 4, 16, // tri1 + 17, 18, 19, // tri2 + 18, 12, 19 // tri3 + ), + gsSPNTriangles_5b( + 18, 10, 12, // tri0 + 20, 21, 22, // tri1 + 23, 24, 25, // tri2 + 0, 26, 27 // tri3 + ), + gsSPNTriangles_5b( + 28, 7, 29, // tri0 + 30, 31, 23, // tri1 + 31, 24, 23, // tri2 + 30, 5, 31 // tri3 + ), + gsSPVertex(&grd_s_c1_s_1_v[64], 18, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 1, 8, // tri0 + 1, 3, 8, // tri1 + 9, 8, 3, // tri2 + 10, 9, 3 // tri3 + ), + gsSPNTriangles_5b( + 6, 11, 4, // tri0 + 11, 12, 4, // tri1 + 6, 13, 11, // tri2 + 6, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 7, 13, 14, // tri0 + 15, 16, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_s_1_v[82], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 13, 15, 14, // tri0 + 16, 17, 7, // tri1 + 17, 18, 7, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 19, 23, // tri0 + 20, 24, 25, // tri1 + 24, 26, 27, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b( + 28, 31, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_s_1_v[114], 32, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 11, 7, // tri1 + 12, 13, 14, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 20, // tri0 + 21, 18, 22, // tri1 + 23, 24, 25, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b( + 29, 15, 30, // tri0 + 29, 30, 27, // tri1 + 19, 26, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_s_1_v[145], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 11, 3, 0, // tri1 + 12, 11, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_s_1_v[158], 24, 0), + gsSPNTrianglesInit_5b( + 25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 4, 8, 5, // tri1 + 4, 9, 8, // tri2 + 8, 10, 5 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 5, // tri0 + 11, 7, 5, // tri1 + 12, 13, 14, // tri2 + 3, 14, 2 // tri3 + ), + gsSPNTriangles_5b( + 3, 12, 14, // tri0 + 15, 16, 12, // tri1 + 15, 17, 16, // tri2 + 17, 18, 16 // tri3 + ), + gsSPNTriangles_5b( + 12, 16, 13, // tri0 + 16, 18, 13, // tri1 + 18, 19, 13, // tri2 + 15, 12, 20 // tri3 + ), + gsSPNTriangles_5b( + 12, 3, 20, // tri0 + 1, 20, 3, // tri1 + 17, 21, 18, // tri2 + 21, 22, 18 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 18, // tri0 + 23, 19, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_s_1_v[182], 11, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 8, 3, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c1_s_2/grd_s_c1_s_2.c b/src/data/field/bg/acre/grd_s_c1_s_2/grd_s_c1_s_2.c new file mode 100644 index 00000000..538d595d --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c1_s_2/grd_s_c1_s_2.c @@ -0,0 +1,322 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c1_s_2_v[] = { +#include "assets/field/bg/grd_s_c1_s_2_v.inc" +}; + +extern Gfx grd_s_c1_s_2_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c1_s_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c1_s_2_v[223], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_s_2_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 2, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 8, 4, 7, // tri2 + 8, 0, 4 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 10, 12, 11, // tri1 + 13, 14, 15, // tri2 + 13, 16, 14 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 14, // tri0 + 17, 11, 14, // tri1 + 17, 18, 11, // tri2 + 11, 15, 14 // tri3 + ), + gsSPNTriangles_5b( + 18, 9, 11, // tri0 + 12, 15, 11, // tri1 + 19, 20, 21, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 24, 26, 25, // tri1 + 27, 28, 8, // tri2 + 29, 6, 5 // tri3 + ), + gsSPNTriangles_5b( + 22, 30, 21, // tri0 + 21, 31, 19, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_s_2_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 5, // tri0 + 9, 10, 11, // tri1 + 10, 12, 11, // tri2 + 10, 13, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 12, // tri0 + 15, 16, 17, // tri1 + 15, 18, 16, // tri2 + 16, 19, 17 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 17, // tri0 + 19, 21, 20, // tri1 + 22, 23, 24, // tri2 + 25, 23, 22 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 23, // tri0 + 26, 25, 27, // tri1 + 26, 28, 23, // tri2 + 29, 30, 26 // tri3 + ), + gsSPNTriangles_5b( + 3, 31, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_s_2_v[64], 24, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 7, 9, 8, // tri1 + 3, 10, 5, // tri2 + 10, 11, 5 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 11, // tri0 + 10, 13, 12, // tri1 + 10, 14, 13, // tri2 + 13, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 13, 17, 15, // tri0 + 9, 18, 0, // tri1 + 18, 1, 0, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_s_2_v[88], 31, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 9, 10, 11, // tri2 + 9, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 14, 16, 15, // tri1 + 15, 17, 18, // tri2 + 19, 20, 13 // tri3 + ), + gsSPNTriangles_5b( + 8, 21, 19, // tri0 + 4, 22, 23, // tri1 + 11, 24, 25, // tri2 + 10, 26, 27 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 2, // tri0 + 3, 29, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_s_2_v[119], 32, 0), + gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 6, 9, 7, // tri2 + 5, 10, 8 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 11, 14, 12, // tri1 + 15, 1, 16, // tri2 + 1, 17, 16 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 20, // tri0 + 19, 21, 20, // tri1 + 21, 19, 22, // tri2 + 19, 23, 22 // tri3 + ), + gsSPNTriangles_5b( + 10, 24, 8, // tri0 + 10, 25, 24, // tri1 + 25, 26, 24, // tri2 + 25, 27, 26 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 26, // tri0 + 17, 1, 29, // tri1 + 1, 3, 29, // tri2 + 30, 31, 14 // tri3 + ), + gsSPVertex(&grd_s_c1_s_2_v[151], 32, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 6, // tri0 + 5, 7, 6, // tri1 + 5, 8, 7, // tri2 + 4, 6, 3 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 10, 12, 11, // tri1 + 9, 11, 13, // tri2 + 11, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 13, // tri0 + 16, 17, 18, // tri1 + 16, 0, 17, // tri2 + 18, 17, 19 // tri3 + ), + gsSPNTriangles_5b( + 17, 0, 20, // tri0 + 8, 5, 21, // tri1 + 5, 22, 21, // tri2 + 5, 4, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 24, 26, 25, // tri1 + 15, 27, 28, // tri2 + 27, 29, 28 // tri3 + ), + gsSPNTriangles_5b( + 15, 14, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_s_2_v[181], 29, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 4, 7, // tri0 + 3, 8, 4, // tri1 + 3, 9, 8, // tri2 + 8, 7, 4 // tri3 + ), + gsSPNTriangles_5b( + 8, 10, 7, // tri0 + 11, 12, 13, // tri1 + 11, 14, 12, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 15, 18, 16, // tri0 + 18, 19, 16, // tri1 + 19, 20, 16, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b( + 22, 24, 23, // tri0 + 25, 26, 14, // tri1 + 26, 15, 14, // tri2 + 22, 27, 24 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 24, // tri0 + 25, 14, 11, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_s_2_v[210], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c1_s_3/grd_s_c1_s_3.c b/src/data/field/bg/acre/grd_s_c1_s_3/grd_s_c1_s_3.c new file mode 100644 index 00000000..0a329bb3 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c1_s_3/grd_s_c1_s_3.c @@ -0,0 +1,323 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c1_s_3_v[] = { +#include "assets/field/bg/grd_s_c1_s_3_v.inc" +}; + +extern Gfx grd_s_c1_s_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c1_s_3_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 7, 5, // tri0 + 8, 7, 9, // tri1 + 7, 10, 9, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 12, 8, 13, // tri0 + 14, 15, 16, // tri1 + 0, 17, 1, // tri2 + 18, 19, 14 // tri3 + ), + gsSPNTriangles_5b( + 18, 20, 19, // tri0 + 18, 21, 20, // tri1 + 20, 22, 19, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 23, 26, 24, // tri0 + 23, 27, 26, // tri1 + 28, 6, 5, // tri2 + 28, 29, 6 // tri3 + ), + gsSPNTriangles_5b( + 30, 28, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_s_3_v[31], 32, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 11, // tri0 + 14, 15, 16, // tri1 + 14, 17, 15, // tri2 + 17, 18, 15 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 21, // tri0 + 7, 22, 5, // tri1 + 23, 10, 24, // tri2 + 10, 9, 24 // tri3 + ), + gsSPNTriangles_5b( + 20, 25, 26, // tri0 + 27, 28, 7, // tri1 + 29, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_s_3_v[63], 32, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 8, 10, 9, // tri1 + 11, 12, 4, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 19, 20, 21, // tri1 + 19, 22, 20, // tri2 + 22, 23, 20 // tri3 + ), + gsSPNTriangles_5b( + 21, 24, 19, // tri0 + 0, 5, 25, // tri1 + 0, 26, 5, // tri2 + 26, 3, 5 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 29, // tri0 + 0, 2, 26, // tri1 + 30, 31, 13, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_s_3_v[95], 12, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 3 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 8, 11, 9, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_s_3_v[107], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 7, 5, // tri0 + 2, 3, 8, // tri1 + 0, 9, 1, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 10, 13, 11, // tri0 + 14, 11, 15, // tri1 + 14, 16, 11, // tri2 + 9, 17, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 8, // tri0 + 6, 21, 19, // tri1 + 4, 22, 23, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 29, // tri0 + 15, 27, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_s_3_v[138], 32, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 6, 8, 4, // tri0 + 9, 3, 5, // tri1 + 10, 11, 12, // tri2 + 13, 10, 14 // tri3 + ), + gsSPNTriangles_5b( + 11, 15, 16, // tri0 + 15, 17, 18, // tri1 + 19, 20, 21, // tri2 + 20, 13, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 26, 23, 27, // tri1 + 28, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_s_3_v[169], 9, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 5, 0, 7, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_s_3_v[178], 32, 0), + gsSPNTrianglesInit_5b( + 29, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b( + 7, 11, 12, // tri0 + 11, 13, 12, // tri1 + 14, 15, 16, // tri2 + 14, 11, 15 // tri3 + ), + gsSPNTriangles_5b( + 11, 17, 15, // tri0 + 11, 18, 17, // tri1 + 11, 7, 18, // tri2 + 7, 6, 18 // tri3 + ), + gsSPNTriangles_5b( + 4, 19, 1, // tri0 + 19, 20, 1, // tri1 + 21, 3, 0, // tri2 + 21, 22, 3 // tri3 + ), + gsSPNTriangles_5b( + 21, 23, 22, // tri0 + 1, 24, 2, // tri1 + 1, 20, 24, // tri2 + 7, 25, 9 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 9, // tri0 + 7, 12, 25, // tri1 + 27, 28, 29, // tri2 + 28, 10, 29 // tri3 + ), + gsSPNTriangles_5b( + 30, 31, 29, // tri0 + 31, 27, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_s_3_v[210], 32, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 3, 0, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 11, 8, 10, // tri2 + 12, 7, 6 // tri3 + ), + gsSPNTriangles_5b( + 13, 12, 6, // tri0 + 14, 15, 4, // tri1 + 16, 14, 4, // tri2 + 16, 4, 2 // tri3 + ), + gsSPNTriangles_5b( + 17, 16, 2, // tri0 + 17, 2, 1, // tri1 + 17, 1, 18, // tri2 + 19, 17, 18 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 22, // tri0 + 23, 20, 22, // tri1 + 11, 10, 24, // tri2 + 25, 18, 1 // tri3 + ), + gsSPNTriangles_5b( + 0, 25, 1, // tri0 + 26, 27, 28, // tri1 + 29, 30, 28, // tri2 + 30, 26, 28 // tri3 + ), + gsSPNTriangles_5b( + 29, 28, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_s_3_v[242], 14, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 4, 0, 2 // tri2 + ), + gsSPNTriangles_5b( + 3, 2, 5, // tri0 + 6, 7, 5, // tri1 + 7, 3, 5, // tri2 + 8, 9, 6 // tri3 + ), + gsSPNTriangles_5b( + 8, 6, 5, // tri0 + 8, 5, 2, // tri1 + 10, 8, 2, // tri2 + 10, 2, 1 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 1, 11, 13, // tri1 + 10, 1, 13, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c1_s_4/grd_s_c1_s_4.c b/src/data/field/bg/acre/grd_s_c1_s_4/grd_s_c1_s_4.c new file mode 100644 index 00000000..6b06c011 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c1_s_4/grd_s_c1_s_4.c @@ -0,0 +1,337 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c1_s_4_v[] = { +#include "assets/field/bg/grd_s_c1_s_4_v.inc" +}; + +extern Gfx grd_s_c1_s_4_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c1_s_4_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c1_s_4_v[248], 16, 0), + gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 1, 10, 11, // tri1 + 10, 7, 11, // tri2 + 8, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 12, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_s_4_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 7, 5, // tri0 + 7, 8, 5, // tri1 + 9, 10, 11, // tri2 + 12, 13, 10 // tri3 + ), + gsSPNTriangles_5b( + 8, 14, 5, // tri0 + 14, 15, 5, // tri1 + 15, 16, 5, // tri2 + 16, 6, 5 // tri3 + ), + gsSPNTriangles_5b( + 10, 13, 17, // tri0 + 3, 18, 19, // tri1 + 18, 20, 19, // tri2 + 18, 21, 20 // tri3 + ), + gsSPNTriangles_5b( + 4, 22, 7, // tri0 + 22, 23, 7, // tri1 + 4, 24, 22, // tri2 + 12, 4, 13 // tri3 + ), + gsSPNTriangles_5b( + 24, 4, 12, // tri0 + 25, 7, 23, // tri1 + 26, 27, 28, // tri2 + 29, 30, 28 // tri3 + ), + gsSPNTriangles_5b( + 29, 28, 31, // tri0 + 28, 27, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_s_4_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 2, 3 // tri2 + ), + gsSPNTriangles_5b( + 2, 4, 5, // tri0 + 6, 7, 8, // tri1 + 6, 8, 9, // tri2 + 10, 6, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 12, // tri0 + 7, 6, 10, // tri1 + 7, 10, 13, // tri2 + 7, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 13, 16, // tri0 + 17, 14, 13, // tri1 + 17, 13, 15, // tri2 + 18, 9, 8 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 9, // tri0 + 20, 18, 21, // tri1 + 20, 19, 18, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 27, // tri0 + 28, 29, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_s_4_v[63], 28, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 6, 9, 7, // tri0 + 7, 1, 8, // tri1 + 1, 0, 8, // tri2 + 7, 10, 1 // tri3 + ), + gsSPNTriangles_5b( + 7, 11, 10, // tri0 + 10, 12, 1, // tri1 + 13, 14, 15, // tri2 + 16, 14, 9 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 13, // tri0 + 17, 19, 18, // tri1 + 19, 20, 18, // tri2 + 20, 21, 18 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 23, // tri0 + 22, 24, 23, // tri1 + 20, 22, 21, // tri2 + 20, 25, 22 // tri3 + ), + gsSPNTriangles_5b( + 26, 25, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_s_4_v[91], 16, 0), + gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 6, 8, 7, // tri0 + 8, 3, 9, // tri1 + 10, 11, 12, // tri2 + 11, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 13, 5, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_s_4_v[107], 32, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 11, 6, 12, // tri1 + 13, 14, 15, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b( + 14, 19, 20, // tri0 + 19, 8, 21, // tri1 + 22, 16, 23, // tri2 + 24, 2, 25 // tri3 + ), + gsSPNTriangles_5b( + 0, 22, 1, // tri0 + 26, 27, 28, // tri1 + 29, 26, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_s_4_v[138], 32, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b( + 4, 8, 9, // tri0 + 8, 10, 11, // tri1 + 12, 13, 14, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 15, 19, // tri0 + 13, 20, 21, // tri1 + 20, 18, 22, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 16, 23, 26, // tri0 + 24, 27, 28, // tri1 + 27, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_s_4_v[169], 32, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 6, 3, 8, // tri0 + 9, 10, 11, // tri1 + 10, 5, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 15, 17, // tri0 + 18, 19, 20, // tri1 + 21, 22, 19, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 27, 28, // tri0 + 29, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_s_4_v[201], 3, 0), + gsSPNTrianglesInit_5b( + 1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_s_4_v[204], 32, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 7, 8, // tri0 + 4, 8, 5, // tri1 + 7, 9, 10, // tri2 + 7, 4, 9 // tri3 + ), + gsSPNTriangles_5b( + 7, 11, 8, // tri0 + 12, 13, 14, // tri1 + 15, 13, 12, // tri2 + 16, 15, 12 // tri3 + ), + gsSPNTriangles_5b( + 17, 12, 18, // tri0 + 17, 18, 19, // tri1 + 18, 12, 14, // tri2 + 18, 14, 20 // tri3 + ), + gsSPNTriangles_5b( + 2, 3, 18, // tri0 + 3, 19, 18, // tri1 + 2, 20, 21, // tri2 + 2, 18, 20 // tri3 + ), + gsSPNTriangles_5b( + 0, 22, 1, // tri0 + 21, 23, 2, // tri1 + 23, 0, 2, // tri2 + 23, 24, 0 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 27, // tri0 + 28, 29, 27, // tri1 + 29, 25, 27, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_s_4_v[234], 14, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 1, 3, 7, // tri0 + 1, 8, 2, // tri1 + 9, 10, 8, // tri2 + 10, 2, 8 // tri3 + ), + gsSPNTriangles_5b( + 11, 8, 12, // tri0 + 11, 9, 8, // tri1 + 12, 8, 13, // tri2 + 8, 1, 13 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c2_1/grd_s_c2_1.c b/src/data/field/bg/acre/grd_s_c2_1/grd_s_c2_1.c new file mode 100644 index 00000000..1609554b --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c2_1/grd_s_c2_1.c @@ -0,0 +1,288 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c2_1_v[] = { +#include "assets/field/bg/grd_s_c2_1_v.inc" +}; + +extern Gfx grd_s_c2_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c2_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c2_1_v[198], 23, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 7, 6, // tri0 + 8, 9, 10, // tri1 + 11, 12, 13, // tri2 + 0, 3, 1 // tri3 + ), + gsSPNTriangles_5b( + 9, 13, 10, // tri0 + 11, 14, 12, // tri1 + 15, 0, 2, // tri2 + 16, 15, 17 // tri3 + ), + gsSPNTriangles_5b( + 7, 18, 19, // tri0 + 18, 8, 20, // tri1 + 14, 21, 22, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c2_1_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 1 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 11, 9, 8, // tri1 + 12, 13, 14, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 15, // tri0 + 2, 20, 0, // tri1 + 21, 22, 23, // tri2 + 22, 24, 23 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 27, // tri0 + 28, 5, 29, // tri1 + 30, 20, 2, // tri2 + 5, 4, 31 // tri3 + ), + gsSPNTriangles_5b( + 15, 19, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_1_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 3, 5, 12, // tri1 + 9, 12, 13, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 9, 13, 10, // tri0 + 17, 18, 19, // tri1 + 12, 5, 20, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b( + 12, 20, 13, // tri0 + 22, 24, 23, // tri1 + 25, 17, 19, // tri2 + 26, 27, 0 // tri3 + ), + gsSPNTriangles_5b( + 28, 29, 0, // tri0 + 29, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_1_v[64], 24, 0), + gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 10, 12, 11, // tri1 + 13, 14, 15, // tri2 + 10, 16, 12 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 19, // tri0 + 20, 6, 8, // tri1 + 1, 4, 2, // tri2 + 21, 22, 2 // tri3 + ), + gsSPNTriangles_5b( + 23, 22, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c2_1_v[88], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 1, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c2_1_v[101], 27, 0), + gsSPNTrianglesInit_5b( + 32, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 2, 5, 3, // tri0 + 6, 7, 8, // tri1 + 6, 8, 9, // tri2 + 8, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 8, 11, 9, // tri0 + 12, 13, 11, // tri1 + 4, 2, 14, // tri2 + 4, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 16, 18, 6, // tri1 + 19, 16, 6, // tri2 + 19, 6, 9 // tri3 + ), + gsSPNTriangles_5b( + 2, 1, 20, // tri0 + 2, 20, 14, // tri1 + 1, 21, 22, // tri2 + 1, 22, 20 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 11, // tri0 + 18, 23, 7, // tri1 + 18, 7, 6, // tri2 + 4, 13, 12 // tri3 + ), + gsSPNTriangles_5b( + 4, 12, 5, // tri0 + 21, 1, 0, // tri1 + 24, 21, 0, // tri2 + 11, 13, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 19, 9, // tri0 + 11, 26, 9, // tri1 + 4, 15, 25, // tri2 + 13, 4, 25 // tri3 + ), + gsSPNTriangles_5b( + 11, 25, 26, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c2_1_v[128], 32, 0), + gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 5, 4, 10, // tri1 + 6, 11, 4, // tri2 + 7, 9, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 8, 7, // tri0 + 14, 15, 11, // tri1 + 16, 10, 17, // tri2 + 12, 18, 17 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 21, // tri0 + 22, 23, 24, // tri1 + 22, 24, 25, // tri2 + 3, 22, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 27, 28, // tri0 + 19, 21, 29, // tri1 + 27, 29, 28, // tri2 + 30, 31, 13 // tri3 + ), + gsSPVertex(&grd_s_c2_1_v[160], 11, 0), + gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c2_1_v[171], 27, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 6, 2 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 3, 7, 4, // tri1 + 10, 11, 6, // tri2 + 8, 12, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 13, 11, // tri0 + 13, 14, 15, // tri1 + 16, 17, 18, // tri2 + 17, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 19, 0, 21, // tri0 + 22, 23, 24, // tri1 + 25, 22, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c2_2/grd_s_c2_2.c b/src/data/field/bg/acre/grd_s_c2_2/grd_s_c2_2.c new file mode 100644 index 00000000..fc3b7e93 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c2_2/grd_s_c2_2.c @@ -0,0 +1,285 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c2_2_v[] = { +#include "assets/field/bg/grd_s_c2_2_v.inc" +}; + +extern Gfx grd_s_c2_2_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c2_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c2_2_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 8, 6, 7, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 12, 14, 13, // tri1 + 14, 15, 13, // tri2 + 16, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 12, // tri0 + 16, 18, 17, // tri1 + 9, 19, 10, // tri2 + 8, 20, 18 // tri3 + ), + gsSPNTriangles_5b( + 8, 21, 20, // tri0 + 22, 23, 4, // tri1 + 23, 5, 4, // tri2 + 8, 7, 24 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 27, // tri0 + 26, 28, 27, // tri1 + 29, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_2_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 3, 1, 4, // tri1 + 1, 0, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 9, 10, 11, // tri2 + 9, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 10, // tri0 + 14, 15, 16, // tri1 + 15, 17, 16, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 23, // tri0 + 24, 25, 26, // tri1 + 27, 28, 17, // tri2 + 27, 29, 28 // tri3 + ), + gsSPNTriangles_5b( + 29, 30, 28, // tri0 + 30, 31, 28, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_2_v[64], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 6, // tri0 + 7, 8, 9, // tri1 + 10, 11, 12, // tri2 + 13, 6, 14 // tri3 + ), + gsSPNTriangles_5b( + 0, 6, 13, // tri0 + 13, 15, 16, // tri1 + 11, 17, 18, // tri2 + 11, 15, 17 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 21, // tri0 + 22, 23, 19, // tri1 + 24, 25, 26, // tri2 + 22, 25, 24 // tri3 + ), + gsSPNTriangles_5b( + 22, 19, 25, // tri0 + 27, 28, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_2_v[94], 4, 0), + gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c2_2_v[98], 32, 0), + gsSPNTrianglesInit_5b( + 27, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 2, 5, 3, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 6, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 9, // tri0 + 12, 13, 9, // tri1 + 13, 7, 9, // tri2 + 4, 14, 1 // tri3 + ), + gsSPNTriangles_5b( + 4, 15, 14, // tri0 + 15, 16, 14, // tri1 + 13, 17, 7, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 9, 11, 12, // tri0 + 11, 5, 12, // tri1 + 21, 22, 23, // tri2 + 22, 24, 23 // tri3 + ), + gsSPNTriangles_5b( + 17, 21, 7, // tri0 + 17, 22, 21, // tri1 + 25, 18, 20, // tri2 + 18, 26, 19 // tri3 + ), + gsSPNTriangles_5b( + 26, 27, 19, // tri0 + 28, 29, 30, // tri1 + 28, 31, 29, // tri2 + 29, 25, 30 // tri3 + ), + gsSPVertex(&grd_s_c2_2_v[130], 31, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 3, 6, 5, // tri1 + 6, 7, 5, // tri2 + 7, 8, 5 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 7, 10, 9, // tri1 + 10, 11, 9, // tri2 + 11, 12, 9 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 13, 16, 14, // tri1 + 16, 17, 14, // tri2 + 17, 18, 14 // tri3 + ), + gsSPNTriangles_5b( + 17, 19, 18, // tri0 + 17, 20, 19, // tri1 + 20, 21, 19, // tri2 + 21, 22, 19 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 24, 26, 25, // tri1 + 26, 2, 25, // tri2 + 2, 27, 25 // tri3 + ), + gsSPNTriangles_5b( + 5, 28, 29, // tri0 + 5, 8, 28, // tri1 + 15, 14, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c2_2_v[161], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 5, // tri0 + 9, 10, 11, // tri1 + 7, 9, 8, // tri2 + 10, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 12, 14, 15, // tri0 + 16, 17, 18, // tri1 + 14, 18, 15, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 16, 19, 17, // tri0 + 20, 22, 23, // tri1 + 22, 24, 25, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 29, // tri0 + 30, 27, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_2_v[193], 32, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 9, 10, 11, // tri1 + 12, 9, 11, // tri2 + 6, 11, 10 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 12, // tri0 + 15, 16, 13, // tri1 + 17, 18, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 22, 24, // tri0 + 25, 26, 27, // tri1 + 28, 29, 26, // tri2 + 30, 27, 31 // tri3 + ), + gsSPVertex(&grd_s_c2_2_v[225], 3, 0), + gsSPNTrianglesInit_5b( + 1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c2_3/grd_s_c2_3.c b/src/data/field/bg/acre/grd_s_c2_3/grd_s_c2_3.c new file mode 100644 index 00000000..337d272d --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c2_3/grd_s_c2_3.c @@ -0,0 +1,307 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c2_3_v[] = { +#include "assets/field/bg/grd_s_c2_3_v.inc" +}; + +extern Gfx grd_s_c2_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c2_3_v[255], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 7, 8, 5 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c2_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c2_3_v[242], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c2_3_v[0], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 4, 6, 9, // tri2 + 7, 10, 8 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 11, 14, 12, // tri1 + 11, 15, 14, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(17, 19, 18, // tri0 + 20, 17, 21, // tri1 + 17, 22, 21, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b(23, 26, 24, // tri0 + 23, 20, 26, // tri1 + 24, 27, 25, // tri2 + 25, 27, 28 // tri3 + ), + gsSPNTriangles_5b(20, 21, 26, // tri0 + 25, 28, 9, // tri1 + 28, 4, 9, // tri2 + 29, 30, 31 // tri3 + ), + gsSPVertex(&grd_s_c2_3_v[32], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 6, 8, 9, // tri1 + 8, 10, 9, // tri2 + 8, 11, 10 // tri3 + ), + gsSPNTriangles_5b(11, 12, 10, // tri0 + 11, 13, 12, // tri1 + 11, 14, 13, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b(15, 18, 16, // tri0 + 18, 19, 16, // tri1 + 20, 21, 22, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b(23, 26, 24, // tri0 + 26, 27, 24, // tri1 + 28, 1, 29, // tri2 + 1, 0, 29 // tri3 + ), + gsSPNTriangles_5b(3, 12, 5, // tri0 + 12, 13, 5, // tri1 + 30, 15, 31, // tri2 + 15, 17, 31 // tri3 + ), + gsSPVertex(&grd_s_c2_3_v[64], 30, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 2, 6, // tri0 + 7, 8, 9, // tri1 + 10, 7, 9, // tri2 + 9, 11, 10 // tri3 + ), + gsSPNTriangles_5b(11, 9, 12, // tri0 + 11, 12, 13, // tri1 + 14, 13, 12, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b(15, 18, 16, // tri0 + 18, 19, 16, // tri1 + 20, 21, 22, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b(26, 27, 28, // tri0 + 29, 28, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c2_3_v[94], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(3, 8, 7, // tri0 + 9, 7, 6, // tri1 + 3, 5, 8, // tri2 + 0, 2, 10 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 11, 14, 12, // tri1 + 15, 16, 11, // tri2 + 17, 18, 15 // tri3 + ), + gsSPNTriangles_5b(19, 20, 17, // tri0 + 19, 21, 20, // tri1 + 19, 22, 21, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b(13, 25, 26, // tri0 + 27, 28, 29, // tri1 + 30, 27, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_3_v[126], 22, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 3, 8, // tri0 + 9, 10, 11, // tri1 + 12, 13, 14, // tri2 + 10, 15, 16 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 20, 17, 21, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c2_3_v[148], 32, 0), + gsSPNTrianglesInit_5b(30, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 7, 8, 5, // tri1 + 7, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 12, 14, 15, // tri1 + 14, 16, 15, // tri2 + 12, 15, 13 // tri3 + ), + gsSPNTriangles_5b(14, 17, 16, // tri0 + 17, 18, 16, // tri1 + 17, 19, 18, // tri2 + 20, 12, 21 // tri3 + ), + gsSPNTriangles_5b(12, 11, 21, // tri0 + 20, 14, 12, // tri1 + 20, 17, 14, // tri2 + 20, 22, 17 // tri3 + ), + gsSPNTriangles_5b(22, 19, 17, // tri0 + 3, 23, 2, // tri1 + 24, 25, 1, // tri2 + 25, 26, 1 // tri3 + ), + gsSPNTriangles_5b(1, 27, 24, // tri0 + 1, 0, 27, // tri1 + 27, 28, 24, // tri2 + 29, 24, 28 // tri3 + ), + gsSPNTriangles_5b(30, 31, 29, // tri0 + 31, 24, 29, // tri1 + 31, 25, 24, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_3_v[180], 27, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(4, 7, 6, // tri0 + 4, 8, 7, // tri1 + 8, 9, 7, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 12, 14, 13, // tri1 + 12, 15, 14, // tri2 + 12, 16, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 17, 18, 15, // tri1 + 17, 19, 18, // tri2 + 17, 20, 19 // tri3 + ), + gsSPNTriangles_5b(6, 21, 22, // tri0 + 6, 7, 21, // tri1 + 7, 9, 21, // tri2 + 9, 23, 21 // tri3 + ), + gsSPNTriangles_5b(13, 24, 25, // tri0 + 13, 14, 24, // tri1 + 14, 26, 24, // tri2 + 14, 15, 26 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c2_3_v[207], 22, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b(6, 7, 5, // tri0 + 8, 9, 7, // tri1 + 8, 10, 9, // tri2 + 10, 11, 9 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 14, 15, 13, // tri1 + 16, 17, 15, // tri2 + 18, 19, 17 // tri3 + ), + gsSPNTriangles_5b(18, 20, 19, // tri0 + 2, 21, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c2_3_v[229], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c2_3/grd_s_c2_3_evw_anime.c b/src/data/field/bg/acre/grd_s_c2_3/grd_s_c2_3_evw_anime.c new file mode 100644 index 00000000..92741639 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c2_3/grd_s_c2_3_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c2_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c2_3_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_c2_3_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_c2_r1_1/grd_s_c2_r1_1.c b/src/data/field/bg/acre/grd_s_c2_r1_1/grd_s_c2_r1_1.c new file mode 100644 index 00000000..a16ef51b --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c2_r1_1/grd_s_c2_r1_1.c @@ -0,0 +1,319 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c2_r1_1_v[] = { +#include "assets/field/bg/grd_s_c2_r1_1_v.inc" +}; + +extern Gfx grd_s_c2_r1_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c2_r1_1_v[243], 26, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 4, 6, 5, // tri1 + 7, 8, 9, // tri2 + 7, 9, 10 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 11, 13, 14, // tri1 + 15, 16, 17, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b(16, 19, 18, // tri0 + 16, 20, 19, // tri1 + 20, 21, 19, // tri2 + 21, 22, 19 // tri3 + ), + gsSPNTriangles_5b(23, 24, 25, // tri0 + 23, 21, 24, // tri1 + 23, 22, 21, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c2_r1_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c2_r1_1_v[228], 15, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(3, 5, 8, // tri0 + 6, 9, 10, // tri1 + 11, 12, 13, // tri2 + 12, 0, 14 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c2_r1_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(30, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 7, 8, 5, // tri1 + 9, 10, 11, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 15, 16, 17, // tri1 + 18, 16, 15, // tri2 + 14, 18, 15 // tri3 + ), + gsSPNTriangles_5b(12, 14, 13, // tri0 + 10, 12, 11, // tri1 + 19, 20, 4, // tri2 + 20, 7, 4 // tri3 + ), + gsSPNTriangles_5b(21, 12, 10, // tri0 + 21, 14, 12, // tri1 + 21, 22, 14, // tri2 + 22, 23, 14 // tri3 + ), + gsSPNTriangles_5b(23, 18, 14, // tri0 + 23, 16, 18, // tri1 + 23, 24, 16, // tri2 + 2, 25, 26 // tri3 + ), + gsSPNTriangles_5b(27, 2, 26, // tri0 + 28, 2, 27, // tri1 + 28, 0, 2, // tri2 + 2, 3, 25 // tri3 + ), + gsSPNTriangles_5b(3, 29, 25, // tri0 + 29, 30, 25, // tri1 + 29, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_r1_1_v[32], 6, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 1, 0, 3, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c2_r1_1_v[38], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 11, 13, 12, // tri2 + 11, 14, 13 // tri3 + ), + gsSPNTriangles_5b(11, 15, 14, // tri0 + 15, 16, 14, // tri1 + 15, 17, 16, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(18, 21, 19, // tri0 + 21, 21, 19, // tri1 + 21, 22, 19, // tri2 + 21, 23, 22 // tri3 + ), + gsSPNTriangles_5b(24, 25, 22, // tri0 + 25, 26, 22, // tri1 + 23, 24, 22, // tri2 + 27, 28, 29 // tri3 + ), + gsSPNTriangles_5b(27, 30, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_r1_1_v[69], 28, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 2, 5 // tri2 + ), + gsSPNTriangles_5b(4, 0, 2, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(8, 9, 6, // tri0 + 8, 10, 9, // tri1 + 11, 12, 13, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b(12, 15, 14, // tri0 + 15, 16, 14, // tri1 + 16, 17, 14, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 20, 22, 23, // tri1 + 20, 23, 24, // tri2 + 25, 26, 27 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c2_r1_1_v[97], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 2, 3, 4, // tri1 + 3, 5, 4, // tri2 + 2, 8, 0 // tri3 + ), + gsSPNTriangles_5b(9, 7, 10, // tri0 + 9, 6, 7, // tri1 + 10, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(14, 16, 15, // tri0 + 0, 17, 1, // tri1 + 0, 18, 17, // tri2 + 17, 19, 1 // tri3 + ), + gsSPNTriangles_5b(20, 15, 16, // tri0 + 14, 21, 16, // tri1 + 14, 22, 21, // tri2 + 14, 23, 22 // tri3 + ), + gsSPNTriangles_5b(15, 24, 13, // tri0 + 15, 25, 24, // tri1 + 25, 26, 24, // tri2 + 27, 19, 28 // tri3 + ), + gsSPNTriangles_5b(29, 6, 30, // tri0 + 6, 9, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_r1_1_v[128], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(4, 7, 6, // tri0 + 7, 8, 6, // tri1 + 7, 9, 8, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 14, 16, 15, // tri1 + 16, 17, 15, // tri2 + 18, 1, 19 // tri3 + ), + gsSPNTriangles_5b(20, 0, 13, // tri0 + 19, 0, 20, // tri1 + 1, 0, 19, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b(21, 24, 22, // tri0 + 24, 25, 22, // tri1 + 26, 27, 28, // tri2 + 29, 27, 26 // tri3 + ), + gsSPVertex(&grd_s_c2_r1_1_v[158], 8, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b(5, 4, 6, // tri0 + 4, 7, 6, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c2_r1_1_v[166], 15, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 9, 5, 11, // tri1 + 12, 8, 13, // tri2 + 1, 12, 14 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c2_r1_1_v[181], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 8, 9, // tri0 + 10, 5, 11, // tri1 + 12, 10, 13, // tri2 + 14, 12, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 19, 14, 20, // tri1 + 17, 19, 21, // tri2 + 4, 22, 3 // tri3 + ), + gsSPNTriangles_5b(9, 8, 22, // tri0 + 21, 19, 20, // tri1 + 13, 15, 12, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b(24, 26, 27, // tri0 + 28, 23, 29, // tri1 + 26, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_r1_1_v[213], 15, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(3, 5, 8, // tri0 + 6, 9, 10, // tri1 + 11, 12, 13, // tri2 + 2, 14, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c2_r1_1/grd_s_c2_r1_1_evw_anime.c b/src/data/field/bg/acre/grd_s_c2_r1_1/grd_s_c2_r1_1_evw_anime.c new file mode 100644 index 00000000..ab0627fc --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c2_r1_1/grd_s_c2_r1_1_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c2_r1_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c2_r1_1_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_c2_r1_1_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_c2_r1_2/grd_s_c2_r1_2.c b/src/data/field/bg/acre/grd_s_c2_r1_2/grd_s_c2_r1_2.c new file mode 100644 index 00000000..4f9ad821 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c2_r1_2/grd_s_c2_r1_2.c @@ -0,0 +1,328 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c2_r1_2_v[] = { +#include "assets/field/bg/grd_s_c2_r1_2_v.inc" +}; + +extern Gfx grd_s_c2_r1_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c2_r1_2_v[263], 19, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(6, 9, 8, // tri0 + 9, 10, 8, // tri1 + 10, 11, 8, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(13, 15, 14, // tri0 + 15, 16, 14, // tri1 + 15, 17, 16, // tri2 + 17, 18, 16 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c2_r1_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c2_r1_2_v[247], 16, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 4, 8, // tri0 + 9, 10, 11, // tri1 + 10, 7, 12, // tri2 + 7, 8, 12 // tri3 + ), + gsSPNTriangles_5b(5, 3, 13, // tri0 + 1, 14, 15, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c2_r1_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 13, 16, 14, // tri1 + 13, 17, 16, // tri2 + 13, 18, 17 // tri3 + ), + gsSPNTriangles_5b(19, 18, 20, // tri0 + 19, 20, 21, // tri1 + 22, 19, 21, // tri2 + 22, 21, 23 // tri3 + ), + gsSPNTriangles_5b(24, 25, 26, // tri0 + 25, 0, 26, // tri1 + 25, 1, 0, // tri2 + 27, 28, 29 // tri3 + ), + gsSPNTriangles_5b(27, 30, 28, // tri0 + 28, 31, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_r1_2_v[32], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b(3, 6, 5, // tri0 + 7, 8, 9, // tri1 + 10, 11, 12, // tri2 + 10, 13, 11 // tri3 + ), + gsSPNTriangles_5b(14, 15, 7, // tri0 + 14, 16, 15, // tri1 + 14, 17, 16, // tri2 + 14, 18, 17 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 22, 23, 24, // tri1 + 22, 24, 20, // tri2 + 20, 24, 21 // tri3 + ), + gsSPNTriangles_5b(25, 26, 27, // tri0 + 28, 29, 30, // tri1 + 29, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_r1_2_v[64], 17, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 1 // tri2 + ), + gsSPNTriangles_5b(0, 4, 1, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 10, 9, 6 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 12, 11, 14, // tri1 + 14, 15, 12, // tri2 + 14, 16, 15 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c2_r1_2_v[81], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 12, 10, 13 // tri3 + ), + gsSPNTriangles_5b(10, 14, 13, // tri0 + 15, 16, 17, // tri1 + 16, 5, 17, // tri2 + 13, 18, 19 // tri3 + ), + gsSPNTriangles_5b(20, 9, 21, // tri0 + 17, 20, 22, // tri1 + 23, 7, 24, // tri2 + 25, 26, 27 // tri3 + ), + gsSPNTriangles_5b(28, 25, 29, // tri0 + 26, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_r1_2_v[113], 22, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 13, 14, 15, // tri2 + 16, 17, 11 // tri3 + ), + gsSPNTriangles_5b(16, 8, 18, // tri0 + 16, 18, 17, // tri1 + 19, 20, 21, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c2_r1_2_v[135], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 6, // tri0 + 5, 4, 6, // tri1 + 3, 7, 5, // tri2 + 5, 8, 4 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 9, 12, 10, // tri1 + 10, 13, 11, // tri2 + 10, 14, 13 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 15, 18, 16, // tri1 + 18, 8, 16, // tri2 + 18, 4, 8 // tri3 + ), + gsSPNTriangles_5b(3, 19, 7, // tri0 + 3, 20, 19, // tri1 + 20, 21, 19, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b(22, 23, 21, // tri0 + 22, 24, 23, // tri1 + 24, 25, 23, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b(12, 27, 10, // tri0 + 12, 28, 27, // tri1 + 27, 29, 10, // tri2 + 27, 30, 29 // tri3 + ), + gsSPNTriangles_5b(30, 31, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_r1_2_v[167], 18, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(8, 11, 9, // tri0 + 11, 12, 9, // tri1 + 12, 13, 9, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b(12, 15, 14, // tri0 + 15, 16, 14, // tri1 + 16, 17, 14, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c2_r1_2_v[185], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 3, 2 // tri2 + ), + gsSPNTriangles_5b(4, 2, 5, // tri0 + 6, 5, 7, // tri1 + 8, 7, 9, // tri2 + 10, 9, 11 // tri3 + ), + gsSPNTriangles_5b(12, 11, 13, // tri0 + 14, 13, 15, // tri1 + 16, 15, 17, // tri2 + 18, 17, 19 // tri3 + ), + gsSPNTriangles_5b(20, 18, 19, // tri0 + 20, 19, 21, // tri1 + 22, 20, 21, // tri2 + 22, 21, 23 // tri3 + ), + gsSPNTriangles_5b(24, 25, 26, // tri0 + 25, 27, 26, // tri1 + 27, 28, 26, // tri2 + 27, 29, 28 // tri3 + ), + gsSPNTriangles_5b(29, 30, 28, // tri0 + 29, 31, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_r1_2_v[217], 14, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 7, 8, 5, // tri1 + 7, 9, 8, // tri2 + 7, 10, 9 // tri3 + ), + gsSPNTriangles_5b(10, 11, 9, // tri0 + 10, 12, 11, // tri1 + 12, 13, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c2_r1_2_v[231], 16, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 1, 10, 11, // tri1 + 8, 3, 12, // tri2 + 13, 7, 14 // tri3 + ), + gsSPNTriangles_5b(5, 13, 15, // tri0 + 13, 14, 15, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c2_r1_2/grd_s_c2_r1_2_evw_anime.c b/src/data/field/bg/acre/grd_s_c2_r1_2/grd_s_c2_r1_2_evw_anime.c new file mode 100644 index 00000000..2b693d42 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c2_r1_2/grd_s_c2_r1_2_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c2_r1_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c2_r1_2_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_c2_r1_2_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_c2_r2_1/grd_s_c2_r2_1.c b/src/data/field/bg/acre/grd_s_c2_r2_1/grd_s_c2_r2_1.c new file mode 100644 index 00000000..fbcd26e3 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c2_r2_1/grd_s_c2_r2_1.c @@ -0,0 +1,313 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c2_r2_1_v[] = { +#include "assets/field/bg/grd_s_c2_r2_1_v.inc" +}; + +extern Gfx grd_s_c2_r2_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c2_r2_1_v[228], 27, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 5, 9, 8, // tri2 + 5, 10, 9 // tri3 + ), + gsSPNTriangles_5b(6, 11, 12, // tri0 + 6, 7, 11, // tri1 + 12, 13, 14, // tri2 + 12, 11, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 14, 13, 15, // tri1 + 17, 18, 19, // tri2 + 17, 20, 18 // tri3 + ), + gsSPNTriangles_5b(20, 0, 2, // tri0 + 20, 17, 0, // tri1 + 21, 22, 23, // tri2 + 21, 24, 22 // tri3 + ), + gsSPNTriangles_5b(23, 25, 26, // tri0 + 23, 22, 25, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c2_r2_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c2_r2_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(6, 5, 7, // tri0 + 6, 7, 8, // tri1 + 8, 9, 10, // tri2 + 10, 9, 11 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 11, 9, 12, // tri1 + 8, 7, 9, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(17, 16, 15, // tri0 + 18, 19, 17, // tri1 + 20, 19, 18, // tri2 + 21, 22, 20 // tri3 + ), + gsSPNTriangles_5b(16, 23, 14, // tri0 + 17, 19, 16, // tri1 + 20, 22, 19, // tri2 + 23, 24, 14 // tri3 + ), + gsSPNTriangles_5b(25, 26, 3, // tri0 + 26, 2, 3, // tri1 + 27, 28, 1, // tri2 + 29, 30, 31 // tri3 + ), + gsSPVertex(&grd_s_c2_r2_1_v[32], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 4, 3, // tri0 + 5, 6, 4, // tri1 + 7, 6, 5, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 11, 12, 10, // tri1 + 12, 11, 13, // tri2 + 14, 13, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 16, 15, 17, // tri1 + 19, 20, 21, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b(24, 25, 26, // tri0 + 27, 28, 25, // tri1 + 29, 30, 28, // tri2 + 31, 7, 30 // tri3 + ), + gsSPNTriangles_5b(25, 24, 27, // tri0 + 28, 27, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c2_r2_1_v[64], 32, 0), + gsSPNTrianglesInit_5b(36, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 4, 1, // tri0 + 6, 7, 8, // tri1 + 9, 10, 8, // tri2 + 10, 6, 8 // tri3 + ), + gsSPNTriangles_5b(10, 11, 12, // tri0 + 12, 6, 10, // tri1 + 10, 13, 11, // tri2 + 10, 5, 13 // tri3 + ), + gsSPNTriangles_5b(10, 9, 5, // tri0 + 9, 4, 5, // tri1 + 5, 1, 13, // tri2 + 3, 14, 1 // tri3 + ), + gsSPNTriangles_5b(14, 13, 1, // tri0 + 3, 15, 14, // tri1 + 15, 16, 14, // tri2 + 15, 17, 16 // tri3 + ), + gsSPNTriangles_5b(17, 18, 16, // tri0 + 3, 0, 15, // tri1 + 15, 19, 17, // tri2 + 17, 20, 21 // tri3 + ), + gsSPNTriangles_5b(19, 20, 17, // tri0 + 15, 0, 19, // tri1 + 20, 22, 21, // tri2 + 23, 24, 22 // tri3 + ), + gsSPNTriangles_5b(22, 20, 23, // tri0 + 23, 25, 24, // tri1 + 23, 26, 25, // tri2 + 27, 28, 26 // tri3 + ), + gsSPNTriangles_5b(27, 29, 28, // tri0 + 26, 23, 27, // tri1 + 25, 30, 24, // tri2 + 25, 31, 30 // tri3 + ), + gsSPNTriangles_5b(25, 26, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_r2_1_v[96], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c2_r2_1_v[100], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 2, 14, 0, // tri1 + 2, 9, 14, // tri2 + 9, 11, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 21, 22, 23, // tri2 + 22, 19, 18 // tri3 + ), + gsSPNTriangles_5b(24, 25, 26, // tri0 + 27, 28, 29, // tri1 + 28, 30, 29, // tri2 + 28, 31, 30 // tri3 + ), + gsSPNTriangles_5b(7, 24, 6, // tri0 + 4, 3, 5, // tri1 + 3, 1, 5, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_r2_1_v[132], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(0, 5, 4, // tri0 + 3, 6, 2, // tri1 + 6, 7, 2, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 10, 12, 11, // tri1 + 9, 13, 10, // tri2 + 10, 14, 12 // tri3 + ), + gsSPNTriangles_5b(13, 15, 10, // tri0 + 15, 16, 10, // tri1 + 16, 17, 10, // tri2 + 17, 18, 10 // tri3 + ), + gsSPNTriangles_5b(18, 14, 10, // tri0 + 17, 19, 18, // tri1 + 17, 20, 19, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b(23, 24, 25, // tri0 + 24, 26, 27, // tri1 + 28, 29, 30, // tri2 + 29, 31, 30 // tri3 + ), + gsSPVertex(&grd_s_c2_r2_1_v[164], 6, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 0, 5, 4 // tri2 + ), + gsSPNTriangles_5b(3, 1, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c2_r2_1_v[170], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 3, 8, // tri0 + 9, 5, 10, // tri1 + 11, 9, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(14, 16, 17, // tri0 + 16, 11, 18, // tri1 + 3, 4, 8, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 22, 23, 24, // tri1 + 19, 25, 20, // tri2 + 26, 19, 21 // tri3 + ), + gsSPNTriangles_5b(27, 26, 28, // tri0 + 25, 29, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_r2_1_v[201], 27, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(1, 3, 7, // tri0 + 6, 8, 9, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 12, 16, // tri0 + 17, 18, 19, // tri1 + 18, 15, 20, // tri2 + 21, 17, 22 // tri3 + ), + gsSPNTriangles_5b(23, 21, 24, // tri0 + 25, 23, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c2_r2_1/grd_s_c2_r2_1_evw_anime.c b/src/data/field/bg/acre/grd_s_c2_r2_1/grd_s_c2_r2_1_evw_anime.c new file mode 100644 index 00000000..214a379e --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c2_r2_1/grd_s_c2_r2_1_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c2_r2_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c2_r2_1_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_c2_r2_1_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_c2_r2_2/grd_s_c2_r2_2.c b/src/data/field/bg/acre/grd_s_c2_r2_2/grd_s_c2_r2_2.c new file mode 100644 index 00000000..27086e7d --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c2_r2_2/grd_s_c2_r2_2.c @@ -0,0 +1,355 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c2_r2_2_v[] = { +#include "assets/field/bg/grd_s_c2_r2_2_v.inc" +}; + +extern Gfx grd_s_c2_r2_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c2_r2_2_v[257], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 15, 13, // tri0 + 15, 16, 13, // tri1 + 16, 17, 13, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b(18, 19, 17, // tri0 + 19, 20, 17, // tri1 + 19, 21, 20, // tri2 + 21, 22, 20 // tri3 + ), + gsSPNTriangles_5b(22, 7, 20, // tri0 + 22, 6, 7, // tri1 + 4, 23, 5, // tri2 + 4, 10, 23 // tri3 + ), + gsSPNTriangles_5b(10, 11, 23, // tri0 + 3, 1, 24, // tri1 + 25, 26, 27, // tri2 + 3, 24, 26 // tri3 + ), + gsSPNTriangles_5b(25, 3, 26, // tri0 + 28, 29, 30, // tri1 + 31, 28, 30, // tri2 + 25, 27, 29 // tri3 + ), + gsSPNTriangles_5b(28, 25, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c2_r2_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c2_r2_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(0, 2, 5, // tri0 + 6, 0, 5, // tri1 + 7, 8, 9, // tri2 + 7, 10, 8 // tri3 + ), + gsSPNTriangles_5b(10, 11, 8, // tri0 + 12, 13, 14, // tri1 + 13, 15, 14, // tri2 + 10, 16, 11 // tri3 + ), + gsSPNTriangles_5b(16, 17, 11, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20, // tri2 + 21, 22, 20 // tri3 + ), + gsSPNTriangles_5b(19, 23, 21, // tri0 + 19, 24, 23, // tri1 + 24, 25, 23, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b(26, 27, 25, // tri0 + 26, 28, 27, // tri1 + 28, 29, 27, // tri2 + 28, 30, 29 // tri3 + ), + gsSPNTriangles_5b(30, 31, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_r2_2_v[32], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 13, 16, 14, // tri1 + 17, 18, 19, // tri2 + 17, 20, 18 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 22, 24, 23, // tri1 + 22, 25, 24, // tri2 + 21, 26, 22 // tri3 + ), + gsSPNTriangles_5b(27, 28, 29, // tri0 + 30, 31, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_r2_2_v[64], 7, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 1, 3, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c2_r2_2_v[71], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 8, // tri0 + 9, 8, 7, // tri1 + 10, 9, 7, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(3, 13, 11, // tri0 + 1, 14, 15, // tri1 + 16, 17, 18, // tri2 + 19, 16, 20 // tri3 + ), + gsSPNTriangles_5b(17, 21, 22, // tri0 + 21, 23, 24, // tri1 + 25, 19, 26, // tri2 + 27, 28, 29 // tri3 + ), + gsSPNTriangles_5b(30, 27, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_r2_2_v[103], 10, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 8, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c2_r2_2_v[113], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 2, 4 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 8, 9, 7, // tri2 + 9, 10, 7 // tri3 + ), + gsSPNTriangles_5b(11, 10, 9, // tri0 + 11, 12, 10, // tri1 + 13, 14, 15, // tri2 + 13, 16, 14 // tri3 + ), + gsSPNTriangles_5b(16, 17, 14, // tri0 + 17, 8, 14, // tri1 + 15, 6, 5, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(19, 21, 20, // tri0 + 22, 23, 24, // tri1 + 22, 25, 23, // tri2 + 19, 26, 27 // tri3 + ), + gsSPNTriangles_5b(19, 28, 26, // tri0 + 29, 30, 31, // tri1 + 29, 5, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_r2_2_v[145], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 7, 10, 8, // tri1 + 11, 12, 13, // tri2 + 14, 15, 13 // tri3 + ), + gsSPNTriangles_5b(12, 14, 13, // tri0 + 10, 11, 8, // tri1 + 1, 16, 3, // tri2 + 16, 17, 3 // tri3 + ), + gsSPNTriangles_5b(17, 18, 3, // tri0 + 18, 19, 3, // tri1 + 18, 20, 19, // tri2 + 18, 21, 20 // tri3 + ), + gsSPNTriangles_5b(21, 22, 20, // tri0 + 21, 4, 22, // tri1 + 21, 23, 4, // tri2 + 23, 24, 4 // tri3 + ), + gsSPNTriangles_5b(24, 5, 4, // tri0 + 25, 26, 27, // tri1 + 26, 28, 27, // tri2 + 26, 7, 28 // tri3 + ), + gsSPNTriangles_5b(26, 29, 7, // tri0 + 29, 30, 7, // tri1 + 30, 10, 7, // tri2 + 30, 31, 10 // tri3 + ), + gsSPNTriangles_5b(31, 11, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_r2_2_v[177], 7, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 5, 6, 3, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c2_r2_2_v[184], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 8, 9, 7, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 14, 15, 16, // tri1 + 15, 17, 16, // tri2 + 17, 18, 16 // tri3 + ), + gsSPNTriangles_5b(17, 19, 18, // tri0 + 17, 20, 19, // tri1 + 20, 21, 19, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b(23, 24, 25, // tri0 + 24, 26, 25, // tri1 + 26, 27, 25, // tri2 + 26, 28, 27 // tri3 + ), + gsSPNTriangles_5b(28, 29, 27, // tri0 + 23, 30, 24, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_r2_2_v[215], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 7, 8, 5, // tri1 + 7, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 14, 15, 12, // tri1 + 14, 16, 15, // tri2 + 16, 17, 15 // tri3 + ), + gsSPNTriangles_5b(18, 19, 17, // tri0 + 20, 21, 19, // tri1 + 22, 23, 21, // tri2 + 22, 24, 23 // tri3 + ), + gsSPNTriangles_5b(24, 25, 23, // tri0 + 26, 27, 28, // tri1 + 26, 29, 27, // tri2 + 29, 30, 27 // tri3 + ), + gsSPNTriangles_5b(29, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_r2_2_v[247], 10, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(0, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 5, 8, 7 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c2_r2_2/grd_s_c2_r2_2_evw_anime.c b/src/data/field/bg/acre/grd_s_c2_r2_2/grd_s_c2_r2_2_evw_anime.c new file mode 100644 index 00000000..9f003415 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c2_r2_2/grd_s_c2_r2_2_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c2_r2_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c2_r2_2_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_c2_r2_2_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_c2_s_1/grd_s_c2_s_1.c b/src/data/field/bg/acre/grd_s_c2_s_1/grd_s_c2_s_1.c new file mode 100644 index 00000000..5bbe3f47 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c2_s_1/grd_s_c2_s_1.c @@ -0,0 +1,342 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c2_s_1_v[] = { +#include "assets/field/bg/grd_s_c2_s_1_v.inc" +}; + +extern Gfx grd_s_c2_s_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c2_s_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c2_s_1_v[246], 27, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 8, 9, // tri1 + 8, 10, 11, // tri2 + 10, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 17, 14, 18, // tri1 + 19, 17, 20, // tri2 + 21, 19, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 21, 24, // tri0 + 25, 23, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c2_s_1_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 7, 9, 8, // tri2 + 5, 10, 7 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 12, 14, 13, // tri1 + 15, 16, 8, // tri2 + 16, 6, 8 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 19, // tri0 + 20, 18, 21, // tri1 + 18, 22, 21, // tri2 + 22, 23, 21 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 14, // tri0 + 9, 13, 14, // tri1 + 24, 25, 26, // tri2 + 24, 27, 25 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 25, // tri0 + 28, 29, 25, // tri1 + 17, 30, 18, // tri2 + 30, 22, 18 // tri3 + ), + gsSPVertex(&grd_s_c2_s_1_v[31], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 7, 5, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 16, 17, 18, // tri1 + 19, 20, 21, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b( + 23, 25, 24, // tri0 + 2, 3, 25, // tri1 + 26, 27, 28, // tri2 + 0, 29, 1 // tri3 + ), + gsSPNTriangles_5b( + 30, 31, 24, // tri0 + 31, 22, 24, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_s_1_v[63], 32, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 4, // tri0 + 6, 7, 8, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 6, 13, 7, // tri0 + 1, 14, 5, // tri1 + 15, 16, 17, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 21, // tri0 + 22, 23, 24, // tri1 + 9, 25, 26, // tri2 + 27, 28, 29 // tri3 + ), + gsSPVertex(&grd_s_c2_s_1_v[93], 5, 0), + gsSPNTrianglesInit_5b( + 3, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c2_s_1_v[98], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 4 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 6, 8, 7, // tri1 + 9, 11, 12, // tri2 + 11, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 13, 17, 14, // tri1 + 18, 19, 20, // tri2 + 15, 18, 16 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 22, // tri0 + 21, 23, 24, // tri1 + 23, 25, 24, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b( + 29, 26, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_s_1_v[129], 17, 0), + gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 9, 6, 10, // tri1 + 7, 11, 12, // tri2 + 11, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 9, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c2_s_1_v[146], 32, 0), + gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 11, 9, // tri2 + 10, 9, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 11, 8, // tri0 + 13, 14, 11, // tri1 + 14, 15, 11, // tri2 + 9, 11, 16 // tri3 + ), + gsSPNTriangles_5b( + 11, 17, 16, // tri0 + 11, 15, 17, // tri1 + 18, 12, 19, // tri2 + 18, 10, 12 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 7, // tri0 + 20, 22, 21, // tri1 + 21, 5, 7, // tri2 + 23, 2, 24 // tri3 + ), + gsSPNTriangles_5b( + 23, 0, 2, // tri0 + 3, 25, 4, // tri1 + 25, 26, 4, // tri2 + 25, 27, 26 // tri3 + ), + gsSPNTriangles_5b( + 25, 28, 27, // tri0 + 29, 0, 30, // tri1 + 29, 3, 0, // tri2 + 29, 25, 3 // tri3 + ), + gsSPNTriangles_5b( + 29, 31, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_s_1_v[178], 32, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 7, 10, 8, // tri1 + 10, 11, 8, // tri2 + 11, 12, 8 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 13, 16, 14, // tri1 + 16, 17, 14, // tri2 + 17, 18, 14 // tri3 + ), + gsSPNTriangles_5b( + 17, 19, 18, // tri0 + 17, 20, 19, // tri1 + 20, 21, 19, // tri2 + 21, 22, 19 // tri3 + ), + gsSPNTriangles_5b( + 21, 23, 22, // tri0 + 21, 24, 23, // tri1 + 24, 25, 23, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b( + 24, 27, 26, // tri0 + 27, 28, 26, // tri1 + 15, 14, 29, // tri2 + 14, 30, 29 // tri3 + ), + gsSPNTriangles_5b( + 14, 18, 30, // tri0 + 18, 19, 30, // tri1 + 19, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_s_1_v[210], 9, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c2_s_1_v[219], 27, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 7, 9, 10, // tri1 + 1, 11, 12, // tri2 + 11, 6, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 17, 14, 18, // tri1 + 19, 20, 21, // tri2 + 15, 19, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 24, 17, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c2_s_2/grd_s_c2_s_2.c b/src/data/field/bg/acre/grd_s_c2_s_2/grd_s_c2_s_2.c new file mode 100644 index 00000000..3dee6e3b --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c2_s_2/grd_s_c2_s_2.c @@ -0,0 +1,323 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c2_s_2_v[] = { +#include "assets/field/bg/grd_s_c2_s_2_v.inc" +}; + +extern Gfx grd_s_c2_s_2_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c2_s_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c2_s_2_v[217], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c2_s_2_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 29, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 4, 0, 5, // tri0 + 0, 6, 5, // tri1 + 6, 7, 5, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 7, // tri0 + 10, 11, 12, // tri1 + 11, 13, 12, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 16, 18, 17, // tri1 + 17, 19, 15, // tri2 + 17, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 21, 16, 15, // tri0 + 21, 22, 16, // tri1 + 15, 19, 21, // tri2 + 0, 2, 23 // tri3 + ), + gsSPNTriangles_5b( + 0, 24, 25, // tri0 + 0, 23, 24, // tri1 + 6, 0, 25, // tri2 + 6, 25, 26 // tri3 + ), + gsSPNTriangles_5b( + 27, 8, 6, // tri0 + 27, 6, 26, // tri1 + 28, 13, 11, // tri2 + 29, 28, 11 // tri3 + ), + gsSPNTriangles_5b( + 30, 29, 11, // tri0 + 30, 11, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_s_2_v[32], 22, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 3, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 2, 5, // tri0 + 1, 6, 7, // tri1 + 1, 7, 8, // tri2 + 2, 1, 8 // tri3 + ), + gsSPNTriangles_5b( + 2, 8, 9, // tri0 + 2, 9, 10, // tri1 + 5, 2, 10, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 14, // tri0 + 13, 15, 14, // tri1 + 12, 16, 17, // tri2 + 18, 19, 16 // tri3 + ), + gsSPNTriangles_5b( + 18, 16, 12, // tri0 + 18, 12, 11, // tri1 + 20, 18, 11, // tri2 + 21, 20, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 17, 13, // tri0 + 14, 21, 11, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c2_s_2_v[54], 32, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 3, // tri0 + 5, 6, 3, // tri1 + 5, 7, 6, // tri2 + 6, 8, 9 // tri3 + ), + gsSPNTriangles_5b( + 3, 6, 9, // tri0 + 10, 11, 12, // tri1 + 11, 13, 12, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 16, // tri0 + 13, 18, 19, // tri1 + 20, 21, 16, // tri2 + 17, 20, 16 // tri3 + ), + gsSPNTriangles_5b( + 20, 22, 21, // tri0 + 18, 23, 19, // tri1 + 24, 25, 26, // tri2 + 25, 27, 26 // tri3 + ), + gsSPNTriangles_5b( + 28, 29, 30, // tri0 + 29, 31, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_s_2_v[86], 32, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 11, 9, // tri1 + 12, 13, 14, // tri2 + 15, 7, 9 // tri3 + ), + gsSPNTriangles_5b( + 13, 12, 16, // tri0 + 8, 10, 9, // tri1 + 17, 18, 4, // tri2 + 17, 19, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 18, // tri0 + 18, 5, 4, // tri1 + 21, 22, 23, // tri2 + 1, 12, 14 // tri3 + ), + gsSPNTriangles_5b( + 1, 0, 12, // tri0 + 24, 25, 26, // tri1 + 24, 27, 25, // tri2 + 24, 28, 27 // tri3 + ), + gsSPNTriangles_5b( + 29, 17, 4, // tri0 + 29, 30, 17, // tri1 + 29, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_s_2_v[118], 32, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 3, // tri0 + 8, 9, 10, // tri1 + 11, 12, 13, // tri2 + 9, 14, 10 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 9, 18, 14, // tri1 + 12, 11, 10, // tri2 + 10, 14, 12 // tri3 + ), + gsSPNTriangles_5b( + 19, 12, 14, // tri0 + 0, 2, 20, // tri1 + 21, 12, 19, // tri2 + 22, 13, 23 // tri3 + ), + gsSPNTriangles_5b( + 23, 4, 22, // tri0 + 24, 25, 26, // tri1 + 27, 24, 1, // tri2 + 24, 27, 25 // tri3 + ), + gsSPNTriangles_5b( + 28, 29, 30, // tri0 + 29, 31, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_s_2_v[150], 12, 0), + gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 1, 0, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 4, // tri0 + 2, 1, 8, // tri1 + 8, 9, 2, // tri2 + 4, 7, 10 // tri3 + ), + gsSPNTriangles_5b( + 7, 11, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c2_s_2_v[162], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 6, 8, 9, // tri1 + 10, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 13, 15, 11, // tri0 + 14, 16, 17, // tri1 + 18, 4, 19, // tri2 + 20, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 23, // tri0 + 24, 23, 25, // tri1 + 16, 25, 17, // tri2 + 22, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 26, 27, 28, // tri0 + 29, 26, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_s_2_v[193], 11, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 7, 9, 10, // tri0 + 9, 3, 5, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c2_s_2_v[204], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c2_s_3/grd_s_c2_s_3.c b/src/data/field/bg/acre/grd_s_c2_s_3/grd_s_c2_s_3.c new file mode 100644 index 00000000..fe67a54e --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c2_s_3/grd_s_c2_s_3.c @@ -0,0 +1,328 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c2_s_3_v[] = { +#include "assets/field/bg/grd_s_c2_s_3_v.inc" +}; + +extern Gfx grd_s_c2_s_3_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c2_s_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c2_s_3_v[204], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c2_s_3_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 31, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 3, 2, 5, // tri0 + 2, 6, 5, // tri1 + 6, 7, 5, // tri2 + 2, 4, 8 // tri3 + ), + gsSPNTriangles_5b( + 2, 8, 6, // tri0 + 7, 6, 9, // tri1 + 7, 9, 10, // tri2 + 6, 8, 11 // tri3 + ), + gsSPNTriangles_5b( + 6, 11, 9, // tri0 + 10, 9, 12, // tri1 + 10, 12, 13, // tri2 + 9, 11, 14 // tri3 + ), + gsSPNTriangles_5b( + 9, 14, 12, // tri0 + 13, 12, 15, // tri1 + 13, 15, 16, // tri2 + 12, 14, 17 // tri3 + ), + gsSPNTriangles_5b( + 12, 17, 15, // tri0 + 16, 15, 18, // tri1 + 15, 19, 18, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 21, // tri0 + 15, 21, 19, // tri1 + 22, 23, 24, // tri2 + 22, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 23, 26, 27, // tri0 + 23, 27, 24, // tri1 + 28, 29, 30, // tri2 + 28, 30, 31 // tri3 + ), + gsSPVertex(&grd_s_c2_s_3_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 34, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 2, 6, 4, // tri0 + 6, 7, 4, // tri1 + 7, 8, 4, // tri2 + 7, 9, 8 // tri3 + ), + gsSPNTriangles_5b( + 7, 10, 9, // tri0 + 10, 11, 9, // tri1 + 10, 12, 11, // tri2 + 12, 13, 11 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 11, // tri0 + 1, 6, 2, // tri1 + 1, 15, 6, // tri2 + 15, 16, 7 // tri3 + ), + gsSPNTriangles_5b( + 15, 7, 6, // tri0 + 16, 17, 10, // tri1 + 16, 10, 7, // tri2 + 17, 18, 10 // tri3 + ), + gsSPNTriangles_5b( + 18, 12, 10, // tri0 + 18, 13, 12, // tri1 + 18, 19, 13, // tri2 + 19, 20, 13 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 20, // tri0 + 21, 22, 20, // tri1 + 22, 23, 20, // tri2 + 13, 24, 14 // tri3 + ), + gsSPNTriangles_5b( + 13, 20, 24, // tri0 + 20, 25, 24, // tri1 + 20, 26, 25, // tri2 + 20, 23, 26 // tri3 + ), + gsSPNTriangles_5b( + 23, 27, 26, // tri0 + 28, 29, 30, // tri1 + 29, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_s_3_v[64], 13, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 7, // tri0 + 6, 8, 9, // tri1 + 6, 9, 7, // tri2 + 9, 8, 10 // tri3 + ), + gsSPNTriangles_5b( + 8, 2, 10, // tri0 + 2, 11, 10, // tri1 + 11, 2, 3, // tri2 + 11, 3, 12 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c2_s_3_v[77], 32, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 7, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 10, // tri0 + 12, 9, 10, // tri1 + 13, 14, 15, // tri2 + 15, 14, 16 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 15, // tri0 + 18, 17, 19, // tri1 + 16, 19, 17, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 20, 22, 23, // tri0 + 22, 24, 25, // tri1 + 22, 25, 23, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b( + 24, 27, 26, // tri0 + 27, 28, 26, // tri1 + 20, 2, 3, // tri2 + 20, 3, 21 // tri3 + ), + gsSPNTriangles_5b( + 29, 8, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_s_3_v[107], 32, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 4, 7, 5, // tri0 + 3, 8, 4, // tri1 + 9, 10, 11, // tri2 + 12, 9, 11 // tri3 + ), + gsSPNTriangles_5b( + 8, 3, 13, // tri0 + 14, 15, 16, // tri1 + 14, 17, 15, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 18, 20, 21, // tri0 + 21, 22, 18, // tri1 + 16, 23, 24, // tri2 + 15, 23, 16 // tri3 + ), + gsSPNTriangles_5b( + 18, 25, 26, // tri0 + 25, 27, 26, // tri1 + 26, 19, 18, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b( + 29, 31, 30, // tri0 + 31, 2, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_s_3_v[139], 23, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 5, 1, 0, // tri0 + 6, 4, 0, // tri1 + 7, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 7, 11, 8, // tri0 + 7, 12, 11, // tri1 + 12, 13, 11, // tri2 + 14, 6, 15 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 17, 18, 19, // tri1 + 17, 16, 18, // tri2 + 6, 0, 15 // tri3 + ), + gsSPNTriangles_5b( + 2, 20, 21, // tri0 + 15, 22, 16, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c2_s_3_v[162], 29, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 8, 6, 10, // tri1 + 11, 12, 13, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 15, 17, 16, // tri1 + 15, 18, 17, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 3, // tri0 + 3, 22, 23, // tri1 + 23, 24, 25, // tri2 + 25, 26, 27 // tri3 + ), + gsSPNTriangles_5b( + 26, 28, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c2_s_3_v[191], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c3_1/grd_s_c3_1.c b/src/data/field/bg/acre/grd_s_c3_1/grd_s_c3_1.c new file mode 100644 index 00000000..d72411d4 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c3_1/grd_s_c3_1.c @@ -0,0 +1,299 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c3_1_v[] = { +#include "assets/field/bg/grd_s_c3_1_v.inc" +}; + +extern Gfx grd_s_c3_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c3_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c3_1_v[221], 23, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 13, 17, // tri0 + 0, 16, 18, // tri1 + 19, 0, 20, // tri2 + 21, 19, 22 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c3_1_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 7, 5, // tri0 + 5, 8, 6, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 13, 4, 6, // tri0 + 13, 14, 4, // tri1 + 13, 15, 16, // tri2 + 15, 17, 16 // tri3 + ), + gsSPNTriangles_5b( + 18, 16, 17, // tri0 + 14, 13, 19, // tri1 + 20, 21, 22, // tri2 + 21, 23, 22 // tri3 + ), + gsSPNTriangles_5b( + 24, 25, 26, // tri0 + 25, 27, 26, // tri1 + 25, 28, 27, // tri2 + 25, 29, 28 // tri3 + ), + gsSPNTriangles_5b( + 29, 30, 28, // tri0 + 29, 31, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_1_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 6, 3 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 8, 10, 9, // tri1 + 11, 12, 13, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 19, // tri0 + 17, 20, 18, // tri1 + 21, 22, 23, // tri2 + 21, 24, 22 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 27, // tri0 + 26, 28, 29, // tri1 + 28, 17, 29, // tri2 + 8, 30, 10 // tri3 + ), + gsSPNTriangles_5b( + 30, 31, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_1_v[64], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 2, 1, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 9, 10, 11, // tri1 + 10, 12, 11, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 14, 13, // tri0 + 15, 17, 18, // tri1 + 19, 20, 6, // tri2 + 19, 21, 20 // tri3 + ), + gsSPNTriangles_5b( + 19, 22, 21, // tri0 + 23, 24, 25, // tri1 + 26, 27, 28, // tri2 + 22, 29, 21 // tri3 + ), + gsSPNTriangles_5b( + 30, 31, 29, // tri0 + 22, 30, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c3_1_v[96], 32, 0), + gsSPNTrianglesInit_5b( + 32, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 2, 6, // tri0 + 5, 0, 2, // tri1 + 0, 7, 1, // tri2 + 7, 8, 1 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 10, 12, 11, // tri1 + 13, 14, 15, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 14, 17, 16, // tri0 + 18, 19, 13, // tri1 + 5, 20, 21, // tri2 + 5, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 21, 12, 10, // tri0 + 21, 10, 22, // tri1 + 9, 23, 24, // tri2 + 23, 19, 24 // tri3 + ), + gsSPNTriangles_5b( + 13, 15, 18, // tri0 + 23, 9, 11, // tri1 + 17, 25, 16, // tri2 + 17, 26, 25 // tri3 + ), + gsSPNTriangles_5b( + 5, 27, 20, // tri0 + 27, 28, 20, // tri1 + 18, 24, 19, // tri2 + 7, 9, 29 // tri3 + ), + gsSPNTriangles_5b( + 7, 29, 8, // tri0 + 9, 24, 30, // tri1 + 9, 30, 29, // tri2 + 24, 18, 31 // tri3 + ), + gsSPNTriangles_5b( + 24, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_1_v[128], 9, 0), + gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 8, // tri2 + 5, 8, 6 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c3_1_v[137], 32, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 0, // tri0 + 8, 9, 6, // tri1 + 10, 11, 8, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 13, 12, // tri0 + 13, 14, 15, // tri1 + 16, 17, 18, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 19, 23, // tri0 + 24, 25, 26, // tri1 + 27, 28, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_1_v[167], 30, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 1 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 9, 0, 2, // tri1 + 10, 11, 12, // tri2 + 11, 13, 12 // tri3 + ), + gsSPNTriangles_5b( + 6, 8, 14, // tri0 + 13, 6, 14, // tri1 + 15, 10, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 22, // tri0 + 23, 24, 20, // tri1 + 25, 26, 23, // tri2 + 27, 28, 25 // tri3 + ), + gsSPNTriangles_5b( + 19, 29, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c3_1_v[197], 24, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 8, 3, 10, // tri1 + 11, 12, 13, // tri2 + 14, 11, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 12, 16, 19, // tri1 + 20, 21, 22, // tri2 + 21, 14, 23 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c3_2/grd_s_c3_2.c b/src/data/field/bg/acre/grd_s_c3_2/grd_s_c3_2.c new file mode 100644 index 00000000..3d337463 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c3_2/grd_s_c3_2.c @@ -0,0 +1,302 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c3_2_v[] = { +#include "assets/field/bg/grd_s_c3_2_v.inc" +}; + +extern Gfx grd_s_c3_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c3_2_v[217], 7, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 1, // tri0 + 5, 6, 1, // tri1 + 6, 2, 1, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c3_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c3_2_v[200], 17, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 3, 8, // tri0 + 3, 4, 8, // tri1 + 9, 10, 11, // tri2 + 12, 9, 11 // tri3 + ), + gsSPNTriangles_5b(1, 12, 13, // tri0 + 9, 14, 10, // tri1 + 14, 15, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c3_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(2, 4, 7, // tri0 + 8, 9, 10, // tri1 + 11, 8, 10, // tri2 + 12, 13, 3 // tri3 + ), + gsSPNTriangles_5b(12, 14, 13, // tri0 + 13, 14, 15, // tri1 + 16, 13, 15, // tri2 + 17, 16, 18 // tri3 + ), + gsSPNTriangles_5b(19, 17, 20, // tri0 + 21, 19, 22, // tri1 + 21, 22, 23, // tri2 + 24, 21, 23 // tri3 + ), + gsSPNTriangles_5b(24, 23, 9, // tri0 + 25, 26, 27, // tri1 + 26, 28, 29, // tri2 + 28, 30, 31 // tri3 + ), + gsSPVertex(&grd_s_c3_2_v[32], 7, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c3_2_v[39], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(0, 5, 4, // tri0 + 0, 6, 7, // tri1 + 6, 8, 7, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b(9, 12, 10, // tri0 + 13, 14, 15, // tri1 + 13, 16, 14, // tri2 + 16, 17, 14 // tri3 + ), + gsSPNTriangles_5b(17, 18, 14, // tri0 + 18, 19, 14, // tri1 + 20, 16, 13, // tri2 + 19, 21, 14 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 23, 21, 24, // tri1 + 23, 14, 21, // tri2 + 22, 25, 26 // tri3 + ), + gsSPNTriangles_5b(22, 24, 25, // tri0 + 26, 27, 28, // tri1 + 26, 29, 27, // tri2 + 26, 25, 29 // tri3 + ), + gsSPNTriangles_5b(27, 30, 28, // tri0 + 30, 31, 28, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_2_v[71], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 8, 9, 6, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 11, 14, 13, // tri1 + 15, 16, 17, // tri2 + 16, 14, 17 // tri3 + ), + gsSPNTriangles_5b(17, 18, 15, // tri0 + 0, 14, 16, // tri1 + 19, 20, 21, // tri2 + 21, 1, 19 // tri3 + ), + gsSPNTriangles_5b(0, 2, 14, // tri0 + 18, 20, 19, // tri1 + 22, 5, 7, // tri2 + 14, 2, 13 // tri3 + ), + gsSPNTriangles_5b(23, 24, 25, // tri0 + 26, 25, 24, // tri1 + 27, 25, 26, // tri2 + 8, 28, 9 // tri3 + ), + gsSPNTriangles_5b(28, 29, 9, // tri0 + 28, 30, 29, // tri1 + 23, 25, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_2_v[103], 10, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 5, // tri0 + 3, 8, 4, // tri1 + 3, 9, 8, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c3_2_v[113], 32, 0), + gsSPNTrianglesInit_5b(33, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 14, 16, 15, // tri1 + 16, 17, 15, // tri2 + 17, 18, 15 // tri3 + ), + gsSPNTriangles_5b(14, 19, 16, // tri0 + 19, 17, 16, // tri1 + 14, 20, 19, // tri2 + 19, 21, 17 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 23, 11, 24, // tri1 + 11, 12, 24, // tri2 + 12, 25, 24 // tri3 + ), + gsSPNTriangles_5b(23, 9, 11, // tri0 + 23, 26, 9, // tri1 + 27, 28, 9, // tri2 + 28, 10, 9 // tri3 + ), + gsSPNTriangles_5b(29, 2, 27, // tri0 + 29, 30, 2, // tri1 + 2, 28, 27, // tri2 + 2, 3, 28 // tri3 + ), + gsSPNTriangles_5b(30, 31, 2, // tri0 + 31, 0, 2, // tri1 + 31, 14, 0, // tri2 + 31, 20, 14 // tri3 + ), + gsSPNTriangles_5b(14, 13, 0, // tri0 + 13, 4, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_2_v[145], 15, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 1, 6, 3, // tri1 + 1, 7, 6, // tri2 + 6, 8, 3 // tri3 + ), + gsSPNTriangles_5b(8, 5, 3, // tri0 + 7, 9, 6, // tri1 + 9, 10, 6, // tri2 + 9, 11, 10 // tri3 + ), + gsSPNTriangles_5b(11, 12, 10, // tri0 + 9, 13, 11, // tri1 + 11, 14, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c3_2_v[160], 23, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 6, 8, 9, // tri1 + 8, 10, 11, // tri2 + 11, 12, 8 // tri3 + ), + gsSPNTriangles_5b(13, 11, 10, // tri0 + 10, 14, 13, // tri1 + 14, 15, 16, // tri2 + 15, 17, 16 // tri3 + ), + gsSPNTriangles_5b(18, 19, 7, // tri0 + 7, 4, 18, // tri1 + 18, 3, 19, // tri2 + 18, 2, 3 // tri3 + ), + gsSPNTriangles_5b(17, 20, 21, // tri0 + 20, 22, 21, // tri1 + 12, 9, 8, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c3_2_v[183], 17, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(4, 9, 10, // tri0 + 11, 3, 12, // tri1 + 13, 14, 15, // tri2 + 1, 11, 16 // tri3 + ), + gsSPNTriangles_5b(13, 6, 14, // tri0 + 9, 13, 15, // tri1 + 11, 12, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c3_2/grd_s_c3_2_evw_anime.c b/src/data/field/bg/acre/grd_s_c3_2/grd_s_c3_2_evw_anime.c new file mode 100644 index 00000000..cd492cd5 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c3_2/grd_s_c3_2_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c3_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c3_2_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_c3_2_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_c3_3/grd_s_c3_3.c b/src/data/field/bg/acre/grd_s_c3_3/grd_s_c3_3.c new file mode 100644 index 00000000..086979a9 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c3_3/grd_s_c3_3.c @@ -0,0 +1,304 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c3_3_v[] = { +#include "assets/field/bg/grd_s_c3_3_v.inc" +}; + +extern Gfx grd_s_c3_3_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c3_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c3_3_v[182], 28, 0), + gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 11, 8, 12, // tri1 + 13, 14, 15, // tri2 + 16, 6, 17 // tri3 + ), + gsSPNTriangles_5b( + 4, 18, 19, // tri0 + 20, 21, 22, // tri1 + 23, 24, 21, // tri2 + 18, 15, 19 // tri3 + ), + gsSPNTriangles_5b( + 23, 25, 24, // tri0 + 20, 23, 21, // tri1 + 1, 26, 22, // tri2 + 26, 20, 22 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 27, // tri0 + 25, 16, 27, // tri1 + 13, 11, 14, // tri2 + 11, 12, 14 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c3_3_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 3, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 12, 5, 7 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 14, // tri0 + 15, 14, 13, // tri1 + 16, 17, 15, // tri2 + 16, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 18, // tri0 + 20, 22, 21, // tri1 + 20, 11, 22, // tri2 + 23, 24, 3 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 24, // tri0 + 27, 28, 26, // tri1 + 27, 29, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_3_v[30], 32, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 7, 6, // tri0 + 1, 8, 2, // tri1 + 9, 10, 11, // tri2 + 12, 11, 13 // tri3 + ), + gsSPNTriangles_5b( + 10, 13, 11, // tri0 + 14, 9, 15, // tri1 + 3, 14, 4, // tri2 + 16, 14, 3 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 12, // tri0 + 8, 17, 2, // tri1 + 19, 0, 2, // tri2 + 0, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 21, 20, 19, // tri0 + 22, 23, 24, // tri1 + 25, 26, 27, // tri2 + 28, 29, 24 // tri3 + ), + gsSPNTriangles_5b( + 29, 30, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_3_v[61], 20, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 9, 8, 10, // tri0 + 11, 12, 13, // tri1 + 13, 14, 11, // tri2 + 11, 14, 10 // tri3 + ), + gsSPNTriangles_5b( + 15, 12, 11, // tri0 + 15, 16, 12, // tri1 + 4, 16, 5, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 19, 15, 17, // tri0 + 19, 5, 15, // tri1 + 5, 16, 15, // tri2 + 6, 1, 7 // tri3 + ), + gsSPNTriangles_5b( + 17, 7, 18, // tri0 + 1, 18, 7, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c3_3_v[81], 32, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 9, 10, 8, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 14, // tri0 + 13, 15, 14, // tri1 + 15, 16, 14, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b( + 17, 19, 18, // tri0 + 19, 20, 18, // tri1 + 20, 21, 22, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 24, 26, 27, // tri0 + 26, 28, 29, // tri1 + 28, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_3_v[113], 5, 0), + gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c3_3_v[118], 32, 0), + gsSPNTrianglesInit_5b( + 38, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 3, 6, // tri0 + 5, 2, 3, // tri1 + 7, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 11, 14, 12, // tri1 + 12, 15, 13, // tri2 + 16, 12, 14 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 12, // tri0 + 17, 18, 12, // tri1 + 18, 15, 12, // tri2 + 11, 7, 14 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 14, // tri0 + 9, 16, 14, // tri1 + 9, 19, 16, // tri2 + 10, 20, 9 // tri3 + ), + gsSPNTriangles_5b( + 20, 19, 9, // tri0 + 8, 21, 10, // tri1 + 21, 22, 10, // tri2 + 22, 20, 10 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 20, // tri0 + 21, 24, 22, // tri1 + 21, 25, 24, // tri2 + 24, 23, 22 // tri3 + ), + gsSPNTriangles_5b( + 24, 26, 23, // tri0 + 25, 4, 24, // tri1 + 4, 6, 24, // tri2 + 6, 26, 24 // tri3 + ), + gsSPNTriangles_5b( + 6, 27, 26, // tri0 + 3, 28, 6, // tri1 + 28, 27, 6, // tri2 + 1, 28, 3 // tri3 + ), + gsSPNTriangles_5b( + 1, 29, 28, // tri0 + 0, 30, 1, // tri1 + 0, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_3_v[150], 4, 0), + gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c3_3_v[154], 28, 0), + gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 4, // tri0 + 5, 7, 6, // tri1 + 8, 9, 10, // tri2 + 11, 8, 10 // tri3 + ), + gsSPNTriangles_5b( + 7, 11, 12, // tri0 + 7, 12, 6, // tri1 + 13, 14, 15, // tri2 + 16, 13, 17 // tri3 + ), + gsSPNTriangles_5b( + 8, 18, 9, // tri0 + 18, 16, 19, // tri1 + 20, 21, 22, // tri2 + 14, 22, 15 // tri3 + ), + gsSPNTriangles_5b( + 20, 23, 21, // tri0 + 23, 24, 21, // tri1 + 25, 26, 27, // tri2 + 23, 25, 24 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c3_r1_1/grd_s_c3_r1_1.c b/src/data/field/bg/acre/grd_s_c3_r1_1/grd_s_c3_r1_1.c new file mode 100644 index 00000000..6f89250a --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c3_r1_1/grd_s_c3_r1_1.c @@ -0,0 +1,292 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c3_r1_1_v[] = { +#include "assets/field/bg/grd_s_c3_r1_1_v.inc" +}; + +extern Gfx grd_s_c3_r1_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c3_r1_1_v[222], 12, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 3, 2 // tri2 + ), + gsSPNTriangles_5b(4, 2, 5, // tri0 + 6, 4, 5, // tri1 + 6, 5, 7, // tri2 + 6, 7, 8 // tri3 + ), + gsSPNTriangles_5b(9, 6, 8, // tri0 + 10, 11, 9, // tri1 + 10, 9, 8, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c3_r1_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c3_r1_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 2 // tri2 + ), + gsSPNTriangles_5b(5, 0, 2, // tri0 + 5, 4, 6, // tri1 + 7, 8, 9, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(10, 13, 11, // tri0 + 11, 14, 12, // tri1 + 11, 15, 16, // tri2 + 11, 13, 15 // tri3 + ), + gsSPNTriangles_5b(17, 11, 16, // tri0 + 17, 18, 11, // tri1 + 17, 19, 18, // tri2 + 14, 20, 12 // tri3 + ), + gsSPNTriangles_5b(20, 21, 12, // tri0 + 22, 23, 24, // tri1 + 23, 25, 24, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b(27, 29, 28, // tri0 + 30, 31, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_r1_1_v[32], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 5, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(8, 15, 9, // tri0 + 16, 17, 18, // tri1 + 16, 19, 17, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(23, 24, 25, // tri0 + 23, 26, 24, // tri1 + 24, 27, 25, // tri2 + 27, 28, 25 // tri3 + ), + gsSPNTriangles_5b(29, 2, 1, // tri0 + 2, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_r1_1_v[64], 29, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 8, 9, 10, // tri1 + 11, 12, 13, // tri2 + 11, 14, 12 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20, // tri2 + 18, 0, 19 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 22, 25, 23, // tri1 + 25, 26, 23, // tri2 + 27, 25, 22 // tri3 + ), + gsSPNTriangles_5b(28, 25, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c3_r1_1_v[93], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 1, 5 // tri2 + ), + gsSPNTriangles_5b(4, 6, 1, // tri0 + 7, 8, 9, // tri1 + 10, 11, 12, // tri2 + 5, 10, 13 // tri3 + ), + gsSPNTriangles_5b(14, 3, 15, // tri0 + 16, 17, 18, // tri1 + 19, 7, 20, // tri2 + 19, 20, 17 // tri3 + ), + gsSPNTriangles_5b(11, 16, 18, // tri0 + 21, 22, 23, // tri1 + 24, 21, 25, // tri2 + 22, 26, 27 // tri3 + ), + gsSPNTriangles_5b(26, 28, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_r1_1_v[123], 29, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 5, 9, // tri0 + 6, 10, 11, // tri1 + 10, 12, 13, // tri2 + 14, 8, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 19, 16, 20, // tri1 + 21, 22, 23, // tri2 + 24, 21, 25 // tri3 + ), + gsSPNTriangles_5b(17, 26, 27, // tri0 + 26, 24, 28, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c3_r1_1_v[152], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 1, 0, // tri0 + 3, 6, 4, // tri1 + 7, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b(8, 11, 10, // tri0 + 11, 12, 10, // tri1 + 11, 13, 12, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b(13, 6, 14, // tri0 + 6, 3, 14, // tri1 + 5, 15, 1, // tri2 + 5, 16, 15 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 17, 20, 18, // tri1 + 18, 21, 19, // tri2 + 21, 22, 19 // tri3 + ), + gsSPNTriangles_5b(21, 23, 22, // tri0 + 23, 24, 22, // tri1 + 23, 25, 24, // tri2 + 25, 26, 24 // tri3 + ), + gsSPNTriangles_5b(25, 27, 26, // tri0 + 27, 28, 26, // tri1 + 27, 29, 28, // tri2 + 29, 30, 28 // tri3 + ), + gsSPNTriangles_5b(29, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c3_r1_1_v[184], 32, 0), + gsSPNTrianglesInit_5b(37, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(4, 7, 6, // tri0 + 7, 8, 6, // tri1 + 2, 9, 10, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(12, 14, 13, // tri0 + 12, 9, 14, // tri1 + 9, 15, 14, // tri2 + 11, 16, 12 // tri3 + ), + gsSPNTriangles_5b(16, 10, 12, // tri0 + 10, 9, 12, // tri1 + 1, 9, 2, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(17, 20, 18, // tri0 + 1, 19, 18, // tri1 + 1, 0, 19, // tri2 + 21, 4, 3 // tri3 + ), + gsSPNTriangles_5b(11, 3, 16, // tri0 + 11, 21, 3, // tri1 + 22, 20, 23, // tri2 + 20, 17, 23 // tri3 + ), + gsSPNTriangles_5b(24, 25, 23, // tri0 + 25, 22, 23, // tri1 + 26, 27, 4, // tri2 + 27, 7, 4 // tri3 + ), + gsSPNTriangles_5b(28, 4, 21, // tri0 + 28, 26, 4, // tri1 + 13, 28, 11, // tri2 + 28, 21, 11 // tri3 + ), + gsSPNTriangles_5b(29, 9, 1, // tri0 + 29, 15, 9, // tri1 + 30, 29, 18, // tri2 + 29, 1, 18 // tri3 + ), + gsSPNTriangles_5b(31, 18, 20, // tri0 + 31, 30, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_r1_1_v[216], 6, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b(0, 2, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c3_r1_1/grd_s_c3_r1_1_evw_anime.c b/src/data/field/bg/acre/grd_s_c3_r1_1/grd_s_c3_r1_1_evw_anime.c new file mode 100644 index 00000000..79c94094 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c3_r1_1/grd_s_c3_r1_1_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c3_r1_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c3_r1_1_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_c3_r1_1_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_c3_r1_2/grd_s_c3_r1_2.c b/src/data/field/bg/acre/grd_s_c3_r1_2/grd_s_c3_r1_2.c new file mode 100644 index 00000000..cc697f9b --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c3_r1_2/grd_s_c3_r1_2.c @@ -0,0 +1,312 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c3_r1_2_v[] = { +#include "assets/field/bg/grd_s_c3_r1_2_v.inc" +}; + +extern Gfx grd_s_c3_r1_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c3_r1_2_v[237], 18, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 13, 14, 12, // tri1 + 13, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c3_r1_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c3_r1_2_v[223], 14, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b(6, 4, 7, // tri0 + 8, 6, 9, // tri1 + 10, 8, 11, // tri2 + 12, 10, 13 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c3_r1_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 7, 8, // tri1 + 9, 10, 11, // tri2 + 9, 12, 10 // tri3 + ), + gsSPNTriangles_5b(11, 13, 7, // tri0 + 11, 10, 13, // tri1 + 13, 8, 7, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(14, 17, 15, // tri0 + 14, 18, 17, // tri1 + 14, 19, 18, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(21, 23, 22, // tri0 + 23, 19, 22, // tri1 + 20, 24, 21, // tri2 + 20, 25, 24 // tri3 + ), + gsSPNTriangles_5b(26, 27, 28, // tri0 + 27, 29, 28, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_r1_2_v[30], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 1, // tri0 + 8, 3, 1, // tri1 + 3, 9, 2, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(10, 13, 11, // tri0 + 13, 14, 15, // tri1 + 13, 10, 14, // tri2 + 16, 0, 17 // tri3 + ), + gsSPNTriangles_5b(16, 1, 0, // tri0 + 18, 6, 19, // tri1 + 6, 20, 19, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b(21, 24, 22, // tri0 + 24, 25, 22, // tri1 + 26, 27, 28, // tri2 + 27, 29, 28 // tri3 + ), + gsSPVertex(&grd_s_c3_r1_2_v[60], 28, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 13, 14, // tri1 + 6, 12, 14, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 21, 22, 23, // tri1 + 24, 22, 21, // tri2 + 25, 26, 27 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c3_r1_2_v[88], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 4, 8, // tri0 + 5, 9, 10, // tri1 + 9, 11, 12, // tri2 + 13, 7, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 15, 18, 19, // tri1 + 20, 19, 18, // tri2 + 21, 20, 18 // tri3 + ), + gsSPNTriangles_5b(22, 23, 21, // tri0 + 2, 24, 22, // tri1 + 0, 25, 26, // tri2 + 27, 28, 29 // tri3 + ), + gsSPNTriangles_5b(30, 27, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_r1_2_v[120], 10, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 8, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c3_r1_2_v[130], 31, 0), + gsSPNTrianglesInit_5b(37, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 7, 0, 6, // tri1 + 4, 8, 2, // tri2 + 8, 0, 2 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 10, 12, 11, // tri1 + 12, 13, 11, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 14, 16, 15, // tri1 + 16, 17, 15, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b(18, 19, 17, // tri0 + 3, 20, 4, // tri1 + 3, 21, 20, // tri2 + 18, 16, 22 // tri3 + ), + gsSPNTriangles_5b(16, 23, 22, // tri0 + 16, 24, 23, // tri1 + 16, 14, 24, // tri2 + 14, 12, 24 // tri3 + ), + gsSPNTriangles_5b(12, 25, 24, // tri0 + 12, 10, 25, // tri1 + 10, 26, 25, // tri2 + 10, 27, 26 // tri3 + ), + gsSPNTriangles_5b(27, 28, 26, // tri0 + 28, 29, 26, // tri1 + 28, 7, 29, // tri2 + 28, 0, 7 // tri3 + ), + gsSPNTriangles_5b(4, 30, 5, // tri0 + 4, 20, 30, // tri1 + 0, 28, 1, // tri2 + 28, 27, 1 // tri3 + ), + gsSPNTriangles_5b(27, 9, 1, // tri0 + 27, 10, 9, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c3_r1_2_v[161], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(3, 7, 4, // tri0 + 7, 8, 4, // tri1 + 9, 10, 11, // tri2 + 10, 8, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 14, // tri0 + 13, 15, 14, // tri1 + 16, 17, 18, // tri2 + 17, 19, 18 // tri3 + ), + gsSPNTriangles_5b(20, 21, 18, // tri0 + 21, 16, 18, // tri1 + 22, 23, 24, // tri2 + 23, 20, 24 // tri3 + ), + gsSPNTriangles_5b(25, 26, 24, // tri0 + 26, 22, 24, // tri1 + 27, 28, 19, // tri2 + 17, 27, 19 // tri3 + ), + gsSPNTriangles_5b(23, 21, 20, // tri0 + 29, 26, 25, // tri1 + 30, 29, 25, // tri2 + 30, 25, 0 // tri3 + ), + gsSPNTriangles_5b(2, 30, 0, // tri0 + 31, 1, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_r1_2_v[193], 16, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 13, 10, 12, // tri2 + 2, 14, 15 // tri3 + ), + gsSPNTriangles_5b(0, 2, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c3_r1_2_v[209], 14, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 8, 5, 9, // tri1 + 10, 11, 12, // tri2 + 11, 3, 13 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c3_r1_2/grd_s_c3_r1_2_evw_anime.c b/src/data/field/bg/acre/grd_s_c3_r1_2/grd_s_c3_r1_2_evw_anime.c new file mode 100644 index 00000000..3bdc4bb1 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c3_r1_2/grd_s_c3_r1_2_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c3_r1_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c3_r1_2_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_c3_r1_2_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_c3_r2_1/grd_s_c3_r2_1.c b/src/data/field/bg/acre/grd_s_c3_r2_1/grd_s_c3_r2_1.c new file mode 100644 index 00000000..4ba6b5d2 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c3_r2_1/grd_s_c3_r2_1.c @@ -0,0 +1,360 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c3_r2_1_v[] = { +#include "assets/field/bg/grd_s_c3_r2_1_v.inc" +}; + +extern Gfx grd_s_c3_r2_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c3_r2_1_v[281], 24, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 0 // tri2 + ), + gsSPNTriangles_5b(5, 1, 0, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 10, 9, 6 // tri3 + ), + gsSPNTriangles_5b(10, 11, 9, // tri0 + 12, 13, 10, // tri1 + 13, 11, 10, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(17, 14, 16, // tri0 + 18, 17, 16, // tri1 + 19, 15, 20, // tri2 + 21, 19, 20 // tri3 + ), + gsSPNTriangles_5b(16, 15, 19, // tri0 + 16, 19, 22, // tri1 + 16, 22, 23, // tri2 + 18, 16, 23 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c3_r2_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c3_r2_1_v[245], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 13, 9, // tri1 + 14, 15, 16, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(19, 13, 12, // tri0 + 2, 19, 20, // tri1 + 7, 1, 8, // tri2 + 10, 21, 11 // tri3 + ), + gsSPNTriangles_5b(22, 15, 14, // tri0 + 23, 22, 24, // tri1 + 21, 25, 26, // tri2 + 25, 23, 27 // tri3 + ), + gsSPNTriangles_5b(28, 29, 30, // tri0 + 17, 28, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_r2_1_v[276], 5, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 0, 0, 0 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c3_r2_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(35, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(0, 5, 1, // tri0 + 0, 6, 5, // tri1 + 7, 8, 9, // tri2 + 7, 10, 8 // tri3 + ), + gsSPNTriangles_5b(10, 11, 8, // tri0 + 11, 12, 8, // tri1 + 11, 13, 12, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b(13, 15, 14, // tri0 + 15, 16, 14, // tri1 + 1, 17, 18, // tri2 + 18, 3, 1 // tri3 + ), + gsSPNTriangles_5b(18, 19, 3, // tri0 + 18, 20, 21, // tri1 + 18, 21, 19, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b(20, 23, 22, // tri0 + 20, 24, 23, // tri1 + 20, 25, 24, // tri2 + 25, 26, 24 // tri3 + ), + gsSPNTriangles_5b(15, 27, 16, // tri0 + 9, 8, 28, // tri1 + 8, 29, 28, // tri2 + 29, 8, 12 // tri3 + ), + gsSPNTriangles_5b(14, 30, 12, // tri0 + 12, 30, 29, // tri1 + 30, 14, 16, // tri2 + 27, 31, 16 // tri3 + ), + gsSPNTriangles_5b(16, 31, 30, // tri0 + 27, 5, 31, // tri1 + 5, 6, 31, // tri2 + 19, 4, 3 // tri3 + ), + gsSPVertex(&grd_s_c3_r2_1_v[32], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 2, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 4, // tri0 + 5, 7, 6, // tri1 + 4, 6, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c3_r2_1_v[40], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 8, 9, 10, // tri1 + 8, 11, 9, // tri2 + 8, 12, 11 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 13, 15, 16, // tri1 + 17, 14, 13, // tri2 + 7, 18, 15 // tri3 + ), + gsSPNTriangles_5b(19, 17, 13, // tri0 + 16, 15, 18, // tri1 + 18, 7, 20, // tri2 + 20, 7, 4 // tri3 + ), + gsSPNTriangles_5b(11, 21, 22, // tri0 + 11, 12, 21, // tri1 + 22, 23, 0, // tri2 + 22, 21, 23 // tri3 + ), + gsSPNTriangles_5b(0, 23, 1, // tri0 + 24, 25, 26, // tri1 + 24, 27, 25, // tri2 + 28, 27, 24 // tri3 + ), + gsSPNTriangles_5b(28, 29, 27, // tri0 + 30, 29, 28, // tri1 + 30, 31, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_r2_1_v[72], 14, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 2 // tri2 + ), + gsSPNTriangles_5b(5, 4, 6, // tri0 + 6, 7, 8, // tri1 + 9, 8, 10, // tri2 + 9, 11, 8 // tri3 + ), + gsSPNTriangles_5b(2, 3, 4, // tri0 + 12, 13, 11, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c3_r2_1_v[86], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 0, 9, 5, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 14, 16, 15, // tri1 + 17, 18, 19, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b(21, 0, 22, // tri0 + 0, 2, 22, // tri1 + 21, 9, 0, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b(23, 26, 24, // tri0 + 27, 28, 29, // tri1 + 28, 30, 29, // tri2 + 27, 31, 28 // tri3 + ), + gsSPVertex(&grd_s_c3_r2_1_v[118], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 5, 6, 7, // tri1 + 8, 9, 10, // tri2 + 8, 11, 9 // tri3 + ), + gsSPNTriangles_5b(11, 12, 9, // tri0 + 12, 13, 9, // tri1 + 14, 15, 16, // tri2 + 15, 17, 16 // tri3 + ), + gsSPNTriangles_5b(15, 18, 17, // tri0 + 19, 20, 21, // tri1 + 22, 23, 24, // tri2 + 22, 25, 23 // tri3 + ), + gsSPNTriangles_5b(22, 26, 25, // tri0 + 25, 27, 23, // tri1 + 27, 28, 23, // tri2 + 27, 21, 28 // tri3 + ), + gsSPNTriangles_5b(22, 29, 26, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_r2_1_v[148], 16, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 3, 6, 2, // tri1 + 7, 8, 9, // tri2 + 10, 9, 11 // tri3 + ), + gsSPNTriangles_5b(9, 8, 11, // tri0 + 8, 12, 11, // tri1 + 13, 14, 15, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c3_r2_1_v[164], 32, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 3, 8, // tri0 + 9, 5, 10, // tri1 + 11, 12, 13, // tri2 + 14, 11, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 17, 14, 19, // tri1 + 20, 21, 22, // tri2 + 23, 20, 24 // tri3 + ), + gsSPNTriangles_5b(21, 16, 25, // tri0 + 0, 26, 27, // tri1 + 28, 0, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_r2_1_v[194], 16, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 5, 9, // tri0 + 6, 10, 11, // tri1 + 10, 0, 12, // tri2 + 13, 8, 14 // tri3 + ), + gsSPNTriangles_5b(3, 15, 4, // tri0 + 5, 7, 9, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c3_r2_1_v[210], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 9, 6, 11, // tri1 + 12, 13, 14, // tri2 + 15, 12, 16 // tri3 + ), + gsSPNTriangles_5b(13, 17, 18, // tri0 + 17, 19, 20, // tri1 + 21, 15, 22, // tri2 + 23, 2, 24 // tri3 + ), + gsSPNTriangles_5b(0, 25, 26, // tri0 + 25, 27, 28, // tri1 + 29, 8, 10, // tri2 + 20, 19, 29 // tri3 + ), + gsSPNTriangles_5b(28, 27, 30, // tri0 + 30, 21, 22, // tri1 + 31, 23, 24, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_r2_1_v[242], 3, 0), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c3_r2_1/grd_s_c3_r2_1_evw_anime.c b/src/data/field/bg/acre/grd_s_c3_r2_1/grd_s_c3_r2_1_evw_anime.c new file mode 100644 index 00000000..ed70ba53 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c3_r2_1/grd_s_c3_r2_1_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c3_r2_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c3_r2_1_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_c3_r2_1_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_c3_r2_2/grd_s_c3_r2_2.c b/src/data/field/bg/acre/grd_s_c3_r2_2/grd_s_c3_r2_2.c new file mode 100644 index 00000000..1e93ffbe --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c3_r2_2/grd_s_c3_r2_2.c @@ -0,0 +1,365 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c3_r2_2_v[] = { +#include "assets/field/bg/grd_s_c3_r2_2_v.inc" +}; + +extern Gfx grd_s_c3_r2_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c3_r2_2_v[280], 25, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b(0, 2, 5, // tri0 + 3, 6, 7, // tri1 + 3, 1, 6, // tri2 + 7, 8, 9 // tri3 + ), + gsSPNTriangles_5b(7, 6, 8, // tri0 + 10, 11, 12, // tri1 + 10, 12, 13, // tri2 + 14, 15, 11 // tri3 + ), + gsSPNTriangles_5b(14, 11, 10, // tri0 + 14, 16, 17, // tri1 + 14, 17, 15, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b(16, 19, 18, // tri0 + 19, 20, 18, // tri1 + 19, 21, 20, // tri2 + 19, 22, 21 // tri3 + ), + gsSPNTriangles_5b(19, 23, 22, // tri0 + 19, 24, 23, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c3_r2_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c3_r2_2_v[269], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c3_r2_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 2, 9, 0, // tri2 + 10, 2, 3 // tri3 + ), + gsSPNTriangles_5b(9, 2, 11, // tri0 + 11, 2, 4, // tri1 + 11, 12, 13, // tri2 + 4, 12, 11 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 15, 17, 16, // tri1 + 18, 7, 8, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 23, 25, 24, // tri1 + 23, 26, 25, // tri2 + 27, 28, 29 // tri3 + ), + gsSPVertex(&grd_s_c3_r2_2_v[30], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 7, 8, 5, // tri1 + 7, 9, 8, // tri2 + 9, 7, 10 // tri3 + ), + gsSPNTriangles_5b(11, 10, 7, // tri0 + 7, 3, 11, // tri1 + 12, 13, 14, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 21, 22, 23, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(27, 25, 24, // tri0 + 28, 29, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_r2_2_v[60], 29, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(0, 2, 7, // tri0 + 9, 10, 11, // tri1 + 9, 12, 10, // tri2 + 13, 10, 14 // tri3 + ), + gsSPNTriangles_5b(11, 15, 16, // tri0 + 17, 18, 19, // tri1 + 17, 20, 18, // tri2 + 20, 21, 20 // tri3 + ), + gsSPNTriangles_5b(21, 22, 20, // tri0 + 21, 23, 22, // tri1 + 23, 24, 25, // tri2 + 14, 10, 12 // tri3 + ), + gsSPNTriangles_5b(26, 27, 28, // tri0 + 27, 20, 28, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c3_r2_2_v[89], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 4, 1, 7, // tri1 + 1, 0, 7, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 8, 12, 9, // tri1 + 13, 14, 15, // tri2 + 13, 16, 14 // tri3 + ), + gsSPNTriangles_5b(15, 17, 13, // tri0 + 15, 18, 17, // tri1 + 19, 20, 21, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b(21, 13, 17, // tri0 + 21, 22, 13, // tri1 + 11, 23, 24, // tri2 + 11, 25, 23 // tri3 + ), + gsSPNTriangles_5b(26, 27, 28, // tri0 + 26, 29, 27, // tri1 + 27, 30, 28, // tri2 + 30, 31, 28 // tri3 + ), + gsSPVertex(&grd_s_c3_r2_2_v[121], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 6, 7, 1, // tri1 + 7, 4, 1, // tri2 + 8, 9, 6 // tri3 + ), + gsSPNTriangles_5b(9, 7, 6, // tri0 + 10, 11, 12, // tri1 + 11, 13, 12, // tri2 + 10, 12, 8 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 15, 17, 16, // tri1 + 18, 19, 20, // tri2 + 19, 21, 20 // tri3 + ), + gsSPNTriangles_5b(21, 22, 20, // tri0 + 19, 23, 21, // tri1 + 23, 24, 21, // tri2 + 23, 25, 24 // tri3 + ), + gsSPNTriangles_5b(25, 26, 24, // tri0 + 25, 27, 26, // tri1 + 27, 28, 26, // tri2 + 28, 29, 26 // tri3 + ), + gsSPNTriangles_5b(29, 30, 26, // tri0 + 29, 31, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_r2_2_v[153], 6, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c3_r2_2_v[159], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(5, 13, 6, // tri0 + 5, 9, 13, // tri1 + 9, 14, 13, // tri2 + 9, 11, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 15, 18, 16, // tri1 + 18, 3, 16, // tri2 + 18, 4, 3 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 22, 23, 24, // tri1 + 23, 25, 24, // tri2 + 25, 26, 24 // tri3 + ), + gsSPNTriangles_5b(25, 27, 26, // tri0 + 27, 28, 26, // tri1 + 27, 29, 28, // tri2 + 27, 30, 29 // tri3 + ), + gsSPNTriangles_5b(30, 31, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_r2_2_v[191], 31, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 4, 8, 7 // tri3 + ), + gsSPNTriangles_5b(9, 10, 8, // tri0 + 11, 12, 10, // tri1 + 13, 14, 12, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b(15, 17, 18, // tri0 + 17, 19, 18, // tri1 + 17, 20, 19, // tri2 + 17, 21, 20 // tri3 + ), + gsSPNTriangles_5b(21, 22, 20, // tri0 + 21, 23, 22, // tri1 + 21, 24, 23, // tri2 + 24, 25, 23 // tri3 + ), + gsSPNTriangles_5b(24, 26, 25, // tri0 + 24, 27, 26, // tri1 + 27, 28, 26, // tri2 + 27, 29, 28 // tri3 + ), + gsSPNTriangles_5b(29, 30, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c3_r2_2_v[222], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 3, 5 // tri2 + ), + gsSPNTriangles_5b(4, 6, 3, // tri0 + 7, 8, 9, // tri1 + 10, 11, 12, // tri2 + 11, 13, 12 // tri3 + ), + gsSPNTriangles_5b(13, 14, 12, // tri0 + 2, 10, 15, // tri1 + 16, 6, 17, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(21, 7, 22, // tri0 + 21, 22, 19, // tri1 + 14, 18, 20, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b(26, 27, 28, // tri0 + 29, 26, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_r2_2_v[253], 5, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c3_r2_2_v[258], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 0, 8, // tri0 + 9, 5, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c3_r2_2/grd_s_c3_r2_2_evw_anime.c b/src/data/field/bg/acre/grd_s_c3_r2_2/grd_s_c3_r2_2_evw_anime.c new file mode 100644 index 00000000..70633e65 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c3_r2_2/grd_s_c3_r2_2_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c3_r2_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c3_r2_2_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_c3_r2_2_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_c3_s_1/grd_s_c3_s_1.c b/src/data/field/bg/acre/grd_s_c3_s_1/grd_s_c3_s_1.c new file mode 100644 index 00000000..9ecd0e41 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c3_s_1/grd_s_c3_s_1.c @@ -0,0 +1,322 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c3_s_1_v[] = { +#include "assets/field/bg/grd_s_c3_s_1_v.inc" +}; + +extern Gfx grd_s_c3_s_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c3_s_1_v[329], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c3_s_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c3_s_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 0, 3 // tri2 + ), + gsSPNTriangles_5b(3, 5, 1, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b(9, 11, 8, // tri0 + 12, 13, 14, // tri1 + 12, 15, 13, // tri2 + 15, 16, 13 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 17, 20, 18, // tri1 + 20, 21, 18, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b(25, 26, 27, // tri0 + 28, 29, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_s_1_v[31], 32, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 13, 14, 15, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(15, 19, 13, // tri0 + 20, 21, 22, // tri1 + 8, 7, 23, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(27, 4, 6, // tri0 + 28, 24, 19, // tri1 + 29, 30, 17, // tri2 + 24, 13, 19 // tri3 + ), + gsSPVertex(&grd_s_c3_s_1_v[62], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 5, // tri0 + 9, 7, 5, // tri1 + 10, 11, 12, // tri2 + 7, 13, 8 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 17, 18, 19, // tri1 + 20, 21, 10, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b(13, 17, 8, // tri0 + 18, 22, 24, // tri1 + 13, 25, 17, // tri2 + 13, 26, 25 // tri3 + ), + gsSPNTriangles_5b(27, 14, 16, // tri0 + 10, 12, 20, // tri1 + 28, 22, 25, // tri2 + 29, 30, 31 // tri3 + ), + gsSPVertex(&grd_s_c3_s_1_v[94], 28, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 1, 14, 6, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(2, 17, 0, // tri0 + 18, 19, 20, // tri1 + 19, 18, 21, // tri2 + 22, 19, 21 // tri3 + ), + gsSPNTriangles_5b(15, 23, 16, // tri0 + 22, 21, 24, // tri1 + 25, 26, 27, // tri2 + 26, 22, 27 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c3_s_1_v[122], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(9, 13, 10, // tri0 + 3, 1, 14, // tri1 + 15, 16, 17, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 24, 25, 26, // tri1 + 27, 28, 29, // tri2 + 21, 27, 22 // tri3 + ), + gsSPNTriangles_5b(27, 29, 22, // tri0 + 25, 14, 1, // tri1 + 30, 12, 23, // tri2 + 25, 1, 26 // tri3 + ), + gsSPNTriangles_5b(30, 11, 12, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_s_1_v[153], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 6, 8, // tri0 + 10, 5, 11, // tri1 + 2, 1, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(6, 16, 7, // tri0 + 13, 10, 14, // tri1 + 2, 12, 7, // tri2 + 7, 12, 17 // tri3 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 21, 10, 13, // tri1 + 22, 23, 24, // tri2 + 25, 26, 27 // tri3 + ), + gsSPNTriangles_5b(25, 28, 26, // tri0 + 22, 24, 29, // tri1 + 29, 3, 21, // tri2 + 24, 30, 4 // tri3 + ), + gsSPVertex(&grd_s_c3_s_1_v[184], 32, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 10, 2, 11, // tri1 + 12, 13, 6, // tri2 + 10, 11, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 21, 22, 23, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(27, 28, 21, // tri0 + 20, 29, 30, // tri1 + 20, 30, 18, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_s_1_v[215], 29, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 5 // tri2 + ), + gsSPNTriangles_5b(7, 2, 8, // tri0 + 9, 10, 11, // tri1 + 12, 8, 13, // tri2 + 0, 2, 7 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 17, 18, 9, // tri1 + 19, 0, 7, // tri2 + 19, 7, 12 // tri3 + ), + gsSPNTriangles_5b(20, 1, 0, // tri0 + 21, 22, 23, // tri1 + 23, 24, 20, // tri2 + 18, 25, 9 // tri3 + ), + gsSPNTriangles_5b(26, 17, 9, // tri0 + 27, 28, 21, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c3_s_1_v[244], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(0, 2, 5, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 10, 9, 11 // tri3 + ), + gsSPNTriangles_5b(12, 10, 13, // tri0 + 6, 14, 15, // tri1 + 16, 17, 18, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(22, 23, 18, // tri0 + 23, 16, 18, // tri1 + 1, 24, 4, // tri2 + 24, 25, 4 // tri3 + ), + gsSPNTriangles_5b(20, 26, 21, // tri0 + 27, 28, 29, // tri1 + 19, 30, 25, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_s_1_v[275], 26, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 13, 14, 15, // tri2 + 14, 16, 17 // tri3 + ), + gsSPNTriangles_5b(18, 19, 11, // tri0 + 20, 2, 19, // tri1 + 21, 22, 23, // tri2 + 24, 25, 22 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c3_s_1_v[301], 28, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 13, 14, 15, // tri2 + 16, 17, 14 // tri3 + ), + gsSPNTriangles_5b(13, 16, 14, // tri0 + 10, 18, 11, // tri1 + 13, 15, 18, // tri2 + 4, 19, 5 // tri3 + ), + gsSPNTriangles_5b(20, 21, 5, // tri0 + 20, 22, 21, // tri1 + 20, 7, 22, // tri2 + 7, 9, 22 // tri3 + ), + gsSPNTriangles_5b(4, 6, 23, // tri0 + 19, 20, 5, // tri1 + 24, 23, 25, // tri2 + 24, 26, 3 // tri3 + ), + gsSPNTriangles_5b(24, 25, 26, // tri0 + 27, 12, 8, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c3_s_1/grd_s_c3_s_1_evw_anime.c b/src/data/field/bg/acre/grd_s_c3_s_1/grd_s_c3_s_1_evw_anime.c new file mode 100644 index 00000000..e43d0d97 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c3_s_1/grd_s_c3_s_1_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c3_s_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c3_s_1_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_c3_s_1_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_c4_1/grd_s_c4_1.c b/src/data/field/bg/acre/grd_s_c4_1/grd_s_c4_1.c new file mode 100644 index 00000000..2cfe372f --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c4_1/grd_s_c4_1.c @@ -0,0 +1,262 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c4_1_v[] = { +#include "assets/field/bg/grd_s_c4_1_v.inc" +}; + +extern Gfx grd_s_c4_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c4_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c4_1_v[168], 23, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 3, 4, 6, // tri0 + 8, 9, 10, // tri1 + 9, 5, 7, // tri2 + 11, 8, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 11, 14, // tri0 + 13, 14, 15, // tri1 + 16, 17, 18, // tri2 + 19, 16, 20 // tri3 + ), + gsSPNTriangles_5b( + 17, 13, 15, // tri0 + 16, 18, 20, // tri1 + 21, 19, 22, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c4_1_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 5, // tri0 + 7, 8, 9, // tri1 + 8, 10, 9, // tri2 + 10, 11, 9 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 14, // tri0 + 13, 0, 14, // tri1 + 15, 16, 17, // tri2 + 15, 18, 16 // tri3 + ), + gsSPNTriangles_5b( + 16, 19, 17, // tri0 + 18, 20, 16, // tri1 + 12, 21, 22, // tri2 + 12, 14, 21 // tri3 + ), + gsSPNTriangles_5b( + 3, 5, 2, // tri0 + 6, 23, 5, // tri1 + 24, 25, 7, // tri2 + 24, 26, 27 // tri3 + ), + gsSPNTriangles_5b( + 24, 27, 25, // tri0 + 26, 28, 27, // tri1 + 26, 17, 28, // tri2 + 17, 19, 28 // tri3 + ), + gsSPNTriangles_5b( + 19, 8, 28, // tri0 + 22, 29, 20, // tri1 + 29, 16, 20, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_1_v[30], 32, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 4, 8, // tri0 + 4, 9, 8, // tri1 + 10, 7, 11, // tri2 + 12, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 13, 12, 14, // tri1 + 16, 13, 17, // tri2 + 18, 19, 16 // tri3 + ), + gsSPNTriangles_5b( + 20, 1, 0, // tri0 + 2, 21, 0, // tri1 + 18, 16, 17, // tri2 + 20, 0, 22 // tri3 + ), + gsSPNTriangles_5b( + 0, 23, 22, // tri0 + 20, 22, 24, // tri1 + 20, 24, 25, // tri2 + 26, 27, 5 // tri3 + ), + gsSPNTriangles_5b( + 8, 28, 7, // tri0 + 29, 30, 31, // tri1 + 29, 9, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_1_v[62], 4, 0), + gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c4_1_v[66], 23, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 2, 6, // tri0 + 5, 7, 2, // tri1 + 7, 0, 2, // tri2 + 7, 8, 0 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 0, // tri0 + 9, 10, 0, // tri1 + 11, 12, 13, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 10, 9, 13, // tri0 + 9, 11, 13, // tri1 + 13, 14, 15, // tri2 + 13, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 17, 10, 18, // tri0 + 10, 13, 18, // tri1 + 13, 16, 18, // tri2 + 10, 17, 3 // tri3 + ), + gsSPNTriangles_5b( + 10, 3, 0, // tri0 + 6, 2, 4, // tri1 + 19, 6, 4, // tri2 + 20, 21, 6 // tri3 + ), + gsSPNTriangles_5b( + 20, 6, 19, // tri0 + 21, 5, 6, // tri1 + 21, 22, 5, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c4_1_v[89], 32, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 8, 9, 10, // tri1 + 11, 12, 13, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 17, 18, 19, // tri1 + 19, 20, 21, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b( + 25, 24, 26, // tri0 + 27, 25, 26, // tri1 + 28, 29, 30, // tri2 + 31, 29, 28 // tri3 + ), + gsSPVertex(&grd_s_c4_1_v[121], 20, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 6, // tri0 + 6, 5, 8, // tri1 + 10, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 13, 12, 14, // tri0 + 13, 15, 16, // tri1 + 17, 7, 18, // tri2 + 19, 18, 11 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c4_1_v[141], 27, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 5, 9, // tri0 + 10, 8, 11, // tri1 + 12, 13, 14, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 12, 19, // tri0 + 6, 20, 21, // tri1 + 20, 22, 21, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 22, // tri0 + 16, 26, 17, // tri1 + 23, 15, 24, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c4_2/grd_s_c4_2.c b/src/data/field/bg/acre/grd_s_c4_2/grd_s_c4_2.c new file mode 100644 index 00000000..dc08baf1 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c4_2/grd_s_c4_2.c @@ -0,0 +1,287 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c4_2_v[] = { +#include "assets/field/bg/grd_s_c4_2_v.inc" +}; + +extern Gfx grd_s_c4_2_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c4_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c4_2_v[229], 15, 0), + gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 13, 11, 14 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c4_2_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 5, 9, 3, // tri0 + 10, 11, 3, // tri1 + 12, 13, 14, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 20, // tri0 + 18, 20, 21, // tri1 + 18, 21, 22, // tri2 + 22, 21, 15 // tri3 + ), + gsSPNTriangles_5b( + 1, 0, 23, // tri0 + 24, 25, 26, // tri1 + 8, 27, 6, // tri2 + 28, 29, 9 // tri3 + ), + gsSPVertex(&grd_s_c4_2_v[30], 32, 0), + gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 14, 8, 10, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 10, 19, // tri0 + 18, 20, 10, // tri1 + 19, 10, 21, // tri2 + 20, 14, 10 // tri3 + ), + gsSPNTriangles_5b( + 6, 22, 23, // tri0 + 6, 7, 22, // tri1 + 4, 24, 25, // tri2 + 6, 23, 26 // tri3 + ), + gsSPNTriangles_5b( + 25, 5, 4, // tri0 + 27, 28, 29, // tri1 + 26, 30, 6, // tri2 + 17, 31, 15 // tri3 + ), + gsSPVertex(&grd_s_c4_2_v[62], 31, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 14, 15, 16, // tri2 + 17, 14, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 21, // tri0 + 19, 21, 22, // tri1 + 20, 15, 21, // tri2 + 14, 16, 18 // tri3 + ), + gsSPNTriangles_5b( + 5, 4, 7, // tri0 + 23, 24, 25, // tri1 + 24, 26, 25, // tri2 + 26, 27, 25 // tri3 + ), + gsSPNTriangles_5b( + 27, 2, 25, // tri0 + 28, 29, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c4_2_v[93], 32, 0), + gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 4, 6, // tri0 + 8, 9, 10, // tri1 + 9, 11, 12, // tri2 + 11, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 13, 15, 16, // tri0 + 15, 17, 18, // tri1 + 19, 20, 21, // tri2 + 5, 22, 6 // tri3 + ), + gsSPNTriangles_5b( + 22, 0, 6, // tri0 + 23, 24, 25, // tri1 + 26, 23, 27, // tri2 + 23, 25, 27 // tri3 + ), + gsSPNTriangles_5b( + 24, 28, 25, // tri0 + 19, 21, 29, // tri1 + 17, 30, 31, // tri2 + 19, 26, 20 // tri3 + ), + gsSPVertex(&grd_s_c4_2_v[125], 10, 0), + gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 7, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c4_2_v[135], 32, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 2, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 2, // tri0 + 6, 7, 8, // tri1 + 9, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 13, // tri0 + 17, 18, 19, // tri1 + 20, 5, 4, // tri2 + 21, 22, 19 // tri3 + ), + gsSPNTriangles_5b( + 18, 21, 19, // tri0 + 19, 20, 4, // tri1 + 17, 19, 4, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 11, 26, 23, // tri0 + 11, 27, 26, // tri1 + 28, 9, 11, // tri2 + 29, 28, 11 // tri3 + ), + gsSPNTriangles_5b( + 30, 31, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_2_v[167], 32, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 1, 3, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 5, 7, 8, // tri2 + 1, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 1, 12, 3, // tri0 + 11, 13, 14, // tri1 + 15, 16, 17, // tri2 + 18, 19, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 17, 16, // tri0 + 10, 15, 20, // tri1 + 15, 17, 20, // tri2 + 21, 22, 7 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 2, // tri0 + 24, 23, 21, // tri1 + 25, 26, 27, // tri2 + 25, 28, 26 // tri3 + ), + gsSPNTriangles_5b( + 28, 29, 26, // tri0 + 29, 30, 26, // tri1 + 31, 20, 17, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_2_v[199], 15, 0), + gsSPNTrianglesInit_5b( + 9, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 9, 10, 11, // tri2 + 9, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 10, // tri0 + 13, 14, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c4_2_v[214], 15, 0), + gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 7, 9, 10, // tri1 + 9, 11, 12, // tri2 + 11, 13, 14 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c4_3/grd_s_c4_3.c b/src/data/field/bg/acre/grd_s_c4_3/grd_s_c4_3.c new file mode 100644 index 00000000..3c283407 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c4_3/grd_s_c4_3.c @@ -0,0 +1,310 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c4_3_v[] = { +#include "assets/field/bg/grd_s_c4_3_v.inc" +}; + +extern Gfx grd_s_c4_3_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c4_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c4_3_v[191], 26, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 6, // tri0 + 5, 7, 6, // tri1 + 7, 8, 6, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 14, // tri0 + 13, 15, 14, // tri1 + 0, 16, 17, // tri2 + 16, 12, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 20, // tri0 + 19, 8, 20, // tri1 + 21, 9, 22, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 24, // tri0 + 15, 23, 25, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c4_3_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 13, 12, // tri0 + 14, 15, 11, // tri1 + 15, 9, 11, // tri2 + 14, 11, 16 // tri3 + ), + gsSPNTriangles_5b( + 11, 17, 16, // tri0 + 17, 18, 16, // tri1 + 19, 18, 17, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 20, // tri0 + 20, 22, 18, // tri1 + 19, 23, 21, // tri2 + 4, 5, 0 // tri3 + ), + gsSPNTriangles_5b( + 24, 25, 26, // tri0 + 3, 27, 28, // tri1 + 3, 1, 27, // tri2 + 27, 29, 28 // tri3 + ), + gsSPNTriangles_5b( + 22, 20, 30, // tri0 + 31, 14, 16, // tri1 + 6, 5, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_3_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 6, 8, 7, // tri0 + 5, 9, 6, // tri1 + 1, 10, 11, // tri2 + 1, 0, 10 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 11, // tri0 + 10, 13, 12, // tri1 + 13, 14, 12, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 15, 17, // tri0 + 19, 20, 21, // tri1 + 22, 17, 23, // tri2 + 17, 24, 23 // tri3 + ), + gsSPNTriangles_5b( + 15, 25, 16, // tri0 + 17, 16, 24, // tri1 + 15, 26, 25, // tri2 + 15, 27, 26 // tri3 + ), + gsSPNTriangles_5b( + 15, 28, 27, // tri0 + 5, 29, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_3_v[63], 13, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c4_3_v[76], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 4, 8, // tri0 + 5, 9, 10, // tri1 + 9, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 14, 7, 16, // tri0 + 17, 18, 19, // tri1 + 20, 21, 18, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b( + 20, 22, 21, // tri0 + 23, 25, 26, // tri1 + 25, 27, 28, // tri2 + 13, 29, 30 // tri3 + ), + gsSPNTriangles_5b( + 27, 30, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_3_v[107], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 1, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 7, 9, 8, // tri1 + 10, 11, 12, // tri2 + 13, 10, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 15, 17, 9, // tri1 + 16, 13, 18, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 24, // tri0 + 25, 26, 22, // tri1 + 27, 28, 25, // tri2 + 27, 29, 28 // tri3 + ), + gsSPNTriangles_5b( + 27, 30, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_3_v[138], 3, 0), + gsSPNTrianglesInit_5b( + 1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c4_3_v[141], 24, 0), + gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 3, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 7, 10, 8 // tri3 + ), + gsSPNTriangles_5b( + 10, 4, 8, // tri0 + 5, 11, 3, // tri1 + 11, 12, 3, // tri2 + 10, 2, 4 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 13, 9, 14, // tri1 + 9, 6, 14, // tri2 + 13, 16, 9 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 9, // tri0 + 17, 18, 9, // tri1 + 18, 7, 9, // tri2 + 18, 10, 7 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 10, // tri0 + 20, 2, 10, // tri1 + 20, 0, 2, // tri2 + 19, 20, 10 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 0, // tri0 + 21, 22, 0, // tri1 + 22, 5, 0, // tri2 + 22, 11, 5 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 11, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c4_3_v[165], 26, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 6, // tri0 + 5, 7, 6, // tri1 + 7, 8, 6, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 0, 12, 13, // tri0 + 12, 14, 13, // tri1 + 14, 15, 16, // tri2 + 15, 17, 16 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 20, // tri0 + 19, 8, 20, // tri1 + 21, 9, 22, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 17, 23, 25, // tri0 + 21, 22, 24, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c4_r1_1/grd_s_c4_r1_1.c b/src/data/field/bg/acre/grd_s_c4_r1_1/grd_s_c4_r1_1.c new file mode 100644 index 00000000..3e20925c --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c4_r1_1/grd_s_c4_r1_1.c @@ -0,0 +1,309 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c4_r1_1_v[] = { +#include "assets/field/bg/grd_s_c4_r1_1_v.inc" +}; + +extern Gfx grd_s_c4_r1_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c4_r1_1_v[244], 12, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 1 // tri2 + ), + gsSPNTriangles_5b(5, 2, 1, // tri0 + 0, 6, 3, // tri1 + 6, 7, 3, // tri2 + 5, 4, 8 // tri3 + ), + gsSPNTriangles_5b(9, 5, 8, // tri0 + 10, 11, 9, // tri1 + 10, 9, 8, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c4_r1_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c4_r1_1_v[227], 17, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 3, 8, // tri0 + 3, 4, 8, // tri1 + 9, 10, 11, // tri2 + 12, 9, 11 // tri3 + ), + gsSPNTriangles_5b(1, 12, 13, // tri0 + 9, 14, 10, // tri1 + 14, 15, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c4_r1_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 8, 9, 7, // tri2 + 2, 4, 10 // tri3 + ), + gsSPNTriangles_5b(4, 11, 10, // tri0 + 12, 13, 14, // tri1 + 14, 15, 12, // tri2 + 16, 12, 17 // tri3 + ), + gsSPNTriangles_5b(17, 12, 15, // tri0 + 18, 17, 19, // tri1 + 17, 15, 19, // tri2 + 13, 20, 21 // tri3 + ), + gsSPNTriangles_5b(21, 20, 22, // tri0 + 23, 24, 22, // tri1 + 23, 25, 24, // tri2 + 25, 26, 24 // tri3 + ), + gsSPNTriangles_5b(27, 28, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_r1_1_v[30], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 3, 6, 5, // tri1 + 2, 7, 0, // tri2 + 2, 8, 7 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 9, 10, 7, // tri1 + 11, 12, 13, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20, // tri2 + 22, 23, 2 // tri3 + ), + gsSPNTriangles_5b(23, 8, 2, // tri0 + 22, 24, 23, // tri1 + 25, 12, 26, // tri2 + 25, 27, 12 // tri3 + ), + gsSPNTriangles_5b(22, 28, 24, // tri0 + 22, 29, 28, // tri1 + 29, 30, 28, // tri2 + 29, 31, 30 // tri3 + ), + gsSPVertex(&grd_s_c4_r1_1_v[62], 21, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 6, 2 // tri2 + ), + gsSPNTriangles_5b(7, 4, 8, // tri0 + 8, 3, 9, // tri1 + 8, 4, 3, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(12, 11, 13, // tri0 + 10, 14, 11, // tri1 + 15, 16, 17, // tri2 + 18, 19, 20 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c4_r1_1_v[83], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(9, 13, 10, // tri0 + 14, 15, 16, // tri1 + 15, 17, 16, // tri2 + 17, 18, 16 // tri3 + ), + gsSPNTriangles_5b(8, 19, 20, // tri0 + 19, 21, 20, // tri1 + 8, 6, 19, // tri2 + 1, 0, 22 // tri3 + ), + gsSPNTriangles_5b(0, 23, 22, // tri0 + 23, 24, 22, // tri1 + 25, 24, 23, // tri2 + 15, 14, 26 // tri3 + ), + gsSPNTriangles_5b(14, 27, 26, // tri0 + 14, 28, 27, // tri1 + 29, 30, 31, // tri2 + 30, 13, 31 // tri3 + ), + gsSPVertex(&grd_s_c4_r1_1_v[115], 23, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 3, 4, // tri1 + 9, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 8, 4, 18, // tri1 + 14, 13, 19, // tri2 + 4, 20, 21 // tri3 + ), + gsSPNTriangles_5b(4, 21, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c4_r1_1_v[138], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 7, 8, 9, // tri1 + 9, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 15, 14, 16, // tri1 + 18, 15, 17, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(22, 20, 19, // tri0 + 23, 22, 24, // tri1 + 25, 26, 24, // tri2 + 27, 28, 29 // tri3 + ), + gsSPNTriangles_5b(30, 29, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_r1_1_v[170], 17, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 5, 4, 6 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 11, 12, 13, // tri2 + 10, 14, 15 // tri3 + ), + gsSPNTriangles_5b(10, 16, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c4_r1_1_v[187], 23, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(0, 5, 4, // tri0 + 0, 6, 5, // tri1 + 7, 8, 9, // tri2 + 7, 2, 8 // tri3 + ), + gsSPNTriangles_5b(8, 10, 9, // tri0 + 10, 11, 9, // tri1 + 12, 11, 13, // tri2 + 11, 10, 13 // tri3 + ), + gsSPNTriangles_5b(14, 10, 15, // tri0 + 10, 8, 15, // tri1 + 8, 3, 15, // tri2 + 8, 2, 3 // tri3 + ), + gsSPNTriangles_5b(16, 13, 14, // tri0 + 13, 10, 14, // tri1 + 17, 0, 2, // tri2 + 0, 17, 6 // tri3 + ), + gsSPNTriangles_5b(7, 17, 2, // tri0 + 17, 18, 6, // tri1 + 19, 6, 18, // tri2 + 6, 20, 21 // tri3 + ), + gsSPNTriangles_5b(6, 19, 20, // tri0 + 22, 19, 18, // tri1 + 6, 21, 5, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c4_r1_1_v[210], 17, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(4, 9, 10, // tri0 + 11, 3, 12, // tri1 + 13, 14, 15, // tri2 + 1, 11, 16 // tri3 + ), + gsSPNTriangles_5b(13, 6, 14, // tri0 + 9, 13, 15, // tri1 + 11, 12, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c4_r1_1/grd_s_c4_r1_1_evw_anime.c b/src/data/field/bg/acre/grd_s_c4_r1_1/grd_s_c4_r1_1_evw_anime.c new file mode 100644 index 00000000..6aed98bd --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c4_r1_1/grd_s_c4_r1_1_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c4_r1_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c4_r1_1_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_c4_r1_1_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_c4_r1_2/grd_s_c4_r1_2.c b/src/data/field/bg/acre/grd_s_c4_r1_2/grd_s_c4_r1_2.c new file mode 100644 index 00000000..96e970bc --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c4_r1_2/grd_s_c4_r1_2.c @@ -0,0 +1,324 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c4_r1_2_v[] = { +#include "assets/field/bg/grd_s_c4_r1_2_v.inc" +}; + +extern Gfx grd_s_c4_r1_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c4_r1_2_v[235], 15, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(1, 7, 2, // tri0 + 4, 8, 5, // tri1 + 9, 10, 1, // tri2 + 10, 7, 1 // tri3 + ), + gsSPNTriangles_5b(2, 5, 0, // tri0 + 5, 8, 0, // tri1 + 3, 11, 6, // tri2 + 12, 13, 11 // tri3 + ), + gsSPNTriangles_5b(11, 14, 12, // tri0 + 3, 14, 11, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c4_r1_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c4_r1_2_v[222], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c4_r1_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 6, 9, 8, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(11, 2, 12, // tri0 + 11, 0, 2, // tri1 + 0, 13, 3, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(14, 17, 15, // tri0 + 17, 18, 15, // tri1 + 19, 20, 21, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b(20, 23, 22, // tri0 + 20, 8, 23, // tri1 + 24, 25, 26, // tri2 + 25, 10, 26 // tri3 + ), + gsSPNTriangles_5b(7, 27, 28, // tri0 + 27, 29, 16, // tri1 + 29, 30, 16, // tri2 + 29, 31, 30 // tri3 + ), + gsSPVertex(&grd_s_c4_r1_2_v[32], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 7, 10, // tri0 + 11, 8, 12, // tri1 + 13, 14, 15, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(9, 19, 17, // tri0 + 20, 21, 22, // tri1 + 21, 7, 23, // tri2 + 23, 7, 9 // tri3 + ), + gsSPNTriangles_5b(21, 8, 7, // tri0 + 8, 21, 12, // tri1 + 20, 12, 21, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(26, 27, 24, // tri0 + 28, 29, 30, // tri1 + 31, 0, 2, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_r1_2_v[64], 23, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(7, 4, 8, // tri0 + 4, 7, 5, // tri1 + 9, 7, 6, // tri2 + 6, 10, 9 // tri3 + ), + gsSPNTriangles_5b(11, 1, 12, // tri0 + 12, 13, 14, // tri1 + 14, 13, 15, // tri2 + 12, 1, 13 // tri3 + ), + gsSPNTriangles_5b(1, 0, 13, // tri0 + 11, 12, 10, // tri1 + 12, 9, 10, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 22, 20, 19, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c4_r1_2_v[87], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 6, 9, 8, // tri2 + 6, 10, 9 // tri3 + ), + gsSPNTriangles_5b(6, 11, 10, // tri0 + 11, 12, 10, // tri1 + 11, 13, 12, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b(13, 15, 14, // tri0 + 15, 16, 14, // tri1 + 15, 2, 16, // tri2 + 2, 3, 16 // tri3 + ), + gsSPNTriangles_5b(0, 17, 4, // tri0 + 0, 18, 17, // tri1 + 0, 19, 18, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b(19, 21, 20, // tri0 + 21, 22, 20, // tri1 + 23, 24, 25, // tri2 + 25, 26, 23 // tri3 + ), + gsSPNTriangles_5b(26, 27, 23, // tri0 + 27, 28, 23, // tri1 + 27, 29, 28, // tri2 + 29, 30, 28 // tri3 + ), + gsSPNTriangles_5b(31, 28, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_r1_2_v[119], 17, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 8, 10, 9, // tri1 + 10, 11, 9, // tri2 + 11, 12, 9 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 13, 14, 12, // tri1 + 14, 15, 12, // tri2 + 14, 16, 15 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c4_r1_2_v[136], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 7, 9, 10, // tri1 + 9, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(14, 16, 17, // tri0 + 16, 18, 17, // tri1 + 19, 20, 18, // tri2 + 21, 22, 20 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 23, 25, 24, // tri1 + 23, 26, 25, // tri2 + 26, 27, 25 // tri3 + ), + gsSPNTriangles_5b(27, 28, 29, // tri0 + 28, 30, 29, // tri1 + 28, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_r1_2_v[168], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 9, 10, 1, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c4_r1_2_v[179], 30, 0), + gsSPNTrianglesInit_5b(35, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 2, 5, // tri0 + 2, 3, 5, // tri1 + 7, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b(8, 11, 10, // tri0 + 12, 9, 10, // tri1 + 12, 13, 9, // tri2 + 7, 14, 15 // tri3 + ), + gsSPNTriangles_5b(7, 9, 14, // tri0 + 15, 14, 16, // tri1 + 14, 17, 16, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(17, 19, 18, // tri0 + 17, 20, 19, // tri1 + 17, 21, 20, // tri2 + 9, 22, 14 // tri3 + ), + gsSPNTriangles_5b(9, 13, 22, // tri0 + 14, 22, 17, // tri1 + 22, 21, 17, // tri2 + 18, 4, 6 // tri3 + ), + gsSPNTriangles_5b(18, 19, 4, // tri0 + 19, 20, 4, // tri1 + 20, 23, 4, // tri2 + 4, 24, 2 // tri3 + ), + gsSPNTriangles_5b(4, 23, 24, // tri0 + 24, 25, 2, // tri1 + 2, 25, 0, // tri2 + 25, 26, 0 // tri3 + ), + gsSPNTriangles_5b(1, 0, 27, // tri0 + 0, 28, 27, // tri1 + 0, 29, 28, // tri2 + 0, 26, 29 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c4_r1_2_v[209], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c4_r1_2/grd_s_c4_r1_2_evw_anime.c b/src/data/field/bg/acre/grd_s_c4_r1_2/grd_s_c4_r1_2_evw_anime.c new file mode 100644 index 00000000..c61cfcd5 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c4_r1_2/grd_s_c4_r1_2_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c4_r1_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c4_r1_2_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_c4_r1_2_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_c4_r2_1/grd_s_c4_r2_1.c b/src/data/field/bg/acre/grd_s_c4_r2_1/grd_s_c4_r2_1.c new file mode 100644 index 00000000..8c291747 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c4_r2_1/grd_s_c4_r2_1.c @@ -0,0 +1,307 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c4_r2_1_v[] = { +#include "assets/field/bg/grd_s_c4_r2_1_v.inc" +}; + +extern Gfx grd_s_c4_r2_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c4_r2_1_v[251], 12, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 10, 11, 8, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c4_r2_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c4_r2_1_v[235], 16, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 4, 8, 5, // tri1 + 2, 9, 10, // tri2 + 11, 3, 12 // tri3 + ), + gsSPNTriangles_5b(9, 8, 13, // tri0 + 7, 14, 15, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c4_r2_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 11, 12, 10, // tri1 + 11, 13, 12, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b(14, 15, 12, // tri0 + 16, 17, 18, // tri1 + 17, 19, 18, // tri2 + 20, 21, 14 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 23, 25, 24, // tri1 + 23, 26, 25, // tri2 + 26, 27, 25 // tri3 + ), + gsSPNTriangles_5b(14, 21, 15, // tri0 + 11, 28, 13, // tri1 + 28, 19, 13, // tri2 + 29, 30, 31 // tri3 + ), + gsSPVertex(&grd_s_c4_r2_1_v[32], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(4, 7, 6, // tri0 + 7, 8, 9, // tri1 + 8, 10, 9, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 12, // tri0 + 15, 13, 12, // tri1 + 16, 17, 18, // tri2 + 16, 19, 17 // tri3 + ), + gsSPNTriangles_5b(19, 20, 17, // tri0 + 19, 21, 20, // tri1 + 10, 22, 9, // tri2 + 6, 7, 9 // tri3 + ), + gsSPNTriangles_5b(23, 3, 5, // tri0 + 3, 24, 4, // tri1 + 2, 25, 26, // tri2 + 25, 27, 26 // tri3 + ), + gsSPNTriangles_5b(25, 28, 27, // tri0 + 1, 29, 30, // tri1 + 29, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_r2_1_v[64], 31, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 8, 10, 9, // tri1 + 11, 12, 13, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 20, 17, 19, // tri1 + 21, 22, 23, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(25, 27, 26, // tri0 + 27, 21, 26, // tri1 + 28, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c4_r2_1_v[95], 32, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 9, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 12, 16, // tri0 + 10, 17, 18, // tri1 + 17, 15, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(23, 24, 25, // tri0 + 2, 23, 26, // tri1 + 27, 28, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_r2_1_v[125], 29, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(6, 8, 4, // tri0 + 9, 10, 11, // tri1 + 12, 3, 5, // tri2 + 1, 9, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 14, 17, 18, // tri1 + 19, 18, 17, // tri2 + 20, 19, 17 // tri3 + ), + gsSPNTriangles_5b(21, 22, 20, // tri0 + 23, 24, 25, // tri1 + 24, 21, 25, // tri2 + 26, 27, 28 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c4_r2_1_v[154], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b(2, 6, 4, // tri0 + 6, 7, 4, // tri1 + 6, 8, 7, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b(9, 12, 10, // tri0 + 12, 13, 10, // tri1 + 13, 14, 10, // tri2 + 13, 15, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 14, // tri0 + 16, 17, 14, // tri1 + 16, 18, 17, // tri2 + 18, 19, 17 // tri3 + ), + gsSPNTriangles_5b(19, 20, 17, // tri0 + 19, 21, 20, // tri1 + 21, 22, 20, // tri2 + 22, 23, 20 // tri3 + ), + gsSPNTriangles_5b(23, 24, 20, // tri0 + 23, 25, 24, // tri1 + 26, 27, 28, // tri2 + 26, 29, 27 // tri3 + ), + gsSPNTriangles_5b(27, 30, 28, // tri0 + 30, 31, 28, // tri1 + 31, 6, 28, // tri2 + 31, 8, 6 // tri3 + ), + gsSPNTriangles_5b(5, 0, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_r2_1_v[186], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c4_r2_1_v[190], 29, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 1, // tri0 + 6, 7, 8, // tri1 + 6, 4, 7, // tri2 + 7, 9, 8 // tri3 + ), + gsSPNTriangles_5b(10, 11, 12, // tri0 + 11, 13, 12, // tri1 + 14, 12, 13, // tri2 + 14, 15, 12 // tri3 + ), + gsSPNTriangles_5b(8, 9, 16, // tri0 + 9, 17, 16, // tri1 + 17, 18, 16, // tri2 + 18, 14, 16 // tri3 + ), + gsSPNTriangles_5b(18, 15, 14, // tri0 + 0, 2, 19, // tri1 + 2, 20, 19, // tri2 + 20, 21, 19 // tri3 + ), + gsSPNTriangles_5b(20, 22, 21, // tri0 + 22, 23, 21, // tri1 + 23, 24, 21, // tri2 + 23, 25, 24 // tri3 + ), + gsSPNTriangles_5b(23, 26, 25, // tri0 + 26, 27, 25, // tri1 + 26, 28, 27, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c4_r2_1_v[219], 16, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 5, 8, 6, // tri1 + 9, 3, 10, // tri2 + 2, 11, 12 // tri3 + ), + gsSPNTriangles_5b(8, 13, 14, // tri0 + 11, 7, 15, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c4_r2_1/grd_s_c4_r2_1_evw_anime.c b/src/data/field/bg/acre/grd_s_c4_r2_1/grd_s_c4_r2_1_evw_anime.c new file mode 100644 index 00000000..98d88d89 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c4_r2_1/grd_s_c4_r2_1_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c4_r2_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c4_r2_1_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_c4_r2_1_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_c4_r2_2/grd_s_c4_r2_2.c b/src/data/field/bg/acre/grd_s_c4_r2_2/grd_s_c4_r2_2.c new file mode 100644 index 00000000..c5c55001 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c4_r2_2/grd_s_c4_r2_2.c @@ -0,0 +1,288 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c4_r2_2_v[] = { +#include "assets/field/bg/grd_s_c4_r2_2_v.inc" +}; + +extern Gfx grd_s_c4_r2_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c4_r2_2_v[212], 12, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(8, 9, 6, // tri0 + 8, 10, 9, // tri1 + 8, 11, 10, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c4_r2_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c4_r2_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 7, 9, 8, // tri1 + 9, 10, 11, // tri2 + 5, 12, 13 // tri3 + ), + gsSPNTriangles_5b(12, 14, 13, // tri0 + 15, 16, 14, // tri1 + 17, 18, 16, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(19, 21, 20, // tri0 + 21, 22, 20, // tri1 + 22, 6, 8, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b(26, 27, 28, // tri0 + 27, 23, 28, // tri1 + 29, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_r2_2_v[32], 26, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 6, 8, // tri0 + 10, 9, 11, // tri1 + 12, 10, 13, // tri2 + 3, 14, 4 // tri3 + ), + gsSPNTriangles_5b(14, 12, 4, // tri0 + 15, 16, 17, // tri1 + 16, 18, 19, // tri2 + 18, 20, 21 // tri3 + ), + gsSPNTriangles_5b(20, 22, 23, // tri0 + 22, 24, 25, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c4_r2_2_v[58], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 2, 4, 3 // tri2 + ), + gsSPNTriangles_5b(2, 5, 4, // tri0 + 2, 6, 5, // tri1 + 6, 7, 5, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 8, 10, 9, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(10, 13, 12, // tri0 + 13, 14, 12, // tri1 + 13, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 18, 19, 20, // tri1 + 20, 21, 18, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b(22, 23, 21, // tri0 + 22, 24, 23, // tri1 + 24, 25, 23, // tri2 + 25, 26, 23 // tri3 + ), + gsSPNTriangles_5b(25, 27, 26, // tri0 + 27, 28, 26, // tri1 + 28, 29, 26, // tri2 + 29, 30, 26 // tri3 + ), + gsSPNTriangles_5b(29, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_r2_2_v[90], 7, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c4_r2_2_v[97], 28, 0), + gsSPNTrianglesInit_5b(32, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 8, 9, 6, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(10, 13, 11, // tri0 + 13, 14, 11, // tri1 + 15, 16, 17, // tri2 + 15, 10, 16 // tri3 + ), + gsSPNTriangles_5b(10, 12, 16, // tri0 + 5, 18, 8, // tri1 + 5, 19, 18, // tri2 + 9, 8, 0 // tri3 + ), + gsSPNTriangles_5b(8, 1, 0, // tri0 + 8, 18, 1, // tri1 + 18, 20, 1, // tri2 + 1, 21, 3 // tri3 + ), + gsSPNTriangles_5b(1, 20, 21, // tri0 + 4, 3, 17, // tri1 + 3, 15, 17, // tri2 + 3, 21, 15 // tri3 + ), + gsSPNTriangles_5b(21, 22, 15, // tri0 + 15, 22, 10, // tri1 + 22, 23, 10, // tri2 + 10, 24, 13 // tri3 + ), + gsSPNTriangles_5b(10, 23, 24, // tri0 + 14, 25, 26, // tri1 + 14, 13, 25, // tri2 + 13, 24, 25 // tri3 + ), + gsSPNTriangles_5b(24, 27, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c4_r2_2_v[125], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 10, 11, 8, // tri2 + 12, 13, 9 // tri3 + ), + gsSPNTriangles_5b(14, 15, 13, // tri0 + 16, 17, 15, // tri1 + 17, 16, 18, // tri2 + 2, 19, 0 // tri3 + ), + gsSPNTriangles_5b(19, 20, 0, // tri0 + 19, 21, 20, // tri1 + 21, 22, 23, // tri2 + 22, 24, 23 // tri3 + ), + gsSPNTriangles_5b(24, 25, 23, // tri0 + 26, 27, 28, // tri1 + 27, 29, 30, // tri2 + 29, 7, 30 // tri3 + ), + gsSPVertex(&grd_s_c4_r2_2_v[156], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(6, 3, 7, // tri0 + 3, 8, 7, // tri1 + 9, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 12, // tri0 + 15, 12, 14, // tri1 + 17, 18, 19, // tri2 + 17, 20, 18 // tri3 + ), + gsSPNTriangles_5b(21, 22, 17, // tri0 + 22, 23, 24, // tri1 + 24, 25, 26, // tri2 + 25, 27, 26 // tri3 + ), + gsSPNTriangles_5b(27, 28, 26, // tri0 + 26, 28, 29, // tri1 + 26, 29, 20, // tri2 + 2, 1, 30 // tri3 + ), + gsSPNTriangles_5b(1, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_r2_2_v[188], 24, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 4, 2, 1 // tri2 + ), + gsSPNTriangles_5b(3, 1, 5, // tri0 + 5, 6, 3, // tri1 + 6, 5, 7, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(8, 11, 12, // tri0 + 13, 12, 11, // tri1 + 14, 13, 15, // tri2 + 16, 14, 15 // tri3 + ), + gsSPNTriangles_5b(9, 6, 10, // tri0 + 6, 7, 10, // tri1 + 6, 9, 17, // tri2 + 9, 18, 17 // tri3 + ), + gsSPNTriangles_5b(19, 18, 9, // tri0 + 20, 21, 22, // tri1 + 20, 23, 21, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c4_r2_2/grd_s_c4_r2_2_evw_anime.c b/src/data/field/bg/acre/grd_s_c4_r2_2/grd_s_c4_r2_2_evw_anime.c new file mode 100644 index 00000000..8c38327a --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c4_r2_2/grd_s_c4_r2_2_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c4_r2_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c4_r2_2_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_c4_r2_2_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_c4_r3_1/grd_s_c4_r3_1.c b/src/data/field/bg/acre/grd_s_c4_r3_1/grd_s_c4_r3_1.c new file mode 100644 index 00000000..1ee0271f --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c4_r3_1/grd_s_c4_r3_1.c @@ -0,0 +1,289 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c4_r3_1_v[] = { +#include "assets/field/bg/grd_s_c4_r3_1_v.inc" +}; + +extern Gfx grd_s_c4_r3_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c4_r3_1_v[213], 13, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b(4, 3, 5, // tri0 + 4, 5, 6, // tri1 + 7, 4, 6, // tri2 + 7, 6, 8 // tri3 + ), + gsSPNTriangles_5b(9, 7, 8, // tri0 + 9, 8, 10, // tri1 + 11, 12, 9, // tri2 + 11, 9, 10 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c4_r3_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c4_r3_1_v[202], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c4_r3_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 2, // tri0 + 7, 8, 9, // tri1 + 10, 11, 12, // tri2 + 11, 13, 12 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 15, 17, 16, // tri1 + 17, 18, 16, // tri2 + 17, 0, 18 // tri3 + ), + gsSPNTriangles_5b(0, 19, 18, // tri0 + 20, 21, 22, // tri1 + 23, 22, 21, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(25, 27, 26, // tri0 + 25, 28, 27, // tri1 + 29, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_r3_1_v[32], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 8, 11, 9, // tri2 + 4, 10, 12 // tri3 + ), + gsSPNTriangles_5b(10, 9, 12, // tri0 + 11, 13, 14, // tri1 + 13, 6, 14, // tri2 + 8, 13, 11 // tri3 + ), + gsSPNTriangles_5b(7, 14, 6, // tri0 + 15, 16, 9, // tri1 + 16, 12, 9, // tri2 + 17, 14, 7 // tri3 + ), + gsSPNTriangles_5b(5, 18, 7, // tri0 + 18, 5, 19, // tri1 + 19, 5, 20, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b(24, 25, 26, // tri0 + 3, 27, 2, // tri1 + 3, 28, 27, // tri2 + 27, 29, 2 // tri3 + ), + gsSPVertex(&grd_s_c4_r3_1_v[62], 19, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(4, 7, 6, // tri0 + 7, 8, 6, // tri1 + 1, 9, 2, // tri2 + 10, 11, 0 // tri3 + ), + gsSPNTriangles_5b(11, 12, 0, // tri0 + 0, 2, 10, // tri1 + 13, 10, 2, // tri2 + 14, 13, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 11, // tri0 + 17, 12, 11, // tri1 + 15, 16, 14, // tri2 + 15, 18, 16 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c4_r3_1_v[81], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 0, 5, // tri0 + 0, 6, 5, // tri1 + 6, 7, 5, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 10, 11, 12, // tri1 + 11, 13, 12, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(14, 17, 15, // tri0 + 18, 10, 12, // tri1 + 18, 19, 10, // tri2 + 20, 17, 14 // tri3 + ), + gsSPNTriangles_5b(20, 21, 17, // tri0 + 22, 3, 2, // tri1 + 22, 23, 3, // tri2 + 11, 23, 13 // tri3 + ), + gsSPNTriangles_5b(23, 22, 13, // tri0 + 15, 24, 16, // tri1 + 24, 25, 16, // tri2 + 26, 25, 27 // tri3 + ), + gsSPNTriangles_5b(25, 24, 27, // tri0 + 28, 26, 27, // tri1 + 28, 29, 26, // tri2 + 28, 30, 29 // tri3 + ), + gsSPNTriangles_5b(30, 31, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_r3_1_v[113], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c4_r3_1_v[117], 32, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 4, 2, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 6, 7, 5, // tri1 + 8, 9, 6, // tri2 + 10, 11, 8 // tri3 + ), + gsSPNTriangles_5b(10, 12, 11, // tri0 + 12, 13, 14, // tri1 + 13, 15, 14, // tri2 + 14, 11, 12 // tri3 + ), + gsSPNTriangles_5b(11, 9, 8, // tri0 + 9, 7, 6, // tri1 + 7, 4, 5, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(16, 19, 17, // tri0 + 16, 20, 19, // tri1 + 16, 21, 20, // tri2 + 21, 22, 20 // tri3 + ), + gsSPNTriangles_5b(23, 24, 22, // tri0 + 22, 21, 23, // tri1 + 23, 25, 24, // tri2 + 26, 27, 25 // tri3 + ), + gsSPNTriangles_5b(26, 25, 23, // tri0 + 26, 28, 27, // tri1 + 26, 29, 28, // tri2 + 30, 31, 29 // tri3 + ), + gsSPVertex(&grd_s_c4_r3_1_v[149], 5, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c4_r3_1_v[154], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(7, 3, 8, // tri0 + 9, 10, 11, // tri1 + 12, 13, 14, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b(18, 0, 19, // tri0 + 18, 19, 16, // tri1 + 20, 21, 22, // tri2 + 21, 6, 22 // tri3 + ), + gsSPNTriangles_5b(4, 15, 17, // tri0 + 12, 23, 13, // tri1 + 20, 22, 24, // tri2 + 23, 20, 24 // tri3 + ), + gsSPNTriangles_5b(10, 12, 14, // tri0 + 25, 26, 27, // tri1 + 27, 28, 29, // tri2 + 29, 30, 31 // tri3 + ), + gsSPVertex(&grd_s_c4_r3_1_v[186], 5, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c4_r3_1_v[191], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 8, 3, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c4_r3_1/grd_s_c4_r3_1_evw_anime.c b/src/data/field/bg/acre/grd_s_c4_r3_1/grd_s_c4_r3_1_evw_anime.c new file mode 100644 index 00000000..6d027ee7 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c4_r3_1/grd_s_c4_r3_1_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c4_r3_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c4_r3_1_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_c4_r3_1_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_c4_r3_2/grd_s_c4_r3_2.c b/src/data/field/bg/acre/grd_s_c4_r3_2/grd_s_c4_r3_2.c new file mode 100644 index 00000000..aed26c83 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c4_r3_2/grd_s_c4_r3_2.c @@ -0,0 +1,271 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c4_r3_2_v[] = { +#include "assets/field/bg/grd_s_c4_r3_2_v.inc" +}; + +extern Gfx grd_s_c4_r3_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c4_r3_2_v[199], 12, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 3, 2 // tri2 + ), + gsSPNTriangles_5b(4, 2, 5, // tri0 + 6, 4, 5, // tri1 + 6, 5, 7, // tri2 + 8, 6, 7 // tri3 + ), + gsSPNTriangles_5b(8, 7, 9, // tri0 + 10, 11, 8, // tri1 + 10, 8, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c4_r3_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c4_r3_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 0, 6, // tri0 + 0, 2, 6, // tri1 + 7, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b(11, 7, 12, // tri0 + 7, 13, 12, // tri1 + 3, 14, 4, // tri2 + 15, 1, 16 // tri3 + ), + gsSPNTriangles_5b(15, 17, 1, // tri0 + 15, 18, 17, // tri1 + 18, 19, 17, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b(20, 21, 19, // tri0 + 8, 22, 23, // tri1 + 22, 24, 23, // tri2 + 22, 25, 24 // tri3 + ), + gsSPNTriangles_5b(22, 26, 25, // tri0 + 1, 17, 3, // tri1 + 21, 27, 19, // tri2 + 14, 28, 4 // tri3 + ), + gsSPNTriangles_5b(14, 29, 28, // tri0 + 29, 30, 28, // tri1 + 30, 31, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_r3_2_v[32], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 6, 7, 8, // tri1 + 9, 10, 11, // tri2 + 9, 12, 10 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 14, 12, 15, // tri1 + 14, 10, 12, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(19, 20, 17, // tri0 + 21, 22, 23, // tri1 + 21, 24, 22, // tri2 + 21, 25, 24 // tri3 + ), + gsSPNTriangles_5b(22, 26, 23, // tri0 + 26, 27, 23, // tri1 + 26, 28, 27, // tri2 + 28, 29, 27 // tri3 + ), + gsSPNTriangles_5b(29, 30, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_r3_2_v[63], 19, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 13, 14, 15, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(3, 17, 18, // tri0 + 2, 3, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c4_r3_2_v[82], 32, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 5, 9, // tri0 + 1, 10, 11, // tri1 + 10, 8, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(13, 16, 14, // tri0 + 17, 18, 19, // tri1 + 20, 21, 22, // tri2 + 15, 20, 23 // tri3 + ), + gsSPNTriangles_5b(24, 25, 26, // tri0 + 27, 28, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_r3_2_v[112], 23, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 1 // tri2 + ), + gsSPNTriangles_5b(6, 0, 2, // tri0 + 7, 8, 9, // tri1 + 10, 7, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 18, 15, 19, // tri1 + 13, 20, 21, // tri2 + 20, 18, 22 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c4_r3_2_v[135], 32, 0), + gsSPNTrianglesInit_5b(38, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 2, 4 // tri2 + ), + gsSPNTriangles_5b(0, 5, 3, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 9, 4, 8 // tri3 + ), + gsSPNTriangles_5b(4, 10, 8, // tri0 + 4, 2, 10, // tri1 + 11, 12, 13, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b(6, 12, 7, // tri0 + 6, 15, 12, // tri1 + 15, 16, 12, // tri2 + 16, 14, 12 // tri3 + ), + gsSPNTriangles_5b(16, 17, 14, // tri0 + 17, 18, 14, // tri1 + 17, 19, 18, // tri2 + 11, 7, 12 // tri3 + ), + gsSPNTriangles_5b(11, 20, 7, // tri0 + 21, 19, 22, // tri1 + 21, 18, 19, // tri2 + 5, 23, 3 // tri3 + ), + gsSPNTriangles_5b(5, 24, 23, // tri0 + 21, 25, 18, // tri1 + 25, 26, 18, // tri2 + 26, 13, 18 // tri3 + ), + gsSPNTriangles_5b(13, 14, 18, // tri0 + 20, 27, 7, // tri1 + 27, 9, 7, // tri2 + 27, 4, 9 // tri3 + ), + gsSPNTriangles_5b(27, 28, 4, // tri0 + 28, 29, 4, // tri1 + 29, 0, 4, // tri2 + 29, 5, 0 // tri3 + ), + gsSPNTriangles_5b(29, 30, 5, // tri0 + 30, 31, 5, // tri1 + 31, 24, 5, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c4_r3_2_v[167], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(0, 5, 1, // tri0 + 6, 4, 3, // tri1 + 7, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b(10, 11, 9, // tri0 + 10, 12, 11, // tri1 + 12, 13, 11, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 13, // tri0 + 14, 16, 15, // tri1 + 16, 17, 15, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b(16, 19, 18, // tri0 + 19, 20, 18, // tri1 + 20, 21, 18, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b(23, 25, 24, // tri0 + 25, 5, 0, // tri1 + 25, 0, 24, // tri2 + 6, 26, 4 // tri3 + ), + gsSPNTriangles_5b(26, 27, 4, // tri0 + 26, 28, 27, // tri1 + 28, 29, 27, // tri2 + 28, 30, 29 // tri3 + ), + gsSPNTriangles_5b(22, 31, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c4_r3_2/grd_s_c4_r3_2_evw_anime.c b/src/data/field/bg/acre/grd_s_c4_r3_2/grd_s_c4_r3_2_evw_anime.c new file mode 100644 index 00000000..468a8c26 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c4_r3_2/grd_s_c4_r3_2_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c4_r3_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c4_r3_2_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_c4_r3_2_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_c4_s_1/grd_s_c4_s_1.c b/src/data/field/bg/acre/grd_s_c4_s_1/grd_s_c4_s_1.c new file mode 100644 index 00000000..04be8fe4 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c4_s_1/grd_s_c4_s_1.c @@ -0,0 +1,310 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c4_s_1_v[] = { +#include "assets/field/bg/grd_s_c4_s_1_v.inc" +}; + +extern Gfx grd_s_c4_s_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c4_s_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c4_s_1_v[196], 17, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 4, 8, 5, // tri1 + 9, 10, 7, // tri2 + 2, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 3, 14, // tri0 + 11, 15, 16, // tri1 + 15, 8, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c4_s_1_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 0, // tri0 + 6, 7, 0, // tri1 + 7, 1, 0, // tri2 + 8, 5, 9 // tri3 + ), + gsSPNTriangles_5b( + 5, 0, 9, // tri0 + 1, 7, 10, // tri1 + 7, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 10, // tri0 + 12, 14, 13, // tri1 + 3, 15, 4, // tri2 + 3, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 4, // tri0 + 2, 9, 0, // tri1 + 3, 18, 16, // tri2 + 3, 19, 18 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 22, // tri0 + 21, 23, 22, // tri1 + 23, 24, 22, // tri2 + 25, 26, 27 // tri3 + ), + gsSPNTriangles_5b( + 26, 28, 27, // tri0 + 29, 30, 2, // tri1 + 28, 31, 27, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_s_1_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 25, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 3, 6, 5, // tri1 + 7, 8, 6, // tri2 + 8, 5, 6 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 10, 11, 12, // tri1 + 0, 13, 14, // tri2 + 13, 15, 14 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 15, // tri0 + 16, 18, 17, // tri1 + 18, 19, 20, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b( + 22, 24, 23, // tri0 + 24, 9, 23, // tri1 + 9, 25, 23, // tri2 + 9, 7, 25 // tri3 + ), + gsSPNTriangles_5b( + 24, 26, 9, // tri0 + 24, 27, 26, // tri1 + 22, 28, 24, // tri2 + 29, 30, 31 // tri3 + ), + gsSPNTriangles_5b( + 0, 30, 3, // tri0 + 0, 14, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_s_1_v[64], 10, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 1, 0, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 0, 4, 6, // tri0 + 7, 8, 9, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c4_s_1_v[74], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 7, 9, 8, // tri1 + 2, 10, 11, // tri2 + 8, 12, 5 // tri3 + ), + gsSPNTriangles_5b( + 6, 13, 14, // tri0 + 15, 16, 17, // tri1 + 18, 15, 19, // tri2 + 20, 18, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 24, // tri0 + 16, 22, 25, // tri1 + 23, 26, 27, // tri2 + 26, 28, 29 // tri3 + ), + gsSPNTriangles_5b( + 28, 30, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_s_1_v[105], 11, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 8, 6, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c4_s_1_v[116], 32, 0), + gsSPNTrianglesInit_5b( + 27, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 5, 7, // tri2 + 8, 6, 7 // tri3 + ), + gsSPNTriangles_5b( + 0, 2, 9, // tri0 + 2, 10, 9, // tri1 + 10, 11, 9, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 12, 15, 16, // tri0 + 12, 16, 13, // tri1 + 12, 14, 17, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 18, 21, 19, // tri0 + 22, 23, 18, // tri1 + 22, 24, 23, // tri2 + 17, 25, 26 // tri3 + ), + gsSPNTriangles_5b( + 17, 14, 25, // tri0 + 27, 28, 29, // tri1 + 28, 30, 29, // tri2 + 11, 31, 27 // tri3 + ), + gsSPNTriangles_5b( + 11, 10, 31, // tri0 + 26, 20, 19, // tri1 + 26, 25, 20, // tri2 + 21, 18, 23 // tri3 + ), + gsSPVertex(&grd_s_c4_s_1_v[148], 31, 0), + gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b( + 0, 2, 5, // tri0 + 6, 5, 7, // tri1 + 6, 4, 5, // tri2 + 8, 6, 7 // tri3 + ), + gsSPNTriangles_5b( + 8, 7, 9, // tri0 + 10, 8, 9, // tri1 + 10, 9, 11, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 16, 17, 18, // tri1 + 18, 17, 19, // tri2 + 17, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 23, // tri0 + 24, 21, 23, // tri1 + 24, 23, 25, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b( + 27, 24, 26, // tri0 + 27, 26, 16, // tri1 + 28, 27, 18, // tri2 + 27, 16, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 28, 18, // tri0 + 19, 29, 28, // tri1 + 30, 13, 15, // tri2 + 22, 21, 30 // tri3 + ), + gsSPNTriangles_5b( + 15, 22, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c4_s_1_v[179], 17, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 4, 8, 5, // tri1 + 9, 10, 7, // tri2 + 11, 3, 12 // tri3 + ), + gsSPNTriangles_5b( + 2, 13, 14, // tri0 + 13, 15, 16, // tri1 + 15, 8, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c4_s_2/grd_s_c4_s_2.c b/src/data/field/bg/acre/grd_s_c4_s_2/grd_s_c4_s_2.c new file mode 100644 index 00000000..54c0c422 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c4_s_2/grd_s_c4_s_2.c @@ -0,0 +1,341 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c4_s_2_v[] = { +#include "assets/field/bg/grd_s_c4_s_2_v.inc" +}; + +extern Gfx grd_s_c4_s_2_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c4_s_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c4_s_2_v[234], 21, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 5, 7, // tri0 + 1, 3, 2, // tri1 + 9, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 0, 7, 1, // tri0 + 15, 12, 14, // tri1 + 16, 17, 13, // tri2 + 16, 9, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 15, 19, // tri0 + 8, 18, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c4_s_2_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 5, 9, 8, // tri2 + 5, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 9, // tri0 + 12, 13, 14, // tri1 + 13, 15, 14, // tri2 + 14, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 16, 18, 17, // tri0 + 18, 19, 17, // tri1 + 20, 19, 21, // tri2 + 19, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 22, // tri0 + 19, 23, 22, // tri1 + 17, 19, 20, // tri2 + 25, 11, 10 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 11, // tri0 + 21, 27, 20, // tri1 + 28, 29, 30, // tri2 + 29, 31, 30 // tri3 + ), + gsSPVertex(&grd_s_c4_s_2_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 6, 3 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 3, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 13, 1, 14, // tri0 + 1, 15, 14, // tri1 + 1, 16, 15, // tri2 + 16, 17, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 18, 17, // tri0 + 19, 20, 21, // tri1 + 19, 21, 22, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 24, 27, // tri0 + 26, 27, 19, // tri1 + 28, 26, 19, // tri2 + 28, 19, 22 // tri3 + ), + gsSPNTriangles_5b( + 29, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_s_2_v[64], 32, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 6, 8, 9, // tri1 + 10, 6, 9, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 11, 13, // tri0 + 15, 16, 17, // tri1 + 15, 17, 18, // tri2 + 16, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 17, 16, 20, // tri0 + 21, 20, 22, // tri1 + 21, 17, 20, // tri2 + 23, 18, 24 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 27, // tri0 + 26, 28, 29, // tri1 + 29, 27, 26, // tri2 + 3, 30, 2 // tri3 + ), + gsSPNTriangles_5b( + 3, 5, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_s_2_v[95], 3, 0), + gsSPNTrianglesInit_5b( + 1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c4_s_2_v[98], 29, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 4, 8, // tri0 + 5, 9, 10, // tri1 + 9, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 14, 7, 16, // tri0 + 17, 18, 19, // tri1 + 17, 20, 18, // tri2 + 18, 21, 19 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 2, // tri0 + 20, 24, 22, // tri1 + 21, 25, 26, // tri2 + 3, 27, 28 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c4_s_2_v[127], 32, 0), + gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 9, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 12, // tri0 + 17, 15, 18, // tri1 + 19, 20, 18, // tri2 + 20, 17, 18 // tri3 + ), + gsSPNTriangles_5b( + 11, 21, 22, // tri0 + 21, 23, 22, // tri1 + 24, 23, 21, // tri2 + 24, 25, 23 // tri3 + ), + gsSPNTriangles_5b( + 26, 24, 10, // tri0 + 24, 21, 10, // tri1 + 27, 10, 28, // tri2 + 27, 26, 10 // tri3 + ), + gsSPNTriangles_5b( + 29, 27, 13, // tri0 + 27, 28, 13, // tri1 + 30, 13, 31, // tri2 + 30, 29, 13 // tri3 + ), + gsSPVertex(&grd_s_c4_s_2_v[159], 32, 0), + gsSPNTrianglesInit_5b( + 27, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 2, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 0, 2, // tri0 + 4, 5, 6, // tri1 + 7, 4, 6, // tri2 + 7, 6, 8 // tri3 + ), + gsSPNTriangles_5b( + 9, 7, 8, // tri0 + 10, 11, 12, // tri1 + 13, 10, 14, // tri2 + 15, 13, 16 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 16, // tri0 + 3, 15, 17, // tri1 + 2, 3, 17, // tri2 + 5, 2, 18 // tri3 + ), + gsSPNTriangles_5b( + 8, 6, 19, // tri0 + 20, 9, 19, // tri1 + 9, 8, 19, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b( + 22, 24, 23, // tri0 + 24, 25, 23, // tri1 + 24, 26, 25, // tri2 + 24, 27, 26 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 26, // tri0 + 28, 29, 26, // tri1 + 28, 30, 29, // tri2 + 28, 31, 30 // tri3 + ), + gsSPVertex(&grd_s_c4_s_2_v[191], 22, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b( + 3, 6, 5, // tri0 + 7, 8, 9, // tri1 + 8, 10, 9, // tri2 + 10, 11, 9 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 14, // tri0 + 12, 15, 13, // tri1 + 15, 16, 13, // tri2 + 16, 17, 13 // tri3 + ), + gsSPNTriangles_5b( + 16, 0, 17, // tri0 + 16, 18, 0, // tri1 + 18, 19, 0, // tri2 + 19, 20, 3 // tri3 + ), + gsSPNTriangles_5b( + 20, 6, 3, // tri0 + 20, 21, 6, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c4_s_2_v[213], 21, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 5, 7, // tri0 + 1, 3, 2, // tri1 + 9, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 12, 14, // tri0 + 0, 7, 1, // tri1 + 16, 17, 13, // tri2 + 16, 9, 17 // tri3 + ), + gsSPNTriangles_5b( + 8, 18, 19, // tri0 + 18, 15, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c5_1/grd_s_c5_1.c b/src/data/field/bg/acre/grd_s_c5_1/grd_s_c5_1.c new file mode 100644 index 00000000..4f883fb6 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c5_1/grd_s_c5_1.c @@ -0,0 +1,256 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c5_1_v[] = { +#include "assets/field/bg/grd_s_c5_1_v.inc" +}; + +extern Gfx grd_s_c5_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c5_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c5_1_v[163], 12, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 3, 7, // tri0 + 8, 6, 9, // tri1 + 10, 8, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c5_1_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 0, 8, 1, // tri1 + 9, 10, 11, // tri2 + 9, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 10, // tri0 + 9, 14, 12, // tri1 + 15, 14, 9, // tri2 + 10, 16, 11 // tri3 + ), + gsSPNTriangles_5b( + 17, 2, 18, // tri0 + 19, 4, 20, // tri1 + 4, 6, 20, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b( + 23, 22, 24, // tri0 + 14, 25, 12, // tri1 + 26, 27, 28, // tri2 + 27, 29, 28 // tri3 + ), + gsSPNTriangles_5b( + 4, 30, 5, // tri0 + 5, 31, 7, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_1_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 9, 8, 11, // tri2 + 12, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 3, // tri0 + 12, 13, 3, // tri1 + 3, 14, 1, // tri2 + 3, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 1, // tri0 + 16, 17, 18, // tri1 + 19, 20, 21, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 20, 6, // tri0 + 7, 6, 20, // tri1 + 23, 24, 25, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b( + 26, 29, 27, // tri0 + 30, 31, 23, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c5_1_v[64], 32, 0), + gsSPNTrianglesInit_5b( + 30, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 7, 5, // tri0 + 7, 8, 5, // tri1 + 9, 10, 11, // tri2 + 9, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 13, 16, 14, // tri1 + 17, 18, 1, // tri2 + 17, 1, 0 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 1, // tri0 + 18, 20, 19, // tri1 + 21, 1, 19, // tri2 + 21, 2, 1 // tri3 + ), + gsSPNTriangles_5b( + 2, 22, 23, // tri0 + 2, 23, 3, // tri1 + 21, 22, 2, // tri2 + 21, 24, 22 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 23, // tri0 + 25, 23, 22, // tri1 + 24, 25, 22, // tri2 + 24, 27, 25 // tri3 + ), + gsSPNTriangles_5b( + 25, 27, 4, // tri0 + 26, 25, 28, // tri1 + 25, 4, 28, // tri2 + 4, 6, 28 // tri3 + ), + gsSPNTriangles_5b( + 27, 29, 4, // tri0 + 29, 30, 7, // tri1 + 29, 7, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_1_v[95], 9, 0), + gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 0 // tri2 + ), + gsSPNTriangles_5b( + 5, 1, 0, // tri0 + 1, 6, 7, // tri1 + 1, 7, 2, // tri2 + 5, 8, 1 // tri3 + ), + gsSPNTriangles_5b( + 8, 6, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c5_1_v[104], 32, 0), + gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 10, 13, 11, // tri2 + 14, 15, 13 // tri3 + ), + gsSPNTriangles_5b( + 16, 10, 12, // tri0 + 17, 18, 19, // tri1 + 20, 3, 21, // tri2 + 18, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 18, 21, 19, // tri0 + 17, 19, 22, // tri1 + 7, 16, 8, // tri2 + 10, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 15, // tri0 + 25, 22, 24, // tri1 + 26, 27, 5, // tri2 + 28, 29, 27 // tri3 + ), + gsSPVertex(&grd_s_c5_1_v[134], 17, 0), + gsSPNTrianglesInit_5b( + 9, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b( + 5, 4, 6, // tri0 + 7, 6, 8, // tri1 + 9, 10, 11, // tri2 + 12, 13, 8 // tri3 + ), + gsSPNTriangles_5b( + 9, 11, 12, // tri0 + 14, 15, 16, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c5_1_v[151], 12, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 1, 9, 10, // tri1 + 9, 3, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c5_2/grd_s_c5_2.c b/src/data/field/bg/acre/grd_s_c5_2/grd_s_c5_2.c new file mode 100644 index 00000000..598db4df --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c5_2/grd_s_c5_2.c @@ -0,0 +1,347 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c5_2_v[] = { +#include "assets/field/bg/grd_s_c5_2_v.inc" +}; + +extern Gfx grd_s_c5_2_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c5_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c5_2_v[225], 23, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 3, 4, 6, // tri0 + 8, 9, 10, // tri1 + 9, 5, 7, // tri2 + 11, 8, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 11, 14, // tri0 + 13, 14, 15, // tri1 + 16, 17, 18, // tri2 + 17, 13, 15 // tri3 + ), + gsSPNTriangles_5b( + 19, 16, 20, // tri0 + 21, 19, 22, // tri1 + 16, 18, 20, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c5_2_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 7, 9, 5, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 6, 12, // tri0 + 6, 5, 12, // tri1 + 11, 13, 14, // tri2 + 11, 15, 13 // tri3 + ), + gsSPNTriangles_5b( + 11, 16, 15, // tri0 + 11, 10, 16, // tri1 + 1, 17, 16, // tri2 + 1, 0, 17 // tri3 + ), + gsSPNTriangles_5b( + 17, 15, 16, // tri0 + 3, 18, 4, // tri1 + 18, 19, 4, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 19, // tri0 + 22, 23, 24, // tri1 + 23, 25, 24, // tri2 + 26, 27, 22 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 22, // tri0 + 29, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_2_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 25, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 5, // tri0 + 7, 8, 9, // tri1 + 8, 10, 9, // tri2 + 10, 11, 9 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 14, // tri0 + 13, 15, 14, // tri1 + 15, 7, 14, // tri2 + 11, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 16, 18, 17, // tri0 + 11, 10, 16, // tri1 + 19, 1, 20, // tri2 + 21, 18, 16 // tri3 + ), + gsSPNTriangles_5b( + 7, 15, 8, // tri0 + 12, 22, 13, // tri1 + 12, 23, 22, // tri2 + 23, 24, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 25, 24, // tri0 + 25, 26, 24, // tri1 + 26, 27, 24, // tri2 + 27, 28, 24 // tri3 + ), + gsSPNTriangles_5b( + 26, 29, 27, // tri0 + 30, 31, 21, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_2_v[64], 16, 0), + gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 9, 10, 11, // tri2 + 12, 9, 11 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c5_2_v[80], 32, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 5, // tri0 + 7, 8, 9, // tri1 + 8, 6, 9, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 10, 13, 11, // tri0 + 7, 14, 15, // tri1 + 14, 12, 16, // tri2 + 10, 17, 18 // tri3 + ), + gsSPNTriangles_5b( + 17, 19, 18, // tri0 + 20, 21, 22, // tri1 + 23, 20, 24, // tri2 + 25, 26, 27 // tri3 + ), + gsSPNTriangles_5b( + 25, 27, 19, // tri0 + 26, 23, 28, // tri1 + 29, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_2_v[112], 12, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 9, 0, 11, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c5_2_v[124], 32, 0), + gsSPNTrianglesInit_5b( + 30, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 4, 9, 5, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 14, 15, 16, // tri1 + 14, 17, 15, // tri2 + 14, 18, 17 // tri3 + ), + gsSPNTriangles_5b( + 0, 19, 1, // tri0 + 20, 16, 21, // tri1 + 16, 15, 21, // tri2 + 0, 22, 19 // tri3 + ), + gsSPNTriangles_5b( + 0, 23, 22, // tri0 + 24, 25, 8, // tri1 + 24, 26, 25, // tri2 + 26, 27, 25 // tri3 + ), + gsSPNTriangles_5b( + 27, 17, 25, // tri0 + 17, 28, 25, // tri1 + 28, 8, 25, // tri2 + 17, 18, 28 // tri3 + ), + gsSPNTriangles_5b( + 28, 7, 8, // tri0 + 29, 12, 30, // tri1 + 12, 31, 30, // tri2 + 12, 13, 31 // tri3 + ), + gsSPNTriangles_5b( + 29, 9, 12, // tri0 + 12, 9, 10, // tri1 + 9, 4, 10, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_2_v[156], 32, 0), + gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 4, 1, 0 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 4, 6, 1, // tri1 + 6, 7, 1, // tri2 + 7, 2, 1 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 8, 11, 9, // tri1 + 12, 8, 13, // tri2 + 8, 10, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 13, 15, // tri0 + 14, 12, 13, // tri1 + 16, 14, 17, // tri2 + 14, 15, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 17, 19, // tri0 + 18, 16, 17, // tri1 + 20, 18, 21, // tri2 + 18, 19, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 21, 23, // tri0 + 22, 20, 21, // tri1 + 24, 25, 26, // tri2 + 25, 27, 26 // tri3 + ), + gsSPNTriangles_5b( + 28, 26, 29, // tri0 + 28, 24, 26, // tri1 + 5, 30, 4, // tri2 + 30, 6, 4 // tri3 + ), + gsSPNTriangles_5b( + 10, 9, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_2_v[188], 10, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 2, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 7, 9, 8, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c5_2_v[198], 27, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 5, 9, // tri0 + 10, 8, 11, // tri1 + 12, 13, 14, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 12, 19, // tri0 + 6, 20, 21, // tri1 + 20, 22, 21, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 22, // tri0 + 16, 26, 17, // tri1 + 23, 15, 24, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c5_3/grd_s_c5_3.c b/src/data/field/bg/acre/grd_s_c5_3/grd_s_c5_3.c new file mode 100644 index 00000000..6b4d56c2 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c5_3/grd_s_c5_3.c @@ -0,0 +1,267 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c5_3_v[] = { +#include "assets/field/bg/grd_s_c5_3_v.inc" +}; + +extern Gfx grd_s_c5_3_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c5_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c5_3_v[169], 12, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 6, 3, 7, // tri0 + 8, 5, 9, // tri1 + 10, 8, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c5_3_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 2, 3 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 5, 1, 6, // tri1 + 6, 1, 0, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b( + 9, 11, 10, // tri0 + 9, 12, 11, // tri1 + 11, 12, 13, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 16, // tri0 + 17, 18, 16, // tri1 + 19, 1, 20, // tri2 + 1, 5, 20 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 23, // tri0 + 21, 20, 22, // tri1 + 20, 24, 22, // tri2 + 20, 25, 24 // tri3 + ), + gsSPNTriangles_5b( + 20, 5, 25, // tri0 + 20, 21, 19, // tri1 + 26, 27, 28, // tri2 + 15, 14, 27 // tri3 + ), + gsSPNTriangles_5b( + 14, 28, 27, // tri0 + 26, 29, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_3_v[31], 32, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 5, // tri0 + 8, 9, 7, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 12, // tri0 + 15, 16, 17, // tri1 + 2, 18, 0, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 16, 15, 22, // tri0 + 23, 24, 25, // tri1 + 25, 26, 23, // tri2 + 15, 23, 26 // tri3 + ), + gsSPNTriangles_5b( + 24, 27, 25, // tri0 + 14, 13, 28, // tri1 + 12, 10, 13, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 8, 7, 29, // tri0 + 3, 6, 5, // tri1 + 2, 20, 18, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_3_v[61], 10, 0), + gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 5, 0 // tri2 + ), + gsSPNTriangles_5b( + 4, 0, 5, // tri0 + 6, 1, 0, // tri1 + 7, 6, 8, // tri2 + 9, 1, 6 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c5_3_v[71], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 7, 9, 10, // tri1 + 9, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 13, 15, 16, // tri0 + 17, 13, 16, // tri1 + 17, 16, 18, // tri2 + 19, 18, 20 // tri3 + ), + gsSPNTriangles_5b( + 21, 20, 22, // tri0 + 23, 22, 24, // tri1 + 25, 23, 24, // tri2 + 25, 24, 26 // tri3 + ), + gsSPNTriangles_5b( + 27, 25, 26, // tri0 + 28, 29, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_3_v[102], 27, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 5, 3, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 4, 6, // tri0 + 7, 6, 8, // tri1 + 9, 10, 11, // tri2 + 9, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 9, 11, 12, // tri0 + 14, 15, 16, // tri1 + 15, 17, 18, // tri2 + 17, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 22, // tri0 + 21, 23, 24, // tri1 + 23, 25, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c5_3_v[129], 28, 0), + gsSPNTrianglesInit_5b( + 33, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 7, 9, 10, // tri2 + 9, 11, 10 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 14, // tri0 + 13, 15, 14, // tri1 + 13, 16, 15, // tri2 + 16, 17, 15 // tri3 + ), + gsSPNTriangles_5b( + 14, 18, 19, // tri0 + 14, 15, 18, // tri1 + 15, 20, 18, // tri2 + 15, 17, 20 // tri3 + ), + gsSPNTriangles_5b( + 19, 18, 2, // tri0 + 18, 0, 2, // tri1 + 18, 20, 0, // tri2 + 20, 21, 0 // tri3 + ), + gsSPNTriangles_5b( + 0, 22, 1, // tri0 + 0, 21, 22, // tri1 + 3, 23, 24, // tri2 + 3, 1, 23 // tri3 + ), + gsSPNTriangles_5b( + 1, 22, 23, // tri0 + 22, 25, 23, // tri1 + 24, 23, 4, // tri2 + 23, 5, 4 // tri3 + ), + gsSPNTriangles_5b( + 23, 25, 5, // tri0 + 25, 26, 5, // tri1 + 5, 26, 7, // tri2 + 26, 9, 7 // tri3 + ), + gsSPNTriangles_5b( + 8, 7, 27, // tri0 + 7, 10, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c5_3_v[157], 12, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 8, 10, 11, // tri1 + 10, 3, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c5_r1_1/grd_s_c5_r1_1.c b/src/data/field/bg/acre/grd_s_c5_r1_1/grd_s_c5_r1_1.c new file mode 100644 index 00000000..927ff89f --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c5_r1_1/grd_s_c5_r1_1.c @@ -0,0 +1,344 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c5_r1_1_v[] = { +#include "assets/field/bg/grd_s_c5_r1_1_v.inc" +}; + +extern Gfx grd_s_c5_r1_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c5_r1_1_v[274], 24, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 8, // tri0 + 4, 8, 5, // tri1 + 9, 10, 11, // tri2 + 9, 11, 12 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 16, 17, 18, // tri1 + 16, 18, 11, // tri2 + 13, 19, 14 // tri3 + ), + gsSPNTriangles_5b(0, 15, 20, // tri0 + 0, 13, 15, // tri1 + 0, 20, 1, // tri2 + 21, 2, 22 // tri3 + ), + gsSPNTriangles_5b(2, 23, 22, // tri0 + 2, 1, 23, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c5_r1_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c5_r1_1_v[259], 15, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 3, 8, // tri0 + 1, 9, 10, // tri1 + 9, 11, 12, // tri2 + 11, 13, 14 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c5_r1_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(3, 7, 4, // tri0 + 3, 8, 7, // tri1 + 8, 9, 7, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 14, 15, 6, // tri1 + 15, 5, 6, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(17, 19, 18, // tri0 + 19, 20, 18, // tri1 + 19, 21, 20, // tri2 + 16, 22, 17 // tri3 + ), + gsSPNTriangles_5b(22, 23, 17, // tri0 + 22, 24, 23, // tri1 + 25, 26, 27, // tri2 + 25, 28, 26 // tri3 + ), + gsSPNTriangles_5b(29, 30, 31, // tri0 + 30, 25, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_r1_1_v[32], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 7, // tri1 + 6, 8, 7, // tri2 + 5, 9, 6 // tri3 + ), + gsSPNTriangles_5b(10, 11, 12, // tri0 + 12, 13, 14, // tri1 + 14, 10, 12, // tri2 + 13, 0, 15 // tri3 + ), + gsSPNTriangles_5b(15, 14, 13, // tri0 + 15, 0, 16, // tri1 + 17, 11, 10, // tri2 + 17, 18, 11 // tri3 + ), + gsSPNTriangles_5b(19, 18, 17, // tri0 + 20, 21, 22, // tri1 + 21, 20, 23, // tri2 + 24, 23, 20 // tri3 + ), + gsSPNTriangles_5b(25, 22, 21, // tri0 + 24, 26, 27, // tri1 + 26, 28, 27, // tri2 + 27, 28, 29 // tri3 + ), + gsSPVertex(&grd_s_c5_r1_1_v[62], 15, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 2, 3 // tri2 + ), + gsSPNTriangles_5b(5, 2, 4, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 10, 9, 6 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 14, 10, 11, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c5_r1_1_v[77], 32, 0), + gsSPNTrianglesInit_5b(32, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 9, 7, 10, // tri2 + 7, 5, 10 // tri3 + ), + gsSPNTriangles_5b(5, 11, 10, // tri0 + 3, 2, 12, // tri1 + 12, 13, 3, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(14, 17, 15, // tri0 + 17, 7, 15, // tri1 + 17, 8, 7, // tri2 + 5, 18, 19 // tri3 + ), + gsSPNTriangles_5b(5, 4, 18, // tri0 + 20, 21, 22, // tri1 + 20, 23, 21, // tri2 + 23, 24, 21 // tri3 + ), + gsSPNTriangles_5b(23, 25, 24, // tri0 + 25, 26, 24, // tri1 + 25, 1, 26, // tri2 + 25, 27, 1 // tri3 + ), + gsSPNTriangles_5b(27, 2, 1, // tri0 + 27, 28, 2, // tri1 + 28, 29, 2, // tri2 + 29, 12, 2 // tri3 + ), + gsSPNTriangles_5b(30, 16, 15, // tri0 + 7, 9, 15, // tri1 + 15, 9, 30, // tri2 + 19, 31, 5 // tri3 + ), + gsSPNTriangles_5b(5, 31, 11, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_r1_1_v[109], 14, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(1, 5, 3, // tri0 + 5, 6, 7, // tri1 + 7, 6, 8, // tri2 + 5, 7, 3 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 10, 11, 12, // tri1 + 13, 10, 12, // tri2 + 4, 12, 11 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c5_r1_1_v[123], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 9, 12, 10, // tri1 + 13, 14, 15, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(15, 19, 20, // tri0 + 21, 22, 23, // tri1 + 21, 24, 22, // tri2 + 24, 25, 22 // tri3 + ), + gsSPNTriangles_5b(25, 18, 22, // tri0 + 25, 16, 18, // tri1 + 16, 26, 17, // tri2 + 27, 20, 28 // tri3 + ), + gsSPNTriangles_5b(20, 29, 28, // tri0 + 20, 19, 29, // tri1 + 15, 30, 19, // tri2 + 15, 14, 30 // tri3 + ), + gsSPNTriangles_5b(13, 31, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_r1_1_v[155], 31, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b(3, 6, 5, // tri0 + 6, 7, 5, // tri1 + 6, 8, 7, // tri2 + 9, 7, 10 // tri3 + ), + gsSPNTriangles_5b(7, 8, 10, // tri0 + 11, 9, 10, // tri1 + 12, 11, 13, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(14, 17, 15, // tri0 + 17, 18, 15, // tri1 + 17, 19, 18, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 21, 24, 22, // tri1 + 21, 23, 25, // tri2 + 26, 25, 27 // tri3 + ), + gsSPNTriangles_5b(28, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c5_r1_1_v[186], 32, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 11, 10, 12, // tri2 + 13, 14, 9 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 18, 19, 16, // tri1 + 20, 12, 19, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b(24, 21, 25, // tri0 + 26, 27, 28, // tri1 + 27, 24, 29, // tri2 + 2, 30, 31 // tri3 + ), + gsSPVertex(&grd_s_c5_r1_1_v[218], 26, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 13, 14, // tri1 + 13, 15, 16, // tri2 + 15, 9, 16 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 20, 17, 21, // tri1 + 18, 22, 23, // tri2 + 22, 24, 25 // tri3 + ), + gsSPNTriangles_5b(18, 23, 19, // tri0 + 9, 11, 16, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c5_r1_1_v[244], 15, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 7, 11, // tri1 + 8, 12, 13, // tri2 + 12, 5, 14 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c5_r1_1/grd_s_c5_r1_1_evw_anime.c b/src/data/field/bg/acre/grd_s_c5_r1_1/grd_s_c5_r1_1_evw_anime.c new file mode 100644 index 00000000..38829ef0 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c5_r1_1/grd_s_c5_r1_1_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c5_r1_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c5_r1_1_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_c5_r1_1_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_c5_r1_2/grd_s_c5_r1_2.c b/src/data/field/bg/acre/grd_s_c5_r1_2/grd_s_c5_r1_2.c new file mode 100644 index 00000000..a18defb9 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c5_r1_2/grd_s_c5_r1_2.c @@ -0,0 +1,354 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c5_r1_2_v[] = { +#include "assets/field/bg/grd_s_c5_r1_2_v.inc" +}; + +extern Gfx grd_s_c5_r1_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c5_r1_2_v[269], 23, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 0, 6, // tri0 + 5, 4, 0, // tri1 + 5, 6, 7, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 10, 12, 11, // tri1 + 13, 14, 15, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 17, 18, 15, // tri1 + 17, 19, 18, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b(19, 9, 20, // tri0 + 9, 11, 20, // tri1 + 10, 21, 12, // tri2 + 21, 22, 12 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c5_r1_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c5_r1_2_v[258], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c5_r1_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(31, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 8, 9, 7, // tri2 + 10, 11, 0 // tri3 + ), + gsSPNTriangles_5b(11, 1, 0, // tri0 + 11, 12, 1, // tri1 + 12, 13, 1, // tri2 + 1, 14, 3 // tri3 + ), + gsSPNTriangles_5b(1, 13, 14, // tri0 + 4, 3, 15, // tri1 + 3, 16, 15, // tri2 + 3, 17, 16 // tri3 + ), + gsSPNTriangles_5b(3, 14, 17, // tri0 + 15, 18, 19, // tri1 + 15, 16, 18, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(17, 20, 18, // tri0 + 19, 21, 22, // tri1 + 19, 18, 21, // tri2 + 18, 23, 21 // tri3 + ), + gsSPNTriangles_5b(18, 20, 23, // tri0 + 21, 23, 24, // tri1 + 23, 25, 24, // tri2 + 25, 26, 24 // tri3 + ), + gsSPNTriangles_5b(27, 28, 29, // tri0 + 27, 26, 28, // tri1 + 26, 30, 28, // tri2 + 26, 25, 30 // tri3 + ), + gsSPVertex(&grd_s_c5_r1_2_v[31], 15, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 2, 1, 6, // tri1 + 1, 7, 6, // tri2 + 1, 4, 7 // tri3 + ), + gsSPNTriangles_5b(4, 8, 7, // tri0 + 7, 9, 10, // tri1 + 7, 8, 9, // tri2 + 11, 10, 12 // tri3 + ), + gsSPNTriangles_5b(10, 13, 12, // tri0 + 10, 14, 13, // tri1 + 10, 9, 14, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c5_r1_2_v[46], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 7, 8, 5, // tri1 + 0, 4, 9, // tri2 + 4, 6, 9 // tri3 + ), + gsSPNTriangles_5b(10, 11, 12, // tri0 + 10, 13, 11, // tri1 + 14, 15, 16, // tri2 + 16, 17, 14 // tri3 + ), + gsSPNTriangles_5b(16, 18, 17, // tri0 + 19, 20, 21, // tri1 + 22, 23, 24, // tri2 + 23, 21, 24 // tri3 + ), + gsSPNTriangles_5b(22, 25, 23, // tri0 + 26, 27, 25, // tri1 + 28, 29, 27, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_r1_2_v[76], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(0, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 12, 13, 14, // tri1 + 12, 15, 13, // tri2 + 12, 16, 15 // tri3 + ), + gsSPNTriangles_5b(13, 17, 14, // tri0 + 18, 19, 20, // tri1 + 21, 22, 23, // tri2 + 24, 2, 25 // tri3 + ), + gsSPNTriangles_5b(26, 2, 27, // tri0 + 24, 27, 2, // tri1 + 28, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_r1_2_v[107], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 10, 9, 8, // tri1 + 12, 13, 14, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b(18, 16, 15, // tri0 + 19, 20, 21, // tri1 + 20, 22, 21, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b(22, 24, 23, // tri0 + 22, 25, 24, // tri1 + 26, 27, 28, // tri2 + 16, 18, 29 // tri3 + ), + gsSPNTriangles_5b(30, 28, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_r1_2_v[139], 16, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 0, 4 // tri2 + ), + gsSPNTriangles_5b(5, 4, 0, // tri0 + 6, 7, 8, // tri1 + 7, 6, 9, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(10, 7, 13, // tri0 + 10, 13, 11, // tri1 + 13, 14, 11, // tri2 + 13, 15, 14 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c5_r1_2_v[155], 30, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 7, 9, 10, // tri1 + 9, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(16, 13, 17, // tri0 + 18, 16, 19, // tri1 + 20, 18, 21, // tri2 + 22, 20, 23 // tri3 + ), + gsSPNTriangles_5b(24, 22, 25, // tri0 + 14, 26, 27, // tri1 + 26, 28, 29, // tri2 + 20, 21, 23 // tri3 + ), + gsSPNTriangles_5b(14, 27, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c5_r1_2_v[185], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 3, 4, 0 // tri2 + ), + gsSPNTriangles_5b(4, 5, 0, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(9, 10, 8, // tri0 + 11, 12, 10, // tri1 + 11, 13, 12, // tri2 + 11, 14, 13 // tri3 + ), + gsSPNTriangles_5b(15, 16, 14, // tri0 + 15, 17, 16, // tri1 + 17, 18, 19, // tri2 + 19, 20, 17 // tri3 + ), + gsSPNTriangles_5b(19, 21, 20, // tri0 + 19, 22, 21, // tri1 + 22, 23, 21, // tri2 + 22, 24, 23 // tri3 + ), + gsSPNTriangles_5b(24, 25, 23, // tri0 + 25, 26, 23, // tri1 + 8, 27, 9, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b(28, 31, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_r1_2_v[217], 30, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(4, 7, 6, // tri0 + 4, 8, 7, // tri1 + 8, 9, 7, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b(10, 11, 9, // tri0 + 10, 12, 11, // tri1 + 10, 13, 12, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(16, 17, 14, // tri0 + 16, 18, 17, // tri1 + 18, 19, 17, // tri2 + 17, 19, 20 // tri3 + ), + gsSPNTriangles_5b(20, 21, 17, // tri0 + 20, 22, 21, // tri1 + 22, 23, 21, // tri2 + 23, 24, 21 // tri3 + ), + gsSPNTriangles_5b(23, 25, 24, // tri0 + 25, 26, 24, // tri1 + 26, 27, 24, // tri2 + 26, 28, 27 // tri3 + ), + gsSPNTriangles_5b(28, 29, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c5_r1_2_v[247], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 8, 3, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c5_r1_2/grd_s_c5_r1_2_evw_anime.c b/src/data/field/bg/acre/grd_s_c5_r1_2/grd_s_c5_r1_2_evw_anime.c new file mode 100644 index 00000000..7f4376c4 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c5_r1_2/grd_s_c5_r1_2_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c5_r1_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c5_r1_2_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_c5_r1_2_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_c5_r2_1/grd_s_c5_r2_1.c b/src/data/field/bg/acre/grd_s_c5_r2_1/grd_s_c5_r2_1.c new file mode 100644 index 00000000..ce46ca23 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c5_r2_1/grd_s_c5_r2_1.c @@ -0,0 +1,376 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c5_r2_1_v[] = { +#include "assets/field/bg/grd_s_c5_r2_1_v.inc" +}; + +extern Gfx grd_s_c5_r2_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c5_r2_1_v[293], 19, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 8, 10, 9, // tri1 + 2, 3, 11, // tri2 + 3, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 13, 14, 11, // tri1 + 15, 4, 6, // tri2 + 4, 16, 5 // tri3 + ), + gsSPNTriangles_5b(4, 14, 16, // tri0 + 8, 15, 10, // tri1 + 15, 6, 10, // tri2 + 17, 7, 18 // tri3 + ), + gsSPNTriangles_5b(7, 9, 18, // tri0 + 14, 13, 16, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c5_r2_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c5_r2_1_v[279], 14, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 3, 6, // tri0 + 7, 8, 9, // tri1 + 8, 4, 9, // tri2 + 10, 7, 11 // tri3 + ), + gsSPNTriangles_5b(12, 10, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c5_r2_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(13, 15, 14, // tri0 + 15, 16, 14, // tri1 + 4, 6, 8, // tri2 + 6, 9, 8 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 20, 21, 22, // tri1 + 23, 20, 22, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(24, 27, 25, // tri0 + 17, 28, 18, // tri1 + 29, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_r2_1_v[32], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 3, 1, 4, // tri1 + 1, 5, 4 // tri2 + ), + gsSPNTriangles_5b(1, 0, 5, // tri0 + 6, 7, 0, // tri1 + 8, 9, 10, // tri2 + 8, 11, 9 // tri3 + ), + gsSPNTriangles_5b(9, 12, 10, // tri0 + 13, 14, 15, // tri1 + 16, 14, 13, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(17, 20, 18, // tri0 + 20, 21, 18, // tri1 + 22, 23, 24, // tri2 + 23, 25, 24 // tri3 + ), + gsSPNTriangles_5b(25, 26, 24, // tri0 + 25, 27, 26, // tri1 + 16, 13, 4, // tri2 + 13, 3, 4 // tri3 + ), + gsSPNTriangles_5b(28, 29, 30, // tri0 + 28, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_r2_1_v[64], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(6, 9, 7, // tri0 + 10, 8, 11, // tri1 + 2, 1, 12, // tri2 + 1, 13, 12 // tri3 + ), + gsSPNTriangles_5b(13, 14, 12, // tri0 + 15, 16, 14, // tri1 + 14, 13, 17, // tri2 + 13, 18, 17 // tri3 + ), + gsSPNTriangles_5b(13, 19, 18, // tri0 + 20, 21, 22, // tri1 + 21, 23, 22, // tri2 + 20, 24, 21 // tri3 + ), + gsSPNTriangles_5b(25, 10, 26, // tri0 + 10, 11, 26, // tri1 + 7, 11, 8, // tri2 + 27, 28, 29 // tri3 + ), + gsSPVertex(&grd_s_c5_r2_1_v[94], 22, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 13, 14, // tri1 + 2, 1, 15, // tri2 + 1, 16, 15 // tri3 + ), + gsSPNTriangles_5b(15, 17, 18, // tri0 + 15, 16, 17, // tri1 + 19, 20, 21, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c5_r2_1_v[116], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 3, 9, 10, // tri2 + 9, 11, 10 // tri3 + ), + gsSPNTriangles_5b(3, 10, 2, // tri0 + 9, 12, 11, // tri1 + 12, 13, 11, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 18, 20, 19, // tri1 + 14, 16, 21, // tri2 + 16, 22, 21 // tri3 + ), + gsSPNTriangles_5b(16, 23, 22, // tri0 + 24, 17, 25, // tri1 + 17, 19, 25, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(24, 26, 27, // tri0 + 28, 22, 23, // tri1 + 28, 29, 22, // tri2 + 24, 27, 30 // tri3 + ), + gsSPNTriangles_5b(31, 30, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_r2_1_v[148], 20, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(0, 2, 7, // tri0 + 0, 8, 1, // tri1 + 9, 10, 11, // tri2 + 9, 8, 10 // tri3 + ), + gsSPNTriangles_5b(8, 9, 1, // tri0 + 12, 13, 14, // tri1 + 12, 15, 13, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(17, 19, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c5_r2_1_v[168], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 8, 9, 7, // tri1 + 8, 10, 9, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(12, 14, 13, // tri0 + 14, 15, 13, // tri1 + 16, 2, 17, // tri2 + 18, 17, 19 // tri3 + ), + gsSPNTriangles_5b(20, 19, 6, // tri0 + 3, 21, 1, // tri1 + 3, 22, 21, // tri2 + 23, 10, 24 // tri3 + ), + gsSPNTriangles_5b(25, 26, 24, // tri0 + 27, 28, 29, // tri1 + 22, 29, 21, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_r2_1_v[198], 14, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 5, 4, 3 // tri2 + ), + gsSPNTriangles_5b(6, 5, 3, // tri0 + 7, 8, 6, // tri1 + 9, 10, 7, // tri2 + 11, 12, 13 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c5_r2_1_v[212], 14, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 8, 3, 9, // tri1 + 5, 10, 11, // tri2 + 10, 12, 13 // tri3 + ), + gsSPNTriangles_5b(12, 7, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c5_r2_1_v[226], 32, 0), + gsSPNTrianglesInit_5b(32, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 8, 9, 7, // tri2 + 0, 10, 11 // tri3 + ), + gsSPNTriangles_5b(10, 12, 11, // tri0 + 0, 13, 10, // tri1 + 11, 12, 14, // tri2 + 2, 13, 0 // tri3 + ), + gsSPNTriangles_5b(2, 15, 13, // tri0 + 16, 17, 18, // tri1 + 16, 19, 17, // tri2 + 19, 20, 17 // tri3 + ), + gsSPNTriangles_5b(8, 21, 9, // tri0 + 21, 22, 9, // tri1 + 21, 18, 22, // tri2 + 18, 23, 16 // tri3 + ), + gsSPNTriangles_5b(14, 20, 24, // tri0 + 20, 19, 24, // tri1 + 2, 25, 26, // tri2 + 25, 27, 26 // tri3 + ), + gsSPNTriangles_5b(15, 2, 26, // tri0 + 21, 23, 18, // tri1 + 28, 25, 29, // tri2 + 28, 30, 25 // tri3 + ), + gsSPNTriangles_5b(25, 2, 29, // tri0 + 2, 4, 29, // tri1 + 0, 31, 3, // tri2 + 0, 11, 31 // tri3 + ), + gsSPNTriangles_5b(11, 24, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_r2_1_v[258], 21, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 5, 6, 3, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 7, 10, 9, // tri1 + 10, 11, 9, // tri2 + 11, 12, 9 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 11, 14, 13, // tri1 + 15, 16, 17, // tri2 + 15, 18, 16 // tri3 + ), + gsSPNTriangles_5b(19, 0, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c5_r2_1/grd_s_c5_r2_1_evw_anime.c b/src/data/field/bg/acre/grd_s_c5_r2_1/grd_s_c5_r2_1_evw_anime.c new file mode 100644 index 00000000..2eb4442a --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c5_r2_1/grd_s_c5_r2_1_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c5_r2_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c5_r2_1_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_c5_r2_1_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_c5_r2_2/grd_s_c5_r2_2.c b/src/data/field/bg/acre/grd_s_c5_r2_2/grd_s_c5_r2_2.c new file mode 100644 index 00000000..dddf34bb --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c5_r2_2/grd_s_c5_r2_2.c @@ -0,0 +1,343 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c5_r2_2_v[] = { +#include "assets/field/bg/grd_s_c5_r2_2_v.inc" +}; + +extern Gfx grd_s_c5_r2_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c5_r2_2_v[259], 16, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(12, 13, 10, // tri0 + 12, 14, 13, // tri1 + 14, 15, 13, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c5_r2_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c5_r2_2_v[240], 19, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b(5, 4, 6, // tri0 + 7, 8, 9, // tri1 + 10, 5, 11, // tri2 + 12, 10, 13 // tri3 + ), + gsSPNTriangles_5b(14, 12, 15, // tri0 + 14, 15, 16, // tri1 + 17, 18, 7, // tri2 + 14, 16, 17 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c5_r2_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 7, 8, // tri1 + 6, 9, 7, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 13, 14, 12, // tri1 + 15, 16, 17, // tri2 + 16, 14, 17 // tri3 + ), + gsSPNTriangles_5b(9, 18, 19, // tri0 + 18, 20, 19, // tri1 + 19, 21, 22, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(23, 24, 25, // tri0 + 23, 26, 24, // tri1 + 26, 27, 24, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b(29, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_r2_2_v[32], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b(6, 7, 5, // tri0 + 8, 9, 7, // tri1 + 9, 8, 10, // tri2 + 2, 11, 0 // tri3 + ), + gsSPNTriangles_5b(12, 13, 14, // tri0 + 15, 16, 17, // tri1 + 18, 19, 20, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b(22, 24, 23, // tri0 + 22, 25, 24, // tri1 + 22, 26, 25, // tri2 + 26, 27, 25 // tri3 + ), + gsSPNTriangles_5b(27, 28, 25, // tri0 + 29, 4, 30, // tri1 + 4, 29, 31, // tri2 + 3, 30, 4 // tri3 + ), + gsSPVertex(&grd_s_c5_r2_2_v[64], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 4, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(13, 15, 14, // tri0 + 16, 14, 17, // tri1 + 14, 15, 17, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 24, 9, 25, // tri1 + 9, 24, 11, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b(29, 30, 31, // tri0 + 30, 28, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_r2_2_v[96], 9, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(6, 7, 3, // tri0 + 7, 6, 8, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c5_r2_2_v[105], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 7, 9, 10, // tri1 + 11, 12, 13, // tri2 + 14, 11, 15 // tri3 + ), + gsSPNTriangles_5b(16, 14, 17, // tri0 + 18, 16, 19, // tri1 + 20, 18, 21, // tri2 + 22, 20, 23 // tri3 + ), + gsSPNTriangles_5b(12, 24, 25, // tri0 + 24, 26, 27, // tri1 + 18, 19, 21, // tri2 + 12, 25, 13 // tri3 + ), + gsSPNTriangles_5b(28, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_r2_2_v[136], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 7, 9, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c5_r2_2_v[147], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 2, 4, 3 // tri2 + ), + gsSPNTriangles_5b(2, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 7, 10, 9, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 12, 14, 13, // tri1 + 12, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 17, 18, 16, // tri1 + 19, 20, 21, // tri2 + 19, 22, 20 // tri3 + ), + gsSPNTriangles_5b(22, 23, 20, // tri0 + 23, 24, 20, // tri1 + 23, 25, 24, // tri2 + 25, 26, 24 // tri3 + ), + gsSPNTriangles_5b(26, 27, 24, // tri0 + 26, 28, 27, // tri1 + 28, 29, 27, // tri2 + 28, 30, 29 // tri3 + ), + gsSPNTriangles_5b(30, 31, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_r2_2_v[179], 10, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 7, 8, 5 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c5_r2_2_v[189], 32, 0), + gsSPNTrianglesInit_5b(38, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 8, 9, 7, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 11, 14, 13, // tri1 + 11, 15, 14, // tri2 + 12, 6, 5 // tri3 + ), + gsSPNTriangles_5b(12, 13, 6, // tri0 + 13, 16, 6, // tri1 + 13, 14, 16, // tri2 + 6, 17, 8 // tri3 + ), + gsSPNTriangles_5b(6, 16, 17, // tri0 + 9, 8, 18, // tri1 + 8, 19, 18, // tri2 + 8, 17, 19 // tri3 + ), + gsSPNTriangles_5b(17, 20, 19, // tri0 + 18, 19, 21, // tri1 + 19, 22, 21, // tri2 + 19, 23, 22 // tri3 + ), + gsSPNTriangles_5b(19, 20, 23, // tri0 + 21, 24, 25, // tri1 + 21, 22, 24, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b(23, 26, 24, // tri0 + 25, 0, 2, // tri1 + 25, 24, 0, // tri2 + 24, 27, 0 // tri3 + ), + gsSPNTriangles_5b(24, 26, 27, // tri0 + 0, 27, 3, // tri1 + 27, 28, 3, // tri2 + 4, 29, 30 // tri3 + ), + gsSPNTriangles_5b(4, 3, 29, // tri0 + 3, 28, 29, // tri1 + 28, 31, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c5_r2_2_v[221], 19, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 0, 5, 1 // tri2 + ), + gsSPNTriangles_5b(0, 6, 5, // tri0 + 6, 7, 8, // tri1 + 7, 9, 10, // tri2 + 4, 11, 12 // tri3 + ), + gsSPNTriangles_5b(9, 13, 14, // tri0 + 13, 15, 16, // tri1 + 15, 17, 16, // tri2 + 15, 18, 17 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c5_r2_2/grd_s_c5_r2_2_evw_anime.c b/src/data/field/bg/acre/grd_s_c5_r2_2/grd_s_c5_r2_2_evw_anime.c new file mode 100644 index 00000000..0f92290e --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c5_r2_2/grd_s_c5_r2_2_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c5_r2_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c5_r2_2_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_c5_r2_2_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_c5_r3_1/grd_s_c5_r3_1.c b/src/data/field/bg/acre/grd_s_c5_r3_1/grd_s_c5_r3_1.c new file mode 100644 index 00000000..7ca8027b --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c5_r3_1/grd_s_c5_r3_1.c @@ -0,0 +1,328 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c5_r3_1_v[] = { +#include "assets/field/bg/grd_s_c5_r3_1_v.inc" +}; + +extern Gfx grd_s_c5_r3_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c5_r3_1_v[244], 13, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 12, // tri2 + 9, 12, 10 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c5_r3_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c5_r3_1_v[231], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c5_r3_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 8, 4, 9, // tri1 + 10, 8, 7, // tri2 + 4, 11, 9 // tri3 + ), + gsSPNTriangles_5b(4, 6, 11, // tri0 + 12, 13, 14, // tri1 + 12, 10, 13, // tri2 + 12, 15, 10 // tri3 + ), + gsSPNTriangles_5b(15, 8, 10, // tri0 + 16, 17, 18, // tri1 + 19, 16, 20, // tri2 + 21, 18, 17 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 23, 25, 24, // tri1 + 21, 17, 26, // tri2 + 17, 23, 26 // tri3 + ), + gsSPNTriangles_5b(23, 22, 26, // tri0 + 27, 28, 29, // tri1 + 30, 21, 28, // tri2 + 21, 29, 28 // tri3 + ), + gsSPNTriangles_5b(30, 18, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_r3_1_v[31], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 3, 9, 4, // tri2 + 9, 10, 4 // tri3 + ), + gsSPNTriangles_5b(10, 11, 12, // tri0 + 10, 13, 11, // tri1 + 10, 9, 13, // tri2 + 8, 14, 6 // tri3 + ), + gsSPNTriangles_5b(8, 15, 14, // tri0 + 15, 16, 14, // tri1 + 17, 14, 18, // tri2 + 14, 19, 18 // tri3 + ), + gsSPNTriangles_5b(14, 16, 19, // tri0 + 20, 21, 22, // tri1 + 21, 23, 22, // tri2 + 23, 24, 22 // tri3 + ), + gsSPNTriangles_5b(25, 20, 22, // tri0 + 26, 27, 28, // tri1 + 29, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_r3_1_v[63], 23, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 0, 8, 1, // tri1 + 4, 9, 2, // tri2 + 4, 10, 9 // tri3 + ), + gsSPNTriangles_5b(4, 11, 10, // tri0 + 12, 13, 14, // tri1 + 13, 15, 14, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(16, 19, 17, // tri0 + 17, 20, 21, // tri1 + 10, 11, 22, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c5_r3_1_v[86], 31, 0), + gsSPNTrianglesInit_5b(37, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 5, 6, 2, // tri1 + 6, 0, 2, // tri2 + 7, 0, 6 // tri3 + ), + gsSPNTriangles_5b(5, 8, 6, // tri0 + 9, 10, 11, // tri1 + 9, 11, 12, // tri2 + 11, 13, 14 // tri3 + ), + gsSPNTriangles_5b(11, 14, 12, // tri0 + 10, 15, 16, // tri1 + 10, 16, 11, // tri2 + 16, 17, 13 // tri3 + ), + gsSPNTriangles_5b(16, 13, 11, // tri0 + 8, 5, 13, // tri1 + 8, 13, 17, // tri2 + 13, 5, 4 // tri3 + ), + gsSPNTriangles_5b(13, 4, 14, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20, // tri2 + 19, 22, 23 // tri3 + ), + gsSPNTriangles_5b(19, 23, 21, // tri0 + 19, 18, 15, // tri1 + 19, 15, 10, // tri2 + 9, 19, 10 // tri3 + ), + gsSPNTriangles_5b(9, 22, 19, // tri0 + 24, 21, 23, // tri1 + 24, 23, 25, // tri2 + 21, 26, 20 // tri3 + ), + gsSPNTriangles_5b(21, 24, 27, // tri0 + 21, 27, 26, // tri1 + 28, 29, 24, // tri2 + 28, 24, 25 // tri3 + ), + gsSPNTriangles_5b(24, 29, 30, // tri0 + 24, 30, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c5_r3_1_v[117], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 5, 9, 6, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(10, 13, 11, // tri0 + 10, 14, 13, // tri1 + 14, 5, 13, // tri2 + 14, 9, 5 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 15, 18, 16, // tri1 + 15, 19, 18, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b(19, 21, 20, // tri0 + 22, 17, 23, // tri1 + 22, 15, 17, // tri2 + 22, 23, 11 // tri3 + ), + gsSPNTriangles_5b(23, 12, 11, // tri0 + 24, 25, 26, // tri1 + 24, 27, 25, // tri2 + 28, 29, 27 // tri3 + ), + gsSPNTriangles_5b(24, 28, 27, // tri0 + 30, 24, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_r3_1_v[148], 13, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 0, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 0, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 9, 10, 7 // tri3 + ), + gsSPNTriangles_5b(11, 6, 8, // tri0 + 11, 12, 6, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c5_r3_1_v[161], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 6, 8, // tri0 + 9, 7, 8, // tri1 + 10, 11, 12, // tri2 + 13, 11, 10 // tri3 + ), + gsSPNTriangles_5b(14, 13, 15, // tri0 + 16, 17, 15, // tri1 + 18, 19, 20, // tri2 + 21, 20, 22 // tri3 + ), + gsSPNTriangles_5b(23, 22, 24, // tri0 + 25, 24, 26, // tri1 + 27, 26, 28, // tri2 + 27, 28, 12 // tri3 + ), + gsSPNTriangles_5b(19, 18, 9, // tri0 + 9, 29, 19, // tri1 + 9, 8, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_r3_1_v[191], 27, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b(5, 4, 6, // tri0 + 7, 6, 8, // tri1 + 9, 10, 11, // tri2 + 12, 13, 8 // tri3 + ), + gsSPNTriangles_5b(9, 11, 12, // tri0 + 14, 10, 9, // tri1 + 15, 16, 14, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 21, 22, 23, // tri1 + 24, 25, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c5_r3_1_v[218], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c5_r3_1/grd_s_c5_r3_1_evw_anime.c b/src/data/field/bg/acre/grd_s_c5_r3_1/grd_s_c5_r3_1_evw_anime.c new file mode 100644 index 00000000..54673d5b --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c5_r3_1/grd_s_c5_r3_1_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c5_r3_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c5_r3_1_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_c5_r3_1_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_c5_r3_2/grd_s_c5_r3_2.c b/src/data/field/bg/acre/grd_s_c5_r3_2/grd_s_c5_r3_2.c new file mode 100644 index 00000000..5131ff5e --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c5_r3_2/grd_s_c5_r3_2.c @@ -0,0 +1,323 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c5_r3_2_v[] = { +#include "assets/field/bg/grd_s_c5_r3_2_v.inc" +}; + +extern Gfx grd_s_c5_r3_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c5_r3_2_v[226], 15, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 1, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 13, 14, 11, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c5_r3_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c5_r3_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPNTriangles_5b(13, 15, 16, // tri0 + 7, 8, 10, // tri1 + 1, 14, 2, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 21, 22, 23, // tri1 + 23, 24, 25, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b(26, 27, 28, // tri0 + 28, 29, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_r3_2_v[31], 15, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 9, 10, 11, // tri1 + 12, 11, 13, // tri2 + 0, 14, 1 // tri3 + ), + gsSPNTriangles_5b(2, 1, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c5_r3_2_v[46], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 4, 9, // tri1 + 4, 6, 9, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 14, 16, 15, // tri1 + 16, 17, 15, // tri2 + 17, 18, 15 // tri3 + ), + gsSPNTriangles_5b(15, 19, 13, // tri0 + 20, 0, 18, // tri1 + 21, 22, 23, // tri2 + 22, 24, 23 // tri3 + ), + gsSPNTriangles_5b(22, 2, 24, // tri0 + 21, 25, 22, // tri1 + 26, 27, 28, // tri2 + 27, 29, 28 // tri3 + ), + gsSPVertex(&grd_s_c5_r3_2_v[76], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b(3, 6, 5, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 7, 10, 9 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 14, 15, 16, // tri1 + 17, 18, 19, // tri2 + 17, 20, 18 // tri3 + ), + gsSPNTriangles_5b(21, 20, 17, // tri0 + 9, 10, 22, // tri1 + 9, 22, 23, // tri2 + 6, 8, 5 // tri3 + ), + gsSPNTriangles_5b(1, 4, 2, // tri0 + 24, 2, 25, // tri1 + 24, 25, 26, // tri2 + 25, 27, 26 // tri3 + ), + gsSPNTriangles_5b(28, 26, 27, // tri0 + 29, 27, 30, // tri1 + 29, 30, 31, // tri2 + 27, 29, 28 // tri3 + ), + gsSPVertex(&grd_s_c5_r3_2_v[108], 29, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 2, 3 // tri2 + ), + gsSPNTriangles_5b(2, 4, 5, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 7, 8, 5 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 7, 10, 9, // tri1 + 11, 12, 13, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(14, 16, 15, // tri0 + 17, 18, 19, // tri1 + 9, 10, 20, // tri2 + 21, 20, 10 // tri3 + ), + gsSPNTriangles_5b(10, 22, 21, // tri0 + 22, 23, 21, // tri1 + 24, 21, 23, // tri2 + 24, 25, 21 // tri3 + ), + gsSPNTriangles_5b(24, 26, 25, // tri0 + 27, 26, 24, // tri1 + 28, 26, 27, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c5_r3_2_v[137], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 2, 6, // tri0 + 5, 0, 2, // tri1 + 3, 7, 4, // tri2 + 3, 8, 7 // tri3 + ), + gsSPNTriangles_5b(3, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 13, 14, 12, // tri1 + 13, 15, 14, // tri2 + 13, 16, 15 // tri3 + ), + gsSPNTriangles_5b(13, 17, 16, // tri0 + 17, 18, 16, // tri1 + 17, 19, 18, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 23, 24, 21, // tri1 + 23, 25, 24, // tri2 + 25, 26, 24 // tri3 + ), + gsSPNTriangles_5b(26, 27, 24, // tri0 + 26, 28, 27, // tri1 + 28, 29, 27, // tri2 + 28, 30, 29 // tri3 + ), + gsSPNTriangles_5b(30, 31, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_r3_2_v[169], 11, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(8, 9, 6, // tri0 + 8, 10, 9, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c5_r3_2_v[180], 32, 0), + gsSPNTrianglesInit_5b(38, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 7, 8, // tri1 + 6, 9, 10, // tri2 + 6, 10, 7 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 12, 14, 13, // tri1 + 12, 15, 14, // tri2 + 12, 16, 15 // tri3 + ), + gsSPNTriangles_5b(13, 14, 17, // tri0 + 14, 18, 17, // tri1 + 14, 15, 18, // tri2 + 15, 19, 18 // tri3 + ), + gsSPNTriangles_5b(17, 0, 2, // tri0 + 17, 18, 0, // tri1 + 18, 20, 0, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(0, 20, 3, // tri0 + 20, 21, 3, // tri1 + 4, 5, 8, // tri2 + 4, 3, 5 // tri3 + ), + gsSPNTriangles_5b(3, 22, 5, // tri0 + 3, 21, 22, // tri1 + 5, 22, 9, // tri2 + 5, 9, 6 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 22, 24, 9, // tri1 + 10, 25, 26, // tri2 + 10, 9, 25 // tri3 + ), + gsSPNTriangles_5b(9, 24, 25, // tri0 + 24, 27, 25, // tri1 + 26, 25, 28, // tri2 + 25, 29, 28 // tri3 + ), + gsSPNTriangles_5b(25, 30, 29, // tri0 + 25, 27, 30, // tri1 + 28, 29, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_r3_2_v[212], 14, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(2, 5, 6, // tri0 + 2, 1, 5, // tri1 + 1, 7, 5, // tri2 + 1, 4, 7 // tri3 + ), + gsSPNTriangles_5b(6, 5, 8, // tri0 + 5, 9, 8, // tri1 + 5, 7, 9, // tri2 + 7, 10, 9 // tri3 + ), + gsSPNTriangles_5b(8, 11, 12, // tri0 + 8, 9, 11, // tri1 + 9, 13, 11, // tri2 + 9, 10, 13 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c5_r3_2/grd_s_c5_r3_2_evw_anime.c b/src/data/field/bg/acre/grd_s_c5_r3_2/grd_s_c5_r3_2_evw_anime.c new file mode 100644 index 00000000..8c36d4ae --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c5_r3_2/grd_s_c5_r3_2_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c5_r3_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c5_r3_2_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_c5_r3_2_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_c5_s_1/grd_s_c5_s_1.c b/src/data/field/bg/acre/grd_s_c5_s_1/grd_s_c5_s_1.c new file mode 100644 index 00000000..54b5fb89 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c5_s_1/grd_s_c5_s_1.c @@ -0,0 +1,313 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c5_s_1_v[] = { +#include "assets/field/bg/grd_s_c5_s_1_v.inc" +}; + +extern Gfx grd_s_c5_s_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c5_s_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c5_s_1_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 35, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 4, // tri0 + 2, 6, 0, // tri1 + 6, 7, 0, // tri2 + 1, 8, 2 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 2, // tri0 + 9, 10, 2, // tri1 + 10, 6, 2, // tri2 + 8, 11, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 9, // tri0 + 12, 13, 9, // tri1 + 13, 10, 9, // tri2 + 11, 14, 12 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 12, // tri0 + 15, 16, 12, // tri1 + 16, 13, 12, // tri2 + 15, 17, 16 // tri3 + ), + gsSPNTriangles_5b( + 14, 18, 15, // tri0 + 18, 19, 15, // tri1 + 19, 17, 15, // tri2 + 19, 20, 17 // tri3 + ), + gsSPNTriangles_5b( + 21, 19, 18, // tri0 + 21, 22, 19, // tri1 + 22, 20, 19, // tri2 + 4, 5, 23 // tri3 + ), + gsSPNTriangles_5b( + 4, 23, 24, // tri0 + 0, 7, 5, // tri1 + 7, 25, 5, // tri2 + 5, 25, 23 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 23, // tri0 + 27, 28, 29, // tri1 + 27, 30, 28, // tri2 + 27, 31, 30 // tri3 + ), + gsSPVertex(&grd_s_c5_s_1_v[32], 23, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 2, // tri0 + 3, 6, 1, // tri1 + 3, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 10, 11, 8, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 8, // tri0 + 11, 14, 13, // tri1 + 12, 15, 11, // tri2 + 12, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 15, 14, 11, // tri0 + 15, 17, 14, // tri1 + 15, 18, 17, // tri2 + 18, 19, 17 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 18, // tri0 + 20, 0, 21, // tri1 + 0, 2, 21, // tri2 + 2, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 2, 5, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c5_s_1_v[55], 32, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 14, 16, 15, // tri1 + 16, 17, 15, // tri2 + 7, 18, 8 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 8, // tri0 + 20, 21, 22, // tri1 + 20, 23, 21, // tri2 + 21, 24, 22 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 27, // tri0 + 26, 28, 27, // tri1 + 29, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_s_1_v[87], 32, 0), + gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 2, 5 // tri2 + ), + gsSPNTriangles_5b( + 2, 6, 5, // tri0 + 2, 1, 6, // tri1 + 4, 7, 2, // tri2 + 7, 8, 2 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 9, 12, 10, // tri1 + 13, 6, 1, // tri2 + 13, 14, 6 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 6, // tri0 + 15, 5, 6, // tri1 + 15, 16, 5, // tri2 + 15, 17, 16 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 16, // tri0 + 18, 17, 19, // tri1 + 18, 19, 20, // tri2 + 21, 22, 13 // tri3 + ), + gsSPNTriangles_5b( + 22, 14, 13, // tri0 + 21, 23, 22, // tri1 + 23, 24, 22, // tri2 + 24, 25, 22 // tri3 + ), + gsSPNTriangles_5b( + 25, 14, 22, // tri0 + 8, 26, 27, // tri1 + 28, 27, 26, // tri2 + 1, 3, 13 // tri3 + ), + gsSPNTriangles_5b( + 29, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_s_1_v[119], 32, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 1, 7 // tri2 + ), + gsSPNTriangles_5b( + 0, 8, 1, // tri0 + 8, 0, 9, // tri1 + 9, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 4, 3, // tri0 + 16, 17, 18, // tri1 + 10, 9, 0, // tri2 + 11, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 11, 21, 19, // tri0 + 22, 23, 24, // tri1 + 23, 23, 24, // tri2 + 23, 25, 24 // tri3 + ), + gsSPNTriangles_5b( + 25, 25, 24, // tri0 + 25, 26, 24, // tri1 + 26, 27, 28, // tri2 + 27, 29, 28 // tri3 + ), + gsSPNTriangles_5b( + 3, 16, 30, // tri0 + 29, 6, 28, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_s_1_v[150], 16, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 3, 1, 4, // tri1 + 3, 2, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 3, 8, 9, // tri1 + 10, 11, 12, // tri2 + 10, 13, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 14, 13, // tri0 + 11, 15, 12, // tri1 + 15, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c5_s_1_v[166], 32, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 4, 3, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 4, // tri0 + 7, 8, 5, // tri1 + 9, 10, 7, // tri2 + 9, 11, 10 // tri3 + ), + gsSPNTriangles_5b( + 9, 12, 11, // tri0 + 12, 13, 14, // tri1 + 0, 15, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 18, // tri0 + 20, 22, 21, // tri1 + 23, 24, 25, // tri2 + 26, 25, 27 // tri3 + ), + gsSPNTriangles_5b( + 28, 29, 30, // tri0 + 22, 28, 30, // tri1 + 31, 27, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_s_1_v[198], 18, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 2, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 6, 9, 10, // tri1 + 6, 8, 9, // tri2 + 11, 10, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 16, 12, 14, // tri1 + 17, 13, 15, // tri2 + 0, 17, 1 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c5_s_2/grd_s_c5_s_2.c b/src/data/field/bg/acre/grd_s_c5_s_2/grd_s_c5_s_2.c new file mode 100644 index 00000000..51af5543 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c5_s_2/grd_s_c5_s_2.c @@ -0,0 +1,291 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c5_s_2_v[] = { +#include "assets/field/bg/grd_s_c5_s_2_v.inc" +}; + +extern Gfx grd_s_c5_s_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c5_s_2_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 32, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 2, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 10, 13, 11, // tri0 + 10, 14, 13, // tri1 + 15, 16, 17, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b( + 16, 19, 18, // tri0 + 16, 20, 19, // tri1 + 17, 12, 11, // tri2 + 17, 18, 12 // tri3 + ), + gsSPNTriangles_5b( + 18, 21, 12, // tri0 + 18, 19, 21, // tri1 + 12, 22, 10, // tri2 + 12, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 10, 23, 14, // tri0 + 10, 22, 23, // tri1 + 13, 24, 25, // tri2 + 13, 14, 24 // tri3 + ), + gsSPNTriangles_5b( + 14, 26, 24, // tri0 + 14, 23, 26, // tri1 + 26, 27, 24, // tri2 + 27, 28, 24 // tri3 + ), + gsSPNTriangles_5b( + 28, 25, 24, // tri0 + 28, 29, 25, // tri1 + 27, 30, 28, // tri2 + 27, 31, 30 // tri3 + ), + gsSPNTriangles_5b( + 30, 29, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_s_2_v[32], 29, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 4, 5, 0 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 6, // tri0 + 1, 0, 5, // tri1 + 5, 4, 7, // tri2 + 7, 8, 5 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 10, 12, 11, // tri1 + 12, 13, 11, // tri2 + 9, 14, 10 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 10, // tri0 + 14, 16, 15, // tri1 + 14, 17, 16, // tri2 + 16, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 18, 10, 19, // tri0 + 18, 12, 10, // tri1 + 16, 20, 18, // tri2 + 17, 21, 16 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 16, // tri0 + 21, 23, 22, // tri1 + 21, 24, 23, // tri2 + 24, 25, 23 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 23, // tri0 + 26, 27, 23, // tri1 + 27, 28, 23, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c5_s_2_v[61], 32, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 4, 5, 0 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 7, 9, 8, // tri1 + 9, 10, 8, // tri2 + 7, 11, 9 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 14, // tri0 + 15, 10, 14, // tri1 + 0, 16, 1, // tri2 + 0, 17, 16 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 16, // tri0 + 19, 20, 21, // tri1 + 19, 9, 20, // tri2 + 19, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 22, 9, // tri0 + 23, 5, 24, // tri1 + 5, 25, 24, // tri2 + 23, 26, 5 // tri3 + ), + gsSPNTriangles_5b( + 23, 27, 26, // tri0 + 27, 28, 26, // tri1 + 5, 4, 25, // tri2 + 23, 29, 27 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_s_2_v[92], 32, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 9, 10, 2, // tri0 + 9, 11, 10, // tri1 + 10, 12, 2, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 1, 9, 2, // tri0 + 8, 16, 6, // tri1 + 11, 9, 17, // tri2 + 1, 18, 9 // tri3 + ), + gsSPNTriangles_5b( + 18, 1, 19, // tri0 + 19, 20, 21, // tri1 + 21, 22, 23, // tri2 + 24, 25, 23 // tri3 + ), + gsSPNTriangles_5b( + 26, 3, 27, // tri0 + 26, 4, 3, // tri1 + 28, 27, 29, // tri2 + 24, 30, 25 // tri3 + ), + gsSPNTriangles_5b( + 30, 31, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_s_2_v[124], 21, 0), + gsSPNTrianglesInit_5b( + 9, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 12, 13, 14, // tri1 + 10, 15, 16, // tri2 + 15, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 7, 17, 8, // tri0 + 18, 19, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c5_s_2_v[145], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 6, 9, 7, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 10, 13, 11, // tri0 + 8, 14, 15, // tri1 + 14, 16, 15, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 17, 20, 18, // tri0 + 21, 19, 22, // tri1 + 10, 21, 23, // tri2 + 24, 12, 25 // tri3 + ), + gsSPNTriangles_5b( + 17, 26, 27, // tri0 + 28, 29, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_s_2_v[176], 32, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 7, 9, 8, // tri1 + 10, 11, 12, // tri2 + 11, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 13, 15, 16, // tri0 + 15, 17, 18, // tri1 + 17, 19, 20, // tri2 + 19, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 26, 25, 27, // tri1 + 28, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_s_2_v[207], 11, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 5, 4, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 7, 9, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c6_1/grd_s_c6_1.c b/src/data/field/bg/acre/grd_s_c6_1/grd_s_c6_1.c new file mode 100644 index 00000000..213e7f4d --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c6_1/grd_s_c6_1.c @@ -0,0 +1,322 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c6_1_v[] = { +#include "assets/field/bg/grd_s_c6_1_v.inc" +}; + +extern Gfx grd_s_c6_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c6_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c6_1_v[209], 28, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 6, // tri0 + 7, 3, 8, // tri1 + 9, 10, 11, // tri2 + 12, 9, 11 // tri3 + ), + gsSPNTriangles_5b( + 5, 12, 13, // tri0 + 9, 14, 10, // tri1 + 14, 15, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 17, 21, // tri0 + 22, 20, 23, // tri1 + 24, 22, 25, // tri2 + 26, 24, 27 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c6_1_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 2, // tri0 + 6, 5, 1, // tri1 + 7, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 9, // tri0 + 8, 12, 10, // tri1 + 12, 13, 10, // tri2 + 13, 14, 10 // tri3 + ), + gsSPNTriangles_5b( + 7, 15, 8, // tri0 + 15, 16, 8, // tri1 + 17, 18, 19, // tri2 + 18, 13, 19 // tri3 + ), + gsSPNTriangles_5b( + 13, 12, 19, // tri0 + 20, 21, 22, // tri1 + 20, 23, 21, // tri2 + 23, 17, 21 // tri3 + ), + gsSPNTriangles_5b( + 24, 25, 26, // tri0 + 24, 27, 25, // tri1 + 27, 28, 25, // tri2 + 25, 29, 26 // tri3 + ), + gsSPVertex(&grd_s_c6_1_v[30], 32, 0), + gsSPNTrianglesInit_5b( + 25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 4, 8, 5, // tri1 + 7, 9, 10, // tri2 + 9, 11, 10 // tri3 + ), + gsSPNTriangles_5b( + 12, 4, 13, // tri0 + 12, 8, 4, // tri1 + 14, 15, 16, // tri2 + 14, 17, 15 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 15, // tri0 + 19, 20, 2, // tri1 + 20, 0, 2, // tri2 + 19, 2, 21 // tri3 + ), + gsSPNTriangles_5b( + 2, 14, 21, // tri0 + 14, 16, 21, // tri1 + 22, 23, 24, // tri2 + 22, 20, 23 // tri3 + ), + gsSPNTriangles_5b( + 23, 25, 24, // tri0 + 9, 7, 5, // tri1 + 26, 27, 28, // tri2 + 26, 29, 27 // tri3 + ), + gsSPNTriangles_5b( + 26, 30, 29, // tri0 + 30, 31, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c6_1_v[62], 19, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 6, // tri0 + 1, 0, 5, // tri1 + 5, 7, 6, // tri2 + 5, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 7, 8, 12, // tri1 + 8, 13, 12, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 17, // tri0 + 14, 18, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c6_1_v[81], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 8, 9, 7, // tri2 + 0, 2, 10 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 14, 15, 16, // tri1 + 13, 12, 17, // tri2 + 15, 18, 16 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 18, // tri0 + 21, 22, 23, // tri1 + 24, 11, 23, // tri2 + 11, 25, 26 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 11, // tri0 + 29, 30, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c6_1_v[112], 30, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 5, // tri0 + 9, 10, 11, // tri1 + 9, 12, 10, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 14, // tri0 + 17, 18, 16, // tri1 + 8, 7, 18, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 24, // tri0 + 25, 26, 27, // tri1 + 28, 29, 21, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c6_1_v[142], 28, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 9, 11, 12, // tri2 + 6, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 13, 8, 15, // tri0 + 16, 3, 17, // tri1 + 4, 18, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 18, 23, 24, // tri0 + 25, 26, 27, // tri1 + 25, 20, 26, // tri2 + 23, 25, 27 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c6_1_v[170], 32, 0), + gsSPNTrianglesInit_5b( + 38, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 4, 8, 9, // tri1 + 8, 10, 9, // tri2 + 8, 11, 10 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 10, // tri0 + 5, 13, 14, // tri1 + 5, 15, 13, // tri2 + 14, 16, 5 // tri3 + ), + gsSPNTriangles_5b( + 5, 4, 15, // tri0 + 4, 9, 15, // tri1 + 17, 1, 18, // tri2 + 1, 19, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 18, // tri0 + 21, 22, 19, // tri1 + 22, 20, 19, // tri2 + 21, 23, 22 // tri3 + ), + gsSPNTriangles_5b( + 24, 4, 6, // tri0 + 21, 25, 23, // tri1 + 24, 11, 8, // tri2 + 24, 26, 11 // tri3 + ), + gsSPNTriangles_5b( + 26, 2, 11, // tri0 + 2, 3, 11, // tri1 + 3, 27, 11, // tri2 + 27, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 7, 5, 16, // tri0 + 24, 8, 4, // tri1 + 28, 7, 16, // tri2 + 3, 17, 27 // tri3 + ), + gsSPNTriangles_5b( + 3, 1, 17, // tri0 + 0, 29, 1, // tri1 + 29, 19, 1, // tri2 + 19, 29, 30 // tri3 + ), + gsSPNTriangles_5b( + 21, 31, 25, // tri0 + 19, 30, 21, // tri1 + 30, 31, 21, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c6_1_v[202], 7, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b( + 1, 3, 2, // tri0 + 1, 6, 3, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c6_2/grd_s_c6_2.c b/src/data/field/bg/acre/grd_s_c6_2/grd_s_c6_2.c new file mode 100644 index 00000000..ca339408 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c6_2/grd_s_c6_2.c @@ -0,0 +1,335 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c6_2_v[] = { +#include "assets/field/bg/grd_s_c6_2_v.inc" +}; + +extern Gfx grd_s_c6_2_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c6_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c6_2_v[220], 28, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 4, 6, // tri0 + 8, 9, 5, // tri1 + 10, 7, 11, // tri2 + 12, 0, 13 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 2, // tri0 + 14, 15, 16, // tri1 + 17, 13, 18, // tri2 + 15, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 19, 18, 20, // tri0 + 14, 16, 21, // tri1 + 22, 23, 24, // tri2 + 25, 21, 23 // tri3 + ), + gsSPNTriangles_5b( + 22, 25, 23, // tri0 + 26, 24, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c6_2_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b( + 3, 7, 6, // tri0 + 3, 8, 7, // tri1 + 8, 9, 7, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 12, 14, 13, // tri1 + 12, 15, 14, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b( + 17, 19, 18, // tri0 + 20, 21, 22, // tri1 + 23, 20, 22, // tri2 + 23, 24, 20 // tri3 + ), + gsSPNTriangles_5b( + 24, 23, 25, // tri0 + 23, 26, 25, // tri1 + 23, 27, 28, // tri2 + 29, 30, 14 // tri3 + ), + gsSPNTriangles_5b( + 31, 30, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c6_2_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 7, 10, 9, // tri1 + 7, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 16, 17, 18, // tri1 + 17, 19, 20, // tri2 + 19, 21, 20 // tri3 + ), + gsSPNTriangles_5b( + 22, 18, 17, // tri0 + 23, 24, 25, // tri1 + 24, 26, 27, // tri2 + 26, 28, 27 // tri3 + ), + gsSPNTriangles_5b( + 26, 29, 28, // tri0 + 8, 3, 6, // tri1 + 30, 5, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c6_2_v[64], 21, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 12, 13, 14, // tri1 + 14, 15, 16, // tri2 + 15, 17, 16 // tri3 + ), + gsSPNTriangles_5b( + 18, 17, 19, // tri0 + 18, 16, 17, // tri1 + 20, 18, 19, // tri2 + 8, 18, 20 // tri3 + ), + gsSPNTriangles_5b( + 8, 7, 18, // tri0 + 15, 14, 13, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c6_2_v[85], 32, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 7, 5, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 2, 3, 15, // tri0 + 11, 5, 16, // tri1 + 11, 16, 10, // tri2 + 13, 15, 14 // tri3 + ), + gsSPNTriangles_5b( + 0, 17, 18, // tri0 + 17, 9, 19, // tri1 + 6, 20, 21, // tri2 + 20, 22, 23 // tri3 + ), + gsSPNTriangles_5b( + 24, 25, 26, // tri0 + 25, 27, 28, // tri1 + 27, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c6_2_v[116], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 7, 10, 8, // tri1 + 11, 12, 8, // tri2 + 12, 13, 8 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 17, 18, 15, // tri1 + 17, 19, 18, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 20, 22, 21, // tri0 + 23, 24, 22, // tri1 + 25, 9, 24, // tri2 + 13, 26, 27 // tri3 + ), + gsSPNTriangles_5b( + 28, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c6_2_v[147], 9, 0), + gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c6_2_v[156], 32, 0), + gsSPNTrianglesInit_5b( + 38, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 0, 6, // tri0 + 0, 2, 6, // tri1 + 3, 7, 8, // tri2 + 3, 0, 7 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 12, 15, 13, // tri0 + 13, 16, 14, // tri1 + 13, 17, 16, // tri2 + 15, 18, 13 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 13, // tri0 + 19, 17, 13, // tri1 + 19, 20, 17, // tri2 + 18, 2, 19 // tri3 + ), + gsSPNTriangles_5b( + 18, 6, 2, // tri0 + 2, 20, 19, // tri1 + 2, 4, 20, // tri2 + 5, 7, 0 // tri3 + ), + gsSPNTriangles_5b( + 5, 21, 7, // tri0 + 21, 22, 7, // tri1 + 22, 9, 7, // tri2 + 22, 11, 9 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 11, // tri0 + 23, 24, 11, // tri1 + 24, 25, 11, // tri2 + 25, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 10, // tri0 + 24, 27, 25, // tri1 + 24, 28, 27, // tri2 + 27, 29, 25 // tri3 + ), + gsSPNTriangles_5b( + 29, 26, 25, // tri0 + 28, 30, 27, // tri1 + 30, 31, 27, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c6_2_v[188], 4, 0), + gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c6_2_v[192], 28, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 8, 10, 9, // tri1 + 7, 9, 5, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 16, 13, 15, // tri1 + 17, 18, 14, // tri2 + 11, 16, 12 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 3, // tri0 + 21, 2, 18, // tri1 + 19, 22, 20, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 22, 26, 27, // tri0 + 26, 25, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c6_3/grd_s_c6_3.c b/src/data/field/bg/acre/grd_s_c6_3/grd_s_c6_3.c new file mode 100644 index 00000000..e1fe0b9c --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c6_3/grd_s_c6_3.c @@ -0,0 +1,292 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c6_3_v[] = { +#include "assets/field/bg/grd_s_c6_3_v.inc" +}; + +extern Gfx grd_s_c6_3_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c6_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c6_3_v[197], 17, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 6, 3, 8, // tri0 + 3, 4, 8, // tri1 + 9, 10, 11, // tri2 + 12, 9, 11 // tri3 + ), + gsSPNTriangles_5b( + 1, 12, 13, // tri0 + 9, 14, 10, // tri1 + 14, 15, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c6_3_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 10, 9, 11 // tri3 + ), + gsSPNTriangles_5b( + 9, 12, 11, // tri0 + 9, 13, 12, // tri1 + 9, 7, 13, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 16, 18, 17, // tri1 + 19, 20, 15, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b( + 22, 24, 23, // tri0 + 25, 26, 27, // tri1 + 26, 28, 27, // tri2 + 26, 29, 28 // tri3 + ), + gsSPNTriangles_5b( + 26, 24, 29, // tri0 + 29, 30, 28, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c6_3_v[31], 32, 0), + gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 6, 9, 7, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 16, 17, 11, // tri1 + 18, 19, 20, // tri2 + 21, 22, 18 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 18, // tri0 + 22, 24, 23, // tri1 + 21, 25, 22, // tri2 + 26, 13, 15 // tri3 + ), + gsSPNTriangles_5b( + 26, 27, 13, // tri0 + 28, 13, 27, // tri1 + 28, 29, 13, // tri2 + 30, 31, 28 // tri3 + ), + gsSPVertex(&grd_s_c6_3_v[63], 23, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 8, 9, 6, // tri2 + 9, 10, 6 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 6, // tri0 + 9, 12, 10, // tri1 + 13, 14, 15, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 14, 17, 16, // tri0 + 17, 18, 16, // tri1 + 19, 20, 21, // tri2 + 22, 14, 13 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c6_3_v[86], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 0, // tri0 + 5, 7, 6, // tri1 + 8, 9, 10, // tri2 + 8, 11, 9 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 14, // tri0 + 15, 12, 16, // tri1 + 13, 17, 18, // tri2 + 17, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 23, // tri0 + 22, 15, 24, // tri1 + 25, 26, 27, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b( + 28, 31, 29, // tri0 + 26, 30, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c6_3_v[118], 26, 0), + gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 14, 15, 16, // tri2 + 14, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 14, 11, 15, // tri0 + 17, 18, 19, // tri1 + 19, 20, 21, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b( + 23, 25, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c6_3_v[144], 32, 0), + gsSPNTrianglesInit_5b( + 38, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 5, 9, 6, // tri2 + 6, 10, 8 // tri3 + ), + gsSPNTriangles_5b( + 11, 10, 12, // tri0 + 10, 6, 12, // tri1 + 11, 13, 10, // tri2 + 14, 15, 4 // tri3 + ), + gsSPNTriangles_5b( + 14, 16, 15, // tri0 + 3, 14, 4, // tri1 + 17, 18, 19, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 16, 19, 15, // tri0 + 16, 17, 19, // tri1 + 6, 9, 12, // tri2 + 9, 21, 12 // tri3 + ), + gsSPNTriangles_5b( + 22, 21, 9, // tri0 + 22, 23, 21, // tri1 + 13, 18, 24, // tri2 + 13, 20, 18 // tri3 + ), + gsSPNTriangles_5b( + 13, 24, 10, // tri0 + 3, 25, 26, // tri1 + 3, 1, 25, // tri2 + 14, 3, 27 // tri3 + ), + gsSPNTriangles_5b( + 3, 26, 27, // tri0 + 16, 27, 28, // tri1 + 16, 14, 27, // tri2 + 17, 16, 29 // tri3 + ), + gsSPNTriangles_5b( + 16, 28, 29, // tri0 + 18, 29, 30, // tri1 + 18, 17, 29, // tri2 + 24, 30, 31 // tri3 + ), + gsSPNTriangles_5b( + 24, 18, 30, // tri0 + 10, 24, 8, // tri1 + 24, 31, 8, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c6_3_v[176], 4, 0), + gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c6_3_v[180], 17, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 4, 9, 10, // tri0 + 11, 3, 12, // tri1 + 13, 14, 15, // tri2 + 1, 11, 16 // tri3 + ), + gsSPNTriangles_5b( + 13, 6, 14, // tri0 + 9, 13, 15, // tri1 + 11, 12, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c6_r1_1/grd_s_c6_r1_1.c b/src/data/field/bg/acre/grd_s_c6_r1_1/grd_s_c6_r1_1.c new file mode 100644 index 00000000..ddaf0e47 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c6_r1_1/grd_s_c6_r1_1.c @@ -0,0 +1,339 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c6_r1_1_v[] = { +#include "assets/field/bg/grd_s_c6_r1_1_v.inc" +}; + +extern Gfx grd_s_c6_r1_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c6_r1_1_v[235], 15, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 1, 4, // tri0 + 4, 6, 5, // tri1 + 6, 7, 8, // tri2 + 6, 8, 5 // tri3 + ), + gsSPNTriangles_5b(7, 9, 10, // tri0 + 7, 10, 8, // tri1 + 11, 12, 10, // tri2 + 11, 10, 9 // tri3 + ), + gsSPNTriangles_5b(11, 13, 14, // tri0 + 11, 14, 12, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c6_r1_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c6_r1_1_v[224], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 2, 8, // tri0 + 9, 7, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c6_r1_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 5, // tri0 + 6, 8, 7, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(9, 13, 10, // tri0 + 12, 14, 11, // tri1 + 8, 15, 7, // tri2 + 8, 16, 15 // tri3 + ), + gsSPNTriangles_5b(8, 14, 16, // tri0 + 8, 11, 14, // tri1 + 17, 18, 19, // tri2 + 17, 19, 20 // tri3 + ), + gsSPNTriangles_5b(19, 21, 22, // tri0 + 19, 22, 20, // tri1 + 21, 23, 22, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b(23, 25, 22, // tri0 + 24, 26, 27, // tri1 + 24, 27, 25, // tri2 + 26, 28, 29 // tri3 + ), + gsSPNTriangles_5b(26, 29, 27, // tri0 + 28, 30, 31, // tri1 + 28, 31, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c6_r1_1_v[32], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 9, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(9, 15, 16, // tri0 + 17, 18, 19, // tri1 + 18, 20, 19, // tri2 + 21, 13, 22 // tri3 + ), + gsSPNTriangles_5b(22, 13, 12, // tri0 + 23, 4, 3, // tri1 + 24, 25, 26, // tri2 + 27, 28, 29 // tri3 + ), + gsSPNTriangles_5b(27, 25, 28, // tri0 + 27, 26, 25, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c6_r1_1_v[62], 27, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 11, 0, // tri1 + 10, 12, 11, // tri2 + 10, 13, 12 // tri3 + ), + gsSPNTriangles_5b(7, 14, 8, // tri0 + 4, 15, 16, // tri1 + 17, 18, 19, // tri2 + 5, 4, 16 // tri3 + ), + gsSPNTriangles_5b(20, 21, 22, // tri0 + 22, 23, 20, // tri1 + 19, 24, 17, // tri2 + 19, 25, 24 // tri3 + ), + gsSPNTriangles_5b(25, 26, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c6_r1_1_v[89], 32, 0), + gsSPNTrianglesInit_5b(38, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 3, 2, 6, // tri1 + 3, 6, 7, // tri2 + 2, 8, 6 // tri3 + ), + gsSPNTriangles_5b(2, 4, 8, // tri0 + 7, 6, 9, // tri1 + 7, 9, 10, // tri2 + 6, 11, 9 // tri3 + ), + gsSPNTriangles_5b(6, 8, 11, // tri0 + 10, 9, 12, // tri1 + 10, 12, 13, // tri2 + 9, 14, 12 // tri3 + ), + gsSPNTriangles_5b(9, 11, 14, // tri0 + 13, 12, 15, // tri1 + 13, 15, 16, // tri2 + 12, 14, 15 // tri3 + ), + gsSPNTriangles_5b(14, 17, 15, // tri0 + 16, 15, 18, // tri1 + 15, 19, 18, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b(15, 17, 19, // tri0 + 17, 21, 19, // tri1 + 20, 19, 22, // tri2 + 20, 22, 23 // tri3 + ), + gsSPNTriangles_5b(19, 21, 22, // tri0 + 21, 24, 22, // tri1 + 23, 22, 25, // tri2 + 23, 25, 26 // tri3 + ), + gsSPNTriangles_5b(22, 24, 25, // tri0 + 24, 27, 25, // tri1 + 26, 25, 28, // tri2 + 26, 28, 29 // tri3 + ), + gsSPNTriangles_5b(25, 27, 28, // tri0 + 27, 30, 28, // tri1 + 29, 28, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c6_r1_1_v[121], 8, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(2, 1, 5, // tri0 + 2, 5, 6, // tri1 + 1, 7, 5, // tri2 + 1, 3, 7 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c6_r1_1_v[129], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 2, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 5, 6, 3, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 10, 11, 8, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 13, 14, 11, // tri1 + 13, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 17, 18, 16, // tri1 + 18, 19, 16, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 22, 24, 23, // tri1 + 24, 25, 23, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b(24, 27, 26, // tri0 + 27, 28, 26, // tri1 + 27, 29, 28, // tri2 + 29, 30, 28 // tri3 + ), + gsSPNTriangles_5b(29, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c6_r1_1_v[161], 12, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(0, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 5, 8, 7 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 8, 10, 9, // tri1 + 10, 11, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c6_r1_1_v[173], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 8, 6, 10, // tri1 + 11, 12, 13, // tri2 + 11, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20, // tri2 + 22, 18, 23 // tri3 + ), + gsSPNTriangles_5b(3, 12, 24, // tri0 + 25, 26, 27, // tri1 + 28, 29, 30, // tri2 + 29, 31, 30 // tri3 + ), + gsSPNTriangles_5b(31, 15, 30, // tri0 + 28, 30, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c6_r1_1_v[205], 8, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 2, 6 // tri2 + ), + gsSPNTriangles_5b(7, 0, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c6_r1_1_v[213], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 8, 9, // tri0 + 4, 2, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c6_r1_1/grd_s_c6_r1_1_evw_anime.c b/src/data/field/bg/acre/grd_s_c6_r1_1/grd_s_c6_r1_1_evw_anime.c new file mode 100644 index 00000000..e67cdefe --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c6_r1_1/grd_s_c6_r1_1_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c6_r1_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c6_r1_1_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_c6_r1_1_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_c6_r1_2/grd_s_c6_r1_2.c b/src/data/field/bg/acre/grd_s_c6_r1_2/grd_s_c6_r1_2.c new file mode 100644 index 00000000..2cce354f --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c6_r1_2/grd_s_c6_r1_2.c @@ -0,0 +1,334 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c6_r1_2_v[] = { +#include "assets/field/bg/grd_s_c6_r1_2_v.inc" +}; + +extern Gfx grd_s_c6_r1_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c6_r1_2_v[245], 13, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 9, 10, 11, // tri2 + 12, 9, 11 // tri3 + ), + gsSPNTriangles_5b(9, 7, 10, // tri0 + 9, 8, 7, // tri1 + 4, 3, 5, // tri2 + 4, 2, 3 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c6_r1_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c6_r1_2_v[232], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c6_r1_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(38, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 4, 9, 10, // tri2 + 4, 6, 9 // tri3 + ), + gsSPNTriangles_5b(6, 11, 9, // tri0 + 6, 8, 11, // tri1 + 8, 12, 11, // tri2 + 0, 2, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 15, 17, 16, // tri1 + 15, 18, 17, // tri2 + 15, 19, 18 // tri3 + ), + gsSPNTriangles_5b(16, 20, 21, // tri0 + 16, 17, 20, // tri1 + 17, 18, 20, // tri2 + 18, 22, 20 // tri3 + ), + gsSPNTriangles_5b(21, 20, 13, // tri0 + 20, 23, 13, // tri1 + 20, 24, 23, // tri2 + 20, 22, 24 // tri3 + ), + gsSPNTriangles_5b(13, 23, 0, // tri0 + 23, 24, 0, // tri1 + 24, 25, 0, // tri2 + 0, 26, 1 // tri3 + ), + gsSPNTriangles_5b(0, 25, 26, // tri0 + 3, 4, 10, // tri1 + 3, 1, 4, // tri2 + 1, 26, 4 // tri3 + ), + gsSPNTriangles_5b(26, 5, 4, // tri0 + 12, 27, 28, // tri1 + 12, 8, 27, // tri2 + 8, 7, 27 // tri3 + ), + gsSPNTriangles_5b(7, 29, 27, // tri0 + 28, 27, 30, // tri1 + 27, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c6_r1_2_v[32], 11, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 2, 5, // tri0 + 2, 1, 5, // tri1 + 1, 7, 5, // tri2 + 6, 5, 8 // tri3 + ), + gsSPNTriangles_5b(5, 9, 8, // tri0 + 5, 10, 9, // tri1 + 5, 7, 10, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c6_r1_2_v[43], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 4, 8, // tri0 + 3, 9, 10, // tri1 + 9, 11, 10, // tri2 + 11, 7, 12 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 13, 16, 17, // tri1 + 18, 17, 16, // tri2 + 19, 18, 16 // tri3 + ), + gsSPNTriangles_5b(20, 21, 19, // tri0 + 22, 23, 20, // tri1 + 24, 25, 22, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b(24, 27, 26, // tri0 + 27, 28, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c6_r1_2_v[73], 16, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 4, 8, // tri0 + 1, 7, 9, // tri1 + 10, 3, 11, // tri2 + 5, 12, 13 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 5, 13, 6, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c6_r1_2_v[89], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 3, 6 // tri2 + ), + gsSPNTriangles_5b(6, 3, 7, // tri0 + 3, 5, 8, // tri1 + 9, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 15, 13, 16, // tri1 + 15, 14, 13, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b(18, 19, 17, // tri0 + 20, 21, 22, // tri1 + 20, 23, 21, // tri2 + 20, 24, 23 // tri3 + ), + gsSPNTriangles_5b(20, 25, 24, // tri0 + 20, 26, 25, // tri1 + 27, 28, 26, // tri2 + 27, 29, 28 // tri3 + ), + gsSPNTriangles_5b(29, 30, 28, // tri0 + 29, 31, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c6_r1_2_v[121], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 4, 8, 7, // tri1 + 4, 9, 8, // tri2 + 4, 10, 9 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 12, 10, 13, // tri1 + 12, 14, 10, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b(15, 18, 16, // tri0 + 19, 20, 0, // tri1 + 20, 1, 0, // tri2 + 19, 21, 20 // tri3 + ), + gsSPNTriangles_5b(19, 22, 21, // tri0 + 15, 23, 18, // tri1 + 11, 24, 25, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b(12, 11, 29, // tri0 + 11, 25, 29, // tri1 + 26, 28, 30, // tri2 + 31, 30, 28 // tri3 + ), + gsSPVertex(&grd_s_c6_r1_2_v[153], 31, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 0, 8, 10, // tri1 + 11, 12, 13, // tri2 + 11, 14, 15 // tri3 + ), + gsSPNTriangles_5b(15, 16, 11, // tri0 + 12, 16, 17, // tri1 + 12, 11, 16, // tri2 + 18, 17, 16 // tri3 + ), + gsSPNTriangles_5b(18, 19, 17, // tri0 + 20, 21, 22, // tri1 + 23, 24, 25, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b(27, 28, 29, // tri0 + 28, 30, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c6_r1_2_v[184], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 6, 8, // tri0 + 7, 4, 6, // tri1 + 2, 4, 0, // tri2 + 2, 5, 4 // tri3 + ), + gsSPNTriangles_5b(9, 7, 8, // tri0 + 9, 10, 7, // tri1 + 11, 12, 13, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 15, 18, 16, // tri1 + 18, 19, 16, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b(18, 21, 20, // tri0 + 21, 22, 20, // tri1 + 21, 23, 22, // tri2 + 21, 24, 23 // tri3 + ), + gsSPNTriangles_5b(24, 25, 23, // tri0 + 24, 11, 25, // tri1 + 11, 13, 25, // tri2 + 12, 26, 14 // tri3 + ), + gsSPNTriangles_5b(26, 27, 14, // tri0 + 9, 28, 10, // tri1 + 28, 29, 10, // tri2 + 28, 30, 29 // tri3 + ), + gsSPNTriangles_5b(30, 31, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c6_r1_2_v[216], 3, 0), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c6_r1_2_v[219], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c6_r1_2/grd_s_c6_r1_2_evw_anime.c b/src/data/field/bg/acre/grd_s_c6_r1_2/grd_s_c6_r1_2_evw_anime.c new file mode 100644 index 00000000..8eaa1794 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c6_r1_2/grd_s_c6_r1_2_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c6_r1_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c6_r1_2_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_c6_r1_2_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_c6_r3_1/grd_s_c6_r3_1.c b/src/data/field/bg/acre/grd_s_c6_r3_1/grd_s_c6_r3_1.c new file mode 100644 index 00000000..d0439793 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c6_r3_1/grd_s_c6_r3_1.c @@ -0,0 +1,347 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c6_r3_1_v[] = { +#include "assets/field/bg/grd_s_c6_r3_1_v.inc" +}; + +extern Gfx grd_s_c6_r3_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c6_r3_1_v[301], 28, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 1, 6, // tri0 + 5, 4, 1, // tri1 + 7, 5, 8, // tri2 + 5, 6, 8 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 9, 11, // tri1 + 12, 11, 13, // tri2 + 14, 12, 13 // tri3 + ), + gsSPNTriangles_5b(15, 14, 13, // tri0 + 15, 13, 16, // tri1 + 17, 15, 16, // tri2 + 8, 17, 16 // tri3 + ), + gsSPNTriangles_5b(8, 16, 18, // tri0 + 8, 18, 7, // tri1 + 19, 20, 21, // tri2 + 19, 22, 20 // tri3 + ), + gsSPNTriangles_5b(23, 24, 20, // tri0 + 23, 25, 24, // tri1 + 25, 26, 24, // tri2 + 25, 27, 26 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c6_r3_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c6_r3_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 1, 5 // tri2 + ), + gsSPNTriangles_5b(1, 6, 5, // tri0 + 7, 8, 9, // tri1 + 8, 10, 9, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(11, 14, 12, // tri0 + 12, 15, 13, // tri1 + 16, 17, 18, // tri2 + 16, 19, 17 // tri3 + ), + gsSPNTriangles_5b(16, 20, 19, // tri0 + 17, 21, 18, // tri1 + 19, 22, 17, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b(24, 26, 25, // tri0 + 26, 27, 25, // tri1 + 28, 16, 29, // tri2 + 16, 18, 29 // tri3 + ), + gsSPNTriangles_5b(4, 30, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c6_r3_1_v[31], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 7, 9, // tri1 + 11, 12, 13, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 17, 20, 21, // tri1 + 17, 19, 20, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(4, 6, 22, // tri0 + 6, 7, 22, // tri1 + 7, 23, 22, // tri2 + 1, 24, 25 // tri3 + ), + gsSPNTriangles_5b(1, 26, 2, // tri0 + 26, 1, 27, // tri1 + 20, 19, 28, // tri2 + 19, 29, 28 // tri3 + ), + gsSPVertex(&grd_s_c6_r3_1_v[61], 15, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 4, 0, // tri0 + 6, 7, 8, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 14, // tri0 + 12, 10, 13, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c6_r3_1_v[76], 32, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 7, 4, // tri0 + 9, 10, 6, // tri1 + 11, 12, 13, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(17, 13, 15, // tri0 + 18, 16, 19, // tri1 + 20, 19, 21, // tri2 + 22, 23, 12 // tri3 + ), + gsSPNTriangles_5b(24, 25, 23, // tri0 + 26, 27, 28, // tri1 + 29, 28, 25, // tri2 + 30, 31, 27 // tri3 + ), + gsSPVertex(&grd_s_c6_r3_1_v[108], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 1, 0, 12, // tri1 + 13, 14, 15, // tri2 + 16, 13, 17 // tri3 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 19, 16, 21, // tri1 + 16, 17, 21, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b(25, 22, 24, // tri0 + 26, 25, 27, // tri1 + 22, 28, 23, // tri2 + 28, 18, 29 // tri3 + ), + gsSPNTriangles_5b(30, 26, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c6_r3_1_v[140], 3, 0), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c6_r3_1_v[143], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 1, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 10, 11, 0 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 14, 15, 13, // tri1 + 16, 6, 15, // tri2 + 17, 18, 6 // tri3 + ), + gsSPNTriangles_5b(17, 19, 18, // tri0 + 17, 20, 19, // tri1 + 20, 21, 19, // tri2 + 22, 23, 21 // tri3 + ), + gsSPNTriangles_5b(22, 24, 23, // tri0 + 24, 25, 26, // tri1 + 27, 28, 26, // tri2 + 27, 29, 28 // tri3 + ), + gsSPNTriangles_5b(30, 31, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c6_r3_1_v[175], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(7, 6, 8, // tri0 + 9, 8, 10, // tri1 + 11, 10, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 16, 18, 19, // tri1 + 20, 21, 22, // tri2 + 20, 18, 21 // tri3 + ), + gsSPNTriangles_5b(2, 22, 0, // tri0 + 23, 24, 25, // tri1 + 23, 26, 24, // tri2 + 23, 5, 26 // tri3 + ), + gsSPNTriangles_5b(5, 7, 26, // tri0 + 7, 27, 26, // tri1 + 28, 27, 9, // tri2 + 28, 9, 11 // tri3 + ), + gsSPNTriangles_5b(7, 9, 27, // tri0 + 29, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c6_r3_1_v[207], 18, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 0 // tri2 + ), + gsSPNTriangles_5b(0, 5, 3, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 7, 8, 9 // tri3 + ), + gsSPNTriangles_5b(7, 6, 8, // tri0 + 8, 10, 9, // tri1 + 10, 11, 9, // tri2 + 11, 12, 9 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 13, 14, 12, // tri1 + 15, 16, 17, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c6_r3_1_v[225], 32, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 9, 10, 8, // tri1 + 11, 12, 10, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b(13, 15, 16, // tri0 + 17, 18, 15, // tri1 + 19, 20, 18, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(23, 24, 22, // tri0 + 25, 26, 24, // tri1 + 26, 27, 28, // tri2 + 29, 30, 28 // tri3 + ), + gsSPVertex(&grd_s_c6_r3_1_v[256], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 8, 9, // tri0 + 10, 8, 11, // tri1 + 12, 13, 14, // tri2 + 12, 11, 13 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 0, 21, 1, // tri2 + 22, 23, 21 // tri3 + ), + gsSPNTriangles_5b(21, 0, 22, // tri0 + 23, 24, 25, // tri1 + 26, 27, 25, // tri2 + 28, 29, 27 // tri3 + ), + gsSPNTriangles_5b(23, 22, 24, // tri0 + 25, 24, 26, // tri1 + 27, 26, 28, // tri2 + 11, 30, 31 // tri3 + ), + gsSPVertex(&grd_s_c6_r3_1_v[288], 13, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b(6, 7, 5, // tri0 + 8, 9, 10, // tri1 + 10, 11, 12, // tri2 + 1, 4, 3 // tri3 + ), + gsSPNTriangles_5b(5, 4, 6, // tri0 + 9, 11, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c6_r3_1/grd_s_c6_r3_1_evw_anime.c b/src/data/field/bg/acre/grd_s_c6_r3_1/grd_s_c6_r3_1_evw_anime.c new file mode 100644 index 00000000..fb046c6d --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c6_r3_1/grd_s_c6_r3_1_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c6_r3_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c6_r3_1_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_c6_r3_1_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_c6_s_1/grd_s_c6_s_1.c b/src/data/field/bg/acre/grd_s_c6_s_1/grd_s_c6_s_1.c new file mode 100644 index 00000000..63715674 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c6_s_1/grd_s_c6_s_1.c @@ -0,0 +1,297 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c6_s_1_v[] = { +#include "assets/field/bg/grd_s_c6_s_1_v.inc" +}; + +extern Gfx grd_s_c6_s_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c6_s_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c6_s_1_v[205], 29, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 17, 13, 19, // tri1 + 13, 15, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 20, 22, // tri0 + 24, 23, 25, // tri1 + 20, 26, 21, // tri2 + 26, 27, 28 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c6_s_1_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 7, 5, // tri0 + 7, 8, 5, // tri1 + 4, 9, 7, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 14, 15, 16, // tri1 + 14, 17, 15, // tri2 + 17, 18, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 19, 14, // tri0 + 19, 20, 14, // tri1 + 21, 22, 23, // tri2 + 22, 19, 23 // tri3 + ), + gsSPNTriangles_5b( + 22, 20, 19, // tri0 + 21, 24, 22, // tri1 + 18, 25, 26, // tri2 + 25, 13, 26 // tri3 + ), + gsSPNTriangles_5b( + 25, 27, 13, // tri0 + 25, 28, 27, // tri1 + 29, 2, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c6_s_1_v[30], 32, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 11, 12, 13, // tri2 + 12, 14, 8 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 8, // tri0 + 4, 16, 17, // tri1 + 16, 15, 17, // tri2 + 14, 17, 15 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 20, // tri0 + 18, 21, 19, // tri1 + 22, 23, 24, // tri2 + 23, 25, 24 // tri3 + ), + gsSPNTriangles_5b( + 23, 26, 25, // tri0 + 25, 26, 27, // tri1 + 28, 22, 24, // tri2 + 29, 30, 3 // tri3 + ), + gsSPNTriangles_5b( + 29, 11, 30, // tri0 + 11, 13, 30, // tri1 + 2, 3, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c6_s_1_v[62], 29, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 3, 6, // tri1 + 8, 9, 3, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 10, // tri0 + 14, 11, 10, // tri1 + 14, 15, 11, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 11, // tri0 + 17, 18, 19, // tri1 + 20, 21, 22, // tri2 + 21, 20, 23 // tri3 + ), + gsSPNTriangles_5b( + 24, 25, 26, // tri0 + 27, 4, 28, // tri1 + 27, 1, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c6_s_1_v[91], 32, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 6, 9, 7, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 13, 14, 12, // tri1 + 15, 16, 17, // tri2 + 16, 4, 17 // tri3 + ), + gsSPNTriangles_5b( + 14, 18, 19, // tri0 + 20, 21, 22, // tri1 + 21, 10, 22, // tri2 + 8, 23, 20 // tri3 + ), + gsSPNTriangles_5b( + 9, 24, 25, // tri0 + 26, 27, 28, // tri1 + 29, 26, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c6_s_1_v[122], 25, 0), + gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 9, 10, 11, // tri1 + 12, 13, 14, // tri2 + 15, 12, 16 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 19, // tri0 + 20, 21, 22, // tri1 + 23, 9, 24, // tri2 + 23, 24, 21 // tri3 + ), + gsSPNTriangles_5b( + 13, 20, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c6_s_1_v[147], 29, 0), + gsSPNTrianglesInit_5b( + 31, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 1, // tri0 + 3, 6, 2, // tri1 + 6, 7, 2, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 10, 12, 11, // tri1 + 12, 13, 11, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 5, 15, 16, // tri0 + 15, 17, 16, // tri1 + 17, 15, 18, // tri2 + 15, 19, 18 // tri3 + ), + gsSPNTriangles_5b( + 15, 4, 19, // tri0 + 4, 20, 19, // tri1 + 4, 0, 20, // tri2 + 0, 21, 20 // tri3 + ), + gsSPNTriangles_5b( + 0, 2, 21, // tri0 + 2, 22, 21, // tri1 + 2, 7, 22, // tri2 + 7, 23, 22 // tri3 + ), + gsSPNTriangles_5b( + 7, 24, 23, // tri0 + 7, 25, 24, // tri1 + 5, 4, 15, // tri2 + 8, 26, 7 // tri3 + ), + gsSPNTriangles_5b( + 26, 25, 7, // tri0 + 10, 27, 12, // tri1 + 27, 14, 12, // tri2 + 27, 28, 14 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c6_s_1_v[176], 29, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 19, 20, 21, // tri1 + 22, 23, 24, // tri2 + 25, 26, 27 // tri3 + ), + gsSPNTriangles_5b( + 14, 22, 28, // tri0 + 25, 16, 26, // tri1 + 20, 25, 27, // tri2 + 22, 24, 28 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c7_1/grd_s_c7_1.c b/src/data/field/bg/acre/grd_s_c7_1/grd_s_c7_1.c new file mode 100644 index 00000000..2ae58b83 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c7_1/grd_s_c7_1.c @@ -0,0 +1,286 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c7_1_v[] = { +#include "assets/field/bg/grd_s_c7_1_v.inc" +}; + +extern Gfx grd_s_c7_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c7_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c7_1_v[195], 29, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 1, 7, // tri0 + 8, 9, 10, // tri1 + 11, 8, 10, // tri2 + 4, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 8, 13, 9, // tri0 + 13, 14, 15, // tri1 + 16, 17, 18, // tri2 + 19, 16, 20 // tri3 + ), + gsSPNTriangles_5b( + 21, 19, 22, // tri0 + 23, 21, 24, // tri1 + 25, 23, 26, // tri2 + 27, 25, 28 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c7_1_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 38, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 2, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 0, 6, // tri0 + 0, 4, 6, // tri1 + 7, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 9, // tri0 + 12, 11, 10, // tri1 + 12, 13, 11, // tri2 + 12, 6, 13 // tri3 + ), + gsSPNTriangles_5b( + 12, 5, 6, // tri0 + 14, 5, 15, // tri1 + 5, 12, 15, // tri2 + 14, 0, 5 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 7, // tri0 + 17, 8, 7, // tri1 + 17, 18, 8, // tri2 + 17, 19, 18 // tri3 + ), + gsSPNTriangles_5b( + 8, 20, 10, // tri0 + 8, 18, 20, // tri1 + 10, 15, 12, // tri2 + 10, 20, 15 // tri3 + ), + gsSPNTriangles_5b( + 0, 14, 3, // tri0 + 14, 21, 3, // tri1 + 1, 22, 23, // tri2 + 1, 3, 22 // tri3 + ), + gsSPNTriangles_5b( + 3, 24, 22, // tri0 + 3, 21, 24, // tri1 + 23, 25, 26, // tri2 + 23, 22, 25 // tri3 + ), + gsSPNTriangles_5b( + 22, 27, 25, // tri0 + 22, 24, 27, // tri1 + 26, 28, 29, // tri2 + 26, 25, 28 // tri3 + ), + gsSPNTriangles_5b( + 25, 30, 28, // tri0 + 25, 27, 30, // tri1 + 29, 28, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_1_v[32], 5, 0), + gsSPNTrianglesInit_5b( + 3, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c7_1_v[37], 32, 0), + gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 2, 5, 0, // tri0 + 5, 6, 0, // tri1 + 6, 7, 0, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b( + 9, 11, 10, // tri0 + 9, 12, 11, // tri1 + 9, 13, 12, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 16, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20, // tri2 + 19, 18, 22 // tri3 + ), + gsSPNTriangles_5b( + 18, 23, 22, // tri0 + 16, 24, 14, // tri1 + 24, 25, 14, // tri2 + 24, 22, 23 // tri3 + ), + gsSPNTriangles_5b( + 26, 27, 28, // tri0 + 29, 26, 28, // tri1 + 28, 30, 29, // tri2 + 31, 30, 28 // tri3 + ), + gsSPVertex(&grd_s_c7_1_v[69], 32, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 5 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 9, 11, 10, // tri1 + 12, 13, 8, // tri2 + 12, 6, 13 // tri3 + ), + gsSPNTriangles_5b( + 12, 7, 6, // tri0 + 14, 15, 16, // tri1 + 15, 17, 16, // tri2 + 0, 2, 18 // tri3 + ), + gsSPNTriangles_5b( + 2, 19, 18, // tri0 + 18, 20, 21, // tri1 + 18, 19, 20, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 27, // tri0 + 28, 14, 16, // tri1 + 29, 30, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_1_v[100], 16, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 4, 3, 0 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 3, // tri0 + 3, 4, 5, // tri1 + 6, 5, 7, // tri2 + 6, 8, 3 // tri3 + ), + gsSPNTriangles_5b( + 9, 8, 6, // tri0 + 10, 8, 9, // tri1 + 11, 12, 13, // tri2 + 14, 15, 11 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c7_1_v[116], 32, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 8, 9, 10, // tri1 + 10, 11, 12, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 15, 18, 16, // tri1 + 18, 19, 16, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 20, 23, 21, // tri0 + 24, 25, 26, // tri1 + 27, 15, 17, // tri2 + 28, 29, 30 // tri3 + ), + gsSPVertex(&grd_s_c7_1_v[147], 19, 0), + gsSPNTrianglesInit_5b( + 9, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 4, 6, // tri0 + 7, 8, 9, // tri1 + 10, 11, 12, // tri2 + 13, 6, 11 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 17, 18, 15, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c7_1_v[166], 29, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 1, 5 // tri2 + ), + gsSPNTriangles_5b( + 2, 6, 7, // tri0 + 8, 9, 10, // tri1 + 6, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 13, 8, 14, // tri0 + 11, 13, 15, // tri1 + 16, 17, 18, // tri2 + 19, 16, 20 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 23, // tri0 + 17, 21, 24, // tri1 + 25, 26, 27, // tri2 + 26, 19, 28 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c7_2/grd_s_c7_2.c b/src/data/field/bg/acre/grd_s_c7_2/grd_s_c7_2.c new file mode 100644 index 00000000..a3062a6f --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c7_2/grd_s_c7_2.c @@ -0,0 +1,360 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c7_2_v[] = { +#include "assets/field/bg/grd_s_c7_2_v.inc" +}; + +extern Gfx grd_s_c7_2_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c7_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c7_2_v[235], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 12, 13, // tri2 + 14, 11, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 14, 15, 17, // tri1 + 19, 20, 21, // tri2 + 20, 16, 18 // tri3 + ), + gsSPNTriangles_5b( + 22, 19, 23, // tri0 + 24, 22, 25, // tri1 + 24, 25, 26, // tri2 + 27, 28, 29 // tri3 + ), + gsSPNTriangles_5b( + 28, 24, 26, // tri0 + 30, 27, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_2_v[267], 6, 0), + gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 0, 0 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c7_2_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 31, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 7, // tri0 + 5, 8, 6, // tri1 + 9, 10, 11, // tri2 + 9, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 10, 13, 11, // tri0 + 13, 14, 11, // tri1 + 12, 11, 15, // tri2 + 12, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 11, 14, 15, // tri0 + 14, 17, 15, // tri1 + 16, 15, 18, // tri2 + 15, 19, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 18, // tri0 + 15, 21, 19, // tri1 + 15, 17, 21, // tri2 + 20, 22, 23 // tri3 + ), + gsSPNTriangles_5b( + 20, 19, 22, // tri0 + 19, 21, 22, // tri1 + 21, 24, 22, // tri2 + 23, 25, 26 // tri3 + ), + gsSPNTriangles_5b( + 23, 22, 25, // tri0 + 22, 24, 25, // tri1 + 24, 27, 25, // tri2 + 26, 25, 28 // tri3 + ), + gsSPNTriangles_5b( + 25, 29, 28, // tri0 + 25, 27, 29, // tri1 + 27, 30, 29, // tri2 + 28, 29, 31 // tri3 + ), + gsSPVertex(&grd_s_c7_2_v[32], 28, 0), + gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 4, 5, 1 // tri2 + ), + gsSPNTriangles_5b( + 2, 1, 6, // tri0 + 1, 7, 6, // tri1 + 1, 5, 7, // tri2 + 5, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 10, // tri0 + 7, 8, 9, // tri1 + 11, 10, 12, // tri2 + 10, 13, 12 // tri3 + ), + gsSPNTriangles_5b( + 10, 14, 13, // tri0 + 10, 9, 14, // tri1 + 12, 13, 15, // tri2 + 13, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 15, // tri0 + 13, 18, 16, // tri1 + 13, 14, 18, // tri2 + 17, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 17, 16, 19, // tri0 + 16, 21, 19, // tri1 + 16, 18, 21, // tri2 + 19, 22, 23 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 22, // tri0 + 24, 23, 25, // tri1 + 24, 25, 26, // tri2 + 23, 22, 25 // tri3 + ), + gsSPNTriangles_5b( + 22, 27, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c7_2_v[60], 32, 0), + gsSPNTrianglesInit_5b( + 25, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 3, 0 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 4, // tri0 + 6, 4, 5, // tri1 + 6, 5, 7, // tri2 + 8, 6, 7 // tri3 + ), + gsSPNTriangles_5b( + 9, 8, 7, // tri0 + 9, 10, 8, // tri1 + 11, 10, 9, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 10, 13, 12, // tri0 + 13, 15, 16, // tri1 + 15, 13, 10, // tri2 + 17, 18, 14 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 21, // tri0 + 20, 22, 21, // tri1 + 19, 23, 20, // tri2 + 19, 24, 23 // tri3 + ), + gsSPNTriangles_5b( + 22, 25, 21, // tri0 + 22, 26, 25, // tri1 + 26, 27, 25, // tri2 + 27, 28, 25 // tri3 + ), + gsSPNTriangles_5b( + 28, 29, 25, // tri0 + 28, 30, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_2_v[91], 32, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 6, // tri0 + 5, 7, 8, // tri1 + 7, 9, 8, // tri2 + 1, 0, 10 // tri3 + ), + gsSPNTriangles_5b( + 10, 0, 11, // tri0 + 11, 0, 12, // tri1 + 0, 6, 12, // tri2 + 13, 9, 7 // tri3 + ), + gsSPNTriangles_5b( + 14, 13, 3, // tri0 + 4, 14, 3, // tri1 + 15, 16, 17, // tri2 + 15, 18, 16 // tri3 + ), + gsSPNTriangles_5b( + 19, 18, 15, // tri0 + 20, 9, 19, // tri1 + 21, 22, 23, // tri2 + 22, 24, 23 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 27, // tri0 + 28, 29, 30, // tri1 + 28, 31, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_2_v[123], 32, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 2, 1, 13, // tri2 + 14, 4, 15 // tri3 + ), + gsSPNTriangles_5b( + 5, 4, 14, // tri0 + 16, 11, 10, // tri1 + 17, 11, 16, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 17, // tri0 + 0, 19, 18, // tri1 + 1, 3, 20, // tri2 + 3, 21, 20 // tri3 + ), + gsSPNTriangles_5b( + 22, 20, 21, // tri0 + 13, 1, 23, // tri1 + 24, 25, 26, // tri2 + 27, 28, 29 // tri3 + ), + gsSPNTriangles_5b( + 28, 30, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_2_v[154], 7, 0), + gsSPNTrianglesInit_5b( + 3, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c7_2_v[161], 28, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 6, 8, 9, // tri1 + 10, 11, 4, // tri2 + 2, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 0, 13, 14, // tri0 + 15, 16, 17, // tri1 + 16, 18, 19, // tri2 + 18, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 20, 22, 23, // tri0 + 22, 24, 25, // tri1 + 24, 26, 27, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c7_2_v[189], 32, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 8, 3, 10, // tri1 + 11, 12, 13, // tri2 + 14, 11, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 19, 20, 21, // tri1 + 22, 23, 24, // tri2 + 25, 19, 26 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 29, // tri0 + 28, 30, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_2_v[220], 15, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 0, 9, 1, // tri0 + 10, 11, 12, // tri1 + 11, 13, 14, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c7_3/grd_s_c7_3.c b/src/data/field/bg/acre/grd_s_c7_3/grd_s_c7_3.c new file mode 100644 index 00000000..f8aed482 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c7_3/grd_s_c7_3.c @@ -0,0 +1,308 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c7_3_v[] = { +#include "assets/field/bg/grd_s_c7_3_v.inc" +}; + +extern Gfx grd_s_c7_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c7_3_v[259], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 3, 5 // tri2 + ), + gsSPNTriangles_5b(4, 2, 3, // tri0 + 4, 6, 2, // tri1 + 1, 7, 3, // tri2 + 2, 8, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c7_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c7_3_v[241], 18, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 7, 8, 9, // tri2 + 7, 10, 8 // tri3 + ), + gsSPNTriangles_5b(0, 11, 12, // tri0 + 13, 6, 14, // tri1 + 11, 10, 15, // tri2 + 8, 16, 17 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c7_3_v[0], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 6, 9, // tri1 + 8, 7, 6, // tri2 + 8, 10, 7 // tri3 + ), + gsSPNTriangles_5b(10, 11, 7, // tri0 + 12, 13, 14, // tri1 + 13, 15, 14, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(16, 19, 17, // tri0 + 8, 20, 10, // tri1 + 21, 16, 22, // tri2 + 21, 19, 16 // tri3 + ), + gsSPNTriangles_5b(16, 23, 22, // tri0 + 24, 25, 22, // tri1 + 25, 26, 22, // tri2 + 22, 26, 21 // tri3 + ), + gsSPNTriangles_5b(26, 27, 21, // tri0 + 28, 29, 30, // tri1 + 29, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_3_v[32], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 8, 10, 9, // tri1 + 10, 11, 9, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(13, 15, 16, // tri0 + 1, 17, 2, // tri1 + 18, 5, 19, // tri2 + 5, 6, 20 // tri3 + ), + gsSPNTriangles_5b(4, 21, 22, // tri0 + 18, 23, 7, // tri1 + 0, 11, 10, // tri2 + 0, 15, 11 // tri3 + ), + gsSPNTriangles_5b(7, 23, 8, // tri0 + 24, 25, 26, // tri1 + 25, 27, 26, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b(29, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_3_v[64], 21, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 10, 12, 11, // tri1 + 12, 13, 11, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b(12, 15, 14, // tri0 + 15, 16, 14, // tri1 + 17, 18, 19, // tri2 + 18, 20, 19 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c7_3_v[85], 32, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 8, 10, 11, // tri1 + 10, 6, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 12, 16, // tri0 + 13, 17, 18, // tri1 + 17, 19, 20, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b(22, 15, 24, // tri0 + 25, 26, 27, // tri1 + 28, 25, 29, // tri2 + 26, 30, 31 // tri3 + ), + gsSPVertex(&grd_s_c7_3_v[117], 21, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 5, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 1, 11, 12, // tri1 + 13, 14, 15, // tri2 + 16, 17, 14 // tri3 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 16, 18, 17, // tri1 + 11, 13, 15, // tri2 + 13, 16, 14 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c7_3_v[138], 32, 0), + gsSPNTrianglesInit_5b(35, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 7, 8, 5, // tri1 + 8, 9, 5, // tri2 + 10, 11, 9 // tri3 + ), + gsSPNTriangles_5b(10, 12, 11, // tri0 + 11, 5, 9, // tri1 + 13, 14, 12, // tri2 + 14, 15, 12 // tri3 + ), + gsSPNTriangles_5b(15, 11, 12, // tri0 + 16, 13, 10, // tri1 + 13, 12, 10, // tri2 + 17, 7, 18 // tri3 + ), + gsSPNTriangles_5b(7, 6, 18, // tri0 + 19, 0, 20, // tri1 + 0, 2, 20, // tri2 + 7, 17, 8 // tri3 + ), + gsSPNTriangles_5b(17, 21, 8, // tri0 + 17, 22, 21, // tri1 + 22, 23, 21, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(25, 27, 26, // tri0 + 25, 4, 27, // tri1 + 25, 2, 4, // tri2 + 0, 28, 3 // tri3 + ), + gsSPNTriangles_5b(0, 22, 28, // tri0 + 22, 17, 28, // tri1 + 17, 18, 28, // tri2 + 5, 29, 6 // tri3 + ), + gsSPNTriangles_5b(5, 15, 29, // tri0 + 5, 11, 15, // tri1 + 13, 30, 14, // tri2 + 13, 31, 30 // tri3 + ), + gsSPVertex(&grd_s_c7_3_v[170], 14, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(10, 13, 11, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c7_3_v[184], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 6, 3 // tri2 + ), + gsSPNTriangles_5b(7, 8, 5, // tri0 + 9, 10, 7, // tri1 + 9, 11, 10, // tri2 + 12, 11, 9 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 14, 13, 12, // tri1 + 15, 16, 14, // tri2 + 17, 18, 15 // tri3 + ), + gsSPNTriangles_5b(19, 20, 17, // tri0 + 21, 22, 19, // tri1 + 23, 24, 21, // tri2 + 25, 26, 23 // tri3 + ), + gsSPNTriangles_5b(25, 27, 26, // tri0 + 28, 27, 25, // tri1 + 29, 27, 28, // tri2 + 29, 30, 27 // tri3 + ), + gsSPNTriangles_5b(31, 30, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_3_v[216], 7, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 6, 3 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c7_3_v[223], 18, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 7, 8, 9, // tri2 + 7, 10, 8 // tri3 + ), + gsSPNTriangles_5b(11, 6, 12, // tri0 + 0, 13, 14, // tri1 + 8, 15, 16, // tri2 + 13, 10, 17 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c7_3/grd_s_c7_3_evw_anime.c b/src/data/field/bg/acre/grd_s_c7_3/grd_s_c7_3_evw_anime.c new file mode 100644 index 00000000..e8d12906 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c7_3/grd_s_c7_3_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c7_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c7_3_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_c7_3_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_c7_r1_1/grd_s_c7_r1_1.c b/src/data/field/bg/acre/grd_s_c7_r1_1/grd_s_c7_r1_1.c new file mode 100644 index 00000000..126aaf4e --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c7_r1_1/grd_s_c7_r1_1.c @@ -0,0 +1,308 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c7_r1_1_v[] = { +#include "assets/field/bg/grd_s_c7_r1_1_v.inc" +}; + +extern Gfx grd_s_c7_r1_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c7_r1_1_v[212], 16, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 7, 4, 8 // tri3 + ), + gsSPNTriangles_5b(7, 5, 4, // tri0 + 10, 11, 12, // tri1 + 10, 13, 11, // tri2 + 11, 1, 12 // tri3 + ), + gsSPNTriangles_5b(1, 0, 12, // tri0 + 10, 14, 13, // tri1 + 14, 15, 13, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c7_r1_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c7_r1_1_v[198], 14, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b(6, 4, 7, // tri0 + 8, 6, 9, // tri1 + 10, 8, 11, // tri2 + 12, 10, 13 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c7_r1_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(3, 7, 6, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 12, 8, 13 // tri3 + ), + gsSPNTriangles_5b(9, 8, 12, // tri0 + 14, 12, 13, // tri1 + 0, 2, 15, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(17, 19, 18, // tri0 + 20, 3, 21, // tri1 + 16, 6, 7, // tri2 + 7, 17, 16 // tri3 + ), + gsSPNTriangles_5b(17, 22, 23, // tri0 + 24, 3, 20, // tri1 + 23, 19, 17, // tri2 + 5, 25, 3 // tri3 + ), + gsSPNTriangles_5b(25, 26, 3, // tri0 + 26, 27, 21, // tri1 + 26, 21, 3, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b(29, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_r1_1_v[32], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(6, 8, 9, // tri0 + 6, 9, 10, // tri1 + 6, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 12, 14, // tri0 + 16, 17, 18, // tri1 + 16, 19, 17, // tri2 + 16, 20, 19 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 21, 24, 22, // tri1 + 22, 15, 23, // tri2 + 15, 14, 23 // tri3 + ), + gsSPNTriangles_5b(12, 25, 13, // tri0 + 12, 18, 25, // tri1 + 16, 26, 20, // tri2 + 19, 20, 27 // tri3 + ), + gsSPNTriangles_5b(25, 18, 17, // tri0 + 28, 29, 30, // tri1 + 29, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_r1_1_v[64], 16, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(7, 6, 8, // tri0 + 7, 8, 9, // tri1 + 10, 9, 8, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(12, 14, 13, // tri0 + 11, 15, 12, // tri1 + 14, 12, 9, // tri2 + 9, 10, 14 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c7_r1_1_v[80], 30, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(4, 7, 8, // tri0 + 4, 2, 7, // tri1 + 7, 9, 8, // tri2 + 4, 0, 2 // tri3 + ), + gsSPNTriangles_5b(0, 10, 1, // tri0 + 11, 6, 12, // tri1 + 10, 13, 14, // tri2 + 13, 15, 14 // tri3 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 17, 19, 18, // tri1 + 8, 20, 21, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b(20, 23, 22, // tri0 + 19, 24, 25, // tri1 + 24, 4, 25, // tri2 + 4, 3, 25 // tri3 + ), + gsSPNTriangles_5b(26, 12, 27, // tri0 + 12, 6, 27, // tri1 + 26, 28, 12, // tri2 + 8, 29, 20 // tri3 + ), + gsSPNTriangles_5b(8, 9, 29, // tri0 + 10, 14, 1, // tri1 + 11, 5, 6, // tri2 + 19, 25, 18 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c7_r1_1_v[110], 28, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 5, 4, 3 // tri2 + ), + gsSPNTriangles_5b(6, 5, 3, // tri0 + 7, 8, 6, // tri1 + 9, 10, 7, // tri2 + 11, 12, 9 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 11, 14, 13, // tri1 + 14, 15, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 21, 22, 23, // tri1 + 23, 24, 25, // tri2 + 25, 26, 27 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c7_r1_1_v[138], 32, 0), + gsSPNTrianglesInit_5b(37, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(0, 5, 4, // tri0 + 6, 7, 8, // tri1 + 6, 8, 9, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b(7, 11, 8, // tri0 + 9, 8, 12, // tri1 + 8, 13, 12, // tri2 + 8, 11, 14 // tri3 + ), + gsSPNTriangles_5b(8, 14, 13, // tri0 + 12, 13, 15, // tri1 + 13, 16, 15, // tri2 + 16, 17, 15 // tri3 + ), + gsSPNTriangles_5b(13, 18, 16, // tri0 + 13, 14, 18, // tri1 + 17, 19, 20, // tri2 + 17, 16, 19 // tri3 + ), + gsSPNTriangles_5b(16, 18, 21, // tri0 + 16, 21, 19, // tri1 + 20, 19, 22, // tri2 + 19, 23, 22 // tri3 + ), + gsSPNTriangles_5b(23, 24, 22, // tri0 + 23, 25, 24, // tri1 + 19, 21, 26, // tri2 + 19, 26, 23 // tri3 + ), + gsSPNTriangles_5b(26, 27, 25, // tri0 + 26, 25, 23, // tri1 + 24, 25, 28, // tri2 + 25, 29, 28 // tri3 + ), + gsSPNTriangles_5b(25, 27, 30, // tri0 + 25, 30, 29, // tri1 + 28, 29, 1, // tri2 + 29, 2, 1 // tri3 + ), + gsSPNTriangles_5b(29, 30, 31, // tri0 + 29, 31, 2, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_r1_1_v[170], 14, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b(3, 4, 5, // tri0 + 6, 7, 8, // tri1 + 6, 5, 7, // tri2 + 5, 4, 9 // tri3 + ), + gsSPNTriangles_5b(5, 9, 7, // tri0 + 8, 10, 11, // tri1 + 8, 7, 10, // tri2 + 7, 12, 10 // tri3 + ), + gsSPNTriangles_5b(7, 9, 12, // tri0 + 12, 13, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c7_r1_1_v[184], 14, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 8, 5, 9, // tri1 + 10, 11, 12, // tri2 + 11, 3, 13 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c7_r1_1/grd_s_c7_r1_1_evw_anime.c b/src/data/field/bg/acre/grd_s_c7_r1_1/grd_s_c7_r1_1_evw_anime.c new file mode 100644 index 00000000..25890f88 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c7_r1_1/grd_s_c7_r1_1_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c7_r1_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c7_r1_1_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_c7_r1_1_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_c7_r1_2/grd_s_c7_r1_2.c b/src/data/field/bg/acre/grd_s_c7_r1_2/grd_s_c7_r1_2.c new file mode 100644 index 00000000..afa4f4b6 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c7_r1_2/grd_s_c7_r1_2.c @@ -0,0 +1,298 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c7_r1_2_v[] = { +#include "assets/field/bg/grd_s_c7_r1_2_v.inc" +}; + +extern Gfx grd_s_c7_r1_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c7_r1_2_v[220], 13, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 2, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 7, 10, 9, // tri1 + 10, 11, 9, // tri2 + 11, 12, 9 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c7_r1_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c7_r1_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 9, 10, 11, // tri2 + 11, 12, 9 // tri3 + ), + gsSPNTriangles_5b(12, 13, 14, // tri0 + 13, 15, 16, // tri1 + 15, 17, 18, // tri2 + 17, 19, 18 // tri3 + ), + gsSPNTriangles_5b(20, 19, 17, // tri0 + 21, 22, 23, // tri1 + 22, 24, 25, // tri2 + 25, 26, 27 // tri3 + ), + gsSPNTriangles_5b(2, 28, 0, // tri0 + 28, 29, 30, // tri1 + 29, 8, 30, // tri2 + 29, 7, 8 // tri3 + ), + gsSPVertex(&grd_s_c7_r1_2_v[31], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 8, 6, 5, // tri1 + 9, 10, 11, // tri2 + 9, 7, 10 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 14, 15, 16, // tri1 + 15, 17, 16, // tri2 + 18, 16, 17 // tri3 + ), + gsSPNTriangles_5b(17, 19, 18, // tri0 + 17, 20, 19, // tri1 + 20, 21, 19, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b(23, 24, 25, // tri0 + 24, 26, 27, // tri1 + 27, 26, 3, // tri2 + 3, 26, 2 // tri3 + ), + gsSPNTriangles_5b(28, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_r1_2_v[62], 20, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(6, 7, 4, // tri0 + 8, 7, 6, // tri1 + 4, 9, 5, // tri2 + 5, 9, 10 // tri3 + ), + gsSPNTriangles_5b(11, 10, 9, // tri0 + 12, 10, 11, // tri1 + 13, 14, 15, // tri2 + 12, 16, 14 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c7_r1_2_v[82], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 6, 8, 9, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 13, // tri0 + 15, 17, 16, // tri1 + 18, 19, 20, // tri2 + 19, 21, 20 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 17, 24, 25, // tri1 + 24, 26, 25, // tri2 + 27, 28, 26 // tri3 + ), + gsSPNTriangles_5b(29, 30, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_r1_2_v[113], 31, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 6, // tri0 + 7, 8, 9, // tri1 + 8, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(13, 14, 12, // tri0 + 13, 15, 14, // tri1 + 16, 17, 15, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(18, 20, 19, // tri0 + 20, 21, 19, // tri1 + 21, 22, 23, // tri2 + 22, 24, 23 // tri3 + ), + gsSPNTriangles_5b(7, 9, 25, // tri0 + 26, 25, 27, // tri1 + 28, 29, 30, // tri2 + 24, 28, 23 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c7_r1_2_v[144], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 3, 6, 5, // tri1 + 6, 7, 5, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(6, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 12, 14, 13, // tri1 + 14, 15, 13, // tri2 + 15, 16, 13 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 15, 18, 17, // tri1 + 19, 20, 21, // tri2 + 22, 19, 21 // tri3 + ), + gsSPNTriangles_5b(19, 23, 20, // tri0 + 23, 24, 20, // tri1 + 24, 25, 20, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b(26, 27, 25, // tri0 + 27, 28, 25, // tri1 + 27, 29, 28, // tri2 + 29, 30, 28 // tri3 + ), + gsSPNTriangles_5b(30, 31, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_r1_2_v[176], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(0, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c7_r1_2_v[184], 32, 0), + gsSPNTrianglesInit_5b(37, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 7, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(5, 11, 2, // tri0 + 11, 0, 2, // tri1 + 5, 4, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 15, 13, // tri0 + 13, 16, 14, // tri1 + 13, 17, 16, // tri2 + 15, 18, 13 // tri3 + ), + gsSPNTriangles_5b(18, 19, 13, // tri0 + 19, 20, 13, // tri1 + 20, 17, 13, // tri2 + 18, 21, 19 // tri3 + ), + gsSPNTriangles_5b(18, 22, 21, // tri0 + 21, 20, 19, // tri1 + 21, 23, 20, // tri2 + 22, 24, 21 // tri3 + ), + gsSPNTriangles_5b(24, 25, 21, // tri0 + 25, 26, 21, // tri1 + 26, 23, 21, // tri2 + 24, 3, 25 // tri3 + ), + gsSPNTriangles_5b(24, 27, 3, // tri0 + 3, 26, 25, // tri1 + 3, 1, 26, // tri2 + 27, 28, 3 // tri3 + ), + gsSPNTriangles_5b(28, 2, 3, // tri0 + 28, 29, 2, // tri1 + 29, 30, 2, // tri2 + 30, 5, 2 // tri3 + ), + gsSPNTriangles_5b(30, 7, 5, // tri0 + 30, 31, 7, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_r1_2_v[216], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c7_r1_2/grd_s_c7_r1_2_evw_anime.c b/src/data/field/bg/acre/grd_s_c7_r1_2/grd_s_c7_r1_2_evw_anime.c new file mode 100644 index 00000000..066da8e9 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c7_r1_2/grd_s_c7_r1_2_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c7_r1_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c7_r1_2_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_c7_r1_2_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_c7_r3_1/grd_s_c7_r3_1.c b/src/data/field/bg/acre/grd_s_c7_r3_1/grd_s_c7_r3_1.c new file mode 100644 index 00000000..64e382dc --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c7_r3_1/grd_s_c7_r3_1.c @@ -0,0 +1,344 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c7_r3_1_v[] = { +#include "assets/field/bg/grd_s_c7_r3_1_v.inc" +}; + +extern Gfx grd_s_c7_r3_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c7_r3_1_v[257], 31, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b(4, 3, 5, // tri0 + 6, 4, 5, // tri1 + 7, 6, 5, // tri2 + 7, 5, 8 // tri3 + ), + gsSPNTriangles_5b(9, 7, 8, // tri0 + 9, 8, 10, // tri1 + 11, 12, 13, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 14, 16, 15, // tri1 + 17, 18, 19, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b(20, 21, 19, // tri0 + 22, 23, 24, // tri1 + 23, 25, 24, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(25, 27, 26, // tri0 + 27, 28, 26, // tri1 + 29, 30, 28, // tri2 + 28, 27, 29 // tri3 + ), + gsSPNTriangles_5b(29, 10, 30, // tri0 + 29, 9, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c7_r3_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c7_r3_1_v[242], 15, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 0, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 1, 7, 10, // tri1 + 8, 11, 12, // tri2 + 11, 13, 14 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c7_r3_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 4, 8, // tri0 + 9, 10, 11, // tri1 + 10, 7, 12, // tri2 + 0, 9, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 15, 17, 18, // tri1 + 19, 20, 21, // tri2 + 17, 19, 22 // tri3 + ), + gsSPNTriangles_5b(20, 23, 24, // tri0 + 23, 25, 26, // tri1 + 27, 14, 28, // tri2 + 29, 27, 30 // tri3 + ), + gsSPVertex(&grd_s_c7_r3_1_v[31], 23, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 0, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 10, 11, // tri1 + 12, 13, 14, // tri2 + 15, 14, 16 // tri3 + ), + gsSPNTriangles_5b(7, 8, 17, // tri0 + 5, 6, 8, // tri1 + 18, 17, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(21, 18, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c7_r3_1_v[54], 29, 0), + gsSPNTrianglesInit_5b(33, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 2, 3, 4 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 4, 5, 6, // tri1 + 5, 7, 6, // tri2 + 6, 7, 8 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 8, 10, 11, // tri1 + 8, 9, 10, // tri2 + 11, 10, 12 // tri3 + ), + gsSPNTriangles_5b(12, 10, 13, // tri0 + 13, 14, 12, // tri1 + 14, 15, 16, // tri2 + 14, 13, 15 // tri3 + ), + gsSPNTriangles_5b(16, 15, 17, // tri0 + 15, 18, 17, // tri1 + 17, 19, 20, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(16, 21, 14, // tri0 + 16, 22, 21, // tri1 + 16, 17, 22, // tri2 + 20, 23, 17 // tri3 + ), + gsSPNTriangles_5b(17, 23, 22, // tri0 + 11, 24, 8, // tri1 + 24, 25, 8, // tri2 + 25, 6, 8 // tri3 + ), + gsSPNTriangles_5b(6, 26, 4, // tri0 + 6, 25, 26, // tri1 + 26, 2, 4, // tri2 + 26, 27, 2 // tri3 + ), + gsSPNTriangles_5b(27, 28, 2, // tri0 + 28, 0, 2, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c7_r3_1_v[83], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 3, 7, 2, // tri1 + 5, 8, 6, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b(9, 12, 13, // tri0 + 13, 14, 15, // tri1 + 13, 12, 14, // tri2 + 9, 11, 12 // tri3 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 19, 20, 17, // tri1 + 19, 21, 20, // tri2 + 22, 23, 21 // tri3 + ), + gsSPNTriangles_5b(22, 24, 23, // tri0 + 25, 26, 24, // tri1 + 25, 27, 26, // tri2 + 28, 29, 27 // tri3 + ), + gsSPNTriangles_5b(30, 31, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_r3_1_v[115], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 7, 9, // tri0 + 10, 9, 11, // tri1 + 11, 12, 13, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 13, // tri0 + 2, 1, 3, // tri1 + 3, 16, 4, // tri2 + 17, 18, 16 // tri3 + ), + gsSPNTriangles_5b(19, 20, 18, // tri0 + 19, 21, 20, // tri1 + 22, 23, 21, // tri2 + 22, 24, 23 // tri3 + ), + gsSPNTriangles_5b(25, 26, 24, // tri0 + 27, 28, 26, // tri1 + 28, 27, 29, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b(29, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_r3_1_v[147], 12, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 10, 11, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c7_r3_1_v[159], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 9, 10, 7 // tri3 + ), + gsSPNTriangles_5b(11, 12, 7, // tri0 + 7, 13, 8, // tri1 + 14, 15, 16, // tri2 + 15, 17, 16 // tri3 + ), + gsSPNTriangles_5b(17, 18, 16, // tri0 + 18, 19, 16, // tri1 + 20, 21, 22, // tri2 + 21, 23, 22 // tri3 + ), + gsSPNTriangles_5b(21, 24, 23, // tri0 + 24, 25, 23, // tri1 + 25, 26, 13, // tri2 + 26, 8, 13 // tri3 + ), + gsSPNTriangles_5b(27, 28, 29, // tri0 + 27, 30, 28, // tri1 + 27, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_r3_1_v[191], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 2, 3, // tri1 + 9, 0, 2, // tri2 + 9, 10, 0 // tri3 + ), + gsSPNTriangles_5b(11, 5, 12, // tri0 + 13, 14, 11, // tri1 + 15, 16, 13, // tri2 + 16, 14, 13 // tri3 + ), + gsSPNTriangles_5b(16, 17, 14, // tri0 + 17, 18, 14, // tri1 + 19, 12, 20, // tri2 + 12, 5, 20 // tri3 + ), + gsSPNTriangles_5b(21, 7, 22, // tri0 + 22, 7, 23, // tri1 + 21, 5, 7, // tri2 + 5, 21, 20 // tri3 + ), + gsSPNTriangles_5b(24, 25, 26, // tri0 + 27, 26, 25, // tri1 + 28, 26, 27, // tri2 + 28, 29, 26 // tri3 + ), + gsSPNTriangles_5b(28, 30, 29, // tri0 + 30, 31, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_r3_1_v[223], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c7_r3_1_v[227], 15, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 3, 8, // tri0 + 9, 10, 11, // tri1 + 12, 9, 13, // tri2 + 10, 5, 14 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c7_r3_1/grd_s_c7_r3_1_evw_anime.c b/src/data/field/bg/acre/grd_s_c7_r3_1/grd_s_c7_r3_1_evw_anime.c new file mode 100644 index 00000000..c32b644c --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c7_r3_1/grd_s_c7_r3_1_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c7_r3_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c7_r3_1_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_c7_r3_1_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_c7_r3_2/grd_s_c7_r3_2.c b/src/data/field/bg/acre/grd_s_c7_r3_2/grd_s_c7_r3_2.c new file mode 100644 index 00000000..efdcb231 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c7_r3_2/grd_s_c7_r3_2.c @@ -0,0 +1,374 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c7_r3_2_v[] = { +#include "assets/field/bg/grd_s_c7_r3_2_v.inc" +}; + +extern Gfx grd_s_c7_r3_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c7_r3_2_v[285], 24, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 9, 10, 7, // tri1 + 11, 12, 13, // tri2 + 14, 15, 11 // tri3 + ), + gsSPNTriangles_5b(16, 14, 11, // tri0 + 17, 13, 18, // tri1 + 19, 17, 18, // tri2 + 20, 19, 18 // tri3 + ), + gsSPNTriangles_5b(20, 18, 21, // tri0 + 22, 23, 20, // tri1 + 22, 20, 21, // tri2 + 16, 11, 13 // tri3 + ), + gsSPNTriangles_5b(17, 16, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c7_r3_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c7_r3_2_v[272], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c7_r3_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 3, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 1, // tri0 + 6, 4, 1, // tri1 + 5, 1, 7, // tri2 + 8, 9, 0 // tri3 + ), + gsSPNTriangles_5b(9, 10, 0, // tri0 + 10, 11, 0, // tri1 + 12, 13, 14, // tri2 + 13, 15, 14 // tri3 + ), + gsSPNTriangles_5b(13, 11, 15, // tri0 + 12, 16, 13, // tri1 + 17, 18, 19, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 21, 24, 22, // tri1 + 22, 25, 23, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b(27, 29, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_r3_2_v[30], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 9, 4, 10, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(12, 14, 13, // tri0 + 12, 15, 14, // tri1 + 8, 16, 9, // tri2 + 13, 17, 18 // tri3 + ), + gsSPNTriangles_5b(17, 19, 18, // tri0 + 13, 18, 20, // tri1 + 19, 7, 18, // tri2 + 7, 5, 18 // tri3 + ), + gsSPNTriangles_5b(21, 16, 22, // tri0 + 6, 10, 4, // tri1 + 16, 21, 9, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b(26, 27, 28, // tri0 + 27, 29, 28, // tri1 + 30, 31, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_r3_2_v[62], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 10, 12, 11, // tri1 + 10, 13, 12, // tri2 + 10, 14, 13 // tri3 + ), + gsSPNTriangles_5b(10, 15, 14, // tri0 + 15, 16, 14, // tri1 + 16, 17, 14, // tri2 + 15, 18, 16 // tri3 + ), + gsSPNTriangles_5b(18, 19, 16, // tri0 + 18, 20, 19, // tri1 + 21, 22, 23, // tri2 + 22, 24, 23 // tri3 + ), + gsSPNTriangles_5b(25, 26, 27, // tri0 + 25, 28, 26, // tri1 + 25, 29, 28, // tri2 + 25, 30, 29 // tri3 + ), + gsSPVertex(&grd_s_c7_r3_2_v[93], 21, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(7, 8, 0, // tri0 + 7, 9, 8, // tri1 + 9, 10, 8, // tri2 + 9, 11, 10 // tri3 + ), + gsSPNTriangles_5b(7, 12, 9, // tri0 + 13, 14, 15, // tri1 + 14, 16, 15, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(17, 19, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c7_r3_2_v[114], 16, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 0, // tri0 + 8, 9, 6, // tri1 + 10, 11, 8, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(10, 13, 12, // tri0 + 13, 14, 15, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c7_r3_2_v[130], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 4, 6, // tri0 + 7, 6, 8, // tri1 + 9, 7, 8, // tri2 + 9, 8, 10 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 9, 11, // tri1 + 12, 11, 13, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(14, 16, 17, // tri0 + 18, 14, 17, // tri1 + 18, 17, 19, // tri2 + 20, 18, 19 // tri3 + ), + gsSPNTriangles_5b(20, 19, 21, // tri0 + 20, 21, 22, // tri1 + 23, 24, 25, // tri2 + 23, 26, 24 // tri3 + ), + gsSPNTriangles_5b(26, 27, 24, // tri0 + 26, 28, 27, // tri1 + 28, 29, 27, // tri2 + 28, 30, 29 // tri3 + ), + gsSPNTriangles_5b(28, 0, 30, // tri0 + 0, 2, 30, // tri1 + 1, 31, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_r3_2_v[162], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 4 // tri2 + ), + gsSPNTriangles_5b(7, 8, 6, // tri0 + 9, 10, 8, // tri1 + 10, 11, 12, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b(15, 16, 14, // tri0 + 17, 18, 16, // tri1 + 19, 20, 18, // tri2 + 21, 22, 20 // tri3 + ), + gsSPNTriangles_5b(23, 24, 22, // tri0 + 23, 25, 24, // tri1 + 25, 26, 24, // tri2 + 26, 27, 24 // tri3 + ), + gsSPNTriangles_5b(26, 28, 27, // tri0 + 26, 29, 28, // tri1 + 29, 30, 28, // tri2 + 29, 31, 30 // tri3 + ), + gsSPVertex(&grd_s_c7_r3_2_v[194], 6, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c7_r3_2_v[200], 32, 0), + gsSPNTrianglesInit_5b(30, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 0, 6, // tri0 + 7, 8, 9, // tri1 + 8, 10, 9, // tri2 + 10, 11, 9 // tri3 + ), + gsSPNTriangles_5b(10, 12, 11, // tri0 + 10, 13, 12, // tri1 + 13, 14, 12, // tri2 + 13, 15, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 14, // tri0 + 16, 17, 14, // tri1 + 16, 18, 17, // tri2 + 16, 19, 18 // tri3 + ), + gsSPNTriangles_5b(19, 20, 18, // tri0 + 19, 21, 20, // tri1 + 21, 22, 20, // tri2 + 21, 23, 22 // tri3 + ), + gsSPNTriangles_5b(21, 24, 23, // tri0 + 24, 25, 23, // tri1 + 24, 26, 25, // tri2 + 26, 27, 25 // tri3 + ), + gsSPNTriangles_5b(27, 5, 25, // tri0 + 27, 1, 5, // tri1 + 27, 28, 1, // tri2 + 28, 29, 1 // tri3 + ), + gsSPNTriangles_5b(29, 3, 1, // tri0 + 29, 30, 3, // tri1 + 29, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_r3_2_v[232], 27, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 0, 12, 1 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 14, 16, 15, // tri1 + 14, 17, 18, // tri2 + 17, 19, 18 // tri3 + ), + gsSPNTriangles_5b(14, 18, 16, // tri0 + 17, 20, 19, // tri1 + 20, 21, 22, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b(24, 26, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c7_r3_2_v[259], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c7_r3_2/grd_s_c7_r3_2_evw_anime.c b/src/data/field/bg/acre/grd_s_c7_r3_2/grd_s_c7_r3_2_evw_anime.c new file mode 100644 index 00000000..d4f144d6 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c7_r3_2/grd_s_c7_r3_2_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c7_r3_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c7_r3_2_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_c7_r3_2_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_c7_s_1/grd_s_c7_s_1.c b/src/data/field/bg/acre/grd_s_c7_s_1/grd_s_c7_s_1.c new file mode 100644 index 00000000..2dadb276 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c7_s_1/grd_s_c7_s_1.c @@ -0,0 +1,409 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c7_s_1_v[] = { +#include "assets/field/bg/grd_s_c7_s_1_v.inc" +}; + +extern Gfx grd_s_c7_s_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c7_s_1_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 25, // tri count + 0, 1, 2, // tri0 + 1, 0, 3, // tri1 + 3, 0, 4 // tri2 + ), + gsSPNTriangles_5b( + 4, 0, 5, // tri0 + 5, 0, 6, // tri1 + 7, 6, 0, // tri2 + 8, 7, 9 // tri3 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 10, 11, 12, // tri1 + 9, 11, 10, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 14, 16, 15, // tri0 + 14, 17, 16, // tri1 + 18, 19, 4, // tri2 + 19, 3, 4 // tri3 + ), + gsSPNTriangles_5b( + 18, 20, 19, // tri0 + 18, 21, 20, // tri1 + 21, 22, 20, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 24, 26, 25, // tri0 + 27, 25, 26, // tri1 + 27, 28, 25, // tri2 + 25, 29, 23 // tri3 + ), + gsSPNTriangles_5b( + 30, 31, 23, // tri0 + 31, 24, 23, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_s_1_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 6, 10, 7, // tri1 + 11, 12, 13, // tri2 + 11, 7, 12 // tri3 + ), + gsSPNTriangles_5b( + 7, 10, 12, // tri0 + 14, 15, 3, // tri1 + 15, 16, 3, // tri2 + 16, 17, 3 // tri3 + ), + gsSPNTriangles_5b( + 3, 18, 4, // tri0 + 3, 17, 18, // tri1 + 19, 20, 21, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 23, 26, 24, // tri1 + 25, 27, 19, // tri2 + 25, 24, 27 // tri3 + ), + gsSPNTriangles_5b( + 25, 28, 23, // tri0 + 29, 23, 28, // tri1 + 11, 13, 30, // tri2 + 13, 31, 30 // tri3 + ), + gsSPVertex(&grd_s_c7_s_1_v[64], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b( + 3, 7, 6, // tri0 + 8, 9, 10, // tri1 + 11, 12, 1, // tri2 + 12, 13, 1 // tri3 + ), + gsSPNTriangles_5b( + 0, 14, 15, // tri0 + 0, 16, 14, // tri1 + 17, 18, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 21, 23, 22, // tri0 + 24, 25, 26, // tri1 + 25, 27, 26, // tri2 + 25, 28, 27 // tri3 + ), + gsSPNTriangles_5b( + 29, 30, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_s_1_v[95], 32, 0), + gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 4, 8, 5, // tri1 + 5, 9, 7, // tri2 + 5, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 9, 11, 7, // tri0 + 11, 12, 7, // tri1 + 11, 13, 12, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 16, 18, 17, // tri1 + 19, 20, 21, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 23, 26, 24, // tri1 + 26, 27, 24, // tri2 + 28, 29, 27 // tri3 + ), + gsSPNTriangles_5b( + 29, 30, 27, // tri0 + 29, 10, 30, // tri1 + 10, 31, 30, // tri2 + 10, 5, 31 // tri3 + ), + gsSPVertex(&grd_s_c7_s_1_v[127], 16, 0), + gsSPNTrianglesInit_5b( + 9, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 5, 7, 8, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 11, // tri0 + 14, 15, 13, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c7_s_1_v[143], 32, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 8, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 9, 12, 10, // tri0 + 12, 13, 10, // tri1 + 14, 15, 16, // tri2 + 14, 17, 15 // tri3 + ), + gsSPNTriangles_5b( + 14, 18, 17, // tri0 + 14, 19, 18, // tri1 + 19, 20, 18, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 20, 19, 21, // tri0 + 21, 23, 22, // tri1 + 24, 25, 26, // tri2 + 25, 27, 26 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 26, // tri0 + 27, 29, 28, // tri1 + 25, 30, 27, // tri2 + 30, 31, 27 // tri3 + ), + gsSPNTriangles_5b( + 31, 29, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_s_1_v[175], 32, 0), + gsSPNTrianglesInit_5b( + 31, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 4, 5, 0 // tri2 + ), + gsSPNTriangles_5b( + 5, 1, 0, // tri0 + 5, 6, 1, // tri1 + 4, 7, 5, // tri2 + 7, 8, 5 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 10, // tri0 + 12, 14, 13, // tri1 + 14, 15, 13, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 19, // tri0 + 17, 20, 18, // tri1 + 20, 21, 18, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 23, 26, 24, // tri1 + 26, 27, 24, // tri2 + 27, 28, 24 // tri3 + ), + gsSPNTriangles_5b( + 25, 20, 17, // tri0 + 25, 24, 20, // tri1 + 24, 22, 20, // tri2 + 24, 28, 22 // tri3 + ), + gsSPNTriangles_5b( + 29, 13, 15, // tri0 + 29, 15, 30, // tri1 + 30, 15, 31, // tri2 + 15, 16, 31 // tri3 + ), + gsSPVertex(&grd_s_c7_s_1_v[207], 32, 0), + gsSPNTrianglesInit_5b( + 27, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 3, 6, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 11, 10, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 14, 15, 16, // tri1 + 14, 16, 17, // tri2 + 13, 12, 15 // tri3 + ), + gsSPNTriangles_5b( + 13, 15, 14, // tri0 + 17, 16, 18, // tri1 + 17, 18, 19, // tri2 + 18, 16, 20 // tri3 + ), + gsSPNTriangles_5b( + 21, 18, 20, // tri0 + 16, 15, 20, // tri1 + 15, 22, 20, // tri2 + 15, 12, 22 // tri3 + ), + gsSPNTriangles_5b( + 12, 23, 22, // tri0 + 12, 24, 23, // tri1 + 12, 10, 24, // tri2 + 10, 9, 24 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 27, // tri0 + 25, 28, 26, // tri1 + 29, 27, 30, // tri2 + 29, 25, 27 // tri3 + ), + gsSPVertex(&grd_s_c7_s_1_v[238], 23, 0), + gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 0 // tri2 + ), + gsSPNTriangles_5b( + 2, 6, 7, // tri0 + 4, 0, 2, // tri1 + 7, 4, 2, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b( + 9, 11, 10, // tri0 + 12, 8, 13, // tri1 + 8, 10, 13, // tri2 + 14, 13, 15 // tri3 + ), + gsSPNTriangles_5b( + 14, 12, 13, // tri0 + 16, 14, 17, // tri1 + 14, 15, 17, // tri2 + 18, 16, 19 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 19, // tri0 + 19, 20, 21, // tri1 + 18, 19, 21, // tri2 + 22, 18, 21 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c7_s_1_v[261], 32, 0), + gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 5, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 6, 5, 3, // tri0 + 7, 8, 6, // tri1 + 9, 10, 7, // tri2 + 11, 12, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 11, 14, 13, // tri1 + 14, 15, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 17, // tri0 + 22, 23, 20, // tri1 + 24, 25, 22, // tri2 + 23, 21, 20 // tri3 + ), + gsSPNTriangles_5b( + 24, 26, 27, // tri0 + 26, 28, 29, // tri1 + 30, 29, 28, // tri2 + 28, 31, 30 // tri3 + ), + gsSPVertex(&grd_s_c7_s_1_v[293], 17, 0), + gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 6, 8, 7, // tri0 + 8, 9, 10, // tri1 + 10, 11, 12, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c7_s_2/grd_s_c7_s_2.c b/src/data/field/bg/acre/grd_s_c7_s_2/grd_s_c7_s_2.c new file mode 100644 index 00000000..37a9475e --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c7_s_2/grd_s_c7_s_2.c @@ -0,0 +1,295 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c7_s_2_v[] = { +#include "assets/field/bg/grd_s_c7_s_2_v.inc" +}; + +extern Gfx grd_s_c7_s_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c7_s_2_v[183], 17, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 6, 3, 8, // tri0 + 3, 4, 8, // tri1 + 9, 10, 11, // tri2 + 12, 9, 11 // tri3 + ), + gsSPNTriangles_5b( + 1, 12, 13, // tri0 + 9, 14, 10, // tri1 + 14, 15, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c7_s_2_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 6, // tri0 + 7, 9, 8, // tri1 + 5, 7, 6, // tri2 + 4, 10, 5 // tri3 + ), + gsSPNTriangles_5b( + 11, 10, 4, // tri0 + 12, 11, 13, // tri1 + 12, 10, 11, // tri2 + 14, 13, 15 // tri3 + ), + gsSPNTriangles_5b( + 13, 16, 12, // tri0 + 13, 14, 16, // tri1 + 17, 18, 19, // tri2 + 17, 20, 18 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 18, // tri0 + 21, 22, 18, // tri1 + 22, 23, 18, // tri2 + 22, 24, 23 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 27, // tri0 + 25, 27, 28, // tri1 + 14, 15, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_s_2_v[30], 32, 0), + gsSPNTrianglesInit_5b( + 25, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 9, 10, 11, // tri1 + 12, 13, 14, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 15, 5, 16, // tri0 + 4, 17, 16, // tri1 + 16, 5, 4, // tri2 + 18, 10, 19 // tri3 + ), + gsSPNTriangles_5b( + 18, 11, 10, // tri0 + 19, 1, 18, // tri1 + 1, 20, 2, // tri2 + 1, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 6, 5, 8, // tri0 + 21, 22, 23, // tri1 + 23, 24, 21, // tri2 + 25, 26, 23 // tri3 + ), + gsSPNTriangles_5b( + 26, 24, 23, // tri0 + 27, 25, 28, // tri1 + 27, 26, 25, // tri2 + 29, 30, 31 // tri3 + ), + gsSPNTriangles_5b( + 30, 7, 31, // tri0 + 30, 8, 7, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_s_2_v[62], 22, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 4, 7, // tri1 + 4, 8, 7, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 7, 14, 10, // tri0 + 14, 15, 10, // tri1 + 15, 16, 10, // tri2 + 17, 18, 16 // tri3 + ), + gsSPNTriangles_5b( + 18, 17, 19, // tri0 + 20, 21, 19, // tri1 + 21, 18, 19, // tri2 + 9, 21, 20 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c7_s_2_v[84], 32, 0), + gsSPNTrianglesInit_5b( + 34, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 2, // tri0 + 6, 1, 0, // tri1 + 6, 7, 1, // tri2 + 7, 8, 4 // tri3 + ), + gsSPNTriangles_5b( + 7, 4, 1, // tri0 + 9, 10, 7, // tri1 + 9, 7, 6, // tri2 + 10, 11, 8 // tri3 + ), + gsSPNTriangles_5b( + 10, 8, 7, // tri0 + 12, 13, 9, // tri1 + 13, 10, 9, // tri2 + 13, 14, 11 // tri3 + ), + gsSPNTriangles_5b( + 13, 11, 10, // tri0 + 15, 16, 12, // tri1 + 16, 13, 12, // tri2 + 16, 17, 14 // tri3 + ), + gsSPNTriangles_5b( + 16, 14, 13, // tri0 + 18, 19, 16, // tri1 + 18, 16, 15, // tri2 + 19, 20, 17 // tri3 + ), + gsSPNTriangles_5b( + 19, 17, 16, // tri0 + 21, 22, 19, // tri1 + 21, 19, 18, // tri2 + 22, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 23, 25, 26, // tri1 + 24, 27, 25, // tri2 + 28, 29, 24 // tri3 + ), + gsSPNTriangles_5b( + 28, 24, 23, // tri0 + 29, 30, 27, // tri1 + 29, 27, 24, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_s_2_v[115], 9, 0), + gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 3, // tri0 + 6, 7, 1, // tri1 + 6, 1, 0, // tri2 + 7, 8, 4 // tri3 + ), + gsSPNTriangles_5b( + 7, 4, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c7_s_2_v[124], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 1, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 14, 16, 15, // tri0 + 17, 18, 19, // tri1 + 20, 21, 22, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 13, 27, // tri0 + 26, 27, 24, // tri1 + 20, 28, 21, // tri2 + 29, 30, 31 // tri3 + ), + gsSPNTriangles_5b( + 28, 29, 31, // tri0 + 18, 20, 22, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_s_2_v[156], 10, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b( + 3, 6, 7, // tri0 + 8, 4, 9, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c7_s_2_v[166], 17, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 4, 9, 10, // tri0 + 11, 3, 12, // tri1 + 13, 14, 15, // tri2 + 1, 11, 16 // tri3 + ), + gsSPNTriangles_5b( + 13, 6, 14, // tri0 + 9, 13, 15, // tri1 + 11, 12, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c7_s_3/grd_s_c7_s_3.c b/src/data/field/bg/acre/grd_s_c7_s_3/grd_s_c7_s_3.c new file mode 100644 index 00000000..76cb66e0 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c7_s_3/grd_s_c7_s_3.c @@ -0,0 +1,325 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c7_s_3_v[] = { +#include "assets/field/bg/grd_s_c7_s_3_v.inc" +}; + +extern Gfx grd_s_c7_s_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c7_s_3_v[225], 11, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c7_s_3_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b( + 0, 2, 5, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 14, 16, 15, // tri1 + 14, 17, 16, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 20, // tri0 + 20, 13, 18, // tri1 + 22, 23, 24, // tri2 + 23, 25, 24 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 27, // tri0 + 26, 28, 27, // tri1 + 29, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_s_3_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 8, 9, 7, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 10, 14, 15, // tri1 + 14, 16, 15, // tri2 + 14, 17, 16 // tri3 + ), + gsSPNTriangles_5b( + 18, 3, 19, // tri0 + 3, 0, 19, // tri1 + 20, 16, 17, // tri2 + 20, 21, 16 // tri3 + ), + gsSPNTriangles_5b( + 20, 22, 21, // tri0 + 22, 23, 21, // tri1 + 23, 24, 21, // tri2 + 24, 25, 21 // tri3 + ), + gsSPNTriangles_5b( + 23, 26, 24, // tri0 + 27, 11, 28, // tri1 + 27, 29, 18, // tri2 + 27, 30, 29 // tri3 + ), + gsSPNTriangles_5b( + 5, 31, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_s_3_v[64], 32, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 8, 9, 5 // tri3 + ), + gsSPNTriangles_5b( + 10, 7, 11, // tri0 + 10, 12, 7, // tri1 + 13, 14, 15, // tri2 + 13, 16, 14 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 14, // tri0 + 16, 18, 17, // tri1 + 19, 20, 21, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 19, 23, 20, // tri0 + 24, 25, 26, // tri1 + 25, 27, 26, // tri2 + 25, 28, 27 // tri3 + ), + gsSPNTriangles_5b( + 25, 29, 28, // tri0 + 28, 30, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_s_3_v[95], 11, 0), + gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 6, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c7_s_3_v[106], 32, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 1, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 13, 17, // tri0 + 18, 19, 20, // tri1 + 21, 18, 22, // tri2 + 14, 23, 24 // tri3 + ), + gsSPNTriangles_5b( + 23, 21, 25, // tri0 + 26, 27, 28, // tri1 + 29, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_s_3_v[138], 17, 0), + gsSPNTrianglesInit_5b( + 9, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 4 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 11, 8, 10, // tri1 + 12, 11, 10, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 13, 15, // tri0 + 16, 15, 7, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c7_s_3_v[155], 32, 0), + gsSPNTrianglesInit_5b( + 33, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 5, // tri0 + 6, 8, 7, // tri1 + 8, 9, 7, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 8, 11, 10, // tri0 + 11, 12, 10, // tri1 + 12, 13, 10, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 13, // tri0 + 15, 16, 13, // tri1 + 3, 17, 4, // tri2 + 17, 18, 4 // tri3 + ), + gsSPNTriangles_5b( + 18, 6, 4, // tri0 + 18, 19, 6, // tri1 + 19, 8, 6, // tri2 + 19, 20, 8 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 8, // tri0 + 21, 11, 8, // tri1 + 21, 22, 11, // tri2 + 22, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 12, // tri0 + 23, 14, 12, // tri1 + 23, 15, 14, // tri2 + 23, 24, 15 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 27, // tri0 + 26, 1, 27, // tri1 + 26, 28, 1, // tri2 + 26, 29, 28 // tri3 + ), + gsSPNTriangles_5b( + 29, 30, 28, // tri0 + 29, 31, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_s_3_v[187], 27, 0), + gsSPNTrianglesInit_5b( + 25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 7, 8, 4 // tri3 + ), + gsSPNTriangles_5b( + 8, 3, 4, // tri0 + 8, 9, 3, // tri1 + 9, 2, 3, // tri2 + 9, 10, 2 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 2, // tri0 + 10, 12, 11, // tri1 + 10, 13, 12, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 15, 14, // tri0 + 16, 17, 14, // tri1 + 10, 18, 13, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 19, // tri0 + 22, 19, 21, // tri1 + 23, 24, 19, // tri2 + 24, 25, 19 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 19, // tri0 + 26, 20, 19, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c7_s_3_v[214], 11, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 8, 3, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_e1_1/grd_s_e1_1.c b/src/data/field/bg/acre/grd_s_e1_1/grd_s_e1_1.c new file mode 100644 index 00000000..5c3b80a1 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_e1_1/grd_s_e1_1.c @@ -0,0 +1,186 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; + +static Vtx grd_s_e1_1_v[] = { +#include "assets/field/bg/grd_s_e1_1_v.inc" +}; + +extern Gfx grd_s_e1_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_e1_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_e1_1_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 41, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 7, 5, // tri0 + 7, 8, 5, // tri1 + 7, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b( + 9, 11, 10, // tri0 + 11, 12, 10, // tri1 + 11, 13, 12, // tri2 + 11, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 13, // tri0 + 14, 16, 15, // tri1 + 16, 2, 15, // tri2 + 16, 0, 2 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 0, // tri0 + 17, 18, 0, // tri1 + 17, 19, 18, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 20, // tri0 + 19, 22, 21, // tri1 + 22, 23, 21, // tri2 + 5, 24, 6 // tri3 + ), + gsSPNTriangles_5b( + 24, 25, 6, // tri0 + 5, 26, 24, // tri1 + 5, 8, 26, // tri2 + 8, 27, 26 // tri3 + ), + gsSPNTriangles_5b( + 8, 10, 27, // tri0 + 10, 12, 27, // tri1 + 12, 28, 27, // tri2 + 12, 13, 28 // tri3 + ), + gsSPNTriangles_5b( + 13, 29, 28, // tri0 + 13, 15, 29, // tri1 + 15, 3, 29, // tri2 + 15, 2, 3 // tri3 + ), + gsSPNTriangles_5b( + 0, 18, 1, // tri0 + 18, 30, 1, // tri1 + 18, 20, 30, // tri2 + 20, 21, 30 // tri3 + ), + gsSPNTriangles_5b( + 21, 31, 30, // tri0 + 21, 23, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_e1_1_v[32], 31, 0), + gsSPNTrianglesInit_5b( + 39, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 7, // tri0 + 9, 10, 7, // tri1 + 9, 11, 10, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 11, // tri0 + 13, 14, 11, // tri1 + 13, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 16, // tri0 + 17, 18, 16, // tri1 + 18, 19, 16, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 18, 21, 20, // tri0 + 18, 22, 21, // tri1 + 18, 23, 22, // tri2 + 18, 17, 23 // tri3 + ), + gsSPNTriangles_5b( + 17, 15, 23, // tri0 + 15, 24, 23, // tri1 + 15, 13, 24, // tri2 + 13, 25, 24 // tri3 + ), + gsSPNTriangles_5b( + 13, 12, 25, // tri0 + 12, 9, 25, // tri1 + 9, 26, 25, // tri2 + 9, 8, 26 // tri3 + ), + gsSPNTriangles_5b( + 8, 27, 26, // tri0 + 8, 6, 27, // tri1 + 6, 28, 27, // tri2 + 6, 4, 28 // tri3 + ), + gsSPNTriangles_5b( + 4, 29, 28, // tri0 + 4, 1, 29, // tri1 + 1, 30, 29, // tri2 + 1, 0, 30 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_e1_1_v[63], 23, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 5, 4, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 6, 8, // tri0 + 9, 10, 11, // tri1 + 9, 12, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 16, 17, 18, // tri1 + 18, 17, 19, // tri2 + 16, 20, 17 // tri3 + ), + gsSPNTriangles_5b( + 16, 15, 20, // tri0 + 14, 21, 15, // tri1 + 13, 21, 14, // tri2 + 9, 22, 12 // tri3 + ), + gsSPNTriangles_5b( + 12, 22, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_e1_r1_1/grd_s_e1_r1_1.c b/src/data/field/bg/acre/grd_s_e1_r1_1/grd_s_e1_r1_1.c new file mode 100644 index 00000000..bfa1bee6 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_e1_r1_1/grd_s_e1_r1_1.c @@ -0,0 +1,433 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; + +static Vtx grd_s_e1_r1_1_v[] = { +#include "assets/field/bg/grd_s_e1_r1_1_v.inc" +}; + +extern Gfx grd_s_e1_r1_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_e1_r1_1_v[302], 17, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 2, 6, // tri0 + 5, 0, 2, // tri1 + 7, 6, 8, // tri2 + 7, 5, 6 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 9, 7, 10, // tri1 + 7, 8, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 9, 13, // tri0 + 9, 11, 13, // tri1 + 15, 14, 16, // tri2 + 15, 12, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_e1_r1_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_e1_r1_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b(6, 7, 5, // tri0 + 6, 8, 7, // tri1 + 9, 10, 8, // tri2 + 9, 11, 10 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 12, 14, 13, // tri1 + 14, 12, 15, // tri2 + 16, 17, 15 // tri3 + ), + gsSPNTriangles_5b(18, 19, 17, // tri0 + 20, 21, 19, // tri1 + 22, 23, 21, // tri2 + 21, 20, 22 // tri3 + ), + gsSPNTriangles_5b(19, 18, 20, // tri0 + 17, 16, 18, // tri1 + 15, 12, 16, // tri2 + 11, 9, 12 // tri3 + ), + gsSPNTriangles_5b(8, 24, 9, // tri0 + 8, 6, 24, // tri1 + 5, 4, 6, // tri2 + 3, 0, 4 // tri3 + ), + gsSPNTriangles_5b(2, 25, 0, // tri0 + 26, 27, 28, // tri1 + 28, 29, 30, // tri2 + 28, 30, 26 // tri3 + ), + gsSPVertex(&grd_s_e1_r1_1_v[31], 32, 0), + gsSPNTrianglesInit_5b(33, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 4, 2, 1 // tri2 + ), + gsSPNTriangles_5b(2, 5, 0, // tri0 + 5, 6, 0, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(8, 9, 6, // tri0 + 8, 10, 11, // tri1 + 12, 13, 10, // tri2 + 10, 13, 11 // tri3 + ), + gsSPNTriangles_5b(11, 9, 8, // tri0 + 12, 14, 13, // tri1 + 12, 15, 14, // tri2 + 16, 17, 15 // tri3 + ), + gsSPNTriangles_5b(18, 19, 17, // tri0 + 19, 20, 21, // tri1 + 22, 23, 21, // tri2 + 21, 20, 22 // tri3 + ), + gsSPNTriangles_5b(19, 18, 20, // tri0 + 17, 16, 18, // tri1 + 15, 12, 16, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(24, 26, 4, // tri0 + 26, 27, 4, // tri1 + 27, 2, 4, // tri2 + 27, 28, 2 // tri3 + ), + gsSPNTriangles_5b(28, 5, 2, // tri0 + 28, 29, 5, // tri1 + 29, 7, 5, // tri2 + 29, 30, 7 // tri3 + ), + gsSPNTriangles_5b(30, 31, 7, // tri0 + 7, 31, 8, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_e1_r1_1_v[63], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 4, 2, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 3, 6, 5, // tri1 + 5, 6, 7, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 9, 10, 7, // tri1 + 9, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 13, 14, 12, // tri1 + 12, 14, 15, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(17, 19, 18, // tri0 + 19, 20, 18, // tri1 + 21, 22, 23, // tri2 + 17, 16, 23 // tri3 + ), + gsSPNTriangles_5b(16, 24, 23, // tri0 + 24, 25, 23, // tri1 + 23, 25, 21, // tri2 + 26, 27, 22 // tri3 + ), + gsSPNTriangles_5b(22, 21, 26, // tri0 + 28, 29, 30, // tri1 + 27, 30, 29, // tri2 + 27, 26, 30 // tri3 + ), + gsSPNTriangles_5b(29, 28, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_e1_r1_1_v[95], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 2, 1, 3 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(8, 9, 6, // tri0 + 9, 10, 6, // tri1 + 11, 12, 13, // tri2 + 12, 14, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 16, 18, 17, // tri1 + 18, 19, 20, // tri2 + 19, 21, 20 // tri3 + ), + gsSPNTriangles_5b(22, 23, 21, // tri0 + 24, 25, 23, // tri1 + 26, 27, 25, // tri2 + 26, 28, 27 // tri3 + ), + gsSPNTriangles_5b(26, 29, 28, // tri0 + 26, 30, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_e1_r1_1_v[126], 32, 0), + gsSPNTrianglesInit_5b(29, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b(3, 0, 4, // tri0 + 2, 6, 0, // tri1 + 7, 8, 6, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 12, 10, 13, // tri1 + 14, 15, 11, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 18, 16, 19, // tri1 + 20, 17, 21, // tri2 + 3, 22, 1 // tri3 + ), + gsSPNTriangles_5b(5, 23, 3, // tri0 + 3, 23, 22, // tri1 + 2, 24, 25, // tri2 + 2, 1, 24 // tri3 + ), + gsSPNTriangles_5b(1, 22, 24, // tri0 + 25, 24, 26, // tri1 + 24, 27, 26, // tri2 + 28, 29, 7 // tri3 + ), + gsSPNTriangles_5b(29, 26, 27, // tri0 + 29, 28, 26, // tri1 + 7, 30, 9, // tri2 + 9, 31, 13 // tri3 + ), + gsSPNTriangles_5b(9, 30, 31, // tri0 + 7, 29, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_e1_r1_1_v[158], 32, 0), + gsSPNTrianglesInit_5b(31, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b(5, 2, 1, // tri0 + 4, 6, 7, // tri1 + 7, 5, 4, // tri2 + 6, 8, 9 // tri3 + ), + gsSPNTriangles_5b(9, 7, 6, // tri0 + 8, 10, 11, // tri1 + 11, 9, 8, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 14, 15, 16, // tri1 + 16, 17, 18, // tri2 + 18, 14, 16 // tri3 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 18, 17, 19, // tri1 + 19, 21, 20, // tri2 + 21, 22, 20 // tri3 + ), + gsSPNTriangles_5b(21, 23, 22, // tri0 + 22, 24, 25, // tri1 + 25, 26, 27, // tri2 + 27, 28, 3 // tri3 + ), + gsSPNTriangles_5b(3, 29, 1, // tri0 + 22, 23, 24, // tri1 + 25, 24, 26, // tri2 + 27, 26, 28 // tri3 + ), + gsSPNTriangles_5b(3, 28, 29, // tri0 + 29, 30, 4, // tri1 + 4, 1, 29, // tri2 + 30, 31, 4 // tri3 + ), + gsSPVertex(&grd_s_e1_r1_1_v[190], 32, 0), + gsSPNTrianglesInit_5b(34, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 4, 2, 1 // tri2 + ), + gsSPNTriangles_5b(2, 5, 0, // tri0 + 6, 7, 8, // tri1 + 6, 8, 9, // tri2 + 4, 10, 8 // tri3 + ), + gsSPNTriangles_5b(4, 3, 10, // tri0 + 8, 10, 9, // tri1 + 11, 6, 9, // tri2 + 11, 9, 12 // tri3 + ), + gsSPNTriangles_5b(9, 10, 12, // tri0 + 3, 13, 10, // tri1 + 10, 13, 12, // tri2 + 0, 14, 1 // tri3 + ), + gsSPNTriangles_5b(1, 13, 3, // tri0 + 1, 14, 13, // tri1 + 0, 15, 14, // tri2 + 0, 16, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 16, 18, 17, // tri1 + 19, 20, 21, // tri2 + 20, 17, 21 // tri3 + ), + gsSPNTriangles_5b(21, 17, 18, // tri0 + 22, 23, 19, // tri1 + 23, 20, 19, // tri2 + 22, 24, 23 // tri3 + ), + gsSPNTriangles_5b(24, 25, 23, // tri0 + 26, 27, 28, // tri1 + 25, 28, 27, // tri2 + 25, 24, 28 // tri3 + ), + gsSPNTriangles_5b(29, 30, 27, // tri0 + 27, 26, 29, // tri1 + 29, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_e1_r1_1_v[222], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_e1_r1_1_v[226], 30, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 9, // tri1 + 6, 9, 7, // tri2 + 10, 1, 0 // tri3 + ), + gsSPNTriangles_5b(3, 11, 4, // tri0 + 12, 13, 11, // tri1 + 12, 14, 13, // tri2 + 12, 15, 14 // tri3 + ), + gsSPNTriangles_5b(16, 17, 14, // tri0 + 14, 15, 16, // tri1 + 18, 19, 17, // tri2 + 17, 16, 18 // tri3 + ), + gsSPNTriangles_5b(11, 3, 12, // tri0 + 8, 20, 9, // tri1 + 5, 21, 22, // tri2 + 21, 23, 22 // tri3 + ), + gsSPNTriangles_5b(24, 25, 23, // tri0 + 24, 26, 25, // tri1 + 27, 28, 26, // tri2 + 27, 29, 28 // tri3 + ), + gsSPNTriangles_5b(28, 25, 26, // tri0 + 25, 22, 23, // tri1 + 22, 6, 5, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_e1_r1_1_v[256], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 5, 9, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 13, 15, 11, // tri1 + 12, 16, 13, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(17, 12, 18, // tri0 + 12, 20, 18, // tri1 + 12, 11, 20, // tri2 + 19, 18, 21 // tri3 + ), + gsSPNTriangles_5b(21, 18, 22, // tri0 + 23, 24, 25, // tri1 + 26, 27, 24, // tri2 + 27, 28, 29 // tri3 + ), + gsSPNTriangles_5b(27, 29, 25, // tri0 + 24, 27, 25, // tri1 + 30, 28, 27, // tri2 + 30, 31, 28 // tri3 + ), + gsSPVertex(&grd_s_e1_r1_1_v[288], 14, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(6, 7, 4, // tri0 + 5, 8, 9, // tri1 + 9, 3, 5, // tri2 + 3, 9, 10 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 11, 12, 10, // tri1 + 10, 12, 13, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_e1_r1_1/grd_s_e1_r1_1_evw_anime.c b/src/data/field/bg/acre/grd_s_e1_r1_1/grd_s_e1_r1_1_evw_anime.c new file mode 100644 index 00000000..7be2d83a --- /dev/null +++ b/src/data/field/bg/acre/grd_s_e1_r1_1/grd_s_e1_r1_1_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_e1_r1_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_e1_r1_1_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_e1_r1_1_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_e2_1/grd_s_e2_1.c b/src/data/field/bg/acre/grd_s_e2_1/grd_s_e2_1.c new file mode 100644 index 00000000..b571c0e0 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_e2_1/grd_s_e2_1.c @@ -0,0 +1,199 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; + +static Vtx grd_s_e2_1_v[] = { +#include "assets/field/bg/grd_s_e2_1_v.inc" +}; + +extern Gfx grd_s_e2_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_e2_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_e2_1_v[0], 24, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 2, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 7, 8, 5 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 10, 11, 8, // tri2 + 11, 12, 8 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 0, 14, 1, // tri1 + 15, 16, 17, // tri2 + 18, 19, 17 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 18, // tri0 + 22, 23, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_e2_1_v[24], 32, 0), + gsSPNTrianglesInit_5b( + 38, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 3, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 2, 5, // tri0 + 4, 5, 6, // tri1 + 4, 6, 7, // tri2 + 8, 4, 7 // tri3 + ), + gsSPNTriangles_5b( + 9, 8, 7, // tri0 + 9, 7, 10, // tri1 + 9, 10, 11, // tri2 + 12, 9, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 11, 13, // tri0 + 12, 13, 14, // tri1 + 15, 12, 14, // tri2 + 16, 15, 14 // tri3 + ), + gsSPNTriangles_5b( + 16, 14, 17, // tri0 + 16, 17, 18, // tri1 + 19, 16, 18, // tri2 + 20, 19, 18 // tri3 + ), + gsSPNTriangles_5b( + 20, 18, 21, // tri0 + 1, 22, 23, // tri1 + 2, 1, 23, // tri2 + 5, 2, 23 // tri3 + ), + gsSPNTriangles_5b( + 5, 23, 24, // tri0 + 6, 5, 24, // tri1 + 6, 24, 25, // tri2 + 7, 6, 25 // tri3 + ), + gsSPNTriangles_5b( + 7, 25, 26, // tri0 + 10, 7, 26, // tri1 + 10, 26, 27, // tri2 + 11, 10, 27 // tri3 + ), + gsSPNTriangles_5b( + 11, 27, 28, // tri0 + 13, 11, 28, // tri1 + 13, 28, 29, // tri2 + 14, 13, 29 // tri3 + ), + gsSPNTriangles_5b( + 14, 29, 30, // tri0 + 17, 14, 30, // tri1 + 17, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_e2_1_v[56], 32, 0), + gsSPNTrianglesInit_5b( + 36, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 3, 4, // tri0 + 6, 7, 8, // tri1 + 9, 6, 8, // tri2 + 9, 8, 10 // tri3 + ), + gsSPNTriangles_5b( + 11, 9, 10, // tri0 + 11, 10, 12, // tri1 + 13, 11, 12, // tri2 + 13, 12, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 13, 14, // tri0 + 15, 14, 16, // tri1 + 17, 15, 16, // tri2 + 17, 16, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 17, 18, // tri0 + 19, 18, 20, // tri1 + 21, 19, 20, // tri2 + 21, 20, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 21, 22, // tri0 + 1, 23, 22, // tri1 + 1, 22, 24, // tri2 + 2, 1, 24 // tri3 + ), + gsSPNTriangles_5b( + 2, 24, 25, // tri0 + 4, 2, 25, // tri1 + 4, 25, 26, // tri2 + 8, 7, 27 // tri3 + ), + gsSPNTriangles_5b( + 8, 27, 28, // tri0 + 10, 8, 28, // tri1 + 12, 10, 28, // tri2 + 12, 28, 29 // tri3 + ), + gsSPNTriangles_5b( + 14, 12, 29, // tri0 + 14, 29, 30, // tri1 + 16, 14, 30, // tri2 + 18, 16, 30 // tri3 + ), + gsSPNTriangles_5b( + 18, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_e2_1_v[88], 11, 0), + gsSPNTrianglesInit_5b( + 9, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 3, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 2, 5, // tri0 + 6, 4, 5, // tri1 + 6, 5, 7, // tri2 + 8, 6, 7 // tri3 + ), + gsSPNTriangles_5b( + 9, 8, 7, // tri0 + 9, 7, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_e2_c1_1/grd_s_e2_c1_1.c b/src/data/field/bg/acre/grd_s_e2_c1_1/grd_s_e2_c1_1.c new file mode 100644 index 00000000..e9ecedb7 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_e2_c1_1/grd_s_e2_c1_1.c @@ -0,0 +1,193 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; + +static Vtx grd_s_e2_c1_1_v[] = { +#include "assets/field/bg/grd_s_e2_c1_1_v.inc" +}; + +extern Gfx grd_s_e2_c1_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_e2_c1_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_e2_c1_1_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 33, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 1, 0 // tri2 + ), + gsSPNTriangles_5b( + 5, 4, 0, // tri0 + 3, 2, 6, // tri1 + 2, 7, 6, // tri2 + 6, 7, 8 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 10, 9, 11, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 12, 14, 13, // tri1 + 14, 15, 13, // tri2 + 13, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 13, 16, 17, // tri0 + 13, 17, 11, // tri1 + 11, 17, 18, // tri2 + 11, 18, 10 // tri3 + ), + gsSPNTriangles_5b( + 8, 10, 18, // tri0 + 8, 18, 19, // tri1 + 8, 19, 6, // tri2 + 20, 0, 3 // tri3 + ), + gsSPNTriangles_5b( + 21, 5, 0, // tri0 + 21, 0, 20, // tri1 + 6, 19, 20, // tri2 + 6, 20, 3 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 24, // tri0 + 22, 24, 25, // tri1 + 22, 25, 26, // tri2 + 24, 27, 25 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 25, // tri0 + 28, 29, 25, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_e2_c1_1_v[30], 32, 0), + gsSPNTrianglesInit_5b( + 37, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 0, 2, // tri0 + 2, 6, 5, // tri1 + 6, 2, 4, // tri2 + 7, 4, 3 // tri3 + ), + gsSPNTriangles_5b( + 8, 7, 3, // tri0 + 7, 9, 6, // tri1 + 7, 6, 4, // tri2 + 10, 11, 8 // tri3 + ), + gsSPNTriangles_5b( + 7, 8, 11, // tri0 + 12, 11, 10, // tri1 + 13, 11, 12, // tri2 + 11, 13, 9 // tri3 + ), + gsSPNTriangles_5b( + 9, 7, 11, // tri0 + 12, 10, 14, // tri1 + 14, 13, 12, // tri2 + 14, 15, 13 // tri3 + ), + gsSPNTriangles_5b( + 15, 14, 16, // tri0 + 16, 17, 15, // tri1 + 17, 16, 18, // tri2 + 19, 20, 17 // tri3 + ), + gsSPNTriangles_5b( + 19, 17, 18, // tri0 + 21, 22, 23, // tri1 + 24, 21, 23, // tri2 + 21, 24, 20 // tri3 + ), + gsSPNTriangles_5b( + 20, 19, 21, // tri0 + 25, 23, 22, // tri1 + 25, 22, 26, // tri2 + 26, 27, 25 // tri3 + ), + gsSPNTriangles_5b( + 28, 25, 27, // tri0 + 25, 24, 23, // tri1 + 25, 28, 24, // tri2 + 29, 15, 17 // tri3 + ), + gsSPNTriangles_5b( + 30, 17, 20, // tri0 + 17, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_e2_c1_1_v[62], 15, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 1, 0, 3, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 1, 4, 5, // tri0 + 6, 7, 2, // tri1 + 7, 0, 2, // tri2 + 7, 8, 0 // tri3 + ), + gsSPNTriangles_5b( + 7, 6, 9, // tri0 + 10, 9, 11, // tri1 + 11, 12, 10, // tri2 + 7, 9, 10 // tri3 + ), + gsSPNTriangles_5b( + 8, 7, 10, // tri0 + 10, 13, 14, // tri1 + 10, 14, 8, // tri2 + 13, 10, 12 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_e2_c1_1_v[77], 25, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 11, 12, 8, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 13, // tri0 + 0, 18, 1, // tri1 + 3, 19, 2, // tri2 + 19, 20, 2 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 20, // tri0 + 4, 22, 5, // tri1 + 23, 7, 5, // tri2 + 7, 24, 6 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_e2_m_1/grd_s_e2_m_1.c b/src/data/field/bg/acre/grd_s_e2_m_1/grd_s_e2_m_1.c new file mode 100644 index 00000000..5393858e --- /dev/null +++ b/src/data/field/bg/acre/grd_s_e2_m_1/grd_s_e2_m_1.c @@ -0,0 +1,230 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; + +static Vtx grd_s_e2_m_1_v[] = { +#include "assets/field/bg/grd_s_e2_m_1_v.inc" +}; + +extern Gfx grd_s_e2_m_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_e2_m_1_v[90], 7, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 1, 6, // tri0 + 3, 1, 5, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_e2_m_1_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 3, 4, // tri0 + 5, 4, 6, // tri1 + 7, 5, 6, // tri2 + 7, 6, 8 // tri3 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 7, 9, // tri1 + 11, 10, 9, // tri2 + 11, 9, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 11, 12, // tri0 + 13, 12, 14, // tri1 + 15, 13, 14, // tri2 + 16, 17, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 15, 14, // tri0 + 18, 19, 20, // tri1 + 18, 20, 21, // tri2 + 22, 18, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 21, 23, // tri0 + 24, 22, 23, // tri1 + 24, 23, 25, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b( + 27, 24, 26, // tri0 + 28, 27, 26, // tri1 + 28, 26, 29, // tri2 + 30, 28, 29 // tri3 + ), + gsSPNTriangles_5b( + 31, 30, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_e2_m_1_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 32, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 3, 2, 5, // tri0 + 6, 7, 8, // tri1 + 9, 6, 8, // tri2 + 9, 8, 10 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 12, 9, 11, // tri1 + 12, 11, 13, // tri2 + 14, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 13, 15, // tri0 + 14, 15, 16, // tri1 + 14, 16, 0, // tri2 + 17, 14, 0 // tri3 + ), + gsSPNTriangles_5b( + 17, 0, 3, // tri0 + 18, 17, 3, // tri1 + 18, 3, 5, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 22, // tri0 + 23, 19, 22, // tri1 + 23, 22, 24, // tri2 + 25, 23, 24 // tri3 + ), + gsSPNTriangles_5b( + 25, 24, 26, // tri0 + 25, 26, 27, // tri1 + 28, 25, 27, // tri2 + 28, 27, 29 // tri3 + ), + gsSPNTriangles_5b( + 1, 28, 29, // tri0 + 1, 29, 30, // tri1 + 2, 1, 30, // tri2 + 2, 30, 31 // tri3 + ), + gsSPNTriangles_5b( + 4, 2, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_e2_m_1_v[64], 3, 0), + gsSPNTrianglesInit_5b( + 1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_e2_m_1_v[67], 10, 0), + gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 1, // tri0 + 6, 7, 5, // tri1 + 8, 9, 7, // tri2 + 7, 6, 8 // tri3 + ), + gsSPNTriangles_5b( + 5, 4, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_e2_m_1_v[77], 13, 0), + gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 5, 8, 9, // tri1 + 5, 9, 10, // tri2 + 11, 5, 10 // tri3 + ), + gsSPNTriangles_5b( + 12, 11, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_e2_m_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_e2_m_1_v[97], 3, 0), + gsSPNTrianglesInit_5b( + 1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_e2_m_1_v[100], 5, 0), + gsSPNTrianglesInit_5b( + 3, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 0, 2, 3 // tri2 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_e2_o_1/grd_s_e2_o_1.c b/src/data/field/bg/acre/grd_s_e2_o_1/grd_s_e2_o_1.c new file mode 100644 index 00000000..e7664e13 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_e2_o_1/grd_s_e2_o_1.c @@ -0,0 +1,96 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_e2_o_1_v[] = { +#include "assets/field/bg/grd_s_e2_o_1_v.inc" +}; + +extern Gfx grd_s_e2_o_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_e2_o_1_v[0], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 3, 4, 0 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 0, // tri0 + 2, 6, 3, // tri1 + 6, 4, 3, // tri2 + 6, 7, 4 // tri3 + ), + gsSPNTriangles_5b( + 2, 8, 6, // tri0 + 9, 10, 11, // tri1 + 11, 8, 2, // tri2 + 11, 2, 12 // tri3 + ), + gsSPNTriangles_5b( + 9, 11, 12, // tri0 + 2, 1, 13, // tri1 + 12, 2, 13, // tri2 + 9, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_e2_o_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_e2_o_1_v[15], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 3, 4, 0 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 0, // tri0 + 2, 6, 3, // tri1 + 6, 4, 3, // tri2 + 6, 7, 4 // tri3 + ), + gsSPNTriangles_5b( + 2, 8, 6, // tri0 + 4, 7, 9, // tri1 + 9, 10, 11, // tri2 + 9, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 4, 9, 12, // tri0 + 11, 13, 14, // tri1 + 12, 11, 14, // tri2 + 4, 12, 14 // tri3 + ), + gsSPNTriangles_5b( + 14, 5, 4, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_e2_t_1/grd_s_e2_t_1.c b/src/data/field/bg/acre/grd_s_e2_t_1/grd_s_e2_t_1.c new file mode 100644 index 00000000..85fe2f12 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_e2_t_1/grd_s_e2_t_1.c @@ -0,0 +1,258 @@ +#include "libforest/gbi_extensions.h" + +extern u8 tunnel_tex_dummy[]; +extern u8 rail_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 station_pal_dummy[]; +extern u8 rail_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; + +static Vtx grd_s_e2_t_1_v[] = { +#include "assets/field/bg/grd_s_e2_t_1_v.inc" +}; + +extern Gfx grd_s_e2_t_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_e2_t_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_e2_t_1_v[0], 21, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 6, 7, 5, // tri1 + 5, 7, 4, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b( + 11, 9, 8, // tri0 + 12, 8, 10, // tri1 + 13, 10, 7, // tri2 + 12, 10, 13 // tri3 + ), + gsSPNTriangles_5b( + 7, 6, 13, // tri0 + 14, 15, 16, // tri1 + 17, 18, 14, // tri2 + 19, 20, 17 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_e2_t_1_v[21], 32, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 2, 3, 4 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 3, // tri0 + 2, 4, 6, // tri1 + 4, 7, 6, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b( + 9, 11, 10, // tri0 + 12, 13, 14, // tri1 + 15, 16, 12, // tri2 + 14, 15, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 17, 14, // tri0 + 18, 17, 13, // tri1 + 16, 15, 19, // tri2 + 19, 15, 20 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 11, // tri0 + 21, 10, 11, // tri1 + 11, 19, 20, // tri2 + 17, 18, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 17, 22, // tri0 + 24, 21, 25, // tri1 + 10, 21, 24, // tri2 + 23, 22, 26 // tri3 + ), + gsSPNTriangles_5b( + 25, 27, 24, // tri0 + 28, 29, 30, // tri1 + 30, 29, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_e2_t_1_v[53], 32, 0), + gsSPNTrianglesInit_5b( + 35, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b( + 5, 0, 6, // tri0 + 7, 1, 5, // tri1 + 5, 1, 0, // tri2 + 7, 8, 1 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 10, 11, 8, // tri1 + 12, 11, 10, // tri2 + 10, 8, 9 // tri3 + ), + gsSPNTriangles_5b( + 13, 0, 14, // tri0 + 13, 6, 0, // tri1 + 15, 16, 17, // tri2 + 15, 18, 16 // tri3 + ), + gsSPNTriangles_5b( + 15, 19, 18, // tri0 + 13, 14, 20, // tri1 + 21, 22, 8, // tri2 + 11, 23, 21 // tri3 + ), + gsSPNTriangles_5b( + 8, 11, 21, // tri0 + 22, 1, 8, // tri1 + 3, 1, 22, // tri2 + 23, 11, 24 // tri3 + ), + gsSPNTriangles_5b( + 24, 11, 16, // tri0 + 16, 18, 25, // tri1 + 18, 26, 25, // tri2 + 25, 24, 16 // tri3 + ), + gsSPNTriangles_5b( + 2, 3, 27, // tri0 + 2, 27, 28, // tri1 + 4, 28, 29, // tri2 + 2, 28, 4 // tri3 + ), + gsSPNTriangles_5b( + 4, 29, 30, // tri0 + 22, 27, 3, // tri1 + 21, 31, 22, // tri2 + 22, 31, 27 // tri3 + ), + gsSPVertex(&grd_s_e2_t_1_v[85], 21, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 7, // tri0 + 8, 7, 1, // tri1 + 4, 7, 8, // tri2 + 8, 1, 3 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 10, 12, 11, // tri1 + 11, 12, 13, // tri2 + 11, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 6, 5, // tri0 + 15, 16, 6, // tri1 + 17, 18, 16, // tri2 + 17, 19, 18 // tri3 + ), + gsSPNTriangles_5b( + 5, 20, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, station_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(tunnel_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_e2_t_1_v[106], 32, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 8, 2, 9, // tri1 + 2, 3, 9, // tri2 + 10, 11, 5 // tri3 + ), + gsSPNTriangles_5b( + 11, 7, 5, // tri0 + 12, 13, 14, // tri1 + 13, 15, 14, // tri2 + 16, 15, 17 // tri3 + ), + gsSPNTriangles_5b( + 15, 13, 17, // tri0 + 16, 18, 15, // tri1 + 19, 16, 20, // tri2 + 16, 17, 20 // tri3 + ), + gsSPNTriangles_5b( + 21, 20, 22, // tri0 + 21, 19, 20, // tri1 + 23, 21, 24, // tri2 + 21, 22, 24 // tri3 + ), + gsSPNTriangles_5b( + 25, 24, 26, // tri0 + 25, 23, 24, // tri1 + 27, 28, 29, // tri2 + 28, 1, 0 // tri3 + ), + gsSPNTriangles_5b( + 4, 6, 29, // tri0 + 29, 6, 27, // tri1 + 28, 27, 1, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_e2_t_1_v[136], 8, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 1, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(rail_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_e2_t_1_v[144], 8, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 3, 4, // tri0 + 6, 5, 4, // tri1 + 6, 4, 7, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_e3_1/grd_s_e3_1.c b/src/data/field/bg/acre/grd_s_e3_1/grd_s_e3_1.c new file mode 100644 index 00000000..62145869 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_e3_1/grd_s_e3_1.c @@ -0,0 +1,187 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; + +static Vtx grd_s_e3_1_v[] = { +#include "assets/field/bg/grd_s_e3_1_v.inc" +}; + +extern Gfx grd_s_e3_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_e3_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_e3_1_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 3, // tri0 + 0, 6, 5, // tri1 + 6, 7, 5, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 7, // tri0 + 8, 10, 9, // tri1 + 8, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 11, 14, 13, // tri1 + 14, 15, 13, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 14, 17, 16, // tri0 + 17, 18, 16, // tri1 + 17, 19, 18, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 20, // tri0 + 22, 23, 24, // tri1 + 22, 25, 23, // tri2 + 25, 26, 23 // tri3 + ), + gsSPNTriangles_5b( + 25, 27, 26, // tri0 + 25, 28, 27, // tri1 + 28, 29, 27, // tri2 + 28, 30, 29 // tri3 + ), + gsSPNTriangles_5b( + 30, 31, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_e3_1_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 34, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 11, // tri0 + 14, 15, 16, // tri1 + 15, 17, 16, // tri2 + 15, 18, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 17, // tri0 + 19, 20, 17, // tri1 + 19, 21, 20, // tri2 + 21, 22, 20 // tri3 + ), + gsSPNTriangles_5b( + 21, 2, 22, // tri0 + 2, 23, 22, // tri1 + 2, 3, 23, // tri2 + 3, 5, 23 // tri3 + ), + gsSPNTriangles_5b( + 5, 24, 23, // tri0 + 5, 6, 24, // tri1 + 6, 8, 24, // tri2 + 8, 25, 24 // tri3 + ), + gsSPNTriangles_5b( + 8, 10, 25, // tri0 + 10, 26, 25, // tri1 + 10, 11, 26, // tri2 + 11, 27, 26 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 27, // tri0 + 28, 29, 30, // tri1 + 29, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_e3_1_v[64], 19, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 6, // tri0 + 8, 10, 9, // tri1 + 10, 11, 9, // tri2 + 11, 12, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 13, 14, 12, // tri1 + 13, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 14, // tri0 + 16, 18, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_e3_1_v[83], 22, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 7, 8, 9, // tri1 + 8, 10, 9, // tri2 + 4, 6, 5 // tri3 + ), + gsSPNTriangles_5b( + 11, 3, 0, // tri0 + 11, 4, 3, // tri1 + 6, 12, 7, // tri2 + 12, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 16, 17, 15, // tri1 + 18, 19, 16, // tri2 + 20, 21, 18 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_e3_c1_1/grd_s_e3_c1_1.c b/src/data/field/bg/acre/grd_s_e3_c1_1/grd_s_e3_c1_1.c new file mode 100644 index 00000000..d53c75f1 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_e3_c1_1/grd_s_e3_c1_1.c @@ -0,0 +1,199 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; + +static Vtx grd_s_e3_c1_1_v[] = { +#include "assets/field/bg/grd_s_e3_c1_1_v.inc" +}; + +extern Gfx grd_s_e3_c1_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_e3_c1_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_e3_c1_1_v[0], 27, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 3, // tri0 + 5, 6, 3, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 10, 12, 11, // tri1 + 13, 14, 9, // tri2 + 14, 15, 9 // tri3 + ), + gsSPNTriangles_5b( + 15, 10, 9, // tri0 + 14, 16, 15, // tri1 + 17, 18, 19, // tri2 + 18, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 24, // tri0 + 25, 26, 22, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_e3_c1_1_v[27], 32, 0), + gsSPNTrianglesInit_5b( + 37, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 5, 7, // tri0 + 8, 6, 7, // tri1 + 9, 8, 7, // tri2 + 9, 7, 10 // tri3 + ), + gsSPNTriangles_5b( + 11, 9, 10, // tri0 + 11, 10, 12, // tri1 + 11, 12, 13, // tri2 + 14, 11, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 13, 15, // tri0 + 16, 14, 15, // tri1 + 16, 15, 17, // tri2 + 16, 17, 0 // tri3 + ), + gsSPNTriangles_5b( + 16, 0, 2, // tri0 + 10, 18, 19, // tri1 + 12, 10, 19, // tri2 + 13, 12, 19 // tri3 + ), + gsSPNTriangles_5b( + 13, 19, 20, // tri0 + 15, 13, 20, // tri1 + 17, 15, 20, // tri2 + 17, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 0, 17, 21, // tri0 + 0, 21, 22, // tri1 + 1, 0, 22, // tri2 + 18, 10, 7 // tri3 + ), + gsSPNTriangles_5b( + 23, 18, 7, // tri0 + 23, 7, 5, // tri1 + 23, 5, 4, // tri2 + 24, 23, 4 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 27, // tri0 + 25, 27, 28, // tri1 + 29, 25, 28, // tri2 + 29, 28, 30 // tri3 + ), + gsSPNTriangles_5b( + 31, 29, 30, // tri0 + 31, 30, 8, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_e3_c1_1_v[59], 32, 0), + gsSPNTrianglesInit_5b( + 38, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b( + 5, 4, 3, // tri0 + 5, 3, 6, // tri1 + 7, 5, 6, // tri2 + 7, 6, 8 // tri3 + ), + gsSPNTriangles_5b( + 9, 7, 8, // tri0 + 10, 9, 8, // tri1 + 10, 8, 11, // tri2 + 12, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 11, 13, // tri0 + 14, 12, 13, // tri1 + 15, 16, 17, // tri2 + 15, 17, 18 // tri3 + ), + gsSPNTriangles_5b( + 15, 18, 19, // tri0 + 20, 15, 19, // tri1 + 20, 19, 1, // tri2 + 21, 20, 1 // tri3 + ), + gsSPNTriangles_5b( + 21, 1, 0, // tri0 + 22, 21, 0, // tri1 + 22, 0, 4, // tri2 + 23, 22, 4 // tri3 + ), + gsSPNTriangles_5b( + 23, 4, 5, // tri0 + 23, 5, 7, // tri1 + 24, 23, 7, // tri2 + 24, 7, 9 // tri3 + ), + gsSPNTriangles_5b( + 25, 24, 9, // tri0 + 25, 9, 10, // tri1 + 25, 10, 12, // tri2 + 26, 25, 12 // tri3 + ), + gsSPNTriangles_5b( + 26, 12, 14, // tri0 + 27, 28, 16, // tri1 + 27, 16, 15, // tri2 + 29, 30, 20 // tri3 + ), + gsSPNTriangles_5b( + 29, 20, 21, // tri0 + 31, 29, 21, // tri1 + 22, 31, 21, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_e3_c1_1_v[91], 12, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 2, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 0, 2, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 5, 6, 8 // tri3 + ), + gsSPNTriangles_5b( + 4, 5, 8, // tri0 + 2, 10, 11, // tri1 + 5, 2, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_e3_m_1/grd_s_e3_m_1.c b/src/data/field/bg/acre/grd_s_e3_m_1/grd_s_e3_m_1.c new file mode 100644 index 00000000..47cf7301 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_e3_m_1/grd_s_e3_m_1.c @@ -0,0 +1,223 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; + +static Vtx grd_s_e3_m_1_v[] = { +#include "assets/field/bg/grd_s_e3_m_1_v.inc" +}; + +extern Gfx grd_s_e3_m_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_e3_m_1_v[106], 7, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 3, 6, // tri0 + 3, 1, 6, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_e3_m_1_v[0], 14, 0), + gsSPNTrianglesInit_5b( + 9, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 9, 5, 8, // tri1 + 10, 9, 8, // tri2 + 11, 10, 8 // tri3 + ), + gsSPNTriangles_5b( + 11, 8, 12, // tri0 + 11, 12, 13, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_e3_m_1_v[14], 9, 0), + gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 1 // tri2 + ), + gsSPNTriangles_5b( + 3, 4, 1, // tri0 + 6, 7, 5, // tri1 + 5, 4, 6, // tri2 + 6, 8, 7 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_e3_m_1_v[23], 32, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b( + 0, 2, 5, // tri0 + 4, 5, 6, // tri1 + 7, 4, 6, // tri2 + 7, 6, 8 // tri3 + ), + gsSPNTriangles_5b( + 9, 7, 8, // tri0 + 9, 8, 10, // tri1 + 11, 12, 13, // tri2 + 14, 11, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 13, 15, // tri0 + 14, 15, 16, // tri1 + 17, 14, 16, // tri2 + 18, 17, 16 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 21, // tri0 + 19, 21, 22, // tri1 + 23, 19, 22, // tri2 + 23, 22, 24 // tri3 + ), + gsSPNTriangles_5b( + 25, 23, 24, // tri0 + 25, 24, 26, // tri1 + 27, 25, 26, // tri2 + 27, 26, 28 // tri3 + ), + gsSPNTriangles_5b( + 29, 28, 30, // tri0 + 29, 27, 28, // tri1 + 29, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_e3_m_1_v[55], 32, 0), + gsSPNTrianglesInit_5b( + 32, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 0, 3, 5, // tri0 + 6, 7, 8, // tri1 + 6, 8, 9, // tri2 + 10, 6, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 9, 11, // tri0 + 12, 10, 11, // tri1 + 12, 11, 13, // tri2 + 14, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 15, 14, 13, // tri0 + 15, 13, 16, // tri1 + 2, 15, 16, // tri2 + 2, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 3, 2, 17, // tri0 + 3, 17, 18, // tri1 + 4, 3, 18, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 19, 21, // tri0 + 22, 21, 23, // tri1 + 24, 22, 23, // tri2 + 25, 24, 23 // tri3 + ), + gsSPNTriangles_5b( + 25, 23, 26, // tri0 + 27, 25, 26, // tri1 + 28, 27, 26, // tri2 + 28, 26, 1 // tri3 + ), + gsSPNTriangles_5b( + 29, 28, 1, // tri0 + 29, 1, 0, // tri1 + 30, 31, 29, // tri2 + 30, 29, 0 // tri3 + ), + gsSPNTriangles_5b( + 30, 0, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_e3_m_1_v[87], 11, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 5 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 7, 9, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_e3_m_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_e3_m_1_v[98], 3, 0), + gsSPNTrianglesInit_5b( + 1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_e3_m_1_v[101], 5, 0), + gsSPNTrianglesInit_5b( + 3, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 3, 4, 2 // tri2 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_e3_o_1/grd_s_e3_o_1.c b/src/data/field/bg/acre/grd_s_e3_o_1/grd_s_e3_o_1.c new file mode 100644 index 00000000..d409eb4c --- /dev/null +++ b/src/data/field/bg/acre/grd_s_e3_o_1/grd_s_e3_o_1.c @@ -0,0 +1,96 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_e3_o_1_v[] = { +#include "assets/field/bg/grd_s_e3_o_1_v.inc" +}; + +extern Gfx grd_s_e3_o_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_e3_o_1_v[0], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 3, 4, 0 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 0, // tri0 + 2, 6, 3, // tri1 + 6, 4, 3, // tri2 + 6, 7, 4 // tri3 + ), + gsSPNTriangles_5b( + 2, 8, 6, // tri0 + 9, 10, 11, // tri1 + 11, 8, 2, // tri2 + 11, 2, 12 // tri3 + ), + gsSPNTriangles_5b( + 9, 11, 12, // tri0 + 2, 1, 13, // tri1 + 12, 2, 13, // tri2 + 9, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_e3_o_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_e3_o_1_v[15], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 3, 4, 0 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 0, // tri0 + 2, 6, 3, // tri1 + 6, 4, 3, // tri2 + 6, 7, 4 // tri3 + ), + gsSPNTriangles_5b( + 2, 8, 6, // tri0 + 4, 7, 9, // tri1 + 9, 10, 11, // tri2 + 9, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 4, 9, 12, // tri0 + 11, 13, 14, // tri1 + 12, 11, 14, // tri2 + 4, 12, 14 // tri3 + ), + gsSPNTriangles_5b( + 14, 5, 4, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_e3_t_1/grd_s_e3_t_1.c b/src/data/field/bg/acre/grd_s_e3_t_1/grd_s_e3_t_1.c new file mode 100644 index 00000000..09d8a323 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_e3_t_1/grd_s_e3_t_1.c @@ -0,0 +1,258 @@ +#include "libforest/gbi_extensions.h" + +extern u8 tunnel_tex_dummy[]; +extern u8 rail_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 station_pal_dummy[]; +extern u8 rail_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; + +static Vtx grd_s_e3_t_1_v[] = { +#include "assets/field/bg/grd_s_e3_t_1_v.inc" +}; + +extern Gfx grd_s_e3_t_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_e3_t_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_e3_t_1_v[0], 21, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 6, 7, 5, // tri1 + 4, 5, 7, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 8, // tri0 + 7, 8, 10, // tri1 + 9, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 14, 15, 16, // tri1 + 17, 18, 14, // tri2 + 19, 20, 17 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_e3_t_1_v[21], 32, 0), + gsSPNTrianglesInit_5b( + 35, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 7, 5, // tri0 + 7, 8, 5, // tri1 + 7, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b( + 9, 11, 10, // tri0 + 11, 12, 10, // tri1 + 11, 13, 12, // tri2 + 11, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 13, // tri0 + 14, 16, 15, // tri1 + 16, 17, 15, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b( + 16, 19, 18, // tri0 + 6, 5, 20, // tri1 + 5, 21, 20, // tri2 + 5, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 5, 8, 22, // tri0 + 8, 23, 22, // tri1 + 8, 10, 23, // tri2 + 10, 12, 23 // tri3 + ), + gsSPNTriangles_5b( + 12, 24, 23, // tri0 + 12, 25, 24, // tri1 + 12, 13, 25, // tri2 + 13, 15, 25 // tri3 + ), + gsSPNTriangles_5b( + 15, 26, 25, // tri0 + 15, 27, 26, // tri1 + 15, 17, 27, // tri2 + 17, 28, 27 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 28, // tri0 + 18, 29, 28, // tri1 + 2, 30, 31, // tri2 + 2, 3, 30 // tri3 + ), + gsSPVertex(&grd_s_e3_t_1_v[53], 32, 0), + gsSPNTrianglesInit_5b( + 39, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 7, // tri0 + 8, 10, 9, // tri1 + 10, 11, 9, // tri2 + 11, 12, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 13, 14, 12, // tri1 + 14, 15, 12, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 15, // tri0 + 17, 18, 15, // tri1 + 17, 19, 18, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 20, // tri0 + 22, 21, 23, // tri1 + 21, 19, 23, // tri2 + 19, 24, 23 // tri3 + ), + gsSPNTriangles_5b( + 19, 17, 24, // tri0 + 17, 25, 24, // tri1 + 17, 16, 25, // tri2 + 16, 26, 25 // tri3 + ), + gsSPNTriangles_5b( + 16, 14, 26, // tri0 + 14, 13, 26, // tri1 + 13, 27, 26, // tri2 + 13, 28, 27 // tri3 + ), + gsSPNTriangles_5b( + 13, 11, 28, // tri0 + 11, 29, 28, // tri1 + 11, 10, 29, // tri2 + 10, 30, 29 // tri3 + ), + gsSPNTriangles_5b( + 10, 8, 30, // tri0 + 8, 31, 30, // tri1 + 8, 6, 31, // tri2 + 6, 4, 31 // tri3 + ), + gsSPVertex(&grd_s_e3_t_1_v[85], 7, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, station_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(tunnel_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_e3_t_1_v[92], 32, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 7, 5, // tri0 + 8, 0, 9, // tri1 + 8, 3, 0, // tri2 + 5, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 5, 7, 10, // tri0 + 12, 13, 14, // tri1 + 12, 15, 13, // tri2 + 16, 15, 17 // tri3 + ), + gsSPNTriangles_5b( + 16, 13, 15, // tri0 + 15, 18, 17, // tri1 + 19, 17, 20, // tri2 + 19, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 21, 19, 22, // tri0 + 19, 20, 22, // tri1 + 23, 22, 24, // tri2 + 23, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 25, 23, 26, // tri0 + 23, 24, 26, // tri1 + 27, 28, 29, // tri2 + 2, 1, 28 // tri3 + ), + gsSPNTriangles_5b( + 27, 4, 6, // tri0 + 29, 4, 27, // tri1 + 1, 29, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_e3_t_1_v[122], 8, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(rail_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_e3_t_1_v[130], 8, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 3, 4, // tri0 + 6, 5, 4, // tri1 + 6, 4, 7, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_e4_1/grd_s_e4_1.c b/src/data/field/bg/acre/grd_s_e4_1/grd_s_e4_1.c new file mode 100644 index 00000000..158edd7f --- /dev/null +++ b/src/data/field/bg/acre/grd_s_e4_1/grd_s_e4_1.c @@ -0,0 +1,65 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; + +static Vtx grd_s_e4_1_v[] = { +#include "assets/field/bg/grd_s_e4_1_v.inc" +}; + +extern Gfx grd_s_e4_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_e4_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_e4_1_v[0], 7, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_e4_1_v[7], 15, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 1, 7, 8, // tri2 + 1, 8, 2 // tri3 + ), + gsSPNTriangles_5b( + 6, 9, 10, // tri0 + 6, 10, 4, // tri1 + 1, 4, 10, // tri2 + 1, 10, 7 // tri3 + ), + gsSPNTriangles_5b( + 0, 11, 3, // tri0 + 3, 12, 5, // tri1 + 3, 11, 12, // tri2 + 11, 13, 14 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_e5_1/grd_s_e5_1.c b/src/data/field/bg/acre/grd_s_e5_1/grd_s_e5_1.c new file mode 100644 index 00000000..20feeed1 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_e5_1/grd_s_e5_1.c @@ -0,0 +1,71 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; + +static Vtx grd_s_e5_1_v[] = { +#include "assets/field/bg/grd_s_e5_1_v.inc" +}; + +extern Gfx grd_s_e5_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_e5_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_e5_1_v[0], 8, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b( + 5, 4, 3, // tri0 + 5, 3, 6, // tri1 + 5, 6, 7, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_e5_1_v[8], 16, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 1, 5, 2 // tri2 + ), + gsSPNTriangles_5b( + 0, 4, 1, // tri0 + 3, 6, 4, // tri1 + 2, 7, 0, // tri2 + 0, 8, 3 // tri3 + ), + gsSPNTriangles_5b( + 0, 7, 8, // tri0 + 7, 9, 10, // tri1 + 1, 11, 12, // tri2 + 1, 12, 5 // tri3 + ), + gsSPNTriangles_5b( + 1, 13, 11, // tri0 + 13, 4, 14, // tri1 + 14, 4, 6, // tri2 + 14, 6, 15 // tri3 + ), + gsSPNTriangles_5b( + 13, 1, 4, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_f_1/grd_s_f_1.c b/src/data/field/bg/acre/grd_s_f_1/grd_s_f_1.c new file mode 100644 index 00000000..cbc59bac --- /dev/null +++ b/src/data/field/bg/acre/grd_s_f_1/grd_s_f_1.c @@ -0,0 +1,239 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_f_1_v[] = { +#include "assets/field/bg/grd_s_f_1_v.inc" +}; + +extern Gfx grd_s_f_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_f_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_f_1_v[146], 32, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 3, 4, 6, // tri0 + 8, 9, 10, // tri1 + 9, 5, 7, // tri2 + 11, 8, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 11, 14, // tri0 + 13, 14, 15, // tri1 + 16, 17, 18, // tri2 + 17, 13, 15 // tri3 + ), + gsSPNTriangles_5b( + 19, 16, 20, // tri0 + 21, 19, 22, // tri1 + 16, 18, 20, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 23, 27, // tri0 + 28, 26, 29, // tri1 + 30, 28, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_1_v[178], 5, 0), + gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 0, 0, 0 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_f_1_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 25, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 4, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 8, 10, 9, // tri1 + 8, 7, 11, // tri2 + 7, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 13, 16, 14, // tri1 + 17, 10, 18, // tri2 + 10, 19, 18 // tri3 + ), + gsSPNTriangles_5b( + 1, 20, 2, // tri0 + 21, 22, 0, // tri1 + 16, 13, 22, // tri2 + 14, 19, 15 // tri3 + ), + gsSPNTriangles_5b( + 12, 23, 11, // tri0 + 24, 25, 23, // tri1 + 26, 27, 28, // tri2 + 20, 3, 29 // tri3 + ), + gsSPNTriangles_5b( + 26, 6, 27, // tri0 + 6, 4, 27, // tri1 + 24, 23, 12, // tri2 + 30, 28, 25 // tri3 + ), + gsSPNTriangles_5b( + 2, 20, 31, // tri0 + 20, 29, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_1_v[32], 31, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 2, 3, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 9, 6, // tri1 + 9, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 18, 19, 12, // tri1 + 20, 21, 15, // tri2 + 22, 19, 18 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 22, // tri0 + 24, 19, 22, // tri1 + 25, 26, 27, // tri2 + 27, 26, 28 // tri3 + ), + gsSPNTriangles_5b( + 26, 23, 28, // tri0 + 29, 25, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_1_v[63], 32, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 4 // tri2 + ), + gsSPNTriangles_5b( + 8, 3, 5, // tri0 + 9, 10, 11, // tri1 + 12, 13, 14, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 17, 13, // tri0 + 18, 15, 17, // tri1 + 10, 12, 14, // tri2 + 10, 14, 11 // tri3 + ), + gsSPNTriangles_5b( + 9, 11, 19, // tri0 + 0, 8, 1, // tri1 + 3, 6, 4, // tri2 + 20, 21, 7 // tri3 + ), + gsSPNTriangles_5b( + 22, 19, 21, // tri0 + 23, 24, 16, // tri1 + 25, 26, 24, // tri2 + 27, 28, 29 // tri3 + ), + gsSPNTriangles_5b( + 30, 27, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_1_v[95], 10, 0), + gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 6, 8, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_1_v[105], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 5, 9, // tri0 + 10, 8, 11, // tri1 + 12, 13, 14, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 12, 19, // tri0 + 6, 20, 21, // tri1 + 20, 22, 21, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 22, // tri0 + 16, 26, 17, // tri1 + 23, 15, 24, // tri2 + 27, 10, 28 // tri3 + ), + gsSPNTriangles_5b( + 29, 27, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_1_v[136], 10, 0), + gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 6, 8, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_f_10/grd_s_f_10.c b/src/data/field/bg/acre/grd_s_f_10/grd_s_f_10.c new file mode 100644 index 00000000..6d596c9d --- /dev/null +++ b/src/data/field/bg/acre/grd_s_f_10/grd_s_f_10.c @@ -0,0 +1,221 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_f_10_v[] = { +#include "assets/field/bg/grd_s_f_10_v.inc" +}; + +extern Gfx grd_s_f_10_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_f_10_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_f_10_v[172], 22, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 12, 13, // tri2 + 14, 11, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 14, 17, // tri0 + 18, 16, 19, // tri1 + 20, 18, 21, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_f_10_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 4, 5, 1 // tri2 + ), + gsSPNTriangles_5b( + 6, 5, 7, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 9, // tri0 + 15, 16, 14, // tri1 + 17, 18, 16, // tri2 + 17, 19, 18 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 19, // tri0 + 22, 21, 23, // tri1 + 24, 25, 26, // tri2 + 25, 22, 26 // tri3 + ), + gsSPNTriangles_5b( + 24, 27, 25, // tri0 + 28, 29, 27, // tri1 + 30, 29, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_10_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 10, 12, 13, // tri1 + 13, 12, 14, // tri2 + 12, 15, 14 // tri3 + ), + gsSPNTriangles_5b( + 14, 2, 1, // tri0 + 0, 2, 16, // tri1 + 16, 17, 18, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 24, // tri0 + 14, 15, 3, // tri1 + 15, 4, 3, // tri2 + 25, 26, 27 // tri3 + ), + gsSPNTriangles_5b( + 26, 4, 15, // tri0 + 26, 28, 4, // tri1 + 25, 29, 30, // tri2 + 30, 26, 25 // tri3 + ), + gsSPNTriangles_5b( + 28, 26, 30, // tri0 + 25, 31, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_10_v[64], 16, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 13, 14, 15, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_10_v[80], 32, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 8, 6, 10, // tri1 + 11, 12, 13, // tri2 + 14, 11, 15 // tri3 + ), + gsSPNTriangles_5b( + 12, 16, 17, // tri0 + 16, 18, 19, // tri1 + 20, 21, 22, // tri2 + 21, 14, 23 // tri3 + ), + gsSPNTriangles_5b( + 24, 25, 26, // tri0 + 27, 24, 28, // tri1 + 25, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_10_v[111], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 5, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 1, 11, 12, // tri1 + 13, 14, 15, // tri2 + 16, 17, 14 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 20, // tri0 + 16, 18, 17, // tri1 + 11, 13, 15, // tri2 + 13, 16, 14 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 23, // tri0 + 21, 24, 25, // tri1 + 26, 25, 24, // tri2 + 27, 26, 24 // tri3 + ), + gsSPNTriangles_5b( + 28, 29, 27, // tri0 + 30, 31, 28, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_10_v[143], 7, 0), + gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_10_v[150], 22, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 8, 3, 10, // tri1 + 11, 12, 13, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 18, // tri0 + 12, 19, 20, // tri1 + 19, 14, 21, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_f_2/grd_s_f_2.c b/src/data/field/bg/acre/grd_s_f_2/grd_s_f_2.c new file mode 100644 index 00000000..6a01e974 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_f_2/grd_s_f_2.c @@ -0,0 +1,269 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_f_2_v[] = { +#include "assets/field/bg/grd_s_f_2_v.inc" +}; + +extern Gfx grd_s_f_2_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_f_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_f_2_v[157], 32, 0), + gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 11, 0, 12, // tri1 + 9, 13, 14, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 16, 6, 18, // tri0 + 13, 15, 19, // tri1 + 16, 18, 17, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 21, // tri0 + 13, 19, 14, // tri1 + 4, 20, 22, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 23, 27, // tri0 + 26, 27, 28, // tri1 + 29, 28, 30, // tri2 + 31, 29, 30 // tri3 + ), + gsSPVertex(&grd_s_f_2_v[189], 23, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 0, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 7, 11, // tri1 + 8, 12, 13, // tri2 + 12, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 14, 16, 15, // tri0 + 3, 5, 16, // tri1 + 17, 18, 19, // tri2 + 18, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 20, 22, 21, // tri0 + 10, 11, 22, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_f_2_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 8, 9, 7, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 14, 15, 16, // tri1 + 15, 17, 16, // tri2 + 15, 18, 17 // tri3 + ), + gsSPNTriangles_5b( + 14, 19, 15, // tri0 + 16, 20, 14, // tri1 + 20, 21, 14, // tri2 + 22, 4, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 2, 4, // tri0 + 22, 23, 2, // tri1 + 0, 24, 3, // tri2 + 24, 25, 3 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 3, // tri0 + 18, 27, 17, // tri1 + 18, 28, 27, // tri2 + 27, 29, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 30, 28, // tri0 + 18, 9, 30, // tri1 + 8, 30, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_2_v[31], 16, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 4, // tri0 + 0, 2, 6, // tri1 + 2, 7, 6, // tri2 + 6, 8, 9 // tri3 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 10, 11, 12, // tri1 + 10, 13, 11, // tri2 + 13, 9, 11 // tri3 + ), + gsSPNTriangles_5b( + 11, 14, 15, // tri0 + 9, 14, 11, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_2_v[47], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 14, 15, 16, // tri2 + 17, 0, 18 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 15, // tri0 + 19, 6, 20, // tri1 + 4, 14, 16, // tri2 + 11, 21, 12 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 22, // tri0 + 21, 19, 22, // tri1 + 9, 11, 13, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 27, 28, // tri0 + 29, 26, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_2_v[78], 22, 0), + gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 5, 8, 9, // tri0 + 10, 9, 8, // tri1 + 11, 10, 8, // tri2 + 12, 13, 11 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 12, // tri0 + 16, 17, 18, // tri1 + 16, 19, 17, // tri2 + 16, 18, 14 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_2_v[100], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 7, 9, 10, // tri0 + 11, 12, 13, // tri1 + 12, 14, 15, // tri2 + 16, 0, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 20, // tri0 + 4, 6, 21, // tri1 + 14, 3, 22, // tri2 + 14, 22, 15 // tri3 + ), + gsSPNTriangles_5b( + 9, 18, 20, // tri0 + 4, 21, 5, // tri1 + 16, 17, 19, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 27, 28, // tri0 + 29, 26, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_2_v[131], 26, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 0, 9, // tri0 + 3, 10, 11, // tri1 + 12, 13, 14, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 20, // tri0 + 8, 9, 21, // tri1 + 22, 20, 23, // tri2 + 12, 5, 13 // tri3 + ), + gsSPNTriangles_5b( + 24, 22, 23, // tri0 + 16, 21, 17, // tri1 + 18, 25, 19, // tri2 + 10, 14, 11 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_f_3/grd_s_f_3.c b/src/data/field/bg/acre/grd_s_f_3/grd_s_f_3.c new file mode 100644 index 00000000..74b1fbe2 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_f_3/grd_s_f_3.c @@ -0,0 +1,171 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_f_3_v[] = { +#include "assets/field/bg/grd_s_f_3_v.inc" +}; + +extern Gfx grd_s_f_3_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_f_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_f_3_v[113], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_f_3_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 9, 10, 11, // tri1 + 12, 11, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 13, // tri0 + 17, 15, 18, // tri1 + 17, 19, 15, // tri2 + 20, 21, 17 // tri3 + ), + gsSPNTriangles_5b( + 2, 1, 18, // tri0 + 1, 0, 22, // tri1 + 23, 20, 22, // tri2 + 24, 0, 25 // tri3 + ), + gsSPNTriangles_5b( + 24, 22, 0, // tri0 + 26, 27, 25, // tri1 + 26, 28, 6, // tri2 + 26, 29, 28 // tri3 + ), + gsSPNTriangles_5b( + 8, 7, 30, // tri0 + 9, 11, 7, // tri1 + 12, 14, 11, // tri2 + 13, 31, 14 // tri3 + ), + gsSPNTriangles_5b( + 13, 16, 31, // tri0 + 15, 19, 16, // tri1 + 17, 21, 19, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_3_v[32], 18, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 3, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 4, // tri0 + 7, 8, 9, // tri1 + 8, 10, 9, // tri2 + 8, 11, 10 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 14, // tri0 + 13, 15, 14, // tri1 + 16, 11, 17, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_3_v[50], 32, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 14, 15, 16, // tri2 + 17, 0, 18 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 15, // tri0 + 19, 6, 20, // tri1 + 4, 14, 16, // tri2 + 11, 21, 12 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 22, // tri0 + 21, 19, 22, // tri1 + 9, 11, 13, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 8, 26, 27, // tri0 + 28, 8, 29, // tri1 + 24, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_3_v[82], 18, 0), + gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 9, 10, 11, // tri1 + 11, 12, 13, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_3_v[100], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_f_4/grd_s_f_4.c b/src/data/field/bg/acre/grd_s_f_4/grd_s_f_4.c new file mode 100644 index 00000000..506f6d2e --- /dev/null +++ b/src/data/field/bg/acre/grd_s_f_4/grd_s_f_4.c @@ -0,0 +1,233 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_f_4_v[] = { +#include "assets/field/bg/grd_s_f_4_v.inc" +}; + +extern Gfx grd_s_f_4_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_f_4_v[177], 6, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_f_4_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_f_4_v[164], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b(8, 6, 9, // tri0 + 10, 8, 11, // tri1 + 1, 10, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_f_4_v[0], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 6, 7, 8, // tri1 + 9, 10, 11, // tri2 + 10, 8, 11 // tri3 + ), + gsSPNTriangles_5b(9, 12, 10, // tri0 + 9, 11, 13, // tri1 + 14, 13, 11, // tri2 + 15, 13, 16 // tri3 + ), + gsSPNTriangles_5b(14, 17, 13, // tri0 + 16, 13, 17, // tri1 + 0, 18, 19, // tri2 + 20, 18, 0 // tri3 + ), + gsSPNTriangles_5b(21, 14, 18, // tri0 + 18, 20, 21, // tri1 + 17, 14, 21, // tri2 + 4, 5, 22 // tri3 + ), + gsSPNTriangles_5b(23, 22, 5, // tri0 + 23, 24, 25, // tri1 + 24, 26, 25, // tri2 + 27, 26, 28 // tri3 + ), + gsSPNTriangles_5b(27, 25, 26, // tri0 + 29, 26, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_4_v[31], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 1, 0 // tri2 + ), + gsSPNTriangles_5b(5, 6, 4, // tri0 + 7, 8, 6, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(13, 10, 14, // tri0 + 10, 9, 14, // tri1 + 15, 16, 17, // tri2 + 18, 19, 16 // tri3 + ), + gsSPNTriangles_5b(20, 14, 21, // tri0 + 12, 22, 11, // tri1 + 23, 24, 22, // tri2 + 24, 25, 22 // tri3 + ), + gsSPNTriangles_5b(8, 7, 26, // tri0 + 7, 25, 26, // tri1 + 6, 27, 7, // tri2 + 6, 5, 27 // tri3 + ), + gsSPNTriangles_5b(4, 0, 5, // tri0 + 2, 28, 0, // tri1 + 28, 29, 0, // tri2 + 30, 17, 31 // tri3 + ), + gsSPVertex(&grd_s_f_4_v[63], 7, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_4_v[70], 32, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 8, 6, 10, // tri1 + 11, 12, 13, // tri2 + 14, 11, 15 // tri3 + ), + gsSPNTriangles_5b(12, 16, 17, // tri0 + 16, 18, 19, // tri1 + 20, 21, 22, // tri2 + 21, 14, 23 // tri3 + ), + gsSPNTriangles_5b(24, 25, 26, // tri0 + 25, 27, 28, // tri1 + 24, 26, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_4_v[100], 27, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(4, 9, 10, // tri0 + 9, 6, 10, // tri1 + 6, 8, 10, // tri2 + 3, 5, 1 // tri3 + ), + gsSPNTriangles_5b(0, 3, 1, // tri0 + 11, 0, 2, // tri1 + 12, 13, 14, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 19, 11, 21, // tri1 + 22, 12, 14, // tri2 + 7, 23, 24 // tri3 + ), + gsSPNTriangles_5b(23, 25, 26, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_4_v[127], 24, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 5, // tri0 + 7, 9, 8, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(13, 14, 12, // tri0 + 14, 13, 15, // tri1 + 15, 16, 14, // tri2 + 15, 17, 16 // tri3 + ), + gsSPNTriangles_5b(18, 19, 17, // tri0 + 18, 20, 19, // tri1 + 21, 22, 20, // tri2 + 21, 23, 22 // tri3 + ), + gsSPNTriangles_5b(0, 2, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_4_v[151], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_f_4/grd_s_f_4_evw_anime.c b/src/data/field/bg/acre/grd_s_f_4/grd_s_f_4_evw_anime.c new file mode 100644 index 00000000..70be1bb1 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_f_4/grd_s_f_4_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_f_4_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_f_4_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_f_4_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_f_5/grd_s_f_5.c b/src/data/field/bg/acre/grd_s_f_5/grd_s_f_5.c new file mode 100644 index 00000000..5ef9e63e --- /dev/null +++ b/src/data/field/bg/acre/grd_s_f_5/grd_s_f_5.c @@ -0,0 +1,274 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_f_5_v[] = { +#include "assets/field/bg/grd_s_f_5_v.inc" +}; + +extern Gfx grd_s_f_5_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_f_5_v[239], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_f_5_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_f_5_v[218], 21, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 8, 9, 4, // tri1 + 9, 10, 4, // tri2 + 11, 12, 3 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 2, 14, 15, // tri1 + 16, 13, 17, // tri2 + 8, 16, 18 // tri3 + ), + gsSPNTriangles_5b(19, 6, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_f_5_v[0], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 4, 9, // tri1 + 4, 10, 9, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 17, 18, 19, // tri1 + 5, 4, 8, // tri2 + 20, 21, 1 // tri3 + ), + gsSPNTriangles_5b(21, 3, 1, // tri0 + 22, 23, 14, // tri1 + 22, 24, 23, // tri2 + 23, 25, 14 // tri3 + ), + gsSPNTriangles_5b(26, 27, 17, // tri0 + 26, 28, 27, // tri1 + 28, 29, 27, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_5_v[30], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(0, 5, 1, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 0, 12, 5, // tri1 + 0, 13, 12, // tri2 + 14, 15, 12 // tri3 + ), + gsSPNTriangles_5b(4, 16, 3, // tri0 + 4, 17, 16, // tri1 + 18, 19, 20, // tri2 + 10, 11, 21 // tri3 + ), + gsSPNTriangles_5b(11, 22, 21, // tri0 + 22, 23, 21, // tri1 + 23, 24, 25, // tri2 + 6, 26, 7 // tri3 + ), + gsSPNTriangles_5b(6, 27, 26, // tri0 + 28, 29, 30, // tri1 + 31, 28, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_5_v[62], 28, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 8, 11, 9, // tri1 + 11, 12, 9, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 15, 18, 16, // tri1 + 19, 18, 15, // tri2 + 15, 17, 13 // tri3 + ), + gsSPNTriangles_5b(17, 20, 21, // tri0 + 17, 22, 20, // tri1 + 22, 23, 24, // tri2 + 25, 26, 27 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_5_v[90], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 6, 7, 8, // tri1 + 9, 6, 10, // tri2 + 6, 8, 10 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 9, 11, // tri1 + 13, 14, 15, // tri2 + 16, 13, 15 // tri3 + ), + gsSPNTriangles_5b(13, 12, 14, // tri0 + 7, 17, 18, // tri1 + 19, 20, 21, // tri2 + 20, 16, 22 // tri3 + ), + gsSPNTriangles_5b(0, 23, 1, // tri0 + 19, 21, 23, // tri1 + 24, 5, 25, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b(29, 26, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_5_v[121], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 8, 9, // tri0 + 10, 11, 12, // tri1 + 13, 14, 11, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b(13, 15, 14, // tri0 + 16, 18, 19, // tri1 + 18, 20, 21, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b(20, 24, 21, // tri0 + 25, 26, 27, // tri1 + 22, 25, 23, // tri2 + 26, 28, 29 // tri3 + ), + gsSPNTriangles_5b(28, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_5_v[153], 12, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 8, 10, 1, // tri1 + 9, 6, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_5_v[165], 21, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b(2, 6, 4, // tri0 + 7, 8, 9, // tri1 + 7, 10, 8, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 9, 14, 15, // tri1 + 0, 16, 17, // tri2 + 16, 13, 18 // tri3 + ), + gsSPNTriangles_5b(19, 5, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_5_v[186], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 4 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 7, 9, 8, // tri2 + 7, 10, 9 // tri3 + ), + gsSPNTriangles_5b(10, 11, 9, // tri0 + 10, 12, 11, // tri1 + 12, 13, 11, // tri2 + 14, 15, 13 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19, // tri2 + 21, 22, 19 // tri3 + ), + gsSPNTriangles_5b(19, 23, 20, // tri0 + 23, 24, 25, // tri1 + 24, 17, 26, // tri2 + 22, 27, 19 // tri3 + ), + gsSPNTriangles_5b(28, 29, 27, // tri0 + 30, 31, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_f_5/grd_s_f_5_evw_anime.c b/src/data/field/bg/acre/grd_s_f_5/grd_s_f_5_evw_anime.c new file mode 100644 index 00000000..7307a10f --- /dev/null +++ b/src/data/field/bg/acre/grd_s_f_5/grd_s_f_5_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_f_5_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_f_5_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_f_5_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_f_6/grd_s_f_6.c b/src/data/field/bg/acre/grd_s_f_6/grd_s_f_6.c new file mode 100644 index 00000000..ae842d0f --- /dev/null +++ b/src/data/field/bg/acre/grd_s_f_6/grd_s_f_6.c @@ -0,0 +1,275 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_f_6_v[] = { +#include "assets/field/bg/grd_s_f_6_v.inc" +}; + +extern Gfx grd_s_f_6_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_f_6_v[243], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_f_6_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_f_6_v[207], 32, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 19, 16, 20, // tri1 + 21, 19, 22, // tri2 + 23, 21, 24 // tri3 + ), + gsSPNTriangles_5b(25, 23, 26, // tri0 + 15, 27, 28, // tri1 + 27, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_6_v[238], 5, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 0, 0, 0 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_f_6_v[0], 32, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 2, 6 // tri2 + ), + gsSPNTriangles_5b(0, 2, 5, // tri0 + 3, 7, 4, // tri1 + 6, 8, 9, // tri2 + 8, 4, 7 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 7, 10, 9, // tri1 + 11, 9, 10, // tri2 + 7, 3, 12 // tri3 + ), + gsSPNTriangles_5b(10, 7, 12, // tri0 + 13, 14, 15, // tri1 + 15, 16, 17, // tri2 + 15, 18, 16 // tri3 + ), + gsSPNTriangles_5b(18, 19, 16, // tri0 + 19, 20, 16, // tri1 + 21, 22, 23, // tri2 + 21, 24, 22 // tri3 + ), + gsSPNTriangles_5b(21, 13, 17, // tri0 + 13, 21, 23, // tri1 + 25, 22, 26, // tri2 + 25, 23, 22 // tri3 + ), + gsSPNTriangles_5b(27, 28, 26, // tri0 + 29, 22, 30, // tri1 + 22, 24, 30, // tri2 + 31, 12, 3 // tri3 + ), + gsSPVertex(&grd_s_f_6_v[32], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 4, 7, // tri0 + 4, 8, 7, // tri1 + 9, 6, 5, // tri2 + 10, 11, 9 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 13, 14, 11, // tri1 + 15, 16, 14, // tri2 + 15, 17, 16 // tri3 + ), + gsSPNTriangles_5b(17, 18, 16, // tri0 + 19, 20, 21, // tri1 + 22, 23, 20, // tri2 + 24, 23, 25 // tri3 + ), + gsSPNTriangles_5b(18, 17, 26, // tri0 + 15, 14, 13, // tri1 + 13, 12, 27, // tri2 + 28, 27, 12 // tri3 + ), + gsSPNTriangles_5b(12, 11, 10, // tri0 + 3, 8, 4, // tri1 + 3, 29, 8, // tri2 + 1, 0, 3 // tri3 + ), + gsSPNTriangles_5b(30, 0, 2, // tri0 + 20, 19, 22, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_6_v[63], 18, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 1, 0, 3, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 4, // tri0 + 6, 5, 7, // tri1 + 4, 6, 3, // tri2 + 8, 7, 9 // tri3 + ), + gsSPNTriangles_5b(10, 11, 12, // tri0 + 12, 13, 14, // tri1 + 14, 10, 12, // tri2 + 13, 15, 14 // tri3 + ), + gsSPNTriangles_5b(16, 15, 17, // tri0 + 13, 17, 15, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_6_v[81], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 14, 15, 16, // tri2 + 17, 0, 18 // tri3 + ), + gsSPNTriangles_5b(17, 18, 15, // tri0 + 19, 6, 20, // tri1 + 4, 14, 16, // tri2 + 11, 21, 12 // tri3 + ), + gsSPNTriangles_5b(19, 20, 22, // tri0 + 21, 19, 22, // tri1 + 9, 11, 13, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b(23, 26, 27, // tri0 + 28, 27, 26, // tri1 + 29, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_6_v[113], 30, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 0, 9, 10, // tri1 + 9, 6, 10, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(8, 14, 11, // tri0 + 15, 16, 17, // tri1 + 17, 18, 19, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 23, 24, 25, // tri1 + 25, 26, 27, // tri2 + 27, 28, 29 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_6_v[143], 27, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 2, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 4, // tri0 + 5, 7, 6, // tri1 + 5, 8, 7, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 11, 12, 10, // tri1 + 13, 14, 12, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b(17, 18, 16, // tri0 + 19, 20, 18, // tri1 + 21, 22, 20, // tri2 + 23, 24, 22 // tri3 + ), + gsSPNTriangles_5b(25, 26, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_6_v[170], 32, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 19, 20, 21, // tri1 + 20, 22, 23, // tri2 + 17, 24, 25 // tri3 + ), + gsSPNTriangles_5b(24, 19, 26, // tri0 + 27, 28, 29, // tri1 + 28, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_6_v[202], 5, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_f_6/grd_s_f_6_evw_anime.c b/src/data/field/bg/acre/grd_s_f_6/grd_s_f_6_evw_anime.c new file mode 100644 index 00000000..ec9978f2 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_f_6/grd_s_f_6_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_f_6_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_f_6_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_f_6_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_f_7/grd_s_f_7.c b/src/data/field/bg/acre/grd_s_f_7/grd_s_f_7.c new file mode 100644 index 00000000..7b84c8d9 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_f_7/grd_s_f_7.c @@ -0,0 +1,345 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_f_7_v[] = { +#include "assets/field/bg/grd_s_f_7_v.inc" +}; + +extern Gfx grd_s_f_7_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_f_7_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_f_7_v[249], 32, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 7, 9, 10, // tri1 + 9, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 14, 16, 15, // tri0 + 17, 18, 19, // tri1 + 20, 17, 21, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 26, 27, 28, // tri1 + 24, 22, 25, // tri2 + 29, 30, 31 // tri3 + ), + gsSPVertex(&grd_s_f_7_v[281], 32, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 11, 3, // tri1 + 8, 12, 9, // tri2 + 13, 4, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 12, // tri0 + 17, 18, 19, // tri1 + 18, 0, 20, // tri2 + 21, 7, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 26, 27, 28, // tri1 + 29, 26, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_7_v[312], 27, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 6, 8, 9, // tri0 + 10, 11, 12, // tri1 + 3, 5, 11, // tri2 + 6, 9, 7 // tri3 + ), + gsSPNTriangles_5b( + 13, 10, 12, // tri0 + 14, 15, 16, // tri1 + 17, 14, 18, // tri2 + 19, 17, 20 // tri3 + ), + gsSPNTriangles_5b( + 21, 19, 22, // tri0 + 23, 21, 24, // tri1 + 25, 23, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_f_7_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 1, // tri0 + 6, 3, 1, // tri1 + 7, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 14, 15, 4, // tri1 + 14, 16, 15, // tri2 + 16, 17, 15 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 20, // tri0 + 19, 21, 20, // tri1 + 12, 20, 21, // tri2 + 20, 22, 18 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 24, 26, 25, // tri1 + 27, 28, 29, // tri2 + 30, 4, 3 // tri3 + ), + gsSPVertex(&grd_s_f_7_v[31], 32, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 4, // tri0 + 8, 4, 7, // tri1 + 9, 8, 10, // tri2 + 10, 11, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 9, // tri0 + 13, 6, 5, // tri1 + 14, 13, 5, // tri2 + 14, 5, 15 // tri3 + ), + gsSPNTriangles_5b( + 12, 16, 9, // tri0 + 17, 12, 18, // tri1 + 19, 20, 21, // tri2 + 15, 22, 23 // tri3 + ), + gsSPNTriangles_5b( + 24, 15, 23, // tri0 + 25, 26, 27, // tri1 + 27, 22, 25, // tri2 + 25, 28, 26 // tri3 + ), + gsSPNTriangles_5b( + 28, 29, 30, // tri0 + 29, 31, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_7_v[63], 22, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 8, 6, 5, // tri1 + 9, 10, 11, // tri2 + 11, 10, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 16, 17, 18, // tri1 + 3, 19, 20, // tri2 + 10, 21, 12 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_7_v[85], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 9, 7, 10, // tri2 + 9, 11, 7 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 14, // tri0 + 12, 15, 13, // tri1 + 16, 13, 17, // tri2 + 16, 18, 13 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 21, // tri0 + 22, 23, 24, // tri1 + 14, 22, 25, // tri2 + 26, 18, 27 // tri3 + ), + gsSPNTriangles_5b( + 28, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_7_v[116], 32, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 7, 10, 11, // tri1 + 12, 11, 10, // tri2 + 13, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 13, // tri0 + 16, 17, 14, // tri1 + 18, 19, 20, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b( + 24, 25, 26, // tri0 + 27, 24, 28, // tri1 + 29, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_7_v[148], 7, 0), + gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 1 // tri2 + ), + gsSPNTriangles_5b( + 6, 0, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_7_v[155], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 0, 7, 8, // tri0 + 7, 9, 10, // tri1 + 11, 12, 13, // tri2 + 12, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 4, 17, // tri0 + 18, 19, 20, // tri1 + 14, 2, 21, // tri2 + 14, 21, 15 // tri3 + ), + gsSPNTriangles_5b( + 9, 18, 20, // tri0 + 16, 17, 19, // tri1 + 22, 23, 24, // tri2 + 25, 22, 26 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 29, // tri0 + 23, 27, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_7_v[186], 32, 0), + gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 11, 8, 12, // tri1 + 13, 14, 15, // tri2 + 14, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 20, // tri0 + 21, 22, 23, // tri1 + 24, 13, 25, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b( + 16, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_7_v[217], 32, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 0, 12, 1, // tri1 + 13, 5, 14, // tri2 + 15, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 19, 20, 21, // tri1 + 22, 19, 23, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b( + 25, 27, 28, // tri0 + 20, 29, 30, // tri1 + 29, 24, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_f_8/grd_s_f_8.c b/src/data/field/bg/acre/grd_s_f_8/grd_s_f_8.c new file mode 100644 index 00000000..b3fddcbb --- /dev/null +++ b/src/data/field/bg/acre/grd_s_f_8/grd_s_f_8.c @@ -0,0 +1,264 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_f_8_v[] = { +#include "assets/field/bg/grd_s_f_8_v.inc" +}; + +extern Gfx grd_s_f_8_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_f_8_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_f_8_v[168], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 6, 3, 8, // tri0 + 3, 4, 8, // tri1 + 9, 10, 11, // tri2 + 12, 9, 11 // tri3 + ), + gsSPNTriangles_5b( + 1, 12, 13, // tri0 + 9, 14, 10, // tri1 + 14, 15, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 17, 21, // tri0 + 22, 20, 23, // tri1 + 24, 22, 25, // tri2 + 26, 24, 27 // tri3 + ), + gsSPNTriangles_5b( + 28, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_8_v[199], 11, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_f_8_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 27, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 6, 2, 3, // tri0 + 6, 5, 2, // tri1 + 7, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 8, 11, // tri0 + 8, 12, 11, // tri1 + 13, 7, 14, // tri2 + 7, 15, 14 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 15, // tri0 + 16, 17, 14, // tri1 + 17, 13, 14, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 18, 21, 19, // tri0 + 22, 21, 18, // tri1 + 23, 21, 22, // tri2 + 17, 23, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 17, 16, // tri0 + 15, 9, 24, // tri1 + 25, 26, 27, // tri2 + 27, 28, 25 // tri3 + ), + gsSPNTriangles_5b( + 28, 29, 25, // tri0 + 30, 31, 29, // tri1 + 22, 18, 31, // tri2 + 19, 24, 20 // tri3 + ), + gsSPVertex(&grd_s_f_8_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 5, 11, 6, // tri1 + 11, 12, 6, // tri2 + 3, 1, 0 // tri3 + ), + gsSPNTriangles_5b( + 13, 4, 3, // tri0 + 13, 14, 4, // tri1 + 14, 7, 4, // tri2 + 13, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 13, 17, 15, // tri0 + 17, 18, 15, // tri1 + 17, 19, 18, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 24, 26, 25, // tri1 + 26, 27, 25, // tri2 + 28, 8, 29 // tri3 + ), + gsSPNTriangles_5b( + 8, 10, 29, // tri0 + 30, 12, 11, // tri1 + 31, 14, 13, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_8_v[64], 4, 0), + gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_8_v[68], 32, 0), + gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 4, 6, 9, // tri1 + 1, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 15, // tri0 + 12, 14, 15, // tri1 + 1, 11, 2, // tri2 + 16, 9, 17 // tri3 + ), + gsSPNTriangles_5b( + 5, 8, 6, // tri0 + 7, 18, 19, // tri1 + 18, 3, 20, // tri2 + 21, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 13, 22, 23, // tri0 + 22, 24, 25, // tri1 + 26, 27, 28, // tri2 + 27, 29, 28 // tri3 + ), + gsSPVertex(&grd_s_f_8_v[98], 27, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 5, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 6, 5, 3, // tri0 + 7, 8, 6, // tri1 + 9, 10, 7, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 17, 14, 18, // tri1 + 15, 19, 20, // tri2 + 19, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 24, 17, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_8_v[125], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 4, 9, 10, // tri0 + 11, 3, 12, // tri1 + 13, 14, 15, // tri2 + 1, 11, 16 // tri3 + ), + gsSPNTriangles_5b( + 13, 6, 14, // tri0 + 9, 13, 15, // tri1 + 11, 12, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 22, // tri0 + 21, 23, 24, // tri1 + 18, 25, 26, // tri2 + 25, 20, 27 // tri3 + ), + gsSPNTriangles_5b( + 28, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_8_v[156], 12, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 9, 0, 11, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_f_9/grd_s_f_9.c b/src/data/field/bg/acre/grd_s_f_9/grd_s_f_9.c new file mode 100644 index 00000000..36085fae --- /dev/null +++ b/src/data/field/bg/acre/grd_s_f_9/grd_s_f_9.c @@ -0,0 +1,299 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_f_9_v[] = { +#include "assets/field/bg/grd_s_f_9_v.inc" +}; + +extern Gfx grd_s_f_9_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_f_9_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_f_9_v[186], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 10, 3, 11, // tri1 + 12, 5, 13, // tri2 + 14, 12, 15 // tri3 + ), + gsSPNTriangles_5b( + 8, 16, 9, // tri0 + 8, 14, 16, // tri1 + 10, 11, 17, // tri2 + 18, 10, 17 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 21, // tri0 + 20, 22, 21, // tri1 + 23, 24, 25, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b( + 19, 26, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_9_v[216], 31, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 6, 8, 9, // tri0 + 10, 11, 12, // tri1 + 3, 5, 11, // tri2 + 6, 9, 7 // tri3 + ), + gsSPNTriangles_5b( + 13, 10, 12, // tri0 + 14, 15, 16, // tri1 + 17, 14, 18, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 20, 17, 22, // tri0 + 17, 18, 22, // tri1 + 23, 24, 25, // tri2 + 26, 23, 25 // tri3 + ), + gsSPNTriangles_5b( + 15, 26, 27, // tri0 + 23, 28, 24, // tri1 + 28, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_f_9_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 8, 11, 9, // tri2 + 2, 3, 12 // tri3 + ), + gsSPNTriangles_5b( + 3, 13, 12, // tri0 + 13, 14, 12, // tri1 + 12, 14, 15, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 15, // tri0 + 18, 19, 20, // tri1 + 19, 21, 22, // tri2 + 22, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 21, 23, 22, // tri0 + 23, 21, 24, // tri1 + 24, 5, 23, // tri2 + 25, 23, 5 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 23, // tri0 + 26, 27, 23, // tri1 + 26, 28, 27, // tri2 + 27, 28, 29 // tri3 + ), + gsSPNTriangles_5b( + 30, 29, 28, // tri0 + 31, 29, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_9_v[32], 31, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 5, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 11, // tri0 + 12, 14, 13, // tri1 + 14, 2, 15, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 16, // tri0 + 20, 21, 16, // tri1 + 21, 22, 16, // tri2 + 21, 23, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 22, // tri0 + 24, 25, 22, // tri1 + 24, 7, 25, // tri2 + 24, 5, 7 // tri3 + ), + gsSPNTriangles_5b( + 26, 18, 17, // tri0 + 2, 1, 27, // tri1 + 28, 29, 15, // tri2 + 15, 30, 28 // tri3 + ), + gsSPNTriangles_5b( + 30, 26, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_9_v[63], 32, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 1, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 13, 17, // tri0 + 18, 16, 19, // tri1 + 20, 21, 22, // tri2 + 14, 20, 23 // tri3 + ), + gsSPNTriangles_5b( + 21, 24, 25, // tri0 + 24, 26, 27, // tri1 + 28, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_9_v[94], 30, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 3, 1 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 7, // tri0 + 6, 8, 9, // tri1 + 10, 11, 12, // tri2 + 8, 12, 9 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 10, 13, 11, // tri1 + 14, 16, 17, // tri2 + 16, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 18, 20, 19, // tri0 + 21, 22, 23, // tri1 + 24, 21, 25, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b( + 26, 28, 20, // tri0 + 27, 24, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_9_v[124], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 0, 7, 8, // tri0 + 7, 9, 10, // tri1 + 11, 12, 13, // tri2 + 12, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 4, 17, // tri0 + 18, 19, 20, // tri1 + 14, 2, 21, // tri2 + 14, 21, 15 // tri3 + ), + gsSPNTriangles_5b( + 9, 18, 20, // tri0 + 16, 17, 19, // tri1 + 22, 23, 24, // tri2 + 25, 26, 27 // tri3 + ), + gsSPNTriangles_5b( + 28, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_9_v[155], 31, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 9, 3, 10, // tri0 + 6, 11, 7, // tri1 + 1, 6, 8, // tri2 + 3, 5, 10 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 14, // tri0 + 13, 15, 16, // tri1 + 17, 12, 18, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 20, 22, 21, // tri0 + 15, 23, 24, // tri1 + 25, 26, 27, // tri2 + 17, 18, 28 // tri3 + ), + gsSPNTriangles_5b( + 20, 25, 22, // tri0 + 29, 17, 28, // tri1 + 26, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_f_ko_1/grd_s_f_ko_1.c b/src/data/field/bg/acre/grd_s_f_ko_1/grd_s_f_ko_1.c new file mode 100644 index 00000000..aa1bce4a --- /dev/null +++ b/src/data/field/bg/acre/grd_s_f_ko_1/grd_s_f_ko_1.c @@ -0,0 +1,284 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 stone_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_f_ko_1_v[] = { +#include "assets/field/bg/grd_s_f_ko_1_v.inc" +}; + +extern Gfx grd_s_f_ko_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_f_ko_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_f_ko_1_v[197], 32, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 7, 4, // tri0 + 9, 10, 6, // tri1 + 11, 12, 13, // tri2 + 14, 13, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 15, 17, // tri0 + 18, 19, 20, // tri1 + 21, 17, 19, // tri2 + 22, 20, 23 // tri3 + ), + gsSPNTriangles_5b( + 24, 23, 25, // tri0 + 26, 27, 28, // tri1 + 29, 30, 27, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_ko_1_v[228], 9, 0), + gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 5, 6, 1 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_ko_1_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 7, 4, // tri0 + 9, 10, 6, // tri1 + 11, 12, 10, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 21, 17, 19, // tri2 + 22, 20, 23 // tri3 + ), + gsSPNTriangles_5b( + 24, 23, 25, // tri0 + 26, 27, 28, // tri1 + 29, 28, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_ko_1_v[31], 9, 0), + gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 5, 4, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 6, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_f_ko_1_v[40], 32, 0), + gsSPNTrianglesInit_5b( + 25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 8, 9, 4, // tri1 + 9, 8, 10, // tri2 + 11, 9, 10 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 14, // tri0 + 13, 15, 14, // tri1 + 13, 16, 15, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b( + 18, 17, 19, // tri0 + 19, 17, 20, // tri1 + 17, 21, 20, // tri2 + 17, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 17, 23, 22, // tri0 + 24, 25, 23, // tri1 + 24, 26, 25, // tri2 + 26, 27, 25 // tri3 + ), + gsSPNTriangles_5b( + 25, 22, 23, // tri0 + 11, 28, 29, // tri1 + 28, 27, 29, // tri2 + 29, 27, 30 // tri3 + ), + gsSPNTriangles_5b( + 27, 26, 30, // tri0 + 7, 30, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_ko_1_v[71], 32, 0), + gsSPNTrianglesInit_5b( + 30, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 2, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 3, // tri0 + 3, 5, 6, // tri1 + 5, 7, 6, // tri2 + 5, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 6, 7, 9, // tri0 + 7, 10, 9, // tri1 + 11, 12, 13, // tri2 + 9, 11, 13 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 14, 1, 0, // tri1 + 14, 15, 1, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 19, // tri0 + 19, 20, 21, // tri1 + 17, 15, 18, // tri2 + 15, 22, 18 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 22, // tri0 + 22, 16, 13, // tri1 + 13, 23, 22, // tri2 + 13, 12, 23 // tri3 + ), + gsSPNTriangles_5b( + 21, 24, 25, // tri0 + 24, 26, 25, // tri1 + 24, 27, 26, // tri2 + 27, 28, 26 // tri3 + ), + gsSPNTriangles_5b( + 29, 28, 27, // tri0 + 29, 30, 28, // tri1 + 31, 30, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_ko_1_v[103], 32, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 6, 3, 8, // tri0 + 9, 10, 11, // tri1 + 12, 9, 13, // tri2 + 10, 5, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 19, 15, 21, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b( + 16, 22, 25, // tri0 + 23, 26, 27, // tri1 + 26, 28, 29, // tri2 + 30, 18, 31 // tri3 + ), + gsSPVertex(&grd_s_f_ko_1_v[135], 32, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 1, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 5, 13, 6, // tri2 + 3, 4, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 14, 16, // tri0 + 17, 16, 18, // tri1 + 19, 20, 21, // tri2 + 22, 19, 23 // tri3 + ), + gsSPNTriangles_5b( + 24, 25, 26, // tri0 + 25, 22, 27, // tri1 + 28, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_ko_1_v[166], 14, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 0, 9, // tri0 + 10, 11, 12, // tri1 + 1, 13, 2, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(stone_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_ko_1_v[180], 17, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 6, 3, 8, // tri0 + 9, 10, 11, // tri1 + 12, 9, 13, // tri2 + 10, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 14, 5, 16, // tri0 + 4, 8, 3, // tri1 + 15, 11, 10, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_f_ko_2/grd_s_f_ko_2.c b/src/data/field/bg/acre/grd_s_f_ko_2/grd_s_f_ko_2.c new file mode 100644 index 00000000..386a1959 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_f_ko_2/grd_s_f_ko_2.c @@ -0,0 +1,233 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 stone_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_f_ko_2_v[] = { +#include "assets/field/bg/grd_s_f_ko_2_v.inc" +}; + +extern Gfx grd_s_f_ko_2_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_f_ko_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_f_ko_2_v[140], 31, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 4, 7, // tri0 + 8, 6, 9, // tri1 + 10, 8, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 12, 16, // tri0 + 17, 18, 19, // tri1 + 13, 20, 21, // tri2 + 22, 15, 23 // tri3 + ), + gsSPNTriangles_5b( + 24, 17, 25, // tri0 + 26, 24, 27, // tri1 + 20, 28, 21, // tri2 + 20, 26, 28 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 29, // tri0 + 30, 22, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_f_ko_2_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 27, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 0, // tri0 + 6, 1, 0, // tri1 + 7, 8, 6, // tri2 + 8, 9, 6 // tri3 + ), + gsSPNTriangles_5b( + 8, 10, 9, // tri0 + 5, 11, 7, // tri1 + 6, 5, 7, // tri2 + 12, 13, 4 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 4, // tri0 + 14, 15, 4, // tri1 + 14, 16, 15, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 11, 20, 7, // tri0 + 18, 21, 19, // tri1 + 20, 21, 7, // tri2 + 1, 22, 3 // tri3 + ), + gsSPNTriangles_5b( + 3, 12, 4, // tri0 + 23, 24, 25, // tri1 + 24, 26, 25, // tri2 + 27, 18, 28 // tri3 + ), + gsSPNTriangles_5b( + 18, 17, 28, // tri0 + 12, 29, 13, // tri1 + 29, 25, 26, // tri2 + 23, 30, 24 // tri3 + ), + gsSPVertex(&grd_s_f_ko_2_v[31], 29, 0), + gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 2, 5, 0, // tri0 + 6, 7, 1, // tri1 + 6, 8, 7, // tri2 + 7, 3, 1 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 10, 8, 11, // tri1 + 8, 6, 11, // tri2 + 12, 13, 9 // tri3 + ), + gsSPNTriangles_5b( + 13, 10, 9, // tri0 + 14, 13, 12, // tri1 + 15, 16, 17, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 21, // tri0 + 22, 2, 4, // tri1 + 15, 17, 23, // tri2 + 17, 18, 24 // tri3 + ), + gsSPNTriangles_5b( + 22, 19, 21, // tri0 + 22, 25, 19, // tri1 + 22, 4, 25, // tri2 + 26, 27, 28 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_ko_2_v[60], 23, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 0, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 3, 8, // tri0 + 1, 9, 2, // tri1 + 0, 2, 6, // tri2 + 1, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 10, 11, 14, // tri1 + 15, 16, 17, // tri2 + 18, 19, 16 // tri3 + ), + gsSPNTriangles_5b( + 12, 15, 17, // tri0 + 18, 20, 19, // tri1 + 20, 21, 22, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(stone_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_ko_2_v[83], 26, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 5 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 7, 11, // tri1 + 12, 13, 14, // tri2 + 8, 15, 9 // tri3 + ), + gsSPNTriangles_5b( + 8, 6, 15, // tri0 + 16, 14, 1, // tri1 + 17, 18, 19, // tri2 + 20, 0, 2 // tri3 + ), + gsSPNTriangles_5b( + 16, 12, 14, // tri0 + 7, 9, 11, // tri1 + 21, 17, 22, // tri2 + 12, 23, 13 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 3, 21, 4, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_ko_2_v[109], 31, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 0, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 8, 10, 9, // tri1 + 3, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 5, 6, 16, // tri0 + 8, 13, 10, // tri1 + 17, 5, 16, // tri2 + 14, 17, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 21, // tri0 + 22, 23, 24, // tri1 + 23, 25, 26, // tri2 + 25, 27, 26 // tri3 + ), + gsSPNTriangles_5b( + 20, 28, 29, // tri0 + 28, 22, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_f_ko_3/grd_s_f_ko_3.c b/src/data/field/bg/acre/grd_s_f_ko_3/grd_s_f_ko_3.c new file mode 100644 index 00000000..a6e4635c --- /dev/null +++ b/src/data/field/bg/acre/grd_s_f_ko_3/grd_s_f_ko_3.c @@ -0,0 +1,287 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 stone_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_f_ko_3_v[] = { +#include "assets/field/bg/grd_s_f_ko_3_v.inc" +}; + +extern Gfx grd_s_f_ko_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_f_ko_3_v[242], 7, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(0, 5, 1, // tri0 + 5, 6, 1, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_f_ko_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_f_ko_3_v[203], 32, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 7, 4, // tri0 + 9, 10, 6, // tri1 + 11, 12, 13, // tri2 + 14, 13, 15 // tri3 + ), + gsSPNTriangles_5b(16, 15, 6, // tri0 + 17, 18, 19, // tri1 + 20, 6, 18, // tri2 + 21, 19, 22 // tri3 + ), + gsSPNTriangles_5b(23, 22, 24, // tri0 + 25, 26, 27, // tri1 + 28, 29, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_ko_3_v[233], 9, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 5, 6, 1 // tri2 + ), + gsSPNTriangles_5b(7, 8, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_ko_3_v[0], 32, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 7, 4, // tri0 + 9, 10, 6, // tri1 + 11, 12, 10, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b(15, 16, 6, // tri0 + 17, 18, 19, // tri1 + 20, 6, 18, // tri2 + 21, 19, 22 // tri3 + ), + gsSPNTriangles_5b(23, 22, 24, // tri0 + 25, 26, 27, // tri1 + 28, 27, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_ko_3_v[30], 9, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 5, 4, 6 // tri2 + ), + gsSPNTriangles_5b(7, 6, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_f_ko_3_v[39], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(0, 5, 4, // tri0 + 1, 6, 2, // tri1 + 7, 8, 9, // tri2 + 8, 10, 11 // tri3 + ), + gsSPNTriangles_5b(11, 10, 12, // tri0 + 12, 13, 11, // tri1 + 14, 15, 16, // tri2 + 14, 17, 15 // tri3 + ), + gsSPNTriangles_5b(17, 13, 15, // tri0 + 15, 6, 16, // tri1 + 14, 18, 17, // tri2 + 18, 19, 17 // tri3 + ), + gsSPNTriangles_5b(18, 20, 19, // tri0 + 21, 20, 18, // tri1 + 22, 19, 20, // tri2 + 22, 23, 19 // tri3 + ), + gsSPNTriangles_5b(23, 22, 24, // tri0 + 24, 25, 23, // tri1 + 26, 25, 24, // tri2 + 26, 27, 25 // tri3 + ), + gsSPNTriangles_5b(28, 25, 27, // tri0 + 29, 30, 28, // tri1 + 30, 29, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_ko_3_v[71], 32, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 4, 7, 3, // tri2 + 8, 9, 2 // tri3 + ), + gsSPNTriangles_5b(8, 10, 9, // tri0 + 11, 10, 8, // tri1 + 10, 11, 12, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(7, 15, 3, // tri0 + 15, 7, 16, // tri1 + 17, 18, 19, // tri2 + 20, 19, 18 // tri3 + ), + gsSPNTriangles_5b(20, 21, 19, // tri0 + 22, 16, 7, // tri1 + 23, 24, 25, // tri2 + 26, 27, 24 // tri3 + ), + gsSPNTriangles_5b(28, 27, 14, // tri0 + 28, 29, 27, // tri1 + 29, 24, 27, // tri2 + 29, 30, 24 // tri3 + ), + gsSPNTriangles_5b(30, 25, 24, // tri0 + 28, 16, 29, // tri1 + 16, 22, 29, // tri2 + 31, 29, 22 // tri3 + ), + gsSPVertex(&grd_s_f_ko_3_v[103], 5, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_ko_3_v[108], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 6, 7, 8, // tri1 + 9, 6, 10, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(12, 9, 14, // tri0 + 15, 16, 17, // tri1 + 18, 15, 19, // tri2 + 16, 11, 20 // tri3 + ), + gsSPNTriangles_5b(2, 21, 22, // tri0 + 23, 5, 24, // tri1 + 25, 26, 27, // tri2 + 28, 25, 29 // tri3 + ), + gsSPNTriangles_5b(26, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_ko_3_v[140], 22, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 9, 13, // tri1 + 14, 15, 16, // tri2 + 15, 12, 17 // tri3 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 10, 18, 21, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(stone_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_ko_3_v[162], 21, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 3, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(11, 10, 12, // tri0 + 11, 13, 14, // tri1 + 13, 15, 14, // tri2 + 16, 17, 15 // tri3 + ), + gsSPNTriangles_5b(16, 18, 17, // tri0 + 18, 19, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_ko_3_v[183], 20, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 4 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 9, 7, // tri1 + 8, 10, 9, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 14, 15, 13, // tri1 + 14, 16, 15, // tri2 + 17, 18, 16 // tri3 + ), + gsSPNTriangles_5b(17, 19, 18, // tri0 + 1, 0, 3, // tri1 + 10, 8, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_f_ko_3/grd_s_f_ko_3_evw_anime.c b/src/data/field/bg/acre/grd_s_f_ko_3/grd_s_f_ko_3_evw_anime.c new file mode 100644 index 00000000..c283ad37 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_f_ko_3/grd_s_f_ko_3_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_f_ko_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_f_ko_3_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_f_ko_3_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_f_mh_1/grd_s_f_mh_1.c b/src/data/field/bg/acre/grd_s_f_mh_1/grd_s_f_mh_1.c new file mode 100644 index 00000000..497dcfd6 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_f_mh_1/grd_s_f_mh_1.c @@ -0,0 +1,239 @@ +#include "libforest/gbi_extensions.h" + +extern u8 earth_pal_dummy[]; +extern u8 stone_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_f_mh_1_v[] = { +#include "assets/field/bg/grd_s_f_mh_1_v.inc" +}; + +extern Gfx grd_s_f_mh_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_f_mh_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(stone_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_f_mh_1_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 7, 5, // tri0 + 8, 9, 10, // tri1 + 8, 11, 9, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 13, 15, 14, // tri0 + 16, 10, 17, // tri1 + 17, 10, 9, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 18, // tri0 + 20, 23, 24, // tri1 + 24, 25, 26, // tri2 + 27, 28, 29 // tri3 + ), + gsSPNTriangles_5b( + 30, 31, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_mh_1_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 5, // tri0 + 7, 10, 11, // tri1 + 11, 12, 13, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 19, 20, 16, // tri1 + 18, 21, 22, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 27, // tri0 + 26, 28, 27, // tri1 + 29, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_mh_1_v[64], 32, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 12, 13, 10, // tri1 + 14, 15, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 22, // tri0 + 23, 24, 25, // tri1 + 26, 27, 28, // tri2 + 29, 30, 26 // tri3 + ), + gsSPVertex(&grd_s_f_mh_1_v[95], 9, 0), + gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 5, 6, 0 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_f_mh_1_v[104], 32, 0), + gsSPNTrianglesInit_5b( + 29, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 8, 9, 5, // tri1 + 8, 5, 4, // tri2 + 10, 8, 4 // tri3 + ), + gsSPNTriangles_5b( + 11, 4, 12, // tri0 + 4, 6, 12, // tri1 + 6, 13, 12, // tri2 + 6, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 16, 15, 17, // tri1 + 15, 18, 17, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 18, 20, 19, // tri0 + 18, 21, 20, // tri1 + 22, 23, 15, // tri2 + 22, 24, 23 // tri3 + ), + gsSPNTriangles_5b( + 15, 23, 18, // tri0 + 23, 24, 25, // tri1 + 24, 0, 25, // tri2 + 25, 0, 26 // tri3 + ), + gsSPNTriangles_5b( + 0, 2, 26, // tri0 + 1, 27, 3, // tri1 + 1, 28, 27, // tri2 + 28, 29, 27 // tri3 + ), + gsSPNTriangles_5b( + 30, 27, 31, // tri0 + 27, 29, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_mh_1_v[136], 16, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 3, 1, 4, // tri0 + 6, 3, 5, // tri1 + 7, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 10, 12, 11, // tri1 + 8, 12, 10, // tri2 + 13, 14, 11 // tri3 + ), + gsSPNTriangles_5b( + 15, 1, 14, // tri0 + 15, 4, 1, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_mh_1_v[152], 32, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 6, 3, 8, // tri0 + 9, 5, 10, // tri1 + 11, 9, 12, // tri2 + 13, 11, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 16, 18, 19, // tri1 + 20, 21, 22, // tri2 + 18, 20, 23 // tri3 + ), + gsSPNTriangles_5b( + 21, 24, 25, // tri0 + 24, 26, 27, // tri1 + 28, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_mh_1_v[183], 21, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 0, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 11, 3, 13, // tri2 + 0, 2, 6 // tri3 + ), + gsSPNTriangles_5b( + 3, 5, 13, // tri0 + 7, 9, 14, // tri1 + 15, 14, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 18, 15, 16, // tri0 + 8, 10, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_f_mh_2/grd_s_f_mh_2.c b/src/data/field/bg/acre/grd_s_f_mh_2/grd_s_f_mh_2.c new file mode 100644 index 00000000..12f4f6de --- /dev/null +++ b/src/data/field/bg/acre/grd_s_f_mh_2/grd_s_f_mh_2.c @@ -0,0 +1,228 @@ +#include "libforest/gbi_extensions.h" + +extern u8 earth_pal_dummy[]; +extern u8 stone_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_f_mh_2_v[] = { +#include "assets/field/bg/grd_s_f_mh_2_v.inc" +}; + +extern Gfx grd_s_f_mh_2_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_f_mh_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(stone_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_f_mh_2_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 12, // tri0 + 16, 15, 17, // tri1 + 18, 19, 20, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b( + 24, 25, 26, // tri0 + 26, 18, 27, // tri1 + 28, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_mh_2_v[31], 32, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 4, // tri0 + 8, 9, 10, // tri1 + 11, 9, 12, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 14, 16, 17, // tri1 + 18, 19, 20, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b( + 24, 25, 26, // tri0 + 27, 21, 28, // tri1 + 29, 30, 27, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_mh_2_v[62], 32, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 9, 11, 12, // tri1 + 13, 14, 15, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 20, // tri0 + 21, 22, 23, // tri1 + 24, 25, 26, // tri2 + 27, 28, 29 // tri3 + ), + gsSPVertex(&grd_s_f_mh_2_v[92], 9, 0), + gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 2, 7 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_f_mh_2_v[101], 32, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 7, 5, // tri0 + 8, 9, 2, // tri1 + 10, 11, 12, // tri2 + 11, 13, 12 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 15, 17, 16, // tri1 + 15, 18, 17, // tri2 + 18, 19, 17 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 22, // tri0 + 21, 23, 22, // tri1 + 21, 20, 24, // tri2 + 20, 25, 24 // tri3 + ), + gsSPNTriangles_5b( + 7, 4, 26, // tri0 + 4, 27, 26, // tri1 + 28, 29, 30, // tri2 + 28, 31, 29 // tri3 + ), + gsSPNTriangles_5b( + 28, 7, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_mh_2_v[133], 32, 0), + gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 8, 10, 11, // tri1 + 10, 12, 11, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 12, 14, 13, // tri0 + 12, 15, 14, // tri1 + 15, 16, 14, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 18, 20, 19, // tri0 + 19, 21, 16, // tri1 + 22, 23, 24, // tri2 + 22, 25, 23 // tri3 + ), + gsSPNTriangles_5b( + 22, 26, 25, // tri0 + 27, 28, 29, // tri1 + 30, 28, 27, // tri2 + 30, 31, 28 // tri3 + ), + gsSPVertex(&grd_s_f_mh_2_v[165], 8, 0), + gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 4, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_mh_2_v[173], 32, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 4, 8, // tri0 + 9, 10, 11, // tri1 + 10, 7, 12, // tri2 + 13, 9, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 13, 16, // tri0 + 17, 15, 18, // tri1 + 19, 20, 21, // tri2 + 20, 22, 23 // tri3 + ), + gsSPNTriangles_5b( + 24, 25, 26, // tri0 + 22, 24, 27, // tri1 + 25, 28, 29, // tri2 + 28, 30, 31 // tri3 + ), + gsSPVertex(&grd_s_f_mh_2_v[205], 14, 0), + gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 3 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 6, // tri0 + 8, 10, 9, // tri1 + 8, 11, 10, // tri2 + 11, 12, 13 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_f_mh_3/grd_s_f_mh_3.c b/src/data/field/bg/acre/grd_s_f_mh_3/grd_s_f_mh_3.c new file mode 100644 index 00000000..8456e9e0 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_f_mh_3/grd_s_f_mh_3.c @@ -0,0 +1,220 @@ +#include "libforest/gbi_extensions.h" + +extern u8 earth_pal_dummy[]; +extern u8 stone_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_f_mh_3_v[] = { +#include "assets/field/bg/grd_s_f_mh_3_v.inc" +}; + +extern Gfx grd_s_f_mh_3_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_f_mh_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(stone_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_f_mh_3_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 14, 16, 15, // tri1 + 17, 18, 19, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 19, // tri0 + 21, 22, 19, // tri1 + 23, 13, 15, // tri2 + 23, 24, 13 // tri3 + ), + gsSPNTriangles_5b( + 3, 25, 4, // tri0 + 25, 26, 4, // tri1 + 9, 27, 28, // tri2 + 9, 29, 27 // tri3 + ), + gsSPNTriangles_5b( + 30, 31, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_mh_3_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 7, 10, 8, // tri1 + 10, 11, 12, // tri2 + 11, 13, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 12, // tri0 + 14, 15, 16, // tri1 + 15, 17, 16, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 22, // tri0 + 21, 23, 22, // tri1 + 24, 25, 26, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b( + 27, 1, 28, // tri0 + 29, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_mh_3_v[64], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 6, 8, 7, // tri0 + 9, 5, 10, // tri1 + 9, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_f_mh_3_v[77], 32, 0), + gsSPNTrianglesInit_5b( + 25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 9, 10, 11, // tri2 + 9, 0, 10 // tri3 + ), + gsSPNTriangles_5b( + 9, 1, 0, // tri0 + 12, 13, 14, // tri1 + 8, 15, 7, // tri2 + 16, 9, 17 // tri3 + ), + gsSPNTriangles_5b( + 9, 11, 17, // tri0 + 6, 18, 8, // tri1 + 18, 19, 8, // tri2 + 20, 16, 14 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 14, // tri0 + 17, 21, 14, // tri1 + 22, 3, 23, // tri2 + 6, 24, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 18, 25, // tri0 + 18, 12, 25, // tri1 + 20, 14, 13, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b( + 27, 29, 28, // tri0 + 4, 3, 22, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_mh_3_v[107], 13, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 2, 1 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 4, // tri0 + 2, 4, 6, // tri1 + 6, 7, 8, // tri2 + 6, 4, 7 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 11, 10, 12, // tri1 + 10, 8, 12, // tri2 + 8, 7, 12 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_mh_3_v[120], 32, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 11, 12, 9, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 15, 12, // tri0 + 17, 18, 19, // tri1 + 20, 21, 18, // tri2 + 22, 19, 14 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 26, 6, 27, // tri1 + 28, 29, 7, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_mh_3_v[150], 26, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 2, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 1, 0, 3, // tri1 + 10, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 12, 19, 10, // tri1 + 20, 18, 19, // tri2 + 11, 10, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 21, 23, // tri0 + 24, 15, 25, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_f_mu_1/grd_s_f_mu_1.c b/src/data/field/bg/acre/grd_s_f_mu_1/grd_s_f_mu_1.c new file mode 100644 index 00000000..cd92d17f --- /dev/null +++ b/src/data/field/bg/acre/grd_s_f_mu_1/grd_s_f_mu_1.c @@ -0,0 +1,217 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 stone_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_f_mu_1_v[] = { +#include "assets/field/bg/grd_s_f_mu_1_v.inc" +}; + +extern Gfx grd_s_f_mu_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_f_mu_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_f_mu_1_v[145], 15, 0), + gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 7, 9, 10, // tri1 + 9, 11, 12, // tri2 + 11, 13, 14 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(stone_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_mu_1_v[0], 17, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b( + 1, 3, 5, // tri0 + 6, 7, 8, // tri1 + 7, 9, 10, // tri2 + 9, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 14, // tri0 + 11, 14, 12, // tri1 + 13, 15, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_mu_1_v[17], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 7, 9, 10, // tri1 + 9, 11, 12, // tri2 + 11, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 13, 15, 16, // tri0 + 17, 18, 19, // tri1 + 20, 21, 22, // tri2 + 20, 22, 23 // tri3 + ), + gsSPNTriangles_5b( + 18, 20, 23, // tri0 + 21, 24, 25, // tri1 + 24, 26, 27, // tri2 + 26, 1, 28 // tri3 + ), + gsSPNTriangles_5b( + 2, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_mu_1_v[48], 30, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 7, 9, 10, // tri1 + 9, 11, 12, // tri2 + 11, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 18, 15, 19, // tri1 + 20, 18, 21, // tri2 + 22, 20, 23 // tri3 + ), + gsSPNTriangles_5b( + 24, 22, 25, // tri0 + 26, 24, 27, // tri1 + 28, 26, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_mu_1_v[78], 15, 0), + gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 7, 9, 10, // tri1 + 9, 11, 12, // tri2 + 11, 13, 14 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_f_mu_1_v[93], 32, 0), + gsSPNTrianglesInit_5b( + 29, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 5, 4, 6, // tri0 + 6, 8, 7, // tri1 + 7, 8, 9, // tri2 + 3, 10, 4 // tri3 + ), + gsSPNTriangles_5b( + 3, 11, 10, // tri0 + 11, 12, 10, // tri1 + 13, 14, 12, // tri2 + 13, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 12, // tri0 + 8, 16, 9, // tri1 + 16, 17, 9, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 17, 19, 13, // tri0 + 19, 14, 13, // tri1 + 19, 20, 14, // tri2 + 18, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 21, 18, 16, // tri0 + 18, 17, 16, // tri1 + 15, 23, 12, // tri2 + 15, 24, 23 // tri3 + ), + gsSPNTriangles_5b( + 24, 25, 23, // tri0 + 25, 24, 26, // tri1 + 26, 27, 25, // tri2 + 28, 27, 26 // tri3 + ), + gsSPNTriangles_5b( + 29, 27, 28, // tri0 + 29, 30, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_mu_1_v[124], 21, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 3, // tri0 + 6, 5, 0, // tri1 + 7, 8, 9, // tri2 + 7, 10, 8 // tri3 + ), + gsSPNTriangles_5b( + 7, 11, 10, // tri0 + 7, 12, 11, // tri1 + 13, 9, 8, // tri2 + 13, 14, 9 // tri3 + ), + gsSPNTriangles_5b( + 13, 15, 14, // tri0 + 15, 16, 17, // tri1 + 15, 18, 16, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b( + 20, 16, 18, // tri0 + 19, 4, 20, // tri1 + 19, 1, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_f_mu_2/grd_s_f_mu_2.c b/src/data/field/bg/acre/grd_s_f_mu_2/grd_s_f_mu_2.c new file mode 100644 index 00000000..1558d49e --- /dev/null +++ b/src/data/field/bg/acre/grd_s_f_mu_2/grd_s_f_mu_2.c @@ -0,0 +1,217 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 stone_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_f_mu_2_v[] = { +#include "assets/field/bg/grd_s_f_mu_2_v.inc" +}; + +extern Gfx grd_s_f_mu_2_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_f_mu_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_f_mu_2_v[146], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 7, 9, 10, // tri1 + 9, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(stone_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_mu_2_v[0], 19, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 3, 6, 4, // tri0 + 5, 7, 8, // tri1 + 7, 9, 10, // tri2 + 9, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 13, 15, 16, // tri1 + 11, 13, 16, // tri2 + 14, 17, 18 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_mu_2_v[19], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 7, 9, 10, // tri1 + 9, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_mu_2_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 1, 3, 6, // tri0 + 4, 7, 8, // tri1 + 7, 9, 8, // tri2 + 7, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 12, // tri0 + 10, 12, 9, // tri1 + 11, 13, 14, // tri2 + 13, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 18, // tri0 + 17, 19, 20, // tri1 + 19, 21, 20, // tri2 + 19, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 24, // tri0 + 23, 25, 24, // tri1 + 26, 27, 25, // tri2 + 26, 28, 27 // tri3 + ), + gsSPNTriangles_5b( + 28, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_mu_2_v[63], 24, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 7, 9, 10, // tri1 + 9, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 14, 16, 17, // tri0 + 16, 18, 19, // tri1 + 18, 20, 21, // tri2 + 20, 22, 23 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_f_mu_2_v[87], 32, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 4, // tri0 + 7, 8, 5, // tri1 + 0, 9, 7, // tri2 + 4, 10, 3 // tri3 + ), + gsSPNTriangles_5b( + 6, 10, 4, // tri0 + 11, 12, 6, // tri1 + 12, 10, 6, // tri2 + 12, 13, 10 // tri3 + ), + gsSPNTriangles_5b( + 12, 14, 13, // tri0 + 14, 15, 13, // tri1 + 15, 16, 13, // tri2 + 17, 18, 15 // tri3 + ), + gsSPNTriangles_5b( + 15, 18, 16, // tri0 + 7, 9, 8, // tri1 + 8, 19, 20, // tri2 + 8, 9, 19 // tri3 + ), + gsSPNTriangles_5b( + 9, 21, 19, // tri0 + 9, 22, 21, // tri1 + 23, 24, 25, // tri2 + 26, 27, 25 // tri3 + ), + gsSPNTriangles_5b( + 27, 23, 25, // tri0 + 28, 27, 29, // tri1 + 30, 31, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_mu_2_v[119], 27, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 1, 0 // tri2 + ), + gsSPNTriangles_5b( + 1, 4, 5, // tri0 + 6, 7, 8, // tri1 + 7, 6, 9, // tri2 + 6, 5, 9 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 10, 5, 4, // tri1 + 9, 5, 10, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 12, // tri0 + 12, 14, 15, // tri1 + 15, 11, 12, // tri2 + 15, 14, 16 // tri3 + ), + gsSPNTriangles_5b( + 14, 17, 16, // tri0 + 18, 19, 8, // tri1 + 19, 20, 21, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 22, // tri0 + 26, 23, 22, // tri1 + 18, 20, 19, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_f_mu_3/grd_s_f_mu_3.c b/src/data/field/bg/acre/grd_s_f_mu_3/grd_s_f_mu_3.c new file mode 100644 index 00000000..93aa7813 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_f_mu_3/grd_s_f_mu_3.c @@ -0,0 +1,200 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 stone_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_f_mu_3_v[] = { +#include "assets/field/bg/grd_s_f_mu_3_v.inc" +}; + +extern Gfx grd_s_f_mu_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_f_mu_3_v[145], 7, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 1, 6, 5, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_f_mu_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_f_mu_3_v[0], 22, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 1 // tri2 + ), + gsSPNTriangles_5b(4, 1, 3, // tri0 + 6, 7, 5, // tri1 + 8, 9, 7, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b(11, 12, 10, // tri0 + 10, 8, 11, // tri1 + 13, 14, 12, // tri2 + 13, 15, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 17, 18, 19, // tri1 + 18, 20, 19, // tri2 + 16, 21, 17 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(stone_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_mu_3_v[22], 14, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 9, // tri1 + 8, 10, 11, // tri2 + 10, 12, 13 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_mu_3_v[36], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b(6, 7, 5, // tri0 + 6, 8, 7, // tri1 + 8, 9, 10, // tri2 + 9, 11, 12 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 13, 15, 16, // tri1 + 11, 13, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(17, 20, 18, // tri0 + 14, 17, 19, // tri1 + 20, 21, 22, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b(24, 26, 27, // tri0 + 26, 28, 29, // tri1 + 28, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_mu_3_v[68], 20, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 8, 10, 11, // tri1 + 10, 12, 13, // tri2 + 12, 14, 15 // tri3 + ), + gsSPNTriangles_5b(14, 16, 17, // tri0 + 16, 18, 19, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_f_mu_3_v[88], 32, 0), + gsSPNTrianglesInit_5b(30, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 4, 3, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 4, 1, 5, // tri1 + 1, 6, 5, // tri2 + 8, 2, 3 // tri3 + ), + gsSPNTriangles_5b(9, 2, 8, // tri0 + 10, 9, 11, // tri1 + 10, 12, 9, // tri2 + 9, 12, 2 // tri3 + ), + gsSPNTriangles_5b(13, 12, 10, // tri0 + 14, 15, 13, // tri1 + 15, 12, 13, // tri2 + 16, 6, 17 // tri3 + ), + gsSPNTriangles_5b(18, 7, 19, // tri0 + 19, 7, 6, // tri1 + 16, 19, 6, // tri2 + 20, 18, 19 // tri3 + ), + gsSPNTriangles_5b(18, 20, 21, // tri0 + 17, 22, 23, // tri1 + 23, 22, 24, // tri2 + 22, 25, 24 // tri3 + ), + gsSPNTriangles_5b(24, 25, 26, // tri0 + 27, 28, 29, // tri1 + 28, 26, 29, // tri2 + 26, 25, 29 // tri3 + ), + gsSPNTriangles_5b(26, 28, 20, // tri0 + 20, 28, 21, // tri1 + 28, 30, 21, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_mu_3_v[119], 26, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 3, 1, 0 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 6, 4, 5, // tri1 + 6, 7, 4, // tri2 + 7, 6, 8 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 9, 12, 10, // tri1 + 10, 13, 14, // tri2 + 11, 10, 14 // tri3 + ), + gsSPNTriangles_5b(14, 13, 15, // tri0 + 15, 16, 14, // tri1 + 15, 17, 16, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(17, 19, 18, // tri0 + 19, 8, 18, // tri1 + 20, 21, 22, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b(20, 25, 21, // tri0 + 20, 23, 25, // tri1 + 19, 24, 23, // tri2 + 19, 17, 24 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_f_mu_3/grd_s_f_mu_3_evw_anime.c b/src/data/field/bg/acre/grd_s_f_mu_3/grd_s_f_mu_3_evw_anime.c new file mode 100644 index 00000000..95962f6e --- /dev/null +++ b/src/data/field/bg/acre/grd_s_f_mu_3/grd_s_f_mu_3_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_f_mu_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_f_mu_3_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_f_mu_3_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_f_pk_1/grd_s_f_pk_1.c b/src/data/field/bg/acre/grd_s_f_pk_1/grd_s_f_pk_1.c new file mode 100644 index 00000000..fb7d22ba --- /dev/null +++ b/src/data/field/bg/acre/grd_s_f_pk_1/grd_s_f_pk_1.c @@ -0,0 +1,296 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 stone_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_f_pk_1_v[] = { +#include "assets/field/bg/grd_s_f_pk_1_v.inc" +}; + +extern Gfx grd_s_f_pk_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_f_pk_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_f_pk_1_v[225], 11, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_pk_1_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 8, 10, 11, // tri1 + 10, 5, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 19, 18, 14, // tri1 + 20, 21, 22, // tri2 + 23, 24, 21 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 27, // tri0 + 28, 25, 27, // tri1 + 17, 28, 27, // tri2 + 29, 15, 30 // tri3 + ), + gsSPNTriangles_5b( + 31, 29, 30, // tri0 + 31, 30, 24, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_f_pk_1_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 8, 9, 7, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 12, 14, 13, // tri1 + 14, 15, 13, // tri2 + 11, 16, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 17, 16, // tri0 + 17, 18, 16, // tri1 + 3, 19, 4, // tri2 + 19, 20, 4 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 20, // tri0 + 21, 22, 20, // tri1 + 21, 23, 22, // tri2 + 24, 25, 15 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 15, // tri0 + 25, 27, 26, // tri1 + 27, 28, 26, // tri2 + 27, 29, 28 // tri3 + ), + gsSPNTriangles_5b( + 30, 31, 5, // tri0 + 31, 6, 5, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_pk_1_v[64], 29, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 6, 7, 8, // tri1 + 7, 9, 10, // tri2 + 7, 11, 9 // tri3 + ), + gsSPNTriangles_5b( + 8, 7, 10, // tri0 + 12, 13, 14, // tri1 + 15, 12, 14, // tri2 + 14, 13, 16 // tri3 + ), + gsSPNTriangles_5b( + 17, 14, 16, // tri0 + 16, 13, 18, // tri1 + 18, 13, 19, // tri2 + 11, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 21, 20, 22, // tri0 + 22, 20, 23, // tri1 + 24, 25, 26, // tri2 + 25, 27, 26 // tri3 + ), + gsSPNTriangles_5b( + 6, 28, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(stone_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_pk_1_v[93], 32, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 6, 3, 7, // tri0 + 8, 9, 10, // tri1 + 11, 12, 13, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 19, // tri0 + 20, 21, 22, // tri1 + 23, 24, 25, // tri2 + 26, 23, 25 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 29, // tri0 + 28, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_pk_1_v[125], 32, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 4, 6, // tri0 + 3, 4, 7, // tri1 + 8, 9, 10, // tri2 + 11, 8, 10 // tri3 + ), + gsSPNTriangles_5b( + 5, 8, 11, // tri0 + 9, 12, 13, // tri1 + 13, 12, 14, // tri2 + 12, 15, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 21, 18, 20, // tri2 + 16, 18, 21 // tri3 + ), + gsSPNTriangles_5b( + 19, 22, 23, // tri0 + 23, 22, 24, // tri1 + 22, 25, 24, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b( + 29, 26, 28, // tri0 + 25, 26, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_pk_1_v[155], 32, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 5, 7, // tri1 + 4, 5, 8, // tri2 + 6, 9, 10 // tri3 + ), + gsSPNTriangles_5b( + 10, 9, 11, // tri0 + 9, 12, 11, // tri1 + 13, 14, 15, // tri2 + 15, 14, 16 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 17, // tri0 + 14, 18, 16, // tri1 + 16, 18, 19, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 22, // tri0 + 21, 23, 24, // tri1 + 23, 25, 26, // tri2 + 27, 28, 29 // tri3 + ), + gsSPNTriangles_5b( + 30, 27, 29, // tri0 + 25, 27, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_pk_1_v[186], 28, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 2, 4, 5, // tri0 + 4, 6, 5, // tri1 + 7, 8, 9, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 16, 17, 15, // tri1 + 18, 19, 16, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 24, // tri0 + 25, 18, 24, // tri1 + 26, 27, 14, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_pk_1_v[214], 11, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 8, 3, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_f_pk_2/grd_s_f_pk_2.c b/src/data/field/bg/acre/grd_s_f_pk_2/grd_s_f_pk_2.c new file mode 100644 index 00000000..119d01ce --- /dev/null +++ b/src/data/field/bg/acre/grd_s_f_pk_2/grd_s_f_pk_2.c @@ -0,0 +1,278 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 stone_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_f_pk_2_v[] = { +#include "assets/field/bg/grd_s_f_pk_2_v.inc" +}; + +extern Gfx grd_s_f_pk_2_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_f_pk_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_f_pk_2_v[204], 14, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 7, 4, // tri0 + 9, 10, 11, // tri1 + 12, 13, 10, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_pk_2_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 8, 6, 10, // tri1 + 11, 12, 13, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 17, 18, 19, // tri1 + 20, 18, 17, // tri2 + 21, 20, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 11, // tri0 + 19, 25, 26, // tri1 + 18, 25, 19, // tri2 + 25, 27, 26 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 29, // tri0 + 28, 30, 31, // tri1 + 30, 24, 23, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_f_pk_2_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 10, 11, 8, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 11, 7, 8, // tri0 + 13, 0, 14, // tri1 + 0, 2, 14, // tri2 + 3, 15, 2 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 13, // tri0 + 17, 18, 13, // tri1 + 19, 20, 21, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 20, 23, 22, // tri0 + 9, 18, 24, // tri1 + 18, 25, 24, // tri2 + 18, 17, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 27, 28, // tri0 + 29, 30, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_pk_2_v[63], 27, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 5, 7, // tri1 + 9, 10, 11, // tri2 + 11, 10, 12 // tri3 + ), + gsSPNTriangles_5b( + 12, 10, 1, // tri0 + 13, 14, 15, // tri1 + 14, 16, 17, // tri2 + 18, 17, 16 // tri3 + ), + gsSPNTriangles_5b( + 18, 6, 17, // tri0 + 7, 19, 8, // tri1 + 7, 6, 18, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 22, 9, 11, // tri0 + 21, 9, 22, // tri1 + 21, 23, 24, // tri2 + 25, 24, 23 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 24, // tri0 + 12, 1, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(stone_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_pk_2_v[90], 32, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 4, 0 // tri2 + ), + gsSPNTriangles_5b( + 6, 3, 7, // tri0 + 8, 6, 7, // tri1 + 9, 6, 8, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 12, 11, 13, // tri0 + 11, 9, 13, // tri1 + 14, 10, 15, // tri2 + 16, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 17, 14, 16, // tri0 + 18, 17, 19, // tri1 + 19, 17, 16, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 22, 21, 23, // tri0 + 21, 18, 23, // tri1 + 24, 20, 25, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b( + 29, 30, 26, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_pk_2_v[121], 32, 0), + gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 0, // tri0 + 7, 8, 3, // tri1 + 9, 10, 11, // tri2 + 12, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 13, 11, // tri0 + 11, 13, 7, // tri1 + 14, 12, 9, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b( + 17, 16, 15, // tri0 + 18, 17, 15, // tri1 + 19, 20, 21, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 18, // tri0 + 23, 24, 25, // tri1 + 26, 27, 19, // tri2 + 28, 27, 26 // tri3 + ), + gsSPNTriangles_5b( + 24, 28, 25, // tri0 + 25, 28, 26, // tri1 + 29, 30, 23, // tri2 + 30, 24, 23 // tri3 + ), + gsSPVertex(&grd_s_f_pk_2_v[152], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 4, 3, 0 // tri2 + ), + gsSPNTriangles_5b( + 2, 5, 6, // tri0 + 7, 8, 9, // tri1 + 10, 11, 4, // tri2 + 12, 11, 10 // tri3 + ), + gsSPNTriangles_5b( + 8, 12, 9, // tri0 + 9, 12, 10, // tri1 + 13, 14, 7, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 20, // tri0 + 21, 22, 23, // tri1 + 24, 25, 26, // tri2 + 27, 28, 26 // tri3 + ), + gsSPNTriangles_5b( + 29, 30, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_pk_2_v[183], 7, 0), + gsSPNTrianglesInit_5b( + 3, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 5, 6, 4 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_pk_2_v[190], 14, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 6, // tri0 + 10, 7, 11, // tri1 + 12, 11, 13, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_f_pk_3/grd_s_f_pk_3.c b/src/data/field/bg/acre/grd_s_f_pk_3/grd_s_f_pk_3.c new file mode 100644 index 00000000..95266626 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_f_pk_3/grd_s_f_pk_3.c @@ -0,0 +1,322 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 stone_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_f_pk_3_v[] = { +#include "assets/field/bg/grd_s_f_pk_3_v.inc" +}; + +extern Gfx grd_s_f_pk_3_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_f_pk_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_f_pk_3_v[245], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_pk_3_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 5, 9, 6, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 11, 13, 16, // tri1 + 14, 17, 18, // tri2 + 17, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 4, 21, 22, // tri0 + 23, 3, 24, // tri1 + 25, 23, 26, // tri2 + 5, 25, 27 // tri3 + ), + gsSPNTriangles_5b( + 8, 28, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_pk_3_v[30], 27, 0), + gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 13, 17, // tri0 + 18, 19, 20, // tri1 + 19, 16, 21, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b( + 25, 22, 26, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_f_pk_3_v[57], 32, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 0, 2, 4, // tri0 + 4, 6, 5, // tri1 + 7, 5, 8, // tri2 + 5, 6, 8 // tri3 + ), + gsSPNTriangles_5b( + 6, 9, 8, // tri0 + 10, 11, 12, // tri1 + 11, 13, 12, // tri2 + 14, 3, 15 // tri3 + ), + gsSPNTriangles_5b( + 3, 1, 15, // tri0 + 13, 16, 12, // tri1 + 13, 17, 16, // tri2 + 17, 18, 16 // tri3 + ), + gsSPNTriangles_5b( + 17, 19, 18, // tri0 + 19, 20, 18, // tri1 + 21, 22, 23, // tri2 + 22, 24, 23 // tri3 + ), + gsSPNTriangles_5b( + 21, 25, 22, // tri0 + 21, 26, 25, // tri1 + 26, 27, 25, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b( + 29, 31, 30, // tri0 + 29, 13, 31, // tri1 + 13, 11, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_pk_3_v[89], 32, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 3, // tri0 + 7, 8, 9, // tri1 + 8, 10, 11, // tri2 + 10, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 12, 15, // tri0 + 12, 16, 15, // tri1 + 12, 17, 16, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 21, 19, 18, // tri0 + 22, 20, 19, // tri1 + 22, 23, 24, // tri2 + 25, 26, 27 // tri3 + ), + gsSPNTriangles_5b( + 26, 23, 27, // tri0 + 26, 28, 23, // tri1 + 28, 24, 23, // tri2 + 28, 29, 24 // tri3 + ), + gsSPNTriangles_5b( + 26, 25, 30, // tri0 + 25, 2, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_pk_3_v[120], 12, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 8, 11, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(stone_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_pk_3_v[132], 32, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 6, 7, 8, // tri1 + 6, 8, 9, // tri2 + 10, 6, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 12, 14, 13, // tri1 + 12, 10, 14, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 16, 11, 18, // tri0 + 15, 17, 19, // tri1 + 20, 15, 19, // tri2 + 21, 20, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 24, 21, 25, // tri1 + 21, 22, 25, // tri2 + 26, 24, 23 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 29, // tri0 + 28, 30, 29, // tri1 + 28, 26, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_pk_3_v[163], 32, 0), + gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 0, 6, // tri0 + 7, 8, 9, // tri1 + 10, 8, 7, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 9, 11, 13, // tri0 + 8, 11, 9, // tri1 + 13, 12, 14, // tri2 + 12, 15, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 14, // tri0 + 16, 17, 18, // tri1 + 17, 19, 18, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 20, // tri0 + 21, 22, 20, // tri1 + 23, 24, 25, // tri2 + 26, 23, 25 // tri3 + ), + gsSPNTriangles_5b( + 22, 26, 25, // tri0 + 24, 27, 28, // tri1 + 27, 29, 28, // tri2 + 29, 30, 28 // tri3 + ), + gsSPVertex(&grd_s_f_pk_3_v[194], 32, 0), + gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 4, 6, // tri0 + 8, 9, 10, // tri1 + 5, 8, 10, // tri2 + 10, 9, 11 // tri3 + ), + gsSPNTriangles_5b( + 9, 12, 11, // tri0 + 12, 13, 11, // tri1 + 14, 15, 13, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 19, // tri0 + 16, 17, 19, // tri1 + 15, 16, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 26, 27, 25, // tri1 + 28, 29, 30, // tri2 + 29, 26, 30 // tri3 + ), + gsSPVertex(&grd_s_f_pk_3_v[225], 7, 0), + gsSPNTrianglesInit_5b( + 3, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 5, 6, 4 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_pk_3_v[232], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_hole_test/grd_s_hole_test.c b/src/data/field/bg/acre/grd_s_hole_test/grd_s_hole_test.c new file mode 100644 index 00000000..8caf3399 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_hole_test/grd_s_hole_test.c @@ -0,0 +1,316 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 stone_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_hole_test_v[] = { +#include "assets/field/bg/grd_s_hole_test_v.inc" +}; + +extern Gfx grd_s_hole_test_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_hole_test_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_hole_test_v[230], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 7, 4, // tri0 + 9, 10, 6, // tri1 + 11, 12, 10, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_hole_test_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 25, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 5, // tri0 + 6, 8, 7, // tri1 + 8, 9, 7, // tri2 + 10, 11, 4 // tri3 + ), + gsSPNTriangles_5b( + 3, 10, 4, // tri0 + 10, 12, 11, // tri1 + 12, 13, 11, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 16, 14, 17, // tri1 + 16, 18, 14, // tri2 + 18, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 13, // tri0 + 20, 21, 15, // tri1 + 22, 23, 24, // tri2 + 25, 24, 20 // tri3 + ), + gsSPNTriangles_5b( + 23, 21, 20, // tri0 + 24, 23, 20, // tri1 + 26, 27, 19, // tri2 + 27, 26, 28 // tri3 + ), + gsSPNTriangles_5b( + 29, 27, 28, // tri0 + 30, 31, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_hole_test_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b( + 5, 2, 3, // tri0 + 6, 0, 2, // tri1 + 6, 7, 0, // tri2 + 8, 7, 6 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 7, // tri0 + 10, 9, 8, // tri1 + 11, 12, 13, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 13, 12, 14, // tri0 + 12, 16, 14, // tri1 + 14, 17, 18, // tri2 + 16, 17, 14 // tri3 + ), + gsSPNTriangles_5b( + 17, 19, 18, // tri0 + 20, 21, 19, // tri1 + 22, 23, 20, // tri2 + 24, 23, 22 // tri3 + ), + gsSPNTriangles_5b( + 24, 25, 23, // tri0 + 26, 27, 28, // tri1 + 26, 29, 25, // tri2 + 26, 25, 27 // tri3 + ), + gsSPNTriangles_5b( + 25, 24, 27, // tri0 + 29, 30, 25, // tri1 + 29, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_hole_test_v[64], 5, 0), + gsSPNTrianglesInit_5b( + 3, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_hole_test_v[69], 32, 0), + gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 9, 10, 6, // tri0 + 9, 11, 10, // tri1 + 6, 10, 7, // tri2 + 8, 7, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 11, // tri0 + 15, 5, 14, // tri1 + 3, 5, 15, // tri2 + 15, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 19, 20, 16, // tri1 + 19, 21, 20, // tri2 + 16, 22, 17 // tri3 + ), + gsSPNTriangles_5b( + 16, 20, 22, // tri0 + 18, 17, 4, // tri1 + 23, 24, 21, // tri2 + 25, 26, 24 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 26, // tri0 + 27, 26, 25, // tri1 + 25, 24, 23, // tri2 + 29, 30, 31 // tri3 + ), + gsSPVertex(&grd_s_hole_test_v[101], 32, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 5, 1 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 11, 8, // tri1 + 12, 9, 13, // tri2 + 14, 13, 4 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 18, 19, 16, // tri1 + 20, 21, 22, // tri2 + 23, 22, 19 // tri3 + ), + gsSPNTriangles_5b( + 24, 25, 26, // tri0 + 27, 17, 25, // tri1 + 28, 26, 29, // tri2 + 30, 29, 31 // tri3 + ), + gsSPVertex(&grd_s_hole_test_v[133], 32, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b( + 0, 6, 1, // tri0 + 0, 4, 6, // tri1 + 2, 1, 7, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 9, // tri0 + 13, 7, 12, // tri1 + 13, 12, 11, // tri2 + 11, 9, 8 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 17, 18, 14, // tri1 + 17, 10, 18, // tri2 + 14, 18, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 15, 19, // tri0 + 20, 21, 22, // tri1 + 23, 19, 21, // tri2 + 23, 21, 20 // tri3 + ), + gsSPNTriangles_5b( + 20, 22, 24, // tri0 + 25, 26, 27, // tri1 + 28, 29, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_hole_test_v[163], 32, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 6, // tri0 + 10, 7, 11, // tri1 + 12, 11, 13, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 14, // tri0 + 17, 19, 18, // tri1 + 14, 18, 15, // tri2 + 16, 15, 20 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 23, // tri0 + 24, 25, 22, // tri1 + 26, 20, 25, // tri2 + 26, 25, 24 // tri3 + ), + gsSPNTriangles_5b( + 24, 22, 21, // tri0 + 27, 28, 29, // tri1 + 30, 31, 27, // tri2 + 30, 23, 31 // tri3 + ), + gsSPNTriangles_5b( + 27, 31, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_hole_test_v[195], 9, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 4 // tri2 + ), + gsSPNTriangles_5b( + 8, 2, 7, // tri0 + 8, 7, 6, // tri1 + 6, 4, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(stone_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_hole_test_v[204], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 7, 4, // tri0 + 9, 10, 11, // tri1 + 12, 2, 10, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_hole_test_v[217], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 4, 6, // tri0 + 9, 7, 10, // tri1 + 11, 10, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_il_1/grd_s_il_1.c b/src/data/field/bg/acre/grd_s_il_1/grd_s_il_1.c new file mode 100644 index 00000000..c5a52a58 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_il_1/grd_s_il_1.c @@ -0,0 +1,369 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_il_1_v[] = { +#include "assets/field/bg/grd_s_il_1_v.inc" +}; + +extern Gfx grd_s_il_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_il_1_v[145], 32, 0), + gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 3, 0, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 3, 2, // tri0 + 6, 5, 2, // tri1 + 7, 8, 9, // tri2 + 7, 10, 8 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 8, // tri0 + 10, 12, 11, // tri1 + 10, 13, 12, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 15, 14, // tri0 + 15, 16, 14, // tri1 + 16, 17, 14, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 17, // tri0 + 19, 20, 17, // tri1 + 19, 21, 20, // tri2 + 21, 22, 20 // tri3 + ), + gsSPNTriangles_5b( + 21, 23, 22, // tri0 + 23, 24, 22, // tri1 + 24, 25, 22, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b( + 24, 27, 26, // tri0 + 27, 28, 26, // tri1 + 27, 29, 28, // tri2 + 29, 30, 28 // tri3 + ), + gsSPNTriangles_5b( + 29, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_il_1_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 8, 9, 6, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 8, 11, 10, // tri0 + 11, 12, 10, // tri1 + 11, 13, 12, // tri2 + 11, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 13, // tri0 + 14, 16, 15, // tri1 + 16, 17, 15, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b( + 16, 19, 18, // tri0 + 19, 20, 18, // tri1 + 19, 21, 20, // tri2 + 19, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 21, // tri0 + 22, 24, 23, // tri1 + 22, 25, 24, // tri2 + 25, 26, 24 // tri3 + ), + gsSPNTriangles_5b( + 25, 27, 26, // tri0 + 25, 28, 27, // tri1 + 28, 29, 27, // tri2 + 28, 30, 29 // tri3 + ), + gsSPNTriangles_5b( + 30, 31, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_il_1_v[32], 10, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_il_1_v[42], 6, 0), + gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 3, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 0, 4, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_il_1_v[48], 32, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 6, 8, 9, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 10, 14, 11, // tri0 + 15, 16, 17, // tri1 + 12, 15, 13, // tri2 + 16, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 18, 20, 21, // tri0 + 20, 22, 21, // tri1 + 23, 24, 25, // tri2 + 26, 23, 27 // tri3 + ), + gsSPNTriangles_5b( + 28, 29, 30, // tri0 + 28, 30, 22, // tri1 + 29, 26, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_il_1_v[80], 17, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 5, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 6, 5, 3, // tri0 + 7, 8, 6, // tri1 + 9, 10, 7, // tri2 + 11, 12, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 11, 14, 13, // tri1 + 14, 15, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_il_1_v[97], 32, 0), + gsSPNTrianglesInit_5b( + 31, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 4, // tri0 + 2, 6, 7, // tri1 + 2, 3, 6, // tri2 + 3, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 6, // tri0 + 8, 10, 9, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 13, 12, // tri0 + 10, 14, 13, // tri1 + 10, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 14, // tri0 + 17, 18, 14, // tri1 + 18, 19, 14, // tri2 + 19, 20, 14 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 14, // tri0 + 21, 13, 14, // tri1 + 18, 22, 19, // tri2 + 18, 23, 22 // tri3 + ), + gsSPNTriangles_5b( + 18, 24, 23, // tri0 + 16, 25, 17, // tri1 + 16, 26, 25, // tri2 + 26, 27, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 28, 27, // tri0 + 26, 29, 28, // tri1 + 29, 30, 28, // tri2 + 28, 31, 27 // tri3 + ), + gsSPVertex(&grd_s_il_1_v[129], 10, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 8, 9, 7, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_il_1_v[139], 6, 0), + gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 3, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 0, 4, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_il_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_il_1_v[177], 9, 0), + gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 3, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 4, 2, // tri0 + 6, 7, 4, // tri1 + 7, 3, 4, // tri2 + 7, 0, 3 // tri3 + ), + gsSPNTriangles_5b( + 7, 8, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_il_1_v[186], 24, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 3, 6, // tri0 + 7, 6, 8, // tri1 + 9, 7, 8, // tri2 + 9, 8, 10 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 12, // tri0 + 9, 10, 12, // tri1 + 13, 9, 12, // tri2 + 13, 12, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 13, 14, // tri0 + 15, 14, 0, // tri1 + 16, 15, 0, // tri2 + 16, 0, 2 // tri3 + ), + gsSPNTriangles_5b( + 16, 2, 17, // tri0 + 18, 16, 17, // tri1 + 18, 17, 19, // tri2 + 20, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 21, 20, 19, // tri0 + 22, 23, 21, // tri1 + 22, 21, 19, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_il_2/grd_s_il_2.c b/src/data/field/bg/acre/grd_s_il_2/grd_s_il_2.c new file mode 100644 index 00000000..e364a540 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_il_2/grd_s_il_2.c @@ -0,0 +1,522 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_2_pal_dummy[]; +extern u8 bridge_2_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_il_2_v[] = { +#include "assets/field/bg/grd_s_il_2_v.inc" +}; + +extern Gfx grd_s_il_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_il_2_v[235], 32, 0), + gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 7, 9, 10, // tri2 + 7, 11, 9 // tri3 + ), + gsSPNTriangles_5b( + 9, 12, 10, // tri0 + 10, 12, 13, // tri1 + 12, 14, 13, // tri2 + 14, 15, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 16, 15, // tri0 + 16, 17, 15, // tri1 + 16, 18, 17, // tri2 + 17, 19, 15 // tri3 + ), + gsSPNTriangles_5b( + 17, 20, 19, // tri0 + 20, 21, 19, // tri1 + 20, 22, 21, // tri2 + 22, 23, 21 // tri3 + ), + gsSPNTriangles_5b( + 7, 8, 11, // tri0 + 5, 24, 6, // tri1 + 5, 25, 24, // tri2 + 25, 26, 24 // tri3 + ), + gsSPNTriangles_5b( + 25, 27, 26, // tri0 + 27, 28, 26, // tri1 + 27, 29, 28, // tri2 + 29, 30, 28 // tri3 + ), + gsSPNTriangles_5b( + 29, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_il_2_v[267], 9, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 2, 7, 8, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_2_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_2_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_il_2_v[313], 22, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 3, 5, // tri0 + 6, 7, 8, // tri1 + 6, 8, 9, // tri2 + 9, 8, 10 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 8, 12, 13, // tri1 + 8, 13, 10, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 14, 16, 17, // tri0 + 18, 14, 17, // tri1 + 18, 17, 19, // tri2 + 20, 21, 14 // tri3 + ), + gsSPNTriangles_5b( + 20, 14, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_il_2_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 2, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 9, 10, 7 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 12, 8, 13, // tri1 + 14, 11, 15, // tri2 + 11, 13, 15 // tri3 + ), + gsSPNTriangles_5b( + 12, 6, 8, // tri0 + 9, 16, 10, // tri1 + 16, 17, 10, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 17, // tri0 + 18, 20, 19, // tri1 + 20, 21, 19, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 21, // tri0 + 22, 24, 23, // tri1 + 24, 25, 23, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 27, 25, // tri0 + 27, 28, 25, // tri1 + 27, 29, 28, // tri2 + 29, 30, 28 // tri3 + ), + gsSPNTriangles_5b( + 29, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_il_2_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 7, 8, 4 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 11, 14, 13, // tri1 + 15, 16, 17, // tri2 + 15, 18, 16 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 16, // tri0 + 18, 20, 19, // tri1 + 20, 21, 19, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 21, // tri0 + 22, 24, 23, // tri1 + 24, 25, 23, // tri2 + 25, 26, 23 // tri3 + ), + gsSPNTriangles_5b( + 25, 27, 26, // tri0 + 27, 28, 26, // tri1 + 27, 29, 28, // tri2 + 29, 30, 28 // tri3 + ), + gsSPNTriangles_5b( + 29, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_il_2_v[64], 18, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 5, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 7, // tri0 + 8, 10, 9, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 11, // tri0 + 14, 15, 16, // tri1 + 15, 17, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_il_2_v[82], 4, 0), + gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_il_2_v[86], 32, 0), + gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 1, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 9, 3, 10, // tri1 + 11, 12, 9, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 19, 16, 20, // tri1 + 21, 22, 23, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_il_2_v[116], 32, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 2, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 11, 12, 13, // tri2 + 5, 7, 14 // tri3 + ), + gsSPNTriangles_5b( + 12, 5, 14, // tri0 + 15, 11, 16, // tri1 + 17, 18, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 20, 24, // tri0 + 18, 25, 26, // tri1 + 25, 23, 27, // tri2 + 28, 29, 30 // tri3 + ), + gsSPVertex(&grd_s_il_2_v[147], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 0, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 8, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_il_2_v[160], 32, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 7, 8, 9, // tri2 + 7, 10, 8 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 12, 10, 13, // tri1 + 10, 7, 13, // tri2 + 11, 14, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 15, 14, // tri0 + 11, 16, 15, // tri1 + 11, 17, 16, // tri2 + 17, 18, 16 // tri3 + ), + gsSPNTriangles_5b( + 17, 19, 18, // tri0 + 19, 20, 18, // tri1 + 19, 21, 20, // tri2 + 19, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 23, 26, 24, // tri1 + 24, 27, 25, // tri2 + 24, 28, 27 // tri3 + ), + gsSPNTriangles_5b( + 28, 29, 27, // tri0 + 28, 30, 29, // tri1 + 28, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_il_2_v[192], 32, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 3, // tri0 + 4, 6, 1, // tri1 + 4, 7, 6, // tri2 + 4, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 4, 9, 8, // tri0 + 10, 11, 12, // tri1 + 11, 13, 12, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b( + 10, 9, 11, // tri0 + 9, 4, 11, // tri1 + 5, 15, 3, // tri2 + 5, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 5, 17, 16, // tri0 + 16, 18, 15, // tri1 + 18, 19, 15, // tri2 + 19, 13, 15 // tri3 + ), + gsSPNTriangles_5b( + 19, 14, 13, // tri0 + 5, 20, 17, // tri1 + 21, 22, 23, // tri2 + 22, 24, 23 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 27, // tri0 + 28, 29, 25, // tri1 + 28, 30, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_il_2_v[223], 8, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 5, 0, 6, // tri1 + 5, 4, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_il_2_v[231], 4, 0), + gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_il_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPVertex(&grd_s_il_2_v[276], 6, 0), + gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 0, 3, 4, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_il_2_v[282], 31, 0), + gsSPNTrianglesInit_5b( + 31, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 3, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 4, 2, // tri0 + 5, 2, 6, // tri1 + 7, 5, 6, // tri2 + 7, 6, 8 // tri3 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 7, 9, // tri1 + 11, 10, 9, // tri2 + 11, 9, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 14, 15, 16, // tri1 + 17, 14, 16, // tri2 + 17, 16, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 17, 18, // tri0 + 13, 12, 20, // tri1 + 18, 13, 20, // tri2 + 19, 18, 20 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 21, // tri0 + 22, 19, 21, // tri1 + 23, 22, 21, // tri2 + 1, 0, 24 // tri3 + ), + gsSPNTriangles_5b( + 25, 1, 24, // tri0 + 26, 25, 24, // tri1 + 26, 24, 27, // tri2 + 28, 26, 27 // tri3 + ), + gsSPNTriangles_5b( + 28, 27, 29, // tri0 + 28, 29, 30, // tri1 + 23, 21, 1, // tri2 + 25, 23, 1 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_il_3/grd_s_il_3.c b/src/data/field/bg/acre/grd_s_il_3/grd_s_il_3.c new file mode 100644 index 00000000..d06a5751 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_il_3/grd_s_il_3.c @@ -0,0 +1,398 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_il_3_v[] = { +#include "assets/field/bg/grd_s_il_3_v.inc" +}; + +extern Gfx grd_s_il_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_il_3_v[142], 32, 0), + gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 3, 5, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 0, 2, // tri0 + 6, 4, 7, // tri1 + 6, 3, 4, // tri2 + 8, 6, 7 // tri3 + ), + gsSPNTriangles_5b( + 1, 9, 2, // tri0 + 0, 10, 1, // tri1 + 11, 12, 13, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 16, // tri0 + 15, 18, 17, // tri1 + 18, 19, 17, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 18, 21, 20, // tri0 + 21, 11, 20, // tri1 + 21, 12, 11, // tri2 + 12, 22, 13 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 13, // tri0 + 23, 24, 13, // tri1 + 23, 25, 24, // tri2 + 25, 26, 24 // tri3 + ), + gsSPNTriangles_5b( + 25, 27, 26, // tri0 + 25, 28, 27, // tri1 + 28, 29, 27, // tri2 + 28, 30, 29 // tri3 + ), + gsSPNTriangles_5b( + 30, 31, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_il_3_v[174], 8, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_il_3_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 5, 7, // tri0 + 6, 7, 8, // tri1 + 9, 6, 8, // tri2 + 9, 8, 10 // tri3 + ), + gsSPNTriangles_5b( + 11, 9, 10, // tri0 + 11, 10, 12, // tri1 + 13, 11, 12, // tri2 + 13, 12, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 13, 14, // tri0 + 15, 14, 16, // tri1 + 15, 16, 17, // tri2 + 18, 15, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 17, 19, // tri0 + 18, 19, 20, // tri1 + 21, 18, 20, // tri2 + 21, 20, 22 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 23, // tri0 + 24, 21, 23, // tri1 + 24, 23, 25, // tri2 + 26, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 25, 27, // tri0 + 28, 26, 27, // tri1 + 28, 27, 29, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b( + 31, 28, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_il_3_v[32], 13, 0), + gsSPNTrianglesInit_5b( + 9, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b( + 3, 4, 5, // tri0 + 6, 3, 5, // tri1 + 7, 8, 9, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 8, 10, 12, // tri0 + 8, 12, 9, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_il_3_v[45], 13, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 3, 6, 5, // tri1 + 6, 7, 5, // tri2 + 7, 8, 5 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 7, 10, 9, // tri1 + 10, 11, 9, // tri2 + 11, 12, 9 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_il_3_v[58], 30, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 6, // tri0 + 7, 8, 9, // tri1 + 7, 10, 8, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 0, // tri0 + 15, 16, 13, // tri1 + 7, 9, 15, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 17, 21, // tri0 + 22, 23, 24, // tri1 + 25, 22, 26, // tri2 + 18, 27, 28 // tri3 + ), + gsSPNTriangles_5b( + 27, 25, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_il_3_v[88], 32, 0), + gsSPNTrianglesInit_5b( + 31, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 8, 9, 7, // tri2 + 9, 10, 7 // tri3 + ), + gsSPNTriangles_5b( + 8, 11, 9, // tri0 + 8, 12, 11, // tri1 + 8, 13, 12, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 15, 14, // tri0 + 15, 16, 14, // tri1 + 15, 2, 16, // tri2 + 15, 0, 2 // tri3 + ), + gsSPNTriangles_5b( + 0, 17, 1, // tri0 + 15, 18, 0, // tri1 + 18, 19, 0, // tri2 + 19, 20, 0 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 0, // tri0 + 21, 22, 0, // tri1 + 22, 17, 0, // tri2 + 18, 23, 19 // tri3 + ), + gsSPNTriangles_5b( + 18, 24, 23, // tri0 + 3, 25, 2, // tri1 + 3, 26, 25, // tri2 + 25, 27, 2 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 2, // tri0 + 27, 29, 28, // tri1 + 26, 30, 25, // tri2 + 30, 31, 25 // tri3 + ), + gsSPVertex(&grd_s_il_3_v[120], 10, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 6, 9, 8, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_il_3_v[130], 12, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 0, 2, 7, // tri2 + 8, 9, 7 // tri3 + ), + gsSPNTriangles_5b( + 10, 0, 7, // tri0 + 5, 11, 6, // tri1 + 9, 10, 7, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_il_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPVertex(&grd_s_il_3_v[182], 17, 0), + gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 1, 4, // tri0 + 5, 6, 1, // tri1 + 6, 2, 1, // tri2 + 6, 7, 2 // tri3 + ), + gsSPNTriangles_5b( + 8, 0, 9, // tri0 + 0, 2, 9, // tri1 + 7, 9, 2, // tri2 + 7, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 4, 12, // tri0 + 4, 3, 12, // tri1 + 5, 4, 11, // tri2 + 13, 5, 11 // tri3 + ), + gsSPNTriangles_5b( + 14, 11, 12, // tri0 + 14, 15, 11, // tri1 + 15, 16, 11, // tri2 + 16, 13, 11 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_il_3_v[199], 28, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 3, 0, 4, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 7, 8, 5 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 9, 11, 12, // tri1 + 13, 9, 12, // tri2 + 14, 13, 12 // tri3 + ), + gsSPNTriangles_5b( + 14, 12, 15, // tri0 + 16, 14, 15, // tri1 + 16, 15, 17, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 16, 17, // tri0 + 20, 17, 19, // tri1 + 20, 19, 21, // tri2 + 22, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 23, 22, 21, // tri0 + 23, 21, 24, // tri1 + 25, 23, 24, // tri2 + 25, 24, 26 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 27, // tri0 + 8, 25, 27, // tri1 + 8, 27, 5, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_il_4/grd_s_il_4.c b/src/data/field/bg/acre/grd_s_il_4/grd_s_il_4.c new file mode 100644 index 00000000..59fa9eff --- /dev/null +++ b/src/data/field/bg/acre/grd_s_il_4/grd_s_il_4.c @@ -0,0 +1,393 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_il_4_v[] = { +#include "assets/field/bg/grd_s_il_4_v.inc" +}; + +extern Gfx grd_s_il_4_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_il_4_v[141], 32, 0), + gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 10, 11, 8, // tri2 + 7, 12, 9 // tri3 + ), + gsSPNTriangles_5b( + 9, 13, 10, // tri0 + 9, 14, 13, // tri1 + 14, 15, 13, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 15, // tri0 + 16, 18, 17, // tri1 + 18, 19, 17, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 19, // tri0 + 20, 22, 21, // tri1 + 22, 23, 21, // tri2 + 22, 24, 23 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 27, // tri0 + 28, 29, 26, // tri1 + 26, 25, 28, // tri2 + 30, 25, 31 // tri3 + ), + gsSPNTriangles_5b( + 25, 27, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_il_4_v[173], 3, 0), + gsSPNTrianglesInit_5b( + 1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_il_4_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 30, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b( + 5, 4, 3, // tri0 + 5, 3, 6, // tri1 + 7, 5, 6, // tri2 + 8, 7, 6 // tri3 + ), + gsSPNTriangles_5b( + 8, 6, 9, // tri0 + 10, 8, 9, // tri1 + 10, 9, 11, // tri2 + 12, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 11, 13, // tri0 + 14, 12, 13, // tri1 + 15, 14, 13, // tri2 + 16, 15, 13 // tri3 + ), + gsSPNTriangles_5b( + 17, 16, 13, // tri0 + 17, 13, 18, // tri1 + 19, 17, 18, // tri2 + 20, 19, 18 // tri3 + ), + gsSPNTriangles_5b( + 20, 18, 21, // tri0 + 22, 20, 21, // tri1 + 22, 21, 23, // tri2 + 24, 22, 23 // tri3 + ), + gsSPNTriangles_5b( + 24, 23, 25, // tri0 + 26, 24, 25, // tri1 + 27, 26, 25, // tri2 + 27, 25, 28 // tri3 + ), + gsSPNTriangles_5b( + 29, 27, 28, // tri0 + 29, 28, 30, // tri1 + 31, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_il_4_v[32], 9, 0), + gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 3, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 2, 5, // tri0 + 4, 5, 6, // tri1 + 7, 4, 8, // tri2 + 4, 6, 8 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_il_4_v[41], 8, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 3, 5, // tri0 + 6, 4, 5, // tri1 + 7, 6, 5, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_il_4_v[49], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 6, // tri0 + 6, 7, 8, // tri1 + 8, 9, 10, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 14, 12, 13, // tri1 + 14, 15, 16, // tri2 + 15, 17, 16 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 20, // tri0 + 21, 18, 22, // tri1 + 19, 23, 24, // tri2 + 23, 25, 26 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 29, // tri0 + 28, 21, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_il_4_v[80], 11, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 8, 6, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_il_4_v[91], 32, 0), + gsSPNTrianglesInit_5b( + 33, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 8, 9, 7, // tri1 + 10, 11, 0, // tri2 + 11, 12, 0 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 0, // tri0 + 14, 15, 16, // tri1 + 15, 17, 16, // tri2 + 17, 18, 16 // tri3 + ), + gsSPNTriangles_5b( + 17, 19, 18, // tri0 + 20, 21, 19, // tri1 + 21, 22, 19, // tri2 + 22, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 14, 23, 15, // tri0 + 23, 24, 15, // tri1 + 23, 3, 24, // tri2 + 23, 4, 3 // tri3 + ), + gsSPNTriangles_5b( + 4, 6, 3, // tri0 + 9, 0, 2, // tri1 + 1, 25, 3, // tri2 + 25, 24, 3 // tri3 + ), + gsSPNTriangles_5b( + 1, 26, 25, // tri0 + 0, 13, 1, // tri1 + 9, 10, 0, // tri2 + 5, 27, 7 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 7, // tri0 + 28, 8, 7, // tri1 + 26, 20, 25, // tri2 + 1, 29, 26 // tri3 + ), + gsSPNTriangles_5b( + 29, 30, 26, // tri0 + 29, 31, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_il_4_v[123], 10, 0), + gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 4, 5, 0 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 0, // tri0 + 6, 7, 0, // tri1 + 7, 8, 0, // tri2 + 8, 1, 0 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_il_4_v[133], 8, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 3, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 2, 5, // tri0 + 4, 5, 6, // tri1 + 7, 4, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_il_4_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPVertex(&grd_s_il_4_v[176], 12, 0), + gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 1, 0, 4 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 4, // tri0 + 0, 6, 5, // tri1 + 0, 3, 6, // tri2 + 7, 3, 8 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 3, // tri0 + 3, 9, 6, // tri1 + 9, 10, 6, // tri2 + 3, 2, 8 // tri3 + ), + gsSPNTriangles_5b( + 1, 11, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_il_4_v[188], 28, 0), + gsSPNTrianglesInit_5b( + 27, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 4, // tri0 + 5, 6, 4, // tri1 + 7, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 9, // tri0 + 12, 7, 9, // tri1 + 13, 9, 10, // tri2 + 13, 11, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 14, 12, // tri0 + 14, 15, 12, // tri1 + 14, 16, 15, // tri2 + 16, 17, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 18, 17, // tri0 + 18, 19, 17, // tri1 + 18, 20, 19, // tri2 + 20, 2, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 0, 2, // tri0 + 16, 21, 18, // tri1 + 8, 22, 10, // tri2 + 8, 23, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 22, // tri0 + 23, 25, 24, // tri1 + 25, 26, 24, // tri2 + 26, 27, 24 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_ir_1/grd_s_ir_1.c b/src/data/field/bg/acre/grd_s_ir_1/grd_s_ir_1.c new file mode 100644 index 00000000..98d983be --- /dev/null +++ b/src/data/field/bg/acre/grd_s_ir_1/grd_s_ir_1.c @@ -0,0 +1,461 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_2_pal_dummy[]; +extern u8 bridge_2_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_ir_1_v[] = { +#include "assets/field/bg/grd_s_ir_1_v.inc" +}; + +extern Gfx grd_s_ir_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_ir_1_v[138], 32, 0), + gsSPNTrianglesInit_5b( + 29, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 1, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 7, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 0, 11, 12, // tri0 + 0, 13, 11, // tri1 + 13, 14, 11, // tri2 + 0, 15, 13 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 16, 19, 17, // tri1 + 19, 20, 17, // tri2 + 19, 4, 20 // tri3 + ), + gsSPNTriangles_5b( + 4, 3, 20, // tri0 + 17, 21, 18, // tri1 + 21, 22, 18, // tri2 + 22, 23, 18 // tri3 + ), + gsSPNTriangles_5b( + 22, 24, 23, // tri0 + 24, 25, 23, // tri1 + 24, 26, 25, // tri2 + 26, 27, 25 // tri3 + ), + gsSPNTriangles_5b( + 10, 14, 9, // tri0 + 14, 13, 9, // tri1 + 0, 2, 15, // tri2 + 12, 5, 0 // tri3 + ), + gsSPNTriangles_5b( + 2, 28, 15, // tri0 + 29, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_ir_1_v[170], 6, 0), + gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_2_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_2_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_ir_1_v[210], 32, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 2, // tri0 + 6, 7, 8, // tri1 + 6, 8, 9, // tri2 + 10, 11, 7 // tri3 + ), + gsSPNTriangles_5b( + 10, 7, 6, // tri0 + 11, 12, 13, // tri1 + 11, 13, 7, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 14, 16, 17, // tri0 + 18, 14, 17, // tri1 + 18, 17, 19, // tri2 + 19, 17, 20 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 21, // tri0 + 22, 23, 24, // tri1 + 22, 24, 25, // tri2 + 26, 27, 23 // tri3 + ), + gsSPNTriangles_5b( + 26, 23, 22, // tri0 + 27, 28, 29, // tri1 + 27, 29, 23, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_ir_1_v[240], 24, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 3, 5, // tri0 + 5, 3, 6, // tri1 + 5, 6, 7, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b( + 8, 10, 11, // tri0 + 12, 11, 13, // tri1 + 12, 13, 14, // tri2 + 15, 8, 11 // tri3 + ), + gsSPNTriangles_5b( + 15, 11, 12, // tri0 + 16, 17, 18, // tri1 + 16, 18, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 20, 22, 17, // tri0 + 23, 20, 17, // tri1 + 23, 17, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_ir_1_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 30, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 1, // tri0 + 6, 2, 7, // tri1 + 6, 0, 2, // tri2 + 4, 8, 5 // tri3 + ), + gsSPNTriangles_5b( + 4, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 13, 14, 12, // tri1 + 13, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 16, // tri0 + 15, 18, 17, // tri1 + 18, 19, 17, // tri2 + 19, 20, 17 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 20, // tri0 + 19, 22, 21, // tri1 + 22, 23, 21, // tri2 + 22, 24, 23 // tri3 + ), + gsSPNTriangles_5b( + 22, 25, 24, // tri0 + 25, 26, 24, // tri1 + 25, 27, 26, // tri2 + 25, 28, 27 // tri3 + ), + gsSPNTriangles_5b( + 25, 29, 28, // tri0 + 29, 30, 28, // tri1 + 29, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_ir_1_v[32], 11, 0), + gsSPNTrianglesInit_5b( + 9, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 6, 9, 8, // tri0 + 9, 10, 8, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_ir_1_v[43], 8, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 2, 1, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 2, 4, // tri0 + 6, 5, 4, // tri1 + 7, 6, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_ir_1_v[51], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 14, 15, 16, // tri2 + 17, 0, 18 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 15, // tri0 + 19, 6, 20, // tri1 + 4, 14, 16, // tri2 + 11, 21, 12 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 22, // tri0 + 21, 19, 22, // tri1 + 9, 11, 13, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 23, 27, // tri0 + 28, 29, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_ir_1_v[82], 7, 0), + gsSPNTrianglesInit_5b( + 3, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 0, 6 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_ir_1_v[89], 32, 0), + gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 9, 3, 11 // tri3 + ), + gsSPNTriangles_5b( + 9, 2, 3, // tri0 + 0, 12, 1, // tri1 + 0, 13, 12, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 12, // tri0 + 15, 16, 12, // tri1 + 16, 7, 12, // tri2 + 16, 17, 7 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 7, // tri0 + 17, 19, 18, // tri1 + 17, 20, 19, // tri2 + 18, 6, 7 // tri3 + ), + gsSPNTriangles_5b( + 6, 21, 4, // tri0 + 20, 22, 19, // tri1 + 22, 23, 19, // tri2 + 5, 24, 7 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 27, // tri0 + 26, 28, 27, // tri1 + 25, 29, 26, // tri2 + 29, 30, 26 // tri3 + ), + gsSPNTriangles_5b( + 30, 31, 26, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_ir_1_v[121], 10, 0), + gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_ir_1_v[131], 7, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 3, 4 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_ir_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_ir_1_v[176], 10, 0), + gsSPNTrianglesInit_5b( + 9, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 0 // tri2 + ), + gsSPNTriangles_5b( + 4, 0, 3, // tri0 + 6, 7, 4, // tri1 + 6, 4, 3, // tri2 + 2, 8, 9 // tri3 + ), + gsSPNTriangles_5b( + 3, 2, 9, // tri0 + 6, 3, 9, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_ir_1_v[186], 24, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 11, // tri0 + 13, 14, 11, // tri1 + 14, 15, 11, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 15, // tri0 + 17, 11, 15, // tri1 + 17, 10, 11, // tri2 + 14, 18, 16 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 16, // tri0 + 18, 20, 19, // tri1 + 20, 21, 19, // tri2 + 2, 22, 23 // tri3 + ), + gsSPNTriangles_5b( + 0, 2, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_ir_2/grd_s_ir_2.c b/src/data/field/bg/acre/grd_s_ir_2/grd_s_ir_2.c new file mode 100644 index 00000000..f8c0956f --- /dev/null +++ b/src/data/field/bg/acre/grd_s_ir_2/grd_s_ir_2.c @@ -0,0 +1,502 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_2_pal_dummy[]; +extern u8 bridge_2_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_ir_2_v[] = { +#include "assets/field/bg/grd_s_ir_2_v.inc" +}; + +extern Gfx grd_s_ir_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_ir_2_v[169], 32, 0), + gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 3, 6, 5, // tri1 + 3, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 6, // tri0 + 10, 11, 12, // tri1 + 11, 13, 12, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 16, // tri0 + 18, 10, 19, // tri1 + 10, 12, 19, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 18, // tri0 + 21, 14, 18, // tri1 + 14, 16, 18, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b( + 22, 25, 23, // tri0 + 25, 26, 27, // tri1 + 27, 23, 25, // tri2 + 26, 28, 29 // tri3 + ), + gsSPNTriangles_5b( + 29, 27, 26, // tri0 + 28, 17, 30, // tri1 + 28, 30, 29, // tri2 + 17, 15, 30 // tri3 + ), + gsSPNTriangles_5b( + 16, 31, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_ir_2_v[201], 8, 0), + gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_2_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_2_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_ir_2_v[257], 32, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 2, // tri0 + 6, 7, 8, // tri1 + 6, 8, 9, // tri2 + 10, 11, 7 // tri3 + ), + gsSPNTriangles_5b( + 10, 7, 6, // tri0 + 11, 12, 13, // tri1 + 11, 13, 7, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 14, 16, 17, // tri0 + 18, 14, 17, // tri1 + 18, 17, 19, // tri2 + 19, 17, 20 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 21, // tri0 + 22, 23, 24, // tri1 + 22, 24, 25, // tri2 + 26, 27, 23 // tri3 + ), + gsSPNTriangles_5b( + 26, 23, 22, // tri0 + 27, 28, 29, // tri1 + 27, 29, 23, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_ir_2_v[287], 24, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 3, 5, // tri0 + 5, 3, 6, // tri1 + 5, 6, 7, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b( + 8, 10, 11, // tri0 + 12, 11, 13, // tri1 + 12, 13, 14, // tri2 + 15, 8, 11 // tri3 + ), + gsSPNTriangles_5b( + 15, 11, 12, // tri0 + 16, 17, 18, // tri1 + 16, 18, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 20, 22, 17, // tri0 + 23, 20, 17, // tri1 + 23, 17, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_ir_2_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 31, // tri count + 0, 1, 2, // tri0 + 0, 1, 2, // tri1 + 3, 0, 2 // tri2 + ), + gsSPNTriangles_5b( + 3, 2, 4, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6, // tri2 + 7, 3, 6 // tri3 + ), + gsSPNTriangles_5b( + 7, 6, 8, // tri0 + 7, 8, 9, // tri1 + 10, 7, 9, // tri2 + 10, 9, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 12, // tri0 + 13, 10, 12, // tri1 + 14, 13, 12, // tri2 + 14, 12, 15 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 17, 14, 16, // tri1 + 17, 16, 18, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 17, 19, // tri0 + 20, 19, 21, // tri1 + 20, 21, 22, // tri2 + 23, 20, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 22, 24, // tri0 + 25, 23, 24, // tri1 + 25, 24, 26, // tri2 + 27, 25, 26 // tri3 + ), + gsSPNTriangles_5b( + 27, 26, 28, // tri0 + 29, 27, 28, // tri1 + 29, 28, 30, // tri2 + 31, 29, 30 // tri3 + ), + gsSPVertex(&grd_s_ir_2_v[32], 11, 0), + gsSPNTrianglesInit_5b( + 9, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 4, 7, // tri1 + 6, 3, 4, // tri2 + 5, 7, 8 // tri3 + ), + gsSPNTriangles_5b( + 9, 5, 8, // tri0 + 9, 8, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_ir_2_v[43], 14, 0), + gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 1, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 6, // tri0 + 8, 10, 9, // tri1 + 8, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_ir_2_v[57], 32, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 4, 8, // tri0 + 5, 9, 10, // tri1 + 9, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 14, 16, 15, // tri0 + 16, 7, 17, // tri1 + 18, 19, 20, // tri2 + 21, 18, 22 // tri3 + ), + gsSPNTriangles_5b( + 19, 23, 24, // tri0 + 23, 25, 26, // tri1 + 27, 21, 28, // tri2 + 29, 30, 27 // tri3 + ), + gsSPVertex(&grd_s_ir_2_v[88], 20, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 14, 15, 16, // tri2 + 17, 0, 18 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 15, // tri0 + 8, 19, 9, // tri1 + 4, 14, 16, // tri2 + 12, 8, 10 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_ir_2_v[108], 32, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 9, 10, 8, // tri2 + 10, 7, 8 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 14, 15, 12, // tri1 + 14, 16, 15, // tri2 + 15, 17, 12 // tri3 + ), + gsSPNTriangles_5b( + 17, 13, 12, // tri0 + 17, 18, 13, // tri1 + 16, 19, 15, // tri2 + 20, 21, 16 // tri3 + ), + gsSPNTriangles_5b( + 20, 22, 21, // tri0 + 21, 19, 16, // tri1 + 20, 23, 22, // tri2 + 20, 24, 23 // tri3 + ), + gsSPNTriangles_5b( + 20, 25, 24, // tri0 + 25, 26, 24, // tri1 + 25, 27, 26, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b( + 29, 31, 30, // tri0 + 31, 25, 30, // tri1 + 31, 27, 25, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_ir_2_v[140], 16, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 2, 1, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 5, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 10, // tri0 + 12, 13, 10, // tri1 + 13, 14, 10, // tri2 + 14, 15, 10 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_ir_2_v[156], 13, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 3, 6, 1, // tri0 + 6, 7, 1, // tri1 + 6, 5, 7, // tri2 + 4, 8, 5 // tri3 + ), + gsSPNTriangles_5b( + 4, 9, 8, // tri0 + 4, 10, 9, // tri1 + 11, 12, 9, // tri2 + 10, 11, 9 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_ir_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPVertex(&grd_s_ir_2_v[209], 19, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 3, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 0, 4, // tri0 + 1, 6, 7, // tri1 + 1, 0, 6, // tri2 + 0, 5, 6 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 5, // tri0 + 5, 10, 6, // tri1 + 5, 9, 10, // tri2 + 8, 11, 9 // tri3 + ), + gsSPNTriangles_5b( + 8, 12, 11, // tri0 + 8, 4, 13, // tri1 + 14, 8, 13, // tri2 + 8, 14, 12 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 12, // tri0 + 15, 16, 12, // tri1 + 14, 13, 17, // tri2 + 15, 14, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 15, 17, // tri0 + 8, 5, 4, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_ir_2_v[228], 29, 0), + gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b( + 5, 4, 3, // tri0 + 6, 5, 3, // tri1 + 6, 3, 7, // tri2 + 8, 6, 7 // tri3 + ), + gsSPNTriangles_5b( + 9, 8, 7, // tri0 + 9, 7, 10, // tri1 + 11, 9, 10, // tri2 + 11, 10, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 14, 11, 13, // tri1 + 14, 13, 15, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 17, // tri0 + 18, 14, 17, // tri1 + 19, 18, 17, // tri2 + 20, 19, 17 // tri3 + ), + gsSPNTriangles_5b( + 16, 21, 22, // tri0 + 17, 16, 22, // tri1 + 17, 22, 23, // tri2 + 20, 17, 23 // tri3 + ), + gsSPNTriangles_5b( + 24, 20, 23, // tri0 + 24, 23, 25, // tri1 + 26, 27, 28, // tri2 + 28, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 28, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_ir_3/grd_s_ir_3.c b/src/data/field/bg/acre/grd_s_ir_3/grd_s_ir_3.c new file mode 100644 index 00000000..0ca6c737 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_ir_3/grd_s_ir_3.c @@ -0,0 +1,540 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_2_pal_dummy[]; +extern u8 bridge_2_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_ir_3_v[] = { +#include "assets/field/bg/grd_s_ir_3_v.inc" +}; + +extern Gfx grd_s_ir_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_ir_3_v[179], 32, 0), + gsSPNTrianglesInit_5b( + 29, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 4, 6, // tri0 + 4, 8, 5, // tri1 + 9, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 13, 15, 14, // tri0 + 15, 2, 14, // tri1 + 15, 0, 2, // tri2 + 1, 16, 3 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 3, // tri0 + 16, 10, 17, // tri1 + 10, 18, 17, // tri2 + 16, 11, 10 // tri3 + ), + gsSPNTriangles_5b( + 9, 19, 10, // tri0 + 19, 18, 10, // tri1 + 19, 20, 18, // tri2 + 20, 21, 18 // tri3 + ), + gsSPNTriangles_5b( + 20, 22, 21, // tri0 + 22, 23, 21, // tri1 + 22, 24, 23, // tri2 + 24, 25, 23 // tri3 + ), + gsSPNTriangles_5b( + 24, 26, 25, // tri0 + 26, 27, 25, // tri1 + 26, 28, 27, // tri2 + 28, 29, 27 // tri3 + ), + gsSPNTriangles_5b( + 29, 30, 27, // tri0 + 29, 31, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_ir_3_v[211], 17, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 2, 5, 6, // tri0 + 5, 7, 6, // tri1 + 5, 8, 7, // tri2 + 8, 9, 7 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 7, // tri0 + 11, 12, 13, // tri1 + 14, 15, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_2_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_2_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_ir_3_v[263], 32, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b( + 3, 4, 5, // tri0 + 2, 6, 7, // tri1 + 2, 7, 4, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b( + 8, 10, 11, // tri0 + 12, 8, 11, // tri1 + 12, 11, 13, // tri2 + 14, 15, 8 // tri3 + ), + gsSPNTriangles_5b( + 14, 8, 12, // tri0 + 16, 17, 18, // tri1 + 16, 18, 19, // tri2 + 17, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 17, 21, 18, // tri0 + 22, 23, 24, // tri1 + 22, 24, 25, // tri2 + 23, 26, 27 // tri3 + ), + gsSPNTriangles_5b( + 23, 27, 24, // tri0 + 28, 29, 30, // tri1 + 28, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_ir_3_v[295], 32, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 2, // tri0 + 6, 7, 8, // tri1 + 6, 8, 9, // tri2 + 10, 6, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 9, 11, // tri0 + 11, 9, 12, // tri1 + 11, 12, 13, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 14, 16, 17, // tri0 + 18, 19, 15, // tri1 + 18, 15, 14, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 15, // tri0 + 22, 23, 24, // tri1 + 22, 24, 25, // tri2 + 26, 22, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 25, 27, // tri0 + 27, 25, 28, // tri1 + 27, 28, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_ir_3_v[325], 16, 0), + gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 3, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 6, // tri0 + 7, 0, 3, // tri1 + 7, 3, 4, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b( + 8, 10, 11, // tri0 + 12, 13, 14, // tri1 + 12, 14, 9, // tri2 + 15, 12, 9 // tri3 + ), + gsSPNTriangles_5b( + 15, 9, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_ir_3_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 7, // tri0 + 8, 4, 7, // tri1 + 8, 7, 9, // tri2 + 10, 8, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 9, 11, // tri0 + 12, 10, 11, // tri1 + 13, 12, 11, // tri2 + 13, 11, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 13, 14, // tri0 + 16, 15, 14, // tri1 + 16, 14, 17, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 16, 18, // tri0 + 20, 19, 18, // tri1 + 20, 18, 21, // tri2 + 22, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 23, 22, 21, // tri0 + 23, 21, 24, // tri1 + 25, 23, 24, // tri2 + 26, 25, 24 // tri3 + ), + gsSPNTriangles_5b( + 27, 26, 24, // tri0 + 27, 24, 28, // tri1 + 29, 27, 28, // tri2 + 29, 28, 30 // tri3 + ), + gsSPNTriangles_5b( + 31, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_ir_3_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 3, 4, // tri0 + 5, 4, 6, // tri1 + 7, 5, 6, // tri2 + 7, 6, 8 // tri3 + ), + gsSPNTriangles_5b( + 9, 7, 8, // tri0 + 10, 11, 12, // tri1 + 13, 10, 12, // tri2 + 13, 12, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 17, 16, 18, // tri1 + 19, 17, 18, // tri2 + 19, 18, 20 // tri3 + ), + gsSPNTriangles_5b( + 21, 19, 20, // tri0 + 21, 20, 22, // tri1 + 23, 21, 22, // tri2 + 23, 22, 24 // tri3 + ), + gsSPNTriangles_5b( + 25, 23, 24, // tri0 + 25, 24, 26, // tri1 + 27, 25, 26, // tri2 + 27, 26, 28 // tri3 + ), + gsSPNTriangles_5b( + 29, 27, 28, // tri0 + 29, 28, 30, // tri1 + 31, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_ir_3_v[64], 8, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 3, 5, // tri0 + 6, 4, 5, // tri1 + 6, 5, 7, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_ir_3_v[72], 4, 0), + gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_ir_3_v[76], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 9, 10, 11, // tri1 + 0, 9, 12, // tri2 + 0, 12, 1 // tri3 + ), + gsSPNTriangles_5b( + 7, 13, 8, // tri0 + 14, 8, 13, // tri1 + 14, 15, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 17, 21, // tri0 + 22, 23, 24, // tri1 + 25, 22, 26, // tri2 + 18, 27, 28 // tri3 + ), + gsSPNTriangles_5b( + 27, 25, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_ir_3_v[106], 15, 0), + gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 6, 3, 8, // tri0 + 9, 10, 11, // tri1 + 10, 12, 13, // tri2 + 12, 5, 14 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_ir_3_v[121], 32, 0), + gsSPNTrianglesInit_5b( + 29, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 7, 10, 8, // tri1 + 8, 11, 9, // tri2 + 11, 12, 9 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 9, // tri0 + 12, 14, 13, // tri1 + 11, 15, 12, // tri2 + 15, 16, 12 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 12, // tri0 + 16, 18, 17, // tri1 + 17, 19, 12, // tri2 + 19, 14, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 20, 15, // tri0 + 16, 21, 18, // tri1 + 16, 22, 21, // tri2 + 16, 23, 22 // tri3 + ), + gsSPNTriangles_5b( + 10, 24, 25, // tri0 + 24, 6, 25, // tri1 + 24, 26, 6, // tri2 + 26, 27, 6 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 6, // tri0 + 28, 29, 6, // tri1 + 29, 30, 6, // tri2 + 30, 5, 6 // tri3 + ), + gsSPNTriangles_5b( + 5, 31, 3, // tri0 + 4, 25, 6, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_ir_3_v[153], 22, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 3, // tri0 + 5, 6, 3, // tri1 + 6, 7, 3, // tri2 + 2, 8, 9 // tri3 + ), + gsSPNTriangles_5b( + 8, 10, 9, // tri0 + 8, 11, 10, // tri1 + 12, 13, 14, // tri2 + 13, 15, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 14, // tri0 + 16, 17, 14, // tri1 + 17, 18, 14, // tri2 + 17, 19, 18 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_ir_3_v[175], 4, 0), + gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_ir_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPVertex(&grd_s_ir_3_v[228], 6, 0), + gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 3, 2 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_ir_3_v[234], 29, 0), + gsSPNTrianglesInit_5b( + 30, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 3, 4, // tri0 + 5, 4, 6, // tri1 + 7, 5, 6, // tri2 + 7, 6, 8 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 7, // tri0 + 8, 11, 12, // tri1 + 7, 8, 12, // tri2 + 9, 7, 12 // tri3 + ), + gsSPNTriangles_5b( + 9, 12, 11, // tri0 + 13, 9, 14, // tri1 + 9, 11, 14, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 13, 15, // tri0 + 11, 17, 18, // tri1 + 14, 11, 18, // tri2 + 19, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 19, 15, 20, // tri0 + 21, 19, 20, // tri1 + 22, 21, 20, // tri2 + 22, 20, 18 // tri3 + ), + gsSPNTriangles_5b( + 22, 18, 23, // tri0 + 18, 17, 23, // tri1 + 24, 22, 23, // tri2 + 24, 23, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 27, 28, // tri0 + 24, 25, 26, // tri1 + 24, 26, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_ir_4/grd_s_ir_4.c b/src/data/field/bg/acre/grd_s_ir_4/grd_s_ir_4.c new file mode 100644 index 00000000..e7cfa32d --- /dev/null +++ b/src/data/field/bg/acre/grd_s_ir_4/grd_s_ir_4.c @@ -0,0 +1,466 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_2_pal_dummy[]; +extern u8 bridge_2_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_ir_4_v[] = { +#include "assets/field/bg/grd_s_ir_4_v.inc" +}; + +extern Gfx grd_s_ir_4_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_ir_4_v[160], 32, 0), + gsSPNTrianglesInit_5b( + 30, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b( + 4, 2, 1, // tri0 + 3, 6, 5, // tri1 + 6, 7, 5, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 7, // tri0 + 8, 10, 9, // tri1 + 9, 11, 7, // tri2 + 10, 12, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 13, 12, // tri0 + 13, 14, 12, // tri1 + 13, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 16, // tri0 + 15, 18, 17, // tri1 + 17, 19, 16, // tri2 + 17, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 17, 21, 20, // tri0 + 15, 22, 18, // tri1 + 18, 23, 17, // tri2 + 23, 24, 17 // tri3 + ), + gsSPNTriangles_5b( + 24, 21, 17, // tri0 + 23, 25, 24, // tri1 + 23, 26, 25, // tri2 + 26, 27, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 28, 27, // tri0 + 28, 29, 27, // tri1 + 28, 30, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_ir_4_v[191], 4, 0), + gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 0, 0, 0 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_2_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_2_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_ir_4_v[229], 32, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 2, // tri0 + 6, 7, 8, // tri1 + 6, 8, 9, // tri2 + 10, 11, 7 // tri3 + ), + gsSPNTriangles_5b( + 10, 7, 6, // tri0 + 11, 12, 13, // tri1 + 11, 13, 7, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 14, 16, 17, // tri0 + 18, 14, 17, // tri1 + 18, 17, 19, // tri2 + 19, 17, 20 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 21, // tri0 + 22, 23, 24, // tri1 + 22, 24, 25, // tri2 + 26, 27, 23 // tri3 + ), + gsSPNTriangles_5b( + 26, 23, 22, // tri0 + 27, 28, 29, // tri1 + 27, 29, 23, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_ir_4_v[259], 24, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 3, 5, // tri0 + 5, 3, 6, // tri1 + 5, 6, 7, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b( + 8, 10, 11, // tri0 + 12, 11, 13, // tri1 + 12, 13, 14, // tri2 + 15, 8, 11 // tri3 + ), + gsSPNTriangles_5b( + 15, 11, 12, // tri0 + 16, 17, 18, // tri1 + 16, 18, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 20, 22, 17, // tri0 + 23, 20, 17, // tri1 + 23, 17, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_ir_4_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 30, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 3, 5, // tri0 + 6, 4, 5, // tri1 + 6, 5, 7, // tri2 + 8, 6, 7 // tri3 + ), + gsSPNTriangles_5b( + 8, 7, 9, // tri0 + 10, 8, 9, // tri1 + 10, 9, 11, // tri2 + 12, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 11, 13, // tri0 + 14, 12, 13, // tri1 + 15, 14, 13, // tri2 + 16, 15, 13 // tri3 + ), + gsSPNTriangles_5b( + 16, 13, 17, // tri0 + 18, 16, 17, // tri1 + 18, 17, 19, // tri2 + 20, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 19, 21, // tri0 + 22, 20, 21, // tri1 + 23, 22, 21, // tri2 + 23, 21, 24 // tri3 + ), + gsSPNTriangles_5b( + 25, 23, 24, // tri0 + 26, 25, 24, // tri1 + 26, 24, 27, // tri2 + 28, 26, 27 // tri3 + ), + gsSPNTriangles_5b( + 29, 28, 27, // tri0 + 30, 29, 27, // tri1 + 30, 27, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_ir_4_v[32], 22, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 3, 4, // tri0 + 6, 5, 4, // tri1 + 7, 6, 4, // tri2 + 7, 4, 8 // tri3 + ), + gsSPNTriangles_5b( + 9, 7, 8, // tri0 + 10, 9, 8, // tri1 + 10, 8, 11, // tri2 + 12, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 13, 12, 11, // tri0 + 13, 11, 14, // tri1 + 15, 13, 14, // tri2 + 15, 14, 16 // tri3 + ), + gsSPNTriangles_5b( + 17, 15, 16, // tri0 + 17, 16, 18, // tri1 + 19, 17, 18, // tri2 + 20, 19, 18 // tri3 + ), + gsSPNTriangles_5b( + 21, 20, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_ir_4_v[54], 5, 0), + gsSPNTrianglesInit_5b( + 3, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 3, 2, 4 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_ir_4_v[59], 32, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 5, 9, // tri0 + 1, 10, 11, // tri1 + 10, 8, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 13, 16, 14, // tri0 + 16, 17, 14, // tri1 + 18, 19, 20, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b( + 15, 21, 24, // tri0 + 25, 26, 27, // tri1 + 28, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_ir_4_v[90], 12, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 1 // tri2 + ), + gsSPNTriangles_5b( + 6, 0, 2, // tri0 + 7, 8, 9, // tri1 + 10, 7, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_ir_4_v[102], 32, 0), + gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 4, 8, 5, // tri1 + 7, 9, 6, // tri2 + 7, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 7, 11, 10, // tri0 + 7, 12, 11, // tri1 + 7, 2, 12, // tri2 + 2, 13, 12 // tri3 + ), + gsSPNTriangles_5b( + 2, 14, 13, // tri0 + 2, 15, 14, // tri1 + 2, 3, 15, // tri2 + 8, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 8, 18, 16, // tri0 + 8, 17, 5, // tri1 + 16, 19, 17, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 21, 23, 22, // tri0 + 23, 24, 22, // tri1 + 24, 25, 22, // tri2 + 25, 26, 22 // tri3 + ), + gsSPNTriangles_5b( + 24, 27, 25, // tri0 + 24, 28, 27, // tri1 + 24, 29, 28, // tri2 + 27, 30, 25 // tri3 + ), + gsSPNTriangles_5b( + 30, 31, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_ir_4_v[134], 22, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 1, // tri0 + 4, 6, 5, // tri1 + 7, 8, 9, // tri2 + 7, 10, 8 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 8, // tri0 + 11, 12, 8, // tri1 + 12, 13, 8, // tri2 + 13, 14, 8 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 8, // tri0 + 15, 16, 8, // tri1 + 16, 9, 8, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 17, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_ir_4_v[156], 4, 0), + gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_ir_4_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPVertex(&grd_s_ir_4_v[195], 6, 0), + gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 1, 0, 3 // tri2 + ), + gsSPNTriangles_5b( + 5, 0, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_ir_4_v[201], 28, 0), + gsSPNTrianglesInit_5b( + 27, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 0, 3, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 3, 9, 4, // tri2 + 3, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 9, // tri0 + 10, 7, 11, // tri1 + 7, 8, 11, // tri2 + 6, 12, 8 // tri3 + ), + gsSPNTriangles_5b( + 6, 13, 12, // tri0 + 13, 14, 12, // tri1 + 13, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 14, // tri0 + 16, 18, 17, // tri1 + 16, 19, 18, // tri2 + 15, 20, 16 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 16, // tri0 + 21, 19, 16, // tri1 + 15, 22, 20, // tri2 + 21, 23, 19 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 19, // tri0 + 23, 25, 24, // tri1 + 25, 26, 24, // tri2 + 26, 27, 24 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_m_1/grd_s_m_1.c b/src/data/field/bg/acre/grd_s_m_1/grd_s_m_1.c new file mode 100644 index 00000000..6bb49a8c --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_1/grd_s_m_1.c @@ -0,0 +1,399 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_m_1_v[] = { +#include "assets/field/bg/grd_s_m_1_v.inc" +}; + +extern Gfx grd_s_m_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_1_v[134], 27, 0), + gsSPNTrianglesInit_5b( + 33, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 2, // tri0 + 5, 6, 2, // tri1 + 6, 7, 2, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 7, // tri0 + 9, 10, 7, // tri1 + 9, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 10, // tri0 + 12, 14, 13, // tri1 + 15, 16, 14, // tri2 + 15, 14, 12 // tri3 + ), + gsSPNTriangles_5b( + 17, 15, 12, // tri0 + 18, 17, 12, // tri1 + 18, 12, 11, // tri2 + 18, 11, 9 // tri3 + ), + gsSPNTriangles_5b( + 19, 18, 9, // tri0 + 19, 9, 8, // tri1 + 20, 19, 8, // tri2 + 21, 20, 8 // tri3 + ), + gsSPNTriangles_5b( + 21, 8, 6, // tri0 + 22, 21, 6, // tri1 + 22, 6, 5, // tri2 + 23, 4, 1 // tri3 + ), + gsSPNTriangles_5b( + 23, 1, 3, // tri0 + 24, 22, 5, // tri1 + 24, 5, 4, // tri2 + 25, 24, 4 // tri3 + ), + gsSPNTriangles_5b( + 23, 25, 4, // tri0 + 26, 23, 3, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_1_v[0], 25, 0), + gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 4, 0, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 3, 5, // tri0 + 5, 6, 4, // tri1 + 0, 7, 1, // tri2 + 8, 9, 1 // tri3 + ), + gsSPNTriangles_5b( + 1, 7, 8, // tri0 + 10, 11, 9, // tri1 + 9, 8, 10, // tri2 + 12, 13, 11 // tri3 + ), + gsSPNTriangles_5b( + 11, 10, 12, // tri0 + 12, 14, 13, // tri1 + 15, 16, 13, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 16, // tri0 + 16, 15, 17, // tri1 + 17, 19, 18, // tri2 + 17, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 19, // tri0 + 20, 22, 21, // tri1 + 22, 23, 21, // tri2 + 22, 24, 23 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_m_1_v[25], 32, 0), + gsSPNTrianglesInit_5b( + 30, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 2, // tri0 + 5, 6, 2, // tri1 + 5, 7, 6, // tri2 + 3, 8, 9 // tri3 + ), + gsSPNTriangles_5b( + 8, 10, 9, // tri0 + 11, 12, 13, // tri1 + 11, 14, 12, // tri2 + 12, 15, 13 // tri3 + ), + gsSPNTriangles_5b( + 11, 16, 14, // tri0 + 11, 17, 16, // tri1 + 17, 18, 16, // tri2 + 17, 19, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 18, // tri0 + 20, 21, 18, // tri1 + 19, 22, 20, // tri2 + 22, 23, 20 // tri3 + ), + gsSPNTriangles_5b( + 22, 24, 23, // tri0 + 24, 25, 23, // tri1 + 24, 26, 25, // tri2 + 26, 27, 25 // tri3 + ), + gsSPNTriangles_5b( + 6, 28, 29, // tri0 + 6, 21, 28, // tri1 + 6, 7, 21, // tri2 + 7, 18, 21 // tri3 + ), + gsSPNTriangles_5b( + 25, 30, 23, // tri0 + 25, 31, 30, // tri1 + 31, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_1_v[57], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 7, 4, // tri0 + 9, 10, 11, // tri1 + 12, 13, 10, // tri2 + 14, 11, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 15, 6, // tri0 + 4, 3, 8, // tri1 + 6, 5, 16, // tri2 + 13, 12, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 17, 19, // tri0 + 19, 20, 18, // tri1 + 21, 22, 20, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 27, 24, // tri0 + 28, 29, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_1_v[87], 22, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 2, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 6, 8, // tri0 + 9, 10, 11, // tri1 + 12, 13, 10, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 17, 11, 15, // tri0 + 18, 16, 19, // tri1 + 20, 19, 21, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_1_v[109], 25, 0), + gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 2, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 6, // tri0 + 8, 10, 9, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 13, 12, // tri0 + 13, 14, 12, // tri1 + 13, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 14, // tri0 + 16, 18, 17, // tri1 + 16, 19, 18, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 20, // tri0 + 19, 22, 21, // tri1 + 22, 23, 21, // tri2 + 23, 24, 21 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_m_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_1_v[161], 32, 0), + gsSPNTrianglesInit_5b( + 38, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 3, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 2, 5, // tri0 + 4, 5, 6, // tri1 + 7, 4, 6, // tri2 + 7, 6, 8 // tri3 + ), + gsSPNTriangles_5b( + 9, 7, 8, // tri0 + 9, 8, 10, // tri1 + 11, 9, 10, // tri2 + 11, 10, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 14, 11, 13, // tri1 + 14, 13, 15, // tri2 + 16, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 17, 16, 15, // tri0 + 17, 15, 18, // tri1 + 17, 18, 19, // tri2 + 20, 17, 19 // tri3 + ), + gsSPNTriangles_5b( + 21, 20, 19, // tri0 + 1, 22, 23, // tri1 + 2, 1, 23, // tri2 + 5, 2, 23 // tri3 + ), + gsSPNTriangles_5b( + 5, 23, 24, // tri0 + 5, 24, 25, // tri1 + 6, 5, 25, // tri2 + 6, 25, 26 // tri3 + ), + gsSPNTriangles_5b( + 6, 26, 27, // tri0 + 8, 6, 27, // tri1 + 10, 8, 27, // tri2 + 10, 27, 28 // tri3 + ), + gsSPNTriangles_5b( + 12, 10, 28, // tri0 + 12, 28, 29, // tri1 + 12, 29, 30, // tri2 + 13, 12, 30 // tri3 + ), + gsSPNTriangles_5b( + 13, 30, 31, // tri0 + 15, 13, 31, // tri1 + 18, 15, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_1_v[193], 7, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 4, // tri0 + 5, 4, 3, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_m_1_v[200], 24, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 3, 0 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 4, // tri0 + 6, 3, 4, // tri1 + 7, 6, 5, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 9, 8, 7, // tri0 + 10, 11, 9, // tri1 + 11, 8, 9, // tri2 + 12, 11, 10 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 11, // tri0 + 14, 13, 12, // tri1 + 15, 16, 14, // tri2 + 16, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 17, 16, 15, // tri0 + 17, 18, 16, // tri1 + 19, 18, 17, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b( + 21, 20, 19, // tri0 + 22, 23, 21, // tri1 + 23, 20, 21, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_m_10/grd_s_m_10.c b/src/data/field/bg/acre/grd_s_m_10/grd_s_m_10.c new file mode 100644 index 00000000..d9a635ae --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_10/grd_s_m_10.c @@ -0,0 +1,403 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_m_10_v[] = { +#include "assets/field/bg/grd_s_m_10_v.inc" +}; + +extern Gfx grd_s_m_10_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_10_v[147], 25, 0), + gsSPNTrianglesInit_5b( + 30, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 11, // tri0 + 12, 14, 13, // tri1 + 14, 15, 13, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 15, // tri0 + 16, 18, 17, // tri1 + 18, 19, 17, // tri2 + 1, 20, 3 // tri3 + ), + gsSPNTriangles_5b( + 20, 5, 3, // tri0 + 20, 21, 5, // tri1 + 21, 7, 5, // tri2 + 21, 22, 7 // tri3 + ), + gsSPNTriangles_5b( + 22, 9, 7, // tri0 + 22, 12, 9, // tri1 + 22, 23, 12, // tri2 + 23, 14, 12 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 14, // tri0 + 24, 16, 14, // tri1 + 24, 18, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_10_v[134], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_10_v[0], 21, 0), + gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 2, 3, 4 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 4, 6, 7, // tri1 + 4, 5, 6, // tri2 + 7, 6, 8 // tri3 + ), + gsSPNTriangles_5b( + 6, 9, 8, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 13, 14, 12, // tri1 + 14, 13, 15, // tri2 + 13, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 15, // tri0 + 18, 19, 20, // tri1 + 19, 1, 20, // tri2 + 1, 0, 20 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_10_v[21], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 8, 6, 10, // tri1 + 11, 12, 13, // tri2 + 12, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 14, 18, 15, // tri1 + 19, 20, 17, // tri2 + 21, 22, 20 // tri3 + ), + gsSPNTriangles_5b( + 21, 23, 22, // tri0 + 23, 24, 22, // tri1 + 25, 26, 24, // tri2 + 25, 27, 26 // tri3 + ), + gsSPNTriangles_5b( + 28, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_10_v[52], 14, 0), + gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 5 // tri2 + ), + gsSPNTriangles_5b( + 7, 2, 4, // tri0 + 8, 9, 10, // tri1 + 11, 12, 13, // tri2 + 12, 10, 13 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_m_10_v[66], 32, 0), + gsSPNTrianglesInit_5b( + 30, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 4 // tri2 + ), + gsSPNTriangles_5b( + 6, 8, 7, // tri0 + 6, 9, 8, // tri1 + 6, 10, 9, // tri2 + 10, 11, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 9, // tri0 + 12, 13, 9, // tri1 + 11, 14, 12, // tri2 + 11, 15, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 14, // tri0 + 15, 17, 16, // tri1 + 15, 18, 17, // tri2 + 8, 19, 7 // tri3 + ), + gsSPNTriangles_5b( + 19, 2, 7, // tri0 + 1, 0, 20, // tri1 + 5, 21, 3, // tri2 + 21, 22, 3 // tri3 + ), + gsSPNTriangles_5b( + 21, 23, 22, // tri0 + 23, 24, 22, // tri1 + 24, 25, 22, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b( + 26, 20, 27, // tri0 + 26, 29, 20, // tri1 + 20, 13, 27, // tri2 + 13, 12, 27 // tri3 + ), + gsSPNTriangles_5b( + 20, 0, 13, // tri0 + 6, 4, 30, // tri1 + 4, 3, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_10_v[97], 4, 0), + gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_10_v[101], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_10_v[114], 20, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 5, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 7, // tri0 + 8, 10, 9, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 11, // tri0 + 12, 14, 13, // tri1 + 12, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 14, // tri0 + 16, 18, 17, // tri1 + 18, 19, 17, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_m_10_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_10_v[172], 29, 0), + gsSPNTrianglesInit_5b( + 36, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 3, 4, // tri0 + 6, 5, 4, // tri1 + 6, 4, 7, // tri2 + 6, 7, 8 // tri3 + ), + gsSPNTriangles_5b( + 9, 6, 8, // tri0 + 9, 8, 10, // tri1 + 11, 9, 10, // tri2 + 11, 10, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 11, 12, // tri0 + 13, 12, 14, // tri1 + 13, 14, 15, // tri2 + 16, 13, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 15, 17, // tri0 + 18, 19, 17, // tri1 + 19, 16, 17, // tri2 + 2, 1, 20 // tri3 + ), + gsSPNTriangles_5b( + 21, 2, 20, // tri0 + 4, 2, 21, // tri1 + 7, 4, 21, // tri2 + 7, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 7, 22, // tri0 + 23, 8, 7, // tri1 + 24, 8, 23, // tri2 + 24, 10, 8 // tri3 + ), + gsSPNTriangles_5b( + 25, 12, 24, // tri0 + 12, 10, 24, // tri1 + 18, 17, 26, // tri2 + 26, 17, 27 // tri3 + ), + gsSPNTriangles_5b( + 17, 15, 27, // tri0 + 27, 15, 28, // tri1 + 15, 14, 28, // tri2 + 14, 25, 28 // tri3 + ), + gsSPNTriangles_5b( + 14, 12, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_m_10_v[201], 22, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 3, // tri0 + 6, 4, 3, // tri1 + 1, 7, 2, // tri2 + 1, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 7, // tri0 + 8, 10, 9, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 13, 12, // tri0 + 13, 14, 12, // tri1 + 13, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 16, // tri0 + 15, 18, 17, // tri1 + 15, 19, 18, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_m_2/grd_s_m_2.c b/src/data/field/bg/acre/grd_s_m_2/grd_s_m_2.c new file mode 100644 index 00000000..f8f41a52 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_2/grd_s_m_2.c @@ -0,0 +1,412 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_m_2_v[] = { +#include "assets/field/bg/grd_s_m_2_v.inc" +}; + +extern Gfx grd_s_m_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_2_v[163], 27, 0), + gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 3, 4 // tri2 + ), + gsSPNTriangles_5b( + 0, 4, 5, // tri0 + 6, 0, 5, // tri1 + 6, 5, 7, // tri2 + 6, 7, 8 // tri3 + ), + gsSPNTriangles_5b( + 9, 6, 8, // tri0 + 9, 10, 11, // tri1 + 9, 8, 10, // tri2 + 9, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 9, 12, // tri0 + 14, 13, 12, // tri1 + 2, 15, 16, // tri2 + 3, 2, 16 // tri3 + ), + gsSPNTriangles_5b( + 3, 16, 17, // tri0 + 4, 3, 17, // tri1 + 4, 17, 18, // tri2 + 11, 10, 19 // tri3 + ), + gsSPNTriangles_5b( + 11, 19, 20, // tri0 + 11, 20, 21, // tri1 + 12, 11, 21, // tri2 + 12, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 14, 12, 22, // tri0 + 23, 14, 22, // tri1 + 4, 24, 25, // tri2 + 4, 18, 24 // tri3 + ), + gsSPNTriangles_5b( + 18, 26, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_2_v[148], 15, 0), + gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 12, 13, // tri2 + 12, 7, 14 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_2_v[0], 19, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 6, // tri0 + 3, 5, 4, // tri1 + 7, 8, 6, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b( + 6, 5, 7, // tri0 + 8, 7, 9, // tri1 + 11, 12, 10, // tri2 + 10, 9, 11 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 12, // tri0 + 15, 16, 14, // tri1 + 14, 13, 15, // tri2 + 12, 11, 13 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 16, // tri0 + 17, 18, 16, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_2_v[19], 19, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 5, 6, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 8, 9, 7, // tri1 + 7, 5, 8, // tri2 + 4, 3, 5 // tri3 + ), + gsSPNTriangles_5b( + 2, 3, 0, // tri0 + 10, 11, 12, // tri1 + 12, 13, 14, // tri2 + 13, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 16, 14, 13, // tri0 + 15, 17, 16, // tri1 + 12, 18, 10, // tri2 + 14, 18, 12 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_2_v[38], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 0, 6, 1, // tri0 + 9, 10, 11, // tri1 + 10, 0, 2, // tri2 + 12, 3, 5 // tri3 + ), + gsSPNTriangles_5b( + 7, 12, 13, // tri0 + 3, 14, 4, // tri1 + 14, 15, 16, // tri2 + 17, 9, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 21, // tri0 + 22, 19, 23, // tri1 + 24, 25, 26, // tri2 + 20, 24, 27 // tri3 + ), + gsSPNTriangles_5b( + 25, 28, 29, // tri0 + 28, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_m_2_v[70], 32, 0), + gsSPNTrianglesInit_5b( + 31, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 4 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 7, // tri0 + 8, 4, 7, // tri1 + 9, 10, 8, // tri2 + 10, 9, 11 // tri3 + ), + gsSPNTriangles_5b( + 2, 1, 10, // tri0 + 10, 12, 2, // tri1 + 10, 11, 12, // tri2 + 10, 1, 4 // tri3 + ), + gsSPNTriangles_5b( + 4, 8, 10, // tri0 + 9, 13, 11, // tri1 + 14, 15, 0, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 14, 17, // tri0 + 15, 16, 18, // tri1 + 18, 19, 15, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 19, // tri0 + 20, 22, 21, // tri1 + 22, 23, 21, // tri2 + 22, 24, 23 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 22, // tri0 + 26, 24, 22, // tri1 + 25, 27, 26, // tri2 + 28, 27, 25 // tri3 + ), + gsSPNTriangles_5b( + 17, 29, 28, // tri0 + 29, 30, 28, // tri1 + 30, 31, 28, // tri2 + 31, 27, 28 // tri3 + ), + gsSPVertex(&grd_s_m_2_v[102], 12, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 3, 6, 5, // tri1 + 3, 7, 6, // tri2 + 6, 7, 8 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 9, 7, 10, // tri1 + 10, 7, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_2_v[114], 15, 0), + gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 1, 7, 8, // tri0 + 7, 9, 10, // tri1 + 9, 11, 12, // tri2 + 11, 13, 14 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_2_v[129], 19, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 3, 5, // tri0 + 6, 4, 5, // tri1 + 6, 5, 7, // tri2 + 8, 6, 7 // tri3 + ), + gsSPNTriangles_5b( + 8, 7, 9, // tri0 + 10, 11, 12, // tri1 + 10, 12, 13, // tri2 + 14, 10, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 13, 15, // tri0 + 16, 14, 15, // tri1 + 17, 16, 15, // tri2 + 18, 17, 15 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_m_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPVertex(&grd_s_m_2_v[190], 27, 0), + gsSPNTrianglesInit_5b( + 29, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 1, 4 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 2, // tri0 + 5, 6, 2, // tri1 + 3, 4, 7, // tri2 + 5, 3, 7 // tri3 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 9, 5, 8, // tri1 + 5, 9, 6, // tri2 + 9, 10, 6 // tri3 + ), + gsSPNTriangles_5b( + 9, 11, 10, // tri0 + 11, 9, 8, // tri1 + 12, 11, 8, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 13, 15, // tri0 + 13, 16, 17, // tri1 + 13, 17, 18, // tri2 + 16, 19, 17 // tri3 + ), + gsSPNTriangles_5b( + 16, 20, 19, // tri0 + 20, 16, 15, // tri1 + 20, 15, 21, // tri2 + 22, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 20, 22, 23, // tri0 + 20, 23, 19, // tri1 + 22, 24, 23, // tri2 + 22, 25, 24 // tri3 + ), + gsSPNTriangles_5b( + 26, 25, 22, // tri0 + 26, 22, 21, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_m_2_v[217], 26, 0), + gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 5, 9, 7, // tri0 + 7, 10, 8, // tri1 + 7, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 11, 14, 13, // tri1 + 14, 15, 13, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 15, // tri0 + 16, 18, 19, // tri1 + 16, 20, 18, // tri2 + 16, 21, 20 // tri3 + ), + gsSPNTriangles_5b( + 16, 22, 21, // tri0 + 20, 23, 18, // tri1 + 20, 24, 23, // tri2 + 24, 25, 23 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_m_3/grd_s_m_3.c b/src/data/field/bg/acre/grd_s_m_3/grd_s_m_3.c new file mode 100644 index 00000000..59dc848c --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_3/grd_s_m_3.c @@ -0,0 +1,374 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_m_3_v[] = { +#include "assets/field/bg/grd_s_m_3_v.inc" +}; + +extern Gfx grd_s_m_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_3_v[153], 27, 0), + gsSPNTrianglesInit_5b( + 27, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 2, // tri0 + 5, 6, 2, // tri1 + 7, 8, 9, // tri2 + 7, 4, 8 // tri3 + ), + gsSPNTriangles_5b( + 8, 10, 9, // tri0 + 10, 11, 9, // tri1 + 11, 12, 9, // tri2 + 11, 13, 12 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 14, 13, 15, // tri1 + 13, 11, 15, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 17, 20, 18, // tri0 + 18, 21, 19, // tri1 + 20, 22, 18, // tri2 + 20, 23, 22 // tri3 + ), + gsSPNTriangles_5b( + 20, 0, 23, // tri0 + 0, 24, 23, // tri1 + 0, 2, 24, // tri2 + 2, 25, 24 // tri3 + ), + gsSPNTriangles_5b( + 2, 6, 25, // tri0 + 6, 26, 25, // tri1 + 0, 20, 4, // tri2 + 20, 17, 4 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_3_v[0], 25, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 5, 7, // tri1 + 8, 7, 9, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b( + 11, 8, 10, // tri0 + 11, 10, 12, // tri1 + 11, 12, 13, // tri2 + 14, 11, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 13, 15, // tri0 + 16, 14, 15, // tri1 + 16, 15, 17, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 21, 18, 20, // tri0 + 22, 21, 20, // tri1 + 19, 18, 23, // tri2 + 17, 19, 23 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 23, // tri0 + 3, 4, 24, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_3_v[25], 17, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 7, 8, 9, // tri2 + 10, 7, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 0, // tri0 + 12, 1, 0, // tri1 + 13, 12, 14, // tri2 + 12, 11, 14 // tri3 + ), + gsSPNTriangles_5b( + 5, 15, 6, // tri0 + 15, 16, 6, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_3_v[42], 32, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 5, 9, // tri1 + 10, 11, 12, // tri2 + 6, 10, 13 // tri3 + ), + gsSPNTriangles_5b( + 11, 14, 15, // tri0 + 14, 16, 17, // tri1 + 18, 19, 20, // tri2 + 21, 18, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 24, 21, 26, // tri1 + 27, 28, 29, // tri2 + 28, 23, 30 // tri3 + ), + gsSPVertex(&grd_s_m_3_v[73], 14, 0), + gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 3 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 6, // tri0 + 8, 10, 9, // tri1 + 8, 11, 10, // tri2 + 11, 12, 13 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_m_3_v[87], 32, 0), + gsSPNTrianglesInit_5b( + 27, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 2, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b( + 5, 11, 2, // tri0 + 2, 12, 13, // tri1 + 2, 14, 12, // tri2 + 12, 15, 13 // tri3 + ), + gsSPNTriangles_5b( + 1, 0, 16, // tri0 + 0, 10, 16, // tri1 + 6, 17, 7, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 20, // tri0 + 19, 22, 21, // tri1 + 20, 23, 18, // tri2 + 24, 6, 25 // tri3 + ), + gsSPNTriangles_5b( + 6, 8, 25, // tri0 + 26, 27, 17, // tri1 + 27, 7, 17, // tri2 + 9, 7, 28 // tri3 + ), + gsSPNTriangles_5b( + 15, 29, 13, // tri0 + 29, 25, 13, // tri1 + 29, 24, 25, // tri2 + 11, 14, 2 // tri3 + ), + gsSPVertex(&grd_s_m_3_v[117], 19, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 3, 4, 14, // tri0 + 15, 16, 17, // tri1 + 16, 18, 17, // tri2 + 18, 0, 17 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_3_v[136], 17, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 7, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b( + 9, 11, 10, // tri0 + 11, 12, 10, // tri1 + 11, 13, 12, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 12, // tri0 + 4, 16, 5, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_m_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_3_v[180], 24, 0), + gsSPNTrianglesInit_5b( + 25, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 9, 6, 8, // tri0 + 10, 9, 8, // tri1 + 10, 8, 11, // tri2 + 1, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 1, 11, 12, // tri0 + 13, 1, 12, // tri1 + 13, 12, 14, // tri2 + 5, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 3, 5, 14, // tri0 + 15, 16, 17, // tri1 + 15, 17, 18, // tri2 + 19, 17, 16 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 17, // tri0 + 4, 21, 5, // tri1 + 21, 2, 5, // tri2 + 2, 13, 5 // tri3 + ), + gsSPNTriangles_5b( + 2, 1, 13, // tri0 + 0, 10, 1, // tri1 + 0, 22, 10, // tri2 + 22, 9, 10 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 9, // tri0 + 23, 6, 9, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_m_3_v[204], 26, 0), + gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 2, // tri0 + 3, 6, 4, // tri1 + 3, 7, 6, // tri2 + 3, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 5, // tri0 + 10, 2, 5, // tri1 + 11, 12, 9, // tri2 + 12, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 13, 12, 11, // tri0 + 14, 12, 13, // tri1 + 14, 15, 12, // tri2 + 8, 16, 7 // tri3 + ), + gsSPNTriangles_5b( + 8, 17, 16, // tri0 + 17, 18, 16, // tri1 + 17, 19, 18, // tri2 + 17, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 22, // tri0 + 20, 23, 21, // tri1 + 20, 24, 23, // tri2 + 20, 25, 24 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_m_4/grd_s_m_4.c b/src/data/field/bg/acre/grd_s_m_4/grd_s_m_4.c new file mode 100644 index 00000000..f6b47569 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_4/grd_s_m_4.c @@ -0,0 +1,389 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_m_4_v[] = { +#include "assets/field/bg/grd_s_m_4_v.inc" +}; + +extern Gfx grd_s_m_4_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_4_v[116], 26, 0), + gsSPNTrianglesInit_5b( + 30, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b( + 3, 4, 5, // tri0 + 6, 3, 5, // tri1 + 6, 5, 7, // tri2 + 6, 7, 8 // tri3 + ), + gsSPNTriangles_5b( + 9, 6, 8, // tri0 + 10, 9, 8, // tri1 + 5, 4, 11, // tri2 + 5, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 7, 5, 12, // tri0 + 7, 12, 13, // tri1 + 8, 7, 13, // tri2 + 8, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 8, 14, 15, // tri0 + 10, 8, 15, // tri1 + 16, 10, 15, // tri2 + 2, 17, 18 // tri3 + ), + gsSPNTriangles_5b( + 2, 18, 19, // tri0 + 4, 2, 19, // tri1 + 4, 19, 20, // tri2 + 4, 20, 11 // tri3 + ), + gsSPNTriangles_5b( + 1, 21, 22, // tri0 + 1, 22, 23, // tri1 + 2, 1, 23, // tri2 + 2, 23, 17 // tri3 + ), + gsSPNTriangles_5b( + 21, 24, 22, // tri0 + 25, 21, 1, // tri1 + 0, 25, 1, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_4_v[103], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_4_v[0], 20, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 2, 3, 4, // tri0 + 5, 6, 7, // tri1 + 5, 4, 6, // tri2 + 7, 6, 8 // tri3 + ), + gsSPNTriangles_5b( + 6, 9, 8, // tri0 + 9, 10, 8, // tri1 + 10, 9, 11, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 11, // tri0 + 13, 14, 11, // tri1 + 14, 13, 15, // tri2 + 13, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 15, // tri0 + 17, 16, 18, // tri1 + 16, 19, 18, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_4_v[20], 17, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 5, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 6, 5, 3, // tri0 + 7, 8, 6, // tri1 + 9, 10, 7, // tri2 + 11, 12, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 11, 14, 13, // tri1 + 14, 15, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_m_4_v[37], 31, 0), + gsSPNTrianglesInit_5b( + 32, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 5, 9, 8, // tri2 + 10, 7, 8 // tri3 + ), + gsSPNTriangles_5b( + 5, 11, 9, // tri0 + 11, 12, 9, // tri1 + 12, 13, 9, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 13, // tri0 + 14, 16, 15, // tri1 + 5, 17, 11, // tri2 + 5, 18, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 17, // tri0 + 18, 20, 19, // tri1 + 20, 21, 19, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 22, // tri0 + 16, 25, 24, // tri1 + 25, 22, 24, // tri2 + 16, 14, 25 // tri3 + ), + gsSPNTriangles_5b( + 6, 26, 4, // tri0 + 26, 27, 4, // tri1 + 26, 28, 27, // tri2 + 28, 3, 27 // tri3 + ), + gsSPNTriangles_5b( + 10, 29, 7, // tri0 + 10, 0, 29, // tri1 + 0, 2, 29, // tri2 + 3, 28, 2 // tri3 + ), + gsSPNTriangles_5b( + 1, 30, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_4_v[68], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_4_v[81], 22, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 3, 4, // tri0 + 6, 5, 4, // tri1 + 6, 4, 7, // tri2 + 6, 7, 8 // tri3 + ), + gsSPNTriangles_5b( + 9, 6, 8, // tri0 + 10, 9, 8, // tri1 + 10, 8, 11, // tri2 + 12, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 13, 12, 11, // tri0 + 13, 11, 14, // tri1 + 15, 13, 14, // tri2 + 15, 14, 16 // tri3 + ), + gsSPNTriangles_5b( + 17, 15, 16, // tri0 + 18, 19, 17, // tri1 + 18, 17, 16, // tri2 + 20, 21, 2 // tri3 + ), + gsSPNTriangles_5b( + 1, 20, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_m_4_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_4_v[142], 32, 0), + gsSPNTrianglesInit_5b( + 41, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 3, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 0, 4, // tri0 + 6, 5, 4, // tri1 + 6, 4, 7, // tri2 + 6, 7, 8 // tri3 + ), + gsSPNTriangles_5b( + 9, 6, 8, // tri0 + 10, 9, 8, // tri1 + 10, 8, 11, // tri2 + 12, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 11, 13, // tri0 + 14, 12, 13, // tri1 + 15, 14, 13, // tri2 + 15, 13, 16 // tri3 + ), + gsSPNTriangles_5b( + 17, 15, 16, // tri0 + 17, 16, 18, // tri1 + 19, 17, 18, // tri2 + 20, 19, 18 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 20, // tri0 + 21, 20, 18, // tri1 + 20, 22, 23, // tri2 + 22, 24, 23 // tri3 + ), + gsSPNTriangles_5b( + 25, 0, 26, // tri0 + 25, 1, 0, // tri1 + 0, 5, 26, // tri2 + 5, 27, 26 // tri3 + ), + gsSPNTriangles_5b( + 5, 6, 27, // tri0 + 6, 28, 27, // tri1 + 6, 9, 28, // tri2 + 9, 10, 28 // tri3 + ), + gsSPNTriangles_5b( + 10, 29, 28, // tri0 + 10, 12, 29, // tri1 + 12, 14, 29, // tri2 + 14, 30, 29 // tri3 + ), + gsSPNTriangles_5b( + 14, 31, 30, // tri0 + 14, 15, 31, // tri1 + 15, 17, 31, // tri2 + 17, 23, 31 // tri3 + ), + gsSPNTriangles_5b( + 17, 19, 23, // tri0 + 19, 20, 23, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_m_4_v[174], 24, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 3, 6, 5, // tri1 + 6, 7, 5, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 7, // tri0 + 8, 10, 9, // tri1 + 8, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 10, // tri0 + 12, 14, 13, // tri1 + 12, 15, 14, // tri2 + 12, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 15, // tri0 + 17, 18, 15, // tri1 + 17, 19, 18, // tri2 + 17, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 19, // tri0 + 20, 22, 21, // tri1 + 22, 23, 21, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_m_5/grd_s_m_5.c b/src/data/field/bg/acre/grd_s_m_5/grd_s_m_5.c new file mode 100644 index 00000000..eebba30a --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_5/grd_s_m_5.c @@ -0,0 +1,426 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_m_5_v[] = { +#include "assets/field/bg/grd_s_m_5_v.inc" +}; + +extern Gfx grd_s_m_5_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_5_v[178], 26, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 2, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 7, 8, 5 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 5, // tri0 + 8, 10, 9, // tri1 + 10, 11, 9, // tri2 + 11, 12, 9 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 9, // tri0 + 14, 10, 8, // tri1 + 15, 16, 14, // tri2 + 15, 14, 8 // tri3 + ), + gsSPNTriangles_5b( + 17, 15, 8, // tri0 + 17, 8, 7, // tri1 + 18, 17, 7, // tri2 + 19, 18, 7 // tri3 + ), + gsSPNTriangles_5b( + 6, 19, 7, // tri0 + 3, 20, 21, // tri1 + 3, 21, 22, // tri2 + 3, 22, 1 // tri3 + ), + gsSPNTriangles_5b( + 12, 11, 23, // tri0 + 12, 23, 24, // tri1 + 25, 12, 24, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_5_v[165], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_5_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 2, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 11, 14, 12, // tri1 + 14, 15, 12, // tri2 + 15, 16, 12 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 19, // tri0 + 18, 20, 19, // tri1 + 20, 21, 19, // tri2 + 22, 23, 0 // tri3 + ), + gsSPNTriangles_5b( + 23, 1, 0, // tri0 + 13, 24, 11, // tri1 + 24, 25, 11, // tri2 + 26, 27, 9 // tri3 + ), + gsSPNTriangles_5b( + 27, 10, 9, // tri0 + 6, 15, 7, // tri1 + 6, 16, 15, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b( + 28, 5, 29, // tri0 + 5, 4, 29, // tri1 + 22, 31, 23, // tri2 + 22, 21, 31 // tri3 + ), + gsSPNTriangles_5b( + 21, 20, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_5_v[32], 4, 0), + gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_5_v[36], 16, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 12, 15, 13, // tri0 + 13, 0, 14, // tri1 + 13, 1, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_5_v[52], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 0, 6, 1, // tri0 + 9, 10, 11, // tri1 + 10, 0, 2, // tri2 + 12, 3, 5 // tri3 + ), + gsSPNTriangles_5b( + 7, 12, 13, // tri0 + 3, 14, 4, // tri1 + 14, 15, 16, // tri2 + 17, 9, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 21, // tri0 + 22, 19, 23, // tri1 + 20, 24, 25, // tri2 + 24, 26, 27 // tri3 + ), + gsSPNTriangles_5b( + 28, 29, 30, // tri0 + 29, 22, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_m_5_v[84], 32, 0), + gsSPNTrianglesInit_5b( + 30, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 0, 7, 1, // tri1 + 7, 5, 1, // tri2 + 4, 8, 5 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 5, // tri0 + 8, 10, 9, // tri1 + 11, 9, 10, // tri2 + 1, 12, 3 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 14, 16, 15, // tri1 + 14, 17, 16, // tri2 + 18, 12, 17 // tri3 + ), + gsSPNTriangles_5b( + 12, 16, 17, // tri0 + 18, 3, 12, // tri1 + 13, 15, 19, // tri2 + 15, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 20, // tri0 + 21, 23, 22, // tri1 + 21, 24, 23, // tri2 + 22, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 16, 25, 15, // tri0 + 25, 26, 15, // tri1 + 25, 27, 26, // tri2 + 27, 28, 26 // tri3 + ), + gsSPNTriangles_5b( + 27, 29, 28, // tri0 + 29, 30, 28, // tri1 + 24, 31, 23, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_5_v[116], 20, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 2, // tri0 + 5, 6, 2, // tri1 + 1, 7, 4, // tri2 + 7, 8, 4 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 4, // tri0 + 9, 10, 4, // tri1 + 10, 11, 4, // tri2 + 11, 5, 4 // tri3 + ), + gsSPNTriangles_5b( + 5, 12, 6, // tri0 + 13, 14, 15, // tri1 + 16, 17, 14, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b( + 17, 15, 14, // tri0 + 18, 19, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_5_v[136], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_5_v[149], 16, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 4, 6, // tri0 + 7, 6, 8, // tri1 + 9, 7, 8, // tri2 + 10, 9, 8 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 9, // tri0 + 12, 13, 14, // tri1 + 12, 15, 13, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_m_5_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_5_v[204], 24, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 7, // tri0 + 4, 7, 8, // tri1 + 9, 4, 8, // tri2 + 10, 9, 8 // tri3 + ), + gsSPNTriangles_5b( + 11, 10, 8, // tri0 + 12, 13, 14, // tri1 + 15, 12, 14, // tri2 + 16, 14, 17 // tri3 + ), + gsSPNTriangles_5b( + 16, 15, 14, // tri0 + 18, 8, 19, // tri1 + 8, 7, 19, // tri2 + 7, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 7, 6, 20, // tri0 + 6, 21, 20, // tri1 + 18, 11, 8, // tri2 + 22, 3, 23 // tri3 + ), + gsSPNTriangles_5b( + 22, 0, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_m_5_v[228], 28, 0), + gsSPNTrianglesInit_5b( + 25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 5, 2, 3, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 10, 8, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 12, 8, 13, // tri1 + 6, 14, 7, // tri2 + 14, 15, 7 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 11, // tri0 + 17, 12, 11, // tri1 + 18, 17, 16, // tri2 + 19, 17, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 17, // tri0 + 20, 21, 17, // tri1 + 14, 5, 15, // tri2 + 14, 2, 5 // tri3 + ), + gsSPNTriangles_5b( + 1, 22, 4, // tri0 + 1, 23, 22, // tri1 + 23, 24, 22, // tri2 + 23, 25, 24 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 24, // tri0 + 23, 27, 25, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_m_6/grd_s_m_6.c b/src/data/field/bg/acre/grd_s_m_6/grd_s_m_6.c new file mode 100644 index 00000000..9bbd9b32 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_6/grd_s_m_6.c @@ -0,0 +1,410 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_m_6_v[] = { +#include "assets/field/bg/grd_s_m_6_v.inc" +}; + +extern Gfx grd_s_m_6_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_6_v[164], 30, 0), + gsSPNTrianglesInit_5b( + 32, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 2, 1, // tri0 + 6, 5, 4, // tri1 + 6, 7, 5, // tri2 + 8, 9, 6 // tri3 + ), + gsSPNTriangles_5b( + 8, 10, 9, // tri0 + 9, 7, 6, // tri1 + 11, 12, 13, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 12, 15, 14, // tri0 + 16, 17, 8, // tri1 + 17, 18, 8, // tri2 + 18, 19, 8 // tri3 + ), + gsSPNTriangles_5b( + 19, 10, 8, // tri0 + 3, 20, 1, // tri1 + 20, 21, 1, // tri2 + 21, 4, 1 // tri3 + ), + gsSPNTriangles_5b( + 21, 6, 4, // tri0 + 21, 22, 6, // tri1 + 22, 8, 6, // tri2 + 22, 16, 8 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 16, // tri0 + 22, 24, 23, // tri1 + 24, 25, 23, // tri2 + 24, 15, 25 // tri3 + ), + gsSPNTriangles_5b( + 24, 26, 15, // tri0 + 26, 14, 15, // tri1 + 18, 27, 19, // tri2 + 27, 28, 19 // tri3 + ), + gsSPNTriangles_5b( + 28, 29, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_6_v[0], 25, 0), + gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 5, 7, 8, // tri1 + 6, 9, 7, // tri2 + 6, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 9, // tri0 + 11, 12, 9, // tri1 + 11, 13, 12, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 12, // tri0 + 14, 16, 15, // tri1 + 16, 17, 15, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 17, // tri0 + 18, 20, 19, // tri1 + 20, 21, 19, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 21, // tri0 + 22, 24, 23, // tri1 + 24, 2, 23, // tri2 + 24, 0, 2 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_6_v[25], 17, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 5, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 7, // tri0 + 8, 10, 9, // tri1 + 11, 0, 2, // tri2 + 11, 12, 0 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 13, 16, 14, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_6_v[42], 32, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 1, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 14, 16, 15, // tri0 + 17, 18, 19, // tri1 + 20, 21, 22, // tri2 + 23, 20, 24 // tri3 + ), + gsSPNTriangles_5b( + 25, 14, 26, // tri0 + 27, 28, 29, // tri1 + 30, 17, 31, // tri2 + 30, 31, 28 // tri3 + ), + gsSPVertex(&grd_s_m_6_v[74], 19, 0), + gsSPNTrianglesInit_5b( + 9, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 2, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 0, 6, // tri0 + 8, 9, 10, // tri1 + 11, 12, 13, // tri2 + 14, 11, 15 // tri3 + ), + gsSPNTriangles_5b( + 9, 16, 17, // tri0 + 16, 14, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_m_6_v[93], 32, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 8, 9, 7, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 10, 13, // tri0 + 14, 13, 15, // tri1 + 16, 17, 1, // tri2 + 1, 17, 3 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 16, // tri0 + 20, 21, 19, // tri1 + 21, 20, 22, // tri2 + 21, 23, 24 // tri3 + ), + gsSPNTriangles_5b( + 24, 25, 21, // tri0 + 23, 21, 26, // tri1 + 22, 26, 21, // tri2 + 3, 17, 27 // tri3 + ), + gsSPNTriangles_5b( + 17, 25, 28, // tri0 + 28, 27, 17, // tri1 + 29, 7, 9, // tri2 + 12, 30, 6 // tri3 + ), + gsSPNTriangles_5b( + 30, 4, 6, // tri0 + 13, 31, 11, // tri1 + 13, 14, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_6_v[125], 21, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 7, 6, // tri0 + 8, 9, 10, // tri1 + 10, 9, 11, // tri2 + 11, 9, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 12, 14, // tri0 + 15, 16, 17, // tri1 + 17, 18, 19, // tri2 + 19, 18, 0 // tri3 + ), + gsSPNTriangles_5b( + 18, 1, 0, // tri0 + 15, 17, 19, // tri1 + 20, 5, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_6_v[146], 18, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 2, // tri0 + 5, 6, 2, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 14, 15, 16, // tri1 + 14, 17, 15, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_m_6_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_6_v[194], 27, 0), + gsSPNTrianglesInit_5b( + 29, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 3, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 2, 5, // tri0 + 4, 5, 6, // tri1 + 7, 4, 6, // tri2 + 8, 7, 6 // tri3 + ), + gsSPNTriangles_5b( + 8, 6, 9, // tri0 + 10, 8, 9, // tri1 + 11, 10, 9, // tri2 + 11, 9, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 14, 11, 13, // tri1 + 15, 16, 17, // tri2 + 18, 15, 17 // tri3 + ), + gsSPNTriangles_5b( + 15, 18, 19, // tri0 + 15, 19, 20, // tri1 + 11, 14, 21, // tri2 + 11, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 22, // tri0 + 10, 22, 23, // tri1 + 8, 10, 23, // tri2 + 8, 23, 24 // tri3 + ), + gsSPNTriangles_5b( + 7, 8, 24, // tri0 + 7, 24, 25, // tri1 + 4, 7, 25, // tri2 + 3, 4, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 0, 3, // tri0 + 26, 3, 25, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_m_6_v[221], 26, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 3, // tri0 + 3, 6, 4, // tri1 + 6, 7, 4, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 6, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 9, 13, 12, // tri0 + 13, 14, 12, // tri1 + 13, 15, 14, // tri2 + 12, 16, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 17, 16, // tri0 + 17, 18, 16, // tri1 + 17, 19, 18, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 20, // tri0 + 19, 22, 21, // tri1 + 22, 23, 21, // tri2 + 22, 24, 23 // tri3 + ), + gsSPNTriangles_5b( + 24, 25, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_m_7/grd_s_m_7.c b/src/data/field/bg/acre/grd_s_m_7/grd_s_m_7.c new file mode 100644 index 00000000..b4e114a8 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_7/grd_s_m_7.c @@ -0,0 +1,383 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_m_7_v[] = { +#include "assets/field/bg/grd_s_m_7_v.inc" +}; + +extern Gfx grd_s_m_7_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_7_v[123], 23, 0), + gsSPNTrianglesInit_5b( + 27, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 0, 4 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 4, // tri0 + 5, 6, 4, // tri1 + 1, 4, 7, // tri2 + 4, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 4, 9, 8, // tri0 + 4, 6, 9, // tri1 + 3, 10, 11, // tri2 + 3, 1, 10 // tri3 + ), + gsSPNTriangles_5b( + 1, 7, 10, // tri0 + 12, 13, 14, // tri1 + 13, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 14, // tri0 + 16, 11, 17, // tri1 + 16, 3, 11, // tri2 + 6, 18, 9 // tri3 + ), + gsSPNTriangles_5b( + 6, 19, 18, // tri0 + 6, 20, 19, // tri1 + 13, 21, 15, // tri2 + 21, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 16, // tri0 + 22, 3, 16, // tri1 + 22, 2, 3, // tri2 + 5, 20, 6 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_7_v[110], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_7_v[0], 23, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 7, 5, // tri0 + 5, 8, 6, // tri1 + 5, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 8, // tri0 + 12, 2, 13, // tri1 + 12, 14, 2, // tri2 + 14, 0, 2 // tri3 + ), + gsSPNTriangles_5b( + 0, 15, 3, // tri0 + 15, 16, 3, // tri1 + 16, 17, 3, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b( + 16, 7, 18, // tri0 + 7, 4, 18, // tri1 + 10, 19, 11, // tri2 + 19, 20, 11 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 20, // tri0 + 19, 22, 21, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_7_v[23], 21, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 9, 7, 6, // tri1 + 10, 9, 11, // tri2 + 12, 13, 0 // tri3 + ), + gsSPNTriangles_5b( + 8, 14, 15, // tri0 + 7, 14, 8, // tri1 + 14, 16, 15, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b( + 17, 19, 20, // tri0 + 19, 13, 12, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_m_7_v[44], 32, 0), + gsSPNTrianglesInit_5b( + 32, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 13, 9, 11, // tri0 + 14, 10, 15, // tri1 + 10, 16, 15, // tri2 + 12, 10, 17 // tri3 + ), + gsSPNTriangles_5b( + 10, 14, 17, // tri0 + 18, 19, 1, // tri1 + 19, 2, 1, // tri2 + 19, 20, 2 // tri3 + ), + gsSPNTriangles_5b( + 4, 21, 3, // tri0 + 4, 22, 21, // tri1 + 18, 23, 19, // tri2 + 18, 24, 23 // tri3 + ), + gsSPNTriangles_5b( + 24, 25, 23, // tri0 + 24, 26, 25, // tri1 + 26, 11, 25, // tri2 + 26, 27, 11 // tri3 + ), + gsSPNTriangles_5b( + 27, 13, 11, // tri0 + 27, 28, 13, // tri1 + 3, 28, 1, // tri2 + 29, 5, 7 // tri3 + ), + gsSPNTriangles_5b( + 29, 30, 5, // tri0 + 30, 16, 5, // tri1 + 30, 15, 16, // tri2 + 10, 9, 16 // tri3 + ), + gsSPNTriangles_5b( + 15, 31, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_7_v[76], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_7_v[89], 21, 0), + gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 11, 14, 13, // tri1 + 14, 15, 13, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 15, // tri0 + 16, 18, 17, // tri1 + 18, 19, 17, // tri2 + 18, 20, 19 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_m_7_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_7_v[146], 31, 0), + gsSPNTrianglesInit_5b( + 37, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 3, 5, // tri0 + 6, 4, 5, // tri1 + 6, 5, 7, // tri2 + 8, 6, 7 // tri3 + ), + gsSPNTriangles_5b( + 8, 7, 9, // tri0 + 8, 9, 10, // tri1 + 11, 8, 10, // tri2 + 11, 10, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 11, 12, // tri0 + 13, 12, 14, // tri1 + 15, 13, 14, // tri2 + 15, 14, 16 // tri3 + ), + gsSPNTriangles_5b( + 17, 15, 16, // tri0 + 17, 16, 18, // tri1 + 19, 17, 18, // tri2 + 20, 19, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 17, // tri0 + 21, 22, 17, // tri1 + 23, 17, 22, // tri2 + 23, 15, 17 // tri3 + ), + gsSPNTriangles_5b( + 24, 13, 23, // tri0 + 13, 15, 23, // tri1 + 13, 25, 11, // tri2 + 13, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 11, 25, // tri0 + 26, 8, 11, // tri1 + 27, 6, 26, // tri2 + 6, 8, 26 // tri3 + ), + gsSPNTriangles_5b( + 0, 28, 1, // tri0 + 0, 29, 28, // tri1 + 0, 4, 29, // tri2 + 4, 30, 29 // tri3 + ), + gsSPNTriangles_5b( + 4, 6, 30, // tri0 + 30, 6, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_m_7_v[177], 24, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 2, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 2, // tri0 + 6, 5, 4, // tri1 + 7, 8, 6, // tri2 + 8, 5, 6 // tri3 + ), + gsSPNTriangles_5b( + 9, 8, 7, // tri0 + 9, 10, 8, // tri1 + 11, 10, 9, // tri2 + 12, 13, 11 // tri3 + ), + gsSPNTriangles_5b( + 13, 10, 11, // tri0 + 14, 13, 12, // tri1 + 15, 13, 14, // tri2 + 15, 16, 13 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 15, // tri0 + 18, 16, 15, // tri1 + 19, 18, 17, // tri2 + 20, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 18, // tri0 + 22, 23, 20, // tri1 + 23, 21, 20, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_m_8/grd_s_m_8.c b/src/data/field/bg/acre/grd_s_m_8/grd_s_m_8.c new file mode 100644 index 00000000..465218ed --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_8/grd_s_m_8.c @@ -0,0 +1,365 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_m_8_v[] = { +#include "assets/field/bg/grd_s_m_8_v.inc" +}; + +extern Gfx grd_s_m_8_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_8_v[140], 25, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 3, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 11, 14, 12, // tri1 + 11, 15, 14, // tri2 + 15, 9, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 10, 9, // tri0 + 15, 16, 10, // tri1 + 16, 17, 10, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 17, // tri0 + 18, 20, 19, // tri1 + 18, 0, 20, // tri2 + 18, 21, 0 // tri3 + ), + gsSPNTriangles_5b( + 21, 1, 0, // tri0 + 7, 14, 9, // tri1 + 7, 22, 14, // tri2 + 22, 12, 14 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 12, // tri0 + 23, 13, 12, // tri1 + 23, 24, 13, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_8_v[127], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_8_v[0], 23, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 3, 1, 0 // tri2 + ), + gsSPNTriangles_5b( + 2, 5, 0, // tri0 + 6, 5, 2, // tri1 + 6, 7, 5, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 7, // tri0 + 8, 10, 9, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 13, 12, // tri0 + 13, 14, 12, // tri1 + 13, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 14, // tri0 + 16, 18, 17, // tri1 + 18, 19, 17, // tri2 + 19, 20, 17 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 20, // tri0 + 21, 22, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_8_v[23], 13, 0), + gsSPNTrianglesInit_5b( + 9, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 2, 1, 4, // tri0 + 4, 6, 5, // tri1 + 5, 7, 8, // tri2 + 5, 6, 7 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 10, 12, 11, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_8_v[36], 28, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 8, 9, 10, // tri1 + 10, 11, 12, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 8, 15, 16, // tri0 + 17, 8, 18, // tri1 + 19, 20, 21, // tri2 + 20, 22, 23 // tri3 + ), + gsSPNTriangles_5b( + 22, 24, 25, // tri0 + 24, 26, 25, // tri1 + 26, 17, 27, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_m_8_v[64], 32, 0), + gsSPNTrianglesInit_5b( + 30, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 1, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 4, 1, // tri0 + 1, 6, 5, // tri1 + 7, 8, 9, // tri2 + 10, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 7, 11, 10, // tri0 + 11, 7, 12, // tri1 + 13, 12, 7, // tri2 + 14, 13, 7 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 16, 13, 17, // tri1 + 18, 19, 20, // tri2 + 18, 21, 19 // tri3 + ), + gsSPNTriangles_5b( + 21, 14, 0, // tri0 + 22, 21, 18, // tri1 + 22, 14, 21, // tri2 + 22, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 13, 22, 17, // tri0 + 23, 2, 24, // tri1 + 2, 3, 24, // tri2 + 15, 25, 26 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 25, // tri0 + 27, 18, 20, // tri1 + 19, 28, 20, // tri2 + 27, 29, 30 // tri3 + ), + gsSPNTriangles_5b( + 30, 29, 25, // tri0 + 25, 29, 26, // tri1 + 15, 26, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_8_v[96], 4, 0), + gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_8_v[100], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 9, 0, 11, // tri1 + 1, 6, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_8_v[113], 14, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 7, // tri0 + 4, 7, 8, // tri1 + 9, 4, 8, // tri2 + 10, 9, 8 // tri3 + ), + gsSPNTriangles_5b( + 10, 8, 11, // tri0 + 12, 13, 10, // tri1 + 12, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_m_8_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_8_v[165], 20, 0), + gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 6, 9, 8, // tri0 + 10, 11, 12, // tri1 + 11, 13, 12, // tri2 + 1, 3, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 1, 14, // tri0 + 5, 1, 15, // tri1 + 16, 5, 15, // tri2 + 16, 6, 5 // tri3 + ), + gsSPNTriangles_5b( + 9, 6, 16, // tri0 + 17, 9, 16, // tri1 + 11, 10, 18, // tri2 + 19, 11, 18 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_m_8_v[185], 24, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 2, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 4, // tri0 + 6, 2, 4, // tri1 + 7, 6, 5, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 7, // tri0 + 10, 8, 7, // tri1 + 11, 10, 9, // tri2 + 12, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 10, // tri0 + 14, 13, 12, // tri1 + 15, 16, 14, // tri2 + 16, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 19, // tri0 + 18, 16, 19, // tri1 + 20, 18, 17, // tri2 + 21, 18, 20 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 18, // tri0 + 22, 23, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_m_9/grd_s_m_9.c b/src/data/field/bg/acre/grd_s_m_9/grd_s_m_9.c new file mode 100644 index 00000000..36e68d73 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_9/grd_s_m_9.c @@ -0,0 +1,374 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_m_9_v[] = { +#include "assets/field/bg/grd_s_m_9_v.inc" +}; + +extern Gfx grd_s_m_9_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_9_v[108], 23, 0), + gsSPNTrianglesInit_5b( + 25, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 3, 6, 5, // tri1 + 6, 7, 5, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 6, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 11, // tri0 + 12, 14, 13, // tri1 + 12, 15, 14, // tri2 + 12, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 15, // tri0 + 0, 18, 3, // tri1 + 18, 19, 3, // tri2 + 19, 9, 3 // tri3 + ), + gsSPNTriangles_5b( + 9, 6, 3, // tri0 + 19, 20, 9, // tri1 + 20, 12, 9, // tri2 + 20, 21, 12 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 12, // tri0 + 22, 16, 12, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_9_v[0], 25, 0), + gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 4, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 8, 10, 6 // tri3 + ), + gsSPNTriangles_5b( + 8, 11, 10, // tri0 + 11, 5, 10, // tri1 + 11, 4, 5, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 13, 15, 14, // tri0 + 16, 17, 12, // tri1 + 14, 16, 12, // tri2 + 15, 13, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 15, 18, // tri0 + 19, 18, 20, // tri1 + 21, 19, 20, // tri2 + 22, 21, 20 // tri3 + ), + gsSPNTriangles_5b( + 22, 20, 23, // tri0 + 24, 22, 23, // tri1 + 24, 23, 0, // tri2 + 2, 24, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_9_v[25], 30, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 5, 9, // tri1 + 10, 11, 12, // tri2 + 6, 10, 13 // tri3 + ), + gsSPNTriangles_5b( + 11, 14, 15, // tri0 + 14, 16, 17, // tri1 + 4, 18, 19, // tri2 + 20, 21, 0 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 20, // tri0 + 24, 25, 22, // tri1 + 24, 26, 25, // tri2 + 24, 27, 26 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_m_9_v[55], 29, 0), + gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 2, 1, 4 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 4, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 13, 14, 12, // tri1 + 13, 15, 14, // tri2 + 15, 8, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 6, 8, // tri0 + 15, 16, 6, // tri1 + 10, 17, 18, // tri2 + 17, 19, 18 // tri3 + ), + gsSPNTriangles_5b( + 8, 20, 21, // tri0 + 20, 22, 21, // tri1 + 3, 23, 24, // tri2 + 23, 22, 24 // tri3 + ), + gsSPNTriangles_5b( + 8, 21, 14, // tri0 + 20, 25, 22, // tri1 + 25, 24, 22, // tri2 + 10, 18, 11 // tri3 + ), + gsSPNTriangles_5b( + 19, 26, 18, // tri0 + 7, 27, 9, // tri1 + 27, 28, 9, // tri2 + 20, 8, 9 // tri3 + ), + gsSPNTriangles_5b( + 1, 3, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_9_v[84], 24, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 7, 5, // tri0 + 5, 8, 6, // tri1 + 8, 9, 6, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 9, // tri0 + 10, 12, 11, // tri1 + 12, 13, 11, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 13, // tri0 + 14, 16, 15, // tri1 + 16, 17, 15, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 17, // tri0 + 18, 2, 19, // tri1 + 2, 3, 19, // tri2 + 0, 20, 1 // tri3 + ), + gsSPNTriangles_5b( + 0, 21, 20, // tri0 + 21, 22, 20, // tri1 + 21, 23, 22, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_m_9_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_9_v[131], 32, 0), + gsSPNTrianglesInit_5b( + 38, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 7, 5, // tri0 + 5, 8, 6, // tri1 + 8, 9, 6, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 9, // tri0 + 10, 12, 11, // tri1 + 12, 13, 11, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 13, // tri0 + 14, 16, 15, // tri1 + 16, 17, 15, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 17, // tri0 + 18, 1, 19, // tri1 + 1, 0, 19, // tri2 + 3, 20, 2 // tri3 + ), + gsSPNTriangles_5b( + 3, 21, 20, // tri0 + 21, 22, 20, // tri1 + 21, 23, 22, // tri2 + 7, 24, 5 // tri3 + ), + gsSPNTriangles_5b( + 24, 25, 5, // tri0 + 25, 8, 5, // tri1 + 25, 26, 8, // tri2 + 26, 10, 8 // tri3 + ), + gsSPNTriangles_5b( + 26, 27, 10, // tri0 + 27, 12, 10, // tri1 + 27, 14, 12, // tri2 + 27, 28, 14 // tri3 + ), + gsSPNTriangles_5b( + 28, 16, 14, // tri0 + 28, 29, 16, // tri1 + 29, 30, 16, // tri2 + 30, 18, 16 // tri3 + ), + gsSPNTriangles_5b( + 30, 31, 18, // tri0 + 31, 1, 18, // tri1 + 31, 3, 1, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_9_v[163], 7, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 3, 6, 5, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_m_9_v[170], 26, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 3, 0 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 4, // tri0 + 6, 3, 4, // tri1 + 7, 6, 5, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 9, 8, 7, // tri0 + 9, 10, 8, // tri1 + 11, 10, 9, // tri2 + 12, 13, 11 // tri3 + ), + gsSPNTriangles_5b( + 13, 10, 11, // tri0 + 14, 13, 12, // tri1 + 14, 15, 13, // tri2 + 16, 15, 14 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 16, // tri0 + 18, 15, 16, // tri1 + 19, 20, 17, // tri2 + 20, 18, 17 // tri3 + ), + gsSPNTriangles_5b( + 21, 20, 19, // tri0 + 21, 22, 20, // tri1 + 23, 22, 21, // tri2 + 24, 25, 23 // tri3 + ), + gsSPNTriangles_5b( + 25, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_m_r1_1/grd_s_m_r1_1.c b/src/data/field/bg/acre/grd_s_m_r1_1/grd_s_m_r1_1.c new file mode 100644 index 00000000..f31002bc --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_r1_1/grd_s_m_r1_1.c @@ -0,0 +1,398 @@ +#include "libforest/gbi_extensions.h" + +extern u8 sprashC_tex_dummy[]; +extern u8 sprashA_tex_dummy[]; +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_m_r1_1_v[] = { +#include "assets/field/bg/grd_s_m_r1_1_v.inc" +}; + +extern Gfx grd_s_m_r1_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_r1_1_v[164], 27, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 6, 7, 8, // tri1 + 6, 8, 9, // tri2 + 10, 6, 9 // tri3 + ), + gsSPNTriangles_5b(10, 9, 11, // tri0 + 12, 11, 13, // tri1 + 11, 9, 13, // tri2 + 9, 14, 13 // tri3 + ), + gsSPNTriangles_5b(9, 8, 14, // tri0 + 14, 15, 13, // tri1 + 14, 16, 15, // tri2 + 16, 0, 15 // tri3 + ), + gsSPNTriangles_5b(0, 17, 15, // tri0 + 16, 18, 0, // tri1 + 18, 19, 0, // tri2 + 0, 2, 17 // tri3 + ), + gsSPNTriangles_5b(2, 20, 17, // tri0 + 2, 21, 20, // tri1 + 18, 22, 19, // tri2 + 4, 23, 21 // tri3 + ), + gsSPNTriangles_5b(4, 21, 2, // tri0 + 24, 25, 26, // tri1 + 26, 10, 11, // tri2 + 24, 26, 11 // tri3 + ), + gsSPNTriangles_5b(12, 24, 11, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_r1_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 8, 2, 9, // tri2 + 2, 4, 9 // tri3 + ), + gsSPNTriangles_5b(8, 6, 2, // tri0 + 3, 10, 4, // tri1 + 3, 11, 10, // tri2 + 3, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 12, 14, 13, // tri1 + 15, 14, 16, // tri2 + 12, 16, 14 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 19, 20, 17, // tri1 + 21, 20, 19, // tri2 + 21, 22, 20 // tri3 + ), + gsSPNTriangles_5b(21, 23, 22, // tri0 + 23, 24, 22, // tri1 + 24, 25, 22, // tri2 + 25, 26, 22 // tri3 + ), + gsSPNTriangles_5b(26, 27, 22, // tri0 + 28, 29, 30, // tri1 + 29, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_r1_1_v[32], 16, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 2, 3, 4 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 5, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(11, 12, 9, // tri0 + 12, 10, 9, // tri1 + 13, 10, 12, // tri2 + 13, 14, 10 // tri3 + ), + gsSPNTriangles_5b(14, 15, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_r1_1_v[48], 28, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(7, 8, 3, // tri0 + 1, 9, 10, // tri1 + 10, 11, 12, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 18, 19, 15, // tri1 + 20, 21, 18, // tri2 + 22, 23, 20 // tri3 + ), + gsSPNTriangles_5b(24, 25, 22, // tri0 + 26, 27, 24, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_r1_1_v[76], 18, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 2, 9, 0, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(12, 13, 10, // tri0 + 12, 14, 15, // tri1 + 15, 13, 12, // tri2 + 14, 16, 8 // tri3 + ), + gsSPNTriangles_5b(8, 15, 14, // tri0 + 16, 7, 8, // tri1 + 5, 17, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_r1_1_v[94], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 6, 8, 9 // tri3 + ), + gsSPNTriangles_5b(9, 7, 6, // tri0 + 8, 10, 9, // tri1 + 8, 11, 10, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(13, 10, 11, // tri0 + 12, 14, 13, // tri1 + 15, 16, 17, // tri2 + 18, 19, 16 // tri3 + ), + gsSPNTriangles_5b(15, 18, 16, // tri0 + 18, 20, 19, // tri1 + 20, 21, 22, // tri2 + 18, 21, 20 // tri3 + ), + gsSPNTriangles_5b(23, 24, 22, // tri0 + 21, 23, 22, // tri1 + 23, 25, 24, // tri2 + 26, 27, 25 // tri3 + ), + gsSPNTriangles_5b(25, 23, 26, // tri0 + 28, 29, 27, // tri1 + 26, 28, 27, // tri2 + 30, 31, 29 // tri3 + ), + gsSPNTriangles_5b(28, 30, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_r1_1_v[126], 21, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 4 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 3, 5, 4, // tri2 + 1, 0, 3 // tri3 + ), + gsSPNTriangles_5b(9, 0, 2, // tri0 + 10, 11, 12, // tri1 + 12, 13, 14, // tri2 + 12, 15, 10 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 13, 16, 17, // tri1 + 16, 18, 17, // tri2 + 19, 20, 18 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_r1_1_v[147], 17, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b(5, 3, 4, // tri0 + 6, 7, 8, // tri1 + 6, 8, 9, // tri2 + 10, 6, 9 // tri3 + ), + gsSPNTriangles_5b(11, 10, 9, // tri0 + 11, 9, 12, // tri1 + 11, 12, 13, // tri2 + 14, 11, 13 // tri3 + ), + gsSPNTriangles_5b(15, 16, 14, // tri0 + 15, 14, 13, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_m_r1_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPVertex(&grd_s_m_r1_1_v[191], 12, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b(5, 3, 4, // tri0 + 6, 5, 4, // tri1 + 6, 4, 7, // tri2 + 8, 6, 7 // tri3 + ), + gsSPNTriangles_5b(8, 7, 9, // tri0 + 10, 8, 9, // tri1 + 10, 9, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPVertex(&grd_s_m_r1_1_v[203], 24, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b(5, 3, 4, // tri0 + 6, 7, 8, // tri1 + 6, 8, 9, // tri2 + 10, 6, 9 // tri3 + ), + gsSPNTriangles_5b(11, 10, 9, // tri0 + 11, 9, 12, // tri1 + 11, 12, 13, // tri2 + 14, 11, 13 // tri3 + ), + gsSPNTriangles_5b(15, 16, 14, // tri0 + 15, 14, 13, // tri1 + 1, 17, 2, // tri2 + 2, 17, 18 // tri3 + ), + gsSPNTriangles_5b(4, 2, 18, // tri0 + 18, 19, 4, // tri1 + 13, 20, 15, // tri2 + 13, 21, 20 // tri3 + ), + gsSPNTriangles_5b(13, 12, 21, // tri0 + 12, 22, 21, // tri1 + 12, 9, 22, // tri2 + 22, 8, 23 // tri3 + ), + gsSPNTriangles_5b(22, 9, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_m_r1_1_v[227], 26, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 3, 0 // tri2 + ), + gsSPNTriangles_5b(5, 6, 4, // tri0 + 6, 3, 4, // tri1 + 7, 6, 5, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(9, 10, 7, // tri0 + 10, 8, 7, // tri1 + 11, 10, 9, // tri2 + 12, 10, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 10, // tri0 + 14, 13, 12, // tri1 + 15, 16, 17, // tri2 + 16, 13, 17 // tri3 + ), + gsSPNTriangles_5b(18, 16, 15, // tri0 + 18, 19, 16, // tri1 + 19, 20, 16, // tri2 + 21, 22, 18 // tri3 + ), + gsSPNTriangles_5b(22, 19, 18, // tri0 + 23, 22, 21, // tri1 + 24, 25, 23, // tri2 + 25, 22, 23 // tri3 + ), + gsDPSetCombineLERP(1, 0, PRIMITIVE, TEXEL0, TEXEL1, 0, PRIMITIVE, 0, COMBINED, 0, SHADE, TEXEL1, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 100, 140, 255, 200), + gsDPLoadTextureBlock_4b_Dolphin(sprashC_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_MIRROR, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(sprashA_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_MIRROR, GX_REPEAT, 0, 1), + gsSPDisplayList(0x09000000), + gsSPVertex(&grd_s_m_r1_1_v[253], 7, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 1, 6, 4, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_m_r1_1/grd_s_m_r1_1_evw_anime.c b/src/data/field/bg/acre/grd_s_m_r1_1/grd_s_m_r1_1_evw_anime.c new file mode 100644 index 00000000..1b38db5d --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_r1_1/grd_s_m_r1_1_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_m_r1_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_m_r1_1_evw_anime = { + 1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_m_r1_1_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_m_r1_2/grd_s_m_r1_2.c b/src/data/field/bg/acre/grd_s_m_r1_2/grd_s_m_r1_2.c new file mode 100644 index 00000000..e3c19347 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_r1_2/grd_s_m_r1_2.c @@ -0,0 +1,364 @@ +#include "libforest/gbi_extensions.h" + +extern u8 sprashC_tex_dummy[]; +extern u8 sprashA_tex_dummy[]; +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_m_r1_2_v[] = { +#include "assets/field/bg/grd_s_m_r1_2_v.inc" +}; + +extern Gfx grd_s_m_r1_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_r1_2_v[166], 24, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 5, 6, 2, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(8, 9, 6, // tri0 + 9, 10, 6, // tri1 + 9, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 7, 14, 8, // tri1 + 3, 15, 1, // tri2 + 15, 16, 1 // tri3 + ), + gsSPNTriangles_5b(16, 17, 1, // tri0 + 17, 4, 1, // tri1 + 17, 5, 4, // tri2 + 17, 18, 5 // tri3 + ), + gsSPNTriangles_5b(17, 19, 18, // tri0 + 20, 21, 22, // tri1 + 21, 11, 22, // tri2 + 11, 9, 22 // tri3 + ), + gsSPNTriangles_5b(21, 23, 11, // tri0 + 23, 13, 11, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_r1_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 1, 9, // tri0 + 6, 10, 7, // tri1 + 11, 12, 13, // tri2 + 14, 15, 12 // tri3 + ), + gsSPNTriangles_5b(16, 17, 13, // tri0 + 17, 11, 13, // tri1 + 8, 18, 6, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(22, 21, 18, // tri0 + 23, 24, 25, // tri1 + 26, 27, 28, // tri2 + 27, 29, 28 // tri3 + ), + gsSPNTriangles_5b(14, 12, 11, // tri0 + 4, 1, 5, // tri1 + 20, 19, 30, // tri2 + 26, 28, 31 // tri3 + ), + gsSPVertex(&grd_s_m_r1_2_v[32], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 13, 14, 15, // tri2 + 4, 6, 16 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 6, 5, 20, // tri1 + 21, 22, 23, // tri2 + 14, 24, 17 // tri3 + ), + gsSPNTriangles_5b(14, 17, 19, // tri0 + 7, 9, 25, // tri1 + 26, 25, 27, // tri2 + 24, 14, 13 // tri3 + ), + gsSPNTriangles_5b(13, 15, 28, // tri0 + 29, 30, 31, // tri1 + 28, 11, 10, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_r1_2_v[64], 16, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 7, 8, 9, // tri1 + 10, 9, 8, // tri2 + 11, 5, 7 // tri3 + ), + gsSPNTriangles_5b(10, 8, 12, // tri0 + 5, 13, 6, // tri1 + 9, 11, 7, // tri2 + 14, 2, 15 // tri3 + ), + gsSPNTriangles_5b(14, 4, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_m_r1_2_v[80], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 5, 9, 8, // tri2 + 10, 5, 11 // tri3 + ), + gsSPNTriangles_5b(10, 9, 5, // tri0 + 5, 4, 11, // tri1 + 12, 13, 7, // tri2 + 13, 6, 7 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 17, 13, 12, // tri1 + 18, 19, 20, // tri2 + 11, 18, 10 // tri3 + ), + gsSPNTriangles_5b(21, 22, 18, // tri0 + 21, 23, 22, // tri1 + 11, 21, 18, // tri2 + 18, 20, 10 // tri3 + ), + gsSPNTriangles_5b(17, 24, 13, // tri0 + 25, 26, 27, // tri1 + 28, 14, 29, // tri2 + 14, 16, 29 // tri3 + ), + gsSPNTriangles_5b(16, 30, 29, // tri0 + 30, 31, 29, // tri1 + 25, 27, 15, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_r1_2_v[112], 20, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 5, 6, 3, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(4, 9, 5, // tri0 + 10, 11, 12, // tri1 + 13, 14, 15, // tri2 + 13, 16, 14 // tri3 + ), + gsSPNTriangles_5b(16, 17, 14, // tri0 + 15, 18, 19, // tri1 + 18, 8, 19, // tri2 + 8, 7, 19 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_r1_2_v[132], 19, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(2, 5, 6, // tri0 + 7, 8, 9, // tri1 + 9, 10, 3, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 13, 15, 14, // tri1 + 14, 16, 7, // tri2 + 17, 18, 11 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_r1_2_v[151], 15, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 9, 12, 11, // tri1 + 12, 13, 11, // tri2 + 12, 14, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_m_r1_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPVertex(&grd_s_m_r1_2_v[190], 22, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 9, 12, 11, // tri1 + 12, 13, 11, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b(13, 15, 11, // tri0 + 15, 16, 11, // tri1 + 16, 17, 11, // tri2 + 17, 10, 11 // tri3 + ), + gsSPNTriangles_5b(18, 19, 7, // tri0 + 19, 4, 7, // tri1 + 19, 2, 4, // tri2 + 19, 20, 2 // tri3 + ), + gsSPNTriangles_5b(20, 21, 2, // tri0 + 21, 0, 2, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_m_r1_2_v[212], 25, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 2, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 4, // tri0 + 6, 2, 4, // tri1 + 6, 7, 2, // tri2 + 8, 6, 5 // tri3 + ), + gsSPNTriangles_5b(9, 10, 8, // tri0 + 10, 6, 8, // tri1 + 11, 12, 9, // tri2 + 12, 10, 9 // tri3 + ), + gsSPNTriangles_5b(13, 12, 11, // tri0 + 13, 14, 12, // tri1 + 15, 14, 13, // tri2 + 16, 17, 15 // tri3 + ), + gsSPNTriangles_5b(17, 14, 15, // tri0 + 18, 19, 16, // tri1 + 19, 17, 16, // tri2 + 20, 19, 18 // tri3 + ), + gsSPNTriangles_5b(20, 21, 19, // tri0 + 22, 21, 20, // tri1 + 23, 21, 22, // tri2 + 23, 24, 21 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPVertex(&grd_s_m_r1_2_v[237], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 0, 6 // tri2 + ), + gsSPNTriangles_5b(0, 2, 6, // tri0 + 7, 6, 8, // tri1 + 7, 5, 6, // tri2 + 0, 3, 1 // tri3 + ), + gsDPSetCombineLERP(1, 0, PRIMITIVE, TEXEL0, TEXEL1, 0, PRIMITIVE, 0, COMBINED, 0, SHADE, TEXEL1, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 100, 140, 255, 200), + gsDPLoadTextureBlock_4b_Dolphin(sprashC_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_MIRROR, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(sprashA_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_MIRROR, GX_REPEAT, 0, 1), + gsSPDisplayList(0x09000000), + gsSPVertex(&grd_s_m_r1_2_v[246], 7, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 1, 6, 4, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_m_r1_2/grd_s_m_r1_2_evw_anime.c b/src/data/field/bg/acre/grd_s_m_r1_2/grd_s_m_r1_2_evw_anime.c new file mode 100644 index 00000000..785dadc0 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_r1_2/grd_s_m_r1_2_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_m_r1_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_m_r1_2_evw_anime = { + 1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_m_r1_2_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_m_r1_3/grd_s_m_r1_3.c b/src/data/field/bg/acre/grd_s_m_r1_3/grd_s_m_r1_3.c new file mode 100644 index 00000000..4c74ffbc --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_r1_3/grd_s_m_r1_3.c @@ -0,0 +1,365 @@ +#include "libforest/gbi_extensions.h" + +extern u8 sprashC_tex_dummy[]; +extern u8 sprashA_tex_dummy[]; +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_m_r1_3_v[] = { +#include "assets/field/bg/grd_s_m_r1_3_v.inc" +}; + +extern Gfx grd_s_m_r1_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_r1_3_v[146], 24, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 9, 12, 11, // tri1 + 3, 13, 1, // tri2 + 13, 14, 1 // tri3 + ), + gsSPNTriangles_5b(14, 4, 1, // tri0 + 14, 7, 4, // tri1 + 14, 15, 7, // tri2 + 15, 16, 7 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 15, 18, 17, // tri1 + 15, 19, 18, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b(19, 21, 20, // tri0 + 19, 8, 21, // tri1 + 19, 22, 8, // tri2 + 22, 9, 8 // tri3 + ), + gsSPNTriangles_5b(22, 12, 9, // tri0 + 18, 23, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_r1_3_v[0], 32, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 8, 7, 6, // tri1 + 6, 2, 1, // tri2 + 5, 10, 3 // tri3 + ), + gsSPNTriangles_5b(5, 11, 10, // tri0 + 11, 12, 13, // tri1 + 14, 13, 12, // tri2 + 12, 15, 14 // tri3 + ), + gsSPNTriangles_5b(9, 8, 16, // tri0 + 17, 18, 16, // tri1 + 8, 17, 16, // tri2 + 15, 19, 14 // tri3 + ), + gsSPNTriangles_5b(20, 21, 19, // tri0 + 21, 14, 19, // tri1 + 22, 23, 20, // tri2 + 24, 25, 22 // tri3 + ), + gsSPNTriangles_5b(26, 27, 24, // tri0 + 28, 29, 26, // tri1 + 28, 30, 29, // tri2 + 28, 31, 30 // tri3 + ), + gsSPNTriangles_5b(20, 23, 21, // tri0 + 22, 25, 23, // tri1 + 24, 27, 25, // tri2 + 26, 29, 27 // tri3 + ), + gsSPVertex(&grd_s_m_r1_3_v[32], 13, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 9, 10, 8, // tri1 + 10, 11, 8, // tri2 + 8, 7, 9 // tri3 + ), + gsSPNTriangles_5b(6, 5, 7, // tri0 + 5, 4, 3, // tri1 + 2, 1, 3, // tri2 + 0, 12, 1 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_r1_3_v[45], 13, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 6, 8, 9, // tri1 + 6, 7, 8, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b(8, 11, 10, // tri0 + 11, 12, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_r1_3_v[58], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(5, 9, 3, // tri0 + 10, 2, 9, // tri1 + 4, 3, 11, // tri2 + 12, 11, 13 // tri3 + ), + gsSPNTriangles_5b(8, 14, 6, // tri0 + 15, 13, 14, // tri1 + 7, 6, 16, // tri2 + 17, 16, 18 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 22, 21, 23, // tri1 + 24, 23, 25, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b(29, 25, 27, // tri0 + 30, 28, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_r1_3_v[90], 3, 0), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_m_r1_3_v[93], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b(1, 4, 2, // tri0 + 1, 0, 6, // tri1 + 0, 7, 6, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(0, 3, 10, // tri0 + 10, 9, 0, // tri1 + 10, 3, 11, // tri2 + 5, 12, 13 // tri3 + ), + gsSPNTriangles_5b(12, 14, 13, // tri0 + 14, 15, 13, // tri1 + 14, 16, 15, // tri2 + 16, 17, 15 // tri3 + ), + gsSPNTriangles_5b(17, 18, 15, // tri0 + 15, 18, 19, // tri1 + 20, 21, 22, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b(22, 21, 23, // tri0 + 25, 26, 20, // tri1 + 27, 26, 25, // tri2 + 27, 28, 26 // tri3 + ), + gsSPNTriangles_5b(27, 29, 28, // tri0 + 29, 30, 28, // tri1 + 31, 30, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_r1_3_v[125], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 4, 2, 1 // tri2 + ), + gsSPNTriangles_5b(2, 4, 5, // tri0 + 4, 6, 5, // tri1 + 7, 5, 6, // tri2 + 5, 7, 8 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_r1_3_v[134], 12, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(8, 11, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_m_r1_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPVertex(&grd_s_m_r1_3_v[170], 18, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 4, 7, // tri1 + 8, 7, 9, // tri2 + 10, 8, 9 // tri3 + ), + gsSPNTriangles_5b(11, 10, 9, // tri0 + 10, 12, 8, // tri1 + 12, 13, 8, // tri2 + 13, 4, 8 // tri3 + ), + gsSPNTriangles_5b(13, 14, 4, // tri0 + 14, 5, 4, // tri1 + 14, 15, 5, // tri2 + 1, 16, 17 // tri3 + ), + gsSPNTriangles_5b(1, 0, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_m_r1_3_v[188], 27, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 3, 0 // tri2 + ), + gsSPNTriangles_5b(5, 6, 4, // tri0 + 6, 3, 4, // tri1 + 7, 6, 5, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(9, 8, 7, // tri0 + 9, 10, 8, // tri1 + 11, 10, 9, // tri2 + 12, 13, 11 // tri3 + ), + gsSPNTriangles_5b(13, 10, 11, // tri0 + 14, 13, 12, // tri1 + 14, 15, 13, // tri2 + 16, 15, 14 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 18, 17, 16, // tri1 + 19, 20, 21, // tri2 + 20, 17, 21 // tri3 + ), + gsSPNTriangles_5b(22, 20, 19, // tri0 + 22, 23, 20, // tri1 + 24, 23, 22, // tri2 + 25, 23, 24 // tri3 + ), + gsSPNTriangles_5b(25, 26, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPVertex(&grd_s_m_r1_3_v[215], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b(0, 2, 5, // tri0 + 6, 4, 7, // tri1 + 4, 5, 7, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(1, 0, PRIMITIVE, TEXEL0, TEXEL1, 0, PRIMITIVE, 0, COMBINED, 0, SHADE, TEXEL1, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 100, 140, 255, 200), + gsDPLoadTextureBlock_4b_Dolphin(sprashC_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_MIRROR, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(sprashA_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_MIRROR, GX_REPEAT, 0, 1), + gsSPDisplayList(0x09000000), + gsSPVertex(&grd_s_m_r1_3_v[223], 7, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 1, 6, 4, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_m_r1_3/grd_s_m_r1_3_evw_anime.c b/src/data/field/bg/acre/grd_s_m_r1_3/grd_s_m_r1_3_evw_anime.c new file mode 100644 index 00000000..72f07eca --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_r1_3/grd_s_m_r1_3_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_m_r1_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_m_r1_3_evw_anime = { + 1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_m_r1_3_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_m_r1_4/grd_s_m_r1_4.c b/src/data/field/bg/acre/grd_s_m_r1_4/grd_s_m_r1_4.c new file mode 100644 index 00000000..a374bcf3 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_r1_4/grd_s_m_r1_4.c @@ -0,0 +1,415 @@ +#include "libforest/gbi_extensions.h" + +extern u8 sprashC_tex_dummy[]; +extern u8 sprashA_tex_dummy[]; +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_m_r1_4_v[] = { +#include "assets/field/bg/grd_s_m_r1_4_v.inc" +}; + +extern Gfx grd_s_m_r1_4_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_r1_4_v[187], 24, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 3, 6, 5, // tri1 + 3, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 7, 10, 9, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 11, 14, 9, // tri1 + 5, 15, 4, // tri2 + 11, 13, 16 // tri3 + ), + gsSPNTriangles_5b(11, 16, 17, // tri0 + 11, 17, 18, // tri1 + 14, 11, 18, // tri2 + 14, 18, 19 // tri3 + ), + gsSPNTriangles_5b(14, 19, 20, // tri0 + 9, 14, 20, // tri1 + 21, 22, 23, // tri2 + 21, 0, 22 // tri3 + ), + gsSPNTriangles_5b(0, 2, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_r1_4_v[0], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(5, 6, 3, // tri0 + 3, 6, 2, // tri1 + 5, 7, 6, // tri2 + 8, 6, 7 // tri3 + ), + gsSPNTriangles_5b(9, 8, 7, // tri0 + 9, 10, 8, // tri1 + 10, 11, 8, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(11, 13, 8, // tri0 + 12, 14, 13, // tri1 + 15, 14, 12, // tri2 + 16, 17, 15 // tri3 + ), + gsSPNTriangles_5b(17, 18, 15, // tri0 + 18, 14, 15, // tri1 + 16, 19, 20, // tri2 + 20, 17, 16 // tri3 + ), + gsSPNTriangles_5b(21, 22, 19, // tri0 + 22, 20, 19, // tri1 + 23, 24, 25, // tri2 + 4, 26, 0 // tri3 + ), + gsSPNTriangles_5b(27, 28, 25, // tri0 + 25, 24, 27, // tri1 + 27, 29, 28, // tri2 + 30, 31, 29 // tri3 + ), + gsSPNTriangles_5b(29, 27, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_r1_4_v[32], 19, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(0, 3, 1, // tri0 + 4, 3, 5, // tri1 + 6, 7, 8, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(10, 11, 12, // tri0 + 12, 13, 14, // tri1 + 14, 15, 16, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(17, 16, 15, // tri0 + 15, 14, 13, // tri1 + 12, 11, 13, // tri2 + 9, 11, 10 // tri3 + ), + gsSPNTriangles_5b(8, 7, 9, // tri0 + 6, 5, 7, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_r1_4_v[51], 16, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 5, 4, // tri1 + 8, 9, 5, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b(10, 11, 12, // tri0 + 10, 13, 9, // tri1 + 10, 12, 13, // tri2 + 11, 14, 12 // tri3 + ), + gsSPNTriangles_5b(14, 15, 12, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_r1_4_v[67], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 3, 8, // tri0 + 9, 5, 10, // tri1 + 11, 9, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(14, 16, 17, // tri0 + 18, 19, 20, // tri1 + 16, 21, 22, // tri2 + 19, 23, 24 // tri3 + ), + gsSPNTriangles_5b(23, 25, 26, // tri0 + 19, 24, 20, // tri1 + 16, 22, 17, // tri2 + 27, 13, 28 // tri3 + ), + gsSPNTriangles_5b(29, 27, 30, // tri0 + 30, 31, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_r1_4_v[99], 23, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 9, 10, 11, // tri1 + 7, 9, 12, // tri2 + 10, 13, 14 // tri3 + ), + gsSPNTriangles_5b(13, 15, 16, // tri0 + 15, 17, 16, // tri1 + 18, 19, 20, // tri2 + 19, 4, 20 // tri3 + ), + gsSPNTriangles_5b(21, 3, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_m_r1_4_v[122], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 4, 5, 6, // tri1 + 6, 5, 7, // tri2 + 8, 7, 5 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 10, 11, 12, // tri1 + 11, 13, 12, // tri2 + 12, 3, 0 // tri3 + ), + gsSPNTriangles_5b(13, 3, 12, // tri0 + 10, 14, 11, // tri1 + 15, 14, 10, // tri2 + 16, 17, 15 // tri3 + ), + gsSPNTriangles_5b(15, 17, 14, // tri0 + 18, 19, 20, // tri1 + 21, 22, 19, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b(24, 26, 25, // tri0 + 26, 27, 25, // tri1 + 27, 28, 25, // tri2 + 29, 25, 28 // tri3 + ), + gsSPNTriangles_5b(29, 30, 25, // tri0 + 31, 20, 22, // tri1 + 20, 19, 22, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_r1_4_v[154], 18, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 4, 3, // tri0 + 6, 7, 8, // tri1 + 8, 7, 9, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b(11, 10, 12, // tri0 + 10, 13, 12, // tri1 + 12, 13, 14, // tri2 + 13, 15, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 14, // tri0 + 16, 17, 14, // tri1 + 5, 6, 8, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_r1_4_v[172], 15, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 3, 2 // tri2 + ), + gsSPNTriangles_5b(4, 2, 5, // tri0 + 4, 5, 6, // tri1 + 7, 4, 6, // tri2 + 7, 6, 8 // tri3 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 7, 9, // tri1 + 11, 12, 13, // tri2 + 14, 11, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_m_r1_4_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPVertex(&grd_s_m_r1_4_v[211], 21, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 3, 2 // tri2 + ), + gsSPNTriangles_5b(5, 4, 2, // tri0 + 5, 2, 6, // tri1 + 5, 6, 7, // tri2 + 5, 7, 8 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 9, 11, // tri1 + 13, 12, 14, // tri2 + 12, 11, 14 // tri3 + ), + gsSPNTriangles_5b(0, 3, 15, // tri0 + 3, 16, 15, // tri1 + 3, 17, 16, // tri2 + 3, 4, 17 // tri3 + ), + gsSPNTriangles_5b(4, 18, 17, // tri0 + 4, 19, 18, // tri1 + 4, 5, 19, // tri2 + 5, 8, 19 // tri3 + ), + gsSPNTriangles_5b(8, 20, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_m_r1_4_v[232], 24, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 2, 3 // tri2 + ), + gsSPNTriangles_5b(5, 2, 4, // tri0 + 5, 6, 2, // tri1 + 7, 8, 5, // tri2 + 8, 6, 5 // tri3 + ), + gsSPNTriangles_5b(9, 8, 7, // tri0 + 9, 10, 8, // tri1 + 11, 10, 9, // tri2 + 12, 13, 11 // tri3 + ), + gsSPNTriangles_5b(13, 10, 11, // tri0 + 14, 13, 12, // tri1 + 15, 13, 14, // tri2 + 15, 16, 13 // tri3 + ), + gsSPNTriangles_5b(17, 16, 15, // tri0 + 17, 18, 16, // tri1 + 19, 20, 17, // tri2 + 20, 18, 17 // tri3 + ), + gsSPNTriangles_5b(21, 20, 19, // tri0 + 22, 20, 21, // tri1 + 22, 23, 20, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPVertex(&grd_s_m_r1_4_v[256], 13, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 1, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 7, 10, 9, // tri1 + 10, 11, 9, // tri2 + 11, 12, 9 // tri3 + ), + gsDPSetCombineLERP(1, 0, PRIMITIVE, TEXEL0, TEXEL1, 0, PRIMITIVE, 0, COMBINED, 0, SHADE, TEXEL1, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 100, 140, 255, 200), + gsDPLoadTextureBlock_4b_Dolphin(sprashC_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_MIRROR, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(sprashA_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_MIRROR, GX_REPEAT, 0, 1), + gsSPDisplayList(0x09000000), + gsSPVertex(&grd_s_m_r1_4_v[269], 7, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 1, 6, 4, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_m_r1_4/grd_s_m_r1_4_evw_anime.c b/src/data/field/bg/acre/grd_s_m_r1_4/grd_s_m_r1_4_evw_anime.c new file mode 100644 index 00000000..c9c325b7 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_r1_4/grd_s_m_r1_4_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_m_r1_4_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_m_r1_4_evw_anime = { + 1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_m_r1_4_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_m_r1_5/grd_s_m_r1_5.c b/src/data/field/bg/acre/grd_s_m_r1_5/grd_s_m_r1_5.c new file mode 100644 index 00000000..d7eb659b --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_r1_5/grd_s_m_r1_5.c @@ -0,0 +1,391 @@ +#include "libforest/gbi_extensions.h" + +extern u8 sprashC_tex_dummy[]; +extern u8 sprashA_tex_dummy[]; +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_m_r1_5_v[] = { +#include "assets/field/bg/grd_s_m_r1_5_v.inc" +}; + +extern Gfx grd_s_m_r1_5_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_r1_5_v[200], 26, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 7, 8, 5 // tri3 + ), + gsSPNTriangles_5b(6, 9, 7, // tri0 + 7, 10, 8, // tri1 + 10, 11, 8, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 14, 15, 16, // tri1 + 15, 13, 16, // tri2 + 13, 12, 16 // tri3 + ), + gsSPNTriangles_5b(3, 17, 1, // tri0 + 3, 18, 17, // tri1 + 18, 19, 17, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(20, 23, 21, // tri0 + 23, 24, 21, // tri1 + 23, 25, 24, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_r1_5_v[0], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 9, 2, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(12, 9, 10, // tri0 + 13, 14, 15, // tri1 + 13, 16, 14, // tri2 + 13, 17, 16 // tri3 + ), + gsSPNTriangles_5b(17, 3, 16, // tri0 + 11, 18, 12, // tri1 + 18, 19, 12, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(20, 23, 21, // tri0 + 24, 22, 25, // tri1 + 24, 20, 22, // tri2 + 8, 26, 6 // tri3 + ), + gsSPNTriangles_5b(25, 27, 24, // tri0 + 9, 0, 2, // tri1 + 8, 28, 26, // tri2 + 28, 27, 29 // tri3 + ), + gsSPNTriangles_5b(27, 25, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_r1_5_v[30], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(6, 9, 7, // tri0 + 9, 10, 7, // tri1 + 11, 12, 13, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(17, 0, 2, // tri0 + 18, 17, 19, // tri1 + 18, 20, 17, // tri2 + 17, 20, 0 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 22, 24, 23, // tri1 + 25, 26, 24, // tri2 + 27, 28, 26 // tri3 + ), + gsSPNTriangles_5b(29, 30, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_r1_5_v[61], 26, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b(3, 6, 5, // tri0 + 3, 7, 6, // tri1 + 8, 9, 7, // tri2 + 7, 3, 8 // tri3 + ), + gsSPNTriangles_5b(0, 3, 1, // tri0 + 10, 11, 12, // tri1 + 11, 13, 14, // tri2 + 13, 0, 2 // tri3 + ), + gsSPNTriangles_5b(8, 15, 9, // tri0 + 16, 17, 15, // tri1 + 16, 18, 17, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b(21, 22, 20, // tri0 + 20, 19, 21, // tri1 + 18, 16, 19, // tri2 + 15, 8, 16 // tri3 + ), + gsSPNTriangles_5b(23, 24, 25, // tri0 + 24, 10, 25, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_r1_5_v[87], 13, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 2, 3, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_m_r1_5_v[100], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 8, 10, 6 // tri3 + ), + gsSPNTriangles_5b(8, 11, 10, // tri0 + 12, 13, 14, // tri1 + 12, 15, 13, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(17, 15, 18, // tri0 + 15, 19, 18, // tri1 + 20, 18, 21, // tri2 + 20, 16, 18 // tri3 + ), + gsSPNTriangles_5b(18, 22, 21, // tri0 + 18, 19, 22, // tri1 + 23, 24, 25, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b(26, 27, 25, // tri0 + 28, 24, 23, // tri1 + 29, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_r1_5_v[132], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 8, 10, 9, // tri1 + 11, 12, 13, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(14, 17, 15, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19, // tri2 + 21, 16, 19 // tri3 + ), + gsSPNTriangles_5b(0, 22, 3, // tri0 + 7, 23, 8, // tri1 + 24, 12, 11, // tri2 + 6, 13, 25 // tri3 + ), + gsSPNTriangles_5b(26, 27, 28, // tri0 + 29, 12, 24, // tri1 + 4, 1, 5, // tri2 + 6, 5, 30 // tri3 + ), + gsSPVertex(&grd_s_m_r1_5_v[163], 11, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b(5, 0, 2, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 7, 10, 8 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_r1_5_v[174], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 3, 8, // tri0 + 9, 5, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_r1_5_v[187], 13, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 9, 12, 10 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_m_r1_5_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPVertex(&grd_s_m_r1_5_v[226], 19, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 7, 8, 5, // tri1 + 9, 10, 11, // tri2 + 9, 12, 10 // tri3 + ), + gsSPNTriangles_5b(3, 13, 1, // tri0 + 13, 14, 1, // tri1 + 15, 16, 4, // tri2 + 16, 7, 4 // tri3 + ), + gsSPNTriangles_5b(17, 18, 9, // tri0 + 18, 12, 9, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_m_r1_5_v[245], 29, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 1, 4, // tri0 + 6, 1, 7, // tri1 + 6, 8, 1, // tri2 + 9, 8, 10 // tri3 + ), + gsSPNTriangles_5b(11, 12, 9, // tri0 + 12, 8, 9, // tri1 + 12, 13, 8, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 13, // tri0 + 14, 16, 15, // tri1 + 16, 17, 15, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b(18, 19, 17, // tri0 + 18, 20, 19, // tri1 + 18, 21, 20, // tri2 + 22, 12, 11 // tri3 + ), + gsSPNTriangles_5b(23, 12, 22, // tri0 + 23, 24, 12, // tri1 + 25, 24, 23, // tri2 + 26, 24, 25 // tri3 + ), + gsSPNTriangles_5b(26, 27, 24, // tri0 + 27, 28, 24, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPVertex(&grd_s_m_r1_5_v[274], 11, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 3, 2 // tri2 + ), + gsSPNTriangles_5b(4, 2, 5, // tri0 + 6, 4, 5, // tri1 + 7, 6, 5, // tri2 + 7, 5, 8 // tri3 + ), + gsSPNTriangles_5b(9, 7, 8, // tri0 + 9, 8, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(1, 0, PRIMITIVE, TEXEL0, TEXEL1, 0, PRIMITIVE, 0, COMBINED, 0, SHADE, TEXEL1, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 100, 140, 255, 200), + gsDPLoadTextureBlock_4b_Dolphin(sprashC_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_MIRROR, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(sprashA_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_MIRROR, GX_REPEAT, 0, 1), + gsSPDisplayList(0x09000000), + gsSPVertex(&grd_s_m_r1_5_v[285], 7, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 1, 6, 4, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_m_r1_5/grd_s_m_r1_5_evw_anime.c b/src/data/field/bg/acre/grd_s_m_r1_5/grd_s_m_r1_5_evw_anime.c new file mode 100644 index 00000000..9eca718a --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_r1_5/grd_s_m_r1_5_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_m_r1_5_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_m_r1_5_evw_anime = { + 1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_m_r1_5_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_m_r1_b_1/grd_s_m_r1_b_1.c b/src/data/field/bg/acre/grd_s_m_r1_b_1/grd_s_m_r1_b_1.c new file mode 100644 index 00000000..ce2450c7 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_r1_b_1/grd_s_m_r1_b_1.c @@ -0,0 +1,372 @@ +#include "libforest/gbi_extensions.h" + +extern u8 sprashC_tex_dummy[]; +extern u8 sprashA_tex_dummy[]; +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_1_pal_dummy[]; +extern u8 bridge_1_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_m_r1_b_1_v[] = { +#include "assets/field/bg/grd_s_m_r1_b_1_v.inc" +}; + +extern Gfx grd_s_m_r1_b_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_r1_b_1_v[163], 22, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 5 // tri2 + ), + gsSPNTriangles_5b(7, 8, 3, // tri0 + 7, 3, 6, // tri1 + 9, 10, 11, // tri2 + 12, 9, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 9, // tri0 + 14, 10, 9, // tri1 + 9, 13, 15, // tri2 + 14, 9, 15 // tri3 + ), + gsSPNTriangles_5b(16, 2, 17, // tri0 + 18, 10, 14, // tri1 + 17, 18, 14, // tri2 + 16, 17, 14 // tri3 + ), + gsSPNTriangles_5b(19, 5, 20, // tri0 + 0, 2, 16, // tri1 + 20, 0, 16, // tri2 + 19, 20, 16 // tri3 + ), + gsSPNTriangles_5b(6, 5, 19, // tri0 + 21, 7, 6, // tri1 + 21, 6, 19, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_1_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_1_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_r1_b_1_v[151], 12, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b(3, 4, 5, // tri0 + 5, 4, 6, // tri1 + 5, 6, 7, // tri2 + 7, 6, 8 // tri3 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 1, 10, 2, // tri1 + 6, 11, 8, // tri2 + 4, 10, 11 // tri3 + ), + gsSPNTriangles_5b(4, 11, 6, // tri0 + 2, 10, 4, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_r1_b_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 11, 6, // tri1 + 11, 4, 6, // tri2 + 12, 13, 10 // tri3 + ), + gsSPNTriangles_5b(10, 13, 11, // tri0 + 14, 15, 12, // tri1 + 12, 15, 13, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(17, 18, 16, // tri0 + 16, 18, 15, // tri1 + 19, 20, 17, // tri2 + 21, 22, 19 // tri3 + ), + gsSPNTriangles_5b(23, 24, 21, // tri0 + 3, 25, 23, // tri1 + 2, 26, 0, // tri2 + 1, 25, 3 // tri3 + ), + gsSPNTriangles_5b(23, 25, 24, // tri0 + 21, 24, 22, // tri1 + 19, 22, 20, // tri2 + 17, 20, 18 // tri3 + ), + gsSPNTriangles_5b(7, 27, 28, // tri0 + 28, 29, 30, // tri1 + 30, 29, 31, // tri2 + 9, 27, 7 // tri3 + ), + gsSPNTriangles_5b(28, 27, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_r1_b_1_v[32], 17, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(0, 5, 4, // tri0 + 4, 6, 7, // tri1 + 7, 8, 9, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 11, 10, 12, // tri1 + 9, 8, 10, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(4, 5, 6, // tri0 + 12, 14, 13, // tri1 + 12, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_r1_b_1_v[49], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 3, 8, // tri0 + 9, 5, 10, // tri1 + 11, 9, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(14, 16, 17, // tri0 + 18, 19, 20, // tri1 + 16, 18, 21, // tri2 + 19, 22, 23 // tri3 + ), + gsSPNTriangles_5b(22, 24, 25, // tri0 + 19, 23, 20, // tri1 + 13, 15, 26, // tri2 + 27, 28, 29 // tri3 + ), + gsSPNTriangles_5b(28, 13, 26, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_r1_b_1_v[79], 15, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 4, 6, 9, // tri1 + 7, 10, 11, // tri2 + 10, 12, 13 // tri3 + ), + gsSPNTriangles_5b(12, 14, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_m_r1_b_1_v[94], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 4, 0 // tri2 + ), + gsSPNTriangles_5b(5, 6, 4, // tri0 + 7, 8, 6, // tri1 + 6, 5, 7, // tri2 + 9, 8, 7 // tri3 + ), + gsSPNTriangles_5b(9, 10, 8, // tri0 + 10, 9, 11, // tri1 + 9, 12, 11, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(13, 16, 14, // tri0 + 16, 17, 14, // tri1 + 18, 19, 17, // tri2 + 17, 19, 14 // tri3 + ), + gsSPNTriangles_5b(14, 19, 20, // tri0 + 19, 21, 20, // tri1 + 21, 22, 20, // tri2 + 23, 22, 21 // tri3 + ), + gsSPNTriangles_5b(23, 24, 22, // tri0 + 22, 24, 25, // tri1 + 23, 26, 27, // tri2 + 27, 26, 28 // tri3 + ), + gsSPNTriangles_5b(29, 30, 26, // tri0 + 26, 31, 28, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_r1_b_1_v[126], 5, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 3, 1 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_r1_b_1_v[131], 10, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 3, 8, 9, // tri1 + 3, 1, 8, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_r1_b_1_v[141], 10, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 8, 9, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_m_r1_b_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_r1_b_1_v[185], 15, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 1, // tri0 + 6, 7, 8, // tri1 + 9, 6, 8, // tri2 + 10, 9, 8 // tri3 + ), + gsSPNTriangles_5b(11, 10, 8, // tri0 + 12, 13, 9, // tri1 + 13, 6, 9, // tri2 + 10, 14, 9 // tri3 + ), + gsSPNTriangles_5b(14, 12, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_m_r1_b_1_v[200], 15, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b(5, 4, 3, // tri0 + 5, 3, 6, // tri1 + 7, 5, 6, // tri2 + 8, 7, 6 // tri3 + ), + gsSPNTriangles_5b(9, 8, 6, // tri0 + 9, 6, 10, // tri1 + 11, 12, 13, // tri2 + 14, 9, 10 // tri3 + ), + gsSPNTriangles_5b(13, 14, 10, // tri0 + 11, 13, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPVertex(&grd_s_m_r1_b_1_v[215], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 1, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(1, 0, PRIMITIVE, TEXEL0, TEXEL1, 0, PRIMITIVE, 0, COMBINED, 0, SHADE, TEXEL1, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 100, 140, 255, 200), + gsDPLoadTextureBlock_4b_Dolphin(sprashC_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_MIRROR, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(sprashA_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_MIRROR, GX_REPEAT, 0, 1), + gsSPDisplayList(0x09000000), + gsSPVertex(&grd_s_m_r1_b_1_v[223], 7, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 1, 6, 4, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_m_r1_b_1/grd_s_m_r1_b_1_evw_anime.c b/src/data/field/bg/acre/grd_s_m_r1_b_1/grd_s_m_r1_b_1_evw_anime.c new file mode 100644 index 00000000..ec71f795 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_r1_b_1/grd_s_m_r1_b_1_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_m_r1_b_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_m_r1_b_1_evw_anime = { + 1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_m_r1_b_1_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_m_r1_b_2/grd_s_m_r1_b_2.c b/src/data/field/bg/acre/grd_s_m_r1_b_2/grd_s_m_r1_b_2.c new file mode 100644 index 00000000..6d3d3509 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_r1_b_2/grd_s_m_r1_b_2.c @@ -0,0 +1,402 @@ +#include "libforest/gbi_extensions.h" + +extern u8 sprashC_tex_dummy[]; +extern u8 sprashA_tex_dummy[]; +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_2_pal_dummy[]; +extern u8 bridge_2_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_m_r1_b_2_v[] = { +#include "assets/field/bg/grd_s_m_r1_b_2_v.inc" +}; + +extern Gfx grd_s_m_r1_b_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_r1_b_2_v[210], 18, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 9, 6, 5, // tri2 + 9, 10, 6 // tri3 + ), + gsSPNTriangles_5b(9, 5, 11, // tri0 + 12, 7, 13, // tri1 + 12, 5, 7, // tri2 + 2, 14, 0 // tri3 + ), + gsSPNTriangles_5b(0, 14, 15, // tri0 + 14, 13, 15, // tri1 + 7, 15, 13, // tri2 + 3, 16, 4 // tri3 + ), + gsSPNTriangles_5b(16, 17, 4, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_2_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_2_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_r1_b_2_v[168], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 1 // tri2 + ), + gsSPNTriangles_5b(4, 1, 0, // tri0 + 5, 6, 7, // tri1 + 5, 7, 1, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(8, 10, 11, // tri0 + 12, 8, 11, // tri1 + 12, 11, 13, // tri2 + 13, 11, 14 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 16, 17, 18, // tri1 + 16, 18, 19, // tri2 + 20, 21, 17 // tri3 + ), + gsSPNTriangles_5b(20, 17, 16, // tri0 + 21, 22, 23, // tri1 + 21, 23, 17, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(24, 26, 27, // tri0 + 28, 24, 27, // tri1 + 28, 27, 29, // tri2 + 29, 27, 30 // tri3 + ), + gsSPNTriangles_5b(29, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_r1_b_2_v[200], 10, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 4, 7, // tri1 + 8, 7, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_r1_b_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b(1, 3, 2, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 14, 1, 8, // tri1 + 1, 0, 8, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b(15, 10, 16, // tri0 + 18, 17, 19, // tri1 + 17, 16, 19, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(14, 8, 7, // tri0 + 10, 15, 11, // tri1 + 20, 21, 18, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b(21, 20, 22, // tri0 + 24, 25, 26, // tri1 + 24, 26, 27, // tri2 + 28, 29, 30 // tri3 + ), + gsSPVertex(&grd_s_m_r1_b_2_v[31], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b(6, 5, 4, // tri0 + 7, 8, 9, // tri1 + 6, 10, 5, // tri2 + 9, 8, 10 // tri3 + ), + gsSPNTriangles_5b(7, 11, 8, // tri0 + 12, 13, 14, // tri1 + 15, 16, 14, // tri2 + 14, 13, 15 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 17, 15, 18, // tri1 + 19, 20, 21, // tri2 + 22, 23, 20 // tri3 + ), + gsSPNTriangles_5b(20, 19, 22, // tri0 + 22, 24, 23, // tri1 + 25, 26, 24, // tri2 + 25, 27, 26 // tri3 + ), + gsSPNTriangles_5b(28, 29, 30, // tri0 + 28, 31, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_r1_b_2_v[63], 3, 0), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_r1_b_2_v[66], 11, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 8, 9, 6, // tri2 + 7, 10, 5 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_r1_b_2_v[77], 18, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 3, 0, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 4, 9, 10, // tri2 + 7, 11, 12 // tri3 + ), + gsSPNTriangles_5b(11, 1, 13, // tri0 + 14, 6, 15, // tri1 + 16, 14, 17, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_m_r1_b_2_v[95], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 2, 6, // tri1 + 2, 4, 8, // tri2 + 4, 9, 8 // tri3 + ), + gsSPNTriangles_5b(10, 11, 12, // tri0 + 13, 14, 15, // tri1 + 13, 16, 14, // tri2 + 14, 17, 15 // tri3 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 18, 21, 19, // tri1 + 22, 23, 24, // tri2 + 23, 25, 24 // tri3 + ), + gsSPNTriangles_5b(22, 24, 26, // tri0 + 24, 27, 26, // tri1 + 26, 27, 28, // tri2 + 29, 28, 30 // tri3 + ), + gsSPNTriangles_5b(29, 26, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_r1_b_2_v[126], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 12, 11, 13, // tri2 + 8, 5, 14 // tri3 + ), + gsSPNTriangles_5b(5, 15, 14, // tri0 + 1, 0, 16, // tri1 + 16, 0, 17, // tri2 + 0, 18, 17 // tri3 + ), + gsSPNTriangles_5b(0, 19, 18, // tri0 + 20, 21, 22, // tri1 + 23, 24, 20, // tri2 + 23, 25, 24 // tri3 + ), + gsSPNTriangles_5b(23, 26, 25, // tri0 + 23, 27, 26, // tri1 + 28, 29, 27, // tri2 + 29, 26, 27 // tri3 + ), + gsSPNTriangles_5b(29, 30, 26, // tri0 + 29, 31, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_r1_b_2_v[158], 10, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 6, 8, 7, // tri1 + 9, 7, 8, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_m_r1_b_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPVertex(&grd_s_m_r1_b_2_v[228], 16, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 4, 3, // tri0 + 5, 6, 4, // tri1 + 5, 3, 7, // tri2 + 8, 7, 3 // tri3 + ), + gsSPNTriangles_5b(0, 8, 3, // tri0 + 0, 9, 8, // tri1 + 10, 11, 12, // tri2 + 10, 12, 13 // tri3 + ), + gsSPNTriangles_5b(14, 13, 15, // tri0 + 14, 10, 13, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_m_r1_b_2_v[244], 15, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 7, 5, 6, // tri2 + 8, 7, 6 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 9, 10, 7, // tri1 + 11, 7, 10, // tri2 + 7, 11, 12 // tri3 + ), + gsSPNTriangles_5b(7, 12, 13, // tri0 + 12, 14, 13, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(1, 0, PRIMITIVE, TEXEL0, TEXEL1, 0, PRIMITIVE, 0, COMBINED, 0, SHADE, TEXEL1, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 100, 140, 255, 200), + gsDPLoadTextureBlock_4b_Dolphin(sprashC_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_MIRROR, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(sprashA_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_MIRROR, GX_REPEAT, 0, 1), + gsSPDisplayList(0x09000000), + gsSPVertex(&grd_s_m_r1_b_2_v[259], 7, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 1, 6, 4, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPVertex(&grd_s_m_r1_b_2_v[266], 15, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 3, // tri0 + 7, 1, 3, // tri1 + 8, 9, 10, // tri2 + 8, 11, 9 // tri3 + ), + gsSPNTriangles_5b(11, 0, 9, // tri0 + 0, 4, 9, // tri1 + 12, 13, 14, // tri2 + 3, 12, 14 // tri3 + ), + gsSPNTriangles_5b(3, 14, 6, // tri0 + 0, 2, 5, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_m_r1_b_2/grd_s_m_r1_b_2_evw_anime.c b/src/data/field/bg/acre/grd_s_m_r1_b_2/grd_s_m_r1_b_2_evw_anime.c new file mode 100644 index 00000000..b550512f --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_r1_b_2/grd_s_m_r1_b_2_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_m_r1_b_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_m_r1_b_2_evw_anime = { + 1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_m_r1_b_2_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_m_r1_b_3/grd_s_m_r1_b_3.c b/src/data/field/bg/acre/grd_s_m_r1_b_3/grd_s_m_r1_b_3.c new file mode 100644 index 00000000..299521d0 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_r1_b_3/grd_s_m_r1_b_3.c @@ -0,0 +1,383 @@ +#include "libforest/gbi_extensions.h" + +extern u8 sprashC_tex_dummy[]; +extern u8 sprashA_tex_dummy[]; +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_1_pal_dummy[]; +extern u8 bridge_1_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; + +static Vtx grd_s_m_r1_b_3_v[] = { +#include "assets/field/bg/grd_s_m_r1_b_3_v.inc" +}; + +extern Gfx grd_s_m_r1_b_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_r1_b_3_v[178], 26, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 4, 3, 1 // tri2 + ), + gsSPNTriangles_5b(5, 4, 1, // tri0 + 0, 2, 6, // tri1 + 7, 8, 9, // tri2 + 7, 9, 10 // tri3 + ), + gsSPNTriangles_5b(11, 7, 10, // tri0 + 12, 11, 10, // tri1 + 0, 12, 10, // tri2 + 1, 0, 10 // tri3 + ), + gsSPNTriangles_5b(13, 5, 1, // tri0 + 13, 1, 10, // tri1 + 14, 15, 16, // tri2 + 14, 16, 9 // tri3 + ), + gsSPNTriangles_5b(8, 14, 9, // tri0 + 17, 18, 19, // tri1 + 17, 19, 20, // tri2 + 21, 17, 20 // tri3 + ), + gsSPNTriangles_5b(20, 19, 22, // tri0 + 20, 22, 23, // tri1 + 20, 24, 21, // tri2 + 20, 23, 25 // tri3 + ), + gsSPNTriangles_5b(24, 20, 25, // tri0 + 15, 24, 25, // tri1 + 15, 25, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_1_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_1_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_r1_b_3_v[165], 13, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 2, 4 // tri2 + ), + gsSPNTriangles_5b(2, 5, 4, // tri0 + 6, 4, 7, // tri1 + 6, 7, 8, // tri2 + 9, 0, 4 // tri3 + ), + gsSPNTriangles_5b(9, 4, 6, // tri0 + 10, 11, 1, // tri1 + 10, 1, 12, // tri2 + 12, 1, 0 // tri3 + ), + gsSPNTriangles_5b(12, 0, 9, // tri0 + 5, 7, 4, // tri1 + 11, 3, 1, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_r1_b_3_v[0], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 1 // tri2 + ), + gsSPNTriangles_5b(4, 1, 0, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 9, 10, 7 // tri3 + ), + gsSPNTriangles_5b(11, 10, 9, // tri0 + 8, 12, 6, // tri1 + 13, 14, 11, // tri2 + 14, 15, 11 // tri3 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 19, 20, 21, // tri1 + 19, 22, 23, // tri2 + 22, 24, 23 // tri3 + ), + gsSPNTriangles_5b(25, 26, 24, // tri0 + 25, 27, 26, // tri1 + 28, 29, 27, // tri2 + 28, 30, 29 // tri3 + ), + gsSPVertex(&grd_s_m_r1_b_3_v[31], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(2, 1, 3, // tri0 + 8, 1, 0, // tri1 + 9, 10, 8, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(13, 14, 12, // tri0 + 15, 16, 17, // tri1 + 16, 18, 17, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b(17, 21, 15, // tri0 + 18, 20, 17, // tri1 + 19, 22, 20, // tri2 + 23, 24, 22 // tri3 + ), + gsSPNTriangles_5b(22, 24, 20, // tri0 + 25, 26, 23, // tri1 + 25, 27, 26, // tri2 + 28, 29, 27 // tri3 + ), + gsSPNTriangles_5b(29, 26, 27, // tri0 + 30, 31, 28, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_r1_b_3_v[63], 19, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 6, 3 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 7, 10, 8, // tri1 + 10, 11, 8, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(5, 15, 6, // tri0 + 3, 6, 4, // tri1 + 4, 1, 0, // tri2 + 2, 1, 16 // tri3 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_r1_b_3_v[82], 14, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 2, 3, 4 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 6, 7, 8, // tri1 + 9, 10, 7, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 9, 11, 10, // tri1 + 6, 9, 7, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_m_r1_b_3_v[96], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 7, 8, 9, // tri1 + 7, 10, 8, // tri2 + 10, 11, 8 // tri3 + ), + gsSPNTriangles_5b(10, 12, 11, // tri0 + 13, 7, 9, // tri1 + 13, 6, 7, // tri2 + 14, 5, 4 // tri3 + ), + gsSPNTriangles_5b(4, 15, 14, // tri0 + 1, 16, 2, // tri1 + 17, 11, 12, // tri2 + 18, 19, 16 // tri3 + ), + gsSPNTriangles_5b(19, 20, 16, // tri0 + 16, 21, 2, // tri1 + 16, 20, 21, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b(22, 25, 23, // tri0 + 23, 26, 24, // tri1 + 22, 27, 25, // tri2 + 27, 28, 25 // tri3 + ), + gsSPNTriangles_5b(27, 29, 28, // tri0 + 30, 7, 5, // tri1 + 12, 31, 17, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_r1_b_3_v[128], 23, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 0, 2, // tri1 + 8, 9, 0, // tri2 + 10, 0, 9 // tri3 + ), + gsSPNTriangles_5b(11, 0, 10, // tri0 + 12, 0, 11, // tri1 + 13, 14, 15, // tri2 + 16, 0, 12 // tri3 + ), + gsSPNTriangles_5b(0, 17, 4, // tri0 + 13, 18, 14, // tri1 + 19, 20, 21, // tri2 + 20, 22, 21 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_r1_b_3_v[151], 14, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b(4, 3, 5, // tri0 + 5, 6, 7, // tri1 + 7, 4, 5, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(8, 10, 11, // tri0 + 12, 8, 11, // tri1 + 12, 11, 13, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_m_r1_b_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPVertex(&grd_s_m_r1_b_3_v[204], 20, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 6, 7, 8, // tri1 + 8, 9, 6, // tri2 + 7, 10, 8 // tri3 + ), + gsSPNTriangles_5b(7, 11, 10, // tri0 + 11, 12, 10, // tri1 + 11, 13, 12, // tri2 + 3, 14, 15 // tri3 + ), + gsSPNTriangles_5b(3, 15, 5, // tri0 + 0, 16, 14, // tri1 + 0, 14, 3, // tri2 + 12, 17, 10 // tri3 + ), + gsSPNTriangles_5b(8, 18, 9, // tri0 + 8, 19, 18, // tri1 + 10, 19, 8, // tri2 + 17, 19, 10 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_m_r1_b_3_v[224], 15, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 9, 7, 1, // tri2 + 9, 1, 10 // tri3 + ), + gsSPNTriangles_5b(9, 8, 7, // tri0 + 0, 10, 1, // tri1 + 11, 3, 12, // tri2 + 3, 13, 12 // tri3 + ), + gsSPNTriangles_5b(13, 14, 12, // tri0 + 2, 3, 11, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPVertex(&grd_s_m_r1_b_3_v[239], 10, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 5, 2, 7, // tri1 + 2, 3, 7, // tri2 + 0, 8, 1 // tri3 + ), + gsSPNTriangles_5b(8, 9, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(1, 0, PRIMITIVE, TEXEL0, TEXEL1, 0, PRIMITIVE, 0, COMBINED, 0, SHADE, TEXEL1, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 100, 140, 255, 200), + gsDPLoadTextureBlock_4b_Dolphin(sprashC_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_MIRROR, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(sprashA_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_MIRROR, GX_REPEAT, 0, 1), + gsSPDisplayList(0x09000000), + gsSPVertex(&grd_s_m_r1_b_3_v[249], 7, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 1, 6, 4, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_m_r1_b_3/grd_s_m_r1_b_3_evw_anime.c b/src/data/field/bg/acre/grd_s_m_r1_b_3/grd_s_m_r1_b_3_evw_anime.c new file mode 100644 index 00000000..845cdaa2 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_r1_b_3/grd_s_m_r1_b_3_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_m_r1_b_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_m_r1_b_3_evw_anime = { + 1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_m_r1_b_3_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_m_ta_1/grd_s_m_ta_1.c b/src/data/field/bg/acre/grd_s_m_ta_1/grd_s_m_ta_1.c new file mode 100644 index 00000000..6eb58e4a --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_ta_1/grd_s_m_ta_1.c @@ -0,0 +1,425 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 stone_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_m_ta_1_v[] = { +#include "assets/field/bg/grd_s_m_ta_1_v.inc" +}; + +extern Gfx grd_s_m_ta_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_ta_1_v[173], 25, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 2, // tri0 + 1, 6, 5, // tri1 + 6, 7, 5, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 7, // tri0 + 8, 10, 9, // tri1 + 8, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 16, 9, 10, // tri1 + 15, 16, 10, // tri2 + 13, 15, 10 // tri3 + ), + gsSPNTriangles_5b( + 12, 17, 13, // tri0 + 12, 13, 10, // tri1 + 5, 18, 2, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 2, 18, 20, // tri0 + 2, 20, 21, // tri1 + 2, 21, 22, // tri2 + 0, 2, 22 // tri3 + ), + gsSPNTriangles_5b( + 0, 22, 23, // tri0 + 4, 0, 23, // tri1 + 24, 4, 23, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_ta_1_v[0], 20, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 4, // tri0 + 8, 9, 5, // tri1 + 5, 4, 8, // tri2 + 0, 2, 9 // tri3 + ), + gsSPNTriangles_5b( + 9, 8, 0, // tri0 + 3, 10, 1, // tri1 + 3, 11, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 12, 15, 13, // tri0 + 12, 16, 17, // tri1 + 17, 15, 12, // tri2 + 16, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 19, 17, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_ta_1_v[20], 22, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 4, // tri0 + 5, 4, 8, // tri1 + 9, 10, 5, // tri2 + 5, 8, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 9, 11, // tri0 + 12, 10, 11, // tri1 + 12, 11, 13, // tri2 + 14, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 13, 15, // tri0 + 14, 15, 16, // tri1 + 17, 14, 16, // tri2 + 17, 16, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 0, 3, // tri0 + 19, 3, 20, // tri1 + 21, 19, 20, // tri2 + 0, 7, 1 // tri3 + ), + gsSPNTriangles_5b( + 7, 6, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(stone_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_ta_1_v[42], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 7, 9, 10, // tri1 + 9, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_ta_1_v[55], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 7, // tri0 + 6, 8, 9, // tri1 + 8, 10, 11, // tri2 + 10, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 15, 17, 18, // tri1 + 19, 20, 21, // tri2 + 21, 22, 19 // tri3 + ), + gsSPNTriangles_5b( + 17, 21, 20, // tri0 + 22, 23, 24, // tri1 + 23, 25, 26, // tri2 + 25, 27, 28 // tri3 + ), + gsSPNTriangles_5b( + 27, 29, 30, // tri0 + 30, 28, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_ta_1_v[86], 20, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 6, // tri0 + 4, 8, 7, // tri1 + 9, 10, 11, // tri2 + 10, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 12, 14, 15, // tri0 + 14, 16, 17, // tri1 + 17, 15, 14, // tri2 + 16, 18, 19 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_m_ta_1_v[106], 32, 0), + gsSPNTrianglesInit_5b( + 27, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 6, 7, 5, // tri1 + 7, 4, 5, // tri2 + 3, 8, 9 // tri3 + ), + gsSPNTriangles_5b( + 3, 9, 5, // tri0 + 6, 10, 7, // tri1 + 10, 11, 7, // tri2 + 12, 13, 0 // tri3 + ), + gsSPNTriangles_5b( + 13, 12, 14, // tri0 + 15, 16, 17, // tri1 + 15, 18, 16, // tri2 + 19, 20, 17 // tri3 + ), + gsSPNTriangles_5b( + 17, 16, 19, // tri0 + 14, 20, 13, // tri1 + 14, 17, 20, // tri2 + 18, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 19, 23, 20, // tri0 + 24, 25, 23, // tri1 + 23, 25, 20, // tri2 + 26, 27, 24 // tri3 + ), + gsSPNTriangles_5b( + 26, 28, 27, // tri0 + 28, 26, 29, // tri1 + 29, 26, 30, // tri2 + 22, 31, 30 // tri3 + ), + gsSPVertex(&grd_s_m_ta_1_v[138], 16, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 7, 8, 9, // tri2 + 7, 9, 5 // tri3 + ), + gsSPNTriangles_5b( + 9, 6, 5, // tri0 + 10, 11, 12, // tri1 + 11, 13, 12, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 12, // tri0 + 7, 15, 8, // tri1 + 15, 7, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_ta_1_v[154], 19, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 7, 8, 9, // tri2 + 7, 10, 8 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 8, // tri0 + 11, 12, 8, // tri1 + 11, 13, 12, // tri2 + 11, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 13, // tri0 + 14, 16, 15, // tri1 + 16, 17, 15, // tri2 + 16, 18, 17 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_m_ta_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_ta_1_v[198], 27, 0), + gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 3, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 2, 5, // tri0 + 0, 6, 1, // tri1 + 0, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 12, 14, 15, // tri0 + 13, 16, 14, // tri1 + 13, 17, 16, // tri2 + 17, 18, 16 // tri3 + ), + gsSPNTriangles_5b( + 4, 19, 3, // tri0 + 19, 20, 3, // tri1 + 0, 3, 21, // tri2 + 3, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 0, 21, 7, // tri0 + 22, 7, 21, // tri1 + 22, 9, 7, // tri2 + 9, 22, 11 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 11, // tri0 + 13, 12, 24, // tri1 + 13, 24, 25, // tri2 + 13, 25, 26 // tri3 + ), + gsSPNTriangles_5b( + 17, 13, 26, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_m_ta_1_v[225], 26, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 4, 1, 0 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 9, 5, // tri1 + 9, 6, 5, // tri2 + 2, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 2, 1, 10, // tri0 + 12, 4, 3, // tri1 + 12, 13, 4, // tri2 + 14, 15, 12 // tri3 + ), + gsSPNTriangles_5b( + 15, 13, 12, // tri0 + 16, 15, 14, // tri1 + 16, 17, 15, // tri2 + 18, 17, 16 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 18, // tri0 + 20, 17, 18, // tri1 + 21, 20, 19, // tri2 + 7, 6, 21 // tri3 + ), + gsSPNTriangles_5b( + 6, 20, 21, // tri0 + 22, 23, 8, // tri1 + 23, 9, 8, // tri2 + 24, 25, 22 // tri3 + ), + gsSPNTriangles_5b( + 25, 23, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_m_ta_1/grd_s_m_ta_1_evw_anime.c b/src/data/field/bg/acre/grd_s_m_ta_1/grd_s_m_ta_1_evw_anime.c new file mode 100644 index 00000000..57aee7eb --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_ta_1/grd_s_m_ta_1_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_m_ta_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_m_ta_1_evw_anime = { + 1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_m_ta_1_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_m_ta_2/grd_s_m_ta_2.c b/src/data/field/bg/acre/grd_s_m_ta_2/grd_s_m_ta_2.c new file mode 100644 index 00000000..05458134 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_ta_2/grd_s_m_ta_2.c @@ -0,0 +1,408 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 stone_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_m_ta_2_v[] = { +#include "assets/field/bg/grd_s_m_ta_2_v.inc" +}; + +extern Gfx grd_s_m_ta_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_ta_2_v[166], 23, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 3, 9, 1, // tri0 + 9, 5, 1, // tri1 + 9, 10, 5, // tri2 + 10, 7, 5 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 7, // tri0 + 11, 12, 7, // tri1 + 11, 13, 12, // tri2 + 11, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 13, // tri0 + 14, 16, 15, // tri1 + 14, 17, 16, // tri2 + 17, 18, 16 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 16, // tri0 + 19, 20, 16, // tri1 + 20, 21, 16, // tri2 + 21, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_ta_2_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 29, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 2, 4 // tri2 + ), + gsSPNTriangles_5b( + 2, 5, 4, // tri0 + 6, 7, 8, // tri1 + 9, 10, 8, // tri2 + 7, 9, 8 // tri3 + ), + gsSPNTriangles_5b( + 9, 11, 10, // tri0 + 11, 12, 10, // tri1 + 13, 12, 11, // tri2 + 13, 11, 14 // tri3 + ), + gsSPNTriangles_5b( + 11, 15, 14, // tri0 + 6, 16, 17, // tri1 + 16, 18, 17, // tri2 + 19, 20, 17 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 19, // tri0 + 19, 21, 20, // tri1 + 22, 21, 5, // tri2 + 21, 22, 20 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 15, // tri0 + 14, 23, 24, // tri1 + 15, 23, 14, // tri2 + 25, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 12, // tri0 + 27, 26, 25, // tri1 + 25, 28, 27, // tri2 + 27, 29, 26 // tri3 + ), + gsSPNTriangles_5b( + 29, 30, 26, // tri0 + 29, 31, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_ta_2_v[32], 19, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 2, // tri0 + 5, 6, 7, // tri1 + 2, 5, 7, // tri2 + 8, 9, 1 // tri3 + ), + gsSPNTriangles_5b( + 8, 10, 9, // tri0 + 10, 11, 9, // tri1 + 12, 13, 14, // tri2 + 13, 15, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 14, // tri0 + 16, 17, 14, // tri1 + 17, 18, 14, // tri2 + 10, 18, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 14, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_ta_2_v[51], 18, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 6, 4 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 6, // tri0 + 6, 5, 7, // tri1 + 4, 3, 5, // tri2 + 0, 2, 3 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 10, 12, 11, // tri1 + 12, 13, 14, // tri2 + 14, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 15, 14, // tri0 + 13, 16, 15, // tri1 + 16, 17, 15, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_ta_2_v[69], 20, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 3, // tri0 + 5, 6, 3, // tri1 + 5, 7, 6, // tri2 + 5, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 8, // tri0 + 11, 12, 10, // tri1 + 11, 13, 12, // tri2 + 14, 15, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 16, 15, // tri0 + 16, 17, 15, // tri1 + 16, 18, 17, // tri2 + 18, 19, 17 // tri3 + ), + gsSPNTriangles_5b( + 8, 5, 9, // tri0 + 10, 9, 11, // tri1 + 13, 11, 14, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(stone_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_ta_2_v[89], 17, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 3 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 4, // tri0 + 6, 7, 8, // tri1 + 7, 9, 10, // tri2 + 9, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 14, // tri0 + 14, 12, 11, // tri1 + 13, 15, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_ta_2_v[106], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 3 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 4, // tri0 + 6, 7, 8, // tri1 + 7, 9, 10, // tri2 + 9, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 14, // tri0 + 14, 12, 11, // tri1 + 13, 15, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 18, 20, 21, // tri0 + 20, 22, 23, // tri1 + 22, 24, 25, // tri2 + 24, 26, 27 // tri3 + ), + gsSPNTriangles_5b( + 26, 28, 29, // tri0 + 28, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_ta_2_v[138], 11, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 7, 9, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_ta_2_v[149], 17, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b( + 4, 7, 5, // tri0 + 7, 8, 5, // tri1 + 9, 10, 11, // tri2 + 10, 8, 11 // tri3 + ), + gsSPNTriangles_5b( + 8, 7, 11, // tri0 + 12, 2, 13, // tri1 + 2, 1, 13, // tri2 + 0, 14, 1 // tri3 + ), + gsSPNTriangles_5b( + 15, 14, 0, // tri0 + 15, 16, 14, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_m_ta_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_ta_2_v[189], 23, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b( + 3, 7, 6, // tri0 + 8, 9, 10, // tri1 + 11, 12, 13, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 13, 15, 16, // tri0 + 13, 16, 11, // tri1 + 11, 16, 17, // tri2 + 9, 17, 18 // tri3 + ), + gsSPNTriangles_5b( + 10, 9, 18, // tri0 + 19, 7, 3, // tri1 + 20, 19, 3, // tri2 + 5, 20, 3 // tri3 + ), + gsSPNTriangles_5b( + 7, 19, 21, // tri0 + 0, 7, 21, // tri1 + 22, 1, 0, // tri2 + 22, 0, 21 // tri3 + ), + gsSPNTriangles_5b( + 11, 17, 9, // tri0 + 0, 2, 6, // tri1 + 7, 0, 6, // tri2 + 9, 8, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 9, 12, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_m_ta_2_v[212], 20, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 2, 3, 4 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 6, // tri0 + 4, 3, 5, // tri1 + 6, 5, 7, // tri2 + 5, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 9, 10, 11, // tri1 + 9, 8, 10, // tri2 + 11, 10, 12 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 14, // tri0 + 12, 10, 13, // tri1 + 14, 13, 15, // tri2 + 13, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 18, 17, 16, // tri1 + 18, 19, 17, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_m_ta_2/grd_s_m_ta_2_evw_anime.c b/src/data/field/bg/acre/grd_s_m_ta_2/grd_s_m_ta_2_evw_anime.c new file mode 100644 index 00000000..3162cd94 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_ta_2/grd_s_m_ta_2_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_m_ta_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_m_ta_2_evw_anime = { + 1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_m_ta_2_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_m_ta_3/grd_s_m_ta_3.c b/src/data/field/bg/acre/grd_s_m_ta_3/grd_s_m_ta_3.c new file mode 100644 index 00000000..e4dae3cf --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_ta_3/grd_s_m_ta_3.c @@ -0,0 +1,432 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 stone_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_m_ta_3_v[] = { +#include "assets/field/bg/grd_s_m_ta_3_v.inc" +}; + +extern Gfx grd_s_m_ta_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_ta_3_v[174], 23, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 5, // tri0 + 7, 8, 5, // tri1 + 7, 9, 8, // tri2 + 9, 2, 8 // tri3 + ), + gsSPNTriangles_5b( + 2, 10, 8, // tri0 + 2, 1, 10, // tri1 + 3, 11, 4, // tri2 + 12, 13, 0 // tri3 + ), + gsSPNTriangles_5b( + 13, 1, 0, // tri0 + 14, 15, 16, // tri1 + 15, 17, 16, // tri2 + 17, 18, 16 // tri3 + ), + gsSPNTriangles_5b( + 17, 13, 18, // tri0 + 13, 12, 18, // tri1 + 15, 19, 17, // tri2 + 19, 20, 17 // tri3 + ), + gsSPNTriangles_5b( + 20, 13, 17, // tri0 + 20, 1, 13, // tri1 + 20, 10, 1, // tri2 + 21, 8, 10 // tri3 + ), + gsSPNTriangles_5b( + 21, 5, 8, // tri0 + 21, 22, 5, // tri1 + 22, 3, 5, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_ta_3_v[161], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 7, 9, 10, // tri1 + 9, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_m_ta_3_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 27, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 4, 0 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 3, 6, 5, // tri1 + 2, 1, 7, // tri2 + 1, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 10, 7, 11, // tri1 + 7, 8, 11, // tri2 + 9, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 10, // tri0 + 12, 14, 13, // tri1 + 14, 15, 13, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 14, 17, 16, // tri0 + 17, 18, 16, // tri1 + 18, 19, 16, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 19, // tri0 + 21, 22, 19, // tri1 + 21, 23, 22, // tri2 + 23, 24, 22 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 27, // tri0 + 25, 28, 26, // tri1 + 25, 29, 28, // tri2 + 29, 24, 28 // tri3 + ), + gsSPVertex(&grd_s_m_ta_3_v[30], 14, 0), + gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 6, 4, 8, // tri2 + 4, 9, 8 // tri3 + ), + gsSPNTriangles_5b( + 4, 3, 9, // tri0 + 3, 10, 9, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 11, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_ta_3_v[44], 24, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b( + 3, 6, 5, // tri0 + 0, 2, 3, // tri1 + 7, 8, 5, // tri2 + 5, 6, 7 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 8, // tri0 + 8, 7, 9, // tri1 + 9, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 12, // tri0 + 12, 11, 13, // tri1 + 15, 16, 14, // tri2 + 14, 13, 15 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 16, // tri0 + 16, 15, 17, // tri1 + 19, 20, 18, // tri2 + 19, 21, 20 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 21, // tri0 + 21, 19, 22, // tri1 + 18, 17, 19, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(stone_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_ta_3_v[68], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 1, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_ta_3_v[81], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 7, 9, 10, // tri1 + 9, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_ta_3_v[94], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 6, 4, 3, // tri0 + 5, 7, 8, // tri1 + 7, 9, 10, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 11, // tri0 + 9, 13, 12, // tri1 + 14, 15, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 18, 20, 21, // tri0 + 20, 22, 23, // tri1 + 22, 24, 25, // tri2 + 24, 26, 27 // tri3 + ), + gsSPNTriangles_5b( + 26, 28, 29, // tri0 + 28, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_ta_3_v[126], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_ta_3_v[139], 22, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 2, 1, 4 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 4, // tri0 + 6, 4, 5, // tri1 + 6, 7, 4, // tri2 + 6, 8, 9 // tri3 + ), + gsSPNTriangles_5b( + 9, 7, 6, // tri0 + 8, 10, 11, // tri1 + 11, 9, 8, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 13, 12, 10, // tri0 + 13, 14, 12, // tri1 + 15, 14, 13, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b( + 16, 15, 17, // tri0 + 18, 16, 17, // tri1 + 19, 18, 17, // tri2 + 20, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 21, 20, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_m_ta_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_ta_3_v[197], 30, 0), + gsSPNTrianglesInit_5b( + 37, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 3, 2 // tri2 + ), + gsSPNTriangles_5b( + 2, 1, 5, // tri0 + 6, 2, 5, // tri1 + 7, 4, 2, // tri2 + 7, 2, 6 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 8, 10, 11, // tri1 + 0, 11, 10, // tri2 + 10, 1, 0 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 10, // tri0 + 10, 13, 5, // tri1 + 10, 5, 1, // tri2 + 10, 9, 12 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 16, 15, 9, // tri1 + 8, 16, 9, // tri2 + 14, 17, 15 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 18, // tri0 + 18, 12, 9, // tri1 + 9, 15, 18, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 19, // tri0 + 19, 14, 20, // tri1 + 23, 19, 22, // tri2 + 19, 23, 24 // tri3 + ), + gsSPNTriangles_5b( + 19, 24, 14, // tri0 + 14, 24, 17, // tri1 + 25, 26, 27, // tri2 + 21, 25, 27 // tri3 + ), + gsSPNTriangles_5b( + 27, 22, 21, // tri0 + 28, 29, 27, // tri1 + 26, 28, 27, // tri2 + 29, 23, 22 // tri3 + ), + gsSPNTriangles_5b( + 27, 29, 22, // tri0 + 14, 16, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_m_ta_3_v[227], 20, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 4, 1, 0 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 2, // tri0 + 5, 6, 2, // tri1 + 5, 7, 6, // tri2 + 5, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 7, // tri0 + 8, 10, 9, // tri1 + 8, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 11, 14, 13, // tri1 + 14, 15, 13, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 15, // tri0 + 16, 18, 17, // tri1 + 16, 19, 18, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_m_ta_3/grd_s_m_ta_3_evw_anime.c b/src/data/field/bg/acre/grd_s_m_ta_3/grd_s_m_ta_3_evw_anime.c new file mode 100644 index 00000000..b47d2bcf --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_ta_3/grd_s_m_ta_3_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_m_ta_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_m_ta_3_evw_anime = { + 1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_m_ta_3_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_m_wf_1/grd_s_m_wf_1.c b/src/data/field/bg/acre/grd_s_m_wf_1/grd_s_m_wf_1.c new file mode 100644 index 00000000..08a3760e --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_wf_1/grd_s_m_wf_1.c @@ -0,0 +1,479 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_2_pal_dummy[]; +extern u8 bridge_2_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_m_wf_1_v[] = { +#include "assets/field/bg/grd_s_m_wf_1_v.inc" +}; + +extern Gfx grd_s_m_wf_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_wf_1_v[161], 21, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 3, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 0, 4, // tri0 + 5, 4, 6, // tri1 + 5, 6, 7, // tri2 + 8, 5, 7 // tri3 + ), + gsSPNTriangles_5b( + 8, 7, 9, // tri0 + 8, 9, 10, // tri1 + 11, 8, 10, // tri2 + 12, 11, 10 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 7, 6, 13, // tri1 + 7, 13, 15, // tri2 + 9, 7, 15 // tri3 + ), + gsSPNTriangles_5b( + 9, 15, 16, // tri0 + 9, 16, 17, // tri1 + 10, 9, 17, // tri2 + 12, 10, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 12, 17, // tri0 + 19, 3, 2, // tri1 + 20, 19, 2, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_wf_1_v[144], 17, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 6, 3, 8, // tri0 + 3, 4, 8, // tri1 + 9, 10, 11, // tri2 + 12, 9, 11 // tri3 + ), + gsSPNTriangles_5b( + 1, 12, 13, // tri0 + 9, 14, 10, // tri1 + 14, 15, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_2_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_2_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_m_wf_1_v[231], 32, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 2, // tri0 + 6, 7, 8, // tri1 + 6, 8, 9, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 13, // tri0 + 14, 15, 11, // tri1 + 14, 11, 10, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 11, // tri0 + 18, 19, 20, // tri1 + 18, 20, 21, // tri2 + 22, 18, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 21, 23, // tri0 + 23, 21, 24, // tri1 + 23, 24, 25, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b( + 26, 28, 29, // tri0 + 30, 31, 27, // tri1 + 30, 27, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_wf_1_v[263], 28, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 7, // tri0 + 8, 4, 7, // tri1 + 8, 7, 9, // tri2 + 9, 7, 10 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 12, 13, 14, // tri1 + 12, 14, 15, // tri2 + 16, 15, 17 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 19, 12, 15, // tri1 + 19, 15, 16, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 20, 22, 23, // tri0 + 24, 25, 26, // tri1 + 24, 26, 21, // tri2 + 27, 24, 21 // tri3 + ), + gsSPNTriangles_5b( + 27, 21, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_wf_1_v[0], 18, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 3, 4, // tri0 + 5, 4, 6, // tri1 + 7, 5, 6, // tri2 + 7, 6, 8 // tri3 + ), + gsSPNTriangles_5b( + 9, 7, 8, // tri0 + 9, 8, 10, // tri1 + 9, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 12, 14, // tri0 + 15, 14, 16, // tri1 + 13, 12, 17, // tri2 + 11, 13, 17 // tri3 + ), + gsSPNTriangles_5b( + 9, 11, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_wf_1_v[18], 21, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 5, 7, 8, // tri1 + 9, 5, 8, // tri2 + 9, 8, 10 // tri3 + ), + gsSPNTriangles_5b( + 1, 11, 4, // tri0 + 6, 12, 7, // tri1 + 9, 10, 13, // tri2 + 14, 9, 13 // tri3 + ), + gsSPNTriangles_5b( + 15, 14, 13, // tri0 + 15, 13, 16, // tri1 + 15, 16, 17, // tri2 + 18, 15, 17 // tri3 + ), + gsSPNTriangles_5b( + 19, 18, 17, // tri0 + 20, 19, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_wf_1_v[39], 24, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 1, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 19, 16, 20, // tri1 + 14, 21, 22, // tri2 + 21, 19, 23 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_m_wf_1_v[63], 32, 0), + gsSPNTrianglesInit_5b( + 29, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 0, 2 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 2, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 7, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 9, // tri0 + 12, 13, 14, // tri1 + 13, 15, 14, // tri2 + 6, 8, 16 // tri3 + ), + gsSPNTriangles_5b( + 3, 17, 5, // tri0 + 17, 18, 5, // tri1 + 5, 16, 2, // tri2 + 15, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 20, // tri0 + 19, 18, 21, // tri1 + 11, 22, 9, // tri2 + 7, 23, 10 // tri3 + ), + gsSPNTriangles_5b( + 7, 24, 23, // tri0 + 22, 4, 9, // tri1 + 22, 25, 4, // tri2 + 25, 0, 4 // tri3 + ), + gsSPNTriangles_5b( + 26, 27, 28, // tri0 + 27, 1, 28, // tri1 + 27, 29, 1, // tri2 + 29, 3, 1 // tri3 + ), + gsSPNTriangles_5b( + 29, 30, 3, // tri0 + 26, 31, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_wf_1_v[95], 15, 0), + gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b( + 3, 6, 2, // tri0 + 6, 7, 2, // tri1 + 7, 8, 2, // tri2 + 8, 9, 2 // tri3 + ), + gsSPNTriangles_5b( + 9, 0, 2, // tri0 + 8, 10, 9, // tri1 + 8, 11, 10, // tri2 + 12, 13, 10 // tri3 + ), + gsSPNTriangles_5b( + 4, 14, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_wf_1_v[110], 17, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 4, 9, 10, // tri0 + 11, 3, 12, // tri1 + 13, 14, 15, // tri2 + 1, 11, 16 // tri3 + ), + gsSPNTriangles_5b( + 13, 6, 14, // tri0 + 9, 13, 15, // tri1 + 11, 12, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_wf_1_v[127], 17, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 5, 7, // tri1 + 8, 7, 9, // tri2 + 10, 8, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 9, 11, // tri0 + 10, 11, 12, // tri1 + 13, 10, 12, // tri2 + 13, 12, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 13, // tri0 + 15, 13, 14, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_m_wf_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_wf_1_v[182], 24, 0), + gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 6, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 9, 10, 7, // tri1 + 7, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 13, 17, // tri0 + 5, 4, 7, // tri1 + 16, 18, 13, // tri2 + 3, 17, 4 // tri3 + ), + gsSPNTriangles_5b( + 3, 16, 17, // tri0 + 17, 13, 15, // tri1 + 4, 19, 20, // tri2 + 9, 7, 12 // tri3 + ), + gsSPNTriangles_5b( + 4, 20, 11, // tri0 + 4, 17, 19, // tri1 + 17, 15, 19, // tri2 + 7, 10, 8 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 0, // tri0 + 7, 4, 11, // tri1 + 22, 1, 0, // tri2 + 22, 23, 1 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_m_wf_1_v[206], 25, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 1, 0, 9, // tri2 + 0, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 12, 14, 13, // tri1 + 13, 14, 15, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 9, 17, 16, // tri1 + 9, 10, 17, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 20, // tri0 + 22, 21, 23, // tri1 + 12, 23, 21, // tri2 + 12, 11, 23 // tri3 + ), + gsSPNTriangles_5b( + 7, 8, 24, // tri0 + 19, 24, 8, // tri1 + 19, 18, 24, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_m_wf_1/grd_s_m_wf_1_evw_anime.c b/src/data/field/bg/acre/grd_s_m_wf_1/grd_s_m_wf_1_evw_anime.c new file mode 100644 index 00000000..b9ff8fc4 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_wf_1/grd_s_m_wf_1_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_m_wf_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_m_wf_1_evw_anime = { + 1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_m_wf_1_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_m_wf_2/grd_s_m_wf_2.c b/src/data/field/bg/acre/grd_s_m_wf_2/grd_s_m_wf_2.c new file mode 100644 index 00000000..3b912ae9 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_wf_2/grd_s_m_wf_2.c @@ -0,0 +1,564 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_2_pal_dummy[]; +extern u8 bridge_2_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_m_wf_2_v[] = { +#include "assets/field/bg/grd_s_m_wf_2_v.inc" +}; + +extern Gfx grd_s_m_wf_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_wf_2_v[225], 31, 0), + gsSPNTrianglesInit_5b( + 25, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 5, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 7, // tri0 + 8, 10, 9, // tri1 + 10, 11, 9, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 13, 15, 14, // tri0 + 13, 16, 15, // tri1 + 13, 17, 16, // tri2 + 17, 18, 16 // tri3 + ), + gsSPNTriangles_5b( + 17, 19, 18, // tri0 + 17, 20, 19, // tri1 + 17, 21, 20, // tri2 + 20, 22, 19 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 24, 26, 25, // tri1 + 24, 27, 26, // tri2 + 27, 28, 26 // tri3 + ), + gsSPNTriangles_5b( + 27, 29, 28, // tri0 + 28, 30, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_wf_2_v[197], 28, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 12, 13, // tri2 + 14, 11, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 17, 14, 19, // tri1 + 14, 15, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 20, 22, // tri0 + 12, 23, 24, // tri1 + 20, 25, 21, // tri2 + 25, 26, 27 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_2_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_2_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_m_wf_2_v[325], 32, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 2, // tri0 + 6, 7, 8, // tri1 + 6, 8, 9, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 13, // tri0 + 14, 15, 11, // tri1 + 14, 11, 10, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 11, // tri0 + 18, 19, 20, // tri1 + 18, 20, 21, // tri2 + 22, 18, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 21, 23, // tri0 + 23, 21, 24, // tri1 + 23, 24, 25, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b( + 26, 28, 29, // tri0 + 30, 31, 27, // tri1 + 30, 27, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_wf_2_v[357], 28, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 7, // tri0 + 8, 4, 7, // tri1 + 8, 7, 9, // tri2 + 9, 7, 10 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 12, 13, 14, // tri1 + 12, 14, 15, // tri2 + 16, 15, 17 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 19, 12, 15, // tri1 + 19, 15, 16, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 20, 22, 23, // tri0 + 24, 25, 26, // tri1 + 24, 26, 21, // tri2 + 27, 24, 21 // tri3 + ), + gsSPNTriangles_5b( + 27, 21, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_wf_2_v[0], 17, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 3, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 0, 4, // tri0 + 5, 4, 6, // tri1 + 7, 5, 6, // tri2 + 7, 6, 8 // tri3 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 7, 9, // tri1 + 11, 10, 9, // tri2 + 11, 9, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 14, 11, 13, // tri1 + 15, 14, 13, // tri2 + 16, 15, 13 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_wf_2_v[17], 24, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 3, 6, 5, // tri1 + 6, 7, 5, // tri2 + 7, 8, 5 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 7, 10, 9, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 13, 12, // tri0 + 13, 14, 12, // tri1 + 15, 16, 17, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b( + 16, 19, 18, // tri0 + 16, 20, 19, // tri1 + 20, 21, 19, // tri2 + 21, 22, 19 // tri3 + ), + gsSPNTriangles_5b( + 21, 23, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_wf_2_v[41], 32, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 4, 8, // tri0 + 5, 9, 10, // tri1 + 11, 12, 13, // tri2 + 12, 7, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 18, 19, 16, // tri1 + 20, 21, 22, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 21, 23, 24, // tri0 + 23, 25, 26, // tri1 + 27, 28, 29, // tri2 + 25, 29, 26 // tri3 + ), + gsSPVertex(&grd_s_m_wf_2_v[71], 17, 0), + gsSPNTrianglesInit_5b( + 9, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 1, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 7, 9, 8, // tri1 + 10, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 13, 15, 9, // tri0 + 14, 10, 16, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_m_wf_2_v[88], 32, 0), + gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 11, // tri0 + 13, 14, 11, // tri1 + 14, 15, 11, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 15, // tri0 + 17, 18, 15, // tri1 + 18, 19, 15, // tri2 + 17, 20, 18 // tri3 + ), + gsSPNTriangles_5b( + 18, 21, 19, // tri0 + 21, 7, 19, // tri1 + 22, 23, 24, // tri2 + 23, 25, 24 // tri3 + ), + gsSPNTriangles_5b( + 26, 27, 28, // tri0 + 27, 29, 28, // tri1 + 29, 30, 28, // tri2 + 30, 31, 28 // tri3 + ), + gsSPVertex(&grd_s_m_wf_2_v[120], 29, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 5, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 7, 8, 11 // tri3 + ), + gsSPNTriangles_5b( + 7, 11, 5, // tri0 + 1, 12, 2, // tri1 + 1, 13, 12, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 15, 14, // tri0 + 16, 17, 18, // tri1 + 19, 17, 16, // tri2 + 19, 20, 17 // tri3 + ), + gsSPNTriangles_5b( + 21, 20, 19, // tri0 + 22, 23, 24, // tri1 + 22, 25, 23, // tri2 + 25, 26, 23 // tri3 + ), + gsSPNTriangles_5b( + 10, 27, 15, // tri0 + 10, 9, 27, // tri1 + 9, 26, 27, // tri2 + 9, 23, 26 // tri3 + ), + gsSPNTriangles_5b( + 0, 2, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_wf_2_v[149], 28, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 4, 9, 10, // tri0 + 11, 12, 13, // tri1 + 14, 15, 16, // tri2 + 15, 17, 18 // tri3 + ), + gsSPNTriangles_5b( + 12, 19, 20, // tri0 + 19, 14, 21, // tri1 + 22, 3, 23, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b( + 1, 22, 27, // tri0 + 24, 6, 25, // tri1 + 9, 24, 26, // tri2 + 22, 23, 27 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_wf_2_v[177], 20, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 6, // tri0 + 8, 10, 9, // tri1 + 10, 11, 9, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 13, 15, 14, // tri0 + 13, 16, 15, // tri1 + 13, 17, 16, // tri2 + 17, 18, 16 // tri3 + ), + gsSPNTriangles_5b( + 17, 19, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_m_wf_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPVertex(&grd_s_m_wf_2_v[256], 30, 0), + gsSPNTrianglesInit_5b( + 32, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 1, // tri0 + 1, 6, 3, // tri1 + 6, 7, 3, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 6, 9, 8, // tri0 + 10, 6, 1, // tri1 + 10, 9, 6, // tri2 + 5, 10, 1 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 9, // tri0 + 11, 12, 9, // tri1 + 12, 13, 9, // tri2 + 9, 13, 8 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 8, // tri0 + 13, 15, 14, // tri1 + 15, 16, 14, // tri2 + 12, 15, 13 // tri3 + ), + gsSPNTriangles_5b( + 12, 17, 15, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20, // tri2 + 19, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 23, // tri0 + 21, 24, 23, // tri1 + 25, 18, 26, // tri2 + 18, 27, 26 // tri3 + ), + gsSPNTriangles_5b( + 18, 20, 27, // tri0 + 27, 28, 26, // tri1 + 27, 29, 28, // tri2 + 27, 23, 29 // tri3 + ), + gsSPNTriangles_5b( + 27, 20, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_m_wf_2_v[286], 32, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 2, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 2, 7, // tri1 + 8, 6, 9, // tri2 + 8, 10, 6 // tri3 + ), + gsSPNTriangles_5b( + 11, 10, 12, // tri0 + 13, 14, 15, // tri1 + 14, 10, 15, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b( + 17, 14, 18, // tri0 + 19, 20, 21, // tri1 + 20, 17, 21, // tri2 + 22, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 20, // tri0 + 24, 23, 25, // tri1 + 26, 27, 24, // tri2 + 27, 23, 24 // tri3 + ), + gsSPNTriangles_5b( + 28, 27, 29, // tri0 + 28, 30, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_wf_2_v[317], 8, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 1, 0 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 1, 7, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_m_wf_2/grd_s_m_wf_2_evw_anime.c b/src/data/field/bg/acre/grd_s_m_wf_2/grd_s_m_wf_2_evw_anime.c new file mode 100644 index 00000000..9f0d7649 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_wf_2/grd_s_m_wf_2_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_m_wf_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_m_wf_2_evw_anime = { + 1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_m_wf_2_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_m_wf_3/grd_s_m_wf_3.c b/src/data/field/bg/acre/grd_s_m_wf_3/grd_s_m_wf_3.c new file mode 100644 index 00000000..46665145 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_wf_3/grd_s_m_wf_3.c @@ -0,0 +1,485 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_2_pal_dummy[]; +extern u8 bridge_2_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_m_wf_3_v[] = { +#include "assets/field/bg/grd_s_m_wf_3_v.inc" +}; + +extern Gfx grd_s_m_wf_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_wf_3_v[166], 28, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 2, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 6, 8, 5 // tri3 + ), + gsSPNTriangles_5b( + 4, 9, 7, // tri0 + 9, 10, 7, // tri1 + 9, 11, 10, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 11, // tri0 + 13, 14, 11, // tri1 + 15, 16, 17, // tri2 + 15, 18, 16 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 16, // tri0 + 19, 20, 16, // tri1 + 19, 21, 20, // tri2 + 19, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 24, 26, 25, // tri1 + 23, 27, 24, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_wf_3_v[155], 11, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_2_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_2_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_m_wf_3_v[244], 32, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 2, // tri0 + 6, 7, 8, // tri1 + 6, 8, 9, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 13, // tri0 + 14, 15, 11, // tri1 + 14, 11, 10, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 11, // tri0 + 18, 19, 20, // tri1 + 18, 20, 21, // tri2 + 22, 18, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 21, 23, // tri0 + 23, 21, 24, // tri1 + 23, 24, 25, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b( + 26, 28, 29, // tri0 + 30, 31, 27, // tri1 + 30, 27, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_wf_3_v[276], 28, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 7, // tri0 + 8, 4, 7, // tri1 + 8, 7, 9, // tri2 + 9, 7, 10 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 12, 13, 14, // tri1 + 12, 14, 15, // tri2 + 16, 15, 17 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 19, 12, 15, // tri1 + 19, 15, 16, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 20, 22, 23, // tri0 + 24, 25, 26, // tri1 + 24, 26, 21, // tri2 + 27, 24, 21 // tri3 + ), + gsSPNTriangles_5b( + 27, 21, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_wf_3_v[0], 23, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 7, 10, 9, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 11, // tri0 + 12, 14, 13, // tri1 + 14, 15, 13, // tri2 + 15, 16, 13 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 16, // tri0 + 15, 18, 17, // tri1 + 18, 19, 17, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 19, // tri0 + 21, 22, 19, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_wf_3_v[23], 15, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 5, // tri0 + 7, 9, 8, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 12, // tri0 + 5, 4, 7, // tri1 + 10, 9, 7, // tri2 + 13, 12, 10 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_wf_3_v[38], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 6, 7, 8, // tri1 + 9, 6, 10, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 11, 15, // tri0 + 7, 16, 17, // tri1 + 16, 14, 18, // tri2 + 5, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 0, // tri0 + 23, 24, 21, // tri1 + 25, 26, 23, // tri2 + 25, 27, 26 // tri3 + ), + gsSPNTriangles_5b( + 25, 28, 27, // tri0 + 28, 29, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_wf_3_v[69], 17, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 6, // tri0 + 6, 7, 8, // tri1 + 8, 9, 10, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 14, 12, 13, // tri1 + 14, 15, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_m_wf_3_v[86], 32, 0), + gsSPNTrianglesInit_5b( + 32, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 12, 13, 9 // tri3 + ), + gsSPNTriangles_5b( + 13, 11, 9, // tri0 + 13, 12, 14, // tri1 + 12, 15, 14, // tri2 + 16, 17, 3 // tri3 + ), + gsSPNTriangles_5b( + 17, 2, 3, // tri0 + 16, 5, 17, // tri1 + 16, 7, 5, // tri2 + 7, 18, 6 // tri3 + ), + gsSPNTriangles_5b( + 7, 19, 18, // tri0 + 19, 20, 18, // tri1 + 20, 21, 18, // tri2 + 0, 22, 1 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 1, // tri0 + 23, 24, 1, // tri1 + 22, 11, 23, // tri2 + 22, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 25, 8, // tri0 + 25, 26, 8, // tri1 + 22, 27, 10, // tri2 + 24, 28, 1 // tri3 + ), + gsSPNTriangles_5b( + 24, 29, 28, // tri0 + 29, 30, 28, // tri1 + 29, 14, 30, // tri2 + 14, 15, 30 // tri3 + ), + gsSPNTriangles_5b( + 12, 31, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_wf_3_v[118], 14, 0), + gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 4, // tri0 + 4, 8, 5, // tri1 + 7, 9, 4, // tri2 + 9, 10, 4 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 4, // tri0 + 11, 8, 4, // tri1 + 10, 12, 11, // tri2 + 12, 0, 11 // tri3 + ), + gsSPNTriangles_5b( + 8, 13, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_wf_3_v[132], 11, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 8, 3, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_wf_3_v[143], 12, 0), + gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 1, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b( + 8, 11, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_m_wf_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPVertex(&grd_s_m_wf_3_v[194], 19, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 4, 6, // tri0 + 8, 9, 6, // tri1 + 5, 8, 6, // tri2 + 8, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 9, 8, 11, // tri0 + 7, 12, 13, // tri1 + 7, 6, 12, // tri2 + 6, 14, 12 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 12, // tri0 + 14, 16, 15, // tri1 + 14, 11, 16, // tri2 + 3, 17, 0 // tri3 + ), + gsSPNTriangles_5b( + 3, 18, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_m_wf_3_v[213], 31, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 2, 3, 4 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 6, 5, 7, // tri1 + 7, 8, 9, // tri2 + 7, 5, 8 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 12, // tri0 + 10, 13, 11, // tri1 + 12, 11, 14, // tri2 + 11, 15, 14 // tri3 + ), + gsSPNTriangles_5b( + 16, 15, 17, // tri0 + 18, 19, 20, // tri1 + 18, 15, 19, // tri2 + 21, 19, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 22, 19, // tri0 + 23, 24, 22, // tri1 + 25, 8, 26, // tri2 + 8, 27, 26 // tri3 + ), + gsSPNTriangles_5b( + 28, 27, 29, // tri0 + 29, 27, 30, // tri1 + 27, 13, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_m_wf_3/grd_s_m_wf_3_evw_anime.c b/src/data/field/bg/acre/grd_s_m_wf_3/grd_s_m_wf_3_evw_anime.c new file mode 100644 index 00000000..9bbe2f33 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_wf_3/grd_s_m_wf_3_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_m_wf_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_m_wf_3_evw_anime = { + 1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_m_wf_3_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_o_1/grd_s_o_1.c b/src/data/field/bg/acre/grd_s_o_1/grd_s_o_1.c new file mode 100644 index 00000000..958f5947 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_1/grd_s_o_1.c @@ -0,0 +1,139 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_o_1_v[] = { +#include "assets/field/bg/grd_s_o_1_v.inc" +}; + +extern Gfx grd_s_o_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_1_v[0], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 5, // tri0 + 7, 4, 8, // tri1 + 4, 9, 8, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 11, // tri0 + 1, 5, 13, // tri1 + 1, 0, 5, // tri2 + 4, 2, 9 // tri3 + ), + gsSPNTriangles_5b( + 4, 0, 2, // tri0 + 4, 11, 6, // tri1 + 4, 7, 11, // tri2 + 10, 8, 14 // tri3 + ), + gsSPNTriangles_5b( + 10, 7, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_o_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_1_v[15], 32, 0), + gsSPNTrianglesInit_5b( + 33, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 6, // tri0 + 5, 7, 6, // tri1 + 7, 3, 6, // tri2 + 7, 8, 3 // tri3 + ), + gsSPNTriangles_5b( + 5, 9, 10, // tri0 + 9, 11, 10, // tri1 + 11, 8, 10, // tri2 + 5, 12, 9 // tri3 + ), + gsSPNTriangles_5b( + 12, 11, 9, // tri0 + 12, 13, 11, // tri1 + 5, 14, 15, // tri2 + 5, 16, 14 // tri3 + ), + gsSPNTriangles_5b( + 14, 13, 15, // tri0 + 14, 17, 13, // tri1 + 16, 18, 19, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 17, 19, // tri0 + 16, 21, 18, // tri1 + 21, 20, 18, // tri2 + 21, 22, 20 // tri3 + ), + gsSPNTriangles_5b( + 16, 23, 21, // tri0 + 23, 24, 21, // tri1 + 24, 25, 21, // tri2 + 25, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 23, 26, 24, // tri0 + 26, 27, 24, // tri1 + 27, 25, 24, // tri2 + 23, 28, 29 // tri3 + ), + gsSPNTriangles_5b( + 28, 27, 29, // tri0 + 28, 30, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_o_1_v[46], 12, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 6, // tri0 + 0, 7, 5, // tri1 + 5, 4, 6, // tri2 + 5, 8, 4 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 10, // tri0 + 9, 11, 10, // tri1 + 11, 8, 10, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_o_1/grd_s_o_1_evw_anime.c b/src/data/field/bg/acre/grd_s_o_1/grd_s_o_1_evw_anime.c new file mode 100644 index 00000000..58a7c4ee --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_1/grd_s_o_1_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_o_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_1_evw_anime = { + 1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_o_1_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_o_10/grd_s_o_10.c b/src/data/field/bg/acre/grd_s_o_10/grd_s_o_10.c new file mode 100644 index 00000000..f515e356 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_10/grd_s_o_10.c @@ -0,0 +1,133 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_o_10_v[] = { +#include "assets/field/bg/grd_s_o_10_v.inc" +}; + +extern Gfx grd_s_o_10_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_10_v[0], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 5, // tri0 + 7, 4, 8, // tri1 + 4, 9, 8, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 11, // tri0 + 1, 5, 13, // tri1 + 1, 0, 5, // tri2 + 4, 2, 9 // tri3 + ), + gsSPNTriangles_5b( + 4, 0, 2, // tri0 + 4, 11, 6, // tri1 + 4, 7, 11, // tri2 + 10, 8, 14 // tri3 + ), + gsSPNTriangles_5b( + 10, 7, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_o_10_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_10_v[15], 32, 0), + gsSPNTrianglesInit_5b( + 35, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 4, // tri0 + 0, 6, 7, // tri1 + 6, 8, 7, // tri2 + 8, 5, 7 // tri3 + ), + gsSPNTriangles_5b( + 0, 9, 6, // tri0 + 9, 10, 6, // tri1 + 10, 8, 6, // tri2 + 11, 12, 4 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 4, // tri0 + 12, 2, 13, // tri1 + 14, 12, 11, // tri2 + 14, 15, 12 // tri3 + ), + gsSPNTriangles_5b( + 15, 2, 12, // tri0 + 15, 16, 2, // tri1 + 17, 15, 14, // tri2 + 17, 18, 15 // tri3 + ), + gsSPNTriangles_5b( + 18, 16, 15, // tri0 + 19, 20, 17, // tri1 + 20, 18, 17, // tri2 + 20, 16, 18 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 19, // tri0 + 22, 20, 19, // tri1 + 22, 23, 20, // tri2 + 23, 16, 20 // tri3 + ), + gsSPNTriangles_5b( + 24, 25, 21, // tri0 + 25, 22, 21, // tri1 + 25, 23, 22, // tri2 + 26, 27, 24 // tri3 + ), + gsSPNTriangles_5b( + 26, 28, 27, // tri0 + 28, 23, 27, // tri1 + 28, 29, 23, // tri2 + 30, 31, 26 // tri3 + ), + gsSPVertex(&grd_s_o_10_v[47], 7, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 0 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 5, // tri0 + 6, 3, 5, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_o_10/grd_s_o_10_evw_anime.c b/src/data/field/bg/acre/grd_s_o_10/grd_s_o_10_evw_anime.c new file mode 100644 index 00000000..08fe13f6 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_10/grd_s_o_10_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_o_10_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_10_evw_anime = { + 1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_o_10_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_o_2/grd_s_o_2.c b/src/data/field/bg/acre/grd_s_o_2/grd_s_o_2.c new file mode 100644 index 00000000..f761ed93 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_2/grd_s_o_2.c @@ -0,0 +1,139 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_o_2_v[] = { +#include "assets/field/bg/grd_s_o_2_v.inc" +}; + +extern Gfx grd_s_o_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_2_v[0], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 4, 8, 9, // tri1 + 8, 10, 9, // tri2 + 0, 8, 11 // tri3 + ), + gsSPNTriangles_5b( + 8, 12, 11, // tri0 + 5, 9, 13, // tri1 + 5, 4, 9, // tri2 + 8, 6, 12 // tri3 + ), + gsSPNTriangles_5b( + 8, 4, 6, // tri0 + 8, 2, 10, // tri1 + 8, 0, 2, // tri2 + 1, 11, 14 // tri3 + ), + gsSPNTriangles_5b( + 1, 0, 11, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_o_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_2_v[15], 32, 0), + gsSPNTrianglesInit_5b( + 36, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 4, // tri0 + 6, 7, 4, // tri1 + 6, 8, 7, // tri2 + 8, 2, 7 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 6, // tri0 + 9, 11, 10, // tri1 + 11, 2, 10, // tri2 + 12, 13, 9 // tri3 + ), + gsSPNTriangles_5b( + 13, 11, 9, // tri0 + 13, 2, 11, // tri1 + 14, 15, 12, // tri2 + 15, 13, 12 // tri3 + ), + gsSPNTriangles_5b( + 15, 2, 13, // tri0 + 16, 17, 14, // tri1 + 17, 15, 14, // tri2 + 17, 2, 15 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 2, // tri0 + 19, 20, 16, // tri1 + 20, 17, 16, // tri2 + 20, 18, 17 // tri3 + ), + gsSPNTriangles_5b( + 21, 20, 19, // tri0 + 21, 22, 20, // tri1 + 22, 23, 20, // tri2 + 23, 18, 20 // tri3 + ), + gsSPNTriangles_5b( + 24, 22, 21, // tri0 + 24, 25, 22, // tri1 + 25, 23, 22, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b( + 27, 25, 28, // tri0 + 27, 23, 25, // tri1 + 29, 30, 26, // tri2 + 30, 31, 26 // tri3 + ), + gsSPNTriangles_5b( + 30, 23, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_o_2_v[47], 7, 0), + gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b( + 6, 1, 4, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_o_2/grd_s_o_2_evw_anime.c b/src/data/field/bg/acre/grd_s_o_2/grd_s_o_2_evw_anime.c new file mode 100644 index 00000000..65cacabc --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_2/grd_s_o_2_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_o_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_2_evw_anime = { + 1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_o_2_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_o_3/grd_s_o_3.c b/src/data/field/bg/acre/grd_s_o_3/grd_s_o_3.c new file mode 100644 index 00000000..a7210a12 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_3/grd_s_o_3.c @@ -0,0 +1,133 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_o_3_v[] = { +#include "assets/field/bg/grd_s_o_3_v.inc" +}; + +extern Gfx grd_s_o_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_3_v[0], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 5, // tri0 + 7, 4, 8, // tri1 + 4, 9, 8, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 11, // tri0 + 1, 5, 13, // tri1 + 1, 0, 5, // tri2 + 4, 2, 9 // tri3 + ), + gsSPNTriangles_5b( + 4, 0, 2, // tri0 + 4, 11, 6, // tri1 + 4, 7, 11, // tri2 + 10, 8, 14 // tri3 + ), + gsSPNTriangles_5b( + 10, 7, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_o_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_3_v[15], 32, 0), + gsSPNTrianglesInit_5b( + 38, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 0, 2, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 1, 0, // tri0 + 5, 6, 1, // tri1 + 7, 5, 3, // tri2 + 5, 0, 3 // tri3 + ), + gsSPNTriangles_5b( + 8, 6, 5, // tri0 + 9, 8, 7, // tri1 + 8, 5, 7, // tri2 + 1, 10, 2 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 2, // tri0 + 11, 4, 2, // tri1 + 1, 12, 10, // tri2 + 12, 11, 10 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 11, // tri0 + 1, 14, 12, // tri1 + 1, 15, 14, // tri2 + 14, 16, 12 // tri3 + ), + gsSPNTriangles_5b( + 16, 13, 12, // tri0 + 15, 17, 14, // tri1 + 17, 18, 14, // tri2 + 18, 16, 14 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 8, // tri0 + 20, 6, 8, // tri1 + 21, 8, 9, // tri2 + 21, 19, 8 // tri3 + ), + gsSPNTriangles_5b( + 22, 20, 19, // tri0 + 23, 22, 21, // tri1 + 22, 19, 21, // tri2 + 24, 20, 22 // tri3 + ), + gsSPNTriangles_5b( + 25, 24, 23, // tri0 + 24, 22, 23, // tri1 + 26, 20, 27, // tri2 + 26, 28, 20 // tri3 + ), + gsSPNTriangles_5b( + 29, 27, 30, // tri0 + 29, 26, 27, // tri1 + 31, 28, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_o_3_v[47], 4, 0), + gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_o_3/grd_s_o_3_evw_anime.c b/src/data/field/bg/acre/grd_s_o_3/grd_s_o_3_evw_anime.c new file mode 100644 index 00000000..fe41ae28 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_3/grd_s_o_3_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_o_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_3_evw_anime = { + 1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_o_3_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_o_4/grd_s_o_4.c b/src/data/field/bg/acre/grd_s_o_4/grd_s_o_4.c new file mode 100644 index 00000000..67fe2247 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_4/grd_s_o_4.c @@ -0,0 +1,139 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_o_4_v[] = { +#include "assets/field/bg/grd_s_o_4_v.inc" +}; + +extern Gfx grd_s_o_4_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_4_v[0], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 5, // tri0 + 7, 4, 8, // tri1 + 4, 9, 8, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 11, // tri0 + 1, 5, 13, // tri1 + 1, 0, 5, // tri2 + 4, 2, 9 // tri3 + ), + gsSPNTriangles_5b( + 4, 0, 2, // tri0 + 4, 11, 6, // tri1 + 4, 7, 11, // tri2 + 10, 8, 14 // tri3 + ), + gsSPNTriangles_5b( + 10, 7, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_o_4_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_4_v[15], 32, 0), + gsSPNTrianglesInit_5b( + 39, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 1, // tri0 + 6, 3, 0, // tri1 + 6, 7, 3, // tri2 + 7, 4, 3 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 6, // tri0 + 9, 7, 6, // tri1 + 9, 4, 7, // tri2 + 10, 11, 8 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 8, // tri0 + 11, 4, 12, // tri1 + 11, 13, 4, // tri2 + 14, 15, 10 // tri3 + ), + gsSPNTriangles_5b( + 14, 16, 15, // tri0 + 16, 13, 15, // tri1 + 17, 18, 14, // tri2 + 18, 16, 14 // tri3 + ), + gsSPNTriangles_5b( + 18, 13, 16, // tri0 + 19, 20, 17, // tri1 + 20, 18, 17, // tri2 + 20, 13, 18 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 19, // tri0 + 22, 20, 19, // tri1 + 22, 23, 20, // tri2 + 23, 13, 20 // tri3 + ), + gsSPNTriangles_5b( + 24, 22, 21, // tri0 + 24, 25, 22, // tri1 + 25, 23, 22, // tri2 + 26, 27, 24 // tri3 + ), + gsSPNTriangles_5b( + 27, 25, 24, // tri0 + 27, 23, 25, // tri1 + 28, 29, 26, // tri2 + 29, 27, 26 // tri3 + ), + gsSPNTriangles_5b( + 29, 23, 27, // tri0 + 30, 31, 28, // tri1 + 31, 29, 28, // tri2 + 31, 23, 29 // tri3 + ), + gsSPVertex(&grd_s_o_4_v[47], 6, 0), + gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 3, 5, 0 // tri2 + ), + gsSPNTriangles_5b( + 5, 1, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_o_4/grd_s_o_4_evw_anime.c b/src/data/field/bg/acre/grd_s_o_4/grd_s_o_4_evw_anime.c new file mode 100644 index 00000000..675a50dd --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_4/grd_s_o_4_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_o_4_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_4_evw_anime = { + 1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_o_4_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_o_5/grd_s_o_5.c b/src/data/field/bg/acre/grd_s_o_5/grd_s_o_5.c new file mode 100644 index 00000000..88031986 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_5/grd_s_o_5.c @@ -0,0 +1,139 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_o_5_v[] = { +#include "assets/field/bg/grd_s_o_5_v.inc" +}; + +extern Gfx grd_s_o_5_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_5_v[0], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 5, // tri0 + 7, 4, 8, // tri1 + 4, 9, 8, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 11, // tri0 + 1, 5, 13, // tri1 + 1, 0, 5, // tri2 + 4, 2, 9 // tri3 + ), + gsSPNTriangles_5b( + 4, 0, 2, // tri0 + 4, 11, 6, // tri1 + 4, 7, 11, // tri2 + 10, 8, 14 // tri3 + ), + gsSPNTriangles_5b( + 10, 7, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_o_5_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_5_v[15], 32, 0), + gsSPNTrianglesInit_5b( + 40, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 5, 2, 3, // tri2 + 5, 7, 2 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 8, 11, 9, // tri1 + 11, 6, 9, // tri2 + 6, 12, 9 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 9, // tri0 + 13, 10, 9, // tri1 + 13, 14, 10, // tri2 + 12, 15, 13 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 13, // tri0 + 16, 17, 13, // tri1 + 18, 11, 8, // tri2 + 18, 19, 11 // tri3 + ), + gsSPNTriangles_5b( + 19, 6, 11, // tri0 + 12, 20, 15, // tri1 + 20, 16, 15, // tri2 + 20, 21, 16 // tri3 + ), + gsSPNTriangles_5b( + 12, 22, 20, // tri0 + 12, 23, 22, // tri1 + 22, 21, 20, // tri2 + 22, 24, 21 // tri3 + ), + gsSPNTriangles_5b( + 23, 25, 22, // tri0 + 25, 26, 22, // tri1 + 26, 24, 22, // tri2 + 7, 5, 18 // tri3 + ), + gsSPNTriangles_5b( + 5, 19, 18, // tri0 + 5, 6, 19, // tri1 + 27, 1, 0, // tri2 + 27, 28, 1 // tri3 + ), + gsSPNTriangles_5b( + 28, 4, 1, // tri0 + 29, 30, 27, // tri1 + 30, 28, 27, // tri2 + 30, 4, 28 // tri3 + ), + gsSPNTriangles_5b( + 30, 31, 4, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_o_5_v[47], 5, 0), + gsSPNTrianglesInit_5b( + 3, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_o_5/grd_s_o_5_evw_anime.c b/src/data/field/bg/acre/grd_s_o_5/grd_s_o_5_evw_anime.c new file mode 100644 index 00000000..8abe7dde --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_5/grd_s_o_5_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_o_5_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_5_evw_anime = { + 1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_o_5_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_o_6/grd_s_o_6.c b/src/data/field/bg/acre/grd_s_o_6/grd_s_o_6.c new file mode 100644 index 00000000..6bb2b0d7 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_6/grd_s_o_6.c @@ -0,0 +1,133 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_o_6_v[] = { +#include "assets/field/bg/grd_s_o_6_v.inc" +}; + +extern Gfx grd_s_o_6_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_6_v[0], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 5, // tri0 + 7, 4, 8, // tri1 + 4, 9, 8, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 11, // tri0 + 1, 5, 13, // tri1 + 1, 0, 5, // tri2 + 4, 2, 9 // tri3 + ), + gsSPNTriangles_5b( + 4, 0, 2, // tri0 + 4, 11, 6, // tri1 + 4, 7, 11, // tri2 + 10, 8, 14 // tri3 + ), + gsSPNTriangles_5b( + 10, 7, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_o_6_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_6_v[15], 32, 0), + gsSPNTrianglesInit_5b( + 38, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 0, // tri0 + 6, 1, 0, // tri1 + 6, 7, 1, // tri2 + 7, 4, 1 // tri3 + ), + gsSPNTriangles_5b( + 8, 6, 5, // tri0 + 8, 9, 6, // tri1 + 9, 7, 6, // tri2 + 10, 11, 8 // tri3 + ), + gsSPNTriangles_5b( + 11, 9, 8, // tri0 + 11, 7, 9, // tri1 + 12, 11, 10, // tri2 + 12, 13, 11 // tri3 + ), + gsSPNTriangles_5b( + 13, 7, 11, // tri0 + 13, 14, 7, // tri1 + 15, 16, 12, // tri2 + 16, 13, 12 // tri3 + ), + gsSPNTriangles_5b( + 16, 14, 13, // tri0 + 17, 16, 15, // tri1 + 17, 18, 16, // tri2 + 18, 19, 16 // tri3 + ), + gsSPNTriangles_5b( + 19, 14, 16, // tri0 + 20, 21, 17, // tri1 + 21, 18, 17, // tri2 + 21, 19, 18 // tri3 + ), + gsSPNTriangles_5b( + 22, 21, 20, // tri0 + 22, 23, 21, // tri1 + 23, 19, 21, // tri2 + 24, 25, 22 // tri3 + ), + gsSPNTriangles_5b( + 25, 23, 22, // tri0 + 25, 19, 23, // tri1 + 26, 27, 24, // tri2 + 27, 28, 24 // tri3 + ), + gsSPNTriangles_5b( + 27, 19, 28, // tri0 + 27, 29, 19, // tri1 + 30, 31, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_o_6_v[47], 4, 0), + gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_o_6/grd_s_o_6_evw_anime.c b/src/data/field/bg/acre/grd_s_o_6/grd_s_o_6_evw_anime.c new file mode 100644 index 00000000..8d208d58 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_6/grd_s_o_6_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_o_6_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_6_evw_anime = { + 1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_o_6_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_o_7/grd_s_o_7.c b/src/data/field/bg/acre/grd_s_o_7/grd_s_o_7.c new file mode 100644 index 00000000..9f77755e --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_7/grd_s_o_7.c @@ -0,0 +1,139 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_o_7_v[] = { +#include "assets/field/bg/grd_s_o_7_v.inc" +}; + +extern Gfx grd_s_o_7_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_7_v[0], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 5, // tri0 + 7, 4, 8, // tri1 + 4, 9, 8, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 11, // tri0 + 1, 5, 13, // tri1 + 1, 0, 5, // tri2 + 4, 2, 9 // tri3 + ), + gsSPNTriangles_5b( + 4, 0, 2, // tri0 + 4, 11, 6, // tri1 + 4, 7, 11, // tri2 + 10, 8, 14 // tri3 + ), + gsSPNTriangles_5b( + 10, 7, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_o_7_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_7_v[15], 32, 0), + gsSPNTrianglesInit_5b( + 37, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 1, // tri0 + 5, 2, 1, // tri1 + 5, 6, 2, // tri2 + 4, 7, 5 // tri3 + ), + gsSPNTriangles_5b( + 4, 8, 7, // tri0 + 7, 6, 5, // tri1 + 7, 9, 6, // tri2 + 8, 10, 7 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 7, // tri0 + 11, 9, 7, // tri1 + 8, 12, 13, // tri2 + 12, 11, 13 // tri3 + ), + gsSPNTriangles_5b( + 12, 14, 11, // tri0 + 8, 15, 12, // tri1 + 15, 16, 12, // tri2 + 16, 14, 12 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 14, // tri0 + 15, 18, 16, // tri1 + 18, 19, 16, // tri2 + 19, 17, 16 // tri3 + ), + gsSPNTriangles_5b( + 15, 20, 18, // tri0 + 15, 21, 20, // tri1 + 20, 22, 18, // tri2 + 22, 19, 18 // tri3 + ), + gsSPNTriangles_5b( + 21, 23, 20, // tri0 + 23, 24, 20, // tri1 + 24, 22, 20, // tri2 + 21, 25, 23 // tri3 + ), + gsSPNTriangles_5b( + 25, 24, 23, // tri0 + 25, 26, 24, // tri1 + 21, 27, 28, // tri2 + 27, 29, 28 // tri3 + ), + gsSPNTriangles_5b( + 29, 30, 28, // tri0 + 30, 26, 28, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_o_7_v[46], 7, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 1, // tri0 + 5, 3, 1, // tri1 + 5, 6, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_o_7/grd_s_o_7_evw_anime.c b/src/data/field/bg/acre/grd_s_o_7/grd_s_o_7_evw_anime.c new file mode 100644 index 00000000..04673510 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_7/grd_s_o_7_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_o_7_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_7_evw_anime = { + 1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_o_7_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_o_8/grd_s_o_8.c b/src/data/field/bg/acre/grd_s_o_8/grd_s_o_8.c new file mode 100644 index 00000000..f162ad60 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_8/grd_s_o_8.c @@ -0,0 +1,151 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_o_8_v[] = { +#include "assets/field/bg/grd_s_o_8_v.inc" +}; + +extern Gfx grd_s_o_8_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_8_v[0], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 5, // tri0 + 7, 4, 8, // tri1 + 4, 9, 8, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 11, // tri0 + 1, 5, 13, // tri1 + 1, 0, 5, // tri2 + 4, 2, 9 // tri3 + ), + gsSPNTriangles_5b( + 4, 0, 2, // tri0 + 4, 11, 6, // tri1 + 4, 7, 11, // tri2 + 10, 8, 14 // tri3 + ), + gsSPNTriangles_5b( + 10, 7, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_o_8_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_8_v[15], 32, 0), + gsSPNTrianglesInit_5b( + 36, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 6, // tri0 + 5, 2, 6, // tri1 + 5, 7, 2, // tri2 + 4, 8, 9 // tri3 + ), + gsSPNTriangles_5b( + 8, 10, 9, // tri0 + 10, 7, 9, // tri1 + 8, 11, 12, // tri2 + 11, 13, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 7, 12, // tri0 + 8, 14, 15, // tri1 + 14, 13, 15, // tri2 + 14, 16, 13 // tri3 + ), + gsSPNTriangles_5b( + 8, 17, 18, // tri0 + 17, 16, 18, // tri1 + 17, 19, 16, // tri2 + 8, 20, 17 // tri3 + ), + gsSPNTriangles_5b( + 8, 21, 20, // tri0 + 20, 19, 17, // tri1 + 21, 22, 20, // tri2 + 22, 23, 20 // tri3 + ), + gsSPNTriangles_5b( + 23, 19, 20, // tri0 + 21, 24, 22, // tri1 + 24, 25, 22, // tri2 + 25, 23, 22 // tri3 + ), + gsSPNTriangles_5b( + 21, 26, 24, // tri0 + 26, 25, 24, // tri1 + 26, 27, 25, // tri2 + 21, 28, 26 // tri3 + ), + gsSPNTriangles_5b( + 28, 29, 26, // tri0 + 29, 27, 26, // tri1 + 28, 30, 29, // tri2 + 30, 31, 29 // tri3 + ), + gsSPNTriangles_5b( + 31, 27, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_o_8_v[47], 11, 0), + gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 1, // tri0 + 5, 4, 1, // tri1 + 5, 6, 4, // tri2 + 0, 7, 5 // tri3 + ), + gsSPNTriangles_5b( + 0, 8, 7, // tri0 + 7, 6, 5, // tri1 + 8, 9, 7, // tri2 + 9, 10, 7 // tri3 + ), + gsSPNTriangles_5b( + 10, 6, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_o_8/grd_s_o_8_evw_anime.c b/src/data/field/bg/acre/grd_s_o_8/grd_s_o_8_evw_anime.c new file mode 100644 index 00000000..150f2b7e --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_8/grd_s_o_8_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_o_8_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_8_evw_anime = { + 1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_o_8_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_o_9/grd_s_o_9.c b/src/data/field/bg/acre/grd_s_o_9/grd_s_o_9.c new file mode 100644 index 00000000..f3cfb457 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_9/grd_s_o_9.c @@ -0,0 +1,145 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_o_9_v[] = { +#include "assets/field/bg/grd_s_o_9_v.inc" +}; + +extern Gfx grd_s_o_9_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_9_v[0], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 5, // tri0 + 7, 4, 8, // tri1 + 4, 9, 8, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 11, // tri0 + 1, 5, 13, // tri1 + 1, 0, 5, // tri2 + 4, 2, 9 // tri3 + ), + gsSPNTriangles_5b( + 4, 0, 2, // tri0 + 4, 11, 6, // tri1 + 4, 7, 11, // tri2 + 10, 8, 14 // tri3 + ), + gsSPNTriangles_5b( + 10, 7, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_o_9_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_9_v[15], 32, 0), + gsSPNTrianglesInit_5b( + 36, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 1, // tri0 + 5, 6, 1, // tri1 + 6, 7, 1, // tri2 + 7, 4, 1 // tri3 + ), + gsSPNTriangles_5b( + 5, 8, 9, // tri0 + 8, 10, 9, // tri1 + 10, 7, 9, // tri2 + 5, 11, 8 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 8, // tri0 + 12, 10, 8, // tri1 + 5, 13, 11, // tri2 + 13, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 12, // tri0 + 5, 15, 13, // tri1 + 5, 16, 15, // tri2 + 15, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 14, // tri0 + 16, 18, 15, // tri1 + 18, 19, 15, // tri2 + 19, 17, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 20, 18, // tri0 + 20, 19, 18, // tri1 + 20, 21, 19, // tri2 + 16, 22, 23 // tri3 + ), + gsSPNTriangles_5b( + 22, 24, 23, // tri0 + 24, 25, 23, // tri1 + 25, 21, 23, // tri2 + 22, 26, 27 // tri3 + ), + gsSPNTriangles_5b( + 26, 28, 27, // tri0 + 28, 25, 27, // tri1 + 22, 29, 30, // tri2 + 29, 28, 30 // tri3 + ), + gsSPNTriangles_5b( + 29, 31, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_o_9_v[47], 10, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 1, // tri0 + 0, 6, 5, // tri1 + 5, 4, 1, // tri2 + 5, 7, 4 // tri3 + ), + gsSPNTriangles_5b( + 6, 8, 5, // tri0 + 8, 9, 5, // tri1 + 9, 7, 5, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_o_9/grd_s_o_9_evw_anime.c b/src/data/field/bg/acre/grd_s_o_9/grd_s_o_9_evw_anime.c new file mode 100644 index 00000000..c09a580c --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_9/grd_s_o_9_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_o_9_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_9_evw_anime = { + 1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_o_9_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_o_i_1/grd_s_o_i_1.c b/src/data/field/bg/acre/grd_s_o_i_1/grd_s_o_i_1.c new file mode 100644 index 00000000..b400af18 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_i_1/grd_s_o_i_1.c @@ -0,0 +1,144 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_o_i_1_v[] = { +#include "assets/field/bg/grd_s_o_i_1_v.inc" +}; + +extern Gfx grd_s_o_i_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_i_1_v[0], 25, 0), + gsSPNTrianglesInit_5b( + 32, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 2, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 6, // tri0 + 1, 10, 3, // tri1 + 1, 11, 10, // tri2 + 10, 4, 3 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 4, // tri0 + 12, 13, 4, // tri1 + 13, 7, 4, // tri2 + 13, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 8, // tri0 + 11, 15, 10, // tri1 + 15, 16, 10, // tri2 + 16, 17, 10 // tri3 + ), + gsSPNTriangles_5b( + 17, 12, 10, // tri0 + 17, 13, 12, // tri1 + 17, 18, 13, // tri2 + 18, 19, 13 // tri3 + ), + gsSPNTriangles_5b( + 19, 14, 13, // tri0 + 15, 20, 16, // tri1 + 15, 21, 20, // tri2 + 20, 17, 16 // tri3 + ), + gsSPNTriangles_5b( + 20, 22, 17, // tri0 + 22, 23, 17, // tri1 + 23, 18, 17, // tri2 + 23, 19, 18 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_o_i_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_i_1_v[25], 25, 0), + gsSPNTrianglesInit_5b( + 32, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 6, 9, 8, // tri0 + 8, 10, 7, // tri1 + 8, 11, 10, // tri2 + 10, 4, 7 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 4, // tri0 + 12, 13, 4, // tri1 + 13, 3, 4, // tri2 + 13, 2, 3 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 2, // tri0 + 11, 15, 10, // tri1 + 15, 16, 10, // tri2 + 16, 17, 10 // tri3 + ), + gsSPNTriangles_5b( + 17, 12, 10, // tri0 + 17, 13, 12, // tri1 + 17, 18, 13, // tri2 + 18, 19, 13 // tri3 + ), + gsSPNTriangles_5b( + 19, 14, 13, // tri0 + 15, 20, 16, // tri1 + 15, 21, 20, // tri2 + 20, 17, 16 // tri3 + ), + gsSPNTriangles_5b( + 20, 22, 17, // tri0 + 22, 23, 17, // tri1 + 23, 18, 17, // tri2 + 23, 19, 18 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_o_i_2/grd_s_o_i_2.c b/src/data/field/bg/acre/grd_s_o_i_2/grd_s_o_i_2.c new file mode 100644 index 00000000..33380eea --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_i_2/grd_s_o_i_2.c @@ -0,0 +1,96 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_o_i_2_v[] = { +#include "assets/field/bg/grd_s_o_i_2_v.inc" +}; + +extern Gfx grd_s_o_i_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_i_2_v[0], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 2, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 6, // tri0 + 1, 10, 3, // tri1 + 1, 11, 10, // tri2 + 10, 4, 3 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 4, // tri0 + 12, 13, 4, // tri1 + 13, 7, 4, // tri2 + 13, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_o_i_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_i_2_v[15], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 6, 9, 8, // tri0 + 8, 10, 7, // tri1 + 8, 11, 10, // tri2 + 10, 4, 7 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 4, // tri0 + 12, 13, 4, // tri1 + 13, 3, 4, // tri2 + 13, 2, 3 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_o_i_2/grd_s_o_i_2_evw_anime.c b/src/data/field/bg/acre/grd_s_o_i_2/grd_s_o_i_2_evw_anime.c new file mode 100644 index 00000000..b5a6aa5a --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_i_2/grd_s_o_i_2_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_o_i_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_i_2_evw_anime = { + 1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_o_i_2_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_o_r1_1/grd_s_o_r1_1.c b/src/data/field/bg/acre/grd_s_o_r1_1/grd_s_o_r1_1.c new file mode 100644 index 00000000..5ae01f57 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_r1_1/grd_s_o_r1_1.c @@ -0,0 +1,139 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_o_r1_1_v[] = { +#include "assets/field/bg/grd_s_o_r1_1_v.inc" +}; + +extern Gfx grd_s_o_r1_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_r1_1_v[0], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 5, // tri0 + 7, 4, 8, // tri1 + 4, 9, 8, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 11, // tri0 + 1, 5, 13, // tri1 + 1, 0, 5, // tri2 + 4, 2, 9 // tri3 + ), + gsSPNTriangles_5b( + 4, 0, 2, // tri0 + 4, 11, 6, // tri1 + 4, 7, 11, // tri2 + 10, 8, 14 // tri3 + ), + gsSPNTriangles_5b( + 10, 7, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_o_r1_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_r1_1_v[15], 32, 0), + gsSPNTrianglesInit_5b( + 31, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 6, // tri0 + 0, 7, 5, // tri1 + 5, 8, 6, // tri2 + 8, 4, 6 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 10, // tri0 + 9, 11, 10, // tri1 + 11, 8, 10, // tri2 + 7, 12, 9 // tri3 + ), + gsSPNTriangles_5b( + 12, 11, 9, // tri0 + 12, 13, 11, // tri1 + 7, 14, 15, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 13, 15, // tri0 + 7, 17, 18, // tri1 + 17, 19, 18, // tri2 + 19, 16, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 16, // tri0 + 17, 21, 22, // tri1 + 21, 23, 22, // tri2 + 23, 20, 22 // tri3 + ), + gsSPNTriangles_5b( + 17, 24, 21, // tri0 + 17, 25, 24, // tri1 + 24, 23, 21, // tri2 + 24, 26, 23 // tri3 + ), + gsSPNTriangles_5b( + 25, 27, 28, // tri0 + 27, 29, 28, // tri1 + 29, 30, 28, // tri2 + 25, 31, 27 // tri3 + ), + gsSPVertex(&grd_s_o_r1_1_v[47], 14, 0), + gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 0 // tri2 + ), + gsSPNTriangles_5b( + 5, 1, 0, // tri0 + 5, 6, 1, // tri1 + 4, 7, 8, // tri2 + 7, 9, 8 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 8, // tri0 + 10, 6, 8, // tri1 + 7, 11, 12, // tri2 + 11, 10, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_o_r1_1/grd_s_o_r1_1_evw_anime.c b/src/data/field/bg/acre/grd_s_o_r1_1/grd_s_o_r1_1_evw_anime.c new file mode 100644 index 00000000..d920466a --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_r1_1/grd_s_o_r1_1_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_o_r1_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_r1_1_evw_anime = { + 1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_o_r1_1_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_o_r1_2/grd_s_o_r1_2.c b/src/data/field/bg/acre/grd_s_o_r1_2/grd_s_o_r1_2.c new file mode 100644 index 00000000..187d781d --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_r1_2/grd_s_o_r1_2.c @@ -0,0 +1,139 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_o_r1_2_v[] = { +#include "assets/field/bg/grd_s_o_r1_2_v.inc" +}; + +extern Gfx grd_s_o_r1_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_r1_2_v[0], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 5, // tri0 + 7, 4, 8, // tri1 + 4, 9, 8, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 11, // tri0 + 1, 5, 13, // tri1 + 1, 0, 5, // tri2 + 4, 2, 9 // tri3 + ), + gsSPNTriangles_5b( + 4, 0, 2, // tri0 + 4, 11, 6, // tri1 + 4, 7, 11, // tri2 + 10, 8, 14 // tri3 + ), + gsSPNTriangles_5b( + 10, 7, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_o_r1_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_r1_2_v[15], 32, 0), + gsSPNTrianglesInit_5b( + 35, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 6, // tri0 + 5, 7, 6, // tri1 + 7, 2, 6, // tri2 + 7, 8, 2 // tri3 + ), + gsSPNTriangles_5b( + 5, 9, 10, // tri0 + 9, 11, 10, // tri1 + 11, 8, 10, // tri2 + 5, 12, 9 // tri3 + ), + gsSPNTriangles_5b( + 5, 13, 12, // tri0 + 12, 14, 9, // tri1 + 14, 11, 9, // tri2 + 13, 15, 12 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 12, // tri0 + 16, 14, 12, // tri1 + 13, 17, 18, // tri2 + 17, 16, 18 // tri3 + ), + gsSPNTriangles_5b( + 17, 19, 16, // tri0 + 13, 20, 21, // tri1 + 20, 19, 21, // tri2 + 20, 22, 19 // tri3 + ), + gsSPNTriangles_5b( + 13, 23, 20, // tri0 + 23, 24, 20, // tri1 + 24, 22, 20, // tri2 + 24, 25, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 26, 24, // tri0 + 26, 27, 24, // tri1 + 27, 25, 24, // tri2 + 23, 28, 29 // tri3 + ), + gsSPNTriangles_5b( + 28, 27, 29, // tri0 + 28, 30, 27, // tri1 + 23, 31, 28, // tri2 + 31, 30, 28 // tri3 + ), + gsSPVertex(&grd_s_o_r1_2_v[47], 11, 0), + gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b( + 4, 1, 5, // tri0 + 4, 7, 1, // tri1 + 6, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 7, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_o_r1_2/grd_s_o_r1_2_evw_anime.c b/src/data/field/bg/acre/grd_s_o_r1_2/grd_s_o_r1_2_evw_anime.c new file mode 100644 index 00000000..43c29d5b --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_r1_2/grd_s_o_r1_2_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_o_r1_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_r1_2_evw_anime = { + 1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_o_r1_2_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_o_r1_3/grd_s_o_r1_3.c b/src/data/field/bg/acre/grd_s_o_r1_3/grd_s_o_r1_3.c new file mode 100644 index 00000000..6a839edc --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_r1_3/grd_s_o_r1_3.c @@ -0,0 +1,145 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_o_r1_3_v[] = { +#include "assets/field/bg/grd_s_o_r1_3_v.inc" +}; + +extern Gfx grd_s_o_r1_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_r1_3_v[0], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 5, // tri0 + 7, 4, 8, // tri1 + 4, 9, 8, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 11, // tri0 + 1, 5, 13, // tri1 + 1, 0, 5, // tri2 + 4, 2, 9 // tri3 + ), + gsSPNTriangles_5b( + 4, 0, 2, // tri0 + 4, 11, 6, // tri1 + 4, 7, 11, // tri2 + 10, 8, 14 // tri3 + ), + gsSPNTriangles_5b( + 10, 7, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_o_r1_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_r1_3_v[15], 32, 0), + gsSPNTrianglesInit_5b( + 36, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 6, // tri0 + 5, 7, 6, // tri1 + 7, 8, 6, // tri2 + 8, 4, 6 // tri3 + ), + gsSPNTriangles_5b( + 5, 9, 10, // tri0 + 9, 11, 10, // tri1 + 11, 8, 10, // tri2 + 5, 12, 9 // tri3 + ), + gsSPNTriangles_5b( + 12, 11, 9, // tri0 + 12, 13, 11, // tri1 + 5, 14, 15, // tri2 + 14, 13, 15 // tri3 + ), + gsSPNTriangles_5b( + 14, 16, 13, // tri0 + 5, 17, 14, // tri1 + 5, 18, 17, // tri2 + 17, 16, 14 // tri3 + ), + gsSPNTriangles_5b( + 17, 19, 16, // tri0 + 18, 20, 17, // tri1 + 20, 21, 17, // tri2 + 21, 19, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 22, 20, // tri0 + 22, 21, 20, // tri1 + 22, 23, 21, // tri2 + 18, 24, 22 // tri3 + ), + gsSPNTriangles_5b( + 24, 23, 22, // tri0 + 24, 25, 23, // tri1 + 18, 26, 24, // tri2 + 26, 27, 24 // tri3 + ), + gsSPNTriangles_5b( + 27, 25, 24, // tri0 + 27, 28, 25, // tri1 + 26, 29, 27, // tri2 + 29, 30, 27 // tri3 + ), + gsSPNTriangles_5b( + 30, 31, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_o_r1_3_v[47], 12, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 6, // tri0 + 0, 7, 5, // tri1 + 5, 8, 6, // tri2 + 8, 4, 6 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 10, // tri0 + 9, 11, 10, // tri1 + 11, 8, 10, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_o_r1_3/grd_s_o_r1_3_evw_anime.c b/src/data/field/bg/acre/grd_s_o_r1_3/grd_s_o_r1_3_evw_anime.c new file mode 100644 index 00000000..6723b4a4 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_r1_3/grd_s_o_r1_3_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_o_r1_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_r1_3_evw_anime = { + 1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_o_r1_3_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_o_r1_4/grd_s_o_r1_4.c b/src/data/field/bg/acre/grd_s_o_r1_4/grd_s_o_r1_4.c new file mode 100644 index 00000000..704c4d04 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_r1_4/grd_s_o_r1_4.c @@ -0,0 +1,139 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_o_r1_4_v[] = { +#include "assets/field/bg/grd_s_o_r1_4_v.inc" +}; + +extern Gfx grd_s_o_r1_4_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_r1_4_v[0], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 5, // tri0 + 7, 4, 8, // tri1 + 4, 9, 8, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 11, // tri0 + 1, 5, 13, // tri1 + 1, 0, 5, // tri2 + 4, 2, 9 // tri3 + ), + gsSPNTriangles_5b( + 4, 0, 2, // tri0 + 4, 11, 6, // tri1 + 4, 7, 11, // tri2 + 10, 8, 14 // tri3 + ), + gsSPNTriangles_5b( + 10, 7, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_o_r1_4_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_r1_4_v[15], 32, 0), + gsSPNTrianglesInit_5b( + 36, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 6, // tri0 + 5, 7, 6, // tri1 + 7, 2, 6, // tri2 + 7, 8, 2 // tri3 + ), + gsSPNTriangles_5b( + 5, 9, 10, // tri0 + 9, 11, 10, // tri1 + 11, 8, 10, // tri2 + 5, 12, 9 // tri3 + ), + gsSPNTriangles_5b( + 12, 11, 9, // tri0 + 12, 13, 11, // tri1 + 5, 14, 12, // tri2 + 14, 13, 12 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 13, // tri0 + 5, 16, 17, // tri1 + 5, 18, 16, // tri2 + 16, 15, 17 // tri3 + ), + gsSPNTriangles_5b( + 16, 19, 15, // tri0 + 18, 20, 16, // tri1 + 20, 19, 16, // tri2 + 20, 21, 19 // tri3 + ), + gsSPNTriangles_5b( + 18, 22, 20, // tri0 + 22, 23, 20, // tri1 + 23, 21, 20, // tri2 + 23, 24, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 25, 23, // tri0 + 25, 26, 23, // tri1 + 26, 24, 23, // tri2 + 22, 27, 25 // tri3 + ), + gsSPNTriangles_5b( + 27, 26, 25, // tri0 + 27, 28, 26, // tri1 + 22, 29, 30, // tri2 + 29, 28, 30 // tri3 + ), + gsSPNTriangles_5b( + 29, 31, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_o_r1_4_v[47], 9, 0), + gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 2, // tri0 + 3, 6, 7, // tri1 + 6, 8, 7, // tri2 + 8, 4, 7 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_o_r1_4/grd_s_o_r1_4_evw_anime.c b/src/data/field/bg/acre/grd_s_o_r1_4/grd_s_o_r1_4_evw_anime.c new file mode 100644 index 00000000..9b5dfbce --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_r1_4/grd_s_o_r1_4_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_o_r1_4_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_r1_4_evw_anime = { + 1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_o_r1_4_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_o_r1_5/grd_s_o_r1_5.c b/src/data/field/bg/acre/grd_s_o_r1_5/grd_s_o_r1_5.c new file mode 100644 index 00000000..d40b2124 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_r1_5/grd_s_o_r1_5.c @@ -0,0 +1,114 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_o_r1_5_v[] = { +#include "assets/field/bg/grd_s_o_r1_5_v.inc" +}; + +extern Gfx grd_s_o_r1_5_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_r1_5_v[0], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 5, // tri0 + 7, 4, 8, // tri1 + 4, 9, 8, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 11, // tri0 + 1, 5, 13, // tri1 + 1, 0, 5, // tri2 + 4, 2, 9 // tri3 + ), + gsSPNTriangles_5b( + 4, 0, 2, // tri0 + 4, 11, 6, // tri1 + 4, 7, 11, // tri2 + 10, 8, 14 // tri3 + ), + gsSPNTriangles_5b( + 10, 7, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_o_r1_5_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_r1_5_v[15], 29, 0), + gsSPNTrianglesInit_5b( + 31, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 1, // tri0 + 5, 6, 1, // tri1 + 6, 2, 1, // tri2 + 6, 7, 2 // tri3 + ), + gsSPNTriangles_5b( + 5, 8, 9, // tri0 + 8, 10, 9, // tri1 + 10, 11, 9, // tri2 + 5, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 5, 14, 12, // tri0 + 12, 15, 13, // tri1 + 15, 16, 13, // tri2 + 14, 17, 12 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 12, // tri0 + 18, 15, 12, // tri1 + 14, 19, 17, // tri2 + 19, 20, 17 // tri3 + ), + gsSPNTriangles_5b( + 20, 18, 17, // tri0 + 20, 21, 18, // tri1 + 19, 22, 20, // tri2 + 22, 23, 20 // tri3 + ), + gsSPNTriangles_5b( + 23, 21, 20, // tri0 + 19, 24, 22, // tri1 + 19, 25, 24, // tri2 + 24, 23, 22 // tri3 + ), + gsSPNTriangles_5b( + 24, 26, 23, // tri0 + 25, 27, 24, // tri1 + 27, 28, 24, // tri2 + 28, 26, 24 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_o_r1_5/grd_s_o_r1_5_evw_anime.c b/src/data/field/bg/acre/grd_s_o_r1_5/grd_s_o_r1_5_evw_anime.c new file mode 100644 index 00000000..019144fa --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_r1_5/grd_s_o_r1_5_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_o_r1_5_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_r1_5_evw_anime = { + 1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_o_r1_5_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_o_r1_b_1/grd_s_o_r1_b_1.c b/src/data/field/bg/acre/grd_s_o_r1_b_1/grd_s_o_r1_b_1.c new file mode 100644 index 00000000..ad80c99e --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_r1_b_1/grd_s_o_r1_b_1.c @@ -0,0 +1,96 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_o_r1_b_1_v[] = { +#include "assets/field/bg/grd_s_o_r1_b_1_v.inc" +}; + +extern Gfx grd_s_o_r1_b_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_r1_b_1_v[0], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 3, 4, 0 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 0, // tri0 + 2, 6, 3, // tri1 + 6, 4, 3, // tri2 + 6, 7, 4 // tri3 + ), + gsSPNTriangles_5b( + 2, 8, 6, // tri0 + 9, 10, 11, // tri1 + 11, 8, 2, // tri2 + 11, 2, 12 // tri3 + ), + gsSPNTriangles_5b( + 9, 11, 12, // tri0 + 2, 1, 13, // tri1 + 12, 2, 13, // tri2 + 9, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_o_r1_b_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_r1_b_1_v[15], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 3, 4, 0 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 0, // tri0 + 2, 6, 3, // tri1 + 6, 4, 3, // tri2 + 6, 7, 4 // tri3 + ), + gsSPNTriangles_5b( + 2, 8, 6, // tri0 + 4, 7, 9, // tri1 + 9, 10, 11, // tri2 + 9, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 4, 9, 12, // tri0 + 11, 13, 14, // tri1 + 12, 11, 14, // tri2 + 4, 12, 14 // tri3 + ), + gsSPNTriangles_5b( + 14, 5, 4, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_o_r1_b_1/grd_s_o_r1_b_1_evw_anime.c b/src/data/field/bg/acre/grd_s_o_r1_b_1/grd_s_o_r1_b_1_evw_anime.c new file mode 100644 index 00000000..30d60a21 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_r1_b_1/grd_s_o_r1_b_1_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_o_r1_b_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_r1_b_1_evw_anime = { + 1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_o_r1_b_1_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_o_r1_b_2/grd_s_o_r1_b_2.c b/src/data/field/bg/acre/grd_s_o_r1_b_2/grd_s_o_r1_b_2.c new file mode 100644 index 00000000..04366bb5 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_r1_b_2/grd_s_o_r1_b_2.c @@ -0,0 +1,95 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_o_r1_b_2_v[] = { +#include "assets/field/bg/grd_s_o_r1_b_2_v.inc" +}; + +extern Gfx grd_s_o_r1_b_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_r1_b_2_v[0], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 2, // tri0 + 6, 7, 1, // tri1 + 7, 3, 1, // tri2 + 7, 4, 3 // tri3 + ), + gsSPNTriangles_5b( + 7, 8, 4, // tri0 + 9, 10, 11, // tri1 + 9, 11, 12, // tri2 + 9, 12, 4 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 4, // tri0 + 11, 13, 14, // tri1 + 12, 11, 14, // tri2 + 4, 12, 14 // tri3 + ), + gsSPNTriangles_5b( + 5, 4, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_o_r1_b_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_o_r1_b_2_v[15], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 4, 6, // tri0 + 6, 5, 8, // tri1 + 6, 8, 9, // tri2 + 10, 3, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 10, 11, // tri0 + 11, 3, 2, // tri1 + 11, 2, 13, // tri2 + 0, 3, 10 // tri3 + ), + gsSPNTriangles_5b( + 14, 0, 10, // tri0 + 4, 14, 10, // tri1 + 4, 10, 5, // tri2 + 8, 5, 10 // tri3 + ), + gsSPNTriangles_5b( + 12, 8, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_o_r1_b_2/grd_s_o_r1_b_2_evw_anime.c b/src/data/field/bg/acre/grd_s_o_r1_b_2/grd_s_o_r1_b_2_evw_anime.c new file mode 100644 index 00000000..f59e95ce --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_r1_b_2/grd_s_o_r1_b_2_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_o_r1_b_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_r1_b_2_evw_anime = { + 1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_o_r1_b_2_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_o_r1_b_3/grd_s_o_r1_b_3.c b/src/data/field/bg/acre/grd_s_o_r1_b_3/grd_s_o_r1_b_3.c new file mode 100644 index 00000000..c2553ca6 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_r1_b_3/grd_s_o_r1_b_3.c @@ -0,0 +1,95 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_o_r1_b_3_v[] = { +#include "assets/field/bg/grd_s_o_r1_b_3_v.inc" +}; + +extern Gfx grd_s_o_r1_b_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_r1_b_3_v[0], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 1, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 8, 9, 6 // tri3 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 0, 10, 3, // tri1 + 0, 11, 10, // tri2 + 10, 4, 3 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 4, // tri0 + 12, 13, 4, // tri1 + 13, 7, 4, // tri2 + 13, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_o_r1_b_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_o_r1_b_3_v[15], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 2, 1, 4 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 4, // tri0 + 4, 6, 7, // tri1 + 4, 5, 6, // tri2 + 7, 6, 8 // tri3 + ), + gsSPNTriangles_5b( + 6, 9, 8, // tri0 + 10, 8, 11, // tri1 + 10, 7, 8, // tri2 + 12, 4, 10 // tri3 + ), + gsSPNTriangles_5b( + 4, 7, 10, // tri0 + 13, 4, 12, // tri1 + 13, 2, 4, // tri2 + 14, 0, 13 // tri3 + ), + gsSPNTriangles_5b( + 0, 2, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_o_r1_b_3/grd_s_o_r1_b_3_evw_anime.c b/src/data/field/bg/acre/grd_s_o_r1_b_3/grd_s_o_r1_b_3_evw_anime.c new file mode 100644 index 00000000..e1a77cbc --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_r1_b_3/grd_s_o_r1_b_3_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_o_r1_b_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_r1_b_3_evw_anime = { + 1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_o_r1_b_3_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_o_ta_1/grd_s_o_ta_1.c b/src/data/field/bg/acre/grd_s_o_ta_1/grd_s_o_ta_1.c new file mode 100644 index 00000000..7e6a755b --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_ta_1/grd_s_o_ta_1.c @@ -0,0 +1,145 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_o_ta_1_v[] = { +#include "assets/field/bg/grd_s_o_ta_1_v.inc" +}; + +extern Gfx grd_s_o_ta_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_ta_1_v[0], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 5, // tri0 + 7, 4, 8, // tri1 + 4, 9, 8, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 11, // tri0 + 1, 5, 13, // tri1 + 1, 0, 5, // tri2 + 4, 2, 9 // tri3 + ), + gsSPNTriangles_5b( + 4, 0, 2, // tri0 + 4, 11, 6, // tri1 + 4, 7, 11, // tri2 + 10, 8, 14 // tri3 + ), + gsSPNTriangles_5b( + 10, 7, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_o_ta_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_ta_1_v[15], 32, 0), + gsSPNTrianglesInit_5b( + 36, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 1, 6, 3, // tri1 + 6, 7, 3, // tri2 + 7, 5, 3 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 8, 11, 9, // tri1 + 9, 12, 10, // tri2 + 9, 13, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 14, 15, // tri0 + 14, 16, 15, // tri1 + 16, 13, 15, // tri2 + 0, 2, 17 // tri3 + ), + gsSPNTriangles_5b( + 2, 4, 17, // tri0 + 4, 18, 17, // tri1 + 1, 19, 20, // tri2 + 19, 7, 20 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 7, // tri0 + 1, 22, 19, // tri1 + 22, 23, 19, // tri2 + 23, 21, 19 // tri3 + ), + gsSPNTriangles_5b( + 1, 24, 22, // tri0 + 24, 23, 22, // tri1 + 24, 25, 23, // tri2 + 1, 26, 24 // tri3 + ), + gsSPNTriangles_5b( + 26, 27, 24, // tri0 + 27, 25, 24, // tri1 + 27, 28, 25, // tri2 + 26, 29, 27 // tri3 + ), + gsSPNTriangles_5b( + 29, 30, 27, // tri0 + 30, 28, 27, // tri1 + 26, 8, 29, // tri2 + 8, 31, 29 // tri3 + ), + gsSPNTriangles_5b( + 31, 30, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_o_ta_1_v[47], 13, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 4, 5, 0 // tri2 + ), + gsSPNTriangles_5b( + 5, 1, 0, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 7, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 6, 11, 7, // tri0 + 11, 12, 7, // tri1 + 12, 10, 7, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_o_ta_1/grd_s_o_ta_1_evw_anime.c b/src/data/field/bg/acre/grd_s_o_ta_1/grd_s_o_ta_1_evw_anime.c new file mode 100644 index 00000000..192d42d1 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_ta_1/grd_s_o_ta_1_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_o_ta_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_ta_1_evw_anime = { + 1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_o_ta_1_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_o_ta_2/grd_s_o_ta_2.c b/src/data/field/bg/acre/grd_s_o_ta_2/grd_s_o_ta_2.c new file mode 100644 index 00000000..107617a7 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_ta_2/grd_s_o_ta_2.c @@ -0,0 +1,126 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_o_ta_2_v[] = { +#include "assets/field/bg/grd_s_o_ta_2_v.inc" +}; + +extern Gfx grd_s_o_ta_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_ta_2_v[0], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 5, // tri0 + 7, 4, 8, // tri1 + 4, 9, 8, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 11, // tri0 + 1, 5, 13, // tri1 + 1, 0, 5, // tri2 + 4, 2, 9 // tri3 + ), + gsSPNTriangles_5b( + 4, 0, 2, // tri0 + 4, 11, 6, // tri1 + 4, 7, 11, // tri2 + 10, 8, 14 // tri3 + ), + gsSPNTriangles_5b( + 10, 7, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_o_ta_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_ta_2_v[15], 31, 0), + gsSPNTrianglesInit_5b( + 37, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 2, 6, // tri0 + 5, 0, 2, // tri1 + 2, 7, 6, // tri2 + 2, 4, 7 // tri3 + ), + gsSPNTriangles_5b( + 5, 6, 8, // tri0 + 6, 9, 8, // tri1 + 6, 7, 9, // tri2 + 5, 8, 10 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 9, 11, 10, // tri1 + 12, 5, 13, // tri2 + 5, 10, 13 // tri3 + ), + gsSPNTriangles_5b( + 10, 14, 13, // tri0 + 10, 11, 14, // tri1 + 12, 13, 15, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 14, 16, 15, // tri0 + 17, 18, 19, // tri1 + 17, 12, 18, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 18, 16, 20, // tri0 + 17, 21, 22, // tri1 + 21, 23, 22, // tri2 + 21, 20, 23 // tri3 + ), + gsSPNTriangles_5b( + 17, 22, 24, // tri0 + 22, 23, 24, // tri1 + 23, 25, 24, // tri2 + 26, 17, 27 // tri3 + ), + gsSPNTriangles_5b( + 17, 24, 27, // tri0 + 24, 28, 27, // tri1 + 24, 25, 28, // tri2 + 29, 27, 28 // tri3 + ), + gsSPNTriangles_5b( + 29, 30, 27, // tri0 + 30, 26, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_o_ta_2/grd_s_o_ta_2_evw_anime.c b/src/data/field/bg/acre/grd_s_o_ta_2/grd_s_o_ta_2_evw_anime.c new file mode 100644 index 00000000..66169282 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_ta_2/grd_s_o_ta_2_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_o_ta_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_ta_2_evw_anime = { + 1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_o_ta_2_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_o_ta_3/grd_s_o_ta_3.c b/src/data/field/bg/acre/grd_s_o_ta_3/grd_s_o_ta_3.c new file mode 100644 index 00000000..527cfcfc --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_ta_3/grd_s_o_ta_3.c @@ -0,0 +1,126 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_o_ta_3_v[] = { +#include "assets/field/bg/grd_s_o_ta_3_v.inc" +}; + +extern Gfx grd_s_o_ta_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_ta_3_v[0], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 0, 2, 9, // tri0 + 1, 6, 2, // tri1 + 3, 10, 11, // tri2 + 1, 0, 7 // tri3 + ), + gsSPNTriangles_5b( + 0, 12, 7, // tri0 + 6, 13, 2, // tri1 + 6, 5, 13, // tri2 + 3, 14, 10 // tri3 + ), + gsSPNTriangles_5b( + 14, 6, 10, // tri0 + 6, 14, 5, // tri1 + 6, 1, 7, // tri2 + 6, 8, 10 // tri3 + ), + gsSPNTriangles_5b( + 14, 3, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_o_ta_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_ta_3_v[15], 32, 0), + gsSPNTrianglesInit_5b( + 37, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 3, // tri0 + 0, 6, 1, // tri1 + 6, 4, 1, // tri2 + 6, 7, 4 // tri3 + ), + gsSPNTriangles_5b( + 8, 3, 5, // tri0 + 8, 9, 3, // tri1 + 9, 2, 3, // tri2 + 10, 11, 8 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 8, // tri0 + 11, 2, 12, // tri1 + 11, 13, 2, // tri2 + 14, 15, 10 // tri3 + ), + gsSPNTriangles_5b( + 14, 16, 15, // tri0 + 16, 13, 15, // tri1 + 17, 18, 14, // tri2 + 18, 19, 14 // tri3 + ), + gsSPNTriangles_5b( + 18, 13, 19, // tri0 + 20, 21, 17, // tri1 + 21, 18, 17, // tri2 + 21, 13, 18 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 13, // tri0 + 23, 21, 20, // tri1 + 24, 22, 21, // tri2 + 23, 24, 21 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 23, // tri0 + 26, 22, 24, // tri1 + 26, 24, 23, // tri2 + 27, 26, 25 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 26, // tri0 + 28, 29, 26, // tri1 + 29, 22, 26, // tri2 + 30, 31, 27 // tri3 + ), + gsSPNTriangles_5b( + 31, 28, 27, // tri0 + 31, 29, 28, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_o_ta_3/grd_s_o_ta_3_evw_anime.c b/src/data/field/bg/acre/grd_s_o_ta_3/grd_s_o_ta_3_evw_anime.c new file mode 100644 index 00000000..cf5528a6 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_ta_3/grd_s_o_ta_3_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_o_ta_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_ta_3_evw_anime = { + 1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_o_ta_3_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_o_wf_1/grd_s_o_wf_1.c b/src/data/field/bg/acre/grd_s_o_wf_1/grd_s_o_wf_1.c new file mode 100644 index 00000000..c8b99341 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_wf_1/grd_s_o_wf_1.c @@ -0,0 +1,139 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_o_wf_1_v[] = { +#include "assets/field/bg/grd_s_o_wf_1_v.inc" +}; + +extern Gfx grd_s_o_wf_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_wf_1_v[0], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 5, // tri0 + 7, 4, 8, // tri1 + 4, 9, 8, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 11, // tri0 + 1, 5, 13, // tri1 + 1, 0, 5, // tri2 + 4, 2, 9 // tri3 + ), + gsSPNTriangles_5b( + 4, 0, 2, // tri0 + 4, 11, 6, // tri1 + 4, 7, 11, // tri2 + 10, 8, 14 // tri3 + ), + gsSPNTriangles_5b( + 10, 7, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_o_wf_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_wf_1_v[15], 32, 0), + gsSPNTrianglesInit_5b( + 32, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 1, // tri0 + 6, 1, 5, // tri1 + 6, 7, 1, // tri2 + 7, 2, 1 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 9, 11, 10, // tri1 + 11, 12, 10, // tri2 + 4, 3, 13 // tri3 + ), + gsSPNTriangles_5b( + 3, 14, 13, // tri0 + 3, 0, 14, // tri1 + 15, 16, 17, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 17, // tri0 + 15, 17, 20, // tri1 + 17, 19, 20, // tri2 + 19, 21, 20 // tri3 + ), + gsSPNTriangles_5b( + 0, 20, 22, // tri0 + 0, 15, 20, // tri1 + 20, 21, 22, // tri2 + 21, 23, 22 // tri3 + ), + gsSPNTriangles_5b( + 13, 22, 23, // tri0 + 13, 14, 22, // tri1 + 14, 0, 22, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b( + 25, 27, 26, // tri0 + 27, 28, 26, // tri1 + 15, 24, 29, // tri2 + 24, 30, 29 // tri3 + ), + gsSPNTriangles_5b( + 30, 31, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_o_wf_1_v[47], 16, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 4, // tri0 + 7, 8, 9, // tri1 + 7, 10, 8, // tri2 + 8, 11, 9 // tri3 + ), + gsSPNTriangles_5b( + 8, 12, 11, // tri0 + 13, 14, 11, // tri1 + 13, 15, 14, // tri2 + 15, 7, 14 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_o_wf_1/grd_s_o_wf_1_evw_anime.c b/src/data/field/bg/acre/grd_s_o_wf_1/grd_s_o_wf_1_evw_anime.c new file mode 100644 index 00000000..1e8a60a9 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_wf_1/grd_s_o_wf_1_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_o_wf_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_wf_1_evw_anime = { + 1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_o_wf_1_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_o_wf_2/grd_s_o_wf_2.c b/src/data/field/bg/acre/grd_s_o_wf_2/grd_s_o_wf_2.c new file mode 100644 index 00000000..1d705004 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_wf_2/grd_s_o_wf_2.c @@ -0,0 +1,144 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_o_wf_2_v[] = { +#include "assets/field/bg/grd_s_o_wf_2_v.inc" +}; + +extern Gfx grd_s_o_wf_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_wf_2_v[0], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 5, // tri0 + 7, 4, 8, // tri1 + 4, 9, 8, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 11, // tri0 + 1, 5, 13, // tri1 + 1, 0, 5, // tri2 + 4, 2, 9 // tri3 + ), + gsSPNTriangles_5b( + 4, 0, 2, // tri0 + 4, 11, 6, // tri1 + 4, 7, 11, // tri2 + 10, 8, 14 // tri3 + ), + gsSPNTriangles_5b( + 10, 7, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_o_wf_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_o_wf_2_v[15], 32, 0), + gsSPNTrianglesInit_5b( + 31, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 2, 1, // tri0 + 5, 6, 2, // tri1 + 4, 7, 1, // tri2 + 7, 5, 1 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 5, // tri0 + 9, 10, 5, // tri1 + 7, 8, 5, // tri2 + 11, 12, 8 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 7, 11, 8, // tri1 + 14, 15, 11, // tri2 + 15, 16, 11 // tri3 + ), + gsSPNTriangles_5b( + 7, 14, 11, // tri0 + 7, 17, 14, // tri1 + 18, 19, 14, // tri2 + 19, 20, 14 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 14, // tri0 + 21, 22, 18, // tri1 + 22, 23, 18, // tri2 + 17, 21, 18 // tri3 + ), + gsSPNTriangles_5b( + 24, 25, 21, // tri0 + 24, 26, 25, // tri1 + 17, 24, 21, // tri2 + 27, 26, 24 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 26, // tri0 + 17, 27, 24, // tri1 + 29, 30, 27, // tri2 + 29, 31, 30 // tri3 + ), + gsSPVertex(&grd_s_o_wf_2_v[47], 19, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 3, // tri0 + 1, 4, 3, // tri1 + 7, 8, 4, // tri2 + 7, 9, 8 // tri3 + ), + gsSPNTriangles_5b( + 1, 7, 4, // tri0 + 10, 11, 7, // tri1 + 10, 12, 11, // tri2 + 1, 10, 7 // tri3 + ), + gsSPNTriangles_5b( + 13, 12, 10, // tri0 + 13, 14, 12, // tri1 + 1, 13, 10, // tri2 + 1, 15, 13 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 13, // tri0 + 17, 18, 13, // tri1 + 15, 16, 13, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_o_wf_2/grd_s_o_wf_2_evw_anime.c b/src/data/field/bg/acre/grd_s_o_wf_2/grd_s_o_wf_2_evw_anime.c new file mode 100644 index 00000000..046649d8 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_wf_2/grd_s_o_wf_2_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_o_wf_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_wf_2_evw_anime = { + 1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_o_wf_2_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_o_wf_3/grd_s_o_wf_3.c b/src/data/field/bg/acre/grd_s_o_wf_3/grd_s_o_wf_3.c new file mode 100644 index 00000000..0c96a9fe --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_wf_3/grd_s_o_wf_3.c @@ -0,0 +1,138 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_o_wf_3_v[] = { +#include "assets/field/bg/grd_s_o_wf_3_v.inc" +}; + +extern Gfx grd_s_o_wf_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_wf_3_v[0], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 1, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 8, 9, // tri2 + 10, 7, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 12, // tri0 + 0, 13, 5, // tri1 + 1, 0, 5, // tri2 + 4, 9, 2 // tri3 + ), + gsSPNTriangles_5b( + 1, 4, 2, // tri0 + 4, 6, 11, // tri1 + 7, 4, 11, // tri2 + 10, 14, 8 // tri3 + ), + gsSPNTriangles_5b( + 7, 10, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_o_wf_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_o_wf_3_v[15], 32, 0), + gsSPNTrianglesInit_5b( + 30, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 0, 2 // tri2 + ), + gsSPNTriangles_5b( + 2, 3, 5, // tri0 + 3, 6, 5, // tri1 + 4, 2, 5, // tri2 + 5, 7, 8 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 10, 5, 8, // tri1 + 10, 4, 5, // tri2 + 8, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 11, // tri0 + 10, 8, 12, // tri1 + 13, 14, 15, // tri2 + 13, 16, 14 // tri3 + ), + gsSPNTriangles_5b( + 17, 13, 15, // tri0 + 15, 14, 18, // tri1 + 14, 19, 18, // tri2 + 17, 15, 18 // tri3 + ), + gsSPNTriangles_5b( + 18, 20, 21, // tri0 + 18, 22, 20, // tri1 + 23, 18, 21, // tri2 + 23, 17, 18 // tri3 + ), + gsSPNTriangles_5b( + 21, 24, 25, // tri0 + 21, 26, 24, // tri1 + 23, 21, 25, // tri2 + 25, 27, 28 // tri3 + ), + gsSPNTriangles_5b( + 25, 29, 27, // tri0 + 30, 23, 28, // tri1 + 23, 25, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_o_wf_3_v[46], 16, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 9, 5, 7, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 7, 12, 10, // tri0 + 13, 9, 11, // tri1 + 9, 7, 11, // tri2 + 11, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 11, 10, 14, // tri0 + 13, 11, 15, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_o_wf_3/grd_s_o_wf_3_evw_anime.c b/src/data/field/bg/acre/grd_s_o_wf_3/grd_s_o_wf_3_evw_anime.c new file mode 100644 index 00000000..0e72b118 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_wf_3/grd_s_o_wf_3_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_o_wf_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_wf_3_evw_anime = { + 1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_o_wf_3_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_r1_1/grd_s_r1_1.c b/src/data/field/bg/acre/grd_s_r1_1/grd_s_r1_1.c new file mode 100644 index 00000000..b9a6613f --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r1_1/grd_s_r1_1.c @@ -0,0 +1,224 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r1_1_v[] = { +#include "assets/field/bg/grd_s_r1_1_v.inc" +}; + +extern Gfx grd_s_r1_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r1_1_v[175], 13, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 7, 10, 9, // tri1 + 10, 11, 9, // tri2 + 11, 12, 9 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r1_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r1_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 8, 9, 6, // tri2 + 9, 4, 6 // tri3 + ), + gsSPNTriangles_5b(10, 11, 12, // tri0 + 11, 13, 12, // tri1 + 1, 14, 15, // tri2 + 1, 15, 2 // tri3 + ), + gsSPNTriangles_5b(14, 16, 15, // tri0 + 17, 18, 19, // tri1 + 18, 20, 19, // tri2 + 12, 21, 10 // tri3 + ), + gsSPNTriangles_5b(21, 22, 10, // tri0 + 21, 23, 22, // tri1 + 5, 24, 7, // tri2 + 24, 25, 7 // tri3 + ), + gsSPNTriangles_5b(18, 17, 26, // tri0 + 18, 3, 20, // tri1 + 3, 0, 20, // tri2 + 14, 27, 28 // tri3 + ), + gsSPNTriangles_5b(27, 29, 28, // tri0 + 27, 30, 29, // tri1 + 30, 31, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r1_1_v[32], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 10, 12, 11, // tri1 + 13, 14, 15, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 8, 19, 20, // tri1 + 19, 13, 21, // tri2 + 19, 21, 20 // tri3 + ), + gsSPNTriangles_5b(21, 22, 20, // tri0 + 8, 20, 23, // tri1 + 24, 25, 26, // tri2 + 25, 27, 26 // tri3 + ), + gsSPNTriangles_5b(24, 23, 25, // tri0 + 25, 28, 27, // tri1 + 15, 16, 28, // tri2 + 29, 30, 31 // tri3 + ), + gsSPVertex(&grd_s_r1_1_v[64], 9, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 4, 8, 7, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r1_1_v[73], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 8, 9, 10, // tri1 + 9, 5, 10, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 10, 14, 17, // tri1 + 18, 7, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(23, 11, 24, // tri0 + 23, 24, 21, // tri1 + 15, 20, 22, // tri2 + 25, 26, 27 // tri3 + ), + gsSPNTriangles_5b(0, 28, 29, // tri0 + 26, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r1_1_v[105], 22, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b(7, 8, 6, // tri0 + 8, 9, 6, // tri1 + 9, 10, 11, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 17, 14, 18, // tri1 + 19, 17, 18, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b(20, 13, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r1_1_v[127], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 0, 9, // tri1 + 0, 10, 9, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(12, 1, 13, // tri0 + 14, 15, 16, // tri1 + 15, 17, 16, // tri2 + 18, 11, 19 // tri3 + ), + gsSPNTriangles_5b(11, 13, 19, // tri0 + 20, 18, 21, // tri1 + 18, 19, 21, // tri2 + 22, 14, 16 // tri3 + ), + gsSPNTriangles_5b(22, 23, 14, // tri0 + 22, 24, 23, // tri1 + 9, 25, 8, // tri2 + 25, 26, 8 // tri3 + ), + gsSPNTriangles_5b(25, 27, 26, // tri0 + 28, 7, 29, // tri1 + 7, 30, 29, // tri2 + 30, 31, 29 // tri3 + ), + gsSPVertex(&grd_s_r1_1_v[159], 16, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 11, 13, 12, // tri2 + 11, 14, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r1_1/grd_s_r1_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r1_1/grd_s_r1_1_evw_anime.c new file mode 100644 index 00000000..9cdc68dc --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r1_1/grd_s_r1_1_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r1_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r1_1_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_r1_1_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_r1_2/grd_s_r1_2.c b/src/data/field/bg/acre/grd_s_r1_2/grd_s_r1_2.c new file mode 100644 index 00000000..4bf17add --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r1_2/grd_s_r1_2.c @@ -0,0 +1,253 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r1_2_v[] = { +#include "assets/field/bg/grd_s_r1_2_v.inc" +}; + +extern Gfx grd_s_r1_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r1_2_v[187], 15, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 4, 0 // tri2 + ), + gsSPNTriangles_5b(4, 3, 5, // tri0 + 6, 4, 5, // tri1 + 6, 5, 7, // tri2 + 8, 6, 7 // tri3 + ), + gsSPNTriangles_5b(8, 7, 9, // tri0 + 10, 8, 9, // tri1 + 10, 9, 11, // tri2 + 12, 10, 11 // tri3 + ), + gsSPNTriangles_5b(12, 11, 13, // tri0 + 14, 12, 13, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r1_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r1_2_v[174], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r1_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(0, 5, 4, // tri0 + 3, 6, 1, // tri1 + 6, 7, 1, // tri2 + 1, 8, 2 // tri3 + ), + gsSPNTriangles_5b(8, 9, 2, // tri0 + 10, 11, 12, // tri1 + 13, 14, 15, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(14, 17, 16, // tri0 + 8, 11, 9, // tri1 + 17, 18, 16, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(19, 22, 20, // tri0 + 22, 23, 20, // tri1 + 23, 24, 20, // tri2 + 21, 18, 19 // tri3 + ), + gsSPNTriangles_5b(22, 25, 23, // tri0 + 13, 26, 14, // tri1 + 26, 27, 14, // tri2 + 26, 28, 27 // tri3 + ), + gsSPNTriangles_5b(29, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r1_2_v[32], 28, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b(1, 4, 3, // tri0 + 2, 6, 7, // tri1 + 6, 8, 7, // tri2 + 8, 9, 7 // tri3 + ), + gsSPNTriangles_5b(2, 10, 6, // tri0 + 8, 11, 9, // tri1 + 12, 13, 14, // tri2 + 12, 15, 13 // tri3 + ), + gsSPNTriangles_5b(10, 16, 17, // tri0 + 18, 19, 20, // tri1 + 21, 22, 23, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(27, 26, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r1_2_v[60], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 7, 9, // tri1 + 10, 11, 12, // tri2 + 13, 14, 11 // tri3 + ), + gsSPNTriangles_5b(15, 12, 16, // tri0 + 17, 16, 6, // tri1 + 18, 19, 20, // tri2 + 18, 21, 22 // tri3 + ), + gsSPNTriangles_5b(23, 22, 21, // tri0 + 24, 23, 21, // tri1 + 25, 26, 24, // tri2 + 27, 28, 25 // tri3 + ), + gsSPNTriangles_5b(29, 30, 27, // tri0 + 29, 31, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r1_2_v[92], 25, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 11, 8, 12, // tri1 + 13, 14, 15, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 22, 5, 23, // tri1 + 22, 23, 20, // tri2 + 9, 19, 21 // tri3 + ), + gsSPNTriangles_5b(16, 24, 17, // tri0 + 14, 16, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r1_2_v[117], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 8, 2, 6, // tri2 + 7, 9, 5 // tri3 + ), + gsSPNTriangles_5b(2, 8, 0, // tri0 + 10, 4, 3, // tri1 + 10, 3, 11, // tri2 + 12, 10, 11 // tri3 + ), + gsSPNTriangles_5b(13, 12, 11, // tri0 + 13, 11, 14, // tri1 + 15, 13, 14, // tri2 + 16, 15, 14 // tri3 + ), + gsSPNTriangles_5b(16, 14, 17, // tri0 + 18, 16, 17, // tri1 + 19, 18, 17, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(23, 24, 25, // tri0 + 26, 23, 25, // tri1 + 26, 25, 27, // tri2 + 28, 26, 27 // tri3 + ), + gsSPNTriangles_5b(28, 27, 29, // tri0 + 30, 28, 29, // tri1 + 30, 29, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r1_2_v[149], 12, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b(5, 3, 4, // tri0 + 5, 4, 6, // tri1 + 7, 5, 6, // tri2 + 7, 6, 8 // tri3 + ), + gsSPNTriangles_5b(9, 7, 8, // tri0 + 9, 8, 10, // tri1 + 11, 9, 10, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r1_2_v[161], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r1_2/grd_s_r1_2_evw_anime.c b/src/data/field/bg/acre/grd_s_r1_2/grd_s_r1_2_evw_anime.c new file mode 100644 index 00000000..e61d3983 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r1_2/grd_s_r1_2_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r1_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r1_2_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_r1_2_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_r1_3/grd_s_r1_3.c b/src/data/field/bg/acre/grd_s_r1_3/grd_s_r1_3.c new file mode 100644 index 00000000..5b2a2050 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r1_3/grd_s_r1_3.c @@ -0,0 +1,270 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r1_3_v[] = { +#include "assets/field/bg/grd_s_r1_3_v.inc" +}; + +extern Gfx grd_s_r1_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r1_3_v[195], 20, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b(9, 7, 10, // tri0 + 10, 12, 11, // tri1 + 12, 13, 11, // tri2 + 12, 5, 13 // tri3 + ), + gsSPNTriangles_5b(5, 4, 13, // tri0 + 0, 14, 1, // tri1 + 0, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 17, 18, 16, // tri1 + 17, 19, 18, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r1_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r1_3_v[184], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r1_3_v[0], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 0, 4 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 8, 9, 6, // tri2 + 9, 10, 6 // tri3 + ), + gsSPNTriangles_5b(10, 7, 6, // tri0 + 11, 12, 13, // tri1 + 12, 14, 13, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b(15, 18, 16, // tri0 + 19, 20, 21, // tri1 + 22, 23, 20, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(25, 23, 26, // tri0 + 11, 27, 28, // tri1 + 27, 17, 29, // tri2 + 21, 30, 19 // tri3 + ), + gsSPNTriangles_5b(7, 10, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r1_3_v[32], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 11, 9, 8, // tri2 + 9, 12, 13 // tri3 + ), + gsSPNTriangles_5b(9, 11, 14, // tri0 + 9, 14, 15, // tri1 + 15, 12, 9, // tri2 + 12, 15, 16 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 20, 21, 17, // tri1 + 18, 17, 21, // tri2 + 22, 18, 21 // tri3 + ), + gsSPNTriangles_5b(22, 23, 18, // tri0 + 24, 25, 23, // tri1 + 19, 26, 27, // tri2 + 26, 28, 27 // tri3 + ), + gsSPNTriangles_5b(29, 28, 26, // tri0 + 24, 30, 25, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r1_3_v[63], 20, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 0, 3, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 9, 8, 11, // tri2 + 8, 12, 11 // tri3 + ), + gsSPNTriangles_5b(8, 13, 12, // tri0 + 13, 14, 12, // tri1 + 14, 15, 16, // tri2 + 14, 13, 15 // tri3 + ), + gsSPNTriangles_5b(17, 8, 18, // tri0 + 16, 15, 19, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r1_3_v[83], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 9, 7, 10, // tri1 + 9, 5, 7, // tri2 + 5, 11, 6 // tri3 + ), + gsSPNTriangles_5b(11, 12, 6, // tri0 + 12, 13, 6, // tri1 + 12, 14, 13, // tri2 + 12, 15, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 14, // tri0 + 15, 17, 16, // tri1 + 17, 18, 16, // tri2 + 18, 2, 16 // tri3 + ), + gsSPNTriangles_5b(18, 0, 2, // tri0 + 0, 19, 1, // tri1 + 19, 3, 1, // tri2 + 3, 20, 4 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 21, 24, 22, // tri1 + 25, 26, 27, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b(29, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r1_3_v[115], 18, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 5, 6, 7, // tri1 + 6, 8, 7, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b(9, 12, 10, // tri0 + 9, 13, 12, // tri1 + 13, 14, 12, // tri2 + 14, 15, 12 // tri3 + ), + gsSPNTriangles_5b(14, 16, 15, // tri0 + 16, 17, 15, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r1_3_v[133], 32, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 7, 9, 10, // tri1 + 9, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(14, 16, 17, // tri0 + 16, 18, 19, // tri1 + 18, 20, 21, // tri2 + 20, 22, 23 // tri3 + ), + gsSPNTriangles_5b(22, 24, 25, // tri0 + 26, 27, 28, // tri1 + 27, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r1_3_v[164], 9, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r1_3_v[173], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 8, 3, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r1_3/grd_s_r1_3_evw_anime.c b/src/data/field/bg/acre/grd_s_r1_3/grd_s_r1_3_evw_anime.c new file mode 100644 index 00000000..6f2dc9de --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r1_3/grd_s_r1_3_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r1_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r1_3_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_r1_3_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_r1_4/grd_s_r1_4.c b/src/data/field/bg/acre/grd_s_r1_4/grd_s_r1_4.c new file mode 100644 index 00000000..284d4e94 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r1_4/grd_s_r1_4.c @@ -0,0 +1,224 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r1_4_v[] = { +#include "assets/field/bg/grd_s_r1_4_v.inc" +}; + +extern Gfx grd_s_r1_4_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r1_4_v[158], 16, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(8, 9, 6, // tri0 + 8, 10, 9, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(10, 13, 12, // tri0 + 13, 14, 12, // tri1 + 14, 15, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r1_4_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r1_4_v[0], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(13, 15, 14, // tri0 + 16, 17, 18, // tri1 + 17, 19, 18, // tri2 + 4, 14, 2 // tri3 + ), + gsSPNTriangles_5b(14, 20, 2, // tri0 + 17, 21, 19, // tri1 + 22, 18, 23, // tri2 + 18, 19, 23 // tri3 + ), + gsSPNTriangles_5b(24, 0, 2, // tri0 + 24, 25, 0, // tri1 + 25, 26, 0, // tri2 + 25, 23, 26 // tri3 + ), + gsSPNTriangles_5b(23, 19, 26, // tri0 + 23, 27, 22, // tri1 + 14, 15, 20, // tri2 + 15, 28, 20 // tri3 + ), + gsSPNTriangles_5b(15, 29, 28, // tri0 + 29, 30, 28, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r1_4_v[31], 28, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b(0, 2, 6, // tri0 + 3, 5, 2, // tri1 + 0, 7, 1, // tri2 + 7, 8, 1 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 16, 17, 18, // tri1 + 16, 19, 17, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(20, 23, 21, // tri0 + 23, 24, 21, // tri1 + 21, 25, 22, // tri2 + 24, 26, 21 // tri3 + ), + gsSPNTriangles_5b(25, 27, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r1_4_v[59], 32, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 3, 5 // tri2 + ), + gsSPNTriangles_5b(4, 2, 3, // tri0 + 0, 6, 1, // tri1 + 7, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b(10, 11, 9, // tri0 + 10, 12, 11, // tri1 + 7, 13, 8, // tri2 + 5, 14, 4 // tri3 + ), + gsSPNTriangles_5b(12, 15, 11, // tri0 + 13, 16, 8, // tri1 + 17, 18, 19, // tri2 + 17, 20, 18 // tri3 + ), + gsSPNTriangles_5b(20, 21, 18, // tri0 + 22, 23, 24, // tri1 + 22, 6, 23, // tri2 + 6, 25, 23 // tri3 + ), + gsSPNTriangles_5b(20, 22, 21, // tri0 + 22, 24, 21, // tri1 + 6, 0, 25, // tri2 + 5, 26, 14 // tri3 + ), + gsSPNTriangles_5b(5, 27, 26, // tri0 + 27, 28, 26, // tri1 + 27, 29, 28, // tri2 + 29, 30, 28 // tri3 + ), + gsSPVertex(&grd_s_r1_4_v[90], 15, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 9, 12, 10, // tri1 + 12, 13, 10, // tri2 + 12, 14, 13 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r1_4_v[105], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 8, 9, 4, // tri1 + 8, 10, 9, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 14, 17, 15, // tri1 + 12, 16, 13, // tri2 + 18, 6, 19 // tri3 + ), + gsSPNTriangles_5b(8, 20, 21, // tri0 + 20, 11, 22, // tri1 + 17, 23, 24, // tri2 + 25, 26, 27 // tri3 + ), + gsSPNTriangles_5b(28, 25, 29, // tri0 + 28, 29, 30, // tri1 + 28, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r1_4_v[137], 21, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 9, 11, 12, // tri1 + 13, 14, 15, // tri2 + 11, 13, 16 // tri3 + ), + gsSPNTriangles_5b(14, 17, 18, // tri0 + 17, 19, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r1_4/grd_s_r1_4_evw_anime.c b/src/data/field/bg/acre/grd_s_r1_4/grd_s_r1_4_evw_anime.c new file mode 100644 index 00000000..7f275183 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r1_4/grd_s_r1_4_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r1_4_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r1_4_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_r1_4_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_r1_b_1/grd_s_r1_b_1.c b/src/data/field/bg/acre/grd_s_r1_b_1/grd_s_r1_b_1.c new file mode 100644 index 00000000..bbb406fc --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r1_b_1/grd_s_r1_b_1.c @@ -0,0 +1,278 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_1_pal_dummy[]; +extern u8 bridge_1_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r1_b_1_v[] = { +#include "assets/field/bg/grd_s_r1_b_1_v.inc" +}; + +extern Gfx grd_s_r1_b_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r1_b_1_v[199], 15, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(6, 7, 4, // tri0 + 6, 0, 7, // tri1 + 0, 2, 7, // tri2 + 1, 8, 3 // tri3 + ), + gsSPNTriangles_5b(8, 9, 3, // tri0 + 8, 10, 9, // tri1 + 10, 11, 9, // tri2 + 11, 12, 9 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 11, 14, 13, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r1_b_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r1_b_1_v[172], 15, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 0, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 1, 7, 10, // tri1 + 8, 11, 12, // tri2 + 11, 13, 14 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_1_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_1_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&grd_s_r1_b_1_v[187], 12, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b(3, 4, 5, // tri0 + 5, 4, 6, // tri1 + 5, 6, 7, // tri2 + 7, 6, 8 // tri3 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 1, 10, 2, // tri1 + 6, 11, 8, // tri2 + 4, 10, 11 // tri3 + ), + gsSPNTriangles_5b(4, 11, 6, // tri0 + 2, 10, 4, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r1_b_1_v[0], 15, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 3, 8, // tri0 + 9, 10, 11, // tri1 + 12, 9, 13, // tri2 + 10, 5, 14 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r1_b_1_v[15], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 5, // tri0 + 3, 8, 4, // tri1 + 3, 9, 8, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(10, 13, 11, // tri0 + 10, 14, 13, // tri1 + 11, 15, 12, // tri2 + 15, 16, 12 // tri3 + ), + gsSPNTriangles_5b(16, 17, 12, // tri0 + 16, 18, 17, // tri1 + 16, 19, 18, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(21, 17, 22, // tri0 + 17, 18, 22, // tri1 + 23, 24, 20, // tri2 + 24, 25, 20 // tri3 + ), + gsSPNTriangles_5b(24, 26, 25, // tri0 + 25, 21, 20, // tri1 + 27, 28, 29, // tri2 + 27, 30, 28 // tri3 + ), + gsSPVertex(&grd_s_r1_b_1_v[46], 27, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 5, // tri0 + 7, 8, 5, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(10, 2, 12, // tri0 + 10, 13, 2, // tri1 + 10, 14, 13, // tri2 + 10, 15, 14 // tri3 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 17, 19, 15, // tri1 + 16, 19, 17, // tri2 + 19, 14, 15 // tri3 + ), + gsSPNTriangles_5b(20, 2, 13, // tri0 + 20, 0, 2, // tri1 + 21, 0, 20, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b(24, 25, 22, // tri0 + 26, 25, 24, // tri1 + 25, 23, 22, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r1_b_1_v[73], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 8, 7, 9, // tri1 + 8, 9, 10, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 15, 16, 0, // tri1 + 0, 16, 1, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(20, 21, 18, // tri0 + 22, 23, 21, // tri1 + 24, 25, 23, // tri2 + 26, 27, 25 // tri3 + ), + gsSPNTriangles_5b(28, 29, 27, // tri0 + 30, 31, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r1_b_1_v[105], 19, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 3, 8, // tri0 + 9, 10, 11, // tri1 + 12, 9, 13, // tri2 + 10, 5, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 16, 12, 18, // tri1 + 3, 4, 8, // tri2 + 9, 11, 13 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r1_b_1_v[124], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 6, // tri0 + 0, 9, 8, // tri1 + 0, 2, 9, // tri2 + 1, 10, 3 // tri3 + ), + gsSPNTriangles_5b(1, 11, 10, // tri0 + 12, 13, 11, // tri1 + 14, 15, 13, // tri2 + 16, 17, 15 // tri3 + ), + gsSPNTriangles_5b(16, 18, 17, // tri0 + 19, 20, 18, // tri1 + 5, 7, 6, // tri2 + 7, 0, 8 // tri3 + ), + gsSPNTriangles_5b(1, 12, 11, // tri0 + 12, 14, 13, // tri1 + 14, 16, 15, // tri2 + 16, 19, 18 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 24, 25, 22, // tri1 + 26, 27, 25, // tri2 + 26, 28, 27 // tri3 + ), + gsSPNTriangles_5b(29, 30, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r1_b_1_v[155], 17, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b(6, 7, 5, // tri0 + 8, 9, 7, // tri1 + 10, 11, 12, // tri2 + 13, 12, 14 // tri3 + ), + gsSPNTriangles_5b(15, 14, 16, // tri0 + 2, 16, 0, // tri1 + 0, 4, 3, // tri2 + 5, 4, 6 // tri3 + ), + gsSPNTriangles_5b(7, 6, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r1_b_1/grd_s_r1_b_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r1_b_1/grd_s_r1_b_1_evw_anime.c new file mode 100644 index 00000000..aaeff15e --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r1_b_1/grd_s_r1_b_1_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r1_b_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r1_b_1_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_r1_b_1_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_r1_b_2/grd_s_r1_b_2.c b/src/data/field/bg/acre/grd_s_r1_b_2/grd_s_r1_b_2.c new file mode 100644 index 00000000..f6ad2164 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r1_b_2/grd_s_r1_b_2.c @@ -0,0 +1,321 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_2_pal_dummy[]; +extern u8 bridge_2_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r1_b_2_v[] = { +#include "assets/field/bg/grd_s_r1_b_2_v.inc" +}; + +extern Gfx grd_s_r1_b_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r1_b_2_v[260], 13, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 7, 10, 9, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r1_b_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r1_b_2_v[209], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_2_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_2_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r1_b_2_v[222], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 8, 10, 11 // tri3 + ), + gsSPNTriangles_5b(8, 7, 10, // tri0 + 7, 12, 10, // tri1 + 7, 13, 12, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(14, 17, 15, // tri0 + 18, 16, 19, // tri1 + 18, 14, 16, // tri2 + 20, 14, 18 // tri3 + ), + gsSPNTriangles_5b(20, 21, 14, // tri0 + 22, 23, 24, // tri1 + 22, 25, 23, // tri2 + 24, 26, 27 // tri3 + ), + gsSPNTriangles_5b(24, 23, 26, // tri0 + 23, 28, 26, // tri1 + 23, 29, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r1_b_2_v[252], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 2, 5 // tri2 + ), + gsSPNTriangles_5b(4, 0, 2, // tri0 + 6, 0, 4, // tri1 + 6, 7, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r1_b_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 14, 16, 15, // tri1 + 13, 17, 14, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(18, 12, 19, // tri0 + 12, 21, 19, // tri1 + 22, 23, 24, // tri2 + 23, 25, 24 // tri3 + ), + gsSPNTriangles_5b(25, 26, 24, // tri0 + 25, 7, 26, // tri1 + 7, 8, 26, // tri2 + 5, 27, 6 // tri3 + ), + gsSPNTriangles_5b(16, 28, 29, // tri0 + 28, 30, 29, // tri1 + 16, 29, 15, // tri2 + 30, 31, 29 // tri3 + ), + gsSPVertex(&grd_s_r1_b_2_v[32], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(6, 7, 4, // tri0 + 6, 8, 7, // tri1 + 5, 9, 10, // tri2 + 5, 11, 9 // tri3 + ), + gsSPNTriangles_5b(12, 13, 14, // tri0 + 13, 15, 14, // tri1 + 15, 16, 14, // tri2 + 16, 17, 14 // tri3 + ), + gsSPNTriangles_5b(17, 18, 14, // tri0 + 19, 20, 21, // tri1 + 20, 22, 21, // tri2 + 20, 23, 22 // tri3 + ), + gsSPNTriangles_5b(24, 25, 23, // tri0 + 26, 15, 27, // tri1 + 26, 16, 15, // tri2 + 28, 29, 30 // tri3 + ), + gsSPVertex(&grd_s_r1_b_2_v[63], 16, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 1 // tri2 + ), + gsSPNTriangles_5b(6, 7, 3, // tri0 + 8, 9, 6, // tri1 + 9, 8, 10, // tri2 + 8, 11, 10 // tri3 + ), + gsSPNTriangles_5b(12, 13, 14, // tri0 + 12, 15, 13, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r1_b_2_v[79], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 5, 9, 6, // tri2 + 5, 10, 9 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 11, 14, 12, // tri1 + 15, 16, 17, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(21, 18, 22, // tri0 + 16, 23, 24, // tri1 + 23, 21, 25, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b(29, 26, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r1_b_2_v[110], 32, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 8, 9, // tri0 + 10, 11, 12, // tri1 + 13, 14, 15, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 21, 22, 23, // tri1 + 24, 25, 26, // tri2 + 27, 24, 28 // tri3 + ), + gsSPNTriangles_5b(29, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r1_b_2_v[142], 12, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 1 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 6, 8, 9, // tri1 + 10, 6, 9, // tri2 + 11, 0, 2 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r1_b_2_v[154], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r1_b_2_v[167], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 12, 14, 13, // tri1 + 14, 15, 13, // tri2 + 15, 16, 13 // tri3 + ), + gsSPNTriangles_5b(2, 5, 0, // tri0 + 5, 7, 0, // tri1 + 4, 3, 17, // tri2 + 3, 18, 17 // tri3 + ), + gsSPNTriangles_5b(18, 19, 17, // tri0 + 20, 21, 22, // tri1 + 21, 16, 22, // tri2 + 18, 23, 19 // tri3 + ), + gsSPNTriangles_5b(18, 24, 23, // tri0 + 24, 25, 23, // tri1 + 24, 26, 25, // tri2 + 24, 27, 26 // tri3 + ), + gsSPNTriangles_5b(27, 28, 26, // tri0 + 27, 29, 28, // tri1 + 29, 30, 28, // tri2 + 15, 22, 16 // tri3 + ), + gsSPNTriangles_5b(20, 31, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r1_b_2_v[199], 10, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 1, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 7, 8, 5 // tri3 + ), + gsSPNTriangles_5b(8, 9, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r1_b_2/grd_s_r1_b_2_evw_anime.c b/src/data/field/bg/acre/grd_s_r1_b_2/grd_s_r1_b_2_evw_anime.c new file mode 100644 index 00000000..6a7b134b --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r1_b_2/grd_s_r1_b_2_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r1_b_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r1_b_2_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_r1_b_2_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_r1_b_3/grd_s_r1_b_3.c b/src/data/field/bg/acre/grd_s_r1_b_3/grd_s_r1_b_3.c new file mode 100644 index 00000000..632ae5a3 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r1_b_3/grd_s_r1_b_3.c @@ -0,0 +1,325 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_2_pal_dummy[]; +extern u8 bridge_2_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r1_b_3_v[] = { +#include "assets/field/bg/grd_s_r1_b_3_v.inc" +}; + +extern Gfx grd_s_r1_b_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r1_b_3_v[233], 19, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 3, 4, 0 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 8, 10, 9, // tri1 + 11, 12, 13, // tri2 + 11, 14, 12 // tri3 + ), + gsSPNTriangles_5b(11, 15, 14, // tri0 + 15, 16, 14, // tri1 + 16, 17, 14, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b(16, 2, 18, // tri0 + 2, 1, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r1_b_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r1_b_3_v[184], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_2_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_2_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r1_b_3_v[195], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 10, 11, 6 // tri3 + ), + gsSPNTriangles_5b(11, 9, 6, // tri0 + 11, 12, 9, // tri1 + 11, 13, 12, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(14, 17, 15, // tri0 + 18, 14, 19, // tri1 + 14, 16, 19, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(19, 16, 20, // tri0 + 22, 23, 24, // tri1 + 22, 25, 23, // tri2 + 26, 27, 22 // tri3 + ), + gsSPNTriangles_5b(27, 25, 22, // tri0 + 27, 28, 25, // tri1 + 27, 29, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r1_b_3_v[225], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b(0, 2, 5, // tri0 + 5, 6, 7, // tri1 + 5, 2, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r1_b_3_v[0], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(6, 7, 4, // tri0 + 8, 7, 6, // tri1 + 8, 9, 7, // tri2 + 10, 9, 8 // tri3 + ), + gsSPNTriangles_5b(11, 7, 12, // tri0 + 13, 14, 15, // tri1 + 14, 16, 17, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b(16, 19, 18, // tri0 + 19, 20, 18, // tri1 + 20, 21, 18, // tri2 + 18, 21, 22 // tri3 + ), + gsSPNTriangles_5b(11, 23, 15, // tri0 + 24, 25, 26, // tri1 + 27, 25, 24, // tri2 + 28, 29, 27 // tri3 + ), + gsSPNTriangles_5b(30, 2, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r1_b_3_v[31], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 2, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 1, 0, 6, // tri1 + 6, 7, 1, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(11, 10, 9, // tri0 + 12, 13, 14, // tri1 + 15, 16, 17, // tri2 + 17, 18, 15 // tri3 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 19, 21, 22, // tri1 + 21, 23, 24, // tri2 + 23, 25, 24 // tri3 + ), + gsSPNTriangles_5b(23, 26, 25, // tri0 + 27, 1, 7, // tri1 + 1, 28, 2, // tri2 + 1, 29, 28 // tri3 + ), + gsSPNTriangles_5b(29, 30, 28, // tri0 + 29, 31, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r1_b_3_v[63], 15, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 4, 6, 7, // tri1 + 6, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b(8, 11, 10, // tri0 + 11, 12, 13, // tri1 + 5, 14, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r1_b_3_v[78], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(2, 4, 7, // tri0 + 8, 9, 10, // tri1 + 5, 8, 10, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 15, 17, 16, // tri1 + 18, 19, 20, // tri2 + 21, 11, 22 // tri3 + ), + gsSPNTriangles_5b(21, 22, 9, // tri0 + 18, 1, 19, // tri1 + 17, 23, 20, // tri2 + 23, 18, 20 // tri3 + ), + gsSPNTriangles_5b(24, 25, 26, // tri0 + 25, 27, 26, // tri1 + 28, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r1_b_3_v[109], 7, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 0, 6 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r1_b_3_v[116], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 3, 4, 0 // tri2 + ), + gsSPNTriangles_5b(4, 5, 0, // tri0 + 5, 4, 6, // tri1 + 6, 7, 5, // tri2 + 7, 8, 5 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(12, 13, 10, // tri0 + 13, 12, 14, // tri1 + 14, 15, 13, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(14, 17, 16, // tri0 + 17, 18, 16, // tri1 + 17, 19, 18, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b(20, 21, 18, // tri0 + 20, 22, 21, // tri1 + 22, 23, 21, // tri2 + 22, 24, 23 // tri3 + ), + gsSPNTriangles_5b(24, 25, 23, // tri0 + 25, 26, 23, // tri1 + 27, 28, 29, // tri2 + 28, 30, 29 // tri3 + ), + gsSPNTriangles_5b(28, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r1_b_3_v[148], 25, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 3, 6, 5, // tri1 + 5, 6, 7, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(6, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 12, 14, 13, // tri1 + 12, 15, 14, // tri2 + 16, 14, 15 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 17, 18, 16, // tri1 + 17, 19, 18, // tri2 + 17, 20, 19 // tri3 + ), + gsSPNTriangles_5b(20, 21, 19, // tri0 + 20, 22, 21, // tri1 + 22, 23, 21, // tri2 + 22, 24, 23 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r1_b_3_v[173], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 8, 3, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r1_b_3/grd_s_r1_b_3_evw_anime.c b/src/data/field/bg/acre/grd_s_r1_b_3/grd_s_r1_b_3_evw_anime.c new file mode 100644 index 00000000..a549104a --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r1_b_3/grd_s_r1_b_3_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r1_b_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r1_b_3_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_r1_b_3_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_r1_p_1/grd_s_r1_p_1.c b/src/data/field/bg/acre/grd_s_r1_p_1/grd_s_r1_p_1.c new file mode 100644 index 00000000..2536cd97 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r1_p_1/grd_s_r1_p_1.c @@ -0,0 +1,312 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_2_pal_dummy[]; +extern u8 bridge_2_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r1_p_1_v[] = { +#include "assets/field/bg/grd_s_r1_p_1_v.inc" +}; + +extern Gfx grd_s_r1_p_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r1_p_1_v[229], 22, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b(0, 2, 5, // tri0 + 6, 4, 7, // tri1 + 4, 5, 7, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(11, 8, 10, // tri0 + 12, 11, 10, // tri1 + 10, 9, 13, // tri2 + 14, 12, 10 // tri3 + ), + gsSPNTriangles_5b(14, 10, 15, // tri0 + 7, 14, 15, // tri1 + 6, 7, 15, // tri2 + 16, 6, 15 // tri3 + ), + gsSPNTriangles_5b(17, 16, 15, // tri0 + 18, 17, 15, // tri1 + 18, 15, 10, // tri2 + 18, 10, 13 // tri3 + ), + gsSPNTriangles_5b(19, 18, 13, // tri0 + 19, 13, 20, // tri1 + 21, 19, 20, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r1_p_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_2_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_2_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r1_p_1_v[191], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b(1, 5, 2, // tri0 + 6, 7, 8, // tri1 + 6, 8, 9, // tri2 + 9, 8, 10 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 8, 12, 13, // tri1 + 8, 13, 10, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(14, 16, 17, // tri0 + 18, 14, 17, // tri1 + 18, 17, 19, // tri2 + 20, 21, 14 // tri3 + ), + gsSPNTriangles_5b(20, 14, 18, // tri0 + 22, 23, 24, // tri1 + 22, 24, 25, // tri2 + 25, 24, 26 // tri3 + ), + gsSPNTriangles_5b(25, 26, 27, // tri0 + 24, 28, 29, // tri1 + 24, 29, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r1_p_1_v[221], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b(4, 3, 5, // tri0 + 6, 7, 0, // tri1 + 6, 0, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r1_p_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 0, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 4, 5, 8, // tri1 + 9, 10, 1, // tri2 + 9, 11, 10 // tri3 + ), + gsSPNTriangles_5b(9, 12, 11, // tri0 + 12, 13, 11, // tri1 + 14, 13, 15, // tri2 + 16, 14, 17 // tri3 + ), + gsSPNTriangles_5b(18, 16, 19, // tri0 + 19, 20, 18, // tri1 + 20, 21, 18, // tri2 + 22, 21, 23 // tri3 + ), + gsSPNTriangles_5b(23, 24, 22, // tri0 + 25, 22, 24, // tri1 + 25, 26, 22, // tri2 + 27, 26, 28 // tri3 + ), + gsSPNTriangles_5b(29, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r1_p_1_v[32], 12, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 9, 0, 11, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r1_p_1_v[44], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 2, 6, // tri0 + 2, 3, 6, // tri1 + 7, 8, 9, // tri2 + 10, 9, 8 // tri3 + ), + gsSPNTriangles_5b(10, 11, 9, // tri0 + 12, 13, 14, // tri1 + 13, 15, 14, // tri2 + 5, 16, 2 // tri3 + ), + gsSPNTriangles_5b(16, 17, 2, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20, // tri2 + 19, 22, 21 // tri3 + ), + gsSPNTriangles_5b(21, 23, 20, // tri0 + 24, 25, 26, // tri1 + 25, 27, 26, // tri2 + 25, 28, 27 // tri3 + ), + gsSPNTriangles_5b(29, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r1_p_1_v[76], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 5, 0, 4 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 7, 9, 8, // tri1 + 9, 10, 8, // tri2 + 7, 11, 9 // tri3 + ), + gsSPNTriangles_5b(12, 13, 14, // tri0 + 14, 15, 12, // tri1 + 15, 1, 12, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 20, 21, 22, // tri1 + 21, 23, 22, // tri2 + 21, 18, 23 // tri3 + ), + gsSPNTriangles_5b(23, 24, 22, // tri0 + 6, 8, 25, // tri1 + 26, 27, 28, // tri2 + 27, 29, 30 // tri3 + ), + gsSPNTriangles_5b(26, 29, 27, // tri0 + 29, 31, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r1_p_1_v[108], 28, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 5, // tri0 + 5, 4, 7, // tri1 + 9, 10, 11, // tri2 + 12, 13, 10 // tri3 + ), + gsSPNTriangles_5b(10, 9, 12, // tri0 + 14, 15, 16, // tri1 + 15, 17, 16, // tri2 + 17, 13, 16 // tri3 + ), + gsSPNTriangles_5b(12, 14, 16, // tri0 + 12, 16, 13, // tri1 + 18, 19, 20, // tri2 + 19, 21, 20 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 25, 26, 23, // tri1 + 23, 22, 25, // tri2 + 27, 14, 12 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r1_p_1_v[136], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 9, 10, 8, // tri2 + 10, 7, 8 // tri3 + ), + gsSPNTriangles_5b(5, 11, 6, // tri0 + 12, 13, 14, // tri1 + 12, 15, 13, // tri2 + 12, 16, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 16, 0, 17, // tri1 + 4, 18, 13, // tri2 + 18, 14, 13 // tri3 + ), + gsSPNTriangles_5b(1, 19, 3, // tri0 + 1, 20, 19, // tri1 + 1, 21, 20, // tri2 + 21, 22, 20 // tri3 + ), + gsSPNTriangles_5b(21, 23, 22, // tri0 + 21, 24, 23, // tri1 + 21, 25, 24, // tri2 + 25, 26, 24 // tri3 + ), + gsSPNTriangles_5b(25, 27, 26, // tri0 + 28, 29, 30, // tri1 + 29, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r1_p_1_v[168], 23, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 4, 5, 0 // tri2 + ), + gsSPNTriangles_5b(5, 6, 0, // tri0 + 5, 7, 6, // tri1 + 5, 8, 7, // tri2 + 8, 9, 7 // tri3 + ), + gsSPNTriangles_5b(9, 10, 7, // tri0 + 8, 11, 9, // tri1 + 12, 13, 10, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 15, 18, 17, // tri1 + 15, 19, 18, // tri2 + 17, 20, 16 // tri3 + ), + gsSPNTriangles_5b(20, 21, 16, // tri0 + 20, 22, 21, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r1_p_1/grd_s_r1_p_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r1_p_1/grd_s_r1_p_1_evw_anime.c new file mode 100644 index 00000000..70e5b587 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r1_p_1/grd_s_r1_p_1_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r1_p_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r1_p_1_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_r1_p_1_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_r2_1/grd_s_r2_1.c b/src/data/field/bg/acre/grd_s_r2_1/grd_s_r2_1.c new file mode 100644 index 00000000..fcd0567a --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r2_1/grd_s_r2_1.c @@ -0,0 +1,259 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r2_1_v[] = { +#include "assets/field/bg/grd_s_r2_1_v.inc" +}; + +extern Gfx grd_s_r2_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r2_1_v[168], 16, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 3, 0 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 6, 5, 4, // tri1 + 6, 7, 5, // tri2 + 8, 7, 6 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 10, 9, 8, // tri1 + 10, 11, 9, // tri2 + 12, 11, 10 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 14, 13, 12, // tri1 + 14, 15, 13, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r2_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r2_1_v[155], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 1, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 7, 9, 10, // tri1 + 9, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r2_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 0, 2, 6, // tri1 + 2, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 10, 9, // tri1 + 10, 12, 13, // tri2 + 14, 10, 13 // tri3 + ), + gsSPNTriangles_5b(4, 15, 5, // tri0 + 16, 5, 15, // tri1 + 5, 16, 17, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(18, 21, 19, // tri0 + 22, 23, 24, // tri1 + 23, 22, 25, // tri2 + 20, 26, 18 // tri3 + ), + gsSPNTriangles_5b(26, 27, 18, // tri0 + 7, 28, 8, // tri1 + 29, 27, 3, // tri2 + 20, 30, 26 // tri3 + ), + gsSPVertex(&grd_s_r2_1_v[31], 27, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(4, 7, 6, // tri0 + 4, 8, 9, // tri1 + 8, 10, 11, // tri2 + 10, 11, 11 // tri3 + ), + gsSPNTriangles_5b(10, 12, 11, // tri0 + 12, 13, 14, // tri1 + 14, 11, 12, // tri2 + 8, 11, 9 // tri3 + ), + gsSPNTriangles_5b(4, 9, 7, // tri0 + 15, 16, 17, // tri1 + 16, 18, 19, // tri2 + 20, 5, 21 // tri3 + ), + gsSPNTriangles_5b(20, 3, 5, // tri0 + 22, 6, 7, // tri1 + 23, 24, 25, // tri2 + 25, 24, 22 // tri3 + ), + gsSPNTriangles_5b(26, 20, 21, // tri0 + 1, 26, 24, // tri1 + 24, 2, 1, // tri2 + 24, 23, 2 // tri3 + ), + gsSPNTriangles_5b(1, 20, 26, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r2_1_v[58], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 2, 4, 3 // tri2 + ), + gsSPNTriangles_5b(2, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 7, 10, 9, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(10, 13, 12, // tri0 + 13, 14, 12, // tri1 + 13, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 17, 18, 16, // tri1 + 17, 19, 18, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b(19, 21, 20, // tri0 + 19, 22, 21, // tri1 + 22, 23, 21, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(25, 27, 26, // tri0 + 25, 28, 27, // tri1 + 28, 29, 27, // tri2 + 29, 30, 27 // tri3 + ), + gsSPNTriangles_5b(29, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_1_v[90], 17, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(8, 9, 6, // tri0 + 8, 10, 9, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 13, 14, 11, // tri1 + 13, 15, 14, // tri2 + 13, 16, 15 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r2_1_v[107], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 14, 15, 12, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(14, 19, 15, // tri0 + 19, 16, 15, // tri1 + 9, 11, 13, // tri2 + 11, 14, 12 // tri3 + ), + gsSPNTriangles_5b(20, 8, 21, // tri0 + 0, 20, 1, // tri1 + 6, 3, 4, // tri2 + 3, 0, 2 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 25, 22, 26, // tri1 + 27, 25, 26, // tri2 + 23, 28, 29 // tri3 + ), + gsSPNTriangles_5b(28, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_1_v[139], 3, 0), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r2_1_v[142], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r2_1/grd_s_r2_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r2_1/grd_s_r2_1_evw_anime.c new file mode 100644 index 00000000..a8d096d4 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r2_1/grd_s_r2_1_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r2_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r2_1_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_r2_1_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_r2_2/grd_s_r2_2.c b/src/data/field/bg/acre/grd_s_r2_2/grd_s_r2_2.c new file mode 100644 index 00000000..8cbd5683 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r2_2/grd_s_r2_2.c @@ -0,0 +1,219 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r2_2_v[] = { +#include "assets/field/bg/grd_s_r2_2_v.inc" +}; + +extern Gfx grd_s_r2_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r2_2_v[182], 13, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 9, 10, 7, // tri1 + 9, 11, 10, // tri2 + 9, 12, 11 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r2_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r2_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 6, 10, 9 // tri3 + ), + gsSPNTriangles_5b(10, 11, 9, // tri0 + 12, 13, 14, // tri1 + 13, 15, 14, // tri2 + 16, 14, 5 // tri3 + ), + gsSPNTriangles_5b(16, 12, 14, // tri0 + 17, 18, 19, // tri1 + 17, 20, 18, // tri2 + 18, 21, 19 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 22, 25, 23, // tri1 + 23, 10, 24, // tri2 + 10, 26, 11 // tri3 + ), + gsSPNTriangles_5b(6, 24, 10, // tri0 + 27, 28, 29, // tri1 + 27, 30, 28, // tri2 + 28, 31, 29 // tri3 + ), + gsSPVertex(&grd_s_r2_2_v[32], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 6, 7, 8, // tri1 + 9, 10, 11, // tri2 + 10, 12, 13 // tri3 + ), + gsSPNTriangles_5b(12, 14, 13, // tri0 + 15, 16, 17, // tri1 + 16, 15, 18, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(20, 22, 21, // tri0 + 23, 24, 25, // tri1 + 25, 24, 26, // tri2 + 27, 28, 29 // tri3 + ), + gsSPNTriangles_5b(14, 30, 13, // tri0 + 14, 31, 30, // tri1 + 14, 25, 31, // tri2 + 25, 26, 31 // tri3 + ), + gsSPVertex(&grd_s_r2_2_v[64], 7, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 4, 5, 6 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r2_2_v[71], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 5, 9, // tri1 + 6, 10, 11, // tri2 + 10, 12, 13 // tri3 + ), + gsSPNTriangles_5b(6, 11, 7, // tri0 + 5, 7, 9, // tri1 + 14, 8, 15, // tri2 + 12, 3, 16 // tri3 + ), + gsSPNTriangles_5b(1, 17, 18, // tri0 + 19, 20, 21, // tri1 + 19, 22, 23, // tri2 + 24, 23, 22 // tri3 + ), + gsSPNTriangles_5b(25, 24, 22, // tri0 + 26, 27, 25, // tri1 + 28, 29, 26, // tri2 + 30, 31, 28 // tri3 + ), + gsSPVertex(&grd_s_r2_2_v[103], 32, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 9, 6, 10, // tri1 + 7, 11, 12, // tri2 + 11, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 16, 9, 18, // tri1 + 19, 20, 21, // tri2 + 22, 19, 23 // tri3 + ), + gsSPNTriangles_5b(24, 25, 26, // tri0 + 27, 24, 28, // tri1 + 20, 29, 30, // tri2 + 29, 27, 31 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r2_2_v[135], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 12, 13, 14, // tri1 + 13, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 17, 18, 16, // tri1 + 17, 19, 18, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b(19, 21, 22, // tri0 + 23, 24, 22, // tri1 + 19, 22, 20, // tri2 + 21, 23, 22 // tri3 + ), + gsSPNTriangles_5b(23, 25, 24, // tri0 + 23, 26, 25, // tri1 + 26, 27, 25, // tri2 + 26, 28, 27 // tri3 + ), + gsSPNTriangles_5b(28, 29, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_2_v[165], 17, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 6, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 12, 13, 14, // tri1 + 12, 15, 13, // tri2 + 0, 16, 1 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r2_2/grd_s_r2_2_evw_anime.c b/src/data/field/bg/acre/grd_s_r2_2/grd_s_r2_2_evw_anime.c new file mode 100644 index 00000000..becbad9f --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r2_2/grd_s_r2_2_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r2_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r2_2_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_r2_2_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_r2_3/grd_s_r2_3.c b/src/data/field/bg/acre/grd_s_r2_3/grd_s_r2_3.c new file mode 100644 index 00000000..04a2f4be --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r2_3/grd_s_r2_3.c @@ -0,0 +1,280 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r2_3_v[] = { +#include "assets/field/bg/grd_s_r2_3_v.inc" +}; + +extern Gfx grd_s_r2_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r2_3_v[203], 15, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 2, 5 // tri2 + ), + gsSPNTriangles_5b(4, 0, 2, // tri0 + 1, 6, 3, // tri1 + 6, 7, 3, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(6, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 13, 14, 11, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r2_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r2_3_v[189], 14, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 3, 7, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 12, 8, 13 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r2_3_v[0], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 3 // tri2 + ), + gsSPNTriangles_5b(7, 4, 3, // tri0 + 8, 9, 6, // tri1 + 6, 9, 7, // tri2 + 1, 10, 8 // tri3 + ), + gsSPNTriangles_5b(8, 10, 9, // tri0 + 0, 10, 1, // tri1 + 11, 5, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(14, 16, 15, // tri0 + 17, 2, 11, // tri1 + 17, 18, 2, // tri2 + 19, 14, 12 // tri3 + ), + gsSPNTriangles_5b(20, 13, 15, // tri0 + 20, 21, 13, // tri1 + 22, 23, 24, // tri2 + 22, 25, 23 // tri3 + ), + gsSPNTriangles_5b(25, 26, 27, // tri0 + 26, 28, 27, // tri1 + 28, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_3_v[31], 32, 0), + gsSPNTrianglesInit_5b(31, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b(3, 6, 5, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 7, 10, 9 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 12, 14, 13, // tri1 + 12, 15, 14, // tri2 + 14, 16, 13 // tri3 + ), + gsSPNTriangles_5b(14, 17, 16, // tri0 + 17, 18, 16, // tri1 + 17, 19, 18, // tri2 + 17, 20, 19 // tri3 + ), + gsSPNTriangles_5b(20, 21, 19, // tri0 + 22, 21, 20, // tri1 + 22, 23, 21, // tri2 + 22, 9, 23 // tri3 + ), + gsSPNTriangles_5b(9, 10, 23, // tri0 + 8, 5, 6, // tri1 + 24, 1, 4, // tri2 + 1, 24, 2 // tri3 + ), + gsSPNTriangles_5b(0, 2, 25, // tri0 + 15, 26, 27, // tri1 + 26, 28, 25, // tri2 + 28, 26, 12 // tri3 + ), + gsSPNTriangles_5b(26, 15, 12, // tri0 + 28, 29, 25, // tri1 + 30, 29, 28, // tri2 + 29, 30, 31 // tri3 + ), + gsSPVertex(&grd_s_r2_3_v[63], 15, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(4, 7, 6, // tri0 + 7, 8, 9, // tri1 + 10, 11, 12, // tri2 + 13, 14, 11 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r2_3_v[78], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 0, 8, 1, // tri1 + 0, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 11, 12, 10, // tri1 + 11, 4, 12, // tri2 + 4, 13, 12 // tri3 + ), + gsSPNTriangles_5b(4, 6, 13, // tri0 + 5, 14, 7, // tri1 + 5, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 15, 18, 17, // tri1 + 18, 19, 17, // tri2 + 19, 20, 17 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 21, 24, 22, // tri1 + 24, 25, 22, // tri2 + 25, 26, 22 // tri3 + ), + gsSPNTriangles_5b(25, 27, 26, // tri0 + 27, 28, 26, // tri1 + 27, 29, 28, // tri2 + 29, 30, 28 // tri3 + ), + gsSPNTriangles_5b(30, 31, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_3_v[110], 13, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 8, 10, 9, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r2_3_v[123], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPNTriangles_5b(13, 15, 16, // tri0 + 7, 8, 10, // tri1 + 1, 14, 2, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(18, 20, 21, // tri0 + 20, 22, 23, // tri1 + 22, 24, 25, // tri2 + 24, 26, 27 // tri3 + ), + gsSPNTriangles_5b(26, 28, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_3_v[153], 23, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 9, // tri1 + 10, 11, 8, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(10, 13, 12, // tri0 + 14, 15, 13, // tri1 + 14, 16, 15, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(18, 0, 2, // tri0 + 14, 20, 16, // tri1 + 21, 22, 20, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r2_3_v[176], 13, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 8, 10, 9, // tri1 + 10, 11, 12, // tri2 + 11, 3, 12 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r2_3/grd_s_r2_3_evw_anime.c b/src/data/field/bg/acre/grd_s_r2_3/grd_s_r2_3_evw_anime.c new file mode 100644 index 00000000..c97f44ae --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r2_3/grd_s_r2_3_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r2_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r2_3_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_r2_3_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_r2_4/grd_s_r2_4.c b/src/data/field/bg/acre/grd_s_r2_4/grd_s_r2_4.c new file mode 100644 index 00000000..b55045a0 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r2_4/grd_s_r2_4.c @@ -0,0 +1,279 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r2_4_v[] = { +#include "assets/field/bg/grd_s_r2_4_v.inc" +}; + +extern Gfx grd_s_r2_4_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r2_4_v[196], 17, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 8, 12, 9 // tri3 + ), + gsSPNTriangles_5b(10, 3, 1, // tri0 + 10, 11, 3, // tri1 + 8, 13, 12, // tri2 + 8, 14, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 13, // tri0 + 15, 16, 13, // tri1 + 15, 4, 16, // tri2 + 4, 6, 16 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r2_4_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r2_4_v[185], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r2_4_v[0], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b(4, 3, 1, // tri0 + 6, 7, 8, // tri1 + 7, 0, 8, // tri2 + 7, 1, 0 // tri3 + ), + gsSPNTriangles_5b(9, 7, 6, // tri0 + 10, 7, 9, // tri1 + 11, 12, 13, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 16, 13, 17, // tri1 + 17, 18, 15, // tri2 + 17, 19, 18 // tri3 + ), + gsSPNTriangles_5b(20, 21, 14, // tri0 + 22, 23, 24, // tri1 + 23, 25, 24, // tri2 + 23, 26, 25 // tri3 + ), + gsSPNTriangles_5b(23, 21, 26, // tri0 + 27, 28, 29, // tri1 + 28, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_4_v[32], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 7, 9, 8, // tri1 + 7, 10, 9, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 14, 16, 15, // tri1 + 17, 18, 19, // tri2 + 20, 21, 17 // tri3 + ), + gsSPNTriangles_5b(5, 8, 6, // tri0 + 9, 10, 12, // tri1 + 9, 22, 23, // tri2 + 9, 12, 22 // tri3 + ), + gsSPNTriangles_5b(24, 23, 22, // tri0 + 25, 23, 24, // tri1 + 25, 26, 23, // tri2 + 27, 26, 25 // tri3 + ), + gsSPNTriangles_5b(28, 3, 6, // tri0 + 4, 28, 29, // tri1 + 28, 30, 29, // tri2 + 3, 28, 4 // tri3 + ), + gsSPNTriangles_5b(29, 30, 31, // tri0 + 30, 26, 31, // tri1 + 27, 31, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_4_v[64], 21, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 0 // tri2 + ), + gsSPNTriangles_5b(5, 1, 0, // tri0 + 6, 7, 8, // tri1 + 9, 10, 11, // tri2 + 10, 12, 5 // tri3 + ), + gsSPNTriangles_5b(5, 4, 10, // tri0 + 12, 13, 14, // tri1 + 15, 16, 17, // tri2 + 18, 8, 19 // tri3 + ), + gsSPNTriangles_5b(8, 7, 19, // tri0 + 20, 10, 9, // tri1 + 20, 12, 10, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r2_4_v[85], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 0, // tri0 + 8, 9, 6, // tri1 + 10, 11, 8, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(10, 13, 12, // tri0 + 13, 14, 15, // tri1 + 16, 17, 18, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(22, 19, 23, // tri0 + 17, 24, 25, // tri1 + 24, 26, 25, // tri2 + 26, 22, 27 // tri3 + ), + gsSPNTriangles_5b(28, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_4_v[116], 9, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 3, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r2_4_v[125], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 4, 8, 7 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 8, 10, 9, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(10, 13, 12, // tri0 + 10, 14, 13, // tri1 + 14, 15, 13, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 16, 18, 17, // tri1 + 18, 19, 17, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b(18, 21, 20, // tri0 + 18, 22, 21, // tri1 + 23, 24, 25, // tri2 + 25, 26, 23 // tri3 + ), + gsSPNTriangles_5b(25, 27, 26, // tri0 + 27, 28, 26, // tri1 + 28, 29, 26, // tri2 + 28, 30, 29 // tri3 + ), + gsSPNTriangles_5b(30, 31, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_4_v[157], 17, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 5, 6, 3, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(8, 9, 6, // tri0 + 9, 10, 6, // tri1 + 9, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(12, 13, 10, // tri0 + 12, 14, 13, // tri1 + 14, 15, 13, // tri2 + 14, 16, 15 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r2_4_v[174], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 8, 3, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r2_4/grd_s_r2_4_evw_anime.c b/src/data/field/bg/acre/grd_s_r2_4/grd_s_r2_4_evw_anime.c new file mode 100644 index 00000000..6cf61784 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r2_4/grd_s_r2_4_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r2_4_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r2_4_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_r2_4_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_r2_b_1/grd_s_r2_b_1.c b/src/data/field/bg/acre/grd_s_r2_b_1/grd_s_r2_b_1.c new file mode 100644 index 00000000..c9abacdd --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r2_b_1/grd_s_r2_b_1.c @@ -0,0 +1,367 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_1_pal_dummy[]; +extern u8 bridge_1_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r2_b_1_v[] = { +#include "assets/field/bg/grd_s_r2_b_1_v.inc" +}; + +extern Gfx grd_s_r2_b_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r2_b_1_v[270], 30, 0), + gsSPNTrianglesInit_5b(31, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 8, 9, // tri0 + 1, 10, 11, // tri1 + 12, 3, 11, // tri2 + 11, 2, 1 // tri3 + ), + gsSPNTriangles_5b(11, 3, 2, // tri0 + 13, 0, 2, // tri1 + 13, 14, 0, // tri2 + 13, 15, 14 // tri3 + ), + gsSPNTriangles_5b(13, 16, 15, // tri0 + 16, 17, 15, // tri1 + 16, 5, 17, // tri2 + 16, 6, 5 // tri3 + ), + gsSPNTriangles_5b(4, 18, 2, // tri0 + 4, 19, 18, // tri1 + 19, 20, 18, // tri2 + 21, 22, 20 // tri3 + ), + gsSPNTriangles_5b(22, 18, 20, // tri0 + 21, 8, 22, // tri1 + 8, 6, 22, // tri2 + 6, 23, 7 // tri3 + ), + gsSPNTriangles_5b(6, 9, 23, // tri0 + 23, 24, 7, // tri1 + 9, 25, 23, // tri2 + 23, 26, 24 // tri3 + ), + gsSPNTriangles_5b(25, 27, 23, // tri0 + 23, 27, 26, // tri1 + 27, 28, 26, // tri2 + 27, 29, 28 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r2_b_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r2_b_1_v[229], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 4, 6, // tri0 + 9, 7, 10, // tri1 + 11, 10, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_1_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_1_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&grd_s_r2_b_1_v[242], 14, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 4, 1, 0 // tri2 + ), + gsSPNTriangles_5b(1, 5, 2, // tri0 + 5, 6, 2, // tri1 + 7, 8, 9, // tri2 + 7, 9, 10 // tri3 + ), + gsSPNTriangles_5b(11, 10, 12, // tri0 + 11, 12, 13, // tri1 + 7, 10, 11, // tri2 + 2, 6, 8 // tri3 + ), + gsSPNTriangles_5b(2, 8, 7, // tri0 + 0, 2, 7, // tri1 + 0, 7, 11, // tri2 + 3, 0, 11 // tri3 + ), + gsSPNTriangles_5b(3, 11, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_b_1_v[256], 14, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b(1, 5, 2, // tri0 + 4, 6, 7, // tri1 + 4, 7, 5, // tri2 + 5, 8, 2 // tri3 + ), + gsSPNTriangles_5b(2, 9, 3, // tri0 + 2, 8, 9, // tri1 + 5, 10, 8, // tri2 + 5, 7, 10 // tri3 + ), + gsSPNTriangles_5b(11, 6, 4, // tri0 + 12, 11, 4, // tri1 + 13, 12, 1, // tri2 + 0, 13, 1 // tri3 + ), + gsSPNTriangles_5b(1, 12, 4, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r2_b_1_v[0], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 7, 4, // tri0 + 9, 10, 6, // tri1 + 11, 12, 10, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r2_b_1_v[13], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 11, 12, 9, // tri2 + 0, 2, 12 // tri3 + ), + gsSPNTriangles_5b(13, 14, 3, // tri0 + 15, 16, 14, // tri1 + 4, 6, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(20, 17, 21, // tri0 + 22, 23, 24, // tri1 + 23, 20, 25, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b(29, 26, 30, // tri0 + 27, 22, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_b_1_v[45], 16, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(6, 0, 7, // tri0 + 8, 9, 10, // tri1 + 1, 8, 11, // tri2 + 9, 12, 13 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r2_b_1_v[61], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 9, 10, 7, // tri1 + 11, 12, 9, // tri2 + 13, 14, 11 // tri3 + ), + gsSPNTriangles_5b(15, 16, 13, // tri0 + 17, 18, 15, // tri1 + 17, 19, 20, // tri2 + 18, 17, 20 // tri3 + ), + gsSPNTriangles_5b(18, 20, 21, // tri0 + 16, 15, 18, // tri1 + 14, 13, 16, // tri2 + 12, 11, 14 // tri3 + ), + gsSPNTriangles_5b(10, 9, 22, // tri0 + 9, 12, 22, // tri1 + 8, 7, 10, // tri2 + 4, 6, 8 // tri3 + ), + gsSPNTriangles_5b(23, 5, 4, // tri0 + 24, 25, 26, // tri1 + 27, 28, 29, // tri2 + 30, 31, 29 // tri3 + ), + gsSPVertex(&grd_s_r2_b_1_v[93], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 8, 9, 10, // tri1 + 11, 12, 9, // tri2 + 11, 13, 12 // tri3 + ), + gsSPNTriangles_5b(11, 14, 13, // tri0 + 15, 16, 14, // tri1 + 14, 16, 13, // tri2 + 15, 17, 16 // tri3 + ), + gsSPNTriangles_5b(17, 18, 16, // tri0 + 17, 19, 18, // tri1 + 20, 21, 19, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 22, 24, 21, // tri1 + 21, 18, 19, // tri2 + 25, 26, 1 // tri3 + ), + gsSPNTriangles_5b(1, 0, 25, // tri0 + 25, 27, 26, // tri1 + 28, 29, 27, // tri2 + 25, 28, 27 // tri3 + ), + gsSPNTriangles_5b(30, 31, 29, // tri0 + 29, 28, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_b_1_v[125], 10, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 4, // tri0 + 4, 3, 5, // tri1 + 7, 8, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r2_b_1_v[135], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 14, 16, 15, // tri1 + 15, 17, 13, // tri2 + 17, 18, 13 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 19, 22, 20, // tri1 + 23, 21, 24, // tri2 + 21, 20, 24 // tri3 + ), + gsSPNTriangles_5b(25, 12, 26, // tri0 + 12, 27, 26, // tri1 + 28, 2, 4, // tri2 + 29, 30, 31 // tri3 + ), + gsSPVertex(&grd_s_r2_b_1_v[167], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 8, 10, 9, // tri1 + 8, 11, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(13, 15, 14, // tri0 + 16, 17, 18, // tri1 + 16, 19, 17, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(20, 23, 21, // tri0 + 21, 24, 22, // tri1 + 20, 25, 23, // tri2 + 25, 26, 27 // tri3 + ), + gsSPNTriangles_5b(26, 28, 27, // tri0 + 26, 29, 28, // tri1 + 26, 30, 29, // tri2 + 26, 31, 30 // tri3 + ), + gsSPVertex(&grd_s_r2_b_1_v[199], 30, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(4, 7, 6, // tri0 + 4, 8, 7, // tri1 + 8, 9, 7, // tri2 + 9, 10, 7 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 12, 14, 13, // tri1 + 14, 15, 13, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(17, 19, 18, // tri0 + 19, 20, 18, // tri1 + 19, 21, 20, // tri2 + 21, 22, 20 // tri3 + ), + gsSPNTriangles_5b(21, 23, 22, // tri0 + 23, 24, 22, // tri1 + 25, 26, 27, // tri2 + 28, 29, 26 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r2_b_1/grd_s_r2_b_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r2_b_1/grd_s_r2_b_1_evw_anime.c new file mode 100644 index 00000000..73a35fa1 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r2_b_1/grd_s_r2_b_1_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r2_b_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r2_b_1_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_r2_b_1_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_r2_b_2/grd_s_r2_b_2.c b/src/data/field/bg/acre/grd_s_r2_b_2/grd_s_r2_b_2.c new file mode 100644 index 00000000..0d02ac21 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r2_b_2/grd_s_r2_b_2.c @@ -0,0 +1,316 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_2_pal_dummy[]; +extern u8 bridge_2_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r2_b_2_v[] = { +#include "assets/field/bg/grd_s_r2_b_2_v.inc" +}; + +extern Gfx grd_s_r2_b_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r2_b_2_v[247], 13, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(0, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 9, 10, 7, // tri1 + 9, 11, 10, // tri2 + 9, 12, 11 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r2_b_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r2_b_2_v[198], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_2_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_2_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r2_b_2_v[209], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 9, 12, 11, // tri1 + 9, 13, 12, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(14, 17, 15, // tri0 + 18, 14, 19, // tri1 + 14, 16, 19, // tri2 + 20, 21, 18 // tri3 + ), + gsSPNTriangles_5b(21, 14, 18, // tri0 + 22, 23, 24, // tri1 + 23, 25, 24, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(25, 27, 26, // tri0 + 25, 28, 27, // tri1 + 25, 29, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_b_2_v[239], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b(0, 2, 5, // tri0 + 6, 7, 4, // tri1 + 7, 0, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r2_b_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 3, 9, 10, // tri2 + 3, 8, 9 // tri3 + ), + gsSPNTriangles_5b(11, 9, 8, // tri0 + 11, 8, 12, // tri1 + 8, 5, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(14, 4, 6, // tri0 + 16, 17, 13, // tri1 + 12, 5, 18, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(22, 21, 20, // tri0 + 23, 24, 22, // tri1 + 23, 25, 24, // tri2 + 25, 26, 24 // tri3 + ), + gsSPNTriangles_5b(24, 21, 22, // tri0 + 27, 28, 29, // tri1 + 30, 29, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_b_2_v[32], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 7, 10, 8, // tri1 + 10, 11, 8, // tri2 + 12, 13, 11 // tri3 + ), + gsSPNTriangles_5b(14, 15, 13, // tri0 + 16, 15, 17, // tri1 + 18, 19, 20, // tri2 + 18, 21, 19 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 22, 24, 23, // tri1 + 22, 25, 24, // tri2 + 25, 26, 27 // tri3 + ), + gsSPNTriangles_5b(26, 6, 28, // tri0 + 5, 29, 3, // tri1 + 29, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_b_2_v[64], 14, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 5, 4 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 8, 7, // tri1 + 11, 12, 8, // tri2 + 13, 8, 10 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r2_b_2_v[78], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 3, 6, 5, // tri1 + 6, 7, 5, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 8, 10, 9, // tri1 + 8, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 13, 14, 12, // tri1 + 13, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 15, 18, 17, // tri1 + 18, 19, 17, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b(20, 21, 19, // tri0 + 22, 23, 24, // tri1 + 22, 24, 25, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b(25, 26, 27, // tri0 + 26, 28, 27, // tri1 + 28, 29, 27, // tri2 + 29, 30, 27 // tri3 + ), + gsSPNTriangles_5b(27, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_b_2_v[110], 14, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 5, 6, 3, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 10, 11, 8, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(10, 13, 12, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r2_b_2_v[124], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 8, 6, 10, // tri1 + 11, 12, 13, // tri2 + 11, 14, 12 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 16, 18, 19, // tri1 + 15, 17, 20, // tri2 + 12, 21, 22 // tri3 + ), + gsSPNTriangles_5b(23, 24, 25, // tri0 + 21, 23, 26, // tri1 + 23, 25, 26, // tri2 + 12, 22, 13 // tri3 + ), + gsSPNTriangles_5b(27, 20, 28, // tri0 + 16, 19, 17, // tri1 + 18, 29, 30, // tri2 + 29, 14, 31 // tri3 + ), + gsSPVertex(&grd_s_r2_b_2_v[156], 31, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 14, 15, 16, // tri2 + 17, 8, 18 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 12, 14, 16, // tri1 + 20, 19, 21, // tri2 + 22, 20, 21 // tri3 + ), + gsSPNTriangles_5b(23, 22, 24, // tri0 + 25, 23, 26, // tri1 + 27, 25, 28, // tri2 + 27, 28, 29 // tri3 + ), + gsSPNTriangles_5b(30, 27, 29, // tri0 + 14, 30, 15, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r2_b_2_v[187], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 8, 3, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r2_b_2/grd_s_r2_b_2_evw_anime.c b/src/data/field/bg/acre/grd_s_r2_b_2/grd_s_r2_b_2_evw_anime.c new file mode 100644 index 00000000..b313a2a6 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r2_b_2/grd_s_r2_b_2_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r2_b_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r2_b_2_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_r2_b_2_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_r2_b_3/grd_s_r2_b_3.c b/src/data/field/bg/acre/grd_s_r2_b_3/grd_s_r2_b_3.c new file mode 100644 index 00000000..5d4a3f6b --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r2_b_3/grd_s_r2_b_3.c @@ -0,0 +1,340 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_2_pal_dummy[]; +extern u8 bridge_2_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r2_b_3_v[] = { +#include "assets/field/bg/grd_s_r2_b_3_v.inc" +}; + +extern Gfx grd_s_r2_b_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r2_b_3_v[263], 20, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 3, 4 // tri2 + ), + gsSPNTriangles_5b(5, 0, 4, // tri0 + 6, 5, 4, // tri1 + 6, 4, 7, // tri2 + 8, 6, 7 // tri3 + ), + gsSPNTriangles_5b(8, 7, 9, // tri0 + 8, 9, 10, // tri1 + 11, 8, 10, // tri2 + 11, 10, 12 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 14, 11, 13, // tri1 + 14, 13, 15, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(17, 14, 16, // tri0 + 18, 17, 16, // tri1 + 19, 18, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r2_b_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r2_b_3_v[212], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_2_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_2_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r2_b_3_v[225], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 10, 11, 6 // tri3 + ), + gsSPNTriangles_5b(11, 7, 6, // tri0 + 11, 12, 7, // tri1 + 11, 13, 12, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(14, 17, 15, // tri0 + 18, 14, 19, // tri1 + 14, 16, 19, // tri2 + 19, 16, 20 // tri3 + ), + gsSPNTriangles_5b(16, 21, 20, // tri0 + 22, 23, 24, // tri1 + 23, 25, 24, // tri2 + 26, 27, 22 // tri3 + ), + gsSPNTriangles_5b(27, 23, 22, // tri0 + 27, 28, 23, // tri1 + 27, 29, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_b_3_v[255], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b(0, 2, 5, // tri0 + 5, 2, 6, // tri1 + 2, 7, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r2_b_3_v[0], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 8, 9, 6, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 13, 14, 12, // tri1 + 14, 15, 12, // tri2 + 4, 16, 5 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 18, 20, 19, // tri1 + 18, 21, 20, // tri2 + 18, 22, 21 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 22, 24, 23, // tri1 + 25, 26, 24, // tri2 + 26, 23, 24 // tri3 + ), + gsSPNTriangles_5b(27, 28, 29, // tri0 + 24, 30, 25, // tri1 + 31, 11, 10, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_b_3_v[32], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 8, 10, 9, // tri1 + 10, 11, 9, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 15, 13, // tri0 + 12, 16, 15, // tri1 + 12, 17, 16, // tri2 + 13, 18, 14 // tri3 + ), + gsSPNTriangles_5b(18, 19, 14, // tri0 + 18, 20, 19, // tri1 + 21, 22, 0, // tri2 + 22, 1, 0 // tri3 + ), + gsSPNTriangles_5b(3, 23, 2, // tri0 + 23, 24, 2, // tri1 + 25, 26, 27, // tri2 + 28, 29, 4 // tri3 + ), + gsSPNTriangles_5b(28, 30, 29, // tri0 + 28, 31, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_b_3_v[64], 25, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(3, 7, 8, // tri0 + 9, 6, 5, // tri1 + 10, 11, 12, // tri2 + 11, 13, 12 // tri3 + ), + gsSPNTriangles_5b(11, 14, 15, // tri0 + 14, 16, 15, // tri1 + 14, 17, 16, // tri2 + 0, 18, 19 // tri3 + ), + gsSPNTriangles_5b(0, 20, 18, // tri0 + 20, 21, 18, // tri1 + 21, 22, 18, // tri2 + 14, 23, 24 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r2_b_3_v[89], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 9, 10, 2, // tri2 + 10, 11, 2 // tri3 + ), + gsSPNTriangles_5b(12, 13, 14, // tri0 + 13, 15, 14, // tri1 + 7, 16, 17, // tri2 + 18, 19, 5 // tri3 + ), + gsSPNTriangles_5b(14, 20, 18, // tri0 + 12, 21, 22, // tri1 + 23, 24, 25, // tri2 + 26, 23, 27 // tri3 + ), + gsSPNTriangles_5b(24, 28, 29, // tri0 + 28, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_b_3_v[121], 21, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 11, 8, 12, // tri1 + 13, 14, 15, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(19, 5, 20, // tri0 + 19, 20, 17, // tri1 + 9, 16, 18, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r2_b_3_v[142], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r2_b_3_v[155], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 8, 9, 7, // tri2 + 10, 0, 2 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 12, 14, 13, // tri1 + 12, 15, 14, // tri2 + 11, 3, 12 // tri3 + ), + gsSPNTriangles_5b(8, 16, 9, // tri0 + 16, 17, 9, // tri1 + 11, 1, 3, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b(18, 19, 17, // tri0 + 20, 21, 22, // tri1 + 21, 10, 22, // tri2 + 10, 23, 22 // tri3 + ), + gsSPNTriangles_5b(20, 24, 21, // tri0 + 20, 25, 24, // tri1 + 26, 27, 28, // tri2 + 27, 29, 28 // tri3 + ), + gsSPNTriangles_5b(27, 30, 29, // tri0 + 30, 4, 29, // tri1 + 4, 6, 29, // tri2 + 10, 2, 23 // tri3 + ), + gsSPNTriangles_5b(15, 31, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_b_3_v[187], 25, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(6, 9, 8, // tri0 + 9, 10, 8, // tri1 + 11, 12, 13, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 13, // tri0 + 15, 16, 13, // tri1 + 15, 17, 16, // tri2 + 17, 18, 16 // tri3 + ), + gsSPNTriangles_5b(18, 19, 16, // tri0 + 18, 20, 19, // tri1 + 20, 21, 19, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b(22, 23, 21, // tri0 + 22, 24, 23, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r2_b_3/grd_s_r2_b_3_evw_anime.c b/src/data/field/bg/acre/grd_s_r2_b_3/grd_s_r2_b_3_evw_anime.c new file mode 100644 index 00000000..06d8836a --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r2_b_3/grd_s_r2_b_3_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r2_b_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r2_b_3_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_r2_b_3_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_r2_p_1/grd_s_r2_p_1.c b/src/data/field/bg/acre/grd_s_r2_p_1/grd_s_r2_p_1.c new file mode 100644 index 00000000..16d2539e --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r2_p_1/grd_s_r2_p_1.c @@ -0,0 +1,344 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_2_pal_dummy[]; +extern u8 bridge_2_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r2_p_1_v[] = { +#include "assets/field/bg/grd_s_r2_p_1_v.inc" +}; + +extern Gfx grd_s_r2_p_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r2_p_1_v[321], 19, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 2, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 7, 9, // tri1 + 11, 3, 12, // tri2 + 11, 13, 14 // tri3 + ), + gsSPNTriangles_5b(8, 11, 12, // tri0 + 8, 12, 9, // tri1 + 13, 0, 6, // tri2 + 11, 15, 13 // tri3 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 3, 5, 12, // tri1 + 13, 6, 14, // tri2 + 16, 12, 17 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r2_p_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_2_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_2_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r2_p_1_v[277], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b(1, 5, 2, // tri0 + 6, 7, 8, // tri1 + 6, 8, 9, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(10, 12, 13, // tri0 + 13, 12, 14, // tri1 + 13, 14, 15, // tri2 + 12, 16, 17 // tri3 + ), + gsSPNTriangles_5b(12, 17, 14, // tri0 + 18, 19, 20, // tri1 + 18, 20, 21, // tri2 + 22, 18, 21 // tri3 + ), + gsSPNTriangles_5b(22, 21, 23, // tri0 + 24, 25, 18, // tri1 + 24, 18, 22, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b(26, 28, 29, // tri0 + 29, 28, 30, // tri1 + 29, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_p_1_v[309], 12, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 4, 7, // tri1 + 8, 7, 9, // tri2 + 10, 11, 4 // tri3 + ), + gsSPNTriangles_5b(10, 4, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r2_p_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 4, // tri0 + 9, 0, 3, // tri1 + 10, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 19, 20, 12, // tri1 + 21, 22, 23, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(27, 15, 14, // tri0 + 26, 25, 28, // tri1 + 26, 29, 24, // tri2 + 30, 21, 26 // tri3 + ), + gsSPNTriangles_5b(11, 19, 12, // tri0 + 16, 31, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_p_1_v[32], 32, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(3, 9, 10, // tri0 + 11, 12, 13, // tri1 + 7, 6, 14, // tri2 + 15, 11, 16 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 20, 21, 22, // tri1 + 18, 23, 19, // tri2 + 24, 25, 15 // tri3 + ), + gsSPNTriangles_5b(26, 27, 28, // tri0 + 29, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_p_1_v[64], 31, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 13, 14, // tri1 + 15, 16, 9, // tri2 + 1, 5, 2 // tri3 + ), + gsSPNTriangles_5b(17, 12, 18, // tri0 + 9, 19, 20, // tri1 + 21, 22, 23, // tri2 + 24, 12, 14 // tri3 + ), + gsSPNTriangles_5b(25, 26, 27, // tri0 + 28, 29, 16, // tri1 + 23, 30, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r2_p_1_v[95], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(1, 9, 10, // tri0 + 11, 12, 13, // tri1 + 12, 14, 13, // tri2 + 1, 0, 9 // tri3 + ), + gsSPNTriangles_5b(15, 11, 16, // tri0 + 17, 15, 16, // tri1 + 7, 18, 8, // tri2 + 3, 8, 18 // tri3 + ), + gsSPNTriangles_5b(19, 20, 6, // tri0 + 10, 21, 19, // tri1 + 2, 22, 23, // tri2 + 24, 17, 25 // tri3 + ), + gsSPNTriangles_5b(26, 27, 28, // tri0 + 14, 26, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_p_1_v[125], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 8, 6, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r2_p_1_v[136], 32, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 11, 12, 13, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b(13, 15, 16, // tri0 + 17, 18, 19, // tri1 + 20, 21, 22, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b(26, 27, 7, // tri0 + 24, 28, 29, // tri1 + 24, 29, 30, // tri2 + 24, 30, 25 // tri3 + ), + gsSPVertex(&grd_s_r2_p_1_v[167], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 1, 11, // tri1 + 10, 2, 1, // tri2 + 12, 7, 9 // tri3 + ), + gsSPNTriangles_5b(13, 11, 14, // tri0 + 11, 1, 14, // tri1 + 15, 16, 17, // tri2 + 15, 17, 18 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 0, 14, 1, // tri1 + 0, 22, 14, // tri2 + 5, 6, 23 // tri3 + ), + gsSPNTriangles_5b(24, 25, 26, // tri0 + 24, 26, 27, // tri1 + 28, 29, 30, // tri2 + 28, 30, 23 // tri3 + ), + gsSPNTriangles_5b(31, 21, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_p_1_v[199], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 7, 10, 8, // tri1 + 11, 12, 2, // tri2 + 11, 2, 1 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 13, 15, 16, // tri1 + 17, 18, 19, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b(21, 22, 16, // tri0 + 21, 16, 23, // tri1 + 24, 25, 0, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b(29, 4, 3, // tri0 + 30, 8, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_p_1_v[230], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(0, 4, 3, // tri0 + 4, 6, 3, // tri1 + 7, 8, 9, // tri2 + 7, 9, 10 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 11, 13, 14, // tri1 + 12, 15, 16, // tri2 + 12, 16, 17 // tri3 + ), + gsSPNTriangles_5b(15, 18, 19, // tri0 + 15, 19, 20, // tri1 + 21, 22, 23, // tri2 + 22, 24, 25 // tri3 + ), + gsSPNTriangles_5b(22, 25, 23, // tri0 + 26, 27, 28, // tri1 + 27, 26, 29, // tri2 + 29, 30, 27 // tri3 + ), + gsSPNTriangles_5b(29, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_p_1_v[262], 15, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 8, 6, 9, // tri1 + 10, 11, 12, // tri2 + 10, 13, 11 // tri3 + ), + gsSPNTriangles_5b(10, 14, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r2_p_1/grd_s_r2_p_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r2_p_1/grd_s_r2_p_1_evw_anime.c new file mode 100644 index 00000000..3029f345 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r2_p_1/grd_s_r2_p_1_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r2_p_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r2_p_1_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_r2_p_1_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_r3_1/grd_s_r3_1.c b/src/data/field/bg/acre/grd_s_r3_1/grd_s_r3_1.c new file mode 100644 index 00000000..71cb139d --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r3_1/grd_s_r3_1.c @@ -0,0 +1,283 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r3_1_v[] = { +#include "assets/field/bg/grd_s_r3_1_v.inc" +}; + +extern Gfx grd_s_r3_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r3_1_v[206], 16, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 7, 0, 6, // tri1 + 0, 2, 6, // tri2 + 1, 8, 3 // tri3 + ), + gsSPNTriangles_5b(1, 9, 8, // tri0 + 9, 10, 8, // tri1 + 10, 11, 8, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 12, 14, 13, // tri1 + 14, 15, 13, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r3_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r3_1_v[176], 30, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 3, 8, // tri0 + 3, 4, 8, // tri1 + 9, 10, 11, // tri2 + 12, 9, 11 // tri3 + ), + gsSPNTriangles_5b(1, 12, 13, // tri0 + 9, 14, 10, // tri1 + 14, 15, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(20, 17, 21, // tri0 + 22, 20, 23, // tri1 + 24, 22, 25, // tri2 + 26, 24, 27 // tri3 + ), + gsSPNTriangles_5b(28, 26, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r3_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 4, 8, 7, // tri1 + 4, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(5, 11, 6, // tri0 + 11, 12, 6, // tri1 + 11, 13, 12, // tri2 + 0, 2, 14 // tri3 + ), + gsSPNTriangles_5b(2, 15, 14, // tri0 + 16, 17, 18, // tri1 + 19, 20, 16, // tri2 + 18, 0, 14 // tri3 + ), + gsSPNTriangles_5b(3, 21, 2, // tri0 + 3, 22, 21, // tri1 + 22, 23, 21, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(25, 27, 26, // tri0 + 27, 28, 26, // tri1 + 27, 29, 28, // tri2 + 24, 30, 25 // tri3 + ), + gsSPNTriangles_5b(24, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r3_1_v[32], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 3, 5 // tri2 + ), + gsSPNTriangles_5b(3, 6, 5, // tri0 + 3, 1, 6, // tri1 + 7, 8, 9, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 13, 14, 12, // tri1 + 13, 15, 14, // tri2 + 13, 16, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 17, 18, 15, // tri1 + 19, 20, 21, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b(19, 23, 20, // tri0 + 23, 24, 20, // tri1 + 22, 25, 21, // tri2 + 25, 26, 21 // tri3 + ), + gsSPNTriangles_5b(25, 27, 26, // tri0 + 28, 26, 29, // tri1 + 28, 4, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r3_1_v[62], 10, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r3_1_v[72], 31, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 2 // tri2 + ), + gsSPNTriangles_5b(6, 8, 7, // tri0 + 8, 9, 7, // tri1 + 8, 10, 9, // tri2 + 5, 11, 12 // tri3 + ), + gsSPNTriangles_5b(13, 12, 11, // tri0 + 14, 13, 11, // tri1 + 15, 16, 14, // tri2 + 10, 17, 15 // tri3 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 21, 18, 22, // tri1 + 19, 23, 24, // tri2 + 23, 25, 26 // tri3 + ), + gsSPNTriangles_5b(27, 28, 29, // tri0 + 28, 21, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r3_1_v[103], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 7, 10, 9, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(10, 13, 12, // tri0 + 13, 14, 12, // tri1 + 13, 15, 14, // tri2 + 13, 16, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 16, 18, 17, // tri1 + 16, 19, 18, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(20, 23, 21, // tri0 + 21, 24, 22, // tri1 + 21, 25, 24, // tri2 + 25, 26, 24 // tri3 + ), + gsSPNTriangles_5b(26, 27, 24, // tri0 + 26, 28, 27, // tri1 + 28, 29, 27, // tri2 + 29, 30, 27 // tri3 + ), + gsSPNTriangles_5b(29, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r3_1_v[135], 11, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 9, 10, 7, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r3_1_v[146], 30, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(4, 9, 10, // tri0 + 11, 12, 13, // tri1 + 14, 11, 15, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(12, 16, 19, // tri0 + 20, 21, 22, // tri1 + 21, 14, 23, // tri2 + 24, 3, 25 // tri3 + ), + gsSPNTriangles_5b(26, 27, 28, // tri0 + 1, 24, 29, // tri1 + 26, 6, 27, // tri2 + 9, 26, 28 // tri3 + ), + gsSPNTriangles_5b(24, 25, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r3_1/grd_s_r3_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r3_1/grd_s_r3_1_evw_anime.c new file mode 100644 index 00000000..b6e63e34 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r3_1/grd_s_r3_1_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r3_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r3_1_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_r3_1_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_r3_2/grd_s_r3_2.c b/src/data/field/bg/acre/grd_s_r3_2/grd_s_r3_2.c new file mode 100644 index 00000000..ee38348b --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r3_2/grd_s_r3_2.c @@ -0,0 +1,248 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r3_2_v[] = { +#include "assets/field/bg/grd_s_r3_2_v.inc" +}; + +extern Gfx grd_s_r3_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r3_2_v[186], 13, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(0, 5, 4, // tri0 + 6, 7, 8, // tri1 + 7, 4, 8, // tri2 + 4, 5, 8 // tri3 + ), + gsSPNTriangles_5b(6, 9, 7, // tri0 + 9, 10, 7, // tri1 + 9, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r3_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r3_2_v[170], 16, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 8, 4, 10, // tri1 + 4, 6, 10, // tri2 + 11, 3, 12 // tri3 + ), + gsSPNTriangles_5b(1, 13, 14, // tri0 + 5, 11, 15, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r3_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 3, 6, 5, // tri1 + 6, 7, 5, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 9, 10, 7, // tri1 + 9, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 11, 14, 13, // tri1 + 14, 15, 13, // tri2 + 15, 16, 13 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 19, 20, 17, // tri1 + 17, 21, 18, // tri2 + 22, 18, 21 // tri3 + ), + gsSPNTriangles_5b(21, 23, 22, // tri0 + 23, 24, 22, // tri1 + 24, 25, 22, // tri2 + 25, 26, 22 // tri3 + ), + gsSPNTriangles_5b(25, 27, 26, // tri0 + 25, 28, 27, // tri1 + 29, 30, 27, // tri2 + 28, 29, 27 // tri3 + ), + gsSPNTriangles_5b(29, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r3_2_v[32], 6, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r3_2_v[38], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 7, 9, 10, // tri1 + 9, 11, 12, // tri2 + 11, 13, 14 // tri3 + ), + gsSPNTriangles_5b(13, 15, 14, // tri0 + 16, 17, 18, // tri1 + 16, 18, 19, // tri2 + 20, 16, 19 // tri3 + ), + gsSPNTriangles_5b(2, 20, 21, // tri0 + 2, 21, 0, // tri1 + 22, 1, 23, // tri2 + 24, 22, 25 // tri3 + ), + gsSPNTriangles_5b(26, 24, 27, // tri0 + 26, 27, 28, // tri1 + 29, 26, 28, // tri2 + 29, 28, 30 // tri3 + ), + gsSPVertex(&grd_s_r3_2_v[69], 24, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 4, 0, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 5, 9, // tri1 + 10, 11, 12, // tri2 + 11, 13, 14 // tri3 + ), + gsSPNTriangles_5b(13, 15, 16, // tri0 + 15, 17, 18, // tri1 + 17, 19, 18, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(20, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r3_2_v[93], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 5, 11, 6, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(13, 15, 14, // tri0 + 16, 17, 3, // tri1 + 17, 18, 3, // tri2 + 5, 7, 19 // tri3 + ), + gsSPNTriangles_5b(7, 20, 19, // tri0 + 12, 20, 13, // tri1 + 21, 22, 23, // tri2 + 21, 24, 22 // tri3 + ), + gsSPNTriangles_5b(24, 25, 26, // tri0 + 25, 27, 26, // tri1 + 25, 28, 27, // tri2 + 28, 29, 30 // tri3 + ), + gsSPVertex(&grd_s_r3_2_v[124], 30, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b(3, 6, 5, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(1, 4, 2, // tri0 + 11, 12, 13, // tri1 + 14, 15, 16, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(0, 2, 12, // tri0 + 19, 20, 21, // tri1 + 22, 23, 24, // tri2 + 23, 25, 24 // tri3 + ), + gsSPNTriangles_5b(24, 25, 26, // tri0 + 26, 27, 28, // tri1 + 27, 29, 28, // tri2 + 26, 25, 27 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r3_2_v[154], 16, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 1, 10, 11, // tri1 + 8, 3, 12, // tri2 + 13, 7, 14 // tri3 + ), + gsSPNTriangles_5b(5, 13, 15, // tri0 + 13, 14, 15, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r3_2/grd_s_r3_2_evw_anime.c b/src/data/field/bg/acre/grd_s_r3_2/grd_s_r3_2_evw_anime.c new file mode 100644 index 00000000..9fc7a614 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r3_2/grd_s_r3_2_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r3_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r3_2_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_r3_2_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_r3_3/grd_s_r3_3.c b/src/data/field/bg/acre/grd_s_r3_3/grd_s_r3_3.c new file mode 100644 index 00000000..b22ea0ac --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r3_3/grd_s_r3_3.c @@ -0,0 +1,269 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r3_3_v[] = { +#include "assets/field/bg/grd_s_r3_3_v.inc" +}; + +extern Gfx grd_s_r3_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r3_3_v[188], 13, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 6, 3, 8, // tri2 + 3, 4, 8 // tri3 + ), + gsSPNTriangles_5b(2, 9, 0, // tri0 + 2, 10, 9, // tri1 + 10, 11, 9, // tri2 + 11, 12, 9 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r3_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r3_3_v[177], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r3_3_v[0], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 6, 0, 2, // tri1 + 6, 7, 0, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(6, 9, 8, // tri0 + 6, 10, 9, // tri1 + 10, 11, 9, // tri2 + 10, 5, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 14, // tri0 + 13, 15, 14, // tri1 + 12, 16, 13, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(18, 20, 19, // tri0 + 21, 22, 23, // tri1 + 22, 24, 23, // tri2 + 25, 23, 24 // tri3 + ), + gsSPNTriangles_5b(15, 26, 27, // tri0 + 26, 28, 27, // tri1 + 15, 27, 14, // tri2 + 1, 29, 4 // tri3 + ), + gsSPNTriangles_5b(1, 30, 29, // tri0 + 30, 31, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r3_3_v[32], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 10, 11, 9 // tri3 + ), + gsSPNTriangles_5b(9, 12, 7, // tri0 + 11, 12, 9, // tri1 + 10, 13, 11, // tri2 + 13, 14, 11 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 15, 18, 16, // tri1 + 15, 19, 18, // tri2 + 7, 12, 20 // tri3 + ), + gsSPNTriangles_5b(12, 21, 20, // tri0 + 21, 22, 20, // tri1 + 21, 23, 22, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(24, 27, 25, // tri0 + 28, 23, 21, // tri1 + 28, 29, 23, // tri2 + 28, 30, 29 // tri3 + ), + gsSPNTriangles_5b(29, 31, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r3_3_v[64], 6, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r3_3_v[70], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 4, 8, // tri0 + 5, 9, 10, // tri1 + 9, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(14, 7, 16, // tri0 + 17, 18, 19, // tri1 + 17, 20, 21, // tri2 + 22, 21, 20 // tri3 + ), + gsSPNTriangles_5b(23, 22, 20, // tri0 + 24, 25, 23, // tri1 + 26, 27, 24, // tri2 + 28, 29, 26 // tri3 + ), + gsSPNTriangles_5b(28, 30, 29, // tri0 + 28, 31, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r3_3_v[102], 23, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 5 // tri2 + ), + gsSPNTriangles_5b(3, 7, 4, // tri0 + 8, 9, 10, // tri1 + 11, 12, 13, // tri2 + 11, 14, 12 // tri3 + ), + gsSPNTriangles_5b(9, 13, 10, // tri0 + 15, 16, 17, // tri1 + 7, 18, 19, // tri2 + 18, 8, 20 // tri3 + ), + gsSPNTriangles_5b(14, 21, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r3_3_v[125], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 5, 8, 6, // tri1 + 8, 9, 6, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b(10, 11, 9, // tri0 + 10, 12, 11, // tri1 + 4, 13, 7, // tri2 + 2, 14, 15 // tri3 + ), + gsSPNTriangles_5b(14, 16, 15, // tri0 + 16, 17, 15, // tri1 + 16, 18, 17, // tri2 + 2, 3, 14 // tri3 + ), + gsSPNTriangles_5b(19, 7, 13, // tri0 + 19, 13, 20, // tri1 + 21, 19, 20, // tri2 + 22, 21, 20 // tri3 + ), + gsSPNTriangles_5b(22, 20, 23, // tri0 + 24, 22, 23, // tri1 + 24, 23, 25, // tri2 + 26, 24, 25 // tri3 + ), + gsSPNTriangles_5b(26, 25, 27, // tri0 + 28, 26, 27, // tri1 + 1, 0, 29, // tri2 + 30, 1, 29 // tri3 + ), + gsSPNTriangles_5b(30, 29, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r3_3_v[157], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b(5, 3, 4, // tri0 + 5, 4, 6, // tri1 + 5, 6, 7, // tri2 + 8, 5, 7 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r3_3_v[166], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 8, 3, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r3_3/grd_s_r3_3_evw_anime.c b/src/data/field/bg/acre/grd_s_r3_3/grd_s_r3_3_evw_anime.c new file mode 100644 index 00000000..8650703e --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r3_3/grd_s_r3_3_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r3_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r3_3_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_r3_3_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_r3_4/grd_s_r3_4.c b/src/data/field/bg/acre/grd_s_r3_4/grd_s_r3_4.c new file mode 100644 index 00000000..ecbf9e61 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r3_4/grd_s_r3_4.c @@ -0,0 +1,248 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r3_4_v[] = { +#include "assets/field/bg/grd_s_r3_4_v.inc" +}; + +extern Gfx grd_s_r3_4_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r3_4_v[173], 16, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 3, 2 // tri2 + ), + gsSPNTriangles_5b(4, 2, 5, // tri0 + 6, 7, 8, // tri1 + 9, 6, 8, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(10, 12, 13, // tri0 + 14, 15, 10, // tri1 + 14, 10, 13, // tri2 + 5, 7, 6 // tri3 + ), + gsSPNTriangles_5b(4, 5, 6, // tri0 + 11, 9, 8, // tri1 + 11, 8, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r3_4_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r3_4_v[160], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r3_4_v[0], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 4, 6, // tri0 + 4, 3, 6, // tri1 + 1, 7, 3, // tri2 + 1, 8, 7 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 9, 11, // tri1 + 7, 13, 3, // tri2 + 13, 14, 3 // tri3 + ), + gsSPNTriangles_5b(15, 16, 12, // tri0 + 17, 18, 19, // tri1 + 18, 20, 19, // tri2 + 18, 21, 20 // tri3 + ), + gsSPNTriangles_5b(21, 22, 20, // tri0 + 21, 23, 22, // tri1 + 21, 24, 23, // tri2 + 25, 26, 24 // tri3 + ), + gsSPNTriangles_5b(25, 27, 26, // tri0 + 25, 28, 27, // tri1 + 28, 29, 27, // tri2 + 29, 30, 27 // tri3 + ), + gsSPNTriangles_5b(30, 31, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r3_4_v[32], 26, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 8, 10, 9, // tri1 + 8, 11, 10, // tri2 + 12, 13, 11 // tri3 + ), + gsSPNTriangles_5b(11, 14, 10, // tri0 + 8, 12, 11, // tri1 + 7, 15, 16, // tri2 + 9, 15, 7 // tri3 + ), + gsSPNTriangles_5b(17, 18, 13, // tri0 + 19, 20, 21, // tri1 + 20, 22, 21, // tri2 + 20, 23, 22 // tri3 + ), + gsSPNTriangles_5b(24, 25, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r3_4_v[58], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 8, 6, 10, // tri1 + 11, 12, 13, // tri2 + 11, 14, 15 // tri3 + ), + gsSPNTriangles_5b(16, 15, 14, // tri0 + 17, 16, 14, // tri1 + 18, 19, 17, // tri2 + 20, 21, 18 // tri3 + ), + gsSPNTriangles_5b(22, 23, 20, // tri0 + 22, 24, 23, // tri1 + 22, 25, 24, // tri2 + 25, 26, 27 // tri3 + ), + gsSPNTriangles_5b(28, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r3_4_v[89], 17, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 6, 3 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 13, 12, 11, // tri2 + 5, 7, 14 // tri3 + ), + gsSPNTriangles_5b(5, 14, 6, // tri0 + 13, 15, 16, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r3_4_v[106], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r3_4_v[119], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 4, 6, // tri0 + 8, 7, 6, // tri1 + 8, 6, 9, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(11, 8, 10, // tri0 + 11, 10, 12, // tri1 + 11, 12, 13, // tri2 + 14, 11, 13 // tri3 + ), + gsSPNTriangles_5b(14, 13, 15, // tri0 + 14, 15, 16, // tri1 + 17, 14, 16, // tri2 + 17, 16, 18 // tri3 + ), + gsSPNTriangles_5b(19, 17, 18, // tri0 + 19, 18, 20, // tri1 + 21, 22, 19, // tri2 + 21, 19, 20 // tri3 + ), + gsSPNTriangles_5b(23, 24, 0, // tri0 + 25, 23, 0, // tri1 + 2, 25, 0, // tri2 + 26, 1, 3 // tri3 + ), + gsSPNTriangles_5b(26, 3, 27, // tri0 + 28, 26, 27, // tri1 + 29, 28, 27, // tri2 + 29, 27, 30 // tri3 + ), + gsSPNTriangles_5b(31, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r3_4_v[151], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b(4, 3, 5, // tri0 + 6, 4, 5, // tri1 + 7, 6, 5, // tri2 + 8, 7, 5 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r3_4/grd_s_r3_4_evw_anime.c b/src/data/field/bg/acre/grd_s_r3_4/grd_s_r3_4_evw_anime.c new file mode 100644 index 00000000..d0ef5386 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r3_4/grd_s_r3_4_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r3_4_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r3_4_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_r3_4_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_r3_b_1/grd_s_r3_b_1.c b/src/data/field/bg/acre/grd_s_r3_b_1/grd_s_r3_b_1.c new file mode 100644 index 00000000..17bdfe93 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r3_b_1/grd_s_r3_b_1.c @@ -0,0 +1,304 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_1_pal_dummy[]; +extern u8 bridge_1_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r3_b_1_v[] = { +#include "assets/field/bg/grd_s_r3_b_1_v.inc" +}; + +extern Gfx grd_s_r3_b_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r3_b_1_v[219], 20, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 5, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 9, 12, 11, // tri1 + 12, 13, 11, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 15, 0, 13, // tri1 + 15, 16, 0, // tri2 + 0, 16, 1 // tri3 + ), + gsSPNTriangles_5b(3, 17, 2, // tri0 + 18, 19, 17, // tri1 + 17, 3, 18, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r3_b_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r3_b_1_v[192], 15, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 5, 1 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 2, 8, // tri1 + 11, 9, 12, // tri2 + 13, 12, 14 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_1_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_1_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&grd_s_r3_b_1_v[207], 12, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b(0, 2, 5, // tri0 + 1, 6, 3, // tri1 + 6, 7, 3, // tri2 + 5, 2, 8 // tri3 + ), + gsSPNTriangles_5b(2, 3, 8, // tri0 + 3, 9, 8, // tri1 + 3, 7, 9, // tri2 + 10, 0, 4 // tri3 + ), + gsSPNTriangles_5b(10, 1, 0, // tri0 + 10, 11, 1, // tri1 + 11, 6, 1, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r3_b_1_v[0], 15, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 7, 4, // tri0 + 9, 10, 11, // tri1 + 12, 13, 10, // tri2 + 14, 11, 6 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r3_b_1_v[15], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 0, 5, // tri0 + 7, 6, 8, // tri1 + 6, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 7, 4, 6, // tri1 + 12, 13, 14, // tri2 + 13, 15, 14 // tri3 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 17, 19, 18, // tri1 + 19, 15, 18, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(21, 23, 22, // tri0 + 23, 24, 22, // tri1 + 25, 16, 18, // tri2 + 15, 13, 18 // tri3 + ), + gsSPNTriangles_5b(26, 12, 27, // tri0 + 12, 14, 27, // tri1 + 28, 29, 30, // tri2 + 28, 31, 29 // tri3 + ), + gsSPVertex(&grd_s_r3_b_1_v[47], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(7, 3, 8, // tri0 + 9, 10, 11, // tri1 + 9, 12, 10, // tri2 + 12, 13, 10 // tri3 + ), + gsSPNTriangles_5b(12, 14, 13, // tri0 + 14, 15, 13, // tri1 + 15, 16, 13, // tri2 + 17, 18, 0 // tri3 + ), + gsSPNTriangles_5b(17, 19, 18, // tri0 + 20, 21, 22, // tri1 + 23, 24, 22, // tri2 + 25, 26, 20 // tri3 + ), + gsSPNTriangles_5b(25, 27, 26, // tri0 + 28, 29, 30, // tri1 + 29, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r3_b_1_v[79], 11, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b(5, 6, 4, // tri0 + 6, 7, 4, // tri1 + 6, 8, 7, // tri2 + 8, 9, 7 // tri3 + ), + gsSPNTriangles_5b(9, 10, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r3_b_1_v[90], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 4 // tri2 + ), + gsSPNTriangles_5b(7, 8, 6, // tri0 + 9, 10, 8, // tri1 + 11, 12, 13, // tri2 + 14, 11, 15 // tri3 + ), + gsSPNTriangles_5b(16, 14, 17, // tri0 + 18, 16, 17, // tri1 + 18, 17, 19, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b(21, 22, 20, // tri0 + 23, 24, 22, // tri1 + 25, 26, 24, // tri2 + 27, 28, 26 // tri3 + ), + gsSPNTriangles_5b(28, 29, 26, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r3_b_1_v[120], 15, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 4 // tri2 + ), + gsSPNTriangles_5b(7, 8, 6, // tri0 + 8, 9, 10, // tri1 + 10, 9, 11, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(12, 14, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r3_b_1_v[135], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 4, 6, 8, // tri1 + 10, 11, 5, // tri2 + 12, 11, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 12, // tri0 + 16, 17, 15, // tri1 + 18, 9, 19, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(19, 21, 22, // tri0 + 18, 19, 22, // tri1 + 23, 9, 18, // tri2 + 9, 23, 24 // tri3 + ), + gsSPNTriangles_5b(7, 9, 24, // tri0 + 4, 8, 7, // tri1 + 10, 5, 4, // tri2 + 25, 11, 10 // tri3 + ), + gsSPNTriangles_5b(13, 11, 25, // tri0 + 12, 13, 26, // tri1 + 14, 12, 26, // tri2 + 15, 14, 27 // tri3 + ), + gsSPNTriangles_5b(15, 27, 16, // tri0 + 17, 16, 28, // tri1 + 29, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r3_b_1_v[167], 25, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 4, // tri0 + 8, 6, 9, // tri1 + 4, 6, 8, // tri2 + 10, 8, 9 // tri3 + ), + gsSPNTriangles_5b(10, 9, 11, // tri0 + 12, 10, 11, // tri1 + 12, 11, 13, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(17, 14, 16, // tri0 + 17, 16, 18, // tri1 + 17, 18, 19, // tri2 + 20, 1, 0 // tri3 + ), + gsSPNTriangles_5b(21, 0, 3, // tri0 + 21, 3, 22, // tri1 + 22, 23, 24, // tri2 + 19, 18, 1 // tri3 + ), + gsSPNTriangles_5b(20, 19, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r3_b_1/grd_s_r3_b_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r3_b_1/grd_s_r3_b_1_evw_anime.c new file mode 100644 index 00000000..cbb1f616 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r3_b_1/grd_s_r3_b_1_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r3_b_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r3_b_1_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_r3_b_1_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_r3_b_2/grd_s_r3_b_2.c b/src/data/field/bg/acre/grd_s_r3_b_2/grd_s_r3_b_2.c new file mode 100644 index 00000000..cee0fdb0 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r3_b_2/grd_s_r3_b_2.c @@ -0,0 +1,346 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_2_pal_dummy[]; +extern u8 bridge_2_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r3_b_2_v[] = { +#include "assets/field/bg/grd_s_r3_b_2_v.inc" +}; + +extern Gfx grd_s_r3_b_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r3_b_2_v[266], 19, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 8, 10, 9, // tri1 + 8, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 13, 14, 12, // tri1 + 13, 15, 14, // tri2 + 13, 16, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 17, 18, 15, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r3_b_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r3_b_2_v[211], 17, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 3, 8, // tri0 + 3, 4, 8, // tri1 + 9, 10, 11, // tri2 + 12, 9, 11 // tri3 + ), + gsSPNTriangles_5b(1, 12, 13, // tri0 + 9, 14, 10, // tri1 + 14, 15, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_2_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_2_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r3_b_2_v[228], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b(2, 1, 4, // tri0 + 1, 6, 4, // tri1 + 6, 7, 4, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 12, 10, 13, // tri1 + 12, 8, 10, // tri2 + 14, 8, 12 // tri3 + ), + gsSPNTriangles_5b(14, 15, 8, // tri0 + 16, 17, 18, // tri1 + 16, 19, 17, // tri2 + 18, 20, 21 // tri3 + ), + gsSPNTriangles_5b(18, 17, 20, // tri0 + 17, 22, 20, // tri1 + 22, 23, 20, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(25, 27, 26, // tri0 + 28, 26, 29, // tri1 + 28, 24, 26, // tri2 + 30, 24, 28 // tri3 + ), + gsSPNTriangles_5b(30, 31, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r3_b_2_v[260], 6, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 2, 5 // tri2 + ), + gsSPNTriangles_5b(4, 0, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r3_b_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 8, 9, 6, // tri2 + 9, 10, 6 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 12, 14, 13, // tri1 + 14, 15, 13, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 18, 19, 16, // tri1 + 19, 20, 16, // tri2 + 20, 17, 16 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 21, 24, 22, // tri1 + 24, 11, 22, // tri2 + 24, 12, 11 // tri3 + ), + gsSPNTriangles_5b(25, 26, 27, // tri0 + 25, 28, 26, // tri1 + 25, 29, 28, // tri2 + 26, 30, 27 // tri3 + ), + gsSPNTriangles_5b(26, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r3_b_2_v[32], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 13, 14, 11, // tri1 + 10, 15, 12, // tri2 + 15, 16, 12 // tri3 + ), + gsSPNTriangles_5b(17, 18, 14, // tri0 + 17, 19, 18, // tri1 + 19, 20, 18, // tri2 + 20, 21, 18 // tri3 + ), + gsSPNTriangles_5b(20, 22, 21, // tri0 + 22, 23, 21, // tri1 + 9, 24, 10, // tri2 + 25, 0, 2 // tri3 + ), + gsSPNTriangles_5b(3, 26, 27, // tri0 + 26, 4, 27, // tri1 + 28, 29, 30, // tri2 + 29, 31, 30 // tri3 + ), + gsSPVertex(&grd_s_r3_b_2_v[64], 8, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r3_b_2_v[72], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 0, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 1, // tri0 + 6, 7, 8, // tri1 + 9, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(13, 9, 14, // tri0 + 7, 15, 16, // tri1 + 15, 12, 17, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 24, 25, 26, // tri1 + 27, 28, 25, // tri2 + 27, 29, 28 // tri3 + ), + gsSPNTriangles_5b(30, 4, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r3_b_2_v[104], 21, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 5, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 11, 8, 12, // tri1 + 9, 13, 14, // tri2 + 13, 15, 16 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 18, 11, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r3_b_2_v[125], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 8, 11, 9, // tri2 + 11, 12, 9 // tri3 + ), + gsSPNTriangles_5b(1, 13, 3, // tri0 + 14, 3, 15, // tri1 + 3, 13, 15, // tri2 + 2, 16, 0 // tri3 + ), + gsSPNTriangles_5b(16, 17, 0, // tri0 + 16, 18, 17, // tri1 + 19, 10, 20, // tri2 + 19, 8, 10 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 21, 24, 22, // tri1 + 24, 25, 22, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b(27, 28, 29, // tri0 + 28, 15, 29, // tri1 + 30, 21, 31, // tri2 + 21, 23, 31 // tri3 + ), + gsSPVertex(&grd_s_r3_b_2_v[157], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 10, 11, 12, // tri1 + 10, 13, 14, // tri2 + 15, 10, 12 // tri3 + ), + gsSPNTriangles_5b(10, 14, 11, // tri0 + 13, 16, 14, // tri1 + 13, 17, 16, // tri2 + 17, 18, 16 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 20, 22, 21, // tri1 + 23, 24, 25, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b(24, 27, 26, // tri0 + 28, 29, 30, // tri1 + 29, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r3_b_2_v[189], 5, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r3_b_2_v[194], 17, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(4, 9, 10, // tri0 + 11, 3, 12, // tri1 + 13, 14, 15, // tri2 + 1, 11, 16 // tri3 + ), + gsSPNTriangles_5b(13, 6, 14, // tri0 + 9, 13, 15, // tri1 + 11, 12, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r3_b_2/grd_s_r3_b_2_evw_anime.c b/src/data/field/bg/acre/grd_s_r3_b_2/grd_s_r3_b_2_evw_anime.c new file mode 100644 index 00000000..d4122e66 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r3_b_2/grd_s_r3_b_2_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r3_b_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r3_b_2_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_r3_b_2_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_r3_b_3/grd_s_r3_b_3.c b/src/data/field/bg/acre/grd_s_r3_b_3/grd_s_r3_b_3.c new file mode 100644 index 00000000..2c2d80a6 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r3_b_3/grd_s_r3_b_3.c @@ -0,0 +1,325 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_1_pal_dummy[]; +extern u8 bridge_1_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r3_b_3_v[] = { +#include "assets/field/bg/grd_s_r3_b_3_v.inc" +}; + +extern Gfx grd_s_r3_b_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r3_b_3_v[251], 21, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 3, 6, 5, // tri1 + 6, 7, 5, // tri2 + 7, 8, 5 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 10, 11, 8, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 13, 14, 11, // tri1 + 13, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 17, 18, 16, // tri1 + 17, 19, 18, // tri2 + 17, 20, 19 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r3_b_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r3_b_3_v[224], 13, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 8, 5, 9, // tri1 + 10, 11, 12, // tri2 + 11, 7, 12 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_1_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_1_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&grd_s_r3_b_3_v[237], 14, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 4, 1, 0 // tri2 + ), + gsSPNTriangles_5b(1, 5, 2, // tri0 + 5, 6, 2, // tri1 + 7, 8, 9, // tri2 + 7, 9, 10 // tri3 + ), + gsSPNTriangles_5b(11, 10, 12, // tri0 + 11, 12, 13, // tri1 + 7, 10, 11, // tri2 + 2, 6, 7 // tri3 + ), + gsSPNTriangles_5b(6, 8, 7, // tri0 + 0, 2, 11, // tri1 + 2, 7, 11, // tri2 + 3, 0, 13 // tri3 + ), + gsSPNTriangles_5b(0, 11, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r3_b_3_v[0], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 0, 5, // tri0 + 0, 2, 5, // tri1 + 7, 8, 0, // tri2 + 8, 9, 0 // tri3 + ), + gsSPNTriangles_5b(10, 11, 12, // tri0 + 11, 13, 12, // tri1 + 11, 14, 13, // tri2 + 14, 15, 13 // tri3 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 16, 19, 17, // tri1 + 16, 20, 19, // tri2 + 20, 21, 19 // tri3 + ), + gsSPNTriangles_5b(21, 22, 19, // tri0 + 21, 23, 22, // tri1 + 24, 25, 26, // tri2 + 24, 27, 25 // tri3 + ), + gsSPNTriangles_5b(27, 28, 25, // tri0 + 23, 29, 22, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r3_b_3_v[30], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 0 // tri2 + ), + gsSPNTriangles_5b(5, 1, 0, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(7, 11, 9, // tri0 + 7, 12, 11, // tri1 + 12, 13, 11, // tri2 + 13, 14, 11 // tri3 + ), + gsSPNTriangles_5b(12, 15, 13, // tri0 + 16, 17, 18, // tri1 + 19, 20, 16, // tri2 + 19, 21, 20 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 25, 26, 27, // tri1 + 28, 29, 27, // tri2 + 30, 29, 28 // tri3 + ), + gsSPNTriangles_5b(31, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r3_b_3_v[62], 16, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b(0, 4, 5, // tri0 + 6, 7, 8, // tri1 + 9, 6, 8, // tri2 + 10, 11, 7 // tri3 + ), + gsSPNTriangles_5b(6, 10, 7, // tri0 + 12, 13, 14, // tri1 + 13, 15, 14, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r3_b_3_v[78], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 8, 10, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 6, // tri0 + 5, 14, 12, // tri1 + 0, 15, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(20, 21, 22, // tri0 + 18, 23, 19, // tri1 + 24, 25, 26, // tri2 + 18, 27, 23 // tri3 + ), + gsSPNTriangles_5b(28, 29, 30, // tri0 + 20, 22, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r3_b_3_v[110], 32, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 9, 12, 10, // tri1 + 12, 13, 10, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(17, 18, 13, // tri0 + 19, 5, 18, // tri1 + 20, 21, 1, // tri2 + 22, 23, 21 // tri3 + ), + gsSPNTriangles_5b(24, 25, 26, // tri0 + 27, 24, 28, // tri1 + 25, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r3_b_3_v[141], 8, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r3_b_3_v[149], 13, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 3, 9, 10, // tri1 + 9, 11, 10, // tri2 + 11, 4, 12 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r3_b_3_v[162], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 8, 9, 7, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b(10, 11, 9, // tri0 + 12, 13, 14, // tri1 + 13, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 17, 18, 16, // tri1 + 12, 19, 13, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(21, 18, 22, // tri0 + 18, 17, 22, // tri1 + 12, 23, 19, // tri2 + 23, 24, 19 // tri3 + ), + gsSPNTriangles_5b(23, 25, 24, // tri0 + 25, 26, 24, // tri1 + 25, 27, 26, // tri2 + 25, 28, 27 // tri3 + ), + gsSPNTriangles_5b(28, 29, 27, // tri0 + 28, 30, 29, // tri1 + 30, 31, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r3_b_3_v[194], 30, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 7, 8, 9, // tri2 + 7, 10, 8 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 12, 14, 13, // tri1 + 14, 15, 13, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20, // tri2 + 19, 22, 21 // tri3 + ), + gsSPNTriangles_5b(22, 23, 21, // tri0 + 23, 24, 21, // tri1 + 23, 25, 24, // tri2 + 25, 26, 24 // tri3 + ), + gsSPNTriangles_5b(25, 27, 26, // tri0 + 27, 28, 26, // tri1 + 27, 29, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r3_b_3/grd_s_r3_b_3_evw_anime.c b/src/data/field/bg/acre/grd_s_r3_b_3/grd_s_r3_b_3_evw_anime.c new file mode 100644 index 00000000..97d932e6 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r3_b_3/grd_s_r3_b_3_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r3_b_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r3_b_3_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_r3_b_3_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_r3_p_1/grd_s_r3_p_1.c b/src/data/field/bg/acre/grd_s_r3_p_1/grd_s_r3_p_1.c new file mode 100644 index 00000000..ed1648ed --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r3_p_1/grd_s_r3_p_1.c @@ -0,0 +1,358 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_2_pal_dummy[]; +extern u8 bridge_2_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r3_p_1_v[] = { +#include "assets/field/bg/grd_s_r3_p_1_v.inc" +}; + +extern Gfx grd_s_r3_p_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r3_p_1_v[292], 19, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 4, // tri0 + 5, 4, 7, // tri1 + 8, 5, 7, // tri2 + 9, 8, 10 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 13, 9, // tri1 + 12, 9, 11, // tri2 + 14, 6, 5 // tri3 + ), + gsSPNTriangles_5b(15, 14, 5, // tri0 + 8, 7, 10, // tri1 + 7, 16, 10, // tri2 + 8, 17, 15 // tri3 + ), + gsSPNTriangles_5b(5, 8, 15, // tri0 + 18, 16, 7, // tri1 + 18, 7, 4, // tri2 + 3, 18, 4 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r3_p_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_2_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_2_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r3_p_1_v[254], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b(2, 3, 4, // tri0 + 3, 6, 4, // tri1 + 6, 7, 4, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 12, 10, 13, // tri1 + 12, 8, 10, // tri2 + 14, 15, 12 // tri3 + ), + gsSPNTriangles_5b(15, 8, 12, // tri0 + 16, 17, 18, // tri1 + 17, 19, 18, // tri2 + 18, 20, 21 // tri3 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 19, 22, 20, // tri1 + 22, 23, 20, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(25, 27, 26, // tri0 + 28, 26, 29, // tri1 + 28, 24, 26, // tri2 + 30, 31, 28 // tri3 + ), + gsSPNTriangles_5b(31, 24, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r3_p_1_v[286], 6, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 2, 5 // tri2 + ), + gsSPNTriangles_5b(4, 0, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r3_p_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 7, 5, // tri1 + 6, 9, 4, // tri2 + 9, 10, 4 // tri3 + ), + gsSPNTriangles_5b(10, 11, 4, // tri0 + 12, 13, 6, // tri1 + 9, 6, 13, // tri2 + 3, 14, 2 // tri3 + ), + gsSPNTriangles_5b(14, 15, 2, // tri0 + 2, 16, 0, // tri1 + 15, 17, 2, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(18, 21, 19, // tri0 + 22, 23, 24, // tri1 + 25, 26, 27, // tri2 + 26, 28, 27 // tri3 + ), + gsSPNTriangles_5b(1, 29, 3, // tri0 + 1, 30, 29, // tri1 + 31, 23, 8, // tri2 + 23, 7, 8 // tri3 + ), + gsSPVertex(&grd_s_r3_p_1_v[32], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 2, 8, 0 // tri3 + ), + gsSPNTriangles_5b(2, 9, 8, // tri0 + 10, 11, 12, // tri1 + 13, 14, 15, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(17, 19, 18, // tri0 + 20, 21, 22, // tri1 + 23, 24, 25, // tri2 + 26, 0, 27 // tri3 + ), + gsSPNTriangles_5b(0, 28, 27, // tri0 + 0, 8, 28, // tri1 + 29, 26, 24, // tri2 + 26, 27, 24 // tri3 + ), + gsSPNTriangles_5b(19, 30, 18, // tri0 + 19, 14, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r3_p_1_v[63], 14, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 9, 10, 11, // tri1 + 12, 13, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r3_p_1_v[77], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 13, 14, 12, // tri1 + 15, 16, 17, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 22, 19, 23, // tri1 + 24, 22, 25, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b(20, 26, 29, // tri0 + 27, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r3_p_1_v[109], 25, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 6, // tri0 + 11, 12, 13, // tri1 + 14, 15, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 22, 23, 24, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r3_p_1_v[134], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 3, 8, 4, // tri1 + 1, 9, 10, // tri2 + 10, 2, 1 // tri3 + ), + gsSPNTriangles_5b(10, 11, 2, // tri0 + 12, 9, 13, // tri1 + 9, 1, 13, // tri2 + 1, 0, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 15, 17, 16, // tri1 + 17, 18, 16, // tri2 + 17, 19, 18 // tri3 + ), + gsSPNTriangles_5b(20, 21, 18, // tri0 + 19, 20, 18, // tri1 + 22, 21, 20, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b(26, 27, 28, // tri0 + 26, 29, 27, // tri1 + 27, 30, 28, // tri2 + 31, 23, 25 // tri3 + ), + gsSPVertex(&grd_s_r3_p_1_v[166], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 5 // tri2 + ), + gsSPNTriangles_5b(7, 3, 5, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(9, 12, 14, // tri0 + 9, 15, 12, // tri1 + 15, 16, 17, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b(18, 19, 17, // tri0 + 11, 20, 10, // tri1 + 1, 6, 21, // tri2 + 6, 22, 21 // tri3 + ), + gsSPNTriangles_5b(22, 23, 21, // tri0 + 24, 0, 25, // tri1 + 0, 26, 25, // tri2 + 27, 28, 29 // tri3 + ), + gsSPNTriangles_5b(28, 30, 29, // tri0 + 28, 31, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r3_p_1_v[198], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 4, 3, // tri0 + 6, 7, 3, // tri1 + 7, 5, 3, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(7, 11, 10, // tri0 + 11, 8, 10, // tri1 + 11, 12, 13, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b(11, 15, 12, // tri0 + 15, 16, 12, // tri1 + 15, 17, 16, // tri2 + 16, 14, 12 // tri3 + ), + gsSPNTriangles_5b(17, 18, 16, // tri0 + 17, 19, 18, // tri1 + 19, 20, 18, // tri2 + 20, 21, 18 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 25, 26, 27, // tri1 + 25, 28, 26, // tri2 + 28, 29, 26 // tri3 + ), + gsSPVertex(&grd_s_r3_p_1_v[228], 26, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 7, 8, 5, // tri1 + 7, 9, 8, // tri2 + 7, 0, 9 // tri3 + ), + gsSPNTriangles_5b(0, 3, 9, // tri0 + 10, 11, 12, // tri1 + 11, 13, 12, // tri2 + 14, 13, 15 // tri3 + ), + gsSPNTriangles_5b(13, 16, 12, // tri0 + 17, 14, 15, // tri1 + 14, 18, 13, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(20, 22, 21, // tri0 + 22, 18, 21, // tri1 + 19, 23, 20, // tri2 + 23, 22, 20 // tri3 + ), + gsSPNTriangles_5b(23, 24, 22, // tri0 + 23, 25, 24, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r3_p_1/grd_s_r3_p_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r3_p_1/grd_s_r3_p_1_evw_anime.c new file mode 100644 index 00000000..735387ce --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r3_p_1/grd_s_r3_p_1_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r3_p_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r3_p_1_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_r3_p_1_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_r4_1/grd_s_r4_1.c b/src/data/field/bg/acre/grd_s_r4_1/grd_s_r4_1.c new file mode 100644 index 00000000..2b16912e --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r4_1/grd_s_r4_1.c @@ -0,0 +1,249 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r4_1_v[] = { +#include "assets/field/bg/grd_s_r4_1_v.inc" +}; + +extern Gfx grd_s_r4_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r4_1_v[189], 13, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(4, 5, 0, // tri0 + 6, 7, 1, // tri1 + 7, 8, 1, // tri2 + 8, 9, 1 // tri3 + ), + gsSPNTriangles_5b(9, 3, 1, // tri0 + 4, 10, 5, // tri1 + 10, 11, 5, // tri2 + 10, 12, 11 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r4_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r4_1_v[172], 17, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 3, 8, // tri0 + 3, 4, 8, // tri1 + 9, 10, 11, // tri2 + 12, 9, 11 // tri3 + ), + gsSPNTriangles_5b(1, 12, 13, // tri0 + 9, 14, 10, // tri1 + 14, 15, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r4_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 4, 7, // tri0 + 7, 0, 2, // tri1 + 8, 1, 9, // tri2 + 0, 9, 1 // tri3 + ), + gsSPNTriangles_5b(10, 11, 3, // tri0 + 3, 11, 12, // tri1 + 13, 12, 11, // tri2 + 14, 12, 13 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 16, 15, 14, // tri1 + 17, 15, 16, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(19, 21, 20, // tri0 + 22, 8, 21, // tri1 + 8, 23, 21, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(25, 27, 26, // tri0 + 25, 28, 27, // tri1 + 25, 29, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r4_1_v[30], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 5, 9, // tri1 + 10, 9, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 17, 16, 18, // tri1 + 12, 19, 20, // tri2 + 20, 13, 12 // tri3 + ), + gsSPNTriangles_5b(20, 21, 13, // tri0 + 22, 23, 24, // tri1 + 23, 25, 24, // tri2 + 23, 26, 27 // tri3 + ), + gsSPNTriangles_5b(26, 28, 27, // tri0 + 28, 29, 6, // tri1 + 29, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r4_1_v[62], 13, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(3, 9, 4, // tri0 + 10, 11, 12, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r4_1_v[75], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 8, 6, 10, // tri1 + 11, 12, 13, // tri2 + 14, 11, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 19, 20, 21, // tri1 + 22, 23, 20, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(25, 14, 26, // tri0 + 12, 19, 21, // tri1 + 16, 27, 17, // tri2 + 24, 26, 28 // tri3 + ), + gsSPNTriangles_5b(27, 29, 28, // tri0 + 29, 24, 28, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r4_1_v[105], 10, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 8, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r4_1_v[115], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 1, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 7, 8, 5 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 10, 11, 8, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 13, 16, 14, // tri1 + 13, 17, 16, // tri2 + 13, 18, 17 // tri3 + ), + gsSPNTriangles_5b(18, 19, 17, // tri0 + 18, 20, 19, // tri1 + 20, 21, 19, // tri2 + 21, 22, 19 // tri3 + ), + gsSPNTriangles_5b(21, 23, 22, // tri0 + 21, 24, 23, // tri1 + 21, 25, 24, // tri2 + 25, 26, 24 // tri3 + ), + gsSPNTriangles_5b(25, 27, 26, // tri0 + 27, 28, 26, // tri1 + 29, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r4_1_v[147], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 1, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r4_1_v[155], 17, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(4, 9, 10, // tri0 + 11, 3, 12, // tri1 + 13, 14, 15, // tri2 + 1, 11, 16 // tri3 + ), + gsSPNTriangles_5b(13, 6, 14, // tri0 + 9, 13, 15, // tri1 + 11, 12, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r4_1/grd_s_r4_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r4_1/grd_s_r4_1_evw_anime.c new file mode 100644 index 00000000..957b2c76 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r4_1/grd_s_r4_1_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r4_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r4_1_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_r4_1_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_r4_2/grd_s_r4_2.c b/src/data/field/bg/acre/grd_s_r4_2/grd_s_r4_2.c new file mode 100644 index 00000000..a475836d --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r4_2/grd_s_r4_2.c @@ -0,0 +1,250 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r4_2_v[] = { +#include "assets/field/bg/grd_s_r4_2_v.inc" +}; + +extern Gfx grd_s_r4_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r4_2_v[194], 15, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 0, 6, 1, // tri1 + 4, 7, 5, // tri2 + 7, 8, 5 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 12, 14, 13, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r4_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r4_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 2, 4 // tri2 + ), + gsSPNTriangles_5b(3, 5, 2, // tri0 + 3, 6, 5, // tri1 + 0, 7, 1, // tri2 + 7, 8, 1 // tri3 + ), + gsSPNTriangles_5b(8, 9, 1, // tri0 + 8, 7, 10, // tri1 + 7, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(12, 13, 14, // tri0 + 13, 15, 14, // tri1 + 15, 16, 14, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(18, 20, 19, // tri0 + 21, 22, 23, // tri1 + 22, 24, 23, // tri2 + 22, 25, 24 // tri3 + ), + gsSPNTriangles_5b(26, 27, 28, // tri0 + 26, 29, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r4_2_v[30], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 8, 10, 9, // tri1 + 10, 11, 9, // tri2 + 12, 5, 0 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 14, 16, 15, // tri1 + 4, 3, 17, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(19, 2, 20, // tri0 + 1, 0, 5, // tri1 + 6, 1, 5, // tri2 + 6, 21, 22 // tri3 + ), + gsSPNTriangles_5b(21, 6, 4, // tri0 + 21, 4, 23, // tri1 + 11, 17, 3, // tri2 + 7, 24, 25 // tri3 + ), + gsSPNTriangles_5b(26, 27, 25, // tri0 + 27, 28, 29, // tri1 + 28, 23, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r4_2_v[60], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r4_2_v[64], 32, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 0, // tri0 + 8, 9, 6, // tri1 + 10, 11, 12, // tri2 + 10, 13, 11 // tri3 + ), + gsSPNTriangles_5b(10, 12, 8, // tri0 + 13, 14, 15, // tri1 + 16, 17, 18, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(22, 19, 23, // tri0 + 24, 25, 26, // tri1 + 27, 28, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r4_2_v[94], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 1 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 9, 0, 2, // tri1 + 10, 11, 12, // tri2 + 6, 8, 13 // tri3 + ), + gsSPNTriangles_5b(11, 6, 13, // tri0 + 14, 10, 15, // tri1 + 16, 17, 18, // tri2 + 19, 20, 17 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 19, 21, 20, // tri1 + 22, 24, 25, // tri2 + 24, 26, 27 // tri3 + ), + gsSPNTriangles_5b(28, 29, 30, // tri0 + 26, 30, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r4_2_v[125], 19, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 1, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 7, 9, 8, // tri1 + 10, 11, 12, // tri2 + 13, 10, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 15, 17, 9, // tri1 + 16, 13, 18, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r4_2_v[144], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 12, 14, 13, // tri1 + 14, 15, 13, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 16, 18, 17, // tri1 + 16, 19, 18, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b(19, 21, 20, // tri0 + 21, 22, 20, // tri1 + 21, 4, 22, // tri2 + 4, 23, 22 // tri3 + ), + gsSPNTriangles_5b(4, 6, 23, // tri0 + 24, 25, 26, // tri1 + 25, 27, 26, // tri2 + 27, 28, 26 // tri3 + ), + gsSPNTriangles_5b(27, 29, 28, // tri0 + 29, 30, 28, // tri1 + 30, 31, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r4_2_v[176], 18, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 11, 12, 10, // tri1 + 12, 13, 10, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r4_2/grd_s_r4_2_evw_anime.c b/src/data/field/bg/acre/grd_s_r4_2/grd_s_r4_2_evw_anime.c new file mode 100644 index 00000000..89e6f5f1 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r4_2/grd_s_r4_2_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r4_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r4_2_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_r4_2_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_r4_3/grd_s_r4_3.c b/src/data/field/bg/acre/grd_s_r4_3/grd_s_r4_3.c new file mode 100644 index 00000000..b70bb79e --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r4_3/grd_s_r4_3.c @@ -0,0 +1,253 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r4_3_v[] = { +#include "assets/field/bg/grd_s_r4_3_v.inc" +}; + +extern Gfx grd_s_r4_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r4_3_v[169], 16, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 9, 0, // tri1 + 9, 1, 0, // tri2 + 5, 2, 7 // tri3 + ), + gsSPNTriangles_5b(2, 3, 7, // tri0 + 6, 10, 4, // tri1 + 11, 12, 8, // tri2 + 12, 9, 8 // tri3 + ), + gsSPNTriangles_5b(10, 13, 4, // tri0 + 10, 14, 13, // tri1 + 10, 15, 14, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r4_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r4_3_v[158], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r4_3_v[0], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(6, 3, 1, // tri0 + 7, 6, 1, // tri1 + 8, 7, 1, // tri2 + 8, 1, 9 // tri3 + ), + gsSPNTriangles_5b(0, 9, 1, // tri0 + 10, 11, 12, // tri1 + 12, 13, 10, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 15, 17, 18, // tri1 + 17, 19, 20, // tri2 + 19, 21, 20 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 22, 24, 25, // tri1 + 24, 26, 25, // tri2 + 26, 27, 25 // tri3 + ), + gsSPNTriangles_5b(26, 28, 27, // tri0 + 29, 30, 28, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r4_3_v[31], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(4, 7, 6, // tri0 + 4, 8, 7, // tri1 + 3, 1, 4, // tri2 + 2, 9, 0 // tri3 + ), + gsSPNTriangles_5b(9, 10, 0, // tri0 + 11, 12, 13, // tri1 + 14, 11, 15, // tri2 + 16, 17, 14 // tri3 + ), + gsSPNTriangles_5b(16, 18, 17, // tri0 + 19, 20, 18, // tri1 + 21, 22, 20, // tri2 + 23, 22, 24 // tri3 + ), + gsSPNTriangles_5b(24, 25, 23, // tri0 + 26, 27, 28, // tri1 + 26, 29, 27, // tri2 + 30, 29, 31 // tri3 + ), + gsSPNTriangles_5b(30, 27, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r4_3_v[63], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 8, 9, 10, // tri1 + 5, 8, 11, // tri2 + 12, 2, 13 // tri3 + ), + gsSPNTriangles_5b(14, 12, 15, // tri0 + 16, 17, 18, // tri1 + 19, 20, 21, // tri2 + 0, 22, 3 // tri3 + ), + gsSPNTriangles_5b(0, 7, 22, // tri0 + 23, 18, 20, // tri1 + 16, 24, 17, // tri2 + 24, 14, 17 // tri3 + ), + gsSPNTriangles_5b(23, 25, 18, // tri0 + 25, 16, 18, // tri1 + 26, 27, 21, // tri2 + 27, 19, 21 // tri3 + ), + gsSPNTriangles_5b(28, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r4_3_v[94], 9, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 3, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r4_3_v[103], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 2, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 8, 10, 9, // tri1 + 8, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 13, 14, 12, // tri1 + 14, 13, 15, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 15, 18, 17, // tri1 + 18, 19, 17, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(21, 23, 22, // tri0 + 23, 24, 22, // tri1 + 23, 25, 24, // tri2 + 25, 26, 24 // tri3 + ), + gsSPNTriangles_5b(26, 27, 24, // tri0 + 26, 28, 27, // tri1 + 28, 29, 27, // tri2 + 29, 30, 27 // tri3 + ), + gsSPNTriangles_5b(29, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r4_3_v[135], 12, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 7, 8, 5 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r4_3_v[147], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 8, 3, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r4_3/grd_s_r4_3_evw_anime.c b/src/data/field/bg/acre/grd_s_r4_3/grd_s_r4_3_evw_anime.c new file mode 100644 index 00000000..604d0791 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r4_3/grd_s_r4_3_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r4_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r4_3_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_r4_3_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_r4_b_1/grd_s_r4_b_1.c b/src/data/field/bg/acre/grd_s_r4_b_1/grd_s_r4_b_1.c new file mode 100644 index 00000000..c7f538b8 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r4_b_1/grd_s_r4_b_1.c @@ -0,0 +1,237 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_1_pal_dummy[]; +extern u8 bridge_1_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r4_b_1_v[] = { +#include "assets/field/bg/grd_s_r4_b_1_v.inc" +}; + +extern Gfx grd_s_r4_b_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r4_b_1_v[152], 15, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 7, 8, 5, // tri1 + 7, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(10, 2, 8, // tri0 + 10, 0, 2, // tri1 + 1, 11, 3, // tri2 + 11, 12, 3 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 13, 14, 12, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r4_b_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r4_b_1_v[125], 15, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 5, 1 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 2, 8, // tri1 + 11, 9, 12, // tri2 + 13, 12, 14 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_1_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_1_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&grd_s_r4_b_1_v[140], 12, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b(0, 2, 5, // tri0 + 1, 6, 3, // tri1 + 6, 7, 3, // tri2 + 5, 2, 8 // tri3 + ), + gsSPNTriangles_5b(2, 3, 8, // tri0 + 3, 9, 8, // tri1 + 3, 7, 9, // tri2 + 10, 0, 4 // tri3 + ), + gsSPNTriangles_5b(10, 1, 0, // tri0 + 10, 11, 1, // tri1 + 11, 6, 1, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r4_b_1_v[0], 15, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 7, 4, // tri0 + 9, 10, 11, // tri1 + 12, 13, 10, // tri2 + 14, 11, 6 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r4_b_1_v[15], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 4 // tri2 + ), + gsSPNTriangles_5b(7, 8, 6, // tri0 + 9, 10, 8, // tri1 + 11, 12, 10, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 18, 15, 19, // tri1 + 20, 18, 21, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(22, 23, 20, // tri0 + 24, 25, 23, // tri1 + 26, 27, 25, // tri2 + 27, 28, 29 // tri3 + ), + gsSPNTriangles_5b(28, 30, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r4_b_1_v[46], 3, 0), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r4_b_1_v[49], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 4, 8, 5, // tri1 + 0, 2, 9, // tri2 + 2, 8, 9 // tri3 + ), + gsSPNTriangles_5b(10, 11, 12, // tri0 + 10, 13, 11, // tri1 + 10, 14, 13, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b(15, 18, 16, // tri0 + 15, 14, 18, // tri1 + 0, 19, 1, // tri2 + 19, 20, 1 // tri3 + ), + gsSPNTriangles_5b(20, 21, 1, // tri0 + 21, 22, 1, // tri1 + 23, 24, 25, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b(23, 27, 24, // tri0 + 27, 28, 24, // tri1 + 27, 29, 28, // tri2 + 29, 30, 28 // tri3 + ), + gsSPVertex(&grd_s_r4_b_1_v[80], 14, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(6, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 0, 12, 13 // tri3 + ), + gsSPNTriangles_5b(0, 2, 12, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r4_b_1_v[94], 31, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 2, 1 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 7, 9, 8, // tri1 + 6, 10, 7, // tri2 + 11, 5, 4 // tri3 + ), + gsSPNTriangles_5b(0, 12, 13, // tri0 + 1, 0, 13, // tri1 + 12, 14, 15, // tri2 + 11, 16, 5 // tri3 + ), + gsSPNTriangles_5b(4, 3, 2, // tri0 + 14, 12, 0, // tri1 + 14, 17, 15, // tri2 + 18, 19, 8 // tri3 + ), + gsSPNTriangles_5b(20, 6, 21, // tri0 + 22, 21, 23, // tri1 + 24, 23, 25, // tri2 + 26, 19, 18 // tri3 + ), + gsSPNTriangles_5b(27, 18, 8, // tri0 + 27, 8, 9, // tri1 + 10, 6, 20, // tri2 + 28, 20, 21 // tri3 + ), + gsSPNTriangles_5b(28, 21, 22, // tri0 + 29, 22, 23, // tri1 + 29, 23, 24, // tri2 + 30, 24, 25 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r4_b_1/grd_s_r4_b_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r4_b_1/grd_s_r4_b_1_evw_anime.c new file mode 100644 index 00000000..31233c4a --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r4_b_1/grd_s_r4_b_1_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r4_b_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r4_b_1_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_r4_b_1_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_r4_b_2/grd_s_r4_b_2.c b/src/data/field/bg/acre/grd_s_r4_b_2/grd_s_r4_b_2.c new file mode 100644 index 00000000..3b45b7d9 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r4_b_2/grd_s_r4_b_2.c @@ -0,0 +1,299 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_2_pal_dummy[]; +extern u8 bridge_2_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r4_b_2_v[] = { +#include "assets/field/bg/grd_s_r4_b_2_v.inc" +}; + +extern Gfx grd_s_r4_b_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r4_b_2_v[227], 11, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 7, 8, 5 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r4_b_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r4_b_2_v[176], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_2_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_2_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r4_b_2_v[189], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 10, 11, 6 // tri3 + ), + gsSPNTriangles_5b(11, 9, 6, // tri0 + 11, 12, 9, // tri1 + 11, 13, 12, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 18, 16, 19, // tri1 + 18, 14, 16, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(19, 16, 20, // tri0 + 22, 23, 24, // tri1 + 22, 25, 23, // tri2 + 26, 25, 22 // tri3 + ), + gsSPNTriangles_5b(26, 27, 25, // tri0 + 27, 28, 25, // tri1 + 28, 29, 25, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r4_b_2_v[219], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 2, 5 // tri2 + ), + gsSPNTriangles_5b(4, 0, 2, // tri0 + 5, 6, 7, // tri1 + 5, 2, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r4_b_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 0, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 6, 5, // tri1 + 9, 8, 5, // tri2 + 9, 3, 1 // tri3 + ), + gsSPNTriangles_5b(4, 10, 11, // tri0 + 12, 10, 4, // tri1 + 13, 14, 15, // tri2 + 13, 16, 14 // tri3 + ), + gsSPNTriangles_5b(14, 17, 15, // tri0 + 17, 18, 15, // tri1 + 18, 19, 15, // tri2 + 9, 1, 8 // tri3 + ), + gsSPNTriangles_5b(4, 11, 0, // tri0 + 20, 21, 22, // tri1 + 23, 24, 21, // tri2 + 23, 25, 24 // tri3 + ), + gsSPNTriangles_5b(26, 27, 25, // tri0 + 28, 29, 27, // tri1 + 30, 31, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r4_b_2_v[32], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 4 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 11, 7, // tri1 + 11, 8, 7, // tri2 + 11, 12, 8 // tri3 + ), + gsSPNTriangles_5b(13, 14, 0, // tri0 + 1, 0, 3, // tri1 + 15, 10, 16, // tri2 + 17, 18, 16 // tri3 + ), + gsSPNTriangles_5b(18, 17, 14, // tri0 + 19, 14, 17, // tri1 + 20, 21, 22, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b(22, 21, 23, // tri0 + 19, 25, 26, // tri1 + 3, 27, 4, // tri2 + 3, 26, 27 // tri3 + ), + gsSPNTriangles_5b(28, 29, 30, // tri0 + 31, 30, 23, // tri1 + 23, 30, 29, // tri2 + 25, 22, 24 // tri3 + ), + gsSPNTriangles_5b(24, 26, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r4_b_2_v[64], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 0, 10, // tri0 + 9, 10, 11, // tri1 + 4, 6, 8, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 15, 13, // tri0 + 16, 17, 18, // tri1 + 14, 16, 19, // tri2 + 20, 11, 21 // tri3 + ), + gsSPNTriangles_5b(17, 20, 21, // tri0 + 6, 13, 7, // tri1 + 22, 23, 24, // tri2 + 25, 26, 27 // tri3 + ), + gsSPNTriangles_5b(28, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r4_b_2_v[95], 31, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 2, 4 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 11, 8, 12, // tri2 + 13, 4, 14 // tri3 + ), + gsSPNTriangles_5b(15, 11, 16, // tri0 + 9, 13, 14, // tri1 + 15, 16, 17, // tri2 + 6, 18, 19 // tri3 + ), + gsSPNTriangles_5b(18, 15, 17, // tri0 + 20, 21, 22, // tri1 + 23, 24, 25, // tri2 + 26, 23, 27 // tri3 + ), + gsSPNTriangles_5b(21, 28, 29, // tri0 + 28, 26, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r4_b_2_v[126], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 10, 11, 8, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 12, 14, 13, // tri1 + 14, 15, 13, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 16, 18, 17, // tri1 + 16, 19, 18, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b(20, 21, 18, // tri0 + 20, 22, 21, // tri1 + 20, 23, 22, // tri2 + 1, 24, 3 // tri3 + ), + gsSPNTriangles_5b(24, 25, 3, // tri0 + 24, 26, 25, // tri1 + 26, 6, 25, // tri2 + 26, 4, 6 // tri3 + ), + gsSPNTriangles_5b(5, 27, 7, // tri0 + 27, 28, 7, // tri1 + 28, 29, 7, // tri2 + 28, 30, 29 // tri3 + ), + gsSPNTriangles_5b(30, 31, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r4_b_2_v[158], 5, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r4_b_2_v[163], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r4_b_2/grd_s_r4_b_2_evw_anime.c b/src/data/field/bg/acre/grd_s_r4_b_2/grd_s_r4_b_2_evw_anime.c new file mode 100644 index 00000000..bb719e46 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r4_b_2/grd_s_r4_b_2_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r4_b_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r4_b_2_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_r4_b_2_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_r4_p_1/grd_s_r4_p_1.c b/src/data/field/bg/acre/grd_s_r4_p_1/grd_s_r4_p_1.c new file mode 100644 index 00000000..7f2de782 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r4_p_1/grd_s_r4_p_1.c @@ -0,0 +1,404 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_2_pal_dummy[]; +extern u8 bridge_2_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r4_p_1_v[] = { +#include "assets/field/bg/grd_s_r4_p_1_v.inc" +}; + +extern Gfx grd_s_r4_p_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r4_p_1_v[265], 19, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 4, 9, 5, // tri2 + 9, 10, 5 // tri3 + ), + gsSPNTriangles_5b(10, 8, 5, // tri0 + 4, 2, 3, // tri1 + 0, 11, 1, // tri2 + 12, 1, 13 // tri3 + ), + gsSPNTriangles_5b(12, 14, 1, // tri0 + 1, 11, 13, // tri1 + 12, 4, 14, // tri2 + 12, 9, 4 // tri3 + ), + gsSPNTriangles_5b(2, 4, 6, // tri0 + 15, 16, 0, // tri1 + 16, 11, 0, // tri2 + 7, 17, 18 // tri3 + ), + gsSPNTriangles_5b(7, 8, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r4_p_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_2_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_2_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r4_p_1_v[223], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 1 // tri2 + ), + gsSPNTriangles_5b(4, 1, 0, // tri0 + 5, 6, 7, // tri1 + 5, 7, 1, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(8, 10, 11, // tri0 + 12, 8, 11, // tri1 + 12, 11, 13, // tri2 + 13, 11, 14 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 16, 17, 18, // tri1 + 16, 18, 19, // tri2 + 20, 21, 17 // tri3 + ), + gsSPNTriangles_5b(20, 17, 16, // tri0 + 21, 22, 23, // tri1 + 21, 23, 17, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(24, 26, 27, // tri0 + 28, 24, 27, // tri1 + 28, 27, 29, // tri2 + 29, 27, 30 // tri3 + ), + gsSPNTriangles_5b(29, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r4_p_1_v[255], 10, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 4, 7, // tri1 + 8, 7, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r4_p_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(2, 1, 6, // tri0 + 5, 6, 1, // tri1 + 7, 8, 9, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b(11, 7, 9, // tri0 + 11, 12, 7, // tri1 + 13, 14, 15, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(18, 17, 19, // tri0 + 20, 19, 17, // tri1 + 17, 21, 20, // tri2 + 17, 22, 21 // tri3 + ), + gsSPNTriangles_5b(0, 23, 24, // tri0 + 23, 25, 24, // tri1 + 23, 26, 25, // tri2 + 27, 28, 29 // tri3 + ), + gsSPNTriangles_5b(29, 30, 27, // tri0 + 29, 31, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r4_p_1_v[32], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 4 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 6, 10, 7, // tri1 + 11, 12, 13, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b(12, 15, 14, // tri0 + 15, 16, 17, // tri1 + 16, 18, 19, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b(20, 21, 19, // tri0 + 20, 22, 21, // tri1 + 22, 23, 24, // tri2 + 14, 15, 25 // tri3 + ), + gsSPNTriangles_5b(15, 17, 25, // tri0 + 25, 26, 27, // tri1 + 26, 17, 28, // tri2 + 26, 25, 17 // tri3 + ), + gsSPNTriangles_5b(29, 2, 1, // tri0 + 1, 9, 29, // tri1 + 8, 30, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r4_p_1_v[63], 3, 0), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r4_p_1_v[66], 32, 0), + gsSPNTrianglesInit_5b(33, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(0, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 5, 8, 9 // tri3 + ), + gsSPNTriangles_5b(5, 9, 6, // tri0 + 9, 7, 6, // tri1 + 8, 10, 11, // tri2 + 8, 11, 9 // tri3 + ), + gsSPNTriangles_5b(11, 7, 9, // tri0 + 10, 12, 13, // tri1 + 10, 13, 11, // tri2 + 13, 7, 11 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 12, 15, 16, // tri1 + 15, 17, 16, // tri2 + 14, 18, 19 // tri3 + ), + gsSPNTriangles_5b(14, 19, 15, // tri0 + 19, 17, 15, // tri1 + 18, 20, 21, // tri2 + 18, 21, 22 // tri3 + ), + gsSPNTriangles_5b(21, 23, 22, // tri0 + 20, 24, 21, // tri1 + 24, 25, 23, // tri2 + 24, 23, 21 // tri3 + ), + gsSPNTriangles_5b(20, 26, 27, // tri0 + 20, 27, 24, // tri1 + 27, 25, 24, // tri2 + 26, 28, 29 // tri3 + ), + gsSPNTriangles_5b(26, 29, 30, // tri0 + 29, 31, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r4_p_1_v[98], 32, 0), + gsSPNTrianglesInit_5b(40, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 2, 4, 3 // tri2 + ), + gsSPNTriangles_5b(1, 5, 6, // tri0 + 1, 6, 2, // tri1 + 6, 4, 2, // tri2 + 5, 7, 6 // tri3 + ), + gsSPNTriangles_5b(7, 8, 4, // tri0 + 7, 4, 6, // tri1 + 5, 9, 10, // tri2 + 5, 10, 7 // tri3 + ), + gsSPNTriangles_5b(10, 8, 7, // tri0 + 9, 11, 12, // tri1 + 9, 12, 10, // tri2 + 12, 8, 10 // tri3 + ), + gsSPNTriangles_5b(11, 13, 14, // tri0 + 11, 14, 12, // tri1 + 14, 8, 12, // tri2 + 13, 15, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 8, // tri0 + 15, 8, 14, // tri1 + 13, 17, 18, // tri2 + 13, 18, 15 // tri3 + ), + gsSPNTriangles_5b(18, 16, 15, // tri0 + 17, 19, 20, // tri1 + 17, 20, 18, // tri2 + 20, 16, 18 // tri3 + ), + gsSPNTriangles_5b(19, 21, 20, // tri0 + 21, 22, 16, // tri1 + 21, 16, 20, // tri2 + 19, 23, 24 // tri3 + ), + gsSPNTriangles_5b(19, 24, 21, // tri0 + 24, 22, 21, // tri1 + 23, 25, 24, // tri2 + 25, 22, 24 // tri3 + ), + gsSPNTriangles_5b(23, 26, 25, // tri0 + 26, 27, 25, // tri1 + 27, 28, 25, // tri2 + 27, 29, 28 // tri3 + ), + gsSPNTriangles_5b(29, 30, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r4_p_1_v[129], 32, 0), + gsSPNTrianglesInit_5b(38, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 7, 9, // tri1 + 8, 6, 7, // tri2 + 4, 10, 5 // tri3 + ), + gsSPNTriangles_5b(4, 11, 10, // tri0 + 12, 13, 14, // tri1 + 13, 15, 5, // tri2 + 13, 5, 14 // tri3 + ), + gsSPNTriangles_5b(11, 12, 14, // tri0 + 11, 14, 10, // tri1 + 14, 5, 10, // tri2 + 12, 16, 13 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 16, 15, 13, // tri1 + 12, 18, 19, // tri2 + 12, 19, 16 // tri3 + ), + gsSPNTriangles_5b(19, 17, 16, // tri0 + 18, 20, 19, // tri1 + 20, 21, 17, // tri2 + 20, 17, 19 // tri3 + ), + gsSPNTriangles_5b(18, 22, 20, // tri0 + 22, 23, 21, // tri1 + 22, 21, 20, // tri2 + 18, 24, 25 // tri3 + ), + gsSPNTriangles_5b(18, 25, 22, // tri0 + 25, 23, 22, // tri1 + 24, 26, 25, // tri2 + 26, 27, 23 // tri3 + ), + gsSPNTriangles_5b(26, 23, 25, // tri0 + 24, 28, 29, // tri1 + 24, 29, 26, // tri2 + 29, 27, 26 // tri3 + ), + gsSPNTriangles_5b(28, 30, 29, // tri0 + 30, 27, 29, // tri1 + 30, 31, 27, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r4_p_1_v[161], 5, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r4_p_1_v[166], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 8, 9, 10, // tri1 + 10, 11, 12, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 15, 18, 16, // tri1 + 19, 20, 21, // tri2 + 19, 22, 23 // tri3 + ), + gsSPNTriangles_5b(22, 24, 23, // tri0 + 25, 23, 24, // tri1 + 26, 25, 27, // tri2 + 25, 24, 27 // tri3 + ), + gsSPNTriangles_5b(28, 29, 30, // tri0 + 29, 26, 30, // tri1 + 17, 31, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r4_p_1_v[198], 25, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(7, 4, 8, // tri0 + 9, 10, 11, // tri1 + 12, 13, 14, // tri2 + 9, 15, 10 // tri3 + ), + gsSPNTriangles_5b(15, 12, 10, // tri0 + 16, 17, 11, // tri1 + 17, 18, 11, // tri2 + 16, 19, 17 // tri3 + ), + gsSPNTriangles_5b(18, 9, 11, // tri0 + 20, 21, 22, // tri1 + 21, 19, 23, // tri2 + 5, 20, 24 // tri3 + ), + gsSPNTriangles_5b(5, 24, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r4_p_1/grd_s_r4_p_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r4_p_1/grd_s_r4_p_1_evw_anime.c new file mode 100644 index 00000000..f57e5853 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r4_p_1/grd_s_r4_p_1_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r4_p_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r4_p_1_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_r4_p_1_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_r5_1/grd_s_r5_1.c b/src/data/field/bg/acre/grd_s_r5_1/grd_s_r5_1.c new file mode 100644 index 00000000..ee65bff3 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r5_1/grd_s_r5_1.c @@ -0,0 +1,269 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r5_1_v[] = { +#include "assets/field/bg/grd_s_r5_1_v.inc" +}; + +extern Gfx grd_s_r5_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r5_1_v[190], 22, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 7, 3, 8, // tri2 + 7, 2, 3 // tri3 + ), + gsSPNTriangles_5b(0, 9, 1, // tri0 + 1, 9, 10, // tri1 + 9, 11, 10, // tri2 + 10, 12, 13 // tri3 + ), + gsSPNTriangles_5b(12, 14, 13, // tri0 + 10, 15, 12, // tri1 + 13, 14, 16, // tri2 + 10, 11, 15 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 17, 20, 18, // tri1 + 18, 21, 19, // tri2 + 21, 16, 19 // tri3 + ), + gsSPNTriangles_5b(21, 13, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r5_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r5_1_v[177], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r5_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 9, 5, // tri1 + 9, 6, 5, // tri2 + 10, 11, 8 // tri3 + ), + gsSPNTriangles_5b(11, 9, 8, // tri0 + 11, 12, 13, // tri1 + 12, 11, 10, // tri2 + 6, 14, 7 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 18, 20, 21, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b(22, 24, 25, // tri0 + 26, 5, 7, // tri1 + 27, 24, 28, // tri2 + 27, 25, 24 // tri3 + ), + gsSPNTriangles_5b(22, 29, 23, // tri0 + 15, 15, 27, // tri1 + 27, 28, 15, // tri2 + 30, 18, 31 // tri3 + ), + gsSPNTriangles_5b(21, 31, 18, // tri0 + 19, 29, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r5_1_v[32], 27, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 8, 9, 7, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 10, 14, 11, // tri1 + 14, 15, 11, // tri2 + 16, 17, 15 // tri3 + ), + gsSPNTriangles_5b(16, 7, 17, // tri0 + 18, 13, 19, // tri1 + 12, 13, 20, // tri2 + 13, 18, 20 // tri3 + ), + gsSPNTriangles_5b(18, 21, 20, // tri0 + 21, 18, 22, // tri1 + 21, 22, 23, // tri2 + 24, 25, 26 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r5_1_v[59], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 6, 9, 7, // tri2 + 6, 10, 9 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 11, 14, 12, // tri1 + 12, 0, 13, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b(15, 18, 16, // tri0 + 18, 10, 16, // tri1 + 18, 9, 10, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(20, 22, 21, // tri0 + 19, 23, 20, // tri1 + 24, 25, 26, // tri2 + 25, 27, 26 // tri3 + ), + gsSPNTriangles_5b(27, 28, 26, // tri0 + 5, 27, 8, // tri1 + 5, 29, 27, // tri2 + 29, 28, 27 // tri3 + ), + gsSPNTriangles_5b(17, 30, 15, // tri0 + 17, 31, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r5_1_v[91], 27, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(8, 11, 9, // tri0 + 12, 8, 13, // tri1 + 8, 10, 13, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(15, 13, 16, // tri0 + 15, 12, 13, // tri1 + 17, 18, 16, // tri2 + 18, 14, 16 // tri3 + ), + gsSPNTriangles_5b(17, 19, 18, // tri0 + 20, 21, 22, // tri1 + 23, 24, 25, // tri2 + 26, 23, 25 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r5_1_v[118], 28, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b(6, 3, 5, // tri0 + 7, 8, 9, // tri1 + 10, 8, 7, // tri2 + 11, 10, 12 // tri3 + ), + gsSPNTriangles_5b(13, 14, 12, // tri0 + 15, 16, 17, // tri1 + 15, 18, 16, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(19, 17, 20, // tri0 + 22, 21, 23, // tri1 + 24, 23, 25, // tri2 + 26, 25, 27 // tri3 + ), + gsSPNTriangles_5b(26, 27, 9, // tri0 + 18, 15, 6, // tri1 + 6, 5, 18, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r5_1_v[146], 18, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 6, // tri0 + 7, 8, 9, // tri1 + 7, 10, 11, // tri2 + 12, 11, 10 // tri3 + ), + gsSPNTriangles_5b(13, 12, 14, // tri0 + 12, 10, 14, // tri1 + 15, 16, 13, // tri2 + 2, 17, 15 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r5_1_v[164], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 9, 0, 11, // tri1 + 1, 6, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r5_1/grd_s_r5_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r5_1/grd_s_r5_1_evw_anime.c new file mode 100644 index 00000000..e4369721 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r5_1/grd_s_r5_1_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r5_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r5_1_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_r5_1_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_r5_2/grd_s_r5_2.c b/src/data/field/bg/acre/grd_s_r5_2/grd_s_r5_2.c new file mode 100644 index 00000000..0f74a89c --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r5_2/grd_s_r5_2.c @@ -0,0 +1,291 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r5_2_v[] = { +#include "assets/field/bg/grd_s_r5_2_v.inc" +}; + +extern Gfx grd_s_r5_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r5_2_v[209], 19, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 10, 11, 8, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 13, 14, 11, // tri1 + 14, 15, 11, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 17, 18, 15, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r5_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r5_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 7, 3, 8, // tri1 + 9, 6, 10, // tri2 + 11, 9, 12 // tri3 + ), + gsSPNTriangles_5b(13, 11, 14, // tri0 + 1, 15, 16, // tri1 + 15, 17, 18, // tri2 + 9, 10, 12 // tri3 + ), + gsSPNTriangles_5b(1, 16, 2, // tri0 + 19, 20, 21, // tri1 + 20, 22, 23, // tri2 + 22, 24, 25 // tri3 + ), + gsSPNTriangles_5b(24, 26, 27, // tri0 + 26, 28, 29, // tri1 + 28, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r5_2_v[32], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 7, 9, 10, // tri1 + 11, 12, 13, // tri2 + 14, 15, 13 // tri3 + ), + gsSPNTriangles_5b(15, 16, 13, // tri0 + 17, 18, 19, // tri1 + 20, 21, 18, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 16, 25, 26, // tri1 + 23, 27, 24, // tri2 + 28, 29, 27 // tri3 + ), + gsSPNTriangles_5b(30, 31, 29, // tri0 + 11, 13, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r5_2_v[64], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(6, 2, 5, // tri0 + 2, 7, 5, // tri1 + 2, 1, 7, // tri2 + 0, 8, 1 // tri3 + ), + gsSPNTriangles_5b(0, 9, 8, // tri0 + 0, 10, 9, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(10, 13, 12, // tri0 + 13, 14, 12, // tri1 + 13, 15, 14, // tri2 + 13, 16, 15 // tri3 + ), + gsSPNTriangles_5b(13, 17, 16, // tri0 + 17, 18, 16, // tri1 + 17, 19, 18, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b(19, 21, 20, // tri0 + 21, 22, 20, // tri1 + 21, 23, 22, // tri2 + 21, 24, 23 // tri3 + ), + gsSPNTriangles_5b(25, 26, 27, // tri0 + 25, 28, 26, // tri1 + 28, 29, 26, // tri2 + 29, 30, 26 // tri3 + ), + gsSPNTriangles_5b(29, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r5_2_v[96], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(12, 13, 10, // tri0 + 12, 14, 13, // tri1 + 14, 15, 13, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(16, 19, 17, // tri0 + 19, 20, 17, // tri1 + 20, 21, 17, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b(22, 23, 21, // tri0 + 22, 24, 23, // tri1 + 24, 25, 23, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b(26, 27, 25, // tri0 + 26, 28, 27, // tri1 + 28, 29, 27, // tri2 + 28, 30, 29 // tri3 + ), + gsSPNTriangles_5b(30, 31, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r5_2_v[128], 7, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r5_2_v[135], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 8, 10, 9, // tri1 + 11, 12, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(5, 14, 3, // tri0 + 15, 16, 17, // tri1 + 16, 18, 2, // tri2 + 18, 0, 2 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 20, 22, 23, // tri1 + 22, 24, 23, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(25, 6, 27, // tri0 + 28, 29, 1, // tri1 + 29, 2, 1, // tri2 + 2, 29, 16 // tri3 + ), + gsSPNTriangles_5b(16, 29, 17, // tri0 + 15, 17, 30, // tri1 + 19, 21, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r5_2_v[167], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 4, 3, 5 // tri2 + ), + gsSPNTriangles_5b(2, 1, 3, // tri0 + 3, 6, 5, // tri1 + 5, 6, 7, // tri2 + 8, 7, 6 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 10, 12, 11, // tri1 + 11, 12, 13, // tri2 + 13, 12, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 14, // tri0 + 17, 15, 18, // tri1 + 15, 17, 16, // tri2 + 16, 17, 19 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 21, 20, 22, // tri1 + 23, 22, 20, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b(25, 26, 24, // tri0 + 27, 28, 25, // tri1 + 29, 30, 18, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r5_2_v[198], 11, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b(5, 4, 6, // tri0 + 3, 5, 2, // tri1 + 2, 7, 0, // tri2 + 7, 2, 8 // tri3 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 5, 6, 9, // tri1 + 9, 8, 5, // tri2 + 8, 2, 5 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r5_2/grd_s_r5_2_evw_anime.c b/src/data/field/bg/acre/grd_s_r5_2/grd_s_r5_2_evw_anime.c new file mode 100644 index 00000000..9d353afb --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r5_2/grd_s_r5_2_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r5_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r5_2_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_r5_2_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_r5_3/grd_s_r5_3.c b/src/data/field/bg/acre/grd_s_r5_3/grd_s_r5_3.c new file mode 100644 index 00000000..07922d94 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r5_3/grd_s_r5_3.c @@ -0,0 +1,269 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r5_3_v[] = { +#include "assets/field/bg/grd_s_r5_3_v.inc" +}; + +extern Gfx grd_s_r5_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r5_3_v[207], 17, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 3, 2 // tri2 + ), + gsSPNTriangles_5b(4, 2, 5, // tri0 + 4, 5, 6, // tri1 + 7, 4, 6, // tri2 + 7, 6, 8 // tri3 + ), + gsSPNTriangles_5b(9, 7, 8, // tri0 + 9, 8, 10, // tri1 + 9, 10, 11, // tri2 + 12, 9, 11 // tri3 + ), + gsSPNTriangles_5b(13, 12, 11, // tri0 + 13, 11, 14, // tri1 + 15, 16, 13, // tri2 + 15, 13, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r5_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r5_3_v[194], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 5, 9, // tri0 + 3, 8, 10, // tri1 + 11, 2, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r5_3_v[0], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 1, 5 // tri2 + ), + gsSPNTriangles_5b(4, 6, 1, // tri0 + 1, 0, 5, // tri1 + 7, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b(7, 11, 8, // tri0 + 11, 12, 8, // tri1 + 13, 14, 15, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(11, 17, 12, // tri0 + 17, 18, 12, // tri1 + 19, 9, 20, // tri2 + 9, 10, 20 // tri3 + ), + gsSPNTriangles_5b(19, 20, 16, // tri0 + 20, 15, 16, // tri1 + 15, 21, 13, // tri2 + 21, 18, 13 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 23, 25, 24, // tri1 + 22, 26, 23, // tri2 + 26, 27, 23 // tri3 + ), + gsSPNTriangles_5b(6, 28, 1, // tri0 + 28, 29, 1, // tri1 + 29, 25, 1, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r5_3_v[30], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(1, 5, 2, // tri0 + 1, 6, 5, // tri1 + 7, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b(8, 11, 10, // tri0 + 10, 12, 9, // tri1 + 10, 13, 12, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(13, 15, 14, // tri0 + 13, 16, 15, // tri1 + 13, 17, 16, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(18, 21, 19, // tri0 + 19, 22, 20, // tri1 + 19, 23, 22, // tri2 + 19, 24, 23 // tri3 + ), + gsSPNTriangles_5b(22, 25, 20, // tri0 + 25, 26, 20, // tri1 + 27, 28, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r5_3_v[60], 12, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 8, 7, // tri0 + 9, 10, 2, // tri1 + 11, 10, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r5_3_v[72], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 6, 8, 9, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(10, 14, 11, // tri0 + 15, 16, 17, // tri1 + 12, 15, 13, // tri2 + 16, 18, 19 // tri3 + ), + gsSPNTriangles_5b(18, 20, 21, // tri0 + 20, 22, 21, // tri1 + 23, 24, 25, // tri2 + 26, 23, 27 // tri3 + ), + gsSPNTriangles_5b(28, 29, 30, // tri0 + 28, 30, 22, // tri1 + 29, 26, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r5_3_v[104], 26, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 1, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(16, 13, 17, // tri0 + 18, 19, 20, // tri1 + 21, 18, 22, // tri2 + 14, 23, 24 // tri3 + ), + gsSPNTriangles_5b(23, 21, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r5_3_v[130], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(3, 5, 8, // tri0 + 9, 10, 11, // tri1 + 6, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r5_3_v[143], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 4, 8, 7, // tri1 + 8, 9, 7, // tri2 + 10, 6, 11 // tri3 + ), + gsSPNTriangles_5b(6, 5, 11, // tri0 + 12, 1, 13, // tri1 + 1, 14, 13, // tri2 + 14, 15, 13 // tri3 + ), + gsSPNTriangles_5b(16, 17, 11, // tri0 + 17, 10, 11, // tri1 + 16, 18, 17, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(20, 16, 21, // tri0 + 20, 18, 16, // tri1 + 22, 23, 24, // tri2 + 23, 25, 24 // tri3 + ), + gsSPNTriangles_5b(21, 26, 19, // tri0 + 26, 27, 19, // tri1 + 28, 29, 30, // tri2 + 29, 31, 30 // tri3 + ), + gsSPNTriangles_5b(31, 3, 30, // tri0 + 12, 2, 1, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r5_3_v[175], 19, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 16, 17, 7, // tri1 + 18, 16, 7, // tri2 + 5, 18, 7 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r5_3/grd_s_r5_3_evw_anime.c b/src/data/field/bg/acre/grd_s_r5_3/grd_s_r5_3_evw_anime.c new file mode 100644 index 00000000..36d42171 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r5_3/grd_s_r5_3_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r5_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r5_3_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_r5_3_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_r5_b_1/grd_s_r5_b_1.c b/src/data/field/bg/acre/grd_s_r5_b_1/grd_s_r5_b_1.c new file mode 100644 index 00000000..a011944b --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r5_b_1/grd_s_r5_b_1.c @@ -0,0 +1,316 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_1_pal_dummy[]; +extern u8 bridge_1_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r5_b_1_v[] = { +#include "assets/field/bg/grd_s_r5_b_1_v.inc" +}; + +extern Gfx grd_s_r5_b_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r5_b_1_v[226], 28, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(6, 7, 4, // tri0 + 5, 8, 6, // tri1 + 9, 10, 11, // tri2 + 12, 13, 10 // tri3 + ), + gsSPNTriangles_5b(10, 9, 12, // tri0 + 7, 14, 12, // tri1 + 9, 4, 7, // tri2 + 7, 12, 9 // tri3 + ), + gsSPNTriangles_5b(7, 15, 14, // tri0 + 15, 16, 14, // tri1 + 17, 16, 15, // tri2 + 18, 19, 17 // tri3 + ), + gsSPNTriangles_5b(15, 18, 17, // tri0 + 18, 20, 21, // tri1 + 20, 22, 21, // tri2 + 21, 19, 18 // tri3 + ), + gsSPNTriangles_5b(3, 22, 20, // tri0 + 1, 23, 2, // tri1 + 20, 0, 3, // tri2 + 1, 24, 23 // tri3 + ), + gsSPNTriangles_5b(24, 25, 26, // tri0 + 24, 26, 23, // tri1 + 1, 27, 24, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r5_b_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_1_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_1_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r5_b_1_v[199], 27, 0), + gsSPNTrianglesInit_5b(29, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 2, 7 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 9, 0, 2, // tri1 + 9, 2, 6, // tri2 + 8, 7, 5 // tri3 + ), + gsSPNTriangles_5b(8, 5, 10, // tri0 + 10, 5, 4, // tri1 + 10, 4, 11, // tri2 + 12, 3, 5 // tri3 + ), + gsSPNTriangles_5b(7, 12, 5, // tri0 + 2, 1, 12, // tri1 + 7, 2, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(14, 16, 15, // tri0 + 13, 15, 17, // tri1 + 15, 18, 17, // tri2 + 19, 17, 20 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 22, 13, 17, // tri1 + 22, 17, 19, // tri2 + 23, 24, 14 // tri3 + ), + gsSPNTriangles_5b(23, 14, 25, // tri0 + 25, 14, 13, // tri1 + 25, 13, 22, // tri2 + 18, 26, 20 // tri3 + ), + gsSPNTriangles_5b(18, 20, 17, // tri0 + 24, 16, 14, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r5_b_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 7, 5, 8, // tri1 + 5, 9, 8, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(13, 5, 14, // tri0 + 5, 15, 14, // tri1 + 15, 16, 14, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(18, 20, 19, // tri0 + 20, 21, 19, // tri1 + 20, 22, 21, // tri2 + 22, 23, 21 // tri3 + ), + gsSPNTriangles_5b(3, 24, 18, // tri0 + 17, 3, 18, // tri1 + 0, 2, 25, // tri2 + 3, 17, 26 // tri3 + ), + gsSPNTriangles_5b(16, 15, 27, // tri0 + 13, 28, 5, // tri1 + 28, 9, 5, // tri2 + 4, 15, 5 // tri3 + ), + gsSPNTriangles_5b(29, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r5_b_1_v[32], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 3, 2 // tri2 + ), + gsSPNTriangles_5b(5, 4, 2, // tri0 + 6, 7, 8, // tri1 + 6, 8, 9, // tri2 + 6, 9, 5 // tri3 + ), + gsSPNTriangles_5b(6, 5, 2, // tri0 + 10, 11, 12, // tri1 + 13, 10, 12, // tri2 + 14, 12, 15 // tri3 + ), + gsSPNTriangles_5b(12, 16, 15, // tri0 + 12, 17, 16, // tri1 + 17, 18, 16, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(19, 22, 20, // tri0 + 22, 23, 24, // tri1 + 23, 25, 24, // tri2 + 23, 26, 25 // tri3 + ), + gsSPNTriangles_5b(27, 28, 29, // tri0 + 28, 30, 29, // tri1 + 30, 26, 29, // tri2 + 31, 27, 29 // tri3 + ), + gsSPVertex(&grd_s_r5_b_1_v[64], 10, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b(4, 3, 2, // tri0 + 6, 7, 8, // tri1 + 9, 7, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r5_b_1_v[74], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 1, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 7, 9, 8, // tri1 + 10, 11, 12, // tri2 + 11, 3, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 17, 18, 15, // tri1 + 19, 20, 18, // tri2 + 21, 22, 20 // tri3 + ), + gsSPNTriangles_5b(23, 24, 25, // tri0 + 26, 25, 27, // tri1 + 28, 27, 29, // tri2 + 30, 29, 22 // tri3 + ), + gsSPNTriangles_5b(18, 17, 19, // tri0 + 27, 28, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r5_b_1_v[105], 3, 0), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r5_b_1_v[108], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 7, 8, 5, // tri1 + 9, 10, 11, // tri2 + 9, 4, 10 // tri3 + ), + gsSPNTriangles_5b(4, 6, 10, // tri0 + 12, 13, 14, // tri1 + 13, 15, 14, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(16, 19, 17, // tri0 + 2, 20, 3, // tri1 + 2, 21, 20, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b(25, 26, 27, // tri0 + 28, 29, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r5_b_1_v[139], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(5, 8, 6, // tri0 + 5, 9, 8, // tri1 + 10, 0, 2, // tri2 + 1, 0, 3 // tri3 + ), + gsSPNTriangles_5b(7, 11, 5, // tri0 + 12, 13, 9, // tri1 + 12, 14, 13, // tri2 + 9, 5, 12 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 18, 19, 16, // tri1 + 16, 15, 18, // tri2 + 20, 15, 17 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 24, 25, 22, // tri1 + 26, 27, 28, // tri2 + 28, 29, 26 // tri3 + ), + gsSPNTriangles_5b(30, 31, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r5_b_1_v[171], 28, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 9, 10, 11, // tri1 + 12, 13, 0, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(17, 18, 14, // tri0 + 17, 19, 20, // tri1 + 20, 18, 17, // tri2 + 18, 15, 14 // tri3 + ), + gsSPNTriangles_5b(15, 21, 16, // tri0 + 19, 22, 20, // tri1 + 23, 20, 22, // tri2 + 24, 25, 23 // tri3 + ), + gsSPNTriangles_5b(23, 25, 20, // tri0 + 26, 27, 24, // tri1 + 24, 27, 25, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r5_b_1/grd_s_r5_b_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r5_b_1/grd_s_r5_b_1_evw_anime.c new file mode 100644 index 00000000..b1a6f262 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r5_b_1/grd_s_r5_b_1_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r5_b_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r5_b_1_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_r5_b_1_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_r5_b_2/grd_s_r5_b_2.c b/src/data/field/bg/acre/grd_s_r5_b_2/grd_s_r5_b_2.c new file mode 100644 index 00000000..3a4b09e9 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r5_b_2/grd_s_r5_b_2.c @@ -0,0 +1,310 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_2_pal_dummy[]; +extern u8 bridge_2_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r5_b_2_v[] = { +#include "assets/field/bg/grd_s_r5_b_2_v.inc" +}; + +extern Gfx grd_s_r5_b_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r5_b_2_v[242], 13, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 6, 7, 8, // tri1 + 6, 1, 7, // tri2 + 1, 0, 7 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 10, 12, 11, // tri1 + 10, 8, 12, // tri2 + 10, 6, 8 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r5_b_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r5_b_2_v[187], 17, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 7, 9, // tri1 + 10, 11, 12, // tri2 + 13, 8, 14 // tri3 + ), + gsSPNTriangles_5b(2, 13, 15, // tri0 + 1, 16, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_2_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_2_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r5_b_2_v[204], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 1, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 10, 9, 6 // tri3 + ), + gsSPNTriangles_5b(10, 11, 9, // tri0 + 11, 12, 9, // tri1 + 12, 13, 9, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 18, 16, 19, // tri1 + 18, 14, 16, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(19, 16, 20, // tri0 + 22, 23, 24, // tri1 + 22, 25, 23, // tri2 + 26, 25, 22 // tri3 + ), + gsSPNTriangles_5b(26, 27, 25, // tri0 + 27, 28, 25, // tri1 + 28, 29, 25, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r5_b_2_v[234], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 2, 5 // tri2 + ), + gsSPNTriangles_5b(4, 0, 2, // tri0 + 5, 6, 7, // tri1 + 5, 2, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r5_b_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 4, 9, 5, // tri2 + 7, 10, 6 // tri3 + ), + gsSPNTriangles_5b(11, 10, 12, // tri0 + 12, 1, 13, // tri1 + 12, 10, 1, // tri2 + 11, 14, 10 // tri3 + ), + gsSPNTriangles_5b(14, 6, 10, // tri0 + 8, 5, 15, // tri1 + 2, 3, 16, // tri2 + 9, 17, 5 // tri3 + ), + gsSPNTriangles_5b(18, 17, 9, // tri0 + 19, 20, 18, // tri1 + 21, 22, 20, // tri2 + 23, 24, 22 // tri3 + ), + gsSPNTriangles_5b(23, 25, 24, // tri0 + 25, 26, 27, // tri1 + 28, 29, 30, // tri2 + 30, 31, 28 // tri3 + ), + gsSPVertex(&grd_s_r5_b_2_v[32], 27, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b(3, 6, 7, // tri0 + 3, 7, 1, // tri1 + 8, 9, 10, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(14, 12, 11, // tri0 + 14, 15, 12, // tri1 + 16, 14, 11, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(13, 20, 21, // tri0 + 21, 20, 22, // tri1 + 22, 23, 24, // tri2 + 25, 24, 26 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r5_b_2_v[59], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 4, 8, // tri0 + 3, 9, 10, // tri1 + 9, 7, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(13, 15, 14, // tri0 + 16, 17, 18, // tri1 + 17, 19, 20, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b(19, 23, 20, // tri0 + 24, 14, 22, // tri1 + 25, 26, 15, // tri2 + 25, 27, 26 // tri3 + ), + gsSPNTriangles_5b(28, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r5_b_2_v[90], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 10, 11, // tri1 + 12, 9, 11, // tri2 + 13, 2, 10 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 15, 17, 16, // tri1 + 16, 18, 19, // tri2 + 20, 21, 14 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 23, 20, 24, // tri1 + 25, 26, 27, // tri2 + 26, 22, 27 // tri3 + ), + gsSPNTriangles_5b(25, 28, 26, // tri0 + 25, 29, 28, // tri1 + 29, 30, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r5_b_2_v[121], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r5_b_2_v[125], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b(9, 13, 12, // tri0 + 13, 14, 12, // tri1 + 13, 15, 14, // tri2 + 13, 16, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 16, 18, 17, // tri1 + 16, 19, 18, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b(19, 21, 20, // tri0 + 22, 23, 24, // tri1 + 24, 25, 22, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b(26, 27, 25, // tri0 + 26, 28, 27, // tri1 + 28, 29, 27, // tri2 + 28, 30, 29 // tri3 + ), + gsSPNTriangles_5b(30, 31, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r5_b_2_v[157], 13, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 5, 6, 3, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 10, 11, 8, // tri2 + 11, 12, 8 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r5_b_2_v[170], 17, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 2, 8, 9, // tri1 + 0, 10, 11, // tri2 + 10, 12, 13 // tri3 + ), + gsSPNTriangles_5b(9, 14, 15, // tri0 + 12, 6, 16, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r5_b_2/grd_s_r5_b_2_evw_anime.c b/src/data/field/bg/acre/grd_s_r5_b_2/grd_s_r5_b_2_evw_anime.c new file mode 100644 index 00000000..4d9d82b0 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r5_b_2/grd_s_r5_b_2_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r5_b_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r5_b_2_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_r5_b_2_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_r5_p_1/grd_s_r5_p_1.c b/src/data/field/bg/acre/grd_s_r5_p_1/grd_s_r5_p_1.c new file mode 100644 index 00000000..0b857a44 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r5_p_1/grd_s_r5_p_1.c @@ -0,0 +1,348 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_2_pal_dummy[]; +extern u8 bridge_2_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r5_p_1_v[] = { +#include "assets/field/bg/grd_s_r5_p_1_v.inc" +}; + +extern Gfx grd_s_r5_p_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r5_p_1_v[255], 23, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 4, 1, // tri0 + 6, 7, 8, // tri1 + 9, 6, 8, // tri2 + 10, 11, 4 // tri3 + ), + gsSPNTriangles_5b(12, 10, 4, // tri0 + 8, 12, 4, // tri1 + 9, 8, 4, // tri2 + 13, 9, 4 // tri3 + ), + gsSPNTriangles_5b(4, 11, 14, // tri0 + 4, 14, 3, // tri1 + 0, 2, 15, // tri2 + 0, 15, 16 // tri3 + ), + gsSPNTriangles_5b(0, 16, 17, // tri0 + 0, 17, 18, // tri1 + 0, 18, 19, // tri2 + 20, 0, 19 // tri3 + ), + gsSPNTriangles_5b(21, 22, 20, // tri0 + 21, 20, 19, // tri1 + 13, 4, 5, // tri2 + 0, 20, 1 // tri3 + ), + gsSPNTriangles_5b(5, 1, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r5_p_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_2_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_2_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r5_p_1_v[211], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 1, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(10, 13, 11, // tri0 + 14, 15, 10, // tri1 + 15, 13, 10, // tri2 + 15, 16, 13 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19, // tri2 + 22, 18, 23 // tri3 + ), + gsSPNTriangles_5b(18, 20, 23, // tri0 + 23, 24, 25, // tri1 + 23, 20, 24, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b(26, 29, 27, // tri0 + 30, 31, 26, // tri1 + 31, 29, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r5_p_1_v[243], 12, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 8, 4, 9, // tri1 + 4, 6, 9, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b(9, 6, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r5_p_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 5, 8, 6, // tri1 + 0, 2, 9, // tri2 + 2, 10, 9 // tri3 + ), + gsSPNTriangles_5b(0, 11, 1, // tri0 + 12, 13, 14, // tri1 + 13, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b(16, 17, 14, // tri0 + 15, 18, 16, // tri1 + 19, 20, 21, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b(22, 23, 21, // tri0 + 24, 25, 26, // tri1 + 25, 27, 26, // tri2 + 26, 28, 24 // tri3 + ), + gsSPNTriangles_5b(24, 28, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r5_p_1_v[30], 32, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 7, 10, 9 // tri3 + ), + gsSPNTriangles_5b(10, 11, 9, // tri0 + 10, 12, 11, // tri1 + 11, 5, 9, // tri2 + 5, 11, 4 // tri3 + ), + gsSPNTriangles_5b(13, 14, 2, // tri0 + 13, 15, 14, // tri1 + 13, 16, 15, // tri2 + 13, 17, 16 // tri3 + ), + gsSPNTriangles_5b(17, 18, 16, // tri0 + 17, 19, 18, // tri1 + 19, 20, 18, // tri2 + 19, 12, 20 // tri3 + ), + gsSPNTriangles_5b(14, 21, 2, // tri0 + 21, 0, 2, // tri1 + 14, 22, 21, // tri2 + 22, 23, 21 // tri3 + ), + gsSPNTriangles_5b(23, 24, 21, // tri0 + 23, 25, 24, // tri1 + 26, 27, 28, // tri2 + 27, 29, 28 // tri3 + ), + gsSPVertex(&grd_s_r5_p_1_v[60], 5, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r5_p_1_v[65], 17, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 5, 4, 3 // tri2 + ), + gsSPNTriangles_5b(6, 5, 3, // tri0 + 7, 8, 6, // tri1 + 9, 10, 7, // tri2 + 11, 12, 9 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 11, 14, 13, // tri1 + 14, 15, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r5_p_1_v[82], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 6, 9, 7, // tri2 + 6, 10, 9 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 12, 14, 13, // tri1 + 12, 15, 14, // tri2 + 12, 16, 15 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 20, 19, 18, // tri1 + 20, 21, 19, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b(23, 25, 24, // tri0 + 24, 26, 22, // tri1 + 26, 27, 22, // tri2 + 24, 28, 29 // tri3 + ), + gsSPNTriangles_5b(24, 25, 28, // tri0 + 30, 26, 29, // tri1 + 26, 24, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r5_p_1_v[113], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 6, 7, 1, // tri1 + 7, 5, 1, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(3, 6, 1, // tri0 + 9, 10, 11, // tri1 + 12, 11, 13, // tri2 + 12, 9, 11 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 14, 17, 15, // tri1 + 18, 19, 16, // tri2 + 19, 14, 16 // tri3 + ), + gsSPNTriangles_5b(20, 21, 9, // tri0 + 21, 22, 9, // tri1 + 21, 23, 22, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(24, 27, 25, // tri0 + 27, 28, 25, // tri1 + 24, 26, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r5_p_1_v[143], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 6, // tri0 + 5, 7, 6, // tri1 + 8, 9, 10, // tri2 + 9, 11, 10 // tri3 + ), + gsSPNTriangles_5b(9, 12, 11, // tri0 + 13, 14, 15, // tri1 + 14, 16, 15, // tri2 + 16, 12, 15 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 18, 16, 19, // tri1 + 18, 20, 16, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b(22, 20, 23, // tri0 + 22, 24, 20, // tri1 + 25, 26, 27, // tri2 + 26, 28, 27 // tri3 + ), + gsSPNTriangles_5b(28, 29, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r5_p_1_v[173], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 8, 4, 7, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b(10, 8, 11, // tri0 + 10, 12, 8, // tri1 + 13, 14, 15, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(16, 12, 15, // tri0 + 17, 18, 19, // tri1 + 18, 20, 19, // tri2 + 20, 16, 19 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 22, 24, 23, // tri1 + 24, 25, 23, // tri2 + 25, 26, 23 // tri3 + ), + gsSPNTriangles_5b(27, 28, 29, // tri0 + 30, 27, 29, // tri1 + 30, 31, 27, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r5_p_1_v[205], 6, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r5_p_1/grd_s_r5_p_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r5_p_1/grd_s_r5_p_1_evw_anime.c new file mode 100644 index 00000000..6296aada --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r5_p_1/grd_s_r5_p_1_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r5_p_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r5_p_1_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_r5_p_1_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_r6_1/grd_s_r6_1.c b/src/data/field/bg/acre/grd_s_r6_1/grd_s_r6_1.c new file mode 100644 index 00000000..ce32487c --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r6_1/grd_s_r6_1.c @@ -0,0 +1,213 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r6_1_v[] = { +#include "assets/field/bg/grd_s_r6_1_v.inc" +}; + +extern Gfx grd_s_r6_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r6_1_v[160], 13, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 7, 8, 5, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r6_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r6_1_v[147], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r6_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 9, 10, 11, // tri2 + 9, 12, 10 // tri3 + ), + gsSPNTriangles_5b(12, 13, 10, // tri0 + 13, 14, 10, // tri1 + 15, 13, 12, // tri2 + 15, 16, 13 // tri3 + ), + gsSPNTriangles_5b(8, 17, 6, // tri0 + 5, 4, 18, // tri1 + 4, 19, 18, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(21, 23, 22, // tri0 + 20, 24, 21, // tri1 + 24, 25, 21, // tri2 + 25, 26, 21 // tri3 + ), + gsSPNTriangles_5b(8, 27, 28, // tri0 + 8, 7, 27, // tri1 + 28, 29, 30, // tri2 + 2, 30, 29 // tri3 + ), + gsSPNTriangles_5b(2, 1, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r6_1_v[31], 30, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 4, 3, // tri0 + 5, 3, 6, // tri1 + 6, 7, 5, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(11, 9, 12, // tri0 + 11, 13, 9, // tri1 + 14, 15, 16, // tri2 + 14, 17, 15 // tri3 + ), + gsSPNTriangles_5b(18, 17, 14, // tri0 + 18, 19, 17, // tri1 + 0, 2, 20, // tri2 + 18, 21, 22 // tri3 + ), + gsSPNTriangles_5b(23, 24, 25, // tri0 + 23, 26, 24, // tri1 + 26, 27, 24, // tri2 + 26, 28, 27 // tri3 + ), + gsSPNTriangles_5b(28, 29, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r6_1_v[61], 22, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(6, 7, 4, // tri0 + 5, 4, 8, // tri1 + 9, 10, 8, // tri2 + 0, 2, 10 // tri3 + ), + gsSPNTriangles_5b(9, 0, 10, // tri0 + 4, 9, 8, // tri1 + 11, 12, 13, // tri2 + 13, 14, 11 // tri3 + ), + gsSPNTriangles_5b(12, 15, 13, // tri0 + 15, 16, 13, // tri1 + 15, 17, 18, // tri2 + 18, 16, 15 // tri3 + ), + gsSPNTriangles_5b(17, 19, 18, // tri0 + 19, 20, 21, // tri1 + 19, 21, 18, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r6_1_v[83], 32, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 6, // tri0 + 11, 12, 9, // tri1 + 13, 14, 11, // tri2 + 5, 15, 13 // tri3 + ), + gsSPNTriangles_5b(16, 17, 2, // tri0 + 18, 19, 20, // tri1 + 21, 22, 18, // tri2 + 1, 23, 21 // tri3 + ), + gsSPNTriangles_5b(24, 25, 26, // tri0 + 1, 25, 24, // tri1 + 27, 1, 28, // tri2 + 29, 30, 31 // tri3 + ), + gsSPVertex(&grd_s_r6_1_v[115], 19, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 0, 2 // tri2 + ), + gsSPNTriangles_5b(6, 2, 7, // tri0 + 7, 8, 6, // tri1 + 9, 10, 11, // tri2 + 9, 12, 10 // tri3 + ), + gsSPNTriangles_5b(13, 14, 12, // tri0 + 15, 16, 14, // tri1 + 17, 18, 16, // tri2 + 8, 7, 18 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r6_1_v[134], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r6_1/grd_s_r6_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r6_1/grd_s_r6_1_evw_anime.c new file mode 100644 index 00000000..a2713fa1 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r6_1/grd_s_r6_1_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r6_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r6_1_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_r6_1_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_r6_2/grd_s_r6_2.c b/src/data/field/bg/acre/grd_s_r6_2/grd_s_r6_2.c new file mode 100644 index 00000000..45d92207 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r6_2/grd_s_r6_2.c @@ -0,0 +1,229 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r6_2_v[] = { +#include "assets/field/bg/grd_s_r6_2_v.inc" +}; + +extern Gfx grd_s_r6_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r6_2_v[169], 12, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(3, 6, 7, // tri0 + 3, 7, 4, // tri1 + 1, 4, 8, // tri2 + 2, 1, 8 // tri3 + ), + gsSPNTriangles_5b(0, 2, 9, // tri0 + 0, 9, 10, // tri1 + 10, 11, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r6_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r6_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(4, 7, 6, // tri0 + 8, 9, 10, // tri1 + 8, 11, 9, // tri2 + 9, 12, 10 // tri3 + ), + gsSPNTriangles_5b(9, 13, 12, // tri0 + 14, 15, 16, // tri1 + 15, 17, 16, // tri2 + 15, 18, 17 // tri3 + ), + gsSPNTriangles_5b(15, 19, 18, // tri0 + 15, 20, 19, // tri1 + 14, 21, 15, // tri2 + 21, 22, 15 // tri3 + ), + gsSPNTriangles_5b(22, 23, 15, // tri0 + 23, 20, 15, // tri1 + 24, 7, 25, // tri2 + 7, 26, 25 // tri3 + ), + gsSPNTriangles_5b(26, 27, 25, // tri0 + 24, 6, 7, // tri1 + 5, 28, 3, // tri2 + 29, 30, 31 // tri3 + ), + gsSPVertex(&grd_s_r6_2_v[32], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 5, // tri0 + 7, 8, 5, // tri1 + 8, 9, 5, // tri2 + 1, 10, 2 // tri3 + ), + gsSPNTriangles_5b(1, 11, 10, // tri0 + 12, 13, 14, // tri1 + 15, 16, 17, // tri2 + 18, 19, 17 // tri3 + ), + gsSPNTriangles_5b(19, 15, 17, // tri0 + 18, 20, 19, // tri1 + 21, 20, 18, // tri2 + 21, 22, 20 // tri3 + ), + gsSPNTriangles_5b(23, 21, 24, // tri0 + 23, 25, 21, // tri1 + 25, 22, 21, // tri2 + 1, 26, 11 // tri3 + ), + gsSPNTriangles_5b(26, 27, 11, // tri0 + 13, 12, 28, // tri1 + 12, 29, 28, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b(31, 28, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r6_2_v[64], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 1, 6, 4, // tri1 + 1, 7, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r6_2_v[72], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 6, 8, 9, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(10, 14, 11, // tri0 + 15, 16, 17, // tri1 + 12, 15, 13, // tri2 + 16, 18, 19 // tri3 + ), + gsSPNTriangles_5b(18, 20, 21, // tri0 + 20, 22, 21, // tri1 + 23, 24, 25, // tri2 + 26, 23, 27 // tri3 + ), + gsSPNTriangles_5b(28, 29, 30, // tri0 + 28, 30, 22, // tri1 + 29, 26, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r6_2_v[104], 30, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 5, 9, // tri0 + 1, 10, 11, // tri1 + 10, 8, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(16, 13, 17, // tri0 + 16, 17, 18, // tri1 + 16, 18, 19, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 23, 24, 25, // tri1 + 24, 26, 25, // tri2 + 27, 25, 26 // tri3 + ), + gsSPNTriangles_5b(27, 28, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r6_2_v[134], 32, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 4 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 0, 3, 1, // tri1 + 5, 7, 6, // tri2 + 8, 9, 7 // tri3 + ), + gsSPNTriangles_5b(5, 8, 7, // tri0 + 8, 10, 9, // tri1 + 11, 12, 10, // tri2 + 10, 8, 11 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 14, 15, 13, // tri1 + 13, 11, 14, // tri2 + 16, 17, 15 // tri3 + ), + gsSPNTriangles_5b(14, 16, 15, // tri0 + 18, 19, 20, // tri1 + 20, 21, 22, // tri2 + 21, 23, 24 // tri3 + ), + gsSPNTriangles_5b(22, 18, 20, // tri0 + 21, 24, 22, // tri1 + 23, 25, 26, // tri2 + 23, 26, 24 // tri3 + ), + gsSPNTriangles_5b(25, 27, 28, // tri0 + 25, 28, 26, // tri1 + 27, 29, 30, // tri2 + 27, 30, 28 // tri3 + ), + gsSPVertex(&grd_s_r6_2_v[165], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r6_2/grd_s_r6_2_evw_anime.c b/src/data/field/bg/acre/grd_s_r6_2/grd_s_r6_2_evw_anime.c new file mode 100644 index 00000000..2d2e1e3b --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r6_2/grd_s_r6_2_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r6_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r6_2_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_r6_2_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_r6_3/grd_s_r6_3.c b/src/data/field/bg/acre/grd_s_r6_3/grd_s_r6_3.c new file mode 100644 index 00000000..bafb84ea --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r6_3/grd_s_r6_3.c @@ -0,0 +1,223 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r6_3_v[] = { +#include "assets/field/bg/grd_s_r6_3_v.inc" +}; + +extern Gfx grd_s_r6_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r6_3_v[167], 10, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 1, 9, // tri1 + 1, 0, 9, // tri2 + 4, 8, 9 // tri3 + ), + gsSPNTriangles_5b(4, 6, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r6_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r6_3_v[154], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r6_3_v[0], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 2, 3, 8, // tri1 + 9, 10, 11, // tri2 + 9, 12, 10 // tri3 + ), + gsSPNTriangles_5b(10, 13, 11, // tri0 + 14, 15, 16, // tri1 + 15, 17, 16, // tri2 + 18, 16, 17 // tri3 + ), + gsSPNTriangles_5b(0, 19, 1, // tri0 + 1, 13, 3, // tri1 + 20, 21, 22, // tri2 + 21, 23, 22 // tri3 + ), + gsSPNTriangles_5b(24, 25, 7, // tri0 + 25, 26, 7, // tri1 + 27, 28, 29, // tri2 + 29, 30, 27 // tri3 + ), + gsSPNTriangles_5b(30, 31, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r6_3_v[32], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 8, 9, 9, // tri1 + 10, 11, 12, // tri2 + 11, 13, 12 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 17, 18, 15, // tri1 + 15, 18, 16, // tri2 + 19, 9, 20 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 24, 25, 18, // tri1 + 17, 24, 18, // tri2 + 26, 19, 20 // tri3 + ), + gsSPNTriangles_5b(27, 26, 28, // tri0 + 27, 29, 26, // tri1 + 29, 19, 26, // tri2 + 13, 28, 12 // tri3 + ), + gsSPNTriangles_5b(30, 10, 12, // tri0 + 30, 31, 10, // tri1 + 20, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r6_3_v[64], 10, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 4, 8, // tri0 + 4, 7, 9, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r6_3_v[74], 32, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 8, 9, 10, // tri1 + 10, 11, 12, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 21, 18, 22, // tri2 + 16, 23, 24 // tri3 + ), + gsSPNTriangles_5b(23, 21, 25, // tri0 + 26, 27, 28, // tri1 + 29, 26, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r6_3_v[105], 10, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 8, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r6_3_v[115], 26, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 3, 6, // tri0 + 7, 8, 9, // tri1 + 9, 10, 7, // tri2 + 10, 11, 7 // tri3 + ), + gsSPNTriangles_5b(11, 10, 12, // tri0 + 11, 12, 13, // tri1 + 12, 14, 13, // tri2 + 14, 15, 13 // tri3 + ), + gsSPNTriangles_5b(14, 16, 15, // tri0 + 16, 17, 15, // tri1 + 18, 19, 20, // tri2 + 20, 21, 18 // tri3 + ), + gsSPNTriangles_5b(20, 22, 21, // tri0 + 22, 23, 21, // tri1 + 23, 24, 21, // tri2 + 24, 6, 21 // tri3 + ), + gsSPNTriangles_5b(24, 4, 6, // tri0 + 5, 25, 3, // tri1 + 25, 0, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r6_3_v[141], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r6_3/grd_s_r6_3_evw_anime.c b/src/data/field/bg/acre/grd_s_r6_3/grd_s_r6_3_evw_anime.c new file mode 100644 index 00000000..7a20b37c --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r6_3/grd_s_r6_3_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r6_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r6_3_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_r6_3_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_r6_b_1/grd_s_r6_b_1.c b/src/data/field/bg/acre/grd_s_r6_b_1/grd_s_r6_b_1.c new file mode 100644 index 00000000..fbb34ed5 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r6_b_1/grd_s_r6_b_1.c @@ -0,0 +1,262 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_1_pal_dummy[]; +extern u8 bridge_1_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r6_b_1_v[] = { +#include "assets/field/bg/grd_s_r6_b_1_v.inc" +}; + +extern Gfx grd_s_r6_b_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r6_b_1_v[172], 16, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 3, 5 // tri2 + ), + gsSPNTriangles_5b(3, 0, 5, // tri0 + 6, 4, 5, // tri1 + 6, 5, 7, // tri2 + 8, 6, 7 // tri3 + ), + gsSPNTriangles_5b(9, 8, 7, // tri0 + 9, 7, 10, // tri1 + 11, 9, 10, // tri2 + 12, 13, 10 // tri3 + ), + gsSPNTriangles_5b(13, 11, 10, // tri0 + 14, 12, 15, // tri1 + 14, 13, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r6_b_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r6_b_1_v[143], 17, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 3, 8, // tri0 + 9, 10, 11, // tri1 + 12, 9, 13, // tri2 + 10, 14, 15 // tri3 + ), + gsSPNTriangles_5b(14, 5, 16, // tri0 + 3, 4, 8, // tri1 + 10, 15, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_1_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_1_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&grd_s_r6_b_1_v[160], 12, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 2, 1, 3 // tri2 + ), + gsSPNTriangles_5b(4, 3, 5, // tri0 + 6, 1, 0, // tri1 + 7, 4, 5, // tri2 + 7, 5, 8 // tri3 + ), + gsSPNTriangles_5b(9, 2, 4, // tri0 + 9, 4, 7, // tri1 + 10, 0, 2, // tri2 + 10, 2, 9 // tri3 + ), + gsSPNTriangles_5b(11, 6, 0, // tri0 + 11, 0, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r6_b_1_v[0], 17, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 3, 8, // tri0 + 9, 10, 11, // tri1 + 12, 9, 13, // tri2 + 10, 14, 15 // tri3 + ), + gsSPNTriangles_5b(14, 5, 16, // tri0 + 3, 4, 8, // tri1 + 10, 15, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r6_b_1_v[17], 31, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 3, // tri0 + 5, 7, 6, // tri1 + 7, 8, 6, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(10, 11, 12, // tri0 + 12, 13, 14, // tri1 + 14, 15, 16, // tri2 + 15, 17, 16 // tri3 + ), + gsSPNTriangles_5b(18, 19, 17, // tri0 + 18, 20, 19, // tri1 + 20, 21, 22, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b(24, 23, 25, // tri0 + 26, 27, 25, // tri1 + 26, 28, 27, // tri2 + 28, 29, 30 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r6_b_1_v[48], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(6, 7, 4, // tri0 + 3, 8, 6, // tri1 + 3, 9, 8, // tri2 + 8, 10, 6 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 11, 14, 12, // tri1 + 11, 15, 14, // tri2 + 14, 16, 12 // tri3 + ), + gsSPNTriangles_5b(16, 17, 12, // tri0 + 16, 18, 17, // tri1 + 18, 19, 17, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b(20, 21, 19, // tri0 + 22, 23, 24, // tri1 + 23, 25, 24, // tri2 + 23, 26, 25 // tri3 + ), + gsSPNTriangles_5b(23, 27, 26, // tri0 + 27, 28, 26, // tri1 + 27, 7, 28, // tri2 + 27, 4, 7 // tri3 + ), + gsSPNTriangles_5b(29, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r6_b_1_v[80], 25, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 0, // tri0 + 5, 7, 6, // tri1 + 7, 8, 6, // tri2 + 8, 9, 6 // tri3 + ), + gsSPNTriangles_5b(9, 10, 6, // tri0 + 9, 11, 10, // tri1 + 11, 12, 10, // tri2 + 11, 13, 12 // tri3 + ), + gsSPNTriangles_5b(5, 14, 7, // tri0 + 5, 15, 14, // tri1 + 16, 17, 18, // tri2 + 17, 19, 18 // tri3 + ), + gsSPNTriangles_5b(17, 20, 19, // tri0 + 20, 21, 19, // tri1 + 22, 23, 24, // tri2 + 23, 13, 24 // tri3 + ), + gsSPNTriangles_5b(23, 12, 13, // tri0 + 22, 4, 23, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r6_b_1_v[105], 32, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 5, 4, 6 // tri2 + ), + gsSPNTriangles_5b(7, 1, 0, // tri0 + 8, 0, 2, // tri1 + 8, 2, 3, // tri2 + 9, 10, 3 // tri3 + ), + gsSPNTriangles_5b(9, 3, 4, // tri0 + 5, 9, 4, // tri1 + 11, 5, 6, // tri2 + 12, 11, 6 // tri3 + ), + gsSPNTriangles_5b(13, 6, 14, // tri0 + 15, 14, 16, // tri1 + 12, 6, 13, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19, // tri2 + 22, 23, 21 // tri3 + ), + gsSPNTriangles_5b(21, 18, 22, // tri0 + 22, 24, 23, // tri1 + 25, 26, 24, // tri2 + 24, 22, 25 // tri3 + ), + gsSPNTriangles_5b(27, 28, 26, // tri0 + 26, 25, 27, // tri1 + 28, 29, 30, // tri2 + 30, 29, 31 // tri3 + ), + gsSPVertex(&grd_s_r6_b_1_v[137], 6, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 0, 5 // tri2 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r6_b_1/grd_s_r6_b_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r6_b_1/grd_s_r6_b_1_evw_anime.c new file mode 100644 index 00000000..5707e275 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r6_b_1/grd_s_r6_b_1_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r6_b_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r6_b_1_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_r6_b_1_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_r6_b_2/grd_s_r6_b_2.c b/src/data/field/bg/acre/grd_s_r6_b_2/grd_s_r6_b_2.c new file mode 100644 index 00000000..6a0a5984 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r6_b_2/grd_s_r6_b_2.c @@ -0,0 +1,342 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_2_pal_dummy[]; +extern u8 bridge_2_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r6_b_2_v[] = { +#include "assets/field/bg/grd_s_r6_b_2_v.inc" +}; + +extern Gfx grd_s_r6_b_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r6_b_2_v[264], 27, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 1, // tri0 + 6, 7, 8, // tri1 + 6, 5, 7, // tri2 + 5, 4, 7 // tri3 + ), + gsSPNTriangles_5b(3, 9, 10, // tri0 + 3, 10, 2, // tri1 + 11, 12, 10, // tri2 + 9, 11, 10 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 13, 14, 12, // tri1 + 13, 15, 14, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(16, 19, 17, // tri0 + 20, 21, 22, // tri1 + 20, 22, 8, // tri2 + 22, 6, 8 // tri3 + ), + gsSPNTriangles_5b(8, 23, 20, // tri0 + 8, 24, 23, // tri1 + 14, 16, 18, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(18, 25, 14, // tri0 + 18, 26, 25, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r6_b_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_2_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_2_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r6_b_2_v[186], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b(2, 1, 4, // tri0 + 1, 6, 4, // tri1 + 6, 7, 4, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 12, 10, 13, // tri1 + 12, 8, 10, // tri2 + 14, 8, 12 // tri3 + ), + gsSPNTriangles_5b(14, 15, 8, // tri0 + 16, 17, 18, // tri1 + 16, 19, 17, // tri2 + 18, 20, 21 // tri3 + ), + gsSPNTriangles_5b(18, 17, 20, // tri0 + 17, 22, 20, // tri1 + 22, 23, 20, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(25, 27, 26, // tri0 + 28, 26, 29, // tri1 + 28, 24, 26, // tri2 + 30, 24, 28 // tri3 + ), + gsSPNTriangles_5b(30, 31, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r6_b_2_v[218], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 2, 5 // tri2 + ), + gsSPNTriangles_5b(4, 0, 2, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 9, 10, 7 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 12, 13, 14, // tri1 + 12, 15, 13, // tri2 + 14, 16, 17 // tri3 + ), + gsSPNTriangles_5b(14, 13, 16, // tri0 + 13, 18, 16, // tri1 + 18, 19, 16, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(21, 23, 22, // tri0 + 24, 22, 25, // tri1 + 24, 20, 22, // tri2 + 26, 20, 24 // tri3 + ), + gsSPNTriangles_5b(26, 27, 20, // tri0 + 28, 29, 30, // tri1 + 28, 31, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r6_b_2_v[250], 14, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 1, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 10, 8, 11 // tri3 + ), + gsSPNTriangles_5b(10, 6, 8, // tri0 + 12, 6, 10, // tri1 + 12, 13, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r6_b_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(11, 12, 8, // tri0 + 12, 13, 8, // tri1 + 13, 14, 8, // tri2 + 14, 15, 8 // tri3 + ), + gsSPNTriangles_5b(15, 6, 8, // tri0 + 16, 17, 18, // tri1 + 17, 19, 18, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b(11, 8, 10, // tri0 + 21, 13, 22, // tri1 + 13, 23, 22, // tri2 + 23, 24, 22 // tri3 + ), + gsSPNTriangles_5b(21, 25, 26, // tri0 + 21, 22, 25, // tri1 + 25, 27, 26, // tri2 + 27, 16, 26 // tri3 + ), + gsSPNTriangles_5b(28, 29, 30, // tri0 + 29, 31, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r6_b_2_v[32], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 11, 12, 13, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b(15, 9, 16, // tri0 + 15, 10, 9, // tri1 + 3, 17, 2, // tri2 + 17, 18, 2 // tri3 + ), + gsSPNTriangles_5b(18, 19, 2, // tri0 + 20, 21, 19, // tri1 + 22, 23, 24, // tri2 + 22, 25, 23 // tri3 + ), + gsSPNTriangles_5b(22, 26, 25, // tri0 + 22, 27, 26, // tri1 + 22, 28, 27, // tri2 + 29, 30, 31 // tri3 + ), + gsSPVertex(&grd_s_r6_b_2_v[64], 11, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r6_b_2_v[75], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 8, 9, 7, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(13, 10, 14, // tri0 + 15, 16, 17, // tri1 + 18, 15, 19, // tri2 + 11, 20, 21 // tri3 + ), + gsSPNTriangles_5b(20, 18, 22, // tri0 + 23, 24, 9, // tri1 + 25, 26, 27, // tri2 + 28, 5, 26 // tri3 + ), + gsSPNTriangles_5b(29, 4, 30, // tri0 + 31, 30, 24, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r6_b_2_v[107], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 7, 9, // tri1 + 7, 10, 9, // tri2 + 11, 10, 12 // tri3 + ), + gsSPNTriangles_5b(10, 13, 12, // tri0 + 14, 13, 15, // tri1 + 13, 16, 15, // tri2 + 17, 16, 18 // tri3 + ), + gsSPNTriangles_5b(16, 19, 18, // tri0 + 1, 20, 3, // tri1 + 1, 21, 20, // tri2 + 21, 22, 20 // tri3 + ), + gsSPNTriangles_5b(21, 23, 22, // tri0 + 23, 24, 22, // tri1 + 23, 25, 24, // tri2 + 25, 26, 24 // tri3 + ), + gsSPNTriangles_5b(27, 28, 29, // tri0 + 27, 30, 28, // tri1 + 27, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r6_b_2_v[139], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 10, 11, 8, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 13, 14, 11, // tri1 + 13, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 17, 18, 16, // tri1 + 19, 20, 21, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b(23, 24, 25, // tri0 + 26, 27, 28, // tri1 + 29, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r6_b_2_v[171], 15, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 8, 9, 7, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b(8, 11, 10, // tri0 + 12, 13, 14, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r6_b_2/grd_s_r6_b_2_evw_anime.c b/src/data/field/bg/acre/grd_s_r6_b_2/grd_s_r6_b_2_evw_anime.c new file mode 100644 index 00000000..73b19fd6 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r6_b_2/grd_s_r6_b_2_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r6_b_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r6_b_2_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_r6_b_2_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_r6_p_1/grd_s_r6_p_1.c b/src/data/field/bg/acre/grd_s_r6_p_1/grd_s_r6_p_1.c new file mode 100644 index 00000000..157505a8 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r6_p_1/grd_s_r6_p_1.c @@ -0,0 +1,408 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_2_pal_dummy[]; +extern u8 bridge_2_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r6_p_1_v[] = { +#include "assets/field/bg/grd_s_r6_p_1_v.inc" +}; + +extern Gfx grd_s_r6_p_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r6_p_1_v[272], 31, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 1, // tri0 + 5, 6, 1, // tri1 + 7, 8, 2, // tri2 + 8, 9, 2 // tri3 + ), + gsSPNTriangles_5b(8, 10, 9, // tri0 + 8, 11, 10, // tri1 + 2, 12, 13, // tri2 + 2, 13, 0 // tri3 + ), + gsSPNTriangles_5b(2, 14, 12, // tri0 + 2, 15, 16, // tri1 + 17, 2, 18, // tri2 + 9, 18, 2 // tri3 + ), + gsSPNTriangles_5b(19, 2, 17, // tri0 + 20, 21, 22, // tri1 + 20, 6, 21, // tri2 + 1, 6, 20 // tri3 + ), + gsSPNTriangles_5b(2, 23, 24, // tri0 + 2, 25, 26, // tri1 + 2, 19, 27, // tri2 + 28, 11, 8 // tri3 + ), + gsSPNTriangles_5b(29, 30, 28, // tri0 + 30, 11, 28, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r6_p_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_2_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_2_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r6_p_1_v[228], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b(1, 5, 2, // tri0 + 6, 7, 8, // tri1 + 6, 8, 9, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(10, 12, 13, // tri0 + 13, 12, 14, // tri1 + 13, 14, 15, // tri2 + 12, 16, 17 // tri3 + ), + gsSPNTriangles_5b(12, 17, 14, // tri0 + 18, 19, 20, // tri1 + 18, 20, 21, // tri2 + 22, 18, 21 // tri3 + ), + gsSPNTriangles_5b(22, 21, 23, // tri0 + 24, 25, 18, // tri1 + 24, 18, 22, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b(26, 28, 29, // tri0 + 29, 28, 30, // tri1 + 29, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r6_p_1_v[260], 12, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 4, 7, // tri1 + 8, 7, 9, // tri2 + 10, 11, 4 // tri3 + ), + gsSPNTriangles_5b(10, 4, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r6_p_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 0, 6 // tri2 + ), + gsSPNTriangles_5b(0, 2, 7, // tri0 + 0, 7, 8, // tri1 + 9, 8, 7, // tri2 + 10, 8, 9 // tri3 + ), + gsSPNTriangles_5b(4, 11, 5, // tri0 + 12, 13, 14, // tri1 + 13, 15, 14, // tri2 + 14, 16, 12 // tri3 + ), + gsSPNTriangles_5b(14, 17, 16, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20, // tri2 + 19, 22, 21 // tri3 + ), + gsSPNTriangles_5b(19, 23, 22, // tri0 + 19, 24, 25, // tri1 + 24, 26, 25, // tri2 + 24, 27, 26 // tri3 + ), + gsSPNTriangles_5b(24, 28, 27, // tri0 + 28, 29, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r6_p_1_v[31], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 9, // tri1 + 8, 10, 11, // tri2 + 12, 11, 10 // tri3 + ), + gsSPNTriangles_5b(13, 14, 12, // tri0 + 14, 15, 12, // tri1 + 15, 16, 12, // tri2 + 7, 4, 5 // tri3 + ), + gsSPNTriangles_5b(17, 7, 18, // tri0 + 18, 7, 19, // tri1 + 7, 6, 19, // tri2 + 20, 19, 6 // tri3 + ), + gsSPNTriangles_5b(9, 20, 6, // tri0 + 0, 2, 21, // tri1 + 22, 0, 21, // tri2 + 23, 0, 22 // tri3 + ), + gsSPNTriangles_5b(24, 25, 23, // tri0 + 26, 25, 24, // tri1 + 27, 28, 29, // tri2 + 16, 30, 12 // tri3 + ), + gsSPNTriangles_5b(12, 30, 11, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r6_p_1_v[62], 5, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r6_p_1_v[67], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 8, 4, 9, // tri1 + 3, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 14, // tri0 + 13, 7, 14, // tri1 + 15, 16, 17, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b(17, 19, 20, // tri0 + 21, 22, 15, // tri1 + 23, 24, 21, // tri2 + 25, 26, 27 // tri3 + ), + gsSPNTriangles_5b(26, 23, 27, // tri0 + 25, 28, 26, // tri1 + 25, 29, 28, // tri2 + 29, 30, 28 // tri3 + ), + gsSPVertex(&grd_s_r6_p_1_v[98], 3, 0), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r6_p_1_v[101], 32, 0), + gsSPNTrianglesInit_5b(30, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 2, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 7, 8, 9 // tri3 + ), + gsSPNTriangles_5b(8, 10, 5, // tri0 + 8, 5, 9, // tri1 + 7, 11, 12, // tri2 + 7, 12, 13 // tri3 + ), + gsSPNTriangles_5b(12, 10, 13, // tri0 + 11, 14, 12, // tri1 + 14, 15, 10, // tri2 + 14, 10, 12 // tri3 + ), + gsSPNTriangles_5b(11, 16, 14, // tri0 + 16, 17, 15, // tri1 + 16, 15, 14, // tri2 + 11, 18, 16 // tri3 + ), + gsSPNTriangles_5b(18, 19, 17, // tri0 + 18, 17, 16, // tri1 + 20, 21, 22, // tri2 + 21, 23, 19 // tri3 + ), + gsSPNTriangles_5b(21, 19, 22, // tri0 + 24, 25, 26, // tri1 + 25, 27, 23, // tri2 + 25, 23, 26 // tri3 + ), + gsSPNTriangles_5b(28, 29, 30, // tri0 + 29, 31, 27, // tri1 + 29, 27, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r6_p_1_v[133], 32, 0), + gsSPNTrianglesInit_5b(31, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 3, // tri1 + 6, 3, 7, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b(10, 12, 8, // tri0 + 10, 8, 11, // tri1 + 9, 13, 10, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b(13, 12, 10, // tri0 + 9, 15, 16, // tri1 + 9, 16, 13, // tri2 + 16, 14, 13 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 17, 18, 14, // tri1 + 17, 14, 16, // tri2 + 15, 19, 20 // tri3 + ), + gsSPNTriangles_5b(15, 20, 17, // tri0 + 20, 18, 17, // tri1 + 19, 21, 20, // tri2 + 21, 22, 18 // tri3 + ), + gsSPNTriangles_5b(21, 18, 20, // tri0 + 19, 23, 21, // tri1 + 23, 24, 22, // tri2 + 23, 22, 21 // tri3 + ), + gsSPNTriangles_5b(25, 26, 27, // tri0 + 26, 28, 24, // tri1 + 26, 24, 27, // tri2 + 29, 30, 31 // tri3 + ), + gsSPVertex(&grd_s_r6_p_1_v[165], 32, 0), + gsSPNTrianglesInit_5b(29, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 1, // tri0 + 5, 1, 6, // tri1 + 8, 9, 10, // tri2 + 9, 11, 7 // tri3 + ), + gsSPNTriangles_5b(9, 7, 10, // tri0 + 12, 13, 14, // tri1 + 13, 15, 11, // tri2 + 13, 11, 14 // tri3 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 17, 19, 15, // tri1 + 17, 15, 18, // tri2 + 16, 20, 17 // tri3 + ), + gsSPNTriangles_5b(20, 21, 19, // tri0 + 20, 19, 17, // tri1 + 16, 22, 23, // tri2 + 16, 23, 20 // tri3 + ), + gsSPNTriangles_5b(23, 21, 20, // tri0 + 22, 24, 23, // tri1 + 24, 25, 21, // tri2 + 24, 21, 23 // tri3 + ), + gsSPNTriangles_5b(22, 26, 24, // tri0 + 26, 25, 24, // tri1 + 26, 27, 25, // tri2 + 27, 28, 25 // tri3 + ), + gsSPNTriangles_5b(27, 29, 28, // tri0 + 27, 30, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r6_p_1_v[196], 32, 0), + gsSPNTrianglesInit_5b(39, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 4, 2, 1, // tri1 + 6, 7, 8, // tri2 + 7, 9, 8 // tri3 + ), + gsSPNTriangles_5b(7, 10, 9, // tri0 + 7, 2, 10, // tri1 + 7, 0, 2, // tri2 + 3, 11, 4 // tri3 + ), + gsSPNTriangles_5b(11, 12, 5, // tri0 + 11, 5, 4, // tri1 + 3, 13, 14, // tri2 + 3, 14, 11 // tri3 + ), + gsSPNTriangles_5b(14, 12, 11, // tri0 + 13, 15, 16, // tri1 + 13, 16, 14, // tri2 + 16, 12, 14 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 17, 18, 12, // tri1 + 17, 12, 16, // tri2 + 15, 19, 20 // tri3 + ), + gsSPNTriangles_5b(15, 20, 17, // tri0 + 20, 18, 17, // tri1 + 19, 21, 22, // tri2 + 19, 22, 20 // tri3 + ), + gsSPNTriangles_5b(22, 18, 20, // tri0 + 21, 23, 22, // tri1 + 23, 24, 18, // tri2 + 23, 18, 22 // tri3 + ), + gsSPNTriangles_5b(21, 25, 23, // tri0 + 25, 24, 23, // tri1 + 25, 26, 24, // tri2 + 25, 27, 26 // tri3 + ), + gsSPNTriangles_5b(25, 28, 27, // tri0 + 28, 29, 27, // tri1 + 28, 30, 29, // tri2 + 28, 31, 30 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r6_p_1/grd_s_r6_p_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r6_p_1/grd_s_r6_p_1_evw_anime.c new file mode 100644 index 00000000..6f9e0073 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r6_p_1/grd_s_r6_p_1_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r6_p_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r6_p_1_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_r6_p_1_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_r7_1/grd_s_r7_1.c b/src/data/field/bg/acre/grd_s_r7_1/grd_s_r7_1.c new file mode 100644 index 00000000..158101a2 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r7_1/grd_s_r7_1.c @@ -0,0 +1,259 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r7_1_v[] = { +#include "assets/field/bg/grd_s_r7_1_v.inc" +}; + +extern Gfx grd_s_r7_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r7_1_v[182], 15, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b(1, 5, 2, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 10, // tri0 + 7, 10, 8, // tri1 + 9, 11, 12, // tri2 + 9, 12, 10 // tri3 + ), + gsSPNTriangles_5b(11, 13, 14, // tri0 + 11, 14, 12, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r7_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r7_1_v[171], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r7_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 11, 12, 13, // tri2 + 12, 11, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 17, 18, 15, // tri1 + 19, 17, 16, // tri2 + 19, 8, 17 // tri3 + ), + gsSPNTriangles_5b(9, 8, 19, // tri0 + 20, 0, 2, // tri1 + 21, 2, 22, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b(25, 24, 22, // tri0 + 22, 26, 25, // tri1 + 26, 27, 27, // tri2 + 26, 27, 25 // tri3 + ), + gsSPNTriangles_5b(28, 4, 6, // tri0 + 29, 9, 19, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r7_1_v[30], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 3, 5 // tri2 + ), + gsSPNTriangles_5b(3, 6, 5, // tri0 + 3, 2, 6, // tri1 + 7, 8, 9, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(13, 14, 11, // tri0 + 15, 14, 16, // tri1 + 7, 4, 8, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(18, 20, 19, // tri0 + 18, 21, 20, // tri1 + 21, 22, 23, // tri2 + 21, 23, 24 // tri3 + ), + gsSPNTriangles_5b(24, 20, 21, // tri0 + 6, 25, 5, // tri1 + 25, 26, 27, // tri2 + 26, 28, 27 // tri3 + ), + gsSPNTriangles_5b(29, 28, 30, // tri0 + 30, 31, 29, // tri1 + 28, 29, 27, // tri2 + 27, 29, 8 // tri3 + ), + gsSPVertex(&grd_s_r7_1_v[62], 9, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 3 // tri2 + ), + gsSPNTriangles_5b(7, 3, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r7_1_v[71], 32, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 8, 6, 10, // tri1 + 11, 12, 13, // tri2 + 14, 11, 15 // tri3 + ), + gsSPNTriangles_5b(12, 16, 17, // tri0 + 16, 18, 19, // tri1 + 20, 21, 22, // tri2 + 21, 14, 23 // tri3 + ), + gsSPNTriangles_5b(24, 25, 26, // tri0 + 24, 27, 28, // tri1 + 29, 28, 27, // tri2 + 30, 29, 27 // tri3 + ), + gsSPVertex(&grd_s_r7_1_v[102], 13, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 3, 7, // tri0 + 5, 8, 6, // tri1 + 5, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(10, 11, 12, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r7_1_v[115], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 7, 10, 9, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(10, 13, 12, // tri0 + 13, 14, 12, // tri1 + 13, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 15, 18, 17, // tri1 + 18, 19, 17, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b(20, 21, 19, // tri0 + 22, 23, 24, // tri1 + 25, 22, 24, // tri2 + 22, 26, 23 // tri3 + ), + gsSPNTriangles_5b(26, 27, 23, // tri0 + 26, 28, 27, // tri1 + 28, 29, 27, // tri2 + 28, 30, 29 // tri3 + ), + gsSPNTriangles_5b(30, 31, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r7_1_v[147], 13, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(8, 9, 6, // tri0 + 8, 10, 9, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r7_1_v[160], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 8, 3, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r7_1/grd_s_r7_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r7_1/grd_s_r7_1_evw_anime.c new file mode 100644 index 00000000..e0f68e69 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r7_1/grd_s_r7_1_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r7_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r7_1_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_r7_1_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_r7_2/grd_s_r7_2.c b/src/data/field/bg/acre/grd_s_r7_2/grd_s_r7_2.c new file mode 100644 index 00000000..04e165f7 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r7_2/grd_s_r7_2.c @@ -0,0 +1,253 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r7_2_v[] = { +#include "assets/field/bg/grd_s_r7_2_v.inc" +}; + +extern Gfx grd_s_r7_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r7_2_v[167], 20, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b(4, 3, 5, // tri0 + 6, 4, 5, // tri1 + 6, 5, 7, // tri2 + 8, 6, 7 // tri3 + ), + gsSPNTriangles_5b(8, 7, 9, // tri0 + 10, 8, 9, // tri1 + 11, 10, 9, // tri2 + 11, 9, 12 // tri3 + ), + gsSPNTriangles_5b(13, 11, 12, // tri0 + 13, 12, 14, // tri1 + 15, 13, 14, // tri2 + 15, 14, 16 // tri3 + ), + gsSPNTriangles_5b(17, 15, 16, // tri0 + 17, 16, 18, // tri1 + 19, 17, 18, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r7_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r7_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(29, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 3, 5, // tri0 + 1, 6, 3, // tri1 + 6, 5, 3, // tri2 + 5, 7, 4 // tri3 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 8, 11, 9, // tri1 + 11, 12, 9, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(14, 16, 15, // tri0 + 8, 17, 16, // tri1 + 17, 15, 16, // tri2 + 8, 10, 17 // tri3 + ), + gsSPNTriangles_5b(13, 18, 14, // tri0 + 14, 18, 19, // tri1 + 18, 20, 19, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b(21, 24, 22, // tri0 + 21, 25, 24, // tri1 + 21, 26, 25, // tri2 + 22, 27, 23 // tri3 + ), + gsSPNTriangles_5b(27, 28, 23, // tri0 + 27, 7, 28, // tri1 + 7, 5, 28, // tri2 + 0, 29, 1 // tri3 + ), + gsSPNTriangles_5b(0, 30, 29, // tri0 + 30, 31, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r7_2_v[32], 24, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(13, 14, 11, // tri0 + 13, 15, 14, // tri1 + 13, 16, 15, // tri2 + 15, 17, 14 // tri3 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 8, 21, 22, // tri1 + 22, 21, 23, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r7_2_v[56], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 8, 13, 9, // tri2 + 10, 12, 3 // tri3 + ), + gsSPNTriangles_5b(10, 14, 11, // tri0 + 14, 15, 16, // tri1 + 0, 17, 18, // tri2 + 17, 19, 20 // tri3 + ), + gsSPNTriangles_5b(18, 17, 20, // tri0 + 1, 0, 18, // tri1 + 21, 22, 23, // tri2 + 21, 9, 13 // tri3 + ), + gsSPNTriangles_5b(19, 24, 25, // tri0 + 24, 26, 27, // tri1 + 28, 2, 29, // tri2 + 30, 28, 29 // tri3 + ), + gsSPNTriangles_5b(31, 28, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r7_2_v[88], 25, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 0, 8, // tri1 + 8, 0, 2, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b(11, 10, 12, // tri0 + 10, 13, 12, // tri1 + 13, 5, 14, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 18, 20, 19, // tri1 + 19, 20, 21, // tri2 + 21, 9, 11 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 23, 16, 15, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r7_2_v[113], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 3, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 8, 2, 7, // tri2 + 8, 0, 2 // tri3 + ), + gsSPNTriangles_5b(5, 9, 6, // tri0 + 10, 11, 12, // tri1 + 11, 13, 12, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 15, 18, 16, // tri1 + 18, 19, 16, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(21, 23, 22, // tri0 + 22, 23, 24, // tri1 + 25, 26, 24, // tri2 + 26, 22, 24 // tri3 + ), + gsSPNTriangles_5b(20, 27, 21, // tri0 + 20, 28, 27, // tri1 + 28, 29, 27, // tri2 + 28, 15, 29 // tri3 + ), + gsSPNTriangles_5b(15, 17, 29, // tri0 + 18, 14, 19, // tri1 + 14, 13, 19, // tri2 + 10, 30, 11 // tri3 + ), + gsSPNTriangles_5b(30, 31, 11, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r7_2_v[145], 22, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 4, 9, 5, // tri2 + 7, 10, 8 // tri3 + ), + gsSPNTriangles_5b(10, 11, 8, // tri0 + 10, 12, 11, // tri1 + 12, 13, 11, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 13, // tri0 + 14, 16, 15, // tri1 + 16, 17, 15, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(18, 21, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r7_2/grd_s_r7_2_evw_anime.c b/src/data/field/bg/acre/grd_s_r7_2/grd_s_r7_2_evw_anime.c new file mode 100644 index 00000000..29e99758 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r7_2/grd_s_r7_2_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r7_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r7_2_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_r7_2_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_r7_3/grd_s_r7_3.c b/src/data/field/bg/acre/grd_s_r7_3/grd_s_r7_3.c new file mode 100644 index 00000000..1c0a0259 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r7_3/grd_s_r7_3.c @@ -0,0 +1,234 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r7_3_v[] = { +#include "assets/field/bg/grd_s_r7_3_v.inc" +}; + +extern Gfx grd_s_r7_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r7_3_v[167], 15, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 0 // tri2 + ), + gsSPNTriangles_5b(5, 6, 0, // tri0 + 7, 8, 9, // tri1 + 8, 10, 9, // tri2 + 10, 2, 9 // tri3 + ), + gsSPNTriangles_5b(2, 1, 9, // tri0 + 0, 6, 3, // tri1 + 4, 11, 5, // tri2 + 4, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 13, 14, 11, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r7_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r7_3_v[0], 32, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 7, 9, 10, // tri1 + 9, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(14, 16, 17, // tri0 + 16, 18, 19, // tri1 + 18, 20, 21, // tri2 + 20, 22, 23 // tri3 + ), + gsSPNTriangles_5b(24, 25, 26, // tri0 + 27, 28, 25, // tri1 + 29, 30, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r7_3_v[31], 24, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b(4, 6, 5, // tri0 + 6, 7, 8, // tri1 + 8, 9, 10, // tri2 + 7, 9, 8 // tri3 + ), + gsSPNTriangles_5b(10, 11, 12, // tri0 + 13, 14, 12, // tri1 + 14, 15, 16, // tri2 + 15, 17, 16 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 18, 20, 19, // tri1 + 20, 21, 22, // tri2 + 21, 23, 22 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r7_3_v[55], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 4, // tri0 + 7, 4, 6, // tri1 + 7, 6, 9, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(11, 8, 12, // tri0 + 10, 13, 11, // tri1 + 10, 14, 13, // tri2 + 8, 7, 12 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 16, 18, 17, // tri1 + 19, 20, 21, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b(23, 24, 22, // tri0 + 16, 15, 24, // tri1 + 25, 17, 18, // tri2 + 25, 26, 17 // tri3 + ), + gsSPNTriangles_5b(26, 15, 17, // tri0 + 19, 11, 13, // tri1 + 3, 27, 28, // tri2 + 27, 29, 28 // tri3 + ), + gsSPNTriangles_5b(27, 30, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r7_3_v[86], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 2, 6 // tri2 + ), + gsSPNTriangles_5b(6, 7, 0, // tri0 + 8, 9, 10, // tri1 + 10, 9, 11, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b(13, 11, 12, // tri0 + 13, 12, 14, // tri1 + 12, 15, 14, // tri2 + 12, 16, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 18, 2, 1, // tri1 + 19, 20, 5, // tri2 + 5, 4, 19 // tri3 + ), + gsSPNTriangles_5b(21, 19, 4, // tri0 + 22, 23, 24, // tri1 + 22, 25, 26, // tri2 + 26, 23, 22 // tri3 + ), + gsSPNTriangles_5b(23, 27, 20, // tri0 + 28, 27, 23, // tri1 + 28, 23, 26, // tri2 + 29, 30, 31 // tri3 + ), + gsSPVertex(&grd_s_r7_3_v[118], 5, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r7_3_v[123], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 5, 4, 6, // tri1 + 6, 7, 5, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 8, 10, 9, // tri1 + 8, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(12, 13, 10, // tri0 + 13, 12, 14, // tri1 + 14, 15, 13, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(14, 17, 16, // tri0 + 17, 18, 16, // tri1 + 18, 19, 16, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(22, 23, 20, // tri0 + 22, 24, 23, // tri1 + 24, 25, 23, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b(24, 27, 26, // tri0 + 27, 28, 26, // tri1 + 27, 29, 28, // tri2 + 29, 30, 28 // tri3 + ), + gsSPNTriangles_5b(29, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r7_3_v[155], 12, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(8, 9, 6, // tri0 + 8, 10, 9, // tri1 + 8, 11, 10, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r7_3/grd_s_r7_3_evw_anime.c b/src/data/field/bg/acre/grd_s_r7_3/grd_s_r7_3_evw_anime.c new file mode 100644 index 00000000..cd60fa6c --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r7_3/grd_s_r7_3_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r7_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r7_3_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_r7_3_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_r7_b_1/grd_s_r7_b_1.c b/src/data/field/bg/acre/grd_s_r7_b_1/grd_s_r7_b_1.c new file mode 100644 index 00000000..df95e7dd --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r7_b_1/grd_s_r7_b_1.c @@ -0,0 +1,273 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_1_pal_dummy[]; +extern u8 bridge_1_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r7_b_1_v[] = { +#include "assets/field/bg/grd_s_r7_b_1_v.inc" +}; + +extern Gfx grd_s_r7_b_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r7_b_1_v[189], 18, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 0, 2, 3 // tri2 + ), + gsSPNTriangles_5b(5, 4, 3, // tri0 + 3, 6, 5, // tri1 + 6, 7, 5, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 9, 10, 7, // tri1 + 9, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 11, 14, 13, // tri1 + 14, 15, 13, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(14, 17, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r7_b_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r7_b_1_v[162], 15, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 0, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 1, 7, 10, // tri1 + 8, 11, 12, // tri2 + 11, 13, 14 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_1_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_1_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&grd_s_r7_b_1_v[177], 12, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b(0, 2, 4, // tri0 + 6, 1, 0, // tri1 + 5, 4, 7, // tri2 + 5, 7, 8 // tri3 + ), + gsSPNTriangles_5b(9, 10, 6, // tri0 + 9, 6, 11, // tri1 + 10, 1, 6, // tri2 + 11, 6, 0 // tri3 + ), + gsSPNTriangles_5b(11, 0, 3, // tri0 + 4, 2, 7, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r7_b_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 7, 2, 3, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 8, 12, 9, // tri1 + 13, 14, 15, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(16, 7, 15, // tri0 + 17, 13, 18, // tri1 + 13, 19, 18, // tri2 + 17, 14, 13 // tri3 + ), + gsSPNTriangles_5b(20, 21, 18, // tri0 + 21, 17, 18, // tri1 + 22, 21, 20, // tri2 + 17, 23, 14 // tri3 + ), + gsSPNTriangles_5b(24, 25, 12, // tri0 + 24, 22, 25, // tri1 + 24, 26, 22, // tri2 + 22, 20, 25 // tri3 + ), + gsSPNTriangles_5b(26, 27, 22, // tri0 + 26, 28, 27, // tri1 + 0, 2, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r7_b_1_v[30], 18, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 2, 5, // tri0 + 2, 3, 5, // tri1 + 2, 1, 3, // tri2 + 8, 9, 2 // tri3 + ), + gsSPNTriangles_5b(9, 10, 2, // tri0 + 10, 11, 2, // tri1 + 6, 12, 13, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b(0, 7, 1, // tri0 + 15, 16, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r7_b_1_v[48], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 9, 10, 11, // tri2 + 12, 9, 13 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 14, 16, 15, // tri1 + 16, 17, 15, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(18, 20, 19, // tri0 + 20, 21, 19, // tri1 + 21, 22, 7, // tri2 + 8, 23, 24 // tri3 + ), + gsSPNTriangles_5b(23, 25, 24, // tri0 + 26, 27, 25, // tri1 + 26, 28, 27, // tri2 + 29, 30, 31 // tri3 + ), + gsSPVertex(&grd_s_r7_b_1_v[80], 18, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b(6, 4, 7, // tri0 + 8, 6, 9, // tri1 + 10, 8, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r7_b_1_v[98], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 6, 8, 7, // tri1 + 9, 10, 11, // tri2 + 12, 11, 1 // tri3 + ), + gsSPNTriangles_5b(13, 2, 14, // tri0 + 15, 14, 16, // tri1 + 17, 16, 18, // tri2 + 19, 18, 20 // tri3 + ), + gsSPNTriangles_5b(21, 10, 9, // tri0 + 9, 11, 12, // tri1 + 12, 1, 0, // tri2 + 2, 13, 3 // tri3 + ), + gsSPNTriangles_5b(22, 13, 14, // tri0 + 22, 14, 15, // tri1 + 15, 16, 17, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(23, 19, 20, // tri0 + 24, 25, 26, // tri1 + 27, 26, 28, // tri2 + 29, 28, 5 // tri3 + ), + gsSPNTriangles_5b(8, 6, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r7_b_1_v[129], 18, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b(2, 3, 6, // tri0 + 2, 6, 0, // tri1 + 1, 0, 7, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(11, 10, 12, // tri0 + 13, 11, 12, // tri1 + 14, 15, 13, // tri2 + 16, 14, 17 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r7_b_1_v[147], 15, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 3, 8, // tri0 + 9, 10, 11, // tri1 + 12, 9, 13, // tri2 + 10, 5, 14 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r7_b_1/grd_s_r7_b_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r7_b_1/grd_s_r7_b_1_evw_anime.c new file mode 100644 index 00000000..b8f8caf4 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r7_b_1/grd_s_r7_b_1_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r7_b_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r7_b_1_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_r7_b_1_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_r7_b_2/grd_s_r7_b_2.c b/src/data/field/bg/acre/grd_s_r7_b_2/grd_s_r7_b_2.c new file mode 100644 index 00000000..2ef88282 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r7_b_2/grd_s_r7_b_2.c @@ -0,0 +1,346 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_2_pal_dummy[]; +extern u8 bridge_2_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r7_b_2_v[] = { +#include "assets/field/bg/grd_s_r7_b_2_v.inc" +}; + +extern Gfx grd_s_r7_b_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r7_b_2_v[273], 20, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 5, 9, 6, // tri2 + 5, 10, 9 // tri3 + ), + gsSPNTriangles_5b(10, 2, 9, // tri0 + 2, 1, 9, // tri1 + 0, 11, 4, // tri2 + 0, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 12, 14, 13, // tri1 + 14, 15, 13, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(14, 17, 16, // tri0 + 17, 18, 16, // tri1 + 19, 16, 18, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r7_b_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r7_b_2_v[222], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_2_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_2_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r7_b_2_v[235], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 1, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 10, 9, 6 // tri3 + ), + gsSPNTriangles_5b(10, 11, 9, // tri0 + 11, 12, 9, // tri1 + 12, 13, 9, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 18, 16, 19, // tri1 + 18, 14, 16, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(19, 16, 20, // tri0 + 22, 23, 24, // tri1 + 22, 25, 23, // tri2 + 26, 25, 22 // tri3 + ), + gsSPNTriangles_5b(26, 27, 25, // tri0 + 27, 28, 25, // tri1 + 28, 29, 25, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r7_b_2_v[265], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 2, 5 // tri2 + ), + gsSPNTriangles_5b(4, 0, 2, // tri0 + 5, 6, 7, // tri1 + 5, 2, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r7_b_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 4, 2, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 7, 8, 9, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(10, 13, 11, // tri0 + 14, 10, 15, // tri1 + 16, 17, 18, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(22, 19, 21, // tri0 + 23, 24, 25, // tri1 + 26, 27, 24, // tri2 + 28, 29, 27 // tri3 + ), + gsSPVertex(&grd_s_r7_b_2_v[30], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 7, 8, 9, // tri1 + 7, 10, 8, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 10, 14, 11, // tri1 + 14, 15, 16, // tri2 + 15, 17, 16 // tri3 + ), + gsSPNTriangles_5b(0, 18, 1, // tri0 + 19, 20, 21, // tri1 + 22, 23, 24, // tri2 + 23, 20, 24 // tri3 + ), + gsSPNTriangles_5b(22, 25, 23, // tri0 + 26, 27, 25, // tri1 + 28, 29, 6, // tri2 + 30, 29, 28 // tri3 + ), + gsSPNTriangles_5b(30, 31, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r7_b_2_v[62], 20, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 9, 10, 11, // tri1 + 6, 12, 7, // tri2 + 11, 12, 6 // tri3 + ), + gsSPNTriangles_5b(11, 10, 12, // tri0 + 10, 13, 12, // tri1 + 14, 15, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r7_b_2_v[82], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 6, 10, // tri0 + 4, 11, 12, // tri1 + 11, 9, 13, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(14, 17, 15, // tri0 + 17, 18, 15, // tri1 + 18, 19, 20, // tri2 + 19, 21, 20 // tri3 + ), + gsSPNTriangles_5b(18, 22, 19, // tri0 + 2, 23, 24, // tri1 + 25, 26, 27, // tri2 + 25, 28, 26 // tri3 + ), + gsSPNTriangles_5b(29, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r7_b_2_v[114], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b(6, 0, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 12, 6, 13 // tri3 + ), + gsSPNTriangles_5b(0, 3, 1, // tri0 + 14, 15, 5, // tri1 + 14, 16, 15, // tri2 + 17, 11, 16 // tri3 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 21, 22, 19, // tri1 + 23, 24, 25, // tri2 + 24, 26, 27 // tri3 + ), + gsSPNTriangles_5b(28, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r7_b_2_v[145], 3, 0), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r7_b_2_v[148], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 5, 7, // tri1 + 9, 8, 7, // tri2 + 9, 7, 10 // tri3 + ), + gsSPNTriangles_5b(11, 9, 10, // tri0 + 12, 11, 10, // tri1 + 12, 10, 2, // tri2 + 1, 12, 2 // tri3 + ), + gsSPNTriangles_5b(4, 3, 13, // tri0 + 14, 4, 13, // tri1 + 14, 13, 15, // tri2 + 16, 14, 15 // tri3 + ), + gsSPNTriangles_5b(16, 15, 17, // tri0 + 18, 16, 17, // tri1 + 19, 18, 17, // tri2 + 19, 17, 20 // tri3 + ), + gsSPNTriangles_5b(21, 19, 20, // tri0 + 22, 21, 20, // tri1 + 22, 20, 23, // tri2 + 24, 22, 23 // tri3 + ), + gsSPNTriangles_5b(25, 24, 23, // tri0 + 25, 23, 26, // tri1 + 25, 26, 27, // tri2 + 27, 28, 25 // tri3 + ), + gsSPNTriangles_5b(29, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r7_b_2_v[180], 29, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 6, 7, 8 // tri3 + ), + gsSPNTriangles_5b(8, 9, 6, // tri0 + 8, 10, 9, // tri1 + 8, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 11, 14, 13, // tri1 + 14, 15, 13, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(14, 17, 16, // tri0 + 17, 18, 16, // tri1 + 17, 19, 18, // tri2 + 17, 20, 19 // tri3 + ), + gsSPNTriangles_5b(20, 21, 19, // tri0 + 20, 22, 21, // tri1 + 20, 23, 22, // tri2 + 23, 24, 22 // tri3 + ), + gsSPNTriangles_5b(23, 25, 24, // tri0 + 23, 26, 25, // tri1 + 26, 27, 25, // tri2 + 26, 28, 27 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r7_b_2_v[209], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r7_b_2/grd_s_r7_b_2_evw_anime.c b/src/data/field/bg/acre/grd_s_r7_b_2/grd_s_r7_b_2_evw_anime.c new file mode 100644 index 00000000..28e69641 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r7_b_2/grd_s_r7_b_2_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r7_b_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r7_b_2_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_r7_b_2_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_r7_p_1/grd_s_r7_p_1.c b/src/data/field/bg/acre/grd_s_r7_p_1/grd_s_r7_p_1.c new file mode 100644 index 00000000..6b870f60 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r7_p_1/grd_s_r7_p_1.c @@ -0,0 +1,337 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_2_pal_dummy[]; +extern u8 bridge_2_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r7_p_1_v[] = { +#include "assets/field/bg/grd_s_r7_p_1_v.inc" +}; + +extern Gfx grd_s_r7_p_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r7_p_1_v[256], 17, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 4, 6, // tri0 + 8, 7, 6, // tri1 + 2, 8, 6, // tri2 + 3, 2, 6 // tri3 + ), + gsSPNTriangles_5b(9, 3, 6, // tri0 + 10, 9, 6, // tri1 + 11, 10, 6, // tri2 + 12, 11, 6 // tri3 + ), + gsSPNTriangles_5b(13, 12, 6, // tri0 + 14, 13, 6, // tri1 + 14, 6, 5, // tri2 + 15, 14, 5 // tri3 + ), + gsSPNTriangles_5b(15, 5, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r7_p_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_2_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_2_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r7_p_1_v[218], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b(0, 2, 5, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 10, 8, 11 // tri3 + ), + gsSPNTriangles_5b(10, 6, 8, // tri0 + 12, 13, 10, // tri1 + 13, 6, 10, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 16, 18, 19, // tri1 + 16, 17, 18, // tri2 + 17, 20, 18 // tri3 + ), + gsSPNTriangles_5b(20, 21, 18, // tri0 + 22, 23, 24, // tri1 + 23, 25, 24, // tri2 + 26, 24, 27 // tri3 + ), + gsSPNTriangles_5b(26, 22, 24, // tri0 + 28, 29, 26, // tri1 + 29, 22, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r7_p_1_v[248], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b(2, 3, 4, // tri0 + 3, 6, 4, // tri1 + 6, 7, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r7_p_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 3, 6, // tri0 + 7, 8, 9, // tri1 + 8, 10, 9, // tri2 + 11, 12, 7 // tri3 + ), + gsSPNTriangles_5b(12, 13, 7, // tri0 + 14, 15, 16, // tri1 + 15, 17, 16, // tri2 + 17, 18, 16 // tri3 + ), + gsSPNTriangles_5b(7, 13, 8, // tri0 + 9, 11, 7, // tri1 + 19, 20, 21, // tri2 + 1, 6, 3 // tri3 + ), + gsSPNTriangles_5b(0, 22, 1, // tri0 + 0, 23, 22, // tri1 + 4, 6, 24, // tri2 + 5, 17, 3 // tri3 + ), + gsSPNTriangles_5b(5, 18, 17, // tri0 + 25, 26, 27, // tri1 + 25, 28, 26, // tri2 + 25, 29, 28 // tri3 + ), + gsSPNTriangles_5b(30, 31, 25, // tri0 + 31, 29, 25, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r7_p_1_v[32], 28, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 7, 10, 8 // tri3 + ), + gsSPNTriangles_5b(10, 11, 8, // tri0 + 7, 12, 10, // tri1 + 13, 14, 15, // tri2 + 16, 17, 13 // tri3 + ), + gsSPNTriangles_5b(17, 14, 13, // tri0 + 18, 17, 16, // tri1 + 17, 19, 14, // tri2 + 20, 10, 12 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 21, 24, 22, // tri1 + 24, 25, 22, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b(26, 27, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r7_p_1_v[60], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 6, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 11, 14, 12, // tri1 + 3, 15, 4, // tri2 + 15, 16, 4 // tri3 + ), + gsSPNTriangles_5b(14, 11, 17, // tri0 + 18, 19, 20, // tri1 + 21, 22, 23, // tri2 + 22, 14, 17 // tri3 + ), + gsSPNTriangles_5b(19, 24, 20, // tri0 + 22, 17, 23, // tri1 + 20, 25, 26, // tri2 + 27, 28, 18 // tri3 + ), + gsSPNTriangles_5b(10, 29, 27, // tri0 + 5, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r7_p_1_v[92], 14, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 6, 13, // tri1 + 10, 3, 5, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r7_p_1_v[106], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 9, 7, // tri1 + 9, 5, 7, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 11, 14, 13, // tri1 + 15, 16, 17, // tri2 + 15, 18, 16 // tri3 + ), + gsSPNTriangles_5b(19, 7, 6, // tri0 + 20, 21, 22, // tri1 + 21, 23, 22, // tri2 + 21, 24, 23 // tri3 + ), + gsSPNTriangles_5b(23, 25, 22, // tri0 + 6, 5, 26, // tri1 + 27, 5, 9, // tri2 + 18, 28, 16 // tri3 + ), + gsSPNTriangles_5b(18, 29, 28, // tri0 + 18, 30, 29, // tri1 + 15, 14, 18, // tri2 + 14, 30, 18 // tri3 + ), + gsSPNTriangles_5b(4, 31, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r7_p_1_v[138], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(1, 3, 7, // tri0 + 3, 5, 7, // tri1 + 8, 9, 10, // tri2 + 9, 11, 10 // tri3 + ), + gsSPNTriangles_5b(12, 11, 13, // tri0 + 11, 9, 13, // tri1 + 14, 15, 16, // tri2 + 9, 17, 13 // tri3 + ), + gsSPNTriangles_5b(18, 14, 16, // tri0 + 19, 18, 16, // tri1 + 20, 15, 14, // tri2 + 18, 20, 14 // tri3 + ), + gsSPNTriangles_5b(18, 21, 20, // tri0 + 22, 23, 24, // tri1 + 23, 25, 24, // tri2 + 25, 26, 24 // tri3 + ), + gsSPNTriangles_5b(27, 28, 29, // tri0 + 28, 30, 29, // tri1 + 31, 27, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r7_p_1_v[170], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 8, 9, 7, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 13, 8, 12, // tri1 + 14, 15, 16, // tri2 + 15, 17, 16 // tri3 + ), + gsSPNTriangles_5b(18, 17, 19, // tri0 + 17, 20, 16, // tri1 + 21, 18, 19, // tri2 + 18, 22, 17 // tri3 + ), + gsSPNTriangles_5b(21, 23, 18, // tri0 + 23, 22, 18, // tri1 + 23, 24, 22, // tri2 + 23, 25, 24 // tri3 + ), + gsSPNTriangles_5b(26, 27, 28, // tri0 + 27, 29, 28, // tri1 + 30, 31, 28, // tri2 + 29, 30, 28 // tri3 + ), + gsSPVertex(&grd_s_r7_p_1_v[202], 16, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 4, 0, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 6, // tri0 + 5, 7, 6, // tri1 + 4, 8, 5, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b(9, 12, 10, // tri0 + 13, 14, 15, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r7_p_1/grd_s_r7_p_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r7_p_1/grd_s_r7_p_1_evw_anime.c new file mode 100644 index 00000000..1c8fe1e9 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r7_p_1/grd_s_r7_p_1_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r7_p_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r7_p_1_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_r7_p_1_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_t_1/grd_s_t_1.c b/src/data/field/bg/acre/grd_s_t_1/grd_s_t_1.c new file mode 100644 index 00000000..d235e3b0 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_1/grd_s_t_1.c @@ -0,0 +1,224 @@ +#include "libforest/gbi_extensions.h" + +extern u8 rail_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 rail_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_t_1_v[] = { +#include "assets/field/bg/grd_s_t_1_v.inc" +}; + +extern Gfx grd_s_t_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_1_v[158], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_t_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 9, 10, 11, // tri1 + 10, 12, 13, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b(12, 15, 14, // tri0 + 15, 16, 14, // tri1 + 17, 18, 19, // tri2 + 17, 20, 18 // tri3 + ), + gsSPNTriangles_5b(20, 21, 18, // tri0 + 20, 22, 21, // tri1 + 21, 23, 18, // tri2 + 21, 24, 23 // tri3 + ), + gsSPNTriangles_5b(23, 25, 18, // tri0 + 25, 26, 18, // tri1 + 25, 27, 26, // tri2 + 27, 28, 26 // tri3 + ), + gsSPNTriangles_5b(20, 29, 30, // tri0 + 20, 30, 22, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_1_v[31], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 8, 9, 10, // tri1 + 9, 11, 12, // tri2 + 11, 13, 14 // tri3 + ), + gsSPNTriangles_5b(13, 15, 16, // tri0 + 17, 18, 0, // tri1 + 17, 19, 18, // tri2 + 0, 2, 17 // tri3 + ), + gsSPNTriangles_5b(20, 21, 22, // tri0 + 20, 23, 21, // tri1 + 24, 25, 17, // tri2 + 25, 26, 19 // tri3 + ), + gsSPNTriangles_5b(25, 19, 17, // tri0 + 25, 27, 26, // tri1 + 25, 28, 27, // tri2 + 24, 29, 25 // tri3 + ), + gsSPNTriangles_5b(30, 29, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_1_v[62], 16, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 0, 4 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 6, 9, 7, // tri1 + 9, 10, 7, // tri2 + 9, 11, 10 // tri3 + ), + gsSPNTriangles_5b(10, 12, 7, // tri0 + 13, 14, 15, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(rail_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_1_v[78], 20, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b(3, 4, 5, // tri0 + 5, 4, 6, // tri1 + 5, 6, 7, // tri2 + 7, 6, 8 // tri3 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 1, 10, 11, // tri1 + 1, 11, 2, // tri2 + 2, 11, 12 // tri3 + ), + gsSPNTriangles_5b(2, 12, 4, // tri0 + 4, 12, 13, // tri1 + 4, 13, 6, // tri2 + 6, 13, 14 // tri3 + ), + gsSPNTriangles_5b(6, 14, 8, // tri0 + 10, 15, 16, // tri1 + 10, 16, 11, // tri2 + 11, 16, 17 // tri3 + ), + gsSPNTriangles_5b(11, 17, 12, // tri0 + 12, 17, 18, // tri1 + 12, 18, 13, // tri2 + 13, 18, 19 // tri3 + ), + gsSPNTriangles_5b(13, 19, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_1_v[98], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 1, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 8, 9, 10, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(12, 3, 14, // tri0 + 15, 16, 17, // tri1 + 16, 18, 17, // tri2 + 16, 19, 18 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 22, 23, 24, // tri1 + 20, 22, 25, // tri2 + 23, 26, 27 // tri3 + ), + gsSPNTriangles_5b(26, 28, 29, // tri0 + 23, 27, 24, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_1_v[128], 5, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_1_v[133], 25, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 6, 7, 5, // tri1 + 6, 8, 7, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 12, 13, 11, // tri1 + 12, 14, 13, // tri2 + 14, 15, 13 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 16, 18, 17, // tri1 + 19, 20, 18, // tri2 + 21, 22, 20 // tri3 + ), + gsSPNTriangles_5b(21, 23, 22, // tri0 + 21, 24, 23, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_t_1/grd_s_t_1_evw_anime.c b/src/data/field/bg/acre/grd_s_t_1/grd_s_t_1_evw_anime.c new file mode 100644 index 00000000..7e6c5261 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_1/grd_s_t_1_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_t_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_t_1_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_t_1_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_t_10/grd_s_t_10.c b/src/data/field/bg/acre/grd_s_t_10/grd_s_t_10.c new file mode 100644 index 00000000..00bbb18e --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_10/grd_s_t_10.c @@ -0,0 +1,323 @@ +#include "libforest/gbi_extensions.h" + +extern u8 rail_pal_dummy[]; +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 rail_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_t_10_v[] = { +#include "assets/field/bg/grd_s_t_10_v.inc" +}; + +extern Gfx grd_s_t_10_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_t_10_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_10_v[173], 32, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 0, 6 // tri2 + ), + gsSPNTriangles_5b( + 0, 2, 6, // tri0 + 5, 6, 7, // tri1 + 8, 5, 7, // tri2 + 9, 8, 10 // tri3 + ), + gsSPNTriangles_5b( + 8, 7, 10, // tri0 + 11, 9, 12, // tri1 + 13, 14, 15, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b( + 14, 16, 18, // tri0 + 16, 19, 17, // tri1 + 19, 20, 17, // tri2 + 21, 22, 20 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 20, // tri0 + 23, 11, 24, // tri1 + 21, 23, 22, // tri2 + 25, 26, 27 // tri3 + ), + gsSPNTriangles_5b( + 28, 25, 29, // tri0 + 30, 28, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_10_v[205], 22, 0), + gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 5, 9, // tri0 + 10, 11, 12, // tri1 + 11, 8, 13, // tri2 + 8, 9, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 17, 14, 16, // tri1 + 6, 17, 18, // tri2 + 14, 19, 15 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_10_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 10, 11, 12, // tri1 + 11, 10, 13, // tri2 + 13, 14, 11 // tri3 + ), + gsSPNTriangles_5b( + 15, 14, 13, // tri0 + 16, 14, 15, // tri1 + 15, 13, 17, // tri2 + 17, 18, 15 // tri3 + ), + gsSPNTriangles_5b( + 17, 19, 18, // tri0 + 19, 20, 18, // tri1 + 20, 21, 18, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 23, 20, 19, // tri0 + 23, 24, 20, // tri1 + 25, 24, 23, // tri2 + 26, 27, 25 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 25, // tri0 + 27, 29, 28, // tri1 + 30, 31, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_10_v[32], 24, 0), + gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 7, 5, // tri0 + 4, 8, 7, // tri1 + 5, 9, 10, // tri2 + 5, 7, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 10, 12, // tri0 + 10, 9, 12, // tri1 + 1, 13, 14, // tri2 + 13, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 16, // tri0 + 15, 18, 17, // tri1 + 17, 11, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 19, // tri0 + 19, 21, 17, // tri1 + 22, 20, 23, // tri2 + 22, 21, 20 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(rail_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_10_v[56], 20, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 1, 10, 3, // tri1 + 10, 11, 3, // tri2 + 11, 5, 3 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 5, // tri0 + 12, 7, 5, // tri1 + 12, 13, 7, // tri2 + 13, 9, 7 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 9, // tri0 + 10, 15, 11, // tri1 + 15, 16, 11, // tri2 + 16, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 12, // tri0 + 17, 13, 12, // tri1 + 17, 18, 13, // tri2 + 18, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_10_v[76], 32, 0), + gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 14, 15, 16, // tri2 + 17, 0, 18 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 15, // tri0 + 19, 6, 20, // tri1 + 4, 14, 16, // tri2 + 11, 21, 12 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 22, // tri0 + 21, 19, 22, // tri1 + 9, 11, 13, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 23, 26, 27, // tri0 + 28, 27, 26, // tri1 + 29, 28, 26, // tri2 + 30, 31, 29 // tri3 + ), + gsSPVertex(&grd_s_t_10_v[108], 9, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b( + 3, 6, 5, // tri0 + 6, 7, 8, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_10_v[117], 32, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 0, 6 // tri2 + ), + gsSPNTriangles_5b( + 0, 2, 6, // tri0 + 5, 6, 7, // tri1 + 8, 5, 7, // tri2 + 9, 8, 10 // tri3 + ), + gsSPNTriangles_5b( + 8, 7, 10, // tri0 + 11, 9, 12, // tri1 + 3, 13, 14, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 13, 15, 17, // tri0 + 15, 18, 16, // tri1 + 18, 19, 16, // tri2 + 20, 21, 19 // tri3 + ), + gsSPNTriangles_5b( + 18, 20, 19, // tri0 + 22, 23, 24, // tri1 + 20, 22, 21, // tri2 + 25, 26, 27 // tri3 + ), + gsSPNTriangles_5b( + 28, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_10_v[148], 25, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 10, 12, 13, // tri1 + 7, 14, 15, // tri2 + 14, 9, 16 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 19, // tri0 + 20, 21, 22, // tri1 + 23, 17, 24, // tri2 + 20, 0, 21 // tri3 + ), + gsSPNTriangles_5b( + 4, 20, 22, // tri0 + 17, 19, 24, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_t_2/grd_s_t_2.c b/src/data/field/bg/acre/grd_s_t_2/grd_s_t_2.c new file mode 100644 index 00000000..888b76c3 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_2/grd_s_t_2.c @@ -0,0 +1,273 @@ +#include "libforest/gbi_extensions.h" + +extern u8 rail_pal_dummy[]; +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 rail_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_t_2_v[] = { +#include "assets/field/bg/grd_s_t_2_v.inc" +}; + +extern Gfx grd_s_t_2_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_t_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_2_v[175], 32, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 2, // tri0 + 6, 7, 8, // tri1 + 9, 10, 11, // tri2 + 10, 6, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 14, // tri0 + 13, 9, 15, // tri1 + 9, 11, 15, // tri2 + 7, 3, 16 // tri3 + ), + gsSPNTriangles_5b( + 5, 17, 18, // tri0 + 19, 20, 21, // tri1 + 22, 19, 23, // tri2 + 24, 22, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 24, 27, // tri0 + 28, 26, 29, // tri1 + 30, 28, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_2_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 2, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 8, 9, 7, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 11, 1, 13, // tri1 + 14, 15, 2, // tri2 + 15, 16, 2 // tri3 + ), + gsSPNTriangles_5b( + 14, 17, 15, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20, // tri2 + 19, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 21, // tri0 + 24, 25, 26, // tri1 + 25, 27, 26, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b( + 29, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_2_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 2, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 9, 10, 11, // tri1 + 10, 12, 11, // tri2 + 7, 6, 0 // tri3 + ), + gsSPNTriangles_5b( + 1, 13, 14, // tri0 + 13, 15, 16, // tri1 + 17, 11, 12, // tri2 + 5, 18, 3 // tri3 + ), + gsSPNTriangles_5b( + 19, 3, 18, // tri0 + 19, 20, 3, // tri1 + 21, 22, 18, // tri2 + 8, 23, 24 // tri3 + ), + gsSPNTriangles_5b( + 5, 21, 18, // tri0 + 25, 26, 27, // tri1 + 26, 28, 27, // tri2 + 29, 30, 31 // tri3 + ), + gsSPVertex(&grd_s_t_2_v[64], 28, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 12, 13, 14, // tri1 + 13, 15, 16, // tri2 + 13, 16, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 16, // tri0 + 15, 18, 17, // tri1 + 19, 20, 21, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 20, 23, 22, // tri0 + 24, 25, 26, // tri1 + 24, 27, 25, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(rail_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_2_v[92], 20, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 1, 10, 3, // tri1 + 10, 11, 3, // tri2 + 11, 5, 3 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 5, // tri0 + 12, 7, 5, // tri1 + 12, 13, 7, // tri2 + 13, 9, 7 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 9, // tri0 + 10, 15, 11, // tri1 + 15, 16, 11, // tri2 + 16, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 12, // tri0 + 17, 13, 12, // tri1 + 17, 18, 13, // tri2 + 18, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_2_v[112], 31, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 5, 9, // tri1 + 10, 8, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 6, 12, 15, // tri0 + 13, 16, 17, // tri1 + 16, 18, 19, // tri2 + 4, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 0, // tri0 + 8, 24, 22, // tri1 + 25, 26, 8, // tri2 + 25, 27, 26 // tri3 + ), + gsSPNTriangles_5b( + 25, 28, 27, // tri0 + 28, 29, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_2_v[143], 32, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 2, // tri0 + 6, 7, 8, // tri1 + 9, 10, 11, // tri2 + 5, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 10, 3, 14, // tri0 + 15, 16, 17, // tri1 + 16, 9, 17, // tri2 + 7, 15, 18 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 18, // tri0 + 19, 20, 21, // tri1 + 22, 19, 23, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b( + 20, 24, 27, // tri0 + 28, 29, 30, // tri1 + 29, 22, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_t_3/grd_s_t_3.c b/src/data/field/bg/acre/grd_s_t_3/grd_s_t_3.c new file mode 100644 index 00000000..4619a889 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_3/grd_s_t_3.c @@ -0,0 +1,225 @@ +#include "libforest/gbi_extensions.h" + +extern u8 rail_pal_dummy[]; +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 rail_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_t_3_v[] = { +#include "assets/field/bg/grd_s_t_3_v.inc" +}; + +extern Gfx grd_s_t_3_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_t_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_3_v[135], 17, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 0, 6 // tri2 + ), + gsSPNTriangles_5b( + 0, 2, 6, // tri0 + 7, 8, 9, // tri1 + 10, 7, 9, // tri2 + 11, 10, 12 // tri3 + ), + gsSPNTriangles_5b( + 7, 13, 8, // tri0 + 13, 14, 15, // tri1 + 1, 11, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_3_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 3, 5 // tri2 + ), + gsSPNTriangles_5b( + 3, 6, 5, // tri0 + 3, 7, 6, // tri1 + 8, 4, 9, // tri2 + 4, 5, 9 // tri3 + ), + gsSPNTriangles_5b( + 6, 10, 5, // tri0 + 6, 11, 10, // tri1 + 12, 13, 14, // tri2 + 12, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 19, 20, 18, // tri1 + 21, 22, 20, // tri2 + 23, 24, 22 // tri3 + ), + gsSPNTriangles_5b( + 17, 19, 18, // tri0 + 19, 21, 20, // tri1 + 21, 23, 22, // tri2 + 23, 25, 24 // tri3 + ), + gsSPNTriangles_5b( + 26, 27, 28, // tri0 + 26, 29, 27, // tri1 + 26, 30, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_3_v[31], 29, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b( + 3, 6, 5, // tri0 + 6, 7, 8, // tri1 + 7, 9, 10, // tri2 + 9, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 14, 16, 15, // tri1 + 17, 14, 18, // tri2 + 17, 16, 14 // tri3 + ), + gsSPNTriangles_5b( + 17, 19, 16, // tri0 + 20, 21, 22, // tri1 + 1, 4, 2, // tri2 + 4, 23, 2 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 2, // tri0 + 7, 10, 8, // tri1 + 25, 13, 15, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b( + 27, 21, 28, // tri0 + 22, 21, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(rail_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_3_v[60], 20, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 5, 6, 4 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 6, // tri0 + 9, 10, 11, // tri1 + 12, 9, 7, // tri2 + 12, 5, 13 // tri3 + ), + gsSPNTriangles_5b( + 13, 3, 14, // tri0 + 1, 14, 3, // tri1 + 3, 13, 5, // tri2 + 5, 12, 7 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 11, // tri0 + 14, 15, 13, // tri1 + 13, 16, 12, // tri2 + 12, 17, 9 // tri3 + ), + gsSPNTriangles_5b( + 9, 18, 10, // tri0 + 18, 19, 10, // tri1 + 17, 18, 9, // tri2 + 16, 17, 12 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 13, // tri0 + 1, 3, 2, // tri1 + 3, 5, 4, // tri2 + 5, 7, 6 // tri3 + ), + gsSPNTriangles_5b( + 7, 11, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_3_v[80], 32, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 1, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 13, 17, // tri0 + 14, 18, 19, // tri1 + 18, 20, 21, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b( + 23, 16, 25, // tri0 + 23, 26, 27, // tri1 + 28, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_3_v[111], 7, 0), + gsSPNTrianglesInit_5b( + 3, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 0, 6 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_3_v[118], 17, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 6, // tri0 + 7, 8, 9, // tri1 + 10, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 13, 7, 14, // tri0 + 11, 13, 15, // tri1 + 4, 10, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_t_4/grd_s_t_4.c b/src/data/field/bg/acre/grd_s_t_4/grd_s_t_4.c new file mode 100644 index 00000000..bb5d6ef9 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_4/grd_s_t_4.c @@ -0,0 +1,284 @@ +#include "libforest/gbi_extensions.h" + +extern u8 rail_pal_dummy[]; +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 rail_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_t_4_v[] = { +#include "assets/field/bg/grd_s_t_4_v.inc" +}; + +extern Gfx grd_s_t_4_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_4_v[230], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_t_4_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_4_v[208], 22, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 12, 13, // tri2 + 14, 11, 15 // tri3 + ), + gsSPNTriangles_5b(16, 14, 17, // tri0 + 18, 16, 19, // tri1 + 20, 18, 21, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_4_v[0], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 8, 9, 10, // tri1 + 10, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(14, 16, 17, // tri0 + 16, 18, 19, // tri1 + 16, 20, 18, // tri2 + 2, 21, 0 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 24, 25, 26, // tri1 + 25, 27, 26, // tri2 + 23, 22, 28 // tri3 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 7, 9, 8, // tri1 + 9, 11, 10, // tri2 + 11, 29, 12 // tri3 + ), + gsSPNTriangles_5b(30, 31, 24, // tri0 + 24, 26, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_4_v[32], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 13, 14, // tri1 + 15, 16, 17, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 15, 20, 16, // tri1 + 22, 21, 20, // tri2 + 22, 20, 15 // tri3 + ), + gsSPNTriangles_5b(23, 24, 25, // tri0 + 25, 26, 27, // tri1 + 28, 27, 26, // tri2 + 21, 22, 29 // tri3 + ), + gsSPNTriangles_5b(30, 29, 22, // tri0 + 30, 28, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_4_v[63], 16, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 0, 4 // tri2 + ), + gsSPNTriangles_5b(5, 4, 0, // tri0 + 6, 7, 8, // tri1 + 9, 6, 10, // tri2 + 7, 6, 11 // tri3 + ), + gsSPNTriangles_5b(6, 9, 11, // tri0 + 12, 13, 14, // tri1 + 15, 11, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(rail_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_4_v[79], 20, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b(3, 4, 5, // tri0 + 5, 4, 6, // tri1 + 5, 6, 7, // tri2 + 7, 6, 8 // tri3 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 1, 10, 11, // tri1 + 1, 11, 2, // tri2 + 2, 11, 12 // tri3 + ), + gsSPNTriangles_5b(2, 12, 4, // tri0 + 4, 12, 13, // tri1 + 4, 13, 6, // tri2 + 6, 13, 14 // tri3 + ), + gsSPNTriangles_5b(6, 14, 8, // tri0 + 10, 15, 16, // tri1 + 10, 16, 11, // tri2 + 11, 16, 17 // tri3 + ), + gsSPNTriangles_5b(11, 17, 12, // tri0 + 12, 17, 18, // tri1 + 12, 18, 13, // tri2 + 13, 18, 19 // tri3 + ), + gsSPNTriangles_5b(13, 19, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_4_v[99], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 8, 10, 11, // tri1 + 12, 13, 14, // tri2 + 12, 15, 13 // tri3 + ), + gsSPNTriangles_5b(15, 16, 13, // tri0 + 16, 17, 18, // tri1 + 19, 20, 21, // tri2 + 12, 14, 22 // tri3 + ), + gsSPNTriangles_5b(14, 23, 22, // tri0 + 14, 19, 23, // tri1 + 21, 24, 6, // tri2 + 25, 2, 26 // tri3 + ), + gsSPNTriangles_5b(3, 27, 28, // tri0 + 0, 5, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_4_v[129], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 6, 3, 9, // tri1 + 10, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 14, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b(22, 8, 23, // tri0 + 24, 25, 26, // tri1 + 25, 27, 28, // tri2 + 27, 18, 20 // tri3 + ), + gsSPNTriangles_5b(16, 29, 17, // tri0 + 29, 24, 17, // tri1 + 30, 31, 15, // tri2 + 10, 30, 11 // tri3 + ), + gsSPNTriangles_5b(31, 13, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_4_v[161], 25, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 6, 7, 5, // tri1 + 6, 8, 7, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 12, 13, 11, // tri1 + 12, 14, 13, // tri2 + 14, 15, 13 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 16, 18, 17, // tri1 + 19, 20, 18, // tri2 + 21, 22, 20 // tri3 + ), + gsSPNTriangles_5b(21, 23, 22, // tri0 + 21, 24, 23, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_4_v[186], 22, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 8, 3, 10, // tri1 + 11, 12, 13, // tri2 + 14, 11, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 12, 16, 19, // tri1 + 20, 14, 21, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_t_4/grd_s_t_4_evw_anime.c b/src/data/field/bg/acre/grd_s_t_4/grd_s_t_4_evw_anime.c new file mode 100644 index 00000000..133f92f3 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_4/grd_s_t_4_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_t_4_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_t_4_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_t_4_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_t_5/grd_s_t_5.c b/src/data/field/bg/acre/grd_s_t_5/grd_s_t_5.c new file mode 100644 index 00000000..9c760b0e --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_5/grd_s_t_5.c @@ -0,0 +1,340 @@ +#include "libforest/gbi_extensions.h" + +extern u8 rail_pal_dummy[]; +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 rail_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_t_5_v[] = { +#include "assets/field/bg/grd_s_t_5_v.inc" +}; + +extern Gfx grd_s_t_5_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_5_v[244], 4, 0), + gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_t_5_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_5_v[228], 16, 0), + gsSPNTrianglesInit_5b( + 9, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 4, 8, 5, // tri1 + 9, 10, 2, // tri2 + 7, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 8, 14, // tri0 + 11, 3, 15, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_5_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 5, // tri0 + 6, 7, 5, // tri1 + 2, 8, 0, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 11, // tri0 + 13, 14, 15, // tri1 + 14, 16, 15, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 17, 20, 18, // tri0 + 6, 21, 7, // tri1 + 6, 22, 21, // tri2 + 13, 15, 9 // tri3 + ), + gsSPNTriangles_5b( + 15, 23, 9, // tri0 + 24, 25, 26, // tri1 + 25, 27, 26, // tri2 + 25, 28, 27 // tri3 + ), + gsSPNTriangles_5b( + 29, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_5_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 6, 9, 7, // tri1 + 9, 10, 7, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 11, 14, 12, // tri0 + 15, 16, 12, // tri1 + 15, 17, 16, // tri2 + 2, 18, 4 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 4, // tri0 + 20, 21, 22, // tri1 + 21, 23, 22, // tri2 + 23, 24, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 25, 24, // tri0 + 25, 26, 24, // tri1 + 25, 27, 26, // tri2 + 27, 28, 26 // tri3 + ), + gsSPNTriangles_5b( + 27, 29, 28, // tri0 + 30, 2, 3, // tri1 + 9, 31, 10, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_5_v[64], 27, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 4, // tri0 + 8, 7, 9, // tri1 + 8, 10, 7, // tri2 + 10, 4, 7 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 12, 14, 13, // tri1 + 14, 15, 13, // tri2 + 15, 16, 13 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 10, // tri0 + 17, 19, 18, // tri1 + 20, 21, 19, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 23, 26, 24, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(rail_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_5_v[91], 20, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 1, 10, 3, // tri1 + 10, 11, 3, // tri2 + 11, 5, 3 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 5, // tri0 + 12, 7, 5, // tri1 + 12, 13, 7, // tri2 + 13, 9, 7 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 9, // tri0 + 10, 15, 11, // tri1 + 15, 16, 11, // tri2 + 16, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 12, // tri0 + 17, 13, 12, // tri1 + 17, 18, 13, // tri2 + 18, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_5_v[111], 32, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 1, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 1, // tri0 + 7, 8, 9, // tri1 + 10, 11, 12, // tri2 + 11, 13, 12 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 15, 17, 16, // tri1 + 17, 18, 16, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 24, // tri0 + 5, 22, 25, // tri1 + 26, 3, 27, // tri2 + 28, 29, 30 // tri3 + ), + gsSPVertex(&grd_s_t_5_v[142], 32, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 13, 14, 10, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 20, // tri0 + 21, 18, 22, // tri1 + 19, 23, 24, // tri2 + 23, 25, 26 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 29, // tri0 + 28, 21, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_5_v[173], 10, 0), + gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_5_v[183], 16, 0), + gsSPNTrianglesInit_5b( + 9, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 4, 8, 5, // tri1 + 9, 10, 2, // tri2 + 11, 8, 12 // tri3 + ), + gsSPNTriangles_5b( + 7, 13, 14, // tri0 + 13, 3, 15, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_5_v[199], 29, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 4 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 6, // tri0 + 9, 10, 8, // tri1 + 11, 12, 10, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 14, // tri0 + 17, 18, 16, // tri1 + 19, 20, 18, // tri2 + 19, 21, 20 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 20, // tri0 + 23, 24, 22, // tri1 + 25, 26, 24, // tri2 + 27, 28, 26 // tri3 + ), + gsSPNTriangles_5b( + 6, 5, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_t_5/grd_s_t_5_evw_anime.c b/src/data/field/bg/acre/grd_s_t_5/grd_s_t_5_evw_anime.c new file mode 100644 index 00000000..9cb6b1dd --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_5/grd_s_t_5_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_t_5_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_t_5_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_t_5_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_t_6/grd_s_t_6.c b/src/data/field/bg/acre/grd_s_t_6/grd_s_t_6.c new file mode 100644 index 00000000..71b2b7cd --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_6/grd_s_t_6.c @@ -0,0 +1,355 @@ +#include "libforest/gbi_extensions.h" + +extern u8 rail_pal_dummy[]; +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 rail_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_t_6_v[] = { +#include "assets/field/bg/grd_s_t_6_v.inc" +}; + +extern Gfx grd_s_t_6_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_t_6_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_6_v[204], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 9, 10, 11, // tri1 + 10, 4, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 14, 9, 16, // tri0 + 17, 18, 19, // tri1 + 20, 17, 21, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 22, 24, // tri0 + 25, 23, 24, // tri1 + 26, 25, 27, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b( + 29, 26, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_6_v[236], 32, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 1, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 7, 9, 8, // tri1 + 10, 11, 9, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 13, 15, 16, // tri0 + 15, 17, 16, // tri1 + 3, 4, 17, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 23, // tri0 + 24, 21, 25, // tri1 + 26, 27, 28, // tri2 + 29, 18, 30 // tri3 + ), + gsSPVertex(&grd_s_t_6_v[267], 11, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 9, 6, // tri1 + 10, 5, 7, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_6_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 1, 5 // tri2 + ), + gsSPNTriangles_5b( + 1, 0, 5, // tri0 + 3, 6, 2, // tri1 + 7, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 9, // tri0 + 12, 6, 3, // tri1 + 12, 13, 6, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 16, // tri0 + 17, 18, 16, // tri1 + 17, 19, 18, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 20, // tri0 + 21, 22, 20, // tri1 + 21, 23, 22, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b( + 24, 27, 25, // tri0 + 27, 28, 25, // tri1 + 28, 27, 8, // tri2 + 7, 28, 8 // tri3 + ), + gsSPNTriangles_5b( + 29, 30, 26, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_6_v[31], 27, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 5, 3, 4, // tri0 + 4, 6, 7, // tri1 + 7, 5, 4, // tri2 + 8, 5, 7 // tri3 + ), + gsSPNTriangles_5b( + 6, 9, 7, // tri0 + 6, 10, 9, // tri1 + 9, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 17, 19, 18, // tri1 + 17, 20, 19, // tri2 + 16, 14, 17 // tri3 + ), + gsSPNTriangles_5b( + 14, 13, 17, // tri0 + 21, 22, 23, // tri1 + 21, 18, 22, // tri2 + 18, 19, 22 // tri3 + ), + gsSPNTriangles_5b( + 24, 25, 8, // tri0 + 26, 25, 24, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(rail_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_6_v[58], 20, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 1, 10, 3, // tri1 + 10, 11, 3, // tri2 + 11, 5, 3 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 5, // tri0 + 12, 7, 5, // tri1 + 12, 13, 7, // tri2 + 13, 9, 7 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 9, // tri0 + 10, 15, 11, // tri1 + 15, 16, 11, // tri2 + 16, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 12, // tri0 + 17, 13, 12, // tri1 + 17, 18, 13, // tri2 + 18, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_6_v[78], 32, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 5, 9, // tri1 + 6, 10, 11, // tri2 + 10, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 15, 8, 17, // tri1 + 18, 19, 20, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b( + 2, 21, 24, // tri0 + 25, 26, 27, // tri1 + 28, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_6_v[109], 25, 0), + gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 1 // tri2 + ), + gsSPNTriangles_5b( + 6, 0, 2, // tri0 + 7, 8, 9, // tri1 + 10, 7, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 12, 16, // tri0 + 17, 18, 19, // tri1 + 20, 17, 21, // tri2 + 13, 22, 23 // tri3 + ), + gsSPNTriangles_5b( + 22, 20, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_6_v[134], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 0, 7, 8, // tri0 + 9, 10, 11, // tri1 + 10, 12, 13, // tri2 + 14, 2, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 4, 17, // tri0 + 18, 19, 20, // tri1 + 7, 9, 21, // tri2 + 12, 18, 20 // tri3 + ), + gsSPNTriangles_5b( + 7, 21, 8, // tri0 + 16, 17, 19, // tri1 + 22, 23, 24, // tri2 + 25, 26, 27 // tri3 + ), + gsSPNTriangles_5b( + 28, 25, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_6_v[164], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 0, 9, // tri0 + 3, 10, 11, // tri1 + 12, 13, 14, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 20, // tri0 + 8, 9, 21, // tri1 + 22, 20, 23, // tri2 + 12, 5, 13 // tri3 + ), + gsSPNTriangles_5b( + 24, 22, 23, // tri0 + 16, 21, 17, // tri1 + 18, 25, 19, // tri2 + 10, 14, 11 // tri3 + ), + gsSPNTriangles_5b( + 26, 27, 28, // tri0 + 29, 26, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_6_v[195], 9, 0), + gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 6, 0, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_t_7/grd_s_t_7.c b/src/data/field/bg/acre/grd_s_t_7/grd_s_t_7.c new file mode 100644 index 00000000..1952bbee --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_7/grd_s_t_7.c @@ -0,0 +1,325 @@ +#include "libforest/gbi_extensions.h" + +extern u8 rail_pal_dummy[]; +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 rail_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_t_7_v[] = { +#include "assets/field/bg/grd_s_t_7_v.inc" +}; + +extern Gfx grd_s_t_7_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_t_7_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_7_v[196], 32, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 8, 11, 9, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 13, 15, 14, // tri0 + 16, 3, 17, // tri1 + 18, 19, 20, // tri2 + 21, 20, 8 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 24, // tri0 + 25, 24, 26, // tri1 + 27, 28, 29, // tri2 + 30, 31, 19 // tri3 + ), + gsSPVertex(&grd_s_t_7_v[228], 32, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 6, 2 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 7, 10, 8, // tri1 + 11, 12, 13, // tri2 + 14, 13, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 15, 17, // tri0 + 18, 17, 19, // tri1 + 20, 19, 21, // tri2 + 22, 21, 23 // tri3 + ), + gsSPNTriangles_5b( + 24, 25, 26, // tri0 + 27, 24, 26, // tri1 + 28, 29, 25, // tri2 + 30, 27, 31 // tri3 + ), + gsSPVertex(&grd_s_t_7_v[260], 17, 0), + gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 9, 2, 10, // tri0 + 7, 11, 12, // tri1 + 11, 10, 12, // tri2 + 6, 8, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_7_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 7, 5, // tri0 + 8, 9, 10, // tri1 + 11, 12, 9, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 15, 17, 16, // tri1 + 13, 15, 14, // tri2 + 11, 13, 12 // tri3 + ), + gsSPNTriangles_5b( + 8, 11, 9, // tri0 + 18, 19, 20, // tri1 + 21, 22, 19, // tri2 + 23, 24, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 25, 24, // tri0 + 25, 26, 24, // tri1 + 27, 28, 26, // tri2 + 29, 30, 28 // tri3 + ), + gsSPVertex(&grd_s_t_7_v[31], 32, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 1, 0, 3, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b( + 6, 5, 7, // tri0 + 4, 8, 9, // tri1 + 4, 3, 8, // tri2 + 3, 0, 8 // tri3 + ), + gsSPNTriangles_5b( + 0, 2, 10, // tri0 + 10, 2, 11, // tri1 + 12, 6, 7, // tri2 + 6, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 15, 14, 17, // tri1 + 18, 19, 20, // tri2 + 13, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 21, 17, // tri0 + 21, 23, 22, // tri1 + 24, 25, 26, // tri2 + 25, 24, 27 // tri3 + ), + gsSPNTriangles_5b( + 28, 29, 30, // tri0 + 29, 31, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(rail_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_7_v[63], 20, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 7, 9, 8, // tri1 + 5, 7, 6, // tri2 + 3, 5, 4 // tri3 + ), + gsSPNTriangles_5b( + 1, 3, 2, // tri0 + 1, 10, 3, // tri1 + 10, 11, 3, // tri2 + 3, 11, 5 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 5, // tri0 + 5, 12, 7, // tri1 + 12, 13, 7, // tri2 + 13, 14, 9 // tri3 + ), + gsSPNTriangles_5b( + 7, 13, 9, // tri0 + 10, 15, 11, // tri1 + 15, 16, 11, // tri2 + 11, 16, 12 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 12, // tri0 + 12, 17, 13, // tri1 + 17, 18, 13, // tri2 + 13, 18, 14 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_7_v[83], 32, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 5, 6, 1 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 6, // tri0 + 9, 10, 11, // tri1 + 12, 4, 10, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 19, 20, 21, // tri1 + 22, 15, 23, // tri2 + 24, 22, 23 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 17, // tri0 + 20, 25, 21, // tri1 + 26, 27, 25, // tri2 + 28, 29, 30 // tri3 + ), + gsSPVertex(&grd_s_t_7_v[114], 10, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 2, 7 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 8, // tri0 + 9, 6, 7, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_7_v[124], 32, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 13, 15, 14, // tri0 + 16, 0, 17, // tri1 + 18, 11, 2, // tri2 + 3, 18, 2 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 21, // tri0 + 22, 21, 23, // tri1 + 24, 23, 9, // tri2 + 25, 26, 27 // tri3 + ), + gsSPNTriangles_5b( + 19, 25, 20, // tri0 + 26, 28, 27, // tri1 + 26, 29, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_7_v[154], 32, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 7, 9, // tri0 + 10, 11, 12, // tri1 + 13, 12, 6, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 17, 9, 15, // tri0 + 18, 19, 20, // tri1 + 21, 22, 23, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b( + 27, 24, 26, // tri0 + 28, 29, 25, // tri1 + 21, 27, 22, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_7_v[184], 12, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 1 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 6, 10, 11, // tri1 + 10, 9, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_t_8/grd_s_t_8.c b/src/data/field/bg/acre/grd_s_t_8/grd_s_t_8.c new file mode 100644 index 00000000..c9f26bb1 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_8/grd_s_t_8.c @@ -0,0 +1,268 @@ +#include "libforest/gbi_extensions.h" + +extern u8 rail_pal_dummy[]; +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 rail_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_t_8_v[] = { +#include "assets/field/bg/grd_s_t_8_v.inc" +}; + +extern Gfx grd_s_t_8_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_t_8_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_8_v[166], 30, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 6, 3, 8, // tri0 + 3, 4, 8, // tri1 + 9, 10, 11, // tri2 + 12, 9, 11 // tri3 + ), + gsSPNTriangles_5b( + 1, 12, 13, // tri0 + 9, 14, 10, // tri1 + 14, 15, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 17, 21, // tri0 + 22, 20, 23, // tri1 + 24, 22, 25, // tri2 + 26, 24, 27 // tri3 + ), + gsSPNTriangles_5b( + 28, 26, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_8_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 7, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 9, // tri0 + 9, 12, 7, // tri1 + 12, 13, 7, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 16, // tri0 + 18, 3, 19, // tri1 + 3, 0, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 21, 23, 22, // tri0 + 23, 24, 22, // tri1 + 23, 25, 24, // tri2 + 25, 26, 24 // tri3 + ), + gsSPNTriangles_5b( + 25, 27, 26, // tri0 + 27, 28, 26, // tri1 + 27, 29, 28, // tri2 + 17, 30, 31 // tri3 + ), + gsSPVertex(&grd_s_t_8_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 6, // tri0 + 4, 6, 3, // tri1 + 5, 7, 6, // tri2 + 0, 8, 9 // tri3 + ), + gsSPNTriangles_5b( + 8, 10, 9, // tri0 + 10, 11, 9, // tri1 + 12, 11, 13, // tri2 + 11, 10, 13 // tri3 + ), + gsSPNTriangles_5b( + 10, 14, 13, // tri0 + 13, 14, 15, // tri1 + 15, 14, 16, // tri2 + 16, 7, 17 // tri3 + ), + gsSPNTriangles_5b( + 5, 17, 7, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20, // tri2 + 19, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 26, 27, 28, // tri1 + 12, 29, 30, // tri2 + 29, 31, 30 // tri3 + ), + gsSPVertex(&grd_s_t_8_v[64], 7, 0), + gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 2, 5, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(rail_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_8_v[71], 20, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 1, 10, 3, // tri1 + 10, 11, 3, // tri2 + 11, 5, 3 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 5, // tri0 + 12, 7, 5, // tri1 + 12, 13, 7, // tri2 + 13, 9, 7 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 9, // tri0 + 10, 15, 11, // tri1 + 15, 16, 11, // tri2 + 16, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 12, // tri0 + 17, 13, 12, // tri1 + 17, 18, 13, // tri2 + 18, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_8_v[91], 32, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 5, 9, // tri1 + 10, 8, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 6, 12, 15, // tri0 + 13, 16, 17, // tri1 + 16, 18, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 26, 23, 27, // tri1 + 21, 28, 29, // tri2 + 28, 26, 30 // tri3 + ), + gsSPVertex(&grd_s_t_8_v[122], 14, 0), + gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 3 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 6, // tri0 + 8, 10, 9, // tri1 + 8, 11, 10, // tri2 + 11, 12, 13 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_8_v[136], 30, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 4, 9, 10, // tri0 + 11, 3, 12, // tri1 + 13, 14, 15, // tri2 + 1, 11, 16 // tri3 + ), + gsSPNTriangles_5b( + 13, 6, 14, // tri0 + 9, 13, 15, // tri1 + 11, 12, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 17, 21, // tri0 + 22, 23, 24, // tri1 + 18, 22, 25, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b( + 27, 20, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_t_9/grd_s_t_9.c b/src/data/field/bg/acre/grd_s_t_9/grd_s_t_9.c new file mode 100644 index 00000000..50a37080 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_9/grd_s_t_9.c @@ -0,0 +1,268 @@ +#include "libforest/gbi_extensions.h" + +extern u8 rail_pal_dummy[]; +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 rail_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_t_9_v[] = { +#include "assets/field/bg/grd_s_t_9_v.inc" +}; + +extern Gfx grd_s_t_9_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_t_9_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_9_v[180], 24, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 13, 17, // tri0 + 18, 16, 19, // tri1 + 20, 18, 21, // tri2 + 22, 20, 23 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_9_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 9, 10, 11, // tri1 + 10, 12, 11, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 6, 8, 7, // tri0 + 4, 6, 5, // tri1 + 13, 14, 15, // tri2 + 14, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 16, 18, 19, // tri0 + 18, 20, 21, // tri1 + 20, 22, 23, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 29, // tri0 + 28, 30, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_9_v[31], 32, 0), + gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 1, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 7, 9, 10, // tri1 + 11, 12, 8, // tri2 + 12, 11, 13 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 16, 14, 13, // tri1 + 17, 18, 16, // tri2 + 17, 19, 18 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 10, // tri0 + 10, 21, 19, // tri1 + 21, 22, 19, // tri2 + 23, 22, 24 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 19, // tri0 + 25, 23, 26, // tri1 + 18, 19, 25, // tri2 + 25, 19, 23 // tri3 + ), + gsSPNTriangles_5b( + 24, 27, 28, // tri0 + 27, 29, 28, // tri1 + 0, 5, 1, // tri2 + 2, 30, 0 // tri3 + ), + gsSPVertex(&grd_s_t_9_v[62], 17, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 6, 3 // tri2 + ), + gsSPNTriangles_5b( + 7, 6, 8, // tri0 + 6, 5, 8, // tri1 + 5, 9, 8, // tri2 + 10, 9, 2 // tri3 + ), + gsSPNTriangles_5b( + 10, 2, 1, // tri0 + 11, 9, 10, // tri1 + 11, 8, 9, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 8, 11, 15, // tri0 + 11, 16, 15, // tri1 + 16, 12, 15, // tri2 + 13, 12, 16 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(rail_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_9_v[79], 20, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 7, 9, 8, // tri1 + 5, 7, 6, // tri2 + 10, 11, 9 // tri3 + ), + gsSPNTriangles_5b( + 7, 10, 9, // tri0 + 5, 12, 7, // tri1 + 12, 10, 7, // tri2 + 3, 13, 5 // tri3 + ), + gsSPNTriangles_5b( + 13, 12, 5, // tri0 + 3, 5, 4, // tri1 + 1, 3, 2, // tri2 + 1, 14, 3 // tri3 + ), + gsSPNTriangles_5b( + 14, 13, 3, // tri0 + 14, 15, 13, // tri1 + 15, 16, 13, // tri2 + 13, 16, 12 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 12, // tri0 + 12, 17, 10, // tri1 + 17, 18, 10, // tri2 + 10, 18, 11 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 11, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_9_v[99], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 5, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 6, 5, 3, // tri0 + 7, 8, 6, // tri1 + 9, 10, 7, // tri2 + 11, 12, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 11, 14, 13, // tri1 + 14, 15, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 19, 21, // tri0 + 22, 23, 24, // tri1 + 25, 22, 26, // tri2 + 17, 25, 27 // tri3 + ), + gsSPNTriangles_5b( + 28, 29, 30, // tri0 + 28, 31, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_9_v[131], 25, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 0, 2, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 7, 9, 10, // tri1 + 9, 11, 10, // tri2 + 6, 8, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 5, 14, // tri0 + 1, 4, 2, // tri1 + 3, 15, 16, // tri2 + 15, 17, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 13, 14, // tri0 + 20, 21, 22, // tri1 + 21, 23, 24, // tri2 + 9, 20, 11 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_9_v[156], 24, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 17, 19, 20, // tri1 + 14, 21, 22, // tri2 + 21, 16, 23 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_t_po_1/grd_s_t_po_1.c b/src/data/field/bg/acre/grd_s_t_po_1/grd_s_t_po_1.c new file mode 100644 index 00000000..7dd2c2e4 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_po_1/grd_s_t_po_1.c @@ -0,0 +1,256 @@ +#include "libforest/gbi_extensions.h" + +extern u8 rail_pal_dummy[]; +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 stone_tex_dummy[]; +extern u8 rail_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_t_po_1_v[] = { +#include "assets/field/bg/grd_s_t_po_1_v.inc" +}; + +extern Gfx grd_s_t_po_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_t_po_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_po_1_v[157], 11, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 7, 4, // tri0 + 9, 10, 6, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_po_1_v[0], 11, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 2, 4 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 8, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(rail_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_po_1_v[11], 20, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 8, 5, 4, // tri1 + 8, 9, 5, // tri2 + 10, 11, 8 // tri3 + ), + gsSPNTriangles_5b( + 11, 9, 8, // tri0 + 12, 11, 10, // tri1 + 12, 13, 11, // tri2 + 13, 14, 11 // tri3 + ), + gsSPNTriangles_5b( + 14, 3, 11, // tri0 + 11, 1, 9, // tri1 + 11, 3, 1, // tri2 + 9, 1, 5 // tri3 + ), + gsSPNTriangles_5b( + 1, 15, 5, // tri0 + 5, 16, 7, // tri1 + 5, 15, 16, // tri2 + 15, 17, 16 // tri3 + ), + gsSPNTriangles_5b( + 15, 18, 17, // tri0 + 1, 18, 15, // tri1 + 1, 0, 18, // tri2 + 14, 19, 3 // tri3 + ), + gsSPNTriangles_5b( + 19, 2, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_po_1_v[31], 32, 0), + gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 5, 6, 7, // tri1 + 8, 7, 9, // tri2 + 7, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 9, 11, 12, // tri0 + 9, 10, 11, // tri1 + 13, 14, 15, // tri2 + 16, 17, 2 // tri3 + ), + gsSPNTriangles_5b( + 0, 18, 19, // tri0 + 1, 0, 19, // tri1 + 20, 19, 21, // tri2 + 19, 18, 21 // tri3 + ), + gsSPNTriangles_5b( + 18, 22, 21, // tri0 + 21, 22, 23, // tri1 + 22, 24, 23, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 27, 24, // tri0 + 24, 27, 25, // tri1 + 28, 29, 30, // tri2 + 28, 31, 29 // tri3 + ), + gsSPVertex(&grd_s_t_po_1_v[63], 28, 0), + gsSPNTrianglesInit_5b( + 25, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 4, 3, 5 // tri2 + ), + gsSPNTriangles_5b( + 2, 4, 6, // tri0 + 2, 3, 4, // tri1 + 7, 8, 6, // tri2 + 9, 10, 7 // tri3 + ), + gsSPNTriangles_5b( + 10, 8, 7, // tri0 + 11, 12, 13, // tri1 + 12, 11, 14, // tri2 + 10, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 10, 9, 15, // tri0 + 9, 17, 15, // tri1 + 17, 14, 15, // tri2 + 14, 11, 15 // tri3 + ), + gsSPNTriangles_5b( + 11, 18, 15, // tri0 + 16, 15, 18, // tri1 + 5, 19, 20, // tri2 + 19, 21, 20 // tri3 + ), + gsSPNTriangles_5b( + 19, 22, 21, // tri0 + 23, 22, 19, // tri1 + 23, 24, 22, // tri2 + 24, 25, 22 // tri3 + ), + gsSPNTriangles_5b( + 26, 24, 23, // tri0 + 26, 27, 24, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_po_1_v[91], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 6, 3, 8, // tri0 + 9, 10, 11, // tri1 + 12, 9, 13, // tri2 + 10, 5, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 18, 15, 19, // tri1 + 20, 21, 22, // tri2 + 21, 18, 23 // tri3 + ), + gsSPNTriangles_5b( + 20, 22, 24, // tri0 + 25, 24, 26, // tri1 + 27, 28, 29, // tri2 + 28, 30, 31 // tri3 + ), + gsSPNTriangles_5b( + 30, 25, 26, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_po_1_v[123], 6, 0), + gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(stone_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_po_1_v[129], 28, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 6, 3, 8, // tri0 + 9, 5, 10, // tri1 + 11, 9, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 13, 17, // tri0 + 18, 19, 20, // tri1 + 19, 16, 21, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b( + 25, 22, 26, // tri0 + 23, 18, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_t_po_2/grd_s_t_po_2.c b/src/data/field/bg/acre/grd_s_t_po_2/grd_s_t_po_2.c new file mode 100644 index 00000000..d081519e --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_po_2/grd_s_t_po_2.c @@ -0,0 +1,253 @@ +#include "libforest/gbi_extensions.h" + +extern u8 rail_pal_dummy[]; +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 stone_tex_dummy[]; +extern u8 rail_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_t_po_2_v[] = { +#include "assets/field/bg/grd_s_t_po_2_v.inc" +}; + +extern Gfx grd_s_t_po_2_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_t_po_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_po_2_v[144], 19, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 8, 9, 6, // tri2 + 10, 9, 11 // tri3 + ), + gsSPNTriangles_5b( + 3, 10, 12, // tri0 + 7, 13, 14, // tri1 + 13, 15, 16, // tri2 + 15, 17, 18 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_po_2_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 8, 0, 2, // tri1 + 3, 9, 2, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 10, 13, 11, // tri0 + 13, 14, 11, // tri1 + 15, 16, 17, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b( + 6, 9, 4, // tri0 + 6, 2, 9, // tri1 + 19, 20, 21, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 16, 15, 23, // tri0 + 15, 24, 23, // tri1 + 25, 14, 13, // tri2 + 26, 19, 27 // tri3 + ), + gsSPNTriangles_5b( + 19, 28, 27, // tri0 + 10, 29, 13, // tri1 + 29, 5, 13, // tri2 + 29, 7, 5 // tri3 + ), + gsSPNTriangles_5b( + 3, 1, 30, // tri0 + 1, 31, 30, // tri1 + 31, 28, 30, // tri2 + 18, 25, 17 // tri3 + ), + gsSPNTriangles_5b( + 21, 28, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_po_2_v[32], 24, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 5, // tri0 + 6, 8, 7, // tri1 + 8, 9, 7, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 9, // tri0 + 10, 12, 11, // tri1 + 13, 14, 15, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b( + 0, 19, 20, // tri0 + 19, 21, 20, // tri1 + 0, 2, 19, // tri2 + 2, 22, 19 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(rail_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_po_2_v[56], 20, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 1, 10, 3, // tri1 + 10, 11, 3, // tri2 + 11, 5, 3 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 5, // tri0 + 12, 7, 5, // tri1 + 12, 13, 7, // tri2 + 13, 9, 7 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 9, // tri0 + 10, 15, 11, // tri1 + 15, 16, 11, // tri2 + 16, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 12, // tri0 + 17, 13, 12, // tri1 + 17, 18, 13, // tri2 + 18, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_po_2_v[76], 11, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 8, 6, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_po_2_v[87], 19, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 5, 9, 8, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 10, 14, // tri0 + 9, 13, 15, // tri1 + 4, 16, 17, // tri2 + 16, 7, 18 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(stone_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_po_2_v[106], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 1, 11, 2, // tri1 + 8, 5, 9, // tri2 + 1, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 14, // tri0 + 13, 15, 14, // tri1 + 16, 10, 17, // tri2 + 13, 18, 15 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 20, // tri0 + 19, 21, 22, // tri1 + 21, 16, 17, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 23, 27, // tri0 + 28, 29, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_po_2_v[137], 7, 0), + gsSPNTrianglesInit_5b( + 3, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 0, 6 // tri2 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_t_po_3/grd_s_t_po_3.c b/src/data/field/bg/acre/grd_s_t_po_3/grd_s_t_po_3.c new file mode 100644 index 00000000..2932e62e --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_po_3/grd_s_t_po_3.c @@ -0,0 +1,292 @@ +#include "libforest/gbi_extensions.h" + +extern u8 rail_pal_dummy[]; +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 stone_tex_dummy[]; +extern u8 rail_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_t_po_3_v[] = { +#include "assets/field/bg/grd_s_t_po_3_v.inc" +}; + +extern Gfx grd_s_t_po_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_po_3_v[223], 7, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_t_po_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_po_3_v[210], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_po_3_v[0], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 7, 9, 6, // tri2 + 7, 10, 9 // tri3 + ), + gsSPNTriangles_5b(9, 11, 6, // tri0 + 12, 13, 14, // tri1 + 12, 15, 13, // tri2 + 12, 16, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 18, 8, 19, // tri1 + 8, 5, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(21, 23, 22, // tri0 + 24, 25, 20, // tri1 + 25, 26, 20, // tri2 + 22, 24, 20 // tri3 + ), + gsSPNTriangles_5b(27, 28, 29, // tri0 + 28, 30, 29, // tri1 + 30, 28, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_po_3_v[32], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 3 // tri2 + ), + gsSPNTriangles_5b(7, 4, 3, // tri0 + 8, 9, 10, // tri1 + 11, 12, 9, // tri2 + 11, 13, 12 // tri3 + ), + gsSPNTriangles_5b(13, 14, 12, // tri0 + 15, 16, 17, // tri1 + 15, 1, 16, // tri2 + 1, 18, 16 // tri3 + ), + gsSPNTriangles_5b(18, 19, 16, // tri0 + 15, 17, 20, // tri1 + 21, 22, 23, // tri2 + 22, 24, 23 // tri3 + ), + gsSPNTriangles_5b(1, 25, 18, // tri0 + 26, 27, 28, // tri1 + 27, 29, 28, // tri2 + 29, 30, 28 // tri3 + ), + gsSPNTriangles_5b(29, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_po_3_v[64], 30, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 6, 7, 8, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(10, 13, 12, // tri0 + 14, 15, 16, // tri1 + 14, 17, 15, // tri2 + 14, 18, 17 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 19, 22, 20, // tri1 + 23, 24, 25, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b(27, 28, 13, // tri0 + 28, 12, 13, // tri1 + 28, 29, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_po_3_v[94], 17, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 8, 9, 7, // tri2 + 2, 10, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 0, // tri0 + 9, 14, 12, // tri1 + 4, 15, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_po_3_v[111], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(stone_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_po_3_v[124], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 7, 8, 9, // tri2 + 7, 10, 8 // tri3 + ), + gsSPNTriangles_5b(8, 11, 9, // tri0 + 11, 12, 9, // tri1 + 13, 14, 15, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(19, 18, 6, // tri0 + 19, 16, 18, // tri1 + 13, 12, 14, // tri2 + 20, 21, 10 // tri3 + ), + gsSPNTriangles_5b(22, 2, 21, // tri0 + 23, 24, 17, // tri1 + 25, 26, 24, // tri2 + 27, 28, 29 // tri3 + ), + gsSPNTriangles_5b(30, 27, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_po_3_v[156], 9, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 3, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(rail_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_po_3_v[165], 20, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 1, 10, 3, // tri1 + 10, 11, 3, // tri2 + 11, 5, 3 // tri3 + ), + gsSPNTriangles_5b(11, 12, 5, // tri0 + 12, 7, 5, // tri1 + 12, 13, 7, // tri2 + 13, 9, 7 // tri3 + ), + gsSPNTriangles_5b(13, 14, 9, // tri0 + 10, 15, 11, // tri1 + 15, 16, 11, // tri2 + 16, 12, 11 // tri3 + ), + gsSPNTriangles_5b(16, 17, 12, // tri0 + 17, 13, 12, // tri1 + 17, 18, 13, // tri2 + 18, 14, 13 // tri3 + ), + gsSPNTriangles_5b(18, 19, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_po_3_v[185], 25, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 5, 6, 4 // tri2 + ), + gsSPNTriangles_5b(7, 8, 6, // tri0 + 9, 10, 8, // tri1 + 11, 12, 10, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b(15, 16, 14, // tri0 + 17, 18, 16, // tri1 + 19, 20, 18, // tri2 + 21, 22, 20 // tri3 + ), + gsSPNTriangles_5b(23, 24, 22, // tri0 + 6, 5, 7, // tri1 + 17, 16, 15, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_t_po_3/grd_s_t_po_3_evw_anime.c b/src/data/field/bg/acre/grd_s_t_po_3/grd_s_t_po_3_evw_anime.c new file mode 100644 index 00000000..2ff52258 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_po_3/grd_s_t_po_3_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_t_po_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_t_po_3_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_t_po_3_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_t_r1_1/grd_s_t_r1_1.c b/src/data/field/bg/acre/grd_s_t_r1_1/grd_s_t_r1_1.c new file mode 100644 index 00000000..0368ce7f --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_r1_1/grd_s_t_r1_1.c @@ -0,0 +1,294 @@ +#include "libforest/gbi_extensions.h" + +extern u8 rail_pal_dummy[]; +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 tekkyo_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 rail_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_t_r1_1_v[] = { +#include "assets/field/bg/grd_s_t_r1_1_v.inc" +}; + +extern Gfx grd_s_t_r1_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_r1_1_v[226], 13, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 2, 5 // tri2 + ), + gsSPNTriangles_5b(4, 0, 2, // tri0 + 4, 5, 6, // tri1 + 7, 4, 6, // tri2 + 7, 6, 8 // tri3 + ), + gsSPNTriangles_5b(9, 7, 10, // tri0 + 7, 8, 10, // tri1 + 11, 10, 12, // tri2 + 11, 9, 10 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_t_r1_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_r1_1_v[189], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(tekkyo_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_MIRROR, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_r1_1_v[202], 24, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b(1, 5, 2, // tri0 + 4, 6, 7, // tri1 + 4, 7, 5, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(8, 10, 11, // tri0 + 12, 13, 14, // tri1 + 12, 14, 15, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(16, 18, 19, // tri0 + 20, 21, 22, // tri1 + 20, 22, 23, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_r1_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 4, 8, // tri0 + 9, 7, 10, // tri1 + 5, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 19, 16, 20, // tri1 + 21, 22, 23, // tri2 + 22, 19, 24 // tri3 + ), + gsSPNTriangles_5b(25, 26, 27, // tri0 + 0, 28, 29, // tri1 + 28, 21, 30, // tri2 + 19, 20, 24 // tri3 + ), + gsSPNTriangles_5b(26, 3, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_r1_1_v[32], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 3, 8, // tri0 + 9, 5, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_r1_1_v[45], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_r1_1_v[58], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 7, 10, 8 // tri3 + ), + gsSPNTriangles_5b(7, 11, 10, // tri0 + 12, 13, 14, // tri1 + 13, 15, 14, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(17, 19, 18, // tri0 + 19, 20, 18, // tri1 + 21, 22, 23, // tri2 + 22, 24, 23 // tri3 + ), + gsSPNTriangles_5b(22, 25, 24, // tri0 + 17, 16, 26, // tri1 + 16, 0, 26, // tri2 + 27, 28, 29 // tri3 + ), + gsSPNTriangles_5b(28, 30, 29, // tri0 + 28, 31, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_r1_1_v[90], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 2, 5 // tri2 + ), + gsSPNTriangles_5b(2, 3, 5, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 8, 10, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 9, // tri0 + 12, 14, 13, // tri1 + 15, 16, 17, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 19, 22, 20, // tri1 + 19, 23, 22, // tri2 + 22, 24, 20 // tri3 + ), + gsSPNTriangles_5b(25, 26, 27, // tri0 + 26, 28, 27, // tri1 + 26, 29, 28, // tri2 + 26, 30, 29 // tri3 + ), + gsSPNTriangles_5b(30, 31, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_r1_1_v[122], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(rail_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_r1_1_v[126], 28, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 1, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(10, 11, 8, // tri0 + 7, 12, 9, // tri1 + 7, 13, 12, // tri2 + 12, 10, 9 // tri3 + ), + gsSPNTriangles_5b(12, 14, 10, // tri0 + 13, 15, 12, // tri1 + 15, 16, 12, // tri2 + 16, 17, 12 // tri3 + ), + gsSPNTriangles_5b(17, 14, 12, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b(22, 25, 23, // tri0 + 26, 0, 27, // tri1 + 0, 2, 27, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_r1_1_v[154], 32, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b(6, 7, 5, // tri0 + 6, 8, 7, // tri1 + 9, 10, 8, // tri2 + 9, 11, 10 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 14, 15, 13, // tri1 + 12, 14, 13, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b(6, 9, 8, // tri0 + 3, 6, 5, // tri1 + 1, 3, 2, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(19, 20, 18, // tri0 + 18, 20, 16, // tri1 + 19, 21, 20, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b(23, 20, 21, // tri0 + 22, 24, 23, // tri1 + 24, 25, 26, // tri2 + 24, 26, 23 // tri3 + ), + gsSPNTriangles_5b(25, 27, 26, // tri0 + 27, 28, 29, // tri1 + 27, 29, 26, // tri2 + 28, 30, 29 // tri3 + ), + gsSPVertex(&grd_s_t_r1_1_v[185], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_t_r1_1/grd_s_t_r1_1_evw_anime.c b/src/data/field/bg/acre/grd_s_t_r1_1/grd_s_t_r1_1_evw_anime.c new file mode 100644 index 00000000..b45b2322 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_r1_1/grd_s_t_r1_1_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_t_r1_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_t_r1_1_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_t_r1_1_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_t_r1_2/grd_s_t_r1_2.c b/src/data/field/bg/acre/grd_s_t_r1_2/grd_s_t_r1_2.c new file mode 100644 index 00000000..e9f0f91b --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_r1_2/grd_s_t_r1_2.c @@ -0,0 +1,339 @@ +#include "libforest/gbi_extensions.h" + +extern u8 rail_pal_dummy[]; +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 tekkyo_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 rail_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_t_r1_2_v[] = { +#include "assets/field/bg/grd_s_t_r1_2_v.inc" +}; + +extern Gfx grd_s_t_r1_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_r1_2_v[262], 13, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b(0, 2, 4, // tri0 + 3, 5, 6, // tri1 + 7, 3, 6, // tri2 + 7, 6, 8 // tri3 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 7, 9, // tri1 + 11, 10, 9, // tri2 + 11, 9, 12 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_t_r1_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_r1_2_v[216], 22, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 0, // tri0 + 5, 7, 6, // tri1 + 8, 9, 10, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(5, 11, 14, // tri0 + 15, 4, 16, // tri1 + 17, 8, 18, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(17, 18, 20, // tri0 + 12, 19, 21, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(tekkyo_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_MIRROR, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_r1_2_v[238], 24, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(8, 11, 9, // tri0 + 12, 13, 14, // tri1 + 13, 15, 14, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(16, 19, 17, // tri0 + 20, 21, 22, // tri1 + 20, 23, 21, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_r1_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b(0, 6, 5, // tri0 + 4, 1, 0, // tri1 + 7, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b(8, 11, 10, // tri0 + 12, 13, 6, // tri1 + 13, 5, 6, // tri2 + 14, 13, 12 // tri3 + ), + gsSPNTriangles_5b(14, 15, 13, // tri0 + 13, 16, 5, // tri1 + 16, 17, 5, // tri2 + 1, 4, 18 // tri3 + ), + gsSPNTriangles_5b(4, 19, 18, // tri0 + 20, 9, 21, // tri1 + 9, 10, 21, // tri2 + 22, 17, 16 // tri3 + ), + gsSPNTriangles_5b(23, 24, 25, // tri0 + 23, 26, 24, // tri1 + 24, 27, 25, // tri2 + 27, 28, 25 // tri3 + ), + gsSPNTriangles_5b(27, 18, 28, // tri0 + 29, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_r1_2_v[32], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(6, 7, 4, // tri0 + 6, 8, 7, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 12, 14, 13, // tri1 + 9, 15, 10, // tri2 + 9, 16, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 17, 18, 15, // tri1 + 17, 19, 18, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(22, 21, 23, // tri0 + 24, 25, 26, // tri1 + 25, 27, 26, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b(29, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_r1_2_v[64], 11, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 4, 6, // tri0 + 5, 7, 4, // tri1 + 4, 3, 6, // tri2 + 8, 9, 10 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(rail_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_r1_2_v[75], 27, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 7, 8, 5, // tri1 + 7, 9, 8, // tri2 + 1, 10, 3 // tri3 + ), + gsSPNTriangles_5b(10, 11, 3, // tri0 + 12, 7, 4, // tri1 + 12, 13, 7, // tri2 + 13, 9, 7 // tri3 + ), + gsSPNTriangles_5b(13, 14, 9, // tri0 + 10, 15, 11, // tri1 + 15, 16, 11, // tri2 + 17, 13, 12 // tri3 + ), + gsSPNTriangles_5b(17, 18, 13, // tri0 + 18, 14, 13, // tri1 + 18, 19, 14, // tri2 + 20, 17, 21 // tri3 + ), + gsSPNTriangles_5b(17, 22, 21, // tri0 + 23, 24, 25, // tri1 + 23, 25, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_r1_2_v[102], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 9, 5, 10, // tri2 + 6, 11, 12 // tri3 + ), + gsSPNTriangles_5b(11, 13, 14, // tri0 + 15, 16, 17, // tri1 + 16, 8, 18, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 25, 22, 26, // tri1 + 20, 27, 28, // tri2 + 27, 25, 29 // tri3 + ), + gsSPNTriangles_5b(4, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_r1_2_v[134], 11, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 6, 3 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 8, 9, 10, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_r1_2_v[145], 22, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 0, // tri0 + 5, 7, 6, // tri1 + 8, 9, 10, // tri2 + 5, 11, 12 // tri3 + ), + gsSPNTriangles_5b(11, 13, 14, // tri0 + 15, 4, 16, // tri1 + 17, 8, 18, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(13, 19, 21, // tri0 + 17, 18, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_r1_2_v[167], 32, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 8, 0, 7, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b(9, 12, 10, // tri0 + 9, 11, 13, // tri1 + 11, 14, 13, // tri2 + 0, 8, 1 // tri3 + ), + gsSPNTriangles_5b(12, 15, 10, // tri0 + 12, 16, 15, // tri1 + 17, 18, 19, // tri2 + 17, 20, 18 // tri3 + ), + gsSPNTriangles_5b(20, 3, 18, // tri0 + 20, 4, 3, // tri1 + 21, 22, 23, // tri2 + 22, 19, 23 // tri3 + ), + gsSPNTriangles_5b(22, 17, 19, // tri0 + 5, 24, 6, // tri1 + 5, 25, 24, // tri2 + 25, 26, 24 // tri3 + ), + gsSPNTriangles_5b(26, 27, 24, // tri0 + 26, 28, 27, // tri1 + 28, 29, 27, // tri2 + 28, 30, 29 // tri3 + ), + gsSPVertex(&grd_s_t_r1_2_v[198], 18, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 5, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 9, 12, 11, // tri1 + 12, 13, 11, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 13, // tri0 + 14, 16, 15, // tri1 + 16, 17, 15, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_t_r1_2/grd_s_t_r1_2_evw_anime.c b/src/data/field/bg/acre/grd_s_t_r1_2/grd_s_t_r1_2_evw_anime.c new file mode 100644 index 00000000..47fb12da --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_r1_2/grd_s_t_r1_2_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_t_r1_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_t_r1_2_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_t_r1_2_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_t_r1_3/grd_s_t_r1_3.c b/src/data/field/bg/acre/grd_s_t_r1_3/grd_s_t_r1_3.c new file mode 100644 index 00000000..921e3a65 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_r1_3/grd_s_t_r1_3.c @@ -0,0 +1,344 @@ +#include "libforest/gbi_extensions.h" + +extern u8 rail_pal_dummy[]; +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 tekkyo_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 rail_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_t_r1_3_v[] = { +#include "assets/field/bg/grd_s_t_r1_3_v.inc" +}; + +extern Gfx grd_s_t_r1_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_r1_3_v[258], 19, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 5, 8, 6, // tri1 + 5, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(0, 11, 1, // tri0 + 0, 12, 11, // tri1 + 12, 13, 11, // tri2 + 13, 14, 11 // tri3 + ), + gsSPNTriangles_5b(13, 15, 14, // tri0 + 2, 7, 4, // tri1 + 2, 16, 7, // tri2 + 2, 3, 16 // tri3 + ), + gsSPNTriangles_5b(15, 17, 14, // tri0 + 17, 18, 14, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_t_r1_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(tekkyo_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_MIRROR, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_r1_3_v[217], 24, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b(1, 5, 2, // tri0 + 4, 6, 7, // tri1 + 4, 7, 5, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(8, 10, 11, // tri0 + 12, 13, 14, // tri1 + 12, 14, 15, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(16, 18, 19, // tri0 + 20, 21, 22, // tri1 + 20, 22, 23, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_r1_3_v[241], 17, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 3, 8, // tri0 + 9, 10, 11, // tri1 + 3, 4, 8, // tri2 + 12, 9, 11 // tri3 + ), + gsSPNTriangles_5b(9, 13, 10, // tri0 + 1, 12, 14, // tri1 + 13, 15, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_r1_3_v[0], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 7, 8, // tri1 + 5, 8, 0, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b(10, 12, 11, // tri0 + 13, 14, 15, // tri1 + 14, 16, 15, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(18, 20, 19, // tri0 + 21, 22, 23, // tri1 + 22, 24, 23, // tri2 + 25, 26, 27 // tri3 + ), + gsSPNTriangles_5b(26, 28, 27, // tri0 + 27, 28, 29, // tri1 + 28, 30, 29, // tri2 + 15, 12, 13 // tri3 + ), + gsSPNTriangles_5b(11, 31, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_r1_3_v[32], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 3, 5, // tri0 + 9, 8, 5, // tri1 + 5, 10, 9, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(10, 14, 15, // tri0 + 16, 17, 15, // tri1 + 18, 15, 14, // tri2 + 19, 15, 18 // tri3 + ), + gsSPNTriangles_5b(20, 16, 19, // tri0 + 16, 15, 19, // tri1 + 21, 22, 23, // tri2 + 21, 24, 22 // tri3 + ), + gsSPNTriangles_5b(25, 26, 27, // tri0 + 25, 28, 26, // tri1 + 25, 29, 28, // tri2 + 30, 28, 29 // tri3 + ), + gsSPNTriangles_5b(31, 20, 19, // tri0 + 19, 24, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_r1_3_v[64], 10, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 3, 4 // tri2 + ), + gsSPNTriangles_5b(4, 3, 5, // tri0 + 6, 7, 8, // tri1 + 8, 7, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_r1_3_v[74], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 3, 4, 0 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(6, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 12, 14, 13, // tri1 + 12, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 15, 18, 17, // tri1 + 18, 19, 17, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b(20, 21, 19, // tri0 + 20, 22, 21, // tri1 + 22, 23, 21, // tri2 + 22, 24, 23 // tri3 + ), + gsSPNTriangles_5b(22, 25, 24, // tri0 + 25, 26, 24, // tri1 + 27, 28, 29, // tri2 + 27, 30, 28 // tri3 + ), + gsSPNTriangles_5b(27, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_r1_3_v[106], 24, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 7, 8, 4 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 13, 14, 11, // tri1 + 13, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b(16, 17, 14, // tri0 + 16, 18, 17, // tri1 + 19, 17, 18, // tri2 + 19, 20, 17 // tri3 + ), + gsSPNTriangles_5b(20, 21, 17, // tri0 + 20, 22, 21, // tri1 + 20, 23, 22, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_r1_3_v[130], 32, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 1, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 7, 9, 8, // tri1 + 10, 11, 12, // tri2 + 11, 3, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 17, 18, 19, // tri1 + 20, 17, 21, // tri2 + 15, 22, 23 // tri3 + ), + gsSPNTriangles_5b(22, 20, 24, // tri0 + 25, 26, 27, // tri1 + 28, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_r1_3_v[161], 11, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 9, // tri1 + 8, 10, 9, // tri2 + 10, 0, 9 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(rail_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_r1_3_v[172], 28, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 12, 14, 13, // tri1 + 14, 15, 13, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(17, 19, 20, // tri0 + 19, 21, 22, // tri1 + 17, 20, 18, // tri2 + 20, 23, 24 // tri3 + ), + gsSPNTriangles_5b(22, 25, 23, // tri0 + 19, 22, 20, // tri1 + 20, 22, 23, // tri2 + 18, 20, 24 // tri3 + ), + gsSPNTriangles_5b(22, 26, 25, // tri0 + 21, 26, 22, // tri1 + 26, 27, 25, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_r1_3_v[200], 17, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(4, 9, 10, // tri0 + 11, 3, 12, // tri1 + 13, 14, 15, // tri2 + 1, 11, 16 // tri3 + ), + gsSPNTriangles_5b(13, 6, 14, // tri0 + 9, 13, 15, // tri1 + 11, 12, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_t_r1_3/grd_s_t_r1_3_evw_anime.c b/src/data/field/bg/acre/grd_s_t_r1_3/grd_s_t_r1_3_evw_anime.c new file mode 100644 index 00000000..e9d550fa --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_r1_3/grd_s_t_r1_3_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_t_r1_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_t_r1_3_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_t_r1_3_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_t_r1_4/grd_s_t_r1_4.c b/src/data/field/bg/acre/grd_s_t_r1_4/grd_s_t_r1_4.c new file mode 100644 index 00000000..671682b7 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_r1_4/grd_s_t_r1_4.c @@ -0,0 +1,328 @@ +#include "libforest/gbi_extensions.h" + +extern u8 rail_pal_dummy[]; +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 tekkyo_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 rail_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_t_r1_4_v[] = { +#include "assets/field/bg/grd_s_t_r1_4_v.inc" +}; + +extern Gfx grd_s_t_r1_4_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_r1_4_v[242], 15, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(0, 5, 4, // tri0 + 5, 6, 7, // tri1 + 7, 4, 5, // tri2 + 8, 7, 6 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 8, 10, 9, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 12, 14, 13, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_t_r1_4_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(tekkyo_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_MIRROR, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_r1_4_v[205], 24, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b(1, 5, 2, // tri0 + 4, 6, 7, // tri1 + 4, 7, 5, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(8, 10, 11, // tri0 + 12, 13, 14, // tri1 + 12, 14, 15, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(16, 18, 19, // tri0 + 20, 21, 22, // tri1 + 20, 22, 23, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_r1_4_v[229], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_r1_4_v[0], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 1, 4, // tri1 + 5, 4, 1 // tri2 + ), + gsSPNTriangles_5b(0, 5, 1, // tri0 + 6, 7, 8, // tri1 + 9, 10, 11, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(12, 14, 13, // tri0 + 10, 12, 11, // tri1 + 7, 15, 8, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(17, 19, 20, // tri0 + 19, 21, 20, // tri1 + 21, 22, 20, // tri2 + 21, 23, 22 // tri3 + ), + gsSPNTriangles_5b(21, 24, 23, // tri0 + 25, 26, 27, // tri1 + 26, 28, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_r1_4_v[30], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 1, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 4, // tri0 + 8, 9, 10, // tri1 + 0, 2, 11, // tri2 + 12, 3, 5 // tri3 + ), + gsSPNTriangles_5b(3, 6, 4, // tri0 + 13, 14, 15, // tri1 + 13, 16, 14, // tri2 + 16, 17, 14 // tri3 + ), + gsSPNTriangles_5b(12, 18, 19, // tri0 + 10, 11, 2, // tri1 + 18, 10, 19, // tri2 + 18, 11, 10 // tri3 + ), + gsSPNTriangles_5b(20, 21, 19, // tri0 + 9, 20, 19, // tri1 + 9, 19, 10, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b(24, 25, 22, // tri0 + 24, 26, 25, // tri1 + 27, 28, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_r1_4_v[60], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 4, 3, 6, // tri1 + 4, 2, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_r1_4_v[68], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(7, 3, 8, // tri0 + 1, 9, 10, // tri1 + 9, 11, 12, // tri2 + 11, 6, 12 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 16, 17, 18, // tri1 + 16, 19, 17, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(21, 23, 22, // tri0 + 23, 24, 22, // tri1 + 18, 15, 25, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b(26, 29, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_r1_4_v[98], 15, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b(0, 2, 6, // tri0 + 7, 8, 9, // tri1 + 3, 5, 2, // tri2 + 4, 10, 11 // tri3 + ), + gsSPNTriangles_5b(10, 12, 13, // tri0 + 7, 14, 8, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_r1_4_v[113], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 1, 0, 3, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 7, 10, 9, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(10, 13, 12, // tri0 + 13, 14, 12, // tri1 + 13, 15, 14, // tri2 + 13, 16, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 16, 18, 17, // tri1 + 18, 19, 17, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b(18, 21, 20, // tri0 + 21, 22, 20, // tri1 + 21, 23, 22, // tri2 + 23, 24, 22 // tri3 + ), + gsSPNTriangles_5b(25, 26, 27, // tri0 + 27, 28, 25, // tri1 + 28, 29, 25, // tri2 + 28, 30, 29 // tri3 + ), + gsSPNTriangles_5b(30, 31, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_r1_4_v[145], 19, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 7, 8, 4 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 10, 11, 8, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(10, 13, 12, // tri0 + 13, 14, 12, // tri1 + 14, 15, 12, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 16, 18, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(rail_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_r1_4_v[164], 28, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 12, 14, 13, // tri1 + 14, 15, 13, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 19, 21, 20, // tri1 + 17, 19, 18, // tri2 + 17, 22, 19 // tri3 + ), + gsSPNTriangles_5b(22, 23, 19, // tri0 + 19, 23, 21, // tri1 + 23, 24, 21, // tri2 + 22, 25, 23 // tri3 + ), + gsSPNTriangles_5b(25, 26, 23, // tri0 + 23, 26, 24, // tri1 + 26, 27, 24, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_r1_4_v[192], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_t_r1_4/grd_s_t_r1_4_evw_anime.c b/src/data/field/bg/acre/grd_s_t_r1_4/grd_s_t_r1_4_evw_anime.c new file mode 100644 index 00000000..3c5a2740 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_r1_4/grd_s_t_r1_4_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_t_r1_4_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_t_r1_4_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_t_r1_4_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_t_r1_5/grd_s_t_r1_5.c b/src/data/field/bg/acre/grd_s_t_r1_5/grd_s_t_r1_5.c new file mode 100644 index 00000000..64e92589 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_r1_5/grd_s_t_r1_5.c @@ -0,0 +1,339 @@ +#include "libforest/gbi_extensions.h" + +extern u8 rail_pal_dummy[]; +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 tekkyo_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 rail_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_t_r1_5_v[] = { +#include "assets/field/bg/grd_s_t_r1_5_v.inc" +}; + +extern Gfx grd_s_t_r1_5_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_r1_5_v[264], 14, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 2, 1, 4 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 6, 4, 5, // tri1 + 6, 7, 4, // tri2 + 8, 7, 9 // tri3 + ), + gsSPNTriangles_5b(7, 6, 9, // tri0 + 8, 10, 7, // tri1 + 3, 0, 11, // tri2 + 8, 12, 10 // tri3 + ), + gsSPNTriangles_5b(8, 13, 12, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_t_r1_5_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_r1_5_v[208], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b(4, 6, 5, // tri0 + 7, 8, 9, // tri1 + 10, 11, 12, // tri2 + 0, 10, 13 // tri3 + ), + gsSPNTriangles_5b(14, 5, 15, // tri0 + 16, 7, 17, // tri1 + 18, 19, 20, // tri2 + 16, 17, 19 // tri3 + ), + gsSPNTriangles_5b(11, 18, 20, // tri0 + 21, 22, 23, // tri1 + 22, 24, 25, // tri2 + 24, 26, 27 // tri3 + ), + gsSPNTriangles_5b(26, 28, 29, // tri0 + 28, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(tekkyo_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_MIRROR, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_r1_5_v[240], 24, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(8, 11, 9, // tri0 + 12, 13, 14, // tri1 + 13, 15, 14, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(16, 19, 17, // tri0 + 20, 21, 22, // tri1 + 20, 23, 21, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_r1_5_v[0], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(0, 5, 3, // tri0 + 2, 6, 0, // tri1 + 7, 8, 9, // tri2 + 7, 10, 8 // tri3 + ), + gsSPNTriangles_5b(7, 11, 10, // tri0 + 11, 12, 10, // tri1 + 8, 13, 9, // tri2 + 14, 15, 13 // tri3 + ), + gsSPNTriangles_5b(14, 16, 15, // tri0 + 14, 17, 16, // tri1 + 18, 19, 20, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b(22, 24, 23, // tri0 + 25, 26, 27, // tri1 + 25, 28, 26, // tri2 + 28, 29, 26 // tri3 + ), + gsSPNTriangles_5b(28, 30, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_r1_5_v[31], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 1, 4, // tri0 + 5, 4, 6, // tri1 + 6, 7, 5, // tri2 + 7, 8, 5 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 8, 9, 10, // tri1 + 11, 12, 10, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(13, 15, 16, // tri0 + 15, 17, 16, // tri1 + 16, 17, 18, // tri2 + 18, 19, 16 // tri3 + ), + gsSPNTriangles_5b(18, 20, 19, // tri0 + 21, 18, 17, // tri1 + 22, 23, 21, // tri2 + 24, 22, 21 // tri3 + ), + gsSPNTriangles_5b(24, 25, 22, // tri0 + 24, 26, 25, // tri1 + 26, 27, 25, // tri2 + 28, 14, 29 // tri3 + ), + gsSPNTriangles_5b(29, 30, 28, // tri0 + 30, 31, 28, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_r1_5_v[63], 11, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 2, 9, 10, // tri2 + 2, 1, 9 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(rail_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_r1_5_v[74], 27, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 7, 8, 5, // tri1 + 7, 9, 8, // tri2 + 1, 10, 3 // tri3 + ), + gsSPNTriangles_5b(10, 11, 3, // tri0 + 12, 7, 4, // tri1 + 12, 13, 7, // tri2 + 13, 9, 7 // tri3 + ), + gsSPNTriangles_5b(13, 14, 9, // tri0 + 10, 15, 11, // tri1 + 15, 16, 11, // tri2 + 17, 13, 12 // tri3 + ), + gsSPNTriangles_5b(17, 18, 13, // tri0 + 18, 14, 13, // tri1 + 18, 19, 14, // tri2 + 20, 17, 21 // tri3 + ), + gsSPNTriangles_5b(17, 22, 21, // tri0 + 23, 24, 25, // tri1 + 23, 25, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_r1_5_v[101], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 5, 4, 3 // tri2 + ), + gsSPNTriangles_5b(6, 5, 3, // tri0 + 7, 8, 6, // tri1 + 9, 10, 7, // tri2 + 11, 12, 9 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 11, 14, 13, // tri1 + 14, 15, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(20, 21, 17, // tri0 + 20, 17, 22, // tri1 + 23, 21, 24, // tri2 + 25, 26, 27 // tri3 + ), + gsSPNTriangles_5b(28, 29, 30, // tri0 + 28, 26, 29, // tri1 + 29, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_r1_5_v[133], 3, 0), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_r1_5_v[136], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b(4, 6, 5, // tri0 + 7, 8, 9, // tri1 + 0, 10, 11, // tri2 + 10, 12, 13 // tri3 + ), + gsSPNTriangles_5b(14, 5, 15, // tri0 + 16, 7, 17, // tri1 + 18, 19, 20, // tri2 + 12, 18, 20 // tri3 + ), + gsSPNTriangles_5b(16, 17, 19, // tri0 + 21, 22, 23, // tri1 + 24, 21, 25, // tri2 + 26, 24, 27 // tri3 + ), + gsSPNTriangles_5b(28, 26, 29, // tri0 + 30, 28, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_r1_5_v[168], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b(3, 0, 4, // tri0 + 6, 0, 2, // tri1 + 4, 7, 5, // tri2 + 4, 8, 7 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 11, 12, 9, // tri1 + 12, 13, 9, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 14, 16, 13, // tri1 + 15, 17, 18, // tri2 + 15, 18, 16 // tri3 + ), + gsSPNTriangles_5b(17, 19, 18, // tri0 + 20, 21, 19, // tri1 + 19, 21, 18, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 23, 25, 26, // tri1 + 23, 26, 24, // tri2 + 22, 24, 21 // tri3 + ), + gsSPNTriangles_5b(27, 28, 29, // tri0 + 27, 30, 28, // tri1 + 27, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_r1_5_v[200], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 1, 0, 3, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b(3, 0, 4, // tri0 + 6, 7, 5, // tri1 + 4, 6, 5, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_t_r1_5/grd_s_t_r1_5_evw_anime.c b/src/data/field/bg/acre/grd_s_t_r1_5/grd_s_t_r1_5_evw_anime.c new file mode 100644 index 00000000..bd0b971f --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_r1_5/grd_s_t_r1_5_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_t_r1_5_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_t_r1_5_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_t_r1_5_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_t_sh_1/grd_s_t_sh_1.c b/src/data/field/bg/acre/grd_s_t_sh_1/grd_s_t_sh_1.c new file mode 100644 index 00000000..ad88d56e --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_sh_1/grd_s_t_sh_1.c @@ -0,0 +1,256 @@ +#include "libforest/gbi_extensions.h" + +extern u8 rail_pal_dummy[]; +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 stone_tex_dummy[]; +extern u8 rail_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_t_sh_1_v[] = { +#include "assets/field/bg/grd_s_t_sh_1_v.inc" +}; + +extern Gfx grd_s_t_sh_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_t_sh_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_sh_1_v[143], 19, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 1, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 6, 3, // tri0 + 9, 10, 11, // tri1 + 12, 10, 13, // tri2 + 11, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 14, 5, // tri0 + 17, 12, 18, // tri1 + 6, 8, 7, // tri2 + 10, 9, 13 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_sh_1_v[0], 19, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 1, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 6, 3, // tri0 + 9, 10, 11, // tri1 + 12, 10, 13, // tri2 + 11, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 14, 5, // tri0 + 17, 12, 18, // tri1 + 6, 8, 7, // tri2 + 10, 9, 13 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_sh_1_v[19], 32, 0), + gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 6, 8, 9, // tri1 + 6, 7, 8, // tri2 + 9, 8, 10 // tri3 + ), + gsSPNTriangles_5b( + 8, 11, 10, // tri0 + 10, 12, 13, // tri1 + 10, 11, 12, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 14, // tri0 + 17, 18, 14, // tri1 + 17, 19, 18, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b( + 20, 0, 18, // tri0 + 20, 1, 0, // tri1 + 20, 21, 1, // tri2 + 3, 1, 22 // tri3 + ), + gsSPNTriangles_5b( + 22, 1, 23, // tri0 + 22, 24, 3, // tri1 + 24, 25, 3, // tri2 + 21, 26, 1 // tri3 + ), + gsSPNTriangles_5b( + 16, 15, 27, // tri0 + 15, 28, 27, // tri1 + 28, 29, 27, // tri2 + 29, 28, 30 // tri3 + ), + gsSPNTriangles_5b( + 28, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_sh_1_v[51], 27, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 10, 7, 6 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 7, // tri0 + 11, 12, 7, // tri1 + 11, 4, 12, // tri2 + 4, 13, 12 // tri3 + ), + gsSPNTriangles_5b( + 5, 13, 4, // tri0 + 13, 14, 15, // tri1 + 13, 5, 14, // tri2 + 15, 14, 16 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 16, 14, 17, // tri1 + 19, 20, 18, // tri2 + 18, 17, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 22, // tri0 + 20, 19, 21, // tri1 + 9, 23, 24, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b( + 9, 24, 26, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(rail_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_sh_1_v[78], 20, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 8, 5, 4, // tri1 + 8, 9, 5, // tri2 + 10, 11, 8 // tri3 + ), + gsSPNTriangles_5b( + 11, 9, 8, // tri0 + 12, 11, 10, // tri1 + 12, 13, 11, // tri2 + 13, 14, 11 // tri3 + ), + gsSPNTriangles_5b( + 14, 3, 11, // tri0 + 11, 1, 9, // tri1 + 11, 3, 1, // tri2 + 9, 1, 5 // tri3 + ), + gsSPNTriangles_5b( + 1, 15, 5, // tri0 + 5, 16, 7, // tri1 + 5, 15, 16, // tri2 + 15, 17, 16 // tri3 + ), + gsSPNTriangles_5b( + 15, 18, 17, // tri0 + 1, 18, 15, // tri1 + 1, 0, 18, // tri2 + 14, 19, 3 // tri3 + ), + gsSPNTriangles_5b( + 19, 2, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_sh_1_v[98], 30, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 4 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 9, 11, // tri1 + 12, 11, 6, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 14, // tri0 + 18, 19, 17, // tri1 + 20, 21, 19, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b( + 25, 24, 26, // tri0 + 27, 26, 28, // tri1 + 29, 28, 21, // tri2 + 17, 16, 18 // tri3 + ), + gsSPNTriangles_5b( + 26, 27, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(stone_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_sh_1_v[128], 15, 0), + gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 7, 4, // tri0 + 9, 10, 11, // tri1 + 12, 13, 10, // tri2 + 14, 11, 6 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_t_sh_2/grd_s_t_sh_2.c b/src/data/field/bg/acre/grd_s_t_sh_2/grd_s_t_sh_2.c new file mode 100644 index 00000000..892f7c35 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_sh_2/grd_s_t_sh_2.c @@ -0,0 +1,280 @@ +#include "libforest/gbi_extensions.h" + +extern u8 rail_pal_dummy[]; +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 stone_tex_dummy[]; +extern u8 rail_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_t_sh_2_v[] = { +#include "assets/field/bg/grd_s_t_sh_2_v.inc" +}; + +extern Gfx grd_s_t_sh_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_sh_2_v[197], 7, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 4, 6, 5, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_t_sh_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_sh_2_v[180], 17, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 2, 6 // tri2 + ), + gsSPNTriangles_5b(7, 6, 8, // tri0 + 9, 10, 4, // tri1 + 11, 12, 10, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(16, 15, 12, // tri0 + 2, 5, 0, // tri1 + 12, 11, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_sh_2_v[0], 17, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 6, 0 // tri2 + ), + gsSPNTriangles_5b(7, 8, 6, // tri0 + 1, 0, 9, // tri1 + 10, 9, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(4, 3, 13, // tri0 + 15, 11, 16, // tri1 + 5, 16, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_sh_2_v[17], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 15, 13, // tri0 + 12, 7, 15, // tri1 + 7, 5, 15, // tri2 + 15, 16, 9 // tri3 + ), + gsSPNTriangles_5b(15, 5, 16, // tri0 + 16, 17, 9, // tri1 + 17, 18, 9, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(20, 22, 21, // tri0 + 22, 23, 21, // tri1 + 22, 11, 23, // tri2 + 11, 24, 23 // tri3 + ), + gsSPNTriangles_5b(20, 25, 22, // tri0 + 10, 11, 26, // tri1 + 9, 27, 11, // tri2 + 9, 18, 27 // tri3 + ), + gsSPNTriangles_5b(27, 24, 11, // tri0 + 6, 28, 4, // tri1 + 28, 29, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_sh_2_v[47], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b(2, 3, 4, // tri0 + 5, 4, 6, // tri1 + 4, 7, 6, // tri2 + 6, 8, 9 // tri3 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 10, 11, 12, // tri1 + 13, 12, 11, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b(13, 15, 14, // tri0 + 16, 17, 18, // tri1 + 19, 16, 18, // tri2 + 20, 18, 17 // tri3 + ), + gsSPNTriangles_5b(17, 21, 20, // tri0 + 21, 22, 20, // tri1 + 22, 23, 20, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(26, 27, 28, // tri0 + 28, 29, 23, // tri1 + 28, 27, 29, // tri2 + 27, 30, 29 // tri3 + ), + gsSPNTriangles_5b(30, 31, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_sh_2_v[79], 12, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b(5, 1, 3, // tri0 + 6, 7, 8, // tri1 + 9, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(rail_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_sh_2_v[91], 20, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 5, 4, // tri1 + 8, 9, 5, // tri2 + 10, 11, 8 // tri3 + ), + gsSPNTriangles_5b(11, 9, 8, // tri0 + 12, 11, 10, // tri1 + 12, 13, 11, // tri2 + 13, 14, 11 // tri3 + ), + gsSPNTriangles_5b(14, 3, 11, // tri0 + 11, 1, 9, // tri1 + 11, 3, 1, // tri2 + 9, 1, 5 // tri3 + ), + gsSPNTriangles_5b(1, 15, 5, // tri0 + 5, 16, 7, // tri1 + 5, 15, 16, // tri2 + 15, 17, 16 // tri3 + ), + gsSPNTriangles_5b(15, 18, 17, // tri0 + 1, 18, 15, // tri1 + 1, 0, 18, // tri2 + 14, 19, 3 // tri3 + ), + gsSPNTriangles_5b(19, 2, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_sh_2_v[111], 27, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 3, // tri0 + 7, 8, 6, // tri1 + 9, 10, 8, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(10, 13, 11, // tri0 + 14, 15, 16, // tri1 + 17, 14, 18, // tri2 + 15, 19, 20 // tri3 + ), + gsSPNTriangles_5b(19, 21, 22, // tri0 + 23, 24, 25, // tri1 + 24, 17, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(stone_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_sh_2_v[138], 23, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 1, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 6, 9, // tri0 + 10, 11, 5, // tri1 + 12, 11, 13, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(17, 15, 18, // tri0 + 19, 20, 12, // tri1 + 18, 20, 21, // tri2 + 3, 4, 22 // tri3 + ), + gsSPNTriangles_5b(9, 22, 8, // tri0 + 12, 13, 19, // tri1 + 18, 21, 17, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_sh_2_v[161], 19, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 6, 7, 8, // tri1 + 9, 10, 7, // tri2 + 7, 6, 9 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 11, 12, 13, // tri1 + 12, 14, 13, // tri2 + 0, 2, 14 // tri3 + ), + gsSPNTriangles_5b(3, 15, 5, // tri0 + 15, 16, 17, // tri1 + 16, 18, 17, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_t_sh_2/grd_s_t_sh_2_evw_anime.c b/src/data/field/bg/acre/grd_s_t_sh_2/grd_s_t_sh_2_evw_anime.c new file mode 100644 index 00000000..726fd1ed --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_sh_2/grd_s_t_sh_2_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_t_sh_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_t_sh_2_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + grd_s_t_sh_2_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/grd_s_t_sh_3/grd_s_t_sh_3.c b/src/data/field/bg/acre/grd_s_t_sh_3/grd_s_t_sh_3.c new file mode 100644 index 00000000..eaa6f268 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_sh_3/grd_s_t_sh_3.c @@ -0,0 +1,244 @@ +#include "libforest/gbi_extensions.h" + +extern u8 rail_pal_dummy[]; +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 stone_tex_dummy[]; +extern u8 rail_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_t_sh_3_v[] = { +#include "assets/field/bg/grd_s_t_sh_3_v.inc" +}; + +extern Gfx grd_s_t_sh_3_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_t_sh_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_sh_3_v[147], 19, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 12, 9, 13, // tri1 + 7, 0, 2, // tri2 + 0, 12, 1 // tri3 + ), + gsSPNTriangles_5b( + 14, 3, 5, // tri0 + 10, 14, 15, // tri1 + 3, 16, 4, // tri2 + 16, 17, 18 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_sh_3_v[0], 19, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 6, 3, 8, // tri0 + 9, 10, 11, // tri1 + 12, 9, 13, // tri2 + 10, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 14, 5, 16, // tri0 + 17, 12, 18, // tri1 + 3, 4, 8, // tri2 + 9, 11, 13 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_sh_3_v[19], 32, 0), + gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 6, 8, 9, // tri1 + 6, 7, 8, // tri2 + 9, 8, 10 // tri3 + ), + gsSPNTriangles_5b( + 8, 11, 10, // tri0 + 10, 12, 13, // tri1 + 10, 11, 12, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 18, // tri0 + 14, 17, 15, // tri1 + 17, 19, 18, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 20, // tri0 + 22, 23, 24, // tri1 + 24, 25, 22, // tri2 + 22, 25, 26 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 29, // tri0 + 27, 30, 28, // tri1 + 28, 31, 29, // tri2 + 31, 21, 29 // tri3 + ), + gsSPVertex(&grd_s_t_sh_3_v[51], 28, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 4, 5, 1 // tri2 + ), + gsSPNTriangles_5b( + 4, 1, 3, // tri0 + 5, 4, 6, // tri1 + 7, 6, 4, // tri2 + 6, 8, 5 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 5, // tri0 + 8, 10, 9, // tri1 + 11, 10, 12, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 14, 13, 15, // tri0 + 13, 16, 15, // tri1 + 16, 17, 15, // tri2 + 18, 15, 17 // tri3 + ), + gsSPNTriangles_5b( + 16, 19, 17, // tri0 + 18, 20, 21, // tri1 + 22, 23, 24, // tri2 + 23, 25, 24 // tri3 + ), + gsSPNTriangles_5b( + 22, 26, 23, // tri0 + 26, 27, 23, // tri1 + 27, 21, 23, // tri2 + 21, 20, 23 // tri3 + ), + gsSPNTriangles_5b( + 23, 20, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(rail_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_sh_3_v[79], 20, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 8, 5, 4, // tri1 + 8, 9, 5, // tri2 + 10, 11, 8 // tri3 + ), + gsSPNTriangles_5b( + 11, 9, 8, // tri0 + 12, 11, 10, // tri1 + 12, 13, 11, // tri2 + 13, 14, 11 // tri3 + ), + gsSPNTriangles_5b( + 14, 3, 11, // tri0 + 11, 1, 9, // tri1 + 11, 3, 1, // tri2 + 9, 1, 5 // tri3 + ), + gsSPNTriangles_5b( + 1, 15, 5, // tri0 + 5, 16, 7, // tri1 + 5, 15, 16, // tri2 + 15, 17, 16 // tri3 + ), + gsSPNTriangles_5b( + 15, 18, 17, // tri0 + 1, 18, 15, // tri1 + 1, 0, 18, // tri2 + 14, 19, 3 // tri3 + ), + gsSPNTriangles_5b( + 19, 2, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_sh_3_v[99], 29, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 6, 3, 8, // tri0 + 9, 5, 10, // tri1 + 11, 9, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 14, 16, 17, // tri0 + 18, 19, 20, // tri1 + 16, 18, 21, // tri2 + 19, 22, 23 // tri3 + ), + gsSPNTriangles_5b( + 22, 24, 25, // tri0 + 13, 26, 27, // tri1 + 26, 28, 27, // tri2 + 18, 20, 21 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(stone_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_sh_3_v[128], 19, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 5, 9, // tri1 + 10, 11, 12, // tri2 + 11, 8, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 10, 15, // tri0 + 2, 14, 16, // tri1 + 17, 4, 18, // tri2 + 11, 13, 12 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_t_st1_1/grd_s_t_st1_1.c b/src/data/field/bg/acre/grd_s_t_st1_1/grd_s_t_st1_1.c new file mode 100644 index 00000000..e10c728a --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_st1_1/grd_s_t_st1_1.c @@ -0,0 +1,280 @@ +#include "libforest/gbi_extensions.h" + +extern u8 rail_pal_dummy[]; +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 station_pal_dummy[]; +extern u8 stone_tex_dummy[]; +extern u8 station_tex_dummy[]; +extern u8 rail_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_t_st1_1_v[] = { +#include "assets/field/bg/grd_s_t_st1_1_v.inc" +}; + +extern Gfx grd_s_t_st1_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_t_st1_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_st1_1_v[180], 15, 0), + gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 5, 4, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 11, 8, // tri1 + 12, 6, 11, // tri2 + 13, 9, 14 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, station_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(station_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_MIRROR, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_st1_1_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 5, 9, 7, // tri1 + 7, 10, 8, // tri2 + 5, 4, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 12, 14, 13, // tri1 + 15, 16, 17, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 1, // tri0 + 20, 2, 1, // tri1 + 1, 0, 21, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b( + 23, 25, 24, // tri0 + 26, 27, 28, // tri1 + 26, 28, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_st1_1_v[30], 6, 0), + gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_st1_1_v[36], 15, 0), + gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 5, 4, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 11, 8, // tri1 + 12, 6, 11, // tri2 + 13, 9, 14 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(rail_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_st1_1_v[51], 21, 0), + gsSPNTrianglesInit_5b( + 25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 1, 0 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 1, // tri0 + 6, 7, 4, // tri1 + 7, 5, 4, // tri2 + 8, 7, 6 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 7, // tri0 + 9, 10, 7, // tri1 + 10, 11, 7, // tri2 + 7, 12, 5 // tri3 + ), + gsSPNTriangles_5b( + 7, 11, 12, // tri0 + 5, 12, 1, // tri1 + 12, 13, 1, // tri2 + 1, 14, 3 // tri3 + ), + gsSPNTriangles_5b( + 1, 13, 14, // tri0 + 13, 15, 14, // tri1 + 13, 16, 15, // tri2 + 12, 16, 13 // tri3 + ), + gsSPNTriangles_5b( + 12, 17, 16, // tri0 + 11, 18, 12, // tri1 + 18, 17, 12, // tri2 + 11, 19, 18 // tri3 + ), + gsSPNTriangles_5b( + 10, 20, 11, // tri0 + 20, 19, 11, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_st1_1_v[72], 32, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 2, // tri0 + 1, 6, 3, // tri1 + 1, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 4, 9, 10, // tri0 + 9, 11, 10, // tri1 + 4, 3, 9, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 13, 15, 14, // tri0 + 16, 17, 18, // tri1 + 17, 19, 18, // tri2 + 18, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 20, // tri0 + 21, 20, 22, // tri1 + 20, 23, 22, // tri2 + 22, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 24, // tri0 + 26, 27, 28, // tri1 + 26, 29, 27, // tri2 + 29, 30, 27 // tri3 + ), + gsSPNTriangles_5b( + 12, 31, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_st1_1_v[104], 18, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 5 // tri2 + ), + gsSPNTriangles_5b( + 3, 6, 7, // tri0 + 7, 6, 8, // tri1 + 8, 9, 7, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 9, // tri0 + 10, 12, 11, // tri1 + 12, 13, 11, // tri2 + 11, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 14, // tri0 + 16, 17, 4, // tri1 + 15, 17, 16, // tri2 + 15, 14, 17 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_st1_1_v[122], 27, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 7, 4, // tri0 + 9, 2, 10, // tri1 + 11, 12, 13, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 14, 17, 15, // tri0 + 15, 11, 16, // tri1 + 18, 17, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 23, 21, 24, // tri1 + 24, 18, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(stone_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_st1_1_v[149], 31, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 8, 9, 6, // tri1 + 9, 4, 6, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 13, 14, 12, // tri1 + 14, 15, 12, // tri2 + 2, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 3, 18, 1, // tri0 + 19, 20, 18, // tri1 + 19, 21, 20, // tri2 + 22, 21, 23 // tri3 + ), + gsSPNTriangles_5b( + 10, 22, 24, // tri0 + 15, 25, 26, // tri1 + 26, 27, 28, // tri2 + 27, 29, 28 // tri3 + ), + gsSPNTriangles_5b( + 9, 30, 29, // tri0 + 9, 8, 30, // tri1 + 2, 17, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_t_st1_2/grd_s_t_st1_2.c b/src/data/field/bg/acre/grd_s_t_st1_2/grd_s_t_st1_2.c new file mode 100644 index 00000000..d9d25813 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_st1_2/grd_s_t_st1_2.c @@ -0,0 +1,318 @@ +#include "libforest/gbi_extensions.h" + +extern u8 rail_pal_dummy[]; +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 station_pal_dummy[]; +extern u8 stone_tex_dummy[]; +extern u8 station_tex_dummy[]; +extern u8 rail_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_t_st1_2_v[] = { +#include "assets/field/bg/grd_s_t_st1_2_v.inc" +}; + +extern Gfx grd_s_t_st1_2_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_t_st1_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_st1_2_v[216], 24, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 12, 13, // tri2 + 14, 11, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 14, 17, // tri0 + 18, 16, 19, // tri1 + 20, 18, 21, // tri2 + 22, 20, 23 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_st1_2_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 1, 0, 3, // tri1 + 0, 2, 4 // tri2 + ), + gsSPNTriangles_5b( + 2, 5, 4, // tri0 + 4, 5, 6, // tri1 + 7, 8, 9, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 15, 16, 13, // tri1 + 13, 16, 1, // tri2 + 12, 11, 17 // tri3 + ), + gsSPNTriangles_5b( + 17, 11, 18, // tri0 + 17, 18, 19, // tri1 + 20, 19, 21, // tri2 + 22, 19, 18 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 19, // tri0 + 19, 20, 23, // tri1 + 25, 8, 23, // tri2 + 23, 20, 25 // tri3 + ), + gsSPNTriangles_5b( + 11, 10, 26, // tri0 + 15, 14, 27, // tri1 + 14, 28, 27, // tri2 + 29, 30, 3 // tri3 + ), + gsSPNTriangles_5b( + 5, 31, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_st1_2_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 6, 8, 7, // tri0 + 9, 10, 11, // tri1 + 12, 13, 14, // tri2 + 13, 15, 14 // tri3 + ), + gsSPNTriangles_5b( + 16, 14, 15, // tri0 + 15, 17, 16, // tri1 + 16, 17, 18, // tri2 + 17, 19, 18 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 20, // tri0 + 19, 21, 20, // tri1 + 22, 23, 24, // tri2 + 22, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 27, 23, // tri0 + 28, 29, 27, // tri1 + 10, 29, 28, // tri2 + 1, 4, 2 // tri3 + ), + gsSPNTriangles_5b( + 28, 27, 30, // tri0 + 26, 30, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_st1_2_v[63], 12, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 5 // tri2 + ), + gsSPNTriangles_5b( + 8, 6, 5, // tri0 + 9, 4, 10, // tri1 + 10, 4, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_st1_2_v[75], 11, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 8, 6, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(stone_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_st1_2_v[86], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 13, 15, 16, // tri0 + 15, 17, 18, // tri1 + 17, 19, 20, // tri2 + 19, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 21, 23, 24, // tri0 + 25, 26, 27, // tri1 + 27, 28, 25, // tri2 + 27, 29, 28 // tri3 + ), + gsSPNTriangles_5b( + 29, 9, 28, // tri0 + 10, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_st1_2_v[118], 17, 0), + gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 9, 10, 11, // tri1 + 12, 13, 14, // tri2 + 15, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 13, 16, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(rail_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_st1_2_v[135], 20, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b( + 1, 3, 2, // tri0 + 4, 5, 6, // tri1 + 5, 7, 6, // tri2 + 6, 7, 8 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 7, 10, 9, // tri1 + 5, 11, 7, // tri2 + 10, 12, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 10, 7, // tri0 + 3, 13, 5, // tri1 + 13, 11, 5, // tri2 + 1, 14, 3 // tri3 + ), + gsSPNTriangles_5b( + 14, 13, 3, // tri0 + 14, 15, 13, // tri1 + 13, 16, 11, // tri2 + 15, 16, 13 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 11, // tri0 + 11, 17, 10, // tri1 + 17, 18, 10, // tri2 + 10, 18, 12 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 12, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, station_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(station_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_MIRROR, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_st1_2_v[155], 32, 0), + gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 0, 4 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 4, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 8, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 8, 12, 10, // tri0 + 10, 13, 11, // tri1 + 8, 7, 12, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 16, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20, // tri2 + 22, 3, 1 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 24, 26, 25, // tri1 + 27, 28, 29, // tri2 + 27, 29, 30 // tri3 + ), + gsSPVertex(&grd_s_t_st1_2_v[186], 6, 0), + gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_st1_2_v[192], 24, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 8, 3, 10, // tri1 + 11, 12, 13, // tri2 + 14, 11, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 12, 16, 19, // tri1 + 20, 21, 22, // tri2 + 21, 14, 23 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_t_st1_3/grd_s_t_st1_3.c b/src/data/field/bg/acre/grd_s_t_st1_3/grd_s_t_st1_3.c new file mode 100644 index 00000000..e67ef08d --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_st1_3/grd_s_t_st1_3.c @@ -0,0 +1,287 @@ +#include "libforest/gbi_extensions.h" + +extern u8 rail_pal_dummy[]; +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 station_pal_dummy[]; +extern u8 stone_tex_dummy[]; +extern u8 station_tex_dummy[]; +extern u8 rail_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_t_st1_3_v[] = { +#include "assets/field/bg/grd_s_t_st1_3_v.inc" +}; + +extern Gfx grd_s_t_st1_3_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_t_st1_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_st1_3_v[190], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_st1_3_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 5, // tri0 + 9, 10, 11, // tri1 + 12, 13, 14, // tri2 + 13, 15, 14 // tri3 + ), + gsSPNTriangles_5b( + 16, 12, 17, // tri0 + 6, 16, 17, // tri1 + 18, 19, 20, // tri2 + 21, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 7, 6, 21, // tri0 + 22, 23, 0, // tri1 + 5, 16, 6, // tri2 + 13, 24, 15 // tri3 + ), + gsSPNTriangles_5b( + 24, 25, 20, // tri0 + 26, 27, 28, // tri1 + 27, 9, 11, // tri2 + 29, 30, 31 // tri3 + ), + gsSPVertex(&grd_s_t_st1_3_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 0, 3, 1, // tri1 + 3, 5, 4, // tri2 + 5, 7, 6 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 10, 11, 12, // tri1 + 13, 14, 11, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 20, // tri0 + 18, 21, 19, // tri1 + 22, 23, 24, // tri2 + 24, 23, 25 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 26, // tri0 + 19, 27, 20, // tri1 + 28, 29, 26, // tri2 + 29, 15, 30 // tri3 + ), + gsSPNTriangles_5b( + 17, 30, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_st1_3_v[63], 3, 0), + gsSPNTrianglesInit_5b( + 1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(stone_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_st1_3_v[66], 25, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 2, 1, 3 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 1, // tri0 + 3, 6, 4, // tri1 + 7, 8, 6, // tri2 + 7, 9, 8 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 12, 13, 11, // tri1 + 14, 15, 13, // tri2 + 15, 14, 16 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 15, // tri0 + 17, 18, 19, // tri1 + 18, 20, 19, // tri2 + 20, 21, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 22, 21, // tri0 + 22, 23, 21, // tri1 + 22, 24, 23, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_st1_3_v[91], 31, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 0, // tri0 + 8, 9, 6, // tri1 + 10, 11, 8, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 13, 12, // tri0 + 13, 14, 15, // tri1 + 16, 17, 18, // tri2 + 19, 16, 20 // tri3 + ), + gsSPNTriangles_5b( + 17, 21, 22, // tri0 + 21, 23, 24, // tri1 + 23, 25, 24, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b( + 27, 29, 30, // tri0 + 29, 19, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(rail_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_st1_3_v[122], 21, 0), + gsSPNTrianglesInit_5b( + 25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 1, 0 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 1, // tri0 + 6, 7, 4, // tri1 + 7, 5, 4, // tri2 + 8, 7, 6 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 7, // tri0 + 9, 10, 7, // tri1 + 10, 11, 7, // tri2 + 7, 12, 5 // tri3 + ), + gsSPNTriangles_5b( + 7, 11, 12, // tri0 + 5, 12, 1, // tri1 + 12, 13, 1, // tri2 + 1, 14, 3 // tri3 + ), + gsSPNTriangles_5b( + 1, 13, 14, // tri0 + 13, 15, 14, // tri1 + 13, 16, 15, // tri2 + 12, 16, 13 // tri3 + ), + gsSPNTriangles_5b( + 12, 17, 16, // tri0 + 11, 18, 12, // tri1 + 18, 17, 12, // tri2 + 11, 19, 18 // tri3 + ), + gsSPNTriangles_5b( + 10, 20, 11, // tri0 + 20, 19, 11, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, station_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(station_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_MIRROR, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_st1_3_v[143], 32, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 11, 9, // tri2 + 10, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 10, 14, 12, // tri0 + 12, 15, 13, // tri1 + 10, 9, 14, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b( + 17, 19, 18, // tri0 + 20, 2, 1, // tri1 + 12, 21, 22, // tri2 + 21, 23, 22 // tri3 + ), + gsSPNTriangles_5b( + 24, 25, 26, // tri0 + 24, 26, 27, // tri1 + 28, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_st1_3_v[174], 3, 0), + gsSPNTrianglesInit_5b( + 1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_st1_3_v[177], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_yamishop/grd_yamishop.c b/src/data/field/bg/acre/grd_yamishop/grd_yamishop.c new file mode 100644 index 00000000..652f892c --- /dev/null +++ b/src/data/field/bg/acre/grd_yamishop/grd_yamishop.c @@ -0,0 +1,476 @@ +#include "libforest/gbi_extensions.h" + +static u16 rom_yami_wall_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yami_wall_pal.inc" +}; + +static u16 rom_yami_floor_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yami_floor_pal.inc" +}; + +static u16 rom_yami_box_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yami_box_pal.inc" +}; + +static u16 rom_yami_mono01_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yami_mono01_pal.inc" +}; + +static u16 rom_yami_mono02_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yami_mono02_pal.inc" +}; + +static u16 rom_yami_mono03_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yami_mono03_pal.inc" +}; + +static u16 rom_yami_qup_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yami_qup_pal.inc" +}; + +static u16 rom_yami_hyou_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yami_hyou_pal.inc" +}; + +static u16 rom_yami_step_tex_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yami_step_tex_pal.inc" +}; + +static u16 rom_yami_hugu_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yami_hugu_pal.inc" +}; + +static u16 rom_yami_tama_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yami_tama_pal.inc" +}; + +static u8 rom_yami_wall_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yami_wall_tex.inc" +}; + +static u8 rom_yami_floor_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yami_floor_tex.inc" +}; + +static u8 rom_yami_poll_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yami_poll_tex.inc" +}; + +static u8 rom_yami_box01_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yami_box01_tex.inc" +}; + +static u8 rom_yami_box02_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yami_box02_tex.inc" +}; + +static u8 rom_yami_mono01_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yami_mono01_tex.inc" +}; + +static u8 rom_yami_mono02_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yami_mono02_tex.inc" +}; + +static u8 rom_yami_mono03_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yami_mono03_tex.inc" +}; + +static u8 rom_yami_qup_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yami_qup_tex.inc" +}; + +static u8 rom_yami_hyou_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yami_hyou_tex.inc" +}; + +static u8 rom_yami_hyou02_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yami_hyou02_tex.inc" +}; + +static u8 rom_yami_step_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yami_step_tex.inc" +}; + +static u8 rom_yami_hugu_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yami_hugu_tex.inc" +}; + +static u8 rom_yami_tama_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yami_tama_tex.inc" +}; + +static u8 rom_yami_shadow01_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yami_shadow01_tex.inc" +}; + +static Vtx grd_yamishop_v[] = { +#include "assets/field/bg/grd_yamishop_v.inc" +}; + +extern Gfx grd_yamishop_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_yamishop_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_yami_hugu_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_yami_hugu_tex, G_IM_FMT_CI, 32, 48, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&grd_yamishop_v[226], 6, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b(1, 5, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_yami_tama_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_yami_tama_tex, G_IM_FMT_CI, 32, 48, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&grd_yamishop_v[232], 6, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b(1, 5, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_yami_hyou_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_yami_hyou02_tex, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&grd_yamishop_v[238], 12, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b(1, 5, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_yami_hyou_tex, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 6, 7, 8, // tri0 + 6, 8, 9, // tri1 + 7, 10, 11 // tri2 + ), + gsSPNTriangles_5b(7, 11, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_yami_qup_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_yami_qup_tex, G_IM_FMT_CI, 32, 48, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&grd_yamishop_v[250], 5, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_yami_mono01_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_yami_mono01_tex, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&grd_yamishop_v[255], 5, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_yami_mono02_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_yami_mono02_tex, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&grd_yamishop_v[260], 5, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_yami_mono03_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_yami_mono03_tex, G_IM_FMT_CI, 64, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&grd_yamishop_v[265], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_yami_step_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_yami_step_tex, G_IM_FMT_CI, 64, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&grd_yamishop_v[0], 5, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 0, 4, 1 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_yami_wall_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_yami_wall_tex, G_IM_FMT_CI, 32, 48, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&grd_yamishop_v[5], 32, 0), + gsSPNTrianglesInit_5b(35, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 6, 8, 2, // tri1 + 0, 2, 8, // tri2 + 6, 7, 8 // tri3 + ), + gsSPNTriangles_5b(9, 6, 2, // tri0 + 10, 11, 3, // tri1 + 10, 9, 11, // tri2 + 9, 2, 11 // tri3 + ), + gsSPNTriangles_5b(2, 3, 11, // tri0 + 9, 12, 6, // tri1 + 12, 4, 6, // tri2 + 9, 13, 12 // tri3 + ), + gsSPNTriangles_5b(13, 4, 12, // tri0 + 14, 15, 16, // tri1 + 17, 14, 16, // tri2 + 16, 15, 18 // tri3 + ), + gsSPNTriangles_5b(17, 16, 18, // tri0 + 19, 4, 20, // tri1 + 17, 19, 20, // tri2 + 13, 17, 20 // tri3 + ), + gsSPNTriangles_5b(13, 20, 4, // tri0 + 17, 18, 19, // tri1 + 18, 21, 22, // tri2 + 23, 19, 22 // tri3 + ), + gsSPNTriangles_5b(18, 22, 19, // tri0 + 24, 21, 18, // tri1 + 15, 24, 18, // tri2 + 5, 4, 19 // tri3 + ), + gsSPNTriangles_5b(23, 5, 19, // tri0 + 25, 26, 27, // tri1 + 26, 28, 27, // tri2 + 29, 30, 31 // tri3 + ), + gsSPVertex(&grd_yamishop_v[37], 13, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 5, 4, 3 // tri2 + ), + gsSPNTriangles_5b(2, 1, 3, // tri0 + 6, 2, 4, // tri1 + 7, 8, 9, // tri2 + 7, 6, 8 // tri3 + ), + gsSPNTriangles_5b(6, 4, 8, // tri0 + 4, 9, 8, // tri1 + 6, 10, 2, // tri2 + 10, 11, 2 // tri3 + ), + gsSPNTriangles_5b(6, 12, 10, // tri0 + 12, 11, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_yami_floor_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_yami_floor_tex, G_IM_FMT_CI, 64, 64, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&grd_yamishop_v[50], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 0, 4 // tri2 + ), + gsSPNTriangles_5b(0, 5, 4, // tri0 + 6, 7, 1, // tri1 + 8, 9, 6, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(10, 13, 11, // tri0 + 14, 15, 16, // tri1 + 14, 17, 15, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(20, 21, 13, // tri0 + 13, 17, 14, // tri1 + 22, 23, 2, // tri2 + 22, 24, 23 // tri3 + ), + gsSPNTriangles_5b(24, 25, 23, // tri0 + 25, 12, 23, // tri1 + 26, 24, 22, // tri2 + 25, 24, 27 // tri3 + ), + gsSPNTriangles_5b(28, 29, 5, // tri0 + 28, 30, 29, // tri1 + 28, 31, 30, // tri2 + 28, 16, 31 // tri3 + ), + gsSPVertex(&grd_yamishop_v[82], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 3, 1, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 8, 7, // tri0 + 5, 9, 6, // tri1 + 10, 6, 11, // tri2 + 5, 7, 12 // tri3 + ), + gsSPNTriangles_5b(7, 8, 13, // tri0 + 14, 15, 9, // tri1 + 16, 14, 17, // tri2 + 16, 15, 14 // tri3 + ), + gsSPNTriangles_5b(16, 18, 15, // tri0 + 19, 20, 12, // tri1 + 0, 2, 21, // tri2 + 22, 0, 21 // tri3 + ), + gsSPNTriangles_5b(23, 22, 21, // tri0 + 24, 25, 11, // tri1 + 26, 27, 28, // tri2 + 24, 29, 28 // tri3 + ), + gsSPNTriangles_5b(27, 24, 28, // tri0 + 13, 30, 4, // tri1 + 31, 3, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_yamishop_v[114], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_yami_wall_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_yami_poll_tex, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&grd_yamishop_v[118], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b(1, 5, 2, // tri0 + 4, 6, 7, // tri1 + 4, 7, 5, // tri2 + 8, 9, 1 // tri3 + ), + gsSPNTriangles_5b(8, 1, 0, // tri0 + 9, 10, 4, // tri1 + 9, 4, 1, // tri2 + 10, 11, 6 // tri3 + ), + gsSPNTriangles_5b(10, 6, 4, // tri0 + 12, 13, 14, // tri1 + 12, 14, 15, // tri2 + 13, 16, 17 // tri3 + ), + gsSPNTriangles_5b(13, 17, 14, // tri0 + 16, 18, 19, // tri1 + 16, 19, 17, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(20, 22, 23, // tri0 + 21, 24, 25, // tri1 + 21, 25, 22, // tri2 + 26, 20, 23 // tri3 + ), + gsSPNTriangles_5b(26, 23, 27, // tri0 + 28, 29, 30, // tri1 + 28, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_yamishop_v[150], 24, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 9, 12, 13 // tri3 + ), + gsSPNTriangles_5b(9, 13, 10, // tri0 + 14, 8, 11, // tri1 + 14, 11, 15, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(16, 18, 19, // tri0 + 17, 20, 21, // tri1 + 17, 21, 18, // tri2 + 22, 16, 19 // tri3 + ), + gsSPNTriangles_5b(22, 19, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_yami_box_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_yami_box02_tex, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&grd_yamishop_v[174], 8, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_yami_box01_tex, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&grd_yamishop_v[182], 28, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 1 // tri2 + ), + gsSPNTriangles_5b(4, 1, 0, // tri0 + 6, 7, 8, // tri1 + 6, 8, 9, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(10, 12, 13, // tri0 + 14, 15, 16, // tri1 + 14, 16, 17, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(18, 20, 21, // tri0 + 22, 23, 19, // tri1 + 22, 19, 18, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(24, 26, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIM_LOD_FRAC, 0, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 150, 10, 10, 30, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_DECAL2), + gsDPLoadTextureBlock_4b_Dolphin(rom_yami_shadow01_tex, G_IM_FMT_I, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&grd_yamishop_v[210], 16, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/myr_etc/myr_etc.c b/src/data/field/bg/acre/myr_etc/myr_etc.c new file mode 100644 index 00000000..a1032a8a --- /dev/null +++ b/src/data/field/bg/acre/myr_etc/myr_etc.c @@ -0,0 +1,74 @@ +#include "libforest/gbi_extensions.h" + +static u16 myr_kotei_pal[] = { +#include "assets/field/bg/myr_kotei_pal.inc" +}; + +static u8 myr_enter[] = { +#include "assets/field/bg/myr_enter.inc" +}; + +static u8 myr_window[] = { +#include "assets/field/bg/myr_window.inc" +}; + +static Vtx myr_kotei_v[] = { +#include "assets/field/bg/myr_kotei_v.inc" +}; + +static Gfx myr_kotei_model[] = { + gsSPTexture(65535, 65535, 0, 0, G_ON), + gsDPPipeSync(), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, COMBINED, 0, PRIMITIVE, 0, 0, 0, 0, COMBINED), + gsDPSetRenderMode(G_RM_NOOP, G_RM_AA_ZB_TEX_EDGE2), + gsDPPipeSync(), + gsDPSetTextureLUT(G_TT_RGBA16), + gsDPLoadTLUT_pal16(15, myr_kotei_pal), + gsDPLoadTextureBlock_4b(myr_enter, G_IM_FMT_CI, 64, 32, 15, G_TX_MIRROR | G_TX_CLAMP, G_TX_MIRROR | G_TX_CLAMP, 6, + 5, G_TX_NOLOD, G_TX_NOLOD), + gsSPClearGeometryMode(G_FOG | G_LIGHTING | G_TEXTURE_GEN | G_TEXTURE_GEN_LINEAR), + gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_SHADING_SMOOTH), + gsSPVertex(&myr_kotei_v[0], 6, 0), + gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0), + gsSP2Triangles(4, 5, 2, 0, 5, 0, 2, 0), + gsSPEndDisplayList(), +}; + +static Gfx myr_out_model[] = { + gsSPTexture(65535, 65535, 0, 0, G_ON), + gsDPPipeSync(), + gsDPSetCombineMode(G_CC_PRIMITIVE, G_CC_PASS2), + gsDPSetRenderMode(G_RM_NOOP, G_RM_AA_ZB_TEX_EDGE2), + gsSPClearGeometryMode(G_FOG | G_LIGHTING | G_TEXTURE_GEN | G_TEXTURE_GEN_LINEAR), + gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_SHADING_SMOOTH), + gsSPVertex(&myr_kotei_v[6], 8, 0), + gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 7, 5, 0), + gsSPEndDisplayList(), +}; + +static Gfx myr_koteiT_model[] = { + gsSPTexture(65535, 65535, 0, 0, G_ON), + gsDPPipeSync(), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, COMBINED, 0, PRIMITIVE, 0, 0, 0, 0, COMBINED), + gsDPSetRenderMode(G_RM_NOOP, G_RM_AA_ZB_TEX_EDGE2), + gsDPPipeSync(), + gsDPSetTextureLUT(G_TT_RGBA16), + gsDPLoadTLUT_pal16(15, myr_kotei_pal), + gsDPLoadTextureBlock_4b(myr_window, G_IM_FMT_CI, 64, 64, 15, G_TX_MIRROR | G_TX_CLAMP, G_TX_MIRROR | G_TX_CLAMP, 6, + 6, G_TX_NOLOD, G_TX_NOLOD), + gsSPClearGeometryMode(G_FOG | G_LIGHTING | G_TEXTURE_GEN | G_TEXTURE_GEN_LINEAR), + gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_SHADING_SMOOTH), + gsSPVertex(&myr_kotei_v[14], 8, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSPEndDisplayList(), +}; + +extern Gfx myr_etc_model[] = { + gsDPPipeSync(), + gsSPDisplayList(myr_kotei_model), + gsSPDisplayList(myr_koteiT_model), + gsSPDisplayList(myr_out_model), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/police_indoor/police_indoor.c b/src/data/field/bg/acre/police_indoor/police_indoor.c new file mode 100644 index 00000000..12f129f2 --- /dev/null +++ b/src/data/field/bg/acre/police_indoor/police_indoor.c @@ -0,0 +1,643 @@ +#include "libforest/gbi_extensions.h" + +static u16 rom_koban_tel_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_tel_pal.inc" +}; + +static u16 rom_koban_win_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_win_pal.inc" +}; + +static u16 rom_koban_us_pos_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_us_pos_pal.inc" +}; + +static u16 rom_koban_jim_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_jim_pal.inc" +}; + +static u16 rom_koban_kabe_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_kabe_pal.inc" +}; + +static u16 rom_koban_roc_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_roc_pal.inc" +}; + +static u8 rom_koban_tel[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_tel.inc" +}; + +static u8 rom_koban_win[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_win.inc" +}; + +static u8 rom_koban_desk_front[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_desk_front.inc" +}; + +static u8 rom_koban_desk_side[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_desk_side.inc" +}; + +static u8 rom_koban_desk_top[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_desk_top.inc" +}; + +static u8 rom_koban_yuka[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_yuka.inc" +}; + +static u8 rom_koban_us_pos1[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_us_pos1.inc" +}; + +static u8 rom_koban_us_pos2[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_us_pos2.inc" +}; + +static u8 rom_koban_kage1[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_kage1.inc" +}; + +static u8 rom_koban_kage2[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_kage2.inc" +}; + +static u8 rom_koban_ent[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_ent.inc" +}; + +static u8 rom_koban_jim_front[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_jim_front.inc" +}; + +static u8 rom_koban_jim_side[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_jim_side.inc" +}; + +static u8 rom_koban_jim_top[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_jim_top.inc" +}; + +static u8 rom_koban_kabe1[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_kabe1.inc" +}; + +static u8 rom_koban_telcode[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_telcode.inc" +}; + +static u8 rom_koban_book[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_book.inc" +}; + +static u8 rom_koban_roc_s[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_roc_s.inc" +}; + +static u8 rom_koban_roc_t[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_roc_t.inc" +}; + +static u8 rom_koban_kabe3[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_kabe3.inc" +}; + +static u8 rom_koban_isu[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_isu.inc" +}; + +static u8 rom_koban_roc_i[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_roc_i.inc" +}; + +static u8 rom_koban_roc_f3[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_roc_f3.inc" +}; + +static Vtx police_indoor_v[] = { +#include "assets/field/bg/police_indoor_v.inc" +}; + +extern Gfx police_indoor_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx police_indoor_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_koban_win_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_koban_win, G_IM_FMT_CI, 32, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&police_indoor_v[268], 8, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_koban_us_pos_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_koban_us_pos2, G_IM_FMT_CI, 32, 48, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&police_indoor_v[276], 8, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_koban_us_pos1, G_IM_FMT_CI, 48, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 4, 5, 6, // tri0 + 5, 7, 6, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_koban_win_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_koban_desk_side, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsSPVertex(&police_indoor_v[336], 16, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 8, 11, 9, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(13, 15, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_koban_desk_front, G_IM_FMT_CI, 32, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&police_indoor_v[352], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 8, 9, 10, // tri1 + 8, 11, 9, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(13, 15, 14, // tri0 + 16, 17, 18, // tri1 + 16, 19, 17, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(20, 23, 21, // tri0 + 24, 25, 26, // tri1 + 24, 27, 25, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b(29, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&police_indoor_v[384], 8, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_koban_roc_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_koban_roc_f3, G_IM_FMT_CI, 32, 64, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&police_indoor_v[392], 7, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 1, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_koban_jim_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_koban_isu, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&police_indoor_v[399], 14, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_koban_jim_side, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 6, 7, 8, // tri0 + 6, 9, 7, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_koban_jim_front, G_IM_FMT_CI, 32, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 10, 11, 12, // tri0 + 10, 12, 13, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_koban_tel_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_koban_book, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&police_indoor_v[413], 12, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_koban_telcode, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(1, // tri count + 4, 5, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_koban_tel, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 7, 8, 9, // tri0 + 7, 9, 10, // tri1 + 8, 7, 11 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_koban_win_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_koban_ent, G_IM_FMT_CI, 64, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&police_indoor_v[0], 5, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 0, 4, 1 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_koban_kabe_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_koban_kabe1, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_MIRROR, 0, 0), + gsSPVertex(&police_indoor_v[5], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 2, 3, 4 // tri2 + ), + gsSPNTriangles_5b(0, 5, 6, // tri0 + 5, 7, 6, // tri1 + 8, 9, 10, // tri2 + 9, 11, 10 // tri3 + ), + gsSPNTriangles_5b(4, 12, 13, // tri0 + 12, 14, 13, // tri1 + 15, 16, 17, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b(17, 19, 10, // tri0 + 20, 1, 6, // tri1 + 1, 0, 6, // tri2 + 8, 10, 19 // tri3 + ), + gsSPNTriangles_5b(21, 12, 3, // tri0 + 12, 4, 3, // tri1 + 17, 18, 19, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b(25, 22, 24, // tri0 + 26, 27, 28, // tri1 + 29, 26, 28, // tri2 + 22, 30, 31 // tri3 + ), + gsSPNTriangles_5b(23, 22, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&police_indoor_v[37], 32, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 6, 3, // tri0 + 7, 0, 2, // tri1 + 8, 9, 10, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(11, 14, 12, // tri0 + 14, 15, 12, // tri1 + 15, 13, 12, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 17, 8, 18, // tri1 + 8, 10, 18, // tri2 + 10, 19, 18 // tri3 + ), + gsSPNTriangles_5b(20, 21, 14, // tri0 + 20, 22, 21, // tri1 + 22, 23, 21, // tri2 + 23, 14, 21 // tri3 + ), + gsSPNTriangles_5b(23, 24, 14, // tri0 + 8, 25, 9, // tri1 + 25, 26, 9, // tri2 + 8, 27, 25 // tri3 + ), + gsSPNTriangles_5b(27, 26, 25, // tri0 + 16, 14, 24, // tri1 + 28, 29, 30, // tri2 + 31, 30, 29 // tri3 + ), + gsSPVertex(&police_indoor_v[69], 10, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 2, 3 // tri2 + ), + gsSPNTriangles_5b(4, 0, 2, // tri0 + 3, 5, 6, // tri1 + 3, 6, 7, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(9, 7, 8, // tri0 + 9, 3, 7, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_koban_tel_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_koban_yuka, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&police_indoor_v[79], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 0, 4 // tri2 + ), + gsSPNTriangles_5b(0, 5, 4, // tri0 + 6, 7, 1, // tri1 + 8, 9, 6, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(10, 13, 11, // tri0 + 14, 15, 16, // tri1 + 14, 17, 15, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(20, 21, 22, // tri0 + 23, 17, 14, // tri1 + 24, 25, 2, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b(26, 27, 25, // tri0 + 27, 12, 25, // tri1 + 28, 26, 24, // tri2 + 27, 26, 29 // tri3 + ), + gsSPNTriangles_5b(30, 31, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&police_indoor_v[111], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 1, 6, // tri0 + 7, 1, 3, // tri1 + 8, 9, 0, // tri2 + 9, 10, 0 // tri3 + ), + gsSPNTriangles_5b(8, 11, 9, // tri0 + 12, 9, 13, // tri1 + 8, 0, 14, // tri2 + 0, 10, 4 // tri3 + ), + gsSPNTriangles_5b(15, 16, 11, // tri0 + 17, 15, 18, // tri1 + 17, 16, 15, // tri2 + 17, 19, 16 // tri3 + ), + gsSPNTriangles_5b(2, 20, 14, // tri0 + 5, 6, 21, // tri1 + 22, 5, 21, // tri2 + 23, 22, 21 // tri3 + ), + gsSPNTriangles_5b(24, 25, 13, // tri0 + 26, 27, 28, // tri1 + 24, 29, 28, // tri2 + 27, 24, 28 // tri3 + ), + gsSPNTriangles_5b(4, 30, 3, // tri0 + 31, 7, 3, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&police_indoor_v[143], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 0, 0 // tri2 + ), + gsDPSetCombineMode(G_CC_PRIMITIVE, G_CC_PASS2), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsSPVertex(&police_indoor_v[147], 8, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_koban_win_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_koban_desk_top, G_IM_FMT_CI, 32, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&police_indoor_v[155], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 8, 11, 9, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 15, 13, // tri0 + 16, 17, 18, // tri1 + 17, 19, 18, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(20, 23, 21, // tri0 + 24, 25, 26, // tri1 + 24, 27, 25, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b(29, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&police_indoor_v[187], 8, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_koban_roc_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_koban_roc_i, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&police_indoor_v[195], 12, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_koban_roc_t, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 4, 5, 6, // tri0 + 4, 7, 5, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_koban_roc_s, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 8, 9, 10, // tri0 + 9, 11, 10, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_koban_jim_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_koban_jim_top, G_IM_FMT_CI, 32, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&police_indoor_v[207], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_koban_kabe_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_koban_kabe3, G_IM_FMT_CI, 32, 64, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsSPVertex(&police_indoor_v[211], 32, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 1 // tri2 + ), + gsSPNTriangles_5b(5, 3, 1, // tri0 + 5, 6, 3, // tri1 + 6, 7, 3, // tri2 + 3, 7, 2 // tri3 + ), + gsSPNTriangles_5b(7, 8, 2, // tri0 + 9, 10, 11, // tri1 + 9, 11, 12, // tri2 + 12, 11, 13 // tri3 + ), + gsSPNTriangles_5b(12, 13, 14, // tri0 + 15, 12, 14, // tri1 + 15, 14, 16, // tri2 + 9, 12, 15 // tri3 + ), + gsSPNTriangles_5b(9, 15, 17, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20, // tri2 + 21, 22, 20 // tri3 + ), + gsSPNTriangles_5b(22, 23, 20, // tri0 + 24, 21, 25, // tri1 + 24, 22, 21, // tri2 + 21, 26, 25 // tri3 + ), + gsSPNTriangles_5b(21, 19, 26, // tri0 + 27, 28, 29, // tri1 + 27, 30, 28, // tri2 + 28, 31, 29 // tri3 + ), + gsSPVertex(&police_indoor_v[243], 25, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 4, 2, 7, // tri1 + 8, 9, 10, // tri2 + 11, 8, 10 // tri3 + ), + gsSPNTriangles_5b(10, 12, 13, // tri0 + 11, 10, 13, // tri1 + 14, 15, 12, // tri2 + 14, 12, 10 // tri3 + ), + gsSPNTriangles_5b(14, 10, 9, // tri0 + 14, 9, 16, // tri1 + 17, 18, 19, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 21, 24, 22, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 0, 0, 0, 115), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_DECAL2), + gsDPLoadTextureBlock_4b_Dolphin(rom_koban_kage2, G_IM_FMT_I, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&police_indoor_v[284], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_koban_kage1, G_IM_FMT_I, 32, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&police_indoor_v[288], 32, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 10, 11, 12, // tri1 + 11, 13, 12, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b(23, 25, 24, // tri0 + 26, 27, 28, // tri1 + 26, 29, 27, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&police_indoor_v[318], 18, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/rom_museum1/rom_museum1.c b/src/data/field/bg/acre/rom_museum1/rom_museum1.c new file mode 100644 index 00000000..d47c6bde --- /dev/null +++ b/src/data/field/bg/acre/rom_museum1/rom_museum1.c @@ -0,0 +1,412 @@ +#include "libforest/gbi_extensions.h" + +static u16 rom_museum1_mado_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum1_mado_pal.inc" +}; + +static u16 rom_museum1_step_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum1_step_pal.inc" +}; + +static u16 rom_museum1_floor_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum1_floor_pal.inc" +}; + +static u16 rom_museum1_wall_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum1_wall_pal.inc" +}; + +static u8 rom_museum1_mado1_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum1_mado1_tex.inc" +}; + +static u8 rom_museum1_step1_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum1_step1_tex.inc" +}; + +static u8 rom_museum1_step2_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum1_step2_tex.inc" +}; + +static u8 rom_museum1_floorA_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum1_floorA_tex.inc" +}; + +static u8 rom_museum1_floorB_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum1_floorB_tex.inc" +}; + +static u8 rom_museum1_mado2_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum1_mado2_tex.inc" +}; + +static u8 rom_museum1_sign1_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum1_sign1_tex.inc" +}; + +static u8 rom_museum1_wallA_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum1_wallA_tex.inc" +}; + +static u8 rom_museum1_wallB_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum1_wallB_tex.inc" +}; + +static u8 rom_museum1_sign2_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum1_sign2_tex.inc" +}; + +static u8 rom_museum1_sign3_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum1_sign3_tex.inc" +}; + +static u8 rom_museum1_sign4_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum1_sign4_tex.inc" +}; + +static Vtx rom_museum1_v[] = { +#include "assets/field/bg/rom_museum1_v.inc" +}; + +extern Gfx rom_museum1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, COMBINED, 1, 0, PRIM_LOD_FRAC, COMBINED), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_museum1_mado_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum1_mado2_tex, G_IM_FMT_CI, 64, 64, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&rom_museum1_v[268], 16, 0), + gsSPNTriangles(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(0, 2, 7, // tri0 + 8, 9, 10, // tri1 + 11, 12, 13, // tri2 + 8, 10, 14 // tri3 + ), + gsSPNTriangles_5b(11, 13, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum1_mado1_tex, G_IM_FMT_CI, 64, 64, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_museum1_v[284], 16, 0), + gsSPNTriangles(8, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 13, 4, 6, // tri2 + 14, 7, 9 // tri3 + ), + gsSPNTriangles_5b(11, 15, 12, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx rom_museum1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&rom_museum1_v[0], 16, 0), + gsSPNTriangles(8, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 11, 8, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_museum1_step_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum1_sign4_tex, G_IM_FMT_CI, 64, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_museum1_v[16], 20, 0), + gsSPNTriangles(3, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 0, 2, 3 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum1_sign3_tex, G_IM_FMT_CI, 64, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTriangles(3, // tri count + 5, 6, 7, // tri0 + 7, 8, 9, // tri1 + 5, 7, 9 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum1_sign2_tex, G_IM_FMT_CI, 64, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTriangles(3, // tri count + 10, 11, 12, // tri0 + 12, 13, 10, // tri1 + 10, 14, 11 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum1_sign1_tex, G_IM_FMT_CI, 64, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTriangles(3, // tri count + 15, 16, 17, // tri0 + 17, 18, 15, // tri1 + 15, 19, 16 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum1_step2_tex, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&rom_museum1_v[36], 27, 0), + gsSPNTriangles(14, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 4, 5, 2 // tri2 + ), + gsSPNTriangles_5b(5, 0, 2, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 8, 10, 6 // tri3 + ), + gsSPNTriangles_5b(6, 11, 9, // tri0 + 12, 13, 14, // tri1 + 15, 16, 12, // tri2 + 12, 14, 15 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 19, 20, 17, // tri1 + 17, 21, 18, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum1_step1_tex, G_IM_FMT_CI, 64, 64, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTriangles(3, // tri count + 22, 23, 24, // tri0 + 24, 25, 22, // tri1 + 22, 26, 23 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_museum1_wall_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum1_wallA_tex, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&rom_museum1_v[63], 32, 0), + gsSPNTriangles(24, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 0, 7 // tri2 + ), + gsSPNTriangles_5b(4, 8, 9, // tri0 + 10, 6, 7, // tri1 + 8, 11, 9, // tri2 + 12, 2, 1 // tri3 + ), + gsSPNTriangles_5b(5, 13, 3, // tri0 + 2, 14, 0, // tri1 + 4, 15, 5, // tri2 + 0, 16, 7 // tri3 + ), + gsSPNTriangles_5b(17, 4, 9, // tri0 + 18, 19, 14, // tri1 + 20, 15, 21, // tri2 + 15, 4, 21 // tri3 + ), + gsSPNTriangles_5b(22, 23, 17, // tri0 + 23, 4, 17, // tri1 + 24, 25, 16, // tri2 + 0, 24, 16 // tri3 + ), + gsSPNTriangles_5b(19, 0, 14, // tri0 + 26, 10, 7, // tri1 + 0, 19, 24, // tri2 + 12, 27, 2 // tri3 + ), + gsSPNTriangles_5b(28, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_museum1_v[94], 18, 0), + gsSPNTriangles(11, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 2, 1, // tri0 + 3, 5, 6, // tri1 + 5, 7, 6, // tri2 + 3, 8, 5 // tri3 + ), + gsSPNTriangles_5b(8, 7, 5, // tri0 + 9, 10, 11, // tri1 + 12, 13, 14, // tri2 + 15, 16, 17 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum1_wallB_tex, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&rom_museum1_v[112], 32, 0), + gsSPNTriangles(21, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(13, 15, 14, // tri0 + 8, 16, 9, // tri1 + 8, 17, 16, // tri2 + 17, 18, 16 // tri3 + ), + gsSPNTriangles_5b(17, 19, 18, // tri0 + 20, 11, 9, // tri1 + 21, 22, 23, // tri2 + 22, 24, 23 // tri3 + ), + gsSPNTriangles_5b(14, 15, 25, // tri0 + 22, 12, 24, // tri1 + 12, 14, 24, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b(29, 26, 28, // tri0 + 29, 28, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_museum1_v[143], 32, 0), + gsSPNTriangles(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 9, 0, 2, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(10, 13, 11, // tri0 + 13, 14, 11, // tri1 + 15, 16, 17, // tri2 + 18, 15, 17 // tri3 + ), + gsSPNTriangles_5b(15, 19, 16, // tri0 + 20, 21, 22, // tri1 + 23, 20, 22, // tri2 + 23, 22, 24 // tri3 + ), + gsSPNTriangles_5b(25, 23, 24, // tri0 + 25, 26, 27, // tri1 + 28, 26, 25, // tri2 + 28, 25, 24 // tri3 + ), + gsSPNTriangles_5b(29, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_museum1_v[175], 8, 0), + gsSPNTriangles(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b(4, 3, 5, // tri0 + 6, 4, 5, // tri1 + 6, 5, 7, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_museum1_floor_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum1_floorB_tex, G_IM_FMT_CI, 64, 64, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_museum1_v[183], 32, 0), + gsSPNTriangles(20, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 8, 9, 7, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(10, 13, 11, // tri0 + 11, 14, 12, // tri1 + 15, 16, 17, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b(16, 19, 18, // tri0 + 20, 21, 22, // tri1 + 20, 23, 21, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(24, 27, 25, // tri0 + 20, 22, 28, // tri1 + 26, 29, 24, // tri2 + 3, 30, 4 // tri3 + ), + gsSPNTriangles_5b(14, 31, 12, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_museum1_v[215], 10, 0), + gsSPNTriangles(4, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum1_floorA_tex, G_IM_FMT_CI, 64, 64, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_museum1_v[225], 27, 0), + gsSPNTriangles(16, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 9, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(16, 13, 17, // tri0 + 6, 18, 7, // tri1 + 19, 20, 21, // tri2 + 22, 19, 21 // tri3 + ), + gsSPNTriangles_5b(22, 21, 14, // tri0 + 23, 24, 25, // tri1 + 23, 26, 24, // tri2 + 10, 9, 12 // tri3 + ), + gsSPNTriangles_5b(17, 13, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_museum1_v[252], 16, 0), + gsSPNTriangles(12, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 1, // tri0 + 7, 6, 5, // tri1 + 5, 1, 0, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(8, 11, 9, // tri0 + 8, 10, 12, // tri1 + 12, 10, 13, // tri2 + 10, 14, 13 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/rom_museum2/rom_museum2.c b/src/data/field/bg/acre/rom_museum2/rom_museum2.c new file mode 100644 index 00000000..49c55b79 --- /dev/null +++ b/src/data/field/bg/acre/rom_museum2/rom_museum2.c @@ -0,0 +1,417 @@ +#include "libforest/gbi_extensions.h" + +static u16 rom_museum2_wall_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum2_wall_pal.inc" +}; + +static u16 rom_museum2_floor_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum2_floor_pal.inc" +}; + +static u16 rom_museum2_step1_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum2_step1_pal.inc" +}; + +static u8 rom_museum2_wallA_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum2_wallA_tex.inc" +}; + +static u8 rom_museum2_wallB_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum2_wallB_tex.inc" +}; + +static u8 rom_museum2_floorA_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum2_floorA_tex.inc" +}; + +static u8 rom_museum2_step1_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum2_step1_tex.inc" +}; + +static u8 rom_museum2_plate_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum2_plate_tex.inc" +}; + +static Vtx rom_museum2_v[] = { +#include "assets/field/bg/rom_museum2_v.inc" +}; + +extern Gfx rom_museum2_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx rom_museum2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, COMBINED, 0, PRIMITIVE, 0, 0, 0, 0, COMBINED), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_museum2_step1_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum2_step1_tex, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&rom_museum2_v[0], 5, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 0, 4, 1 // tri2 + ), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_museum2_wall_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum2_wallB_tex, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&rom_museum2_v[5], 25, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 2, 3, 4 // tri2 + ), + gsSPNTriangles_5b(0, 5, 1, // tri0 + 5, 6, 1, // tri1 + 7, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b(4, 3, 11, // tri0 + 3, 12, 11, // tri1 + 6, 5, 13, // tri2 + 5, 14, 13 // tri3 + ), + gsSPNTriangles_5b(13, 15, 9, // tri0 + 7, 9, 15, // tri1 + 13, 14, 15, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(19, 16, 18, // tri0 + 20, 21, 22, // tri1 + 23, 16, 19, // tri2 + 16, 23, 22 // tri3 + ), + gsSPNTriangles_5b(24, 22, 23, // tri0 + 24, 20, 22, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum2_wallA_tex, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&rom_museum2_v[30], 25, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(6, 7, 4, // tri0 + 7, 5, 4, // tri1 + 8, 9, 10, // tri2 + 8, 0, 9 // tri3 + ), + gsSPNTriangles_5b(0, 2, 9, // tri0 + 2, 10, 9, // tri1 + 11, 12, 6, // tri2 + 11, 13, 12 // tri3 + ), + gsSPNTriangles_5b(13, 14, 12, // tri0 + 14, 6, 12, // tri1 + 0, 15, 1, // tri2 + 15, 5, 1 // tri3 + ), + gsSPNTriangles_5b(0, 3, 15, // tri0 + 3, 5, 15, // tri1 + 7, 6, 14, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(19, 18, 20, // tri0 + 18, 17, 20, // tri1 + 21, 20, 17, // tri2 + 21, 19, 20 // tri3 + ), + gsSPNTriangles_5b(17, 16, 22, // tri0 + 16, 23, 22, // tri1 + 24, 22, 23, // tri2 + 24, 17, 22 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_museum2_floor_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum2_floorA_tex, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&rom_museum2_v[55], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 3, 1, 0 // tri2 + ), + gsSPNTriangles_5b(3, 5, 1, // tri0 + 6, 7, 8, // tri1 + 9, 10, 11, // tri2 + 12, 9, 11 // tri3 + ), + gsSPNTriangles_5b(13, 12, 11, // tri0 + 14, 15, 16, // tri1 + 17, 18, 19, // tri2 + 14, 20, 19 // tri3 + ), + gsSPNTriangles_5b(18, 14, 19, // tri0 + 21, 22, 23, // tri1 + 24, 25, 23, // tri2 + 24, 26, 27 // tri3 + ), + gsSPNTriangles_5b(24, 23, 26, // tri0 + 28, 0, 2, // tri1 + 28, 29, 0, // tri2 + 29, 28, 7 // tri3 + ), + gsSPNTriangles_5b(28, 8, 7, // tri0 + 29, 4, 0, // tri1 + 12, 13, 29, // tri2 + 15, 30, 16 // tri3 + ), + gsSPNTriangles_5b(15, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_museum2_v[87], 27, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 2, 5, 3 // tri2 + ), + gsSPNTriangles_5b(2, 1, 5, // tri0 + 5, 6, 7, // tri1 + 8, 9, 0, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(10, 13, 11, // tri0 + 13, 14, 11, // tri1 + 14, 15, 11, // tri2 + 16, 13, 10 // tri3 + ), + gsSPNTriangles_5b(14, 13, 17, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19, // tri2 + 18, 22, 21 // tri3 + ), + gsSPNTriangles_5b(18, 4, 22, // tri0 + 23, 21, 24, // tri1 + 25, 21, 22, // tri2 + 26, 11, 18 // tri3 + ), + gsSPNTriangles_5b(11, 2, 18, // tri0 + 26, 12, 11, // tri1 + 2, 11, 15, // tri2 + 26, 18, 20 // tri3 + ), + gsSPNTriangles_5b(18, 2, 4, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_museum2_step1_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum2_plate_tex, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_museum2_v[114], 32, 0), + gsSPNTrianglesInit_5b(30, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b(2, 5, 3, // tri0 + 1, 6, 4, // tri1 + 1, 4, 2, // tri2 + 0, 7, 6 // tri3 + ), + gsSPNTriangles_5b(0, 6, 1, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 11, 10, 12 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 13, 12, 14, // tri1 + 13, 14, 15, // tri2 + 8, 11, 13 // tri3 + ), + gsSPNTriangles_5b(8, 13, 15, // tri0 + 16, 17, 18, // tri1 + 16, 18, 19, // tri2 + 18, 20, 21 // tri3 + ), + gsSPNTriangles_5b(18, 21, 19, // tri0 + 17, 22, 20, // tri1 + 17, 20, 18, // tri2 + 16, 23, 22 // tri3 + ), + gsSPNTriangles_5b(16, 22, 17, // tri0 + 24, 25, 26, // tri1 + 24, 26, 27, // tri2 + 27, 26, 28 // tri3 + ), + gsSPNTriangles_5b(27, 28, 29, // tri0 + 24, 27, 29, // tri1 + 24, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_museum2_v[145], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b(1, 5, 2, // tri0 + 0, 6, 4, // tri1 + 0, 4, 1, // tri2 + 7, 8, 9 // tri3 + ), + gsSPNTriangles_5b(7, 9, 10, // tri0 + 10, 9, 11, // tri1 + 10, 11, 12, // tri2 + 7, 10, 12 // tri3 + ), + gsSPNTriangles_5b(7, 12, 13, // tri0 + 14, 15, 16, // tri1 + 14, 16, 17, // tri2 + 17, 16, 18 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 20, 14, 17, // tri1 + 20, 17, 19, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b(21, 23, 24, // tri0 + 23, 25, 26, // tri1 + 23, 26, 24, // tri2 + 22, 27, 25 // tri3 + ), + gsSPNTriangles_5b(22, 25, 23, // tri0 + 28, 29, 30, // tri1 + 28, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_museum2_v[177], 32, 0), + gsSPNTrianglesInit_5b(30, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b(3, 4, 5, // tri0 + 6, 0, 3, // tri1 + 6, 3, 5, // tri2 + 7, 8, 9 // tri3 + ), + gsSPNTriangles_5b(7, 9, 10, // tri0 + 9, 11, 12, // tri1 + 9, 12, 10, // tri2 + 8, 13, 11 // tri3 + ), + gsSPNTriangles_5b(8, 11, 9, // tri0 + 7, 14, 13, // tri1 + 7, 13, 8, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b(15, 17, 18, // tri0 + 18, 17, 19, // tri1 + 18, 19, 20, // tri2 + 20, 19, 21 // tri3 + ), + gsSPNTriangles_5b(20, 21, 22, // tri0 + 15, 18, 20, // tri1 + 15, 20, 22, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b(23, 25, 26, // tri0 + 25, 27, 28, // tri1 + 25, 28, 26, // tri2 + 24, 29, 27 // tri3 + ), + gsSPNTriangles_5b(24, 27, 25, // tri0 + 23, 30, 29, // tri1 + 23, 29, 24, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_museum2_v[208], 32, 0), + gsSPNTrianglesInit_5b(32, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b(3, 4, 5, // tri0 + 5, 4, 6, // tri1 + 5, 6, 7, // tri2 + 0, 3, 5 // tri3 + ), + gsSPNTriangles_5b(0, 5, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 10, 12, 13 // tri3 + ), + gsSPNTriangles_5b(10, 13, 11, // tri0 + 9, 14, 12, // tri1 + 9, 12, 10, // tri2 + 8, 15, 14 // tri3 + ), + gsSPNTriangles_5b(8, 14, 9, // tri0 + 16, 17, 18, // tri1 + 16, 18, 19, // tri2 + 19, 18, 20 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 21, 20, 22, // tri1 + 21, 22, 23, // tri2 + 16, 19, 21 // tri3 + ), + gsSPNTriangles_5b(16, 21, 23, // tri0 + 24, 25, 26, // tri1 + 24, 26, 27, // tri2 + 26, 28, 29 // tri3 + ), + gsSPNTriangles_5b(26, 29, 27, // tri0 + 25, 30, 28, // tri1 + 25, 28, 26, // tri2 + 24, 31, 30 // tri3 + ), + gsSPNTriangles_5b(24, 30, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_museum2_v[240], 32, 0), + gsSPNTrianglesInit_5b(32, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b(3, 4, 5, // tri0 + 5, 4, 6, // tri1 + 5, 6, 7, // tri2 + 0, 3, 5 // tri3 + ), + gsSPNTriangles_5b(0, 5, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 10, 12, 13 // tri3 + ), + gsSPNTriangles_5b(10, 13, 11, // tri0 + 9, 14, 12, // tri1 + 9, 12, 10, // tri2 + 8, 15, 14 // tri3 + ), + gsSPNTriangles_5b(8, 14, 9, // tri0 + 16, 17, 18, // tri1 + 16, 18, 19, // tri2 + 18, 20, 21 // tri3 + ), + gsSPNTriangles_5b(18, 21, 19, // tri0 + 17, 22, 20, // tri1 + 17, 20, 18, // tri2 + 16, 23, 22 // tri3 + ), + gsSPNTriangles_5b(16, 22, 17, // tri0 + 24, 25, 26, // tri1 + 24, 26, 27, // tri2 + 27, 26, 28 // tri3 + ), + gsSPNTriangles_5b(27, 28, 29, // tri0 + 29, 28, 30, // tri1 + 29, 30, 31, // tri2 + 24, 27, 29 // tri3 + ), + gsSPNTriangles_5b(24, 29, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/rom_museum3/rom_museum3.c b/src/data/field/bg/acre/rom_museum3/rom_museum3.c new file mode 100644 index 00000000..1fe59e22 --- /dev/null +++ b/src/data/field/bg/acre/rom_museum3/rom_museum3.c @@ -0,0 +1,417 @@ +#include "libforest/gbi_extensions.h" + +static u16 rom_museum3_wall_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum3_wall_pal.inc" +}; + +static u16 rom_museum3_back_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum3_back_pal.inc" +}; + +static u16 rom_museum3_floor_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum3_floor_pal.inc" +}; + +static u8 rom_museum3_wallA_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum3_wallA_tex.inc" +}; + +static u8 rom_museum3_wallB_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum3_wallB_tex.inc" +}; + +static u8 rom_museum3_back_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum3_back_tex.inc" +}; + +static u8 rom_museum3_floorA_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum3_floorA_tex.inc" +}; + +static u8 rom_museum3_step_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum3_step_tex.inc" +}; + +static u8 rom_museum3_hasira_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum3_hasira_tex.inc" +}; + +static u8 rom_museum3_backside_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum3_backside_tex.inc" +}; + +static Vtx rom_museum3_v[] = { +#include "assets/field/bg/rom_museum3_v.inc" +}; + +extern Gfx rom_museum3_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx rom_museum3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, COMBINED, 0, PRIMITIVE, 0, 0, 0, 0, COMBINED), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_museum3_back_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum3_step_tex, G_IM_FMT_CI, 64, 64, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&rom_museum3_v[0], 5, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 0, 4, 1 // tri2 + ), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_museum3_wall_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum3_wallA_tex, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&rom_museum3_v[5], 27, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(6, 7, 4, // tri0 + 7, 5, 4, // tri1 + 8, 9, 10, // tri2 + 8, 0, 9 // tri3 + ), + gsSPNTriangles_5b(0, 2, 9, // tri0 + 2, 10, 9, // tri1 + 11, 12, 6, // tri2 + 11, 13, 12 // tri3 + ), + gsSPNTriangles_5b(13, 14, 12, // tri0 + 14, 6, 12, // tri1 + 0, 15, 1, // tri2 + 15, 16, 1 // tri3 + ), + gsSPNTriangles_5b(0, 17, 15, // tri0 + 17, 16, 15, // tri1 + 7, 6, 14, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(21, 20, 22, // tri0 + 20, 19, 22, // tri1 + 23, 22, 19, // tri2 + 23, 21, 22 // tri3 + ), + gsSPNTriangles_5b(19, 18, 24, // tri0 + 18, 25, 24, // tri1 + 26, 24, 25, // tri2 + 26, 19, 24 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum3_wallB_tex, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&rom_museum3_v[32], 27, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 2, 3, 4 // tri2 + ), + gsSPNTriangles_5b(0, 5, 1, // tri0 + 5, 6, 1, // tri1 + 7, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b(4, 3, 11, // tri0 + 3, 12, 11, // tri1 + 13, 14, 15, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(15, 17, 9, // tri0 + 7, 9, 17, // tri1 + 15, 16, 17, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(21, 18, 20, // tri0 + 22, 23, 24, // tri1 + 25, 18, 21, // tri2 + 18, 25, 24 // tri3 + ), + gsSPNTriangles_5b(26, 24, 25, // tri0 + 26, 22, 24, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_museum3_floor_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum3_floorA_tex, G_IM_FMT_CI, 64, 64, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&rom_museum3_v[59], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 3, 1, 0 // tri2 + ), + gsSPNTriangles_5b(3, 5, 1, // tri0 + 6, 7, 8, // tri1 + 9, 10, 11, // tri2 + 12, 9, 11 // tri3 + ), + gsSPNTriangles_5b(13, 12, 11, // tri0 + 14, 15, 16, // tri1 + 17, 18, 19, // tri2 + 14, 20, 19 // tri3 + ), + gsSPNTriangles_5b(18, 14, 19, // tri0 + 21, 22, 23, // tri1 + 24, 25, 23, // tri2 + 24, 26, 27 // tri3 + ), + gsSPNTriangles_5b(24, 23, 26, // tri0 + 28, 0, 2, // tri1 + 28, 29, 0, // tri2 + 29, 28, 7 // tri3 + ), + gsSPNTriangles_5b(28, 8, 7, // tri0 + 29, 4, 0, // tri1 + 12, 13, 29, // tri2 + 15, 30, 16 // tri3 + ), + gsSPNTriangles_5b(15, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_museum3_v[91], 27, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 2, 5, 3 // tri2 + ), + gsSPNTriangles_5b(2, 1, 5, // tri0 + 5, 6, 7, // tri1 + 8, 9, 0, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(10, 13, 11, // tri0 + 13, 14, 11, // tri1 + 14, 15, 11, // tri2 + 16, 13, 10 // tri3 + ), + gsSPNTriangles_5b(14, 13, 17, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19, // tri2 + 18, 22, 21 // tri3 + ), + gsSPNTriangles_5b(18, 4, 22, // tri0 + 23, 21, 24, // tri1 + 25, 21, 22, // tri2 + 26, 11, 18 // tri3 + ), + gsSPNTriangles_5b(11, 2, 18, // tri0 + 26, 12, 11, // tri1 + 2, 11, 15, // tri2 + 26, 18, 20 // tri3 + ), + gsSPNTriangles_5b(18, 2, 4, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_museum3_wall_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum3_hasira_tex, G_IM_FMT_CI, 16, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&rom_museum3_v[118], 32, 0), + gsSPNTrianglesInit_5b(40, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(1, 5, 6, // tri0 + 5, 7, 6, // tri1 + 7, 8, 6, // tri2 + 9, 0, 10 // tri3 + ), + gsSPNTriangles_5b(0, 11, 10, // tri0 + 11, 12, 10, // tri1 + 13, 9, 14, // tri2 + 9, 15, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 14, // tri0 + 17, 18, 19, // tri1 + 17, 13, 18, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 21, 17, 22, // tri1 + 22, 24, 23, // tri2 + 16, 18, 14 // tri3 + ), + gsSPNTriangles_5b(16, 20, 18, // tri0 + 18, 13, 14, // tri1 + 12, 16, 10, // tri2 + 16, 15, 10 // tri3 + ), + gsSPNTriangles_5b(15, 9, 10, // tri0 + 20, 22, 19, // tri1 + 20, 24, 22, // tri2 + 22, 17, 19 // tri3 + ), + gsSPNTriangles_5b(24, 25, 23, // tri0 + 24, 26, 25, // tri1 + 25, 21, 23, // tri2 + 4, 12, 2 // tri3 + ), + gsSPNTriangles_5b(12, 11, 2, // tri0 + 11, 0, 2, // tri1 + 8, 4, 6, // tri2 + 4, 3, 6 // tri3 + ), + gsSPNTriangles_5b(3, 1, 6, // tri0 + 27, 7, 28, // tri1 + 27, 8, 7, // tri2 + 7, 5, 28 // tri3 + ), + gsSPNTriangles_5b(29, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_museum3_v[150], 32, 0), + gsSPNTrianglesInit_5b(32, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 3, 4 // tri2 + ), + gsSPNTriangles_5b(0, 4, 5, // tri0 + 0, 5, 6, // tri1 + 7, 8, 9, // tri2 + 7, 10, 8 // tri3 + ), + gsSPNTriangles_5b(7, 11, 10, // tri0 + 12, 13, 8, // tri1 + 12, 14, 13, // tri2 + 12, 15, 14 // tri3 + ), + gsSPNTriangles_5b(16, 9, 17, // tri0 + 16, 18, 9, // tri1 + 16, 19, 18, // tri2 + 20, 17, 21 // tri3 + ), + gsSPNTriangles_5b(20, 22, 17, // tri0 + 20, 23, 22, // tri1 + 24, 25, 26, // tri2 + 25, 21, 26 // tri3 + ), + gsSPNTriangles_5b(24, 27, 25, // tri0 + 28, 29, 30, // tri1 + 29, 26, 30, // tri2 + 28, 31, 29 // tri3 + ), + gsSPNTriangles_5b(20, 25, 23, // tri0 + 25, 27, 23, // tri1 + 20, 21, 25, // tri2 + 16, 23, 19 // tri3 + ), + gsSPNTriangles_5b(16, 22, 23, // tri0 + 16, 17, 22, // tri1 + 24, 29, 27, // tri2 + 29, 31, 27 // tri3 + ), + gsSPNTriangles_5b(24, 26, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_museum3_v[182], 26, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 5, 9, 8, // tri2 + 10, 7, 11 // tri3 + ), + gsSPNTriangles_5b(10, 12, 7, // tri0 + 10, 13, 12, // tri1 + 14, 15, 16, // tri2 + 15, 11, 16 // tri3 + ), + gsSPNTriangles_5b(14, 17, 15, // tri0 + 18, 19, 20, // tri1 + 18, 20, 21, // tri2 + 18, 21, 22 // tri3 + ), + gsSPNTriangles_5b(18, 22, 23, // tri0 + 18, 23, 24, // tri1 + 18, 24, 25, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_museum3_back_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum3_backside_tex, G_IM_FMT_CI, 16, 48, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&rom_museum3_v[208], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 8, 9, 10, // tri1 + 8, 11, 9, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 15, 13, // tri0 + 16, 17, 18, // tri1 + 17, 19, 18, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(21, 23, 22, // tri0 + 24, 25, 26, // tri1 + 24, 27, 25, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b(28, 31, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_museum3_v[240], 8, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 4, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum3_back_tex, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&rom_museum3_v[248], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 6, 7, 8, // tri1 + 6, 8, 9, // tri2 + 10, 7, 11 // tri3 + ), + gsSPNTriangles_5b(7, 6, 11, // tri0 + 12, 13, 14, // tri1 + 12, 14, 15, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 18, 20, 21, // tri1 + 17, 19, 18, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b(23, 25, 24, // tri0 + 25, 23, 26, // tri1 + 25, 26, 27, // tri2 + 13, 12, 28 // tri3 + ), + gsSPNTriangles_5b(12, 29, 28, // tri0 + 4, 30, 31, // tri1 + 4, 3, 30, // tri2 + 3, 1, 30 // tri3 + ), + gsSPVertex(&rom_museum3_v[280], 3, 0), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/rom_museum5/rom_museum5.c b/src/data/field/bg/acre/rom_museum5/rom_museum5.c new file mode 100644 index 00000000..5f4141f1 --- /dev/null +++ b/src/data/field/bg/acre/rom_museum5/rom_museum5.c @@ -0,0 +1,344 @@ +#include "libforest/gbi_extensions.h" + +static u16 rom_museum5_on_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum5_on_pal.inc" +}; + +static u16 rom_museum5_wall_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum5_wall_pal.inc" +}; + +static u16 rom_museum5_floor_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum5_floor_pal.inc" +}; + +static u16 rom_museum5_step_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum5_step_pal.inc" +}; + +static u8 rom_museum5_ki_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum5_ki_tex.inc" +}; + +static u8 rom_museum5_wallA_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum5_wallA_tex.inc" +}; + +static u8 rom_museum5_floor_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum5_floor_tex.inc" +}; + +static u8 rom_museum5_step_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum5_step_tex.inc" +}; + +static u8 rom_museum5_isi_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum5_isi_tex.inc" +}; + +static u8 rom_museum5_plate_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum5_plate_tex.inc" +}; + +static Vtx rom_museum5_v[] = { +#include "assets/field/bg/rom_museum5_v.inc" +}; + +extern Gfx rom_museum5_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx rom_museum5_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_museum5_step_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum5_plate_tex, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&rom_museum5_v[196], 20, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 16, 17, 18, // tri1 + 16, 18, 19, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, PRIMITIVE, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsSPVertex(&rom_museum5_v[0], 12, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 5, 8, 6, // tri1 + 9, 10, 11, // tri2 + 11, 2, 1 // tri3 + ), + gsSPNTriangles_5b(9, 11, 1, // tri0 + 7, 4, 0, // tri1 + 4, 3, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum5_step_tex, G_IM_FMT_CI, 64, 64, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_museum5_v[12], 5, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 0, 4, 1 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_museum5_wall_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum5_wallA_tex, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&rom_museum5_v[17], 32, 0), + gsSPNTrianglesInit_5b(32, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 5 // tri2 + ), + gsSPNTriangles_5b(6, 5, 7, // tri0 + 1, 7, 5, // tri1 + 1, 8, 7, // tri2 + 0, 8, 1 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 9, 11, 12, // tri1 + 13, 9, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(9, 13, 15, // tri0 + 15, 14, 16, // tri1 + 15, 16, 17, // tri2 + 9, 18, 10 // tri3 + ), + gsSPNTriangles_5b(9, 19, 18, // tri0 + 19, 20, 18, // tri1 + 21, 2, 22, // tri2 + 23, 21, 22 // tri3 + ), + gsSPNTriangles_5b(22, 2, 1, // tri0 + 23, 22, 1, // tri1 + 5, 4, 24, // tri2 + 23, 5, 24 // tri3 + ), + gsSPNTriangles_5b(25, 23, 24, // tri0 + 25, 24, 4, // tri1 + 23, 1, 5, // tri2 + 9, 15, 19 // tri3 + ), + gsSPNTriangles_5b(15, 26, 19, // tri0 + 26, 27, 19, // tri1 + 15, 17, 26, // tri2 + 26, 17, 27 // tri3 + ), + gsSPNTriangles_5b(28, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_museum5_v[48], 9, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 3, 2 // tri2 + ), + gsSPNTriangles_5b(4, 2, 1, // tri0 + 3, 5, 0, // tri1 + 3, 6, 7, // tri2 + 7, 8, 5 // tri3 + ), + gsSPNTriangles_5b(3, 7, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_museum5_floor_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum5_floor_tex, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&rom_museum5_v[57], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 4, 8, // tri0 + 5, 7, 9, // tri1 + 5, 4, 7, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 16, 13, 15, // tri1 + 17, 16, 15, // tri2 + 3, 18, 19 // tri3 + ), + gsSPNTriangles_5b(20, 1, 0, // tri0 + 3, 21, 2, // tri1 + 22, 23, 24, // tri2 + 25, 26, 24 // tri3 + ), + gsSPNTriangles_5b(25, 27, 28, // tri0 + 25, 24, 27, // tri1 + 29, 7, 8, // tri2 + 29, 30, 7 // tri3 + ), + gsSPNTriangles_5b(30, 29, 11, // tri0 + 29, 12, 11, // tri1 + 30, 9, 7, // tri2 + 16, 17, 30 // tri3 + ), + gsSPNTriangles_5b(18, 31, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_museum5_v[89], 26, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 2, 1, 3 // tri2 + ), + gsSPNTriangles_5b(1, 5, 6, // tri0 + 7, 8, 1, // tri1 + 9, 10, 11, // tri2 + 9, 12, 10 // tri3 + ), + gsSPNTriangles_5b(12, 13, 10, // tri0 + 13, 14, 10, // tri1 + 15, 12, 9, // tri2 + 13, 12, 16 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 17, 20, 18, // tri1 + 17, 21, 20, // tri2 + 17, 4, 21 // tri3 + ), + gsSPNTriangles_5b(22, 20, 23, // tri0 + 24, 20, 21, // tri1 + 25, 10, 17, // tri2 + 10, 2, 17 // tri3 + ), + gsSPNTriangles_5b(25, 11, 10, // tri0 + 2, 10, 14, // tri1 + 25, 17, 19, // tri2 + 17, 2, 4 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_museum5_on_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum5_isi_tex, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&rom_museum5_v[115], 32, 0), + gsSPNTrianglesInit_5b(32, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 2, 1 // tri2 + ), + gsSPNTriangles_5b(4, 1, 5, // tri0 + 6, 7, 8, // tri1 + 6, 8, 9, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(13, 10, 12, // tri0 + 12, 11, 1, // tri1 + 12, 1, 0, // tri2 + 5, 1, 14 // tri3 + ), + gsSPNTriangles_5b(14, 7, 6, // tri0 + 5, 14, 6, // tri1 + 12, 0, 3, // tri2 + 13, 12, 3 // tri3 + ), + gsSPNTriangles_5b(4, 5, 6, // tri0 + 4, 6, 9, // tri1 + 15, 16, 17, // tri2 + 18, 19, 15 // tri3 + ), + gsSPNTriangles_5b(18, 15, 17, // tri0 + 20, 21, 22, // tri1 + 23, 24, 20, // tri2 + 23, 20, 22 // tri3 + ), + gsSPNTriangles_5b(25, 19, 18, // tri0 + 22, 21, 25, // tri1 + 22, 25, 18, // tri2 + 26, 23, 22 // tri3 + ), + gsSPNTriangles_5b(26, 22, 18, // tri0 + 26, 18, 17, // tri1 + 27, 28, 29, // tri2 + 28, 30, 29 // tri3 + ), + gsSPNTriangles_5b(31, 28, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_museum5_v[147], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b(2, 1, 3, // tri0 + 6, 7, 8, // tri1 + 6, 4, 7, // tri2 + 4, 5, 7 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum5_ki_tex, G_IM_FMT_CI, 16, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&rom_museum5_v[156], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 5, 8, 9, // tri1 + 10, 11, 12, // tri2 + 10, 13, 11 // tri3 + ), + gsSPNTriangles_5b(8, 12, 9, // tri0 + 8, 10, 12, // tri1 + 9, 12, 14, // tri2 + 15, 10, 8 // tri3 + ), + gsSPNTriangles_5b(15, 16, 10, // tri0 + 17, 18, 19, // tri1 + 20, 21, 22, // tri2 + 20, 22, 23 // tri3 + ), + gsSPNTriangles_5b(23, 22, 18, // tri0 + 23, 18, 17, // tri1 + 22, 24, 25, // tri2 + 22, 25, 18 // tri3 + ), + gsSPNTriangles_5b(26, 23, 17, // tri0 + 26, 27, 28, // tri1 + 29, 26, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_museum5_v[186], 10, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(3, 2, 5, // tri0 + 3, 5, 4, // tri1 + 2, 7, 8, // tri2 + 2, 8, 5 // tri3 + ), + gsSPNTriangles_5b(9, 3, 4, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/rom_shop4_1/rom_shop4_1.c b/src/data/field/bg/acre/rom_shop4_1/rom_shop4_1.c new file mode 100644 index 00000000..9f1ed49a --- /dev/null +++ b/src/data/field/bg/acre/rom_shop4_1/rom_shop4_1.c @@ -0,0 +1,612 @@ +#include "libforest/gbi_extensions.h" + +static u16 rom_shop4_1_floor_tex_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_floor_tex_pal.inc" +}; + +static u16 rom_shop4_1_lamp_tex_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_lamp_tex_pal.inc" +}; + +static u16 rom_shop4_1_base_tex_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_base_tex_pal.inc" +}; + +static u16 rom_shop4_1_stair_tex_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_stair_tex_pal.inc" +}; + +static u16 rom_shop4_1_table_tex_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_table_tex_pal.inc" +}; + +static u16 rom_shop4_1_wall_tex_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_wall_tex_pal.inc" +}; + +static u16 rom_shop4_1_sign01_tex_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_sign01_tex_pal.inc" +}; + +static u16 rom_shop4_1_kaunta_tex_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_kaunta_tex_pal.inc" +}; + +static u16 rom_shop4_1_us_sign01_tex_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_us_sign01_tex_pal.inc" +}; + +static u16 rom_shop4_1_us_sign02_tex_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_us_sign02_tex_pal.inc" +}; + +static u16 rom_shop4_1_us_sign03_tex_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_us_sign03_tex_pal.inc" +}; + +static u16 rom_shop4_1_sign03_tex_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_sign03_tex_pal.inc" +}; + +static u16 rom_shop4_1_reji_tex_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_reji_tex_pal.inc" +}; + +static u8 rom_shop4_1_floor01_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_floor01_tex.inc" +}; + +static u8 rom_shop4_1_lamp_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_lamp_tex.inc" +}; + +static u8 rom_shop4_1_base_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_base_tex.inc" +}; + +static u8 rom_shop4_1_stair01_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_stair01_tex.inc" +}; + +static u8 rom_shop4_1_table01_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_table01_tex.inc" +}; + +static u8 rom_shop4_1_table02_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_table02_tex.inc" +}; + +static u8 rom_shop4_1_wall01_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_wall01_tex.inc" +}; + +static u8 rom_shop4_1_wall02_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_wall02_tex.inc" +}; + +static u8 rom_shop4_1_sign05_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_sign05_tex.inc" +}; + +static u8 rom_shop4_1_kaunta01_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_kaunta01_tex.inc" +}; + +static u8 rom_shop4_1_kaunta02_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_kaunta02_tex.inc" +}; + +static u8 rom_shop4_1_us_sign01_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_us_sign01_tex.inc" +}; + +static u8 rom_shop4_1_us_sign02_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_us_sign02_tex.inc" +}; + +static u8 rom_shop4_1_us_sign03_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_us_sign03_tex.inc" +}; + +static u8 rom_shop4_1_sign04_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_sign04_tex.inc" +}; + +static u8 rom_shop4_1_reji01_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_reji01_tex.inc" +}; + +static u8 rom_shop4_1_reji02_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_reji02_tex.inc" +}; + +static u8 rom_shop4_1_reji03_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_reji03_tex.inc" +}; + +static u8 rom_shop4_1_floor02_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_floor02_tex.inc" +}; + +static u8 rom_shop4_1_floor03_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_floor03_tex.inc" +}; + +static u8 rom_shop4_1_floor04_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_floor04_tex.inc" +}; + +static u8 rom_shop4_1_shadow01_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_shadow01_tex.inc" +}; + +static u8 rom_shop4_1_shadow02_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_shadow02_tex.inc" +}; + +static u8 rom_shop4_1_lamp02_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_lamp02_tex.inc" +}; + +static u8 rom_shop4_1_shadow03_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_shadow03_tex.inc" +}; + +static Vtx rom_shop4_1_v[] = { +#include "assets/field/bg/rom_shop4_1_v.inc" +}; + +extern Gfx rom_shop4_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIM_LOD_FRAC, 0, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 140, 50, 0, 40, 100), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_DECAL2), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_shadow02_tex, G_IM_FMT_I, 16, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&rom_shop4_1_v[322], 24, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 16, 17, 18, // tri1 + 16, 18, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(20, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetPrimColor(0, 100, 255, 255, 200, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_shadow01_tex, G_IM_FMT_I, 16, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&rom_shop4_1_v[346], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPSetPrimColor(0, 140, 255, 255, 130, 255), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_shadow03_tex, G_IM_FMT_I, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_1_v[350], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +extern Gfx rom_shop4_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_lamp_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_lamp02_tex, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&rom_shop4_1_v[294], 6, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b(1, 5, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_us_sign01_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_us_sign01_tex, G_IM_FMT_CI, 32, 64, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_1_v[300], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_kaunta_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_kaunta01_tex, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsSPVertex(&rom_shop4_1_v[304], 6, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 3, 4 // tri2 + ), + gsSPNTriangles_5b(0, 4, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_reji_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_reji03_tex, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_1_v[310], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_us_sign03_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_us_sign03_tex, G_IM_FMT_CI, 48, 64, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_1_v[314], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_sign03_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_sign04_tex, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&rom_shop4_1_v[318], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_base_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_base_tex, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_1_v[0], 7, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 2, 5 // tri2 + ), + gsSPNTriangles_5b(4, 6, 2, // tri0 + 6, 0, 2, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_stair_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_stair01_tex, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_1_v[7], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(1, 5, 3, // tri0 + 1, 6, 5, // tri1 + 5, 7, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_floor_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_floor01_tex, G_IM_FMT_CI, 64, 64, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_1_v[15], 23, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 3, 1, 0 // tri2 + ), + gsSPNTriangles_5b(3, 5, 1, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(10, 13, 11, // tri0 + 14, 15, 16, // tri1 + 15, 17, 16, // tri2 + 15, 14, 18 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 20, 19, 22, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_floor02_tex, G_IM_FMT_CI, 64, 64, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_1_v[38], 25, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 1 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 9, 10, 11, // tri1 + 12, 9, 13, // tri2 + 9, 11, 13 // tri3 + ), + gsSPNTriangles_5b(10, 14, 11, // tri0 + 15, 16, 17, // tri1 + 18, 15, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(20, 23, 21, // tri0 + 24, 22, 21, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_floor03_tex, G_IM_FMT_CI, 64, 64, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_1_v[63], 24, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 3, 0 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 5, 11, 10, // tri2 + 9, 5, 10 // tri3 + ), + gsSPNTriangles_5b(12, 13, 14, // tri0 + 13, 15, 14, // tri1 + 13, 16, 15, // tri2 + 15, 17, 14 // tri3 + ), + gsSPNTriangles_5b(12, 18, 19, // tri0 + 20, 21, 22, // tri1 + 20, 22, 23, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_floor04_tex, G_IM_FMT_CI, 64, 64, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_1_v[87], 26, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 8, 7, 9, // tri1 + 10, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(13, 11, 14, // tri0 + 16, 17, 11, // tri1 + 18, 19, 20, // tri2 + 18, 20, 21 // tri3 + ), + gsSPNTriangles_5b(20, 22, 21, // tri0 + 23, 24, 21, // tri1 + 22, 25, 21, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_wall_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_wall01_tex, G_IM_FMT_CI, 64, 64, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_1_v[113], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 5, 8, 6, // tri1 + 5, 9, 8, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 14, 15, 12, // tri1 + 16, 17, 14, // tri2 + 16, 14, 12 // tri3 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 19, 21, 20, // tri1 + 18, 22, 19, // tri2 + 18, 23, 24 // tri3 + ), + gsSPNTriangles_5b(18, 25, 23, // tri0 + 26, 27, 28, // tri1 + 27, 29, 28, // tri2 + 29, 30, 28 // tri3 + ), + gsSPNTriangles_5b(30, 31, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_shop4_1_v[145], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 5, 9, 7, // tri2 + 9, 0, 7 // tri3 + ), + gsSPNTriangles_5b(5, 10, 9, // tri0 + 10, 0, 9, // tri1 + 10, 3, 0, // tri2 + 11, 12, 8 // tri3 + ), + gsSPNTriangles_5b(12, 13, 8, // tri0 + 13, 4, 8, // tri1 + 4, 6, 8, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 17, 18, 16, // tri1 + 18, 19, 16, // tri2 + 15, 20, 17 // tri3 + ), + gsSPNTriangles_5b(21, 18, 17, // tri0 + 21, 22, 18, // tri1 + 23, 24, 25, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b(29, 26, 28, // tri0 + 30, 31, 25, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_shop4_1_v[177], 13, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b(3, 2, 5, // tri0 + 4, 3, 5, // tri1 + 5, 6, 7, // tri2 + 4, 5, 7 // tri3 + ), + gsSPNTriangles_5b(8, 4, 7, // tri0 + 2, 1, 9, // tri1 + 2, 9, 10, // tri2 + 11, 6, 5 // tri3 + ), + gsSPNTriangles_5b(12, 11, 5, // tri0 + 10, 12, 5, // tri1 + 2, 10, 5, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_wall02_tex, G_IM_FMT_CI, 32, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_1_v[190], 16, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 1, 0 // tri2 + ), + gsSPNTriangles_5b(4, 0, 5, // tri0 + 6, 7, 4, // tri1 + 6, 4, 5, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(8, 10, 11, // tri0 + 10, 12, 13, // tri1 + 10, 13, 11, // tri2 + 13, 12, 14 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_table_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_table02_tex, G_IM_FMT_CI, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_1_v[206], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 16, 17, 18, // tri1 + 16, 18, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(20, 22, 23, // tri0 + 24, 25, 26, // tri1 + 24, 26, 27, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b(28, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_table01_tex, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&rom_shop4_1_v[238], 12, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_lamp_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_lamp_tex, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&rom_shop4_1_v[250], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_sign01_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_sign05_tex, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&rom_shop4_1_v[254], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_kaunta_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_kaunta02_tex, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_1_v[258], 16, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b(1, 5, 2, // tri0 + 6, 7, 8, // tri1 + 6, 8, 9, // tri2 + 10, 0, 3 // tri3 + ), + gsSPNTriangles_5b(10, 3, 11, // tri0 + 12, 13, 14, // tri1 + 12, 14, 15, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_reji_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_reji02_tex, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_1_v[274], 6, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_reji01_tex, G_IM_FMT_CI, 32, 48, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_1_v[280], 10, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b(1, 5, 2, // tri0 + 4, 6, 7, // tri1 + 4, 7, 5, // tri2 + 6, 8, 9 // tri3 + ), + gsSPNTriangles_5b(6, 9, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_us_sign02_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_us_sign02_tex, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_1_v[290], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/rom_shop4_fuku/rom_shop4_fuku.c b/src/data/field/bg/acre/rom_shop4_fuku/rom_shop4_fuku.c new file mode 100644 index 00000000..8242f70f --- /dev/null +++ b/src/data/field/bg/acre/rom_shop4_fuku/rom_shop4_fuku.c @@ -0,0 +1,604 @@ +#include "libforest/gbi_extensions.h" + +static u16 rom_shop4_1_floor_tex_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_floor_tex_pal2.inc" +}; + +static u16 rom_shop4_1_base_tex_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_base_tex_pal2.inc" +}; + +static u16 rom_shop4_1_stair_tex_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_stair_tex_pal2.inc" +}; + +static u16 rom_shop4_1_table_tex_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_table_tex_pal2.inc" +}; + +static u16 rom_shop4_1_wall_tex_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_wall_tex_pal2.inc" +}; + +static u16 rom_shop4_1_sign01_tex_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_sign01_tex_pal2.inc" +}; + +static u16 rom_shop4_1_kaunta_tex_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_kaunta_tex_pal2.inc" +}; + +static u16 rom_shop4_2_sign01_us_tex_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_2_sign01_us_tex_pal.inc" +}; + +static u16 rom_shop4_1_us_sign02_tex_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_us_sign02_tex_pal2.inc" +}; + +static u16 rom_shop4_1_us_sign0_tex_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_us_sign0_tex_pal.inc" +}; + +static u16 rom_shop4_1_sign03_tex_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_sign03_tex_pal2.inc" +}; + +static u16 rom_shop4_1_reji_tex_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_reji_tex_pal2.inc" +}; + +static u16 rom_shop_kouhaku_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop_kouhaku_pal2.inc" +}; + +static u8 rom_shop4_1_floor01_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_floor01_tex2.inc" +}; + +static u8 rom_shop4_1_base_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_base_tex2.inc" +}; + +static u8 rom_shop4_1_stair01_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_stair01_tex2.inc" +}; + +static u8 rom_shop4_1_table01_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_table01_tex2.inc" +}; + +static u8 rom_shop4_1_table02_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_table02_tex2.inc" +}; + +static u8 rom_shop4_1_wall01_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_wall01_tex2.inc" +}; + +static u8 rom_shop4_1_wall02_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_wall02_tex2.inc" +}; + +static u8 rom_shop4_1_sign05_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_sign05_tex2.inc" +}; + +static u8 rom_shop4_1_kaunta01_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_kaunta01_tex2.inc" +}; + +static u8 rom_shop4_1_kaunta02_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_kaunta02_tex2.inc" +}; + +static u8 rom_shop4_2_us_sign01_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_2_us_sign01_tex.inc" +}; + +static u8 rom_shop4_1_us_sign02_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_us_sign02_tex2.inc" +}; + +static u8 rom_shop4_1_us_sign0_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_us_sign0_tex.inc" +}; + +static u8 rom_shop4_1_sign04_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_sign04_tex2.inc" +}; + +static u8 rom_shop4_1_reji01_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_reji01_tex2.inc" +}; + +static u8 rom_shop4_1_reji02_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_reji02_tex2.inc" +}; + +static u8 rom_shop4_1_reji03_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_reji03_tex2.inc" +}; + +static u8 rom_shop4_1_floor02_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_floor02_tex2.inc" +}; + +static u8 rom_shop4_1_floor03_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_floor03_tex2.inc" +}; + +static u8 rom_shop4_1_floor04_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_floor04_tex2.inc" +}; + +static u8 rom_shop4_1_shadow02_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_shadow02_tex2.inc" +}; + +static u8 rom_shop_kouhaku_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop_kouhaku_tex2.inc" +}; + +static Vtx rom_shop4_fuku_v[] = { +#include "assets/field/bg/rom_shop4_fuku_v.inc" +}; + +extern Gfx rom_shop4_fuku_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIM_LOD_FRAC, 0, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 140, 50, 0, 40, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_DECAL2), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_shadow02_tex, G_IM_FMT_I, 16, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&rom_shop4_fuku_v[346], 24, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 16, 17, 18, // tri1 + 16, 18, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(20, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx rom_shop4_fuku_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_2_sign01_us_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_2_us_sign01_tex, G_IM_FMT_CI, 32, 64, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&rom_shop4_fuku_v[278], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_us_sign0_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_us_sign0_tex, G_IM_FMT_CI, 48, 64, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_fuku_v[282], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_sign03_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_sign04_tex, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&rom_shop4_fuku_v[286], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_kaunta_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_kaunta01_tex, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsSPVertex(&rom_shop4_fuku_v[290], 6, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 3, 4 // tri2 + ), + gsSPNTriangles_5b(0, 4, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop_kouhaku_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop_kouhaku_tex, G_IM_FMT_CI, 64, 64, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_fuku_v[296], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 3, 0, 2 // tri2 + ), + gsSPNTriangles_5b(5, 3, 4, // tri0 + 6, 7, 8, // tri1 + 6, 8, 9, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b(7, 11, 8, // tri0 + 10, 12, 13, // tri1 + 10, 13, 11, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b(12, 15, 14, // tri0 + 15, 16, 14, // tri1 + 16, 17, 14, // tri2 + 9, 18, 6 // tri3 + ), + gsSPNTriangles_5b(9, 19, 18, // tri0 + 19, 20, 18, // tri1 + 19, 21, 20, // tri2 + 21, 22, 20 // tri3 + ), + gsSPNTriangles_5b(21, 23, 22, // tri0 + 24, 25, 26, // tri1 + 24, 27, 25, // tri2 + 27, 28, 29 // tri3 + ), + gsSPNTriangles_5b(27, 29, 25, // tri0 + 28, 30, 31, // tri1 + 28, 31, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_shop4_fuku_v[328], 14, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 6, 7, 8, // tri1 + 6, 8, 9, // tri2 + 9, 8, 10 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 11, 10, 12, // tri1 + 11, 12, 13, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_reji_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_reji03_tex, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_fuku_v[342], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_base_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_base_tex, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_fuku_v[0], 7, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 2, 5 // tri2 + ), + gsSPNTriangles_5b(4, 6, 2, // tri0 + 6, 0, 2, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_stair_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_stair01_tex, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_fuku_v[7], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(1, 5, 3, // tri0 + 1, 6, 5, // tri1 + 5, 7, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_floor_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_floor01_tex, G_IM_FMT_CI, 64, 64, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_fuku_v[15], 23, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 3, 1, 0 // tri2 + ), + gsSPNTriangles_5b(3, 5, 1, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(10, 13, 11, // tri0 + 14, 15, 16, // tri1 + 15, 17, 16, // tri2 + 15, 14, 18 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 20, 19, 22, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_floor02_tex, G_IM_FMT_CI, 64, 64, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_fuku_v[38], 25, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 1 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 9, 10, 11, // tri1 + 12, 9, 13, // tri2 + 9, 11, 13 // tri3 + ), + gsSPNTriangles_5b(10, 14, 11, // tri0 + 15, 16, 17, // tri1 + 18, 15, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(20, 23, 21, // tri0 + 24, 22, 21, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_floor03_tex, G_IM_FMT_CI, 64, 64, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_fuku_v[63], 24, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 3, 0 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 5, 11, 10, // tri2 + 9, 5, 10 // tri3 + ), + gsSPNTriangles_5b(12, 13, 14, // tri0 + 13, 15, 14, // tri1 + 13, 16, 15, // tri2 + 15, 17, 14 // tri3 + ), + gsSPNTriangles_5b(12, 18, 19, // tri0 + 20, 21, 22, // tri1 + 20, 22, 23, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_floor04_tex, G_IM_FMT_CI, 64, 64, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_fuku_v[87], 26, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 8, 7, 9, // tri1 + 10, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(13, 11, 14, // tri0 + 16, 17, 11, // tri1 + 18, 19, 20, // tri2 + 18, 20, 21 // tri3 + ), + gsSPNTriangles_5b(20, 22, 21, // tri0 + 23, 24, 21, // tri1 + 22, 25, 21, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_wall_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_wall01_tex, G_IM_FMT_CI, 64, 64, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_fuku_v[113], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 5, 8, 6, // tri1 + 5, 9, 8, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 14, 15, 12, // tri1 + 16, 17, 14, // tri2 + 16, 14, 12 // tri3 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 19, 21, 20, // tri1 + 18, 22, 19, // tri2 + 18, 23, 24 // tri3 + ), + gsSPNTriangles_5b(18, 25, 23, // tri0 + 26, 27, 28, // tri1 + 27, 29, 28, // tri2 + 29, 30, 28 // tri3 + ), + gsSPNTriangles_5b(30, 31, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_shop4_fuku_v[145], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 5, 9, 7, // tri2 + 9, 0, 7 // tri3 + ), + gsSPNTriangles_5b(5, 10, 9, // tri0 + 10, 0, 9, // tri1 + 10, 3, 0, // tri2 + 11, 12, 8 // tri3 + ), + gsSPNTriangles_5b(12, 13, 8, // tri0 + 13, 4, 8, // tri1 + 4, 6, 8, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 17, 18, 16, // tri1 + 18, 19, 16, // tri2 + 15, 20, 17 // tri3 + ), + gsSPNTriangles_5b(21, 18, 17, // tri0 + 21, 22, 18, // tri1 + 23, 24, 25, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b(29, 26, 28, // tri0 + 30, 31, 25, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_shop4_fuku_v[177], 13, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b(3, 2, 5, // tri0 + 4, 3, 5, // tri1 + 5, 6, 7, // tri2 + 4, 5, 7 // tri3 + ), + gsSPNTriangles_5b(8, 4, 7, // tri0 + 2, 1, 9, // tri1 + 2, 9, 10, // tri2 + 11, 6, 5 // tri3 + ), + gsSPNTriangles_5b(12, 11, 5, // tri0 + 10, 12, 5, // tri1 + 2, 10, 5, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_wall02_tex, G_IM_FMT_CI, 32, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_fuku_v[190], 16, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 1, 0 // tri2 + ), + gsSPNTriangles_5b(4, 0, 5, // tri0 + 6, 7, 4, // tri1 + 6, 4, 5, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(8, 10, 11, // tri0 + 10, 12, 13, // tri1 + 10, 13, 11, // tri2 + 13, 12, 14 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_table_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_table01_tex, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&rom_shop4_fuku_v[206], 12, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_table02_tex, G_IM_FMT_CI, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_fuku_v[218], 20, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 16, 17, 18, // tri1 + 16, 18, 19, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_sign01_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_sign05_tex, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&rom_shop4_fuku_v[238], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_reji_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_reji01_tex, G_IM_FMT_CI, 32, 48, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_fuku_v[242], 10, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b(4, 3, 5, // tri0 + 6, 4, 5, // tri1 + 6, 5, 7, // tri2 + 8, 6, 7 // tri3 + ), + gsSPNTriangles_5b(8, 7, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_reji02_tex, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_fuku_v[252], 6, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b(5, 4, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_kaunta_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_kaunta02_tex, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_fuku_v[258], 16, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 5, 12, 15, // tri1 + 5, 15, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_us_sign02_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_us_sign02_tex, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_fuku_v[274], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/rom_tailor/rom_tailor.c b/src/data/field/bg/acre/rom_tailor/rom_tailor.c new file mode 100644 index 00000000..d77ec18c --- /dev/null +++ b/src/data/field/bg/acre/rom_tailor/rom_tailor.c @@ -0,0 +1,930 @@ +#include "libforest/gbi_extensions.h" + +static u16 rom_tailor_wall_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_wall_pal.inc" +}; + +static u16 rom_tailor_floor_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_floor_pal.inc" +}; + +static u16 rom_tailor_mado_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_mado_pal.inc" +}; + +static u16 rom_tailor_reji_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_reji_pal.inc" +}; + +static u16 rom_tailor_dogu_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_dogu_pal.inc" +}; + +static u16 rom_tailor_misin_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_misin_pal.inc" +}; + +static u16 rom_tailor_table_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_table_pal.inc" +}; + +static u16 rom_tailor_box_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_box_pal.inc" +}; + +static u16 rom_tailor_quilt_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_quilt_pal.inc" +}; + +static u16 rom_tailor_ent_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_ent_pal.inc" +}; + +static u8 rom_tailor_wallA_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_wallA_tex.inc" +}; + +static u8 rom_tailor_wallB_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_wallB_tex.inc" +}; + +static u8 rom_tailor_floorA_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_floorA_tex.inc" +}; + +static u8 rom_tailor_floorB_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_floorB_tex.inc" +}; + +static u8 rom_tailor_floorC_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_floorC_tex.inc" +}; + +static u8 rom_tailor_floorD_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_floorD_tex.inc" +}; + +static u8 rom_tailor_kage1_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_kage1_tex.inc" +}; + +static u8 rom_tailor_mado_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_mado_tex.inc" +}; + +static u8 rom_tailor_pic1_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_pic1_tex.inc" +}; + +static u8 rom_tailor_pic2_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_pic2_tex.inc" +}; + +static u8 rom_tailor_pic3_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_pic3_tex.inc" +}; + +static u8 rom_tailor_pic4_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_pic4_tex.inc" +}; + +static u8 rom_tailor_pic5_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_pic5_tex.inc" +}; + +static u8 rom_tailor_pic6_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_pic6_tex.inc" +}; + +static u8 rom_tailor_pic7_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_pic7_tex.inc" +}; + +static u8 rom_tailor_pic8_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_pic8_tex.inc" +}; + +static u8 rom_tailor_tyoki_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_tyoki_tex.inc" +}; + +static u8 rom_tailor_cloth1_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_cloth1_tex.inc" +}; + +static u8 rom_tailor_misin2_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_misin2_tex.inc" +}; + +static u8 rom_tailor_table_mae_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_table_mae_tex.inc" +}; + +static u8 rom_tailor_table_yoko_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_table_yoko_tex.inc" +}; + +static u8 rom_tailor_table_ue_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_table_ue_tex.inc" +}; + +static u8 rom_tailor_ito_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_ito_tex.inc" +}; + +static u8 rom_tailor_table_reji_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_table_reji_tex.inc" +}; + +static u8 rom_tailor_misin1_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_misin1_tex.inc" +}; + +static u8 rom_tailor_misindai_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_misindai_tex.inc" +}; + +static u8 rom_tailor_table_misin1_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_table_misin1_tex.inc" +}; + +static u8 rom_tailor_reji_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_reji_tex.inc" +}; + +static u8 rom_tailor_table_misin2_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_table_misin2_tex.inc" +}; + +static u8 rom_tailor_box_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_box_tex.inc" +}; + +static u8 rom_tailor_box1_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_box1_tex.inc" +}; + +static u8 rom_tailor_box2_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_box2_tex.inc" +}; + +static u8 rom_tailor_box3_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_box3_tex.inc" +}; + +static u8 rom_tailor_box4_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_box4_tex.inc" +}; + +static u8 rom_tailor_box5_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_box5_tex.inc" +}; + +static u8 rom_tailor_box6_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_box6_tex.inc" +}; + +static u8 rom_tailor_box7_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_box7_tex.inc" +}; + +static u8 rom_tailor_box8_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_box8_tex.inc" +}; + +static u8 rom_tailor_kage2_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_kage2_tex.inc" +}; + +static u8 rom_tailor_quilt_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_quilt_tex.inc" +}; + +static u8 rom_tailor_ent_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_ent_tex.inc" +}; + +static u8 rom_tailor_misinbari1_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_misinbari1_tex.inc" +}; + +static u8 rom_tailor_misinbari2_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_misinbari2_tex.inc" +}; + +static u8 rom_tailor_tape_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_tape_tex.inc" +}; + +static u8 rom_tailor_dogu1_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_dogu1_tex.inc" +}; + +static u8 rom_tailor_dogu2_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_dogu2_tex.inc" +}; + +static Vtx rom_tailor_v[] = { +#include "assets/field/bg/rom_tailor_v.inc" +}; + +extern Gfx rom_tailor_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 0, 0, 30, 80), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_DECAL2), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_kage2_tex, G_IM_FMT_I, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&rom_tailor_v[274], 12, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_kage1_tex, G_IM_FMT_I, 32, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 4, 5, 6, // tri0 + 4, 6, 7, // tri1 + 8, 9, 10 // tri2 + ), + gsSPNTriangles_5b(8, 10, 11, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_kage2_tex, G_IM_FMT_I, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&rom_tailor_v[286], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +extern Gfx rom_tailor_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_tailor_table_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_table_misin2_tex, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&rom_tailor_v[290], 24, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_table_misin1_tex, G_IM_FMT_CI, 32, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 8, 9, 10, // tri0 + 8, 10, 11, // tri1 + 12, 13, 14 // tri2 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_table_yoko_tex, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(4, // tri count + 16, 17, 18, // tri0 + 16, 18, 19, // tri1 + 20, 21, 22 // tri2 + ), + gsSPNTriangles_5b(20, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_table_mae_tex, G_IM_FMT_CI, 32, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&rom_tailor_v[314], 8, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_tailor_reji_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_tyoki_tex, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&rom_tailor_v[322], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_tailor_dogu_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_dogu1_tex, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_tailor_v[326], 30, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_tape_tex, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 4, 5, 6, // tri0 + 5, 7, 6, // tri1 + 5, 8, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 10, 11, 12, // tri0 + 11, 13, 12, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_ito_tex, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(8, // tri count + 14, 15, 16, // tri0 + 14, 16, 17, // tri1 + 18, 19, 20 // tri2 + ), + gsSPNTriangles_5b(18, 20, 21, // tri0 + 22, 23, 24, // tri1 + 22, 24, 25, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b(26, 28, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_tailor_v[356], 24, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 4, 5, 6, // tri0 + 4, 6, 7, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 8, 9, 10, // tri0 + 8, 10, 11, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(6, // tri count + 12, 13, 14, // tri0 + 12, 14, 15, // tri1 + 16, 17, 18 // tri2 + ), + gsSPNTriangles_5b(16, 18, 19, // tri0 + 20, 21, 22, // tri1 + 20, 22, 23, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_tailor_misin_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_misinbari2_tex, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_tailor_v[380], 8, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_misinbari1_tex, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 4, 5, 6, // tri0 + 4, 6, 7, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_misindai_tex, G_IM_FMT_CI, 64, 16, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsSPVertex(&rom_tailor_v[388], 22, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_misin1_tex, G_IM_FMT_CI, 64, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 4, 5, 6, // tri0 + 4, 6, 7, // tri1 + 8, 9, 10 // tri2 + ), + gsSPNTriangles_5b(8, 10, 11, // tri0 + 12, 13, 14, // tri1 + 13, 15, 14, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_misin2_tex, G_IM_FMT_CI, 64, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 16, 17, 18, // tri0 + 16, 18, 19, // tri1 + 20, 19, 18 // tri2 + ), + gsSPNTriangles_5b(20, 18, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_tailor_box_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_box8_tex, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_tailor_v[410], 28, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 3, 4 // tri2 + ), + gsSPNTriangles_5b(0, 4, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_box6_tex, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 6, 7, 8, // tri0 + 6, 8, 9, // tri1 + 6, 9, 10 // tri2 + ), + gsSPNTriangles_5b(6, 10, 11, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_box4_tex, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 12, 13, 14, // tri0 + 12, 14, 15, // tri1 + 12, 15, 16 // tri2 + ), + gsSPNTriangles_5b(12, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_box2_tex, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 18, 19, 20, // tri0 + 18, 20, 21, // tri1 + 18, 21, 22 // tri2 + ), + gsSPNTriangles_5b(18, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_box_tex, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 24, 25, 26, // tri0 + 25, 27, 26, // tri1 + 0, 0, 0 // tri2 + ), + gsSPVertex(&rom_tailor_v[438], 16, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 3, 5 // tri2 + ), + gsSPNTriangles_5b(3, 1, 5, // tri0 + 0, 6, 7, // tri1 + 0, 7, 2, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 8, 9, 10, // tri0 + 8, 10, 11, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 12, 13, 14, // tri0 + 12, 14, 15, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_tailor_quilt_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_quilt_tex, G_IM_FMT_CI, 64, 64, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_tailor_v[454], 24, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_tailor_mado_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_pic8_tex, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 4, 5, 6, // tri0 + 7, 4, 6, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_pic6_tex, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 8, 9, 10, // tri0 + 8, 11, 9, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_pic5_tex, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 12, 13, 14, // tri0 + 12, 14, 15, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_mado_tex, G_IM_FMT_CI, 32, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 16, 17, 18, // tri0 + 17, 19, 18, // tri1 + 20, 21, 22 // tri2 + ), + gsSPNTriangles_5b(20, 23, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(0, 0, 0, PRIMITIVE, 0, 0, 0, 0, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED), + gsSPVertex(&rom_tailor_v[0], 8, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_tailor_wall_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_wallB_tex, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&rom_tailor_v[8], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 2, 3, 4 // tri2 + ), + gsSPNTriangles_5b(0, 5, 6, // tri0 + 5, 7, 6, // tri1 + 8, 9, 10, // tri2 + 9, 11, 10 // tri3 + ), + gsSPNTriangles_5b(4, 12, 13, // tri0 + 12, 14, 13, // tri1 + 7, 5, 15, // tri2 + 5, 16, 15 // tri3 + ), + gsSPNTriangles_5b(15, 17, 10, // tri0 + 18, 1, 6, // tri1 + 1, 0, 6, // tri2 + 8, 10, 17 // tri3 + ), + gsSPNTriangles_5b(19, 12, 3, // tri0 + 12, 4, 3, // tri1 + 15, 16, 17, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(23, 20, 22, // tri0 + 24, 25, 26, // tri1 + 27, 24, 26, // tri2 + 20, 28, 29 // tri3 + ), + gsSPNTriangles_5b(21, 20, 29, // tri0 + 30, 31, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_tailor_v[40], 7, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 1, 0, 3, // tri1 + 4, 3, 0 // tri2 + ), + gsSPNTriangles_5b(4, 5, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_wallA_tex, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&rom_tailor_v[47], 29, 0), + gsSPNTrianglesInit_5b(31, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 1, 5 // tri2 + ), + gsSPNTriangles_5b(1, 3, 5, // tri0 + 3, 6, 7, // tri1 + 6, 8, 7, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b(10, 12, 11, // tri0 + 13, 14, 15, // tri1 + 14, 9, 15, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(19, 11, 20, // tri0 + 19, 9, 11, // tri1 + 12, 20, 11, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b(21, 16, 22, // tri0 + 16, 18, 22, // tri1 + 18, 23, 22, // tri2 + 24, 15, 9 // tri3 + ), + gsSPNTriangles_5b(24, 25, 15, // tri0 + 25, 13, 15, // tri1 + 16, 26, 17, // tri2 + 26, 20, 17 // tri3 + ), + gsSPNTriangles_5b(16, 19, 26, // tri0 + 19, 20, 26, // tri1 + 10, 9, 14, // tri2 + 5, 3, 7 // tri3 + ), + gsSPNTriangles_5b(27, 8, 6, // tri0 + 28, 6, 3, // tri1 + 28, 27, 6, // tri2 + 4, 2, 1 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_tailor_floor_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_floorD_tex, G_IM_FMT_CI, 64, 64, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_tailor_v[76], 28, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 1, 5, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 6, 10, 9 // tri3 + ), + gsSPNTriangles_5b(6, 11, 10, // tri0 + 7, 9, 12, // tri1 + 13, 9, 10, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_floorC_tex, G_IM_FMT_CI, 64, 64, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(10, // tri count + 14, 15, 16, // tri0 + 14, 17, 15, // tri1 + 17, 18, 15 // tri2 + ), + gsSPNTriangles_5b(18, 19, 15, // tri0 + 20, 17, 14, // tri1 + 18, 17, 21, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b(25, 24, 23, // tri0 + 22, 24, 26, // tri1 + 24, 25, 27, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_floorB_tex, G_IM_FMT_CI, 64, 64, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_tailor_v[104], 28, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(5, 8, 6, // tri0 + 5, 9, 10, // tri1 + 11, 12, 6, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(14, 16, 15, // tri0 + 13, 17, 18, // tri1 + 16, 14, 18, // tri2 + 14, 13, 18 // tri3 + ), + gsSPNTriangles_5b(19, 16, 18, // tri0 + 20, 21, 22, // tri1 + 20, 23, 21, // tri2 + 24, 25, 22 // tri3 + ), + gsSPNTriangles_5b(24, 23, 26, // tri0 + 24, 21, 23, // tri1 + 24, 22, 21, // tri2 + 0, 2, 27 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_floorA_tex, G_IM_FMT_CI, 64, 64, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_tailor_v[132], 26, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 0, 4 // tri2 + ), + gsSPNTriangles_5b(3, 1, 0, // tri0 + 3, 6, 1, // tri1 + 7, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b(9, 11, 12, // tri0 + 13, 14, 15, // tri1 + 14, 16, 15, // tri2 + 17, 16, 18 // tri3 + ), + gsSPNTriangles_5b(13, 19, 18, // tri0 + 16, 14, 18, // tri1 + 14, 13, 18, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(20, 23, 21, // tri0 + 23, 24, 21, // tri1 + 25, 23, 20, // tri2 + 4, 0, 2 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_tailor_table_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_table_reji_tex, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&rom_tailor_v[158], 16, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 2, 1, 5, // tri1 + 2, 5, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_table_ue_tex, G_IM_FMT_CI, 32, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 8, 9, 10, // tri0 + 8, 10, 11, // tri1 + 12, 13, 14 // tri2 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_tailor_reji_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_reji_tex, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_tailor_v[174], 16, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 7, 10, 8, // tri1 + 4, 6, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(13, 15, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_tailor_dogu_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_dogu2_tex, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsSPVertex(&rom_tailor_v[190], 18, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b(3, 4, 5, // tri0 + 6, 5, 4, // tri1 + 6, 4, 7, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_cloth1_tex, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 8, 9, 10, // tri0 + 8, 11, 9, // tri1 + 11, 12, 9 // tri2 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 13, 16, 14, // tri1 + 14, 17, 15, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_tailor_box_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_box7_tex, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&rom_tailor_v[208], 30, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 1 // tri2 + ), + gsSPNTriangles_5b(4, 1, 0, // tri0 + 6, 7, 5, // tri1 + 6, 5, 4, // tri2 + 8, 9, 7 // tri3 + ), + gsSPNTriangles_5b(8, 7, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_box5_tex, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPNTrianglesInit_5b(8, // tri count + 10, 11, 12, // tri0 + 10, 12, 13, // tri1 + 14, 15, 11 // tri2 + ), + gsSPNTriangles_5b(14, 11, 10, // tri0 + 16, 17, 15, // tri1 + 16, 15, 14, // tri2 + 18, 19, 17 // tri3 + ), + gsSPNTriangles_5b(18, 17, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_box3_tex, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPNTrianglesInit_5b(8, // tri count + 20, 21, 22, // tri0 + 20, 22, 23, // tri1 + 23, 22, 24 // tri2 + ), + gsSPNTriangles_5b(23, 24, 25, // tri0 + 25, 24, 26, // tri1 + 25, 26, 27, // tri2 + 27, 26, 28 // tri3 + ), + gsSPNTriangles_5b(27, 28, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_box1_tex, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&rom_tailor_v[238], 10, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 1 // tri2 + ), + gsSPNTriangles_5b(4, 1, 0, // tri0 + 6, 7, 5, // tri1 + 6, 5, 4, // tri2 + 8, 9, 7 // tri3 + ), + gsSPNTriangles_5b(8, 7, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_tailor_ent_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_ent_tex, G_IM_FMT_CI, 32, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&rom_tailor_v[248], 26, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(0, 5, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_tailor_mado_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_pic7_tex, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 6, 7, 8, // tri0 + 6, 9, 7, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_pic4_tex, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 10, 11, 12, // tri0 + 10, 12, 13, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_pic3_tex, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 14, 15, 16, // tri0 + 14, 17, 15, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_pic2_tex, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 18, 19, 20, // tri0 + 18, 21, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_pic1_tex, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 22, 23, 24, // tri0 + 22, 25, 23, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/rom_tent/rom_tent.c b/src/data/field/bg/acre/rom_tent/rom_tent.c new file mode 100644 index 00000000..24c36fcc --- /dev/null +++ b/src/data/field/bg/acre/rom_tent/rom_tent.c @@ -0,0 +1,524 @@ +#include "libforest/gbi_extensions.h" + +static u16 rom_tent_box_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tent_box_pal.inc" +}; + +static u16 rom_tent_can_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tent_can_pal.inc" +}; + +static u16 rom_tent_mono1_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tent_mono1_pal.inc" +}; + +static u16 rom_tent_gas_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tent_gas_pal.inc" +}; + +static u8 rom_tent_enter[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tent_enter.inc" +}; + +static u8 rom_tent_floor[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tent_floor.inc" +}; + +static u8 rom_tent_wall1[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tent_wall1.inc" +}; + +static u8 rom_tent_wall2[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tent_wall2.inc" +}; + +static u8 rom_tent_bou[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tent_bou.inc" +}; + +static u8 rom_tent_mono1[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tent_mono1.inc" +}; + +static u8 rom_tent_can[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tent_can.inc" +}; + +static u8 rom_tent_conpas[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tent_conpas.inc" +}; + +static u8 rom_tent_box[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tent_box.inc" +}; + +static u8 rom_tent_kage_m[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tent_kage_m.inc" +}; + +static u8 rom_tent_gas[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tent_gas.inc" +}; + +static u8 rom_tent_kage_s[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tent_kage_s.inc" +}; + +static u8 rom_tent_kage_b[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tent_kage_b.inc" +}; + +static Vtx rom_tent_v[] = { +#include "assets/field/bg/rom_tent_v.inc" +}; + +extern Gfx rom_tent_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx rom_tent_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_tent_gas_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_tent_gas, G_IM_FMT_CI, 16, 64, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&rom_tent_v[187], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 6, 3 // tri2 + ), + gsSPNTriangles_5b(7, 8, 5, // tri0 + 9, 7, 10, // tri1 + 11, 10, 12, // tri2 + 13, 14, 11 // tri3 + ), + gsSPNTriangles_5b(6, 15, 4, // tri0 + 6, 16, 15, // tri1 + 8, 17, 16, // tri2 + 8, 16, 6 // tri3 + ), + gsSPNTriangles_5b(11, 18, 9, // tri0 + 11, 14, 18, // tri1 + 9, 18, 17, // tri2 + 9, 17, 8 // tri3 + ), + gsSPNTriangles_5b(3, 6, 4, // tri0 + 10, 11, 9, // tri1 + 12, 13, 11, // tri2 + 5, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 19, 20, 21, // tri1 + 19, 21, 22, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b(23, 25, 26, // tri0 + 27, 28, 29, // tri1 + 27, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_tent_v[218], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 7, 1, // tri0 + 9, 10, 11, // tri1 + 12, 4, 10, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(13, 16, 14, // tri0 + 17, 18, 16, // tri1 + 17, 16, 13, // tri2 + 15, 19, 20 // tri3 + ), + gsSPNTriangles_5b(15, 14, 19, // tri0 + 20, 19, 21, // tri1 + 20, 21, 22, // tri2 + 23, 18, 17 // tri3 + ), + gsSPNTriangles_5b(24, 25, 26, // tri0 + 25, 24, 27, // tri1 + 27, 26, 25, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b(28, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_tent_v[250], 30, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 2, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_tent_box_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_tent_box, G_IM_FMT_CI, 32, 64, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPNTrianglesInit_5b(16, // tri count + 6, 7, 8, // tri0 + 7, 9, 8, // tri1 + 10, 11, 7 // tri2 + ), + gsSPNTriangles_5b(10, 7, 12, // tri0 + 11, 13, 9, // tri1 + 11, 9, 7, // tri2 + 6, 14, 7 // tri3 + ), + gsSPNTriangles_5b(6, 15, 14, // tri0 + 16, 9, 17, // tri1 + 16, 8, 9, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(18, 20, 21, // tri0 + 22, 23, 24, // tri1 + 25, 26, 27, // tri2 + 26, 28, 27 // tri3 + ), + gsSPNTriangles_5b(22, 29, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_tent_can_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_tent_conpas, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_tent_v[280], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_tent_mono1_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_tent_mono1, G_IM_FMT_CI, 64, 64, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&rom_tent_v[284], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 12, 4, 7 // tri3 + ), + gsSPNTriangles_5b(12, 7, 13, // tri0 + 14, 15, 16, // tri1 + 14, 16, 17, // tri2 + 16, 12, 13 // tri3 + ), + gsSPNTriangles_5b(16, 13, 17, // tri0 + 18, 19, 20, // tri1 + 21, 22, 23, // tri2 + 21, 23, 24 // tri3 + ), + gsSPNTriangles_5b(25, 21, 24, // tri0 + 25, 24, 26, // tri1 + 27, 25, 26, // tri2 + 27, 26, 28 // tri3 + ), + gsSPNTriangles_5b(29, 27, 28, // tri0 + 29, 28, 30, // tri1 + 31, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_tent_v[316], 13, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_tent_can_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_tent_bou, G_IM_FMT_CI, 8, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 7, 8, 9, // tri0 + 7, 9, 10, // tri1 + 11, 7, 10 // tri2 + ), + gsSPNTriangles_5b(11, 10, 12, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tent_can, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_tent_v[0], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 1, // tri0 + 5, 6, 1, // tri1 + 6, 7, 1, // tri2 + 7, 8, 1 // tri3 + ), + gsSPNTriangles_5b(8, 9, 1, // tri0 + 9, 10, 1, // tri1 + 10, 11, 1, // tri2 + 11, 12, 1 // tri3 + ), + gsSPNTriangles_5b(12, 2, 1, // tri0 + 13, 14, 15, // tri1 + 13, 16, 14, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(18, 20, 19, // tri0 + 18, 21, 20, // tri1 + 21, 22, 20, // tri2 + 21, 23, 22 // tri3 + ), + gsSPNTriangles_5b(23, 24, 22, // tri0 + 15, 25, 13, // tri1 + 15, 26, 25, // tri2 + 26, 27, 25 // tri3 + ), + gsSPNTriangles_5b(26, 28, 27, // tri0 + 28, 29, 27, // tri1 + 28, 30, 29, // tri2 + 30, 19, 29 // tri3 + ), + gsSPNTriangles_5b(30, 17, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_tent_v[31], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 1, // tri0 + 5, 6, 1, // tri1 + 6, 7, 1, // tri2 + 7, 8, 1 // tri3 + ), + gsSPNTriangles_5b(8, 9, 1, // tri0 + 9, 10, 1, // tri1 + 10, 11, 1, // tri2 + 11, 12, 1 // tri3 + ), + gsSPNTriangles_5b(12, 3, 1, // tri0 + 13, 14, 15, // tri1 + 14, 16, 15, // tri2 + 17, 13, 18 // tri3 + ), + gsSPNTriangles_5b(13, 15, 18, // tri0 + 19, 18, 20, // tri1 + 19, 17, 18, // tri2 + 14, 21, 16 // tri3 + ), + gsSPNTriangles_5b(21, 22, 16, // tri0 + 23, 24, 25, // tri1 + 23, 26, 24, // tri2 + 27, 25, 28 // tri3 + ), + gsSPNTriangles_5b(27, 23, 25, // tri0 + 29, 20, 30, // tri1 + 29, 19, 20, // tri2 + 30, 28, 29 // tri3 + ), + gsSPNTriangles_5b(30, 27, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_tent_v[62], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 1, 6, 5, // tri1 + 1, 7, 6, // tri2 + 0, 8, 1 // tri3 + ), + gsSPNTriangles_5b(8, 9, 1, // tri0 + 9, 10, 1, // tri1 + 10, 11, 1, // tri2 + 11, 12, 1 // tri3 + ), + gsSPNTriangles_5b(12, 7, 1, // tri0 + 13, 14, 15, // tri1 + 13, 16, 14, // tri2 + 16, 17, 14 // tri3 + ), + gsSPNTriangles_5b(16, 18, 17, // tri0 + 18, 19, 17, // tri1 + 18, 20, 19, // tri2 + 20, 21, 19 // tri3 + ), + gsSPNTriangles_5b(20, 22, 21, // tri0 + 15, 23, 13, // tri1 + 15, 24, 23, // tri2 + 24, 25, 23 // tri3 + ), + gsSPNTriangles_5b(25, 26, 23, // tri0 + 25, 27, 26, // tri1 + 27, 28, 26, // tri2 + 27, 29, 28 // tri3 + ), + gsSPNTriangles_5b(29, 30, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_tent_v[93], 31, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 2, 5 // tri2 + ), + gsSPNTriangles_5b(4, 0, 2, // tri0 + 6, 5, 7, // tri1 + 6, 4, 5, // tri2 + 8, 7, 9 // tri3 + ), + gsSPNTriangles_5b(8, 6, 7, // tri0 + 10, 11, 12, // tri1 + 11, 13, 12, // tri2 + 1, 10, 3 // tri3 + ), + gsSPNTriangles_5b(10, 12, 3, // tri0 + 14, 15, 16, // tri1 + 14, 17, 15, // tri2 + 9, 16, 8 // tri3 + ), + gsSPNTriangles_5b(9, 14, 16, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19, // tri2 + 21, 22, 19 // tri3 + ), + gsSPNTriangles_5b(22, 23, 19, // tri0 + 23, 24, 19, // tri1 + 24, 25, 19, // tri2 + 25, 26, 19 // tri3 + ), + gsSPNTriangles_5b(26, 27, 19, // tri0 + 27, 28, 19, // tri1 + 28, 29, 19, // tri2 + 29, 30, 19 // tri3 + ), + gsSPNTriangles_5b(30, 20, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tent_wall2, G_IM_FMT_CI, 64, 64, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&rom_tent_v[124], 24, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 8, 7, // tri0 + 5, 9, 6, // tri1 + 10, 11, 12, // tri2 + 10, 13, 11 // tri3 + ), + gsSPNTriangles_5b(13, 14, 11, // tri0 + 15, 16, 17, // tri1 + 15, 4, 16, // tri2 + 4, 3, 16 // tri3 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 18, 7, 19, // tri1 + 7, 8, 19, // tri2 + 21, 22, 13 // tri3 + ), + gsSPNTriangles_5b(22, 14, 13, // tri0 + 21, 23, 22, // tri1 + 0, 2, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tent_wall1, G_IM_FMT_CI, 64, 64, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&rom_tent_v[148], 24, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 9, 7, 10, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(12, 14, 13, // tri0 + 9, 15, 7, // tri1 + 15, 6, 7, // tri2 + 1, 16, 3 // tri3 + ), + gsSPNTriangles_5b(16, 17, 3, // tri0 + 13, 18, 11, // tri1 + 18, 19, 11, // tri2 + 20, 21, 19 // tri3 + ), + gsSPNTriangles_5b(21, 11, 19, // tri0 + 22, 23, 17, // tri1 + 23, 3, 17, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tent_floor, G_IM_FMT_CI, 64, 64, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&rom_tent_v[172], 15, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(1, 5, 2, // tri0 + 6, 7, 0, // tri1 + 0, 7, 3, // tri2 + 7, 8, 3 // tri3 + ), + gsSPNTriangles_5b(9, 6, 2, // tri0 + 6, 0, 2, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_tent_box_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_tent_enter, G_IM_FMT_CI, 64, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 10, 11, 12, // tri0 + 13, 14, 10, // tri1 + 13, 10, 12 // tri2 + ), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIM_LOD_FRAC, 0, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 120, 40, 0, 40, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_DECAL2), + gsDPLoadTextureBlock_4b_Dolphin(rom_tent_kage_b, G_IM_FMT_I, 32, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&rom_tent_v[329], 20, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tent_kage_s, G_IM_FMT_I, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 4, 5, 6, // tri0 + 4, 6, 7, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tent_kage_m, G_IM_FMT_I, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 8, 9, 10, // tri0 + 8, 10, 11, // tri1 + 12, 13, 14 // tri2 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 16, 17, 18, // tri1 + 16, 18, 19, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/rom_toudai/rom_toudai.c b/src/data/field/bg/acre/rom_toudai/rom_toudai.c new file mode 100644 index 00000000..b7859c54 --- /dev/null +++ b/src/data/field/bg/acre/rom_toudai/rom_toudai.c @@ -0,0 +1,212 @@ +#include "libforest/gbi_extensions.h" + +static u16 rom_toudai_yuka_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_toudai_yuka_pal.inc" +}; + +static u16 rom_toudai_kabe_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_toudai_kabe_pal.inc" +}; + +static u16 rom_toudai_step_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_toudai_step_pal.inc" +}; + +static u16 rom_toudai_meka_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_toudai_meka_pal.inc" +}; + +static u16 rom_toudai_ukiwa_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_toudai_ukiwa_pal.inc" +}; + +static u8 rom_toudai_yuka_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_toudai_yuka_tex.inc" +}; + +static u8 rom_toudai_kabeA_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_toudai_kabeA_tex.inc" +}; + +static u8 rom_toudai_kabeB_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_toudai_kabeB_tex.inc" +}; + +static u8 rom_toudai_step_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_toudai_step_tex.inc" +}; + +static u8 rom_toudai_mekaA_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_toudai_mekaA_tex.inc" +}; + +static u8 rom_toudai_ukiwa_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_toudai_ukiwa_tex.inc" +}; + +static u8 rom_toudai_kage1_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_toudai_kage1_tex.inc" +}; + +static u8 rom_toudai_mekaC_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_toudai_mekaC_tex.inc" +}; + +static u8 rom_toudai_kage2_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_toudai_kage2_tex.inc" +}; + +static Vtx rom_toudai_v[] = { +#include "assets/field/bg/rom_toudai_v.inc" +}; + +extern Gfx rom_toudai_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx rom_toudai_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_toudai_meka_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_toudai_mekaC_tex, G_IM_FMT_CI, 32, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&rom_toudai_v[66], 11, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b(0, 6, 4, // tri0 + 7, 8, 9, // tri1 + 8, 10, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_toudai_mekaA_tex, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&rom_toudai_v[77], 22, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 16, 17, 18, // tri1 + 16, 18, 19, // tri2 + 20, 8, 11 // tri3 + ), + gsSPNTriangles_5b(20, 11, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_toudai_ukiwa_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_toudai_ukiwa_tex, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_toudai_v[99], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_toudai_yuka_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_toudai_yuka_tex, G_IM_FMT_CI, 64, 64, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_toudai_v[0], 19, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 1, 0, 5 // tri2 + ), + gsSPNTriangles_5b(2, 6, 0, // tri0 + 0, 4, 7, // tri1 + 0, 8, 3, // tri2 + 9, 10, 0 // tri3 + ), + gsSPNTriangles_5b(10, 11, 0, // tri0 + 11, 12, 0, // tri1 + 12, 13, 0, // tri2 + 14, 15, 0 // tri3 + ), + gsSPNTriangles_5b(15, 16, 0, // tri0 + 16, 17, 0, // tri1 + 17, 18, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_toudai_step_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_toudai_step_tex, G_IM_FMT_CI, 64, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_toudai_v[19], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 3, 2 // tri2 + ), + gsSPNTriangles_5b(5, 4, 2, // tri0 + 6, 4, 5, // tri1 + 0, 7, 1, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_toudai_kabe_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_toudai_kabeB_tex, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&rom_toudai_v[27], 31, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b(5, 4, 3, // tri0 + 6, 7, 8, // tri1 + 9, 6, 8, // tri2 + 10, 11, 8 // tri3 + ), + gsSPNTriangles_5b(10, 8, 12, // tri0 + 9, 13, 14, // tri1 + 9, 14, 15, // tri2 + 16, 12, 15 // tri3 + ), + gsSPNTriangles_5b(14, 16, 15, // tri0 + 11, 13, 9, // tri1 + 8, 11, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_toudai_kabeA_tex, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(12, // tri count + 17, 18, 19, // tri0 + 20, 17, 19, // tri1 + 21, 22, 23 // tri2 + ), + gsSPNTriangles_5b(24, 21, 23, // tri0 + 25, 26, 27, // tri1 + 25, 27, 28, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b(21, 24, 25, // tri0 + 29, 23, 22, // tri1 + 29, 22, 30, // tri2 + 18, 17, 28 // tri3 + ), + gsSPNTriangles_5b(18, 28, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIM_LOD_FRAC, 0, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 110, 0, 0, 30, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(rom_toudai_kage2_tex, G_IM_FMT_I, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&rom_toudai_v[58], 8, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_toudai_kage1_tex, G_IM_FMT_I, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 4, 5, 6, // tri0 + 4, 6, 7, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/rom_train_in/rom_train_in.c b/src/data/field/bg/acre/rom_train_in/rom_train_in.c new file mode 100644 index 00000000..250ebae6 --- /dev/null +++ b/src/data/field/bg/acre/rom_train_in/rom_train_in.c @@ -0,0 +1,621 @@ +#include "libforest/gbi_extensions.h" + +static u16 rom_train_1_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_train_1_pal.inc" +}; + +static u16 rom_train_2_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_train_2_pal.inc" +}; + +static u16 rom_train_3_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_train_3_pal.inc" +}; + +static u8 rom_train_seat1_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_train_seat1_tex.inc" +}; + +static u8 rom_train_seat2_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_train_seat2_tex.inc" +}; + +static u8 rom_train_floor_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_train_floor_tex.inc" +}; + +static u8 rom_train_wall1_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_train_wall1_tex.inc" +}; + +static u8 rom_train_roof_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_train_roof_tex.inc" +}; + +static u8 rom_train_wall2_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_train_wall2_tex.inc" +}; + +static u8 rom_train_net_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_train_net_tex.inc" +}; + +static u8 rom_train_glass_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_train_glass_tex.inc" +}; + +static u8 rom_train_light_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_train_light_tex.inc" +}; + +static Vtx rom_train_in_v[] = { +#include "assets/field/bg/rom_train_in_v.inc" +}; + +extern Gfx rom_train_in_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, COMBINED, 0, 0, 0, + COMBINED), + gsDPSetEnvColor(0x64, 0xE6, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(rom_train_glass_tex, G_IM_FMT_I, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&rom_train_in_v[479], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 16, 17, 18, // tri1 + 16, 18, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(20, 22, 23, // tri0 + 24, 25, 26, // tri1 + 24, 26, 27, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b(28, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineMode(G_CC_BLENDPEDECALA, G_CC_PASS2), + gsDPSetEnvColor(0xFF, 0xFF, 0x78, 0xFF), + gsDPLoadTextureBlock_4b_Dolphin(rom_train_light_tex, G_IM_FMT_I, 32, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&rom_train_in_v[511], 16, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx rom_train_in_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_train_1_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_train_seat1_tex, G_IM_FMT_CI, 64, 64, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&rom_train_in_v[213], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 0, 2, 4 // tri2 + ), + gsSPNTriangles_5b(3, 0, 4, // tri0 + 5, 6, 7, // tri1 + 5, 7, 8, // tri2 + 9, 10, 6 // tri3 + ), + gsSPNTriangles_5b(9, 6, 5, // tri0 + 11, 12, 13, // tri1 + 11, 13, 14, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b(16, 18, 17, // tri0 + 15, 19, 16, // tri1 + 19, 18, 16, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(19, 21, 18, // tri0 + 22, 23, 24, // tri1 + 22, 24, 25, // tri2 + 25, 24, 26 // tri3 + ), + gsSPNTriangles_5b(25, 26, 27, // tri0 + 28, 29, 23, // tri1 + 28, 23, 22, // tri2 + 30, 22, 25 // tri3 + ), + gsSPNTriangles_5b(30, 25, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_train_in_v[245], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b(2, 5, 6, // tri0 + 7, 8, 9, // tri1 + 7, 9, 1, // tri2 + 1, 9, 4 // tri3 + ), + gsSPNTriangles_5b(1, 4, 2, // tri0 + 10, 11, 12, // tri1 + 10, 12, 13, // tri2 + 14, 10, 13 // tri3 + ), + gsSPNTriangles_5b(14, 13, 15, // tri0 + 16, 10, 14, // tri1 + 16, 14, 15, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(17, 19, 20, // tri0 + 21, 22, 23, // tri1 + 21, 23, 24, // tri2 + 25, 26, 22 // tri3 + ), + gsSPNTriangles_5b(25, 22, 21, // tri0 + 27, 28, 29, // tri1 + 27, 30, 28, // tri2 + 28, 31, 29 // tri3 + ), + gsSPNTriangles_5b(30, 31, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_train_in_v[277], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 5, 8, 6, // tri1 + 5, 7, 8, // tri2 + 7, 9, 10 // tri3 + ), + gsSPNTriangles_5b(7, 10, 8, // tri0 + 11, 12, 13, // tri1 + 11, 13, 14, // tri2 + 15, 16, 12 // tri3 + ), + gsSPNTriangles_5b(15, 12, 11, // tri0 + 14, 13, 17, // tri1 + 14, 17, 18, // tri2 + 19, 11, 14 // tri3 + ), + gsSPNTriangles_5b(19, 14, 20, // tri0 + 21, 22, 23, // tri1 + 21, 23, 24, // tri2 + 25, 26, 27 // tri3 + ), + gsSPNTriangles_5b(25, 27, 22, // tri0 + 23, 28, 29, // tri1 + 23, 29, 30, // tri2 + 22, 27, 28 // tri3 + ), + gsSPNTriangles_5b(22, 28, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_train_in_v[308], 11, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 3, 4 // tri2 + ), + gsSPNTriangles_5b(5, 0, 4, // tri0 + 4, 3, 6, // tri1 + 5, 4, 6, // tri2 + 7, 8, 9 // tri3 + ), + gsSPNTriangles_5b(7, 9, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_train_3_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_train_net_tex, G_IM_FMT_CI, 128, 32, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsSPVertex(&rom_train_in_v[319], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 16, 17, 18, // tri1 + 16, 18, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(20, 22, 23, // tri0 + 24, 25, 26, // tri1 + 24, 26, 27, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b(28, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_train_in_v[351], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 16, 17, 18, // tri1 + 16, 18, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(20, 22, 23, // tri0 + 24, 25, 26, // tri1 + 24, 26, 27, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b(28, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_train_in_v[383], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 16, 17, 18, // tri1 + 16, 18, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(20, 22, 23, // tri0 + 24, 25, 26, // tri1 + 24, 26, 27, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b(28, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_train_in_v[415], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 16, 17, 18, // tri1 + 16, 18, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(20, 22, 23, // tri0 + 24, 25, 26, // tri1 + 24, 26, 27, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b(28, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_train_in_v[447], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 16, 17, 18, // tri1 + 16, 18, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(20, 22, 23, // tri0 + 24, 25, 26, // tri1 + 24, 26, 27, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b(28, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_train_1_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_train_seat2_tex, G_IM_FMT_CI, 64, 64, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&rom_train_in_v[0], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 11, 8, 10, // tri2 + 8, 12, 9 // tri3 + ), + gsSPNTriangles_5b(11, 12, 8, // tri0 + 13, 14, 15, // tri1 + 14, 16, 15, // tri2 + 17, 13, 18 // tri3 + ), + gsSPNTriangles_5b(13, 19, 18, // tri0 + 13, 15, 19, // tri1 + 15, 20, 19, // tri2 + 15, 21, 20 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 25, 22, 24, // tri1 + 25, 24, 26, // tri2 + 27, 25, 26 // tri3 + ), + gsSPNTriangles_5b(27, 26, 28, // tri0 + 24, 29, 30, // tri1 + 24, 30, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_train_in_v[31], 26, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 4, 0, 2 // tri2 + ), + gsSPNTriangles_5b(4, 3, 0, // tri0 + 5, 6, 7, // tri1 + 5, 7, 8, // tri2 + 6, 9, 7 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 10, 11, 12, // tri1 + 10, 13, 14, // tri2 + 13, 15, 11 // tri3 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 16, 18, 19, // tri1 + 20, 16, 19, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b(23, 22, 24, // tri0 + 21, 23, 25, // tri1 + 23, 24, 25, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_train_2_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_train_wall1_tex, G_IM_FMT_CI, 64, 64, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&rom_train_in_v[57], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 5, 8, 9 // tri3 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 10, 11, 5, // tri1 + 10, 5, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(13, 15, 16, // tri0 + 17, 18, 19, // tri1 + 17, 19, 20, // tri2 + 6, 21, 7 // tri3 + ), + gsSPNTriangles_5b(21, 22, 7, // tri0 + 23, 24, 25, // tri1 + 23, 25, 26, // tri2 + 27, 28, 22 // tri3 + ), + gsSPNTriangles_5b(27, 22, 29, // tri0 + 22, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_train_in_v[89], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 9, 10, 11, // tri1 + 9, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 14, // tri0 + 16, 14, 13, // tri1 + 18, 13, 19, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 21, 23, 24, // tri1 + 25, 13, 15, // tri2 + 25, 15, 26 // tri3 + ), + gsSPNTriangles_5b(27, 28, 29, // tri0 + 27, 29, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_train_in_v[120], 17, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 5, // tri1 + 10, 8, 5, // tri2 + 5, 9, 11 // tri3 + ), + gsSPNTriangles_5b(5, 11, 12, // tri0 + 13, 5, 12, // tri1 + 13, 12, 14, // tri2 + 15, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 14, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_train_roof_tex, G_IM_FMT_CI, 64, 64, 15, GX_MIRROR, GX_REPEAT, 0, 0), + gsSPVertex(&rom_train_in_v[137], 15, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 1, // tri0 + 2, 1, 6, // tri1 + 1, 7, 6, // tri2 + 1, 8, 7 // tri3 + ), + gsSPNTriangles_5b(1, 5, 8, // tri0 + 8, 9, 7, // tri1 + 8, 10, 9, // tri2 + 9, 6, 7 // tri3 + ), + gsSPNTriangles_5b(9, 11, 6, // tri0 + 11, 9, 12, // tri1 + 9, 13, 12, // tri2 + 9, 14, 13 // tri3 + ), + gsSPNTriangles_5b(9, 10, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_train_wall2_tex, G_IM_FMT_CI, 64, 64, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&rom_train_in_v[152], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b(3, 4, 5, // tri0 + 3, 5, 6, // tri1 + 7, 3, 6, // tri2 + 7, 6, 8 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 10, 12, 11, // tri1 + 10, 13, 12, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b(14, 15, 12, // tri0 + 15, 16, 12, // tri1 + 15, 17, 16, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(19, 21, 20, // tri0 + 22, 23, 24, // tri1 + 23, 25, 24, // tri2 + 26, 22, 24 // tri3 + ), + gsSPNTriangles_5b(20, 27, 24, // tri0 + 20, 28, 27, // tri1 + 27, 26, 24, // tri2 + 21, 28, 20 // tri3 + ), + gsSPNTriangles_5b(29, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_train_in_v[184], 10, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(2, 1, 4, // tri0 + 2, 4, 3, // tri1 + 7, 8, 5, // tri2 + 7, 5, 9 // tri3 + ), + gsSPNTriangles_5b(9, 5, 4, // tri0 + 9, 4, 1, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_train_floor_tex, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&rom_train_in_v[194], 19, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 4, 3 // tri2 + ), + gsSPNTriangles_5b(1, 6, 2, // tri0 + 7, 8, 3, // tri1 + 2, 7, 3, // tri2 + 7, 9, 8 // tri3 + ), + gsSPNTriangles_5b(7, 10, 9, // tri0 + 11, 12, 9, // tri1 + 11, 9, 13, // tri2 + 9, 14, 13 // tri3 + ), + gsSPNTriangles_5b(9, 10, 14, // tri0 + 10, 15, 14, // tri1 + 10, 16, 15, // tri2 + 13, 14, 17 // tri3 + ), + gsSPNTriangles_5b(14, 18, 17, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/rom_uranai/rom_uranai.c b/src/data/field/bg/acre/rom_uranai/rom_uranai.c new file mode 100644 index 00000000..eb331d11 --- /dev/null +++ b/src/data/field/bg/acre/rom_uranai/rom_uranai.c @@ -0,0 +1,399 @@ +#include "libforest/gbi_extensions.h" + +static u16 rom_uranai_floor_tex_pal[] = { +#include "assets/field/bg/rom_uranai_floor_tex_pal.inc" +}; + +static u16 rom_uranai_wall_tex_pal[] = { +#include "assets/field/bg/rom_uranai_wall_tex_pal.inc" +}; + +static u16 rom_uranai_table_tex_pal[] = { +#include "assets/field/bg/rom_uranai_table_tex_pal.inc" +}; + +static u16 rom_uranai_tubo_tex_pal[] = { +#include "assets/field/bg/rom_uranai_tubo_tex_pal.inc" +}; + +static u16 rom_uranai_stand_tex_pal[] = { +#include "assets/field/bg/rom_uranai_stand_tex_pal.inc" +}; + +static u16 rom_uranai_tex_nuno_pal[] = { +#include "assets/field/bg/rom_uranai_tex_nuno_pal.inc" +}; + +static u16 rom_uranai_tex_bace_pal[] = { +#include "assets/field/bg/rom_uranai_tex_bace_pal.inc" +}; + +static u16 rom_uranai_card_tex_pal[] = { +#include "assets/field/bg/rom_uranai_card_tex_pal.inc" +}; + +static u8 rom_uranai_floor_tex[] = { +#include "assets/field/bg/rom_uranai_floor_tex.inc" +}; + +static u8 rom_uranai_wall01_tex[] = { +#include "assets/field/bg/rom_uranai_wall01_tex.inc" +}; + +static u8 rom_uranai_wall02_tex[] = { +#include "assets/field/bg/rom_uranai_wall02_tex.inc" +}; + +static u8 rom_uranai_wall03_tex[] = { +#include "assets/field/bg/rom_uranai_wall03_tex.inc" +}; + +static u8 rom_uranai_table01_tex[] = { +#include "assets/field/bg/rom_uranai_table01_tex.inc" +}; + +static u8 rom_uranai_table02_tex[] = { +#include "assets/field/bg/rom_uranai_table02_tex.inc" +}; + +static u8 rom_uranai_tubo_tex[] = { +#include "assets/field/bg/rom_uranai_tubo_tex.inc" +}; + +static u8 rom_uranai_shadow01_tex[] = { +#include "assets/field/bg/rom_uranai_shadow01_tex.inc" +}; + +static u8 rom_uranai_vell_tex[] = { +#include "assets/field/bg/rom_uranai_vell_tex.inc" +}; + +static u8 rom_uranai_vell02_tex[] = { +#include "assets/field/bg/rom_uranai_vell02_tex.inc" +}; + +static u8 rom_uranai_stand01_tex[] = { +#include "assets/field/bg/rom_uranai_stand01_tex.inc" +}; + +static u8 rom_uranai_nuno01_tex[] = { +#include "assets/field/bg/rom_uranai_nuno01_tex.inc" +}; + +static u8 rom_uranai_nuno02_tex[] = { +#include "assets/field/bg/rom_uranai_nuno02_tex.inc" +}; + +static u8 rom_uranai_bace_tex[] = { +#include "assets/field/bg/rom_uranai_bace_tex.inc" +}; + +static u8 rom_uranai_card01_tex[] = { +#include "assets/field/bg/rom_uranai_card01_tex.inc" +}; + +static u8 rom_uranai_shadow02_tex[] = { +#include "assets/field/bg/rom_uranai_shadow02_tex.inc" +}; + +static u8 rom_uranai_card02_tex[] = { +#include "assets/field/bg/rom_uranai_card02_tex.inc" +}; + +static u8 rom_uranai_cris02_tex[] = { +#include "assets/field/bg/rom_uranai_cris02_tex.inc" +}; + +static u8 rom_uranai_cris01_tex_rgb_ia8[] = { +#include "assets/field/bg/rom_uranai_cris01_tex_rgb_ia8.inc" +}; + +static u8 rom_uranai_hi02_tex_rgb_i4[] = { +#include "assets/field/bg/rom_uranai_hi02_tex_rgb_i4.inc" +}; + +static u8 rom_uranai_hi03_tex_rgb_i4[] = { +#include "assets/field/bg/rom_uranai_hi03_tex_rgb_i4.inc" +}; + +static Vtx rom_uranai_v[] = { +#include "assets/field/bg/rom_uranai_v.inc" +}; + +extern Gfx rom_uranai_modelT[] = { + gsSPTexture(65535, 65535, 0, 0, G_ON), + gsDPPipeSync(), + gsDPSetCombineLERP(0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIM_LOD_FRAC, 0, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 150, 20, 0, 30, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_DECAL2), + gsDPPipeSync(), + gsDPSetTextureLUT(G_TT_NONE), + gsDPLoadTextureBlock_4b(rom_uranai_shadow02_tex, G_IM_FMT_I, 16, 32, 15, G_TX_MIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_CLAMP, 4, 5, G_TX_NOLOD, G_TX_NOLOD), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&rom_uranai_v[224], 8, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsDPPipeSync(), + gsDPSetPrimColor(0, 120, 10, 0, 30, 255), + gsDPPipeSync(), + gsDPLoadTextureBlock_4b(rom_uranai_shadow01_tex, G_IM_FMT_I, 16, 32, 15, G_TX_MIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_CLAMP, 4, 5, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&rom_uranai_v[232], 8, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsDPPipeSync(), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, COMBINED, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 255, 255, 255, 80), + gsDPSetEnvColor(0x64, 0xFF, 0x00, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPPipeSync(), + gsDPLoadTextureBlock_4b(rom_uranai_vell02_tex, G_IM_FMT_I, 32, 64, 15, G_TX_MIRROR | G_TX_CLAMP, + G_TX_MIRROR | G_TX_CLAMP, 5, 6, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&rom_uranai_v[240], 8, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsDPPipeSync(), + gsDPSetPrimColor(0, 255, 255, 255, 255, 100), + gsDPSetEnvColor(0xFF, 0x00, 0x00, 0xFF), + gsDPPipeSync(), + gsDPLoadTextureBlock_4b(rom_uranai_vell_tex, G_IM_FMT_I, 32, 64, 15, G_TX_MIRROR | G_TX_CLAMP, + G_TX_MIRROR | G_TX_CLAMP, 5, 6, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&rom_uranai_v[248], 24, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(2, 4, 5, 0, 2, 5, 3, 0), + gsSP2Triangles(4, 6, 7, 0, 4, 7, 5, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), + gsSP2Triangles(10, 1, 0, 0, 10, 0, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), + gsSP2Triangles(14, 16, 17, 0, 14, 17, 15, 0), + gsSP2Triangles(16, 18, 19, 0, 16, 19, 17, 0), + gsSP2Triangles(19, 18, 20, 0, 19, 20, 21, 0), + gsSP2Triangles(20, 22, 23, 0, 20, 23, 21, 0), + gsDPPipeSync(), + gsDPSetCombineLERP(0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIM_LOD_FRAC, 0, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 120, 10, 0, 30, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_DECAL2), + gsDPPipeSync(), + gsDPLoadTextureBlock_4b(rom_uranai_shadow01_tex, G_IM_FMT_I, 16, 32, 15, G_TX_MIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_CLAMP, 4, 5, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&rom_uranai_v[272], 8, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsDPPipeSync(), + gsDPSetCombineLERP(TEXEL1, TEXEL0, PRIM_LOD_FRAC, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, ENVIRONMENT, COMBINED, + ENVIRONMENT, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 0, 255, 150, 0, 255), + gsDPSetEnvColor(0xFF, 0x96, 0x00, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b(rom_uranai_hi02_tex_rgb_i4, G_IM_FMT_I, 32, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPLoadMultiBlock_4b(rom_uranai_hi03_tex_rgb_i4, 0x0040, 1, G_IM_FMT_I, 32, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsSPDisplayList(0x09000000), + gsSPVertex(&rom_uranai_v[280], 8, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSPTexture(4000, 4000, 0, 0, G_ON), + gsDPPipeSync(), + gsDPSetCombineLERP(PRIMITIVE, TEXEL1, TEXEL0, TEXEL1, TEXEL0, 0, TEXEL1, 0, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 128, 200, 255, 255, 120), + gsDPLoadTextureBlock(rom_uranai_cris01_tex_rgb_ia8, G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, 0, G_TX_MIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_WRAP, 5, 5, 1, 1), + gsDPLoadMultiBlock(rom_uranai_cris02_tex, 0x0080, 1, G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 32, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 5, 5, 2, 2), + gsSPDisplayList(0x0A000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_TEXTURE_GEN | G_SHADING_SMOOTH), + gsSPVertex(&rom_uranai_v[288], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 3, 1, 0), + gsSP2Triangles(0, 4, 3, 0, 3, 5, 6, 0), + gsSP2Triangles(3, 4, 5, 0, 5, 7, 6, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 11, 9, 0), + gsSP2Triangles(9, 12, 10, 0, 6, 13, 8, 0), + gsSP2Triangles(6, 7, 13, 0, 13, 11, 8, 0), + gsSP2Triangles(14, 10, 12, 0, 14, 15, 10, 0), + gsSP2Triangles(14, 16, 15, 0, 17, 15, 16, 0), + gsSP2Triangles(17, 1, 15, 0, 17, 2, 1, 0), + gsSP2Triangles(3, 18, 1, 0, 19, 3, 6, 0), + gsSP2Triangles(20, 6, 8, 0, 21, 8, 10, 0), + gsSP2Triangles(15, 22, 10, 0, 1, 23, 15, 0), + gsSP2Triangles(19, 6, 20, 0, 18, 3, 19, 0), + gsSP2Triangles(1, 18, 23, 0, 10, 22, 21, 0), + gsSP2Triangles(20, 8, 21, 0, 15, 23, 22, 0), + gsSP2Triangles(24, 19, 20, 0, 24, 18, 19, 0), + gsSP2Triangles(18, 24, 23, 0, 23, 24, 22, 0), + gsSP2Triangles(24, 20, 21, 0, 22, 24, 21, 0), + gsSP2Triangles(25, 12, 9, 0, 25, 9, 26, 0), + gsSP2Triangles(11, 27, 26, 0, 11, 26, 9, 0), + gsSP2Triangles(13, 28, 27, 0, 13, 27, 11, 0), + gsSP2Triangles(7, 29, 28, 0, 7, 28, 13, 0), + gsSP2Triangles(5, 30, 29, 0, 5, 29, 7, 0), + gsSP2Triangles(4, 31, 30, 0, 4, 30, 5, 0), + gsSPVertex(&rom_uranai_v[320], 14, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(1, 4, 5, 0, 1, 5, 2, 0), + gsSP2Triangles(4, 6, 7, 0, 4, 7, 5, 0), + gsSP2Triangles(6, 8, 9, 0, 6, 9, 7, 0), + gsSP2Triangles(8, 10, 11, 0, 8, 11, 9, 0), + gsSP2Triangles(10, 12, 13, 0, 10, 13, 11, 0), + gsSPEndDisplayList(), +}; + +extern Gfx rom_uranai_model[] = { + gsSPTexture(65535, 65535, 0, 0, G_ON), + gsDPPipeSync(), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPPipeSync(), + gsDPSetTextureLUT(G_TT_RGBA16), + gsDPLoadTLUT_pal16(15, rom_uranai_floor_tex_pal), + gsDPLoadTextureBlock_4b(rom_uranai_floor_tex, G_IM_FMT_CI, 64, 64, 15, G_TX_MIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_WRAP, 6, 6, G_TX_NOLOD, G_TX_NOLOD), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&rom_uranai_v[0], 18, 0), + gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0), + gsSP2Triangles(0, 4, 1, 0, 4, 3, 1, 0), + gsSP2Triangles(5, 3, 6, 0, 3, 4, 6, 0), + gsSP2Triangles(4, 7, 6, 0, 8, 9, 10, 0), + gsSP2Triangles(9, 0, 10, 0, 0, 11, 10, 0), + gsSP2Triangles(12, 0, 13, 0, 0, 2, 13, 0), + gsSP2Triangles(2, 14, 13, 0, 15, 2, 16, 0), + gsSP2Triangles(2, 3, 16, 0, 3, 17, 16, 0), + gsSP2Triangles(2, 15, 14, 0, 8, 7, 4, 0), + gsSP2Triangles(3, 5, 17, 0, 11, 0, 12, 0), + gsDPPipeSync(), + gsDPLoadTLUT_pal16(15, rom_uranai_wall_tex_pal), + gsDPLoadTextureBlock_4b(rom_uranai_wall01_tex, G_IM_FMT_CI, 48, 64, 15, G_TX_MIRROR | G_TX_CLAMP, + G_TX_MIRROR | G_TX_CLAMP, 6, 6, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&rom_uranai_v[18], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0), + gsSP2Triangles(3, 4, 2, 0, 5, 6, 7, 0), + gsSP2Triangles(6, 8, 7, 0, 8, 9, 7, 0), + gsSP2Triangles(10, 11, 12, 0, 10, 13, 11, 0), + gsSP2Triangles(13, 14, 11, 0, 15, 16, 17, 0), + gsSP2Triangles(16, 18, 17, 0, 16, 19, 18, 0), + gsSP2Triangles(20, 21, 22, 0, 20, 10, 21, 0), + gsSP2Triangles(10, 23, 21, 0, 24, 25, 26, 0), + gsSP2Triangles(24, 27, 25, 0, 25, 28, 26, 0), + gsSP1Triangle(29, 30, 31, 0), + gsSPVertex(&rom_uranai_v[50], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 3, 1, 0), + gsSP2Triangles(4, 5, 6, 0, 5, 7, 6, 0), + gsSP2Triangles(7, 8, 6, 0, 9, 10, 11, 0), + gsSP2Triangles(9, 12, 10, 0, 12, 13, 10, 0), + gsSP2Triangles(14, 15, 16, 0, 14, 16, 17, 0), + gsSP2Triangles(18, 19, 20, 0, 18, 20, 21, 0), + gsSP2Triangles(9, 22, 23, 0, 9, 23, 24, 0), + gsSP2Triangles(25, 26, 27, 0, 26, 28, 27, 0), + gsSP2Triangles(28, 29, 27, 0, 30, 2, 31, 0), + gsSP1Triangle(2, 1, 31, 0), + gsSPVertex(&rom_uranai_v[82], 18, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), + gsSP2Triangles(3, 5, 6, 0, 4, 7, 8, 0), + gsSP2Triangles(4, 8, 5, 0, 8, 9, 5, 0), + gsSP2Triangles(10, 11, 12, 0, 10, 12, 13, 0), + gsSP2Triangles(10, 13, 14, 0, 11, 15, 16, 0), + gsSP2Triangles(11, 16, 12, 0, 11, 17, 15, 0), + gsDPPipeSync(), + gsDPLoadTLUT_pal16(15, rom_uranai_wall_tex_pal), + gsDPLoadTextureBlock_4b(rom_uranai_wall03_tex, G_IM_FMT_CI, 32, 64, 15, G_TX_MIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_CLAMP, 5, 6, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&rom_uranai_v[100], 6, 0), + gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0), + gsSP2Triangles(4, 5, 1, 0, 4, 1, 0, 0), + gsDPPipeSync(), + gsDPLoadTLUT_pal16(15, rom_uranai_table_tex_pal), + gsDPLoadTextureBlock_4b(rom_uranai_table01_tex, G_IM_FMT_CI, 16, 16, 15, G_TX_MIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_WRAP, 4, 4, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&rom_uranai_v[106], 4, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsDPPipeSync(), + gsDPLoadTLUT_pal16(15, rom_uranai_tex_nuno_pal), + gsDPLoadTextureBlock_4b(rom_uranai_nuno01_tex, G_IM_FMT_CI, 16, 16, 15, G_TX_MIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_WRAP, 4, 4, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&rom_uranai_v[110], 7, 0), + gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0), + gsSP2Triangles(0, 4, 1, 0, 4, 5, 1, 0), + gsSP2Triangles(5, 6, 1, 0, 6, 3, 1, 0), + gsDPPipeSync(), + gsDPLoadTLUT_pal16(15, rom_uranai_tex_bace_pal), + gsDPLoadTextureBlock_4b(rom_uranai_bace_tex, G_IM_FMT_CI, 32, 32, 15, G_TX_MIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_CLAMP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&rom_uranai_v[117], 5, 0), + gsSP2Triangles(0, 1, 2, 0, 2, 3, 0, 0), + gsSP1Triangle(0, 4, 1, 0), + gsDPPipeSync(), + gsDPLoadTLUT_pal16(15, rom_uranai_wall_tex_pal), + gsDPLoadTextureBlock_4b(rom_uranai_wall02_tex, G_IM_FMT_CI, 32, 64, 15, G_TX_MIRROR | G_TX_CLAMP, + G_TX_MIRROR | G_TX_CLAMP, 5, 6, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&rom_uranai_v[122], 12, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(2, 4, 5, 0, 2, 5, 3, 0), + gsSP2Triangles(6, 7, 8, 0, 6, 8, 9, 0), + gsSP2Triangles(8, 10, 11, 0, 8, 11, 9, 0), + gsDPPipeSync(), + gsDPLoadTLUT_pal16(15, rom_uranai_table_tex_pal), + gsDPLoadTextureBlock_4b(rom_uranai_table02_tex, G_IM_FMT_CI, 16, 16, 15, G_TX_MIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_CLAMP, 4, 4, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&rom_uranai_v[134], 12, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), + gsDPPipeSync(), + gsDPLoadTLUT_pal16(15, rom_uranai_card_tex_pal), + gsDPLoadTextureBlock_4b(rom_uranai_card01_tex, G_IM_FMT_CI, 32, 32, 15, G_TX_MIRROR | G_TX_CLAMP, + G_TX_MIRROR | G_TX_CLAMP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&rom_uranai_v[146], 14, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSP2Triangles(8, 2, 1, 0, 8, 1, 9, 0), + gsSP2Triangles(10, 11, 12, 0, 10, 12, 13, 0), + gsDPPipeSync(), + gsDPLoadTLUT_pal16(15, rom_uranai_card_tex_pal), + gsDPLoadTextureBlock_4b(rom_uranai_card02_tex, G_IM_FMT_CI, 48, 48, 15, G_TX_MIRROR | G_TX_CLAMP, + G_TX_MIRROR | G_TX_CLAMP, 6, 6, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&rom_uranai_v[160], 4, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsDPPipeSync(), + gsDPLoadTLUT_pal16(15, rom_uranai_tubo_tex_pal), + gsDPLoadTextureBlock_4b(rom_uranai_tubo_tex, G_IM_FMT_CI, 16, 64, 15, G_TX_MIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_CLAMP, 4, 6, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&rom_uranai_v[164], 12, 0), + gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0), + gsSP2Triangles(3, 4, 2, 0, 4, 5, 2, 0), + gsSP2Triangles(6, 7, 8, 0, 7, 9, 8, 0), + gsSP2Triangles(9, 10, 8, 0, 10, 11, 8, 0), + gsDPPipeSync(), + gsDPLoadTLUT_pal16(15, rom_uranai_stand_tex_pal), + gsDPLoadTextureBlock_4b(rom_uranai_stand01_tex, G_IM_FMT_CI, 16, 64, 15, G_TX_MIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_CLAMP, 4, 6, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&rom_uranai_v[176], 12, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(1, 4, 5, 0, 1, 5, 2, 0), + gsSP2Triangles(6, 7, 8, 0, 6, 8, 9, 0), + gsSP2Triangles(7, 10, 11, 0, 7, 11, 8, 0), + gsDPPipeSync(), + gsDPLoadTLUT_pal16(15, rom_uranai_tex_nuno_pal), + gsDPLoadTextureBlock_4b(rom_uranai_nuno02_tex, G_IM_FMT_CI, 16, 16, 15, G_TX_MIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_CLAMP, 4, 4, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&rom_uranai_v[188], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(0, 3, 4, 0, 5, 1, 0, 0), + gsSP2Triangles(5, 0, 6, 0, 5, 6, 7, 0), + gsSP2Triangles(0, 8, 9, 0, 0, 9, 6, 0), + gsSP2Triangles(4, 10, 8, 0, 4, 8, 0, 0), + gsSP2Triangles(11, 12, 13, 0, 11, 13, 14, 0), + gsSP2Triangles(13, 15, 16, 0, 13, 16, 14, 0), + gsSP2Triangles(15, 17, 18, 0, 15, 18, 16, 0), + gsSP2Triangles(19, 11, 14, 0, 19, 14, 16, 0), + gsSP2Triangles(19, 16, 20, 0, 16, 18, 21, 0), + gsSP2Triangles(16, 21, 20, 0, 22, 23, 24, 0), + gsSP2Triangles(22, 24, 25, 0, 24, 26, 27, 0), + gsSP2Triangles(24, 27, 25, 0, 26, 28, 29, 0), + gsSP2Triangles(26, 29, 27, 0, 23, 30, 31, 0), + gsSP2Triangles(23, 31, 26, 0, 23, 26, 24, 0), + gsSPVertex(&rom_uranai_v[220], 4, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/rom_uranai/rom_uranai_evw_anime.c b/src/data/field/bg/acre/rom_uranai/rom_uranai_evw_anime.c new file mode 100644 index 00000000..5dc3e2fb --- /dev/null +++ b/src/data/field/bg/acre/rom_uranai/rom_uranai_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL rom_uranai_evw_anime_2[] = { { 0, 0, 32, 32 }, { 0, 12, 32, 32 } }; + +extern EVW_ANIME_DATA rom_uranai_evw_anime = { + 2, + EVW_ANIME_TYPE_SCROLL2 + rom_uranai_evw_anime_2 +}; diff --git a/src/data/field/bg/acre/room01/room01.c b/src/data/field/bg/acre/room01/room01.c new file mode 100644 index 00000000..3b9498f5 --- /dev/null +++ b/src/data/field/bg/acre/room01/room01.c @@ -0,0 +1,96 @@ +#include "libforest/gbi_extensions.h" + +static u16 room[] = { +#include "assets/field/bg/room.inc" +}; + +static u8 room_floor[] = { +#include "assets/field/bg/room_floor.inc" +}; + +static u8 room_wall[] = { +#include "assets/field/bg/room_wall.inc" +}; + +static u8 room_window[] = { +#include "assets/field/bg/room_window.inc" +}; + +static Vtx room01_v[] = { +#include "assets/field/bg/room01_v.inc" +}; + +static Gfx room01_grp_room01__edge[] = { + gsDPPipeSync(), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_pal16(15, room), + gsDPLoadTextureBlock_4b(room_window, G_IM_FMT_CI, 64, 64, 15, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, + 6, 6, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&room01_v[80], 8, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 3, 1, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSPEndDisplayList(), +}; + +static Gfx room01_grp_room_out01[] = { + gsDPPipeSync(), + gsDPSetCombineMode(G_CC_PRIMITIVE, G_CC_PASS2), + gsSPVertex(&room01_v[72], 8, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 3, 1, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 7, 5, 0), + gsSPEndDisplayList(), +}; + +static Gfx room01_grp_room01[] = { + gsDPPipeSync(), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_pal16(15, room), + gsDPLoadTextureBlock_4b(room_wall, G_IM_FMT_CI, 64, 64, 15, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 6, + 6, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&room01_v[0], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 4, 0, 0), + gsSP2Triangles(0, 5, 1, 0, 0, 4, 5, 0), + gsSP2Triangles(6, 7, 8, 0, 7, 9, 8, 0), + gsSP2Triangles(10, 11, 12, 0, 11, 13, 12, 0), + gsSP2Triangles(14, 15, 16, 0, 15, 17, 16, 0), + gsSP2Triangles(18, 19, 20, 0, 19, 21, 20, 0), + gsSP2Triangles(22, 23, 24, 0, 23, 25, 24, 0), + gsSP2Triangles(23, 26, 25, 0, 26, 27, 25, 0), + gsSP2Triangles(26, 28, 27, 0, 29, 30, 31, 0), + gsSPVertex(&room01_v[32], 12, 0), + gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0), + gsSP2Triangles(1, 4, 3, 0, 4, 5, 3, 0), + gsSP2Triangles(6, 7, 8, 0, 6, 9, 7, 0), + gsSP2Triangles(9, 10, 7, 0, 10, 11, 7, 0), + gsDPLoadTLUT_pal16(15, room), + gsDPLoadTextureBlock_4b(room_floor, G_IM_FMT_CI, 64, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, + 6, 5, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&room01_v[44], 28, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), + gsSP2Triangles(6, 7, 8, 0, 8, 7, 9, 0), + gsSP2Triangles(4, 10, 11, 0, 6, 11, 12, 0), + gsSP2Triangles(13, 11, 6, 0, 4, 11, 13, 0), + gsSP2Triangles(14, 15, 13, 0, 16, 17, 14, 0), + gsSP2Triangles(17, 18, 19, 0, 17, 19, 14, 0), + gsSP2Triangles(19, 15, 14, 0, 20, 21, 22, 0), + gsSP2Triangles(20, 23, 21, 0, 17, 24, 22, 0), + gsSP2Triangles(5, 15, 25, 0, 5, 13, 15, 0), + gsSP2Triangles(5, 26, 13, 0, 15, 21, 25, 0), + gsSP2Triangles(15, 19, 21, 0, 19, 18, 21, 0), + gsSP2Triangles(27, 8, 13, 0, 8, 14, 13, 0), + gsSP2Triangles(8, 16, 14, 0, 17, 9, 24, 0), + gsSPEndDisplayList(), +}; + +extern Gfx room01_model[] = { + gsDPPipeSync(), + gsSPTexture(65535, 65535, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_NOOP, G_RM_AA_ZB_TEX_EDGE2), + gsSPClearGeometryMode(G_FOG | G_LIGHTING | G_TEXTURE_GEN | G_TEXTURE_GEN_LINEAR), + gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_SHADING_SMOOTH), + gsDPSetTextureLUT(G_TT_RGBA16), + gsSPDisplayList(room01_grp_room01), + gsSPDisplayList(room01_grp_room_out01), + gsSPDisplayList(room01_grp_room01__edge), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/tmp/tmp.c b/src/data/field/bg/acre/tmp/tmp.c new file mode 100644 index 00000000..401698a4 --- /dev/null +++ b/src/data/field/bg/acre/tmp/tmp.c @@ -0,0 +1,37 @@ +#include "libforest/gbi_extensions.h" + +extern u8 grass_tex_dummy[]; + +static Vtx tmp_v[] = { +#include "assets/field/bg/tmp_v.inc" +}; + +extern Gfx tmp_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx tmp_model[] = { + gsSPTexture(65535, 65535, 0, 0, G_ON), + gsDPPipeSync(), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(0, 0, 0, TEXEL0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPSetTextureLUT(G_TT_RGBA16), + gsDPLoadTextureBlock_4b(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&tmp_v[0], 28, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 3, 0, 4, 3, 6, 0), + gsSP2Triangles(7, 0, 8, 0, 7, 8, 9, 0), + gsSP2Triangles(10, 7, 9, 0, 10, 9, 11, 0), + gsSP2Triangles(12, 4, 6, 0, 12, 6, 13, 0), + gsSP2Triangles(14, 10, 11, 0, 14, 11, 15, 0), + gsSP2Triangles(16, 12, 13, 0, 16, 13, 17, 0), + gsSP2Triangles(18, 14, 15, 0, 18, 15, 19, 0), + gsSP2Triangles(20, 16, 17, 0, 20, 17, 21, 0), + gsSP2Triangles(22, 18, 19, 0, 22, 19, 23, 0), + gsSP2Triangles(24, 20, 21, 0, 24, 21, 25, 0), + gsSP2Triangles(26, 8, 5, 0, 26, 5, 27, 0), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/tmp2/tmp2.c b/src/data/field/bg/acre/tmp2/tmp2.c new file mode 100644 index 00000000..474efa06 --- /dev/null +++ b/src/data/field/bg/acre/tmp2/tmp2.c @@ -0,0 +1,149 @@ +#include "libforest/gbi_extensions.h" + +static u16 grd_s_cliff_pal[] = { +#include "assets/field/bg/grd_s_cliff_pal.inc" +}; + +static u16 grd_s_earth_pal[] = { +#include "assets/field/bg/grd_s_earth_pal.inc" +}; + +static u8 grd_s_cliff_tex[] = { +#include "assets/field/bg/grd_s_cliff_tex.inc" +}; + +static u8 grd_s_earth_tex[] = { +#include "assets/field/bg/grd_s_earth_tex.inc" +}; + +static u8 grd_s_grass_tex[] = { +#include "assets/field/bg/grd_s_grass_tex.inc" +}; + +static Vtx tmp2_v[] = { +#include "assets/field/bg/tmp2_v.inc" +}; + +extern Gfx tmp2_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx tmp2_model[] = { + gsSPTexture(65535, 65535, 0, 0, G_ON), + gsDPPipeSync(), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(0, 0, 0, TEXEL0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPSetTextureLUT(G_TT_RGBA16), + gsDPLoadTLUT_pal16(15, grd_s_earth_pal), + gsDPLoadTextureBlock_4b(grd_s_grass_tex, G_IM_FMT_CI, 32, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&tmp2_v[232], 4, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tmp2_v[0], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 3, 1, 0), + gsSP2Triangles(0, 4, 5, 0, 0, 5, 3, 0), + gsSP2Triangles(4, 6, 5, 0, 7, 8, 9, 0), + gsSP2Triangles(7, 10, 8, 0, 10, 2, 11, 0), + gsSP2Triangles(0, 12, 4, 0, 12, 13, 4, 0), + gsSP2Triangles(14, 15, 6, 0, 8, 10, 16, 0), + gsSP2Triangles(16, 10, 17, 0, 10, 11, 17, 0), + gsSP2Triangles(18, 19, 20, 0, 21, 22, 23, 0), + gsSP2Triangles(21, 24, 22, 0, 22, 25, 26, 0), + gsSP2Triangles(22, 26, 23, 0, 27, 28, 29, 0), + gsSP1Triangle(27, 29, 30, 0), + gsSPVertex(&tmp2_v[31], 10, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 7, 5, 0), + gsSP2Triangles(5, 8, 9, 0, 5, 9, 6, 0), + gsSPVertex(&tmp2_v[41], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 2, 3, 4, 0), + gsSP2Triangles(2, 4, 0, 0, 4, 3, 5, 0), + gsSP2Triangles(5, 3, 6, 0, 6, 7, 5, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), + gsSP2Triangles(8, 12, 13, 0, 8, 13, 9, 0), + gsSP2Triangles(14, 15, 16, 0, 14, 16, 17, 0), + gsSP2Triangles(18, 19, 15, 0, 18, 15, 14, 0), + gsSP2Triangles(6, 20, 7, 0, 21, 7, 20, 0), + gsSP2Triangles(21, 20, 22, 0, 23, 22, 20, 0), + gsSP2Triangles(23, 20, 24, 0, 25, 23, 24, 0), + gsSP2Triangles(24, 26, 25, 0, 24, 27, 28, 0), + gsSP2Triangles(24, 28, 26, 0, 29, 30, 31, 0), + gsSPVertex(&tmp2_v[73], 16, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), + gsSP2Triangles(3, 5, 6, 0, 6, 5, 7, 0), + gsSP2Triangles(6, 7, 8, 0, 8, 7, 9, 0), + gsSP2Triangles(8, 9, 10, 0, 2, 11, 12, 0), + gsSP2Triangles(2, 12, 4, 0, 12, 13, 4, 0), + gsSP2Triangles(2, 1, 11, 0, 4, 13, 14, 0), + gsSP1Triangle(14, 15, 4, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&tmp2_v[89], 14, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(1, 4, 2, 0, 5, 6, 2, 0), + gsSP2Triangles(5, 2, 4, 0, 7, 6, 8, 0), + gsSP2Triangles(6, 9, 8, 0, 6, 5, 9, 0), + gsSP2Triangles(7, 10, 6, 0, 11, 12, 13, 0), + gsSP2Triangles(11, 13, 10, 0, 11, 10, 7, 0), + gsDPPipeSync(), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_pal16(15, grd_s_earth_pal), + gsDPLoadTextureBlock_4b(grd_s_earth_tex, G_IM_FMT_CI, 64, 64, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_CLAMP, 6, 6, G_TX_NOLOD, G_TX_NOLOD), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tmp2_v[103], 29, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), + gsSP2Triangles(6, 3, 7, 0, 7, 8, 6, 0), + gsSP2Triangles(9, 6, 8, 0, 10, 9, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 10, 15, 16, 0), + gsSP2Triangles(16, 12, 14, 0, 14, 13, 17, 0), + gsSP2Triangles(17, 18, 19, 0, 9, 20, 21, 0), + gsSP2Triangles(10, 22, 9, 0, 23, 24, 10, 0), + gsSP2Triangles(25, 26, 23, 0, 27, 25, 28, 0), + gsSP1Triangle(2, 27, 28, 0), + gsDPPipeSync(), + gsDPLoadTLUT_pal16(15, grd_s_cliff_pal), + gsDPLoadTextureBlock_4b(grd_s_cliff_tex, G_IM_FMT_CI, 64, 64, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_CLAMP, 6, 6, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&tmp2_v[132], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), + gsSP2Triangles(3, 5, 6, 0, 0, 7, 8, 0), + gsSP2Triangles(0, 8, 1, 0, 9, 10, 4, 0), + gsSP2Triangles(9, 4, 11, 0, 12, 13, 14, 0), + gsSP2Triangles(12, 14, 0, 0, 15, 16, 17, 0), + gsSP2Triangles(18, 19, 20, 0, 19, 21, 20, 0), + gsSP2Triangles(18, 22, 19, 0, 23, 24, 25, 0), + gsSP2Triangles(23, 25, 26, 0, 18, 27, 28, 0), + gsSP2Triangles(18, 28, 22, 0, 29, 30, 24, 0), + gsSP1Triangle(29, 24, 31, 0), + gsSPVertex(&tmp2_v[164], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), + gsSP2Triangles(11, 10, 12, 0, 11, 12, 13, 0), + gsSP2Triangles(7, 6, 0, 0, 7, 0, 3, 0), + gsSP2Triangles(12, 14, 15, 0, 12, 16, 14, 0), + gsSP2Triangles(17, 18, 19, 0, 17, 19, 20, 0), + gsSP2Triangles(21, 22, 23, 0, 21, 23, 24, 0), + gsSP2Triangles(20, 25, 26, 0, 20, 26, 27, 0), + gsSP2Triangles(28, 23, 29, 0, 28, 29, 30, 0), + gsSP1Triangle(20, 27, 31, 0), + gsSPVertex(&tmp2_v[196], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 0, 2, 0), + gsSP2Triangles(4, 5, 6, 0, 7, 4, 6, 0), + gsSP2Triangles(7, 6, 8, 0, 9, 10, 11, 0), + gsSP2Triangles(9, 11, 3, 0, 12, 13, 7, 0), + gsSP2Triangles(12, 7, 14, 0, 15, 5, 13, 0), + gsSP2Triangles(15, 13, 12, 0, 1, 16, 10, 0), + gsSP2Triangles(1, 10, 9, 0, 17, 18, 19, 0), + gsSP2Triangles(17, 19, 20, 0, 21, 22, 23, 0), + gsSP2Triangles(21, 23, 24, 0, 24, 23, 25, 0), + gsSP2Triangles(24, 25, 26, 0, 20, 19, 27, 0), + gsSP2Triangles(20, 27, 28, 0, 25, 29, 30, 0), + gsSP2Triangles(25, 31, 29, 0, 31, 22, 29, 0), + gsSPVertex(&tmp2_v[228], 4, 0), + gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/tmp3/tmp3.c b/src/data/field/bg/acre/tmp3/tmp3.c new file mode 100644 index 00000000..f8feb6a7 --- /dev/null +++ b/src/data/field/bg/acre/tmp3/tmp3.c @@ -0,0 +1,141 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 stone_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx tmp3_v[] = { +#include "assets/field/bg/tmp3_v.inc" +}; + +extern Gfx tmp3_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx tmp3_model[] = { + gsSPTexture(65535, 65535, 0, 0, G_ON), + gsDPPipeSync(), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPSetTextureLUT(G_TT_RGBA16), + gsDPLoadTLUT_pal16(15, bush_pal_dummy), + gsDPLoadTextureBlock_4b(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_CLAMP, 6, 6, G_TX_NOLOD, G_TX_NOLOD), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tmp3_v[245], 13, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 0, 4, 0), + gsSP2Triangles(5, 3, 6, 0, 7, 5, 8, 0), + gsSP2Triangles(9, 7, 10, 0, 11, 9, 12, 0), + gsDPPipeSync(), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_pal16(15, earth_pal_dummy), + gsDPLoadTextureBlock_4b(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_CLAMP, 6, 6, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&tmp3_v[0], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0), + gsSP2Triangles(2, 4, 0, 0, 5, 6, 7, 0), + gsSP2Triangles(6, 8, 7, 0, 5, 9, 6, 0), + gsSP2Triangles(10, 11, 12, 0, 13, 14, 15, 0), + gsSP2Triangles(11, 13, 16, 0, 14, 17, 18, 0), + gsSP2Triangles(17, 19, 20, 0, 4, 21, 22, 0), + gsSP2Triangles(23, 3, 24, 0, 25, 23, 26, 0), + gsSP2Triangles(5, 25, 27, 0, 8, 28, 29, 0), + gsSPVertex(&tmp3_v[30], 27, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 0, 4, 0), + gsSP2Triangles(5, 3, 6, 0, 7, 5, 8, 0), + gsSP2Triangles(9, 7, 10, 0, 11, 9, 12, 0), + gsSP2Triangles(13, 14, 15, 0, 16, 13, 17, 0), + gsSP2Triangles(18, 19, 20, 0, 19, 16, 21, 0), + gsSP2Triangles(22, 23, 24, 0, 25, 22, 26, 0), + gsDPPipeSync(), + gsDPLoadTLUT_pal16(15, earth_pal_dummy), + gsDPLoadTextureBlock_4b(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&tmp3_v[57], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0), + gsSP2Triangles(0, 4, 5, 0, 0, 2, 4, 0), + gsSP2Triangles(4, 6, 5, 0, 7, 5, 8, 0), + gsSP2Triangles(5, 6, 8, 0, 6, 9, 8, 0), + gsSP2Triangles(10, 11, 12, 0, 11, 13, 12, 0), + gsSP2Triangles(14, 3, 15, 0, 3, 1, 15, 0), + gsSP2Triangles(13, 16, 12, 0, 13, 17, 16, 0), + gsSP2Triangles(17, 18, 16, 0, 17, 19, 18, 0), + gsSP2Triangles(19, 20, 18, 0, 21, 22, 23, 0), + gsSP2Triangles(22, 24, 23, 0, 21, 25, 22, 0), + gsSP2Triangles(21, 26, 25, 0, 26, 27, 25, 0), + gsSP2Triangles(28, 29, 30, 0, 29, 31, 30, 0), + gsSP2Triangles(29, 13, 31, 0, 13, 11, 31, 0), + gsSPVertex(&tmp3_v[89], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), + gsSP2Triangles(4, 6, 5, 0, 5, 7, 3, 0), + gsSP2Triangles(7, 8, 9, 0, 8, 10, 11, 0), + gsSP2Triangles(10, 12, 13, 0, 14, 12, 15, 0), + gsSP2Triangles(12, 16, 15, 0, 12, 17, 16, 0), + gsSP2Triangles(18, 19, 20, 0, 21, 19, 18, 0), + gsSP2Triangles(22, 20, 19, 0, 22, 23, 24, 0), + gsSP2Triangles(25, 26, 27, 0, 26, 23, 27, 0), + gsSP2Triangles(26, 28, 23, 0, 28, 24, 23, 0), + gsSP2Triangles(28, 29, 24, 0, 26, 25, 30, 0), + gsSP1Triangle(25, 2, 30, 0), + gsSPVertex(&tmp3_v[120], 12, 0), + gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0), + gsSP2Triangles(4, 5, 6, 0, 5, 7, 6, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 11, 9, 0), + gsDPPipeSync(), + gsDPLoadTLUT_pal16(15, earth_pal_dummy), + gsDPLoadTextureBlock_4b(stone_tex_dummy, G_IM_FMT_CI, 64, 64, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_CLAMP, 6, 6, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&tmp3_v[132], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 3, 1, 0), + gsSP2Triangles(3, 4, 1, 0, 3, 5, 4, 0), + gsSP2Triangles(6, 7, 8, 0, 6, 8, 9, 0), + gsSP2Triangles(10, 6, 9, 0, 11, 12, 13, 0), + gsSP2Triangles(12, 14, 13, 0, 12, 10, 14, 0), + gsSP2Triangles(15, 16, 17, 0, 16, 11, 18, 0), + gsSP2Triangles(15, 17, 19, 0, 20, 15, 19, 0), + gsSP2Triangles(21, 20, 22, 0, 23, 24, 25, 0), + gsSP2Triangles(24, 21, 25, 0, 21, 22, 25, 0), + gsSP2Triangles(26, 24, 23, 0, 27, 28, 29, 0), + gsSP2Triangles(28, 30, 29, 0, 28, 26, 30, 0), + gsSPVertex(&tmp3_v[163], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), + gsSP2Triangles(4, 6, 5, 0, 4, 0, 6, 0), + gsSP2Triangles(7, 8, 9, 0, 10, 8, 7, 0), + gsSP2Triangles(11, 12, 13, 0, 9, 11, 13, 0), + gsSP2Triangles(8, 11, 9, 0, 13, 12, 14, 0), + gsSP2Triangles(12, 15, 14, 0, 15, 16, 14, 0), + gsSP2Triangles(16, 17, 18, 0, 17, 19, 18, 0), + gsSP2Triangles(18, 19, 20, 0, 19, 21, 20, 0), + gsSP2Triangles(21, 22, 20, 0, 23, 24, 25, 0), + gsSP2Triangles(26, 23, 25, 0, 22, 26, 25, 0), + gsSP2Triangles(24, 27, 28, 0, 27, 29, 28, 0), + gsSP1Triangle(29, 30, 28, 0), + gsSPVertex(&tmp3_v[194], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 1, 0, 0), + gsSP2Triangles(4, 5, 6, 0, 7, 4, 6, 0), + gsSP2Triangles(8, 9, 10, 0, 5, 8, 10, 0), + gsSP2Triangles(10, 9, 11, 0, 9, 12, 11, 0), + gsSP2Triangles(12, 13, 11, 0, 14, 15, 13, 0), + gsSP2Triangles(14, 16, 15, 0, 17, 18, 19, 0), + gsSP2Triangles(16, 17, 19, 0, 15, 16, 19, 0), + gsSP2Triangles(20, 21, 22, 0, 23, 24, 25, 0), + gsSP2Triangles(26, 27, 25, 0, 28, 29, 30, 0), + gsSP1Triangle(29, 26, 30, 0), + gsSPVertex(&tmp3_v[225], 7, 0), + gsSP2Triangles(0, 1, 2, 0, 2, 3, 4, 0), + gsSP1Triangle(5, 6, 4, 0), + gsDPPipeSync(), + gsDPLoadTLUT_pal16(15, bush_pal_dummy), + gsDPLoadTextureBlock_4b(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&tmp3_v[232], 13, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 0, 4, 0), + gsSP2Triangles(5, 6, 7, 0, 1, 5, 8, 0), + gsSP2Triangles(9, 10, 11, 0, 10, 3, 12, 0), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/tmp4/tmp4.c b/src/data/field/bg/acre/tmp4/tmp4.c new file mode 100644 index 00000000..f41460ee --- /dev/null +++ b/src/data/field/bg/acre/tmp4/tmp4.c @@ -0,0 +1,139 @@ +#include "libforest/gbi_extensions.h" + +extern u8 rail_pal_dummy[]; +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 station_pal_dummy[]; +extern u8 stone_tex_dummy[]; +extern u8 station_tex_dummy[]; +extern u8 rail_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx tmp4_v[] = { +#include "assets/field/bg/tmp4_v.inc" +}; + +extern Gfx tmp4_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx tmp4_model[] = { + gsSPTexture(65535, 65535, 0, 0, G_ON), + gsDPPipeSync(), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPSetTextureLUT(G_TT_RGBA16), + gsDPLoadTLUT_pal16(15, bush_pal_dummy), + gsDPLoadTextureBlock_4b(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_CLAMP, 6, 6, G_TX_NOLOD, G_TX_NOLOD), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tmp4_v[191], 13, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 0, 4, 0), + gsSP2Triangles(5, 3, 6, 0, 7, 5, 8, 0), + gsSP2Triangles(9, 7, 10, 0, 11, 9, 12, 0), + gsDPPipeSync(), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_pal16(15, earth_pal_dummy), + gsDPLoadTextureBlock_4b(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&tmp4_v[0], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), + gsSP2Triangles(4, 6, 7, 0, 8, 9, 0, 0), + gsSP2Triangles(1, 0, 9, 0, 0, 10, 8, 0), + gsSP2Triangles(11, 12, 13, 0, 14, 15, 16, 0), + gsSP2Triangles(15, 17, 16, 0, 18, 14, 19, 0), + gsSP2Triangles(9, 18, 19, 0, 20, 21, 22, 0), + gsSP2Triangles(23, 22, 21, 0, 1, 9, 23, 0), + gsSP2Triangles(24, 25, 3, 0, 8, 18, 9, 0), + gsSP2Triangles(15, 26, 17, 0, 26, 27, 22, 0), + gsSP2Triangles(28, 29, 30, 0, 29, 11, 13, 0), + gsSPVertex(&tmp4_v[31], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), + gsSP2Triangles(4, 6, 7, 0, 7, 8, 9, 0), + gsSP2Triangles(9, 10, 11, 0, 3, 6, 4, 0), + gsSP2Triangles(6, 8, 7, 0, 8, 10, 9, 0), + gsSP2Triangles(10, 12, 11, 0, 13, 14, 15, 0), + gsSP2Triangles(16, 17, 14, 0, 18, 19, 20, 0), + gsSP2Triangles(0, 21, 22, 0, 0, 23, 21, 0), + gsSP2Triangles(2, 1, 24, 0, 24, 1, 25, 0), + gsSP2Triangles(21, 23, 26, 0, 21, 27, 22, 0), + gsSP2Triangles(28, 29, 26, 0, 29, 18, 30, 0), + gsSP1Triangle(20, 30, 18, 0), + gsSPVertex(&tmp4_v[62], 3, 0), + gsSP1Triangle(0, 1, 2, 0), + gsDPPipeSync(), + gsDPLoadTLUT_pal16(15, earth_pal_dummy), + gsDPLoadTextureBlock_4b(stone_tex_dummy, G_IM_FMT_CI, 64, 64, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_CLAMP, 6, 6, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&tmp4_v[65], 25, 0), + gsSP2Triangles(0, 1, 2, 0, 2, 3, 4, 0), + gsSP2Triangles(2, 1, 3, 0, 0, 5, 1, 0), + gsSP2Triangles(3, 6, 4, 0, 7, 8, 6, 0), + gsSP2Triangles(7, 9, 8, 0, 9, 10, 11, 0), + gsSP2Triangles(12, 13, 11, 0, 14, 15, 13, 0), + gsSP2Triangles(15, 14, 16, 0, 16, 17, 15, 0), + gsSP2Triangles(17, 18, 19, 0, 18, 20, 19, 0), + gsSP2Triangles(20, 21, 19, 0, 20, 22, 21, 0), + gsSP2Triangles(22, 23, 21, 0, 22, 24, 23, 0), + gsDPPipeSync(), + gsDPLoadTLUT_pal16(15, earth_pal_dummy), + gsDPLoadTextureBlock_4b(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_CLAMP, 6, 6, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&tmp4_v[90], 31, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 3, 1, 0), + gsSP2Triangles(2, 4, 5, 0, 6, 7, 0, 0), + gsSP2Triangles(8, 9, 6, 0, 10, 11, 8, 0), + gsSP2Triangles(10, 12, 11, 0, 10, 13, 12, 0), + gsSP2Triangles(13, 14, 15, 0, 16, 17, 18, 0), + gsSP2Triangles(19, 16, 20, 0, 17, 21, 22, 0), + gsSP2Triangles(21, 23, 24, 0, 23, 25, 24, 0), + gsSP2Triangles(26, 27, 28, 0, 27, 29, 30, 0), + gsSP1Triangle(29, 19, 30, 0), + gsDPPipeSync(), + gsDPLoadTLUT_pal16(15, rail_pal_dummy), + gsDPLoadTextureBlock_4b(rail_tex_dummy, G_IM_FMT_CI, 64, 64, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_CLAMP, 6, 6, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&tmp4_v[121], 21, 0), + gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0), + gsSP2Triangles(4, 1, 0, 0, 4, 5, 1, 0), + gsSP2Triangles(6, 7, 4, 0, 7, 5, 4, 0), + gsSP2Triangles(8, 7, 6, 0, 8, 9, 7, 0), + gsSP2Triangles(9, 10, 7, 0, 10, 11, 7, 0), + gsSP2Triangles(7, 12, 5, 0, 7, 11, 12, 0), + gsSP2Triangles(5, 12, 1, 0, 12, 13, 1, 0), + gsSP2Triangles(1, 14, 3, 0, 1, 13, 14, 0), + gsSP2Triangles(13, 15, 14, 0, 13, 16, 15, 0), + gsSP2Triangles(12, 16, 13, 0, 12, 17, 16, 0), + gsSP2Triangles(11, 18, 12, 0, 18, 17, 12, 0), + gsSP2Triangles(11, 19, 18, 0, 10, 20, 11, 0), + gsSP1Triangle(20, 19, 11, 0), + gsDPPipeSync(), + gsDPLoadTLUT_pal16(15, station_pal_dummy), + gsDPLoadTextureBlock_4b(station_tex_dummy, G_IM_FMT_CI, 128, 32, 15, G_TX_MIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 7, 5, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&tmp4_v[142], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSP2Triangles(4, 8, 5, 0, 9, 10, 11, 0), + gsSP2Triangles(9, 12, 10, 0, 11, 13, 14, 0), + gsSP2Triangles(11, 15, 13, 0, 13, 16, 14, 0), + gsSP2Triangles(11, 10, 15, 0, 17, 18, 19, 0), + gsSP2Triangles(18, 20, 19, 0, 21, 8, 4, 0), + gsSP2Triangles(22, 23, 24, 0, 23, 25, 24, 0), + gsSP2Triangles(26, 27, 28, 0, 26, 28, 29, 0), + gsSPVertex(&tmp4_v[172], 6, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), + gsDPPipeSync(), + gsDPLoadTLUT_pal16(15, bush_pal_dummy), + gsDPLoadTextureBlock_4b(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&tmp4_v[178], 13, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 0, 4, 0), + gsSP2Triangles(5, 6, 7, 0, 1, 5, 8, 0), + gsSP2Triangles(9, 10, 11, 0, 10, 3, 12, 0), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/tmpr/tmpr.c b/src/data/field/bg/acre/tmpr/tmpr.c index d0695ef7..82aaab3a 100644 --- a/src/data/field/bg/acre/tmpr/tmpr.c +++ b/src/data/field/bg/acre/tmpr/tmpr.c @@ -1,27 +1,30 @@ #include "libforest/gbi_extensions.h" -// clang-format off - -static Vtx tmpr_v[] = { }; // TODO: include asset - -extern u8 earth_tex_dummy[]; +extern u8 bridge_2_pal_dummy[]; +extern u8 bridge_2_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; extern u8 river_tex_dummy[]; extern u8 grass_tex_dummy[]; -extern u8 water_1_tex_dummy[]; -extern u8 water_2_tex_dummy[]; -extern u8 bridge_2_tex_dummy[]; -extern u16 bridge_2_pal_dummy[]; +extern u8 earth_tex_dummy[]; -Gfx tmpr_modelT[] = { - gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), +static Vtx tmpr_v[] = { +#include "assets/field/bg/tmpr_v.inc" +}; + +extern Gfx tmpr_modelT[] = { + gsSPTexture(65535, 65535, 0, 0, G_ON), gsDPPipeSync(), - gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), gsDPSetPrimColor(0, 50, 255, 255, 255, 50), - gsDPSetEnvColor(0, 100, 255, 255), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), gsDPSetTextureLUT(G_TT_NONE), - gsDPLoadTextureBlock_4b(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), - gsDPLoadMultiBlock_4b(water_2_tex_dummy, 0x0040, 1, G_IM_FMT_I, 32, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPLoadTextureBlock_4b(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPLoadMultiBlock_4b(water_2_tex_dummy, 0x0040, 1, G_IM_FMT_I, 32, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), gsSPDisplayList(0x08000000), gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), gsSPVertex(&tmpr_v[152], 22, 0), @@ -36,13 +39,14 @@ Gfx tmpr_modelT[] = { gsSP2Triangles(18, 17, 15, 0, 18, 15, 10, 0), gsSP2Triangles(18, 10, 13, 0, 19, 18, 13, 0), gsSP2Triangles(19, 13, 20, 0, 21, 19, 20, 0), - gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsSPTexture(65535, 65535, 0, 0, G_ON), gsDPPipeSync(), gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), gsDPSetTextureLUT(G_TT_RGBA16), - gsDPLoadTLUT_pal16(15, 0x80FD90E0), - gsDPLoadTextureBlock_4b(bridge_2_tex_dummy, G_IM_FMT_CI, 128, 32, 15, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_WRAP, 7, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPLoadTLUT_pal16(15, bridge_2_pal_dummy), + gsDPLoadTextureBlock_4b(bridge_2_tex_dummy, G_IM_FMT_CI, 128, 32, 15, G_TX_NOMIRROR | G_TX_CLAMP, + G_TX_NOMIRROR | G_TX_WRAP, 7, 5, G_TX_NOLOD, G_TX_NOLOD), gsDPSetPrimColor(0, 128, 255, 255, 255, 255), gsSPVertex(&tmpr_v[174], 32, 0), gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), @@ -63,14 +67,15 @@ Gfx tmpr_modelT[] = { gsSPEndDisplayList(), }; -Gfx tmpr_model[] = { - gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), +extern Gfx tmpr_model[] = { + gsSPTexture(65535, 65535, 0, 0, G_ON), gsDPPipeSync(), gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), gsDPSetTextureLUT(G_TT_RGBA16), gsDPLoadTLUT_pal16(15, 0x09000000), - gsDPLoadTextureBlock_4b(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_CLAMP, 6, 6, G_TX_NOLOD, G_TX_NOLOD), + gsDPLoadTextureBlock_4b(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_CLAMP, 6, 6, G_TX_NOLOD, G_TX_NOLOD), gsDPSetPrimColor(0, 128, 255, 255, 255, 255), gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), gsSPVertex(&tmpr_v[0], 32, 0), @@ -89,7 +94,8 @@ Gfx tmpr_model[] = { gsSP2Triangles(5, 3, 6, 0, 7, 5, 8, 0), gsDPPipeSync(), gsDPLoadTLUT_pal16(15, 0x09000000), - gsDPLoadTextureBlock_4b(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPLoadTextureBlock_4b(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), gsSPVertex(&tmpr_v[41], 32, 0), gsSP2Triangles(0, 1, 2, 0, 0, 3, 1, 0), gsSP2Triangles(4, 5, 6, 0, 5, 7, 6, 0), @@ -114,7 +120,8 @@ Gfx tmpr_model[] = { gsSP1Triangle(26, 5, 3, 0), gsDPPipeSync(), gsDPLoadTLUT_pal16(15, 0x09000000), - gsDPLoadTextureBlock_4b(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPLoadTextureBlock_4b(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), gsSPVertex(&tmpr_v[100], 32, 0), gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0), gsSP2Triangles(4, 5, 3, 0, 5, 2, 3, 0), @@ -140,5 +147,3 @@ Gfx tmpr_model[] = { gsSP1Triangle(17, 19, 18, 0), gsSPEndDisplayList(), }; - -// clang-format on diff --git a/src/data/field/bg/acre/tmpr/tmpr_evw_anime.c b/src/data/field/bg/acre/tmpr/tmpr_evw_anime.c new file mode 100644 index 00000000..58d3a914 --- /dev/null +++ b/src/data/field/bg/acre/tmpr/tmpr_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL tmpr_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA tmpr_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + tmpr_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/tmpr2/tmpr2.c b/src/data/field/bg/acre/tmpr2/tmpr2.c new file mode 100644 index 00000000..4819294d --- /dev/null +++ b/src/data/field/bg/acre/tmpr2/tmpr2.c @@ -0,0 +1,100 @@ +#include "libforest/gbi_extensions.h" + +static u16 grd_1_earth_pal[] = { +#include "assets/field/bg/grd_1_earth_pal.inc" +}; + +static u8 grd_s_river_tex[] = { +#include "assets/field/bg/grd_s_river_tex.inc" +}; + +static u8 grd_water1_tex[] = { +#include "assets/field/bg/grd_water1_tex.inc" +}; + +static u8 grd_s_grass_tex[] = { +#include "assets/field/bg/grd_s_grass_tex2.inc" +}; + +static Vtx tmpr2_v[] = { +#include "assets/field/bg/tmpr2_v.inc" +}; + +static Gfx tmpr2_grp_grd_s_r1_1_river[] = { + gsSPTexture(65535, 65535, 0, 0, G_ON), + gsDPPipeSync(), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPSetTextureLUT(G_TT_RGBA16), + gsDPLoadTLUT_pal16(15, grd_1_earth_pal), + gsDPLoadTextureBlock_4b(grd_s_river_tex, G_IM_FMT_CI, 64, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tmpr2_v[25], 19, 0), + gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0), + gsSP2Triangles(1, 4, 3, 0, 4, 5, 3, 0), + gsSP2Triangles(4, 6, 5, 0, 6, 7, 5, 0), + gsSP2Triangles(6, 8, 7, 0, 6, 9, 8, 0), + gsSP2Triangles(10, 11, 12, 0, 11, 13, 12, 0), + gsSP2Triangles(13, 4, 12, 0, 14, 15, 16, 0), + gsSP2Triangles(14, 17, 15, 0, 15, 13, 16, 0), + gsSP2Triangles(15, 4, 13, 0, 10, 18, 11, 0), + gsSPEndDisplayList(), +}; + +static Gfx tmpr2_grp_grd_s_r1_1_grass[] = { + gsSPTexture(65535, 65535, 0, 0, G_ON), + gsDPPipeSync(), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPSetTextureLUT(G_TT_RGBA16), + gsDPLoadTLUT_pal16(15, grd_1_earth_pal), + gsDPLoadTextureBlock_4b(grd_s_grass_tex, G_IM_FMT_CI, 32, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tmpr2_v[0], 25, 0), + gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0), + gsSP2Triangles(3, 4, 2, 0, 3, 5, 4, 0), + gsSP2Triangles(0, 6, 1, 0, 0, 7, 6, 0), + gsSP2Triangles(7, 8, 6, 0, 8, 9, 6, 0), + gsSP2Triangles(9, 10, 6, 0, 10, 11, 6, 0), + gsSP2Triangles(11, 1, 6, 0, 11, 12, 1, 0), + gsSP2Triangles(12, 3, 1, 0, 12, 13, 3, 0), + gsSP2Triangles(13, 14, 3, 0, 14, 5, 3, 0), + gsSP2Triangles(15, 16, 17, 0, 16, 18, 17, 0), + gsSP2Triangles(19, 17, 18, 0, 19, 20, 17, 0), + gsSP2Triangles(15, 21, 16, 0, 21, 22, 16, 0), + gsSP2Triangles(21, 23, 22, 0, 21, 24, 23, 0), + gsSPEndDisplayList(), +}; + +static Gfx tmpr2_grp_grd_s_r1_1_waterT[] = { + gsSPTexture(65535, 65535, 0, 0, G_ON), + gsDPPipeSync(), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPSetTextureLUT(G_TT_NONE), + gsDPLoadTextureBlock_4b(grd_water1_tex, G_IM_FMT_I, 32, 32, 15, G_TX_MIRROR | G_TX_WRAP, G_TX_MIRROR | G_TX_WRAP, 5, + 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tmpr2_v[44], 10, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 3, 1, 0), + gsSP2Triangles(1, 4, 2, 0, 4, 5, 2, 0), + gsSP2Triangles(4, 6, 5, 0, 6, 7, 5, 0), + gsSP2Triangles(6, 8, 7, 0, 8, 9, 7, 0), + gsSPEndDisplayList(), +}; + +extern Gfx tmpr2_modelT[] = { + gsSPDisplayList(tmpr2_grp_grd_s_r1_1_waterT), + gsSPEndDisplayList(), +}; + +extern Gfx tmpr2_model[] = { + gsSPDisplayList(tmpr2_grp_grd_s_r1_1_grass), + gsSPDisplayList(tmpr2_grp_grd_s_r1_1_river), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/tmpr2/tmpr2_evw_anime.c b/src/data/field/bg/acre/tmpr2/tmpr2_evw_anime.c new file mode 100644 index 00000000..c8bedc22 --- /dev/null +++ b/src/data/field/bg/acre/tmpr2/tmpr2_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL tmpr2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA tmpr2_evw_anime = { + -1, + EVW_ANIME_TYPE_SCROLL2 + tmpr2_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/tmpr3/tmpr3.c b/src/data/field/bg/acre/tmpr3/tmpr3.c new file mode 100644 index 00000000..3076aeda --- /dev/null +++ b/src/data/field/bg/acre/tmpr3/tmpr3.c @@ -0,0 +1,242 @@ +#include "libforest/gbi_extensions.h" + +extern u8 sprashC_tex_dummy[]; +extern u8 sprashA_tex_dummy[]; +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_1_pal_dummy[]; +extern u8 bridge_1_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx tmpr3_v[] = { +#include "assets/field/bg/tmpr3_v.inc" +}; + +extern Gfx tmpr3_modelT[] = { + gsSPTexture(65535, 65535, 0, 0, G_ON), + gsDPPipeSync(), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsDPSetEnvColor(0x90, 0x80, 0x60, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPPipeSync(), + gsDPSetTextureLUT(G_TT_NONE), + gsDPLoadTextureBlock_4b(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_CLAMP, 5, 4, G_TX_NOLOD, G_TX_NOLOD), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tmpr3_v[199], 26, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 0, 0, 5, 1, 0, 0), + gsSP2Triangles(6, 7, 8, 0, 6, 8, 9, 0), + gsSP2Triangles(8, 10, 9, 0, 11, 9, 10, 0), + gsSP2Triangles(0, 12, 4, 0, 3, 13, 0, 0), + gsSP2Triangles(0, 13, 12, 0, 13, 14, 12, 0), + gsSP2Triangles(14, 15, 12, 0, 9, 16, 6, 0), + gsSP2Triangles(9, 17, 16, 0, 11, 17, 9, 0), + gsSP2Triangles(18, 17, 19, 0, 19, 20, 18, 0), + gsSP2Triangles(18, 20, 15, 0, 15, 14, 18, 0), + gsSP2Triangles(17, 21, 19, 0, 17, 22, 21, 0), + gsSP2Triangles(17, 11, 22, 0, 5, 23, 1, 0), + gsSP2Triangles(24, 25, 10, 0, 25, 11, 10, 0), + gsDPPipeSync(), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPLoadTextureBlock(wave1_tex_dummy, G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPLoadMultiBlock(wave2_tex_dummy, 0x0080, 1, G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_CLAMP, 5, 6, G_TX_NOLOD, G_TX_NOLOD), + gsSPDisplayList(0x09000000), + gsSPVertex(&tmpr3_v[225], 20, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 0, 2, 0), + gsSP2Triangles(1, 4, 5, 0, 2, 1, 5, 0), + gsSP2Triangles(2, 5, 6, 0, 2, 6, 7, 0), + gsSP2Triangles(3, 2, 7, 0, 8, 3, 7, 0), + gsSP2Triangles(9, 10, 11, 0, 12, 13, 9, 0), + gsSP2Triangles(11, 12, 9, 0, 11, 10, 14, 0), + gsSP2Triangles(11, 14, 15, 0, 15, 14, 16, 0), + gsSP2Triangles(15, 16, 17, 0, 18, 19, 15, 0), + gsSP2Triangles(15, 19, 11, 0, 15, 17, 18, 0), + gsSP1Triangle(11, 19, 12, 0), + gsDPPipeSync(), + gsDPLoadTextureBlock(wave1_tex_dummy, G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPLoadMultiBlock(wave3_tex_dummy, 0x0080, 1, G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsSPDisplayList(0x0A000000), + gsSPVertex(&tmpr3_v[245], 16, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 0, 2, 0), + gsSP2Triangles(3, 2, 4, 0, 3, 4, 5, 0), + gsSP2Triangles(6, 7, 8, 0, 6, 8, 9, 0), + gsSP2Triangles(10, 6, 9, 0, 10, 9, 11, 0), + gsSP2Triangles(10, 11, 12, 0, 13, 10, 12, 0), + gsSP2Triangles(14, 13, 12, 0, 3, 5, 15, 0), + gsSP2Triangles(6, 3, 15, 0, 6, 15, 7, 0), + gsDPPipeSync(), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPLoadTextureBlock_4b(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPLoadMultiBlock_4b(water_2_tex_dummy, 0x0040, 1, G_IM_FMT_I, 32, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsSPDisplayList(0x08000000), + gsSPVertex(&tmpr3_v[261], 10, 0), + gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0), + gsSP2Triangles(4, 5, 6, 0, 5, 7, 6, 0), + gsSP2Triangles(5, 2, 7, 0, 2, 3, 7, 0), + gsSP2Triangles(0, 8, 1, 0, 8, 9, 1, 0), + gsDPPipeSync(), + gsDPSetCombineLERP(1, 0, PRIMITIVE, TEXEL0, TEXEL1, 0, PRIMITIVE, 0, COMBINED, 0, SHADE, TEXEL1, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 100, 140, 255, 200), + gsDPLoadTextureBlock_4b(sprashC_tex_dummy, G_IM_FMT_I, 32, 32, 15, G_TX_MIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPLoadMultiBlock_4b(sprashA_tex_dummy, 0x0040, 1, G_IM_FMT_I, 32, 32, 15, G_TX_MIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, 1), + gsSPDisplayList(0x0B000000), + gsSPVertex(&tmpr3_v[271], 7, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(1, 4, 2, 0, 4, 5, 2, 0), + gsSP1Triangle(1, 6, 4, 0), + gsSPEndDisplayList(), +}; + +extern Gfx tmpr3_model[] = { + gsSPTexture(65535, 65535, 0, 0, G_ON), + gsDPPipeSync(), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPSetTextureLUT(G_TT_RGBA16), + gsDPLoadTLUT_pal16(15, bridge_1_pal_dummy), + gsDPLoadTextureBlock_4b(bridge_1_tex_dummy, G_IM_FMT_CI, 64, 64, 15, G_TX_MIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_WRAP, 6, 6, G_TX_NOLOD, G_TX_NOLOD), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tmpr3_v[186], 13, 0), + gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0), + gsSP2Triangles(0, 2, 4, 0, 2, 5, 4, 0), + gsSP2Triangles(6, 4, 7, 0, 6, 7, 8, 0), + gsSP2Triangles(9, 0, 4, 0, 9, 4, 6, 0), + gsSP2Triangles(10, 11, 1, 0, 10, 1, 12, 0), + gsSP2Triangles(12, 1, 0, 0, 12, 0, 9, 0), + gsSP2Triangles(5, 7, 4, 0, 11, 3, 1, 0), + gsDPPipeSync(), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_pal16(15, cliff_pal_dummy), + gsDPLoadTextureBlock_4b(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&tmpr3_v[0], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0), + gsSP2Triangles(4, 5, 6, 0, 7, 8, 9, 0), + gsSP2Triangles(7, 10, 11, 0, 10, 12, 11, 0), + gsSP2Triangles(13, 14, 12, 0, 13, 15, 14, 0), + gsSP2Triangles(16, 17, 15, 0, 16, 18, 17, 0), + gsSP2Triangles(18, 19, 20, 0, 21, 22, 20, 0), + gsSP2Triangles(23, 24, 22, 0, 25, 26, 24, 0), + gsSP2Triangles(27, 28, 26, 0, 26, 25, 27, 0), + gsSP2Triangles(24, 23, 25, 0, 22, 21, 23, 0), + gsSP2Triangles(20, 19, 21, 0, 16, 19, 18, 0), + gsSP2Triangles(15, 13, 16, 0, 12, 10, 13, 0), + gsSP2Triangles(7, 9, 10, 0, 6, 29, 30, 0), + gsSP1Triangle(29, 31, 30, 0), + gsSPVertex(&tmpr3_v[32], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), + gsSP2Triangles(2, 1, 3, 0, 0, 6, 1, 0), + gsSP2Triangles(7, 8, 6, 0, 6, 8, 1, 0), + gsSP2Triangles(9, 10, 7, 0, 9, 11, 10, 0), + gsSP2Triangles(12, 13, 11, 0, 13, 10, 11, 0), + gsSP2Triangles(14, 15, 12, 0, 16, 17, 14, 0), + gsSP2Triangles(18, 19, 16, 0, 20, 21, 18, 0), + gsSP2Triangles(22, 23, 20, 0, 24, 25, 22, 0), + gsSP2Triangles(26, 27, 28, 0, 26, 29, 27, 0), + gsSP2Triangles(29, 30, 27, 0, 31, 25, 24, 0), + gsSP2Triangles(22, 25, 23, 0, 20, 23, 21, 0), + gsSP2Triangles(18, 21, 19, 0, 19, 17, 16, 0), + gsSP2Triangles(14, 17, 15, 0, 15, 13, 12, 0), + gsDPPipeSync(), + gsDPLoadTLUT_pal16(15, beach_pal_dummy2), + gsDPLoadTextureBlock_4b(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&tmpr3_v[64], 14, 0), + gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0), + gsSP2Triangles(2, 3, 4, 0, 3, 5, 4, 0), + gsSP2Triangles(6, 7, 8, 0, 7, 9, 8, 0), + gsSP2Triangles(9, 10, 11, 0, 11, 8, 9, 0), + gsSP2Triangles(12, 11, 10, 0, 12, 13, 11, 0), + gsDPPipeSync(), + gsDPLoadTLUT_pal16(15, earth_pal_dummy), + gsDPLoadTextureBlock_4b(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_CLAMP, 6, 6, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&tmpr3_v[78], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 4, 1, 0), + gsSP2Triangles(5, 6, 4, 0, 7, 8, 6, 0), + gsSP2Triangles(9, 10, 11, 0, 12, 11, 13, 0), + gsSP2Triangles(14, 13, 15, 0, 16, 15, 17, 0), + gsSP2Triangles(18, 19, 10, 0, 20, 21, 22, 0), + gsSP2Triangles(23, 22, 8, 0, 24, 25, 21, 0), + gsSP2Triangles(26, 27, 28, 0, 29, 26, 30, 0), + gsSPVertex(&tmpr3_v[109], 9, 0), + gsSP2Triangles(0, 1, 2, 0, 1, 3, 4, 0), + gsSP2Triangles(5, 0, 6, 0, 7, 5, 8, 0), + gsDPPipeSync(), + gsDPLoadTLUT_pal16(15, earth_pal_dummy), + gsDPLoadTextureBlock_4b(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&tmpr3_v[118], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0), + gsSP2Triangles(4, 5, 6, 0, 5, 1, 0, 0), + gsSP2Triangles(5, 4, 1, 0, 6, 5, 7, 0), + gsSP2Triangles(5, 8, 7, 0, 7, 8, 9, 0), + gsSP2Triangles(9, 8, 10, 0, 8, 11, 10, 0), + gsSP2Triangles(12, 13, 14, 0, 12, 15, 13, 0), + gsSP2Triangles(14, 0, 2, 0, 16, 13, 17, 0), + gsSP2Triangles(17, 13, 18, 0, 19, 20, 21, 0), + gsSP2Triangles(19, 22, 20, 0, 23, 20, 22, 0), + gsSP2Triangles(24, 20, 23, 0, 25, 20, 24, 0), + gsSP2Triangles(18, 20, 25, 0, 20, 26, 21, 0), + gsSP2Triangles(20, 27, 26, 0, 20, 15, 27, 0), + gsSP2Triangles(15, 20, 13, 0, 20, 18, 13, 0), + gsSP2Triangles(28, 29, 30, 0, 29, 31, 30, 0), + gsSPVertex(&tmpr3_v[150], 22, 0), + gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0), + gsSP2Triangles(4, 2, 3, 0, 4, 5, 2, 0), + gsSP2Triangles(6, 7, 5, 0, 7, 8, 9, 0), + gsSP2Triangles(7, 6, 10, 0, 6, 11, 10, 0), + gsSP2Triangles(12, 13, 8, 0, 12, 14, 13, 0), + gsSP2Triangles(12, 15, 14, 0, 12, 16, 15, 0), + gsSP2Triangles(17, 18, 16, 0, 10, 19, 17, 0), + gsSP2Triangles(19, 18, 17, 0, 11, 19, 10, 0), + gsSP2Triangles(11, 20, 19, 0, 20, 21, 19, 0), + gsSPTexture(65535, 65535, 0, 0, G_ON), + gsDPPipeSync(), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 200, 184, 144, 255), + gsDPSetEnvColor(0x90, 0x80, 0x60, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPPipeSync(), + gsDPSetTextureLUT(G_TT_NONE), + gsDPLoadTextureBlock_4b(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&tmpr3_v[172], 14, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 0, 3, 0, 5, 4, 3, 0), + gsSP2Triangles(6, 7, 8, 0, 9, 10, 6, 0), + gsSP2Triangles(9, 6, 8, 0, 11, 10, 12, 0), + gsSP2Triangles(12, 10, 9, 0, 12, 13, 11, 0), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/tmpr3/tmpr3_evw_anime.c b/src/data/field/bg/acre/tmpr3/tmpr3_evw_anime.c new file mode 100644 index 00000000..8afac0d9 --- /dev/null +++ b/src/data/field/bg/acre/tmpr3/tmpr3_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL tmpr3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA tmpr3_evw_anime = { + 1, + EVW_ANIME_TYPE_SCROLL2 + tmpr3_evw_anime_1 +}; diff --git a/src/data/field/bg/acre/tmpr4/tmpr4.c b/src/data/field/bg/acre/tmpr4/tmpr4.c new file mode 100644 index 00000000..8283e67b --- /dev/null +++ b/src/data/field/bg/acre/tmpr4/tmpr4.c @@ -0,0 +1,224 @@ +#include "libforest/gbi_extensions.h" + +extern u8 sprashC_tex_dummy[]; +extern u8 sprashA_tex_dummy[]; +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx tmpr4_v[] = { +#include "assets/field/bg/tmpr4_v.inc" +}; + +extern Gfx tmpr4_modelT[] = { + gsSPTexture(65535, 65535, 0, 0, G_ON), + gsDPPipeSync(), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsDPSetEnvColor(0x90, 0x80, 0x60, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPPipeSync(), + gsDPSetTextureLUT(G_TT_NONE), + gsDPLoadTextureBlock_4b(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_CLAMP, 5, 4, G_TX_NOLOD, G_TX_NOLOD), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tmpr4_v[218], 24, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 7, 5, 0), + gsSP2Triangles(8, 7, 4, 0, 7, 9, 10, 0), + gsSP2Triangles(9, 11, 10, 0, 7, 12, 9, 0), + gsSP2Triangles(13, 3, 14, 0, 13, 0, 3, 0), + gsSP2Triangles(7, 8, 12, 0, 15, 16, 17, 0), + gsSP2Triangles(15, 18, 16, 0, 18, 11, 16, 0), + gsSP2Triangles(6, 5, 19, 0, 18, 10, 11, 0), + gsSP2Triangles(20, 6, 19, 0, 8, 21, 12, 0), + gsSP2Triangles(22, 20, 23, 0, 20, 19, 23, 0), + gsDPPipeSync(), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPLoadTextureBlock(wave1_tex_dummy, G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPLoadMultiBlock(wave2_tex_dummy, 0x0080, 1, G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_CLAMP, 5, 6, G_TX_NOLOD, G_TX_NOLOD), + gsSPDisplayList(0x09000000), + gsSPVertex(&tmpr4_v[242], 19, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 3, 1, 0), + gsSP2Triangles(4, 1, 3, 0, 4, 3, 5, 0), + gsSP2Triangles(0, 6, 3, 0, 7, 8, 9, 0), + gsSP2Triangles(10, 9, 11, 0, 9, 8, 11, 0), + gsSP2Triangles(7, 9, 12, 0, 13, 14, 15, 0), + gsSP2Triangles(16, 13, 17, 0, 16, 14, 13, 0), + gsSP1Triangle(13, 15, 18, 0), + gsDPPipeSync(), + gsDPLoadTextureBlock(wave1_tex_dummy, G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPLoadMultiBlock(wave3_tex_dummy, 0x0080, 1, G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsSPDisplayList(0x0A000000), + gsSPVertex(&tmpr4_v[261], 23, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 3, 1, 0), + gsSP2Triangles(0, 4, 5, 0, 0, 2, 4, 0), + gsSP2Triangles(6, 7, 8, 0, 9, 10, 11, 0), + gsSP2Triangles(12, 9, 11, 0, 12, 11, 13, 0), + gsSP2Triangles(14, 12, 13, 0, 15, 16, 17, 0), + gsSP2Triangles(7, 18, 8, 0, 18, 7, 19, 0), + gsSP2Triangles(20, 18, 19, 0, 15, 17, 10, 0), + gsSP2Triangles(9, 15, 10, 0, 6, 8, 12, 0), + gsSP2Triangles(14, 6, 12, 0, 5, 14, 13, 0), + gsSP2Triangles(5, 13, 21, 0, 5, 21, 0, 0), + gsSP1Triangle(1, 22, 2, 0), + gsDPPipeSync(), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPLoadTextureBlock_4b(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPLoadMultiBlock_4b(water_2_tex_dummy, 0x0040, 1, G_IM_FMT_I, 32, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsSPDisplayList(0x08000000), + gsSPVertex(&tmpr4_v[284], 10, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 3, 1, 0), + gsSP2Triangles(4, 5, 2, 0, 4, 6, 5, 0), + gsSP2Triangles(2, 5, 0, 0, 7, 6, 8, 0), + gsSP2Triangles(6, 4, 8, 0, 3, 9, 1, 0), + gsDPPipeSync(), + gsDPSetCombineLERP(1, 0, PRIMITIVE, TEXEL0, TEXEL1, 0, PRIMITIVE, 0, COMBINED, 0, SHADE, TEXEL1, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 100, 140, 255, 200), + gsDPLoadTextureBlock_4b(sprashC_tex_dummy, G_IM_FMT_I, 32, 32, 15, G_TX_MIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPLoadMultiBlock_4b(sprashA_tex_dummy, 0x0040, 1, G_IM_FMT_I, 32, 32, 15, G_TX_MIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, 1), + gsSPDisplayList(0x0B000000), + gsSPVertex(&tmpr4_v[294], 7, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(1, 4, 2, 0, 4, 5, 2, 0), + gsSP1Triangle(1, 6, 4, 0), + gsSPEndDisplayList(), +}; + +extern Gfx tmpr4_model[] = { + gsSPTexture(65535, 65535, 0, 0, G_ON), + gsDPPipeSync(), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPSetTextureLUT(G_TT_RGBA16), + gsDPLoadTLUT_pal16(15, cliff_pal_dummy), + gsDPLoadTextureBlock_4b(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tmpr4_v[0], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 7, 8, 6, 0), + gsSP2Triangles(8, 4, 6, 0, 9, 10, 11, 0), + gsSP2Triangles(9, 12, 10, 0, 9, 13, 12, 0), + gsSP2Triangles(13, 14, 12, 0, 15, 16, 17, 0), + gsSP2Triangles(18, 17, 19, 0, 17, 16, 19, 0), + gsSP2Triangles(7, 20, 8, 0, 20, 21, 8, 0), + gsSP2Triangles(22, 23, 24, 0, 23, 25, 24, 0), + gsSP2Triangles(26, 22, 27, 0, 22, 24, 27, 0), + gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), + gsSPVertex(&tmpr4_v[32], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 3, 1, 0), + gsSP2Triangles(4, 5, 6, 0, 5, 7, 6, 0), + gsSP2Triangles(8, 9, 10, 0, 11, 12, 13, 0), + gsSP2Triangles(14, 15, 16, 0, 2, 17, 0, 0), + gsSP2Triangles(18, 11, 13, 0, 19, 20, 21, 0), + gsSP2Triangles(14, 22, 15, 0, 23, 20, 24, 0), + gsSP2Triangles(22, 17, 25, 0, 26, 12, 11, 0), + gsSP2Triangles(17, 2, 25, 0, 27, 28, 29, 0), + gsSP1Triangle(22, 25, 15, 0), + gsSPVertex(&tmpr4_v[62], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 3, 1, 0), + gsSP2Triangles(3, 4, 1, 0, 5, 6, 7, 0), + gsSP2Triangles(8, 9, 10, 0, 11, 12, 13, 0), + gsSP2Triangles(14, 15, 16, 0, 15, 17, 16, 0), + gsSP2Triangles(18, 19, 20, 0, 21, 22, 23, 0), + gsSP2Triangles(23, 24, 25, 0, 26, 27, 12, 0), + gsSP2Triangles(28, 18, 29, 0, 24, 30, 25, 0), + gsSP2Triangles(13, 12, 27, 0, 28, 31, 18, 0), + gsSPVertex(&tmpr4_v[94], 18, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), + gsSP2Triangles(6, 2, 7, 0, 8, 5, 4, 0), + gsSP2Triangles(9, 10, 11, 0, 12, 13, 14, 0), + gsSP2Triangles(15, 16, 17, 0, 3, 12, 14, 0), + gsDPPipeSync(), + gsDPLoadTLUT_pal16(15, beach_pal_dummy2), + gsDPLoadTextureBlock_4b(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&tmpr4_v[112], 13, 0), + gsSP2Triangles(0, 1, 2, 0, 2, 1, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 5, 7, 6, 0), + gsSP2Triangles(8, 2, 3, 0, 9, 10, 11, 0), + gsSP1Triangle(10, 12, 11, 0), + gsDPPipeSync(), + gsDPLoadTLUT_pal16(15, earth_pal_dummy), + gsDPLoadTextureBlock_4b(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&tmpr4_v[125], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0), + gsSP2Triangles(0, 4, 1, 0, 0, 5, 4, 0), + gsSP2Triangles(0, 6, 5, 0, 7, 8, 9, 0), + gsSP2Triangles(7, 9, 10, 0, 10, 11, 12, 0), + gsSP2Triangles(10, 12, 7, 0, 13, 2, 14, 0), + gsSP2Triangles(13, 14, 15, 0, 16, 17, 18, 0), + gsSP2Triangles(17, 19, 18, 0, 19, 20, 18, 0), + gsSP2Triangles(21, 17, 16, 0, 22, 23, 24, 0), + gsSP2Triangles(25, 26, 23, 0, 25, 23, 22, 0), + gsSP2Triangles(24, 27, 28, 0, 13, 19, 29, 0), + gsSP1Triangle(19, 17, 29, 0), + gsSPVertex(&tmpr4_v[155], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), + gsSP2Triangles(3, 6, 4, 0, 7, 8, 9, 0), + gsSP2Triangles(7, 10, 8, 0, 10, 5, 8, 0), + gsSP2Triangles(11, 12, 13, 0, 14, 15, 16, 0), + gsSP2Triangles(17, 1, 0, 0, 18, 2, 19, 0), + gsSP2Triangles(20, 21, 22, 0, 23, 1, 17, 0), + gsSP2Triangles(24, 25, 26, 0, 18, 26, 27, 0), + gsSP2Triangles(28, 18, 27, 0, 29, 18, 28, 0), + gsSP2Triangles(30, 18, 29, 0, 2, 18, 30, 0), + gsSP2Triangles(0, 2, 31, 0, 31, 2, 30, 0), + gsSPVertex(&tmpr4_v[187], 5, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 3, 1, 0), + gsSP1Triangle(1, 4, 2, 0), + gsDPPipeSync(), + gsDPLoadTLUT_pal16(15, earth_pal_dummy), + gsDPLoadTextureBlock_4b(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_CLAMP, 6, 6, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&tmpr4_v[192], 13, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 0, 4, 0), + gsSP2Triangles(5, 6, 7, 0, 6, 3, 8, 0), + gsSP2Triangles(9, 5, 10, 0, 11, 9, 12, 0), + gsSPTexture(65535, 65535, 0, 0, G_ON), + gsDPPipeSync(), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 200, 184, 144, 255), + gsDPSetEnvColor(0x90, 0x80, 0x60, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPPipeSync(), + gsDPSetTextureLUT(G_TT_NONE), + gsDPLoadTextureBlock_4b(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&tmpr4_v[205], 13, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 11, 9, 0), + gsSP1Triangle(9, 12, 10, 0), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/tmpr4/tmpr4_evw_anime.c b/src/data/field/bg/acre/tmpr4/tmpr4_evw_anime.c new file mode 100644 index 00000000..e5853b72 --- /dev/null +++ b/src/data/field/bg/acre/tmpr4/tmpr4_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL tmpr4_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA tmpr4_evw_anime = { + 1, + EVW_ANIME_TYPE_SCROLL2 + tmpr4_evw_anime_1 +}; diff --git a/tools/assetinclude_gen.py b/tools/assetinclude_gen.py new file mode 100644 index 00000000..c8cc0bb9 --- /dev/null +++ b/tools/assetinclude_gen.py @@ -0,0 +1,243 @@ +import os +import re +import argparse +import typing +from ruamel.yaml import YAML +from ruamel.yaml import CommentedMap +from ruamel.yaml import CommentedSeq +from ruamel.yaml import scalarint +import yaml +import ntpath + +#region Types +class SymbolInfo: + symbol_name: str = None + asset_path: str = None + start_address: int = 0 + end_address: int = 0 + + def __init__(self, name:str, asset_path:str, start:int, size:int) -> None: + self.symbol_name = name + self.asset_path = asset_path + self.start_address = start + self.end_address = start + size + + def get_address_range(self)->typing.Tuple[int, int]: + return self.start_address, self.end_address + +class Address_Sort_Entry: + key : str = None + value: CommentedMap = None + starting_address: int = None + + def __init__(self, entry_key: str, entry_value: CommentedMap, entry_starting_address: int) -> None: + self.key = entry_key + self.value = entry_value + self.starting_address = entry_starting_address +#endregion + +# Pattern to match '#include "assets/[...].inc"' +pattern_format = r'\s*#include "assets/([^"]*/)([^"]+)\.inc"\s*' +asset_include_pattern = re.compile(pattern_format) + +#region Sorting +def sort_by_starting_address(data: CommentedMap, address_sort_keys: typing.List[str])->CommentedMap: + if len(data) <= 1: + return data + + ordered_entries : list[Address_Sort_Entry] = [] + for key in data.keys(): + entry = data[key] + starting_address = 0 + + for address_key in address_sort_keys: + if address_key not in entry: + continue + + # Ensure starting_address is an integer + if isinstance(entry[address_key], int): + starting_address = entry[address_key] + elif isinstance(entry[address_key], CommentedSeq): + starting_address = entry[address_key][0] + else: + print('Address key %s is not an int or CommentedSeq! type: %s value: %s' % (address_key, type(entry[address_key]), entry[address_key])) + starting_address = 0 + break + + ordered_entries.append(Address_Sort_Entry(key, entry, starting_address)) + + ordered_entries.sort(key=lambda entry: entry.starting_address) + + ordered_map = CommentedMap() + for ordered_entry in ordered_entries: + ordered_map[ordered_entry.key] = ordered_entry.value + if ordered_entry.key not in data.ca.items: + continue + + ordered_map.ca.items[ordered_entry.key] = data.ca.items[ordered_entry.key] + + return ordered_map +#endregion + +def load_symbols_yaml(): + # Load the YAML file using CSafeLoader for best perf + with open("config/symbols.yml", "r", encoding="utf-8", newline="\n") as file_reader: + data = yaml.load(file_reader, Loader=yaml.CSafeLoader) + + # Flatten the data by combining all sections + all_symbols = {} + for section in data.values(): + all_symbols.update(section) + + # Convert addresses to a sorted list of tuples (address, symbol_name) + return sorted((addr, name) for addr, name in all_symbols.items()) + +def search_for_symbol(symbol_name, sorted_symbols): + # Search for the symbol + for i, (addr, name) in enumerate(sorted_symbols): + if name == symbol_name: + current_address = addr + next_address = sorted_symbols[i + 1][0] if i + 1 < len(sorted_symbols) else None + return current_address, next_address if next_address else None + + # If the symbol is not found + return None, None + +sorted_symbols = None +def search_for_assetrip_includes(src_file: str)->typing.List[SymbolInfo]: + global sorted_symbols # make sorted_symbols accessible for writing + symbols_for_tu: typing.List[SymbolInfo] = [] + + with open(src_file, "r", encoding="utf-8", newline="\n") as file_reader: + while True: + line = file_reader.readline() + if not line: + break + + # Check if the line matches an assetrip include + match = asset_include_pattern.match(line) + if not match: + continue + + # It is a match + path = match.group(1) + name = match.group(2) + # print(path, name) + + # Load symbols if not already done + if sorted_symbols == None: + sorted_symbols = load_symbols_yaml() + + sym_beg, sym_end = search_for_symbol(name, sorted_symbols) + size = sym_end - sym_beg + symbols_for_tu.append(SymbolInfo(name, path, sym_beg, size)) + # print(hex(sym_beg), hex(sym_end), hex(size)) + return symbols_for_tu + + +#region Asset Slices Config File +def update_asset_slice_config(data: CommentedMap, tu_name: str, symbols_for_tu: typing.List[SymbolInfo]): + binary_commented_map : CommentedMap = None + binary_commented_map_key: str = "config/rel.yml" # TODO: do we want to support assets in the dol? + binary_commented_map = data[binary_commented_map_key] + + insert_tu_name_comment = True + for asset_symbol in symbols_for_tu: + asset_type: str = None + if asset_symbol.symbol_name.endswith('_pal'): + asset_type = "pal16" + elif asset_symbol.symbol_name.endswith(('_vtx', '_v')): + asset_type = "vtx" + elif not asset_symbol.symbol_name.endswith(('_txt', '_tex')): + print(f"What is the asset type? {asset_symbol.symbol_name} (optional)") + asset_type = input() + + if not asset_type: + asset_type = None + + asset_commented_map : CommentedMap = None + asset_key = None + if asset_symbol.asset_path != None: + asset_key = f"{asset_symbol.asset_path}{asset_symbol.symbol_name}" + else: + asset_key = asset_symbol.symbol_name + + if binary_commented_map.__contains__(asset_key): + asset_commented_map = binary_commented_map[asset_key] + insert_tu_name_comment = False + else: + asset_commented_map = CommentedMap() + binary_commented_map.insert(len(binary_commented_map), asset_key, asset_commented_map) + + if insert_tu_name_comment: + insert_tu_name_comment = False + binary_commented_map.yaml_set_comment_before_after_key(key=asset_key, indent=2, before=tu_name) + + # Add in the address range + address_commented_seq: CommentedSeq = None + if asset_commented_map.__contains__("addrs"): + # Re-use the same commented section + address_commented_seq = asset_commented_map["addrs"] + address_commented_seq.clear() + else: + address_commented_seq: CommentedSeq = CommentedSeq() + + # Assign to the slice section + asset_commented_map["addrs"] = address_commented_seq + + # Add in the start and end address + start_address, end_address = asset_symbol.get_address_range() + address_commented_seq.fa.set_flow_style() + address_commented_seq.append(scalarint.HexCapsInt(start_address)) + address_commented_seq.append(scalarint.HexCapsInt(end_address)) + + # Add in the asset type + if not asset_type or asset_type is None: + # Type not specified + if asset_commented_map.__contains__("type"): + # Using a previous entry where the type was used, so delete it + asset_commented_map.__delitem__("type") + continue + + asset_commented_map["type"] = asset_type + +def process_file_or_directory(data: CommentedMap, src_file: str): + if os.path.isdir(src_file): + # List all files and directories in the current directory + for entry in os.listdir(src_file): + full_path = os.path.join(src_file, entry) + # Recursively call the function for each entry + process_file_or_directory(data, full_path) + else: + # Process the file + src_filename: str = ntpath.basename(src_file) + include_symbols: typing.List[SymbolInfo] = search_for_assetrip_includes(src_file) + update_asset_slice_config(data, src_filename, include_symbols) +#endregion + +#region Main +def main(): + parser = argparse.ArgumentParser(prog="Asset Include/Rip Generation", description="Adds the corresponding assetrip addresses assets YAML config file") + parser.add_argument("src_file", nargs="?", help="Name of the translation unit to search for assets") + args = parser.parse_args() + + src_file: str = args.src_file + yaml = YAML(typ="rt") + data: CommentedMap = None + with open("config/assets.yml", "r", encoding="utf-8", newline="\n") as file_reader: + data = yaml.load(file_reader) + + process_file_or_directory(data, src_file) + + # Sort by starting address and replace + binary_commented_map_key: str = "config/rel.yml" # TODO: do we want to support assets in the dol? + binary_commented_map = data[binary_commented_map_key] + data[binary_commented_map_key] = sort_by_starting_address(binary_commented_map, ["addrs"]) + + # Write out to file + with open("config/assets.yml", "w", encoding="utf-8", newline="\n") as file_writer: + yaml.dump(data, file_writer) + +if __name__ == "__main__": + main() +#endregion diff --git a/tools/tu_config.py b/tools/tu_config.py index f4002776..ee518491 100644 --- a/tools/tu_config.py +++ b/tools/tu_config.py @@ -177,6 +177,39 @@ def gather_symbols_for_section(address_offset: int, file_reader:TextIOWrapper, s symbol.end_address = next_match_start_address section.symbols.append(symbol) +def find_beginning_of_tu(file)->str: + # Move the file pointer to the current line's beginning + file.seek(0, os.SEEK_CUR) + + position = file.tell() + line = '' + + while position >= 0: + file.seek(position) + char = file.read(1) + + if char == '\n': + # When a line break is found, check if the current line matches the pattern + line = line[::-1] # reverse the line since it's backwards + match = general_symbol_pattern.match(line) + if match != None and match.group(5) in prioritized_addresses: + return line.strip() + line = '' + else: + line += char + + position -= 1 + + # Check the first line in case the loop ends without a newline at the start + line = line[::-1] # reverse the line since it's backwards + match = general_symbol_pattern.match(line) + if match != None and match.group(5) in prioritized_addresses: + return line.strip() + + # If no matching line is found, return None + print('None') + return None + def gather_tu_symbols(tu_name: str, map_path: str)->typing.Dict[str, SliceInfo]: gathered_symbols: typing.Dict[str, SliceInfo] = {} tu_regex = re.compile(specific_tu_pattern_format.format(tu_name = tu_name)) @@ -205,6 +238,92 @@ def gather_tu_symbols(tu_name: str, map_path: str)->typing.Dict[str, SliceInfo]: gather_symbols_for_section(offset, file_reader, slice_info, match) return gathered_symbols + +def gather_symbols_for_section_from_member(address_offset: int, file_reader:TextIOWrapper, slice_info: SliceInfo, starting_match: Match): + section_tu_name = starting_match.group(6) + section_symbol = get_symbol_from_map_match(starting_match, address_offset) + section = SliceSection(section_symbol) + slice_info.sections.append(section) + + # Keep reading until the end of the section has been reached + line: str = None + while True: + line = file_reader.readline() + if not line: + return + if "entry of .data" in line: + continue + break + + next_match: Match = general_symbol_pattern.match(line) + while True: + # Check if the next match belongs to this group or not + curr_match = next_match + if not curr_match: + break + + curr_match_tu_name = curr_match.group(6) + if curr_match_tu_name != section_tu_name: + break + + curr_match_symbol_name = curr_match.group(5) + if curr_match_symbol_name in address_offset_map: + break # break here, we've hit another TU + + # Make symbol for current match + symbol = get_symbol_from_map_match(curr_match, address_offset) + + # Check the next match to get a more accurate ending address + next_line = file_reader.readline() + if not next_line: + # Eof reached. Just add as is + section.symbols.append(symbol) + + # Match against the next line + next_match = general_symbol_pattern.match(next_line) + if not next_match: + # Non matching line + section.symbols.append(symbol) + + # Use start address as the end boundary for the slice + next_match_start_address = int(next_match.group(1), 16) + address_offset + symbol.end_address = next_match_start_address + section.symbols.append(symbol) + +def gather_tu_symbols_from_member(member_name: str, map_path: str)->typing.Dict[str, SliceInfo]: + gathered_symbols: typing.Dict[str, SliceInfo] = {} + + with open(map_path, "r", encoding="utf-8", newline="\n") as file_reader: + while True: + line = file_reader.readline() + if not line: + break + + # Check if the line matches the TU name + match = general_symbol_pattern.match(line) + if not match or match.group(5) != member_name: + continue + + print('matched! ' + line) + line = find_beginning_of_tu(file_reader) + print(line) + + if not line: + continue + + match = general_symbol_pattern.match(line) + file_reader.readline() + # It is a match + slice_name = match.group(5) + + # Add to dictionary + offset = address_offset_map[slice_name] + slice_info = SliceInfo() + gathered_symbols[slice_name] = slice_info + + gather_symbols_for_section_from_member(offset, file_reader, slice_info, match) + + return gathered_symbols #endregion #region Asset Slices Config File @@ -352,13 +471,11 @@ def main(): parser.add_argument("-map", "--symbol-map", dest="symbol_map", help="Path to the symbol map file used for reference", action="store") parser.add_argument("-binary", "--binary-slices-file", dest="binary_slices_file", help="Path to the binary slices file to write to", action="store") parser.add_argument("-asset", "--asset-slices-file", dest="asset_slices_file", help="Path to the asset slices file to write to", action="store") + parser.add_argument("-member", "--from-member", dest="from_member", help="When set, search for TU entries via a member's name", action="store_true") args = parser.parse_args() - - # Make sure the translation unit name ends with .o - tu_name = args.tu_name - if tu_name[-2:] != ".o": - tu_name = tu_name + ".o" + tu_name = args.tu_name + symbol_map_path = args.symbol_map if not symbol_map_path: symbol_map_path = default_map_path @@ -371,12 +488,20 @@ def main(): if not asset_slices_file: asset_slices_file = default_asset_slice_file_path - # Get the symbols for the TU - symbols_for_tu = gather_tu_symbols(tu_name, symbol_map_path) + if not args.from_member: + # Make sure the translation unit name ends with .o + if tu_name[-2:] != ".o": + tu_name = tu_name + ".o" - # Make a call to update the binary file - update_binary_slice_config(tu_name, binary_slices_file, symbols_for_tu) - update_asset_slice_config(tu_name, binary_slices_file, asset_slices_file, symbols_for_tu) + # Get the symbols for the TU + symbols_for_tu = gather_tu_symbols(tu_name, symbol_map_path) + + # Make a call to update the binary file + update_binary_slice_config(tu_name, binary_slices_file, symbols_for_tu) + update_asset_slice_config(tu_name, binary_slices_file, asset_slices_file, symbols_for_tu) + else: + symbols_for_tu = gather_tu_symbols_from_member(tu_name, symbol_map_path) + update_binary_slice_config(tu_name, binary_slices_file, symbols_for_tu) if __name__ == "__main__": main() From 365e2ec57e15fe985bf1c647593e00f1dd2a3af7 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Sun, 11 Aug 2024 08:21:27 -0400 Subject: [PATCH 109/234] Implement & link all evw_anime files --- config/rel_slices.yml | 298 ++++++++++++++++++ .../grd_player_select_evw_anime.c | 10 +- .../grd_s_c1_r1_1/grd_s_c1_r1_1_evw_anime.c | 6 +- .../grd_s_c1_r1_2/grd_s_c1_r1_2_evw_anime.c | 6 +- .../grd_s_c1_r1_3/grd_s_c1_r1_3_evw_anime.c | 6 +- .../grd_s_c1_r2_1/grd_s_c1_r2_1_evw_anime.c | 6 +- .../grd_s_c1_r2_2/grd_s_c1_r2_2_evw_anime.c | 6 +- .../grd_s_c1_r2_3/grd_s_c1_r2_3_evw_anime.c | 6 +- .../grd_s_c1_r3_1/grd_s_c1_r3_1_evw_anime.c | 6 +- .../grd_s_c1_r3_2/grd_s_c1_r3_2_evw_anime.c | 6 +- .../grd_s_c1_r3_3/grd_s_c1_r3_3_evw_anime.c | 6 +- .../bg/acre/grd_s_c2_3/grd_s_c2_3_evw_anime.c | 6 +- .../grd_s_c2_r1_1/grd_s_c2_r1_1_evw_anime.c | 6 +- .../grd_s_c2_r1_2/grd_s_c2_r1_2_evw_anime.c | 6 +- .../grd_s_c2_r2_1/grd_s_c2_r2_1_evw_anime.c | 6 +- .../grd_s_c2_r2_2/grd_s_c2_r2_2_evw_anime.c | 6 +- .../bg/acre/grd_s_c3_2/grd_s_c3_2_evw_anime.c | 6 +- .../grd_s_c3_r1_1/grd_s_c3_r1_1_evw_anime.c | 6 +- .../grd_s_c3_r1_2/grd_s_c3_r1_2_evw_anime.c | 6 +- .../grd_s_c3_r2_1/grd_s_c3_r2_1_evw_anime.c | 6 +- .../grd_s_c3_r2_2/grd_s_c3_r2_2_evw_anime.c | 6 +- .../grd_s_c3_s_1/grd_s_c3_s_1_evw_anime.c | 6 +- .../grd_s_c4_r1_1/grd_s_c4_r1_1_evw_anime.c | 6 +- .../grd_s_c4_r1_2/grd_s_c4_r1_2_evw_anime.c | 6 +- .../grd_s_c4_r2_1/grd_s_c4_r2_1_evw_anime.c | 6 +- .../grd_s_c4_r2_2/grd_s_c4_r2_2_evw_anime.c | 6 +- .../grd_s_c4_r3_1/grd_s_c4_r3_1_evw_anime.c | 6 +- .../grd_s_c4_r3_2/grd_s_c4_r3_2_evw_anime.c | 6 +- .../grd_s_c5_r1_1/grd_s_c5_r1_1_evw_anime.c | 6 +- .../grd_s_c5_r1_2/grd_s_c5_r1_2_evw_anime.c | 6 +- .../grd_s_c5_r2_1/grd_s_c5_r2_1_evw_anime.c | 6 +- .../grd_s_c5_r2_2/grd_s_c5_r2_2_evw_anime.c | 6 +- .../grd_s_c5_r3_1/grd_s_c5_r3_1_evw_anime.c | 6 +- .../grd_s_c5_r3_2/grd_s_c5_r3_2_evw_anime.c | 6 +- .../grd_s_c6_r1_1/grd_s_c6_r1_1_evw_anime.c | 6 +- .../grd_s_c6_r1_2/grd_s_c6_r1_2_evw_anime.c | 6 +- .../grd_s_c6_r3_1/grd_s_c6_r3_1_evw_anime.c | 6 +- .../bg/acre/grd_s_c7_3/grd_s_c7_3_evw_anime.c | 6 +- .../grd_s_c7_r1_1/grd_s_c7_r1_1_evw_anime.c | 6 +- .../grd_s_c7_r1_2/grd_s_c7_r1_2_evw_anime.c | 6 +- .../grd_s_c7_r3_1/grd_s_c7_r3_1_evw_anime.c | 6 +- .../grd_s_c7_r3_2/grd_s_c7_r3_2_evw_anime.c | 6 +- .../grd_s_e1_r1_1/grd_s_e1_r1_1_evw_anime.c | 6 +- .../bg/acre/grd_s_f_4/grd_s_f_4_evw_anime.c | 6 +- .../bg/acre/grd_s_f_5/grd_s_f_5_evw_anime.c | 6 +- .../bg/acre/grd_s_f_6/grd_s_f_6_evw_anime.c | 6 +- .../grd_s_f_ko_3/grd_s_f_ko_3_evw_anime.c | 6 +- .../grd_s_f_mu_3/grd_s_f_mu_3_evw_anime.c | 6 +- .../grd_s_m_r1_1/grd_s_m_r1_1_evw_anime.c | 9 +- .../grd_s_m_r1_2/grd_s_m_r1_2_evw_anime.c | 9 +- .../grd_s_m_r1_3/grd_s_m_r1_3_evw_anime.c | 9 +- .../grd_s_m_r1_4/grd_s_m_r1_4_evw_anime.c | 9 +- .../grd_s_m_r1_5/grd_s_m_r1_5_evw_anime.c | 9 +- .../grd_s_m_r1_b_1/grd_s_m_r1_b_1_evw_anime.c | 9 +- .../grd_s_m_r1_b_2/grd_s_m_r1_b_2_evw_anime.c | 9 +- .../grd_s_m_r1_b_3/grd_s_m_r1_b_3_evw_anime.c | 9 +- .../grd_s_m_ta_1/grd_s_m_ta_1_evw_anime.c | 9 +- .../grd_s_m_ta_2/grd_s_m_ta_2_evw_anime.c | 9 +- .../grd_s_m_ta_3/grd_s_m_ta_3_evw_anime.c | 9 +- .../grd_s_m_wf_1/grd_s_m_wf_1_evw_anime.c | 15 +- .../grd_s_m_wf_2/grd_s_m_wf_2_evw_anime.c | 15 +- .../grd_s_m_wf_3/grd_s_m_wf_3_evw_anime.c | 15 +- .../bg/acre/grd_s_o_1/grd_s_o_1_evw_anime.c | 15 +- .../bg/acre/grd_s_o_10/grd_s_o_10_evw_anime.c | 15 +- .../bg/acre/grd_s_o_2/grd_s_o_2_evw_anime.c | 15 +- .../bg/acre/grd_s_o_3/grd_s_o_3_evw_anime.c | 15 +- .../bg/acre/grd_s_o_4/grd_s_o_4_evw_anime.c | 15 +- .../bg/acre/grd_s_o_5/grd_s_o_5_evw_anime.c | 15 +- .../bg/acre/grd_s_o_6/grd_s_o_6_evw_anime.c | 15 +- .../bg/acre/grd_s_o_7/grd_s_o_7_evw_anime.c | 15 +- .../bg/acre/grd_s_o_8/grd_s_o_8_evw_anime.c | 15 +- .../bg/acre/grd_s_o_9/grd_s_o_9_evw_anime.c | 15 +- .../acre/grd_s_o_i_2/grd_s_o_i_2_evw_anime.c | 15 +- .../grd_s_o_r1_1/grd_s_o_r1_1_evw_anime.c | 15 +- .../grd_s_o_r1_2/grd_s_o_r1_2_evw_anime.c | 15 +- .../grd_s_o_r1_3/grd_s_o_r1_3_evw_anime.c | 15 +- .../grd_s_o_r1_4/grd_s_o_r1_4_evw_anime.c | 15 +- .../grd_s_o_r1_5/grd_s_o_r1_5_evw_anime.c | 15 +- .../grd_s_o_r1_b_1/grd_s_o_r1_b_1_evw_anime.c | 15 +- .../grd_s_o_r1_b_2/grd_s_o_r1_b_2_evw_anime.c | 15 +- .../grd_s_o_r1_b_3/grd_s_o_r1_b_3_evw_anime.c | 15 +- .../grd_s_o_ta_1/grd_s_o_ta_1_evw_anime.c | 15 +- .../grd_s_o_ta_2/grd_s_o_ta_2_evw_anime.c | 15 +- .../grd_s_o_ta_3/grd_s_o_ta_3_evw_anime.c | 15 +- .../grd_s_o_wf_1/grd_s_o_wf_1_evw_anime.c | 15 +- .../grd_s_o_wf_2/grd_s_o_wf_2_evw_anime.c | 15 +- .../grd_s_o_wf_3/grd_s_o_wf_3_evw_anime.c | 15 +- .../bg/acre/grd_s_r1_1/grd_s_r1_1_evw_anime.c | 6 +- .../bg/acre/grd_s_r1_2/grd_s_r1_2_evw_anime.c | 6 +- .../bg/acre/grd_s_r1_3/grd_s_r1_3_evw_anime.c | 6 +- .../bg/acre/grd_s_r1_4/grd_s_r1_4_evw_anime.c | 6 +- .../grd_s_r1_b_1/grd_s_r1_b_1_evw_anime.c | 6 +- .../grd_s_r1_b_2/grd_s_r1_b_2_evw_anime.c | 6 +- .../grd_s_r1_b_3/grd_s_r1_b_3_evw_anime.c | 6 +- .../grd_s_r1_p_1/grd_s_r1_p_1_evw_anime.c | 6 +- .../bg/acre/grd_s_r2_1/grd_s_r2_1_evw_anime.c | 6 +- .../bg/acre/grd_s_r2_2/grd_s_r2_2_evw_anime.c | 6 +- .../bg/acre/grd_s_r2_3/grd_s_r2_3_evw_anime.c | 6 +- .../bg/acre/grd_s_r2_4/grd_s_r2_4_evw_anime.c | 6 +- .../grd_s_r2_b_1/grd_s_r2_b_1_evw_anime.c | 6 +- .../grd_s_r2_b_2/grd_s_r2_b_2_evw_anime.c | 6 +- .../grd_s_r2_b_3/grd_s_r2_b_3_evw_anime.c | 6 +- .../grd_s_r2_p_1/grd_s_r2_p_1_evw_anime.c | 6 +- .../bg/acre/grd_s_r3_1/grd_s_r3_1_evw_anime.c | 6 +- .../bg/acre/grd_s_r3_2/grd_s_r3_2_evw_anime.c | 6 +- .../bg/acre/grd_s_r3_3/grd_s_r3_3_evw_anime.c | 6 +- .../bg/acre/grd_s_r3_4/grd_s_r3_4_evw_anime.c | 6 +- .../grd_s_r3_b_1/grd_s_r3_b_1_evw_anime.c | 6 +- .../grd_s_r3_b_2/grd_s_r3_b_2_evw_anime.c | 6 +- .../grd_s_r3_b_3/grd_s_r3_b_3_evw_anime.c | 6 +- .../grd_s_r3_p_1/grd_s_r3_p_1_evw_anime.c | 6 +- .../bg/acre/grd_s_r4_1/grd_s_r4_1_evw_anime.c | 6 +- .../bg/acre/grd_s_r4_2/grd_s_r4_2_evw_anime.c | 6 +- .../bg/acre/grd_s_r4_3/grd_s_r4_3_evw_anime.c | 6 +- .../grd_s_r4_b_1/grd_s_r4_b_1_evw_anime.c | 6 +- .../grd_s_r4_b_2/grd_s_r4_b_2_evw_anime.c | 6 +- .../grd_s_r4_p_1/grd_s_r4_p_1_evw_anime.c | 6 +- .../bg/acre/grd_s_r5_1/grd_s_r5_1_evw_anime.c | 6 +- .../bg/acre/grd_s_r5_2/grd_s_r5_2_evw_anime.c | 6 +- .../bg/acre/grd_s_r5_3/grd_s_r5_3_evw_anime.c | 6 +- .../grd_s_r5_b_1/grd_s_r5_b_1_evw_anime.c | 6 +- .../grd_s_r5_b_2/grd_s_r5_b_2_evw_anime.c | 6 +- .../grd_s_r5_p_1/grd_s_r5_p_1_evw_anime.c | 6 +- .../bg/acre/grd_s_r6_1/grd_s_r6_1_evw_anime.c | 6 +- .../bg/acre/grd_s_r6_2/grd_s_r6_2_evw_anime.c | 6 +- .../bg/acre/grd_s_r6_3/grd_s_r6_3_evw_anime.c | 6 +- .../grd_s_r6_b_1/grd_s_r6_b_1_evw_anime.c | 6 +- .../grd_s_r6_b_2/grd_s_r6_b_2_evw_anime.c | 6 +- .../grd_s_r6_p_1/grd_s_r6_p_1_evw_anime.c | 6 +- .../bg/acre/grd_s_r7_1/grd_s_r7_1_evw_anime.c | 6 +- .../bg/acre/grd_s_r7_2/grd_s_r7_2_evw_anime.c | 6 +- .../bg/acre/grd_s_r7_3/grd_s_r7_3_evw_anime.c | 6 +- .../grd_s_r7_b_1/grd_s_r7_b_1_evw_anime.c | 6 +- .../grd_s_r7_b_2/grd_s_r7_b_2_evw_anime.c | 6 +- .../grd_s_r7_p_1/grd_s_r7_p_1_evw_anime.c | 6 +- .../bg/acre/grd_s_t_1/grd_s_t_1_evw_anime.c | 6 +- .../bg/acre/grd_s_t_4/grd_s_t_4_evw_anime.c | 6 +- .../bg/acre/grd_s_t_5/grd_s_t_5_evw_anime.c | 6 +- .../grd_s_t_po_3/grd_s_t_po_3_evw_anime.c | 6 +- .../grd_s_t_r1_1/grd_s_t_r1_1_evw_anime.c | 6 +- .../grd_s_t_r1_2/grd_s_t_r1_2_evw_anime.c | 6 +- .../grd_s_t_r1_3/grd_s_t_r1_3_evw_anime.c | 6 +- .../grd_s_t_r1_4/grd_s_t_r1_4_evw_anime.c | 6 +- .../grd_s_t_r1_5/grd_s_t_r1_5_evw_anime.c | 6 +- .../grd_s_t_sh_2/grd_s_t_sh_2_evw_anime.c | 6 +- .../bg/acre/rom_uranai/rom_uranai_evw_anime.c | 9 +- src/data/field/bg/acre/tmpr/tmpr_evw_anime.c | 6 +- .../field/bg/acre/tmpr2/tmpr2_evw_anime.c | 6 +- .../field/bg/acre/tmpr3/tmpr3_evw_anime.c | 15 +- .../field/bg/acre/tmpr4/tmpr4_evw_anime.c | 15 +- 150 files changed, 905 insertions(+), 597 deletions(-) diff --git a/config/rel_slices.yml b/config/rel_slices.yml index 2d899f2b..03d4d334 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -1967,18 +1967,26 @@ data/field/bg/acre/grd_post_office/grd_post_office.c: .data: [0x80C5DBA0, 0x80C63408] data/field/bg/acre/tmp4/tmp4.c: .data: [0x80C63408, 0x80C64698] +data/field/bg/acre/tmpr4/tmpr4_evw_anime.c: + .data: [0x80C64698, 0x80C646D8] data/field/bg/acre/tmpr4/tmpr4.c: .data: [0x80C646D8, 0x80C66278] data/field/bg/acre/tmp3/tmp3.c: .data: [0x80C66278, 0x80C677F8] +data/field/bg/acre/tmpr3/tmpr3_evw_anime.c: + .data: [0x80C677F8, 0x80C67838] data/field/bg/acre/tmpr3/tmpr3.c: .data: [0x80C67838, 0x80C69338] data/field/bg/acre/tmp/tmp.c: .data: [0x80C69338, 0x80C695E0] +data/field/bg/acre/tmpr/tmpr_evw_anime.c: + .data: [0x80C695E0, 0x80C695F0] data/field/bg/acre/tmpr/tmpr.c: .data: [0x80C695F0, 0x80C6A8C8] data/field/bg/acre/tmp2/tmp2.c: .data: [0x80C6A8C8, 0x80C6CE68] +data/field/bg/acre/tmpr2/tmpr2_evw_anime.c: + .data: [0x80C6CE68, 0x80C6CE78] data/field/bg/acre/tmpr2/tmpr2.c: .data: [0x80C6CE78, 0x80C6DCC0] data/field/bg/bush_pal.c: @@ -1997,22 +2005,40 @@ data/field/bg/acre/grd_s_c1_4/grd_s_c1_4.c: .data: [0x80CEA598, 0x80CEB868] data/field/bg/acre/grd_s_c1_5/grd_s_c1_5.c: .data: [0x80CEB868, 0x80CEC738] +data/field/bg/acre/grd_s_c1_r1_1/grd_s_c1_r1_1_evw_anime.c: + .data: [0x80CEC738, 0x80CEC748] data/field/bg/acre/grd_s_c1_r1_1/grd_s_c1_r1_1.c: .data: [0x80CEC748, 0x80CEDCF0] +data/field/bg/acre/grd_s_c1_r1_2/grd_s_c1_r1_2_evw_anime.c: + .data: [0x80CEDCF0, 0x80CEDD00] data/field/bg/acre/grd_s_c1_r1_2/grd_s_c1_r1_2.c: .data: [0x80CEDD00, 0x80CEF128] +data/field/bg/acre/grd_s_c1_r1_3/grd_s_c1_r1_3_evw_anime.c: + .data: [0x80CEF128, 0x80CEF138] data/field/bg/acre/grd_s_c1_r1_3/grd_s_c1_r1_3.c: .data: [0x80CEF138, 0x80CF0538] +data/field/bg/acre/grd_s_c1_r2_1/grd_s_c1_r2_1_evw_anime.c: + .data: [0x80CF0538, 0x80CF0548] data/field/bg/acre/grd_s_c1_r2_1/grd_s_c1_r2_1.c: .data: [0x80CF0548, 0x80CF1960] +data/field/bg/acre/grd_s_c1_r2_2/grd_s_c1_r2_2_evw_anime.c: + .data: [0x80CF1960, 0x80CF1970] data/field/bg/acre/grd_s_c1_r2_2/grd_s_c1_r2_2.c: .data: [0x80CF1970, 0x80CF2DC8] +data/field/bg/acre/grd_s_c1_r2_3/grd_s_c1_r2_3_evw_anime.c: + .data: [0x80CF2DC8, 0x80CF2DD8] data/field/bg/acre/grd_s_c1_r2_3/grd_s_c1_r2_3.c: .data: [0x80CF2DD8, 0x80CF4440] +data/field/bg/acre/grd_s_c1_r3_1/grd_s_c1_r3_1_evw_anime.c: + .data: [0x80CF4440, 0x80CF4450] data/field/bg/acre/grd_s_c1_r3_1/grd_s_c1_r3_1.c: .data: [0x80CF4450, 0x80CF5508] +data/field/bg/acre/grd_s_c1_r3_2/grd_s_c1_r3_2_evw_anime.c: + .data: [0x80CF5508, 0x80CF5518] data/field/bg/acre/grd_s_c1_r3_2/grd_s_c1_r3_2.c: .data: [0x80CF5518, 0x80CF6810] +data/field/bg/acre/grd_s_c1_r3_3/grd_s_c1_r3_3_evw_anime.c: + .data: [0x80CF6810, 0x80CF6820] data/field/bg/acre/grd_s_c1_r3_3/grd_s_c1_r3_3.c: .data: [0x80CF6820, 0x80CF7C58] data/field/bg/acre/grd_s_c1_s_1/grd_s_c1_s_1.c: @@ -2027,14 +2053,24 @@ data/field/bg/acre/grd_s_c2_1/grd_s_c2_1.c: .data: [0x80CFC1B0, 0x80CFD1D0] data/field/bg/acre/grd_s_c2_2/grd_s_c2_2.c: .data: [0x80CFD1D0, 0x80CFE220] +data/field/bg/acre/grd_s_c2_3/grd_s_c2_3_evw_anime.c: + .data: [0x80CFE220, 0x80CFE230] data/field/bg/acre/grd_s_c2_3/grd_s_c2_3.c: .data: [0x80CFE230, 0x80CFF5A8] +data/field/bg/acre/grd_s_c2_r1_1/grd_s_c2_r1_1_evw_anime.c: + .data: [0x80CFF5A8, 0x80CFF5B8] data/field/bg/acre/grd_s_c2_r1_1/grd_s_c2_r1_1.c: .data: [0x80CFF5B8, 0x80D009A0] +data/field/bg/acre/grd_s_c2_r1_2/grd_s_c2_r1_2_evw_anime.c: + .data: [0x80D009A0, 0x80D009B0] data/field/bg/acre/grd_s_c2_r1_2/grd_s_c2_r1_2.c: .data: [0x80D009B0, 0x80D01E70] +data/field/bg/acre/grd_s_c2_r2_1/grd_s_c2_r2_1_evw_anime.c: + .data: [0x80D01E70, 0x80D01E80] data/field/bg/acre/grd_s_c2_r2_1/grd_s_c2_r2_1.c: .data: [0x80D01E80, 0x80D03140] +data/field/bg/acre/grd_s_c2_r2_2/grd_s_c2_r2_2_evw_anime.c: + .data: [0x80D03140, 0x80D03150] data/field/bg/acre/grd_s_c2_r2_2/grd_s_c2_r2_2.c: .data: [0x80D03150, 0x80D04680] data/field/bg/acre/grd_s_c2_s_1/grd_s_c2_s_1.c: @@ -2045,18 +2081,30 @@ data/field/bg/acre/grd_s_c2_s_3/grd_s_c2_s_3.c: .data: [0x80D06AF0, 0x80D07AF0] data/field/bg/acre/grd_s_c3_1/grd_s_c3_1.c: .data: [0x80D07AF0, 0x80D08C80] +data/field/bg/acre/grd_s_c3_2/grd_s_c3_2_evw_anime.c: + .data: [0x80D08C80, 0x80D08C90] data/field/bg/acre/grd_s_c3_2/grd_s_c3_2.c: .data: [0x80D08C90, 0x80D09D80] data/field/bg/acre/grd_s_c3_3/grd_s_c3_3.c: .data: [0x80D09D80, 0x80D0ACF0] +data/field/bg/acre/grd_s_c3_r1_1/grd_s_c3_r1_1_evw_anime.c: + .data: [0x80D0ACF0, 0x80D0AD00] data/field/bg/acre/grd_s_c3_r1_1/grd_s_c3_r1_1.c: .data: [0x80D0AD00, 0x80D0BE48] +data/field/bg/acre/grd_s_c3_r1_2/grd_s_c3_r1_2_evw_anime.c: + .data: [0x80D0BE48, 0x80D0BE58] data/field/bg/acre/grd_s_c3_r1_2/grd_s_c3_r1_2.c: .data: [0x80D0BE58, 0x80D0D148] +data/field/bg/acre/grd_s_c3_r2_1/grd_s_c3_r2_1_evw_anime.c: + .data: [0x80D0D148, 0x80D0D158] data/field/bg/acre/grd_s_c3_r2_1/grd_s_c3_r2_1.c: .data: [0x80D0D158, 0x80D0E7C8] +data/field/bg/acre/grd_s_c3_r2_2/grd_s_c3_r2_2_evw_anime.c: + .data: [0x80D0E7C8, 0x80D0E7D8] data/field/bg/acre/grd_s_c3_r2_2/grd_s_c3_r2_2.c: .data: [0x80D0E7D8, 0x80D0FE50] +data/field/bg/acre/grd_s_c3_s_1/grd_s_c3_s_1_evw_anime.c: + .data: [0x80D0FE50, 0x80D0FE60] data/field/bg/acre/grd_s_c3_s_1/grd_s_c3_s_1.c: .data: [0x80D0FE60, 0x80D11628] data/field/bg/acre/grd_s_c4_1/grd_s_c4_1.c: @@ -2065,16 +2113,28 @@ data/field/bg/acre/grd_s_c4_2/grd_s_c4_2.c: .data: [0x80D12430, 0x80D135B0] data/field/bg/acre/grd_s_c4_3/grd_s_c4_3.c: .data: [0x80D135B0, 0x80D14598] +data/field/bg/acre/grd_s_c4_r1_1/grd_s_c4_r1_1_evw_anime.c: + .data: [0x80D14598, 0x80D145A8] data/field/bg/acre/grd_s_c4_r1_1/grd_s_c4_r1_1.c: .data: [0x80D145A8, 0x80D158B0] +data/field/bg/acre/grd_s_c4_r1_2/grd_s_c4_r1_2_evw_anime.c: + .data: [0x80D158B0, 0x80D158C0] data/field/bg/acre/grd_s_c4_r1_2/grd_s_c4_r1_2.c: .data: [0x80D158C0, 0x80D16B80] +data/field/bg/acre/grd_s_c4_r2_1/grd_s_c4_r2_1_evw_anime.c: + .data: [0x80D16B80, 0x80D16B90] data/field/bg/acre/grd_s_c4_r2_1/grd_s_c4_r2_1.c: .data: [0x80D16B90, 0x80D17EF8] +data/field/bg/acre/grd_s_c4_r2_2/grd_s_c4_r2_2_evw_anime.c: + .data: [0x80D17EF8, 0x80D17F08] data/field/bg/acre/grd_s_c4_r2_2/grd_s_c4_r2_2.c: .data: [0x80D17F08, 0x80D18FB0] +data/field/bg/acre/grd_s_c4_r3_1/grd_s_c4_r3_1_evw_anime.c: + .data: [0x80D18FB0, 0x80D18FC0] data/field/bg/acre/grd_s_c4_r3_1/grd_s_c4_r3_1.c: .data: [0x80D18FC0, 0x80D1A0C8] +data/field/bg/acre/grd_s_c4_r3_2/grd_s_c4_r3_2_evw_anime.c: + .data: [0x80D1A0C8, 0x80D1A0D8] data/field/bg/acre/grd_s_c4_r3_2/grd_s_c4_r3_2.c: .data: [0x80D1A0D8, 0x80D1B088] data/field/bg/acre/grd_s_c4_s_1/grd_s_c4_s_1.c: @@ -2087,16 +2147,28 @@ data/field/bg/acre/grd_s_c5_2/grd_s_c5_2.c: .data: [0x80D1DFA8, 0x80D1F1B8] data/field/bg/acre/grd_s_c5_3/grd_s_c5_3.c: .data: [0x80D1F1B8, 0x80D1FF20] +data/field/bg/acre/grd_s_c5_r1_1/grd_s_c5_r1_1_evw_anime.c: + .data: [0x80D1FF20, 0x80D1FF30] data/field/bg/acre/grd_s_c5_r1_1/grd_s_c5_r1_1.c: .data: [0x80D1FF30, 0x80D21510] +data/field/bg/acre/grd_s_c5_r1_2/grd_s_c5_r1_2_evw_anime.c: + .data: [0x80D21510, 0x80D21520] data/field/bg/acre/grd_s_c5_r1_2/grd_s_c5_r1_2.c: .data: [0x80D21520, 0x80D22AB0] +data/field/bg/acre/grd_s_c5_r2_1/grd_s_c5_r2_1_evw_anime.c: + .data: [0x80D22AB0, 0x80D22AC0] data/field/bg/acre/grd_s_c5_r2_1/grd_s_c5_r2_1.c: .data: [0x80D22AC0, 0x80D241C0] +data/field/bg/acre/grd_s_c5_r2_2/grd_s_c5_r2_2_evw_anime.c: + .data: [0x80D241C0, 0x80D241D0] data/field/bg/acre/grd_s_c5_r2_2/grd_s_c5_r2_2.c: .data: [0x80D241D0, 0x80D25638] +data/field/bg/acre/grd_s_c5_r3_1/grd_s_c5_r3_1_evw_anime.c: + .data: [0x80D25638, 0x80D25648] data/field/bg/acre/grd_s_c5_r3_1/grd_s_c5_r3_1.c: .data: [0x80D25648, 0x80D26978] +data/field/bg/acre/grd_s_c5_r3_2/grd_s_c5_r3_2_evw_anime.c: + .data: [0x80D26978, 0x80D26988] data/field/bg/acre/grd_s_c5_r3_2/grd_s_c5_r3_2.c: .data: [0x80D26988, 0x80D27B78] data/field/bg/acre/grd_s_c5_s_1/grd_s_c5_s_1.c: @@ -2109,10 +2181,16 @@ data/field/bg/acre/grd_s_c6_2/grd_s_c6_2.c: .data: [0x80D2AC00, 0x80D2BE00] data/field/bg/acre/grd_s_c6_3/grd_s_c6_3.c: .data: [0x80D2BE00, 0x80D2CDA0] +data/field/bg/acre/grd_s_c6_r1_1/grd_s_c6_r1_1_evw_anime.c: + .data: [0x80D2CDA0, 0x80D2CDB0] data/field/bg/acre/grd_s_c6_r1_1/grd_s_c6_r1_1.c: .data: [0x80D2CDB0, 0x80D2E088] +data/field/bg/acre/grd_s_c6_r1_2/grd_s_c6_r1_2_evw_anime.c: + .data: [0x80D2E088, 0x80D2E098] data/field/bg/acre/grd_s_c6_r1_2/grd_s_c6_r1_2.c: .data: [0x80D2E098, 0x80D2F3E8] +data/field/bg/acre/grd_s_c6_r3_1/grd_s_c6_r3_1_evw_anime.c: + .data: [0x80D2F3E8, 0x80D2F3F8] data/field/bg/acre/grd_s_c6_r3_1/grd_s_c6_r3_1.c: .data: [0x80D2F3F8, 0x80D30BB0] data/field/bg/acre/grd_s_c6_s_1/grd_s_c6_s_1.c: @@ -2121,14 +2199,24 @@ data/field/bg/acre/grd_s_c7_1/grd_s_c7_1.c: .data: [0x80D31C90, 0x80D32CC8] data/field/bg/acre/grd_s_c7_2/grd_s_c7_2.c: .data: [0x80D32CC8, 0x80D34080] +data/field/bg/acre/grd_s_c7_3/grd_s_c7_3_evw_anime.c: + .data: [0x80D34080, 0x80D34090] data/field/bg/acre/grd_s_c7_3/grd_s_c7_3.c: .data: [0x80D34090, 0x80D35450] +data/field/bg/acre/grd_s_c7_r1_1/grd_s_c7_r1_1_evw_anime.c: + .data: [0x80D35450, 0x80D35460] data/field/bg/acre/grd_s_c7_r1_1/grd_s_c7_r1_1.c: .data: [0x80D35460, 0x80D365A0] +data/field/bg/acre/grd_s_c7_r1_2/grd_s_c7_r1_2_evw_anime.c: + .data: [0x80D365A0, 0x80D365B0] data/field/bg/acre/grd_s_c7_r1_2/grd_s_c7_r1_2.c: .data: [0x80D365B0, 0x80D376F8] +data/field/bg/acre/grd_s_c7_r3_1/grd_s_c7_r3_1_evw_anime.c: + .data: [0x80D376F8, 0x80D37708] data/field/bg/acre/grd_s_c7_r3_1/grd_s_c7_r3_1.c: .data: [0x80D37708, 0x80D38C48] +data/field/bg/acre/grd_s_c7_r3_2/grd_s_c7_r3_2_evw_anime.c: + .data: [0x80D38C48, 0x80D38C58] data/field/bg/acre/grd_s_c7_r3_2/grd_s_c7_r3_2.c: .data: [0x80D38C58, 0x80D3A318] data/field/bg/acre/grd_s_c7_s_1/grd_s_c7_s_1.c: @@ -2139,6 +2227,8 @@ data/field/bg/acre/grd_s_c7_s_3/grd_s_c7_s_3.c: .data: [0x80D3C800, 0x80D3D930] data/field/bg/acre/grd_s_e1_1/grd_s_e1_1.c: .data: [0x80D3D930, 0x80D3DFE0] +data/field/bg/acre/grd_s_e1_r1_1/grd_s_e1_r1_1_evw_anime.c: + .data: [0x80D3DFE0, 0x80D3DFF0] data/field/bg/acre/grd_s_e1_r1_1/grd_s_e1_r1_1.c: .data: [0x80D3DFF0, 0x80D3F770] data/field/bg/acre/grd_s_e2_1/grd_s_e2_1.c: @@ -2173,10 +2263,16 @@ data/field/bg/acre/grd_s_f_2/grd_s_f_2.c: .data: [0x80D463D8, 0x80D47320] data/field/bg/acre/grd_s_f_3/grd_s_f_3.c: .data: [0x80D47320, 0x80D47C78] +data/field/bg/acre/grd_s_f_4/grd_s_f_4_evw_anime.c: + .data: [0x80D47C78, 0x80D47C88] data/field/bg/acre/grd_s_f_4/grd_s_f_4.c: .data: [0x80D47C88, 0x80D48A60] +data/field/bg/acre/grd_s_f_5/grd_s_f_5_evw_anime.c: + .data: [0x80D48A60, 0x80D48A70] data/field/bg/acre/grd_s_f_5/grd_s_f_5.c: .data: [0x80D48A70, 0x80D49C50] +data/field/bg/acre/grd_s_f_6/grd_s_f_6_evw_anime.c: + .data: [0x80D49C50, 0x80D49C60] data/field/bg/acre/grd_s_f_6/grd_s_f_6.c: .data: [0x80D49C60, 0x80D4AE88] data/field/bg/acre/grd_s_f_7/grd_s_f_7.c: @@ -2189,6 +2285,8 @@ data/field/bg/acre/grd_s_f_ko_1/grd_s_f_ko_1.c: .data: [0x80D4E708, 0x80D4F808] data/field/bg/acre/grd_s_f_ko_2/grd_s_f_ko_2.c: .data: [0x80D4F808, 0x80D50490] +data/field/bg/acre/grd_s_f_ko_3/grd_s_f_ko_3_evw_anime.c: + .data: [0x80D50490, 0x80D504A0] data/field/bg/acre/grd_s_f_ko_3/grd_s_f_ko_3.c: .data: [0x80D504A0, 0x80D51708] data/field/bg/acre/grd_s_f_mh_1/grd_s_f_mh_1.c: @@ -2201,6 +2299,8 @@ data/field/bg/acre/grd_s_f_mu_1/grd_s_f_mu_1.c: .data: [0x80D54190, 0x80D54D60] data/field/bg/acre/grd_s_f_mu_2/grd_s_f_mu_2.c: .data: [0x80D54D60, 0x80D55920] +data/field/bg/acre/grd_s_f_mu_3/grd_s_f_mu_3_evw_anime.c: + .data: [0x80D55920, 0x80D55930] data/field/bg/acre/grd_s_f_mu_3/grd_s_f_mu_3.c: .data: [0x80D55930, 0x80D564B8] data/field/bg/acre/grd_s_f_pk_1/grd_s_f_pk_1.c: @@ -2247,182 +2347,358 @@ data/field/bg/acre/grd_s_m_8/grd_s_m_8.c: .data: [0x80D6DF60, 0x80D6EFE8] data/field/bg/acre/grd_s_m_9/grd_s_m_9.c: .data: [0x80D6EFE8, 0x80D6FF58] +data/field/bg/acre/grd_s_m_r1_1/grd_s_m_r1_1_evw_anime.c: + .data: [0x80D6FF58, 0x80D6FF78] data/field/bg/acre/grd_s_m_r1_1/grd_s_m_r1_1.c: .data: [0x80D6FF78, 0x80D713D8] +data/field/bg/acre/grd_s_m_r1_2/grd_s_m_r1_2_evw_anime.c: + .data: [0x80D713D8, 0x80D713F8] data/field/bg/acre/grd_s_m_r1_2/grd_s_m_r1_2.c: .data: [0x80D713F8, 0x80D727B8] +data/field/bg/acre/grd_s_m_r1_3/grd_s_m_r1_3_evw_anime.c: + .data: [0x80D727B8, 0x80D727D8] data/field/bg/acre/grd_s_m_r1_3/grd_s_m_r1_3.c: .data: [0x80D727D8, 0x80D73A30] +data/field/bg/acre/grd_s_m_r1_4/grd_s_m_r1_4_evw_anime.c: + .data: [0x80D73A30, 0x80D73A50] data/field/bg/acre/grd_s_m_r1_4/grd_s_m_r1_4.c: .data: [0x80D73A50, 0x80D74FD8] +data/field/bg/acre/grd_s_m_r1_5/grd_s_m_r1_5_evw_anime.c: + .data: [0x80D74FD8, 0x80D74FF8] data/field/bg/acre/grd_s_m_r1_5/grd_s_m_r1_5.c: .data: [0x80D74FF8, 0x80D76660] +data/field/bg/acre/grd_s_m_r1_b_1/grd_s_m_r1_b_1_evw_anime.c: + .data: [0x80D76660, 0x80D76680] data/field/bg/acre/grd_s_m_r1_b_1/grd_s_m_r1_b_1.c: .data: [0x80D76680, 0x80D77908] +data/field/bg/acre/grd_s_m_r1_b_2/grd_s_m_r1_b_2_evw_anime.c: + .data: [0x80D77908, 0x80D77928] data/field/bg/acre/grd_s_m_r1_b_2/grd_s_m_r1_b_2.c: .data: [0x80D77928, 0x80D78F10] +data/field/bg/acre/grd_s_m_r1_b_3/grd_s_m_r1_b_3_evw_anime.c: + .data: [0x80D78F10, 0x80D78F30] data/field/bg/acre/grd_s_m_r1_b_3/grd_s_m_r1_b_3.c: .data: [0x80D78F30, 0x80D7A350] +data/field/bg/acre/grd_s_m_ta_1/grd_s_m_ta_1_evw_anime.c: + .data: [0x80D7A350, 0x80D7A370] data/field/bg/acre/grd_s_m_ta_1/grd_s_m_ta_1.c: .data: [0x80D7A370, 0x80D7B6C8] +data/field/bg/acre/grd_s_m_ta_2/grd_s_m_ta_2_evw_anime.c: + .data: [0x80D7B6C8, 0x80D7B6E8] data/field/bg/acre/grd_s_m_ta_2/grd_s_m_ta_2.c: .data: [0x80D7B6E8, 0x80D7C900] +data/field/bg/acre/grd_s_m_ta_3/grd_s_m_ta_3_evw_anime.c: + .data: [0x80D7C900, 0x80D7C920] data/field/bg/acre/grd_s_m_ta_3/grd_s_m_ta_3.c: .data: [0x80D7C920, 0x80D7DC70] +data/field/bg/acre/grd_s_m_wf_1/grd_s_m_wf_1_evw_anime.c: + .data: [0x80D7DC70, 0x80D7DCB0] data/field/bg/acre/grd_s_m_wf_1/grd_s_m_wf_1.c: .data: [0x80D7DCB0, 0x80D7F310] +data/field/bg/acre/grd_s_m_wf_2/grd_s_m_wf_2_evw_anime.c: + .data: [0x80D7F310, 0x80D7F350] data/field/bg/acre/grd_s_m_wf_2/grd_s_m_wf_2.c: .data: [0x80D7F350, 0x80D81008] +data/field/bg/acre/grd_s_m_wf_3/grd_s_m_wf_3_evw_anime.c: + .data: [0x80D81008, 0x80D81048] data/field/bg/acre/grd_s_m_wf_3/grd_s_m_wf_3.c: .data: [0x80D81048, 0x80D82780] +data/field/bg/acre/grd_s_o_1/grd_s_o_1_evw_anime.c: + .data: [0x80D82780, 0x80D827C0] data/field/bg/acre/grd_s_o_1/grd_s_o_1.c: .data: [0x80D827C0, 0x80D82CA0] +data/field/bg/acre/grd_s_o_10/grd_s_o_10_evw_anime.c: + .data: [0x80D82CA0, 0x80D82CE0] data/field/bg/acre/grd_s_o_10/grd_s_o_10.c: .data: [0x80D82CE0, 0x80D83178] +data/field/bg/acre/grd_s_o_2/grd_s_o_2_evw_anime.c: + .data: [0x80D83178, 0x80D831B8] data/field/bg/acre/grd_s_o_2/grd_s_o_2.c: .data: [0x80D831B8, 0x80D83658] +data/field/bg/acre/grd_s_o_3/grd_s_o_3_evw_anime.c: + .data: [0x80D83658, 0x80D83698] data/field/bg/acre/grd_s_o_3/grd_s_o_3.c: .data: [0x80D83698, 0x80D83B00] +data/field/bg/acre/grd_s_o_4/grd_s_o_4_evw_anime.c: + .data: [0x80D83B00, 0x80D83B40] data/field/bg/acre/grd_s_o_4/grd_s_o_4.c: .data: [0x80D83B40, 0x80D83FD0] +data/field/bg/acre/grd_s_o_5/grd_s_o_5_evw_anime.c: + .data: [0x80D83FD0, 0x80D84010] data/field/bg/acre/grd_s_o_5/grd_s_o_5.c: .data: [0x80D84010, 0x80D84490] +data/field/bg/acre/grd_s_o_6/grd_s_o_6_evw_anime.c: + .data: [0x80D84490, 0x80D844D0] data/field/bg/acre/grd_s_o_6/grd_s_o_6.c: .data: [0x80D844D0, 0x80D84938] +data/field/bg/acre/grd_s_o_7/grd_s_o_7_evw_anime.c: + .data: [0x80D84938, 0x80D84978] data/field/bg/acre/grd_s_o_7/grd_s_o_7.c: .data: [0x80D84978, 0x80D84E08] +data/field/bg/acre/grd_s_o_8/grd_s_o_8_evw_anime.c: + .data: [0x80D84E08, 0x80D84E48] data/field/bg/acre/grd_s_o_8/grd_s_o_8.c: .data: [0x80D84E48, 0x80D85338] +data/field/bg/acre/grd_s_o_9/grd_s_o_9_evw_anime.c: + .data: [0x80D85338, 0x80D85378] data/field/bg/acre/grd_s_o_9/grd_s_o_9.c: .data: [0x80D85378, 0x80D85850] data/field/bg/acre/grd_s_o_i_1/grd_s_o_i_1.c: .data: [0x80D85850, 0x80D85CB0] +data/field/bg/acre/grd_s_o_i_2/grd_s_o_i_2_evw_anime.c: + .data: [0x80D85CB0, 0x80D85CF0] data/field/bg/acre/grd_s_o_i_2/grd_s_o_i_2.c: .data: [0x80D85CF0, 0x80D85FD0] +data/field/bg/acre/grd_s_o_r1_1/grd_s_o_r1_1_evw_anime.c: + .data: [0x80D85FD0, 0x80D86010] data/field/bg/acre/grd_s_o_r1_1/grd_s_o_r1_1.c: .data: [0x80D86010, 0x80D86520] +data/field/bg/acre/grd_s_o_r1_2/grd_s_o_r1_2_evw_anime.c: + .data: [0x80D86520, 0x80D86560] data/field/bg/acre/grd_s_o_r1_2/grd_s_o_r1_2.c: .data: [0x80D86560, 0x80D86A40] +data/field/bg/acre/grd_s_o_r1_3/grd_s_o_r1_3_evw_anime.c: + .data: [0x80D86A40, 0x80D86A80] data/field/bg/acre/grd_s_o_r1_3/grd_s_o_r1_3.c: .data: [0x80D86A80, 0x80D86F78] +data/field/bg/acre/grd_s_o_r1_4/grd_s_o_r1_4_evw_anime.c: + .data: [0x80D86F78, 0x80D86FB8] data/field/bg/acre/grd_s_o_r1_4/grd_s_o_r1_4.c: .data: [0x80D86FB8, 0x80D87478] +data/field/bg/acre/grd_s_o_r1_5/grd_s_o_r1_5_evw_anime.c: + .data: [0x80D87478, 0x80D874B8] data/field/bg/acre/grd_s_o_r1_5/grd_s_o_r1_5.c: .data: [0x80D874B8, 0x80D87890] +data/field/bg/acre/grd_s_o_r1_b_1/grd_s_o_r1_b_1_evw_anime.c: + .data: [0x80D87890, 0x80D878D0] data/field/bg/acre/grd_s_o_r1_b_1/grd_s_o_r1_b_1.c: .data: [0x80D878D0, 0x80D87BB0] +data/field/bg/acre/grd_s_o_r1_b_2/grd_s_o_r1_b_2_evw_anime.c: + .data: [0x80D87BB0, 0x80D87BF0] data/field/bg/acre/grd_s_o_r1_b_2/grd_s_o_r1_b_2.c: .data: [0x80D87BF0, 0x80D87EC8] +data/field/bg/acre/grd_s_o_r1_b_3/grd_s_o_r1_b_3_evw_anime.c: + .data: [0x80D87EC8, 0x80D87F08] data/field/bg/acre/grd_s_o_r1_b_3/grd_s_o_r1_b_3.c: .data: [0x80D87F08, 0x80D881E0] +data/field/bg/acre/grd_s_o_ta_1/grd_s_o_ta_1_evw_anime.c: + .data: [0x80D881E0, 0x80D88220] data/field/bg/acre/grd_s_o_ta_1/grd_s_o_ta_1.c: .data: [0x80D88220, 0x80D88728] +data/field/bg/acre/grd_s_o_ta_2/grd_s_o_ta_2_evw_anime.c: + .data: [0x80D88728, 0x80D88768] data/field/bg/acre/grd_s_o_ta_2/grd_s_o_ta_2.c: .data: [0x80D88768, 0x80D88B70] +data/field/bg/acre/grd_s_o_ta_3/grd_s_o_ta_3_evw_anime.c: + .data: [0x80D88B70, 0x80D88BB0] data/field/bg/acre/grd_s_o_ta_3/grd_s_o_ta_3.c: .data: [0x80D88BB0, 0x80D88FC8] +data/field/bg/acre/grd_s_o_wf_1/grd_s_o_wf_1_evw_anime.c: + .data: [0x80D88FC8, 0x80D89008] data/field/bg/acre/grd_s_o_wf_1/grd_s_o_wf_1.c: .data: [0x80D89008, 0x80D89538] +data/field/bg/acre/grd_s_o_wf_2/grd_s_o_wf_2_evw_anime.c: + .data: [0x80D89538, 0x80D89578] data/field/bg/acre/grd_s_o_wf_2/grd_s_o_wf_2.c: .data: [0x80D89578, 0x80D89AD8] +data/field/bg/acre/grd_s_o_wf_3/grd_s_o_wf_3_evw_anime.c: + .data: [0x80D89AD8, 0x80D89B18] data/field/bg/acre/grd_s_o_wf_3/grd_s_o_wf_3.c: .data: [0x80D89B18, 0x80D8A030] +data/field/bg/acre/grd_s_r1_1/grd_s_r1_1_evw_anime.c: + .data: [0x80D8A030, 0x80D8A040] data/field/bg/acre/grd_s_r1_1/grd_s_r1_1.c: .data: [0x80D8A040, 0x80D8AE28] +data/field/bg/acre/grd_s_r1_2/grd_s_r1_2_evw_anime.c: + .data: [0x80D8AE28, 0x80D8AE38] data/field/bg/acre/grd_s_r1_2/grd_s_r1_2.c: .data: [0x80D8AE38, 0x80D8BD60] +data/field/bg/acre/grd_s_r1_3/grd_s_r1_3_evw_anime.c: + .data: [0x80D8BD60, 0x80D8BD70] data/field/bg/acre/grd_s_r1_3/grd_s_r1_3.c: .data: [0x80D8BD70, 0x80D8CD90] +data/field/bg/acre/grd_s_r1_4/grd_s_r1_4_evw_anime.c: + .data: [0x80D8CD90, 0x80D8CDA0] data/field/bg/acre/grd_s_r1_4/grd_s_r1_4.c: .data: [0x80D8CDA0, 0x80D8DAA8] +data/field/bg/acre/grd_s_r1_b_1/grd_s_r1_b_1_evw_anime.c: + .data: [0x80D8DAA8, 0x80D8DAB8] data/field/bg/acre/grd_s_r1_b_1/grd_s_r1_b_1.c: .data: [0x80D8DAB8, 0x80D8EAE0] +data/field/bg/acre/grd_s_r1_b_2/grd_s_r1_b_2_evw_anime.c: + .data: [0x80D8EAE0, 0x80D8EAF0] data/field/bg/acre/grd_s_r1_b_2/grd_s_r1_b_2.c: .data: [0x80D8EAF0, 0x80D8FF20] +data/field/bg/acre/grd_s_r1_b_3/grd_s_r1_b_3_evw_anime.c: + .data: [0x80D8FF20, 0x80D8FF30] data/field/bg/acre/grd_s_r1_b_3/grd_s_r1_b_3.c: .data: [0x80D8FF30, 0x80D91210] +data/field/bg/acre/grd_s_r1_p_1/grd_s_r1_p_1_evw_anime.c: + .data: [0x80D91210, 0x80D91220] data/field/bg/acre/grd_s_r1_p_1/grd_s_r1_p_1.c: .data: [0x80D91220, 0x80D924B0] +data/field/bg/acre/grd_s_r2_1/grd_s_r2_1_evw_anime.c: + .data: [0x80D924B0, 0x80D924C0] data/field/bg/acre/grd_s_r2_1/grd_s_r2_1.c: .data: [0x80D924C0, 0x80D932D8] +data/field/bg/acre/grd_s_r2_2/grd_s_r2_2_evw_anime.c: + .data: [0x80D932D8, 0x80D932E8] data/field/bg/acre/grd_s_r2_2/grd_s_r2_2.c: .data: [0x80D932E8, 0x80D94138] +data/field/bg/acre/grd_s_r2_3/grd_s_r2_3_evw_anime.c: + .data: [0x80D94138, 0x80D94148] data/field/bg/acre/grd_s_r2_3/grd_s_r2_3.c: .data: [0x80D94148, 0x80D951A8] +data/field/bg/acre/grd_s_r2_4/grd_s_r2_4_evw_anime.c: + .data: [0x80D951A8, 0x80D951B8] data/field/bg/acre/grd_s_r2_4/grd_s_r2_4.c: .data: [0x80D951B8, 0x80D961C0] +data/field/bg/acre/grd_s_r2_b_1/grd_s_r2_b_1_evw_anime.c: + .data: [0x80D961C0, 0x80D961D0] data/field/bg/acre/grd_s_r2_b_1/grd_s_r2_b_1.c: .data: [0x80D961D0, 0x80D97800] +data/field/bg/acre/grd_s_r2_b_2/grd_s_r2_b_2_evw_anime.c: + .data: [0x80D97800, 0x80D97810] data/field/bg/acre/grd_s_r2_b_2/grd_s_r2_b_2.c: .data: [0x80D97810, 0x80D98B68] +data/field/bg/acre/grd_s_r2_b_3/grd_s_r2_b_3_evw_anime.c: + .data: [0x80D98B68, 0x80D98B78] data/field/bg/acre/grd_s_r2_b_3/grd_s_r2_b_3.c: .data: [0x80D98B78, 0x80D9A060] +data/field/bg/acre/grd_s_r2_p_1/grd_s_r2_p_1_evw_anime.c: + .data: [0x80D9A060, 0x80D9A070] data/field/bg/acre/grd_s_r2_p_1/grd_s_r2_p_1.c: .data: [0x80D9A070, 0x80D9B8D0] +data/field/bg/acre/grd_s_r3_1/grd_s_r3_1_evw_anime.c: + .data: [0x80D9B8D0, 0x80D9B8E0] data/field/bg/acre/grd_s_r3_1/grd_s_r3_1.c: .data: [0x80D9B8E0, 0x80D9C978] +data/field/bg/acre/grd_s_r3_2/grd_s_r3_2_evw_anime.c: + .data: [0x80D9C978, 0x80D9C988] data/field/bg/acre/grd_s_r3_2/grd_s_r3_2.c: .data: [0x80D9C988, 0x80D9D878] +data/field/bg/acre/grd_s_r3_3/grd_s_r3_3_evw_anime.c: + .data: [0x80D9D878, 0x80D9D888] data/field/bg/acre/grd_s_r3_3/grd_s_r3_3.c: .data: [0x80D9D888, 0x80D9E7C0] +data/field/bg/acre/grd_s_r3_4/grd_s_r3_4_evw_anime.c: + .data: [0x80D9E7C0, 0x80D9E7D0] data/field/bg/acre/grd_s_r3_4/grd_s_r3_4.c: .data: [0x80D9E7D0, 0x80D9F620] +data/field/bg/acre/grd_s_r3_b_1/grd_s_r3_b_1_evw_anime.c: + .data: [0x80D9F620, 0x80D9F630] data/field/bg/acre/grd_s_r3_b_1/grd_s_r3_b_1.c: .data: [0x80D9F630, 0x80DA0818] +data/field/bg/acre/grd_s_r3_b_2/grd_s_r3_b_2_evw_anime.c: + .data: [0x80DA0818, 0x80DA0828] data/field/bg/acre/grd_s_r3_b_2/grd_s_r3_b_2.c: .data: [0x80DA0828, 0x80DA1D40] +data/field/bg/acre/grd_s_r3_b_3/grd_s_r3_b_3_evw_anime.c: + .data: [0x80DA1D40, 0x80DA1D50] data/field/bg/acre/grd_s_r3_b_3/grd_s_r3_b_3.c: .data: [0x80DA1D50, 0x80DA3170] +data/field/bg/acre/grd_s_r3_p_1/grd_s_r3_p_1_evw_anime.c: + .data: [0x80DA3170, 0x80DA3180] data/field/bg/acre/grd_s_r3_p_1/grd_s_r3_p_1.c: .data: [0x80DA3180, 0x80DA4820] +data/field/bg/acre/grd_s_r4_1/grd_s_r4_1_evw_anime.c: + .data: [0x80DA4820, 0x80DA4830] data/field/bg/acre/grd_s_r4_1/grd_s_r4_1.c: .data: [0x80DA4830, 0x80DA5758] +data/field/bg/acre/grd_s_r4_2/grd_s_r4_2_evw_anime.c: + .data: [0x80DA5758, 0x80DA5768] data/field/bg/acre/grd_s_r4_2/grd_s_r4_2.c: .data: [0x80DA5768, 0x80DA66D0] +data/field/bg/acre/grd_s_r4_3/grd_s_r4_3_evw_anime.c: + .data: [0x80DA66D0, 0x80DA66E0] data/field/bg/acre/grd_s_r4_3/grd_s_r4_3.c: .data: [0x80DA66E0, 0x80DA74F8] +data/field/bg/acre/grd_s_r4_b_1/grd_s_r4_b_1_evw_anime.c: + .data: [0x80DA74F8, 0x80DA7508] data/field/bg/acre/grd_s_r4_b_1/grd_s_r4_b_1.c: .data: [0x80DA7508, 0x80DA81F8] +data/field/bg/acre/grd_s_r4_b_2/grd_s_r4_b_2_evw_anime.c: + .data: [0x80DA81F8, 0x80DA8208] data/field/bg/acre/grd_s_r4_b_2/grd_s_r4_b_2.c: .data: [0x80DA8208, 0x80DA93D8] +data/field/bg/acre/grd_s_r4_p_1/grd_s_r4_p_1_evw_anime.c: + .data: [0x80DA93D8, 0x80DA93E8] data/field/bg/acre/grd_s_r4_p_1/grd_s_r4_p_1.c: .data: [0x80DA93E8, 0x80DAA928] +data/field/bg/acre/grd_s_r5_1/grd_s_r5_1_evw_anime.c: + .data: [0x80DAA928, 0x80DAA938] data/field/bg/acre/grd_s_r5_1/grd_s_r5_1.c: .data: [0x80DAA938, 0x80DAB920] +data/field/bg/acre/grd_s_r5_2/grd_s_r5_2_evw_anime.c: + .data: [0x80DAB920, 0x80DAB930] data/field/bg/acre/grd_s_r5_2/grd_s_r5_2.c: .data: [0x80DAB930, 0x80DACA10] +data/field/bg/acre/grd_s_r5_3/grd_s_r5_3_evw_anime.c: + .data: [0x80DACA10, 0x80DACA20] data/field/bg/acre/grd_s_r5_3/grd_s_r5_3.c: .data: [0x80DACA20, 0x80DADAC8] +data/field/bg/acre/grd_s_r5_b_1/grd_s_r5_b_1_evw_anime.c: + .data: [0x80DADAC8, 0x80DADAD8] data/field/bg/acre/grd_s_r5_b_1/grd_s_r5_b_1.c: .data: [0x80DADAD8, 0x80DAED98] +data/field/bg/acre/grd_s_r5_b_2/grd_s_r5_b_2_evw_anime.c: + .data: [0x80DAED98, 0x80DAEDA8] data/field/bg/acre/grd_s_r5_b_2/grd_s_r5_b_2.c: .data: [0x80DAEDA8, 0x80DB00A0] +data/field/bg/acre/grd_s_r5_p_1/grd_s_r5_p_1_evw_anime.c: + .data: [0x80DB00A0, 0x80DB00B0] data/field/bg/acre/grd_s_r5_p_1/grd_s_r5_p_1.c: .data: [0x80DB00B0, 0x80DB1530] +data/field/bg/acre/grd_s_r6_1/grd_s_r6_1_evw_anime.c: + .data: [0x80DB1530, 0x80DB1540] data/field/bg/acre/grd_s_r6_1/grd_s_r6_1.c: .data: [0x80DB1540, 0x80DB2258] +data/field/bg/acre/grd_s_r6_2/grd_s_r6_2_evw_anime.c: + .data: [0x80DB2258, 0x80DB2268] data/field/bg/acre/grd_s_r6_2/grd_s_r6_2.c: .data: [0x80DB2268, 0x80DB2FE8] +data/field/bg/acre/grd_s_r6_3/grd_s_r6_3_evw_anime.c: + .data: [0x80DB2FE8, 0x80DB2FF8] data/field/bg/acre/grd_s_r6_3/grd_s_r6_3.c: .data: [0x80DB2FF8, 0x80DB3D60] +data/field/bg/acre/grd_s_r6_b_1/grd_s_r6_b_1_evw_anime.c: + .data: [0x80DB3D60, 0x80DB3D70] data/field/bg/acre/grd_s_r6_b_1/grd_s_r6_b_1.c: .data: [0x80DB3D70, 0x80DB4BD8] +data/field/bg/acre/grd_s_r6_b_2/grd_s_r6_b_2_evw_anime.c: + .data: [0x80DB4BD8, 0x80DB4BE8] data/field/bg/acre/grd_s_r6_b_2/grd_s_r6_b_2.c: .data: [0x80DB4BE8, 0x80DB6128] +data/field/bg/acre/grd_s_r6_p_1/grd_s_r6_p_1_evw_anime.c: + .data: [0x80DB6128, 0x80DB6138] data/field/bg/acre/grd_s_r6_p_1/grd_s_r6_p_1.c: .data: [0x80DB6138, 0x80DB77A8] +data/field/bg/acre/grd_s_r7_1/grd_s_r7_1_evw_anime.c: + .data: [0x80DB77A8, 0x80DB77B8] data/field/bg/acre/grd_s_r7_1/grd_s_r7_1.c: .data: [0x80DB77B8, 0x80DB86A0] +data/field/bg/acre/grd_s_r7_2/grd_s_r7_2_evw_anime.c: + .data: [0x80DB86A0, 0x80DB86B0] data/field/bg/acre/grd_s_r7_2/grd_s_r7_2.c: .data: [0x80DB86B0, 0x80DB94B0] +data/field/bg/acre/grd_s_r7_3/grd_s_r7_3_evw_anime.c: + .data: [0x80DB94B0, 0x80DB94C0] data/field/bg/acre/grd_s_r7_3/grd_s_r7_3.c: .data: [0x80DB94C0, 0x80DBA258] +data/field/bg/acre/grd_s_r7_b_1/grd_s_r7_b_1_evw_anime.c: + .data: [0x80DBA258, 0x80DBA268] data/field/bg/acre/grd_s_r7_b_1/grd_s_r7_b_1.c: .data: [0x80DBA268, 0x80DBB218] +data/field/bg/acre/grd_s_r7_b_2/grd_s_r7_b_2_evw_anime.c: + .data: [0x80DBB218, 0x80DBB228] data/field/bg/acre/grd_s_r7_b_2/grd_s_r7_b_2.c: .data: [0x80DBB228, 0x80DBC7C0] +data/field/bg/acre/grd_s_r7_p_1/grd_s_r7_p_1_evw_anime.c: + .data: [0x80DBC7C0, 0x80DBC7D0] data/field/bg/acre/grd_s_r7_p_1/grd_s_r7_p_1.c: .data: [0x80DBC7D0, 0x80DBDBE8] +data/field/bg/acre/grd_s_t_1/grd_s_t_1_evw_anime.c: + .data: [0x80DBDBE8, 0x80DBDBF8] data/field/bg/acre/grd_s_t_1/grd_s_t_1.c: .data: [0x80DBDBF8, 0x80DBE858] data/field/bg/acre/grd_s_t_10/grd_s_t_10.c: @@ -2431,8 +2707,12 @@ data/field/bg/acre/grd_s_t_2/grd_s_t_2.c: .data: [0x80DBF8F8, 0x80DC0808] data/field/bg/acre/grd_s_t_3/grd_s_t_3.c: .data: [0x80DC0808, 0x80DC1368] +data/field/bg/acre/grd_s_t_4/grd_s_t_4_evw_anime.c: + .data: [0x80DC1368, 0x80DC1378] data/field/bg/acre/grd_s_t_4/grd_s_t_4.c: .data: [0x80DC1378, 0x80DC24F0] +data/field/bg/acre/grd_s_t_5/grd_s_t_5_evw_anime.c: + .data: [0x80DC24F0, 0x80DC2500] data/field/bg/acre/grd_s_t_5/grd_s_t_5.c: .data: [0x80DC2500, 0x80DC3770] data/field/bg/acre/grd_s_t_6/grd_s_t_6.c: @@ -2447,20 +2727,34 @@ data/field/bg/acre/grd_s_t_po_1/grd_s_t_po_1.c: .data: [0x80DC7C88, 0x80DC8918] data/field/bg/acre/grd_s_t_po_2/grd_s_t_po_2.c: .data: [0x80DC8918, 0x80DC9568] +data/field/bg/acre/grd_s_t_po_3/grd_s_t_po_3_evw_anime.c: + .data: [0x80DC9568, 0x80DC9578] data/field/bg/acre/grd_s_t_po_3/grd_s_t_po_3.c: .data: [0x80DC9578, 0x80DCA6D0] +data/field/bg/acre/grd_s_t_r1_1/grd_s_t_r1_1_evw_anime.c: + .data: [0x80DCA6D0, 0x80DCA6E0] data/field/bg/acre/grd_s_t_r1_1/grd_s_t_r1_1.c: .data: [0x80DCA6E0, 0x80DCB8D8] +data/field/bg/acre/grd_s_t_r1_2/grd_s_t_r1_2_evw_anime.c: + .data: [0x80DCB8D8, 0x80DCB8E8] data/field/bg/acre/grd_s_t_r1_2/grd_s_t_r1_2.c: .data: [0x80DCB8E8, 0x80DCCD68] +data/field/bg/acre/grd_s_t_r1_3/grd_s_t_r1_3_evw_anime.c: + .data: [0x80DCCD68, 0x80DCCD78] data/field/bg/acre/grd_s_t_r1_3/grd_s_t_r1_3.c: .data: [0x80DCCD78, 0x80DCE220] +data/field/bg/acre/grd_s_t_r1_4/grd_s_t_r1_4_evw_anime.c: + .data: [0x80DCE220, 0x80DCE230] data/field/bg/acre/grd_s_t_r1_4/grd_s_t_r1_4.c: .data: [0x80DCE230, 0x80DCF578] +data/field/bg/acre/grd_s_t_r1_5/grd_s_t_r1_5_evw_anime.c: + .data: [0x80DCF578, 0x80DCF588] data/field/bg/acre/grd_s_t_r1_5/grd_s_t_r1_5.c: .data: [0x80DCF588, 0x80DD0A38] data/field/bg/acre/grd_s_t_sh_1/grd_s_t_sh_1.c: .data: [0x80DD0A38, 0x80DD1668] +data/field/bg/acre/grd_s_t_sh_2/grd_s_t_sh_2_evw_anime.c: + .data: [0x80DD1668, 0x80DD1678] data/field/bg/acre/grd_s_t_sh_2/grd_s_t_sh_2.c: .data: [0x80DD1678, 0x80DD2610] data/field/bg/acre/grd_s_t_sh_3/grd_s_t_sh_3.c: @@ -2495,6 +2789,8 @@ data/field/bg/acre/rom_tailor/rom_tailor.c: .data: [0x80F29260, 0x80F31FB0] data/field/bg/acre/myr_etc/myr_etc.c: .data: [0x80F84780, 0x80F85720] +data/field/bg/acre/grd_player_select/grd_player_select_evw_anime.c: + .data: [0x80F85720, 0x80F85740] data/field/bg/acre/grd_player_select/grd_player_select.c: .data: [0x80F85740, 0x80F86FA0] data/field/bg/acre/police_indoor/police_indoor.c: @@ -2511,6 +2807,8 @@ data/field/bg/acre/room01/room01.c: .data: [0x81104FE0, 0x81106C68] data/field/bg/acre/rom_train_in/rom_train_in.c: .data: [0x81106D40, 0x8110CE00] +data/field/bg/acre/rom_uranai/rom_uranai_evw_anime.c: + .data: [0x8110F600, 0x8110F620] data/field/bg/acre/rom_uranai/rom_uranai.c: .data: [0x8110F620, 0x81115868] m_bg_tex.c: diff --git a/src/data/field/bg/acre/grd_player_select/grd_player_select_evw_anime.c b/src/data/field/bg/acre/grd_player_select/grd_player_select_evw_anime.c index 19ad969c..005b7533 100644 --- a/src/data/field/bg/acre/grd_player_select/grd_player_select_evw_anime.c +++ b/src/data/field/bg/acre/grd_player_select/grd_player_select_evw_anime.c @@ -1,9 +1,9 @@ #include "evw_anime.h" -static EVW_ANIME_SCROLL grd_player_select_evw_anime_1[] = { { 1, 1, 32, 32 }, { 0, 0, 32, 64 } }; +/* @HACK - this is probably aligned to 32 bytes because it and the other data were compiled into a single object file + the other TU has things aligned to 32 bytes */ +static EVW_ANIME_SCROLL grd_player_select_evw_anime_1[] ATTRIBUTE_ALIGN(32) = { { 1, 1, 32, 32 }, { 0, 0, 32, 64 } }; -extern EVW_ANIME_DATA grd_player_select_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_player_select_evw_anime_1 +extern EVW_ANIME_DATA grd_player_select_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_player_select_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_c1_r1_1/grd_s_c1_r1_1_evw_anime.c b/src/data/field/bg/acre/grd_s_c1_r1_1/grd_s_c1_r1_1_evw_anime.c index 1781503d..1b643077 100644 --- a/src/data/field/bg/acre/grd_s_c1_r1_1/grd_s_c1_r1_1_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_c1_r1_1/grd_s_c1_r1_1_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_c1_r1_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_c1_r1_1_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_c1_r1_1_evw_anime_1 +extern EVW_ANIME_DATA grd_s_c1_r1_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c1_r1_1_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_c1_r1_2/grd_s_c1_r1_2_evw_anime.c b/src/data/field/bg/acre/grd_s_c1_r1_2/grd_s_c1_r1_2_evw_anime.c index c0a9b03c..9af6bdba 100644 --- a/src/data/field/bg/acre/grd_s_c1_r1_2/grd_s_c1_r1_2_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_c1_r1_2/grd_s_c1_r1_2_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_c1_r1_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_c1_r1_2_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_c1_r1_2_evw_anime_1 +extern EVW_ANIME_DATA grd_s_c1_r1_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c1_r1_2_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_c1_r1_3/grd_s_c1_r1_3_evw_anime.c b/src/data/field/bg/acre/grd_s_c1_r1_3/grd_s_c1_r1_3_evw_anime.c index ed87928d..8a61f2c1 100644 --- a/src/data/field/bg/acre/grd_s_c1_r1_3/grd_s_c1_r1_3_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_c1_r1_3/grd_s_c1_r1_3_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_c1_r1_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_c1_r1_3_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_c1_r1_3_evw_anime_1 +extern EVW_ANIME_DATA grd_s_c1_r1_3_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c1_r1_3_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_c1_r2_1/grd_s_c1_r2_1_evw_anime.c b/src/data/field/bg/acre/grd_s_c1_r2_1/grd_s_c1_r2_1_evw_anime.c index 5147f9a2..273930ab 100644 --- a/src/data/field/bg/acre/grd_s_c1_r2_1/grd_s_c1_r2_1_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_c1_r2_1/grd_s_c1_r2_1_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_c1_r2_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_c1_r2_1_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_c1_r2_1_evw_anime_1 +extern EVW_ANIME_DATA grd_s_c1_r2_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c1_r2_1_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_c1_r2_2/grd_s_c1_r2_2_evw_anime.c b/src/data/field/bg/acre/grd_s_c1_r2_2/grd_s_c1_r2_2_evw_anime.c index dd4da9ff..4640ef64 100644 --- a/src/data/field/bg/acre/grd_s_c1_r2_2/grd_s_c1_r2_2_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_c1_r2_2/grd_s_c1_r2_2_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_c1_r2_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_c1_r2_2_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_c1_r2_2_evw_anime_1 +extern EVW_ANIME_DATA grd_s_c1_r2_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c1_r2_2_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_c1_r2_3/grd_s_c1_r2_3_evw_anime.c b/src/data/field/bg/acre/grd_s_c1_r2_3/grd_s_c1_r2_3_evw_anime.c index 1b7bb3c7..23de9825 100644 --- a/src/data/field/bg/acre/grd_s_c1_r2_3/grd_s_c1_r2_3_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_c1_r2_3/grd_s_c1_r2_3_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_c1_r2_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_c1_r2_3_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_c1_r2_3_evw_anime_1 +extern EVW_ANIME_DATA grd_s_c1_r2_3_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c1_r2_3_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_c1_r3_1/grd_s_c1_r3_1_evw_anime.c b/src/data/field/bg/acre/grd_s_c1_r3_1/grd_s_c1_r3_1_evw_anime.c index 7b5c73e1..0201f518 100644 --- a/src/data/field/bg/acre/grd_s_c1_r3_1/grd_s_c1_r3_1_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_c1_r3_1/grd_s_c1_r3_1_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_c1_r3_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_c1_r3_1_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_c1_r3_1_evw_anime_1 +extern EVW_ANIME_DATA grd_s_c1_r3_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c1_r3_1_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_c1_r3_2/grd_s_c1_r3_2_evw_anime.c b/src/data/field/bg/acre/grd_s_c1_r3_2/grd_s_c1_r3_2_evw_anime.c index 3d44b58b..ed284713 100644 --- a/src/data/field/bg/acre/grd_s_c1_r3_2/grd_s_c1_r3_2_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_c1_r3_2/grd_s_c1_r3_2_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_c1_r3_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_c1_r3_2_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_c1_r3_2_evw_anime_1 +extern EVW_ANIME_DATA grd_s_c1_r3_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c1_r3_2_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_c1_r3_3/grd_s_c1_r3_3_evw_anime.c b/src/data/field/bg/acre/grd_s_c1_r3_3/grd_s_c1_r3_3_evw_anime.c index 78234e1d..c01a0c71 100644 --- a/src/data/field/bg/acre/grd_s_c1_r3_3/grd_s_c1_r3_3_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_c1_r3_3/grd_s_c1_r3_3_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_c1_r3_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_c1_r3_3_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_c1_r3_3_evw_anime_1 +extern EVW_ANIME_DATA grd_s_c1_r3_3_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c1_r3_3_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_c2_3/grd_s_c2_3_evw_anime.c b/src/data/field/bg/acre/grd_s_c2_3/grd_s_c2_3_evw_anime.c index 92741639..b8b2124b 100644 --- a/src/data/field/bg/acre/grd_s_c2_3/grd_s_c2_3_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_c2_3/grd_s_c2_3_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_c2_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_c2_3_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_c2_3_evw_anime_1 +extern EVW_ANIME_DATA grd_s_c2_3_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c2_3_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_c2_r1_1/grd_s_c2_r1_1_evw_anime.c b/src/data/field/bg/acre/grd_s_c2_r1_1/grd_s_c2_r1_1_evw_anime.c index ab0627fc..67d1be20 100644 --- a/src/data/field/bg/acre/grd_s_c2_r1_1/grd_s_c2_r1_1_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_c2_r1_1/grd_s_c2_r1_1_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_c2_r1_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_c2_r1_1_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_c2_r1_1_evw_anime_1 +extern EVW_ANIME_DATA grd_s_c2_r1_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c2_r1_1_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_c2_r1_2/grd_s_c2_r1_2_evw_anime.c b/src/data/field/bg/acre/grd_s_c2_r1_2/grd_s_c2_r1_2_evw_anime.c index 2b693d42..874d2719 100644 --- a/src/data/field/bg/acre/grd_s_c2_r1_2/grd_s_c2_r1_2_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_c2_r1_2/grd_s_c2_r1_2_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_c2_r1_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_c2_r1_2_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_c2_r1_2_evw_anime_1 +extern EVW_ANIME_DATA grd_s_c2_r1_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c2_r1_2_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_c2_r2_1/grd_s_c2_r2_1_evw_anime.c b/src/data/field/bg/acre/grd_s_c2_r2_1/grd_s_c2_r2_1_evw_anime.c index 214a379e..e63fe9d7 100644 --- a/src/data/field/bg/acre/grd_s_c2_r2_1/grd_s_c2_r2_1_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_c2_r2_1/grd_s_c2_r2_1_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_c2_r2_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_c2_r2_1_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_c2_r2_1_evw_anime_1 +extern EVW_ANIME_DATA grd_s_c2_r2_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c2_r2_1_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_c2_r2_2/grd_s_c2_r2_2_evw_anime.c b/src/data/field/bg/acre/grd_s_c2_r2_2/grd_s_c2_r2_2_evw_anime.c index 9f003415..ed02de0e 100644 --- a/src/data/field/bg/acre/grd_s_c2_r2_2/grd_s_c2_r2_2_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_c2_r2_2/grd_s_c2_r2_2_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_c2_r2_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_c2_r2_2_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_c2_r2_2_evw_anime_1 +extern EVW_ANIME_DATA grd_s_c2_r2_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c2_r2_2_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_c3_2/grd_s_c3_2_evw_anime.c b/src/data/field/bg/acre/grd_s_c3_2/grd_s_c3_2_evw_anime.c index cd492cd5..7a94bb19 100644 --- a/src/data/field/bg/acre/grd_s_c3_2/grd_s_c3_2_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_c3_2/grd_s_c3_2_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_c3_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_c3_2_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_c3_2_evw_anime_1 +extern EVW_ANIME_DATA grd_s_c3_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c3_2_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_c3_r1_1/grd_s_c3_r1_1_evw_anime.c b/src/data/field/bg/acre/grd_s_c3_r1_1/grd_s_c3_r1_1_evw_anime.c index 79c94094..f073ae4a 100644 --- a/src/data/field/bg/acre/grd_s_c3_r1_1/grd_s_c3_r1_1_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_c3_r1_1/grd_s_c3_r1_1_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_c3_r1_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_c3_r1_1_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_c3_r1_1_evw_anime_1 +extern EVW_ANIME_DATA grd_s_c3_r1_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c3_r1_1_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_c3_r1_2/grd_s_c3_r1_2_evw_anime.c b/src/data/field/bg/acre/grd_s_c3_r1_2/grd_s_c3_r1_2_evw_anime.c index 3bdc4bb1..0fe8ac9d 100644 --- a/src/data/field/bg/acre/grd_s_c3_r1_2/grd_s_c3_r1_2_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_c3_r1_2/grd_s_c3_r1_2_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_c3_r1_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_c3_r1_2_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_c3_r1_2_evw_anime_1 +extern EVW_ANIME_DATA grd_s_c3_r1_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c3_r1_2_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_c3_r2_1/grd_s_c3_r2_1_evw_anime.c b/src/data/field/bg/acre/grd_s_c3_r2_1/grd_s_c3_r2_1_evw_anime.c index ed70ba53..d21cb565 100644 --- a/src/data/field/bg/acre/grd_s_c3_r2_1/grd_s_c3_r2_1_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_c3_r2_1/grd_s_c3_r2_1_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_c3_r2_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_c3_r2_1_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_c3_r2_1_evw_anime_1 +extern EVW_ANIME_DATA grd_s_c3_r2_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c3_r2_1_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_c3_r2_2/grd_s_c3_r2_2_evw_anime.c b/src/data/field/bg/acre/grd_s_c3_r2_2/grd_s_c3_r2_2_evw_anime.c index 70633e65..44283598 100644 --- a/src/data/field/bg/acre/grd_s_c3_r2_2/grd_s_c3_r2_2_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_c3_r2_2/grd_s_c3_r2_2_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_c3_r2_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_c3_r2_2_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_c3_r2_2_evw_anime_1 +extern EVW_ANIME_DATA grd_s_c3_r2_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c3_r2_2_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_c3_s_1/grd_s_c3_s_1_evw_anime.c b/src/data/field/bg/acre/grd_s_c3_s_1/grd_s_c3_s_1_evw_anime.c index e43d0d97..60c1d89f 100644 --- a/src/data/field/bg/acre/grd_s_c3_s_1/grd_s_c3_s_1_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_c3_s_1/grd_s_c3_s_1_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_c3_s_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_c3_s_1_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_c3_s_1_evw_anime_1 +extern EVW_ANIME_DATA grd_s_c3_s_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c3_s_1_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_c4_r1_1/grd_s_c4_r1_1_evw_anime.c b/src/data/field/bg/acre/grd_s_c4_r1_1/grd_s_c4_r1_1_evw_anime.c index 6aed98bd..c54ac8c3 100644 --- a/src/data/field/bg/acre/grd_s_c4_r1_1/grd_s_c4_r1_1_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_c4_r1_1/grd_s_c4_r1_1_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_c4_r1_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_c4_r1_1_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_c4_r1_1_evw_anime_1 +extern EVW_ANIME_DATA grd_s_c4_r1_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c4_r1_1_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_c4_r1_2/grd_s_c4_r1_2_evw_anime.c b/src/data/field/bg/acre/grd_s_c4_r1_2/grd_s_c4_r1_2_evw_anime.c index c61cfcd5..2e302cda 100644 --- a/src/data/field/bg/acre/grd_s_c4_r1_2/grd_s_c4_r1_2_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_c4_r1_2/grd_s_c4_r1_2_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_c4_r1_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_c4_r1_2_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_c4_r1_2_evw_anime_1 +extern EVW_ANIME_DATA grd_s_c4_r1_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c4_r1_2_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_c4_r2_1/grd_s_c4_r2_1_evw_anime.c b/src/data/field/bg/acre/grd_s_c4_r2_1/grd_s_c4_r2_1_evw_anime.c index 98d88d89..234ff4d0 100644 --- a/src/data/field/bg/acre/grd_s_c4_r2_1/grd_s_c4_r2_1_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_c4_r2_1/grd_s_c4_r2_1_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_c4_r2_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_c4_r2_1_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_c4_r2_1_evw_anime_1 +extern EVW_ANIME_DATA grd_s_c4_r2_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c4_r2_1_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_c4_r2_2/grd_s_c4_r2_2_evw_anime.c b/src/data/field/bg/acre/grd_s_c4_r2_2/grd_s_c4_r2_2_evw_anime.c index 8c38327a..c5817ce9 100644 --- a/src/data/field/bg/acre/grd_s_c4_r2_2/grd_s_c4_r2_2_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_c4_r2_2/grd_s_c4_r2_2_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_c4_r2_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_c4_r2_2_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_c4_r2_2_evw_anime_1 +extern EVW_ANIME_DATA grd_s_c4_r2_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c4_r2_2_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_c4_r3_1/grd_s_c4_r3_1_evw_anime.c b/src/data/field/bg/acre/grd_s_c4_r3_1/grd_s_c4_r3_1_evw_anime.c index 6d027ee7..bfd8799a 100644 --- a/src/data/field/bg/acre/grd_s_c4_r3_1/grd_s_c4_r3_1_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_c4_r3_1/grd_s_c4_r3_1_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_c4_r3_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_c4_r3_1_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_c4_r3_1_evw_anime_1 +extern EVW_ANIME_DATA grd_s_c4_r3_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c4_r3_1_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_c4_r3_2/grd_s_c4_r3_2_evw_anime.c b/src/data/field/bg/acre/grd_s_c4_r3_2/grd_s_c4_r3_2_evw_anime.c index 468a8c26..933a661a 100644 --- a/src/data/field/bg/acre/grd_s_c4_r3_2/grd_s_c4_r3_2_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_c4_r3_2/grd_s_c4_r3_2_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_c4_r3_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_c4_r3_2_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_c4_r3_2_evw_anime_1 +extern EVW_ANIME_DATA grd_s_c4_r3_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c4_r3_2_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_c5_r1_1/grd_s_c5_r1_1_evw_anime.c b/src/data/field/bg/acre/grd_s_c5_r1_1/grd_s_c5_r1_1_evw_anime.c index 38829ef0..5e038d61 100644 --- a/src/data/field/bg/acre/grd_s_c5_r1_1/grd_s_c5_r1_1_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_c5_r1_1/grd_s_c5_r1_1_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_c5_r1_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_c5_r1_1_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_c5_r1_1_evw_anime_1 +extern EVW_ANIME_DATA grd_s_c5_r1_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c5_r1_1_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_c5_r1_2/grd_s_c5_r1_2_evw_anime.c b/src/data/field/bg/acre/grd_s_c5_r1_2/grd_s_c5_r1_2_evw_anime.c index 7f4376c4..62dcb35c 100644 --- a/src/data/field/bg/acre/grd_s_c5_r1_2/grd_s_c5_r1_2_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_c5_r1_2/grd_s_c5_r1_2_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_c5_r1_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_c5_r1_2_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_c5_r1_2_evw_anime_1 +extern EVW_ANIME_DATA grd_s_c5_r1_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c5_r1_2_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_c5_r2_1/grd_s_c5_r2_1_evw_anime.c b/src/data/field/bg/acre/grd_s_c5_r2_1/grd_s_c5_r2_1_evw_anime.c index 2eb4442a..3e6f8690 100644 --- a/src/data/field/bg/acre/grd_s_c5_r2_1/grd_s_c5_r2_1_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_c5_r2_1/grd_s_c5_r2_1_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_c5_r2_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_c5_r2_1_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_c5_r2_1_evw_anime_1 +extern EVW_ANIME_DATA grd_s_c5_r2_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c5_r2_1_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_c5_r2_2/grd_s_c5_r2_2_evw_anime.c b/src/data/field/bg/acre/grd_s_c5_r2_2/grd_s_c5_r2_2_evw_anime.c index 0f92290e..d462b945 100644 --- a/src/data/field/bg/acre/grd_s_c5_r2_2/grd_s_c5_r2_2_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_c5_r2_2/grd_s_c5_r2_2_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_c5_r2_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_c5_r2_2_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_c5_r2_2_evw_anime_1 +extern EVW_ANIME_DATA grd_s_c5_r2_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c5_r2_2_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_c5_r3_1/grd_s_c5_r3_1_evw_anime.c b/src/data/field/bg/acre/grd_s_c5_r3_1/grd_s_c5_r3_1_evw_anime.c index 54673d5b..8ff18605 100644 --- a/src/data/field/bg/acre/grd_s_c5_r3_1/grd_s_c5_r3_1_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_c5_r3_1/grd_s_c5_r3_1_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_c5_r3_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_c5_r3_1_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_c5_r3_1_evw_anime_1 +extern EVW_ANIME_DATA grd_s_c5_r3_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c5_r3_1_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_c5_r3_2/grd_s_c5_r3_2_evw_anime.c b/src/data/field/bg/acre/grd_s_c5_r3_2/grd_s_c5_r3_2_evw_anime.c index 8c36d4ae..766e4b00 100644 --- a/src/data/field/bg/acre/grd_s_c5_r3_2/grd_s_c5_r3_2_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_c5_r3_2/grd_s_c5_r3_2_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_c5_r3_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_c5_r3_2_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_c5_r3_2_evw_anime_1 +extern EVW_ANIME_DATA grd_s_c5_r3_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c5_r3_2_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_c6_r1_1/grd_s_c6_r1_1_evw_anime.c b/src/data/field/bg/acre/grd_s_c6_r1_1/grd_s_c6_r1_1_evw_anime.c index e67cdefe..12986437 100644 --- a/src/data/field/bg/acre/grd_s_c6_r1_1/grd_s_c6_r1_1_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_c6_r1_1/grd_s_c6_r1_1_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_c6_r1_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_c6_r1_1_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_c6_r1_1_evw_anime_1 +extern EVW_ANIME_DATA grd_s_c6_r1_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c6_r1_1_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_c6_r1_2/grd_s_c6_r1_2_evw_anime.c b/src/data/field/bg/acre/grd_s_c6_r1_2/grd_s_c6_r1_2_evw_anime.c index 8eaa1794..a5fd9b19 100644 --- a/src/data/field/bg/acre/grd_s_c6_r1_2/grd_s_c6_r1_2_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_c6_r1_2/grd_s_c6_r1_2_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_c6_r1_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_c6_r1_2_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_c6_r1_2_evw_anime_1 +extern EVW_ANIME_DATA grd_s_c6_r1_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c6_r1_2_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_c6_r3_1/grd_s_c6_r3_1_evw_anime.c b/src/data/field/bg/acre/grd_s_c6_r3_1/grd_s_c6_r3_1_evw_anime.c index fb046c6d..820cc56c 100644 --- a/src/data/field/bg/acre/grd_s_c6_r3_1/grd_s_c6_r3_1_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_c6_r3_1/grd_s_c6_r3_1_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_c6_r3_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_c6_r3_1_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_c6_r3_1_evw_anime_1 +extern EVW_ANIME_DATA grd_s_c6_r3_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c6_r3_1_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_c7_3/grd_s_c7_3_evw_anime.c b/src/data/field/bg/acre/grd_s_c7_3/grd_s_c7_3_evw_anime.c index e8d12906..9fe4bf22 100644 --- a/src/data/field/bg/acre/grd_s_c7_3/grd_s_c7_3_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_c7_3/grd_s_c7_3_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_c7_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_c7_3_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_c7_3_evw_anime_1 +extern EVW_ANIME_DATA grd_s_c7_3_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c7_3_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_c7_r1_1/grd_s_c7_r1_1_evw_anime.c b/src/data/field/bg/acre/grd_s_c7_r1_1/grd_s_c7_r1_1_evw_anime.c index 25890f88..db9d2eaf 100644 --- a/src/data/field/bg/acre/grd_s_c7_r1_1/grd_s_c7_r1_1_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_c7_r1_1/grd_s_c7_r1_1_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_c7_r1_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_c7_r1_1_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_c7_r1_1_evw_anime_1 +extern EVW_ANIME_DATA grd_s_c7_r1_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c7_r1_1_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_c7_r1_2/grd_s_c7_r1_2_evw_anime.c b/src/data/field/bg/acre/grd_s_c7_r1_2/grd_s_c7_r1_2_evw_anime.c index 066da8e9..3f3dbd25 100644 --- a/src/data/field/bg/acre/grd_s_c7_r1_2/grd_s_c7_r1_2_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_c7_r1_2/grd_s_c7_r1_2_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_c7_r1_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_c7_r1_2_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_c7_r1_2_evw_anime_1 +extern EVW_ANIME_DATA grd_s_c7_r1_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c7_r1_2_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_c7_r3_1/grd_s_c7_r3_1_evw_anime.c b/src/data/field/bg/acre/grd_s_c7_r3_1/grd_s_c7_r3_1_evw_anime.c index c32b644c..3d390a55 100644 --- a/src/data/field/bg/acre/grd_s_c7_r3_1/grd_s_c7_r3_1_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_c7_r3_1/grd_s_c7_r3_1_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_c7_r3_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_c7_r3_1_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_c7_r3_1_evw_anime_1 +extern EVW_ANIME_DATA grd_s_c7_r3_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c7_r3_1_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_c7_r3_2/grd_s_c7_r3_2_evw_anime.c b/src/data/field/bg/acre/grd_s_c7_r3_2/grd_s_c7_r3_2_evw_anime.c index d4f144d6..c27509a0 100644 --- a/src/data/field/bg/acre/grd_s_c7_r3_2/grd_s_c7_r3_2_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_c7_r3_2/grd_s_c7_r3_2_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_c7_r3_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_c7_r3_2_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_c7_r3_2_evw_anime_1 +extern EVW_ANIME_DATA grd_s_c7_r3_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c7_r3_2_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_e1_r1_1/grd_s_e1_r1_1_evw_anime.c b/src/data/field/bg/acre/grd_s_e1_r1_1/grd_s_e1_r1_1_evw_anime.c index 7be2d83a..4642cd6a 100644 --- a/src/data/field/bg/acre/grd_s_e1_r1_1/grd_s_e1_r1_1_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_e1_r1_1/grd_s_e1_r1_1_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_e1_r1_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_e1_r1_1_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_e1_r1_1_evw_anime_1 +extern EVW_ANIME_DATA grd_s_e1_r1_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_e1_r1_1_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_f_4/grd_s_f_4_evw_anime.c b/src/data/field/bg/acre/grd_s_f_4/grd_s_f_4_evw_anime.c index 70be1bb1..091d279a 100644 --- a/src/data/field/bg/acre/grd_s_f_4/grd_s_f_4_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_f_4/grd_s_f_4_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_f_4_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_f_4_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_f_4_evw_anime_1 +extern EVW_ANIME_DATA grd_s_f_4_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_f_4_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_f_5/grd_s_f_5_evw_anime.c b/src/data/field/bg/acre/grd_s_f_5/grd_s_f_5_evw_anime.c index 7307a10f..50810092 100644 --- a/src/data/field/bg/acre/grd_s_f_5/grd_s_f_5_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_f_5/grd_s_f_5_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_f_5_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_f_5_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_f_5_evw_anime_1 +extern EVW_ANIME_DATA grd_s_f_5_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_f_5_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_f_6/grd_s_f_6_evw_anime.c b/src/data/field/bg/acre/grd_s_f_6/grd_s_f_6_evw_anime.c index ec9978f2..c447f626 100644 --- a/src/data/field/bg/acre/grd_s_f_6/grd_s_f_6_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_f_6/grd_s_f_6_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_f_6_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_f_6_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_f_6_evw_anime_1 +extern EVW_ANIME_DATA grd_s_f_6_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_f_6_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_f_ko_3/grd_s_f_ko_3_evw_anime.c b/src/data/field/bg/acre/grd_s_f_ko_3/grd_s_f_ko_3_evw_anime.c index c283ad37..72c15fe4 100644 --- a/src/data/field/bg/acre/grd_s_f_ko_3/grd_s_f_ko_3_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_f_ko_3/grd_s_f_ko_3_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_f_ko_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_f_ko_3_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_f_ko_3_evw_anime_1 +extern EVW_ANIME_DATA grd_s_f_ko_3_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_f_ko_3_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_f_mu_3/grd_s_f_mu_3_evw_anime.c b/src/data/field/bg/acre/grd_s_f_mu_3/grd_s_f_mu_3_evw_anime.c index 95962f6e..4f461e72 100644 --- a/src/data/field/bg/acre/grd_s_f_mu_3/grd_s_f_mu_3_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_f_mu_3/grd_s_f_mu_3_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_f_mu_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_f_mu_3_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_f_mu_3_evw_anime_1 +extern EVW_ANIME_DATA grd_s_f_mu_3_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_f_mu_3_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_m_r1_1/grd_s_m_r1_1_evw_anime.c b/src/data/field/bg/acre/grd_s_m_r1_1/grd_s_m_r1_1_evw_anime.c index 1b38db5d..4cf25c1d 100644 --- a/src/data/field/bg/acre/grd_s_m_r1_1/grd_s_m_r1_1_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_m_r1_1/grd_s_m_r1_1_evw_anime.c @@ -2,8 +2,9 @@ static EVW_ANIME_SCROLL grd_s_m_r1_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_m_r1_1_evw_anime = { - 1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_m_r1_1_evw_anime_1 +static EVW_ANIME_SCROLL grd_s_m_r1_1_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_m_r1_1_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_m_r1_1_evw_anime_1 }, + { -2, EVW_ANIME_TYPE_SCROLL2, grd_s_m_r1_1_evw_anime_4 }, }; diff --git a/src/data/field/bg/acre/grd_s_m_r1_2/grd_s_m_r1_2_evw_anime.c b/src/data/field/bg/acre/grd_s_m_r1_2/grd_s_m_r1_2_evw_anime.c index 785dadc0..a9c3f198 100644 --- a/src/data/field/bg/acre/grd_s_m_r1_2/grd_s_m_r1_2_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_m_r1_2/grd_s_m_r1_2_evw_anime.c @@ -2,8 +2,9 @@ static EVW_ANIME_SCROLL grd_s_m_r1_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_m_r1_2_evw_anime = { - 1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_m_r1_2_evw_anime_1 +static EVW_ANIME_SCROLL grd_s_m_r1_2_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_m_r1_2_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_m_r1_2_evw_anime_1 }, + { -2, EVW_ANIME_TYPE_SCROLL2, grd_s_m_r1_2_evw_anime_4 }, }; diff --git a/src/data/field/bg/acre/grd_s_m_r1_3/grd_s_m_r1_3_evw_anime.c b/src/data/field/bg/acre/grd_s_m_r1_3/grd_s_m_r1_3_evw_anime.c index 72f07eca..33231d65 100644 --- a/src/data/field/bg/acre/grd_s_m_r1_3/grd_s_m_r1_3_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_m_r1_3/grd_s_m_r1_3_evw_anime.c @@ -2,8 +2,9 @@ static EVW_ANIME_SCROLL grd_s_m_r1_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_m_r1_3_evw_anime = { - 1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_m_r1_3_evw_anime_1 +static EVW_ANIME_SCROLL grd_s_m_r1_3_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_m_r1_3_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_m_r1_3_evw_anime_1 }, + { -2, EVW_ANIME_TYPE_SCROLL2, grd_s_m_r1_3_evw_anime_4 }, }; diff --git a/src/data/field/bg/acre/grd_s_m_r1_4/grd_s_m_r1_4_evw_anime.c b/src/data/field/bg/acre/grd_s_m_r1_4/grd_s_m_r1_4_evw_anime.c index c9c325b7..4e639d94 100644 --- a/src/data/field/bg/acre/grd_s_m_r1_4/grd_s_m_r1_4_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_m_r1_4/grd_s_m_r1_4_evw_anime.c @@ -2,8 +2,9 @@ static EVW_ANIME_SCROLL grd_s_m_r1_4_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_m_r1_4_evw_anime = { - 1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_m_r1_4_evw_anime_1 +static EVW_ANIME_SCROLL grd_s_m_r1_4_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_m_r1_4_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_m_r1_4_evw_anime_1 }, + { -2, EVW_ANIME_TYPE_SCROLL2, grd_s_m_r1_4_evw_anime_4 }, }; diff --git a/src/data/field/bg/acre/grd_s_m_r1_5/grd_s_m_r1_5_evw_anime.c b/src/data/field/bg/acre/grd_s_m_r1_5/grd_s_m_r1_5_evw_anime.c index 9eca718a..13a5b227 100644 --- a/src/data/field/bg/acre/grd_s_m_r1_5/grd_s_m_r1_5_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_m_r1_5/grd_s_m_r1_5_evw_anime.c @@ -2,8 +2,9 @@ static EVW_ANIME_SCROLL grd_s_m_r1_5_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_m_r1_5_evw_anime = { - 1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_m_r1_5_evw_anime_1 +static EVW_ANIME_SCROLL grd_s_m_r1_5_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_m_r1_5_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_m_r1_5_evw_anime_1 }, + { -2, EVW_ANIME_TYPE_SCROLL2, grd_s_m_r1_5_evw_anime_4 }, }; diff --git a/src/data/field/bg/acre/grd_s_m_r1_b_1/grd_s_m_r1_b_1_evw_anime.c b/src/data/field/bg/acre/grd_s_m_r1_b_1/grd_s_m_r1_b_1_evw_anime.c index ec71f795..1e3d9170 100644 --- a/src/data/field/bg/acre/grd_s_m_r1_b_1/grd_s_m_r1_b_1_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_m_r1_b_1/grd_s_m_r1_b_1_evw_anime.c @@ -2,8 +2,9 @@ static EVW_ANIME_SCROLL grd_s_m_r1_b_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_m_r1_b_1_evw_anime = { - 1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_m_r1_b_1_evw_anime_1 +static EVW_ANIME_SCROLL grd_s_m_r1_b_1_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_m_r1_b_1_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_m_r1_b_1_evw_anime_1 }, + { -2, EVW_ANIME_TYPE_SCROLL2, grd_s_m_r1_b_1_evw_anime_4 }, }; diff --git a/src/data/field/bg/acre/grd_s_m_r1_b_2/grd_s_m_r1_b_2_evw_anime.c b/src/data/field/bg/acre/grd_s_m_r1_b_2/grd_s_m_r1_b_2_evw_anime.c index b550512f..41db610d 100644 --- a/src/data/field/bg/acre/grd_s_m_r1_b_2/grd_s_m_r1_b_2_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_m_r1_b_2/grd_s_m_r1_b_2_evw_anime.c @@ -2,8 +2,9 @@ static EVW_ANIME_SCROLL grd_s_m_r1_b_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_m_r1_b_2_evw_anime = { - 1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_m_r1_b_2_evw_anime_1 +static EVW_ANIME_SCROLL grd_s_m_r1_b_2_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_m_r1_b_2_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_m_r1_b_2_evw_anime_1 }, + { -2, EVW_ANIME_TYPE_SCROLL2, grd_s_m_r1_b_2_evw_anime_4 }, }; diff --git a/src/data/field/bg/acre/grd_s_m_r1_b_3/grd_s_m_r1_b_3_evw_anime.c b/src/data/field/bg/acre/grd_s_m_r1_b_3/grd_s_m_r1_b_3_evw_anime.c index 845cdaa2..49a3acb0 100644 --- a/src/data/field/bg/acre/grd_s_m_r1_b_3/grd_s_m_r1_b_3_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_m_r1_b_3/grd_s_m_r1_b_3_evw_anime.c @@ -2,8 +2,9 @@ static EVW_ANIME_SCROLL grd_s_m_r1_b_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_m_r1_b_3_evw_anime = { - 1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_m_r1_b_3_evw_anime_1 +static EVW_ANIME_SCROLL grd_s_m_r1_b_3_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_m_r1_b_3_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_m_r1_b_3_evw_anime_1 }, + { -2, EVW_ANIME_TYPE_SCROLL2, grd_s_m_r1_b_3_evw_anime_4 }, }; diff --git a/src/data/field/bg/acre/grd_s_m_ta_1/grd_s_m_ta_1_evw_anime.c b/src/data/field/bg/acre/grd_s_m_ta_1/grd_s_m_ta_1_evw_anime.c index 57aee7eb..5bc34166 100644 --- a/src/data/field/bg/acre/grd_s_m_ta_1/grd_s_m_ta_1_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_m_ta_1/grd_s_m_ta_1_evw_anime.c @@ -2,8 +2,9 @@ static EVW_ANIME_SCROLL grd_s_m_ta_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_m_ta_1_evw_anime = { - 1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_m_ta_1_evw_anime_1 +static EVW_ANIME_SCROLL grd_s_m_ta_1_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_m_ta_1_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_m_ta_1_evw_anime_1 }, + { -2, EVW_ANIME_TYPE_SCROLL2, grd_s_m_ta_1_evw_anime_4 }, }; diff --git a/src/data/field/bg/acre/grd_s_m_ta_2/grd_s_m_ta_2_evw_anime.c b/src/data/field/bg/acre/grd_s_m_ta_2/grd_s_m_ta_2_evw_anime.c index 3162cd94..2387e246 100644 --- a/src/data/field/bg/acre/grd_s_m_ta_2/grd_s_m_ta_2_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_m_ta_2/grd_s_m_ta_2_evw_anime.c @@ -2,8 +2,9 @@ static EVW_ANIME_SCROLL grd_s_m_ta_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_m_ta_2_evw_anime = { - 1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_m_ta_2_evw_anime_1 +static EVW_ANIME_SCROLL grd_s_m_ta_2_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_m_ta_2_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_m_ta_2_evw_anime_1 }, + { -2, EVW_ANIME_TYPE_SCROLL2, grd_s_m_ta_2_evw_anime_4 }, }; diff --git a/src/data/field/bg/acre/grd_s_m_ta_3/grd_s_m_ta_3_evw_anime.c b/src/data/field/bg/acre/grd_s_m_ta_3/grd_s_m_ta_3_evw_anime.c index b47d2bcf..cf006e75 100644 --- a/src/data/field/bg/acre/grd_s_m_ta_3/grd_s_m_ta_3_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_m_ta_3/grd_s_m_ta_3_evw_anime.c @@ -2,8 +2,9 @@ static EVW_ANIME_SCROLL grd_s_m_ta_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_m_ta_3_evw_anime = { - 1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_m_ta_3_evw_anime_1 +static EVW_ANIME_SCROLL grd_s_m_ta_3_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_m_ta_3_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_m_ta_3_evw_anime_1 }, + { -2, EVW_ANIME_TYPE_SCROLL2, grd_s_m_ta_3_evw_anime_4 }, }; diff --git a/src/data/field/bg/acre/grd_s_m_wf_1/grd_s_m_wf_1_evw_anime.c b/src/data/field/bg/acre/grd_s_m_wf_1/grd_s_m_wf_1_evw_anime.c index b9ff8fc4..f2eb095d 100644 --- a/src/data/field/bg/acre/grd_s_m_wf_1/grd_s_m_wf_1_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_m_wf_1/grd_s_m_wf_1_evw_anime.c @@ -2,8 +2,15 @@ static EVW_ANIME_SCROLL grd_s_m_wf_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_m_wf_1_evw_anime = { - 1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_m_wf_1_evw_anime_1 +static EVW_ANIME_SCROLL grd_s_m_wf_1_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_m_wf_1_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_m_wf_1_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_m_wf_1_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_m_wf_1_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_m_wf_1_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_m_wf_1_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_m_wf_1_evw_anime_4 }, }; diff --git a/src/data/field/bg/acre/grd_s_m_wf_2/grd_s_m_wf_2_evw_anime.c b/src/data/field/bg/acre/grd_s_m_wf_2/grd_s_m_wf_2_evw_anime.c index 9f0d7649..dbf7b3a3 100644 --- a/src/data/field/bg/acre/grd_s_m_wf_2/grd_s_m_wf_2_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_m_wf_2/grd_s_m_wf_2_evw_anime.c @@ -2,8 +2,15 @@ static EVW_ANIME_SCROLL grd_s_m_wf_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_m_wf_2_evw_anime = { - 1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_m_wf_2_evw_anime_1 +static EVW_ANIME_SCROLL grd_s_m_wf_2_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_m_wf_2_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_m_wf_2_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_m_wf_2_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_m_wf_2_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_m_wf_2_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_m_wf_2_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_m_wf_2_evw_anime_4 }, }; diff --git a/src/data/field/bg/acre/grd_s_m_wf_3/grd_s_m_wf_3_evw_anime.c b/src/data/field/bg/acre/grd_s_m_wf_3/grd_s_m_wf_3_evw_anime.c index 9bbe2f33..d8303976 100644 --- a/src/data/field/bg/acre/grd_s_m_wf_3/grd_s_m_wf_3_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_m_wf_3/grd_s_m_wf_3_evw_anime.c @@ -2,8 +2,15 @@ static EVW_ANIME_SCROLL grd_s_m_wf_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_m_wf_3_evw_anime = { - 1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_m_wf_3_evw_anime_1 +static EVW_ANIME_SCROLL grd_s_m_wf_3_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_m_wf_3_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_m_wf_3_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_m_wf_3_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_m_wf_3_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_m_wf_3_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_m_wf_3_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_m_wf_3_evw_anime_4 }, }; diff --git a/src/data/field/bg/acre/grd_s_o_1/grd_s_o_1_evw_anime.c b/src/data/field/bg/acre/grd_s_o_1/grd_s_o_1_evw_anime.c index 58a7c4ee..6e963c2f 100644 --- a/src/data/field/bg/acre/grd_s_o_1/grd_s_o_1_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_o_1/grd_s_o_1_evw_anime.c @@ -2,8 +2,15 @@ static EVW_ANIME_SCROLL grd_s_o_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_o_1_evw_anime = { - 1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_o_1_evw_anime_1 +static EVW_ANIME_SCROLL grd_s_o_1_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_o_1_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_1_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_1_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_o_1_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_o_1_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_o_1_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_o_1_evw_anime_4 }, }; diff --git a/src/data/field/bg/acre/grd_s_o_10/grd_s_o_10_evw_anime.c b/src/data/field/bg/acre/grd_s_o_10/grd_s_o_10_evw_anime.c index 08fe13f6..7dd36f46 100644 --- a/src/data/field/bg/acre/grd_s_o_10/grd_s_o_10_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_o_10/grd_s_o_10_evw_anime.c @@ -2,8 +2,15 @@ static EVW_ANIME_SCROLL grd_s_o_10_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_o_10_evw_anime = { - 1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_o_10_evw_anime_1 +static EVW_ANIME_SCROLL grd_s_o_10_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_o_10_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_10_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_10_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_o_10_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_o_10_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_o_10_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_o_10_evw_anime_4 }, }; diff --git a/src/data/field/bg/acre/grd_s_o_2/grd_s_o_2_evw_anime.c b/src/data/field/bg/acre/grd_s_o_2/grd_s_o_2_evw_anime.c index 65cacabc..234d1db5 100644 --- a/src/data/field/bg/acre/grd_s_o_2/grd_s_o_2_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_o_2/grd_s_o_2_evw_anime.c @@ -2,8 +2,15 @@ static EVW_ANIME_SCROLL grd_s_o_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_o_2_evw_anime = { - 1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_o_2_evw_anime_1 +static EVW_ANIME_SCROLL grd_s_o_2_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_o_2_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_2_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_2_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_o_2_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_o_2_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_o_2_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_o_2_evw_anime_4 }, }; diff --git a/src/data/field/bg/acre/grd_s_o_3/grd_s_o_3_evw_anime.c b/src/data/field/bg/acre/grd_s_o_3/grd_s_o_3_evw_anime.c index fe41ae28..07d6967f 100644 --- a/src/data/field/bg/acre/grd_s_o_3/grd_s_o_3_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_o_3/grd_s_o_3_evw_anime.c @@ -2,8 +2,15 @@ static EVW_ANIME_SCROLL grd_s_o_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_o_3_evw_anime = { - 1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_o_3_evw_anime_1 +static EVW_ANIME_SCROLL grd_s_o_3_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_o_3_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_3_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_3_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_o_3_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_o_3_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_o_3_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_o_3_evw_anime_4 }, }; diff --git a/src/data/field/bg/acre/grd_s_o_4/grd_s_o_4_evw_anime.c b/src/data/field/bg/acre/grd_s_o_4/grd_s_o_4_evw_anime.c index 675a50dd..f6833c6c 100644 --- a/src/data/field/bg/acre/grd_s_o_4/grd_s_o_4_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_o_4/grd_s_o_4_evw_anime.c @@ -2,8 +2,15 @@ static EVW_ANIME_SCROLL grd_s_o_4_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_o_4_evw_anime = { - 1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_o_4_evw_anime_1 +static EVW_ANIME_SCROLL grd_s_o_4_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_o_4_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_4_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_4_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_o_4_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_o_4_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_o_4_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_o_4_evw_anime_4 }, }; diff --git a/src/data/field/bg/acre/grd_s_o_5/grd_s_o_5_evw_anime.c b/src/data/field/bg/acre/grd_s_o_5/grd_s_o_5_evw_anime.c index 8abe7dde..7ccc2669 100644 --- a/src/data/field/bg/acre/grd_s_o_5/grd_s_o_5_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_o_5/grd_s_o_5_evw_anime.c @@ -2,8 +2,15 @@ static EVW_ANIME_SCROLL grd_s_o_5_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_o_5_evw_anime = { - 1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_o_5_evw_anime_1 +static EVW_ANIME_SCROLL grd_s_o_5_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_o_5_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_5_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_5_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_o_5_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_o_5_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_o_5_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_o_5_evw_anime_4 }, }; diff --git a/src/data/field/bg/acre/grd_s_o_6/grd_s_o_6_evw_anime.c b/src/data/field/bg/acre/grd_s_o_6/grd_s_o_6_evw_anime.c index 8d208d58..f85f7f5f 100644 --- a/src/data/field/bg/acre/grd_s_o_6/grd_s_o_6_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_o_6/grd_s_o_6_evw_anime.c @@ -2,8 +2,15 @@ static EVW_ANIME_SCROLL grd_s_o_6_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_o_6_evw_anime = { - 1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_o_6_evw_anime_1 +static EVW_ANIME_SCROLL grd_s_o_6_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_o_6_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_6_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_6_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_o_6_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_o_6_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_o_6_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_o_6_evw_anime_4 }, }; diff --git a/src/data/field/bg/acre/grd_s_o_7/grd_s_o_7_evw_anime.c b/src/data/field/bg/acre/grd_s_o_7/grd_s_o_7_evw_anime.c index 04673510..912934a4 100644 --- a/src/data/field/bg/acre/grd_s_o_7/grd_s_o_7_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_o_7/grd_s_o_7_evw_anime.c @@ -2,8 +2,15 @@ static EVW_ANIME_SCROLL grd_s_o_7_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_o_7_evw_anime = { - 1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_o_7_evw_anime_1 +static EVW_ANIME_SCROLL grd_s_o_7_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_o_7_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_7_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_7_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_o_7_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_o_7_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_o_7_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_o_7_evw_anime_4 }, }; diff --git a/src/data/field/bg/acre/grd_s_o_8/grd_s_o_8_evw_anime.c b/src/data/field/bg/acre/grd_s_o_8/grd_s_o_8_evw_anime.c index 150f2b7e..28dc5167 100644 --- a/src/data/field/bg/acre/grd_s_o_8/grd_s_o_8_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_o_8/grd_s_o_8_evw_anime.c @@ -2,8 +2,15 @@ static EVW_ANIME_SCROLL grd_s_o_8_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_o_8_evw_anime = { - 1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_o_8_evw_anime_1 +static EVW_ANIME_SCROLL grd_s_o_8_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_o_8_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_8_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_8_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_o_8_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_o_8_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_o_8_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_o_8_evw_anime_4 }, }; diff --git a/src/data/field/bg/acre/grd_s_o_9/grd_s_o_9_evw_anime.c b/src/data/field/bg/acre/grd_s_o_9/grd_s_o_9_evw_anime.c index c09a580c..6d886536 100644 --- a/src/data/field/bg/acre/grd_s_o_9/grd_s_o_9_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_o_9/grd_s_o_9_evw_anime.c @@ -2,8 +2,15 @@ static EVW_ANIME_SCROLL grd_s_o_9_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_o_9_evw_anime = { - 1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_o_9_evw_anime_1 +static EVW_ANIME_SCROLL grd_s_o_9_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_o_9_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_9_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_9_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_o_9_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_o_9_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_o_9_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_o_9_evw_anime_4 }, }; diff --git a/src/data/field/bg/acre/grd_s_o_i_2/grd_s_o_i_2_evw_anime.c b/src/data/field/bg/acre/grd_s_o_i_2/grd_s_o_i_2_evw_anime.c index b5a6aa5a..760e8d30 100644 --- a/src/data/field/bg/acre/grd_s_o_i_2/grd_s_o_i_2_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_o_i_2/grd_s_o_i_2_evw_anime.c @@ -2,8 +2,15 @@ static EVW_ANIME_SCROLL grd_s_o_i_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_o_i_2_evw_anime = { - 1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_o_i_2_evw_anime_1 +static EVW_ANIME_SCROLL grd_s_o_i_2_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_o_i_2_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_i_2_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_i_2_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_o_i_2_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_o_i_2_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_o_i_2_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_o_i_2_evw_anime_4 }, }; diff --git a/src/data/field/bg/acre/grd_s_o_r1_1/grd_s_o_r1_1_evw_anime.c b/src/data/field/bg/acre/grd_s_o_r1_1/grd_s_o_r1_1_evw_anime.c index d920466a..4c76352b 100644 --- a/src/data/field/bg/acre/grd_s_o_r1_1/grd_s_o_r1_1_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_o_r1_1/grd_s_o_r1_1_evw_anime.c @@ -2,8 +2,15 @@ static EVW_ANIME_SCROLL grd_s_o_r1_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_o_r1_1_evw_anime = { - 1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_o_r1_1_evw_anime_1 +static EVW_ANIME_SCROLL grd_s_o_r1_1_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_o_r1_1_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_r1_1_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_r1_1_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_1_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_1_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_1_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_1_evw_anime_4 }, }; diff --git a/src/data/field/bg/acre/grd_s_o_r1_2/grd_s_o_r1_2_evw_anime.c b/src/data/field/bg/acre/grd_s_o_r1_2/grd_s_o_r1_2_evw_anime.c index 43c29d5b..a4ae01a1 100644 --- a/src/data/field/bg/acre/grd_s_o_r1_2/grd_s_o_r1_2_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_o_r1_2/grd_s_o_r1_2_evw_anime.c @@ -2,8 +2,15 @@ static EVW_ANIME_SCROLL grd_s_o_r1_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_o_r1_2_evw_anime = { - 1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_o_r1_2_evw_anime_1 +static EVW_ANIME_SCROLL grd_s_o_r1_2_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_o_r1_2_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_r1_2_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_r1_2_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_2_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_2_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_2_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_2_evw_anime_4 }, }; diff --git a/src/data/field/bg/acre/grd_s_o_r1_3/grd_s_o_r1_3_evw_anime.c b/src/data/field/bg/acre/grd_s_o_r1_3/grd_s_o_r1_3_evw_anime.c index 6723b4a4..178c5c2a 100644 --- a/src/data/field/bg/acre/grd_s_o_r1_3/grd_s_o_r1_3_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_o_r1_3/grd_s_o_r1_3_evw_anime.c @@ -2,8 +2,15 @@ static EVW_ANIME_SCROLL grd_s_o_r1_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_o_r1_3_evw_anime = { - 1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_o_r1_3_evw_anime_1 +static EVW_ANIME_SCROLL grd_s_o_r1_3_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_o_r1_3_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_r1_3_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_r1_3_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_3_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_3_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_3_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_3_evw_anime_4 }, }; diff --git a/src/data/field/bg/acre/grd_s_o_r1_4/grd_s_o_r1_4_evw_anime.c b/src/data/field/bg/acre/grd_s_o_r1_4/grd_s_o_r1_4_evw_anime.c index 9b5dfbce..145aec19 100644 --- a/src/data/field/bg/acre/grd_s_o_r1_4/grd_s_o_r1_4_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_o_r1_4/grd_s_o_r1_4_evw_anime.c @@ -2,8 +2,15 @@ static EVW_ANIME_SCROLL grd_s_o_r1_4_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_o_r1_4_evw_anime = { - 1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_o_r1_4_evw_anime_1 +static EVW_ANIME_SCROLL grd_s_o_r1_4_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_o_r1_4_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_r1_4_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_r1_4_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_4_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_4_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_4_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_4_evw_anime_4 }, }; diff --git a/src/data/field/bg/acre/grd_s_o_r1_5/grd_s_o_r1_5_evw_anime.c b/src/data/field/bg/acre/grd_s_o_r1_5/grd_s_o_r1_5_evw_anime.c index 019144fa..c0445881 100644 --- a/src/data/field/bg/acre/grd_s_o_r1_5/grd_s_o_r1_5_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_o_r1_5/grd_s_o_r1_5_evw_anime.c @@ -2,8 +2,15 @@ static EVW_ANIME_SCROLL grd_s_o_r1_5_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_o_r1_5_evw_anime = { - 1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_o_r1_5_evw_anime_1 +static EVW_ANIME_SCROLL grd_s_o_r1_5_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_o_r1_5_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_r1_5_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_r1_5_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_5_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_5_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_5_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_5_evw_anime_4 }, }; diff --git a/src/data/field/bg/acre/grd_s_o_r1_b_1/grd_s_o_r1_b_1_evw_anime.c b/src/data/field/bg/acre/grd_s_o_r1_b_1/grd_s_o_r1_b_1_evw_anime.c index 30d60a21..ece7a146 100644 --- a/src/data/field/bg/acre/grd_s_o_r1_b_1/grd_s_o_r1_b_1_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_o_r1_b_1/grd_s_o_r1_b_1_evw_anime.c @@ -2,8 +2,15 @@ static EVW_ANIME_SCROLL grd_s_o_r1_b_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_o_r1_b_1_evw_anime = { - 1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_o_r1_b_1_evw_anime_1 +static EVW_ANIME_SCROLL grd_s_o_r1_b_1_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_o_r1_b_1_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_r1_b_1_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_r1_b_1_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_b_1_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_b_1_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_b_1_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_b_1_evw_anime_4 }, }; diff --git a/src/data/field/bg/acre/grd_s_o_r1_b_2/grd_s_o_r1_b_2_evw_anime.c b/src/data/field/bg/acre/grd_s_o_r1_b_2/grd_s_o_r1_b_2_evw_anime.c index f59e95ce..3ca151eb 100644 --- a/src/data/field/bg/acre/grd_s_o_r1_b_2/grd_s_o_r1_b_2_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_o_r1_b_2/grd_s_o_r1_b_2_evw_anime.c @@ -2,8 +2,15 @@ static EVW_ANIME_SCROLL grd_s_o_r1_b_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_o_r1_b_2_evw_anime = { - 1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_o_r1_b_2_evw_anime_1 +static EVW_ANIME_SCROLL grd_s_o_r1_b_2_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_o_r1_b_2_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_r1_b_2_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_r1_b_2_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_b_2_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_b_2_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_b_2_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_b_2_evw_anime_4 }, }; diff --git a/src/data/field/bg/acre/grd_s_o_r1_b_3/grd_s_o_r1_b_3_evw_anime.c b/src/data/field/bg/acre/grd_s_o_r1_b_3/grd_s_o_r1_b_3_evw_anime.c index e1a77cbc..23132a06 100644 --- a/src/data/field/bg/acre/grd_s_o_r1_b_3/grd_s_o_r1_b_3_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_o_r1_b_3/grd_s_o_r1_b_3_evw_anime.c @@ -2,8 +2,15 @@ static EVW_ANIME_SCROLL grd_s_o_r1_b_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_o_r1_b_3_evw_anime = { - 1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_o_r1_b_3_evw_anime_1 +static EVW_ANIME_SCROLL grd_s_o_r1_b_3_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_o_r1_b_3_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_r1_b_3_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_r1_b_3_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_b_3_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_b_3_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_b_3_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_b_3_evw_anime_4 }, }; diff --git a/src/data/field/bg/acre/grd_s_o_ta_1/grd_s_o_ta_1_evw_anime.c b/src/data/field/bg/acre/grd_s_o_ta_1/grd_s_o_ta_1_evw_anime.c index 192d42d1..652c9771 100644 --- a/src/data/field/bg/acre/grd_s_o_ta_1/grd_s_o_ta_1_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_o_ta_1/grd_s_o_ta_1_evw_anime.c @@ -2,8 +2,15 @@ static EVW_ANIME_SCROLL grd_s_o_ta_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_o_ta_1_evw_anime = { - 1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_o_ta_1_evw_anime_1 +static EVW_ANIME_SCROLL grd_s_o_ta_1_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_o_ta_1_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_ta_1_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_ta_1_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_o_ta_1_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_o_ta_1_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_o_ta_1_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_o_ta_1_evw_anime_4 }, }; diff --git a/src/data/field/bg/acre/grd_s_o_ta_2/grd_s_o_ta_2_evw_anime.c b/src/data/field/bg/acre/grd_s_o_ta_2/grd_s_o_ta_2_evw_anime.c index 66169282..350aa3ac 100644 --- a/src/data/field/bg/acre/grd_s_o_ta_2/grd_s_o_ta_2_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_o_ta_2/grd_s_o_ta_2_evw_anime.c @@ -2,8 +2,15 @@ static EVW_ANIME_SCROLL grd_s_o_ta_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_o_ta_2_evw_anime = { - 1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_o_ta_2_evw_anime_1 +static EVW_ANIME_SCROLL grd_s_o_ta_2_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_o_ta_2_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_ta_2_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_ta_2_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_o_ta_2_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_o_ta_2_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_o_ta_2_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_o_ta_2_evw_anime_4 }, }; diff --git a/src/data/field/bg/acre/grd_s_o_ta_3/grd_s_o_ta_3_evw_anime.c b/src/data/field/bg/acre/grd_s_o_ta_3/grd_s_o_ta_3_evw_anime.c index cf5528a6..359efe4c 100644 --- a/src/data/field/bg/acre/grd_s_o_ta_3/grd_s_o_ta_3_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_o_ta_3/grd_s_o_ta_3_evw_anime.c @@ -2,8 +2,15 @@ static EVW_ANIME_SCROLL grd_s_o_ta_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_o_ta_3_evw_anime = { - 1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_o_ta_3_evw_anime_1 +static EVW_ANIME_SCROLL grd_s_o_ta_3_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_o_ta_3_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_ta_3_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_ta_3_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_o_ta_3_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_o_ta_3_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_o_ta_3_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_o_ta_3_evw_anime_4 }, }; diff --git a/src/data/field/bg/acre/grd_s_o_wf_1/grd_s_o_wf_1_evw_anime.c b/src/data/field/bg/acre/grd_s_o_wf_1/grd_s_o_wf_1_evw_anime.c index 1e8a60a9..10b70687 100644 --- a/src/data/field/bg/acre/grd_s_o_wf_1/grd_s_o_wf_1_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_o_wf_1/grd_s_o_wf_1_evw_anime.c @@ -2,8 +2,15 @@ static EVW_ANIME_SCROLL grd_s_o_wf_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_o_wf_1_evw_anime = { - 1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_o_wf_1_evw_anime_1 +static EVW_ANIME_SCROLL grd_s_o_wf_1_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_o_wf_1_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_wf_1_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_wf_1_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_o_wf_1_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_o_wf_1_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_o_wf_1_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_o_wf_1_evw_anime_4 }, }; diff --git a/src/data/field/bg/acre/grd_s_o_wf_2/grd_s_o_wf_2_evw_anime.c b/src/data/field/bg/acre/grd_s_o_wf_2/grd_s_o_wf_2_evw_anime.c index 046649d8..7e2f585b 100644 --- a/src/data/field/bg/acre/grd_s_o_wf_2/grd_s_o_wf_2_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_o_wf_2/grd_s_o_wf_2_evw_anime.c @@ -2,8 +2,15 @@ static EVW_ANIME_SCROLL grd_s_o_wf_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_o_wf_2_evw_anime = { - 1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_o_wf_2_evw_anime_1 +static EVW_ANIME_SCROLL grd_s_o_wf_2_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_o_wf_2_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_wf_2_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_wf_2_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_o_wf_2_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_o_wf_2_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_o_wf_2_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_o_wf_2_evw_anime_4 }, }; diff --git a/src/data/field/bg/acre/grd_s_o_wf_3/grd_s_o_wf_3_evw_anime.c b/src/data/field/bg/acre/grd_s_o_wf_3/grd_s_o_wf_3_evw_anime.c index 0e72b118..507125e2 100644 --- a/src/data/field/bg/acre/grd_s_o_wf_3/grd_s_o_wf_3_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_o_wf_3/grd_s_o_wf_3_evw_anime.c @@ -2,8 +2,15 @@ static EVW_ANIME_SCROLL grd_s_o_wf_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_o_wf_3_evw_anime = { - 1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_o_wf_3_evw_anime_1 +static EVW_ANIME_SCROLL grd_s_o_wf_3_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_o_wf_3_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_wf_3_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_wf_3_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_o_wf_3_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_o_wf_3_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_o_wf_3_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_o_wf_3_evw_anime_4 }, }; diff --git a/src/data/field/bg/acre/grd_s_r1_1/grd_s_r1_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r1_1/grd_s_r1_1_evw_anime.c index 9cdc68dc..29f5df31 100644 --- a/src/data/field/bg/acre/grd_s_r1_1/grd_s_r1_1_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_r1_1/grd_s_r1_1_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_r1_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_r1_1_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_r1_1_evw_anime_1 +extern EVW_ANIME_DATA grd_s_r1_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r1_1_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_r1_2/grd_s_r1_2_evw_anime.c b/src/data/field/bg/acre/grd_s_r1_2/grd_s_r1_2_evw_anime.c index e61d3983..ae24da36 100644 --- a/src/data/field/bg/acre/grd_s_r1_2/grd_s_r1_2_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_r1_2/grd_s_r1_2_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_r1_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_r1_2_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_r1_2_evw_anime_1 +extern EVW_ANIME_DATA grd_s_r1_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r1_2_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_r1_3/grd_s_r1_3_evw_anime.c b/src/data/field/bg/acre/grd_s_r1_3/grd_s_r1_3_evw_anime.c index 6f2dc9de..a6a4e0d8 100644 --- a/src/data/field/bg/acre/grd_s_r1_3/grd_s_r1_3_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_r1_3/grd_s_r1_3_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_r1_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_r1_3_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_r1_3_evw_anime_1 +extern EVW_ANIME_DATA grd_s_r1_3_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r1_3_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_r1_4/grd_s_r1_4_evw_anime.c b/src/data/field/bg/acre/grd_s_r1_4/grd_s_r1_4_evw_anime.c index 7f275183..b7720262 100644 --- a/src/data/field/bg/acre/grd_s_r1_4/grd_s_r1_4_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_r1_4/grd_s_r1_4_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_r1_4_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_r1_4_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_r1_4_evw_anime_1 +extern EVW_ANIME_DATA grd_s_r1_4_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r1_4_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_r1_b_1/grd_s_r1_b_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r1_b_1/grd_s_r1_b_1_evw_anime.c index aaeff15e..957c7b73 100644 --- a/src/data/field/bg/acre/grd_s_r1_b_1/grd_s_r1_b_1_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_r1_b_1/grd_s_r1_b_1_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_r1_b_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_r1_b_1_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_r1_b_1_evw_anime_1 +extern EVW_ANIME_DATA grd_s_r1_b_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r1_b_1_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_r1_b_2/grd_s_r1_b_2_evw_anime.c b/src/data/field/bg/acre/grd_s_r1_b_2/grd_s_r1_b_2_evw_anime.c index 6a7b134b..8bbd8aac 100644 --- a/src/data/field/bg/acre/grd_s_r1_b_2/grd_s_r1_b_2_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_r1_b_2/grd_s_r1_b_2_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_r1_b_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_r1_b_2_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_r1_b_2_evw_anime_1 +extern EVW_ANIME_DATA grd_s_r1_b_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r1_b_2_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_r1_b_3/grd_s_r1_b_3_evw_anime.c b/src/data/field/bg/acre/grd_s_r1_b_3/grd_s_r1_b_3_evw_anime.c index a549104a..70de86af 100644 --- a/src/data/field/bg/acre/grd_s_r1_b_3/grd_s_r1_b_3_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_r1_b_3/grd_s_r1_b_3_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_r1_b_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_r1_b_3_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_r1_b_3_evw_anime_1 +extern EVW_ANIME_DATA grd_s_r1_b_3_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r1_b_3_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_r1_p_1/grd_s_r1_p_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r1_p_1/grd_s_r1_p_1_evw_anime.c index 70e5b587..b30d1a0d 100644 --- a/src/data/field/bg/acre/grd_s_r1_p_1/grd_s_r1_p_1_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_r1_p_1/grd_s_r1_p_1_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_r1_p_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_r1_p_1_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_r1_p_1_evw_anime_1 +extern EVW_ANIME_DATA grd_s_r1_p_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r1_p_1_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_r2_1/grd_s_r2_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r2_1/grd_s_r2_1_evw_anime.c index a8d096d4..c8e5792d 100644 --- a/src/data/field/bg/acre/grd_s_r2_1/grd_s_r2_1_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_r2_1/grd_s_r2_1_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_r2_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_r2_1_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_r2_1_evw_anime_1 +extern EVW_ANIME_DATA grd_s_r2_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r2_1_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_r2_2/grd_s_r2_2_evw_anime.c b/src/data/field/bg/acre/grd_s_r2_2/grd_s_r2_2_evw_anime.c index becbad9f..6e2c75aa 100644 --- a/src/data/field/bg/acre/grd_s_r2_2/grd_s_r2_2_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_r2_2/grd_s_r2_2_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_r2_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_r2_2_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_r2_2_evw_anime_1 +extern EVW_ANIME_DATA grd_s_r2_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r2_2_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_r2_3/grd_s_r2_3_evw_anime.c b/src/data/field/bg/acre/grd_s_r2_3/grd_s_r2_3_evw_anime.c index c97f44ae..e363a69a 100644 --- a/src/data/field/bg/acre/grd_s_r2_3/grd_s_r2_3_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_r2_3/grd_s_r2_3_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_r2_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_r2_3_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_r2_3_evw_anime_1 +extern EVW_ANIME_DATA grd_s_r2_3_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r2_3_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_r2_4/grd_s_r2_4_evw_anime.c b/src/data/field/bg/acre/grd_s_r2_4/grd_s_r2_4_evw_anime.c index 6cf61784..6dcb55b2 100644 --- a/src/data/field/bg/acre/grd_s_r2_4/grd_s_r2_4_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_r2_4/grd_s_r2_4_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_r2_4_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_r2_4_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_r2_4_evw_anime_1 +extern EVW_ANIME_DATA grd_s_r2_4_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r2_4_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_r2_b_1/grd_s_r2_b_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r2_b_1/grd_s_r2_b_1_evw_anime.c index 73a35fa1..cf175bd1 100644 --- a/src/data/field/bg/acre/grd_s_r2_b_1/grd_s_r2_b_1_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_r2_b_1/grd_s_r2_b_1_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_r2_b_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_r2_b_1_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_r2_b_1_evw_anime_1 +extern EVW_ANIME_DATA grd_s_r2_b_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r2_b_1_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_r2_b_2/grd_s_r2_b_2_evw_anime.c b/src/data/field/bg/acre/grd_s_r2_b_2/grd_s_r2_b_2_evw_anime.c index b313a2a6..c32c176f 100644 --- a/src/data/field/bg/acre/grd_s_r2_b_2/grd_s_r2_b_2_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_r2_b_2/grd_s_r2_b_2_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_r2_b_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_r2_b_2_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_r2_b_2_evw_anime_1 +extern EVW_ANIME_DATA grd_s_r2_b_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r2_b_2_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_r2_b_3/grd_s_r2_b_3_evw_anime.c b/src/data/field/bg/acre/grd_s_r2_b_3/grd_s_r2_b_3_evw_anime.c index 06d8836a..e13cbbdb 100644 --- a/src/data/field/bg/acre/grd_s_r2_b_3/grd_s_r2_b_3_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_r2_b_3/grd_s_r2_b_3_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_r2_b_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_r2_b_3_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_r2_b_3_evw_anime_1 +extern EVW_ANIME_DATA grd_s_r2_b_3_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r2_b_3_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_r2_p_1/grd_s_r2_p_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r2_p_1/grd_s_r2_p_1_evw_anime.c index 3029f345..a9d13104 100644 --- a/src/data/field/bg/acre/grd_s_r2_p_1/grd_s_r2_p_1_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_r2_p_1/grd_s_r2_p_1_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_r2_p_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_r2_p_1_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_r2_p_1_evw_anime_1 +extern EVW_ANIME_DATA grd_s_r2_p_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r2_p_1_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_r3_1/grd_s_r3_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r3_1/grd_s_r3_1_evw_anime.c index b6e63e34..3bceaa59 100644 --- a/src/data/field/bg/acre/grd_s_r3_1/grd_s_r3_1_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_r3_1/grd_s_r3_1_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_r3_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_r3_1_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_r3_1_evw_anime_1 +extern EVW_ANIME_DATA grd_s_r3_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r3_1_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_r3_2/grd_s_r3_2_evw_anime.c b/src/data/field/bg/acre/grd_s_r3_2/grd_s_r3_2_evw_anime.c index 9fc7a614..be8513a3 100644 --- a/src/data/field/bg/acre/grd_s_r3_2/grd_s_r3_2_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_r3_2/grd_s_r3_2_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_r3_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_r3_2_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_r3_2_evw_anime_1 +extern EVW_ANIME_DATA grd_s_r3_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r3_2_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_r3_3/grd_s_r3_3_evw_anime.c b/src/data/field/bg/acre/grd_s_r3_3/grd_s_r3_3_evw_anime.c index 8650703e..11829e2c 100644 --- a/src/data/field/bg/acre/grd_s_r3_3/grd_s_r3_3_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_r3_3/grd_s_r3_3_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_r3_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_r3_3_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_r3_3_evw_anime_1 +extern EVW_ANIME_DATA grd_s_r3_3_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r3_3_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_r3_4/grd_s_r3_4_evw_anime.c b/src/data/field/bg/acre/grd_s_r3_4/grd_s_r3_4_evw_anime.c index d0ef5386..2eb77eb5 100644 --- a/src/data/field/bg/acre/grd_s_r3_4/grd_s_r3_4_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_r3_4/grd_s_r3_4_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_r3_4_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_r3_4_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_r3_4_evw_anime_1 +extern EVW_ANIME_DATA grd_s_r3_4_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r3_4_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_r3_b_1/grd_s_r3_b_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r3_b_1/grd_s_r3_b_1_evw_anime.c index cbb1f616..1cbaeb68 100644 --- a/src/data/field/bg/acre/grd_s_r3_b_1/grd_s_r3_b_1_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_r3_b_1/grd_s_r3_b_1_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_r3_b_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_r3_b_1_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_r3_b_1_evw_anime_1 +extern EVW_ANIME_DATA grd_s_r3_b_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r3_b_1_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_r3_b_2/grd_s_r3_b_2_evw_anime.c b/src/data/field/bg/acre/grd_s_r3_b_2/grd_s_r3_b_2_evw_anime.c index d4122e66..6169d16a 100644 --- a/src/data/field/bg/acre/grd_s_r3_b_2/grd_s_r3_b_2_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_r3_b_2/grd_s_r3_b_2_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_r3_b_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_r3_b_2_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_r3_b_2_evw_anime_1 +extern EVW_ANIME_DATA grd_s_r3_b_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r3_b_2_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_r3_b_3/grd_s_r3_b_3_evw_anime.c b/src/data/field/bg/acre/grd_s_r3_b_3/grd_s_r3_b_3_evw_anime.c index 97d932e6..36352363 100644 --- a/src/data/field/bg/acre/grd_s_r3_b_3/grd_s_r3_b_3_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_r3_b_3/grd_s_r3_b_3_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_r3_b_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_r3_b_3_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_r3_b_3_evw_anime_1 +extern EVW_ANIME_DATA grd_s_r3_b_3_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r3_b_3_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_r3_p_1/grd_s_r3_p_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r3_p_1/grd_s_r3_p_1_evw_anime.c index 735387ce..9953d2ed 100644 --- a/src/data/field/bg/acre/grd_s_r3_p_1/grd_s_r3_p_1_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_r3_p_1/grd_s_r3_p_1_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_r3_p_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_r3_p_1_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_r3_p_1_evw_anime_1 +extern EVW_ANIME_DATA grd_s_r3_p_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r3_p_1_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_r4_1/grd_s_r4_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r4_1/grd_s_r4_1_evw_anime.c index 957b2c76..3a226df4 100644 --- a/src/data/field/bg/acre/grd_s_r4_1/grd_s_r4_1_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_r4_1/grd_s_r4_1_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_r4_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_r4_1_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_r4_1_evw_anime_1 +extern EVW_ANIME_DATA grd_s_r4_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r4_1_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_r4_2/grd_s_r4_2_evw_anime.c b/src/data/field/bg/acre/grd_s_r4_2/grd_s_r4_2_evw_anime.c index 89e6f5f1..413289bd 100644 --- a/src/data/field/bg/acre/grd_s_r4_2/grd_s_r4_2_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_r4_2/grd_s_r4_2_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_r4_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_r4_2_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_r4_2_evw_anime_1 +extern EVW_ANIME_DATA grd_s_r4_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r4_2_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_r4_3/grd_s_r4_3_evw_anime.c b/src/data/field/bg/acre/grd_s_r4_3/grd_s_r4_3_evw_anime.c index 604d0791..151b4d64 100644 --- a/src/data/field/bg/acre/grd_s_r4_3/grd_s_r4_3_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_r4_3/grd_s_r4_3_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_r4_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_r4_3_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_r4_3_evw_anime_1 +extern EVW_ANIME_DATA grd_s_r4_3_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r4_3_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_r4_b_1/grd_s_r4_b_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r4_b_1/grd_s_r4_b_1_evw_anime.c index 31233c4a..50e4bb5d 100644 --- a/src/data/field/bg/acre/grd_s_r4_b_1/grd_s_r4_b_1_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_r4_b_1/grd_s_r4_b_1_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_r4_b_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_r4_b_1_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_r4_b_1_evw_anime_1 +extern EVW_ANIME_DATA grd_s_r4_b_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r4_b_1_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_r4_b_2/grd_s_r4_b_2_evw_anime.c b/src/data/field/bg/acre/grd_s_r4_b_2/grd_s_r4_b_2_evw_anime.c index bb719e46..c2010441 100644 --- a/src/data/field/bg/acre/grd_s_r4_b_2/grd_s_r4_b_2_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_r4_b_2/grd_s_r4_b_2_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_r4_b_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_r4_b_2_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_r4_b_2_evw_anime_1 +extern EVW_ANIME_DATA grd_s_r4_b_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r4_b_2_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_r4_p_1/grd_s_r4_p_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r4_p_1/grd_s_r4_p_1_evw_anime.c index f57e5853..eb208d8b 100644 --- a/src/data/field/bg/acre/grd_s_r4_p_1/grd_s_r4_p_1_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_r4_p_1/grd_s_r4_p_1_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_r4_p_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_r4_p_1_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_r4_p_1_evw_anime_1 +extern EVW_ANIME_DATA grd_s_r4_p_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r4_p_1_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_r5_1/grd_s_r5_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r5_1/grd_s_r5_1_evw_anime.c index e4369721..eb2a7052 100644 --- a/src/data/field/bg/acre/grd_s_r5_1/grd_s_r5_1_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_r5_1/grd_s_r5_1_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_r5_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_r5_1_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_r5_1_evw_anime_1 +extern EVW_ANIME_DATA grd_s_r5_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r5_1_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_r5_2/grd_s_r5_2_evw_anime.c b/src/data/field/bg/acre/grd_s_r5_2/grd_s_r5_2_evw_anime.c index 9d353afb..f6b492b9 100644 --- a/src/data/field/bg/acre/grd_s_r5_2/grd_s_r5_2_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_r5_2/grd_s_r5_2_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_r5_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_r5_2_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_r5_2_evw_anime_1 +extern EVW_ANIME_DATA grd_s_r5_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r5_2_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_r5_3/grd_s_r5_3_evw_anime.c b/src/data/field/bg/acre/grd_s_r5_3/grd_s_r5_3_evw_anime.c index 36d42171..e5823f7a 100644 --- a/src/data/field/bg/acre/grd_s_r5_3/grd_s_r5_3_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_r5_3/grd_s_r5_3_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_r5_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_r5_3_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_r5_3_evw_anime_1 +extern EVW_ANIME_DATA grd_s_r5_3_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r5_3_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_r5_b_1/grd_s_r5_b_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r5_b_1/grd_s_r5_b_1_evw_anime.c index b1a6f262..86d98333 100644 --- a/src/data/field/bg/acre/grd_s_r5_b_1/grd_s_r5_b_1_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_r5_b_1/grd_s_r5_b_1_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_r5_b_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_r5_b_1_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_r5_b_1_evw_anime_1 +extern EVW_ANIME_DATA grd_s_r5_b_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r5_b_1_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_r5_b_2/grd_s_r5_b_2_evw_anime.c b/src/data/field/bg/acre/grd_s_r5_b_2/grd_s_r5_b_2_evw_anime.c index 4d9d82b0..37cfcd49 100644 --- a/src/data/field/bg/acre/grd_s_r5_b_2/grd_s_r5_b_2_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_r5_b_2/grd_s_r5_b_2_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_r5_b_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_r5_b_2_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_r5_b_2_evw_anime_1 +extern EVW_ANIME_DATA grd_s_r5_b_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r5_b_2_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_r5_p_1/grd_s_r5_p_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r5_p_1/grd_s_r5_p_1_evw_anime.c index 6296aada..3054472b 100644 --- a/src/data/field/bg/acre/grd_s_r5_p_1/grd_s_r5_p_1_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_r5_p_1/grd_s_r5_p_1_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_r5_p_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_r5_p_1_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_r5_p_1_evw_anime_1 +extern EVW_ANIME_DATA grd_s_r5_p_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r5_p_1_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_r6_1/grd_s_r6_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r6_1/grd_s_r6_1_evw_anime.c index a2713fa1..9a4a88cc 100644 --- a/src/data/field/bg/acre/grd_s_r6_1/grd_s_r6_1_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_r6_1/grd_s_r6_1_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_r6_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_r6_1_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_r6_1_evw_anime_1 +extern EVW_ANIME_DATA grd_s_r6_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r6_1_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_r6_2/grd_s_r6_2_evw_anime.c b/src/data/field/bg/acre/grd_s_r6_2/grd_s_r6_2_evw_anime.c index 2d2e1e3b..76c7b804 100644 --- a/src/data/field/bg/acre/grd_s_r6_2/grd_s_r6_2_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_r6_2/grd_s_r6_2_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_r6_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_r6_2_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_r6_2_evw_anime_1 +extern EVW_ANIME_DATA grd_s_r6_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r6_2_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_r6_3/grd_s_r6_3_evw_anime.c b/src/data/field/bg/acre/grd_s_r6_3/grd_s_r6_3_evw_anime.c index 7a20b37c..f9582e9b 100644 --- a/src/data/field/bg/acre/grd_s_r6_3/grd_s_r6_3_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_r6_3/grd_s_r6_3_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_r6_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_r6_3_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_r6_3_evw_anime_1 +extern EVW_ANIME_DATA grd_s_r6_3_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r6_3_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_r6_b_1/grd_s_r6_b_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r6_b_1/grd_s_r6_b_1_evw_anime.c index 5707e275..463913cb 100644 --- a/src/data/field/bg/acre/grd_s_r6_b_1/grd_s_r6_b_1_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_r6_b_1/grd_s_r6_b_1_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_r6_b_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_r6_b_1_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_r6_b_1_evw_anime_1 +extern EVW_ANIME_DATA grd_s_r6_b_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r6_b_1_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_r6_b_2/grd_s_r6_b_2_evw_anime.c b/src/data/field/bg/acre/grd_s_r6_b_2/grd_s_r6_b_2_evw_anime.c index 73b19fd6..60376a99 100644 --- a/src/data/field/bg/acre/grd_s_r6_b_2/grd_s_r6_b_2_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_r6_b_2/grd_s_r6_b_2_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_r6_b_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_r6_b_2_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_r6_b_2_evw_anime_1 +extern EVW_ANIME_DATA grd_s_r6_b_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r6_b_2_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_r6_p_1/grd_s_r6_p_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r6_p_1/grd_s_r6_p_1_evw_anime.c index 6f9e0073..89403c8c 100644 --- a/src/data/field/bg/acre/grd_s_r6_p_1/grd_s_r6_p_1_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_r6_p_1/grd_s_r6_p_1_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_r6_p_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_r6_p_1_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_r6_p_1_evw_anime_1 +extern EVW_ANIME_DATA grd_s_r6_p_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r6_p_1_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_r7_1/grd_s_r7_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r7_1/grd_s_r7_1_evw_anime.c index e0f68e69..25f97361 100644 --- a/src/data/field/bg/acre/grd_s_r7_1/grd_s_r7_1_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_r7_1/grd_s_r7_1_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_r7_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_r7_1_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_r7_1_evw_anime_1 +extern EVW_ANIME_DATA grd_s_r7_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r7_1_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_r7_2/grd_s_r7_2_evw_anime.c b/src/data/field/bg/acre/grd_s_r7_2/grd_s_r7_2_evw_anime.c index 29e99758..5a5dd532 100644 --- a/src/data/field/bg/acre/grd_s_r7_2/grd_s_r7_2_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_r7_2/grd_s_r7_2_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_r7_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_r7_2_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_r7_2_evw_anime_1 +extern EVW_ANIME_DATA grd_s_r7_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r7_2_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_r7_3/grd_s_r7_3_evw_anime.c b/src/data/field/bg/acre/grd_s_r7_3/grd_s_r7_3_evw_anime.c index cd60fa6c..83943362 100644 --- a/src/data/field/bg/acre/grd_s_r7_3/grd_s_r7_3_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_r7_3/grd_s_r7_3_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_r7_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_r7_3_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_r7_3_evw_anime_1 +extern EVW_ANIME_DATA grd_s_r7_3_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r7_3_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_r7_b_1/grd_s_r7_b_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r7_b_1/grd_s_r7_b_1_evw_anime.c index b8f8caf4..c9711bb8 100644 --- a/src/data/field/bg/acre/grd_s_r7_b_1/grd_s_r7_b_1_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_r7_b_1/grd_s_r7_b_1_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_r7_b_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_r7_b_1_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_r7_b_1_evw_anime_1 +extern EVW_ANIME_DATA grd_s_r7_b_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r7_b_1_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_r7_b_2/grd_s_r7_b_2_evw_anime.c b/src/data/field/bg/acre/grd_s_r7_b_2/grd_s_r7_b_2_evw_anime.c index 28e69641..a265fcc7 100644 --- a/src/data/field/bg/acre/grd_s_r7_b_2/grd_s_r7_b_2_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_r7_b_2/grd_s_r7_b_2_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_r7_b_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_r7_b_2_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_r7_b_2_evw_anime_1 +extern EVW_ANIME_DATA grd_s_r7_b_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r7_b_2_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_r7_p_1/grd_s_r7_p_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r7_p_1/grd_s_r7_p_1_evw_anime.c index 1c8fe1e9..a77ea7dc 100644 --- a/src/data/field/bg/acre/grd_s_r7_p_1/grd_s_r7_p_1_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_r7_p_1/grd_s_r7_p_1_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_r7_p_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_r7_p_1_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_r7_p_1_evw_anime_1 +extern EVW_ANIME_DATA grd_s_r7_p_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r7_p_1_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_t_1/grd_s_t_1_evw_anime.c b/src/data/field/bg/acre/grd_s_t_1/grd_s_t_1_evw_anime.c index 7e6c5261..a2acc253 100644 --- a/src/data/field/bg/acre/grd_s_t_1/grd_s_t_1_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_t_1/grd_s_t_1_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_t_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_t_1_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_t_1_evw_anime_1 +extern EVW_ANIME_DATA grd_s_t_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_t_1_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_t_4/grd_s_t_4_evw_anime.c b/src/data/field/bg/acre/grd_s_t_4/grd_s_t_4_evw_anime.c index 133f92f3..e2fd2e4b 100644 --- a/src/data/field/bg/acre/grd_s_t_4/grd_s_t_4_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_t_4/grd_s_t_4_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_t_4_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_t_4_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_t_4_evw_anime_1 +extern EVW_ANIME_DATA grd_s_t_4_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_t_4_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_t_5/grd_s_t_5_evw_anime.c b/src/data/field/bg/acre/grd_s_t_5/grd_s_t_5_evw_anime.c index 9cb6b1dd..4d833d54 100644 --- a/src/data/field/bg/acre/grd_s_t_5/grd_s_t_5_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_t_5/grd_s_t_5_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_t_5_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_t_5_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_t_5_evw_anime_1 +extern EVW_ANIME_DATA grd_s_t_5_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_t_5_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_t_po_3/grd_s_t_po_3_evw_anime.c b/src/data/field/bg/acre/grd_s_t_po_3/grd_s_t_po_3_evw_anime.c index 2ff52258..1b0444a0 100644 --- a/src/data/field/bg/acre/grd_s_t_po_3/grd_s_t_po_3_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_t_po_3/grd_s_t_po_3_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_t_po_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_t_po_3_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_t_po_3_evw_anime_1 +extern EVW_ANIME_DATA grd_s_t_po_3_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_t_po_3_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_t_r1_1/grd_s_t_r1_1_evw_anime.c b/src/data/field/bg/acre/grd_s_t_r1_1/grd_s_t_r1_1_evw_anime.c index b45b2322..33c86cd0 100644 --- a/src/data/field/bg/acre/grd_s_t_r1_1/grd_s_t_r1_1_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_t_r1_1/grd_s_t_r1_1_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_t_r1_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_t_r1_1_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_t_r1_1_evw_anime_1 +extern EVW_ANIME_DATA grd_s_t_r1_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_t_r1_1_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_t_r1_2/grd_s_t_r1_2_evw_anime.c b/src/data/field/bg/acre/grd_s_t_r1_2/grd_s_t_r1_2_evw_anime.c index 47fb12da..f10e007f 100644 --- a/src/data/field/bg/acre/grd_s_t_r1_2/grd_s_t_r1_2_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_t_r1_2/grd_s_t_r1_2_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_t_r1_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_t_r1_2_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_t_r1_2_evw_anime_1 +extern EVW_ANIME_DATA grd_s_t_r1_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_t_r1_2_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_t_r1_3/grd_s_t_r1_3_evw_anime.c b/src/data/field/bg/acre/grd_s_t_r1_3/grd_s_t_r1_3_evw_anime.c index e9d550fa..341ca26b 100644 --- a/src/data/field/bg/acre/grd_s_t_r1_3/grd_s_t_r1_3_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_t_r1_3/grd_s_t_r1_3_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_t_r1_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_t_r1_3_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_t_r1_3_evw_anime_1 +extern EVW_ANIME_DATA grd_s_t_r1_3_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_t_r1_3_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_t_r1_4/grd_s_t_r1_4_evw_anime.c b/src/data/field/bg/acre/grd_s_t_r1_4/grd_s_t_r1_4_evw_anime.c index 3c5a2740..28a5a56f 100644 --- a/src/data/field/bg/acre/grd_s_t_r1_4/grd_s_t_r1_4_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_t_r1_4/grd_s_t_r1_4_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_t_r1_4_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_t_r1_4_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_t_r1_4_evw_anime_1 +extern EVW_ANIME_DATA grd_s_t_r1_4_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_t_r1_4_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_t_r1_5/grd_s_t_r1_5_evw_anime.c b/src/data/field/bg/acre/grd_s_t_r1_5/grd_s_t_r1_5_evw_anime.c index bd0b971f..702e3e0c 100644 --- a/src/data/field/bg/acre/grd_s_t_r1_5/grd_s_t_r1_5_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_t_r1_5/grd_s_t_r1_5_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_t_r1_5_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_t_r1_5_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_t_r1_5_evw_anime_1 +extern EVW_ANIME_DATA grd_s_t_r1_5_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_t_r1_5_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/grd_s_t_sh_2/grd_s_t_sh_2_evw_anime.c b/src/data/field/bg/acre/grd_s_t_sh_2/grd_s_t_sh_2_evw_anime.c index 726fd1ed..c8acb03b 100644 --- a/src/data/field/bg/acre/grd_s_t_sh_2/grd_s_t_sh_2_evw_anime.c +++ b/src/data/field/bg/acre/grd_s_t_sh_2/grd_s_t_sh_2_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL grd_s_t_sh_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA grd_s_t_sh_2_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - grd_s_t_sh_2_evw_anime_1 +extern EVW_ANIME_DATA grd_s_t_sh_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_t_sh_2_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/rom_uranai/rom_uranai_evw_anime.c b/src/data/field/bg/acre/rom_uranai/rom_uranai_evw_anime.c index 5dc3e2fb..b5f3a87b 100644 --- a/src/data/field/bg/acre/rom_uranai/rom_uranai_evw_anime.c +++ b/src/data/field/bg/acre/rom_uranai/rom_uranai_evw_anime.c @@ -2,8 +2,9 @@ static EVW_ANIME_SCROLL rom_uranai_evw_anime_2[] = { { 0, 0, 32, 32 }, { 0, 12, 32, 32 } }; -extern EVW_ANIME_DATA rom_uranai_evw_anime = { - 2, - EVW_ANIME_TYPE_SCROLL2 - rom_uranai_evw_anime_2 +static EVW_ANIME_SCROLL rom_uranai_evw_anime_3[] = { { 0, 0, 32, 32 }, { 1, 1, 32, 32 } }; + +extern EVW_ANIME_DATA rom_uranai_evw_anime[] = { + { 2, EVW_ANIME_TYPE_SCROLL2, rom_uranai_evw_anime_2 }, + { -3, EVW_ANIME_TYPE_SCROLL2, rom_uranai_evw_anime_3 }, }; diff --git a/src/data/field/bg/acre/tmpr/tmpr_evw_anime.c b/src/data/field/bg/acre/tmpr/tmpr_evw_anime.c index 58d3a914..fbd05dba 100644 --- a/src/data/field/bg/acre/tmpr/tmpr_evw_anime.c +++ b/src/data/field/bg/acre/tmpr/tmpr_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL tmpr_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA tmpr_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - tmpr_evw_anime_1 +extern EVW_ANIME_DATA tmpr_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, tmpr_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/tmpr2/tmpr2_evw_anime.c b/src/data/field/bg/acre/tmpr2/tmpr2_evw_anime.c index c8bedc22..2e0325b8 100644 --- a/src/data/field/bg/acre/tmpr2/tmpr2_evw_anime.c +++ b/src/data/field/bg/acre/tmpr2/tmpr2_evw_anime.c @@ -2,8 +2,6 @@ static EVW_ANIME_SCROLL tmpr2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA tmpr2_evw_anime = { - -1, - EVW_ANIME_TYPE_SCROLL2 - tmpr2_evw_anime_1 +extern EVW_ANIME_DATA tmpr2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, tmpr2_evw_anime_1 }, }; diff --git a/src/data/field/bg/acre/tmpr3/tmpr3_evw_anime.c b/src/data/field/bg/acre/tmpr3/tmpr3_evw_anime.c index 8afac0d9..8686ddd1 100644 --- a/src/data/field/bg/acre/tmpr3/tmpr3_evw_anime.c +++ b/src/data/field/bg/acre/tmpr3/tmpr3_evw_anime.c @@ -2,8 +2,15 @@ static EVW_ANIME_SCROLL tmpr3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA tmpr3_evw_anime = { - 1, - EVW_ANIME_TYPE_SCROLL2 - tmpr3_evw_anime_1 +static EVW_ANIME_SCROLL tmpr3_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL tmpr3_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL tmpr3_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA tmpr3_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, tmpr3_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, tmpr3_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, tmpr3_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, tmpr3_evw_anime_4 }, }; diff --git a/src/data/field/bg/acre/tmpr4/tmpr4_evw_anime.c b/src/data/field/bg/acre/tmpr4/tmpr4_evw_anime.c index e5853b72..5c3e0389 100644 --- a/src/data/field/bg/acre/tmpr4/tmpr4_evw_anime.c +++ b/src/data/field/bg/acre/tmpr4/tmpr4_evw_anime.c @@ -2,8 +2,15 @@ static EVW_ANIME_SCROLL tmpr4_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; -extern EVW_ANIME_DATA tmpr4_evw_anime = { - 1, - EVW_ANIME_TYPE_SCROLL2 - tmpr4_evw_anime_1 +static EVW_ANIME_SCROLL tmpr4_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL tmpr4_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL tmpr4_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA tmpr4_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, tmpr4_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, tmpr4_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, tmpr4_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, tmpr4_evw_anime_4 }, }; From ff3bab7e79e4d21041fb0b93871168c765503569 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Sun, 11 Aug 2024 08:35:15 -0400 Subject: [PATCH 110/234] Link data_bgd TU --- config/rel_disasm_overrides.yml | 1 + config/rel_slices.yml | 3 + include/m_bg_type.h | 310 ++++++++++++++++ include/m_field_info.h | 1 + src/data/field/bg/acre/bg_data.c | 605 ++++++++----------------------- 5 files changed, 471 insertions(+), 449 deletions(-) create mode 100644 include/m_bg_type.h diff --git a/config/rel_disasm_overrides.yml b/config/rel_disasm_overrides.yml index 269e8459..a5c0ca4e 100644 --- a/config/rel_disasm_overrides.yml +++ b/config/rel_disasm_overrides.yml @@ -18,3 +18,4 @@ symbol_aligns: 0x80F1CCA0: 32 # dataobject/obj/.data/rom_museum5_wall_pal 0x80F85720: 32 # dataobject/obj/.data/grd_player_select_evw_anime_1 (TU is aligned to 32) 0x80FACE20: 32 # dataobject/obj/.data/rom_shop4_1_floor_tex_pal + 0x8074B840: 32 # dataobject/obj/.data/mFM_obj_a_01_flower_pal diff --git a/config/rel_slices.yml b/config/rel_slices.yml index 03d4d334..4652b03f 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -1274,6 +1274,9 @@ data/npc/model/tex/bea_9.c: data/npc/model/tex/bea_10.c: .data: [0x806FA140, 0x806FB360] +data/field/bg/acre/bg_data.c: + .data: [0x806FE048, 0x8074B840] + # dataobject.obj files data/field/bg/flower/obj_flower.c: .data: [0x8074FE80, 0x807508C0] diff --git a/include/m_bg_type.h b/include/m_bg_type.h new file mode 100644 index 00000000..eeb748f3 --- /dev/null +++ b/include/m_bg_type.h @@ -0,0 +1,310 @@ +#ifndef M_BG_TYPE_H +#define M_BG_TYPE_H + +#include "types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +enum __bg_type__ { + BG_TYPE_GRD_S_HOLE_TEST, + BG_TYPE_GRD_S_C1_1, + BG_TYPE_GRD_S_C1_2, + BG_TYPE_GRD_S_C1_3, + BG_TYPE_GRD_S_C1_4, + BG_TYPE_GRD_S_C1_5, + BG_TYPE_GRD_S_C1_R1_1, + BG_TYPE_GRD_S_C1_R1_2, + BG_TYPE_GRD_S_C1_R1_3, + BG_TYPE_GRD_S_C1_R2_1, + BG_TYPE_GRD_S_C1_R2_2, + BG_TYPE_GRD_S_C1_R2_3, + BG_TYPE_GRD_S_C1_R3_1, + BG_TYPE_GRD_S_C1_R3_2, + BG_TYPE_GRD_S_C1_R3_3, + BG_TYPE_GRD_S_C1_S_1, + BG_TYPE_GRD_S_C1_S_2, + BG_TYPE_GRD_S_C1_S_3, + BG_TYPE_GRD_S_C1_S_4, + BG_TYPE_GRD_S_C2_1, + BG_TYPE_GRD_S_C2_2, + BG_TYPE_GRD_S_C2_3, + BG_TYPE_GRD_S_C2_R1_1, + BG_TYPE_GRD_S_C2_R1_2, + BG_TYPE_GRD_S_C2_R2_1, + BG_TYPE_GRD_S_C2_R2_2, + BG_TYPE_GRD_S_C2_S_1, + BG_TYPE_GRD_S_C2_S_2, + BG_TYPE_GRD_S_C2_S_3, + BG_TYPE_GRD_S_C3_1, + BG_TYPE_GRD_S_C3_2, + BG_TYPE_GRD_S_C3_3, + BG_TYPE_GRD_S_C3_R1_1, + BG_TYPE_GRD_S_C3_R1_2, + BG_TYPE_GRD_S_C3_R2_1, + BG_TYPE_GRD_S_C3_R2_2, + BG_TYPE_GRD_S_C3_S_1, + BG_TYPE_GRD_S_C4_1, + BG_TYPE_GRD_S_C4_2, + BG_TYPE_GRD_S_C4_3, + BG_TYPE_GRD_S_C4_R1_1, + BG_TYPE_GRD_S_C4_R1_2, + BG_TYPE_GRD_S_C4_R2_1, + BG_TYPE_GRD_S_C4_R2_2, + BG_TYPE_GRD_S_C4_R3_1, + BG_TYPE_GRD_S_C4_R3_2, + BG_TYPE_GRD_S_C4_S_1, + BG_TYPE_GRD_S_C4_S_2, + BG_TYPE_GRD_S_C5_1, + BG_TYPE_GRD_S_C5_2, + BG_TYPE_GRD_S_C5_3, + BG_TYPE_GRD_S_C5_R1_1, + BG_TYPE_GRD_S_C5_R1_2, + BG_TYPE_GRD_S_C5_R2_1, + BG_TYPE_GRD_S_C5_R2_2, + BG_TYPE_GRD_S_C5_R3_1, + BG_TYPE_GRD_S_C5_R3_2, + BG_TYPE_GRD_S_C5_S_1, + BG_TYPE_GRD_S_C5_S_2, + BG_TYPE_GRD_S_C6_1, + BG_TYPE_GRD_S_C6_2, + BG_TYPE_GRD_S_C6_3, + BG_TYPE_GRD_S_C6_R1_1, + BG_TYPE_GRD_S_C6_R1_2, + BG_TYPE_GRD_S_C6_R3_1, + BG_TYPE_GRD_S_C6_S_1, + BG_TYPE_GRD_S_C7_1, + BG_TYPE_GRD_S_C7_2, + BG_TYPE_GRD_S_C7_3, + BG_TYPE_GRD_S_C7_R1_1, + BG_TYPE_GRD_S_C7_R1_2, + BG_TYPE_GRD_S_C7_R3_1, + BG_TYPE_GRD_S_C7_R3_2, + BG_TYPE_GRD_S_C7_S_1, + BG_TYPE_GRD_S_C7_S_2, + BG_TYPE_GRD_S_C7_S_3, + BG_TYPE_GRD_S_E1_1, + BG_TYPE_GRD_S_E1_R1_1, + BG_TYPE_GRD_S_E2_1, + BG_TYPE_GRD_S_E2_C1_1, + BG_TYPE_GRD_S_E2_M_1, + BG_TYPE_GRD_S_E2_O_1, + BG_TYPE_GRD_S_E2_T_1, + BG_TYPE_GRD_S_E3_1, + BG_TYPE_GRD_S_E3_C1_1, + BG_TYPE_GRD_S_E3_M_1, + BG_TYPE_GRD_S_E3_O_1, + BG_TYPE_GRD_S_E3_T_1, + BG_TYPE_GRD_S_E4_1, + BG_TYPE_GRD_S_E5_1, + BG_TYPE_GRD_S_F_1, + BG_TYPE_GRD_S_F_2, + BG_TYPE_GRD_S_F_3, + BG_TYPE_GRD_S_F_4, + BG_TYPE_GRD_S_F_5, + BG_TYPE_GRD_S_F_6, + BG_TYPE_GRD_S_F_7, + BG_TYPE_GRD_S_F_8, + BG_TYPE_GRD_S_F_9, + BG_TYPE_GRD_S_F_10, + BG_TYPE_GRD_S_F_KO_1, + BG_TYPE_GRD_S_F_KO_2, + BG_TYPE_GRD_S_F_KO_3, + BG_TYPE_GRD_S_F_MH_1, + BG_TYPE_GRD_S_F_MH_2, + BG_TYPE_GRD_S_F_MH_3, + BG_TYPE_GRD_S_F_MU_1, + BG_TYPE_GRD_S_F_MU_2, + BG_TYPE_GRD_S_F_MU_3, + BG_TYPE_GRD_S_F_PK_1, + BG_TYPE_GRD_S_F_PK_2, + BG_TYPE_GRD_S_F_PK_3, + BG_TYPE_GRD_S_IR_1, + BG_TYPE_GRD_S_IR_2, + BG_TYPE_GRD_S_IR_3, + BG_TYPE_GRD_S_IR_4, + BG_TYPE_GRD_S_IL_1, + BG_TYPE_GRD_S_IL_2, + BG_TYPE_GRD_S_IL_3, + BG_TYPE_GRD_S_IL_4, + BG_TYPE_GRD_S_M_1, + BG_TYPE_GRD_S_M_2, + BG_TYPE_GRD_S_M_3, + BG_TYPE_GRD_S_M_4, + BG_TYPE_GRD_S_M_5, + BG_TYPE_GRD_S_M_6, + BG_TYPE_GRD_S_M_7, + BG_TYPE_GRD_S_M_8, + BG_TYPE_GRD_S_M_9, + BG_TYPE_GRD_S_M_10, + BG_TYPE_GRD_S_M_R1_1, + BG_TYPE_GRD_S_M_R1_2, + BG_TYPE_GRD_S_M_R1_3, + BG_TYPE_GRD_S_M_R1_4, + BG_TYPE_GRD_S_M_R1_5, + BG_TYPE_GRD_S_M_R1_B_1, + BG_TYPE_GRD_S_M_R1_B_2, + BG_TYPE_GRD_S_M_R1_B_3, + BG_TYPE_GRD_S_M_TA_1, + BG_TYPE_GRD_S_M_TA_2, + BG_TYPE_GRD_S_M_TA_3, + BG_TYPE_GRD_S_M_WF_1, + BG_TYPE_GRD_S_M_WF_2, + BG_TYPE_GRD_S_M_WF_3, + BG_TYPE_GRD_S_O_1, + BG_TYPE_GRD_S_O_2, + BG_TYPE_GRD_S_O_3, + BG_TYPE_GRD_S_O_4, + BG_TYPE_GRD_S_O_5, + BG_TYPE_GRD_S_O_6, + BG_TYPE_GRD_S_O_7, + BG_TYPE_GRD_S_O_8, + BG_TYPE_GRD_S_O_9, + BG_TYPE_GRD_S_O_10, + BG_TYPE_GRD_S_O_I_1, + BG_TYPE_GRD_S_O_I_2, + BG_TYPE_GRD_S_O_R1_1, + BG_TYPE_GRD_S_O_R1_2, + BG_TYPE_GRD_S_O_R1_3, + BG_TYPE_GRD_S_O_R1_4, + BG_TYPE_GRD_S_O_R1_5, + BG_TYPE_GRD_S_O_R1_B_1, + BG_TYPE_GRD_S_O_R1_B_2, + BG_TYPE_GRD_S_O_R1_B_3, + BG_TYPE_GRD_S_O_TA_1, + BG_TYPE_GRD_S_O_TA_2, + BG_TYPE_GRD_S_O_TA_3, + BG_TYPE_GRD_S_O_WF_1, + BG_TYPE_GRD_S_O_WF_2, + BG_TYPE_GRD_S_O_WF_3, + BG_TYPE_GRD_S_R1_1, + BG_TYPE_GRD_S_R1_2, + BG_TYPE_GRD_S_R1_3, + BG_TYPE_GRD_S_R1_4, + BG_TYPE_GRD_S_R1_B_1, + BG_TYPE_GRD_S_R1_B_2, + BG_TYPE_GRD_S_R1_B_3, + BG_TYPE_GRD_S_R1_P_1, + BG_TYPE_GRD_S_R2_1, + BG_TYPE_GRD_S_R2_2, + BG_TYPE_GRD_S_R2_3, + BG_TYPE_GRD_S_R2_4, + BG_TYPE_GRD_S_R2_B_1, + BG_TYPE_GRD_S_R2_B_2, + BG_TYPE_GRD_S_R2_B_3, + BG_TYPE_GRD_S_R2_P_1, + BG_TYPE_GRD_S_R3_1, + BG_TYPE_GRD_S_R3_2, + BG_TYPE_GRD_S_R3_3, + BG_TYPE_GRD_S_R3_4, + BG_TYPE_GRD_S_R3_B_1, + BG_TYPE_GRD_S_R3_B_2, + BG_TYPE_GRD_S_R3_B_3, + BG_TYPE_GRD_S_R3_P_1, + BG_TYPE_GRD_S_R4_1, + BG_TYPE_GRD_S_R4_2, + BG_TYPE_GRD_S_R4_3, + BG_TYPE_GRD_S_R4_B_1, + BG_TYPE_GRD_S_R4_B_2, + BG_TYPE_GRD_S_R4_P_1, + BG_TYPE_GRD_S_R5_1, + BG_TYPE_GRD_S_R5_2, + BG_TYPE_GRD_S_R5_3, + BG_TYPE_GRD_S_R5_B_1, + BG_TYPE_GRD_S_R5_B_2, + BG_TYPE_GRD_S_R5_P_1, + BG_TYPE_GRD_S_R6_1, + BG_TYPE_GRD_S_R6_2, + BG_TYPE_GRD_S_R6_3, + BG_TYPE_GRD_S_R6_B_1, + BG_TYPE_GRD_S_R6_B_2, + BG_TYPE_GRD_S_R6_P_1, + BG_TYPE_GRD_S_R7_1, + BG_TYPE_GRD_S_R7_2, + BG_TYPE_GRD_S_R7_3, + BG_TYPE_GRD_S_R7_B_1, + BG_TYPE_GRD_S_R7_B_2, + BG_TYPE_GRD_S_R7_P_1, + BG_TYPE_GRD_S_T_R1_1, + BG_TYPE_GRD_S_T_1, + BG_TYPE_GRD_S_T_2, + BG_TYPE_GRD_S_T_3, + BG_TYPE_GRD_S_T_4, + BG_TYPE_GRD_S_T_5, + BG_TYPE_GRD_S_T_6, + BG_TYPE_GRD_S_T_7, + BG_TYPE_GRD_S_T_8, + BG_TYPE_GRD_S_T_9, + BG_TYPE_GRD_S_T_10, + BG_TYPE_GRD_S_T_PO_1, + BG_TYPE_GRD_S_T_PO_2, + BG_TYPE_GRD_S_T_PO_3, + BG_TYPE_GRD_S_T_R1_2, + BG_TYPE_GRD_S_T_R1_3, + BG_TYPE_GRD_S_T_R1_4, + BG_TYPE_GRD_S_T_R1_5, + BG_TYPE_GRD_S_T_SH_1, + BG_TYPE_GRD_S_T_SH_2, + BG_TYPE_GRD_S_T_SH_3, + BG_TYPE_GRD_S_T_ST1_1, + BG_TYPE_GRD_S_T_ST1_2, + BG_TYPE_GRD_S_T_ST1_3, + BG_TYPE_242, + BG_TYPE_ROM_TENT, + BG_TYPE_ROOM01, + BG_TYPE_MYR_ETC, + BG_TYPE_246, + BG_TYPE_247, + BG_TYPE_248, + BG_TYPE_249, + BG_TYPE_250, + BG_TYPE_251, + BG_TYPE_252, + BG_TYPE_ROM_SHOP4_FUKU, + BG_TYPE_254, + BG_TYPE_ROM_URANAI, + BG_TYPE_ROM_SHOP4_1, + BG_TYPE_257, + BG_TYPE_258, + BG_TYPE_259, + BG_TYPE_260, + BG_TYPE_ROM_TRAIN_IN, + BG_TYPE_GRD_S_F_9_1, + BG_TYPE_GRD_S_R1_3_1, + BG_TYPE_GRD_S_C1_3_1, + BG_TYPE_GRD_S_F_9_2, + BG_TYPE_GRD_PLAYER_SELECT, + BG_TYPE_GRD_POST_OFFICE, + BG_TYPE_POLICE_INDOOR, + BG_TYPE_TMP, + BG_TYPE_TMP2, + BG_TYPE_TMPR, + BG_TYPE_TMPR2, + BG_TYPE_TMP3, + BG_TYPE_TMPR3, + BG_TYPE_TMP4, + BG_TYPE_TMPR4, + BG_TYPE_GRD_YAMISHOP, + BG_TYPE_ROM_MUSEUM1, + BG_TYPE_ROM_MUSEUM2, + BG_TYPE_ROM_MUSEUM3, + BG_TYPE_ROM_MUSEUM5, + BG_TYPE_282, + BG_TYPE_283, + BG_TYPE_284, + BG_TYPE_285, + BG_TYPE_286, + BG_TYPE_287, + BG_TYPE_288, + BG_TYPE_289, + BG_TYPE_ROM_TAILOR, + BG_TYPE_ROM_TOUDAI, + BG_TYPE_292, +}; + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/m_field_info.h b/include/m_field_info.h index 29bc9834..582677aa 100644 --- a/include/m_field_info.h +++ b/include/m_field_info.h @@ -6,6 +6,7 @@ #include "m_lib.h" #include "m_collision_bg.h" #include "m_field_make.h" +#include "m_bg_type.h" #ifdef __cplusplus extern "C" { diff --git a/src/data/field/bg/acre/bg_data.c b/src/data/field/bg/acre/bg_data.c index 5982d2dd..a9fb6ecc 100644 --- a/src/data/field/bg/acre/bg_data.c +++ b/src/data/field/bg/acre/bg_data.c @@ -2,301 +2,6 @@ // clang-format off -enum __bg_type__ { - BG_TYPE_GRD_S_HOLE_TEST, - BG_TYPE_GRD_S_C1_1, - BG_TYPE_GRD_S_C1_2, - BG_TYPE_GRD_S_C1_3, - BG_TYPE_GRD_S_C1_4, - BG_TYPE_GRD_S_C1_5, - BG_TYPE_GRD_S_C1_R1_1, - BG_TYPE_GRD_S_C1_R1_2, - BG_TYPE_GRD_S_C1_R1_3, - BG_TYPE_GRD_S_C1_R2_1, - BG_TYPE_GRD_S_C1_R2_2, - BG_TYPE_GRD_S_C1_R2_3, - BG_TYPE_GRD_S_C1_R3_1, - BG_TYPE_GRD_S_C1_R3_2, - BG_TYPE_GRD_S_C1_R3_3, - BG_TYPE_GRD_S_C1_S_1, - BG_TYPE_GRD_S_C1_S_2, - BG_TYPE_GRD_S_C1_S_3, - BG_TYPE_GRD_S_C1_S_4, - BG_TYPE_GRD_S_C2_1, - BG_TYPE_GRD_S_C2_2, - BG_TYPE_GRD_S_C2_3, - BG_TYPE_GRD_S_C2_R1_1, - BG_TYPE_GRD_S_C2_R1_2, - BG_TYPE_GRD_S_C2_R2_1, - BG_TYPE_GRD_S_C2_R2_2, - BG_TYPE_GRD_S_C2_S_1, - BG_TYPE_GRD_S_C2_S_2, - BG_TYPE_GRD_S_C2_S_3, - BG_TYPE_GRD_S_C3_1, - BG_TYPE_GRD_S_C3_2, - BG_TYPE_GRD_S_C3_3, - BG_TYPE_GRD_S_C3_R1_1, - BG_TYPE_GRD_S_C3_R1_2, - BG_TYPE_GRD_S_C3_R2_1, - BG_TYPE_GRD_S_C3_R2_2, - BG_TYPE_GRD_S_C3_S_1, - BG_TYPE_GRD_S_C4_1, - BG_TYPE_GRD_S_C4_2, - BG_TYPE_GRD_S_C4_3, - BG_TYPE_GRD_S_C4_R1_1, - BG_TYPE_GRD_S_C4_R1_2, - BG_TYPE_GRD_S_C4_R2_1, - BG_TYPE_GRD_S_C4_R2_2, - BG_TYPE_GRD_S_C4_R3_1, - BG_TYPE_GRD_S_C4_R3_2, - BG_TYPE_GRD_S_C4_S_1, - BG_TYPE_GRD_S_C4_S_2, - BG_TYPE_GRD_S_C5_1, - BG_TYPE_GRD_S_C5_2, - BG_TYPE_GRD_S_C5_3, - BG_TYPE_GRD_S_C5_R1_1, - BG_TYPE_GRD_S_C5_R1_2, - BG_TYPE_GRD_S_C5_R2_1, - BG_TYPE_GRD_S_C5_R2_2, - BG_TYPE_GRD_S_C5_R3_1, - BG_TYPE_GRD_S_C5_R3_2, - BG_TYPE_GRD_S_C5_S_1, - BG_TYPE_GRD_S_C5_S_2, - BG_TYPE_GRD_S_C6_1, - BG_TYPE_GRD_S_C6_2, - BG_TYPE_GRD_S_C6_3, - BG_TYPE_GRD_S_C6_R1_1, - BG_TYPE_GRD_S_C6_R1_2, - BG_TYPE_GRD_S_C6_R3_1, - BG_TYPE_GRD_S_C6_S_1, - BG_TYPE_GRD_S_C7_1, - BG_TYPE_GRD_S_C7_2, - BG_TYPE_GRD_S_C7_3, - BG_TYPE_GRD_S_C7_R1_1, - BG_TYPE_GRD_S_C7_R1_2, - BG_TYPE_GRD_S_C7_R3_1, - BG_TYPE_GRD_S_C7_R3_2, - BG_TYPE_GRD_S_C7_S_1, - BG_TYPE_GRD_S_C7_S_2, - BG_TYPE_GRD_S_C7_S_3, - BG_TYPE_GRD_S_E1_1, - BG_TYPE_GRD_S_E1_R1_1, - BG_TYPE_GRD_S_E2_1, - BG_TYPE_GRD_S_E2_C1_1, - BG_TYPE_GRD_S_E2_M_1, - BG_TYPE_GRD_S_E2_O_1, - BG_TYPE_GRD_S_E2_T_1, - BG_TYPE_GRD_S_E3_1, - BG_TYPE_GRD_S_E3_C1_1, - BG_TYPE_GRD_S_E3_M_1, - BG_TYPE_GRD_S_E3_O_1, - BG_TYPE_GRD_S_E3_T_1, - BG_TYPE_GRD_S_E4_1, - BG_TYPE_GRD_S_E5_1, - BG_TYPE_GRD_S_F_1, - BG_TYPE_GRD_S_F_2, - BG_TYPE_GRD_S_F_3, - BG_TYPE_GRD_S_F_4, - BG_TYPE_GRD_S_F_5, - BG_TYPE_GRD_S_F_6, - BG_TYPE_GRD_S_F_7, - BG_TYPE_GRD_S_F_8, - BG_TYPE_GRD_S_F_9, - BG_TYPE_GRD_S_F_10, - BG_TYPE_GRD_S_F_KO_1, - BG_TYPE_GRD_S_F_KO_2, - BG_TYPE_GRD_S_F_KO_3, - BG_TYPE_GRD_S_F_MH_1, - BG_TYPE_GRD_S_F_MH_2, - BG_TYPE_GRD_S_F_MH_3, - BG_TYPE_GRD_S_F_MU_1, - BG_TYPE_GRD_S_F_MU_2, - BG_TYPE_GRD_S_F_MU_3, - BG_TYPE_GRD_S_F_PK_1, - BG_TYPE_GRD_S_F_PK_2, - BG_TYPE_GRD_S_F_PK_3, - BG_TYPE_GRD_S_IR_1, - BG_TYPE_GRD_S_IR_2, - BG_TYPE_GRD_S_IR_3, - BG_TYPE_GRD_S_IR_4, - BG_TYPE_GRD_S_IL_1, - BG_TYPE_GRD_S_IL_2, - BG_TYPE_GRD_S_IL_3, - BG_TYPE_GRD_S_IL_4, - BG_TYPE_GRD_S_M_1, - BG_TYPE_GRD_S_M_2, - BG_TYPE_GRD_S_M_3, - BG_TYPE_GRD_S_M_4, - BG_TYPE_GRD_S_M_5, - BG_TYPE_GRD_S_M_6, - BG_TYPE_GRD_S_M_7, - BG_TYPE_GRD_S_M_8, - BG_TYPE_GRD_S_M_9, - BG_TYPE_GRD_S_M_10, - BG_TYPE_GRD_S_M_R1_1, - BG_TYPE_GRD_S_M_R1_2, - BG_TYPE_GRD_S_M_R1_3, - BG_TYPE_GRD_S_M_R1_4, - BG_TYPE_GRD_S_M_R1_5, - BG_TYPE_GRD_S_M_R1_B_1, - BG_TYPE_GRD_S_M_R1_B_2, - BG_TYPE_GRD_S_M_R1_B_3, - BG_TYPE_GRD_S_M_TA_1, - BG_TYPE_GRD_S_M_TA_2, - BG_TYPE_GRD_S_M_TA_3, - BG_TYPE_GRD_S_M_WF_1, - BG_TYPE_GRD_S_M_WF_2, - BG_TYPE_GRD_S_M_WF_3, - BG_TYPE_GRD_S_O_1, - BG_TYPE_GRD_S_O_2, - BG_TYPE_GRD_S_O_3, - BG_TYPE_GRD_S_O_4, - BG_TYPE_GRD_S_O_5, - BG_TYPE_GRD_S_O_6, - BG_TYPE_GRD_S_O_7, - BG_TYPE_GRD_S_O_8, - BG_TYPE_GRD_S_O_9, - BG_TYPE_GRD_S_O_10, - BG_TYPE_GRD_S_O_I_1, - BG_TYPE_GRD_S_O_I_2, - BG_TYPE_GRD_S_O_R1_1, - BG_TYPE_GRD_S_O_R1_2, - BG_TYPE_GRD_S_O_R1_3, - BG_TYPE_GRD_S_O_R1_4, - BG_TYPE_GRD_S_O_R1_5, - BG_TYPE_GRD_S_O_R1_B_1, - BG_TYPE_GRD_S_O_R1_B_2, - BG_TYPE_GRD_S_O_R1_B_3, - BG_TYPE_GRD_S_O_TA_1, - BG_TYPE_GRD_S_O_TA_2, - BG_TYPE_GRD_S_O_TA_3, - BG_TYPE_GRD_S_O_WF_1, - BG_TYPE_GRD_S_O_WF_2, - BG_TYPE_GRD_S_O_WF_3, - BG_TYPE_GRD_S_R1_1, - BG_TYPE_GRD_S_R1_2, - BG_TYPE_GRD_S_R1_3, - BG_TYPE_GRD_S_R1_4, - BG_TYPE_GRD_S_R1_B_1, - BG_TYPE_GRD_S_R1_B_2, - BG_TYPE_GRD_S_R1_B_3, - BG_TYPE_GRD_S_R1_P_1, - BG_TYPE_GRD_S_R2_1, - BG_TYPE_GRD_S_R2_2, - BG_TYPE_GRD_S_R2_3, - BG_TYPE_GRD_S_R2_4, - BG_TYPE_GRD_S_R2_B_1, - BG_TYPE_GRD_S_R2_B_2, - BG_TYPE_GRD_S_R2_B_3, - BG_TYPE_GRD_S_R2_P_1, - BG_TYPE_GRD_S_R3_1, - BG_TYPE_GRD_S_R3_2, - BG_TYPE_GRD_S_R3_3, - BG_TYPE_GRD_S_R3_4, - BG_TYPE_GRD_S_R3_B_1, - BG_TYPE_GRD_S_R3_B_2, - BG_TYPE_GRD_S_R3_B_3, - BG_TYPE_GRD_S_R3_P_1, - BG_TYPE_GRD_S_R4_1, - BG_TYPE_GRD_S_R4_2, - BG_TYPE_GRD_S_R4_3, - BG_TYPE_GRD_S_R4_B_1, - BG_TYPE_GRD_S_R4_B_2, - BG_TYPE_GRD_S_R4_P_1, - BG_TYPE_GRD_S_R5_1, - BG_TYPE_GRD_S_R5_2, - BG_TYPE_GRD_S_R5_3, - BG_TYPE_GRD_S_R5_B_1, - BG_TYPE_GRD_S_R5_B_2, - BG_TYPE_GRD_S_R5_P_1, - BG_TYPE_GRD_S_R6_1, - BG_TYPE_GRD_S_R6_2, - BG_TYPE_GRD_S_R6_3, - BG_TYPE_GRD_S_R6_B_1, - BG_TYPE_GRD_S_R6_B_2, - BG_TYPE_GRD_S_R6_P_1, - BG_TYPE_GRD_S_R7_1, - BG_TYPE_GRD_S_R7_2, - BG_TYPE_GRD_S_R7_3, - BG_TYPE_GRD_S_R7_B_1, - BG_TYPE_GRD_S_R7_B_2, - BG_TYPE_GRD_S_R7_P_1, - BG_TYPE_GRD_S_T_R1_1, - BG_TYPE_GRD_S_T_1, - BG_TYPE_GRD_S_T_2, - BG_TYPE_GRD_S_T_3, - BG_TYPE_GRD_S_T_4, - BG_TYPE_GRD_S_T_5, - BG_TYPE_GRD_S_T_6, - BG_TYPE_GRD_S_T_7, - BG_TYPE_GRD_S_T_8, - BG_TYPE_GRD_S_T_9, - BG_TYPE_GRD_S_T_10, - BG_TYPE_GRD_S_T_PO_1, - BG_TYPE_GRD_S_T_PO_2, - BG_TYPE_GRD_S_T_PO_3, - BG_TYPE_GRD_S_T_R1_2, - BG_TYPE_GRD_S_T_R1_3, - BG_TYPE_GRD_S_T_R1_4, - BG_TYPE_GRD_S_T_R1_5, - BG_TYPE_GRD_S_T_SH_1, - BG_TYPE_GRD_S_T_SH_2, - BG_TYPE_GRD_S_T_SH_3, - BG_TYPE_GRD_S_T_ST1_1, - BG_TYPE_GRD_S_T_ST1_2, - BG_TYPE_GRD_S_T_ST1_3, - BG_TYPE_242, - BG_TYPE_ROM_TENT, - BG_TYPE_ROOM01, - BG_TYPE_MYR_ETC, - BG_TYPE_246, - BG_TYPE_248, - BG_TYPE_249, - BG_TYPE_250, - BG_TYPE_251, - BG_TYPE_252, - BG_TYPE_ROM_SHOP4_FUKU, - BG_TYPE_254, - BG_TYPE_ROM_URANAI, - BG_TYPE_ROM_SHOP4_1, - BG_TYPE_257, - BG_TYPE_258, - BG_TYPE_259, - BG_TYPE_260, - BG_TYPE_ROM_TRAIN_IN, - BG_TYPE_GRD_S_F_9, - BG_TYPE_GRD_S_R1_3, - BG_TYPE_GRD_S_C1_3, - BG_TYPE_GRD_S_F_9, - BG_TYPE_GRD_PLAYER_SELECT, - BG_TYPE_GRD_POST_OFFICE, - BG_TYPE_POLICE_INDOOR, - BG_TYPE_TMP, - BG_TYPE_TMP2, - BG_TYPE_TMPR, - BG_TYPE_TMPR2, - BG_TYPE_TMP3, - BG_TYPE_TMPR3, - BG_TYPE_TMP4, - BG_TYPE_TMPR4, - BG_TYPE_GRD_YAMISHOP, - BG_TYPE_ROM_MUSEUM1, - BG_TYPE_ROM_MUSEUM2, - BG_TYPE_ROM_MUSEUM3, - BG_TYPE_ROM_MUSEUM5, - BG_TYPE_282, - BG_TYPE_283, - BG_TYPE_284, - BG_TYPE_285, - BG_TYPE_286, - BG_TYPE_287, - BG_TYPE_288, - BG_TYPE_289, - BG_TYPE_ROM_TAILOR, - BG_TYPE_ROM_TOUDAI, - BG_TYPE_292, -}; - extern Gfx room01_model[]; extern Gfx myr_etc_model[]; extern Gfx tmp_model[]; @@ -305,37 +10,37 @@ extern Gfx tmp2_model[]; extern Gfx tmp2_modelT[]; extern Gfx tmpr_model[]; extern Gfx tmpr_modelT[]; -extern EVW_ANIME_DATA* tmpr_evw_anime[]; +extern EVW_ANIME_DATA tmpr_evw_anime[]; extern Gfx tmpr2_model[]; extern Gfx tmpr2_modelT[]; -extern EVW_ANIME_DATA* tmpr2_evw_anime[]; +extern EVW_ANIME_DATA tmpr2_evw_anime[]; extern Gfx tmp3_model[]; extern Gfx tmp3_modelT[]; extern Gfx tmpr3_model[]; extern Gfx tmpr3_modelT[]; -extern EVW_ANIME_DATA* tmpr3_evw_anime[]; +extern EVW_ANIME_DATA tmpr3_evw_anime[]; extern Gfx tmp4_model[]; extern Gfx tmp4_modelT[]; extern Gfx tmpr4_model[]; extern Gfx tmpr4_modelT[]; -extern EVW_ANIME_DATA* tmpr4_evw_anime[]; +extern EVW_ANIME_DATA tmpr4_evw_anime[]; extern Gfx grd_s_c1_r1_1_model[]; extern Gfx grd_s_c1_r1_1_modelT[]; -extern EVW_ANIME_DATA* grd_s_c1_r1_1_evw_anime[]; +extern EVW_ANIME_DATA grd_s_c1_r1_1_evw_anime[]; extern Gfx grd_s_c1_s_1_model[]; extern Gfx grd_s_c1_s_1_modelT[]; extern Gfx grd_s_c2_r1_1_model[]; extern Gfx grd_s_c2_r1_1_modelT[]; -extern EVW_ANIME_DATA* grd_s_c2_r1_1_evw_anime[]; +extern EVW_ANIME_DATA grd_s_c2_r1_1_evw_anime[]; extern Gfx grd_s_c2_r2_1_model[]; extern Gfx grd_s_c2_r2_1_modelT[]; -extern EVW_ANIME_DATA* grd_s_c2_r2_1_evw_anime[]; +extern EVW_ANIME_DATA grd_s_c2_r2_1_evw_anime[]; extern Gfx grd_s_c5_r1_1_model[]; extern Gfx grd_s_c5_r1_1_modelT[]; -extern EVW_ANIME_DATA* grd_s_c5_r1_1_evw_anime[]; +extern EVW_ANIME_DATA grd_s_c5_r1_1_evw_anime[]; extern Gfx grd_s_t_r1_1_model[]; extern Gfx grd_s_t_r1_1_modelT[]; -extern EVW_ANIME_DATA* grd_s_t_r1_1_evw_anime[]; +extern EVW_ANIME_DATA grd_s_t_r1_1_evw_anime[]; extern Gfx grd_s_f_1_model[]; extern Gfx grd_s_f_1_modelT[]; extern Gfx grd_s_f_2_model[]; @@ -344,101 +49,101 @@ extern Gfx grd_s_c1_1_model[]; extern Gfx grd_s_c1_1_modelT[]; extern Gfx grd_s_c1_r2_1_model[]; extern Gfx grd_s_c1_r2_1_modelT[]; -extern EVW_ANIME_DATA* grd_s_c1_r2_1_evw_anime[]; +extern EVW_ANIME_DATA grd_s_c1_r2_1_evw_anime[]; extern Gfx grd_s_c1_r3_1_model[]; extern Gfx grd_s_c1_r3_1_modelT[]; -extern EVW_ANIME_DATA* grd_s_c1_r3_1_evw_anime[]; +extern EVW_ANIME_DATA grd_s_c1_r3_1_evw_anime[]; extern Gfx grd_s_c2_1_model[]; extern Gfx grd_s_c2_1_modelT[]; extern Gfx grd_s_c3_1_model[]; extern Gfx grd_s_c3_1_modelT[]; extern Gfx grd_s_c3_r1_1_model[]; extern Gfx grd_s_c3_r1_1_modelT[]; -extern EVW_ANIME_DATA* grd_s_c3_r1_1_evw_anime[]; +extern EVW_ANIME_DATA grd_s_c3_r1_1_evw_anime[]; extern Gfx grd_s_c4_1_model[]; extern Gfx grd_s_c4_1_modelT[]; extern Gfx grd_s_c4_r1_1_model[]; extern Gfx grd_s_c4_r1_1_modelT[]; -extern EVW_ANIME_DATA* grd_s_c4_r1_1_evw_anime[]; +extern EVW_ANIME_DATA grd_s_c4_r1_1_evw_anime[]; extern Gfx grd_s_c4_r2_1_model[]; extern Gfx grd_s_c4_r2_1_modelT[]; -extern EVW_ANIME_DATA* grd_s_c4_r2_1_evw_anime[]; +extern EVW_ANIME_DATA grd_s_c4_r2_1_evw_anime[]; extern Gfx grd_s_c5_1_model[]; extern Gfx grd_s_c5_1_modelT[]; extern Gfx grd_s_c5_r2_1_model[]; extern Gfx grd_s_c5_r2_1_modelT[]; -extern EVW_ANIME_DATA* grd_s_c5_r2_1_evw_anime[]; +extern EVW_ANIME_DATA grd_s_c5_r2_1_evw_anime[]; extern Gfx grd_s_c5_r3_1_model[]; extern Gfx grd_s_c5_r3_1_modelT[]; -extern EVW_ANIME_DATA* grd_s_c5_r3_1_evw_anime[]; +extern EVW_ANIME_DATA grd_s_c5_r3_1_evw_anime[]; extern Gfx grd_s_c6_1_model[]; extern Gfx grd_s_c6_1_modelT[]; extern Gfx grd_s_c6_r1_1_model[]; extern Gfx grd_s_c6_r1_1_modelT[]; -extern EVW_ANIME_DATA* grd_s_c6_r1_1_evw_anime[]; +extern EVW_ANIME_DATA grd_s_c6_r1_1_evw_anime[]; extern Gfx grd_s_c7_1_model[]; extern Gfx grd_s_c7_1_modelT[]; extern Gfx grd_s_r1_1_model[]; extern Gfx grd_s_r1_1_modelT[]; -extern EVW_ANIME_DATA* grd_s_r1_1_evw_anime[]; +extern EVW_ANIME_DATA grd_s_r1_1_evw_anime[]; extern Gfx grd_s_r2_1_model[]; extern Gfx grd_s_r2_1_modelT[]; -extern EVW_ANIME_DATA* grd_s_r2_1_evw_anime[]; +extern EVW_ANIME_DATA grd_s_r2_1_evw_anime[]; extern Gfx grd_s_r3_1_model[]; extern Gfx grd_s_r3_1_modelT[]; -extern EVW_ANIME_DATA* grd_s_r3_1_evw_anime[]; +extern EVW_ANIME_DATA grd_s_r3_1_evw_anime[]; extern Gfx grd_s_r4_1_model[]; extern Gfx grd_s_r4_1_modelT[]; -extern EVW_ANIME_DATA* grd_s_r4_1_evw_anime[]; +extern EVW_ANIME_DATA grd_s_r4_1_evw_anime[]; extern Gfx grd_s_r5_1_model[]; extern Gfx grd_s_r5_1_modelT[]; -extern EVW_ANIME_DATA* grd_s_r5_1_evw_anime[]; +extern EVW_ANIME_DATA grd_s_r5_1_evw_anime[]; extern Gfx grd_s_r6_1_model[]; extern Gfx grd_s_r6_1_modelT[]; -extern EVW_ANIME_DATA* grd_s_r6_1_evw_anime[]; +extern EVW_ANIME_DATA grd_s_r6_1_evw_anime[]; extern Gfx grd_s_r7_1_model[]; extern Gfx grd_s_r7_1_modelT[]; -extern EVW_ANIME_DATA* grd_s_r7_1_evw_anime[]; +extern EVW_ANIME_DATA grd_s_r7_1_evw_anime[]; extern Gfx grd_s_c3_r2_1_model[]; extern Gfx grd_s_c3_r2_1_modelT[]; -extern EVW_ANIME_DATA* grd_s_c3_r2_1_evw_anime[]; +extern EVW_ANIME_DATA grd_s_c3_r2_1_evw_anime[]; extern Gfx grd_s_c7_r3_1_model[]; extern Gfx grd_s_c7_r3_1_modelT[]; -extern EVW_ANIME_DATA* grd_s_c7_r3_1_evw_anime[]; +extern EVW_ANIME_DATA grd_s_c7_r3_1_evw_anime[]; extern Gfx grd_s_c6_r3_1_model[]; extern Gfx grd_s_c6_r3_1_modelT[]; -extern EVW_ANIME_DATA* grd_s_c6_r3_1_evw_anime[]; +extern EVW_ANIME_DATA grd_s_c6_r3_1_evw_anime[]; extern Gfx grd_s_r1_b_1_model[]; extern Gfx grd_s_r1_b_1_modelT[]; -extern EVW_ANIME_DATA* grd_s_r1_b_1_evw_anime[]; +extern EVW_ANIME_DATA grd_s_r1_b_1_evw_anime[]; extern Gfx grd_s_r2_b_1_model[]; extern Gfx grd_s_r2_b_1_modelT[]; -extern EVW_ANIME_DATA* grd_s_r2_b_1_evw_anime[]; +extern EVW_ANIME_DATA grd_s_r2_b_1_evw_anime[]; extern Gfx grd_s_r3_b_1_model[]; extern Gfx grd_s_r3_b_1_modelT[]; -extern EVW_ANIME_DATA* grd_s_r3_b_1_evw_anime[]; +extern EVW_ANIME_DATA grd_s_r3_b_1_evw_anime[]; extern Gfx grd_s_r4_b_1_model[]; extern Gfx grd_s_r4_b_1_modelT[]; -extern EVW_ANIME_DATA* grd_s_r4_b_1_evw_anime[]; +extern EVW_ANIME_DATA grd_s_r4_b_1_evw_anime[]; extern Gfx grd_s_r5_b_1_model[]; extern Gfx grd_s_r5_b_1_modelT[]; -extern EVW_ANIME_DATA* grd_s_r5_b_1_evw_anime[]; +extern EVW_ANIME_DATA grd_s_r5_b_1_evw_anime[]; extern Gfx grd_s_r6_b_1_model[]; extern Gfx grd_s_r6_b_1_modelT[]; -extern EVW_ANIME_DATA* grd_s_r6_b_1_evw_anime[]; +extern EVW_ANIME_DATA grd_s_r6_b_1_evw_anime[]; extern Gfx grd_s_r7_b_1_model[]; extern Gfx grd_s_r7_b_1_modelT[]; -extern EVW_ANIME_DATA* grd_s_r7_b_1_evw_anime[]; +extern EVW_ANIME_DATA grd_s_r7_b_1_evw_anime[]; extern Gfx grd_s_t_1_model[]; extern Gfx grd_s_t_1_modelT[]; -extern EVW_ANIME_DATA* grd_s_t_1_evw_anime[]; +extern EVW_ANIME_DATA grd_s_t_1_evw_anime[]; extern Gfx grd_s_c1_s_2_model[]; extern Gfx grd_s_c1_s_2_modelT[]; extern Gfx grd_s_c2_s_1_model[]; extern Gfx grd_s_c2_s_1_modelT[]; extern Gfx grd_s_c3_s_1_model[]; extern Gfx grd_s_c3_s_1_modelT[]; -extern EVW_ANIME_DATA* grd_s_c3_s_1_evw_anime[]; +extern EVW_ANIME_DATA grd_s_c3_s_1_evw_anime[]; extern Gfx grd_s_c4_s_1_model[]; extern Gfx grd_s_c4_s_1_modelT[]; extern Gfx grd_s_c5_s_1_model[]; @@ -448,10 +153,10 @@ extern Gfx grd_s_c6_s_1_modelT[]; extern Gfx grd_s_c7_s_1_model[]; extern Gfx grd_s_c4_r3_1_model[]; extern Gfx grd_s_c4_r3_1_modelT[]; -extern EVW_ANIME_DATA* grd_s_c4_r3_1_evw_anime[]; +extern EVW_ANIME_DATA grd_s_c4_r3_1_evw_anime[]; extern Gfx grd_s_c7_r1_1_model[]; extern Gfx grd_s_c7_r1_1_modelT[]; -extern EVW_ANIME_DATA* grd_s_c7_r1_1_evw_anime[]; +extern EVW_ANIME_DATA grd_s_c7_r1_1_evw_anime[]; extern Gfx grd_s_t_st1_1_model[]; extern Gfx grd_s_t_st1_1_modelT[]; extern Gfx grd_s_c1_2_model[]; @@ -466,22 +171,22 @@ extern Gfx grd_s_c2_2_model[]; extern Gfx grd_s_c2_2_modelT[]; extern Gfx grd_s_r1_2_model[]; extern Gfx grd_s_r1_2_modelT[]; -extern EVW_ANIME_DATA* grd_s_r1_2_evw_anime[]; +extern EVW_ANIME_DATA grd_s_r1_2_evw_anime[]; extern Gfx grd_s_r1_3_model[]; extern Gfx grd_s_r1_3_modelT[]; -extern EVW_ANIME_DATA* grd_s_r1_3_evw_anime[]; +extern EVW_ANIME_DATA grd_s_r1_3_evw_anime[]; extern Gfx grd_s_r4_2_model[]; extern Gfx grd_s_r4_2_modelT[]; -extern EVW_ANIME_DATA* grd_s_r4_2_evw_anime[]; +extern EVW_ANIME_DATA grd_s_r4_2_evw_anime[]; extern Gfx grd_s_r5_2_model[]; extern Gfx grd_s_r5_2_modelT[]; -extern EVW_ANIME_DATA* grd_s_r5_2_evw_anime[]; +extern EVW_ANIME_DATA grd_s_r5_2_evw_anime[]; extern Gfx grd_s_r7_2_model[]; extern Gfx grd_s_r7_2_modelT[]; -extern EVW_ANIME_DATA* grd_s_r7_2_evw_anime[]; +extern EVW_ANIME_DATA grd_s_r7_2_evw_anime[]; extern Gfx grd_s_r7_3_model[]; extern Gfx grd_s_r7_3_modelT[]; -extern EVW_ANIME_DATA* grd_s_r7_3_evw_anime[]; +extern EVW_ANIME_DATA grd_s_r7_3_evw_anime[]; extern Gfx grd_s_c2_s_2_model[]; extern Gfx grd_s_c2_s_2_modelT[]; extern Gfx grd_s_c1_s_3_model[]; @@ -490,22 +195,22 @@ extern Gfx grd_s_c4_s_2_modelT[]; extern Gfx grd_s_c5_s_2_model[]; extern Gfx grd_s_c6_r1_2_model[]; extern Gfx grd_s_c6_r1_2_modelT[]; -extern EVW_ANIME_DATA* grd_s_c6_r1_2_evw_anime[]; +extern EVW_ANIME_DATA grd_s_c6_r1_2_evw_anime[]; extern Gfx grd_s_c3_r1_2_model[]; extern Gfx grd_s_c3_r1_2_modelT[]; -extern EVW_ANIME_DATA* grd_s_c3_r1_2_evw_anime[]; +extern EVW_ANIME_DATA grd_s_c3_r1_2_evw_anime[]; extern Gfx grd_s_c3_2_model[]; extern Gfx grd_s_c3_2_modelT[]; -extern EVW_ANIME_DATA* grd_s_c3_2_evw_anime[]; +extern EVW_ANIME_DATA grd_s_c3_2_evw_anime[]; extern Gfx grd_s_c7_3_model[]; extern Gfx grd_s_c7_3_modelT[]; -extern EVW_ANIME_DATA* grd_s_c7_3_evw_anime[]; +extern EVW_ANIME_DATA grd_s_c7_3_evw_anime[]; extern Gfx grd_s_c1_r2_2_model[]; extern Gfx grd_s_c1_r2_2_modelT[]; -extern EVW_ANIME_DATA* grd_s_c1_r2_2_evw_anime[]; +extern EVW_ANIME_DATA grd_s_c1_r2_2_evw_anime[]; extern Gfx grd_s_c1_r3_2_model[]; extern Gfx grd_s_c1_r3_2_modelT[]; -extern EVW_ANIME_DATA* grd_s_c1_r3_2_evw_anime[]; +extern EVW_ANIME_DATA grd_s_c1_r3_2_evw_anime[]; extern Gfx grd_s_c4_2_model[]; extern Gfx grd_s_c4_2_modelT[]; extern Gfx grd_s_c5_2_model[]; @@ -514,36 +219,36 @@ extern Gfx grd_s_c6_2_model[]; extern Gfx grd_s_c6_2_modelT[]; extern Gfx grd_s_r2_2_model[]; extern Gfx grd_s_r2_2_modelT[]; -extern EVW_ANIME_DATA* grd_s_r2_2_evw_anime[]; +extern EVW_ANIME_DATA grd_s_r2_2_evw_anime[]; extern Gfx grd_s_r3_2_model[]; extern Gfx grd_s_r3_2_modelT[]; -extern EVW_ANIME_DATA* grd_s_r3_2_evw_anime[]; +extern EVW_ANIME_DATA grd_s_r3_2_evw_anime[]; extern Gfx grd_s_c4_r1_2_model[]; extern Gfx grd_s_c4_r1_2_modelT[]; -extern EVW_ANIME_DATA* grd_s_c4_r1_2_evw_anime[]; +extern EVW_ANIME_DATA grd_s_c4_r1_2_evw_anime[]; extern Gfx grd_s_c4_r2_2_model[]; extern Gfx grd_s_c4_r2_2_modelT[]; -extern EVW_ANIME_DATA* grd_s_c4_r2_2_evw_anime[]; +extern EVW_ANIME_DATA grd_s_c4_r2_2_evw_anime[]; extern Gfx grd_s_c7_r1_2_model[]; extern Gfx grd_s_c7_r1_2_modelT[]; -extern EVW_ANIME_DATA* grd_s_c7_r1_2_evw_anime[]; +extern EVW_ANIME_DATA grd_s_c7_r1_2_evw_anime[]; extern Gfx grd_s_c6_2_model[]; extern Gfx grd_s_c6_2_modelT[]; extern Gfx grd_s_c5_r2_2_model[]; extern Gfx grd_s_c5_r2_2_modelT[]; -extern EVW_ANIME_DATA* grd_s_c5_r2_2_evw_anime[]; +extern EVW_ANIME_DATA grd_s_c5_r2_2_evw_anime[]; extern Gfx grd_s_c4_r3_2_model[]; extern Gfx grd_s_c4_r3_2_modelT[]; -extern EVW_ANIME_DATA* grd_s_c4_r3_2_evw_anime[]; +extern EVW_ANIME_DATA grd_s_c4_r3_2_evw_anime[]; extern Gfx grd_s_r2_3_model[]; extern Gfx grd_s_r2_3_modelT[]; -extern EVW_ANIME_DATA* grd_s_r2_3_evw_anime[]; +extern EVW_ANIME_DATA grd_s_r2_3_evw_anime[]; extern Gfx grd_s_r3_3_model[]; extern Gfx grd_s_r3_3_modelT[]; -extern EVW_ANIME_DATA* grd_s_r3_3_evw_anime[]; +extern EVW_ANIME_DATA grd_s_r3_3_evw_anime[]; extern Gfx grd_s_c5_r3_2_model[]; extern Gfx grd_s_c5_r3_2_modelT[]; -extern EVW_ANIME_DATA* grd_s_c5_r3_2_evw_anime[]; +extern EVW_ANIME_DATA grd_s_c5_r3_2_evw_anime[]; extern Gfx grd_s_c5_3_model[]; extern Gfx grd_s_c5_3_modelT[]; extern Gfx grd_s_c4_3_model[]; @@ -552,102 +257,102 @@ extern Gfx grd_s_c3_3_model[]; extern Gfx grd_s_c3_3_modelT[]; extern Gfx grd_s_c2_3_model[]; extern Gfx grd_s_c2_3_modelT[]; -extern EVW_ANIME_DATA* grd_s_c2_3_evw_anime[]; +extern EVW_ANIME_DATA grd_s_c2_3_evw_anime[]; extern Gfx grd_s_r1_p_1_model[]; extern Gfx grd_s_r1_p_1_modelT[]; -extern EVW_ANIME_DATA* grd_s_r1_p_1_evw_anime[]; +extern EVW_ANIME_DATA grd_s_r1_p_1_evw_anime[]; extern Gfx grd_s_r6_2_model[]; extern Gfx grd_s_r6_2_modelT[]; -extern EVW_ANIME_DATA* grd_s_r6_2_evw_anime[]; +extern EVW_ANIME_DATA grd_s_r6_2_evw_anime[]; extern Gfx police_indoor_model[]; extern Gfx police_indoor_modelT[]; extern Gfx grd_s_c1_r1_2_model[]; extern Gfx grd_s_c1_r1_2_modelT[]; -extern EVW_ANIME_DATA* grd_s_c1_r1_2_evw_anime[]; +extern EVW_ANIME_DATA grd_s_c1_r1_2_evw_anime[]; extern Gfx grd_s_c1_r1_3_model[]; extern Gfx grd_s_c1_r1_3_modelT[]; -extern EVW_ANIME_DATA* grd_s_c1_r1_3_evw_anime[]; +extern EVW_ANIME_DATA grd_s_c1_r1_3_evw_anime[]; extern Gfx grd_s_c1_r2_3_model[]; extern Gfx grd_s_c1_r2_3_modelT[]; -extern EVW_ANIME_DATA* grd_s_c1_r2_3_evw_anime[]; +extern EVW_ANIME_DATA grd_s_c1_r2_3_evw_anime[]; extern Gfx grd_s_c1_r3_3_model[]; extern Gfx grd_s_c1_r3_3_modelT[]; -extern EVW_ANIME_DATA* grd_s_c1_r3_3_evw_anime[]; +extern EVW_ANIME_DATA grd_s_c1_r3_3_evw_anime[]; extern Gfx grd_s_c2_r1_2_model[]; extern Gfx grd_s_c2_r1_2_modelT[]; -extern EVW_ANIME_DATA* grd_s_c2_r1_2_evw_anime[]; +extern EVW_ANIME_DATA grd_s_c2_r1_2_evw_anime[]; extern Gfx grd_s_c5_r1_2_model[]; extern Gfx grd_s_c5_r1_2_modelT[]; -extern EVW_ANIME_DATA* grd_s_c5_r1_2_evw_anime[]; +extern EVW_ANIME_DATA grd_s_c5_r1_2_evw_anime[]; extern Gfx grd_s_c6_3_model[]; extern Gfx grd_s_c6_3_modelT[]; extern Gfx grd_s_c7_2_model[]; extern Gfx grd_s_c7_2_modelT[]; extern Gfx grd_s_r1_4_model[]; extern Gfx grd_s_r1_4_modelT[]; -extern EVW_ANIME_DATA* grd_s_r1_4_evw_anime[]; +extern EVW_ANIME_DATA grd_s_r1_4_evw_anime[]; extern Gfx grd_s_r2_4_model[]; extern Gfx grd_s_r2_4_modelT[]; -extern EVW_ANIME_DATA* grd_s_r2_4_evw_anime[]; +extern EVW_ANIME_DATA grd_s_r2_4_evw_anime[]; extern Gfx grd_s_r3_4_model[]; extern Gfx grd_s_r3_4_modelT[]; -extern EVW_ANIME_DATA* grd_s_r3_4_evw_anime[]; +extern EVW_ANIME_DATA grd_s_r3_4_evw_anime[]; extern Gfx grd_s_r4_3_model[]; extern Gfx grd_s_r4_3_modelT[]; -extern EVW_ANIME_DATA* grd_s_r4_3_evw_anime[]; +extern EVW_ANIME_DATA grd_s_r4_3_evw_anime[]; extern Gfx grd_s_r5_3_model[]; extern Gfx grd_s_r5_3_modelT[]; -extern EVW_ANIME_DATA* grd_s_r5_3_evw_anime[]; +extern EVW_ANIME_DATA grd_s_r5_3_evw_anime[]; extern Gfx grd_s_r6_3_model[]; extern Gfx grd_s_r6_3_modelT[]; -extern EVW_ANIME_DATA* grd_s_r6_3_evw_anime[]; +extern EVW_ANIME_DATA grd_s_r6_3_evw_anime[]; extern Gfx grd_s_c2_r2_2_model[]; extern Gfx grd_s_c2_r2_2_modelT[]; -extern EVW_ANIME_DATA* grd_s_c2_r2_2_evw_anime[]; +extern EVW_ANIME_DATA grd_s_c2_r2_2_evw_anime[]; extern Gfx grd_s_c3_r2_2_model[]; extern Gfx grd_s_c3_r2_2_modelT[]; -extern EVW_ANIME_DATA* grd_s_c3_r2_2_evw_anime[]; +extern EVW_ANIME_DATA grd_s_c3_r2_2_evw_anime[]; extern Gfx grd_s_r1_b_2_model[]; extern Gfx grd_s_r1_b_2_modelT[]; -extern EVW_ANIME_DATA* grd_s_r1_b_2_evw_anime[]; +extern EVW_ANIME_DATA grd_s_r1_b_2_evw_anime[]; extern Gfx grd_s_r2_b_2_model[]; extern Gfx grd_s_r2_b_2_modelT[]; -extern EVW_ANIME_DATA* grd_s_r2_b_2_evw_anime[]; +extern EVW_ANIME_DATA grd_s_r2_b_2_evw_anime[]; extern Gfx grd_s_r4_b_2_model[]; extern Gfx grd_s_r4_b_2_modelT[]; -extern EVW_ANIME_DATA* grd_s_r4_b_2_evw_anime[]; +extern EVW_ANIME_DATA grd_s_r4_b_2_evw_anime[]; extern Gfx grd_s_r3_b_2_model[]; extern Gfx grd_s_r3_b_2_modelT[]; -extern EVW_ANIME_DATA* grd_s_r3_b_2_evw_anime[]; +extern EVW_ANIME_DATA grd_s_r3_b_2_evw_anime[]; extern Gfx grd_s_r5_b_2_model[]; extern Gfx grd_s_r5_b_2_modelT[]; -extern EVW_ANIME_DATA* grd_s_r5_b_2_evw_anime[]; +extern EVW_ANIME_DATA grd_s_r5_b_2_evw_anime[]; extern Gfx grd_s_r6_b_2_model[]; extern Gfx grd_s_r6_b_2_modelT[]; -extern EVW_ANIME_DATA* grd_s_r6_b_2_evw_anime[]; +extern EVW_ANIME_DATA grd_s_r6_b_2_evw_anime[]; extern Gfx grd_s_r7_b_2_model[]; extern Gfx grd_s_r7_b_2_modelT[]; -extern EVW_ANIME_DATA* grd_s_r7_b_2_evw_anime[]; +extern EVW_ANIME_DATA grd_s_r7_b_2_evw_anime[]; extern Gfx grd_s_r1_b_3_model[]; extern Gfx grd_s_r1_b_3_modelT[]; -extern EVW_ANIME_DATA* grd_s_r1_b_3_evw_anime[]; +extern EVW_ANIME_DATA grd_s_r1_b_3_evw_anime[]; extern Gfx grd_s_r2_b_3_model[]; extern Gfx grd_s_r2_b_3_modelT[]; -extern EVW_ANIME_DATA* grd_s_r2_b_3_evw_anime[]; +extern EVW_ANIME_DATA grd_s_r2_b_3_evw_anime[]; extern Gfx grd_s_r3_b_3_model[]; extern Gfx grd_s_r3_b_3_modelT[]; -extern EVW_ANIME_DATA* grd_s_r3_b_3_evw_anime[]; +extern EVW_ANIME_DATA grd_s_r3_b_3_evw_anime[]; extern Gfx grd_s_f_3_model[]; extern Gfx grd_s_f_3_modelT[]; extern Gfx grd_s_f_4_model[]; extern Gfx grd_s_f_4_modelT[]; -extern EVW_ANIME_DATA* grd_s_f_4_evw_anime[]; +extern EVW_ANIME_DATA grd_s_f_4_evw_anime[]; extern Gfx grd_s_f_5_model[]; extern Gfx grd_s_f_5_modelT[]; -extern EVW_ANIME_DATA* grd_s_f_5_evw_anime[]; +extern EVW_ANIME_DATA grd_s_f_5_evw_anime[]; extern Gfx grd_s_f_6_model[]; extern Gfx grd_s_f_6_modelT[]; -extern EVW_ANIME_DATA* grd_s_f_6_evw_anime[]; +extern EVW_ANIME_DATA grd_s_f_6_evw_anime[]; extern Gfx grd_s_f_7_model[]; extern Gfx grd_s_f_7_modelT[]; extern Gfx grd_s_f_8_model[]; @@ -662,10 +367,10 @@ extern Gfx grd_s_t_3_model[]; extern Gfx grd_s_t_3_modelT[]; extern Gfx grd_s_t_4_model[]; extern Gfx grd_s_t_4_modelT[]; -extern EVW_ANIME_DATA* grd_s_t_4_evw_anime[]; +extern EVW_ANIME_DATA grd_s_t_4_evw_anime[]; extern Gfx grd_s_t_5_model[]; extern Gfx grd_s_t_5_modelT[]; -extern EVW_ANIME_DATA* grd_s_t_5_evw_anime[]; +extern EVW_ANIME_DATA grd_s_t_5_evw_anime[]; extern Gfx grd_s_t_6_model[]; extern Gfx grd_s_t_6_modelT[]; extern Gfx grd_s_t_7_model[]; @@ -678,28 +383,28 @@ extern Gfx grd_s_t_10_model[]; extern Gfx grd_s_t_10_modelT[]; extern Gfx grd_s_t_r1_2_model[]; extern Gfx grd_s_t_r1_2_modelT[]; -extern EVW_ANIME_DATA* grd_s_t_r1_2_evw_anime[]; +extern EVW_ANIME_DATA grd_s_t_r1_2_evw_anime[]; extern Gfx grd_s_t_r1_3_model[]; extern Gfx grd_s_t_r1_3_modelT[]; -extern EVW_ANIME_DATA* grd_s_t_r1_3_evw_anime[]; +extern EVW_ANIME_DATA grd_s_t_r1_3_evw_anime[]; extern Gfx grd_s_t_r1_4_model[]; extern Gfx grd_s_t_r1_4_modelT[]; -extern EVW_ANIME_DATA* grd_s_t_r1_4_evw_anime[]; +extern EVW_ANIME_DATA grd_s_t_r1_4_evw_anime[]; extern Gfx grd_s_t_r1_5_model[]; extern Gfx grd_s_t_r1_5_modelT[]; -extern EVW_ANIME_DATA* grd_s_t_r1_5_evw_anime[]; +extern EVW_ANIME_DATA grd_s_t_r1_5_evw_anime[]; extern Gfx grd_s_r2_p_1_model[]; extern Gfx grd_s_r2_p_1_modelT[]; -extern EVW_ANIME_DATA* grd_s_r2_p_1_evw_anime[]; +extern EVW_ANIME_DATA grd_s_r2_p_1_evw_anime[]; extern Gfx grd_s_r3_p_1_model[]; extern Gfx grd_s_r3_p_1_modelT[]; -extern EVW_ANIME_DATA* grd_s_r3_p_1_evw_anime[]; +extern EVW_ANIME_DATA grd_s_r3_p_1_evw_anime[]; extern Gfx grd_s_r6_p_1_model[]; extern Gfx grd_s_r6_p_1_modelT[]; -extern EVW_ANIME_DATA* grd_s_r6_p_1_evw_anime[]; +extern EVW_ANIME_DATA grd_s_r6_p_1_evw_anime[]; extern Gfx grd_s_r7_p_1_model[]; extern Gfx grd_s_r7_p_1_modelT[]; -extern EVW_ANIME_DATA* grd_s_r7_p_1_evw_anime[]; +extern EVW_ANIME_DATA grd_s_r7_p_1_evw_anime[]; extern Gfx grd_s_t_st1_2_model[]; extern Gfx grd_s_t_st1_2_modelT[]; extern Gfx grd_s_t_st1_3_model[]; @@ -708,17 +413,17 @@ extern Gfx grd_post_office_model[]; extern Gfx grd_post_office_modelT[]; extern Gfx grd_s_r4_p_1_model[]; extern Gfx grd_s_r4_p_1_modelT[]; -extern EVW_ANIME_DATA* grd_s_r4_p_1_evw_anime[]; +extern EVW_ANIME_DATA grd_s_r4_p_1_evw_anime[]; extern Gfx grd_s_r5_p_1_model[]; extern Gfx grd_s_r5_p_1_modelT[]; -extern EVW_ANIME_DATA* grd_s_r5_p_1_evw_anime[]; +extern EVW_ANIME_DATA grd_s_r5_p_1_evw_anime[]; extern Gfx rom_train_in_model[]; extern Gfx rom_train_in_modelT[]; extern Gfx grd_s_f_9_model[]; extern Gfx grd_s_f_9_modelT[]; extern Gfx grd_s_r1_3_model[]; extern Gfx grd_s_r1_3_modelT[]; -extern EVW_ANIME_DATA* grd_s_r1_3_evw_anime[]; +extern EVW_ANIME_DATA grd_s_r1_3_evw_anime[]; extern Gfx grd_s_c1_3_model[]; extern Gfx grd_s_c1_3_modelT[]; extern Gfx grd_s_f_9_model[]; @@ -727,14 +432,14 @@ extern Gfx grd_yamishop_model[]; extern Gfx grd_yamishop_modelT[]; extern Gfx grd_player_select_model[]; extern Gfx grd_player_select_modelT[]; -extern EVW_ANIME_DATA* grd_player_select_evw_anime[]; +extern EVW_ANIME_DATA grd_player_select_evw_anime[]; extern Gfx grd_s_c1_s_4_model[]; extern Gfx grd_s_c1_s_4_modelT[]; extern Gfx grd_s_e1_1_model[]; extern Gfx grd_s_e1_1_modelT[]; extern Gfx grd_s_e1_r1_1_model[]; extern Gfx grd_s_e1_r1_1_modelT[]; -extern EVW_ANIME_DATA* grd_s_e1_r1_1_evw_anime[]; +extern EVW_ANIME_DATA grd_s_e1_r1_1_evw_anime[]; extern Gfx grd_s_e2_1_model[]; extern Gfx grd_s_e2_1_modelT[]; extern Gfx grd_s_e2_c1_1_model[]; @@ -757,7 +462,7 @@ extern Gfx grd_s_f_ko_2_model[]; extern Gfx grd_s_f_ko_2_modelT[]; extern Gfx grd_s_f_ko_3_model[]; extern Gfx grd_s_f_ko_3_modelT[]; -extern EVW_ANIME_DATA* grd_s_f_ko_3_evw_anime[]; +extern EVW_ANIME_DATA grd_s_f_ko_3_evw_anime[]; extern Gfx grd_s_f_mh_1_model[]; extern Gfx grd_s_f_mh_1_modelT[]; extern Gfx grd_s_f_mh_2_model[]; @@ -776,17 +481,17 @@ extern Gfx grd_s_t_po_2_model[]; extern Gfx grd_s_t_po_2_modelT[]; extern Gfx grd_s_t_po_3_model[]; extern Gfx grd_s_t_po_3_modelT[]; -extern EVW_ANIME_DATA* grd_s_t_po_3_evw_anime[]; +extern EVW_ANIME_DATA grd_s_t_po_3_evw_anime[]; extern Gfx grd_s_t_sh_1_model[]; extern Gfx grd_s_t_sh_1_modelT[]; extern Gfx grd_s_t_sh_2_model[]; extern Gfx grd_s_t_sh_2_modelT[]; -extern EVW_ANIME_DATA* grd_s_t_sh_2_evw_anime[]; +extern EVW_ANIME_DATA grd_s_t_sh_2_evw_anime[]; extern Gfx grd_s_t_sh_3_model[]; extern Gfx grd_s_t_sh_3_modelT[]; extern Gfx rom_uranai_model[]; extern Gfx rom_uranai_modelT[]; -extern EVW_ANIME_DATA* rom_uranai_evw_anime[]; +extern EVW_ANIME_DATA rom_uranai_evw_anime[]; extern Gfx rom_shop4_1_model[]; extern Gfx rom_shop4_1_modelT[]; extern Gfx grd_s_hole_test_model[]; @@ -795,7 +500,7 @@ extern Gfx grd_s_m_1_model[]; extern Gfx grd_s_m_1_modelT[]; extern Gfx grd_s_m_r1_1_model[]; extern Gfx grd_s_m_r1_1_modelT[]; -extern EVW_ANIME_DATA* grd_s_m_r1_1_evw_anime[]; +extern EVW_ANIME_DATA grd_s_m_r1_1_evw_anime[]; extern Gfx grd_s_e2_m_1_model[]; extern Gfx grd_s_e2_m_1_modelT[]; extern Gfx grd_s_e3_m_1_model[]; @@ -804,25 +509,25 @@ extern Gfx rom_shop4_fuku_model[]; extern Gfx rom_shop4_fuku_modelT[]; extern Gfx grd_s_m_r1_2_model[]; extern Gfx grd_s_m_r1_2_modelT[]; -extern EVW_ANIME_DATA* grd_s_m_r1_2_evw_anime[]; +extern EVW_ANIME_DATA grd_s_m_r1_2_evw_anime[]; extern Gfx grd_s_m_r1_3_model[]; extern Gfx grd_s_m_r1_3_modelT[]; -extern EVW_ANIME_DATA* grd_s_m_r1_3_evw_anime[]; +extern EVW_ANIME_DATA grd_s_m_r1_3_evw_anime[]; extern Gfx grd_s_m_r1_4_model[]; extern Gfx grd_s_m_r1_4_modelT[]; -extern EVW_ANIME_DATA* grd_s_m_r1_4_evw_anime[]; +extern EVW_ANIME_DATA grd_s_m_r1_4_evw_anime[]; extern Gfx grd_s_m_r1_5_model[]; extern Gfx grd_s_m_r1_5_modelT[]; -extern EVW_ANIME_DATA* grd_s_m_r1_5_evw_anime[]; +extern EVW_ANIME_DATA grd_s_m_r1_5_evw_anime[]; extern Gfx grd_s_m_r1_b_1_model[]; extern Gfx grd_s_m_r1_b_1_modelT[]; -extern EVW_ANIME_DATA* grd_s_m_r1_b_1_evw_anime[]; +extern EVW_ANIME_DATA grd_s_m_r1_b_1_evw_anime[]; extern Gfx grd_s_m_r1_b_2_model[]; extern Gfx grd_s_m_r1_b_2_modelT[]; -extern EVW_ANIME_DATA* grd_s_m_r1_b_2_evw_anime[]; +extern EVW_ANIME_DATA grd_s_m_r1_b_2_evw_anime[]; extern Gfx grd_s_m_r1_b_3_model[]; extern Gfx grd_s_m_r1_b_3_modelT[]; -extern EVW_ANIME_DATA* grd_s_m_r1_b_3_evw_anime[]; +extern EVW_ANIME_DATA grd_s_m_r1_b_3_evw_anime[]; extern Gfx grd_s_m_2_model[]; extern Gfx grd_s_m_2_modelT[]; extern Gfx grd_s_m_3_model[]; @@ -847,7 +552,7 @@ extern Gfx grd_s_c7_s_2_model[]; extern Gfx grd_s_c7_s_3_model[]; extern Gfx grd_s_c7_r3_2_model[]; extern Gfx grd_s_c7_r3_2_modelT[]; -extern EVW_ANIME_DATA* grd_s_c7_r3_2_evw_anime[]; +extern EVW_ANIME_DATA grd_s_c7_r3_2_evw_anime[]; extern Gfx rom_museum1_model[]; extern Gfx rom_museum1_modelT[]; extern Gfx rom_museum2_model[]; @@ -866,25 +571,25 @@ extern Gfx grd_s_f_mu_2_model[]; extern Gfx grd_s_f_mu_2_modelT[]; extern Gfx grd_s_f_mu_3_model[]; extern Gfx grd_s_f_mu_3_modelT[]; -extern EVW_ANIME_DATA* grd_s_f_mu_3_evw_anime[]; +extern EVW_ANIME_DATA grd_s_f_mu_3_evw_anime[]; extern Gfx grd_s_m_ta_1_model[]; extern Gfx grd_s_m_ta_1_modelT[]; -extern EVW_ANIME_DATA* grd_s_m_ta_1_evw_anime[]; +extern EVW_ANIME_DATA grd_s_m_ta_1_evw_anime[]; extern Gfx grd_s_m_ta_2_model[]; extern Gfx grd_s_m_ta_2_modelT[]; -extern EVW_ANIME_DATA* grd_s_m_ta_2_evw_anime[]; +extern EVW_ANIME_DATA grd_s_m_ta_2_evw_anime[]; extern Gfx grd_s_m_ta_3_model[]; extern Gfx grd_s_m_ta_3_modelT[]; -extern EVW_ANIME_DATA* grd_s_m_ta_3_evw_anime[]; +extern EVW_ANIME_DATA grd_s_m_ta_3_evw_anime[]; extern Gfx grd_s_m_wf_1_model[]; extern Gfx grd_s_m_wf_1_modelT[]; -extern EVW_ANIME_DATA* grd_s_m_wf_1_evw_anime[]; +extern EVW_ANIME_DATA grd_s_m_wf_1_evw_anime[]; extern Gfx grd_s_m_wf_2_model[]; extern Gfx grd_s_m_wf_2_modelT[]; -extern EVW_ANIME_DATA* grd_s_m_wf_2_evw_anime[]; +extern EVW_ANIME_DATA grd_s_m_wf_2_evw_anime[]; extern Gfx grd_s_m_wf_3_model[]; extern Gfx grd_s_m_wf_3_modelT[]; -extern EVW_ANIME_DATA* grd_s_m_wf_3_evw_anime[]; +extern EVW_ANIME_DATA grd_s_m_wf_3_evw_anime[]; extern Gfx grd_s_ir_1_model[]; extern Gfx grd_s_ir_1_modelT[]; extern Gfx grd_s_il_1_model[]; @@ -895,85 +600,85 @@ extern Gfx grd_s_il_2_model[]; extern Gfx grd_s_il_2_modelT[]; extern Gfx grd_s_o_1_model[]; extern Gfx grd_s_o_1_modelT[]; -extern EVW_ANIME_DATA* grd_s_o_1_evw_anime[]; +extern EVW_ANIME_DATA grd_s_o_1_evw_anime[]; extern Gfx grd_s_o_2_model[]; extern Gfx grd_s_o_2_modelT[]; -extern EVW_ANIME_DATA* grd_s_o_2_evw_anime[]; +extern EVW_ANIME_DATA grd_s_o_2_evw_anime[]; extern Gfx grd_s_o_3_model[]; extern Gfx grd_s_o_3_modelT[]; -extern EVW_ANIME_DATA* grd_s_o_3_evw_anime[]; +extern EVW_ANIME_DATA grd_s_o_3_evw_anime[]; extern Gfx grd_s_o_4_model[]; extern Gfx grd_s_o_4_modelT[]; -extern EVW_ANIME_DATA* grd_s_o_4_evw_anime[]; +extern EVW_ANIME_DATA grd_s_o_4_evw_anime[]; extern Gfx grd_s_e2_o_1_model[]; extern Gfx grd_s_e2_o_1_modelT[]; extern Gfx grd_s_e3_o_1_model[]; extern Gfx grd_s_e3_o_1_modelT[]; extern Gfx grd_s_o_5_model[]; extern Gfx grd_s_o_5_modelT[]; -extern EVW_ANIME_DATA* grd_s_o_5_evw_anime[]; +extern EVW_ANIME_DATA grd_s_o_5_evw_anime[]; extern Gfx grd_s_o_6_model[]; extern Gfx grd_s_o_6_modelT[]; -extern EVW_ANIME_DATA* grd_s_o_6_evw_anime[]; +extern EVW_ANIME_DATA grd_s_o_6_evw_anime[]; extern Gfx grd_s_o_7_model[]; extern Gfx grd_s_o_7_modelT[]; -extern EVW_ANIME_DATA* grd_s_o_7_evw_anime[]; +extern EVW_ANIME_DATA grd_s_o_7_evw_anime[]; extern Gfx grd_s_o_8_model[]; extern Gfx grd_s_o_8_modelT[]; -extern EVW_ANIME_DATA* grd_s_o_8_evw_anime[]; +extern EVW_ANIME_DATA grd_s_o_8_evw_anime[]; extern Gfx grd_s_o_9_model[]; extern Gfx grd_s_o_9_modelT[]; -extern EVW_ANIME_DATA* grd_s_o_9_evw_anime[]; +extern EVW_ANIME_DATA grd_s_o_9_evw_anime[]; extern Gfx grd_s_o_10_model[]; extern Gfx grd_s_o_10_modelT[]; -extern EVW_ANIME_DATA* grd_s_o_10_evw_anime[]; +extern EVW_ANIME_DATA grd_s_o_10_evw_anime[]; extern Gfx grd_s_o_i_1_model[]; extern Gfx grd_s_o_i_1_modelT[]; extern Gfx grd_s_o_i_2_model[]; extern Gfx grd_s_o_i_2_modelT[]; -extern EVW_ANIME_DATA* grd_s_o_i_2_evw_anime[]; +extern EVW_ANIME_DATA grd_s_o_i_2_evw_anime[]; extern Gfx grd_s_o_r1_1_model[]; extern Gfx grd_s_o_r1_1_modelT[]; -extern EVW_ANIME_DATA* grd_s_o_r1_1_evw_anime[]; +extern EVW_ANIME_DATA grd_s_o_r1_1_evw_anime[]; extern Gfx grd_s_o_r1_2_model[]; extern Gfx grd_s_o_r1_2_modelT[]; -extern EVW_ANIME_DATA* grd_s_o_r1_2_evw_anime[]; +extern EVW_ANIME_DATA grd_s_o_r1_2_evw_anime[]; extern Gfx grd_s_o_r1_3_model[]; extern Gfx grd_s_o_r1_3_modelT[]; -extern EVW_ANIME_DATA* grd_s_o_r1_3_evw_anime[]; +extern EVW_ANIME_DATA grd_s_o_r1_3_evw_anime[]; extern Gfx grd_s_o_r1_4_model[]; extern Gfx grd_s_o_r1_4_modelT[]; -extern EVW_ANIME_DATA* grd_s_o_r1_4_evw_anime[]; +extern EVW_ANIME_DATA grd_s_o_r1_4_evw_anime[]; extern Gfx grd_s_o_r1_5_model[]; extern Gfx grd_s_o_r1_5_modelT[]; -extern EVW_ANIME_DATA* grd_s_o_r1_5_evw_anime[]; +extern EVW_ANIME_DATA grd_s_o_r1_5_evw_anime[]; extern Gfx grd_s_o_r1_b_1_model[]; extern Gfx grd_s_o_r1_b_1_modelT[]; -extern EVW_ANIME_DATA* grd_s_o_r1_b_1_evw_anime[]; +extern EVW_ANIME_DATA grd_s_o_r1_b_1_evw_anime[]; extern Gfx grd_s_o_r1_b_2_model[]; extern Gfx grd_s_o_r1_b_2_modelT[]; -extern EVW_ANIME_DATA* grd_s_o_r1_b_2_evw_anime[]; +extern EVW_ANIME_DATA grd_s_o_r1_b_2_evw_anime[]; extern Gfx grd_s_o_r1_b_3_model[]; extern Gfx grd_s_o_r1_b_3_modelT[]; -extern EVW_ANIME_DATA* grd_s_o_r1_b_3_evw_anime[]; +extern EVW_ANIME_DATA grd_s_o_r1_b_3_evw_anime[]; extern Gfx grd_s_o_ta_1_model[]; extern Gfx grd_s_o_ta_1_modelT[]; -extern EVW_ANIME_DATA* grd_s_o_ta_1_evw_anime[]; +extern EVW_ANIME_DATA grd_s_o_ta_1_evw_anime[]; extern Gfx grd_s_o_ta_2_model[]; extern Gfx grd_s_o_ta_2_modelT[]; -extern EVW_ANIME_DATA* grd_s_o_ta_2_evw_anime[]; +extern EVW_ANIME_DATA grd_s_o_ta_2_evw_anime[]; extern Gfx grd_s_o_ta_3_model[]; extern Gfx grd_s_o_ta_3_modelT[]; -extern EVW_ANIME_DATA* grd_s_o_ta_3_evw_anime[]; +extern EVW_ANIME_DATA grd_s_o_ta_3_evw_anime[]; extern Gfx grd_s_o_wf_1_model[]; extern Gfx grd_s_o_wf_1_modelT[]; -extern EVW_ANIME_DATA* grd_s_o_wf_1_evw_anime[]; +extern EVW_ANIME_DATA grd_s_o_wf_1_evw_anime[]; extern Gfx grd_s_o_wf_2_model[]; extern Gfx grd_s_o_wf_2_modelT[]; -extern EVW_ANIME_DATA* grd_s_o_wf_2_evw_anime[]; +extern EVW_ANIME_DATA grd_s_o_wf_2_evw_anime[]; extern Gfx grd_s_o_wf_3_model[]; extern Gfx grd_s_o_wf_3_modelT[]; -extern EVW_ANIME_DATA* grd_s_o_wf_3_evw_anime[]; +extern EVW_ANIME_DATA grd_s_o_wf_3_evw_anime[]; extern Gfx grd_s_ir_2_model[]; extern Gfx grd_s_ir_2_modelT[]; extern Gfx grd_s_il_2_model[]; @@ -7096,7 +6801,7 @@ extern mFM_bg_data_c data_bgd[] = { }, }, { - BG_TYPE_GRD_S_F_9, + BG_TYPE_GRD_S_F_9_1, grd_s_f_9_model, grd_s_f_9_modelT, NULL, @@ -7133,7 +6838,7 @@ extern mFM_bg_data_c data_bgd[] = { }, }, { - BG_TYPE_GRD_S_R1_3, + BG_TYPE_GRD_S_R1_3_1, grd_s_r1_3_model, grd_s_r1_3_modelT, grd_s_r1_3_evw_anime, @@ -7170,7 +6875,7 @@ extern mFM_bg_data_c data_bgd[] = { }, }, { - BG_TYPE_GRD_S_C1_3, + BG_TYPE_GRD_S_C1_3_1, grd_s_c1_3_model, grd_s_c1_3_modelT, NULL, @@ -7207,7 +6912,7 @@ extern mFM_bg_data_c data_bgd[] = { }, }, { - BG_TYPE_GRD_S_F_9, + BG_TYPE_GRD_S_F_9_2, grd_s_f_9_model, grd_s_f_9_modelT, NULL, @@ -11906,3 +11611,5 @@ extern mFM_bg_data_c data_bgd[] = { }, }, }; + +extern int data_bgd_number = ARRAY_COUNT(data_bgd); From 06bb4d2d5a84476e8efde6a81cba12bb01489eaa Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Mon, 12 Aug 2024 06:46:50 -0400 Subject: [PATCH 111/234] Use batchassetrip for asset rip speedup --- common.py | 1 + configure.py | 37 +++++++++++++++++++++++++++++-------- tools/ppcdis | 2 +- 3 files changed, 31 insertions(+), 9 deletions(-) diff --git a/common.py b/common.py index 14df4b33..433322cd 100644 --- a/common.py +++ b/common.py @@ -197,6 +197,7 @@ ORDERSTRINGS = f"{PYTHON} {PPCDIS}/orderstrings.py" ORDERFLOATS = f"{PYTHON} {PPCDIS}/orderfloats.py" ASSETRIP = f"{PYTHON} {PPCDIS}/assetrip.py" ASSETINC = f"{PYTHON} {PPCDIS}/assetinc.py" +BATCHASSETRIP = f"{PYTHON} {PPCDIS}/batchassetrip.py" FORCEACTIVEGEN = f"{PYTHON} {PPCDIS}/forceactivegen.py" ELF2DOL = f"{PYTHON} {PPCDIS}/elf2dol.py" ELF2REL = f"{PYTHON} {PPCDIS}/elf2rel.py" diff --git a/configure.py b/configure.py index c56be844..3cd53d4b 100644 --- a/configure.py +++ b/configure.py @@ -10,6 +10,7 @@ import os import pickle import re import subprocess +import yaml from io import StringIO from sys import executable as PYTHON, platform @@ -102,6 +103,7 @@ n.variable("vtxdis", c.VTXDIS) n.variable("pal16dis", c.PAL16DIS) n.variable("arctool", c.ARC_TOOL) n.variable("sjiswrap", c.SJISWRAP) +n.variable("batchassetrip", c.BATCHASSETRIP) n.newline() ############## @@ -184,6 +186,12 @@ n.rule( description = "Asset include generation $out" ) +n.rule( + "batchassetrip", + command = "$batchassetrip $in $asset_yml", + description="Batch asset rip $asset_yml" +) + n.rule( "forceactivegen", command = "$forceactivegen $in $out", @@ -498,16 +506,29 @@ class AssetInclude(GeneratedInclude): return # Build + binary = None + asset_entries = {} + expected_files = [] for inc in includes: - n.build( - inc.asset_path, - rule="assetrip", - inputs=inc.asset.binary, - variables={ - "addrs" : f"{inc.asset.start:x} {inc.asset.end:x}" - } - ) + if binary == None: + binary = inc.asset.binary + asset_entries[inc.asset_path] = [inc.asset.start, inc.asset.end] + expected_files.append(inc.asset_path) + with open(f"{c.BUILDDIR}/{binary[7:10]}_assetrip.yml", 'w') as asset_yml: + yaml.dump(asset_entries, asset_yml) + + n.build( + outputs=expected_files, + rule = "batchassetrip", + inputs = binary, + variables = { + "asset_yml": f"{c.BUILDDIR}/{binary[7:10]}_assetrip.yml" + } + ) + + # Include + for inc in includes: if inc.asset.convtype == "vtx": n.build( inc.path, diff --git a/tools/ppcdis b/tools/ppcdis index ef416a97..14790bd5 160000 --- a/tools/ppcdis +++ b/tools/ppcdis @@ -1 +1 @@ -Subproject commit ef416a97fd2bc8ebc93f85abad928bc1f3ba52de +Subproject commit 14790bd56419e2c1912aa0bec969e210fe7a1765 From ccd9175bf824f63dba07e5cab6dcbf57fc72acf1 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Mon, 12 Aug 2024 22:23:08 +0200 Subject: [PATCH 112/234] fix BUGFIXES build --- src/m_island.c | 4 ++-- src/m_npc.c | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/m_island.c b/src/m_island.c index b79d6e9e..9d26a8c8 100644 --- a/src/m_island.c +++ b/src/m_island.c @@ -364,8 +364,8 @@ static void mISL_agb_to_gc_fllot_bit(mHm_fllot_bit_c* gc, u32* agb) { gc->wall_original = (u32)gc->wall_original; gc->floor_original = (u32)gc->floor_original; #else - gc->wall_original = agb->wall_original; - gc->floor_original = agb->floor_original; + gc->wall_original = ((mHm_fllot_bit_c*)(agb))->wall_original; + gc->floor_original = ((mHm_fllot_bit_c*)(agb))->floor_original; #endif } diff --git a/src/m_npc.c b/src/m_npc.c index 9c70f023..c25e0bde 100644 --- a/src/m_npc.c +++ b/src/m_npc.c @@ -362,6 +362,8 @@ extern void mNpc_CopyAnimalMemory(Anmmem_c* dst, Anmmem_c* src) { */ extern void mNpc_AddFriendship(Anmmem_c* memory, int amount) { + int friendship = memory->friendship + amount; + /* @BUG - devs checked for memory being NULL *after* deferencing it */ #ifdef BUGFIXES if (memory == NULL) { @@ -369,7 +371,6 @@ extern void mNpc_AddFriendship(Anmmem_c* memory, int amount) { } #endif - int friendship = memory->friendship + amount; #ifndef BUGFIXES if (memory == NULL) { From b6dfdd1478f06d4f7dbdc272adde96033095f1d8 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Tue, 13 Aug 2024 17:22:51 +0200 Subject: [PATCH 113/234] fix the bugfixes build fix --- src/m_npc.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/m_npc.c b/src/m_npc.c index c25e0bde..9e57f4d5 100644 --- a/src/m_npc.c +++ b/src/m_npc.c @@ -362,7 +362,7 @@ extern void mNpc_CopyAnimalMemory(Anmmem_c* dst, Anmmem_c* src) { */ extern void mNpc_AddFriendship(Anmmem_c* memory, int amount) { - int friendship = memory->friendship + amount; + int friendship; /* @BUG - devs checked for memory being NULL *after* deferencing it */ #ifdef BUGFIXES @@ -371,6 +371,8 @@ extern void mNpc_AddFriendship(Anmmem_c* memory, int amount) { } #endif + friendship = memory->friendship + amount; + #ifndef BUGFIXES if (memory == NULL) { From 029a4664f50e6674494e25e3cb476abf5ff1ecaa Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Wed, 14 Aug 2024 09:25:32 -0400 Subject: [PATCH 114/234] Implement & link ac_ev_broker --- config/rel_slices.yml | 4 + include/ac_ev_broker.h | 17 +- include/ac_npc.h | 17 +- include/m_player_lib.h | 1 + src/ac_ev_broker.c | 106 +++++++++++++ src/ac_ev_broker_move.c_inc | 303 ++++++++++++++++++++++++++++++++++++ 6 files changed, 439 insertions(+), 9 deletions(-) create mode 100644 src/ac_ev_broker.c create mode 100644 src/ac_ev_broker_move.c_inc diff --git a/config/rel_slices.yml b/config/rel_slices.yml index 4652b03f..0bd59c42 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -726,6 +726,10 @@ ac_aprilfool_control.c: ac_groundhog_control.c: .text: [0x805155C8, 0x80515C48] .data: [0x8069FD88, 0x8069FDD0] +ac_ev_broker.c: + .text: [0x80519D4C, 0x8051A880] + .rodata: [0x80649160, 0x80649178] + .data: [0x806A0128, 0x806A01B0] ac_ev_castaway.c: .text: [0x8051CAC4, 0x8051CDCC] .rodata: [0x806491B0, 0x806491B8] diff --git a/include/ac_ev_broker.h b/include/ac_ev_broker.h index e5b81bfc..0e99b401 100644 --- a/include/ac_ev_broker.h +++ b/include/ac_ev_broker.h @@ -3,11 +3,27 @@ #include "types.h" #include "m_actor.h" +#include "ac_npc.h" #ifdef __cplusplus extern "C" { #endif +typedef struct ac_ev_broker EV_BROKER_ACTOR; + +typedef void (*aEBRK_ACT_PROC)(EV_BROKER_ACTOR*); + +/* sizeof(EV_BROKER_ACTOR) == 0x9AC */ +struct ac_ev_broker { + /* 0x000 */ NPC_ACTOR npc_class; + /* 0x994 */ int action; + /* 0x998 */ int next_action; + /* 0x99C */ int action_step; + /* 0x9A0 */ aEBRK_ACT_PROC action_proc; + /* 0x9A4 */ ACTOR* tent_actor; + /* 0x9A8 */ u8 pl_talk_lock; +}; + extern ACTOR_PROFILE Ev_Broker_Profile; #ifdef __cplusplus @@ -15,4 +31,3 @@ extern ACTOR_PROFILE Ev_Broker_Profile; #endif #endif - diff --git a/include/ac_npc.h b/include/ac_npc.h index b6d0ef70..f8c00288 100644 --- a/include/ac_npc.h +++ b/include/ac_npc.h @@ -252,15 +252,16 @@ typedef void (*aNPC_THINK_PROC)(NPC_ACTOR*, GAME_PLAY*, int); #define aNPC_THINK_INTERRUPT_OBSTANCE (1 << 2) #define aNPC_THINK_INTERRUPT_ENTRANCE (1 << 3) +/* sizeof(aNPC_think_info_c) == 0x18 */ typedef struct npc_think_info_s { - int idx; - u8 end_flag; - u8 force_call_flag; - u16 force_call_timer; - int force_call_msg_no; - u8 force_call_camera_type; - aNPC_THINK_PROC think_proc; - u32 interrupt_flags; + /* 0x00 */ int idx; + /* 0x04 */ u8 end_flag; + /* 0x05 */ u8 force_call_flag; + /* 0x06 */ u16 force_call_timer; + /* 0x08 */ int force_call_msg_no; + /* 0x0C */ u8 force_call_camera_type; + /* 0x10 */ aNPC_THINK_PROC think_proc; + /* 0x14 */ u32 interrupt_flags; } aNPC_think_info_c; typedef void (*aNPC_SCHEDULE_PROC)(NPC_ACTOR*, GAME_PLAY*, int); diff --git a/include/m_player_lib.h b/include/m_player_lib.h index 00fe9ebc..69021891 100644 --- a/include/m_player_lib.h +++ b/include/m_player_lib.h @@ -21,6 +21,7 @@ extern int mPlib_check_able_change_camera_normal_index(); extern void mPlib_request_main_refuse_type1(GAME* game); extern void mPlib_request_main_wait_type3(GAME* game); extern void mPlib_Set_able_force_speak_label(ACTOR* actor); +extern void mPlib_Reset_able_force_speak_label(void); extern int mPlib_request_main_demo_walk_type1(GAME* game, f32 goal_x, f32 goal_z, f32 speed, int flag); extern void mPlib_Set_goal_player_demo_walk(f32 goal_x, f32 goal_z, f32 speed); extern void mPlib_Set_able_hand_all_item_in_demo(s8 enable); diff --git a/src/ac_ev_broker.c b/src/ac_ev_broker.c new file mode 100644 index 00000000..1dc867fa --- /dev/null +++ b/src/ac_ev_broker.c @@ -0,0 +1,106 @@ +#include "ac_ev_broker.h" + +#include "m_common_data.h" +#include "m_player_lib.h" +#include "m_msg.h" + +enum { + aEBRK_ACTION_TALK_WAIT, + aEBRK_ACTION_TURN, + aEBRK_ACTION_ENTER, + aEBRK_ACTION_HIDE, + + aEBRK_ACTION_NUM +}; + +static void aEBRK_actor_ct(ACTOR* actorx, GAME* game); +static void aEBRK_actor_dt(ACTOR* actorx, GAME* game); +static void aEBRK_actor_init(ACTOR* actorx, GAME* game); +static void aEBRK_actor_move(ACTOR* actorx, GAME* game); +static void aEBRK_actor_draw(ACTOR* actorx, GAME* game); +static void aEBRK_actor_save(ACTOR* actorx, GAME* game); + +// clang-format off +ACTOR_PROFILE Ev_Broker_Profile = { + mAc_PROFILE_EV_BROKER, + ACTOR_PART_NPC, + ACTOR_STATE_NO_MOVE_WHILE_CULLED | ACTOR_STATE_NO_DRAW_WHILE_CULLED, + SP_NPC_BROKER, + ACTOR_OBJ_BANK_KEEP, + sizeof(EV_BROKER_ACTOR), + &aEBRK_actor_ct, + &aEBRK_actor_dt, + &aEBRK_actor_init, + mActor_NONE_PROC1, + &aEBRK_actor_save, +}; +// clang-format on + +static void aEBRK_talk_request(ACTOR* actorx, GAME* game); +static int aEBRK_talk_init(ACTOR* actorx, GAME* game); +static int aEBRK_talk_end_chk(ACTOR* actorx, GAME* game); + +static void aEBRK_schedule_proc(NPC_ACTOR* npc_actorx, GAME_PLAY* play, int sched_type); + +static int aEBRK_get_sell_item_sum(void); +static int aEBRK_check_start_around(ACTOR* actorx, GAME* game); + +static void aEBRK_actor_ct(ACTOR* actorx, GAME* game) { + static aNPC_ct_data_c ct_data = { + &aEBRK_actor_move, &aEBRK_actor_draw, 5, &aEBRK_talk_request, &aEBRK_talk_init, &aEBRK_talk_end_chk, + }; + + EV_BROKER_ACTOR* broker = (EV_BROKER_ACTOR*)actorx; + + if (Common_Get(clip).npc_clip->birth_check_proc(actorx, game) == TRUE) { + broker->npc_class.schedule.schedule_proc = &aEBRK_schedule_proc; + Common_Get(clip).npc_clip->ct_proc(actorx, game, &ct_data); + broker->npc_class.actor_class.status_data.weight = 254; + + if (aEBRK_get_sell_item_sum() == 0 || aEBRK_check_start_around(actorx, game) == FALSE) { + broker->npc_class.talk_info.talk_request_proc = (aNPC_TALK_REQUEST_PROC)&none_proc1; + broker->next_action = aEBRK_ACTION_HIDE; + } else { + int hide_npc = Common_Get(special_event_common).broker.hide_npc; + + broker->npc_class.condition_info.hide_request = hide_npc; + if (hide_npc == TRUE) { + broker->npc_class.talk_info.talk_request_proc = (aNPC_TALK_REQUEST_PROC)&none_proc1; + broker->next_action = aEBRK_ACTION_HIDE; + } else { + broker->next_action = aEBRK_ACTION_TALK_WAIT; + } + } + } +} + +static void aEBRK_actor_save(ACTOR* actorx, GAME* game) { + Common_Get(clip).npc_clip->save_proc(actorx, game); +} + +static void aEBRK_actor_dt(ACTOR* actorx, GAME* game) { + Common_Get(clip).npc_clip->dt_proc(actorx, game); + Common_Get(special_event_common).broker.hide_npc = FALSE; + mEv_actor_dying_message(mEv_EVENT_BROKER_SALE, actorx); +} + +static void aEBRK_actor_init(ACTOR* actorx, GAME* game) { + Common_Get(clip).npc_clip->init_proc(actorx, game); +} + +static void aEBRK_set_animation(EV_BROKER_ACTOR* broker, int action) { + static int animeSeqNo[] = { + aNPC_ANIM_WAIT1, + aNPC_ANIM_WALK1, + aNPC_ANIM_WALK1, + aNPC_ANIM_WAIT1, + }; + + Common_Get(clip).npc_clip->animation_init_proc(&broker->npc_class.actor_class, animeSeqNo[action], FALSE); +} + +static void aEBRK_actor_draw(ACTOR* actorx, GAME* game) { + Common_Get(clip).npc_clip->draw_proc(actorx, game); +} + +#include "../src/ac_ev_broker_move.c_inc" diff --git a/src/ac_ev_broker_move.c_inc b/src/ac_ev_broker_move.c_inc new file mode 100644 index 00000000..da0178bf --- /dev/null +++ b/src/ac_ev_broker_move.c_inc @@ -0,0 +1,303 @@ +static void aEBRK_set_request_act(EV_BROKER_ACTOR* broker) { + broker->npc_class.request.act_priority = 4; + broker->npc_class.request.act_idx = aNPC_ACT_SPECIAL; + broker->npc_class.request.act_type = aNPC_ACT_TYPE_SEARCH; +} + +static void aEBRK_set_pl_talk_lock(EV_BROKER_ACTOR* broker, u8 flag) { + if (broker->pl_talk_lock != flag) { + if (flag == TRUE) { + mPlib_Set_able_force_speak_label(&broker->npc_class.actor_class); + } else { + mPlib_Reset_able_force_speak_label(); + } + + broker->pl_talk_lock = flag; + } +} + +static int aEBRK_check_start_around_sub(ACTOR* check_actor, ACTOR* actorx, f32 pos_x, f32 pos_z) { + int res = TRUE; + + while (check_actor != NULL) { + if (check_actor != actorx) { + f32 dist_x = check_actor->world.position.x - pos_x; + f32 dist_z = check_actor->world.position.z - pos_z; + + if (SQ(dist_x) + SQ(dist_z) < SQ(mFI_UNIT_BASE_SIZE_F)) { + res = FALSE; + break; + } + } + + check_actor = check_actor->next_actor; + } + + return res; +} + +static int aEBRK_check_start_around(ACTOR* actorx, GAME* game) { + static int part[] = { ACTOR_PART_NPC, ACTOR_PART_BG }; + f32 pos_x = actorx->world.position.x; + f32 pos_z = actorx->world.position.z; + int i; + int res = TRUE; + + for (i = 0; i < ARRAY_COUNT(part); i++) { + if (!aEBRK_check_start_around_sub(((GAME_PLAY*)game)->actor_info.list[part[i]].actor, actorx, pos_x, pos_z)) { + res = FALSE; + break; + } + } + + return res; +} + +static void aEBRK_check_tent(ACTOR* actorx, GAME* game) { + EV_BROKER_ACTOR* broker = (EV_BROKER_ACTOR*)actorx; + ACTOR* tent_actor = broker->tent_actor; + + if (broker->tent_actor == NULL) { + broker->tent_actor = + Actor_info_name_search(&((GAME_PLAY*)game)->actor_info, mAc_PROFILE_BRSHOP, ACTOR_PART_ITEM); + } else if (tent_actor->id != mAc_PROFILE_BRSHOP || (tent_actor->mv_proc == NULL && tent_actor->dw_proc == NULL)) { + Actor_delete(actorx); + } +} + +static int aEBRK_get_sell_item_sum(void) { + mActor_name_t* sell_item_p = Save_Get(event_save_data).special.event.broker.items; + int sum = 0; + int i; + + for (i = 0; i < ARRAY_COUNT(Save_Get(event_save_data).special.event.broker.items); i++) { + if (*sell_item_p != EMPTY_NO) { + sum++; + } + + sell_item_p++; + } + + return sum; +} + +static int aEBRK_check_pl_list(PersonalID_c* pid, int n) { + int res = -1; + int i; + + for (i = 0; i < n; i++) { + if (mPr_CheckCmpPersonalID(pid, &Now_Private->player_ID) == TRUE) { + res = i; + } + + pid++; + } + + return res; +} + +static void aEBRK_talk_wait(EV_BROKER_ACTOR* broker) { + int animeSeqNo = aNPC_ANIM_WAIT1; + + if (chase_angle(&broker->npc_class.actor_class.shape_info.rotation.y, DEG2SHORT_ANGLE2(0.0f), + DEG2SHORT_ANGLE2(5.625f)) == FALSE) { + animeSeqNo = aNPC_ANIM_WALK1; + } + + broker->npc_class.actor_class.world.angle.y = broker->npc_class.actor_class.shape_info.rotation.y; + + if (broker->npc_class.draw.animation_id != animeSeqNo) { + Common_Get(clip).npc_clip->animation_init_proc(&broker->npc_class.actor_class, animeSeqNo, FALSE); + } +} + +static void aEBRK_turn(EV_BROKER_ACTOR* broker) { + if (broker->npc_class.actor_class.shape_info.rotation.y == broker->npc_class.movement.mv_angl) { + broker->action_step = aNPC_ACTION_END_STEP; + } +} + +static void aEBRK_enter(EV_BROKER_ACTOR* broker) { + ACTOR* actorx = &broker->npc_class.actor_class; + f32 walk_dist = actorx->home.position.z - actorx->world.position.z; + + if (walk_dist > 60.0f) { + broker->action_step = aNPC_ACTION_END_STEP; + } +} + +static void aEBRK_set_spd_info(EV_BROKER_ACTOR* broker, int action) { + if (action == aEBRK_ACTION_ENTER) { + broker->npc_class.movement.max_speed = 1.0f; + broker->npc_class.movement.acceleration = 0.1f; + broker->npc_class.movement.deceleration = 0.1f; + } else { + broker->npc_class.actor_class.speed = 0.0f; + broker->npc_class.movement.max_speed = 0.0f; + broker->npc_class.movement.acceleration = 0.0f; + broker->npc_class.movement.deceleration = 0.0f; + } +} + +static void aEBRK_setupAction(EV_BROKER_ACTOR* broker, int action) { + static aEBRK_ACT_PROC process[] = { + &aEBRK_talk_wait, + &aEBRK_turn, + &aEBRK_enter, + (aEBRK_ACT_PROC)&none_proc1, + }; + + broker->action_step = 0; + broker->action = action; + broker->action_proc = process[action]; + aEBRK_set_animation(broker, action); + aEBRK_set_spd_info(broker, action); +} + +static void aEBRK_act_chg_data_proc(NPC_ACTOR* nactorx, GAME_PLAY* play) { + nactorx->action.act_obj = aNPC_ACT_OBJ_PLAYER; +} + +static void aEBRK_act_init_proc(NPC_ACTOR* nactorx, GAME_PLAY* play) { + EV_BROKER_ACTOR* broker = (EV_BROKER_ACTOR*)nactorx; + + nactorx->action.step = 0; + aEBRK_setupAction(broker, broker->next_action); +} + +static void aEBRK_act_main_proc(NPC_ACTOR* nactorx, GAME_PLAY* play) { + EV_BROKER_ACTOR* broker = (EV_BROKER_ACTOR*)nactorx; + + (*broker->action_proc)(broker); +} + +static void aEBRK_act_proc(NPC_ACTOR* nactorx, GAME_PLAY* play, int proc) { + static aNPC_SUB_PROC act_proc[] = { + &aEBRK_act_init_proc, + &aEBRK_act_chg_data_proc, + &aEBRK_act_main_proc, + }; + + (*act_proc[proc])(nactorx, play); +} + +static void aEBRK_think_main_proc(NPC_ACTOR* nactorx, GAME_PLAY* play) { + EV_BROKER_ACTOR* broker = (EV_BROKER_ACTOR*)nactorx; + + if (nactorx->action.step == aNPC_ACTION_END_STEP) { + aEBRK_set_request_act(broker); + if (nactorx->action.idx == aNPC_ACT_TALK) { + nactorx->movement.mv_angl = DEG2SHORT_ANGLE2(180.0f); + nactorx->movement.mv_add_angl = DEG2SHORT_ANGLE2(11.25f); + broker->next_action = aEBRK_ACTION_TURN; + mPlib_request_main_demo_wait_type1(&play->game, 0, NULL); + } + } else if (broker->action_step == aNPC_ACTION_END_STEP) { + switch (broker->action) { + case aEBRK_ACTION_TURN: + nactorx->condition_info.demo_flg = + aNPC_COND_DEMO_SKIP_ENTRANCE_CHECK | aNPC_COND_DEMO_SKIP_HEAD_LOOKAT | + aNPC_COND_DEMO_SKIP_TALK_CHECK | aNPC_COND_DEMO_SKIP_ITEM | aNPC_COND_DEMO_SKIP_FORWARD_CHECK | + aNPC_COND_DEMO_SKIP_BGCHECK | aNPC_COND_DEMO_SKIP_OBJ_COL_CHECK | aNPC_COND_DEMO_SKIP_MOVE_Y | + aNPC_COND_DEMO_SKIP_MOVE_CIRCLE_REV | aNPC_COND_DEMO_SKIP_MOVE_RANGE_CHECK; + aEBRK_setupAction(broker, aEBRK_ACTION_ENTER); + break; + case aEBRK_ACTION_ENTER: + nactorx->condition_info.hide_request = TRUE; + mPlib_request_main_wait_type3(&play->game); + aEBRK_set_pl_talk_lock(broker, FALSE); + aEBRK_setupAction(broker, aEBRK_ACTION_HIDE); + break; + } + } +} + +static void aEBRK_think_init_proc(NPC_ACTOR* nactorx, GAME_PLAY* play) { + EV_BROKER_ACTOR* broker = (EV_BROKER_ACTOR*)nactorx; + + nactorx->think.interrupt_flags = 0; + nactorx->action.act_proc = &aEBRK_act_proc; + aEBRK_set_request_act(broker); +} + +static void aEBRK_think_proc(NPC_ACTOR* nactorx, GAME_PLAY* play, int proc) { + static aNPC_SUB_PROC think_proc[] = { + &aEBRK_think_init_proc, + &aEBRK_think_main_proc, + }; + + (*think_proc[proc])(nactorx, play); +} + +static void aEBRK_schedule_init_proc(NPC_ACTOR* nactorx, GAME_PLAY* play) { + nactorx->think.think_proc = &aEBRK_think_proc; + Common_Get(clip).npc_clip->think_proc(nactorx, play, aNPC_THINK_SPECIAL, 0); +} + +static void aEBRK_schedule_main_proc(NPC_ACTOR* nactorx, GAME_PLAY* play) { + if (!Common_Get(clip).npc_clip->think_proc(nactorx, play, -1, 1)) { + Common_Get(clip).npc_clip->think_proc(nactorx, play, -1, 2); + } +} + +static void aEBRK_schedule_proc(NPC_ACTOR* nactorx, GAME_PLAY* play, int proc) { + static aNPC_SUB_PROC sche_proc[] = { + &aEBRK_schedule_init_proc, + &aEBRK_schedule_main_proc, + }; + + (*sche_proc[proc])(nactorx, play); +} + +static void aEBRK_set_talk_info_talk_request(ACTOR* actorx) { + int msg_no; + u8 item_name[mIN_ITEM_NAME_LEN]; + mActor_name_t item; + int idx; + + idx = aEBRK_check_pl_list(Save_Get(event_save_data).special.event.broker.pid, + ARRAY_COUNT(Save_Get(event_save_data).special.event.broker.pid)); + if (idx != -1) { + item = Save_Get(event_save_data).special.event.broker.sold_items[idx]; + mIN_copy_name_str(item_name, item); + mMsg_SET_ITEM_STR_ART(mMsg_ITEM_STR2, item_name, mIN_ITEM_NAME_LEN, item); + msg_no = 0x078A; + } else { + idx = aEBRK_check_pl_list(&Common_Get(special_event_common).broker.entered_pid, 1); + if (idx != -1) { + msg_no = 0x0789; + } else { + msg_no = 0x788; + } + } + + mDemo_Set_msg_num(msg_no); + aEBRK_set_pl_talk_lock((EV_BROKER_ACTOR*)actorx, TRUE); +} + +static void aEBRK_talk_request(ACTOR* actorx, GAME* game) { + mDemo_Request(mDemo_TYPE_TALK, actorx, &aEBRK_set_talk_info_talk_request); +} + +static int aEBRK_talk_init(ACTOR* actorx, GAME* game) { + EV_BROKER_ACTOR* broker = (EV_BROKER_ACTOR*)actorx; + + broker->npc_class.talk_info.talk_request_proc = (aNPC_TALK_REQUEST_PROC)&none_proc1; + mDemo_Set_ListenAble(); + return TRUE; +} + +static int aEBRK_talk_end_chk(ACTOR* actorx, GAME* game) { + int res = FALSE; + + if (mDemo_Check(mDemo_TYPE_TALK, actorx) == FALSE) { + res = TRUE; + } + + return res; +} + +static void aEBRK_actor_move(ACTOR* actorx, GAME* game) { + Common_Get(clip).npc_clip->move_proc(actorx, game); + aEBRK_check_tent(actorx, game); +} From cdf61f91bea69c78d257e00fd7cea14808395788 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Wed, 14 Aug 2024 22:17:40 -0400 Subject: [PATCH 115/234] Implement & link ac_bridge_a --- config/rel_slices.yml | 4 + include/ac_bridge_a.h | 2 +- include/m_name_table.h | 1 + src/ac_bridge_a.c | 197 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 203 insertions(+), 1 deletion(-) create mode 100644 src/ac_bridge_a.c diff --git a/config/rel_slices.yml b/config/rel_slices.yml index 0bd59c42..7fde6ccd 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -842,6 +842,10 @@ ac_br_shop.c: .text: [0x805A856C, 0x805A9474] .rodata: [0x8064A630, 0x8064A660] .data: [0x806C4560, 0x806C4688] +ac_bridge_a.c: + .text: [0x805A9474, 0x805A9CA0] + .rodata: [0x8064A660, 0x8064A6D0] + .data: [0x806C4688, 0x806C4730] ac_buggy.c: .text: [0x805A9CA0, 0x805AAB3C] .rodata: [0x8064A6D0, 0x8064A708] diff --git a/include/ac_bridge_a.h b/include/ac_bridge_a.h index 77d727ec..cba3f65a 100644 --- a/include/ac_bridge_a.h +++ b/include/ac_bridge_a.h @@ -3,6 +3,7 @@ #include "types.h" #include "m_actor.h" +#include "ac_structure.h" #ifdef __cplusplus extern "C" { @@ -15,4 +16,3 @@ extern ACTOR_PROFILE Bridge_A_Profile; #endif #endif - diff --git a/include/m_name_table.h b/include/m_name_table.h index da58bca7..4d34127c 100644 --- a/include/m_name_table.h +++ b/include/m_name_table.h @@ -2757,6 +2757,7 @@ extern int mNT_check_unknown(mActor_name_t item_no); #define DUMMY_DOUZOU 0xF11D #define DUMMY_NAMEPLATE 0xF11F #define DUMMY_MUSEUM 0xF120 +#define DUMMY_BRIDGE 0xF121 #define DUMMY_FLAG 0xF122 #define DUMMY_COTTAGE_MY 0xF123 #define DUMMY_COTTAGE_NPC 0xF124 diff --git a/src/ac_bridge_a.c b/src/ac_bridge_a.c new file mode 100644 index 00000000..9f2bbc56 --- /dev/null +++ b/src/ac_bridge_a.c @@ -0,0 +1,197 @@ +#include "ac_bridge_a.h" + +#include "m_common_data.h" +#include "m_name_table.h" +#include "m_field_info.h" +#include "m_player_lib.h" +#include "m_rcp.h" +#include "m_debug.h" + +static void aBridgeA_actor_ct(ACTOR* actorx, GAME* game); +static void aBridgeA_actor_dt(ACTOR* actorx, GAME* game); +static void aBridgeA_actor_init(ACTOR* actorx, GAME* game); +static void aBridgeA_actor_move(ACTOR* actorx, GAME* game); +static void aBridgeA_actor_draw(ACTOR* actorx, GAME* game); + +// clang-format off +ACTOR_PROFILE Bridge_A_Profile = { + mAc_PROFILE_BRIDGE_A, + ACTOR_PART_ITEM, + ACTOR_STATE_TA_SET, + BRIDGE_A0, + ACTOR_OBJ_BANK_KEEP, + sizeof(STRUCTURE_ACTOR), + &aBridgeA_actor_ct, + &aBridgeA_actor_dt, + &aBridgeA_actor_init, + &aBridgeA_actor_draw, + NULL, +}; +// clang-format on + +static void aBridgeA_set_BgOffset(ACTOR* actorx) { + // clang-format off + static const mCoBG_OffsetTable_c rewrite_data[] = { + { mCoBG_ATTRIBUTE_31, 4, 4, 4, 4, 4, 0 }, + { mCoBG_ATTRIBUTE_27, 4, 0, 4, 4, 4, 1 }, + { mCoBG_ATTRIBUTE_28, 4, 4, 0, 4, 4, 1 }, + { mCoBG_ATTRIBUTE_29, 4, 4, 4, 0, 4, 1 }, + { mCoBG_ATTRIBUTE_30, 4, 4, 4, 4, 0, 1 }, + { mCoBG_ATTRIBUTE_31, 0, 0, 0, 0, 0, 0 }, + }; + // clang-format on + + static s_xyz unit_offset_a0[] = { + { 0, 0, 0 }, { 0, 1, -1 }, { -1, 1, 0 }, { 1, 3, 0 }, { 0, 3, 1 }, { 1, 5, -1 }, { -1, 5, 1 }, + }; + + static s_xyz unit_offset_a1[] = { + { 0, 0, 0 }, { 0, 4, -1 }, { 1, 4, 0 }, { -1, 2, 0 }, { 0, 2, 1 }, { -1, 5, -1 }, { 1, 5, 1 }, + }; + + f32 dist_to_ground = mCoBG_GetBgY_OnlyCenter_FromWpos2(actorx->world.position, 0.0f); + s_xyz* unit_offset = actorx->npc_id == BRIDGE_A0 ? unit_offset_a0 : unit_offset_a1; + int i; + + for (i = 0; i < 7; i++) { + xyz_t pos = actorx->world.position; + f32 ut_dist_to_ground; + + pos.x += unit_offset[i].x * mFI_UNIT_BASE_SIZE_F; + pos.z += unit_offset[i].z * mFI_UNIT_BASE_SIZE_F; + ut_dist_to_ground = mCoBG_GetBgY_OnlyCenter_FromWpos2(pos, 0.0f); + + /* s_xyz->y is repurposed to be the index into 'rewrite_data' array (could be new struct too) */ + if (unit_offset[i].y == 5 && ut_dist_to_ground == dist_to_ground) { + mCoBG_SetPluss5PointOffset_file(pos, rewrite_data[0], __FILE__, 217); + } else { + mCoBG_SetPluss5PointOffset_file(pos, rewrite_data[unit_offset[i].y], __FILE__, 220); + } + + /* Update all bridge units other than the main item unit */ + if (i != 0) { + mFI_SetFG_common(RSV_NO, pos, FALSE); + } + } +} + +extern cKF_Skeleton_R_c cKF_bs_r_obj_s_bridgeA; +extern cKF_Skeleton_R_c cKF_bs_r_obj_w_bridgeA; + +extern cKF_Animation_R_c cKF_ba_r_obj_s_bridgeA; +extern cKF_Animation_R_c cKF_ba_r_obj_w_bridgeA; + +static void aBridgeA_actor_ct(ACTOR* actorx, GAME* game) { + static cKF_Skeleton_R_c* skl[] = { &cKF_bs_r_obj_s_bridgeA, &cKF_bs_r_obj_w_bridgeA }; + static cKF_Animation_R_c* anm[] = { &cKF_ba_r_obj_s_bridgeA, &cKF_ba_r_obj_w_bridgeA }; + + STRUCTURE_ACTOR* bridge = (STRUCTURE_ACTOR*)actorx; + int idx; + + if (Common_Get(time).season == mTM_SEASON_WINTER) { + idx = 1; + } else { + idx = 0; + } + + bridge->actor_class.world.position.y += 1.5f; + cKF_SkeletonInfo_R_ct(&bridge->keyframe, skl[idx], anm[idx], bridge->work_area, bridge->morph_area); + cKF_SkeletonInfo_R_init_standard_repeat(&bridge->keyframe, anm[idx], NULL); + cKF_SkeletonInfo_R_play(&bridge->keyframe); + + if (actorx->npc_id == BRIDGE_A0) { + actorx->shape_info.rotation.y = DEG2SHORT_ANGLE2(0.0f); + } else { + actorx->shape_info.rotation.y = DEG2SHORT_ANGLE2(-90.0f); + } + + aBridgeA_set_BgOffset(actorx); + bridge->arg1_f = 0.0f; + bridge->arg0_f = 0.0f; + sAdo_RegistPlussBridge(&actorx->world.position); +} + +static void aBridgeA_actor_dt(ACTOR* actorx, GAME* game) { + sAdo_DeletePlussBridge(); +} + +static f32 aBridge_player_check(STRUCTURE_ACTOR* bridge, GAME_PLAY* play) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR(play); + xyz_t player_pos = player->actor_class.world.position; + xyz_t bridge_pos = bridge->actor_class.world.position; + xyz_t player_dist_from_bridge; + f32 bridge_run_speed = player->actor_class.speed * (0.75f + (f32)GETREG(TAKREG, 23) * 0.01f); + f32 dist0; + f32 dist1; + + xyz_t_sub(&player_pos, &bridge_pos, &player_dist_from_bridge); + if (bridge->actor_class.npc_id == BRIDGE_A1) { + dist0 = player_dist_from_bridge.x - player_dist_from_bridge.z; + dist1 = player_dist_from_bridge.x + player_dist_from_bridge.z; + } else { + dist0 = player_dist_from_bridge.x + player_dist_from_bridge.z; + dist1 = player_dist_from_bridge.x - player_dist_from_bridge.z; + } + + if ((dist0 > -mFI_UNIT_BASE_SIZE_F && dist0 < mFI_UNIT_BASE_SIZE_F) && + (dist1 > -mFI_UNIT_BASE_SIZE_F * 2 && dist1 < mFI_UNIT_BASE_SIZE_F * 2)) { + if (bridge_run_speed > bridge->arg0_f) { + bridge->arg1_f = 1.0f + (f32)GETREG(TAKREG, 20) * 0.01f; + bridge->arg0_f = bridge_run_speed; + } else if (bridge_run_speed > 0.1f) { + add_calc(&bridge->arg0_f, bridge_run_speed, 0.1f + (f32)GETREG(TAKREG, 22) * 0.01f, 0.1f, 0.01f); + add_calc(&bridge->arg1_f, 1.0f, 0.1f + (f32)GETREG(TAKREG, 24) * 0.01f, 0.1f, 0.01f); + return; + } + } + + add_calc(&bridge->arg1_f, 0.0f, (0.08f + (f32)GETREG(TAKREG, 21) * 0.01f) * (0.4f + bridge->arg0_f * 0.1f), 0.1f, + 0.01f); +} + +static void aBridgeA_actor_move(ACTOR* actorx, GAME* game) { + STRUCTURE_ACTOR* bridge = (STRUCTURE_ACTOR*)actorx; + GAME_PLAY* play = (GAME_PLAY*)game; + + aBridge_player_check(bridge, play); + bridge->keyframe.frame_control.speed = bridge->arg0_f * 0.5f; + cKF_SkeletonInfo_R_play(&bridge->keyframe); + if (bridge->arg1_f == 0.0f) { + bridge->arg1_f = 0.0f; + bridge->arg0_f = 0.0f; + bridge->keyframe.frame_control.current_frame = 0.0f; + } +} + +static void aBridgeA_actor_init(ACTOR* actorx, GAME* game) { + mFI_SetFG_common(DUMMY_BRIDGE, actorx->home.position, FALSE); + aBridgeA_actor_move(actorx, game); + actorx->mv_proc = &aBridgeA_actor_move; +} + +static int aBridgeA_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_idx, Gfx** joint_shape, + u8* joint_flags, void* arg, s_xyz* joint_rot, xyz_t* joint_pos) { + static s16 base_r_table[] = { + DEG2SHORT_ANGLE2(0.0f), DEG2SHORT_ANGLE2(0.0f), DEG2SHORT_ANGLE2(314.703369f), + DEG2SHORT_ANGLE2(90.296631f), DEG2SHORT_ANGLE2(270.302124f), DEG2SHORT_ANGLE2(44.697876f), + }; + + STRUCTURE_ACTOR* bridge = (STRUCTURE_ACTOR*)arg; + f32 rot = bridge->arg1_f; + + if (joint_idx > 1) { + f32 inv = 1.0f - rot; + + joint_rot->z = rot * (f32)joint_rot->z + inv * (f32)base_r_table[joint_idx]; + } + + return TRUE; +} + +static void aBridgeA_actor_draw(ACTOR* actorx, GAME* game) { + STRUCTURE_ACTOR* bridge = (STRUCTURE_ACTOR*)actorx; + Mtx* mtx_p = (Mtx*)GRAPH_ALLOC_TYPE(game->graph, Mtx, bridge->keyframe.skeleton->num_shown_joints); + + _texture_z_light_fog_prim(game->graph); + cKF_Si3_draw_R_SV(game, &bridge->keyframe, mtx_p, &aBridgeA_before_disp, NULL, actorx); +} From c4dea06039c1bea27e32ed0fecb63d80688ce512 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Fri, 16 Aug 2024 16:08:22 -0400 Subject: [PATCH 116/234] Implement m_player, add skeletons for player c_inc files --- include/m_player.h | 66 +- include/m_player_lib.h | 2 + src/m_player.c | 1351 +++++++++++++++++ src/m_player_call.c | 18 +- src/m_player_common.c_inc | 0 src/m_player_controller.c_inc | 0 src/m_player_draw.c_inc | 0 src/m_player_item.c_inc | 0 src/m_player_item_axe.c_inc | 0 src/m_player_item_balloon.c_inc | 0 src/m_player_item_common.c_inc | 0 src/m_player_item_fan.c_inc | 0 src/m_player_item_net.c_inc | 0 src/m_player_item_rod.c_inc | 0 src/m_player_item_scoop.c_inc | 0 src/m_player_item_umbrella.c_inc | 0 src/m_player_item_windmill.c_inc | 0 src/m_player_main_air_axe.c_inc | 0 src/m_player_main_air_rod.c_inc | 0 src/m_player_main_air_scoop.c_inc | 0 src/m_player_main_broken_axe.c_inc | 0 src/m_player_main_cast_rod.c_inc | 0 src/m_player_main_change_cloth.c_inc | 0 src/m_player_main_climbup_pitfall.c_inc | 0 src/m_player_main_close_furniture.c_inc | 0 src/m_player_main_collect_rod.c_inc | 0 src/m_player_main_complete_payment.c_inc | 0 src/m_player_main_dash.c_inc | 0 ...player_main_demo_get_golden_axe_wait.c_inc | 0 src/m_player_main_demo_get_golden_item.c_inc | 0 src/m_player_main_demo_get_golden_item2.c_inc | 0 src/m_player_main_demo_getoff_boat.c_inc | 0 ...player_main_demo_getoff_boat_standup.c_inc | 0 src/m_player_main_demo_getoff_train.c_inc | 0 src/m_player_main_demo_geton_boat.c_inc | 0 ..._player_main_demo_geton_boat_sitdown.c_inc | 0 src/m_player_main_demo_geton_boat_wade.c_inc | 0 src/m_player_main_demo_geton_boat_wait.c_inc | 0 src/m_player_main_demo_geton_train.c_inc | 0 src/m_player_main_demo_geton_train_wait.c_inc | 0 src/m_player_main_demo_standing_train.c_inc | 0 src/m_player_main_demo_wade.c_inc | 0 src/m_player_main_demo_wait.c_inc | 0 src/m_player_main_demo_walk.c_inc | 0 src/m_player_main_dig_scoop.c_inc | 0 src/m_player_main_dma.c_inc | 0 src/m_player_main_door.c_inc | 0 src/m_player_main_fail_emu.c_inc | 0 src/m_player_main_fall.c_inc | 0 src/m_player_main_fall_pitfall.c_inc | 0 src/m_player_main_fill_scoop.c_inc | 0 src/m_player_main_fly_rod.c_inc | 0 src/m_player_main_get_scoop.c_inc | 0 src/m_player_main_give.c_inc | 0 src/m_player_main_give_wait.c_inc | 0 src/m_player_main_groundhog.c_inc | 0 src/m_player_main_hide.c_inc | 0 src/m_player_main_hold.c_inc | 0 src/m_player_main_intro.c_inc | 0 src/m_player_main_invade.c_inc | 0 src/m_player_main_knock_door.c_inc | 0 src/m_player_main_lie_bed.c_inc | 0 src/m_player_main_mail_jump.c_inc | 0 src/m_player_main_mail_land.c_inc | 0 src/m_player_main_notice_bee.c_inc | 0 src/m_player_main_notice_mosquito.c_inc | 0 src/m_player_main_notice_net.c_inc | 0 src/m_player_main_notice_rod.c_inc | 0 src/m_player_main_open_furniture.c_inc | 0 src/m_player_main_outdoor.c_inc | 0 src/m_player_main_pickup.c_inc | 0 src/m_player_main_pickup_exchange.c_inc | 0 src/m_player_main_pickup_furniture.c_inc | 0 src/m_player_main_pickup_jump.c_inc | 0 src/m_player_main_pray.c_inc | 0 src/m_player_main_pull.c_inc | 0 src/m_player_main_pull_net.c_inc | 0 src/m_player_main_push.c_inc | 0 src/m_player_main_push_snowball.c_inc | 0 src/m_player_main_putaway_net.c_inc | 0 src/m_player_main_putaway_rod.c_inc | 0 src/m_player_main_putaway_scoop.c_inc | 0 src/m_player_main_putin_item.c_inc | 0 src/m_player_main_putin_scoop.c_inc | 0 src/m_player_main_radio_exercise.c_inc | 0 src/m_player_main_ready_net.c_inc | 0 src/m_player_main_ready_pitfall.c_inc | 0 src/m_player_main_ready_rod.c_inc | 0 src/m_player_main_ready_walk_net.c_inc | 0 src/m_player_main_recieve.c_inc | 0 src/m_player_main_recieve_putaway.c_inc | 0 src/m_player_main_recieve_stretch.c_inc | 0 src/m_player_main_recieve_wait.c_inc | 0 src/m_player_main_reflect_axe.c_inc | 0 src/m_player_main_reflect_scoop.c_inc | 0 src/m_player_main_refuse.c_inc | 0 src/m_player_main_refuse_pickup.c_inc | 0 src/m_player_main_relax_rod.c_inc | 0 src/m_player_main_release_creature.c_inc | 0 src/m_player_main_remove_grass.c_inc | 0 src/m_player_main_return_demo.c_inc | 0 src/m_player_main_return_outdoor.c_inc | 0 src/m_player_main_return_outdoor2.c_inc | 0 src/m_player_main_roll_bed.c_inc | 0 src/m_player_main_rotate_furniture.c_inc | 0 src/m_player_main_rotate_octagon.c_inc | 0 src/m_player_main_rotate_umbrella.c_inc | 0 src/m_player_main_run.c_inc | 0 src/m_player_main_shake_tree.c_inc | 0 src/m_player_main_shock.c_inc | 0 src/m_player_main_sitdown.c_inc | 0 src/m_player_main_sitdown_wait.c_inc | 0 src/m_player_main_slip_net.c_inc | 0 src/m_player_main_standup.c_inc | 0 src/m_player_main_standup_bed.c_inc | 0 src/m_player_main_stop_net.c_inc | 0 src/m_player_main_struggle_pitfall.c_inc | 0 src/m_player_main_stung_bee.c_inc | 0 src/m_player_main_stung_mosquito.c_inc | 0 src/m_player_main_swing_axe.c_inc | 0 src/m_player_main_swing_fan.c_inc | 0 src/m_player_main_swing_net.c_inc | 0 src/m_player_main_switch_on_lighthouse.c_inc | 0 src/m_player_main_takeout_item.c_inc | 0 src/m_player_main_talk.c_inc | 0 src/m_player_main_throw_money.c_inc | 0 src/m_player_main_tired.c_inc | 0 src/m_player_main_tumble.c_inc | 0 src/m_player_main_tumble_getup.c_inc | 0 src/m_player_main_turn_dash.c_inc | 0 src/m_player_main_vib_rod.c_inc | 0 src/m_player_main_wade.c_inc | 0 src/m_player_main_wade_snowball.c_inc | 0 src/m_player_main_wait.c_inc | 0 src/m_player_main_wait_bed.c_inc | 0 src/m_player_main_wait_open_furniture.c_inc | 0 src/m_player_main_walk.c_inc | 0 src/m_player_main_wash_car.c_inc | 0 src/m_player_other_func.c_inc | 0 src/m_player_sound.c_inc | 0 src/m_player_vibration.c_inc | 0 141 files changed, 1420 insertions(+), 17 deletions(-) create mode 100644 src/m_player.c create mode 100644 src/m_player_common.c_inc create mode 100644 src/m_player_controller.c_inc create mode 100644 src/m_player_draw.c_inc create mode 100644 src/m_player_item.c_inc create mode 100644 src/m_player_item_axe.c_inc create mode 100644 src/m_player_item_balloon.c_inc create mode 100644 src/m_player_item_common.c_inc create mode 100644 src/m_player_item_fan.c_inc create mode 100644 src/m_player_item_net.c_inc create mode 100644 src/m_player_item_rod.c_inc create mode 100644 src/m_player_item_scoop.c_inc create mode 100644 src/m_player_item_umbrella.c_inc create mode 100644 src/m_player_item_windmill.c_inc create mode 100644 src/m_player_main_air_axe.c_inc create mode 100644 src/m_player_main_air_rod.c_inc create mode 100644 src/m_player_main_air_scoop.c_inc create mode 100644 src/m_player_main_broken_axe.c_inc create mode 100644 src/m_player_main_cast_rod.c_inc create mode 100644 src/m_player_main_change_cloth.c_inc create mode 100644 src/m_player_main_climbup_pitfall.c_inc create mode 100644 src/m_player_main_close_furniture.c_inc create mode 100644 src/m_player_main_collect_rod.c_inc create mode 100644 src/m_player_main_complete_payment.c_inc create mode 100644 src/m_player_main_dash.c_inc create mode 100644 src/m_player_main_demo_get_golden_axe_wait.c_inc create mode 100644 src/m_player_main_demo_get_golden_item.c_inc create mode 100644 src/m_player_main_demo_get_golden_item2.c_inc create mode 100644 src/m_player_main_demo_getoff_boat.c_inc create mode 100644 src/m_player_main_demo_getoff_boat_standup.c_inc create mode 100644 src/m_player_main_demo_getoff_train.c_inc create mode 100644 src/m_player_main_demo_geton_boat.c_inc create mode 100644 src/m_player_main_demo_geton_boat_sitdown.c_inc create mode 100644 src/m_player_main_demo_geton_boat_wade.c_inc create mode 100644 src/m_player_main_demo_geton_boat_wait.c_inc create mode 100644 src/m_player_main_demo_geton_train.c_inc create mode 100644 src/m_player_main_demo_geton_train_wait.c_inc create mode 100644 src/m_player_main_demo_standing_train.c_inc create mode 100644 src/m_player_main_demo_wade.c_inc create mode 100644 src/m_player_main_demo_wait.c_inc create mode 100644 src/m_player_main_demo_walk.c_inc create mode 100644 src/m_player_main_dig_scoop.c_inc create mode 100644 src/m_player_main_dma.c_inc create mode 100644 src/m_player_main_door.c_inc create mode 100644 src/m_player_main_fail_emu.c_inc create mode 100644 src/m_player_main_fall.c_inc create mode 100644 src/m_player_main_fall_pitfall.c_inc create mode 100644 src/m_player_main_fill_scoop.c_inc create mode 100644 src/m_player_main_fly_rod.c_inc create mode 100644 src/m_player_main_get_scoop.c_inc create mode 100644 src/m_player_main_give.c_inc create mode 100644 src/m_player_main_give_wait.c_inc create mode 100644 src/m_player_main_groundhog.c_inc create mode 100644 src/m_player_main_hide.c_inc create mode 100644 src/m_player_main_hold.c_inc create mode 100644 src/m_player_main_intro.c_inc create mode 100644 src/m_player_main_invade.c_inc create mode 100644 src/m_player_main_knock_door.c_inc create mode 100644 src/m_player_main_lie_bed.c_inc create mode 100644 src/m_player_main_mail_jump.c_inc create mode 100644 src/m_player_main_mail_land.c_inc create mode 100644 src/m_player_main_notice_bee.c_inc create mode 100644 src/m_player_main_notice_mosquito.c_inc create mode 100644 src/m_player_main_notice_net.c_inc create mode 100644 src/m_player_main_notice_rod.c_inc create mode 100644 src/m_player_main_open_furniture.c_inc create mode 100644 src/m_player_main_outdoor.c_inc create mode 100644 src/m_player_main_pickup.c_inc create mode 100644 src/m_player_main_pickup_exchange.c_inc create mode 100644 src/m_player_main_pickup_furniture.c_inc create mode 100644 src/m_player_main_pickup_jump.c_inc create mode 100644 src/m_player_main_pray.c_inc create mode 100644 src/m_player_main_pull.c_inc create mode 100644 src/m_player_main_pull_net.c_inc create mode 100644 src/m_player_main_push.c_inc create mode 100644 src/m_player_main_push_snowball.c_inc create mode 100644 src/m_player_main_putaway_net.c_inc create mode 100644 src/m_player_main_putaway_rod.c_inc create mode 100644 src/m_player_main_putaway_scoop.c_inc create mode 100644 src/m_player_main_putin_item.c_inc create mode 100644 src/m_player_main_putin_scoop.c_inc create mode 100644 src/m_player_main_radio_exercise.c_inc create mode 100644 src/m_player_main_ready_net.c_inc create mode 100644 src/m_player_main_ready_pitfall.c_inc create mode 100644 src/m_player_main_ready_rod.c_inc create mode 100644 src/m_player_main_ready_walk_net.c_inc create mode 100644 src/m_player_main_recieve.c_inc create mode 100644 src/m_player_main_recieve_putaway.c_inc create mode 100644 src/m_player_main_recieve_stretch.c_inc create mode 100644 src/m_player_main_recieve_wait.c_inc create mode 100644 src/m_player_main_reflect_axe.c_inc create mode 100644 src/m_player_main_reflect_scoop.c_inc create mode 100644 src/m_player_main_refuse.c_inc create mode 100644 src/m_player_main_refuse_pickup.c_inc create mode 100644 src/m_player_main_relax_rod.c_inc create mode 100644 src/m_player_main_release_creature.c_inc create mode 100644 src/m_player_main_remove_grass.c_inc create mode 100644 src/m_player_main_return_demo.c_inc create mode 100644 src/m_player_main_return_outdoor.c_inc create mode 100644 src/m_player_main_return_outdoor2.c_inc create mode 100644 src/m_player_main_roll_bed.c_inc create mode 100644 src/m_player_main_rotate_furniture.c_inc create mode 100644 src/m_player_main_rotate_octagon.c_inc create mode 100644 src/m_player_main_rotate_umbrella.c_inc create mode 100644 src/m_player_main_run.c_inc create mode 100644 src/m_player_main_shake_tree.c_inc create mode 100644 src/m_player_main_shock.c_inc create mode 100644 src/m_player_main_sitdown.c_inc create mode 100644 src/m_player_main_sitdown_wait.c_inc create mode 100644 src/m_player_main_slip_net.c_inc create mode 100644 src/m_player_main_standup.c_inc create mode 100644 src/m_player_main_standup_bed.c_inc create mode 100644 src/m_player_main_stop_net.c_inc create mode 100644 src/m_player_main_struggle_pitfall.c_inc create mode 100644 src/m_player_main_stung_bee.c_inc create mode 100644 src/m_player_main_stung_mosquito.c_inc create mode 100644 src/m_player_main_swing_axe.c_inc create mode 100644 src/m_player_main_swing_fan.c_inc create mode 100644 src/m_player_main_swing_net.c_inc create mode 100644 src/m_player_main_switch_on_lighthouse.c_inc create mode 100644 src/m_player_main_takeout_item.c_inc create mode 100644 src/m_player_main_talk.c_inc create mode 100644 src/m_player_main_throw_money.c_inc create mode 100644 src/m_player_main_tired.c_inc create mode 100644 src/m_player_main_tumble.c_inc create mode 100644 src/m_player_main_tumble_getup.c_inc create mode 100644 src/m_player_main_turn_dash.c_inc create mode 100644 src/m_player_main_vib_rod.c_inc create mode 100644 src/m_player_main_wade.c_inc create mode 100644 src/m_player_main_wade_snowball.c_inc create mode 100644 src/m_player_main_wait.c_inc create mode 100644 src/m_player_main_wait_bed.c_inc create mode 100644 src/m_player_main_wait_open_furniture.c_inc create mode 100644 src/m_player_main_walk.c_inc create mode 100644 src/m_player_main_wash_car.c_inc create mode 100644 src/m_player_other_func.c_inc create mode 100644 src/m_player_sound.c_inc create mode 100644 src/m_player_vibration.c_inc diff --git a/include/m_player.h b/include/m_player.h index 5b67d843..f571a96f 100644 --- a/include/m_player.h +++ b/include/m_player.h @@ -47,6 +47,14 @@ enum { mPlayer_COMPLETE_PAYMENT_TYPE_NUM }; +enum { + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_COLLECT_INSECTS, + mPlayer_BGM_VOLUME_MODE_FISHING, + + mPlayer_BGM_VOLUME_MODE_NUM +}; + enum { mPlayer_INDEX_DMA, mPlayer_INDEX_INTRO, @@ -168,9 +176,13 @@ enum { mPlayer_INDEX_DEMO_GETOFF_BOAT, mPlayer_INDEX_DEMO_GET_GOLDEN_ITEM, mPlayer_INDEX_DEMO_GET_GOLDEN_ITEM2, - mPlayer_INDEX_DEMO_GET_GOLDEN_AXE_WAIT + mPlayer_INDEX_DEMO_GET_GOLDEN_AXE_WAIT, + + mPlayer_INDEX_NUM }; +#define mPlayer_MAIN_INDEX_VALID(idx) ((idx) >= 0 && (idx) < mPlayer_INDEX_NUM) + enum { mPlayer_ANIM_WAIT1, mPlayer_ANIM_WALK1, @@ -522,6 +534,13 @@ enum { mPlayer_BED_ACTION_NUM }; +enum { + mPlayer_DRAW_TYPE_NONE, + mPlayer_DRAW_TYPE_NORMAL, + + mPlayer_DRAW_TYPE_NUM +}; + typedef struct player_request_return_demo_s { int prev_main_index; f32 time; @@ -1258,7 +1277,27 @@ struct player_actor_s { /* 0x0D14 */ int settled_requested_main_index_priority; /* 0x0D18 */ mPlayer_main_data main_data; // TODO: Union of many types... /* 0x0D60 */ mPlayer_request_main_data requested_main_index_data; // Union of many types... - /* 0x0DA8 */ u8 _0DA8[0x1010 - 0x0DA8]; /* TODO: finish */ + /* 0x0DA8 */ u8 _0DA8[0x0DB4 - 0x0DA8]; /* TODO: finish */ + /* 0x0DB4 */ int animation0_idx; + /* 0x0DB8 */ int animation1_idx; + /* 0x0DBC */ int _0DBC; + /* 0x0DC0 */ int _0DC0[9]; + /* 0x0DE4 */ int item_shape_type[2]; + /* 0x0DEC */ int item_animation_idx[2]; + /* 0x0DF4 */ int item_bank_idx; + /* 0x0DF8 */ f32 item_scale; + /* 0x0DFC */ xyz_t shape_angle_delta; + /* 0x0E08 */ xyz_t world_angle_delta; + /* 0x0E14 */ s_xyz old_shape_angle; + /* 0x0E1A */ s_xyz old_world_angle; + /* 0x0E20 */ xyz_t shadow_pos; + /* 0x0E2C */ xyz_t axe_pos; + /* 0x0E38 */ xyz_t net_pos; + /* 0x0E44 */ xyz_t net_top_col_pos; + /* 0x0E50 */ xyz_t net_bot_col_pos; + /* 0x0E5C */ s_xyz net_angle; + /* 0x0E64 */ ACTOR* umbrella_actor; + /* 0x0E68 */ u8 _0E68[0x1010 - 0x0E68]; // TODO /* 0x1010 */ ClObjPipe_c col_pipe; /* 0x102C */ xyz_t head_pos; /* 0x1038 */ xyz_t feel_pos; @@ -1267,7 +1306,16 @@ struct player_actor_s { /* 0x105C */ xyz_t left_hand_pos; /* 0x1068 */ MtxF right_hand_mtx; /* 0x10A8 */ MtxF left_hand_mtx; - /* 0x10E8 */ u8 _10E8[0x11FC - 0x10E8]; // TODO + /* 0x10E8 */ u8 _10E8[0x1174 - 0x10E8]; // TODO + /* 0x1174 */ ACTOR* balloon_actor; + /* 0x1178 */ u8 _1178[0x11B4 - 0x1178]; // TODO + /* 0x11B4 */ f32 shake_tree_timer[3]; + /* 0x11C0 */ int shake_tree_ut_x[3]; + /* 0x11CC */ int shake_tree_ut_z[3]; + /* 0x11D8 */ int shake_tree_little[3]; + /* 0x11E4 */ u8 _11E4[0x11F8 - 0x11E4]; // TODO + /* 0x11F8 */ s8 _11F8; + /* 0x11F9 */ s8 bgm_volume_mode; /* 0x11FC */ int crash_snowball_for_wade; /* 0x1200 */ xyz_t snowball_dist; /* 0x120C */ int wade_request_flag; @@ -1280,7 +1328,7 @@ struct player_actor_s { /* 0x1220 */ void* angle_force_speak_label; /* 0x1224 */ int player_sunburn_rankup; /* 0x1228 */ int player_sunburn_rankdown; - /* 0x122C */ u8 radio_exercise_command_ring_buffer[8]; + /* 0x122C */ s8 radio_exercise_command_ring_buffer[8]; /* 0x1234 */ s8 radio_exercise_ring_buffer_cmd_num; /* 0x1238 */ int radio_exercise_command_ring_buffer_index; /* 0x123C */ int radio_exercise_continue_cmd_idx; @@ -1297,7 +1345,7 @@ struct player_actor_s { /* 0x1270 */ int (*request_main_invade_all_proc)(GAME*, int); /* 0x1274 */ int (*request_main_refuse_all_proc)(GAME*, int); /* 0x1278 */ int (*request_main_return_demo_all_proc)(GAME*, int, f32, int); - /* 0x127C */ int (*request_main_wait_all_proc)(GAME*, f32, int, int); + /* 0x127C */ int (*request_main_wait_all_proc)(GAME*, f32, f32, int, int); /* 0x1280 */ int (*request_main_talk_all_proc)(GAME*, ACTOR*, int, f32, int, int); /* 0x1284 */ int (*request_main_hold_all_proc)(GAME*, int, int, const xyz_t*, f32, int, int); /* 0x1288 */ int (*request_main_recieve_wait_all_proc)(GAME*, ACTOR*, int, int, mActor_name_t, int, int); @@ -1372,10 +1420,10 @@ struct player_actor_s { /* 0x13A4 */ s8 update_scene_bg_mode; }; -void Player_actor_ct(ACTOR*, GAME*); -void Player_actor_dt(ACTOR*, GAME*); -void Player_actor_move(ACTOR*, GAME*); -void Player_actor_draw(ACTOR*, GAME*); +void Player_actor_ct(PLAYER_ACTOR*, GAME*); +void Player_actor_dt(PLAYER_ACTOR*, GAME*); +void Player_actor_move(PLAYER_ACTOR*, GAME*); +void Player_actor_draw(PLAYER_ACTOR*, GAME*); #ifdef __cplusplus } diff --git a/include/m_player_lib.h b/include/m_player_lib.h index 69021891..3ff376e0 100644 --- a/include/m_player_lib.h +++ b/include/m_player_lib.h @@ -102,6 +102,8 @@ extern int mPlib_request_main_demo_standing_train_type1(GAME* game); extern void mPlib_Set_unable_wade(int unable); extern int mPlib_request_main_demo_getoff_train_type1(GAME* game); extern int mPlib_check_player_actor_main_index_OutDoorMove2(GAME* game); +extern int mPlib_Check_SetOrderSubmenu(void); +extern void mPlib_Clear_change_data_from_submenu(void); extern mPlayer_change_data_from_submenu_c* mPlib_Get_change_data_from_submenu_p(); diff --git a/src/m_player.c b/src/m_player.c new file mode 100644 index 00000000..dacf0daf --- /dev/null +++ b/src/m_player.c @@ -0,0 +1,1351 @@ +#include "m_player_lib.h" + +#include "m_play.h" +#include "m_common_data.h" +#include "m_actor_shadow.h" +#include "m_bgm.h" + +/* Common */ +#include "../src/m_player_controller.c_inc" +#include "../src/m_player_vibration.c_inc" +#include "../src/m_player_common.c_inc" +#include "../src/m_player_sound.c_inc" +#include "../src/m_player_other_func.c_inc" + +/* Item */ +#include "../src/m_player_item_common.c_inc" +#include "../src/m_player_item_axe.c_inc" +#include "../src/m_player_item_net.c_inc" +#include "../src/m_player_item_umbrella.c_inc" +#include "../src/m_player_item_rod.c_inc" +#include "../src/m_player_item_scoop.c_inc" +#include "../src/m_player_item_balloon.c_inc" +#include "../src/m_player_item_windmill.c_inc" +#include "../src/m_player_item_fan.c_inc" +#include "../src/m_player_item.c_inc" + +/* Draw */ +#include "../src/m_player_draw.c_inc" + +/* Main Index */ +#include "../src/m_player_main_dma.c_inc" +#include "../src/m_player_main_intro.c_inc" +#include "../src/m_player_main_refuse.c_inc" +#include "../src/m_player_main_refuse_pickup.c_inc" +#include "../src/m_player_main_return_demo.c_inc" +#include "../src/m_player_main_return_outdoor.c_inc" +#include "../src/m_player_main_return_outdoor2.c_inc" +#include "../src/m_player_main_wait.c_inc" +#include "../src/m_player_main_walk.c_inc" +#include "../src/m_player_main_run.c_inc" +#include "../src/m_player_main_dash.c_inc" +#include "../src/m_player_main_tumble.c_inc" +#include "../src/m_player_main_tumble_getup.c_inc" +#include "../src/m_player_main_turn_dash.c_inc" +#include "../src/m_player_main_fall.c_inc" +#include "../src/m_player_main_wade.c_inc" +#include "../src/m_player_main_wade_snowball.c_inc" +#include "../src/m_player_main_door.c_inc" +#include "../src/m_player_main_outdoor.c_inc" +#include "../src/m_player_main_invade.c_inc" +#include "../src/m_player_main_hold.c_inc" +#include "../src/m_player_main_push.c_inc" +#include "../src/m_player_main_pull.c_inc" +#include "../src/m_player_main_rotate_furniture.c_inc" +#include "../src/m_player_main_open_furniture.c_inc" +#include "../src/m_player_main_wait_open_furniture.c_inc" +#include "../src/m_player_main_close_furniture.c_inc" +#include "../src/m_player_main_lie_bed.c_inc" +#include "../src/m_player_main_wait_bed.c_inc" +#include "../src/m_player_main_roll_bed.c_inc" +#include "../src/m_player_main_standup_bed.c_inc" +#include "../src/m_player_main_pickup.c_inc" +#include "../src/m_player_main_pickup_jump.c_inc" +#include "../src/m_player_main_pickup_furniture.c_inc" +#include "../src/m_player_main_pickup_exchange.c_inc" +#include "../src/m_player_main_sitdown.c_inc" +#include "../src/m_player_main_sitdown_wait.c_inc" +#include "../src/m_player_main_standup.c_inc" +#include "../src/m_player_main_swing_axe.c_inc" +#include "../src/m_player_main_air_axe.c_inc" +#include "../src/m_player_main_reflect_axe.c_inc" +#include "../src/m_player_main_broken_axe.c_inc" +#include "../src/m_player_main_slip_net.c_inc" +#include "../src/m_player_main_ready_net.c_inc" +#include "../src/m_player_main_ready_walk_net.c_inc" +#include "../src/m_player_main_swing_net.c_inc" +#include "../src/m_player_main_pull_net.c_inc" +#include "../src/m_player_main_stop_net.c_inc" +#include "../src/m_player_main_notice_net.c_inc" +#include "../src/m_player_main_putaway_net.c_inc" +#include "../src/m_player_main_ready_rod.c_inc" +#include "../src/m_player_main_cast_rod.c_inc" +#include "../src/m_player_main_air_rod.c_inc" +#include "../src/m_player_main_relax_rod.c_inc" +#include "../src/m_player_main_collect_rod.c_inc" +#include "../src/m_player_main_vib_rod.c_inc" +#include "../src/m_player_main_fly_rod.c_inc" +#include "../src/m_player_main_notice_rod.c_inc" +#include "../src/m_player_main_putaway_rod.c_inc" +#include "../src/m_player_main_dig_scoop.c_inc" +#include "../src/m_player_main_fill_scoop.c_inc" +#include "../src/m_player_main_reflect_scoop.c_inc" +#include "../src/m_player_main_air_scoop.c_inc" +#include "../src/m_player_main_putin_scoop.c_inc" +#include "../src/m_player_main_putaway_scoop.c_inc" +#include "../src/m_player_main_get_scoop.c_inc" +#include "../src/m_player_main_talk.c_inc" +#include "../src/m_player_main_recieve_wait.c_inc" +#include "../src/m_player_main_recieve_stretch.c_inc" +#include "../src/m_player_main_recieve.c_inc" +#include "../src/m_player_main_recieve_putaway.c_inc" +#include "../src/m_player_main_give.c_inc" +#include "../src/m_player_main_give_wait.c_inc" +#include "../src/m_player_main_takeout_item.c_inc" +#include "../src/m_player_main_putin_item.c_inc" +#include "../src/m_player_main_demo_wait.c_inc" +#include "../src/m_player_main_demo_walk.c_inc" +#include "../src/m_player_main_demo_geton_train.c_inc" +#include "../src/m_player_main_demo_geton_train_wait.c_inc" +#include "../src/m_player_main_demo_getoff_train.c_inc" +#include "../src/m_player_main_demo_standing_train.c_inc" +#include "../src/m_player_main_demo_wade.c_inc" +#include "../src/m_player_main_hide.c_inc" +#include "../src/m_player_main_groundhog.c_inc" +#include "../src/m_player_main_release_creature.c_inc" +#include "../src/m_player_main_wash_car.c_inc" +#include "../src/m_player_main_tired.c_inc" +#include "../src/m_player_main_rotate_octagon.c_inc" +#include "../src/m_player_main_throw_money.c_inc" +#include "../src/m_player_main_pray.c_inc" +#include "../src/m_player_main_shake_tree.c_inc" +#include "../src/m_player_main_mail_jump.c_inc" +#include "../src/m_player_main_mail_land.c_inc" +#include "../src/m_player_main_ready_pitfall.c_inc" +#include "../src/m_player_main_fall_pitfall.c_inc" +#include "../src/m_player_main_struggle_pitfall.c_inc" +#include "../src/m_player_main_climbup_pitfall.c_inc" +#include "../src/m_player_main_stung_bee.c_inc" +#include "../src/m_player_main_notice_bee.c_inc" +#include "../src/m_player_main_remove_grass.c_inc" +#include "../src/m_player_main_shock.c_inc" +#include "../src/m_player_main_knock_door.c_inc" +#include "../src/m_player_main_change_cloth.c_inc" +#include "../src/m_player_main_push_snowball.c_inc" +#include "../src/m_player_main_rotate_umbrella.c_inc" +#include "../src/m_player_main_complete_payment.c_inc" +#include "../src/m_player_main_fail_emu.c_inc" +#include "../src/m_player_main_stung_mosquito.c_inc" +#include "../src/m_player_main_notice_mosquito.c_inc" +#include "../src/m_player_main_demo_geton_boat.c_inc" +#include "../src/m_player_main_swing_fan.c_inc" +#include "../src/m_player_main_switch_on_lighthouse.c_inc" +#include "../src/m_player_main_radio_exercise.c_inc" +#include "../src/m_player_main_demo_geton_boat_sitdown.c_inc" +#include "../src/m_player_main_demo_geton_boat_wait.c_inc" +#include "../src/m_player_main_demo_geton_boat_wade.c_inc" +#include "../src/m_player_main_demo_getoff_boat_standup.c_inc" +#include "../src/m_player_main_demo_getoff_boat.c_inc" +#include "../src/m_player_main_demo_get_golden_item.c_inc" +#include "../src/m_player_main_demo_get_golden_item2.c_inc" +#include "../src/m_player_main_demo_get_golden_axe_wait.c_inc" + +/* TODO: looks like all the c_inc files are included before the player funcs in this file based on rodata ordering */ + +static void Player_actor_ct_forCorect(PLAYER_ACTOR* player, GAME* game); +static void Player_actor_set_eye_pattern(PLAYER_ACTOR* player, int idx); +static void Player_actor_set_mouth_pattern(PLAYER_ACTOR* player, int idx); +static void Player_actor_Set_old_sound_frame_counter(PLAYER_ACTOR* player); +static void Player_actor_change_proc_index(PLAYER_ACTOR* player, GAME* game); + +static int Player_actor_request_main_invade_all(GAME*, int); +static int Player_actor_request_main_refuse(GAME*, int); +static int Player_actor_request_main_return_demo_all(GAME*, int, f32, int); +static int Player_actor_request_main_wait_all(GAME*, f32, f32, int, int); +static int Player_actor_request_main_talk_all(GAME*, ACTOR*, int, f32, int, int); +static int Player_actor_request_main_hold(GAME*, int, int, const xyz_t*, f32, int, int); +static int Player_actor_request_main_recieve_wait(GAME*, ACTOR*, int, int, mActor_name_t, int, int); +static int Player_actor_request_main_give_all(GAME*, ACTOR*, int, int, mActor_name_t, int, int, int, int); +static int Player_actor_request_main_sitdown(GAME*, int, const xyz_t*, int, int); +static int Player_actor_request_main_close_furniture(GAME*, int); +static int Player_actor_request_main_lie_bed(GAME*, int, const xyz_t*, int, int, int); +static int Player_actor_request_main_hide(GAME*, int); +static int Player_actor_request_main_groundhog(GAME*, int); +static int Player_actor_request_main_door(GAME*, const xyz_t*, s16, int, void*, int); +static int Player_actor_request_main_outdoor(GAME*, int, int, int); +static int Player_actor_request_main_wash_car_all(GAME*, const xyz_t*, const xyz_t*, s16, ACTOR*, int); +static int Player_actor_request_main_rotate_octagon_all(GAME*, ACTOR*, int, int, const xyz_t*, s16, int); +static int Player_actor_request_main_throw_money_all(GAME*, const xyz_t*, s16, int); +static int Player_actor_request_main_pray_all(GAME*, const xyz_t*, s16, int); +static int Player_actor_request_main_mail_jump_all(GAME*, const xyz_t*, s16, int); +static int Player_actor_request_main_demo_wait_all(GAME*, int, void*, int); +static int Player_actor_request_main_demo_walk_all(GAME*, f32, f32, f32, int, int); +static int Player_actor_request_main_demo_geton_train(GAME*, const xyz_t*, s16, int); +static int Player_actor_request_main_demo_getoff_train(GAME*, const xyz_t*, s16, int); +static int Player_actor_request_main_demo_standing_train_all(GAME*, int); +static int Player_actor_request_main_stung_bee_all(GAME*, int); +static int Player_actor_request_main_shock_all(GAME*, f32, s16, s8, int, int); +static int Player_actor_request_main_change_cloth_forNPC(GAME*, mActor_name_t, int); +static int Player_actor_request_main_push_snowball_all(GAME*, void*, int, int); +static int Player_actor_request_main_stung_mosquito_all(GAME*, int, int); +static int Player_actor_request_main_switch_on_lighthouse_all(GAME*, const xyz_t*, int, int); +static int Player_actor_request_main_demo_geton_boat_all(GAME*, const xyz_t*, s16, int); +static int Player_actor_request_main_demo_getoff_boat_standup_all(GAME*, const xyz_t*, s16, int); +static int Player_actor_request_main_demo_get_golden_item2_all(GAME*, int, int); +static int Player_actor_request_main_demo_get_golden_axe_wait_all(GAME*, int); +static int Player_actor_check_request_main_priority(GAME*, int); +static void* Player_actor_get_door_label(GAME*); +static int Player_actor_Set_Item_net_catch_request_table(ACTOR*, GAME*, u32, s8, const xyz_t*, f32); +static f32 Player_actor_Get_Item_net_catch_swing_timer(ACTOR*, GAME*); +static u8 Player_actor_Set_Item_net_catch_request_force(ACTOR*, GAME*, u32, s8); +static void Player_actor_Set_force_position_angle(GAME*, const xyz_t*, const s_xyz*, u8); +static u8 Player_actor_Get_force_position_angle(GAME*, xyz_t*, s_xyz*); +static int Player_actor_Get_WadeEndPos(GAME*, xyz_t*); +static int Player_actor_Check_Label_main_push_snowball(GAME*, void*); +static int Player_actor_SetParam_for_push_snowball(GAME*, const xyz_t*, s16, f32); +static int Player_actor_able_submenu_request_main_index(GAME*); +static int Player_actor_check_able_change_camera_normal_index(ACTOR*); +static int Player_actor_Check_able_force_speak_label(GAME*, ACTOR*); +static int Player_actor_check_cancel_request_change_proc_index(int); +static u32 Player_actor_Get_item_net_catch_label(ACTOR*); +static int Player_actor_Change_item_net_catch_label(ACTOR*, u32, s8); +static int Player_actor_Check_StopNet(ACTOR*, xyz_t*); +static int Player_actor_Check_HitAxe(ACTOR*, xyz_t*); +static int Player_actor_Check_VibUnit_OneFrame(ACTOR*, const xyz_t*); +static int Player_actor_Check_HitScoop(ACTOR*, xyz_t*); +static int Player_actor_Check_DigScoop(ACTOR*, xyz_t*); +static int Player_actor_check_request_change_item(GAME*); +static int Player_actor_Check_RotateOctagon(GAME*); +static int Player_actor_Check_end_stung_bee(ACTOR*); +static int Player_actor_Get_status_for_bee(ACTOR*); +static int Player_actor_Set_ScrollDemo_forWade_snowball(ACTOR*, int, const xyz_t*); +static int Player_actor_Check_tree_shaken(ACTOR*, const xyz_t*); +static int Player_actor_Check_tree_shaken_little(ACTOR*, const xyz_t*); +static int Player_actor_Check_tree_shaken_big(ACTOR*, const xyz_t*); +static int Player_actor_Check_Label_main_wade_snowball(GAME*, void*); +static int Player_actor_GetSnowballPos_forWadeSnowball(ACTOR*, xyz_t*); +static int Player_actor_CheckCondition_forWadeSnowball(GAME*, const xyz_t*, s16); +static mActor_name_t Player_actor_Get_itemNo_forWindow(ACTOR*); +static int Player_actor_check_cancel_event_without_priority(GAME*); +static int Player_actor_CheckScene_AbleSubmenu(void); +static int Player_actor_Check_stung_mosquito(GAME*, ACTOR*); + +static int Player_actor_request_main_walk_all(GAME*, xyz_t*, f32, int, int); +static int Player_actor_request_main_run_all(GAME*, f32, int, int); +static int Player_actor_request_main_dash_all(GAME*, f32, int, int); + +static void Player_actor_init_value(PLAYER_ACTOR* player, GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + int* shake_tree_table_ut_x_p; + int* shake_tree_table_ut_z_p; + s8* radio_exercise_command_ring_buffer_p; + int i; + + player->actor_class.gravity = -1.0f; + player->actor_class.max_velocity_y = -8.0f; + player->actor_class.scale.x = 0.01f; + player->actor_class.scale.y = 0.01f; + player->actor_class.scale.z = 0.01f; + player->balloon_actor = + Actor_info_make_actor(&play->actor_info, game, mAc_PROFILE_BALLOON, player->actor_class.world.position.x, + player->actor_class.world.position.y, player->actor_class.world.position.z, 0, 0, 0, -1, + -1, -1, EMPTY_NO, -1, -1, -1); + player->animation0_idx = -1; + player->animation1_idx = -1; + player->_0DBC = -1; + player->item_shape_type[0] = -1; + player->item_shape_type[1] = -1; + player->item_shape_type[2] = -1; + player->item_shape_type[3] = -1; + + Player_actor_ct_forCorect(player, game); + Player_actor_set_eye_pattern(player, 0); + Player_actor_set_mouth_pattern(player, 0); + + player->request_main_invade_all_proc = &Player_actor_request_main_invade_all; + player->request_main_refuse_all_proc = &Player_actor_request_main_refuse; + player->request_main_return_demo_all_proc = &Player_actor_request_main_return_demo_all; + player->request_main_wait_all_proc = &Player_actor_request_main_wait_all; + player->request_main_talk_all_proc = &Player_actor_request_main_talk_all; + player->request_main_hold_all_proc = &Player_actor_request_main_hold; + player->request_main_recieve_wait_all_proc = &Player_actor_request_main_recieve_wait; + player->request_main_give_all_proc = &Player_actor_request_main_give_all; + player->request_main_sitdown_all_proc = &Player_actor_request_main_sitdown; + player->request_main_close_furniture_all_proc = &Player_actor_request_main_close_furniture; + player->request_main_lie_bed_all_proc = &Player_actor_request_main_lie_bed; + player->request_main_hide_all_proc = &Player_actor_request_main_hide; + player->request_main_groundhog_proc = &Player_actor_request_main_groundhog; + player->request_main_door_all_proc = &Player_actor_request_main_door; + player->request_main_outdoor_all_proc = &Player_actor_request_main_outdoor; + player->request_main_demo_wait_all_proc = &Player_actor_request_main_demo_wait_all; + player->request_main_demo_walk_all_proc = &Player_actor_request_main_demo_walk_all; + player->request_main_demo_geton_train_all_proc = &Player_actor_request_main_demo_geton_train; + player->request_main_demo_getoff_train_all_proc = &Player_actor_request_main_demo_getoff_train; + player->request_main_demo_standing_train_all_proc = &Player_actor_request_main_demo_standing_train_all; + player->request_main_rotate_octagon_all_proc = &Player_actor_request_main_rotate_octagon_all; + player->request_main_wash_car_all_proc = &Player_actor_request_main_wash_car_all; + player->request_main_throw_money_all_proc = &Player_actor_request_main_throw_money_all; + player->request_main_pray_all_proc = &Player_actor_request_main_pray_all; + player->request_main_mail_jump_all_proc = &Player_actor_request_main_mail_jump_all; + player->request_main_stung_bee_all_proc = &Player_actor_request_main_stung_bee_all; + player->request_main_shock_all_proc = &Player_actor_request_main_shock_all; + player->request_main_change_cloth_forNPC_proc = &Player_actor_request_main_change_cloth_forNPC; + player->request_main_push_snowball_all_proc = &Player_actor_request_main_push_snowball_all; + player->request_main_stung_mosquito_all_proc = &Player_actor_request_main_stung_mosquito_all; + player->request_main_switch_on_lighthouse_all_proc = &Player_actor_request_main_switch_on_lighthouse_all; + player->request_main_demo_geton_boat_all_proc = &Player_actor_request_main_demo_geton_boat_all; + player->request_main_demo_getoff_boat_standup_all_proc = &Player_actor_request_main_demo_getoff_boat_standup_all; + player->request_main_demo_get_golden_item2_all_proc = &Player_actor_request_main_demo_get_golden_item2_all; + player->request_main_demo_get_golden_axe_wait_all_proc = &Player_actor_request_main_demo_get_golden_axe_wait_all; + player->check_request_main_priority_proc = &Player_actor_check_request_main_priority; + player->get_door_label_proc = &Player_actor_get_door_label; + player->Set_Item_net_catch_request_table_proc = &Player_actor_Set_Item_net_catch_request_table; + player->Set_Item_net_catch_request_force_proc = &Player_actor_Set_Item_net_catch_request_force; + player->Get_Item_net_catch_swing_timer_proc = &Player_actor_Get_Item_net_catch_swing_timer; + player->Set_force_position_angle_proc = &Player_actor_Set_force_position_angle; + player->Get_force_position_angle_proc = &Player_actor_Get_force_position_angle; + player->Get_WadeEndPos_proc = &Player_actor_Get_WadeEndPos; + player->check_cancel_request_change_proc_index_proc = &Player_actor_check_cancel_request_change_proc_index; + player->Get_item_net_catch_label_proc = &Player_actor_Get_item_net_catch_label; + player->Check_StopNet_proc = &Player_actor_Check_StopNet; + player->Check_HitAxe_proc = &Player_actor_Check_HitAxe; + player->Check_VibUnit_OneFrame_proc = &Player_actor_Check_VibUnit_OneFrame; + player->Check_HitScoop_proc = &Player_actor_Check_HitScoop; + player->Check_DigScoop_proc = &Player_actor_Check_DigScoop; + player->check_request_change_item_proc = &Player_actor_check_request_change_item; + player->Check_RotateOctagon_proc = &Player_actor_Check_RotateOctagon; + player->Change_item_net_catch_label_proc = &Player_actor_Change_item_net_catch_label; + player->Get_status_for_bee_proc = &Player_actor_Get_status_for_bee; + player->Check_end_stung_bee_proc = &Player_actor_Check_end_stung_bee; + player->Check_Label_main_push_snowball_proc = &Player_actor_Check_Label_main_push_snowball; + player->Check_Label_main_wade_snowball_proc = &Player_actor_Check_Label_main_wade_snowball; + player->SetParam_for_push_snowball_proc = &Player_actor_SetParam_for_push_snowball; + player->Set_ScrollDemo_forWade_snowball_proc = &Player_actor_Set_ScrollDemo_forWade_snowball; + player->GetSnowballPos_forWadeSnowball_proc = &Player_actor_GetSnowballPos_forWadeSnowball; + player->CheckCondition_forWadeSnowball_proc = &Player_actor_CheckCondition_forWadeSnowball; + player->Check_tree_shaken_proc = &Player_actor_Check_tree_shaken; + player->Check_tree_shaken_little_proc = &Player_actor_Check_tree_shaken_little; + player->Check_tree_shaken_big_proc = &Player_actor_Check_tree_shaken_big; + player->Get_itemNo_forWindow_proc = &Player_actor_Get_itemNo_forWindow; + player->able_submenu_request_main_index_proc = &Player_actor_able_submenu_request_main_index; + player->check_able_change_camera_normal_index_proc = &Player_actor_check_able_change_camera_normal_index; + player->CheckScene_AbleSubmenu_proc = &Player_actor_CheckScene_AbleSubmenu; + player->check_cancel_event_without_priority_proc = &Player_actor_check_cancel_event_without_priority; + player->Check_able_force_speak_label_proc = &Player_actor_Check_able_force_speak_label; + player->Check_stung_mosquito_proc = &Player_actor_Check_stung_mosquito; + + shake_tree_table_ut_x_p = player->shake_tree_ut_x; + shake_tree_table_ut_z_p = player->shake_tree_ut_z; + for (i = 0; i < 3; i++) { + *shake_tree_table_ut_x_p++ = -1; + *shake_tree_table_ut_z_p++ = -1; + } + + radio_exercise_command_ring_buffer_p = player->radio_exercise_command_ring_buffer; + for (i = 0; i < 8; i++) { + *radio_exercise_command_ring_buffer_p++ = -1; + } + + Player_actor_Set_old_sound_frame_counter(player); +} + +static void Player_actor_ct(PLAYER_ACTOR* player, GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + + if (mEv_CheckTitleDemo() > 0) { + player->actor_class.status_data.weight = 255; + } else { + player->actor_class.status_data.weight = 50; + } + + Player_actor_init_value(player, game); + Common_Set(player_actor_exists, TRUE); + Player_actor_Check_player_sunburn_for_ct(player); // + mPlib_change_player_face(game); // + Player_actor_ct_other_func1(player, game); // + Player_actor_set_eye_PositionAndAngle(player); // + Camera2_request_main_normal(play, 1, 1); + Shape_Info_init(&player->actor_class, 0.0f, &mAc_ActorShadowCircle, 18.0f, 18.0f); + player->actor_class.shape_info.ofs_y = 200.0f; + mPlib_Clear_change_data_from_submenu(); // + Player_actor_request_main_dma(game, 41); // + Player_actor_change_proc_index(player, game); // +} + +static void Player_actor_dt(PLAYER_ACTOR* player, GAME* game) { + Player_actor_dt_forCorect(player, game); // + Common_Set(player_actor_exists, FALSE); + mPlib_cancel_player_warp_forEvent(); // + Player_actor_Reset_bee_chase(player); // + Player_actor_Check_player_sunburn_for_dt(player); // + + if (mEv_CheckTitleDemo() <= 0 && player->bgm_volume_mode != mPlayer_BGM_VOLUME_MODE_NORMAL) { + switch (player->bgm_volume_mode) { + case mPlayer_BGM_VOLUME_MODE_COLLECT_INSECTS: + mBGMPsComp_volume_collect_insects_end(); + break; + case mPlayer_BGM_VOLUME_MODE_FISHING: + mBGMPsComp_volume_fishing_end(); + break; + } + } +} + +typedef void (*mPlayer_REQUEST_MAIN_CHANGE_FROM_SUBMENU_PROC)(PLAYER_ACTOR*, GAME*); + +static void Player_actor_request_main_wait_from_submenu(PLAYER_ACTOR*, GAME*); +static void Player_actor_request_main_putin_scoop_from_submenu(PLAYER_ACTOR*, GAME*); +static void Player_actor_request_main_give_from_submenu(PLAYER_ACTOR*, GAME*); +static void Player_actor_request_main_demo_wait_from_submenu(PLAYER_ACTOR*, GAME*); +static void Player_actor_request_main_release_creature_from_submenu(PLAYER_ACTOR*, GAME*); +static void Player_actor_request_main_mail_land_from_submenu(PLAYER_ACTOR*, GAME*); +static void Player_actor_request_main_demo_get_golden_item_from_submenu(PLAYER_ACTOR*, GAME*); + +static void Player_actor_request_main_change_from_submenu(PLAYER_ACTOR* player, GAME* game) { + static const mPlayer_REQUEST_MAIN_CHANGE_FROM_SUBMENU_PROC proc[] = { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + &Player_actor_request_main_wait_from_submenu, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + &Player_actor_request_main_putin_scoop_from_submenu, + NULL, + NULL, + NULL, + NULL, + NULL, + &Player_actor_request_main_give_from_submenu, + NULL, + NULL, + NULL, + &Player_actor_request_main_demo_wait_from_submenu, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + &Player_actor_request_main_release_creature_from_submenu, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + &Player_actor_request_main_mail_land_from_submenu, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + &Player_actor_request_main_demo_get_golden_item_from_submenu, + NULL, + NULL, + }; + + if (mPlib_Check_SetOrderSubmenu()) { + mPlayer_change_data_from_submenu_c* data = mPlib_Get_change_data_from_submenu_p(); + int idx = data->requested_main_index; + + if (mPlayer_MAIN_INDEX_VALID(idx) == FALSE || proc[idx] == NULL) { + return; + } + + (*proc[idx])(player, game); + } + + mPlib_Clear_change_data_from_submenu(); +} + +static void Player_actor_request_change_item(GAME* game) { + int item_kind = Player_actor_check_request_change_item(game); + + switch (item_kind) { + case mPlayer_ITEM_KIND_AXE_USE_7: + Player_actor_request_main_wait_all(game, 0.0f, 0.0f, 1, 16); + break; + case mPlayer_ITEM_KIND_GOLD_AXE: + Player_actor_request_main_walk_all(game, NULL, 0.0f, 1, 16); + break; + case mPlayer_ITEM_KIND_NET: + Player_actor_request_main_run_all(game, 0.0f, 1, 16); + break; + case mPlayer_ITEM_KIND_GOLD_NET: + Player_actor_request_main_dash_all(game, 0.0f, 1, 16); + break; + } +} + +typedef void (*mPlayer_SETTLE_MAIN_PROC)(PLAYER_ACTOR*, GAME*); + +static void Player_actor_settle_main_Walk(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Turn_dash(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Wade(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Outdoor(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Push(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Pull(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Open_furniture(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Wait_open_furniture(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Close_furniture(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Lie_bed(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Roll_bed(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Standup_bed(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Pickup_jump(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Pickup_furniture(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Pickup_exchange(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Sitdown(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Standup(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Reflect_axe(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Broken_axe(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Slip_net(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Swing_net(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Notice_net(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Collect_rod(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Fly_rod(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Notice_rod(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Reflect_scoop(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Get_scoop(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Talk(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Recieve_putaway(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Give_wait(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Takeout_item(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Demo_wait(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Demo_geton_train(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Demo_getoff_train(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Demo_wade(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Release_creature(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Wash_car(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Rotate_octagon(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Throw_money(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Pray(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Mail_jump(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Ready_pitfall(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Fall_pitfall(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Struggle_pitfall(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Climbup_pitfall(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Notice_bee(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Shock(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Knock_door(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Wade_snowball(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Complete_payment(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Fail_emu(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Notice_mosquito(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Switch_on_lighthouse(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Radio_exercise(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Demo_geton_boat(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Demo_geton_boat_wade(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Demo_getoff_boat_standup(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Demo_getoff_boat(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Demo_get_golden_item(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Demo_get_golden_item2(PLAYER_ACTOR*, GAME*); + +static void Player_actor_settle_main(PLAYER_ACTOR* player, GAME* game) { + static const mPlayer_SETTLE_MAIN_PROC proc[] = { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + &Player_actor_settle_main_Walk, + NULL, + NULL, + NULL, + NULL, + &Player_actor_settle_main_Turn_dash, + NULL, + &Player_actor_settle_main_Wade, + NULL, + &Player_actor_settle_main_Outdoor, + NULL, + NULL, + &Player_actor_settle_main_Push, + &Player_actor_settle_main_Pull, + NULL, + &Player_actor_settle_main_Open_furniture, + &Player_actor_settle_main_Wait_open_furniture, + &Player_actor_settle_main_Close_furniture, + &Player_actor_settle_main_Lie_bed, + NULL, + &Player_actor_settle_main_Roll_bed, + &Player_actor_settle_main_Standup_bed, + NULL, + &Player_actor_settle_main_Pickup_jump, + &Player_actor_settle_main_Pickup_furniture, + &Player_actor_settle_main_Pickup_exchange, + &Player_actor_settle_main_Sitdown, + NULL, + &Player_actor_settle_main_Standup, + NULL, + NULL, + &Player_actor_settle_main_Reflect_axe, + &Player_actor_settle_main_Broken_axe, + &Player_actor_settle_main_Slip_net, + NULL, + NULL, + &Player_actor_settle_main_Swing_net, + NULL, + NULL, + &Player_actor_settle_main_Notice_net, + NULL, + NULL, + NULL, + NULL, + NULL, + &Player_actor_settle_main_Collect_rod, + NULL, + &Player_actor_settle_main_Fly_rod, + &Player_actor_settle_main_Notice_rod, + NULL, + NULL, + NULL, + &Player_actor_settle_main_Reflect_scoop, + NULL, + &Player_actor_settle_main_Get_scoop, + NULL, + NULL, + &Player_actor_settle_main_Talk, + NULL, + NULL, + NULL, + &Player_actor_settle_main_Recieve_putaway, + NULL, + &Player_actor_settle_main_Give_wait, + &Player_actor_settle_main_Takeout_item, + NULL, + &Player_actor_settle_main_Demo_wait, + NULL, + &Player_actor_settle_main_Demo_geton_train, + NULL, + &Player_actor_settle_main_Demo_getoff_train, + NULL, + &Player_actor_settle_main_Demo_wade, + NULL, + NULL, + &Player_actor_settle_main_Release_creature, + &Player_actor_settle_main_Wash_car, + NULL, + &Player_actor_settle_main_Rotate_octagon, + &Player_actor_settle_main_Throw_money, + &Player_actor_settle_main_Pray, + NULL, + &Player_actor_settle_main_Mail_jump, + NULL, + &Player_actor_settle_main_Ready_pitfall, + &Player_actor_settle_main_Fall_pitfall, + &Player_actor_settle_main_Struggle_pitfall, + &Player_actor_settle_main_Climbup_pitfall, + NULL, + &Player_actor_settle_main_Notice_bee, + NULL, + &Player_actor_settle_main_Shock, + &Player_actor_settle_main_Knock_door, + NULL, + NULL, + NULL, + &Player_actor_settle_main_Wade_snowball, + &Player_actor_settle_main_Complete_payment, + &Player_actor_settle_main_Fail_emu, + NULL, + &Player_actor_settle_main_Notice_mosquito, + NULL, + &Player_actor_settle_main_Switch_on_lighthouse, + &Player_actor_settle_main_Radio_exercise, + &Player_actor_settle_main_Demo_geton_boat, + NULL, + NULL, + &Player_actor_settle_main_Demo_geton_boat_wade, + &Player_actor_settle_main_Demo_getoff_boat_standup, + &Player_actor_settle_main_Demo_getoff_boat, + &Player_actor_settle_main_Demo_get_golden_item, + &Player_actor_settle_main_Demo_get_golden_item2, + NULL, + }; + + int idx = player->now_main_index; + + if (mPlayer_MAIN_INDEX_VALID(idx) != FALSE) { + if (proc[idx] != NULL) { + (*proc[idx])(player, game); + } + + Player_actor_settle_main_other_func2(player, game); // + } +} + +typedef void (*mPlayer_SETUP_MAIN_PROC)(PLAYER_ACTOR*, GAME*); + +static void Player_actor_setup_main_Dma(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Intro(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Refuse(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Refuse_pickup(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Return_demo(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Return_outdoor(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Return_outdoor2(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Wait(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Walk(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Run(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Dash(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Tumble(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Tumble_getup(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Turn_dash(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Fall(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Wade(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Door(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Outdoor(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Invade(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Hold(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Push(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Pull(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Rotate_furniture(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Open_furniture(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Wait_open_furniture(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Close_furniture(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Lie_bed(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Wait_bed(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Roll_bed(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Standup_bed(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Pickup(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Pickup_jump(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Pickup_furniture(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Pickup_exchange(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Sitdown(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Sitdown_wait(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Standup(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Swing_axe(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Air_axe(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Reflect_axe(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Broken_axe(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Slip_net(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Ready_net(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Ready_walk_net(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Swing_net(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Pull_net(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Stop_net(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Notice_net(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Putaway_net(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Ready_rod(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Cast_rod(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Air_rod(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Relax_rod(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Collect_rod(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Vib_rod(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Fly_rod(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Notice_rod(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Putaway_rod(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Dig_scoop(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Fill_scoop(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Reflect_scoop(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Air_scoop(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Get_scoop(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Putaway_scoop(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Putin_scoop(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Talk(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Recieve_wait(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Recieve_stretch(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Recieve(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Recieve_putaway(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Give(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Give_wait(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Takeout_item(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Putin_item(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Demo_wait(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Demo_walk(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Demo_geton_train(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Demo_geton_train_wait(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Demo_getoff_train(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Demo_standing_train(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Demo_wade(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Hide(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Groundhog(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Release_creature(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Wash_car(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Tired(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Rotate_octagon(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Throw_money(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Pray(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Shake_tree(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Mail_jump(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Mail_land(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Ready_pitfall(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Fall_pitfall(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Struggle_pitfall(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Climbup_pitfall(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Stung_bee(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Notice_bee(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Remove_grass(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Shock(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Knock_door(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Change_cloth(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Push_snowball(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Rotate_umbrella(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Wade_snowball(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Complete_payment(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Fail_emu(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Stung_mosquito(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Notice_mosquito(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Swing_fan(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Switch_on_lighthouse(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Radio_exercise(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Demo_geton_boat(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Demo_geton_boat_sitdown(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Demo_geton_boat_wait(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Demo_geton_boat_wade(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Demo_getoff_boat_standup(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Demo_getoff_boat(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Demo_get_golden_item(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Demo_get_golden_item2(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Demo_get_golden_axe_wait(PLAYER_ACTOR*, GAME*); + +static int Player_actor_change_main_index(PLAYER_ACTOR* player, GAME* game) { + static const mPlayer_SETUP_MAIN_PROC proc[] = { + &Player_actor_setup_main_Dma, + &Player_actor_setup_main_Intro, + &Player_actor_setup_main_Refuse, + &Player_actor_setup_main_Refuse_pickup, + &Player_actor_setup_main_Return_demo, + &Player_actor_setup_main_Return_outdoor, + &Player_actor_setup_main_Return_outdoor2, + &Player_actor_setup_main_Wait, + &Player_actor_setup_main_Walk, + &Player_actor_setup_main_Run, + &Player_actor_setup_main_Dash, + &Player_actor_setup_main_Tumble, + &Player_actor_setup_main_Tumble_getup, + &Player_actor_setup_main_Turn_dash, + &Player_actor_setup_main_Fall, + &Player_actor_setup_main_Wade, + &Player_actor_setup_main_Door, + &Player_actor_setup_main_Outdoor, + &Player_actor_setup_main_Invade, + &Player_actor_setup_main_Hold, + &Player_actor_setup_main_Push, + &Player_actor_setup_main_Pull, + &Player_actor_setup_main_Rotate_furniture, + &Player_actor_setup_main_Open_furniture, + &Player_actor_setup_main_Wait_open_furniture, + &Player_actor_setup_main_Close_furniture, + &Player_actor_setup_main_Lie_bed, + &Player_actor_setup_main_Wait_bed, + &Player_actor_setup_main_Roll_bed, + &Player_actor_setup_main_Standup_bed, + &Player_actor_setup_main_Pickup, + &Player_actor_setup_main_Pickup_jump, + &Player_actor_setup_main_Pickup_furniture, + &Player_actor_setup_main_Pickup_exchange, + &Player_actor_setup_main_Sitdown, + &Player_actor_setup_main_Sitdown_wait, + &Player_actor_setup_main_Standup, + &Player_actor_setup_main_Swing_axe, + &Player_actor_setup_main_Air_axe, + &Player_actor_setup_main_Reflect_axe, + &Player_actor_setup_main_Broken_axe, + &Player_actor_setup_main_Slip_net, + &Player_actor_setup_main_Ready_net, + &Player_actor_setup_main_Ready_walk_net, + &Player_actor_setup_main_Swing_net, + &Player_actor_setup_main_Pull_net, + &Player_actor_setup_main_Stop_net, + &Player_actor_setup_main_Notice_net, + &Player_actor_setup_main_Putaway_net, + &Player_actor_setup_main_Ready_rod, + &Player_actor_setup_main_Cast_rod, + &Player_actor_setup_main_Air_rod, + &Player_actor_setup_main_Relax_rod, + &Player_actor_setup_main_Collect_rod, + &Player_actor_setup_main_Vib_rod, + &Player_actor_setup_main_Fly_rod, + &Player_actor_setup_main_Notice_rod, + &Player_actor_setup_main_Putaway_rod, + &Player_actor_setup_main_Dig_scoop, + &Player_actor_setup_main_Fill_scoop, + &Player_actor_setup_main_Reflect_scoop, + &Player_actor_setup_main_Air_scoop, + &Player_actor_setup_main_Get_scoop, + &Player_actor_setup_main_Putaway_scoop, + &Player_actor_setup_main_Putin_scoop, + &Player_actor_setup_main_Talk, + &Player_actor_setup_main_Recieve_wait, + &Player_actor_setup_main_Recieve_stretch, + &Player_actor_setup_main_Recieve, + &Player_actor_setup_main_Recieve_putaway, + &Player_actor_setup_main_Give, + &Player_actor_setup_main_Give_wait, + &Player_actor_setup_main_Takeout_item, + &Player_actor_setup_main_Putin_item, + &Player_actor_setup_main_Demo_wait, + &Player_actor_setup_main_Demo_walk, + &Player_actor_setup_main_Demo_geton_train, + &Player_actor_setup_main_Demo_geton_train_wait, + &Player_actor_setup_main_Demo_getoff_train, + &Player_actor_setup_main_Demo_standing_train, + &Player_actor_setup_main_Demo_wade, + &Player_actor_setup_main_Hide, + &Player_actor_setup_main_Groundhog, + &Player_actor_setup_main_Release_creature, + &Player_actor_setup_main_Wash_car, + &Player_actor_setup_main_Tired, + &Player_actor_setup_main_Rotate_octagon, + &Player_actor_setup_main_Throw_money, + &Player_actor_setup_main_Pray, + &Player_actor_setup_main_Shake_tree, + &Player_actor_setup_main_Mail_jump, + &Player_actor_setup_main_Mail_land, + &Player_actor_setup_main_Ready_pitfall, + &Player_actor_setup_main_Fall_pitfall, + &Player_actor_setup_main_Struggle_pitfall, + &Player_actor_setup_main_Climbup_pitfall, + &Player_actor_setup_main_Stung_bee, + &Player_actor_setup_main_Notice_bee, + &Player_actor_setup_main_Remove_grass, + &Player_actor_setup_main_Shock, + &Player_actor_setup_main_Knock_door, + &Player_actor_setup_main_Change_cloth, + &Player_actor_setup_main_Push_snowball, + &Player_actor_setup_main_Rotate_umbrella, + &Player_actor_setup_main_Wade_snowball, + &Player_actor_setup_main_Complete_payment, + &Player_actor_setup_main_Fail_emu, + &Player_actor_setup_main_Stung_mosquito, + &Player_actor_setup_main_Notice_mosquito, + &Player_actor_setup_main_Swing_fan, + &Player_actor_setup_main_Switch_on_lighthouse, + &Player_actor_setup_main_Radio_exercise, + &Player_actor_setup_main_Demo_geton_boat, + &Player_actor_setup_main_Demo_geton_boat_sitdown, + &Player_actor_setup_main_Demo_geton_boat_wait, + &Player_actor_setup_main_Demo_geton_boat_wade, + &Player_actor_setup_main_Demo_getoff_boat_standup, + &Player_actor_setup_main_Demo_getoff_boat, + &Player_actor_setup_main_Demo_get_golden_item, + &Player_actor_setup_main_Demo_get_golden_item2, + &Player_actor_setup_main_Demo_get_golden_axe_wait, + }; + + if (player->requested_main_index_changed) { + int idx = player->requested_main_index; + + if (mPlayer_MAIN_INDEX_VALID(idx) == FALSE || proc[idx] == NULL) { + return FALSE; + } + + idx = Player_actor_CheckAndRequest_KnockDoor(player, game, + Player_actor_CheckAndRequest_ItemInOut(player, game, idx)); // + Player_actor_Set_bgm_volume(player, idx); // + Player_actor_settle_main(player, game); + Player_actor_Reset_unable_hand_item_in_demo(player, idx); // + Player_actor_Reset_able_hand_all_item_in_demo(player, idx); // + Player_actor_Reset_able_force_speak_label(player, idx); // + Player_actor_change_main_index_other_func1(player, game); // + (*proc[idx])(player, game); + Player_actor_change_main_index_other_func2(player, game); // + return TRUE; + } + + return FALSE; +} + +static void Player_actor_change_proc_index(PLAYER_ACTOR* player, GAME* game) { + player->changed_main_index = Player_actor_change_main_index(player, game); +} + +typedef void (*mPlayer_MAIN_PROC)(PLAYER_ACTOR*, GAME*); + +static void Player_actor_main_Dma(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Intro(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Refuse(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Refuse_pickup(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Return_demo(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Return_outdoor(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Return_outdoor2(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Wait(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Walk(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Run(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Dash(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Tumble(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Tumble_getup(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Turn_dash(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Fall(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Wade(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Door(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Outdoor(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Invade(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Hold(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Push(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Pull(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Rotate_furniture(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Open_furniture(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Wait_open_furniture(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Close_furniture(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Lie_bed(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Wait_bed(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Roll_bed(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Standup_bed(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Pickup(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Pickup_jump(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Pickup_furniture(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Pickup_exchange(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Sitdown(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Sitdown_wait(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Standup(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Swing_axe(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Air_axe(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Reflect_axe(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Broken_axe(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Slip_net(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Ready_net(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Ready_walk_net(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Swing_net(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Pull_net(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Stop_net(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Notice_net(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Putaway_net(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Ready_rod(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Cast_rod(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Air_rod(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Relax_rod(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Collect_rod(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Vib_rod(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Fly_rod(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Notice_rod(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Putaway_rod(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Dig_scoop(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Fill_scoop(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Reflect_scoop(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Air_scoop(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Get_scoop(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Putaway_scoop(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Putin_scoop(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Talk(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Recieve_wait(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Recieve_stretch(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Recieve(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Recieve_putaway(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Give(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Give_wait(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Takeout_item(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Putin_item(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Demo_wait(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Demo_walk(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Demo_geton_train(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Demo_geton_train_wait(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Demo_getoff_train(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Demo_standing_train(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Demo_wade(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Hide(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Groundhog(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Release_creature(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Wash_car(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Tired(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Rotate_octagon(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Throw_money(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Pray(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Shake_tree(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Mail_jump(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Mail_land(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Ready_pitfall(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Fall_pitfall(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Struggle_pitfall(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Climbup_pitfall(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Stung_bee(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Notice_bee(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Remove_grass(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Shock(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Knock_door(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Change_cloth(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Push_snowball(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Rotate_umbrella(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Wade_snowball(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Complete_payment(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Fail_emu(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Stung_mosquito(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Notice_mosquito(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Swing_fan(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Switch_on_lighthouse(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Radio_exercise(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Demo_geton_boat(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Demo_geton_boat_sitdown(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Demo_geton_boat_wait(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Demo_geton_boat_wade(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Demo_getoff_boat_standup(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Demo_getoff_boat(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Demo_get_golden_item(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Demo_get_golden_item2(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Demo_get_golden_axe_wait(PLAYER_ACTOR*, GAME*); + +static void Player_actor_move(PLAYER_ACTOR* player, GAME* game) { + static const mPlayer_MAIN_PROC proc[] = { + &Player_actor_main_Dma, + &Player_actor_main_Intro, + &Player_actor_main_Refuse, + &Player_actor_main_Refuse_pickup, + &Player_actor_main_Return_demo, + &Player_actor_main_Return_outdoor, + &Player_actor_main_Return_outdoor2, + &Player_actor_main_Wait, + &Player_actor_main_Walk, + &Player_actor_main_Run, + &Player_actor_main_Dash, + &Player_actor_main_Tumble, + &Player_actor_main_Tumble_getup, + &Player_actor_main_Turn_dash, + &Player_actor_main_Fall, + &Player_actor_main_Wade, + &Player_actor_main_Door, + &Player_actor_main_Outdoor, + &Player_actor_main_Invade, + &Player_actor_main_Hold, + &Player_actor_main_Push, + &Player_actor_main_Pull, + &Player_actor_main_Rotate_furniture, + &Player_actor_main_Open_furniture, + &Player_actor_main_Wait_open_furniture, + &Player_actor_main_Close_furniture, + &Player_actor_main_Lie_bed, + &Player_actor_main_Wait_bed, + &Player_actor_main_Roll_bed, + &Player_actor_main_Standup_bed, + &Player_actor_main_Pickup, + &Player_actor_main_Pickup_jump, + &Player_actor_main_Pickup_furniture, + &Player_actor_main_Pickup_exchange, + &Player_actor_main_Sitdown, + &Player_actor_main_Sitdown_wait, + &Player_actor_main_Standup, + &Player_actor_main_Swing_axe, + &Player_actor_main_Air_axe, + &Player_actor_main_Reflect_axe, + &Player_actor_main_Broken_axe, + &Player_actor_main_Slip_net, + &Player_actor_main_Ready_net, + &Player_actor_main_Ready_walk_net, + &Player_actor_main_Swing_net, + &Player_actor_main_Pull_net, + &Player_actor_main_Stop_net, + &Player_actor_main_Notice_net, + &Player_actor_main_Putaway_net, + &Player_actor_main_Ready_rod, + &Player_actor_main_Cast_rod, + &Player_actor_main_Air_rod, + &Player_actor_main_Relax_rod, + &Player_actor_main_Collect_rod, + &Player_actor_main_Vib_rod, + &Player_actor_main_Fly_rod, + &Player_actor_main_Notice_rod, + &Player_actor_main_Putaway_rod, + &Player_actor_main_Dig_scoop, + &Player_actor_main_Fill_scoop, + &Player_actor_main_Reflect_scoop, + &Player_actor_main_Air_scoop, + &Player_actor_main_Get_scoop, + &Player_actor_main_Putaway_scoop, + &Player_actor_main_Putin_scoop, + &Player_actor_main_Talk, + &Player_actor_main_Recieve_wait, + &Player_actor_main_Recieve_stretch, + &Player_actor_main_Recieve, + &Player_actor_main_Recieve_putaway, + &Player_actor_main_Give, + &Player_actor_main_Give_wait, + &Player_actor_main_Takeout_item, + &Player_actor_main_Putin_item, + &Player_actor_main_Demo_wait, + &Player_actor_main_Demo_walk, + &Player_actor_main_Demo_geton_train, + &Player_actor_main_Demo_geton_train_wait, + &Player_actor_main_Demo_getoff_train, + &Player_actor_main_Demo_standing_train, + &Player_actor_main_Demo_wade, + &Player_actor_main_Hide, + &Player_actor_main_Groundhog, + &Player_actor_main_Release_creature, + &Player_actor_main_Wash_car, + &Player_actor_main_Tired, + &Player_actor_main_Rotate_octagon, + &Player_actor_main_Throw_money, + &Player_actor_main_Pray, + &Player_actor_main_Shake_tree, + &Player_actor_main_Mail_jump, + &Player_actor_main_Mail_land, + &Player_actor_main_Ready_pitfall, + &Player_actor_main_Fall_pitfall, + &Player_actor_main_Struggle_pitfall, + &Player_actor_main_Climbup_pitfall, + &Player_actor_main_Stung_bee, + &Player_actor_main_Notice_bee, + &Player_actor_main_Remove_grass, + &Player_actor_main_Shock, + &Player_actor_main_Knock_door, + &Player_actor_main_Change_cloth, + &Player_actor_main_Push_snowball, + &Player_actor_main_Rotate_umbrella, + &Player_actor_main_Wade_snowball, + &Player_actor_main_Complete_payment, + &Player_actor_main_Fail_emu, + &Player_actor_main_Stung_mosquito, + &Player_actor_main_Notice_mosquito, + &Player_actor_main_Swing_fan, + &Player_actor_main_Switch_on_lighthouse, + &Player_actor_main_Radio_exercise, + &Player_actor_main_Demo_geton_boat, + &Player_actor_main_Demo_geton_boat_sitdown, + &Player_actor_main_Demo_geton_boat_wait, + &Player_actor_main_Demo_geton_boat_wade, + &Player_actor_main_Demo_getoff_boat_standup, + &Player_actor_main_Demo_getoff_boat, + &Player_actor_main_Demo_get_golden_item, + &Player_actor_main_Demo_get_golden_item2, + &Player_actor_main_Demo_get_golden_axe_wait, + }; + int idx; + + Player_actor_move_other_func1(player, game); // + idx = player->now_main_index; + if (mPlayer_MAIN_INDEX_VALID(idx) == FALSE || proc[idx] == NULL) { + return; + } + + (*proc[idx])(player, game); + Player_actor_move_other_func2(player, game); // +} + +typedef void (*mPlayer_DRAW_PROC)(PLAYER_ACTOR*, GAME*); + +static void Player_actor_draw_Normal(PLAYER_ACTOR*, GAME*); + +static void Player_actor_draw(PLAYER_ACTOR* player, GAME* game) { + static const s8 data[] = { + mPlayer_DRAW_TYPE_NONE, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NONE, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, + }; + + static const mPlayer_DRAW_PROC proc[] = { + (mPlayer_DRAW_PROC)&none_proc2, + &Player_actor_draw_Normal, + }; + + int main_idx = player->now_main_index; + + if (mPlayer_MAIN_INDEX_VALID(main_idx) != FALSE) { + int draw_idx = data[main_idx]; + + if (draw_idx >= 0 && draw_idx < mPlayer_DRAW_TYPE_NUM && proc[draw_idx] != NULL) { + (*proc[draw_idx])(player, game); + Player_actor_draw_other_func2(player, game); // + } + } +} diff --git a/src/m_player_call.c b/src/m_player_call.c index fb09332d..92511a2a 100644 --- a/src/m_player_call.c +++ b/src/m_player_call.c @@ -4,10 +4,12 @@ #include "m_name_table.h" #include "m_play.h" -mActor_proc Player_actor_ct_func; -mActor_proc Player_actor_dt_func; -mActor_proc Player_actor_move_func; -mActor_proc Player_actor_draw_func; +typedef void (*PLAYER_ACTOR_PROC)(PLAYER_ACTOR*, GAME*); + +PLAYER_ACTOR_PROC Player_actor_ct_func; +PLAYER_ACTOR_PROC Player_actor_dt_func; +PLAYER_ACTOR_PROC Player_actor_move_func; +PLAYER_ACTOR_PROC Player_actor_draw_func; void Player_actor_ct_call(ACTOR* actor, GAME* game); void Player_actor_dt_call(ACTOR* actor, GAME* game); @@ -43,26 +45,26 @@ static void Player_actor_ct_call(ACTOR* actor, GAME* game) { load_player(&play->submenu); initfunc(play); - Player_actor_ct_func(actor, game); + Player_actor_ct_func((PLAYER_ACTOR*)actor, game); } static void Player_actor_dt_call(ACTOR* actor, GAME* game) { GAME_PLAY* play = (GAME_PLAY*)game; load_player(&play->submenu); - Player_actor_dt_func(actor, game); + Player_actor_dt_func((PLAYER_ACTOR*)actor, game); } static void Player_actor_move_call(ACTOR* actor, GAME* game) { GAME_PLAY* play = (GAME_PLAY*)game; load_player(&play->submenu); - Player_actor_move_func(actor, game); + Player_actor_move_func((PLAYER_ACTOR*)actor, game); } static void Player_actor_draw_call(ACTOR* actor, GAME* game) { GAME_PLAY* play = (GAME_PLAY*)game; load_player(&play->submenu); - Player_actor_draw_func(actor, game); + Player_actor_draw_func((PLAYER_ACTOR*)actor, game); } diff --git a/src/m_player_common.c_inc b/src/m_player_common.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_controller.c_inc b/src/m_player_controller.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_draw.c_inc b/src/m_player_draw.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_item.c_inc b/src/m_player_item.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_item_axe.c_inc b/src/m_player_item_axe.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_item_balloon.c_inc b/src/m_player_item_balloon.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_item_common.c_inc b/src/m_player_item_common.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_item_fan.c_inc b/src/m_player_item_fan.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_item_net.c_inc b/src/m_player_item_net.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_item_rod.c_inc b/src/m_player_item_rod.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_item_scoop.c_inc b/src/m_player_item_scoop.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_item_umbrella.c_inc b/src/m_player_item_umbrella.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_item_windmill.c_inc b/src/m_player_item_windmill.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_air_axe.c_inc b/src/m_player_main_air_axe.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_air_rod.c_inc b/src/m_player_main_air_rod.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_air_scoop.c_inc b/src/m_player_main_air_scoop.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_broken_axe.c_inc b/src/m_player_main_broken_axe.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_cast_rod.c_inc b/src/m_player_main_cast_rod.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_change_cloth.c_inc b/src/m_player_main_change_cloth.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_climbup_pitfall.c_inc b/src/m_player_main_climbup_pitfall.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_close_furniture.c_inc b/src/m_player_main_close_furniture.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_collect_rod.c_inc b/src/m_player_main_collect_rod.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_complete_payment.c_inc b/src/m_player_main_complete_payment.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_dash.c_inc b/src/m_player_main_dash.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_demo_get_golden_axe_wait.c_inc b/src/m_player_main_demo_get_golden_axe_wait.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_demo_get_golden_item.c_inc b/src/m_player_main_demo_get_golden_item.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_demo_get_golden_item2.c_inc b/src/m_player_main_demo_get_golden_item2.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_demo_getoff_boat.c_inc b/src/m_player_main_demo_getoff_boat.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_demo_getoff_boat_standup.c_inc b/src/m_player_main_demo_getoff_boat_standup.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_demo_getoff_train.c_inc b/src/m_player_main_demo_getoff_train.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_demo_geton_boat.c_inc b/src/m_player_main_demo_geton_boat.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_demo_geton_boat_sitdown.c_inc b/src/m_player_main_demo_geton_boat_sitdown.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_demo_geton_boat_wade.c_inc b/src/m_player_main_demo_geton_boat_wade.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_demo_geton_boat_wait.c_inc b/src/m_player_main_demo_geton_boat_wait.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_demo_geton_train.c_inc b/src/m_player_main_demo_geton_train.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_demo_geton_train_wait.c_inc b/src/m_player_main_demo_geton_train_wait.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_demo_standing_train.c_inc b/src/m_player_main_demo_standing_train.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_demo_wade.c_inc b/src/m_player_main_demo_wade.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_demo_wait.c_inc b/src/m_player_main_demo_wait.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_demo_walk.c_inc b/src/m_player_main_demo_walk.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_dig_scoop.c_inc b/src/m_player_main_dig_scoop.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_dma.c_inc b/src/m_player_main_dma.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_door.c_inc b/src/m_player_main_door.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_fail_emu.c_inc b/src/m_player_main_fail_emu.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_fall.c_inc b/src/m_player_main_fall.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_fall_pitfall.c_inc b/src/m_player_main_fall_pitfall.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_fill_scoop.c_inc b/src/m_player_main_fill_scoop.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_fly_rod.c_inc b/src/m_player_main_fly_rod.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_get_scoop.c_inc b/src/m_player_main_get_scoop.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_give.c_inc b/src/m_player_main_give.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_give_wait.c_inc b/src/m_player_main_give_wait.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_groundhog.c_inc b/src/m_player_main_groundhog.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_hide.c_inc b/src/m_player_main_hide.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_hold.c_inc b/src/m_player_main_hold.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_intro.c_inc b/src/m_player_main_intro.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_invade.c_inc b/src/m_player_main_invade.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_knock_door.c_inc b/src/m_player_main_knock_door.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_lie_bed.c_inc b/src/m_player_main_lie_bed.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_mail_jump.c_inc b/src/m_player_main_mail_jump.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_mail_land.c_inc b/src/m_player_main_mail_land.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_notice_bee.c_inc b/src/m_player_main_notice_bee.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_notice_mosquito.c_inc b/src/m_player_main_notice_mosquito.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_notice_net.c_inc b/src/m_player_main_notice_net.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_notice_rod.c_inc b/src/m_player_main_notice_rod.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_open_furniture.c_inc b/src/m_player_main_open_furniture.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_outdoor.c_inc b/src/m_player_main_outdoor.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_pickup.c_inc b/src/m_player_main_pickup.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_pickup_exchange.c_inc b/src/m_player_main_pickup_exchange.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_pickup_furniture.c_inc b/src/m_player_main_pickup_furniture.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_pickup_jump.c_inc b/src/m_player_main_pickup_jump.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_pray.c_inc b/src/m_player_main_pray.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_pull.c_inc b/src/m_player_main_pull.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_pull_net.c_inc b/src/m_player_main_pull_net.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_push.c_inc b/src/m_player_main_push.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_push_snowball.c_inc b/src/m_player_main_push_snowball.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_putaway_net.c_inc b/src/m_player_main_putaway_net.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_putaway_rod.c_inc b/src/m_player_main_putaway_rod.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_putaway_scoop.c_inc b/src/m_player_main_putaway_scoop.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_putin_item.c_inc b/src/m_player_main_putin_item.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_putin_scoop.c_inc b/src/m_player_main_putin_scoop.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_radio_exercise.c_inc b/src/m_player_main_radio_exercise.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_ready_net.c_inc b/src/m_player_main_ready_net.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_ready_pitfall.c_inc b/src/m_player_main_ready_pitfall.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_ready_rod.c_inc b/src/m_player_main_ready_rod.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_ready_walk_net.c_inc b/src/m_player_main_ready_walk_net.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_recieve.c_inc b/src/m_player_main_recieve.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_recieve_putaway.c_inc b/src/m_player_main_recieve_putaway.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_recieve_stretch.c_inc b/src/m_player_main_recieve_stretch.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_recieve_wait.c_inc b/src/m_player_main_recieve_wait.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_reflect_axe.c_inc b/src/m_player_main_reflect_axe.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_reflect_scoop.c_inc b/src/m_player_main_reflect_scoop.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_refuse.c_inc b/src/m_player_main_refuse.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_refuse_pickup.c_inc b/src/m_player_main_refuse_pickup.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_relax_rod.c_inc b/src/m_player_main_relax_rod.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_release_creature.c_inc b/src/m_player_main_release_creature.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_remove_grass.c_inc b/src/m_player_main_remove_grass.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_return_demo.c_inc b/src/m_player_main_return_demo.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_return_outdoor.c_inc b/src/m_player_main_return_outdoor.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_return_outdoor2.c_inc b/src/m_player_main_return_outdoor2.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_roll_bed.c_inc b/src/m_player_main_roll_bed.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_rotate_furniture.c_inc b/src/m_player_main_rotate_furniture.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_rotate_octagon.c_inc b/src/m_player_main_rotate_octagon.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_rotate_umbrella.c_inc b/src/m_player_main_rotate_umbrella.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_run.c_inc b/src/m_player_main_run.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_shake_tree.c_inc b/src/m_player_main_shake_tree.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_shock.c_inc b/src/m_player_main_shock.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_sitdown.c_inc b/src/m_player_main_sitdown.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_sitdown_wait.c_inc b/src/m_player_main_sitdown_wait.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_slip_net.c_inc b/src/m_player_main_slip_net.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_standup.c_inc b/src/m_player_main_standup.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_standup_bed.c_inc b/src/m_player_main_standup_bed.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_stop_net.c_inc b/src/m_player_main_stop_net.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_struggle_pitfall.c_inc b/src/m_player_main_struggle_pitfall.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_stung_bee.c_inc b/src/m_player_main_stung_bee.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_stung_mosquito.c_inc b/src/m_player_main_stung_mosquito.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_swing_axe.c_inc b/src/m_player_main_swing_axe.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_swing_fan.c_inc b/src/m_player_main_swing_fan.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_swing_net.c_inc b/src/m_player_main_swing_net.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_switch_on_lighthouse.c_inc b/src/m_player_main_switch_on_lighthouse.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_takeout_item.c_inc b/src/m_player_main_takeout_item.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_talk.c_inc b/src/m_player_main_talk.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_throw_money.c_inc b/src/m_player_main_throw_money.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_tired.c_inc b/src/m_player_main_tired.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_tumble.c_inc b/src/m_player_main_tumble.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_tumble_getup.c_inc b/src/m_player_main_tumble_getup.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_turn_dash.c_inc b/src/m_player_main_turn_dash.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_vib_rod.c_inc b/src/m_player_main_vib_rod.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_wade.c_inc b/src/m_player_main_wade.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_wade_snowball.c_inc b/src/m_player_main_wade_snowball.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_wait.c_inc b/src/m_player_main_wait.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_wait_bed.c_inc b/src/m_player_main_wait_bed.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_wait_open_furniture.c_inc b/src/m_player_main_wait_open_furniture.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_walk.c_inc b/src/m_player_main_walk.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_main_wash_car.c_inc b/src/m_player_main_wash_car.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_other_func.c_inc b/src/m_player_other_func.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_sound.c_inc b/src/m_player_sound.c_inc new file mode 100644 index 00000000..e69de29b diff --git a/src/m_player_vibration.c_inc b/src/m_player_vibration.c_inc new file mode 100644 index 00000000..e69de29b From 4f903baa6b948f36f0fd970ec51cd45090d6f414 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Sat, 17 Aug 2024 16:59:13 -0400 Subject: [PATCH 117/234] Match m_player_draw.c_inc, fix player actor types --- include/m_player.h | 127 ++++++- src/m_player.c | 747 ++++++++++++++++++++-------------------- src/m_player_call.c | 18 +- src/m_player_draw.c_inc | 377 ++++++++++++++++++++ 4 files changed, 885 insertions(+), 384 deletions(-) diff --git a/include/m_player.h b/include/m_player.h index f571a96f..8fe0d25b 100644 --- a/include/m_player.h +++ b/include/m_player.h @@ -28,7 +28,36 @@ typedef struct player_actor_s PLAYER_ACTOR; #define mPlayer_FORCE_POSITION_ANGLE_ROTY (1 << 5) #define mPlayer_FORCE_POSITION_ANGLE_ROTZ (1 << 6) -#define mPlayer_JOINT_NUM 26 +enum { + mPlayer_JOINT_ROOT, + mPlayer_JOINT_BASE, + mPlayer_JOINT_LFOOT_BASE, + mPlayer_JOINT_LFOOT1, + mPlayer_JOINT_LFOOT2, + mPlayer_JOINT_LFOOT3, + mPlayer_JOINT_RFOOT_BASE, + mPlayer_JOINT_RFOOT1, + mPlayer_JOINT_RFOOT2, + mPlayer_JOINT_RFOOT3, + mPlayer_JOINT_TAIL_BASE, + mPlayer_JOINT_TAIL1, + mPlayer_JOINT_TAIL2, + mPlayer_JOINT_CHEST, + mPlayer_JOINT_LARM_BASE, + mPlayer_JOINT_LARM1, + mPlayer_JOINT_LARM2, + mPlayer_JOINT_RARM_BASE, + mPlayer_JOINT_RARM1, + mPlayer_JOINT_RARM2, + mPlayer_JOINT_HAND, + mPlayer_JOINT_HEAD_BASE, + mPlayer_JOINT_MOUTH_BASE, + mPlayer_JOINT_MOUTH, + mPlayer_JOINT_HEAD, + mPlayer_JOINT_FEEL, + + mPlayer_JOINT_NUM +}; enum { mPlayer_ADDRESSABLE_TRUE, @@ -1236,11 +1265,76 @@ typedef struct player_main_return_outdoor2_s { int prev_main_index; } mPlayer_main_return_outdoor2_c; +typedef struct player_main_pickup_s { + xyz_t target_pos; + xyz_t item_pos; + xyz_t item_offset; + f32 scale; + f32 timer; + mActor_name_t item; + int ftr_flag; + int exchange_flag; +} mPlayer_main_pickup_c; + +typedef struct player_main_pickup_jump_s { + xyz_t target_pos; + xyz_t item_pos; + xyz_t item_offset; + f32 scale; + mActor_name_t item; + int exchange_flag; +} mPlayer_main_pickup_jump_c; + +typedef struct player_main_get_scoop_s { + xyz_t target_pos; + mActor_name_t item; + f32 scale; + int success_flag; + f32 timer; + int msg_mode; + int submenu_flag; +} mPlayer_main_get_scoop_c; + +typedef struct player_main_putaway_scoop_s { + xyz_t target_pos; + mActor_name_t item; + f32 scale; + int submenu_flag; +} mPlayer_main_putaway_scoop_c; + +typedef struct player_main_wash_car_s { + int anime_idx; + int change_anime_idx; + int counter; + xyz_t ret_pos; + s16 ret_angle_y; + ACTOR* control_actor; + int ret_order; + int effect_flag; +} mPlayer_main_wash_car_c; + +typedef struct player_main_demo_geton_boat_sitdown_s { + s16 angle_z; +} mPlayer_main_demo_geton_boat_sitdown_c; + +typedef struct player_main_demo_getoff_boat_standup_s { + xyz_t pos; + s16 angle_y; + s16 angle_z; +} mPlayer_main_demo_getoff_boat_standup_c; + typedef union { mPlayer_main_intro_c intro; mPlayer_main_return_demo_c return_demo; mPlayer_main_return_outdoor_c return_outdoor; mPlayer_main_return_outdoor2_c return_outdoor2; + mPlayer_main_pickup_c pickup; + mPlayer_main_pickup_jump_c pickup_jump; + mPlayer_main_get_scoop_c get_scoop; + mPlayer_main_putaway_scoop_c putaway_scoop; + mPlayer_main_wash_car_c wash_car; + mPlayer_main_demo_geton_boat_sitdown_c demo_geton_boat_sitdown; + mPlayer_main_demo_getoff_boat_standup_c demo_getoff_boat_standup; u8 force_size[72]; // TEMP } mPlayer_main_data; @@ -1255,8 +1349,8 @@ struct player_actor_s { /* 0x0000 */ ACTOR actor_class; /* 0x0174 */ cKF_SkeletonInfo_R_c keyframe0; /* 0x01E4 */ cKF_SkeletonInfo_R_c keyframe1; - /* 0x0252 */ s_xyz joint_data[27]; - /* 0x02F4 */ s_xyz morph_data[27]; + /* 0x0252 */ s_xyz joint_data[mPlayer_JOINT_NUM + 1]; + /* 0x02F4 */ s_xyz morph_data[mPlayer_JOINT_NUM + 1]; /* 0x0398 */ Mtx work_mtx[2][13]; /* swapped between frames */ /* 0x0A18 */ cKF_SkeletonInfo_R_c item_keyframe; /* for item animations */ /* 0x0A88 */ s_xyz item_joint_data[8]; @@ -1297,7 +1391,8 @@ struct player_actor_s { /* 0x0E50 */ xyz_t net_bot_col_pos; /* 0x0E5C */ s_xyz net_angle; /* 0x0E64 */ ACTOR* umbrella_actor; - /* 0x0E68 */ u8 _0E68[0x1010 - 0x0E68]; // TODO + /* 0x0E68 */ u8 _0E68[0x1004 - 0x0E68]; // TODO + /* 0x1004 */ xyz_t scoop_pos; /* 0x1010 */ ClObjPipe_c col_pipe; /* 0x102C */ xyz_t head_pos; /* 0x1038 */ xyz_t feel_pos; @@ -1306,9 +1401,29 @@ struct player_actor_s { /* 0x105C */ xyz_t left_hand_pos; /* 0x1068 */ MtxF right_hand_mtx; /* 0x10A8 */ MtxF left_hand_mtx; - /* 0x10E8 */ u8 _10E8[0x1174 - 0x10E8]; // TODO + /* 0x10E8 */ xyz_t right_foot_pos; + /* 0x10F4 */ xyz_t left_foot_pos; + /* 0x1100 */ s_xyz right_foot_angle; + /* 0x1106 */ s_xyz left_foot_angle; + /* 0x110C */ int draw_effect_idx; // subtract 1 for the effect id + /* 0x1110 */ s8 part_table[mPlayer_JOINT_NUM + 1]; + /* 0x112B */ s8 item_kind; + /* 0x112C */ int item_matrix_set; + /* 0x1130 */ xyz_t net_start_pos; + /* 0x113C */ xyz_t net_end_pos; + /* 0x1148 */ xyz_t other_item_start_pos; + /* 0x1154 */ xyz_t other_item_end_pos; + /* 0x1160 */ f32 other_item_move_dist; + /* 0x1164 */ s_xyz windmill_param; + /* 0x116A */ s_xyz windmill_angle; + /* 0x1170 */ int balloon_start_pos_set_flag; /* 0x1174 */ ACTOR* balloon_actor; - /* 0x1178 */ u8 _1178[0x11B4 - 0x1178]; // TODO + /* 0x1178 */ u8 _1178[0x1198 - 0x1178]; // TODO + /* 0x1198 */ s8 _1198; + /* 0x119A */ s_xyz head_angle; + /* 0x11A0 */ xyz_t force_position; + /* 0x11AC */ s_xyz force_angle; + /* 0x11B2 */ u8 force_position_angle_flag; /* 0x11B4 */ f32 shake_tree_timer[3]; /* 0x11C0 */ int shake_tree_ut_x[3]; /* 0x11CC */ int shake_tree_ut_z[3]; diff --git a/src/m_player.c b/src/m_player.c index dacf0daf..05c43db1 100644 --- a/src/m_player.c +++ b/src/m_player.c @@ -4,6 +4,9 @@ #include "m_common_data.h" #include "m_actor_shadow.h" #include "m_bgm.h" +#include "sys_matrix.h" +#include "ac_tools.h" +#include "m_rcp.h" /* Common */ #include "../src/m_player_controller.c_inc" @@ -152,11 +155,11 @@ /* TODO: looks like all the c_inc files are included before the player funcs in this file based on rodata ordering */ -static void Player_actor_ct_forCorect(PLAYER_ACTOR* player, GAME* game); -static void Player_actor_set_eye_pattern(PLAYER_ACTOR* player, int idx); -static void Player_actor_set_mouth_pattern(PLAYER_ACTOR* player, int idx); -static void Player_actor_Set_old_sound_frame_counter(PLAYER_ACTOR* player); -static void Player_actor_change_proc_index(PLAYER_ACTOR* player, GAME* game); +static void Player_actor_ct_forCorect(ACTOR* actorx, GAME* game); +static void Player_actor_set_eye_pattern(ACTOR* actorx, int idx); +static void Player_actor_set_mouth_pattern(ACTOR* actorx, int idx); +static void Player_actor_Set_old_sound_frame_counter(ACTOR* actorx); +static void Player_actor_change_proc_index(ACTOR* actorx, GAME* game); static int Player_actor_request_main_invade_all(GAME*, int); static int Player_actor_request_main_refuse(GAME*, int); @@ -234,7 +237,8 @@ static int Player_actor_request_main_walk_all(GAME*, xyz_t*, f32, int, int); static int Player_actor_request_main_run_all(GAME*, f32, int, int); static int Player_actor_request_main_dash_all(GAME*, f32, int, int); -static void Player_actor_init_value(PLAYER_ACTOR* player, GAME* game) { +static void Player_actor_init_value(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; GAME_PLAY* play = (GAME_PLAY*)game; int* shake_tree_table_ut_x_p; int* shake_tree_table_ut_z_p; @@ -246,10 +250,9 @@ static void Player_actor_init_value(PLAYER_ACTOR* player, GAME* game) { player->actor_class.scale.x = 0.01f; player->actor_class.scale.y = 0.01f; player->actor_class.scale.z = 0.01f; - player->balloon_actor = - Actor_info_make_actor(&play->actor_info, game, mAc_PROFILE_BALLOON, player->actor_class.world.position.x, - player->actor_class.world.position.y, player->actor_class.world.position.z, 0, 0, 0, -1, - -1, -1, EMPTY_NO, -1, -1, -1); + player->balloon_actor = Actor_info_make_actor(&play->actor_info, game, mAc_PROFILE_BALLOON, + actorx->world.position.x, actorx->world.position.y, + actorx->world.position.z, 0, 0, 0, -1, -1, -1, EMPTY_NO, -1, -1, -1); player->animation0_idx = -1; player->animation1_idx = -1; player->_0DBC = -1; @@ -258,9 +261,9 @@ static void Player_actor_init_value(PLAYER_ACTOR* player, GAME* game) { player->item_shape_type[2] = -1; player->item_shape_type[3] = -1; - Player_actor_ct_forCorect(player, game); - Player_actor_set_eye_pattern(player, 0); - Player_actor_set_mouth_pattern(player, 0); + Player_actor_ct_forCorect(actorx, game); + Player_actor_set_eye_pattern(actorx, 0); + Player_actor_set_mouth_pattern(actorx, 0); player->request_main_invade_all_proc = &Player_actor_request_main_invade_all; player->request_main_refuse_all_proc = &Player_actor_request_main_refuse; @@ -346,38 +349,40 @@ static void Player_actor_init_value(PLAYER_ACTOR* player, GAME* game) { *radio_exercise_command_ring_buffer_p++ = -1; } - Player_actor_Set_old_sound_frame_counter(player); + Player_actor_Set_old_sound_frame_counter(actorx); } -static void Player_actor_ct(PLAYER_ACTOR* player, GAME* game) { +extern void Player_actor_ct(ACTOR* actorx, GAME* game) { GAME_PLAY* play = (GAME_PLAY*)game; if (mEv_CheckTitleDemo() > 0) { - player->actor_class.status_data.weight = 255; + actorx->status_data.weight = 255; } else { - player->actor_class.status_data.weight = 50; + actorx->status_data.weight = 50; } - Player_actor_init_value(player, game); + Player_actor_init_value(actorx, game); Common_Set(player_actor_exists, TRUE); - Player_actor_Check_player_sunburn_for_ct(player); // + Player_actor_Check_player_sunburn_for_ct(actorx); // mPlib_change_player_face(game); // - Player_actor_ct_other_func1(player, game); // - Player_actor_set_eye_PositionAndAngle(player); // + Player_actor_ct_other_func1(actorx, game); // + Player_actor_set_eye_PositionAndAngle(actorx); // Camera2_request_main_normal(play, 1, 1); - Shape_Info_init(&player->actor_class, 0.0f, &mAc_ActorShadowCircle, 18.0f, 18.0f); - player->actor_class.shape_info.ofs_y = 200.0f; + Shape_Info_init(actorx, 0.0f, &mAc_ActorShadowCircle, 18.0f, 18.0f); + actorx->shape_info.ofs_y = 200.0f; mPlib_Clear_change_data_from_submenu(); // Player_actor_request_main_dma(game, 41); // - Player_actor_change_proc_index(player, game); // + Player_actor_change_proc_index(actorx, game); // } -static void Player_actor_dt(PLAYER_ACTOR* player, GAME* game) { - Player_actor_dt_forCorect(player, game); // +extern void Player_actor_dt(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + Player_actor_dt_forCorect(actorx, game); // Common_Set(player_actor_exists, FALSE); mPlib_cancel_player_warp_forEvent(); // - Player_actor_Reset_bee_chase(player); // - Player_actor_Check_player_sunburn_for_dt(player); // + Player_actor_Reset_bee_chase(actorx); // + Player_actor_Check_player_sunburn_for_dt(actorx); // if (mEv_CheckTitleDemo() <= 0 && player->bgm_volume_mode != mPlayer_BGM_VOLUME_MODE_NORMAL) { switch (player->bgm_volume_mode) { @@ -391,17 +396,17 @@ static void Player_actor_dt(PLAYER_ACTOR* player, GAME* game) { } } -typedef void (*mPlayer_REQUEST_MAIN_CHANGE_FROM_SUBMENU_PROC)(PLAYER_ACTOR*, GAME*); +typedef void (*mPlayer_REQUEST_MAIN_CHANGE_FROM_SUBMENU_PROC)(ACTOR*, GAME*); -static void Player_actor_request_main_wait_from_submenu(PLAYER_ACTOR*, GAME*); -static void Player_actor_request_main_putin_scoop_from_submenu(PLAYER_ACTOR*, GAME*); -static void Player_actor_request_main_give_from_submenu(PLAYER_ACTOR*, GAME*); -static void Player_actor_request_main_demo_wait_from_submenu(PLAYER_ACTOR*, GAME*); -static void Player_actor_request_main_release_creature_from_submenu(PLAYER_ACTOR*, GAME*); -static void Player_actor_request_main_mail_land_from_submenu(PLAYER_ACTOR*, GAME*); -static void Player_actor_request_main_demo_get_golden_item_from_submenu(PLAYER_ACTOR*, GAME*); +static void Player_actor_request_main_wait_from_submenu(ACTOR*, GAME*); +static void Player_actor_request_main_putin_scoop_from_submenu(ACTOR*, GAME*); +static void Player_actor_request_main_give_from_submenu(ACTOR*, GAME*); +static void Player_actor_request_main_demo_wait_from_submenu(ACTOR*, GAME*); +static void Player_actor_request_main_release_creature_from_submenu(ACTOR*, GAME*); +static void Player_actor_request_main_mail_land_from_submenu(ACTOR*, GAME*); +static void Player_actor_request_main_demo_get_golden_item_from_submenu(ACTOR*, GAME*); -static void Player_actor_request_main_change_from_submenu(PLAYER_ACTOR* player, GAME* game) { +static void Player_actor_request_main_change_from_submenu(ACTOR* actorx, GAME* game) { static const mPlayer_REQUEST_MAIN_CHANGE_FROM_SUBMENU_PROC proc[] = { NULL, NULL, @@ -534,7 +539,7 @@ static void Player_actor_request_main_change_from_submenu(PLAYER_ACTOR* player, return; } - (*proc[idx])(player, game); + (*proc[idx])(actorx, game); } mPlib_Clear_change_data_from_submenu(); @@ -559,70 +564,70 @@ static void Player_actor_request_change_item(GAME* game) { } } -typedef void (*mPlayer_SETTLE_MAIN_PROC)(PLAYER_ACTOR*, GAME*); +typedef void (*mPlayer_SETTLE_MAIN_PROC)(ACTOR*, GAME*); -static void Player_actor_settle_main_Walk(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Turn_dash(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Wade(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Outdoor(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Push(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Pull(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Open_furniture(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Wait_open_furniture(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Close_furniture(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Lie_bed(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Roll_bed(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Standup_bed(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Pickup_jump(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Pickup_furniture(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Pickup_exchange(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Sitdown(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Standup(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Reflect_axe(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Broken_axe(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Slip_net(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Swing_net(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Notice_net(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Collect_rod(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Fly_rod(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Notice_rod(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Reflect_scoop(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Get_scoop(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Talk(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Recieve_putaway(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Give_wait(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Takeout_item(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Demo_wait(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Demo_geton_train(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Demo_getoff_train(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Demo_wade(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Release_creature(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Wash_car(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Rotate_octagon(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Throw_money(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Pray(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Mail_jump(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Ready_pitfall(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Fall_pitfall(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Struggle_pitfall(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Climbup_pitfall(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Notice_bee(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Shock(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Knock_door(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Wade_snowball(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Complete_payment(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Fail_emu(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Notice_mosquito(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Switch_on_lighthouse(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Radio_exercise(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Demo_geton_boat(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Demo_geton_boat_wade(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Demo_getoff_boat_standup(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Demo_getoff_boat(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Demo_get_golden_item(PLAYER_ACTOR*, GAME*); -static void Player_actor_settle_main_Demo_get_golden_item2(PLAYER_ACTOR*, GAME*); +static void Player_actor_settle_main_Walk(ACTOR*, GAME*); +static void Player_actor_settle_main_Turn_dash(ACTOR*, GAME*); +static void Player_actor_settle_main_Wade(ACTOR*, GAME*); +static void Player_actor_settle_main_Outdoor(ACTOR*, GAME*); +static void Player_actor_settle_main_Push(ACTOR*, GAME*); +static void Player_actor_settle_main_Pull(ACTOR*, GAME*); +static void Player_actor_settle_main_Open_furniture(ACTOR*, GAME*); +static void Player_actor_settle_main_Wait_open_furniture(ACTOR*, GAME*); +static void Player_actor_settle_main_Close_furniture(ACTOR*, GAME*); +static void Player_actor_settle_main_Lie_bed(ACTOR*, GAME*); +static void Player_actor_settle_main_Roll_bed(ACTOR*, GAME*); +static void Player_actor_settle_main_Standup_bed(ACTOR*, GAME*); +static void Player_actor_settle_main_Pickup_jump(ACTOR*, GAME*); +static void Player_actor_settle_main_Pickup_furniture(ACTOR*, GAME*); +static void Player_actor_settle_main_Pickup_exchange(ACTOR*, GAME*); +static void Player_actor_settle_main_Sitdown(ACTOR*, GAME*); +static void Player_actor_settle_main_Standup(ACTOR*, GAME*); +static void Player_actor_settle_main_Reflect_axe(ACTOR*, GAME*); +static void Player_actor_settle_main_Broken_axe(ACTOR*, GAME*); +static void Player_actor_settle_main_Slip_net(ACTOR*, GAME*); +static void Player_actor_settle_main_Swing_net(ACTOR*, GAME*); +static void Player_actor_settle_main_Notice_net(ACTOR*, GAME*); +static void Player_actor_settle_main_Collect_rod(ACTOR*, GAME*); +static void Player_actor_settle_main_Fly_rod(ACTOR*, GAME*); +static void Player_actor_settle_main_Notice_rod(ACTOR*, GAME*); +static void Player_actor_settle_main_Reflect_scoop(ACTOR*, GAME*); +static void Player_actor_settle_main_Get_scoop(ACTOR*, GAME*); +static void Player_actor_settle_main_Talk(ACTOR*, GAME*); +static void Player_actor_settle_main_Recieve_putaway(ACTOR*, GAME*); +static void Player_actor_settle_main_Give_wait(ACTOR*, GAME*); +static void Player_actor_settle_main_Takeout_item(ACTOR*, GAME*); +static void Player_actor_settle_main_Demo_wait(ACTOR*, GAME*); +static void Player_actor_settle_main_Demo_geton_train(ACTOR*, GAME*); +static void Player_actor_settle_main_Demo_getoff_train(ACTOR*, GAME*); +static void Player_actor_settle_main_Demo_wade(ACTOR*, GAME*); +static void Player_actor_settle_main_Release_creature(ACTOR*, GAME*); +static void Player_actor_settle_main_Wash_car(ACTOR*, GAME*); +static void Player_actor_settle_main_Rotate_octagon(ACTOR*, GAME*); +static void Player_actor_settle_main_Throw_money(ACTOR*, GAME*); +static void Player_actor_settle_main_Pray(ACTOR*, GAME*); +static void Player_actor_settle_main_Mail_jump(ACTOR*, GAME*); +static void Player_actor_settle_main_Ready_pitfall(ACTOR*, GAME*); +static void Player_actor_settle_main_Fall_pitfall(ACTOR*, GAME*); +static void Player_actor_settle_main_Struggle_pitfall(ACTOR*, GAME*); +static void Player_actor_settle_main_Climbup_pitfall(ACTOR*, GAME*); +static void Player_actor_settle_main_Notice_bee(ACTOR*, GAME*); +static void Player_actor_settle_main_Shock(ACTOR*, GAME*); +static void Player_actor_settle_main_Knock_door(ACTOR*, GAME*); +static void Player_actor_settle_main_Wade_snowball(ACTOR*, GAME*); +static void Player_actor_settle_main_Complete_payment(ACTOR*, GAME*); +static void Player_actor_settle_main_Fail_emu(ACTOR*, GAME*); +static void Player_actor_settle_main_Notice_mosquito(ACTOR*, GAME*); +static void Player_actor_settle_main_Switch_on_lighthouse(ACTOR*, GAME*); +static void Player_actor_settle_main_Radio_exercise(ACTOR*, GAME*); +static void Player_actor_settle_main_Demo_geton_boat(ACTOR*, GAME*); +static void Player_actor_settle_main_Demo_geton_boat_wade(ACTOR*, GAME*); +static void Player_actor_settle_main_Demo_getoff_boat_standup(ACTOR*, GAME*); +static void Player_actor_settle_main_Demo_getoff_boat(ACTOR*, GAME*); +static void Player_actor_settle_main_Demo_get_golden_item(ACTOR*, GAME*); +static void Player_actor_settle_main_Demo_get_golden_item2(ACTOR*, GAME*); -static void Player_actor_settle_main(PLAYER_ACTOR* player, GAME* game) { +static void Player_actor_settle_main(ACTOR* actorx, GAME* game) { static const mPlayer_SETTLE_MAIN_PROC proc[] = { NULL, NULL, @@ -747,142 +752,143 @@ static void Player_actor_settle_main(PLAYER_ACTOR* player, GAME* game) { NULL, }; + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; int idx = player->now_main_index; if (mPlayer_MAIN_INDEX_VALID(idx) != FALSE) { if (proc[idx] != NULL) { - (*proc[idx])(player, game); + (*proc[idx])(actorx, game); } - Player_actor_settle_main_other_func2(player, game); // + Player_actor_settle_main_other_func2(actorx, game); // } } -typedef void (*mPlayer_SETUP_MAIN_PROC)(PLAYER_ACTOR*, GAME*); +typedef void (*mPlayer_SETUP_MAIN_PROC)(ACTOR*, GAME*); -static void Player_actor_setup_main_Dma(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Intro(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Refuse(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Refuse_pickup(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Return_demo(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Return_outdoor(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Return_outdoor2(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Wait(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Walk(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Run(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Dash(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Tumble(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Tumble_getup(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Turn_dash(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Fall(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Wade(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Door(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Outdoor(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Invade(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Hold(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Push(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Pull(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Rotate_furniture(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Open_furniture(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Wait_open_furniture(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Close_furniture(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Lie_bed(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Wait_bed(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Roll_bed(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Standup_bed(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Pickup(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Pickup_jump(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Pickup_furniture(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Pickup_exchange(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Sitdown(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Sitdown_wait(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Standup(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Swing_axe(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Air_axe(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Reflect_axe(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Broken_axe(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Slip_net(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Ready_net(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Ready_walk_net(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Swing_net(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Pull_net(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Stop_net(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Notice_net(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Putaway_net(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Ready_rod(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Cast_rod(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Air_rod(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Relax_rod(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Collect_rod(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Vib_rod(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Fly_rod(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Notice_rod(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Putaway_rod(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Dig_scoop(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Fill_scoop(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Reflect_scoop(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Air_scoop(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Get_scoop(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Putaway_scoop(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Putin_scoop(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Talk(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Recieve_wait(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Recieve_stretch(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Recieve(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Recieve_putaway(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Give(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Give_wait(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Takeout_item(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Putin_item(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Demo_wait(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Demo_walk(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Demo_geton_train(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Demo_geton_train_wait(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Demo_getoff_train(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Demo_standing_train(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Demo_wade(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Hide(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Groundhog(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Release_creature(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Wash_car(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Tired(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Rotate_octagon(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Throw_money(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Pray(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Shake_tree(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Mail_jump(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Mail_land(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Ready_pitfall(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Fall_pitfall(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Struggle_pitfall(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Climbup_pitfall(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Stung_bee(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Notice_bee(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Remove_grass(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Shock(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Knock_door(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Change_cloth(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Push_snowball(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Rotate_umbrella(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Wade_snowball(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Complete_payment(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Fail_emu(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Stung_mosquito(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Notice_mosquito(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Swing_fan(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Switch_on_lighthouse(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Radio_exercise(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Demo_geton_boat(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Demo_geton_boat_sitdown(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Demo_geton_boat_wait(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Demo_geton_boat_wade(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Demo_getoff_boat_standup(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Demo_getoff_boat(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Demo_get_golden_item(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Demo_get_golden_item2(PLAYER_ACTOR*, GAME*); -static void Player_actor_setup_main_Demo_get_golden_axe_wait(PLAYER_ACTOR*, GAME*); +static void Player_actor_setup_main_Dma(ACTOR*, GAME*); +static void Player_actor_setup_main_Intro(ACTOR*, GAME*); +static void Player_actor_setup_main_Refuse(ACTOR*, GAME*); +static void Player_actor_setup_main_Refuse_pickup(ACTOR*, GAME*); +static void Player_actor_setup_main_Return_demo(ACTOR*, GAME*); +static void Player_actor_setup_main_Return_outdoor(ACTOR*, GAME*); +static void Player_actor_setup_main_Return_outdoor2(ACTOR*, GAME*); +static void Player_actor_setup_main_Wait(ACTOR*, GAME*); +static void Player_actor_setup_main_Walk(ACTOR*, GAME*); +static void Player_actor_setup_main_Run(ACTOR*, GAME*); +static void Player_actor_setup_main_Dash(ACTOR*, GAME*); +static void Player_actor_setup_main_Tumble(ACTOR*, GAME*); +static void Player_actor_setup_main_Tumble_getup(ACTOR*, GAME*); +static void Player_actor_setup_main_Turn_dash(ACTOR*, GAME*); +static void Player_actor_setup_main_Fall(ACTOR*, GAME*); +static void Player_actor_setup_main_Wade(ACTOR*, GAME*); +static void Player_actor_setup_main_Door(ACTOR*, GAME*); +static void Player_actor_setup_main_Outdoor(ACTOR*, GAME*); +static void Player_actor_setup_main_Invade(ACTOR*, GAME*); +static void Player_actor_setup_main_Hold(ACTOR*, GAME*); +static void Player_actor_setup_main_Push(ACTOR*, GAME*); +static void Player_actor_setup_main_Pull(ACTOR*, GAME*); +static void Player_actor_setup_main_Rotate_furniture(ACTOR*, GAME*); +static void Player_actor_setup_main_Open_furniture(ACTOR*, GAME*); +static void Player_actor_setup_main_Wait_open_furniture(ACTOR*, GAME*); +static void Player_actor_setup_main_Close_furniture(ACTOR*, GAME*); +static void Player_actor_setup_main_Lie_bed(ACTOR*, GAME*); +static void Player_actor_setup_main_Wait_bed(ACTOR*, GAME*); +static void Player_actor_setup_main_Roll_bed(ACTOR*, GAME*); +static void Player_actor_setup_main_Standup_bed(ACTOR*, GAME*); +static void Player_actor_setup_main_Pickup(ACTOR*, GAME*); +static void Player_actor_setup_main_Pickup_jump(ACTOR*, GAME*); +static void Player_actor_setup_main_Pickup_furniture(ACTOR*, GAME*); +static void Player_actor_setup_main_Pickup_exchange(ACTOR*, GAME*); +static void Player_actor_setup_main_Sitdown(ACTOR*, GAME*); +static void Player_actor_setup_main_Sitdown_wait(ACTOR*, GAME*); +static void Player_actor_setup_main_Standup(ACTOR*, GAME*); +static void Player_actor_setup_main_Swing_axe(ACTOR*, GAME*); +static void Player_actor_setup_main_Air_axe(ACTOR*, GAME*); +static void Player_actor_setup_main_Reflect_axe(ACTOR*, GAME*); +static void Player_actor_setup_main_Broken_axe(ACTOR*, GAME*); +static void Player_actor_setup_main_Slip_net(ACTOR*, GAME*); +static void Player_actor_setup_main_Ready_net(ACTOR*, GAME*); +static void Player_actor_setup_main_Ready_walk_net(ACTOR*, GAME*); +static void Player_actor_setup_main_Swing_net(ACTOR*, GAME*); +static void Player_actor_setup_main_Pull_net(ACTOR*, GAME*); +static void Player_actor_setup_main_Stop_net(ACTOR*, GAME*); +static void Player_actor_setup_main_Notice_net(ACTOR*, GAME*); +static void Player_actor_setup_main_Putaway_net(ACTOR*, GAME*); +static void Player_actor_setup_main_Ready_rod(ACTOR*, GAME*); +static void Player_actor_setup_main_Cast_rod(ACTOR*, GAME*); +static void Player_actor_setup_main_Air_rod(ACTOR*, GAME*); +static void Player_actor_setup_main_Relax_rod(ACTOR*, GAME*); +static void Player_actor_setup_main_Collect_rod(ACTOR*, GAME*); +static void Player_actor_setup_main_Vib_rod(ACTOR*, GAME*); +static void Player_actor_setup_main_Fly_rod(ACTOR*, GAME*); +static void Player_actor_setup_main_Notice_rod(ACTOR*, GAME*); +static void Player_actor_setup_main_Putaway_rod(ACTOR*, GAME*); +static void Player_actor_setup_main_Dig_scoop(ACTOR*, GAME*); +static void Player_actor_setup_main_Fill_scoop(ACTOR*, GAME*); +static void Player_actor_setup_main_Reflect_scoop(ACTOR*, GAME*); +static void Player_actor_setup_main_Air_scoop(ACTOR*, GAME*); +static void Player_actor_setup_main_Get_scoop(ACTOR*, GAME*); +static void Player_actor_setup_main_Putaway_scoop(ACTOR*, GAME*); +static void Player_actor_setup_main_Putin_scoop(ACTOR*, GAME*); +static void Player_actor_setup_main_Talk(ACTOR*, GAME*); +static void Player_actor_setup_main_Recieve_wait(ACTOR*, GAME*); +static void Player_actor_setup_main_Recieve_stretch(ACTOR*, GAME*); +static void Player_actor_setup_main_Recieve(ACTOR*, GAME*); +static void Player_actor_setup_main_Recieve_putaway(ACTOR*, GAME*); +static void Player_actor_setup_main_Give(ACTOR*, GAME*); +static void Player_actor_setup_main_Give_wait(ACTOR*, GAME*); +static void Player_actor_setup_main_Takeout_item(ACTOR*, GAME*); +static void Player_actor_setup_main_Putin_item(ACTOR*, GAME*); +static void Player_actor_setup_main_Demo_wait(ACTOR*, GAME*); +static void Player_actor_setup_main_Demo_walk(ACTOR*, GAME*); +static void Player_actor_setup_main_Demo_geton_train(ACTOR*, GAME*); +static void Player_actor_setup_main_Demo_geton_train_wait(ACTOR*, GAME*); +static void Player_actor_setup_main_Demo_getoff_train(ACTOR*, GAME*); +static void Player_actor_setup_main_Demo_standing_train(ACTOR*, GAME*); +static void Player_actor_setup_main_Demo_wade(ACTOR*, GAME*); +static void Player_actor_setup_main_Hide(ACTOR*, GAME*); +static void Player_actor_setup_main_Groundhog(ACTOR*, GAME*); +static void Player_actor_setup_main_Release_creature(ACTOR*, GAME*); +static void Player_actor_setup_main_Wash_car(ACTOR*, GAME*); +static void Player_actor_setup_main_Tired(ACTOR*, GAME*); +static void Player_actor_setup_main_Rotate_octagon(ACTOR*, GAME*); +static void Player_actor_setup_main_Throw_money(ACTOR*, GAME*); +static void Player_actor_setup_main_Pray(ACTOR*, GAME*); +static void Player_actor_setup_main_Shake_tree(ACTOR*, GAME*); +static void Player_actor_setup_main_Mail_jump(ACTOR*, GAME*); +static void Player_actor_setup_main_Mail_land(ACTOR*, GAME*); +static void Player_actor_setup_main_Ready_pitfall(ACTOR*, GAME*); +static void Player_actor_setup_main_Fall_pitfall(ACTOR*, GAME*); +static void Player_actor_setup_main_Struggle_pitfall(ACTOR*, GAME*); +static void Player_actor_setup_main_Climbup_pitfall(ACTOR*, GAME*); +static void Player_actor_setup_main_Stung_bee(ACTOR*, GAME*); +static void Player_actor_setup_main_Notice_bee(ACTOR*, GAME*); +static void Player_actor_setup_main_Remove_grass(ACTOR*, GAME*); +static void Player_actor_setup_main_Shock(ACTOR*, GAME*); +static void Player_actor_setup_main_Knock_door(ACTOR*, GAME*); +static void Player_actor_setup_main_Change_cloth(ACTOR*, GAME*); +static void Player_actor_setup_main_Push_snowball(ACTOR*, GAME*); +static void Player_actor_setup_main_Rotate_umbrella(ACTOR*, GAME*); +static void Player_actor_setup_main_Wade_snowball(ACTOR*, GAME*); +static void Player_actor_setup_main_Complete_payment(ACTOR*, GAME*); +static void Player_actor_setup_main_Fail_emu(ACTOR*, GAME*); +static void Player_actor_setup_main_Stung_mosquito(ACTOR*, GAME*); +static void Player_actor_setup_main_Notice_mosquito(ACTOR*, GAME*); +static void Player_actor_setup_main_Swing_fan(ACTOR*, GAME*); +static void Player_actor_setup_main_Switch_on_lighthouse(ACTOR*, GAME*); +static void Player_actor_setup_main_Radio_exercise(ACTOR*, GAME*); +static void Player_actor_setup_main_Demo_geton_boat(ACTOR*, GAME*); +static void Player_actor_setup_main_Demo_geton_boat_sitdown(ACTOR*, GAME*); +static void Player_actor_setup_main_Demo_geton_boat_wait(ACTOR*, GAME*); +static void Player_actor_setup_main_Demo_geton_boat_wade(ACTOR*, GAME*); +static void Player_actor_setup_main_Demo_getoff_boat_standup(ACTOR*, GAME*); +static void Player_actor_setup_main_Demo_getoff_boat(ACTOR*, GAME*); +static void Player_actor_setup_main_Demo_get_golden_item(ACTOR*, GAME*); +static void Player_actor_setup_main_Demo_get_golden_item2(ACTOR*, GAME*); +static void Player_actor_setup_main_Demo_get_golden_axe_wait(ACTOR*, GAME*); -static int Player_actor_change_main_index(PLAYER_ACTOR* player, GAME* game) { +static int Player_actor_change_main_index(ACTOR* actorx, GAME* game) { static const mPlayer_SETUP_MAIN_PROC proc[] = { &Player_actor_setup_main_Dma, &Player_actor_setup_main_Intro, @@ -1006,6 +1012,7 @@ static int Player_actor_change_main_index(PLAYER_ACTOR* player, GAME* game) { &Player_actor_setup_main_Demo_get_golden_item2, &Player_actor_setup_main_Demo_get_golden_axe_wait, }; + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; if (player->requested_main_index_changed) { int idx = player->requested_main_index; @@ -1014,151 +1021,153 @@ static int Player_actor_change_main_index(PLAYER_ACTOR* player, GAME* game) { return FALSE; } - idx = Player_actor_CheckAndRequest_KnockDoor(player, game, - Player_actor_CheckAndRequest_ItemInOut(player, game, idx)); // - Player_actor_Set_bgm_volume(player, idx); // - Player_actor_settle_main(player, game); - Player_actor_Reset_unable_hand_item_in_demo(player, idx); // - Player_actor_Reset_able_hand_all_item_in_demo(player, idx); // - Player_actor_Reset_able_force_speak_label(player, idx); // - Player_actor_change_main_index_other_func1(player, game); // - (*proc[idx])(player, game); - Player_actor_change_main_index_other_func2(player, game); // + idx = Player_actor_CheckAndRequest_KnockDoor(actorx, game, + Player_actor_CheckAndRequest_ItemInOut(actorx, game, idx)); // + Player_actor_Set_bgm_volume(actorx, idx); // + Player_actor_settle_main(actorx, game); + Player_actor_Reset_unable_hand_item_in_demo(actorx, idx); // + Player_actor_Reset_able_hand_all_item_in_demo(actorx, idx); // + Player_actor_Reset_able_force_speak_label(actorx, idx); // + Player_actor_change_main_index_other_func1(actorx, game); // + (*proc[idx])(actorx, game); + Player_actor_change_main_index_other_func2(actorx, game); // return TRUE; } return FALSE; } -static void Player_actor_change_proc_index(PLAYER_ACTOR* player, GAME* game) { - player->changed_main_index = Player_actor_change_main_index(player, game); +static void Player_actor_change_proc_index(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + player->changed_main_index = Player_actor_change_main_index(actorx, game); } -typedef void (*mPlayer_MAIN_PROC)(PLAYER_ACTOR*, GAME*); +typedef void (*mPlayer_MAIN_PROC)(ACTOR*, GAME*); -static void Player_actor_main_Dma(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Intro(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Refuse(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Refuse_pickup(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Return_demo(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Return_outdoor(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Return_outdoor2(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Wait(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Walk(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Run(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Dash(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Tumble(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Tumble_getup(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Turn_dash(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Fall(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Wade(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Door(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Outdoor(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Invade(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Hold(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Push(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Pull(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Rotate_furniture(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Open_furniture(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Wait_open_furniture(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Close_furniture(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Lie_bed(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Wait_bed(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Roll_bed(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Standup_bed(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Pickup(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Pickup_jump(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Pickup_furniture(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Pickup_exchange(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Sitdown(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Sitdown_wait(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Standup(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Swing_axe(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Air_axe(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Reflect_axe(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Broken_axe(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Slip_net(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Ready_net(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Ready_walk_net(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Swing_net(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Pull_net(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Stop_net(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Notice_net(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Putaway_net(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Ready_rod(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Cast_rod(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Air_rod(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Relax_rod(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Collect_rod(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Vib_rod(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Fly_rod(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Notice_rod(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Putaway_rod(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Dig_scoop(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Fill_scoop(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Reflect_scoop(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Air_scoop(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Get_scoop(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Putaway_scoop(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Putin_scoop(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Talk(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Recieve_wait(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Recieve_stretch(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Recieve(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Recieve_putaway(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Give(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Give_wait(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Takeout_item(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Putin_item(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Demo_wait(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Demo_walk(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Demo_geton_train(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Demo_geton_train_wait(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Demo_getoff_train(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Demo_standing_train(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Demo_wade(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Hide(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Groundhog(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Release_creature(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Wash_car(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Tired(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Rotate_octagon(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Throw_money(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Pray(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Shake_tree(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Mail_jump(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Mail_land(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Ready_pitfall(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Fall_pitfall(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Struggle_pitfall(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Climbup_pitfall(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Stung_bee(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Notice_bee(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Remove_grass(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Shock(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Knock_door(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Change_cloth(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Push_snowball(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Rotate_umbrella(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Wade_snowball(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Complete_payment(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Fail_emu(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Stung_mosquito(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Notice_mosquito(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Swing_fan(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Switch_on_lighthouse(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Radio_exercise(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Demo_geton_boat(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Demo_geton_boat_sitdown(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Demo_geton_boat_wait(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Demo_geton_boat_wade(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Demo_getoff_boat_standup(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Demo_getoff_boat(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Demo_get_golden_item(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Demo_get_golden_item2(PLAYER_ACTOR*, GAME*); -static void Player_actor_main_Demo_get_golden_axe_wait(PLAYER_ACTOR*, GAME*); +static void Player_actor_main_Dma(ACTOR*, GAME*); +static void Player_actor_main_Intro(ACTOR*, GAME*); +static void Player_actor_main_Refuse(ACTOR*, GAME*); +static void Player_actor_main_Refuse_pickup(ACTOR*, GAME*); +static void Player_actor_main_Return_demo(ACTOR*, GAME*); +static void Player_actor_main_Return_outdoor(ACTOR*, GAME*); +static void Player_actor_main_Return_outdoor2(ACTOR*, GAME*); +static void Player_actor_main_Wait(ACTOR*, GAME*); +static void Player_actor_main_Walk(ACTOR*, GAME*); +static void Player_actor_main_Run(ACTOR*, GAME*); +static void Player_actor_main_Dash(ACTOR*, GAME*); +static void Player_actor_main_Tumble(ACTOR*, GAME*); +static void Player_actor_main_Tumble_getup(ACTOR*, GAME*); +static void Player_actor_main_Turn_dash(ACTOR*, GAME*); +static void Player_actor_main_Fall(ACTOR*, GAME*); +static void Player_actor_main_Wade(ACTOR*, GAME*); +static void Player_actor_main_Door(ACTOR*, GAME*); +static void Player_actor_main_Outdoor(ACTOR*, GAME*); +static void Player_actor_main_Invade(ACTOR*, GAME*); +static void Player_actor_main_Hold(ACTOR*, GAME*); +static void Player_actor_main_Push(ACTOR*, GAME*); +static void Player_actor_main_Pull(ACTOR*, GAME*); +static void Player_actor_main_Rotate_furniture(ACTOR*, GAME*); +static void Player_actor_main_Open_furniture(ACTOR*, GAME*); +static void Player_actor_main_Wait_open_furniture(ACTOR*, GAME*); +static void Player_actor_main_Close_furniture(ACTOR*, GAME*); +static void Player_actor_main_Lie_bed(ACTOR*, GAME*); +static void Player_actor_main_Wait_bed(ACTOR*, GAME*); +static void Player_actor_main_Roll_bed(ACTOR*, GAME*); +static void Player_actor_main_Standup_bed(ACTOR*, GAME*); +static void Player_actor_main_Pickup(ACTOR*, GAME*); +static void Player_actor_main_Pickup_jump(ACTOR*, GAME*); +static void Player_actor_main_Pickup_furniture(ACTOR*, GAME*); +static void Player_actor_main_Pickup_exchange(ACTOR*, GAME*); +static void Player_actor_main_Sitdown(ACTOR*, GAME*); +static void Player_actor_main_Sitdown_wait(ACTOR*, GAME*); +static void Player_actor_main_Standup(ACTOR*, GAME*); +static void Player_actor_main_Swing_axe(ACTOR*, GAME*); +static void Player_actor_main_Air_axe(ACTOR*, GAME*); +static void Player_actor_main_Reflect_axe(ACTOR*, GAME*); +static void Player_actor_main_Broken_axe(ACTOR*, GAME*); +static void Player_actor_main_Slip_net(ACTOR*, GAME*); +static void Player_actor_main_Ready_net(ACTOR*, GAME*); +static void Player_actor_main_Ready_walk_net(ACTOR*, GAME*); +static void Player_actor_main_Swing_net(ACTOR*, GAME*); +static void Player_actor_main_Pull_net(ACTOR*, GAME*); +static void Player_actor_main_Stop_net(ACTOR*, GAME*); +static void Player_actor_main_Notice_net(ACTOR*, GAME*); +static void Player_actor_main_Putaway_net(ACTOR*, GAME*); +static void Player_actor_main_Ready_rod(ACTOR*, GAME*); +static void Player_actor_main_Cast_rod(ACTOR*, GAME*); +static void Player_actor_main_Air_rod(ACTOR*, GAME*); +static void Player_actor_main_Relax_rod(ACTOR*, GAME*); +static void Player_actor_main_Collect_rod(ACTOR*, GAME*); +static void Player_actor_main_Vib_rod(ACTOR*, GAME*); +static void Player_actor_main_Fly_rod(ACTOR*, GAME*); +static void Player_actor_main_Notice_rod(ACTOR*, GAME*); +static void Player_actor_main_Putaway_rod(ACTOR*, GAME*); +static void Player_actor_main_Dig_scoop(ACTOR*, GAME*); +static void Player_actor_main_Fill_scoop(ACTOR*, GAME*); +static void Player_actor_main_Reflect_scoop(ACTOR*, GAME*); +static void Player_actor_main_Air_scoop(ACTOR*, GAME*); +static void Player_actor_main_Get_scoop(ACTOR*, GAME*); +static void Player_actor_main_Putaway_scoop(ACTOR*, GAME*); +static void Player_actor_main_Putin_scoop(ACTOR*, GAME*); +static void Player_actor_main_Talk(ACTOR*, GAME*); +static void Player_actor_main_Recieve_wait(ACTOR*, GAME*); +static void Player_actor_main_Recieve_stretch(ACTOR*, GAME*); +static void Player_actor_main_Recieve(ACTOR*, GAME*); +static void Player_actor_main_Recieve_putaway(ACTOR*, GAME*); +static void Player_actor_main_Give(ACTOR*, GAME*); +static void Player_actor_main_Give_wait(ACTOR*, GAME*); +static void Player_actor_main_Takeout_item(ACTOR*, GAME*); +static void Player_actor_main_Putin_item(ACTOR*, GAME*); +static void Player_actor_main_Demo_wait(ACTOR*, GAME*); +static void Player_actor_main_Demo_walk(ACTOR*, GAME*); +static void Player_actor_main_Demo_geton_train(ACTOR*, GAME*); +static void Player_actor_main_Demo_geton_train_wait(ACTOR*, GAME*); +static void Player_actor_main_Demo_getoff_train(ACTOR*, GAME*); +static void Player_actor_main_Demo_standing_train(ACTOR*, GAME*); +static void Player_actor_main_Demo_wade(ACTOR*, GAME*); +static void Player_actor_main_Hide(ACTOR*, GAME*); +static void Player_actor_main_Groundhog(ACTOR*, GAME*); +static void Player_actor_main_Release_creature(ACTOR*, GAME*); +static void Player_actor_main_Wash_car(ACTOR*, GAME*); +static void Player_actor_main_Tired(ACTOR*, GAME*); +static void Player_actor_main_Rotate_octagon(ACTOR*, GAME*); +static void Player_actor_main_Throw_money(ACTOR*, GAME*); +static void Player_actor_main_Pray(ACTOR*, GAME*); +static void Player_actor_main_Shake_tree(ACTOR*, GAME*); +static void Player_actor_main_Mail_jump(ACTOR*, GAME*); +static void Player_actor_main_Mail_land(ACTOR*, GAME*); +static void Player_actor_main_Ready_pitfall(ACTOR*, GAME*); +static void Player_actor_main_Fall_pitfall(ACTOR*, GAME*); +static void Player_actor_main_Struggle_pitfall(ACTOR*, GAME*); +static void Player_actor_main_Climbup_pitfall(ACTOR*, GAME*); +static void Player_actor_main_Stung_bee(ACTOR*, GAME*); +static void Player_actor_main_Notice_bee(ACTOR*, GAME*); +static void Player_actor_main_Remove_grass(ACTOR*, GAME*); +static void Player_actor_main_Shock(ACTOR*, GAME*); +static void Player_actor_main_Knock_door(ACTOR*, GAME*); +static void Player_actor_main_Change_cloth(ACTOR*, GAME*); +static void Player_actor_main_Push_snowball(ACTOR*, GAME*); +static void Player_actor_main_Rotate_umbrella(ACTOR*, GAME*); +static void Player_actor_main_Wade_snowball(ACTOR*, GAME*); +static void Player_actor_main_Complete_payment(ACTOR*, GAME*); +static void Player_actor_main_Fail_emu(ACTOR*, GAME*); +static void Player_actor_main_Stung_mosquito(ACTOR*, GAME*); +static void Player_actor_main_Notice_mosquito(ACTOR*, GAME*); +static void Player_actor_main_Swing_fan(ACTOR*, GAME*); +static void Player_actor_main_Switch_on_lighthouse(ACTOR*, GAME*); +static void Player_actor_main_Radio_exercise(ACTOR*, GAME*); +static void Player_actor_main_Demo_geton_boat(ACTOR*, GAME*); +static void Player_actor_main_Demo_geton_boat_sitdown(ACTOR*, GAME*); +static void Player_actor_main_Demo_geton_boat_wait(ACTOR*, GAME*); +static void Player_actor_main_Demo_geton_boat_wade(ACTOR*, GAME*); +static void Player_actor_main_Demo_getoff_boat_standup(ACTOR*, GAME*); +static void Player_actor_main_Demo_getoff_boat(ACTOR*, GAME*); +static void Player_actor_main_Demo_get_golden_item(ACTOR*, GAME*); +static void Player_actor_main_Demo_get_golden_item2(ACTOR*, GAME*); +static void Player_actor_main_Demo_get_golden_axe_wait(ACTOR*, GAME*); -static void Player_actor_move(PLAYER_ACTOR* player, GAME* game) { +extern void Player_actor_move(ACTOR* actorx, GAME* game) { static const mPlayer_MAIN_PROC proc[] = { &Player_actor_main_Dma, &Player_actor_main_Intro, @@ -1282,23 +1291,24 @@ static void Player_actor_move(PLAYER_ACTOR* player, GAME* game) { &Player_actor_main_Demo_get_golden_item2, &Player_actor_main_Demo_get_golden_axe_wait, }; + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; int idx; - Player_actor_move_other_func1(player, game); // + Player_actor_move_other_func1(actorx, game); // idx = player->now_main_index; if (mPlayer_MAIN_INDEX_VALID(idx) == FALSE || proc[idx] == NULL) { return; } - (*proc[idx])(player, game); - Player_actor_move_other_func2(player, game); // + (*proc[idx])(actorx, game); + Player_actor_move_other_func2(actorx, game); // } -typedef void (*mPlayer_DRAW_PROC)(PLAYER_ACTOR*, GAME*); +typedef void (*mPlayer_DRAW_PROC)(ACTOR*, GAME*); -static void Player_actor_draw_Normal(PLAYER_ACTOR*, GAME*); +static void Player_actor_draw_Normal(ACTOR*, GAME*); -static void Player_actor_draw(PLAYER_ACTOR* player, GAME* game) { +extern void Player_actor_draw(ACTOR* actorx, GAME* game) { static const s8 data[] = { mPlayer_DRAW_TYPE_NONE, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, @@ -1338,14 +1348,15 @@ static void Player_actor_draw(PLAYER_ACTOR* player, GAME* game) { &Player_actor_draw_Normal, }; + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; int main_idx = player->now_main_index; if (mPlayer_MAIN_INDEX_VALID(main_idx) != FALSE) { int draw_idx = data[main_idx]; if (draw_idx >= 0 && draw_idx < mPlayer_DRAW_TYPE_NUM && proc[draw_idx] != NULL) { - (*proc[draw_idx])(player, game); - Player_actor_draw_other_func2(player, game); // + (*proc[draw_idx])(actorx, game); + Player_actor_draw_other_func2(actorx, game); // } } } diff --git a/src/m_player_call.c b/src/m_player_call.c index 92511a2a..f78d58e5 100644 --- a/src/m_player_call.c +++ b/src/m_player_call.c @@ -4,12 +4,10 @@ #include "m_name_table.h" #include "m_play.h" -typedef void (*PLAYER_ACTOR_PROC)(PLAYER_ACTOR*, GAME*); - -PLAYER_ACTOR_PROC Player_actor_ct_func; -PLAYER_ACTOR_PROC Player_actor_dt_func; -PLAYER_ACTOR_PROC Player_actor_move_func; -PLAYER_ACTOR_PROC Player_actor_draw_func; +static mActor_proc Player_actor_ct_func; +static mActor_proc Player_actor_dt_func; +static mActor_proc Player_actor_move_func; +static mActor_proc Player_actor_draw_func; void Player_actor_ct_call(ACTOR* actor, GAME* game); void Player_actor_dt_call(ACTOR* actor, GAME* game); @@ -45,26 +43,26 @@ static void Player_actor_ct_call(ACTOR* actor, GAME* game) { load_player(&play->submenu); initfunc(play); - Player_actor_ct_func((PLAYER_ACTOR*)actor, game); + Player_actor_ct_func(actor, game); } static void Player_actor_dt_call(ACTOR* actor, GAME* game) { GAME_PLAY* play = (GAME_PLAY*)game; load_player(&play->submenu); - Player_actor_dt_func((PLAYER_ACTOR*)actor, game); + Player_actor_dt_func(actor, game); } static void Player_actor_move_call(ACTOR* actor, GAME* game) { GAME_PLAY* play = (GAME_PLAY*)game; load_player(&play->submenu); - Player_actor_move_func((PLAYER_ACTOR*)actor, game); + Player_actor_move_func(actor, game); } static void Player_actor_draw_call(ACTOR* actor, GAME* game) { GAME_PLAY* play = (GAME_PLAY*)game; load_player(&play->submenu); - Player_actor_draw_func((PLAYER_ACTOR*)actor, game); + Player_actor_draw_func(actor, game); } diff --git a/src/m_player_draw.c_inc b/src/m_player_draw.c_inc index e69de29b..46d993ac 100644 --- a/src/m_player_draw.c_inc +++ b/src/m_player_draw.c_inc @@ -0,0 +1,377 @@ +static void Player_actor_draw_Before_head(ACTOR* actorx, GAME* game, cKF_SkeletonInfo_R_c* kf, Gfx** gfx_pp, u8* flag, + s_xyz* rot, xyz_t* pos) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + s_xyz* head_angle = &player->head_angle; + + if (head_angle->x != 0 || head_angle->y != 0 || head_angle->z != 0) { + Matrix_push(); + Matrix_mult(&MtxF_clear, 0); + Matrix_softcv3_mult(&ZeroVec, rot); + Matrix_RotateX(head_angle->x, 1); + Matrix_RotateY(head_angle->y, 1); + Matrix_to_rotate2_new(get_Matrix_now(), rot, 0); + Matrix_pull(); + } +} + +typedef void (*mPlayer_DRAW_BEFORE_PROC)(ACTOR*, GAME*, cKF_SkeletonInfo_R_c*, Gfx**, u8*, s_xyz*, xyz_t*); + +static int Player_actor_draw_Before(GAME* game, cKF_SkeletonInfo_R_c* kf, int joint_no, Gfx** gfx_pp, u8* work_flag, + void* arg, s_xyz* rot, xyz_t* pos) { + // clang-format off + static mPlayer_DRAW_BEFORE_PROC proc[] = { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + &Player_actor_draw_Before_head, + NULL, + }; + // clang-format on + + ACTOR* actorx = (ACTOR*)arg; + + if (joint_no >= 0 && joint_no < mPlayer_JOINT_NUM && proc[joint_no] != NULL) { + (*proc[joint_no])(actorx, game, kf, gfx_pp, work_flag, rot, pos); + } + + return TRUE; +} + +static void Player_actor_draw_After_Culc_FootMarkPos(xyz_t* pos, s_xyz* rot) { + Matrix_Position_Zero(pos); + Matrix_to_rotate_new(get_Matrix_now(), rot, 0); +} + +static void Player_actor_draw_After_head(ACTOR* actorx, GAME* game, cKF_SkeletonInfo_R_c* kf, Gfx** gfx_pp, u8* flag, + s_xyz* rot, xyz_t* pos) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + Matrix_Position_Zero(&player->head_pos); +} + +static void Player_actor_draw_After_Lfoot3(ACTOR* actorx, GAME* game, cKF_SkeletonInfo_R_c* kf, Gfx** gfx_pp, u8* flag, + s_xyz* rot, xyz_t* pos) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + Player_actor_draw_After_Culc_FootMarkPos(&player->left_foot_pos, &player->left_foot_angle); +} + +static void Player_actor_draw_After_Larm2(ACTOR* actorx, GAME* game, cKF_SkeletonInfo_R_c* kf, Gfx** gfx_pp, u8* flag, + s_xyz* rot, xyz_t* pos) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (player->item_matrix_set) { + HANDOVERITEM_ACTOR* hoi_actor = Common_Get(clip).handOverItem_clip->handOverItem_p; + + if (hoi_actor != NULL) { + Matrix_get(&hoi_actor->tools_class.matrix_work); + hoi_actor->tools_class.init_matrix = TRUE; + } + + player->item_matrix_set = FALSE; + } + + Matrix_Position_VecX(&player->left_hand_pos, 1100.0f); + Matrix_get(&player->left_hand_mtx); +} + +static void Player_actor_draw_After_Rfoot3(ACTOR* actorx, GAME* game, cKF_SkeletonInfo_R_c* kf, Gfx** gfx_pp, u8* flag, + s_xyz* rot, xyz_t* pos) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + Player_actor_draw_After_Culc_FootMarkPos(&player->right_foot_pos, &player->right_foot_angle); +} + +static void Player_actor_draw_After_feel(ACTOR* actorx, GAME* game, cKF_SkeletonInfo_R_c* kf, Gfx** gfx_pp, u8* flag, + s_xyz* rot, xyz_t* pos) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + xyz_t* feel_pos = &player->feel_pos; + + Matrix_Position_Zero(feel_pos); + if (player->draw_effect_idx > 0) { + Common_Get(clip).effect_clip->effect_make_proc(player->draw_effect_idx - 1, *feel_pos, 2, + player->actor_class.shape_info.rotation.y, game, RSV_NO, 0, 0); + player->draw_effect_idx = 0; + } + + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_WASH_CAR) { + mPlayer_main_wash_car_c* wash_car = &player->main_data.wash_car; + + if (wash_car->effect_flag) { + Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_ASE2, *feel_pos, 2, 0, game, RSV_NO, 0, 0); + wash_car->effect_flag = FALSE; + } + } +} + +static void Player_actor_draw_After_hand(ACTOR* actorx, GAME* game, cKF_SkeletonInfo_R_c* kf, Gfx** gfx_pp, u8* flag, + s_xyz* rot, xyz_t* pos) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + xyz_t last_hand_pos = player->right_hand_pos; + + Matrix_Position_Zero(&player->right_hand_pos); + player->right_hand_move.x = player->right_hand_pos.x - last_hand_pos.x; + player->right_hand_move.y = player->right_hand_pos.y - last_hand_pos.y; + player->right_hand_move.z = player->right_hand_pos.z - last_hand_pos.z; + Matrix_get(&player->right_hand_mtx); +} + +typedef void (*mPlayer_DRAW_AFTER_PROC)(ACTOR*, GAME*, cKF_SkeletonInfo_R_c*, Gfx**, u8*, s_xyz*, xyz_t*); + +static int Player_actor_draw_After(GAME* game, cKF_SkeletonInfo_R_c* kf, int joint_no, Gfx** gfx_pp, u8* work_flag, + void* arg, s_xyz* rot, xyz_t* pos) { + // clang-format off + static mPlayer_DRAW_AFTER_PROC proc[] = { + NULL, + NULL, + NULL, + NULL, + NULL, + &Player_actor_draw_After_Lfoot3, + NULL, + NULL, + NULL, + &Player_actor_draw_After_Rfoot3, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + &Player_actor_draw_After_Larm2, + NULL, + NULL, + NULL, + &Player_actor_draw_After_hand, + NULL, + NULL, + NULL, + &Player_actor_draw_After_head, + &Player_actor_draw_After_feel, + }; + // clang-format on + + ACTOR* actorx = (ACTOR*)arg; + + if (joint_no >= 0 && joint_no < mPlayer_JOINT_NUM && proc[joint_no] != NULL) { + (*proc[joint_no])(actorx, game, kf, gfx_pp, work_flag, rot, pos); + } + + return TRUE; +} + +static void Player_actor_draw_Normal(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int buf_idx = game->frame_counter % 2; + int now_main_index = player->now_main_index; + cKF_SkeletonInfo_R_c* kf = &player->keyframe0; + Mtx* mtx = player->work_mtx[buf_idx]; + u8* eye_tex_p; + u8* mouth_tex_p; + GRAPH* graph; + int moving_in_boat; + GAME_PLAY* play = (GAME_PLAY*)game; + + eye_tex_p = Player_actor_Get_eye_tex_p(player); + mouth_tex_p = Player_actor_Get_mouth_tex_p(player); + graph = game->graph; + moving_in_boat = FALSE; + + _texture_z_light_fog_prim(graph); + OPEN_POLY_OPA_DISP(graph); + + if (now_main_index == mPlayer_INDEX_DEMO_GETON_BOAT_SITDOWN || + now_main_index == mPlayer_INDEX_DEMO_GETON_BOAT_WAIT || now_main_index == mPlayer_INDEX_DEMO_GETON_BOAT_WADE || + now_main_index == mPlayer_INDEX_DEMO_GETOFF_BOAT_STANDUP) { + moving_in_boat = TRUE; + } + + if (moving_in_boat) { + s16 boat_angle_z; + + if (now_main_index == mPlayer_INDEX_DEMO_GETON_BOAT_SITDOWN) { + boat_angle_z = -player->main_data.demo_geton_boat_sitdown.angle_z; + } else if (now_main_index == mPlayer_INDEX_DEMO_GETOFF_BOAT_STANDUP) { + boat_angle_z = -player->main_data.demo_getoff_boat_standup.angle_z; + } else { + boat_angle_z = -player->boat_angleZ; + } + + Matrix_push(); + Matrix_RotateZ(boat_angle_z, 1); + } + + gSPSegment(POLY_OPA_DISP++, ANIME_1_TXT_SEG, eye_tex_p); + gSPSegment(POLY_OPA_DISP++, ANIME_2_TXT_SEG, mouth_tex_p); + gSPSegment(POLY_OPA_DISP++, ANIME_3_TXT_SEG, mPlib_get_player_tex_p(game)); + gSPSegment(POLY_OPA_DISP++, ANIME_4_TXT_SEG, mPlib_get_player_pallet_p(game)); + gSPSegment(POLY_OPA_DISP++, ANIME_5_TXT_SEG, mPlib_get_player_face_pallet_p(game)); + + CLOSE_POLY_OPA_DISP(graph); + + if (player->change_color_flag) { + int color_frame = (int)(player->change_color_timer / 9.96f); + + if ((color_frame & 1)) { + player->change_color_near = 1; + player->change_color_far = 1; + } else { + static const int color_data[4][3] = { + { 255, 255, 100 }, // r + { 100, 255, 100 }, // g + { 255, 255, 100 }, // b + { 255, 100, 100 }, // a? + }; + + int color_idx = color_frame / 2; + + if (color_idx >= 0 && color_idx < 4) { + xyz_t diff; + f32 diff_len; + View* v = &play->view; + xyz_t* eye_p = &v->eye; + + player->change_color_rgb[0] = color_data[0][color_idx]; + player->change_color_rgb[1] = color_data[1][color_idx]; + player->change_color_rgb[2] = color_data[2][color_idx]; + + diff.x = v->center.x - eye_p->x; + diff.y = v->center.y - eye_p->y; + diff.z = v->center.z - eye_p->z; + diff_len = Math3DVecLength(&diff); + + if (diff_len > 0.0f) { + f32 dx = player->actor_class.world.position.x - eye_p->x; + f32 dy = player->actor_class.world.position.y - eye_p->y; + f32 dz = player->actor_class.world.position.z - eye_p->z; + + f32 percent = (dx * diff.x + dy * diff.y + dz * diff.z) / diff_len; + f32 t0; + f32 t1; + f32 t2; + + t0 = diff_len - 352.0f; + t1 = diff_len * 0.25f; + t2 = 2.0f / 14.1f; + + player->change_color_near = (int)(210.0f + (diff_len - percent) / diff_len); + player->change_color_far = + player->change_color_near + (int)(780.0f + t0 * (t2 / 2.0f) + t1 * (t2 / 2.0f)); + } else { + player->change_color_near = 1; + player->change_color_far = 1; + } + } else { + player->change_color_near = 1; + player->change_color_far = 1; + } + } + + OPEN_DISP(graph); + SET_POLY_OPA_DISP(gfx_set_fog_nosync(NOW_POLY_OPA_DISP, player->change_color_rgb[0], + player->change_color_rgb[1], player->change_color_rgb[2], 255, + player->change_color_near, player->change_color_far)); + CLOSE_DISP(graph); + } + + cKF_Si3_draw_R_SV(game, kf, mtx, &Player_actor_draw_Before, &Player_actor_draw_After, player); + + if (player->change_color_flag) { + /* Revert to standard fog color */ + OPEN_DISP(graph); + SET_POLY_OPA_DISP(gfx_set_fog_nosync(NOW_POLY_OPA_DISP, play->global_light.fogColor[0], + play->global_light.fogColor[1], play->global_light.fogColor[2], 0, + play->global_light.fogNear, play->global_light.fogFar)); + CLOSE_DISP(graph); + } + + Player_actor_Item_draw(player, game); + + { + mActor_name_t item = EMPTY_NO; + f32 item_scale = 0.0f; + xyz_t* item_pos_p = NULL; + int flag = FALSE; + mPlayer_main_pickup_jump_c* main_pickup_jump = NULL; + + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_PICKUP) { + if (player->main_data.pickup.exchange_flag == FALSE) { + item = player->main_data.pickup.item; + item_scale = player->main_data.pickup.scale; + item_pos_p = &player->main_data.pickup.item_pos; + } + } else if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_PICKUP_JUMP) { + mPlayer_main_pickup_jump_c* main_pickup_jump2 = &player->main_data.pickup_jump; + + if (main_pickup_jump2->exchange_flag == FALSE) { + main_pickup_jump = main_pickup_jump2; + item = main_pickup_jump2->item; + item_scale = main_pickup_jump2->scale; + item_pos_p = &main_pickup_jump2->item_pos; + flag = TRUE; + } + } else if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_GET_SCOOP) { + item = player->main_data.get_scoop.item; + item_scale = player->main_data.get_scoop.scale; + if (player->keyframe0.frame_control.current_frame <= 42.0f) { + item_pos_p = &player->scoop_pos; + } else { + item_pos_p = &player->left_hand_pos; + } + } else if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_PUTAWAY_SCOOP) { + item = player->main_data.putaway_scoop.item; + item_scale = player->main_data.putaway_scoop.scale; + item_pos_p = &player->left_hand_pos; + } + + if (item_scale > 0.0f && item != EMPTY_NO && item_pos_p != NULL) { + if (mFI_GET_TYPE(mFI_GetFieldId()) == mFI_FIELD_FG) { + if (Common_Get(clip).bg_item_clip != NULL && Common_Get(clip).bg_item_clip->single_draw_proc != NULL) { + Common_Get(clip).bg_item_clip->single_draw_proc(game, item, item_pos_p, item_scale, NULL, NULL, + NULL); + } + } else { + if (Common_Get(clip).shop_goods_clip != NULL && + Common_Get(clip).shop_goods_clip->single_draw_proc != NULL) { + s16 item_angle_y; + int uz; + int ux; + + if (main_pickup_jump != NULL && mFI_Wpos2UtNum(&ux, &uz, main_pickup_jump->target_pos)) { + item_angle_y = Common_Get(clip).shop_goods_clip->single_get_angle_y_proc(uz, ux, flag); + } else { + item_angle_y = 0; + } + + Common_Get(clip).shop_goods_clip->single_draw_proc(game, item, item_pos_p, item_scale, item_angle_y, + flag); + } + } + } + } + + if (moving_in_boat) { + Matrix_pull(); + } +} From 467bbb8679f12088bea9e2abe575298ffe49ae42 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Sat, 17 Aug 2024 18:46:02 -0400 Subject: [PATCH 118/234] Match m_player_main_wade.c_inc --- include/m_camera2.h | 410 ++++++++++++++++++----------------- include/m_player.h | 19 +- src/m_player_main_wade.c_inc | 127 +++++++++++ 3 files changed, 353 insertions(+), 203 deletions(-) diff --git a/include/m_camera2.h b/include/m_camera2.h index cd45203c..521671a2 100644 --- a/include/m_camera2.h +++ b/include/m_camera2.h @@ -10,321 +10,321 @@ extern "C" { #endif enum { - CAMERA2_PROCESS_STOP, - CAMERA2_PROCESS_NORMAL, - CAMERA2_PROCESS_WADE, - CAMERA2_PROCESS_TALK, - CAMERA2_PROCESS_DEMO, - CAMERA2_PROCESS_ITEM, - CAMERA2_PROCESS_LOCK, - CAMERA2_PROCESS_DOOR, - CAMERA2_PROCESS_SIMPLE, - CAMERA2_PROCESS_CUST_TALK, - CAMERA2_PROCESS_INTER, - CAMERA2_PROCESS_STAFF_ROLL, - CAMERA2_PROCESS_INTER2, + CAMERA2_PROCESS_STOP, + CAMERA2_PROCESS_NORMAL, + CAMERA2_PROCESS_WADE, + CAMERA2_PROCESS_TALK, + CAMERA2_PROCESS_DEMO, + CAMERA2_PROCESS_ITEM, + CAMERA2_PROCESS_LOCK, + CAMERA2_PROCESS_DOOR, + CAMERA2_PROCESS_SIMPLE, + CAMERA2_PROCESS_CUST_TALK, + CAMERA2_PROCESS_INTER, + CAMERA2_PROCESS_STAFF_ROLL, + CAMERA2_PROCESS_INTER2, - CAMERA2_PROCESS_NUM + CAMERA2_PROCESS_NUM }; typedef struct camera_main_cust_talk_s { - ACTOR* speaker_actor; - ACTOR* listener_actor; - f32 center_ratio; - f32 cull_timer; - s16 angle_x; - s16 angle_y; - f32 distance; + ACTOR* speaker_actor; + ACTOR* listener_actor; + f32 center_ratio; + f32 cull_timer; + s16 angle_x; + s16 angle_y; + f32 distance; } CameraCustTalk; typedef struct camera_main_demo_s { - xyz_t starting_center_pos; - f32 starting_distance; - s_xyz starting_direction; + xyz_t starting_center_pos; + f32 starting_distance; + s_xyz starting_direction; - xyz_t goal_center_pos; - f32 goal_distance; - s_xyz goal_direction; + xyz_t goal_center_pos; + f32 goal_distance; + s_xyz goal_direction; - f32 goal_delta; - f32 acceleration_delta; - f32 braking_delta; - f32 now_delta; + f32 goal_delta; + f32 acceleration_delta; + f32 braking_delta; + f32 now_delta; } CameraDemo; typedef struct camera_main_door_s { - u32 flags; - int morph_counter; - xyz_t center_position; + u32 flags; + int morph_counter; + xyz_t center_position; } CameraDoor; typedef struct camera_main_inter_s { - xyz_t starting_center_pos; - xyz_t starting_eye_pos; - - xyz_t goal_center_pos; - xyz_t goal_eye_pos; + xyz_t starting_center_pos; + xyz_t starting_eye_pos; - f32 slope0; - f32 slope1; + xyz_t goal_center_pos; + xyz_t goal_eye_pos; - u32 flags; + f32 slope0; + f32 slope1; - int now_delta; - int max_delta; + u32 flags; - int pad[2]; + int now_delta; + int max_delta; + + int pad[2]; } CameraInter; typedef struct camera_main_item_s { - int type; - f32 cull_timer; + int type; + f32 cull_timer; } CameraItem; typedef struct camera_main_lock_s { - xyz_t center_pos; - xyz_t eye_pos; + xyz_t center_pos; + xyz_t eye_pos; - f32 fov_y; + f32 fov_y; - int morph_counter; + int morph_counter; - f32 near; - f32 far; + f32 near; + f32 far; } CameraLock; typedef struct camera_main_normal_s { - u32 flags; + u32 flags; - int last_indoor_distance_addition_idx; - int last_indoor_direction_addition_idx; + int last_indoor_distance_addition_idx; + int last_indoor_direction_addition_idx; - int morph_counter; + int morph_counter; } CameraNormal; typedef struct camera_main_simple_s { - xyz_t center_pos; - s_xyz angle; - f32 distance; + xyz_t center_pos; + s_xyz angle; + f32 distance; - int morph_counter; - int mode; + int morph_counter; + int mode; - f32 cull_timer; + f32 cull_timer; } CameraSimple; typedef struct camera_main_staff_roll_s { - xyz_t last_center_pos; - xyz_t last_eye_pos; - f32 last_distance; + xyz_t last_center_pos; + xyz_t last_eye_pos; + f32 last_distance; - ACTOR* speaker_actor; - ACTOR* listener_actor; + ACTOR* speaker_actor; + ACTOR* listener_actor; - s16 rotation_y_delta; - s16 r_delta; - s16 rotation_x_delta; + s16 rotation_y_delta; + s16 r_delta; + s16 rotation_x_delta; - u16 flags; - u16 morph_counter; - u16 pad; - u16 dist_counter; - s_xyz last_direction; + u16 flags; + u16 morph_counter; + u16 pad; + u16 dist_counter; + s_xyz last_direction; } CameraStaffRoll; typedef struct camera_main_talk_s { - ACTOR* speaker_actor; - ACTOR* listener_actor; + ACTOR* speaker_actor; + ACTOR* listener_actor; - xyz_t listener_pos; - - f32 cull_timer; - u32 flags; + xyz_t listener_pos; - xyz_t goal_center_pos; + f32 cull_timer; + u32 flags; + + xyz_t goal_center_pos; } CameraTalk; typedef struct camera_main_wade_s { - f32 timer; + f32 timer; - xyz_t start_pos; - xyz_t goal_pos; + xyz_t start_pos; + xyz_t goal_pos; - f32 goal_time; + f32 goal_time; } CameraWade; typedef union camera_main_data_u { - CameraCustTalk cust_talk; - CameraDemo demo; - CameraDoor door; - CameraInter inter; - CameraItem item; - CameraLock lock; - CameraNormal normal; - CameraSimple simple; - CameraStaffRoll staff_roll; - CameraTalk talk; - CameraWade wade; - - u64 align; + CameraCustTalk cust_talk; + CameraDemo demo; + CameraDoor door; + CameraInter inter; + CameraItem item; + CameraLock lock; + CameraNormal normal; + CameraSimple simple; + CameraStaffRoll staff_roll; + CameraTalk talk; + CameraWade wade; + + u64 align; } CameraMainData; /* request index data */ typedef struct camera_request_cust_talk_s { - ACTOR* speaker_actor; - ACTOR* listener_actor; - f32 center_ratio; - s16 angle_x; - s16 angle_y; - f32 distance; + ACTOR* speaker_actor; + ACTOR* listener_actor; + f32 center_ratio; + s16 angle_x; + s16 angle_y; + f32 distance; } CameraRequestCustTalk; typedef struct camera_request_demo_s { - xyz_t starting_center_pos; - f32 starting_distance; - s_xyz starting_direction; + xyz_t starting_center_pos; + f32 starting_distance; + s_xyz starting_direction; - xyz_t goal_center_pos; - f32 goal_distance; - s_xyz goal_direction; + xyz_t goal_center_pos; + f32 goal_distance; + s_xyz goal_direction; - f32 goal_delta; - f32 acceleration_delta; - f32 braking_delta; + f32 goal_delta; + f32 acceleration_delta; + f32 braking_delta; } CameraRequestDemo; typedef struct camera_request_door_s { - ACTOR* door_actor; - u32 flags; + ACTOR* door_actor; + u32 flags; } CameraRequestDoor; typedef struct camera_request_inter_s { - xyz_t starting_center_pos; - xyz_t starting_eye_pos; - - xyz_t goal_center_pos; - xyz_t goal_eye_pos; + xyz_t starting_center_pos; + xyz_t starting_eye_pos; - f32 slope0; - f32 slope1; + xyz_t goal_center_pos; + xyz_t goal_eye_pos; - u32 flags; + f32 slope0; + f32 slope1; - int morph_counter; + u32 flags; - int pad[2]; + int morph_counter; + + int pad[2]; } CameraRequestInter; typedef struct camera_request_item_s { - int type; + int type; } CameraRequestItem; typedef struct camera_request_lock_s { - xyz_t center_pos; - xyz_t eye_pos; + xyz_t center_pos; + xyz_t eye_pos; - f32 fov_y; + f32 fov_y; - int morph_counter; + int morph_counter; - f32 near; - f32 far; + f32 near; + f32 far; } CameraRequestLock; typedef struct camera_request_normal_s { - xyz_t position; + xyz_t position; - int flags; + int flags; } CameraRequestNormal; typedef struct camera_request_simple_s { - xyz_t center_pos; - s_xyz angle; - f32 distance; + xyz_t center_pos; + s_xyz angle; + f32 distance; - int morph_counter; - int mode; + int morph_counter; + int mode; } CameraRequestSimple; typedef struct camera_request_staff_roll_s { - ACTOR* speaker_actor; - ACTOR* listener_actor; + ACTOR* speaker_actor; + ACTOR* listener_actor; } CameraRequestStaffRoll; typedef struct camera_request_talk_s { - ACTOR* speaker_actor; - ACTOR* listener_actor; + ACTOR* speaker_actor; + ACTOR* listener_actor; - xyz_t listener_pos; + xyz_t listener_pos; - u32 flags; + u32 flags; } CameraRequestTalk; typedef struct camera_request_wade_s { - xyz_t goal_pos; - f32 goal_time; + xyz_t goal_pos; + f32 goal_time; } CameraRequestWade; typedef union camera_request_data_u { - CameraRequestCustTalk cust_talk; - CameraRequestDemo demo; - CameraRequestDoor door; - CameraRequestInter inter; - CameraRequestItem item; - CameraRequestLock lock; - CameraRequestNormal normal; - CameraRequestSimple simple; - CameraRequestStaffRoll staff_roll; - CameraRequestTalk talk; - CameraRequestWade wade; - - u64 align; + CameraRequestCustTalk cust_talk; + CameraRequestDemo demo; + CameraRequestDoor door; + CameraRequestInter inter; + CameraRequestItem item; + CameraRequestLock lock; + CameraRequestNormal normal; + CameraRequestSimple simple; + CameraRequestStaffRoll staff_roll; + CameraRequestTalk talk; + CameraRequestWade wade; + + u64 align; } CameraRequestData; typedef struct camera_lookat_s { - xyz_t eye; - xyz_t center; - xyz_t up; + xyz_t eye; + xyz_t center; + xyz_t up; } CameraLookat; typedef struct camera_perspective_s { - f32 fov_y; - f32 aspect_ratio; - f32 near; - f32 far; - f32 scale; + f32 fov_y; + f32 aspect_ratio; + f32 near; + f32 far; + f32 scale; } CameraPerspective; typedef struct camera_s { - CameraLookat lookat; - CameraPerspective perspective; + CameraLookat lookat; + CameraPerspective perspective; - s_xyz direction; /* camera orientation */ - s_xyz direction_velocity; /* camera orentation rate of change */ + s_xyz direction; /* camera orientation */ + s_xyz direction_velocity; /* camera orentation rate of change */ - xyz_t movement_velocity; /* camera world position velocity */ + xyz_t movement_velocity; /* camera world position velocity */ - f32 focus_distance; /* distance to the camera focal point/subject */ - f32 focus_distance_velocity; /* rate of change of the camera focus */ + f32 focus_distance; /* distance to the camera focal point/subject */ + f32 focus_distance_velocity; /* rate of change of the camera focus */ - int indoor_distance_addition_idx; /* index of indoor distance adjustment LUT value to apply */ - int indoor_direction_addition_idx; /* index of indoor direction adjustment LUT value to apply */ + int indoor_distance_addition_idx; /* index of indoor distance adjustment LUT value to apply */ + int indoor_direction_addition_idx; /* index of indoor direction adjustment LUT value to apply */ - int now_main_index; /* current main index type */ - int last_main_index; /* previous main index type */ - int requested_main_index; /* requested main index type */ - int requested_main_index_priority; /* requested main index priority value */ - int requested_main_index_flag; /* TRUE/FALSE requested main index has been set */ + int now_main_index; /* current main index type */ + int last_main_index; /* previous main index type */ + int requested_main_index; /* requested main index type */ + int requested_main_index_priority; /* requested main index priority value */ + int requested_main_index_flag; /* TRUE/FALSE requested main index has been set */ - CameraMainData main_data; /* current main index data */ - CameraRequestData request_data; /* requested index data */ + CameraMainData main_data; /* current main index data */ + CameraRequestData request_data; /* requested index data */ - xyz_t mic_pos; /* mic position */ - u32 flags; /* camera flags */ + xyz_t mic_pos; /* mic position */ + u32 flags; /* camera flags */ - xyz_t offset_eye; - xyz_t offset_center; + xyz_t offset_eye; + xyz_t offset_center; } Camera2; extern s16 getCamera2AngleY(GAME_PLAY* play); @@ -341,24 +341,36 @@ extern int Camera2_request_main_wade(GAME_PLAY* play, xyz_t* pos, int priority, extern int Camera2_request_main_talk(GAME_PLAY* play, ACTOR* speaker, ACTOR* listener, int priority); extern int Camera2_request_main_talk_pos(GAME_PLAY* play, ACTOR* speaker, xyz_t* listener_pos, int priority); extern int Camera2_request_main_normal(GAME_PLAY* play, int flags, int priority); -extern int Camera2_request_main_demo(GAME_PLAY* play, const xyz_t* start_center, const f32 start_dist, const s_xyz* start_dir, const xyz_t* goal_center, const f32 goal_dist, const s_xyz* goal_dir, const f32 goal_delta, const f32 accel_delta, const f32 braking_delta, const int priority); -extern int Camera2_request_main_demo_fromNowPos(GAME_PLAY* play, const xyz_t* goal_center, const s_xyz* goal_dir, const f32 goal_dist, const f32 goal_delta, const f32 accel_delta, const f32 braking_delta, const int priority); -extern int Camera2_request_main_demo_fromNowPos2(GAME_PLAY* play, const xyz_t* goal_center, const f32 goal_delta, const f32 accel_delta, const f32 braking_delta, const int priority); +extern int Camera2_request_main_demo(GAME_PLAY* play, const xyz_t* start_center, const f32 start_dist, + const s_xyz* start_dir, const xyz_t* goal_center, const f32 goal_dist, + const s_xyz* goal_dir, const f32 goal_delta, const f32 accel_delta, + const f32 braking_delta, const int priority); +extern int Camera2_request_main_demo_fromNowPos(GAME_PLAY* play, const xyz_t* goal_center, const s_xyz* goal_dir, + const f32 goal_dist, const f32 goal_delta, const f32 accel_delta, + const f32 braking_delta, const int priority); +extern int Camera2_request_main_demo_fromNowPos2(GAME_PLAY* play, const xyz_t* goal_center, const f32 goal_delta, + const f32 accel_delta, const f32 braking_delta, const int priority); extern int Camera2_request_main_item(GAME_PLAY* play, int type, int priority); -extern int Camera2_request_main_lock(GAME_PLAY* play, xyz_t* center_pos, xyz_t* eye_pos, f32 fov_y, int morph_counter, f32 near, f32 far, int priority); +extern int Camera2_request_main_lock(GAME_PLAY* play, xyz_t* center_pos, xyz_t* eye_pos, f32 fov_y, int morph_counter, + f32 near, f32 far, int priority); extern int Camera2_request_main_door(GAME_PLAY* play, ACTOR* door_actor, u32 flags, int priority); -extern int Camera2_request_main_simple2(GAME_PLAY* play, xyz_t* center, s_xyz* dir, f32 dist, int morph_counter, int mode, int priority); +extern int Camera2_request_main_simple2(GAME_PLAY* play, xyz_t* center, s_xyz* dir, f32 dist, int morph_counter, + int mode, int priority); extern int Camera2_request_main_simple_kirin(GAME_PLAY* play, const xyz_t* center, int priority); -extern int Camera2_request_main_simple_fishing(GAME_PLAY* play, const xyz_t* player_pos, const xyz_t* bobber_pos, int priority); +extern int Camera2_request_main_simple_fishing(GAME_PLAY* play, const xyz_t* player_pos, const xyz_t* bobber_pos, + int priority); extern int Camera2_request_main_simple_fishing_return(GAME_PLAY* play, xyz_t* player_pos, int priority); -extern int Camera2_request_main_simple(GAME_PLAY* play, xyz_t* pos, s_xyz* dir, f32 dist, int morph_counter, int priority); +extern int Camera2_request_main_simple(GAME_PLAY* play, xyz_t* pos, s_xyz* dir, f32 dist, int morph_counter, + int priority); extern void Camera2_main_Simple_AngleDistStd(GAME_PLAY* play, s_xyz* angle, f32* dist); extern int Camera2_request_main_listen_front_low_talk(GAME_PLAY* play, ACTOR* speaker, ACTOR* listener, int priority); extern int Camera2_request_main_needlework_talk(GAME_PLAY* play, ACTOR* speaker, ACTOR* listener, int priority); -extern int Camera2_request_main_cust_talk(GAME_PLAY* play, ACTOR* speaker, ACTOR* listener, f32 center_ratio, int priority, s16 angle_x, s16 angle_y, f32 distance); +extern int Camera2_request_main_cust_talk(GAME_PLAY* play, ACTOR* speaker, ACTOR* listener, f32 center_ratio, + int priority, s16 angle_x, s16 angle_y, f32 distance); extern int Camera2_request_BuySikimono_WallPaper(GAME_PLAY* play, xyz_t* center, xyz_t* eye); extern int Camera2_Inter_set_reverse_mode(GAME_PLAY* play); -extern int Camera2_request_main_inter(GAME_PLAY* play, xyz_t* start_center, xyz_t* start_eye, xyz_t* goal_center, xyz_t* goal_eye, f32 s0, f32 s1, u32 flags, int morph_counter, int priority); +extern int Camera2_request_main_inter(GAME_PLAY* play, xyz_t* start_center, xyz_t* start_eye, xyz_t* goal_center, + xyz_t* goal_eye, f32 s0, f32 s1, u32 flags, int morph_counter, int priority); extern int Camera2_request_main_staff_roll(GAME_PLAY* play, ACTOR* speaker, ACTOR* listener, int priority); extern void Init_Camera2(GAME_PLAY* play); extern void Camera2_process(GAME_PLAY* play); diff --git a/include/m_player.h b/include/m_player.h index 8fe0d25b..c02169eb 100644 --- a/include/m_player.h +++ b/include/m_player.h @@ -28,6 +28,9 @@ typedef struct player_actor_s PLAYER_ACTOR; #define mPlayer_FORCE_POSITION_ANGLE_ROTY (1 << 5) #define mPlayer_FORCE_POSITION_ANGLE_ROTZ (1 << 6) +#define mPlayer_WALK_FLAG_SET_POS (1 << 1) +#define mPlayer_WALK_FLAG_RESET_MORPH (1 << 2) + enum { mPlayer_JOINT_ROOT, mPlayer_JOINT_BASE, @@ -1265,6 +1268,13 @@ typedef struct player_main_return_outdoor2_s { int prev_main_index; } mPlayer_main_return_outdoor2_c; +typedef struct player_main_wade_s { + int dir; + xyz_t start_pos; + xyz_t end_pos; + f32 timer; +} mPlayer_main_wade_c; + typedef struct player_main_pickup_s { xyz_t target_pos; xyz_t item_pos; @@ -1328,6 +1338,7 @@ typedef union { mPlayer_main_return_demo_c return_demo; mPlayer_main_return_outdoor_c return_outdoor; mPlayer_main_return_outdoor2_c return_outdoor2; + mPlayer_main_wade_c wade; mPlayer_main_pickup_c pickup; mPlayer_main_pickup_jump_c pickup_jump; mPlayer_main_get_scoop_c get_scoop; @@ -1535,10 +1546,10 @@ struct player_actor_s { /* 0x13A4 */ s8 update_scene_bg_mode; }; -void Player_actor_ct(PLAYER_ACTOR*, GAME*); -void Player_actor_dt(PLAYER_ACTOR*, GAME*); -void Player_actor_move(PLAYER_ACTOR*, GAME*); -void Player_actor_draw(PLAYER_ACTOR*, GAME*); +extern void Player_actor_ct(ACTOR*, GAME*); +extern void Player_actor_dt(ACTOR*, GAME*); +extern void Player_actor_move(ACTOR*, GAME*); +extern void Player_actor_draw(ACTOR*, GAME*); #ifdef __cplusplus } diff --git a/src/m_player_main_wade.c_inc b/src/m_player_main_wade.c_inc index e69de29b..17b8d1c3 100644 --- a/src/m_player_main_wade.c_inc +++ b/src/m_player_main_wade.c_inc @@ -0,0 +1,127 @@ +static int Player_actor_request_main_wade(GAME* game, int dir, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_WADE, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_wade_c* request_wade_p = &player->requested_main_index_data.wade; + + request_wade_p->dir = dir; + Player_actor_request_main_index(game, mPlayer_INDEX_WADE, priority); + return TRUE; + } + + return FALSE; +} + +static int Player_actor_request_main_wade_all(GAME* game, int dir, int priority) { + return Player_actor_request_main_wade(game, dir, priority) != FALSE; +} + +static void Player_actor_setup_main_Wade_common(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_request_wade_c* request_wade_p = &player->requested_main_index_data.wade; + mPlayer_main_wade_c* main_wade_p = &player->main_data.wade; + xyz_t* pos_p; + int anim1_idx; + int part_table_idx; + int dir; + GAME_PLAY* play = (GAME_PLAY*)game; + xyz_t eye_pos; + + Player_actor_setup_main_Wade_other_func1(actorx, game); + dir = request_wade_p->dir; + pos_p = &actorx->world.position; + Player_actor_SetupItem_Base1(actorx, 0, -5.0f, &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actorx, game, mPlayer_ANIM_WAIT1, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, + part_table_idx); + main_wade_p->dir = dir; + main_wade_p->start_pos = *pos_p; + + Player_actor_Culc_wade_end_pos(pos_p, &main_wade_p->end_pos, dir, 18.00001f); + main_wade_p->timer = 0.0f; + Player_actor_setup_main_Base(actorx, game); + + eye_pos = main_wade_p->end_pos; + eye_pos.y += actorx->eye.position.y - pos_p->y; + Camera2_request_main_wade(play, &eye_pos, 9, 36.0f); + Player_actor_setup_main_Wade_other_func2(actorx, game); +} + +static void Player_actor_setup_main_Wade(ACTOR* actorx, GAME* game) { + Player_actor_setup_main_Wade_common(actorx, game); +} + +static void Player_actor_settle_main_Wade(ACTOR* actorx, GAME* game) { + mDemo_End(actorx); +} + +static void Player_actor_CulcAnimation_Wade(ACTOR* actorx) { + f32 last_kf0_current_frame; + + Player_actor_CulcAnimation_Base2(actorx, &last_kf0_current_frame); +} + +static void Player_actor_Movement_Wade(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_wade_c* main_wade_p = &player->main_data.wade; + xyz_t* start_pos_p = &main_wade_p->start_pos; + xyz_t* end_pos_p = &main_wade_p->end_pos; + xyz_t* pos_p = &actorx->world.position; + f32 timer = main_wade_p->timer; + f32 percent = get_percent_forAccelBrake(timer, 0.0f, 36.0f, 1.2f, 34.8f); + + pos_p->x = start_pos_p->x + percent * (end_pos_p->x - start_pos_p->x); + pos_p->y = start_pos_p->y + percent * (end_pos_p->y - start_pos_p->y); + pos_p->z = start_pos_p->z + percent * (end_pos_p->z - start_pos_p->z); + + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static void Player_actor_ObjCheck_Wade(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Wade(ACTOR* actorx) { + Player_actor_BGcheck_common_type2(actorx); +} + +static int Player_actor_able_request_proc_index_fromWade_common(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_wade_c* main_wade_p = &player->main_data.wade; + f32* timer_p = &main_wade_p->timer; + + if (*timer_p > 36.0f) { + return TRUE; + } + + *timer_p += 1.0f; + return FALSE; +} + +static void Player_actor_request_proc_index_fromWade(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_wade_c* main_wade_p = &player->main_data.wade; + + if (Player_actor_able_request_proc_index_fromWade_common(actorx)) { + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_walk_all(game, &main_wade_p->end_pos, -5.0f, + mPlayer_WALK_FLAG_SET_POS | mPlayer_WALK_FLAG_RESET_MORPH, 1); + } +} + +static int Player_actor_Request_Wade(ACTOR* actorx) { + return TRUE; +} + +static void Player_actor_main_Wade(ACTOR* actorx, GAME* game) { + if (Player_actor_Request_Wade(actorx)) { + Player_actor_main_Wade_other_func1(actorx, game); + Player_actor_Movement_Wade(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_CulcAnimation_Wade(actorx); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Wade(actorx, game); + Player_actor_BGcheck_Wade(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromWade(actorx, game); + } +} From 58c515d5710258415be6e9f873126365c975f3a1 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Sun, 18 Aug 2024 09:54:54 -0400 Subject: [PATCH 119/234] Finish player struct members other than main_data union --- include/m_collision_obj.h | 260 +++++++++++++++++++------------------- include/m_player.h | 44 ++++++- 2 files changed, 165 insertions(+), 139 deletions(-) diff --git a/include/m_collision_obj.h b/include/m_collision_obj.h index 55539fcc..66255085 100644 --- a/include/m_collision_obj.h +++ b/include/m_collision_obj.h @@ -11,216 +11,210 @@ extern "C" { #endif enum collision_type { - ClObj_TYPE_JNT_SPH, - ClObj_TYPE_PIPE, - ClObj_TYPE_TRIS, + ClObj_TYPE_JNT_SPH, + ClObj_TYPE_PIPE, + ClObj_TYPE_TRIS, - ClObj_TYPE_NUM + ClObj_TYPE_NUM }; -enum weight{ - MASS_IMMOVABLE, - MASS_HEAVY, - MASS_NORMAL -}; +enum weight { MASS_IMMOVABLE, MASS_HEAVY, MASS_NORMAL }; #define MASSTYPE_IMMOVABLE 0xFF #define MASSTYPE_HEAVY 0xFE typedef struct collision_obj_s { - ACTOR* owner_actor; // actor which owns this collision object - ACTOR* collided_actor; // actor which the owner collided with or NULL + ACTOR* owner_actor; // actor which owns this collision object + ACTOR* collided_actor; // actor which the owner collided with or NULL - u8 collision_flags0; - u8 collision_flags1; + u8 collision_flags0; + u8 collision_flags1; - u8 collision_type; + u8 collision_type; } ClObj_c; typedef struct collision_elem_s { - u8 flags; + u8 flags; } ClObjElem_c; typedef struct collision_pipe_attribute_s { - Math3D_pipe_c pipe; + Math3D_pipe_c pipe; } ClObjPipeAttr_c; typedef struct collision_pipe_s { - ClObj_c collision_obj; - ClObjElem_c element; - ClObjPipeAttr_c attribute; + ClObj_c collision_obj; + ClObjElem_c element; + ClObjPipeAttr_c attribute; } ClObjPipe_c; /* static data */ typedef struct collision_obj_data_s { - u8 collision_flags0; - u8 collision_flags1; - u8 type; + u8 collision_flags0; + u8 collision_flags1; + u8 type; } ClObjData_c; typedef struct collision_obj_elem_data_s { - u8 flags; + u8 flags; } ClObjElemData_c; typedef struct collision_obj_pipe_attr_data_s { - Math3D_pipe_c pipe; + Math3D_pipe_c pipe; } ClObjPipeAttrData_c; typedef struct collision_obj_pipe_data_s { - ClObjData_c collision_data; - ClObjElemData_c element_data; - ClObjPipeAttrData_c attribute_data; + ClObjData_c collision_data; + ClObjElemData_c element_data; + ClObjPipeAttrData_c attribute_data; } ClObjPipeData_c; -typedef struct collision_check_tris_element_attr_data_s{ - xyz_t vtx[3]; -}ClObjTrisElemAttrData_c; +typedef struct collision_check_tris_element_attr_data_s { + xyz_t vtx[3]; +} ClObjTrisElemAttrData_c; -typedef struct collision_check_tris_element_data_s{ - ClObjElemData_c element; - ClObjTrisElemAttrData_c data; -}ClObjTrisElemData_c; +typedef struct collision_check_tris_element_data_s { + ClObjElemData_c element; + ClObjTrisElemAttrData_c data; +} ClObjTrisElemData_c; -typedef struct collision_check_tris_element_s{ +typedef struct collision_check_tris_element_s { Math3D_triangle_c tri; xyz_t t; -}ClObjTrisElemAttr_c; +} ClObjTrisElemAttr_c; -typedef struct collision_tris_elem_s{ - ClObjElem_c element; - ClObjTrisElemAttr_c attribute; -}ClObjTrisElem_c; +typedef struct collision_tris_elem_s { + ClObjElem_c element; + ClObjTrisElemAttr_c attribute; +} ClObjTrisElem_c; typedef struct collision_tris_s { - ClObj_c collision_obj; - int count; - ClObjTrisElem_c* elements; + ClObj_c collision_obj; + int count; + ClObjTrisElem_c* elements; } ClObjTris_c; typedef struct ClObjTris_Init { - ClObjData_c data; - int count; - ClObjTrisElemData_c* elem_data; + ClObjData_c data; + int count; + ClObjTrisElemData_c* elem_data; } ClObjTrisData_c; -typedef struct collision_obj_joint_sphere_elem_attribute_s{ +typedef struct collision_obj_joint_sphere_elem_attribute_s { Math3D_sphere_c s1; Math3D_sphere_c s2; f32 unk8; u8 unk14; -}ClObjJntSphElemAttr_c; +} ClObjJntSphElemAttr_c; -typedef struct collision_joint_sphere_elem_s{ - ClObjElem_c element; - ClObjJntSphElemAttr_c attribute; -}ClObjJntSphElem_c; +typedef struct collision_joint_sphere_elem_s { + ClObjElem_c element; + ClObjJntSphElemAttr_c attribute; +} ClObjJntSphElem_c; typedef struct collision_joint_sphere_s { - ClObj_c collision_obj; - int count; - ClObjJntSphElem_c* elements; -}ClObjJntSph_c; + ClObj_c collision_obj; + int count; + ClObjJntSphElem_c* elements; +} ClObjJntSph_c; #define Cl_COLLIDER_NUM 50 typedef struct collision_check_s { - u16 flags; - int collider_num; - ClObj_c* collider_table[Cl_COLLIDER_NUM]; + u16 flags; + int collider_num; + ClObj_c* collider_table[Cl_COLLIDER_NUM]; } CollisionCheck_c; /* This appears to again be copy-paste from OoT? */ typedef struct status_s { - xyz_t collision_vec; - s16 radius; - s16 height; - s16 offset; + xyz_t collision_vec; + s16 radius; + s16 height; + s16 offset; - u8 weight; - u8 hp; - u8 damage; + u8 weight; + u8 hp; + u8 damage; - u8 damage_effect; - u8 at_hit_effect; - u8 ac_hit_effect; + u8 damage_effect; + u8 at_hit_effect; + u8 ac_hit_effect; } Status_c; typedef struct status_data_s { - u8 health; // assuming this is inherited from OoT, seems largely unused - s16 radius; - s16 height; - s16 offset; - u8 weight; + u8 health; // assuming this is inherited from OoT, seems largely unused + s16 radius; + s16 height; + s16 offset; + u8 weight; } StatusData_c; typedef struct mco_work_s { - int count; - ClObj_c* colliders[10]; + int count; + ClObj_c* colliders[10]; } McoWork; extern McoWork mco_work; - -typedef void (*CollisionOCFunction)(GAME*, CollisionCheck_c*, ClObj_c*,ClObj_c*); +typedef void (*CollisionOCFunction)(GAME*, CollisionCheck_c*, ClObj_c*, ClObj_c*); typedef int (*CollisionOCClear)(GAME*, ClObj_c*); typedef int (*CollisionClearFunction)(GAME*, ClObj_c*); -extern void CollisionCheck_workTrisElemCenter(ClObjTrisElem_c *, xyz_t *); -extern int ClObj_ct(GAME *, ClObj_c *); -extern int ClObj_dt(GAME *, ClObj_c *); -extern int ClObj_set4(GAME *, ClObj_c *, ACTOR *, ClObjData_c *); -extern void ClObj_OCClear(GAME *, ClObj_c *); -extern int ClObjElem_ct(ClObjElem_c *); -extern int ClObjElem_set(ClObjElem_c *, ClObjElemData_c *); -extern void ClObjElem_OCClear(GAME *, ClObjElem_c *); -extern int ClObjJntSphElem_OCClear(GAME *, ClObjJntSphElem_c *); -extern int ClObjJntSph_OCClear(GAME *, ClObj_c *); -extern int ClObjPipeAttr_ct(GAME *, ClObjPipeAttr_c *); -extern int ClObjPipeAttr_dt(GAME *, ClObjPipeAttr_c *); -extern int ClObjPipeAttr_set(GAME *, ClObjPipeAttr_c *, ClObjPipeAttr_c *); -extern int ClObjPipe_ct(GAME *, ClObjPipe_c *); -extern int ClObjPipe_dt(GAME *, ClObjPipe_c *); -extern int ClObjPipe_set5(GAME *, ClObjPipe_c *, ACTOR *, ClObjPipeData_c *); -extern int ClObjPipe_OCClear(GAME *, ClObj_c *); -extern int ClObjTrisElemAttr_ct(GAME *, ClObjTrisElemAttr_c *); -extern int ClObjTrisElemAttr_dt(GAME *, ClObjTrisElemAttr_c *); -extern int ClObjTrisElemAttr_set(GAME *, ClObjTrisElemAttr_c *, ClObjTrisElemAttrData_c *); -extern int ClObjTrisElem_ct(GAME *, ClObjTrisElem_c *); -extern int ClObjTrisElem_dt(GAME *, ClObjTrisElem_c *); -extern int ClObjTrisElem_set(GAME *, ClObjTrisElem_c *, ClObjTrisElemData_c *); -extern int ClObjTrisElem_OCClear(GAME *, ClObjTrisElem_c *); -extern int ClObjTris_ct(GAME *, ClObjTris_c *); -extern int ClObjTris_dt_nzf(GAME *, ClObjTris_c *); -extern int ClObjTris_set5_nzm(GAME *, ClObjTris_c *, ACTOR *, ClObjTrisData_c *, ClObjTrisElem_c *); -extern int ClObjTris_OCClear(GAME *, ClObj_c *); -extern void CollisionCheck_ct(GAME *, CollisionCheck_c *); -extern void CollisionCheck_dt(GAME *, CollisionCheck_c *); -extern void CollisionCheck_clear(GAME *, CollisionCheck_c *); -extern int CollisionCheck_setOC(GAME *, CollisionCheck_c *, ClObj_c *); +extern void CollisionCheck_workTrisElemCenter(ClObjTrisElem_c*, xyz_t*); +extern int ClObj_ct(GAME*, ClObj_c*); +extern int ClObj_dt(GAME*, ClObj_c*); +extern int ClObj_set4(GAME*, ClObj_c*, ACTOR*, ClObjData_c*); +extern void ClObj_OCClear(GAME*, ClObj_c*); +extern int ClObjElem_ct(ClObjElem_c*); +extern int ClObjElem_set(ClObjElem_c*, ClObjElemData_c*); +extern void ClObjElem_OCClear(GAME*, ClObjElem_c*); +extern int ClObjJntSphElem_OCClear(GAME*, ClObjJntSphElem_c*); +extern int ClObjJntSph_OCClear(GAME*, ClObj_c*); +extern int ClObjPipeAttr_ct(GAME*, ClObjPipeAttr_c*); +extern int ClObjPipeAttr_dt(GAME*, ClObjPipeAttr_c*); +extern int ClObjPipeAttr_set(GAME*, ClObjPipeAttr_c*, ClObjPipeAttr_c*); +extern int ClObjPipe_ct(GAME*, ClObjPipe_c*); +extern int ClObjPipe_dt(GAME*, ClObjPipe_c*); +extern int ClObjPipe_set5(GAME*, ClObjPipe_c*, ACTOR*, ClObjPipeData_c*); +extern int ClObjPipe_OCClear(GAME*, ClObj_c*); +extern int ClObjTrisElemAttr_ct(GAME*, ClObjTrisElemAttr_c*); +extern int ClObjTrisElemAttr_dt(GAME*, ClObjTrisElemAttr_c*); +extern int ClObjTrisElemAttr_set(GAME*, ClObjTrisElemAttr_c*, ClObjTrisElemAttrData_c*); +extern int ClObjTrisElem_ct(GAME*, ClObjTrisElem_c*); +extern int ClObjTrisElem_dt(GAME*, ClObjTrisElem_c*); +extern int ClObjTrisElem_set(GAME*, ClObjTrisElem_c*, ClObjTrisElemData_c*); +extern int ClObjTrisElem_OCClear(GAME*, ClObjTrisElem_c*); +extern int ClObjTris_ct(GAME*, ClObjTris_c*); +extern int ClObjTris_dt_nzf(GAME*, ClObjTris_c*); +extern int ClObjTris_set5_nzm(GAME*, ClObjTris_c*, ACTOR*, ClObjTrisData_c*, ClObjTrisElem_c*); +extern int ClObjTris_OCClear(GAME*, ClObj_c*); +extern void CollisionCheck_ct(GAME*, CollisionCheck_c*); +extern void CollisionCheck_dt(GAME*, CollisionCheck_c*); +extern void CollisionCheck_clear(GAME*, CollisionCheck_c*); +extern int CollisionCheck_setOC(GAME*, CollisionCheck_c*, ClObj_c*); extern int get_type(u8); -extern void CollisionCheck_setOC_HitInfo(ClObj_c *, ClObjElem_c *, xyz_t *, ClObj_c *, ClObjElem_c *, xyz_t *, f32); -extern void CollisionCheck_OC_JntSph_Vs_JntSph(GAME *, CollisionCheck_c *, ClObj_c *, ClObj_c *); -extern void CollisionCheck_OC_JntSph_Vs_Pipe(GAME *, CollisionCheck_c *, ClObj_c *, ClObj_c *); -extern void CollisionCheck_OC_Pipe_Vs_JntSph(GAME *, CollisionCheck_c *, ClObj_c *, ClObj_c *); -extern void CollisionCheck_OC_Pipe_Vs_Pipe(GAME *, CollisionCheck_c *, ClObj_c *, ClObj_c *); -extern int CollisionCheck_Check1ClObjNoOC(ClObj_c *); -extern int CollisionCheck_Check2ClObjNoOC(ClObj_c *, ClObj_c *); -extern void CollisionCheck_OC(GAME *, CollisionCheck_c *); -extern void CollisionCheck_setOCC_HitInfo(GAME *, ClObj_c *, ClObjTrisElem_c *, xyz_t *, ClObj_c *, ClObjElem_c *, xyz_t *, xyz_t *); -extern void CollisionCheck_OCC_Tris_Vs_JntSph(GAME *, CollisionCheck_c *, ClObjTris_c *, ClObjJntSph_c *); -extern void CollisionCheck_OCC_Tris_Vs_Pipe(GAME *, CollisionCheck_c *, ClObjTris_c *, ClObjPipe_c *); -extern int CollisionCheck_Check1ClObjNoOCC(ClObj_c *); -extern void CollisionCheck_OCC(GAME *, CollisionCheck_c *); -extern int ClObjTrisElem_OCCClear(GAME *, ClObjTrisElem_c *); -extern int ClObj_OCCClear(GAME *, ClObj_c *); -extern int ClObjTris_OCCClear(GAME *, ClObj_c *); -extern int CollisionCheck_setOCC(GAME *, CollisionCheck_c *, ClObj_c *); -extern void CollisionCheck_Status_ct(Status_c *); -extern void CollisionCheck_Status_Clear(Status_c *); -extern void CollisionCheck_Status_set3(Status_c *, StatusData_c *); -extern int CollisionCheck_Uty_ActorWorldPosSetPipeC(ACTOR *, ClObjPipe_c *); - - +extern void CollisionCheck_setOC_HitInfo(ClObj_c*, ClObjElem_c*, xyz_t*, ClObj_c*, ClObjElem_c*, xyz_t*, f32); +extern void CollisionCheck_OC_JntSph_Vs_JntSph(GAME*, CollisionCheck_c*, ClObj_c*, ClObj_c*); +extern void CollisionCheck_OC_JntSph_Vs_Pipe(GAME*, CollisionCheck_c*, ClObj_c*, ClObj_c*); +extern void CollisionCheck_OC_Pipe_Vs_JntSph(GAME*, CollisionCheck_c*, ClObj_c*, ClObj_c*); +extern void CollisionCheck_OC_Pipe_Vs_Pipe(GAME*, CollisionCheck_c*, ClObj_c*, ClObj_c*); +extern int CollisionCheck_Check1ClObjNoOC(ClObj_c*); +extern int CollisionCheck_Check2ClObjNoOC(ClObj_c*, ClObj_c*); +extern void CollisionCheck_OC(GAME*, CollisionCheck_c*); +extern void CollisionCheck_setOCC_HitInfo(GAME*, ClObj_c*, ClObjTrisElem_c*, xyz_t*, ClObj_c*, ClObjElem_c*, xyz_t*, + xyz_t*); +extern void CollisionCheck_OCC_Tris_Vs_JntSph(GAME*, CollisionCheck_c*, ClObjTris_c*, ClObjJntSph_c*); +extern void CollisionCheck_OCC_Tris_Vs_Pipe(GAME*, CollisionCheck_c*, ClObjTris_c*, ClObjPipe_c*); +extern int CollisionCheck_Check1ClObjNoOCC(ClObj_c*); +extern void CollisionCheck_OCC(GAME*, CollisionCheck_c*); +extern int ClObjTrisElem_OCCClear(GAME*, ClObjTrisElem_c*); +extern int ClObj_OCCClear(GAME*, ClObj_c*); +extern int ClObjTris_OCCClear(GAME*, ClObj_c*); +extern int CollisionCheck_setOCC(GAME*, CollisionCheck_c*, ClObj_c*); +extern void CollisionCheck_Status_ct(Status_c*); +extern void CollisionCheck_Status_Clear(Status_c*); +extern void CollisionCheck_Status_set3(Status_c*, StatusData_c*); +extern int CollisionCheck_Uty_ActorWorldPosSetPipeC(ACTOR*, ClObjPipe_c*); #ifdef __cplusplus } diff --git a/include/m_player.h b/include/m_player.h index c02169eb..8bad75dd 100644 --- a/include/m_player.h +++ b/include/m_player.h @@ -1382,7 +1382,7 @@ struct player_actor_s { /* 0x0D14 */ int settled_requested_main_index_priority; /* 0x0D18 */ mPlayer_main_data main_data; // TODO: Union of many types... /* 0x0D60 */ mPlayer_request_main_data requested_main_index_data; // Union of many types... - /* 0x0DA8 */ u8 _0DA8[0x0DB4 - 0x0DA8]; /* TODO: finish */ + /* 0x0DA8 */ u8 _0DA8[0x0DB4 - 0x0DA8]; /* unused */ /* 0x0DB4 */ int animation0_idx; /* 0x0DB8 */ int animation1_idx; /* 0x0DBC */ int _0DBC; @@ -1402,7 +1402,29 @@ struct player_actor_s { /* 0x0E50 */ xyz_t net_bot_col_pos; /* 0x0E5C */ s_xyz net_angle; /* 0x0E64 */ ACTOR* umbrella_actor; - /* 0x0E68 */ u8 _0E68[0x1004 - 0x0E68]; // TODO + /* 0x0E68 */ int umbrella_state; + /* 0x0E6C */ s8 unable_hand_item_in_demo; + /* 0x0E6D */ s8 able_hand_all_item_in_demo; + /* 0x0E70 */ u32 item_net_catch_label; + /* 0x0E74 */ s8 item_net_catch_type; + /* 0x0E75 */ s8 item_net_has_catch; + /* 0x0E78 */ u32 item_net_catch_label_request_table[8]; + /* 0x0E98 */ s8 item_net_catch_type_request_table[8]; + /* 0x0EA0 */ xyz_t item_net_catch_pos_request_table[8]; + /* 0x0F00 */ f32 item_net_catch_radius_request_table[8]; + /* 0x0F20 */ int item_net_catch_request_use_count; + /* 0x0F24 */ u32 item_net_catch_label_request_force; + /* 0x0F28 */ s8 item_net_catch_type_request_force; + /* 0x0F2C */ int item_net_catch_insect_idx; + /* 0x0F30 */ ACTOR* fishing_rod_actor_p; + /* 0x0F34 */ xyz_t item_rod_top_pos; + /* 0x0F40 */ xyz_t item_rod_virtual_top_pos; + /* 0x0F4C */ int update_item_rod_top_pos; + /* 0x0F50 */ s16 item_rod_angle_z; + /* 0x0F54 */ ClObjTris_c item_axe_tris; + /* 0x0F68 */ ClObjTrisElem_c item_axe_tris_elem_tbl[1]; + /* 0x0FAC */ ClObjTris_c item_net_tris; + /* 0x0FC0 */ ClObjTrisElem_c item_net_tris_elem_tbl[1]; /* 0x1004 */ xyz_t scoop_pos; /* 0x1010 */ ClObjPipe_c col_pipe; /* 0x102C */ xyz_t head_pos; @@ -1429,8 +1451,16 @@ struct player_actor_s { /* 0x116A */ s_xyz windmill_angle; /* 0x1170 */ int balloon_start_pos_set_flag; /* 0x1174 */ ACTOR* balloon_actor; - /* 0x1178 */ u8 _1178[0x1198 - 0x1178]; // TODO - /* 0x1198 */ s8 _1198; + /* 0x1178 */ s16 balloon_lean_angle; + /* 0x117A */ s_xyz balloon_angle; + /* 0x1180 */ f32 balloon_add_rot_z; + /* 0x1184 */ f32 balloon_anim_max_frame; + /* 0x1188 */ f32 balloon_anim_speed; + /* 0x118C */ int balloon_stop_movement_flag; + /* 0x1190 */ s16 ballon_add_rot_x; + /* 0x1192 */ s16 balloon_add_rot_x_counter; + /* 0x1194 */ f32 balloon_current_frame; + /* 0x1198 */ s8 address_able_display; /* 0x119A */ s_xyz head_angle; /* 0x11A0 */ xyz_t force_position; /* 0x11AC */ s_xyz force_angle; @@ -1439,8 +1469,10 @@ struct player_actor_s { /* 0x11C0 */ int shake_tree_ut_x[3]; /* 0x11CC */ int shake_tree_ut_z[3]; /* 0x11D8 */ int shake_tree_little[3]; - /* 0x11E4 */ u8 _11E4[0x11F8 - 0x11E4]; // TODO - /* 0x11F8 */ s8 _11F8; + /* 0x11E4 */ xyz_t pitfall_pos; + /* 0x11F0 */ int pitfall_flag; + /* 0x11F4 */ f32 ripple_timer; + /* 0x11F8 */ s8 ripple_foot_idx; // == 0: left, != 0: right /* 0x11F9 */ s8 bgm_volume_mode; /* 0x11FC */ int crash_snowball_for_wade; /* 0x1200 */ xyz_t snowball_dist; From 7c01090bdadf8f3224937ecbaca648dc67dfd6bd Mon Sep 17 00:00:00 2001 From: Prakxo Date: Mon, 19 Aug 2024 23:19:21 +0200 Subject: [PATCH 120/234] Match m_player_sound.c_inc --- include/audio.h | 6 +- include/audio_defs.h | 5 +- include/jaudio_NES/game64.h | 4 +- src/ac_my_room_move.c_inc | 2 +- src/ac_npc_sendo_move.c_inc | 4 +- src/audio.c | 8 +- src/m_player_sound.c_inc | 342 ++++++++++++++++++++++++++++++++++++ 7 files changed, 356 insertions(+), 15 deletions(-) diff --git a/include/audio.h b/include/audio.h index e5dd0c1f..aa417578 100644 --- a/include/audio.h +++ b/include/audio.h @@ -54,8 +54,8 @@ extern void sAdo_BgmStart(u8 id); extern void sAdo_BgmStop(u16 id); extern void sAdo_SysTrgStart(u16 id); -extern void sAdo_PlyWalkSe(int walk, const xyz_t* pos); -extern void sAdo_PlyWalkSeRoom(int walk, const xyz_t* pos); +extern void sAdo_PlyWalkSe(u16 walk, const xyz_t* pos); +extern void sAdo_PlyWalkSeRoom(u8 walk, const xyz_t* pos); extern void sAdo_NpcWalkSe(int walk, const xyz_t* pos); extern void sAdo_NpcWalkSeRoom(int walk, const xyz_t* pos); @@ -132,7 +132,7 @@ extern void sAdo_Museum(u8 type); extern void sAdo_SoftReset(); extern u16 sAdo_Get_WalkLabel(int type); -extern int sAdo_Get_KokeruLabel(int type); +extern u16 sAdo_Get_KokeruLabel(int type); extern void sAdo_SceneMode(u8 mode); extern u8 sAdo_RoomIncectPos(u32 f, u16 u, const xyz_t* pos); diff --git a/include/audio_defs.h b/include/audio_defs.h index eb3399ed..761b40bd 100644 --- a/include/audio_defs.h +++ b/include/audio_defs.h @@ -45,8 +45,7 @@ typedef enum audio_sound_effects { NA_SE_DRAWER_SHUT = 0x3A, NA_SE_ITEM_GET = 0x40, - NA_SE_ITEM_HORIDASHI = 0x47, - + NA_SE_47 = 0x47, NA_SE_MONEY0 = 0x49, NA_SE_MONEY1, NA_SE_MONEY2, @@ -54,7 +53,7 @@ typedef enum audio_sound_effects { NA_SE_52 = 0x52, - NA_SE_BIRTH_FTR = 0x57, + NA_SE_ITEM_HORIDASHI = 0x57, NA_SE_CLEAN_UP_FTR = 0x58, NA_SE_TOOL_FURI = 0x5A, // swing? diff --git a/include/jaudio_NES/game64.h b/include/jaudio_NES/game64.h index c9c0de6d..d39524aa 100644 --- a/include/jaudio_NES/game64.h +++ b/include/jaudio_NES/game64.h @@ -14,8 +14,8 @@ extern void Na_BgmStart(u8); extern void Na_BgmCrossfadeStart(u8); extern void Na_BgmStop(u16); extern void Na_SysTrgStart(u16); -extern void Na_PlyWalkSe(int, u16, f32); -extern void Na_PlyWalkSeRoom(int, u16, f32); +extern void Na_PlyWalkSe(u16, u16, f32); +extern void Na_PlyWalkSeRoom(u8, u16, f32); extern void Na_NpcWalkSe(int, u16, f32); extern void Na_NpcWalkSeRoom(int, u16, f32); extern void Na_PlayerStatusLevel(f32, int); diff --git a/src/ac_my_room_move.c_inc b/src/ac_my_room_move.c_inc index 7a87261f..a71def25 100644 --- a/src/ac_my_room_move.c_inc +++ b/src/ac_my_room_move.c_inc @@ -2354,7 +2354,7 @@ static void aMR_BirthWait(FTR_ACTOR* ftr_actor, GAME* game, MY_ROOM_ACTOR* my_ro if (ftr_actor->id == my_room->rsv_ftr[i].free_no) { if (my_room->rsv_ftr[i].frames <= 0) { ftr_actor->state = aFTR_STATE_BIRTH; - sAdo_OngenTrgStart(NA_SE_BIRTH_FTR, &ftr_actor->position); + sAdo_OngenTrgStart(NA_SE_ITEM_HORIDASHI, &ftr_actor->position); } break; diff --git a/src/ac_npc_sendo_move.c_inc b/src/ac_npc_sendo_move.c_inc index acb82443..8b62a29b 100644 --- a/src/ac_npc_sendo_move.c_inc +++ b/src/ac_npc_sendo_move.c_inc @@ -370,12 +370,12 @@ static int aSEN_get_msg_no(NPC_SENDO_ACTOR* sendo, int msg_no) { static void aSEN_agb_trans_se_proc(NPC_SENDO_ACTOR* sendo, int enable) { if (enable == TRUE) { if (sendo->agb_trans_se == FALSE) { - sAdo_SysLevStart(NA_SE_ITEM_HORIDASHI); + sAdo_SysLevStart(NA_SE_47); sendo->agb_trans_se = TRUE; } } else { if (sendo->agb_trans_se == TRUE) { - sAdo_SysLevStop(NA_SE_ITEM_HORIDASHI); + sAdo_SysLevStop(NA_SE_47); sendo->agb_trans_se = FALSE; } } diff --git a/src/audio.c b/src/audio.c index d02bd1f8..07d1a928 100644 --- a/src/audio.c +++ b/src/audio.c @@ -60,7 +60,7 @@ extern void sAdo_SysTrgStart(u16 id) { Na_SysTrgStart(id); } -extern void sAdo_PlyWalkSe(int walk, const xyz_t* pos) { +extern void sAdo_PlyWalkSe(u16 walk, const xyz_t* pos) { f32 fcalc; u16 scalc; @@ -69,7 +69,7 @@ extern void sAdo_PlyWalkSe(int walk, const xyz_t* pos) { Na_PlyWalkSe(walk, scalc, fcalc); } -extern void sAdo_PlyWalkSeRoom(int walk, const xyz_t* pos) { +extern void sAdo_PlyWalkSeRoom(u8 walk, const xyz_t* pos) { f32 fcalc; u16 scalc; @@ -400,10 +400,10 @@ u16 sAdo_Get_WalkLabel(int type) { return ret; } -int sAdo_Get_KokeruLabel(int type) { +u16 sAdo_Get_KokeruLabel(int type) { u16 label = sAdo_Get_WalkLabel(type); - int ret; + u16 ret; switch (label) { case 0x4201: diff --git a/src/m_player_sound.c_inc b/src/m_player_sound.c_inc index e69de29b..0e0b92a4 100644 --- a/src/m_player_sound.c_inc +++ b/src/m_player_sound.c_inc @@ -0,0 +1,342 @@ +typedef enum player_status_level_s { + mPlayer_WAIT, + mPlayer_WALK, + mPlayer_RUN, + mPlayer_DASH, +}mPlayer_STATUS_LEVEL; + +void Player_actor_sound_SetStatus(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int status; + f32 speed; + + status = player->now_main_index; + speed = player->keyframe0.frame_control.speed / 0.6f; + + switch (status) { + case mPlayer_INDEX_READY_WALK_NET: + case mPlayer_INDEX_DEMO_WALK: + case mPlayer_INDEX_WALK: + status = mPlayer_WALK; + break; + case mPlayer_INDEX_RUN: + status = mPlayer_RUN; + break; + case mPlayer_INDEX_DASH: + status = mPlayer_DASH; + break; + default: + status = 0; + break; + } + if (speed > 1.0f) { + speed = 1.0f; + } else if (speed < 0.0f) { + speed = 0.0f; + } + sAdo_PlayerStatusLevel(speed, status); +} + +void Player_actor_set_sound_common1(xyz_t* pos, u16 id) { + sAdo_OngenTrgStart(id, pos); +} + +void Player_actor_set_sound_common2(ACTOR* actor, u16 id) { + Player_actor_set_sound_common1(&actor->world.position,id); +} + +void Player_actor_sound_FootStep1(ACTOR* actor, u16 id){ + xyz_t* pos = &actor->world.position; + xyz_t apos; + int check; + u32 attr; + + apos = *pos; + + attr = mCoBG_Wpos2Attribute(apos,0); + if(sAdo_CheckOnPlussBridge(pos,attr)){ + id = 0x420A; + } + + sAdo_PlyWalkSe(id, pos); +} + +void Player_actor_sound_FootStep2(ACTOR* actor) { + int floorId; + + floorId = Common_Get(floor_idx); + if (floorId >= 0) { + if (mRmTp_SoundStepWalkSE(&actor->world.position) != 0) { + sAdo_PlyWalkSeRoom(0xFF, &actor->world.position); + } + else if (floorId < 0x56) { + sAdo_PlyWalkSeRoom(floorId, &actor->world.position); + } + } else { + u16 label = sAdo_Get_WalkLabel(actor->bg_collision_check.result.unit_attribute); + Player_actor_sound_FootStep1(actor, label); + } +} + +void Player_actor_sound_Tumble(ACTOR* actor) { + u16 label = sAdo_Get_KokeruLabel(actor->bg_collision_check.result.unit_attribute); + Player_actor_set_sound_common2(actor, label); +} + +void Player_actor_sound_AMI_FURI(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_set_sound_common1(&player->net_pos, NA_SE_TOOL_FURI); +} + +void Player_actor_sound_AMI_HIT(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_set_sound_common1(&player->net_pos, NA_SE_AMI_HIT); +} + +void Player_actor_sound_AMI_GET(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_set_sound_common1(&player->net_pos, NA_SE_TOOL_GET); +} + +void Player_actor_sound_GASAGOSO(ACTOR* actor) { + Player_actor_set_sound_common2(actor,0x69); +} + +void Player_actor_sound_AXE_FURI(ACTOR* actor) { + Player_actor_set_sound_common2(actor,NA_SE_TOOL_FURI); +} + +void Player_actor_sound_AXE_HIT(ACTOR* actor,xyz_t* pos) { + xyz_t posA; + + posA.x = pos->x; + posA.z = pos->z; + posA.y = actor->world.position.y + 20.0f; + + Player_actor_set_sound_common1(&posA, 0x41D); +} + +void Player_actor_sound_AXE_CUT(ACTOR* actor,xyz_t* pos) { + xyz_t posA; + + posA.x = pos->x; + posA.z = pos->z; + posA.y = actor->world.position.y + 20.0f; + + Player_actor_set_sound_common1(&posA, 0x41E); +} + +void Player_actor_sound_SIT(ACTOR* actor, int ftr_idx){ + int id = mRmTp_GetFtrActionSE(ftr_idx, mRmTp_CHAIR_ACTION_SIT); + + if(id >= 0){ + Player_actor_set_sound_common2(actor,id); + } + else{ + Player_actor_set_sound_common2(actor,NA_SE_HARD_CHAIR_SIT); + } +} + +void Player_actor_sound_STANDUP(ACTOR* actor, int ftr_idx){ + int id = mRmTp_GetFtrActionSE(ftr_idx,1); + + if(id >= 0){ + Player_actor_set_sound_common2(actor,id); + } + else{ + Player_actor_set_sound_common2(actor,NA_SE_HARD_CHAIR_STANDUP); + } +} + +void Player_actor_sound_JUMP(ACTOR* actor) { + Player_actor_set_sound_common2(actor,NA_SE_JUMP); +} + +void Player_actor_sound_LANDING(ACTOR* actor) { + Player_actor_set_sound_common2(actor,NA_SE_LANDING); +} + +void Player_actor_sound_ITEM_GET(ACTOR* actor) { + Player_actor_set_sound_common2(actor,NA_SE_ITEM_GET); +} + +void Player_actor_sound_BED_IN(ACTOR* actor) { + Player_actor_set_sound_common2(actor,NA_SE_BED_IN); +} + +void Player_actor_sound_BED_NEGAERI(ACTOR* actor) { + Player_actor_set_sound_common2(actor,NA_SE_BED_NEGAERI); +} + +void Player_actor_sound_BED_OUT(ACTOR* actor) { + Player_actor_set_sound_common2(actor,NA_SE_BED_OUT); +} + +void Player_actor_sound_ROD_STROKE(ACTOR* actor) { + Player_actor_set_sound_common2(actor,NA_SE_ROD_STROKE); +} + +void Player_actor_sound_ROD_STROKE_small(ACTOR* actor) { + Player_actor_set_sound_common2(actor,NA_SE_ROD_STROKE_SMALL); +} + +void Player_actor_sound_ROD_BACK(ACTOR* actor) { + Player_actor_set_sound_common2(actor,NA_SE_ROD_BACK); +} + +void Player_actor_sound_scoop1(ACTOR* actor) { + Player_actor_set_sound_common2(actor,NA_SE_SCOOP1); +} + +void Player_actor_sound_scoop_umeru(ACTOR* actor) { + Player_actor_set_sound_common2(actor,NA_SE_SCOOP_UMERU); +} + +void Player_actor_sound_scoop_hit(ACTOR* actor) { + Player_actor_set_sound_common2(actor,NA_SE_SCOOP_HIT); +} + +void Player_actor_sound_scoop_shigemi(ACTOR* actor) { + Player_actor_set_sound_common2(actor,NA_SE_SCOOP_SHIGEMI); +} + +void Player_actor_sound_ITEM_HORIDASHI(ACTOR* actor){ + Player_actor_set_sound_common2(actor,NA_SE_ITEM_HORIDASHI); +} + +void Player_actor_sound_slip(ACTOR* actor){ + Player_actor_set_sound_common2(actor,0x4129); +} + +void Player_actor_sound_tree_touch(xyz_t* pos){ + sAdo_OngenTrgStart(NA_SE_TREE_TOUCH,pos); +} + +void Player_actor_sound_tree_yurasu(xyz_t* pos){ + sAdo_OngenTrgStart(NA_SE_TREE_YURASU,pos); +} + +void Player_actor_sound_kirikabu_scoop(ACTOR* actor){ + Player_actor_set_sound_common2(actor,NA_SE_KIRIBASU_SCOOP); +} + +void Player_actor_sound_kirikabu_out(ACTOR* actor){ + Player_actor_set_sound_common2(actor,NA_SE_KIRIBASU_OUT); +} + +void Player_actor_sound_knock(ACTOR* actor){ + Player_actor_set_sound_common2(actor,NA_SE_SOUND_KNOCK); +} + +void Player_actor_sound_coin_gasagoso(ACTOR* actor){ + Player_actor_set_sound_common2(actor,NA_SE_COIN_GASAGOSO); +} + +void Player_actor_sound_araiiki(ACTOR* actor){ + s8 gender = Common_Get(now_private)->gender; + + Player_actor_set_sound_common2(actor,(gender == 0) ? (u16)NA_SE_ARAIIKI_BOY : (u16)NA_SE_ARAIIKI_GIRL); +} + +void Player_actor_sound_zassou_nuku(xyz_t* pos) { + sAdo_OngenTrgStart(NA_SE_ZASSOU_NUKU,pos); +} + +void Player_actor_sound_hachi_sasareru(ACTOR* actor){ + Player_actor_set_sound_common2(actor,NA_SE_HACHI_SASARERU); +} + +void Player_actor_sound_wear(ACTOR* actor){ + Player_actor_set_sound_common2(actor,NA_SE_WEAR); +} + +void Player_actor_sound_dai_ue_kakunou(ACTOR* actor){ + Player_actor_set_sound_common2(actor,NA_SE_DAI_UE_KAKUNOU); +} + +void Player_actor_sound_umbrella_rotate(ACTOR* actor){ + Player_actor_set_sound_common2(actor,NA_SE_UMBRELLA_ROTATE); +} + +u16 Player_actor_sound_Get_bgm_num_forCompletePayment() { + switch(Common_Get(complete_payment_type)){ + case 1: + return NA_SE_MONEY0; + default: + return NA_SE_MONEY1; + } +} + +u16 Player_actor_sound_Get_bgm_num_forDemoGetGoldenItem(int type) { + switch (type) { + case 0: + return NA_SE_MONEY0; + case 1: + return NA_SE_MONEY2; + case 2: + return NA_SE_COIN; + default: + return NA_SE_MONEY1; + } +} + + +void Player_actor_sound_camera_move1(void) { + sAdo_SysTrgStart(NA_SE_CAMERA_MOVE1); +} + +void Player_actor_sound_camera_move2() { + sAdo_SysTrgStart(NA_SE_CAMERA_MOVE2); +} + +void Player_actor_sound_karaburi(ACTOR* actor) { + Player_actor_set_sound_common2(actor,NA_SE_KARABURI); +} + +void Player_actor_sound_scoop_tree_hit(ACTOR* actor) { + Player_actor_set_sound_common2(actor,NA_SE_SCOOP_TREE_HIT); +} + +void Player_actor_sound_scoop_item_hit(ACTOR* actor) { + Player_actor_set_sound_common2(actor,NA_SE_SCOOP_ITEM_HIT); +} + +void Player_actor_sound_axe_ball_hit(ACTOR* actor) { + Player_actor_set_sound_common2(actor,NA_SE_SCOOP_ITEM_HIT); +} + +void Player_actor_sound_axe_broken1(ACTOR* actor) { + Player_actor_set_sound_common2(actor,NA_SE_TOOL_BROKEN1); +} + +void Player_actor_sound_axe_broken2(ACTOR* actor) { + Player_actor_set_sound_common2(actor,NA_SE_TOOL_BROKEN2); +} + +void Player_actor_sound_axe_broken3(ACTOR* actor) { + Player_actor_set_sound_common2(actor,NA_SE_TOOL_BROKEN3); +} + +void Player_actor_sound_uchiwa(ACTOR* actor) { + Player_actor_set_sound_common2(actor,NA_SE_UCHIWA); +} + +void Player_actor_sound_move_temochi_kazaguruma(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + f32 speed; + + speed = ABS(player->item_keyframe.frame_control.speed / 44.0f); + + if (speed > 1.0f) { + speed = 1.0f; + } else if (speed < 0.0f) { + speed = 0.0f; + } + if (speed != 0.0f) { + sAdo_kazagurumaLevel(speed); + sAdo_OngenPos((u32) player, NA_SE_TEMOCHI_KAZAGURUMA, &actor->world.position); + } +} \ No newline at end of file From be6a3f71ab56a19f7211e61270a3ebec31839001 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Mon, 19 Aug 2024 23:20:22 +0200 Subject: [PATCH 121/234] Match m_player_vibration.c_inc --- src/m_player_vibration.c_inc | 53 ++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/src/m_player_vibration.c_inc b/src/m_player_vibration.c_inc index e69de29b..84099769 100644 --- a/src/m_player_vibration.c_inc +++ b/src/m_player_vibration.c_inc @@ -0,0 +1,53 @@ +void Player_actor_set_viblation_common1(int total_frames, int attack_type, int sustain_type, int release_type, + int attack_frames, int sustain_frames, int release_frames) { + mVibctl_entry(total_frames, attack_type, sustain_type, release_type, attack_frames, sustain_frames, release_frames, + 0.0f); +} + +void Player_actor_set_viblation_Dig_scoop() { + Player_actor_set_viblation_common1(100, 1, 7, 1, 0, 18, 0); +} + +void Player_actor_set_viblation_Dig_scoop_stump() { + Player_actor_set_viblation_common1(100, 1, 8, 1, 1, 60, 0); +} + +void Player_actor_set_viblation_Fill_scoop() { + Player_actor_set_viblation_common1(0x50, 1, 8, 1, 6, 60, 0); +} + +void Player_actor_set_viblation_Reflect_scoop_hard() { + Player_actor_set_viblation_common1(100, 1, 9, 1, 3, 9, 0); +} + +void Player_actor_set_viblation_Reflect_scoop_soft() { + Player_actor_set_viblation_common1(0x5A, 1, 1, 1, 2, 4, 0); +} + +void Player_actor_set_viblation_Swing_net() { + Player_actor_set_viblation_common1(100, 1, 1, 1, 2, 4, 0); +} + +void Player_actor_set_viblation_Shake_tree() { + Player_actor_set_viblation_common1(100, 0, 11, 5, 0, 34, 0); +} + +void Player_actor_set_viblation_Axe_hard() { + Player_actor_set_viblation_Reflect_scoop_hard(); +} + +void Player_actor_set_viblation_Axe_soft() { + Player_actor_set_viblation_Reflect_scoop_soft(); +} + +void Player_actor_set_viblation_Axe_cut() { + Player_actor_set_viblation_common1(100, 1, 10, 1, 3, 36, 0); +} + +void Player_actor_set_viblation_Tumble() { + Player_actor_set_viblation_common1(100, 1, 12, 1, 3, 14, 0); +} + +void Player_actor_set_viblation_Remove_grass() { + Player_actor_set_viblation_common1(90, 1, 1, 1, 0, 1, 10); +} \ No newline at end of file From 6a6fa3a8badb3c5cbc3aedc0a3b56adbe9ddac73 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Mon, 19 Aug 2024 23:32:49 +0200 Subject: [PATCH 122/234] Match m_player_item_common.c_inc --- include/ac_uki.h | 12 + include/m_player.h | 27 ++ include/m_player_lib.h | 2 + src/m_player_item_common.c_inc | 723 +++++++++++++++++++++++++++++++++ 4 files changed, 764 insertions(+) diff --git a/include/ac_uki.h b/include/ac_uki.h index fa52ce6a..6f3005b9 100644 --- a/include/ac_uki.h +++ b/include/ac_uki.h @@ -10,6 +10,18 @@ extern "C" { extern ACTOR_PROFILE Uki_Profile; +typedef struct actor_uki_s { + ACTOR actor_class; + u8 pad[0xA4]; + xyz_t right_hand_pos; + xyz_t position_speed; + int angle_speed_y; + int command; + u8 pad2[0x10]; + xyz_t rod_top_position; + xyz_t left_hand_pos; +} UKI_ACTOR; + #ifdef __cplusplus } #endif diff --git a/include/m_player.h b/include/m_player.h index 8bad75dd..11be4170 100644 --- a/include/m_player.h +++ b/include/m_player.h @@ -469,6 +469,23 @@ enum { mPlayer_ITEM_KIND_NUM /* Are there more? */ }; +#define mPlayer_ITEM_KIND_CHECK(kind, min, max) ((kind) >= (min) && (kind) < ((max) + 1)) +#define mPlayer_ITEM_IS_AXE(kind) mPlayer_ITEM_KIND_CHECK(kind, mPlayer_ITEM_KIND_AXE, mPlayer_ITEM_KIND_GOLD_AXE) +#define mPlayer_ITEM_IS_NET(kind) mPlayer_ITEM_KIND_CHECK(kind, mPlayer_ITEM_KIND_NET, mPlayer_ITEM_KIND_GOLD_NET) +#define mPlayer_ITEM_IS_ROD(kind) mPlayer_ITEM_KIND_CHECK(kind, mPlayer_ITEM_KIND_ROD, mPlayer_ITEM_KIND_GOLD_ROD) +#define mPlayer_ITEM_IS_SHOVEL(kind) \ + mPlayer_ITEM_KIND_CHECK(kind, mPlayer_ITEM_KIND_SHOVEL, mPlayer_ITEM_KIND_GOLD_SHOVEL) +#define mPlayer_ITEM_IS_UMBRELLA(kind) \ + mPlayer_ITEM_KIND_CHECK(kind, mPlayer_ITEM_KIND_UMBRELLA00, mPlayer_ITEM_KIND_ORG_UMBRELLA07) +#define mPlayer_ITEM_IS_BALLOON(kind) \ + mPlayer_ITEM_KIND_CHECK(kind, mPlayer_ITEM_KIND_RED_BALLOON, mPlayer_ITEM_KIND_BUNNY_O_BALLOON) +#define mPlayer_ITEM_IS_WINDMILL(kind) \ + mPlayer_ITEM_KIND_CHECK(kind, mPlayer_ITEM_KIND_YELLOW_PINWHEEL, mPlayer_ITEM_KIND_FANCY_PINWHEEL) +#define mPlayer_ITEM_IS_FAN(kind) \ + mPlayer_ITEM_KIND_CHECK(kind, mPlayer_ITEM_KIND_BLUEBELL_FAN, mPlayer_ITEM_KIND_LEAF_FAN) + +#define mPlayer_ITEM_KIND_VALID(kind) ((kind) >= 0 && kind < mPlayer_ITEM_KIND_NUM) + enum { mPlayer_ITEM_DATA_AXE, // model mPlayer_ITEM_DATA_AXE_B, // model @@ -1355,6 +1372,16 @@ typedef struct { mPlayer_request_main_data request_main_data; } mPlayer_change_data_from_submenu_c; +typedef struct controller_data_s { + MCON mcon; + s8 on; + s8 now; + s8 unk3A; + s8 unk3B; + mActor_name_t equiped_item; +} mPlayer_Controller_Data_c; + + /* sizeof(struct player_actor_s) == 0x13A8 */ struct player_actor_s { /* 0x0000 */ ACTOR actor_class; diff --git a/include/m_player_lib.h b/include/m_player_lib.h index 3ff376e0..1dd97404 100644 --- a/include/m_player_lib.h +++ b/include/m_player_lib.h @@ -12,6 +12,7 @@ extern "C" { extern void mPlib_Object_Exchange_keep_Player_dt(GAME_PLAY*); extern PLAYER_ACTOR* get_player_actor_withoutCheck(GAME_PLAY* play); +extern mPlayer_Controller_Data_c* mPlib_Get_controller_data_for_title_demo_p(); extern void mPlib_SetData1_controller_data_for_title_demo(f32 stick_x, f32 stick_y, int btn_a, int btn_b); extern void mPlib_SetData2_controller_data_for_title_demo(mActor_name_t tool); extern void mPlib_Clear_controller_data_for_title_demo(); @@ -54,6 +55,7 @@ extern int mPlib_Check_tree_shaken_little(const xyz_t* pos); extern int mPlib_request_main_recieve_wait_type1(GAME* game, mActor_name_t item, int counter_flag); extern int mPlib_able_player_warp_forEvent(); extern int mPlib_Get_unable_wade(); +extern s8 mPlib_Get_ItemNoToItemKind(mActor_name_t); extern void mPlib_Set_boat_angleZ(s16 angleZ); extern int mPlib_Get_end_player_demo_walk(); extern int mPlib_request_main_demo_geton_boat_type1(f32 goal_x, f32 goal_z, s16 angleY); diff --git a/src/m_player_item_common.c_inc b/src/m_player_item_common.c_inc index e69de29b..6a02eef3 100644 --- a/src/m_player_item_common.c_inc +++ b/src/m_player_item_common.c_inc @@ -0,0 +1,723 @@ +void Player_actor_Set_ItemNoSubmenu(mActor_name_t item) { + if (mEv_CheckTitleDemo() <= 0) { + Common_Get(now_private)->equipment = item; + } +} + +mActor_name_t Player_actor_Get_ItemNoSubmenu() { + if (mEv_CheckTitleDemo() > 0) { + return mPlib_Get_controller_data_for_title_demo_p()->equiped_item; + } else { + return Common_Get(now_private)->equipment; + } +} + +s8 Player_actor_Get_ItemKind_from_submenu() { + return mPlib_Get_ItemNoToItemKind(Player_actor_Get_ItemNoSubmenu()); +} + +s8 Player_actor_Get_ItemKind_fromScene() { + if (Player_actor_CheckScene_AbleOutItem(Save_Get(scene_no)) != 0) { + return Player_actor_Get_ItemKind_from_submenu(); + } + return -1; +} + + +s8 Player_actor_Get_ItemKind(ACTOR* actor, int kind) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int able = Player_actor_CheckPlayer_AbleLoadItem(kind); + s8 scene_kind = Player_actor_Get_ItemKind_fromScene(); + + if (player->unable_hand_item_in_demo != FALSE) { + return -1; + } else if (player->able_hand_all_item_in_demo != FALSE) { + return scene_kind; + } else { + if (able == 0) { + return scene_kind; + } else if (able == 1) { + int holdable = mPlayer_ITEM_IS_UMBRELLA(scene_kind) || mPlayer_ITEM_IS_BALLOON(scene_kind) || + mPlayer_ITEM_IS_WINDMILL(scene_kind) || mPlayer_ITEM_IS_FAN(scene_kind) + + ? TRUE + : FALSE; + + if (holdable) { + return scene_kind; + } + } + } + return -1; +} + +int Player_actor_Get_BasicItemMainIndex_fromItemKind(int kind) { + static s8 data[] = { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 20, + 20, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, + }; + + if (mPlayer_ITEM_KIND_VALID(kind)) { + return data[kind]; + } else { + return 0; + } +} + + +void Player_actor_birth_umbrella(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int is_umbrella; + aTOL_Clip_c* tools; + s8 kind; + + if (player->umbrella_actor == NULL) { + tools = Common_Get(clip).tools_clip; + if (tools != NULL && + (player->umbrella_state == 1 || player->umbrella_state == 4 || player->umbrella_state == 2)) { + is_umbrella = FALSE; + kind = player->item_kind; + if (mPlayer_ITEM_IS_UMBRELLA(kind)) { + is_umbrella = TRUE; + } + + if (is_umbrella) { + player->umbrella_actor = tools->aTOL_birth_proc(kind - mPlayer_ITEM_KIND_UMBRELLA00, + player->umbrella_state, actor, game, -1, 0); + + if (player->umbrella_actor != NULL) { + player->umbrella_actor->world.position = actor->world.position; + player->umbrella_actor->skip_drawing = TRUE; + } + } + } + } +} + +ACTOR* Player_actor_Get_umbrella_p(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + ACTOR* umbrella; + Player_actor_birth_umbrella(actor, game); + + umbrella = player->umbrella_actor; + if (umbrella != NULL) { + umbrella->skip_drawing = FALSE; + return umbrella; + } + + return NULL; +} + +int Player_actor_Item_CulcAnimation_Base(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + return cKF_SkeletonInfo_R_play(&player->item_keyframe); +} + +int Player_actor_Item_CulcAnimation_Base2(ACTOR* actor) { + return Player_actor_Item_CulcAnimation_Base(actor) == 1; +} + +void Player_actor_Item_SetAnimation_Base(ACTOR* actor, f32 frame) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + cKF_SkeletonInfo_R_c* keyf = &player->item_keyframe; + + keyf->frame_control.current_frame = frame; + cKF_SkeletonInfo_R_play(keyf); + keyf->frame_control.current_frame = frame; +} + +void Player_actor_Item_DMA_Data(ACTOR* actor, int skl_idx, int anim_idx, int mode, f32 speed, f32 morph_speed, + f32 frame) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int change_bank = Player_actor_Change_ItemBank(); + + if ((skl_idx >= 0) && (mPlib_Get_Item_DataPointerType(skl_idx) != 0)) { + cKF_Skeleton_R_c* skeleton; + cKF_SkeletonInfo_R_c* keyf; + s_xyz* joint_work; + s_xyz* morph_work; + cKF_SkeletonInfo_R_c* key2; + + keyf = &player->item_keyframe; + joint_work = player->item_joint_data; + morph_work = player->item_morph_data; + skeleton = mPlib_Get_Item_DataPointer(skl_idx); + + if (frame >= 0.0f) { + cKF_SkeletonInfo_R_ct(keyf, skeleton, NULL, joint_work, morph_work); + keyf->frame_control.current_frame = frame; + } else if (change_bank != 0) { + keyf->skeleton = skeleton; + keyf->animation = NULL; + } else { + cKF_SkeletonInfo_R_ct(keyf, skeleton, NULL, joint_work, morph_work); + } + key2 = &player->item_keyframe; + cKF_SkeletonInfo_R_init_standard_setframeandspeedandmorphandmode(key2, mPlib_Get_Item_DataPointer(anim_idx), + NULL, key2->frame_control.current_frame, speed, + morph_speed, mode); + } +} + + +void Player_actor_Item_Set_Command_forUki(ACTOR* actor, int command) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; + + if (rod != NULL) { + rod->command = command; + } +} + + +void Player_actor_Item_Set_RightHandPos_forUki(ACTOR* actor, int arg0) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; + + if (rod != NULL) { + s16 rot; + xyz_t pos; + f32 sin; + f32 cos; + switch (arg0) { + case 0x35: + case 0x36: + case 0x37: + pos = actor->world.position; + rot = actor->shape_info.rotation.y; + + cos = cos_s(rot); + sin = sin_s(rot); + + pos.z += (-2.0f * cos) - (12.0f * sin); + pos.x += (12.0f * cos) + (-2.0f * sin); + pos.y += 17.5f; + + rod->right_hand_pos = pos; + break; + default: + rod->right_hand_pos = player->right_hand_pos; + break; + } + } +} + + +void Player_actor_Item_Set_LeftHandPos_forUki(ACTOR* actor, int arg0) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; + + if (rod != NULL) { + s16 rot; + xyz_t pos; + f32 sin; + f32 cos; + switch (arg0) { + case 0x35: + case 0x36: + case 0x37: + pos = actor->world.position; + rot = actor->shape_info.rotation.y; + + cos = cos_s(rot); + sin = sin_s(rot); + + pos.z += (-2.0f * cos) - (12.0f * sin); + pos.x += (12.0f * cos) + (-2.0f * sin); + pos.y += 17.5f; + + rod->left_hand_pos = pos; + break; + default: + rod->left_hand_pos = player->left_hand_pos; + break; + } + } +} + + +void Player_actor_Item_Set_PosSpeed_forUki(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; + + if (rod != NULL) { + rod->position_speed = actor->position_speed; + } +} + +void Player_actor_Item_Set_AngleSpeedY_forUki(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; + + if (rod != NULL) { + int y = player->shape_angle_delta.y; + + if (y > 0) { + if (y > 0x8000) { + y = -(0x10000 - y); + } + } else if (y < -0x8000) { + y += 0x10000; + } + + rod->angle_speed_y = y; + } +} + +void Player_actor_Item_Set_RodTopPos_forUki(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; + + if (rod != NULL) { + Player_actor_Get_ItemRodTopInitPos(actor, &rod->rod_top_position); + } +} + + +void Player_actor_LoadOrDestruct_Item(ACTOR* actor, int kind, int anim_idx, int mode, f32 speed, f32 morph_speed, + f32 frame) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int umbrella; + int rod; + + if (kind >= 0) { + Player_actor_Item_DMA_Data(actor, mPlib_Get_BasicItemShapeIndex_fromItemKind(kind), anim_idx, mode, speed, + morph_speed, frame); + } + umbrella = FALSE; + if (mPlayer_ITEM_IS_UMBRELLA(kind)) { + umbrella = TRUE; + } + + if (!umbrella) { + if (player->umbrella_actor != NULL && Common_Get(clip).tools_clip != NULL) { + Common_Get(clip).tools_clip->aTOL_chg_request_mode_proc(actor, player->umbrella_actor, 3); + player->umbrella_actor = NULL; + } + + player->umbrella_state = 4; + } else { + TOOLS_ACTOR* tool = (TOOLS_ACTOR*)player->umbrella_actor; + if (tool != NULL && (kind - mPlayer_ITEM_KIND_UMBRELLA00) != tool->tool_name) { + if (Common_Get(clip).tools_clip != NULL) { + Common_Get(clip).tools_clip->aTOL_chg_request_mode_proc(actor, player->umbrella_actor, 3); + player->umbrella_actor = NULL; + } + + player->umbrella_state = 4; + } + } + + rod = FALSE; + if (mPlayer_ITEM_IS_ROD(kind)) { + rod = TRUE; + } + + if (!rod) { + Player_actor_Item_Set_Command_forUki(actor, 0); + } +} + + +void Player_actor_CorrectSomething_net(ACTOR* actor, xyz_t* pos) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + TOOLS_ACTOR* label = (TOOLS_ACTOR*)player->item_net_catch_label; + + if (label != NULL && player->item_net_catch_type == 0) { + Matrix_push(); + Matrix_translate(pos->x, pos->y, pos->z, FALSE); + Matrix_get(&label->matrix_work); + Matrix_pull(); + label->init_matrix = TRUE; + } +} + +int Player_actor_Check_ItemAnimationToItemKind(int kind, int anim) { + int res; + + if (mPlayer_ITEM_IS_AXE(kind) != FALSE) { + res = anim < 0; + } else if (mPlayer_ITEM_IS_NET(kind) != FALSE) { + res = mPlib_Get_Item_DataPointerType(anim) == mPlayer_ITEM_DATA_TYPE_NET_ANIMATION; + } else if (mPlayer_ITEM_IS_UMBRELLA(kind) != FALSE) { + res = anim < 0; + } else if (mPlayer_ITEM_IS_ROD(kind) != FALSE) { + res = mPlib_Get_Item_DataPointerType(anim) == mPlayer_ITEM_DATA_TYPE_ROD_ANIMATION; + } else if (mPlayer_ITEM_IS_SHOVEL(kind) != FALSE) { + res = anim < 0; + } else if (mPlayer_ITEM_IS_BALLOON(kind) != FALSE) { + res = anim < 0; + } else if (mPlayer_ITEM_IS_WINDMILL(kind) != FALSE) { + res = anim < 0; + } else { + res = FALSE; + } + + return res; +}samalv@debpc:~/ac-decomp/ac-decomp$ clang-format-14 ./src/m_player_item_common.c_inc > ./src/m_player_item_common.c_inc +samalv@debpc:~/ac-decomp/ac-decomp$ clang-format-14 ./src/m_player_item_common.c_inc | ./src/m_player_item_common.c_inc +bash: ./src/m_player_item_common.c_inc: Permission denied +samalv@debpc:~/ac-decomp/ac-decomp$ clang-format-14 ./src/m_player_item_common.c_inc +samalv@debpc:~/ac-decomp/ac-decomp$ clang-format-14 ./src/m_player_item_common.c_inc + +void Player_actor_Set_ItemNoSubmenu(mActor_name_t item) { + if (mEv_CheckTitleDemo() <= 0) { + Common_Get(now_private)->equipment = item; + } +} + +mActor_name_t Player_actor_Get_ItemNoSubmenu() { + if (mEv_CheckTitleDemo() > 0) { + return mPlib_Get_controller_data_for_title_demo_p()->equiped_item; + } else { + return Common_Get(now_private)->equipment; + } +} + +s8 Player_actor_Get_ItemKind_from_submenu() { + return mPlib_Get_ItemNoToItemKind(Player_actor_Get_ItemNoSubmenu()); +} + +s8 Player_actor_Get_ItemKind_fromScene() { + if (Player_actor_CheckScene_AbleOutItem(Save_Get(scene_no)) != 0) { + return Player_actor_Get_ItemKind_from_submenu(); + } + return -1; +} + + +s8 Player_actor_Get_ItemKind(ACTOR* actor, int kind) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int able = Player_actor_CheckPlayer_AbleLoadItem(kind); + s8 scene_kind = Player_actor_Get_ItemKind_fromScene(); + + if (player->unable_hand_item_in_demo != FALSE) { + return -1; + } else if (player->able_hand_all_item_in_demo != FALSE) { + return scene_kind; + } else { + if (able == 0) { + return scene_kind; + } else if (able == 1) { + int holdable = mPlayer_ITEM_IS_UMBRELLA(scene_kind) || mPlayer_ITEM_IS_BALLOON(scene_kind) || + mPlayer_ITEM_IS_WINDMILL(scene_kind) || mPlayer_ITEM_IS_FAN(scene_kind) + + ? TRUE + : FALSE; + + if (holdable) { + return scene_kind; + } + } + } + return -1; +} + +int Player_actor_Get_BasicItemMainIndex_fromItemKind(int kind) { + static s8 data[] = { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 20, + 20, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, + }; + + if (mPlayer_ITEM_KIND_VALID(kind)) { + return data[kind]; + } else { + return 0; + } +} + + +void Player_actor_birth_umbrella(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int is_umbrella; + aTOL_Clip_c* tools; + s8 kind; + + if (player->umbrella_actor == NULL) { + tools = Common_Get(clip).tools_clip; + if (tools != NULL && + (player->umbrella_state == 1 || player->umbrella_state == 4 || player->umbrella_state == 2)) { + is_umbrella = FALSE; + kind = player->item_kind; + if (mPlayer_ITEM_IS_UMBRELLA(kind)) { + is_umbrella = TRUE; + } + + if (is_umbrella) { + player->umbrella_actor = tools->aTOL_birth_proc(kind - mPlayer_ITEM_KIND_UMBRELLA00, + player->umbrella_state, actor, game, -1, 0); + + if (player->umbrella_actor != NULL) { + player->umbrella_actor->world.position = actor->world.position; + player->umbrella_actor->skip_drawing = TRUE; + } + } + } + } +} + +ACTOR* Player_actor_Get_umbrella_p(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + ACTOR* umbrella; + Player_actor_birth_umbrella(actor, game); + + umbrella = player->umbrella_actor; + if (umbrella != NULL) { + umbrella->skip_drawing = FALSE; + return umbrella; + } + + return NULL; +} + +int Player_actor_Item_CulcAnimation_Base(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + return cKF_SkeletonInfo_R_play(&player->item_keyframe); +} + +int Player_actor_Item_CulcAnimation_Base2(ACTOR* actor) { + return Player_actor_Item_CulcAnimation_Base(actor) == 1; +} + +void Player_actor_Item_SetAnimation_Base(ACTOR* actor, f32 frame) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + cKF_SkeletonInfo_R_c* keyf = &player->item_keyframe; + + keyf->frame_control.current_frame = frame; + cKF_SkeletonInfo_R_play(keyf); + keyf->frame_control.current_frame = frame; +} + +void Player_actor_Item_DMA_Data(ACTOR* actor, int skl_idx, int anim_idx, int mode, f32 speed, f32 morph_speed, + f32 frame) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int change_bank = Player_actor_Change_ItemBank(); + + if ((skl_idx >= 0) && (mPlib_Get_Item_DataPointerType(skl_idx) != 0)) { + cKF_Skeleton_R_c* skeleton; + cKF_SkeletonInfo_R_c* keyf; + s_xyz* joint_work; + s_xyz* morph_work; + cKF_SkeletonInfo_R_c* key2; + + keyf = &player->item_keyframe; + joint_work = player->item_joint_data; + morph_work = player->item_morph_data; + skeleton = mPlib_Get_Item_DataPointer(skl_idx); + + if (frame >= 0.0f) { + cKF_SkeletonInfo_R_ct(keyf, skeleton, NULL, joint_work, morph_work); + keyf->frame_control.current_frame = frame; + } else if (change_bank != 0) { + keyf->skeleton = skeleton; + keyf->animation = NULL; + } else { + cKF_SkeletonInfo_R_ct(keyf, skeleton, NULL, joint_work, morph_work); + } + key2 = &player->item_keyframe; + cKF_SkeletonInfo_R_init_standard_setframeandspeedandmorphandmode(key2, mPlib_Get_Item_DataPointer(anim_idx), + NULL, key2->frame_control.current_frame, speed, + morph_speed, mode); + } +} + + +void Player_actor_Item_Set_Command_forUki(ACTOR* actor, int command) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; + + if (rod != NULL) { + rod->command = command; + } +} + + +void Player_actor_Item_Set_RightHandPos_forUki(ACTOR* actor, int arg0) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; + + if (rod != NULL) { + s16 rot; + xyz_t pos; + f32 sin; + f32 cos; + switch (arg0) { + case 0x35: + case 0x36: + case 0x37: + pos = actor->world.position; + rot = actor->shape_info.rotation.y; + + cos = cos_s(rot); + sin = sin_s(rot); + + pos.z += (-2.0f * cos) - (12.0f * sin); + pos.x += (12.0f * cos) + (-2.0f * sin); + pos.y += 17.5f; + + rod->right_hand_pos = pos; + break; + default: + rod->right_hand_pos = player->right_hand_pos; + break; + } + } +} + + +void Player_actor_Item_Set_LeftHandPos_forUki(ACTOR* actor, int arg0) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; + + if (rod != NULL) { + s16 rot; + xyz_t pos; + f32 sin; + f32 cos; + switch (arg0) { + case 0x35: + case 0x36: + case 0x37: + pos = actor->world.position; + rot = actor->shape_info.rotation.y; + + cos = cos_s(rot); + sin = sin_s(rot); + + pos.z += (-2.0f * cos) - (12.0f * sin); + pos.x += (12.0f * cos) + (-2.0f * sin); + pos.y += 17.5f; + + rod->left_hand_pos = pos; + break; + default: + rod->left_hand_pos = player->left_hand_pos; + break; + } + } +} + + +void Player_actor_Item_Set_PosSpeed_forUki(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; + + if (rod != NULL) { + rod->position_speed = actor->position_speed; + } +} + +void Player_actor_Item_Set_AngleSpeedY_forUki(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; + + if (rod != NULL) { + int y = player->shape_angle_delta.y; + + if (y > 0) { + if (y > 0x8000) { + y = -(0x10000 - y); + } + } else if (y < -0x8000) { + y += 0x10000; + } + + rod->angle_speed_y = y; + } +} + +void Player_actor_Item_Set_RodTopPos_forUki(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; + + if (rod != NULL) { + Player_actor_Get_ItemRodTopInitPos(actor, &rod->rod_top_position); + } +} + + +void Player_actor_LoadOrDestruct_Item(ACTOR* actor, int kind, int anim_idx, int mode, f32 speed, f32 morph_speed, + f32 frame) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int umbrella; + int rod; + + if (kind >= 0) { + Player_actor_Item_DMA_Data(actor, mPlib_Get_BasicItemShapeIndex_fromItemKind(kind), anim_idx, mode, speed, + morph_speed, frame); + } + umbrella = FALSE; + if (mPlayer_ITEM_IS_UMBRELLA(kind)) { + umbrella = TRUE; + } + + if (!umbrella) { + if (player->umbrella_actor != NULL && Common_Get(clip).tools_clip != NULL) { + Common_Get(clip).tools_clip->aTOL_chg_request_mode_proc(actor, player->umbrella_actor, 3); + player->umbrella_actor = NULL; + } + + player->umbrella_state = 4; + } else { + TOOLS_ACTOR* tool = (TOOLS_ACTOR*)player->umbrella_actor; + if (tool != NULL && (kind - mPlayer_ITEM_KIND_UMBRELLA00) != tool->tool_name) { + if (Common_Get(clip).tools_clip != NULL) { + Common_Get(clip).tools_clip->aTOL_chg_request_mode_proc(actor, player->umbrella_actor, 3); + player->umbrella_actor = NULL; + } + + player->umbrella_state = 4; + } + } + + rod = FALSE; + if (mPlayer_ITEM_IS_ROD(kind)) { + rod = TRUE; + } + + if (!rod) { + Player_actor_Item_Set_Command_forUki(actor, 0); + } +} + + +void Player_actor_CorrectSomething_net(ACTOR* actor, xyz_t* pos) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + TOOLS_ACTOR* label = (TOOLS_ACTOR*)player->item_net_catch_label; + + if (label != NULL && player->item_net_catch_type == 0) { + Matrix_push(); + Matrix_translate(pos->x, pos->y, pos->z, FALSE); + Matrix_get(&label->matrix_work); + Matrix_pull(); + label->init_matrix = TRUE; + } +} + +int Player_actor_Check_ItemAnimationToItemKind(int kind, int anim) { + int res; + + if (mPlayer_ITEM_IS_AXE(kind) != FALSE) { + res = anim < 0; + } else if (mPlayer_ITEM_IS_NET(kind) != FALSE) { + res = mPlib_Get_Item_DataPointerType(anim) == mPlayer_ITEM_DATA_TYPE_NET_ANIMATION; + } else if (mPlayer_ITEM_IS_UMBRELLA(kind) != FALSE) { + res = anim < 0; + } else if (mPlayer_ITEM_IS_ROD(kind) != FALSE) { + res = mPlib_Get_Item_DataPointerType(anim) == mPlayer_ITEM_DATA_TYPE_ROD_ANIMATION; + } else if (mPlayer_ITEM_IS_SHOVEL(kind) != FALSE) { + res = anim < 0; + } else if (mPlayer_ITEM_IS_BALLOON(kind) != FALSE) { + res = anim < 0; + } else if (mPlayer_ITEM_IS_WINDMILL(kind) != FALSE) { + res = anim < 0; + } else { + res = FALSE; + } + + return res; +} \ No newline at end of file From d2361dede58701e6255f012317de4484414f96da Mon Sep 17 00:00:00 2001 From: Prakxo Date: Mon, 19 Aug 2024 23:37:11 +0200 Subject: [PATCH 123/234] Match m_player_other_func.c_inc --- src/m_player_other_func.c_inc | 308 ++++++++++++++++++++++++++++++++++ 1 file changed, 308 insertions(+) diff --git a/src/m_player_other_func.c_inc b/src/m_player_other_func.c_inc index e69de29b..49fc6727 100644 --- a/src/m_player_other_func.c_inc +++ b/src/m_player_other_func.c_inc @@ -0,0 +1,308 @@ + +void Player_actor_ct_other_func1(ACTOR* actor, GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + + play->submenu.disable_start_btn_flag = TRUE; + actor->unknown_b4 = 1; + + Actor_info_make_actor(&play->actor_info, game, mAc_PROFILE_FIELD_DRAW, actor->world.position.x, + actor->world.position.y, actor->world.position.z, 0, 0, 0, -1, -1, + -1, EMPTY_NO, -1, -1, -1); +} + +void Player_actor_setup_main_Wade_other_func1(ACTOR* actor, GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + + play->object_exchange._1954 = TRUE; +} + +void Player_actor_setup_main_Wade_snowball_other_func1(ACTOR* actor, GAME* game) { + Player_actor_setup_main_Wade_other_func1(actor, game); +} + +void Player_actor_setup_main_Wade_other_func2(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + GAME_PLAY* play = (GAME_PLAY*)game; + xyz_t pos = player->main_data.wade.end_pos; + + mFI_SetBearActor(play, pos, TRUE); + + Common_Set(in_initial_block, FALSE); +} + +void Player_actor_setup_main_Wade_snowball_other_func2(ACTOR* actor, GAME* game) { + Player_actor_setup_main_Wade_other_func2(actor, game); +} + +void Player_actor_setup_main_Demo_wade_other_func2(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + GAME_PLAY* play = (GAME_PLAY*)game; + xyz_t pos = player->main_data.wade.end_pos; + + mFI_SetBearActor(play, pos, TRUE); + + Common_Set(in_initial_block, FALSE); +} + +void Player_actor_setup_main_Demo_geton_boat_wade_other_func2(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + GAME_PLAY* play = (GAME_PLAY*)game; + xyz_t pos = player->main_data.wade.end_pos; + + mFI_SetBearActor(play, pos, TRUE); + + Common_Set(in_initial_block, FALSE); +} + +void Player_actor_ChangeFace_for_Wade(ACTOR* actor, GAME* game, f32 timer) { + if (18.0f <= timer && timer < 19.0f) { + int rank = 0; + + rank |= Player_actor_Set_player_sunburn_rankup(actor); + rank |= Player_actor_Set_player_sunburn_rankdown(actor); + + if (rank != 0) { + mPlib_change_player_face_pallet(game); + } + } +} + +void Player_actor_main_Wade_other_func1(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_ChangeFace_for_Wade(actor, game, player->main_data.wade.timer); +} + +void Player_actor_main_Demo_wade_other_func1(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_ChangeFace_for_Wade(actor, game, player->main_data.wade.timer); +} + +void Player_actor_main_Wade_snowball_other_func1(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_ChangeFace_for_Wade(actor, game, player->main_data.wade.timer); +} + +void Player_actor_main_Demo_geton_boat_wade_other_func1(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_ChangeFace_for_Wade(actor, game, player->main_data.wade.timer); +} + +void Player_actor_main_Sitdown_wait_other_func2(ACTOR* actor) { + if (Common_Get(clip.my_room_clip)) { + Common_Get(clip.my_room_clip)->call_sit_down_ongen_pos_se_proc(&actor->world.position); + } +} + +void Player_actor_main_Relax_rod_other_func2(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + Player_actor_request_camera2_main_simple_fishing(actor, game); +} + +void Player_actor_main_Vib_rod_other_func2(ACTOR* actor, GAME* game) { + Player_actor_request_camera2_main_simple_fishing(actor, game); +} + +void Player_actor_main_Collect_rod_other_func2(ACTOR* actor, GAME* game) { + Player_actor_request_camera2_main_simple_return(actor, game); +} + +void Player_actor_main_Fly_rod_other_func2(ACTOR* actor, GAME* game) { + Player_actor_request_camera2_main_simple_return(actor, game); +} + +void Player_actor_settle_main_Collect_rod_other_func2(ACTOR* actor, GAME* game) { + Player_actor_request_camera2_main_normal(game); +} + +void Player_actor_settle_main_Fly_rod_other_func2(ACTOR* actor, GAME* game) { + Player_actor_request_camera2_change_priority(game); +} + +void Player_actor_set_nextgoto_info_type0(ACTOR* actor) { + GAME_PLAY* play = (GAME_PLAY*)gamePT; + PLAYER_ACTOR* player = GET_PLAYER_ACTOR(play); + + if (goto_other_scene(play, Common_GetPointer(structure_exit_door_data), TRUE) != TRUE) { + mDemo_End(actor); + } else { + aMR_SaveWaltzTempo2(); + mBGMPsComp_make_ps_wipe(0x195); + } + player->update_scene_bg_mode = TRUE; +} + +void Player_actor_set_nextgoto_info_type1(ACTOR* actor) { + GAME_PLAY* play = (GAME_PLAY*)gamePT; + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (goto_next_scene(play, player->item_in_front - DOOR_START, TRUE) != TRUE) { + mDemo_End(actor); + } else { + int scene = Common_Get(door_data).next_scene_id - 1; + + if (scene == SCENE_DEPART_2 || scene == SCENE_MUSEUM_ENTRANCE || scene == SCENE_MUSEUM_ROOM_PAINTING || + scene == SCENE_MUSEUM_ROOM_FOSSIL || scene == SCENE_MUSEUM_ROOM_INSECT || scene == SCENE_MUSEUM_ROOM_FISH) { + play->fb_fade_type = 12; + mBGMForce_room_nonstop_start(); + } else { + mBGMPsComp_make_ps_wipe(0x249); + } + } +} + +int Player_actor_check_bg_for_next_goto(ACTOR* actor, mActor_name_t door) { + mCoBG_Collision_u* col; + + if (mFI_GET_TYPE(mFI_GetFieldId()) == mFI_FIELD_PLAYER0_ROOM) { + if (door >= DOOR_START && door < EXIT_DOOR) { + col = mFI_GetUnitCol(actor->world.position); + if (col->data.center != col->data.top_left || col->data.center != col->data.bot_left || + col->data.center != col->data.top_right || col->data.center != col->data.bot_right) { + return TRUE; + } + return FALSE; + } + return TRUE; + } + return TRUE; +} + +void Player_actor_check_nextgoto(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + GAME_PLAY* play = (GAME_PLAY*)game; + mActor_name_t door = player->item_in_front; + + if (ITEM_NAME_GET_TYPE(door) == NAME_TYPE_WARP && Player_actor_check_bg_for_next_goto(actor, door) != FALSE && + mEv_CheckTitleDemo() <= 0 && play->fb_wipe_mode == 0) { + if (door >= EXIT_DOOR && door < EXIT_DOOR1) { + mDemo_Request(mDemo_TYPE_EXITSCENE, actor, Player_actor_set_nextgoto_info_type0); + + if (player->update_scene_bg_mode != FALSE) { + mBGMPsComp_scene_mode(0xE); + player->update_scene_bg_mode = FALSE; + } + } else if (door >= DOOR_START && door < EXIT_DOOR) { + if ((mFI_GetUnitCol(actor->world.position)->data.center != + mFI_GetUnitCol(actor->world.position)->data.top_left || + mFI_GetUnitCol(actor->world.position)->data.center != + mFI_GetUnitCol(actor->world.position)->data.bot_left || + mFI_GetUnitCol(actor->world.position)->data.center != + mFI_GetUnitCol(actor->world.position)->data.top_right || + mFI_GetUnitCol(actor->world.position)->data.center != + mFI_GetUnitCol(actor->world.position)->data.bot_right) && + mFI_GET_TYPE(mFI_GetFieldId()) == mFI_FIELD_PLAYER0_ROOM) { + aMR_SaveWaltzTempo2(); + mBGMPsComp_make_ps_wipe(0x10E); + } + mDemo_Request(mDemo_TYPE_EXITSCENE, actor, Player_actor_set_nextgoto_info_type1); + } + } +} + +void Player_actor_check_forward(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + GAME_PLAY* play = (GAME_PLAY*)game; + s16 rot = actor->shape_info.rotation.y; + xyz_t pos; + mActor_name_t* item; + + pos.x = actor->world.position.x + 0.0006f * sins(rot); + pos.z = actor->world.position.z + 0.0006f * coss(rot); + pos.y = 0.0f; + + pos.y = mCoBG_GetBgY_OnlyCenter_FromWpos(pos, 0.0f); + + item = mFI_GetUnitFG(pos); + + player->forward_ut_pos.x = pos.x; + player->forward_ut_pos.z = pos.z; + player->forward_ut_pos.y = pos.y; + + if (item != NULL) { + player->item_in_front = *item; + } else { + player->item_in_front = EMPTY_NO; + } + + Player_actor_check_nextgoto(actor, game); + + if (chkTrigger(BUTTON_A)) { + player->a_btn_pressed = TRUE; + } else { + player->a_btn_pressed = FALSE; + } +} + +void Player_actor_move_other_func1(ACTOR* actor, GAME* game) { + Player_actor_cancel_request_change_proc_index_by_A_btn(actor); + Player_actor_request_main_change_from_submenu(actor, game); + Player_actor_request_change_item(game); + Player_actor_cancel_request_change_proc_index(actor); + Player_actor_change_proc_index(actor, game); + Player_actor_Reset_excute_cancel_wade(actor); + Player_actor_Set_OldAngle(actor); + Player_actor_Culc_player_frame_counter(actor); + Player_actor_Check_player_sunburn_ChangeDay(); + Player_actor_Check_player_sunburn_for_main(actor); + Player_actor_Check_player_change_color_for_main(actor); +} + +void Player_actor_move_other_func2(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + GAME_PLAY* play = (GAME_PLAY*)game; + + Player_actor_set_eye_PositionAndAngle(actor); + Player_actor_sound_SetStatus(actor); + Player_actor_Set_Indoor_Camera_Index(actor, game); + Player_actor_check_forward(actor, game); + mFI_SetPlayerWade(play); + Player_actor_check_little_shake_tree(actor, game); + Player_actor_check_shake_tree_timer(actor); + Player_actor_check_pitfall(actor, game); + Player_actor_set_ripple(actor, game); + + SETREG(PLAYERREG, 87, player->now_main_index); + SETREG(PLAYERREG, 88, player->requested_main_index_priority); + SETREG(PLAYERREG, 89, actor->world.angle.y); + SETREG(PLAYERREG, 90, actor->shape_info.rotation.y); + SETREG(PLAYERREG, 91, actor->world.position.x); + SETREG(PLAYERREG, 92, actor->world.position.y); + SETREG(PLAYERREG, 93, actor->world.position.z); + + Player_actor_Set_old_sound_frame_counter(actor); +} + +void Player_actor_draw_other_func2(ACTOR* actor, GAME* game) { + Player_actor_SetPosition_OBJtoLine_forItem(actor, game); +} + +void Player_actor_change_main_index_other_func1(ACTOR* actor, GAME* game) { +} + +void Player_actor_change_main_index_other_func2(ACTOR* actor, GAME* game) { +} + +void Player_actor_settle_main_other_func2(ACTOR* actor, GAME* game) { + Player_actor_SetFootMark_for_settle_main(actor, game); +} + +void Player_actor_SetActorUki(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + GAME_PLAY* play = (GAME_PLAY*)game; + + if (Player_actor_CheckScene_AbleOutItem(Save_Get(scene_no)) != FALSE && player->fishing_rod_actor_p == NULL) { + player->fishing_rod_actor_p = Actor_info_name_search(&play->actor_info, mAc_PROFILE_UKI, ACTOR_PART_BG); + } +} + +void Player_actor_Item_main_other_func1(ACTOR* actor, GAME* game) { + Player_actor_SetActorUki(actor, game); +} + +void Player_actor_setup_main_Demo_geton_boat_other_func2(ACTOR* actor, GAME* game) { + Common_Set(_2DBA6, 0); +} From 8befa9a41205bc8aa3db589457cdc10726cb8b58 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Mon, 19 Aug 2024 23:45:41 +0200 Subject: [PATCH 124/234] Match m_player_controller.c_inc --- src/m_player_controller.c_inc | 246 ++++++++++++++++++++++++++++++++++ 1 file changed, 246 insertions(+) diff --git a/src/m_player_controller.c_inc b/src/m_player_controller.c_inc index e69de29b..7e350794 100644 --- a/src/m_player_controller.c_inc +++ b/src/m_player_controller.c_inc @@ -0,0 +1,246 @@ + +int Player_actor_CheckController_forPickup(GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + + if (mEv_CheckTitleDemo() > 0) { + mPlayer_Controller_Data_c* data = mPlib_Get_controller_data_for_title_demo_p(); + PLAYER_ACTOR* player = GET_PLAYER_ACTOR(play); + s8 kind = Player_actor_Get_ItemKind(actor, player->now_main_index); + int ret = 0; + + if (mPlayer_ITEM_KIND_VALID(kind) && (data->on != 0) && (data->unk3B != 0)) { + ret = 1; + } + + return ret; + } + + return chkTrigger(BUTTON_B); +} + +int Player_actor_CheckController_forAxe(GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + PLAYER_ACTOR* player = GET_PLAYER_ACTOR(play); + s8 kind = Player_actor_Get_ItemKind(actor, player->now_main_index); + int check = 0; + + if (mPlayer_ITEM_IS_AXE(kind)) { + check = 1; + } + if (check != 0) { + if (mEv_CheckTitleDemo() > 0) { + return mPlib_Get_controller_data_for_title_demo_p()->on; + } + return chkTrigger(BUTTON_A); + } + + return 0; +} + +int Player_actor_CheckController_forNet(GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + PLAYER_ACTOR* player = GET_PLAYER_ACTOR(play); + s8 kind = Player_actor_Get_ItemKind(actor, player->now_main_index); + int check = 0; + + if (mPlayer_ITEM_IS_NET(kind)) { + check = 1; + } + if (check != 0) { + if (mEv_CheckTitleDemo() > 0) { + return mPlib_Get_controller_data_for_title_demo_p()->now; + } + return chkButton(BUTTON_A); + } + + return 0; +} + +int Player_actor_CheckController_forRod(GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + PLAYER_ACTOR* player = GET_PLAYER_ACTOR(play); + s8 kind = Player_actor_Get_ItemKind(actor, player->now_main_index); + int check = 0; + + if (mPlayer_ITEM_IS_ROD(kind)) { + check = 1; + } + if (check != 0) { + if (mEv_CheckTitleDemo() > 0) { + return mPlib_Get_controller_data_for_title_demo_p()->on; + } + return chkTrigger(BUTTON_A); + } + + return 0; +} + +int Player_actor_CheckController_forScoop(GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + PLAYER_ACTOR* player = GET_PLAYER_ACTOR(play); + s8 kind = Player_actor_Get_ItemKind(player, player->now_main_index); + int check = 0; + + if (mPlayer_ITEM_IS_SHOVEL(kind)) { + check = 1; + } + if (check != 0) { + if (mEv_CheckTitleDemo() > 0) { + return mPlib_Get_controller_data_for_title_demo_p()->on; + } + return chkTrigger(BUTTON_A); + } + + return 0; +} + +int Player_actor_CheckController_forUmbrella(GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + PLAYER_ACTOR* player = GET_PLAYER_ACTOR(play); + s8 kind = Player_actor_Get_ItemKind(player, player->now_main_index); + int check = 0; + + if (mPlayer_ITEM_IS_UMBRELLA(kind)) { + check = 1; + } + if (check != 0) { + if (mEv_CheckTitleDemo() > 0) { + return mPlib_Get_controller_data_for_title_demo_p()->on; + } + return chkTrigger(BUTTON_A); + } + + return 0; +} + +int Player_actor_CheckController_forFan(GAME* game, int type) { + GAME_PLAY* play = (GAME_PLAY*)game;{ + PLAYER_ACTOR* player = GET_PLAYER_ACTOR(play); + s8 kind = Player_actor_Get_ItemKind(player, player->now_main_index); + int check = 0; + + if (mPlayer_ITEM_IS_FAN(kind)) { + check = 1; + } + if (check != 0) { + if (mEv_CheckTitleDemo() > 0) { + mPlayer_Controller_Data_c* data = mPlib_Get_controller_data_for_title_demo_p(); + if (type != 0) { + return data->on; + } else { + return data->now; + } + } + if (type != 0) { + return chkTrigger(BUTTON_A); + } else { + return chkButton(BUTTON_A); + } + } + + return 0; +} + +int Player_actor_CheckController_forShake_tree(GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + PLAYER_ACTOR* player = GET_PLAYER_ACTOR(play); + s8 kind = Player_actor_Get_ItemKind(player, player->now_main_index); + int check; + + if (mPlayer_ITEM_KIND_VALID(kind) || (mPlayer_ITEM_IS_UMBRELLA(kind) || mPlayer_ITEM_IS_BALLOON(kind) || + mPlayer_ITEM_IS_WINDMILL(kind) || mPlayer_ITEM_IS_FAN(kind)) != FALSE) { + if (mEv_CheckTitleDemo() > 0) { + mPlayer_Controller_Data_c* data = mPlib_Get_controller_data_for_title_demo_p(); + return (data->on != 0) && (data->unk3B == 0); + } else { + return chkTrigger(BUTTON_A); + } + } + return 0; +} + +f32 Player_actor_CheckController_forStruggle_pitfall() { + return (chkTrigger(BUTTON_A) != 0) ? 1.0f : 0.0f; +} + +int Player_actor_CheckController_forDush() { + return (mEv_CheckTitleDemo() > 0) ? mPlib_Get_controller_data_for_title_demo_p()->unk3B + : mPlib_CheckButtonOnly_forDush(); +} + +f32 Player_actor_GetController_move_percentX() { + return (mEv_CheckTitleDemo() > 0) ? mPlib_Get_controller_data_for_title_demo_p()->mcon.move_pX + : gamePT->mcon.move_pX; +} + +f32 Player_actor_GetController_move_percentY() { + return (mEv_CheckTitleDemo() > 0) ? mPlib_Get_controller_data_for_title_demo_p()->mcon.move_pY + : gamePT->mcon.move_pY; +} + +f32 Player_actor_GetController_move_percentR() { + return (mEv_CheckTitleDemo() > 0) ? mPlib_Get_controller_data_for_title_demo_p()->mcon.move_pR + : gamePT->mcon.move_pR; +} + +s16 Player_actor_GetController_move_angle() { + return (mEv_CheckTitleDemo() > 0) ? mPlib_Get_controller_data_for_title_demo_p()->mcon.move_angle + : gamePT->mcon.move_angle; +} + +s16 Player_actor_GetController_old_move_angle() { + return (mEv_CheckTitleDemo() > 0) ? mPlib_Get_controller_data_for_title_demo_p()->mcon.last_move_angle + : gamePT->mcon.last_move_angle; +} + +f32 Player_actor_GetController_recognize_percentR() { + return (mEv_CheckTitleDemo() > 0) ? mPlib_Get_controller_data_for_title_demo_p()->mcon.adjusted_pR + : gamePT->mcon.adjusted_pR; +} + +f32 Player_actor_GetController_old_recognize_percentR() { + return (mEv_CheckTitleDemo() > 0) ? mPlib_Get_controller_data_for_title_demo_p()->mcon.last_adjusted_pR + : gamePT->mcon.last_adjusted_pR; +} + +int Player_actor_CheckController_forRadio_exercise(GAME* game) { + if (mEv_CheckTitleDemo() > 0) { + return -1; + } + if ((mPlib_Check_now_handin_item() != 0) || (Player_actor_GetController_old_recognize_percentR() != 0.0f) || + (Player_actor_CheckController_forPickup(game) != 0) || + (Player_actor_CheckController_forShake_tree(game) != 0)) { + return -1; + } + + if (JW_JUTGamepad_getSubStickValue() > 0.6f) { + s16 angle = JW_JUTGamepad_getSubStickAngle(); + if (angle >= 0) { + if (angle < 0x1000) { + return 6; + } else if (angle < 0x3000) { + return 7; + } else if (angle < 0x5000) { + return 1; + } else { + return (0x7000 > angle) + 3; + } + } + if (angle > -0x1000) { + return 6; + } + if (angle > -0x3000) { + return 8; + } + if (angle > -0x5000) { + return 2; + } + if (angle > -0x7000) { + return 5; + } + + return 3; + } + + return 0; +} From 080be199140a9c3e23ba4ce6c1d2659a448013d8 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Mon, 19 Aug 2024 23:48:25 +0200 Subject: [PATCH 125/234] Match m_player_main_dma.c_inc --- src/m_player_main_dma.c_inc | 61 +++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/src/m_player_main_dma.c_inc b/src/m_player_main_dma.c_inc index e69de29b..54dc8783 100644 --- a/src/m_player_main_dma.c_inc +++ b/src/m_player_main_dma.c_inc @@ -0,0 +1,61 @@ + +int Player_actor_request_main_dma(GAME* game, int flag) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_DMA, flag) != FALSE) { + Player_actor_request_main_index(game, mPlayer_INDEX_DMA, flag); + return TRUE; + } + return FALSE; +} + +void Player_actor_setup_main_Dma(void) { + Player_actor_setup_main_Base(); +} + +void Player_actor_request_proc_index_fromDma(ACTOR* actorx, GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + Object_Exchange_c* exchange = &play->object_exchange; + int bank_idx = mSc_bank_regist_check(exchange, 14); + PLAYER_ACTOR* actor = (PLAYER_ACTOR*)actorx; + int i; + cKF_SkeletonInfo_R_c* keyf; + u16 type; + + if (exchange->banks[bank_idx].bank_id > 0) { + if (exchange->banks[bank_idx + 1].bank_id > 0 && exchange->banks[bank_idx + 2].bank_id > 0 && + exchange->banks[bank_idx + 3].bank_id > 0 && exchange->banks[bank_idx + 4].bank_id > 0 && + exchange->banks[bank_idx + 5].bank_id > 0 && exchange->banks[bank_idx + 6].bank_id > 0) { + Player_actor_ItemBank_ct(actor, play); + if (actor->requested_main_index_priority == mPlayer_INDEX_SLIP_NET) { + Player_actor_SettleRequestMainIndexPriority(actor); + } + keyf = &actor->keyframe0; + type = actor->actor_class.actor_specific; + cKF_SkeletonInfo_R_ct(keyf, mPlib_get_player_mdl_p(), NULL, actor->joint_data, actor->morph_data); + + actor->keyframe1 = *keyf; + + if ((type & 7) == 1) { + mPlib_request_main_outdoor_type1(game, 1, 0); + } else if ((type & 7) == 2) { + mPlib_request_main_outdoor_type1(game, 0, 0); + } else if ((type & 7) == 3) { + mPlib_request_main_outdoor_type1(game, 0, 1); + } else if ((type & 7) == 4) { + mPlib_request_main_hide_type1(game); + } else if ((type & 7) == 5) { + mPlib_request_main_groundhog_type1(game); + } else { + if (Common_Get(_02883D) == 1) { + Player_actor_request_main_fail_emu(play, mPlayer_INDEX_READY_WALK_NET); + } else { + Player_actor_request_main_intro_all(play, mPlayer_INDEX_READY_WALK_NET); + } + } + Camera2_request_main_normal(play, 1, 1); + } + } +} +void Player_actor_main_Dma(ACTOR* actor, GAME* game) { + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_request_proc_index_fromDma(actor, game); +} From d6aac7cf7d3b3634e057f64a1cc368e6769ebe75 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Mon, 19 Aug 2024 23:53:47 +0200 Subject: [PATCH 126/234] Match m_player_main_intro.c_inc --- src/m_player_main_intro.c_inc | 71 +++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/src/m_player_main_intro.c_inc b/src/m_player_main_intro.c_inc index e69de29b..719bed9b 100644 --- a/src/m_player_main_intro.c_inc +++ b/src/m_player_main_intro.c_inc @@ -0,0 +1,71 @@ + +int Player_actor_request_main_intro_all(GAME* game, int flag) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_INTRO, flag) != FALSE) { + Player_actor_request_main_index(game, mPlayer_INDEX_INTRO, flag); + return TRUE; + } + return FALSE; +} + +void Player_actor_setup_main_Intro(ACTOR* actor, GAME* game){ + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int spC; + int sp8; + + Player_actor_SetupItem_Base1(actor,0, &spC, &sp8, -5.0f); + player->main_data.intro.timer = 0.0f; + Player_actor_InitAnimation_Base1(actor, game,1.0f, 1.0f, 0.5f, 0.0f, 0, spC, sp8); + Player_actor_setup_main_Base(actor, game); +} + +void Player_actor_CulcAnimation_Intro(ACTOR* actor) { + int base; + + Player_actor_CulcAnimation_Base2(actor, &base); +} + +void Player_actor_Movement_Intro(ACTOR* actor) { + Player_actor_Movement_Base_Braking(actor); +} + +void Player_actor_ObjCheck_Intro(ACTOR* actor, GAME* game){ + Player_actor_Excute_Corect_forStand(actor); +} + +void Player_actor_BGcheck_Intro(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +void Player_actor_ResetCameraPos_Intro(GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + + if (Camera2_Check_main_index(play, mPlayer_INDEX_INTRO) != 0) { + Camera2_request_main_normal(play, 1, 1); + } +} + + +void Player_actor_request_proc_index_fromIntro(ACTOR* actor, GAME* game){ + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + player->main_data.intro.timer += 1.0f; + + if(player->main_data.intro.timer >= 4.0f){ + Player_actor_request_main_wait_all(game, 0.0f, 0.0f, 0 ,1); + } +} + + +void Player_actor_main_Intro(ACTOR* actor, GAME* game){ + + Player_actor_Movement_Intro(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_CulcAnimation_Intro(actor); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Intro(actor, game); + Player_actor_BGcheck_Intro(actor); + Player_actor_ResetCameraPos_Intro(game); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromIntro(actor, game); +} From 6fe57505344816e79eef426d006c5433bde2af80 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Mon, 19 Aug 2024 23:59:44 +0200 Subject: [PATCH 127/234] Match m_player_main_refuse.c_inc --- src/m_player_main_refuse.c_inc | 47 ++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/src/m_player_main_refuse.c_inc b/src/m_player_main_refuse.c_inc index e69de29b..cb2a6504 100644 --- a/src/m_player_main_refuse.c_inc +++ b/src/m_player_main_refuse.c_inc @@ -0,0 +1,47 @@ +int Player_actor_request_main_refuse(GAME* game, int flag) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_REFUSE, flag) != FALSE) { + Player_actor_request_main_index(game, mPlayer_INDEX_REFUSE, flag); + return TRUE; + } + return FALSE; +} + +void Player_actor_setup_main_Refuse(ACTOR* actor, GAME* game) { + int spC; + int sp8; + + Player_actor_SetupItem_Base1(actor,0, &spC, &sp8, -5.0f); + Player_actor_InitAnimation_Base1(actor, game,1.0f, 1.0f, 0.5f, -5.0f, 0, spC, sp8); + Player_actor_setup_main_Base(actor, game); +} + +void Player_actor_Movement_Refuse(ACTOR* actor) { + Player_actor_Movement_Base_Braking(actor); +} + + +void Player_actor_CulcAnimation_Refuse(ACTOR* actor) { + int base; + + Player_actor_CulcAnimation_Base2(actor, &base); +} + +void Player_actor_ObjCheck_Refuse(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor); +} + +void Player_actor_BGcheck_Refuse(ACTOR* actor) { + Player_actor_BGcheck_common_type2(actor); +} + + +void Player_actor_main_Intro(ACTOR* actor, GAME* game) { + Player_actor_Movement_Refuse(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_CulcAnimation_Refuse(actor); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Refuse(actor, game); + Player_actor_BGcheck_Refuse(actor); + Player_actor_Item_main(actor, game); +} \ No newline at end of file From 4e0eefc4dc6c161a5929e1e27f440a62785be5cb Mon Sep 17 00:00:00 2001 From: Prakxo Date: Tue, 20 Aug 2024 00:03:08 +0200 Subject: [PATCH 128/234] Match m_player_main_refuse_pickup.c_inc --- src/m_player_main_refuse_pickup.c_inc | 81 +++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) diff --git a/src/m_player_main_refuse_pickup.c_inc b/src/m_player_main_refuse_pickup.c_inc index e69de29b..9e67ccbb 100644 --- a/src/m_player_main_refuse_pickup.c_inc +++ b/src/m_player_main_refuse_pickup.c_inc @@ -0,0 +1,81 @@ + +int Player_actor_request_main_refuse_pickup_all(GAME* game, int flag) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_REFUSE_PICKUP, flag) != FALSE) { + Player_actor_request_main_index(game, mPlayer_INDEX_REFUSE_PICKUP, flag); + return TRUE; + } + return FALSE; +} + +void Player_actor_Refuse_pickup_demo_ct(ACTOR* actor){ + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + int msg; + rgba_t color; + + Player_actor_request_main_refuse_pickup_all(gamePT, 0x13); + + msg = (Common_Get(field_type) == 0) ? 0x17AD : 0x17AE; + + if(player->refuse_pickup_knife_fork_flag != FALSE){ + msg = 0x3B59; + } + + mDemo_Set_msg_num(msg); + mDemo_Set_talk_display_name(0); + mDemo_Set_ListenAble(); + + color.r = 255; + color.g = 255; + color.b = 20; + color.a = 255; + + mDemo_Set_talk_window_color(&color); +} + + +void Player_actor_setup_main_Refuse_pickup(ACTOR* actor, GAME* game) { + int spC; + int sp8; + + Player_actor_SetupItem_Base1(actor,0, &spC, &sp8, -5.0f); + Player_actor_InitAnimation_Base1(actor, game,1.0f, 1.0f, 0.5f, -5.0f, 0, spC, sp8); + Player_actor_setup_main_Base(actor, game); +} + +void Player_actor_Movement_Refuse_pickup(ACTOR* actor) { + Player_actor_Movement_Base_Braking_common(actor, 0.23925f); +} + +void Player_actor_CulcAnimation_Refuse_pickup(ACTOR* actor) { + int base; + + Player_actor_CulcAnimation_Base2(actor, &base); +} + +void Player_actor_ObjCheck_Refuse_pickup(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor); +} + +void Player_actor_BGcheck_Refuse_pickup(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +void Player_actor_request_proc_index_fromRefuse_pickup(ACTOR* actor, GAME* game) { + if (mDemo_Check(mDemo_TYPE_REPORT, actor) == 0) { + Player_actor_SettleRequestMainIndexPriority(actor); + Player_actor_request_main_wait_all(game,-5.0f, 0.0f, 0, 1); + } +} + +void Player_actor_main_Intro(ACTOR* actor, GAME* game) { + Player_actor_Movement_Refuse_pickup(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_CulcAnimation_Refuse_pickup(actor); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Refuse_pickup(actor, game); + Player_actor_BGcheck_Refuse_pickup(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromRefuse_pickup(actor,game); +} From 0d8f784a1516b4f952658dd66e446a54053255e0 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Tue, 20 Aug 2024 00:10:28 +0200 Subject: [PATCH 129/234] newlines --- src/m_player_item_common.c_inc | 2 +- src/m_player_main_refuse.c_inc | 2 +- src/m_player_sound.c_inc | 2 +- src/m_player_vibration.c_inc | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/m_player_item_common.c_inc b/src/m_player_item_common.c_inc index 6a02eef3..d5b8d821 100644 --- a/src/m_player_item_common.c_inc +++ b/src/m_player_item_common.c_inc @@ -720,4 +720,4 @@ int Player_actor_Check_ItemAnimationToItemKind(int kind, int anim) { } return res; -} \ No newline at end of file +} diff --git a/src/m_player_main_refuse.c_inc b/src/m_player_main_refuse.c_inc index cb2a6504..b8babba3 100644 --- a/src/m_player_main_refuse.c_inc +++ b/src/m_player_main_refuse.c_inc @@ -44,4 +44,4 @@ void Player_actor_main_Intro(ACTOR* actor, GAME* game) { Player_actor_ObjCheck_Refuse(actor, game); Player_actor_BGcheck_Refuse(actor); Player_actor_Item_main(actor, game); -} \ No newline at end of file +} diff --git a/src/m_player_sound.c_inc b/src/m_player_sound.c_inc index 0e0b92a4..a3fcb25f 100644 --- a/src/m_player_sound.c_inc +++ b/src/m_player_sound.c_inc @@ -339,4 +339,4 @@ void Player_actor_sound_move_temochi_kazaguruma(ACTOR* actor) { sAdo_kazagurumaLevel(speed); sAdo_OngenPos((u32) player, NA_SE_TEMOCHI_KAZAGURUMA, &actor->world.position); } -} \ No newline at end of file +} diff --git a/src/m_player_vibration.c_inc b/src/m_player_vibration.c_inc index 84099769..59756fe1 100644 --- a/src/m_player_vibration.c_inc +++ b/src/m_player_vibration.c_inc @@ -50,4 +50,4 @@ void Player_actor_set_viblation_Tumble() { void Player_actor_set_viblation_Remove_grass() { Player_actor_set_viblation_common1(90, 1, 1, 1, 0, 1, 10); -} \ No newline at end of file +} From d5007cab362fc1ea0963bb2f7cf9de5058c12ab1 Mon Sep 17 00:00:00 2001 From: Reaperoe Date: Thu, 22 Aug 2024 17:47:45 -0400 Subject: [PATCH 130/234] Implement & link ef_impact_star.c, ef_halloween_smoke.c (#405) * Implement & link ef_impact_star.c * Implement & link ef_impact_star.c * Implement & link ef_impact_star.c * Implement & link ef_halloween_smoke.c * eHalloween_Smoke_dw fix ANIME_1_TXT_SEG -> G_MWO_SEGMENT_8 ANIME_2_TXT_SEG -> G_MWO_SEGMENT_9 --- src/ef_halloween_smoke.c | 75 +++++++++++++++++++++++++++++++++++++--- src/ef_impact_star.c | 71 ++++++++++++++++++++++++++++++++++--- 2 files changed, 138 insertions(+), 8 deletions(-) diff --git a/src/ef_halloween_smoke.c b/src/ef_halloween_smoke.c index f580282e..3c512054 100644 --- a/src/ef_halloween_smoke.c +++ b/src/ef_halloween_smoke.c @@ -18,17 +18,84 @@ eEC_PROFILE_c iam_ef_halloween_smoke = { }; static void eHalloween_Smoke_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1) { - // TODO + eEC_CLIP->make_effect_proc(eEC_EFFECT_HALLOWEEN_SMOKE, pos, NULL, game, &angle, item_name, prio, arg0, arg1); } static void eHalloween_Smoke_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg) { - // TODO + s16 angle = *(s16*)ct_arg; + + effect->timer = 18; + + (effect->scale).x= (effect->scale).y= (effect->scale).z = 0.01f; + + (effect->velocity).y = 0.25f; + (effect->velocity).x = 0.0f * sin_s(angle); + (effect->velocity).z = 0.0f * cos_s(angle); + + (effect->acceleration).y = 0.075f; + (effect->acceleration).x = (effect->acceleration).z = 0.0f; } static void eHalloween_Smoke_mv(eEC_Effect_c* effect, GAME* game) { - // TODO + xyz_t_add (&effect->velocity, &effect->acceleration, &effect->velocity); + xyz_t_add (&effect->position, &effect->velocity, &effect->position); } +extern Gfx ef_haro01_00_modelT[]; +extern u8 ef_dust01_0[]; +extern u8 ef_dust01_1[]; +extern u8 ef_dust01_2[]; +extern u8 ef_dust01_3[]; + +static u8* eHalloween_texture_table[] = { + ef_dust01_0, + ef_dust01_1, + ef_dust01_2, + ef_dust01_3, +}; + +// clang-format off +static u8 eHalloween_2tile_texture_idx[][2] = { + {0, 0}, + {0, 1}, + {1, 1}, + {1, 2}, + {2, 2}, + {2, 3}, + {3, 3}, + {3, 3}, + {3, 3}, +}; +// clang-format on + +// clang-format off +static u8 eHalloween_prim_f[] = { + 0, + 128, + 255, + 128, + 0, + 128, + 255, + 128, + 0, +}; +// clang-format on + static void eHalloween_Smoke_dw(eEC_Effect_c* effect, GAME* game) { - // TODO + s16 frame = 18 - effect->timer; + int tex_idx = frame >> 1; + int tile_idx0 = eHalloween_2tile_texture_idx[tex_idx][0]; + int tile_idx1 = eHalloween_2tile_texture_idx[tex_idx][1]; + + OPEN_DISP(game->graph); + + eEC_CLIP->auto_matrix_xlu_proc(game, &effect->position, &effect->scale); + + gSPSegment(NEXT_POLY_XLU_DISP, G_MWO_SEGMENT_8, eHalloween_texture_table[tile_idx0]); + gSPSegment(NEXT_POLY_XLU_DISP, G_MWO_SEGMENT_9, eHalloween_texture_table[tile_idx1]); + gDPSetPrimColor(NEXT_POLY_XLU_DISP, 0, eHalloween_prim_f[tex_idx], 200, 0, 255, 120); + gSPDisplayList(NEXT_POLY_XLU_DISP, ef_haro01_00_modelT); + + CLOSE_DISP(game->graph); } diff --git a/src/ef_impact_star.c b/src/ef_impact_star.c index 4c7bdb0c..2b2892ac 100644 --- a/src/ef_impact_star.c +++ b/src/ef_impact_star.c @@ -1,5 +1,9 @@ #include "ef_effect_control.h" +#include "m_common_data.h" + +extern Gfx ef_star01_00_modelT[]; + static void eImpact_Star_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1); static void eImpact_Star_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg); static void eImpact_Star_mv(eEC_Effect_c* effect, GAME* game); @@ -18,17 +22,76 @@ eEC_PROFILE_c iam_ef_impact_star = { }; static void eImpact_Star_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1) { - // TODO + eEC_CLIP->make_effect_proc(eEC_EFFECT_IMPACT_STAR, pos, NULL, game, &angle, item_name, prio, arg0, arg1); } static void eImpact_Star_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg) { - // TODO + f32 mul; + s16* angle_y_p = (s16*)ct_arg; + + if (effect->arg1 == 0) { + s16 angle_y = *angle_y_p; + s16 angle_x = DEG2SHORT_ANGLE2(-70.0f); + + mul = 6.0f + (f32)RANDOM_F(0.0f); + angle_y += DEG2SHORT_ANGLE2(RANDOM_F(20.0f)); + angle_x += DEG2SHORT_ANGLE2(RANDOM_F(20.0f)); + + effect->scale.x = 0.01f; + effect->offset.x = 0.01f; + effect->offset.y = 0.004f; + + effect->velocity.y = mul * cos_s(angle_x); + effect->velocity.x = mul * sin_s(angle_x) * sin_s(angle_y); + effect->velocity.z = mul * sin_s(angle_x) * cos_s(angle_y); + } else { + s16 angle_y = *angle_y_p + DEG2SHORT_ANGLE2(10.0f); + s16 angle_x = DEG2SHORT_ANGLE2(-60.0f); + + mul = 6.0f + (f32)RANDOM_F(0.0f); + angle_y += -DEG2SHORT_ANGLE2(RANDOM_F(20.0f)); + angle_x += -DEG2SHORT_ANGLE2(RANDOM_F(20.0f)); + + effect->scale.x = 0.012f; + effect->offset.x = 0.012f; + effect->offset.y = 0.006f; + + effect->velocity.y = mul * cos_s(angle_x); + effect->velocity.x = mul * sin_s(angle_x) * sin_s(angle_y); + effect->velocity.z = mul * sin_s(angle_x) * cos_s(angle_y); + } + + effect->effect_specific[0] = qrand(); + effect->timer = 40; } static void eImpact_Star_mv(eEC_Effect_c* effect, GAME* game) { - // TODO + xyz_t_add(&effect->velocity, &effect->acceleration, &effect->velocity); + xyz_t_add(&effect->position, &effect->velocity, &effect->position); + + effect->velocity.x *= sqrtf(0.85f); + effect->velocity.y *= sqrtf(0.85f); + effect->velocity.z *= sqrtf(0.85f); } static void eImpact_Star_dw(eEC_Effect_c* effect, GAME* game) { - // TODO + GAME_PLAY* play = (GAME_PLAY*)game; + u8 alpha = (int)eEC_CLIP->calc_adjust_proc(effect->timer,0,10, 0.0f, 255.0f); + + effect->scale.x = eEC_CLIP->calc_adjust_proc(effect->timer, 26, 40, effect->offset.y, effect->offset.x); + effect->scale.y= effect->scale.z= effect->scale.x; + + OPEN_DISP(game->graph); + + _texture_z_light_fog_prim_xlu (game->graph); + Matrix_translate(effect->position.x, effect->position.y, effect->position.z, 0); + Matrix_mult(&play->billboard_matrix, 1); + Matrix_RotateZ(effect->effect_specific[0], 1); + Matrix_scale(effect->scale.x, effect->scale.y, effect->scale.z, 1); + + gSPMatrix(NEXT_POLY_XLU_DISP, _Matrix_to_Mtx_new(game->graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gDPSetPrimColor(NEXT_POLY_XLU_DISP, 0, 255, 255, 255, 100, alpha); + gSPDisplayList(NEXT_POLY_XLU_DISP, ef_star01_00_modelT); + + CLOSE_DISP(game->graph); } From 018a38f9da315b320231ac7ecda4660700f58d38 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Sun, 25 Aug 2024 22:12:49 +0200 Subject: [PATCH 131/234] fix item_common --- include/m_player.h | 12 ++ src/m_player_item_common.c_inc | 364 --------------------------------- 2 files changed, 12 insertions(+), 364 deletions(-) diff --git a/include/m_player.h b/include/m_player.h index 11be4170..eb3e39fd 100644 --- a/include/m_player.h +++ b/include/m_player.h @@ -547,6 +547,8 @@ enum { mPlayer_ITEM_DATA_NUM }; +#define mPlayer_ITEM_DATA_VALID(type) ((type) >= 0 && type < mPlayer_ITEM_DATA_NUM) + enum { mPlayer_ITEM_DATA_TYPE_GFX, mPlayer_ITEM_DATA_TYPE_SKELETON, @@ -1350,6 +1352,14 @@ typedef struct player_main_demo_getoff_boat_standup_s { s16 angle_z; } mPlayer_main_demo_getoff_boat_standup_c; +typedef struct player_main_uki_s { + xyz_t cast_goal_point; +} mPlayer_main_uki_c; + +typedef struct player_main_putaway_uki_s { + f32 unk0; +} mPlayer_main_putaway_uki_c; + typedef union { mPlayer_main_intro_c intro; mPlayer_main_return_demo_c return_demo; @@ -1363,6 +1373,8 @@ typedef union { mPlayer_main_wash_car_c wash_car; mPlayer_main_demo_geton_boat_sitdown_c demo_geton_boat_sitdown; mPlayer_main_demo_getoff_boat_standup_c demo_getoff_boat_standup; + mPlayer_main_uki_c uki; + mPlayer_main_putaway_uki_c putaway_uki; u8 force_size[72]; // TEMP } mPlayer_main_data; diff --git a/src/m_player_item_common.c_inc b/src/m_player_item_common.c_inc index d5b8d821..75b16f6b 100644 --- a/src/m_player_item_common.c_inc +++ b/src/m_player_item_common.c_inc @@ -321,370 +321,6 @@ void Player_actor_LoadOrDestruct_Item(ACTOR* actor, int kind, int anim_idx, int } -void Player_actor_CorrectSomething_net(ACTOR* actor, xyz_t* pos) { - PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; - TOOLS_ACTOR* label = (TOOLS_ACTOR*)player->item_net_catch_label; - - if (label != NULL && player->item_net_catch_type == 0) { - Matrix_push(); - Matrix_translate(pos->x, pos->y, pos->z, FALSE); - Matrix_get(&label->matrix_work); - Matrix_pull(); - label->init_matrix = TRUE; - } -} - -int Player_actor_Check_ItemAnimationToItemKind(int kind, int anim) { - int res; - - if (mPlayer_ITEM_IS_AXE(kind) != FALSE) { - res = anim < 0; - } else if (mPlayer_ITEM_IS_NET(kind) != FALSE) { - res = mPlib_Get_Item_DataPointerType(anim) == mPlayer_ITEM_DATA_TYPE_NET_ANIMATION; - } else if (mPlayer_ITEM_IS_UMBRELLA(kind) != FALSE) { - res = anim < 0; - } else if (mPlayer_ITEM_IS_ROD(kind) != FALSE) { - res = mPlib_Get_Item_DataPointerType(anim) == mPlayer_ITEM_DATA_TYPE_ROD_ANIMATION; - } else if (mPlayer_ITEM_IS_SHOVEL(kind) != FALSE) { - res = anim < 0; - } else if (mPlayer_ITEM_IS_BALLOON(kind) != FALSE) { - res = anim < 0; - } else if (mPlayer_ITEM_IS_WINDMILL(kind) != FALSE) { - res = anim < 0; - } else { - res = FALSE; - } - - return res; -}samalv@debpc:~/ac-decomp/ac-decomp$ clang-format-14 ./src/m_player_item_common.c_inc > ./src/m_player_item_common.c_inc -samalv@debpc:~/ac-decomp/ac-decomp$ clang-format-14 ./src/m_player_item_common.c_inc | ./src/m_player_item_common.c_inc -bash: ./src/m_player_item_common.c_inc: Permission denied -samalv@debpc:~/ac-decomp/ac-decomp$ clang-format-14 ./src/m_player_item_common.c_inc -samalv@debpc:~/ac-decomp/ac-decomp$ clang-format-14 ./src/m_player_item_common.c_inc - -void Player_actor_Set_ItemNoSubmenu(mActor_name_t item) { - if (mEv_CheckTitleDemo() <= 0) { - Common_Get(now_private)->equipment = item; - } -} - -mActor_name_t Player_actor_Get_ItemNoSubmenu() { - if (mEv_CheckTitleDemo() > 0) { - return mPlib_Get_controller_data_for_title_demo_p()->equiped_item; - } else { - return Common_Get(now_private)->equipment; - } -} - -s8 Player_actor_Get_ItemKind_from_submenu() { - return mPlib_Get_ItemNoToItemKind(Player_actor_Get_ItemNoSubmenu()); -} - -s8 Player_actor_Get_ItemKind_fromScene() { - if (Player_actor_CheckScene_AbleOutItem(Save_Get(scene_no)) != 0) { - return Player_actor_Get_ItemKind_from_submenu(); - } - return -1; -} - - -s8 Player_actor_Get_ItemKind(ACTOR* actor, int kind) { - PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; - int able = Player_actor_CheckPlayer_AbleLoadItem(kind); - s8 scene_kind = Player_actor_Get_ItemKind_fromScene(); - - if (player->unable_hand_item_in_demo != FALSE) { - return -1; - } else if (player->able_hand_all_item_in_demo != FALSE) { - return scene_kind; - } else { - if (able == 0) { - return scene_kind; - } else if (able == 1) { - int holdable = mPlayer_ITEM_IS_UMBRELLA(scene_kind) || mPlayer_ITEM_IS_BALLOON(scene_kind) || - mPlayer_ITEM_IS_WINDMILL(scene_kind) || mPlayer_ITEM_IS_FAN(scene_kind) - - ? TRUE - : FALSE; - - if (holdable) { - return scene_kind; - } - } - } - return -1; -} - -int Player_actor_Get_BasicItemMainIndex_fromItemKind(int kind) { - static s8 data[] = { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 20, - 20, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, - }; - - if (mPlayer_ITEM_KIND_VALID(kind)) { - return data[kind]; - } else { - return 0; - } -} - - -void Player_actor_birth_umbrella(ACTOR* actor, GAME* game) { - PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; - int is_umbrella; - aTOL_Clip_c* tools; - s8 kind; - - if (player->umbrella_actor == NULL) { - tools = Common_Get(clip).tools_clip; - if (tools != NULL && - (player->umbrella_state == 1 || player->umbrella_state == 4 || player->umbrella_state == 2)) { - is_umbrella = FALSE; - kind = player->item_kind; - if (mPlayer_ITEM_IS_UMBRELLA(kind)) { - is_umbrella = TRUE; - } - - if (is_umbrella) { - player->umbrella_actor = tools->aTOL_birth_proc(kind - mPlayer_ITEM_KIND_UMBRELLA00, - player->umbrella_state, actor, game, -1, 0); - - if (player->umbrella_actor != NULL) { - player->umbrella_actor->world.position = actor->world.position; - player->umbrella_actor->skip_drawing = TRUE; - } - } - } - } -} - -ACTOR* Player_actor_Get_umbrella_p(ACTOR* actor, GAME* game) { - PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; - ACTOR* umbrella; - Player_actor_birth_umbrella(actor, game); - - umbrella = player->umbrella_actor; - if (umbrella != NULL) { - umbrella->skip_drawing = FALSE; - return umbrella; - } - - return NULL; -} - -int Player_actor_Item_CulcAnimation_Base(ACTOR* actor) { - PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; - - return cKF_SkeletonInfo_R_play(&player->item_keyframe); -} - -int Player_actor_Item_CulcAnimation_Base2(ACTOR* actor) { - return Player_actor_Item_CulcAnimation_Base(actor) == 1; -} - -void Player_actor_Item_SetAnimation_Base(ACTOR* actor, f32 frame) { - PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; - cKF_SkeletonInfo_R_c* keyf = &player->item_keyframe; - - keyf->frame_control.current_frame = frame; - cKF_SkeletonInfo_R_play(keyf); - keyf->frame_control.current_frame = frame; -} - -void Player_actor_Item_DMA_Data(ACTOR* actor, int skl_idx, int anim_idx, int mode, f32 speed, f32 morph_speed, - f32 frame) { - PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; - int change_bank = Player_actor_Change_ItemBank(); - - if ((skl_idx >= 0) && (mPlib_Get_Item_DataPointerType(skl_idx) != 0)) { - cKF_Skeleton_R_c* skeleton; - cKF_SkeletonInfo_R_c* keyf; - s_xyz* joint_work; - s_xyz* morph_work; - cKF_SkeletonInfo_R_c* key2; - - keyf = &player->item_keyframe; - joint_work = player->item_joint_data; - morph_work = player->item_morph_data; - skeleton = mPlib_Get_Item_DataPointer(skl_idx); - - if (frame >= 0.0f) { - cKF_SkeletonInfo_R_ct(keyf, skeleton, NULL, joint_work, morph_work); - keyf->frame_control.current_frame = frame; - } else if (change_bank != 0) { - keyf->skeleton = skeleton; - keyf->animation = NULL; - } else { - cKF_SkeletonInfo_R_ct(keyf, skeleton, NULL, joint_work, morph_work); - } - key2 = &player->item_keyframe; - cKF_SkeletonInfo_R_init_standard_setframeandspeedandmorphandmode(key2, mPlib_Get_Item_DataPointer(anim_idx), - NULL, key2->frame_control.current_frame, speed, - morph_speed, mode); - } -} - - -void Player_actor_Item_Set_Command_forUki(ACTOR* actor, int command) { - PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; - UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; - - if (rod != NULL) { - rod->command = command; - } -} - - -void Player_actor_Item_Set_RightHandPos_forUki(ACTOR* actor, int arg0) { - PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; - UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; - - if (rod != NULL) { - s16 rot; - xyz_t pos; - f32 sin; - f32 cos; - switch (arg0) { - case 0x35: - case 0x36: - case 0x37: - pos = actor->world.position; - rot = actor->shape_info.rotation.y; - - cos = cos_s(rot); - sin = sin_s(rot); - - pos.z += (-2.0f * cos) - (12.0f * sin); - pos.x += (12.0f * cos) + (-2.0f * sin); - pos.y += 17.5f; - - rod->right_hand_pos = pos; - break; - default: - rod->right_hand_pos = player->right_hand_pos; - break; - } - } -} - - -void Player_actor_Item_Set_LeftHandPos_forUki(ACTOR* actor, int arg0) { - PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; - UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; - - if (rod != NULL) { - s16 rot; - xyz_t pos; - f32 sin; - f32 cos; - switch (arg0) { - case 0x35: - case 0x36: - case 0x37: - pos = actor->world.position; - rot = actor->shape_info.rotation.y; - - cos = cos_s(rot); - sin = sin_s(rot); - - pos.z += (-2.0f * cos) - (12.0f * sin); - pos.x += (12.0f * cos) + (-2.0f * sin); - pos.y += 17.5f; - - rod->left_hand_pos = pos; - break; - default: - rod->left_hand_pos = player->left_hand_pos; - break; - } - } -} - - -void Player_actor_Item_Set_PosSpeed_forUki(ACTOR* actor) { - PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; - UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; - - if (rod != NULL) { - rod->position_speed = actor->position_speed; - } -} - -void Player_actor_Item_Set_AngleSpeedY_forUki(ACTOR* actor) { - PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; - UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; - - if (rod != NULL) { - int y = player->shape_angle_delta.y; - - if (y > 0) { - if (y > 0x8000) { - y = -(0x10000 - y); - } - } else if (y < -0x8000) { - y += 0x10000; - } - - rod->angle_speed_y = y; - } -} - -void Player_actor_Item_Set_RodTopPos_forUki(ACTOR* actor) { - PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; - UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; - - if (rod != NULL) { - Player_actor_Get_ItemRodTopInitPos(actor, &rod->rod_top_position); - } -} - - -void Player_actor_LoadOrDestruct_Item(ACTOR* actor, int kind, int anim_idx, int mode, f32 speed, f32 morph_speed, - f32 frame) { - PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; - int umbrella; - int rod; - - if (kind >= 0) { - Player_actor_Item_DMA_Data(actor, mPlib_Get_BasicItemShapeIndex_fromItemKind(kind), anim_idx, mode, speed, - morph_speed, frame); - } - umbrella = FALSE; - if (mPlayer_ITEM_IS_UMBRELLA(kind)) { - umbrella = TRUE; - } - - if (!umbrella) { - if (player->umbrella_actor != NULL && Common_Get(clip).tools_clip != NULL) { - Common_Get(clip).tools_clip->aTOL_chg_request_mode_proc(actor, player->umbrella_actor, 3); - player->umbrella_actor = NULL; - } - - player->umbrella_state = 4; - } else { - TOOLS_ACTOR* tool = (TOOLS_ACTOR*)player->umbrella_actor; - if (tool != NULL && (kind - mPlayer_ITEM_KIND_UMBRELLA00) != tool->tool_name) { - if (Common_Get(clip).tools_clip != NULL) { - Common_Get(clip).tools_clip->aTOL_chg_request_mode_proc(actor, player->umbrella_actor, 3); - player->umbrella_actor = NULL; - } - - player->umbrella_state = 4; - } - } - - rod = FALSE; - if (mPlayer_ITEM_IS_ROD(kind)) { - rod = TRUE; - } - - if (!rod) { - Player_actor_Item_Set_Command_forUki(actor, 0); - } -} - - void Player_actor_CorrectSomething_net(ACTOR* actor, xyz_t* pos) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; TOOLS_ACTOR* label = (TOOLS_ACTOR*)player->item_net_catch_label; From 2470f6a67394d47617d0b1c058923cb51f4f39b5 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Sun, 25 Aug 2024 22:13:31 +0200 Subject: [PATCH 132/234] match m_player_item_axe --- src/m_player_item_axe.c_inc | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/m_player_item_axe.c_inc b/src/m_player_item_axe.c_inc index e69de29b..6f83fc62 100644 --- a/src/m_player_item_axe.c_inc +++ b/src/m_player_item_axe.c_inc @@ -0,0 +1,25 @@ +int Player_actor_Item_main_axe_normal(ACTOR* actor, GAME* game){ + return 0; +} + +void Player_actor_Item_draw_axe(ACTOR* actor, GAME* game){ + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int shape_type; + + Matrix_push(); + Matrix_Position_VecZ(&player->axe_pos, 1500.0f); + Matrix_pull(); + + shape_type = player->item_shape_type[player->item_bank_idx]; + + if(mPlayer_ITEM_DATA_VALID(shape_type)){ + OPEN_POLY_OPA_DISP(game->graph); + + gSPDisplayList(POLY_OPA_DISP++, mPlib_Get_Item_DataPointer(shape_type)); + + CLOSE_POLY_OPA_DISP(game->graph); + } + + player->update_item_rod_top_pos = FALSE; + player->balloon_start_pos_set_flag = FALSE; +} \ No newline at end of file From 4dd0113c11c668cad5bed537ffc0e452ca17c587 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Sun, 25 Aug 2024 22:14:25 +0200 Subject: [PATCH 133/234] match m_player_item_net --- src/m_player_item_net.c_inc | 265 ++++++++++++++++++++++++++++++++++++ 1 file changed, 265 insertions(+) diff --git a/src/m_player_item_net.c_inc b/src/m_player_item_net.c_inc index e69de29b..6496f835 100644 --- a/src/m_player_item_net.c_inc +++ b/src/m_player_item_net.c_inc @@ -0,0 +1,265 @@ +void Player_actor_Item_net_CulcJointAngle_dummy_net_base(s_xyz* angle, const s_xyz* base, s16 min, s16 max, f32 frac){ + + add_calc_short_angle2(&angle->x, base->x, 1.0f - sqrtf(1.0f - frac), min >> 1, max >> 1); + add_calc_short_angle2(&angle->y, base->y, 1.0f - sqrtf(1.0f - frac), min >> 1, max >> 1); + add_calc_short_angle2(&angle->z, base->z, 1.0f - sqrtf(1.0f - frac), min >> 1, max >> 1); +} + +void Player_actor_Item_net_CulcJointAngle_dummy_net_reset(ACTOR* actor){ + static const s_xyz basic_angle = {0, 182, -7281}; + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_Item_net_CulcJointAngle_dummy_net_base(&player->net_angle,&basic_angle, 2730, 100, 0.2f); +} + +void Player_actor_Item_net_CulcJointAngle_dummy_net_ready(ACTOR* actor){ + static s_xyz basic_angle = {0, 364, -11832}; + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_Item_net_CulcJointAngle_dummy_net_base(&player->net_angle,&basic_angle, 2730, 100, 0.2f); +} + +void Player_actor_Item_net_CulcJointAngle_dummy_net_common(ACTOR* actor, const xyz_t* start_angle, const xyz_t* arg2, const xyz_t* end_left_angle, const xyz_t* end_right_angle){ + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + f32 sp = (player->keyframe0.frame_control.speed - 0.22f) / 0.38f; + s_xyz base; + f32 angle_y; + f32 fac; + s_xyz* net_angle = &player->net_angle; + + if(sp > 1.0f){ + sp = 1.0f; + } + else if(sp < 0.0f){ + sp = 0.0f; + } + + base.x = (s16)(int)(start_angle->x + (sp * (arg2->x - start_angle->x))); + base.y = (s16)(int)(start_angle->y + (sp * (arg2->y - start_angle->y))); + base.z = (s16)(int)(start_angle->z + (sp * (arg2->z - start_angle->z))); + + angle_y = player->shape_angle_delta.y; + + if(angle_y > 0.0f){ + if(angle_y > 32768.0f){ + angle_y = -(65536.0f - angle_y); + } + } + else if (angle_y < -32768.0f) { + angle_y = angle_y + 65536.0f; + } + + fac = angle_y / 1820.0f; + + if(fac > 1.0f){ + fac = 1.0f; + } + else if(fac < -1.0f){ + fac = -1.0f; + } + + if(fac > 0.0f){ + base.x += (s16)(int)(fac * (end_left_angle->x - start_angle->x)); + base.y += (s16)(int)(fac * (end_left_angle->y - start_angle->y)); + base.z += (s16)(int)(fac * (end_left_angle->z - start_angle->z)); + + } + else if(fac < 0.0f){ + base.x += (s16)(int)(-fac * (end_right_angle->x - start_angle->x)); + base.y += (s16)(int)(-fac * (end_right_angle->y - start_angle->y)); + base.z += (s16)(int)(-fac * (end_right_angle->z - start_angle->z)); + } + + Player_actor_Item_net_CulcJointAngle_dummy_net_base(net_angle, &base, 2730, 100, 0.2f); +} + +void Player_actor_Item_net_CulcJointAngle_dummy_net_walk(ACTOR* actor){ + static const xyz_t basic_start_move_angle = {0, 182.0f, -7281.0f}; + static const xyz_t basic_end_left_turn_angle = {0, -4551.0f, -4551.0f}; + static const xyz_t basic_end_right_turn_angle = {0, 4551.0f, -4551.0f}; + + + Player_actor_Item_net_CulcJointAngle_dummy_net_common(actor, &basic_start_move_angle, &ZeroVec, &basic_end_left_turn_angle, &basic_end_right_turn_angle); +} + + +void Player_actor_Item_net_CulcJointAngle_dummy_net_zero(ACTOR* actor){ + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_Item_net_CulcJointAngle_dummy_net_base(&player->net_angle,&ZeroSVec, 2730, 100, 0.2f); + +} + + +void Player_actor_Item_net_CulcJointAngle_dummy_net_ready_walk(ACTOR* actor){ + static const xyz_t basic_start_move_angle = { 0.0f, 364.0f, -11832.0f }; + static const xyz_t basic_end_left_turn_angle = {0, -4551.0f, -4551.0f}; + static const xyz_t basic_end_right_turn_angle = {0, 4551.0f, -4551.0f}; + + + Player_actor_Item_net_CulcJointAngle_dummy_net_common(actor, &basic_start_move_angle, &ZeroVec, &basic_end_left_turn_angle, &basic_end_right_turn_angle); +} + + + +void Player_actor_Item_net_CulcJointAngle_dummy_net_turn(ACTOR* actor){ + static const xyz_t basic_angle = { 0.0f, -4551.0f, -4551.0f }; + + Player_actor_Item_net_CulcJointAngle_dummy_net_common(actor, &basic_angle, &basic_angle, &basic_angle, &basic_angle); +} + + + +void Player_actor_Item_net_CulcJointAngle_dummy_net_slip(ACTOR* actor){ + static const xyz_t basic_angle = {0.0f, 0.0f, -11832.0f}; + + + Player_actor_Item_net_CulcJointAngle_dummy_net_common(actor, &basic_angle, &basic_angle, &basic_angle, &basic_angle); +} + +void Player_actor_Item_net_CulcJointAngle_dummy_net_swing(ACTOR* actor){ + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if(player->keyframe0.frame_control.current_frame >= 0.5f){ + Player_actor_Item_net_CulcJointAngle_dummy_net_zero(actor); + } + else{ + Player_actor_Item_net_CulcJointAngle_dummy_net_ready(actor); + } +} + +typedef void (*mPlayer_item_net_proc)(ACTOR*); + +void Player_actor_Item_net_CulcJointAngle_dummy_net(ACTOR* actor) { + static mPlayer_item_net_proc proc[] = { + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_walk, Player_actor_Item_net_CulcJointAngle_dummy_net_walk, + Player_actor_Item_net_CulcJointAngle_dummy_net_walk, Player_actor_Item_net_CulcJointAngle_dummy_net_zero, + Player_actor_Item_net_CulcJointAngle_dummy_net_zero, Player_actor_Item_net_CulcJointAngle_dummy_net_turn, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_slip, + Player_actor_Item_net_CulcJointAngle_dummy_net_ready, Player_actor_Item_net_CulcJointAngle_dummy_net_ready_walk, + Player_actor_Item_net_CulcJointAngle_dummy_net_swing, Player_actor_Item_net_CulcJointAngle_dummy_net_zero, + Player_actor_Item_net_CulcJointAngle_dummy_net_zero, Player_actor_Item_net_CulcJointAngle_dummy_net_zero, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_walk, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_zero, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + + }; + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int valid = FALSE; + int index = player->now_main_index; + + if (mPlayer_MAIN_INDEX_VALID(index)) { + valid = TRUE; + } + + if (valid == FALSE || proc[index] == NULL) { + return; + }else{ + proc[index](actor); + } +} + +int Player_actor_Item_main_net_normal(ACTOR* actor){ + Player_actor_Item_CulcAnimation_Base(actor); + Player_actor_Item_net_CulcJointAngle_dummy_net(actor); + return 0; +} + +int Player_actor_Item_main_net_stop(ACTOR* actor){ + int ret = Player_actor_Item_CulcAnimation_Base2(actor); + + Player_actor_Item_net_CulcJointAngle_dummy_net(actor); + return ret; +} + +void Player_actor_Item_draw_net_After_dummy_net(ACTOR* actor){ + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Matrix_rotateXYZ(player->net_angle.x, player->net_angle.y, player->net_angle.z, 1); +} + +typedef void (*mPlayer_item_net_draw_proc)(void* arg, GAME* game, cKF_SkeletonInfo_R_c* keyframe, Gfx** joint_shape, + u8* joint_flags, s_xyz* joint_rot, xyz_t* joint_pos); + +int Player_actor_Item_draw_net_After(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_idx, Gfx** joint_shape, + u8* joint_flags, void* arg, s_xyz* joint_rot, xyz_t* joint_pos) { + static const mPlayer_item_net_draw_proc proc[] = { + NULL, NULL, (mPlayer_item_net_draw_proc)Player_actor_Item_draw_net_After_dummy_net, NULL, NULL, NULL, + }; + + if (joint_idx >= 0 && joint_idx < 6) { + if (proc[joint_idx] != NULL) { + proc[joint_idx](arg, game, keyframe, joint_shape, joint_flags, joint_rot, joint_pos); + } + } + + return TRUE; +} + +void Player_actor_Item_draw_net(ACTOR* actor, GAME* game){ + GAME_PLAY* play = (GAME_PLAY*)game; + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Matrix_push(); + Matrix_rotateXYZ(0, 3000, 0, 1); + Matrix_Position_VecZ(&player->net_start_pos, -2400.0f); + Matrix_Position_VecZ(&player->net_end_pos, 5500.0f); + Matrix_Position_VecZ(&player->net_pos, 4000.0f); + Matrix_Position_VecZ(&player->net_top_col_pos, 4000.0f); + Matrix_Position_VecZ(&player->net_bot_col_pos, 4000.0f); + Matrix_pull(); + cKF_Si3_draw_R_SV(&play->game, &player->item_keyframe, player->item_work_mtx[game->frame_counter % 2], NULL, Player_actor_Item_draw_net_After, &player->actor_class); + player->update_item_rod_top_pos = FALSE; + player->balloon_start_pos_set_flag = FALSE; +} From 9e3481e7cad86d89268efb2050a31a331768fd52 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Sun, 25 Aug 2024 22:16:33 +0200 Subject: [PATCH 134/234] match m_player_item_umbrella --- src/m_player_item_axe.c_inc | 2 +- src/m_player_item_umbrella.c_inc | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/m_player_item_axe.c_inc b/src/m_player_item_axe.c_inc index 6f83fc62..0b298c98 100644 --- a/src/m_player_item_axe.c_inc +++ b/src/m_player_item_axe.c_inc @@ -22,4 +22,4 @@ void Player_actor_Item_draw_axe(ACTOR* actor, GAME* game){ player->update_item_rod_top_pos = FALSE; player->balloon_start_pos_set_flag = FALSE; -} \ No newline at end of file +} diff --git a/src/m_player_item_umbrella.c_inc b/src/m_player_item_umbrella.c_inc index e69de29b..07332ba5 100644 --- a/src/m_player_item_umbrella.c_inc +++ b/src/m_player_item_umbrella.c_inc @@ -0,0 +1,17 @@ +int Player_actor_Item_main_umbrella_normal(ACTOR* actor, GAME* game){ + Player_actor_Get_umbrella_p(actor,game); + return 0; +} + +void Player_actor_Item_draw_umbrella(ACTOR* actor, GAME* game){ + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + TOOLS_ACTOR* umbrella = (TOOLS_ACTOR*)Player_actor_Get_umbrella_p(actor,game); + + if(umbrella != NULL){ + Matrix_get(&umbrella->matrix_work); + umbrella->init_matrix = TRUE; + } + + player->update_item_rod_top_pos = FALSE; + player->balloon_start_pos_set_flag = FALSE; +} From c484f147b512cce0863b675f96d86edec0740d86 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Sun, 25 Aug 2024 22:18:05 +0200 Subject: [PATCH 135/234] match m_player_item_rod --- src/m_player_item_rod.c_inc | 396 ++++++++++++++++++++++++++++++++++++ 1 file changed, 396 insertions(+) diff --git a/src/m_player_item_rod.c_inc b/src/m_player_item_rod.c_inc index e69de29b..3b63bcfc 100644 --- a/src/m_player_item_rod.c_inc +++ b/src/m_player_item_rod.c_inc @@ -0,0 +1,396 @@ +void Player_actor_Item_Set_Scale_forUki_normal(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + ACTOR* rod = player->fishing_rod_actor_p; + f32 scale = 0.01f; + + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_TAKEOUT_ITEM || + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_PUTIN_ITEM) { + scale *= player->item_scale; + } + + if(rod != NULL){ + rod->scale.x = rod->scale.y = rod->scale.z = scale; + + } +} + +void Player_actor_Item_Set_Value_forUki_normal(ACTOR* actor, GAME* game){ + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_Item_Set_Command_forUki(actor, 1); + Player_actor_Item_Set_RightHandPos_forUki(actor, player->now_main_index); + Player_actor_Item_Set_PosSpeed_forUki(actor); + Player_actor_Item_Set_AngleSpeedY_forUki(actor); + Player_actor_Item_Set_RodTopPos_forUki(actor); + Player_actor_Item_Set_Scale_forUki_normal(actor, game); +} + +int Player_actor_Item_main_rod_normal(ACTOR* actor, GAME* game){ + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_Item_CulcAnimation_Base(actor); + Player_actor_Item_Set_Value_forUki_normal(actor, game); + return 0; +} + +void Player_actor_Item_Set_Value_forUki_ready(ACTOR* actor){ + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_Item_Set_Command_forUki(actor, 2); + Player_actor_Item_Set_RightHandPos_forUki(actor, player->now_main_index); + Player_actor_Item_Set_PosSpeed_forUki(actor); + Player_actor_Item_Set_AngleSpeedY_forUki(actor); + Player_actor_Item_Set_RodTopPos_forUki(actor); + +} + +int Player_actor_Item_main_rod_ready(ACTOR* actor, GAME* game){ + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_Item_CulcAnimation_Base(actor); + Player_actor_Item_Set_Value_forUki_ready(actor); + return 0; +} + +void Player_actor_Item_Set_CastGoalPoint_forUki_cast(ACTOR* actor, int index){ + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if(index == mPlayer_INDEX_CAST_ROD){ + UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; + + if(rod != NULL){ + rod->cast_goal_point = player->main_data.uki.cast_goal_point; + } + + } +} + +void Player_actor_Item_Set_Value_forUki_cast(ACTOR* actor){ + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_Item_Set_Command_forUki(actor, 3); + Player_actor_Item_Set_RightHandPos_forUki(actor, player->now_main_index); + Player_actor_Item_Set_PosSpeed_forUki(actor); + Player_actor_Item_Set_AngleSpeedY_forUki(actor); + Player_actor_Item_Set_RodTopPos_forUki(actor); + +} + +int Player_actor_Item_Check_Status_forUki_cast(ACTOR* actor){ + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; + + if(rod != NULL){ + switch(rod->status){ + case 4: + case 5: + return 1; + } + } + + return 0; +} + +int Player_actor_Item_main_rod_cast(ACTOR* actor, GAME* game){ + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int status; + + Player_actor_Item_CulcAnimation_Base(actor); + Player_actor_Item_Set_Value_forUki_cast(actor); + status = Player_actor_Item_Check_Status_forUki_cast(actor); + Player_actor_Item_Set_CastGoalPoint_forUki_cast(actor, player->now_main_index); + return status; +} + +void Player_actor_Item_Set_Value_forUki_air(ACTOR* actor){ + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_Item_Set_Command_forUki(actor, 4); + Player_actor_Item_Set_RightHandPos_forUki(actor, player->now_main_index); + Player_actor_Item_Set_PosSpeed_forUki(actor); + Player_actor_Item_Set_AngleSpeedY_forUki(actor); + Player_actor_Item_Set_RodTopPos_forUki(actor); +} + +int Player_actor_Item_main_rod_air(ACTOR* actor, GAME* game){ + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_Item_CulcAnimation_Base(actor); + Player_actor_Item_Set_Value_forUki_air(actor); + return 0; +} + +void Player_actor_Item_SetFrame_forUki_relax(ACTOR* actor, GAME* game){ + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; + + if(rod != NULL){ + f32 frame = player->item_keyframe.frame_control.current_frame; + f32 target; + xyz_t pos; + if(rod->status != 3){ + f32 end_pos = 2.0f + ( 61.5f + actor->world.position.y); + + Player_actor_Get_ItemRodVirtualTopPos(actor, &pos); + target = 200.0f + (9.1f * (pos.y - end_pos)); + } + else{ + target = 180.0f; + } + + add_calc2(&frame, target, 1.0f - sqrtf(0.25f), 360.0f); + Player_actor_Item_SetAnimation_Base(actor, frame); + } +} + +void Player_actor_Item_Set_Value_forUki_relax(ACTOR* actor){ + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_Item_Set_RightHandPos_forUki(actor, player->now_main_index); + Player_actor_Item_Set_PosSpeed_forUki(actor); + Player_actor_Item_Set_AngleSpeedY_forUki(actor); + Player_actor_Item_Set_RodTopPos_forUki(actor); +} + +int Player_actor_Item_Check_Status_forUki_relax(ACTOR* actor){ + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; + + if(rod != NULL) { + return rod->status; + } + else{ + return 6; + } +} + +int Player_actor_Item_main_rod_relax(ACTOR* actor, GAME* game){ + Player_actor_Item_SetFrame_forUki_relax(actor,game); + Player_actor_Item_Set_Value_forUki_relax(actor); + return Player_actor_Item_Check_Status_forUki_relax(actor); +} + +void Player_actor_Item_Set_Value_forUki_collect(ACTOR* actor){ + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_Item_Set_Command_forUki(actor, 6); + Player_actor_Item_Set_RightHandPos_forUki(actor, player->now_main_index); + Player_actor_Item_Set_PosSpeed_forUki(actor); + Player_actor_Item_Set_AngleSpeedY_forUki(actor); + Player_actor_Item_Set_RodTopPos_forUki(actor); +} + +int Player_actor_Item_Check_Status_forUki_collect(ACTOR* actor){ + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; + + if(rod != NULL){ + switch(rod->status){ + case 7: + return 0; + } + } + + return 1; +} + +int Player_actor_Item_main_rod_collect(ACTOR* actor, GAME* game){ + Player_actor_Item_CulcAnimation_Base(actor); + Player_actor_Item_Set_Value_forUki_collect(actor); + return Player_actor_Item_Check_Status_forUki_collect(actor); +} + +void Player_actor_Item_SetFrame_forUki_vib(ACTOR* actor){ + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; + + if(rod != NULL){ + f32 frame = player->item_keyframe.frame_control.current_frame; + f32 target; + xyz_t* left_hand ; + xyz_t* wpos; + xyz_t pos; + f32 left_hand_len; + f32 wpos_len; + f32 diff; + + left_hand = &player->left_hand_pos; + wpos = &rod->actor_class.world.position; + Player_actor_Get_ItemRodVirtualTopPos(actor, &pos); + left_hand_len = Math3DLengthSquare(left_hand, &pos); + wpos_len = Math3DLengthSquare(wpos, &pos); + + diff = (left_hand_len + wpos_len) - Math3DLengthSquare(wpos, left_hand); + if(diff <= 0.0f){ + target = 180.0f; + } + else{ + target = 180.0f + (0.01f * diff); + } + + add_calc2(&frame, target, 1.0f - sqrtf(0.25f), 360.0f); + Player_actor_Item_SetAnimation_Base(actor, frame); + } +} + +void Player_actor_Item_Set_Value_forUki_vib(ACTOR* actor){ + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_Item_Set_Command_forUki(actor, 6); + Player_actor_Item_Set_RightHandPos_forUki(actor, player->now_main_index); + Player_actor_Item_Set_LeftHandPos_forUki(actor, player->now_main_index); + Player_actor_Item_Set_PosSpeed_forUki(actor); + Player_actor_Item_Set_AngleSpeedY_forUki(actor); + Player_actor_Item_Set_RodTopPos_forUki(actor); +} + +int Player_actor_Item_Check_Status_forUki_vib(ACTOR* actor){ + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; + + if(rod != NULL){ + switch(rod->status){ + case 6: + return 1; + } + } + + return 0; +} + +int Player_actor_Item_main_rod_vib(ACTOR* actor, GAME* game){ + Player_actor_Item_SetFrame_forUki_vib(actor); + Player_actor_Item_Set_Value_forUki_vib(actor); + return Player_actor_Item_Check_Status_forUki_vib(actor); +} + +void Player_actor_Item_Set_Value_forUki_fly(ACTOR* actor){ + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_Item_Set_Command_forUki(actor, 6); + Player_actor_Item_Set_RightHandPos_forUki(actor, player->now_main_index); + Player_actor_Item_Set_LeftHandPos_forUki(actor, player->now_main_index); + Player_actor_Item_Set_PosSpeed_forUki(actor); + Player_actor_Item_Set_AngleSpeedY_forUki(actor); + Player_actor_Item_Set_RodTopPos_forUki(actor); +} + +int Player_actor_Item_Check_Status_forUki_fly(ACTOR* actor){ + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; + + if(rod != NULL){ + switch(rod->status){ + case 7: + return 1; + } + } + + return 0; +} + +int Player_actor_Item_main_rod_fly(ACTOR* actor, GAME* game){ + Player_actor_Item_CulcAnimation_Base(actor); + Player_actor_Item_Set_Value_forUki_fly(actor); + return Player_actor_Item_Check_Status_forUki_fly(actor); +} + +void Player_actor_Item_Set_GyoeiScale_forUki_putaway(ACTOR* actor, int index){ + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if(index == mPlayer_INDEX_PUTAWAY_ROD){ + UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; + + if(rod != NULL){ + f32 f1 = (30.0f - player->main_data.putaway_uki.unk0) / 30.0f; + + if(f1 > 1.0f){ + f1 = 1.0f; + } + else if(f1 < 0.0f){ + f1 = 0.0f; + } + + rod->unk294 = f1; + } + } +} + +void Player_actor_Item_Set_Value_forUki_putaway(ACTOR* actor){ + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_Item_Set_Command_forUki(actor, 5); + Player_actor_Item_Set_RightHandPos_forUki(actor, player->now_main_index); + Player_actor_Item_Set_LeftHandPos_forUki(actor, player->now_main_index); + Player_actor_Item_Set_PosSpeed_forUki(actor); + Player_actor_Item_Set_AngleSpeedY_forUki(actor); + Player_actor_Item_Set_RodTopPos_forUki(actor); +} + +int Player_actor_Item_main_rod_putaway(ACTOR* actor, GAME* game){ + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_Item_CulcAnimation_Base(actor); + Player_actor_Item_Set_Value_forUki_putaway(actor); + Player_actor_Item_Set_GyoeiScale_forUki_putaway(actor, player->now_main_index); + return 0; +} + +void Player_actor_Item_draw_net_After_main4_sao(ACTOR* actor){ + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Matrix_Position_VecX(&player->item_rod_top_pos, 1050.0f); +} + +typedef void (*mPlayer_item_rod_draw_proc)(void* arg, GAME* game, cKF_SkeletonInfo_R_c* keyframe, Gfx** joint_shape, + u8* joint_flags, s_xyz* joint_rot, xyz_t* joint_pos); + +int Player_actor_Item_draw_rod_After(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_idx, Gfx** joint_shape, + u8* joint_flags, void* arg, s_xyz* joint_rot, xyz_t* joint_pos) { + static const mPlayer_item_net_draw_proc proc[] = { + NULL,NULL,NULL,NULL, (mPlayer_item_rod_draw_proc)Player_actor_Item_draw_net_After_main4_sao, + }; + + if(joint_idx >= 0 && joint_idx < 5){ + if(proc[joint_idx] != NULL){ + proc[joint_idx](arg,game,keyframe,joint_shape,joint_flags,joint_rot,joint_pos); + } + } + + return 1; +} + +void Player_actor_Item_draw_rod(ACTOR* actor, GAME* game){ + GAME_PLAY* play = (GAME_PLAY*)game; + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + Mtx* mtx; + cKF_SkeletonInfo_R_c* keyf; + Mtx* item_mtx; + GRAPH* graph; + + item_mtx = player->item_work_mtx[play->game.frame_counter % 2]; + graph = play->game.graph; + keyf = &player->item_keyframe; + + Matrix_Position_VecZ(&player->item_rod_virtual_top_pos, 6000.0f); + Matrix_push(); + Matrix_RotateZ(player->item_rod_angle_z, 1); + + mtx = _Matrix_to_Mtx_new(play->game.graph); + + if(mtx != NULL){ + OPEN_POLY_OPA_DISP(graph); + + gSPMatrix(POLY_OPA_DISP++, mtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + CLOSE_POLY_OPA_DISP(graph); + + cKF_Si3_draw_R_SV(game, keyf, item_mtx , NULL, Player_actor_Item_draw_rod_After, &player->actor_class); + player->update_item_rod_top_pos = TRUE; + + } + + player->balloon_start_pos_set_flag = FALSE; + + Matrix_pull(); +} From 1a90d3b123fc2e6e6995295f5439fa1357482b9f Mon Sep 17 00:00:00 2001 From: Prakxo Date: Sun, 25 Aug 2024 22:18:33 +0200 Subject: [PATCH 136/234] match m_player_item_scoop --- src/m_player_item_scoop.c_inc | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/m_player_item_scoop.c_inc b/src/m_player_item_scoop.c_inc index e69de29b..cff5449c 100644 --- a/src/m_player_item_scoop.c_inc +++ b/src/m_player_item_scoop.c_inc @@ -0,0 +1,21 @@ +int Player_actor_Item_main_scoop_normal(ACTOR* actor, GAME* game){ + return 0; +} + +void Player_actor_Item_draw_scoop(ACTOR* actor, GAME* game){ + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int type; + + Matrix_push(); + Matrix_Position_VecZ(&player->scoop_pos, 2200.0f); + Matrix_pull(); + + type =player->item_shape_type[player->item_bank_idx]; + + OPEN_POLY_OPA_DISP(game->graph); + gSPDisplayList(POLY_OPA_DISP++, mPlib_Get_Item_DataPointer(type)); + + CLOSE_POLY_OPA_DISP(game->graph); + player->update_item_rod_top_pos = FALSE; + player->balloon_start_pos_set_flag = FALSE; +} From 386ba4475da140a43fd35bb8ac346bfa90c92bb0 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Sun, 25 Aug 2024 22:19:25 +0200 Subject: [PATCH 137/234] match m_player_item_balloon --- src/m_player_item_balloon.c_inc | 293 ++++++++++++++++++++++++++++++++ 1 file changed, 293 insertions(+) diff --git a/src/m_player_item_balloon.c_inc b/src/m_player_item_balloon.c_inc index e69de29b..032effee 100644 --- a/src/m_player_item_balloon.c_inc +++ b/src/m_player_item_balloon.c_inc @@ -0,0 +1,293 @@ +s16 Player_actor_Item_Get_goal_balloon_lean_angle(ACTOR* actor){ + return -actor->shape_info.rotation.x; +} + +void Player_actor_Item_Setup_main_balloon_normal(ACTOR* actor, GAME* game, int kind){ + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int check = FALSE; + + if(mPlayer_ITEM_IS_BALLOON(kind)){ + check = TRUE; + } + + if(check == FALSE){ + player->balloon_lean_angle = Player_actor_Item_Get_goal_balloon_lean_angle(actor); + player->balloon_angle = ZeroSVec; + player->balloon_anim_max_frame = player->item_keyframe.frame_control.max_frames; + player->balloon_anim_speed = 0.0f; + player->balloon_stop_movement_flag = TRUE; + player->balloon_add_rot_z = 30.0f; + player->ballon_add_rot_x = 0; + player->balloon_add_rot_x_counter = 0; + player->balloon_current_frame = 0.0f; + } + + player->item_keyframe.frame_control.current_frame = player->balloon_anim_max_frame; + player->item_keyframe.frame_control.speed = player->balloon_anim_speed; + +} + +void Player_actor_Item_set_balloon_lean_angle(ACTOR* actor){ + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + s16 angle = Player_actor_Item_Get_goal_balloon_lean_angle(actor); + add_calc_short_angle2(&player->balloon_lean_angle, angle, 1.0f - sqrtf(0.91f), 250, 0); +} + +void Player_actor_Item_CulcAnimation_balloon_normal(ACTOR* actor){ + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + f32 speed = player->item_keyframe.frame_control.speed; + f32 cur = player->item_keyframe.frame_control.current_frame; + f32 max = player->item_keyframe.frame_control.max_frames; + + player->balloon_anim_max_frame = cur; + cur += speed; + player->balloon_anim_speed = speed; + + if(cur > max){ + cur = max; + } + else if(cur < 0.5f * max){ + cur = 0.5f * max; + } + + player->item_keyframe.frame_control.current_frame = cur; +} + + +void Player_actor_Item_Movement_balloon_normal(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + f32 max = player->item_keyframe.frame_control.max_frames; + int index; + + if (player->item_scale == 1.0f) { + f32 speed = (26.0f * (player->item_keyframe.frame_control.current_frame - 1.0f)) / (max - 1.0f); + xyz_t pos = ZeroVec; + + if (player->balloon_stop_movement_flag == FALSE) { + s16 ang = player->balloon_lean_angle; + s16 rot = actor->shape_info.rotation.y; + s16 target; + f32 cos = cos_s(ang); + xyz_t right_hand = player->right_hand_move; + + pos.y -= right_hand.y * cos; + + { + f32 cos = cos_s(DEG2SHORT_ANGLE2(90.0f) - ang); + f32 sin = sin_s(rot); + f32 cos2 = cos_s(rot); + f32 poscalc = ((sin * right_hand.x) + (cos2 * right_hand.z)); + + pos.y -= poscalc * cos; + } + + { + f32 balloon_add_rot_z = player->balloon_add_rot_z; + s16 add_z_angle; + + balloon_add_rot_z -= (0.0014f * player->balloon_angle.z); + add_z_angle = player->balloon_angle.z + (int)balloon_add_rot_z; + + if (add_z_angle > 0x800) { + add_z_angle = 0x800; + } else if (add_z_angle < -0x800) { + add_z_angle = -0x800; + } + + player->balloon_angle.z = add_z_angle; + player->balloon_add_rot_z = balloon_add_rot_z; + } + + { + f32 sin = sin_s(rot); + f32 cos2 = cos_s(rot); + s16 balloon_angle_z = (s16)(-1200.0f * ((sin * right_hand.x) + (cos2 * right_hand.z))); + s16 balloon_angle_x = player->balloon_angle.x; + int xang = ABS(balloon_angle_x); + int zang = ABS(balloon_angle_z); + + if (zang - xang < 0) { + add_calc_short_angle2(&player->balloon_angle.x, balloon_angle_z, 1.0f - sqrtf(0.9f), 2500, 0); + } else { + add_calc_short_angle2(&player->balloon_angle.x, balloon_angle_z, 1.0f - sqrtf(0.6f), 2500, 0); + } + } + + { + int index = player->now_main_index; + s16 add_x_angle = player->ballon_add_rot_x; + + if (index == mPlayer_INDEX_WALK || index == mPlayer_INDEX_RUN) { + s16 counter = player->balloon_add_rot_x_counter; + f32 sin; + + counter += (s16)(400.0f * actor->speed); + sin = sin_s(counter); + player->balloon_add_rot_x_counter = counter; + + target = (s16)(1000.0f * sin); + } else { + target = 0; + } + + add_calc_short_angle2(&add_x_angle, target, 1.0f - sqrtf(0.6f), 2500, 0); + player->ballon_add_rot_x = add_x_angle; + } + } + + speed += pos.y; + if (speed < 13.0f) { + speed = 13.0f; + } else if (speed > 26.0f) { + speed = 26.0f; + } + + player->item_keyframe.frame_control.current_frame = 1.0f + ((speed * (max - 1.0f)) / 26.0f); + } else { + player->balloon_angle.z = 0; + } + + { + f32 item_speed = player->item_keyframe.frame_control.speed; + f32 cur = player->item_keyframe.frame_control.current_frame; + f32 curmax = 0.7f * max; + + if (cur >= max) { + item_speed = -0.085f; + } else if (item_speed <= 0.0f && cur <= curmax) { + item_speed = 0.0f; + } else { + item_speed += 0.0039585f; + } + + player->item_keyframe.frame_control.speed = item_speed; + } +} + + +void Player_actor_Item_PlayAnimation_balloon_normal(ACTOR* actor){ + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + f32 cur = player->item_keyframe.frame_control.current_frame; + f32 max = player->item_keyframe.frame_control.max_frames; + + if(player->balloon_current_frame != cur){ + f32 cur_diff = cur - player->balloon_current_frame; + f32 old_speed = player->item_keyframe.frame_control.speed; + + if(cur_diff >= 0.0f){ + player->item_keyframe.frame_control.start_frame = 1.0f; + player->item_keyframe.frame_control.end_frame = max; + } + else { + player->item_keyframe.frame_control.end_frame = 1.0f; + player->item_keyframe.frame_control.start_frame = max; + } + + player->item_keyframe.frame_control.speed = cur_diff; + Player_actor_Item_CulcAnimation_Base(actor); + player->item_keyframe.frame_control.current_frame = cur; + player->balloon_current_frame= cur; + player->item_keyframe.frame_control.speed = old_speed; + } +} + +int Player_actor_Item_main_balloon_normal(ACTOR* actor, GAME* game){ + Player_actor_Item_set_balloon_lean_angle(actor); + Player_actor_Item_CulcAnimation_balloon_normal(actor); + return 0; +} + +int Player_actor_Item_draw_balloon_Before(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_idx, Gfx** joint_shape, + u8* joint_flags, void* arg, s_xyz* joint_rot, xyz_t* joint_pos){ + + switch(joint_idx){ + case 1: + case 2: + case 3: + + OPEN_POLY_OPA_DISP(game->graph); + + gDPPipeSync(POLY_OPA_DISP++); + gDPSetTexEdgeAlpha(POLY_OPA_DISP++,80); + + CLOSE_POLY_OPA_DISP(game->graph); + + break; + } + + return 1; +} + +int Player_actor_Item_draw_balloon_After(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_idx, Gfx** joint_shape, + u8* joint_flags, void* arg, s_xyz* joint_rot, xyz_t* joint_pos){ + switch(joint_idx){ + case 1: + case 2: + case 3: + + OPEN_POLY_OPA_DISP(game->graph); + + gDPPipeSync(POLY_OPA_DISP++); + gDPSetTexEdgeAlpha(POLY_OPA_DISP++,144); + + CLOSE_POLY_OPA_DISP(game->graph); + + break; + + } + + return 1; +} +void Player_actor_Item_draw_balloon(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + Mtx* item_mtx; + GAME_PLAY* play = (GAME_PLAY*)game; + s16 angle; + s16 rot; + GRAPH* graph; + f32 scale; + s_xyz* angle_p = &player->balloon_angle; + + if (!_Game_play_isPause(play)) { + Player_actor_Item_Movement_balloon_normal(actor); + Player_actor_Item_PlayAnimation_balloon_normal(actor); + } + + item_mtx = player->item_work_mtx[play->game.frame_counter % 2]; + graph = play->game.graph; + + Matrix_push(); + + rot = actor->shape_info.rotation.y; + scale = player->item_scale; + angle = DEG2SHORT_ANGLE2(-90.0f) + player->balloon_lean_angle + angle_p->x + player->ballon_add_rot_x; + + Matrix_translate(player->right_hand_pos.x, player->right_hand_pos.y, player->right_hand_pos.z, 0); + Matrix_RotateY(rot, 1); + Matrix_RotateX(angle, 1); + Matrix_RotateZ(0x4000, 1); + Matrix_RotateX(player->balloon_angle.z, 1); + Matrix_scale(actor->scale.x * scale, actor->scale.y * scale, actor->scale.z * scale, 1); + + OPEN_POLY_OPA_DISP(graph); + + gSPMatrix(POLY_OPA_DISP++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + CLOSE_POLY_OPA_DISP(graph); + + Setpos_HiliteReflect_init(&player->right_hand_pos, play); + + cKF_Si3_draw_R_SV(&play->game, &player->item_keyframe, item_mtx, Player_actor_Item_draw_balloon_Before, Player_actor_Item_draw_balloon_After, actor); + Matrix_pull(); + + player->update_item_rod_top_pos = FALSE; + + if(player->balloon_start_pos_set_flag == FALSE){ + player->other_item_start_pos = player->other_item_end_pos; + player->balloon_start_pos_set_flag = TRUE; + } + + if(player->balloon_stop_movement_flag != FALSE){ + player->balloon_stop_movement_flag = FALSE; + } +} From 0e84ee076ac5b11bbda5a8d340ef69f250da5068 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Sun, 25 Aug 2024 22:20:22 +0200 Subject: [PATCH 138/234] match m_player_item_windmill --- src/m_player_item_windmill.c_inc | 184 +++++++++++++++++++++++++++++++ 1 file changed, 184 insertions(+) diff --git a/src/m_player_item_windmill.c_inc b/src/m_player_item_windmill.c_inc index e69de29b..81edb060 100644 --- a/src/m_player_item_windmill.c_inc +++ b/src/m_player_item_windmill.c_inc @@ -0,0 +1,184 @@ +void Player_actor_Item_windmill_CulcParam(ACTOR* actor){ + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + xyz_t pos; + + if(player->balloon_start_pos_set_flag != FALSE){ + pos.x = player->other_item_end_pos.x - player->other_item_start_pos.x; + pos.y = player->other_item_end_pos.y - player->other_item_start_pos.y; + pos.z = player->other_item_end_pos.z - player->other_item_start_pos.z; + + } + else{ + pos = ZeroVec; + } + + if(pos.x != 0.0f || pos.y != 0.0f || pos.z != 0.0f){ + f32 len; + f32 dist; + f32 sq_len; + + len = Math3DVecLengthSquare2D(pos.x, pos.z); + dist = sqrtf(len + (pos.y * pos.y)); + + player->other_item_move_dist = dist; + + sq_len = sqrtf(len); + player->windmill_param.x = atans_table(sq_len, pos.y); + player->windmill_param.y = atans_table(pos.z, pos.x); + + } + else{ + player->other_item_move_dist = 0.0f; + player->windmill_param.x = 0; + player->windmill_param.y = 0; + + } +} +static void Player_actor_Item_windmill_CulcRotationSpeed(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int angle_x; + int angle_y; + s16 n_angle_x; + f32 target; + cKF_SkeletonInfo_R_c* kf_p = &player->item_keyframe; + xyz_t* wpos_p = &actor->world.position; + xyz_t* last_wpos_p = &actor->last_world_position; + xyz_t* shape_angle_delta_p = &player->shape_angle_delta; + s_xyz* windmill_angle_p = &player->windmill_angle; + s_xyz* windmill_param_p = &player->windmill_param; + f32 power; + + angle_x = windmill_angle_p->x; + angle_y = windmill_angle_p->y; + target = 0.0f; + + if ((wpos_p->x != last_wpos_p->x || + wpos_p->y != last_wpos_p->y || + wpos_p->z != last_wpos_p->z || shape_angle_delta_p->x != 0.0f || + shape_angle_delta_p->y != 0.0f || shape_angle_delta_p->z != 0.0f) && + (!mPlib_check_player_actor_main_index_AllWade(game))) { + f32 dist = player->other_item_move_dist; + + if (dist != 0.0f) { + s16 y_diff = (s16)(windmill_param_p->y - angle_y); + s16 x_diff = (s16)(windmill_param_p->x - angle_x); + + target += 0.0f + (8.0f * (dist * (ABS(cos_s(x_diff)) * cos_s(y_diff)))); + } + } + + power = mEnv_GetWindPowerF_Windmill(); + if(power != 0.0f){ + f32 targetm; + s16 wind_angle = (s16)mEnv_GetWindAngleS(); + s16 ty = wind_angle - angle_y; + s16 tx = 0 - angle_x; + + targetm = 10.0f * (power * (cos_s(ty) * ABS(cos_s(tx)))); + if(target * targetm >= 0.0f){ + target += targetm; + } + } + + { + f32 fracmv; + f32 minm; + f32 maxm; + f32 speed; + + fracmv = 0.005f * target; + minm = 0.005f * target; + maxm = 0.03f * target; + + fracmv = ABS(fracmv); + minm = ABS(minm); + maxm = ABS(maxm); + + fracmv += 0.02f; + minm += 0.1f; + maxm += 0.3f; + + speed = kf_p->frame_control.speed; + add_calc(&speed, target, 1.0f - sqrtf(1.0f - fracmv), maxm * 0.5f, minm * 0.5f); + kf_p->frame_control.speed = speed; + } +} + +int Player_actor_Item_main_windmill_normal(ACTOR* actor, GAME* game){ + Player_actor_Item_windmill_CulcParam(actor); + Player_actor_Item_windmill_CulcRotationSpeed(actor, game); + Player_actor_Item_CulcAnimation_Base(actor); + Player_actor_sound_move_temochi_kazaguruma(actor); + + return 0; +} + +void Player_actor_Item_draw_windmill_After_kaza1_fan(ACTOR* actor){ + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + s_xyz* angle = &player->windmill_angle; + xyz_t* item_end = &player->other_item_end_pos; + + player->other_item_start_pos = *item_end; + + Matrix_Position_Zero(item_end); + + Matrix_to_rotate_new(get_Matrix_now(), angle, 0); + + angle->x *= -1; + angle->y += 0x8000; + +} + +typedef void (*mPlayer_item_windmill_draw_proc)(void* arg, GAME* game, cKF_SkeletonInfo_R_c* keyframe, Gfx** joint_shape, + u8* joint_flags, s_xyz* joint_rot, xyz_t* joint_pos); + +int Player_actor_Item_draw_windmill_After(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_idx, Gfx** joint_shape, + u8* joint_flags, void* arg, s_xyz* joint_rot, xyz_t* joint_pos) { + static const mPlayer_item_windmill_draw_proc proc[] = { + NULL,NULL, (mPlayer_item_windmill_draw_proc)Player_actor_Item_draw_windmill_After_kaza1_fan, + }; + + if(joint_idx >= 0 && joint_idx < 3){ + if(proc[joint_idx] != NULL){ + proc[joint_idx](arg,game,keyframe,joint_shape,joint_flags,joint_rot,joint_pos); + } + } + + return 1; +} + +void Player_actor_Item_draw_rod(ACTOR* actor, GAME* game){ + GAME_PLAY* play = (GAME_PLAY*)game; + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + Mtx* mtx; + cKF_SkeletonInfo_R_c* keyf; + Mtx* item_mtx; + GRAPH* graph; + int ang; + + item_mtx = player->item_work_mtx[play->game.frame_counter % 2]; + graph = play->game.graph; + keyf = &player->item_keyframe; + + Matrix_push(); + OPEN_POLY_OPA_DISP(graph); + ang = (s16)(-0.5f * actor->shape_info.rotation.x); + + Matrix_RotateY(ang, 1); + + gSPMatrix(POLY_OPA_DISP++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + CLOSE_POLY_OPA_DISP(graph); + + + cKF_Si3_draw_R_SV(game, keyf, item_mtx , NULL, Player_actor_Item_draw_windmill_After, &player->actor_class); + Matrix_pull(); + + player->update_item_rod_top_pos = FALSE; + + if (player->balloon_start_pos_set_flag == FALSE) { + player->other_item_start_pos = player->other_item_end_pos; + player->balloon_start_pos_set_flag = TRUE; + } + +} From ece71139c9b6dfe0bc4f248fa2a589737cf05413 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Sun, 25 Aug 2024 22:23:06 +0200 Subject: [PATCH 139/234] match m_player_item_fan --- src/m_player_item_fan.c_inc | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/m_player_item_fan.c_inc b/src/m_player_item_fan.c_inc index e69de29b..b1110087 100644 --- a/src/m_player_item_fan.c_inc +++ b/src/m_player_item_fan.c_inc @@ -0,0 +1,17 @@ +int Player_actor_Item_main_fan_normal(ACTOR* actor, GAME* game){ + return 0; +} + +void Player_actor_Item_draw_fan(ACTOR* actor, GAME* game){ + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int type; + + type =player->item_shape_type[player->item_bank_idx]; + + OPEN_POLY_OPA_DISP(game->graph); + gSPDisplayList(POLY_OPA_DISP++, mPlib_Get_Item_DataPointer(type)); + + CLOSE_POLY_OPA_DISP(game->graph); + player->update_item_rod_top_pos = FALSE; + player->balloon_start_pos_set_flag = FALSE; +} From 7e22c3514bb31698daf92b0f4dc503b758ba7240 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Mon, 26 Aug 2024 17:31:20 +0200 Subject: [PATCH 140/234] fix setup_main_* fakematches --- src/m_player_main_intro.c_inc | 8 ++++---- src/m_player_main_refuse.c_inc | 12 +++++++----- src/m_player_main_refuse_pickup.c_inc | 11 ++++++----- 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/src/m_player_main_intro.c_inc b/src/m_player_main_intro.c_inc index 719bed9b..b5591cf7 100644 --- a/src/m_player_main_intro.c_inc +++ b/src/m_player_main_intro.c_inc @@ -9,12 +9,12 @@ int Player_actor_request_main_intro_all(GAME* game, int flag) { void Player_actor_setup_main_Intro(ACTOR* actor, GAME* game){ PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; - int spC; - int sp8; + int anim_idx; + int part_table_idx; - Player_actor_SetupItem_Base1(actor,0, &spC, &sp8, -5.0f); + Player_actor_SetupItem_Base1(actor,0, -5.0f, &anim_idx, &part_table_idx); player->main_data.intro.timer = 0.0f; - Player_actor_InitAnimation_Base1(actor, game,1.0f, 1.0f, 0.5f, 0.0f, 0, spC, sp8); + Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_WAIT1, anim_idx, 1.0f, 1.0f, 0.5f, 0.0f, part_table_idx); Player_actor_setup_main_Base(actor, game); } diff --git a/src/m_player_main_refuse.c_inc b/src/m_player_main_refuse.c_inc index b8babba3..85262103 100644 --- a/src/m_player_main_refuse.c_inc +++ b/src/m_player_main_refuse.c_inc @@ -6,15 +6,17 @@ int Player_actor_request_main_refuse(GAME* game, int flag) { return FALSE; } -void Player_actor_setup_main_Refuse(ACTOR* actor, GAME* game) { - int spC; - int sp8; +void Player_actor_setup_main_Refuse(ACTOR* actor, GAME* game){ + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int anim_idx; + int part_table_idx; - Player_actor_SetupItem_Base1(actor,0, &spC, &sp8, -5.0f); - Player_actor_InitAnimation_Base1(actor, game,1.0f, 1.0f, 0.5f, -5.0f, 0, spC, sp8); + Player_actor_SetupItem_Base1(actor,0, -5.0f, &anim_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_WAIT1, anim_idx, 1.0f, 1.0f, 0.5f, -5.0f, part_table_idx); Player_actor_setup_main_Base(actor, game); } + void Player_actor_Movement_Refuse(ACTOR* actor) { Player_actor_Movement_Base_Braking(actor); } diff --git a/src/m_player_main_refuse_pickup.c_inc b/src/m_player_main_refuse_pickup.c_inc index 9e67ccbb..7cd70e52 100644 --- a/src/m_player_main_refuse_pickup.c_inc +++ b/src/m_player_main_refuse_pickup.c_inc @@ -34,12 +34,13 @@ void Player_actor_Refuse_pickup_demo_ct(ACTOR* actor){ } -void Player_actor_setup_main_Refuse_pickup(ACTOR* actor, GAME* game) { - int spC; - int sp8; +void Player_actor_setup_main_Refuse_pickup(ACTOR* actor, GAME* game){ + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int anim_idx; + int part_table_idx; - Player_actor_SetupItem_Base1(actor,0, &spC, &sp8, -5.0f); - Player_actor_InitAnimation_Base1(actor, game,1.0f, 1.0f, 0.5f, -5.0f, 0, spC, sp8); + Player_actor_SetupItem_Base1(actor,0, -5.0f, &anim_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_WAIT1, anim_idx, 1.0f, 1.0f, 0.5f, -5.0f, part_table_idx); Player_actor_setup_main_Base(actor, game); } From 24f6e78d00e71cbac1a5989c09fb255dad80b58f Mon Sep 17 00:00:00 2001 From: Prakxo Date: Mon, 26 Aug 2024 20:22:27 +0200 Subject: [PATCH 141/234] match m_player_main_return_demo --- src/m_player_main_intro.c_inc | 2 +- src/m_player_main_refuse.c_inc | 2 +- src/m_player_main_refuse_pickup.c_inc | 2 +- src/m_player_main_return_demo.c_inc | 77 +++++++++++++++++++++++++++ 4 files changed, 80 insertions(+), 3 deletions(-) diff --git a/src/m_player_main_intro.c_inc b/src/m_player_main_intro.c_inc index b5591cf7..58a31a31 100644 --- a/src/m_player_main_intro.c_inc +++ b/src/m_player_main_intro.c_inc @@ -19,7 +19,7 @@ void Player_actor_setup_main_Intro(ACTOR* actor, GAME* game){ } void Player_actor_CulcAnimation_Intro(ACTOR* actor) { - int base; + f32 base; Player_actor_CulcAnimation_Base2(actor, &base); } diff --git a/src/m_player_main_refuse.c_inc b/src/m_player_main_refuse.c_inc index 85262103..381e6057 100644 --- a/src/m_player_main_refuse.c_inc +++ b/src/m_player_main_refuse.c_inc @@ -23,7 +23,7 @@ void Player_actor_Movement_Refuse(ACTOR* actor) { void Player_actor_CulcAnimation_Refuse(ACTOR* actor) { - int base; + f32 base; Player_actor_CulcAnimation_Base2(actor, &base); } diff --git a/src/m_player_main_refuse_pickup.c_inc b/src/m_player_main_refuse_pickup.c_inc index 7cd70e52..c32f5189 100644 --- a/src/m_player_main_refuse_pickup.c_inc +++ b/src/m_player_main_refuse_pickup.c_inc @@ -49,7 +49,7 @@ void Player_actor_Movement_Refuse_pickup(ACTOR* actor) { } void Player_actor_CulcAnimation_Refuse_pickup(ACTOR* actor) { - int base; + f32 base; Player_actor_CulcAnimation_Base2(actor, &base); } diff --git a/src/m_player_main_return_demo.c_inc b/src/m_player_main_return_demo.c_inc index e69de29b..5b8a6b56 100644 --- a/src/m_player_main_return_demo.c_inc +++ b/src/m_player_main_return_demo.c_inc @@ -0,0 +1,77 @@ + +int Player_actor_request_main_return_demo_all(GAME* game, int prev_index, int now_index, f32 time){ + + if(Player_actor_check_request_main_able(game, mPlayer_INDEX_RETURN_DEMO, now_index)){ + PLAYER_ACTOR* player = GET_PLAYER_ACTOR((GAME_PLAY*)game); + + player->requested_main_index_data.return_demo.prev_main_index = prev_index; + player->requested_main_index_data.return_demo.time = time; + Player_actor_request_main_index(game, mPlayer_INDEX_RETURN_DEMO, now_index); + return TRUE; + } + else{ + return FALSE; + } +} + + +void Player_actor_setup_main_Return_demo(ACTOR* actor, GAME* game){ + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int anim_idx; + int part_table_idx; + + Player_actor_SetupItem_Base1(actor, 0, -5.0f, &anim_idx, &part_table_idx); + player->main_data.return_demo.timer = 0.0f; + player->main_data.return_demo.max_timer = player->requested_main_index_data.return_demo.time; + player->main_data.return_demo.prev_main_index = player->requested_main_index_data.return_demo.prev_main_index; + Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_WAIT1, anim_idx, 1.0f, 1.0f, 0.5f, -5.0f, part_table_idx); + Player_actor_setup_main_Base(actor,game); +} + + +void Player_actor_CulcAnimation_Return_demo(ACTOR* actor){ + f32 base; + + Player_actor_CulcAnimation_Base2(actor, &base); +} + +void Player_actor_Movement_Return_demo(ACTOR* actor){ + Player_actor_Movement_Base_Braking(actor); +} + +void Player_actor_ObjCheck_Return_demo(ACTOR* actor, GAME* game){ + Player_actor_Excute_Corect_forStand(actor,game); +} + +void Player_actor_BGcheck_Return_demo(ACTOR* actor){ + Player_actor_BGcheck_common_type1(actor); +} + +void Player_actor_request_proc_index_fromReturn_demo(ACTOR* actor, GAME* game){ + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + f32 max_timer = player->main_data.return_demo.max_timer; + int prev = player->main_data.return_demo.prev_main_index; + + player->main_data.return_demo.timer += 1.0f; + + if(player->main_data.return_demo.timer >= max_timer){ + if(prev != mPlayer_INDEX_DEMO_WAIT){ + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, 1); + } + else{ + Player_actor_request_main_demo_wait_all(game, 0, NULL, 19); + } + } +} + +void Player_actor_main_Return_demo(ACTOR* actor, GAME* game){ + Player_actor_Movement_Return_demo(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_CulcAnimation_Return_demo(actor); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Return_demo(actor, game); + Player_actor_BGcheck_Return_demo(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromReturn_demo(actor, game); +} From eb57b46bbe136969d92b493f428cb14a7c5848d1 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Mon, 26 Aug 2024 20:54:16 +0200 Subject: [PATCH 142/234] match m_player_main_return_outdoor --- include/m_player.h | 14 +++++ src/m_player_main_return_outdoor.c_inc | 72 ++++++++++++++++++++++++++ 2 files changed, 86 insertions(+) diff --git a/include/m_player.h b/include/m_player.h index eb3e39fd..3f224937 100644 --- a/include/m_player.h +++ b/include/m_player.h @@ -597,6 +597,18 @@ typedef struct player_request_return_demo_s { f32 time; } mPlayer_request_return_demo_c; +typedef struct player_request_return_outdoor_s { + int prev_main_index; + f32 time; + f32 _08; +} mPlayer_request_return_outdoor_c; + +typedef struct player_request_return_outdoor2_s { + int prev_main_index; + f32 time; + f32 _08; +} mPlayer_request_return_outdoor2_c; + typedef struct player_request_wait_s { f32 morph_speed; f32 _04; @@ -1183,6 +1195,8 @@ typedef union { mPlayer_request_release_creature_balloon_from_submenu_c release_creature_balloon_from_submenu; mPlayer_request_demo_wait_from_submenu_c demo_wait_from_submenu; mPlayer_request_return_demo_c return_demo; + mPlayer_request_return_outdoor_c return_outdoor; + mPlayer_request_return_outdoor2_c return_outdoor2; mPlayer_request_wait_c wait; mPlayer_request_talk_c talk; mPlayer_request_hold_c hold; diff --git a/src/m_player_main_return_outdoor.c_inc b/src/m_player_main_return_outdoor.c_inc index e69de29b..c21b2705 100644 --- a/src/m_player_main_return_outdoor.c_inc +++ b/src/m_player_main_return_outdoor.c_inc @@ -0,0 +1,72 @@ +int Player_actor_request_main_return_outdoor_all(GAME* game, int prev_index, int now_index, f32 time, f32 arg5){ + + if(Player_actor_check_request_main_able(game, mPlayer_INDEX_RETURN_OUTDOOR, now_index)){ + PLAYER_ACTOR* player = GET_PLAYER_ACTOR((GAME_PLAY*)game); + + player->requested_main_index_data.return_outdoor.prev_main_index = prev_index; + player->requested_main_index_data.return_outdoor.time = time; + player->requested_main_index_data.return_outdoor._08 = arg5; + + Player_actor_request_main_index(game, mPlayer_INDEX_RETURN_OUTDOOR, now_index); + return TRUE; + } + else{ + return FALSE; + } +} + +void Player_actor_setup_main_Return_outdoor(ACTOR* actor, GAME* game){ + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int anim_idx; + int part_table_idx; + f32 _08 = player->requested_main_index_data.return_outdoor._08; + + Player_actor_SetupItem_Base1(actor, 0, -5.0f, &anim_idx, &part_table_idx); + player->main_data.return_outdoor.timer = 0.0f; + player->main_data.return_outdoor.max_timer = player->requested_main_index_data.return_outdoor.time; + player->main_data.return_outdoor.prev_main_index = player->requested_main_index_data.return_outdoor.prev_main_index; + Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_WAIT1, anim_idx, 1.0f, 1.0f, 0.5f, _08, part_table_idx); + Player_actor_setup_main_Base(actor,game); +} + + +void Player_actor_CulcAnimation_Return_outdoor(ACTOR* actor){ + f32 base; + + Player_actor_CulcAnimation_Base2(actor, &base); +} + +void Player_actor_Movement_Return_outdoor(ACTOR* actor){ + Player_actor_Movement_Base_Braking(actor); +} + +void Player_actor_ObjCheck_Return_outdoor(ACTOR* actor, GAME* game){ + Player_actor_Excute_Corect_forStand(actor,game); +} + +void Player_actor_BGcheck_Return_outdoor(ACTOR* actor){ + Player_actor_BGcheck_common_type1(actor); +} + +void Player_actor_request_proc_index_fromReturn_outdoor(ACTOR* actor, GAME* game){ + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + f32 max_timer = player->main_data.return_outdoor.max_timer; + int prev = player->main_data.return_outdoor.prev_main_index; + player->main_data.return_outdoor.timer += 1.0f; + + if(player->main_data.return_outdoor.timer >= max_timer){ + Player_actor_request_main_return_outdoor2_all(game, prev, mPlayer_INDEX_INTRO, 3.0f, -5.0f); + } +} + +void Player_actor_main_Return_outdoor(ACTOR* actor, GAME* game){ + Player_actor_Movement_Return_outdoor(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_CulcAnimation_Return_outdoor(actor); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Return_outdoor(actor, game); + Player_actor_BGcheck_Return_outdoor(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromReturn_outdoor(actor, game); +} From 8f19bf3f04b2212fb5f2eda5f71ae4e4dae39db1 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Mon, 26 Aug 2024 20:54:32 +0200 Subject: [PATCH 143/234] match m_player_main_return_outdoor2 --- src/m_player_main_return_outdoor2.c_inc | 77 +++++++++++++++++++++++++ 1 file changed, 77 insertions(+) diff --git a/src/m_player_main_return_outdoor2.c_inc b/src/m_player_main_return_outdoor2.c_inc index e69de29b..0ecf25d1 100644 --- a/src/m_player_main_return_outdoor2.c_inc +++ b/src/m_player_main_return_outdoor2.c_inc @@ -0,0 +1,77 @@ +int Player_actor_request_main_return_outdoor2_all(GAME* game, int prev_index, int now_index, f32 time, f32 arg5){ + + if(Player_actor_check_request_main_able(game, mPlayer_INDEX_RETURN_OUTDOOR2, now_index)){ + PLAYER_ACTOR* player = GET_PLAYER_ACTOR((GAME_PLAY*)game); + + player->requested_main_index_data.return_outdoor2.prev_main_index = prev_index; + player->requested_main_index_data.return_outdoor2.time = time; + player->requested_main_index_data.return_outdoor2._08 = arg5; + + Player_actor_request_main_index(game, mPlayer_INDEX_RETURN_OUTDOOR2, now_index); + return TRUE; + } + else{ + return FALSE; + } +} + +void Player_actor_setup_main_Return_outdoor2(ACTOR* actor, GAME* game){ + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int anim_idx; + int part_table_idx; + f32 _08 = player->requested_main_index_data.return_outdoor2._08; + + Player_actor_SetupItem_Base1(actor, 0, -5.0f, &anim_idx, &part_table_idx); + player->main_data.return_outdoor2.timer = 0.0f; + player->main_data.return_outdoor2.max_timer = player->requested_main_index_data.return_outdoor2.time; + player->main_data.return_outdoor2.prev_main_index = player->requested_main_index_data.return_outdoor2.prev_main_index; + Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_WAIT1, anim_idx, 1.0f, 1.0f, 0.5f, _08, part_table_idx); + Player_actor_setup_main_Base(actor,game); +} + + +void Player_actor_CulcAnimation_Return_outdoor2(ACTOR* actor){ + f32 base; + + Player_actor_CulcAnimation_Base2(actor, &base); +} + +void Player_actor_Movement_Return_outdoor2(ACTOR* actor){ + Player_actor_Movement_Base_Braking(actor); +} + +void Player_actor_ObjCheck_Return_outdoor2(ACTOR* actor, GAME* game){ + Player_actor_Excute_Corect_forStand(actor,game); +} + +void Player_actor_BGcheck_Return_outdoor2(ACTOR* actor){ + Player_actor_BGcheck_common_type1(actor); +} + +void Player_actor_request_proc_index_fromReturn_outdoor2(ACTOR* actor, GAME* game){ + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + f32 max_timer = player->main_data.return_outdoor2.max_timer; + int prev = player->main_data.return_outdoor2.prev_main_index; + player->main_data.return_outdoor2.timer += 1.0f; + + if(player->main_data.return_outdoor2.timer >= max_timer){ + if(prev != mPlayer_INDEX_DEMO_WAIT){ + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, 1); + } + else{ + Player_actor_request_main_demo_wait_all(game, 0, NULL, 19); + } + } +} + +void Player_actor_main_Return_outdoor2(ACTOR* actor, GAME* game){ + Player_actor_Movement_Return_outdoor2(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_CulcAnimation_Return_outdoor2(actor); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Return_outdoor2(actor, game); + Player_actor_BGcheck_Return_outdoor2(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromReturn_outdoor2(actor, game); +} From 306edd74fae47315171c473ee2bc1396de4a6e8e Mon Sep 17 00:00:00 2001 From: Prakxo Date: Mon, 26 Aug 2024 23:09:00 +0200 Subject: [PATCH 144/234] match m_player_main_wait --- include/m_player.h | 5 + src/m_player_main_return_demo.c_inc | 4 +- src/m_player_main_return_outdoor.c_inc | 2 +- src/m_player_main_return_outdoor2.c_inc | 2 +- src/m_player_main_wait.c_inc | 116 ++++++++++++++++++++++++ 5 files changed, 125 insertions(+), 4 deletions(-) diff --git a/include/m_player.h b/include/m_player.h index 3f224937..7bfcebb7 100644 --- a/include/m_player.h +++ b/include/m_player.h @@ -1301,6 +1301,10 @@ typedef struct player_main_return_outdoor2_s { int prev_main_index; } mPlayer_main_return_outdoor2_c; +typedef struct player_main_wait_s { + int radio_exercise_command; +} mPlayer_main_wait_c; + typedef struct player_main_wade_s { int dir; xyz_t start_pos; @@ -1379,6 +1383,7 @@ typedef union { mPlayer_main_return_demo_c return_demo; mPlayer_main_return_outdoor_c return_outdoor; mPlayer_main_return_outdoor2_c return_outdoor2; + mPlayer_main_wait_c wait; mPlayer_main_wade_c wade; mPlayer_main_pickup_c pickup; mPlayer_main_pickup_jump_c pickup_jump; diff --git a/src/m_player_main_return_demo.c_inc b/src/m_player_main_return_demo.c_inc index 5b8a6b56..15caca49 100644 --- a/src/m_player_main_return_demo.c_inc +++ b/src/m_player_main_return_demo.c_inc @@ -2,8 +2,8 @@ int Player_actor_request_main_return_demo_all(GAME* game, int prev_index, int now_index, f32 time){ if(Player_actor_check_request_main_able(game, mPlayer_INDEX_RETURN_DEMO, now_index)){ - PLAYER_ACTOR* player = GET_PLAYER_ACTOR((GAME_PLAY*)game); - + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + player->requested_main_index_data.return_demo.prev_main_index = prev_index; player->requested_main_index_data.return_demo.time = time; Player_actor_request_main_index(game, mPlayer_INDEX_RETURN_DEMO, now_index); diff --git a/src/m_player_main_return_outdoor.c_inc b/src/m_player_main_return_outdoor.c_inc index c21b2705..4f9192fe 100644 --- a/src/m_player_main_return_outdoor.c_inc +++ b/src/m_player_main_return_outdoor.c_inc @@ -1,7 +1,7 @@ int Player_actor_request_main_return_outdoor_all(GAME* game, int prev_index, int now_index, f32 time, f32 arg5){ if(Player_actor_check_request_main_able(game, mPlayer_INDEX_RETURN_OUTDOOR, now_index)){ - PLAYER_ACTOR* player = GET_PLAYER_ACTOR((GAME_PLAY*)game); + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); player->requested_main_index_data.return_outdoor.prev_main_index = prev_index; player->requested_main_index_data.return_outdoor.time = time; diff --git a/src/m_player_main_return_outdoor2.c_inc b/src/m_player_main_return_outdoor2.c_inc index 0ecf25d1..5078d99c 100644 --- a/src/m_player_main_return_outdoor2.c_inc +++ b/src/m_player_main_return_outdoor2.c_inc @@ -1,7 +1,7 @@ int Player_actor_request_main_return_outdoor2_all(GAME* game, int prev_index, int now_index, f32 time, f32 arg5){ if(Player_actor_check_request_main_able(game, mPlayer_INDEX_RETURN_OUTDOOR2, now_index)){ - PLAYER_ACTOR* player = GET_PLAYER_ACTOR((GAME_PLAY*)game); + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); player->requested_main_index_data.return_outdoor2.prev_main_index = prev_index; player->requested_main_index_data.return_outdoor2.time = time; diff --git a/src/m_player_main_wait.c_inc b/src/m_player_main_wait.c_inc index e69de29b..e1414358 100644 --- a/src/m_player_main_wait.c_inc +++ b/src/m_player_main_wait.c_inc @@ -0,0 +1,116 @@ +int Player_actor_request_main_wait_all(GAME* game, f32 morph_speed, f32 _04, int flags, int now_index){ + + if(Player_actor_check_request_main_able(game, mPlayer_INDEX_WAIT, now_index)){ + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + Player_actor_request_main_index(game, mPlayer_INDEX_WAIT, now_index); + + player->requested_main_index_data.wait.morph_speed = morph_speed; + player->requested_main_index_data.wait.flags = flags; + player->requested_main_index_data.wait._04 = _04; + + return TRUE; + } + else{ + return FALSE; + } +} + +void Player_actor_request_main_wait_from_submenu(ACTOR* actor, GAME* game){ + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, 31); +} + +void Player_actor_setup_main_Wait(ACTOR* actor, GAME* game){ + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int flags = player->requested_main_index_data.wait.flags; + f32 speed = player->requested_main_index_data.wait.morph_speed; + f32 absspeed; + int anim_idx; + int part_table_idx; + + if(flags & 4){ + player->main_data.wait.radio_exercise_command = 0; + } + else{ + player->main_data.wait.radio_exercise_command = 1; + player->radio_exercise_continue_cmd_idx = -1; + player->radio_exercise_cmd_timer = 0.0f; + } + + absspeed = ABS(speed); + + Player_actor_SetupItem_Base1(actor, 0, -absspeed, &anim_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_WAIT1, anim_idx, 1.0f, 1.0f, 0.5f, speed, part_table_idx); + + if (flags & 1) { + Player_actor_SetEffect_forTakeout_item(actor, game); + } + + Player_actor_setup_main_Base(actor,game); +} + +void Player_actor_Set_RadioExerciseCommand_Wait(ACTOR* actor, GAME* game){ + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_Set_RadioExerciseCommand(actor, game, player->main_data.wait.radio_exercise_command); + player->main_data.wait.radio_exercise_command = 0; +} + +void Player_actor_Movement_Wait(ACTOR* actor){ + Player_actor_Movement_Base_Braking_common(actor, 0.23925f); +} + +void Player_actor_CulcAnimation_Wait(ACTOR* actor){ + f32 base; + + Player_actor_CulcAnimation_Base2(actor, &base); +} + +void Player_actor_ObjCheck_Wait(ACTOR* actor, GAME* game){ + Player_actor_Excute_Corect_forStand(actor, game); +} + +void Player_actor_BGcheck_Wait(ACTOR* actor){ + Player_actor_BGcheck_common_type1(actor); +} + +void Player_actor_request_proc_index_fromWait(ACTOR* actor, GAME* game){ + + if(!actor->bg_collision_check.result.on_ground){ + Player_actor_request_main_fall_all(game, -5.0f, 1, 1); + } + + Player_actor_CheckAndRequest_main_axe_all(game, 4); + + if (Player_actor_CheckController_forNet(game) != 0) { + Player_actor_request_main_ready_net(game, 4); + } + + if (Player_actor_CheckController_forRod(game) != 0) { + Player_actor_request_main_ready_rod(game, 4); + } + + Player_actor_CheckAndRequest_main_scoop_all(game, 4); + Player_actor_CheckAndRequest_main_umbrella_all(game, 4); + Player_actor_CheckAndRequest_main_fan_all(game, 1, 1, 4); + Player_actor_CheckAndRequest_main_shake_tree_all(game); + + if ((Player_actor_GetController_move_percentX()) || (Player_actor_GetController_move_percentY())) { + Player_actor_request_main_walk_all(game, NULL, -5.0f, 4, 1); + } + Player_actor_CheckAndRequest_main_pickup_all(game); + Player_actor_CheckAndRequest_main_radio_exercise_all(game, 0); +} + +void Player_actor_main_Wait(ACTOR* actor, GAME* game){ + Player_actor_Set_RadioExerciseCommand_Wait(actor, game); + Player_actor_Movement_Wait(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_CulcAnimation_Wait(actor); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Wait(actor, game); + Player_actor_BGcheck_Wait(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromWait(actor, game); +} From f7d5f9238939a93b732e91d3d55a1ad8523265e7 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Wed, 28 Aug 2024 22:37:24 -0400 Subject: [PATCH 145/234] Implement & match m_player_common.c_inc --- config/assets.yml | 3 - include/ac_effectbg.h | 13 +- include/ac_htable.h | 9 +- include/ac_my_room.h | 1 + include/ac_npc.h | 2 +- include/c_keyframe.h | 22 +- include/m_clip.h | 6 +- include/m_collision_bg.h | 12 + include/m_common_data.h | 4 +- include/m_field_info.h | 11 +- include/m_name_table.h | 306 +- include/m_player.h | 320 +- include/m_player_lib.h | 8 + include/m_submenu.h | 6 +- include/types.h | 2 + src/ac_br_shop_move.c_inc | 3 +- src/ac_buggy_move.c_inc | 3 +- src/ac_kamakura_move.c_inc | 12 +- src/ac_npc_rcn_guide_schedule.c_inc | 6 +- src/ac_tent.c | 3 +- src/bg_item_common.c_inc | 4 +- src/c_keyframe.c | 28 +- src/m_banti.c | 945 ++- src/m_field_info.c | 5129 ++++++++-------- src/m_island.c | 2 +- src/m_museum.c | 2 +- src/m_name_table.c | 2 +- src/m_player.c | 20 +- src/m_player_common.c_inc | 8541 +++++++++++++++++++++++++++ src/m_submenu.c | 904 ++- 30 files changed, 12514 insertions(+), 3815 deletions(-) diff --git a/config/assets.yml b/config/assets.yml index 560a15d2..a60b3d3f 100644 --- a/config/assets.yml +++ b/config/assets.yml @@ -10286,9 +10286,6 @@ config/rel.yml: mFM_rail_pal_11: addrs: [0x80F8C428, 0x80F8C448] type: pal16 - mFM_rail_pal_12: - addrs: [0x80F8C448, 0x80F8C468] - type: pal16 # ac_koinobori # NPC draw data assets diff --git a/include/ac_effectbg.h b/include/ac_effectbg.h index 4fd4cbc6..a4f24917 100644 --- a/include/ac_effectbg.h +++ b/include/ac_effectbg.h @@ -8,6 +8,18 @@ extern "C" { #endif +enum { + EffectBG_EFFECT_SHAKE, + EffectBG_EFFECT_CUT_LEFT, + EffectBG_EFFECT_CUT_RIGHT, + EffectBG_EFFECT_SHAKE_SMALL, + EffectBG_EFFECT_SHAKE_LARGE, + + EffectBG_EFFECT_NUM +}; + +typedef void (*EffectBG_MAKE_EFFECTBG_PROC)(GAME*, s16, s16, xyz_t*); + extern ACTOR_PROFILE Effectbg_Profile; #ifdef __cplusplus @@ -15,4 +27,3 @@ extern ACTOR_PROFILE Effectbg_Profile; #endif #endif - diff --git a/include/ac_htable.h b/include/ac_htable.h index 20c07ace..1e48db36 100644 --- a/include/ac_htable.h +++ b/include/ac_htable.h @@ -8,6 +8,14 @@ extern "C" { #endif +typedef mActor_name_t (*aHTBL_SEARCH_PICK_UP_ITEM_LAYER2_PROC)(GAME*); + +typedef struct htable_clip_s { + aHTBL_SEARCH_PICK_UP_ITEM_LAYER2_PROC search_pick_up_item_layer2_proc; + xyz_t pickup_pos; + s16 pickup_counter; +} aHTBL_Clip_c; + extern ACTOR_PROFILE Htable_Profile; #ifdef __cplusplus @@ -15,4 +23,3 @@ extern ACTOR_PROFILE Htable_Profile; #endif #endif - diff --git a/include/ac_my_room.h b/include/ac_my_room.h index 95de307d..b72ac650 100644 --- a/include/ac_my_room.h +++ b/include/ac_my_room.h @@ -296,6 +296,7 @@ extern u8 aMR_GetAlphaEdge(u16 ftr_name); extern int aMR_DrawDolphinMode(u16 ftr_name); extern Gfx* aMR_IconNo2Gfx1(int icon_no); extern Gfx* aMR_IconNo2Gfx2(int icon_no); +extern int aMR_RadioBgmNow(void); #ifdef __cplusplus } diff --git a/include/ac_npc.h b/include/ac_npc.h index f8c00288..3a6d7361 100644 --- a/include/ac_npc.h +++ b/include/ac_npc.h @@ -402,7 +402,7 @@ typedef struct npc_condition_s { typedef struct npc_uzai_s { int step; - u8 tool; + u8 counter; u8 flag; u8 cross; } aNPC_uzai_c; diff --git a/include/c_keyframe.h b/include/c_keyframe.h index 5ea08181..59a49ca7 100644 --- a/include/c_keyframe.h +++ b/include/c_keyframe.h @@ -472,19 +472,19 @@ extern void cKF_SkeletonInfo_R_AnimationMove_base(xyz_t* base, s_xyz* sbase, xyz /** * Calculates and applies transformation to world coordinates based on animation data. * - * @param calcx X-coordinate for calculation base. - * @param calcy Y-coordinate for calculation base. - * @param calcz Z-coordinate for calculation base. - * @param base Base position result. - * @param calcp Position calculation parameters. - * @param val Angle value for rotation. - * @param trans Transformation to apply. + * @param calc_pos Calculated position result. + * @param base_pos Base world position. + * @param trans_x X-coordinate for translation. + * @param trans_y Y-coordinate for translation. + * @param trans_z Z-coordinate for translation. + * @param angle_y Angle value for rotation. + * @param scale Scaling factor. * @param keyframe Skeleton info structure containing animation data. - * @param animation_flag Flags determining which transformations to apply. + * @param trans_flag Flags determining which transformations to apply. */ -extern void cKF_SkeletonInfo_R_AnimationMove_CulcTransToWorld(f32 calcx, f32 calcy, f32 calcz, xyz_t* base, - xyz_t* calcp, s16 val, xyz_t* trans, - cKF_SkeletonInfo_R_c* keyframe, int animation_flag); +extern void cKF_SkeletonInfo_R_AnimationMove_CulcTransToWorld(xyz_t* calc_pos, const xyz_t* base_pos, f32 trans_x, + f32 trans_y, f32 trans_z, s16 angle_y, const xyz_t* scale, + cKF_SkeletonInfo_R_c* keyframe, int trans_flag); #ifdef __cplusplus } diff --git a/include/m_clip.h b/include/m_clip.h index c308b0b8..1da06acd 100644 --- a/include/m_clip.h +++ b/include/m_clip.h @@ -25,6 +25,8 @@ #include "ac_quest_manager_clip.h" #include "ac_shop_goods_h.h" #include "ac_shop_design.h" +#include "ac_effectbg.h" +#include "ac_htable.h" #ifdef __cplusplus extern "C" { @@ -38,7 +40,7 @@ typedef struct clip_s { /* 0x020 */ int arrange_ftr_num; /* 0x024 */ void* _024; /* 0x028 */ void* misin_clip; - /* 0x02C */ void* _02C; + /* 0x02C */ aHTBL_Clip_c* htbl_clip; /* 0x030 */ void* _030; /* 0x034 */ void* _034; /* 0x038 */ void* _038; @@ -72,7 +74,7 @@ typedef struct clip_s { /* 0x0A8 */ void* _0A8; /* 0x0AC */ aGYO_Clip_c* gyo_clip; /* 0x0B0 */ aSG_Clip_c* shop_goods_clip; - /* 0x0B4 */ void* _0B4; + /* 0x0B4 */ EffectBG_MAKE_EFFECTBG_PROC make_effect_bg_proc; /* 0x0B8 */ aShopUmbrella_Clip_c* shop_umbrella_clip; /* 0x0BC */ aAR_Clip_c* arrange_room_clip; /* 0x0C0 */ void* _0C0; diff --git a/include/m_collision_bg.h b/include/m_collision_bg.h index e7097712..025eb60e 100644 --- a/include/m_collision_bg.h +++ b/include/m_collision_bg.h @@ -134,6 +134,13 @@ enum { mCoBG_AREA_NUM }; +enum { + mCoBG_BLOCK_BGCHECK_MODE_NORMAL, + mCoBG_BLOCK_BGCHECK_MODE_INTRO_DEMO, + + mCoBG_BLOCK_BGCHECK_MODE_NUM +}; + /* sizeof(mCoBG_CollisionData_c) == 4*/ typedef struct collision_bg_data_s { /* 1------- -------- -------- -------- */ u32 shape : 1; /* collision shape */ @@ -331,6 +338,11 @@ extern void mCoBG_BgCheckControll_RemoveDirectedUnitColumn(xyz_t* reverse_pos, A s16 check_type, int ut_x, int ut_z); extern xyz_t mCoBG_UniqueWallCheck(ACTOR* actorx, f32 range, f32 y_ofs); extern xyz_t mCoBG_ScopeWallCheck(ACTOR* actorx, const xyz_t* pos, f32 x, f32 z, f32 range, f32 y_ofs); +extern int mCoBG_ScrollCheck(xyz_t start_pos, xyz_t end_pos, f32 radius); +extern int mCoBG_GetBlockBgCheckMode(void); +extern void mCoBG_GroundCheckOnly(xyz_t* reverse_pos, ACTOR* actor, f32 check_range, f32 offset_y, s16 check_type); +extern f32 mCoBG_Wpos2BgUtCenterHeight_AddColumn(xyz_t pos); +extern f32 mCoBG_UtNum2UtCenterY_Keep(int ut_x, int ut_z); extern void mCoBG_InitMoveBgData(); extern void mCoBG_InitBlockBgCheckMode(); diff --git a/include/m_common_data.h b/include/m_common_data.h index 721a54af..091e746e 100644 --- a/include/m_common_data.h +++ b/include/m_common_data.h @@ -245,7 +245,7 @@ typedef struct common_data_s { /* 0x0285BE */ s8 player_actor_exists; /* 0x0285BF */ s8 complete_payment_type; /* 0x0285C0 */ s8 player_decoy_flag; - /* 0x0285C1 */ u8 _285C1; + /* 0x0285C1 */ s8 axe_damage; /* 0x0285C2 */ u8 make_npc2_actor; /* 0x0285C4 */ s16 event_id; /* 0x0285C6 */ u8 event_title_flags; @@ -308,7 +308,7 @@ typedef struct common_data_s { /* 0x02DB46 */ mCD_persistent_data_c travel_persistent_data; /* used for checking if travelling back to town */ /* 0x02DBA2 */ s16 island_weather; /* 0x02DBA4 */ s16 island_weather_intensity; - /* 0x02DBA6 */ s16 _2DBA6; + /* 0x02DBA6 */ s16 sunburn_time; /* 0x02DBA8 */ u8 memcard_slot; /* 0X02DBAC */ int my_room_message_control_flags; /* 0x02DBB0 */ s16 can_look_goki_count; diff --git a/include/m_field_info.h b/include/m_field_info.h index 582677aa..6717e39a 100644 --- a/include/m_field_info.h +++ b/include/m_field_info.h @@ -25,11 +25,14 @@ extern "C" { #define mFI_UT_WORLDSIZE_HALF_X_F (mFI_UT_WORLDSIZE_X_F / 2.0f) #define mFI_UT_WORLDSIZE_HALF_Z_F (mFI_UT_WORLDSIZE_X_F / 2.0f) -#define mFI_BK_WORLDSIZE_X (mFI_UT_WORLDSIZE_X * UT_X_NUM) -#define mFI_BK_WORLDSIZE_Z (mFI_UT_WORLDSIZE_Z * UT_Z_NUM) +#define mFI_BK_WORLDSIZE_BASE (mFI_UNIT_BASE_SIZE * UT_BASE_NUM) +#define mFI_BK_WORLDSIZE_BASE_F ((f32)mFI_BK_WORLDSIZE_BASE) -#define mFI_BK_WORLDSIZE_X_F (mFI_UT_WORLDSIZE_X_F * UT_X_NUM) -#define mFI_BK_WORLDSIZE_Z_F (mFI_UT_WORLDSIZE_Z_F * UT_Z_NUM) +#define mFI_BK_WORLDSIZE_X mFI_BK_WORLDSIZE_BASE +#define mFI_BK_WORLDSIZE_Z mFI_BK_WORLDSIZE_BASE + +#define mFI_BK_WORLDSIZE_X_F mFI_BK_WORLDSIZE_BASE_F +#define mFI_BK_WORLDSIZE_Z_F mFI_BK_WORLDSIZE_BASE_F #define mFI_POS2UT(pos) ((int)((pos) / mFI_UNIT_BASE_SIZE_F)) diff --git a/include/m_name_table.h b/include/m_name_table.h index 4d34127c..aa8305bf 100644 --- a/include/m_name_table.h +++ b/include/m_name_table.h @@ -212,6 +212,9 @@ extern int mNT_check_unknown(mActor_name_t item_no); #define ITEM_IS_RSVCPORG(n) ((n) >= RSV_CPORIGINAL_FLD0_00 && (n) <= RSV_CPORIGINAL_FLD7_11) #define ITEM_IS_RSVGBAORG(n) ((n) >= RSV_GBAORIGINAL0 && (n) <= RSV_GBAORIGINAL7) +#define ITEM_IS_MYMANNIQUIN(n) ((n) >= FTR_CLOTH_MANNIQUIN_MY_ORIGINAL0 && (n) <= FTR_CLOTH_MYMANNIQUIN_END) +#define ITEM_IS_MYUMBRELLA(n) ((n) >= FTR_MYUMBRELLA_START && (n) <= FTR_MYUMBRELLA_END) + #define PAPER2TYPE(n) ((n) % PAPER_UNIQUE_NUM) #define PAPER2STACK(n) ((n) / PAPER_UNIQUE_NUM) @@ -281,12 +284,232 @@ extern int mNT_check_unknown(mActor_name_t item_no); ((item) == GOLD_TREE_BEES) \ ) +// @BUG - they check for money tree variants twice +#define IS_ITEM_COLLIDEABLE_TREE(item) \ + (((item) == TREE_S0) || \ + ((item) == TREE_APPLE_S0) || \ + ((item) == TREE_ORANGE_S0) || \ + ((item) == TREE_PEACH_S0) || \ + ((item) == TREE_PEAR_S0) || \ + ((item) == TREE_CHERRY_S0) || \ + ((item) == TREE_1000BELLS_S0) || \ + ((item) == TREE_10000BELLS_S0) || \ + ((item) == TREE_30000BELLS_S0) || \ + ((item) == TREE_1000BELLS_S0) || \ + ((item) == TREE_10000BELLS_S0) || \ + ((item) == TREE_30000BELLS_S0) || \ + ((item) == TREE_100BELLS_S0) || \ + ((item) == TREE_PALM_S0) || \ + ((item) == CEDAR_TREE_S0) || \ + ((item) == GOLD_TREE_S0) || \ + ((item) == TREE_S1) || \ + ((item) == TREE_APPLE_S1) || \ + ((item) == TREE_ORANGE_S1) || \ + ((item) == TREE_PEACH_S1) || \ + ((item) == TREE_PEAR_S1) || \ + ((item) == TREE_CHERRY_S1) || \ + ((item) == TREE_1000BELLS_S1) || \ + ((item) == TREE_10000BELLS_S1) || \ + ((item) == TREE_30000BELLS_S1) || \ + ((item) == TREE_1000BELLS_S1) || \ + ((item) == TREE_10000BELLS_S1) || \ + ((item) == TREE_30000BELLS_S1) || \ + ((item) == TREE_100BELLS_S1) || \ + ((item) == TREE_PALM_S1) || \ + ((item) == CEDAR_TREE_S1) || \ + ((item) == GOLD_TREE_S1) || \ + ((item) == TREE_S2) || \ + ((item) == TREE_APPLE_S2) || \ + ((item) == TREE_ORANGE_S2) || \ + ((item) == TREE_PEACH_S2) || \ + ((item) == TREE_PEAR_S2) || \ + ((item) == TREE_CHERRY_S2) || \ + ((item) == TREE_1000BELLS_S2) || \ + ((item) == TREE_10000BELLS_S2) || \ + ((item) == TREE_30000BELLS_S2) || \ + ((item) == TREE_1000BELLS_S2) || \ + ((item) == TREE_10000BELLS_S2) || \ + ((item) == TREE_30000BELLS_S2) || \ + ((item) == TREE_100BELLS_S2) || \ + ((item) == TREE_PALM_S2) || \ + ((item) == CEDAR_TREE_S2) || \ + ((item) == GOLD_TREE_S2) || \ + ((item) == TREE) || \ + ((item) == TREE_APPLE_FRUIT) || \ + ((item) == TREE_ORANGE_FRUIT) || \ + ((item) == TREE_PEACH_FRUIT) || \ + ((item) == TREE_PEAR_FRUIT) || \ + ((item) == TREE_CHERRY_FRUIT) || \ + ((item) == TREE_1000BELLS) || \ + ((item) == TREE_10000BELLS) || \ + ((item) == TREE_30000BELLS) || \ + ((item) == TREE_100BELLS) || \ + ((item) == TREE_PALM_FRUIT) || \ + ((item) == CEDAR_TREE) || \ + ((item) == GOLD_TREE) || \ + ((item) == GOLD_TREE_SHOVEL) || \ + ((item) == TREE_APPLE_NOFRUIT_0) || \ + ((item) == TREE_ORANGE_NOFRUIT_0) || \ + ((item) == TREE_PEACH_NOFRUIT_0) || \ + ((item) == TREE_PEAR_NOFRUIT_0) || \ + ((item) == TREE_CHERRY_NOFRUIT_0) || \ + ((item) == TREE_PALM_NOFRUIT_0) || \ + ((item) == TREE_APPLE_NOFRUIT_1) || \ + ((item) == TREE_ORANGE_NOFRUIT_1) || \ + ((item) == TREE_PEACH_NOFRUIT_1) || \ + ((item) == TREE_PEAR_NOFRUIT_1) || \ + ((item) == TREE_CHERRY_NOFRUIT_1) || \ + ((item) == TREE_PALM_NOFRUIT_1) || \ + ((item) == TREE_APPLE_NOFRUIT_2) || \ + ((item) == TREE_ORANGE_NOFRUIT_2) || \ + ((item) == TREE_PEACH_NOFRUIT_2) || \ + ((item) == TREE_PEAR_NOFRUIT_2) || \ + ((item) == TREE_CHERRY_NOFRUIT_2) || \ + ((item) == TREE_PALM_NOFRUIT_2) || \ + ((item) == TREE_BEES) || \ + ((item) == TREE_FTR) || \ + ((item) == TREE_LIGHTS) || \ + ((item) == TREE_PRESENT) || \ + ((item) == TREE_BELLS) || \ + ((item) == CEDAR_TREE_BELLS) || \ + ((item) == CEDAR_TREE_FTR) || \ + ((item) == CEDAR_TREE_BEES) || \ + ((item) == CEDAR_TREE_LIGHTS) || \ + ((item) == GOLD_TREE_BELLS) || \ + ((item) == GOLD_TREE_FTR) || \ + ((item) == GOLD_TREE_BEES) \ + ) + +#define IS_ITEM_XMAS_TREE(item) ((item) == TREE_LIGHTS || (item) == CEDAR_TREE_LIGHTS) +#define IS_ITEM_SMALL_TREE(item) ( \ + ((item) == TREE_S0) || \ + ((item) == TREE_APPLE_S0) || \ + ((item) == TREE_ORANGE_S0) || \ + ((item) == TREE_PEACH_S0) || \ + ((item) == TREE_PEAR_S0) || \ + ((item) == TREE_CHERRY_S0) || \ + ((item) == TREE_1000BELLS_S0) || \ + ((item) == TREE_10000BELLS_S0) || \ + ((item) == TREE_30000BELLS_S0) || \ + ((item) == TREE_1000BELLS_S0) || \ + ((item) == TREE_10000BELLS_S0) || \ + ((item) == TREE_30000BELLS_S0) || \ + ((item) == TREE_100BELLS_S0) || \ + ((item) == TREE_PALM_S0) || \ + ((item) == CEDAR_TREE_S0) || \ + ((item) == GOLD_TREE_S0) \ +) +#define IS_ITEM_MED_TREE(item) ( \ + ((item) == TREE_S1) || \ + ((item) == TREE_APPLE_S1) || \ + ((item) == TREE_ORANGE_S1) || \ + ((item) == TREE_PEACH_S1) || \ + ((item) == TREE_PEAR_S1) || \ + ((item) == TREE_CHERRY_S1) || \ + ((item) == TREE_1000BELLS_S1) || \ + ((item) == TREE_10000BELLS_S1) || \ + ((item) == TREE_30000BELLS_S1) || \ + ((item) == TREE_1000BELLS_S1) || \ + ((item) == TREE_10000BELLS_S1) || \ + ((item) == TREE_30000BELLS_S1) || \ + ((item) == TREE_100BELLS_S1) || \ + ((item) == TREE_PALM_S1) || \ + ((item) == CEDAR_TREE_S1) || \ + ((item) == GOLD_TREE_S1) \ +) +#define IS_ITEM_LARGE_TREE(item) ( \ + ((item) == TREE_S2) || \ + ((item) == TREE_APPLE_S2) || \ + ((item) == TREE_ORANGE_S2) || \ + ((item) == TREE_PEACH_S2) || \ + ((item) == TREE_PEAR_S2) || \ + ((item) == TREE_CHERRY_S2) || \ + ((item) == TREE_1000BELLS_S2) || \ + ((item) == TREE_10000BELLS_S2) || \ + ((item) == TREE_30000BELLS_S2) || \ + ((item) == TREE_1000BELLS_S2) || \ + ((item) == TREE_10000BELLS_S2) || \ + ((item) == TREE_30000BELLS_S2) || \ + ((item) == TREE_100BELLS_S2) || \ + ((item) == TREE_PALM_S2) || \ + ((item) == CEDAR_TREE_S2) || \ + ((item) == GOLD_TREE_S2) \ +) + +#define IS_ITEM_FULL_TREE(item) \ + (((item) == TREE) || \ + ((item) == TREE_APPLE_FRUIT) || \ + ((item) == TREE_ORANGE_FRUIT) || \ + ((item) == TREE_PEACH_FRUIT) || \ + ((item) == TREE_PEAR_FRUIT) || \ + ((item) == TREE_CHERRY_FRUIT) || \ + ((item) == TREE_1000BELLS) || \ + ((item) == TREE_10000BELLS) || \ + ((item) == TREE_30000BELLS) || \ + ((item) == TREE_100BELLS) || \ + ((item) == TREE_PALM_FRUIT) || \ + ((item) == CEDAR_TREE) || \ + ((item) == GOLD_TREE) || \ + ((item) == GOLD_TREE_SHOVEL) || \ + ((item) == TREE_APPLE_NOFRUIT_0) || \ + ((item) == TREE_ORANGE_NOFRUIT_0 ) || \ + ((item) == TREE_PEACH_NOFRUIT_0) || \ + ((item) == TREE_PEAR_NOFRUIT_0) || \ + ((item) == TREE_CHERRY_NOFRUIT_0) || \ + ((item) == TREE_PALM_NOFRUIT_0) || \ + ((item) == TREE_APPLE_NOFRUIT_1) || \ + ((item) == TREE_ORANGE_NOFRUIT_1 ) || \ + ((item) == TREE_PEACH_NOFRUIT_1) || \ + ((item) == TREE_PEAR_NOFRUIT_1) || \ + ((item) == TREE_CHERRY_NOFRUIT_1) || \ + ((item) == TREE_PALM_NOFRUIT_1) || \ + ((item) == TREE_APPLE_NOFRUIT_2) || \ + ((item) == TREE_ORANGE_NOFRUIT_2 ) || \ + ((item) == TREE_PEACH_NOFRUIT_2) || \ + ((item) == TREE_PEAR_NOFRUIT_2) || \ + ((item) == TREE_CHERRY_NOFRUIT_2) || \ + ((item) == TREE_PALM_NOFRUIT_2) || \ + ((item) == TREE_BEES) || \ + ((item) == TREE_FTR) || \ + ((item) == TREE_LIGHTS) || \ + ((item) == TREE_PRESENT) || \ + ((item) == TREE_BELLS) || \ + ((item) == CEDAR_TREE_BELLS) || \ + ((item) == CEDAR_TREE_FTR) || \ + ((item) == CEDAR_TREE_BEES) || \ + ((item) == CEDAR_TREE_LIGHTS) || \ + ((item) == GOLD_TREE_BELLS) || \ + ((item) == GOLD_TREE_FTR) || \ + ((item) == GOLD_TREE_BEES) \ + ) + +#define IS_ITEM_SHAKEABLE_TREE(item) (IS_ITEM_MED_TREE(item) || IS_ITEM_LARGE_TREE(item) || IS_ITEM_FULL_TREE(item)) + +#define IS_ITEM_BEE_TREE(item) ((item) == TREE_BEES || (item) == CEDAR_TREE_BEES || (item) == GOLD_TREE_BEES) + +#define IS_ITEM_STONE(item) ((item) >= ROCK_A && (item) <= ROCK_E) +#define IS_ITEM_STONE_TC(item) (((item) >= MONEY_ROCK_A && (item) <= MONEY_ROCK_E) || (item) == MONEY_FLOWER_SEED) /* TC is ten coin */ +#define IS_ITEM_ROCK(item) (((item) >= ROCK_A && (item) <= ROCK_E) || ((item) >= MONEY_ROCK_A && (item) <= MONEY_ROCK_E) || (item) == MONEY_FLOWER_SEED) + #define IS_ITEM_GRASS(item) ((item) >= GRASS_A && (item) <= GRASS_C) /* aka IS_ITEM_WEED */ #define IS_ITEM_HANIWA(item) ((item) >= HANIWA_START && (item) <= HANIWA_END) #define IS_ITEM_DIARY(item) ((item) >= ITM_DIARY_START && (item) <= (ITM_DIARY_END-1)) +#define IS_ITEM_AXE(item) ((item) == ITM_AXE || ((item) >= ITM_AXE_USE_1 && (item) <= ITM_AXE_USE_7)) +#define IS_ITEM_GOLDEN_TOOL(item) ((item) >= ITM_GOLDEN_NET && (item) <= ITM_GOLDEN_ROD) + +#define ITEM_IS_HOLE(item) ((item) >= HOLE_START && (item) <= HOLE_END) +#define ITEM_IS_BURIED_PITFALL_HOLE(item) ((item) >= BURIED_PITFALL_HOLE_START && (item) <= BURIED_PITFALL_HOLE_END) +#define ITEM_IS_BURIED_PITFALL_HOLE_RSV(item) ((item) >= BURIED_PITFALL_HOLE_RSV_START && (item) <= BURIED_PITFALL_HOLE_RSV_END) + +#define ITEM_IS_PLAYER_HOUSE(item) ((item) >= HOUSE0 && (item) < (HOUSE3 + 1)) +#define ITEM_IS_NPC_HOUSE(item) ((item) >= NPC_HOUSE_START && (item) < NPC_HOUSE_END) +#define ITEM_IS_ISLAND_NPC_HOUSE(item) ((item) >= COTTAGE_NPC && (item) < COTTAGE_NPC_END) + +#define ITEM_IS_SIGNBOARD(item) ((item) >= SIGNBOARD_START && (item) <= SIGNBOARD_END) + #define BG_CATEGORY 0 #define ENV_CATEGORY 8 @@ -334,33 +557,60 @@ extern int mNT_check_unknown(mActor_name_t item_no); #define HOLE23 (HOLE_START + 23) #define HOLE24 (HOLE_START + 24) #define HOLE_END HOLE24 -#define BURIED_PITFALL_START 0x002A -#define BURIED_PITFALL00 (BURIED_PITFALL_START + 0) -#define BURIED_PITFALL01 (BURIED_PITFALL_START + 1) -#define BURIED_PITFALL02 (BURIED_PITFALL_START + 2) -#define BURIED_PITFALL03 (BURIED_PITFALL_START + 3) -#define BURIED_PITFALL04 (BURIED_PITFALL_START + 4) -#define BURIED_PITFALL05 (BURIED_PITFALL_START + 5) -#define BURIED_PITFALL06 (BURIED_PITFALL_START + 6) -#define BURIED_PITFALL07 (BURIED_PITFALL_START + 7) -#define BURIED_PITFALL08 (BURIED_PITFALL_START + 8) -#define BURIED_PITFALL09 (BURIED_PITFALL_START + 9) -#define BURIED_PITFALL10 (BURIED_PITFALL_START + 10) -#define BURIED_PITFALL11 (BURIED_PITFALL_START + 11) -#define BURIED_PITFALL12 (BURIED_PITFALL_START + 12) -#define BURIED_PITFALL13 (BURIED_PITFALL_START + 13) -#define BURIED_PITFALL14 (BURIED_PITFALL_START + 14) -#define BURIED_PITFALL15 (BURIED_PITFALL_START + 15) -#define BURIED_PITFALL16 (BURIED_PITFALL_START + 16) -#define BURIED_PITFALL17 (BURIED_PITFALL_START + 17) -#define BURIED_PITFALL18 (BURIED_PITFALL_START + 18) -#define BURIED_PITFALL19 (BURIED_PITFALL_START + 19) -#define BURIED_PITFALL20 (BURIED_PITFALL_START + 20) -#define BURIED_PITFALL21 (BURIED_PITFALL_START + 21) -#define BURIED_PITFALL22 (BURIED_PITFALL_START + 22) -#define BURIED_PITFALL23 (BURIED_PITFALL_START + 23) -#define BURIED_PITFALL24 (BURIED_PITFALL_START + 24) -#define BURIED_PITFALL_END BURIED_PITFALL24 +#define BURIED_PITFALL_HOLE_START 0x002A +#define BURIED_PITFALL_HOLE00 (BURIED_PITFALL_HOLE_START + 0) +#define BURIED_PITFALL_HOLE01 (BURIED_PITFALL_HOLE_START + 1) +#define BURIED_PITFALL_HOLE02 (BURIED_PITFALL_HOLE_START + 2) +#define BURIED_PITFALL_HOLE03 (BURIED_PITFALL_HOLE_START + 3) +#define BURIED_PITFALL_HOLE04 (BURIED_PITFALL_HOLE_START + 4) +#define BURIED_PITFALL_HOLE05 (BURIED_PITFALL_HOLE_START + 5) +#define BURIED_PITFALL_HOLE06 (BURIED_PITFALL_HOLE_START + 6) +#define BURIED_PITFALL_HOLE07 (BURIED_PITFALL_HOLE_START + 7) +#define BURIED_PITFALL_HOLE08 (BURIED_PITFALL_HOLE_START + 8) +#define BURIED_PITFALL_HOLE09 (BURIED_PITFALL_HOLE_START + 9) +#define BURIED_PITFALL_HOLE10 (BURIED_PITFALL_HOLE_START + 10) +#define BURIED_PITFALL_HOLE11 (BURIED_PITFALL_HOLE_START + 11) +#define BURIED_PITFALL_HOLE12 (BURIED_PITFALL_HOLE_START + 12) +#define BURIED_PITFALL_HOLE13 (BURIED_PITFALL_HOLE_START + 13) +#define BURIED_PITFALL_HOLE14 (BURIED_PITFALL_HOLE_START + 14) +#define BURIED_PITFALL_HOLE15 (BURIED_PITFALL_HOLE_START + 15) +#define BURIED_PITFALL_HOLE16 (BURIED_PITFALL_HOLE_START + 16) +#define BURIED_PITFALL_HOLE17 (BURIED_PITFALL_HOLE_START + 17) +#define BURIED_PITFALL_HOLE18 (BURIED_PITFALL_HOLE_START + 18) +#define BURIED_PITFALL_HOLE19 (BURIED_PITFALL_HOLE_START + 19) +#define BURIED_PITFALL_HOLE20 (BURIED_PITFALL_HOLE_START + 20) +#define BURIED_PITFALL_HOLE21 (BURIED_PITFALL_HOLE_START + 21) +#define BURIED_PITFALL_HOLE22 (BURIED_PITFALL_HOLE_START + 22) +#define BURIED_PITFALL_HOLE23 (BURIED_PITFALL_HOLE_START + 23) +#define BURIED_PITFALL_HOLE24 (BURIED_PITFALL_HOLE_START + 24) +#define BURIED_PITFALL_HOLE_END BURIED_PITFALL_HOLE24 +#define BURIED_PITFALL_HOLE_RSV_START 0x0043 +#define BURIED_PITFALL_HOLE_RSV00 (BURIED_PITFALL_HOLE_RSV_START + 0) +#define BURIED_PITFALL_HOLE_RSV01 (BURIED_PITFALL_HOLE_RSV_START + 1) +#define BURIED_PITFALL_HOLE_RSV02 (BURIED_PITFALL_HOLE_RSV_START + 2) +#define BURIED_PITFALL_HOLE_RSV03 (BURIED_PITFALL_HOLE_RSV_START + 3) +#define BURIED_PITFALL_HOLE_RSV04 (BURIED_PITFALL_HOLE_RSV_START + 4) +#define BURIED_PITFALL_HOLE_RSV05 (BURIED_PITFALL_HOLE_RSV_START + 5) +#define BURIED_PITFALL_HOLE_RSV06 (BURIED_PITFALL_HOLE_RSV_START + 6) +#define BURIED_PITFALL_HOLE_RSV07 (BURIED_PITFALL_HOLE_RSV_START + 7) +#define BURIED_PITFALL_HOLE_RSV08 (BURIED_PITFALL_HOLE_RSV_START + 8) +#define BURIED_PITFALL_HOLE_RSV09 (BURIED_PITFALL_HOLE_RSV_START + 9) +#define BURIED_PITFALL_HOLE_RSV10 (BURIED_PITFALL_HOLE_RSV_START + 10) +#define BURIED_PITFALL_HOLE_RSV11 (BURIED_PITFALL_HOLE_RSV_START + 11) +#define BURIED_PITFALL_HOLE_RSV12 (BURIED_PITFALL_HOLE_RSV_START + 12) +#define BURIED_PITFALL_HOLE_RSV13 (BURIED_PITFALL_HOLE_RSV_START + 13) +#define BURIED_PITFALL_HOLE_RSV14 (BURIED_PITFALL_HOLE_RSV_START + 14) +#define BURIED_PITFALL_HOLE_RSV15 (BURIED_PITFALL_HOLE_RSV_START + 15) +#define BURIED_PITFALL_HOLE_RSV16 (BURIED_PITFALL_HOLE_RSV_START + 16) +#define BURIED_PITFALL_HOLE_RSV17 (BURIED_PITFALL_HOLE_RSV_START + 17) +#define BURIED_PITFALL_HOLE_RSV18 (BURIED_PITFALL_HOLE_RSV_START + 18) +#define BURIED_PITFALL_HOLE_RSV19 (BURIED_PITFALL_HOLE_RSV_START + 19) +#define BURIED_PITFALL_HOLE_RSV20 (BURIED_PITFALL_HOLE_RSV_START + 20) +#define BURIED_PITFALL_HOLE_RSV21 (BURIED_PITFALL_HOLE_RSV_START + 21) +#define BURIED_PITFALL_HOLE_RSV22 (BURIED_PITFALL_HOLE_RSV_START + 22) +#define BURIED_PITFALL_HOLE_RSV23 (BURIED_PITFALL_HOLE_RSV_START + 23) +#define BURIED_PITFALL_HOLE_RSV24 (BURIED_PITFALL_HOLE_RSV_START + 24) +#define BURIED_PITFALL_HOLE_RSV_END BURIED_PITFALL_HOLE_RSV24 #define SHINE_SPOT 0x005C #define HOLE_SHINE 0x005D #define TREE_BEES 0x005E @@ -569,6 +819,7 @@ extern int mNT_check_unknown(mActor_name_t item_no); #define SIGNBOARD5_PLR3 (SIGNBOARD4_PLR3 + 1) #define SIGNBOARD6_PLR3 (SIGNBOARD5_PLR3 + 1) #define SIGNBOARD7_PLR3 (SIGNBOARD6_PLR3 + 1) +#define SIGNBOARD_END (SIGNBOARD7_PLR3) #define FTR0_START 0x1000 #define FTR_CLASSIC_WARDROBE 0x1004 @@ -2269,6 +2520,7 @@ extern int mNT_check_unknown(mActor_name_t item_no); #define BOAT (STRUCTURE_START + 79) #define COTTAGE_MY (STRUCTURE_START + 80) #define COTTAGE_NPC (STRUCTURE_START + 81) +#define COTTAGE_NPC_END (COTTAGE_NPC + 1) #define PORT_SIGN (STRUCTURE_START + 82) #define STRUCTURE_END (STRUCTURE_START + 83) diff --git a/include/m_player.h b/include/m_player.h index 7bfcebb7..b6ee9568 100644 --- a/include/m_player.h +++ b/include/m_player.h @@ -17,6 +17,14 @@ extern "C" { #define mPlayer_DEBT3 49800 /* Basement */ #define mPlayer_DEBT4 798000 /* Upper floor */ +/* These are in frames */ +#define mPlayer_SUNBURN_TIME_VILLAGE (15 * mTM_SECONDS_IN_MINUTE * FRAMES_PER_SECOND) +#define mPlayer_SUNBURN_TIME_ISLAND (5 * mTM_SECONDS_IN_MINUTE * FRAMES_PER_SECOND) + +#define mPlayer_SUNBURN_MAX_RANK 8 + +#define mPlayer_RADIO_EXCERCISE_COMMAND_RING_BUFFER_SIZE 8 + typedef struct player_actor_s PLAYER_ACTOR; #define mPlayer_FORCE_POSITION_ANGLE_NONE 0 @@ -31,6 +39,8 @@ typedef struct player_actor_s PLAYER_ACTOR; #define mPlayer_WALK_FLAG_SET_POS (1 << 1) #define mPlayer_WALK_FLAG_RESET_MORPH (1 << 2) +#define mPlayer_NET_CATCH_TABLE_COUNT 8 + enum { mPlayer_JOINT_ROOT, mPlayer_JOINT_BASE, @@ -66,7 +76,7 @@ enum { mPlayer_ADDRESSABLE_TRUE, mPlayer_ADDRESSABLE_FALSE_MOVEMENT, mPlayer_ADDRESSABLE_FALSE_TALKING, - mPlayer_ADDRESSABLE_FALSE_USING_TOOL, + mPlayer_ADDRESSABLE_FALSE_READY_NET, mPlayer_ADDRESSABLE_NUM }; @@ -215,6 +225,61 @@ enum { #define mPlayer_MAIN_INDEX_VALID(idx) ((idx) >= 0 && (idx) < mPlayer_INDEX_NUM) +enum { + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_1, + mPlayer_REQUEST_PRIORITY_2, + mPlayer_REQUEST_PRIORITY_3, + mPlayer_REQUEST_PRIORITY_4, + mPlayer_REQUEST_PRIORITY_5, + mPlayer_REQUEST_PRIORITY_6, + mPlayer_REQUEST_PRIORITY_7, + mPlayer_REQUEST_PRIORITY_8, + mPlayer_REQUEST_PRIORITY_9, + mPlayer_REQUEST_PRIORITY_10, + mPlayer_REQUEST_PRIORITY_11, + mPlayer_REQUEST_PRIORITY_12, + mPlayer_REQUEST_PRIORITY_13, + mPlayer_REQUEST_PRIORITY_14, + mPlayer_REQUEST_PRIORITY_15, + mPlayer_REQUEST_PRIORITY_16, + mPlayer_REQUEST_PRIORITY_17, + mPlayer_REQUEST_PRIORITY_18, + mPlayer_REQUEST_PRIORITY_19, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_21, + mPlayer_REQUEST_PRIORITY_22, + mPlayer_REQUEST_PRIORITY_23, + mPlayer_REQUEST_PRIORITY_24, + mPlayer_REQUEST_PRIORITY_25, + mPlayer_REQUEST_PRIORITY_26, + mPlayer_REQUEST_PRIORITY_27, + mPlayer_REQUEST_PRIORITY_28, + mPlayer_REQUEST_PRIORITY_29, + mPlayer_REQUEST_PRIORITY_30, + mPlayer_REQUEST_PRIORITY_31, + mPlayer_REQUEST_PRIORITY_32, + mPlayer_REQUEST_PRIORITY_33, + mPlayer_REQUEST_PRIORITY_34, + mPlayer_REQUEST_PRIORITY_35, + mPlayer_REQUEST_PRIORITY_36, + mPlayer_REQUEST_PRIORITY_37, + mPlayer_REQUEST_PRIORITY_38, + mPlayer_REQUEST_PRIORITY_39, + mPlayer_REQUEST_PRIORITY_40, + mPlayer_REQUEST_PRIORITY_41, + mPlayer_REQUEST_PRIORITY_42, + mPlayer_REQUEST_PRIORITY_43, + mPlayer_REQUEST_PRIORITY_44, + mPlayer_REQUEST_PRIORITY_45, + + mPlayer_REQUEST_PRIORITY_NUM +}; + +#define mPlayer_REQUEST_PRIORITY_NONE -1 + +#define mPlayer_REQUEST_PRIORITY_VALID(prio) ((prio) >= 0 && (prio) < mPlayer_REQUEST_PRIORITY_NUM) + enum { mPlayer_ANIM_WAIT1, mPlayer_ANIM_WALK1, @@ -377,6 +442,35 @@ enum { mPlayer_ANIM_NUM }; +enum { + mPlayer_ITEM_MAIN_NONE, + mPlayer_ITEM_MAIN_AXE_NORMAL, + mPlayer_ITEM_MAIN_NET_NORMAL, + mPlayer_ITEM_MAIN_NET_SWING, + mPlayer_ITEM_MAIN_NET_STOP, + mPlayer_ITEM_MAIN_TUMBLE, + mPlayer_ITEM_MAIN_TUBMLE_GETUP, + mPlayer_ITEM_MAIN_NET_PULL, + mPlayer_ITEM_MAIN_NET_PUTAWAY, + mPlayer_ITEM_MAIN_NET_COMPLETE_COLLECTION, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_ROD_NORMAL, + mPlayer_ITEM_MAIN_ROD_READY, + mPlayer_ITEM_MAIN_ROD_CAST, + mPlayer_ITEM_MAIN_ROD_AIR, + mPlayer_ITEM_MAIN_ROD_RELAX, + mPlayer_ITEM_MAIN_ROD_COLLECT, + mPlayer_ITEM_MAIN_ROD_VIB, + mPlayer_ITEM_MAIN_ROD_FLY, + mPlayer_ITEM_MAIN_ROD_PUTAWAY, + mPlayer_ITEM_MAIN_SCOOP_NORMAL, + mPlayer_ITEM_MAIN_BALLOON_NORMAL, + mPlayer_ITEM_MAIN_WINDMILL_NORMAL, + mPlayer_ITEM_MAIN_FAN_NORMAL, + + mPlayer_ITEM_MAIN_NUM, +}; + enum { mPlayer_ITEM_KIND_AXE, mPlayer_ITEM_KIND_AXE_USE_1, @@ -469,6 +563,8 @@ enum { mPlayer_ITEM_KIND_NUM /* Are there more? */ }; +#define mPlayer_ITEM_KIND_NONE -1 + #define mPlayer_ITEM_KIND_CHECK(kind, min, max) ((kind) >= (min) && (kind) < ((max) + 1)) #define mPlayer_ITEM_IS_AXE(kind) mPlayer_ITEM_KIND_CHECK(kind, mPlayer_ITEM_KIND_AXE, mPlayer_ITEM_KIND_GOLD_AXE) #define mPlayer_ITEM_IS_NET(kind) mPlayer_ITEM_KIND_CHECK(kind, mPlayer_ITEM_KIND_NET, mPlayer_ITEM_KIND_GOLD_NET) @@ -483,6 +579,9 @@ enum { mPlayer_ITEM_KIND_CHECK(kind, mPlayer_ITEM_KIND_YELLOW_PINWHEEL, mPlayer_ITEM_KIND_FANCY_PINWHEEL) #define mPlayer_ITEM_IS_FAN(kind) \ mPlayer_ITEM_KIND_CHECK(kind, mPlayer_ITEM_KIND_BLUEBELL_FAN, mPlayer_ITEM_KIND_LEAF_FAN) +#define mPlayer_ITEM_IS_NOT_TOOL(kind) \ + (mPlayer_ITEM_IS_UMBRELLA(kind) || mPlayer_ITEM_IS_BALLOON(kind) || mPlayer_ITEM_IS_WINDMILL(kind) || \ + mPlayer_ITEM_IS_FAN(kind)) #define mPlayer_ITEM_KIND_VALID(kind) ((kind) >= 0 && kind < mPlayer_ITEM_KIND_NUM) @@ -592,6 +691,59 @@ enum { mPlayer_DRAW_TYPE_NUM }; +enum { + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_WORLD_POS, + mPlayer_SHADOW_TYPE_ANIME_POS, + mPlayer_SHADOW_TYPE_NONE, + + mPlayer_SHADOW_TYPE_NUM +}; + +enum { + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_ATTACK, + mPlayer_STATUS_FOR_BEE_ENTER_BUILDING, + + mPlayer_STATUS_FOR_BEE_NUM +}; + +enum { + mPlayer_NET_CATCH_TYPE_INSECT, + mPlayer_NET_CATCH_TYPE_UNK1, + + mPlayer_NET_CATCH_TYPE_NUM +}; + +enum { + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_RESTRICTED, + mPlayer_ABLE_ITEM_NONE, + + mPlayer_ABLE_ITEM_NUM +}; + +enum { + mPlayer_AXE_HIT_NONE, + mPlayer_AXE_HIT_REFLECT, + mPlayer_AXE_HIT_TREE, + + mPlayer_AXE_HIT_NUM +}; + +enum { + mPlayer_AXE_BREAK_FROM_SWING, + mPlayer_AXE_BREAK_FROM_REFLECT, + + mPlayer_AXE_BREAK_FROM_NUM +}; + +#define mPlayer_SETUP_TEXTURE_ANIMATION_NONE (0 << 0) +/* Where is (1 << 0)? */ +#define mPlayer_SETUP_TEXTURE_ANIMATION_EYE (1 << 1) +#define mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH (1 << 2) + typedef struct player_request_return_demo_s { int prev_main_index; f32 time; @@ -745,6 +897,10 @@ typedef struct player_request_stung_mosquito_s { u32 label; } mPlayer_request_stung_mosquito_c; +typedef struct player_request_notice_mosquito_s { + u32 label; +} mPlayer_request_notice_mosquito_c; + typedef struct player_request_switch_on_lighthouse_s { s16 angle_y; xyz_t pos; @@ -795,7 +951,7 @@ typedef struct player_request_wade_s { typedef struct player_request_wade_snowball_s { int dir; - xyz_t pos; + xyz_t snowball_dist; u32 label; } mPlayer_request_wade_snowball_c; @@ -927,7 +1083,7 @@ typedef struct player_request_reflect_scoop_s { typedef struct player_request_putin_scoop_s { xyz_t dig_pos; mActor_name_t item; - int _10; + int get_gold_scoop_flag; } mPlayer_request_putin_scoop_c; typedef struct player_request_putaway_scoop_s { @@ -1039,7 +1195,7 @@ typedef struct player_request_radio_exercise_s { typedef struct player_request_demo_geton_boat_wade_s { int dir; - f32 speed; // TODO: check this + f32 border_ofs; } mPlayer_request_demo_geton_boat_wade_c; typedef struct player_request_demo_getoff_boat_s { @@ -1116,6 +1272,7 @@ typedef union { mPlayer_request_shock_c shock; mPlayer_request_push_snowball_c push_snowball; mPlayer_request_stung_mosquito_c stung_mosquito; + mPlayer_request_notice_mosquito_c notice_mosquito; mPlayer_request_switch_on_lighthouse_c switch_on_lighthouse; mPlayer_request_demo_geton_boat_c demo_geton_boat; mPlayer_request_demo_getoff_boat_standup_c demo_getoff_boat_standup; @@ -1219,6 +1376,7 @@ typedef union { mPlayer_request_shock_c shock; mPlayer_request_push_snowball_c push_snowball; mPlayer_request_stung_mosquito_c stung_mosquito; + mPlayer_request_notice_mosquito_c notice_mosquito; mPlayer_request_switch_on_lighthouse_c switch_on_lighthouse; mPlayer_request_demo_geton_boat_c demo_geton_boat; mPlayer_request_demo_getoff_boat_standup_c demo_getoff_boat_standup; @@ -1305,6 +1463,10 @@ typedef struct player_main_wait_s { int radio_exercise_command; } mPlayer_main_wait_c; +typedef struct player_main_door_s { + u32 label; +} mPlayer_main_door_c; + typedef struct player_main_wade_s { int dir; xyz_t start_pos; @@ -1332,6 +1494,49 @@ typedef struct player_main_pickup_jump_s { int exchange_flag; } mPlayer_main_pickup_jump_c; +typedef struct player_main_swing_axe_s { + /* 0x00 */ xyz_t target_pos; + /* 0x0C */ mActor_name_t item; + /* 0x0E */ u16 axe_damage_no; + /* 0x10 */ int tree_ut_x; + /* 0x14 */ int tree_ut_z; + /* 0x18 */ int bee_flag; + /* 0x1C */ s16 bee_angle_y; + /* 0x20 */ int bee_counter; +} mPlayer_main_swing_axe_c; + +typedef struct player_main_reflect_axe_s { + xyz_t target_pos; + mActor_name_t item; + u16 axe_damage_no; + ACTOR* reflect_actor_p; +} mPlayer_main_reflect_axe_c; + +typedef struct player_main_broken_axe_s { + union { + mPlayer_main_swing_axe_c swing_axe; + mPlayer_main_reflect_axe_c reflect_axe; + } axe; + int break_type; /* mPlayer_AXE_BREAK_FROM_* */ + f32 _28; + int _2C; +} mPlayer_main_broken_axe_c; + +typedef struct player_main_dig_scoop_s { + xyz_t target_pos; + mActor_name_t item; +} mPlayer_main_dig_scoop_c; + +typedef struct player_main_fill_scoop_s { + xyz_t target_pos; +} mPlayer_main_fill_scoop_c; + +typedef struct player_main_reflect_scoop_s { + xyz_t target_pos; + mActor_name_t item; + ACTOR* reflect_actor_p; +} mPlayer_main_reflect_scoop_c; + typedef struct player_main_get_scoop_s { xyz_t target_pos; mActor_name_t item; @@ -1349,6 +1554,12 @@ typedef struct player_main_putaway_scoop_s { int submenu_flag; } mPlayer_main_putaway_scoop_c; +typedef struct player_main_putin_scoop_s { + xyz_t target_pos; + mActor_name_t item; + int get_gold_scoop_flag; // TODO: check this +} mPlayer_main_putin_scoop_c; + typedef struct player_main_wash_car_s { int anime_idx; int change_anime_idx; @@ -1360,6 +1571,51 @@ typedef struct player_main_wash_car_s { int effect_flag; } mPlayer_main_wash_car_c; +typedef struct player_main_swing_net_s { + f32 swing_timer; +} mPlayer_main_swing_net_c; + +typedef struct player_main_demo_wade_s { + int dir; + xyz_t start_pos; + xyz_t end_pos; + f32 timer; +} mPlayer_main_demo_wade_c; + +typedef struct player_main_shake_tree_s { + xyz_t target_pos; + mActor_name_t item; + int tree_ut_x; + int tree_ut_z; + int bee_flag; + s16 bee_angle_y; + int bee_spawn_timer; +} mPlayer_main_shake_tree_c; + +typedef struct player_main_stung_bee_s { + f32 timer; +} mPlayer_main_stung_bee_c; + +typedef struct player_main_push_snowball_s { + u32 label; +} mPlayer_main_push_snowball_c; + +typedef struct player_main_wade_snowball_s { + int dir; + xyz_t start_pos; + xyz_t end_pos; + f32 timer; + xyz_t snowball_dist; + u32 snowball_label; +} mPlayer_main_wade_snowball_c; + +typedef struct player_main_demo_geton_boat_wade_s { + int dir; + xyz_t start_pos; + xyz_t end_pos; + f32 timer; +} mPlayer_main_demo_geton_boat_wade_c; + typedef struct player_main_demo_geton_boat_sitdown_s { s16 angle_z; } mPlayer_main_demo_geton_boat_sitdown_c; @@ -1384,12 +1640,27 @@ typedef union { mPlayer_main_return_outdoor_c return_outdoor; mPlayer_main_return_outdoor2_c return_outdoor2; mPlayer_main_wait_c wait; + mPlayer_main_door_c door; mPlayer_main_wade_c wade; mPlayer_main_pickup_c pickup; mPlayer_main_pickup_jump_c pickup_jump; + mPlayer_main_swing_axe_c swing_axe; + mPlayer_main_reflect_axe_c reflect_axe; + mPlayer_main_broken_axe_c broken_axe; + mPlayer_main_swing_net_c swing_net; + mPlayer_main_dig_scoop_c dig_scoop; + mPlayer_main_fill_scoop_c fill_scoop; + mPlayer_main_reflect_scoop_c reflect_scoop; mPlayer_main_get_scoop_c get_scoop; mPlayer_main_putaway_scoop_c putaway_scoop; + mPlayer_main_putin_scoop_c putin_scoop; + mPlayer_main_demo_wade_c demo_wade; mPlayer_main_wash_car_c wash_car; + mPlayer_main_shake_tree_c shake_tree; + mPlayer_main_stung_bee_c stung_bee; + mPlayer_main_push_snowball_c push_snowball; + mPlayer_main_wade_snowball_c wade_snowball; + mPlayer_main_demo_geton_boat_wade_c demo_geton_boat_wade; mPlayer_main_demo_geton_boat_sitdown_c demo_geton_boat_sitdown; mPlayer_main_demo_getoff_boat_standup_c demo_getoff_boat_standup; mPlayer_main_uki_c uki; @@ -1412,6 +1683,10 @@ typedef struct controller_data_s { mActor_name_t equiped_item; } mPlayer_Controller_Data_c; +typedef struct player_eye_pattern_s { + s16 pattern; + s16 timer; +} mPlayer_eye_pattern_c; /* sizeof(struct player_actor_s) == 0x13A8 */ struct player_actor_s { @@ -1425,15 +1700,14 @@ struct player_actor_s { /* 0x0A88 */ s_xyz item_joint_data[8]; /* 0x0AB8 */ s_xyz item_morph_data[8]; /* 0x0AE8 */ Mtx item_work_mtx[2][4]; /* swapped between frames */ - /* 0x0CE8 */ s16 eye_pattern_normal; - /* 0x0CEA */ s16 eye_pattern_normal_timer; + /* 0x0CE8 */ mPlayer_eye_pattern_c eye_pattern_normal; /* 0x0CEC */ int blink_count; /* 0x0CF0 */ int eye_tex_idx; /* 0x0CF4 */ int mouth_tex_idx; /* 0x0CF8 */ int now_main_index; /* 0x0CFC */ int prev_main_index; /* 0x0D00 */ int changed_main_index; - /* 0x0D04 */ int item_main_index; + /* 0x0D04 */ int now_item_main_index; /* 0x0D08 */ int requested_main_index; /* 0x0D0C */ int requested_main_index_priority; /* 0x0D10 */ int requested_main_index_changed; @@ -1443,8 +1717,12 @@ struct player_actor_s { /* 0x0DA8 */ u8 _0DA8[0x0DB4 - 0x0DA8]; /* unused */ /* 0x0DB4 */ int animation0_idx; /* 0x0DB8 */ int animation1_idx; - /* 0x0DBC */ int _0DBC; - /* 0x0DC0 */ int _0DC0[9]; + /* 0x0DBC */ int part_table_idx; + /* 0x0DC0 */ int _0DC0; + /* 0x0DC4 */ int item_shape_addr[2]; + /* 0x0DCC */ int item_anim_addr[2]; + /* 0x0DD4 */ int item_shape_segaddr[2]; + /* 0x0DDC */ int item_anim_segaddr[2]; /* 0x0DE4 */ int item_shape_type[2]; /* 0x0DEC */ int item_animation_idx[2]; /* 0x0DF4 */ int item_bank_idx; @@ -1466,10 +1744,10 @@ struct player_actor_s { /* 0x0E70 */ u32 item_net_catch_label; /* 0x0E74 */ s8 item_net_catch_type; /* 0x0E75 */ s8 item_net_has_catch; - /* 0x0E78 */ u32 item_net_catch_label_request_table[8]; - /* 0x0E98 */ s8 item_net_catch_type_request_table[8]; - /* 0x0EA0 */ xyz_t item_net_catch_pos_request_table[8]; - /* 0x0F00 */ f32 item_net_catch_radius_request_table[8]; + /* 0x0E78 */ u32 item_net_catch_label_request_table[mPlayer_NET_CATCH_TABLE_COUNT]; + /* 0x0E98 */ s8 item_net_catch_type_request_table[mPlayer_NET_CATCH_TABLE_COUNT]; + /* 0x0EA0 */ xyz_t item_net_catch_pos_request_table[mPlayer_NET_CATCH_TABLE_COUNT]; + /* 0x0F00 */ f32 item_net_catch_radius_request_table[mPlayer_NET_CATCH_TABLE_COUNT]; /* 0x0F20 */ int item_net_catch_request_use_count; /* 0x0F24 */ u32 item_net_catch_label_request_force; /* 0x0F28 */ s8 item_net_catch_type_request_force; @@ -1477,7 +1755,7 @@ struct player_actor_s { /* 0x0F30 */ ACTOR* fishing_rod_actor_p; /* 0x0F34 */ xyz_t item_rod_top_pos; /* 0x0F40 */ xyz_t item_rod_virtual_top_pos; - /* 0x0F4C */ int update_item_rod_top_pos; + /* 0x0F4C */ int item_rod_top_pos_set; /* 0x0F50 */ s16 item_rod_angle_z; /* 0x0F54 */ ClObjTris_c item_axe_tris; /* 0x0F68 */ ClObjTrisElem_c item_axe_tris_elem_tbl[1]; @@ -1534,18 +1812,18 @@ struct player_actor_s { /* 0x11F9 */ s8 bgm_volume_mode; /* 0x11FC */ int crash_snowball_for_wade; /* 0x1200 */ xyz_t snowball_dist; - /* 0x120C */ int wade_request_flag; + /* 0x120C */ int request_wade_dir; /* 0x1210 */ u16 cancel_wade_timer; - /* 0x1214 */ int cancel_wade_flag; - /* 0x1218 */ f32 geton_boat_wade; - /* 0x121C */ u16 frame_timer; + /* 0x1214 */ int excute_cancel_wade; + /* 0x1218 */ f32 geton_boat_wade_border_start; + /* 0x121C */ u16 player_frame_counter; /* 0x121E */ s8 bee_chase_bgm_flag; /* 0x121F */ s8 status_for_bee; - /* 0x1220 */ void* angle_force_speak_label; + /* 0x1220 */ u32 able_force_speak_label; /* 0x1224 */ int player_sunburn_rankup; /* 0x1228 */ int player_sunburn_rankdown; - /* 0x122C */ s8 radio_exercise_command_ring_buffer[8]; - /* 0x1234 */ s8 radio_exercise_ring_buffer_cmd_num; + /* 0x122C */ s8 radio_exercise_command_ring_buffer[mPlayer_RADIO_EXCERCISE_COMMAND_RING_BUFFER_SIZE]; + /* 0x1234 */ s8 radio_exercise_ring_buffer_cmd_timer; /* 0x1238 */ int radio_exercise_command_ring_buffer_index; /* 0x123C */ int radio_exercise_continue_cmd_idx; /* 0x1240 */ f32 radio_exercise_cmd_timer; diff --git a/include/m_player_lib.h b/include/m_player_lib.h index 1dd97404..0e32ee73 100644 --- a/include/m_player_lib.h +++ b/include/m_player_lib.h @@ -106,6 +106,10 @@ extern int mPlib_request_main_demo_getoff_train_type1(GAME* game); extern int mPlib_check_player_actor_main_index_OutDoorMove2(GAME* game); extern int mPlib_Check_SetOrderSubmenu(void); extern void mPlib_Clear_change_data_from_submenu(void); +extern int mPlib_strength_request_main_wade_priority(GAME* game); +extern int mPlib_strength_request_main_demo_wade_priority(GAME* game); +extern int mPlib_strength_request_main_demo_geton_boat_wade_priority(GAME* game); +extern int mPlib_strength_request_main_wade_snowball_priority(GAME* game); extern mPlayer_change_data_from_submenu_c* mPlib_Get_change_data_from_submenu_p(); @@ -120,6 +124,10 @@ extern void mPlib_request_main_give_type1(GAME* game, mActor_name_t item, int mo #define GET_PLAYER_ACTOR_NOW() get_player_actor_withoutCheck((GAME_PLAY*)gamePT) #define GET_PLAYER_ACTOR_GAME(game) get_player_actor_withoutCheck((GAME_PLAY*)(game)) +#define GET_PLAYER_ACTOR_ACTOR(play) ((ACTOR*)GET_PLAYER_ACTOR(play)) +#define GET_PLAYER_ACTOR_NOW_ACTOR() ((ACTOR*)GET_PLAYER_ACTOR_NOW()) +#define GET_PLAYER_ACTOR_GAME_ACTOR(game) ((ACTOR*)GET_PLAYER_ACTOR_GAME(game)) + #ifdef __cplusplus } #endif diff --git a/include/m_submenu.h b/include/m_submenu.h index d67f0c88..9010a1c5 100644 --- a/include/m_submenu.h +++ b/include/m_submenu.h @@ -178,9 +178,9 @@ struct submenu_s { /* 0x162 */ u8 open_flag; // only set to 0 or 1, checked at least once in aQMgr_actor_move_talk_sub_hand_item_wait /* 0x163 */ u8 after_mode; /* relates to code which runs after the submenu process */ /* 0x164 */ u8 unk_164; // only set to 0 in mSM_move_LINKWait in AC - /* 0x165 */ u8 disable_start_btn_flag; /* when set to TRUE, the START button input will be ignored */ - /* 0x166 */ u8 disable_start_btn_timer; /* timer for when to disable the start button ignore flag */ - /* 0x168 */ xyz_t water_pos; /* calculated to the nearest water position to the player for releasing fish */ + /* 0x165 */ u8 start_refuse; /* when set to TRUE, the START button input will be ignored */ + /* 0x166 */ u8 start_refuse_timer; /* timer for when to disable the start button ignore flag */ + /* 0x168 */ xyz_t water_pos; /* calculated to the nearest water position to the player for releasing fish */ /* 0x174 */ Submenu_Item_c* item_p; /* pointer to a 'Submenu_Item_c' array, seemingly only points to Submenu::items */ /* 0x178 */ s16 item_num; /* number of items in the item array */ diff --git a/include/types.h b/include/types.h index 35aeebf8..5633403f 100644 --- a/include/types.h +++ b/include/types.h @@ -83,6 +83,8 @@ typedef u32 unknown; #define BUTTON_B 0x4000 #define BUTTON_A 0x8000 +#define FRAMES_PER_SECOND 60 + #define ARRAY_SIZE(arr, type) (sizeof(arr) / sizeof(type)) #define ARRAY_COUNT(arr) (int)(sizeof(arr) / sizeof(arr[0])) diff --git a/src/ac_br_shop_move.c_inc b/src/ac_br_shop_move.c_inc index 7aa57ac4..389e4f7d 100644 --- a/src/ac_br_shop_move.c_inc +++ b/src/ac_br_shop_move.c_inc @@ -16,7 +16,8 @@ static void change_FGUnit(ACTOR* actor, int type) { if (mSN_ClearSnowman(name) == 0) { int dug = FALSE; - if ((((*name >= BURIED_PITFALL_START) && (*name <= BURIED_PITFALL_END)) || (*name == SHINE_SPOT))) { + if ((((*name >= BURIED_PITFALL_HOLE_START) && (*name <= BURIED_PITFALL_HOLE_END)) || + (*name == SHINE_SPOT))) { dug = TRUE; } diff --git a/src/ac_buggy_move.c_inc b/src/ac_buggy_move.c_inc index 150d291e..0579b48e 100644 --- a/src/ac_buggy_move.c_inc +++ b/src/ac_buggy_move.c_inc @@ -34,7 +34,8 @@ static void change_FGUnit(STRUCTURE_ACTOR* buggy, int type) { if (mSN_ClearSnowman(unit_fg) == FALSE) { dug = FALSE; - if ((((*unit_fg >= BURIED_PITFALL_START) && (*unit_fg <= BURIED_PITFALL_END)) || (*unit_fg == SHINE_SPOT))) { + if ((((*unit_fg >= BURIED_PITFALL_HOLE_START) && (*unit_fg <= BURIED_PITFALL_HOLE_END)) || + (*unit_fg == SHINE_SPOT))) { dug = TRUE; } diff --git a/src/ac_kamakura_move.c_inc b/src/ac_kamakura_move.c_inc index c8fc9295..76cac6dc 100644 --- a/src/ac_kamakura_move.c_inc +++ b/src/ac_kamakura_move.c_inc @@ -31,7 +31,8 @@ static void change_FGUnit(STRUCTURE_ACTOR* kamakura, int type) { if (mSN_ClearSnowman(unit_fg) == FALSE) { dug = FALSE; - if ((((*unit_fg >= BURIED_PITFALL_START) && (*unit_fg <= BURIED_PITFALL_END)) || (*unit_fg == SHINE_SPOT))) { + if ((((*unit_fg >= BURIED_PITFALL_HOLE_START) && (*unit_fg <= BURIED_PITFALL_HOLE_END)) || + (*unit_fg == SHINE_SPOT))) { dug = TRUE; } @@ -171,14 +172,7 @@ static void aKKR_wait(STRUCTURE_ACTOR* kamakura, GAME_PLAY* play) { static void aKKR_setup_action(STRUCTURE_ACTOR* kamakura, int action) { static aSTR_MOVE_PROC process[] = { - &aKKR_wait, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + &aKKR_wait, NULL, NULL, NULL, NULL, NULL, NULL, NULL, }; kamakura->action_proc = process[action]; diff --git a/src/ac_npc_rcn_guide_schedule.c_inc b/src/ac_npc_rcn_guide_schedule.c_inc index c8abd00c..dcfd47e2 100644 --- a/src/ac_npc_rcn_guide_schedule.c_inc +++ b/src/ac_npc_rcn_guide_schedule.c_inc @@ -39,7 +39,7 @@ static void aNRG_take_with(NPC_RCN_GUIDE_ACTOR* rcn_guide, GAME_PLAY* play) { static void aNRG_decide_house_wait(NPC_RCN_GUIDE_ACTOR* rcn_guide, GAME_PLAY* play) { int next_think_idx = -1; - if (GET_PLAYER_ACTOR_NOW()->cancel_wade_flag) { + if (GET_PLAYER_ACTOR_NOW()->excute_cancel_wade) { /* Player is trying to leave the acre, so let them know they can't */ next_think_idx = aNRC_THINK_STOP_WADE; } else if (Common_Get(clip).demo_clip != NULL && Common_Get(clip).demo_clip->type == mDemo_CLIP_TYPE_INTRO_DEMO) { @@ -112,7 +112,7 @@ static void aNRG_exit(NPC_RCN_GUIDE_ACTOR* rcn_guide, GAME_PLAY* play) { intro_demo->rcn_guide_actor_p = NULL; Actor_delete(&rcn_guide->npc_class.actor_class); - play->submenu.disable_start_btn_flag = FALSE; + play->submenu.start_refuse = FALSE; } } } else { @@ -177,7 +177,7 @@ static void aNRG_approach_init(NPC_RCN_GUIDE_ACTOR* rcn_guide, GAME_PLAY* play) f32 z; /* Player cannot open the start menu */ - play->submenu.disable_start_btn_flag = TRUE; + play->submenu.start_refuse = TRUE; /* Make the player stand around waiting */ mPlib_request_main_demo_wait_type1(&play->game, 0, NULL); diff --git a/src/ac_tent.c b/src/ac_tent.c index 545219eb..bce9c0eb 100644 --- a/src/ac_tent.c +++ b/src/ac_tent.c @@ -76,7 +76,8 @@ static void aTnt_ChangeFg(ACTOR* actor, int type) { if (mSN_ClearSnowman(name) == 0) { int dug = FALSE; - if ((((*name >= BURIED_PITFALL_START) && (*name <= BURIED_PITFALL_END)) || (*name == SHINE_SPOT))) { + if ((((*name >= BURIED_PITFALL_HOLE_START) && (*name <= BURIED_PITFALL_HOLE_END)) || + (*name == SHINE_SPOT))) { dug = TRUE; } diff --git a/src/bg_item_common.c_inc b/src/bg_item_common.c_inc index c44d58c3..ba6bc6f5 100644 --- a/src/bg_item_common.c_inc +++ b/src/bg_item_common.c_inc @@ -624,7 +624,7 @@ static int bIT_common_bury_after(mActor_name_t fg_bury_item, mActor_name_t fg_ho int hole_no = mCoBG_GetHoleNumber(*bury_pos); if (hole_no != -1) { - *buried_item_p = BURIED_PITFALL_START + hole_no; + *buried_item_p = BURIED_PITFALL_HOLE_START + hole_no; } else { *buried_item_p = EMPTY_NO; } @@ -2907,7 +2907,7 @@ static int bIT_actor_pit_fall(mActor_name_t pit_fg_item, int ut_x, int ut_z, mAc mFI_UtNum2CenterWpos(&pos, ut_x, ut_z); pos.y = mCoBG_GetBgY_OnlyCenter_FromWpos2(pos, -1.0f); - pitfall_fg_no = pit_fg_item - BURIED_PITFALL_START; + pitfall_fg_no = pit_fg_item - BURIED_PITFALL_HOLE_START; mFI_SetFG_common(pitfall_fg_no + 0x43, pos, FALSE); hole_fg_no = pitfall_fg_no + HOLE_START; bIT_actor_pit_entry(common->pit, 1, hole_fg_no, &pos, fg_item_in_pit); diff --git a/src/c_keyframe.c b/src/c_keyframe.c index a65391f5..e4f27dc5 100644 --- a/src/c_keyframe.c +++ b/src/c_keyframe.c @@ -893,7 +893,7 @@ extern int cKF_SkeletonInfo_R_combine_play(cKF_SkeletonInfo_R_c* info1, cKF_Skel s_xyz* applyjoint; if ((info1 == NULL) || (info2 == NULL) || (flag == NULL)) { - return 0; + return cKF_STATE_NONE; } joint = (F32_IS_ZERO(info1->morph_counter)) ? &info1->current_joint->x : &info1->target_joint->x; @@ -930,7 +930,7 @@ extern int cKF_SkeletonInfo_R_combine_play(cKF_SkeletonInfo_R_c* info1, cKF_Skel if (info1->morph_counter <= 0.0f) { info1->morph_counter = 0.0f; } - return 0; + return cKF_STATE_NONE; } cKF_SkeletonInfo_R_morphJoint(info1); info1->morph_counter += 0.5f; @@ -1210,25 +1210,25 @@ extern void cKF_SkeletonInfo_R_AnimationMove_base(xyz_t* base, s_xyz* sbase, xyz keyframe->fixed_counter = count; } -extern void cKF_SkeletonInfo_R_AnimationMove_CulcTransToWorld(f32 calcx, f32 calcy, f32 calcz, xyz_t* base, - xyz_t* calcp, s16 val, xyz_t* trans, - cKF_SkeletonInfo_R_c* keyframe, int animation_flag) { +extern void cKF_SkeletonInfo_R_AnimationMove_CulcTransToWorld(xyz_t* calc_pos, const xyz_t* base_pos, f32 trans_x, + f32 trans_y, f32 trans_z, s16 angle_y, const xyz_t* scale, + cKF_SkeletonInfo_R_c* keyframe, int trans_flag) { f32 sin, cos; f32 j_x, j_z; s_xyz* cur_joint = keyframe->current_joint; - if (animation_flag & cKF_ANIMATION_TRANS_XZ) { - j_x = cur_joint->x - calcx; - j_z = cur_joint->z - calcz; + if (trans_flag & cKF_ANIMATION_TRANS_XZ) { + j_x = cur_joint->x - trans_x; + j_z = cur_joint->z - trans_z; - sin = sin_s(val); - cos = cos_s(val); + sin = sin_s(angle_y); + cos = cos_s(angle_y); - base->x = calcp->x + trans->x * ((j_x * cos) + (j_z * sin)); - base->z = calcp->z + trans->z * ((-j_x * sin) + (j_z * cos)); + calc_pos->x = base_pos->x + scale->x * ((j_x * cos) + (j_z * sin)); + calc_pos->z = base_pos->z + scale->z * ((-j_x * sin) + (j_z * cos)); } - if (animation_flag & cKF_ANIMATION_TRANS_Y) { - base->y = calcp->y + trans->y * (cur_joint->y - calcy); + if (trans_flag & cKF_ANIMATION_TRANS_Y) { + calc_pos->y = base_pos->y + scale->y * (cur_joint->y - trans_y); } } diff --git a/src/m_banti.c b/src/m_banti.c index 0929813e..6c8df602 100644 --- a/src/m_banti.c +++ b/src/m_banti.c @@ -17,326 +17,327 @@ extern cKF_Skeleton_R_c cKF_bs_r_clk_hiniti; extern cKF_Skeleton_R_c cKF_bs_r_clk_jikan; extern void banti_ct() { - bzero(&banti, sizeof(Banti_c)); + bzero(&banti, sizeof(Banti_c)); - banti.addressable_type = 0; - banti.disabled = 0; - banti.timer = 0; - banti.alpha = 0.0f; - banti.disp_left = 0; - banti.move_left = 0; - banti.move_timer = 0.0f; + banti.addressable_type = 0; + banti.disabled = 0; + banti.timer = 0; + banti.alpha = 0.0f; + banti.disp_left = 0; + banti.move_left = 0; + banti.move_timer = 0.0f; - cKF_SkeletonInfo_R_ct(&banti.month_anim.keyframe, &cKF_bs_r_clk_hiniti, NULL, banti.month_anim.work, banti.month_anim.morph); - banti_animation_init_hiduke(&banti.month_anim); - banti.month_anim.keyframe.frame_control.speed = 0.0f; + cKF_SkeletonInfo_R_ct(&banti.month_anim.keyframe, &cKF_bs_r_clk_hiniti, NULL, banti.month_anim.work, + banti.month_anim.morph); + banti_animation_init_hiduke(&banti.month_anim); + banti.month_anim.keyframe.frame_control.speed = 0.0f; - cKF_SkeletonInfo_R_ct(&banti.day_anim.keyframe, &cKF_bs_r_clk_hiniti, NULL, banti.day_anim.work, banti.day_anim.morph); - banti_animation_init_hiduke(&banti.day_anim); - banti.day_anim.keyframe.frame_control.speed = 0.0f; + cKF_SkeletonInfo_R_ct(&banti.day_anim.keyframe, &cKF_bs_r_clk_hiniti, NULL, banti.day_anim.work, + banti.day_anim.morph); + banti_animation_init_hiduke(&banti.day_anim); + banti.day_anim.keyframe.frame_control.speed = 0.0f; - cKF_SkeletonInfo_R_ct(&banti.hour_upper_anim.keyframe, &cKF_bs_r_clk_jikan, NULL, banti.hour_upper_anim.work, banti.hour_upper_anim.morph); - banti_animation_init_jikan(&banti.hour_upper_anim); - banti.hour_upper_anim.keyframe.frame_control.speed = 0.0f; + cKF_SkeletonInfo_R_ct(&banti.hour_upper_anim.keyframe, &cKF_bs_r_clk_jikan, NULL, banti.hour_upper_anim.work, + banti.hour_upper_anim.morph); + banti_animation_init_jikan(&banti.hour_upper_anim); + banti.hour_upper_anim.keyframe.frame_control.speed = 0.0f; - cKF_SkeletonInfo_R_ct(&banti.hour_lower_anim.keyframe, &cKF_bs_r_clk_jikan, NULL, banti.hour_lower_anim.work, banti.hour_lower_anim.morph); - banti_animation_init_jikan(&banti.hour_lower_anim); - banti.hour_lower_anim.keyframe.frame_control.speed = 0.0f; + cKF_SkeletonInfo_R_ct(&banti.hour_lower_anim.keyframe, &cKF_bs_r_clk_jikan, NULL, banti.hour_lower_anim.work, + banti.hour_lower_anim.morph); + banti_animation_init_jikan(&banti.hour_lower_anim); + banti.hour_lower_anim.keyframe.frame_control.speed = 0.0f; - cKF_SkeletonInfo_R_ct(&banti.min_upper_anim.keyframe, &cKF_bs_r_clk_jikan, NULL, banti.min_upper_anim.work, banti.min_upper_anim.morph); - banti_animation_init_jikan(&banti.min_upper_anim); - banti.min_upper_anim.keyframe.frame_control.speed = 0.0f; + cKF_SkeletonInfo_R_ct(&banti.min_upper_anim.keyframe, &cKF_bs_r_clk_jikan, NULL, banti.min_upper_anim.work, + banti.min_upper_anim.morph); + banti_animation_init_jikan(&banti.min_upper_anim); + banti.min_upper_anim.keyframe.frame_control.speed = 0.0f; - cKF_SkeletonInfo_R_ct(&banti.min_lower_anim.keyframe, &cKF_bs_r_clk_jikan, NULL, banti.min_lower_anim.work, banti.min_lower_anim.morph); - banti_animation_init_jikan(&banti.min_lower_anim); - banti.min_lower_anim.keyframe.frame_control.speed = 0.0f; + cKF_SkeletonInfo_R_ct(&banti.min_lower_anim.keyframe, &cKF_bs_r_clk_jikan, NULL, banti.min_lower_anim.work, + banti.min_lower_anim.morph); + banti_animation_init_jikan(&banti.min_lower_anim); + banti.min_lower_anim.keyframe.frame_control.speed = 0.0f; - lbRTC_TimeCopy(&banti.next_time, Common_GetPointer(time.rtc_time)); - lbRTC_TimeCopy(&banti.displayed_time, Common_GetPointer(time.rtc_time)); + lbRTC_TimeCopy(&banti.next_time, Common_GetPointer(time.rtc_time)); + lbRTC_TimeCopy(&banti.displayed_time, Common_GetPointer(time.rtc_time)); } extern void banti_dt() { - cKF_SkeletonInfo_R_dt(&banti.month_anim.keyframe); - cKF_SkeletonInfo_R_dt(&banti.day_anim.keyframe); - cKF_SkeletonInfo_R_dt(&banti.hour_upper_anim.keyframe); - cKF_SkeletonInfo_R_dt(&banti.hour_lower_anim.keyframe); - cKF_SkeletonInfo_R_dt(&banti.min_upper_anim.keyframe); - cKF_SkeletonInfo_R_dt(&banti.min_lower_anim.keyframe); + cKF_SkeletonInfo_R_dt(&banti.month_anim.keyframe); + cKF_SkeletonInfo_R_dt(&banti.day_anim.keyframe); + cKF_SkeletonInfo_R_dt(&banti.hour_upper_anim.keyframe); + cKF_SkeletonInfo_R_dt(&banti.hour_lower_anim.keyframe); + cKF_SkeletonInfo_R_dt(&banti.min_upper_anim.keyframe); + cKF_SkeletonInfo_R_dt(&banti.min_lower_anim.keyframe); } static void banti_chk_disp_left(GAME_PLAY* play) { - xyz_t player_pos_screen; + xyz_t player_pos_screen; - Game_play_Projection_Trans(play, &get_player_actor_withoutCheck(play)->actor_class.world.position, &player_pos_screen); + Game_play_Projection_Trans(play, &get_player_actor_withoutCheck(play)->actor_class.world.position, + &player_pos_screen); - if (player_pos_screen.x >= 180.0f && player_pos_screen.y >= 150.0f) { - if (banti.move_left == FALSE) { - banti.move_left = TRUE; - banti.move_timer = 0.0f; + if (player_pos_screen.x >= 180.0f && player_pos_screen.y >= 150.0f) { + if (banti.move_left == FALSE) { + banti.move_left = TRUE; + banti.move_timer = 0.0f; + } + + banti.move_timer += 1.0f; + + if (banti.move_timer > 10.0f) { + banti.move_timer = 10.0f; + + if (banti.alpha < 0.01f) { + banti.disp_left = TRUE; + banti.disabled = FALSE; + } else if (banti.disp_left == FALSE) { + banti.disabled = TRUE; + } + } + } else { + if (banti.move_left == TRUE) { + banti.move_left = FALSE; + banti.move_timer = 0.0f; + } + + banti.move_timer += 1.0f; + + if (banti.move_timer > 10.0f) { + banti.move_timer = 10.0f; + + if (banti.alpha < 0.01f) { + banti.disp_left = FALSE; + banti.disabled = FALSE; + } else if (banti.disp_left == TRUE) { + banti.disabled = TRUE; + } + } } - - banti.move_timer += 1.0f; - - if (banti.move_timer > 10.0f) { - banti.move_timer = 10.0f; - - if (banti.alpha < 0.01f) { - banti.disp_left = TRUE; - banti.disabled = FALSE; - } - else if (banti.disp_left == FALSE) { - banti.disabled = TRUE; - } - } - } - else { - if (banti.move_left == TRUE) { - banti.move_left = FALSE; - banti.move_timer = 0.0f; - } - - banti.move_timer += 1.0f; - - if (banti.move_timer > 10.0f) { - banti.move_timer = 10.0f; - - if (banti.alpha < 0.01f) { - banti.disp_left = FALSE; - banti.disabled = FALSE; - } - else if (banti.disp_left == TRUE) { - banti.disabled = TRUE; - } - } - } } static f32 banti_calc_disp_alpha_rate(GAME_PLAY* play) { - if (mDemo_CheckDemo() || mEv_CheckTitleDemo() > 0 || banti.disabled) { - banti.addressable_type = mPlayer_ADDRESSABLE_FALSE_MOVEMENT; - add_calc(&banti.alpha, 0.0f, 1.0f - sqrtf(0.8), 0.1f, 0.005f); /* quickly fade out on demo screen or title or force disabled */ - } - else if (banti.addressable_type == mPlayer_ADDRESSABLE_TRUE && play->submenu.process_status == mSM_PROCESS_WAIT) { - add_calc(&banti.alpha, 1.0f, 1.0f - sqrtf(0.8), 0.0425f, 0.0005f); /* fade in */ - } - else { - add_calc(&banti.alpha, 0.0f, 1.0f - sqrtf(0.8), 0.0425f, 0.0005f); /* fade out */ - } + if (mDemo_CheckDemo() || mEv_CheckTitleDemo() > 0 || banti.disabled) { + banti.addressable_type = mPlayer_ADDRESSABLE_FALSE_MOVEMENT; + add_calc(&banti.alpha, 0.0f, 1.0f - sqrtf(0.8), 0.1f, + 0.005f); /* quickly fade out on demo screen or title or force disabled */ + } else if (banti.addressable_type == mPlayer_ADDRESSABLE_TRUE && play->submenu.process_status == mSM_PROCESS_WAIT) { + add_calc(&banti.alpha, 1.0f, 1.0f - sqrtf(0.8), 0.0425f, 0.0005f); /* fade in */ + } else { + add_calc(&banti.alpha, 0.0f, 1.0f - sqrtf(0.8), 0.0425f, 0.0005f); /* fade out */ + } } extern cKF_Animation_R_c cKF_ba_r_clk_hiniti; static void banti_animation_init_hiduke(Banti_anim_c* anim) { - cKF_SkeletonInfo_R_init(&anim->keyframe, anim->keyframe.skeleton, &cKF_ba_r_clk_hiniti, 1.0f, 15.0f, 1.0f, 0.5f, 0.0f, cKF_FRAMECONTROL_STOP, NULL); + cKF_SkeletonInfo_R_init(&anim->keyframe, anim->keyframe.skeleton, &cKF_ba_r_clk_hiniti, 1.0f, 15.0f, 1.0f, 0.5f, + 0.0f, cKF_FRAMECONTROL_STOP, NULL); } extern cKF_Animation_R_c cKF_ba_r_clk_jikan; static void banti_animation_init_jikan(Banti_anim_c* anim) { - cKF_SkeletonInfo_R_init(&anim->keyframe, anim->keyframe.skeleton, &cKF_ba_r_clk_jikan, 1.0f, 15.0f, 1.0f, 0.5f, 0.0f, cKF_FRAMECONTROL_STOP, NULL); + cKF_SkeletonInfo_R_init(&anim->keyframe, anim->keyframe.skeleton, &cKF_ba_r_clk_jikan, 1.0f, 15.0f, 1.0f, 0.5f, + 0.0f, cKF_FRAMECONTROL_STOP, NULL); } static void banti_anime_proc() { - if (cKF_SkeletonInfo_R_play(&banti.month_anim.keyframe) == cKF_STATE_STOPPED) { - banti.month_anim.keyframe.frame_control.current_frame = 1.0f; - banti.month_anim.keyframe.frame_control.speed = 0.0f; - banti.month_anim.state = banti_ANIM_STATE_STOPPED; - } + if (cKF_SkeletonInfo_R_play(&banti.month_anim.keyframe) == cKF_STATE_STOPPED) { + banti.month_anim.keyframe.frame_control.current_frame = 1.0f; + banti.month_anim.keyframe.frame_control.speed = 0.0f; + banti.month_anim.state = banti_ANIM_STATE_STOPPED; + } - if (cKF_SkeletonInfo_R_play(&banti.day_anim.keyframe) == cKF_STATE_STOPPED) { - banti.day_anim.keyframe.frame_control.current_frame = 1.0f; - banti.day_anim.keyframe.frame_control.speed = 0.0f; - banti.day_anim.state = banti_ANIM_STATE_STOPPED; - } + if (cKF_SkeletonInfo_R_play(&banti.day_anim.keyframe) == cKF_STATE_STOPPED) { + banti.day_anim.keyframe.frame_control.current_frame = 1.0f; + banti.day_anim.keyframe.frame_control.speed = 0.0f; + banti.day_anim.state = banti_ANIM_STATE_STOPPED; + } - if (cKF_SkeletonInfo_R_play(&banti.hour_upper_anim.keyframe) == cKF_STATE_STOPPED) { - banti.hour_upper_anim.keyframe.frame_control.current_frame = 1.0f; - banti.hour_upper_anim.keyframe.frame_control.speed = 0.0f; - banti.hour_upper_anim.state = banti_ANIM_STATE_STOPPED; - } + if (cKF_SkeletonInfo_R_play(&banti.hour_upper_anim.keyframe) == cKF_STATE_STOPPED) { + banti.hour_upper_anim.keyframe.frame_control.current_frame = 1.0f; + banti.hour_upper_anim.keyframe.frame_control.speed = 0.0f; + banti.hour_upper_anim.state = banti_ANIM_STATE_STOPPED; + } - if (cKF_SkeletonInfo_R_play(&banti.hour_lower_anim.keyframe) == cKF_STATE_STOPPED) { - banti.hour_lower_anim.keyframe.frame_control.current_frame = 1.0f; - banti.hour_lower_anim.keyframe.frame_control.speed = 0.0f; - banti.hour_lower_anim.state = banti_ANIM_STATE_STOPPED; - } + if (cKF_SkeletonInfo_R_play(&banti.hour_lower_anim.keyframe) == cKF_STATE_STOPPED) { + banti.hour_lower_anim.keyframe.frame_control.current_frame = 1.0f; + banti.hour_lower_anim.keyframe.frame_control.speed = 0.0f; + banti.hour_lower_anim.state = banti_ANIM_STATE_STOPPED; + } - if (cKF_SkeletonInfo_R_play(&banti.min_upper_anim.keyframe) == cKF_STATE_STOPPED) { - banti.min_upper_anim.keyframe.frame_control.current_frame = 1.0f; - banti.min_upper_anim.keyframe.frame_control.speed = 0.0f; - banti.min_upper_anim.state = banti_ANIM_STATE_STOPPED; - } + if (cKF_SkeletonInfo_R_play(&banti.min_upper_anim.keyframe) == cKF_STATE_STOPPED) { + banti.min_upper_anim.keyframe.frame_control.current_frame = 1.0f; + banti.min_upper_anim.keyframe.frame_control.speed = 0.0f; + banti.min_upper_anim.state = banti_ANIM_STATE_STOPPED; + } - if (cKF_SkeletonInfo_R_play(&banti.min_lower_anim.keyframe) == cKF_STATE_STOPPED) { - banti.min_lower_anim.keyframe.frame_control.current_frame = 1.0f; - banti.min_lower_anim.keyframe.frame_control.speed = 0.0f; - banti.min_lower_anim.state = banti_ANIM_STATE_STOPPED; - } + if (cKF_SkeletonInfo_R_play(&banti.min_lower_anim.keyframe) == cKF_STATE_STOPPED) { + banti.min_lower_anim.keyframe.frame_control.current_frame = 1.0f; + banti.min_lower_anim.keyframe.frame_control.speed = 0.0f; + banti.min_lower_anim.state = banti_ANIM_STATE_STOPPED; + } } static void banti_chk_anime_start() { - lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); - u8 banti_hour; - u8 rtc_hour; - u8 banti_min; - u8 rtc_min; + lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); + u8 banti_hour; + u8 rtc_hour; + u8 banti_min; + u8 rtc_min; - int work1; - int work0; - int disp0; - int disp1; + int work1; + int work0; + int disp0; + int disp1; - if (banti.month_anim.state == banti_ANIM_STATE_STOPPED && banti.displayed_time.month != Common_GetPointer(time.rtc_time)->month) { - banti_animation_init_hiduke(&banti.month_anim); - banti.month_anim.state = banti_ANIM_STATE_PLAYING; - } + if (banti.month_anim.state == banti_ANIM_STATE_STOPPED && + banti.displayed_time.month != Common_GetPointer(time.rtc_time)->month) { + banti_animation_init_hiduke(&banti.month_anim); + banti.month_anim.state = banti_ANIM_STATE_PLAYING; + } - if (banti.day_anim.state == banti_ANIM_STATE_STOPPED && banti.displayed_time.day != Common_GetPointer(time.rtc_time)->day) { - banti_animation_init_hiduke(&banti.day_anim); - banti.day_anim.state = banti_ANIM_STATE_PLAYING; - } + if (banti.day_anim.state == banti_ANIM_STATE_STOPPED && + banti.displayed_time.day != Common_GetPointer(time.rtc_time)->day) { + banti_animation_init_hiduke(&banti.day_anim); + banti.day_anim.state = banti_ANIM_STATE_PLAYING; + } - banti_hour = banti.displayed_time.hour; - if (banti_hour == 0 || banti_hour == 12) { - work0 = 12; - } - else if (banti_hour > 11) { - work0 = banti_hour - 12; - } - else { - work0 = banti_hour; - } + banti_hour = banti.displayed_time.hour; + if (banti_hour == 0 || banti_hour == 12) { + work0 = 12; + } else if (banti_hour > 11) { + work0 = banti_hour - 12; + } else { + work0 = banti_hour; + } - rtc_hour = Common_GetPointer(time.rtc_time)->hour; - if (rtc_hour == 0 || rtc_hour == 12) { - work1 = 12; - } - else if (rtc_hour > 11) { - work1 = rtc_hour - 12; - } - else { - work1 = rtc_hour; - } + rtc_hour = Common_GetPointer(time.rtc_time)->hour; + if (rtc_hour == 0 || rtc_hour == 12) { + work1 = 12; + } else if (rtc_hour > 11) { + work1 = rtc_hour - 12; + } else { + work1 = rtc_hour; + } - disp0 = work0 / 10; - disp1 = work1 / 10; - if (banti.hour_upper_anim.state == banti_ANIM_STATE_STOPPED && disp0 != disp1) { - banti_animation_init_jikan(&banti.hour_upper_anim); - banti.hour_upper_anim.state = banti_ANIM_STATE_PLAYING; - } + disp0 = work0 / 10; + disp1 = work1 / 10; + if (banti.hour_upper_anim.state == banti_ANIM_STATE_STOPPED && disp0 != disp1) { + banti_animation_init_jikan(&banti.hour_upper_anim); + banti.hour_upper_anim.state = banti_ANIM_STATE_PLAYING; + } - disp0 = work0 % 10; - disp1 = work1 % 10; - if (banti.hour_lower_anim.state == banti_ANIM_STATE_STOPPED && disp0 != disp1) { - banti_animation_init_jikan(&banti.hour_lower_anim); - banti.hour_lower_anim.state = banti_ANIM_STATE_PLAYING; - } + disp0 = work0 % 10; + disp1 = work1 % 10; + if (banti.hour_lower_anim.state == banti_ANIM_STATE_STOPPED && disp0 != disp1) { + banti_animation_init_jikan(&banti.hour_lower_anim); + banti.hour_lower_anim.state = banti_ANIM_STATE_PLAYING; + } - disp0 = banti.displayed_time.min / 10; - disp1 = Common_GetPointer(time.rtc_time)->min / 10; - if (banti.min_upper_anim.state == banti_ANIM_STATE_STOPPED && disp0 != disp1) { - banti_animation_init_jikan(&banti.min_upper_anim); - banti.min_upper_anim.state = banti_ANIM_STATE_PLAYING; - } + disp0 = banti.displayed_time.min / 10; + disp1 = Common_GetPointer(time.rtc_time)->min / 10; + if (banti.min_upper_anim.state == banti_ANIM_STATE_STOPPED && disp0 != disp1) { + banti_animation_init_jikan(&banti.min_upper_anim); + banti.min_upper_anim.state = banti_ANIM_STATE_PLAYING; + } - disp0 = banti.displayed_time.min % 10; - disp1 = Common_GetPointer(time.rtc_time)->min % 10; - if (banti.min_lower_anim.state == banti_ANIM_STATE_STOPPED && disp0 != disp1) { - banti_animation_init_jikan(&banti.min_lower_anim); - banti.min_lower_anim.state = banti_ANIM_STATE_PLAYING; - } + disp0 = banti.displayed_time.min % 10; + disp1 = Common_GetPointer(time.rtc_time)->min % 10; + if (banti.min_lower_anim.state == banti_ANIM_STATE_STOPPED && disp0 != disp1) { + banti_animation_init_jikan(&banti.min_lower_anim); + banti.min_lower_anim.state = banti_ANIM_STATE_PLAYING; + } } static void banti_time_check() { - int pre_state; - int post_state; + int pre_state; + int post_state; - pre_state = banti.month_anim.state | banti.day_anim.state | banti.hour_upper_anim.state | banti.hour_lower_anim.state | banti.min_upper_anim.state | banti.min_lower_anim.state; + pre_state = banti.month_anim.state | banti.day_anim.state | banti.hour_upper_anim.state | + banti.hour_lower_anim.state | banti.min_upper_anim.state | banti.min_lower_anim.state; - if (pre_state == banti_ANIM_STATE_STOPPED) { - banti_chk_anime_start(); - } - - banti_anime_proc(); - - post_state = banti.month_anim.state | banti.day_anim.state | banti.hour_upper_anim.state | banti.hour_lower_anim.state | banti.min_upper_anim.state | banti.min_lower_anim.state; - - if (pre_state != post_state) { if (pre_state == banti_ANIM_STATE_STOPPED) { - lbRTC_TimeCopy(&banti.next_time, Common_GetPointer(time.rtc_time)); + banti_chk_anime_start(); } - else { - lbRTC_TimeCopy(&banti.displayed_time, &banti.next_time); + + banti_anime_proc(); + + post_state = banti.month_anim.state | banti.day_anim.state | banti.hour_upper_anim.state | + banti.hour_lower_anim.state | banti.min_upper_anim.state | banti.min_lower_anim.state; + + if (pre_state != post_state) { + if (pre_state == banti_ANIM_STATE_STOPPED) { + lbRTC_TimeCopy(&banti.next_time, Common_GetPointer(time.rtc_time)); + } else { + lbRTC_TimeCopy(&banti.displayed_time, &banti.next_time); + } } - } } extern void banti_move(GAME_PLAY* play) { - int addressable_type; - int update; + int addressable_type; + int update; - banti_chk_disp_left(play); + banti_chk_disp_left(play); - addressable_type = mPlib_Get_address_able_display(); + addressable_type = mPlib_Get_address_able_display(); - if (banti.addressable_type != addressable_type) { - update = FALSE; - banti.timer++; + if (banti.addressable_type != addressable_type) { + update = FALSE; + banti.timer++; - if (addressable_type == mPlayer_ADDRESSABLE_FALSE_USING_TOOL) { - if (banti.timer > 50) { - update = TRUE; - } - } - else if (banti.addressable_type != mPlayer_ADDRESSABLE_TRUE) { - if (banti.timer > 30 || addressable_type == mPlayer_ADDRESSABLE_FALSE_TALKING) { - update = TRUE; - } - } - else if (banti.timer > 50 || addressable_type == mPlayer_ADDRESSABLE_FALSE_TALKING) { - update = TRUE; + if (addressable_type == mPlayer_ADDRESSABLE_FALSE_READY_NET) { + if (banti.timer > 50) { + update = TRUE; + } + } else if (banti.addressable_type != mPlayer_ADDRESSABLE_TRUE) { + if (banti.timer > 30 || addressable_type == mPlayer_ADDRESSABLE_FALSE_TALKING) { + update = TRUE; + } + } else if (banti.timer > 50 || addressable_type == mPlayer_ADDRESSABLE_FALSE_TALKING) { + update = TRUE; + } + + if (update == TRUE) { + banti.timer = 0; + banti.addressable_type = addressable_type; + } + } else { + banti.timer = 0; } - if (update == TRUE) { - banti.timer = 0; - banti.addressable_type = addressable_type; - } - } - else { - banti.timer = 0; - } - - banti_calc_disp_alpha_rate(play); - banti_time_check(); + banti_calc_disp_alpha_rate(play); + banti_time_check(); } -static int banti_draw_before(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_idx, Gfx** joint_shape, u8* joint_flags, void* arg, s_xyz* joint_rot, xyz_t* joint_pos) { - Gfx** gfx_pp; - Mtx* mtx; - Banti_callback_c* callback_data = (Banti_callback_c*)arg; +static int banti_draw_before(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_idx, Gfx** joint_shape, + u8* joint_flags, void* arg, s_xyz* joint_rot, xyz_t* joint_pos) { + Gfx** gfx_pp; + Mtx* mtx; + Banti_callback_c* callback_data = (Banti_callback_c*)arg; - gfx_pp = callback_data->gfx_pp; - mtx = callback_data->mtx; + gfx_pp = callback_data->gfx_pp; + mtx = callback_data->mtx; - Matrix_softcv3_mult(joint_pos, joint_rot); - if (*joint_shape != NULL) { - _Matrix_to_Mtx(mtx); + Matrix_softcv3_mult(joint_pos, joint_rot); + if (*joint_shape != NULL) { + _Matrix_to_Mtx(mtx); - gSPMatrix(gfx_pp[0]++, mtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPMatrix(gfx_pp[0]++, mtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - if (callback_data->state == banti_ANIM_STATE_STOPPED) { - if (joint_idx != 2) { - gSPDisplayList(gfx_pp[0]++, *joint_shape); - } - } - else { - gSPDisplayList(gfx_pp[0]++, *joint_shape); + if (callback_data->state == banti_ANIM_STATE_STOPPED) { + if (joint_idx != 2) { + gSPDisplayList(gfx_pp[0]++, *joint_shape); + } + } else { + gSPDisplayList(gfx_pp[0]++, *joint_shape); + } + + callback_data->mtx++; } - callback_data->mtx++; - } - - return 0; + return 0; } extern u8 clk_win_suuji1_TA_tex_txt[]; @@ -371,81 +372,57 @@ extern u8 clk_win_suuji29_TA_tex_txt[]; extern u8 clk_win_suuji30_TA_tex_txt[]; extern u8 clk_win_suuji31_TA_tex_txt[]; -static void banti_draw_hiduke_sub(Gfx** gfx_pp, GAME* game, Banti_anim_c* anim, int tex0_idx, int tex1_idx, int pos_idx) { - static u8* hiniti_tex_table[31] = { - clk_win_suuji1_TA_tex_txt, - clk_win_suuji2_TA_tex_txt, - clk_win_suuji3_TA_tex_txt, - clk_win_suuji4_TA_tex_txt, - clk_win_suuji5_TA_tex_txt, - clk_win_suuji6_TA_tex_txt, - clk_win_suuji7_TA_tex_txt, - clk_win_suuji8_TA_tex_txt, - clk_win_suuji9_TA_tex_txt, - clk_win_suuji10_TA_tex_txt, - clk_win_suuji11_TA_tex_txt, - clk_win_suuji12_TA_tex_txt, - clk_win_suuji13_TA_tex_txt, - clk_win_suuji14_TA_tex_txt, - clk_win_suuji15_TA_tex_txt, - clk_win_suuji16_TA_tex_txt, - clk_win_suuji17_TA_tex_txt, - clk_win_suuji18_TA_tex_txt, - clk_win_suuji19_TA_tex_txt, - clk_win_suuji20_TA_tex_txt, - clk_win_suuji21_TA_tex_txt, - clk_win_suuji22_TA_tex_txt, - clk_win_suuji23_TA_tex_txt, - clk_win_suuji24_TA_tex_txt, - clk_win_suuji25_TA_tex_txt, - clk_win_suuji26_TA_tex_txt, - clk_win_suuji27_TA_tex_txt, - clk_win_suuji28_TA_tex_txt, - clk_win_suuji29_TA_tex_txt, - clk_win_suuji30_TA_tex_txt, - clk_win_suuji31_TA_tex_txt - }; +static void banti_draw_hiduke_sub(Gfx** gfx_pp, GAME* game, Banti_anim_c* anim, int tex0_idx, int tex1_idx, + int pos_idx) { + static u8* hiniti_tex_table[31] = { + clk_win_suuji1_TA_tex_txt, clk_win_suuji2_TA_tex_txt, clk_win_suuji3_TA_tex_txt, clk_win_suuji4_TA_tex_txt, + clk_win_suuji5_TA_tex_txt, clk_win_suuji6_TA_tex_txt, clk_win_suuji7_TA_tex_txt, clk_win_suuji8_TA_tex_txt, + clk_win_suuji9_TA_tex_txt, clk_win_suuji10_TA_tex_txt, clk_win_suuji11_TA_tex_txt, clk_win_suuji12_TA_tex_txt, + clk_win_suuji13_TA_tex_txt, clk_win_suuji14_TA_tex_txt, clk_win_suuji15_TA_tex_txt, clk_win_suuji16_TA_tex_txt, + clk_win_suuji17_TA_tex_txt, clk_win_suuji18_TA_tex_txt, clk_win_suuji19_TA_tex_txt, clk_win_suuji20_TA_tex_txt, + clk_win_suuji21_TA_tex_txt, clk_win_suuji22_TA_tex_txt, clk_win_suuji23_TA_tex_txt, clk_win_suuji24_TA_tex_txt, + clk_win_suuji25_TA_tex_txt, clk_win_suuji26_TA_tex_txt, clk_win_suuji27_TA_tex_txt, clk_win_suuji28_TA_tex_txt, + clk_win_suuji29_TA_tex_txt, clk_win_suuji30_TA_tex_txt, clk_win_suuji31_TA_tex_txt + }; - static xyz_t set_pos_table[2] = { - { 64.0f, -70.0f, 0.0f }, - { 94.0f, -70.0f, 0.0f } - }; + static xyz_t set_pos_table[2] = { { 64.0f, -70.0f, 0.0f }, { 94.0f, -70.0f, 0.0f } }; - GRAPH* g = game->graph; - xyz_t* set_pos = &set_pos_table[pos_idx]; - Mtx* m; - int joint; - Banti_callback_c callback_data; + GRAPH* g = game->graph; + xyz_t* set_pos = &set_pos_table[pos_idx]; + Mtx* m; + int joint; + Banti_callback_c callback_data; - Matrix_push(); - Matrix_translate(set_pos->x, set_pos->y, set_pos->z, 1); + Matrix_push(); + Matrix_translate(set_pos->x, set_pos->y, set_pos->z, 1); - m = (Mtx*)GRAPH_ALLOC_TYPE(g, Mtx, anim->keyframe.skeleton->num_shown_joints); - callback_data.mtx = m; + m = (Mtx*)GRAPH_ALLOC_TYPE(g, Mtx, anim->keyframe.skeleton->num_shown_joints); + callback_data.mtx = m; - if (m != NULL) { - joint = 0; - callback_data.gfx_pp = gfx_pp; - callback_data.state = anim->state; + if (m != NULL) { + joint = 0; + callback_data.gfx_pp = gfx_pp; + callback_data.state = anim->state; - gSPSegment(gfx_pp[0]++, G_MWO_SEGMENT_8, hiniti_tex_table[tex0_idx]); - gSPSegment(gfx_pp[0]++, G_MWO_SEGMENT_9, hiniti_tex_table[tex1_idx]); + gSPSegment(gfx_pp[0]++, G_MWO_SEGMENT_8, hiniti_tex_table[tex0_idx]); + gSPSegment(gfx_pp[0]++, G_MWO_SEGMENT_9, hiniti_tex_table[tex1_idx]); + cKF_Si3_draw_SV_R_child(game, &anim->keyframe, &joint, &banti_draw_before, NULL, &callback_data, NULL); + } - cKF_Si3_draw_SV_R_child(game, &anim->keyframe, &joint, &banti_draw_before, NULL, &callback_data, NULL); - } - - Matrix_pull(); + Matrix_pull(); } static void banti_draw_hiduke(Gfx** gfx_pp, GAME_PLAY* play, int alpha) { - u8 a = alpha; + u8 a = alpha; - gDPSetPrimColor(gfx_pp[0]++, 0, a, 235, 255, 120, a); - gDPSetEnvColor(gfx_pp[0]++, 80, 40, 40, a); + gDPSetPrimColor(gfx_pp[0]++, 0, a, 235, 255, 120, a); + gDPSetEnvColor(gfx_pp[0]++, 80, 40, 40, a); - banti_draw_hiduke_sub(gfx_pp, (GAME*)play, &banti.month_anim, banti.displayed_time.month - 1, banti.next_time.month - 1, 0); - banti_draw_hiduke_sub(gfx_pp, (GAME*)play, &banti.day_anim, banti.displayed_time.day - 1, banti.next_time.day - 1, 1); + banti_draw_hiduke_sub(gfx_pp, (GAME*)play, &banti.month_anim, banti.displayed_time.month - 1, + banti.next_time.month - 1, 0); + banti_draw_hiduke_sub(gfx_pp, (GAME*)play, &banti.day_anim, banti.displayed_time.day - 1, banti.next_time.day - 1, + 1); } extern u8 clk_win_jikan0_TA_tex_txt[]; @@ -460,94 +437,82 @@ extern u8 clk_win_jikan8_TA_tex_txt[]; extern u8 clk_win_jikan9_TA_tex_txt[]; extern u8 clk_win_jikan_TA_tex_txt[]; -static void banti_draw_jikan_sub(Gfx** gfx_pp, GAME* game, Banti_anim_c* anim, int idx0, int idx1, int hide_zero, int pos_idx) { - static u8* jikan_tex_table[11] = { - clk_win_jikan0_TA_tex_txt, - clk_win_jikan1_TA_tex_txt, - clk_win_jikan2_TA_tex_txt, - clk_win_jikan3_TA_tex_txt, - clk_win_jikan4_TA_tex_txt, - clk_win_jikan5_TA_tex_txt, - clk_win_jikan6_TA_tex_txt, - clk_win_jikan7_TA_tex_txt, - clk_win_jikan8_TA_tex_txt, - clk_win_jikan9_TA_tex_txt, - clk_win_jikan_TA_tex_txt - }; +static void banti_draw_jikan_sub(Gfx** gfx_pp, GAME* game, Banti_anim_c* anim, int idx0, int idx1, int hide_zero, + int pos_idx) { + static u8* jikan_tex_table[11] = { clk_win_jikan0_TA_tex_txt, clk_win_jikan1_TA_tex_txt, clk_win_jikan2_TA_tex_txt, + clk_win_jikan3_TA_tex_txt, clk_win_jikan4_TA_tex_txt, clk_win_jikan5_TA_tex_txt, + clk_win_jikan6_TA_tex_txt, clk_win_jikan7_TA_tex_txt, clk_win_jikan8_TA_tex_txt, + clk_win_jikan9_TA_tex_txt, clk_win_jikan_TA_tex_txt }; - static xyz_t set_pos_table[4] = { - { 60.0f, -91.0f, 0.0f }, - { 76.0f, -91.0f, 0.0f }, - { 98.0f, -91.0f, 0.0f }, - { 113.0f, -91.0f, 0.0f } - }; + static xyz_t set_pos_table[4] = { + { 60.0f, -91.0f, 0.0f }, { 76.0f, -91.0f, 0.0f }, { 98.0f, -91.0f, 0.0f }, { 113.0f, -91.0f, 0.0f } + }; - GRAPH* g = game->graph; - xyz_t* set_pos = &set_pos_table[pos_idx]; - Mtx* m; - int joint; - Banti_callback_c callback_data; + GRAPH* g = game->graph; + xyz_t* set_pos = &set_pos_table[pos_idx]; + Mtx* m; + int joint; + Banti_callback_c callback_data; - Matrix_push(); - Matrix_translate(set_pos->x, set_pos->y, set_pos->z, 1); + Matrix_push(); + Matrix_translate(set_pos->x, set_pos->y, set_pos->z, 1); - if (hide_zero == TRUE) { - if (idx0 == 0) { - idx0 = 10; + if (hide_zero == TRUE) { + if (idx0 == 0) { + idx0 = 10; + } + + if (idx1 == 0) { + idx1 = 10; + } } - if (idx1 == 0) { - idx1 = 10; + m = (Mtx*)GRAPH_ALLOC_TYPE(g, Mtx, anim->keyframe.skeleton->num_shown_joints); + callback_data.mtx = m; + + if (m != NULL) { + joint = 0; + callback_data.gfx_pp = gfx_pp; + callback_data.state = anim->state; + + gSPSegment(gfx_pp[0]++, G_MWO_SEGMENT_8, jikan_tex_table[idx0]); + gSPSegment(gfx_pp[0]++, G_MWO_SEGMENT_9, jikan_tex_table[idx1]); + + cKF_Si3_draw_SV_R_child(game, &anim->keyframe, &joint, &banti_draw_before, NULL, &callback_data, NULL); } - } - m = (Mtx*)GRAPH_ALLOC_TYPE(g, Mtx, anim->keyframe.skeleton->num_shown_joints); - callback_data.mtx = m; - - if (m != NULL) { - joint = 0; - callback_data.gfx_pp = gfx_pp; - callback_data.state = anim->state; - - gSPSegment(gfx_pp[0]++, G_MWO_SEGMENT_8, jikan_tex_table[idx0]); - gSPSegment(gfx_pp[0]++, G_MWO_SEGMENT_9, jikan_tex_table[idx1]); - - - cKF_Si3_draw_SV_R_child(game, &anim->keyframe, &joint, &banti_draw_before, NULL, &callback_data, NULL); - } - - Matrix_pull(); + Matrix_pull(); } static void banti_draw_jikan(Gfx** gfx_pp, GAME_PLAY* play, int alpha) { - u8 a = alpha; - int now_hour; - int next_hour; + u8 a = alpha; + int now_hour; + int next_hour; - gDPSetPrimColor(gfx_pp[0]++, 0, a, 255, 255, 255, a); - gDPSetEnvColor(gfx_pp[0]++, 60, 25, 10, a); + gDPSetPrimColor(gfx_pp[0]++, 0, a, 255, 255, 255, a); + gDPSetEnvColor(gfx_pp[0]++, 60, 25, 10, a); - now_hour = banti.displayed_time.hour; - if (now_hour == 0 || now_hour == 12) { - now_hour = 12; - } - else if (now_hour > 11) { - now_hour -= 12; - } + now_hour = banti.displayed_time.hour; + if (now_hour == 0 || now_hour == 12) { + now_hour = 12; + } else if (now_hour > 11) { + now_hour -= 12; + } - next_hour = banti.next_time.hour; - if (next_hour == 0 || next_hour == 12) { - next_hour = 12; - } - else if (next_hour > 11) { - next_hour -= 12; - } + next_hour = banti.next_time.hour; + if (next_hour == 0 || next_hour == 12) { + next_hour = 12; + } else if (next_hour > 11) { + next_hour -= 12; + } - banti_draw_jikan_sub(gfx_pp, (GAME*)play, &banti.hour_upper_anim, now_hour / 10, next_hour / 10, TRUE, 0); - banti_draw_jikan_sub(gfx_pp, (GAME*)play, &banti.hour_lower_anim, now_hour % 10, next_hour % 10, FALSE, 1); + banti_draw_jikan_sub(gfx_pp, (GAME*)play, &banti.hour_upper_anim, now_hour / 10, next_hour / 10, TRUE, 0); + banti_draw_jikan_sub(gfx_pp, (GAME*)play, &banti.hour_lower_anim, now_hour % 10, next_hour % 10, FALSE, 1); - banti_draw_jikan_sub(gfx_pp, (GAME*)play, &banti.min_upper_anim, banti.displayed_time.min / 10, banti.next_time.min / 10, FALSE, 2); - banti_draw_jikan_sub(gfx_pp, (GAME*)play, &banti.min_lower_anim, banti.displayed_time.min % 10, banti.next_time.min % 10, FALSE, 3); + banti_draw_jikan_sub(gfx_pp, (GAME*)play, &banti.min_upper_anim, banti.displayed_time.min / 10, + banti.next_time.min / 10, FALSE, 2); + banti_draw_jikan_sub(gfx_pp, (GAME*)play, &banti.min_lower_anim, banti.displayed_time.min % 10, + banti.next_time.min % 10, FALSE, 3); } extern u8 clk_win_pm_tex_rgb_ia8[]; @@ -569,124 +534,112 @@ extern Gfx clk_win_maru2T_model[]; extern Gfx clk_win_ampmT_model[]; extern void banti_draw(GAME_PLAY* play) { - static u8* week_tex_table[lbRTC_WEEK] = { - clk_win_sun_tex_rgb_ia8, - clk_win_mon_tex_rgb_ia8, - clk_win_tue_tex_rgb_ia8, - clk_win_wed_tex_rgb_ia8, - clk_win_thu_tex_rgb_ia8, - clk_win_fri_tex_rgb_ia8, - clk_win_sat_tex_rgb_ia8 - }; + static u8* week_tex_table[lbRTC_WEEK] = { clk_win_sun_tex_rgb_ia8, clk_win_mon_tex_rgb_ia8, clk_win_tue_tex_rgb_ia8, + clk_win_wed_tex_rgb_ia8, clk_win_thu_tex_rgb_ia8, clk_win_fri_tex_rgb_ia8, + clk_win_sat_tex_rgb_ia8 }; - if (mFI_GET_TYPE(mFI_GetFieldId()) == mFI_FIELDTYPE_FG && mEv_CheckFirstIntro() != TRUE && banti.alpha > 0.01f) { - GRAPH* g = play->game.graph; - int poly_render = FALSE; - Mtx* m = (Mtx*)GRAPH_ALLOC_TYPE(g, Mtx, 1); + if (mFI_GET_TYPE(mFI_GetFieldId()) == mFI_FIELDTYPE_FG && mEv_CheckFirstIntro() != TRUE && banti.alpha > 0.01f) { + GRAPH* g = play->game.graph; + int poly_render = FALSE; + Mtx* m = (Mtx*)GRAPH_ALLOC_TYPE(g, Mtx, 1); - /* TODO: submenu mode enums */ - if (play->submenu.process_status != mSM_PROCESS_WAIT && play->submenu.mode > 2) { - poly_render = TRUE; + /* TODO: submenu mode enums */ + if (play->submenu.process_status != mSM_PROCESS_WAIT && play->submenu.mode > 2) { + poly_render = TRUE; + } + + OPEN_DISP(g); + + if (m != NULL) { + mFont_CulcOrthoMatrix(m); + + if (poly_render == TRUE) { + gSPMatrix(NOW_POLY_OPA_DISP++, m, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); + } else { + gSPMatrix(NOW_FONT_DISP++, m, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); + } + } + + Matrix_scale(16.0f, 16.0f, 16.0f, 0); + + if (banti.disp_left == TRUE) { + Matrix_translate(-184.0f, 0.0f, 0.0f, 1); + } + + { + Gfx** gfx_pp; + u8* am_pm_tex = banti.displayed_time.hour < 12 ? clk_win_am_tex_rgb_ia8 : clk_win_pm_tex_rgb_ia8; + int alpha; + u8 a; + Gfx* gfx; + u32 rendermode0; + u32 rendermode1; + + if (poly_render == TRUE) { + gfx = NOW_POLY_OPA_DISP; + } else { + gfx = NOW_FONT_DISP; + } + + gfx_pp = &gfx; + + gSPMatrix(gfx_pp[0]++, _Matrix_to_Mtx_new(g), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + alpha = banti.alpha * 255.0f; + if (banti.alpha >= 0.4f) { + rendermode0 = G_RM_PASS; + rendermode1 = G_RM_XLU_SURF2; + } else { + rendermode0 = G_RM_PASS; + rendermode1 = G_RM_CLD_SURF2; + } + + gSPDisplayList(gfx_pp[0]++, clk_win_mode); + gDPSetRenderMode(gfx_pp[0]++, rendermode0, rendermode1); + + if (banti.displayed_time.weekday == lbRTC_SUNDAY) { + u8 a = alpha; + + gDPSetPrimColor(gfx_pp[0]++, 0, a, 255, 255, 225, a); + gDPSetEnvColor(gfx_pp[0]++, 165, 30, 30, a); + } else { + u8 a = alpha; + + gDPSetPrimColor(gfx_pp[0]++, 0, a, 255, 255, 225, a); + gDPSetEnvColor(gfx_pp[0]++, 80, 40, 0, a); + } + + gSPSegment(gfx_pp[0]++, G_MWO_SEGMENT_9, week_tex_table[banti.displayed_time.weekday]); + gSPDisplayList(gfx_pp[0]++, clk_win_youbiT_model); + + if ((Common_Get(time.rtc_time).sec & 1) == 1) { + u8 a = alpha; + + gDPSetPrimColor(gfx_pp[0]++, 0, a, 215, 120, 0, a); + gDPSetEnvColor(gfx_pp[0]++, 70, 50, 50, a); + gSPDisplayList(gfx_pp[0]++, clk_win_maru2T_model); + } + + a = alpha; + gDPSetPrimColor(gfx_pp[0]++, 0, a, 255, 255, 120, a); + gDPSetEnvColor(gfx_pp[0]++, 70, 10, 10, a); + gSPSegment(gfx_pp[0]++, G_MWO_SEGMENT_A, am_pm_tex); + gSPDisplayList(gfx_pp[0]++, clk_win_ampmT_model); + + gDPSetPrimColor(gfx_pp[0]++, 0, a, 255, 255, 0, a); + gDPSetEnvColor(gfx_pp[0]++, 70, 50, 50, a); + gSPDisplayList(gfx_pp[0]++, clk_win_maruT_model); + + banti_draw_hiduke(&gfx, play, alpha); + banti_draw_jikan(&gfx, play, alpha); + + if (poly_render == TRUE) { + SET_POLY_OPA_DISP(*gfx_pp); + } else { + SET_FONT_DISP(*gfx_pp); + } + } + + CLOSE_DISP(g); } - - OPEN_DISP(g); - - if (m != NULL) { - mFont_CulcOrthoMatrix(m); - - if (poly_render == TRUE) { - gSPMatrix(NOW_POLY_OPA_DISP++, m, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); - } - else { - gSPMatrix(NOW_FONT_DISP++, m, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); - } - - } - - Matrix_scale(16.0f, 16.0f, 16.0f, 0); - - if (banti.disp_left == TRUE) { - Matrix_translate(-184.0f, 0.0f, 0.0f, 1); - } - - { - Gfx** gfx_pp; - u8* am_pm_tex = banti.displayed_time.hour < 12 ? clk_win_am_tex_rgb_ia8 : clk_win_pm_tex_rgb_ia8; - int alpha; - u8 a; - Gfx* gfx; - u32 rendermode0; - u32 rendermode1; - - if (poly_render == TRUE) { - gfx = NOW_POLY_OPA_DISP; - } - else { - gfx = NOW_FONT_DISP; - } - - gfx_pp = &gfx; - - gSPMatrix(gfx_pp[0]++, _Matrix_to_Mtx_new(g), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - - alpha = banti.alpha * 255.0f; - if (banti.alpha >= 0.4f) { - rendermode0 = G_RM_PASS; - rendermode1 = G_RM_XLU_SURF2; - } - else { - rendermode0 = G_RM_PASS; - rendermode1 = G_RM_CLD_SURF2; - } - - gSPDisplayList(gfx_pp[0]++, clk_win_mode); - gDPSetRenderMode(gfx_pp[0]++, rendermode0, rendermode1); - - if (banti.displayed_time.weekday == lbRTC_SUNDAY) { - u8 a = alpha; - - gDPSetPrimColor(gfx_pp[0]++, 0, a, 255, 255, 225, a); - gDPSetEnvColor(gfx_pp[0]++, 165, 30, 30, a); - } - else { - u8 a = alpha; - - gDPSetPrimColor(gfx_pp[0]++, 0, a, 255, 255, 225, a); - gDPSetEnvColor(gfx_pp[0]++, 80, 40, 0, a); - } - - gSPSegment(gfx_pp[0]++, G_MWO_SEGMENT_9, week_tex_table[banti.displayed_time.weekday]); - gSPDisplayList(gfx_pp[0]++, clk_win_youbiT_model); - - if ((Common_Get(time.rtc_time).sec & 1) == 1) { - u8 a = alpha; - - gDPSetPrimColor(gfx_pp[0]++, 0, a, 215, 120, 0, a); - gDPSetEnvColor(gfx_pp[0]++, 70, 50, 50, a); - gSPDisplayList(gfx_pp[0]++, clk_win_maru2T_model); - } - - a = alpha; - gDPSetPrimColor(gfx_pp[0]++, 0, a, 255, 255, 120, a); - gDPSetEnvColor(gfx_pp[0]++, 70, 10, 10, a); - gSPSegment(gfx_pp[0]++, G_MWO_SEGMENT_A, am_pm_tex); - gSPDisplayList(gfx_pp[0]++, clk_win_ampmT_model); - - gDPSetPrimColor(gfx_pp[0]++, 0, a, 255, 255, 0, a); - gDPSetEnvColor(gfx_pp[0]++, 70, 50, 50, a); - gSPDisplayList(gfx_pp[0]++, clk_win_maruT_model); - - banti_draw_hiduke(&gfx, play, alpha); - banti_draw_jikan(&gfx, play, alpha); - - if (poly_render == TRUE) { - SET_POLY_OPA_DISP(*gfx_pp); - } - else { - SET_FONT_DISP(*gfx_pp); - } - } - - CLOSE_DISP(g); - } } diff --git a/src/m_field_info.c b/src/m_field_info.c index 769aac77..40c953d1 100644 --- a/src/m_field_info.c +++ b/src/m_field_info.c @@ -8,886 +8,844 @@ #include "libultra/libultra.h" #include "m_player_lib.h" -static mCoBG_Collision_u l_edge_ut = { - { - 0, - 31, - 31, - 31, - 31, - 31, - mCoBG_ATTRIBUTE_GRASS0 - } -}; +static mCoBG_Collision_u l_edge_ut = { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS0 } }; typedef struct collision_keep_s { - int assumed_ut_x; - int assumed_ut_z; - int unk_C; + int assumed_ut_x; + int assumed_ut_z; + int unk_C; } mFI_col_keep_c; -static mFI_col_keep_c l_keepcld[mFI_NUM_COL_KEEP] = { - { 0xFF, 0xFF, 0 }, - { 0xFF, 0xFF, 0 }, - { 0xFF, 0xFF, 0 }, - { 0xFF, 0xFF, 0 }, - { 0xFF, 0xFF, 0 }, - { 0xFF, 0xFF, 0 }, - { 0xFF, 0xFF, 0 }, - { 0xFF, 0xFF, 0 }, - { 0xFF, 0xFF, 0 } -}; +static mFI_col_keep_c l_keepcld[mFI_NUM_COL_KEEP] = { { 0xFF, 0xFF, 0 }, { 0xFF, 0xFF, 0 }, { 0xFF, 0xFF, 0 }, + { 0xFF, 0xFF, 0 }, { 0xFF, 0xFF, 0 }, { 0xFF, 0xFF, 0 }, + { 0xFF, 0xFF, 0 }, { 0xFF, 0xFF, 0 }, { 0xFF, 0xFF, 0 } }; extern void mFI_ClearFieldData() { - g_fdinfo = NULL; + g_fdinfo = NULL; } extern int mFI_CheckFieldData() { - int res = FALSE; + int res = FALSE; - if (g_fdinfo != NULL) { - res = TRUE; - } + if (g_fdinfo != NULL) { + res = TRUE; + } - return res; + return res; } extern mFM_block_info_c* mFI_GetBlockTopP() { - mFM_block_info_c* block_info = NULL; - if (g_fdinfo != NULL) { - block_info = g_fdinfo->block_info; - } + mFM_block_info_c* block_info = NULL; + if (g_fdinfo != NULL) { + block_info = g_fdinfo->block_info; + } - return block_info; + return block_info; } extern mActor_name_t mFI_GetFieldId() { - mActor_name_t field_id = 0; + mActor_name_t field_id = 0; - if (mFI_CheckFieldData() == TRUE) { - field_id = g_fdinfo->field_id; - } + if (mFI_CheckFieldData() == TRUE) { + field_id = g_fdinfo->field_id; + } - return field_id; + return field_id; } extern int mFI_CheckShopFieldName(mActor_name_t field_name) { - int res = FALSE; + int res = FALSE; - if (mFI_GET_TYPE(field_name) == mFI_FIELD_ROOM0) { - switch (field_name) { - case mFI_FIELD_ROOM_SHOP0: - case mFI_FIELD_ROOM_SHOP1: - case mFI_FIELD_ROOM_SHOP2: - case mFI_FIELD_ROOM_SHOP3_1: - case mFI_FIELD_ROOM_SHOP3_2: - res = TRUE; - break; + if (mFI_GET_TYPE(field_name) == mFI_FIELD_ROOM0) { + switch (field_name) { + case mFI_FIELD_ROOM_SHOP0: + case mFI_FIELD_ROOM_SHOP1: + case mFI_FIELD_ROOM_SHOP2: + case mFI_FIELD_ROOM_SHOP3_1: + case mFI_FIELD_ROOM_SHOP3_2: + res = TRUE; + break; + } } - } - return res; + return res; } extern int mFI_CheckShop() { - int res = FALSE; + int res = FALSE; - if (mFI_CheckFieldData() == TRUE) { - res = mFI_CheckShopFieldName(mFI_GetFieldId()); - } + if (mFI_CheckFieldData() == TRUE) { + res = mFI_CheckShopFieldName(mFI_GetFieldId()); + } - return res; + return res; } extern u8 mFI_GetBlockXMax() { - u8 size = 0; + u8 size = 0; - if (mFI_CheckFieldData() == TRUE) { - size = g_fdinfo->block_x_max; - } - - return size; + if (mFI_CheckFieldData() == TRUE) { + size = g_fdinfo->block_x_max; + } + + return size; } extern u8 mFI_GetBlockZMax() { - u8 size = 0; + u8 size = 0; - if (mFI_CheckFieldData() == TRUE) { - size = g_fdinfo->block_z_max; - } - - return size; + if (mFI_CheckFieldData() == TRUE) { + size = g_fdinfo->block_z_max; + } + + return size; } extern f32 mFI_GetBlockWidth() { - static f32 player_room_wd[4] = { - 240.0f, - 320.0f, - 400.0f, - 400.0f - }; + static f32 player_room_wd[4] = { 240.0f, 320.0f, 400.0f, 400.0f }; - mActor_name_t field_id = mFI_GetFieldId(); - mActor_name_t house_owner_name = Common_Get(house_owner_name); + mActor_name_t field_id = mFI_GetFieldId(); + mActor_name_t house_owner_name = Common_Get(house_owner_name); - switch (mFI_GET_TYPE(field_id)) { - case mFI_FIELD_ROOM0: - { - switch (field_id) { - case mFI_FIELD_ROOM_POLICE_BOX: - return 400.0f; - case mFI_FIELD_ROOM_SHOP0: - return 320.0f; - case mFI_FIELD_ROOM_SHOP1: - return 440.0f; - case mFI_FIELD_ROOM_SHOP2: - return 440.0f; - case mFI_FIELD_ROOM_SHOP3_1: - return 480.0f; - case mFI_FIELD_ROOM_SHOP3_2: - return 480.0f; - case mFI_FIELD_ROOM_MUSEUM_ENTRANCE: - return 320.0f; - case mFI_FIELD_ROOM_MUSEUM_FOSSIL: - return 640.0f; - case mFI_FIELD_ROOM_MUSEUM_PAINTING: - return 640.0f; - case mFI_FIELD_ROOM_MUSEUM_FISH: - return 560.0f; - case mFI_FIELD_ROOM_MUSEUM_INSECT: - return 560.0f; - case mFI_FIELD_ROOM_NEEDLEWORK: - return 400.0f; - case mFI_FIELD_ROOM_LIGHTHOUSE: - return 240.0f; - case mFI_FIELD_ROOM_TENT: - return 240.0f; - default: - return 320.0f; - } + switch (mFI_GET_TYPE(field_id)) { + case mFI_FIELD_ROOM0: { + switch (field_id) { + case mFI_FIELD_ROOM_POLICE_BOX: + return 400.0f; + case mFI_FIELD_ROOM_SHOP0: + return 320.0f; + case mFI_FIELD_ROOM_SHOP1: + return 440.0f; + case mFI_FIELD_ROOM_SHOP2: + return 440.0f; + case mFI_FIELD_ROOM_SHOP3_1: + return 480.0f; + case mFI_FIELD_ROOM_SHOP3_2: + return 480.0f; + case mFI_FIELD_ROOM_MUSEUM_ENTRANCE: + return 320.0f; + case mFI_FIELD_ROOM_MUSEUM_FOSSIL: + return 640.0f; + case mFI_FIELD_ROOM_MUSEUM_PAINTING: + return 640.0f; + case mFI_FIELD_ROOM_MUSEUM_FISH: + return 560.0f; + case mFI_FIELD_ROOM_MUSEUM_INSECT: + return 560.0f; + case mFI_FIELD_ROOM_NEEDLEWORK: + return 400.0f; + case mFI_FIELD_ROOM_LIGHTHOUSE: + return 240.0f; + case mFI_FIELD_ROOM_TENT: + return 240.0f; + default: + return 320.0f; + } + } + + case mFI_FIELD_NPCROOM0: { + return mFI_BK_WORLDSIZE_X_F / 2.0f; + } + + case mFI_FIELD_PLAYER0_ROOM: { + u8 size; + + if (Save_Get(scene_no) == SCENE_COTTAGE_MY) { + return 400.0f; + } + + if (Save_Get(scene_no) == SCENE_MY_ROOM_LL2) { + return mFI_BK_WORLDSIZE_X_F / 2.0f; + } + + if (Save_Get(scene_no) >= SCENE_MY_ROOM_BASEMENT_S && Save_Get(scene_no) <= SCENE_MY_ROOM_BASEMENT_LL1) { + return 400.0f; + } + + size = Save_Get(homes[house_owner_name]).size_info.size; + if (size > 3) { + size = 3; + } + + return player_room_wd[size]; + } + + default: { + return mFI_BK_WORLDSIZE_X_F; + } } - - case mFI_FIELD_NPCROOM0: - { - return mFI_BK_WORLDSIZE_X_F / 2.0f; - } - - case mFI_FIELD_PLAYER0_ROOM: - { - u8 size; - - if (Save_Get(scene_no) == SCENE_COTTAGE_MY) { - return 400.0f; - } - - if (Save_Get(scene_no) == SCENE_MY_ROOM_LL2) { - return mFI_BK_WORLDSIZE_X_F / 2.0f; - } - - if (Save_Get(scene_no) >= SCENE_MY_ROOM_BASEMENT_S && Save_Get(scene_no) <= SCENE_MY_ROOM_BASEMENT_LL1) { - return 400.0f; - } - - size = Save_Get(homes[house_owner_name]).size_info.size; - if (size > 3) { - size = 3; - } - - return player_room_wd[size]; - } - - default: - { - return mFI_BK_WORLDSIZE_X_F; - } - } } extern f32 mFI_GetBlockHeight() { - static f32 player_room_ht[4] = { - 280.0f, - 360.0f, - 440.0f, - 440.0f - }; + static f32 player_room_ht[4] = { 280.0f, 360.0f, 440.0f, 440.0f }; - mActor_name_t field_id = mFI_GetFieldId(); - mActor_name_t house_owner_name = Common_Get(house_owner_name); + mActor_name_t field_id = mFI_GetFieldId(); + mActor_name_t house_owner_name = Common_Get(house_owner_name); - switch (mFI_GET_TYPE(field_id)) { - case mFI_FIELD_ROOM0: - { - switch (field_id) { - case mFI_FIELD_ROOM_POLICE_BOX: - return 400.0f; - case mFI_FIELD_ROOM_SHOP0: - return 320.0f; - case mFI_FIELD_ROOM_SHOP1: - return 320.0f; - case mFI_FIELD_ROOM_SHOP2: - return 480.0f; - case mFI_FIELD_ROOM_SHOP3_1: - return 560.0f; - case mFI_FIELD_ROOM_SHOP3_2: - return 560.0f; - case mFI_FIELD_ROOM_MUSEUM_ENTRANCE: - return 640.0f; - case mFI_FIELD_ROOM_MUSEUM_FOSSIL: - return 640.0f; - case mFI_FIELD_ROOM_MUSEUM_PAINTING: - return 640.0f; - case mFI_FIELD_ROOM_MUSEUM_FISH: - return 640.0f; - case mFI_FIELD_ROOM_MUSEUM_INSECT: - return 640.0f; - case mFI_FIELD_ROOM_NEEDLEWORK: - return 320.0f; - case mFI_FIELD_ROOM_LIGHTHOUSE: - return 260.0f; - case mFI_FIELD_ROOM_TENT: - return 260.0f; - default: - return 320.0f; - } + switch (mFI_GET_TYPE(field_id)) { + case mFI_FIELD_ROOM0: { + switch (field_id) { + case mFI_FIELD_ROOM_POLICE_BOX: + return 400.0f; + case mFI_FIELD_ROOM_SHOP0: + return 320.0f; + case mFI_FIELD_ROOM_SHOP1: + return 320.0f; + case mFI_FIELD_ROOM_SHOP2: + return 480.0f; + case mFI_FIELD_ROOM_SHOP3_1: + return 560.0f; + case mFI_FIELD_ROOM_SHOP3_2: + return 560.0f; + case mFI_FIELD_ROOM_MUSEUM_ENTRANCE: + return 640.0f; + case mFI_FIELD_ROOM_MUSEUM_FOSSIL: + return 640.0f; + case mFI_FIELD_ROOM_MUSEUM_PAINTING: + return 640.0f; + case mFI_FIELD_ROOM_MUSEUM_FISH: + return 640.0f; + case mFI_FIELD_ROOM_MUSEUM_INSECT: + return 640.0f; + case mFI_FIELD_ROOM_NEEDLEWORK: + return 320.0f; + case mFI_FIELD_ROOM_LIGHTHOUSE: + return 260.0f; + case mFI_FIELD_ROOM_TENT: + return 260.0f; + default: + return 320.0f; + } + } + + case mFI_FIELD_NPCROOM0: { + return mFI_BK_WORLDSIZE_X_F / 2.0f; + } + + case mFI_FIELD_PLAYER0_ROOM: { + u8 size; + + if (Save_Get(scene_no) == SCENE_COTTAGE_MY) { + return 440.0f; + } + + if (Save_Get(scene_no) == SCENE_MY_ROOM_LL2) { + return 360.0f; + } + + if (Save_Get(scene_no) >= SCENE_MY_ROOM_BASEMENT_S && Save_Get(scene_no) <= SCENE_MY_ROOM_BASEMENT_LL1) { + return 440.0f; + } + + size = Save_Get(homes[house_owner_name]).size_info.size; + if (size > 3) { + size = 3; + } + + return player_room_ht[size]; + } + + default: { + return mFI_BK_WORLDSIZE_X_F; + } } - - case mFI_FIELD_NPCROOM0: - { - return mFI_BK_WORLDSIZE_X_F / 2.0f; - } - - case mFI_FIELD_PLAYER0_ROOM: - { - u8 size; - - if (Save_Get(scene_no) == SCENE_COTTAGE_MY) { - return 440.0f; - } - - if (Save_Get(scene_no) == SCENE_MY_ROOM_LL2) { - return 360.0f; - } - - if (Save_Get(scene_no) >= SCENE_MY_ROOM_BASEMENT_S && Save_Get(scene_no) <= SCENE_MY_ROOM_BASEMENT_LL1) { - return 440.0f; - } - - size = Save_Get(homes[house_owner_name]).size_info.size; - if (size > 3) { - size = 3; - } - - return player_room_ht[size]; - } - - default: - { - return mFI_BK_WORLDSIZE_X_F; - } - } } extern int mFI_GetBlockNum(int block_x, int block_z) { - int num = block_x + block_z * mFI_GetBlockXMax(); + int num = block_x + block_z * mFI_GetBlockXMax(); - return num; + return num; } static int mFI_GetUtNum(int ut_x, int ut_z) { - return ut_x + ut_z * UT_X_NUM; + return ut_x + ut_z * UT_X_NUM; } extern int mFI_BlockCheck(int block_x, int block_z) { - int num = mFI_GetBlockNum(block_x, block_z); + int num = mFI_GetBlockNum(block_x, block_z); - if (block_x < 0 || block_x >= mFI_GetBlockXMax() || block_z < 0 || block_z >= mFI_GetBlockZMax() || g_fdinfo->block_info[num].bg_info.bg_id.combination_type == 292) { - return FALSE; - } + if (block_x < 0 || block_x >= mFI_GetBlockXMax() || block_z < 0 || block_z >= mFI_GetBlockZMax() || + g_fdinfo->block_info[num].bg_info.bg_id.combination_type == 292) { + return FALSE; + } - return TRUE; + return TRUE; } extern int mFI_UtNumCheck(int ut_x, int ut_z, int bx_max, int bz_max) { - int res = TRUE; - int max_x = (bx_max * UT_X_NUM); - int max_z = (bz_max * UT_Z_NUM); + int res = TRUE; + int max_x = (bx_max * UT_X_NUM); + int max_z = (bz_max * UT_Z_NUM); - if (ut_x < 0 || ut_x >= max_x || ut_z < 0 || ut_z >= max_z) { - res = FALSE; - } + if (ut_x < 0 || ut_x >= max_x || ut_z < 0 || ut_z >= max_z) { + res = FALSE; + } - return res; + return res; } static int mFI_WposCheck(xyz_t wpos) { - int bx; - int bz; + int bx; + int bz; - return mFI_Wpos2BlockNum(&bx, &bz, wpos); + return mFI_Wpos2BlockNum(&bx, &bz, wpos); } extern int mFI_WposX2UtNumX(f32 wpos_x) { - return (int)(wpos_x / mFI_UT_WORLDSIZE_X_F); + return (int)(wpos_x / mFI_UT_WORLDSIZE_X_F); } extern int mFI_WposZ2UtNumZ(f32 wpos_z) { - return (int)(wpos_z / mFI_UT_WORLDSIZE_Z_F); + return (int)(wpos_z / mFI_UT_WORLDSIZE_Z_F); } extern int mFI_Wpos2UtNum(int* ut_x, int* ut_z, xyz_t wpos) { - *ut_x = (int)(wpos.x / mFI_UT_WORLDSIZE_X_F); - *ut_z = (int)(wpos.z / mFI_UT_WORLDSIZE_Z_F); + *ut_x = (int)(wpos.x / mFI_UT_WORLDSIZE_X_F); + *ut_z = (int)(wpos.z / mFI_UT_WORLDSIZE_Z_F); - if ( - wpos.x < 0.0f || wpos.x > (mFI_GetBlockXMax() * mFI_BK_WORLDSIZE_X_F) || - wpos.z < 0.0f || wpos.z > (mFI_GetBlockZMax() * mFI_BK_WORLDSIZE_Z_F) - ) { - return FALSE; - } + if (wpos.x < 0.0f || wpos.x > (mFI_GetBlockXMax() * mFI_BK_WORLDSIZE_X_F) || wpos.z < 0.0f || + wpos.z > (mFI_GetBlockZMax() * mFI_BK_WORLDSIZE_Z_F)) { + return FALSE; + } - return TRUE; + return TRUE; } extern int mFI_UtNum2CenterWpos(xyz_t* wpos, int ut_x, int ut_z) { - wpos->x = (f32)ut_x * mFI_UT_WORLDSIZE_X_F; - wpos->z = (f32)ut_z * mFI_UT_WORLDSIZE_Z_F; + wpos->x = (f32)ut_x * mFI_UT_WORLDSIZE_X_F; + wpos->z = (f32)ut_z * mFI_UT_WORLDSIZE_Z_F; - wpos->x += mFI_UT_WORLDSIZE_HALF_X_F; - wpos->z += mFI_UT_WORLDSIZE_HALF_Z_F; + wpos->x += mFI_UT_WORLDSIZE_HALF_X_F; + wpos->z += mFI_UT_WORLDSIZE_HALF_Z_F; - return mFI_UtNumCheck(ut_x, ut_z, mFI_GetBlockXMax(), mFI_GetBlockZMax()); + return mFI_UtNumCheck(ut_x, ut_z, mFI_GetBlockXMax(), mFI_GetBlockZMax()); } extern int mFI_Wpos2UtCenterWpos(xyz_t* wpos, xyz_t src_pos) { - f32 x = (int)(src_pos.x / mFI_UT_WORLDSIZE_X_F) * mFI_UT_WORLDSIZE_X; - f32 z = (int)(src_pos.z / mFI_UT_WORLDSIZE_Z_F) * mFI_UT_WORLDSIZE_Z; + f32 x = (int)(src_pos.x / mFI_UT_WORLDSIZE_X_F) * mFI_UT_WORLDSIZE_X; + f32 z = (int)(src_pos.z / mFI_UT_WORLDSIZE_Z_F) * mFI_UT_WORLDSIZE_Z; - wpos->x = x + mFI_UT_WORLDSIZE_HALF_Z_F; - wpos->y = src_pos.y; - wpos->z = z + mFI_UT_WORLDSIZE_HALF_Z_F; + wpos->x = x + mFI_UT_WORLDSIZE_HALF_Z_F; + wpos->y = src_pos.y; + wpos->z = z + mFI_UT_WORLDSIZE_HALF_Z_F; - return mFI_WposCheck(src_pos); + return mFI_WposCheck(src_pos); } extern int mFI_Wpos2UtNum_inBlock(int* ut_x, int* ut_z, xyz_t wpos) { - int res = FALSE; + int res = FALSE; - if ( - wpos.x >= 0.0f && wpos.x < ((f32)mFI_GetBlockXMax() * mFI_BK_WORLDSIZE_X_F) && - wpos.z >= 0.0f && wpos.z < ((f32)mFI_GetBlockZMax() * mFI_BK_WORLDSIZE_Z_F) - ) { + if (wpos.x >= 0.0f && wpos.x < ((f32)mFI_GetBlockXMax() * mFI_BK_WORLDSIZE_X_F) && wpos.z >= 0.0f && + wpos.z < ((f32)mFI_GetBlockZMax() * mFI_BK_WORLDSIZE_Z_F)) { + ut_x[0] = (int)(wpos.x / mFI_UT_WORLDSIZE_X_F); + ut_z[0] = (int)(wpos.z / mFI_UT_WORLDSIZE_Z_F); + + ut_x[0] &= 0xF; + ut_z[0] &= 0xF; + + res = TRUE; + } else { + ut_x[0] = 0; + ut_z[0] = 0; + } + + return res; +} + +extern int mFI_Wpos2BlockNum(int* bx, int* bz, xyz_t wpos) { + bx[0] = (int)(wpos.x / mFI_BK_WORLDSIZE_X_F); + bz[0] = (int)(wpos.z / mFI_BK_WORLDSIZE_Z_F); + + return mFI_BlockCheck(*bx, *bz); +} + +extern int mFI_Wpos2BkandUtNuminBlock(int* bx, int* bz, int* ut_x, int* ut_z, xyz_t wpos) { + bx[0] = (int)(wpos.x / mFI_BK_WORLDSIZE_X_F); + bz[0] = (int)(wpos.z / mFI_BK_WORLDSIZE_Z_F); ut_x[0] = (int)(wpos.x / mFI_UT_WORLDSIZE_X_F); ut_z[0] = (int)(wpos.z / mFI_UT_WORLDSIZE_Z_F); ut_x[0] &= 0xF; ut_z[0] &= 0xF; - res = TRUE; - } - else { - ut_x[0] = 0; - ut_z[0] = 0; - } - - return res; -} - -extern int mFI_Wpos2BlockNum(int* bx, int* bz, xyz_t wpos) { - bx[0] = (int)(wpos.x / mFI_BK_WORLDSIZE_X_F); - bz[0] = (int)(wpos.z / mFI_BK_WORLDSIZE_Z_F); - - return mFI_BlockCheck(*bx, *bz); -} - -extern int mFI_Wpos2BkandUtNuminBlock(int* bx, int* bz, int* ut_x, int* ut_z, xyz_t wpos) { - bx[0] = (int)(wpos.x / mFI_BK_WORLDSIZE_X_F); - bz[0] = (int)(wpos.z / mFI_BK_WORLDSIZE_Z_F); - ut_x[0] = (int)(wpos.x / mFI_UT_WORLDSIZE_X_F); - ut_z[0] = (int)(wpos.z / mFI_UT_WORLDSIZE_Z_F); - - ut_x[0] &= 0xF; - ut_z[0] &= 0xF; - - return mFI_BlockCheck(*bx, *bz); + return mFI_BlockCheck(*bx, *bz); } static int mFI_UtNum2BlockNum(int* bx, int* bz, int ut_x, int ut_z) { - if (ut_x < 0) { - ut_x -= (UT_X_NUM - 1); - } + if (ut_x < 0) { + ut_x -= (UT_X_NUM - 1); + } - if (ut_z < 0) { - ut_z -= (UT_Z_NUM - 1); - } + if (ut_z < 0) { + ut_z -= (UT_Z_NUM - 1); + } - bx[0] = ut_x / UT_X_NUM; - bz[0] = ut_z / UT_Z_NUM; + bx[0] = ut_x / UT_X_NUM; + bz[0] = ut_z / UT_Z_NUM; - return mFI_BlockCheck(bx[0], bz[0]); + return mFI_BlockCheck(bx[0], bz[0]); } static int mFI_GetUtNumInBK(int* bk_ut_x, int* bk_ut_z, int ut_x, int ut_z) { - int res = mFI_UtNumCheck(ut_x, ut_z, mFI_GetBlockXMax(), mFI_GetBlockZMax()); + int res = mFI_UtNumCheck(ut_x, ut_z, mFI_GetBlockXMax(), mFI_GetBlockZMax()); - if (res) { - bk_ut_x[0] = ut_x & 0xF; - bk_ut_z[0] = ut_z & 0xF; - } - else { - bk_ut_x[0] = 0; - bk_ut_z[0] = 0; - } + if (res) { + bk_ut_x[0] = ut_x & 0xF; + bk_ut_z[0] = ut_z & 0xF; + } else { + bk_ut_x[0] = 0; + bk_ut_z[0] = 0; + } - return res; + return res; } extern int mFI_WpostoLposInBK(xyz_t* lpos, xyz_t wpos) { - int bx; - int bz; - int res = mFI_Wpos2BlockNum(&bx, &bz, wpos); + int bx; + int bz; + int res = mFI_Wpos2BlockNum(&bx, &bz, wpos); - lpos->x = wpos.x - ((f32)bx * mFI_BK_WORLDSIZE_X_F); - lpos->y = wpos.y; - lpos->z = wpos.z - ((f32)bz * mFI_BK_WORLDSIZE_Z_F); - return res; + lpos->x = wpos.x - ((f32)bx * mFI_BK_WORLDSIZE_X_F); + lpos->y = wpos.y; + lpos->z = wpos.z - ((f32)bz * mFI_BK_WORLDSIZE_Z_F); + return res; } extern int mFI_LposInBKtoWpos(xyz_t* wpos, xyz_t lpos, int bx, int bz) { - wpos->x = lpos.x + (f32)(bx * mFI_BK_WORLDSIZE_X); - wpos->y = lpos.y; - wpos->z = lpos.z + (f32)(bz * mFI_BK_WORLDSIZE_Z); + wpos->x = lpos.x + (f32)(bx * mFI_BK_WORLDSIZE_X); + wpos->y = lpos.y; + wpos->z = lpos.z + (f32)(bz * mFI_BK_WORLDSIZE_Z); - return mFI_BlockCheck(bx, bz); + return mFI_BlockCheck(bx, bz); } extern int mFI_ScrollCheck(xyz_t wpos, u8 dir) { - int bx; - int bz; - - if (mFI_Wpos2BlockNum(&bx, &bz, wpos) == FALSE) { - return FALSE; - } + int bx; + int bz; - switch (dir) { - case mFI_MOVEDIR_RIGHT: - bx++; - break; - case mFI_MOVEDIR_LEFT: - bx--; - break; - case mFI_MOVEDIR_UP: - bz--; - break; - case mFI_MOVEDIR_DOWN: - bz++; - break; - default: - return FALSE; - } + if (mFI_Wpos2BlockNum(&bx, &bz, wpos) == FALSE) { + return FALSE; + } - return mFI_BlockCheck(bx, bz); + switch (dir) { + case mFI_MOVEDIR_RIGHT: + bx++; + break; + case mFI_MOVEDIR_LEFT: + bx--; + break; + case mFI_MOVEDIR_UP: + bz--; + break; + case mFI_MOVEDIR_DOWN: + bz++; + break; + default: + return FALSE; + } + + return mFI_BlockCheck(bx, bz); } extern int mFI_BkNum2WposXZ(f32* wpos_x, f32* wpos_z, int bx, int bz) { - int res = FALSE; + int res = FALSE; - wpos_x[0] = (f32)(bx * mFI_BK_WORLDSIZE_X); - wpos_z[0] = (f32)(bz * mFI_BK_WORLDSIZE_Z); + wpos_x[0] = (f32)(bx * mFI_BK_WORLDSIZE_X); + wpos_z[0] = (f32)(bz * mFI_BK_WORLDSIZE_Z); - if (mFI_CheckFieldData() == TRUE) { - res = mFI_BlockCheck(bx, bz); - } + if (mFI_CheckFieldData() == TRUE) { + res = mFI_BlockCheck(bx, bz); + } - return res; + return res; } extern void mFI_UtNum2PosXZInBk(f32* pos_x, f32* pos_z, int ut_x, int ut_z) { - pos_x[0] = (f32)(ut_x * mFI_UT_WORLDSIZE_X); - pos_z[0] = (f32)(ut_z * mFI_UT_WORLDSIZE_Z); + pos_x[0] = (f32)(ut_x * mFI_UT_WORLDSIZE_X); + pos_z[0] = (f32)(ut_z * mFI_UT_WORLDSIZE_Z); } extern void mFI_BkandUtNum2Wpos(xyz_t* wpos, int bx, int bz, int ut_x, int ut_z) { - f32 wpos_x; - f32 wpos_z; - f32 bpos_x; - f32 bpos_z; + f32 wpos_x; + f32 wpos_z; + f32 bpos_x; + f32 bpos_z; - mFI_BkNum2WposXZ(&wpos_x, &wpos_z, bx, bz); - mFI_UtNum2PosXZInBk(&bpos_x, &bpos_z, ut_x, ut_z); + mFI_BkNum2WposXZ(&wpos_x, &wpos_z, bx, bz); + mFI_UtNum2PosXZInBk(&bpos_x, &bpos_z, ut_x, ut_z); - wpos->x = wpos_x + bpos_x; - wpos->y = 0.0f; - wpos->z = wpos_z + bpos_z; + wpos->x = wpos_x + bpos_x; + wpos->y = 0.0f; + wpos->z = wpos_z + bpos_z; } extern void mFI_BkandUtNum2CenterWpos(xyz_t* wpos, int bx, int bz, int ut_x, int ut_z) { - mFI_BkandUtNum2Wpos(wpos, bx, bz, ut_x, ut_z); + mFI_BkandUtNum2Wpos(wpos, bx, bz, ut_x, ut_z); - wpos->x += mFI_UT_WORLDSIZE_HALF_X_F; - wpos->z += mFI_UT_WORLDSIZE_HALF_Z_F; + wpos->x += mFI_UT_WORLDSIZE_HALF_X_F; + wpos->z += mFI_UT_WORLDSIZE_HALF_Z_F; } extern mFM_field_draw_info_c* mFI_BGDisplayListTop() { - return g_fdinfo->bg_draw_info; + return g_fdinfo->bg_draw_info; } extern mFM_field_pal_c* mFI_GetFieldPal() { - return &g_fdinfo->field_palette; + return &g_fdinfo->field_palette; } extern int mFI_GetPlayerHouseFloorNo(int scene) { - int floor = -1; + int floor = -1; - switch (scene) { - case SCENE_MY_ROOM_S: - case SCENE_MY_ROOM_M: - case SCENE_MY_ROOM_L: - case SCENE_MY_ROOM_LL1: - case SCENE_COTTAGE_MY: - floor = 0; - break; + switch (scene) { + case SCENE_MY_ROOM_S: + case SCENE_MY_ROOM_M: + case SCENE_MY_ROOM_L: + case SCENE_MY_ROOM_LL1: + case SCENE_COTTAGE_MY: + floor = 0; + break; - case SCENE_MY_ROOM_LL2: - floor = 1; - break; + case SCENE_MY_ROOM_LL2: + floor = 1; + break; - case SCENE_MY_ROOM_BASEMENT_S: - case SCENE_MY_ROOM_BASEMENT_M: - case SCENE_MY_ROOM_BASEMENT_L: - case SCENE_MY_ROOM_BASEMENT_LL1: - floor = 2; - break; - } + case SCENE_MY_ROOM_BASEMENT_S: + case SCENE_MY_ROOM_BASEMENT_M: + case SCENE_MY_ROOM_BASEMENT_L: + case SCENE_MY_ROOM_BASEMENT_LL1: + floor = 2; + break; + } - return floor; + return floor; } extern int mFI_GetNowPlayerHouseFloorNo() { - return mFI_GetPlayerHouseFloorNo(Save_Get(scene_no)); + return mFI_GetPlayerHouseFloorNo(Save_Get(scene_no)); } typedef struct register_bg_info_s { - int dma_active; - int bg_num; - u32 unused_rom_start; - u32 unused_rom_size; + int dma_active; + int bg_num; + u32 unused_rom_start; + u32 unused_rom_size; } mFI_register_bg_info_c; static mFI_register_bg_info_c l_register_bg_info[mFM_VISIBLE_BLOCK_NUM]; static void mFI_ClearRegisterBgInfo(mFI_register_bg_info_c* bg_info) { - bg_info->dma_active = FALSE; - bg_info->bg_num = -1; - bg_info->unused_rom_start = 0; - bg_info->unused_rom_size = 0; + bg_info->dma_active = FALSE; + bg_info->bg_num = -1; + bg_info->unused_rom_start = 0; + bg_info->unused_rom_size = 0; } static void mFI_ClearRegisterBgInfoIdx(int idx) { - mFI_ClearRegisterBgInfo(&l_register_bg_info[idx]); + mFI_ClearRegisterBgInfo(&l_register_bg_info[idx]); } extern void mFI_InitRegisterBgInfo() { - int i; + int i; - for (i = 0; i < mFM_VISIBLE_BLOCK_NUM; i++) { - mFI_ClearRegisterBgInfo(&l_register_bg_info[i]); - } + for (i = 0; i < mFM_VISIBLE_BLOCK_NUM; i++) { + mFI_ClearRegisterBgInfo(&l_register_bg_info[i]); + } } static int mFI_CheckFreeRegisterBgInfo(mFI_register_bg_info_c* bg_info) { - int res = FALSE; + int res = FALSE; - if (bg_info->bg_num == -1) { - res = TRUE; - } + if (bg_info->bg_num == -1) { + res = TRUE; + } - return res; + return res; } static int mFI_GetFreeRegisterBgInfo() { - mFI_register_bg_info_c* bg_info = l_register_bg_info; - int res = -1; - int i; + mFI_register_bg_info_c* bg_info = l_register_bg_info; + int res = -1; + int i; - for (i = 0; i < mFM_VISIBLE_BLOCK_NUM; i++) { - if (mFI_CheckFreeRegisterBgInfo(bg_info)) { - res = i; - break; + for (i = 0; i < mFM_VISIBLE_BLOCK_NUM; i++) { + if (mFI_CheckFreeRegisterBgInfo(bg_info)) { + res = i; + break; + } + + bg_info++; } - - bg_info++; - } - return res; + return res; } static void mFI_SetRegisterBgInfo(int bg_num, u32 rom_start, u32 rom_size) { - mFI_register_bg_info_c* bg_info = l_register_bg_info + bg_num; + mFI_register_bg_info_c* bg_info = l_register_bg_info + bg_num; - bg_info->dma_active = TRUE; - bg_info->bg_num = bg_num; - bg_info->unused_rom_start = rom_start; - bg_info->unused_rom_size = rom_size; + bg_info->dma_active = TRUE; + bg_info->bg_num = bg_num; + bg_info->unused_rom_start = rom_start; + bg_info->unused_rom_size = rom_size; } static int mFI_CheckFinishBgDma(int bg_num) { - int res = FALSE; + int res = FALSE; - if (l_register_bg_info[bg_num].dma_active == FALSE && l_register_bg_info[bg_num].bg_num != -1) { - res = TRUE; - } + if (l_register_bg_info[bg_num].dma_active == FALSE && l_register_bg_info[bg_num].bg_num != -1) { + res = TRUE; + } - return res; + return res; } static void mFI_DmaBg_sub(mFI_register_bg_info_c* bg_info) { - g_fdinfo->bg_draw_info[bg_info->bg_num].dma_loaded = TRUE; + g_fdinfo->bg_draw_info[bg_info->bg_num].dma_loaded = TRUE; } static void mFI_DmaBg() { - mFI_register_bg_info_c* bg_info = l_register_bg_info; - int i; + mFI_register_bg_info_c* bg_info = l_register_bg_info; + int i; - for (i = 0; i < mFM_VISIBLE_BLOCK_NUM; i++) { - if (bg_info->dma_active == TRUE) { - mFI_DmaBg_sub(bg_info); - mFI_BornItemON(); - Common_Set(remove_cut_tree_info_bitfield, Common_Get(remove_cut_tree_info_bitfield) | (1 << bg_info->bg_num)); - bg_info->dma_active = FALSE; - - break; + for (i = 0; i < mFM_VISIBLE_BLOCK_NUM; i++) { + if (bg_info->dma_active == TRUE) { + mFI_DmaBg_sub(bg_info); + mFI_BornItemON(); + Common_Set(remove_cut_tree_info_bitfield, + Common_Get(remove_cut_tree_info_bitfield) | (1 << bg_info->bg_num)); + bg_info->dma_active = FALSE; + + break; + } + + bg_info++; } - - bg_info++; - } } extern int mFI_CheckBgDma(int bx, int bz) { - int res = FALSE; - int i; - - if (mFI_CheckFieldData() == TRUE) { - mFM_field_draw_info_c* draw_info = mFI_BGDisplayListTop(); + int res = FALSE; + int i; - for (i = 0; i < mFM_VISIBLE_BLOCK_NUM; i++) { - if (draw_info->block_x == bx && draw_info->block_z == bz && draw_info->dma_loaded) { - res = TRUE; + if (mFI_CheckFieldData() == TRUE) { + mFM_field_draw_info_c* draw_info = mFI_BGDisplayListTop(); - break; - } - - draw_info++; + for (i = 0; i < mFM_VISIBLE_BLOCK_NUM; i++) { + if (draw_info->block_x == bx && draw_info->block_z == bz && draw_info->dma_loaded) { + res = TRUE; + + break; + } + + draw_info++; + } } - } - return res; + return res; } extern f32 mFI_UtNum2BaseHeight(int ut_x, int ut_z) { - int bx; - int bz; - int num; + int bx; + int bz; + int num; - if (mFI_UtNum2BlockNum(&bx, &bz, ut_x, ut_z) == FALSE) { - return 10000.0f; - } + if (mFI_UtNum2BlockNum(&bx, &bz, ut_x, ut_z) == FALSE) { + return 10000.0f; + } - num = mFI_GetBlockNum(bx, bz); - return (f32)((int)g_fdinfo->block_info[num].bg_info.bg_id.height * (3 * mFI_UT_WORLDSIZE_X)); + num = mFI_GetBlockNum(bx, bz); + return (f32)((int)g_fdinfo->block_info[num].bg_info.bg_id.height * (3 * mFI_UT_WORLDSIZE_X)); } extern f32 mFI_BkNum2BaseHeight(int bx, int bz) { - int num; + int num; - if (mFI_BlockCheck(bx, bz) == FALSE) { - return 10000.0f; - } + if (mFI_BlockCheck(bx, bz) == FALSE) { + return 10000.0f; + } - num = mFI_GetBlockNum(bx, bz); - return (f32)((int)g_fdinfo->block_info[num].bg_info.bg_id.height * (3 * mFI_UT_WORLDSIZE_X)); + num = mFI_GetBlockNum(bx, bz); + return (f32)((int)g_fdinfo->block_info[num].bg_info.bg_id.height * (3 * mFI_UT_WORLDSIZE_X)); } extern u8 mFI_BkNum2BlockType(int bx, int bz) { - u8 type = 39; + u8 type = 39; - if (mFI_CheckFieldData() && bx >= 0 && bx < BLOCK_X_NUM && bz >= 0 && bz < BLOCK_Z_NUM) { - int idx = (bz * BLOCK_X_NUM) + bx; - - type = g_block_type_p[idx]; - } + if (mFI_CheckFieldData() && bx >= 0 && bx < BLOCK_X_NUM && bz >= 0 && bz < BLOCK_Z_NUM) { + int idx = (bz * BLOCK_X_NUM) + bx; - return type; + type = g_block_type_p[idx]; + } + + return type; } // 25% static int mFI_GetPuleTypeIdx(u8 type) { - u32 kind = mRF_Type2BlockInfo(type); - int idx = -1; + u32 kind = mRF_Type2BlockInfo(type); + int idx = -1; - if ((kind & mRF_BLOCKKIND_POOL) == mRF_BLOCKKIND_POOL) { - idx = type - 69; - } + if ((kind & mRF_BLOCKKIND_POOL) == mRF_BLOCKKIND_POOL) { + idx = type - 69; + } - return idx; + return idx; } extern int mFI_GetPuleIdx() { - int bx; - int bz; - u8 type; + int bx; + int bz; + u8 type; - mFI_BlockKind2BkNum(&bx, &bz, mRF_BLOCKKIND_POOL); - type = mFI_BkNum2BlockType(bx, bz); - return mFI_GetPuleTypeIdx(type); + mFI_BlockKind2BkNum(&bx, &bz, mRF_BLOCKKIND_POOL); + type = mFI_BkNum2BlockType(bx, bz); + return mFI_GetPuleTypeIdx(type); } extern u32 mFI_BkNum2BlockKind(int bx, int bz) { - u32 kind = mRF_BLOCKKIND_NONE; + u32 kind = mRF_BLOCKKIND_NONE; - if (mFI_CheckFieldData() && mFI_BlockCheck(bx, bz)) { - int num = mFI_GetBlockNum(bx, bz); + if (mFI_CheckFieldData() && mFI_BlockCheck(bx, bz)) { + int num = mFI_GetBlockNum(bx, bz); - kind = g_fdinfo->block_info[num].bg_info.block_kind; - } + kind = g_fdinfo->block_info[num].bg_info.block_kind; + } - return kind; + return kind; } extern int mFI_CheckBlockKind(int bx, int bz, u32 block_kind) { - int res = FALSE; - u32 kind = mFI_BkNum2BlockKind(bx, bz); + int res = FALSE; + u32 kind = mFI_BkNum2BlockKind(bx, bz); - kind &= block_kind; - if (block_kind == kind) { - res = TRUE; - } + kind &= block_kind; + if (block_kind == kind) { + res = TRUE; + } - return res; + return res; } extern int mFI_CheckBlockKind_OR(int bx, int bz, u32 block_kind_OR) { - int res = FALSE; - u32 kind = mFI_BkNum2BlockKind(bx, bz); - - kind &= block_kind_OR; - if (kind != mRF_BLOCKKIND_NONE) { - res = TRUE; - } + int res = FALSE; + u32 kind = mFI_BkNum2BlockKind(bx, bz); - return res; + kind &= block_kind_OR; + if (kind != mRF_BLOCKKIND_NONE) { + res = TRUE; + } + + return res; } extern int mFI_BlockKind2BkNum(int* bx, int* bz, u32 kind) { - u32* kind_p = (u32*)g_block_kind_p; - int res = FALSE; - int i; + u32* kind_p = (u32*)g_block_kind_p; + int res = FALSE; + int i; - bx[0] = 0; - bz[0] = 0; - - if (kind_p != NULL) { - for (i = 0; i < BLOCK_TOTAL_NUM; i++) { - u32 k = kind_p[0]; + bx[0] = 0; + bz[0] = 0; - k &= kind; - if (kind == k) { - bx[0] = i % BLOCK_X_NUM; - bz[0] = i / BLOCK_X_NUM; - res = TRUE; + if (kind_p != NULL) { + for (i = 0; i < BLOCK_TOTAL_NUM; i++) { + u32 k = kind_p[0]; - break; - } + k &= kind; + if (kind == k) { + bx[0] = i % BLOCK_X_NUM; + bz[0] = i / BLOCK_X_NUM; + res = TRUE; - kind_p++; + break; + } + + kind_p++; + } } - } - return res; + return res; } extern void mFI_GetSpecialBlockNum(int* block_pos, u32* kinds, int count) { - int i; + int i; - for (i = 0; i < count; i++) { - mFI_BlockKind2BkNum(block_pos + 0, block_pos + 1, kinds[0]); - kinds++; - block_pos += 2; - } + for (i = 0; i < count; i++) { + mFI_BlockKind2BkNum(block_pos + 0, block_pos + 1, kinds[0]); + kinds++; + block_pos += 2; + } } extern void mFI_GetIslandBlockNumX(int* island_x_blocks) { - u32* kind_p = (u32*)g_block_kind_p; - int found_num = 0; - int i; + u32* kind_p = (u32*)g_block_kind_p; + int found_num = 0; + int i; - if (island_x_blocks != NULL && kind_p != NULL) { - bzero(island_x_blocks, 2 * sizeof(int)); + if (island_x_blocks != NULL && kind_p != NULL) { + bzero(island_x_blocks, 2 * sizeof(int)); - kind_p += mISL_BLOCK_Z * BLOCK_X_NUM; - for (i = 0; i < BLOCK_X_NUM; i++) { - if ((kind_p[0] & mRF_BLOCKKIND_ISLAND) == mRF_BLOCKKIND_ISLAND) { - island_x_blocks[0] = i; - island_x_blocks++; - found_num++; - } + kind_p += mISL_BLOCK_Z * BLOCK_X_NUM; + for (i = 0; i < BLOCK_X_NUM; i++) { + if ((kind_p[0] & mRF_BLOCKKIND_ISLAND) == mRF_BLOCKKIND_ISLAND) { + island_x_blocks[0] = i; + island_x_blocks++; + found_num++; + } - if (found_num >= mISL_FG_BLOCK_X_NUM) { - break; - } + if (found_num >= mISL_FG_BLOCK_X_NUM) { + break; + } - kind_p++; + kind_p++; + } } - } } extern mCoBG_Collision_u* mFI_GetBkNum2ColTop(int bx, int bz) { - mCoBG_Collision_u* col = NULL; + mCoBG_Collision_u* col = NULL; - if (mFI_CheckFieldData() && mFI_BlockCheck(bx, bz)) { - int num = mFI_GetBlockNum(bx, bz); + if (mFI_CheckFieldData() && mFI_BlockCheck(bx, bz)) { + int num = mFI_GetBlockNum(bx, bz); - col = (mCoBG_Collision_u*)g_fdinfo->block_info[num].bg_info.collision; - } + col = (mCoBG_Collision_u*)g_fdinfo->block_info[num].bg_info.collision; + } - return col; + return col; } extern mCoBG_Collision_u* mFI_UtNum2UtCol(int ut_x, int ut_z) { - int b_ut_x; - int b_ut_z; - int bx; - int bz; + int b_ut_x; + int b_ut_z; + int bx; + int bz; - if (mFI_UtNumCheck(ut_x, ut_z, mFI_GetBlockXMax(), mFI_GetBlockZMax()) == FALSE) { - return &l_edge_ut; - } - else if (mFI_UtNum2BlockNum(&bx, &bz, ut_x, ut_z) == FALSE) { - return &l_edge_ut; - } - else { - mFM_bg_info_c* bg_info; - mCoBG_Collision_u* col; - int num; - int idx; + if (mFI_UtNumCheck(ut_x, ut_z, mFI_GetBlockXMax(), mFI_GetBlockZMax()) == FALSE) { + return &l_edge_ut; + } else if (mFI_UtNum2BlockNum(&bx, &bz, ut_x, ut_z) == FALSE) { + return &l_edge_ut; + } else { + mFM_bg_info_c* bg_info; + mCoBG_Collision_u* col; + int num; + int idx; - mFI_GetUtNumInBK(&b_ut_x, &b_ut_z, ut_x, ut_z); - num = mFI_GetBlockNum(bx, bz); - idx = b_ut_z * UT_X_NUM + b_ut_x; - col = (mCoBG_Collision_u*)g_fdinfo->block_info[num].bg_info.collision; - col += idx; - return col; - } + mFI_GetUtNumInBK(&b_ut_x, &b_ut_z, ut_x, ut_z); + num = mFI_GetBlockNum(bx, bz); + idx = b_ut_z * UT_X_NUM + b_ut_x; + col = (mCoBG_Collision_u*)g_fdinfo->block_info[num].bg_info.collision; + col += idx; + return col; + } } extern void mFI_ClearColKeep() { - int i; + int i; - for (i = 0; i < mFI_NUM_COL_KEEP; i++) { - l_keepcld[i].assumed_ut_x = 0xFF; - l_keepcld[i].assumed_ut_z = 0xFF; - l_keepcld[i].unk_C = 0; - } + for (i = 0; i < mFI_NUM_COL_KEEP; i++) { + l_keepcld[i].assumed_ut_x = 0xFF; + l_keepcld[i].assumed_ut_z = 0xFF; + l_keepcld[i].unk_C = 0; + } } /* @unused mFI_GetUtColGroup */ @@ -895,723 +853,699 @@ extern void mFI_ClearColKeep() { /* @unused mFI_UtNum2UtColKeep */ extern mCoBG_Collision_u* mFI_GetUnitCol(xyz_t wpos) { - int ut_x; - int ut_z; + int ut_x; + int ut_z; - if (mFI_Wpos2UtNum(&ut_x, &ut_z, wpos) == FALSE) { - return &l_edge_ut; - } - else { - return mFI_UtNum2UtCol(ut_x, ut_z); - } + if (mFI_Wpos2UtNum(&ut_x, &ut_z, wpos) == FALSE) { + return &l_edge_ut; + } else { + return mFI_UtNum2UtCol(ut_x, ut_z); + } } extern u8 mFI_UtNum2UtKeepH(int ut_x, int ut_z) { - int b_ut_x; - int b_ut_z; - int bx; - int bz; + int b_ut_x; + int b_ut_z; + int bx; + int bz; - if (mFI_UtNumCheck(ut_x, ut_z, mFI_GetBlockXMax(), mFI_GetBlockZMax()) == FALSE) { - return mCoBG_HEIGHT_MAX; - } - else if (mFI_UtNum2BlockNum(&bx, &bz, ut_x, ut_z) == FALSE) { - return mCoBG_HEIGHT_MAX; - } - else { - mFM_block_info_c* block; - u8* keep_p; - int num; - int idx; + if (mFI_UtNumCheck(ut_x, ut_z, mFI_GetBlockXMax(), mFI_GetBlockZMax()) == FALSE) { + return mCoBG_HEIGHT_MAX; + } else if (mFI_UtNum2BlockNum(&bx, &bz, ut_x, ut_z) == FALSE) { + return mCoBG_HEIGHT_MAX; + } else { + mFM_block_info_c* block; + u8* keep_p; + int num; + int idx; - mFI_GetUtNumInBK(&b_ut_x, &b_ut_z, ut_x, ut_z); - num = mFI_GetBlockNum(bx, bz); - keep_p = (u8*)g_fdinfo->block_info[num].bg_info.keep_h; - idx = b_ut_z * UT_Z_NUM + b_ut_x; - keep_p += b_ut_z * UT_Z_NUM + b_ut_x; - return keep_p[0]; - } + mFI_GetUtNumInBK(&b_ut_x, &b_ut_z, ut_x, ut_z); + num = mFI_GetBlockNum(bx, bz); + keep_p = (u8*)g_fdinfo->block_info[num].bg_info.keep_h; + idx = b_ut_z * UT_Z_NUM + b_ut_x; + keep_p += b_ut_z * UT_Z_NUM + b_ut_x; + return keep_p[0]; + } } extern mFM_bg_sound_source_c* mFI_GetSoundSourcePBlockNum(int bx, int bz) { - mFM_bg_sound_source_c* ss = NULL; + mFM_bg_sound_source_c* ss = NULL; - if (mFI_BlockCheck(bx, bz)) { - int num = mFI_GetBlockNum(bx, bz); - ss = g_fdinfo->block_info[num].bg_info.sound_source; - } + if (mFI_BlockCheck(bx, bz)) { + int num = mFI_GetBlockNum(bx, bz); + ss = g_fdinfo->block_info[num].bg_info.sound_source; + } - return ss; + return ss; } extern Gfx* mFI_GetBGDisplayListRom(int bx, int bz) { - Gfx* gfx; - int num = mFI_GetBlockNum(bx, bz); + Gfx* gfx; + int num = mFI_GetBlockNum(bx, bz); - if (mFI_BlockCheck(bx, bz) == FALSE) { - gfx = NULL; - } - else { - gfx = g_fdinfo->block_info[num].bg_info.opaque_gfx; - } + if (mFI_BlockCheck(bx, bz) == FALSE) { + gfx = NULL; + } else { + gfx = g_fdinfo->block_info[num].bg_info.opaque_gfx; + } - return gfx; + return gfx; } extern Gfx* mFI_GetBGDisplayListRom_XLU(int bx, int bz) { - Gfx* gfx; - int num = mFI_GetBlockNum(bx, bz); + Gfx* gfx; + int num = mFI_GetBlockNum(bx, bz); - if (mFI_BlockCheck(bx, bz) == FALSE) { - gfx = NULL; - } - else { - gfx = g_fdinfo->block_info[num].bg_info.translucent_gfx; - } + if (mFI_BlockCheck(bx, bz) == FALSE) { + gfx = NULL; + } else { + gfx = g_fdinfo->block_info[num].bg_info.translucent_gfx; + } - return gfx; + return gfx; } extern EVW_ANIME_DATA* mFI_GetBGTexAnimInfo(s8* anim_num, int bx, int bz) { - EVW_ANIME_DATA* anime; - int num = mFI_GetBlockNum(bx, bz); + EVW_ANIME_DATA* anime; + int num = mFI_GetBlockNum(bx, bz); - if (mFI_BlockCheck(bx, bz) == FALSE) { - anime = NULL; - anim_num[0] = 0; - } - else { - anime = g_fdinfo->block_info[num].bg_info.animation; - anim_num[0] = g_fdinfo->block_info[num].bg_info.animation_count; - } + if (mFI_BlockCheck(bx, bz) == FALSE) { + anime = NULL; + anim_num[0] = 0; + } else { + anime = g_fdinfo->block_info[num].bg_info.animation; + anim_num[0] = g_fdinfo->block_info[num].bg_info.animation_count; + } - return anime; + return anime; } static int mFI_BGDispMatch(int* idx, int bx, int bz) { - int max = g_fdinfo->bg_num; - int res = FALSE; - int i; + int max = g_fdinfo->bg_num; + int res = FALSE; + int i; - for (i = 0; i < max; i++) { - idx[0] = i; - - if (g_fdinfo->bg_draw_info[i].block_x == bx && g_fdinfo->bg_draw_info[i].block_z == bz) { - res = TRUE; - break; + for (i = 0; i < max; i++) { + idx[0] = i; + + if (g_fdinfo->bg_draw_info[i].block_x == bx && g_fdinfo->bg_draw_info[i].block_z == bz) { + res = TRUE; + break; + } } - } - return res; + return res; } static int mFI_SearchNullDisp(int* idx) { - int res = FALSE; - int free_idx = mFI_GetFreeRegisterBgInfo(); + int res = FALSE; + int free_idx = mFI_GetFreeRegisterBgInfo(); - if (free_idx != -1) { - idx[0] = free_idx; - res = TRUE; - } - else { - idx[0] = g_fdinfo->bg_num; - } + if (free_idx != -1) { + idx[0] = free_idx; + res = TRUE; + } else { + idx[0] = g_fdinfo->bg_num; + } - return res; + return res; } static void mFI_BGDispMake(u8* disp_bitfield, int bx, int bz) { - int num = mFI_GetBlockNum(bx, bz); - int idx; - - if (mFI_BGDispMatch(&idx, bx, bz) == FALSE) { - if (mFI_SearchNullDisp(&idx)) { - mFI_SetRegisterBgInfo(idx, g_fdinfo->block_info[num].bg_info.rom_start_addr, g_fdinfo->block_info[num].bg_info.rom_size); - g_fdinfo->bg_draw_info[idx].block_x = bx; - g_fdinfo->bg_draw_info[idx].block_z = bz; - disp_bitfield[0] |= (1 << idx); + int num = mFI_GetBlockNum(bx, bz); + int idx; + + if (mFI_BGDispMatch(&idx, bx, bz) == FALSE) { + if (mFI_SearchNullDisp(&idx)) { + mFI_SetRegisterBgInfo(idx, g_fdinfo->block_info[num].bg_info.rom_start_addr, + g_fdinfo->block_info[num].bg_info.rom_size); + g_fdinfo->bg_draw_info[idx].block_x = bx; + g_fdinfo->bg_draw_info[idx].block_z = bz; + disp_bitfield[0] |= (1 << idx); + } + } else { + disp_bitfield[0] |= (1 << idx); } - } - else { - disp_bitfield[0] |= (1 << idx); - } } typedef struct block_area_info_s { - int initialized; - int _04; - f32 area[6]; + int initialized; + int _04; + f32 area[6]; } mFI_block_area_info_c; static mFI_block_area_info_c l_barea; extern void mFI_InitAreaInfo() { - static f32 area_table[6] = { - /* X position */ - 280.0f, /* x = [0, 6] */ - 360.0f, /* x = [7, 8] */ - 640.0f, /* x = [9, 15] */ + static f32 area_table[6] = { + /* X position */ + 280.0f, /* x = [0, 6] */ + 360.0f, /* x = [7, 8] */ + 640.0f, /* x = [9, 15] */ - /* Z position */ - 380.0f, /* z = [0, 9.5) */ - 400.0f, /* z = [9.5, 10)*/ - 640.0f /* z = [10, 15] */ - }; + /* Z position */ + 380.0f, /* z = [0, 9.5) */ + 400.0f, /* z = [9.5, 10)*/ + 640.0f /* z = [10, 15] */ + }; - int i; + int i; - l_barea.initialized = TRUE; - l_barea._04 = 0; + l_barea.initialized = TRUE; + l_barea._04 = 0; - for (i = 0; i < 6; i++) { - l_barea.area[i] = area_table[i]; - } + for (i = 0; i < 6; i++) { + l_barea.area[i] = area_table[i]; + } } static void mFI_WhereisInBlock(u8* pos_bitfield, xyz_t wpos) { - xyz_t lpos; - int i; + xyz_t lpos; + int i; - mFI_WpostoLposInBK(&lpos, wpos); + mFI_WpostoLposInBK(&lpos, wpos); - if (lpos.x >= 0.0f) { - for (i = 0; i < 3; i++) { - if (lpos.x < l_barea.area[i]) { - pos_bitfield[0] |= (1 << i); - break; - } + if (lpos.x >= 0.0f) { + for (i = 0; i < 3; i++) { + if (lpos.x < l_barea.area[i]) { + pos_bitfield[0] |= (1 << i); + break; + } + } } - } - if (lpos.z >= 0.0f) { - for (i = 3; i < 6; i++) { - if (lpos.z < l_barea.area[i]) { - pos_bitfield[0] |= (1 << i); - break; - } + if (lpos.z >= 0.0f) { + for (i = 3; i < 6; i++) { + if (lpos.z < l_barea.area[i]) { + pos_bitfield[0] |= (1 << i); + break; + } + } } - } } extern void mFI_BGDisplayListRefresh(xyz_t wpos) { - u8 disp_bitfield; - u8 where_bitfield; - int bx; - int bz; - int i; - int nearest_bx; - int nearest_bz; - int num; - int temp; + u8 disp_bitfield; + u8 where_bitfield; + int bx; + int bz; + int i; + int nearest_bx; + int nearest_bz; + int num; + int temp; - disp_bitfield = 0; - where_bitfield = 0; - Common_Set(remove_cut_tree_info_bitfield, 0); - if (mFI_Wpos2BlockNum(&bx, &bz, wpos)) { - num = mFI_GetBlockNum(bx, bz); + disp_bitfield = 0; + where_bitfield = 0; + Common_Set(remove_cut_tree_info_bitfield, 0); + if (mFI_Wpos2BlockNum(&bx, &bz, wpos)) { + num = mFI_GetBlockNum(bx, bz); - if (g_fdinfo->block_info[num].bg_info.bg_id.combination_type != 292) { - mFI_BGDispMake(&disp_bitfield, bx, bz); - } - } - - mFI_WhereisInBlock(&where_bitfield, wpos); - - /* Check if the acres to the immediate left or right should be displayed */ - nearest_bx = bx - 1; - if ((where_bitfield & 1) != 0 && mFI_BlockCheck(nearest_bx, bz)) { - mFI_BGDispMake(&disp_bitfield, nearest_bx, bz); - } - else { - nearest_bx = bx + 1; - if (((where_bitfield >> 2) & 1) != 0 && mFI_BlockCheck(nearest_bx, bz)) { - mFI_BGDispMake(&disp_bitfield, nearest_bx, bz); - } - } - - nearest_bz = bz - 1; - if (((where_bitfield >> 3) & 1) != 0 && mFI_BlockCheck(bx, nearest_bz)) { - mFI_BGDispMake(&disp_bitfield, bx, nearest_bz); /* display acre immediately above */ - - nearest_bx = bx - 1; - if ((where_bitfield & 1) != 0 && mFI_BlockCheck(nearest_bx, nearest_bz)) { - mFI_BGDispMake(&disp_bitfield, nearest_bx, nearest_bz); /* display acre above and to the left */ - } - else { - nearest_bx = bx + 1; - if (((where_bitfield >> 2) & 1) != 0 && mFI_BlockCheck(nearest_bx, nearest_bz)) { - mFI_BGDispMake(&disp_bitfield, nearest_bx, nearest_bz); /* display acre above and to the right */ - } - } - } - else { - nearest_bz = bz + 1; - - if (((where_bitfield >> 5) & 1) != 0 && mFI_BlockCheck(bx, nearest_bz)) { - mFI_BGDispMake(&disp_bitfield, bx, nearest_bz); /* display acre immediately below */ - - nearest_bx = bx - 1; - if ((where_bitfield & 1) != 0 && mFI_BlockCheck(nearest_bx, nearest_bz)) { - mFI_BGDispMake(&disp_bitfield, nearest_bx, nearest_bz); /* display acre below and to the left */ - } - else { - nearest_bx = bx + 1; - if (((where_bitfield >> 2) & 1) != 0 && mFI_BlockCheck(nearest_bx, nearest_bz)) { - mFI_BGDispMake(&disp_bitfield, nearest_bx, nearest_bz); /* display acre below and to the right */ + if (g_fdinfo->block_info[num].bg_info.bg_id.combination_type != 292) { + mFI_BGDispMake(&disp_bitfield, bx, bz); } - } } - } - - for (i = 0; i < mFM_VISIBLE_BLOCK_NUM; i++) { - if (((disp_bitfield >> i) & 1) != 1) { - g_fdinfo->bg_draw_info[i].dma_loaded = FALSE; - g_fdinfo->bg_draw_info[i].block_x = 0xFF; - g_fdinfo->bg_draw_info[i].block_z = 0xFF; - mFI_ClearRegisterBgInfoIdx(i); + + mFI_WhereisInBlock(&where_bitfield, wpos); + + /* Check if the acres to the immediate left or right should be displayed */ + nearest_bx = bx - 1; + if ((where_bitfield & 1) != 0 && mFI_BlockCheck(nearest_bx, bz)) { + mFI_BGDispMake(&disp_bitfield, nearest_bx, bz); + } else { + nearest_bx = bx + 1; + if (((where_bitfield >> 2) & 1) != 0 && mFI_BlockCheck(nearest_bx, bz)) { + mFI_BGDispMake(&disp_bitfield, nearest_bx, bz); + } + } + + nearest_bz = bz - 1; + if (((where_bitfield >> 3) & 1) != 0 && mFI_BlockCheck(bx, nearest_bz)) { + mFI_BGDispMake(&disp_bitfield, bx, nearest_bz); /* display acre immediately above */ + + nearest_bx = bx - 1; + if ((where_bitfield & 1) != 0 && mFI_BlockCheck(nearest_bx, nearest_bz)) { + mFI_BGDispMake(&disp_bitfield, nearest_bx, nearest_bz); /* display acre above and to the left */ + } else { + nearest_bx = bx + 1; + if (((where_bitfield >> 2) & 1) != 0 && mFI_BlockCheck(nearest_bx, nearest_bz)) { + mFI_BGDispMake(&disp_bitfield, nearest_bx, nearest_bz); /* display acre above and to the right */ + } + } + } else { + nearest_bz = bz + 1; + + if (((where_bitfield >> 5) & 1) != 0 && mFI_BlockCheck(bx, nearest_bz)) { + mFI_BGDispMake(&disp_bitfield, bx, nearest_bz); /* display acre immediately below */ + + nearest_bx = bx - 1; + if ((where_bitfield & 1) != 0 && mFI_BlockCheck(nearest_bx, nearest_bz)) { + mFI_BGDispMake(&disp_bitfield, nearest_bx, nearest_bz); /* display acre below and to the left */ + } else { + nearest_bx = bx + 1; + if (((where_bitfield >> 2) & 1) != 0 && mFI_BlockCheck(nearest_bx, nearest_bz)) { + mFI_BGDispMake(&disp_bitfield, nearest_bx, nearest_bz); /* display acre below and to the right */ + } + } + } + } + + for (i = 0; i < mFM_VISIBLE_BLOCK_NUM; i++) { + if (((disp_bitfield >> i) & 1) != 1) { + g_fdinfo->bg_draw_info[i].dma_loaded = FALSE; + g_fdinfo->bg_draw_info[i].block_x = 0xFF; + g_fdinfo->bg_draw_info[i].block_z = 0xFF; + mFI_ClearRegisterBgInfoIdx(i); + } } - } } static u32 l_mfi_player_bk_kind; static void mFI_SetPlayerBlockKind(xyz_t wpos) { - u32* dst = &l_mfi_player_bk_kind; - int bx; - int bz; + u32* dst = &l_mfi_player_bk_kind; + int bx; + int bz; - dst[0] = mRF_BLOCKKIND_NONE; - - if (mFI_Wpos2BlockNum(&bx, &bz, wpos) == TRUE) { - dst[0] = mFI_BkNum2BlockKind(bx, bz); - } + dst[0] = mRF_BLOCKKIND_NONE; + + if (mFI_Wpos2BlockNum(&bx, &bz, wpos) == TRUE) { + dst[0] = mFI_BkNum2BlockKind(bx, bz); + } } extern int mFI_CheckInIsland() { - int res = FALSE; + int res = FALSE; - if ((l_mfi_player_bk_kind & mRF_BLOCKKIND_OCEAN) || Save_Get(scene_no) == SCENE_COTTAGE_MY || Save_Get(scene_no) == SCENE_COTTAGE_NPC) { - res = TRUE; - } + if ((l_mfi_player_bk_kind & mRF_BLOCKKIND_OCEAN) || Save_Get(scene_no) == SCENE_COTTAGE_MY || + Save_Get(scene_no) == SCENE_COTTAGE_NPC) { + res = TRUE; + } - return res; + return res; } extern int mFI_CheckInJustIslandOutdoor() { - if (Save_Get(scene_no) == SCENE_FG && (l_mfi_player_bk_kind & mRF_BLOCKKIND_ISLAND)) { - return TRUE; - } + if (Save_Get(scene_no) == SCENE_FG && (l_mfi_player_bk_kind & mRF_BLOCKKIND_ISLAND)) { + return TRUE; + } - return FALSE; + return FALSE; } extern u32 mFI_CheckPlayerBlockInfo() { - return l_mfi_player_bk_kind; + return l_mfi_player_bk_kind; } extern mActor_name_t* mFI_BkNumtoUtFGTop(int bx, int bz) { - mActor_name_t* fg_top = NULL; + mActor_name_t* fg_top = NULL; - if (mFI_CheckFieldData() && mFI_BlockCheck(bx, bz)) { - int num = mFI_GetBlockNum(bx, bz); + if (mFI_CheckFieldData() && mFI_BlockCheck(bx, bz)) { + int num = mFI_GetBlockNum(bx, bz); - fg_top = g_fdinfo->block_info[num].fg_info.items_p; - } + fg_top = g_fdinfo->block_info[num].fg_info.items_p; + } - return fg_top; + return fg_top; } extern mActor_name_t* mFI_BkNum2UtFGTop_layer(int bx, int bz, int layer) { - mActor_name_t* fg_layer_top = NULL; + mActor_name_t* fg_layer_top = NULL; - if (mFI_CheckFieldData() && g_fdinfo->fg2_p != NULL && bx == 0 && bz == 0) { - if (layer == 0) { - fg_layer_top = mFI_BkNumtoUtFGTop(bx, bz); + if (mFI_CheckFieldData() && g_fdinfo->fg2_p != NULL && bx == 0 && bz == 0) { + if (layer == 0) { + fg_layer_top = mFI_BkNumtoUtFGTop(bx, bz); + } else if (layer > 0 && layer < mHm_LAYER_NUM) { + fg_layer_top = g_fdinfo->fg2_p[layer - 1]; + } } - else if (layer > 0 && layer < mHm_LAYER_NUM) { - fg_layer_top = g_fdinfo->fg2_p[layer - 1]; - } - } - return fg_layer_top; + return fg_layer_top; } extern mActor_name_t* mFI_UtNum2UtFG(int ut_x, int ut_z) { - int bx; - int bz; + int bx; + int bz; - if (mFI_UtNumCheck(ut_x, ut_z, mFI_GetBlockXMax(), mFI_GetBlockZMax()) == FALSE) { - return NULL; - } - else if (mFI_UtNum2BlockNum(&bx, &bz, ut_x, ut_z) == FALSE) { - return NULL; - } - else { - int b_ut_x; - int b_ut_z; - int num; - mActor_name_t* fg_p; + if (mFI_UtNumCheck(ut_x, ut_z, mFI_GetBlockXMax(), mFI_GetBlockZMax()) == FALSE) { + return NULL; + } else if (mFI_UtNum2BlockNum(&bx, &bz, ut_x, ut_z) == FALSE) { + return NULL; + } else { + int b_ut_x; + int b_ut_z; + int num; + mActor_name_t* fg_p; - mFI_GetUtNumInBK(&b_ut_x, &b_ut_z, ut_x, ut_z); - num = mFI_GetBlockNum(bx, bz); - fg_p = g_fdinfo->block_info[num].fg_info.items_p; + mFI_GetUtNumInBK(&b_ut_x, &b_ut_z, ut_x, ut_z); + num = mFI_GetBlockNum(bx, bz); + fg_p = g_fdinfo->block_info[num].fg_info.items_p; - if (fg_p == NULL) { - return NULL; + if (fg_p == NULL) { + return NULL; + } else { + int idx = b_ut_z * UT_X_NUM + b_ut_x; + fg_p += idx; + return fg_p; + } } - else { - int idx = b_ut_z * UT_X_NUM + b_ut_x; - fg_p += idx; - return fg_p; - } - } } static mActor_name_t* mFI_UtNum2UtFG2(int ut_x, int ut_z) { - mActor_name_t* fg2 = NULL; - int bx; - int bz; - int b_ut_x; - int b_ut_z; + mActor_name_t* fg2 = NULL; + int bx; + int bz; + int b_ut_x; + int b_ut_z; - if (mFI_UtNumCheck(ut_x, ut_z, mFI_GetBlockXMax(), mFI_GetBlockZMax()) && mFI_UtNum2BlockNum(&bx, &bz, ut_x, ut_z)) { - mFI_GetUtNumInBK(&b_ut_x, &b_ut_z, ut_x, ut_z); - fg2 = mFI_BkNum2UtFGTop_layer(bx, bz, 1); + if (mFI_UtNumCheck(ut_x, ut_z, mFI_GetBlockXMax(), mFI_GetBlockZMax()) && + mFI_UtNum2BlockNum(&bx, &bz, ut_x, ut_z)) { + mFI_GetUtNumInBK(&b_ut_x, &b_ut_z, ut_x, ut_z); + fg2 = mFI_BkNum2UtFGTop_layer(bx, bz, 1); - if (fg2 != NULL) { - int idx = b_ut_z * UT_Z_NUM + b_ut_x; - fg2 += idx; + if (fg2 != NULL) { + int idx = b_ut_z * UT_Z_NUM + b_ut_x; + fg2 += idx; + } } - } - return fg2; + return fg2; } extern mActor_name_t* mFI_GetUnitFG(xyz_t wpos) { - int ut_x; - int ut_z; + int ut_x; + int ut_z; - if (mFI_Wpos2UtNum(&ut_x, &ut_z, wpos) == FALSE) { - return NULL; - } - else { - return mFI_UtNum2UtFG(ut_x, ut_z); - } + if (mFI_Wpos2UtNum(&ut_x, &ut_z, wpos) == FALSE) { + return NULL; + } else { + return mFI_UtNum2UtFG(ut_x, ut_z); + } } extern mActor_name_t* mFI_GetUnitFG2(xyz_t wpos) { - int ut_x; - int ut_z; + int ut_x; + int ut_z; - if (mFI_Wpos2UtNum(&ut_x, &ut_z, wpos) == FALSE) { - return NULL; - } - else { - return mFI_UtNum2UtFG2(ut_x, ut_z); - } + if (mFI_Wpos2UtNum(&ut_x, &ut_z, wpos) == FALSE) { + return NULL; + } else { + return mFI_UtNum2UtFG2(ut_x, ut_z); + } } extern int mFI_GetBlockUtNum2FG(mActor_name_t* item, int bx, int bz, int ut_x, int ut_z) { - int res = FALSE; + int res = FALSE; - if ( - mFI_BlockCheck(bx, bz) && - (ut_x >= 0 && ut_x < UT_X_NUM) && - (ut_z >= 0 && ut_z < UT_Z_NUM) - ) { - int num = mFI_GetBlockNum(bx, bz); - int ut_num = mFI_GetUtNum(ut_x, ut_z); + if (mFI_BlockCheck(bx, bz) && (ut_x >= 0 && ut_x < UT_X_NUM) && (ut_z >= 0 && ut_z < UT_Z_NUM)) { + int num = mFI_GetBlockNum(bx, bz); + int ut_num = mFI_GetUtNum(ut_x, ut_z); - res = TRUE; - item[0] = g_fdinfo->block_info[num].fg_info.items_p[ut_num]; - } - else { - item[0] = RSV_NO; - } + res = TRUE; + item[0] = g_fdinfo->block_info[num].fg_info.items_p[ut_num]; + } else { + item[0] = RSV_NO; + } - return res; + return res; } extern int mFI_BlockUtNumtoFGSet(mActor_name_t item, int bx, int bz, int ut_x, int ut_z) { - int res = FALSE; - mActor_name_t* fg_p = mFI_BkNumtoUtFGTop(bx, bz); + int res = FALSE; + mActor_name_t* fg_p = mFI_BkNumtoUtFGTop(bx, bz); - if ( - fg_p != NULL && - (ut_x >= 0 && ut_x < UT_X_NUM) && - (ut_z >= 0 && ut_z < UT_Z_NUM) - ) { - int ut_num = mFI_GetUtNum(ut_x, ut_z); - - res = TRUE; - fg_p[ut_num] = item; - } + if (fg_p != NULL && (ut_x >= 0 && ut_x < UT_X_NUM) && (ut_z >= 0 && ut_z < UT_Z_NUM)) { + int ut_num = mFI_GetUtNum(ut_x, ut_z); - return res; + res = TRUE; + fg_p[ut_num] = item; + } + + return res; } extern int mFI_UtNumtoFGSet_common(mActor_name_t item, int ut_x, int ut_z, int update) { - int bx; - int bz; - int b_ut_x; - int b_ut_z; - int block_num; - int ut_num; + int bx; + int bz; + int b_ut_x; + int b_ut_z; + int block_num; + int ut_num; - if (mFI_UtNumCheck(ut_x, ut_z, mFI_GetBlockXMax(), mFI_GetBlockZMax()) == FALSE) { - return FALSE; - } + if (mFI_UtNumCheck(ut_x, ut_z, mFI_GetBlockXMax(), mFI_GetBlockZMax()) == FALSE) { + return FALSE; + } - if (mFI_UtNum2BlockNum(&bx, &bz, ut_x, ut_z) == FALSE) { - return FALSE; - } + if (mFI_UtNum2BlockNum(&bx, &bz, ut_x, ut_z) == FALSE) { + return FALSE; + } - block_num = mFI_GetBlockNum(bx, bz); - if (g_fdinfo->block_info[block_num].fg_info.fg_id == 203) { - return FALSE; - } + block_num = mFI_GetBlockNum(bx, bz); + if (g_fdinfo->block_info[block_num].fg_info.fg_id == 203) { + return FALSE; + } - mFI_GetUtNumInBK(&b_ut_x, &b_ut_z, ut_x, ut_z); - ut_num = mFI_GetUtNum(b_ut_x, b_ut_z); - g_fdinfo->block_info[block_num].fg_info.items_p[ut_num] = item; + mFI_GetUtNumInBK(&b_ut_x, &b_ut_z, ut_x, ut_z); + ut_num = mFI_GetUtNum(b_ut_x, b_ut_z); + g_fdinfo->block_info[block_num].fg_info.items_p[ut_num] = item; - if (update) { - mFI_SetFGUpData(); - } + if (update) { + mFI_SetFGUpData(); + } - return TRUE; + return TRUE; } static int mFI_UtNum2FGSet_layer(mActor_name_t item, int ut_x, int ut_z, int layer) { - int bx; - int bz; - int b_ut_x; - int b_ut_z; - int num; - int res = FALSE; + int bx; + int bz; + int b_ut_x; + int b_ut_z; + int num; + int res = FALSE; - if ( - mFI_UtNumCheck(ut_x, ut_z, mFI_GetBlockXMax(), mFI_GetBlockZMax()) == TRUE && - mFI_UtNum2BlockNum(&bx, &bz, ut_x, ut_z) == TRUE - ) { - mActor_name_t* fg_layer_p = mFI_BkNum2UtFGTop_layer(bx, bz, layer); + if (mFI_UtNumCheck(ut_x, ut_z, mFI_GetBlockXMax(), mFI_GetBlockZMax()) == TRUE && + mFI_UtNum2BlockNum(&bx, &bz, ut_x, ut_z) == TRUE) { + mActor_name_t* fg_layer_p = mFI_BkNum2UtFGTop_layer(bx, bz, layer); - if (fg_layer_p != NULL) { - mFI_GetUtNumInBK(&b_ut_x, &b_ut_z, ut_x, ut_z); - num = mFI_GetUtNum(b_ut_x, b_ut_z); - fg_layer_p[num] = item; - mFI_SetFGUpData(); - res = TRUE; + if (fg_layer_p != NULL) { + mFI_GetUtNumInBK(&b_ut_x, &b_ut_z, ut_x, ut_z); + num = mFI_GetUtNum(b_ut_x, b_ut_z); + fg_layer_p[num] = item; + mFI_SetFGUpData(); + res = TRUE; + } } - } - return res; + return res; } extern int mFI_SetFG_common(mActor_name_t item, xyz_t wpos, int update) { - int ut_x; - int ut_z; + int ut_x; + int ut_z; - if (mFI_Wpos2UtNum(&ut_x, &ut_z, wpos) == FALSE) { - return FALSE; - } + if (mFI_Wpos2UtNum(&ut_x, &ut_z, wpos) == FALSE) { + return FALSE; + } - return mFI_UtNumtoFGSet_common(item, ut_x, ut_z, update); + return mFI_UtNumtoFGSet_common(item, ut_x, ut_z, update); } extern int mFI_SetFG2(mActor_name_t item, xyz_t wpos) { - int ut_x; - int ut_z; - int res = FALSE; + int ut_x; + int ut_z; + int res = FALSE; - if (mFI_Wpos2UtNum(&ut_x, &ut_z, wpos) == TRUE) { - mFI_UtNum2FGSet_layer(item, ut_x, ut_z, 1); - res = TRUE; - } + if (mFI_Wpos2UtNum(&ut_x, &ut_z, wpos) == TRUE) { + mFI_UtNum2FGSet_layer(item, ut_x, ut_z, 1); + res = TRUE; + } - return res; + return res; } extern void mFI_InitItemTable(mFI_item_table_c* vis_block_info) { - mFI_block_tbl_c* block_table = vis_block_info->block_info_tbl; - int i; + mFI_block_tbl_c* block_table = vis_block_info->block_info_tbl; + int i; - vis_block_info->count = 0; - for (i = 0; i < mFM_VISIBLE_BLOCK_NUM; i++) { - block_table->block_x = -1; - block_table->block_z = -1; - block_table->pos_x = 0.0f; - block_table->pos_z = 0.0f; - block_table->items = NULL; + vis_block_info->count = 0; + for (i = 0; i < mFM_VISIBLE_BLOCK_NUM; i++) { + block_table->block_x = -1; + block_table->block_z = -1; + block_table->pos_x = 0.0f; + block_table->pos_z = 0.0f; + block_table->items = NULL; - /* @BUG - they forgot to increment the pointer */ - #ifdef BUGFIXES - block_table++; - #endif - } +/* @BUG - they forgot to increment the pointer */ +#ifdef BUGFIXES + block_table++; +#endif + } } static void mFI_SetOldItemTableIdx(int n, int idx) { - g_fdinfo->last_bg_idx[n] = idx; + g_fdinfo->last_bg_idx[n] = idx; } extern int mFI_GetOldItemTableIdx(int n) { - return g_fdinfo->last_bg_idx[n]; + return g_fdinfo->last_bg_idx[n]; } -static void mFI_MakeOldItemTableIdxTable(mFI_block_tbl_c* block_table, int count, int* block_x_tbl, int* block_z_tbl, int num) { - int i; - int j; +static void mFI_MakeOldItemTableIdxTable(mFI_block_tbl_c* block_table, int count, int* block_x_tbl, int* block_z_tbl, + int num) { + int i; + int j; - for (i = 0; i < count; i++) { - if ((int)block_table->block_x != -1 && (int)block_table->block_z != -1) { - int* bx_p = block_x_tbl; - int* bz_p = block_z_tbl; - - for (j = 0; j < num; j++) { - if (*bx_p == block_table->block_x && *bz_p == block_table->block_z) { - mFI_SetOldItemTableIdx(i, j); - break; + for (i = 0; i < count; i++) { + if ((int)block_table->block_x != -1 && (int)block_table->block_z != -1) { + int* bx_p = block_x_tbl; + int* bz_p = block_z_tbl; + + for (j = 0; j < num; j++) { + if (*bx_p == block_table->block_x && *bz_p == block_table->block_z) { + mFI_SetOldItemTableIdx(i, j); + break; + } + bx_p++; + bz_p++; + } + + if (j == num) { + mFI_SetOldItemTableIdx(i, -1); + } } - bx_p++; - bz_p++; - } - if (j == num) { - mFI_SetOldItemTableIdx(i, -1); - } + block_table++; } - - block_table++; - } } static void mFI_SetBlockTable(mFI_block_tbl_c* block_table, int bx, int bz) { - f32 x = 0.0f; - f32 z = 0.0f; - int num = mFI_GetBlockNum(bx, bz); + f32 x = 0.0f; + f32 z = 0.0f; + int num = mFI_GetBlockNum(bx, bz); - block_table->items = g_fdinfo->block_info[num].fg_info.items_p; - block_table->block_x = bx; - block_table->block_z = bz; + block_table->items = g_fdinfo->block_info[num].fg_info.items_p; + block_table->block_x = bx; + block_table->block_z = bz; - mFI_BkNum2WposXZ(&x, &z, bx, bz); - block_table->pos_x = x; - block_table->pos_z = z; + mFI_BkNum2WposXZ(&x, &z, bx, bz); + block_table->pos_x = x; + block_table->pos_z = z; } extern int mFI_GetItemTable_NoReset(mFI_item_table_c* item_table, xyz_t wpos) { - static int table_no[3] = { 0, 1, 1 }; - static int check_x[3] = { 0, 1, -1 }; + static int table_no[3] = { 0, 1, 1 }; + static int check_x[3] = { 0, 1, -1 }; - mFM_field_draw_info_c* bg_disp = mFI_BGDisplayListTop(); - int t_no; - u8 _num = 0; - u8 _bitfield = 0; - u8 clear_tree_cut_bitfield = 0; - int bx; - int bz; - int block_x_tbl[mFM_VISIBLE_BLOCK_NUM]; - int block_z_tbl[mFM_VISIBLE_BLOCK_NUM]; - int i; - int j; + mFM_field_draw_info_c* bg_disp = mFI_BGDisplayListTop(); + int t_no; + u8 _num = 0; + u8 _bitfield = 0; + u8 clear_tree_cut_bitfield = 0; + int bx; + int bz; + int block_x_tbl[mFM_VISIBLE_BLOCK_NUM]; + int block_z_tbl[mFM_VISIBLE_BLOCK_NUM]; + int i; + int j; - if (mFI_Wpos2BlockNum(&bx, &bz, wpos) == FALSE) { - return FALSE; - } + if (mFI_Wpos2BlockNum(&bx, &bz, wpos) == FALSE) { + return FALSE; + } - for (i = 0; i < mFM_VISIBLE_BLOCK_NUM; i++) { - block_x_tbl[i] = item_table->block_info_tbl[i].block_x; - block_z_tbl[i] = item_table->block_info_tbl[i].block_z; - } + for (i = 0; i < mFM_VISIBLE_BLOCK_NUM; i++) { + block_x_tbl[i] = item_table->block_info_tbl[i].block_x; + block_z_tbl[i] = item_table->block_info_tbl[i].block_z; + } - for (i = 0; i < mFM_VISIBLE_BLOCK_NUM; i++) { - if (mFI_CheckFinishBgDma(i) == TRUE && bg_disp->block_z == bz) { - for (j = 0; j < 3; j++) { - int bx_near = bx + check_x[j]; - - t_no = table_no[j]; + for (i = 0; i < mFM_VISIBLE_BLOCK_NUM; i++) { + if (mFI_CheckFinishBgDma(i) == TRUE && bg_disp->block_z == bz) { + for (j = 0; j < 3; j++) { + int bx_near = bx + check_x[j]; - if (bg_disp->block_x == bx_near) { - mFI_SetBlockTable(&item_table->block_info_tbl[t_no], bx_near, bz); - _num++; - _bitfield |= (1 << i); + t_no = table_no[j]; - if ((Common_Get(remove_cut_tree_info_bitfield) >> i) & 1) { - clear_tree_cut_bitfield |= (1 << t_no); - } + if (bg_disp->block_x == bx_near) { + mFI_SetBlockTable(&item_table->block_info_tbl[t_no], bx_near, bz); + _num++; + _bitfield |= (1 << i); - break; + if ((Common_Get(remove_cut_tree_info_bitfield) >> i) & 1) { + clear_tree_cut_bitfield |= (1 << t_no); + } + + break; + } + } } - } + + if (_num >= 2) { + break; + } + + bg_disp++; } - if (_num >= 2) { - break; + bg_disp = mFI_BGDisplayListTop(); + for (i = 0; i < mFM_VISIBLE_BLOCK_NUM; i++) { + if (((_bitfield >> i) & 1) == 0 && mFI_CheckFinishBgDma(i) == TRUE && bg_disp->block_x != 0xFF && + bg_disp->block_z != 0xFF) { + mFI_SetBlockTable(&item_table->block_info_tbl[_num], bg_disp->block_x, bg_disp->block_z); + + if ((Common_Get(remove_cut_tree_info_bitfield) >> i) & 1) { + clear_tree_cut_bitfield |= (1 << _num); + } + + _num++; + } + + if (_num >= mFM_VISIBLE_BLOCK_NUM) { + break; + } + + bg_disp++; } - bg_disp++; - } + Common_Set(remove_cut_tree_info_bitfield, clear_tree_cut_bitfield); - bg_disp = mFI_BGDisplayListTop(); - for (i = 0; i < mFM_VISIBLE_BLOCK_NUM; i++) { - if (((_bitfield >> i) & 1) == 0 && mFI_CheckFinishBgDma(i) == TRUE && bg_disp->block_x != 0xFF && bg_disp->block_z != 0xFF) { - mFI_SetBlockTable(&item_table->block_info_tbl[_num], bg_disp->block_x, bg_disp->block_z); - - if ((Common_Get(remove_cut_tree_info_bitfield) >> i) & 1) { - clear_tree_cut_bitfield |= (1 << _num); - } - - _num++; + /* Clear any unused entries */ + for (i = _num; i < mFM_VISIBLE_BLOCK_NUM; i++) { + item_table->block_info_tbl[i].block_x = 0xFF; + item_table->block_info_tbl[i].block_z = 0xFF; } - if (_num >= mFM_VISIBLE_BLOCK_NUM) { - break; - } + mFI_MakeOldItemTableIdxTable(item_table->block_info_tbl, _num, block_x_tbl, block_z_tbl, item_table->count); + item_table->count = _num; - bg_disp++; - } - - Common_Set(remove_cut_tree_info_bitfield, clear_tree_cut_bitfield); - - /* Clear any unused entries */ - for (i = _num; i < mFM_VISIBLE_BLOCK_NUM; i++) { - item_table->block_info_tbl[i].block_x = 0xFF; - item_table->block_info_tbl[i].block_z = 0xFF; - } - - mFI_MakeOldItemTableIdxTable(item_table->block_info_tbl, _num, block_x_tbl, block_z_tbl, item_table->count); - item_table->count = _num; - - return TRUE; + return TRUE; } extern int mFI_GetItemTable(mFI_item_table_c* item_table, xyz_t wpos, char* file, int line) { - g_fdinfo->update_fg = FALSE; - g_fdinfo->born_item = FALSE; - return mFI_GetItemTable_NoReset(item_table, wpos); + g_fdinfo->update_fg = FALSE; + g_fdinfo->born_item = FALSE; + return mFI_GetItemTable_NoReset(item_table, wpos); } extern int mFI_FGisUpDate() { - if (mFI_CheckFieldData()) { - return g_fdinfo->update_fg & 1; - } + if (mFI_CheckFieldData()) { + return g_fdinfo->update_fg & 1; + } - return FALSE; + return FALSE; } extern void mFI_SetFGUpData() { - if (mFI_CheckFieldData()) { - g_fdinfo->update_fg = TRUE; - } + if (mFI_CheckFieldData()) { + g_fdinfo->update_fg = TRUE; + } } /* 50% */ extern void mFI_BornItemON() { - if (mFI_CheckFieldData()) { - g_fdinfo->born_item = TRUE; - } + if (mFI_CheckFieldData()) { + g_fdinfo->born_item = TRUE; + } } /* @unused @fabricated */ @@ -1624,346 +1558,345 @@ extern MATCH_FORCESTRIP void mFI_BornItemOFF() { */ extern int mFI_ItemisBorn() { - return g_fdinfo->born_item & 1; + return g_fdinfo->born_item & 1; } extern int mFI_ActorisBorn() { - return g_fdinfo->born_actor & 1; + return g_fdinfo->born_actor & 1; } extern void mFI_SetBearActor(GAME_PLAY* play, xyz_t wpos, int set_flag) { - int bx; - int bz; + int bx; + int bz; - g_fdinfo->born_actor = TRUE; - mFI_Wpos2BlockNum(&bx, &bz, wpos); + g_fdinfo->born_actor = TRUE; + mFI_Wpos2BlockNum(&bx, &bz, wpos); - if (set_flag == FALSE) { - play->last_block_table.block_x = -1; - play->last_block_table.block_z = -1; - play->last_block_table.items = NULL; - } - else { - mem_copy((u8*)&play->last_block_table, (u8*)&play->block_table, sizeof(mFI_block_tbl_c)); - } + if (set_flag == FALSE) { + play->last_block_table.block_x = -1; + play->last_block_table.block_z = -1; + play->last_block_table.items = NULL; + } else { + mem_copy((u8*)&play->last_block_table, (u8*)&play->block_table, sizeof(mFI_block_tbl_c)); + } - mFI_SetBlockTable(&play->block_table, bx, bz); + mFI_SetBlockTable(&play->block_table, bx, bz); } extern int mFI_search_unit_around(xyz_t* wpos, mActor_name_t item) { - static f32 BI_chk_pos[9 * 2] = { - -40.0f, -40.0f, // x - 1, z - 1 (top-left) - -40.0f, 40.0f, // x - 1, z + 1 (bottom-left) - 40.0f, 40.0f, // x + 1, z + 1 (bottom-right) - 40.0f, -40.0f, // x + 1, z - 1 (top-right) - -40.0f, 0.0f, // x - 1, z (left) - 0.0f, 40.0f, // x, z + 1 (below) - 40.0f, 0.0f, // x + 1, z (right) - 0.0f, -40.0f, // x, z - 1 (above) - 0.0f, 0.0f // x, z (origin) - }; - xyz_t tpos; - mActor_name_t* item_p; - int i = 9; - int res = FALSE; - f32* around = BI_chk_pos; + static f32 BI_chk_pos[9 * 2] = { + -40.0f, -40.0f, // x - 1, z - 1 (top-left) + -40.0f, 40.0f, // x - 1, z + 1 (bottom-left) + 40.0f, 40.0f, // x + 1, z + 1 (bottom-right) + 40.0f, -40.0f, // x + 1, z - 1 (top-right) + -40.0f, 0.0f, // x - 1, z (left) + 0.0f, 40.0f, // x, z + 1 (below) + 40.0f, 0.0f, // x + 1, z (right) + 0.0f, -40.0f, // x, z - 1 (above) + 0.0f, 0.0f // x, z (origin) + }; + xyz_t tpos; + mActor_name_t* item_p; + int i = 9; + int res = FALSE; + f32* around = BI_chk_pos; - while (i != 0) { - i--; + while (i != 0) { + i--; - tpos.x = wpos->x + around[i * 2 + 0]; - tpos.z = wpos->z + around[i * 2 + 1]; + tpos.x = wpos->x + around[i * 2 + 0]; + tpos.z = wpos->z + around[i * 2 + 1]; - item_p = mFI_GetUnitFG(tpos); - if (item_p != NULL && item_p[0] == item) { - xyz_t_move(wpos, &tpos); - res = TRUE; - break; + item_p = mFI_GetUnitFG(tpos); + if (item_p != NULL && item_p[0] == item) { + xyz_t_move(wpos, &tpos); + res = TRUE; + break; + } } - } - return res; + return res; } /* @unused @frabricated */ extern MATCH_FORCESTRIP int mFI_search_unit_around2(xyz_t* wpos, mActor_name_t item) { - static f32 BI_chk_pos[9 * 2] = { - -40.0f, -40.0f, // x - 1, z - 1 (top-left) - -40.0f, 40.0f, // x - 1, z + 1 (bottom-left) - 40.0f, 40.0f, // x + 1, z + 1 (bottom-right) - 40.0f, -40.0f, // x + 1, z - 1 (top-right) - -40.0f, 0.0f, // x - 1, z (left) - 0.0f, 40.0f, // x, z + 1 (below) - 40.0f, 0.0f, // x + 1, z (right) - 0.0f, -40.0f, // x, z - 1 (above) - 0.0f, 0.0f // x, z (origin) - }; - xyz_t tpos; - mActor_name_t* item_p; - int i = 9; - int res = FALSE; - f32* around = BI_chk_pos; + static f32 BI_chk_pos[9 * 2] = { + -40.0f, -40.0f, // x - 1, z - 1 (top-left) + -40.0f, 40.0f, // x - 1, z + 1 (bottom-left) + 40.0f, 40.0f, // x + 1, z + 1 (bottom-right) + 40.0f, -40.0f, // x + 1, z - 1 (top-right) + -40.0f, 0.0f, // x - 1, z (left) + 0.0f, 40.0f, // x, z + 1 (below) + 40.0f, 0.0f, // x + 1, z (right) + 0.0f, -40.0f, // x, z - 1 (above) + 0.0f, 0.0f // x, z (origin) + }; + xyz_t tpos; + mActor_name_t* item_p; + int i = 9; + int res = FALSE; + f32* around = BI_chk_pos; - while (i != 0) { - i--; + while (i != 0) { + i--; - tpos.x = wpos->x + around[i * 2 + 0]; - tpos.z = wpos->z + around[i * 2 + 1]; + tpos.x = wpos->x + around[i * 2 + 0]; + tpos.z = wpos->z + around[i * 2 + 1]; - item_p = mFI_GetUnitFG2(tpos); - if (item_p != NULL && item_p[0] == item) { - xyz_t_move(wpos, &tpos); - res = TRUE; - break; + item_p = mFI_GetUnitFG2(tpos); + if (item_p != NULL && item_p[0] == item) { + xyz_t_move(wpos, &tpos); + res = TRUE; + break; + } } - } - return res; + return res; } extern int mFI_GetItemNumOnBlock(int bx, int bz, mActor_name_t min_item, mActor_name_t max_item) { - mActor_name_t* fg_p = mFI_BkNumtoUtFGTop(bx, bz); - int num = 0; - int i; - - if (fg_p != NULL) { - for (i = 0; i < UT_TOTAL_NUM; i++) { - if (fg_p[0] >= min_item && fg_p[0] <= max_item) { - num++; - } - - fg_p++; - } - } - - return num; -} - -extern int mFI_GetItemNumOnBlockInField(int bx, int bz, mActor_name_t min_item, mActor_name_t max_item) { - mActor_name_t* fg_p = NULL; - int num = 0; - int i; - - if (bx > 0 && bx <= FG_BLOCK_X_NUM && bz > 0 && bz <= FG_BLOCK_Z_NUM) { - fg_p = Save_Get(fg)[bz - 1][bx - 1].items[0]; - } - - if (fg_p != NULL) { - for (i = 0; i < UT_TOTAL_NUM; i++) { - if (fg_p[0] >= min_item && fg_p[0] <= max_item) { - num++; - } - - fg_p++; - } - } - - return num; -} - -extern int mFI_GetItemNumField_BCT(mActor_name_t min_item, mActor_name_t max_item) { - mFM_fg_c* fg = Save_Get(fg[0]); - mActor_name_t* items_p; - int num = 0; - int bz; - - for (bz = 0; bz < FG_BLOCK_Z_NUM; bz++) { - int bx; - for (bx = 0; bx < FG_BLOCK_X_NUM; bx++) { - int i; - items_p = fg->items[0]; - for (i = 0; i < UT_TOTAL_NUM; i++) { - if (items_p[0] >= min_item && items_p[0] <= max_item) { - num++; - } - - items_p++; - } - - fg++; - } - } - - return num; -} - -extern int mFI_GetItemNumField(mActor_name_t min_item, mActor_name_t max_item) { - int num = 0; - - /* @BUG - they forgot to actually call the mFI_CheckFieldData func */ - #ifndef BUGFIXES - if (mFI_CheckFieldData) { - #else - if (mFI_CheckFieldData()) { - #endif - int bx_max = mFI_GetBlockXMax(); - int bz_max = mFI_GetBlockZMax(); - - int bz; - int bx; - - for (bz = 0; bz < bz_max; bz++) { - for (bx = 0; bx < bx_max; bx++) { - num += mFI_GetItemNumOnBlock(bx, bz, min_item, max_item); - } - } - } - - return num; -} - -extern int mFI_GetItemNumInBlock(mActor_name_t item, mActor_name_t* fg_items) { - int num = 0; - int i; - - if (fg_items != NULL) { - for (i = 0; i < UT_TOTAL_NUM; i++) { - if (fg_items[0] == item) { - num++; - } - - fg_items++; - } - } - - return num; -} - -extern int mFI_SearchFGInBlock(int* ut_x, int* ut_z, mActor_name_t item, int bx, int bz) { - mActor_name_t* fg_p = mFI_BkNumtoUtFGTop(bx, bz); - int res = FALSE; - - if (fg_p != NULL) { + mActor_name_t* fg_p = mFI_BkNumtoUtFGTop(bx, bz); + int num = 0; int i; - - for (i = 0; i < UT_TOTAL_NUM; i++) { - if (fg_p[0] == item) { - ut_x[0] = i & 15; - ut_z[0] = i >> 4; - res = TRUE; - break; - } - - fg_p++; - } - } - - return res; -} - -extern int mFI_CheckFGExist(mActor_name_t* check_items, int check_item_num) { - mActor_name_t* check_p = check_items; - - if (mFI_CheckFieldData() == TRUE) { - int bx_max = mFI_GetBlockXMax(); - int bz_max = mFI_GetBlockZMax(); - mActor_name_t* fg_p; - - int bz; - - for (bz = 0; bz < bz_max; bz++) { - int bx; - for (bx = 0; bx < bx_max; bx++) { - fg_p = mFI_BkNumtoUtFGTop(bx, bz); - - if (fg_p != NULL) { - int ut; - for (ut = 0; ut < UT_TOTAL_NUM; ut++) { - int i; - check_items = check_p; - - for (i = 0; i < check_item_num; i++) { - if (check_items[0] == fg_p[0]) { - return TRUE; - } - - check_items++; + if (fg_p != NULL) { + for (i = 0; i < UT_TOTAL_NUM; i++) { + if (fg_p[0] >= min_item && fg_p[0] <= max_item) { + num++; } fg_p++; - } } - } } - } - return FALSE; + return num; +} + +extern int mFI_GetItemNumOnBlockInField(int bx, int bz, mActor_name_t min_item, mActor_name_t max_item) { + mActor_name_t* fg_p = NULL; + int num = 0; + int i; + + if (bx > 0 && bx <= FG_BLOCK_X_NUM && bz > 0 && bz <= FG_BLOCK_Z_NUM) { + fg_p = Save_Get(fg)[bz - 1][bx - 1].items[0]; + } + + if (fg_p != NULL) { + for (i = 0; i < UT_TOTAL_NUM; i++) { + if (fg_p[0] >= min_item && fg_p[0] <= max_item) { + num++; + } + + fg_p++; + } + } + + return num; +} + +extern int mFI_GetItemNumField_BCT(mActor_name_t min_item, mActor_name_t max_item) { + mFM_fg_c* fg = Save_Get(fg[0]); + mActor_name_t* items_p; + int num = 0; + int bz; + + for (bz = 0; bz < FG_BLOCK_Z_NUM; bz++) { + int bx; + for (bx = 0; bx < FG_BLOCK_X_NUM; bx++) { + int i; + items_p = fg->items[0]; + for (i = 0; i < UT_TOTAL_NUM; i++) { + if (items_p[0] >= min_item && items_p[0] <= max_item) { + num++; + } + + items_p++; + } + + fg++; + } + } + + return num; +} + +extern int mFI_GetItemNumField(mActor_name_t min_item, mActor_name_t max_item) { + int num = 0; + +/* @BUG - they forgot to actually call the mFI_CheckFieldData func */ +#ifndef BUGFIXES + if (mFI_CheckFieldData) { +#else + if (mFI_CheckFieldData()) { +#endif + int bx_max = mFI_GetBlockXMax(); + int bz_max = mFI_GetBlockZMax(); + + int bz; + int bx; + + for (bz = 0; bz < bz_max; bz++) { + for (bx = 0; bx < bx_max; bx++) { + num += mFI_GetItemNumOnBlock(bx, bz, min_item, max_item); + } + } + } + + return num; +} + +extern int mFI_GetItemNumInBlock(mActor_name_t item, mActor_name_t* fg_items) { + int num = 0; + int i; + + if (fg_items != NULL) { + for (i = 0; i < UT_TOTAL_NUM; i++) { + if (fg_items[0] == item) { + num++; + } + + fg_items++; + } + } + + return num; +} + +extern int mFI_SearchFGInBlock(int* ut_x, int* ut_z, mActor_name_t item, int bx, int bz) { + mActor_name_t* fg_p = mFI_BkNumtoUtFGTop(bx, bz); + int res = FALSE; + + if (fg_p != NULL) { + int i; + + for (i = 0; i < UT_TOTAL_NUM; i++) { + if (fg_p[0] == item) { + ut_x[0] = i & 15; + ut_z[0] = i >> 4; + res = TRUE; + + break; + } + + fg_p++; + } + } + + return res; +} + +extern int mFI_CheckFGExist(mActor_name_t* check_items, int check_item_num) { + mActor_name_t* check_p = check_items; + + if (mFI_CheckFieldData() == TRUE) { + int bx_max = mFI_GetBlockXMax(); + int bz_max = mFI_GetBlockZMax(); + mActor_name_t* fg_p; + + int bz; + + for (bz = 0; bz < bz_max; bz++) { + int bx; + for (bx = 0; bx < bx_max; bx++) { + fg_p = mFI_BkNumtoUtFGTop(bx, bz); + + if (fg_p != NULL) { + int ut; + for (ut = 0; ut < UT_TOTAL_NUM; ut++) { + int i; + check_items = check_p; + + for (i = 0; i < check_item_num; i++) { + if (check_items[0] == fg_p[0]) { + return TRUE; + } + + check_items++; + } + + fg_p++; + } + } + } + } + } + + return FALSE; } extern u8* mFI_GetHaniwaStepBlock(int bx, int bz) { - u8* haniwa_step_block_p = NULL; + u8* haniwa_step_block_p = NULL; - if (mFI_BlockCheck(bx, bz) == TRUE) { - int num = mFI_GetBlockNum(bx, bz); + if (mFI_BlockCheck(bx, bz) == TRUE) { + int num = mFI_GetBlockNum(bx, bz); - haniwa_step_block_p = g_fdinfo->block_info[num].fg_info.haniwa_step; - } + haniwa_step_block_p = g_fdinfo->block_info[num].fg_info.haniwa_step; + } - return haniwa_step_block_p; + return haniwa_step_block_p; } extern u16 mFI_GetMoveActorBitData(int bx, int bz) { - u16 move_actor_bit_data = 0; + u16 move_actor_bit_data = 0; - if (mFI_BlockCheck(bx, bz)) { - int num = mFI_GetBlockNum(bx, bz); - - move_actor_bit_data = g_fdinfo->block_info[num].fg_info.move_actor_bit_data; - } + if (mFI_BlockCheck(bx, bz)) { + int num = mFI_GetBlockNum(bx, bz); - return move_actor_bit_data; + move_actor_bit_data = g_fdinfo->block_info[num].fg_info.move_actor_bit_data; + } + + return move_actor_bit_data; } static void mFI_MakeMoveActorBitData(int bx, int bz, mFM_move_actor_c* move_actor) { - int num = mFI_GetBlockNum(bx, bz); - u16* move_actor_bit_data_p = &g_fdinfo->block_info[num].fg_info.move_actor_bit_data; - int i; + int num = mFI_GetBlockNum(bx, bz); + u16* move_actor_bit_data_p = &g_fdinfo->block_info[num].fg_info.move_actor_bit_data; + int i; - if (move_actor_bit_data_p != NULL) { - for (i = 0; i < mFM_MOVE_ACTOR_NUM; i++) { - if (move_actor->name_id == EMPTY_NO) { - break; - } + if (move_actor_bit_data_p != NULL) { + for (i = 0; i < mFM_MOVE_ACTOR_NUM; i++) { + if (move_actor->name_id == EMPTY_NO) { + break; + } - move_actor_bit_data_p[0] |= (1 << i); - move_actor++; + move_actor_bit_data_p[0] |= (1 << i); + move_actor++; + } } - } } extern void mFI_SetMoveActorBitData(int bx, int bz, u16 move_actor_bit_data) { - if (mFI_BlockCheck(bx, bz)) { - int num = mFI_GetBlockNum(bx, bz); + if (mFI_BlockCheck(bx, bz)) { + int num = mFI_GetBlockNum(bx, bz); - g_fdinfo->block_info[num].fg_info.move_actor_bit_data = move_actor_bit_data; - } + g_fdinfo->block_info[num].fg_info.move_actor_bit_data = move_actor_bit_data; + } } extern void mFI_SetMoveActorBitData_ON(s16 move_actor_idx, int bx, int bz) { - if (mFI_BlockCheck(bx, bz) && move_actor_idx >= 0 && move_actor_idx < mFM_MOVE_ACTOR_NUM) { - int num = mFI_GetBlockNum(bx, bz); - u16* move_actor_bit_data_p = &g_fdinfo->block_info[num].fg_info.move_actor_bit_data; - u16 data = move_actor_bit_data_p[0]; + if (mFI_BlockCheck(bx, bz) && move_actor_idx >= 0 && move_actor_idx < mFM_MOVE_ACTOR_NUM) { + int num = mFI_GetBlockNum(bx, bz); + u16* move_actor_bit_data_p = &g_fdinfo->block_info[num].fg_info.move_actor_bit_data; + u16 data = move_actor_bit_data_p[0]; - move_actor_bit_data_p[0] = data | (1 << move_actor_idx); - } + move_actor_bit_data_p[0] = data | (1 << move_actor_idx); + } } extern void mFI_SetMoveActorBitData_OFF(s16 move_actor_idx, int bx, int bz) { - if (mFI_BlockCheck(bx, bz) && move_actor_idx >= 0 && move_actor_idx < mFM_MOVE_ACTOR_NUM) { - int num = mFI_GetBlockNum(bx, bz); - u16* move_actor_bit_data_p = &g_fdinfo->block_info[num].fg_info.move_actor_bit_data; - u16 data = move_actor_bit_data_p[0]; + if (mFI_BlockCheck(bx, bz) && move_actor_idx >= 0 && move_actor_idx < mFM_MOVE_ACTOR_NUM) { + int num = mFI_GetBlockNum(bx, bz); + u16* move_actor_bit_data_p = &g_fdinfo->block_info[num].fg_info.move_actor_bit_data; + u16 data = move_actor_bit_data_p[0]; - move_actor_bit_data_p[0] = data & ~(1 << move_actor_idx); - } + move_actor_bit_data_p[0] = data & ~(1 << move_actor_idx); + } } extern void mFI_MyMoveActorBitData_ON(ACTOR* actor) { - if (actor != NULL) { - mFI_SetMoveActorBitData_ON(actor->move_actor_list_idx, actor->block_x, actor->block_z); - } + if (actor != NULL) { + mFI_SetMoveActorBitData_ON(actor->move_actor_list_idx, actor->block_x, actor->block_z); + } } /* @unused @fabricated */ @@ -1976,215 +1909,209 @@ extern MATCH_FORCESTRIP void mFI_MyMoveActorBitData_OFF(ACTOR* actor) { */ extern int mFI_GetMoveActorListIdx(mFM_move_actor_c* move_actor_list, int list_size, mActor_name_t actor_name) { - int idx = -1; - int i; + int idx = -1; + int i; - for (i = 0; i < list_size; i++) { - if (move_actor_list->name_id == actor_name) { - idx = i; - break; + for (i = 0; i < list_size; i++) { + if (move_actor_list->name_id == actor_name) { + idx = i; + break; + } + + move_actor_list++; } - move_actor_list++; - } - - return idx; + return idx; } -extern int mFI_RegistMoveActorList(mActor_name_t actor_name, int bx, int bz, int ut_x, int ut_z, int npc_info_idx, s16 arg) { - int num = mFI_GetBlockNum(bx, bz); - mFM_move_actor_c* move_actor_list = g_fdinfo->block_info[num].fg_info.move_actors; - int res = FALSE; +extern int mFI_RegistMoveActorList(mActor_name_t actor_name, int bx, int bz, int ut_x, int ut_z, int npc_info_idx, + s16 arg) { + int num = mFI_GetBlockNum(bx, bz); + mFM_move_actor_c* move_actor_list = g_fdinfo->block_info[num].fg_info.move_actors; + int res = FALSE; - if (move_actor_list != NULL) { - int idx = mFI_GetMoveActorListIdx(move_actor_list, mFM_MOVE_ACTOR_NUM, EMPTY_NO); + if (move_actor_list != NULL) { + int idx = mFI_GetMoveActorListIdx(move_actor_list, mFM_MOVE_ACTOR_NUM, EMPTY_NO); - if (idx != -1) { - move_actor_list[idx].name_id = actor_name; - move_actor_list[idx].ut_x = ut_x; - move_actor_list[idx].ut_z = ut_z; - move_actor_list[idx].npc_info_idx = npc_info_idx; - move_actor_list[idx].arg = arg; - mFI_SetMoveActorBitData_ON(idx, bx, bz); - res = TRUE; + if (idx != -1) { + move_actor_list[idx].name_id = actor_name; + move_actor_list[idx].ut_x = ut_x; + move_actor_list[idx].ut_z = ut_z; + move_actor_list[idx].npc_info_idx = npc_info_idx; + move_actor_list[idx].arg = arg; + mFI_SetMoveActorBitData_ON(idx, bx, bz); + res = TRUE; + } } - } - return res; + return res; } extern int mFI_UnregistMoveActorList(mActor_name_t actor_name, int bx, int bz) { - int num = mFI_GetBlockNum(bx, bz); - mFM_move_actor_c* move_actor_list = g_fdinfo->block_info[num].fg_info.move_actors; - int res = FALSE; + int num = mFI_GetBlockNum(bx, bz); + mFM_move_actor_c* move_actor_list = g_fdinfo->block_info[num].fg_info.move_actors; + int res = FALSE; - if (move_actor_list != NULL) { - int idx = mFI_GetMoveActorListIdx(move_actor_list, mFM_MOVE_ACTOR_NUM, actor_name); + if (move_actor_list != NULL) { + int idx = mFI_GetMoveActorListIdx(move_actor_list, mFM_MOVE_ACTOR_NUM, actor_name); - if (idx != -1) { - move_actor_list[idx].name_id = EMPTY_NO; - mFI_SetMoveActorBitData_OFF(idx, bx, bz); - res = TRUE; + if (idx != -1) { + move_actor_list[idx].name_id = EMPTY_NO; + mFI_SetMoveActorBitData_OFF(idx, bx, bz); + res = TRUE; + } } - } - return res; + return res; } extern int mFI_AddMoveActorList(mActor_name_t actor_name, int bx, int bz, int ut_x, int ut_z, s16 arg) { - int res = FALSE; + int res = FALSE; - if (ITEM_NAME_GET_TYPE(actor_name) == NAME_TYPE_ITEM2 && mFI_BlockCheck(bx, bz)) { - res = mFI_RegistMoveActorList(actor_name, bx, bz, ut_x, ut_z, -1, arg); - } + if (ITEM_NAME_GET_TYPE(actor_name) == NAME_TYPE_ITEM2 && mFI_BlockCheck(bx, bz)) { + res = mFI_RegistMoveActorList(actor_name, bx, bz, ut_x, ut_z, -1, arg); + } - return res; + return res; } extern mFM_move_actor_c* mFI_MoveActorListDma(int bx, int bz) { - static mFM_move_actor_c l_aclist[mFM_MOVE_ACTOR_NUM]; + static mFM_move_actor_c l_aclist[mFM_MOVE_ACTOR_NUM]; - mFM_move_actor_c* move_actor_list = NULL; - int num = mFI_GetBlockNum(bx, bz); + mFM_move_actor_c* move_actor_list = NULL; + int num = mFI_GetBlockNum(bx, bz); - if (mFI_BlockCheck(bx, bz)) { - move_actor_list = l_aclist; - bcopy(g_fdinfo->block_info[num].fg_info.move_actors, move_actor_list, mFM_MOVE_ACTOR_NUM * sizeof(mFM_move_actor_c)); - } + if (mFI_BlockCheck(bx, bz)) { + move_actor_list = l_aclist; + bcopy(g_fdinfo->block_info[num].fg_info.move_actors, move_actor_list, + mFM_MOVE_ACTOR_NUM * sizeof(mFM_move_actor_c)); + } - return move_actor_list; + return move_actor_list; } extern void mFI_InitMoveActorBitData() { - int bx_max = mFI_GetBlockXMax(); - int bz_max = mFI_GetBlockZMax(); - int bz; - - for (bz = 0; bz < bz_max; bz++) { - int bx; - - for (bx = 0; bx < bx_max; bx++) { - mFM_move_actor_c* move_actor_list = mFI_MoveActorListDma(bx, bz); + int bx_max = mFI_GetBlockXMax(); + int bz_max = mFI_GetBlockZMax(); + int bz; - if (move_actor_list != NULL) { - mFI_MakeMoveActorBitData(bx, bz, move_actor_list); - } + for (bz = 0; bz < bz_max; bz++) { + int bx; + + for (bx = 0; bx < bx_max; bx++) { + mFM_move_actor_c* move_actor_list = mFI_MoveActorListDma(bx, bz); + + if (move_actor_list != NULL) { + mFI_MakeMoveActorBitData(bx, bz, move_actor_list); + } + } } - } } static int l_player_wade; extern void mFI_SetPlayerWade(GAME_PLAY* play) { - PLAYER_ACTOR* player = get_player_actor_withoutCheck(play); + PLAYER_ACTOR* player = get_player_actor_withoutCheck(play); - if (player != NULL) { - if (mPlib_check_player_actor_main_index_AllWade(play) == TRUE) { - if (l_player_wade == mFI_WADE_NONE || l_player_wade == mFI_WADE_END) { - l_player_wade = mFI_WADE_START; - } - else { - l_player_wade = mFI_WADE_INPROGRESS; - } + if (player != NULL) { + if (mPlib_check_player_actor_main_index_AllWade(play) == TRUE) { + if (l_player_wade == mFI_WADE_NONE || l_player_wade == mFI_WADE_END) { + l_player_wade = mFI_WADE_START; + } else { + l_player_wade = mFI_WADE_INPROGRESS; + } + } else if (l_player_wade == mFI_WADE_INPROGRESS) { + l_player_wade = mFI_WADE_END; + } else { + l_player_wade = mFI_WADE_NONE; + } + } else { + l_player_wade = mFI_WADE_ERROR; } - else if (l_player_wade == mFI_WADE_INPROGRESS) { - l_player_wade = mFI_WADE_END; - } - else { - l_player_wade = mFI_WADE_NONE; - } - } - else { - l_player_wade = mFI_WADE_ERROR; - } } extern int mFI_CheckPlayerWade(int wade) { - int res = FALSE; + int res = FALSE; - if (wade == l_player_wade) { - res = TRUE; - } + if (wade == l_player_wade) { + res = TRUE; + } - return res; + return res; } extern int mFI_GetPlayerWade() { - return l_player_wade; + return l_player_wade; } extern int mFI_GetNextBlockNum(int* bx, int* bz) { - xyz_t end_pos = {0.0f, 0.0f, 0.0f}; - int res = FALSE; - int res2; + xyz_t end_pos = { 0.0f, 0.0f, 0.0f }; + int res = FALSE; + int res2; - if (Common_Get(player_actor_exists)) { - res = ((*GET_PLAYER_ACTOR_NOW()->Get_WadeEndPos_proc)(gamePT, &end_pos)); - } + if (Common_Get(player_actor_exists)) { + res = ((*GET_PLAYER_ACTOR_NOW()->Get_WadeEndPos_proc)(gamePT, &end_pos)); + } - res2 = mFI_Wpos2BlockNum(bx, bz, end_pos); - res2 &= res; - return res2; + res2 = mFI_Wpos2BlockNum(bx, bz, end_pos); + res2 &= res; + return res2; } extern u16* mFI_GetDepositP(int bx, int bz) { - u16* deposit_p = NULL; + u16* deposit_p = NULL; - if (mFI_CheckFieldData() == FALSE || mFI_GET_TYPE(mFI_GetFieldId()) != mFI_FIELD_FG) { - if (bx - 1 >= 0 && bx - 1 < FG_BLOCK_X_NUM && bz - 1 >= 0 && bz - 1 < FG_BLOCK_Z_NUM) { - deposit_p = Save_Get(deposit[(bx - 1) + (bz - 1) * FG_BLOCK_X_NUM]); + if (mFI_CheckFieldData() == FALSE || mFI_GET_TYPE(mFI_GetFieldId()) != mFI_FIELD_FG) { + if (bx - 1 >= 0 && bx - 1 < FG_BLOCK_X_NUM && bz - 1 >= 0 && bz - 1 < FG_BLOCK_Z_NUM) { + deposit_p = Save_Get(deposit[(bx - 1) + (bz - 1) * FG_BLOCK_X_NUM]); + } + } else if (mFI_BlockCheck(bx, bz) == TRUE) { + deposit_p = g_fdinfo->block_info[bx + bz * mFI_GetBlockXMax()].fg_info.deposit_p; } - } - else if (mFI_BlockCheck(bx, bz) == TRUE) { - deposit_p = g_fdinfo->block_info[bx + bz * mFI_GetBlockXMax()].fg_info.deposit_p; - } - return deposit_p; + return deposit_p; } extern void mFI_ClearDeposit(int bx, int bz) { - u16* deposit_p = mFI_GetDepositP(bx, bz); + u16* deposit_p = mFI_GetDepositP(bx, bz); - if (deposit_p != NULL) { - int i; + if (deposit_p != NULL) { + int i; - for (i = 0; i < UT_Z_NUM; i++) { - deposit_p[0] = 0; - deposit_p++; + for (i = 0; i < UT_Z_NUM; i++) { + deposit_p[0] = 0; + deposit_p++; + } } - } } static int mFI_LineDepositON(u16* deposit, int ut_x) { - deposit[0] |= (1 << ut_x); - return TRUE; + deposit[0] |= (1 << ut_x); + return TRUE; } static int mFI_LineDepositOFF(u16* deposit, int ut_x) { - deposit[0] &= ~(1 << ut_x); - return FALSE; + deposit[0] &= ~(1 << ut_x); + return FALSE; } extern int mFI_GetLineDeposit(u16* deposit, int ut_x) { - return (deposit[0] >> ut_x) & 1; + return (deposit[0] >> ut_x) & 1; } typedef int (*mFI_SET_DEPOSIT_PROC)(u16*, int); static int mFI_SetDeposit(u16* deposit, int ut_x, int ut_z, int type) { - static mFI_SET_DEPOSIT_PROC control_proc[mFI_DEPOSIT_NUM] = { - &mFI_LineDepositON, - &mFI_LineDepositOFF, - &mFI_GetLineDeposit - }; + static mFI_SET_DEPOSIT_PROC control_proc[mFI_DEPOSIT_NUM] = { &mFI_LineDepositON, &mFI_LineDepositOFF, + &mFI_GetLineDeposit }; - int res = FALSE; + int res = FALSE; - if (deposit != NULL && ut_x >= 0 && ut_x < UT_X_NUM && ut_z >= 0 && ut_z < UT_Z_NUM) { - res = (*control_proc[type])(deposit + ut_z, ut_x); - } + if (deposit != NULL && ut_x >= 0 && ut_x < UT_X_NUM && ut_z >= 0 && ut_z < UT_Z_NUM) { + res = (*control_proc[type])(deposit + ut_z, ut_x); + } - return res; + return res; } /* @unused, @fabricated */ @@ -2195,22 +2122,22 @@ extern MATCH_FORCESTRIP void mFI_BlockDepositON(u16* deposit_p, int ut_x, int ut */ extern void mFI_BlockDepositOFF(u16* deposit_p, int ut_x, int ut_z) { - mFI_SetDeposit(deposit_p, ut_x, ut_z, mFI_DEPOSIT_OFF); + mFI_SetDeposit(deposit_p, ut_x, ut_z, mFI_DEPOSIT_OFF); } extern int mFI_GetBlockDeposit(u16* deposit_p, int ut_x, int ut_z) { - return mFI_SetDeposit(deposit_p, ut_x, ut_z, mFI_DEPOSIT_GET); + return mFI_SetDeposit(deposit_p, ut_x, ut_z, mFI_DEPOSIT_GET); } static int mFI_BkUtNum2SetDeposit(int bx, int bz, int ut_x, int ut_z, int type) { - int res = FALSE; - u16* deposit_p = mFI_GetDepositP(bx, bz); + int res = FALSE; + u16* deposit_p = mFI_GetDepositP(bx, bz); - if (deposit_p != NULL) { - res = mFI_SetDeposit(deposit_p, ut_x, ut_z, type); - } + if (deposit_p != NULL) { + res = mFI_SetDeposit(deposit_p, ut_x, ut_z, type); + } - return res; + return res; } /* @unused @fabricated */ @@ -2221,7 +2148,7 @@ extern MATCH_FORCESTRIP void mFI_BkUtNum2DepositON(int bx, int bz, int ut_x, int */ extern void mFI_BkUtNum2DepositOFF(int bx, int bz, int ut_x, int ut_z) { - mFI_BkUtNum2SetDeposit(bx, bz, ut_x, ut_z, mFI_DEPOSIT_OFF); + mFI_BkUtNum2SetDeposit(bx, bz, ut_x, ut_z, mFI_DEPOSIT_OFF); } /* @unused @fabricated */ @@ -2232,1587 +2159,1353 @@ extern MATCH_FORCESTRIP int mFI_BkUtNum2DepositGet(int bx, int bz, int ut_x, int */ static int mFI_UtNum2SetDeposit(int ut_x, int ut_z, int type) { - int res = FALSE; - int bx; - int bz; - int b_ut_x; - int b_ut_z; + int res = FALSE; + int bx; + int bz; + int b_ut_x; + int b_ut_z; - if (mFI_UtNum2BlockNum(&bx, &bz, ut_x, ut_z) == TRUE && mFI_GetUtNumInBK(&b_ut_x, &b_ut_z, ut_x, ut_z) == TRUE) { - res = mFI_BkUtNum2SetDeposit(bx, bz, b_ut_x, b_ut_z, type); - } + if (mFI_UtNum2BlockNum(&bx, &bz, ut_x, ut_z) == TRUE && mFI_GetUtNumInBK(&b_ut_x, &b_ut_z, ut_x, ut_z) == TRUE) { + res = mFI_BkUtNum2SetDeposit(bx, bz, b_ut_x, b_ut_z, type); + } - return res; + return res; } extern void mFI_UtNum2DepositON(int ut_x, int ut_z) { - mFI_UtNum2SetDeposit(ut_x, ut_z, mFI_DEPOSIT_ON); + mFI_UtNum2SetDeposit(ut_x, ut_z, mFI_DEPOSIT_ON); } extern void mFI_UtNum2DepositOFF(int ut_x, int ut_z) { - mFI_UtNum2SetDeposit(ut_x, ut_z, mFI_DEPOSIT_OFF); + mFI_UtNum2SetDeposit(ut_x, ut_z, mFI_DEPOSIT_OFF); } extern int mFI_UtNum2DepositGet(int ut_x, int ut_z) { - return mFI_UtNum2SetDeposit(ut_x, ut_z, mFI_DEPOSIT_GET); + return mFI_UtNum2SetDeposit(ut_x, ut_z, mFI_DEPOSIT_GET); } extern void mFI_Wpos2DepositON(xyz_t wpos) { - int ut_x; - int ut_z; + int ut_x; + int ut_z; - mFI_Wpos2UtNum(&ut_x, &ut_z, wpos); - mFI_UtNum2DepositON(ut_x, ut_z); + mFI_Wpos2UtNum(&ut_x, &ut_z, wpos); + mFI_UtNum2DepositON(ut_x, ut_z); } extern void mFI_Wpos2DepositOFF(xyz_t wpos) { - int ut_x; - int ut_z; + int ut_x; + int ut_z; - mFI_Wpos2UtNum(&ut_x, &ut_z, wpos); - mFI_UtNum2DepositOFF(ut_x, ut_z); + mFI_Wpos2UtNum(&ut_x, &ut_z, wpos); + mFI_UtNum2DepositOFF(ut_x, ut_z); } extern int mFI_Wpos2DepositGet(xyz_t wpos) { - int ut_x; - int ut_z; + int ut_x; + int ut_z; - mFI_Wpos2UtNum(&ut_x, &ut_z, wpos); - return mFI_UtNum2DepositGet(ut_x, ut_z); + mFI_Wpos2UtNum(&ut_x, &ut_z, wpos); + return mFI_UtNum2DepositGet(ut_x, ut_z); } extern int mFI_CheckItemNoHole(mActor_name_t item) { - int res = FALSE; + int res = FALSE; - if (item >= HOLE_START && item <= HOLE_END || item == HOLE_SHINE) { - res = TRUE; - } + if (item >= HOLE_START && item <= HOLE_END || item == HOLE_SHINE) { + res = TRUE; + } - return res; + return res; } /* @unused extern int mFI_CheckCanDeposit(xyz_t wpos?) */ static int mFI_CheckNothing(mActor_name_t* item, xyz_t wpos) { - return FALSE; + return FALSE; } static int mFI_CheckDigHole(mActor_name_t* item, xyz_t wpos) { - int res = FALSE; + int res = FALSE; - if (mFI_CheckItemNoHole(*item) == TRUE && mFI_Wpos2DepositGet(wpos) == TRUE) { - res = TRUE; - } + if (mFI_CheckItemNoHole(*item) == TRUE && mFI_Wpos2DepositGet(wpos) == TRUE) { + res = TRUE; + } - return res; + return res; } static int mFI_CheckDigHoleFillin(mActor_name_t* item, xyz_t wpos) { - int res = FALSE; + int res = FALSE; - if (mFI_CheckItemNoHole(*item) == TRUE && mFI_Wpos2DepositGet(wpos) == FALSE) { - res = TRUE; - } + if (mFI_CheckItemNoHole(*item) == TRUE && mFI_Wpos2DepositGet(wpos) == FALSE) { + res = TRUE; + } - return res; + return res; } static int mFI_CheckDigNoItem(mActor_name_t* item, xyz_t wpos) { - int res = FALSE; + int res = FALSE; - if (*item == EMPTY_NO) { - res = TRUE; - } + if (*item == EMPTY_NO) { + res = TRUE; + } - return res; + return res; } static int mFI_CheckDigRemoveItem(mActor_name_t* item, xyz_t wpos) { - int res = FALSE; + int res = FALSE; - if ( - (*item >= FLOWER_LEAVES_PANSIES0 && *item <= FLOWER_TULIP2) || - (*item >= TREE_STUMP001 && *item <= TREE_STUMP004) || - (*item >= GRASS_A && *item <= GRASS_C) || - (*item == TREE_SAPLING) || - (*item == TREE_APPLE_SAPLING) || - (*item == TREE_ORANGE_SAPLING) || - (*item == TREE_PEACH_SAPLING) || - (*item == TREE_PEAR_SAPLING) || - (*item == TREE_CHERRY_SAPLING) || - (*item == TREE_1000BELLS_SAPLING) || - (*item == TREE_10000BELLS_SAPLING) || - (*item == TREE_30000BELLS_SAPLING) || - (*item == TREE_100BELLS_SAPLING) || - (*item == DEAD_SAPLING) || - (*item >= TREE_PALM_STUMP001 && *item <= TREE_PALM_STUMP004) || - (*item == TREE_PALM_SAPLING) || - (*item == DEAD_PALM_SAPLING) || - (*item >= CEDAR_TREE_STUMP001 && *item <= CEDAR_TREE_STUMP004) || - (*item == CEDAR_TREE_SAPLING) || - (*item == DEAD_CEDAR_SAPLING) || - (*item >= GOLD_TREE_STUMP001 && *item <= GOLD_TREE_STUMP004) || - (*item == GOLD_TREE_SAPLING) || - (*item == DEAD_GOLD_SAPLING) - ) { - res = TRUE; - } + if ((*item >= FLOWER_LEAVES_PANSIES0 && *item <= FLOWER_TULIP2) || + (*item >= TREE_STUMP001 && *item <= TREE_STUMP004) || (*item >= GRASS_A && *item <= GRASS_C) || + (*item == TREE_SAPLING) || (*item == TREE_APPLE_SAPLING) || (*item == TREE_ORANGE_SAPLING) || + (*item == TREE_PEACH_SAPLING) || (*item == TREE_PEAR_SAPLING) || (*item == TREE_CHERRY_SAPLING) || + (*item == TREE_1000BELLS_SAPLING) || (*item == TREE_10000BELLS_SAPLING) || (*item == TREE_30000BELLS_SAPLING) || + (*item == TREE_100BELLS_SAPLING) || (*item == DEAD_SAPLING) || + (*item >= TREE_PALM_STUMP001 && *item <= TREE_PALM_STUMP004) || (*item == TREE_PALM_SAPLING) || + (*item == DEAD_PALM_SAPLING) || (*item >= CEDAR_TREE_STUMP001 && *item <= CEDAR_TREE_STUMP004) || + (*item == CEDAR_TREE_SAPLING) || (*item == DEAD_CEDAR_SAPLING) || + (*item >= GOLD_TREE_STUMP001 && *item <= GOLD_TREE_STUMP004) || (*item == GOLD_TREE_SAPLING) || + (*item == DEAD_GOLD_SAPLING)) { + res = TRUE; + } - return res; + return res; } static int mFI_CheckDigGetItem(mActor_name_t* item, xyz_t wpos) { - int res = FALSE; - - if (mFI_Wpos2DepositGet(wpos) == TRUE) { - if (mFI_CheckItemNoHole(*item) == FALSE) { - res = TRUE; - } - } - else { - int valid = (*item >= BURIED_PITFALL_START && *item <= BURIED_PITFALL_END) || *item == SHINE_SPOT; + int res = FALSE; - if (valid == TRUE) { - item[0] = bg_item_fg_sub_dig2take_conv(*item); - res = TRUE; - } - } + if (mFI_Wpos2DepositGet(wpos) == TRUE) { + if (mFI_CheckItemNoHole(*item) == FALSE) { + res = TRUE; + } + } else { + int valid = (*item >= BURIED_PITFALL_HOLE_START && *item <= BURIED_PITFALL_HOLE_END) || *item == SHINE_SPOT; - return res; + if (valid == TRUE) { + item[0] = bg_item_fg_sub_dig2take_conv(*item); + res = TRUE; + } + } + + return res; } static int mFI_CheckDigDiffPosArea(xyz_t wpos0, xyz_t wpos1) { - int res = FALSE; + int res = FALSE; - if ( - (wpos0.x > wpos1.x + mFI_UT_WORLDSIZE_HALF_X_F) || - (wpos0.x < wpos1.x - mFI_UT_WORLDSIZE_HALF_X_F) || - (wpos0.z > wpos1.z + mFI_UT_WORLDSIZE_HALF_Z_F) || - (wpos0.z < wpos1.z - mFI_UT_WORLDSIZE_HALF_Z_F) - ) { - res = TRUE; - } + if ((wpos0.x > wpos1.x + mFI_UT_WORLDSIZE_HALF_X_F) || (wpos0.x < wpos1.x - mFI_UT_WORLDSIZE_HALF_X_F) || + (wpos0.z > wpos1.z + mFI_UT_WORLDSIZE_HALF_Z_F) || (wpos0.z < wpos1.z - mFI_UT_WORLDSIZE_HALF_Z_F)) { + res = TRUE; + } - return res; + return res; } typedef int (*mFI_DIG_CHECK_PROC)(mActor_name_t*, xyz_t); extern int mFI_GetDigStatus(mActor_name_t* item, xyz_t wpos, int golden_shovel) { - int status = mFI_DIGSTATUS_CANCEL; - mActor_name_t* dig_item_p = mFI_GetUnitFG(wpos); - item[0] = EMPTY_NO; + int status = mFI_DIGSTATUS_CANCEL; + mActor_name_t* dig_item_p = mFI_GetUnitFG(wpos); + item[0] = EMPTY_NO; - if (dig_item_p != NULL) { - item[0] = dig_item_p[0]; + if (dig_item_p != NULL) { + item[0] = dig_item_p[0]; - if (mCoBG_CheckHole(wpos) == TRUE) { - static mFI_DIG_CHECK_PROC dig_check[mFI_DIGSTATUS_NUM] = { - &mFI_CheckNothing, - &mFI_CheckDigHole, - &mFI_CheckDigHoleFillin, - &mFI_CheckDigNoItem, - &mFI_CheckDigRemoveItem, - &mFI_CheckDigGetItem - }; + if (mCoBG_CheckHole(wpos) == TRUE) { + static mFI_DIG_CHECK_PROC dig_check[mFI_DIGSTATUS_NUM] = { &mFI_CheckNothing, &mFI_CheckDigHole, + &mFI_CheckDigHoleFillin, &mFI_CheckDigNoItem, + &mFI_CheckDigRemoveItem, &mFI_CheckDigGetItem }; - static xyz_t old_pos = { 0.0f, 0.0f, 0.0f }; + static xyz_t old_pos = { 0.0f, 0.0f, 0.0f }; - int i; + int i; - for (i = 0; i < mFI_DIGSTATUS_NUM; i++) { - int res = (*dig_check[i])(item, wpos); + for (i = 0; i < mFI_DIGSTATUS_NUM; i++) { + int res = (*dig_check[i])(item, wpos); - if (res == TRUE) { - status = i; + if (res == TRUE) { + status = i; - if (i != mFI_DIGSTATUS_DIG) { - break; - } + if (i != mFI_DIGSTATUS_DIG) { + break; + } - if (golden_shovel == TRUE) { - + if (golden_shovel == TRUE) { - /* 10% chance of getting 100 bells with golden shovel */ - if (mFI_CheckDigDiffPosArea(wpos, old_pos) == TRUE && RANDOM(10) == 1) { - status = mFI_DIGSTATUS_GET_ITEM; - item[0] = ITM_MONEY_100; + /* 10% chance of getting 100 bells with golden shovel */ + if (mFI_CheckDigDiffPosArea(wpos, old_pos) == TRUE && RANDOM(10) == 1) { + status = mFI_DIGSTATUS_GET_ITEM; + item[0] = ITM_MONEY_100; + } + } + + old_pos = wpos; + break; + } } - } - - old_pos = wpos; - break; + } else if (mCoBG_CheckSkySwing(wpos) == TRUE) { + status = mFI_DIGSTATUS_MISS; } - } } - else if (mCoBG_CheckSkySwing(wpos) == TRUE) { - status = mFI_DIGSTATUS_MISS; - } - } - return status; + return status; } static void mFI_ClearHoleBlock_sub(mActor_name_t* fg_items_p) { - int i; + int i; - if (fg_items_p == NULL) { - return; - } - - for (i = 0; i < UT_TOTAL_NUM; i++) { - if (*fg_items_p >= HOLE_START && *fg_items_p <= HOLE_END) { - fg_items_p[0] = EMPTY_NO; - } - else if (*fg_items_p == HOLE_SHINE) { - fg_items_p[0] = EMPTY_NO; + if (fg_items_p == NULL) { + return; } - fg_items_p++; - } + for (i = 0; i < UT_TOTAL_NUM; i++) { + if (*fg_items_p >= HOLE_START && *fg_items_p <= HOLE_END) { + fg_items_p[0] = EMPTY_NO; + } else if (*fg_items_p == HOLE_SHINE) { + fg_items_p[0] = EMPTY_NO; + } + + fg_items_p++; + } } extern void mFI_ClearHoleBlock(int bx, int bz) { - mFI_ClearHoleBlock_sub(mFI_BkNumtoUtFGTop(bx, bz)); + mFI_ClearHoleBlock_sub(mFI_BkNumtoUtFGTop(bx, bz)); } extern void mFI_ClearBeecomb(int bx, int bz) { - mActor_name_t* fg_items_p = mFI_BkNumtoUtFGTop(bx, bz); - int i; - - if (fg_items_p != NULL) { - for (i = 0; i < UT_TOTAL_NUM; i++) { - if (*fg_items_p == HONEYCOMB) { - fg_items_p[0] = EMPTY_NO; - } + mActor_name_t* fg_items_p = mFI_BkNumtoUtFGTop(bx, bz); + int i; - fg_items_p++; + if (fg_items_p != NULL) { + for (i = 0; i < UT_TOTAL_NUM; i++) { + if (*fg_items_p == HONEYCOMB) { + fg_items_p[0] = EMPTY_NO; + } + + fg_items_p++; + } } - } } static void mFI_SetFGStructureKeep(mActor_name_t* item_p, mActor_name_t replace_item, int destroy_item) { - if (destroy_item == FALSE) { - mPB_keep_item(*item_p); - } + if (destroy_item == FALSE) { + mPB_keep_item(*item_p); + } - item_p[0] = replace_item; + item_p[0] = replace_item; } static mActor_name_t l_set_fg_table[3 * 3]; -static int mFI_SetStructure11( - mActor_name_t* fg_items_p, - mActor_name_t replace_item, - mActor_name_t fill_item, - int bx, - int bz, - int ut_x, - int ut_z, - int destroy_item -) { - fg_items_p += mFI_GetUtNum(ut_x, ut_z); - mFI_SetFGStructureKeep(fg_items_p, replace_item, destroy_item); - mFI_BkUtNum2DepositOFF(bx, bz, ut_x, ut_z); - mCoBG_Ut2SetDefaultOffset(ut_x + bx * UT_X_NUM, ut_z + bz * UT_Z_NUM); - return TRUE; +static int mFI_SetStructure11(mActor_name_t* fg_items_p, mActor_name_t replace_item, mActor_name_t fill_item, int bx, + int bz, int ut_x, int ut_z, int destroy_item) { + fg_items_p += mFI_GetUtNum(ut_x, ut_z); + mFI_SetFGStructureKeep(fg_items_p, replace_item, destroy_item); + mFI_BkUtNum2DepositOFF(bx, bz, ut_x, ut_z); + mCoBG_Ut2SetDefaultOffset(ut_x + bx * UT_X_NUM, ut_z + bz * UT_Z_NUM); + return TRUE; } -static int mFI_SetStructure21( - mActor_name_t* fg_items_p, - mActor_name_t replace_item, - mActor_name_t fill_item, - int bx, - int bz, - int ut_x, - int ut_z, - int destroy_item -) { - mActor_name_t* set_fg_table = l_set_fg_table; - int res = FALSE; +static int mFI_SetStructure21(mActor_name_t* fg_items_p, mActor_name_t replace_item, mActor_name_t fill_item, int bx, + int bz, int ut_x, int ut_z, int destroy_item) { + mActor_name_t* set_fg_table = l_set_fg_table; + int res = FALSE; - if (ut_x >= 0 && ut_x < UT_X_NUM - 1 && ut_z >= 0 && ut_z < UT_Z_NUM - 1) { - int i; + if (ut_x >= 0 && ut_x < UT_X_NUM - 1 && ut_z >= 0 && ut_z < UT_Z_NUM - 1) { + int i; - for (i = 0; i < 2; i++) { - set_fg_table[i] = fill_item; + for (i = 0; i < 2; i++) { + set_fg_table[i] = fill_item; + } + + set_fg_table[0] = replace_item; + for (i = 0; i < 2; i++) { + mFI_SetStructure11(fg_items_p, *set_fg_table, fill_item, bx, bz, ut_x + i, ut_z, destroy_item); + set_fg_table++; + } + + res = TRUE; } - set_fg_table[0] = replace_item; - for (i = 0; i < 2; i++) { - mFI_SetStructure11(fg_items_p, *set_fg_table, fill_item, bx, bz, ut_x + i, ut_z, destroy_item); - set_fg_table++; - } - - res = TRUE; - } - - return res; + return res; } -static int mFI_SetStructure22( - mActor_name_t* fg_items_p, - mActor_name_t replace_item, - mActor_name_t fill_item, - int bx, - int bz, - int ut_x, - int ut_z, - int destroy_item -) { - mActor_name_t* set_fg_table = l_set_fg_table; - int res = FALSE; +static int mFI_SetStructure22(mActor_name_t* fg_items_p, mActor_name_t replace_item, mActor_name_t fill_item, int bx, + int bz, int ut_x, int ut_z, int destroy_item) { + mActor_name_t* set_fg_table = l_set_fg_table; + int res = FALSE; - if (ut_x >= 0 && ut_x < UT_X_NUM - 1 && ut_z >= 0 && ut_z < UT_Z_NUM - 1) { - int i; - int j; + if (ut_x >= 0 && ut_x < UT_X_NUM - 1 && ut_z >= 0 && ut_z < UT_Z_NUM - 1) { + int i; + int j; - for (i = 0; i < 2 * 2; i++) { - set_fg_table[i] = fill_item; + for (i = 0; i < 2 * 2; i++) { + set_fg_table[i] = fill_item; + } + + set_fg_table[0] = replace_item; + for (i = 0; i < 2; i++) { + for (j = 0; j < 2; j++) { + mFI_SetStructure11(fg_items_p, *set_fg_table, fill_item, bx, bz, ut_x + j, ut_z + i, destroy_item); + set_fg_table++; + } + } + + res = TRUE; } - set_fg_table[0] = replace_item; - for (i = 0; i < 2; i++) { - for (j = 0; j < 2; j++) { - mFI_SetStructure11(fg_items_p, *set_fg_table, fill_item, bx, bz, ut_x + j, ut_z + i, destroy_item); - set_fg_table++; - } - } - - res = TRUE; - } - - return res; + return res; } -static int mFI_SetStructure23( - mActor_name_t* fg_items_p, - mActor_name_t replace_item, - mActor_name_t fill_item, - int bx, - int bz, - int ut_x, - int ut_z, - int destroy_item -) { - mActor_name_t* set_fg_table = l_set_fg_table; - int res = FALSE; +static int mFI_SetStructure23(mActor_name_t* fg_items_p, mActor_name_t replace_item, mActor_name_t fill_item, int bx, + int bz, int ut_x, int ut_z, int destroy_item) { + mActor_name_t* set_fg_table = l_set_fg_table; + int res = FALSE; - if (ut_x >= 0 && ut_x < UT_X_NUM - 1 && ut_z > 0 && ut_z < UT_Z_NUM - 1) { - int i; - int j; + if (ut_x >= 0 && ut_x < UT_X_NUM - 1 && ut_z > 0 && ut_z < UT_Z_NUM - 1) { + int i; + int j; - for (i = 0; i < 2 * 3; i++) { - set_fg_table[i] = fill_item; + for (i = 0; i < 2 * 3; i++) { + set_fg_table[i] = fill_item; + } + + set_fg_table[2] = replace_item; + for (i = -1; i < 2; i++) { + for (j = 0; j < 2; j++) { + mFI_SetStructure11(fg_items_p, *set_fg_table, fill_item, bx, bz, ut_x + j, ut_z + i, destroy_item); + set_fg_table++; + } + } + + res = TRUE; } - set_fg_table[2] = replace_item; - for (i = -1; i < 2; i++) { - for (j = 0; j < 2; j++) { - mFI_SetStructure11(fg_items_p, *set_fg_table, fill_item, bx, bz, ut_x + j, ut_z + i, destroy_item); - set_fg_table++; - } - } - - res = TRUE; - } - - return res; + return res; } -static int mFI_SetStructure32( - mActor_name_t* fg_items_p, - mActor_name_t replace_item, - mActor_name_t fill_item, - int bx, - int bz, - int ut_x, - int ut_z, - int destroy_item -) { - mActor_name_t* set_fg_table = l_set_fg_table; - int res = FALSE; +static int mFI_SetStructure32(mActor_name_t* fg_items_p, mActor_name_t replace_item, mActor_name_t fill_item, int bx, + int bz, int ut_x, int ut_z, int destroy_item) { + mActor_name_t* set_fg_table = l_set_fg_table; + int res = FALSE; - if (ut_x >= 0 && ut_x < UT_X_NUM - 1 && ut_z > 0 && ut_z < UT_Z_NUM - 1) { - int i; - int j; + if (ut_x >= 0 && ut_x < UT_X_NUM - 1 && ut_z > 0 && ut_z < UT_Z_NUM - 1) { + int i; + int j; - for (i = 0; i < 3 * 2; i++) { - set_fg_table[i] = fill_item; + for (i = 0; i < 3 * 2; i++) { + set_fg_table[i] = fill_item; + } + + set_fg_table[1] = replace_item; + for (i = 0; i < 2; i++) { + for (j = -1; j < 2; j++) { + mFI_SetStructure11(fg_items_p, *set_fg_table, fill_item, bx, bz, ut_x + j, ut_z + i, destroy_item); + set_fg_table++; + } + } + + res = TRUE; } - set_fg_table[1] = replace_item; - for (i = 0; i < 2; i++) { - for (j = -1; j < 2; j++) { - mFI_SetStructure11(fg_items_p, *set_fg_table, fill_item, bx, bz, ut_x + j, ut_z + i, destroy_item); - set_fg_table++; - } - } - - res = TRUE; - } - - return res; + return res; } -static int mFI_SetStructure33( - mActor_name_t* fg_items_p, - mActor_name_t replace_item, - mActor_name_t fill_item, - int bx, - int bz, - int ut_x, - int ut_z, - int destroy_item -) { - mActor_name_t* set_fg_table = l_set_fg_table; - int res = FALSE; +static int mFI_SetStructure33(mActor_name_t* fg_items_p, mActor_name_t replace_item, mActor_name_t fill_item, int bx, + int bz, int ut_x, int ut_z, int destroy_item) { + mActor_name_t* set_fg_table = l_set_fg_table; + int res = FALSE; - if (ut_x > 0 && ut_x < UT_X_NUM - 1 && ut_z > 0 && ut_z < UT_Z_NUM - 1) { - int i; - int j; + if (ut_x > 0 && ut_x < UT_X_NUM - 1 && ut_z > 0 && ut_z < UT_Z_NUM - 1) { + int i; + int j; - for (i = 0; i < 3 * 3; i++) { - set_fg_table[i] = fill_item; + for (i = 0; i < 3 * 3; i++) { + set_fg_table[i] = fill_item; + } + + set_fg_table[4] = replace_item; + for (i = -1; i < 2; i++) { + for (j = -1; j < 2; j++) { + mFI_SetStructure11(fg_items_p, *set_fg_table, fill_item, bx, bz, ut_x + j, ut_z + i, destroy_item); + set_fg_table++; + } + } + + res = TRUE; } - set_fg_table[4] = replace_item; - for (i = -1; i < 2; i++) { - for (j = -1; j < 2; j++) { - mFI_SetStructure11(fg_items_p, *set_fg_table, fill_item, bx, bz, ut_x + j, ut_z + i, destroy_item); - set_fg_table++; - } - } - - res = TRUE; - } - - return res; + return res; } -static int mFI_SetStructure33_main_back( - mActor_name_t* fg_items_p, - mActor_name_t replace_item, - mActor_name_t fill_item, - int bx, - int bz, - int ut_x, - int ut_z, - int destroy_item -) { - mActor_name_t* set_fg_table = l_set_fg_table; - int res = FALSE; +static int mFI_SetStructure33_main_back(mActor_name_t* fg_items_p, mActor_name_t replace_item, mActor_name_t fill_item, + int bx, int bz, int ut_x, int ut_z, int destroy_item) { + mActor_name_t* set_fg_table = l_set_fg_table; + int res = FALSE; - if (ut_x > 0 && ut_x < UT_X_NUM - 1 && ut_z > 0 && ut_z < UT_Z_NUM - 1) { - int i; - int j; + if (ut_x > 0 && ut_x < UT_X_NUM - 1 && ut_z > 0 && ut_z < UT_Z_NUM - 1) { + int i; + int j; - for (i = 0; i < 3 * 3; i++) { - set_fg_table[i] = fill_item; + for (i = 0; i < 3 * 3; i++) { + set_fg_table[i] = fill_item; + } + + set_fg_table[1] = replace_item; + for (i = -1; i < 2; i++) { + for (j = -1; j < 2; j++) { + mFI_SetStructure11(fg_items_p, *set_fg_table, fill_item, bx, bz, ut_x + j, ut_z + i, destroy_item); + set_fg_table++; + } + } + + res = TRUE; } - set_fg_table[1] = replace_item; - for (i = -1; i < 2; i++) { - for (j = -1; j < 2; j++) { - mFI_SetStructure11(fg_items_p, *set_fg_table, fill_item, bx, bz, ut_x + j, ut_z + i, destroy_item); - set_fg_table++; - } - } - - res = TRUE; - } - - return res; + return res; } static u8 l_structure_set_type[STRUCTURE_END - STRUCTURE_START] = { - 0x0c, 0x0c, 0x0c, 0x0c, 0x05, 0x05, 0x05, 0x05, - 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0a, 0x0a, - 0x0a, 0x0a, 0x05, 0x05, 0x00, 0x06, 0x06, 0x05, - 0x05, 0x06, 0x05, 0x00, 0x06, 0x06, 0x00, 0x00, - 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x05, 0x05, - 0x04, 0x0a, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, - 0x0c, 0x0c, 0x0c + 0x0c, 0x0c, 0x0c, 0x0c, 0x05, 0x05, 0x05, 0x05, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0c, 0x0a, 0x0a, 0x0a, 0x0a, 0x05, 0x05, 0x00, 0x06, 0x06, 0x05, 0x05, 0x06, 0x05, + 0x00, 0x06, 0x06, 0x00, 0x00, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x05, 0x05, 0x04, 0x0a, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c }; typedef int (*mFI_SET_STRUCTURE_PROC)(mActor_name_t*, mActor_name_t, mActor_name_t, int, int, int, int, int); extern int mFI_SetFGStructure_common(mActor_name_t structure_name, int bx, int bz, int ut_x, int ut_z, int set_type) { - static mFI_SET_STRUCTURE_PROC set_structure[12] = { - &mFI_SetStructure11, - &mFI_SetStructure21, - &mFI_SetStructure22, - &mFI_SetStructure23, - &mFI_SetStructure32, - &mFI_SetStructure33, - &mFI_SetStructure33_main_back, + static mFI_SET_STRUCTURE_PROC set_structure[12] = { + &mFI_SetStructure11, &mFI_SetStructure21, &mFI_SetStructure22, &mFI_SetStructure23, + &mFI_SetStructure32, &mFI_SetStructure33, &mFI_SetStructure33_main_back, - &mFI_SetStructure11, - &mFI_SetStructure22, - &mFI_SetStructure23, - &mFI_SetStructure33, - &mFI_SetStructure33_main_back - }; + &mFI_SetStructure11, &mFI_SetStructure22, &mFI_SetStructure23, &mFI_SetStructure33, + &mFI_SetStructure33_main_back + }; - static mActor_name_t fill_name_table[mFI_SET_STRUCTURE_NUM] = { RSV_NO, EMPTY_NO }; - static int keep_status_table[mFI_SET_STRUCTURE_NUM] = { FALSE, TRUE }; + static mActor_name_t fill_name_table[mFI_SET_STRUCTURE_NUM] = { RSV_NO, EMPTY_NO }; + static int keep_status_table[mFI_SET_STRUCTURE_NUM] = { FALSE, TRUE }; - mActor_name_t* fg_p = NULL; - int keep_status = keep_status_table[set_type]; - int res = FALSE; + mActor_name_t* fg_p = NULL; + int keep_status = keep_status_table[set_type]; + int res = FALSE; - if (mFI_CheckFieldData() == TRUE) { - if (mFI_GET_TYPE(mFI_GetFieldId()) == mFI_FIELD_FG) { - if (mFI_BlockCheck(bx, bz) == TRUE && ITEM_NAME_GET_TYPE(structure_name) == NAME_TYPE_STRUCT) { - fg_p = mFI_BkNumtoUtFGTop(bx, bz); - } - } - else { - int fg_bx = bx - 1; - int fg_bz = bz - 1; + if (mFI_CheckFieldData() == TRUE) { + if (mFI_GET_TYPE(mFI_GetFieldId()) == mFI_FIELD_FG) { + if (mFI_BlockCheck(bx, bz) == TRUE && ITEM_NAME_GET_TYPE(structure_name) == NAME_TYPE_STRUCT) { + fg_p = mFI_BkNumtoUtFGTop(bx, bz); + } + } else { + int fg_bx = bx - 1; + int fg_bz = bz - 1; - if (fg_bx >= 0 && fg_bx < FG_BLOCK_X_NUM && fg_bz >= 0 && fg_bz < FG_BLOCK_Z_NUM) { - fg_p = Save_Get(fg[fg_bz][fg_bx]).items[0]; - } - } - - if (fg_p != NULL) { - u8 structure_type = l_structure_set_type[(int)(structure_name - STRUCTURE_START)]; - - if (structure_type < 0xC) { - mActor_name_t fill_name = fill_name_table[set_type]; - - if (set_type == mFI_SET_STRUCTURE_REMOVE) { - if (structure_type >= 7) { - structure_name = mFM_GetReseveName(bx, bz); - } - else { - structure_name = fill_name; - } + if (fg_bx >= 0 && fg_bx < FG_BLOCK_X_NUM && fg_bz >= 0 && fg_bz < FG_BLOCK_Z_NUM) { + fg_p = Save_Get(fg[fg_bz][fg_bx]).items[0]; + } } - res = (*set_structure[structure_type])(fg_p, structure_name, fill_name, bx, bz, ut_x, ut_z, keep_status); + if (fg_p != NULL) { + u8 structure_type = l_structure_set_type[(int)(structure_name - STRUCTURE_START)]; - if (res == TRUE) { - mFI_SetFGUpData(); + if (structure_type < 0xC) { + mActor_name_t fill_name = fill_name_table[set_type]; + + if (set_type == mFI_SET_STRUCTURE_REMOVE) { + if (structure_type >= 7) { + structure_name = mFM_GetReseveName(bx, bz); + } else { + structure_name = fill_name; + } + } + + res = + (*set_structure[structure_type])(fg_p, structure_name, fill_name, bx, bz, ut_x, ut_z, keep_status); + + if (res == TRUE) { + mFI_SetFGUpData(); + } + } } - } } - } - return res; + return res; } -extern int mFI_CheckStructureArea(int ut_x, int ut_z, mActor_name_t structure_name, int structure_ut_x, int structure_ut_z) { - static s8 set_area_table[12][4] = { - { - 0, 0, - 0, 0 - }, - { - 0, 1, - 0, 0 - }, - { - 0, 1, - 0, 1 - }, - { - -1, 1, - 0, 1 - }, - { - -1, 1, - -1, 1 - }, - { - -1, 1, - -1, 1 - }, - { - 0, 0, - 0, 0 - }, +extern int mFI_CheckStructureArea(int ut_x, int ut_z, mActor_name_t structure_name, int structure_ut_x, + int structure_ut_z) { + static s8 set_area_table[12][4] = { { 0, 0, 0, 0 }, { 0, 1, 0, 0 }, { 0, 1, 0, 1 }, { -1, 1, 0, 1 }, + { -1, 1, -1, 1 }, { -1, 1, -1, 1 }, { 0, 0, 0, 0 }, - { - 0, 1, - 0, 1 - }, - { - -1, 1, - -1, 1 - }, - { - -1, 1, - -1, 1 - }, - { - 0, 0, - 0, 0 - }, - { - 0, 0, - 0, 0 + { 0, 1, 0, 1 }, { -1, 1, -1, 1 }, { -1, 1, -1, 1 }, { 0, 0, 0, 0 }, + { 0, 0, 0, 0 } }; + + int start_x = structure_ut_x; + int start_z = structure_ut_z; + u8 structure_type; + s8* set_area; + int end_x = structure_ut_x; + int end_z = structure_ut_z; + int z; + + if (ITEM_NAME_GET_TYPE(structure_name) == NAME_TYPE_STRUCT) { + structure_type = l_structure_set_type[(int)(structure_name - STRUCTURE_START)]; + + if (structure_type < 12) { + set_area = set_area_table[structure_type]; + + start_x += set_area[0]; + end_x += set_area[1]; + start_z += set_area[2]; + end_z += set_area[3]; + } } - }; - int start_x = structure_ut_x; - int start_z = structure_ut_z; - u8 structure_type; - s8* set_area; - int end_x = structure_ut_x; - int end_z = structure_ut_z; - int z; - - if (ITEM_NAME_GET_TYPE(structure_name) == NAME_TYPE_STRUCT) { - structure_type = l_structure_set_type[(int)(structure_name - STRUCTURE_START)]; - - if (structure_type < 12) { - set_area = set_area_table[structure_type]; - - start_x += set_area[0]; - end_x += set_area[1]; - start_z += set_area[2]; - end_z += set_area[3]; + for (z = start_z; z < end_z + 1; z++) { + int x; + for (x = start_x; x < end_x + 1; x++) { + if (ut_x == x && ut_z == z) { + return TRUE; + } + } } - } - for (z = start_z; z < end_z + 1; z++) { - int x; - for (x = start_x; x < end_x + 1; x++) { - if (ut_x == x && ut_z == z) { - return TRUE; - } - } - } - - return FALSE; + return FALSE; } -/* +/* * @BUG: The RNG call will only be in the range [0, 3], * meaning you can never get an orange unless your town's * fruit is peaches and you roll a 3 (peach). - * + * * Additionally, this function is "bad" because it gives a 50% chance * for the next fruit to be rolled if you have apples, pears, or cherries. * The other two fruits are 25% each. */ #ifndef BUGFIXES extern mActor_name_t mFI_GetOtherFruit() { - mActor_name_t other_fruit = ITM_FOOD_START | RANDOM(4); + mActor_name_t other_fruit = ITM_FOOD_START | RANDOM(4); - if (other_fruit == Save_Get(fruit)) { - other_fruit++; - } + if (other_fruit == Save_Get(fruit)) { + other_fruit++; + } - return other_fruit; + return other_fruit; } #else /* This implementation gives an equal 25% chance for all non-native fruit to be rolled */ extern mActor_name_t mFI_GetOtherFruit() { - mActor_name_t other_fruit = ITM_FOOD_START | RANDOM(4); + mActor_name_t other_fruit = ITM_FOOD_START | RANDOM(4); - /* simple fix is to add one if the random fruit is also greater than the town fruit */ - if (other_fruit >= Save_Get(fruit)) { - other_fruit++; - } + /* simple fix is to add one if the random fruit is also greater than the town fruit */ + if (other_fruit >= Save_Get(fruit)) { + other_fruit++; + } - return other_fruit; + return other_fruit; } #endif extern int mFI_CheckFGNpcOn(mActor_name_t item) { - int res = FALSE; + int res = FALSE; - if (item == EMPTY_NO) { - res = TRUE; - } - else { - switch (ITEM_NAME_GET_TYPE(item)) { - case NAME_TYPE_ITEM0: - { - if ( - (item == TREE_SAPLING) || - (item == TREE_APPLE_SAPLING) || - (item == TREE_ORANGE_SAPLING) || - (item == TREE_PEACH_SAPLING) || - (item == TREE_PEAR_SAPLING) || - (item == TREE_CHERRY_SAPLING) || - (item == TREE_1000BELLS_SAPLING) || - (item == TREE_10000BELLS_SAPLING) || - (item == TREE_30000BELLS_SAPLING) || - (item == TREE_100BELLS_SAPLING) || - (item == TREE_PALM_SAPLING) || - (item == CEDAR_TREE_SAPLING) || - (item == GOLD_TREE_SAPLING) || - (item >= FLOWER_LEAVES_PANSIES0 && item <= FLOWER_TULIP2) || - (item >= GRASS_A && item <= GRASS_C) - ){ - res = TRUE; - } - - break; - } - - case NAME_TYPE_FTR0: - case NAME_TYPE_ITEM1: - case NAME_TYPE_FTR1: - case NAME_TYPE_WARP: - case NAME_TYPE_ITEM2: - { + if (item == EMPTY_NO) { res = TRUE; - break; - } - } - } + } else { + switch (ITEM_NAME_GET_TYPE(item)) { + case NAME_TYPE_ITEM0: { + if ((item == TREE_SAPLING) || (item == TREE_APPLE_SAPLING) || (item == TREE_ORANGE_SAPLING) || + (item == TREE_PEACH_SAPLING) || (item == TREE_PEAR_SAPLING) || (item == TREE_CHERRY_SAPLING) || + (item == TREE_1000BELLS_SAPLING) || (item == TREE_10000BELLS_SAPLING) || + (item == TREE_30000BELLS_SAPLING) || (item == TREE_100BELLS_SAPLING) || + (item == TREE_PALM_SAPLING) || (item == CEDAR_TREE_SAPLING) || (item == GOLD_TREE_SAPLING) || + (item >= FLOWER_LEAVES_PANSIES0 && item <= FLOWER_TULIP2) || (item >= GRASS_A && item <= GRASS_C)) { + res = TRUE; + } - return res; + break; + } + + case NAME_TYPE_FTR0: + case NAME_TYPE_ITEM1: + case NAME_TYPE_FTR1: + case NAME_TYPE_WARP: + case NAME_TYPE_ITEM2: { + res = TRUE; + break; + } + } + } + + return res; } extern int mFI_CheckLapPolice(int bx, int bz, int ut_x, int ut_z) { - int p_bx; - int p_bz; - int p_ut_x; - int p_ut_z; + int p_bx; + int p_bz; + int p_ut_x; + int p_ut_z; - int res = FALSE; + int res = FALSE; - if (mFI_CheckFieldData() == TRUE && mFI_GET_TYPE(mFI_GetFieldId()) == mFI_FIELD_FG) { - mFM_GetPolicePos(&p_bx, &p_bz, &p_ut_x, &p_ut_z); + if (mFI_CheckFieldData() == TRUE && mFI_GET_TYPE(mFI_GetFieldId()) == mFI_FIELD_FG) { + mFM_GetPolicePos(&p_bx, &p_bz, &p_ut_x, &p_ut_z); - if (bx == p_bx && bz == p_bz && ut_x == p_ut_x && ut_z == p_ut_z) { - res = TRUE; + if (bx == p_bx && bz == p_bz && ut_x == p_ut_x && ut_z == p_ut_z) { + res = TRUE; + } } - } - return res; + return res; } extern int mFI_GetWaveUtinBlock(int* ut_x, int* ut_z, int bx, int bz) { - mCoBG_Collision_u* col_p; - mCoBG_Collision_u* col; - int num; - int sel; - int i; - int res; + mCoBG_Collision_u* col_p; + mCoBG_Collision_u* col; + int num; + int sel; + int i; + int res; - num = 0; - res = FALSE; - ut_x[0] = 0; - ut_z[0] = 0; - - col_p = mFI_GetBkNum2ColTop(bx, bz); - col = col_p; + num = 0; + res = FALSE; + ut_x[0] = 0; + ut_z[0] = 0; - if (col_p != NULL) { - for (i = 0; i < UT_TOTAL_NUM; i++) { - if (mCoBG_CheckWaveAttr(col_p->data.unit_attribute) == TRUE) { - num++; - } + col_p = mFI_GetBkNum2ColTop(bx, bz); + col = col_p; - col_p++; - } + if (col_p != NULL) { + for (i = 0; i < UT_TOTAL_NUM; i++) { + if (mCoBG_CheckWaveAttr(col_p->data.unit_attribute) == TRUE) { + num++; + } - if (num > 0) { - col_p = col; - sel = RANDOM(num); - - for (i = 0; i < UT_TOTAL_NUM; i++) { - if (mCoBG_CheckWaveAttr(col_p->data.unit_attribute) == TRUE) { - if (sel <= 0) { - ut_x[0] = i & 0xF; - ut_z[0] = i >> 4; - res = TRUE; - - break; - } - else { - sel--; - } + col_p++; } - col_p++; - } - } - } + if (num > 0) { + col_p = col; + sel = RANDOM(num); - return res; + for (i = 0; i < UT_TOTAL_NUM; i++) { + if (mCoBG_CheckWaveAttr(col_p->data.unit_attribute) == TRUE) { + if (sel <= 0) { + ut_x[0] = i & 0xF; + ut_z[0] = i >> 4; + res = TRUE; + + break; + } else { + sel--; + } + } + + col_p++; + } + } + } + + return res; } -extern int mFI_ClearBlockItemRandom_common(mActor_name_t item, int clear_num, mActor_name_t* fg_p, u16* deposit_p, int delete_buried) { - static u16 candidate[UT_Z_NUM]; - - u16* candidate_p = candidate; - mActor_name_t* fg_p2 = fg_p; - u16* deposit_p2 = deposit_p; - int num = 0; - int selected; - int cleared_num = 0; - int ut_z; - int ut_x; +extern int mFI_ClearBlockItemRandom_common(mActor_name_t item, int clear_num, mActor_name_t* fg_p, u16* deposit_p, + int delete_buried) { + static u16 candidate[UT_Z_NUM]; - if (clear_num > 0 && clear_num <= UT_TOTAL_NUM) { - if (fg_p != NULL) { - bzero(candidate, sizeof(candidate)); + u16* candidate_p = candidate; + mActor_name_t* fg_p2 = fg_p; + u16* deposit_p2 = deposit_p; + int num = 0; + int selected; + int cleared_num = 0; + int ut_z; + int ut_x; - for (ut_z = 0; ut_z < UT_Z_NUM; ut_z++) { - for (ut_x = 0; ut_x < UT_X_NUM; ut_x++) { - if (*fg_p == item && (delete_buried == TRUE || (deposit_p != NULL && mFI_GetLineDeposit(deposit_p, ut_x) == FALSE))) { - num++; - candidate_p[0] |= (1 << ut_x); - } + if (clear_num > 0 && clear_num <= UT_TOTAL_NUM) { + if (fg_p != NULL) { + bzero(candidate, sizeof(candidate)); - fg_p++; + for (ut_z = 0; ut_z < UT_Z_NUM; ut_z++) { + for (ut_x = 0; ut_x < UT_X_NUM; ut_x++) { + if (*fg_p == item && (delete_buried == TRUE || + (deposit_p != NULL && mFI_GetLineDeposit(deposit_p, ut_x) == FALSE))) { + num++; + candidate_p[0] |= (1 << ut_x); + } + + fg_p++; + } + + deposit_p++; + candidate_p++; + } } - deposit_p++; - candidate_p++; - } + if (num > 0) { + if (num <= clear_num) { + fg_p = fg_p2; + deposit_p = deposit_p2; + candidate_p = candidate; + + for (ut_z = 0; ut_z < UT_Z_NUM; ut_z++) { + for (ut_x = 0; ut_x < UT_X_NUM; ut_x++) { + if (((candidate_p[0] >> ut_x) & 1) == 1) { + fg_p[0] = EMPTY_NO; + + if (delete_buried == TRUE && deposit_p != NULL) { + mFI_LineDepositOFF(deposit_p, ut_x); + } + } + + fg_p++; + } + + deposit_p++; + candidate_p++; + } + + cleared_num = num; + } else { + while (clear_num != 0 && num != 0) { + fg_p = fg_p2; + deposit_p = deposit_p2; + candidate_p = candidate; + + selected = RANDOM(num); + + for (ut_z = 0; ut_z < UT_Z_NUM; ut_z++) { + for (ut_x = 0; ut_x < UT_X_NUM; ut_x++) { + if (((candidate_p[0] >> ut_x) & 1) == 1) { + if (selected <= 0) { + fg_p[0] = EMPTY_NO; + + if (delete_buried == TRUE && deposit_p != NULL) { + mFI_LineDepositOFF(deposit_p, ut_x); + } + + ut_z = UT_Z_NUM; + num--; + break; + } else { + selected--; + } + } + + fg_p++; + } + + deposit_p++; + candidate_p++; + } + + cleared_num++; + clear_num--; + } + } + } } - if (num > 0) { - if (num <= clear_num) { - fg_p = fg_p2; - deposit_p = deposit_p2; - candidate_p = candidate; - - for (ut_z = 0; ut_z < UT_Z_NUM; ut_z++) { - for (ut_x = 0; ut_x < UT_X_NUM; ut_x++) { - if (((candidate_p[0] >> ut_x) & 1) == 1) { - fg_p[0] = EMPTY_NO; - - if (delete_buried == TRUE && deposit_p != NULL) { - mFI_LineDepositOFF(deposit_p, ut_x); - } - } - - fg_p++; - } - - deposit_p++; - candidate_p++; - } - - cleared_num = num; - } - else { - while (clear_num != 0 && num != 0) { - fg_p = fg_p2; - deposit_p = deposit_p2; - candidate_p = candidate; - - selected = RANDOM(num); - - for (ut_z = 0; ut_z < UT_Z_NUM; ut_z++) { - for (ut_x = 0; ut_x < UT_X_NUM; ut_x++) { - if (((candidate_p[0] >> ut_x) & 1) == 1) { - if (selected <= 0) { - fg_p[0] = EMPTY_NO; - - if (delete_buried == TRUE && deposit_p != NULL) { - mFI_LineDepositOFF(deposit_p, ut_x); - } - - ut_z = UT_Z_NUM; - num--; - break; - } - else { - selected--; - } - } - - fg_p++; - } - - deposit_p++; - candidate_p++; - } - - cleared_num++; - clear_num--; - } - } - } - } - - return cleared_num; + return cleared_num; } static int l_reserve_set_shell; extern void mFI_SetFirstSetShell() { - l_reserve_set_shell = mFI_SET_SHELL_NUM; + l_reserve_set_shell = mFI_SET_SHELL_NUM; } static int mFI_CheckSetShell() { - int res = FALSE; + int res = FALSE; - /* Refresh shells every 10th minute */ - if (Common_Get(time.rtc_time.min) % 10 == 0) { - res = TRUE; - } + /* Refresh shells every 10th minute */ + if (Common_Get(time.rtc_time.min) % 10 == 0) { + res = TRUE; + } - return res; + return res; } static int mFI_GetCanSetShellNum(u8* shell_num, int bx, int bz) { - mCoBG_Collision_u* col_p; - mActor_name_t* fg_p; - u16* deposit_p; - int valid_ut_num = 0; - int ut_z; - int ut_x; - - fg_p = mFI_BkNumtoUtFGTop(bx, bz); - col_p = mFI_GetBkNum2ColTop(bx, bz); - deposit_p = mFI_GetDepositP(bx, bz); + mCoBG_Collision_u* col_p; + mActor_name_t* fg_p; + u16* deposit_p; + int valid_ut_num = 0; + int ut_z; + int ut_x; - if (fg_p != NULL && col_p != NULL && deposit_p != NULL) { - for (ut_z = 0; ut_z < UT_Z_NUM; ut_z++) { - for (ut_x = 0; ut_x < UT_X_NUM; ut_x++) { - if (*fg_p == EMPTY_NO && mCoBG_CheckWaveAttr(col_p->data.unit_attribute) == TRUE) { - valid_ut_num++; - } - else if ( - ((*fg_p >= ITM_SHELL0 && *fg_p <= ITM_SHELL7) || *fg_p == ITM_FOOD_COCONUT) && - mFI_GetBlockDeposit(deposit_p, ut_x, ut_z) == FALSE - ) { - shell_num[0]++; - } + fg_p = mFI_BkNumtoUtFGTop(bx, bz); + col_p = mFI_GetBkNum2ColTop(bx, bz); + deposit_p = mFI_GetDepositP(bx, bz); - fg_p++; - col_p++; - } + if (fg_p != NULL && col_p != NULL && deposit_p != NULL) { + for (ut_z = 0; ut_z < UT_Z_NUM; ut_z++) { + for (ut_x = 0; ut_x < UT_X_NUM; ut_x++) { + if (*fg_p == EMPTY_NO && mCoBG_CheckWaveAttr(col_p->data.unit_attribute) == TRUE) { + valid_ut_num++; + } else if (((*fg_p >= ITM_SHELL0 && *fg_p <= ITM_SHELL7) || *fg_p == ITM_FOOD_COCONUT) && + mFI_GetBlockDeposit(deposit_p, ut_x, ut_z) == FALSE) { + shell_num[0]++; + } + + fg_p++; + col_p++; + } + } } - } - return valid_ut_num; + return valid_ut_num; } static u8 l_sandy_beach_bx[7] = { 1, 2, 3, 4, 5, mISL_BLOCK_X0, mISL_BLOCK_X1 }; static u8 l_sandy_beach_bz[7] = { 6, 6, 6, 6, 6, mISL_BLOCK_Z, mISL_BLOCK_Z }; -static void mFI_ResearchShell(u8* can_set_ut_num, u8* on_shell_num, int* total_set_num, int* total_blocks, xyz_t player_pos) { - int player_bx; - int player_bz; - int i; - - mFI_Wpos2BlockNum(&player_bx, &player_bz, player_pos); - for (i = 0; i < 7; i++) { - int bx = l_sandy_beach_bx[i]; - int bz = l_sandy_beach_bz[i]; - /* Don't refresh shells if the player is in the acre */ - if (bx != player_bx || bz != player_bz) { - u8 can_set_num; - - can_set_ut_num[0] = mFI_GetCanSetShellNum(on_shell_num, bx, bz); - can_set_num = *can_set_ut_num; - - if (can_set_num != 0) { - u8 on_num = *on_shell_num; - - if (on_shell_num[0] < mFI_MAX_SHELLS_PER_BLOCK) { - int add_shell_num = mFI_MAX_SHELLS_PER_BLOCK - on_num; - - if (add_shell_num > can_set_num) { - u8 add = add_shell_num - can_set_num; - - on_shell_num[0] = on_num + add; - total_set_num[0] += *can_set_ut_num; - } - else { - total_set_num[0] += add_shell_num; - } - - total_blocks[0]++; - } - else { - can_set_ut_num[0] = 0; - } - } - } - - can_set_ut_num++; - on_shell_num++; - } -} - -static void mFI_DivideShellSameSum(u8* can_set_ut_num, u8* shell_num_inblock, u8* on_shell_num, int* set_num, int* block_num) { - while (set_num[0] > 0 && block_num[0] > 0 && set_num[0] > block_num[0]) { +static void mFI_ResearchShell(u8* can_set_ut_num, u8* on_shell_num, int* total_set_num, int* total_blocks, + xyz_t player_pos) { + int player_bx; + int player_bz; int i; + mFI_Wpos2BlockNum(&player_bx, &player_bz, player_pos); for (i = 0; i < 7; i++) { - if (can_set_ut_num[0] != 0 && on_shell_num[0] < mFI_MAX_SHELLS_PER_BLOCK) { - shell_num_inblock[0]++; - on_shell_num[0]++; - set_num[0]--; + int bx = l_sandy_beach_bx[i]; + int bz = l_sandy_beach_bz[i]; + /* Don't refresh shells if the player is in the acre */ + if (bx != player_bx || bz != player_bz) { + u8 can_set_num; - if (on_shell_num[0] >= mFI_MAX_SHELLS_PER_BLOCK) { - block_num[0]--; + can_set_ut_num[0] = mFI_GetCanSetShellNum(on_shell_num, bx, bz); + can_set_num = *can_set_ut_num; + + if (can_set_num != 0) { + u8 on_num = *on_shell_num; + + if (on_shell_num[0] < mFI_MAX_SHELLS_PER_BLOCK) { + int add_shell_num = mFI_MAX_SHELLS_PER_BLOCK - on_num; + + if (add_shell_num > can_set_num) { + u8 add = add_shell_num - can_set_num; + + on_shell_num[0] = on_num + add; + total_set_num[0] += *can_set_ut_num; + } else { + total_set_num[0] += add_shell_num; + } + + total_blocks[0]++; + } else { + can_set_ut_num[0] = 0; + } + } } - } - shell_num_inblock++; - on_shell_num++; - can_set_ut_num++; + can_set_ut_num++; + on_shell_num++; } - - shell_num_inblock -= 7; - on_shell_num -= 7; - can_set_ut_num -= 7; - } } -static void mFI_DivideShellRandom(u8* can_set_ut_num, u8* shell_num_inblock, u8* on_shell_num, int set_num, int block_num) { - u8* can_set_ut_num_p = can_set_ut_num; - u8* shell_num_inblock_p = shell_num_inblock; - u8* on_shell_num_p = on_shell_num; +static void mFI_DivideShellSameSum(u8* can_set_ut_num, u8* shell_num_inblock, u8* on_shell_num, int* set_num, + int* block_num) { + while (set_num[0] > 0 && block_num[0] > 0 && set_num[0] > block_num[0]) { + int i; - while (block_num > 0 && set_num > 0) { - int selected_block; - int i; - - can_set_ut_num_p = can_set_ut_num; - shell_num_inblock_p = shell_num_inblock; - on_shell_num_p = on_shell_num; - selected_block = RANDOM(block_num); + for (i = 0; i < 7; i++) { + if (can_set_ut_num[0] != 0 && on_shell_num[0] < mFI_MAX_SHELLS_PER_BLOCK) { + shell_num_inblock[0]++; + on_shell_num[0]++; + set_num[0]--; - for (i = 0; i < 7; i++) { - if ((int)can_set_ut_num_p[0] > 0 && on_shell_num_p[0] < mFI_MAX_SHELLS_PER_BLOCK) { - if (selected_block <= 0) { - shell_num_inblock_p[0]++; - on_shell_num_p[0]++; + if (on_shell_num[0] >= mFI_MAX_SHELLS_PER_BLOCK) { + block_num[0]--; + } + } - if (on_shell_num_p[0] >= mFI_MAX_SHELLS_PER_BLOCK) { - block_num--; - } - - break; + shell_num_inblock++; + on_shell_num++; + can_set_ut_num++; } - else { - selected_block--; - } - } - can_set_ut_num_p++; - on_shell_num_p++; - shell_num_inblock_p++; + shell_num_inblock -= 7; + on_shell_num -= 7; + can_set_ut_num -= 7; } +} - set_num--; - } +static void mFI_DivideShellRandom(u8* can_set_ut_num, u8* shell_num_inblock, u8* on_shell_num, int set_num, + int block_num) { + u8* can_set_ut_num_p = can_set_ut_num; + u8* shell_num_inblock_p = shell_num_inblock; + u8* on_shell_num_p = on_shell_num; + + while (block_num > 0 && set_num > 0) { + int selected_block; + int i; + + can_set_ut_num_p = can_set_ut_num; + shell_num_inblock_p = shell_num_inblock; + on_shell_num_p = on_shell_num; + selected_block = RANDOM(block_num); + + for (i = 0; i < 7; i++) { + if ((int)can_set_ut_num_p[0] > 0 && on_shell_num_p[0] < mFI_MAX_SHELLS_PER_BLOCK) { + if (selected_block <= 0) { + shell_num_inblock_p[0]++; + on_shell_num_p[0]++; + + if (on_shell_num_p[0] >= mFI_MAX_SHELLS_PER_BLOCK) { + block_num--; + } + + break; + } else { + selected_block--; + } + } + + can_set_ut_num_p++; + on_shell_num_p++; + shell_num_inblock_p++; + } + + set_num--; + } } static void mFI_DivideShell(u8* can_set_ut_num, u8* shell_num_inblock, u8* on_shell_num, int set_num, int block_num) { - mFI_DivideShellSameSum(can_set_ut_num, shell_num_inblock, on_shell_num, &set_num, &block_num); // divide shells evenly amongst acres first - mFI_DivideShellRandom(can_set_ut_num, shell_num_inblock, on_shell_num, set_num, block_num); // randomly place remaining shells + mFI_DivideShellSameSum(can_set_ut_num, shell_num_inblock, on_shell_num, &set_num, + &block_num); // divide shells evenly amongst acres first + mFI_DivideShellRandom(can_set_ut_num, shell_num_inblock, on_shell_num, set_num, + block_num); // randomly place remaining shells } static mActor_name_t mFI_GetShell(int is_island) { - static mActor_name_t normal_shell[6] = { - ITM_SHELL0, // lion's paw - ITM_SHELL1, // wentletrap - ITM_SHELL2, // venus comb - ITM_SHELL3, // prceletta - ITM_SHELL4, // sand dollar - ITM_SHELL7 // coral - }; + static mActor_name_t normal_shell[6] = { + ITM_SHELL0, // lion's paw + ITM_SHELL1, // wentletrap + ITM_SHELL2, // venus comb + ITM_SHELL3, // prceletta + ITM_SHELL4, // sand dollar + ITM_SHELL7 // coral + }; - static mActor_name_t rare_shell[2] = { - ITM_SHELL6, // conch - ITM_SHELL5 // white scallop - }; + static mActor_name_t rare_shell[2] = { + ITM_SHELL6, // conch + ITM_SHELL5 // white scallop + }; - static mActor_name_t island_rare_shell[3] = { - ITM_SHELL6, // conch - ITM_SHELL5, // white scallop - ITM_FOOD_COCONUT - }; + static mActor_name_t island_rare_shell[3] = { ITM_SHELL6, // conch + ITM_SHELL5, // white scallop + ITM_FOOD_COCONUT }; - static mActor_name_t* shell_table[3] = { - normal_shell, - rare_shell, - island_rare_shell - }; + static mActor_name_t* shell_table[3] = { normal_shell, rare_shell, island_rare_shell }; - static f32 shell_max[3] = { - 6.0f, - 2.0f, - /* @BUG - this is supposed to be 3.0f, the devs messed up. Coconuts are supposed to wash up on the beach */ - #ifndef BUGFIXES - 2.0f - #else - 3.0f - #endif - }; + static f32 shell_max[3] = { 6.0f, 2.0f, +/* @BUG - this is supposed to be 3.0f, the devs messed up. Coconuts are supposed to wash up on the beach */ +#ifndef BUGFIXES + 2.0f +#else + 3.0f +#endif + }; - int table = 0; - int index; + int table = 0; + int index; - /* 25% chance for a rare shell */ - if (RANDOM(4) == 3) { - if (is_island == TRUE) { - table = 2; + /* 25% chance for a rare shell */ + if (RANDOM(4) == 3) { + if (is_island == TRUE) { + table = 2; + } else { + table = 1; + } } - else { - table = 1; - } - } - /* Return a random shell from the selected table */ - index = (int)RANDOM_F(shell_max[table]); - return shell_table[table][index]; + /* Return a random shell from the selected table */ + index = (int)RANDOM_F(shell_max[table]); + return shell_table[table][index]; } -static void mFI_SetShellBlock(mActor_name_t* fg_p, mCoBG_Collision_u* col_p, int shell_num, u8* can_set_ut_num, int is_island) { - mActor_name_t* fg = fg_p; - mCoBG_Collision_u* col = col_p; +static void mFI_SetShellBlock(mActor_name_t* fg_p, mCoBG_Collision_u* col_p, int shell_num, u8* can_set_ut_num, + int is_island) { + mActor_name_t* fg = fg_p; + mCoBG_Collision_u* col = col_p; - if (fg_p != NULL && col_p != NULL) { - while (shell_num != 0 && can_set_ut_num[0] != 0) { - int selected = RANDOM(can_set_ut_num[0]); - int i; - - fg_p = fg; - col_p = col; + if (fg_p != NULL && col_p != NULL) { + while (shell_num != 0 && can_set_ut_num[0] != 0) { + int selected = RANDOM(can_set_ut_num[0]); + int i; - for (i = 0; i < UT_TOTAL_NUM; i++) { - if (fg_p[0] == EMPTY_NO && mCoBG_CheckWaveAttr(col_p->data.unit_attribute) == TRUE) { - if (selected <= 0) { - fg_p[0] = mFI_GetShell(is_island); - shell_num--; - can_set_ut_num[0]--; - - break; - } - else { - selected--; - } + fg_p = fg; + col_p = col; + + for (i = 0; i < UT_TOTAL_NUM; i++) { + if (fg_p[0] == EMPTY_NO && mCoBG_CheckWaveAttr(col_p->data.unit_attribute) == TRUE) { + if (selected <= 0) { + fg_p[0] = mFI_GetShell(is_island); + shell_num--; + can_set_ut_num[0]--; + + break; + } else { + selected--; + } + } + + fg_p++; + col_p++; + } + + if (i == UT_TOTAL_NUM) { + break; + } } - - fg_p++; - col_p++; - } - - if (i == UT_TOTAL_NUM) { - break; - } } - } } static void mFI_SetShellSandyBeachBlock(u8* can_set_ut_num, u8* shell_num_inblock) { - int bz; - int shell_num; - int bx; - int i; + int bz; + int shell_num; + int bx; + int i; - for (i = 0; i < 7; i++) { - if (can_set_ut_num[0] != 0) { - shell_num = shell_num_inblock[0]; + for (i = 0; i < 7; i++) { + if (can_set_ut_num[0] != 0) { + shell_num = shell_num_inblock[0]; - if (shell_num > 0) { - bx = l_sandy_beach_bx[i]; - bz = l_sandy_beach_bz[i]; + if (shell_num > 0) { + bx = l_sandy_beach_bx[i]; + bz = l_sandy_beach_bz[i]; - mFI_SetShellBlock(mFI_BkNumtoUtFGTop(bx, bz), mFI_GetBkNum2ColTop(bx, bz), shell_num, can_set_ut_num, bz == mISL_BLOCK_Z); - } + mFI_SetShellBlock(mFI_BkNumtoUtFGTop(bx, bz), mFI_GetBkNum2ColTop(bx, bz), shell_num, can_set_ut_num, + bz == mISL_BLOCK_Z); + } + } + + can_set_ut_num++; + shell_num_inblock++; } - - can_set_ut_num++; - shell_num_inblock++; - } } static void mFI_SetShellWave(int set_num, xyz_t player_pos) { - static u8 can_set_ut_num[7]; - static u8 shell_num_inblock[7]; - static u8 on_shell_num[7]; + static u8 can_set_ut_num[7]; + static u8 shell_num_inblock[7]; + static u8 on_shell_num[7]; - int total_blocks = 0; - int total_set_num = 0; + int total_blocks = 0; + int total_set_num = 0; - bzero(can_set_ut_num, sizeof(can_set_ut_num)); - bzero(shell_num_inblock, sizeof(shell_num_inblock)); - bzero(on_shell_num, sizeof(on_shell_num)); + bzero(can_set_ut_num, sizeof(can_set_ut_num)); + bzero(shell_num_inblock, sizeof(shell_num_inblock)); + bzero(on_shell_num, sizeof(on_shell_num)); - mFI_ResearchShell(can_set_ut_num, on_shell_num, &total_set_num, &total_blocks, player_pos); + mFI_ResearchShell(can_set_ut_num, on_shell_num, &total_set_num, &total_blocks, player_pos); - if (set_num > total_set_num) { - set_num = total_set_num; - } + if (set_num > total_set_num) { + set_num = total_set_num; + } - if (total_blocks > 0 && set_num > 0) { - mFI_DivideShell(can_set_ut_num, shell_num_inblock, on_shell_num, set_num, total_blocks); - mFI_SetShellSandyBeachBlock(can_set_ut_num, shell_num_inblock); - } + if (total_blocks > 0 && set_num > 0) { + mFI_DivideShell(can_set_ut_num, shell_num_inblock, on_shell_num, set_num, total_blocks); + mFI_SetShellSandyBeachBlock(can_set_ut_num, shell_num_inblock); + } } static void mFI_SetShell(xyz_t player_pos) { - static int set_flag; + static int set_flag; - if (mFI_CheckSetShell() == TRUE) { - if (set_flag == FALSE) { - set_flag = TRUE; - l_reserve_set_shell++; + if (mFI_CheckSetShell() == TRUE) { + if (set_flag == FALSE) { + set_flag = TRUE; + l_reserve_set_shell++; + } + } else { + set_flag = FALSE; } - } - else { - set_flag = FALSE; - } - if (mFI_CheckFieldData() == TRUE) { - mActor_name_t field_id = mFI_GetFieldId(); + if (mFI_CheckFieldData() == TRUE) { + mActor_name_t field_id = mFI_GetFieldId(); - if (Save_Get(scene_no) == SCENE_FG && mFI_GET_TYPE(field_id) == mFI_FIELD_FG && l_reserve_set_shell > 0) { - mFI_SetShellWave(l_reserve_set_shell, player_pos); - l_reserve_set_shell = 0; + if (Save_Get(scene_no) == SCENE_FG && mFI_GET_TYPE(field_id) == mFI_FIELD_FG && l_reserve_set_shell > 0) { + mFI_SetShellWave(l_reserve_set_shell, player_pos); + l_reserve_set_shell = 0; + } } - } } static int mFI_now_bg_num; extern void mFI_FieldMove(xyz_t player_pos) { - mFI_BGDisplayListRefresh(player_pos); - mFI_DmaBg(); - mFI_SetPlayerBlockKind(player_pos); - mFI_SetShell(player_pos); - mMsr_SetMushroom(player_pos); - mFRm_save_data_check(); + mFI_BGDisplayListRefresh(player_pos); + mFI_DmaBg(); + mFI_SetPlayerBlockKind(player_pos); + mFI_SetShell(player_pos); + mMsr_SetMushroom(player_pos); + mFRm_save_data_check(); - if (mFI_CheckFieldData() == TRUE) { - int bx; - int bz; + if (mFI_CheckFieldData() == TRUE) { + int bx; + int bz; - if (mFI_Wpos2BlockNum(&bx, &bz, player_pos) == TRUE) { - int num = mFI_GetBlockNum(bx, bz); - mFM_block_info_c* block_info = g_fdinfo->block_info + num; + if (mFI_Wpos2BlockNum(&bx, &bz, player_pos) == TRUE) { + int num = mFI_GetBlockNum(bx, bz); + mFM_block_info_c* block_info = g_fdinfo->block_info + num; - if (block_info != NULL) { - mFI_now_bg_num = block_info->bg_info.bg_id.combination_type; - } + if (block_info != NULL) { + mFI_now_bg_num = block_info->bg_info.bg_id.combination_type; + } + } } - } } extern void mFI_PrintNowBGNum(gfxprint_t* gfxprint) { - gfxprint_color(gfxprint, 200, 200, 250, 255); - gfxprint_locate8x8(gfxprint, 3, 7); - gfxprint_printf(gfxprint, "%d", mFI_now_bg_num); + gfxprint_color(gfxprint, 200, 200, 250, 255); + gfxprint_locate8x8(gfxprint, 3, 7); + gfxprint_printf(gfxprint, "%d", mFI_now_bg_num); } extern void mFI_PrintFgAttr(gfxprint_t* gfxprint) { - if (mFI_CheckFieldData() && gamePT != NULL) { - int ut_x; - int ut_z; - u32 attribute; + if (mFI_CheckFieldData() && gamePT != NULL) { + int ut_x; + int ut_z; + u32 attribute; - PLAYER_ACTOR* player = GET_PLAYER_ACTOR_NOW(); - mActor_name_t item = EMPTY_NO; - mActor_name_t* fg_item_p = mFI_GetUnitFG(player->actor_class.world.position); - int plant = mCoBG_CheckPlant(player->actor_class.world.position); + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_NOW(); + mActor_name_t item = EMPTY_NO; + mActor_name_t* fg_item_p = mFI_GetUnitFG(player->actor_class.world.position); + int plant = mCoBG_CheckPlant(player->actor_class.world.position); - if (fg_item_p != NULL) { - item = fg_item_p[0]; + if (fg_item_p != NULL) { + item = fg_item_p[0]; + } + + mFI_Wpos2UtNum_inBlock(&ut_x, &ut_z, player->actor_class.world.position); + attribute = mCoBG_Wpos2BgAttribute_Original(player->actor_class.world.position); + + gfxprint_color(gfxprint, 200, 200, 250, 255); + gfxprint_locate8x8(gfxprint, 3, 8); + gfxprint_printf(gfxprint, "%d,%d - %4x - %d - %d", ut_x, ut_z, item, attribute, plant); } - - mFI_Wpos2UtNum_inBlock(&ut_x, &ut_z, player->actor_class.world.position); - attribute = mCoBG_Wpos2BgAttribute_Original(player->actor_class.world.position); - - gfxprint_color(gfxprint, 200, 200, 250, 255); - gfxprint_locate8x8(gfxprint, 3, 8); - gfxprint_printf(gfxprint, "%d,%d - %4x - %d - %d", ut_x, ut_z, item, attribute, plant); - } } extern int mFI_SetOyasiroPos(s16* oyasiro_p) { - int bx; - int bz; + int bx; + int bz; - if (mFI_BlockKind2BkNum(&bx, &bz, mRF_BLOCKKIND_SHRINE) == TRUE) { - int ut_x; - int ut_z; + if (mFI_BlockKind2BkNum(&bx, &bz, mRF_BLOCKKIND_SHRINE) == TRUE) { + int ut_x; + int ut_z; - if ( - mFI_SearchFGInBlock(&ut_x, &ut_z, WISHING_WELL, bx, bz) == FALSE && - mFI_SearchFGInBlock(&ut_x, &ut_z, 0xF103, bx, bz) == FALSE - ) { - return FALSE; + if (mFI_SearchFGInBlock(&ut_x, &ut_z, WISHING_WELL, bx, bz) == FALSE && + mFI_SearchFGInBlock(&ut_x, &ut_z, 0xF103, bx, bz) == FALSE) { + return FALSE; + } else { + xyz_t pos; + + mFI_BkandUtNum2CenterWpos(&pos, bx, bz, ut_x, ut_z); + oyasiro_p[0] = (s16)pos.x; + oyasiro_p[1] = (s16)pos.z; // @BUG - maybe a bug? You'd think it'd be .y then .z + oyasiro_p[2] = (s16)pos.y; + + return TRUE; + } + } else { + return FALSE; } - else { - xyz_t pos; - - mFI_BkandUtNum2CenterWpos(&pos, bx, bz, ut_x, ut_z); - oyasiro_p[0] = (s16)pos.x; - oyasiro_p[1] = (s16)pos.z; // @BUG - maybe a bug? You'd think it'd be .y then .z - oyasiro_p[2] = (s16)pos.y; - - return TRUE; - } - } - else { - return FALSE; - } } static int mFI_CheckBlockSetTreasure(int* block, int bx, int bz) { - int i; + int i; - for (i = 0; i < 4; i++) { - if (bx == block[0] && bz == block[1]) { - return FALSE; + for (i = 0; i < 4; i++) { + if (bx == block[0] && bz == block[1]) { + return FALSE; + } + + block += 2; } - block += 2; - } - - return TRUE; + return TRUE; } extern int mFI_SetTreasure(int* selected_bx, int* selected_bz, mActor_name_t item) { - static int no_check_block_table[2 * 4] = { - 3, 1, /* train station */ - 3, 2, /* player house */ - 0, 0, /* wishing well/shrine (dynamic) */ - 0, 0 /* lake (dynamic) */ - }; + static int no_check_block_table[2 * 4] = { + 3, 1, /* train station */ + 3, 2, /* player house */ + 0, 0, /* wishing well/shrine (dynamic) */ + 0, 0 /* lake (dynamic) */ + }; - u8 depositable_num_block[FG_BLOCK_TOTAL_NUM]; - mFM_fg_c* fg_block; - mFM_fg_c* fg_block_p; - u8* depositable_num_p2; - u8* depositable_num_p; - u8 depositable_blocks; - int res; + u8 depositable_num_block[FG_BLOCK_TOTAL_NUM]; + mFM_fg_c* fg_block; + mFM_fg_c* fg_block_p; + u8* depositable_num_p2; + u8* depositable_num_p; + u8 depositable_blocks; + int res; - fg_block = Save_Get(fg[0]); - fg_block_p = fg_block; - depositable_num_p = depositable_num_block; - depositable_blocks = 0; - res = FALSE; + fg_block = Save_Get(fg[0]); + fg_block_p = fg_block; + depositable_num_p = depositable_num_block; + depositable_blocks = 0; + res = FALSE; - if (Save_Get(scene_no) == SCENE_FG) { - int bz; + if (Save_Get(scene_no) == SCENE_FG) { + int bz; - bzero(depositable_num_p, FG_BLOCK_TOTAL_NUM); - mFI_BlockKind2BkNum(&no_check_block_table[4], &no_check_block_table[5], mRF_BLOCKKIND_SHRINE); - mFI_BlockKind2BkNum(&no_check_block_table[6], &no_check_block_table[7], mRF_BLOCKKIND_POOL); + bzero(depositable_num_p, FG_BLOCK_TOTAL_NUM); + mFI_BlockKind2BkNum(&no_check_block_table[4], &no_check_block_table[5], mRF_BLOCKKIND_SHRINE); + mFI_BlockKind2BkNum(&no_check_block_table[6], &no_check_block_table[7], mRF_BLOCKKIND_POOL); - for (bz = 0; bz < FG_BLOCK_Z_NUM; bz++) { - int bx; + for (bz = 0; bz < FG_BLOCK_Z_NUM; bz++) { + int bx; - for (bx = 0; bx < FG_BLOCK_X_NUM; bx++) { - if (mFI_CheckBlockSetTreasure(no_check_block_table, bx + 1, bz + 1) == TRUE) { - mCoBG_Collision_u* col_p = mFI_GetBkNum2ColTop(bx + 1, bz + 1); - - depositable_num_p[0] = mMsm_GetDepositAbleNum(fg_block_p->items[0], col_p); + for (bx = 0; bx < FG_BLOCK_X_NUM; bx++) { + if (mFI_CheckBlockSetTreasure(no_check_block_table, bx + 1, bz + 1) == TRUE) { + mCoBG_Collision_u* col_p = mFI_GetBkNum2ColTop(bx + 1, bz + 1); - if (depositable_num_p[0] != 0) { - depositable_blocks++; - } + depositable_num_p[0] = mMsm_GetDepositAbleNum(fg_block_p->items[0], col_p); + + if (depositable_num_p[0] != 0) { + depositable_blocks++; + } + } + + depositable_num_p++; + fg_block_p++; + } } - depositable_num_p++; - fg_block_p++; - } - } + if (depositable_blocks != 0) { + u8* depositable_num_p; // removing this line fixes regalloc but causes regswaps + int selected_block; + int i; - if (depositable_blocks != 0) { - u8* depositable_num_p; // removing this line fixes regalloc but causes regswaps - int selected_block; - int i; - - depositable_num_p2 = depositable_num_block; - selected_block = RANDOM(depositable_blocks); - for (i = 0; i < FG_BLOCK_TOTAL_NUM; i++) { - if (depositable_num_p2[0] != 0) { - if (selected_block <= 0) { - selected_bx[0] = (i % FG_BLOCK_X_NUM) + 1; - selected_bz[0] = (i / FG_BLOCK_X_NUM) + 1; - mMsm_DepositItemBlock(fg_block->items[0], item, selected_bx[0], selected_bz[0], Save_Get(deposit[i]), depositable_num_p2[0]); - res = TRUE; + depositable_num_p2 = depositable_num_block; + selected_block = RANDOM(depositable_blocks); + for (i = 0; i < FG_BLOCK_TOTAL_NUM; i++) { + if (depositable_num_p2[0] != 0) { + if (selected_block <= 0) { + selected_bx[0] = (i % FG_BLOCK_X_NUM) + 1; + selected_bz[0] = (i / FG_BLOCK_X_NUM) + 1; + mMsm_DepositItemBlock(fg_block->items[0], item, selected_bx[0], selected_bz[0], + Save_Get(deposit[i]), depositable_num_p2[0]); + res = TRUE; - break; - } - else { - selected_block--; - } + break; + } else { + selected_block--; + } + } + + depositable_num_p2++; + fg_block++; + } } - - depositable_num_p2++; - fg_block++; - } } - } - return res; + return res; } static int l_mFI_climate; extern int mFI_GetClimate() { - switch (l_mFI_climate) { - case mFI_CLIMATE_2: - case mFI_CLIMATE_3: - case mFI_CLIMATE_4: - case mFI_CLIMATE_5: - return FALSE; - default: - return l_mFI_climate & 1; - } + switch (l_mFI_climate) { + case mFI_CLIMATE_2: + case mFI_CLIMATE_3: + case mFI_CLIMATE_4: + case mFI_CLIMATE_5: + return FALSE; + default: + return l_mFI_climate & 1; + } } extern void mFI_SetClimate(int climate) { - if (climate == mFI_CLIMATE_NUM) { - switch (l_mFI_climate) { - case mFI_CLIMATE_0: - l_mFI_climate = mFI_CLIMATE_2; - break; - case mFI_CLIMATE_ISLAND: - l_mFI_climate = mFI_CLIMATE_3; - break; + if (climate == mFI_CLIMATE_NUM) { + switch (l_mFI_climate) { + case mFI_CLIMATE_0: + l_mFI_climate = mFI_CLIMATE_2; + break; + case mFI_CLIMATE_ISLAND: + l_mFI_climate = mFI_CLIMATE_3; + break; + } + } else { + l_mFI_climate = climate; } - } - else { - l_mFI_climate = climate; - } } extern int mFI_CheckBeforeScenePerpetual() { - switch (l_mFI_climate) { - case mFI_CLIMATE_3: - case mFI_CLIMATE_5: - return TRUE; - default: - return FALSE; - } + switch (l_mFI_climate) { + case mFI_CLIMATE_3: + case mFI_CLIMATE_5: + return TRUE; + default: + return FALSE; + } } extern void mFI_ChangeClimate_ForEventNotice() { - switch (l_mFI_climate) { - case mFI_CLIMATE_2: - l_mFI_climate = mFI_CLIMATE_4; - break; - case mFI_CLIMATE_4: - l_mFI_climate = mFI_CLIMATE_0; - break; - case mFI_CLIMATE_3: - l_mFI_climate = mFI_CLIMATE_5; - break; - case mFI_CLIMATE_5: - l_mFI_climate = mFI_CLIMATE_ISLAND; - break; - } + switch (l_mFI_climate) { + case mFI_CLIMATE_2: + l_mFI_climate = mFI_CLIMATE_4; + break; + case mFI_CLIMATE_4: + l_mFI_climate = mFI_CLIMATE_0; + break; + case mFI_CLIMATE_3: + l_mFI_climate = mFI_CLIMATE_5; + break; + case mFI_CLIMATE_5: + l_mFI_climate = mFI_CLIMATE_ISLAND; + break; + } - mCoBG_InitBoatCollision(); + mCoBG_InitBoatCollision(); } extern void mFI_PullTanukiPathTrees() { - static u8 ut_table[6] = { - 0x07, 0x08, - 0x17, 0x18, - 0x27, 0x28 - }; + static u8 ut_table[6] = { 0x07, 0x08, 0x17, 0x18, 0x27, 0x28 }; - mActor_name_t* fg_p = Save_Get(fg[2][2]).items[0]; - int i; + mActor_name_t* fg_p = Save_Get(fg[2][2]).items[0]; + int i; - for (i = 0; i < 6; i++) { - int ut = ut_table[i]; - - if ( - (fg_p[ut] == TREE_S0) || - (fg_p[ut] == TREE_S1) || - (fg_p[ut] == TREE_S2) || - (fg_p[ut] == TREE) || - (fg_p[ut] == TREE_1000BELLS_S0) || - (fg_p[ut] == TREE_1000BELLS_S1) || - (fg_p[ut] == TREE_1000BELLS_S2) || - (fg_p[ut] == TREE_1000BELLS) || - (fg_p[ut] == TREE_10000BELLS_S0) || - (fg_p[ut] == TREE_10000BELLS_S1) || - (fg_p[ut] == TREE_10000BELLS_S2) || - (fg_p[ut] == TREE_10000BELLS) || - (fg_p[ut] == TREE_30000BELLS_S0) || - (fg_p[ut] == TREE_30000BELLS_S1) || - (fg_p[ut] == TREE_30000BELLS_S2) || - (fg_p[ut] == TREE_30000BELLS) || - (fg_p[ut] == TREE_100BELLS_S0) || - (fg_p[ut] == TREE_100BELLS_S1) || - (fg_p[ut] == TREE_100BELLS_S2) || - (fg_p[ut] == TREE_100BELLS) || - (fg_p[ut] == CEDAR_TREE_S0) || - (fg_p[ut] == CEDAR_TREE_S1) || - (fg_p[ut] == CEDAR_TREE_S2) || - (fg_p[ut] == CEDAR_TREE) || - (fg_p[ut] == GOLD_TREE_S0) || - (fg_p[ut] == GOLD_TREE_S1) || - (fg_p[ut] == GOLD_TREE_S2) || - (fg_p[ut] == GOLD_TREE) || - (fg_p[ut] == GOLD_TREE_SHOVEL) || - (fg_p[ut] == TREE_APPLE_S0) || - (fg_p[ut] == TREE_APPLE_S1) || - (fg_p[ut] == TREE_APPLE_S2) || - (fg_p[ut] == TREE_APPLE_NOFRUIT_0) || - (fg_p[ut] == TREE_APPLE_NOFRUIT_1) || - (fg_p[ut] == TREE_APPLE_NOFRUIT_2) || - (fg_p[ut] == TREE_APPLE_FRUIT) || - (fg_p[ut] == TREE_ORANGE_S0) || - (fg_p[ut] == TREE_ORANGE_S1) || - (fg_p[ut] == TREE_ORANGE_S2) || - (fg_p[ut] == TREE_ORANGE_NOFRUIT_0) || - (fg_p[ut] == TREE_ORANGE_NOFRUIT_1) || - (fg_p[ut] == TREE_ORANGE_NOFRUIT_2) || - (fg_p[ut] == TREE_ORANGE_FRUIT) || - (fg_p[ut] == TREE_PEACH_S0) || - (fg_p[ut] == TREE_PEACH_S1) || - (fg_p[ut] == TREE_PEACH_S2) || - (fg_p[ut] == TREE_PEACH_NOFRUIT_0) || - (fg_p[ut] == TREE_PEACH_NOFRUIT_1) || - (fg_p[ut] == TREE_PEACH_NOFRUIT_2) || - (fg_p[ut] == TREE_PEACH_FRUIT) || - (fg_p[ut] == TREE_PEAR_S0) || - (fg_p[ut] == TREE_PEAR_S1) || - (fg_p[ut] == TREE_PEAR_S2) || - (fg_p[ut] == TREE_PEAR_NOFRUIT_0) || - (fg_p[ut] == TREE_PEAR_NOFRUIT_1) || - (fg_p[ut] == TREE_PEAR_NOFRUIT_2) || - (fg_p[ut] == TREE_PEAR_FRUIT) || - (fg_p[ut] == TREE_CHERRY_S0) || - (fg_p[ut] == TREE_CHERRY_S1) || - (fg_p[ut] == TREE_CHERRY_S2) || - (fg_p[ut] == TREE_CHERRY_NOFRUIT_0) || - (fg_p[ut] == TREE_CHERRY_NOFRUIT_1) || - (fg_p[ut] == TREE_CHERRY_NOFRUIT_2) || - (fg_p[ut] == TREE_CHERRY_FRUIT) || - (fg_p[ut] == TREE_PALM_S0) || - (fg_p[ut] == TREE_PALM_S1) || - (fg_p[ut] == TREE_PALM_S2) || - (fg_p[ut] == TREE_PALM_NOFRUIT_0) || - (fg_p[ut] == TREE_PALM_NOFRUIT_1) || - (fg_p[ut] == TREE_PALM_NOFRUIT_2) || - (fg_p[ut] == TREE_PALM_FRUIT) || - (fg_p[ut] == TREE_BEES) || - (fg_p[ut] == TREE_FTR) || - (fg_p[ut] == TREE_LIGHTS) || - (fg_p[ut] == TREE_PRESENT) || - (fg_p[ut] == TREE_BELLS) || - (fg_p[ut] == CEDAR_TREE_BELLS) || - (fg_p[ut] == CEDAR_TREE_FTR) || - (fg_p[ut] == CEDAR_TREE_BEES) || - (fg_p[ut] == CEDAR_TREE_LIGHTS) || - (fg_p[ut] == GOLD_TREE_BELLS) || - (fg_p[ut] == GOLD_TREE_FTR) || - (fg_p[ut] == GOLD_TREE_BEES) - ) { - fg_p[ut] = EMPTY_NO; + for (i = 0; i < 6; i++) { + int ut = ut_table[i]; + + if ((fg_p[ut] == TREE_S0) || (fg_p[ut] == TREE_S1) || (fg_p[ut] == TREE_S2) || (fg_p[ut] == TREE) || + (fg_p[ut] == TREE_1000BELLS_S0) || (fg_p[ut] == TREE_1000BELLS_S1) || (fg_p[ut] == TREE_1000BELLS_S2) || + (fg_p[ut] == TREE_1000BELLS) || (fg_p[ut] == TREE_10000BELLS_S0) || (fg_p[ut] == TREE_10000BELLS_S1) || + (fg_p[ut] == TREE_10000BELLS_S2) || (fg_p[ut] == TREE_10000BELLS) || (fg_p[ut] == TREE_30000BELLS_S0) || + (fg_p[ut] == TREE_30000BELLS_S1) || (fg_p[ut] == TREE_30000BELLS_S2) || (fg_p[ut] == TREE_30000BELLS) || + (fg_p[ut] == TREE_100BELLS_S0) || (fg_p[ut] == TREE_100BELLS_S1) || (fg_p[ut] == TREE_100BELLS_S2) || + (fg_p[ut] == TREE_100BELLS) || (fg_p[ut] == CEDAR_TREE_S0) || (fg_p[ut] == CEDAR_TREE_S1) || + (fg_p[ut] == CEDAR_TREE_S2) || (fg_p[ut] == CEDAR_TREE) || (fg_p[ut] == GOLD_TREE_S0) || + (fg_p[ut] == GOLD_TREE_S1) || (fg_p[ut] == GOLD_TREE_S2) || (fg_p[ut] == GOLD_TREE) || + (fg_p[ut] == GOLD_TREE_SHOVEL) || (fg_p[ut] == TREE_APPLE_S0) || (fg_p[ut] == TREE_APPLE_S1) || + (fg_p[ut] == TREE_APPLE_S2) || (fg_p[ut] == TREE_APPLE_NOFRUIT_0) || (fg_p[ut] == TREE_APPLE_NOFRUIT_1) || + (fg_p[ut] == TREE_APPLE_NOFRUIT_2) || (fg_p[ut] == TREE_APPLE_FRUIT) || (fg_p[ut] == TREE_ORANGE_S0) || + (fg_p[ut] == TREE_ORANGE_S1) || (fg_p[ut] == TREE_ORANGE_S2) || (fg_p[ut] == TREE_ORANGE_NOFRUIT_0) || + (fg_p[ut] == TREE_ORANGE_NOFRUIT_1) || (fg_p[ut] == TREE_ORANGE_NOFRUIT_2) || + (fg_p[ut] == TREE_ORANGE_FRUIT) || (fg_p[ut] == TREE_PEACH_S0) || (fg_p[ut] == TREE_PEACH_S1) || + (fg_p[ut] == TREE_PEACH_S2) || (fg_p[ut] == TREE_PEACH_NOFRUIT_0) || (fg_p[ut] == TREE_PEACH_NOFRUIT_1) || + (fg_p[ut] == TREE_PEACH_NOFRUIT_2) || (fg_p[ut] == TREE_PEACH_FRUIT) || (fg_p[ut] == TREE_PEAR_S0) || + (fg_p[ut] == TREE_PEAR_S1) || (fg_p[ut] == TREE_PEAR_S2) || (fg_p[ut] == TREE_PEAR_NOFRUIT_0) || + (fg_p[ut] == TREE_PEAR_NOFRUIT_1) || (fg_p[ut] == TREE_PEAR_NOFRUIT_2) || (fg_p[ut] == TREE_PEAR_FRUIT) || + (fg_p[ut] == TREE_CHERRY_S0) || (fg_p[ut] == TREE_CHERRY_S1) || (fg_p[ut] == TREE_CHERRY_S2) || + (fg_p[ut] == TREE_CHERRY_NOFRUIT_0) || (fg_p[ut] == TREE_CHERRY_NOFRUIT_1) || + (fg_p[ut] == TREE_CHERRY_NOFRUIT_2) || (fg_p[ut] == TREE_CHERRY_FRUIT) || (fg_p[ut] == TREE_PALM_S0) || + (fg_p[ut] == TREE_PALM_S1) || (fg_p[ut] == TREE_PALM_S2) || (fg_p[ut] == TREE_PALM_NOFRUIT_0) || + (fg_p[ut] == TREE_PALM_NOFRUIT_1) || (fg_p[ut] == TREE_PALM_NOFRUIT_2) || (fg_p[ut] == TREE_PALM_FRUIT) || + (fg_p[ut] == TREE_BEES) || (fg_p[ut] == TREE_FTR) || (fg_p[ut] == TREE_LIGHTS) || + (fg_p[ut] == TREE_PRESENT) || (fg_p[ut] == TREE_BELLS) || (fg_p[ut] == CEDAR_TREE_BELLS) || + (fg_p[ut] == CEDAR_TREE_FTR) || (fg_p[ut] == CEDAR_TREE_BEES) || (fg_p[ut] == CEDAR_TREE_LIGHTS) || + (fg_p[ut] == GOLD_TREE_BELLS) || (fg_p[ut] == GOLD_TREE_FTR) || (fg_p[ut] == GOLD_TREE_BEES)) { + fg_p[ut] = EMPTY_NO; + } } - } } diff --git a/src/m_island.c b/src/m_island.c index 9d26a8c8..7385836e 100644 --- a/src/m_island.c +++ b/src/m_island.c @@ -738,7 +738,7 @@ static void mISL_toHole(mActor_name_t* fg, u16* deposit, int bx, int bz) { hole_no = 0; } - fg[0] = BURIED_PITFALL_START + hole_no; + fg[0] = BURIED_PITFALL_HOLE_START + hole_no; deposit[0] &= ~(1 << ut_x); } diff --git a/src/m_museum.c b/src/m_museum.c index 116bc243..5d8d10fd 100644 --- a/src/m_museum.c +++ b/src/m_museum.c @@ -450,7 +450,7 @@ extern void mMsm_DepositItemBlock(mActor_name_t* fg_items, mActor_name_t item, i int hole_num = mCoBG_BnumUnum2HoleNumber(block_x, block_z, ut_x, ut_z); if (hole_num != -1) { - *fg_items = BURIED_PITFALL_START + hole_num; + *fg_items = BURIED_PITFALL_HOLE_START + hole_num; } } diff --git a/src/m_name_table.c b/src/m_name_table.c index ec73b22d..3be2a062 100644 --- a/src/m_name_table.c +++ b/src/m_name_table.c @@ -315,7 +315,7 @@ extern mActor_name_t bg_item_fg_sub_dig2take_conv(mActor_name_t item) { mActor_name_t dig_item; dig_item = item; - if ((item >= BURIED_PITFALL_START) && (item <= BURIED_PITFALL_END)) { + if ((item >= BURIED_PITFALL_HOLE_START) && (item <= BURIED_PITFALL_HOLE_END)) { dig_item = ITM_PITFALL; } diff --git a/src/m_player.c b/src/m_player.c index 05c43db1..866e41e2 100644 --- a/src/m_player.c +++ b/src/m_player.c @@ -7,6 +7,10 @@ #include "sys_matrix.h" #include "ac_tools.h" #include "m_rcp.h" +#include "ac_my_room.h" +#include "ac_insect.h" +#include "ac_set_ovl_insect.h" +#include "m_house.h" /* Common */ #include "../src/m_player_controller.c_inc" @@ -197,18 +201,18 @@ static int Player_actor_request_main_demo_getoff_boat_standup_all(GAME*, const x static int Player_actor_request_main_demo_get_golden_item2_all(GAME*, int, int); static int Player_actor_request_main_demo_get_golden_axe_wait_all(GAME*, int); static int Player_actor_check_request_main_priority(GAME*, int); -static void* Player_actor_get_door_label(GAME*); +static u32 Player_actor_get_door_label(GAME*); static int Player_actor_Set_Item_net_catch_request_table(ACTOR*, GAME*, u32, s8, const xyz_t*, f32); static f32 Player_actor_Get_Item_net_catch_swing_timer(ACTOR*, GAME*); -static u8 Player_actor_Set_Item_net_catch_request_force(ACTOR*, GAME*, u32, s8); +static int Player_actor_Set_Item_net_catch_request_force(ACTOR*, GAME*, u32, s8); static void Player_actor_Set_force_position_angle(GAME*, const xyz_t*, const s_xyz*, u8); static u8 Player_actor_Get_force_position_angle(GAME*, xyz_t*, s_xyz*); static int Player_actor_Get_WadeEndPos(GAME*, xyz_t*); -static int Player_actor_Check_Label_main_push_snowball(GAME*, void*); +static int Player_actor_Check_Label_main_push_snowball(GAME*, u32); static int Player_actor_SetParam_for_push_snowball(GAME*, const xyz_t*, s16, f32); static int Player_actor_able_submenu_request_main_index(GAME*); static int Player_actor_check_able_change_camera_normal_index(ACTOR*); -static int Player_actor_Check_able_force_speak_label(GAME*, ACTOR*); +static int Player_actor_Check_able_force_speak_label(GAME*, u32); static int Player_actor_check_cancel_request_change_proc_index(int); static u32 Player_actor_Get_item_net_catch_label(ACTOR*); static int Player_actor_Change_item_net_catch_label(ACTOR*, u32, s8); @@ -225,18 +229,20 @@ static int Player_actor_Set_ScrollDemo_forWade_snowball(ACTOR*, int, const xyz_t static int Player_actor_Check_tree_shaken(ACTOR*, const xyz_t*); static int Player_actor_Check_tree_shaken_little(ACTOR*, const xyz_t*); static int Player_actor_Check_tree_shaken_big(ACTOR*, const xyz_t*); -static int Player_actor_Check_Label_main_wade_snowball(GAME*, void*); +static int Player_actor_Check_Label_main_wade_snowball(GAME*, u32); static int Player_actor_GetSnowballPos_forWadeSnowball(ACTOR*, xyz_t*); static int Player_actor_CheckCondition_forWadeSnowball(GAME*, const xyz_t*, s16); static mActor_name_t Player_actor_Get_itemNo_forWindow(ACTOR*); static int Player_actor_check_cancel_event_without_priority(GAME*); static int Player_actor_CheckScene_AbleSubmenu(void); -static int Player_actor_Check_stung_mosquito(GAME*, ACTOR*); +static int Player_actor_Check_stung_mosquito(GAME*, u32); static int Player_actor_request_main_walk_all(GAME*, xyz_t*, f32, int, int); static int Player_actor_request_main_run_all(GAME*, f32, int, int); static int Player_actor_request_main_dash_all(GAME*, f32, int, int); +static void Player_actor_Refuse_pickup_demo_ct(ACTOR*); + static void Player_actor_init_value(ACTOR* actorx, GAME* game) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; GAME_PLAY* play = (GAME_PLAY*)game; @@ -255,7 +261,7 @@ static void Player_actor_init_value(ACTOR* actorx, GAME* game) { actorx->world.position.z, 0, 0, 0, -1, -1, -1, EMPTY_NO, -1, -1, -1); player->animation0_idx = -1; player->animation1_idx = -1; - player->_0DBC = -1; + player->part_table_idx = -1; player->item_shape_type[0] = -1; player->item_shape_type[1] = -1; player->item_shape_type[2] = -1; diff --git a/src/m_player_common.c_inc b/src/m_player_common.c_inc index e69de29b..4bedc8b9 100644 --- a/src/m_player_common.c_inc +++ b/src/m_player_common.c_inc @@ -0,0 +1,8541 @@ +static int Player_actor_check_request_main_priority(GAME* game, int priority) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + return priority - player->requested_main_index_priority; +} + +static void Player_actor_request_main_index(GAME* game, int request_index, int priority) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + player->requested_main_index = request_index; + player->requested_main_index_priority = priority; + player->requested_main_index_changed = TRUE; +} + +static void Player_actor_Set_start_refuse(ACTOR* actorx, GAME* game) { + // clang-format off + static const s8 data[] = { + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }; + // clang-format on + + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int idx = player->now_main_index; + GAME_PLAY* play = (GAME_PLAY*)game; + + if (mPlayer_MAIN_INDEX_VALID(idx) != FALSE) { + if (data[idx]) { + play->submenu.start_refuse = FALSE; + } else { + play->submenu.start_refuse = TRUE; + } + } +} + +static void Player_actor_Set_address_able_display(ACTOR* actorx) { + // clang-format off + static const s8 data[] = { + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_TRUE, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_TRUE, + mPlayer_ADDRESSABLE_TRUE, + mPlayer_ADDRESSABLE_TRUE, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_TRUE, + mPlayer_ADDRESSABLE_FALSE_READY_NET, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_TRUE, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_TRUE, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_TRUE, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_TRUE, + mPlayer_ADDRESSABLE_TRUE, + mPlayer_ADDRESSABLE_TRUE, + mPlayer_ADDRESSABLE_TRUE, + mPlayer_ADDRESSABLE_TRUE, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_TRUE, + mPlayer_ADDRESSABLE_TRUE, + mPlayer_ADDRESSABLE_TRUE, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_TRUE, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_TRUE, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_TRUE, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + }; + // clang-format on + + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int idx = player->now_main_index; + + if (mPlayer_MAIN_INDEX_VALID(idx) != FALSE) { + player->address_able_display = data[idx]; + } +} + +static f32 Player_actor_Get_DemoMoveSpeedF(void) { + return (f32)mDemo_Get_OrderValue(mDemo_ORDER_PLAYER, 7) * 0.01f; +} + +static void Player_actor_Set_force_shadow_position(ACTOR* actorx, xyz_t* pos) { + mActorShadow_SetForceShadowPos(actorx, pos); +} + +static void Player_actor_Set_force_shadow_position_fromAnimePosition(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0 = &player->keyframe0; + xyz_t* pos_p = &player->shadow_pos; + + cKF_SkeletonInfo_R_AnimationMove_CulcTransToWorld(pos_p, &actorx->world.position, 0.0f, 1000.0f, 0.0f, + actorx->shape_info.rotation.y, &actorx->scale, kf0, + cKF_ANIMATION_TRANS_XZ | cKF_ANIMATION_TRANS_Y); + Player_actor_Set_force_shadow_position(actorx, pos_p); +} + +static void Player_actor_Set_force_shadow_position_fromWorldPosition(ACTOR* actorx) { + Player_actor_Set_force_shadow_position(actorx, &actorx->world.position); +} + +static void Player_actor_SetupShadow(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int idx = player->now_main_index; + + if (mPlayer_MAIN_INDEX_VALID(idx) != FALSE) { + // clang-format off + static const s8 data[] = { + mPlayer_SHADOW_TYPE_NONE, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_WORLD_POS, + mPlayer_SHADOW_TYPE_ANIME_POS, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NONE, + mPlayer_SHADOW_TYPE_NONE, + mPlayer_SHADOW_TYPE_NONE, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NONE, + mPlayer_SHADOW_TYPE_NONE, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NONE, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NONE, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NONE, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NONE, + mPlayer_SHADOW_TYPE_NONE, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NONE, + mPlayer_SHADOW_TYPE_NONE, + mPlayer_SHADOW_TYPE_NONE, + mPlayer_SHADOW_TYPE_NONE, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + }; + // clang-format on + + switch (data[idx]) { + case mPlayer_SHADOW_TYPE_ANIME_POS: + actorx->shape_info.draw_shadow = TRUE; + Player_actor_Set_force_shadow_position_fromAnimePosition(actorx); + break; + case mPlayer_SHADOW_TYPE_WORLD_POS: + actorx->shape_info.draw_shadow = TRUE; + Player_actor_Set_force_shadow_position_fromWorldPosition(actorx); + break; + case mPlayer_SHADOW_TYPE_NONE: + actorx->shape_info.draw_shadow = FALSE; + break; + default: + actorx->shape_info.draw_shadow = TRUE; + mActorShadow_UnSetForceShadowPos(actorx); + break; + } + } +} + +static void Player_actor_SetupSpeedF(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int idx = player->now_main_index; + + if (mPlayer_MAIN_INDEX_VALID(idx) != FALSE) { + // clang-format off + static const s8 data[] = { + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + }; + // clang-format on + + if (data[idx] == FALSE) { + actorx->speed = 0.0f; + } + } +} + +static int Player_actor_Get_SetupRequestMainIndexPriority(int main_index) { + if (mPlayer_MAIN_INDEX_VALID(main_index) != FALSE) { + // clang-format off + static const s8 data[] = { + mPlayer_REQUEST_PRIORITY_41, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_34, + mPlayer_REQUEST_PRIORITY_19, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_21, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_43, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_21, + mPlayer_REQUEST_PRIORITY_21, + mPlayer_REQUEST_PRIORITY_21, + mPlayer_REQUEST_PRIORITY_21, + mPlayer_REQUEST_PRIORITY_22, + mPlayer_REQUEST_PRIORITY_26, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_21, + mPlayer_REQUEST_PRIORITY_22, + mPlayer_REQUEST_PRIORITY_22, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_21, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_21, + mPlayer_REQUEST_PRIORITY_22, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_11, + mPlayer_REQUEST_PRIORITY_11, + mPlayer_REQUEST_PRIORITY_12, + mPlayer_REQUEST_PRIORITY_22, + mPlayer_REQUEST_PRIORITY_26, + mPlayer_REQUEST_PRIORITY_26, + mPlayer_REQUEST_PRIORITY_27, + mPlayer_REQUEST_PRIORITY_28, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_21, + mPlayer_REQUEST_PRIORITY_21, + mPlayer_REQUEST_PRIORITY_22, + mPlayer_REQUEST_PRIORITY_26, + mPlayer_REQUEST_PRIORITY_26, + mPlayer_REQUEST_PRIORITY_27, + mPlayer_REQUEST_PRIORITY_28, + mPlayer_REQUEST_PRIORITY_29, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_21, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_18, + mPlayer_REQUEST_PRIORITY_19, + mPlayer_REQUEST_PRIORITY_19, + mPlayer_REQUEST_PRIORITY_19, + mPlayer_REQUEST_PRIORITY_19, + mPlayer_REQUEST_PRIORITY_19, + mPlayer_REQUEST_PRIORITY_19, + mPlayer_REQUEST_PRIORITY_37, + mPlayer_REQUEST_PRIORITY_37, + mPlayer_REQUEST_PRIORITY_18, + mPlayer_REQUEST_PRIORITY_18, + mPlayer_REQUEST_PRIORITY_19, + mPlayer_REQUEST_PRIORITY_19, + mPlayer_REQUEST_PRIORITY_19, + mPlayer_REQUEST_PRIORITY_18, + mPlayer_REQUEST_PRIORITY_19, + mPlayer_REQUEST_PRIORITY_43, + mPlayer_REQUEST_PRIORITY_43, + mPlayer_REQUEST_PRIORITY_30, + mPlayer_REQUEST_PRIORITY_18, + mPlayer_REQUEST_PRIORITY_18, + mPlayer_REQUEST_PRIORITY_19, + mPlayer_REQUEST_PRIORITY_19, + mPlayer_REQUEST_PRIORITY_19, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_26, + mPlayer_REQUEST_PRIORITY_27, + mPlayer_REQUEST_PRIORITY_28, + mPlayer_REQUEST_PRIORITY_29, + mPlayer_REQUEST_PRIORITY_25, + mPlayer_REQUEST_PRIORITY_26, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_38, + mPlayer_REQUEST_PRIORITY_19, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_44, + mPlayer_REQUEST_PRIORITY_43, + mPlayer_REQUEST_PRIORITY_25, + mPlayer_REQUEST_PRIORITY_26, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_19, + mPlayer_REQUEST_PRIORITY_19, + mPlayer_REQUEST_PRIORITY_18, + mPlayer_REQUEST_PRIORITY_19, + mPlayer_REQUEST_PRIORITY_19, + mPlayer_REQUEST_PRIORITY_19, + mPlayer_REQUEST_PRIORITY_34, + mPlayer_REQUEST_PRIORITY_34, + mPlayer_REQUEST_PRIORITY_33, + }; + // clang-format on + + int priority = data[main_index]; + + if (mPlayer_REQUEST_PRIORITY_VALID(priority)) { + return priority; + } + } + + return mPlayer_REQUEST_PRIORITY_NONE; +} + +static void Player_actor_SetupRequestMainIndexPriority(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int main_index = player->now_main_index; + int priority = Player_actor_Get_SetupRequestMainIndexPriority(main_index); + + if (mPlayer_REQUEST_PRIORITY_VALID(priority)) { + player->requested_main_index_priority = priority; + } +} + +static void Player_actor_SettleRequestMainIndexPriority(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int main_index = player->now_main_index; + + if (mPlayer_MAIN_INDEX_VALID(main_index) != FALSE) { + // clang-format off + static const s8 data[] = { + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_18, + mPlayer_REQUEST_PRIORITY_18, + mPlayer_REQUEST_PRIORITY_18, + mPlayer_REQUEST_PRIORITY_18, + mPlayer_REQUEST_PRIORITY_18, + mPlayer_REQUEST_PRIORITY_18, + mPlayer_REQUEST_PRIORITY_36, + mPlayer_REQUEST_PRIORITY_36, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_18, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_18, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_18, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_18, + mPlayer_REQUEST_PRIORITY_18, + mPlayer_REQUEST_PRIORITY_18, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_18, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_44, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_18, + mPlayer_REQUEST_PRIORITY_18, + mPlayer_REQUEST_PRIORITY_18, + mPlayer_REQUEST_PRIORITY_18, + mPlayer_REQUEST_PRIORITY_18, + mPlayer_REQUEST_PRIORITY_18, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_NONE, + }; + // clang-format on + + int priority = data[main_index]; + + if (mPlayer_REQUEST_PRIORITY_VALID(priority) && player->settled_requested_main_index_priority == FALSE && + player->requested_main_index_changed == FALSE) { + int requested_main_index_priority = player->requested_main_index_priority; + + if (requested_main_index_priority == Player_actor_Get_SetupRequestMainIndexPriority(main_index)) { + player->requested_main_index_priority = priority; + player->settled_requested_main_index_priority = TRUE; + } + } + } +} + +static void Player_actor_set_eye_pattern(ACTOR* actorx, int idx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + player->eye_tex_idx = idx; +} + +static void Player_actor_set_eye_pattern_normal(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_eye_pattern_c* eye_pattern_p = &player->eye_pattern_normal; + s16* timer_p = &eye_pattern_p->timer; + s16* pattern_p = &eye_pattern_p->pattern; + int* blink_count_p = &player->blink_count; + int idx; + static const s8 pattern_table[] = { 0, 0, 0, 0, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 0, 0 }; + + idx = *timer_p; + if (idx == 0) { + idx = 0; + } else { + idx = --(*timer_p); + } + + if (idx == 0) { + if (*blink_count_p <= 0) { + *blink_count_p = get_random_timer(0, 3); + *timer_p = get_random_timer(60, 120); + } else { + *timer_p = 16; + (*blink_count_p)--; + } + } + + *pattern_p = *timer_p; + if (*pattern_p >= 16) { + *pattern_p = 0; + } + + Player_actor_set_eye_pattern(actorx, pattern_table[*pattern_p]); +} + +static u8* Player_actor_Get_eye_tex_p(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int idx = player->eye_tex_idx; + + return mPlib_Get_eye_tex_p(idx); +} + +static void Player_actor_set_mouth_pattern(ACTOR* actorx, int idx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + player->mouth_tex_idx = idx; +} + +static u8* Player_actor_Get_mouth_tex_p(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int idx = player->mouth_tex_idx; + + return mPlib_Get_mouth_tex_p(idx); +} + +static void Player_actor_set_tex_anime_pattern(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int anim0_idx = player->animation0_idx; + u8* eye_tex_idx_p = mPlib_Get_PlayerEyeTexAnimation_p(anim0_idx); + u8* mouth_tex_idx_p = mPlib_Get_PlayerMouthTexAnimation_p(anim0_idx); + + if (eye_tex_idx_p != NULL || mouth_tex_idx_p != NULL) { + cKF_SkeletonInfo_R_c* kf_p = &player->keyframe0; + cKF_FrameControl_c* frame_control_p = &kf_p->frame_control; + f32 cur_frame = frame_control_p->current_frame; + f32 max_frame = frame_control_p->max_frames; + + if (1.0f <= cur_frame && cur_frame <= max_frame) { + int pattern = (int)(cur_frame - 1.0f); + + if (eye_tex_idx_p != NULL) { + Player_actor_set_eye_pattern(actorx, (int)eye_tex_idx_p[pattern]); + } + + if (mouth_tex_idx_p != NULL) { + Player_actor_set_mouth_pattern(actorx, (int)mouth_tex_idx_p[pattern]); + } + } + } +} + +static void Player_actor_SetupTextureAnimation(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int main_idx = player->now_main_index; + + if (mPlayer_MAIN_INDEX_VALID(main_idx) != FALSE) { + // clang-format off + static const s8 data[] = { + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE + }; + // clang-format on + + int flags = data[main_idx]; + + if ((flags & mPlayer_SETUP_TEXTURE_ANIMATION_EYE)) { + Player_actor_set_eye_pattern(actorx, 0); + } + + if ((flags & mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH)) { + Player_actor_set_mouth_pattern(actorx, 0); + } + } +} + +static void Player_actor_Set_now_item_main_index(ACTOR* actorx, int item_main_index) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int last_item_main_index = player->now_item_main_index; + + if (item_main_index >= 0 && item_main_index < mPlayer_ITEM_MAIN_NUM) { + player->now_item_main_index = item_main_index; + Player_actor_Item_Setup_main(actorx, item_main_index, last_item_main_index); + } +} + +static void Player_actor_SetupItem_common(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int main_idx = player->now_main_index; + int item_kind = Player_actor_Get_ItemKind(actorx, main_idx); + + if (item_kind < 0) { + Player_actor_LoadOrDestruct_Item(actorx, -1, -1, 0.0f, 0.0f, 1.0f, mPlayer_ITEM_IS_BALLOON(item_kind) == FALSE); + Player_actor_Set_now_item_main_index(actorx, mPlayer_ITEM_MAIN_NONE); + player->item_kind = item_kind; + } +} + +static void Player_actor_SetupItemScale(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + f32* item_scale_p = &player->item_scale; + + if (mPlib_get_player_actor_main_index(game) != mPlayer_INDEX_TAKEOUT_ITEM) { + *item_scale_p = 1.0f; + } +} + +static void Player_actor_SetupWeight(ACTOR* actorx) { + if (mEv_CheckTitleDemo() <= 0) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int main_idx = player->now_main_index; + + if (mPlayer_MAIN_INDEX_VALID(main_idx) != FALSE) { + // clang-format off + static const u8 data[] = { + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 255, + 50, + 255, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 254, + 254, + 254, + 254, + 254, + 254, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 254, + 254, + 254, + 254, + 254, + 254, + 254, + 50, + 50, + 254, + 255, + 50, + 50, + 50, + 50, + 255, + 50, + 255, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 255, + 255, + 255, + 255, + 50, + 50, + 50, + 50, + 50, + 50, + 255, + 50, + 255, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 255, + 255, + 255, + 255, + 255, + 255, + 50, + 50, + 50 + }; + // clang-format on + + u8 weight = data[main_idx]; + u8* weight_p = &actorx->status_data.weight; + + if (*weight_p != weight) { + *weight_p = weight; + } + } + } +} + +static int Player_actor_Get_status_for_bee(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + return player->status_for_bee; +} + +static void Player_actor_Set_status_for_bee(ACTOR* actorx, s8 v) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + player->status_for_bee = v; +} + +static void Player_actor_Setup_status_for_bee(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int main_idx = player->now_main_index; + + if (mPlayer_MAIN_INDEX_VALID(main_idx) != FALSE) { + // clang-format off + static const s8 data[] = { + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_ATTACK, + mPlayer_STATUS_FOR_BEE_ATTACK, + mPlayer_STATUS_FOR_BEE_ATTACK, + mPlayer_STATUS_FOR_BEE_ATTACK, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_ATTACK, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_ENTER_BUILDING, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_ATTACK, + mPlayer_STATUS_FOR_BEE_ATTACK, + mPlayer_STATUS_FOR_BEE_ATTACK, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_ATTACK, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_ATTACK, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_ENTER_BUILDING, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT + }; + // clang-format on + + player->status_for_bee = data[main_idx]; + } +} + +static void Player_actor_setup_main_Base2(ACTOR* actorx, GAME* game, int main_index) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + player->prev_main_index = player->now_main_index; + player->now_main_index = main_index; + player->requested_main_index_changed = FALSE; + player->settled_requested_main_index_priority = FALSE; + + Player_actor_Set_start_refuse(actorx, game); + Player_actor_Set_address_able_display(actorx); + Player_actor_SetupShadow(actorx); + Player_actor_SetupSpeedF(actorx); + Player_actor_SetupRequestMainIndexPriority(actorx); + Player_actor_SetupTextureAnimation(actorx); + Player_actor_SetupItem_common(actorx); + Player_actor_SetupItemScale(actorx, game); + Player_actor_SetupWeight(actorx); + Player_actor_Setup_status_for_bee(actorx); +} + +static void Player_actor_setup_main_Base(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + Player_actor_setup_main_Base2(actorx, game, player->requested_main_index); +} + +/* Common Movement */ + +static void Player_actor_Movement_Base(ACTOR* actorx) { + Actor_position_moveF(actorx); +} + +static int Player_actor_Movement_Base_Braking_common(ACTOR* actorx, f32 brake_amount) { + f32 speed = actorx->speed; + + speed -= brake_amount; + if (speed < 0.0f) { + speed = 0.0f; + } + + actorx->speed = speed; + Player_actor_Movement_Base(actorx); + return speed == 0.0f; +} + +static int Player_actor_Movement_Base_Braking(ACTOR* actorx) { + return Player_actor_Movement_Base_Braking_common(actorx, 0.326525f); +} + +static void Player_actor_SetPlayerAngle_forUki(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + ACTOR* uki_actor = player->fishing_rod_actor_p; + xyz_t* uki_pos_p = &uki_actor->world.position; + xyz_t* player_pos_p = &actorx->world.position; + f32 dx = uki_pos_p->x - player_pos_p->x; + f32 dz = uki_pos_p->z - player_pos_p->z; + + if (dx != 0.0f || dz != 0.0f) { + s16 target_angle_y = atans_table(dz, dx); + + add_calc_short_angle2(&actorx->shape_info.rotation.y, target_angle_y, 1.0f - sqrtf(0.5f), + DEG2SHORT_ANGLE2(13.73291015625f), DEG2SHORT_ANGLE2(0.274658203125f)); + actorx->world.angle.y = actorx->shape_info.rotation.y; + } +} + +static void Player_actor_Movement_Base_Stop(ACTOR* actorx, int use_position_speed_y) { + actorx->speed = 0.0f; + Actor_position_speed_set(actorx); + + if (use_position_speed_y == FALSE) { + actorx->position_speed.y = 0.0f; + } + + Actor_position_move(actorx); +} + +static int Player_actor_Search_exist_npc_inCircle_forWade(GAME* game, xyz_t* origin, f32 radius_sq) { + GAME_PLAY* play = (GAME_PLAY*)game; + Actor_info* actor_info_p = &play->actor_info; + Actor_list* actor_list_p = &actor_info_p->list[ACTOR_PART_NPC]; + ACTOR* actorx_p = actor_list_p->actor; + f32 origin_x = origin->x; + f32 origin_z = origin->z; + + for (actorx_p; actorx_p != NULL; actorx_p = actorx_p->next_actor) { + xyz_t* pos_p = &actorx_p->world.position; + f32 dx = pos_p->x - origin_x; + f32 dz = pos_p->z - origin_z; + + if (Math3DVecLengthSquare2D(dx, dz) < radius_sq) { + NPC_ACTOR* npc_actor_p = (NPC_ACTOR*)actorx_p; + + if (npc_actor_p->condition_info.hide_flg == FALSE) { + return TRUE; + } + } + } + + return FALSE; +} + +static int Player_actor_CheckAbleMoveWadeBG(GAME* game, const xyz_t* pos_p, int dir, int check_for_npc) { + xyz_t target_pos; + xyz_t local_border_pos = { 0.0f, 0.0f, 0.0f }; + xyz_t world_border_pos; + int bx; + int bz; + + mFI_Wpos2BlockNum(&bx, &bz, *pos_p); + mFI_LposInBKtoWpos(&world_border_pos, local_border_pos, bx, bz); + target_pos = *pos_p; + switch (dir) { + case mFI_MOVEDIR_RIGHT: + target_pos.x = world_border_pos.x + 18.0f + mFI_BK_WORLDSIZE_X_F; + break; + case mFI_MOVEDIR_LEFT: + target_pos.x = world_border_pos.x - 18.0f; + break; + case mFI_MOVEDIR_UP: + target_pos.z = world_border_pos.z - 18.0f; + break; + case mFI_MOVEDIR_DOWN: + target_pos.z = world_border_pos.z + 18.0f + mFI_BK_WORLDSIZE_Z_F; + break; + default: + return FALSE; + } + + if (check_for_npc == FALSE || Player_actor_Search_exist_npc_inCircle_forWade(game, &target_pos, 36.0f) == FALSE) { + return mCoBG_ScrollCheck(*pos_p, target_pos, 18.0f); + } + + return FALSE; +} + +static int Player_actor_CheckAbleMoveWadeBlock(GAME* game, const xyz_t* pos_p, s16 angle_y, f32 stick_range, + int angle_range, int npc_check_flag) { + f32 move_percentX = Player_actor_GetController_move_percentX(); + f32 move_percentY = Player_actor_GetController_move_percentY(); + xyz_t local_pos; + + mFI_WpostoLposInBK(&local_pos, *pos_p); + if (move_percentX > stick_range && + ((DEG2SHORT_ANGLE2(90.0f) - angle_range) < angle_y && angle_y < (DEG2SHORT_ANGLE2(90.0f) + angle_range)) && + mFI_ScrollCheck(*pos_p, mFI_MOVEDIR_RIGHT)) { + f32 border_x = (mFI_BK_WORLDSIZE_X_F - 18.0f); + + if (mCoBG_GetBlockBgCheckMode() == mCoBG_BLOCK_BGCHECK_MODE_INTRO_DEMO) { + border_x -= mFI_UNIT_BASE_SIZE_F; + } + + if (local_pos.x >= border_x) { + if (mPlib_Get_unable_wade() == FALSE) { + if (Player_actor_CheckAbleMoveWadeBG(game, pos_p, mFI_MOVEDIR_RIGHT, npc_check_flag)) { + return mFI_MOVEDIR_RIGHT; + } + } else { + return mFI_MOVEDIR_RIGHT; + } + } + + } else if (move_percentX < -stick_range && + (DEG2SHORT_ANGLE2(-90.0f) - angle_range < (int)angle_y && + (int)angle_y < DEG2SHORT_ANGLE2(-90.0f) + angle_range) && + mFI_ScrollCheck(*pos_p, mFI_MOVEDIR_LEFT)) { + f32 border_x = 18.0f; + + if (mCoBG_GetBlockBgCheckMode() == mCoBG_BLOCK_BGCHECK_MODE_INTRO_DEMO) { + border_x += mFI_UNIT_BASE_SIZE_F; + } + + if (local_pos.x <= border_x) { + if (mPlib_Get_unable_wade() == FALSE) { + if (Player_actor_CheckAbleMoveWadeBG(game, pos_p, mFI_MOVEDIR_LEFT, npc_check_flag)) { + return mFI_MOVEDIR_LEFT; + } + } else { + return mFI_MOVEDIR_LEFT; + } + } + } + + else if (move_percentY > stick_range && + ((DEG2SHORT_ANGLE2(180.0f) - angle_range) < (int)angle_y || + (int)angle_y < (DEG2SHORT_ANGLE2(-180.0f) + angle_range)) && + mFI_ScrollCheck(*pos_p, mFI_MOVEDIR_UP)) { + f32 border_z = 18.0f; + + if (mCoBG_GetBlockBgCheckMode() == mCoBG_BLOCK_BGCHECK_MODE_INTRO_DEMO) { + border_z += mFI_UNIT_BASE_SIZE_F; + } + + if (local_pos.z <= border_z) { + if (mPlib_Get_unable_wade() == FALSE) { + if (Player_actor_CheckAbleMoveWadeBG(game, pos_p, mFI_MOVEDIR_UP, npc_check_flag)) { + return mFI_MOVEDIR_UP; + } + } else { + return mFI_MOVEDIR_UP; + } + } + } + + else if (move_percentY < -stick_range && + ((-angle_range < (int)angle_y && (int)angle_y <= DEG2SHORT_ANGLE2(0.0f)) || + (int)angle_y >= DEG2SHORT_ANGLE2(0.0f) && (int)angle_y < angle_range) && + mFI_ScrollCheck(*pos_p, mFI_MOVEDIR_DOWN)) { + f32 border_z = (mFI_BK_WORLDSIZE_Z_F - 18.0f); + + if (mCoBG_GetBlockBgCheckMode() == mCoBG_BLOCK_BGCHECK_MODE_INTRO_DEMO) { + border_z -= mFI_UNIT_BASE_SIZE_F; + } + + if (local_pos.z >= border_z) { + if (mPlib_Get_unable_wade() == FALSE) { + if (Player_actor_CheckAbleMoveWadeBG(game, pos_p, mFI_MOVEDIR_DOWN, npc_check_flag)) { + return mFI_MOVEDIR_DOWN; + } + } else { + return mFI_MOVEDIR_DOWN; + } + } + } + + return mFI_MOVEDIR_NONE; +} + +static int Player_actor_CheckAbleMoveDemoWadeBlock(ACTOR* actorx) { + if (actorx->speed != 0.0f) { + xyz_t local_pos; + s16 angle_y = actorx->shape_info.rotation.y; + f32 dir_x = sin_s(angle_y); + f32 dir_z = cos_s(angle_y); + + mFI_WpostoLposInBK(&local_pos, actorx->world.position); + + if (dir_x > 0.0f && local_pos.x >= (mFI_BK_WORLDSIZE_X_F - 18.0f)) { + if (mFI_ScrollCheck(actorx->world.position, mFI_MOVEDIR_RIGHT)) { + return mFI_MOVEDIR_RIGHT; + } + } + + if (dir_x < 0.0f && local_pos.x <= (18.0f)) { + if (mFI_ScrollCheck(actorx->world.position, mFI_MOVEDIR_LEFT)) { + return mFI_MOVEDIR_LEFT; + } + } + + if (dir_z < 0.0f && local_pos.z <= (18.0f)) { + if (mFI_ScrollCheck(actorx->world.position, mFI_MOVEDIR_UP)) { + return mFI_MOVEDIR_UP; + } + } + + if (dir_z > 0.0f && local_pos.z >= (mFI_BK_WORLDSIZE_Z_F - 18.0f)) { + if (mFI_ScrollCheck(actorx->world.position, mFI_MOVEDIR_DOWN)) { + return mFI_MOVEDIR_DOWN; + } + } + } + + return mFI_MOVEDIR_NONE; +} + +static int Player_actor_CheckAbleMoveDemoWadeBoatBlock(ACTOR* actorx, s16 angle_y, f32 border_start) { + xyz_t local_pos; + f32 dir_z; + + dir_z = cos_s(angle_y); + mFI_WpostoLposInBK(&local_pos, actorx->world.position); + + if (dir_z < 0.0f && local_pos.z <= border_start) { + if (mFI_ScrollCheck(actorx->world.position, mFI_MOVEDIR_UP)) { + return mFI_MOVEDIR_UP; + } + } + + if (dir_z > 0.0f && local_pos.z >= (mFI_BK_WORLDSIZE_Z_F - border_start)) { + if (mFI_ScrollCheck(actorx->world.position, mFI_MOVEDIR_DOWN)) { + return mFI_MOVEDIR_DOWN; + } + } + + return mFI_MOVEDIR_NONE; +} + +static void Player_actor_CorrectWadeBlockBorder(ACTOR* actorx) { + mCoBG_UniqueWallCheck(actorx, 18.0f, 0.0f); +} + +/* Animation */ + +static void Player_actor_DMA_Animation(ACTOR* actorx, GAME* game, int anim0_idx, int anim1_idx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (anim0_idx >= 0 && anim0_idx != player->animation0_idx) { + player->animation0_idx = anim0_idx; + } + + if (anim1_idx >= 0 && anim1_idx != player->animation1_idx) { + player->animation1_idx = anim1_idx; + } +} + +static void Player_actor_DMA_PartTable(ACTOR* actorx, int part_table_idx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (part_table_idx != player->part_table_idx) { + player->part_table_idx = part_table_idx; + mPlib_DMA_player_Part_Table(player->part_table, part_table_idx); + } +} + +static int Player_actor_CulcAnimation_Base(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + s8* part_table = player->part_table; + + if (part_table == NULL) { + return cKF_STATE_NONE; + } + + return cKF_SkeletonInfo_R_combine_play(&player->keyframe0, &player->keyframe1, part_table); +} + +static int Player_actor_CulcAnimation_Base2(ACTOR* actorx, f32* last_anim0_current_frame_p) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + cKF_SkeletonInfo_R_c* kf1_p = &player->keyframe1; + cKF_FrameControl_c* fc1_p = &kf1_p->frame_control; + + *last_anim0_current_frame_p = fc0_p->current_frame; + if (Player_actor_CulcAnimation_Base(actorx) == cKF_STATE_STOPPED) { + if (fc0_p->speed == 0.0f) { + return TRUE; /* Animation has stopped */ + } + + fc0_p->speed = 0.0f; + fc1_p->speed = 0.0f; + } + + return FALSE; +} + +static int Player_actor_CulcAnimation_Base3(ACTOR* actorx, f32* last_anim0_current_frame_p) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + + *last_anim0_current_frame_p = fc0_p->current_frame; + if (Player_actor_CulcAnimation_Base(actorx) == cKF_STATE_STOPPED) { + return TRUE; + } + + return FALSE; +} + +static int Player_actor_CheckContinueAnimation(ACTOR* actorx, int anim0_idx, int anim1_idx, f32* anim0_frame_p, + f32* anim1_frame_p, f32* morph_counter_p, int part_table_idx, + int continue_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int now_anim0_idx; + int now_anim1_idx; + f32 now_frame0; + f32 now_frame1; + + if (continue_flag == FALSE) { + return FALSE; + } + + if (player->keyframe0.morph_counter != 0.0f) { + return FALSE; + } + + if (*morph_counter_p >= 0.0f) { + return FALSE; + } + + now_anim0_idx = player->animation0_idx; + now_anim1_idx = player->animation1_idx; + if (anim0_idx != now_anim0_idx || anim1_idx != now_anim1_idx) { + return FALSE; + } + + now_frame0 = *anim0_frame_p; + now_frame1 = *anim1_frame_p; + if (now_frame0 != 1.0f || now_frame1 != 1.0f) { + return FALSE; + } + + if (anim0_idx == mPlayer_ANIM_WAIT1) { + if (part_table_idx == mPlayer_PART_TABLE_NORMAL && anim1_idx != mPlayer_ANIM_WAIT1) { + return FALSE; + } + } else { + return FALSE; + } + + *anim0_frame_p = player->keyframe0.frame_control.current_frame; + *anim1_frame_p = player->keyframe1.frame_control.current_frame; + *morph_counter_p = 0.0f; + return TRUE; +} + +static void Player_actor_InitAnimation_Base1(ACTOR* actorx, GAME* game, int anim0_idx, int anim1_idx, f32 anim0_frame, + f32 anim1_frame, f32 frame_speed, f32 morph_counter, int part_table_idx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p; + cKF_SkeletonInfo_R_c* kf1_p; + + Player_actor_CheckContinueAnimation(actorx, anim0_idx, anim1_idx, &anim0_frame, &anim1_frame, &morph_counter, + part_table_idx, TRUE); + Player_actor_DMA_PartTable(actorx, part_table_idx); + Player_actor_DMA_Animation(actorx, game, anim0_idx, anim1_idx); + + kf0_p = &player->keyframe0; + kf1_p = &player->keyframe1; + + if (anim0_idx >= 0) { + cKF_SkeletonInfo_R_init_standard_repeat_setframeandspeedandmorph(kf0_p, mPlib_Get_Pointer_Animation(anim0_idx), + NULL, anim0_frame, frame_speed, morph_counter); + } else { + kf0_p->morph_counter = morph_counter; + } + + if (anim1_idx >= 0) { + cKF_SkeletonInfo_R_init_standard_repeat_setframeandspeedandmorph(kf1_p, mPlib_Get_Pointer_Animation(anim1_idx), + NULL, anim1_frame, frame_speed, morph_counter); + } else { + kf1_p->morph_counter = morph_counter; + } +} + +static void Player_actor_InitAnimation_Base2(ACTOR* actorx, GAME* game, int anim0_idx, int anim1_idx, f32 anim0_frame, + f32 anim1_frame, f32 frame_speed, f32 morph_counter, int mode, + int part_table_idx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p; + cKF_SkeletonInfo_R_c* kf1_p; + + Player_actor_CheckContinueAnimation(actorx, anim0_idx, anim1_idx, &anim0_frame, &anim1_frame, &morph_counter, + part_table_idx, TRUE); + Player_actor_DMA_Animation(actorx, game, anim0_idx, anim1_idx); + Player_actor_DMA_PartTable(actorx, part_table_idx); + + kf0_p = &player->keyframe0; + kf1_p = &player->keyframe1; + + if (anim0_idx >= 0) { + cKF_SkeletonInfo_R_init_standard_setframeandspeedandmorphandmode( + kf0_p, mPlib_Get_Pointer_Animation(anim0_idx), NULL, anim0_frame, frame_speed, morph_counter, mode); + } else { + kf0_p->morph_counter = morph_counter; + } + + if (anim1_idx >= 0) { + cKF_SkeletonInfo_R_init_standard_setframeandspeedandmorphandmode( + kf1_p, mPlib_Get_Pointer_Animation(anim1_idx), NULL, anim1_frame, frame_speed, morph_counter, mode); + } else { + kf1_p->morph_counter = morph_counter; + } +} + +static void Player_actor_InitAnimation_Base3(ACTOR* actorx, GAME* game, int anim0_idx, int anim1_idx, f32 frame_speed, + f32 morph_counter, int mode, int part_table_idx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p; + cKF_SkeletonInfo_R_c* kf1_p; + + Player_actor_DMA_Animation(actorx, game, anim0_idx, anim1_idx); + Player_actor_DMA_PartTable(actorx, part_table_idx); + + kf0_p = &player->keyframe0; + kf1_p = &player->keyframe1; + + /* @BUG - shouldn't this be checking anim0_idx ?? */ + if (anim1_idx >= 0) { + cKF_SkeletonInfo_R_init_reverse_setspeedandmorphandmode(kf0_p, mPlib_Get_Pointer_Animation(anim0_idx), NULL, + frame_speed, morph_counter, mode); + } else { + kf0_p->morph_counter = morph_counter; + } + + if (anim1_idx >= 0) { + cKF_SkeletonInfo_R_init_reverse_setspeedandmorphandmode(kf1_p, mPlib_Get_Pointer_Animation(anim1_idx), NULL, + frame_speed, morph_counter, mode); + } else { + kf1_p->morph_counter = morph_counter; + } +} + +/* Collision */ + +static void Player_actor_Get_player_move_position(ACTOR* actorx, xyz_t* pos_p) { + *pos_p = actorx->world.position; +} + +// clang-format off +static ClObjPipeData_c Player_actor_OcInfoData_forStand = { + { 0x39, 0x08, ClObj_TYPE_PIPE }, /* ClObjData_c */ + { 0x01 }, /* ClObjElemData_c */ + { { 20, 60, 0, { 0, 0, 0 } } }, /* ClObjPipeAttrData_c */ +}; +// clang-format on + +// clang-format off +static ClObjTrisElemData_c Player_actor_pclobj_tris_base_forItem[1] = { + { + { 0x00 }, /* ClObjElemData_c */ + { { { -70.0f, 176.0f, 0.0f }, { -70.0f, -4.0f, 0.0f }, { 0.0f, -4.0f, 30.0f } } }, /* ClObjTrisElemAttrData_c */ + }, +}; +// clang-format on + +// clang-format off +static ClObjTrisData_c Player_actor_pclobj_tris_data_forItem = { + { 0x30, 0x02, ClObj_TYPE_TRIS }, /* ClObjData_c */ + 1, /* num */ + Player_actor_pclobj_tris_base_forItem, /* data */ +}; +// clang-format on + +static void Player_actor_ct_forCorect(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + ClObjPipe_c* col_pipe_p = &player->col_pipe; + ClObjTris_c* axe_tris_p = &player->item_axe_tris; + ClObjTris_c* net_tris_p = &player->item_net_tris; + + /* Collision Pipe */ + ClObjPipe_ct(game, col_pipe_p); + ClObjPipe_set5(game, col_pipe_p, actorx, &Player_actor_OcInfoData_forStand); + + /* Axe Collision */ + ClObjTris_ct(game, axe_tris_p); + ClObjTris_set5_nzm(game, axe_tris_p, actorx, &Player_actor_pclobj_tris_data_forItem, + player->item_axe_tris_elem_tbl); + + /* Net Collision */ + ClObjTris_ct(game, net_tris_p); + ClObjTris_set5_nzm(game, net_tris_p, actorx, &Player_actor_pclobj_tris_data_forItem, + player->item_net_tris_elem_tbl); +} + +static void Player_actor_dt_forCorect(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + ClObjPipe_c* col_pipe_p = &player->col_pipe; + ClObjTris_c* axe_tris_p = &player->item_axe_tris; + ClObjTris_c* net_tris_p = &player->item_net_tris; + + ClObjPipe_dt(game, col_pipe_p); + ClObjTris_dt_nzf(game, axe_tris_p); + ClObjTris_dt_nzf(game, net_tris_p); +} + +static void Player_actor_Excute_Corect_forStand(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + ClObjPipe_c* col_pipe_p = &player->col_pipe; + ClObj_c* col_obj_p = &col_pipe_p->collision_obj; + GAME_PLAY* play = (GAME_PLAY*)game; + CollisionCheck_c* col_check_p = &play->collision_check; + + CollisionCheck_Uty_ActorWorldPosSetPipeC(actorx, col_pipe_p); + CollisionCheck_setOC(game, col_check_p, col_obj_p); +} + +static void Player_actor_Excute_Corect_forBrake(ACTOR* actorx, GAME* game) { + f32 speed = actorx->speed; + u8* weight_p = &actorx->status_data.weight; + + if (speed != 0.0f) { + *weight_p = 50; + } else { + *weight_p = MASSTYPE_HEAVY; + } + + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_Excute_Corect_forOutdoor(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + ClObjPipe_c* col_pipe_p = &player->col_pipe; + s_xyz* pipe_center_p = &col_pipe_p->attribute.pipe.center; + ClObj_c* col_obj_p = &col_pipe_p->collision_obj; + GAME_PLAY* play = (GAME_PLAY*)game; + CollisionCheck_c* col_check_p = &play->collision_check; + xyz_t world_pos; + + cKF_SkeletonInfo_R_AnimationMove_CulcTransToWorld(&world_pos, &actorx->world.position, 0.0f, 1000.0f, 0.0f, + actorx->shape_info.rotation.y, &actorx->scale, kf0_p, + cKF_ANIMATION_TRANS_XZ); + + pipe_center_p->x = world_pos.x; + pipe_center_p->y = actorx->world.position.y; + pipe_center_p->z = world_pos.z; + + CollisionCheck_setOC(game, col_check_p, col_obj_p); +} + +static int Player_actor_Check_OBJtoLine_forItem_axe(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + ClObjTris_c* axe_tris_p = &player->item_axe_tris; + + return axe_tris_p->collision_obj.collision_flags1 & (1 << 2); +} + +static int Player_actor_Check_OBJtoLine_forItem_net(ACTOR* actorx, ACTOR** hit_actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + ClObjTris_c* net_tris_p = &player->item_net_tris; + + if ((net_tris_p->collision_obj.collision_flags1 & (1 << 2)) == 0) { + *hit_actor = NULL; + return FALSE; + } else { + *hit_actor = net_tris_p->collision_obj.collided_actor; + return TRUE; + } +} + +static void Player_actor_SetPosition_OBJtoLine_forItem(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + ClObjTris_c* axe_tris_p = &player->item_axe_tris; + ClObjTris_c* net_tris_p = &player->item_net_tris; + + /* Process axe collision */ + { + xyz_t start_pos; + xyz_t right_pos; + xyz_t left_pos; + s16 angle_y = actorx->shape_info.rotation.y; + s16 right_angle_y = angle_y - DEG2SHORT_ANGLE2(8.0255126953125f); + s16 left_angle_y = angle_y + DEG2SHORT_ANGLE2(8.0255126953125f); + + Player_actor_Get_player_move_position(actorx, &start_pos); + start_pos.y += 31.0f; + + right_pos = start_pos; + right_pos.x += 35.0f * sin_s(right_angle_y); + right_pos.z += 35.0f * cos_s(right_angle_y); + + left_pos = start_pos; + left_pos.x += 35.0f * sin_s(left_angle_y); + left_pos.z += 35.0f * cos_s(left_angle_y); + + { + ClObjTrisElem_c* axe_tris_elem_p = axe_tris_p->elements; + ClObjTrisElemAttr_c* axe_tris_elem_attr_p = &axe_tris_elem_p->attribute; + xyz_t* vtx_tbl = axe_tris_elem_attr_p->tri.vtx; + + vtx_tbl[0] = start_pos; + vtx_tbl[1] = right_pos; + vtx_tbl[2] = left_pos; + } + } + + /* Process net collision */ + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_SWING_NET) { + xyz_t* net_start_pos_p = &player->net_start_pos; + xyz_t* net_end_pos_p = &player->net_end_pos; + xyz_t net_top_pos = *net_end_pos_p; + + net_top_pos.y += 10.0f; + + { + ClObjTrisElem_c* net_tris_elem_p = net_tris_p->elements; + ClObjTrisElemAttr_c* net_tris_elem_attr_p = &net_tris_elem_p->attribute; + xyz_t* vtx_tbl = net_tris_elem_attr_p->tri.vtx; + + vtx_tbl[0] = *net_start_pos_p; + vtx_tbl[1] = *net_end_pos_p; + vtx_tbl[2] = net_top_pos; + } + } + + /* Update collision check */ + { + GAME_PLAY* play = (GAME_PLAY*)game; + CollisionCheck_c* col_check_p = &play->collision_check; + ClObj_c* axe_col_obj_p = &axe_tris_p->collision_obj; + ClObj_c* net_col_obj_p = &net_tris_p->collision_obj; + + CollisionCheck_setOCC(game, col_check_p, axe_col_obj_p); + CollisionCheck_setOCC(game, col_check_p, net_col_obj_p); + } +} + +static f32 Player_actor_Culc_over_speed_normalize_NoneZero(ACTOR* actorx, const xyz_t* pos_p) { + f32 over_speed_normalize; + xyz_t ground_norm; + + mCoBG_GetBgNorm_FromWpos(&ground_norm, *pos_p); + over_speed_normalize = 1.0f; + + if (ground_norm.x != 0.0f || ground_norm.z != 0.0f) { + xyz_t move_vec; + s16 angle_y = actorx->world.angle.y; + + move_vec.x = sin_s(angle_y); + move_vec.z = cos_s(angle_y); + + if (ground_norm.y != 0.0f) { + move_vec.y = (ground_norm.x * move_vec.x + ground_norm.z * move_vec.z) / -ground_norm.y; + + if (move_vec.y > 0.0f) { + over_speed_normalize = Math3DVecLengthSquare(&move_vec); + } + } + } + + if (over_speed_normalize == 0.0f) { + over_speed_normalize = 1.0f; + } + + return over_speed_normalize; +} + +static void Player_actor_set_eye_PositionAndAngle(ACTOR* actorx) { + Actor_world_to_eye(actorx, 33.0f); +} + +static void Player_actor_set_lean_angle(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + f32 speed; + f32 lean_angle; + + speed = SQ(kf0_p->frame_control.speed) / 0.36f; + lean_angle = SQ(speed); + lean_angle = lean_angle * lean_angle * lean_angle * DEG2SHORT_ANGLE2(20.0f); + if (lean_angle > DEG2SHORT_ANGLE2(20.0f)) { + lean_angle = DEG2SHORT_ANGLE2(20.0f); + } + + add_calc_short_angle2(&actorx->shape_info.rotation.x, lean_angle, 1.0f - sqrtf(0.5f), DEG2SHORT_ANGLE2(10.0f), + DEG2SHORT_ANGLE2(0.0f)); +} + +static void Player_actor_recover_lean_angle(ACTOR* actorx) { + add_calc_short_angle2(&actorx->shape_info.rotation.x, DEG2SHORT_ANGLE2(0.0f), 1.0f - sqrtf(0.5f), + DEG2SHORT_ANGLE2(10.0f), DEG2SHORT_ANGLE2(0.0f)); +} + +static const s16 Player_actor_wall_angle[] = { + DEG2SHORT_ANGLE2(-180.0f), + DEG2SHORT_ANGLE2(-90.0f), + DEG2SHORT_ANGLE2(0.0f), + DEG2SHORT_ANGLE2(90.0f), +}; + +static s16 Player_actor_Get_Angle_fromIndex(int idx) { + if (idx >= 0 && idx < aMR_CONTACT_DIR_NUM) { + return Player_actor_wall_angle[idx]; + } + + return DEG2SHORT_ANGLE2(0.0f); +} + +static s16 Player_actor_Get_Angle_fromDirection(int direction) { + static const s16 angle[] = { + DEG2SHORT_ANGLE2(90.0f), + DEG2SHORT_ANGLE2(-90.0f), + DEG2SHORT_ANGLE2(-180.0f), + DEG2SHORT_ANGLE2(0.0f), + }; + + if (direction > mFI_MOVEDIR_NONE && direction < mFI_MOVEDIR_NUM) { + return angle[direction - mFI_MOVEDIR_RIGHT]; + } + + return DEG2SHORT_ANGLE2(0.0f); +} + +static int Player_actor_Get_Direction_fromAngle(s16 angle) { + switch (angle) { + case DEG2SHORT_ANGLE2(90.0f): + return mFI_MOVEDIR_RIGHT; + case DEG2SHORT_ANGLE2(-90.0f): + return mFI_MOVEDIR_LEFT; + case DEG2SHORT_ANGLE2(-180.0f): + return mFI_MOVEDIR_UP; + case DEG2SHORT_ANGLE2(0.0f): + return mFI_MOVEDIR_DOWN; + default: + return mFI_MOVEDIR_NONE; + } +} + +static int Player_actor_Get_Index_fromAngle(s16 angle) { + int i; + + for (i = 0; i < aMR_CONTACT_DIR_NUM; i++) { + if (angle == Player_actor_wall_angle[i]) { + return i; + } + } + + return aMR_CONTACT_DIR_BACK; +} + +static int Player_actor_RecieveDemoOrder_EffectOrder(void) { + int order = mDemo_Get_OrderValue(mDemo_ORDER_PLAYER, 0); + + if (order > 0) { + mDemo_Set_OrderValue(mDemo_ORDER_PLAYER, 0, 0); + } + + return order; +} + +static s16 Player_actor_Get_ControllerAngle(GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + int angle = DEG2SHORT_ANGLE2(270.0f) + (s16)Player_actor_GetController_move_angle() + (s16)getCamera2AngleY(play); + + return angle; +} + +static int Player_actor_Get_DiffWorldAngleToControllerAngle(ACTOR* actorx) { + s16 angle_y = actorx->world.angle.y; + s16 controller_y = DEG2SHORT_ANGLE2(90.0f) + Player_actor_GetController_move_angle(); + int diff_y = (s16)(angle_y - controller_y); + + diff_y = diff_y < 0 ? -diff_y : diff_y; + + return diff_y; +} + +static void Player_actor_putin(int slot, mActor_name_t item) { + if (slot >= 0) { + mPr_SetPossessionItem(Now_Private, slot, item, mPr_ITEM_COND_NORMAL); + } +} + +static void Player_actor_putin_item(int slot, mActor_name_t item, xyz_t* pos_p) { + Player_actor_putin(slot, item); + + if (pos_p != NULL) { + mFI_SetFG_common(EMPTY_NO, *pos_p, TRUE); + } +} + +static void Player_actor_putin_item_layer2(int slot, mActor_name_t item, xyz_t* pos_p) { + Player_actor_putin(slot, item); + + if (pos_p != NULL) { + mFI_SetFG2(EMPTY_NO, *pos_p); + } +} + +static void Player_actor_putin_furniture(GAME* game, int slot, mActor_name_t item) { + if (!ITEM_IS_MYMANNIQUIN(item) && !ITEM_IS_MYUMBRELLA(item)) { + Player_actor_putin(slot, item); + } + + if (Common_Get(clip).my_room_clip != NULL) { + Common_Get(clip).my_room_clip->ftr2itemBag_proc(game); + } +} + +static int Player_actor_Check_AnimationFrame_PerfectEqual(ACTOR* actorx, f32 frame) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc_p = &kf0_p->frame_control; + f32 cur_frame = fc_p->current_frame; + + return cur_frame == frame; +} + +static int Player_actor_Check_AnimationFrame_Common(f32 cur_frame, f32 frame_speed, f32 end_frame, f32 target_frame) { + f32 last_frame = cur_frame - frame_speed; + + if (frame_speed > 0.0f) { + if (last_frame < 1.0f) { + if (((end_frame + last_frame) - 1.0f < target_frame && target_frame <= end_frame) || + (1.0f <= target_frame && target_frame <= cur_frame)) { + return TRUE; + } + } else { + if (last_frame < target_frame && target_frame <= cur_frame) { + return TRUE; + } + } + } else if (frame_speed < 0.0f) { + if (last_frame > end_frame) { + if (((end_frame - last_frame) + 1.0f < target_frame && target_frame <= cur_frame) || + (1.0f <= target_frame && target_frame <= cur_frame)) { + return TRUE; + } + } else { + if (cur_frame <= target_frame && target_frame < last_frame) { + return TRUE; + } + } + } else { + if (cur_frame == target_frame) { + return TRUE; + } + } + + return FALSE; +} + +static int Player_actor_Check_AnimationFrame(cKF_FrameControl_c* fc_p, f32 target_frame) { + f32 frame_speed = fc_p->speed; + f32 cur_frame = fc_p->current_frame; + f32 end_frame = fc_p->end_frame; + + return Player_actor_Check_AnimationFrame_Common(cur_frame, frame_speed, end_frame, target_frame); +} + +static int Player_actor_Check_TradingItemMode(u8 mode) { + if (Common_Get(clip).handOverItem_clip->request_mode == mode) { + return TRUE; + } + + return FALSE; +} + +static void Player_actor_CHange_TradingItemMode(ACTOR* actorx, u8 mode) { + Common_Get(clip).handOverItem_clip->chg_request_mode_proc(actorx, mode); +} + +static void Player_actor_Set_item_matrix_set(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + player->item_matrix_set = TRUE; +} + +static void Player_actor_Unset_item_matrix_set(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + player->item_matrix_set = FALSE; +} + +static void Player_actor_Change_ItemParent(ACTOR* actor) { + ACTOR* item_actor = Common_Get(clip).handOverItem_clip->chg_master_proc(actor); + + if (item_actor != NULL) { + Common_Get(clip).handOverItem_clip->chg_request_mode_proc(actor, aHOI_REQUEST_GET_PULL); + } +} + +static int Player_actor_Check_ItemParent(ACTOR* actor) { + return Common_Get(clip).handOverItem_clip->master_actor == actor; +} + +static void Player_actor_Birth_TradingItem(ACTOR* actor, mActor_name_t item, int mode, int present_flag) { + if (Common_Get(clip).handOverItem_clip != NULL) { + ACTOR* item_actor = Common_Get(clip).handOverItem_clip->birth_proc(item, mode, present_flag, actor); + + if (item_actor != NULL) { + Player_actor_CHange_TradingItemMode(actor, aHOI_REQUEST_TRANSFER); + } + } +} + +static void Player_actor_ItemBank_ct(ACTOR* actorx, GAME* game) { + // stubbed +} + +static int Player_actor_Change_ItemBank(ACTOR* actorx, int item_idx, int anim_idx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int last_bank = player->item_bank_idx; + int cur_bank_idx = last_bank ^ 1; + int last_item_idx = player->item_shape_type[cur_bank_idx]; + int res = FALSE; + + player->item_bank_idx = cur_bank_idx; + + if (item_idx >= 0) { + if (item_idx != last_item_idx) { + player->item_shape_type[cur_bank_idx] = item_idx; + } + } else { + player->item_shape_type[cur_bank_idx] = -1; + player->item_shape_segaddr[cur_bank_idx] = 0; + } + + if (anim_idx >= 0) { + if (anim_idx != player->item_animation_idx[cur_bank_idx]) { + player->item_animation_idx[cur_bank_idx] = anim_idx; + } + + if (player->item_animation_idx[cur_bank_idx] == player->item_animation_idx[cur_bank_idx ^ 1]) { + res = TRUE; + } + } else { + player->item_anim_addr[cur_bank_idx] = 0; + player->item_anim_segaddr[cur_bank_idx] = 0; + player->item_animation_idx[cur_bank_idx] = -1; + } + + return res; +} + +static void Player_actor_Set_OldAngle(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + s_xyz* world_angle_p = &actorx->world.angle; + s_xyz* shape_rot_p = &actorx->shape_info.rotation; + s_xyz* old_world_angle_p = &player->old_world_angle; + s_xyz* old_shape_angle_p = &player->old_shape_angle; + + player->world_angle_delta.x = (s16)(world_angle_p->x - old_world_angle_p->x); + player->world_angle_delta.y = (s16)(world_angle_p->y - old_world_angle_p->y); + player->world_angle_delta.z = (s16)(world_angle_p->z - old_world_angle_p->z); + + player->shape_angle_delta.x = (s16)(shape_rot_p->x - old_shape_angle_p->x); + player->shape_angle_delta.y = (s16)(shape_rot_p->y - old_shape_angle_p->y); + player->shape_angle_delta.z = (s16)(shape_rot_p->z - old_shape_angle_p->z); + + *old_world_angle_p = *world_angle_p; + *old_shape_angle_p = *shape_rot_p; +} + +static void Player_actor_Reset_Item_net_catch_request_table(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + player->item_net_catch_request_use_count = 0; + player->item_net_catch_label_request_force = 0; +} + +static int Player_actor_Set_Item_net_catch_request_table(ACTOR* actorx, GAME* game, u32 label, s8 type, + const xyz_t* pos_p, f32 radius) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_SWING_NET) { + int catch_num = player->item_net_catch_request_use_count; + + if ((catch_num >= 0 && catch_num < mPlayer_NET_CATCH_TABLE_COUNT) && + (type >= 0 && type < mPlayer_NET_CATCH_TYPE_NUM) && pos_p != NULL && 0.0f <= radius) { + player->item_net_catch_label_request_table[catch_num] = label; + player->item_net_catch_type_request_table[catch_num] = type; + player->item_net_catch_pos_request_table[catch_num] = *pos_p; + player->item_net_catch_radius_request_table[catch_num] = radius; + player->item_net_catch_request_use_count = catch_num + 1; + return TRUE; + } + } + + return FALSE; +} + +static int Player_actor_Set_Item_net_catch_request_force(ACTOR* actorx, GAME* game, u32 label, s8 type) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_SWING_NET && + player->item_net_catch_label_request_force == 0) { + player->item_net_catch_label_request_force = label; + player->item_net_catch_type_request_force = type; + return TRUE; + } + + return FALSE; +} + +static f32 Player_actor_Get_Item_net_catch_swing_timer(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_SWING_NET) { + return player->main_data.swing_net.swing_timer; + } + + return 0.0f; +} + +static void Player_actor_DisappearShadow_fromAnimationFrame(ACTOR* actorx, f32 start_frame, f32 end_frame) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + f32 cur_frame = player->keyframe0.frame_control.current_frame; + + if (cur_frame < start_frame) { + return; + } + + if (cur_frame < end_frame) { + f32 p = 1.0f - ((cur_frame - start_frame) - 1.0f) / ((end_frame - start_frame) - 1.0f); + + if (p < 0.0f) { + p = 0.0f; + } else if (p > 1.0f) { + p = 1.0f; + } + + actorx->shape_info.shadow_size_change_rate = p; + actorx->shape_info.shadow_alpha_change_rate = p; + } else { + actorx->shape_info.shadow_size_change_rate = 0.0f; + actorx->shape_info.shadow_alpha_change_rate = 0.0f; + actorx->shape_info.draw_shadow = FALSE; + } +} + +static void Player_actor_AppearShadow_fromAnimationFrame(ACTOR* actorx, f32 appear_start_frame, f32 appear_end_frame) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + f32 cur_frame = player->keyframe0.frame_control.current_frame; + f32 end_frame = player->keyframe0.frame_control.end_frame; + + if (cur_frame > end_frame - appear_end_frame) { + actorx->shape_info.shadow_size_change_rate = 1.0f; + actorx->shape_info.shadow_alpha_change_rate = 1.0f; + } else if (cur_frame > (end_frame - appear_start_frame) - appear_end_frame) { + f32 p = 1.0f - ((end_frame - cur_frame) - appear_end_frame) / (appear_start_frame - 1.0f); + + if (p < 0.0f) { + p = 0.0f; + } else if (p > 1.0f) { + p = 1.0f; + } + + actorx->shape_info.shadow_size_change_rate = p; + actorx->shape_info.shadow_alpha_change_rate = p; + } else { + actorx->shape_info.shadow_size_change_rate = 0.0f; + actorx->shape_info.shadow_alpha_change_rate = 0.0f; + actorx->shape_info.draw_shadow = TRUE; + } +} + +static u32 Player_actor_get_door_label(GAME* game) { + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_DOOR) { + return GET_PLAYER_ACTOR_GAME(game)->main_data.door.label; + } + + return 0; +} + +static void Player_actor_BGcheck_common_type1(ACTOR* actorx) { + mCoBG_BgCheckControll(NULL, actorx, 18.0f, 0.0f, TRUE, FALSE, 1); + Player_actor_CorrectWadeBlockBorder(actorx); +} + +static void Player_actor_BGcheck_common_type2(ACTOR* actorx) { + mCoBG_BgCheckControll(NULL, actorx, 18.0f, 0.0f, TRUE, FALSE, 1); +} + +static void Player_actor_BGcheck_common_type3(ACTOR* actorx) { + mCoBG_GroundCheckOnly(NULL, actorx, 18.0f, 0.0f, 0); +} + +static void Player_actor_Set_force_position_angle(GAME* game, const xyz_t* pos_p, const s_xyz* angle_p, u8 flags) { + if (flags != mPlayer_FORCE_POSITION_ANGLE_NONE) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + if (pos_p != NULL) { + if ((flags & mPlayer_FORCE_POSITION_ANGLE_POSX)) { + player->force_position.x = pos_p->x; + } + + if ((flags & mPlayer_FORCE_POSITION_ANGLE_POSY)) { + player->force_position.y = pos_p->y; + } + + if ((flags & mPlayer_FORCE_POSITION_ANGLE_POSZ)) { + player->force_position.z = pos_p->z; + } + } + + if (angle_p != NULL) { + if ((flags & mPlayer_FORCE_POSITION_ANGLE_ROTX)) { + player->force_angle.x = angle_p->x; + } + + if ((flags & mPlayer_FORCE_POSITION_ANGLE_ROTY)) { + player->force_angle.y = angle_p->y; + } + + if ((flags & mPlayer_FORCE_POSITION_ANGLE_ROTZ)) { + player->force_angle.z = angle_p->z; + } + } + + player->force_position_angle_flag |= flags; + } +} + +static void Player_actor_Reset_force_position_angle(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + player->force_position_angle_flag = mPlayer_FORCE_POSITION_ANGLE_NONE; +} + +static u8 Player_actor_Get_force_position_angle(GAME* game, xyz_t* pos_p, s_xyz* angle_p) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + u8 flags = player->force_position_angle_flag; + + if (flags != mPlayer_FORCE_POSITION_ANGLE_NONE) { + if (pos_p != NULL) { + if ((flags & mPlayer_FORCE_POSITION_ANGLE_POSX)) { + pos_p->x = player->force_position.x; + } + + if ((flags & mPlayer_FORCE_POSITION_ANGLE_POSY)) { + pos_p->y = player->force_position.y; + } + + if ((flags & mPlayer_FORCE_POSITION_ANGLE_POSZ)) { + pos_p->z = player->force_position.z; + } + } + + if (angle_p != NULL) { + if ((flags & mPlayer_FORCE_POSITION_ANGLE_ROTX)) { + angle_p->x = player->force_angle.x; + } + + if ((flags & mPlayer_FORCE_POSITION_ANGLE_ROTY)) { + angle_p->y = player->force_angle.y; + } + + if ((flags & mPlayer_FORCE_POSITION_ANGLE_ROTZ)) { + angle_p->z = player->force_angle.z; + } + } + } + + return flags; +} + +static void Player_actor_Reinput_force_position_angle(ACTOR* actorx, GAME* game) { + Player_actor_Get_force_position_angle(game, &actorx->world.position, &actorx->world.angle); + Player_actor_Get_force_position_angle(game, NULL, &actorx->shape_info.rotation); + Player_actor_Reset_force_position_angle(actorx); +} + +static int Player_actor_Get_DemoOrder(void) { + return mDemo_Get_OrderValue(mDemo_ORDER_PLAYER, 1); +} + +static void Player_actor_Set_DemoOrder(u16 value) { + mDemo_Set_OrderValue(mDemo_ORDER_PLAYER, 1, value); +} + +static void Player_actor_Get_DemoPosition(xyz_t* pos_p) { + f32 x = (s16)mDemo_Get_OrderValue(mDemo_ORDER_PLAYER, 2); + f32 y = (s16)mDemo_Get_OrderValue(mDemo_ORDER_PLAYER, 3); + f32 z = (s16)mDemo_Get_OrderValue(mDemo_ORDER_PLAYER, 4); + + pos_p->x = x; + pos_p->y = y; + pos_p->z = z; +} + +static int Player_actor_Get_DemoChangeAngleY(void) { + return mDemo_Get_OrderValue(mDemo_ORDER_PLAYER, 5); +} + +static void Player_actor_Set_DemoChangeAngleY(u16 value) { + mDemo_Set_OrderValue(mDemo_ORDER_PLAYER, 5, value); +} + +static s16 Player_actor_Get_DemoAngleY(void) { + return (s16)mDemo_Get_OrderValue(mDemo_ORDER_PLAYER, 6); +} + +static int Player_actor_CheckScene_AbleOutItem(int scene_no) { + // clang-format off + static const s8 data[] = { + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + FALSE, + TRUE, + TRUE, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }; + // clang-format on + + if (!(scene_no >= 0 && scene_no < SCENE_NUM)) { + return FALSE; + } + + return data[scene_no]; +} + +static int Player_actor_CheckPlayer_AbleOutItem(int main_index) { + if (mPlayer_MAIN_INDEX_VALID(main_index) == FALSE) { + return mPlayer_ABLE_ITEM_CAN_USE_ALL; + } else { + // clang-format off + static const s8 data[] = { + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_RESTRICTED, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_RESTRICTED, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_RESTRICTED, + mPlayer_ABLE_ITEM_RESTRICTED, + mPlayer_ABLE_ITEM_RESTRICTED, + mPlayer_ABLE_ITEM_RESTRICTED, + mPlayer_ABLE_ITEM_RESTRICTED, + mPlayer_ABLE_ITEM_RESTRICTED, + mPlayer_ABLE_ITEM_RESTRICTED, + mPlayer_ABLE_ITEM_RESTRICTED, + mPlayer_ABLE_ITEM_RESTRICTED, + mPlayer_ABLE_ITEM_RESTRICTED, + mPlayer_ABLE_ITEM_RESTRICTED, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_RESTRICTED, + mPlayer_ABLE_ITEM_RESTRICTED, + mPlayer_ABLE_ITEM_RESTRICTED, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_RESTRICTED, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_RESTRICTED, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_RESTRICTED, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_RESTRICTED, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + }; + // clang-format on + + return data[main_index]; + } +} + +static int Player_actor_CheckPlayer_AbleLoadItem(int main_index) { + if (mPlayer_MAIN_INDEX_VALID(main_index) == FALSE) { + return mPlayer_ABLE_ITEM_CAN_USE_ALL; + } else { + // clang-format off + static const s8 data[] = { + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + }; + // clang-format on + + return data[main_index]; + } +} + +static int Player_actor_Check_is_demo_mode(int main_index) { + if (mPlayer_MAIN_INDEX_VALID(main_index) != FALSE) { + // clang-format off + static const s8 data[] = { + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + FALSE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + }; + // clang-format on + + return data[main_index]; + } + + return FALSE; +} + +static int Player_actor_Check_axe_after(ACTOR* actorx, xyz_t* target_pos_p, mActor_name_t* fg_p, + ACTOR** reflect_actor_pp) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + *fg_p = EMPTY_NO; + *reflect_actor_pp = NULL; + + if (Player_actor_Check_OBJtoLine_forItem_axe(actorx)) { + ClObjTris_c* axe_tris_p = &player->item_axe_tris; + ClObjTrisElem_c* axe_tris_elem_p = axe_tris_p->elements; + ClObjTrisElemAttr_c* axe_tris_elem_attr_p = &axe_tris_elem_p->attribute; + xyz_t* cross_p = &axe_tris_elem_attr_p->t; + ACTOR* reflect_actor = axe_tris_p->collision_obj.collided_actor; + + *target_pos_p = *cross_p; + *reflect_actor_pp = reflect_actor; + + if (reflect_actor != NULL) { + if (reflect_actor->id == mAc_PROFILE_BALL) { + if (reflect_actor->speed == 0.0f) { + return mPlayer_AXE_HIT_REFLECT; + } + } else { + return mPlayer_AXE_HIT_REFLECT; + } + } else { + return mPlayer_AXE_HIT_REFLECT; + } + } + + { + xyz_t* unit_center_p; + s16 player_angle_y = actorx->shape_info.rotation.y; + xyz_t player_move_pos; + int player_pos_x; + int player_pos_z; + xyz_t unit_center_pos[8]; + xyz_t unit_pos[8]; + int unit_exist_table[8]; + int unit_center_angle_table[8]; + f32 unit_center_dist_table[8]; + int unit_count; + int i; + int right_idx = -1; + int left_idx = -1; + int up_idx = -1; + int down_idx = -1; + f32 x; + f32 z; + + Player_actor_Get_player_move_position(actorx, &player_move_pos); + player_pos_x = (int)(player_move_pos.x / mFI_UT_WORLDSIZE_X_F); + player_pos_z = (int)(player_move_pos.z / mFI_UT_WORLDSIZE_Z_F); + + x = player_pos_x * mFI_UT_WORLDSIZE_X_F; + z = player_pos_z * mFI_UT_WORLDSIZE_Z_F; + + if (x == player_move_pos.x && z == player_move_pos.z) { + return 0; + } else if (x == player_move_pos.x) { + unit_count = 4; + unit_pos[0].x = unit_pos[2].x = player_move_pos.x + mFI_UT_WORLDSIZE_HALF_X_F; + unit_pos[1].x = unit_pos[3].x = player_move_pos.x - mFI_UT_WORLDSIZE_HALF_X_F; + unit_pos[0].z = unit_pos[1].z = player_move_pos.z - mFI_UT_WORLDSIZE_Z_F; + unit_pos[2].z = unit_pos[3].z = player_move_pos.z + mFI_UT_WORLDSIZE_Z_F; + } else if (z == player_move_pos.z) { + unit_count = 4; + unit_pos[0].x = unit_pos[2].x = player_move_pos.x + mFI_UT_WORLDSIZE_X_F; + unit_pos[1].x = unit_pos[3].x = player_move_pos.x - mFI_UT_WORLDSIZE_X_F; + unit_pos[0].z = unit_pos[1].z = player_move_pos.z - mFI_UT_WORLDSIZE_HALF_Z_F; + unit_pos[2].z = unit_pos[3].z = player_move_pos.z + mFI_UT_WORLDSIZE_HALF_Z_F; + } else { + right_idx = 3; + left_idx = 4; + up_idx = 1; + down_idx = 6; + unit_count = 8; + + unit_pos[6].x = player_move_pos.x; + unit_pos[1].x = player_move_pos.x; + unit_pos[4].z = player_move_pos.z; + unit_pos[0].x = unit_pos[3].x = unit_pos[5].x = player_move_pos.x - mFI_UT_WORLDSIZE_X_F; + unit_pos[2].x = unit_pos[4].x = unit_pos[7].x = player_move_pos.x + mFI_UT_WORLDSIZE_X_F; + unit_pos[0].z = unit_pos[1].z = unit_pos[2].z = player_move_pos.z - mFI_UT_WORLDSIZE_Z_F; + unit_pos[3].z = player_move_pos.z; + unit_pos[5].z = unit_pos[6].z = unit_pos[7].z = player_move_pos.z + mFI_UT_WORLDSIZE_Z_F; + } + + for (i = 0; i < unit_count; i++) { + unit_center_p = &unit_center_pos[i]; + unit_exist_table[i] = mFI_Wpos2UtCenterWpos(unit_center_p, unit_pos[i]); + if (unit_exist_table[i] != FALSE) { + f32 dx = unit_center_p->x - player_move_pos.x; + f32 dz = unit_center_p->z - player_move_pos.z; + f32 dist_center = Math3DVecLength2D(dx, dz); + int angle_center = atans_table(dz, dx) - player_angle_y; + int abs_angle_center = ABS(angle_center); + + if (abs_angle_center > DEG2SHORT_ANGLE2(180.0f)) { + abs_angle_center = DEG2SHORT_ANGLE2(360.0f) - abs_angle_center; + } + + unit_center_angle_table[i] = abs_angle_center; + unit_center_dist_table[i] = dist_center; + } + } + + { + int tree_exist_table[8] = { FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE }; + mActor_name_t tree_fg_table[8]; + mActor_name_t* unit_fg_p; + + for (i = 0; i < unit_count; i++) { + if (unit_exist_table[i] != FALSE) { + unit_center_p = &unit_center_pos[i]; + unit_fg_p = mFI_GetUnitFG(*unit_center_p); + + if (unit_fg_p != NULL) { + mActor_name_t item = *unit_fg_p; + + if (IS_ITEM_COLLIDEABLE_TREE(item) != FALSE || IS_ITEM_ROCK(item) != FALSE) { + f32 diff_y = mCoBG_GetBgY_OnlyCenter_FromWpos2(*unit_center_p, 0.0f) - player_move_pos.y; + f32 abs_diff_y = ABS(diff_y); + + if (abs_diff_y < (mFI_UNIT_BASE_SIZE_F * 0.5f)) { + tree_fg_table[i] = item; + tree_exist_table[i] = TRUE; + } + } + } + } + } + + for (i = 0; i < unit_count; i++) { + if (tree_exist_table[i] != FALSE) { + if (unit_center_dist_table[i] > (mFI_UNIT_BASE_SIZE_F * 1.5f)) { + tree_exist_table[i] = FALSE; + } + } + } + + for (i = 0; i < unit_count; i++) { + if (tree_exist_table[i] != FALSE) { + if (unit_center_angle_table[i] > DEG2SHORT_ANGLE2(75.0f)) { + tree_exist_table[i] = FALSE; + } + } + } + + { + int selected_idx = -1; + int min_angle_y = DEG2SHORT_ANGLE2(360.0f); + + if (right_idx >= 0 && tree_exist_table[right_idx] != FALSE && + min_angle_y > unit_center_angle_table[right_idx]) { + min_angle_y = unit_center_angle_table[right_idx]; + selected_idx = right_idx; + } + + if (left_idx >= 0 && tree_exist_table[left_idx] != FALSE && + min_angle_y > unit_center_angle_table[left_idx]) { + min_angle_y = unit_center_angle_table[left_idx]; + selected_idx = left_idx; + } + + if (up_idx >= 0 && tree_exist_table[up_idx] != FALSE && min_angle_y > unit_center_angle_table[up_idx]) { + min_angle_y = unit_center_angle_table[up_idx]; + selected_idx = up_idx; + } + + if (down_idx >= 0 && tree_exist_table[down_idx] != FALSE && + min_angle_y > unit_center_angle_table[down_idx]) { + min_angle_y = unit_center_angle_table[down_idx]; + selected_idx = down_idx; + } + + if (selected_idx >= 0) { + mActor_name_t item = tree_fg_table[selected_idx]; + + target_pos_p->x = unit_center_pos[selected_idx].x; + target_pos_p->y = player_move_pos.y; + target_pos_p->z = unit_center_pos[selected_idx].z; + *fg_p = item; + + if (IS_ITEM_COLLIDEABLE_TREE(item) != FALSE) { + return mPlayer_AXE_HIT_TREE; /* Hit item was a tree */ + } else { + return mPlayer_AXE_HIT_REFLECT; /* Hit item was a rock, reflect it */ + } + } else { + int selected_idx = -1; + int min_angle_y = DEG2SHORT_ANGLE2(360.0f); + + for (i = 0; i < unit_count; i++) { + if (tree_exist_table[i] != FALSE && min_angle_y > unit_center_angle_table[i]) { + min_angle_y = unit_center_angle_table[i]; + selected_idx = i; + } + } + + if (selected_idx >= 0) { + mActor_name_t item = tree_fg_table[selected_idx]; + + target_pos_p->x = unit_center_pos[selected_idx].x; + target_pos_p->y = player_move_pos.y; + target_pos_p->z = unit_center_pos[selected_idx].z; + *fg_p = item; + + if (IS_ITEM_COLLIDEABLE_TREE(item) != FALSE) { + return mPlayer_AXE_HIT_TREE; /* Hit item was a tree */ + } else { + return mPlayer_AXE_HIT_REFLECT; /* Hit item was a rock, reflect it */ + } + } else { + int exist_table[8] = { FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE }; + + for (i = 0; i < unit_count; i++) { + if (unit_exist_table[i] != FALSE) { + if (unit_center_dist_table[i] < (mFI_UNIT_BASE_SIZE_F * 1.5f)) { + exist_table[i] = TRUE; + } + } + } + + for (i = 0; i < unit_count; i++) { + if (exist_table[i] != FALSE) { + if (unit_center_angle_table[i] > DEG2SHORT_ANGLE2(75.0f)) { + exist_table[i] = FALSE; + } + } + } + + { + int selected_idx = -1; + int min_angle_y = DEG2SHORT_ANGLE2(360.0f); + + for (i = 0; i < unit_count; i++) { + if (exist_table[i] != FALSE && min_angle_y > unit_center_angle_table[i]) { + min_angle_y = unit_center_angle_table[i]; + selected_idx = i; + } + } + + if (selected_idx >= 0) { + f32 bg_y = mCoBG_Wpos2BgUtCenterHeight_AddColumn(unit_center_pos[selected_idx]); + f32 diff_y = bg_y - player_move_pos.y; + + if (diff_y >= 31.0f) { + target_pos_p->x = unit_center_pos[selected_idx].x; + target_pos_p->y = player_move_pos.y; + target_pos_p->z = unit_center_pos[selected_idx].z; + *reflect_actor_pp = NULL; + return mPlayer_AXE_HIT_REFLECT; + } + } + } + } + } + } + } + } + + return mPlayer_AXE_HIT_NONE; +} + +static mActor_name_t Player_actor_GetitemNo_forDamageAxe(mActor_name_t itemNo, int reflected) { + if (mEv_CheckTitleDemo() > 0) { + return itemNo; + } + + if (IS_ITEM_AXE(itemNo) != FALSE) { + if (IS_ITEM_GOLDEN_TOOL(itemNo) == FALSE) { + // clang-format off + static mActor_name_t data[] = { + ITM_AXE_USE_1, + ITM_AXE_USE_2, + ITM_AXE_USE_3, + ITM_AXE_USE_4, + ITM_AXE_USE_5, + ITM_AXE_USE_6, + ITM_AXE_USE_7, + EMPTY_NO, + }; + // clang-format on + + int prev_damage; + int axe_damage; + int damage_idx; + + switch (itemNo) { + case ITM_AXE: + damage_idx = 0; + break; + case ITM_AXE_USE_1: + damage_idx = 1; + break; + case ITM_AXE_USE_2: + damage_idx = 2; + break; + case ITM_AXE_USE_3: + damage_idx = 3; + break; + case ITM_AXE_USE_4: + damage_idx = 4; + break; + case ITM_AXE_USE_5: + damage_idx = 5; + break; + case ITM_AXE_USE_6: + damage_idx = 6; + break; + case ITM_AXE_USE_7: + damage_idx = 7; + break; + default: + return itemNo; + } + + if (damage_idx < 0 || damage_idx >= 8) { + damage_idx = 7; + } + + prev_damage = Common_Get(axe_damage); + if (reflected) { + axe_damage = prev_damage + 3; + } else { + axe_damage = prev_damage + 1; + } + + Common_Set(axe_damage, axe_damage); + + switch (axe_damage >= 9) { + default: + return data[damage_idx]; + case FALSE: + return itemNo; + } + } + } + + return itemNo; +} + +static int Player_actor_CheckAndRequest_main_axe_all(GAME* game, int prio) { + xyz_t target_pos; + mActor_name_t item; + ACTOR* reflect_actor_p; + + if (Player_actor_CheckController_forAxe(game)) { + int result = + Player_actor_Check_axe_after(GET_PLAYER_ACTOR_GAME_ACTOR(game), &target_pos, &item, &reflect_actor_p); + + if (result == mPlayer_AXE_HIT_TREE) { + int tree_ut_x; + int tree_ut_z; + + if (mFI_Wpos2UtNum(&tree_ut_x, &tree_ut_z, target_pos)) { + mActor_name_t damage_itemNo = + Player_actor_GetitemNo_forDamageAxe(Player_actor_Get_ItemNoSubmenu(), FALSE); + + if (damage_itemNo == EMPTY_NO) { + return Player_actor_request_main_broken_axe_type_swing(game, &target_pos, item, tree_ut_x, + tree_ut_z, prio); + } else { + return Player_actor_request_main_swing_axe_all(game, &target_pos, item, damage_itemNo, tree_ut_x, + tree_ut_z, prio); + } + } + + return FALSE; + } else if (result == mPlayer_AXE_HIT_REFLECT) { + mActor_name_t damage_itemNo = Player_actor_GetitemNo_forDamageAxe(Player_actor_Get_ItemNoSubmenu(), TRUE); + + if (damage_itemNo == EMPTY_NO) { + return Player_actor_request_main_broken_axe_type_reflect(game, &target_pos, item, reflect_actor_p, + prio); + } else { + return Player_actor_request_main_reflect_axe_all(game, &target_pos, item, damage_itemNo, + reflect_actor_p, prio); + } + } else { + return Player_actor_request_main_air_axe_all(game, prio); + } + } + + return FALSE; +} + +static int Player_actor_CheckAbleSpeed_forItem(GAME* game) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + switch (player->now_main_index) { + case mPlayer_INDEX_WALK: + case mPlayer_INDEX_RUN: + case mPlayer_INDEX_DASH: + if (player->keyframe0.frame_control.speed >= 0.5f) { + return FALSE; + } + break; + } + + return TRUE; +} + +static int Player_actor_CheckAndRequest_main_umbrella_all(GAME* game, int prio) { + if (Player_actor_CheckController_forUmbrella(game) && Player_actor_CheckAbleSpeed_forItem(game)) { + return Player_actor_request_main_rotate_umbrella_all(game, prio); + } + + return FALSE; +} + +static int Player_actor_CheckAndRequest_main_fan_all(GAME* game, int check_trigger, int param_2, int prio) { + if (Player_actor_CheckController_forFan(game, check_trigger) && Player_actor_CheckAbleSpeed_forItem(game)) { + return Player_actor_request_main_swing_fan_all(game, param_2, prio); + } + + return FALSE; +} + +static void Player_actor_SetEffectStart_axe_common(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 12.0f)) { + eEC_CLIP->effect_make_proc(eEC_EFFECT_SWING_AXE, actorx->world.position, 2, actorx->shape_info.rotation.y, game, + RSV_NO, actorx->bg_collision_check.result.unit_attribute, 1); + } +} + +static int Player_actor_Get_WadeEndPos(GAME* game, xyz_t* end_pos_p) { + if (end_pos_p != NULL) { + if (Common_Get(player_actor_exists)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_WADE) { + *end_pos_p = player->main_data.wade.end_pos; + return TRUE; + } else if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_DEMO_WADE) { + *end_pos_p = player->main_data.demo_wade.end_pos; + return TRUE; + } else if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_WADE_SNOWBALL) { + *end_pos_p = player->main_data.wade_snowball.end_pos; + return TRUE; + } else if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_DEMO_GETON_BOAT_WADE) { + *end_pos_p = player->main_data.demo_geton_boat_wade.end_pos; + return TRUE; + } + + *end_pos_p = GET_PLAYER_ACTOR_GAME_ACTOR(game)->world.position; + } else { + *end_pos_p = ZeroVec; + } + } + + return FALSE; +} + +static void Player_actor_Init_ScrollDemo_forWade(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + Player_actor_request_main_wade_all(gamePT, player->request_wade_dir, mPlayer_REQUEST_PRIORITY_2); + mPlib_strength_request_main_wade_priority(gamePT); +} + +static void Player_actor_Init_ScrollDemo_forDemo_wade(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + Player_actor_request_main_demo_wade_all(gamePT, player->request_wade_dir, mPlayer_REQUEST_PRIORITY_19); + mPlib_strength_request_main_demo_wade_priority(gamePT); +} + +static void Player_actor_Init_ScrollDemo_forDemo_geton_boat_wade(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + Player_actor_request_main_demo_geton_boat_wade_all( + gamePT, player->request_wade_dir, player->geton_boat_wade_border_start, mPlayer_REQUEST_PRIORITY_19); + mPlib_strength_request_main_demo_geton_boat_wade_priority(gamePT); +} + +static void Player_actor_Init_ScrollDemo_forWade_snowball(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + Player_actor_request_main_wade_snowball_all(gamePT, player->request_wade_dir, &player->snowball_dist, + mPlayer_REQUEST_PRIORITY_2); + mPlib_strength_request_main_wade_snowball_priority(gamePT); +} + +static int Player_actor_Set_ScrollDemo_forWade(ACTOR* actorx, GAME* game, int npc_check_flag) { + xyz_t* player_pos_p = &actorx->world.position; + s16 player_angle_y = actorx->shape_info.rotation.y; + int dir = Player_actor_CheckAbleMoveWadeBlock(game, player_pos_p, player_angle_y, 0.65f, DEG2SHORT_ANGLE2(40.0f), + npc_check_flag); + + if (dir != mFI_MOVEDIR_NONE) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (mPlib_Get_unable_wade() == FALSE) { + player->request_wade_dir = dir; + mDemo_Request(mDemo_TYPE_SCROLL, actorx, &Player_actor_Init_ScrollDemo_forWade); + return TRUE; + } + + player->cancel_wade_timer = player->player_frame_counter; + player->excute_cancel_wade = TRUE; + } + + return FALSE; +} + +static int Player_actor_Set_ScrollDemo_forDemo_wade(ACTOR* actorx) { + int dir = Player_actor_CheckAbleMoveDemoWadeBlock(actorx); + + if (dir != mFI_MOVEDIR_NONE) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + player->request_wade_dir = dir; + mDemo_Request(mDemo_TYPE_SCROLL2, actorx, &Player_actor_Init_ScrollDemo_forDemo_wade); + return TRUE; + } + + return FALSE; +} + +static int Player_actor_Set_ScrollDemo_forDemo_geton_boat_wade(ACTOR* actorx, s16 angle_y, f32 border_start) { + int dir = Player_actor_CheckAbleMoveDemoWadeBoatBlock(actorx, angle_y, border_start); + + if (dir != mFI_MOVEDIR_NONE) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + player->request_wade_dir = dir; + player->geton_boat_wade_border_start = border_start; + mDemo_Request(mDemo_TYPE_SCROLL3, actorx, &Player_actor_Init_ScrollDemo_forDemo_geton_boat_wade); + return TRUE; + } + + return FALSE; +} + +static int Player_actor_Set_ScrollDemo_forWade_snowball(ACTOR* actorx, int request_dir, const xyz_t* snowball_dist) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (mPlib_Get_unable_wade() == FALSE) { + player->request_wade_dir = request_dir; + player->snowball_dist = *snowball_dist; + mDemo_Request(mDemo_TYPE_SCROLL, actorx, &Player_actor_Init_ScrollDemo_forWade_snowball); + return TRUE; + } else { + player->cancel_wade_timer = player->player_frame_counter; + player->excute_cancel_wade = TRUE; + } + + return FALSE; +} + +static void Player_actor_SetForMark_for_settle_main(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int main_index = player->now_main_index; + + if (mPlayer_MAIN_INDEX_VALID(main_index) != FALSE) { + // clang-format off + static const s8 value[] = { + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }; + // clang-format on + + if (value[main_index] != FALSE) { + eEC_CLIP->effect_make_proc(eEC_EFFECT_FOOTPRINT, player->left_foot_pos, 2, player->left_foot_angle.y, game, + RSV_NO, actorx->bg_collision_check.result.unit_attribute, 0); + + eEC_CLIP->effect_make_proc(eEC_EFFECT_FOOTPRINT, player->right_foot_pos, 2, player->right_foot_angle.y, + game, RSV_NO, actorx->bg_collision_check.result.unit_attribute, 0); + } + } +} + +static void Player_actor_SetupItem_Base0(ACTOR* actorx, int anim1_idx, int item_anim_idx, f32 item_anim_speed, + f32 item_morph_speed, f32 start_frame, int* anim1_idx_p, + int* part_table_idx_p) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int item_kind = Player_actor_Get_ItemKind(actorx, player->requested_main_index); + + Player_actor_LoadOrDestruct_Item(actorx, item_kind, item_anim_idx, item_anim_speed, item_morph_speed, start_frame, + mPlayer_ITEM_IS_BALLOON(item_kind) == FALSE); + + if (item_kind >= 0) { + *anim1_idx_p = mPlib_Get_BasicPlayerAnimeIndex_fromItemKind(item_kind); + } else { + *anim1_idx_p = anim1_idx; + } + + Player_actor_Set_now_item_main_index(actorx, Player_actor_Get_BasicItemMainIndex_fromItemKind(item_kind)); + player->item_kind = item_kind; + *part_table_idx_p = mPlib_Get_BasicPartTableIndex_fromAnimeIndex(*anim1_idx_p); +} + +static int Player_actor_SetupItem_Base_windmill(ACTOR* actorx, int requested_item_kind, int current_item_kind, + int anim1_idx, int* anim1_idx_p, int* part_table_idx_p) { + if (mPlayer_ITEM_IS_WINDMILL(requested_item_kind) != FALSE) { + if (requested_item_kind != current_item_kind) { + Player_actor_SetupItem_Base0(actorx, anim1_idx, + mPlib_Get_BasicItemAnimeIndex_fromItemKind(requested_item_kind), 0.0f, 0.0f, + 1.0f, anim1_idx_p, part_table_idx_p); + } else { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_FrameControl_c* item_fc = &player->item_keyframe.frame_control; + + Player_actor_SetupItem_Base0(actorx, anim1_idx, + mPlib_Get_BasicItemAnimeIndex_fromItemKind(requested_item_kind), + item_fc->speed, 0.0f, item_fc->current_frame, anim1_idx_p, part_table_idx_p); + } + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_SetupItem_Base1(ACTOR* actorx, int anim1_idx, f32 item_morph_speed, int* anim1_idx_p, + int* part_table_idx_p) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int item_kind = Player_actor_Get_ItemKind(actorx, player->requested_main_index); + + if (Player_actor_SetupItem_Base_windmill(actorx, item_kind, player->item_kind, anim1_idx, anim1_idx_p, + part_table_idx_p) == FALSE) { + int item_anime_idx = mPlib_Get_BasicItemAnimeIndex_fromItemKind(item_kind); + + Player_actor_SetupItem_Base0(actorx, anim1_idx, item_anime_idx, 0.5f, item_morph_speed, -1.0f, anim1_idx_p, + part_table_idx_p); + } +} + +static void Player_actor_SetupItem_Base2(ACTOR* actorx, int item_kind, int anim_idx, int item_main_index, + f32 morph_speed, f32 start_frame, int mode) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int request_item_kind = Player_actor_Get_ItemKind(actorx, player->requested_main_index); + + if (item_kind == request_item_kind && Player_actor_Check_ItemAnimationToItemKind(item_kind, anim_idx) != FALSE) { + Player_actor_LoadOrDestruct_Item(actorx, item_kind, anim_idx, 0.5f, morph_speed, start_frame, mode); + Player_actor_Set_now_item_main_index(actorx, item_main_index); + player->item_kind = item_kind; + } +} + +static void Player_actor_SetupItem_Base3(ACTOR* actorx, int anim1_idx, f32 morph_speed, int* anim1_idx_p, + int* part_table_idx_p) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int item_kind = Player_actor_Get_ItemKind(actorx, player->requested_main_index); + + if (Player_actor_SetupItem_Base_windmill(actorx, item_kind, player->item_kind, anim1_idx, anim1_idx_p, + part_table_idx_p) == FALSE) { + if (mPlayer_ITEM_IS_ROD(item_kind) == FALSE) { + int item_anime_idx = mPlib_Get_BasicItemAnimeIndex_fromItemKind(item_kind); + + Player_actor_SetupItem_Base0(actorx, anim1_idx, item_anime_idx, 0.5f, morph_speed, -1.0f, anim1_idx_p, + part_table_idx_p); + } else { + Player_actor_SetupItem_Base0(actorx, anim1_idx, mPlayer_ITEM_DATA_ROD_MOVE, 0.5f, morph_speed, -1.0f, + anim1_idx_p, part_table_idx_p); + } + } +} + +static void Player_actor_Get_ItemRodTopInitPos(ACTOR* actorx, xyz_t* pos_p) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (player->item_rod_top_pos_set != FALSE) { + *pos_p = player->item_rod_top_pos; + } else { + xyz_t pos = actorx->world.position; + s_xyz* player_rot_p = &actorx->shape_info.rotation; + + pos.x += 25.5456f; + pos.y += 271.9735f; + pos.z -= 21.69f; + + Matrix_push(); + Matrix_translate(pos.x, pos.y, pos.z, 0); + Matrix_RotateZ(player_rot_p->z, 1); + Matrix_RotateX(player_rot_p->x, 1); + Matrix_RotateY(player_rot_p->y, 1); + Matrix_Position(&pos, pos_p); + Matrix_pull(); + } +} + +static void Player_actor_Get_ItemRodVirtualTopPos(ACTOR* actorx, xyz_t* pos_p) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (player->item_rod_top_pos_set != FALSE) { + *pos_p = player->item_rod_virtual_top_pos; + } else { + Player_actor_Get_ItemRodTopInitPos(actorx, pos_p); + } +} + +static int Player_actor_check_cancel_request_change_proc_index(int requested_main_index) { + if (mPlib_check_player_warp_forEvent() != FALSE && mPlayer_MAIN_INDEX_VALID(requested_main_index) != FALSE) { + // clang-format off + static const s8 value[] = { + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + TRUE, + FALSE, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }; + // clang-format on + + return value[requested_main_index]; + } + + return FALSE; +} + +static int Player_actor_able_request_main_index_for_reset(int request_main_index) { + if (mPlayer_MAIN_INDEX_VALID(request_main_index) != FALSE) { + // clang-format off + static const s8 value[] = { + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }; + // clang-format on + + return value[request_main_index]; + } + + return FALSE; +} + +static int Player_actor_check_able_request_main_index_for_reset(int request_main_index) { + if (Common_Get(reset_flag) && Now_Private->reset_count == 2 && + Player_actor_able_request_main_index_for_reset(request_main_index) != FALSE) { + if (Common_Get(reset_type) != 3) { + Common_Set(reset_type, 3); + } + + return TRUE; + } + + return FALSE; +} + +static int Player_actor_check_request_main_able(GAME* game, int request_main_index, int priority) { + if (Player_actor_check_cancel_request_change_proc_index(request_main_index) == FALSE && + Player_actor_check_able_request_main_index_for_reset(request_main_index) == FALSE && + Player_actor_check_request_main_priority(game, priority) > 0) { + return TRUE; + } + + return FALSE; +} + +static int Player_actor_cancel_request_change_proc_index(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (player->requested_main_index_changed != FALSE && + Player_actor_check_cancel_request_change_proc_index(player->requested_main_index) != FALSE) { + player->requested_main_index_priority = mPlayer_REQUEST_PRIORITY_NONE; + player->requested_main_index_changed = FALSE; + return TRUE; + } + + return FALSE; +} + +static int Player_actor_Check_scoop_after(GAME* game, xyz_t* target_pos_p, mActor_name_t* fg_p, + ACTOR** reflect_actor_pp, int gold_shovel) { + return mPlib_Check_scoop_after(game, target_pos_p, fg_p, reflect_actor_pp, gold_shovel); +} + +static int Player_actor_Search_STONE_TC(ACTOR* actorx, xyz_t* target_pos_p) { + mActor_name_t* fg_p = mFI_GetUnitFG(*target_pos_p); + + if (fg_p != NULL && IS_ITEM_STONE_TC(*fg_p) != FALSE && Common_Get(clip).bg_item_clip != NULL && + Common_Get(clip).bg_item_clip->ten_coin_entry_ex_proc != NULL) { + Common_Get(clip).bg_item_clip->ten_coin_entry_ex_proc(target_pos_p, actorx->shape_info.rotation.y); + return TRUE; + } + + return FALSE; +} + +static int Player_actor_CheckAndRequest_main_scoop_all(GAME* game, int priority) { + if (Player_actor_CheckController_forScoop(game) != FALSE) { + xyz_t target_pos; + mActor_name_t item; + ACTOR* reflect_actor_p; + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + int gold_shovel = player->item_kind == mPlayer_ITEM_KIND_GOLD_SHOVEL; + int scoop_request_index = + Player_actor_Check_scoop_after(game, &target_pos, &item, &reflect_actor_p, gold_shovel); + + if (scoop_request_index == mPlayer_INDEX_DIG_SCOOP) { + if (Player_actor_request_main_dig_scoop_all(game, &target_pos, item, priority)) { + return TRUE; + } + } else if (scoop_request_index == mPlayer_INDEX_FILL_SCOOP) { + if (Player_actor_request_main_fill_scoop_all(game, &target_pos, priority)) { + return TRUE; + } + } else if (scoop_request_index == mPlayer_INDEX_REFLECT_SCOOP) { + if (Player_actor_request_main_reflect_scoop_all(game, &target_pos, item, reflect_actor_p, priority)) { + return TRUE; + } + } else if (scoop_request_index == mPlayer_INDEX_AIR_SCOOP) { + if (Player_actor_request_main_air_scoop_all(game, priority)) { + return TRUE; + } + } else if (scoop_request_index == mPlayer_INDEX_GET_SCOOP) { + if (Player_actor_request_main_get_scoop_all(game, &target_pos, item, priority)) { + return TRUE; + } + } + } + + return FALSE; +} + +static void Player_actor_cancel_request_change_proc_index_by_A_btn(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (player->a_btn_triggers_submenu != FALSE) { + int request_main_index = player->requested_main_index; + + if (mPlayer_MAIN_INDEX_VALID(request_main_index) != FALSE) { + // clang-format off + static const s8 data[] = { + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }; + // clang-format on + + if (data[request_main_index] != FALSE) { + player->requested_main_index_priority = mPlayer_REQUEST_PRIORITY_NONE; + player->requested_main_index_changed = FALSE; + } + } + + player->a_btn_triggers_submenu = FALSE; + } +} + +static u32 Player_actor_Get_item_net_catch_label(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + switch (player->now_main_index) { + case mPlayer_INDEX_SWING_NET: + case mPlayer_INDEX_PULL_NET: + case mPlayer_INDEX_NOTICE_NET: + case mPlayer_INDEX_PUTAWAY_NET: + return player->item_net_catch_label; + default: + return 0; + } +} + +static int Player_actor_Change_item_net_catch_label(ACTOR* actorx, u32 label, s8 insect_type) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + aINS_INSECT_ACTOR* insect_actor = (aINS_INSECT_ACTOR*)label; + + if (player->item_net_has_catch == FALSE) { + switch (player->now_main_index) { + case mPlayer_INDEX_SWING_NET: + case mPlayer_INDEX_PULL_NET: + case mPlayer_INDEX_NOTICE_NET: + case mPlayer_INDEX_PUTAWAY_NET: + player->item_net_catch_label = label; + player->item_net_catch_type = insect_type; + if (insect_type == 0 && insect_actor != NULL) { + player->item_net_catch_insect_idx = insect_actor->type; + } else if (insect_actor != NULL) { + if (insect_actor->tools_actor.actor_class.id == mAc_PROFILE_BEE) { + player->item_net_catch_insect_idx = aSOI_INSECT_TYPE_BEE; + } else { + player->item_net_catch_insect_idx = aSOI_INSECT_TYPE_ANT; + } + } else { + player->item_net_catch_insect_idx = aSOI_INSECT_TYPE_INVALID; + } + + return TRUE; + } + } + + return FALSE; +} + +static int Player_actor_Check_StopNet(ACTOR* actorx, xyz_t* net_pos_p) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (player->changed_main_index != FALSE) { + switch (player->now_main_index) { + case mPlayer_INDEX_PULL_NET: + case mPlayer_INDEX_STOP_NET: + if (net_pos_p != NULL) { + *net_pos_p = player->net_pos; + } + + return TRUE; + } + } + + return FALSE; +} + +static int Player_actor_Check_HitAxe(ACTOR* actorx, xyz_t* axe_pos_p) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_swing_axe_c* swing_axe_p = NULL; + mPlayer_main_reflect_axe_c* reflect_axe_p = NULL; + xyz_t* pos_p; + + switch (player->now_main_index) { + case mPlayer_INDEX_SWING_AXE: + swing_axe_p = &player->main_data.swing_axe; + break; + case mPlayer_INDEX_REFLECT_AXE: + reflect_axe_p = &player->main_data.reflect_axe; + break; + case mPlayer_INDEX_BROKEN_AXE: { + mPlayer_main_broken_axe_c* broken_axe_p = &player->main_data.broken_axe; + + if (broken_axe_p->break_type != mPlayer_AXE_BREAK_FROM_SWING) { + reflect_axe_p = &broken_axe_p->axe.reflect_axe; + } else { + swing_axe_p = &broken_axe_p->axe.swing_axe; + } + break; + } + default: + return FALSE; + } + + if (swing_axe_p != NULL) { + pos_p = &swing_axe_p->target_pos; + } else { + pos_p = &reflect_axe_p->target_pos; + } + + if (pos_p != NULL && Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 15.0f) != FALSE) { + if (axe_pos_p != NULL) { + *axe_pos_p = *pos_p; + } + + return TRUE; + } + + return FALSE; +} + +static int Player_actor_Check_VibUnit_OneFrame(ACTOR* actorx, const xyz_t* check_pos_p) { + xyz_t target_pos; + + if (Player_actor_Check_HitAxe(actorx, &target_pos)) { + int check_bx; + int check_bz; + int target_bx; + int target_bz; + + if (mFI_Wpos2BlockNum(&check_bx, &check_bz, *check_pos_p) == FALSE) { + return FALSE; + } + + if (mFI_Wpos2BlockNum(&target_bx, &target_bz, target_pos) == FALSE) { + return FALSE; + } + + if (check_bx == target_bx && check_bz == target_bz) { + return TRUE; + } + } + + return FALSE; +} + +static int Player_actor_Check_HitScoop(ACTOR* actorx, xyz_t* scoop_pos_p) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + xyz_t* target_pos_p = NULL; + f32 check_frame = 0.0f; + + switch (player->now_main_index) { + case mPlayer_INDEX_DIG_SCOOP: + target_pos_p = &player->main_data.dig_scoop.target_pos; + check_frame = 20.0f; + break; + case mPlayer_INDEX_REFLECT_SCOOP: + target_pos_p = &player->main_data.reflect_scoop.target_pos; + check_frame = 20.0f; + break; + case mPlayer_INDEX_GET_SCOOP: + target_pos_p = &player->main_data.get_scoop.target_pos; + check_frame = 20.0f; + break; + case mPlayer_INDEX_FILL_SCOOP: + target_pos_p = &player->main_data.fill_scoop.target_pos; + check_frame = 40.0f; + break; + case mPlayer_INDEX_PUTIN_SCOOP: + target_pos_p = &player->main_data.putin_scoop.target_pos; + check_frame = 47.0f; + break; + } + + if (target_pos_p != NULL && Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, check_frame)) { + if (scoop_pos_p != NULL) { + *scoop_pos_p = *target_pos_p; + } + + return TRUE; + } + + return FALSE; +} + +static int Player_actor_Check_DigScoop(ACTOR* actorx, xyz_t* scoop_pos_p) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + xyz_t* target_pos_p = NULL; + + switch (player->now_main_index) { + case mPlayer_INDEX_DIG_SCOOP: + target_pos_p = &player->main_data.dig_scoop.target_pos; + break; + case mPlayer_INDEX_REFLECT_SCOOP: + target_pos_p = &player->main_data.reflect_scoop.target_pos; + break; + case mPlayer_INDEX_GET_SCOOP: + target_pos_p = &player->main_data.get_scoop.target_pos; + break; + case mPlayer_INDEX_FILL_SCOOP: + target_pos_p = &player->main_data.fill_scoop.target_pos; + break; + case mPlayer_INDEX_PUTIN_SCOOP: + target_pos_p = &player->main_data.putin_scoop.target_pos; + break; + } + + if (target_pos_p != NULL) { + if (scoop_pos_p != NULL) { + *scoop_pos_p = *target_pos_p; + } + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_request_camera2_main_simple_fishing(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + ACTOR* uki_actor = player->fishing_rod_actor_p; + GAME_PLAY* play = (GAME_PLAY*)game; + + if (uki_actor != NULL) { + Camera2_change_priority(play, 0); + Camera2_request_main_simple_fishing(play, &actorx->eye.position, &uki_actor->world.position, 5); + } +} + +static void Player_actor_request_camera2_main_simple_return(ACTOR* actorx, GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + + Camera2_change_priority(play, 0); + Camera2_request_main_simple_fishing_return(play, &actorx->eye.position, 5); +} + +static void Player_actor_request_camera2_main_normal(GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + + Camera2_change_priority(play, 0); + Camera2_request_main_normal(play, 0, 5); +} + +static void Player_actor_request_camera2_change_priority(GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + + Camera2_change_priority(play, 0); +} + +static int Player_actor_SearchPosition_npc_forStand(GAME* game, const xyz_t* pos_p) { + if (pos_p != NULL) { + GAME_PLAY* play = (GAME_PLAY*)game; + Actor_info* actor_info = &play->actor_info; + Actor_list* actor_list = &actor_info->list[ACTOR_PART_NPC]; + ACTOR* actor = actor_list->actor; + f32 x = pos_p->x; + f32 z = pos_p->z; + f32 sq_rad = SQ(30.0f); + + for (actor; actor != NULL; actor = actor->next_actor) { + f32 dx = actor->world.position.x - x; + f32 dz = actor->world.position.z - z; + + if (Math3DVecLengthSquare2D(dx, dz) < sq_rad) { + NPC_ACTOR* npc_actor = (NPC_ACTOR*)actor; + + if (npc_actor->condition_info.hide_flg == FALSE) { + return TRUE; + } + } + } + } + + return FALSE; +} + +static void Player_actor_SetEffect_forTakeout_item(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + s8 item_kind = player->item_kind; + + if (mPlayer_ITEM_IS_AXE(item_kind) != FALSE) { + eEC_CLIP->effect_make_proc(eEC_EFFECT_KIGAE_LIGHT, actorx->world.position, 2, actorx->shape_info.rotation.y, + game, RSV_NO, 1, 0); + } else if (mPlayer_ITEM_IS_SHOVEL(item_kind) != FALSE) { + eEC_CLIP->effect_make_proc(eEC_EFFECT_KIGAE_LIGHT, actorx->world.position, 2, actorx->shape_info.rotation.y, + game, RSV_NO, 2, 0); + } +} + +static int Player_actor_check_request_change_item(GAME* game) { + ACTOR* actorx = GET_PLAYER_ACTOR_GAME_ACTOR(game); + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + s8 item_kind = player->item_kind; + s8 requested_item_kind = Player_actor_Get_ItemKind(actorx, player->now_main_index); + int idx; + + if (item_kind != requested_item_kind) { + switch (player->now_main_index) { + case mPlayer_INDEX_WAIT: + case mPlayer_INDEX_WALK: + case mPlayer_INDEX_RUN: + case mPlayer_INDEX_DASH: + return player->now_main_index; + } + } + + return -1; +} + +static int Player_actor_check_item_is_fish(mActor_name_t item) { +/* @BUG - these macros should be swapped */ +#ifndef BUGFIXES + if (ITEM_NAME_GET_CAT(item) == NAME_TYPE_ITEM1 && ITEM_NAME_GET_TYPE(item) == ITEM1_CAT_FISH) { + return TRUE; + } +#else + if (ITEM_NAME_GET_TYPE(item) == NAME_TYPE_ITEM1 && ITEM_NAME_GET_CAT(item) == ITEM1_CAT_FISH) { + return TRUE; + } +#endif + + return FALSE; +} + +static int Player_actor_Check_CommonFootMark_AnimeFrame_fromAnimeIndex(f32 cur_frame, f32 speed, f32 end_frame, + int anim_idx, const s16** data_table_p, + const u8* len_table_p) { + if (anim_idx >= 0 && anim_idx < mPlayer_ANIM_NUM) { + const s16* data_p = data_table_p[anim_idx]; + + if (data_p != NULL) { + const int len = len_table_p[anim_idx]; + int i; + + for (i = 0; i < len; i++) { + const f32 frame = *data_p; + + /* Negative frames signal end */ + if (frame < 0.0f) { + return FALSE; + } + + if (Player_actor_Check_AnimationFrame_Common(cur_frame, speed, end_frame, frame)) { + return TRUE; + } + + data_p++; + } + } + } + + return FALSE; +} + +static int Player_actor_Check_RightFootMark_AnimeFrame_fromAnimeIndex(f32 cur_frame, f32 speed, f32 end_frame, + int anime_index) { + static const s16 right_data_wait1[] = { -1 }; + static const s16 right_data_walk1[] = { 9 }; + static const s16 right_data_axe1[] = { -1 }; + static const s16 right_data_run1[] = { 9 }; + static const s16 right_data_push1[] = { 23 }; + static const s16 right_data_pull1[] = { 11, 24 }; + static const s16 right_data_hold_wait1[] = { -1 }; + static const s16 right_data_pickup1[] = { -1 }; + static const s16 right_data_Lturn1[] = { -1 }; + static const s16 right_data_Rturn1[] = { -1 }; + static const s16 right_data_get1[] = { -1 }; + static const s16 right_data_get_change1[] = { 26 }; + static const s16 right_data_get_putaway1[] = { -1 }; + static const s16 right_data_open1[] = { -1 }; + static const s16 right_data_putaway1[] = { -1 }; + static const s16 right_data_trans_wait1[] = { -1 }; + static const s16 right_data_transfer1[] = { -1 }; + static const s16 right_data_umb_open1[] = { -1 }; + static const s16 right_data_umbrella1[] = { -1 }; + static const s16 right_data_dash1[] = { 9 }; + static const s16 right_data_run_slip1[] = { -1 }; + static const s16 right_data_get_pull1[] = { -1 }; + static const s16 right_data_get_m1[] = { -1 }; + static const s16 right_data_kamae_move_m1[] = { 9 }; + static const s16 right_data_kamae_wait_m1[] = { -1 }; + static const s16 right_data_kokeru_a1[] = { -1 }; + static const s16 right_data_kokeru_getup_a1[] = { -1 }; + static const s16 right_data_kokeru_getup_n1[] = { -1 }; + static const s16 right_data_kokeru_n1[] = { -1 }; + static const s16 right_data_net1[] = { -1 }; + static const s16 right_data_net_swing1[] = { 10 }; + static const s16 right_data_axe_swing1[] = { 5, 23 }; + static const s16 right_data_kamae_slip_m1[] = { -1 }; + static const s16 right_data_kokeru1[] = { -1 }; + static const s16 right_data_kokeru_getup1[] = { -1 }; + static const s16 right_data_sitdown1[] = { -1 }; + static const s16 right_data_sitdown_wait1[] = { -1 }; + static const s16 right_data_standup1[] = { -1 }; + static const s16 right_data_putaway_m1[] = { -1 }; + static const s16 right_data_bed_wait1[] = { -1 }; + static const s16 right_data_inbed_L1[] = { -1 }; + static const s16 right_data_inbed_R1[] = { -1 }; + static const s16 right_data_intrain1[] = { 8, 28, 50, 71, 88, 111 }; + static const s16 right_data_kagu_open_d1[] = { 12 }; + static const s16 right_data_kagu_open_h1[] = { -1 }; + static const s16 right_data_kagu_open_k1[] = { -1 }; + static const s16 right_data_negaeri_L1[] = { -1 }; + static const s16 right_data_negaeri_R1[] = { -1 }; + static const s16 right_data_outbed_L1[] = { -1 }; + static const s16 right_data_outbed_R1[] = { -1 }; + static const s16 right_data_outtrain1[] = { 21 }; + static const s16 right_data_kagu_close_d1[] = { 16 }; + static const s16 right_data_kagu_close_h1[] = { 6 }; + static const s16 right_data_kagu_close_k1[] = { 6 }; + static const s16 right_data_kagu_wait_d1[] = { -1 }; + static const s16 right_data_kagu_wait_h1[] = { -1 }; + static const s16 right_data_kagu_wait_k1[] = { -1 }; + static const s16 right_data_go_out_o1[] = { -1 }; + static const s16 right_data_go_out_s1[] = { -1 }; + static const s16 right_data_into_s1[] = { -1 }; + static const s16 right_data_axe_hane1[] = { 5, 24, 37 }; + static const s16 right_data_axe_suka1[] = { 5, 40 }; + static const s16 right_data_hold_wait_h1[] = { -1 }; + static const s16 right_data_hold_wait_o1[] = { -1 }; + static const s16 right_data_get_t1[] = { -1 }; + static const s16 right_data_get_t2[] = { 31 }; + static const s16 right_data_putaway_t1[] = { 17 }; + static const s16 right_data_sao1[] = { -1 }; + static const s16 right_data_sao_swing1[] = { -1 }; + static const s16 right_data_turi_hiki1[] = { -1 }; + static const s16 right_data_turi_wait1[] = { -1 }; + static const s16 right_data_not_get_t1[] = { -1 }; + static const s16 right_data_menu_catch1[] = { -1 }; + static const s16 right_data_menu_change1[] = { -1 }; + static const s16 right_data_umb_close1[] = { 13, 27 }; + static const s16 right_data_not_sao_swing1[] = { -1 }; + static const s16 right_data_intrain_wait1[] = { -1 }; + static const s16 right_data_clear_table1[] = { -1 }; + static const s16 right_data_dig1[] = { 13, 41 }; + static const s16 right_data_fill_up1[] = { 14, 41, 51 }; + static const s16 right_data_not_dig1[] = { 13, 29 }; + static const s16 right_data_clear_table_l1[] = { -1 }; + static const s16 right_data_pickup_l1[] = { -1 }; + static const s16 right_data_scoop1[] = { -1 }; + static const s16 right_data_confirm1[] = { 10, 22 }; + static const s16 right_data_dig_suka1[] = { 15, 41 }; + static const s16 right_data_get_d1[] = { 13, 43, 51 }; + static const s16 right_data_putaway_d1[] = { 12 }; + static const s16 right_data_dig_kabu1[] = { 33, 61 }; + static const s16 right_data_fill_up_i1[] = { 21, 48, 58 }; + static const s16 right_data_send_mail1[] = { -1 }; + static const s16 right_data_get_f1[] = { -1 }; + static const s16 right_data_get_pull_f1[] = { -1 }; + static const s16 right_data_get_putaway_f1[] = { -1 }; + static const s16 right_data_trans_wait_f1[] = { -1 }; + static const s16 right_data_transfer_f1[] = { -1 }; + static const s16 right_data_shake1[] = { -1 }; + static const s16 right_data_tired1[] = { -1 }; + static const s16 right_data_wash1[] = { -1 }; + static const s16 right_data_wash2[] = { -1 }; + static const s16 right_data_wash3[] = { -1 }; + static const s16 right_data_wash4[] = { -1 }; + static const s16 right_data_wash5[] = { -1 }; + static const s16 right_data_fukubiki1[] = { -1 }; + static const s16 right_data_omairi1[] = { -1 }; + static const s16 right_data_saisen1[] = { -1 }; + static const s16 right_data_return_mail1[] = { -1 }; + static const s16 right_data_return_mail2[] = { -1 }; + static const s16 right_data_return_mail3[] = { -1 }; + static const s16 right_data_eat1[] = { -1 }; + static const s16 right_data_gaaan1[] = { -1 }; + static const s16 right_data_gaaan2[] = { -1 }; + static const s16 right_data_deru1[] = { -1 }; + static const s16 right_data_guratuku1[] = { -1 }; + static const s16 right_data_mogaku1[] = { -1 }; + static const s16 right_data_otiru1[] = { -1 }; + static const s16 right_data_zassou1[] = { -1 }; + static const s16 right_data_knock1[] = { -1 }; + static const s16 right_data_biku1[] = { -1 }; + static const s16 right_data_hati1[] = { -1 }; + static const s16 right_data_hati2[] = { -1 }; + static const s16 right_data_hati3[] = { -1 }; + static const s16 right_data_push_yuki1[] = { 9 }; + static const s16 right_data_deru2[] = { -1 }; + static const s16 right_data_otiru2[] = { -1 }; + static const s16 right_data_itazura1[] = { -1 }; + static const s16 right_data_umb_rot1[] = { -1 }; + static const s16 right_data_pickup_wait1[] = { -1 }; + static const s16 right_data_yatta1[] = { -1 }; + static const s16 right_data_yatta2[] = { -1 }; + static const s16 right_data_yatta3[] = { -1 }; + static const s16 right_data_kaze1[] = { -1 }; + static const s16 right_data_mosquito1[] = { -1 }; + static const s16 right_data_mosquito2[] = { -1 }; + static const s16 right_data_ride1[] = { 9 }; + static const s16 right_data_ride2[] = { -1 }; + static const s16 right_data_ridewait[] = { -1 }; + static const s16 right_data_getoff1[] = { -1 }; + static const s16 right_data_getoff2[] = { -1 }; + static const s16 right_data_utiwa_wait1[] = { -1 }; + static const s16 right_data_utiwa_d1[] = { -1 }; + static const s16 right_data_axe_break1[] = { 5, 24, 37 }; + static const s16 right_data_axe_breakwait1[] = { -1 }; + static const s16 right_data_light_on1[] = { -1 }; + static const s16 right_data_taisou1[] = { -1 }; + static const s16 right_data_taisou2_1[] = { -1 }; + static const s16 right_data_taisou2_2[] = { -1 }; + static const s16 right_data_taisou3[] = { -1 }; + static const s16 right_data_taisou4_1[] = { -1 }; + static const s16 right_data_taisou4_2[] = { -1 }; + static const s16 right_data_taisou5_1[] = { -1 }; + static const s16 right_data_taisou5_2[] = { -1 }; + static const s16 right_data_taisou6_1[] = { -1 }; + static const s16 right_data_taisou6_2[] = { -1 }; + static const s16 right_data_taisou7_1[] = { -1 }; + static const s16 right_data_taisou7_2[] = { -1 }; + static const s16 right_data_omairi_us1[] = { -1 }; + + static const s16* data_p_table[] = { + right_data_wait1, + right_data_walk1, + right_data_axe1, + right_data_run1, + right_data_push1, + right_data_pull1, + right_data_hold_wait1, + right_data_pickup1, + right_data_Lturn1, + right_data_Rturn1, + right_data_get1, + right_data_get_change1, + right_data_get_putaway1, + right_data_open1, + right_data_putaway1, + right_data_trans_wait1, + right_data_transfer1, + right_data_umb_open1, + right_data_umbrella1, + right_data_dash1, + right_data_run_slip1, + right_data_get_pull1, + right_data_get_m1, + right_data_kamae_move_m1, + right_data_kamae_wait_m1, + right_data_kokeru_a1, + right_data_kokeru_getup_a1, + right_data_kokeru_getup_n1, + right_data_kokeru_n1, + right_data_net1, + right_data_net_swing1, + right_data_axe_swing1, + right_data_kamae_slip_m1, + right_data_kokeru1, + right_data_kokeru_getup1, + right_data_sitdown1, + right_data_sitdown_wait1, + right_data_standup1, + right_data_putaway_m1, + right_data_bed_wait1, + right_data_inbed_L1, + right_data_inbed_R1, + right_data_intrain1, + right_data_kagu_open_d1, + right_data_kagu_open_h1, + right_data_kagu_open_k1, + right_data_negaeri_L1, + right_data_negaeri_R1, + right_data_outbed_L1, + right_data_outbed_R1, + right_data_outtrain1, + right_data_kagu_close_d1, + right_data_kagu_close_h1, + right_data_kagu_close_k1, + right_data_kagu_wait_d1, + right_data_kagu_wait_h1, + right_data_kagu_wait_k1, + right_data_go_out_o1, + right_data_go_out_s1, + right_data_into_s1, + right_data_axe_hane1, + right_data_axe_suka1, + right_data_hold_wait_h1, + right_data_hold_wait_o1, + right_data_get_t1, + right_data_get_t2, + right_data_putaway_t1, + right_data_sao1, + right_data_sao_swing1, + right_data_turi_hiki1, + right_data_turi_wait1, + right_data_not_get_t1, + right_data_menu_catch1, + right_data_menu_change1, + right_data_umb_close1, + right_data_not_sao_swing1, + right_data_intrain_wait1, + right_data_clear_table1, + right_data_dig1, + right_data_fill_up1, + right_data_not_dig1, + right_data_clear_table_l1, + right_data_pickup_l1, + right_data_scoop1, + right_data_confirm1, + right_data_dig_suka1, + right_data_get_d1, + right_data_putaway_d1, + right_data_dig_kabu1, + right_data_fill_up_i1, + right_data_send_mail1, + right_data_get_f1, + right_data_get_pull_f1, + right_data_get_putaway_f1, + right_data_trans_wait_f1, + right_data_transfer_f1, + right_data_shake1, + right_data_tired1, + right_data_wash1, + right_data_wash2, + right_data_wash3, + right_data_wash4, + right_data_wash5, + right_data_fukubiki1, + right_data_omairi1, + right_data_saisen1, + right_data_return_mail1, + right_data_return_mail2, + right_data_return_mail3, + right_data_eat1, + right_data_gaaan1, + right_data_gaaan2, + right_data_deru1, + right_data_guratuku1, + right_data_mogaku1, + right_data_otiru1, + right_data_zassou1, + right_data_knock1, + right_data_biku1, + right_data_hati1, + right_data_hati2, + right_data_hati3, + right_data_push_yuki1, + right_data_deru2, + right_data_otiru2, + right_data_itazura1, + right_data_umb_rot1, + right_data_pickup_wait1, + right_data_yatta1, + right_data_yatta2, + right_data_yatta3, + right_data_kaze1, + right_data_mosquito1, + right_data_mosquito2, + right_data_ride1, + right_data_ride2, + right_data_ridewait, + right_data_getoff1, + right_data_getoff2, + right_data_utiwa_wait1, + right_data_utiwa_d1, + right_data_axe_break1, + right_data_axe_breakwait1, + right_data_light_on1, + right_data_taisou1, + right_data_taisou2_1, + right_data_taisou2_2, + right_data_taisou3, + right_data_taisou4_1, + right_data_taisou4_2, + right_data_taisou5_1, + right_data_taisou5_2, + right_data_taisou6_1, + right_data_taisou6_2, + right_data_taisou7_1, + right_data_taisou7_2, + right_data_omairi_us1, + }; + + // clang-format off + static const u8 size_table[] = { + 1, + 1, + 1, + 1, + 1, + 2, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 2, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 6, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 3, + 2, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 2, + 1, + 1, + 1, + 2, + 3, + 2, + 1, + 1, + 1, + 2, + 2, + 3, + 1, + 2, + 3, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 3, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + }; + // clang-format on + + return Player_actor_Check_CommonFootMark_AnimeFrame_fromAnimeIndex(cur_frame, speed, end_frame, anime_index, + data_p_table, size_table); +} + +static int Player_actor_Check_LeftFootMark_AnimeFrame_fromAnimeIndex(f32 cur_frame, f32 speed, f32 end_frame, + int anime_index) { + static const s16 left_data_wait1[] = { -1 }; + static const s16 left_data_walk1[] = { 1 }; + static const s16 left_data_axe1[] = { -1 }; + static const s16 left_data_run1[] = { 1 }; + static const s16 left_data_push1[] = { 15 }; + static const s16 left_data_pull1[] = { 6, 17 }; + static const s16 left_data_hold_wait1[] = { -1 }; + static const s16 left_data_pickup1[] = { 9, 20 }; + static const s16 left_data_Lturn1[] = { -1 }; + static const s16 left_data_Rturn1[] = { -1 }; + static const s16 left_data_get1[] = { -1 }; + static const s16 left_data_get_change1[] = { 26 }; + static const s16 left_data_get_putaway1[] = { -1 }; + static const s16 left_data_open1[] = { -1 }; + static const s16 left_data_putaway1[] = { -1 }; + static const s16 left_data_trans_wait1[] = { -1 }; + static const s16 left_data_transfer1[] = { -1 }; + static const s16 left_data_umb_open1[] = { -1 }; + static const s16 left_data_umbrella1[] = { -1 }; + static const s16 left_data_dash1[] = { 1 }; + static const s16 left_data_run_slip1[] = { -1 }; + static const s16 left_data_get_pull1[] = { -1 }; + static const s16 left_data_get_m1[] = { 25, 43 }; + static const s16 left_data_kamae_move_m1[] = { 6 }; + static const s16 left_data_kamae_wait_m1[] = { -1 }; + static const s16 left_data_kokeru_a1[] = { -1 }; + static const s16 left_data_kokeru_getup_a1[] = { -1 }; + static const s16 left_data_kokeru_getup_n1[] = { -1 }; + static const s16 left_data_kokeru_n1[] = { -1 }; + static const s16 left_data_net1[] = { -1 }; + static const s16 left_data_net_swing1[] = { 7 }; + static const s16 left_data_axe_swing1[] = { 13, 29 }; + static const s16 left_data_kamae_slip_m1[] = { -1 }; + static const s16 left_data_kokeru1[] = { -1 }; + static const s16 left_data_kokeru_getup1[] = { -1 }; + static const s16 left_data_sitdown1[] = { -1 }; + static const s16 left_data_sitdown_wait1[] = { -1 }; + static const s16 left_data_standup1[] = { -1 }; + static const s16 left_data_putaway_m1[] = { -1 }; + static const s16 left_data_bed_wait1[] = { -1 }; + static const s16 left_data_inbed_L1[] = { -1 }; + static const s16 left_data_inbed_R1[] = { -1 }; + static const s16 left_data_intrain1[] = { 19, 40, 61, 82, 101 }; + static const s16 left_data_kagu_open_d1[] = { 6 }; + static const s16 left_data_kagu_open_h1[] = { 7 }; + static const s16 left_data_kagu_open_k1[] = { 7 }; + static const s16 left_data_negaeri_L1[] = { -1 }; + static const s16 left_data_negaeri_R1[] = { -1 }; + static const s16 left_data_outbed_L1[] = { -1 }; + static const s16 left_data_outbed_R1[] = { -1 }; + static const s16 left_data_outtrain1[] = { 5, 21 }; + static const s16 left_data_kagu_close_d1[] = { -1 }; + static const s16 left_data_kagu_close_h1[] = { -1 }; + static const s16 left_data_kagu_close_k1[] = { -1 }; + static const s16 left_data_kagu_wait_d1[] = { -1 }; + static const s16 left_data_kagu_wait_h1[] = { -1 }; + static const s16 left_data_kagu_wait_k1[] = { -1 }; + static const s16 left_data_go_out_o1[] = { -1 }; + static const s16 left_data_go_out_s1[] = { -1 }; + static const s16 left_data_into_s1[] = { -1 }; + static const s16 left_data_axe_hane1[] = { 12, 33 }; + static const s16 left_data_axe_suka1[] = { 14 }; + static const s16 left_data_hold_wait_h1[] = { -1 }; + static const s16 left_data_hold_wait_o1[] = { -1 }; + static const s16 left_data_get_t1[] = { 23 }; + static const s16 left_data_get_t2[] = { 21 }; + static const s16 left_data_putaway_t1[] = { 10 }; + static const s16 left_data_sao1[] = { -1 }; + static const s16 left_data_sao_swing1[] = { 18 }; + static const s16 left_data_turi_hiki1[] = { -1 }; + static const s16 left_data_turi_wait1[] = { -1 }; + static const s16 left_data_not_get_t1[] = { 27 }; + static const s16 left_data_menu_catch1[] = { -1 }; + static const s16 left_data_menu_change1[] = { -1 }; + static const s16 left_data_umb_close1[] = { 9, 33 }; + static const s16 left_data_not_sao_swing1[] = { 21 }; + static const s16 left_data_intrain_wait1[] = { -1 }; + static const s16 left_data_clear_table1[] = { -1 }; + static const s16 left_data_dig1[] = { 10, 25 }; + static const s16 left_data_fill_up1[] = { 10, 23, 48 }; + static const s16 left_data_not_dig1[] = { 10, 17, 35 }; + static const s16 left_data_clear_table_l1[] = { -1 }; + static const s16 left_data_pickup_l1[] = { -1 }; + static const s16 left_data_scoop1[] = { -1 }; + static const s16 left_data_confirm1[] = { 15 }; + static const s16 left_data_dig_suka1[] = { 10, 38 }; + static const s16 left_data_get_d1[] = { 10, 27, 51 }; + static const s16 left_data_putaway_d1[] = { 16 }; + static const s16 left_data_dig_kabu1[] = { 30, 45 }; + static const s16 left_data_fill_up_i1[] = { 17, 30, 55 }; + static const s16 left_data_send_mail1[] = { -1 }; + static const s16 left_data_get_f1[] = { -1 }; + static const s16 left_data_get_pull_f1[] = { -1 }; + static const s16 left_data_get_putaway_f1[] = { -1 }; + static const s16 left_data_trans_wait_f1[] = { -1 }; + static const s16 left_data_transfer_f1[] = { -1 }; + static const s16 left_data_shake1[] = { -1 }; + static const s16 left_data_tired1[] = { -1 }; + static const s16 left_data_wash1[] = { -1 }; + static const s16 left_data_wash2[] = { -1 }; + static const s16 left_data_wash3[] = { -1 }; + static const s16 left_data_wash4[] = { -1 }; + static const s16 left_data_wash5[] = { -1 }; + static const s16 left_data_fukubiki1[] = { -1 }; + static const s16 left_data_omairi1[] = { -1 }; + static const s16 left_data_saisen1[] = { -1 }; + static const s16 left_data_return_mail1[] = { -1 }; + static const s16 left_data_return_mail2[] = { -1 }; + static const s16 left_data_return_mail3[] = { -1 }; + static const s16 left_data_eat1[] = { -1 }; + static const s16 left_data_gaaan1[] = { -1 }; + static const s16 left_data_gaaan2[] = { -1 }; + static const s16 left_data_deru1[] = { -1 }; + static const s16 left_data_guratuku1[] = { -1 }; + static const s16 left_data_mogaku1[] = { -1 }; + static const s16 left_data_otiru1[] = { -1 }; + static const s16 left_data_zassou1[] = { -1 }; + static const s16 left_data_knock1[] = { -1 }; + static const s16 left_data_biku1[] = { -1 }; + static const s16 left_data_hati1[] = { -1 }; + static const s16 left_data_hati2[] = { -1 }; + static const s16 left_data_hati3[] = { -1 }; + static const s16 left_data_push_yuki1[] = { 1 }; + static const s16 left_data_deru2[] = { -1 }; + static const s16 left_data_otiru2[] = { -1 }; + static const s16 left_data_itazura1[] = { -1 }; + static const s16 left_data_umb_rot1[] = { -1 }; + static const s16 left_data_pickup_wait1[] = { -1 }; + static const s16 left_data_yatta1[] = { -1 }; + static const s16 left_data_yatta2[] = { -1 }; + static const s16 left_data_yatta3[] = { -1 }; + static const s16 left_data_kaze1[] = { -1 }; + static const s16 left_data_mosquito1[] = { -1 }; + static const s16 left_data_mosquito2[] = { -1 }; + static const s16 left_data_ride1[] = { -1 }; + static const s16 left_data_ride2[] = { -1 }; + static const s16 left_data_ridewait[] = { -1 }; + static const s16 left_data_getoff1[] = { -1 }; + static const s16 left_data_getoff2[] = { -1 }; + static const s16 left_data_utiwa_wait1[] = { -1 }; + static const s16 left_data_utiwa_d1[] = { -1 }; + static const s16 left_data_axe_break1[] = { 12, 33 }; + static const s16 left_data_axe_breakwait1[] = { -1 }; + static const s16 left_data_light_on1[] = { -1 }; + static const s16 left_data_taisou1[] = { -1 }; + static const s16 left_data_taisou2_1[] = { -1 }; + static const s16 left_data_taisou2_2[] = { -1 }; + static const s16 left_data_taisou3[] = { -1 }; + static const s16 left_data_taisou4_1[] = { -1 }; + static const s16 left_data_taisou4_2[] = { -1 }; + static const s16 left_data_taisou5_1[] = { -1 }; + static const s16 left_data_taisou5_2[] = { -1 }; + static const s16 left_data_taisou6_1[] = { -1 }; + static const s16 left_data_taisou6_2[] = { -1 }; + static const s16 left_data_taisou7_1[] = { -1 }; + static const s16 left_data_taisou7_2[] = { -1 }; + static const s16 left_data_omairi_us1[] = { -1 }; + + static const s16* data_p_table[] = { + left_data_wait1, + left_data_walk1, + left_data_axe1, + left_data_run1, + left_data_push1, + left_data_pull1, + left_data_hold_wait1, + left_data_pickup1, + left_data_Lturn1, + left_data_Rturn1, + left_data_get1, + left_data_get_change1, + left_data_get_putaway1, + left_data_open1, + left_data_putaway1, + left_data_trans_wait1, + left_data_transfer1, + left_data_umb_open1, + left_data_umbrella1, + left_data_dash1, + left_data_run_slip1, + left_data_get_pull1, + left_data_get_m1, + left_data_kamae_move_m1, + left_data_kamae_wait_m1, + left_data_kokeru_a1, + left_data_kokeru_getup_a1, + left_data_kokeru_getup_n1, + left_data_kokeru_n1, + left_data_net1, + left_data_net_swing1, + left_data_axe_swing1, + left_data_kamae_slip_m1, + left_data_kokeru1, + left_data_kokeru_getup1, + left_data_sitdown1, + left_data_sitdown_wait1, + left_data_standup1, + left_data_putaway_m1, + left_data_bed_wait1, + left_data_inbed_L1, + left_data_inbed_R1, + left_data_intrain1, + left_data_kagu_open_d1, + left_data_kagu_open_h1, + left_data_kagu_open_k1, + left_data_negaeri_L1, + left_data_negaeri_R1, + left_data_outbed_L1, + left_data_outbed_R1, + left_data_outtrain1, + left_data_kagu_close_d1, + left_data_kagu_close_h1, + left_data_kagu_close_k1, + left_data_kagu_wait_d1, + left_data_kagu_wait_h1, + left_data_kagu_wait_k1, + left_data_go_out_o1, + left_data_go_out_s1, + left_data_into_s1, + left_data_axe_hane1, + left_data_axe_suka1, + left_data_hold_wait_h1, + left_data_hold_wait_o1, + left_data_get_t1, + left_data_get_t2, + left_data_putaway_t1, + left_data_sao1, + left_data_sao_swing1, + left_data_turi_hiki1, + left_data_turi_wait1, + left_data_not_get_t1, + left_data_menu_catch1, + left_data_menu_change1, + left_data_umb_close1, + left_data_not_sao_swing1, + left_data_intrain_wait1, + left_data_clear_table1, + left_data_dig1, + left_data_fill_up1, + left_data_not_dig1, + left_data_clear_table_l1, + left_data_pickup_l1, + left_data_scoop1, + left_data_confirm1, + left_data_dig_suka1, + left_data_get_d1, + left_data_putaway_d1, + left_data_dig_kabu1, + left_data_fill_up_i1, + left_data_send_mail1, + left_data_get_f1, + left_data_get_pull_f1, + left_data_get_putaway_f1, + left_data_trans_wait_f1, + left_data_transfer_f1, + left_data_shake1, + left_data_tired1, + left_data_wash1, + left_data_wash2, + left_data_wash3, + left_data_wash4, + left_data_wash5, + left_data_fukubiki1, + left_data_omairi1, + left_data_saisen1, + left_data_return_mail1, + left_data_return_mail2, + left_data_return_mail3, + left_data_eat1, + left_data_gaaan1, + left_data_gaaan2, + left_data_deru1, + left_data_guratuku1, + left_data_mogaku1, + left_data_otiru1, + left_data_zassou1, + left_data_knock1, + left_data_biku1, + left_data_hati1, + left_data_hati2, + left_data_hati3, + left_data_push_yuki1, + left_data_deru2, + left_data_otiru2, + left_data_itazura1, + left_data_umb_rot1, + left_data_pickup_wait1, + left_data_yatta1, + left_data_yatta2, + left_data_yatta3, + left_data_kaze1, + left_data_mosquito1, + left_data_mosquito2, + left_data_ride1, + left_data_ride2, + left_data_ridewait, + left_data_getoff1, + left_data_getoff2, + left_data_utiwa_wait1, + left_data_utiwa_d1, + left_data_axe_break1, + left_data_axe_breakwait1, + left_data_light_on1, + left_data_taisou1, + left_data_taisou2_1, + left_data_taisou2_2, + left_data_taisou3, + left_data_taisou4_1, + left_data_taisou4_2, + left_data_taisou5_1, + left_data_taisou5_2, + left_data_taisou6_1, + left_data_taisou6_2, + left_data_taisou7_1, + left_data_taisou7_2, + left_data_omairi_us1, + }; + + // clang-format off + static const u8 size_table[] = { + 1, + 1, + 1, + 1, + 1, + 2, + 1, + 2, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 2, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 2, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 5, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 2, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 2, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 2, + 1, + 1, + 1, + 2, + 3, + 3, + 1, + 1, + 1, + 1, + 2, + 3, + 1, + 2, + 3, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 2, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1. + }; + // clang-format on + + return Player_actor_Check_CommonFootMark_AnimeFrame_fromAnimeIndex(cur_frame, speed, end_frame, anime_index, + data_p_table, size_table); +} + +static int Player_actor_Set_FootMark_MarkOnly(ACTOR* actorx, GAME* game, int disable_footprint) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + f32 cur_frame = fc0_p->current_frame; + f32 speed = fc0_p->speed; + f32 end_frame = fc0_p->end_frame; + int anime_index = player->animation0_idx; + int res = FALSE; + + if (Player_actor_Check_RightFootMark_AnimeFrame_fromAnimeIndex(cur_frame, speed, end_frame, anime_index)) { + if (disable_footprint == FALSE) { + eEC_CLIP->effect_make_proc(eEC_EFFECT_FOOTPRINT, player->right_foot_pos, 2, player->right_foot_angle.y, + game, RSV_NO, actorx->bg_collision_check.result.unit_attribute, 0); + } + + res = TRUE; + } + + if (Player_actor_Check_LeftFootMark_AnimeFrame_fromAnimeIndex(cur_frame, speed, end_frame, anime_index)) { + if (disable_footprint == FALSE) { + eEC_CLIP->effect_make_proc(eEC_EFFECT_FOOTPRINT, player->left_foot_pos, 2, player->left_foot_angle.y, game, + RSV_NO, actorx->bg_collision_check.result.unit_attribute, 0); + } + + res = TRUE; + } + + return res; +} + +static int Player_actor_CheckAble_FootMark_Sound(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int anime_index = player->animation0_idx; + + if (anime_index >= 0 && anime_index < mPlayer_ANIM_NUM) { + // clang-format off + static const u8 data[] = { + FALSE, + TRUE, + FALSE, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }; + // clang-format on + + return data[anime_index]; + } + + return FALSE; +} + +static void Player_actor_Set_FootMark_Base1(ACTOR* actorx, GAME* game, int disable_effect, int disable_sound) { + int footprint_res = Player_actor_Set_FootMark_MarkOnly(actorx, game, disable_effect); + + if (disable_sound == FALSE && Player_actor_CheckAble_FootMark_Sound(actorx) && footprint_res) { + Player_actor_sound_FootStep2(actorx); + } +} + +static void Player_actor_Set_FootMark_Base2(ACTOR* actorx, GAME* game, int disable_effect, int type) { + if (Player_actor_Set_FootMark_MarkOnly(actorx, game, disable_effect) && + Player_actor_CheckAble_FootMark_Sound(actorx)) { + Player_actor_sound_FootStep1(actorx, type); + } +} + +static int Player_actor_Check_RotateOctagon(GAME* game) { + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_ROTATE_OCTAGON) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + if (player->keyframe0.frame_control.current_frame >= 9.0f) { + return TRUE; + } + } + + return FALSE; +} + +static void Player_actor_Reset_unable_hand_item_in_demo(ACTOR* actorx, int main_index) { + if (Player_actor_Check_is_demo_mode(main_index) == FALSE) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + player->unable_hand_item_in_demo = FALSE; + } +} + +static void Player_actor_Reset_able_hand_all_item_in_demo(ACTOR* actorx, int main_index) { + if (Player_actor_Check_is_demo_mode(main_index) == FALSE) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + player->able_hand_all_item_in_demo = FALSE; + } +} + +static void Player_actor_Set_EffectBgTree(GAME* game, mActor_name_t item, s16 bg_ef_type, int ut_x, int ut_z) { + xyz_t pos; + + if (mFI_UtNum2CenterWpos(&pos, ut_x, ut_z)) { + s16 variant; + pos.y = mCoBG_UtNum2UtCenterY_Keep(ut_x, ut_z); + + if (IS_ITEM_XMAS_TREE(item) != FALSE) { + if (FGTreeType_check(item) == mNT_TREE_TYPE_CEDAR) { + variant = 12; + } else { + variant = 3; + } + } else if (IS_ITEM_SMALL_TREE(item) != FALSE) { + if (FGTreeType_check(item) == mNT_TREE_TYPE_PALM) { + variant = 4; + } else if (FGTreeType_check(item) == mNT_TREE_TYPE_CEDAR) { + variant = 8; + } else if (FGTreeType_check(item) == mNT_TREE_TYPE_GOLD) { + variant = 13; + } else { + variant = -1; + } + } else if (IS_ITEM_MED_TREE(item) != FALSE) { + if (FGTreeType_check(item) == mNT_TREE_TYPE_PALM) { + variant = 5; + } else if (FGTreeType_check(item) == mNT_TREE_TYPE_CEDAR) { + variant = 9; + } else if (FGTreeType_check(item) == mNT_TREE_TYPE_GOLD) { + variant = 14; + } else { + variant = 0; + } + } else if (IS_ITEM_LARGE_TREE(item) != FALSE) { + if (FGTreeType_check(item) == mNT_TREE_TYPE_PALM) { + variant = 6; + } else if (FGTreeType_check(item) == mNT_TREE_TYPE_CEDAR) { + variant = 10; + } else if (FGTreeType_check(item) == mNT_TREE_TYPE_GOLD) { + variant = 15; + } else { + variant = 1; + } + } else { + if (FGTreeType_check(item) == mNT_TREE_TYPE_PALM) { + variant = 7; + } else if (FGTreeType_check(item) == mNT_TREE_TYPE_CEDAR) { + variant = 11; + } else if (FGTreeType_check(item) == mNT_TREE_TYPE_GOLD) { + variant = 16; + } else { + variant = 2; + } + } + + if (Common_Get(clip).make_effect_bg_proc != NULL) { + Common_Get(clip).make_effect_bg_proc(game, bg_ef_type, variant, &pos); + } + } +} + +static mActor_name_t Player_actor_Get_shake_tree_position_and_itemNo(ACTOR* actorx, xyz_t* pos_p) { + xyz_t* player_pos_p = &actorx->world.position; + xyz_t center_pos; + + if (mFI_Wpos2UtCenterWpos(¢er_pos, *player_pos_p)) { + static const f32 add_X[] = { + -mFI_UT_WORLDSIZE_X_F, 0.0f, mFI_UT_WORLDSIZE_X_F, -mFI_UT_WORLDSIZE_X_F, mFI_UT_WORLDSIZE_X_F, + -mFI_UT_WORLDSIZE_X_F, 0.0f, mFI_UT_WORLDSIZE_X_F, + }; + static const f32 add_Z[] = { + -mFI_UT_WORLDSIZE_Z_F, -mFI_UT_WORLDSIZE_Z_F, -mFI_UT_WORLDSIZE_Z_F, 0.0f, 0.0f, + mFI_UT_WORLDSIZE_Z_F, mFI_UT_WORLDSIZE_Z_F, mFI_UT_WORLDSIZE_Z_F, + }; + mActor_name_t unit_item[8]; + xyz_t unit_pos[8]; + int select_index = -1; + int i; + + for (i = 0; i < 8; i++) { + unit_pos[i].x = center_pos.x + add_X[i]; + unit_pos[i].z = center_pos.z + add_Z[i]; + } + + for (i = 0; i < 8; i++) { + mActor_name_t* fg_p = mFI_GetUnitFG(unit_pos[i]); + + if (fg_p != NULL) { + if (IS_ITEM_COLLIDEABLE_TREE(*fg_p) == FALSE) { + unit_item[i] = EMPTY_NO; + } else { + unit_item[i] = *fg_p; + } + } else { + unit_item[i] = EMPTY_NO; + } + } + + for (i = 0; i < 8; i++) { + if (unit_item[i] != EMPTY_NO) { + f32 dy; + + unit_pos[i].y = mCoBG_GetBgY_OnlyCenter_FromWpos2(unit_pos[i], 0.0f); + dy = ABS(unit_pos[i].y - player_pos_p->y); + + if (dy > 10.0f) { + unit_item[i] = EMPTY_NO; + } + } + } + + for (i = 0; i < 8; i++) { + if (unit_item[i] != EMPTY_NO) { + f32 dist_sq = Math3DLengthSquare2D(unit_pos[i].x, unit_pos[i].z, player_pos_p->x, player_pos_p->z); + + if (dist_sq >= SQ(mFI_UNIT_BASE_SIZE_F)) { + unit_item[i] = EMPTY_NO; + } + } + } + + { + int min_angle = DEG2SHORT_ANGLE2(45.0f); + int player_angle_y = actorx->shape_info.rotation.y; + + for (i = 0; i < 8; i++) { + if (unit_item[i] != EMPTY_NO) { + f32 dx = unit_pos[i].x - player_pos_p->x; + f32 dz = unit_pos[i].z - player_pos_p->z; + int angle = (s16)(atans_table(dz, dx) - player_angle_y); + int abs_angle = ABS(angle); + + if (abs_angle < min_angle) { + select_index = i; + min_angle = abs_angle; + } + } + } + } + + if (select_index >= 0 && select_index < 8) { + *pos_p = unit_pos[select_index]; + return unit_item[select_index]; + } + } + + *pos_p = *player_pos_p; + return EMPTY_NO; +} + +static mActor_name_t Player_actor_check_fg_little_shake_tree(ACTOR* actorx, int* ut_x_p, int* ut_z_p, xyz_t* pos_p) { + mActor_name_t item = Player_actor_Get_shake_tree_position_and_itemNo(actorx, pos_p); + + if (item != EMPTY_NO && mFI_Wpos2UtNum(ut_x_p, ut_z_p, *pos_p)) { + return item; + } + + *ut_x_p = -1; + *ut_z_p = -1; + return EMPTY_NO; +} + +static int Player_actor_Check_able_shake_tree_table(ACTOR* actorx, int tree_ut_x, int tree_ut_z, int little_flag, + f32 time) { + if (tree_ut_x < 0 || tree_ut_z < 0) { + return FALSE; + } else { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + f32* shake_timer_p = player->shake_tree_timer; + int* shake_ut_x_p = player->shake_tree_ut_x; + int* shake_ut_z_p = player->shake_tree_ut_z; + int i; + + for (i = 0; i < 3; i++) { + if (tree_ut_x == *shake_ut_x_p && tree_ut_z == *shake_ut_z_p) { + if (little_flag != FALSE) { + return FALSE; + } + + if (*shake_timer_p > time) { + return FALSE; + } + } + + shake_timer_p++; + shake_ut_x_p++; + shake_ut_z_p++; + } + } + + return TRUE; +} + +static int Player_actor_Set_shake_tree_table(ACTOR* actorx, GAME* game, mActor_name_t item, int tree_ut_x, + int tree_ut_z, int little_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (Player_actor_Check_able_shake_tree_table(actorx, tree_ut_x, tree_ut_z, little_flag, 0.0f) == FALSE) { + return FALSE; + } else { + f32* shake_timer_p = player->shake_tree_timer; + int* shake_ut_x_p = player->shake_tree_ut_x; + int* shake_ut_z_p = player->shake_tree_ut_z; + int* shake_tree_little_p = player->shake_tree_little; + int i; + + if (little_flag == FALSE) { + for (i = 0; i < 3; i++) { +/* @BUG - *shake_ut_z_p is missing an = sign */ +#ifndef BUGFIXES + if ((*shake_ut_x_p == tree_ut_x) && (*shake_ut_z_p = tree_ut_z)) { +#else + if ((*shake_ut_x_p == tree_ut_x) && (*shake_ut_z_p == tree_ut_z)) { +#endif + Player_actor_Set_EffectBgTree(game, item, EffectBG_EFFECT_SHAKE_LARGE, tree_ut_x, tree_ut_z); + *shake_timer_p = 84.0f; + *shake_tree_little_p = FALSE; + return TRUE; + } + + shake_timer_p++; + shake_ut_x_p++; + shake_ut_z_p++; + shake_tree_little_p++; + } + + shake_timer_p = player->shake_tree_timer; + shake_ut_x_p = player->shake_tree_ut_x; + shake_ut_z_p = player->shake_tree_ut_z; + shake_tree_little_p = player->shake_tree_little; + } + + { + s16 bg_ef_type; + int i; + + for (i = 0; i < 3; i++) { + if (*shake_ut_x_p < 0 || *shake_ut_z_p < 0) { + bg_ef_type = little_flag ? EffectBG_EFFECT_SHAKE_SMALL : EffectBG_EFFECT_SHAKE_LARGE; + *shake_ut_x_p = tree_ut_x; + *shake_ut_z_p = tree_ut_z; + + if (little_flag) { + *shake_timer_p = 16.0f; + } else { + *shake_timer_p = 84.0f; + } + + *shake_tree_little_p = little_flag; + Player_actor_Set_EffectBgTree(game, item, bg_ef_type, tree_ut_x, tree_ut_z); + return TRUE; + } + + shake_timer_p++; + shake_ut_x_p++; + shake_ut_z_p++; + shake_tree_little_p++; + } + } + } + + return FALSE; +} + +static void Player_actor_check_little_shake_tree(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int main_index = player->now_main_index; + int tree_ut_x = -1; + int tree_ut_z = -1; + + switch (main_index) { + default: { + xyz_t pos; + mActor_name_t item; + + item = Player_actor_check_fg_little_shake_tree(actorx, &tree_ut_x, &tree_ut_z, &pos); + if (item != EMPTY_NO && Player_actor_Set_shake_tree_table(actorx, game, item, tree_ut_x, tree_ut_z, TRUE)) { + if (IS_ITEM_SHAKEABLE_TREE(item) != FALSE) { + Player_actor_sound_tree_touch(&pos); + } + } + break; + } + case mPlayer_INDEX_SHAKE_TREE: + tree_ut_x = player->main_data.shake_tree.tree_ut_x; + tree_ut_z = player->main_data.shake_tree.tree_ut_z; + break; + } + + { + f32* shake_timer_p = player->shake_tree_timer; + int* shake_ut_x_p = player->shake_tree_ut_x; + int* shake_ut_z_p = player->shake_tree_ut_z; + int shake_ut_x; + int shake_ut_z; + int i; + + for (i = 0; i < 3; i++) { + if (*shake_timer_p <= 0.0f) { + shake_ut_x = *shake_ut_x_p; + shake_ut_z = *shake_ut_z_p; + + if ((shake_ut_x >= 0 || shake_ut_z >= 0) && (shake_ut_x != tree_ut_x || shake_ut_z != tree_ut_z)) { + *shake_ut_x_p = -1; + *shake_ut_z_p = -1; + } + } + + shake_timer_p++; + shake_ut_x_p++; + shake_ut_z_p++; + } + } +} + +static void Player_actor_check_shake_tree_timer(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + f32* shake_timer_p = player->shake_tree_timer; + int i; + + for (i = 0; i < 3; i++) { + if (*shake_timer_p > 0.0f) { + *shake_timer_p -= 1.0f; + if (*shake_timer_p < 0.0f) { + *shake_timer_p = 0.0f; + } + } + + shake_timer_p++; + } +} + +static int Player_actor_CheckAndRequest_main_shake_tree_all(GAME* game) { + if (Player_actor_CheckController_forShake_tree(game)) { + ACTOR* actorx = GET_PLAYER_ACTOR_GAME_ACTOR(game); + xyz_t pos; + mActor_name_t item; + + item = Player_actor_Get_shake_tree_position_and_itemNo(actorx, &pos); + if (item != EMPTY_NO) { + int tree_ut_x; + int tree_ut_z; + + if (mFI_Wpos2UtNum(&tree_ut_x, &tree_ut_z, pos) && + Player_actor_Check_able_shake_tree_table(actorx, tree_ut_x, tree_ut_z, FALSE, 16.0f)) { + return Player_actor_request_main_shake_tree_all(game, &pos, item, tree_ut_x, tree_ut_z, + mPlayer_REQUEST_PRIORITY_5); + } + } + } + + return FALSE; +} + +static int Player_actor_Get_tree_shaken_table_index(ACTOR* actorx, const xyz_t* pos_p) { + int tree_ut_x; + int tree_ut_z; + + if (mFI_Wpos2UtNum(&tree_ut_x, &tree_ut_z, *pos_p)) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + f32* shake_timer_p = player->shake_tree_timer; + int* shake_ut_x_p = player->shake_tree_ut_x; + int* shake_ut_z_p = player->shake_tree_ut_z; + int i; + + for (i = 0; i < 3; i++) { + if (*shake_timer_p > 0.0f && *shake_ut_x_p == tree_ut_x && *shake_ut_z_p == tree_ut_z) { + return i; + } + + shake_timer_p++; + shake_ut_x_p++; + shake_ut_z_p++; + } + } + + return -1; +} + +static int Player_actor_Check_tree_shaken_little(ACTOR* actorx, const xyz_t* pos_p) { + int idx = Player_actor_Get_tree_shaken_table_index(actorx, pos_p); + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (idx >= 0 && idx < 3 && player->shake_tree_little[idx] != FALSE) { + return TRUE; + } else { + xyz_t scoop_pos; + + if (Player_actor_Check_HitScoop(actorx, &scoop_pos)) { + xyz_t ut_center_pos; + + if (mFI_Wpos2UtCenterWpos(&ut_center_pos, *pos_p)) { + if (scoop_pos.x == ut_center_pos.x && scoop_pos.z == ut_center_pos.z) { + return TRUE; + } + } + } + } + + return FALSE; +} + +static int Player_actor_Check_tree_shaken_big(ACTOR* actorx, const xyz_t* pos_p) { + int idx = Player_actor_Get_tree_shaken_table_index(actorx, pos_p); + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (idx >= 0 && idx < 3 && player->shake_tree_little[idx] == FALSE) { + return TRUE; + } else { + xyz_t axe_pos; + + if (Player_actor_Check_HitAxe(actorx, &axe_pos)) { + xyz_t ut_center_pos; + + if (mFI_Wpos2UtCenterWpos(&ut_center_pos, *pos_p)) { + if (axe_pos.x == ut_center_pos.x && axe_pos.z == ut_center_pos.z) { + return TRUE; + } + } + } + } + + return FALSE; +} + +static int Player_actor_Check_tree_shaken(ACTOR* actorx, const xyz_t* pos_p) { + if (Player_actor_Check_tree_shaken_little(actorx, pos_p) || Player_actor_Check_tree_shaken_big(actorx, pos_p)) { + return TRUE; + } + + return FALSE; +} + +static void Player_actor_reset_pitfall(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (player->pitfall_flag) { + if (Common_Get(clip).bg_item_clip != NULL && Common_Get(clip).bg_item_clip->pit_fall_stop_proc != NULL) { + xyz_t* pitfall_pos_p = &player->pitfall_pos; + mActor_name_t* fg_p = mFI_GetUnitFG(*pitfall_pos_p); + + if (fg_p != NULL) { + mActor_name_t item = *fg_p; + + if (ITEM_IS_BURIED_PITFALL_HOLE_RSV(item)) { + int ut_x; + int ut_z; + + if (mFI_Wpos2UtNum(&ut_x, &ut_z, *pitfall_pos_p)) { + Common_Get(clip).bg_item_clip->pit_fall_stop_proc(item, ut_x, ut_z, EMPTY_NO); + } + } + } + } + + player->pitfall_flag = FALSE; + } +} + +static void Player_actor_check_pitfall(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + Player_actor_reset_pitfall(actorx); + if (Common_Get(clip).bg_item_clip != NULL && Common_Get(clip).bg_item_clip->pit_fall_proc != NULL) { + int main_index = player->now_main_index; + + if (mPlayer_MAIN_INDEX_VALID(main_index) != FALSE) { + // clang-format off + static const s8 data[] = { + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }; + // clang-format on + + if (data[main_index] != FALSE) { + xyz_t* player_pos_p = &actorx->world.position; + xyz_t pitfall_check_pos; + + if (mFI_Wpos2UtCenterWpos(&pitfall_check_pos, *player_pos_p)) { + f32 dist = Math3DLengthSquare2D(pitfall_check_pos.x, pitfall_check_pos.y, player_pos_p->x, + player_pos_p->y); + + if (dist <= SQ(19.0f)) { + mActor_name_t* fg_p = mFI_GetUnitFG(pitfall_check_pos); + + if (fg_p != NULL) { + mActor_name_t item = *fg_p; + + if (ITEM_IS_BURIED_PITFALL_HOLE(item)) { + pitfall_check_pos.y = mCoBG_GetBgY_OnlyCenter_FromWpos2(pitfall_check_pos, 0.0f); + if (Player_actor_request_main_ready_pitfall_all(game, &pitfall_check_pos, + mPlayer_REQUEST_PRIORITY_26)) { + int ut_x; + int ut_z; + + if (mFI_Wpos2UtNum(&ut_x, &ut_z, pitfall_check_pos)) { + Common_Get(clip).bg_item_clip->pit_fall_proc(item, ut_x, ut_z, EMPTY_NO); + player->pitfall_pos = pitfall_check_pos; + player->pitfall_flag = TRUE; + } + } + } + } + } + } + } + } + } +} + +static int Player_actor_Check_end_stung_bee(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (player->now_main_index == mPlayer_INDEX_STUNG_BEE) { + if (player->main_data.stung_bee.timer <= 162.0f) { + return FALSE; + } + } + + return TRUE; +} + +static int Player_actor_Check_BirthBee_common(ACTOR* actorx, mActor_name_t item, int tree_ut_x, int tree_ut_z, + s16* angle_y_p) { + if (Common_Get(clip).bg_item_clip != NULL && Common_Get(clip).bg_item_clip->item_tree_fruit_drop_proc != NULL) { + if (tree_ut_x >= 0 && tree_ut_z >= 0) { + if (IS_ITEM_BEE_TREE(item)) { + xyz_t item_drop_pos; + + Common_Get(clip).bg_item_clip->item_tree_fruit_drop_proc(item, tree_ut_x, tree_ut_z, &item_drop_pos); + if (item_drop_pos.x >= 0.0f && item_drop_pos.z >= 0.0f) { + if (angle_y_p != NULL) { + f32 dx = item_drop_pos.x - actorx->world.position.x; + f32 dz = item_drop_pos.z - actorx->world.position.z; + + if (dx != 0.0f || dz != 0.0f) { + *angle_y_p = atans_table(dz, dx); + } else { + *angle_y_p = actorx->shape_info.rotation.y; + } + } + + return TRUE; + } + } + } + } + + return FALSE; +} + +static void Player_actor_set_ripple(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (eEC_CLIP != NULL) { + f32* ripple_timer_p = &player->ripple_timer; + + *ripple_timer_p += 1.0f; + if (*ripple_timer_p >= 8.0f) { + s16 attr = actorx->bg_collision_check.result.unit_attribute; + + if (player->ripple_foot_idx != 0) { + eEC_CLIP->effect_make_proc(eEC_EFFECT_WAIT_ASIMOTO, player->right_foot_pos, 2, + player->right_foot_angle.y, game, RSV_NO, attr, 0); + player->ripple_foot_idx = 0; + } else { + eEC_CLIP->effect_make_proc(eEC_EFFECT_WAIT_ASIMOTO, player->left_foot_pos, 2, player->left_foot_angle.y, + game, RSV_NO, attr, 0); + player->ripple_foot_idx = 1; + } + + *ripple_timer_p = 0.0f; + } + } +} + +static int Player_actor_Check_NecessaryDoorKnock(ACTOR* actorx) { + mActor_name_t item = actorx->npc_id; + + if (ITEM_NAME_GET_TYPE(item) == NAME_TYPE_STRUCT) { + if (ITEM_IS_PLAYER_HOUSE(item)) { + + if (mEv_CheckFirstIntro()) { + return TRUE; + } else { + int arrange_idx = item - HOUSE0; + + if (mLd_PlayerManKindCheck() == FALSE) { + if (arrange_idx != mHS_get_arrange_idx(Common_Get(player_no))) { + return TRUE; + } + } else { + return TRUE; + } + } + } else if (ITEM_IS_NPC_HOUSE(item) || ITEM_IS_ISLAND_NPC_HOUSE(item)) { + return TRUE; + } + } + + return FALSE; +} + +static int Player_actor_CheckAndRequest_KnockDoor(ACTOR* actorx, GAME* game, int main_index) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (main_index == mPlayer_INDEX_DOOR) { + mPlayer_request_door_c* req_door_data_p = &player->requested_main_index_data.door; + ACTOR* door_actor = (ACTOR*)req_door_data_p->label; + + if (door_actor != NULL && Player_actor_Check_NecessaryDoorKnock(door_actor)) { + if (Player_actor_request_main_knock_door(game, &req_door_data_p->player_pos, req_door_data_p->angle_y, + mPlayer_REQUEST_PRIORITY_38)) { + return mPlayer_INDEX_KNOCK_DOOR; + } + } + } + + return main_index; +} + +static int Player_actor_CheckAndRequest_ItemInOut(ACTOR* actorx, GAME* game, int main_index) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + s8 able_hand_all_item_in_demo = player->able_hand_all_item_in_demo; + s8 item_kind = Player_actor_Get_ItemKind_fromScene(); + + if (item_kind >= 0 && able_hand_all_item_in_demo == FALSE) { + int request_main_index = player->requested_main_index; + int now_main_index = player->now_main_index; + int request_able_out_item = Player_actor_CheckPlayer_AbleOutItem(request_main_index); + int main_able_out_item = Player_actor_CheckPlayer_AbleOutItem(now_main_index); + + if (request_able_out_item == mPlayer_ABLE_ITEM_NONE || main_able_out_item == mPlayer_ABLE_ITEM_NONE) { + return main_index; + } + + if (mPlayer_ITEM_IS_NOT_TOOL(item_kind) == FALSE) { + if ((request_able_out_item == mPlayer_ABLE_ITEM_RESTRICTED || + request_able_out_item == mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA) && + main_able_out_item == mPlayer_ABLE_ITEM_CAN_USE_ALL) { + if (Player_actor_request_main_putin_item(game, mPlayer_REQUEST_PRIORITY_37)) { + return mPlayer_INDEX_PUTIN_ITEM; + } + } else if ((request_able_out_item == mPlayer_ABLE_ITEM_CAN_USE_ALL) && + (main_able_out_item == mPlayer_ABLE_ITEM_RESTRICTED || + main_able_out_item == mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA)) { + if (Player_actor_request_main_takeout_item(game, mPlayer_REQUEST_PRIORITY_37)) { + return mPlayer_INDEX_TAKEOUT_ITEM; + } + } + } else { + if (mPlayer_ITEM_IS_NOT_TOOL(item_kind) != FALSE) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); // we already have the player???? + int umbrella_flag = FALSE; + + if (request_main_index == mPlayer_INDEX_TALK) { + umbrella_flag = player->requested_main_index_data.talk.umbrella_flag; + } else if (request_main_index == mPlayer_INDEX_DEMO_WAIT) { + umbrella_flag = player->requested_main_index_data.demo_wait.umbrella_flag; + } + + if (umbrella_flag != FALSE && Player_actor_request_main_putin_item(game, mPlayer_REQUEST_PRIORITY_37)) { + return mPlayer_INDEX_PUTIN_ITEM; + } + } + + { + int in_demo_mode = Player_actor_Check_is_demo_mode(now_main_index); + int will_be_in_demo_mode = Player_actor_Check_is_demo_mode(request_main_index); + s8 unable_hand_item_in_demo = player->unable_hand_item_in_demo; + + if (in_demo_mode && !will_be_in_demo_mode && unable_hand_item_in_demo && + Player_actor_request_main_takeout_item(game, mPlayer_REQUEST_PRIORITY_37)) { + return mPlayer_INDEX_TAKEOUT_ITEM; + } else if (request_able_out_item == mPlayer_ABLE_ITEM_RESTRICTED && + (main_able_out_item == mPlayer_ABLE_ITEM_CAN_USE_ALL || + main_able_out_item == mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA)) { + if (Player_actor_request_main_putin_item(game, mPlayer_REQUEST_PRIORITY_37)) { + return mPlayer_INDEX_PUTIN_ITEM; + } + } else if ((request_able_out_item == mPlayer_ABLE_ITEM_CAN_USE_ALL || + request_able_out_item == mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA) && + main_able_out_item == mPlayer_ABLE_ITEM_RESTRICTED) { + if (Player_actor_request_main_takeout_item(game, mPlayer_REQUEST_PRIORITY_37)) { + return mPlayer_INDEX_TAKEOUT_ITEM; + } + } + } + } + } + + return main_index; +} + +static void Player_actor_Set_bgm_volume(ACTOR* actorx, int main_index) { + if (mPlayer_MAIN_INDEX_VALID(main_index) != FALSE && mEv_CheckTitleDemo() <= 0) { + // clang-format off + static const s8 data[] = { + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_COLLECT_INSECTS, + mPlayer_BGM_VOLUME_MODE_COLLECT_INSECTS, + mPlayer_BGM_VOLUME_MODE_COLLECT_INSECTS, + mPlayer_BGM_VOLUME_MODE_COLLECT_INSECTS, + mPlayer_BGM_VOLUME_MODE_COLLECT_INSECTS, + mPlayer_BGM_VOLUME_MODE_COLLECT_INSECTS, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_FISHING, + mPlayer_BGM_VOLUME_MODE_FISHING, + mPlayer_BGM_VOLUME_MODE_FISHING, + mPlayer_BGM_VOLUME_MODE_FISHING, + mPlayer_BGM_VOLUME_MODE_FISHING, + mPlayer_BGM_VOLUME_MODE_FISHING, + mPlayer_BGM_VOLUME_MODE_FISHING, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + }; + // clang-format on + + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + s8 last_bgm_volume_mode = player->bgm_volume_mode; + s8 next_bgm_volume_mode = data[main_index]; + + if (last_bgm_volume_mode != next_bgm_volume_mode) { + if (next_bgm_volume_mode == mPlayer_BGM_VOLUME_MODE_COLLECT_INSECTS) { + mBGMPsComp_volume_collect_insects_start(); + } else if (next_bgm_volume_mode == mPlayer_BGM_VOLUME_MODE_FISHING) { + mBGMPsComp_volume_fishing_start(); + } + + if (last_bgm_volume_mode == mPlayer_BGM_VOLUME_MODE_COLLECT_INSECTS) { + mBGMPsComp_volume_collect_insects_end(); + } else if (last_bgm_volume_mode == mPlayer_BGM_VOLUME_MODE_FISHING) { + mBGMPsComp_volume_fishing_end(); + } + + player->bgm_volume_mode = next_bgm_volume_mode; + } + } +} + +static int Player_actor_Check_Label_main_push_snowball(GAME* game, u32 label) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + if (player->now_main_index == mPlayer_INDEX_PUSH_SNOWBALL && player->main_data.push_snowball.label == label) { + return TRUE; + } + + return FALSE; +} + +static int Player_actor_Check_Label_main_wade_snowball(GAME* game, u32 label) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + if (player->now_main_index == mPlayer_INDEX_WADE_SNOWBALL && + player->main_data.wade_snowball.snowball_label == label) { + return TRUE; + } + + return FALSE; +} + +static int Player_actor_SetParam_for_push_snowball(GAME* game, const xyz_t* pos_p, s16 angle_y, f32 anim_speed) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + if (player->now_main_index == mPlayer_INDEX_PUSH_SNOWBALL) { + ACTOR* actorx = GET_PLAYER_ACTOR_GAME_ACTOR(gamePT); + + actorx->world.position = *pos_p; + actorx->shape_info.rotation.y = angle_y; + actorx->world.angle.y = angle_y; + player->keyframe0.frame_control.speed = anim_speed; + player->keyframe1.frame_control.speed = anim_speed; + return TRUE; + } + + return FALSE; +} + +static int Player_actor_GetSnowballPos_forWadeSnowball(ACTOR* actorx, xyz_t* pos_p) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (player->now_main_index == mPlayer_INDEX_WADE_SNOWBALL) { + xyz_t* snowball_dist_p = &player->main_data.wade_snowball.snowball_dist; + + pos_p->x = actorx->world.position.x + snowball_dist_p->x; + pos_p->y = actorx->world.position.y + snowball_dist_p->y; + pos_p->z = actorx->world.position.z + snowball_dist_p->z; + } + + return FALSE; +} + +static int Player_actor_CheckCondition_forWadeSnowball(GAME* game, const xyz_t* pos_p, s16 angle_y) { + return Player_actor_CheckAbleMoveWadeBlock(game, pos_p, angle_y, 0.65f, DEG2SHORT_ANGLE2(5.0f), + mEv_CheckTitleDemo() <= 0); +} + +static void Player_actor_Culc_player_frame_counter(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + player->player_frame_counter++; +} + +static void Player_actor_Reset_excute_cancel_wade(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (player->excute_cancel_wade) { + if (mPlib_Get_unable_wade()) { + int dFrame = player->player_frame_counter - player->cancel_wade_timer; + + if (dFrame < 0) { + dFrame = 0xFFFF - dFrame; + } + + if (dFrame > 0) { + player->excute_cancel_wade = FALSE; + } + } else { + player->excute_cancel_wade = FALSE; + } + } +} + +static void Player_actor_Culc_wade_end_pos(const xyz_t* src_pos_p, xyz_t* wade_end_pos_p, int direction, + f32 border_adjust) { + int bx; + int bz; + + *wade_end_pos_p = *src_pos_p; + if (mFI_Wpos2BlockNum(&bx, &bz, *src_pos_p)) { + xyz_t wpos; + xyz_t lpos = { 0.0f, 0.0f, 0.0f }; + + mFI_LposInBKtoWpos(&wpos, lpos, bx, bz); + switch (direction) { + case mFI_MOVEDIR_RIGHT: + case mFI_MOVEDIR_LEFT: { + f32 z_up = (wpos.z + border_adjust); + f32 z_down = (wpos.z - border_adjust) + mFI_BK_WORLDSIZE_Z_F; + + if (wade_end_pos_p->z < z_up) { + wade_end_pos_p->z = z_up; + } else if (wade_end_pos_p->z > z_down) { + wade_end_pos_p->z = z_down; + } + break; + } + + case mFI_MOVEDIR_UP: + default: { + f32 x_left = (wpos.x + border_adjust); + f32 x_right = (wpos.x - border_adjust) + mFI_BK_WORLDSIZE_X_F; + + if (wade_end_pos_p->x < x_left) { + wade_end_pos_p->x = x_left; + } else if (wade_end_pos_p->x > x_right) { + wade_end_pos_p->x = x_right; + } + break; + } + } + + switch (direction) { + case mFI_MOVEDIR_RIGHT: + wade_end_pos_p->x = (wpos.x + border_adjust) + mFI_BK_WORLDSIZE_X_F; + break; + case mFI_MOVEDIR_LEFT: + wade_end_pos_p->x = (wpos.x - border_adjust); + break; + case mFI_MOVEDIR_UP: + wade_end_pos_p->z = (wpos.z - border_adjust); + break; + default: + wade_end_pos_p->z = (wpos.z + border_adjust) + mFI_BK_WORLDSIZE_Z_F; + break; + } + } +} + +static void Player_actor_Get_PickupHandPosition(ACTOR* actorx, xyz_t* pos_p, f32 dist) { + s16 angle_y = actorx->shape_info.rotation.y; + f32 x = dist * sin_s(angle_y); + f32 z = dist * cos_s(angle_y); + + *pos_p = actorx->world.position; + pos_p->x += x; + pos_p->z += z; +} + +static void Player_actor_Get_ItemDisplayPos(xyz_t* item_pos_p, xyz_t* center_pos_p) { + if (Common_Get(clip).bg_item_clip != NULL && Common_Get(clip).bg_item_clip->rand_pos_get_proc != NULL) { + const xyz_t pos = *center_pos_p; + + Common_Get(clip).bg_item_clip->rand_pos_get_proc(item_pos_p, &pos); + } else { + *item_pos_p = *center_pos_p; + } +} + +static int Player_actor_CheckItemPosition_forPickup(const xyz_t* pos_p, f32 max_dist_sq, f32 max_dist_y, + xyz_t* target_pos_p, xyz_t* item_pos_p) { + mFI_Wpos2UtCenterWpos(target_pos_p, *pos_p); + if (Common_Get(field_type) != mFI_FIELDTYPE2_FG) { + target_pos_p->y = mCoBG_GetBgY_OnlyCenter_FromWpos2(*target_pos_p, 0.0f); + } else { + target_pos_p->y = mCoBG_GetBgY_OnlyCenter_FromWpos2(*target_pos_p, -1.0f); + } + + Player_actor_Get_ItemDisplayPos(item_pos_p, target_pos_p); + + target_pos_p->y = mCoBG_GetBgY_OnlyCenter_FromWpos2(*target_pos_p, 0.0f); + if (Math3DLengthSquare2D(item_pos_p->x, item_pos_p->z, pos_p->x, pos_p->z) <= max_dist_sq) { + f32 dy = target_pos_p->y - pos_p->y; + + if (ABS(dy) <= max_dist_y) { + return TRUE; + } + } + + return FALSE; +} + +static mActor_name_t* Player_actor_CheckItem_fromPosition(const xyz_t* pos_p, f32 max_dist_sq, f32 max_dist_y, + xyz_t* target_pos_p, xyz_t* item_pos_p) { + if (mFI_Wpos2DepositGet(*pos_p) == FALSE) { + mActor_name_t* fg_p = mFI_GetUnitFG(*pos_p); + + if (fg_p != NULL) { + if (IS_ITEM_GRASS(*fg_p) != FALSE) { + if (Player_actor_CheckItemPosition_forPickup(pos_p, max_dist_sq, max_dist_y, target_pos_p, + item_pos_p)) { + return fg_p; + } + } else { + int field_type = Common_Get(field_type); + + switch (ITEM_NAME_GET_TYPE(*fg_p)) { + case NAME_TYPE_FTR0: + case NAME_TYPE_FTR1: + if (field_type != mFI_FIELDTYPE2_FG) { + break; + } + /* Fallthrough */ + case NAME_TYPE_ITEM1: + if (Player_actor_CheckItemPosition_forPickup(pos_p, max_dist_sq, max_dist_y, target_pos_p, + item_pos_p)) { + return fg_p; + } + break; + default: + if (ITEM_IS_SIGNBOARD(*fg_p) != FALSE) { + if (Player_actor_CheckItemPosition_forPickup(pos_p, max_dist_sq, max_dist_y, target_pos_p, + item_pos_p)) { + return fg_p; + } + } + break; + } + } + } + } + + return NULL; +} + +static mActor_name_t* Player_actor_Search_putin_item(ACTOR* actorx, xyz_t* target_pos_p, xyz_t* item_pos_p) { + xyz_t pos; + mActor_name_t* fg_p; + + /* Check for signboards first */ + Player_actor_Get_PickupHandPosition(actorx, &pos, 35.0f); + fg_p = Player_actor_CheckItem_fromPosition(&pos, SQ(15.0f), 15.0f, target_pos_p, item_pos_p); + if (fg_p != NULL && ITEM_IS_SIGNBOARD(*fg_p) != FALSE) { + return fg_p; + } + + /* Now look for regular items */ + Player_actor_Get_PickupHandPosition(actorx, &pos, 20.0f); + fg_p = Player_actor_CheckItem_fromPosition(&pos, SQ(15.0f), 15.0f, target_pos_p, item_pos_p); + if (fg_p != NULL) { + return fg_p; + } + + /* Search even closer */ + Player_actor_Get_PickupHandPosition(actorx, &pos, 10.0f); + fg_p = Player_actor_CheckItem_fromPosition(&pos, SQ(15.0f), 15.0f, target_pos_p, item_pos_p); + return fg_p; +} + +static int Player_actor_check_putin_item(ACTOR* actorx, mActor_name_t* item_p, xyz_t* target_pos_p, xyz_t* item_pos_p) { + mActor_name_t* fg_p = Player_actor_Search_putin_item(actorx, target_pos_p, item_pos_p); + + if (fg_p != NULL) { + *item_p = *fg_p; + return TRUE; + } else { + *item_p = EMPTY_NO; + return FALSE; + } +} + +static mActor_name_t Player_actor_Get_itemNo_forWindow(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int main_index = player->now_main_index; + + if (main_index == mPlayer_INDEX_WAIT) { + mActor_name_t itemNo = EMPTY_NO; + xyz_t item_pos; + xyz_t target_pos; + + if (Player_actor_check_putin_item(actorx, &itemNo, &target_pos, &item_pos)) { + if (IS_ITEM_GRASS(itemNo) == FALSE) { + return itemNo; + } + } + } + + return EMPTY_NO; +} + +static int Player_actor_able_submenu_request_main_index(GAME* game) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + int res; + + if (player->requested_main_index_changed) { + int request_main_index = player->requested_main_index; + + if (mPlayer_MAIN_INDEX_VALID(request_main_index) != FALSE) { + // clang-format off + static const s8 data[] = { + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }; + // clang-format on + + request_main_index = data[request_main_index]; + return request_main_index; + } + } else { + return TRUE; + } + + return FALSE; +} + +static void Player_actor_Request_main_refuse_pickup_all(GAME* game, int refuse_pickup_knife_fork) { + ACTOR* actorx = GET_PLAYER_ACTOR_GAME_ACTOR(game); + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + player->refuse_pickup_knife_fork_flag = refuse_pickup_knife_fork; + mDemo_Request(mDemo_TYPE_REPORT, actorx, &Player_actor_Refuse_pickup_demo_ct); +} + +static int Player_actor_CheckAndRequest_main_pickup_all(GAME* game) { + int field_type = Common_Get(field_type); + + if ((field_type == mFI_FIELDTYPE2_FG || field_type == mFI_FIELDTYPE2_PLAYER_ROOM) && + Player_actor_CheckController_forPickup(game) && + Player_actor_check_request_main_priority(game, mPlayer_REQUEST_PRIORITY_8) > 0 && + Player_actor_check_cancel_request_change_proc_index(mPlayer_INDEX_PICKUP) == FALSE) { + int can_exchange = field_type == mFI_FIELDTYPE2_FG; + + if (mEv_CheckTitleDemo() <= 0) { + /* Check for picking up items in your house */ + if (Common_Get(clip).my_room_clip != NULL) { + mActor_name_t item = Common_Get(clip).my_room_clip->search_pickup_ftr_proc(game); + int item_slot = mPlib_Get_space_putin_item_forTICKET(&item); + + if (ITEM_NAME_GET_TYPE(item) == NAME_TYPE_ITEM1) { + xyz_t item_pos; + + Common_Get(clip).my_room_clip->leaf_start_pos_proc(&item_pos); + if (item_slot >= 0 || ITEM_IS_MYMANNIQUIN(item) || ITEM_IS_MYUMBRELLA(item) || can_exchange) { + if (Player_actor_request_main_pickup_jump(game, item_slot, item, &item_pos, FALSE, FALSE)) { + return TRUE; + } + } else { + Player_actor_Request_main_refuse_pickup_all(game, FALSE); + } + } else if (item != EMPTY_NO) { + xyz_t ftr_pos; + + Common_Get(clip).my_room_clip->leaf_start_pos_proc(&ftr_pos); + if (Common_Get(clip).my_room_clip->pickup_ftr_layer_proc() == mCoBG_LAYER1) { + if (item_slot >= 0 || ITEM_IS_MYMANNIQUIN(item) || ITEM_IS_MYUMBRELLA(item) || can_exchange) { + if (Player_actor_request_main_pickup_jump( + game, item_slot, mRmTp_FtrItemNo2Item1ItemNo(item, TRUE), &ftr_pos, TRUE, FALSE)) { + return TRUE; + } + } else { + Player_actor_Request_main_refuse_pickup_all(game, FALSE); + } + } else { + if (item_slot >= 0 || ITEM_IS_MYMANNIQUIN(item) || ITEM_IS_MYUMBRELLA(item) || can_exchange) { + if (Player_actor_request_main_pickup_furniture( + game, item_slot, mRmTp_FtrItemNo2Item1ItemNo(item, TRUE), &ftr_pos)) { + return TRUE; + } + } else { + Player_actor_Request_main_refuse_pickup_all(game, FALSE); + } + } + } + } + + /* Check for knife & fork */ + if (Common_Get(clip).htbl_clip != NULL) { + mActor_name_t htbl_item = Common_Get(clip).htbl_clip->search_pick_up_item_layer2_proc(game); + + if (htbl_item == ITM_KNIFE_AND_FORK) { + int item_slot = mPr_GetPossessionItemIdxWithCond(Now_Private, EMPTY_NO, mPr_ITEM_COND_NORMAL); + + if (item_slot >= 0) { + xyz_t pickup_pos = Common_Get(clip).htbl_clip->pickup_pos; + + if (Player_actor_request_main_pickup_jump(game, item_slot, htbl_item, &pickup_pos, FALSE, + TRUE)) { + return TRUE; + } + } else { + Player_actor_Request_main_refuse_pickup_all(game, TRUE); + } + } + } + } + + /* Check for outdoor items */ + { + ACTOR* actorx = GET_PLAYER_ACTOR_GAME_ACTOR(game); + mActor_name_t item; + xyz_t item_pos; + xyz_t target_pos; + + if (Player_actor_check_putin_item(actorx, &item, &target_pos, &item_pos)) { + int slot_idx = mPlib_Get_space_putin_item_forTICKET(&item); + + if (IS_ITEM_GRASS(item) != FALSE) { + if (Player_actor_request_main_remove_grass(game, &target_pos, &item_pos)) { + return TRUE; + } + } else { + mActor_name_t changed_item = ITEM_IS_SIGNBOARD(item) ? ITM_SIGNBOARD : item; + int item_is_signboard = item != changed_item; + + if (mEv_CheckTitleDemo() > 0) { + if (Player_actor_request_main_pickup(game, changed_item, &target_pos, &item_pos, -1, + item_is_signboard)) { + return TRUE; + } + } else { + if (slot_idx >= 0 || can_exchange) { + if (Player_actor_request_main_pickup(game, changed_item, &target_pos, &item_pos, slot_idx, + item_is_signboard)) { + return TRUE; + } + } else { + Player_actor_Request_main_refuse_pickup_all(game, FALSE); + } + } + } + } + } + } + + return FALSE; +} + +static int Player_actor_CheckScene_AbleSubmenu(void) { + int scene_no = Save_Get(scene_no); + + if (!(scene_no >= 0 && scene_no < SCENE_NUM)) { + return FALSE; + } else { + // clang-format off + static const s8 data[] = { + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + TRUE, + TRUE, + FALSE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + TRUE, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + FALSE, + TRUE, + TRUE, + }; + // clang-format on + + return data[scene_no]; + } +} + +/* Why does this function even exist? It returns FALSE for every player state. */ +static int Player_actor_check_cancel_event_without_priority(GAME* game) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + int main_index = player->now_main_index; + + if (mPlayer_MAIN_INDEX_VALID(main_index) != FALSE) { + // clang-format off + static const s8 data[] = { + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }; + // clang-format on + + return data[main_index]; + } + + return FALSE; +} + +static int Player_actor_Check_able_force_speak_label(GAME* game, u32 label) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + u32 able_force_speak_label = player->able_force_speak_label; + + if (able_force_speak_label == 0) { + return TRUE; + } + + if (able_force_speak_label == label) { + return TRUE; + } + + return FALSE; +} + +static void Player_actor_Reset_able_force_speak_label(ACTOR* actorx, int main_index) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (Player_actor_Check_is_demo_mode(main_index) == FALSE) { + player->able_force_speak_label = 0; + } +} + +static int Player_actor_CheckAndSet_UZAI_forNpc(ACTOR* actorx) { + if (actorx != NULL && actorx->part == ACTOR_PART_NPC) { + NPC_ACTOR* npc_actor = (NPC_ACTOR*)actorx; + Animal_c* animal = npc_actor->npc_info.animal; + + if (animal != NULL && + mNpc_GetAnimalMemoryIdx(&Now_Private->player_ID, animal->memories, ANIMAL_MEMORY_NUM) != -1) { + if (ITEM_NAME_GET_TYPE(actorx->npc_id) == NAME_TYPE_NPC && + (npc_actor->condition_info.demo_flg & aNPC_COND_DEMO_SKIP_UZAI_CHECK) == 0) { + npc_actor->uzai.counter++; + npc_actor->uzai.flag = TRUE; + } + } + + return TRUE; + } + + return FALSE; +} + +static int Player_actor_Check_stung_mosquito(GAME* game, u32 label) { + int main_index = GET_PLAYER_ACTOR_GAME(game)->now_main_index; + + switch (main_index) { + case mPlayer_INDEX_STUNG_MOSQUITO: { + u32 stung_label = GET_PLAYER_ACTOR_GAME(game)->requested_main_index_data.stung_mosquito.label; + + if (stung_label == label) { + return TRUE; + } + break; + } + case mPlayer_INDEX_NOTICE_MOSQUITO: { + u32 notice_label = GET_PLAYER_ACTOR_GAME(game)->requested_main_index_data.notice_mosquito.label; + + if (notice_label == label) { + return TRUE; + } + break; + } + } + + return FALSE; +} + +static void Player_actor_Reset_bee_chase(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + Common_Set(player_bee_chase_flag, FALSE); + if (player->bee_chase_bgm_flag) { + player->bee_chase_bgm_flag = FALSE; + mBGMPsComp_delete_ps_happening(BGM_BEE_CHASE, 0); + } +} + +static void Player_actor_Check_player_sunburn_ChangeDay(ACTOR* actorx) { + if (mEv_CheckTitleDemo() <= 0) { + mActor_name_t field_id = mFI_GetFieldId(); + + if (mFI_GET_TYPE(field_id) == mFI_FIELD_FG) { + mPr_sunburn_c* sunburn = &Now_Private->sunburn; + + if (sunburn->rank > 0) { + lbRTC_ymd_c now_ymd; + int days; + + mTM_set_renew_time(&now_ymd, Common_GetPointer(time.rtc_time)); + days = lbRTC_GetIntervalDays2(&sunburn->last_changed_date, &now_ymd); + if (days < 0) { + sunburn->last_changed_date = now_ymd; + } + } + } + } +} + +static void Player_actor_Check_player_sunburn_rankdown_interval(ACTOR* actorx) { + if (mEv_CheckTitleDemo() <= 0) { + mActor_name_t field_id = mFI_GetFieldId(); + + if (mFI_GET_TYPE(field_id) == mFI_FIELD_FG) { + mPr_sunburn_c* sunburn = &Now_Private->sunburn; + + if (sunburn->rank > 0) { + int rankdown_days = sunburn->rankdown_days; + + if (rankdown_days > 0) { + lbRTC_ymd_c now_ymd; + int days; + + mTM_set_renew_time(&now_ymd, Common_GetPointer(time.rtc_time)); + days = lbRTC_GetIntervalDays2(&sunburn->last_changed_date, &now_ymd); + if (days > 0) { + if (rankdown_days >= 2) { + lbRTC_time_c add_time = { 0, 0, 0, 1, 0, 0, 0 }; // @BUG - should be 'static' + lbRTC_time_c last_changed_time; + + mTM_ymd_2_time(&last_changed_time, &sunburn->last_changed_date); + lbRTC_Add_Date(&last_changed_time, &add_time); + mTM_set_renew_time(&sunburn->last_changed_date, &last_changed_time); + } + + if (days == 1) { + rankdown_days -= 1; + } else { + rankdown_days -= 2; + } + + if (rankdown_days < 0) { + rankdown_days = 0; + } + + sunburn->rankdown_days = rankdown_days; + } + } + } + } + } +} + +static void Player_actor_Check_player_sunburn_rankdown(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (mEv_CheckTitleDemo() <= 0) { + mActor_name_t field_id = mFI_GetFieldId(); + + if (mFI_GET_TYPE(field_id) == mFI_FIELD_FG) { + mPr_sunburn_c* sunburn = &Now_Private->sunburn; + + if (sunburn->rank > 0 && player->player_sunburn_rankdown == FALSE) { + lbRTC_ymd_c now_ymd; + int days; + int diff_days; + + mTM_set_renew_time(&now_ymd, Common_GetPointer(time.rtc_time)); + days = lbRTC_GetIntervalDays2(&sunburn->last_changed_date, &now_ymd); + diff_days = days - sunburn->rankdown_days; + if (diff_days > 0) { + player->player_sunburn_rankdown = TRUE; + } + } + } + } +} + +static void Player_actor_Check_player_sunburn_rankup(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (player->player_sunburn_rankup == FALSE && mEv_CheckTitleDemo() <= 0) { + mActor_name_t field_id = mFI_GetFieldId(); + + if (mFI_GET_TYPE(field_id) == mFI_FIELD_FG) { + if (mEv_CheckFirstIntro() == FALSE && mEnv_NowWeather() == mEnv_WEATHER_CLEAR) { + int item_kind = mPlib_Check_now_handin_item_kind(); + + /* Player can use umbrellas to prevent sunburn */ + if (mPlayer_ITEM_IS_UMBRELLA(item_kind) == FALSE) { + lbRTC_time_c* time_p = Common_GetPointer(time.rtc_time); + int hour = time_p->hour; + + if (!(hour >= 10 && hour < 17)) { + return; + } + + if (mFI_CheckInIsland() == FALSE) { + int month = time_p->month; + int day = time_p->day; + + /* Sunburn will occur in town between July 16th and September 15th */ + if (month != lbRTC_AUGUST) { + if (month == lbRTC_JULY) { + if (day < 16) { + return; + } + } else if (month == lbRTC_SEPTEMBER) { + if (day > 15) { + return; + } + } else { + return; + } + } + + { + mPr_sunburn_c* sunburn = &Now_Private->sunburn; + + if (sunburn->rank > 0 && sunburn->rankdown_days >= 2) { + return; + } + } + } + + if (player->player_sunburn_rankdown == FALSE) { + int last_sunburn_time = Common_Get(sunburn_time); + int max_sunburn_time = mFI_CheckInIsland() == FALSE ? (s16)mPlayer_SUNBURN_TIME_VILLAGE + : mPlayer_SUNBURN_TIME_ISLAND; + if (last_sunburn_time >= max_sunburn_time) { + player->player_sunburn_rankup = TRUE; + } + + Common_Set(sunburn_time, last_sunburn_time + 1); + } + } + } + } + } +} + +static int Player_actor_Set_player_sunburn_rankdown(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (player->player_sunburn_rankdown != FALSE) { + mPr_sunburn_c* sunburn = &Now_Private->sunburn; + lbRTC_ymd_c now_date; + int days; + int diff_days; + + mTM_set_renew_time(&now_date, Common_GetPointer(time.rtc_time)); + days = lbRTC_GetIntervalDays2(&sunburn->last_changed_date, &now_date); + diff_days = days - sunburn->rankdown_days; + + if (diff_days > 0) { + int i; + + for (i = 0; i < diff_days; i++) { + sunburn->rank--; + + if (sunburn->rank < 0) { + sunburn->rank = 0; + break; + } + } + + sunburn->last_changed_date = now_date; + return TRUE; + } + + player->player_sunburn_rankdown = FALSE; /* @BUG? - shouldn't this be set to false in the above case too? */ + } + + return FALSE; +} + +static int Player_actor_Set_player_sunburn_rankup(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (player->player_sunburn_rankup != FALSE) { + mPr_sunburn_c* sunburn = &Now_Private->sunburn; + lbRTC_ymd_c now_date; + + mTM_set_renew_time(&now_date, Common_GetPointer(time.rtc_time)); + sunburn->rank++; + if (sunburn->rank >= (mPlayer_SUNBURN_MAX_RANK + 1)) { + sunburn->rank = mPlayer_SUNBURN_MAX_RANK; + } + + sunburn->last_changed_date = now_date; + sunburn->rankdown_days = 2; + Common_Set(sunburn_time, 0); + player->player_sunburn_rankup = FALSE; + return TRUE; + } + + return FALSE; +} + +static void Player_actor_Check_player_sunburn_for_dt(ACTOR* actorx) { + Player_actor_Check_player_sunburn_ChangeDay(actorx); + Player_actor_Check_player_sunburn_rankdown_interval(actorx); + Player_actor_Check_player_sunburn_rankdown(actorx); + Player_actor_Set_player_sunburn_rankup(actorx); + Player_actor_Set_player_sunburn_rankdown(actorx); +} + +static void Player_actor_Check_player_sunburn_for_main(ACTOR* actorx) { + Player_actor_Check_player_sunburn_ChangeDay(actorx); + Player_actor_Check_player_sunburn_rankdown_interval(actorx); + Player_actor_Check_player_sunburn_rankdown(actorx); + Player_actor_Check_player_sunburn_rankup(actorx); +} + +static void Player_actor_Check_player_sunburn_for_ct(ACTOR* actorx) { + Player_actor_Check_player_sunburn_ChangeDay(actorx); + Player_actor_Check_player_sunburn_rankdown_interval(actorx); + Player_actor_Check_player_sunburn_rankdown(actorx); + Player_actor_Set_player_sunburn_rankdown(actorx); +} + +static void Player_actor_Check_player_change_color_for_main(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (player->change_color_request) { + player->change_color_request = FALSE; + if (player->change_color_flag) { + player->change_color_timer += 1.0f; + if (player->change_color_timer >= 79.68f) { + player->change_color_timer = 0.0f; + } + } else { + player->change_color_flag = TRUE; + player->change_color_timer = 0.0f; + } + } else { + if (player->change_color_flag) { + player->change_color_flag = FALSE; + } + } +} + +static int Player_actor_Check_InBlockRadioExercise(ACTOR* actorx) { + if (mEv_check_status(mEv_EVENT_MORNING_AEROBICS, mEv_STATUS_RUN) || + mEv_check_status(mEv_EVENT_SPORTS_FAIR_AEROBICS, mEv_STATUS_RUN)) { + int bx; + int bz; + + if (mFI_BlockKind2BkNum(&bx, &bz, mRF_BLOCKKIND_SHRINE)) { + int player_bx; + int player_bz; + + if (mFI_Wpos2BlockNum(&player_bx, &player_bz, actorx->world.position)) { + if (player_bx == bx && player_bz == bz) { + return TRUE; + } + } + } + } else { + /* Check if the aerobics radio is playing in the house */ + int field_type = Common_Get(field_type); + + if (field_type != mFI_FIELDTYPE2_FG && aMR_RadioBgmNow()) { + return TRUE; + } + } + + return FALSE; +} + +static int Player_actor_Check_AbleRadioExercise(ACTOR* actorx) { + /* Player must be in the same block as aerobics radio, or in a house room with one playing */ + if (Player_actor_Check_InBlockRadioExercise(actorx) == FALSE) { + return FALSE; + } + + /* Player must not be holding any item */ + if (mPlib_Check_now_handin_item() != FALSE) { + return FALSE; + } + + return TRUE; +} + +static int Player_actor_Get_RadioExerciseCommandRingBufferIndex(int base_idx, int ofs) { + base_idx += ofs; + if (base_idx >= mPlayer_RADIO_EXCERCISE_COMMAND_RING_BUFFER_SIZE) { + return base_idx - mPlayer_RADIO_EXCERCISE_COMMAND_RING_BUFFER_SIZE; + } else { + return base_idx; + } +} + +static s8 Player_actor_Get_RadioExerciseCommand(int base_idx, s8* command_ring_buffer_p, int ofs) { + int idx = Player_actor_Get_RadioExerciseCommandRingBufferIndex(base_idx, ofs); + + /* @BUG - this should probably be || idx >= mPlayer_RADIO_EXCERCISE_COMMAND_RING_BUFFER_SIZE */ + if (idx < 0 && idx < mPlayer_RADIO_EXCERCISE_COMMAND_RING_BUFFER_SIZE) { + idx = 0; + } + + return command_ring_buffer_p[idx]; +} + +static void Player_actor_Set_RadioExerciseCommandRingBuffer(ACTOR* actorx, s8 command) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int* buffer_idx_p = &player->radio_exercise_command_ring_buffer_index; + s8* ring_buffer_p = player->radio_exercise_command_ring_buffer; + s8* ring_buf_timer_p = &player->radio_exercise_ring_buffer_cmd_timer; + int now_buffer_idx = *buffer_idx_p; + + if (command >= 0) { + int cmd = Player_actor_Get_RadioExerciseCommand(0, ring_buffer_p, now_buffer_idx); + + if (cmd == command && !(*ring_buf_timer_p >= 50.0f)) { + (*ring_buf_timer_p)++; + return; + } + } + { + int new_buffer_idx = Player_actor_Get_RadioExerciseCommandRingBufferIndex(7, now_buffer_idx); + + *buffer_idx_p = new_buffer_idx; + ring_buffer_p[Player_actor_Get_RadioExerciseCommandRingBufferIndex(0, new_buffer_idx)] = command; + *ring_buf_timer_p = 0; + } +} + +static void Player_actor_Set_RadioExerciseCommand(ACTOR* actorx, GAME* game, int skip_input_flag) { + int command = -1; + + if (skip_input_flag == FALSE && Player_actor_Check_AbleRadioExercise(actorx)) { + command = Player_actor_CheckController_forRadio_exercise(game); + } + + Player_actor_Set_RadioExerciseCommandRingBuffer(actorx, command); +} + +static int Player_actor_Check_radio_exercise_command(ACTOR* actorx, int continue_idx, f32* timer_p) { + static s8 Player_actor_radio_exercise_command_key_data_type1[] = { 6, 0, 3 }; + static s8 Player_actor_radio_exercise_command_key_data_type2_1[] = { 1, 4, 3, 5, 2 }; + static s8 Player_actor_radio_exercise_command_key_data_type2_2[] = { 2, 5, 3, 4, 1 }; + static s8 Player_actor_radio_exercise_command_key_data_type3[] = { 3, 0, 3 }; + static s8 Player_actor_radio_exercise_command_key_data_type4_1_1[] = { 5, 0, 5 }; + static s8 Player_actor_radio_exercise_command_key_data_type4_1_2[] = { 7, 0, 5 }; + static s8 Player_actor_radio_exercise_command_key_data_type4_2_1[] = { 4, 0, 4 }; + static s8 Player_actor_radio_exercise_command_key_data_type4_2_2[] = { 8, 0, 4 }; + static s8 Player_actor_radio_exercise_command_key_data_type5_1_1[] = { 2, 0, 2 }; + static s8 Player_actor_radio_exercise_command_key_data_type5_1_2[] = { 1, 0, 2 }; + static s8 Player_actor_radio_exercise_command_key_data_type5_2_1[] = { 1, 0, 1 }; + static s8 Player_actor_radio_exercise_command_key_data_type5_2_2[] = { 2, 0, 1 }; + static s8 Player_actor_radio_exercise_command_key_data_type6_1_1[] = { 8, 0, 8 }; + static s8 Player_actor_radio_exercise_command_key_data_type6_1_2[] = { 4, 0, 8 }; + static s8 Player_actor_radio_exercise_command_key_data_type6_2_1[] = { 7, 0, 7 }; + static s8 Player_actor_radio_exercise_command_key_data_type6_2_2[] = { 5, 0, 7 }; + static s8 Player_actor_radio_exercise_command_key_data_type7_1[] = { 6, 8, 2, 5, 3, 4, 1, 7 }; + static s8 Player_actor_radio_exercise_command_key_data_type7_2[] = { 6, 7, 1, 4, 3, 5, 2, 8 }; + + // clang-format off + static s8* command_key_p_data[] = { + Player_actor_radio_exercise_command_key_data_type1, + Player_actor_radio_exercise_command_key_data_type2_1, + Player_actor_radio_exercise_command_key_data_type2_2, + Player_actor_radio_exercise_command_key_data_type3, + Player_actor_radio_exercise_command_key_data_type4_1_1, + Player_actor_radio_exercise_command_key_data_type4_1_2, + Player_actor_radio_exercise_command_key_data_type4_2_1, + Player_actor_radio_exercise_command_key_data_type4_2_2, + Player_actor_radio_exercise_command_key_data_type5_1_1, + Player_actor_radio_exercise_command_key_data_type5_1_2, + Player_actor_radio_exercise_command_key_data_type5_2_1, + Player_actor_radio_exercise_command_key_data_type5_2_2, + Player_actor_radio_exercise_command_key_data_type6_1_1, + Player_actor_radio_exercise_command_key_data_type6_1_2, + Player_actor_radio_exercise_command_key_data_type6_2_1, + Player_actor_radio_exercise_command_key_data_type6_2_2, + Player_actor_radio_exercise_command_key_data_type7_1, + Player_actor_radio_exercise_command_key_data_type7_2, + }; + // clang-format on + + // clang-format off + static int total_command_key_element_data[] = { + 3, + 5, + 5, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 8, + 8, + }; + // clang-format on + + // clang-format off + static s8 continue_command_data[] = { + -1, + 17, + 16, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + }; + // clang-format on + + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int continue_command; + s8* ring_buffer_p = player->radio_exercise_command_ring_buffer; + int ring_buffer_idx = player->radio_exercise_command_ring_buffer_index; + s8** key_data_table = command_key_p_data; + int* len_table = total_command_key_element_data; + int i; + + if (continue_idx >= 0) { + continue_command = continue_command_data[continue_idx]; + } else { + continue_command = -1; + } + + *timer_p = 0.0f; + for (i = 0; i < ARRAY_COUNT(command_key_p_data); i++) { + s8* data_p = &(*key_data_table)[(*len_table) - 1]; + + if (continue_command < 0 || i == continue_command) { + int j = 0; + int n = (*len_table) - 1; + + while (n >= 0) { + s8 cmd = Player_actor_Get_RadioExerciseCommand(j, ring_buffer_p, ring_buffer_idx); + + if (cmd != *data_p || cmd < 0) { + break; + } + + data_p--; + j++; + n--; + } + + if (n < 0) { + if (continue_command_data[i] >= 0) { + *timer_p = 6.0f; + } + + return i; + } + } + + len_table++; + key_data_table++; + } + + return -1; +} + +static int Player_actor_CheckAndRequest_main_radio_exercise_all(GAME* game, int skip_request_flag) { + ACTOR* actorx = GET_PLAYER_ACTOR_GAME_ACTOR(game); + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (Player_actor_Check_AbleRadioExercise(actorx) == FALSE) { + return FALSE; + } else { + int cmd_idx; + f32 timer; + + player->radio_exercise_cmd_timer -= 1.0f; + if (player->radio_exercise_cmd_timer < 0.0f) { + player->radio_exercise_cmd_timer = 0.0f; + } + + cmd_idx = Player_actor_Check_radio_exercise_command(actorx, player->radio_exercise_continue_cmd_idx, &timer); + if (cmd_idx >= 0) { + if (player->radio_exercise_continue_cmd_idx >= 0) { + if (player->radio_exercise_cmd_timer > 0.0f) { + player->radio_exercise_continue_cmd_idx = cmd_idx; + player->radio_exercise_cmd_timer = timer; + } + } else { + player->radio_exercise_continue_cmd_idx = cmd_idx; + player->radio_exercise_cmd_timer = timer; + } + } + + if (skip_request_flag == FALSE && player->radio_exercise_continue_cmd_idx >= 0) { + if (player->radio_exercise_cmd_timer <= 0.0f) { + if (Player_actor_request_main_radio_exercise_all(game, player->radio_exercise_continue_cmd_idx, 0.0f, + mPlayer_REQUEST_PRIORITY_4)) { + return TRUE; + } + } + } + } + + return FALSE; +} + +static void Player_actor_Set_old_sound_frame_counter(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + player->old_sound_frame_counter = sAdo_GetSoundFrameCounter(); +} + +static int Player_actor_check_able_change_camera_normal_index(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (Player_actor_Check_AbleRadioExercise(actorx)) { + return FALSE; + } + + if (mEv_CheckTitleDemo() <= 0 && mPlib_Check_scene_able_change_camera_pos()) { + int main_index = player->now_main_index; + + if (mPlayer_MAIN_INDEX_VALID(main_index) != FALSE) { + // clang-format off + static const s8 data[] = { + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }; + // clang-format on + + return data[main_index]; + } + } + + return FALSE; +} + +static void Player_actor_Set_Indoor_Camera_Index(ACTOR* actorx, GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + Camera2* camera = &play->camera; + + if (Player_actor_check_able_change_camera_normal_index(actorx)) { + int dist_add_idx = camera->indoor_distance_addition_idx; + int dir_add_idx = camera->indoor_direction_addition_idx; + + if (chkTrigger(BUTTON_CUP)) { + if ((dist_add_idx - 1) >= 0) { + camera->indoor_distance_addition_idx = dist_add_idx - 1; + Player_actor_sound_camera_move1(); + } + } else if (chkTrigger(BUTTON_CDOWN)) { + if ((dist_add_idx + 1) < 3) { + camera->indoor_distance_addition_idx = dist_add_idx + 1; + Player_actor_sound_camera_move2(); + } + } + + if (chkTrigger(BUTTON_CLEFT)) { + if ((dir_add_idx - 1) >= 0) { + camera->indoor_direction_addition_idx = dir_add_idx - 1; + Player_actor_sound_camera_move1(); + } + } else if (chkTrigger(BUTTON_CRIGHT)) { + if ((dir_add_idx + 1) < 3) { + camera->indoor_direction_addition_idx = dir_add_idx + 1; + Player_actor_sound_camera_move1(); + } + } + } +} diff --git a/src/m_submenu.c b/src/m_submenu.c index 1cb8bc59..4aac8803 100644 --- a/src/m_submenu.c +++ b/src/m_submenu.c @@ -8,720 +8,656 @@ #include "m_quest.h" #include "libultra/libultra.h" -static mSM_dlftbl_c SubmenuArea_dlftbl[mSM_DLF_NUM] = { - { NULL, 0, 0, 0, 0, 0, "submenu_ovl" }, - { NULL, 0, 0, 0, 0, 0, "player_actor" } -}; +static mSM_dlftbl_c SubmenuArea_dlftbl[mSM_DLF_NUM] = { { NULL, 0, 0, 0, 0, 0, "submenu_ovl" }, + { NULL, 0, 0, 0, 0, 0, "player_actor" } }; static mSM_dlftbl_c* SubmenuArea_visit = NULL; static void* SubmenuArea_allocp = NULL; extern int mSM_COLLECT_INSECT_GET(int idx) { - u32 ftr_idx = (0x2F2 << 2) + (idx << 2); - return (Common_Get(now_private)->furniture_collected_bitfield[ftr_idx >> 2 >> 5] & (1 << ((ftr_idx >> 2) & 0x1F))) != 0; + u32 ftr_idx = (0x2F2 << 2) + (idx << 2); + return (Common_Get(now_private)->furniture_collected_bitfield[ftr_idx >> 2 >> 5] & + (1 << ((ftr_idx >> 2) & 0x1F))) != 0; } extern void mSM_COLLECT_INSECT_SET(int idx) { - u32 ftr_idx = (0x2F2 << 2) + (idx << 2); - Common_Get(now_private)->furniture_collected_bitfield[ftr_idx >> 2 >> 5] |= (1 << ((ftr_idx >> 2) & 0x1F)); + u32 ftr_idx = (0x2F2 << 2) + (idx << 2); + Common_Get(now_private)->furniture_collected_bitfield[ftr_idx >> 2 >> 5] |= (1 << ((ftr_idx >> 2) & 0x1F)); } static int mSM_CHECK_ALL_INSECT_GET_SUB() { - int i; - int n = 0; + int i; + int n = 0; - for (i = 0; i < INSECT_ONLY_NUM; i++) { - if (mSM_COLLECT_INSECT_GET(i) != FALSE) { - n++; + for (i = 0; i < INSECT_ONLY_NUM; i++) { + if (mSM_COLLECT_INSECT_GET(i) != FALSE) { + n++; + } } - } - return n; + return n; } extern int mSM_CHECK_ALL_INSECT_GET() { - if (mSM_CHECK_ALL_INSECT_GET_SUB() == INSECT_ONLY_NUM) { - return TRUE; - } + if (mSM_CHECK_ALL_INSECT_GET_SUB() == INSECT_ONLY_NUM) { + return TRUE; + } - return FALSE; + return FALSE; } extern int mSM_CHECK_LAST_INSECT_GET(int idx) { - int res = FALSE; + int res = FALSE; - if (mSM_CHECK_ALL_INSECT_GET_SUB() == (INSECT_ONLY_NUM - 1) && mSM_COLLECT_INSECT_GET(idx) == FALSE) { - res = TRUE; - } + if (mSM_CHECK_ALL_INSECT_GET_SUB() == (INSECT_ONLY_NUM - 1) && mSM_COLLECT_INSECT_GET(idx) == FALSE) { + res = TRUE; + } - return res; + return res; } extern int mSM_COLLECT_FISH_GET(int idx) { - u32 ftr_idx = (0x31A << 2) + (idx << 2); - return (Common_Get(now_private)->furniture_collected_bitfield[ftr_idx >> 2 >> 5] & (1 << ((ftr_idx >> 2) & 0x1F))) != 0; + u32 ftr_idx = (0x31A << 2) + (idx << 2); + return (Common_Get(now_private)->furniture_collected_bitfield[ftr_idx >> 2 >> 5] & + (1 << ((ftr_idx >> 2) & 0x1F))) != 0; } extern void mSM_COLLECT_FISH_SET(int idx) { - u32 ftr_idx = (0x31A << 2) + (idx << 2); - Common_Get(now_private)->furniture_collected_bitfield[ftr_idx >> 2 >> 5] |= (1 << ((ftr_idx >> 2) & 0x1F)); + u32 ftr_idx = (0x31A << 2) + (idx << 2); + Common_Get(now_private)->furniture_collected_bitfield[ftr_idx >> 2 >> 5] |= (1 << ((ftr_idx >> 2) & 0x1F)); } static int mSM_CHECK_ALL_FISH_GET_SUB() { - int i; - int n = 0; + int i; + int n = 0; - for (i = 0; i < FISH_NUM; i++) { - if (mSM_COLLECT_FISH_GET(i) != FALSE) { - n++; + for (i = 0; i < FISH_NUM; i++) { + if (mSM_COLLECT_FISH_GET(i) != FALSE) { + n++; + } } - } - return n; + return n; } extern int mSM_CHECK_ALL_FISH_GET() { - if (mSM_CHECK_ALL_FISH_GET_SUB() == FISH_NUM) { - return TRUE; - } + if (mSM_CHECK_ALL_FISH_GET_SUB() == FISH_NUM) { + return TRUE; + } - return FALSE; + return FALSE; } extern int mSM_CHECK_LAST_FISH_GET(int idx) { - int res = FALSE; + int res = FALSE; - if (mSM_CHECK_ALL_FISH_GET_SUB() == (FISH_NUM - 1) && mSM_COLLECT_FISH_GET(idx) == FALSE) { - res = TRUE; - } + if (mSM_CHECK_ALL_FISH_GET_SUB() == (FISH_NUM - 1) && mSM_COLLECT_FISH_GET(idx) == FALSE) { + res = TRUE; + } - return res; + return res; } extern int SubmenuArea_IsPlayer() { - return SubmenuArea_visit == &SubmenuArea_dlftbl[mSM_DLF_PLAYER_ACTOR]; + return SubmenuArea_visit == &SubmenuArea_dlftbl[mSM_DLF_PLAYER_ACTOR]; } static void mSM_load_player_anime(GAME_PLAY* play) { - // stubbed + // stubbed } static void SubmenuArea_DoLink(mSM_dlftbl_c* dlftbl, Submenu* submenu, int dlf_idx) { - dlftbl->_00 = SubmenuArea_allocp; - dlftbl->_14 = 0; - SubmenuArea_visit = dlftbl; - submenu->overlay_address = dlftbl->_00; - submenu->next_overlay_address = dlftbl->_00; + dlftbl->_00 = SubmenuArea_allocp; + dlftbl->_14 = 0; + SubmenuArea_visit = dlftbl; + submenu->overlay_address = dlftbl->_00; + submenu->next_overlay_address = dlftbl->_00; } static void SubmenuArea_DoUnlink(mSM_dlftbl_c* dlftbl, Submenu* submenu) { - if (dlftbl->_00 != NULL) { - submenu->overlay_address = dlftbl->_00; - submenu->next_overlay_address = dlftbl->_00; - dlftbl->_14 = 0; - dlftbl->_00 = NULL; - SubmenuArea_visit = NULL; - } + if (dlftbl->_00 != NULL) { + submenu->overlay_address = dlftbl->_00; + submenu->next_overlay_address = dlftbl->_00; + dlftbl->_14 = 0; + dlftbl->_00 = NULL; + SubmenuArea_visit = NULL; + } } static int mSM_ovlptr_dllcnv_sub(void* proc, mSM_dlftbl_c* dlftbl, Submenu* submenu, int dlf_idx) { - if (dlf_idx == mSM_DLF_SUBMENU_OVL || dlf_idx == mSM_DLF_PLAYER_ACTOR) { - SubmenuArea_DoLink(dlftbl, submenu, dlf_idx); - return TRUE; - } + if (dlf_idx == mSM_DLF_SUBMENU_OVL || dlf_idx == mSM_DLF_PLAYER_ACTOR) { + SubmenuArea_DoLink(dlftbl, submenu, dlf_idx); + return TRUE; + } - return FALSE; + return FALSE; } extern void* mSM_ovlptr_dllcnv(void* proc, Submenu* submenu, int dlf_idx) { - if (SubmenuArea_visit != NULL) { - return; // ?? - } - else if (mSM_ovlptr_dllcnv_sub(proc, SubmenuArea_dlftbl, submenu, dlf_idx) == FALSE) { - return NULL; - } + if (SubmenuArea_visit != NULL) { + return; // ?? + } else if (mSM_ovlptr_dllcnv_sub(proc, SubmenuArea_dlftbl, submenu, dlf_idx) == FALSE) { + return NULL; + } - return proc; + return proc; } extern void mSM_submenu_ovlptr_init(GAME_PLAY* play) { - SubmenuArea_allocp = (void*)1; - SubmenuArea_visit = NULL; + SubmenuArea_allocp = (void*)1; + SubmenuArea_visit = NULL; } extern void mSM_submenu_ovlptr_cleanup(Submenu* submenu) { - if (SubmenuArea_visit != NULL) { - SubmenuArea_DoUnlink(SubmenuArea_visit, submenu); - SubmenuArea_visit = NULL; - } + if (SubmenuArea_visit != NULL) { + SubmenuArea_DoUnlink(SubmenuArea_visit, submenu); + SubmenuArea_visit = NULL; + } - SubmenuArea_allocp = NULL; + SubmenuArea_allocp = NULL; } extern void load_player(Submenu* submenu) { - mSM_dlftbl_c* dlftbl = &SubmenuArea_dlftbl[mSM_DLF_PLAYER_ACTOR]; + mSM_dlftbl_c* dlftbl = &SubmenuArea_dlftbl[mSM_DLF_PLAYER_ACTOR]; - if (SubmenuArea_visit != dlftbl) { - if (SubmenuArea_visit != NULL) { - SubmenuArea_DoUnlink(SubmenuArea_visit, submenu); + if (SubmenuArea_visit != dlftbl) { + if (SubmenuArea_visit != NULL) { + SubmenuArea_DoUnlink(SubmenuArea_visit, submenu); + } + + SubmenuArea_DoLink(dlftbl, submenu, mSM_DLF_PLAYER_ACTOR); } - - SubmenuArea_DoLink(dlftbl, submenu, mSM_DLF_PLAYER_ACTOR); - } } extern void mSM_submenu_ct(Submenu* submenu) { - bzero(submenu, sizeof(Submenu)); - submenu->process_status = mSM_PROCESS_WAIT; - submenu->wait_timer = 0; + bzero(submenu, sizeof(Submenu)); + submenu->process_status = mSM_PROCESS_WAIT; + submenu->wait_timer = 0; - if (Common_Get(submenu_disabled) == TRUE) { - submenu->disable_start_btn_flag = TRUE; - Common_Set(submenu_disabled, FALSE); - } + if (Common_Get(submenu_disabled) == TRUE) { + submenu->start_refuse = TRUE; + Common_Set(submenu_disabled, FALSE); + } - submenu->move_proc = (SUBMENU_PROC)&none_proc1; - submenu->draw_proc = (SUBMENU_GAME_PROC)&none_proc1; + submenu->move_proc = (SUBMENU_PROC)&none_proc1; + submenu->draw_proc = (SUBMENU_GAME_PROC)&none_proc1; } extern void mSM_submenu_dt(Submenu* submenu) { - // stubbed + // stubbed } extern void mSM_open_submenu(Submenu* submenu, int type, int arg0, int arg1) { - mSM_open_submenu_new2(submenu, type, arg0, arg1, NULL, 0); + mSM_open_submenu_new2(submenu, type, arg0, arg1, NULL, 0); } extern void mSM_open_submenu_new(Submenu* submenu, int type, int arg0, int arg1, void* arg2) { - mSM_open_submenu_new2(submenu, type, arg0, arg1, arg2, 0); + mSM_open_submenu_new2(submenu, type, arg0, arg1, arg2, 0); } extern void mSM_open_submenu_new2(Submenu* submenu, int type, int arg0, int arg1, void* arg2, int arg3) { - submenu->menu_type = type; - submenu->param0 = arg0; - submenu->param1 = arg1; - submenu->param2 = arg2; - submenu->param3 = arg3; + submenu->menu_type = type; + submenu->param0 = arg0; + submenu->param1 = arg1; + submenu->param2 = arg2; + submenu->param3 = arg3; } static void mSM_Reset_player_btn_type1(GAME_PLAY* play) { - PLAYER_ACTOR* player = GET_PLAYER_ACTOR(play); + PLAYER_ACTOR* player = GET_PLAYER_ACTOR(play); - if (player != NULL) { - player->a_btn_pressed = FALSE; - player->a_btn_triggers_submenu = TRUE; - } + if (player != NULL) { + player->a_btn_pressed = FALSE; + player->a_btn_triggers_submenu = TRUE; + } } static void mSM_Reset_player_btn_type2(GAME_PLAY* play) { - PLAYER_ACTOR* player = GET_PLAYER_ACTOR(play); + PLAYER_ACTOR* player = GET_PLAYER_ACTOR(play); - if (player != NULL) { - player->a_btn_triggers_submenu = TRUE; - } + if (player != NULL) { + player->a_btn_triggers_submenu = TRUE; + } } static int mSM_check_open_map_new(GAME_PLAY* play) { - PLAYER_ACTOR* player = GET_PLAYER_ACTOR(play); - int open_map = FALSE; - int bx; - int bz; + PLAYER_ACTOR* player = GET_PLAYER_ACTOR(play); + int open_map = FALSE; + int bx; + int bz; - if (chkTrigger(mSM_MAP_BUTTON) && Common_Get(map_flag) == TRUE) { - open_map = TRUE; - } + if (chkTrigger(mSM_MAP_BUTTON) && Common_Get(map_flag) == TRUE) { + open_map = TRUE; + } - if (open_map == FALSE) { - return FALSE; - } + if (open_map == FALSE) { + return FALSE; + } - if (player == NULL) { - return FALSE; - } + if (player == NULL) { + return FALSE; + } - if (Save_Get(scene_no) == SCENE_COTTAGE_MY || Save_Get(scene_no) == SCENE_COTTAGE_NPC) { - return FALSE; - } + if (Save_Get(scene_no) == SCENE_COTTAGE_MY || Save_Get(scene_no) == SCENE_COTTAGE_NPC) { + return FALSE; + } - mFI_Wpos2BlockNum(&bx, &bz, player->actor_class.world.position); - return mFI_CheckBlockKind_OR(bx, bz, mRF_BLOCKKIND_OCEAN) == FALSE; + mFI_Wpos2BlockNum(&bx, &bz, player->actor_class.world.position); + return mFI_CheckBlockKind_OR(bx, bz, mRF_BLOCKKIND_OCEAN) == FALSE; } extern void mSM_submenu_ctrl(GAME_PLAY* play) { - Submenu* submenu = &play->submenu; - int open_inventory; + Submenu* submenu = &play->submenu; + int open_inventory; - if (submenu->process_status != mSM_PROCESS_WAIT) { - return; - } - - if (play->fb_fade_type != 0) { - return; - } - - if (play->fb_wipe_mode != 0) { - return; - } - - open_inventory = FALSE; - if (chkTrigger(mSM_INV_BUTTON_0) || chkTrigger(mSM_INV_BUTTON_1)) { - open_inventory = TRUE; - } - - if ( - ( - (open_inventory && Common_Get(reset_flag) == FALSE) || - (mSM_check_open_map_new(play) == TRUE && Common_Get(reset_flag) == FALSE) - ) && - submenu->disable_start_btn_flag == FALSE && submenu->disable_start_btn_timer == 0 && - mPlib_able_submenu_type1((GAME*)play) && mEv_CheckFirstIntro() == FALSE - ) { - if (open_inventory) { - mSM_open_submenu(submenu, mSM_OVL_INVENTORY, 0, 0); - } - else { - mSM_open_submenu(submenu, mSM_OVL_MAP, 1, 0); + if (submenu->process_status != mSM_PROCESS_WAIT) { + return; } - mSM_Reset_player_btn_type2(play); - } - else { - PLAYER_ACTOR* player = GET_PLAYER_ACTOR(play); + if (play->fb_fade_type != 0) { + return; + } - if ( - player != NULL && player->a_btn_pressed == TRUE && - Common_Get(reset_flag) == FALSE && submenu->disable_start_btn_flag == FALSE && - submenu->disable_start_btn_timer == 0 && mPlib_able_submenu_type1((GAME*)play) - ) { - s16 y_dir = player->actor_class.shape_info.rotation.y; - int dir; - - y_dir -= -0x8000; - dir = ABS(y_dir); + if (play->fb_wipe_mode != 0) { + return; + } - if (dir < DEG2SHORT_ANGLE(45.0f)) { - switch (player->item_in_front) { - case MESSAGE_BOARD1: - case MESSAGE_BOARD0: - mSM_open_submenu(submenu, mSM_OVL_NOTICE, 0, 0); - mSM_Reset_player_btn_type1(play); - break; - case MAP_BOARD1: - case MAP_BOARD0: - mSM_open_submenu(submenu, mSM_OVL_MAP, 0, 0); - mSM_Reset_player_btn_type1(play); - break; + open_inventory = FALSE; + if (chkTrigger(mSM_INV_BUTTON_0) || chkTrigger(mSM_INV_BUTTON_1)) { + open_inventory = TRUE; + } + + if (((open_inventory && Common_Get(reset_flag) == FALSE) || + (mSM_check_open_map_new(play) == TRUE && Common_Get(reset_flag) == FALSE)) && + submenu->start_refuse == FALSE && submenu->start_refuse_timer == 0 && mPlib_able_submenu_type1((GAME*)play) && + mEv_CheckFirstIntro() == FALSE) { + if (open_inventory) { + mSM_open_submenu(submenu, mSM_OVL_INVENTORY, 0, 0); + } else { + mSM_open_submenu(submenu, mSM_OVL_MAP, 1, 0); } - } - } - } - if (submenu->menu_type != mSM_OVL_NONE) { - submenu->process_status = mSM_PROCESS_PREWAIT; - submenu->mode = 1; - SetGameFrame(1); - } + mSM_Reset_player_btn_type2(play); + } else { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR(play); + + if (player != NULL && player->a_btn_pressed == TRUE && Common_Get(reset_flag) == FALSE && + submenu->start_refuse == FALSE && submenu->start_refuse_timer == 0 && + mPlib_able_submenu_type1((GAME*)play)) { + s16 y_dir = player->actor_class.shape_info.rotation.y; + int dir; + + y_dir -= -0x8000; + dir = ABS(y_dir); + + if (dir < DEG2SHORT_ANGLE(45.0f)) { + switch (player->item_in_front) { + case MESSAGE_BOARD1: + case MESSAGE_BOARD0: + mSM_open_submenu(submenu, mSM_OVL_NOTICE, 0, 0); + mSM_Reset_player_btn_type1(play); + break; + case MAP_BOARD1: + case MAP_BOARD0: + mSM_open_submenu(submenu, mSM_OVL_MAP, 0, 0); + mSM_Reset_player_btn_type1(play); + break; + } + } + } + } + + if (submenu->menu_type != mSM_OVL_NONE) { + submenu->process_status = mSM_PROCESS_PREWAIT; + submenu->mode = 1; + SetGameFrame(1); + } } static void mSM_move_Wait(Submenu* submenu) { - if (submenu->wait_timer != 0) { - submenu->wait_timer--; - } + if (submenu->wait_timer != 0) { + submenu->wait_timer--; + } - if (submenu->disable_start_btn_timer != 0) { - submenu->disable_start_btn_timer--; - } + if (submenu->start_refuse_timer != 0) { + submenu->start_refuse_timer--; + } } static void mSM_move_PREWait(Submenu* submenu) { - if (submenu->mode >= 3) { - submenu->process_status = mSM_PROCESS_LINKWAIT; - } + if (submenu->mode >= 3) { + submenu->process_status = mSM_PROCESS_LINKWAIT; + } } static void mSM_move_LINKWait(Submenu* submenu) { - Submenu_Item_c* item; - mSM_dlftbl_c* dlftbl = &SubmenuArea_dlftbl[mSM_DLF_SUBMENU_OVL]; - int i; + Submenu_Item_c* item; + mSM_dlftbl_c* dlftbl = &SubmenuArea_dlftbl[mSM_DLF_SUBMENU_OVL]; + int i; - if (SubmenuArea_visit != dlftbl) { - if (SubmenuArea_visit != NULL) { - SubmenuArea_DoUnlink(SubmenuArea_visit, submenu); + if (SubmenuArea_visit != dlftbl) { + if (SubmenuArea_visit != NULL) { + SubmenuArea_DoUnlink(SubmenuArea_visit, submenu); + } + + SubmenuArea_DoLink(dlftbl, submenu, mSM_DLF_SUBMENU_OVL); + submenu->move_proc = (SUBMENU_PROC)mSM_ovlptr_dllcnv(&mSM_menu_ovl_init, submenu, mSM_DLF_SUBMENU_OVL); + submenu->draw_proc = (SUBMENU_GAME_PROC)&none_proc1; + submenu->process_status = mSM_PROCESS_PLAY; + submenu->open_flag = TRUE; + submenu->after_mode = 7; + submenu->unk_164 = 0; + mMl_clear_mail(&submenu->mail); + submenu->item_p = &submenu->items[0]; + submenu->item_num = mPr_POCKETS_SLOT_COUNT; + + item = submenu->item_p; + for (i = 0; i < submenu->item_num; i++) { + item->item = EMPTY_NO; + item->slot_no = mPr_POCKETS_SLOT_COUNT; + item++; + } + + if (submenu->mode != 4) { + if ((submenu->menu_type == mSM_OVL_LEDIT && submenu->param0 == 0) || + Common_Get(now_private)->gender == mPr_SEX_MALE) { + sAdo_SpecChange(5); + } else { + sAdo_SpecChange(6); + } + + sAdo_SetVoiceMode(0); + } } - - SubmenuArea_DoLink(dlftbl, submenu, mSM_DLF_SUBMENU_OVL); - submenu->move_proc = (SUBMENU_PROC)mSM_ovlptr_dllcnv(&mSM_menu_ovl_init, submenu, mSM_DLF_SUBMENU_OVL); - submenu->draw_proc = (SUBMENU_GAME_PROC)&none_proc1; - submenu->process_status = mSM_PROCESS_PLAY; - submenu->open_flag = TRUE; - submenu->after_mode = 7; - submenu->unk_164 = 0; - mMl_clear_mail(&submenu->mail); - submenu->item_p = &submenu->items[0]; - submenu->item_num = mPr_POCKETS_SLOT_COUNT; - - item = submenu->item_p; - for (i = 0; i < submenu->item_num; i++) { - item->item = EMPTY_NO; - item->slot_no = mPr_POCKETS_SLOT_COUNT; - item++; - } - - if (submenu->mode != 4) { - if ( - (submenu->menu_type == mSM_OVL_LEDIT && submenu->param0 == 0) || - Common_Get(now_private)->gender == mPr_SEX_MALE - ) { - sAdo_SpecChange(5); - } - else { - sAdo_SpecChange(6); - } - - sAdo_SetVoiceMode(0); - } - } } static void mSM_move_Play(Submenu* submenu) { - (*submenu->move_proc)(submenu); + (*submenu->move_proc)(submenu); } static void mSM_move_End(Submenu* submenu) { - mSM_dlftbl_c* dlftbl = &SubmenuArea_dlftbl[mSM_DLF_SUBMENU_OVL]; - GAME_PLAY* play = (GAME_PLAY*)gamePT; + mSM_dlftbl_c* dlftbl = &SubmenuArea_dlftbl[mSM_DLF_SUBMENU_OVL]; + GAME_PLAY* play = (GAME_PLAY*)gamePT; - (*submenu->move_proc)(submenu); - submenu->process_status = mSM_PROCESS_WAIT; - submenu->menu_type = mSM_OVL_NONE; - submenu->wait_timer = 2; - submenu->open_flag = FALSE; - SetGameFrame(1); + (*submenu->move_proc)(submenu); + submenu->process_status = mSM_PROCESS_WAIT; + submenu->menu_type = mSM_OVL_NONE; + submenu->wait_timer = 2; + submenu->open_flag = FALSE; + SetGameFrame(1); - if (submenu->mode != 4) { - mMsg_Window_c* msg_win = mMsg_Get_base_window_p(); - submenu->mode = 0; - mSc_dmacopy_all_exchange_bank(&play->object_exchange); - SubmenuArea_DoUnlink(dlftbl, submenu); - load_player(submenu); - mSM_load_player_anime(play); - submenu->disable_start_btn_timer = 1; + if (submenu->mode != 4) { + mMsg_Window_c* msg_win = mMsg_Get_base_window_p(); + submenu->mode = 0; + mSc_dmacopy_all_exchange_bank(&play->object_exchange); + SubmenuArea_DoUnlink(dlftbl, submenu); + load_player(submenu); + mSM_load_player_anime(play); + submenu->start_refuse_timer = 1; - if (submenu->after_mode == 12) { - mPlib_request_main_demo_wait_from_submenu((ACTOR*)submenu->overlay->menu_info[mSM_OVL_MSCORE].data2); + if (submenu->after_mode == 12) { + mPlib_request_main_demo_wait_from_submenu((ACTOR*)submenu->overlay->menu_info[mSM_OVL_MSCORE].data2); + } + + if (mMsg_Check_main_hide(msg_win) == FALSE && mMsg_Check_not_series_main_wait(msg_win)) { + mMsg_sound_spec_change_voice(msg_win); + } } - - if (mMsg_Check_main_hide(msg_win) == FALSE && mMsg_Check_not_series_main_wait(msg_win)) { - mMsg_sound_spec_change_voice(msg_win); - } - } } extern void mSM_submenu_move(Submenu* submenu) { - static SUBMENU_PROC move_proc[mSM_PROCESS_NUM] = { - &mSM_move_Wait, - &mSM_move_PREWait, - &mSM_move_LINKWait, - &mSM_move_Play, - &mSM_move_End - }; + static SUBMENU_PROC move_proc[mSM_PROCESS_NUM] = { &mSM_move_Wait, &mSM_move_PREWait, &mSM_move_LINKWait, + &mSM_move_Play, &mSM_move_End }; - (*move_proc[submenu->process_status])(submenu); + (*move_proc[submenu->process_status])(submenu); } extern void mSM_submenu_draw(Submenu* submenu, GAME* game) { - if ( - submenu->mode >= 3 && - submenu->process_status == mSM_PROCESS_PLAY && - SubmenuArea_visit == &SubmenuArea_dlftbl[mSM_DLF_SUBMENU_OVL] - ) { - (*submenu->draw_proc)(submenu, game); - } + if (submenu->mode >= 3 && submenu->process_status == mSM_PROCESS_PLAY && + SubmenuArea_visit == &SubmenuArea_dlftbl[mSM_DLF_SUBMENU_OVL]) { + (*submenu->draw_proc)(submenu, game); + } } static int mSM_check_item_for_furniture(int slot_no, int param_2) { - Private_c* priv = Common_Get(now_private); - mActor_name_t item = priv->inventory.pockets[slot_no]; - int cat = ITEM_NAME_GET_CAT(item); - int res = FALSE; + Private_c* priv = Common_Get(now_private); + mActor_name_t item = priv->inventory.pockets[slot_no]; + int cat = ITEM_NAME_GET_CAT(item); + int res = FALSE; - if ( - item != EMPTY_NO && - mPr_GET_ITEM_COND(priv->inventory.item_conditions, slot_no) == mPr_ITEM_COND_NORMAL && - ITEM_NAME_GET_TYPE(item) == NAME_TYPE_ITEM1 && - cat != ITEM1_CAT_FISH && - cat != ITEM1_CAT_KABU && - cat != ITEM1_CAT_INSECT && - item != ITM_KNIFE_AND_FORK && - !(item >= ITM_EXCERCISE_CARD00 && item <= ITM_EXCERCISE_CARD12) - ) { - res = TRUE; - } + if (item != EMPTY_NO && mPr_GET_ITEM_COND(priv->inventory.item_conditions, slot_no) == mPr_ITEM_COND_NORMAL && + ITEM_NAME_GET_TYPE(item) == NAME_TYPE_ITEM1 && cat != ITEM1_CAT_FISH && cat != ITEM1_CAT_KABU && + cat != ITEM1_CAT_INSECT && item != ITM_KNIFE_AND_FORK && + !(item >= ITM_EXCERCISE_CARD00 && item <= ITM_EXCERCISE_CARD12)) { + res = TRUE; + } - return res; + return res; } static int mSM_check_item_for_quest(int slot_no, int param_2) { - Private_c* priv = Common_Get(now_private); - mActor_name_t item = priv->inventory.pockets[slot_no]; - int res = FALSE; + Private_c* priv = Common_Get(now_private); + mActor_name_t item = priv->inventory.pockets[slot_no]; + int res = FALSE; - if ( - item != EMPTY_NO && - !(item >= ITM_EXCERCISE_CARD00 && item <= ITM_EXCERCISE_CARD12) && - item != ITM_KNIFE_AND_FORK && - !(item >= ITM_SPIRIT0 && item <= ITM_SPIRIT4) - ) { - res = TRUE; - } + if (item != EMPTY_NO && !(item >= ITM_EXCERCISE_CARD00 && item <= ITM_EXCERCISE_CARD12) && + item != ITM_KNIFE_AND_FORK && !(item >= ITM_SPIRIT0 && item <= ITM_SPIRIT4)) { + res = TRUE; + } - return res; + return res; } static int mSM_check_item_for_sell(int slot_no, int param_2) { - Private_c* priv = Common_Get(now_private); - mActor_name_t item = priv->inventory.pockets[slot_no]; - int res = FALSE; + Private_c* priv = Common_Get(now_private); + mActor_name_t item = priv->inventory.pockets[slot_no]; + int res = FALSE; - if ( - item != EMPTY_NO && - mPr_GET_ITEM_COND(priv->inventory.item_conditions, slot_no) == mPr_ITEM_COND_NORMAL && - (ITEM_NAME_GET_TYPE(item) != NAME_TYPE_ITEM1 || ITEM_NAME_GET_CAT(item) != ITEM1_CAT_MONEY) && - !(item >= ITM_EXCERCISE_CARD00 && item <= ITM_EXCERCISE_CARD12) && - item != ITM_KNIFE_AND_FORK && - !(item >= ITM_SPIRIT0 && item <= ITM_SPIRIT4) - ) { - res = TRUE; - } + if (item != EMPTY_NO && mPr_GET_ITEM_COND(priv->inventory.item_conditions, slot_no) == mPr_ITEM_COND_NORMAL && + (ITEM_NAME_GET_TYPE(item) != NAME_TYPE_ITEM1 || ITEM_NAME_GET_CAT(item) != ITEM1_CAT_MONEY) && + !(item >= ITM_EXCERCISE_CARD00 && item <= ITM_EXCERCISE_CARD12) && item != ITM_KNIFE_AND_FORK && + !(item >= ITM_SPIRIT0 && item <= ITM_SPIRIT4)) { + res = TRUE; + } - return res; + return res; } static int mSM_check_item_for_give(int slot_no, int param_2) { - Private_c* priv = Common_Get(now_private); - mActor_name_t item = priv->inventory.pockets[slot_no]; - int res = FALSE; + Private_c* priv = Common_Get(now_private); + mActor_name_t item = priv->inventory.pockets[slot_no]; + int res = FALSE; - if ( - item != EMPTY_NO && - mPr_GET_ITEM_COND(priv->inventory.item_conditions, slot_no) == mPr_ITEM_COND_NORMAL && - !(item >= ITM_EXCERCISE_CARD00 && item <= ITM_EXCERCISE_CARD12) && - item != ITM_KNIFE_AND_FORK && - !(item >= ITM_SPIRIT0 && item <= ITM_SPIRIT4) - ) { - res = TRUE; - } + if (item != EMPTY_NO && mPr_GET_ITEM_COND(priv->inventory.item_conditions, slot_no) == mPr_ITEM_COND_NORMAL && + !(item >= ITM_EXCERCISE_CARD00 && item <= ITM_EXCERCISE_CARD12) && item != ITM_KNIFE_AND_FORK && + !(item >= ITM_SPIRIT0 && item <= ITM_SPIRIT4)) { + res = TRUE; + } - return res; + return res; } static int mSM_check_item_for_take(int slot_no, int param_2) { - Private_c* priv = Common_Get(now_private); - mActor_name_t item = priv->inventory.pockets[slot_no]; - int cat = ITEM_NAME_GET_CAT(item); - int res = FALSE; + Private_c* priv = Common_Get(now_private); + mActor_name_t item = priv->inventory.pockets[slot_no]; + int cat = ITEM_NAME_GET_CAT(item); + int res = FALSE; - if ( - item != EMPTY_NO && - mPr_GET_ITEM_COND(priv->inventory.item_conditions, slot_no) == mPr_ITEM_COND_NORMAL && - !(item >= ITM_EXCERCISE_CARD00 && item <= ITM_EXCERCISE_CARD12) && - item != ITM_KNIFE_AND_FORK && - !(item >= ITM_SPIRIT0 && item <= ITM_SPIRIT4) && - ( - param_2 == 0 || - ( - ITEM_NAME_GET_TYPE(item) == NAME_TYPE_ITEM1 && - ((cat == ITEM1_CAT_FISH && param_2 == 1) || - (cat == ITEM1_CAT_INSECT && param_2 == 2)) - ) - ) - ) { - res = TRUE; - } + if (item != EMPTY_NO && mPr_GET_ITEM_COND(priv->inventory.item_conditions, slot_no) == mPr_ITEM_COND_NORMAL && + !(item >= ITM_EXCERCISE_CARD00 && item <= ITM_EXCERCISE_CARD12) && item != ITM_KNIFE_AND_FORK && + !(item >= ITM_SPIRIT0 && item <= ITM_SPIRIT4) && + (param_2 == 0 || (ITEM_NAME_GET_TYPE(item) == NAME_TYPE_ITEM1 && + ((cat == ITEM1_CAT_FISH && param_2 == 1) || (cat == ITEM1_CAT_INSECT && param_2 == 2))))) { + res = TRUE; + } - return res; + return res; } static int mSM_check_item_for_minidisk(int slot_no, int param_2) { - Private_c* priv = Common_Get(now_private); - mActor_name_t item = priv->inventory.pockets[slot_no]; + Private_c* priv = Common_Get(now_private); + mActor_name_t item = priv->inventory.pockets[slot_no]; - if ( - mPr_GET_ITEM_COND(priv->inventory.item_conditions, slot_no) == mPr_ITEM_COND_NORMAL && - ITEM_NAME_GET_TYPE(item) == NAME_TYPE_ITEM1 && - ITEM_NAME_GET_CAT(item) == ITEM1_CAT_MINIDISK - ) { - return TRUE; - } + if (mPr_GET_ITEM_COND(priv->inventory.item_conditions, slot_no) == mPr_ITEM_COND_NORMAL && + ITEM_NAME_GET_TYPE(item) == NAME_TYPE_ITEM1 && ITEM_NAME_GET_CAT(item) == ITEM1_CAT_MINIDISK) { + return TRUE; + } - return FALSE; + return FALSE; } static int mSM_check_item_for_shrine(int slot_no, int param_2) { - Private_c* priv = Common_Get(now_private); - if ( - mPr_GET_ITEM_COND(priv->inventory.item_conditions, slot_no) == mPr_ITEM_COND_QUEST && - mQst_CheckLimitbyPossessionIdx(slot_no) - ) { - return TRUE; - } + Private_c* priv = Common_Get(now_private); + if (mPr_GET_ITEM_COND(priv->inventory.item_conditions, slot_no) == mPr_ITEM_COND_QUEST && + mQst_CheckLimitbyPossessionIdx(slot_no)) { + return TRUE; + } - return FALSE; + return FALSE; } static int mSM_check_item_for_entrust(int slot_no, int param_2) { - Private_c* priv = Common_Get(now_private); - mActor_name_t item = priv->inventory.pockets[slot_no]; - int res = FALSE; + Private_c* priv = Common_Get(now_private); + mActor_name_t item = priv->inventory.pockets[slot_no]; + int res = FALSE; - if ( - item == EMPTY_NO || - mPr_GET_ITEM_COND(priv->inventory.item_conditions, slot_no) == mPr_ITEM_COND_NORMAL && - (ITEM_NAME_GET_TYPE(item) != NAME_TYPE_ITEM1 || ITEM_NAME_GET_CAT(item) != ITEM1_CAT_MONEY) && - !(item >= ITM_EXCERCISE_CARD00 && item <= ITM_EXCERCISE_CARD12) && - item != ITM_KNIFE_AND_FORK && - !(item >= ITM_SPIRIT0 && item <= ITM_SPIRIT4) - ) { - res = TRUE; - } + if (item == EMPTY_NO || + mPr_GET_ITEM_COND(priv->inventory.item_conditions, slot_no) == mPr_ITEM_COND_NORMAL && + (ITEM_NAME_GET_TYPE(item) != NAME_TYPE_ITEM1 || ITEM_NAME_GET_CAT(item) != ITEM1_CAT_MONEY) && + !(item >= ITM_EXCERCISE_CARD00 && item <= ITM_EXCERCISE_CARD12) && item != ITM_KNIFE_AND_FORK && + !(item >= ITM_SPIRIT0 && item <= ITM_SPIRIT4)) { + res = TRUE; + } - return res; + return res; } static int mSM_check_item_for_exchange(int slot_no, int exchange_id) { - int res = FALSE; - Private_c* priv = Common_Get(now_private); - mActor_name_t item = priv->inventory.pockets[slot_no]; + int res = FALSE; + Private_c* priv = Common_Get(now_private); + mActor_name_t item = priv->inventory.pockets[slot_no]; - if ( - item != EMPTY_NO && mPr_GET_ITEM_COND(priv->inventory.item_conditions, slot_no) == mPr_ITEM_COND_NORMAL && - item != ITM_SIGNBOARD && item != ITM_KNIFE_AND_FORK && !(item >= ITM_EXCERCISE_CARD00 && item <= ITM_EXCERCISE_CARD12) - ) { - if ( - (ITEM_NAME_GET_TYPE(item) == NAME_TYPE_ITEM1 && ITEM_NAME_GET_CAT(item) == ITEM1_CAT_FISH) && - (ITEM_NAME_GET_TYPE(exchange_id) != NAME_TYPE_ITEM1 || ITEM_NAME_GET_CAT(exchange_id) != ITEM1_CAT_FISH) - ) { - PLAYER_ACTOR* player = GET_PLAYER_ACTOR_NOW(); - xyz_t water_pos; + if (item != EMPTY_NO && mPr_GET_ITEM_COND(priv->inventory.item_conditions, slot_no) == mPr_ITEM_COND_NORMAL && + item != ITM_SIGNBOARD && item != ITM_KNIFE_AND_FORK && + !(item >= ITM_EXCERCISE_CARD00 && item <= ITM_EXCERCISE_CARD12)) { + if ((ITEM_NAME_GET_TYPE(item) == NAME_TYPE_ITEM1 && ITEM_NAME_GET_CAT(item) == ITEM1_CAT_FISH) && + (ITEM_NAME_GET_TYPE(exchange_id) != NAME_TYPE_ITEM1 || ITEM_NAME_GET_CAT(exchange_id) != ITEM1_CAT_FISH)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_NOW(); + xyz_t water_pos; - if (mCoBG_SearchWaterLimitDistN(&water_pos, player->actor_class.world.position, player->actor_class.shape_info.rotation.y, 120.0f, 12) == FALSE) { - return FALSE; - } + if (mCoBG_SearchWaterLimitDistN(&water_pos, player->actor_class.world.position, + player->actor_class.shape_info.rotation.y, 120.0f, 12) == FALSE) { + return FALSE; + } - xyz_t_move(&((GAME_PLAY*)gamePT)->submenu.water_pos, &water_pos); + xyz_t_move(&((GAME_PLAY*)gamePT)->submenu.water_pos, &water_pos); + } + + res = TRUE; } - res = TRUE; - } - - return res; + return res; } static int mSM_check_item_for_curator(int slot_no, int param_2) { - Private_c* priv = Common_Get(now_private); - mActor_name_t item = priv->inventory.pockets[slot_no]; - int res = FALSE; + Private_c* priv = Common_Get(now_private); + mActor_name_t item = priv->inventory.pockets[slot_no]; + int res = FALSE; - if ( - item != EMPTY_NO && - mPr_GET_ITEM_COND(priv->inventory.item_conditions, slot_no) == mPr_ITEM_COND_NORMAL && - item != ITM_KNIFE_AND_FORK && - !(item >= ITM_EXCERCISE_CARD00 && item <= ITM_EXCERCISE_CARD12) - ) { - res = TRUE; - } + if (item != EMPTY_NO && mPr_GET_ITEM_COND(priv->inventory.item_conditions, slot_no) == mPr_ITEM_COND_NORMAL && + item != ITM_KNIFE_AND_FORK && !(item >= ITM_EXCERCISE_CARD00 && item <= ITM_EXCERCISE_CARD12)) { + res = TRUE; + } - return res; + return res; } typedef int (*mSM_INVENTORY_CHECK_PROC)(int, int); extern int mSM_check_open_inventory_itemlist(int type, int param_2) { - static mSM_INVENTORY_CHECK_PROC check_process[mSM_IV_OPEN_NUM] = { - NULL, - NULL, - &mSM_check_item_for_entrust, - NULL, - &mSM_check_item_for_quest, - &mSM_check_item_for_sell, - &mSM_check_item_for_give, - NULL, - &mSM_check_item_for_take, - &mSM_check_item_for_furniture, - &mSM_check_item_for_minidisk, - &mSM_check_item_for_shrine, - NULL, - &mSM_check_item_for_exchange, - NULL, - &mSM_check_item_for_curator, - NULL - }; + static mSM_INVENTORY_CHECK_PROC check_process[mSM_IV_OPEN_NUM] = { NULL, + NULL, + &mSM_check_item_for_entrust, + NULL, + &mSM_check_item_for_quest, + &mSM_check_item_for_sell, + &mSM_check_item_for_give, + NULL, + &mSM_check_item_for_take, + &mSM_check_item_for_furniture, + &mSM_check_item_for_minidisk, + &mSM_check_item_for_shrine, + NULL, + &mSM_check_item_for_exchange, + NULL, + &mSM_check_item_for_curator, + NULL }; - mSM_INVENTORY_CHECK_PROC check_proc = check_process[type]; - int i; - int res = 0; + mSM_INVENTORY_CHECK_PROC check_proc = check_process[type]; + int i; + int res = 0; - if (check_proc == NULL) { - return 0xFFFF; /* all slots are valid */ - } - - for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { - if ((*check_proc)(i, param_2) != FALSE) { - res |= (1 << i); // slot is valid + if (check_proc == NULL) { + return 0xFFFF; /* all slots are valid */ } - } - return res; + for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { + if ((*check_proc)(i, param_2) != FALSE) { + res |= (1 << i); // slot is valid + } + } + + return res; } static char* mSM_Object_Exchange_keep_new(GAME_PLAY* play, s16 bank_id, size_t size) { - Object_Exchange_c* exchange = &play->object_exchange; - Object_Bank_c* bank = &exchange->banks[exchange->bank_idx]; + Object_Exchange_c* exchange = &play->object_exchange; + Object_Bank_c* bank = &exchange->banks[exchange->bank_idx]; - bank->bank_id = bank_id; - bank->dma_start = exchange->next_bank_ram_address; - bank->ram_start = exchange->next_bank_ram_address; - bank->size = size; + bank->bank_id = bank_id; + bank->dma_start = exchange->next_bank_ram_address; + bank->ram_start = exchange->next_bank_ram_address; + bank->size = size; - if (exchange->bank_idx < mSc_OBJECT_BANK_NUM - 1) { - exchange->next_bank_ram_address = (char*)ALIGN_NEXT((u32)(exchange->next_bank_ram_address + size), 16); - exchange->bank_idx++; - } + if (exchange->bank_idx < mSc_OBJECT_BANK_NUM - 1) { + exchange->next_bank_ram_address = (char*)ALIGN_NEXT((u32)(exchange->next_bank_ram_address + size), 16); + exchange->bank_idx++; + } - return bank->dma_start; + return bank->dma_start; } static void mSM_Object_Exchange_keep_new_MenuTexAndPallet(GAME_PLAY* play, int idx) { - char* tex_p = mSM_Object_Exchange_keep_new(play, ACTOR_OBJ_BANK_14, (32*32)/2); - char* pal_p = mSM_Object_Exchange_keep_new(play, ACTOR_OBJ_BANK_15, 16 * sizeof(u16)); + char* tex_p = mSM_Object_Exchange_keep_new(play, ACTOR_OBJ_BANK_14, (32 * 32) / 2); + char* pal_p = mSM_Object_Exchange_keep_new(play, ACTOR_OBJ_BANK_15, 16 * sizeof(u16)); - play->submenu_ground_tex[idx] = tex_p; - play->submenu_ground_pallet[idx] = pal_p; - mPlib_Load_PlayerTexAndPallet(tex_p, pal_p, Common_Get(now_private)->backgound_texture - ITM_CLOTH_START); + play->submenu_ground_tex[idx] = tex_p; + play->submenu_ground_pallet[idx] = pal_p; + mPlib_Load_PlayerTexAndPallet(tex_p, pal_p, Common_Get(now_private)->backgound_texture - ITM_CLOTH_START); } extern void mSM_Object_Exchange_keep_new_Menu(GAME_PLAY* play) { - play->submenu_ground_idx = 0; - mSM_Object_Exchange_keep_new_MenuTexAndPallet(play, 0); - mSM_Object_Exchange_keep_new_MenuTexAndPallet(play, 1); + play->submenu_ground_idx = 0; + mSM_Object_Exchange_keep_new_MenuTexAndPallet(play, 0); + mSM_Object_Exchange_keep_new_MenuTexAndPallet(play, 1); } extern u8* mSM_Get_ground_tex_p(GAME_PLAY* play) { - int idx = play->submenu_ground_idx; + int idx = play->submenu_ground_idx; - if (idx < 0) { - return NULL; - } + if (idx < 0) { + return NULL; + } - return (u8*)play->submenu_ground_tex[idx]; + return (u8*)play->submenu_ground_tex[idx]; } extern u16* mSM_Get_ground_pallet_p(GAME_PLAY* play) { - int idx = play->submenu_ground_idx; + int idx = play->submenu_ground_idx; - if (idx < 0) { - return NULL; - } + if (idx < 0) { + return NULL; + } - return (u16*)play->submenu_ground_pallet[idx]; + return (u16*)play->submenu_ground_pallet[idx]; } From 84a098cfdce03f3c222facd43bbf418f17618af4 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Thu, 29 Aug 2024 17:44:43 -0400 Subject: [PATCH 146/234] Implement & match 9 player state TUs --- include/audio_defs.h | 6 +- include/m_lib.h | 3 +- include/m_player.h | 71 +++ src/m_choice_main_appear.c_inc | 66 ++- src/m_choice_main_disappear.c_inc | 79 ++- src/m_lib.c | 683 ++++++++++++------------ src/m_msg_appear.c_inc | 148 +++-- src/m_msg_disappear.c_inc | 72 ++- src/m_player.c | 53 ++ src/m_player_common.c_inc | 26 +- src/m_player_item_common.c_inc | 52 +- src/m_player_main_give.c_inc | 124 +++++ src/m_player_main_give_wait.c_inc | 119 +++++ src/m_player_main_putin_item.c_inc | 125 +++++ src/m_player_main_recieve.c_inc | 99 ++++ src/m_player_main_recieve_putaway.c_inc | 101 ++++ src/m_player_main_recieve_stretch.c_inc | 91 ++++ src/m_player_main_recieve_wait.c_inc | 78 +++ src/m_player_main_takeout_item.c_inc | 143 +++++ src/m_player_main_talk.c_inc | 210 ++++++++ src/m_player_sound.c_inc | 312 ++++++----- 21 files changed, 1926 insertions(+), 735 deletions(-) diff --git a/include/audio_defs.h b/include/audio_defs.h index 761b40bd..e2718fab 100644 --- a/include/audio_defs.h +++ b/include/audio_defs.h @@ -50,6 +50,7 @@ typedef enum audio_sound_effects { NA_SE_MONEY1, NA_SE_MONEY2, NA_SE_COIN, + NA_SE_TEMOCHI_KAZAGURUMA, NA_SE_52 = 0x52, @@ -133,8 +134,9 @@ typedef enum audio_sound_effects { NA_SE_ROTATE = 0x41A, NA_SE_41C = 0x41C, - - NA_SE_SOFT_CHAIR_SIT = 0x41F, + NA_SE_AXE_HIT, + NA_SE_AXE_CUT, + NA_SE_SOFT_CHAIR_SIT, NA_SE_HARD_CHAIR_SIT, NA_SE_BUBU_CHAIR_SIT, NA_SE_SOFT_CHAIR_STANDUP, diff --git a/include/m_lib.h b/include/m_lib.h index 6c28288e..3277f7c4 100644 --- a/include/m_lib.h +++ b/include/m_lib.h @@ -100,8 +100,7 @@ extern void none_proc2(ACTOR* actor, GAME* game); extern int _Game_play_isPause(GAME_PLAY* play); extern f32 check_percent_abs(f32 x, f32 min, f32 max, f32 scale, int shift_by_min); -extern f32 get_percent_forAccelBrake(const f32 now, const f32 start, const f32 end, const f32 accelerateDist, - const f32 brakeDist); +extern f32 get_percent_forAccelBrake(f32 now, f32 start, f32 end, f32 accelerateDist, f32 brakeDist); extern void Game_play_Projection_Trans(GAME_PLAY* const play, xyz_t* world_pos, xyz_t* screen_pos); extern f32 get_percent(const int max, const int min, const int x); diff --git a/include/m_player.h b/include/m_player.h index b6ee9568..11df061c 100644 --- a/include/m_player.h +++ b/include/m_player.h @@ -1560,6 +1560,68 @@ typedef struct player_main_putin_scoop_s { int get_gold_scoop_flag; // TODO: check this } mPlayer_main_putin_scoop_c; +typedef struct player_main_talk_s { + ACTOR* talk_actor_p; + int turn_flag; + int feel_type; +} mPlayer_main_talk_c; + +typedef struct player_main_recieve_wait_s { + ACTOR* talk_actor_p; + int turn_flag; + int ret_main_index; + mActor_name_t item; + int surface_flag; +} mPlayer_main_recieve_wait_c; + +typedef struct player_main_recieve_stretch_s { + ACTOR* talk_actor_p; + int turn_flag; + int ret_main_index; + mActor_name_t item; + int surface_flag; +} mPlayer_main_recieve_stretch_c; + +typedef struct player_main_recieve_s { + ACTOR* talk_actor_p; + int turn_flag; + int ret_main_index; + mActor_name_t item; + int surface_flag; +} mPlayer_main_recieve_c; + +typedef struct player_main_recieve_putaway_s { + ACTOR* talk_actor_p; + int turn_flag; + int ret_main_index; + int surface_flag; +} mPlayer_main_recieve_putaway_c; + +typedef struct player_main_give_s { + ACTOR* talk_actor_p; + int turn_flag; + int ret_main_index; + mActor_name_t item; + int surface_flag; +} mPlayer_main_give_c; + +typedef struct player_main_give_wait_s { + ACTOR* talk_actor_p; + int turn_flag; + int ret_main_index; + int surface_flag; +} mPlayer_main_give_wait_c; + +typedef struct player_main_takeout_item_s { + mPlayer_request_takeout_item_c back_request_data; + f32 timer; +} mPlayer_main_takeout_item_c; + +typedef struct player_main_putin_item_s { + mPlayer_request_putin_item_c back_request_data; + f32 timer; +} mPlayer_main_putin_item_c; + typedef struct player_main_wash_car_s { int anime_idx; int change_anime_idx; @@ -1655,6 +1717,15 @@ typedef union { mPlayer_main_putaway_scoop_c putaway_scoop; mPlayer_main_putin_scoop_c putin_scoop; mPlayer_main_demo_wade_c demo_wade; + mPlayer_main_talk_c talk; + mPlayer_main_recieve_wait_c recieve_wait; + mPlayer_main_recieve_stretch_c recieve_stretch; + mPlayer_main_recieve_c recieve; + mPlayer_main_recieve_putaway_c recieve_putaway; + mPlayer_main_give_c give; + mPlayer_main_give_wait_c give_wait; + mPlayer_main_takeout_item_c takeout_item; + mPlayer_main_putin_item_c putin_item; mPlayer_main_wash_car_c wash_car; mPlayer_main_shake_tree_c shake_tree; mPlayer_main_stung_bee_c stung_bee; diff --git a/src/m_choice_main_appear.c_inc b/src/m_choice_main_appear.c_inc index 7d18642f..47355226 100644 --- a/src/m_choice_main_appear.c_inc +++ b/src/m_choice_main_appear.c_inc @@ -1,48 +1,46 @@ static int mChoice_Main_Appear_SetScale(mChoice_c* choice, GAME* game) { - int res; - const f32 max = 10.2f; + int res; - if (choice->timer < max) { - f32 scale; - - choice->timer += 1.0f; - scale = get_percent_forAccelBrake(choice->timer, 0.0f, max, 0.0f, 0.0f); - choice->scale = scale; - choice->center_x = choice->center_x_begin + scale * (choice->center_x_target - choice->center_x_begin); - choice->center_y = choice->center_y_begin + scale * (choice->center_y_target - choice->center_y_begin); - res = FALSE; - } - else { - choice->timer = 0.0f; - choice->scale = 1.0f; - choice->center_x = choice->center_x_target; - choice->center_y = choice->center_y_target; - res = TRUE; - } + if (choice->timer < 10.2f) { + f32 scale; - return res; + choice->timer += 1.0f; + scale = get_percent_forAccelBrake(choice->timer, 0.0f, 10.2f, 0.0f, 0.0f); + choice->scale = scale; + choice->center_x = choice->center_x_begin + scale * (choice->center_x_target - choice->center_x_begin); + choice->center_y = choice->center_y_begin + scale * (choice->center_y_target - choice->center_y_begin); + res = FALSE; + } else { + choice->timer = 0.0f; + choice->scale = 1.0f; + choice->center_x = choice->center_x_target; + choice->center_y = choice->center_y_target; + res = TRUE; + } + + return res; } static void mChoice_request_main_index_fromAppear(mChoice_c* choice, GAME* game, int open_flag) { - if (open_flag) { - mChoice_Change_request_main_index(choice, mChoice_MAIN_NORMAL); - } + if (open_flag) { + mChoice_Change_request_main_index(choice, mChoice_MAIN_NORMAL); + } } static void mChoice_Main_Appear(mChoice_c* choice, GAME* game) { - int open_flag = mChoice_Main_Appear_SetScale(choice, game); + int open_flag = mChoice_Main_Appear_SetScale(choice, game); - mChoice_request_main_index_fromAppear(choice, game, open_flag); - mChoice_MainSetup(choice, game); + mChoice_request_main_index_fromAppear(choice, game, open_flag); + mChoice_MainSetup(choice, game); } static void mChoice_MainSetup_Appear(mChoice_c* choice, GAME* game) { - choice->scale = 0.0f; - choice->main_index = mChoice_MAIN_APPEAR; - choice->requested_main_index = -1; - choice->window_visible_flag = TRUE; - choice->timer = 0.0f; - mChoice_Clear_ChoseNum(choice); - mChoice_sound_SENTAKU_OPEN(); - mChoice_Set_DisplayScaleAndDisplayPos(choice); + choice->scale = 0.0f; + choice->main_index = mChoice_MAIN_APPEAR; + choice->requested_main_index = -1; + choice->window_visible_flag = TRUE; + choice->timer = 0.0f; + mChoice_Clear_ChoseNum(choice); + mChoice_sound_SENTAKU_OPEN(); + mChoice_Set_DisplayScaleAndDisplayPos(choice); } diff --git a/src/m_choice_main_disappear.c_inc b/src/m_choice_main_disappear.c_inc index cab66910..48c653b9 100644 --- a/src/m_choice_main_disappear.c_inc +++ b/src/m_choice_main_disappear.c_inc @@ -1,56 +1,51 @@ static int mChoice_Main_Disappear_SetScale(mChoice_c* choice, GAME* game) { - const f32 max = 10.2f; - - if (choice->timer < max) { - f32 scale; - - choice->timer += 1.0f; - scale = 1.0f - get_percent_forAccelBrake(choice->timer, 0.0f, max, 0.0f, 0.0f); - choice->scale = scale; - choice->center_x = choice->center_x_begin + scale * (choice->center_x_target - choice->center_x_begin); - choice->center_y = choice->center_y_begin + scale * (choice->center_y_target - choice->center_y_begin); - return FALSE; - } - else { - choice->timer = 0.0f; - choice->scale = 0.0f; - choice->center_x = choice->center_x_begin; - choice->center_y = choice->center_y_begin; - return TRUE; - } + if (choice->timer < 10.2f) { + f32 scale; + + choice->timer += 1.0f; + scale = 1.0f - get_percent_forAccelBrake(choice->timer, 0.0f, 10.2f, 0.0f, 0.0f); + choice->scale = scale; + choice->center_x = choice->center_x_begin + scale * (choice->center_x_target - choice->center_x_begin); + choice->center_y = choice->center_y_begin + scale * (choice->center_y_target - choice->center_y_begin); + return FALSE; + } else { + choice->timer = 0.0f; + choice->scale = 0.0f; + choice->center_x = choice->center_x_begin; + choice->center_y = choice->center_y_begin; + return TRUE; + } } static void mChoice_request_main_index_fromDisappear(mChoice_c* choice, GAME* game, int closed_flag) { - if (closed_flag) { - mChoice_Change_request_main_index(choice, mChoice_MAIN_HIDE); - } + if (closed_flag) { + mChoice_Change_request_main_index(choice, mChoice_MAIN_HIDE); + } } static void mChoice_Main_Disappear(mChoice_c* choice, GAME* game) { - int closed_flag = mChoice_Main_Disappear_SetScale(choice, game); + int closed_flag = mChoice_Main_Disappear_SetScale(choice, game); - mChoice_request_main_index_fromDisappear(choice, game, closed_flag); - mChoice_MainSetup(choice, game); + mChoice_request_main_index_fromDisappear(choice, game, closed_flag); + mChoice_MainSetup(choice, game); } static void mChoice_MainSetup_Disappear(mChoice_c* choice, GAME* game) { - if (choice->no_b_flag && choice->selected_choice_idx == (choice->data.choice_num - 1)) { - if (choice->no_close_flag) { - mChoice_sound_ZOOMDOWN_LONG(); - mMsg_Get_base_window_p()->status_flags |= mMsg_STATUS_FLAG_NO_ZOOMDOWN; + if (choice->no_b_flag && choice->selected_choice_idx == (choice->data.choice_num - 1)) { + if (choice->no_close_flag) { + mChoice_sound_ZOOMDOWN_LONG(); + mMsg_Get_base_window_p()->status_flags |= mMsg_STATUS_FLAG_NO_ZOOMDOWN; + } else { + mChoice_sound_ZOOMDOWN_SHORT(); + } + } else { + mChoice_sound_SENTAKU_KETTEI(); } - else { - mChoice_sound_ZOOMDOWN_SHORT(); - } - } - else { - mChoice_sound_SENTAKU_KETTEI(); - } - choice->scale = 1.0f; - choice->main_index = mChoice_MAIN_DISAPPEAR; - choice->requested_main_index = -1; - choice->window_visible_flag = TRUE; - choice->timer = 0.0f; - choice->font_visible_flag = FALSE; + choice->scale = 1.0f; + choice->main_index = mChoice_MAIN_DISAPPEAR; + choice->requested_main_index = -1; + choice->window_visible_flag = TRUE; + choice->timer = 0.0f; + choice->font_visible_flag = FALSE; } diff --git a/src/m_lib.c b/src/m_lib.c index 13b9cf95..f0eaeb31 100644 --- a/src/m_lib.c +++ b/src/m_lib.c @@ -62,11 +62,11 @@ * @param size Number of bytes to copy. */ extern void mem_copy(u8* dst, u8* src, size_t size) { - for (size; size != 0; size--) { - *dst = *src; - src++; - dst++; - } + for (size; size != 0; size--) { + *dst = *src; + src++; + dst++; + } } /** @@ -77,11 +77,11 @@ extern void mem_copy(u8* dst, u8* src, size_t size) { * @param val Value to set each byte in the destination buffer. */ extern void mem_clear(u8* dst, size_t size, u8 val) { - u32 i; + u32 i; - for (i = 0; i < size; i++) { - *dst++ = val; - } + for (i = 0; i < size; i++) { + *dst++ = val; + } } /** @@ -93,14 +93,14 @@ extern void mem_clear(u8* dst, size_t size, u8 val) { * @return TRUE if the memory buffers are equal, FALSE otherwise. */ extern int mem_cmp(u8* p1, u8* p2, size_t size) { - for (size; size != 0; size--) { - if (*p1 != *p2) { - return FALSE; + for (size; size != 0; size--) { + if (*p1 != *p2) { + return FALSE; + } + p1++; + p2++; } - p1++; - p2++; - } - return TRUE; + return TRUE; } /** @@ -109,7 +109,9 @@ extern int mem_cmp(u8* p1, u8* p2, size_t size) { * @param angle Angle in s16 format. * @return Cosine of the angle as a floating-point value. */ -extern f32 cos_s(s16 angle) { return coss(angle) * SHT_MINV; } +extern f32 cos_s(s16 angle) { + return coss(angle) * SHT_MINV; +} /** * @brief Calculate the sine of the given s16 angle. @@ -117,7 +119,9 @@ extern f32 cos_s(s16 angle) { return coss(angle) * SHT_MINV; } * @param angle Angle in s16 format. * @return Sine of the angle as a floating-point value. */ -extern f32 sin_s(s16 angle) { return sins(angle) * SHT_MINV; } +extern f32 sin_s(s16 angle) { + return sins(angle) * SHT_MINV; +} /** * @brief Chase an angle value towards a target angle, with a specified step. @@ -132,24 +136,24 @@ extern f32 sin_s(s16 angle) { return sins(angle) * SHT_MINV; } * @return TRUE if the angle reaches the target, FALSE otherwise. */ extern int chase_angle(s16* const pValue, const s16 target, s16 step) { - if (step) { - f32 updateScale = game_GameFrame_2F; + if (step) { + f32 updateScale = game_GameFrame_2F; - if ((s16)(*pValue - target) > 0) { - step = -step; + if ((s16)(*pValue - target) > 0) { + step = -step; + } + + *pValue += (s16)(step * updateScale); + + if (((s16)(*pValue - target) * step) >= 0) { + *pValue = target; + return TRUE; + } + } else if (*pValue == target) { + return TRUE; } - *pValue += (s16)(step * updateScale); - - if (((s16)(*pValue - target) * step) >= 0) { - *pValue = target; - return TRUE; - } - } else if (*pValue == target) { - return TRUE; - } - - return FALSE; + return FALSE; } /** @@ -165,23 +169,23 @@ extern int chase_angle(s16* const pValue, const s16 target, s16 step) { * @return TRUE if the value reaches the target, FALSE otherwise. */ extern int chase_s(s16* const pValue, const s16 target, s16 step) { - if (step) { - if (*pValue > target) { - step = -step; - } + if (step) { + if (*pValue > target) { + step = -step; + } - *pValue += step; + *pValue += step; - if ((step * (*pValue - target)) >= 0) { - *pValue = target; - return TRUE; + if ((step * (*pValue - target)) >= 0) { + *pValue = target; + return TRUE; + } + } else { + if (*pValue == target) { + return TRUE; + } } - } else { - if (*pValue == target) { - return TRUE; - } - } - return FALSE; + return FALSE; } /** @@ -197,23 +201,23 @@ extern int chase_s(s16* const pValue, const s16 target, s16 step) { * @return TRUE if the value reaches the target, FALSE otherwise. */ extern int chase_f(f32* const pValue, const f32 target, f32 step) { - if (step) { - if (*pValue > target) { - step = -step; - } + if (step) { + if (*pValue > target) { + step = -step; + } - *pValue += step; + *pValue += step; - if ((step * (*pValue - target)) >= 0.0f) { - *pValue = target; - return TRUE; + if ((step * (*pValue - target)) >= 0.0f) { + *pValue = target; + return TRUE; + } + } else { + if (*pValue == target) { + return TRUE; + } } - } else { - if (*pValue == target) { - return TRUE; - } - } - return FALSE; + return FALSE; } /** @@ -228,27 +232,26 @@ extern int chase_f(f32* const pValue, const f32 target, f32 step) { * @param fraction Fraction of the distance to move towards the target. * @return Remaining distance after the chase. */ -extern f32 chase_xyz_t(xyz_t* const pValue, const xyz_t* const target, - const f32 fraction) { - xyz_t diff; - f32 dist; - f32 stepSize; +extern f32 chase_xyz_t(xyz_t* const pValue, const xyz_t* const target, const f32 fraction) { + xyz_t diff; + f32 dist; + f32 stepSize; - xyz_t_sub(target, pValue, &diff); + xyz_t_sub(target, pValue, &diff); - dist = Math3DVecLength(&diff); - if (dist > fraction) { - stepSize = fraction / dist; - pValue->x += stepSize * diff.x; - pValue->y += stepSize * diff.y; - pValue->z += stepSize * diff.z; + dist = Math3DVecLength(&diff); + if (dist > fraction) { + stepSize = fraction / dist; + pValue->x += stepSize * diff.x; + pValue->y += stepSize * diff.y; + pValue->z += stepSize * diff.z; - return dist - fraction; - } else { - xyz_t_move(pValue, target); + return dist - fraction; + } else { + xyz_t_move(pValue, target); - return 0.0f; - } + return 0.0f; + } } /** @@ -264,19 +267,19 @@ extern f32 chase_xyz_t(xyz_t* const pValue, const xyz_t* const target, * @return TRUE if the angle reaches the limit, FALSE otherwise. */ extern int chase_angle2(s16* const pValue, const s16 limit, const s16 step) { - s16 prev = *pValue; + s16 prev = *pValue; - *pValue += step; - if (((s16)(*pValue - limit) * (s16)(prev - limit)) <= 0) { - s32 absDiff = ABS((s16)(*pValue - limit)); + *pValue += step; + if (((s16)(*pValue - limit) * (s16)(prev - limit)) <= 0) { + s32 absDiff = ABS((s16)(*pValue - limit)); - if (absDiff < 16384) { - *pValue = limit; - return TRUE; + if (absDiff < 16384) { + *pValue = limit; + return TRUE; + } } - } - return FALSE; + return FALSE; } /** @@ -287,13 +290,13 @@ extern int chase_angle2(s16* const pValue, const s16 limit, const s16 step) { * @param step Step value for interpolation speed. */ extern void inter_float(f32* const pValue, const f32 arg1, const int step) { - if (step <= 0) { - *pValue = arg1; - } else { - f32 diff = arg1 - *pValue; + if (step <= 0) { + *pValue = arg1; + } else { + f32 diff = arg1 - *pValue; - *pValue += diff / step; - } + *pValue += diff / step; + } } /** @@ -308,7 +311,7 @@ extern void inter_float(f32* const pValue, const f32 arg1, const int step) { * @return Random timer value. */ extern s16 get_random_timer(const s16 base, const s16 range) { - return base + (s16)(range * fqrand()); + return base + (s16)(range * fqrand()); } /** @@ -318,9 +321,9 @@ extern s16 get_random_timer(const s16 base, const s16 range) { * @param src Source xyz_t structure. */ extern void xyz_t_move(xyz_t* const dest, const xyz_t* const src) { - dest->x = src->x; - dest->y = src->y; - dest->z = src->z; + dest->x = src->x; + dest->y = src->y; + dest->z = src->z; } /** @@ -330,9 +333,9 @@ extern void xyz_t_move(xyz_t* const dest, const xyz_t* const src) { * @param src Pointer to the source s_xyz structure. */ extern void xyz_t_move_s_xyz(xyz_t* const dest, const s_xyz* const src) { - dest->x = src->x; - dest->y = src->y; - dest->z = src->z; + dest->x = src->x; + dest->y = src->y; + dest->z = src->z; } /** @@ -343,11 +346,10 @@ extern void xyz_t_move_s_xyz(xyz_t* const dest, const s_xyz* const src) { * @param total Output xyz_t structure for the result. */ -extern void xyz_t_add(const xyz_t* const augend, const xyz_t* const addend, - xyz_t* const total) { - total->x = augend->x + addend->x; - total->y = augend->y + addend->y; - total->z = augend->z + addend->z; +extern void xyz_t_add(const xyz_t* const augend, const xyz_t* const addend, xyz_t* const total) { + total->x = augend->x + addend->x; + total->y = augend->y + addend->y; + total->z = augend->z + addend->z; } /** @@ -357,11 +359,10 @@ extern void xyz_t_add(const xyz_t* const augend, const xyz_t* const addend, * @param subtrahend Second input xyz_t structure. * @param diff Output xyz_t structure for the result. */ -extern void xyz_t_sub(const xyz_t* const minuend, const xyz_t* const subtrahend, - xyz_t* const diff) { - diff->x = minuend->x - subtrahend->x; - diff->y = minuend->y - subtrahend->y; - diff->z = minuend->z - subtrahend->z; +extern void xyz_t_sub(const xyz_t* const minuend, const xyz_t* const subtrahend, xyz_t* const diff) { + diff->x = minuend->x - subtrahend->x; + diff->y = minuend->y - subtrahend->y; + diff->z = minuend->z - subtrahend->z; } /** @@ -371,9 +372,9 @@ extern void xyz_t_sub(const xyz_t* const minuend, const xyz_t* const subtrahend, * @param multiplier Scalar value. */ extern void xyz_t_mult_v(xyz_t* const multiplicand, const f32 multiplier) { - multiplicand->x *= multiplier; - multiplicand->y *= multiplier; - multiplicand->z *= multiplier; + multiplicand->x *= multiplier; + multiplicand->y *= multiplier; + multiplicand->z *= multiplier; } /** @@ -383,13 +384,12 @@ extern void xyz_t_mult_v(xyz_t* const multiplicand, const f32 multiplier) { * @param target Pointer to the second xyz_t structure representing the target position. * @return The Euclidean distance between the two xyz_t structures. */ -extern f32 search_position_distance(const xyz_t* const pos, - const xyz_t* const target) { - f32 diffX = target->x - pos->x; - f32 diffY = target->y - pos->y; - f32 diffZ = target->z - pos->z; +extern f32 search_position_distance(const xyz_t* const pos, const xyz_t* const target) { + f32 diffX = target->x - pos->x; + f32 diffY = target->y - pos->y; + f32 diffZ = target->z - pos->z; - return sqrtf((diffX * diffX) + (diffY * diffY) + (diffZ * diffZ)); + return sqrtf((diffX * diffX) + (diffY * diffY) + (diffZ * diffZ)); } /** @@ -399,12 +399,11 @@ extern f32 search_position_distance(const xyz_t* const pos, * @param target Pointer to the second xyz_t structure representing the target position. * @return The Euclidean distance between the two xyz_t structures in the XZ plane. */ -extern f32 search_position_distanceXZ(const xyz_t* const pos, - const xyz_t* const target) { - f32 diffX = target->x - pos->x; - f32 diffZ = target->z - pos->z; +extern f32 search_position_distanceXZ(const xyz_t* const pos, const xyz_t* const target) { + f32 diffX = target->x - pos->x; + f32 diffZ = target->z - pos->z; - return sqrtf((diffX * diffX) + (diffZ * diffZ)); + return sqrtf((diffX * diffX) + (diffZ * diffZ)); } /** @@ -414,12 +413,11 @@ extern f32 search_position_distanceXZ(const xyz_t* const pos, * @param target Pointer to the second xyz_t structure representing the target position. * @return The angle in the Y axis (yaw) between the two xyz_t positions. */ -extern s16 search_position_angleY(const xyz_t* const pos, - const xyz_t* const target) { - f32 diffX = target->x - pos->x; - f32 diffZ = target->z - pos->z; +extern s16 search_position_angleY(const xyz_t* const pos, const xyz_t* const target) { + f32 diffX = target->x - pos->x; + f32 diffZ = target->z - pos->z; - return atans_table(diffZ, diffX); + return atans_table(diffZ, diffX); } /** @@ -429,12 +427,11 @@ extern s16 search_position_angleY(const xyz_t* const pos, * @param target Pointer to the second xyz_t structure representing the target position. * @return The angle in the X axis (pitch) between the two xyz_t structures. */ -extern s16 search_position_angleX(const xyz_t* const pos, - const xyz_t* const target) { - f32 diffXZ = search_position_distanceXZ(pos, target); - f32 diffY = pos->y - target->y; +extern s16 search_position_angleX(const xyz_t* const pos, const xyz_t* const target) { + f32 diffXZ = search_position_distanceXZ(pos, target); + f32 diffY = pos->y - target->y; - return atans_table(diffXZ, diffY); + return atans_table(diffXZ, diffY); } /** @@ -450,49 +447,48 @@ extern s16 search_position_angleX(const xyz_t* const pos, * @param minStep Minimum allowed step size. * @return The difference between the updated input variable value and the target value. */ -extern f32 add_calc(f32* pValue, f32 target, f32 fraction, f32 maxStep, - f32 minStep) { - f32 negMinStep; - f32 stepSize; +extern f32 add_calc(f32* pValue, f32 target, f32 fraction, f32 maxStep, f32 minStep) { + f32 negMinStep; + f32 stepSize; - if (*pValue != target) { - stepSize = fraction * (target - *pValue); - negMinStep = -minStep; + if (*pValue != target) { + stepSize = fraction * (target - *pValue); + negMinStep = -minStep; - if ((stepSize <= negMinStep) || (minStep <= stepSize)) { - if (stepSize > maxStep) { - stepSize = maxStep; - } else if (stepSize < -maxStep) { - stepSize = -maxStep; - } + if ((stepSize <= negMinStep) || (minStep <= stepSize)) { + if (stepSize > maxStep) { + stepSize = maxStep; + } else if (stepSize < -maxStep) { + stepSize = -maxStep; + } - *pValue += stepSize; + *pValue += stepSize; - if (stepSize > 0.0f) { - if (*pValue > target) { - *pValue = target; + if (stepSize > 0.0f) { + if (*pValue > target) { + *pValue = target; + } + } else { + if (*pValue < target) { + *pValue = target; + } + } + } else { + if (stepSize > 0.0f) { + *pValue += minStep; + if (*pValue > target) { + *pValue = target; + } + } else { + *pValue += negMinStep; + if (*pValue < target) { + *pValue = target; + } + } } - } else { - if (*pValue < target) { - *pValue = target; - } - } - } else { - if (stepSize > 0.0f) { - *pValue += minStep; - if (*pValue > target) { - *pValue = target; - } - } else { - *pValue += negMinStep; - if (*pValue < target) { - *pValue = target; - } - } } - } - return target - *pValue; + return target - *pValue; } /** @@ -507,19 +503,19 @@ extern f32 add_calc(f32* pValue, f32 target, f32 fraction, f32 maxStep, * @param maxStep Maximum allowed step size. */ extern void add_calc2(f32* pValue, f32 target, f32 fraction, f32 maxStep) { - f32 stepSize; + f32 stepSize; - if (*pValue != target) { - stepSize = fraction * (target - *pValue); + if (*pValue != target) { + stepSize = fraction * (target - *pValue); - if (stepSize > maxStep) { - stepSize = maxStep; - } else if (stepSize < -maxStep) { - stepSize = -maxStep; + if (stepSize > maxStep) { + stepSize = maxStep; + } else if (stepSize < -maxStep) { + stepSize = -maxStep; + } + + *pValue += stepSize; } - - *pValue += stepSize; - } } /** @@ -530,19 +526,20 @@ extern void add_calc2(f32* pValue, f32 target, f32 fraction, f32 maxStep) { * @param maxStep Maximum allowed step size. */ extern void add_calc0(f32* pValue, f32 fraction, f32 maxStep) { - f32 stepSize = *pValue * fraction; + f32 stepSize = *pValue * fraction; - if (stepSize > maxStep) { - stepSize = maxStep; - } else if (stepSize < -maxStep) { - stepSize = -maxStep; - } + if (stepSize > maxStep) { + stepSize = maxStep; + } else if (stepSize < -maxStep) { + stepSize = -maxStep; + } - *pValue -= stepSize; + *pValue -= stepSize; } /** - * @brief Add a calculated value to a short integer variable to approach a target angle with minimum and maximum step limits. + * @brief Add a calculated value to a short integer variable to approach a target angle with minimum and maximum step + * limits. * * This function adds a calculated step size to the input short integer variable to approach the target angle. * The step size is calculated based on the fraction and is limited by the minimum and maximum step values. @@ -554,51 +551,51 @@ extern void add_calc0(f32* pValue, f32 fraction, f32 maxStep) { * @param minStep Minimum allowed step size. * @return The difference between the updated input variable angle and the target angle. */ -extern s16 add_calc_short_angle2(s16* pValue, s16 target, f32 fraction, - s16 maxStep, s16 minStep) { - s16 stepSize = 0; - s16 diff = target - *pValue; +extern s16 add_calc_short_angle2(s16* pValue, s16 target, f32 fraction, s16 maxStep, s16 minStep) { + s16 stepSize = 0; + s16 diff = target - *pValue; - if (*pValue != target) { - stepSize = (s16)(diff * fraction); + if (*pValue != target) { + stepSize = (s16)(diff * fraction); - if ((stepSize > minStep) || (stepSize < -minStep)) { - if (stepSize > maxStep) { - stepSize = maxStep; - } else if (stepSize < -maxStep) { - stepSize = -maxStep; - } + if ((stepSize > minStep) || (stepSize < -minStep)) { + if (stepSize > maxStep) { + stepSize = maxStep; + } else if (stepSize < -maxStep) { + stepSize = -maxStep; + } - *pValue += stepSize; + *pValue += stepSize; - if (stepSize > 0) { - if ((s16)(target - *pValue) < 0) { - *pValue = target; + if (stepSize > 0) { + if ((s16)(target - *pValue) < 0) { + *pValue = target; + } + } else { + if ((s16)(target - *pValue) > 0) { + *pValue = target; + } + } + } else { + if (diff >= 0) { + *pValue += minStep; + if ((s16)(target - *pValue) < 0) { + *pValue = target; + } + } else { + *pValue -= minStep; + if ((s16)(target - *pValue) > 0) { + *pValue = target; + } + } } - } else { - if ((s16)(target - *pValue) > 0) { - *pValue = target; - } - } - } else { - if (diff >= 0) { - *pValue += minStep; - if ((s16)(target - *pValue) < 0) { - *pValue = target; - } - } else { - *pValue -= minStep; - if ((s16)(target - *pValue) > 0) { - *pValue = target; - } - } } - } - return target - *pValue; + return target - *pValue; } /** - * @brief Add a calculated value to a short integer angle variable to approach a target angle with minimum and maximum step limits. + * @brief Add a calculated value to a short integer angle variable to approach a target angle with minimum and maximum + * step limits. * * This function adds a calculated step size to the input short integer angle variable to approach the target angle. * The step size is calculated based on the fraction and is limited by the minimum and maximum step values. @@ -611,37 +608,36 @@ extern s16 add_calc_short_angle2(s16* pValue, s16 target, f32 fraction, * @param minStep Minimum allowed step size. * @return The difference between the updated input variable angle and the target angle. */ -extern s16 add_calc_short_angle3(s16* pValue, s16 target, f32 fraction, - s16 maxStep, s16 minStep) { - f32 stepSize; - s32 uTarget; - s32 newValue; - s32 uValue; +extern s16 add_calc_short_angle3(s16* pValue, s16 target, f32 fraction, s16 maxStep, s16 minStep) { + f32 stepSize; + s32 uTarget; + s32 newValue; + s32 uValue; - if (target != *pValue) { - uValue = (u16)*pValue; - uTarget = (u16)target; + if (target != *pValue) { + uValue = (u16)*pValue; + uTarget = (u16)target; - if (uValue > uTarget) { - uTarget += 65536; /* Add 360 short degrees */ + if (uValue > uTarget) { + uTarget += 65536; /* Add 360 short degrees */ + } + + stepSize = (uTarget - uValue) * fraction; + + if (stepSize > maxStep) { + stepSize = maxStep; + } else if (stepSize < minStep) { + stepSize = minStep; + } + + newValue = uValue + (s32)stepSize; + if (newValue > uTarget) { + newValue = uTarget; + } + *pValue = newValue; } - stepSize = (uTarget - uValue) * fraction; - - if (stepSize > maxStep) { - stepSize = maxStep; - } else if (stepSize < minStep) { - stepSize = minStep; - } - - newValue = uValue + (s32)stepSize; - if (newValue > uTarget) { - newValue = uTarget; - } - *pValue = newValue; - } - - return target - *pValue; + return target - *pValue; } /** @@ -651,10 +647,10 @@ extern s16 add_calc_short_angle3(s16* pValue, s16 target, f32 fraction, * @param src Pointer to the source rgba_t variable. */ extern void rgba_t_move(rgba_t* dest, const rgba_t* const src) { - dest->r = src->r; - dest->g = src->g; - dest->b = src->b; - dest->a = src->a; + dest->r = src->r; + dest->g = src->g; + dest->b = src->b; + dest->a = src->a; } /** @@ -662,7 +658,9 @@ extern void rgba_t_move(rgba_t* dest, const rgba_t* const src) { * * @return 0 */ -extern int none_proc1() { return 0; } +extern int none_proc1() { + return 0; +} /** * @brief No-op function meant for use in actor profiles. @@ -670,7 +668,8 @@ extern int none_proc1() { return 0; } * @param actor Pointer to an ACTOR structure. * @param game Pointer to a GAME structure. */ -extern void none_proc2(ACTOR* actor, GAME* game) {} +extern void none_proc2(ACTOR* actor, GAME* game) { +} /** * @brief Check if the game is in pause state. @@ -678,11 +677,13 @@ extern void none_proc2(ACTOR* actor, GAME* game) {} * @param play Pointer to a GAME_PLAY structure. * @return TRUE if the game is in pause state, FALSE otherwise. */ -extern int _Game_play_isPause(GAME_PLAY* play) { return (play->pause.enabled != 0); } +extern int _Game_play_isPause(GAME_PLAY* play) { + return (play->pause.enabled != 0); +} /** * @brief Calculate a percentage with respect to minimum and maximum values, and apply scaling. - * + * * - If `x` is closer to 0 than `min`, return 0 * - If `x` is further from 0 than `max`, return the sign of `x` * - Otherwise, scale `x` by `scale` and return it. @@ -695,26 +696,25 @@ extern int _Game_play_isPause(GAME_PLAY* play) { return (play->pause.enabled != * @param shift_by_min Flag to shift the percentage by the minimum value (1 to shift, 0 not to shift). * @return Scaled percentage of the input value within the specified range. */ -extern f32 check_percent_abs(f32 x, f32 min, f32 max, f32 scale, - int shift_by_min) { - if ((-min <= x) && (x <= min)) { - return 0.0f; - } - if (x >= max) { - return 1.0f; - } - if (x <= -max) { - return -1.0f; - } - if (shift_by_min) { - if (x > 0.0f) { - return (x - min) * scale; - } else { - return (x + min) * scale; +extern f32 check_percent_abs(f32 x, f32 min, f32 max, f32 scale, int shift_by_min) { + if ((-min <= x) && (x <= min)) { + return 0.0f; + } + if (x >= max) { + return 1.0f; + } + if (x <= -max) { + return -1.0f; + } + if (shift_by_min) { + if (x > 0.0f) { + return (x - min) * scale; + } else { + return (x + min) * scale; + } + } else { + return x * scale; } - } else { - return x * scale; - } } /** @@ -730,49 +730,48 @@ extern f32 check_percent_abs(f32 x, f32 min, f32 max, f32 scale, * @param brakeDist Braking distance. * @return Percentage of completion. */ -extern f32 get_percent_forAccelBrake(const f32 now, const f32 start, const f32 end, - const f32 accelerateDist, const f32 brakeDist) { - f32 percent; - f32 total_delta; - f32 now_delta; - f32 step; +extern f32 get_percent_forAccelBrake(f32 now, f32 start, f32 end, f32 accelerateDist, f32 brakeDist) { + f32 percent; + f32 total_delta; + f32 now_delta; + f32 step; - if (now >= end) { - return 1.0f; - } - if (now <= start) { - return 0.0f; - } - total_delta = end - start; - now_delta = now - start; - if (total_delta < (accelerateDist + brakeDist)) { - return 0.0f; - } - - step = 1.0f / (((2.0f * total_delta) - accelerateDist) - brakeDist); - if (accelerateDist != 0.0f) { - if (now_delta <= accelerateDist) { - percent = (now_delta * (step * now_delta)); - percent /= accelerateDist; - return percent; + if (now >= end) { + return 1.0f; + } + if (now <= start) { + return 0.0f; + } + total_delta = end - start; + now_delta = now - start; + if (total_delta < (accelerateDist + brakeDist)) { + return 0.0f; + } + + step = 1.0f / (((2.0f * total_delta) - accelerateDist) - brakeDist); + if (accelerateDist != 0.0f) { + if (now_delta <= accelerateDist) { + percent = (now_delta * (step * now_delta)); + percent /= accelerateDist; + return percent; + } + percent = step * accelerateDist; + } else { + percent = 0.0f; + } + if (now_delta <= (total_delta - brakeDist)) { + percent += (step * 2.0f) * (now_delta - accelerateDist); + return percent; + } + percent += (2.0f * step * ((total_delta - accelerateDist) - brakeDist)); + if (brakeDist != 0.0f) { + percent += step * brakeDist; + if (now_delta < total_delta) { + f32 diff = total_delta - now_delta; + percent -= step * diff * diff / brakeDist; + } } - percent = step * accelerateDist; - } else { - percent = 0.0f; - } - if (now_delta <= (total_delta - brakeDist)) { - percent += (step * 2.0f) * (now_delta - accelerateDist); return percent; - } - percent += (2.0f * step * ((total_delta - accelerateDist) - brakeDist)); - if (brakeDist != 0.0f) { - percent += step * brakeDist; - if (now_delta < total_delta) { - f32 diff = total_delta - now_delta; - percent -= step * diff * diff / brakeDist; - } - } - return percent; } /** @@ -782,18 +781,16 @@ extern f32 get_percent_forAccelBrake(const f32 now, const f32 start, const f32 e * @param wpos Pointer to the 3D world position (xyz_t). * @param screen_pos Pointer to the resulting 2D screen position (xyz_t). */ -extern void Game_play_Projection_Trans(GAME_PLAY* const play, xyz_t* world_pos, - xyz_t* screen_pos) { - f32 w; +extern void Game_play_Projection_Trans(GAME_PLAY* const play, xyz_t* world_pos, xyz_t* screen_pos) { + f32 w; - Matrix_mult(&play->projection_matrix, 0); - Matrix_Position(world_pos, screen_pos); - w = play->projection_matrix.ww + - ((play->projection_matrix.wx * world_pos->x) + - (play->projection_matrix.wy * world_pos->y) + - (play->projection_matrix.wz * world_pos->z)); - screen_pos->x = (SCREEN_WIDTH_F / 2.0f) + ((screen_pos->x / w) * (SCREEN_WIDTH_F / 2.0f)); - screen_pos->y = (SCREEN_HEIGHT_F / 2.0f) - ((screen_pos->y / w) * (SCREEN_HEIGHT_F / 2.0f)); + Matrix_mult(&play->projection_matrix, 0); + Matrix_Position(world_pos, screen_pos); + w = play->projection_matrix.ww + + ((play->projection_matrix.wx * world_pos->x) + (play->projection_matrix.wy * world_pos->y) + + (play->projection_matrix.wz * world_pos->z)); + screen_pos->x = (SCREEN_WIDTH_F / 2.0f) + ((screen_pos->x / w) * (SCREEN_WIDTH_F / 2.0f)); + screen_pos->y = (SCREEN_HEIGHT_F / 2.0f) - ((screen_pos->y / w) * (SCREEN_HEIGHT_F / 2.0f)); } /** @@ -805,20 +802,20 @@ extern void Game_play_Projection_Trans(GAME_PLAY* const play, xyz_t* world_pos, * @return Percentage of the input value within the specified range. */ extern f32 get_percent(const int max, const int min, const int x) { - f32 total_delta; - f32 percent; + f32 total_delta; + f32 percent; - percent = 1.0f; - if (x < min) { - percent = 0.0f; - } else if (x < max) { - total_delta = max - min; - if (total_delta != 0.0f) { - percent = (f32)(x - min) / total_delta; - if (percent > 1.0f) { - percent = 1.0f; - } + percent = 1.0f; + if (x < min) { + percent = 0.0f; + } else if (x < max) { + total_delta = max - min; + if (total_delta != 0.0f) { + percent = (f32)(x - min) / total_delta; + if (percent > 1.0f) { + percent = 1.0f; + } + } } - } - return percent; + return percent; } diff --git a/src/m_msg_appear.c_inc b/src/m_msg_appear.c_inc index ad6a84e2..c85646ee 100644 --- a/src/m_msg_appear.c_inc +++ b/src/m_msg_appear.c_inc @@ -1,93 +1,89 @@ static int mMsg_Main_Appear_SetScale(mMsg_Window_c* msg_p, GAME* game) { - const f32 max = 18.0f; + if (msg_p->timer < 18.0f) { + f32 scale; - if (msg_p->timer < max) { - f32 scale; - - msg_p->timer += 1.0f; - scale = get_percent_forAccelBrake(msg_p->timer, 0.0f, max, 0.0f, 0.0f); - msg_p->window_scale = scale; - msg_p->text_scale = scale; - return FALSE; - } - else { - msg_p->window_scale = 1.0f; - msg_p->text_scale = 1.0f; - msg_p->timer = 0.0f; - return TRUE; - } + msg_p->timer += 1.0f; + scale = get_percent_forAccelBrake(msg_p->timer, 0.0f, 18.0f, 0.0f, 0.0f); + msg_p->window_scale = scale; + msg_p->text_scale = scale; + return FALSE; + } else { + msg_p->window_scale = 1.0f; + msg_p->text_scale = 1.0f; + msg_p->timer = 0.0f; + return TRUE; + } } static void mMsg_request_main_index_fromAppear(mMsg_Window_c* msg_p, GAME* game, int scale_done_flag) { - if (scale_done_flag && mMsg_request_main_cursol(msg_p, FALSE, 5)) { - mMsg_SetTimer(msg_p, 20.0f); - } + if (scale_done_flag && mMsg_request_main_cursol(msg_p, FALSE, 5)) { + mMsg_SetTimer(msg_p, 20.0f); + } } static void mMsg_Main_Appear(mMsg_Window_c* msg_p, GAME* game) { - int scaling_done_flag = mMsg_Main_Appear_SetScale(msg_p, game); - mMsg_request_main_index_fromAppear(msg_p, game, scaling_done_flag); - mMsg_MainSetup_Window(msg_p, game); + int scaling_done_flag = mMsg_Main_Appear_SetScale(msg_p, game); + mMsg_request_main_index_fromAppear(msg_p, game, scaling_done_flag); + mMsg_MainSetup_Window(msg_p, game); } static void mMsg_MainSetup_Appear(mMsg_Window_c* msg_p, GAME* game) { - mMsg_Request_MainAppear_Data_c* appear_data = &msg_p->request_data.request_main_appear; - int msg_no = appear_data->msg_no; + mMsg_Request_MainAppear_Data_c* appear_data = &msg_p->request_data.request_main_appear; + int msg_no = appear_data->msg_no; - if (mMsg_LoadMsgData(msg_p->msg_data, msg_no, FALSE)) { - ACTOR* actor = appear_data->speaker_actor; - int show_name = appear_data->name_shown_flag; + if (mMsg_LoadMsgData(msg_p->msg_data, msg_no, FALSE)) { + ACTOR* actor = appear_data->speaker_actor; + int show_name = appear_data->name_shown_flag; - mMsg_Set_client_actor_p(msg_p, actor, show_name); - msg_p->window_background_color = appear_data->window_color; - mMsg_sound_spec_change_voice(msg_p); - mMsg_sound_voice_mode(msg_p); - msg_p->main_index = mMsg_INDEX_APPEAR; - msg_p->draw_flag = TRUE; - msg_p->window_scale = 0.0f; - msg_p->text_scale = 0.0f; - msg_p->timer = 0.0f; - msg_p->show_continue_button = FALSE; - msg_p->requested_main_index = -1; - msg_p->requested_priority = 4; - msg_p->start_text_cursor_idx = 0; - msg_p->end_text_cursor_idx = 0; + mMsg_Set_client_actor_p(msg_p, actor, show_name); + msg_p->window_background_color = appear_data->window_color; + mMsg_sound_spec_change_voice(msg_p); + mMsg_sound_voice_mode(msg_p); + msg_p->main_index = mMsg_INDEX_APPEAR; + msg_p->draw_flag = TRUE; + msg_p->window_scale = 0.0f; + msg_p->text_scale = 0.0f; + msg_p->timer = 0.0f; + msg_p->show_continue_button = FALSE; + msg_p->requested_main_index = -1; + msg_p->requested_priority = 4; + msg_p->start_text_cursor_idx = 0; + msg_p->end_text_cursor_idx = 0; - if (msg_p->client_actor_p != NULL) { - switch (mNpc_GetNpcSex(msg_p->client_actor_p)) { - case mPr_SEX_MALE: - msg_p->name_background_color.r = 70; - msg_p->name_background_color.g = 245; - msg_p->name_background_color.b = 255; - msg_p->name_text_color.r = 0; - msg_p->name_text_color.g = 0; - msg_p->name_text_color.b = 15; - break; - - case mPr_SEX_FEMALE: - msg_p->name_background_color.r = 235; - msg_p->name_background_color.g = 140; - msg_p->name_background_color.b = 210; - msg_p->name_text_color.r = 45; - msg_p->name_text_color.g = 0; - msg_p->name_text_color.b = 30; - break; + if (msg_p->client_actor_p != NULL) { + switch (mNpc_GetNpcSex(msg_p->client_actor_p)) { + case mPr_SEX_MALE: + msg_p->name_background_color.r = 70; + msg_p->name_background_color.g = 245; + msg_p->name_background_color.b = 255; + msg_p->name_text_color.r = 0; + msg_p->name_text_color.g = 0; + msg_p->name_text_color.b = 15; + break; - default: - msg_p->name_background_color.r = 185; - msg_p->name_background_color.g = 255; - msg_p->name_background_color.b = 0; - msg_p->name_text_color.r = 0; - msg_p->name_text_color.g = 30; - msg_p->name_text_color.b = 0; - break; - } + case mPr_SEX_FEMALE: + msg_p->name_background_color.r = 235; + msg_p->name_background_color.g = 140; + msg_p->name_background_color.b = 210; + msg_p->name_text_color.r = 45; + msg_p->name_text_color.g = 0; + msg_p->name_text_color.b = 30; + break; + + default: + msg_p->name_background_color.r = 185; + msg_p->name_background_color.g = 255; + msg_p->name_background_color.b = 0; + msg_p->name_text_color.r = 0; + msg_p->name_text_color.g = 30; + msg_p->name_text_color.b = 0; + break; + } + } + + msg_p->data_loaded = TRUE; + emu64_refresh(); + } else { + msg_p->data_loaded = FALSE; } - - msg_p->data_loaded = TRUE; - emu64_refresh(); - } - else { - msg_p->data_loaded = FALSE; - } } diff --git a/src/m_msg_disappear.c_inc b/src/m_msg_disappear.c_inc index 39ba7838..959ef060 100644 --- a/src/m_msg_disappear.c_inc +++ b/src/m_msg_disappear.c_inc @@ -1,53 +1,49 @@ static int mMsg_Main_Disappear_SetScale(mMsg_Window_c* msg_p, GAME* game) { - const f32 max = 18.0f; + if (msg_p->timer < 18.0f) { + f32 scale; - if (msg_p->timer < max) { - f32 scale; - - msg_p->timer += 1.0f; - scale = 1.0f - get_percent_forAccelBrake(msg_p->timer, 0.0f, max, 0.0f, 0.0f); - msg_p->window_scale = scale; - msg_p->text_scale = scale; - return FALSE; - } - else { - msg_p->window_scale = 0.0f; - msg_p->text_scale = 0.0f; - msg_p->timer = 0.0f; - return TRUE; - } + msg_p->timer += 1.0f; + scale = 1.0f - get_percent_forAccelBrake(msg_p->timer, 0.0f, 18.0f, 0.0f, 0.0f); + msg_p->window_scale = scale; + msg_p->text_scale = scale; + return FALSE; + } else { + msg_p->window_scale = 0.0f; + msg_p->text_scale = 0.0f; + msg_p->timer = 0.0f; + return TRUE; + } } static void mMsg_request_main_index_fromDisappear(mMsg_Window_c* msg_p, int scale_done_flag) { - if (scale_done_flag) { - mMsg_Change_request_main_index(msg_p, mMsg_INDEX_HIDE, 5); - } + if (scale_done_flag) { + mMsg_Change_request_main_index(msg_p, mMsg_INDEX_HIDE, 5); + } } static void mMsg_Main_Disappear(mMsg_Window_c* msg_p, GAME* game) { - int scaling_done_flag = mMsg_Main_Disappear_SetScale(msg_p, game); - mMsg_request_main_index_fromDisappear(msg_p, scaling_done_flag); - mMsg_MainSetup_Window(msg_p, game); + int scaling_done_flag = mMsg_Main_Disappear_SetScale(msg_p, game); + mMsg_request_main_index_fromDisappear(msg_p, scaling_done_flag); + mMsg_MainSetup_Window(msg_p, game); } static void mMsg_MainSetup_Disappear(mMsg_Window_c* msg_p, GAME* game) { - mMsg_sound_spec_change_scene(msg_p); - msg_p->main_index = mMsg_INDEX_DISAPPEAR; - msg_p->draw_flag = TRUE; - msg_p->window_scale = 1.0f; - msg_p->text_scale = 1.0f; - msg_p->timer = 0.0f; - msg_p->show_continue_button = FALSE; + mMsg_sound_spec_change_scene(msg_p); + msg_p->main_index = mMsg_INDEX_DISAPPEAR; + msg_p->draw_flag = TRUE; + msg_p->window_scale = 1.0f; + msg_p->text_scale = 1.0f; + msg_p->timer = 0.0f; + msg_p->show_continue_button = FALSE; - if (mDemo_Get_use_zoom_sound()) { - if (mDemo_Get_camera() == FALSE) { - mMsg_sound_ZOOMDOWN_SHORT(msg_p); + if (mDemo_Get_use_zoom_sound()) { + if (mDemo_Get_camera() == FALSE) { + mMsg_sound_ZOOMDOWN_SHORT(msg_p); + } else { + mMsg_sound_ZOOMDOWN_LONG(msg_p); + } } - else { - mMsg_sound_ZOOMDOWN_LONG(msg_p); - } - } - msg_p->requested_main_index = -1; - msg_p->requested_priority = 4; + msg_p->requested_main_index = -1; + msg_p->requested_priority = 4; } diff --git a/src/m_player.c b/src/m_player.c index 866e41e2..59bc17da 100644 --- a/src/m_player.c +++ b/src/m_player.c @@ -1,5 +1,6 @@ #include "m_player_lib.h" +#include "libultra/libultra.h" #include "m_play.h" #include "m_common_data.h" #include "m_actor_shadow.h" @@ -12,6 +13,58 @@ #include "ac_set_ovl_insect.h" #include "m_house.h" +/* Static function declarations, add as needed for intellisense */ +static int Player_actor_check_request_main_able(GAME* game, int request_main_index, int priority); +static void Player_actor_request_main_index(GAME* game, int request_index, int priority); +static void Player_actor_InitAnimation_Base1(ACTOR* actorx, GAME* game, int anim0_idx, int anim1_idx, f32 anim0_frame, + f32 anim1_frame, f32 frame_speed, f32 morph_counter, int part_table_idx); +static void Player_actor_InitAnimation_Base2(ACTOR* actorx, GAME* game, int anim0_idx, int anim1_idx, f32 anim0_frame, + f32 anim1_frame, f32 frame_speed, f32 morph_counter, int mode, + int part_table_idx); +static void Player_actor_InitAnimation_Base3(ACTOR* actorx, GAME* game, int anim0_idx, int anim1_idx, f32 frame_speed, + f32 morph_counter, int mode, int part_table_idx); +static void Player_actor_SetupItem_Base1(ACTOR* actorx, int anim1_idx, f32 item_morph_speed, int* anim1_idx_p, + int* part_table_idx_p); +static void Player_actor_setup_main_Base(ACTOR* actorx, GAME* game); +static int Player_actor_Movement_Base_Braking_common(ACTOR* actorx, f32 brake_amount); +static int Player_actor_Movement_Base_Braking(ACTOR* actorx); +static void Player_actor_Movement_Base_Stop(ACTOR* actorx, int use_position_speed_y); +static int Player_actor_CulcAnimation_Base2(ACTOR* actorx, f32* last_anim0_current_frame_p); +static int Player_actor_Check_AnimationFrame_PerfectEquel(ACTOR* actorx, f32 frame); +static int Player_actor_Check_AnimationFrame(cKF_FrameControl_c* fc_p, f32 target_frame); +static void Player_actor_set_eye_pattern(ACTOR* actorx, int idx); +static void Player_actor_set_eye_pattern_normal(ACTOR* actorx); +static void Player_actor_set_mouth_pattern(ACTOR* actorx, int idx); +static void Player_actor_set_tex_anime_pattern(ACTOR* actorx); +static void Player_actor_Excute_Corect_forBrake(ACTOR* actorx, GAME* game); +static void Player_actor_Excute_Corect_forStand(ACTOR* actorx, GAME* game); +static void Player_actor_BGcheck_common_type1(ACTOR* actorx); +static void Player_actor_BGcheck_common_type2(ACTOR* actorx); +static void Player_actor_BGcheck_common_type3(ACTOR* actorx); +static int Player_actor_RecieveDemoOrder_EffectOrder(void); +static void Player_actor_Reinput_force_position_angle(ACTOR* actorx, GAME* game); +static void Player_actor_recover_lean_angle(ACTOR* actorx); +static int Player_actor_Check_TradingItemMode(u8 mode); +static void Player_actor_SettleRequestMainIndexPriority(ACTOR* actorx); +static int Player_actor_check_item_is_fish(mActor_name_t item); +static void Player_actor_Change_ItemParent(ACTOR* actor); +static void Player_actor_Set_item_matrix_set(ACTOR* actorx); +static void Player_actor_Unset_item_matrix_set(ACTOR* actorx); +static void Player_actor_Birth_TradingItem(ACTOR* actor, mActor_name_t item, int mode, int present_flag); +static void Player_actor_CHange_TradingItemMode(ACTOR* actorx, u8 mode); +static int Player_actor_Check_ItemParent(ACTOR* actor); +static ACTOR* Player_actor_Get_umbrella_p(ACTOR* actor, GAME* game); +static s8 Player_actor_Get_ItemKind(ACTOR* actor, int kind); +static void Player_actor_Set_now_item_main_index(ACTOR* actorx, int item_main_index); +static void Player_actor_SetEffect_forTakeout_item(ACTOR* actorx, GAME* game); +static void Player_actor_Set_FootMark_Base1(ACTOR* actorx, GAME* game, int disable_effect, int disable_sound); +static s8 Player_actor_Get_ItemKind_from_submenu(void); + +static int Player_actor_Item_main(ACTOR* actorx, GAME* game); +static void Player_actor_LoadOrDestruct_Item(ACTOR* actor, int kind, int anim_idx, int mode, f32 speed, f32 morph_speed, + f32 frame); +static int Player_actor_Get_BasicItemMainIndex_fromItemKind(int kind); + /* Common */ #include "../src/m_player_controller.c_inc" #include "../src/m_player_vibration.c_inc" diff --git a/src/m_player_common.c_inc b/src/m_player_common.c_inc index 4bedc8b9..24e4b710 100644 --- a/src/m_player_common.c_inc +++ b/src/m_player_common.c_inc @@ -2299,7 +2299,7 @@ static void Player_actor_putin_furniture(GAME* game, int slot, mActor_name_t ite } } -static int Player_actor_Check_AnimationFrame_PerfectEqual(ACTOR* actorx, f32 frame) { +static int Player_actor_Check_AnimationFrame_PerfectEquel(ACTOR* actorx, f32 frame) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; cKF_FrameControl_c* fc_p = &kf0_p->frame_control; @@ -4771,13 +4771,13 @@ static int Player_actor_check_request_change_item(GAME* game) { } static int Player_actor_check_item_is_fish(mActor_name_t item) { -/* @BUG - these macros should be swapped */ -#ifndef BUGFIXES - if (ITEM_NAME_GET_CAT(item) == NAME_TYPE_ITEM1 && ITEM_NAME_GET_TYPE(item) == ITEM1_CAT_FISH) { +#if defined(BUGFIXES) + if (ITEM_NAME_GET_TYPE(item) == NAME_TYPE_ITEM1 && ITEM_NAME_GET_CAT(item) == ITEM1_CAT_FISH) { return TRUE; } #else - if (ITEM_NAME_GET_TYPE(item) == NAME_TYPE_ITEM1 && ITEM_NAME_GET_CAT(item) == ITEM1_CAT_FISH) { + // @BUG - these macros should be swapped + if (ITEM_NAME_GET_CAT(item) == NAME_TYPE_ITEM1 && ITEM_NAME_GET_TYPE(item) == ITEM1_CAT_FISH) { return TRUE; } #endif @@ -6242,18 +6242,24 @@ static int Player_actor_Set_shake_tree_table(ACTOR* actorx, GAME* game, mActor_n if (little_flag == FALSE) { for (i = 0; i < 3; i++) { -/* @BUG - *shake_ut_z_p is missing an = sign */ -#ifndef BUGFIXES - if ((*shake_ut_x_p == tree_ut_x) && (*shake_ut_z_p = tree_ut_z)) { -#else +#if defined(BUGFIXES) if ((*shake_ut_x_p == tree_ut_x) && (*shake_ut_z_p == tree_ut_z)) { -#endif Player_actor_Set_EffectBgTree(game, item, EffectBG_EFFECT_SHAKE_LARGE, tree_ut_x, tree_ut_z); *shake_timer_p = 84.0f; *shake_tree_little_p = FALSE; return TRUE; } +#else + // @BUG - *shake_ut_z_p is missing an = sign + if ((*shake_ut_x_p == tree_ut_x) && (*shake_ut_z_p = tree_ut_z)) { + Player_actor_Set_EffectBgTree(game, item, EffectBG_EFFECT_SHAKE_LARGE, tree_ut_x, tree_ut_z); + *shake_timer_p = 84.0f; + *shake_tree_little_p = FALSE; + return TRUE; + } +#endif + shake_timer_p++; shake_ut_x_p++; shake_ut_z_p++; diff --git a/src/m_player_item_common.c_inc b/src/m_player_item_common.c_inc index 75b16f6b..babdb80e 100644 --- a/src/m_player_item_common.c_inc +++ b/src/m_player_item_common.c_inc @@ -1,10 +1,10 @@ -void Player_actor_Set_ItemNoSubmenu(mActor_name_t item) { +static void Player_actor_Set_ItemNoSubmenu(mActor_name_t item) { if (mEv_CheckTitleDemo() <= 0) { Common_Get(now_private)->equipment = item; } } -mActor_name_t Player_actor_Get_ItemNoSubmenu() { +mActor_name_t Player_actor_Get_ItemNoSubmenu(void) { if (mEv_CheckTitleDemo() > 0) { return mPlib_Get_controller_data_for_title_demo_p()->equiped_item; } else { @@ -12,19 +12,18 @@ mActor_name_t Player_actor_Get_ItemNoSubmenu() { } } -s8 Player_actor_Get_ItemKind_from_submenu() { +static s8 Player_actor_Get_ItemKind_from_submenu(void) { return mPlib_Get_ItemNoToItemKind(Player_actor_Get_ItemNoSubmenu()); } -s8 Player_actor_Get_ItemKind_fromScene() { +static s8 Player_actor_Get_ItemKind_fromScene(void) { if (Player_actor_CheckScene_AbleOutItem(Save_Get(scene_no)) != 0) { return Player_actor_Get_ItemKind_from_submenu(); } return -1; } - -s8 Player_actor_Get_ItemKind(ACTOR* actor, int kind) { +static s8 Player_actor_Get_ItemKind(ACTOR* actor, int kind) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; int able = Player_actor_CheckPlayer_AbleLoadItem(kind); s8 scene_kind = Player_actor_Get_ItemKind_fromScene(); @@ -51,7 +50,7 @@ s8 Player_actor_Get_ItemKind(ACTOR* actor, int kind) { return -1; } -int Player_actor_Get_BasicItemMainIndex_fromItemKind(int kind) { +static int Player_actor_Get_BasicItemMainIndex_fromItemKind(int kind) { static s8 data[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 20, @@ -65,8 +64,7 @@ int Player_actor_Get_BasicItemMainIndex_fromItemKind(int kind) { } } - -void Player_actor_birth_umbrella(ACTOR* actor, GAME* game) { +static void Player_actor_birth_umbrella(ACTOR* actor, GAME* game) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; int is_umbrella; aTOL_Clip_c* tools; @@ -109,17 +107,17 @@ ACTOR* Player_actor_Get_umbrella_p(ACTOR* actor, GAME* game) { return NULL; } -int Player_actor_Item_CulcAnimation_Base(ACTOR* actor) { +static int Player_actor_Item_CulcAnimation_Base(ACTOR* actor) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; return cKF_SkeletonInfo_R_play(&player->item_keyframe); } -int Player_actor_Item_CulcAnimation_Base2(ACTOR* actor) { +static int Player_actor_Item_CulcAnimation_Base2(ACTOR* actor) { return Player_actor_Item_CulcAnimation_Base(actor) == 1; } -void Player_actor_Item_SetAnimation_Base(ACTOR* actor, f32 frame) { +static void Player_actor_Item_SetAnimation_Base(ACTOR* actor, f32 frame) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; cKF_SkeletonInfo_R_c* keyf = &player->item_keyframe; @@ -128,8 +126,8 @@ void Player_actor_Item_SetAnimation_Base(ACTOR* actor, f32 frame) { keyf->frame_control.current_frame = frame; } -void Player_actor_Item_DMA_Data(ACTOR* actor, int skl_idx, int anim_idx, int mode, f32 speed, f32 morph_speed, - f32 frame) { +static void Player_actor_Item_DMA_Data(ACTOR* actor, int skl_idx, int anim_idx, int mode, f32 speed, f32 morph_speed, + f32 frame) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; int change_bank = Player_actor_Change_ItemBank(); @@ -161,8 +159,7 @@ void Player_actor_Item_DMA_Data(ACTOR* actor, int skl_idx, int anim_idx, int mod } } - -void Player_actor_Item_Set_Command_forUki(ACTOR* actor, int command) { +static void Player_actor_Item_Set_Command_forUki(ACTOR* actor, int command) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; @@ -171,8 +168,7 @@ void Player_actor_Item_Set_Command_forUki(ACTOR* actor, int command) { } } - -void Player_actor_Item_Set_RightHandPos_forUki(ACTOR* actor, int arg0) { +static void Player_actor_Item_Set_RightHandPos_forUki(ACTOR* actor, int arg0) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; @@ -204,8 +200,7 @@ void Player_actor_Item_Set_RightHandPos_forUki(ACTOR* actor, int arg0) { } } - -void Player_actor_Item_Set_LeftHandPos_forUki(ACTOR* actor, int arg0) { +static void Player_actor_Item_Set_LeftHandPos_forUki(ACTOR* actor, int arg0) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; @@ -237,8 +232,7 @@ void Player_actor_Item_Set_LeftHandPos_forUki(ACTOR* actor, int arg0) { } } - -void Player_actor_Item_Set_PosSpeed_forUki(ACTOR* actor) { +static void Player_actor_Item_Set_PosSpeed_forUki(ACTOR* actor) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; @@ -247,7 +241,7 @@ void Player_actor_Item_Set_PosSpeed_forUki(ACTOR* actor) { } } -void Player_actor_Item_Set_AngleSpeedY_forUki(ACTOR* actor) { +static void Player_actor_Item_Set_AngleSpeedY_forUki(ACTOR* actor) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; @@ -266,7 +260,7 @@ void Player_actor_Item_Set_AngleSpeedY_forUki(ACTOR* actor) { } } -void Player_actor_Item_Set_RodTopPos_forUki(ACTOR* actor) { +static void Player_actor_Item_Set_RodTopPos_forUki(ACTOR* actor) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; @@ -275,9 +269,8 @@ void Player_actor_Item_Set_RodTopPos_forUki(ACTOR* actor) { } } - -void Player_actor_LoadOrDestruct_Item(ACTOR* actor, int kind, int anim_idx, int mode, f32 speed, f32 morph_speed, - f32 frame) { +static void Player_actor_LoadOrDestruct_Item(ACTOR* actor, int kind, int anim_idx, int mode, f32 speed, f32 morph_speed, + f32 frame) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; int umbrella; int rod; @@ -320,8 +313,7 @@ void Player_actor_LoadOrDestruct_Item(ACTOR* actor, int kind, int anim_idx, int } } - -void Player_actor_CorrectSomething_net(ACTOR* actor, xyz_t* pos) { +static void Player_actor_CorrectSomething_net(ACTOR* actor, xyz_t* pos) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; TOOLS_ACTOR* label = (TOOLS_ACTOR*)player->item_net_catch_label; @@ -334,7 +326,7 @@ void Player_actor_CorrectSomething_net(ACTOR* actor, xyz_t* pos) { } } -int Player_actor_Check_ItemAnimationToItemKind(int kind, int anim) { +static int Player_actor_Check_ItemAnimationToItemKind(int kind, int anim) { int res; if (mPlayer_ITEM_IS_AXE(kind) != FALSE) { diff --git a/src/m_player_main_give.c_inc b/src/m_player_main_give.c_inc index e69de29b..66283d5f 100644 --- a/src/m_player_main_give.c_inc +++ b/src/m_player_main_give.c_inc @@ -0,0 +1,124 @@ +static int Player_actor_request_main_give_all(GAME* game, ACTOR* talk_actor_p, int turn_flag, int ret_main_index, + mActor_name_t item, int mode, int present_flag, int surface_flag, + int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_GIVE, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_give_c* req_give_p = &player->requested_main_index_data.give; + + Player_actor_request_main_index(game, mPlayer_INDEX_GIVE, priority); + req_give_p->talk_actor = talk_actor_p; + req_give_p->turn_flag = turn_flag; + req_give_p->prev_main_index = ret_main_index; + req_give_p->item = item; + req_give_p->mode = mode; + req_give_p->present_flag = present_flag; + req_give_p->on_surface_flag = surface_flag; + return TRUE; + } + + return FALSE; +} + +static void Player_actor_request_main_give_from_submenu(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int main_index = player->now_main_index; + ACTOR* talk_actor_p; + int turn_flag; + mPlayer_request_give_from_submenu_c* req_give_from_submenu_p; + + req_give_from_submenu_p = &mPlib_Get_change_data_from_submenu_p()->request_main_data.give_from_submenu; + if (main_index == mPlayer_INDEX_TALK) { + talk_actor_p = player->main_data.talk.talk_actor_p; + turn_flag = player->main_data.talk.turn_flag; + } else { + talk_actor_p = NULL; + turn_flag = FALSE; + } + + Player_actor_request_main_give_all(game, talk_actor_p, turn_flag, main_index, req_give_from_submenu_p->item, + req_give_from_submenu_p->mode_after, req_give_from_submenu_p->present_flag, + req_give_from_submenu_p->counter_flag, mPlayer_REQUEST_PRIORITY_31); +} + +static void Player_actor_setup_main_Give(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_request_give_c* req_give_p = &player->requested_main_index_data.give; + mPlayer_main_give_c* main_give_p = &player->main_data.give; + mActor_name_t item; + int mode; + int present_flag; + int anim0_idx; + int anim1_idx; + int part_table_idx; + + item = req_give_p->item; + mode = req_give_p->mode; + present_flag = req_give_p->present_flag; + + main_give_p->talk_actor_p = req_give_p->talk_actor; + main_give_p->turn_flag = req_give_p->turn_flag; + main_give_p->ret_main_index = req_give_p->prev_main_index; + main_give_p->item = req_give_p->item; + main_give_p->surface_flag = req_give_p->on_surface_flag; + + if (Player_actor_check_item_is_fish(item)) { + anim0_idx = mPlayer_ANIM_TRANSFER_F1; + } else if (main_give_p->surface_flag) { + anim0_idx = mPlayer_ANIM_SEND_MAIL1; + } else { + anim0_idx = mPlayer_ANIM_TRANSFER1; + } + + Player_actor_SetupItem_Base1(actorx, anim0_idx, -5.0f, &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base2(actorx, game, anim0_idx, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, cKF_FRAMECONTROL_STOP, + part_table_idx); + Player_actor_setup_main_Base(actorx, game); + Player_actor_Birth_TradingItem(actorx, item, mode, present_flag); + Player_actor_Set_item_matrix_set(actorx); + Player_actor_sound_GASAGOSO(actorx); +} + +static void Player_actor_Movement_Give(ACTOR* actorx) { + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static int Player_actor_CulcAnimation_Give(ACTOR* actorx) { + f32 dummy; + + return Player_actor_CulcAnimation_Base2(actorx, &dummy); +} + +static void Player_actor_ObjCheck_Give(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_request_proc_index_fromGive(ACTOR* actorx, GAME* game, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (end_flag) { + int after_mode = Common_Get(clip).handOverItem_clip->player_after_mode; + mPlayer_main_give_c* main_give_p = &player->main_data.give; + ACTOR* talk_actor_p = main_give_p->talk_actor_p; + int turn_flag = main_give_p->turn_flag; + int ret_main_index = main_give_p->ret_main_index; + + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_give_wait_all(game, talk_actor_p, turn_flag, ret_main_index, main_give_p->item, + main_give_p->surface_flag, mPlayer_REQUEST_PRIORITY_19); + } +} + +static void Player_actor_main_Give(ACTOR* actorx, GAME* game) { + int end_flag; + + Player_actor_Movement_Give(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + end_flag = Player_actor_CulcAnimation_Give(actorx); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Give(actorx, game); + Player_actor_BGcheck_Wait(actorx); + Player_actor_Set_item_matrix_set(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromGive(actorx, game, end_flag); +} diff --git a/src/m_player_main_give_wait.c_inc b/src/m_player_main_give_wait.c_inc index e69de29b..dd79675c 100644 --- a/src/m_player_main_give_wait.c_inc +++ b/src/m_player_main_give_wait.c_inc @@ -0,0 +1,119 @@ +static int Player_actor_request_main_give_wait_all(GAME* game, ACTOR* talk_actor_p, int turn_flag, int ret_main_index, + mActor_name_t item, int surface_flag, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_GIVE_WAIT, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_give_wait_c* req_give_wait_p = &player->requested_main_index_data.give_wait; + + Player_actor_request_main_index(game, mPlayer_INDEX_GIVE_WAIT, priority); + req_give_wait_p->talk_actor = talk_actor_p; + req_give_wait_p->turn_flag = turn_flag; + req_give_wait_p->prev_main_index = ret_main_index; + req_give_wait_p->item = item; + req_give_wait_p->on_surface_flag = surface_flag; + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Give_wait(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_request_give_wait_c* req_give_wait_p = &player->requested_main_index_data.give_wait; + mPlayer_main_give_wait_c* main_give_wait_p = &player->main_data.give_wait; + mActor_name_t item; + int anim0_idx; + int anim1_idx; + int part_table_idx; + + item = req_give_wait_p->item; + + main_give_wait_p->talk_actor_p = req_give_wait_p->talk_actor; + main_give_wait_p->turn_flag = req_give_wait_p->turn_flag; + main_give_wait_p->ret_main_index = req_give_wait_p->prev_main_index; + main_give_wait_p->surface_flag = req_give_wait_p->on_surface_flag; + + if (Player_actor_check_item_is_fish(item)) { + anim0_idx = mPlayer_ANIM_TRANS_WAIT_F1; + } else if (main_give_wait_p->surface_flag) { + anim0_idx = mPlayer_ANIM_WAIT1; + } else { + anim0_idx = mPlayer_ANIM_TRANS_WAIT1; + } + + Player_actor_SetupItem_Base1(actorx, anim0_idx, -5.0f, &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actorx, game, anim0_idx, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, part_table_idx); + Player_actor_setup_main_Base(actorx, game); + Player_actor_CHange_TradingItemMode(actorx, aHOI_REQUEST_TRANS_WAIT); + + /* Handing items over a surface (like the mail counter), item does not need to be attached to player's hand */ + if (main_give_wait_p->surface_flag == FALSE) { + Player_actor_Set_item_matrix_set(actorx); + } +} + +static void Player_actor_settle_main_Give_wait(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_give_wait_c* main_give_wait_p = &player->main_data.give_wait; + + /* Handing items over a surface (like the mail counter), item does not need to be attached to player's hand */ + if (main_give_wait_p->surface_flag == FALSE) { + Player_actor_Unset_item_matrix_set(actorx); + } +} + +static void Player_actor_Movement_Give_wait(ACTOR* actorx) { + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static int Player_actor_CulcAnimation_Give_wait(ACTOR* actorx) { + f32 dummy; + + return Player_actor_CulcAnimation_Base2(actorx, &dummy); +} + +static void Player_actor_ObjCheck_Give_wait(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_Set_item_matrix_set_Give_wait(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_give_wait_c* main_give_wait_p = &player->main_data.give_wait; + + /* Handing items over a surface (like the mail counter), item does not need to be attached to player's hand */ + if (main_give_wait_p->surface_flag == FALSE) { + Player_actor_Set_item_matrix_set(actorx); + } +} + +static void Player_actor_request_proc_index_fromGive_wait(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (Player_actor_Check_ItemParent(actorx) == FALSE) { + mPlayer_main_give_wait_c* main_give_wait_p = &player->main_data.give_wait; + int ret_main_index = main_give_wait_p->ret_main_index; + + Player_actor_SettleRequestMainIndexPriority(actorx); + + if (ret_main_index != mPlayer_INDEX_TALK) { + Player_actor_request_main_demo_wait_all(game, FALSE, 0, mPlayer_REQUEST_PRIORITY_19); + } else { + ACTOR* talk_actor_p = main_give_wait_p->talk_actor_p; + int turn_flag = main_give_wait_p->turn_flag; + Player_actor_request_main_talk_all(game, talk_actor_p, turn_flag, -12.0f, FALSE, + mPlayer_REQUEST_PRIORITY_19); + } + } +} + +static void Player_actor_main_Give_wait(ACTOR* actorx, GAME* game) { + Player_actor_Movement_Give_wait(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_CulcAnimation_Give_wait(actorx); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Give_wait(actorx, game); + Player_actor_BGcheck_Wait(actorx); + Player_actor_Set_item_matrix_set_Give_wait(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromGive_wait(actorx, game); +} diff --git a/src/m_player_main_putin_item.c_inc b/src/m_player_main_putin_item.c_inc index e69de29b..e2f6fba7 100644 --- a/src/m_player_main_putin_item.c_inc +++ b/src/m_player_main_putin_item.c_inc @@ -0,0 +1,125 @@ +static int Player_actor_request_main_putin_item(GAME* game, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_PUTIN_ITEM, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_putin_item_c* req_putin_item_p = &player->requested_main_index_data.putin_item; + + req_putin_item_p->request_main_index = player->requested_main_index; + Player_actor_request_main_index(game, mPlayer_INDEX_PUTIN_ITEM, priority); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Putin_item(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_request_putin_item_c* req_putin_item_p = &player->requested_main_index_data.putin_item; + mPlayer_main_putin_item_c* main_putin_item_p = &player->main_data.putin_item; + int item_kind; + int anim_idx; + f32 morph_counter; + + item_kind = Player_actor_Get_ItemKind_from_submenu(); + + main_putin_item_p->back_request_data = *req_putin_item_p; + main_putin_item_p->timer = 0.0f; + + Player_actor_LoadOrDestruct_Item(actorx, item_kind, mPlib_Get_BasicItemAnimeIndex_fromItemKind(item_kind), + cKF_FRAMECONTROL_REPEAT, 0.5f, 5.0f, -1.0f); + Player_actor_Set_now_item_main_index(actorx, Player_actor_Get_BasicItemMainIndex_fromItemKind(item_kind)); + player->item_kind = item_kind; + + if (mPlayer_ITEM_IS_UMBRELLA(item_kind) != FALSE) { + anim_idx = mPlayer_ANIM_UMB_CLOSE1; + morph_counter = -5.0f; + + if (player->umbrella_actor != NULL) { + if (Common_Get(clip).tools_clip != NULL) { + Common_Get(clip).tools_clip->aTOL_chg_request_mode_proc(actorx, player->umbrella_actor, + aTOL_ACTION_PUTAWAY); + } + } else { + ACTOR* umbrella_p; + + player->umbrella_state = aTOL_ACTION_PUTAWAY; + umbrella_p = Player_actor_Get_umbrella_p(actorx, game); + player->umbrella_actor = umbrella_p; + } + } else { + anim_idx = mPlayer_ANIM_PUTAWAY1; + morph_counter = 9.0f; + } + + Player_actor_InitAnimation_Base2(actorx, game, anim_idx, anim_idx, 1.0f, 1.0f, 0.5f, morph_counter, + cKF_FRAMECONTROL_STOP, mPlayer_PART_TABLE_NORMAL); + Player_actor_setup_main_Base(actorx, game); + Player_actor_sound_GASAGOSO(actorx); +} + +static void Player_actor_Movement_Putin_item(ACTOR* actorx) { + Player_actor_Movement_Base_Braking_common(actorx, 0.32625f); +} + +static int Player_actor_CulcAnimation_Putin_item(ACTOR* actorx, f32* last_anim0_cur_frame_p) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame_p); +} + +static void Player_actor_ObjCheck_Putin_item(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Putin_item(ACTOR* actorx) { + Player_actor_BGcheck_common_type1(actorx); +} + +static void Player_actor_SetItemScale_Putin_item(ACTOR* actorx) { + int item_kind = Player_actor_Get_ItemKind_from_submenu(); + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_putin_item_c* main_putin_item_p = &player->main_data.putin_item; + f32* timer_p = &main_putin_item_p->timer; + + if (mPlayer_ITEM_IS_UMBRELLA(item_kind) == FALSE) { + f32 timer = *timer_p; + + if (*timer_p < 18.0f) { + (*timer_p) += 1.0f; + player->item_scale = 1.0f - get_percent_forAccelBrake(*timer_p, 0.0f, 18.0f, 0.0f, 0.0f); + } + } +} + +static void Player_actor_SearchAnimation_Putin_item(ACTOR* actorx, GAME* game, f32 frame) { + if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE) { + Player_actor_Set_FootMark_Base1(actorx, game, FALSE, FALSE); + } +} + +static void Player_actor_request_proc_index_fromPutin_item(ACTOR* actorx, GAME* game, int end_flag) { + if (end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_putin_item_c* main_putin_item_p = &player->main_data.putin_item; + + Player_actor_SettleRequestMainIndexPriority(actorx); + bcopy(&main_putin_item_p->back_request_data.request_data, &player->requested_main_index_data, + sizeof(mPlayer_request_backup_u)); + Player_actor_request_main_index(game, main_putin_item_p->back_request_data.request_main_index, + mPlayer_REQUEST_PRIORITY_37); + } +} + +static void Player_actor_main_Putin_item(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + int end_flag; + + Player_actor_Movement_Putin_item(actorx); + end_flag = Player_actor_CulcAnimation_Putin_item(actorx, &last_anim0_cur_frame); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_SetItemScale_Putin_item(actorx); + Player_actor_SearchAnimation_Putin_item(actorx, game, last_anim0_cur_frame); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Putin_item(actorx, game); + Player_actor_BGcheck_Putin_item(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromPutin_item(actorx, game, end_flag); +} diff --git a/src/m_player_main_recieve.c_inc b/src/m_player_main_recieve.c_inc index e69de29b..c340e063 100644 --- a/src/m_player_main_recieve.c_inc +++ b/src/m_player_main_recieve.c_inc @@ -0,0 +1,99 @@ +static int Player_actor_request_main_recieve(GAME* game, ACTOR* talk_actor_p, int turn_flag, int ret_main_index, + mActor_name_t item, int surface_flag, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_RECIEVE, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_recieve_c* req_recieve_p = &player->requested_main_index_data.recieve; + + Player_actor_request_main_index(game, mPlayer_INDEX_RECIEVE, priority); + req_recieve_p->talk_actor = talk_actor_p; + req_recieve_p->turn_flag = turn_flag; + req_recieve_p->prev_main_index = ret_main_index; + req_recieve_p->item = item; + req_recieve_p->on_surface_flag = surface_flag; + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Recieve(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_request_recieve_c* req_recieve_p = &player->requested_main_index_data.recieve; + mPlayer_main_recieve_c* main_recieve_p = &player->main_data.recieve; + mActor_name_t item; + int anim0_idx; + int anim1_idx; + int part_table_idx; + + item = req_recieve_p->item; + main_recieve_p->talk_actor_p = req_recieve_p->talk_actor; + main_recieve_p->turn_flag = req_recieve_p->turn_flag; + main_recieve_p->ret_main_index = req_recieve_p->prev_main_index; + main_recieve_p->item = item; + main_recieve_p->surface_flag = req_recieve_p->on_surface_flag; + + if (Player_actor_check_item_is_fish(item)) { + anim0_idx = mPlayer_ANIM_GET_PULL_F1; + } else if (main_recieve_p->surface_flag) { + anim0_idx = mPlayer_ANIM_RETURN_MAIL2; + } else { + anim0_idx = mPlayer_ANIM_GET_PULL1; + } + + Player_actor_SetupItem_Base1(actorx, anim0_idx, -5.0f, &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base2(actorx, game, anim0_idx, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, cKF_FRAMECONTROL_STOP, + part_table_idx); + Player_actor_setup_main_Base(actorx, game); + Player_actor_Change_ItemParent(actorx); + Player_actor_Set_item_matrix_set(actorx); +} + +static void Player_actor_Movement_Recieve(ACTOR* actorx) { + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static int Player_actor_CulcAnimation_Recieve(ACTOR* actorx) { + f32 dummy; + + return Player_actor_CulcAnimation_Base2(actorx, &dummy); +} + +static void Player_actor_ObjCheck_Recieve(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_request_proc_index_fromRecieve(ACTOR* actorx, GAME* game, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (end_flag) { + int after_mode = Common_Get(clip).handOverItem_clip->player_after_mode; + mPlayer_main_recieve_c* main_recieve_p = &player->main_data.recieve; + ACTOR* talk_actor_p = main_recieve_p->talk_actor_p; + int turn_flag = main_recieve_p->turn_flag; + int ret_main_index = main_recieve_p->ret_main_index; + mActor_name_t item = main_recieve_p->item; + + Player_actor_SettleRequestMainIndexPriority(actorx); + switch (after_mode) { + case aHOI_REQUEST_PUTAWAY: + Player_actor_request_main_recieve_putaway(game, talk_actor_p, turn_flag, ret_main_index, item, + main_recieve_p->surface_flag, mPlayer_REQUEST_PRIORITY_19); + break; + } + } +} + +static void Player_actor_main_Recieve(ACTOR* actorx, GAME* game) { + int end_flag; + + Player_actor_Movement_Recieve(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + end_flag = Player_actor_CulcAnimation_Recieve(actorx); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Recieve(actorx, game); + Player_actor_BGcheck_Wait(actorx); + Player_actor_Set_item_matrix_set(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromRecieve(actorx, game, end_flag); +} diff --git a/src/m_player_main_recieve_putaway.c_inc b/src/m_player_main_recieve_putaway.c_inc index e69de29b..4af42da0 100644 --- a/src/m_player_main_recieve_putaway.c_inc +++ b/src/m_player_main_recieve_putaway.c_inc @@ -0,0 +1,101 @@ +static int Player_actor_request_main_recieve_putaway(GAME* game, ACTOR* talk_actor_p, int turn_flag, int ret_main_index, + mActor_name_t item, int surface_flag, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_RECIEVE_PUTAWAY, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_recieve_putaway_c* req_recieve_putaway_p = &player->requested_main_index_data.recieve_putaway; + + Player_actor_request_main_index(game, mPlayer_INDEX_RECIEVE_PUTAWAY, priority); + req_recieve_putaway_p->talk_actor = talk_actor_p; + req_recieve_putaway_p->turn_flag = turn_flag; + req_recieve_putaway_p->prev_main_index = ret_main_index; + req_recieve_putaway_p->item = item; + req_recieve_putaway_p->on_surface_flag = surface_flag; + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Recieve_putaway(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_request_recieve_putaway_c* req_recieve_putaway_p = &player->requested_main_index_data.recieve_putaway; + mPlayer_main_recieve_putaway_c* main_recieve_putaway_p = &player->main_data.recieve_putaway; + mActor_name_t item; + int anim0_idx; + int anim1_idx; + int part_table_idx; + + item = req_recieve_putaway_p->item; + main_recieve_putaway_p->talk_actor_p = req_recieve_putaway_p->talk_actor; + main_recieve_putaway_p->turn_flag = req_recieve_putaway_p->turn_flag; + main_recieve_putaway_p->ret_main_index = req_recieve_putaway_p->prev_main_index; + main_recieve_putaway_p->surface_flag = req_recieve_putaway_p->on_surface_flag; + + if (Player_actor_check_item_is_fish(item)) { + anim0_idx = mPlayer_ANIM_GET_PUTAWAY_F1; + } else if (main_recieve_putaway_p->surface_flag) { + anim0_idx = mPlayer_ANIM_RETURN_MAIL3; + } else { + anim0_idx = mPlayer_ANIM_GET_PUTAWAY1; + } + + Player_actor_SetupItem_Base1(actorx, anim0_idx, -5.0f, &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base2(actorx, game, anim0_idx, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, cKF_FRAMECONTROL_STOP, + part_table_idx); + Player_actor_setup_main_Base(actorx, game); + Player_actor_CHange_TradingItemMode(actorx, aHOI_REQUEST_PUTAWAY); + Player_actor_Set_item_matrix_set(actorx); + Player_actor_sound_GASAGOSO(actorx); +} + +static void Player_actor_settle_main_Recieve_putaway(ACTOR* actorx) { + Player_actor_Unset_item_matrix_set(actorx); +} + +static void Player_actor_Movement_Recieve_putaway(ACTOR* actorx) { + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static int Player_actor_CulcAnimation_Recieve_putaway(ACTOR* actorx) { + f32 dummy; + + return Player_actor_CulcAnimation_Base2(actorx, &dummy); +} + +static void Player_actor_ObjCheck_Recieve_putaway(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_request_proc_index_fromRecieve_putaway(ACTOR* actorx, GAME* game, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (end_flag) { + int after_mode = Common_Get(clip).handOverItem_clip->player_after_mode; + mPlayer_main_recieve_putaway_c* main_recieve_putaway_p = &player->main_data.recieve_putaway; + int ret_main_index = main_recieve_putaway_p->ret_main_index; + + Player_actor_SettleRequestMainIndexPriority(actorx); + if (ret_main_index != mPlayer_INDEX_TALK) { + Player_actor_request_main_demo_wait_all(game, FALSE, 0, mPlayer_REQUEST_PRIORITY_19); + } else { + Player_actor_request_main_talk_all(game, main_recieve_putaway_p->talk_actor_p, + main_recieve_putaway_p->turn_flag, -12.0f, FALSE, + mPlayer_REQUEST_PRIORITY_19); + } + } +} + +static void Player_actor_main_Recieve_putaway(ACTOR* actorx, GAME* game) { + int end_flag; + + Player_actor_Movement_Recieve_putaway(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + end_flag = Player_actor_CulcAnimation_Recieve_putaway(actorx); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Recieve_putaway(actorx, game); + Player_actor_BGcheck_Wait(actorx); + Player_actor_Set_item_matrix_set(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromRecieve_putaway(actorx, game, end_flag); +} diff --git a/src/m_player_main_recieve_stretch.c_inc b/src/m_player_main_recieve_stretch.c_inc index e69de29b..f4ae3282 100644 --- a/src/m_player_main_recieve_stretch.c_inc +++ b/src/m_player_main_recieve_stretch.c_inc @@ -0,0 +1,91 @@ +static int Player_actor_request_main_recieve_stretch(GAME* game, ACTOR* talk_actor_p, int turn_flag, int ret_main_index, + mActor_name_t item, int surface_flag, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_RECIEVE_STRETCH, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_recieve_stretch_c* req_recieve_stretch_p = &player->requested_main_index_data.recieve_stretch; + + Player_actor_request_main_index(game, mPlayer_INDEX_RECIEVE_STRETCH, priority); + req_recieve_stretch_p->talk_actor = talk_actor_p; + req_recieve_stretch_p->turn_flag = turn_flag; + req_recieve_stretch_p->prev_main_index = ret_main_index; + req_recieve_stretch_p->item = item; + req_recieve_stretch_p->on_surface_flag = surface_flag; + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Recieve_stretch(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_request_recieve_stretch_c* req_recieve_stretch_p = &player->requested_main_index_data.recieve_stretch; + mPlayer_main_recieve_stretch_c* main_recieve_stretch_p = &player->main_data.recieve_stretch; + mActor_name_t item; + int anim0_idx; + int anim1_idx; + int part_table_idx; + + item = req_recieve_stretch_p->item; + main_recieve_stretch_p->talk_actor_p = req_recieve_stretch_p->talk_actor; + main_recieve_stretch_p->turn_flag = req_recieve_stretch_p->turn_flag; + main_recieve_stretch_p->ret_main_index = req_recieve_stretch_p->prev_main_index; + main_recieve_stretch_p->item = item; + main_recieve_stretch_p->surface_flag = req_recieve_stretch_p->on_surface_flag; + + if (Player_actor_check_item_is_fish(item)) { + anim0_idx = mPlayer_ANIM_GET_F1; + } else if (main_recieve_stretch_p->surface_flag) { + anim0_idx = mPlayer_ANIM_RETURN_MAIL1; + } else { + anim0_idx = mPlayer_ANIM_GET1; + } + + Player_actor_SetupItem_Base1(actorx, anim0_idx, -5.0f, &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base2(actorx, game, anim0_idx, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, cKF_FRAMECONTROL_STOP, + part_table_idx); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_Movement_Recieve_stretch(ACTOR* actorx) { + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static int Player_actor_CulcAnimation_Recieve_stretch(ACTOR* actorx) { + f32 dummy; + + return Player_actor_CulcAnimation_Base2(actorx, &dummy); +} + +static void Player_actor_ObjCheck_Recieve_stretch(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_request_proc_index_fromRecieve_stretch(ACTOR* actorx, GAME* game, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (end_flag) { + mPlayer_main_recieve_stretch_c* main_recieve_stretch_p = &player->main_data.recieve_stretch; + ACTOR* talk_actor_p = main_recieve_stretch_p->talk_actor_p; + int turn_flag = main_recieve_stretch_p->turn_flag; + int ret_main_index = main_recieve_stretch_p->ret_main_index; + mActor_name_t item = main_recieve_stretch_p->item; + + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_recieve(game, talk_actor_p, turn_flag, ret_main_index, item, + main_recieve_stretch_p->surface_flag, mPlayer_REQUEST_PRIORITY_19); + } +} + +static void Player_actor_main_Recieve_stretch(ACTOR* actorx, GAME* game) { + int end_flag; + + Player_actor_Movement_Recieve_stretch(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + end_flag = Player_actor_CulcAnimation_Recieve_stretch(actorx); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Recieve_stretch(actorx, game); + Player_actor_BGcheck_Wait(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromRecieve_stretch(actorx, game, end_flag); +} diff --git a/src/m_player_main_recieve_wait.c_inc b/src/m_player_main_recieve_wait.c_inc index e69de29b..1b82f765 100644 --- a/src/m_player_main_recieve_wait.c_inc +++ b/src/m_player_main_recieve_wait.c_inc @@ -0,0 +1,78 @@ +static int Player_actor_request_main_recieve_wait(GAME* game, ACTOR* talk_actor_p, int turn_flag, int ret_main_index, + mActor_name_t item, int surface_flag, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_RECIEVE_WAIT, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_recieve_wait_c* req_recieve_wait_p = &player->requested_main_index_data.recieve_wait; + + Player_actor_request_main_index(game, mPlayer_INDEX_RECIEVE_WAIT, priority); + req_recieve_wait_p->talk_actor = talk_actor_p; + req_recieve_wait_p->turn_flag = turn_flag; + req_recieve_wait_p->prev_main_index = ret_main_index; + req_recieve_wait_p->item = item; + req_recieve_wait_p->on_surface_flag = surface_flag; + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Recieve_wait(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_request_recieve_wait_c* req_recieve_wait_p = &player->requested_main_index_data.recieve_wait; + mPlayer_main_recieve_wait_c* main_recieve_wait_p = &player->main_data.recieve_wait; + int anim1_idx; + int part_table_idx; + + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_WAIT1, -5.0f, &anim1_idx, &part_table_idx); + main_recieve_wait_p->talk_actor_p = req_recieve_wait_p->talk_actor; + main_recieve_wait_p->turn_flag = req_recieve_wait_p->turn_flag; + main_recieve_wait_p->ret_main_index = req_recieve_wait_p->prev_main_index; + main_recieve_wait_p->item = req_recieve_wait_p->item; + main_recieve_wait_p->surface_flag = req_recieve_wait_p->on_surface_flag; + Player_actor_InitAnimation_Base1(actorx, game, mPlayer_ANIM_WAIT1, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, + part_table_idx); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_Movement_Recieve_wait(ACTOR* actorx) { + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static void Player_actor_CulcAnimation_Recieve_wait(ACTOR* actorx) { + f32 dummy; + + Player_actor_CulcAnimation_Base2(actorx, &dummy); +} + +static void Player_actor_ObjCheck_Recieve_wait(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_request_proc_index_fromRecieve_wait(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (Player_actor_Check_TradingItemMode(aHOI_REQUEST_TRANS_WAIT) || + Player_actor_Check_TradingItemMode(aHOI_REQUEST_RETURN_WAIT)) { + mPlayer_main_recieve_wait_c* main_recieve_wait_p = &player->main_data.recieve_wait; + ACTOR* talk_actor_p = main_recieve_wait_p->talk_actor_p; + int turn_flag = main_recieve_wait_p->turn_flag; + int ret_main_index = main_recieve_wait_p->ret_main_index; + mActor_name_t item = main_recieve_wait_p->item; + + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_recieve_stretch(game, talk_actor_p, turn_flag, ret_main_index, item, + main_recieve_wait_p->surface_flag, mPlayer_REQUEST_PRIORITY_19); + } +} + +static void Player_actor_main_Recieve_wait(ACTOR* actorx, GAME* game) { + Player_actor_Movement_Recieve_wait(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_CulcAnimation_Recieve_wait(actorx); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Recieve_wait(actorx, game); + Player_actor_BGcheck_Wait(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromRecieve_wait(actorx, game); +} diff --git a/src/m_player_main_takeout_item.c_inc b/src/m_player_main_takeout_item.c_inc index e69de29b..e0cad276 100644 --- a/src/m_player_main_takeout_item.c_inc +++ b/src/m_player_main_takeout_item.c_inc @@ -0,0 +1,143 @@ +static int Player_actor_request_main_takeout_item(GAME* game, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_TAKEOUT_ITEM, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_takeout_item_c* req_takeout_item_p = &player->requested_main_index_data.takeout_item; + + req_takeout_item_p->request_main_index = player->requested_main_index; + Player_actor_request_main_index(game, mPlayer_INDEX_TAKEOUT_ITEM, priority); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Takeout_item(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_request_takeout_item_c* req_takeout_item_p = &player->requested_main_index_data.takeout_item; + mPlayer_main_takeout_item_c* main_takeout_item_p = &player->main_data.takeout_item; + int item_kind; + int anim1_idx; + + item_kind = Player_actor_Get_ItemKind(actorx, player->requested_main_index); + + main_takeout_item_p->back_request_data = *req_takeout_item_p; + main_takeout_item_p->timer = 0.0f; + + Player_actor_LoadOrDestruct_Item(actorx, item_kind, mPlib_Get_BasicItemAnimeIndex_fromItemKind(item_kind), + cKF_FRAMECONTROL_REPEAT, 0.5f, 5.0f, -1.0f); + Player_actor_Set_now_item_main_index(actorx, Player_actor_Get_BasicItemMainIndex_fromItemKind(item_kind)); + player->item_kind = item_kind; + + if (mPlayer_ITEM_IS_UMBRELLA(item_kind) != FALSE) { + ACTOR* umbrella_p; + + player->umbrella_state = 1; + umbrella_p = Player_actor_Get_umbrella_p(actorx, game); + Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_UMB_OPEN1, mPlayer_ANIM_UMB_OPEN1, 1.0f, 1.0f, 0.5f, + -5.0f, cKF_FRAMECONTROL_STOP, mPlayer_PART_TABLE_NORMAL); + player->item_scale = 1.0f; + } else { + Player_actor_InitAnimation_Base3(actorx, game, mPlayer_ANIM_PUTAWAY1, mPlayer_ANIM_PUTAWAY1, 0.5f, 9.0f, + cKF_FRAMECONTROL_STOP, mPlayer_PART_TABLE_NORMAL); + player->item_scale = 0.0f; + } + + Player_actor_setup_main_Base(actorx, game); + Player_actor_sound_GASAGOSO(actorx); +} + +static void Player_actor_settle_main_Takeout_item(ACTOR* actorx, GAME* game) { + Player_actor_SetEffect_forTakeout_item(actorx, game); +} + +static void Player_actor_Movement_Takeout_item(ACTOR* actorx) { + Player_actor_Movement_Base_Braking_common(actorx, 0.32625f); +} + +static int Player_actor_CulcAnimation_Takeout_item(ACTOR* actorx, f32* last_anim0_cur_frame_p) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame_p); +} + +static void Player_actor_ObjCheck_Takeout_item(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_SearchAnimation_Takeout_item(ACTOR* actorx, GAME* game, f32 frame) { + if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE) { + Player_actor_Set_FootMark_Base1(actorx, game, FALSE, FALSE); + } +} + +static void Player_actor_BGcheck_Takeout_item(ACTOR* actorx) { + Player_actor_BGcheck_common_type1(actorx); +} + +static void Player_actor_SearchTimer_Takeout_item(ACTOR* actorx, GAME* game) { + int item_kind = Player_actor_Get_ItemKind_from_submenu(); + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_takeout_item_c* main_takeout_item_p = &player->main_data.takeout_item; + f32* timer_p = &main_takeout_item_p->timer; + + if (mPlayer_ITEM_IS_UMBRELLA(item_kind) == FALSE) { + f32 timer = *timer_p; + + if (*timer_p < 54.0f) { + (*timer_p) += 1.0f; + + if (*timer_p >= 36.0f) { + int next_anim0_idx; + int now_anim0_idx; + + player->item_scale = get_percent_forAccelBrake(*timer_p, 36.0f, 54.0f, 0.0f, 0.0f); + next_anim0_idx = mPlib_Get_BasicPlayerAnimeIndex_fromItemKind(item_kind); + now_anim0_idx = player->animation0_idx; + + if (now_anim0_idx != next_anim0_idx) { + Player_actor_InitAnimation_Base1(actorx, game, next_anim0_idx, next_anim0_idx, 1.0f, 1.0f, 0.5f, + 9.0f, mPlayer_PART_TABLE_NORMAL); + } + } + } + } +} + +static void Player_actor_request_proc_index_fromTakeout_item(ACTOR* actorx, GAME* game, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_takeout_item_c* main_takeout_item_p = &player->main_data.takeout_item; + int item_kind = Player_actor_Get_ItemKind_from_submenu(); + + if (mPlayer_ITEM_IS_UMBRELLA(item_kind) != FALSE) { + if (end_flag == FALSE) { + return; + } + } else { + f32 timer = main_takeout_item_p->timer; + + if (timer < 54.0f) { + return; + } + } + + Player_actor_SettleRequestMainIndexPriority(actorx); + bcopy(&main_takeout_item_p->back_request_data.request_data, &player->requested_main_index_data, + sizeof(mPlayer_request_backup_u)); + Player_actor_request_main_index(game, main_takeout_item_p->back_request_data.request_main_index, + mPlayer_REQUEST_PRIORITY_37); +} + +static void Player_actor_main_Takeout_item(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + int end_flag; + + Player_actor_Movement_Takeout_item(actorx); + end_flag = Player_actor_CulcAnimation_Takeout_item(actorx, &last_anim0_cur_frame); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_SearchTimer_Takeout_item(actorx, game); + Player_actor_SearchAnimation_Takeout_item(actorx, game, last_anim0_cur_frame); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Takeout_item(actorx, game); + Player_actor_BGcheck_Takeout_item(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromTakeout_item(actorx, game, end_flag); +} diff --git a/src/m_player_main_talk.c_inc b/src/m_player_main_talk.c_inc index e69de29b..1b8878b2 100644 --- a/src/m_player_main_talk.c_inc +++ b/src/m_player_main_talk.c_inc @@ -0,0 +1,210 @@ +static int Player_actor_request_main_talk_all(GAME* game, ACTOR* talk_actor_p, int turn_flag, f32 morph_speed, + int umbrella_flag, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_TALK, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + player->requested_main_index_data.talk.talk_actor = talk_actor_p; + player->requested_main_index_data.talk.turn_flag = turn_flag; + player->requested_main_index_data.talk.morph_speed = morph_speed; + player->requested_main_index_data.talk.umbrella_flag = umbrella_flag; + + Player_actor_request_main_index(game, mPlayer_INDEX_TALK, priority); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Talk(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_request_talk_c* req_talk_p = &player->requested_main_index_data.talk; + mPlayer_main_talk_c* main_talk_p = &player->main_data.talk; + f32 morph_speed = req_talk_p->morph_speed; + int anim1_idx; + int part_table_idx; + + if (req_talk_p->umbrella_flag) { + player->unable_hand_item_in_demo = TRUE; + } + + main_talk_p->talk_actor_p = req_talk_p->talk_actor; + main_talk_p->turn_flag = req_talk_p->turn_flag; + main_talk_p->feel_type = 0; + + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_WAIT1, -ABS(morph_speed), &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actorx, game, mPlayer_ANIM_WAIT1, anim1_idx, 1.0f, 1.0f, 0.5f, morph_speed, + part_table_idx); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_settle_main_Talk(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int ef = player->main_data.talk.feel_type; + + if (ef > 0) { + eEC_CLIP->effect_kill_proc(ef - 1, RSV_NO); + } +} + +static void Player_actor_Movement_Talk(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_talk_c* main_talk_p = &player->main_data.talk; + ACTOR* talk_actor_p = main_talk_p->talk_actor_p; + int turn_flag = main_talk_p->turn_flag; + + Player_actor_Movement_Base_Braking(actorx); + if (turn_flag) { + if (talk_actor_p != NULL) { + s16 target_angle = DEG2SHORT_ANGLE2(-180.0f) + talk_actor_p->player_angle_y; + s16 cur_angle = add_calc_short_angle2(&actorx->shape_info.rotation.y, target_angle, 1.0f - sqrtf(0.5f), + DEG2SHORT_ANGLE2(13.73291015625f), DEG2SHORT_ANGLE2(0.274658203125f)); + + actorx->world.angle.y = actorx->shape_info.rotation.y; + if (mDemo_Check_SpeakerAble() == FALSE && mDemo_Check_DiffAngle_forTalk(cur_angle)) { + mDemo_Set_SpeakerAble(); + } + } + } else { + mDemo_Set_SpeakerAble(); + } +} + +static int Player_actor_CulcAnimation_Talk(ACTOR* actorx, f32* last_cur_anim0_frame_p) { + return Player_actor_CulcAnimation_Base2(actorx, last_cur_anim0_frame_p); +} + +static void Player_actor_Set_FeelEffect_common(ACTOR* actorx, int* feel_type_p) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (player->animation0_idx == mPlayer_ANIM_GAAAN1 && + Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 5.0f)) { + player->draw_effect_idx = eEC_EFFECT_SHOCK + 1; + } +} + +static void Player_actor_SearchAnimation_Talk(ACTOR* actorx, f32 last_cur_anim0_frame) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, last_cur_anim0_frame) == FALSE) { + Player_actor_Set_FeelEffect_common(actorx, &player->main_data.talk.feel_type); + } +} + +static void Player_actor_ChangeAnimation_FromDemoOrder_common(ACTOR* actorx, GAME* game, int order, int end_flag, + int* feel_type_p) { + int anim0_idx; + int anim1_idx; + int part_table_idx; + int mode; + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (order > 0) { + switch (order) { + case 0xFF: + anim0_idx = mPlayer_ANIM_WAIT1; + mode = cKF_FRAMECONTROL_REPEAT; + + if (*feel_type_p > 0) { + /* @BUG? - shouldn't this be subtracting 1 to get the real type of the effect? */ + eEC_CLIP->effect_kill_proc(*feel_type_p, RSV_NO); + *feel_type_p = 0; + } + break; + case 2: + anim0_idx = mPlayer_ANIM_GAAAN1; + mode = cKF_FRAMECONTROL_STOP; + break; + case 0xFE: + anim0_idx = mPlayer_ANIM_BIKU1; + mode = cKF_FRAMECONTROL_STOP; + break; + default: + return; + } + } else { + + if (end_flag != FALSE) { + int now_anim0_idx = player->animation0_idx; + + if (now_anim0_idx == mPlayer_ANIM_GAAAN1) { + anim0_idx = mPlayer_ANIM_GAAAN2; + mode = cKF_FRAMECONTROL_REPEAT; + } else if (now_anim0_idx == mPlayer_ANIM_BIKU1) { + anim0_idx = mPlayer_ANIM_WAIT1; + mode = cKF_FRAMECONTROL_REPEAT; + } else { + return; + } + } else { + return; + } + } + + Player_actor_SetupItem_Base1(actorx, anim0_idx, -5.0f, &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base2(actorx, game, anim0_idx, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, mode, part_table_idx); +} + +static void Player_actor_ChangeAnimation_FromDemoOrder_Talk(ACTOR* actorx, GAME* game, int order, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + Player_actor_ChangeAnimation_FromDemoOrder_common(actorx, game, order, end_flag, &player->main_data.talk.feel_type); +} + +static void Player_actor_SetEffect_FromDemoOrder_common(ACTOR* actorx, GAME* game, int order) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (order > 0) { + switch (order) { + case 0xFD: + eEC_CLIP->effect_make_proc(eEC_EFFECT_HALLOWEEN, player->feel_pos, 2, actorx->shape_info.rotation.y, + game, RSV_NO, 0, 0); + break; + } + } +} + +static void Player_actor_SetEffect_FromDemoOrder_Talk(ACTOR* actorx, GAME* game, int order) { + Player_actor_SetEffect_FromDemoOrder_common(actorx, game, order); +} + +static void Player_actor_set_eye_pattern_Talk(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int anim0_idx = player->animation0_idx; + + if (anim0_idx == mPlayer_ANIM_GAAAN1 || anim0_idx == mPlayer_ANIM_BIKU1) { + Player_actor_set_tex_anime_pattern(actorx); + } else if (anim0_idx == mPlayer_ANIM_GAAAN2) { + Player_actor_set_eye_pattern(actorx, 6); + Player_actor_set_mouth_pattern(actorx, 5); + } else { + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_set_mouth_pattern(actorx, 0); + } +} + +static void Player_actor_ObjCheck_Talk(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forBrake(actorx, game); +} + +static void Player_actor_BGcheck_Talk(ACTOR* actorx) { + Player_actor_BGcheck_common_type1(actorx); +} + +static void Player_actor_main_Talk(ACTOR* actorx, GAME* game) { + int order; + f32 last_cur_anim0_frame; + int end_flag; + + order = Player_actor_RecieveDemoOrder_EffectOrder(); + Player_actor_Movement_Talk(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + end_flag = Player_actor_CulcAnimation_Talk(actorx, &last_cur_anim0_frame); + Player_actor_SearchAnimation_Talk(actorx, last_cur_anim0_frame); + Player_actor_ChangeAnimation_FromDemoOrder_Talk(actorx, game, order, end_flag); + Player_actor_SetEffect_FromDemoOrder_Talk(actorx, game, order); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_Talk(actorx); + Player_actor_ObjCheck_Talk(actorx, game); + Player_actor_BGcheck_Talk(actorx); + Player_actor_Item_main(actorx, game); +} diff --git a/src/m_player_sound.c_inc b/src/m_player_sound.c_inc index a3fcb25f..ae8459eb 100644 --- a/src/m_player_sound.c_inc +++ b/src/m_player_sound.c_inc @@ -3,32 +3,32 @@ typedef enum player_status_level_s { mPlayer_WALK, mPlayer_RUN, mPlayer_DASH, -}mPlayer_STATUS_LEVEL; +} mPlayer_STATUS_LEVEL; -void Player_actor_sound_SetStatus(ACTOR* actor) { +static void Player_actor_sound_SetStatus(ACTOR* actor) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; int status; f32 speed; - + status = player->now_main_index; - speed = player->keyframe0.frame_control.speed / 0.6f; - + speed = player->keyframe0.frame_control.speed / 0.6f; + switch (status) { - case mPlayer_INDEX_READY_WALK_NET: - case mPlayer_INDEX_DEMO_WALK: - case mPlayer_INDEX_WALK: - status = mPlayer_WALK; - break; - case mPlayer_INDEX_RUN: - status = mPlayer_RUN; - break; - case mPlayer_INDEX_DASH: - status = mPlayer_DASH; - break; - default: - status = 0; - break; - } + case mPlayer_INDEX_READY_WALK_NET: + case mPlayer_INDEX_DEMO_WALK: + case mPlayer_INDEX_WALK: + status = mPlayer_WALK; + break; + case mPlayer_INDEX_RUN: + status = mPlayer_RUN; + break; + case mPlayer_INDEX_DASH: + status = mPlayer_DASH; + break; + default: + status = 0; + break; + } if (speed > 1.0f) { speed = 1.0f; } else if (speed < 0.0f) { @@ -37,15 +37,15 @@ void Player_actor_sound_SetStatus(ACTOR* actor) { sAdo_PlayerStatusLevel(speed, status); } -void Player_actor_set_sound_common1(xyz_t* pos, u16 id) { +static void Player_actor_set_sound_common1(xyz_t* pos, u16 id) { sAdo_OngenTrgStart(id, pos); } -void Player_actor_set_sound_common2(ACTOR* actor, u16 id) { - Player_actor_set_sound_common1(&actor->world.position,id); +static void Player_actor_set_sound_common2(ACTOR* actor, u16 id) { + Player_actor_set_sound_common1(&actor->world.position, id); } -void Player_actor_sound_FootStep1(ACTOR* actor, u16 id){ +static void Player_actor_sound_FootStep1(ACTOR* actor, u16 id) { xyz_t* pos = &actor->world.position; xyz_t apos; int check; @@ -53,23 +53,22 @@ void Player_actor_sound_FootStep1(ACTOR* actor, u16 id){ apos = *pos; - attr = mCoBG_Wpos2Attribute(apos,0); - if(sAdo_CheckOnPlussBridge(pos,attr)){ + attr = mCoBG_Wpos2Attribute(apos, 0); + if (sAdo_CheckOnPlussBridge(pos, attr)) { id = 0x420A; } sAdo_PlyWalkSe(id, pos); } -void Player_actor_sound_FootStep2(ACTOR* actor) { +static void Player_actor_sound_FootStep2(ACTOR* actor) { int floorId; - + floorId = Common_Get(floor_idx); if (floorId >= 0) { if (mRmTp_SoundStepWalkSE(&actor->world.position) != 0) { sAdo_PlyWalkSeRoom(0xFF, &actor->world.position); - } - else if (floorId < 0x56) { + } else if (floorId < 0x56) { sAdo_PlyWalkSeRoom(floorId, &actor->world.position); } } else { @@ -78,257 +77,254 @@ void Player_actor_sound_FootStep2(ACTOR* actor) { } } -void Player_actor_sound_Tumble(ACTOR* actor) { +static void Player_actor_sound_Tumble(ACTOR* actor) { u16 label = sAdo_Get_KokeruLabel(actor->bg_collision_check.result.unit_attribute); Player_actor_set_sound_common2(actor, label); } - -void Player_actor_sound_AMI_FURI(ACTOR* actor) { + +static void Player_actor_sound_AMI_FURI(ACTOR* actor) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; Player_actor_set_sound_common1(&player->net_pos, NA_SE_TOOL_FURI); } -void Player_actor_sound_AMI_HIT(ACTOR* actor) { +static void Player_actor_sound_AMI_HIT(ACTOR* actor) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; Player_actor_set_sound_common1(&player->net_pos, NA_SE_AMI_HIT); } -void Player_actor_sound_AMI_GET(ACTOR* actor) { +static void Player_actor_sound_AMI_GET(ACTOR* actor) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; Player_actor_set_sound_common1(&player->net_pos, NA_SE_TOOL_GET); } -void Player_actor_sound_GASAGOSO(ACTOR* actor) { - Player_actor_set_sound_common2(actor,0x69); +static void Player_actor_sound_GASAGOSO(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_GASAGOSO); } -void Player_actor_sound_AXE_FURI(ACTOR* actor) { - Player_actor_set_sound_common2(actor,NA_SE_TOOL_FURI); +static void Player_actor_sound_AXE_FURI(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_TOOL_FURI); } -void Player_actor_sound_AXE_HIT(ACTOR* actor,xyz_t* pos) { +static void Player_actor_sound_AXE_HIT(ACTOR* actor, xyz_t* pos) { xyz_t posA; posA.x = pos->x; posA.z = pos->z; - posA.y = actor->world.position.y + 20.0f; - - Player_actor_set_sound_common1(&posA, 0x41D); + posA.y = actor->world.position.y + 20.0f; + + Player_actor_set_sound_common1(&posA, NA_SE_AXE_HIT); } -void Player_actor_sound_AXE_CUT(ACTOR* actor,xyz_t* pos) { +static void Player_actor_sound_AXE_CUT(ACTOR* actor, xyz_t* pos) { xyz_t posA; posA.x = pos->x; posA.z = pos->z; - posA.y = actor->world.position.y + 20.0f; - - Player_actor_set_sound_common1(&posA, 0x41E); + posA.y = actor->world.position.y + 20.0f; + + Player_actor_set_sound_common1(&posA, NA_SE_AXE_CUT); } -void Player_actor_sound_SIT(ACTOR* actor, int ftr_idx){ +static void Player_actor_sound_SIT(ACTOR* actor, int ftr_idx) { int id = mRmTp_GetFtrActionSE(ftr_idx, mRmTp_CHAIR_ACTION_SIT); - - if(id >= 0){ - Player_actor_set_sound_common2(actor,id); - } - else{ - Player_actor_set_sound_common2(actor,NA_SE_HARD_CHAIR_SIT); + + if (id >= 0) { + Player_actor_set_sound_common2(actor, id); + } else { + Player_actor_set_sound_common2(actor, NA_SE_HARD_CHAIR_SIT); } } -void Player_actor_sound_STANDUP(ACTOR* actor, int ftr_idx){ - int id = mRmTp_GetFtrActionSE(ftr_idx,1); - - if(id >= 0){ - Player_actor_set_sound_common2(actor,id); - } - else{ - Player_actor_set_sound_common2(actor,NA_SE_HARD_CHAIR_STANDUP); +static void Player_actor_sound_STANDUP(ACTOR* actor, int ftr_idx) { + int id = mRmTp_GetFtrActionSE(ftr_idx, 1); + + if (id >= 0) { + Player_actor_set_sound_common2(actor, id); + } else { + Player_actor_set_sound_common2(actor, NA_SE_HARD_CHAIR_STANDUP); } } -void Player_actor_sound_JUMP(ACTOR* actor) { - Player_actor_set_sound_common2(actor,NA_SE_JUMP); +static void Player_actor_sound_JUMP(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_JUMP); } -void Player_actor_sound_LANDING(ACTOR* actor) { - Player_actor_set_sound_common2(actor,NA_SE_LANDING); +static void Player_actor_sound_LANDING(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_LANDING); } -void Player_actor_sound_ITEM_GET(ACTOR* actor) { - Player_actor_set_sound_common2(actor,NA_SE_ITEM_GET); +static void Player_actor_sound_ITEM_GET(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_ITEM_GET); } -void Player_actor_sound_BED_IN(ACTOR* actor) { - Player_actor_set_sound_common2(actor,NA_SE_BED_IN); +static void Player_actor_sound_BED_IN(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_BED_IN); } -void Player_actor_sound_BED_NEGAERI(ACTOR* actor) { - Player_actor_set_sound_common2(actor,NA_SE_BED_NEGAERI); +static void Player_actor_sound_BED_NEGAERI(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_BED_NEGAERI); } -void Player_actor_sound_BED_OUT(ACTOR* actor) { - Player_actor_set_sound_common2(actor,NA_SE_BED_OUT); +static void Player_actor_sound_BED_OUT(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_BED_OUT); } -void Player_actor_sound_ROD_STROKE(ACTOR* actor) { - Player_actor_set_sound_common2(actor,NA_SE_ROD_STROKE); +static void Player_actor_sound_ROD_STROKE(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_ROD_STROKE); } -void Player_actor_sound_ROD_STROKE_small(ACTOR* actor) { - Player_actor_set_sound_common2(actor,NA_SE_ROD_STROKE_SMALL); +static void Player_actor_sound_ROD_STROKE_small(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_ROD_STROKE_SMALL); } -void Player_actor_sound_ROD_BACK(ACTOR* actor) { - Player_actor_set_sound_common2(actor,NA_SE_ROD_BACK); +static void Player_actor_sound_ROD_BACK(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_ROD_BACK); } -void Player_actor_sound_scoop1(ACTOR* actor) { - Player_actor_set_sound_common2(actor,NA_SE_SCOOP1); +static void Player_actor_sound_scoop1(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_SCOOP1); } -void Player_actor_sound_scoop_umeru(ACTOR* actor) { - Player_actor_set_sound_common2(actor,NA_SE_SCOOP_UMERU); +static void Player_actor_sound_scoop_umeru(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_SCOOP_UMERU); } -void Player_actor_sound_scoop_hit(ACTOR* actor) { - Player_actor_set_sound_common2(actor,NA_SE_SCOOP_HIT); +static void Player_actor_sound_scoop_hit(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_SCOOP_HIT); } -void Player_actor_sound_scoop_shigemi(ACTOR* actor) { - Player_actor_set_sound_common2(actor,NA_SE_SCOOP_SHIGEMI); +static void Player_actor_sound_scoop_shigemi(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_SCOOP_SHIGEMI); } -void Player_actor_sound_ITEM_HORIDASHI(ACTOR* actor){ - Player_actor_set_sound_common2(actor,NA_SE_ITEM_HORIDASHI); +static void Player_actor_sound_ITEM_HORIDASHI(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_ITEM_HORIDASHI); } -void Player_actor_sound_slip(ACTOR* actor){ - Player_actor_set_sound_common2(actor,0x4129); +static void Player_actor_sound_slip(ACTOR* actor) { + Player_actor_set_sound_common2(actor, 0x4129); } -void Player_actor_sound_tree_touch(xyz_t* pos){ - sAdo_OngenTrgStart(NA_SE_TREE_TOUCH,pos); -} - -void Player_actor_sound_tree_yurasu(xyz_t* pos){ - sAdo_OngenTrgStart(NA_SE_TREE_YURASU,pos); +static void Player_actor_sound_tree_touch(xyz_t* pos) { + sAdo_OngenTrgStart(NA_SE_TREE_TOUCH, pos); } -void Player_actor_sound_kirikabu_scoop(ACTOR* actor){ - Player_actor_set_sound_common2(actor,NA_SE_KIRIBASU_SCOOP); +static void Player_actor_sound_tree_yurasu(xyz_t* pos) { + sAdo_OngenTrgStart(NA_SE_TREE_YURASU, pos); } -void Player_actor_sound_kirikabu_out(ACTOR* actor){ - Player_actor_set_sound_common2(actor,NA_SE_KIRIBASU_OUT); +static void Player_actor_sound_kirikabu_scoop(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_KIRIBASU_SCOOP); } -void Player_actor_sound_knock(ACTOR* actor){ - Player_actor_set_sound_common2(actor,NA_SE_SOUND_KNOCK); +static void Player_actor_sound_kirikabu_out(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_KIRIBASU_OUT); } -void Player_actor_sound_coin_gasagoso(ACTOR* actor){ - Player_actor_set_sound_common2(actor,NA_SE_COIN_GASAGOSO); +static void Player_actor_sound_knock(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_SOUND_KNOCK); } -void Player_actor_sound_araiiki(ACTOR* actor){ +static void Player_actor_sound_coin_gasagoso(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_COIN_GASAGOSO); +} + +static void Player_actor_sound_araiiki(ACTOR* actor) { s8 gender = Common_Get(now_private)->gender; - Player_actor_set_sound_common2(actor,(gender == 0) ? (u16)NA_SE_ARAIIKI_BOY : (u16)NA_SE_ARAIIKI_GIRL); + Player_actor_set_sound_common2(actor, (gender == 0) ? (u16)NA_SE_ARAIIKI_BOY : (u16)NA_SE_ARAIIKI_GIRL); } -void Player_actor_sound_zassou_nuku(xyz_t* pos) { - sAdo_OngenTrgStart(NA_SE_ZASSOU_NUKU,pos); +static void Player_actor_sound_zassou_nuku(xyz_t* pos) { + sAdo_OngenTrgStart(NA_SE_ZASSOU_NUKU, pos); } -void Player_actor_sound_hachi_sasareru(ACTOR* actor){ - Player_actor_set_sound_common2(actor,NA_SE_HACHI_SASARERU); -} - -void Player_actor_sound_wear(ACTOR* actor){ - Player_actor_set_sound_common2(actor,NA_SE_WEAR); +static void Player_actor_sound_hachi_sasareru(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_HACHI_SASARERU); } -void Player_actor_sound_dai_ue_kakunou(ACTOR* actor){ - Player_actor_set_sound_common2(actor,NA_SE_DAI_UE_KAKUNOU); +static void Player_actor_sound_wear(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_WEAR); } -void Player_actor_sound_umbrella_rotate(ACTOR* actor){ - Player_actor_set_sound_common2(actor,NA_SE_UMBRELLA_ROTATE); +static void Player_actor_sound_dai_ue_kakunou(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_DAI_UE_KAKUNOU); } -u16 Player_actor_sound_Get_bgm_num_forCompletePayment() { - switch(Common_Get(complete_payment_type)){ +static void Player_actor_sound_umbrella_rotate(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_UMBRELLA_ROTATE); +} + +static u16 Player_actor_sound_Get_bgm_num_forCompletePayment() { + switch (Common_Get(complete_payment_type)) { case 1: - return NA_SE_MONEY0; + return NA_SE_MONEY0; default: - return NA_SE_MONEY1; + return NA_SE_MONEY1; } } -u16 Player_actor_sound_Get_bgm_num_forDemoGetGoldenItem(int type) { - switch (type) { - case 0: - return NA_SE_MONEY0; - case 1: - return NA_SE_MONEY2; - case 2: - return NA_SE_COIN; - default: - return NA_SE_MONEY1; +static u16 Player_actor_sound_Get_bgm_num_forDemoGetGoldenItem(int type) { + switch (type) { + case 0: + return NA_SE_MONEY0; + case 1: + return NA_SE_MONEY2; + case 2: + return NA_SE_COIN; + default: + return NA_SE_MONEY1; } } - -void Player_actor_sound_camera_move1(void) { +static void Player_actor_sound_camera_move1(void) { sAdo_SysTrgStart(NA_SE_CAMERA_MOVE1); } -void Player_actor_sound_camera_move2() { +static void Player_actor_sound_camera_move2() { sAdo_SysTrgStart(NA_SE_CAMERA_MOVE2); } -void Player_actor_sound_karaburi(ACTOR* actor) { - Player_actor_set_sound_common2(actor,NA_SE_KARABURI); +static void Player_actor_sound_karaburi(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_KARABURI); } -void Player_actor_sound_scoop_tree_hit(ACTOR* actor) { - Player_actor_set_sound_common2(actor,NA_SE_SCOOP_TREE_HIT); +static void Player_actor_sound_scoop_tree_hit(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_SCOOP_TREE_HIT); } -void Player_actor_sound_scoop_item_hit(ACTOR* actor) { - Player_actor_set_sound_common2(actor,NA_SE_SCOOP_ITEM_HIT); +static void Player_actor_sound_scoop_item_hit(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_SCOOP_ITEM_HIT); } -void Player_actor_sound_axe_ball_hit(ACTOR* actor) { - Player_actor_set_sound_common2(actor,NA_SE_SCOOP_ITEM_HIT); +static void Player_actor_sound_axe_ball_hit(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_SCOOP_ITEM_HIT); } -void Player_actor_sound_axe_broken1(ACTOR* actor) { - Player_actor_set_sound_common2(actor,NA_SE_TOOL_BROKEN1); +static void Player_actor_sound_axe_broken1(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_TOOL_BROKEN1); } -void Player_actor_sound_axe_broken2(ACTOR* actor) { - Player_actor_set_sound_common2(actor,NA_SE_TOOL_BROKEN2); -} - -void Player_actor_sound_axe_broken3(ACTOR* actor) { - Player_actor_set_sound_common2(actor,NA_SE_TOOL_BROKEN3); +static void Player_actor_sound_axe_broken2(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_TOOL_BROKEN2); } -void Player_actor_sound_uchiwa(ACTOR* actor) { - Player_actor_set_sound_common2(actor,NA_SE_UCHIWA); +static void Player_actor_sound_axe_broken3(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_TOOL_BROKEN3); } -void Player_actor_sound_move_temochi_kazaguruma(ACTOR* actor) { +static void Player_actor_sound_uchiwa(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_UCHIWA); +} + +static void Player_actor_sound_move_temochi_kazaguruma(ACTOR* actor) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; f32 speed; - speed = ABS(player->item_keyframe.frame_control.speed / 44.0f); + speed = ABS(player->item_keyframe.frame_control.speed / 44.0f); if (speed > 1.0f) { speed = 1.0f; @@ -337,6 +333,6 @@ void Player_actor_sound_move_temochi_kazaguruma(ACTOR* actor) { } if (speed != 0.0f) { sAdo_kazagurumaLevel(speed); - sAdo_OngenPos((u32) player, NA_SE_TEMOCHI_KAZAGURUMA, &actor->world.position); + sAdo_OngenPos((u32)player, NA_SE_TEMOCHI_KAZAGURUMA, &actor->world.position); } } From 6be3b1885f5804f83e6c1a44e70a5f8ea1ccfb2f Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Fri, 30 Aug 2024 01:45:57 -0400 Subject: [PATCH 147/234] More player states --- include/ac_sign.h | 4 +- include/m_player.h | 44 ++++- src/m_player.c | 99 ++++++++++- src/m_player_controller.c_inc | 189 +++++++++----------- src/m_player_draw.c_inc | 2 +- src/m_player_main_dma.c_inc | 11 +- src/m_player_main_give_wait.c_inc | 2 +- src/m_player_main_intro.c_inc | 31 ++-- src/m_player_main_pickup.c_inc | 183 ++++++++++++++++++++ src/m_player_main_pickup_exchange.c_inc | 170 ++++++++++++++++++ src/m_player_main_pickup_furniture.c_inc | 198 +++++++++++++++++++++ src/m_player_main_pickup_jump.c_inc | 209 +++++++++++++++++++++++ src/m_player_main_recieve_putaway.c_inc | 2 +- src/m_player_main_refuse.c_inc | 24 ++- src/m_player_main_refuse_pickup.c_inc | 36 ++-- src/m_player_main_remove_grass.c_inc | 104 +++++++++++ src/m_player_main_return_demo.c_inc | 49 +++--- src/m_player_main_return_outdoor.c_inc | 40 +++-- src/m_player_main_return_outdoor2.c_inc | 49 +++--- src/m_player_main_shake_tree.c_inc | 172 +++++++++++++++++++ src/m_player_main_wait.c_inc | 69 ++++---- src/m_player_vibration.c_inc | 32 ++-- 22 files changed, 1414 insertions(+), 305 deletions(-) diff --git a/include/ac_sign.h b/include/ac_sign.h index 3f3231ad..59278feb 100644 --- a/include/ac_sign.h +++ b/include/ac_sign.h @@ -8,6 +8,9 @@ extern "C" { #endif +extern int aSIGN_set_white_sign(GAME* game, const xyz_t* pos_p); +extern int aSIGN_erase_white_sign(GAME* game, const xyz_t* pos_p); + extern ACTOR_PROFILE Ac_Sign_Profile; #ifdef __cplusplus @@ -15,4 +18,3 @@ extern ACTOR_PROFILE Ac_Sign_Profile; #endif #endif - diff --git a/include/m_player.h b/include/m_player.h index 11df061c..dd19096a 100644 --- a/include/m_player.h +++ b/include/m_player.h @@ -995,26 +995,27 @@ typedef struct player_request_standup_bed_s { typedef struct player_request_pickup_s { int inv_slot; mActor_name_t item; - xyz_t end_pos; - xyz_t start_pos; + xyz_t target_pos; + xyz_t item_pos; int flag; } mPlayer_request_pickup_c; typedef struct player_request_pickup_jump_s { int inv_slot; mActor_name_t item; - xyz_t start_pos; - int flag; + xyz_t item_pos; + int ftr_flag; + int knife_and_fork_flag; } mPlayer_request_pickup_jump_c; typedef struct player_request_pickup_furniture_s { int inv_slot; mActor_name_t item; - xyz_t start_pos; + xyz_t item_pos; } mPlayer_request_pickup_furniture_c; typedef struct player_request_pickup_exchange_s { - xyz_t end_pos; + xyz_t target_pos; mActor_name_t item; } mPlayer_request_pickup_exchange_c; @@ -1171,8 +1172,8 @@ typedef struct player_request_ready_pitfall_s { } mPlayer_request_ready_pitfall_c; typedef struct player_request_remove_grass_s { - xyz_t start_pos; - xyz_t end_pos; + xyz_t grass_pos; + xyz_t target_pos; } mPlayer_request_remove_grass_c; typedef struct player_request_change_cloth_s { @@ -1481,8 +1482,8 @@ typedef struct player_main_pickup_s { f32 scale; f32 timer; mActor_name_t item; - int ftr_flag; int exchange_flag; + int signboard_flag; } mPlayer_main_pickup_c; typedef struct player_main_pickup_jump_s { @@ -1491,9 +1492,26 @@ typedef struct player_main_pickup_jump_s { xyz_t item_offset; f32 scale; mActor_name_t item; + int ftr_flag; int exchange_flag; } mPlayer_main_pickup_jump_c; +typedef struct player_main_pickup_furniture_s { + xyz_t target_pos; + xyz_t item_pos; + xyz_t item_offset; + f32 scale; + mActor_name_t item; + int exchange_flag; +} mPlayer_main_pickup_furniture_c; + +typedef struct player_main_pickup_exchange_s { + xyz_t target_pos; + mActor_name_t item; + int msg_mode; + int submenu_flag; +} mPlayer_main_pickup_exchange_c; + typedef struct player_main_swing_axe_s { /* 0x00 */ xyz_t target_pos; /* 0x0C */ mActor_name_t item; @@ -1658,6 +1676,11 @@ typedef struct player_main_stung_bee_s { f32 timer; } mPlayer_main_stung_bee_c; +typedef struct player_main_remove_grass_s { + xyz_t grass_pos; + xyz_t target_pos; +} mPlayer_main_remove_grass_c; + typedef struct player_main_push_snowball_s { u32 label; } mPlayer_main_push_snowball_c; @@ -1706,6 +1729,8 @@ typedef union { mPlayer_main_wade_c wade; mPlayer_main_pickup_c pickup; mPlayer_main_pickup_jump_c pickup_jump; + mPlayer_main_pickup_furniture_c pickup_furniture; + mPlayer_main_pickup_exchange_c pickup_exchange; mPlayer_main_swing_axe_c swing_axe; mPlayer_main_reflect_axe_c reflect_axe; mPlayer_main_broken_axe_c broken_axe; @@ -1729,6 +1754,7 @@ typedef union { mPlayer_main_wash_car_c wash_car; mPlayer_main_shake_tree_c shake_tree; mPlayer_main_stung_bee_c stung_bee; + mPlayer_main_remove_grass_c remove_grass; mPlayer_main_push_snowball_c push_snowball; mPlayer_main_wade_snowball_c wade_snowball; mPlayer_main_demo_geton_boat_wade_c demo_geton_boat_wade; diff --git a/src/m_player.c b/src/m_player.c index 59bc17da..08c6527b 100644 --- a/src/m_player.c +++ b/src/m_player.c @@ -12,6 +12,9 @@ #include "ac_insect.h" #include "ac_set_ovl_insect.h" #include "m_house.h" +#include "ac_sign.h" +#include "m_msg.h" +#include "m_choice.h" /* Static function declarations, add as needed for intellisense */ static int Player_actor_check_request_main_able(GAME* game, int request_main_index, int priority); @@ -59,12 +62,98 @@ static void Player_actor_Set_now_item_main_index(ACTOR* actorx, int item_main_in static void Player_actor_SetEffect_forTakeout_item(ACTOR* actorx, GAME* game); static void Player_actor_Set_FootMark_Base1(ACTOR* actorx, GAME* game, int disable_effect, int disable_sound); static s8 Player_actor_Get_ItemKind_from_submenu(void); +static int Player_actor_Set_shake_tree_table(ACTOR* actorx, GAME* game, mActor_name_t item, int tree_ut_x, + int tree_ut_z, int little_flag); +static int Player_actor_Check_BirthBee_common(ACTOR* actorx, mActor_name_t item, int tree_ut_x, int tree_ut_z, + s16* angle_y_p); +static void Player_actor_Set_status_for_bee(ACTOR* actorx, s8 v); +static int Player_actor_check_able_request_main_index_for_reset(int request_main_index); +static void Player_actor_putin_item(int slot, mActor_name_t item, xyz_t* pos_p); +static void Player_actor_putin_item_layer2(int slot, mActor_name_t item, xyz_t* pos_p); +static void Player_actor_putin_furniture(GAME* game, int slot, mActor_name_t item); + +static void Player_actor_sound_SetStatus(ACTOR* actor); +static void Player_actor_set_sound_common1(xyz_t* pos, u16 id); +static void Player_actor_set_sound_common2(ACTOR* actor, u16 id); +static void Player_actor_sound_FootStep1(ACTOR* actor, u16 id); +static void Player_actor_sound_FootStep2(ACTOR* actor); +static void Player_actor_sound_Tumble(ACTOR* actor); +static void Player_actor_sound_AMI_FURI(ACTOR* actor); +static void Player_actor_sound_AMI_HIT(ACTOR* actor); +static void Player_actor_sound_AMI_GET(ACTOR* actor); +static void Player_actor_sound_GASAGOSO(ACTOR* actor); +static void Player_actor_sound_AXE_FURI(ACTOR* actor); +static void Player_actor_sound_AXE_HIT(ACTOR* actor, xyz_t* pos); +static void Player_actor_sound_AXE_CUT(ACTOR* actor, xyz_t* pos); +static void Player_actor_sound_SIT(ACTOR* actor, int ftr_idx); +static void Player_actor_sound_STANDUP(ACTOR* actor, int ftr_idx); +static void Player_actor_sound_JUMP(ACTOR* actor); +static void Player_actor_sound_LANDING(ACTOR* actor); +static void Player_actor_sound_ITEM_GET(ACTOR* actor); +static void Player_actor_sound_BED_IN(ACTOR* actor); +static void Player_actor_sound_BED_NEGAERI(ACTOR* actor); +static void Player_actor_sound_BED_OUT(ACTOR* actor); +static void Player_actor_sound_ROD_STROKE(ACTOR* actor); +static void Player_actor_sound_ROD_STROKE_small(ACTOR* actor); +static void Player_actor_sound_ROD_BACK(ACTOR* actor); +static void Player_actor_sound_scoop1(ACTOR* actor); +static void Player_actor_sound_scoop_umeru(ACTOR* actor); +static void Player_actor_sound_scoop_hit(ACTOR* actor); +static void Player_actor_sound_scoop_shigemi(ACTOR* actor); +static void Player_actor_sound_ITEM_HORIDASHI(ACTOR* actor); +static void Player_actor_sound_slip(ACTOR* actor); +static void Player_actor_sound_tree_touch(xyz_t* pos); +static void Player_actor_sound_tree_yurasu(xyz_t* pos); +static void Player_actor_sound_kirikabu_scoop(ACTOR* actor); +static void Player_actor_sound_kirikabu_out(ACTOR* actor); +static void Player_actor_sound_knock(ACTOR* actor); +static void Player_actor_sound_coin_gasagoso(ACTOR* actor); +static void Player_actor_sound_araiiki(ACTOR* actor); +static void Player_actor_sound_zassou_nuku(xyz_t* pos); +static void Player_actor_sound_hachi_sasareru(ACTOR* actor); +static void Player_actor_sound_wear(ACTOR* actor); +static void Player_actor_sound_dai_ue_kakunou(ACTOR* actor); +static void Player_actor_sound_umbrella_rotate(ACTOR* actor); +static u16 Player_actor_sound_Get_bgm_num_forCompletePayment(); +static u16 Player_actor_sound_Get_bgm_num_forDemoGetGoldenItem(int type); +static void Player_actor_sound_camera_move1(void); +static void Player_actor_sound_camera_move2(); +static void Player_actor_sound_karaburi(ACTOR* actor); +static void Player_actor_sound_scoop_tree_hit(ACTOR* actor); +static void Player_actor_sound_scoop_item_hit(ACTOR* actor); +static void Player_actor_sound_axe_ball_hit(ACTOR* actor); +static void Player_actor_sound_axe_broken1(ACTOR* actor); +static void Player_actor_sound_axe_broken2(ACTOR* actor); +static void Player_actor_sound_axe_broken3(ACTOR* actor); +static void Player_actor_sound_uchiwa(ACTOR* actor); +static void Player_actor_sound_move_temochi_kazaguruma(ACTOR* actor); + +static void Player_actor_set_viblation_Shake_tree(void); static int Player_actor_Item_main(ACTOR* actorx, GAME* game); static void Player_actor_LoadOrDestruct_Item(ACTOR* actor, int kind, int anim_idx, int mode, f32 speed, f32 morph_speed, f32 frame); static int Player_actor_Get_BasicItemMainIndex_fromItemKind(int kind); +static int Player_actor_CheckController_forPickup(GAME* game); +static int Player_actor_CheckController_forAxe(GAME* game); +static int Player_actor_CheckController_forNet(GAME* game); +static int Player_actor_CheckController_forRod(GAME* game); +static int Player_actor_CheckController_forScoop(GAME* game); +static int Player_actor_CheckController_forUmbrella(GAME* game); +static int Player_actor_CheckController_forFan(GAME* game, int type); +static int Player_actor_CheckController_forShake_tree(GAME* game); +static f32 Player_actor_CheckController_forStruggle_pitfall(void); +static int Player_actor_CheckController_forDush(void); +static f32 Player_actor_GetController_move_percentX(void); +static f32 Player_actor_GetController_move_percentY(void); +static f32 Player_actor_GetController_move_percentR(void); +static s16 Player_actor_GetController_move_angle(void); +static s16 Player_actor_GetController_old_move_angle(void); +static f32 Player_actor_GetController_recognize_percentR(void); +static f32 Player_actor_GetController_old_recognize_percentR(void); +static int Player_actor_CheckController_forRadio_exercise(GAME* game); + /* Common */ #include "../src/m_player_controller.c_inc" #include "../src/m_player_vibration.c_inc" @@ -219,9 +308,9 @@ static void Player_actor_Set_old_sound_frame_counter(ACTOR* actorx); static void Player_actor_change_proc_index(ACTOR* actorx, GAME* game); static int Player_actor_request_main_invade_all(GAME*, int); -static int Player_actor_request_main_refuse(GAME*, int); -static int Player_actor_request_main_return_demo_all(GAME*, int, f32, int); -static int Player_actor_request_main_wait_all(GAME*, f32, f32, int, int); +// static int Player_actor_request_main_refuse(GAME*, int); +// static int Player_actor_request_main_return_demo_all(GAME*, int, f32, int); +// static int Player_actor_request_main_wait_all(GAME*, f32, f32, int, int); static int Player_actor_request_main_talk_all(GAME*, ACTOR*, int, f32, int, int); static int Player_actor_request_main_hold(GAME*, int, int, const xyz_t*, f32, int, int); static int Player_actor_request_main_recieve_wait(GAME*, ACTOR*, int, int, mActor_name_t, int, int); @@ -294,7 +383,7 @@ static int Player_actor_request_main_walk_all(GAME*, xyz_t*, f32, int, int); static int Player_actor_request_main_run_all(GAME*, f32, int, int); static int Player_actor_request_main_dash_all(GAME*, f32, int, int); -static void Player_actor_Refuse_pickup_demo_ct(ACTOR*); +// static void Player_actor_Refuse_pickup_demo_ct(ACTOR*); static void Player_actor_init_value(ACTOR* actorx, GAME* game) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; @@ -457,7 +546,7 @@ extern void Player_actor_dt(ACTOR* actorx, GAME* game) { typedef void (*mPlayer_REQUEST_MAIN_CHANGE_FROM_SUBMENU_PROC)(ACTOR*, GAME*); -static void Player_actor_request_main_wait_from_submenu(ACTOR*, GAME*); +// static void Player_actor_request_main_wait_from_submenu(ACTOR*, GAME*); static void Player_actor_request_main_putin_scoop_from_submenu(ACTOR*, GAME*); static void Player_actor_request_main_give_from_submenu(ACTOR*, GAME*); static void Player_actor_request_main_demo_wait_from_submenu(ACTOR*, GAME*); diff --git a/src/m_player_controller.c_inc b/src/m_player_controller.c_inc index 7e350794..a5b7b5b6 100644 --- a/src/m_player_controller.c_inc +++ b/src/m_player_controller.c_inc @@ -1,128 +1,97 @@ - -int Player_actor_CheckController_forPickup(GAME* game) { - GAME_PLAY* play = (GAME_PLAY*)game; - +static int Player_actor_CheckController_forPickup(GAME* game) { if (mEv_CheckTitleDemo() > 0) { mPlayer_Controller_Data_c* data = mPlib_Get_controller_data_for_title_demo_p(); - PLAYER_ACTOR* player = GET_PLAYER_ACTOR(play); - s8 kind = Player_actor_Get_ItemKind(actor, player->now_main_index); - int ret = 0; + ACTOR* actorx = GET_PLAYER_ACTOR_GAME_ACTOR(game); + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + s8 kind = Player_actor_Get_ItemKind(actorx, player->now_main_index); - if (mPlayer_ITEM_KIND_VALID(kind) && (data->on != 0) && (data->unk3B != 0)) { - ret = 1; - } - - return ret; + return !mPlayer_ITEM_KIND_CHECK(kind, 0, mPlayer_ITEM_KIND_NUM) && (data->on != 0) && (data->unk3B != 0); } return chkTrigger(BUTTON_B); } -int Player_actor_CheckController_forAxe(GAME* game) { - GAME_PLAY* play = (GAME_PLAY*)game; - PLAYER_ACTOR* player = GET_PLAYER_ACTOR(play); - s8 kind = Player_actor_Get_ItemKind(actor, player->now_main_index); - int check = 0; +static int Player_actor_CheckController_forAxe(GAME* game) { + ACTOR* actorx = GET_PLAYER_ACTOR_GAME_ACTOR(game); + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + s8 kind = Player_actor_Get_ItemKind(actorx, player->now_main_index); - if (mPlayer_ITEM_IS_AXE(kind)) { - check = 1; - } - if (check != 0) { + if (mPlayer_ITEM_IS_AXE(kind) != FALSE) { if (mEv_CheckTitleDemo() > 0) { return mPlib_Get_controller_data_for_title_demo_p()->on; } return chkTrigger(BUTTON_A); } - return 0; + return FALSE; } -int Player_actor_CheckController_forNet(GAME* game) { - GAME_PLAY* play = (GAME_PLAY*)game; - PLAYER_ACTOR* player = GET_PLAYER_ACTOR(play); - s8 kind = Player_actor_Get_ItemKind(actor, player->now_main_index); - int check = 0; +static int Player_actor_CheckController_forNet(GAME* game) { + ACTOR* actorx = GET_PLAYER_ACTOR_GAME_ACTOR(game); + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + s8 kind = Player_actor_Get_ItemKind(actorx, player->now_main_index); - if (mPlayer_ITEM_IS_NET(kind)) { - check = 1; - } - if (check != 0) { + if (mPlayer_ITEM_IS_NET(kind) != FALSE) { if (mEv_CheckTitleDemo() > 0) { return mPlib_Get_controller_data_for_title_demo_p()->now; } return chkButton(BUTTON_A); } - return 0; + return FALSE; } -int Player_actor_CheckController_forRod(GAME* game) { - GAME_PLAY* play = (GAME_PLAY*)game; - PLAYER_ACTOR* player = GET_PLAYER_ACTOR(play); - s8 kind = Player_actor_Get_ItemKind(actor, player->now_main_index); - int check = 0; +static int Player_actor_CheckController_forRod(GAME* game) { + ACTOR* actorx = GET_PLAYER_ACTOR_GAME_ACTOR(game); + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + s8 kind = Player_actor_Get_ItemKind(actorx, player->now_main_index); - if (mPlayer_ITEM_IS_ROD(kind)) { - check = 1; - } - if (check != 0) { + if (mPlayer_ITEM_IS_ROD(kind) != FALSE) { if (mEv_CheckTitleDemo() > 0) { return mPlib_Get_controller_data_for_title_demo_p()->on; } return chkTrigger(BUTTON_A); } - return 0; + return FALSE; } -int Player_actor_CheckController_forScoop(GAME* game) { - GAME_PLAY* play = (GAME_PLAY*)game; - PLAYER_ACTOR* player = GET_PLAYER_ACTOR(play); - s8 kind = Player_actor_Get_ItemKind(player, player->now_main_index); - int check = 0; +static int Player_actor_CheckController_forScoop(GAME* game) { + ACTOR* actorx = GET_PLAYER_ACTOR_GAME_ACTOR(game); + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + s8 kind = Player_actor_Get_ItemKind(actorx, player->now_main_index); - if (mPlayer_ITEM_IS_SHOVEL(kind)) { - check = 1; - } - if (check != 0) { + if (mPlayer_ITEM_IS_SHOVEL(kind) != FALSE) { if (mEv_CheckTitleDemo() > 0) { return mPlib_Get_controller_data_for_title_demo_p()->on; } return chkTrigger(BUTTON_A); } - return 0; + return FALSE; } -int Player_actor_CheckController_forUmbrella(GAME* game) { - GAME_PLAY* play = (GAME_PLAY*)game; - PLAYER_ACTOR* player = GET_PLAYER_ACTOR(play); - s8 kind = Player_actor_Get_ItemKind(player, player->now_main_index); - int check = 0; +static int Player_actor_CheckController_forUmbrella(GAME* game) { + ACTOR* actorx = GET_PLAYER_ACTOR_GAME_ACTOR(game); + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + s8 kind = Player_actor_Get_ItemKind(actorx, player->now_main_index); - if (mPlayer_ITEM_IS_UMBRELLA(kind)) { - check = 1; - } - if (check != 0) { + if (mPlayer_ITEM_IS_UMBRELLA(kind) != FALSE) { if (mEv_CheckTitleDemo() > 0) { return mPlib_Get_controller_data_for_title_demo_p()->on; } return chkTrigger(BUTTON_A); } - return 0; + return FALSE; } -int Player_actor_CheckController_forFan(GAME* game, int type) { - GAME_PLAY* play = (GAME_PLAY*)game;{ - PLAYER_ACTOR* player = GET_PLAYER_ACTOR(play); - s8 kind = Player_actor_Get_ItemKind(player, player->now_main_index); - int check = 0; +static int Player_actor_CheckController_forFan(GAME* game, int type) { + ACTOR* actorx = GET_PLAYER_ACTOR_GAME_ACTOR(game); + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + s8 kind = Player_actor_Get_ItemKind(actorx, player->now_main_index); - if (mPlayer_ITEM_IS_FAN(kind)) { - check = 1; - } - if (check != 0) { + if (mPlayer_ITEM_IS_FAN(kind) != FALSE) { if (mEv_CheckTitleDemo() > 0) { mPlayer_Controller_Data_c* data = mPlib_Get_controller_data_for_title_demo_p(); if (type != 0) { @@ -138,17 +107,15 @@ int Player_actor_CheckController_forFan(GAME* game, int type) { } } - return 0; + return FALSE; } -int Player_actor_CheckController_forShake_tree(GAME* game) { - GAME_PLAY* play = (GAME_PLAY*)game; - PLAYER_ACTOR* player = GET_PLAYER_ACTOR(play); - s8 kind = Player_actor_Get_ItemKind(player, player->now_main_index); - int check; +static int Player_actor_CheckController_forShake_tree(GAME* game) { + ACTOR* actorx = GET_PLAYER_ACTOR_GAME_ACTOR(game); + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + s8 kind = Player_actor_Get_ItemKind(actorx, player->now_main_index); - if (mPlayer_ITEM_KIND_VALID(kind) || (mPlayer_ITEM_IS_UMBRELLA(kind) || mPlayer_ITEM_IS_BALLOON(kind) || - mPlayer_ITEM_IS_WINDMILL(kind) || mPlayer_ITEM_IS_FAN(kind)) != FALSE) { + if (!mPlayer_ITEM_KIND_CHECK(kind, 0, mPlayer_ITEM_KIND_NUM) || mPlayer_ITEM_IS_NOT_TOOL(kind) != FALSE) { if (mEv_CheckTitleDemo() > 0) { mPlayer_Controller_Data_c* data = mPlib_Get_controller_data_for_title_demo_p(); return (data->on != 0) && (data->unk3B == 0); @@ -156,57 +123,58 @@ int Player_actor_CheckController_forShake_tree(GAME* game) { return chkTrigger(BUTTON_A); } } - return 0; + return FALSE; } -f32 Player_actor_CheckController_forStruggle_pitfall() { +static f32 Player_actor_CheckController_forStruggle_pitfall(void) { return (chkTrigger(BUTTON_A) != 0) ? 1.0f : 0.0f; } -int Player_actor_CheckController_forDush() { +static int Player_actor_CheckController_forDush(void) { return (mEv_CheckTitleDemo() > 0) ? mPlib_Get_controller_data_for_title_demo_p()->unk3B : mPlib_CheckButtonOnly_forDush(); } -f32 Player_actor_GetController_move_percentX() { +static f32 Player_actor_GetController_move_percentX(void) { return (mEv_CheckTitleDemo() > 0) ? mPlib_Get_controller_data_for_title_demo_p()->mcon.move_pX : gamePT->mcon.move_pX; } -f32 Player_actor_GetController_move_percentY() { +static f32 Player_actor_GetController_move_percentY(void) { return (mEv_CheckTitleDemo() > 0) ? mPlib_Get_controller_data_for_title_demo_p()->mcon.move_pY : gamePT->mcon.move_pY; } -f32 Player_actor_GetController_move_percentR() { +static f32 Player_actor_GetController_move_percentR(void) { return (mEv_CheckTitleDemo() > 0) ? mPlib_Get_controller_data_for_title_demo_p()->mcon.move_pR : gamePT->mcon.move_pR; } -s16 Player_actor_GetController_move_angle() { +static s16 Player_actor_GetController_move_angle(void) { return (mEv_CheckTitleDemo() > 0) ? mPlib_Get_controller_data_for_title_demo_p()->mcon.move_angle : gamePT->mcon.move_angle; } -s16 Player_actor_GetController_old_move_angle() { +static s16 Player_actor_GetController_old_move_angle(void) { return (mEv_CheckTitleDemo() > 0) ? mPlib_Get_controller_data_for_title_demo_p()->mcon.last_move_angle : gamePT->mcon.last_move_angle; } -f32 Player_actor_GetController_recognize_percentR() { +static f32 Player_actor_GetController_recognize_percentR(void) { return (mEv_CheckTitleDemo() > 0) ? mPlib_Get_controller_data_for_title_demo_p()->mcon.adjusted_pR : gamePT->mcon.adjusted_pR; } -f32 Player_actor_GetController_old_recognize_percentR() { +static f32 Player_actor_GetController_old_recognize_percentR(void) { return (mEv_CheckTitleDemo() > 0) ? mPlib_Get_controller_data_for_title_demo_p()->mcon.last_adjusted_pR : gamePT->mcon.last_adjusted_pR; } -int Player_actor_CheckController_forRadio_exercise(GAME* game) { +static int Player_actor_CheckController_forRadio_exercise(GAME* game) { if (mEv_CheckTitleDemo() > 0) { return -1; } + if ((mPlib_Check_now_handin_item() != 0) || (Player_actor_GetController_old_recognize_percentR() != 0.0f) || (Player_actor_CheckController_forPickup(game) != 0) || (Player_actor_CheckController_forShake_tree(game) != 0)) { @@ -215,32 +183,33 @@ int Player_actor_CheckController_forRadio_exercise(GAME* game) { if (JW_JUTGamepad_getSubStickValue() > 0.6f) { s16 angle = JW_JUTGamepad_getSubStickAngle(); + if (angle >= 0) { - if (angle < 0x1000) { + if (angle < DEG2SHORT_ANGLE2(22.5f)) { return 6; - } else if (angle < 0x3000) { + } else if (angle < DEG2SHORT_ANGLE2(67.5f)) { return 7; - } else if (angle < 0x5000) { + } else if (angle < DEG2SHORT_ANGLE2(112.5f)) { return 1; + } else if (angle < DEG2SHORT_ANGLE2(157.5f)) { + return 4; } else { - return (0x7000 > angle) + 3; + return 3; + } + } else { + if (angle > -DEG2SHORT_ANGLE2(22.5f)) { + return 6; + } else if (angle > -DEG2SHORT_ANGLE2(67.5f)) { + return 8; + } else if (angle > -DEG2SHORT_ANGLE2(112.5f)) { + return 2; + } else if (angle > -DEG2SHORT_ANGLE2(157.5f)) { + return 5; + } else { + return 3; } } - if (angle > -0x1000) { - return 6; - } - if (angle > -0x3000) { - return 8; - } - if (angle > -0x5000) { - return 2; - } - if (angle > -0x7000) { - return 5; - } - - return 3; + } else { + return 0; } - - return 0; } diff --git a/src/m_player_draw.c_inc b/src/m_player_draw.c_inc index 46d993ac..7a92f9e3 100644 --- a/src/m_player_draw.c_inc +++ b/src/m_player_draw.c_inc @@ -316,7 +316,7 @@ static void Player_actor_draw_Normal(ACTOR* actorx, GAME* game) { mPlayer_main_pickup_jump_c* main_pickup_jump = NULL; if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_PICKUP) { - if (player->main_data.pickup.exchange_flag == FALSE) { + if (player->main_data.pickup.signboard_flag == FALSE) { item = player->main_data.pickup.item; item_scale = player->main_data.pickup.scale; item_pos_p = &player->main_data.pickup.item_pos; diff --git a/src/m_player_main_dma.c_inc b/src/m_player_main_dma.c_inc index 54dc8783..adbbc5d0 100644 --- a/src/m_player_main_dma.c_inc +++ b/src/m_player_main_dma.c_inc @@ -1,5 +1,5 @@ -int Player_actor_request_main_dma(GAME* game, int flag) { +static int Player_actor_request_main_dma(GAME* game, int flag) { if (Player_actor_check_request_main_able(game, mPlayer_INDEX_DMA, flag) != FALSE) { Player_actor_request_main_index(game, mPlayer_INDEX_DMA, flag); return TRUE; @@ -7,11 +7,11 @@ int Player_actor_request_main_dma(GAME* game, int flag) { return FALSE; } -void Player_actor_setup_main_Dma(void) { - Player_actor_setup_main_Base(); +static void Player_actor_setup_main_Dma(ACTOR* actorx, GAME* game) { + Player_actor_setup_main_Base(actorx, game); } -void Player_actor_request_proc_index_fromDma(ACTOR* actorx, GAME* game) { +static void Player_actor_request_proc_index_fromDma(ACTOR* actorx, GAME* game) { GAME_PLAY* play = (GAME_PLAY*)game; Object_Exchange_c* exchange = &play->object_exchange; int bank_idx = mSc_bank_regist_check(exchange, 14); @@ -55,7 +55,8 @@ void Player_actor_request_proc_index_fromDma(ACTOR* actorx, GAME* game) { } } } -void Player_actor_main_Dma(ACTOR* actor, GAME* game) { + +static void Player_actor_main_Dma(ACTOR* actor, GAME* game) { Player_actor_Reinput_force_position_angle(actor, game); Player_actor_request_proc_index_fromDma(actor, game); } diff --git a/src/m_player_main_give_wait.c_inc b/src/m_player_main_give_wait.c_inc index dd79675c..ed2f9a35 100644 --- a/src/m_player_main_give_wait.c_inc +++ b/src/m_player_main_give_wait.c_inc @@ -51,7 +51,7 @@ static void Player_actor_setup_main_Give_wait(ACTOR* actorx, GAME* game) { } } -static void Player_actor_settle_main_Give_wait(ACTOR* actorx) { +static void Player_actor_settle_main_Give_wait(ACTOR* actorx, GAME* game) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; mPlayer_main_give_wait_c* main_give_wait_p = &player->main_data.give_wait; diff --git a/src/m_player_main_intro.c_inc b/src/m_player_main_intro.c_inc index 58a31a31..eb8dacb0 100644 --- a/src/m_player_main_intro.c_inc +++ b/src/m_player_main_intro.c_inc @@ -1,5 +1,4 @@ - -int Player_actor_request_main_intro_all(GAME* game, int flag) { +static int Player_actor_request_main_intro_all(GAME* game, int flag) { if (Player_actor_check_request_main_able(game, mPlayer_INDEX_INTRO, flag) != FALSE) { Player_actor_request_main_index(game, mPlayer_INDEX_INTRO, flag); return TRUE; @@ -7,36 +6,36 @@ int Player_actor_request_main_intro_all(GAME* game, int flag) { return FALSE; } -void Player_actor_setup_main_Intro(ACTOR* actor, GAME* game){ +static void Player_actor_setup_main_Intro(ACTOR* actor, GAME* game) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; int anim_idx; int part_table_idx; - Player_actor_SetupItem_Base1(actor,0, -5.0f, &anim_idx, &part_table_idx); + Player_actor_SetupItem_Base1(actor, 0, -5.0f, &anim_idx, &part_table_idx); player->main_data.intro.timer = 0.0f; Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_WAIT1, anim_idx, 1.0f, 1.0f, 0.5f, 0.0f, part_table_idx); Player_actor_setup_main_Base(actor, game); } -void Player_actor_CulcAnimation_Intro(ACTOR* actor) { +static void Player_actor_CulcAnimation_Intro(ACTOR* actor) { f32 base; Player_actor_CulcAnimation_Base2(actor, &base); } -void Player_actor_Movement_Intro(ACTOR* actor) { +static void Player_actor_Movement_Intro(ACTOR* actor) { Player_actor_Movement_Base_Braking(actor); } -void Player_actor_ObjCheck_Intro(ACTOR* actor, GAME* game){ - Player_actor_Excute_Corect_forStand(actor); +static void Player_actor_ObjCheck_Intro(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); } -void Player_actor_BGcheck_Intro(ACTOR* actor) { +static void Player_actor_BGcheck_Intro(ACTOR* actor) { Player_actor_BGcheck_common_type1(actor); } -void Player_actor_ResetCameraPos_Intro(GAME* game) { +static void Player_actor_ResetCameraPos_Intro(GAME* game) { GAME_PLAY* play = (GAME_PLAY*)game; if (Camera2_Check_main_index(play, mPlayer_INDEX_INTRO) != 0) { @@ -44,20 +43,16 @@ void Player_actor_ResetCameraPos_Intro(GAME* game) { } } - -void Player_actor_request_proc_index_fromIntro(ACTOR* actor, GAME* game){ +static void Player_actor_request_proc_index_fromIntro(ACTOR* actor, GAME* game) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; player->main_data.intro.timer += 1.0f; - - if(player->main_data.intro.timer >= 4.0f){ - Player_actor_request_main_wait_all(game, 0.0f, 0.0f, 0 ,1); + if (player->main_data.intro.timer >= 4.0f) { + Player_actor_request_main_wait_all(game, 0.0f, 0.0f, 0, 1); } } - -void Player_actor_main_Intro(ACTOR* actor, GAME* game){ - +static void Player_actor_main_Intro(ACTOR* actor, GAME* game) { Player_actor_Movement_Intro(actor); Player_actor_Reinput_force_position_angle(actor, game); Player_actor_CulcAnimation_Intro(actor); diff --git a/src/m_player_main_pickup.c_inc b/src/m_player_main_pickup.c_inc index e69de29b..4d36f93e 100644 --- a/src/m_player_main_pickup.c_inc +++ b/src/m_player_main_pickup.c_inc @@ -0,0 +1,183 @@ +static int Player_actor_request_main_pickup(GAME* game, mActor_name_t item, const xyz_t* target_pos_p, + const xyz_t* item_pos_p, int slot_idx, int signboard_flag) { + if (Player_actor_check_able_request_main_index_for_reset(mPlayer_INDEX_PICKUP) == FALSE) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_pickup_c* req_pickup_p = &player->requested_main_index_data.pickup; + + req_pickup_p->inv_slot = slot_idx; + req_pickup_p->item = item; + req_pickup_p->target_pos = *target_pos_p; + req_pickup_p->item_pos = *item_pos_p; + req_pickup_p->flag = signboard_flag; + + Player_actor_request_main_index(game, mPlayer_INDEX_PICKUP, mPlayer_REQUEST_PRIORITY_8); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Pickup(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + f32 morph_counter; + mPlayer_request_pickup_c* req_pickup_p = &player->requested_main_index_data.pickup; + mPlayer_main_pickup_c* main_pickup_p = &player->main_data.pickup; + int slot_idx; + mActor_name_t item; + xyz_t* target_pos_p; + xyz_t* item_pos_p; + int signboard_flag; + int anim1_idx; + int part_table_idx; + + slot_idx = req_pickup_p->inv_slot; + item = req_pickup_p->item; + target_pos_p = &req_pickup_p->target_pos; + item_pos_p = &req_pickup_p->item_pos; + signboard_flag = req_pickup_p->flag; + + main_pickup_p->target_pos = *target_pos_p; + main_pickup_p->item_pos = *item_pos_p; + main_pickup_p->signboard_flag = signboard_flag; + main_pickup_p->scale = 0.01f; + main_pickup_p->timer = 0.0f; + main_pickup_p->item = item; + + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_PICKUP1, -6.0f, &anim1_idx, &part_table_idx); + + if (signboard_flag) { + aSIGN_erase_white_sign(game, target_pos_p); + } + + Player_actor_putin_item(slot_idx, item, target_pos_p); + + if (slot_idx >= 0) { + main_pickup_p->exchange_flag = FALSE; + } else if (mEv_CheckTitleDemo() > 0) { + main_pickup_p->exchange_flag = FALSE; + } else { + main_pickup_p->exchange_flag = TRUE; + } + + Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_PICKUP1, anim1_idx, 1.0f, 1.0f, 0.5f, -6.0f, + cKF_FRAMECONTROL_STOP, mPlayer_PART_TABLE_PICK_UP); + Player_actor_setup_main_Base(actorx, game); + + if (item == ITM_FOOD_COCONUT) { + mISL_SetNowPlayerAction(mISL_PLAYER_ACTION_PICKUP_COCONUT); + } +} + +static void Player_actor_Movement_Pickup(ACTOR* actorx) { + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static int Player_actor_CulcAnimation_Pickup(ACTOR* actorx, f32* last_anim0_cur_frame_p) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame_p); +} + +static void Player_actor_ObjCheck_Pickup(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Pickup(ACTOR* actorx) { + Player_actor_BGcheck_common_type1(actorx); +} + +static void Player_actor_SetSound_Pickup(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + + if (Player_actor_Check_AnimationFrame(fc0_p, 10.0f)) { + Player_actor_sound_ITEM_GET(actorx); + } + + if (Player_actor_Check_AnimationFrame(fc0_p, 20.0f)) { + Player_actor_sound_GASAGOSO(actorx); + } +} + +static void Player_actor_SearchAnimation_Pickup(ACTOR* actorx, GAME* game, f32 frame) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE) { + Player_actor_SetSound_Pickup(actorx); + Player_actor_Set_FootMark_Base1(actorx, game, FALSE, FALSE); + } +} + +static void Player_actor_Set_Item_Pickup(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_pickup_c* main_pickup_p = &player->main_data.pickup; + f32* scale_p = &main_pickup_p->scale; + xyz_t* item_pos_p = &main_pickup_p->item_pos; + xyz_t* left_hand_pos_p = &player->left_hand_pos; + f32* timer_p = &main_pickup_p->timer; + + (*timer_p) += 1.0f; + if (*timer_p > 40.0f) { + *timer_p = 40.0f; + *scale_p = 0.0f; + *item_pos_p = *left_hand_pos_p; + } else { + xyz_t* item_ofs_p = &main_pickup_p->item_offset; + + if (*timer_p < 20.0f) { + item_ofs_p->x = item_pos_p->x - left_hand_pos_p->x; + item_ofs_p->y = item_pos_p->y - left_hand_pos_p->y; + item_ofs_p->z = item_pos_p->z - left_hand_pos_p->z; + } else { + f32 p = 1.0f - (*timer_p - 20.0f) / 20.0f; + + if (p < 0.0f) { + p = 0.0f; + } else if (p > 1.0f) { + p = 1.0f; + } + + *scale_p = p * 0.01f; + item_pos_p->x = left_hand_pos_p->x + p * item_ofs_p->x; + item_pos_p->y = left_hand_pos_p->y + p * item_ofs_p->y; + item_pos_p->z = left_hand_pos_p->z + p * item_ofs_p->z; + } + } +} + +static void Player_actor_request_proc_index_fromPickup(ACTOR* actorx, GAME* game, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (end_flag) { + mPlayer_main_pickup_c* main_pickup_p = &player->main_data.pickup; + + if (main_pickup_p->exchange_flag) { + Player_actor_request_main_pickup_exchange(game, &main_pickup_p->target_pos, main_pickup_p->item, + mPlayer_REQUEST_PRIORITY_21); + } else { + Player_actor_SettleRequestMainIndexPriority(actorx); + + if (main_pickup_p->item == ITM_GOLDEN_SHOVEL && mPlib_Check_golden_item_get_demo_end(3) == FALSE) { + Player_actor_request_main_demo_get_golden_item_all(game, 3, mPlayer_REQUEST_PRIORITY_34); + } else { + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } + } + } +} + +static void Player_actor_main_Pickup(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + int end_flag; + + Player_actor_Movement_Pickup(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + end_flag = Player_actor_CulcAnimation_Pickup(actorx, &last_anim0_cur_frame); + Player_actor_SearchAnimation_Pickup(actorx, game, last_anim0_cur_frame); + Player_actor_Set_Item_Pickup(actorx); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Pickup(actorx, game); + Player_actor_BGcheck_Pickup(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromPickup(actorx, game, end_flag); +} diff --git a/src/m_player_main_pickup_exchange.c_inc b/src/m_player_main_pickup_exchange.c_inc index e69de29b..b344ddb7 100644 --- a/src/m_player_main_pickup_exchange.c_inc +++ b/src/m_player_main_pickup_exchange.c_inc @@ -0,0 +1,170 @@ +static int Player_actor_request_main_pickup_exchange(GAME* game, const xyz_t* target_pos_p, mActor_name_t item, + int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_PICKUP_EXCHANGE, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_pickup_exchange_c* req_pickup_exchange_p = &player->requested_main_index_data.pickup_exchange; + + Player_actor_request_main_index(game, mPlayer_INDEX_PICKUP_EXCHANGE, priority); + req_pickup_exchange_p->target_pos = *target_pos_p; + req_pickup_exchange_p->item = item; + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Pickup_exchange(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_request_pickup_exchange_c* req_pickup_exchange_p = &player->requested_main_index_data.pickup_exchange; + mPlayer_main_pickup_exchange_c* main_pickup_exchange_p = &player->main_data.pickup_exchange; + int anim1_idx; + int part_table_idx; + + main_pickup_exchange_p->target_pos = req_pickup_exchange_p->target_pos; + main_pickup_exchange_p->item = req_pickup_exchange_p->item; + main_pickup_exchange_p->msg_mode = 0; + main_pickup_exchange_p->submenu_flag = FALSE; + + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_PICKUP_WAIT1, -6.0f, &anim1_idx, &part_table_idx); + + if (anim1_idx != mPlayer_ANIM_PICKUP_WAIT1) { + part_table_idx = mPlayer_PART_TABLE_NET; + } + + Player_actor_InitAnimation_Base1(actorx, game, mPlayer_ANIM_PICKUP_WAIT1, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, + part_table_idx); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_settle_main_Pickup_exchange(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_pickup_exchange_c* main_pickup_exchange_p = &player->main_data.pickup_exchange; + + if (main_pickup_exchange_p->submenu_flag == FALSE) { + mActor_name_t item = main_pickup_exchange_p->item; + xyz_t* target_pos_p = &main_pickup_exchange_p->target_pos; + + if (item == ITM_SIGNBOARD) { + aSIGN_set_white_sign(game, target_pos_p); + } else if (Common_Get(clip).bg_item_clip != NULL && + Common_Get(clip).bg_item_clip->player_drop_entry_proc != NULL) { + int ut_x; + int ut_z; + + if (mFI_Wpos2UtNum(&ut_x, &ut_z, *target_pos_p)) { + Common_Get(clip).bg_item_clip->player_drop_entry_proc(game, item, ut_x, ut_z, mCoBG_LAYER0); + } + } + } +} + +static void Player_actor_Movement_Pickup_exchange(ACTOR* actorx) { + Player_actor_Movement_Base_Braking_common(actorx, 0.23925f); +} + +static int Player_actor_CulcAnimation_Pickup_exchange(ACTOR* actorx) { + f32 dummy; + + return Player_actor_CulcAnimation_Base2(actorx, &dummy); +} + +static void Player_actor_ObjCheck_Pickup_exchange(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Pickup_exchange(ACTOR* actorx) { + Player_actor_BGcheck_common_type1(actorx); +} + +static void Player_actor_Pickup_exchange_demo_ct(ACTOR* actorx) { + int msg_no; + rgba_t window_color; + + if (Common_Get(field_type) == mFI_FIELDTYPE2_FG) { + msg_no = 0x17B2; + } else { + msg_no = 0x17B3; + } + + mDemo_Set_msg_num(msg_no); + mDemo_Set_talk_display_name(FALSE); + mDemo_Set_ListenAble(); + + window_color.r = 255; + window_color.g = 255; + window_color.b = 20; + window_color.a = 255; + mDemo_Set_talk_window_color(&window_color); + mChoice_CLEAR_CHOSENUM(); +} + +static int Player_actor_MessageControl_Pickup_exchange(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_pickup_exchange_c* main_pickup_exchange_p = &player->main_data.pickup_exchange; + int* msg_mode_p = &main_pickup_exchange_p->msg_mode; + + switch (*msg_mode_p) { + case 0: { + if (mDemo_Check(mDemo_TYPE_REPORT, actorx) == FALSE) { + mDemo_Request(mDemo_TYPE_REPORT, actorx, &Player_actor_Pickup_exchange_demo_ct); + } else { + *msg_mode_p = 1; + } + return -1; + } + case 1: { + int choice_no = mChoice_GET_CHOSENUM(); + + if (choice_no == mChoice_CHOICE0) { + *msg_mode_p = 2; + main_pickup_exchange_p->submenu_flag = TRUE; + } else if (choice_no == mChoice_CHOICE1) { + *msg_mode_p = 3; + main_pickup_exchange_p->submenu_flag = FALSE; + } + return -1; + } + case 2: { + + if (mDemo_Check(mDemo_TYPE_REPORT, actorx) == FALSE) { + GAME_PLAY* play = (GAME_PLAY*)game; + Submenu* submenu = &play->submenu; + + mSM_open_submenu_new2(submenu, mSM_OVL_INVENTORY, mSM_IV_OPEN_EXCHANGE, main_pickup_exchange_p->item, + NULL, actorx->shape_info.rotation.y); + } + return -1; + } + case 3: { + if (mDemo_Check(mDemo_TYPE_REPORT, actorx) == FALSE) { + return mPlayer_INDEX_WAIT; + } + return -1; + } + default: { + return -1; + } + } +} + +static void Player_actor_request_proc_index_fromPickup_exchange(GAME* game, int request_main_index) { + if (request_main_index == mPlayer_INDEX_WAIT) { + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_34); + } +} + +static void Player_actor_main_Pickup_exchange(ACTOR* actorx, GAME* game) { + int request_main_index; + + Player_actor_Movement_Pickup_exchange(actorx); + Player_actor_CulcAnimation_Pickup_exchange(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_tex_anime_pattern(actorx); + Player_actor_ObjCheck_Pickup_exchange(actorx, game); + Player_actor_BGcheck_Pickup_exchange(actorx); + request_main_index = Player_actor_MessageControl_Pickup_exchange(actorx, game); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromPickup_exchange(game, request_main_index); +} diff --git a/src/m_player_main_pickup_furniture.c_inc b/src/m_player_main_pickup_furniture.c_inc index e69de29b..918d0b65 100644 --- a/src/m_player_main_pickup_furniture.c_inc +++ b/src/m_player_main_pickup_furniture.c_inc @@ -0,0 +1,198 @@ +static int Player_actor_request_main_pickup_furniture(GAME* game, int slot_idx, mActor_name_t item, + const xyz_t* item_pos_p) { + if (Player_actor_check_able_request_main_index_for_reset(mPlayer_INDEX_PICKUP_FURNITURE) == FALSE) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_pickup_furniture_c* req_pickup_furniture_p = + &player->requested_main_index_data.pickup_furniture; + + req_pickup_furniture_p->inv_slot = slot_idx; + req_pickup_furniture_p->item = item; + req_pickup_furniture_p->item_pos = *item_pos_p; + + Player_actor_request_main_index(game, mPlayer_INDEX_PICKUP_FURNITURE, mPlayer_REQUEST_PRIORITY_8); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Pickup_furniture(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_request_pickup_furniture_c* req_pickup_furniture_p = &player->requested_main_index_data.pickup_furniture; + mPlayer_main_pickup_furniture_c* main_pickup_furniture_p = &player->main_data.pickup_furniture; + int slot_idx; + mActor_name_t item; + xyz_t* item_pos_p; + int anim1_idx; + int part_table_idx; + + slot_idx = req_pickup_furniture_p->inv_slot; + item = req_pickup_furniture_p->item; + item_pos_p = &req_pickup_furniture_p->item_pos; + + main_pickup_furniture_p->target_pos = main_pickup_furniture_p->item_pos = *item_pos_p; + main_pickup_furniture_p->scale = 0.01f; + main_pickup_furniture_p->item = item; + + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_PICKUP1, -6.0f, &anim1_idx, &part_table_idx); + Player_actor_putin_furniture(game, slot_idx, item); + + if (slot_idx >= 0 || ITEM_IS_MYMANNIQUIN(item) || ITEM_IS_MYUMBRELLA(item)) { + main_pickup_furniture_p->exchange_flag = FALSE; + } else { + main_pickup_furniture_p->exchange_flag = TRUE; + } + + Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_PICKUP1, anim1_idx, 1.0f, 1.0f, 0.5f, -6.0f, + cKF_FRAMECONTROL_STOP, mPlayer_PART_TABLE_PICK_UP); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_settle_main_Pickup_furniture(ACTOR* actorx, GAME* game) { + if (Common_Get(clip).my_room_clip != NULL) { + Common_Get(clip).my_room_clip->leaf_pickuped_proc(); + } +} + +static void Player_actor_Movement_Pickup_furniture_common(ACTOR* actorx, xyz_t* target_pos_p) { + xyz_t* player_pos_p = &actorx->world.position; + f32 dx = target_pos_p->x - player_pos_p->x; + f32 dz = target_pos_p->z - player_pos_p->z; + + if (dx != 0.0f || dz != 0.0f) { + s16 target_angle_y = atans_table(dz, dx); + + add_calc_short_angle2(&actorx->shape_info.rotation.y, target_angle_y, 1.0f - sqrtf(0.5f), + DEG2SHORT_ANGLE2(13.73291015625f), DEG2SHORT_ANGLE2(0.274658203125f)); + } + + Player_actor_Movement_Base_Braking_common(actorx, 0.32625f); +} + +static void Player_actor_Movement_Pickup_furniture(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_pickup_furniture_c* main_pickup_furniture_p = &player->main_data.pickup_furniture; + + Player_actor_Movement_Pickup_furniture_common(actorx, &main_pickup_furniture_p->target_pos); + actorx->world.angle.y = actorx->shape_info.rotation.y; +} + +static int Player_actor_CulcAnimation_Pickup_furniture(ACTOR* actorx, f32* last_anim0_cur_frame_p) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame_p); +} + +static void Player_actor_ObjCheck_Pickup_furniture(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Pickup_furniture(ACTOR* actorx) { + Player_actor_BGcheck_common_type3(actorx); +} + +static void Player_actor_Set_Item_Pickup_furniture(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_pickup_furniture_c* main_pickup_furniture_p = &player->main_data.pickup_furniture; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + f32 cur_frame = kf0_p->frame_control.current_frame; + xyz_t* item_pos_p = &main_pickup_furniture_p->item_pos; + f32* scale_p = &main_pickup_furniture_p->scale; + xyz_t* left_hand_pos_p = &player->left_hand_pos; + xyz_t* item_ofs_p = &main_pickup_furniture_p->item_offset; + + if (cur_frame <= 10.0f) { + if (Common_Get(clip).my_room_clip->ftr2leaf_proc()) { + Common_Get(clip).my_room_clip->leaf_start_pos_proc(item_pos_p); + } + + item_ofs_p->x = item_pos_p->x - left_hand_pos_p->x; + item_ofs_p->y = item_pos_p->y - left_hand_pos_p->y; + item_ofs_p->z = item_pos_p->z - left_hand_pos_p->z; + } else if (cur_frame <= 20.0f) { + f32 p = 1.0f - (cur_frame - 10.0f) * 0.1f; + + item_pos_p->x = left_hand_pos_p->x + p * item_ofs_p->x; + item_pos_p->y = left_hand_pos_p->y + p * item_ofs_p->y; + item_pos_p->z = left_hand_pos_p->z + p * item_ofs_p->z; + } else { + *item_pos_p = *left_hand_pos_p; + } + + if (cur_frame <= 10.0f) { + *scale_p = 0.01f; + } else if (cur_frame <= 20.0f) { + *scale_p = 0.01f - ((cur_frame - 10.0f) * 0.01f) * 0.1f; + } else { + *scale_p = 0.0f; + } + + if (*scale_p > 0.01f) { + *scale_p = 0.01f; + } else if (*scale_p < 0.0f) { + *scale_p = 0.0f; + } + + if (Common_Get(clip).my_room_clip != NULL) { + if (Common_Get(clip).my_room_clip->ftr2leaf_proc()) { + Common_Get(clip).my_room_clip->set_leaf_proc(item_pos_p, *scale_p); + } + } +} + +static void Player_actor_SetSound_Pickup_furniture(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + + if (Player_actor_Check_AnimationFrame(fc0_p, 10.0f)) { + Player_actor_sound_ITEM_GET(actorx); + } + + if (Player_actor_Check_AnimationFrame(fc0_p, 20.0f)) { + Player_actor_sound_GASAGOSO(actorx); + } +} + +static void Player_actor_SearchAnimation_Pickup_furniture(ACTOR* actorx, GAME* game, f32 frame) { + if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE) { + Player_actor_Set_Item_Pickup_furniture(actorx); + Player_actor_SetSound_Pickup_furniture(actorx, game); + Player_actor_Set_FootMark_Base1(actorx, game, FALSE, FALSE); + } +} + +static void Player_actor_request_proc_index_fromPickup_furniture(ACTOR* actorx, GAME* game, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (end_flag) { + mPlayer_main_pickup_furniture_c* main_pickup_furniture_p = &player->main_data.pickup_furniture; + + if (main_pickup_furniture_p->exchange_flag) { + Player_actor_request_main_pickup_exchange(game, &main_pickup_furniture_p->target_pos, + main_pickup_furniture_p->item, mPlayer_REQUEST_PRIORITY_21); + } else { + if (main_pickup_furniture_p->item == ITM_GOLDEN_SHOVEL && + mPlib_Check_golden_item_get_demo_end(3) == FALSE) { + Player_actor_request_main_demo_get_golden_item_all(game, 3, mPlayer_REQUEST_PRIORITY_34); + } else { + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } + } + } +} + +static void Player_actor_main_Pickup_furniture(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + int end_flag; + + Player_actor_Movement_Pickup_furniture(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + end_flag = Player_actor_CulcAnimation_Pickup_furniture(actorx, &last_anim0_cur_frame); + Player_actor_SearchAnimation_Pickup_furniture(actorx, game, last_anim0_cur_frame); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Pickup_furniture(actorx, game); + Player_actor_BGcheck_Pickup_furniture(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromPickup_furniture(actorx, game, end_flag); +} diff --git a/src/m_player_main_pickup_jump.c_inc b/src/m_player_main_pickup_jump.c_inc index e69de29b..bafb467f 100644 --- a/src/m_player_main_pickup_jump.c_inc +++ b/src/m_player_main_pickup_jump.c_inc @@ -0,0 +1,209 @@ +static int Player_actor_request_main_pickup_jump(GAME* game, int slot_idx, mActor_name_t item, const xyz_t* item_pos_p, + int ftr_flag, int knife_and_fork_flag) { + if (Player_actor_check_able_request_main_index_for_reset(mPlayer_INDEX_PICKUP_JUMP) == FALSE) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_pickup_jump_c* req_pickup_jump_p = &player->requested_main_index_data.pickup_jump; + + req_pickup_jump_p->inv_slot = slot_idx; + req_pickup_jump_p->item = item; + req_pickup_jump_p->ftr_flag = ftr_flag; + req_pickup_jump_p->knife_and_fork_flag = knife_and_fork_flag; + req_pickup_jump_p->item_pos = *item_pos_p; + + Player_actor_request_main_index(game, mPlayer_INDEX_PICKUP_JUMP, mPlayer_REQUEST_PRIORITY_8); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Pickup_jump(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_request_pickup_jump_c* req_pickup_jump_p = &player->requested_main_index_data.pickup_jump; + mPlayer_main_pickup_jump_c* main_pickup_jump_p = &player->main_data.pickup_jump; + int slot_idx; + mActor_name_t item; + xyz_t* item_pos_p; + int ftr_flag; + int knife_and_fork_flag; + int anim0_idx; + int anim1_idx; + int part_table_idx; + + slot_idx = req_pickup_jump_p->inv_slot; + item = req_pickup_jump_p->item; + item_pos_p = &req_pickup_jump_p->item_pos; + ftr_flag = req_pickup_jump_p->ftr_flag; + knife_and_fork_flag = req_pickup_jump_p->knife_and_fork_flag; + + if (ftr_flag) { + anim0_idx = mPlayer_ANIM_CLEAR_TABLE_L1; + } else { + anim0_idx = mPlayer_ANIM_CLEAR_TABLE1; + } + + main_pickup_jump_p->ftr_flag = ftr_flag; + main_pickup_jump_p->target_pos = main_pickup_jump_p->item_pos = *item_pos_p; + main_pickup_jump_p->scale = 0.01f; + main_pickup_jump_p->item = item; + + Player_actor_SetupItem_Base1(actorx, anim0_idx, -6.0f, &anim1_idx, &part_table_idx); + + if (ftr_flag == FALSE) { + Player_actor_putin_item_layer2(slot_idx, item, item_pos_p); + } else { + Player_actor_putin_furniture(game, slot_idx, item); + } + + if (slot_idx >= 0 || ITEM_IS_MYMANNIQUIN(item) || ITEM_IS_MYUMBRELLA(item)) { + main_pickup_jump_p->exchange_flag = FALSE; + } else { + main_pickup_jump_p->exchange_flag = TRUE; + } + + if (knife_and_fork_flag) { + Common_Get(clip).htbl_clip->pickup_counter = 2; + } + + Player_actor_InitAnimation_Base2(actorx, game, anim0_idx, anim1_idx, 1.0f, 1.0f, 0.5f, -6.0f, cKF_FRAMECONTROL_STOP, + mPlayer_PART_TABLE_PICK_UP); + Player_actor_setup_main_Base(actorx, game); + Player_actor_sound_dai_ue_kakunou(actorx); +} + +static void Player_actor_settle_main_Pickup_jump(ACTOR* actorx, GAME* game) { + if (Common_Get(clip).my_room_clip != NULL) { + Common_Get(clip).my_room_clip->leaf_pickuped_proc(); + } +} + +static void Player_actor_Movement_Pickup_jump_common(ACTOR* actorx, xyz_t* target_pos_p) { + xyz_t* player_pos_p = &actorx->world.position; + f32 dx = target_pos_p->x - player_pos_p->x; + f32 dz = target_pos_p->z - player_pos_p->z; + + if (dx != 0.0f || dz != 0.0f) { + s16 target_angle_y = atans_table(dz, dx); + + add_calc_short_angle2(&actorx->shape_info.rotation.y, target_angle_y, 1.0f - sqrtf(0.5f), + DEG2SHORT_ANGLE2(13.73291015625f), DEG2SHORT_ANGLE2(0.274658203125f)); + } + + Player_actor_Movement_Base_Braking_common(actorx, 0.32625f); +} + +static void Player_actor_Movement_Pickup_jump(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_pickup_jump_c* main_pickup_jump_p = &player->main_data.pickup_jump; + + Player_actor_Movement_Pickup_jump_common(actorx, &main_pickup_jump_p->target_pos); + actorx->world.angle.y = actorx->shape_info.rotation.y; +} + +static int Player_actor_CulcAnimation_Pickup_jump(ACTOR* actorx, f32* last_anim0_cur_frame_p) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame_p); +} + +static void Player_actor_ObjCheck_Pickup_jump(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Pickup_jump(ACTOR* actorx) { + Player_actor_BGcheck_common_type3(actorx); +} + +static void Player_actor_Set_Item_Pickup_jump(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_pickup_jump_c* main_pickup_jump_p = &player->main_data.pickup_jump; + int ftr_flag = main_pickup_jump_p->ftr_flag; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + f32 cur_frame = kf0_p->frame_control.current_frame - (f32)(ftr_flag ? 0.0f : 0.0f); + xyz_t* item_pos_p = &main_pickup_jump_p->item_pos; + f32* scale_p = &main_pickup_jump_p->scale; + xyz_t* left_hand_pos_p = &player->left_hand_pos; + xyz_t* item_ofs_p = &main_pickup_jump_p->item_offset; + + if (cur_frame <= 11.0f) { + if (ftr_flag && Common_Get(clip).my_room_clip != NULL) { + if (Common_Get(clip).my_room_clip->ftr2leaf_proc()) { + Common_Get(clip).my_room_clip->leaf_start_pos_proc(item_pos_p); + } + } + + item_ofs_p->x = item_pos_p->x - left_hand_pos_p->x; + item_ofs_p->y = item_pos_p->y - left_hand_pos_p->y; + item_ofs_p->z = item_pos_p->z - left_hand_pos_p->z; + } else if (cur_frame <= 16.0f) { + f32 p = 1.0f - (cur_frame - 11.0f) * 0.2f; + + item_pos_p->x = left_hand_pos_p->x + p * item_ofs_p->x; + item_pos_p->y = left_hand_pos_p->y + p * item_ofs_p->y; + item_pos_p->z = left_hand_pos_p->z + p * item_ofs_p->z; + } else { + *item_pos_p = *left_hand_pos_p; + } + + if (cur_frame <= 11.0f) { + *scale_p = 0.01f; + } else if (cur_frame <= 16.0f) { + *scale_p = 0.01f - ((cur_frame - 11.0f) * 0.0025f) * 0.2f; + } else if (cur_frame <= 30.0f) { + *scale_p = 0.0075f - ((cur_frame - 16.0f) * 0.0075f) * (1.0f / 14.0f); + } else { + *scale_p = 0.0f; + } + + if (*scale_p > 0.01f) { + *scale_p = 0.01f; + } else if (*scale_p < 0.0f) { + *scale_p = 0.0f; + } + + if (ftr_flag && Common_Get(clip).my_room_clip != NULL) { + if (Common_Get(clip).my_room_clip->ftr2leaf_proc()) { + Common_Get(clip).my_room_clip->set_leaf_proc(item_pos_p, *scale_p); + } + } +} + +static void Player_actor_SearchAnimation_Pickup_jump(ACTOR* actorx, f32 frame) { + if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE) { + Player_actor_Set_Item_Pickup_jump(actorx); + } +} + +static void Player_actor_request_proc_index_fromPickup_jump(ACTOR* actorx, GAME* game, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (end_flag) { + mPlayer_main_pickup_jump_c* main_pickup_jump_p = &player->main_data.pickup_jump; + + if (main_pickup_jump_p->exchange_flag) { + Player_actor_request_main_pickup_exchange(game, &main_pickup_jump_p->target_pos, main_pickup_jump_p->item, + mPlayer_REQUEST_PRIORITY_21); + } else { + if (main_pickup_jump_p->item == ITM_GOLDEN_SHOVEL && mPlib_Check_golden_item_get_demo_end(3) == FALSE) { + Player_actor_request_main_demo_get_golden_item_all(game, 3, mPlayer_REQUEST_PRIORITY_34); + } else { + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } + } + } +} + +static void Player_actor_main_Pickup_jump(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + int end_flag; + + Player_actor_Movement_Pickup_jump(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + end_flag = Player_actor_CulcAnimation_Pickup_jump(actorx, &last_anim0_cur_frame); + Player_actor_SearchAnimation_Pickup_jump(actorx, last_anim0_cur_frame); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Pickup_jump(actorx, game); + Player_actor_BGcheck_Pickup_jump(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromPickup_jump(actorx, game, end_flag); +} diff --git a/src/m_player_main_recieve_putaway.c_inc b/src/m_player_main_recieve_putaway.c_inc index 4af42da0..81ce25d6 100644 --- a/src/m_player_main_recieve_putaway.c_inc +++ b/src/m_player_main_recieve_putaway.c_inc @@ -48,7 +48,7 @@ static void Player_actor_setup_main_Recieve_putaway(ACTOR* actorx, GAME* game) { Player_actor_sound_GASAGOSO(actorx); } -static void Player_actor_settle_main_Recieve_putaway(ACTOR* actorx) { +static void Player_actor_settle_main_Recieve_putaway(ACTOR* actorx, GAME* game) { Player_actor_Unset_item_matrix_set(actorx); } diff --git a/src/m_player_main_refuse.c_inc b/src/m_player_main_refuse.c_inc index 381e6057..9f9f6b7c 100644 --- a/src/m_player_main_refuse.c_inc +++ b/src/m_player_main_refuse.c_inc @@ -1,4 +1,4 @@ -int Player_actor_request_main_refuse(GAME* game, int flag) { +static int Player_actor_request_main_refuse(GAME* game, int flag) { if (Player_actor_check_request_main_able(game, mPlayer_INDEX_REFUSE, flag) != FALSE) { Player_actor_request_main_index(game, mPlayer_INDEX_REFUSE, flag); return TRUE; @@ -6,38 +6,36 @@ int Player_actor_request_main_refuse(GAME* game, int flag) { return FALSE; } -void Player_actor_setup_main_Refuse(ACTOR* actor, GAME* game){ +static void Player_actor_setup_main_Refuse(ACTOR* actor, GAME* game) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; int anim_idx; int part_table_idx; - Player_actor_SetupItem_Base1(actor,0, -5.0f, &anim_idx, &part_table_idx); - Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_WAIT1, anim_idx, 1.0f, 1.0f, 0.5f, -5.0f, part_table_idx); + Player_actor_SetupItem_Base1(actor, 0, -5.0f, &anim_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_WAIT1, anim_idx, 1.0f, 1.0f, 0.5f, -5.0f, + part_table_idx); Player_actor_setup_main_Base(actor, game); } - -void Player_actor_Movement_Refuse(ACTOR* actor) { +static void Player_actor_Movement_Refuse(ACTOR* actor) { Player_actor_Movement_Base_Braking(actor); } - -void Player_actor_CulcAnimation_Refuse(ACTOR* actor) { +static void Player_actor_CulcAnimation_Refuse(ACTOR* actor) { f32 base; Player_actor_CulcAnimation_Base2(actor, &base); } -void Player_actor_ObjCheck_Refuse(ACTOR* actor, GAME* game) { - Player_actor_Excute_Corect_forStand(actor); +static void Player_actor_ObjCheck_Refuse(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); } -void Player_actor_BGcheck_Refuse(ACTOR* actor) { +static void Player_actor_BGcheck_Refuse(ACTOR* actor) { Player_actor_BGcheck_common_type2(actor); } - -void Player_actor_main_Intro(ACTOR* actor, GAME* game) { +static void Player_actor_main_Intro(ACTOR* actor, GAME* game) { Player_actor_Movement_Refuse(actor); Player_actor_Reinput_force_position_angle(actor, game); Player_actor_CulcAnimation_Refuse(actor); diff --git a/src/m_player_main_refuse_pickup.c_inc b/src/m_player_main_refuse_pickup.c_inc index c32f5189..584c79dc 100644 --- a/src/m_player_main_refuse_pickup.c_inc +++ b/src/m_player_main_refuse_pickup.c_inc @@ -1,5 +1,5 @@ -int Player_actor_request_main_refuse_pickup_all(GAME* game, int flag) { +static int Player_actor_request_main_refuse_pickup_all(GAME* game, int flag) { if (Player_actor_check_request_main_able(game, mPlayer_INDEX_REFUSE_PICKUP, flag) != FALSE) { Player_actor_request_main_index(game, mPlayer_INDEX_REFUSE_PICKUP, flag); return TRUE; @@ -7,17 +7,17 @@ int Player_actor_request_main_refuse_pickup_all(GAME* game, int flag) { return FALSE; } -void Player_actor_Refuse_pickup_demo_ct(ACTOR* actor){ +static void Player_actor_Refuse_pickup_demo_ct(ACTOR* actor) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; int msg; rgba_t color; - Player_actor_request_main_refuse_pickup_all(gamePT, 0x13); + Player_actor_request_main_refuse_pickup_all(gamePT, 0x13); msg = (Common_Get(field_type) == 0) ? 0x17AD : 0x17AE; - if(player->refuse_pickup_knife_fork_flag != FALSE){ + if (player->refuse_pickup_knife_fork_flag != FALSE) { msg = 0x3B59; } @@ -33,43 +33,43 @@ void Player_actor_Refuse_pickup_demo_ct(ACTOR* actor){ mDemo_Set_talk_window_color(&color); } - -void Player_actor_setup_main_Refuse_pickup(ACTOR* actor, GAME* game){ +static void Player_actor_setup_main_Refuse_pickup(ACTOR* actor, GAME* game) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; int anim_idx; int part_table_idx; - Player_actor_SetupItem_Base1(actor,0, -5.0f, &anim_idx, &part_table_idx); - Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_WAIT1, anim_idx, 1.0f, 1.0f, 0.5f, -5.0f, part_table_idx); + Player_actor_SetupItem_Base1(actor, 0, -5.0f, &anim_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_WAIT1, anim_idx, 1.0f, 1.0f, 0.5f, -5.0f, + part_table_idx); Player_actor_setup_main_Base(actor, game); } -void Player_actor_Movement_Refuse_pickup(ACTOR* actor) { - Player_actor_Movement_Base_Braking_common(actor, 0.23925f); +static void Player_actor_Movement_Refuse_pickup(ACTOR* actor) { + Player_actor_Movement_Base_Braking_common(actor, 0.23925f); } -void Player_actor_CulcAnimation_Refuse_pickup(ACTOR* actor) { +static void Player_actor_CulcAnimation_Refuse_pickup(ACTOR* actor) { f32 base; Player_actor_CulcAnimation_Base2(actor, &base); } -void Player_actor_ObjCheck_Refuse_pickup(ACTOR* actor, GAME* game) { - Player_actor_Excute_Corect_forStand(actor); +static void Player_actor_ObjCheck_Refuse_pickup(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); } -void Player_actor_BGcheck_Refuse_pickup(ACTOR* actor) { +static void Player_actor_BGcheck_Refuse_pickup(ACTOR* actor) { Player_actor_BGcheck_common_type1(actor); } -void Player_actor_request_proc_index_fromRefuse_pickup(ACTOR* actor, GAME* game) { +static void Player_actor_request_proc_index_fromRefuse_pickup(ACTOR* actor, GAME* game) { if (mDemo_Check(mDemo_TYPE_REPORT, actor) == 0) { Player_actor_SettleRequestMainIndexPriority(actor); - Player_actor_request_main_wait_all(game,-5.0f, 0.0f, 0, 1); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, 1); } } -void Player_actor_main_Intro(ACTOR* actor, GAME* game) { +static void Player_actor_main_Intro(ACTOR* actor, GAME* game) { Player_actor_Movement_Refuse_pickup(actor); Player_actor_Reinput_force_position_angle(actor, game); Player_actor_CulcAnimation_Refuse_pickup(actor); @@ -78,5 +78,5 @@ void Player_actor_main_Intro(ACTOR* actor, GAME* game) { Player_actor_ObjCheck_Refuse_pickup(actor, game); Player_actor_BGcheck_Refuse_pickup(actor); Player_actor_Item_main(actor, game); - Player_actor_request_proc_index_fromRefuse_pickup(actor,game); + Player_actor_request_proc_index_fromRefuse_pickup(actor, game); } diff --git a/src/m_player_main_remove_grass.c_inc b/src/m_player_main_remove_grass.c_inc index e69de29b..deb39c34 100644 --- a/src/m_player_main_remove_grass.c_inc +++ b/src/m_player_main_remove_grass.c_inc @@ -0,0 +1,104 @@ +static int Player_actor_request_main_remove_grass(GAME* game, const xyz_t* target_pos_p, const xyz_t* grass_pos_p) { + if (Player_actor_check_able_request_main_index_for_reset(mPlayer_INDEX_REMOVE_GRASS) == FALSE) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_remove_grass_c* req_remove_grass_p = &player->requested_main_index_data.remove_grass; + + req_remove_grass_p->target_pos = *target_pos_p; + req_remove_grass_p->grass_pos = *grass_pos_p; + Player_actor_request_main_index(game, mPlayer_INDEX_REMOVE_GRASS, mPlayer_REQUEST_PRIORITY_8); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Remove_grass(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_request_remove_grass_c* req_remove_grass_p = &player->requested_main_index_data.remove_grass; + mPlayer_main_remove_grass_c* main_remove_grass_p = &player->main_data.remove_grass; + int anim1_idx; + int part_table_idx; + + main_remove_grass_p->target_pos = req_remove_grass_p->target_pos; + main_remove_grass_p->grass_pos = req_remove_grass_p->grass_pos; + + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_ZASSOU1, -5.0f, &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_ZASSOU1, anim1_idx, 1.0f, 1.0f, 0.5f, -6.0f, + cKF_FRAMECONTROL_STOP, mPlayer_PART_TABLE_PICK_UP); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_Movement_Remove_grass(ACTOR* actorx) { + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static int Player_actor_CulcAnimation_Remove_grass(ACTOR* actorx, f32* last_anim0_cur_frame_p) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame_p); +} + +static void Player_actor_ChangeFGNumber_Remove_grass(ACTOR* actorx, GAME* game) { + if (Common_Get(clip).bg_item_clip != NULL && Common_Get(clip).bg_item_clip->fly_entry_proc != NULL) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + if (Player_actor_Check_AnimationFrame(fc0_p, 17.0f)) { + mPlayer_main_remove_grass_c* main_remove_grass_p = &player->main_data.remove_grass; + xyz_t* grass_pos_p = &main_remove_grass_p->grass_pos; + xyz_t* target_pos_p = &main_remove_grass_p->target_pos; + mActor_name_t* fg_p = mFI_GetUnitFG(*target_pos_p); + + if (fg_p != NULL) { + if (IS_ITEM_GRASS(*fg_p) != FALSE) { + s16 angle_y = DEG2SHORT_ANGLE2(110.0f) + actorx->shape_info.rotation.y; + + Common_Get(clip).bg_item_clip->fly_entry_proc(*fg_p, grass_pos_p, angle_y); + eEC_CLIP->effect_make_proc(eEC_EFFECT_DIG_MUD, *grass_pos_p, 2, 0, game, RSV_NO, + mCoBG_Wpos2Attribute(*grass_pos_p, NULL), 8); + Player_actor_sound_zassou_nuku(grass_pos_p); + Player_actor_set_viblation_Remove_grass(); + } + } + } + } +} + +static void Player_actor_SearchAnimation_Remove_grass(ACTOR* actorx, GAME* game, f32 frame) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE) { + Player_actor_ChangeFGNumber_Remove_grass(actorx, game); + } +} + +static void Player_actor_ObjCheck_Remove_grass(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Remove_grass(ACTOR* actorx) { + Player_actor_BGcheck_common_type1(actorx); +} + +static void Player_actor_request_proc_index_fromRemove_grass(ACTOR* actorx, GAME* game, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (end_flag) { + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } +} + +static void Player_actor_main_Remove_grass(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + int end_flag; + + Player_actor_Movement_Remove_grass(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + end_flag = Player_actor_CulcAnimation_Remove_grass(actorx, &last_anim0_cur_frame); + Player_actor_SearchAnimation_Remove_grass(actorx, game, last_anim0_cur_frame); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Remove_grass(actorx, game); + Player_actor_BGcheck_Remove_grass(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromRemove_grass(actorx, game, end_flag); +} diff --git a/src/m_player_main_return_demo.c_inc b/src/m_player_main_return_demo.c_inc index 15caca49..fc9c151b 100644 --- a/src/m_player_main_return_demo.c_inc +++ b/src/m_player_main_return_demo.c_inc @@ -1,21 +1,19 @@ -int Player_actor_request_main_return_demo_all(GAME* game, int prev_index, int now_index, f32 time){ - - if(Player_actor_check_request_main_able(game, mPlayer_INDEX_RETURN_DEMO, now_index)){ - PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); - +static int Player_actor_request_main_return_demo_all(GAME* game, int prev_index, int now_index, f32 time) { + + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_RETURN_DEMO, now_index)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + player->requested_main_index_data.return_demo.prev_main_index = prev_index; player->requested_main_index_data.return_demo.time = time; Player_actor_request_main_index(game, mPlayer_INDEX_RETURN_DEMO, now_index); return TRUE; - } - else{ + } else { return FALSE; } } - -void Player_actor_setup_main_Return_demo(ACTOR* actor, GAME* game){ +static void Player_actor_setup_main_Return_demo(ACTOR* actor, GAME* game) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; int anim_idx; int part_table_idx; @@ -24,47 +22,46 @@ void Player_actor_setup_main_Return_demo(ACTOR* actor, GAME* game){ player->main_data.return_demo.timer = 0.0f; player->main_data.return_demo.max_timer = player->requested_main_index_data.return_demo.time; player->main_data.return_demo.prev_main_index = player->requested_main_index_data.return_demo.prev_main_index; - Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_WAIT1, anim_idx, 1.0f, 1.0f, 0.5f, -5.0f, part_table_idx); - Player_actor_setup_main_Base(actor,game); + Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_WAIT1, anim_idx, 1.0f, 1.0f, 0.5f, -5.0f, + part_table_idx); + Player_actor_setup_main_Base(actor, game); } - -void Player_actor_CulcAnimation_Return_demo(ACTOR* actor){ +static void Player_actor_CulcAnimation_Return_demo(ACTOR* actor) { f32 base; Player_actor_CulcAnimation_Base2(actor, &base); } -void Player_actor_Movement_Return_demo(ACTOR* actor){ +static void Player_actor_Movement_Return_demo(ACTOR* actor) { Player_actor_Movement_Base_Braking(actor); } -void Player_actor_ObjCheck_Return_demo(ACTOR* actor, GAME* game){ - Player_actor_Excute_Corect_forStand(actor,game); +static void Player_actor_ObjCheck_Return_demo(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); } -void Player_actor_BGcheck_Return_demo(ACTOR* actor){ +static void Player_actor_BGcheck_Return_demo(ACTOR* actor) { Player_actor_BGcheck_common_type1(actor); } -void Player_actor_request_proc_index_fromReturn_demo(ACTOR* actor, GAME* game){ +static void Player_actor_request_proc_index_fromReturn_demo(ACTOR* actor, GAME* game) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; f32 max_timer = player->main_data.return_demo.max_timer; int prev = player->main_data.return_demo.prev_main_index; - + player->main_data.return_demo.timer += 1.0f; - - if(player->main_data.return_demo.timer >= max_timer){ - if(prev != mPlayer_INDEX_DEMO_WAIT){ + + if (player->main_data.return_demo.timer >= max_timer) { + if (prev != mPlayer_INDEX_DEMO_WAIT) { Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, 1); - } - else{ + } else { Player_actor_request_main_demo_wait_all(game, 0, NULL, 19); } } } -void Player_actor_main_Return_demo(ACTOR* actor, GAME* game){ +static void Player_actor_main_Return_demo(ACTOR* actor, GAME* game) { Player_actor_Movement_Return_demo(actor); Player_actor_Reinput_force_position_angle(actor, game); Player_actor_CulcAnimation_Return_demo(actor); @@ -73,5 +70,5 @@ void Player_actor_main_Return_demo(ACTOR* actor, GAME* game){ Player_actor_ObjCheck_Return_demo(actor, game); Player_actor_BGcheck_Return_demo(actor); Player_actor_Item_main(actor, game); - Player_actor_request_proc_index_fromReturn_demo(actor, game); + Player_actor_request_proc_index_fromReturn_demo(actor, game); } diff --git a/src/m_player_main_return_outdoor.c_inc b/src/m_player_main_return_outdoor.c_inc index 4f9192fe..f6dcc439 100644 --- a/src/m_player_main_return_outdoor.c_inc +++ b/src/m_player_main_return_outdoor.c_inc @@ -1,21 +1,20 @@ -int Player_actor_request_main_return_outdoor_all(GAME* game, int prev_index, int now_index, f32 time, f32 arg5){ - - if(Player_actor_check_request_main_able(game, mPlayer_INDEX_RETURN_OUTDOOR, now_index)){ - PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); +static int Player_actor_request_main_return_outdoor_all(GAME* game, int prev_index, int now_index, f32 time, f32 arg5) { + + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_RETURN_OUTDOOR, now_index)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); player->requested_main_index_data.return_outdoor.prev_main_index = prev_index; player->requested_main_index_data.return_outdoor.time = time; player->requested_main_index_data.return_outdoor._08 = arg5; - + Player_actor_request_main_index(game, mPlayer_INDEX_RETURN_OUTDOOR, now_index); return TRUE; - } - else{ + } else { return FALSE; } } -void Player_actor_setup_main_Return_outdoor(ACTOR* actor, GAME* game){ +static void Player_actor_setup_main_Return_outdoor(ACTOR* actor, GAME* game) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; int anim_idx; int part_table_idx; @@ -26,40 +25,39 @@ void Player_actor_setup_main_Return_outdoor(ACTOR* actor, GAME* game){ player->main_data.return_outdoor.max_timer = player->requested_main_index_data.return_outdoor.time; player->main_data.return_outdoor.prev_main_index = player->requested_main_index_data.return_outdoor.prev_main_index; Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_WAIT1, anim_idx, 1.0f, 1.0f, 0.5f, _08, part_table_idx); - Player_actor_setup_main_Base(actor,game); -} + Player_actor_setup_main_Base(actor, game); +} - -void Player_actor_CulcAnimation_Return_outdoor(ACTOR* actor){ +static void Player_actor_CulcAnimation_Return_outdoor(ACTOR* actor) { f32 base; Player_actor_CulcAnimation_Base2(actor, &base); } -void Player_actor_Movement_Return_outdoor(ACTOR* actor){ +static void Player_actor_Movement_Return_outdoor(ACTOR* actor) { Player_actor_Movement_Base_Braking(actor); } -void Player_actor_ObjCheck_Return_outdoor(ACTOR* actor, GAME* game){ - Player_actor_Excute_Corect_forStand(actor,game); +static void Player_actor_ObjCheck_Return_outdoor(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); } -void Player_actor_BGcheck_Return_outdoor(ACTOR* actor){ +static void Player_actor_BGcheck_Return_outdoor(ACTOR* actor) { Player_actor_BGcheck_common_type1(actor); } -void Player_actor_request_proc_index_fromReturn_outdoor(ACTOR* actor, GAME* game){ +static void Player_actor_request_proc_index_fromReturn_outdoor(ACTOR* actor, GAME* game) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; f32 max_timer = player->main_data.return_outdoor.max_timer; int prev = player->main_data.return_outdoor.prev_main_index; player->main_data.return_outdoor.timer += 1.0f; - - if(player->main_data.return_outdoor.timer >= max_timer){ + + if (player->main_data.return_outdoor.timer >= max_timer) { Player_actor_request_main_return_outdoor2_all(game, prev, mPlayer_INDEX_INTRO, 3.0f, -5.0f); } } -void Player_actor_main_Return_outdoor(ACTOR* actor, GAME* game){ +static void Player_actor_main_Return_outdoor(ACTOR* actor, GAME* game) { Player_actor_Movement_Return_outdoor(actor); Player_actor_Reinput_force_position_angle(actor, game); Player_actor_CulcAnimation_Return_outdoor(actor); @@ -68,5 +66,5 @@ void Player_actor_main_Return_outdoor(ACTOR* actor, GAME* game){ Player_actor_ObjCheck_Return_outdoor(actor, game); Player_actor_BGcheck_Return_outdoor(actor); Player_actor_Item_main(actor, game); - Player_actor_request_proc_index_fromReturn_outdoor(actor, game); + Player_actor_request_proc_index_fromReturn_outdoor(actor, game); } diff --git a/src/m_player_main_return_outdoor2.c_inc b/src/m_player_main_return_outdoor2.c_inc index 5078d99c..54a116a2 100644 --- a/src/m_player_main_return_outdoor2.c_inc +++ b/src/m_player_main_return_outdoor2.c_inc @@ -1,21 +1,21 @@ -int Player_actor_request_main_return_outdoor2_all(GAME* game, int prev_index, int now_index, f32 time, f32 arg5){ - - if(Player_actor_check_request_main_able(game, mPlayer_INDEX_RETURN_OUTDOOR2, now_index)){ - PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); +static int Player_actor_request_main_return_outdoor2_all(GAME* game, int prev_index, int now_index, f32 time, + f32 arg5) { + + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_RETURN_OUTDOOR2, now_index)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); player->requested_main_index_data.return_outdoor2.prev_main_index = prev_index; player->requested_main_index_data.return_outdoor2.time = time; player->requested_main_index_data.return_outdoor2._08 = arg5; - + Player_actor_request_main_index(game, mPlayer_INDEX_RETURN_OUTDOOR2, now_index); return TRUE; - } - else{ + } else { return FALSE; } } -void Player_actor_setup_main_Return_outdoor2(ACTOR* actor, GAME* game){ +static void Player_actor_setup_main_Return_outdoor2(ACTOR* actor, GAME* game) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; int anim_idx; int part_table_idx; @@ -24,47 +24,46 @@ void Player_actor_setup_main_Return_outdoor2(ACTOR* actor, GAME* game){ Player_actor_SetupItem_Base1(actor, 0, -5.0f, &anim_idx, &part_table_idx); player->main_data.return_outdoor2.timer = 0.0f; player->main_data.return_outdoor2.max_timer = player->requested_main_index_data.return_outdoor2.time; - player->main_data.return_outdoor2.prev_main_index = player->requested_main_index_data.return_outdoor2.prev_main_index; + player->main_data.return_outdoor2.prev_main_index = + player->requested_main_index_data.return_outdoor2.prev_main_index; Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_WAIT1, anim_idx, 1.0f, 1.0f, 0.5f, _08, part_table_idx); - Player_actor_setup_main_Base(actor,game); -} + Player_actor_setup_main_Base(actor, game); +} - -void Player_actor_CulcAnimation_Return_outdoor2(ACTOR* actor){ +static void Player_actor_CulcAnimation_Return_outdoor2(ACTOR* actor) { f32 base; Player_actor_CulcAnimation_Base2(actor, &base); } -void Player_actor_Movement_Return_outdoor2(ACTOR* actor){ +static void Player_actor_Movement_Return_outdoor2(ACTOR* actor) { Player_actor_Movement_Base_Braking(actor); } -void Player_actor_ObjCheck_Return_outdoor2(ACTOR* actor, GAME* game){ - Player_actor_Excute_Corect_forStand(actor,game); +static void Player_actor_ObjCheck_Return_outdoor2(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); } -void Player_actor_BGcheck_Return_outdoor2(ACTOR* actor){ +static void Player_actor_BGcheck_Return_outdoor2(ACTOR* actor) { Player_actor_BGcheck_common_type1(actor); } -void Player_actor_request_proc_index_fromReturn_outdoor2(ACTOR* actor, GAME* game){ +static void Player_actor_request_proc_index_fromReturn_outdoor2(ACTOR* actor, GAME* game) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; f32 max_timer = player->main_data.return_outdoor2.max_timer; int prev = player->main_data.return_outdoor2.prev_main_index; player->main_data.return_outdoor2.timer += 1.0f; - - if(player->main_data.return_outdoor2.timer >= max_timer){ - if(prev != mPlayer_INDEX_DEMO_WAIT){ + + if (player->main_data.return_outdoor2.timer >= max_timer) { + if (prev != mPlayer_INDEX_DEMO_WAIT) { Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, 1); - } - else{ + } else { Player_actor_request_main_demo_wait_all(game, 0, NULL, 19); } } } -void Player_actor_main_Return_outdoor2(ACTOR* actor, GAME* game){ +static void Player_actor_main_Return_outdoor2(ACTOR* actor, GAME* game) { Player_actor_Movement_Return_outdoor2(actor); Player_actor_Reinput_force_position_angle(actor, game); Player_actor_CulcAnimation_Return_outdoor2(actor); @@ -73,5 +72,5 @@ void Player_actor_main_Return_outdoor2(ACTOR* actor, GAME* game){ Player_actor_ObjCheck_Return_outdoor2(actor, game); Player_actor_BGcheck_Return_outdoor2(actor); Player_actor_Item_main(actor, game); - Player_actor_request_proc_index_fromReturn_outdoor2(actor, game); + Player_actor_request_proc_index_fromReturn_outdoor2(actor, game); } diff --git a/src/m_player_main_shake_tree.c_inc b/src/m_player_main_shake_tree.c_inc index e69de29b..ae309916 100644 --- a/src/m_player_main_shake_tree.c_inc +++ b/src/m_player_main_shake_tree.c_inc @@ -0,0 +1,172 @@ +static int Player_actor_request_main_shake_tree_all(GAME* game, const xyz_t* target_pos_p, mActor_name_t item, + int tree_ut_x, int tree_ut_z, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_SHAKE_TREE, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_shake_tree_c* req_shake_tree_p = &player->requested_main_index_data.shake_tree; + + req_shake_tree_p->pos = *target_pos_p; + req_shake_tree_p->item = item; + req_shake_tree_p->ut_x = tree_ut_x; + req_shake_tree_p->ut_z = tree_ut_z; + Player_actor_request_main_index(game, mPlayer_INDEX_SHAKE_TREE, priority); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Shake_tree(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_request_shake_tree_c* req_shake_tree_p = &player->requested_main_index_data.shake_tree; + mPlayer_main_shake_tree_c* main_shake_tree_p = &player->main_data.shake_tree; + int anim1_idx; + int part_table_idx; + + main_shake_tree_p->target_pos = req_shake_tree_p->pos; + main_shake_tree_p->item = req_shake_tree_p->item; + main_shake_tree_p->tree_ut_x = req_shake_tree_p->ut_x; + main_shake_tree_p->tree_ut_z = req_shake_tree_p->ut_z; + main_shake_tree_p->bee_flag = FALSE; + main_shake_tree_p->bee_angle_y = 0; + main_shake_tree_p->bee_spawn_timer = 0; + + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_SHAKE1, -5.0f, &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_SHAKE1, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, + cKF_FRAMECONTROL_STOP, part_table_idx); + Player_actor_setup_main_Base(actorx, game); + mISL_SetNowPlayerAction(mISL_PLAYER_ACTION_SHAKE_TREE); +} + +static void Player_actor_Movement_Shake_tree(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_shake_tree_c* main_shake_tree_p = &player->main_data.shake_tree; + + Player_actor_Movement_axe_common(actorx, &main_shake_tree_p->target_pos); + actorx->world.angle.y = actorx->shape_info.rotation.y; +} + +static int Player_actor_CulcAnimation_Shake_tree(ACTOR* actorx, f32* last_anim0_cur_frame_p) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame_p); +} + +static void Player_actor_SetEffect_Shake_tree(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 10.0f)) { + mPlayer_main_shake_tree_c* main_shake_tree_p = &player->main_data.shake_tree; + int ut_x = main_shake_tree_p->tree_ut_x; + int ut_z = main_shake_tree_p->tree_ut_z; + xyz_t* target_pos_p = &main_shake_tree_p->target_pos; + mActor_name_t item = main_shake_tree_p->item; + + if (IS_ITEM_COLLIDEABLE_TREE(item) != FALSE && ut_x >= 0 && ut_z >= 0) { + if (Player_actor_Set_shake_tree_table(actorx, game, item, ut_x, ut_z, FALSE)) { + Player_actor_sound_tree_yurasu(target_pos_p); + Player_actor_set_viblation_Shake_tree(); + + if (Common_Get(clip).bg_item_clip != NULL && + Common_Get(clip).bg_item_clip->item_tree_fruit_drop_proc != NULL) { + if (!IS_ITEM_BEE_TREE(item)) { + xyz_t drop_pos; + + Common_Get(clip).bg_item_clip->item_tree_fruit_drop_proc(item, ut_x, ut_z, &drop_pos); + } else if (mPlib_able_birth_bee()) { + main_shake_tree_p->bee_spawn_timer = 5; + } + } + } + } + } +} + +static void Player_actor_SetSound_Shake_tree(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_shake_tree_c* main_shake_tree_p = &player->main_data.shake_tree; + + if (main_shake_tree_p->bee_flag) { + if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 18.0f)) { + mBGMPsComp_make_ps_quiet(0); + } + } +} + +static void Player_actor_SearchAnimation_Shake_tree(ACTOR* actorx, GAME* game, f32 frame) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE) { + Player_actor_SetEffect_Shake_tree(actorx, game); + Player_actor_SetSound_Shake_tree(actorx); + } +} + +static void Player_actor_Check_BirthBee_Shake_tree(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_shake_tree_c* main_shake_tree_p = &player->main_data.shake_tree; + int* spawn_timer_p = &main_shake_tree_p->bee_spawn_timer; + + if (*spawn_timer_p > 0) { + mActor_name_t item = main_shake_tree_p->item; + int ut_x = main_shake_tree_p->tree_ut_x; + int ut_z = main_shake_tree_p->tree_ut_z; + + if (Player_actor_Check_BirthBee_common(actorx, item, ut_x, ut_z, &main_shake_tree_p->bee_angle_y)) { + *spawn_timer_p = 0; + main_shake_tree_p->bee_flag = TRUE; + } else { + (*spawn_timer_p)--; + } + } +} + +static void Player_actor_ObjCheck_Shake_tree(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Shake_tree(ACTOR* actorx) { + Player_actor_BGcheck_common_type1(actorx); +} + +static void Player_actor_request_proc_index_fromShake_tree(ACTOR* actorx, GAME* game, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_shake_tree_c* main_shake_tree_p = &player->main_data.shake_tree; + + if (end_flag) { + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } else { + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + f32 cur_frame = fc0_p->current_frame; + + if (main_shake_tree_p->bee_flag) { + if (cur_frame >= 30.0f) { + Player_actor_request_main_shock_all(game, 24.0f, main_shake_tree_p->bee_angle_y, TRUE, FALSE, + mPlayer_REQUEST_PRIORITY_21); + } + } else if (Player_actor_Check_AnimationFrame(fc0_p, 29.5f)) { + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_Set_status_for_bee(actorx, TRUE); + } else if (cur_frame >= 30.0f) { + if (Player_actor_GetController_move_percentX() || Player_actor_GetController_move_percentY()) { + Player_actor_request_main_walk_all(game, NULL, -5.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } + } + } +} + +static void Player_actor_main_Shake_tree(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + int end_flag; + + Player_actor_Movement_Shake_tree(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + end_flag = Player_actor_CulcAnimation_Shake_tree(actorx, &last_anim0_cur_frame); + Player_actor_SearchAnimation_Shake_tree(actorx, game, last_anim0_cur_frame); + Player_actor_Check_BirthBee_Shake_tree(actorx); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_tex_anime_pattern(actorx); + Player_actor_ObjCheck_Shake_tree(actorx, game); + Player_actor_BGcheck_Shake_tree(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromShake_tree(actorx, game, end_flag); +} diff --git a/src/m_player_main_wait.c_inc b/src/m_player_main_wait.c_inc index e1414358..8e31c9eb 100644 --- a/src/m_player_main_wait.c_inc +++ b/src/m_player_main_wait.c_inc @@ -1,26 +1,25 @@ -int Player_actor_request_main_wait_all(GAME* game, f32 morph_speed, f32 _04, int flags, int now_index){ - - if(Player_actor_check_request_main_able(game, mPlayer_INDEX_WAIT, now_index)){ - PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); - - Player_actor_request_main_index(game, mPlayer_INDEX_WAIT, now_index); +static int Player_actor_request_main_wait_all(GAME* game, f32 morph_speed, f32 _04, int flags, int priority) { + + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_WAIT, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + Player_actor_request_main_index(game, mPlayer_INDEX_WAIT, priority); player->requested_main_index_data.wait.morph_speed = morph_speed; player->requested_main_index_data.wait.flags = flags; player->requested_main_index_data.wait._04 = _04; - + return TRUE; - } - else{ + } else { return FALSE; } } -void Player_actor_request_main_wait_from_submenu(ACTOR* actor, GAME* game){ +static void Player_actor_request_main_wait_from_submenu(ACTOR* actor, GAME* game) { Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, 31); } -void Player_actor_setup_main_Wait(ACTOR* actor, GAME* game){ +static void Player_actor_setup_main_Wait(ACTOR* actor, GAME* game) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; int flags = player->requested_main_index_data.wait.flags; f32 speed = player->requested_main_index_data.wait.morph_speed; @@ -28,81 +27,81 @@ void Player_actor_setup_main_Wait(ACTOR* actor, GAME* game){ int anim_idx; int part_table_idx; - if(flags & 4){ - player->main_data.wait.radio_exercise_command = 0; - } - else{ - player->main_data.wait.radio_exercise_command = 1; + if (flags & 4) { + player->main_data.wait.radio_exercise_command = 0; + } else { + player->main_data.wait.radio_exercise_command = 1; player->radio_exercise_continue_cmd_idx = -1; player->radio_exercise_cmd_timer = 0.0f; } - absspeed = ABS(speed); + absspeed = ABS(speed); Player_actor_SetupItem_Base1(actor, 0, -absspeed, &anim_idx, &part_table_idx); - Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_WAIT1, anim_idx, 1.0f, 1.0f, 0.5f, speed, part_table_idx); + Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_WAIT1, anim_idx, 1.0f, 1.0f, 0.5f, speed, + part_table_idx); if (flags & 1) { Player_actor_SetEffect_forTakeout_item(actor, game); } - Player_actor_setup_main_Base(actor,game); + Player_actor_setup_main_Base(actor, game); } -void Player_actor_Set_RadioExerciseCommand_Wait(ACTOR* actor, GAME* game){ +static void Player_actor_Set_RadioExerciseCommand_Wait(ACTOR* actor, GAME* game) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; Player_actor_Set_RadioExerciseCommand(actor, game, player->main_data.wait.radio_exercise_command); player->main_data.wait.radio_exercise_command = 0; } -void Player_actor_Movement_Wait(ACTOR* actor){ +static void Player_actor_Movement_Wait(ACTOR* actor) { Player_actor_Movement_Base_Braking_common(actor, 0.23925f); } -void Player_actor_CulcAnimation_Wait(ACTOR* actor){ +static void Player_actor_CulcAnimation_Wait(ACTOR* actor) { f32 base; Player_actor_CulcAnimation_Base2(actor, &base); } -void Player_actor_ObjCheck_Wait(ACTOR* actor, GAME* game){ +static void Player_actor_ObjCheck_Wait(ACTOR* actor, GAME* game) { Player_actor_Excute_Corect_forStand(actor, game); } -void Player_actor_BGcheck_Wait(ACTOR* actor){ +static void Player_actor_BGcheck_Wait(ACTOR* actor) { Player_actor_BGcheck_common_type1(actor); } -void Player_actor_request_proc_index_fromWait(ACTOR* actor, GAME* game){ +static void Player_actor_request_proc_index_fromWait(ACTOR* actor, GAME* game) { - if(!actor->bg_collision_check.result.on_ground){ + if (!actor->bg_collision_check.result.on_ground) { Player_actor_request_main_fall_all(game, -5.0f, 1, 1); } - - Player_actor_CheckAndRequest_main_axe_all(game, 4); - + + Player_actor_CheckAndRequest_main_axe_all(game, 4); + if (Player_actor_CheckController_forNet(game) != 0) { Player_actor_request_main_ready_net(game, 4); } - + if (Player_actor_CheckController_forRod(game) != 0) { Player_actor_request_main_ready_rod(game, 4); } - + Player_actor_CheckAndRequest_main_scoop_all(game, 4); Player_actor_CheckAndRequest_main_umbrella_all(game, 4); Player_actor_CheckAndRequest_main_fan_all(game, 1, 1, 4); Player_actor_CheckAndRequest_main_shake_tree_all(game); - + if ((Player_actor_GetController_move_percentX()) || (Player_actor_GetController_move_percentY())) { Player_actor_request_main_walk_all(game, NULL, -5.0f, 4, 1); } Player_actor_CheckAndRequest_main_pickup_all(game); - Player_actor_CheckAndRequest_main_radio_exercise_all(game, 0); + Player_actor_CheckAndRequest_main_radio_exercise_all(game, 0); } -void Player_actor_main_Wait(ACTOR* actor, GAME* game){ +static void Player_actor_main_Wait(ACTOR* actor, GAME* game) { Player_actor_Set_RadioExerciseCommand_Wait(actor, game); Player_actor_Movement_Wait(actor); Player_actor_Reinput_force_position_angle(actor, game); @@ -112,5 +111,5 @@ void Player_actor_main_Wait(ACTOR* actor, GAME* game){ Player_actor_ObjCheck_Wait(actor, game); Player_actor_BGcheck_Wait(actor); Player_actor_Item_main(actor, game); - Player_actor_request_proc_index_fromWait(actor, game); + Player_actor_request_proc_index_fromWait(actor, game); } diff --git a/src/m_player_vibration.c_inc b/src/m_player_vibration.c_inc index 59756fe1..3ae1c189 100644 --- a/src/m_player_vibration.c_inc +++ b/src/m_player_vibration.c_inc @@ -1,53 +1,53 @@ -void Player_actor_set_viblation_common1(int total_frames, int attack_type, int sustain_type, int release_type, - int attack_frames, int sustain_frames, int release_frames) { +static void Player_actor_set_viblation_common1(int total_frames, int attack_type, int sustain_type, int release_type, + int attack_frames, int sustain_frames, int release_frames) { mVibctl_entry(total_frames, attack_type, sustain_type, release_type, attack_frames, sustain_frames, release_frames, 0.0f); } -void Player_actor_set_viblation_Dig_scoop() { +static void Player_actor_set_viblation_Dig_scoop(void) { Player_actor_set_viblation_common1(100, 1, 7, 1, 0, 18, 0); } -void Player_actor_set_viblation_Dig_scoop_stump() { +static void Player_actor_set_viblation_Dig_scoop_stump(void) { Player_actor_set_viblation_common1(100, 1, 8, 1, 1, 60, 0); } -void Player_actor_set_viblation_Fill_scoop() { - Player_actor_set_viblation_common1(0x50, 1, 8, 1, 6, 60, 0); +static void Player_actor_set_viblation_Fill_scoop(void) { + Player_actor_set_viblation_common1(80, 1, 8, 1, 6, 60, 0); } -void Player_actor_set_viblation_Reflect_scoop_hard() { +static void Player_actor_set_viblation_Reflect_scoop_hard(void) { Player_actor_set_viblation_common1(100, 1, 9, 1, 3, 9, 0); } -void Player_actor_set_viblation_Reflect_scoop_soft() { - Player_actor_set_viblation_common1(0x5A, 1, 1, 1, 2, 4, 0); +static void Player_actor_set_viblation_Reflect_scoop_soft(void) { + Player_actor_set_viblation_common1(90, 1, 1, 1, 2, 4, 0); } -void Player_actor_set_viblation_Swing_net() { +static void Player_actor_set_viblation_Swing_net(void) { Player_actor_set_viblation_common1(100, 1, 1, 1, 2, 4, 0); } -void Player_actor_set_viblation_Shake_tree() { +static void Player_actor_set_viblation_Shake_tree(void) { Player_actor_set_viblation_common1(100, 0, 11, 5, 0, 34, 0); } -void Player_actor_set_viblation_Axe_hard() { +static void Player_actor_set_viblation_Axe_hard(void) { Player_actor_set_viblation_Reflect_scoop_hard(); } -void Player_actor_set_viblation_Axe_soft() { +static void Player_actor_set_viblation_Axe_soft(void) { Player_actor_set_viblation_Reflect_scoop_soft(); } -void Player_actor_set_viblation_Axe_cut() { +static void Player_actor_set_viblation_Axe_cut(void) { Player_actor_set_viblation_common1(100, 1, 10, 1, 3, 36, 0); } -void Player_actor_set_viblation_Tumble() { +static void Player_actor_set_viblation_Tumble(void) { Player_actor_set_viblation_common1(100, 1, 12, 1, 3, 14, 0); } -void Player_actor_set_viblation_Remove_grass() { +static void Player_actor_set_viblation_Remove_grass(void) { Player_actor_set_viblation_common1(90, 1, 1, 1, 0, 1, 10); } From 32a293506a4f637c5a0aedced0ae8747eea8b7d6 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Sat, 31 Aug 2024 06:35:33 -0400 Subject: [PATCH 148/234] Implement & link ac_sign, link m_titledemo --- config/rel_slices.yml | 9 + include/ac_sign.h | 44 +- include/audio_defs.h | 2 + include/m_actor.h | 2 +- include/m_clip.h | 3 +- include/m_collision_bg.h | 1 + include/m_name_table.h | 73 +-- include/m_player_lib.h | 2 +- include/sys_math.h | 2 + src/ac_sign.c | 1022 ++++++++++++++++++++++++++++++++++++++ src/m_item_name.c | 766 ++++++++++++++++++---------- src/m_titledemo.c | 230 +++++---- 12 files changed, 1738 insertions(+), 418 deletions(-) create mode 100644 src/ac_sign.c diff --git a/config/rel_slices.yml b/config/rel_slices.yml index 7fde6ccd..32ffbd0d 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -304,6 +304,11 @@ m_skin_matrix.c: m_snowman.c: .text: [0x803F1BB4, 0x803F1F94] .rodata: [0x80643318, 0x80643330] +m_titledemo.c: + .text: [0x803F1F94, 0x803F2428] + .rodata: [0x80643330, 0x80643350] + .data: [0x8065E2D8, 0x8065E2F0] + .bss: [0x8129F408, 0x8129F410] m_time.c: .text: [0x803F33DC, 0x803F3E58] .rodata: [0x806433B0, 0x806433D8] @@ -528,6 +533,10 @@ ac_set_ovl_insect.c: ac_shop_design.c: .text: [0x8049C748, 0x8049D51C] .data: [0x8068E3C0, 0x8068E430] +ac_sign.c: + .text: [0x804A127C, 0x804A3328] + .rodata: [0x80645D18, 0x80645D78] + .data: [0x8068E880, 0x8068E8E8] ac_t_anrium1.c: .text: [0x804A7750, 0x804A78A4] .data: [0x8068E9C8, 0x8068EA08] diff --git a/include/ac_sign.h b/include/ac_sign.h index 59278feb..a6ad7e3e 100644 --- a/include/ac_sign.h +++ b/include/ac_sign.h @@ -3,13 +3,53 @@ #include "types.h" #include "m_actor.h" +#include "m_field_make.h" +#include "m_olib.h" #ifdef __cplusplus extern "C" { #endif -extern int aSIGN_set_white_sign(GAME* game, const xyz_t* pos_p); -extern int aSIGN_erase_white_sign(GAME* game, const xyz_t* pos_p); +#define aSIGN_SINGLE_NUM 10 + +#define aSIGN_CULL_MAX_DIST (mFI_UNIT_BASE_SIZE_F * 4) + +typedef struct sign_actor_s SIGN_ACTOR; + +typedef struct sign_draw_s { + BlockOrUnit_c block; + u16 exist_bitfield[UT_Z_NUM]; +} aSIGN_draw_c; + +typedef struct sign_single_s { + BlockOrUnit_c block; + BlockOrUnit_c unit; + mActor_name_t item; + xyz_t scale; + f32 _20; + s16 _24; + s16 _26; + int exist_flag; +} aSIGN_single_c; + +typedef void (*aSIGN_ACTION_PROC)(SIGN_ACTOR*, GAME*); + +struct sign_actor_s { + ACTOR actor_class; + aSIGN_ACTION_PROC action_proc; + aSIGN_draw_c draw[mFM_VISIBLE_BLOCK_NUM]; + aSIGN_single_c single[aSIGN_SINGLE_NUM]; + BlockOrUnit_c target_block; + BlockOrUnit_c target_unit; + xyz_t target_pos; + xyz_t sign_birth_pos; + xyz_t sign_pos; + int _404; + int is_winter; +}; + +extern int aSIGN_set_white_sign(GAME* game, xyz_t* pos_p); +extern int aSIGN_erase_white_sign(GAME* game, xyz_t* pos_p); extern ACTOR_PROFILE Ac_Sign_Profile; diff --git a/include/audio_defs.h b/include/audio_defs.h index e2718fab..e40791a1 100644 --- a/include/audio_defs.h +++ b/include/audio_defs.h @@ -162,6 +162,8 @@ typedef enum audio_sound_effects { NA_SE_SCOOP_ITEM_HIT, NA_SE_AXE_BALL_HIT, + NA_SE_461 = 0x461, + NA_SE_COIN_GASAGOSO = 0x465, } AudioSE; diff --git a/include/m_actor.h b/include/m_actor.h index c7a193de..a1965148 100644 --- a/include/m_actor.h +++ b/include/m_actor.h @@ -449,7 +449,7 @@ typedef enum bank_id { ACTOR_OBJ_BANK_408, ACTOR_OBJ_BANK_EF_MUSEUM, ACTOR_OBJ_BANK_EF_MINSECT, - ACTOR_OBJ_BANK_411, + ACTOR_OBJ_BANK_AC_SIGN, ACTOR_OBJ_BANK_MURAL, ACTOR_OBJ_BANK_413, ACTOR_OBJ_BANK_414, diff --git a/include/m_clip.h b/include/m_clip.h index 1da06acd..720f09dd 100644 --- a/include/m_clip.h +++ b/include/m_clip.h @@ -27,6 +27,7 @@ #include "ac_shop_design.h" #include "ac_effectbg.h" #include "ac_htable.h" +#include "ac_sign.h" #ifdef __cplusplus extern "C" { @@ -87,7 +88,7 @@ typedef struct clip_s { /* 0x0DC */ aAL_Clip_c* animal_logo_clip; /* 0x0E0 */ void* _0E0; /* 0x0E4 */ void* _0E4; - /* 0x0E8 */ void* _0E8; + /* 0x0E8 */ SIGN_ACTOR* sign_control_actor; /* 0x0EC */ aAPC_Clip_c* aprilfool_control_clip; /* 0x0F0 */ aEvMgr_Clip_c* event_manager_clip; /* 0x0F4 */ aGHC_Clip_c* groundhog_control_clip; diff --git a/include/m_collision_bg.h b/include/m_collision_bg.h index 025eb60e..c7181452 100644 --- a/include/m_collision_bg.h +++ b/include/m_collision_bg.h @@ -343,6 +343,7 @@ extern int mCoBG_GetBlockBgCheckMode(void); extern void mCoBG_GroundCheckOnly(xyz_t* reverse_pos, ACTOR* actor, f32 check_range, f32 offset_y, s16 check_type); extern f32 mCoBG_Wpos2BgUtCenterHeight_AddColumn(xyz_t pos); extern f32 mCoBG_UtNum2UtCenterY_Keep(int ut_x, int ut_z); +extern int mCoBG_RegistDecalCircle(const xyz_t* pos_p, f32 radius_start, f32 radius_end, s16 timer); extern void mCoBG_InitMoveBgData(); extern void mCoBG_InitBlockBgCheckMode(); diff --git a/include/m_name_table.h b/include/m_name_table.h index aa8305bf..ecf6af64 100644 --- a/include/m_name_table.h +++ b/include/m_name_table.h @@ -36,6 +36,10 @@ enum { NAME_TYPE_NUM }; +#define ITEM0_CAT_OBJ 0 +#define ITEM0_CAT_PLANT 8 +#define ITEM0_CAT_SIGN 9 + enum { ITEM1_CAT_PAPER, ITEM1_CAT_MONEY, @@ -786,40 +790,40 @@ extern int mNT_check_unknown(mActor_name_t item_no); /* end of environmental objects */ #define SIGNBOARD_START 0x0900 -#define SIGNBOARD (SIGNBOARD_START) -#define SIGNBOARD0_PLR0 (SIGNBOARD_START + 1) -#define SIGNBOARD1_PLR0 (SIGNBOARD0_PLR0 + 1) -#define SIGNBOARD2_PLR0 (SIGNBOARD1_PLR0 + 1) -#define SIGNBOARD3_PLR0 (SIGNBOARD2_PLR0 + 1) -#define SIGNBOARD4_PLR0 (SIGNBOARD3_PLR0 + 1) -#define SIGNBOARD5_PLR0 (SIGNBOARD4_PLR0 + 1) -#define SIGNBOARD6_PLR0 (SIGNBOARD5_PLR0 + 1) -#define SIGNBOARD7_PLR0 (SIGNBOARD6_PLR0 + 1) -#define SIGNBOARD0_PLR1 (SIGNBOARD7_PLR0 + 1) -#define SIGNBOARD1_PLR1 (SIGNBOARD0_PLR1 + 1) -#define SIGNBOARD2_PLR1 (SIGNBOARD1_PLR1 + 1) -#define SIGNBOARD3_PLR1 (SIGNBOARD2_PLR1 + 1) -#define SIGNBOARD4_PLR1 (SIGNBOARD3_PLR1 + 1) -#define SIGNBOARD5_PLR1 (SIGNBOARD4_PLR1 + 1) -#define SIGNBOARD6_PLR1 (SIGNBOARD5_PLR1 + 1) -#define SIGNBOARD7_PLR1 (SIGNBOARD6_PLR1 + 1) -#define SIGNBOARD0_PLR2 (SIGNBOARD7_PLR1 + 1) -#define SIGNBOARD1_PLR2 (SIGNBOARD0_PLR2 + 1) -#define SIGNBOARD2_PLR2 (SIGNBOARD1_PLR2 + 1) -#define SIGNBOARD3_PLR2 (SIGNBOARD2_PLR2 + 1) -#define SIGNBOARD4_PLR2 (SIGNBOARD3_PLR2 + 1) -#define SIGNBOARD5_PLR2 (SIGNBOARD4_PLR2 + 1) -#define SIGNBOARD6_PLR2 (SIGNBOARD5_PLR2 + 1) -#define SIGNBOARD7_PLR2 (SIGNBOARD6_PLR2 + 1) -#define SIGNBOARD0_PLR3 (SIGNBOARD7_PLR2 + 1) -#define SIGNBOARD1_PLR3 (SIGNBOARD0_PLR3 + 1) -#define SIGNBOARD2_PLR3 (SIGNBOARD1_PLR3 + 1) -#define SIGNBOARD3_PLR3 (SIGNBOARD2_PLR3 + 1) -#define SIGNBOARD4_PLR3 (SIGNBOARD3_PLR3 + 1) -#define SIGNBOARD5_PLR3 (SIGNBOARD4_PLR3 + 1) -#define SIGNBOARD6_PLR3 (SIGNBOARD5_PLR3 + 1) -#define SIGNBOARD7_PLR3 (SIGNBOARD6_PLR3 + 1) -#define SIGNBOARD_END (SIGNBOARD7_PLR3) +#define SIGNBOARD0_PLR0 (SIGNBOARD_START + 0) +#define SIGNBOARD1_PLR0 (SIGNBOARD_START + 1) +#define SIGNBOARD2_PLR0 (SIGNBOARD_START + 2) +#define SIGNBOARD3_PLR0 (SIGNBOARD_START + 3) +#define SIGNBOARD4_PLR0 (SIGNBOARD_START + 4) +#define SIGNBOARD5_PLR0 (SIGNBOARD_START + 5) +#define SIGNBOARD6_PLR0 (SIGNBOARD_START + 6) +#define SIGNBOARD7_PLR0 (SIGNBOARD_START + 7) +#define SIGNBOARD0_PLR1 (SIGNBOARD_START + 8) +#define SIGNBOARD1_PLR1 (SIGNBOARD_START + 9) +#define SIGNBOARD2_PLR1 (SIGNBOARD_START + 10) +#define SIGNBOARD3_PLR1 (SIGNBOARD_START + 11) +#define SIGNBOARD4_PLR1 (SIGNBOARD_START + 12) +#define SIGNBOARD5_PLR1 (SIGNBOARD_START + 13) +#define SIGNBOARD6_PLR1 (SIGNBOARD_START + 14) +#define SIGNBOARD7_PLR1 (SIGNBOARD_START + 15) +#define SIGNBOARD0_PLR2 (SIGNBOARD_START + 16) +#define SIGNBOARD1_PLR2 (SIGNBOARD_START + 17) +#define SIGNBOARD2_PLR2 (SIGNBOARD_START + 18) +#define SIGNBOARD3_PLR2 (SIGNBOARD_START + 19) +#define SIGNBOARD4_PLR2 (SIGNBOARD_START + 20) +#define SIGNBOARD5_PLR2 (SIGNBOARD_START + 21) +#define SIGNBOARD6_PLR2 (SIGNBOARD_START + 22) +#define SIGNBOARD7_PLR2 (SIGNBOARD_START + 23) +#define SIGNBOARD0_PLR3 (SIGNBOARD_START + 24) +#define SIGNBOARD1_PLR3 (SIGNBOARD_START + 25) +#define SIGNBOARD2_PLR3 (SIGNBOARD_START + 26) +#define SIGNBOARD3_PLR3 (SIGNBOARD_START + 27) +#define SIGNBOARD4_PLR3 (SIGNBOARD_START + 28) +#define SIGNBOARD5_PLR3 (SIGNBOARD_START + 29) +#define SIGNBOARD6_PLR3 (SIGNBOARD_START + 30) +#define SIGNBOARD7_PLR3 (SIGNBOARD_START + 31) +#define SIGNBOARD (SIGNBOARD_START + 32) +#define SIGNBOARD_END (SIGNBOARD) #define FTR0_START 0x1000 #define FTR_CLASSIC_WARDROBE 0x1004 @@ -3085,6 +3089,7 @@ extern int mNT_check_unknown(mActor_name_t item_no); #define RSV_CLOTH5 0xFE25 #define RSV_CLOTH6 0xFE26 #define RSV_CLOTH7 0xFE27 +#define RSV_SIGNBOARD 0xFE30 #define RSV_NW_ORIGINAL0 0xFE31 #define RSV_NW_ORIGINAL1 0xFE32 #define RSV_NW_ORIGINAL2 0xFE33 diff --git a/include/m_player_lib.h b/include/m_player_lib.h index 0e32ee73..7635d94c 100644 --- a/include/m_player_lib.h +++ b/include/m_player_lib.h @@ -13,7 +13,7 @@ extern "C" { extern void mPlib_Object_Exchange_keep_Player_dt(GAME_PLAY*); extern PLAYER_ACTOR* get_player_actor_withoutCheck(GAME_PLAY* play); extern mPlayer_Controller_Data_c* mPlib_Get_controller_data_for_title_demo_p(); -extern void mPlib_SetData1_controller_data_for_title_demo(f32 stick_x, f32 stick_y, int btn_a, int btn_b); +extern void mPlib_SetData1_controller_data_for_title_demo(int btn_a, int btn_b, f32 stick_x, f32 stick_y); extern void mPlib_SetData2_controller_data_for_title_demo(mActor_name_t tool); extern void mPlib_Clear_controller_data_for_title_demo(); extern void mPlib_request_main_invade_type1(GAME_PLAY* play); diff --git a/include/sys_math.h b/include/sys_math.h index b0dc5cd8..c4add2db 100644 --- a/include/sys_math.h +++ b/include/sys_math.h @@ -24,6 +24,8 @@ extern "C" { #define USHT_MIN ((f32)USHT_MIN_S) #define USHT_MAX ((f32)USHT_MAX_S) +#define FLT_MAX (3.4028235e+38f) + /* Macro to generate a random float in the range of [0, n) */ #define RANDOM_F(n) (fqrand() * (f32)(n)) diff --git a/src/ac_sign.c b/src/ac_sign.c new file mode 100644 index 00000000..2f46d959 --- /dev/null +++ b/src/ac_sign.c @@ -0,0 +1,1022 @@ +#include "ac_sign.h" + +#include "m_common_data.h" +#include "m_debug.h" +#include "m_skin_matrix.h" +#include "libultra/libultra.h" +#include "m_player_lib.h" +#include "m_msg.h" +#include "m_choice.h" +#include "m_needlework_ovl.h" +#include "sys_matrix.h" +#include "m_rcp.h" + +enum { + aSIGN_ACTION_WAIT, + aSIGN_ACTION_TALK, + aSIGN_ACTION_TALK_END, + aSIGN_ACTION_MENU_OPEN_WAIT, + aSIGN_ACTION_MENU_END_WAIT, + aSIGN_ACTION_SINGLE_BIRTH, + aSIGN_ACTION_SINGLE_ERASE, + + aSIGN_ACTION_NUM +}; + +extern Vtx obj_kanban_shadow_v[]; +extern Gfx obj_kanban_shadowT_model[]; + +static u8 aSIGN_shadow_vtx_fix_flg_table[] = { TRUE, FALSE, FALSE, TRUE }; +static bIT_ShadowData_c aSIGN_shadow_data = { + ARRAY_COUNT(aSIGN_shadow_vtx_fix_flg_table), + aSIGN_shadow_vtx_fix_flg_table, + 50.0f, + obj_kanban_shadow_v, + obj_kanban_shadowT_model, +}; + +static void aSIGN_actor_ct(ACTOR* actorx, GAME* game); +static void aSIGN_actor_dt(ACTOR* actorx, GAME* game); +static void aSIGN_actor_move(ACTOR* actorx, GAME* game); +static void aSIGN_actor_draw(ACTOR* actorx, GAME* game); + +// clang-format off +ACTOR_PROFILE Ac_Sign_Profile = { + mAc_PROFILE_AC_SIGN, + ACTOR_PART_ITEM, + ACTOR_STATE_NO_DRAW_WHILE_CULLED | ACTOR_STATE_NO_MOVE_WHILE_CULLED, + EMPTY_NO, + ACTOR_OBJ_BANK_AC_SIGN, + sizeof(SIGN_ACTOR), + &aSIGN_actor_ct, + &aSIGN_actor_dt, + &aSIGN_actor_move, + &aSIGN_actor_draw, + NULL, +}; +// clang-format on + +static void aSIGN_setup_action(SIGN_ACTOR* sign, int action); +static void aSIGN_change_my_original(SIGN_ACTOR* sign, GAME* game, u16 design_no); +static void aSIGN_single_birth(SIGN_ACTOR* sign, GAME* game); +static void aSIGN_single_erase(SIGN_ACTOR* sign, GAME* game); + +static void aSIGN_actor_ct(ACTOR* actorx, GAME* game) { + SIGN_ACTOR* sign = (SIGN_ACTOR*)actorx; + + Common_Get(clip).sign_control_actor = sign; + sign->is_winter = Common_Get(time.season) == mTM_SEASON_WINTER; + aSIGN_setup_action(sign, aSIGN_ACTION_WAIT); +} + +static void aSIGN_actor_dt(ACTOR* actorx, GAME* game) { + Common_Get(clip).sign_control_actor = NULL; +} + +static int aSIGN_no_cull_check(GAME_PLAY* play, int bz, int bx, int ut_z, int ut_x) { + xyz_t center_pos; + xyz_t clip_pos; + f32 w; + f32 max_dist = aSIGN_CULL_MAX_DIST; + + if (GETREG(NMREG, 5)) { + max_dist = GETREG(NMREG, 5); + } + + /* Get the world space of the unit */ + mFI_BkandUtNum2CenterWpos(¢er_pos, bx, bz, ut_x, ut_z); + center_pos.y = mFI_UNIT_BASE_SIZE_F + mCoBG_GetBgY_OnlyCenter_FromWpos2(center_pos, 0.0f); + + /* Transform world space to clip space */ + Skin_Matrix_PrjMulVector(&play->projection_matrix, ¢er_pos, &clip_pos, &w); + + /* Test that the clip space is within the camera bounds */ + if (clip_pos.z > -max_dist) { + f32 inv_w = (w < 1.0f) ? 1.0f : (1.0f / w); + + if (inv_w * (fabsf(clip_pos.x) - max_dist) < 1.0f && inv_w * (fabsf(clip_pos.y) - max_dist) < 1.0f) { + return TRUE; + } + } + + return FALSE; +} + +static int aSIGN_no_cull_talk_area(GAME_PLAY* play, int bz, int bx, int ut_z, int ut_x) { + xyz_t center_pos; + + mFI_BkandUtNum2CenterWpos(¢er_pos, bx, bz, ut_x, ut_z); + if (Camera2_CheckEnterCullingArea(center_pos.x, center_pos.z, 65.0f) == FALSE) { + return TRUE; + } + + return FALSE; +} + +static int aSIGN_draw_anime_check(SIGN_ACTOR* sign, int ut_z, int ut_x) { + int i; + + for (i = 0; i < aSIGN_SINGLE_NUM; i++) { + if (sign->single[i].exist_flag && sign->single[i].unit.z == ut_z && sign->single[i].unit.x == ut_x) { + return TRUE; + } + } + + return FALSE; +} + +static void aSIGN_draw_set(SIGN_ACTOR* sign, aSIGN_draw_c* draw, GAME_PLAY* play, int bz, int bx, int base_ut_z, + int base_ut_x) { + mActor_name_t* fg_p = mFI_BkNumtoUtFGTop(bx, bz); + int ut_z; + int ut_x; + int ut_z_max = 5; + int ut_x_max = 7; + + if (GETREG(NMREG, 2)) { + ut_z_max = GETREG(NMREG, 2); + } + + if (GETREG(NMREG, 3)) { + ut_x_max = GETREG(NMREG, 3); + } + + draw->block.z = bz; + draw->block.x = bx; + + if (fg_p != NULL) { + + for (ut_z = 0; ut_z < UT_Z_NUM; ut_z++) { + u16 ut_x_bitfield = 0; + u16 x_bit = 1; + + for (ut_x = 0; ut_x < UT_X_NUM; ut_x++) { + int ut_z_local = base_ut_z - ut_z; + int ut_x_local = base_ut_x - ut_x; + + ut_z_local = ABS(ut_z_local); + ut_x_local = ABS(ut_x_local); + + if (ITEM_NAME_GET_TYPE(*fg_p) == NAME_TYPE_ITEM0 && ITEM_NAME_GET_CAT(*fg_p) == ITEM0_CAT_SIGN) { + if (aSIGN_draw_anime_check(sign, ut_z, ut_x) == FALSE) { + if ((ut_z_local <= ut_z_max && ut_x_local <= ut_z_max) || + (ut_z_local <= ut_x_max && ut_x_local <= ut_x_max && + aSIGN_no_cull_check(play, bz, bx, ut_z, ut_x))) { + if (Camera2_CheckCullingMode()) { + if (aSIGN_no_cull_talk_area(play, bz, bx, ut_z, ut_x)) { + ut_x_bitfield |= x_bit; + } + } else { + ut_x_bitfield |= x_bit; + } + } + } + } + + x_bit <<= 1; + fg_p++; + } + + draw->exist_bitfield[ut_z] = ut_x_bitfield; + } + } +} + +static void aSIGN_actor_set_draw(SIGN_ACTOR* sign, GAME* game) { + xyz_t* camera_center_pos_p = Camera2_getCenterPos_p(); + int bz_max = mFI_GetBlockZMax(); + int bx_max = mFI_GetBlockXMax(); + int bz0; + int bx0; + xyz_t pos; + int ut_z; + int ut_x; + int t_bz; + int t_bx; + int bz; + int bx; + int base_ut_z; + int base_ut_x; + int t_base_ut_z; + int t_base_ut_x; + int i; + int j; + aSIGN_draw_c* draw_p; + + for (i = 0, draw_p = sign->draw; i < 2; i++) { + for (j = 0; j < 2; j++) { + bzero(draw_p->exist_bitfield, sizeof(draw_p->exist_bitfield)); + draw_p++; + } + } + + pos = *camera_center_pos_p; + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_DOOR) { + pos.z -= mFI_UT_WORLDSIZE_Z_F; + } + + if (GETREG(NMREG, 4)) { + pos.z -= (f32)GETREG(NMREG, 4); + } else { + pos.z -= 2 * mFI_UT_WORLDSIZE_Z_F; + } + + if (mFI_Wpos2BkandUtNuminBlock(&bx0, &bz0, &ut_x, &ut_z, pos)) { + if (ut_z < (UT_Z_NUM / 2)) { + t_bz = bz0 - 1; + t_base_ut_z = ut_z + UT_Z_NUM; + } else { + t_bz = bz0; + t_base_ut_z = ut_z; + } + + if (ut_x < (UT_X_NUM / 2)) { + t_bx = bx0 - 1; + t_base_ut_x = ut_x + UT_X_NUM; + } else { + t_bx = bx0; + t_base_ut_x = ut_x; + } + + bz = t_bz; + base_ut_z = t_base_ut_z; + for (i = 0, draw_p = sign->draw; i < 2; i++) { + bx = t_bx; + base_ut_x = t_base_ut_x; + for (j = 0; j < 2; j++) { + if (bz >= 0 && bz < bz_max && bx >= 0 && bx < bx_max) { + aSIGN_draw_set(sign, draw_p, (GAME_PLAY*)game, bz, bx, base_ut_z, base_ut_x); + } + + bx++; + base_ut_x -= UT_X_NUM; + draw_p++; + } + + bz++; + base_ut_z -= UT_Z_NUM; + } + } +} + +static int aSIGN_actor_BkandUtNum_formal(int* bz_p, int* bx_p, int* ut_z_p, int* ut_x_p) { + int bz_max = mFI_GetBlockZMax(); + int bx_max = mFI_GetBlockXMax(); + + if (*ut_z_p < 0) { + (*ut_z_p) += UT_Z_NUM; + (*bz_p)--; + } else if (*ut_z_p >= UT_Z_NUM) { + (*ut_z_p) -= UT_Z_NUM; + (*bz_p)++; + } + + if (*ut_x_p < 0) { + (*ut_x_p) += UT_X_NUM; + (*bx_p)--; + } else if (*ut_x_p >= UT_X_NUM) { + (*ut_x_p) -= UT_X_NUM; + (*bx_p)++; + } + + return *bz_p >= 0 && *bz_p < bz_max && *bx_p >= 0 && *bx_p < bx_max; +} + +static int aSIGN_actor_set_target(SIGN_ACTOR* sign, GAME* game) { + xyz_t sign_pos; + int base_bz; + int base_bx; + int base_ut_z; + int base_ut_x; + int bz; + int bx; + int ut_z; + int ut_x; + ACTOR* player_actor = GET_PLAYER_ACTOR_GAME_ACTOR(game); + f32 min_dist = FLT_MAX; + int z; + int x; + int i; + int j; + aSIGN_draw_c* draw_p; + int res = FALSE; + + if (mFI_Wpos2BkandUtNuminBlock(&base_bx, &base_bz, &base_ut_x, &base_ut_z, player_actor->world.position)) { + + for (z = -1; z < 1; z++) { + + for (x = -1; x < 2; x++) { + bz = base_bz; + bx = base_bx; + ut_x = base_ut_x + x; + ut_z = base_ut_z + z; + + if (aSIGN_actor_BkandUtNum_formal(&bz, &bx, &ut_z, &ut_x)) { + for (i = 0, draw_p = sign->draw; i < 2; i++) { + for (j = 0; j < 2; j++) { + if (draw_p->block.z == bz && draw_p->block.x == bx && + (draw_p->exist_bitfield[ut_z] & (1 << ut_x)) != 0) { + mFI_BkandUtNum2CenterWpos(&sign_pos, bx, bz, ut_x, ut_z); + sign_pos.y = mCoBG_GetBgY_OnlyCenter_FromWpos2(sign_pos, 0.0f); + if (player_actor->world.position.z > sign_pos.z) { + s16 angle_y = search_position_angleY(&sign_pos, &player_actor->world.position); + int abs_angle_y = ABS(angle_y); + + if (abs_angle_y < DEG2SHORT_ANGLE2(45.0f)) { + s16 d_angle_y = + (angle_y + DEG2SHORT_ANGLE2(180.0f)) - player_actor->shape_info.rotation.y; + s16 diff_angle_y = ABS(d_angle_y); + + if (diff_angle_y <= DEG2SHORT_ANGLE2(68.83483f)) { + f32 dist_sq = Math3DLengthSquare(&player_actor->world.position, &sign_pos); + + if (dist_sq < SQ(55.0f) && dist_sq < min_dist) { + res = TRUE; + min_dist = dist_sq; + sign->sign_pos.x = sign_pos.x; + sign->sign_pos.y = sign_pos.y; + sign->sign_pos.z = sign_pos.z; + sign->target_block.z = bz; + sign->target_block.x = bx; + sign->target_unit.z = ut_z; + sign->target_unit.x = ut_x; + xyz_t_move(&sign->target_pos, &sign_pos); + } + } + } + } + } + + draw_p++; + } + } + } + } + } + } + + return res; +} + +static ACTOR* aSIGN_search_exist_npc_inCircle_forSign(GAME* game, const xyz_t* pos_p, f32 max_dist) { + GAME_PLAY* play = (GAME_PLAY*)game; + Actor_info* actor_info_p = &play->actor_info; + ACTOR* actor = actor_info_p->list[ACTOR_PART_NPC].actor; + f32 x = pos_p->x; + f32 z = pos_p->z; + + for (actor; actor != NULL; actor = actor->next_actor) { + f32 dist = Math3DVecLengthSquare2D(actor->world.position.x - x, actor->world.position.z - z); + + if (dist < max_dist) { + NPC_ACTOR* npc_actor = (NPC_ACTOR*)actor; + + if (npc_actor->condition_info.hide_flg == FALSE) { + return actor; + } + } + } + + actor = actor_info_p->list[ACTOR_PART_BG].actor; + for (actor; actor != NULL; actor = actor->next_actor) { + if (actor->id == mAc_PROFILE_PSNOWMAN) { + f32 dist = Math3DVecLengthSquare2D(actor->world.position.x - x, actor->world.position.z - z); + + if (dist < max_dist) { + return actor; + } + } + } + + return NULL; +} + +static int aSIGN_single_anime_check(aSIGN_single_c* single_p, xyz_t pos) { + int bz; + int bx; + int ut_z; + int ut_x; + + mFI_Wpos2BkandUtNuminBlock(&bx, &bz, &ut_x, &ut_z, pos); + if (single_p->block.x == bx && single_p->block.z == bz && single_p->unit.x == ut_x && single_p->unit.z == ut_z) { + return TRUE; + } + + return FALSE; +} + +extern int aSIGN_set_white_sign(GAME* game, xyz_t* pos_p) { + SIGN_ACTOR* sign = Common_Get(clip).sign_control_actor; + int no_free_single = TRUE; + ACTOR* actor_in_circle; + int i; + + if (sign == NULL) { + return FALSE; + } + + actor_in_circle = aSIGN_search_exist_npc_inCircle_forSign(game, pos_p, 20.0f); + if (actor_in_circle != NULL) { + return FALSE; + } + + for (i = 0; i < aSIGN_SINGLE_NUM; i++) { + if (sign->single[i].exist_flag == FALSE) { + no_free_single = FALSE; + break; + } + } + + if (no_free_single) { + return FALSE; + } + + sign->sign_birth_pos = *pos_p; + sAdo_OngenTrgStart(NA_SE_ITEM_HORIDASHI, &sign->sign_birth_pos); + aSIGN_setup_action(sign, aSIGN_ACTION_SINGLE_BIRTH); + return TRUE; +} + +extern int aSIGN_erase_white_sign(GAME* game, xyz_t* pos_p) { + SIGN_ACTOR* sign = Common_Get(clip).sign_control_actor; + int i; + + if (sign == NULL) { + return FALSE; + } + + for (i = 0; i < aSIGN_SINGLE_NUM; i++) { + aSIGN_single_c* single = &sign->single[i]; + + if (single->exist_flag != 0) { + /* Check if a sign is already being erected here */ + if (aSIGN_single_anime_check(single, *pos_p) != FALSE) { + return FALSE; + } + } else { + mActor_name_t* fg_p = mFI_GetUnitFG(*pos_p); + + single->scale.x = 0.0099f; + single->scale.y = 0.0099f; + single->scale.z = 0.0099f; + + mFI_Wpos2BkandUtNuminBlock(&single->block.x, &single->block.z, &single->unit.x, &single->unit.z, *pos_p); + single->exist_flag = 2; + single->item = *fg_p; + } + } + + aSIGN_setup_action(sign, aSIGN_ACTION_WAIT); + return TRUE; +} + +static void aSIGN_set_talk_info(ACTOR* actorx) { + int player_no = Common_Get(player_no); + rgba_t window_color; + + if (player_no < PLAYER_NUM) { + if (GETREG(NMREG, 90)) { + mDemo_Set_msg_num(0x3065); + } else { + mDemo_Set_msg_num(0x3064); + } + } else { + mDemo_Set_msg_num(0x3065); + } + + mDemo_Set_talk_display_name(FALSE); + mDemo_Set_ListenAble(); + window_color.r = 185; + window_color.g = 60; + window_color.b = 40; + window_color.a = 255; + mDemo_Set_talk_window_color(&window_color); + mDemo_Set_camera(CAMERA2_PROCESS_NORMAL); + mDemo_Set_use_zoom_sound(TRUE); +} + +static void aSIGN_talk(SIGN_ACTOR* sign, GAME* game) { + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + + if (mDemo_Check(mDemo_TYPE_SPEAK, &sign->actor_class)) { + ACTOR* player_actor = GET_PLAYER_ACTOR_GAME_ACTOR(game); + s_xyz player_angle = player_actor->shape_info.rotation; + s16 target_y = search_position_angleY(&player_actor->world.position, &sign->target_pos); + + add_calc_short_angle2(&player_angle.y, target_y, 0.3f, DEG2SHORT_ANGLE2(22.5f), DEG2SHORT_ANGLE2(1.40625f)); + GET_PLAYER_ACTOR_NOW()->Set_force_position_angle_proc(gamePT, NULL, &player_angle, + mPlayer_FORCE_POSITION_ANGLE_ROTY); + + if (mMsg_Check_MainNormalContinue(msg_p) == TRUE) { + switch (mChoice_GET_CHOSENUM()) { + case mChoice_CHOICE0: + mMsg_REQUEST_MAIN_DISAPPEAR_WAIT_TYPE1(); + aSIGN_setup_action(sign, aSIGN_ACTION_MENU_OPEN_WAIT); + break; + case mChoice_CHOICE1: + default: + mMsg_REQUEST_MAIN_DISAPPEAR_WAIT_TYPE1(); + aSIGN_setup_action(sign, aSIGN_ACTION_TALK_END); + break; + } + } + } else { + aSIGN_setup_action(sign, aSIGN_ACTION_WAIT); + } +} + +static void aSIGN_talk_end(SIGN_ACTOR* sign, GAME* game) { + if (mMsg_CHECK_MAIN_WAIT()) { + aSIGN_setup_action(sign, aSIGN_ACTION_WAIT); + mMsg_request_main_forceoff(); + } +} + +static void aSIGN_wait(SIGN_ACTOR* sign, GAME* game) { + if (mDemo_Get_talk_actor() == NULL && aSIGN_actor_set_target(sign, game) && chkTrigger(BUTTON_A) && + mDemo_Get_talk_actor() == NULL) { + mDemo_Request(mDemo_TYPE_SPEAK, &sign->actor_class, &aSIGN_set_talk_info); + aSIGN_setup_action(sign, aSIGN_ACTION_TALK); + } +} + +static void aSIGN_menu_open_wait(SIGN_ACTOR* sign, GAME* game) { + u32 player_no = Common_Get(player_no); + GAME_PLAY* play = (GAME_PLAY*)game; + Submenu* submenu_p = &play->submenu; + + if (mMsg_CHECK_MAIN_WAIT()) { + + mSM_open_submenu(submenu_p, mSM_OVL_NEEDLEWORK, 0, player_no); + aSIGN_setup_action(sign, aSIGN_ACTION_MENU_END_WAIT); + mMsg_request_main_forceoff(); + } +} + +static void aSIGN_menu_end_wait(SIGN_ACTOR* sign, GAME* game) { + u32 player_no = Common_Get(player_no); + GAME_PLAY* play = (GAME_PLAY*)game; + Submenu* submenu_p = &play->submenu; + + if (submenu_p->open_flag == FALSE && mMsg_CHECK_NOT_SERIES_MAIN_WAIT() == TRUE) { + Submenu_Item_c* sm_item_p = submenu_p->item_p; + + if (sm_item_p->item == RSV_NO) { + int img_no = mNW_get_image_no(submenu_p, sm_item_p->slot_no); + img_no += player_no * mPr_ORIGINAL_DESIGN_COUNT; + + aSIGN_change_my_original(sign, game, img_no); + aSIGN_setup_action(sign, aSIGN_ACTION_WAIT); + } else { + aSIGN_setup_action(sign, aSIGN_ACTION_WAIT); + } + } +} + +static void aSIGN_setup_action(SIGN_ACTOR* sign, int action) { + // clang-format off + static aSIGN_ACTION_PROC process[] = { + &aSIGN_wait, + &aSIGN_talk, + &aSIGN_talk_end, + &aSIGN_menu_open_wait, + &aSIGN_menu_end_wait, + &aSIGN_single_birth, + &aSIGN_single_erase, + }; + // clang-format on + + sign->action_proc = process[action]; +} + +static void aSIGN_change_my_original(SIGN_ACTOR* sign, GAME* game, u16 design_no) { + mActor_name_t* fg_p = mFI_GetUnitFG(sign->sign_pos); + + if (ITEM_IS_SIGNBOARD(*fg_p)) { + mFI_SetFG_common(SIGNBOARD_START + design_no, sign->sign_pos, TRUE); + sAdo_OngenTrgStart(NA_SE_461, &sign->sign_pos); + } +} + +static void aSIGN_single_birth(SIGN_ACTOR* sign, GAME* game) { + ACTOR* player_actor = GET_PLAYER_ACTOR_GAME_ACTOR(game); // unused + xyz_t sign_birth_pos = sign->sign_birth_pos; + int i; + + for (i = 0; i < aSIGN_SINGLE_NUM; i++) { + if (sign->single[i].exist_flag != 0) { + if (aSIGN_single_anime_check(&sign->single[i], sign_birth_pos)) { + aSIGN_setup_action(sign, aSIGN_ACTION_WAIT); + return; + } + } else { + mActor_name_t* fg_p = mFI_GetUnitFG(sign_birth_pos); // unused + + sign->single[i].item = SIGNBOARD; + sign->single[i].scale.x = 0.0001f; + sign->single[i].scale.y = 0.0001f; + sign->single[i].scale.z = 0.0001f; + mFI_Wpos2BkandUtNuminBlock(&sign->single[i].block.x, &sign->single[i].block.z, &sign->single[i].unit.x, + &sign->single[i].unit.z, sign_birth_pos); + sign->single[i].exist_flag = 1; + sign->single[i]._24 = 0; + sign->single[i]._20 = 0.005f; + sign->single[i]._26 = 6000; + + aSIGN_setup_action(sign, aSIGN_ACTION_WAIT); + mFI_BkandUtNum2CenterWpos(&sign_birth_pos, sign->single[i].block.x, sign->single[i].block.z, + sign->single[i].unit.x, sign->single[i].unit.z); + mFI_SetFG_common(RSV_SIGNBOARD, sign_birth_pos, TRUE); + mCoBG_RegistDecalCircle(&sign_birth_pos, 16.0f, 19.0f, 36); + return; + } + } + + aSIGN_setup_action(sign, aSIGN_ACTION_WAIT); +} + +static void aSIGN_single_erase(SIGN_ACTOR* sign, GAME* game) { + ACTOR* player_actor = GET_PLAYER_ACTOR_GAME_ACTOR(game); // unused + xyz_t sign_birth_pos = sign->sign_birth_pos; + int i; + + for (i = 0; i < aSIGN_SINGLE_NUM; i++) { + aSIGN_single_c* single = &sign->single[i]; + + if (single->exist_flag != 0) { + if (aSIGN_single_anime_check(single, sign_birth_pos)) { + aSIGN_setup_action(sign, aSIGN_ACTION_WAIT); + return; + } + } else { + mActor_name_t* fg_p = mFI_GetUnitFG(sign_birth_pos); + + single->scale.x = 0.0099f; + single->scale.y = 0.0099f; + single->scale.z = 0.0099f; + mFI_Wpos2BkandUtNuminBlock(&single->block.x, &single->block.z, &single->unit.x, &single->unit.z, + sign_birth_pos); + single->exist_flag = 2; + single->item = *fg_p; + + aSIGN_setup_action(sign, aSIGN_ACTION_WAIT); + return; + } + } + + aSIGN_setup_action(sign, aSIGN_ACTION_WAIT); +} + +static void aSIGN_single_all_check(SIGN_ACTOR* sign) { + s16 prev_angle; + s16 now_angle; + xyz_t* scale_p; + int i; + + for (i = 0; i < aSIGN_SINGLE_NUM; i++) { + if (sign->single[i].exist_flag != 0) { + f32 wobble; + + if (sign->single[i].exist_flag == 1) { + + prev_angle = sign->single[i]._24; + sign->single[i]._24 = prev_angle + sign->single[i]._26; + now_angle = sign->single[i]._24; + sign->single[i].scale.y = sign->single[i]._20 * sinf_table((f32)now_angle * 0.0000958738f); + sign->single[i].scale.x = 0.01f - sign->single[i].scale.y; + sign->single[i].scale.y += 0.01f; + sign->single[i].scale.z = sign->single[i].scale.x; + + if ((prev_angle < 0 && now_angle >= 0) || (prev_angle < -0x8000 && now_angle >= -0x8000)) { + sign->single[i]._20 *= 0.4f; + sign->single[i]._26 += 750; + } + } + + if (sign->single[i].exist_flag == 2) { + scale_p = &sign->single[i].scale; + add_calc(&scale_p->x, 0.0f, 0.5f, 0.0006f, 0.001f); + add_calc(&scale_p->y, 0.0f, 0.5f, 0.0006f, 0.001f); + add_calc(&scale_p->z, 0.0f, 0.5f, 0.0006f, 0.001f); + } + + // wobble = ABS(sign->single[i]._20); + if (ABS(sign->single[i]._20) < 0.0002f && sign->single[i].exist_flag == 1) { + xyz_t center_pos; + + mFI_BkandUtNum2CenterWpos(¢er_pos, sign->single[i].block.x, sign->single[i].block.z, + sign->single[i].unit.x, sign->single[i].unit.z); + mFI_SetFG_common(SIGNBOARD_END, center_pos, TRUE); + sign->single[i].exist_flag = 0; + } + + if (sign->single[i].scale.x <= 0.0f && sign->single[i].exist_flag == 2) { + xyz_t center_pos; + + mFI_BkandUtNum2CenterWpos(¢er_pos, sign->single[i].block.x, sign->single[i].block.z, + sign->single[i].unit.x, sign->single[i].unit.z); + center_pos.y = mCoBG_GetBgY_OnlyCenter_FromWpos2(center_pos, 0.0f); // unused?? + sign->single[i].exist_flag = 0; + } + } + } +} + +static void aSIGN_random_set(void); +static void aSIGN_all_clear(void); + +static void aSIGN_actor_move(ACTOR* actorx, GAME* game) { + SIGN_ACTOR* sign = (SIGN_ACTOR*)actorx; + + (*sign->action_proc)(sign, game); + aSIGN_single_all_check(sign); + aSIGN_actor_set_draw(sign, game); + + if (GETREG(NMREG, 1)) { + int type = GETREG(NMREG, 0); + + if (type == 1000 || type == 100) { + aSIGN_random_set(); + SETREG(NMREG, 0, 0); + } + + if (GETREG(NMREG, 0) == 10) { + aSIGN_all_clear(); + SETREG(NMREG, 0, 0); + } + } +} + +static void aSIGN_random_set(void) { + mActor_name_t* fg_p; + int ut_z; + int ut_x; + int bz; + int bx; + int bx_max = mFI_GetBlockXMax(); + int bz_max = mFI_GetBlockZMax(); + + for (bz = 0; bz < bz_max; bz++) { + + for (bx = 0; bx < bx_max; bx++) { + fg_p = mFI_BkNumtoUtFGTop(bx, bz); + for (ut_z = 0; ut_z < UT_Z_NUM; ut_z++) { + for (ut_x = 0; ut_x < UT_X_NUM; ut_x++) { + if (*fg_p == TREE && GETREG(NMREG, 0) == 1000) { + mFI_UtNumtoFGSet_common(SIGNBOARD_START + (qrand() >> 27), bx * UT_X_NUM + ut_x, + bz * UT_Z_NUM + ut_z, TRUE); + } else if (*fg_p == EMPTY_NO && GETREG(NMREG, 0) == 100) { + if ((ut_z & 1) != 0 && (ut_x & 1) != 0) { + mFI_UtNumtoFGSet_common(SIGNBOARD_START + (u16)(qrand() >> 27), bx * UT_X_NUM + ut_x, + bz * UT_Z_NUM + ut_z, TRUE); + } + } + + fg_p++; + } + } + } + } +} + +static void aSIGN_all_clear(void) { + mActor_name_t* fg_p; + int ut_z; + int ut_x; + int bz; + int bx; + int bx_max = mFI_GetBlockXMax(); + int bz_max = mFI_GetBlockZMax(); + + for (bz = 0; bz < bz_max; bz++) { + for (bx = 0; bx < bx_max; bx++) { + fg_p = mFI_BkNumtoUtFGTop(bx, bz); + for (ut_z = 0; ut_z < UT_Z_NUM; ut_z++) { + for (ut_x = 0; ut_x < UT_X_NUM; ut_x++) { + if (*fg_p >= SIGNBOARD_START && *fg_p < (SIGNBOARD_END + 1)) { + mFI_UtNumtoFGSet_common(EMPTY_NO, bx * UT_X_NUM + ut_x, bz * UT_Z_NUM + ut_z, TRUE); + } + + fg_p++; + } + } + } + } +} + +static void aSIGN_draw_shadow(GAME* game, bIT_ShadowData_c* shadow_data); + +extern u8 hakushi_tex[]; +extern u16 hakushi_pal[]; +extern Gfx write_model[]; +extern Gfx obj_sign_s_model[]; +extern Gfx obj_sign_w_model[]; + +static void aSIGN_single_all_draw(SIGN_ACTOR* sign, GAME* game) { + static Gfx* mdl[] = { obj_sign_s_model, obj_sign_w_model }; + + GRAPH* graph = game->graph; + int i; + + _texture_z_light_fog_prim_npc(graph); + + OPEN_DISP(graph); + gDPSetTextureAdjustMode(NEXT_POLY_OPA_DISP, G_TA_DOLPHIN); + CLOSE_DISP(graph); + + for (i = 0; i < aSIGN_SINGLE_NUM; i++) { + if (sign->single[i].exist_flag != 0) { + xyz_t sign_pos; + u32 player_no; + int my_original_idx; + u16* pal_p; + u8* tex_p; + + Matrix_push(); + mFI_BkandUtNum2CenterWpos(&sign_pos, sign->single[i].block.x, sign->single[i].block.z, + sign->single[i].unit.x, sign->single[i].unit.z); + sign_pos.y = mCoBG_GetBgY_OnlyCenter_FromWpos2(sign_pos, 0.0f); + player_no = (sign->single[i].item >> 3) & 3; + my_original_idx = sign->single[i].item & 7; + + Matrix_translate(sign_pos.x, sign_pos.y, sign_pos.z - 1.0f, 0); + Matrix_scale(sign->single[i].scale.x, sign->single[i].scale.y, sign->single[i].scale.z, 1); + + OPEN_POLY_OPA_DISP(graph); + + if ((sign->single[i].item >> 5) & 1) { + pal_p = hakushi_pal; + tex_p = hakushi_tex; + } else { + pal_p = mNW_PaletteIdx2Palette(Save_Get(private_data[player_no]).my_org[my_original_idx].palette); + tex_p = Save_Get(private_data[player_no]).my_org[my_original_idx].design.data; + } + + gSPSegment(POLY_OPA_DISP++, ANIME_1_TXT_SEG, pal_p); + gSPSegment(POLY_OPA_DISP++, ANIME_2_TXT_SEG, tex_p); + gSPMatrix(POLY_OPA_DISP++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, write_model); + gSPDisplayList(POLY_OPA_DISP++, mdl[sign->is_winter]); + + CLOSE_POLY_OPA_DISP(graph); + + aSIGN_draw_shadow(game, &aSIGN_shadow_data); + Matrix_pull(); + } + } + + OPEN_DISP(graph); + gDPSetTextureAdjustMode(NEXT_POLY_OPA_DISP, G_TA_N64); + CLOSE_DISP(graph); +} + +static void aSIGN_actor_draw(ACTOR* actorx, GAME* game) { + static Gfx* mdl[] = { obj_sign_s_model, obj_sign_w_model }; + + GRAPH* graph = game->graph; + SIGN_ACTOR* sign = (SIGN_ACTOR*)actorx; + MtxF* mtxf = get_Matrix_now(); + mActor_name_t* fg_p; + int ut_z; + int ut_x; + int i; + int j; + aSIGN_draw_c* draw_p; + u16 exist_bitfield; + u16 ut_bit; + + aSIGN_single_all_draw(sign, game); + _texture_z_light_fog_prim_npc(graph); + + draw_p = sign->draw; + + OPEN_DISP(graph); + gDPSetTextureAdjustMode(NEXT_POLY_OPA_DISP, G_TA_DOLPHIN); + CLOSE_DISP(graph); + + for (i = 0; i < 2; i++) { + for (j = 0; j < 2; j++) { + fg_p = mFI_BkNumtoUtFGTop(draw_p->block.x, draw_p->block.z); + for (ut_z = 0; ut_z < UT_Z_NUM; ut_z++) { + exist_bitfield = draw_p->exist_bitfield[ut_z]; + + if (exist_bitfield == 0) { + fg_p += UT_X_NUM; + } else { + for (ut_x = 0, ut_bit = 1; ut_x < UT_X_NUM; ut_x++) { + if ((exist_bitfield & ut_bit) != 0) { + mActor_name_t item = *fg_p; + + if (ITEM_NAME_GET_TYPE(item) == NAME_TYPE_ITEM0 && + ITEM_NAME_GET_CAT(item) == ITEM0_CAT_SIGN) { + xyz_t sign_pos; + u32 player_no; + int my_original_idx; + u16* pal_p; + u8* tex_p; + + mFI_BkandUtNum2CenterWpos(&sign_pos, draw_p->block.x, draw_p->block.z, ut_x, ut_z); + sign_pos.y = mCoBG_GetBgY_OnlyCenter_FromWpos2(sign_pos, 0.0f); + + player_no = (item >> 3) & 3; + my_original_idx = item & 7; + + OPEN_POLY_OPA_DISP(graph); + + /* Copy sign position to world matrix translation */ + mtxf->mf[3][0] = sign_pos.x; + mtxf->mf[3][1] = sign_pos.y; + mtxf->mf[3][2] = sign_pos.z; + + if ((item >> 5) & 1) { + pal_p = hakushi_pal; + tex_p = hakushi_tex; + } else { + pal_p = mNW_PaletteIdx2Palette( + Save_Get(private_data[player_no]).my_org[my_original_idx].palette); + tex_p = Save_Get(private_data[player_no]).my_org[my_original_idx].design.data; + } + + gSPSegment(POLY_OPA_DISP++, ANIME_1_TXT_SEG, pal_p); + gSPSegment(POLY_OPA_DISP++, ANIME_2_TXT_SEG, tex_p); + gSPMatrix(POLY_OPA_DISP++, _Matrix_to_Mtx_new(graph), + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, write_model); + gSPDisplayList(POLY_OPA_DISP++, mdl[sign->is_winter]); + + CLOSE_POLY_OPA_DISP(graph); + + /* Draw shadow behind the sign */ + mtxf->mf[3][0] = sign_pos.x; + mtxf->mf[3][1] = sign_pos.y; + mtxf->mf[3][2] = sign_pos.z - 1.0f; + aSIGN_draw_shadow(game, &aSIGN_shadow_data); + } + } + + ut_bit <<= 1; + fg_p++; + } + } + } + + draw_p++; + } + } + + OPEN_DISP(graph); + gDPSetTextureAdjustMode(NEXT_POLY_OPA_DISP, G_TA_N64); + CLOSE_DISP(graph); +} + +static void aSIGN_copy_vtx(Vtx* dst, Vtx* src, u32 n_vtx, u8* vtx_fix_flg_table, int fix_ofs) { + int i; + + for (i = 0; i != n_vtx; i++) { + *dst = *src; + + if (*vtx_fix_flg_table == TRUE) { + dst->v.ob[0] = src->v.ob[0] + fix_ofs; + } else { + dst->v.ob[0] = src->v.ob[0]; + } + + src++; + dst++; + vtx_fix_flg_table++; + } +} + +static void aSIGN_draw_shadow(GAME* game, bIT_ShadowData_c* shadow_data) { + GAME_PLAY* play = (GAME_PLAY*)game; + GRAPH* graph = game->graph; + Vtx* vtx = (Vtx*)GRAPH_ALLOC_TYPE(graph, Vtx, shadow_data->vtx_num); + rgba_t color; + u8 l; + u8 r; + u8 g; + u8 b; + u8 a; + + if (vtx != NULL) { + aSIGN_copy_vtx(vtx, shadow_data->vtx, shadow_data->vtx_num, shadow_data->vtx_fix_flags, + play->kankyo.shadow_pos * shadow_data->size); + } else { + vtx = shadow_data->vtx; + } + + OPEN_SHADOW_DISP(graph); + + gDPPipeSync(SHADOW_DISP++); + gSPMatrix(SHADOW_DISP++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPSegment(SHADOW_DISP++, ANIME_3_TXT_SEG, vtx); + l = play->kankyo.shadow_alpha; + r = play->kankyo.base_light.shadow_color[0]; + g = play->kankyo.base_light.shadow_color[1]; + b = play->kankyo.base_light.shadow_color[2]; + a = play->kankyo.shadow_alpha; + gDPSetPrimColor(SHADOW_DISP++, 0, l, r, g, b, a); + gSPDisplayList(SHADOW_DISP++, shadow_data->gfx); + + CLOSE_SHADOW_DISP(graph); +} diff --git a/src/m_item_name.c b/src/m_item_name.c index 1b7b1b3d..6342323f 100644 --- a/src/m_item_name.c +++ b/src/m_item_name.c @@ -7,348 +7,594 @@ #include "m_font.h" static u8 itemArt_Paper[PAPER_NUM] = { - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, }; static u8 itemArt_Money[MONEY_NUM] = { - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE + mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, }; static u8 itemArt_Tool[TOOL_NUM] = { - mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, - mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A + mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, + mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, }; static u8 itemArt_Fish[FISH_NUM] = { - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_A, + mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, }; static u8 itemArt_Cloth[CLOTH_NUM] = { - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_NONE, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_AN, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, }; static u8 itemArt_Etc[ETC_NUM] = { - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_AN, mIN_ARTICLE_A, - mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, - mIN_ARTICLE_NONE + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, + mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_AN, + mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, + mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, + mIN_ARTICLE_NONE, }; static u8 itemArt_Carpet[CARPET_NUM] = { - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_THE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_AN, mIN_ARTICLE_A, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_AN, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_AN, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_THE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_AN, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_NONE, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, + mIN_ARTICLE_A, }; static u8 itemArt_Wall[WALL_NUM] = { - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, + mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, + mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, }; static u8 itemArt_Fruit[FRUIT_NUM] = { - mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A + mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, }; static u8 itemArt_Plant[PLANT_NUM] = { - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, }; static u8 itemArt_MiniDisk[MINIDISK_NUM] = { - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, }; static u8 itemArt_Diary[DIARY_NUM] = { - mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A + mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, }; static u8 itemArt_Ticket[TICKET_NUM] = { - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, }; static u8 itemArt_Insect[INSECT_NUM] = { - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, }; static u8 itemArt_Hukubukuro[HUKUBUKURO_NUM] = { - mIN_ARTICLE_A, mIN_ARTICLE_A + mIN_ARTICLE_A, + mIN_ARTICLE_A, }; static u8 itemArt_Kabu[KABU_NUM] = { - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE + mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, }; static u8 ftrArt[FTR_NUM] = { - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, - mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_NONE, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_NONE, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, - mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_THE, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, - mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_THE, mIN_ARTICLE_A, mIN_ARTICLE_THE, mIN_ARTICLE_THE, mIN_ARTICLE_THE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_THE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_THE, mIN_ARTICLE_THE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_THE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_NONE, - mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_THE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_THE, mIN_ARTICLE_THE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_AN, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, + mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_NONE, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, + mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, + mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, + mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, + mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_A, + mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_THE, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_AN, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_NONE, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_THE, mIN_ARTICLE_A, mIN_ARTICLE_THE, mIN_ARTICLE_THE, mIN_ARTICLE_THE, mIN_ARTICLE_NONE, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_THE, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, + mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_THE, mIN_ARTICLE_THE, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_THE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_AN, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_THE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, + mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, + mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_THE, mIN_ARTICLE_THE, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, }; /** * @brief Copies an item name from src to dst. - * + * * @param dst Destination item name buffer * @param src Source item name buffer **/ static void mIN_dma_itemName(u8* dst, u8* src) { - mem_copy(dst, src, mIN_ITEM_NAME_LEN); + mem_copy(dst, src, mIN_ITEM_NAME_LEN); } /** * @brief Retrieves and copies an item name to a destination buffer from an item no. - * + * * @param dst The item name destination buffer * @param item The item no whose name will be retrieved **/ extern void mIN_copy_name_str(u8* dst, mActor_name_t item) { - static u8* itemName_table[ITEM1_CAT_NUM] = { - itemName_paper, - itemName_money, - itemName_tool, - itemName_fish, - itemName_cloth, - itemName_etc, - itemName_carpet, - itemName_wall, - itemName_fruit, - itemName_plant, - itemName_minidisk, - itemName_dummy, - itemName_ticket, - itemName_insect, - itemName_hukubukuro, - itemName_kabu - }; + // clang-format off + static u8* itemName_table[ITEM1_CAT_NUM] = { + itemName_paper, + itemName_money, + itemName_tool, + itemName_fish, + itemName_cloth, + itemName_etc, + itemName_carpet, + itemName_wall, + itemName_fruit, + itemName_plant, + itemName_minidisk, + itemName_dummy, + itemName_ticket, + itemName_insect, + itemName_hukubukuro, + itemName_kabu + }; + // clang-format on - static u8 unknown_item_str[mIN_ITEM_NAME_LEN] = { CHAR_u, CHAR_n, CHAR_k, CHAR_n, CHAR_o, CHAR_w, CHAR_n, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE }; + static u8 unknown_item_str[mIN_ITEM_NAME_LEN] = { CHAR_u, CHAR_n, CHAR_k, CHAR_n, + CHAR_o, CHAR_w, CHAR_n, CHAR_SPACE, + CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, + CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE }; - u8 item_name[mIN_ITEM_NAME_LEN]; - u32 itm = item; - mActor_name_t item_no = mRmTp_FtrItemNo2Item1ItemNo(item, FALSE); + u8 item_name[mIN_ITEM_NAME_LEN]; + u32 itm = item; + mActor_name_t item_no = mRmTp_FtrItemNo2Item1ItemNo(item, FALSE); - if (mNT_check_unknown(item_no) == TRUE) { - mem_copy(dst, unknown_item_str, mIN_ITEM_NAME_LEN); - } - else { - switch (ITEM_NAME_GET_TYPE(item_no)) { - case NAME_TYPE_ITEM1: - { - mIN_dma_itemName(item_name, itemName_table[ITEM_NAME_GET_CAT(item_no)] + ITEM_NAME_GET_INDEX(item_no) * mIN_ITEM_NAME_LEN); - mem_copy(dst, item_name, mIN_ITEM_NAME_LEN); - break; - } + if (mNT_check_unknown(item_no) == TRUE) { + mem_copy(dst, unknown_item_str, mIN_ITEM_NAME_LEN); + } else { + switch (ITEM_NAME_GET_TYPE(item_no)) { + case NAME_TYPE_ITEM1: { + mIN_dma_itemName(item_name, itemName_table[ITEM_NAME_GET_CAT(item_no)] + + ITEM_NAME_GET_INDEX(item_no) * mIN_ITEM_NAME_LEN); + mem_copy(dst, item_name, mIN_ITEM_NAME_LEN); + break; + } - case NAME_TYPE_FTR0: - { - mIN_dma_itemName(item_name, ftrName_table + ((item_no / 4) & 0x3FF) * mIN_ITEM_NAME_LEN); - mem_copy(dst, item_name, mIN_ITEM_NAME_LEN); - break; - } + case NAME_TYPE_FTR0: { + mIN_dma_itemName(item_name, ftrName_table + ((item_no / 4) & 0x3FF) * mIN_ITEM_NAME_LEN); + mem_copy(dst, item_name, mIN_ITEM_NAME_LEN); + break; + } - case NAME_TYPE_FTR1: - { - mIN_dma_itemName(item_name, ftrName2_table + ((item_no / 4) & 0x3FF) * mIN_ITEM_NAME_LEN); - mem_copy(dst, item_name, mIN_ITEM_NAME_LEN); - break; - } + case NAME_TYPE_FTR1: { + mIN_dma_itemName(item_name, ftrName2_table + ((item_no / 4) & 0x3FF) * mIN_ITEM_NAME_LEN); + mem_copy(dst, item_name, mIN_ITEM_NAME_LEN); + break; + } - default: - { - if (item_no >= SIGNBOARD && item_no <= SIGNBOARD7_PLR3) { - mIN_dma_itemName(item_name, itemName_table[ITEM1_CAT_ETC] + (ITM_SIGNBOARD & 0xFF) * mIN_ITEM_NAME_LEN); - mem_copy(dst, item_name, mIN_ITEM_NAME_LEN); + default: { + if (ITEM_IS_SIGNBOARD(item_no)) { + mIN_dma_itemName(item_name, + itemName_table[ITEM1_CAT_ETC] + (ITM_SIGNBOARD & 0xFF) * mIN_ITEM_NAME_LEN); + mem_copy(dst, item_name, mIN_ITEM_NAME_LEN); + } else if (item_no == EMPTY_NO) { + mem_clear(dst, mIN_ITEM_NAME_LEN, CHAR_SPACE); + } + break; + } } - else if (item_no == EMPTY_NO) { - mem_clear(dst, mIN_ITEM_NAME_LEN, CHAR_SPACE); - } - break; - } } - } } /** * @brief Gets the artticle type for a given item. - * + * * @param item The item no whose article type will be retrieved * @return mIN_ARTICLE_* item article **/ extern int mIN_get_item_article(mActor_name_t item) { - static u8* itemArt_table[ITEM1_CAT_NUM] = { - itemArt_Paper, - itemArt_Money, - itemArt_Tool, - itemArt_Fish, - itemArt_Cloth, - itemArt_Etc, - itemArt_Carpet, - itemArt_Wall, - itemArt_Fruit, - itemArt_Plant, - itemArt_MiniDisk, - itemArt_Diary, - itemArt_Ticket, - itemArt_Insect, - itemArt_Hukubukuro, - itemArt_Kabu - }; + // clang-format off + static u8* itemArt_table[ITEM1_CAT_NUM] = { + itemArt_Paper, + itemArt_Money, + itemArt_Tool, + itemArt_Fish, + itemArt_Cloth, + itemArt_Etc, + itemArt_Carpet, + itemArt_Wall, + itemArt_Fruit, + itemArt_Plant, + itemArt_MiniDisk, + itemArt_Diary, + itemArt_Ticket, + itemArt_Insect, + itemArt_Hukubukuro, + itemArt_Kabu + }; + // clang-format on - int article = mIN_ARTICLE_NONE; - mActor_name_t item_no = mRmTp_FtrItemNo2Item1ItemNo(item, FALSE); - int index = item_no & 0xFF; + int article = mIN_ARTICLE_NONE; + mActor_name_t item_no = mRmTp_FtrItemNo2Item1ItemNo(item, FALSE); + int index = item_no & 0xFF; - switch (ITEM_NAME_GET_TYPE(item_no)) { - case NAME_TYPE_ITEM1: - { - article = itemArt_table[ITEM_NAME_GET_CAT(item_no)][index]; - break; + switch (ITEM_NAME_GET_TYPE(item_no)) { + case NAME_TYPE_ITEM1: { + article = itemArt_table[ITEM_NAME_GET_CAT(item_no)][index]; + break; + } + + case NAME_TYPE_FTR0: + case NAME_TYPE_FTR1: { + int ftr_idx = mRmTp_FtrItemNo2FtrIdx(item_no); + if (ftr_idx < FTR_NUM) { + return ftrArt[ftr_idx]; + } + return mIN_ARTICLE_NONE; + } + + default: { + if (ITEM_IS_SIGNBOARD(item_no)) { + article = itemArt_Etc[ITM_SIGNBOARD & 0xFF]; + } + break; + } } - case NAME_TYPE_FTR0: - case NAME_TYPE_FTR1: - { - int ftr_idx = mRmTp_FtrItemNo2FtrIdx(item_no); - if (ftr_idx < FTR_NUM) { - return ftrArt[ftr_idx]; - } - return mIN_ARTICLE_NONE; - } - - default: - { - if (item_no >= SIGNBOARD && item_no <= SIGNBOARD7_PLR3) { - article = itemArt_Etc[ITM_SIGNBOARD & 0xFF]; - } - break; - } - } - - return article; + return article; } diff --git a/src/m_titledemo.c b/src/m_titledemo.c index ab9d68ed..0909ba2e 100644 --- a/src/m_titledemo.c +++ b/src/m_titledemo.c @@ -19,169 +19,161 @@ static int S_tdemo_frame; static u16 S_titledemo_to_play; static u16 get_demo_header(int titledemo_no, int key) { - static u16* pact_data_header_pt[mTD_TITLE_DEMO_NUM] = { - pact0_head_table, pact1_head_table, pact2_head_table, pact3_head_table, pact4_head_table - }; + static u16* pact_data_header_pt[mTD_TITLE_DEMO_NUM] = { pact0_head_table, pact1_head_table, pact2_head_table, + pact3_head_table, pact4_head_table }; - return pact_data_header_pt[titledemo_no][key]; + return pact_data_header_pt[titledemo_no][key]; } extern int mTD_demono_get() { - if (S_now_demono == -1) { - S_now_demono = 1; - } - else { - S_now_demono++; - if (S_now_demono > mTD_TITLE_DEMO_NUM) { - S_now_demono = 1; + if (S_now_demono == -1) { + S_now_demono = 1; + } else { + S_now_demono++; + if (S_now_demono > mTD_TITLE_DEMO_NUM) { + S_now_demono = 1; + } } - } - return S_now_demono; + return S_now_demono; } extern void mTD_player_keydata_init(GAME_PLAY* play) { - PLAYER_ACTOR* player = get_player_actor_withoutCheck(play); + PLAYER_ACTOR* player = get_player_actor_withoutCheck(play); - if (mEv_CheckTitleDemo() > 0) { - u16 angle; - mActor_name_t tool = get_demo_header(mEv_CheckTitleDemo() - 1, mTD_HEADER_TOOL); + if (mEv_CheckTitleDemo() > 0) { + u16 angle; + mActor_name_t tool = get_demo_header(mEv_CheckTitleDemo() - 1, mTD_HEADER_TOOL); - if (tool == ITM_AXE) { - tool = ITM_AXE; - } - else if (tool == ITM_ROD) { - tool = ITM_ROD; - } - else if (tool == ITM_UMBRELLA00) { - tool = ITM_UMBRELLA00; + if (tool == ITM_AXE) { + tool = ITM_AXE; + } else if (tool == ITM_ROD) { + tool = ITM_ROD; + } else if (tool == ITM_UMBRELLA00) { + tool = ITM_UMBRELLA00; + } + + mPlib_SetData2_controller_data_for_title_demo(tool); + angle = get_demo_header(mEv_CheckTitleDemo() - 1, mTD_HEADER_ROTATION); + + player->actor_class.shape_info.rotation.y = angle; + player->actor_class.world.angle.y = angle; } - mPlib_SetData2_controller_data_for_title_demo(tool); - angle = get_demo_header(mEv_CheckTitleDemo() - 1, mTD_HEADER_ROTATION); - - player->actor_class.shape_info.rotation.y = angle; - player->actor_class.world.angle.y = angle; - } - - S_tdemo_frame = 0; + S_tdemo_frame = 0; } static u16 get_tdemo_keydata(int frame) { - /* BUG: this was probably meant to be marked as static */ - u16* pact_data_keydata_pt[mTD_TITLE_DEMO_NUM] = { pact0_key_data, pact1_key_data, pact2_key_data, pact3_key_data, pact4_key_data }; + /* BUG: this was probably meant to be marked as static */ + u16* pact_data_keydata_pt[mTD_TITLE_DEMO_NUM] = { pact0_key_data, pact1_key_data, pact2_key_data, pact3_key_data, + pact4_key_data }; - return pact_data_keydata_pt[mEv_CheckTitleDemo() - 1][frame]; + return pact_data_keydata_pt[mEv_CheckTitleDemo() - 1][frame]; } -#define mTD_KEYDATA_A(d) ((d) & 1) -#define mTD_KEYDATA_B(d) (((d) >> 8) & 1) -#define mTD_KEYDATA_STICKX(d) (((s16)(d) & 0xFE00) / 512) -#define mTD_KEYDATA_STICKY(d) (((s16)((d) << 8) & 0xFE00) / 512) - -/* @nonmatching */ +/* @fakematch? - the weirdness with btn_a needing to be assigned to a u8 then int needs to be investigated */ static void set_player_demo_keydata(int frame) { - u16 keydata0; - u16 keydata1; - int k0_sx; - int k0_sy; - int k1_sx; - int k1_sy; - f32 stick_x; - f32 stick_y; - int btn_a; - int btn_b; - int f0; - int f1; + u16 keydata0; + u16 keydata1; + s8 k0_sx; + s8 k0_sy; + s8 k1_sx; + s8 k1_sy; + f32 stick_x; + f32 stick_y; + u8 tmp_a; + int btn_a; + int btn_b; + int f0; + int f1; - /* convert 60fps framerate to 30fps input */ - f0 = frame / 2; - f1 = f0 + (frame % 2); - - if (f0 != f1 && f1 < 1800) { - keydata0 = get_tdemo_keydata(f0); - keydata1 = get_tdemo_keydata(f1); + /* convert 60fps framerate to 30fps input */ + f0 = frame / 2; + f1 = f0 + (frame % 2); - k0_sx = (s16)(keydata0 & 0xFE00) / 512; - k0_sy = (s16)((keydata0 & 0x00FE) << 8) / 512; - k1_sx = (s16)(keydata1 & 0xFE00) / 512; - k1_sy = (s16)((keydata1 & 0x00FE) << 8) / 512; - - /* blend stick inputs between the current frame & next frame */ - stick_x = ((f32)(s8)k0_sx + (f32)(s8)k1_sx) / 2.0f; - stick_y = ((f32)(s8)k0_sy + (f32)(s8)k1_sy) / 2.0f; - - btn_a = mTD_KEYDATA_A(keydata0); - btn_b = mTD_KEYDATA_B(keydata0); - } - else { - keydata0 = get_tdemo_keydata(f0); - k0_sx = (s16)(keydata0 & 0xFE00) / 512; - k0_sy = (s16)((keydata0 & 0x00FE) << 8) / 512; - - // single line does not make it any better - stick_x = (f32)(s8)k0_sx; - stick_y = (f32)(s8)k0_sy; - - btn_a = keydata0 & 1; - btn_b = (keydata0 >> 8) & 1; - } - mPlib_SetData1_controller_data_for_title_demo(stick_x, stick_y, btn_a, btn_b); + if (f0 != f1 && f1 < 1800) { + keydata0 = get_tdemo_keydata(f0); + keydata1 = get_tdemo_keydata(f1); + + k0_sx = (s16)(keydata0 & 0xFE00) / 512; + k0_sy = (s16)((keydata0 & 0x00FE) << 8) / 512; + k1_sx = (s16)(keydata1 & 0xFE00) / 512; + k1_sy = (s16)((keydata1 & 0x00FE) << 8) / 512; + + /* blend stick inputs between the current frame & next frame */ + stick_x = ((f32)(int)k0_sx + (f32)(int)k1_sx) / 2.0f; + stick_y = ((f32)(int)k0_sy + (f32)(int)k1_sy) / 2.0f; + + tmp_a = keydata0 & 1; + btn_a = tmp_a; + btn_b = (u8)(keydata0 >> 8) & 1; + } else { + keydata0 = get_tdemo_keydata(f0); + k0_sx = ((s16)(keydata0 & 0xFE00)) / 512; + k0_sy = ((s16)((keydata0 & 0x00FE) << 8)) / 512; + + stick_x = (f32)(int)k0_sx; + stick_y = (f32)(int)k0_sy; + + tmp_a = keydata0 & 1; + btn_a = tmp_a; + btn_b = (u8)(keydata0 >> 8) & 1; + } + mPlib_SetData1_controller_data_for_title_demo(btn_a, btn_b, (f32)stick_x, (f32)stick_y); } static void mTD_game_end_init(GAME_PLAY* play) { - play->fb_fade_type = 10; // TODO: enum/define - play->fb_wipe_type = 3; // TODO: enum/define + play->fb_fade_type = 10; // TODO: enum/define + play->fb_wipe_type = 3; // TODO: enum/define - mPlib_request_main_invade_type1(play); - mBGMPsComp_make_ps_wipe(0x521C); // TODO: enum/define + mPlib_request_main_invade_type1(play); + mBGMPsComp_make_ps_wipe(0x521C); // TODO: enum/define } extern void title_demo_move(GAME_PLAY* play) { - if (mEv_CheckTitleDemo() > 0) { - set_player_demo_keydata(S_tdemo_frame); - S_tdemo_frame++; + if (mEv_CheckTitleDemo() > 0) { + set_player_demo_keydata(S_tdemo_frame); + S_tdemo_frame++; - if (S_tdemo_frame >= 3600) { - mTD_game_end_init(play); + if (S_tdemo_frame >= 3600) { + mTD_game_end_init(play); + } } - } } extern void mTD_rtc_set() { - if (S_titledemo_to_play == TRUE) { - S_titledemo_to_play = FALSE; + if (S_titledemo_to_play == TRUE) { + S_titledemo_to_play = FALSE; - if (Common_Get(time.rtc_crashed) == TRUE) { - lbRTC_TimeCopy(Common_GetPointer(time.rtc_time), Common_GetPointer(newly_set_time)); - } - else { - lbRTC_GetTime(Common_GetPointer(time.rtc_time)); - } + if (Common_Get(time.rtc_crashed) == TRUE) { + lbRTC_TimeCopy(Common_GetPointer(time.rtc_time), Common_GetPointer(newly_set_time)); + } else { + lbRTC_GetTime(Common_GetPointer(time.rtc_time)); + } - Common_Set(time.rtc_enabled, TRUE); - mTM_set_season(); - } + Common_Set(time.rtc_enabled, TRUE); + mTM_set_season(); + } } extern void mTD_rtc_reserve() { - S_titledemo_to_play = TRUE; + S_titledemo_to_play = TRUE; } extern int mTD_get_titledemo_no() { - int titledemo_no = S_now_demono; - if (titledemo_no <= 0) { - titledemo_no = 1; - } + int titledemo_no = S_now_demono; + if (titledemo_no <= 0) { + titledemo_no = 1; + } - return titledemo_no - 1; + return titledemo_no - 1; } extern int mTD_tdemo_button_ok_check() { - int res = TRUE; - if (S_tdemo_frame >= 3530) { - res = FALSE; - } - - return res; + int res = TRUE; + if (S_tdemo_frame >= 3530) { + res = FALSE; + } + + return res; } From 96d2bc489db7ac6c97158bcc750f168604bae6c2 Mon Sep 17 00:00:00 2001 From: Reaperoe Date: Sat, 31 Aug 2024 11:52:57 -0400 Subject: [PATCH 149/234] Implement & link ef_pun.c (#411) Includes fixes to ef_halloween_smoke.c and rel_slices.yml --- config/rel_slices.yml | 11 ++++++++--- src/ef_halloween_smoke.c | 2 ++ src/ef_pun.c | 28 ++++++++++++++++++++++++---- 3 files changed, 34 insertions(+), 7 deletions(-) diff --git a/config/rel_slices.yml b/config/rel_slices.yml index 32ffbd0d..d6365d94 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -1172,6 +1172,10 @@ ef_halloween.c: .text: [0x8060D44C, 0x8060D654] .rodata: [0x8064C1C0, 0x8064C1D0] .data: [0x806D2600, 0x806D2618] +ef_halloween_smoke.c: + .text: [0x8060D654, 0x8060D8D8] + .rodata: [0x8064C1D0, 0x8064C1E0] + .data: [0x806D2618, 0x806D2660] ef_hanabi_dummy.c: .text: [0x8060E6D8, 0x8060E9B8] .rodata: [0x8064C2A0, 0x8064C2C0] @@ -1187,6 +1191,10 @@ ef_make_hem.c: .text: [0x806162B0, 0x8061710C] .rodata: [0x8064C818, 0x8064C860] .data: [0x806D3160, 0x806D31B8] +ef_pun.c: + .text: [0x8061A650, 0x8061A824] + .rodata: [0x8064CAB8, 0x8064CAC0] + .data: [0x806D33D8, 0x806D33F0] ef_tent_lamp.c: .text: [0x80622304, 0x8062260C] .rodata: [0x8064CF10, 0x8064CF38] @@ -1290,10 +1298,8 @@ data/npc/model/tex/bea_9.c: .data: [0x806F8F20, 0x806FA140] data/npc/model/tex/bea_10.c: .data: [0x806FA140, 0x806FB360] - data/field/bg/acre/bg_data.c: .data: [0x806FE048, 0x8074B840] - # dataobject.obj files data/field/bg/flower/obj_flower.c: .data: [0x8074FE80, 0x807508C0] @@ -2787,7 +2793,6 @@ data/field/bg/acre/grd_s_t_st1_3/grd_s_t_st1_3.c: .data: [0x80DD5280, 0x80DD61A0] data/field/bg/acre/rom_toudai/rom_toudai.c: .data: [0x80F08520, 0x80F0B020] - # acres # data/field/bg/acre/grd_post_office/grd_post_office.c: # .data: [0x80C5DBA0, 0x80C63408] diff --git a/src/ef_halloween_smoke.c b/src/ef_halloween_smoke.c index 3c512054..482a7fca 100644 --- a/src/ef_halloween_smoke.c +++ b/src/ef_halloween_smoke.c @@ -1,5 +1,7 @@ #include "ef_effect_control.h" +#include "m_common_data.h" + static void eHalloween_Smoke_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1); static void eHalloween_Smoke_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg); static void eHalloween_Smoke_mv(eEC_Effect_c* effect, GAME* game); diff --git a/src/ef_pun.c b/src/ef_pun.c index 0c933b48..dd9c9e46 100644 --- a/src/ef_pun.c +++ b/src/ef_pun.c @@ -1,5 +1,7 @@ #include "ef_effect_control.h" +#include "m_common_data.h" + static void ePun_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1); static void ePun_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg); static void ePun_mv(eEC_Effect_c* effect, GAME* game); @@ -18,17 +20,35 @@ eEC_PROFILE_c iam_ef_pun = { }; static void ePun_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1) { - // TODO + eEC_CLIP->make_effect_proc(eEC_EFFECT_PUN, pos, NULL, game, &angle, item_name, prio, 0, 0); } static void ePun_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg) { - // TODO + s16 var = *(s16*)ct_arg; + effect->effect_specific[0] = var; + effect->timer = 24; } static void ePun_mv(eEC_Effect_c* effect, GAME* game) { - // TODO + eEC_CLIP->set_continious_env_proc(effect, 24, 44); + + if (effect->state == eEC_STATE_CONTINUOUS) { + s16 timer_left = 44 - effect->timer; + + if (timer_left == 0) { + effect->effect_specific[1] = RANDOM(100) & 1; + } + + if (timer_left == 8) { + eEC_CLIP->effect_make_proc(eEC_EFFECT_PUN_YUGE, effect->position, effect->prio, effect->effect_specific[0], game, (u16)effect->item_name, effect->effect_specific[1], 0); + + effect->effect_specific[1] = ++effect->effect_specific[1] & 1; + + eEC_CLIP->effect_make_proc(eEC_EFFECT_PUN_SEKIMEN, effect->position, effect->prio, effect->effect_specific[0], game, (u16)effect->item_name, 0, 0); + } + } } static void ePun_dw(eEC_Effect_c* effect, GAME* game) { - // TODO + } From ae834e85fc6c073509469e395a178d785ac62498 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Sat, 31 Aug 2024 16:16:47 -0400 Subject: [PATCH 150/234] Fix ef_halloween_smoke data ordering --- src/ef_halloween_smoke.c | 94 ++++++++++++++++++++-------------------- src/ef_pun_sekimen.c | 36 +++++++++++++-- 2 files changed, 79 insertions(+), 51 deletions(-) diff --git a/src/ef_halloween_smoke.c b/src/ef_halloween_smoke.c index 482a7fca..f081ca7e 100644 --- a/src/ef_halloween_smoke.c +++ b/src/ef_halloween_smoke.c @@ -2,47 +2,6 @@ #include "m_common_data.h" -static void eHalloween_Smoke_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1); -static void eHalloween_Smoke_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg); -static void eHalloween_Smoke_mv(eEC_Effect_c* effect, GAME* game); -static void eHalloween_Smoke_dw(eEC_Effect_c* effect, GAME* game); - -eEC_PROFILE_c iam_ef_halloween_smoke = { - // clang-format off - &eHalloween_Smoke_init, - &eHalloween_Smoke_ct, - &eHalloween_Smoke_mv, - &eHalloween_Smoke_dw, - eEC_IGNORE_DEATH, - eEC_NO_CHILD_ID, - eEC_DEFAULT_DEATH_DIST, - // clang-format on -}; - -static void eHalloween_Smoke_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1) { - eEC_CLIP->make_effect_proc(eEC_EFFECT_HALLOWEEN_SMOKE, pos, NULL, game, &angle, item_name, prio, arg0, arg1); -} - -static void eHalloween_Smoke_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg) { - s16 angle = *(s16*)ct_arg; - - effect->timer = 18; - - (effect->scale).x= (effect->scale).y= (effect->scale).z = 0.01f; - - (effect->velocity).y = 0.25f; - (effect->velocity).x = 0.0f * sin_s(angle); - (effect->velocity).z = 0.0f * cos_s(angle); - - (effect->acceleration).y = 0.075f; - (effect->acceleration).x = (effect->acceleration).z = 0.0f; -} - -static void eHalloween_Smoke_mv(eEC_Effect_c* effect, GAME* game) { - xyz_t_add (&effect->velocity, &effect->acceleration, &effect->velocity); - xyz_t_add (&effect->position, &effect->velocity, &effect->position); -} - extern Gfx ef_haro01_00_modelT[]; extern u8 ef_dust01_0[]; extern u8 ef_dust01_1[]; @@ -84,20 +43,61 @@ static u8 eHalloween_prim_f[] = { }; // clang-format on +static void eHalloween_Smoke_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1); +static void eHalloween_Smoke_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg); +static void eHalloween_Smoke_mv(eEC_Effect_c* effect, GAME* game); +static void eHalloween_Smoke_dw(eEC_Effect_c* effect, GAME* game); + +eEC_PROFILE_c iam_ef_halloween_smoke = { + // clang-format off + &eHalloween_Smoke_init, + &eHalloween_Smoke_ct, + &eHalloween_Smoke_mv, + &eHalloween_Smoke_dw, + eEC_IGNORE_DEATH, + eEC_NO_CHILD_ID, + eEC_DEFAULT_DEATH_DIST, + // clang-format on +}; + +static void eHalloween_Smoke_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1) { + eEC_CLIP->make_effect_proc(eEC_EFFECT_HALLOWEEN_SMOKE, pos, NULL, game, &angle, item_name, prio, arg0, arg1); +} + +static void eHalloween_Smoke_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg) { + s16 angle = *(s16*)ct_arg; + + effect->timer = 18; + + (effect->scale).x = (effect->scale).y = (effect->scale).z = 0.01f; + + (effect->velocity).y = 0.25f; + (effect->velocity).x = 0.0f * sin_s(angle); + (effect->velocity).z = 0.0f * cos_s(angle); + + (effect->acceleration).y = 0.075f; + (effect->acceleration).x = (effect->acceleration).z = 0.0f; +} + +static void eHalloween_Smoke_mv(eEC_Effect_c* effect, GAME* game) { + xyz_t_add(&effect->velocity, &effect->acceleration, &effect->velocity); + xyz_t_add(&effect->position, &effect->velocity, &effect->position); +} + static void eHalloween_Smoke_dw(eEC_Effect_c* effect, GAME* game) { s16 frame = 18 - effect->timer; int tex_idx = frame >> 1; int tile_idx0 = eHalloween_2tile_texture_idx[tex_idx][0]; int tile_idx1 = eHalloween_2tile_texture_idx[tex_idx][1]; - + OPEN_DISP(game->graph); - + eEC_CLIP->auto_matrix_xlu_proc(game, &effect->position, &effect->scale); - - gSPSegment(NEXT_POLY_XLU_DISP, G_MWO_SEGMENT_8, eHalloween_texture_table[tile_idx0]); - gSPSegment(NEXT_POLY_XLU_DISP, G_MWO_SEGMENT_9, eHalloween_texture_table[tile_idx1]); + + gSPSegment(NEXT_POLY_XLU_DISP, ANIME_1_TXT_SEG, eHalloween_texture_table[tile_idx0]); + gSPSegment(NEXT_POLY_XLU_DISP, ANIME_2_TXT_SEG, eHalloween_texture_table[tile_idx1]); gDPSetPrimColor(NEXT_POLY_XLU_DISP, 0, eHalloween_prim_f[tex_idx], 200, 0, 255, 120); gSPDisplayList(NEXT_POLY_XLU_DISP, ef_haro01_00_modelT); - + CLOSE_DISP(game->graph); } diff --git a/src/ef_pun_sekimen.c b/src/ef_pun_sekimen.c index 0235184e..28071528 100644 --- a/src/ef_pun_sekimen.c +++ b/src/ef_pun_sekimen.c @@ -1,5 +1,7 @@ #include "ef_effect_control.h" +#include "m_common_data.h" + static void ePunRed_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1); static void ePunRed_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg); static void ePunRed_mv(eEC_Effect_c* effect, GAME* game); @@ -18,17 +20,43 @@ eEC_PROFILE_c iam_ef_pun_sekimen = { }; static void ePunRed_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1) { - // TODO + xyz_t ofs; + + ofs.x = 0.0f; + ofs.y = -2.0f; + ofs.z = 25.0f; + eEC_CLIP->make_effect_proc(eEC_EFFECT_PUN_SEKIMEN, pos, &ofs, game, NULL, item_name, prio, 0, 0); } static void ePunRed_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg) { - // TODO + effect->scale.x = 0.0105f; + effect->scale.y = 0.0105f; + effect->scale.z = 0.0105f; + effect->timer = 16; } static void ePunRed_mv(eEC_Effect_c* effect, GAME* game) { - // TODO + // nothing } +extern Gfx ef_pun01_01_modelT[]; + static void ePunRed_dw(eEC_Effect_c* effect, GAME* game) { - // TODO + int a; + xyz_t* scale; + s16 now_timer; + + scale = &effect->scale; + + now_timer = 16 - effect->timer; + a = (u8)eEC_CLIP->calc_adjust_proc(now_timer, 8, 16, 150.0f, 0.0f); + scale->z = scale->y = scale->x = eEC_CLIP->calc_adjust_proc(now_timer, 0, 16, 0.0105f, 0.0189f); + + OPEN_DISP(game->graph); + + eEC_CLIP->auto_matrix_xlu_offset_proc(game, &effect->position, scale, &effect->offset); + gDPSetPrimColor(NEXT_POLY_XLU_DISP, 0, 255, 255, 0, 0, a); + gSPDisplayList(NEXT_POLY_XLU_DISP, ef_pun01_01_modelT); + + CLOSE_DISP(game->graph); } From ed34c2b50d2b25465b2d6a125638be6f450a182d Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Sat, 31 Aug 2024 16:20:57 -0400 Subject: [PATCH 151/234] Link ef_pun_sekimen Co-Authored-By: Reaperoe --- config/rel_slices.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/config/rel_slices.yml b/config/rel_slices.yml index d6365d94..0ac970a7 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -1195,6 +1195,10 @@ ef_pun.c: .text: [0x8061A650, 0x8061A824] .rodata: [0x8064CAB8, 0x8064CAC0] .data: [0x806D33D8, 0x806D33F0] +ef_pun_sekimen.c: + .text: [0x8061A824, 0x8061AA20] + .rodata: [0x8064CAC0, 0x8064CAD8] + .data: [0x806D33F0, 0x806D3408] ef_tent_lamp.c: .text: [0x80622304, 0x8062260C] .rodata: [0x8064CF10, 0x8064CF38] From 4dfdb142d94bb76446aa5380ce157ebe31401ecb Mon Sep 17 00:00:00 2001 From: Prakxo Date: Sat, 31 Aug 2024 22:38:21 +0200 Subject: [PATCH 152/234] fixes --- include/m_player.h | 18 +++++++++++++++++- src/m_player.c | 2 +- src/m_player_common.c_inc | 2 +- src/m_player_main_putin_item.c_inc | 2 +- src/m_player_main_takeout_item.c_inc | 2 +- src/m_player_main_wait.c_inc | 20 ++++++++++---------- 6 files changed, 31 insertions(+), 15 deletions(-) diff --git a/include/m_player.h b/include/m_player.h index dd19096a..7a5f62ff 100644 --- a/include/m_player.h +++ b/include/m_player.h @@ -583,7 +583,7 @@ enum { (mPlayer_ITEM_IS_UMBRELLA(kind) || mPlayer_ITEM_IS_BALLOON(kind) || mPlayer_ITEM_IS_WINDMILL(kind) || \ mPlayer_ITEM_IS_FAN(kind)) -#define mPlayer_ITEM_KIND_VALID(kind) ((kind) >= 0 && kind < mPlayer_ITEM_KIND_NUM) +#define mPlayer_ITEM_KIND_VALID(kind) (mPlayer_ITEM_KIND_CHECK(kind, 0, mPlayer_ITEM_KIND_NUM)) enum { mPlayer_ITEM_DATA_AXE, // model @@ -1719,6 +1719,19 @@ typedef struct player_main_putaway_uki_s { f32 unk0; } mPlayer_main_putaway_uki_c; +typedef struct player_main_balloon_s { + int balloon_shape_type; +} mPlayer_main_balloon_c; + +typedef struct player_main_turn_dash_s { + s16 target_angle_y; +} mPlayer_main_turn_dash_c; + +typedef struct player_main_fall_s { + f32 morph_speed; + int flags; +} mPlayer_main_turn_fall_c; + typedef union { mPlayer_main_intro_c intro; mPlayer_main_return_demo_c return_demo; @@ -1762,6 +1775,9 @@ typedef union { mPlayer_main_demo_getoff_boat_standup_c demo_getoff_boat_standup; mPlayer_main_uki_c uki; mPlayer_main_putaway_uki_c putaway_uki; + mPlayer_main_balloon_c balloon; + mPlayer_main_turn_dash_c turn_dash; + mPlayer_main_turn_fall_c fall; u8 force_size[72]; // TEMP } mPlayer_main_data; diff --git a/src/m_player.c b/src/m_player.c index 08c6527b..ce2df543 100644 --- a/src/m_player.c +++ b/src/m_player.c @@ -33,7 +33,7 @@ static int Player_actor_Movement_Base_Braking_common(ACTOR* actorx, f32 brake_am static int Player_actor_Movement_Base_Braking(ACTOR* actorx); static void Player_actor_Movement_Base_Stop(ACTOR* actorx, int use_position_speed_y); static int Player_actor_CulcAnimation_Base2(ACTOR* actorx, f32* last_anim0_current_frame_p); -static int Player_actor_Check_AnimationFrame_PerfectEquel(ACTOR* actorx, f32 frame); +static int Player_actor_Check_AnimationFrame_PerfectEquel(ACTOR* actorx, GAME* game, f32 frame); static int Player_actor_Check_AnimationFrame(cKF_FrameControl_c* fc_p, f32 target_frame); static void Player_actor_set_eye_pattern(ACTOR* actorx, int idx); static void Player_actor_set_eye_pattern_normal(ACTOR* actorx); diff --git a/src/m_player_common.c_inc b/src/m_player_common.c_inc index 24e4b710..a9858861 100644 --- a/src/m_player_common.c_inc +++ b/src/m_player_common.c_inc @@ -2299,7 +2299,7 @@ static void Player_actor_putin_furniture(GAME* game, int slot, mActor_name_t ite } } -static int Player_actor_Check_AnimationFrame_PerfectEquel(ACTOR* actorx, f32 frame) { +static int Player_actor_Check_AnimationFrame_PerfectEquel(ACTOR* actorx, GAME* game, f32 frame) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; cKF_FrameControl_c* fc_p = &kf0_p->frame_control; diff --git a/src/m_player_main_putin_item.c_inc b/src/m_player_main_putin_item.c_inc index e2f6fba7..647b6100 100644 --- a/src/m_player_main_putin_item.c_inc +++ b/src/m_player_main_putin_item.c_inc @@ -89,7 +89,7 @@ static void Player_actor_SetItemScale_Putin_item(ACTOR* actorx) { } static void Player_actor_SearchAnimation_Putin_item(ACTOR* actorx, GAME* game, f32 frame) { - if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE) { + if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, game, frame) == FALSE) { Player_actor_Set_FootMark_Base1(actorx, game, FALSE, FALSE); } } diff --git a/src/m_player_main_takeout_item.c_inc b/src/m_player_main_takeout_item.c_inc index e0cad276..bc74782c 100644 --- a/src/m_player_main_takeout_item.c_inc +++ b/src/m_player_main_takeout_item.c_inc @@ -63,7 +63,7 @@ static void Player_actor_ObjCheck_Takeout_item(ACTOR* actorx, GAME* game) { } static void Player_actor_SearchAnimation_Takeout_item(ACTOR* actorx, GAME* game, f32 frame) { - if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE) { + if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, game, frame) == FALSE) { Player_actor_Set_FootMark_Base1(actorx, game, FALSE, FALSE); } } diff --git a/src/m_player_main_wait.c_inc b/src/m_player_main_wait.c_inc index 8e31c9eb..5aa0a8ad 100644 --- a/src/m_player_main_wait.c_inc +++ b/src/m_player_main_wait.c_inc @@ -16,7 +16,7 @@ static int Player_actor_request_main_wait_all(GAME* game, f32 morph_speed, f32 _ } static void Player_actor_request_main_wait_from_submenu(ACTOR* actor, GAME* game) { - Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, 31); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_31); } static void Player_actor_setup_main_Wait(ACTOR* actor, GAME* game) { @@ -76,29 +76,29 @@ static void Player_actor_BGcheck_Wait(ACTOR* actor) { static void Player_actor_request_proc_index_fromWait(ACTOR* actor, GAME* game) { if (!actor->bg_collision_check.result.on_ground) { - Player_actor_request_main_fall_all(game, -5.0f, 1, 1); + Player_actor_request_main_fall_all(game, -5.0f, 1, mPlayer_REQUEST_PRIORITY_1); } - Player_actor_CheckAndRequest_main_axe_all(game, 4); + Player_actor_CheckAndRequest_main_axe_all(game, mPlayer_REQUEST_PRIORITY_4); if (Player_actor_CheckController_forNet(game) != 0) { - Player_actor_request_main_ready_net(game, 4); + Player_actor_request_main_ready_net(game, mPlayer_REQUEST_PRIORITY_4); } if (Player_actor_CheckController_forRod(game) != 0) { - Player_actor_request_main_ready_rod(game, 4); + Player_actor_request_main_ready_rod(game, mPlayer_REQUEST_PRIORITY_4); } - Player_actor_CheckAndRequest_main_scoop_all(game, 4); - Player_actor_CheckAndRequest_main_umbrella_all(game, 4); - Player_actor_CheckAndRequest_main_fan_all(game, 1, 1, 4); + Player_actor_CheckAndRequest_main_scoop_all(game, mPlayer_REQUEST_PRIORITY_4); + Player_actor_CheckAndRequest_main_umbrella_all(game, mPlayer_REQUEST_PRIORITY_4); + Player_actor_CheckAndRequest_main_fan_all(game, 1, 1, mPlayer_REQUEST_PRIORITY_4); Player_actor_CheckAndRequest_main_shake_tree_all(game); if ((Player_actor_GetController_move_percentX()) || (Player_actor_GetController_move_percentY())) { - Player_actor_request_main_walk_all(game, NULL, -5.0f, 4, 1); + Player_actor_request_main_walk_all(game, NULL, -5.0f, 4, mPlayer_REQUEST_PRIORITY_1); } Player_actor_CheckAndRequest_main_pickup_all(game); - Player_actor_CheckAndRequest_main_radio_exercise_all(game, 0); + Player_actor_CheckAndRequest_main_radio_exercise_all(game, mPlayer_REQUEST_PRIORITY_0); } static void Player_actor_main_Wait(ACTOR* actor, GAME* game) { From 72a48a9008377431656830cf61143b68f4c221ac Mon Sep 17 00:00:00 2001 From: Prakxo Date: Sat, 31 Aug 2024 22:49:16 +0200 Subject: [PATCH 153/234] match m_player_main_walk --- src/m_player_main_wait.c_inc | 2 +- src/m_player_main_walk.c_inc | 286 +++++++++++++++++++++++++++++++++++ 2 files changed, 287 insertions(+), 1 deletion(-) diff --git a/src/m_player_main_wait.c_inc b/src/m_player_main_wait.c_inc index 5aa0a8ad..c523a72d 100644 --- a/src/m_player_main_wait.c_inc +++ b/src/m_player_main_wait.c_inc @@ -37,7 +37,7 @@ static void Player_actor_setup_main_Wait(ACTOR* actor, GAME* game) { absspeed = ABS(speed); - Player_actor_SetupItem_Base1(actor, 0, -absspeed, &anim_idx, &part_table_idx); + Player_actor_SetupItem_Base1(actor, mPlayer_ANIM_WAIT1, -absspeed, &anim_idx, &part_table_idx); Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_WAIT1, anim_idx, 1.0f, 1.0f, 0.5f, speed, part_table_idx); diff --git a/src/m_player_main_walk.c_inc b/src/m_player_main_walk.c_inc index e69de29b..97f90140 100644 --- a/src/m_player_main_walk.c_inc +++ b/src/m_player_main_walk.c_inc @@ -0,0 +1,286 @@ +static int Player_actor_request_main_walk_all(GAME* game, xyz_t* pos, f32 speed, int flags, int priority) { + PLAYER_ACTOR* player; + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_WALK, priority)) { + player = GET_PLAYER_ACTOR_GAME(game); + + if (flags & 2) { + if (pos != NULL) { + player->requested_main_index_data.walk.pos = *pos; + } else { + player->requested_main_index_data.walk.pos.x = 0.0f; + player->requested_main_index_data.walk.pos.y = 0.0f; + player->requested_main_index_data.walk.pos.z = 0.0f; + } + } + + player->requested_main_index_data.walk.morph_speed = speed; + player->requested_main_index_data.walk.flags = flags; + + Player_actor_request_main_index(game, mPlayer_INDEX_WALK, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Walk_common(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int flags = player->requested_main_index_data.walk.flags; + int anim_idx; + int part_table_idx; + f32 speed = player->requested_main_index_data.walk.morph_speed; + f32 absspeed; + f32 frame; + + if (flags & 2) { + actor->world.position = player->requested_main_index_data.walk.pos; + } + + if (player->requested_main_index_data.walk.flags & 4) { + frame = 1.0f; + } else { + frame = player->keyframe0.frame_control.current_frame; + } + + absspeed = ABS(speed); + + Player_actor_SetupItem_Base3(actor, mPlayer_ANIM_WALK1, -absspeed, &anim_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_WALK1, anim_idx, frame, 1.0f, 0.5f, speed, + part_table_idx); + + if (flags & 1) { + Player_actor_SetEffect_forTakeout_item(actor, game); + } + + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_setup_main_Walk(ACTOR* actor, GAME* game) { + Player_actor_setup_main_Walk_common(actor, game); +} + +static void Player_actor_settle_main_Walk(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + switch (player->requested_main_index) { + case mPlayer_INDEX_WAIT: + + if (2.0f < player->keyframe0.frame_control.current_frame && + player->keyframe0.frame_control.current_frame < 9.0f || + 10.0f < player->keyframe0.frame_control.current_frame) { + Player_actor_sound_FootStep2(actor); + } + break; + } +} + +static void Player_actor_CulcAnimation_Walk(ACTOR* actor, f32* frame_calc, f32 frame) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + f32 sp = (actor->speed * frame) / 7.5f; + + sp = sqrtf(sp); + sp = 0.6f * sp; + + if (actor->bg_collision_check.result.hit_wall_count == 2) { + if (!(actor->bg_collision_check.result.hit_wall & mCoBG_HIT_WALL_RIGHT) || + !(actor->bg_collision_check.result.hit_wall & mCoBG_HIT_WALL_LEFT)) + sp = 0.22f; + } else { + if (actor->bg_collision_check.result.hit_wall_count == 1) { + f32 mod = sin_s(actor->bg_collision_check.wall_info[0].angleY - actor->world.angle.y); + + mod = ABS(mod); + + sp *= sqrtf(mod); + } + + if (sp < 0.22f) { + sp = 0.22f; + } + } + + player->keyframe0.frame_control.speed = sp; + player->keyframe1.frame_control.speed = sp; + Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_SetEffect_Walk(ACTOR* actor, GAME* game, f32 left_target_frame, f32 right_target_frame) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + cKF_FrameControl_c* fc = &player->keyframe0.frame_control; + + if (Player_actor_Check_AnimationFrame(fc, left_target_frame) != FALSE) { + Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_WALK_ASIMOTO, player->left_foot_pos, 2, + player->left_foot_angle.y, game, 0xFFFF, + actor->bg_collision_check.result.unit_attribute, 0); + + } else if (Player_actor_Check_AnimationFrame(fc, right_target_frame) != FALSE) { + Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_WALK_ASIMOTO, player->right_foot_pos, 2, + player->right_foot_angle.y, game, 0xFFFF, + actor->bg_collision_check.result.unit_attribute, 0); + } +} + +static void Player_actor_SearchAnimation_Walk(ACTOR* actor, GAME* game, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, game, frame)) { + Player_actor_Set_FootMark_Base1(actor, game, FALSE, FALSE); + Player_actor_SetEffect_Walk(actor, game, 1.0f, 9.0f); + } +} + +static void Player_actor_Movement_Walk(ACTOR* actor, GAME* game, f32* frame) { + f32 movePR = Player_actor_GetController_move_percentR(); + s16 angle = Player_actor_Get_ControllerAngle(game); + f32 mod; + s16 target = actor->world.angle.y; + f32 over_norm; + f32 cos; + f32 old_speed; + int angle2; + int angle3; + + if (movePR >= 1.0f) { + mod = 0.5f; + } else { + if (movePR <= 0.05f) { + mod = 0.1f; + } else { + mod = 0.1f + (0.5157895f * (movePR - 0.05f)); + } + } + + add_calc_short_angle2(&target, angle, 1.0f - sqrtf(1.0f - mod), 2500, 50); + + actor->world.angle.y = actor->shape_info.rotation.y = target; + + over_norm = Player_actor_Culc_over_speed_normalize_NoneZero(actor, &actor->world.position); + + if (Player_actor_CheckController_forDush()) { + movePR = (7.5f * movePR) / over_norm; + } else { + movePR = (4.875f * movePR) / over_norm; + } + + angle3 = Player_actor_Get_ControllerAngle(game) - actor->world.angle.y; + + angle2 = ABS(angle3); + + if (angle2 > 0x8000) { + angle2 = 0x10000 - angle2; + } + + cos = cos_s(angle2); + + if (cos <= 0.0f) { + movePR = 0.0f; + } else { + movePR *= cos; + } + + old_speed = actor->speed; + if (old_speed != movePR) { + if (old_speed < movePR) { + old_speed += 0.60899997f; + if (old_speed > movePR) { + old_speed = movePR; + } + } else if (old_speed > movePR) { + old_speed -= 0.32625002f; + if (old_speed < movePR) { + old_speed = movePR; + } + } + actor->speed = old_speed; + } + + if (over_norm == 1.0f) { + xyz_t pos = actor->world.position; + f32 sp_norm; + f32 sin; + f32 cos; + s16 angle = actor->world.angle.y; + f32 mod; + + sin = 0.5f * old_speed * sin_s(angle); + cos = 0.5f * old_speed * cos_s(angle); + + pos.x += sin; + pos.z += cos; + + sp_norm = Player_actor_Culc_over_speed_normalize_NoneZero(actor, &pos); + + if (sp_norm != 1.0f) { + over_norm = sp_norm; + actor->speed /= sp_norm; + } + } + + *frame = over_norm; + Player_actor_Movement_Base(actor); +} + +static void Player_actor_ObjCheck_Walk(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Walk(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_request_proc_index_fromWalk(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + f32 speed; + f32 percent_x; + f32 percent_y; + + Player_actor_Set_ScrollDemo_forWade(actor, game, mEv_CheckTitleDemo() <= 0); + + if (!actor->bg_collision_check.result.on_ground) { + Player_actor_request_main_fall_all(game, -5.0f, 1, mPlayer_REQUEST_PRIORITY_1); + } + + Player_actor_CheckAndRequest_main_axe_all(game, mPlayer_REQUEST_PRIORITY_4); + + if (Player_actor_CheckController_forNet(game) != 0) { + Player_actor_request_main_ready_net(game, mPlayer_REQUEST_PRIORITY_4); + } + + if (Player_actor_CheckController_forRod(game) != 0) { + Player_actor_request_main_ready_rod(game, mPlayer_REQUEST_PRIORITY_4); + } + + Player_actor_CheckAndRequest_main_scoop_all(game, mPlayer_REQUEST_PRIORITY_4); + Player_actor_CheckAndRequest_main_umbrella_all(game, mPlayer_REQUEST_PRIORITY_4); + Player_actor_CheckAndRequest_main_fan_all(game, 1, 1, mPlayer_REQUEST_PRIORITY_4); + Player_actor_CheckAndRequest_main_shake_tree_all(game); + Player_actor_CheckAndRequest_main_pickup_all(game); + + speed = actor->speed; + + if ((player->keyframe0.frame_control.speed * player->keyframe0.frame_control.speed) / 0.048f >= 3.525f) { + Player_actor_request_main_run_all(game, -5.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } + + percent_x = Player_actor_GetController_move_percentX(); + percent_y = Player_actor_GetController_move_percentY(); + + if (speed == 0.0f && percent_x == 0.0f && percent_y == 0.0f) { + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } +} + +static void Player_actor_main_Walk(ACTOR* actor, GAME* game) { + f32 frame; + f32 calc_frame; + + Player_actor_Movement_Walk(actor, game, &frame); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_CulcAnimation_Walk(actor, &calc_frame, frame); + Player_actor_SearchAnimation_Walk(actor, game, calc_frame); + Player_actor_set_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Walk(actor, game); + Player_actor_BGcheck_Walk(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromWalk(actor, game); +} From 9b211fdfd3d52a78934fac732c18cacd7679e562 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Sat, 31 Aug 2024 22:58:22 +0200 Subject: [PATCH 154/234] match m_player_main_run --- src/m_player_main_run.c_inc | 123 ++++++++++++++++++++++++++++++++++++ 1 file changed, 123 insertions(+) diff --git a/src/m_player_main_run.c_inc b/src/m_player_main_run.c_inc index e69de29b..9676f4f8 100644 --- a/src/m_player_main_run.c_inc +++ b/src/m_player_main_run.c_inc @@ -0,0 +1,123 @@ +static int Player_actor_request_main_run_all(GAME* game, f32 speed, int flags, int priority) { + PLAYER_ACTOR* player; + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_RUN, priority)) { + player = GET_PLAYER_ACTOR_GAME(game); + Player_actor_request_main_index(game, mPlayer_INDEX_RUN, priority); + + player->requested_main_index_data.run.morph_speed = speed; + player->requested_main_index_data.run.flags = flags; + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Run_common(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int flags = player->requested_main_index_data.run.flags; + int anim_idx; + int part_table_idx; + f32 speed = player->requested_main_index_data.run.morph_speed; + f32 absspeed; + f32 frame = player->keyframe0.frame_control.current_frame; + + absspeed = ABS(speed); + + Player_actor_SetupItem_Base3(actor, mPlayer_ANIM_RUN1, -absspeed, &anim_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_RUN1, anim_idx, frame, 1.0f, 0.5f, speed, part_table_idx); + + if (flags & 1) { + Player_actor_SetEffect_forTakeout_item(actor, game); + } + + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_setup_main_Run(ACTOR* actor, GAME* game) { + Player_actor_setup_main_Run_common(actor, game); +} + +static void Player_actor_CulcAnimation_Run(ACTOR* actor, f32* frame_calc, f32 frame) { + Player_actor_CulcAnimation_Walk(actor, frame_calc, frame); +} + +static void Player_actor_SetEffect_Run(ACTOR* actor, GAME* game, f32 left_target_frame, f32 right_target_frame) { + Player_actor_SetEffect_Walk(actor, game, left_target_frame, right_target_frame); +} + +static void Player_actor_SearchAnimation_Run(ACTOR* actor, GAME* game, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, game, frame)) { + Player_actor_Set_FootMark_Base1(actor, game, FALSE, FALSE); + Player_actor_SetEffect_Walk(actor, game, 1.0f, 9.0f); + } +} + +static void Player_actor_Movement_Run(ACTOR* actor, GAME* game, f32*) { + Player_actor_Movement_Walk(actor, game); +} + +static void Player_actor_ObjCheck_Run(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Run(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_request_proc_index_fromRun_common(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + f32 speed; + + Player_actor_Set_ScrollDemo_forWade(actor, game, mEv_CheckTitleDemo() <= 0); + + if (!actor->bg_collision_check.result.on_ground) { + Player_actor_request_main_fall_all(game, -5.0f, 1, mPlayer_REQUEST_PRIORITY_1); + } + + Player_actor_CheckAndRequest_main_axe_all(game, mPlayer_REQUEST_PRIORITY_4); + + if (Player_actor_CheckController_forNet(game) != 0) { + Player_actor_request_main_ready_net(game, mPlayer_REQUEST_PRIORITY_4); + } + + if (Player_actor_CheckController_forRod(game) != 0) { + Player_actor_request_main_ready_rod(game, mPlayer_REQUEST_PRIORITY_4); + } + + Player_actor_CheckAndRequest_main_scoop_all(game, mPlayer_REQUEST_PRIORITY_4); + Player_actor_CheckAndRequest_main_umbrella_all(game, mPlayer_REQUEST_PRIORITY_4); + Player_actor_CheckAndRequest_main_fan_all(game, 1, 1, mPlayer_REQUEST_PRIORITY_4); + Player_actor_CheckAndRequest_main_shake_tree_all(game); + Player_actor_CheckAndRequest_main_pickup_all(game); + + speed = (player->keyframe0.frame_control.speed * player->keyframe0.frame_control.speed) / 0.048f; + + if (speed < 3.525f) { + Player_actor_request_main_walk_all(game, NULL, -5.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } + + if (speed >= 4.875f) { + Player_actor_request_main_dash_all(game, -5.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } +} + +static void Player_actor_request_proc_index_fromRun(ACTOR* actor, GAME* game) { + Player_actor_request_proc_index_fromRun_common(actor, game); +} + +static void Player_actor_main_Run(ACTOR* actor, GAME* game) { + f32 frame; + f32 frame_calc; + + Player_actor_Movement_Run(actor, game, &frame); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_CulcAnimation_Run(actor, &frame_calc, frame); + Player_actor_SearchAnimation_Run(actor, game, frame_calc); + Player_actor_set_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Run(actor, game); + Player_actor_BGcheck_Run(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromRun(actor, game); +} From 5606ebc27a55d6915abff3d51da64b462d688fe5 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Sat, 31 Aug 2024 23:06:09 +0200 Subject: [PATCH 155/234] match m_player_main_dash --- src/m_player_main_dash.c_inc | 207 +++++++++++++++++++++++++++++++++++ src/m_player_main_run.c_inc | 4 +- 2 files changed, 209 insertions(+), 2 deletions(-) diff --git a/src/m_player_main_dash.c_inc b/src/m_player_main_dash.c_inc index e69de29b..d7948a56 100644 --- a/src/m_player_main_dash.c_inc +++ b/src/m_player_main_dash.c_inc @@ -0,0 +1,207 @@ +static int Player_actor_request_main_dash_all(GAME* game, f32 speed, int flags, int priority) { + PLAYER_ACTOR* player; + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_DASH, priority)) { + player = GET_PLAYER_ACTOR_GAME(game); + Player_actor_request_main_index(game, mPlayer_INDEX_DASH, priority); + + player->requested_main_index_data.dash.morph_speed = speed; + player->requested_main_index_data.dash.flags = flags; + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Dash(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int flags = player->requested_main_index_data.dash.flags; + int anim_idx; + int part_table_idx; + f32 speed = player->requested_main_index_data.dash.morph_speed; + f32 absspeed; + f32 frame = player->keyframe0.frame_control.current_frame; + + absspeed = ABS(speed); + + Player_actor_SetupItem_Base3(actor, mPlayer_ANIM_DASH1, -absspeed, &anim_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_DASH1, anim_idx, frame, 1.0f, 0.5f, speed, + part_table_idx); + + if (flags & 1) { + Player_actor_SetEffect_forTakeout_item(actor, game); + } + + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_CulcAnimation_Dash(ACTOR* actor, f32* frame_calc, f32 frame) { + Player_actor_CulcAnimation_Run(actor, frame_calc, frame); +} + +static int Player_actor_SetEffectRemoveFlower_Dash(ACTOR* actor, GAME* game, s16 angle) { + if (RANDOM(4) == 0) { + xyz_t* actor_pos = &actor->world.position; + mActor_name_t* name_p = mFI_GetUnitFG(*actor_pos); + + if (name_p != NULL) { + mActor_name_t name = *name_p; + + if ((IS_ITEM_FLOWER(name) ? TRUE : FALSE)) { + xyz_t pos; + if (mFI_Wpos2UtCenterWpos(&pos, *actor_pos)) { + pos.y = mCoBG_GetBgY_OnlyCenter_FromWpos2(pos, 0.0f); + Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_HANATIRI, pos, 2, angle, game, 0xFFFF, + (s16)name, 0); + + if (Common_Get(clip).bg_item_clip != NULL) { + if (Common_Get(clip).bg_item_clip->fade_entry_proc != NULL) { + Common_Get(clip).bg_item_clip->fade_entry_proc(name, actor_pos); + } + } + mISL_SetNowPlayerAction(mISL_PLAYER_ACTION_TRAMPLE_FLOWER); + mISL_SetNowPlayerAction(mISL_PLAYER_ACTION_TRAMPLE_ALL_FLOWERS); + + return TRUE; + } + } + } + } + return FALSE; +} + +static void Player_actor_SetEffect_Dash(ACTOR* actor, GAME* game, f32 left_target_frame, f32 right_target_frame) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + cKF_FrameControl_c* fc = &player->keyframe0.frame_control; + + if (Player_actor_Check_AnimationFrame(fc, left_target_frame) != FALSE) { + if (!Player_actor_SetEffectRemoveFlower_Dash(actor, game, player->left_foot_angle.y)) { + Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_DASH_ASIMOTO, player->left_foot_pos, 2, + player->left_foot_angle.y, game, 0xFFFF, + actor->bg_collision_check.result.unit_attribute, 0); + } + } else if (Player_actor_Check_AnimationFrame(fc, right_target_frame) != FALSE) { + if (!Player_actor_SetEffectRemoveFlower_Dash(actor, game, player->right_foot_angle.y)) { + Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_DASH_ASIMOTO, player->right_foot_pos, 2, + player->right_foot_angle.y, game, 0xFFFF, + actor->bg_collision_check.result.unit_attribute, 0); + } + } +} + +static void Player_actor_SearchAnimation_Dash(ACTOR* actor, GAME* game, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, game, frame)) { + Player_actor_Set_FootMark_Base1(actor, game, FALSE, FALSE); + Player_actor_SetEffect_Dash(actor, game, 1.0f, 9.0f); + } +} + +static void Player_actor_Movement_Dash(ACTOR* actor, GAME* game, f32* frame) { + Player_actor_Movement_Run(actor, game, frame); +} + +static void Player_actor_ObjCheck_Dash(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Dash(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static int Player_actor_Check_FlatPlace(ACTOR* actor) { + static xy_t offset[] = { + {0.0f, 0.0f}, {20.0f, 0.0f}, {-20.0f, 0.0f}, {0.0f, 28.284271f}, + {20.0f, 28.284271f}, {-20.0f, 28.284271f}, {0.0f, 56.568542f}, {20.0f, 56.568542f}, + {-20, 56.568542f}, {0.0f, 84.85281f}, {20.0f, 84.85281f}, {-20.0f, 84.85281f}, + }; + xyz_t norm; + s16 angle = actor->shape_info.rotation.y; + xyz_t pos = actor->world.position; + f32 sin = sin_s(angle); + f32 cos = cos_s(angle); + int i; + + for (i = 0; i < 12; i++) { + f32 x = offset[i].x; + f32 y = offset[i].y; + + pos.x = actor->world.position.x + (y * sin) + (x * cos); + pos.z = actor->world.position.z + (y * cos) - (x * sin); + + mCoBG_GetBgNorm_FromWpos(&norm, pos); + + if (norm.x != 0.0f || norm.z != 0.0f) { + return 0; + } + } + + return 1; +} + +static void Player_actor_request_proc_index_fromDash_common(ACTOR* actor, GAME* game) { + f32 speed; + + GAME_PLAY* play; + PLAYER_ACTOR* player; + + player = (PLAYER_ACTOR*)actor; + play = (GAME_PLAY*)game; + Player_actor_Set_ScrollDemo_forWade(actor, game, mEv_CheckTitleDemo() <= 0); + + if (!player->actor_class.bg_collision_check.result.on_ground) { + Player_actor_request_main_fall_all(game, -5.0f, 1, mPlayer_REQUEST_PRIORITY_1); + } + + Player_actor_CheckAndRequest_main_axe_all(game, mPlayer_REQUEST_PRIORITY_4); + + if (Player_actor_CheckController_forNet(game) != 0) { + Player_actor_request_main_slip_net(game, mPlayer_REQUEST_PRIORITY_4); + } + + if (Player_actor_CheckController_forRod(game) != 0) { + Player_actor_request_main_ready_rod(game, mPlayer_REQUEST_PRIORITY_4); + } + + Player_actor_CheckAndRequest_main_scoop_all(game, mPlayer_REQUEST_PRIORITY_4); + Player_actor_CheckAndRequest_main_umbrella_all(game, mPlayer_REQUEST_PRIORITY_4); + Player_actor_CheckAndRequest_main_fan_all(game, 1, 1, mPlayer_REQUEST_PRIORITY_4); + Player_actor_CheckAndRequest_main_shake_tree_all(game); + Player_actor_CheckAndRequest_main_pickup_all(game); + + speed = (player->keyframe0.frame_control.speed * player->keyframe0.frame_control.speed) / 0.048f; + + if (Player_actor_Get_DiffWorldAngleToControllerAngle(actor) >= 18204) { + Player_actor_request_main_turn_dash_all(game, Player_actor_Get_ControllerAngle(game), mPlayer_REQUEST_PRIORITY_3); + } + + if (speed < 4.875f) { + Player_actor_request_main_run_all(game, -5.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } + + if (mEv_CheckTitleDemo() <= 0 && + (Common_Get(now_private)->destiny.type == 3 && Player_actor_Check_FlatPlace(actor))) { + if (player->actor_class.speed / 7.5f >= 0.75f && !((int)(RANDOM_F(32768) * 2.0f) % 600)) { + Player_actor_request_main_tumble(game, mPlayer_REQUEST_PRIORITY_6); + } + } +} + +static void Player_actor_request_proc_index_fromDash(ACTOR* actor, GAME* game) { + Player_actor_request_proc_index_fromDash_common(actor, game); +} + +static void Player_actor_main_Dash(ACTOR* actor, GAME* game) { + f32 frame; + f32 frame_calc; + + Player_actor_Movement_Dash(actor, game, &frame); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_CulcAnimation_Dash(actor, &frame_calc, frame); + Player_actor_SearchAnimation_Dash(actor, game, frame_calc); + Player_actor_set_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Dash(actor, game); + Player_actor_BGcheck_Dash(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromDash(actor, game); +} diff --git a/src/m_player_main_run.c_inc b/src/m_player_main_run.c_inc index 9676f4f8..ca652cc8 100644 --- a/src/m_player_main_run.c_inc +++ b/src/m_player_main_run.c_inc @@ -53,8 +53,8 @@ static void Player_actor_SearchAnimation_Run(ACTOR* actor, GAME* game, f32 frame } } -static void Player_actor_Movement_Run(ACTOR* actor, GAME* game, f32*) { - Player_actor_Movement_Walk(actor, game); +static void Player_actor_Movement_Run(ACTOR* actor, GAME* game, f32* frame) { + Player_actor_Movement_Walk(actor, game, frame); } static void Player_actor_ObjCheck_Run(ACTOR* actor, GAME* game) { From 6a34db7763144cfe1850b9a46bb390bd27300c9d Mon Sep 17 00:00:00 2001 From: Prakxo Date: Sat, 31 Aug 2024 23:17:05 +0200 Subject: [PATCH 156/234] match m_player_main_tumble --- src/m_player_main_dash.c_inc | 2 +- src/m_player_main_tumble.c_inc | 151 +++++++++++++++++++++++++++++++++ 2 files changed, 152 insertions(+), 1 deletion(-) diff --git a/src/m_player_main_dash.c_inc b/src/m_player_main_dash.c_inc index d7948a56..746f0a54 100644 --- a/src/m_player_main_dash.c_inc +++ b/src/m_player_main_dash.c_inc @@ -109,7 +109,7 @@ static void Player_actor_BGcheck_Dash(ACTOR* actor) { } static int Player_actor_Check_FlatPlace(ACTOR* actor) { - static xy_t offset[] = { + static const xy_t offset[] = { {0.0f, 0.0f}, {20.0f, 0.0f}, {-20.0f, 0.0f}, {0.0f, 28.284271f}, {20.0f, 28.284271f}, {-20.0f, 28.284271f}, {0.0f, 56.568542f}, {20.0f, 56.568542f}, {-20, 56.568542f}, {0.0f, 84.85281f}, {20.0f, 84.85281f}, {-20.0f, 84.85281f}, diff --git a/src/m_player_main_tumble.c_inc b/src/m_player_main_tumble.c_inc index e69de29b..ebc8a26b 100644 --- a/src/m_player_main_tumble.c_inc +++ b/src/m_player_main_tumble.c_inc @@ -0,0 +1,151 @@ +static int Player_actor_request_main_tumble(GAME* game, int priority) { + PLAYER_ACTOR* player; + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_TUMBLE, priority)) { + Player_actor_request_main_index(game, mPlayer_INDEX_TUMBLE, priority); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_Item_Tumble(ACTOR* actor, GAME* game, int kind, f32 speed) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + int check = FALSE; + + if (mPlayer_ITEM_IS_NET(kind)) { + check = TRUE; + } + + if (check == FALSE) { + Player_actor_LoadOrDestruct_Item(actor, kind, mPlib_Get_BasicItemAnimeIndex_fromItemKind(kind), 1, 0.5f, speed, + -1.0f); + Player_actor_Set_now_item_main_index(actor, Player_actor_Get_BasicItemMainIndex_fromItemKind(kind)); + player->item_kind = kind; + } else { + Player_actor_LoadOrDestruct_Item(actor, kind, mPlayer_ANIM_GET1, 0, 0.5f, speed, -1.0f); + Player_actor_Set_now_item_main_index(actor, mPlayer_INDEX_RETURN_OUTDOOR); + player->item_kind = kind; + } +} + +static int Player_actor_Get_PlayerAnimeIndex_fromItemKind_Tumble(int kind) { + static const u8 data[] = { + mPlayer_ANIM_KOKERU_A1, mPlayer_ANIM_KOKERU_A1, mPlayer_ANIM_KOKERU_A1, mPlayer_ANIM_KOKERU_A1, + mPlayer_ANIM_KOKERU_A1, mPlayer_ANIM_KOKERU_A1, mPlayer_ANIM_KOKERU_A1, mPlayer_ANIM_KOKERU_A1, + mPlayer_ANIM_KOKERU_A1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, + mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, + mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, + mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, + mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, + mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, + mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, + mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, + mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, + mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, + mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, + mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_A1, mPlayer_ANIM_KOKERU_A1, mPlayer_ANIM_KOKERU_N1, + mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, + mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, + mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, + mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_A1, + mPlayer_ANIM_KOKERU_A1, mPlayer_ANIM_KOKERU_A1, mPlayer_ANIM_KOKERU_A1, mPlayer_ANIM_KOKERU_A1, + mPlayer_ANIM_KOKERU_A1, mPlayer_ANIM_KOKERU_A1, mPlayer_ANIM_KOKERU_A1, + }; + + if (mPlayer_ITEM_KIND_VALID(kind)) { + return data[kind]; + } else { + return mPlayer_ANIM_KOKERU1; + } +} + +static void Player_actor_effect_Tumble(ACTOR* actor, GAME* game, s16 arg) { + Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_TUMBLE, actor->world.position, 2, actor->world.angle.y, + game, 0xFFFF, actor->bg_collision_check.result.unit_attribute, arg); +} + +static void Player_actor_setup_main_Tumble(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int kind = Player_actor_Get_ItemKind(actor, player->requested_main_index); + int anim_idx = Player_actor_Get_PlayerAnimeIndex_fromItemKind_Tumble(kind); + + Player_actor_setup_Item_Tumble(actor, game, kind, -5.0f); + Player_actor_InitAnimation_Base2(actor, game, anim_idx, anim_idx, 1.0f, 1.0f, 0.5f, -5.0f, 0, 0); + Player_actor_setup_main_Base(actor, game); + Player_actor_sound_Tumble(actor); + Player_actor_effect_Tumble(actor, game, 0); + mISL_SetNowPlayerAction(mISL_PLAYER_ACTION_TUMBLE); +} + +static int Player_actor_Movement_Tumble(ACTOR* actor) { + return Player_actor_Movement_Base_Braking_common(actor, 0.175f); +} + +static void Player_actor_recover_lean_angle_Tumble(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + f32 cur = 17.0f - player->keyframe0.frame_control.current_frame; + + if (cur > 0.0f) { + add_calc_short_angle2(&actor->shape_info.rotation.x, 0, 1.0f - sqrtf(1.0f - (1.0f / cur)), 1820, 0); + } else { + actor->shape_info.rotation.x = 0; + } +} + +static int Player_actor_CulcAnimation_Tumble(ACTOR* actor, f32* frame_calc) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_SetEffect_Tumble(ACTOR* actor, GAME* game, int base) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + cKF_FrameControl_c* fc = &player->keyframe0.frame_control; + + if (Player_actor_Check_AnimationFrame(fc, 10.0f) != FALSE) { + Player_actor_set_viblation_Tumble(); + + } else if (Player_actor_Check_AnimationFrame(fc, 15.0f) != FALSE) { + Player_actor_effect_Tumble(actor, game, 1); + } else if (Player_actor_Check_AnimationFrame(fc, 17.0f) != FALSE) { + Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_TUMBLE_BODYPRINT, actor->world.position, 2, + actor->world.angle.y, game, 0xFFFF, + actor->bg_collision_check.result.unit_attribute, 0); + } +} + +static void Player_actor_SearchAnimation_Tumble(ACTOR* actor, GAME* game, f32 frame, int base) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, game, frame)) { + Player_actor_SetEffect_Tumble(actor, game, base); + } +} + +static void Player_actor_ObjCheck_Tumble(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Tumble(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_request_proc_index_fromTumble(GAME* game, int arg1, int arg2) { + if (arg1 != 0 && arg2 != 0) { + Player_actor_request_main_tumble_getup(game, mPlayer_REQUEST_PRIORITY_21); + } +} + +static void Player_actor_main_Tumble(ACTOR* actor, GAME* game) { + int arg1; + int calc; + f32 frame_calc; + + arg1 = Player_actor_Movement_Tumble(actor); + Player_actor_Reinput_force_position_angle(actor, game); + calc = Player_actor_CulcAnimation_Tumble(actor, &frame_calc); + Player_actor_SearchAnimation_Tumble(actor, game, frame_calc, calc); + Player_actor_recover_lean_angle_Tumble(actor); + Player_actor_set_tex_anime_pattern(actor); + Player_actor_ObjCheck_Tumble(actor, game); + Player_actor_BGcheck_Tumble(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromTumble(game, arg1, calc); +} From e2ef9f78c31eaa5799f01fc5d30f1ab332a9b5dd Mon Sep 17 00:00:00 2001 From: Prakxo Date: Sat, 31 Aug 2024 23:23:00 +0200 Subject: [PATCH 157/234] match m_player_main_tumble_getup --- src/m_player_main_tumble_getup.c_inc | 131 +++++++++++++++++++++++++++ 1 file changed, 131 insertions(+) diff --git a/src/m_player_main_tumble_getup.c_inc b/src/m_player_main_tumble_getup.c_inc index e69de29b..c7aad9da 100644 --- a/src/m_player_main_tumble_getup.c_inc +++ b/src/m_player_main_tumble_getup.c_inc @@ -0,0 +1,131 @@ +static int Player_actor_request_main_tumble_getup(GAME* game, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_TUMBLE_GETUP, prio)) { + Player_actor_request_main_index(game, mPlayer_INDEX_TUMBLE_GETUP, prio); + return TRUE; + } else { + return FALSE; + } +} + +static void Player_actor_setup_Item_Tumble_getup(ACTOR* actor, GAME* game, int kind, f32 speed) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int check = FALSE; + ACTOR* balloon = player->balloon_actor; + + if (mPlayer_ITEM_IS_BALLOON(kind)) { + check = TRUE; + } + + if (check && balloon) { + s_xyz angle; + f32 frame; + + player->main_data.balloon.balloon_shape_type = mPlib_Get_ItemKindTOBalloonShapeType(kind); + kind = -1; + Player_actor_Set_ItemNoSubmenu(EMPTY_NO); + frame = player->item_keyframe.frame_control.current_frame; + + angle.x = player->balloon_lean_angle + player->balloon_angle.x + player->ballon_add_rot_x; + angle.y = actor->shape_info.rotation.y; + angle.z = 0; + + Ac_Balloon_request_fly(player->balloon_actor, game, player->main_data.balloon.balloon_shape_type, &angle, + player->balloon_angle.z, player->right_hand_pos, frame, 7.0f); + } else { + player->main_data.balloon.balloon_shape_type = -1; + } + + check = FALSE; + + if (mPlayer_ITEM_IS_NET(kind)) { + check = TRUE; + } + + if (check == FALSE) { + Player_actor_LoadOrDestruct_Item(actor, kind, mPlib_Get_BasicItemAnimeIndex_fromItemKind(kind), 1, 0.5f, speed, + -1.0f); + Player_actor_Set_now_item_main_index(actor, Player_actor_Get_BasicItemMainIndex_fromItemKind(kind)); + player->item_kind = kind; + } else { + Player_actor_LoadOrDestruct_Item(actor, kind, mPlayer_ANIM_RTURN1, 0, 0.5f, speed, -1.0f); + Player_actor_Set_now_item_main_index(actor, mPlayer_INDEX_RETURN_OUTDOOR2); + player->item_kind = kind; + } +} + +static int Player_actor_Get_PlayerAnimeIndex_fromItemKind_Tumble_getup(int kind) { + static const u8 data[] = { + mPlayer_ANIM_KOKERU_GETUP_A1, mPlayer_ANIM_KOKERU_GETUP_A1, mPlayer_ANIM_KOKERU_GETUP_A1, + mPlayer_ANIM_KOKERU_GETUP_A1, mPlayer_ANIM_KOKERU_GETUP_A1, mPlayer_ANIM_KOKERU_GETUP_A1, + mPlayer_ANIM_KOKERU_GETUP_A1, mPlayer_ANIM_KOKERU_GETUP_A1, mPlayer_ANIM_KOKERU_GETUP_A1, + mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, + mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, + mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, + mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, + mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, + mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, + mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, + mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, + mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, + mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, + mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, + mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, + mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, + mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, + mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_A1, + mPlayer_ANIM_KOKERU_A1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, + mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, + mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, + mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, + mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, + mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_A1, + mPlayer_ANIM_KOKERU_GETUP_A1, mPlayer_ANIM_KOKERU_GETUP_A1, mPlayer_ANIM_KOKERU_GETUP_A1, + mPlayer_ANIM_KOKERU_GETUP_A1, mPlayer_ANIM_KOKERU_GETUP_A1, mPlayer_ANIM_KOKERU_GETUP_A1, + mPlayer_ANIM_KOKERU_GETUP_A1, + }; + + if (mPlayer_ITEM_KIND_VALID(kind)) { + return data[kind]; + } else { + return mPlayer_ANIM_KOKERU_GETUP1; + } +} + +static void Player_actor_setup_main_Tumble_getup(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int kind = Player_actor_Get_ItemKind(actor, player->requested_main_index); + int anim_idx = Player_actor_Get_PlayerAnimeIndex_fromItemKind_Tumble_getup(kind); + + Player_actor_setup_Item_Tumble_getup(actor, game, kind, -5.0f); + Player_actor_InitAnimation_Base2(actor, game, anim_idx, anim_idx, 1.0f, 1.0f, 0.5f, -5.0f, 0, 0); + Player_actor_set_tex_anime_pattern(actor); + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_request_proc_index_fromTumble_getup(ACTOR* actor, GAME* game, int calc) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int type; + if (calc != 0) { + if (player->main_data.balloon.balloon_shape_type < 0) { + Player_actor_SettleRequestMainIndexPriority(actor); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } else { + type = player->main_data.balloon.balloon_shape_type; + Player_actor_request_main_release_creature_all(game, 2, 0, &type, player->balloon_actor, mPlayer_REQUEST_PRIORITY_30); + } + } +} + +static void Player_actor_main_Tumble_getup(ACTOR* actor, GAME* game) { + int calc; + f32 frame_calc; + + Player_actor_Movement_Tumble(actor); + calc = Player_actor_CulcAnimation_Tumble(actor, &frame_calc); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_set_tex_anime_pattern(actor); + Player_actor_ObjCheck_Tumble(actor, game); + Player_actor_BGcheck_Tumble(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromTumble_getup(actor, game, calc); +} From 202b38a1c923d1d9ee8f66b0f67c17517d96ab20 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Sat, 31 Aug 2024 23:31:31 +0200 Subject: [PATCH 158/234] match m_player_main_turn_dash --- src/m_player_main_tumble.c_inc | 6 +- src/m_player_main_turn_dash.c_inc | 97 +++++++++++++++++++++++++++++++ 2 files changed, 100 insertions(+), 3 deletions(-) diff --git a/src/m_player_main_tumble.c_inc b/src/m_player_main_tumble.c_inc index ebc8a26b..f61126f0 100644 --- a/src/m_player_main_tumble.c_inc +++ b/src/m_player_main_tumble.c_inc @@ -134,11 +134,11 @@ static void Player_actor_request_proc_index_fromTumble(GAME* game, int arg1, int } static void Player_actor_main_Tumble(ACTOR* actor, GAME* game) { - int arg1; + int is_stopped; int calc; f32 frame_calc; - arg1 = Player_actor_Movement_Tumble(actor); + is_stopped = Player_actor_Movement_Tumble(actor); Player_actor_Reinput_force_position_angle(actor, game); calc = Player_actor_CulcAnimation_Tumble(actor, &frame_calc); Player_actor_SearchAnimation_Tumble(actor, game, frame_calc, calc); @@ -147,5 +147,5 @@ static void Player_actor_main_Tumble(ACTOR* actor, GAME* game) { Player_actor_ObjCheck_Tumble(actor, game); Player_actor_BGcheck_Tumble(actor); Player_actor_Item_main(actor, game); - Player_actor_request_proc_index_fromTumble(game, arg1, calc); + Player_actor_request_proc_index_fromTumble(game, is_stopped, calc); } diff --git a/src/m_player_main_turn_dash.c_inc b/src/m_player_main_turn_dash.c_inc index e69de29b..52ded8d5 100644 --- a/src/m_player_main_turn_dash.c_inc +++ b/src/m_player_main_turn_dash.c_inc @@ -0,0 +1,97 @@ +static int Player_actor_request_main_turn_dash(GAME* game, s16 angle, int prio) { + PLAYER_ACTOR* player; + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_TURN_DASH, prio)) { + player = GET_PLAYER_ACTOR_GAME(game); + player->requested_main_index_data.turn_dash.target_angle_y = angle; + Player_actor_request_main_index(game, mPlayer_INDEX_TURN_DASH, prio); + return TRUE; + } else { + return FALSE; + } +} + +static int Player_actor_request_main_turn_dash_all(GAME* game, s16 angle, int prio) { + return Player_actor_request_main_turn_dash(game, angle, prio) != FALSE; +} + +static void Player_actor_setup_main_Turn_dash_common(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int anim_idx; + int part_table_idx; + + player->main_data.turn_dash.target_angle_y = player->requested_main_index_data.turn_dash.target_angle_y; + + Player_actor_SetupItem_Base1(actor, mPlayer_ANIM_RUN_SLIP1, -5.0f, &anim_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_RUN_SLIP1, anim_idx, 1.0f, 1.0f, 0.5f, -5.0f, + part_table_idx); + Player_actor_setup_main_Base(actor, game); + Player_actor_sound_slip(actor); + Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_TURN_ASIMOTO, actor->world.position, 2, + actor->world.angle.y, game, 0xFFFF, + actor->bg_collision_check.result.unit_attribute, 0); +} + +static void Player_actor_setup_main_Turn_dash(ACTOR* actor, GAME* game) { + Player_actor_setup_main_Turn_dash_common(actor, game); +} + +static void Player_actor_settle_main_Turn_dash(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_TURN_FOOTPRINT, player->right_foot_pos, 2, + actor->world.angle.y, game, 0xFFFF, + actor->bg_collision_check.result.unit_attribute, 0); + actor->world.angle.y = actor->shape_info.rotation.y; +} + +static int Player_actor_Movement_Turn_dash(ACTOR* actor) { + return Player_actor_Movement_Base_Braking_common(actor, 0.261f); +} + +static int Player_actor_ChangeDirection_Turn_dash(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + s16* rot = &actor->shape_info.rotation.y; + s16 target = player->main_data.turn_dash.target_angle_y; + + return add_calc_short_angle3(rot, target, 1.0f - sqrtf(0.5), 2500, 50) == 0; +} + +static int Player_actor_CulcAnimation_Turn_dash(ACTOR* actor) { + return Player_actor_CulcAnimation_Base(actor); +} + +static void Player_actor_ObjCheck_Turn_dash(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Turn_dash(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_request_proc_index_fromTurn_dash_common(ACTOR* actor, GAME* game, int is_stopped, + int rotdiff) { + if (is_stopped != 0 && rotdiff != 0) { + Player_actor_SettleRequestMainIndexPriority(actor); + Player_actor_request_main_wait_all(game, -12.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } +} + +static void Player_actor_request_proc_index_fromTurn_dash(ACTOR* actor, GAME* game, int arg2, int arg3) { + Player_actor_request_proc_index_fromTurn_dash_common(actor, game, arg2, arg3); +} + +static void Player_actor_main_Turn_dash(ACTOR* actor, GAME* game) { + int is_stopped; + int rotdiff; + + is_stopped = Player_actor_Movement_Turn_dash(actor); + Player_actor_Reinput_force_position_angle(actor, game); + rotdiff = Player_actor_ChangeDirection_Turn_dash(actor); + Player_actor_CulcAnimation_Turn_dash(actor); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Turn_dash(actor, game); + Player_actor_BGcheck_Turn_dash(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromTurn_dash(actor, game, is_stopped, rotdiff); +} From 258c502fd4eee8db5825c47412840fed44bf52e0 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Sat, 31 Aug 2024 23:36:49 +0200 Subject: [PATCH 159/234] match m_player_main_fall --- src/m_player_main_fall.c_inc | 84 ++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) diff --git a/src/m_player_main_fall.c_inc b/src/m_player_main_fall.c_inc index e69de29b..a6081a4d 100644 --- a/src/m_player_main_fall.c_inc +++ b/src/m_player_main_fall.c_inc @@ -0,0 +1,84 @@ +static int Player_actor_request_main_fall_all(GAME* game, int flags, int prio, f32 speed) { + PLAYER_ACTOR* player; + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_FALL, prio)) { + player = GET_PLAYER_ACTOR_GAME(game); + Player_actor_request_main_index(game, mPlayer_INDEX_FALL, prio); + + player->requested_main_index_data.fall.morph_speed = speed; + + player->requested_main_index_data.fall.flags = flags; + + return TRUE; + } else { + return FALSE; + } +} + +static void Player_actor_setup_main_Fall(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int anim_idx; + int part_table_idx; + + f32 speed = player->requested_main_index_data.fall.morph_speed; + + int flags = player->requested_main_index_data.fall.flags; + + Player_actor_SetupItem_Base1(actor, mPlayer_ANIM_WAIT1, -5.0f, &anim_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_WAIT1, anim_idx, 1.0f, 1.0f, 0.5f, speed, + part_table_idx); + + if (flags & 1) { + actor->position_speed.y = 0.0f; + } + + Player_actor_setup_main_Base(actor, game); +} + +static int Player_actor_CulcAnimation_Fall(ACTOR* actor) { + f32 frame_calc; + return Player_actor_CulcAnimation_Base2(actor, &frame_calc); +} + +static void Player_actor_Movement_Fall(ACTOR* actor) { + Player_actor_Movement_Base_Braking(actor); +} + +static void Player_actor_ObjCheck_Fall(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Fall(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_request_proc_index_fromFall_common(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + s8 kind; + s8 player_kind; + + if (actor->bg_collision_check.result.on_ground) { + Player_actor_request_main_walk_all(game, NULL, -5.0f, 4, mPlayer_REQUEST_PRIORITY_1); + } + kind = player->item_kind; + player_kind = Player_actor_Get_ItemKind(actor, player->now_main_index); + + if (kind != player_kind) { + Player_actor_request_main_fall_all(game, 0.0f, 1, mPlayer_REQUEST_PRIORITY_0); + } +} + +static void Player_actor_request_proc_index_fromFall(ACTOR* actor, GAME* game) { + Player_actor_request_proc_index_fromFall_common(actor, game); +} + +static void Player_actor_main_Fall(ACTOR* actor, GAME* game) { + Player_actor_Movement_Fall(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_CulcAnimation_Fall(actor); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Fall(actor, game); + Player_actor_BGcheck_Fall(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromFall(actor, game); +} From 8d90362a16e140e6f986da49e1481e711e3d4ff0 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Sat, 31 Aug 2024 18:04:33 -0400 Subject: [PATCH 160/234] Update eAS2_dw with fix --- src/ef_ase2.c | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/src/ef_ase2.c b/src/ef_ase2.c index 88ca3381..c286c6ec 100644 --- a/src/ef_ase2.c +++ b/src/ef_ase2.c @@ -12,7 +12,10 @@ extern Gfx ef_ase02_02_modelT[]; extern Gfx ef_ase02_03_modelT[]; static Gfx* eAS2_model_table[] = { - ef_ase02_00_modelT,ef_ase02_01_modelT,ef_ase02_02_modelT,ef_ase02_03_modelT, + ef_ase02_00_modelT, + ef_ase02_01_modelT, + ef_ase02_02_modelT, + ef_ase02_03_modelT, }; eEC_PROFILE_c iam_ef_ase2 = { @@ -27,42 +30,35 @@ eEC_PROFILE_c iam_ef_ase2 = { // clang-format on }; - static void eAS2_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1) { xyz_t offs; offs.x = 0.0f; offs.y = 0.0f; offs.z = 30.0f; - eEC_CLIP->make_effect_proc(eEC_EFFECT_ASE2,pos,&offs,game,NULL,item_name,prio,0,0); + eEC_CLIP->make_effect_proc(eEC_EFFECT_ASE2, pos, &offs, game, NULL, item_name, prio, 0, 0); } static void eAS2_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg) { effect->scale.x = 0.006f; - effect->scale.y = 0.006f; + effect->scale.y = 0.006f; effect->scale.z = 0.006f; effect->effect_specific[0] = 0; effect->timer = 26; } static void eAS2_mv(eEC_Effect_c* effect, GAME* game) { - eEC_CLIP->set_continious_env_proc(effect,26,52); + eEC_CLIP->set_continious_env_proc(effect, 26, 52); effect->effect_specific[0]++; - sAdo_OngenPos((u32) effect, 0x29, &effect->position); + sAdo_OngenPos((u32)effect, 0x29, &effect->position); } + static void eAS2_dw(eEC_Effect_c* effect, GAME* game) { - s16 idx = (s16)((effect->effect_specific[0] >> 2) & 3); - xyz_t* scale = &effect->scale; + s16 idx = (s16)((effect->effect_specific[0] & 12) >> 2); OPEN_DISP(game->graph); - if (scale) { - - } - else { - - } - - eEC_CLIP->auto_matrix_xlu_offset_proc(game, &effect->position, scale, &effect->offset); + + eEC_CLIP->auto_matrix_xlu_offset_proc(game, &effect->position, &effect->scale, &effect->offset); gSPDisplayList(NEXT_POLY_XLU_DISP, eAS2_model_table[idx]); CLOSE_DISP(game->graph); From 0b09dc6724d7613746cdb7a34a77d60d24d55aa0 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Sun, 1 Sep 2024 04:54:44 -0400 Subject: [PATCH 161/234] Implement & link scene data --- config/rel_disasm_overrides.yml | 3 + config/rel_slices.yml | 112 +++++++++++++++++++++- include/m_actor.h | 16 ++-- include/m_scene.h | 143 ++++++++++++++++++++++------ src/data/scene/BG_TEST01.c | 36 +++++++ src/data/scene/BG_TEST01_XLU.c | 36 +++++++ src/data/scene/NEEDLEWORK.c | 82 ++++++++++++++++ src/data/scene/PLAYER_SELECT2.c | 29 ++++++ src/data/scene/PLAYER_SELECT3.c | 29 ++++++ src/data/scene/PLAYER_SELECT4.c | 29 ++++++ src/data/scene/broker_shop.c | 53 +++++++++++ src/data/scene/buggy.c | 48 ++++++++++ src/data/scene/event_notification.c | 37 +++++++ src/data/scene/fg_tool_in.c | 80 ++++++++++++++++ src/data/scene/field_tool_field.c | 51 ++++++++++ src/data/scene/kamakura.c | 52 ++++++++++ src/data/scene/lighthouse.c | 53 +++++++++++ src/data/scene/museum_entrance.c | 118 +++++++++++++++++++++++ src/data/scene/museum_fish.c | 75 +++++++++++++++ src/data/scene/museum_fossil.c | 59 ++++++++++++ src/data/scene/museum_insect.c | 87 +++++++++++++++++ src/data/scene/museum_picture.c | 72 ++++++++++++++ src/data/scene/npc_room01.c | 76 +++++++++++++++ src/data/scene/npc_room_island.c | 76 +++++++++++++++ src/data/scene/p_room_bm_l.c | 59 ++++++++++++ src/data/scene/p_room_bm_ll1.c | 59 ++++++++++++ src/data/scene/p_room_bm_m.c | 59 ++++++++++++ src/data/scene/p_room_bm_s.c | 59 ++++++++++++ src/data/scene/player_room_island.c | 77 +++++++++++++++ src/data/scene/player_room_l.c | 77 +++++++++++++++ src/data/scene/player_room_ll1.c | 87 +++++++++++++++++ src/data/scene/player_room_ll2.c | 77 +++++++++++++++ src/data/scene/player_room_m.c | 77 +++++++++++++++ src/data/scene/player_room_s.c | 77 +++++++++++++++ src/data/scene/player_select.c | 29 ++++++ src/data/scene/police_box.c | 74 ++++++++++++++ src/data/scene/post_office.c | 80 ++++++++++++++++ src/data/scene/shop01.c | 63 ++++++++++++ src/data/scene/shop02.c | 63 ++++++++++++ src/data/scene/shop03.c | 56 +++++++++++ src/data/scene/shop04_1f.c | 62 ++++++++++++ src/data/scene/shop04_2f.c | 63 ++++++++++++ src/data/scene/start_demo1.c | 48 ++++++++++ src/data/scene/start_demo2.c | 48 ++++++++++ src/data/scene/start_demo3.c | 48 ++++++++++ src/data/scene/tent.c | 52 ++++++++++ src/data/scene/test01.c | 60 ++++++++++++ src/data/scene/test02.c | 37 +++++++ src/data/scene/test03.c | 63 ++++++++++++ src/data/scene/test04.c | 37 +++++++ src/data/scene/test05.c | 30 ++++++ src/data/scene/test_fd_npc_land.c | 66 +++++++++++++ src/data/scene/test_step01.c | 20 ++++ src/data/scene/title_demo.c | 52 ++++++++++ src/data/scene/water_test.c | 56 +++++++++++ src/m_scene.c | 8 +- 56 files changed, 3231 insertions(+), 44 deletions(-) create mode 100644 src/data/scene/BG_TEST01.c create mode 100644 src/data/scene/BG_TEST01_XLU.c create mode 100644 src/data/scene/NEEDLEWORK.c create mode 100644 src/data/scene/PLAYER_SELECT2.c create mode 100644 src/data/scene/PLAYER_SELECT3.c create mode 100644 src/data/scene/PLAYER_SELECT4.c create mode 100644 src/data/scene/broker_shop.c create mode 100644 src/data/scene/buggy.c create mode 100644 src/data/scene/event_notification.c create mode 100644 src/data/scene/fg_tool_in.c create mode 100644 src/data/scene/field_tool_field.c create mode 100644 src/data/scene/kamakura.c create mode 100644 src/data/scene/lighthouse.c create mode 100644 src/data/scene/museum_entrance.c create mode 100644 src/data/scene/museum_fish.c create mode 100644 src/data/scene/museum_fossil.c create mode 100644 src/data/scene/museum_insect.c create mode 100644 src/data/scene/museum_picture.c create mode 100644 src/data/scene/npc_room01.c create mode 100644 src/data/scene/npc_room_island.c create mode 100644 src/data/scene/p_room_bm_l.c create mode 100644 src/data/scene/p_room_bm_ll1.c create mode 100644 src/data/scene/p_room_bm_m.c create mode 100644 src/data/scene/p_room_bm_s.c create mode 100644 src/data/scene/player_room_island.c create mode 100644 src/data/scene/player_room_l.c create mode 100644 src/data/scene/player_room_ll1.c create mode 100644 src/data/scene/player_room_ll2.c create mode 100644 src/data/scene/player_room_m.c create mode 100644 src/data/scene/player_room_s.c create mode 100644 src/data/scene/player_select.c create mode 100644 src/data/scene/police_box.c create mode 100644 src/data/scene/post_office.c create mode 100644 src/data/scene/shop01.c create mode 100644 src/data/scene/shop02.c create mode 100644 src/data/scene/shop03.c create mode 100644 src/data/scene/shop04_1f.c create mode 100644 src/data/scene/shop04_2f.c create mode 100644 src/data/scene/start_demo1.c create mode 100644 src/data/scene/start_demo2.c create mode 100644 src/data/scene/start_demo3.c create mode 100644 src/data/scene/tent.c create mode 100644 src/data/scene/test01.c create mode 100644 src/data/scene/test02.c create mode 100644 src/data/scene/test03.c create mode 100644 src/data/scene/test04.c create mode 100644 src/data/scene/test05.c create mode 100644 src/data/scene/test_fd_npc_land.c create mode 100644 src/data/scene/test_step01.c create mode 100644 src/data/scene/title_demo.c create mode 100644 src/data/scene/water_test.c diff --git a/config/rel_disasm_overrides.yml b/config/rel_disasm_overrides.yml index a5c0ca4e..bd2bbc05 100644 --- a/config/rel_disasm_overrides.yml +++ b/config/rel_disasm_overrides.yml @@ -19,3 +19,6 @@ symbol_aligns: 0x80F85720: 32 # dataobject/obj/.data/grd_player_select_evw_anime_1 (TU is aligned to 32) 0x80FACE20: 32 # dataobject/obj/.data/rom_shop4_1_floor_tex_pal 0x8074B840: 32 # dataobject/obj/.data/mFM_obj_a_01_flower_pal + 0x808DF220: 32 # obj_otiba01_pal + 0x809C8FA0: 32 # ef_hanabira01_0 + 0x80C0CBA0: 32 # crw_anrium1_pal \ No newline at end of file diff --git a/config/rel_slices.yml b/config/rel_slices.yml index 0ac970a7..a3e9cd79 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -1282,6 +1282,14 @@ data/npc/model/mdl/wls_1.c: .data: [0x806E9AC0, 0x806EBFF0] data/npc/model/tex/wls_1.c: .data: [0x806EC000, 0x806ECFA0] +data/scene/BG_TEST01.c: + .data: [0x806ECFA0, 0x806ECFF0] +data/scene/BG_TEST01_XLU.c: + .data: [0x806ECFF0, 0x806ED040] +data/scene/broker_shop.c: + .data: [0x806ED040, 0x806ED0C0] +data/scene/buggy.c: + .data: [0x806ED0C0, 0x806ED128] data/npc/model/mdl/bea_1.c: .data: [0x806EF078, 0x806F1030] data/npc/model/tex/bea_1.c: @@ -1527,6 +1535,8 @@ data/npc/model/tex/duk_9.c: .data: [0x808433A0, 0x808445C0] data/npc/model/tex/duk_10.c: .data: [0x808445C0, 0x808457E0] +data/scene/event_notification.c: + .data: [0x808457E0, 0x80845830] data/npc/model/mdl/elp_1.c: .data: [0x80845830, 0x808479A0] data/npc/model/tex/elp_1.c: @@ -1543,6 +1553,10 @@ data/npc/model/tex/elp_6.c: .data: [0x8084D440, 0x8084E660] data/npc/model/tex/elp_7.c: .data: [0x8084E660, 0x8084F880] +data/scene/fg_tool_in.c: + .data: [0x8084F880, 0x8084F940] +data/scene/field_tool_field.c: + .data: [0x8084F940, 0x8084F9B0] data/npc/model/mdl/flg_1.c: .data: [0x80857D80, 0x808597E0] data/npc/model/tex/flg_1.c: @@ -1665,6 +1679,8 @@ data/npc/model/tex/xsq_1.c: .data: [0x808BE240, 0x808BF660] data/item/item_name.c: .data: [0x808BF660, 0x808C8830] +data/scene/kamakura.c: + .data: [0x808C8830, 0x808C88A8] data/npc/model/mdl/boa_1.c: .data: [0x808C88A8, 0x808CAF48] data/npc/model/tex/boa_1.c: @@ -1701,6 +1717,8 @@ data/npc/model/tex/kal_5.c: .data: [0x808DCC60, 0x808DDF00] data/npc/model/tex/kal_6.c: .data: [0x808DDF00, 0x808DF1A0] +data/scene/lighthouse.c: + .data: [0x808DF1A0, 0x808DF220] data/npc/model/mdl/lon_1.c: .data: [0x808E1A10, 0x808E3F78] data/npc/model/tex/lon_1.c: @@ -1711,6 +1729,16 @@ data/npc/model/tex/lon_3.c: .data: [0x808E6540, 0x808E7820] data/npc/model/tex/lon_4.c: .data: [0x808E7820, 0x808E8B00] +data/scene/museum_entrance.c: + .data: [0x808E8B00, 0x808E8C08] +data/scene/museum_fish.c: + .data: [0x808E8C08, 0x808E8CB0] +data/scene/museum_fossil.c: + .data: [0x808E8CB0, 0x808E8D30] +data/scene/museum_insect.c: + .data: [0x808E8D30, 0x808E8DF0] +data/scene/museum_picture.c: + .data: [0x808E8DF0, 0x808E8EA0] data/npc/model/mdl/mos_1.c: .data: [0x808EAEA0, 0x808ECAC8] data/npc/model/tex/mos_1.c: @@ -1751,6 +1779,12 @@ data/npc/model/tex/mus_10.c: .data: [0x809033E0, 0x80904600] data/model/mural/obj_mural.c: .data: [0x80904600, 0x80904700] +data/scene/NEEDLEWORK.c: + .data: [0x80911C68, 0x80911D20] +data/scene/npc_room01.c: + .data: [0x80911D20, 0x80911DC8] +data/scene/npc_room_island.c: + .data: [0x80911DC8, 0x80911E70] data/npc/model/mdl/hgh_1.c: .data: [0x80911E70, 0x80914610] data/npc/model/tex/hgh_1.c: @@ -1781,6 +1815,38 @@ data/npc/model/tex/ost_3.c: .data: [0x8097EBC0, 0x8097F920] data/npc/model/tex/ost_4.c: .data: [0x8097F920, 0x80980680] +data/scene/player_room_island.c: + .data: [0x80980680, 0x80980728] +data/scene/player_room_ll1.c: + .data: [0x80980728, 0x809807E8] +data/scene/player_room_ll2.c: + .data: [0x809807E8, 0x80980890] +data/scene/player_room_l.c: + .data: [0x80980890, 0x80980938] +data/scene/player_room_m.c: + .data: [0x80980938, 0x809809E0] +data/scene/player_room_s.c: + .data: [0x809809E0, 0x80980A88] +data/scene/PLAYER_SELECT2.c: + .data: [0x80980A88, 0x80980AD0] +data/scene/PLAYER_SELECT3.c: + .data: [0x80980AD0, 0x80980B18] +data/scene/PLAYER_SELECT4.c: + .data: [0x80980B18, 0x80980B60] +data/scene/player_select.c: + .data: [0x80980B60, 0x80980BA8] +data/scene/police_box.c: + .data: [0x80980BA8, 0x80980C48] +data/scene/post_office.c: + .data: [0x80980C48, 0x80980D00] +data/scene/p_room_bm_ll1.c: + .data: [0x80980D00, 0x80980D80] +data/scene/p_room_bm_l.c: + .data: [0x80980D80, 0x80980E00] +data/scene/p_room_bm_m.c: + .data: [0x80980E00, 0x80980E80] +data/scene/p_room_bm_s.c: + .data: [0x80980E80, 0x80980F00] data/npc/model/mdl/pgn_1.c: .data: [0x80980F28, 0x80983140] data/npc/model/tex/pgn_1.c: @@ -1881,6 +1947,22 @@ data/npc/model/tex/rhn_3.c: .data: [0x809BEF40, 0x809C0160] data/npc/model/tex/rhn_4.c: .data: [0x809C0160, 0x809C1380] +data/scene/shop01.c: + .data: [0x809C8B98, 0x809C8C20] +data/scene/shop02.c: + .data: [0x809C8C20, 0x809C8CA8] +data/scene/shop03.c: + .data: [0x809C8CA8, 0x809C8D28] +data/scene/shop04_1f.c: + .data: [0x809C8D28, 0x809C8DB0] +data/scene/shop04_2f.c: + .data: [0x809C8DB0, 0x809C8E38] +data/scene/start_demo1.c: + .data: [0x809C8E38, 0x809C8EA8] +data/scene/start_demo2.c: + .data: [0x809C8EA8, 0x809C8F18] +data/scene/start_demo3.c: + .data: [0x809C8F18, 0x809C8FA0] data/npc/model/mdl/snt_1.c: .data: [0x809C9148, 0x809CAD30] data/npc/model/tex/snt_1.c: @@ -1947,6 +2029,33 @@ data/npc/model/mdl/rcs_1.c: .data: [0x80C09AC0, 0x80C0BBA8] data/npc/model/tex/rcs_1.c: .data: [0x80C0BBC0, 0x80C0C960] +data/scene/tent.c: + .data: [0x80C0C960, 0x80C0C9D8] + +data/scene/test_fd_npc_land.c: + .data: [0x80C0C9D8, 0x80C0CA68] +data/scene/water_test.c: + .data: [0x80C0CA68, 0x80C0CAE8] +data/scene/test_step01.c: + .data: [0x80C0CAE8, 0x80C0CB18] +data/scene/title_demo.c: + .data: [0x80C0CB18, 0x80C0CBA0] +# acres +# data/field/bg/acre/grd_post_office/grd_post_office.c: + # .data: [0x80C5DBA0, 0x80C63408] + +# scenes +data/scene/test01.c: + .data: [0x80C2C800, 0x80C2C888] +data/scene/test02.c: + .data: [0x80C2C888, 0x80C2C8D8] +data/scene/test03.c: + .data: [0x80C2C8D8, 0x80C2C960] +data/scene/test04.c: + .data: [0x80C2C960, 0x80C2C9B0] +data/scene/test05.c: + .data: [0x80C2C9B0, 0x80C2C9F8] + data/npc/model/mdl/tig_1.c: .data: [0x80C2C9F8, 0x80C2EE88] data/npc/model/tex/tig_1.c: @@ -2797,9 +2906,6 @@ data/field/bg/acre/grd_s_t_st1_3/grd_s_t_st1_3.c: .data: [0x80DD5280, 0x80DD61A0] data/field/bg/acre/rom_toudai/rom_toudai.c: .data: [0x80F08520, 0x80F0B020] -# acres -# data/field/bg/acre/grd_post_office/grd_post_office.c: - # .data: [0x80C5DBA0, 0x80C63408] # map submenu data/submenu/map/kan_tizu.c: diff --git a/include/m_actor.h b/include/m_actor.h index a1965148..7e7fb5b1 100644 --- a/include/m_actor.h +++ b/include/m_actor.h @@ -1152,20 +1152,20 @@ struct actor_s { #define mActor_NONE_PROC1 ((mActor_proc)none_proc1) typedef struct actor_list_s { - int num_actors; - ACTOR* actor; + /* 0x00 */ int num_actors; + /* 0x04 */ ACTOR* actor; } Actor_list; typedef struct actor_info_s { - int total_num; - Actor_list list[ACTOR_PART_NUM]; + /* 0x00 */ int total_num; + /* 0x04 */ Actor_list list[ACTOR_PART_NUM]; } Actor_info; typedef struct actor_data_s { - s16 profile; - s_xyz position; - s_xyz rotation; - s16 arg; + /* 0x00 */ s16 profile; + /* 0x02 */ s_xyz position; + /* 0x08 */ s_xyz rotation; + /* 0x0E */ s16 arg; } Actor_data; extern void Actor_world_to_eye(ACTOR* actor, f32 eye_height); diff --git a/include/m_scene.h b/include/m_scene.h index 5d2a41c1..2fe17195 100644 --- a/include/m_scene.h +++ b/include/m_scene.h @@ -26,15 +26,33 @@ enum { mSc_DIRECT_NUM }; +enum { + mSc_ITEM_TYPE_BGITEM, + mSc_ITEM_TYPE_DUMMY, + mSc_ITEM_TYPE_BGPOLICEITEM, + mSc_ITEM_TYPE_BGPOSTITEM, + + mSc_ITEM_TYPE_NUM +}; + +enum { + mSc_ROOM_TYPE_OUTDOORS, + mSc_ROOM_TYPE_MY_ROOM, + mSc_ROOM_TYPE_NPC_ROOM, + mSc_ROOM_TYPE_MISC_ROOM, + + mSc_ROOM_TYPE_NUM +}; + typedef struct door_data_s { - int next_scene_id; - u8 exit_orientation; - u8 exit_type; // 0 = normal, 1 = restart game? - u16 extra_data; - s_xyz exit_position; - mActor_name_t door_actor_name; - u8 wipe_type; - u8 pad[3]; // possibly necessary due to struct copy + /* 0x00 */ int next_scene_id; + /* 0x04 */ u8 exit_orientation; + /* 0x05 */ u8 exit_type; // 0 = normal, 1 = restart game? + /* 0x06 */ u16 extra_data; + /* 0x08 */ s_xyz exit_position; + /* 0x0E */ mActor_name_t door_actor_name; + /* 0x10 */ u8 wipe_type; + /* 0x11 */ u8 pad[3]; // possibly necessary due to struct copy } Door_data_c; #define mSc_OBJECT_BANK_NUM 70 @@ -91,45 +109,49 @@ enum { }; typedef struct { - u8 type; - u8 num_actors; - Actor_data* data_p; + /* 0x00 */ u8 type; + /* 0x01 */ u8 num_actors; + /* 0x04 */ Actor_data* data_p; } Scene_Word_Data_Actor_c; typedef struct { - u8 type; - u8 num_ctrl_actors; - s16* ctrl_actor_profile_p; + /* 0x00 */ u8 type; + /* 0x01 */ u8 num_ctrl_actors; + /* 0x04 */ s16* ctrl_actor_profile_p; } Scene_Word_Data_Ctrl_Actor_c; typedef struct { - u8 type; - u8 num_banks; - s16* banks_p; + /* 0x00 */ u8 type; + /* 0x01 */ u8 num_banks; + /* 0x04 */ s16* banks_p; } Scene_Word_Data_Object_Bank_c; typedef struct { - u8 type; - u8 num_doors; - Door_data_c* door_data_p; + /* 0x00 */ u8 type; + /* 0x01 */ u8 num_doors; + /* 0x04 */ Door_data_c* door_data_p; } Scene_Word_Data_Door_Data_c; typedef struct { - u8 type; - u8 item_type; - u8 bg_num; - u16 bg_disp_size; - u8 room_type; - u8 draw_type; + /* 0x00 */ u8 type; + /* 0x01 */ u8 item_type; + /* 0x02 */ u8 bg_num; + /* 0x04 */ u16 bg_disp_size; + /* 0x06 */ u8 room_type; + /* 0x07 */ u8 draw_type; } Scene_Word_Data_FieldCt_c; typedef struct { - u8 type; - u8 arrange_ftr_num; + /* 0x00 */ u8 type; + /* 0x01 */ u8 arrange_ftr_num; } Scene_Word_Data_ArrangeFurniture_ct_c; typedef struct { - u8 type; + /* 0x00 */ u8 type; + /* 0x01 */ u8 param0; + /* 0x02 */ u8 param1; + /* 0x03 */ u8 param2; + /* 0x04 */ u32 param3; } Scene_Word_Data_Misc_c; typedef union scene_word_u { @@ -142,9 +164,68 @@ typedef union scene_word_u { Scene_Word_Data_ArrangeFurniture_ct_c arrange_ftr_ct; } Scene_Word_u; +#define mSc_DATA_PLAYER(actor_data_p) \ + { \ + mSc_SCENE_DATA_TYPE_PLAYER_PTR, 1, 0, 0, (u32)actor_data_p, \ + } + +#define mSc_DATA_CTRL_ACTORS(n_actors, ctrl_actor_list_p) \ + { \ + mSc_SCENE_DATA_TYPE_CTRL_ACTOR_PTR, n_actors, 0, 0, (u32)ctrl_actor_list_p, \ + } + +#define mSc_DATA_ACTORS(n_actors, actor_data_p) \ + { \ + mSc_SCENE_DATA_TYPE_ACTOR_PTR, n_actors, 0, 0, (u32)actor_data_p, \ + } + +#define mSc_DATA_OBJ_BANK(n_banks, bank_list_p) \ + { \ + mSc_SCENE_DATA_TYPE_OBJECT_EXCHANGE_BANK_PTR, n_banks, 0, 0, (u32)bank_list_p, \ + } + +#define mSc_DATA_DOOR_DATA(n_doors, door_data_list_p) \ + { \ + mSc_SCENE_DATA_TYPE_DOOR_DATA_PTR, n_doors, 0, 0, (u32)door_data_list_p, \ + } + +#define mSc_DATA_FIELDCT(item_type, bg_num, bg_disp_size, room_type, draw_type) \ + { \ + mSc_SCENE_DATA_TYPE_FIELD_CT, \ + item_type, \ + bg_num, \ + 0, \ + ((((u32)bg_disp_size & 0xFFFF) << 16) | ((room_type & 0xFF) << 8) | (draw_type & 0xFF)), \ + } + +#define mSc_DATA_MY_ROOM_CT() \ + { \ + mSc_SCENE_DATA_TYPE_MY_ROOM_CT, 0, 0, 0, 0, \ + } + +#define mSc_DATA_ARRANGE_ROOM_CT() \ + { \ + mSc_SCENE_DATA_TYPE_ARRANGE_ROOM_CT, 0, 0, 0, 0, \ + } + +#define mSc_DATA_ARRANGE_FTR(ftr_num) \ + { \ + mSc_SCENE_DATA_TYPE_ARRANGE_FURNITURE_CT, ftr_num, 0, 0, 0, \ + } + +#define mSc_DATA_SOUND(p0, p1) \ + { \ + mSc_SCENE_DATA_TYPE_SOUND, p0, p1, 0, 0, \ + } + +#define mSc_DATA_END() \ + { \ + mSc_SCENE_DATA_TYPE_END, 0, 0, 0, 0, \ + } + typedef struct door_info_s { - u8 num_doors; - Door_data_c* door_data_p; + /* 0x00 */ u8 num_doors; + /* 0x04 */ Door_data_c* door_data_p; } Door_info_c; extern Scene_Word_u test01_info[]; diff --git a/src/data/scene/BG_TEST01.c b/src/data/scene/BG_TEST01.c new file mode 100644 index 00000000..d020614f --- /dev/null +++ b/src/data/scene/BG_TEST01.c @@ -0,0 +1,36 @@ +#include "m_scene.h" + +extern Actor_data BG_TEST01_player_data[]; +extern s16 BG_TEST01_ctrl_actor_data[]; + +extern Scene_Word_u BG_TEST01_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_PLAYER(BG_TEST01_player_data), // Player Data + mSc_DATA_CTRL_ACTORS(11, BG_TEST01_ctrl_actor_data), // Control actors + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_BGITEM, 4, 0x5000, mSc_ROOM_TYPE_OUTDOORS, + FIELD_DRAW_TYPE_OUTDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data BG_TEST01_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 340, 0, 430 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 BG_TEST01_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC, // 1 + mAc_PROFILE_STRUCTURE, // 2 + mAc_PROFILE_INSECT, // 3 + mAc_PROFILE_TOOLS, // 4 + mAc_PROFILE_HANDOVERITEM, // 5 + mAc_PROFILE_EFFECT_CONTROL, // 6 + mAc_PROFILE_SHOP_LEVEL, // 7 + mAc_PROFILE_QUEST_MANAGER, // 8 + mAc_PROFILE_EVENT_MANAGER, // 9 + mAc_PROFILE_WEATHER, // 10 +}; diff --git a/src/data/scene/BG_TEST01_XLU.c b/src/data/scene/BG_TEST01_XLU.c new file mode 100644 index 00000000..3970d488 --- /dev/null +++ b/src/data/scene/BG_TEST01_XLU.c @@ -0,0 +1,36 @@ +#include "m_scene.h" + +extern Actor_data BG_TEST01_XLU_player_data[]; +extern s16 BG_TEST01_XLU_ctrl_actor_data[]; + +extern Scene_Word_u BG_TEST01_XLU_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_PLAYER(BG_TEST01_XLU_player_data), // Player Data + mSc_DATA_CTRL_ACTORS(11, BG_TEST01_XLU_ctrl_actor_data), // Control actors + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_BGITEM, 4, 0x7800, mSc_ROOM_TYPE_OUTDOORS, + FIELD_DRAW_TYPE_OUTDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data BG_TEST01_XLU_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 340, 0, 430 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 BG_TEST01_XLU_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC, // 1 + mAc_PROFILE_STRUCTURE, // 2 + mAc_PROFILE_INSECT, // 3 + mAc_PROFILE_TOOLS, // 4 + mAc_PROFILE_HANDOVERITEM, // 5 + mAc_PROFILE_EFFECT_CONTROL, // 6 + mAc_PROFILE_SHOP_LEVEL, // 7 + mAc_PROFILE_QUEST_MANAGER, // 8 + mAc_PROFILE_EVENT_MANAGER, // 9 + mAc_PROFILE_WEATHER, // 10 +}; diff --git a/src/data/scene/NEEDLEWORK.c b/src/data/scene/NEEDLEWORK.c new file mode 100644 index 00000000..1e2fe49d --- /dev/null +++ b/src/data/scene/NEEDLEWORK.c @@ -0,0 +1,82 @@ +#include "m_scene.h" + +extern Door_data_c NEEDLEWORK_door_data[]; +extern Actor_data NEEDLEWORK_player_data[]; +extern s16 NEEDLEWORK_ctrl_actor_data[]; +extern Actor_data NEEDLEWORK_actor_data[]; +extern s16 NEEDLEWORK_object_bank[]; + +extern Scene_Word_u NEEDLEWORK_info[] = { + mSc_DATA_SOUND(0, 1), // Sound data + mSc_DATA_DOOR_DATA(1, NEEDLEWORK_door_data), // Door data + mSc_DATA_PLAYER(NEEDLEWORK_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(1), // Arrange furniture params + mSc_DATA_CTRL_ACTORS(12, NEEDLEWORK_ctrl_actor_data), // Control actors + mSc_DATA_ACTORS(3, NEEDLEWORK_actor_data), // Player Data + mSc_DATA_OBJ_BANK(1, NEEDLEWORK_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xA000, mSc_ROOM_TYPE_MY_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data NEEDLEWORK_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 180, 0, 250 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 NEEDLEWORK_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_INSECT, // 2 + mAc_PROFILE_TOOLS, // 3 + mAc_PROFILE_HANDOVERITEM, // 4 + mAc_PROFILE_EFFECT_CONTROL, // 5 + mAc_PROFILE_SHOP_LEVEL, // 6 + mAc_PROFILE_QUEST_MANAGER, // 7 + mAc_PROFILE_EVENT_MANAGER, // 8 + mAc_PROFILE_WEATHER, // 9 + mAc_PROFILE_HOUSE_CLOCK, // 10 + mAc_PROFILE_NEEDLEWORK_INDOOR, // 11 +}; + +extern Actor_data NEEDLEWORK_actor_data[] = { + { + mAc_PROFILE_ROOM_SUNSHINE, // profile + { 40, 0, 160 }, // position + { 0, 0, 0 }, // rotation + 2 // ct arg + }, + { + mAc_PROFILE_ROOM_SUNSHINE, // profile + { 360, 0, 160 }, // position + { 0, 0, 0 }, // rotation + 3 // ct arg + }, + { + mAc_PROFILE_MISIN, // profile + { 360, 0, 160 }, // position + { 0, 0, 0 }, // rotation + 3 // ct arg + }, +}; + +extern s16 NEEDLEWORK_object_bank[] = { + ACTOR_OBJ_BANK_ROOM_SUNSHINE, // 0 +}; + +extern Door_data_c NEEDLEWORK_door_data[] = { + { + SCENE_MY_ROOM_BASEMENT_S, // scene + 6, // exit orientation + 0, // exit type + 0, // arg + { 300, 0, 380 }, // exit position + 0x4000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/PLAYER_SELECT2.c b/src/data/scene/PLAYER_SELECT2.c new file mode 100644 index 00000000..835cf1ce --- /dev/null +++ b/src/data/scene/PLAYER_SELECT2.c @@ -0,0 +1,29 @@ +#include "m_scene.h" + +extern Actor_data PLAYER_SELECT2_player_data[]; +extern s16 PLAYER_SELECT2_ctrl_actor_data[]; + +extern Scene_Word_u PLAYER_SELECT2_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_PLAYER(PLAYER_SELECT2_player_data), // Player Data + mSc_DATA_ARRANGE_ROOM_CT(), // Arrange_room construct + mSc_DATA_CTRL_ACTORS(3, PLAYER_SELECT2_ctrl_actor_data), // Control actors + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_BGITEM, 1, 0xA000, mSc_ROOM_TYPE_MISC_ROOM, + FIELD_DRAW_TYPE_PLAYER_SELECT), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data PLAYER_SELECT2_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 100, 0, 120 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 PLAYER_SELECT2_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_EFFECT_CONTROL, // 2 +}; diff --git a/src/data/scene/PLAYER_SELECT3.c b/src/data/scene/PLAYER_SELECT3.c new file mode 100644 index 00000000..0d3b059e --- /dev/null +++ b/src/data/scene/PLAYER_SELECT3.c @@ -0,0 +1,29 @@ +#include "m_scene.h" + +extern Actor_data PLAYER_SELECT3_player_data[]; +extern s16 PLAYER_SELECT3_ctrl_actor_data[]; + +extern Scene_Word_u PLAYER_SELECT3_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_PLAYER(PLAYER_SELECT3_player_data), // Player Data + mSc_DATA_ARRANGE_ROOM_CT(), // Arrange_room construct + mSc_DATA_CTRL_ACTORS(3, PLAYER_SELECT3_ctrl_actor_data), // Control actors + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_BGITEM, 1, 0xA000, mSc_ROOM_TYPE_MISC_ROOM, + FIELD_DRAW_TYPE_PLAYER_SELECT), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data PLAYER_SELECT3_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 100, 0, 120 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 PLAYER_SELECT3_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_EFFECT_CONTROL, // 2 +}; diff --git a/src/data/scene/PLAYER_SELECT4.c b/src/data/scene/PLAYER_SELECT4.c new file mode 100644 index 00000000..bfc53747 --- /dev/null +++ b/src/data/scene/PLAYER_SELECT4.c @@ -0,0 +1,29 @@ +#include "m_scene.h" + +extern Actor_data PLAYER_SELECT4_player_data[]; +extern s16 PLAYER_SELECT4_ctrl_actor_data[]; + +extern Scene_Word_u PLAYER_SELECT4_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_PLAYER(PLAYER_SELECT4_player_data), // Player Data + mSc_DATA_ARRANGE_ROOM_CT(), // Arrange_room construct + mSc_DATA_CTRL_ACTORS(3, PLAYER_SELECT4_ctrl_actor_data), // Control actors + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_BGITEM, 1, 0xA000, mSc_ROOM_TYPE_MISC_ROOM, + FIELD_DRAW_TYPE_PLAYER_SELECT), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data PLAYER_SELECT4_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 100, 0, 120 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 PLAYER_SELECT4_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_EFFECT_CONTROL, // 2 +}; diff --git a/src/data/scene/broker_shop.c b/src/data/scene/broker_shop.c new file mode 100644 index 00000000..3dc254ef --- /dev/null +++ b/src/data/scene/broker_shop.c @@ -0,0 +1,53 @@ +#include "m_scene.h" + +extern Door_data_c BROKER_SHOP_door_data[]; +extern Actor_data BROKER_SHOP_player_data[]; +extern s16 BROKER_SHOP_ctrl_actor_data[]; + +extern Scene_Word_u broker_shop_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_DOOR_DATA(1, BROKER_SHOP_door_data), // Door data + mSc_DATA_PLAYER(BROKER_SHOP_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(6), // Arrange furniture params + mSc_DATA_ARRANGE_ROOM_CT(), // Arrange_room construct + mSc_DATA_CTRL_ACTORS(11, BROKER_SHOP_ctrl_actor_data), // Control actors + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xA000, mSc_ROOM_TYPE_MISC_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data BROKER_SHOP_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 100, 0, 200 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 BROKER_SHOP_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_TOOLS, // 2 + mAc_PROFILE_HANDOVERITEM, // 3 + mAc_PROFILE_EFFECT_CONTROL, // 4 + mAc_PROFILE_SHOP_LEVEL, // 5 + mAc_PROFILE_QUEST_MANAGER, // 6 + mAc_PROFILE_EVENT_MANAGER, // 7 + mAc_PROFILE_WEATHER, // 8 + mAc_PROFILE_BROKER_DESIGN, // 9 + mAc_PROFILE_MY_ROOM, // 10 +}; + +extern Door_data_c BROKER_SHOP_door_data[] = { + { + SCENE_TEST2, // scene + 1, // exit orientation + 0, // exit type + 0, // arg + { 40, 0, 1730 }, // exit position + 0x0000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/buggy.c b/src/data/scene/buggy.c new file mode 100644 index 00000000..e99360f6 --- /dev/null +++ b/src/data/scene/buggy.c @@ -0,0 +1,48 @@ +#include "m_scene.h" + +extern Door_data_c BUGGY_door_data[]; +extern Actor_data BUGGY_player_data[]; +extern s16 BUGGY_ctrl_actor_data[]; + +extern Scene_Word_u buggy_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_DOOR_DATA(1, BUGGY_door_data), // Door data + mSc_DATA_PLAYER(BUGGY_player_data), // Player Data + mSc_DATA_CTRL_ACTORS(8, BUGGY_ctrl_actor_data), // Control actors + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_BGITEM, 1, 0xA000, mSc_ROOM_TYPE_MISC_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data BUGGY_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 160, 0, 260 }, // position + { 0, -32768, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 BUGGY_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_TOOLS, // 2 + mAc_PROFILE_EFFECT_CONTROL, // 3 + mAc_PROFILE_SHOP_LEVEL, // 4 + mAc_PROFILE_QUEST_MANAGER, // 5 + mAc_PROFILE_EVENT_MANAGER, // 6 + mAc_PROFILE_WEATHER, // 7 +}; + +extern Door_data_c BUGGY_door_data[] = { + { + SCENE_FG, // scene + 1, // exit orientation + 0, // exit type + 0, // arg + { 1600, 0, 740 }, // exit position + 0x0000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/event_notification.c b/src/data/scene/event_notification.c new file mode 100644 index 00000000..abb818a7 --- /dev/null +++ b/src/data/scene/event_notification.c @@ -0,0 +1,37 @@ +#include "m_scene.h" + +extern Actor_data EVENT_NOTIFICATION_player_data[]; +extern s16 EVENT_NOTIFICATION_ctrl_actor_data[]; + +extern Scene_Word_u event_notification_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_PLAYER(EVENT_NOTIFICATION_player_data), // Player Data + mSc_DATA_CTRL_ACTORS(12, EVENT_NOTIFICATION_ctrl_actor_data), // Control actors + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_BGITEM, 4, 0x2800, mSc_ROOM_TYPE_OUTDOORS, + FIELD_DRAW_TYPE_OUTDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data EVENT_NOTIFICATION_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 940, 0, 940 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 EVENT_NOTIFICATION_ctrl_actor_data[] = { + mAc_PROFILE_EFFECTBG, // 0 + mAc_PROFILE_BIRTH_CONTROL, // 1 + mAc_PROFILE_STRUCTURE, // 2 + mAc_PROFILE_INSECT, // 3 + mAc_PROFILE_TOOLS, // 4 + mAc_PROFILE_HANDOVERITEM, // 5 + mAc_PROFILE_EFFECT_CONTROL, // 6 + mAc_PROFILE_SHOP_LEVEL, // 7 + mAc_PROFILE_QUEST_MANAGER, // 8 + mAc_PROFILE_EVENT_MANAGER, // 9 + mAc_PROFILE_WEATHER, // 10 + mAc_PROFILE_SET_NPC_MANAGER, // 11 +}; diff --git a/src/data/scene/fg_tool_in.c b/src/data/scene/fg_tool_in.c new file mode 100644 index 00000000..5ad50634 --- /dev/null +++ b/src/data/scene/fg_tool_in.c @@ -0,0 +1,80 @@ +#include "m_scene.h" + +extern Door_data_c FG_TOOL_IN_door_data[]; +extern Actor_data FG_TOOL_IN_player_data[]; +extern s16 FG_TOOL_IN_ctrl_actor_data[]; +extern Actor_data FG_TOOL_IN_actor_data[]; +extern s16 FG_TOOL_IN_object_bank[]; + +extern Scene_Word_u fg_tool_in_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_DOOR_DATA(1, FG_TOOL_IN_door_data), // Door data + mSc_DATA_PLAYER(FG_TOOL_IN_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(30), // Arrange furniture params + mSc_DATA_ARRANGE_ROOM_CT(), // Arrange_room construct + mSc_DATA_CTRL_ACTORS(9, FG_TOOL_IN_ctrl_actor_data), // Control actors + mSc_DATA_ACTORS(3, FG_TOOL_IN_actor_data), // Player Data + mSc_DATA_OBJ_BANK(1, FG_TOOL_IN_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xA000, mSc_ROOM_TYPE_MISC_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data FG_TOOL_IN_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 160, 0, 260 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 FG_TOOL_IN_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC, // 1 + mAc_PROFILE_INSECT, // 2 + mAc_PROFILE_TOOLS, // 3 + mAc_PROFILE_HANDOVERITEM, // 4 + mAc_PROFILE_EFFECT_CONTROL, // 5 + mAc_PROFILE_WEATHER, // 6 + mAc_PROFILE_ARRANGE_ROOM, // 7 + mAc_PROFILE_MY_ROOM, // 8 +}; + +extern Actor_data FG_TOOL_IN_actor_data[] = { + { + mAc_PROFILE_ROOM_SUNSHINE, // profile + { 40, 0, 160 }, // position + { 0, 0, 0 }, // rotation + 2 // ct arg + }, + { + mAc_PROFILE_ROOM_SUNSHINE, // profile + { 282, 0, 160 }, // position + { 0, 0, 0 }, // rotation + 3 // ct arg + }, + { + mAc_PROFILE_LAMP_LIGHT, // profile + { 0, 0, 0 }, // position + { 0, 0, 0 }, // rotation + -1 // ct arg + }, +}; + +extern s16 FG_TOOL_IN_object_bank[] = { + ACTOR_OBJ_BANK_ROOM_SUNSHINE, // 0 +}; + +extern Door_data_c FG_TOOL_IN_door_data[] = { + { + SCENE_NPC_TEST, // scene + 1, // exit orientation + 0, // exit type + 0, // arg + { 400, 0, 460 }, // exit position + 0x0000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/field_tool_field.c b/src/data/scene/field_tool_field.c new file mode 100644 index 00000000..76aad6ae --- /dev/null +++ b/src/data/scene/field_tool_field.c @@ -0,0 +1,51 @@ +#include "m_scene.h" + +extern Actor_data FIELD_TOOL_FIELD_player_data[]; +extern s16 FIELD_TOOL_FIELD_ctrl_actor_data[]; +extern Actor_data FIELD_TOOL_FIELD_actor_data[]; +extern s16 FIELD_TOOL_FIELD_object_bank[]; + +extern Scene_Word_u field_tool_field_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_PLAYER(FIELD_TOOL_FIELD_player_data), // Player Data + mSc_DATA_CTRL_ACTORS(9, FIELD_TOOL_FIELD_ctrl_actor_data), // Control actors + mSc_DATA_ACTORS(1, FIELD_TOOL_FIELD_actor_data), // Player Data + mSc_DATA_OBJ_BANK(1, FIELD_TOOL_FIELD_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_BGITEM, 4, 0x2800, mSc_ROOM_TYPE_OUTDOORS, + FIELD_DRAW_TYPE_OUTDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data FIELD_TOOL_FIELD_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 2240, 0, 1600 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 FIELD_TOOL_FIELD_ctrl_actor_data[] = { + mAc_PROFILE_EFFECTBG, // 0 + mAc_PROFILE_BIRTH_CONTROL, // 1 + mAc_PROFILE_NPC, // 2 + mAc_PROFILE_STRUCTURE, // 3 + mAc_PROFILE_TOOLS, // 4 + mAc_PROFILE_HANDOVERITEM, // 5 + mAc_PROFILE_EFFECT_CONTROL, // 6 + mAc_PROFILE_WEATHER, // 7 + mAc_PROFILE_QUEST_MANAGER, // 8 +}; + +extern Actor_data FIELD_TOOL_FIELD_actor_data[] = { + { + mAc_PROFILE_UKI, // profile + { 340, 0, 430 }, // position + { 0, 0, 0 }, // rotation + -1 // ct arg + }, +}; + +extern s16 FIELD_TOOL_FIELD_object_bank[] = { + ACTOR_OBJ_BANK_48, // 0 +}; diff --git a/src/data/scene/kamakura.c b/src/data/scene/kamakura.c new file mode 100644 index 00000000..2aa9dbde --- /dev/null +++ b/src/data/scene/kamakura.c @@ -0,0 +1,52 @@ +#include "m_scene.h" + +extern Door_data_c KAMAKURA_door_data[]; +extern Actor_data KAMAKURA_player_data[]; +extern s16 KAMAKURA_ctrl_actor_data[]; + +extern Scene_Word_u kamakura_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_DOOR_DATA(1, KAMAKURA_door_data), // Door data + mSc_DATA_PLAYER(KAMAKURA_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(3), // Arrange furniture params + mSc_DATA_CTRL_ACTORS(11, KAMAKURA_ctrl_actor_data), // Control actors + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xA000, mSc_ROOM_TYPE_MISC_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data KAMAKURA_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 160, 0, 260 }, // position + { 0, -32768, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 KAMAKURA_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_MY_ROOM, // 1 + mAc_PROFILE_NPC2, // 2 + mAc_PROFILE_INSECT, // 3 + mAc_PROFILE_TOOLS, // 4 + mAc_PROFILE_HANDOVERITEM, // 5 + mAc_PROFILE_EFFECT_CONTROL, // 6 + mAc_PROFILE_SHOP_LEVEL, // 7 + mAc_PROFILE_QUEST_MANAGER, // 8 + mAc_PROFILE_EVENT_MANAGER, // 9 + mAc_PROFILE_WEATHER, // 10 +}; + +extern Door_data_c KAMAKURA_door_data[] = { + { + SCENE_FG, // scene + 1, // exit orientation + 0, // exit type + 0, // arg + { 1600, 0, 740 }, // exit position + 0x0000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/lighthouse.c b/src/data/scene/lighthouse.c new file mode 100644 index 00000000..90f53f55 --- /dev/null +++ b/src/data/scene/lighthouse.c @@ -0,0 +1,53 @@ +#include "m_scene.h" + +extern Door_data_c LIGHTHOUSE_door_data[]; +extern Actor_data LIGHTHOUSE_player_data[]; +extern s16 LIGHTHOUSE_ctrl_actor_data[]; + +extern Scene_Word_u lighthouse_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_DOOR_DATA(1, LIGHTHOUSE_door_data), // Door data + mSc_DATA_PLAYER(LIGHTHOUSE_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(30), // Arrange furniture params + mSc_DATA_CTRL_ACTORS(12, LIGHTHOUSE_ctrl_actor_data), // Control actors + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xA000, mSc_ROOM_TYPE_NPC_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data LIGHTHOUSE_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 120, 0, 100 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 LIGHTHOUSE_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_INSECT, // 2 + mAc_PROFILE_TOOLS, // 3 + mAc_PROFILE_HANDOVERITEM, // 4 + mAc_PROFILE_EFFECT_CONTROL, // 5 + mAc_PROFILE_SHOP_LEVEL, // 6 + mAc_PROFILE_QUEST_MANAGER, // 7 + mAc_PROFILE_EVENT_MANAGER, // 8 + mAc_PROFILE_WEATHER, // 9 + mAc_PROFILE_MY_ROOM, // 10 + mAc_PROFILE_LIGHTHOUSE_SWITCH, // 11 +}; + +extern Door_data_c LIGHTHOUSE_door_data[] = { + { + SCENE_NPC_TEST, // scene + 1, // exit orientation + 0, // exit type + 0, // arg + { 400, 0, 460 }, // exit position + 0x0000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/museum_entrance.c b/src/data/scene/museum_entrance.c new file mode 100644 index 00000000..dffb8479 --- /dev/null +++ b/src/data/scene/museum_entrance.c @@ -0,0 +1,118 @@ +#include "m_scene.h" + +extern Door_data_c MUSEUM_ENTRANCE_door_data[]; +extern Actor_data MUSEUM_ENTRANCE_player_data[]; +extern s16 MUSEUM_ENTRANCE_ctrl_actor_data[]; +extern Actor_data MUSEUM_ENTRANCE_actor_data[]; +extern s16 MUSEUM_ENTRANCE_object_bank[]; + +extern Scene_Word_u museum_entrance_info[] = { + mSc_DATA_SOUND(0, 1), // Sound data + mSc_DATA_DOOR_DATA(4, MUSEUM_ENTRANCE_door_data), // Door data + mSc_DATA_PLAYER(MUSEUM_ENTRANCE_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(1), // Arrange furniture params + mSc_DATA_CTRL_ACTORS(12, MUSEUM_ENTRANCE_ctrl_actor_data), // Control actors + mSc_DATA_ACTORS(4, MUSEUM_ENTRANCE_actor_data), // Player Data + mSc_DATA_OBJ_BANK(1, MUSEUM_ENTRANCE_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xA000, mSc_ROOM_TYPE_MY_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data MUSEUM_ENTRANCE_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 240, 0, 200 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 MUSEUM_ENTRANCE_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_INSECT, // 2 + mAc_PROFILE_TOOLS, // 3 + mAc_PROFILE_HANDOVERITEM, // 4 + mAc_PROFILE_EFFECT_CONTROL, // 5 + mAc_PROFILE_SHOP_LEVEL, // 6 + mAc_PROFILE_QUEST_MANAGER, // 7 + mAc_PROFILE_EVENT_MANAGER, // 8 + mAc_PROFILE_WEATHER, // 9 + mAc_PROFILE_MY_ROOM, // 10 + mAc_PROFILE_HOUSE_CLOCK, // 11 +}; + +extern Actor_data MUSEUM_ENTRANCE_actor_data[] = { + { + mAc_PROFILE_ROOM_SUNSHINE_MUSEUM, // profile + { 123, -270, 180 }, // position + { 0, 0, 0 }, // rotation + 2 // ct arg + }, + { + mAc_PROFILE_ROOM_SUNSHINE_MUSEUM, // profile + { 360, -270, 180 }, // position + { 0, 0, 0 }, // rotation + 3 // ct arg + }, + { + mAc_PROFILE_ROOM_SUNSHINE_MUSEUM, // profile + { 123, -270, 380 }, // position + { 0, 0, 0 }, // rotation + 2 // ct arg + }, + { + mAc_PROFILE_ROOM_SUNSHINE_MUSEUM, // profile + { 360, -270, 380 }, // position + { 0, 0, 0 }, // rotation + 3 // ct arg + }, +}; + +extern s16 MUSEUM_ENTRANCE_object_bank[] = { + ACTOR_OBJ_BANK_EF_MUSEUM, // 0 +}; + +extern Door_data_c MUSEUM_ENTRANCE_door_data[] = { + { + SCENE_MUSEUM_ROOM_PAINTING, // scene + 4, // exit orientation + 0, // exit type + 0, // arg + { 280, 0, 480 }, // exit position + 0x4000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, + { + SCENE_MUSEUM_ROOM_FOSSIL, // scene + 4, // exit orientation + 0, // exit type + 0, // arg + { 280, 0, 480 }, // exit position + 0x4001, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, + { + SCENE_MUSEUM_ROOM_INSECT, // scene + 6, // exit orientation + 0, // exit type + 0, // arg + { 520, 0, 560 }, // exit position + 0x4002, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, + { + SCENE_MUSEUM_ROOM_FISH, // scene + 2, // exit orientation + 0, // exit type + 0, // arg + { 120, 0, 560 }, // exit position + 0x4003, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/museum_fish.c b/src/data/scene/museum_fish.c new file mode 100644 index 00000000..05ea6580 --- /dev/null +++ b/src/data/scene/museum_fish.c @@ -0,0 +1,75 @@ +#include "m_scene.h" + +extern Door_data_c MUSEUM_FISH_door_data[]; +extern Actor_data MUSEUM_FISH_player_data[]; +extern s16 MUSEUM_FISH_ctrl_actor_data[]; +extern Actor_data MUSEUM_FISH_actor_data[]; +extern s16 MUSEUM_FISH_object_bank[]; + +extern Scene_Word_u museum_fish_info[] = { + mSc_DATA_SOUND(0, 1), // Sound data + mSc_DATA_DOOR_DATA(1, MUSEUM_FISH_door_data), // Door data + mSc_DATA_PLAYER(MUSEUM_FISH_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(1), // Arrange furniture params + mSc_DATA_CTRL_ACTORS(11, MUSEUM_FISH_ctrl_actor_data), // Control actors + mSc_DATA_ACTORS(2, MUSEUM_FISH_actor_data), // Player Data + mSc_DATA_OBJ_BANK(1, MUSEUM_FISH_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xA000, mSc_ROOM_TYPE_MY_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data MUSEUM_FISH_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 120, 0, 150 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 MUSEUM_FISH_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_INSECT, // 2 + mAc_PROFILE_TOOLS, // 3 + mAc_PROFILE_HANDOVERITEM, // 4 + mAc_PROFILE_EFFECT_CONTROL, // 5 + mAc_PROFILE_SHOP_LEVEL, // 6 + mAc_PROFILE_QUEST_MANAGER, // 7 + mAc_PROFILE_EVENT_MANAGER, // 8 + mAc_PROFILE_WEATHER, // 9 + mAc_PROFILE_MY_ROOM, // 10 +}; + +extern Actor_data MUSEUM_FISH_actor_data[] = { + { + mAc_PROFILE_MUSEUM_FISH, // profile + { 280, 0, 160 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, + { + mAc_PROFILE_MUSEUM_INDOOR, // profile + { 280, 0, 160 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 MUSEUM_FISH_object_bank[] = { + ACTOR_OBJ_BANK_407, // 0 +}; + +extern Door_data_c MUSEUM_FISH_door_data[] = { + { + SCENE_MUSEUM_ENTRANCE, // scene + 6, // exit orientation + 0, // exit type + 0, // arg + { 360, 0, 280 }, // exit position + 0x4000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/museum_fossil.c b/src/data/scene/museum_fossil.c new file mode 100644 index 00000000..ce484e2b --- /dev/null +++ b/src/data/scene/museum_fossil.c @@ -0,0 +1,59 @@ +#include "m_scene.h" + +extern Door_data_c MUSEUM_FOSSIL_door_data[]; +extern Actor_data MUSEUM_FOSSIL_player_data[]; +extern s16 MUSEUM_FOSSIL_ctrl_actor_data[]; +extern s16 MUSEUM_FOSSIL_object_bank[]; + +extern Scene_Word_u museum_fossil_info[] = { + mSc_DATA_SOUND(0, 1), // Sound data + mSc_DATA_DOOR_DATA(1, MUSEUM_FOSSIL_door_data), // Door data + mSc_DATA_PLAYER(MUSEUM_FOSSIL_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(25), // Arrange furniture params + mSc_DATA_CTRL_ACTORS(12, MUSEUM_FOSSIL_ctrl_actor_data), // Control actors + mSc_DATA_OBJ_BANK(1, MUSEUM_FOSSIL_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xA000, mSc_ROOM_TYPE_MY_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data MUSEUM_FOSSIL_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 120, 0, 150 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 MUSEUM_FOSSIL_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_INSECT, // 2 + mAc_PROFILE_TOOLS, // 3 + mAc_PROFILE_HANDOVERITEM, // 4 + mAc_PROFILE_EFFECT_CONTROL, // 5 + mAc_PROFILE_SHOP_LEVEL, // 6 + mAc_PROFILE_QUEST_MANAGER, // 7 + mAc_PROFILE_EVENT_MANAGER, // 8 + mAc_PROFILE_WEATHER, // 9 + mAc_PROFILE_MY_ROOM, // 10 + mAc_PROFILE_MUSEUM_FOSSIL, // 11 +}; + +extern s16 MUSEUM_FOSSIL_object_bank[] = { + ACTOR_OBJ_BANK_369, // 0 +}; + +extern Door_data_c MUSEUM_FOSSIL_door_data[] = { + { + SCENE_MUSEUM_ENTRANCE, // scene + 0, // exit orientation + 0, // exit type + 0, // arg + { 320, 0, 120 }, // exit position + 0x4000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/museum_insect.c b/src/data/scene/museum_insect.c new file mode 100644 index 00000000..d478f30f --- /dev/null +++ b/src/data/scene/museum_insect.c @@ -0,0 +1,87 @@ +#include "m_scene.h" + +extern Door_data_c MUSEUM_INSECT_door_data[]; +extern Actor_data MUSEUM_INSECT_player_data[]; +extern s16 MUSEUM_INSECT_ctrl_actor_data[]; +extern Actor_data MUSEUM_INSECT_actor_data[]; +extern s16 MUSEUM_INSECT_object_bank[]; + +extern Scene_Word_u museum_insect_info[] = { + mSc_DATA_SOUND(0, 1), // Sound data + mSc_DATA_DOOR_DATA(1, MUSEUM_INSECT_door_data), // Door data + mSc_DATA_PLAYER(MUSEUM_INSECT_player_data), // Player Data + mSc_DATA_CTRL_ACTORS(11, MUSEUM_INSECT_ctrl_actor_data), // Control actors + mSc_DATA_ACTORS(4, MUSEUM_INSECT_actor_data), // Player Data + mSc_DATA_OBJ_BANK(2, MUSEUM_INSECT_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xB000, mSc_ROOM_TYPE_MY_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data MUSEUM_INSECT_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 120, 0, 150 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 MUSEUM_INSECT_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_INSECT, // 2 + mAc_PROFILE_TOOLS, // 3 + mAc_PROFILE_HANDOVERITEM, // 4 + mAc_PROFILE_EFFECT_CONTROL, // 5 + mAc_PROFILE_SHOP_LEVEL, // 6 + mAc_PROFILE_QUEST_MANAGER, // 7 + mAc_PROFILE_EVENT_MANAGER, // 8 + mAc_PROFILE_WEATHER, // 9 + mAc_PROFILE_MY_ROOM, // 10 +}; + +extern Actor_data MUSEUM_INSECT_actor_data[] = { + { + mAc_PROFILE_ROOM_SUNSHINE_MINSECT, // profile + { 40, 0, 280 }, // position + { 0, 0, 0 }, // rotation + 2 // ct arg + }, + { + mAc_PROFILE_ROOM_SUNSHINE_MINSECT, // profile + { 520, 0, 280 }, // position + { 0, 0, 0 }, // rotation + 3 // ct arg + }, + { + mAc_PROFILE_MUSEUM_INSECT, // profile + { 280, 0, 160 }, // position + { 0, 0, 0 }, // rotation + 3 // ct arg + }, + { + mAc_PROFILE_MUSEUM_INDOOR, // profile + { 280, 0, 160 }, // position + { 0, 0, 0 }, // rotation + 3 // ct arg + }, +}; + +extern s16 MUSEUM_INSECT_object_bank[] = { + ACTOR_OBJ_BANK_EF_MINSECT, // 0 + ACTOR_OBJ_BANK_408, // 1 +}; + +extern Door_data_c MUSEUM_INSECT_door_data[] = { + { + SCENE_MUSEUM_ENTRANCE, // scene + 2, // exit orientation + 0, // exit type + 0, // arg + { 120, 0, 280 }, // exit position + 0x4000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/museum_picture.c b/src/data/scene/museum_picture.c new file mode 100644 index 00000000..b86dd8ff --- /dev/null +++ b/src/data/scene/museum_picture.c @@ -0,0 +1,72 @@ +#include "m_scene.h" + +extern Door_data_c MUSEUM_PICTURE_door_data[]; +extern Actor_data MUSEUM_PICTURE_player_data[]; +extern s16 MUSEUM_PICTURE_ctrl_actor_data[]; +extern Actor_data MUSEUM_PICTURE_actor_data[]; +extern s16 MUSEUM_PICTURE_object_bank[]; + +extern Scene_Word_u museum_picture_info[] = { + mSc_DATA_SOUND(0, 1), // Sound data + mSc_DATA_DOOR_DATA(1, MUSEUM_PICTURE_door_data), // Door data + mSc_DATA_PLAYER(MUSEUM_PICTURE_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(1), // Arrange furniture params + mSc_DATA_CTRL_ACTORS(11, MUSEUM_PICTURE_ctrl_actor_data), // Control actors + mSc_DATA_ACTORS(1, MUSEUM_PICTURE_actor_data), // Player Data + mSc_DATA_OBJ_BANK(1, MUSEUM_PICTURE_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xA000, mSc_ROOM_TYPE_MY_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data MUSEUM_PICTURE_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 120, 0, 150 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 MUSEUM_PICTURE_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_INSECT, // 2 + mAc_PROFILE_TOOLS, // 3 + mAc_PROFILE_HANDOVERITEM, // 4 + mAc_PROFILE_EFFECT_CONTROL, // 5 + mAc_PROFILE_SHOP_LEVEL, // 6 + mAc_PROFILE_QUEST_MANAGER, // 7 + mAc_PROFILE_EVENT_MANAGER, // 8 + mAc_PROFILE_WEATHER, // 9 + mAc_PROFILE_MY_ROOM, // 10 +}; + +extern Actor_data MUSEUM_PICTURE_actor_data[] = { + { + mAc_PROFILE_MUSEUM_PICTURE, // profile + { 40, 40, 40 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 MUSEUM_PICTURE_object_bank[] = { + ACTOR_OBJ_BANK_MUSEUM_PICTURE, // 0 +}; + +extern Door_data_c MUSEUM_PICTURE_door_data[] = { + { + SCENE_MUSEUM_ENTRANCE, // scene + 0, // exit orientation + 0, // exit type + 0, // arg + { 160, 0, 120 }, // exit position + 0x4000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, + { + // unused + }, +}; diff --git a/src/data/scene/npc_room01.c b/src/data/scene/npc_room01.c new file mode 100644 index 00000000..5a8e6487 --- /dev/null +++ b/src/data/scene/npc_room01.c @@ -0,0 +1,76 @@ +#include "m_scene.h" + +extern Door_data_c NPC_ROOM01_door_data[]; +extern Actor_data NPC_ROOM01_player_data[]; +extern s16 NPC_ROOM01_ctrl_actor_data[]; +extern Actor_data NPC_ROOM01_actor_data[]; +extern s16 NPC_ROOM01_object_bank[]; + +extern Scene_Word_u npc_room01_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_DOOR_DATA(1, NPC_ROOM01_door_data), // Door data + mSc_DATA_PLAYER(NPC_ROOM01_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(30), // Arrange furniture params + mSc_DATA_CTRL_ACTORS(12, NPC_ROOM01_ctrl_actor_data), // Control actors + mSc_DATA_ACTORS(2, NPC_ROOM01_actor_data), // Player Data + mSc_DATA_OBJ_BANK(1, NPC_ROOM01_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xA000, mSc_ROOM_TYPE_NPC_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data NPC_ROOM01_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 160, 0, 260 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 NPC_ROOM01_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_INSECT, // 2 + mAc_PROFILE_TOOLS, // 3 + mAc_PROFILE_HANDOVERITEM, // 4 + mAc_PROFILE_EFFECT_CONTROL, // 5 + mAc_PROFILE_SHOP_LEVEL, // 6 + mAc_PROFILE_QUEST_MANAGER, // 7 + mAc_PROFILE_EVENT_MANAGER, // 8 + mAc_PROFILE_WEATHER, // 9 + mAc_PROFILE_MY_ROOM, // 10 + mAc_PROFILE_ARRANGE_ROOM, // 11 +}; + +extern Actor_data NPC_ROOM01_actor_data[] = { + { + mAc_PROFILE_ROOM_SUNSHINE, // profile + { 40, 0, 160 }, // position + { 0, 0, 0 }, // rotation + 2 // ct arg + }, + { + mAc_PROFILE_ROOM_SUNSHINE, // profile + { 282, 0, 160 }, // position + { 0, 0, 0 }, // rotation + 3 // ct arg + }, +}; + +extern s16 NPC_ROOM01_object_bank[] = { + ACTOR_OBJ_BANK_ROOM_SUNSHINE, // 0 +}; + +extern Door_data_c NPC_ROOM01_door_data[] = { + { + SCENE_NPC_TEST, // scene + 1, // exit orientation + 0, // exit type + 0, // arg + { 400, 0, 460 }, // exit position + 0x0000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/npc_room_island.c b/src/data/scene/npc_room_island.c new file mode 100644 index 00000000..b19af392 --- /dev/null +++ b/src/data/scene/npc_room_island.c @@ -0,0 +1,76 @@ +#include "m_scene.h" + +extern Door_data_c NPC_ROOM_ISLAND_door_data[]; +extern Actor_data NPC_ROOM_ISLAND_player_data[]; +extern s16 NPC_ROOM_ISLAND_ctrl_actor_data[]; +extern Actor_data NPC_ROOM_ISLAND_actor_data[]; +extern s16 NPC_ROOM_ISLAND_object_bank[]; + +extern Scene_Word_u npc_room_island_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_DOOR_DATA(1, NPC_ROOM_ISLAND_door_data), // Door data + mSc_DATA_PLAYER(NPC_ROOM_ISLAND_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(30), // Arrange furniture params + mSc_DATA_CTRL_ACTORS(12, NPC_ROOM_ISLAND_ctrl_actor_data), // Control actors + mSc_DATA_ACTORS(2, NPC_ROOM_ISLAND_actor_data), // Player Data + mSc_DATA_OBJ_BANK(1, NPC_ROOM_ISLAND_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xA000, mSc_ROOM_TYPE_NPC_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data NPC_ROOM_ISLAND_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 160, 0, 260 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 NPC_ROOM_ISLAND_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_INSECT, // 2 + mAc_PROFILE_TOOLS, // 3 + mAc_PROFILE_HANDOVERITEM, // 4 + mAc_PROFILE_EFFECT_CONTROL, // 5 + mAc_PROFILE_SHOP_LEVEL, // 6 + mAc_PROFILE_QUEST_MANAGER, // 7 + mAc_PROFILE_EVENT_MANAGER, // 8 + mAc_PROFILE_WEATHER, // 9 + mAc_PROFILE_MY_ROOM, // 10 + mAc_PROFILE_ARRANGE_ROOM, // 11 +}; + +extern Actor_data NPC_ROOM_ISLAND_actor_data[] = { + { + mAc_PROFILE_ROOM_SUNSHINE, // profile + { 40, 0, 160 }, // position + { 0, 0, 0 }, // rotation + 2 // ct arg + }, + { + mAc_PROFILE_ROOM_SUNSHINE, // profile + { 282, 0, 160 }, // position + { 0, 0, 0 }, // rotation + 3 // ct arg + }, +}; + +extern s16 NPC_ROOM_ISLAND_object_bank[] = { + ACTOR_OBJ_BANK_ROOM_SUNSHINE, // 0 +}; + +extern Door_data_c NPC_ROOM_ISLAND_door_data[] = { + { + SCENE_NPC_TEST, // scene + 1, // exit orientation + 0, // exit type + 0, // arg + { 400, 0, 460 }, // exit position + 0x0000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/p_room_bm_l.c b/src/data/scene/p_room_bm_l.c new file mode 100644 index 00000000..6e827842 --- /dev/null +++ b/src/data/scene/p_room_bm_l.c @@ -0,0 +1,59 @@ +#include "m_scene.h" + +extern Door_data_c P_ROOM_BM_L_door_data[]; +extern Actor_data P_ROOM_BM_L_player_data[]; +extern s16 P_ROOM_BM_L_ctrl_actor_data[]; +extern s16 P_ROOM_BM_L_object_bank[]; + +extern Scene_Word_u p_room_bm_l_info[] = { + mSc_DATA_SOUND(0, 1), // Sound data + mSc_DATA_DOOR_DATA(1, P_ROOM_BM_L_door_data), // Door data + mSc_DATA_PLAYER(P_ROOM_BM_L_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(48), // Arrange furniture params + mSc_DATA_CTRL_ACTORS(12, P_ROOM_BM_L_ctrl_actor_data), // Control actors + mSc_DATA_OBJ_BANK(1, P_ROOM_BM_L_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xA000, mSc_ROOM_TYPE_MY_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data P_ROOM_BM_L_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 160, 0, 200 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 P_ROOM_BM_L_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_INSECT, // 2 + mAc_PROFILE_TOOLS, // 3 + mAc_PROFILE_HANDOVERITEM, // 4 + mAc_PROFILE_EFFECT_CONTROL, // 5 + mAc_PROFILE_SHOP_LEVEL, // 6 + mAc_PROFILE_QUEST_MANAGER, // 7 + mAc_PROFILE_EVENT_MANAGER, // 8 + mAc_PROFILE_WEATHER, // 9 + mAc_PROFILE_MY_ROOM, // 10 + mAc_PROFILE_MY_INDOOR, // 11 +}; + +extern s16 P_ROOM_BM_L_object_bank[] = { + ACTOR_OBJ_BANK_369, // 0 +}; + +extern Door_data_c P_ROOM_BM_L_door_data[] = { + { + SCENE_MY_ROOM_L, // scene + 6, // exit orientation + 0, // exit type + 0, // arg + { 300, 0, 380 }, // exit position + 0x4000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/p_room_bm_ll1.c b/src/data/scene/p_room_bm_ll1.c new file mode 100644 index 00000000..896494be --- /dev/null +++ b/src/data/scene/p_room_bm_ll1.c @@ -0,0 +1,59 @@ +#include "m_scene.h" + +extern Door_data_c P_ROOM_BM_LL1_door_data[]; +extern Actor_data P_ROOM_BM_LL1_player_data[]; +extern s16 P_ROOM_BM_LL1_ctrl_actor_data[]; +extern s16 P_ROOM_BM_LL1_object_bank[]; + +extern Scene_Word_u p_room_bm_ll1_info[] = { + mSc_DATA_SOUND(0, 1), // Sound data + mSc_DATA_DOOR_DATA(1, P_ROOM_BM_LL1_door_data), // Door data + mSc_DATA_PLAYER(P_ROOM_BM_LL1_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(48), // Arrange furniture params + mSc_DATA_CTRL_ACTORS(12, P_ROOM_BM_LL1_ctrl_actor_data), // Control actors + mSc_DATA_OBJ_BANK(1, P_ROOM_BM_LL1_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xA000, mSc_ROOM_TYPE_MY_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data P_ROOM_BM_LL1_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 160, 0, 200 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 P_ROOM_BM_LL1_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_INSECT, // 2 + mAc_PROFILE_TOOLS, // 3 + mAc_PROFILE_HANDOVERITEM, // 4 + mAc_PROFILE_EFFECT_CONTROL, // 5 + mAc_PROFILE_SHOP_LEVEL, // 6 + mAc_PROFILE_QUEST_MANAGER, // 7 + mAc_PROFILE_EVENT_MANAGER, // 8 + mAc_PROFILE_WEATHER, // 9 + mAc_PROFILE_MY_ROOM, // 10 + mAc_PROFILE_MY_INDOOR, // 11 +}; + +extern s16 P_ROOM_BM_LL1_object_bank[] = { + ACTOR_OBJ_BANK_369, // 0 +}; + +extern Door_data_c P_ROOM_BM_LL1_door_data[] = { + { + SCENE_MY_ROOM_LL1, // scene + 6, // exit orientation + 0, // exit type + 0, // arg + { 300, 0, 380 }, // exit position + 0x4000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/p_room_bm_m.c b/src/data/scene/p_room_bm_m.c new file mode 100644 index 00000000..e42a21a5 --- /dev/null +++ b/src/data/scene/p_room_bm_m.c @@ -0,0 +1,59 @@ +#include "m_scene.h" + +extern Door_data_c P_ROOM_BM_M_door_data[]; +extern Actor_data P_ROOM_BM_M_player_data[]; +extern s16 P_ROOM_BM_M_ctrl_actor_data[]; +extern s16 P_ROOM_BM_M_object_bank[]; + +extern Scene_Word_u p_room_bm_m_info[] = { + mSc_DATA_SOUND(0, 1), // Sound data + mSc_DATA_DOOR_DATA(1, P_ROOM_BM_M_door_data), // Door data + mSc_DATA_PLAYER(P_ROOM_BM_M_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(48), // Arrange furniture params + mSc_DATA_CTRL_ACTORS(12, P_ROOM_BM_M_ctrl_actor_data), // Control actors + mSc_DATA_OBJ_BANK(1, P_ROOM_BM_M_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xA000, mSc_ROOM_TYPE_MY_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data P_ROOM_BM_M_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 160, 0, 200 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 P_ROOM_BM_M_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_INSECT, // 2 + mAc_PROFILE_TOOLS, // 3 + mAc_PROFILE_HANDOVERITEM, // 4 + mAc_PROFILE_EFFECT_CONTROL, // 5 + mAc_PROFILE_SHOP_LEVEL, // 6 + mAc_PROFILE_QUEST_MANAGER, // 7 + mAc_PROFILE_EVENT_MANAGER, // 8 + mAc_PROFILE_WEATHER, // 9 + mAc_PROFILE_MY_ROOM, // 10 + mAc_PROFILE_MY_INDOOR, // 11 +}; + +extern s16 P_ROOM_BM_M_object_bank[] = { + ACTOR_OBJ_BANK_369, // 0 +}; + +extern Door_data_c P_ROOM_BM_M_door_data[] = { + { + SCENE_MY_ROOM_M, // scene + 6, // exit orientation + 0, // exit type + 0, // arg + { 260, 0, 300 }, // exit position + 0x4000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/p_room_bm_s.c b/src/data/scene/p_room_bm_s.c new file mode 100644 index 00000000..972e4443 --- /dev/null +++ b/src/data/scene/p_room_bm_s.c @@ -0,0 +1,59 @@ +#include "m_scene.h" + +extern Door_data_c P_ROOM_BM_S_door_data[]; +extern Actor_data P_ROOM_BM_S_player_data[]; +extern s16 P_ROOM_BM_S_ctrl_actor_data[]; +extern s16 P_ROOM_BM_S_object_bank[]; + +extern Scene_Word_u p_room_bm_s_info[] = { + mSc_DATA_SOUND(0, 1), // Sound data + mSc_DATA_DOOR_DATA(1, P_ROOM_BM_S_door_data), // Door data + mSc_DATA_PLAYER(P_ROOM_BM_S_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(48), // Arrange furniture params + mSc_DATA_CTRL_ACTORS(12, P_ROOM_BM_S_ctrl_actor_data), // Control actors + mSc_DATA_OBJ_BANK(1, P_ROOM_BM_S_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xA000, mSc_ROOM_TYPE_MY_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data P_ROOM_BM_S_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 160, 0, 200 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 P_ROOM_BM_S_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_INSECT, // 2 + mAc_PROFILE_TOOLS, // 3 + mAc_PROFILE_HANDOVERITEM, // 4 + mAc_PROFILE_EFFECT_CONTROL, // 5 + mAc_PROFILE_SHOP_LEVEL, // 6 + mAc_PROFILE_QUEST_MANAGER, // 7 + mAc_PROFILE_EVENT_MANAGER, // 8 + mAc_PROFILE_WEATHER, // 9 + mAc_PROFILE_MY_ROOM, // 10 + mAc_PROFILE_MY_INDOOR, // 11 +}; + +extern s16 P_ROOM_BM_S_object_bank[] = { + ACTOR_OBJ_BANK_369, // 0 +}; + +extern Door_data_c P_ROOM_BM_S_door_data[] = { + { + SCENE_MY_ROOM_S, // scene + 6, // exit orientation + 0, // exit type + 0, // arg + { 220, 0, 220 }, // exit position + 0x4000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/player_room_island.c b/src/data/scene/player_room_island.c new file mode 100644 index 00000000..698f5947 --- /dev/null +++ b/src/data/scene/player_room_island.c @@ -0,0 +1,77 @@ +#include "m_scene.h" + +extern Door_data_c PLAYER_ROOM_ISLAND_door_data[]; +extern Actor_data PLAYER_ROOM_ISLAND_player_data[]; +extern s16 PLAYER_ROOM_ISLAND_ctrl_actor_data[]; +extern Actor_data PLAYER_ROOM_ISLAND_actor_data[]; +extern s16 PLAYER_ROOM_ISLAND_object_bank[]; + +extern Scene_Word_u player_room_island_info[] = { + mSc_DATA_SOUND(0, 1), // Sound data + mSc_DATA_DOOR_DATA(1, PLAYER_ROOM_ISLAND_door_data), // Door data + mSc_DATA_PLAYER(PLAYER_ROOM_ISLAND_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(48), // Arrange furniture params + mSc_DATA_CTRL_ACTORS(12, PLAYER_ROOM_ISLAND_ctrl_actor_data), // Control actors + mSc_DATA_ACTORS(2, PLAYER_ROOM_ISLAND_actor_data), // Player Data + mSc_DATA_OBJ_BANK(2, PLAYER_ROOM_ISLAND_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xA000, mSc_ROOM_TYPE_MY_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data PLAYER_ROOM_ISLAND_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 160, 0, 200 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 PLAYER_ROOM_ISLAND_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_INSECT, // 2 + mAc_PROFILE_TOOLS, // 3 + mAc_PROFILE_HANDOVERITEM, // 4 + mAc_PROFILE_EFFECT_CONTROL, // 5 + mAc_PROFILE_SHOP_LEVEL, // 6 + mAc_PROFILE_QUEST_MANAGER, // 7 + mAc_PROFILE_EVENT_MANAGER, // 8 + mAc_PROFILE_WEATHER, // 9 + mAc_PROFILE_MY_ROOM, // 10 + mAc_PROFILE_MY_INDOOR, // 11 +}; + +extern Actor_data PLAYER_ROOM_ISLAND_actor_data[] = { + { + mAc_PROFILE_ROOM_SUNSHINE, // profile + { 40, 0, 200 }, // position + { 0, 0, 0 }, // rotation + 2 // ct arg + }, + { + mAc_PROFILE_ROOM_SUNSHINE, // profile + { 360, 0, 200 }, // position + { 0, 0, 0 }, // rotation + 3 // ct arg + }, +}; + +extern s16 PLAYER_ROOM_ISLAND_object_bank[] = { + ACTOR_OBJ_BANK_ROOM_SUNSHINE, // 0 + ACTOR_OBJ_BANK_369, // 1 +}; + +extern Door_data_c PLAYER_ROOM_ISLAND_door_data[] = { + { + SCENE_MY_ROOM_BASEMENT_M, // scene + 6, // exit orientation + 0, // exit type + 0, // arg + { 300, 0, 380 }, // exit position + 0x4000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/player_room_l.c b/src/data/scene/player_room_l.c new file mode 100644 index 00000000..eb7fb028 --- /dev/null +++ b/src/data/scene/player_room_l.c @@ -0,0 +1,77 @@ +#include "m_scene.h" + +extern Door_data_c PLAYER_ROOM_L_door_data[]; +extern Actor_data PLAYER_ROOM_L_player_data[]; +extern s16 PLAYER_ROOM_L_ctrl_actor_data[]; +extern Actor_data PLAYER_ROOM_L_actor_data[]; +extern s16 PLAYER_ROOM_L_object_bank[]; + +extern Scene_Word_u player_room_l_info[] = { + mSc_DATA_SOUND(0, 1), // Sound data + mSc_DATA_DOOR_DATA(1, PLAYER_ROOM_L_door_data), // Door data + mSc_DATA_PLAYER(PLAYER_ROOM_L_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(48), // Arrange furniture params + mSc_DATA_CTRL_ACTORS(12, PLAYER_ROOM_L_ctrl_actor_data), // Control actors + mSc_DATA_ACTORS(2, PLAYER_ROOM_L_actor_data), // Player Data + mSc_DATA_OBJ_BANK(2, PLAYER_ROOM_L_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xA000, mSc_ROOM_TYPE_MY_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data PLAYER_ROOM_L_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 200, 0, 350 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 PLAYER_ROOM_L_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_INSECT, // 2 + mAc_PROFILE_TOOLS, // 3 + mAc_PROFILE_HANDOVERITEM, // 4 + mAc_PROFILE_EFFECT_CONTROL, // 5 + mAc_PROFILE_SHOP_LEVEL, // 6 + mAc_PROFILE_QUEST_MANAGER, // 7 + mAc_PROFILE_EVENT_MANAGER, // 8 + mAc_PROFILE_WEATHER, // 9 + mAc_PROFILE_MY_ROOM, // 10 + mAc_PROFILE_MY_INDOOR, // 11 +}; + +extern Actor_data PLAYER_ROOM_L_actor_data[] = { + { + mAc_PROFILE_ROOM_SUNSHINE, // profile + { 40, 0, 200 }, // position + { 0, 0, 0 }, // rotation + 2 // ct arg + }, + { + mAc_PROFILE_ROOM_SUNSHINE, // profile + { 360, 0, 200 }, // position + { 0, 0, 0 }, // rotation + 3 // ct arg + }, +}; + +extern s16 PLAYER_ROOM_L_object_bank[] = { + ACTOR_OBJ_BANK_ROOM_SUNSHINE, // 0 + ACTOR_OBJ_BANK_369, // 1 +}; + +extern Door_data_c PLAYER_ROOM_L_door_data[] = { + { + SCENE_MY_ROOM_BASEMENT_L, // scene + 6, // exit orientation + 0, // exit type + 0, // arg + { 300, 0, 380 }, // exit position + 0x4000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/player_room_ll1.c b/src/data/scene/player_room_ll1.c new file mode 100644 index 00000000..3437762c --- /dev/null +++ b/src/data/scene/player_room_ll1.c @@ -0,0 +1,87 @@ +#include "m_scene.h" + +extern Door_data_c PLAYER_ROOM_LL1_door_data[]; +extern Actor_data PLAYER_ROOM_LL1_player_data[]; +extern s16 PLAYER_ROOM_LL1_ctrl_actor_data[]; +extern Actor_data PLAYER_ROOM_LL1_actor_data[]; +extern s16 PLAYER_ROOM_LL1_object_bank[]; + +extern Scene_Word_u player_room_ll1_info[] = { + mSc_DATA_SOUND(0, 1), // Sound data + mSc_DATA_DOOR_DATA(2, PLAYER_ROOM_LL1_door_data), // Door data + mSc_DATA_PLAYER(PLAYER_ROOM_LL1_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(48), // Arrange furniture params + mSc_DATA_CTRL_ACTORS(12, PLAYER_ROOM_LL1_ctrl_actor_data), // Control actors + mSc_DATA_ACTORS(2, PLAYER_ROOM_LL1_actor_data), // Player Data + mSc_DATA_OBJ_BANK(2, PLAYER_ROOM_LL1_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xA000, mSc_ROOM_TYPE_MY_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data PLAYER_ROOM_LL1_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 200, 0, 350 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 PLAYER_ROOM_LL1_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_INSECT, // 2 + mAc_PROFILE_TOOLS, // 3 + mAc_PROFILE_HANDOVERITEM, // 4 + mAc_PROFILE_EFFECT_CONTROL, // 5 + mAc_PROFILE_SHOP_LEVEL, // 6 + mAc_PROFILE_QUEST_MANAGER, // 7 + mAc_PROFILE_EVENT_MANAGER, // 8 + mAc_PROFILE_WEATHER, // 9 + mAc_PROFILE_MY_ROOM, // 10 + mAc_PROFILE_MY_INDOOR, // 11 +}; + +extern Actor_data PLAYER_ROOM_LL1_actor_data[] = { + { + mAc_PROFILE_ROOM_SUNSHINE, // profile + { 40, 0, 200 }, // position + { 0, 0, 0 }, // rotation + 2 // ct arg + }, + { + mAc_PROFILE_ROOM_SUNSHINE, // profile + { 360, 0, 200 }, // position + { 0, 0, 0 }, // rotation + 3 // ct arg + }, +}; + +extern s16 PLAYER_ROOM_LL1_object_bank[] = { + ACTOR_OBJ_BANK_ROOM_SUNSHINE, // 0 + ACTOR_OBJ_BANK_369, // 1 +}; + +extern Door_data_c PLAYER_ROOM_LL1_door_data[] = { + { + SCENE_MY_ROOM_BASEMENT_LL1, // scene + 6, // exit orientation + 0, // exit type + 0, // arg + { 300, 0, 380 }, // exit position + 0x4000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, + { + SCENE_MY_ROOM_LL2, // scene + 2, // exit orientation + 0, // exit type + 0, // arg + { 60, 0, 300 }, // exit position + 0x4000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/player_room_ll2.c b/src/data/scene/player_room_ll2.c new file mode 100644 index 00000000..cf8c3665 --- /dev/null +++ b/src/data/scene/player_room_ll2.c @@ -0,0 +1,77 @@ +#include "m_scene.h" + +extern Door_data_c PLAYER_ROOM_LL2_door_data[]; +extern Actor_data PLAYER_ROOM_LL2_player_data[]; +extern s16 PLAYER_ROOM_LL2_ctrl_actor_data[]; +extern Actor_data PLAYER_ROOM_LL2_actor_data[]; +extern s16 PLAYER_ROOM_LL2_object_bank[]; + +extern Scene_Word_u player_room_ll2_info[] = { + mSc_DATA_SOUND(0, 1), // Sound data + mSc_DATA_DOOR_DATA(1, PLAYER_ROOM_LL2_door_data), // Door data + mSc_DATA_PLAYER(PLAYER_ROOM_LL2_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(48), // Arrange furniture params + mSc_DATA_CTRL_ACTORS(12, PLAYER_ROOM_LL2_ctrl_actor_data), // Control actors + mSc_DATA_ACTORS(2, PLAYER_ROOM_LL2_actor_data), // Player Data + mSc_DATA_OBJ_BANK(2, PLAYER_ROOM_LL2_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xA000, mSc_ROOM_TYPE_MY_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data PLAYER_ROOM_LL2_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 160, 0, 200 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 PLAYER_ROOM_LL2_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_INSECT, // 2 + mAc_PROFILE_TOOLS, // 3 + mAc_PROFILE_HANDOVERITEM, // 4 + mAc_PROFILE_EFFECT_CONTROL, // 5 + mAc_PROFILE_SHOP_LEVEL, // 6 + mAc_PROFILE_QUEST_MANAGER, // 7 + mAc_PROFILE_EVENT_MANAGER, // 8 + mAc_PROFILE_WEATHER, // 9 + mAc_PROFILE_MY_ROOM, // 10 + mAc_PROFILE_MY_INDOOR, // 11 +}; + +extern Actor_data PLAYER_ROOM_LL2_actor_data[] = { + { + mAc_PROFILE_ROOM_SUNSHINE, // profile + { 40, 0, 160 }, // position + { 0, 0, 0 }, // rotation + 2 // ct arg + }, + { + mAc_PROFILE_ROOM_SUNSHINE, // profile + { 280, 0, 160 }, // position + { 0, 0, 0 }, // rotation + 3 // ct arg + }, +}; + +extern s16 PLAYER_ROOM_LL2_object_bank[] = { + ACTOR_OBJ_BANK_ROOM_SUNSHINE, // 0 + ACTOR_OBJ_BANK_369, // 1 +}; + +extern Door_data_c PLAYER_ROOM_LL2_door_data[] = { + { + SCENE_MY_ROOM_LL1, // scene + 2, // exit orientation + 0, // exit type + 0, // arg + { 100, 0, 380 }, // exit position + 0x4000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/player_room_m.c b/src/data/scene/player_room_m.c new file mode 100644 index 00000000..c59bdff0 --- /dev/null +++ b/src/data/scene/player_room_m.c @@ -0,0 +1,77 @@ +#include "m_scene.h" + +extern Door_data_c PLAYER_ROOM_M_door_data[]; +extern Actor_data PLAYER_ROOM_M_player_data[]; +extern s16 PLAYER_ROOM_M_ctrl_actor_data[]; +extern Actor_data PLAYER_ROOM_M_actor_data[]; +extern s16 PLAYER_ROOM_M_object_bank[]; + +extern Scene_Word_u player_room_m_info[] = { + mSc_DATA_SOUND(0, 1), // Sound data + mSc_DATA_DOOR_DATA(1, PLAYER_ROOM_M_door_data), // Door data + mSc_DATA_PLAYER(PLAYER_ROOM_M_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(32), // Arrange furniture params + mSc_DATA_CTRL_ACTORS(12, PLAYER_ROOM_M_ctrl_actor_data), // Control actors + mSc_DATA_ACTORS(2, PLAYER_ROOM_M_actor_data), // Player Data + mSc_DATA_OBJ_BANK(2, PLAYER_ROOM_M_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xA000, mSc_ROOM_TYPE_MY_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data PLAYER_ROOM_M_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 160, 0, 200 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 PLAYER_ROOM_M_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_INSECT, // 2 + mAc_PROFILE_TOOLS, // 3 + mAc_PROFILE_HANDOVERITEM, // 4 + mAc_PROFILE_EFFECT_CONTROL, // 5 + mAc_PROFILE_SHOP_LEVEL, // 6 + mAc_PROFILE_QUEST_MANAGER, // 7 + mAc_PROFILE_EVENT_MANAGER, // 8 + mAc_PROFILE_WEATHER, // 9 + mAc_PROFILE_MY_ROOM, // 10 + mAc_PROFILE_MY_INDOOR, // 11 +}; + +extern Actor_data PLAYER_ROOM_M_actor_data[] = { + { + mAc_PROFILE_ROOM_SUNSHINE, // profile + { 40, 0, 160 }, // position + { 0, 0, 0 }, // rotation + 2 // ct arg + }, + { + mAc_PROFILE_ROOM_SUNSHINE, // profile + { 280, 0, 160 }, // position + { 0, 0, 0 }, // rotation + 3 // ct arg + }, +}; + +extern s16 PLAYER_ROOM_M_object_bank[] = { + ACTOR_OBJ_BANK_ROOM_SUNSHINE, // 0 + ACTOR_OBJ_BANK_369, // 1 +}; + +extern Door_data_c PLAYER_ROOM_M_door_data[] = { + { + SCENE_MY_ROOM_BASEMENT_M, // scene + 6, // exit orientation + 0, // exit type + 0, // arg + { 300, 0, 380 }, // exit position + 0x4000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/player_room_s.c b/src/data/scene/player_room_s.c new file mode 100644 index 00000000..8ad13165 --- /dev/null +++ b/src/data/scene/player_room_s.c @@ -0,0 +1,77 @@ +#include "m_scene.h" + +extern Door_data_c PLAYER_ROOM_S_door_data[]; +extern Actor_data PLAYER_ROOM_S_player_data[]; +extern s16 PLAYER_ROOM_S_ctrl_actor_data[]; +extern Actor_data PLAYER_ROOM_S_actor_data[]; +extern s16 PLAYER_ROOM_S_object_bank[]; + +extern Scene_Word_u player_room_s_info[] = { + mSc_DATA_SOUND(0, 1), // Sound data + mSc_DATA_DOOR_DATA(1, PLAYER_ROOM_S_door_data), // Door data + mSc_DATA_PLAYER(PLAYER_ROOM_S_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(30), // Arrange furniture params + mSc_DATA_CTRL_ACTORS(12, PLAYER_ROOM_S_ctrl_actor_data), // Control actors + mSc_DATA_ACTORS(2, PLAYER_ROOM_S_actor_data), // Player Data + mSc_DATA_OBJ_BANK(2, PLAYER_ROOM_S_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xA000, mSc_ROOM_TYPE_MY_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data PLAYER_ROOM_S_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 120, 0, 150 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 PLAYER_ROOM_S_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_INSECT, // 2 + mAc_PROFILE_TOOLS, // 3 + mAc_PROFILE_HANDOVERITEM, // 4 + mAc_PROFILE_EFFECT_CONTROL, // 5 + mAc_PROFILE_SHOP_LEVEL, // 6 + mAc_PROFILE_QUEST_MANAGER, // 7 + mAc_PROFILE_EVENT_MANAGER, // 8 + mAc_PROFILE_WEATHER, // 9 + mAc_PROFILE_MY_ROOM, // 10 + mAc_PROFILE_MY_INDOOR, // 11 +}; + +extern Actor_data PLAYER_ROOM_S_actor_data[] = { + { + mAc_PROFILE_ROOM_SUNSHINE, // profile + { 40, 0, 120 }, // position + { 0, 0, 0 }, // rotation + 2 // ct arg + }, + { + mAc_PROFILE_ROOM_SUNSHINE, // profile + { 200, 0, 120 }, // position + { 0, 0, 0 }, // rotation + 3 // ct arg + }, +}; + +extern s16 PLAYER_ROOM_S_object_bank[] = { + ACTOR_OBJ_BANK_ROOM_SUNSHINE, // 0 + ACTOR_OBJ_BANK_369, // 1 +}; + +extern Door_data_c PLAYER_ROOM_S_door_data[] = { + { + SCENE_MY_ROOM_BASEMENT_S, // scene + 6, // exit orientation + 0, // exit type + 0, // arg + { 300, 0, 380 }, // exit position + 0x4000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/player_select.c b/src/data/scene/player_select.c new file mode 100644 index 00000000..25428410 --- /dev/null +++ b/src/data/scene/player_select.c @@ -0,0 +1,29 @@ +#include "m_scene.h" + +extern Actor_data PLAYER_SELECT_player_data[]; +extern s16 PLAYER_SELECT_ctrl_actor_data[]; + +extern Scene_Word_u player_select_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_PLAYER(PLAYER_SELECT_player_data), // Player Data + mSc_DATA_ARRANGE_ROOM_CT(), // Arrange_room construct + mSc_DATA_CTRL_ACTORS(3, PLAYER_SELECT_ctrl_actor_data), // Control actors + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_BGITEM, 1, 0xA000, mSc_ROOM_TYPE_MISC_ROOM, + FIELD_DRAW_TYPE_PLAYER_SELECT), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data PLAYER_SELECT_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 100, 0, 120 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 PLAYER_SELECT_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_EFFECT_CONTROL, // 2 +}; diff --git a/src/data/scene/police_box.c b/src/data/scene/police_box.c new file mode 100644 index 00000000..70be7c4c --- /dev/null +++ b/src/data/scene/police_box.c @@ -0,0 +1,74 @@ +#include "m_scene.h" + +extern Door_data_c POLICE_BOX_door_data[]; +extern Actor_data POLICE_BOX_player_data[]; +extern s16 POLICE_BOX_ctrl_actor_data[]; +extern Actor_data POLICE_BOX_actor_data[]; +extern s16 POLICE_BOX_object_bank[]; + +extern Scene_Word_u police_box_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_DOOR_DATA(1, POLICE_BOX_door_data), // Door data + mSc_DATA_PLAYER(POLICE_BOX_player_data), // Player Data + mSc_DATA_CTRL_ACTORS(10, POLICE_BOX_ctrl_actor_data), // Control actors + mSc_DATA_ACTORS(2, POLICE_BOX_actor_data), // Player Data + mSc_DATA_OBJ_BANK(2, POLICE_BOX_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_BGPOLICEITEM, 1, 0xA000, mSc_ROOM_TYPE_MISC_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data POLICE_BOX_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 200, 0, 400 }, // position + { 0, -32768, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 POLICE_BOX_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_TOOLS, // 2 + mAc_PROFILE_HANDOVERITEM, // 3 + mAc_PROFILE_EFFECT_CONTROL, // 4 + mAc_PROFILE_SHOP_LEVEL, // 5 + mAc_PROFILE_QUEST_MANAGER, // 6 + mAc_PROFILE_EVENT_MANAGER, // 7 + mAc_PROFILE_WEATHER, // 8 + mAc_PROFILE_HOUSE_CLOCK, // 9 +}; + +extern Actor_data POLICE_BOX_actor_data[] = { + { + mAc_PROFILE_ROOM_SUNSHINE_POLICE, // profile + { 40, 0, 200 }, // position + { 0, 0, 0 }, // rotation + 2 // ct arg + }, + { + mAc_PROFILE_ROOM_SUNSHINE_POLICE, // profile + { 360, 0, 200 }, // position + { 0, 0, 0 }, // rotation + 3 // ct arg + }, +}; + +extern s16 POLICE_BOX_object_bank[] = { + ACTOR_OBJ_BANK_13, // 0 + ACTOR_OBJ_BANK_EF_POLICE, // 1 +}; + +extern Door_data_c POLICE_BOX_door_data[] = { + { + SCENE_TEST2, // scene + 1, // exit orientation + 0, // exit type + 0, // arg + { 40, 0, 1730 }, // exit position + 0x0000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/post_office.c b/src/data/scene/post_office.c new file mode 100644 index 00000000..f8de85f3 --- /dev/null +++ b/src/data/scene/post_office.c @@ -0,0 +1,80 @@ +#include "m_scene.h" + +extern Door_data_c POST_OFFICE_door_data[]; +extern Actor_data POST_OFFICE_player_data[]; +extern s16 POST_OFFICE_ctrl_actor_data[]; +extern Actor_data POST_OFFICE_actor_data[]; +extern s16 POST_OFFICE_object_bank[]; + +extern Scene_Word_u post_office_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_DOOR_DATA(1, POST_OFFICE_door_data), // Door data + mSc_DATA_PLAYER(POST_OFFICE_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(6), // Arrange furniture params + mSc_DATA_CTRL_ACTORS(10, POST_OFFICE_ctrl_actor_data), // Control actors + mSc_DATA_ACTORS(3, POST_OFFICE_actor_data), // Player Data + mSc_DATA_OBJ_BANK(1, POST_OFFICE_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_BGPOSTITEM, 1, 0xA000, mSc_ROOM_TYPE_MISC_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data POST_OFFICE_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 100, 0, 200 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 POST_OFFICE_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_TOOLS, // 2 + mAc_PROFILE_HANDOVERITEM, // 3 + mAc_PROFILE_EFFECT_CONTROL, // 4 + mAc_PROFILE_SHOP_LEVEL, // 5 + mAc_PROFILE_QUEST_MANAGER, // 6 + mAc_PROFILE_EVENT_MANAGER, // 7 + mAc_PROFILE_WEATHER, // 8 + mAc_PROFILE_HOUSE_CLOCK, // 9 +}; + +extern Actor_data POST_OFFICE_actor_data[] = { + { + mAc_PROFILE_ROOM_SUNSHINE_POSTHOUSE, // profile + { 40, 0, 160 }, // position + { 0, 0, 0 }, // rotation + 2 // ct arg + }, + { + mAc_PROFILE_ROOM_SUNSHINE_POSTHOUSE, // profile + { 280, 0, 160 }, // position + { 0, 0, 0 }, // rotation + 3 // ct arg + }, + { + mAc_PROFILE_PTERMINAL, // profile + { 60, 0, 240 }, // position + { 0, 0, 0 }, // rotation + 3 // ct arg + }, +}; + +extern s16 POST_OFFICE_object_bank[] = { + ACTOR_OBJ_BANK_POSTHOUSE, // 0 +}; + +extern Door_data_c POST_OFFICE_door_data[] = { + { + SCENE_TEST2, // scene + 1, // exit orientation + 0, // exit type + 0, // arg + { 40, 0, 1730 }, // exit position + 0x0000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/shop01.c b/src/data/scene/shop01.c new file mode 100644 index 00000000..bf51e165 --- /dev/null +++ b/src/data/scene/shop01.c @@ -0,0 +1,63 @@ +#include "m_scene.h" + +extern Door_data_c SHOP01_door_data[]; +extern Actor_data SHOP01_player_data[]; +extern s16 SHOP01_ctrl_actor_data[]; +extern s16 SHOP01_object_bank[]; + +extern Scene_Word_u shop01_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_DOOR_DATA(1, SHOP01_door_data), // Door data + mSc_DATA_PLAYER(SHOP01_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(6), // Arrange furniture params + mSc_DATA_CTRL_ACTORS(16, SHOP01_ctrl_actor_data), // Control actors + mSc_DATA_OBJ_BANK(1, SHOP01_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xA000, mSc_ROOM_TYPE_MISC_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data SHOP01_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 160, 0, 300 }, // position + { 0, -32768, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 SHOP01_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_SHOP_DESIGN, // 1 + mAc_PROFILE_NPC2, // 2 + mAc_PROFILE_INSECT, // 3 + mAc_PROFILE_TOOLS, // 4 + mAc_PROFILE_HANDOVERITEM, // 5 + mAc_PROFILE_EFFECT_CONTROL, // 6 + mAc_PROFILE_SHOP_LEVEL, // 7 + mAc_PROFILE_QUEST_MANAGER, // 8 + mAc_PROFILE_EVENT_MANAGER, // 9 + mAc_PROFILE_WEATHER, // 10 + mAc_PROFILE_HOUSE_CLOCK, // 11 + mAc_PROFILE_MY_ROOM, // 12 + mAc_PROFILE_SHOP_MANEKIN, // 13 + mAc_PROFILE_SHOP_INDOOR, // 14 + mAc_PROFILE_SHOP_UMBRELLA, // 15 +}; + +extern s16 SHOP01_object_bank[] = { + ACTOR_OBJ_BANK_13, // 0 +}; + +extern Door_data_c SHOP01_door_data[] = { + { + SCENE_TEST2, // scene + 1, // exit orientation + 0, // exit type + 0, // arg + { 40, 0, 1730 }, // exit position + 0x0000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/shop02.c b/src/data/scene/shop02.c new file mode 100644 index 00000000..0a9761f3 --- /dev/null +++ b/src/data/scene/shop02.c @@ -0,0 +1,63 @@ +#include "m_scene.h" + +extern Door_data_c SHOP02_door_data[]; +extern Actor_data SHOP02_player_data[]; +extern s16 SHOP02_ctrl_actor_data[]; +extern s16 SHOP02_object_bank[]; + +extern Scene_Word_u shop02_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_DOOR_DATA(1, SHOP02_door_data), // Door data + mSc_DATA_PLAYER(SHOP02_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(6), // Arrange furniture params + mSc_DATA_CTRL_ACTORS(16, SHOP02_ctrl_actor_data), // Control actors + mSc_DATA_OBJ_BANK(1, SHOP02_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xA000, mSc_ROOM_TYPE_MISC_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data SHOP02_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 320, 0, 300 }, // position + { 0, -32768, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 SHOP02_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_SHOP_DESIGN, // 1 + mAc_PROFILE_NPC2, // 2 + mAc_PROFILE_INSECT, // 3 + mAc_PROFILE_TOOLS, // 4 + mAc_PROFILE_HANDOVERITEM, // 5 + mAc_PROFILE_EFFECT_CONTROL, // 6 + mAc_PROFILE_SHOP_LEVEL, // 7 + mAc_PROFILE_QUEST_MANAGER, // 8 + mAc_PROFILE_EVENT_MANAGER, // 9 + mAc_PROFILE_WEATHER, // 10 + mAc_PROFILE_MY_ROOM, // 11 + mAc_PROFILE_SHOP_MANEKIN, // 12 + mAc_PROFILE_SHOP_INDOOR, // 13 + mAc_PROFILE_SHOP_UMBRELLA, // 14 + mAc_PROFILE_HOUSE_CLOCK, // 15 +}; + +extern s16 SHOP02_object_bank[] = { + ACTOR_OBJ_BANK_13, // 0 +}; + +extern Door_data_c SHOP02_door_data[] = { + { + SCENE_TEST2, // scene + 1, // exit orientation + 0, // exit type + 0, // arg + { 40, 0, 1730 }, // exit position + 0x0000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/shop03.c b/src/data/scene/shop03.c new file mode 100644 index 00000000..8e0194f2 --- /dev/null +++ b/src/data/scene/shop03.c @@ -0,0 +1,56 @@ +#include "m_scene.h" + +extern Door_data_c SHOP03_door_data[]; +extern Actor_data SHOP03_player_data[]; +extern s16 SHOP03_ctrl_actor_data[]; + +extern Scene_Word_u shop03_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_DOOR_DATA(1, SHOP03_door_data), // Door data + mSc_DATA_PLAYER(SHOP03_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(6), // Arrange furniture params + mSc_DATA_CTRL_ACTORS(15, SHOP03_ctrl_actor_data), // Control actors + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xA000, mSc_ROOM_TYPE_MISC_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data SHOP03_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 320, 0, 460 }, // position + { 0, -32768, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 SHOP03_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_SHOP_DESIGN, // 1 + mAc_PROFILE_TOOLS, // 2 + mAc_PROFILE_HANDOVERITEM, // 3 + mAc_PROFILE_EFFECT_CONTROL, // 4 + mAc_PROFILE_SHOP_LEVEL, // 5 + mAc_PROFILE_QUEST_MANAGER, // 6 + mAc_PROFILE_EVENT_MANAGER, // 7 + mAc_PROFILE_WEATHER, // 8 + mAc_PROFILE_HOUSE_CLOCK, // 9 + mAc_PROFILE_MY_ROOM, // 10 + mAc_PROFILE_SHOP_MANEKIN, // 11 + mAc_PROFILE_SHOP_INDOOR, // 12 + mAc_PROFILE_SHOP_UMBRELLA, // 13 + mAc_PROFILE_NPC2, // 14 +}; + +extern Door_data_c SHOP03_door_data[] = { + { + SCENE_TEST2, // scene + 1, // exit orientation + 0, // exit type + 0, // arg + { 40, 0, 1730 }, // exit position + 0x0000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/shop04_1f.c b/src/data/scene/shop04_1f.c new file mode 100644 index 00000000..232b3ea2 --- /dev/null +++ b/src/data/scene/shop04_1f.c @@ -0,0 +1,62 @@ +#include "m_scene.h" + +extern Door_data_c SHOP04_1F_door_data[]; +extern Actor_data SHOP04_1F_player_data[]; +extern s16 SHOP04_1F_ctrl_actor_data[]; +extern s16 SHOP04_1F_object_bank[]; + +extern Scene_Word_u shop04_1f_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_DOOR_DATA(1, SHOP04_1F_door_data), // Door data + mSc_DATA_PLAYER(SHOP04_1F_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(6), // Arrange furniture params + mSc_DATA_CTRL_ACTORS(15, SHOP04_1F_ctrl_actor_data), // Control actors + mSc_DATA_OBJ_BANK(1, SHOP04_1F_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xA000, mSc_ROOM_TYPE_MISC_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data SHOP04_1F_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 320, 0, 540 }, // position + { 0, -32768, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 SHOP04_1F_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_SHOP_DESIGN, // 1 + mAc_PROFILE_NPC2, // 2 + mAc_PROFILE_INSECT, // 3 + mAc_PROFILE_TOOLS, // 4 + mAc_PROFILE_HANDOVERITEM, // 5 + mAc_PROFILE_EFFECT_CONTROL, // 6 + mAc_PROFILE_SHOP_LEVEL, // 7 + mAc_PROFILE_QUEST_MANAGER, // 8 + mAc_PROFILE_EVENT_MANAGER, // 9 + mAc_PROFILE_WEATHER, // 10 + mAc_PROFILE_MY_ROOM, // 11 + mAc_PROFILE_SHOP_MANEKIN, // 12 + mAc_PROFILE_HOUSE_CLOCK, // 13 + mAc_PROFILE_SHOP_UMBRELLA, // 14 +}; + +extern s16 SHOP04_1F_object_bank[] = { + ACTOR_OBJ_BANK_13, // 0 +}; + +extern Door_data_c SHOP04_1F_door_data[] = { + { + SCENE_DEPART_2, // scene + 0, // exit orientation + 0, // exit type + 0, // arg + { 300, 40, 65 }, // exit position + 0x0000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/shop04_2f.c b/src/data/scene/shop04_2f.c new file mode 100644 index 00000000..54a8baf7 --- /dev/null +++ b/src/data/scene/shop04_2f.c @@ -0,0 +1,63 @@ +#include "m_scene.h" + +extern Door_data_c SHOP04_2F_door_data[]; +extern Actor_data SHOP04_2F_player_data[]; +extern s16 SHOP04_2F_ctrl_actor_data[]; +extern s16 SHOP04_2F_object_bank[]; + +extern Scene_Word_u shop04_2f_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_DOOR_DATA(1, SHOP04_2F_door_data), // Door data + mSc_DATA_PLAYER(SHOP04_2F_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(6), // Arrange furniture params + mSc_DATA_CTRL_ACTORS(16, SHOP04_2F_ctrl_actor_data), // Control actors + mSc_DATA_OBJ_BANK(1, SHOP04_2F_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xA000, mSc_ROOM_TYPE_MISC_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data SHOP04_2F_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 300, 0, 65 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 SHOP04_2F_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_SHOP_DESIGN, // 1 + mAc_PROFILE_NPC2, // 2 + mAc_PROFILE_INSECT, // 3 + mAc_PROFILE_TOOLS, // 4 + mAc_PROFILE_HANDOVERITEM, // 5 + mAc_PROFILE_EFFECT_CONTROL, // 6 + mAc_PROFILE_SHOP_LEVEL, // 7 + mAc_PROFILE_QUEST_MANAGER, // 8 + mAc_PROFILE_EVENT_MANAGER, // 9 + mAc_PROFILE_WEATHER, // 10 + mAc_PROFILE_MY_ROOM, // 11 + mAc_PROFILE_SHOP_MANEKIN, // 12 + mAc_PROFILE_SHOP_INDOOR, // 13 + mAc_PROFILE_SHOP_UMBRELLA, // 14 + mAc_PROFILE_HOUSE_CLOCK, // 15 +}; + +extern s16 SHOP04_2F_object_bank[] = { + ACTOR_OBJ_BANK_13, // 0 +}; + +extern Door_data_c SHOP04_2F_door_data[] = { + { + SCENE_DEPART, // scene + 0, // exit orientation + 0, // exit type + 0, // arg + { 280, 40, 65 }, // exit position + 0x0000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/start_demo1.c b/src/data/scene/start_demo1.c new file mode 100644 index 00000000..7c397fc9 --- /dev/null +++ b/src/data/scene/start_demo1.c @@ -0,0 +1,48 @@ +#include "m_scene.h" + +extern Door_data_c START_DEMO1_door_data[]; +extern Actor_data START_DEMO1_player_data[]; +extern s16 START_DEMO1_ctrl_actor_data[]; + +extern Scene_Word_u start_demo1_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_DOOR_DATA(1, START_DEMO1_door_data), // Door data + mSc_DATA_PLAYER(START_DEMO1_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(8), // Arrange furniture params + mSc_DATA_ARRANGE_ROOM_CT(), // Arrange_room construct + mSc_DATA_CTRL_ACTORS(6, START_DEMO1_ctrl_actor_data), // Control actors + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_BGITEM, 1, 0x7800, mSc_ROOM_TYPE_MISC_ROOM, + FIELD_DRAW_TYPE_TRAIN), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data START_DEMO1_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 120, 0, 340 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 START_DEMO1_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_TOOLS, // 2 + mAc_PROFILE_EFFECT_CONTROL, // 3 + mAc_PROFILE_QUEST_MANAGER, // 4 + mAc_PROFILE_WEATHER, // 5 +}; + +extern Door_data_c START_DEMO1_door_data[] = { + { + SCENE_FG, // scene + 1, // exit orientation + 0, // exit type + 0, // arg + { 1979, 200, 760 }, // exit position + 0x0000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/start_demo2.c b/src/data/scene/start_demo2.c new file mode 100644 index 00000000..39bf748e --- /dev/null +++ b/src/data/scene/start_demo2.c @@ -0,0 +1,48 @@ +#include "m_scene.h" + +extern Door_data_c START_DEMO2_door_data[]; +extern Actor_data START_DEMO2_player_data[]; +extern s16 START_DEMO2_ctrl_actor_data[]; + +extern Scene_Word_u start_demo2_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_DOOR_DATA(1, START_DEMO2_door_data), // Door data + mSc_DATA_PLAYER(START_DEMO2_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(8), // Arrange furniture params + mSc_DATA_ARRANGE_ROOM_CT(), // Arrange_room construct + mSc_DATA_CTRL_ACTORS(6, START_DEMO2_ctrl_actor_data), // Control actors + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_BGITEM, 1, 0xA000, mSc_ROOM_TYPE_MISC_ROOM, + FIELD_DRAW_TYPE_TRAIN), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data START_DEMO2_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 120, 0, 340 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 START_DEMO2_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_TOOLS, // 2 + mAc_PROFILE_EFFECT_CONTROL, // 3 + mAc_PROFILE_QUEST_MANAGER, // 4 + mAc_PROFILE_WEATHER, // 5 +}; + +extern Door_data_c START_DEMO2_door_data[] = { + { + SCENE_FG, // scene + 1, // exit orientation + 0, // exit type + 0, // arg + { 1979, 200, 760 }, // exit position + 0x0000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/start_demo3.c b/src/data/scene/start_demo3.c new file mode 100644 index 00000000..7d82d266 --- /dev/null +++ b/src/data/scene/start_demo3.c @@ -0,0 +1,48 @@ +#include "m_scene.h" + +extern Door_data_c START_DEMO3_door_data[]; +extern Actor_data START_DEMO3_player_data[]; +extern s16 START_DEMO3_ctrl_actor_data[]; + +extern Scene_Word_u start_demo3_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_DOOR_DATA(1, START_DEMO3_door_data), // Door data + mSc_DATA_PLAYER(START_DEMO3_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(8), // Arrange furniture params + mSc_DATA_ARRANGE_ROOM_CT(), // Arrange_room construct + mSc_DATA_CTRL_ACTORS(6, START_DEMO3_ctrl_actor_data), // Control actors + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_BGITEM, 1, 0x7800, mSc_ROOM_TYPE_MISC_ROOM, + FIELD_DRAW_TYPE_TRAIN), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data START_DEMO3_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 120, 0, 340 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 START_DEMO3_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_TOOLS, // 2 + mAc_PROFILE_EFFECT_CONTROL, // 3 + mAc_PROFILE_QUEST_MANAGER, // 4 + mAc_PROFILE_WEATHER, // 5 +}; + +extern Door_data_c START_DEMO3_door_data[] = { + { + SCENE_FG, // scene + 1, // exit orientation + 0, // exit type + 0, // arg + { 1979, 200, 760 }, // exit position + 0x0000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/tent.c b/src/data/scene/tent.c new file mode 100644 index 00000000..8209d650 --- /dev/null +++ b/src/data/scene/tent.c @@ -0,0 +1,52 @@ +#include "m_scene.h" + +extern Door_data_c TENT_door_data[]; +extern Actor_data TENT_player_data[]; +extern s16 TENT_ctrl_actor_data[]; + +extern Scene_Word_u tent_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_DOOR_DATA(1, TENT_door_data), // Door data + mSc_DATA_PLAYER(TENT_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(3), // Arrange furniture params + mSc_DATA_CTRL_ACTORS(11, TENT_ctrl_actor_data), // Control actors + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xA000, mSc_ROOM_TYPE_MISC_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data TENT_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 120, 0, 100 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 TENT_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_MY_ROOM, // 1 + mAc_PROFILE_NPC2, // 2 + mAc_PROFILE_INSECT, // 3 + mAc_PROFILE_TOOLS, // 4 + mAc_PROFILE_HANDOVERITEM, // 5 + mAc_PROFILE_EFFECT_CONTROL, // 6 + mAc_PROFILE_SHOP_LEVEL, // 7 + mAc_PROFILE_QUEST_MANAGER, // 8 + mAc_PROFILE_EVENT_MANAGER, // 9 + mAc_PROFILE_WEATHER, // 10 +}; + +extern Door_data_c TENT_door_data[] = { + { + SCENE_FG, // scene + 1, // exit orientation + 0, // exit type + 0, // arg + { 1600, 0, 740 }, // exit position + 0x0000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/test01.c b/src/data/scene/test01.c new file mode 100644 index 00000000..26d8cfb9 --- /dev/null +++ b/src/data/scene/test01.c @@ -0,0 +1,60 @@ +#include "m_scene.h" + +extern Actor_data TEST01_player_data[]; +extern s16 TEST01_ctrl_actor_data[]; +extern Actor_data TEST01_actor_data[]; +extern s16 TEST01_object_bank[]; + +extern Scene_Word_u test01_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_PLAYER(TEST01_player_data), // Player Data + mSc_DATA_CTRL_ACTORS(12, TEST01_ctrl_actor_data), // Control actors + mSc_DATA_ACTORS(2, TEST01_actor_data), // Player Data + mSc_DATA_OBJ_BANK(1, TEST01_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_BGITEM, 4, 0x5000, mSc_ROOM_TYPE_OUTDOORS, + FIELD_DRAW_TYPE_OUTDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data TEST01_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 340, 0, 430 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 TEST01_ctrl_actor_data[] = { + mAc_PROFILE_EFFECTBG, // 0 + mAc_PROFILE_BIRTH_CONTROL, // 1 + mAc_PROFILE_NPC, // 2 + mAc_PROFILE_STRUCTURE, // 3 + mAc_PROFILE_INSECT, // 4 + mAc_PROFILE_TOOLS, // 5 + mAc_PROFILE_HANDOVERITEM, // 6 + mAc_PROFILE_EFFECT_CONTROL, // 7 + mAc_PROFILE_QUEST_MANAGER, // 8 + mAc_PROFILE_EVENT_MANAGER, // 9 + mAc_PROFILE_WEATHER, // 10 + mAc_PROFILE_BALL, // 11 +}; + +extern Actor_data TEST01_actor_data[] = { + { + mAc_PROFILE_UKI, // profile + { 340, 0, 430 }, // position + { 0, 0, 0 }, // rotation + -1 // ct arg + }, + { + mAc_PROFILE_FUUSEN, // profile + { 340, 0, 430 }, // position + { 0, 0, 0 }, // rotation + -1 // ct arg + }, +}; + +extern s16 TEST01_object_bank[] = { + ACTOR_OBJ_BANK_FUUSEN, // 0 +}; diff --git a/src/data/scene/test02.c b/src/data/scene/test02.c new file mode 100644 index 00000000..0eb449df --- /dev/null +++ b/src/data/scene/test02.c @@ -0,0 +1,37 @@ +#include "m_scene.h" + +extern Actor_data TEST02_player_data[]; +extern s16 TEST02_ctrl_actor_data[]; + +extern Scene_Word_u test02_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_PLAYER(TEST02_player_data), // Player Data + mSc_DATA_CTRL_ACTORS(12, TEST02_ctrl_actor_data), // Control actors + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_BGITEM, 4, 0x5000, mSc_ROOM_TYPE_OUTDOORS, + FIELD_DRAW_TYPE_OUTDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data TEST02_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 320, 200, 1600 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 TEST02_ctrl_actor_data[] = { + mAc_PROFILE_EFFECTBG, // 0 + mAc_PROFILE_BIRTH_CONTROL, // 1 + mAc_PROFILE_NPC, // 2 + mAc_PROFILE_STRUCTURE, // 3 + mAc_PROFILE_INSECT, // 4 + mAc_PROFILE_TOOLS, // 5 + mAc_PROFILE_HANDOVERITEM, // 6 + mAc_PROFILE_EFFECT_CONTROL, // 7 + mAc_PROFILE_QUEST_MANAGER, // 8 + mAc_PROFILE_EVENT_MANAGER, // 9 + mAc_PROFILE_WEATHER, // 10 + mAc_PROFILE_BALL, // 11 +}; diff --git a/src/data/scene/test03.c b/src/data/scene/test03.c new file mode 100644 index 00000000..fe090af2 --- /dev/null +++ b/src/data/scene/test03.c @@ -0,0 +1,63 @@ +#include "m_scene.h" + +extern Actor_data TEST03_player_data[]; +extern s16 TEST03_ctrl_actor_data[]; +extern Actor_data TEST03_actor_data[]; +extern s16 TEST03_object_bank[]; + +extern Scene_Word_u test03_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_PLAYER(TEST03_player_data), // Player Data + mSc_DATA_CTRL_ACTORS(12, TEST03_ctrl_actor_data), // Control actors + mSc_DATA_ACTORS(2, TEST03_actor_data), // Player Data + mSc_DATA_OBJ_BANK(4, TEST03_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_BGITEM, 4, 0x5000, mSc_ROOM_TYPE_OUTDOORS, + FIELD_DRAW_TYPE_OUTDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data TEST03_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 320, 200, 1600 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 TEST03_ctrl_actor_data[] = { + mAc_PROFILE_EFFECTBG, // 0 + mAc_PROFILE_BIRTH_CONTROL, // 1 + mAc_PROFILE_NPC, // 2 + mAc_PROFILE_STRUCTURE, // 3 + mAc_PROFILE_INSECT, // 4 + mAc_PROFILE_TOOLS, // 5 + mAc_PROFILE_HANDOVERITEM, // 6 + mAc_PROFILE_EFFECT_CONTROL, // 7 + mAc_PROFILE_QUEST_MANAGER, // 8 + mAc_PROFILE_EVENT_MANAGER, // 9 + mAc_PROFILE_WEATHER, // 10 + mAc_PROFILE_BALL, // 11 +}; + +extern Actor_data TEST03_actor_data[] = { + { + mAc_PROFILE_UKI, // profile + { 340, 0, 430 }, // position + { 0, 0, 0 }, // rotation + -1 // ct arg + }, + { + mAc_PROFILE_MURAL, // profile + { 320, 200, 1600 }, // position + { 0, 0, 0 }, // rotation + -1 // ct arg + }, +}; + +extern s16 TEST03_object_bank[] = { + ACTOR_OBJ_BANK_48, // 0 + ACTOR_OBJ_BANK_PSNOWMAN, // 1 + ACTOR_OBJ_BANK_AIRPLANE, // 2 + ACTOR_OBJ_BANK_MURAL, // 3 +}; diff --git a/src/data/scene/test04.c b/src/data/scene/test04.c new file mode 100644 index 00000000..4c05aada --- /dev/null +++ b/src/data/scene/test04.c @@ -0,0 +1,37 @@ +#include "m_scene.h" + +extern Actor_data TEST04_player_data[]; +extern s16 TEST04_ctrl_actor_data[]; + +extern Scene_Word_u test04_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_PLAYER(TEST04_player_data), // Player Data + mSc_DATA_CTRL_ACTORS(12, TEST04_ctrl_actor_data), // Control actors + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_BGITEM, 4, 0x5000, mSc_ROOM_TYPE_OUTDOORS, + FIELD_DRAW_TYPE_OUTDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data TEST04_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 340, 0, 430 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 TEST04_ctrl_actor_data[] = { + mAc_PROFILE_EFFECTBG, // 0 + mAc_PROFILE_BIRTH_CONTROL, // 1 + mAc_PROFILE_NPC, // 2 + mAc_PROFILE_STRUCTURE, // 3 + mAc_PROFILE_INSECT, // 4 + mAc_PROFILE_TOOLS, // 5 + mAc_PROFILE_HANDOVERITEM, // 6 + mAc_PROFILE_EFFECT_CONTROL, // 7 + mAc_PROFILE_SHOP_LEVEL, // 8 + mAc_PROFILE_QUEST_MANAGER, // 9 + mAc_PROFILE_EVENT_MANAGER, // 10 + mAc_PROFILE_WEATHER, // 11 +}; diff --git a/src/data/scene/test05.c b/src/data/scene/test05.c new file mode 100644 index 00000000..50f32afc --- /dev/null +++ b/src/data/scene/test05.c @@ -0,0 +1,30 @@ +#include "m_scene.h" + +extern Actor_data TEST05_player_data[]; +extern s16 TEST05_ctrl_actor_data[]; + +extern Scene_Word_u test05_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_PLAYER(TEST05_player_data), // Player Data + mSc_DATA_CTRL_ACTORS(5, TEST05_ctrl_actor_data), // Control actors + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_BGITEM, 4, 0x5000, mSc_ROOM_TYPE_OUTDOORS, + FIELD_DRAW_TYPE_OUTDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data TEST05_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 340, 0, 430 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 TEST05_ctrl_actor_data[] = { + mAc_PROFILE_EFFECTBG, // 0 + mAc_PROFILE_BIRTH_CONTROL, // 1 + mAc_PROFILE_HANDOVERITEM, // 2 + mAc_PROFILE_EFFECT_CONTROL, // 3 + mAc_PROFILE_WEATHER, // 4 +}; diff --git a/src/data/scene/test_fd_npc_land.c b/src/data/scene/test_fd_npc_land.c new file mode 100644 index 00000000..e111558d --- /dev/null +++ b/src/data/scene/test_fd_npc_land.c @@ -0,0 +1,66 @@ +#include "m_scene.h" + +extern Actor_data TEST_FD_NPC_LAND_player_data[]; +extern s16 TEST_FD_NPC_LAND_ctrl_actor_data[]; +extern Actor_data TEST_FD_NPC_LAND_actor_data[]; +extern s16 TEST_FD_NPC_LAND_object_bank[]; + +extern Scene_Word_u test_fd_npc_land_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_PLAYER(TEST_FD_NPC_LAND_player_data), // Player Data + mSc_DATA_CTRL_ACTORS(17, TEST_FD_NPC_LAND_ctrl_actor_data), // Control actors + mSc_DATA_ACTORS(2, TEST_FD_NPC_LAND_actor_data), // Player Data + mSc_DATA_OBJ_BANK(2, TEST_FD_NPC_LAND_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_BGITEM, 4, 0x1C00, mSc_ROOM_TYPE_OUTDOORS, + FIELD_DRAW_TYPE_OUTDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data TEST_FD_NPC_LAND_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 2240, 0, 1600 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 TEST_FD_NPC_LAND_ctrl_actor_data[] = { + mAc_PROFILE_EFFECTBG, // 0 + mAc_PROFILE_BIRTH_CONTROL, // 1 + mAc_PROFILE_NPC, // 2 + mAc_PROFILE_STRUCTURE, // 3 + mAc_PROFILE_INSECT, // 4 + mAc_PROFILE_TOOLS, // 5 + mAc_PROFILE_HANDOVERITEM, // 6 + mAc_PROFILE_EFFECT_CONTROL, // 7 + mAc_PROFILE_SHOP_LEVEL, // 8 + mAc_PROFILE_QUEST_MANAGER, // 9 + mAc_PROFILE_EVENT_MANAGER, // 10 + mAc_PROFILE_WEATHER, // 11 + mAc_PROFILE_SET_MANAGER, // 12 + mAc_PROFILE_GYOEI, // 13 + mAc_PROFILE_SET_NPC_MANAGER, // 14 + mAc_PROFILE_BALL, // 15 + mAc_PROFILE_MSCORE_CONTROL, // 16 +}; + +extern Actor_data TEST_FD_NPC_LAND_actor_data[] = { + { + mAc_PROFILE_UKI, // profile + { 340, 0, 430 }, // position + { 0, 0, 0 }, // rotation + -1 // ct arg + }, + { + mAc_PROFILE_AC_SIGN, // profile + { 0, 0, 0 }, // position + { 0, 0, 0 }, // rotation + -1 // ct arg + }, +}; + +extern s16 TEST_FD_NPC_LAND_object_bank[] = { + ACTOR_OBJ_BANK_48, // 0 + ACTOR_OBJ_BANK_AC_SIGN, // 1 +}; diff --git a/src/data/scene/test_step01.c b/src/data/scene/test_step01.c new file mode 100644 index 00000000..b925c4f0 --- /dev/null +++ b/src/data/scene/test_step01.c @@ -0,0 +1,20 @@ +#include "m_scene.h" + +extern Actor_data TEST_STEP01_player_data[]; + +extern Scene_Word_u test_step01_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_PLAYER(TEST_STEP01_player_data), // Player Data + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_BGITEM, 4, 0x5000, mSc_ROOM_TYPE_OUTDOORS, + FIELD_DRAW_TYPE_OUTDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data TEST_STEP01_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 160, 0, 300 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; diff --git a/src/data/scene/title_demo.c b/src/data/scene/title_demo.c new file mode 100644 index 00000000..f6a7c8db --- /dev/null +++ b/src/data/scene/title_demo.c @@ -0,0 +1,52 @@ +#include "m_scene.h" + +extern Actor_data TITLE_DEMO_player_data[]; +extern s16 TITLE_DEMO_ctrl_actor_data[]; +extern Actor_data TITLE_DEMO_actor_data[]; +extern s16 TITLE_DEMO_object_bank[]; + +extern Scene_Word_u title_demo_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_PLAYER(TITLE_DEMO_player_data), // Player Data + mSc_DATA_CTRL_ACTORS(10, TITLE_DEMO_ctrl_actor_data), // Control actors + mSc_DATA_ACTORS(1, TITLE_DEMO_actor_data), // Player Data + mSc_DATA_OBJ_BANK(1, TITLE_DEMO_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_BGITEM, 4, 0x2000, mSc_ROOM_TYPE_OUTDOORS, + FIELD_DRAW_TYPE_OUTDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data TITLE_DEMO_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 2240, 0, 1600 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 TITLE_DEMO_ctrl_actor_data[] = { + mAc_PROFILE_EFFECTBG, // 0 + mAc_PROFILE_BIRTH_CONTROL, // 1 + mAc_PROFILE_NPC, // 2 + mAc_PROFILE_STRUCTURE, // 3 + mAc_PROFILE_TOOLS, // 4 + mAc_PROFILE_HANDOVERITEM, // 5 + mAc_PROFILE_EFFECT_CONTROL, // 6 + mAc_PROFILE_WEATHER, // 7 + mAc_PROFILE_ANIMAL_LOGO, // 8 + mAc_PROFILE_QUEST_MANAGER, // 9 +}; + +extern Actor_data TITLE_DEMO_actor_data[] = { + { + mAc_PROFILE_UKI, // profile + { 340, 0, 430 }, // position + { 0, 0, 0 }, // rotation + -1 // ct arg + }, +}; + +extern s16 TITLE_DEMO_object_bank[] = { + ACTOR_OBJ_BANK_48, // 0 +}; diff --git a/src/data/scene/water_test.c b/src/data/scene/water_test.c new file mode 100644 index 00000000..f7cf594b --- /dev/null +++ b/src/data/scene/water_test.c @@ -0,0 +1,56 @@ +#include "m_scene.h" + +extern Actor_data WATER_TEST_player_data[]; +extern s16 WATER_TEST_ctrl_actor_data[]; +extern Actor_data WATER_TEST_actor_data[]; + +extern Scene_Word_u water_test_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_PLAYER(WATER_TEST_player_data), // Player Data + mSc_DATA_CTRL_ACTORS(14, WATER_TEST_ctrl_actor_data), // Control actors + mSc_DATA_ACTORS(2, WATER_TEST_actor_data), // Player Data + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_BGITEM, 4, 0x5000, mSc_ROOM_TYPE_OUTDOORS, + FIELD_DRAW_TYPE_OUTDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data WATER_TEST_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 40, 0, 40 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 WATER_TEST_ctrl_actor_data[] = { + mAc_PROFILE_EFFECTBG, // 0 + mAc_PROFILE_BIRTH_CONTROL, // 1 + mAc_PROFILE_NPC, // 2 + mAc_PROFILE_STRUCTURE, // 3 + mAc_PROFILE_INSECT, // 4 + mAc_PROFILE_TOOLS, // 5 + mAc_PROFILE_HANDOVERITEM, // 6 + mAc_PROFILE_EFFECT_CONTROL, // 7 + mAc_PROFILE_SHOP_LEVEL, // 8 + mAc_PROFILE_QUEST_MANAGER, // 9 + mAc_PROFILE_WEATHER, // 10 + mAc_PROFILE_GYOEI, // 11 + mAc_PROFILE_BEE, // 12 + mAc_PROFILE_BALL, // 13 +}; + +extern Actor_data WATER_TEST_actor_data[] = { + { + mAc_PROFILE_UKI, // profile + { 340, 0, 430 }, // position + { 0, 0, 0 }, // rotation + -1 // ct arg + }, + { + mAc_PROFILE_BEE, // profile + { 340, 0, 430 }, // position + { 0, 0, 0 }, // rotation + -1 // ct arg + }, +}; diff --git a/src/m_scene.c b/src/m_scene.c index 36193f6e..58bd1b6a 100644 --- a/src/m_scene.c +++ b/src/m_scene.c @@ -449,8 +449,12 @@ static void Scene_Proc_Sound(GAME_PLAY* play, Scene_Word_u* scene_data) { } static void set_item_info(GAME_PLAY* play, Scene_Word_Data_FieldCt_c* field_ct) { - static s16 profile_table[4] = { mAc_PROFILE_BGITEM, mAc_PROFILE_DUMMY, mAc_PROFILE_BGPOLICEITEM, - mAc_PROFILE_BGPOSTITEM }; + static s16 profile_table[4] = { + mAc_PROFILE_BGITEM, + mAc_PROFILE_DUMMY, + mAc_PROFILE_BGPOLICEITEM, + mAc_PROFILE_BGPOSTITEM, + }; int item_type = field_ct->item_type; From d2da1cf9419f6fd5197139d107f843fe84153b7d Mon Sep 17 00:00:00 2001 From: Prakxo Date: Sun, 1 Sep 2024 20:40:06 +0200 Subject: [PATCH 162/234] match m_player_main_door --- include/c_keyframe.h | 2 +- src/c_keyframe.c | 6 ++-- src/m_player_main_door.c_inc | 66 ++++++++++++++++++++++++++++++++++++ 3 files changed, 70 insertions(+), 4 deletions(-) diff --git a/include/c_keyframe.h b/include/c_keyframe.h index 59a49ca7..1f5b9b42 100644 --- a/include/c_keyframe.h +++ b/include/c_keyframe.h @@ -466,7 +466,7 @@ extern void cKF_SkeletonInfo_R_AnimationMove_dt(cKF_SkeletonInfo_R_c* keyframe); * @param yidle Y-axis idle angle. * @param keyframe Skeleton info structure containing animation data. */ -extern void cKF_SkeletonInfo_R_AnimationMove_base(xyz_t* base, s_xyz* sbase, xyz_t* move, s16 yidle, +extern void cKF_SkeletonInfo_R_AnimationMove_base(xyz_t* base, s16* sbase, xyz_t* move, s16 yidle, cKF_SkeletonInfo_R_c* keyframe); /** diff --git a/src/c_keyframe.c b/src/c_keyframe.c index e4f27dc5..badeeb8e 100644 --- a/src/c_keyframe.c +++ b/src/c_keyframe.c @@ -1091,7 +1091,7 @@ extern void cKF_SkeletonInfo_R_AnimationMove_dt(cKF_SkeletonInfo_R_c* keyframe) keyframe->animation_enabled = 0; } -extern void cKF_SkeletonInfo_R_AnimationMove_base(xyz_t* base, s_xyz* sbase, xyz_t* move, s16 yidle, +extern void cKF_SkeletonInfo_R_AnimationMove_base(xyz_t* base, s16* sbase, xyz_t* move, s16 yidle, cKF_SkeletonInfo_R_c* keyframe) { f32 fc = keyframe->fixed_counter; f32 count = 1.0f + fc; @@ -1162,14 +1162,14 @@ extern void cKF_SkeletonInfo_R_AnimationMove_base(xyz_t* base, s_xyz* sbase, xyz Matrix_rotateXYZ(keyframe->current_joint[1].x, keyframe->current_joint[1].y, keyframe->current_joint[1].z, 0); Matrix_to_rotate2_new(get_Matrix_now(), update_base, 0); Matrix_pull(); - sbase->x = angley + angle_c + (update_base->x - base_x); + *sbase = angley + angle_c + (update_base->x - base_x); } if (base != NULL) { cur_joint = keyframe->current_joint; sub = 0; if (sbase != NULL) { - sub = sbase->x - yidle; + sub = *sbase - yidle; } if (an_flag & cKF_ANIMATION_TRANS_XZ) { f32 move_x, move_z; diff --git a/src/m_player_main_door.c_inc b/src/m_player_main_door.c_inc index e69de29b..90aa0218 100644 --- a/src/m_player_main_door.c_inc +++ b/src/m_player_main_door.c_inc @@ -0,0 +1,66 @@ +static int Player_actor_request_main_door(GAME* game, const xyz_t* pos, s16 angle_y, int type, u32 label, + int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_DOOR, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + player->requested_main_index_data.door.player_pos = *pos; + player->requested_main_index_data.door.player_pos.y = player->actor_class.world.position.y; + player->requested_main_index_data.door.angle_y = angle_y; + player->requested_main_index_data.door.type = type; + player->requested_main_index_data.door.label = label; + + Player_actor_request_main_index(game, mPlayer_INDEX_DOOR, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Door(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int anim_idx = mPlayer_ANIM_INTO_S1; + cKF_SkeletonInfo_R_c* keyf = &player->keyframe0; + + if (player->requested_main_index_data.door.type == 0) { + anim_idx = mPlayer_ANIM_OPEN1; + } + player->main_data.door.label = player->requested_main_index_data.door.label; + actor->world.angle.y = player->requested_main_index_data.door.angle_y; + cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(keyf, 0.0f, 1000.0f, 0.0f, 0, 0, 0x4000); + cKF_SkeletonInfo_R_AnimationMove_ct_base( + 9.0f, &actor->world.position, &player->requested_main_index_data.door.player_pos, actor->shape_info.rotation.y, + player->requested_main_index_data.door.angle_y, keyf, 5); + Player_actor_InitAnimation_Base2(actor, game, anim_idx, anim_idx, 1.0f, 1.0f, 0.5f, -9.0f, 0, 0); + Player_actor_setup_main_Base(actor, game); + mBGMPsComp_scene_mode(0xC); +} + +static int Player_actor_CulcAnimation_Door(ACTOR* actor, f32* frame_calc) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_Movement_Door(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + cKF_SkeletonInfo_R_AnimationMove_base(&actor->world.position, &actor->shape_info.rotation.y, &actor->scale, + actor->world.angle.y, &player->keyframe0); + Player_actor_Movement_Base_Stop(actor, 0); + Player_actor_Set_force_shadow_position_fromWorldPosition(actor); +} + +static void Player_actor_ObjCheck_Door(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static Player_actor_main_Door(ACTOR* actor, GAME* game) { + f32 frame_calc; + + Player_actor_CulcAnimation_Door(actor, &frame_calc); + Player_actor_Movement_Door(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Door(actor, game); + Player_actor_Item_main(actor, game); +} From 5c31cac0fc914636012196b4610e839b66c7703e Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Sun, 1 Sep 2024 20:29:23 -0400 Subject: [PATCH 163/234] Implement & link ac_shop_level --- config/rel_slices.yml | 3 + include/ac_shop_level.h | 9 +- include/m_event.h | 1 + src/ac_shop_level.c | 397 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 409 insertions(+), 1 deletion(-) create mode 100644 src/ac_shop_level.c diff --git a/config/rel_slices.yml b/config/rel_slices.yml index a3e9cd79..c710c500 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -533,6 +533,9 @@ ac_set_ovl_insect.c: ac_shop_design.c: .text: [0x8049C748, 0x8049D51C] .data: [0x8068E3C0, 0x8068E430] +ac_shop_level.c: + .text: [0x8049F40C, 0x8049FEC4] + .data: [0x8068E520, 0x8068E708] ac_sign.c: .text: [0x804A127C, 0x804A3328] .rodata: [0x80645D18, 0x80645D78] diff --git a/include/ac_shop_level.h b/include/ac_shop_level.h index 865f7aff..4896fd24 100644 --- a/include/ac_shop_level.h +++ b/include/ac_shop_level.h @@ -8,6 +8,14 @@ extern "C" { #endif +typedef struct shop_level_actor_s SHOP_LEVEL_ACTOR; + +struct shop_level_actor_s { + ACTOR actor_class; + int bx; + int bz; +}; + extern ACTOR_PROFILE Shop_Level_Profile; #ifdef __cplusplus @@ -15,4 +23,3 @@ extern ACTOR_PROFILE Shop_Level_Profile; #endif #endif - diff --git a/include/m_event.h b/include/m_event.h index 7dfe6908..988f3c25 100644 --- a/include/m_event.h +++ b/include/m_event.h @@ -591,6 +591,7 @@ extern int mEv_ArbeitPlayer(u32 player_no); extern u16 mEv_get_special_event_type(); extern void mEv_ClearEventSaveInfo(mEv_event_save_c* event_save_data); extern void mEv_EventON(u32 event_kind); +extern void mEv_EventOFF(u32 event_kind); extern int mEv_CheckGateway(); extern int mEv_check_schedule(int event); extern mEv_place_data_c* mEv_get_common_place(int type, u8 id); diff --git a/src/ac_shop_level.c b/src/ac_shop_level.c new file mode 100644 index 00000000..2fd802fc --- /dev/null +++ b/src/ac_shop_level.c @@ -0,0 +1,397 @@ +#include "ac_shop_level.h" + +#include "m_common_data.h" +#include "m_player_lib.h" +#include "m_house.h" +#include "m_handbill.h" +#include "m_string.h" + +static void Shop_Level_Actor_ct(ACTOR* actorx, GAME* game); +static void Shop_Level_Actor_dt(ACTOR* actorx, GAME* game); +static void Shop_Level_Actor_move(ACTOR* actorx, GAME* game); +static void Shop_Level_Actor_draw(ACTOR* actorx, GAME* game); + +// clang-format off +ACTOR_PROFILE Shop_Level_Profile = { + mAc_PROFILE_SHOP_LEVEL, + ACTOR_PART_CONTROL, + ACTOR_STATE_CAN_MOVE_IN_DEMO_SCENES | ACTOR_STATE_NO_DRAW_WHILE_CULLED | ACTOR_STATE_NO_MOVE_WHILE_CULLED, + EMPTY_NO, + ACTOR_OBJ_BANK_KEEP, + sizeof(SHOP_LEVEL_ACTOR), + &Shop_Level_Actor_ct, + &Shop_Level_Actor_dt, + &Shop_Level_Actor_move, + &Shop_Level_Actor_draw, + NULL, +}; +// clang-format on + +static void aSL_SetShopRenewalChirashi_Notice(int shop_level, lbRTC_time_c* time_p) { + static int renewal_chirashi_bunmen[] = { 0x0018, 0x0019, 0x001A, 0x001A }; + int header_back_start; + Mail_c mail; + Mail_ct_c* content = &mail.content; + u8 year_str[6]; + u8 month_str[9]; + u8 day_str[4]; + lbRTC_time_c renew_start_date = *time_p; + int i; + + lbRTC_Sub_DD(&renew_start_date, 1); + for (i = 0; i < PLAYER_NUM; i++) { + int player_no = mHS_get_pl_no_detail(i); + int free_idx = mMl_chk_mail_free_space(Save_Get(homes[i]).mailbox, HOME_MAILBOX_SIZE); + + if (free_idx >= 0 && player_no != -1 && mEv_ArbeitPlayer(player_no) == FALSE) { + int year_str_len; + + mString_Load_StringFromRom(month_str, sizeof(month_str), + mString_MONTH_START + (renew_start_date.month - 1)); + mHandbill_Set_free_str(mHandbill_FREE_STR0, month_str, sizeof(month_str)); + mString_Load_StringFromRom(day_str, sizeof(day_str), mString_DAY_START + (renew_start_date.day - 1)); + mHandbill_Set_free_str(mHandbill_FREE_STR1, day_str, sizeof(day_str)); + year_str_len = mString_Load_YearStringFromRom(year_str, renew_start_date.year); + mHandbill_Set_free_str(mHandbill_FREE_STR2, year_str, year_str_len); + mMl_clear_mail(&mail); + mHandbill_Load_HandbillFromRom(content->header, &header_back_start, content->footer, content->body, + renewal_chirashi_bunmen[shop_level & 3]); + content->header_back_start = header_back_start; + content->font = mMl_FONT_0; + content->paper_type = (u8)ITM_PAPER55; + content->mail_type = mMl_TYPE_SHOP_SALE_LEAFLET; + mPr_CopyPersonalID(&mail.header.recipient.personalID, &Save_Get(private_data[player_no]).player_ID); + mail.header.recipient.type = mMl_NAME_TYPE_PLAYER; + mMl_copy_mail(&Save_Get(homes[i]).mailbox[free_idx], &mail); + } + } +} + +static void aSL_SetRenewalChiraswhi_Notice(void) { + if (Save_Get(shop).shop_info.send_upgrade_notice == TRUE) { + if (mSP_GetShopLevel() < mSP_GetRealShopLevel()) { + lbRTC_time_c* rtc_time_p = Common_GetPointer(time.rtc_time); + lbRTC_time_c renew_time = Save_Get(shop).renewal_time; + + lbRTC_Sub_DD(&renew_time, 1); + if (lbRTC_IsOverTime(&renew_time, rtc_time_p) == lbRTC_OVER || + lbRTC_IsEqualTime(rtc_time_p, &renew_time, lbRTC_CHECK_YEARS | lbRTC_CHECK_MONTHS | lbRTC_CHECK_DAYS)) { + aSL_SetShopRenewalChirashi_Notice(mSP_GetShopLevel(), &Save_Get(shop).renewal_time); + Save_Get(shop).shop_info.send_upgrade_notice = FALSE; + } + } else { + aSL_SetShopRenewalChirashi_Notice((mSP_GetShopLevel() - 1) & 3, &Save_Get(shop).renewal_time); + Save_Get(shop).shop_info.send_upgrade_notice = FALSE; + } + } +} + +typedef struct shop_level_rewrite_offset_s { + int ofs_ux; + int ofs_uz; +} aSL_rewrite_ofs_c; + +// clang-format off +static aSL_rewrite_ofs_c aSL_zakka_rw[] = { + { -1, -1 }, + { 0, -1 }, + { -2, 0 }, + { -1, 0 }, + { 1, 0 }, + { -2, 1 }, + { -1, 1 }, + { 0, 1 }, + { 1, 1 }, + { -1, 2 }, + { 0, 2 }, +}; +// clang-format on + +// clang-format off +static aSL_rewrite_ofs_c aSL_conveni_rw[] = { + { -2, -2 }, + { -1, -2 }, + { -3, -1 }, + { -2, -1 }, + { -1, -1 }, + { 0, -1 }, + { -3, 0 }, + { -2, 0 }, + { -1, 0 }, + { 1, 0 }, + { -2, 1 }, + { -1, 1 }, + { 0, 1 }, + { 1, 1 }, + { -1, 2 }, + { 0, 2 }, +}; +// clang-format on + +// clang-format off +static aSL_rewrite_ofs_c aSL_super_rw[] = { + { -1, -3 }, + { 0, -3 }, + { -2, -2 }, + { -1, -2 }, + { 0, -2 }, + { 1, -2 }, + { -3, -1 }, + { -2, -1 }, + { -1, -1 }, + { 0, -1 }, + { 1, -1 }, + { 2, -1 }, + { -3, 0 }, + { -2, 0 }, + { -1, 0 }, + { 1, 0 }, + { 2, 0 }, + { -2, 1 }, + { -1, 1 }, + { 0, 1 }, + { 1, 1 }, + { -1, 2 }, + { 0, 2 }, +}; +// clang-format on + +static void aSL_GroundClean(s16 level, s16 next_level, mActor_name_t* fg_p, int bx, int bz, int ux, int uz) { + static aSL_rewrite_ofs_c* table[] = { + aSL_zakka_rw, + aSL_conveni_rw, + aSL_super_rw, + aSL_super_rw, + }; + static int rw_cnt[] = { + ARRAY_COUNT(aSL_zakka_rw), + ARRAY_COUNT(aSL_conveni_rw), + ARRAY_COUNT(aSL_super_rw), + ARRAY_COUNT(aSL_super_rw), + }; + + int i; + aSL_rewrite_ofs_c* rewrite_ofs_p; + u16* deposit_p; + + deposit_p = mFI_GetDepositP(bx, bz); + rewrite_ofs_p = table[next_level & 3]; + + for (i = 0; i < rw_cnt[next_level & 3]; i++) { + int rewrite_ux = (ux + rewrite_ofs_p[i].ofs_ux) & 0xF; + int rewrite_uz = (uz + rewrite_ofs_p[i].ofs_uz) & 0xF; + int rewrite_unit = rewrite_uz * UT_X_NUM + rewrite_ux; + + mPB_keep_item(fg_p[rewrite_unit]); + mFI_BlockDepositOFF(deposit_p, rewrite_ux, rewrite_uz); + fg_p[rewrite_unit] = RSV_NO; + } +} + +static int aSL_RewriteShopFg(ACTOR* actorx, GAME* game, s16 level, s16 next_level) { + SHOP_LEVEL_ACTOR* shop_level = (SHOP_LEVEL_ACTOR*)actorx; + int i; + int ux; + int uz; + mActor_name_t* fg_top_p; + mActor_name_t* fg_p; + + fg_top_p = mFI_BkNumtoUtFGTop(shop_level->bx, shop_level->bz); + fg_p = fg_top_p; + + if (fg_top_p != NULL) { + for (i = 0; i < UT_TOTAL_NUM; i++) { + /* @BUG - shouldn't this just be <= SHOP3? This goes one over which would include the Post Office */ + if (*fg_top_p >= SHOP0 && *fg_top_p <= (SHOP3 + 1)) { + ux = i & 0xF; + uz = (i >> 4) & 0xF; + *fg_top_p = SHOP0 + next_level; + aSL_GroundClean((s16)level, (s16)next_level, fg_p, shop_level->bx, shop_level->bz, ux, uz); + return TRUE; + } + + fg_top_p++; + } + } + + return FALSE; +} + +static void aSL_RenewShop(ACTOR* actorx, GAME* game) { + int last_scene = Common_Get(last_scene_no); + + if (last_scene == SCENE_SHOP0 || last_scene == SCENE_CONVENI || last_scene == SCENE_SUPER || + last_scene == SCENE_DEPART || last_scene == SCENE_DEPART_2) { + return; + } + + if (mFI_GET_TYPE(mFI_GetFieldId()) == mFI_FIELD_FG && Save_Get(scene_no) == SCENE_FG && + mEv_CheckEvent(mEv_SAVED_RENEWSHOP) == TRUE) { + lbRTC_time_c renew_time = Save_Get(shop).renewal_time; + lbRTC_time_c now_time = Common_Get(time.rtc_time); + + aSL_SetRenewalChiraswhi_Notice(); + if (lbRTC_IsOverTime(&renew_time, &now_time) == lbRTC_OVER || + lbRTC_IsEqualTime(&now_time, &renew_time, lbRTC_CHECK_YEARS | lbRTC_CHECK_MONTHS | lbRTC_CHECK_DAYS)) { + if (aSL_RewriteShopFg(actorx, game, mSP_GetShopLevel(), mSP_GetRealShopLevel()) && mSP_RenewShopLevel()) { + mEv_EventOFF(mEv_SAVED_RENEWSHOP); + mSP_NewExchangeDay(); + mSP_ExchangeLineUp_ZeldaMalloc(); + } + } + } +} + +static void Shop_Level_Actor_ct(ACTOR* actorx, GAME* game) { + SHOP_LEVEL_ACTOR* shop_level = (SHOP_LEVEL_ACTOR*)actorx; + GAME_PLAY* play = (GAME_PLAY*)game; + ACTOR* player_actor = GET_PLAYER_ACTOR_ACTOR(play); + xyz_t* pos_p; + int shop_block_flag; + + shop_level->bx = 0; + shop_level->bz = 0; + if (player_actor != NULL) { + pos_p = &player_actor->world.position; + } else { + pos_p = &actorx->world.position; + } + + /* Try to move shop level actor to where the player currently is */ + actorx->world.position = *pos_p; + shop_block_flag = mFI_BlockKind2BkNum(&shop_level->bx, &shop_level->bz, mRF_BLOCKKIND_SHOP); + if (Save_Get(scene_no) == SCENE_FG) { + mSP_SetShopRareFurnitureChirashi(Common_Get(player_no), Save_Get(shop).items, mSP_GOODS_COUNT, NULL); + Save_Get(shop).shop_info.not_loaded_before = FALSE; + } + + if (shop_block_flag) { + aSL_RenewShop(actorx, game); + } +} + +static void Shop_Level_Actor_dt(ACTOR* actorx, GAME* game) { + // nothing +} + +static void Shop_Level_Actor_draw(ACTOR* actorx, GAME* game) { + // nothing +} + +static void aSL_JudgeRenewShop(ACTOR* actorx, GAME* game) { + if (Save_Get(scene_no) == SCENE_FG && mEv_CheckEvent(mEv_SAVED_RENEWSHOP) == FALSE) { + if (mSP_GetShopLevel() < mSP_GetRealShopLevel()) { + lbRTC_time_c now_time = Common_Get(time.rtc_time); + lbRTC_time_c renewal_two_days = now_time; + lbRTC_time_c renewal_one_day; + u16 bargain_date; + + renewal_two_days.hour = mSP_GetShopOpenTime(); + renewal_two_days.min = 0; + renewal_two_days.sec = 0; + lbRTC_Add_DD(&renewal_two_days, 2); + renewal_one_day = now_time; + lbRTC_Add_DD(&renewal_one_day, 1); + bargain_date = mEv_get_bargain_day(); + if (bargain_date != 0) { + lbRTC_month_t bargain_month = (bargain_date >> 8) & 0xFF; + lbRTC_day_t bargain_day = bargain_date & 0xFF; + + /* No upgrading shop if a Nook sale event happens within 2 days */ + if ((now_time.month == bargain_month && now_time.day == bargain_day) || + (renewal_two_days.month == bargain_month && renewal_two_days.day == bargain_day) || + (renewal_one_day.month == bargain_month && renewal_one_day.day == bargain_day)) { + return; + } + } + + { + lbRTC_year_t now_year = now_time.year; + lbRTC_month_t now_month = now_time.month; + lbRTC_day_t max_day = lbRTC_GetDaysByMonth(now_year, now_time.month); + lbRTC_day_t now_day = now_time.day; + + /* No upgrading shop if lottery day is within 2 days */ + if (now_day == max_day || + (renewal_two_days.day == lbRTC_GetDaysByMonth(renewal_two_days.year, renewal_two_days.month)) || + (renewal_one_day.day == lbRTC_GetDaysByMonth(renewal_one_day.year, renewal_one_day.month))) { + return; + } + /* Don't upgrade shop on sale day */ + if ((now_month == lbRTC_NOVEMBER && + now_day == (lbRTC_Weekly_day(now_year, lbRTC_NOVEMBER, 4, lbRTC_THURSDAY) + 1)) || + (renewal_two_days.month == lbRTC_NOVEMBER && + renewal_two_days.day == + (lbRTC_Weekly_day(renewal_two_days.year, lbRTC_NOVEMBER, 4, lbRTC_THURSDAY) + 1)) || + (renewal_one_day.month == lbRTC_NOVEMBER && + renewal_one_day.day == + (lbRTC_Weekly_day(renewal_one_day.year, lbRTC_NOVEMBER, 4, lbRTC_THURSDAY) + 1))) { + return; + } + } + + mEv_EventON(mEv_SAVED_RENEWSHOP); + Save_Get(shop).renewal_time = renewal_two_days; + Save_Get(shop).shop_info.send_upgrade_notice = TRUE; + Save_Get(shop).shop_info.upgrading_today = TRUE; + } + } + + if (Save_Get(scene_no) == SCENE_FG && mEv_CheckEvent(mEv_SAVED_RENEWSHOP) == TRUE) { + lbRTC_time_c now_time = Common_Get(time.rtc_time); + lbRTC_time_c renewal_time = Save_Get(shop).renewal_time; + + lbRTC_Sub_DD(&renewal_time, 2); + if (lbRTC_IsOverTime(&now_time, &renewal_time) == lbRTC_OVER) { + mEv_EventOFF(mEv_SAVED_RENEWSHOP); + Save_Get(shop).shop_info.upgrading_today = FALSE; + Save_Get(shop).shop_info.send_upgrade_notice = FALSE; + return; + } + } + + aSL_SetRenewalChiraswhi_Notice(); + mSP_SetRenewalChiraswhi_AppoDay(); +} + +static void aSL_ExchangeShopGoodsInGame(ACTOR* actorx, GAME* game, lbRTC_hour_t hour) { + lbRTC_time_c now_time = Common_Get(time.rtc_time); + lbRTC_hour_t now_hour = now_time.hour; + + if (mEv_CheckEvent(mEv_SAVED_RENEWSHOP) == FALSE && Save_Get(scene_no) == SCENE_FG && now_hour >= hour && + mSP_CheckExchangeDay2()) { + if (mSP_CheckExchangeMonth()) { + mSP_LotteryLineUp_ZeldaMalloc(); + } + + mSP_NewExchangeDay(); + mSP_ExchangeLineUp_ZeldaMalloc(); + } +} + +static void aSL_ReportShopOpen2Event(void) { + int status = mSP_ShopOpen(); // @unused + + if (mSP_ShopOpen() == mSP_SHOP_STATUS_OPEN || mSP_ShopOpen() == mSP_SHOP_STATUS_OPENEVENT) { + mEv_EventON(mEv_DAILY_OPEN_SHOP); + } else { + mEv_EventOFF(mEv_DAILY_OPEN_SHOP); + } +} + +static void Shop_Level_Actor_move(ACTOR* actorx, GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + ACTOR* player_actor = GET_PLAYER_ACTOR_ACTOR(play); + xyz_t* pos_p; + + if (player_actor != NULL) { + pos_p = &player_actor->world.position; + } else { + pos_p = &actorx->world.position; + } + + actorx->world.position = *pos_p; + aSL_JudgeRenewShop(actorx, game); + aSL_ExchangeShopGoodsInGame(actorx, game, 6); + aSL_ReportShopOpen2Event(); +} From 8a8d9740a729372bf640fa7b2074807dd32fcc46 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Mon, 2 Sep 2024 01:39:06 -0400 Subject: [PATCH 164/234] Implement & link ac_shop_indoor --- config/rel_slices.yml | 5 + include/ac_shop_indoor.h | 37 ++- include/audio_defs.h | 1 + include/m_actor.h | 2 +- include/m_name_table.h | 2 + src/ac_shop_indoor.c | 527 +++++++++++++++++++++++++++++++++++++++ 6 files changed, 554 insertions(+), 20 deletions(-) create mode 100644 src/ac_shop_indoor.c diff --git a/config/rel_slices.yml b/config/rel_slices.yml index c710c500..a6f23764 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -533,6 +533,11 @@ ac_set_ovl_insect.c: ac_shop_design.c: .text: [0x8049C748, 0x8049D51C] .data: [0x8068E3C0, 0x8068E430] +ac_shop_indoor.c: + .text: [0x8049E6F4, 0x8049F40C] + .rodata: [0x80645CB0, 0x80645CD0] + .data: [0x8068E458, 0x8068E520] + .bss: [0x812FD480, 0x812FD488] ac_shop_level.c: .text: [0x8049F40C, 0x8049FEC4] .data: [0x8068E520, 0x8068E708] diff --git a/include/ac_shop_indoor.h b/include/ac_shop_indoor.h index 6bcb23c7..bdbc9a1f 100644 --- a/include/ac_shop_indoor.h +++ b/include/ac_shop_indoor.h @@ -12,29 +12,29 @@ typedef struct shop_indoor_actor_s SHOP_INDOOR_ACTOR; typedef int (*aSI_CHANGE_WALL_PROC)(mActor_name_t item); typedef int (*aSI_CHANGE_CARPET_PROC)(mActor_name_t item); -typedef void (*aSI_INDOOR_DMA_AGAIN_PROC)(); -typedef void (*aSI_CHANGE2DEFAULT_PROC)(); +typedef void (*aSI_INDOOR_DMA_AGAIN_PROC)(void); +typedef void (*aSI_CHANGE2DEFAULT_PROC)(void); typedef struct shop_indoor_clip_s { - SHOP_INDOOR_ACTOR* shop_indoor_actor; - aSI_CHANGE_WALL_PROC change_wall_proc; - aSI_CHANGE_CARPET_PROC change_carpet_proc; - aSI_INDOOR_DMA_AGAIN_PROC indoor_dma_again_proc; - aSI_CHANGE2DEFAULT_PROC change2default_proc; + ACTOR* shop_indoor_actor; + aSI_CHANGE_WALL_PROC change_wall_proc; + aSI_CHANGE_CARPET_PROC change_carpet_proc; + aSI_INDOOR_DMA_AGAIN_PROC indoor_dma_again_proc; + aSI_CHANGE2DEFAULT_PROC change2default_proc; } aSI_Clip_c; struct shop_indoor_actor_s { - ACTOR actor_class; - s16 floor_default_tex_no; - s16 wall_default_tex_no; - s16 floor_data_idx; - s16 wall_data_idx; - int _17C; - u8* floor_data_p[2]; - u8* wall_data_p[2]; - s16 shop_idx; - aSI_Clip_c clip; - int fukubiki_active; + ACTOR actor_class; + s16 floor_idx; + s16 wall_idx; + s16 floor_data_idx; + s16 wall_data_idx; + int _17C; + u8* floor_data_p[2]; + u8* wall_data_p[2]; + s16 shop_idx; + aSI_Clip_c clip; + int fukubiki_active; }; extern ACTOR_PROFILE Shop_Indoor_Profile; @@ -44,4 +44,3 @@ extern ACTOR_PROFILE Shop_Indoor_Profile; #endif #endif - diff --git a/include/audio_defs.h b/include/audio_defs.h index e40791a1..9558e5d6 100644 --- a/include/audio_defs.h +++ b/include/audio_defs.h @@ -90,6 +90,7 @@ typedef enum audio_sound_effects { NA_SE_HANABI3 = HANABI(0x112), NA_SE_EAT = 0x113, + NA_SE_11B = 0x11B, NA_SE_WEAR = 0x11C, NA_SE_SCOOP1 = 0x11E, diff --git a/include/m_actor.h b/include/m_actor.h index 7e7fb5b1..7500bdd6 100644 --- a/include/m_actor.h +++ b/include/m_actor.h @@ -68,7 +68,7 @@ typedef enum bank_id { ACTOR_OBJ_BANK_27, ACTOR_OBJ_BANK_UMBRELLA, ACTOR_OBJ_BANK_29, - ACTOR_OBJ_BANK_30, + ACTOR_OBJ_BANK_SHOP_GOODS, ACTOR_OBJ_BANK_31, ACTOR_OBJ_BANK_32, ACTOR_OBJ_BANK_33, diff --git a/include/m_name_table.h b/include/m_name_table.h index ecf6af64..9feed8de 100644 --- a/include/m_name_table.h +++ b/include/m_name_table.h @@ -226,6 +226,8 @@ extern int mNT_check_unknown(mActor_name_t item_no); (ITEM_NAME_GET_TYPE(n) == NAME_TYPE_FTR0 || ITEM_NAME_GET_TYPE(n) == NAME_TYPE_FTR1) #define ITEM_IS_ITEM1(n) (ITEM_NAME_GET_TYPE(n) == NAME_TYPE_ITEM1) +#define ITEM_IS_CARPET(n) ((n) >= ITM_CARPET_START && (n) < ITM_CARPET_END) +#define ITEM_IS_WALL(n) ((n) >= ITM_WALL_START && (n) < ITM_WALL_END) #define GET_NAME_ITEM0_CATEGORY(f) (((f) & 0x0800) >> 11) /* enviornmental or static background objects */ #define GET_NAME_ITEM1_CATEGORY(f) (((f) & 0x0F00) >> 8) diff --git a/src/ac_shop_indoor.c b/src/ac_shop_indoor.c new file mode 100644 index 00000000..82ab4638 --- /dev/null +++ b/src/ac_shop_indoor.c @@ -0,0 +1,527 @@ +#include "ac_shop_indoor.h" + +#include "m_common_data.h" +#include "m_malloc.h" +#include "m_rcp.h" +#include "sys_matrix.h" + +enum { + aSI_SHOP_TYPE_ZAKKA, + aSI_SHOP_TYPE_CONVENI, + aSI_SHOP_TYPE_SUPER, + aSI_SHOP_TYPE_DEPART_1F, + aSI_SHOP_TYPE_DEPART_2F, + + aSI_SHOP_TYPE_NUM +}; + +enum { + aSI_SE_MODE_NORMAL, + aSI_SE_MODE_SILENT, + + aSI_SE_MODE_NUM +}; + +static int aSI_se_mode = aSI_SE_MODE_NORMAL; + +typedef struct shop_indoor_disp_s { + Gfx* wall_gfx; + Gfx* wall_xlu_gfx; + Gfx* floor_gfx; + Gfx* floor_xlu_gfx; + Gfx* fukubiki_gfx; + Gfx* fukubiki_xlu_gfx; +} aSI_disp_data_c; + +extern Gfx rom_shop1w_model[]; +extern Gfx rom_shop1w_modelT[]; +extern Gfx rom_shop1f_model[]; +extern Gfx rom_shop1f_modelT[]; +extern Gfx rom_shop1_fuku_model[]; +extern Gfx rom_shop1_fuku_modelT[]; + +extern Gfx rom_shop2w_model[]; +extern Gfx rom_shop2w_modelT[]; +extern Gfx rom_shop2f_model[]; +extern Gfx rom_shop2f_modelT[]; +extern Gfx rom_shop2_fuku_model[]; +extern Gfx rom_shop2_fuku_modelT[]; + +extern Gfx rom_shop3w_model[]; +extern Gfx rom_shop3w_modelT[]; +extern Gfx rom_shop3f_model[]; +extern Gfx rom_shop3f_modelT[]; +extern Gfx rom_shop3_fuku_model[]; +extern Gfx rom_shop3_fuku_modelT[]; + +extern Gfx rom_shop4_fuku_model[]; +extern Gfx rom_shop4_fuku_modelT[]; + +extern Gfx rom_shop4_2w_model[]; +extern Gfx rom_shop4_2w_modelT[]; +extern Gfx rom_shop4_2f_model[]; +extern Gfx rom_shop4_2f_modelT[]; + +static aSI_disp_data_c aSI_disp_data_table[] = { + { + rom_shop1w_model, + rom_shop1w_modelT, + rom_shop1f_model, + rom_shop1f_modelT, + rom_shop1_fuku_model, + rom_shop1_fuku_modelT, + }, + { + rom_shop2w_model, + rom_shop2w_modelT, + rom_shop2f_model, + rom_shop2f_modelT, + rom_shop2_fuku_model, + rom_shop2_fuku_modelT, + }, + { + rom_shop3w_model, + rom_shop3w_modelT, + rom_shop3f_model, + rom_shop3f_modelT, + rom_shop3_fuku_model, + rom_shop3_fuku_modelT, + }, + { + rom_shop1w_model, + rom_shop1w_modelT, + rom_shop1f_model, + rom_shop1f_modelT, + rom_shop4_fuku_model, + rom_shop4_fuku_modelT, + }, + { + rom_shop4_2w_model, + rom_shop4_2w_modelT, + rom_shop4_2f_model, + rom_shop4_2f_modelT, + rom_shop1_fuku_model, + rom_shop1_fuku_modelT, + }, +}; + +static s16 aSI_wall_default_table[] = { + (u8)ITM_WALL67, (u8)ITM_WALL68, (u8)ITM_WALL69, (u8)ITM_WALL68, (u8)ITM_WALL70, +}; +static s16 aSI_floor_default_table[] = { + (u8)ITM_CARPET67, (u8)ITM_CARPET68, (u8)ITM_CARPET69, (u8)ITM_CARPET70, (u8)ITM_CARPET70, +}; + +static void Shop_Indoor_Actor_ct(ACTOR* actorx, GAME* game); +static void Shop_Indoor_Actor_dt(ACTOR* actorx, GAME* game); +static void Shop_Indoor_Actor_move(ACTOR* actorx, GAME* game); +static void Shop_Indoor_Actor_draw(ACTOR* actorx, GAME* game); + +// clang-format off +ACTOR_PROFILE Shop_Indoor_Profile = { + mAc_PROFILE_SHOP_INDOOR, + ACTOR_PART_FG, + ACTOR_STATE_NO_DRAW_WHILE_CULLED | ACTOR_STATE_NO_MOVE_WHILE_CULLED, + EMPTY_NO, + ACTOR_OBJ_BANK_KEEP, + sizeof(SHOP_INDOOR_ACTOR), + &Shop_Indoor_Actor_ct, + &Shop_Indoor_Actor_dt, + &Shop_Indoor_Actor_move, + &Shop_Indoor_Actor_draw, + NULL, +}; +// clang-format on + +static int aSI_GetShopIndoorBank(ACTOR* actorx, GAME* game) { + SHOP_INDOOR_ACTOR* shop_indoor = (SHOP_INDOOR_ACTOR*)actorx; + u8** floor_data_pp = shop_indoor->floor_data_p; + u8** wall_data_pp = shop_indoor->wall_data_p; + int i; + + for (i = 0; i < 2; i++) { + wall_data_pp[i] = zelda_malloc_align(aMI_WALL_BANK_SIZE, 32); + } + + for (i = 0; i < 2; i++) { + floor_data_pp[i] = zelda_malloc_align(aMI_FLOOR_BANK_SIZE, 32); + } +} + +static void aSI_CopyFloorTexture(ACTOR* actorx, s16 floor_idx, s16 bank_idx) { + SHOP_INDOOR_ACTOR* shop_indoor = (SHOP_INDOOR_ACTOR*)actorx; + u8** floor_data_pp = shop_indoor->floor_data_p; + + if (bank_idx == 2) { + int i; + + for (i = 0; i < 2; i++) { + u8* floor_data_p = floor_data_pp[i]; + + if (floor_data_p != NULL) { + mRmTp_CopyFloorData(floor_data_p, floor_idx); + } + } + } else { + u8* floor_data_p = floor_data_pp[bank_idx]; + + if (floor_data_p != NULL) { + mRmTp_CopyFloorData(floor_data_p, floor_idx); + } + } +} + +static void aSI_CopyWallTexture(ACTOR* actorx, s16 wall_idx, s16 bank_idx) { + SHOP_INDOOR_ACTOR* shop_indoor = (SHOP_INDOOR_ACTOR*)actorx; + u8** wall_data_pp = shop_indoor->wall_data_p; + + if (bank_idx == 2) { + int i; + + for (i = 0; i < 2; i++) { + u8* wall_data_p = wall_data_pp[i]; + + if (wall_data_p != NULL) { + mRmTp_CopyWallData(wall_data_p, wall_idx); + } + } + } else { + u8* wall_data_p = wall_data_pp[bank_idx]; + + if (wall_data_p != NULL) { + mRmTp_CopyWallData(wall_data_p, wall_idx); + } + } +} + +static void aSI_ShopIndoorCopy(ACTOR* actorx, GAME* game) { + SHOP_INDOOR_ACTOR* shop_indoor = (SHOP_INDOOR_ACTOR*)actorx; + + aSI_CopyWallTexture(actorx, (s16)aSI_wall_default_table[shop_indoor->shop_idx], 2); + aSI_CopyFloorTexture(actorx, (s16)aSI_floor_default_table[shop_indoor->shop_idx], 2); +} + +static int aSI_ChangeWall(mActor_name_t item); +static int aSI_ChangeCarpet(mActor_name_t item); +static void aSI_IndoorDmaAgain(void); +static void aSI_Change2Default(void); + +static void aSI_SetClipProc(ACTOR* actorx, int clear) { + SHOP_INDOOR_ACTOR* shop_indoor = (SHOP_INDOOR_ACTOR*)actorx; + + if (clear == TRUE) { + Common_Get(clip).shop_indoor_clip = NULL; + } else { + aSI_Clip_c* clip_p = &shop_indoor->clip; + + Common_Get(clip).shop_indoor_clip = clip_p; + clip_p->shop_indoor_actor = actorx; + clip_p->change_wall_proc = &aSI_ChangeWall; + clip_p->change_carpet_proc = &aSI_ChangeCarpet; + clip_p->indoor_dma_again_proc = &aSI_IndoorDmaAgain; + clip_p->change2default_proc = &aSI_Change2Default; + } +} + +static void Shop_Indoor_Actor_ct(ACTOR* actorx, GAME* game) { + SHOP_INDOOR_ACTOR* shop_indoor = (SHOP_INDOOR_ACTOR*)actorx; + int i; + int scene_no = Save_Get(scene_no); + static int scene_no_table[] = { SCENE_SHOP0, SCENE_CONVENI, SCENE_SUPER, SCENE_DEPART, SCENE_DEPART_2 }; + + for (i = 0; i < aSI_SHOP_TYPE_NUM; i++) { + if (scene_no == scene_no_table[i]) { + actorx->actor_specific = i; + shop_indoor->shop_idx = i; + } + } + + if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_FUKUBIKI && + actorx->actor_specific != aSI_SHOP_TYPE_DEPART_2F) { + shop_indoor->fukubiki_active = TRUE; + } + + shop_indoor->floor_idx = aSI_floor_default_table[shop_indoor->shop_idx]; + shop_indoor->wall_idx = aSI_wall_default_table[shop_indoor->shop_idx]; + shop_indoor->floor_data_idx = 0; +/* @BUG - floor_data_idx is set again instead of wall_data_idx */ +#ifndef BUGFIXES + shop_indoor->floor_data_idx = 0; +#else + shop_indoor->wall_data_idx = 0; +#endif + shop_indoor->_17C = 0; + shop_indoor->floor_data_p[0] = NULL; + shop_indoor->floor_data_p[1] = NULL; + shop_indoor->wall_data_p[0] = NULL; + shop_indoor->wall_data_p[1] = NULL; + + aSI_GetShopIndoorBank(actorx, game); + aSI_ShopIndoorCopy(actorx, game); + aSI_SetClipProc(actorx, FALSE); +} + +static void Shop_Indoor_Actor_dt(ACTOR* actorx, GAME* game) { + SHOP_INDOOR_ACTOR* shop_indoor = (SHOP_INDOOR_ACTOR*)actorx; + int i; + + aSI_SetClipProc(actorx, TRUE); + for (i = 0; i < 2; i++) { + if (shop_indoor->floor_data_p[i] != NULL) { + zelda_free(shop_indoor->floor_data_p[i]); + } + + if (shop_indoor->wall_data_p[i] != NULL) { + zelda_free(shop_indoor->wall_data_p[i]); + } + } +} + +static void aSI_DrawShopFloor(ACTOR* actorx, GAME* game) { + SHOP_INDOOR_ACTOR* shop_indoor = (SHOP_INDOOR_ACTOR*)actorx; + int data_idx = shop_indoor->floor_data_idx; + int shop_level = actorx->actor_specific; + u16* pal; + u8* tex0; + u8* tex1; + u8* tex2; + u8* tex3; + GAME_PLAY* play = (GAME_PLAY*)game; + + pal = (u16*)shop_indoor->floor_data_p[data_idx]; + tex0 = (u8*)(shop_indoor->floor_data_p[data_idx] + aMI_PAL_SIZE); + tex1 = (u8*)(shop_indoor->floor_data_p[data_idx] + aMI_PAL_SIZE + aMI_TEX_SIZE); + tex2 = (u8*)(shop_indoor->floor_data_p[data_idx] + aMI_PAL_SIZE + aMI_TEX_SIZE * 2); + tex3 = (u8*)(shop_indoor->floor_data_p[data_idx] + aMI_PAL_SIZE + aMI_TEX_SIZE * 3); + + _texture_z_light_fog_prim_xlu(game->graph); + _texture_z_light_fog_prim(game->graph); + Global_kankyo_set_room_prim(play); + + if (shop_indoor->floor_data_p[data_idx] != NULL) { + if (aSI_disp_data_table[shop_level].floor_gfx != NULL) { + OPEN_DISP(game->graph); + + /* Load floor palette & textures */ + gSPSegment(NEXT_POLY_OPA_DISP, ANIME_1_TXT_SEG, tex0); + gSPSegment(NEXT_POLY_OPA_DISP, ANIME_2_TXT_SEG, tex1); + gSPSegment(NEXT_POLY_OPA_DISP, ANIME_3_TXT_SEG, tex2); + gSPSegment(NEXT_POLY_OPA_DISP, ANIME_4_TXT_SEG, tex3); + gSPSegment(NEXT_POLY_OPA_DISP, ANIME_5_TXT_SEG, pal); + + Matrix_translate(0.0f, 0.0f, 0.0f, 0); + Matrix_scale(0.0625f, 0.0625f, 0.0625f, 1); + + 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, aSI_disp_data_table[shop_level].floor_gfx); + + CLOSE_DISP(game->graph); + } + + if (aSI_disp_data_table[shop_level].floor_xlu_gfx != NULL) { + OPEN_DISP(game->graph); + + /* Load floor palette & textures */ + gSPSegment(NEXT_POLY_XLU_DISP, ANIME_1_TXT_SEG, tex0); + gSPSegment(NEXT_POLY_XLU_DISP, ANIME_2_TXT_SEG, tex1); + gSPSegment(NEXT_POLY_XLU_DISP, ANIME_3_TXT_SEG, tex2); + gSPSegment(NEXT_POLY_XLU_DISP, ANIME_4_TXT_SEG, tex3); + gSPSegment(NEXT_POLY_XLU_DISP, ANIME_5_TXT_SEG, pal); + + Matrix_translate(0.0f, 0.0f, 0.0f, 0); + Matrix_scale(0.0625f, 0.0625f, 0.0625f, 1); + + gSPMatrix(NEXT_POLY_XLU_DISP, _Matrix_to_Mtx_new(game->graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(NEXT_POLY_XLU_DISP, aSI_disp_data_table[shop_level].floor_xlu_gfx); + + CLOSE_DISP(game->graph); + } + } +} + +static void aSI_DrawShopFukubiki(ACTOR* actorx, GAME* game) { + SHOP_INDOOR_ACTOR* shop_indoor = (SHOP_INDOOR_ACTOR*)actorx; + int shop_level = shop_indoor->shop_idx; + GAME_PLAY* play = (GAME_PLAY*)game; + + if (aSI_disp_data_table[shop_level].fukubiki_gfx != NULL) { + _texture_z_light_fog_prim(game->graph); + + if (shop_level == aSI_SHOP_TYPE_CONVENI) { + xyz_t mirror_pos = { 10.0f, 10.0f, 10.0f }; + + Setpos_HiliteReflect_init(&mirror_pos, play); + } + + OPEN_DISP(game->graph); + + Matrix_translate(0.0f, 0.0f, 0.0f, 0); + Matrix_scale(0.0625f, 0.0625f, 0.0625f, 1); + + gSPMatrix(NEXT_POLY_OPA_DISP, _Matrix_to_Mtx_new(game->graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + Global_kankyo_set_room_prim(play); + gSPDisplayList(NEXT_POLY_OPA_DISP, aSI_disp_data_table[shop_level].fukubiki_gfx); + + CLOSE_DISP(game->graph); + } + + if (aSI_disp_data_table[shop_level].fukubiki_xlu_gfx != NULL) { + _texture_z_light_fog_prim_xlu(game->graph); + OPEN_DISP(game->graph); + + Matrix_translate(0.0f, 0.0f, 0.0f, 0); + Matrix_scale(0.0625f, 0.0625f, 0.0625f, 1); + + gSPMatrix(NEXT_POLY_XLU_DISP, _Matrix_to_Mtx_new(game->graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(NEXT_POLY_XLU_DISP, aSI_disp_data_table[shop_level].fukubiki_xlu_gfx); + + CLOSE_DISP(game->graph); + } +} + +static void aSI_DrawShopWall(ACTOR* actorx, GAME* game) { + SHOP_INDOOR_ACTOR* shop_indoor = (SHOP_INDOOR_ACTOR*)actorx; + int data_idx = shop_indoor->wall_data_idx; + u16* pal = (u16*)shop_indoor->wall_data_p[data_idx]; + u8* tex0 = (u8*)(shop_indoor->wall_data_p[data_idx] + aMI_PAL_SIZE); + u8* tex1 = (u8*)(shop_indoor->wall_data_p[data_idx] + aMI_PAL_SIZE + aMI_TEX_SIZE); + int shop_level = actorx->actor_specific; + + if (aSI_disp_data_table[shop_level].wall_gfx != NULL) { + GAME_PLAY* play = (GAME_PLAY*)game; + + OPEN_DISP(game->graph); + + _texture_z_light_fog_prim(game->graph); + + if (shop_level == aSI_SHOP_TYPE_CONVENI) { + xyz_t mirror_pos = { 10.0f, 10.0f, 10.0f }; + + Setpos_HiliteReflect_init(&mirror_pos, play); + } + + /* Load floor palette & textures */ + gSPSegment(NEXT_POLY_OPA_DISP, ANIME_1_TXT_SEG, tex0); + gSPSegment(NEXT_POLY_OPA_DISP, ANIME_2_TXT_SEG, tex1); + gSPSegment(NEXT_POLY_OPA_DISP, ANIME_3_TXT_SEG, pal); + + Matrix_translate(0.0f, 0.0f, 0.0f, 0); + Matrix_scale(0.0625f, 0.0625f, 0.0625f, 1); + + gSPMatrix(NEXT_POLY_OPA_DISP, _Matrix_to_Mtx_new(game->graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + Global_kankyo_set_room_prim(play); + gSPDisplayList(NEXT_POLY_OPA_DISP, aSI_disp_data_table[shop_level].wall_gfx); + + CLOSE_DISP(game->graph); + } + + if (aSI_disp_data_table[shop_level].wall_xlu_gfx != NULL) { + GAME_PLAY* play = (GAME_PLAY*)game; + + OPEN_DISP(game->graph); + + _texture_z_light_fog_prim_xlu(game->graph); + + /* Load floor palette & textures */ + gSPSegment(NEXT_POLY_XLU_DISP, ANIME_1_TXT_SEG, tex0); + gSPSegment(NEXT_POLY_XLU_DISP, ANIME_2_TXT_SEG, tex1); + gSPSegment(NEXT_POLY_XLU_DISP, ANIME_3_TXT_SEG, pal); + + Matrix_translate(0.0f, 0.0f, 0.0f, 0); + Matrix_scale(0.0625f, 0.0625f, 0.0625f, 1); + + gSPMatrix(NEXT_POLY_XLU_DISP, _Matrix_to_Mtx_new(game->graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + Global_kankyo_set_room_prim(play); + gSPDisplayList(NEXT_POLY_XLU_DISP, aSI_disp_data_table[shop_level].wall_xlu_gfx); + + CLOSE_DISP(game->graph); + } +} + +static void aSI_DrawShopIndoor(ACTOR* actorx, GAME* game) { + SHOP_INDOOR_ACTOR* shop_indoor = (SHOP_INDOOR_ACTOR*)actorx; + + if (shop_indoor->fukubiki_active == TRUE) { + aSI_DrawShopFukubiki(actorx, game); + } else { + aSI_DrawShopWall(actorx, game); + aSI_DrawShopFloor(actorx, game); + } +} + +static void Shop_Indoor_Actor_draw(ACTOR* actorx, GAME* game) { + aSI_DrawShopIndoor(actorx, game); +} + +static void Shop_Indoor_Actor_move(ACTOR* actorx, GAME* game) { + // nothing +} + +static int aSI_ChangeCarpet(mActor_name_t item) { + if (Common_Get(clip).shop_indoor_clip != NULL) { + ACTOR* actorx = Common_Get(clip).shop_indoor_clip->shop_indoor_actor; + + if (actorx != NULL && ITEM_IS_CARPET(item)) { + SHOP_INDOOR_ACTOR* shop_indoor = (SHOP_INDOOR_ACTOR*)actorx; + int floor_data_idx = shop_indoor->floor_data_idx; + + shop_indoor->floor_idx = (mActor_name_t)item - ITM_CARPET_START; + shop_indoor->floor_data_idx = (floor_data_idx ^ 1) & 1; + aSI_CopyFloorTexture(actorx, shop_indoor->floor_idx, shop_indoor->floor_data_idx); + + if (aSI_se_mode == aSI_SE_MODE_NORMAL) { + sAdo_SysTrgStart(NA_SE_11B); + } + + return TRUE; + } + } + + return FALSE; +} + +static int aSI_ChangeWall(mActor_name_t item) { + if (Common_Get(clip).shop_indoor_clip != NULL) { + ACTOR* actorx = Common_Get(clip).shop_indoor_clip->shop_indoor_actor; + + if (actorx != NULL && ITEM_IS_WALL(item)) { + SHOP_INDOOR_ACTOR* shop_indoor = (SHOP_INDOOR_ACTOR*)actorx; + int wall_data_idx = shop_indoor->wall_data_idx; + + shop_indoor->wall_idx = (mActor_name_t)item - ITM_WALL_START; + shop_indoor->wall_data_idx = (wall_data_idx ^ 1) & 1; + aSI_CopyWallTexture(actorx, shop_indoor->wall_idx, shop_indoor->wall_data_idx); + sAdo_SysTrgStart(NA_SE_11B); + return TRUE; + } + } + + return FALSE; +} + +static void aSI_Change2Default(void) { + ACTOR* actorx = Common_Get(clip).shop_indoor_clip->shop_indoor_actor; + + if (actorx != NULL) { + SHOP_INDOOR_ACTOR* shop_indoor = (SHOP_INDOOR_ACTOR*)actorx; + s16 shop_level = shop_indoor->shop_idx; + + aSI_se_mode = aSI_SE_MODE_SILENT; + aSI_ChangeWall(ITM_WALL_START + (mActor_name_t)aSI_wall_default_table[shop_level]); + aSI_ChangeCarpet(ITM_CARPET_START + (mActor_name_t)aSI_floor_default_table[shop_level]); + aSI_se_mode = aSI_SE_MODE_NORMAL; + } +} + +static void aSI_IndoorDmaAgain(void) { + if (Common_Get(clip).shop_indoor_clip != NULL) { + ACTOR* actorx = Common_Get(clip).shop_indoor_clip->shop_indoor_actor; + + if (actorx != NULL) { + SHOP_INDOOR_ACTOR* shop_indoor = (SHOP_INDOOR_ACTOR*)actorx; + + aSI_CopyWallTexture(actorx, shop_indoor->wall_idx, 2); + aSI_CopyFloorTexture(actorx, shop_indoor->floor_idx, 2); + } + } +} From 631a443f8ff389934fb2a5be29bd2ea7150cee2a Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Mon, 2 Sep 2024 18:13:21 -0400 Subject: [PATCH 165/234] Implement & link ac_shop_goods --- config/rel_slices.yml | 5 + include/ac_my_room.h | 2 + include/ac_shop_goods.h | 33 ++ include/m_name_table.h | 1 + src/ac_shop_goods.c | 528 +++++++++++++++++++ src/ac_shop_goods_data.c_inc | 971 +++++++++++++++++++++++++++++++++++ 6 files changed, 1540 insertions(+) create mode 100644 src/ac_shop_goods.c create mode 100644 src/ac_shop_goods_data.c_inc diff --git a/config/rel_slices.yml b/config/rel_slices.yml index a6f23764..d6e9de75 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -533,6 +533,11 @@ ac_set_ovl_insect.c: ac_shop_design.c: .text: [0x8049C748, 0x8049D51C] .data: [0x8068E3C0, 0x8068E430] +ac_shop_goods.c: + .text: [0x8049D51C, 0x8049E6F4] + .rodata: [0x80644E28, 0x80645CB0] + .data: [0x8068E430, 0x8068E458] + .bss: [0x812FD270, 0x812FD480] ac_shop_indoor.c: .text: [0x8049E6F4, 0x8049F40C] .rodata: [0x80645CB0, 0x80645CD0] diff --git a/include/ac_my_room.h b/include/ac_my_room.h index b72ac650..766ca477 100644 --- a/include/ac_my_room.h +++ b/include/ac_my_room.h @@ -297,6 +297,8 @@ extern int aMR_DrawDolphinMode(u16 ftr_name); extern Gfx* aMR_IconNo2Gfx1(int icon_no); extern Gfx* aMR_IconNo2Gfx2(int icon_no); extern int aMR_RadioBgmNow(void); +extern void aMR_ThrowItem_FurnitureLock(void); +extern void aMR_ThrowItem_FurnitureUnlock(void); #ifdef __cplusplus } diff --git a/include/ac_shop_goods.h b/include/ac_shop_goods.h index e4694002..ef7a28fa 100644 --- a/include/ac_shop_goods.h +++ b/include/ac_shop_goods.h @@ -9,6 +9,39 @@ extern "C" { #endif +#define aSG_SINGLE_DRAW_NUM 9 + +typedef struct ac_shop_goods_s SHOP_GOODS_ACTOR; + +typedef struct ac_shop_good_single_draw_s { + mActor_name_t item; + s16 layer; + xyz_t target_pos; + xyz_t current_pos; + xyz_t start_pos; + f32 scale; + u16 counter; + s_xyz angle; + f32 velocity_y; + f32 _38; + f32 acceleration_y; + s16 _40; + u16 flags; + int delay_timer; +} aSG_single_draw_c; + +struct ac_shop_goods_s { + ACTOR actor_class; + int picture_count; + int bx; + int bz; + f32 bx_pos; + f32 bz_pos; + s16 mode; + s16 _18A; + aSG_single_draw_c single_draw[aSG_SINGLE_DRAW_NUM]; +}; + extern ACTOR_PROFILE Shop_Goods_Profile; #ifdef __cplusplus diff --git a/include/m_name_table.h b/include/m_name_table.h index 9feed8de..4cc996ca 100644 --- a/include/m_name_table.h +++ b/include/m_name_table.h @@ -2278,6 +2278,7 @@ extern int mNT_check_unknown(mActor_name_t item_no); #define ITM_DIARY_END (ITM_DIARY_START + 16) #define ITM_TICKET_START 0x2C00 +#define ITM_TICKET_END (ITM_TICKET_START + 95) #define ITM_INSECT_START 0x2D00 #define ITM_INSECT00 (ITM_INSECT_START + 0) diff --git a/src/ac_shop_goods.c b/src/ac_shop_goods.c new file mode 100644 index 00000000..a3155114 --- /dev/null +++ b/src/ac_shop_goods.c @@ -0,0 +1,528 @@ +#include "ac_shop_goods.h" + +#include "m_common_data.h" +#include "m_player_lib.h" +#include "m_rcp.h" +#include "sys_matrix.h" +#include "ac_my_room.h" +#include "m_malloc.h" + +static void Shop_Goods_Actor_ct(ACTOR* actorx, GAME* game); +static void Shop_Goods_Actor_dt(ACTOR* actorx, GAME* game); +static void Shop_Goods_Actor_move(ACTOR* actorx, GAME* game); +static void Shop_Goods_Actor_draw(ACTOR* actorx, GAME* game); + +// clang-format off +ACTOR_PROFILE Shop_Goods_Profile = { + mAc_PROFILE_SHOP_GOODS, + ACTOR_PART_CONTROL, + ACTOR_STATE_NO_DRAW_WHILE_CULLED | ACTOR_STATE_NO_MOVE_WHILE_CULLED, + EMPTY_NO, + ACTOR_OBJ_BANK_SHOP_GOODS, + sizeof(SHOP_GOODS_ACTOR), + &Shop_Goods_Actor_ct, + &Shop_Goods_Actor_dt, + &Shop_Goods_Actor_move, + &Shop_Goods_Actor_draw, + NULL, +}; +// clang-format on + +#define aSG_DATA_ROTATE_Y_FLAG (1 << 0) + +#include "../src/ac_shop_goods_data.c_inc" + +#define aSG_SCALE_FLAG (1 << 0) + +static s16 SG_angle_y[UT_Z_NUM][UT_X_NUM]; +static SHOP_GOODS_ACTOR* Glb_shop_goods_actor; +static int picture_count; +static s16 mode; + +static s16 Shop_Goods_Actor_single_get_angle_y(int ut_z, int ut_x, int layer) { + if (layer == mCoBG_LAYER1) { + return SG_angle_y[ut_z][ut_x]; + } + + return 0; +} + +static void Shop_Goods_Actor_single_set_angle_y(int ut_z, int ut_x, int layer, s16 angle_y) { + if (layer == mCoBG_LAYER1) { + SG_angle_y[ut_z][ut_x] = angle_y; + } +} + +static void Shop_Goods_draw_ta_set(GAME* game) { + OPEN_DISP(game->graph); + + gDPSetTextureAdjustMode(NEXT_POLY_OPA_DISP, G_TA_DOLPHIN); + gDPSetTextureAdjustMode(NEXT_POLY_XLU_DISP, G_TA_DOLPHIN); + + CLOSE_DISP(game->graph); +} + +static void Shop_Goods_draw_ta_clr(GAME* game) { + OPEN_DISP(game->graph); + + gDPSetTextureAdjustMode(NEXT_POLY_OPA_DISP, G_TA_N64); + gDPSetTextureAdjustMode(NEXT_POLY_XLU_DISP, G_TA_N64); + + CLOSE_DISP(game->graph); +} + +static int Shop_Goods_Actor_drop_entry(SHOP_GOODS_ACTOR* shop_goods, mActor_name_t item, xyz_t* now_pos, + xyz_t* target_pos, s16 layer, int timer, u16 flags); + +static int Shop_Goods_Actor_player_drop_entry(GAME* game, mActor_name_t item, int ut_x, int ut_z, int layer, + int delay_timer) { + ACTOR* player_actor = GET_PLAYER_ACTOR_GAME_ACTOR(game); + int res = 0; + xyz_t now_pos; + xyz_t target_pos; + mActor_name_t* fg_p; + + target_pos.x = 0.0f; + target_pos.y = 0.0f; + target_pos.z = 0.0f; + + mFI_UtNum2CenterWpos(&target_pos, ut_x, ut_z); + + if (layer == mCoBG_LAYER0) { + target_pos.y = mCoBG_GetBgY_OnlyCenter_FromWpos2(target_pos, -1.0f); + } else { + target_pos.y = mCoBG_GetBgY_AngleS_FromWpos(NULL, target_pos, -1.0f); + } + + if (layer == mCoBG_LAYER0) { + fg_p = mFI_GetUnitFG(target_pos); + } else { + fg_p = mFI_GetUnitFG2(target_pos); + } + + if (*fg_p == EMPTY_NO) { + xyz_t_move(&now_pos, &player_actor->world.position); + now_pos.y += 50.0f; + + if (Shop_Goods_Actor_drop_entry(Glb_shop_goods_actor, item, &now_pos, &target_pos, layer, delay_timer, 1)) { + if (layer == mCoBG_LAYER0) { + mFI_SetFG_common(RSV_NO, target_pos, FALSE); + } else { + mFI_SetFG2(RSV_NO, target_pos); + } + + if (layer == mCoBG_LAYER1) { + SG_angle_y[ut_z][ut_x] = 0; + } + + res = 1; + aMR_ThrowItem_FurnitureLock(); + } + } else { + res = -1; + } + + return res; +} + +static int Shop_Goods_Actor_drop_entry(SHOP_GOODS_ACTOR* shop_goods, mActor_name_t item, xyz_t* now_pos, + xyz_t* target_pos, s16 layer, int delay_timer, u16 flags) { + aSG_single_draw_c* single_draw_p = shop_goods->single_draw; + int i; + f32 dist_xz; + f32 dist_y; + int res = FALSE; + + for (i = 0; i < aSG_SINGLE_DRAW_NUM; i++) { + if (single_draw_p->counter == 0) { + xyz_t_move(&single_draw_p->start_pos, now_pos); + xyz_t_move(&single_draw_p->current_pos, now_pos); + xyz_t_move(&single_draw_p->target_pos, target_pos); + single_draw_p->item = item; + single_draw_p->layer = layer; + single_draw_p->angle.y = search_position_angleY(&single_draw_p->current_pos, &single_draw_p->target_pos); + single_draw_p->flags = flags; + single_draw_p->acceleration_y = -1.2f; + single_draw_p->counter = 1; + single_draw_p->_40 = 0; + single_draw_p->delay_timer = delay_timer; + + if ((flags & 1)) { + single_draw_p->scale = 0.0f; + } else { + single_draw_p->scale = 1.0f; + } + + dist_xz = search_position_distanceXZ(&single_draw_p->target_pos, &single_draw_p->current_pos); + dist_y = single_draw_p->target_pos.y - single_draw_p->current_pos.y; + if (dist_xz != 0.0f) { + f32 tmp = + ((single_draw_p->acceleration_y * 0.5f) + (single_draw_p->acceleration_y * 0.5f) * 28.0f) * 14.0f; + + single_draw_p->velocity_y = (dist_y - tmp) / 28.0f; + } else { + single_draw_p->velocity_y = 0.0f; + } + + res = TRUE; + break; + } + + single_draw_p++; + } + + return res; +} + +static void Shop_Goods_Actor_drop_destruct(SHOP_GOODS_ACTOR* shop_goods) { + int i; + aSG_single_draw_c* single_draw_p = shop_goods->single_draw; + + for (i = 0; i < aSG_SINGLE_DRAW_NUM; i++) { + if (single_draw_p->counter != 0) { + if (single_draw_p->layer == mCoBG_LAYER0) { + mFI_SetFG_common(single_draw_p->item, single_draw_p->target_pos, FALSE); + } else { + mFI_SetFG2(single_draw_p->item, single_draw_p->target_pos); + } + } + + single_draw_p++; + } +} + +static void Shop_Goods_Actor_drop_move(SHOP_GOODS_ACTOR* shop_goods) { + int i; + aSG_single_draw_c* single_draw_p = shop_goods->single_draw; + + for (i = 0; i < aSG_SINGLE_DRAW_NUM; i++, single_draw_p++) { + if (single_draw_p->delay_timer > 0) { + single_draw_p->delay_timer--; + continue; + } + + if (single_draw_p->counter != 0) { + f32 percent_xz = (f32)single_draw_p->counter * (1.0f / 30.0f); + + if (percent_xz > 1.0f) { + percent_xz = 1.0f; + } else { + percent_xz = percent_xz; + } + + single_draw_p->velocity_y += single_draw_p->acceleration_y * 0.5f; + single_draw_p->current_pos.y += single_draw_p->velocity_y * 0.5f; + single_draw_p->current_pos.x = + single_draw_p->start_pos.x + percent_xz * (single_draw_p->target_pos.x - single_draw_p->start_pos.x); + single_draw_p->current_pos.z = + single_draw_p->start_pos.z + percent_xz * (single_draw_p->target_pos.z - single_draw_p->start_pos.z); + + if ((single_draw_p->flags & aSG_SCALE_FLAG)) { + single_draw_p->scale = 0.1f + (1.0f - SQ(1.0f - (f32)single_draw_p->counter / 28.0f)) * 0.9f; + } + + if (single_draw_p->counter == 27) { + if (single_draw_p->item == ITM_FOOD_APPLE || single_draw_p->item == ITM_FOOD_CHERRY || + single_draw_p->item == ITM_FOOD_PEAR || single_draw_p->item == ITM_FOOD_PEACH || + single_draw_p->item == ITM_FOOD_ORANGE) { + sAdo_OngenTrgStart(0x127, &single_draw_p->current_pos); + } else if (single_draw_p->item == ITM_MONEY_1000 || single_draw_p->item == ITM_MONEY_10000 || + single_draw_p->item == ITM_MONEY_30000 || single_draw_p->item == ITM_MONEY_100) { + sAdo_OngenTrgStart(0x444, &single_draw_p->current_pos); + } else { + sAdo_OngenTrgStart(0x128, &single_draw_p->current_pos); + } + } + + if (single_draw_p->current_pos.y <= single_draw_p->target_pos.y) { + if (single_draw_p->_40 == 0) { + single_draw_p->flags &= ~aSG_SCALE_FLAG; + single_draw_p->scale = 1.0f; + xyz_t_move(&single_draw_p->current_pos, &single_draw_p->target_pos); + single_draw_p->velocity_y = -single_draw_p->velocity_y * 0.25f; + single_draw_p->_40++; + if (single_draw_p->velocity_y > 3.0f) { + single_draw_p->velocity_y = 3.0f; + } + } else { + if (single_draw_p->layer == mCoBG_LAYER0) { + mFI_SetFG_common(single_draw_p->item, single_draw_p->target_pos, FALSE); + } else { + mFI_SetFG2(single_draw_p->item, single_draw_p->target_pos); + } + + single_draw_p->counter = 0; + aMR_ThrowItem_FurnitureUnlock(); + } + } else { + single_draw_p->counter++; + } + } + } +} + +static void Shop_Goods_Actor_single_drawR(GAME* game, mActor_name_t item, xyz_t* pos, xyz_t* scale, s16 angle_y, + int layer) { + GAME_PLAY* play = (GAME_PLAY*)game; + const aSG_data_c* src_data_p = l_shop_goods_dsp_table; + int i; + + for (i = 0; i < picture_count; i++) { + const aSG_data_c* data_p = &src_data_p[i]; + // Global_light* glight = &((GAME_PLAY*)game)->global_light; + LightsN* lightsN; + + if (item >= data_p->item_start && item <= data_p->item_end) { + int xlu_flag = data_p->xlu_gfx0[mode] != NULL; + GRAPH* graph; + + if (xlu_flag) { + _texture_z_light_fog_prim_xlu(game->graph); + } + + _texture_z_light_fog_prim(game->graph); + + graph = play->game.graph; + OPEN_DISP(graph); + + lightsN = Global_light_read(&play->global_light, graph); + LightsN_list_check(lightsN, play->global_light.list, pos); + LightsN_disp(lightsN, play->game.graph); + + Matrix_translate(pos->x, pos->y, pos->z, 0); + if ((data_p->flags & aSG_DATA_ROTATE_Y_FLAG) && layer == mCoBG_LAYER1) { + Matrix_RotateY(angle_y, 1); + } + Matrix_scale(scale->x, scale->y, scale->z, 1); + + 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, data_p->gfx0[mode]); + + if (data_p->gfx1[mode] != NULL) { + gSPDisplayList(NEXT_POLY_OPA_DISP, data_p->gfx1[mode]); + } + + if (xlu_flag != FALSE) { + gSPMatrix(NEXT_POLY_XLU_DISP, _Matrix_to_Mtx_new(game->graph), + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(NEXT_POLY_XLU_DISP, data_p->xlu_gfx0[mode]); + + if (data_p->xlu_gfx1[mode] != NULL) { + gSPDisplayList(NEXT_POLY_XLU_DISP, data_p->xlu_gfx1[mode]); + } + } + + CLOSE_DISP(graph); + return; + } + } +} + +static void Shop_Goods_Actor_single_draw(GAME* game, mActor_name_t item, xyz_t* pos, f32 scale, s16 angle_y, + int layer) { + xyz_t xyz_scale; + + Shop_Goods_draw_ta_set(game); + xyz_scale.x = scale; + xyz_scale.y = scale; + xyz_scale.z = scale; + Shop_Goods_Actor_single_drawR(game, item, pos, &xyz_scale, angle_y, layer); + Shop_Goods_draw_ta_clr(game); +} + +static void Shop_Goods_Actor_drop_draw(ACTOR* actorx, GAME* game) { + SHOP_GOODS_ACTOR* shop_goods = (SHOP_GOODS_ACTOR*)actorx; + int i; + aSG_single_draw_c* single_draw_p = shop_goods->single_draw; + + for (i = 0; i < aSG_SINGLE_DRAW_NUM; i++) { + if (single_draw_p->counter != 0) { + int ut_x; + int ut_z; + s16 angle_y; + + if (mFI_Wpos2UtNum(&ut_x, &ut_z, single_draw_p->target_pos)) { + angle_y = SG_angle_y[ut_z][ut_x]; + } else { + angle_y = 0; + } + + Shop_Goods_Actor_single_draw(game, single_draw_p->item, &single_draw_p->current_pos, + single_draw_p->scale * 0.01f, angle_y, single_draw_p->layer); + } + + single_draw_p++; + } +} + +static int aSG_CountPictureKind(void) { + const aSG_data_c* data_p = l_shop_goods_dsp_table; + int count = 0; + + for (data_p; data_p->item_start != EMPTY_NO || data_p->item_end != EMPTY_NO; data_p++) { + count++; + } + + return count; +} + +static void Shop_Goods_Actor_ct(ACTOR* actorx, GAME* game) { + SHOP_GOODS_ACTOR* shop_goods = (SHOP_GOODS_ACTOR*)actorx; + int i; + + shop_goods->picture_count = aSG_CountPictureKind(); + picture_count = shop_goods->picture_count; + + mFI_Wpos2BlockNum(&shop_goods->bx, &shop_goods->bz, actorx->world.position); + shop_goods->bx_pos = (f32)shop_goods->bx * mFI_BK_WORLDSIZE_X_F; + shop_goods->bz_pos = (f32)shop_goods->bz * mFI_BK_WORLDSIZE_Z_F; + + shop_goods->mode = actorx->actor_specific; + mode = shop_goods->mode; + + for (i = 0; i < aSG_SINGLE_DRAW_NUM; i++) { + shop_goods->single_draw[i].counter = 0; + } + + Glb_shop_goods_actor = shop_goods; + + if (Common_Get(clip).shop_goods_clip == NULL) { + Common_Get(clip).shop_goods_clip = (aSG_Clip_c*)zelda_malloc(sizeof(aSG_Clip_c)); + Common_Get(clip).shop_goods_clip->single_draw_proc = &Shop_Goods_Actor_single_draw; + Common_Get(clip).shop_goods_clip->player_drop_entry_proc = &Shop_Goods_Actor_player_drop_entry; + Common_Get(clip).shop_goods_clip->single_get_angle_y_proc = &Shop_Goods_Actor_single_get_angle_y; + Common_Get(clip).shop_goods_clip->single_set_angle_y_proc = &Shop_Goods_Actor_single_set_angle_y; + } +} + +static void Shop_Goods_Actor_dt(ACTOR* actorx, GAME* game) { + SHOP_GOODS_ACTOR* shop_goods = (SHOP_GOODS_ACTOR*)actorx; + + Shop_Goods_Actor_drop_destruct(shop_goods); + if (Common_Get(clip).shop_goods_clip != NULL) { + zelda_free(Common_Get(clip).shop_goods_clip); +/* @BUG - shouldn't shop_goods_clip get set to NULL? */ +#ifdef BUGFIXES + Common_Get(clip).shop_goods_clip = NULL; +#endif + } +} + +static void Shop_Goods_Actor_move(ACTOR* actorx, GAME* game) { + SHOP_GOODS_ACTOR* shop_goods = (SHOP_GOODS_ACTOR*)actorx; + + Shop_Goods_Actor_drop_move(shop_goods); +} + +static void aSG_DrawGoods(GRAPH* graph, Global_light* glight, SHOP_GOODS_ACTOR* shop_goods, int bx, int bz, int ux, + int uz, const aSG_data_c* data_p, int layer) { + xyz_t pos; + int mode = shop_goods->mode; + Gfx* gfx0 = data_p->gfx0[mode]; + Gfx* gfx1 = data_p->gfx1[mode]; + Gfx* xlu_gfx0 = data_p->xlu_gfx0[mode]; + Gfx* xlu_gfx1 = data_p->xlu_gfx1[mode]; + LightsN* lightsN; + + mFI_BkandUtNum2CenterWpos(&pos, bx, bz, ux, uz); + if (layer == mCoBG_LAYER0) { + pos.y = mCoBG_GetBgY_OnlyCenter_FromWpos2(pos, 0.0f); + } else { + pos.y = mCoBG_GetBgY_AngleS_FromWpos(NULL, pos, 0.0f); + } + + OPEN_DISP(graph); + + lightsN = Global_light_read(glight, graph); + LightsN_list_check(lightsN, glight->list, &pos); + LightsN_disp(lightsN, graph); + + if (gfx0 != NULL || xlu_gfx0 != NULL) { + Matrix_translate(pos.x, pos.y, pos.z, 0); + if ((data_p->flags & aSG_DATA_ROTATE_Y_FLAG) && layer == mCoBG_LAYER1) { + Matrix_RotateY(SG_angle_y[uz][ux], 1); + } + Matrix_scale(0.01f, 0.01f, 0.01f, 1); + + if (gfx0 != NULL) { + _texture_z_light_fog_prim(graph); + + gSPMatrix(NEXT_POLY_OPA_DISP, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(NEXT_POLY_OPA_DISP, gfx0); + + if (gfx1 != NULL) { + gSPDisplayList(NEXT_POLY_OPA_DISP, gfx1); + } + } + + if (xlu_gfx0 != NULL) { + _texture_z_light_fog_prim_xlu(graph); + gSPMatrix(NEXT_POLY_XLU_DISP, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(NEXT_POLY_XLU_DISP, xlu_gfx0); + + if (xlu_gfx1 != NULL) { + gSPDisplayList(NEXT_POLY_XLU_DISP, xlu_gfx1); + } + } + } + + CLOSE_DISP(graph); +} + +static void aSG_DrawGoodsPicture(ACTOR* actorx, GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + Global_light* glight = &play->global_light; + SHOP_GOODS_ACTOR* shop_goods = (SHOP_GOODS_ACTOR*)actorx; + const aSG_data_c* data_p = l_shop_goods_dsp_table; + int picture_count = shop_goods->picture_count; + int bx = shop_goods->bx; + int bz = shop_goods->bz; + mActor_name_t* fg_p = mFI_BkNumtoUtFGTop(bx, bz); + mActor_name_t* fg2_p = mFI_BkNum2UtFGTop_layer(bx, bz, mCoBG_LAYER1); + s16 mode = shop_goods->mode; + int ux; + int uz; + int i; + + if (fg_p != NULL) { + for (uz = 0; uz < UT_Z_NUM; uz++) { + for (ux = 0; ux < UT_X_NUM; ux++) { + if (*fg_p != RSV_NO) { + for (i = 0; i < picture_count; i++) { + if (*fg_p >= data_p[i].item_start && *fg_p <= data_p[i].item_end) { + aSG_DrawGoods(game->graph, glight, shop_goods, bx, bz, ux, uz, &data_p[i], mCoBG_LAYER0); + break; + } + } + } + + fg_p++; + } + } + } + + if (mode == 1 && fg2_p != NULL) { + for (uz = 0; uz < UT_Z_NUM; uz++) { + for (ux = 0; ux < UT_X_NUM; ux++) { + if (*fg2_p != RSV_NO) { + for (i = 0; i < picture_count; i++) { + if (*fg2_p >= data_p[i].item_start && *fg2_p <= data_p[i].item_end) { + aSG_DrawGoods(game->graph, glight, shop_goods, bx, bz, ux, uz, &data_p[i], mCoBG_LAYER1); + break; + } + } + } + + fg2_p++; + } + } + } +} + +static void Shop_Goods_Actor_draw(ACTOR* actorx, GAME* game) { + _texture_z_light_fog_prim(game->graph); + Shop_Goods_draw_ta_set(game); + aSG_DrawGoodsPicture(actorx, game); + Shop_Goods_draw_ta_clr(game); + Shop_Goods_Actor_drop_draw(actorx, game); +} diff --git a/src/ac_shop_goods_data.c_inc b/src/ac_shop_goods_data.c_inc new file mode 100644 index 00000000..629c242d --- /dev/null +++ b/src/ac_shop_goods_data.c_inc @@ -0,0 +1,971 @@ +extern Gfx obj_apple2_modelT[]; +extern Gfx obj_axeT_mat_model[]; +extern Gfx obj_axeT_gfx_model[]; +extern Gfx obj_paper_mat_model[]; +extern Gfx obj_paper_gfx_model[]; +extern Gfx obj_carpetT_mat_model[]; +extern Gfx obj_carpetT_gfx_model[]; +extern Gfx item_fish_modelT[]; +extern Gfx obj_shop_fossil_mat_model[]; +extern Gfx obj_shop_fossil_gfx_model[]; +extern Gfx obj_fukuT_mat_model[]; +extern Gfx obj_fukuT_gfx_model[]; +extern Gfx item_kabu_modelT[]; +extern Gfx obj_shop_kanbanT_mat_model[]; +extern Gfx obj_shop_kanbanT_gfx_model[]; +extern Gfx obj_shop_kaza1_model[]; +extern Gfx obj_shop_kaza2_model[]; +extern Gfx obj_shop_kaza3_model[]; +extern Gfx obj_shop_kaza4_model[]; +extern Gfx obj_shop_kaza5_model[]; +extern Gfx obj_shop_kaza6_model[]; +extern Gfx obj_shop_kaza7_model[]; +extern Gfx obj_shop_kaza8_model[]; +extern Gfx item_matutake_modelT[]; +extern Gfx obj_mdT_mat_model[]; +extern Gfx obj_mdT_gfx_model[]; +extern Gfx obj_shop_cnaegiT_mat_model[]; +extern Gfx obj_shop_cnaegiT_gfx_model[]; +extern Gfx obj_naegiT_mat_model[]; +extern Gfx obj_naegiT_gfx_model[]; +extern Gfx obj_netT_mat_model[]; +extern Gfx obj_netT_gfx_model[]; +extern Gfx item_orange_modelT[]; +extern Gfx obj_paintT_a_mat_model[]; +extern Gfx obj_paintT_b_mat_model[]; +extern Gfx obj_paintT_c_mat_model[]; +extern Gfx obj_paintT_d_mat_model[]; +extern Gfx obj_paintT_e_mat_model[]; +extern Gfx obj_paintT_f_mat_model[]; +extern Gfx obj_paintT_g_mat_model[]; +extern Gfx obj_paintT_h_mat_model[]; +extern Gfx obj_paintT_i_mat_model[]; +extern Gfx obj_paintT_j_mat_model[]; +extern Gfx obj_paintT_k_mat_model[]; +extern Gfx obj_paintT_l_mat_model[]; +extern Gfx obj_paintT_gfx_model[]; +extern Gfx obj_rodT_mat_model[]; +extern Gfx obj_rodT_gfx_model[]; +extern Gfx obj_rod_lineT_mat_model[]; +extern Gfx obj_rod_lineT_gfx_model[]; +extern Gfx obj_sangoT_mat_model[]; +extern Gfx obj_sangoT_gfx_model[]; +extern Gfx obj_seed_mat_model[]; +extern Gfx obj_seed_gfx_model[]; +extern Gfx obj_honegaiT_mat_model[]; +extern Gfx obj_honegaiT_gfx_model[]; +extern Gfx obj_horagaiT_mat_model[]; +extern Gfx obj_horagaiT_gfx_model[]; +extern Gfx obj_komagaiT_mat_model[]; +extern Gfx obj_komagaiT_gfx_model[]; +extern Gfx obj_takaragaiT_mat_model[]; +extern Gfx obj_takaragaiT_gfx_model[]; +extern Gfx obj_ougigaiT_mat_model[]; +extern Gfx obj_ougigaiT_gfx_model[]; +extern Gfx obj_sakuragaiT_mat_model[]; +extern Gfx obj_sakuragaiT_gfx_model[]; +extern Gfx obj_shakogaiT_mat_model[]; +extern Gfx obj_shakogaiT_gfx_model[]; +extern Gfx obj_shovelT_mat_model[]; +extern Gfx obj_shovelT_gfx_model[]; +extern Gfx obj_soldoutT_mat_model[]; +extern Gfx obj_soldoutT_gfx_model[]; +extern Gfx obj_ticketT_mat_model[]; +extern Gfx obj_ticketT_gfx_model[]; +extern Gfx obj_axe2T_mat_model[]; +extern Gfx obj_axe2T_gfx_model[]; +extern Gfx obj_net2T_mat_model[]; +extern Gfx obj_net2T_gfx_model[]; +extern Gfx obj_rod2T_mat_model[]; +extern Gfx obj_rod2T_gfx_model[]; +extern Gfx obj_rod2_lineT_mat_model[]; +extern Gfx obj_rod2_lineT_gfx_model[]; +extern Gfx obj_shovel2T_mat_model[]; +extern Gfx obj_shovel2T_gfx_model[]; +extern Gfx obj_g2T_mat_model[]; +extern Gfx obj_g2T_gfx_model[]; +extern Gfx obj_nagagutuT_mat_model[]; +extern Gfx obj_nagagutuT_gfx_model[]; +extern Gfx obj_g1T_mat_model[]; +extern Gfx obj_g1T_gfx_model[]; +extern Gfx obj_shop_utiwa1_mat_model[]; +extern Gfx obj_shop_utiwa1_gfx_model[]; +extern Gfx obj_shop_utiwa2_mat_model[]; +extern Gfx obj_shop_utiwa2_gfx_model[]; +extern Gfx obj_shop_utiwa3_mat_model[]; +extern Gfx obj_shop_utiwa3_gfx_model[]; +extern Gfx obj_shop_utiwa4_mat_model[]; +extern Gfx obj_shop_utiwa4_gfx_model[]; +extern Gfx obj_shop_utiwa5_mat_model[]; +extern Gfx obj_shop_utiwa5_gfx_model[]; +extern Gfx obj_shop_utiwa6_mat_model[]; +extern Gfx obj_shop_utiwa6_gfx_model[]; +extern Gfx obj_shop_utiwa7_mat_model[]; +extern Gfx obj_shop_utiwa7_gfx_model[]; +extern Gfx obj_shop_utiwa8_mat_model[]; +extern Gfx obj_shop_utiwa8_gfx_model[]; +extern Gfx obj_wallT_mat_model[]; +extern Gfx obj_wallT_gfx_model[]; +extern Gfx int_iid_diary_model[]; +extern Gfx int_iid_funediary_model[]; +extern Gfx int_iid_mdiary_model[]; +extern Gfx int_iid_newediary_model[]; +extern Gfx int_ike_nikki_fan1_on_model[]; +extern Gfx int_ike_nikki_fan2_on_model[]; +extern Gfx int_ike_nikki_fan3_on_model[]; +extern Gfx int_ike_nikki_fan4_on_model[]; +extern Gfx int_ike_nikki_fan5_on_model[]; +extern Gfx int_ike_nikki_wafu1_on_model[]; +extern Gfx bag_DL_mode[]; +extern Gfx bag_DL_vtx[]; +extern Gfx obj_shop_candy_modelT[]; +extern Gfx obj_item_cocoT_mat_model[]; +extern Gfx obj_item_cocoT_gfx_model[]; +extern Gfx nuts_DL_mode[]; +extern Gfx nuts_DL_vtx[]; +extern Gfx obj_otosiT_mat_model[]; +extern Gfx obj_otosiT_gfx_model[]; +extern Gfx peach_DL_mode[]; +extern Gfx peach_DL_vtx[]; +extern Gfx pear_DL_mode[]; +extern Gfx pear_DL_vtx[]; +extern Gfx int_nog_collegenote_model[]; +extern Gfx int_nog_harddiaryT_model[]; +extern Gfx int_nog_schoolnote_model[]; +extern Gfx int_nog_systemnote_model[]; +extern Gfx int_nog_tudurinoteT_model[]; +extern Gfx int_tak_nikki01_on_model[]; + +typedef struct ac_shop_goods_data_s { + mActor_name_t item_start; + mActor_name_t item_end; + Gfx* gfx0[2]; + Gfx* gfx1[2]; + Gfx* xlu_gfx0[2]; + Gfx* xlu_gfx1[2]; + int flags; +} aSG_data_c; + +// clang-format off +static const aSG_data_c l_shop_goods_dsp_table[] = { + { + ITM_PAPER00, + ITM_PAPER_END - 1, + { obj_paper_mat_model, obj_paper_mat_model }, + { obj_paper_gfx_model, obj_paper_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + 0xFE0E, + 0xFE0E, + { obj_soldoutT_mat_model, obj_soldoutT_mat_model }, + { obj_soldoutT_gfx_model, obj_soldoutT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + 0xFE10, + 0xFE18, + { obj_soldoutT_mat_model, obj_soldoutT_mat_model }, + { obj_soldoutT_gfx_model, obj_soldoutT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_CARPET00, + ITM_CARPET66, + { obj_carpetT_mat_model, obj_carpetT_mat_model }, + { obj_carpetT_gfx_model, obj_carpetT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_WALL00, + ITM_WALL66, + { obj_wallT_mat_model, obj_wallT_mat_model }, + { obj_wallT_gfx_model, obj_wallT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_CLOTH000, + ITM_CLOTH254, + { NULL, obj_wallT_mat_model }, + { NULL, obj_wallT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_AXE, + ITM_AXE, + { obj_axeT_mat_model, obj_axeT_mat_model }, + { obj_axeT_gfx_model, obj_axeT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_AXE_USE_1, + ITM_AXE_USE_7, + { obj_axeT_mat_model, obj_axeT_mat_model }, + { obj_axeT_gfx_model, obj_axeT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_SHOVEL, + ITM_SHOVEL, + { obj_shovelT_mat_model, obj_shovelT_mat_model }, + { obj_shovelT_gfx_model, obj_shovelT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_NET, + ITM_NET, + { obj_netT_mat_model, obj_netT_mat_model }, + { obj_netT_gfx_model, obj_netT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_ROD, + ITM_ROD, + { obj_rodT_mat_model, obj_rodT_mat_model }, + { obj_rodT_gfx_model, obj_rodT_gfx_model }, + { obj_rod_lineT_mat_model, obj_rod_lineT_mat_model }, + { obj_rod_lineT_gfx_model, obj_rod_lineT_gfx_model }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_SAPLING, + ITM_SAPLING, + { obj_naegiT_mat_model, obj_naegiT_mat_model }, + { obj_naegiT_gfx_model, obj_naegiT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_WHITE_PANSY_BAG, + ITM_YELLOW_TULIP_BAG, + { obj_seed_mat_model, obj_seed_mat_model }, + { obj_seed_gfx_model, obj_seed_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_CEDAR_SAPLING, + ITM_CEDAR_SAPLING, + { obj_shop_cnaegiT_mat_model, obj_shop_cnaegiT_mat_model }, + { obj_shop_cnaegiT_gfx_model, obj_shop_cnaegiT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_YELLOW_PINWHEEL, + ITM_YELLOW_PINWHEEL, + { obj_shop_kaza1_model, obj_shop_kaza1_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_RED_PINWHEEL, + ITM_RED_PINWHEEL, + { obj_shop_kaza2_model, obj_shop_kaza2_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_TIGER_PINWHEEL, + ITM_TIGER_PINWHEEL, + { obj_shop_kaza3_model, obj_shop_kaza3_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_GREEN_PINWHEEL, + ITM_GREEN_PINWHEEL, + { obj_shop_kaza4_model, obj_shop_kaza4_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_PINK_PINWHEEL, + ITM_PINK_PINWHEEL, + { obj_shop_kaza5_model, obj_shop_kaza5_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_STRIPED_PINWHEEL, + ITM_STRIPED_PINWHEEL, + { obj_shop_kaza6_model, obj_shop_kaza6_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_FLOWER_PINWHEEL, + ITM_FLOWER_PINWHEEL, + { obj_shop_kaza7_model, obj_shop_kaza7_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_FANCY_PINWHEEL, + ITM_FANCY_PINWHEEL, + { obj_shop_kaza8_model, obj_shop_kaza8_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_BLUEBELL_FAN, + ITM_BLUEBELL_FAN, + { obj_shop_utiwa1_mat_model, obj_shop_utiwa1_mat_model }, + { obj_shop_utiwa1_gfx_model, obj_shop_utiwa1_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_PLUM_FAN, + ITM_PLUM_FAN, + { obj_shop_utiwa2_mat_model, obj_shop_utiwa2_mat_model }, + { obj_shop_utiwa2_gfx_model, obj_shop_utiwa2_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_BAMBOO_FAN, + ITM_BAMBOO_FAN, + { obj_shop_utiwa3_mat_model, obj_shop_utiwa3_mat_model }, + { obj_shop_utiwa3_gfx_model, obj_shop_utiwa3_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_CLOUD_FAN, + ITM_CLOUD_FAN, + { obj_shop_utiwa4_mat_model, obj_shop_utiwa4_mat_model }, + { obj_shop_utiwa4_gfx_model, obj_shop_utiwa4_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_MAPLE_FAN, + ITM_MAPLE_FAN, + { obj_shop_utiwa5_mat_model, obj_shop_utiwa5_mat_model }, + { obj_shop_utiwa5_gfx_model, obj_shop_utiwa5_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_FAN_FAN, + ITM_FAN_FAN, + { obj_shop_utiwa6_mat_model, obj_shop_utiwa6_mat_model }, + { obj_shop_utiwa6_gfx_model, obj_shop_utiwa6_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_FLOWER_FAN, + ITM_FLOWER_FAN, + { obj_shop_utiwa7_mat_model, obj_shop_utiwa7_mat_model }, + { obj_shop_utiwa7_gfx_model, obj_shop_utiwa7_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_LEAF_FAN, + ITM_LEAF_FAN, + { obj_shop_utiwa8_mat_model, obj_shop_utiwa8_mat_model }, + { obj_shop_utiwa8_gfx_model, obj_shop_utiwa8_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_FOOD_APPLE, + ITM_FOOD_APPLE, + { obj_apple2_modelT, obj_apple2_modelT }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_FOOD_PEACH, + ITM_FOOD_PEACH, + { peach_DL_mode, peach_DL_mode }, + { peach_DL_vtx, peach_DL_vtx }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_FOOD_ORANGE, + ITM_FOOD_ORANGE, + { item_orange_modelT, item_orange_modelT }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_FISH00, + ITM_FISH39, + { item_fish_modelT, item_fish_modelT }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_FOOD_MUSHROOM, + ITM_FOOD_MUSHROOM, + { item_matutake_modelT, item_matutake_modelT }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_KABU_10, + ITM_KABU_SPOILED, + { item_kabu_modelT, item_kabu_modelT }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_FOOD_CANDY, + ITM_FOOD_CANDY, + { obj_shop_candy_modelT, obj_shop_candy_modelT }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_FOOD_CHERRY, + ITM_FOOD_CHERRY, + { nuts_DL_mode, nuts_DL_mode }, + { nuts_DL_vtx, nuts_DL_vtx }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_FOOD_PEAR, + ITM_FOOD_PEAR, + { pear_DL_mode, pear_DL_mode }, + { pear_DL_vtx, pear_DL_vtx }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_FOOD_COCONUT, + ITM_FOOD_COCONUT, + { obj_item_cocoT_mat_model, obj_item_cocoT_mat_model }, + { obj_item_cocoT_gfx_model, obj_item_cocoT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_MONEY_1000, + ITM_MONEY_100, + { bag_DL_mode, bag_DL_mode }, + { bag_DL_vtx, bag_DL_vtx }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_MINIDISK00, + ITM_MINIDISK54, + { obj_mdT_mat_model, obj_mdT_mat_model }, + { obj_mdT_gfx_model, obj_mdT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_TICKET_START, + ITM_TICKET_END, + { obj_ticketT_mat_model, obj_ticketT_mat_model }, + { obj_ticketT_gfx_model, obj_ticketT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_HUKUBUKURO_BAG, + ITM_HUKUBUKURO_PRESENT, + { obj_fukuT_mat_model, obj_fukuT_mat_model }, + { obj_fukuT_gfx_model, obj_fukuT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DUST0_EMPTY_CAN, + ITM_DUST0_EMPTY_CAN, + { obj_g2T_mat_model, obj_g2T_mat_model }, + { obj_g2T_gfx_model, obj_g2T_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DUST1_BOOT, + ITM_DUST1_BOOT, + { obj_nagagutuT_mat_model, obj_nagagutuT_mat_model }, + { obj_nagagutuT_gfx_model, obj_nagagutuT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DUST2_OLD_TIRE, + ITM_DUST2_OLD_TIRE, + { obj_g1T_mat_model, obj_g1T_mat_model }, + { obj_g1T_gfx_model, obj_g1T_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_FOSSIL, + ITM_FOSSIL, + { obj_shop_fossil_mat_model, obj_shop_fossil_mat_model }, + { obj_shop_fossil_gfx_model, obj_shop_fossil_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_PITFALL, + ITM_PITFALL, + { obj_otosiT_mat_model, obj_otosiT_mat_model }, + { obj_otosiT_gfx_model, obj_otosiT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_SHELL1, + ITM_SHELL1, + { obj_komagaiT_mat_model, obj_komagaiT_mat_model }, + { obj_komagaiT_gfx_model, obj_komagaiT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_SHELL3, + ITM_SHELL3, + { obj_takaragaiT_mat_model, obj_takaragaiT_mat_model }, + { obj_takaragaiT_gfx_model, obj_takaragaiT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_SHELL2, + ITM_SHELL2, + { obj_honegaiT_mat_model, obj_honegaiT_mat_model }, + { obj_honegaiT_gfx_model, obj_honegaiT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_SHELL6, + ITM_SHELL6, + { obj_horagaiT_mat_model, obj_horagaiT_mat_model }, + { obj_horagaiT_gfx_model, obj_horagaiT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_SHELL4, + ITM_SHELL4, + { obj_sakuragaiT_mat_model, obj_sakuragaiT_mat_model }, + { obj_sakuragaiT_gfx_model, obj_sakuragaiT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_SHELL0, + ITM_SHELL0, + { obj_ougigaiT_mat_model, obj_ougigaiT_mat_model }, + { obj_ougigaiT_gfx_model, obj_ougigaiT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_SHELL5, + ITM_SHELL5, + { obj_shakogaiT_mat_model, obj_shakogaiT_mat_model }, + { obj_shakogaiT_gfx_model, obj_shakogaiT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_SHELL7, + ITM_SHELL7, + { obj_sangoT_mat_model, obj_sangoT_mat_model }, + { obj_sangoT_gfx_model, obj_sangoT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_RED_PAINT, + ITM_RED_PAINT, + { obj_paintT_a_mat_model, obj_paintT_a_mat_model }, + { obj_paintT_gfx_model, obj_paintT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_ORANGE_PAINT, + ITM_ORANGE_PAINT, + { obj_paintT_b_mat_model, obj_paintT_b_mat_model }, + { obj_paintT_gfx_model, obj_paintT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_YELLOW_PAINT, + ITM_YELLOW_PAINT, + { obj_paintT_c_mat_model, obj_paintT_c_mat_model }, + { obj_paintT_gfx_model, obj_paintT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_PALE_GREEN_PAINT, + ITM_PALE_GREEN_PAINT, + { obj_paintT_d_mat_model, obj_paintT_d_mat_model }, + { obj_paintT_gfx_model, obj_paintT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_GREEN_PAINT, + ITM_GREEN_PAINT, + { obj_paintT_e_mat_model, obj_paintT_e_mat_model }, + { obj_paintT_gfx_model, obj_paintT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_SKY_BLUE_PAINT, + ITM_SKY_BLUE_PAINT, + { obj_paintT_f_mat_model, obj_paintT_f_mat_model }, + { obj_paintT_gfx_model, obj_paintT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_BLUE_PAINT, + ITM_BLUE_PAINT, + { obj_paintT_g_mat_model, obj_paintT_g_mat_model }, + { obj_paintT_gfx_model, obj_paintT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_PURPLE_PAINT, + ITM_PURPLE_PAINT, + { obj_paintT_h_mat_model, obj_paintT_h_mat_model }, + { obj_paintT_gfx_model, obj_paintT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_PINK_PAINT, + ITM_PINK_PAINT, + { obj_paintT_i_mat_model, obj_paintT_i_mat_model }, + { obj_paintT_gfx_model, obj_paintT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_BLACK_PAINT, + ITM_BLACK_PAINT, + { obj_paintT_j_mat_model, obj_paintT_j_mat_model }, + { obj_paintT_gfx_model, obj_paintT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_WHITE_PAINT, + ITM_WHITE_PAINT, + { obj_paintT_k_mat_model, obj_paintT_k_mat_model }, + { obj_paintT_gfx_model, obj_paintT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_BROWN_PAINT, + ITM_BROWN_PAINT, + { obj_paintT_l_mat_model, obj_paintT_l_mat_model }, + { obj_paintT_gfx_model, obj_paintT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_GOLDEN_NET, + ITM_GOLDEN_NET, + { obj_net2T_mat_model, obj_net2T_mat_model }, + { obj_net2T_gfx_model, obj_net2T_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_GOLDEN_AXE, + ITM_GOLDEN_AXE, + { obj_axe2T_mat_model, obj_axe2T_mat_model }, + { obj_axe2T_gfx_model, obj_axe2T_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_GOLDEN_SHOVEL, + ITM_GOLDEN_SHOVEL, + { obj_shovel2T_mat_model, obj_shovel2T_mat_model }, + { obj_shovel2T_gfx_model, obj_shovel2T_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_GOLDEN_ROD, + ITM_GOLDEN_ROD, + { obj_rod2T_mat_model, obj_rod2T_mat_model }, + { obj_rod2T_gfx_model, obj_rod2T_gfx_model }, + { obj_rod2_lineT_mat_model, obj_rod2_lineT_mat_model }, + { obj_rod2_lineT_gfx_model, obj_rod2_lineT_gfx_model }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_SIGNBOARD, + ITM_SIGNBOARD, + { obj_shop_kanbanT_mat_model, obj_shop_kanbanT_mat_model }, + { obj_shop_kanbanT_gfx_model, obj_shop_kanbanT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DIARY00, + ITM_DIARY00, + { int_nog_collegenote_model, int_nog_collegenote_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DIARY01, + ITM_DIARY01, + { int_nog_schoolnote_model, int_nog_schoolnote_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DIARY02, + ITM_DIARY02, + { int_nog_systemnote_model, int_nog_systemnote_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DIARY03, + ITM_DIARY03, + { int_nog_harddiaryT_model, int_nog_harddiaryT_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DIARY04, + ITM_DIARY04, + { int_nog_tudurinoteT_model, int_nog_tudurinoteT_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DIARY05, + ITM_DIARY05, + { int_iid_diary_model, int_iid_diary_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DIARY06, + ITM_DIARY06, + { int_iid_funediary_model, int_iid_funediary_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DIARY07, + ITM_DIARY07, + { int_iid_mdiary_model, int_iid_mdiary_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DIARY08, + ITM_DIARY08, + { int_iid_newediary_model, int_iid_newediary_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DIARY09, + ITM_DIARY09, + { int_tak_nikki01_on_model, int_tak_nikki01_on_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DIARY10, + ITM_DIARY10, + { int_ike_nikki_fan1_on_model, int_ike_nikki_fan1_on_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DIARY11, + ITM_DIARY11, + { int_ike_nikki_fan2_on_model, int_ike_nikki_fan2_on_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DIARY12, + ITM_DIARY12, + { int_ike_nikki_fan3_on_model, int_ike_nikki_fan3_on_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DIARY13, + ITM_DIARY13, + { int_ike_nikki_fan4_on_model, int_ike_nikki_fan4_on_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DIARY14, + ITM_DIARY14, + { int_ike_nikki_fan5_on_model, int_ike_nikki_fan5_on_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DIARY15, + ITM_DIARY15, + { int_ike_nikki_wafu1_on_model, int_ike_nikki_wafu1_on_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + EMPTY_NO, + EMPTY_NO, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, +}; +// clang-format on From 8222b5f062d0212b8b54581c11cd2bcaefbc5a2c Mon Sep 17 00:00:00 2001 From: koba Date: Tue, 3 Sep 2024 06:13:51 -0400 Subject: [PATCH 166/234] Implement & link ef_otosiana (#420) * Implement & link ef_otosiana * New line fix --------- Co-authored-by: kobacat --- config/rel_slices.yml | 3 +++ src/ef_otosiana.c | 26 ++++++++++++++++++++++---- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/config/rel_slices.yml b/config/rel_slices.yml index d6e9de75..635461a6 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -1204,6 +1204,9 @@ ef_make_hem.c: .text: [0x806162B0, 0x8061710C] .rodata: [0x8064C818, 0x8064C860] .data: [0x806D3160, 0x806D31B8] +ef_otosiana.c: + .text: [0x8061A4E0, 0x8061A650] + .data: [0x806D33B8, 0x806D33D8] ef_pun.c: .text: [0x8061A650, 0x8061A824] .rodata: [0x8064CAB8, 0x8064CAC0] diff --git a/src/ef_otosiana.c b/src/ef_otosiana.c index 59f60c98..e1d53c1d 100644 --- a/src/ef_otosiana.c +++ b/src/ef_otosiana.c @@ -1,5 +1,7 @@ #include "ef_effect_control.h" +#include "m_common_data.h" + static void eOtosiana_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1); static void eOtosiana_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg); static void eOtosiana_mv(eEC_Effect_c* effect, GAME* game); @@ -18,17 +20,33 @@ eEC_PROFILE_c iam_ef_otosiana = { }; static void eOtosiana_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1) { - // TODO + (*eEC_CLIP->make_effect_proc)(eEC_EFFECT_OTOSIANA, pos, NULL, game, NULL, item_name, prio, arg0, arg1); } static void eOtosiana_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg) { - // TODO + effect->timer = 16; } static void eOtosiana_mv(eEC_Effect_c* effect, GAME* game) { - // TODO + static s16 angle_tbl[] = { DEG2SHORT_ANGLE2(0.0f), DEG2SHORT_ANGLE2(135.0f), DEG2SHORT_ANGLE2(270.0f) }; + + if ((s16)(effect->timer & 7) == 0) { + int i; + + for (i = 0; i < 3; i++) { + xyz_t pos = effect->position; + s16 angle = angle_tbl[i]; + + if ((effect->timer & 15) == 0) { + angle += DEG2SHORT_ANGLE2(180.0f); + } + + eEC_CLIP->effect_make_proc(eEC_EFFECT_DIG_MUD, pos, effect->prio, angle, game, effect->item_name, + effect->arg0, 7); + } + } } static void eOtosiana_dw(eEC_Effect_c* effect, GAME* game) { - // TODO + // Nothing } From b78de36436dda15332a00d252107ccb0b10e858d Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Tue, 3 Sep 2024 23:05:59 -0400 Subject: [PATCH 167/234] Implement & link ef_pun_yuge Co-Authored-By: Reaperoe --- config/rel_slices.yml | 4 ++ include/audio_defs.h | 2 + src/ef_pun_yuge.c | 98 +++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 100 insertions(+), 4 deletions(-) diff --git a/config/rel_slices.yml b/config/rel_slices.yml index d6e9de75..f40c5a7f 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -1212,6 +1212,10 @@ ef_pun_sekimen.c: .text: [0x8061A824, 0x8061AA20] .rodata: [0x8064CAC0, 0x8064CAD8] .data: [0x806D33F0, 0x806D3408] +ef_pun_yuge.c: + .text: [0x8061AA20, 0x8061AE9C] + .rodata: [0x8064CAD8, 0x8064CB08] + .data: [0x806D3408, 0x806D3478] ef_tent_lamp.c: .text: [0x80622304, 0x8062260C] .rodata: [0x8064CF10, 0x8064CF38] diff --git a/include/audio_defs.h b/include/audio_defs.h index 9558e5d6..f067c09a 100644 --- a/include/audio_defs.h +++ b/include/audio_defs.h @@ -101,6 +101,8 @@ typedef enum audio_sound_effects { NA_SE_TREE_TOUCH = 0x134, NA_SE_TREE_YURASU, + NA_SE_PUN_YUGE = 0x13B, + NA_SE_DOYON = 0x13F, NA_SE_KIRIBASU_SCOOP = 0x148, diff --git a/src/ef_pun_yuge.c b/src/ef_pun_yuge.c index fe59bea3..555b897b 100644 --- a/src/ef_pun_yuge.c +++ b/src/ef_pun_yuge.c @@ -1,5 +1,20 @@ #include "ef_effect_control.h" +#include "m_common_data.h" +#include "m_rcp.h" +#include "sys_matrix.h" + +extern u8 ef_pun01_0_int_i4[]; +extern u8 ef_pun01_1_int_i4[]; +extern u8 ef_pun01_2_int_i4[]; +extern u8 ef_pun01_3_int_i4[]; +extern u8 ef_pun01_4_int_i4[]; +extern Gfx ef_pun01_00_modelT[]; + +static u8* ePunYuge_yuge_texture_table[] = { + ef_pun01_0_int_i4, ef_pun01_1_int_i4, ef_pun01_2_int_i4, ef_pun01_3_int_i4, ef_pun01_4_int_i4, +}; + static void ePunYuge_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1); static void ePunYuge_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg); static void ePunYuge_mv(eEC_Effect_c* effect, GAME* game); @@ -18,17 +33,92 @@ eEC_PROFILE_c iam_ef_pun_yuge = { }; static void ePunYuge_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1) { - // TODO + pos.y += 23.0f; + eEC_CLIP->make_effect_proc(eEC_EFFECT_PUN_YUGE, pos, NULL, game, &arg0, item_name, prio, 0, 0); } static void ePunYuge_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg) { - // TODO + effect->effect_specific[1] = *(s16*)ct_arg; + effect->effect_specific[0] = eEC_CLIP->random_first_speed_proc(NULL, 1.5f, 16.0f, 0.0f); + effect->offset.z = 10.0f; + effect->timer = 26.0f; + sAdo_OngenTrgStart(NA_SE_PUN_YUGE, &effect->position); } static void ePunYuge_mv(eEC_Effect_c* effect, GAME* game) { - // TODO + s16 elapsed_time = 26 - effect->timer; + + if (elapsed_time < 4) { + effect->offset.y += 1.5f; + } } +typedef struct pun_yuge_tex_anim_s { + u8 tex0; + u8 tex1; + u8 prim_f; + u8 unused; +} ePunYuge_tex_anim_c; + +static ePunYuge_tex_anim_c ePunYuge_texture_anime_idx[] = { + { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 1, 127, 0 }, { 1, 1, 255, 0 }, + { 1, 2, 127, 0 }, { 2, 2, 0, 0 }, { 2, 3, 127, 0 }, { 3, 3, 255, 0 }, { 3, 4, 127, 0 }, + { 4, 4, 0, 0 }, { 4, 4, 0, 0 }, { 4, 4, 0, 0 }, +}; + +static u8 ePunYuge_prim_f_table[] = { + 0, 0, 0, 127, 255, 127, 0, 127, 255, 127, 0, 0, 0, +}; + static void ePunYuge_dw(eEC_Effect_c* effect, GAME* game) { - // TODO + GAME_PLAY* play = (GAME_PLAY*)game; + int frame; + s16 time_elapsed = 26 - effect->timer; + int anime_idx0; + int anime_idx1; + int prim_f; + int prim_gb; + int prim_a; + int env_gb; + + frame = (s16)CLAMP(time_elapsed >> 1, 0, 12); + anime_idx0 = ePunYuge_texture_anime_idx[frame].tex0; + anime_idx1 = ePunYuge_texture_anime_idx[frame].tex1; + prim_f = ePunYuge_prim_f_table[frame]; + prim_gb = (u8)eEC_CLIP->calc_adjust_proc(time_elapsed, 0, 8, 200.0f, 255.0f); + prim_a = (u8)eEC_CLIP->calc_adjust_proc(time_elapsed, 12, 26, 255.0f, 0.0f); + env_gb = (u8)eEC_CLIP->calc_adjust_proc(time_elapsed, 0, 8, 0.0f, 255.0f); + + if (frame <= 4) { + f32 scale_y[5]; + + scale_y[0] = 0.00595f; + scale_y[1] = 0.00833f; + scale_y[2] = 0.014161f; + scale_y[3] = 0.00833f; + scale_y[4] = 0.00595f; + effect->scale.y = scale_y[frame]; + effect->scale.x = 0.00595f; + } else { + effect->scale.x = eEC_CLIP->calc_adjust_proc(time_elapsed, 10, 26, 0.00595f, 0.0119f); + effect->scale.y = effect->scale.x; + } + + OPEN_DISP(game->graph); + + _texture_z_light_fog_prim_xlu(game->graph); + Matrix_translate(effect->position.x, effect->position.y, effect->position.z, 0); + Matrix_mult(&play->billboard_matrix, 1); + Matrix_RotateZ(effect->effect_specific[0], 1); + Matrix_translate(effect->offset.x, effect->offset.y, effect->offset.z, 1); + Matrix_scale(effect->scale.x, effect->scale.y, effect->scale.z, 1); + + gSPMatrix(NEXT_POLY_XLU_DISP, _Matrix_to_Mtx_new(game->graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPSegment(NEXT_POLY_XLU_DISP, G_MWO_SEGMENT_8, ePunYuge_yuge_texture_table[anime_idx0]); + gSPSegment(NEXT_POLY_XLU_DISP, G_MWO_SEGMENT_9, ePunYuge_yuge_texture_table[anime_idx1]); + gDPSetPrimColor(NEXT_POLY_XLU_DISP, 0, (u8)prim_f, 255, (u8)prim_gb, (u8)prim_gb, (u8)prim_a); + gDPSetEnvColor(NEXT_POLY_XLU_DISP, 255, (u8)env_gb, (u8)env_gb, 255); + gSPDisplayList(NEXT_POLY_XLU_DISP, ef_pun01_00_modelT); + + CLOSE_DISP(game->graph); } From 4903e3c51452aec2479db0afa37dc80cb7dd75e7 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Wed, 4 Sep 2024 02:00:26 -0400 Subject: [PATCH 168/234] Link m_notice --- config/rel_slices.yml | 5 + src/m_notice.c | 1065 ++++++++++++++++++++--------------------- 2 files changed, 520 insertions(+), 550 deletions(-) diff --git a/config/rel_slices.yml b/config/rel_slices.yml index 8a250f4f..22fe856a 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -219,6 +219,11 @@ m_needlework.c: .text: [0x803C98EC, 0x803C9F7C] .data: [0x8065ABC0, 0x8065AE30] .bss: [0x81298F60, 0x81299180] +m_notice.c: + .text: [0x803C9F7C, 0x803CB340] + .rodata: [0x80642978, 0x806429B8] + .data: [0x8065AE30, 0x8065AEE8] + .bss: [0x81299180, 0x81299240] m_npc.c: .text: [0x803CB340, 0x803D7570] .rodata: [0x806429B8, 0x806429F0] diff --git a/src/m_notice.c b/src/m_notice.c index 1e3a57bf..6c4836af 100644 --- a/src/m_notice.c +++ b/src/m_notice.c @@ -42,690 +42,655 @@ /* sizeof(mNtc_date_c) == 2 */ typedef struct notice_date_s { - /* 0x00 */ lbRTC_month_t month; - /* 0x01 */ lbRTC_day_t day; + /* 0x00 */ lbRTC_month_t month; + /* 0x01 */ lbRTC_day_t day; } mNtc_date_c; /* sizeof(mNtc_date_data_c) == 4 */ typedef struct notice_date_data_s { - /* 0x00 */ u16 id; - /* 0x02 */ u16 date; + /* 0x00 */ u16 id; + /* 0x02 */ u16 date; } mNtc_date_data_c; static mNtc_date_data_c mNtc_auto_nwrite_data[48]; static void mNtc_copy_data_list() { - static mNtc_date_data_c auto_nwrite_date_data[mNtc_DATA_LIST_NUM] = { - { 0x00, mNtc_TO_MONTHDAY(lbRTC_JANUARY, 1) }, /* Nook's New Year's post */ - { 0x01, mNtc_TO_MONTHDAY(lbRTC_JANUARY, 15) }, /* Snow weather report */ - { 0x02, mNtc_TO_MONTHDAY(lbRTC_JANUARY, 25) }, /* Groundhog day notice */ - { 0x03, mNtc_TO_MONTHDAY(lbRTC_FEBRUARY, 1) }, /* Valentine's Day notice */ - { 0x04, mNtc_TO_MONTHDAY(lbRTC_FEBRUARY, 15) }, /* Pete's Valentine's Day complaint */ - { 0x05, mNtc_TO_MONTHDAY(lbRTC_MARCH, 15) }, /* Cherry Blossom Festival notice */ - { 0x06, mNtc_TO_MONTHDAY(lbRTC_MARCH, 11) }, /* Spring Sports Fair notice */ - { 0x07, mNtc_TO_MONTHDAY(lbRTC_MARCH, 16) }, /* Spring Sports Fair vernal equinox notice */ - { 0x08, mNtc_TO_MONTHDAY(lbRTC_MARCH, 20) }, /* Spring Sports Fair schedule */ - { 0x09, mNtc_TO_MONTHDAY(lbRTC_APRIL, 3) }, /* Cherry Blossom Festival reminder notice */ - { 0x0A, mNtc_TO_MONTHDAY(lbRTC_APRIL, 21) }, /* Spring weather notice */ - { 0x0B, mNtc_TO_MONTHDAY(lbRTC_MAY, 6) }, /* June weather notice */ - { 0x0C, mNtc_TO_MONTHDAY(lbRTC_MAY, 20) }, /* Summer fishing tourney notice */ - { 0x0D, mNtc_TO_MONTHDAY(lbRTC_JUNE, 8) }, /* Chip's 1st summer fishing tourney post */ - { 0x0E, mNtc_TO_MONTHDAY(lbRTC_JUNE, 23) }, /* Chip's final summer fishing tourney post */ - { 0x0F, mNtc_TO_MONTHDAY(lbRTC_JUNE, 25) }, /* Fireworks Festival notice */ - { 0x10, mNtc_TO_MONTHDAY(lbRTC_JULY, 1) }, /* July weather notice */ - { 0x11, mNtc_TO_MONTHDAY(lbRTC_JULY, 5) }, /* Phyllis? Fireworks Festival complaint */ - { 0x12, mNtc_TO_MONTHDAY(lbRTC_JULY, 15) }, /* Morning aerobics notice */ - { 0x13, mNtc_TO_MONTHDAY(lbRTC_JULY, 25) }, /* Copper morning aerobics post */ - { 0x14, mNtc_TO_MONTHDAY(lbRTC_AUGUST, 1) }, /* Meteor Shower notice */ - { 0x15, mNtc_TO_MONTHDAY(lbRTC_AUGUST, 30) }, /* Copper morning aerobics final day notice */ - { 0x16, mNtc_TO_MONTHDAY(lbRTC_SEPTEMBER, 1) }, /* Moon Viewing notice */ - { 0x17, mNtc_TO_MONTHDAY(lbRTC_SEPTEMBER, 15) }, /* September weather report */ - { 0x18, mNtc_TO_MONTHDAY(lbRTC_SEPTEMBER, 13) }, /* Pete's Fall Sports Fair post */ - { 0x19, mNtc_TO_MONTHDAY(lbRTC_SEPTEMBER, 18) }, /* Fall Sports Fair notice */ - { 0x1A, mNtc_TO_MONTHDAY(lbRTC_SEPTEMBER, 22) }, /* Fall Sports Fair schedule */ - { 0x1B, mNtc_TO_MONTHDAY(lbRTC_OCTOBER, 10) }, /* Mushrooming season notice */ - { 0x1C, mNtc_TO_MONTHDAY(lbRTC_OCTOBER, 16) }, /* Nook's Halloween candy post */ - { 0x1D, mNtc_TO_MONTHDAY(lbRTC_OCTOBER, 20) }, /* Halloween notice */ - { 0x1E, mNtc_TO_MONTHDAY(lbRTC_OCTOBER, 25) }, /* Fall fishing tourney notice */ - { 0x1F, mNtc_TO_MONTHDAY(lbRTC_NOVEMBER, 8) }, /* Chip's 1st fall fishing tourney post */ - { 0x20, mNtc_TO_MONTHDAY(lbRTC_NOVEMBER, 10) }, /* Harvest Festival notice */ - { 0x21, mNtc_TO_MONTHDAY(lbRTC_NOVEMBER, 12) }, /* November weather report */ - { 0x22, mNtc_TO_MONTHDAY(lbRTC_NOVEMBER, 23) }, /* Chip's final fall fishing tourney post */ - { 0x23, mNtc_TO_MONTHDAY(lbRTC_DECEMBER, 9) }, /* Winter storm warning */ - { 0x24, mNtc_TO_MONTHDAY(lbRTC_DECEMBER, 20) }, /* Jingle's holiday notice */ - { 0x25, mNtc_TO_MONTHDAY(lbRTC_DECEMBER, 25) }, /* New Year's Eve countdown notice */ - { 0x26, mNtc_TO_MONTHDAY(lbRTC_DECEMBER, 28) }, /* New Year's Day event notice */ - { 0x27, mNTC_UNUSED_DATE }, /* Pete check mailbox info? */ - { 0x28, mNTC_UNUSED_DATE }, /* Anti-litter notice? */ - { 0x29, mNtc_TO_MONTHDAY(lbRTC_MARCH, 31) }, /* Day light savings begin notice */ - { 0x2A, mNtc_TO_MONTHDAY(lbRTC_OCTOBER, 31) } /* Day light savings end notice */ - }; + static mNtc_date_data_c auto_nwrite_date_data[mNtc_DATA_LIST_NUM] = { + { 0x00, mNtc_TO_MONTHDAY(lbRTC_JANUARY, 1) }, /* Nook's New Year's post */ + { 0x01, mNtc_TO_MONTHDAY(lbRTC_JANUARY, 15) }, /* Snow weather report */ + { 0x02, mNtc_TO_MONTHDAY(lbRTC_JANUARY, 25) }, /* Groundhog day notice */ + { 0x03, mNtc_TO_MONTHDAY(lbRTC_FEBRUARY, 1) }, /* Valentine's Day notice */ + { 0x04, mNtc_TO_MONTHDAY(lbRTC_FEBRUARY, 15) }, /* Pete's Valentine's Day complaint */ + { 0x05, mNtc_TO_MONTHDAY(lbRTC_MARCH, 15) }, /* Cherry Blossom Festival notice */ + { 0x06, mNtc_TO_MONTHDAY(lbRTC_MARCH, 11) }, /* Spring Sports Fair notice */ + { 0x07, mNtc_TO_MONTHDAY(lbRTC_MARCH, 16) }, /* Spring Sports Fair vernal equinox notice */ + { 0x08, mNtc_TO_MONTHDAY(lbRTC_MARCH, 20) }, /* Spring Sports Fair schedule */ + { 0x09, mNtc_TO_MONTHDAY(lbRTC_APRIL, 3) }, /* Cherry Blossom Festival reminder notice */ + { 0x0A, mNtc_TO_MONTHDAY(lbRTC_APRIL, 21) }, /* Spring weather notice */ + { 0x0B, mNtc_TO_MONTHDAY(lbRTC_MAY, 6) }, /* June weather notice */ + { 0x0C, mNtc_TO_MONTHDAY(lbRTC_MAY, 20) }, /* Summer fishing tourney notice */ + { 0x0D, mNtc_TO_MONTHDAY(lbRTC_JUNE, 8) }, /* Chip's 1st summer fishing tourney post */ + { 0x0E, mNtc_TO_MONTHDAY(lbRTC_JUNE, 23) }, /* Chip's final summer fishing tourney post */ + { 0x0F, mNtc_TO_MONTHDAY(lbRTC_JUNE, 25) }, /* Fireworks Festival notice */ + { 0x10, mNtc_TO_MONTHDAY(lbRTC_JULY, 1) }, /* July weather notice */ + { 0x11, mNtc_TO_MONTHDAY(lbRTC_JULY, 5) }, /* Phyllis? Fireworks Festival complaint */ + { 0x12, mNtc_TO_MONTHDAY(lbRTC_JULY, 15) }, /* Morning aerobics notice */ + { 0x13, mNtc_TO_MONTHDAY(lbRTC_JULY, 25) }, /* Copper morning aerobics post */ + { 0x14, mNtc_TO_MONTHDAY(lbRTC_AUGUST, 1) }, /* Meteor Shower notice */ + { 0x15, mNtc_TO_MONTHDAY(lbRTC_AUGUST, 30) }, /* Copper morning aerobics final day notice */ + { 0x16, mNtc_TO_MONTHDAY(lbRTC_SEPTEMBER, 1) }, /* Moon Viewing notice */ + { 0x17, mNtc_TO_MONTHDAY(lbRTC_SEPTEMBER, 15) }, /* September weather report */ + { 0x18, mNtc_TO_MONTHDAY(lbRTC_SEPTEMBER, 13) }, /* Pete's Fall Sports Fair post */ + { 0x19, mNtc_TO_MONTHDAY(lbRTC_SEPTEMBER, 18) }, /* Fall Sports Fair notice */ + { 0x1A, mNtc_TO_MONTHDAY(lbRTC_SEPTEMBER, 22) }, /* Fall Sports Fair schedule */ + { 0x1B, mNtc_TO_MONTHDAY(lbRTC_OCTOBER, 10) }, /* Mushrooming season notice */ + { 0x1C, mNtc_TO_MONTHDAY(lbRTC_OCTOBER, 16) }, /* Nook's Halloween candy post */ + { 0x1D, mNtc_TO_MONTHDAY(lbRTC_OCTOBER, 20) }, /* Halloween notice */ + { 0x1E, mNtc_TO_MONTHDAY(lbRTC_OCTOBER, 25) }, /* Fall fishing tourney notice */ + { 0x1F, mNtc_TO_MONTHDAY(lbRTC_NOVEMBER, 8) }, /* Chip's 1st fall fishing tourney post */ + { 0x20, mNtc_TO_MONTHDAY(lbRTC_NOVEMBER, 10) }, /* Harvest Festival notice */ + { 0x21, mNtc_TO_MONTHDAY(lbRTC_NOVEMBER, 12) }, /* November weather report */ + { 0x22, mNtc_TO_MONTHDAY(lbRTC_NOVEMBER, 23) }, /* Chip's final fall fishing tourney post */ + { 0x23, mNtc_TO_MONTHDAY(lbRTC_DECEMBER, 9) }, /* Winter storm warning */ + { 0x24, mNtc_TO_MONTHDAY(lbRTC_DECEMBER, 20) }, /* Jingle's holiday notice */ + { 0x25, mNtc_TO_MONTHDAY(lbRTC_DECEMBER, 25) }, /* New Year's Eve countdown notice */ + { 0x26, mNtc_TO_MONTHDAY(lbRTC_DECEMBER, 28) }, /* New Year's Day event notice */ + { 0x27, mNTC_UNUSED_DATE }, /* Pete check mailbox info? */ + { 0x28, mNTC_UNUSED_DATE }, /* Anti-litter notice? */ + { 0x29, mNtc_TO_MONTHDAY(lbRTC_MARCH, 31) }, /* Day light savings begin notice */ + { 0x2A, mNtc_TO_MONTHDAY(lbRTC_OCTOBER, 31) } /* Day light savings end notice */ + }; - mem_copy((u8*)mNtc_auto_nwrite_data, (u8*)auto_nwrite_date_data, mNtc_DATA_LIST_NUM * sizeof(mNtc_date_data_c)); + mem_copy((u8*)mNtc_auto_nwrite_data, (u8*)auto_nwrite_date_data, mNtc_DATA_LIST_NUM * sizeof(mNtc_date_data_c)); } static void mNtc_operate_data_list() { - mNtc_date_data_c* data_p; - int day; + mNtc_date_data_c* data_p; + int day; - /* update Spring Sports Fair dates */ - day = lbRk_VernalEquinoxDay(Common_Get(time.rtc_time.year)); - /* month = march, day = vernal equinox day - 10 */ - data_p = mNtc_auto_nwrite_data + 6; - data_p->date = day + 0x2F6; - /* month = march, day = vernal equinox day - 5 */ - data_p = mNtc_auto_nwrite_data + 7; - data_p->date = day + 0x2FB; - /* month = march, day = vernal equinox day - 1 */ - data_p = mNtc_auto_nwrite_data + 8; - data_p->date = day + 0x2FF; + /* update Spring Sports Fair dates */ + day = lbRk_VernalEquinoxDay(Common_Get(time.rtc_time.year)); + /* month = march, day = vernal equinox day - 10 */ + data_p = mNtc_auto_nwrite_data + 6; + data_p->date = day + 0x2F6; + /* month = march, day = vernal equinox day - 5 */ + data_p = mNtc_auto_nwrite_data + 7; + data_p->date = day + 0x2FB; + /* month = march, day = vernal equinox day - 1 */ + data_p = mNtc_auto_nwrite_data + 8; + data_p->date = day + 0x2FF; - /* update Fall Sports Fair dates */ - day = lbRk_AutumnalEquinoxDay(Common_Get(time.rtc_time.year)); - /* month = september, day = autumnal equinox day - 10 */ - data_p = mNtc_auto_nwrite_data + 0x18; - data_p->date = day + 0x8F6; - /* month = september, day = autumnal equinox day - 5 */ - data_p = mNtc_auto_nwrite_data + 0x19; - data_p->date = day + 0x8FB; - /* month = september, day = autumnal equinox day - 1 */ - data_p = mNtc_auto_nwrite_data + 0x1A; - data_p->date = day + 0x8FF; + /* update Fall Sports Fair dates */ + day = lbRk_AutumnalEquinoxDay(Common_Get(time.rtc_time.year)); + /* month = september, day = autumnal equinox day - 10 */ + data_p = mNtc_auto_nwrite_data + 0x18; + data_p->date = day + 0x8F6; + /* month = september, day = autumnal equinox day - 5 */ + data_p = mNtc_auto_nwrite_data + 0x19; + data_p->date = day + 0x8FB; + /* month = september, day = autumnal equinox day - 1 */ + data_p = mNtc_auto_nwrite_data + 0x1A; + data_p->date = day + 0x8FF; - /* update daylight savings time dates */ - mNtc_auto_nwrite_data[0x29].date = mEv_weekday2day(lbRTC_MARCH, mEv_WEEKTYPE_LAST, lbRTC_SUNDAY) + 0x300; /* month = march, day = last sunday */ - mNtc_auto_nwrite_data[0x2A].date = mEv_weekday2day(lbRTC_OCTOBER, mEv_WEEKTYPE_LAST, lbRTC_SUNDAY) + 0x9F9; /* month = october, day = second to last sunday */ + /* update daylight savings time dates */ + mNtc_auto_nwrite_data[0x29].date = + mEv_weekday2day(lbRTC_MARCH, mEv_WEEKTYPE_LAST, lbRTC_SUNDAY) + 0x300; /* month = march, day = last sunday */ + mNtc_auto_nwrite_data[0x2A].date = mEv_weekday2day(lbRTC_OCTOBER, mEv_WEEKTYPE_LAST, lbRTC_SUNDAY) + + 0x9F9; /* month = october, day = second to last sunday */ } static void mNtc_sort_data_list() { - mNtc_date_data_c replace_data; - mNtc_date_data_c now_data; - int replace_idx; - int i, j; + mNtc_date_data_c replace_data; + mNtc_date_data_c now_data; + int replace_idx; + int i, j; - /* sort from earliest to latest dates */ - for (i = 0; i < mNtc_DATA_LIST_NUM; i++) { - now_data = mNtc_auto_nwrite_data[i]; - replace_data = now_data; - replace_idx = i; + /* sort from earliest to latest dates */ + for (i = 0; i < mNtc_DATA_LIST_NUM; i++) { + now_data = mNtc_auto_nwrite_data[i]; + replace_data = now_data; + replace_idx = i; - /* search through all entries ahead and find the next closest date */ - for (j = i + 1; j < mNtc_DATA_LIST_NUM; j++) { - if (mNtc_auto_nwrite_data[j].date < replace_data.date) { - replace_data = mNtc_auto_nwrite_data[j]; - replace_idx = j; - } + /* search through all entries ahead and find the next closest date */ + for (j = i + 1; j < mNtc_DATA_LIST_NUM; j++) { + if (mNtc_auto_nwrite_data[j].date < replace_data.date) { + replace_data = mNtc_auto_nwrite_data[j]; + replace_idx = j; + } + } + + /* swap the entries */ + mNtc_auto_nwrite_data[replace_idx] = now_data; + mNtc_auto_nwrite_data[i] = replace_data; } - - /* swap the entries */ - mNtc_auto_nwrite_data[replace_idx] = now_data; - mNtc_auto_nwrite_data[i] = replace_data; - } } static void mNtc_make_auto_nwrite_data_list() { - mNtc_copy_data_list(); /* copy the base list */ - mNtc_operate_data_list(); /* update dynamic dates */ - mNtc_sort_data_list(); /* sort entries by date */ + mNtc_copy_data_list(); /* copy the base list */ + mNtc_operate_data_list(); /* update dynamic dates */ + mNtc_sort_data_list(); /* sort entries by date */ } static int mNtc_get_auto_nwrite_data_last_idx() { - int i; - int res = mNtc_DATA_LIST_NUM - 1; + int i; + int res = mNtc_DATA_LIST_NUM - 1; - for (i = mNtc_DATA_LIST_NUM - 1; i >= 0; i--) { - if (mNtc_auto_nwrite_data[i].date != 0xFFFF) { - res = i; - break; + for (i = mNtc_DATA_LIST_NUM - 1; i >= 0; i--) { + if (mNtc_auto_nwrite_data[i].date != 0xFFFF) { + res = i; + break; + } } - } - return res; + return res; } static void mNtc_ClearPage(mNtc_board_post_c* page, int count) { - for (count; count != 0; count--) { - page->post_time = mTM_rtcTime_clear_code; - mem_clear(page->message, MAIL_BODY_LEN, CHAR_SPACE); - page++; - } + for (count; count != 0; count--) { + page->post_time = mTM_rtcTime_clear_code; + mem_clear(page->message, MAIL_BODY_LEN, CHAR_SPACE); + page++; + } } extern void mNtc_SetInitData() { - mNtc_board_post_c* post; - lbRTC_time_c rtc_time; - int header_back_pos; - int handbill_no_tbl[4] = { 0x1E, 0x1F, 0x20, 0x21 }; - u8 header[mHandbill_HEADER_LEN]; - u8 footer[mHandbill_FOOTER_LEN]; - int i; - - post = Save_Get(noticeboard); - //handbill_no_tbl[0] = 0x1E; /* noticeboard free to use post */ - //handbill_no_tbl[1] = 0x1F; /* Nook's HRA recruitment post */ - //handbill_no_tbl[2] = 0x20; /* HRA points guide post */ - //handbill_no_tbl[3] = 0x21; /* noticeboard usage post */ + mNtc_board_post_c* post; + lbRTC_time_c rtc_time; + int header_back_pos; + int handbill_no_tbl[4] = { 0x1E, 0x1F, 0x20, 0x21 }; + u8 header[mHandbill_HEADER_LEN]; + u8 footer[mHandbill_FOOTER_LEN]; + int i; - rtc_time = Common_Get(time.rtc_time); + post = Save_Get(noticeboard); + // handbill_no_tbl[0] = 0x1E; /* noticeboard free to use post */ + // handbill_no_tbl[1] = 0x1F; /* Nook's HRA recruitment post */ + // handbill_no_tbl[2] = 0x20; /* HRA points guide post */ + // handbill_no_tbl[3] = 0x21; /* noticeboard usage post */ - for (i = 0; i < 4; i++) { - post->post_time = rtc_time; - mHandbill_Load_HandbillFromRom(header, &header_back_pos, footer, post->message, handbill_no_tbl[i]); - post++; - } + rtc_time = Common_Get(time.rtc_time); - mNtc_ClearPage(post, mNtc_BOARD_POST_COUNT - 4); + for (i = 0; i < 4; i++) { + post->post_time = rtc_time; + mHandbill_Load_HandbillFromRom(header, &header_back_pos, footer, post->message, handbill_no_tbl[i]); + post++; + } + + mNtc_ClearPage(post, mNtc_BOARD_POST_COUNT - 4); } extern int mNtc_notice_write_num() { - mNtc_board_post_c* post; - int i; + mNtc_board_post_c* post; + int i; - post = Save_Get(noticeboard); - for (i = 0; i < mNtc_BOARD_POST_COUNT; i++) { - if (lbRTC_IsEqualTime(&post->post_time, &mTM_rtcTime_clear_code, lbRTC_CHECK_ALL) == TRUE) { - break; + post = Save_Get(noticeboard); + for (i = 0; i < mNtc_BOARD_POST_COUNT; i++) { + if (lbRTC_IsEqualTime(&post->post_time, &mTM_rtcTime_clear_code, lbRTC_CHECK_ALL) == TRUE) { + break; + } + post++; } - post++; - } - return i; + return i; } extern void mNtc_notice_write(mNtc_board_post_c* new_post) { - int write_num = mNtc_notice_write_num(); - if (write_num == mNtc_BOARD_POST_COUNT) { - mNtc_board_post_c* post = Save_Get(noticeboard); - int i; + int write_num = mNtc_notice_write_num(); + if (write_num == mNtc_BOARD_POST_COUNT) { + mNtc_board_post_c* post = Save_Get(noticeboard); + int i; - /* delete first post and move all others down one */ - for (i = 0; i < mNtc_BOARD_POST_COUNT - 1; i++) { - mem_copy(post, post + 1, sizeof(mNtc_board_post_c)); - post++; + /* delete first post and move all others down one */ + for (i = 0; i < mNtc_BOARD_POST_COUNT - 1; i++) { + mem_copy((u8*)post, (u8*)(post + 1), sizeof(mNtc_board_post_c)); + post++; + } + + /* copy new post */ + mem_copy((u8*)post, (u8*)new_post, sizeof(mNtc_board_post_c)); + } else { + /* space available, write to lowest unused slot */ + mem_copy((u8*)(Save_Get(noticeboard) + write_num), (u8*)new_post, sizeof(mNtc_board_post_c)); } - - /* copy new post */ - mem_copy((u8*)post, (u8*)new_post, sizeof(mNtc_board_post_c)); - } - else { - /* space available, write to lowest unused slot */ - mem_copy((u8*)(Save_Get(noticeboard) + write_num), (u8*)new_post, sizeof(mNtc_board_post_c)); - } } static int mNtc_set_landname_string(u8* buf) { - mem_copy(buf, Save_Get(land_info.name), LAND_NAME_SIZE); - return mMl_strlen(Save_Get(land_info.name), LAND_NAME_SIZE, CHAR_SPACE); + mem_copy(buf, Save_Get(land_info.name), LAND_NAME_SIZE); + return mMl_strlen(Save_Get(land_info.name), LAND_NAME_SIZE, CHAR_SPACE); } static void mNtc_set_treasure_string(AnmPersonalID_c* sender_id, mActor_name_t item_no, int block_x, int block_z) { - static u8 choume_str[BLOCK_X_NUM] = "QABCDEF"; + static u8 choume_str[BLOCK_X_NUM] = "QABCDEF"; - int land_name_len; - u8 b_str; - u8 land_name[LAND_NAME_SIZE]; - u8 anm_name[ANIMAL_NAME_LEN]; - u8 item_name[mIN_ITEM_NAME_LEN]; - - mNpc_GetNpcWorldNameAnm(anm_name, sender_id); - mHandbill_Set_free_str(1, anm_name, ANIMAL_NAME_LEN); - mIN_copy_name_str(item_name, item_no); - mHandbill_Set_free_str_art(2, item_name, mIN_ITEM_NAME_LEN, mIN_get_item_article(item_no)); + int land_name_len; + u8 b_str; + u8 land_name[LAND_NAME_SIZE]; + u8 anm_name[ANIMAL_NAME_LEN]; + u8 item_name[mIN_ITEM_NAME_LEN]; - b_str = choume_str[block_z]; - mHandbill_Set_free_str(3, &b_str, 1); /* z-acre friendly name (A-F) */ + mNpc_GetNpcWorldNameAnm(anm_name, sender_id); + mHandbill_Set_free_str(1, anm_name, ANIMAL_NAME_LEN); + mIN_copy_name_str(item_name, item_no); + mHandbill_Set_free_str_art(2, item_name, mIN_ITEM_NAME_LEN, mIN_get_item_article(item_no)); - b_str = mFI_COL_TO_CHARSTR(block_x); - mHandbill_Set_free_str(4, &b_str, 1); /* x-acre friendly name (1-5) */ + b_str = choume_str[block_z]; + mHandbill_Set_free_str(3, &b_str, 1); /* z-acre friendly name (A-F) */ - land_name_len = mNtc_set_landname_string(land_name); - mHandbill_Set_free_str(5, land_name, land_name_len); + b_str = mFI_COL_TO_CHARSTR(block_x); + mHandbill_Set_free_str(4, &b_str, 1); /* x-acre friendly name (1-5) */ + + land_name_len = mNtc_set_landname_string(land_name); + mHandbill_Set_free_str(5, land_name, land_name_len); } -// @nonmatching -/* TODO: match */ static void mNtc_check_treasure() { - int valid_animal_ids[ANIMAL_NUM_MAX]; - lbRTC_time_c rtc_time; - lbRTC_time_c* treasure_checked_time; - lbRTC_time_c* treasure_buried_time; - Animal_c* animal; - mLd_land_info_c* land_info; - u32 comp_time_rtc; - u32 comp_time_buried; - int valid_animal_num; - int interval_days; - - valid_animal_num = 0; - rtc_time = Common_Get(time.rtc_time); - animal = Save_Get(animals); - land_info = Save_GetPointer(land_info); - treasure_buried_time = Save_GetPointer(treasure_buried_time); - treasure_checked_time = Save_GetPointer(treasure_checked_time); + lbRTC_time_c* treasure_buried_time; + lbRTC_time_c* treasure_checked_time; + Animal_c* animal; + mLd_land_info_c* land_info; + u32 comp_time_rtc; + u32 comp_time_buried; + lbRTC_time_c rtc_time; + int valid_animal_ids[ANIMAL_NUM_MAX]; + int valid_animal_num; + int i; + u8 header[mHandbill_FOOTER_LEN]; + u8 footer[mHandbill_FOOTER_LEN]; + int mem; + int interval_days; + int header_back_pos; + mNtc_board_post_c post; + mActor_name_t item; + int b_x; + int b_z; + f32 rng; + int list_type; - if (rtc_time.hour >= mTM_FIELD_RENEW_HOUR) { - comp_time_rtc = lbRTC_TIME_TO_U32(&rtc_time); - comp_time_buried = lbRTC_TIME_TO_U32(treasure_buried_time); - if (comp_time_rtc > comp_time_buried) { - interval_days = lbRTC_GetIntervalDays(treasure_buried_time, &rtc_time); - } - else if (comp_time_rtc < comp_time_buried) { - interval_days = lbRTC_GetIntervalDays(&rtc_time, treasure_buried_time); - } - else { - interval_days = 0; - } + treasure_buried_time = Save_GetPointer(treasure_buried_time); + treasure_checked_time = Save_GetPointer(treasure_checked_time); + animal = Save_Get(animals); + land_info = Save_GetPointer(land_info); + valid_animal_num = 0; + rtc_time = Common_Get(time.rtc_time); - if (lbRTC_IsEqualTime(treasure_buried_time, &mTM_rtcTime_clear_code, lbRTC_CHECK_ALL) || - interval_days >= mNtc_MIN_DAYS_BETWEEN_TREASURE - ) { - if (lbRTC_IsEqualTime(treasure_checked_time, &mTM_rtcTime_clear_code, lbRTC_CHECK_ALL) || - treasure_checked_time->year != rtc_time.year || - treasure_checked_time->month != rtc_time.month || - treasure_checked_time->day != rtc_time.day - ) { - int i; + if (rtc_time.hour >= mTM_FIELD_RENEW_HOUR) { + comp_time_rtc = lbRTC_TIME_TO_U32(&rtc_time); + comp_time_buried = lbRTC_TIME_TO_U32(treasure_buried_time); + if (comp_time_rtc > comp_time_buried) { + interval_days = lbRTC_GetIntervalDays(treasure_buried_time, &rtc_time); + } else if (comp_time_rtc < comp_time_buried) { + interval_days = lbRTC_GetIntervalDays(&rtc_time, treasure_buried_time); + } else { + interval_days = 0; + } - for (i = 0; i < ANIMAL_NUM_MAX; i++, animal++) { - if (mNpc_CheckFreeAnimalPersonalID(&animal->id) == FALSE) { - int mem; + if (lbRTC_IsEqualTime(treasure_buried_time, &mTM_rtcTime_clear_code, lbRTC_CHECK_ALL) || + interval_days >= mNtc_MIN_DAYS_BETWEEN_TREASURE) { + if (lbRTC_IsEqualTime(treasure_checked_time, &mTM_rtcTime_clear_code, lbRTC_CHECK_ALL) || + treasure_checked_time->year != rtc_time.year || treasure_checked_time->month != rtc_time.month || + treasure_checked_time->day != rtc_time.day) { + for (i = 0; i < ANIMAL_NUM_MAX; i++, animal++) { + if (mNpc_CheckFreeAnimalPersonalID(&animal->id) == FALSE) { + for (mem = 0; mem < ANIMAL_MEMORY_NUM; mem++) { + if (animal->memories[mem].memory_player_id.land_id == land_info->id && + mLd_CheckCmpLandName(animal->memories[mem].memory_player_id.land_name, + land_info->name)) { + if (valid_animal_num == ANIMAL_NUM_MAX) { + return; + } - for (mem = 0; mem < ANIMAL_MEMORY_NUM; mem++) { - if (animal->memories[mem].memory_player_id.land_id == land_info->id && - mLd_CheckCmpLandName(animal->memories[mem].memory_player_id.land_name, land_info->name) - ) { - if (valid_animal_num == ANIMAL_NUM_MAX) { - return; + valid_animal_ids[valid_animal_num++] = i; + break; + } + } + } } - valid_animal_ids[valid_animal_num++] = i; - break; - } - //memory++; + if (valid_animal_num != 0 && fqrand() < mNtc_TREASURE_CHANCE) { + b_x = 0; + b_z = 0; + + /* 1/3rd chance of pitfall, 2/3rds chance of rare furniture */ + rng = fqrand(); + if (rng < (1.0f / 3.0f)) { + item = ITM_PITFALL; + } else { + list_type = rng < (2.0f / 3.0f) + ? mSP_LISTTYPE_LOTTERY + : mSP_LISTTYPE_EVENT; /* 50/50 to roll redd or lottery furniture*/ + mSP_SelectRandomItem_New(NULL, &item, 1, NULL, 0, mSP_KIND_FURNITURE, list_type, FALSE); + } + + if (mFI_SetTreasure(&b_x, &b_z, item)) { + animal = + Save_GetPointer(animals[valid_animal_ids[RANDOM(valid_animal_num) % valid_animal_num]]); + mNtc_set_treasure_string(&animal->id, item, b_x, b_z); + lbRTC_TimeCopy(&post.post_time, &rtc_time); + mHandbill_Load_HandbillFromRom(header, &header_back_pos, footer, post.message, + 0x1F0 + animal->id.looks * 3 + (RANDOM(3) % 3)); + mNtc_notice_write(&post); + lbRTC_TimeCopy(treasure_buried_time, &rtc_time); + } + } } - } } - - if (valid_animal_num != 0 && fqrand() < mNtc_TREASURE_CHANCE) { - f32 rng; - mActor_name_t item; - int b_x = 0; - int b_z = 0; - - - /* 1/3rd chance of pitfall, 2/3rds chance of rare furniture */ - rng = fqrand(); - if (rng < (1.0f / 3.0f)) { - item = ITM_PITFALL; - } - else { - int list_type = rng < (2.0f / 3.0f) ? mSP_LISTTYPE_LOTTERY : mSP_LISTTYPE_EVENT; /* 50/50 to roll redd or lottery furniture*/ - mSP_SelectRandomItem_New(NULL, &item, 1, NULL, 0, mSP_KIND_FURNITURE, list_type, FALSE); - } - - if (mFI_SetTreasure(&b_x, &b_z, item)) { - u8 header[mHandbill_HEADER_LEN]; - u8 footer[mHandbill_FOOTER_LEN]; - int header_back_pos; - mNtc_board_post_c post; - int selected_animal = (int)(fqrand() * (f32)valid_animal_num); - int selected_animal_idx = valid_animal_ids[selected_animal % valid_animal_num]; - animal = Save_GetPointer(animals[selected_animal_idx]); - - mNtc_set_treasure_string(&animal->id, item, b_x, b_z); - lbRTC_TimeCopy(&post.post_time, &rtc_time); - mHandbill_Load_HandbillFromRom(header, &header_back_pos, footer, post.message, 0x1F0 + animal->id.looks * 3 + (((int)(fqrand() * 3.0f)) % 3)); - mNtc_notice_write(&post); - lbRTC_TimeCopy(Save_GetPointer(treasure_buried_time), &rtc_time); - } - } - } } - } } static void mNtc_set_near_old_nwrite_data(lbRTC_time_c* nwrite_time, lbRTC_year_t* nwrite_year, u8* nwrite_num) { - mNtc_date_data_c* auto_nwrite_p; - s16 date; - int last_idx; - int i; + mNtc_date_data_c* auto_nwrite_p; + s16 date; + int last_idx; + int i; - date = (nwrite_time->month << 8) + nwrite_time->day; - last_idx = mNtc_DATA_LIST_NUM - 1; - auto_nwrite_p = mNtc_auto_nwrite_data + (mNtc_DATA_LIST_NUM - 1); + date = (nwrite_time->month << 8) + nwrite_time->day; + last_idx = mNtc_DATA_LIST_NUM - 1; + auto_nwrite_p = mNtc_auto_nwrite_data + (mNtc_DATA_LIST_NUM - 1); - for (i = mNtc_DATA_LIST_NUM; i != 0; i--) { - if (date > auto_nwrite_p->date || (date == auto_nwrite_p->date && nwrite_time->hour >= mTM_FIELD_RENEW_HOUR)) { - break; + for (i = mNtc_DATA_LIST_NUM; i != 0; i--) { + if (date > auto_nwrite_p->date || (date == auto_nwrite_p->date && nwrite_time->hour >= mTM_FIELD_RENEW_HOUR)) { + break; + } + + auto_nwrite_p--; + last_idx--; } - auto_nwrite_p--; - last_idx--; - } - - if (last_idx != -1) { - *nwrite_year = nwrite_time->year; - *nwrite_num = last_idx; - } - else { - *nwrite_year = nwrite_time->year - 1; - *nwrite_num = mNtc_get_auto_nwrite_data_last_idx(); - } + if (last_idx != -1) { + *nwrite_year = nwrite_time->year; + *nwrite_num = last_idx; + } else { + *nwrite_year = nwrite_time->year - 1; + *nwrite_num = mNtc_get_auto_nwrite_data_last_idx(); + } } static int mNtc_make_auto_nwrite_day_string(u8* str, int month, int day) { - int month_len; - int day_len; - u8 buf[24]; + int month_len; + int day_len; + u8 buf[24]; - month_len = mString_Load_MonthStringFromRom(buf, month); - mem_copy(str, buf, month_len); - str[month_len] = CHAR_SPACE; - day_len = mString_Load_DayStringFromRom(buf, day); - mem_copy(str + month_len + 1, buf, day_len); - return month_len + day_len + 1; + month_len = mString_Load_MonthStringFromRom(buf, month); + mem_copy(str, buf, month_len); + str[month_len] = CHAR_SPACE; + day_len = mString_Load_DayStringFromRom(buf, day); + mem_copy(str + month_len + 1, buf, day_len); + return month_len + day_len + 1; } static void mNtc_set_auto_nwrite_common_string() { - int land_name_len; - u8 land_name[LAND_NAME_SIZE]; - u8 shop_name[16]; + int land_name_len; + u8 land_name[LAND_NAME_SIZE]; + u8 shop_name[16]; - land_name_len = mNtc_set_landname_string(land_name); - mHandbill_Set_free_str(0, land_name, land_name_len); + land_name_len = mNtc_set_landname_string(land_name); + mHandbill_Set_free_str(0, land_name, land_name_len); - mString_Load_StringFromRom(shop_name, 16, 0x558 + mSP_GetShopLevel()); - mHandbill_Set_free_str(1, shop_name, 16); + mString_Load_StringFromRom(shop_name, 16, 0x558 + mSP_GetShopLevel()); + mHandbill_Set_free_str(1, shop_name, 16); } static void mNtc_set_auto_nwrite_fishing_string(const lbRTC_ymd_c* date) { - u8 month_str[] = { ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' }; - u8 day_str[] = { ' ', ' ', ' ', ' ' }; - u8 size_str[] = { ' ', ' ' }; - PersonalID_c winner_pid; - u32 size; - lbRTC_ymd_c win_date = *date; + u8 month_str[] = { ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' }; + u8 day_str[] = { ' ', ' ', ' ', ' ' }; + u8 size_str[] = { ' ', ' ' }; + PersonalID_c winner_pid; + u32 size; + lbRTC_ymd_c win_date = *date; - mEv_fishRecord_holder(&winner_pid, &size, &win_date); - mFont_UnintToString(size_str, 2, size, 2, 0, 0, TRUE); - mString_Load_MonthStringFromRom(month_str, date->month); - mHandbill_Set_free_str(0, month_str, 9); - mString_Load_DayStringFromRom(day_str, date->day); - mHandbill_Set_free_str(1, day_str, 4); - mHandbill_Set_free_str(2, winner_pid.player_name, PLAYER_NAME_LEN); - mHandbill_Set_free_str(3, size_str, 2); + mEv_fishRecord_holder(&winner_pid, &size, &win_date); + mFont_UnintToString(size_str, 2, size, 2, 0, 0, TRUE); + mString_Load_MonthStringFromRom(month_str, date->month); + mHandbill_Set_free_str(0, month_str, 9); + mString_Load_DayStringFromRom(day_str, date->day); + mHandbill_Set_free_str(1, day_str, 4); + mHandbill_Set_free_str(2, winner_pid.player_name, PLAYER_NAME_LEN); + mHandbill_Set_free_str(3, size_str, 2); } static void mNtc_set_auto_nwrite_string(lbRTC_year_t year) { - lbRTC_ymd_c harvest_moon_date; - int autumnal_equi_day; - int len; - u8 buf[28]; + lbRTC_ymd_c harvest_moon_date; + int autumnal_equi_day; + int len; + u8 buf[28]; - lbRk_HarvestMoonDay(&harvest_moon_date, year); - len = mNtc_make_auto_nwrite_day_string(buf, harvest_moon_date.month, harvest_moon_date.day); - mHandbill_Set_free_str(2, buf, len); - autumnal_equi_day = lbRk_AutumnalEquinoxDay(year); - len = mNtc_make_auto_nwrite_day_string(buf, lbRTC_SEPTEMBER, autumnal_equi_day); - mHandbill_Set_free_str(4, buf, len); + lbRk_HarvestMoonDay(&harvest_moon_date, year); + len = mNtc_make_auto_nwrite_day_string(buf, harvest_moon_date.month, harvest_moon_date.day); + mHandbill_Set_free_str(2, buf, len); + autumnal_equi_day = lbRk_AutumnalEquinoxDay(year); + len = mNtc_make_auto_nwrite_day_string(buf, lbRTC_SEPTEMBER, autumnal_equi_day); + mHandbill_Set_free_str(4, buf, len); } extern void mNtc_auto_nwrite_time_ct() { - mNtc_make_auto_nwrite_data_list(); + mNtc_make_auto_nwrite_data_list(); - if (lbRTC_IsEqualTime(Save_GetPointer(saved_auto_nwrite_time), &mTM_rtcTime_clear_code, lbRTC_CHECK_ALL) == TRUE) { - lbRTC_time_c rtc_time = Common_Get(time.rtc_time); - mNtc_set_near_old_nwrite_data(&rtc_time, Common_GetPointer(auto_nwrite_year), Common_GetPointer(auto_nwrite_count)); - } - else { - mNtc_set_near_old_nwrite_data(Save_GetPointer(save_check.time), Common_GetPointer(auto_nwrite_year), Common_GetPointer(auto_nwrite_count)); - } + if (lbRTC_IsEqualTime(Save_GetPointer(saved_auto_nwrite_time), &mTM_rtcTime_clear_code, lbRTC_CHECK_ALL) == TRUE) { + lbRTC_time_c rtc_time = Common_Get(time.rtc_time); + mNtc_set_near_old_nwrite_data(&rtc_time, Common_GetPointer(auto_nwrite_year), + Common_GetPointer(auto_nwrite_count)); + } else { + mNtc_set_near_old_nwrite_data(Save_GetPointer(save_check.time), Common_GetPointer(auto_nwrite_year), + Common_GetPointer(auto_nwrite_count)); + } } /* TODO: better understand this function & refactor */ static int mNtc_get_fishing_day(lbRTC_ymd_c* ymds, u16* dates, lbRTC_time_c* time, u16* fishing_term_date) { - int notice_year; - int notice_hour; - lbRTC_time_c time_temp; - lbRTC_ymd_c ymd_buf[5]; - int valid_count = 0; - int i; + int notice_year; + int notice_hour; + lbRTC_time_c time_temp; + lbRTC_ymd_c ymd_buf[5]; + int valid_count = 0; + int i; - if (Common_Get(auto_nwrite_set) == FALSE) { - if (mTM_IsTimeCleared(Save_GetPointer(saved_auto_nwrite_time))) { - notice_year = time->year; - notice_hour = time->hour; + if (Common_Get(auto_nwrite_set) == FALSE) { + if (mTM_IsTimeCleared(Save_GetPointer(saved_auto_nwrite_time))) { + notice_year = time->year; + notice_hour = time->hour; + } else { + notice_year = Save_Get(saved_auto_nwrite_time.year); + notice_hour = Save_Get(saved_auto_nwrite_time.hour); + } + } else { + notice_year = Common_Get(auto_nwrite_time.year); + notice_hour = Common_Get(auto_nwrite_time.hour); } - else { - notice_year = Save_Get(saved_auto_nwrite_time.year); - notice_hour = Save_Get(saved_auto_nwrite_time.hour); + + time_temp = *time; + mEv_fishday(ymd_buf, &time_temp); + + for (i = 0; i < 5; i++) { + dates[i] = 0; + ymds[i].year = 0; + ymds[i].month = 0; + ymds[i].day = 0; } - } - else { - notice_year = Common_Get(auto_nwrite_time.year); - notice_hour = Common_Get(auto_nwrite_time.hour); - } - time_temp = *time; - mEv_fishday(ymd_buf, &time_temp); + for (i = 0; i < 5; i++) { + lbRTC_ymd_c* ymd = ymd_buf + i; + u16 month_day = (ymd_buf[i].month << 8) + ymd_buf[i].day; - for (i = 0; i < 5; i++) { - dates[i] = 0; - ymds[i].year = 0; - ymds[i].month = 0; - ymds[i].day = 0; - } - - for (i = 0; i < 5; i++) { - lbRTC_ymd_c* ymd = ymd_buf + i; - u16 month_day = (ymd_buf[i].month << 8) + ymd_buf[i].day; - - if (ymd->year > notice_year || - (notice_year == ymd->year && (month_day > *fishing_term_date || - (month_day == *fishing_term_date && notice_hour < 18))) - ) { - dates[valid_count] = month_day; - ymds[valid_count] = *ymd; - valid_count++; + if (ymd->year > notice_year || + (notice_year == ymd->year && + (month_day > *fishing_term_date || (month_day == *fishing_term_date && notice_hour < 18)))) { + dates[valid_count] = month_day; + ymds[valid_count] = *ymd; + valid_count++; + } } - } - return valid_count; + return valid_count; } static void mNtc_set_fishing_term(u16* date, lbRTC_year_t* year) { - if (Common_Get(auto_nwrite_set) == FALSE) { - if (mTM_IsTimeCleared(Save_GetPointer(saved_auto_nwrite_time))) { - *date = (Common_Get(time.rtc_time.month) << 8) + Common_Get(time.rtc_time.day); - *year = Common_Get(time.rtc_time.year); + if (Common_Get(auto_nwrite_set) == FALSE) { + if (mTM_IsTimeCleared(Save_GetPointer(saved_auto_nwrite_time))) { + *date = (Common_Get(time.rtc_time.month) << 8) + Common_Get(time.rtc_time.day); + *year = Common_Get(time.rtc_time.year); + } else { + *date = (Save_Get(saved_auto_nwrite_time.month) << 8) + Save_Get(saved_auto_nwrite_time.day); + *year = Save_Get(saved_auto_nwrite_time.year); + } + } else { + *date = (Common_Get(auto_nwrite_time.month) << 8) + Common_Get(auto_nwrite_time.day); + *year = Common_Get(auto_nwrite_time.year); } - else { - *date = (Save_Get(saved_auto_nwrite_time.month) << 8) + Save_Get(saved_auto_nwrite_time.day); - *year = Save_Get(saved_auto_nwrite_time.year); - } - } - else { - *date = (Common_Get(auto_nwrite_time.month) << 8) + Common_Get(auto_nwrite_time.day); - *year = Common_Get(auto_nwrite_time.year); - } } -// @nonmatching -/* TODO: match */ -static void mNtc_decide_nwrite_data( - int* write_count, - lbRTC_year_t* nwrite_year, - u8* nwrite_num, - lbRTC_year_t now_nwrite_year, - u8 now_nwrite_num, - lbRTC_year_t* out_nwrite_years, - u8* out_nwrite_nums, - int* fishing_day, - u16 fishing_term_date, - lbRTC_year_t fishing_term_year, - lbRTC_ymd_c* ymds, - u16* month_days -) { +static void mNtc_decide_nwrite_data(int* write_count, lbRTC_year_t* nwrite_year, u8* nwrite_num, + lbRTC_year_t now_nwrite_year, u8 now_nwrite_num, lbRTC_year_t* out_nwrite_years, + u8* out_nwrite_nums, int* fishing_day, u16 fishing_term_date, + lbRTC_year_t fishing_term_year, const lbRTC_ymd_c* ymds, const u16* month_days) { - while (*write_count != 0) { - while (TRUE) { - //fish_day = *fishing_day; - if ((*fishing_day <= 0 || (ymds[*fishing_day - 1].year <= fishing_term_year && (fishing_term_year != ymds[*fishing_day - 1].year || (month_days[*fishing_day - 1] < fishing_term_date)))) || - (ymds[*fishing_day - 1].year <= *nwrite_year && (*nwrite_year != ymds[*fishing_day - 1].year || month_days[*fishing_day - 1] < mNtc_auto_nwrite_data[*nwrite_num].date)) - ) { - break; - } + while (*write_count != 0) { + if (*fishing_day > 0) { + if ((ymds[*fishing_day - 1].year > fishing_term_year || + (fishing_term_year == ymds[*fishing_day - 1].year && + (month_days[*fishing_day - 1] >= fishing_term_date)))) { + if (ymds[*fishing_day - 1].year > *nwrite_year || + (*nwrite_year == ymds[*fishing_day - 1].year && + month_days[*fishing_day - 1] >= mNtc_auto_nwrite_data[*nwrite_num].date)) { + (*write_count)--; + (*fishing_day)--; - (*write_count)--; - (*fishing_day)--; + out_nwrite_years[*write_count] = 0xFFFF; + out_nwrite_nums[*write_count] = 0xFFFF; + continue; + } + } + } - out_nwrite_years[*write_count] = -1; - out_nwrite_nums[*write_count] = -1; + if (*nwrite_year > now_nwrite_year || (*nwrite_year == now_nwrite_year && *nwrite_num > now_nwrite_num)) { + (*write_count)--; + + out_nwrite_years[*write_count] = *nwrite_year; + out_nwrite_nums[*write_count] = *nwrite_num; + + if (*nwrite_num == 0) { + *nwrite_num = mNtc_get_auto_nwrite_data_last_idx(); + (*nwrite_year)--; + } else { + (*nwrite_num)--; + } + } else { + break; + } } - - if (*nwrite_year <= now_nwrite_year) { - if (*nwrite_year != now_nwrite_year) { - return; - } - if (*nwrite_num <= now_nwrite_num) { - return; - } - } - - (*write_count)--; - - out_nwrite_years[*write_count] = *nwrite_year; - out_nwrite_nums[*write_count] = *nwrite_num; - - if (*nwrite_num == 0) { - *nwrite_num = mNtc_get_auto_nwrite_data_last_idx(); - (*nwrite_year)--; - } - else { - (*nwrite_num)--; - } - } } -// @nonmatching -/* TODO: match */ -static void mNtc_set_auto_nwrite(int write_count, u8* nwrite_nums, lbRTC_year_t* nwrite_years, int fishing_day, lbRTC_ymd_c* ymds, u16* month_days) { - mNtc_board_post_c post; - lbRTC_year_t now_year; - int header_back_pos; - u8 footer[MAIL_FOOTER_LEN]; - u8 header[MAIL_HEADER_LEN]; - int year; - int month; - int day; +static void mNtc_set_auto_nwrite(int write_count, u8* nwrite_nums, lbRTC_year_t* nwrite_years, int fishing_day, + lbRTC_ymd_c* ymds, const u16* month_days) { + lbRTC_year_t now_year; + mNtc_board_post_c post; + int header_back_pos; + u8 header[MAIL_FOOTER_LEN]; + u8 footer[MAIL_FOOTER_LEN]; + int year; + lbRTC_month_t month; + lbRTC_day_t day; - post.post_time.sec = 0; - post.post_time.min = 0; - post.post_time.hour = 0; + post.post_time.sec = 0; + post.post_time.min = 0; + post.post_time.hour = 6; - now_year = 0; + now_year = 0; - for (write_count; write_count < 5; write_count++) { - /* write 'fishing day' info */ - if (nwrite_nums[write_count] == mNtc_FISHING_DAY_NUM && nwrite_years[write_count] == mNtc_FISHING_DAY_YEAR) { - lbRTC_ymd_c* post_date = ymds + fishing_day; - lbRTC_ymd_c temp; - int id; - post.post_time.year = post_date->year; - post.post_time.month = mNtc_GET_MONTH(month_days[fishing_day]); - post.post_time.day = mNtc_GET_DAY(month_days[fishing_day]); - post.post_time.weekday = lbRTC_Week(post.post_time.year, post.post_time.month, post.post_time.day); + for (write_count; write_count < 5; write_count++) { + /* write 'fishing day' info */ + if (nwrite_nums[write_count] == mNtc_FISHING_DAY_NUM && nwrite_years[write_count] == mNtc_FISHING_DAY_YEAR) { + lbRTC_ymd_c temp; + lbRTC_ymd_c* post_date = &ymds[fishing_day]; + lbRTC_year_t year = post_date->year; + u8 month = mNtc_GET_MONTH(month_days[fishing_day]); + u8 day = mNtc_GET_DAY(month_days[fishing_day]); + int id = (post_date->day / 7) & 3; - temp = *post_date; - mNtc_set_auto_nwrite_fishing_string(&temp); - now_year = 0; - mHandbill_Load_HandbillFromRom(header, &header_back_pos, footer, post.message, 0x242 + ((post_date->day / 7u) & 3)); - mNtc_notice_write(&post); + post.post_time.year = year; + post.post_time.month = month; + post.post_time.day = day; + post.post_time.weekday = lbRTC_Week(year, month, day); + + temp = *post_date; + mNtc_set_auto_nwrite_fishing_string(&temp); + now_year = 0; + mHandbill_Load_HandbillFromRom(header, &header_back_pos, footer, post.message, 0x242 + id); + mNtc_notice_write(&post); + fishing_day++; + } else { /* write standard post */ + mNtc_set_auto_nwrite_common_string(); + /* check if we need to change the year string to a different year */ + if (now_year != nwrite_years[write_count]) { + mNtc_set_auto_nwrite_string(nwrite_years[write_count]); + now_year = nwrite_years[write_count]; + } + + year = nwrite_years[write_count]; + month = mNtc_GET_MONTH(mNtc_auto_nwrite_data[nwrite_nums[write_count]].date); + day = mNtc_GET_DAY(mNtc_auto_nwrite_data[nwrite_nums[write_count]].date); + + post.post_time.year = year; + post.post_time.month = month; + post.post_time.day = day; + post.post_time.weekday = lbRTC_Week(year, month, day); + + mHandbill_Load_HandbillFromRom(header, &header_back_pos, footer, post.message, + 0x1A4 + mNtc_auto_nwrite_data[nwrite_nums[write_count]].id); + mNtc_notice_write(&post); + } } - else { /* write standard post */ - mNtc_set_auto_nwrite_common_string(); - /* check if we need to change the year string to a different year */ - if (now_year != nwrite_years[write_count]) { - mNtc_set_auto_nwrite_string(nwrite_years[write_count]); - now_year = nwrite_years[write_count]; - } - - year = nwrite_years[write_count]; - month = mNtc_GET_MONTH(mNtc_auto_nwrite_data[nwrite_nums[write_count]].date); - day = mNtc_GET_DAY(mNtc_auto_nwrite_data[nwrite_nums[write_count]].date); - - post.post_time.year = year; - post.post_time.month = month; - post.post_time.day = day; - post.post_time.weekday = lbRTC_Week(year, month, day); - - mHandbill_Load_HandbillFromRom(header, &header_back_pos, footer, post.message, 0x1A4 + mNtc_auto_nwrite_data[nwrite_nums[write_count]].id); - mNtc_notice_write(&post); - } - } } extern void mNtc_set_auto_nwrite_data() { - u8 nwrite_num; - u16 fishing_term_date; - lbRTC_year_t fishing_term_year; - lbRTC_year_t nwrite_year; - lbRTC_year_t now_nwrite_year; - u8 now_nwrite_num; - lbRTC_time_c rtc_time; - u8 set_nwrite_nums[5]; - lbRTC_ymd_c nwrite_ymds[mNtc_NWRITE_NUM]; - u16 nwrite_dates[mNtc_NWRITE_NUM]; - lbRTC_year_t set_nwrite_years[mNtc_NWRITE_NUM]; - int write_count; - - if (mEv_CheckTitleDemo() == FALSE && mFI_GET_TYPE(mFI_GetFieldId()) == mFI_TYPE(mFI_FIELDTYPE_FG)) { - int fishing_day; - now_nwrite_year = Common_Get(auto_nwrite_year); - if (now_nwrite_year != 0) { - write_count = mNtc_NWRITE_NUM; - fishing_day = 0; - rtc_time = Common_Get(time.rtc_time); - now_nwrite_num = Common_Get(auto_nwrite_count); - mNtc_make_auto_nwrite_data_list(); - mNtc_set_fishing_term(&fishing_term_date, &fishing_term_year); - fishing_day = mNtc_get_fishing_day(nwrite_ymds, nwrite_dates, &rtc_time, &fishing_term_date); - mNtc_set_near_old_nwrite_data(&rtc_time, &nwrite_year, &nwrite_num); + u8 nwrite_num; + u16 fishing_term_date; + lbRTC_year_t fishing_term_year; + lbRTC_year_t nwrite_year; + lbRTC_year_t now_nwrite_year; + u8 now_nwrite_num; + lbRTC_time_c rtc_time; + u8 set_nwrite_nums[5]; + lbRTC_ymd_c nwrite_ymds[mNtc_NWRITE_NUM]; + u16 nwrite_dates[mNtc_NWRITE_NUM]; + lbRTC_year_t set_nwrite_years[mNtc_NWRITE_NUM]; + int write_count; - mNtc_decide_nwrite_data( - &write_count, - &nwrite_year, - &nwrite_num, - now_nwrite_year, - now_nwrite_num, - set_nwrite_years, - set_nwrite_nums, - &fishing_day, - fishing_term_date, - fishing_term_year, - nwrite_ymds, - nwrite_dates - ); + if (mEv_CheckTitleDemo() == FALSE && mFI_GET_TYPE(mFI_GetFieldId()) == mFI_TYPE(mFI_FIELDTYPE_FG)) { + int fishing_day; + now_nwrite_year = Common_Get(auto_nwrite_year); + if (now_nwrite_year != 0) { + write_count = mNtc_NWRITE_NUM; + fishing_day = 0; + rtc_time = Common_Get(time.rtc_time); + now_nwrite_num = Common_Get(auto_nwrite_count); + mNtc_make_auto_nwrite_data_list(); + mNtc_set_fishing_term(&fishing_term_date, &fishing_term_year); + fishing_day = mNtc_get_fishing_day(nwrite_ymds, nwrite_dates, &rtc_time, &fishing_term_date); + mNtc_set_near_old_nwrite_data(&rtc_time, &nwrite_year, &nwrite_num); - if (write_count != mNtc_NWRITE_NUM) { - mNtc_set_auto_nwrite(write_count, set_nwrite_nums, set_nwrite_years, fishing_day, nwrite_ymds, nwrite_dates); - } - else { - if (Common_Get(buried_treasure_flag) == FALSE) { - mNtc_check_treasure(); + mNtc_decide_nwrite_data(&write_count, &nwrite_year, &nwrite_num, now_nwrite_year, now_nwrite_num, + set_nwrite_years, set_nwrite_nums, &fishing_day, fishing_term_date, + fishing_term_year, nwrite_ymds, nwrite_dates); + + if (write_count != mNtc_NWRITE_NUM) { + mNtc_set_auto_nwrite(write_count, set_nwrite_nums, set_nwrite_years, fishing_day, nwrite_ymds, + nwrite_dates); + } else { + if (Common_Get(buried_treasure_flag) == FALSE) { + mNtc_check_treasure(); + } + } + + mNtc_set_near_old_nwrite_data(&rtc_time, &nwrite_year, &nwrite_num); + + Common_Set(auto_nwrite_year, nwrite_year); + Common_Set(auto_nwrite_count, nwrite_num); + Common_Set(auto_nwrite_set, TRUE); + Common_Set(auto_nwrite_time, Common_Get(time.rtc_time)); + Save_Set(saved_auto_nwrite_time, Common_Get(time.rtc_time)); + mFR_fishmail(); /* send fishing tourney result mail */ + Common_Set(buried_treasure_flag, TRUE); + lbRTC_TimeCopy(Save_GetPointer(treasure_checked_time), &rtc_time); } - } - - mNtc_set_near_old_nwrite_data(&rtc_time, &nwrite_year, &nwrite_num); - - Common_Set(auto_nwrite_year, nwrite_year); - Common_Set(auto_nwrite_count, nwrite_num); - Common_Set(auto_nwrite_set, TRUE); - Common_Set(auto_nwrite_time, Common_Get(time.rtc_time)); - Save_Set(saved_auto_nwrite_time, Common_Get(time.rtc_time)); - mFR_fishmail(); /* send fishing tourney result mail */ - Common_Set(buried_treasure_flag, TRUE); - lbRTC_TimeCopy(Save_GetPointer(treasure_checked_time), &rtc_time); } - } } From b33c80615ba96ebe051e64ce77a43955a0617dc9 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Wed, 4 Sep 2024 02:46:18 -0400 Subject: [PATCH 169/234] Link m_handbill --- config/rel_slices.yml | 5 + src/m_handbill.c | 1206 ++++++++++++++++++++--------------------- 2 files changed, 604 insertions(+), 607 deletions(-) diff --git a/config/rel_slices.yml b/config/rel_slices.yml index 22fe856a..d71d0d67 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -142,6 +142,11 @@ m_fuusen.c: .bss: [0x81295C70, 0x81295C80] m_huusui_room.c: .text: [0x803B1908, 0x803B1968] +m_handbill.c: + .text: [0x803B1968, 0x803B2E88] + .rodata: [0x80642288, 0x80642478] + .data: [0x806546B0, 0x806546C8] + .bss: [0x81295C80, 0x81296128] m_home.c: .text: [0x803B2E88, 0x803B3688] .data: [0x806546C8, 0x80655340] diff --git a/src/m_handbill.c b/src/m_handbill.c index b88b6371..e5f54df3 100644 --- a/src/m_handbill.c +++ b/src/m_handbill.c @@ -17,589 +17,585 @@ static u32 Handbillz_start; static void mHandbillz_aram_init(); - extern void mHandbill_aram_init() { - Ps_table_rom_start = JW_GetAramAddress(RESOURCE_PS_TABLE); - Ps_rom_start = JW_GetAramAddress(RESOURCE_PS); + Ps_table_rom_start = JW_GetAramAddress(RESOURCE_PS_TABLE); + Ps_rom_start = JW_GetAramAddress(RESOURCE_PS); - Handbill_table_rom_start = JW_GetAramAddress(RESOURCE_MAIL_TABLE); - Handbill_rom_start = JW_GetAramAddress(RESOURCE_MAIL); + Handbill_table_rom_start = JW_GetAramAddress(RESOURCE_MAIL_TABLE); + Handbill_rom_start = JW_GetAramAddress(RESOURCE_MAIL); - Super_table_rom_start = JW_GetAramAddress(RESOURCE_SUPER_TABLE); - Super_rom_start = JW_GetAramAddress(RESOURCE_SUPER); + Super_table_rom_start = JW_GetAramAddress(RESOURCE_SUPER_TABLE); + Super_rom_start = JW_GetAramAddress(RESOURCE_SUPER); - Handbillz_rom_start = JW_GetAramAddress(RESOURCE_MAILA); - Handbillz_start = 0; + Handbillz_rom_start = JW_GetAramAddress(RESOURCE_MAILA); + Handbillz_start = 0; - mHandbillz_aram_init(); + mHandbillz_aram_init(); } static mHandbill_Data_c mHandbill_data; static void mHandbill_clr_force_art() { - mHandbill_data.force_art = mIN_ARTICLE_NUM; + mHandbill_data.force_art = mIN_ARTICLE_NUM; } static void mHandbill_clr_capital_flag() { - #ifndef BUGFIXES - mHandbill_data.force_art = mIN_ARTICLE_NUM; // copy-paste error - #else - mHandbill_data.capital_flag = FALSE; - #endif +#ifndef BUGFIXES + mHandbill_data.force_art = mIN_ARTICLE_NUM; // copy-paste error +#else + mHandbill_data.capital_flag = FALSE; +#endif } static void mHandbill_load_init() { - mHandbill_clr_force_art(); - mHandbill_clr_capital_flag(); + mHandbill_clr_force_art(); + mHandbill_clr_capital_flag(); } extern void mHandbill_Set_free_str(int str_num, u8* str, int str_len) { - int i; - int j; - u8* free_str; - mHandbill_Data_c* handbill_data; + int i; + int j; + u8* free_str; + mHandbill_Data_c* handbill_data; - if (str_num < 0) { - return; - } + if (str_num < 0) { + return; + } - if (str_num >= mHandbill_FREE_STR_NUM) { - return; - } + if (str_num >= mHandbill_FREE_STR_NUM) { + return; + } - if (str == NULL) { - return; - } + if (str == NULL) { + return; + } - handbill_data = &mHandbill_data; - free_str = handbill_data->free_str[str_num]; + handbill_data = &mHandbill_data; + free_str = handbill_data->free_str[str_num]; - if (str_len > mHandbill_FREE_STR_LEN) { - str_len = mHandbill_FREE_STR_LEN; - } + if (str_len > mHandbill_FREE_STR_LEN) { + str_len = mHandbill_FREE_STR_LEN; + } - for (i = 0; i < str_len; i++) { - free_str[i] = str[i]; - } + for (i = 0; i < str_len; i++) { + free_str[i] = str[i]; + } - for (j = i; j < mHandbill_FREE_STR_LEN; j++) { - free_str[j] = CHAR_SPACE; - } + for (j = i; j < mHandbill_FREE_STR_LEN; j++) { + free_str[j] = CHAR_SPACE; + } - handbill_data->free_str_art[str_num] = mIN_ARTICLE_NONE; + handbill_data->free_str_art[str_num] = mIN_ARTICLE_NONE; } extern void mHandbill_Set_free_str_art(int str_num, u8* str, int str_len, int article) { - mHandbill_Set_free_str(str_num, str, str_len); - mHandbill_data.free_str_art[str_num] = article; + mHandbill_Set_free_str(str_num, str, str_len); + mHandbill_data.free_str_art[str_num] = article; } static void mHandbill_CopyString(u8* dst, u8* src, int len) { - for (len; len > 0; len--) { - *dst++ = *src++; - } + for (len; len > 0; len--) { + *dst++ = *src++; + } } extern int mHandbill_MoveDataCut(u8* data, int buf_size, int dst_idx, int src_idx, int data_len, int fill_type) { - int new_len = data_len; - int i; + int new_len = data_len; + int i; - if (dst_idx < src_idx) { - u8* dst = data + dst_idx; - u8* src = data + src_idx; - - for (i = src_idx; i < data_len; i++) { - data[dst_idx] = data[src_idx++]; - dst_idx++; + if (dst_idx < src_idx) { + u8* dst = data + dst_idx; + u8* src = data + src_idx; + + for (i = src_idx; i < data_len; i++) { + data[dst_idx] = data[src_idx++]; + dst_idx++; + } + + new_len -= src_idx - dst_idx; + + if (fill_type != mHandbill_FILL_NONE) { + u8 fill_char; + + if (fill_type == mHandbill_FILL_RETURN) { + fill_char = CHAR_NEW_LINE; + } else { + fill_char = CHAR_SPACE; + } + + while (dst_idx < data_len) { + data[dst_idx++] = fill_char; + } + } + } else if (dst_idx > src_idx) { + int move_size = data_len - src_idx; + u8* dst; + u8* src; + + new_len += dst_idx - src_idx; + if (new_len > buf_size) { + data_len -= new_len - buf_size; + move_size -= new_len - buf_size; + new_len = buf_size; + } + + dst = data + new_len - 1; + src = data + data_len - 1; + for (i = 0; i < move_size; i++) { + *dst-- = *src--; + } } - new_len -= src_idx - dst_idx; - - if (fill_type != mHandbill_FILL_NONE) { - u8 fill_char; - - if (fill_type == mHandbill_FILL_RETURN) { - fill_char = CHAR_NEW_LINE; - } - else { - fill_char = CHAR_SPACE; - } - - while (dst_idx < data_len) { - data[dst_idx++] = fill_char; - } - } - } - else if (dst_idx > src_idx) { - int move_size = data_len - src_idx; - u8* dst; - u8* src; - - new_len += dst_idx - src_idx; - if (new_len > buf_size) { - data_len -= new_len - buf_size; - move_size -= new_len - buf_size; - new_len = buf_size; - } - - dst = data + new_len - 1; - src = data + data_len - 1; - for (i = 0; i < move_size; i++) { - *dst-- = *src--; - } - } - - return new_len; + return new_len; } static int mHandbill_Put_String_FREE(u8* str, int buf_size, int start_idx, int str_len, int str_no, int fill_type) { - int code_size; - int free_str_len; - int cut_len; - int article; - int temp; + int code_size; + int free_str_len; + int cut_len; + int article; + int temp; - if (str_no < mHandbill_FREE_STR0 || str_no >= mHandbill_FREE_STR_NUM) { - str_no = mHandbill_FREE_STR0; - } + if (str_no < mHandbill_FREE_STR0 || str_no >= mHandbill_FREE_STR_NUM) { + str_no = mHandbill_FREE_STR0; + } - code_size = mFont_CodeSize_idx_get(str, start_idx); - free_str_len = mMsg_Get_Length_String(mHandbill_data.free_str[str_no], mHandbill_FREE_STR_LEN); - cut_len = mHandbill_MoveDataCut(str, buf_size, start_idx + free_str_len, start_idx + code_size, str_len, fill_type); + code_size = mFont_CodeSize_idx_get(str, start_idx); + free_str_len = mMsg_Get_Length_String(mHandbill_data.free_str[str_no], mHandbill_FREE_STR_LEN); + cut_len = mHandbill_MoveDataCut(str, buf_size, start_idx + free_str_len, start_idx + code_size, str_len, fill_type); - if (cut_len >= buf_size && free_str_len > buf_size - start_idx) { - free_str_len = buf_size - start_idx; - } + if (cut_len >= buf_size && free_str_len > buf_size - start_idx) { + free_str_len = buf_size - start_idx; + } - mHandbill_CopyString(&str[start_idx], mHandbill_data.free_str[str_no], free_str_len); + mHandbill_CopyString(&str[start_idx], mHandbill_data.free_str[str_no], free_str_len); - switch(mHandbill_data.force_art) { - default: - article = mHandbill_data.force_art; - break; + switch (mHandbill_data.force_art) { + default: + article = mHandbill_data.force_art; + break; - case mIN_ARTICLE_NUM: - article = mHandbill_data.free_str_art[str_no]; - break; - } + case mIN_ARTICLE_NUM: + article = mHandbill_data.free_str_art[str_no]; + break; + } - if (article != mIN_ARTICLE_NONE) { - u8 article_buf[32]; + if (article != mIN_ARTICLE_NONE) { + u8 article_buf[32]; - mString_Load_ArticleFromRom(article_buf, 16, article); // Load string from string file into buffer - free_str_len = mMsg_Get_Length_String(article_buf, 16); // Get length of article - article_buf[free_str_len] = CHAR_SPACE; // Add a space to the end of the article - cut_len = mHandbill_MoveDataCut(str, buf_size, start_idx + free_str_len + 1, start_idx, cut_len, mHandbill_FILL_NONE); // Create free space for the article - mHandbill_CopyString(&str[start_idx], article_buf, free_str_len + 1); // Copy article to allocated space - } + mString_Load_ArticleFromRom(article_buf, 16, article); // Load string from string file into buffer + free_str_len = mMsg_Get_Length_String(article_buf, 16); // Get length of article + article_buf[free_str_len] = CHAR_SPACE; // Add a space to the end of the article + cut_len = mHandbill_MoveDataCut(str, buf_size, start_idx + free_str_len + 1, start_idx, cut_len, + mHandbill_FILL_NONE); // Create free space for the article + mHandbill_CopyString(&str[start_idx], article_buf, free_str_len + 1); // Copy article to allocated space + } - if (mHandbill_data.capital_flag) { - str[start_idx] = mFont_small_to_capital(str[start_idx]); - } + if (mHandbill_data.capital_flag) { + str[start_idx] = mFont_small_to_capital(str[start_idx]); + } - mHandbill_clr_force_art(); - mHandbill_clr_capital_flag(); + mHandbill_clr_force_art(); + mHandbill_clr_capital_flag(); - return cut_len; + return cut_len; } static int mHandbill_Put_String_FREE0(u8* buf, int buf_size, int start_idx, int str_len, int fill_type) { - return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR0, fill_type); + return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR0, fill_type); } static int mHandbill_Put_String_FREE1(u8* buf, int buf_size, int start_idx, int str_len, int fill_type) { - return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR1, fill_type); + return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR1, fill_type); } static int mHandbill_Put_String_FREE2(u8* buf, int buf_size, int start_idx, int str_len, int fill_type) { - return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR2, fill_type); + return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR2, fill_type); } static int mHandbill_Put_String_FREE3(u8* buf, int buf_size, int start_idx, int str_len, int fill_type) { - return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR3, fill_type); + return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR3, fill_type); } static int mHandbill_Put_String_FREE4(u8* buf, int buf_size, int start_idx, int str_len, int fill_type) { - return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR4, fill_type); + return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR4, fill_type); } static int mHandbill_Put_String_FREE5(u8* buf, int buf_size, int start_idx, int str_len, int fill_type) { - return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR5, fill_type); + return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR5, fill_type); } static int mHandbill_Put_String_FREE6(u8* buf, int buf_size, int start_idx, int str_len, int fill_type) { - return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR6, fill_type); + return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR6, fill_type); } static int mHandbill_Put_String_FREE7(u8* buf, int buf_size, int start_idx, int str_len, int fill_type) { - return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR7, fill_type); + return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR7, fill_type); } static int mHandbill_Put_String_FREE8(u8* buf, int buf_size, int start_idx, int str_len, int fill_type) { - return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR8, fill_type); + return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR8, fill_type); } static int mHandbill_Put_String_FREE9(u8* buf, int buf_size, int start_idx, int str_len, int fill_type) { - return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR9, fill_type); + return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR9, fill_type); } static int mHandbill_Put_String_FREE10(u8* buf, int buf_size, int start_idx, int str_len, int fill_type) { - return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR10, fill_type); + return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR10, fill_type); } static int mHandbill_Put_String_FREE11(u8* buf, int buf_size, int start_idx, int str_len, int fill_type) { - return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR11, fill_type); + return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR11, fill_type); } static int mHandbill_Put_String_FREE12(u8* buf, int buf_size, int start_idx, int str_len, int fill_type) { - return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR12, fill_type); + return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR12, fill_type); } static int mHandbill_Put_String_FREE13(u8* buf, int buf_size, int start_idx, int str_len, int fill_type) { - return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR13, fill_type); + return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR13, fill_type); } static int mHandbill_Put_String_FREE14(u8* buf, int buf_size, int start_idx, int str_len, int fill_type) { - return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR14, fill_type); + return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR14, fill_type); } static int mHandbill_Put_String_FREE15(u8* buf, int buf_size, int start_idx, int str_len, int fill_type) { - return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR15, fill_type); + return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR15, fill_type); } static int mHandbill_Put_String_FREE16(u8* buf, int buf_size, int start_idx, int str_len, int fill_type) { - return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR16, fill_type); + return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR16, fill_type); } static int mHandbill_Put_String_FREE17(u8* buf, int buf_size, int start_idx, int str_len, int fill_type) { - return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR17, fill_type); + return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR17, fill_type); } static int mHandbill_Put_String_FREE18(u8* buf, int buf_size, int start_idx, int str_len, int fill_type) { - return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR18, fill_type); + return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR18, fill_type); } static int mHandbill_Put_String_FREE19(u8* buf, int buf_size, int start_idx, int str_len, int fill_type) { - return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR19, fill_type); + return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR19, fill_type); } static int mHandbill_Cut_Article(u8* buf, int buf_size, int start_idx, int str_len, int fill_type) { - int code_size = mFont_CodeSize_idx_get(buf, start_idx); - - mHandbill_data.force_art = mIN_ARTICLE_NONE; - return mHandbill_MoveDataCut(buf, buf_size, start_idx, start_idx + code_size, str_len, mHandbill_FILL_NONE); // remove the control code characters + int code_size = mFont_CodeSize_idx_get(buf, start_idx); + + mHandbill_data.force_art = mIN_ARTICLE_NONE; + return mHandbill_MoveDataCut(buf, buf_size, start_idx, start_idx + code_size, str_len, + mHandbill_FILL_NONE); // remove the control code characters } static int mHandbill_Capital_Letter(u8* buf, int buf_size, int start_idx, int str_len, int fill_type) { - int code_size = mFont_CodeSize_idx_get(buf, start_idx); - - mHandbill_data.capital_flag = TRUE; - return mHandbill_MoveDataCut(buf, buf_size, start_idx, start_idx + code_size, str_len, mHandbill_FILL_NONE); // remove the control code characters + int code_size = mFont_CodeSize_idx_get(buf, start_idx); + + mHandbill_data.capital_flag = TRUE; + return mHandbill_MoveDataCut(buf, buf_size, start_idx, start_idx + code_size, str_len, + mHandbill_FILL_NONE); // remove the control code characters } typedef int (*mHandbill_PUT_STRING_PROC)(u8*, int, int, int, int); static int mHandbill_Put_String(u8* buf, int buf_size, int start_idx, int str_len, int fill_type) { - static const mHandbill_PUT_STRING_PROC proc[mFont_CONT_CODE_NUM] = { - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - &mHandbill_Put_String_FREE0, - &mHandbill_Put_String_FREE1, - &mHandbill_Put_String_FREE2, - &mHandbill_Put_String_FREE3, - &mHandbill_Put_String_FREE4, - &mHandbill_Put_String_FREE5, - &mHandbill_Put_String_FREE6, - &mHandbill_Put_String_FREE7, - &mHandbill_Put_String_FREE8, - &mHandbill_Put_String_FREE9, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - &mHandbill_Put_String_FREE10, - &mHandbill_Put_String_FREE11, - &mHandbill_Put_String_FREE12, - &mHandbill_Put_String_FREE13, - &mHandbill_Put_String_FREE14, - &mHandbill_Put_String_FREE15, - &mHandbill_Put_String_FREE16, - &mHandbill_Put_String_FREE17, - &mHandbill_Put_String_FREE18, - &mHandbill_Put_String_FREE19, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - &mHandbill_Cut_Article, - &mHandbill_Capital_Letter, - NULL, - NULL, - NULL, - NULL, - NULL - }; + static const mHandbill_PUT_STRING_PROC proc[mFont_CONT_CODE_NUM] = { NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + &mHandbill_Put_String_FREE0, + &mHandbill_Put_String_FREE1, + &mHandbill_Put_String_FREE2, + &mHandbill_Put_String_FREE3, + &mHandbill_Put_String_FREE4, + &mHandbill_Put_String_FREE5, + &mHandbill_Put_String_FREE6, + &mHandbill_Put_String_FREE7, + &mHandbill_Put_String_FREE8, + &mHandbill_Put_String_FREE9, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + &mHandbill_Put_String_FREE10, + &mHandbill_Put_String_FREE11, + &mHandbill_Put_String_FREE12, + &mHandbill_Put_String_FREE13, + &mHandbill_Put_String_FREE14, + &mHandbill_Put_String_FREE15, + &mHandbill_Put_String_FREE16, + &mHandbill_Put_String_FREE17, + &mHandbill_Put_String_FREE18, + &mHandbill_Put_String_FREE19, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + &mHandbill_Cut_Article, + &mHandbill_Capital_Letter, + NULL, + NULL, + NULL, + NULL, + NULL }; - int type = buf[start_idx + 1]; - if (type >= mFont_CONT_CODE_BEGIN &&type < mFont_CONT_CODE_NUM) { - mHandbill_PUT_STRING_PROC p = proc[type]; + int type = buf[start_idx + 1]; + if (type >= mFont_CONT_CODE_BEGIN && type < mFont_CONT_CODE_NUM) { + mHandbill_PUT_STRING_PROC p = proc[type]; - if (p != NULL) { - return (*p)(buf, buf_size, start_idx, str_len, fill_type); + if (p != NULL) { + return (*p)(buf, buf_size, start_idx, str_len, fill_type); + } } - } - return str_len; + return str_len; } static void mHandbill_Change_ControlCode(u8* buf, int buf_size, int str_len, int fill_type) { - int pos = 0; - int len = str_len; + int pos = 0; + int len = str_len; - while (pos < len && pos < buf_size) { - if (buf[pos] == CHAR_CONTROL_CODE) { - len = mHandbill_Put_String(buf, buf_size, pos, len, fill_type); + while (pos < len && pos < buf_size) { + if (buf[pos] == CHAR_CONTROL_CODE) { + len = mHandbill_Put_String(buf, buf_size, pos, len, fill_type); + } else { + pos++; + } } - else { - pos++; - } - } } static void mHandbill_Change_ControlCode2(u8* buf, int buf_size, int str_len, int* header_back_start, int fill_type) { - int now_str_len; + int now_str_len; - int pos = 0; - int len = str_len; + int pos = 0; + int len = str_len; - while (pos < len && pos < buf_size) { - if (buf[pos] == CHAR_CONTROL_CODE) { - now_str_len = len; - len = mHandbill_Put_String(buf, buf_size, pos, len, fill_type); + while (pos < len && pos < buf_size) { + if (buf[pos] == CHAR_CONTROL_CODE) { + now_str_len = len; + len = mHandbill_Put_String(buf, buf_size, pos, len, fill_type); - if (pos < *header_back_start) { - *header_back_start += len - now_str_len; - } + if (pos < *header_back_start) { + *header_back_start += len - now_str_len; + } + } else { + pos++; + } } - else { - pos++; - } - } } static void mHandbill_Get_SuperStringDataAddressAndSize(int super_no, u32* addr, u32* size) { - mMsg_Get_BodyParam(Super_table_rom_start, Super_rom_start, super_no, addr, size); + mMsg_Get_BodyParam(Super_table_rom_start, Super_rom_start, super_no, addr, size); } static void mHandbill_Get_PsStringDataAddressAndSize(int ps_no, u32* addr, u32* size) { - mMsg_Get_BodyParam(Ps_table_rom_start, Ps_rom_start, ps_no, addr, size); + mMsg_Get_BodyParam(Ps_table_rom_start, Ps_rom_start, ps_no, addr, size); } static void mHandbill_Get_MailStringDataAddressAndSize(int mail_no, u32* addr, u32* size) { - mMsg_Get_BodyParam(Handbill_table_rom_start, Handbill_rom_start, mail_no, addr, size); + mMsg_Get_BodyParam(Handbill_table_rom_start, Handbill_rom_start, mail_no, addr, size); } -static void mHandbill_CheckSuperStringBorderAndCopy(u8* dst, int dst_size, int* header_back_start, u8* src, int src_size) { - int src_pos; - int lines; - int dst_pos; - u8* src_p = src; - u8* dst_p = dst; - int i; +static void mHandbill_CheckSuperStringBorderAndCopy(u8* dst, int dst_size, int* header_back_start, u8* src, + int src_size) { + int src_pos; + int lines; + int dst_pos; + u8* src_p = src; + u8* dst_p = dst; + int i; - lines = 0; - dst_pos = 0; - src_pos = 0; + lines = 0; + dst_pos = 0; + src_pos = 0; - for (i = 0; i < src_size; i++) { - if (*src_p == CHAR_NEW_LINE) { - *header_back_start = src_pos; - lines++; - } - else if (dst_pos < dst_size) { - *dst_p = *src_p; - dst_p++; - dst_pos++; + for (i = 0; i < src_size; i++) { + if (*src_p == CHAR_NEW_LINE) { + *header_back_start = src_pos; + lines++; + } else if (dst_pos < dst_size) { + *dst_p = *src_p; + dst_p++; + dst_pos++; + } + + src_p++; + src_pos++; } - src_p++; - src_pos++; - } - - if (lines != 1) { - *header_back_start = src_size; - } + if (lines != 1) { + *header_back_start = src_size; + } } -/* @nonmatching TODO: minor regswap here */ static void mHandbill_Load_SuperStringFromRom(u8* buf, int buf_size, int* header_back_start, int super_no) { - static u8 buff[90] ATTRIBUTE_ALIGN(32); - u8 super_buf[43]; - int* test = header_back_start; - int b_size = buf_size; + static u8 buff[90] ATTRIBUTE_ALIGN(32); + u8 super_buf[43]; - if (super_no >= 0 && super_no < mHandbill_MAIL_NUM) { u32 super_address; u32 super_size; int temp_header_back_start; - mHandbill_Get_SuperStringDataAddressAndSize(super_no, &super_address, &super_size); - mem_clear(buf, buf_size, CHAR_SPACE); + s32 tmp_size; - if (super_address != 0 && super_size != 0) { - u32 aligned_addr = ALIGN_PREV(super_address, 32); // align to 32 bytes for ARAM DMA - u32 data_ofs = super_address - aligned_addr; // calculate offset for desired data - u32 size = ALIGN_NEXT(data_ofs + super_size, 32); - int move_size; - u8* dst; - u8* src; - int i; - - bzero(buff, 90); - _JW_GetResourceAram(aligned_addr, buff, size); + if (super_no >= 0 && super_no < mHandbill_MAIL_NUM) { + tmp_size = buf_size; + mHandbill_Get_SuperStringDataAddressAndSize(super_no, &super_address, &super_size); + mem_clear(buf, tmp_size, CHAR_SPACE); - src = buff + data_ofs; - dst = buff; - move_size = super_size; - /* Move desired data to begining of buffer */ - for (i = 0; i < move_size; i++) { - *dst++ = *src++; - } + if (super_address != 0 && super_size != 0) { + u32 aligned_addr = ALIGN_PREV(super_address, 32); // align to 32 bytes for ARAM DMA + u32 data_ofs = super_address - aligned_addr; // calculate offset for desired data + u32 size = ALIGN_NEXT(data_ofs + super_size, 32); + int move_size; + u8* dst; + u8* src; + int i; - mem_clear(super_buf, 43, CHAR_SPACE); - mHandbill_CheckSuperStringBorderAndCopy(super_buf, 43, &temp_header_back_start, buff, super_size); - mHandbill_Change_ControlCode2(super_buf, 43, super_size - 1, &temp_header_back_start, mHandbill_FILL_SPACE); - bcopy(super_buf, buf, buf_size < 43 ? buf_size : 43); - *header_back_start = temp_header_back_start; + bzero(buff, 90); + _JW_GetResourceAram(aligned_addr, buff, size); + + src = buff + data_ofs; + dst = buff; + move_size = super_size; + /* Move desired data to begining of buffer */ + for (i = 0; i < move_size; i++) { + *dst++ = *src++; + } + + mem_clear(super_buf, 43, CHAR_SPACE); + mHandbill_CheckSuperStringBorderAndCopy(super_buf, 43, &temp_header_back_start, buff, super_size); + mHandbill_Change_ControlCode2(super_buf, 43, super_size - 1, &temp_header_back_start, mHandbill_FILL_SPACE); + + bcopy(super_buf, buf, tmp_size < 43 ? buf_size : 43); + *header_back_start = temp_header_back_start; + } } - } } static void mHandbill_Load_PsStringFromRom(u8* buf, int buf_size, int ps_no) { - static u8 buff[120] ATTRIBUTE_ALIGN(32); + static u8 buff[120] ATTRIBUTE_ALIGN(32); - if (ps_no >= 0 && ps_no < mHandbill_MAIL_NUM) { - u32 ps_address; - u32 ps_size; + if (ps_no >= 0 && ps_no < mHandbill_MAIL_NUM) { + u32 ps_address; + u32 ps_size; - mHandbill_Get_PsStringDataAddressAndSize(ps_no, &ps_address, &ps_size); + mHandbill_Get_PsStringDataAddressAndSize(ps_no, &ps_address, &ps_size); - if (ps_size == 0) { - mem_clear(buf, buf_size, CHAR_SPACE); + if (ps_size == 0) { + mem_clear(buf, buf_size, CHAR_SPACE); + } else if (ps_address != 0) { + u32 aligned_addr = ALIGN_PREV(ps_address, 32); // align to 32 bytes for ARAM DMA + u32 data_ofs = ps_address - aligned_addr; // calculate offset for desired data + u32 size = ALIGN_NEXT(data_ofs + ps_size, 32); + int sz; + int i; + u8* dst; + + _JW_GetResourceAram(aligned_addr, buff, size); + + /* Move desired data to output buffer */ + sz = (int)ps_size < buf_size ? ps_size : buf_size; + dst = buf; + for (i = 0; i < sz; i++) { + *dst = buff[data_ofs + i]; + dst++; + } + + /* Initialize remaining buffer to spaces */ + for (i; i < buf_size; i++) { + *dst = CHAR_SPACE; + dst++; + } + + /* Do any control code processing */ + mHandbill_Change_ControlCode(buf, buf_size, ps_size, mHandbill_FILL_SPACE); + } } - else if (ps_address != 0) { - u32 aligned_addr = ALIGN_PREV(ps_address, 32); // align to 32 bytes for ARAM DMA - u32 data_ofs = ps_address - aligned_addr; // calculate offset for desired data - u32 size = ALIGN_NEXT(data_ofs + ps_size, 32); - int sz; - int i; - u8* dst; - - _JW_GetResourceAram(aligned_addr, buff, size); - - /* Move desired data to output buffer */ - sz = (int)ps_size < buf_size ? ps_size : buf_size; - dst = buf; - for (i = 0; i < sz; i++) { - *dst = buff[data_ofs + i]; - dst++; - } - - /* Initialize remaining buffer to spaces */ - for (i; i < buf_size; i++) { - *dst = CHAR_SPACE; - dst++; - } - - /* Do any control code processing */ - mHandbill_Change_ControlCode(buf, buf_size, ps_size, mHandbill_FILL_SPACE); - } - } } static u8 mHandbill_mail_buff[263] ATTRIBUTE_ALIGN(32); @@ -607,274 +603,270 @@ static u8 mHandbill_mail_buff[263] ATTRIBUTE_ALIGN(32); static u8 mHandbill_mail_buff[263] ATTRIBUTE_ALIGN(32); static void mHandbill_Load_MailFromRom(u8* buf, int mail_no) { - if (mail_no >= 0 && mail_no < mHandbill_MAIL_NUM) { - u32 mail_address; - u32 mail_size; + if (mail_no >= 0 && mail_no < mHandbill_MAIL_NUM) { + u32 mail_address; + u32 mail_size; - mHandbill_Get_MailStringDataAddressAndSize(mail_no, &mail_address, &mail_size); + mHandbill_Get_MailStringDataAddressAndSize(mail_no, &mail_address, &mail_size); - if (mail_size == 0) { - mem_clear(buf, mHandbill_BODY_LEN, CHAR_NEW_LINE); + if (mail_size == 0) { + mem_clear(buf, mHandbill_BODY_LEN, CHAR_NEW_LINE); + } else if (mail_address != 0) { + u32 aligned_addr = ALIGN_PREV(mail_address, 32); // align to 32 bytes for ARAM DMA + u32 data_ofs = mail_address - aligned_addr; // calculate offset for desired data + u32 size = ALIGN_NEXT(data_ofs + mail_size, 32); + + _JW_GetResourceAram(aligned_addr, mHandbill_mail_buff, size); + + /* Move desired data to output buffer */ + { + int i; + int j; + u8* src = &mHandbill_mail_buff[data_ofs]; + u8* dst = buf; + int sz = mHandbill_BODY_LEN; + + if (mail_size < mHandbill_BODY_LEN) { + sz = mail_size; + } + + for (i = 0; i < sz; i++) { + *dst++ = *src++; + } + + /* Initialize remaining buffer to spaces */ + for (i; i < mHandbill_BODY_LEN; i++) { + *dst++ = CHAR_NEW_LINE; + } + + /* Do any control code processing */ + mHandbill_Change_ControlCode(buf, mHandbill_BODY_LEN, sz, mHandbill_FILL_RETURN); + } + } } - else if (mail_address != 0) { - u32 aligned_addr = ALIGN_PREV(mail_address, 32); // align to 32 bytes for ARAM DMA - u32 data_ofs = mail_address - aligned_addr; // calculate offset for desired data - u32 size = ALIGN_NEXT(data_ofs + mail_size, 32); - - _JW_GetResourceAram(aligned_addr, mHandbill_mail_buff, size); - - /* Move desired data to output buffer */ - { - int i; - int j; - u8* src = &mHandbill_mail_buff[data_ofs]; - u8* dst = buf; - int sz = mHandbill_BODY_LEN; - - if (mail_size < mHandbill_BODY_LEN) { - sz = mail_size; - } - - for (i = 0; i < sz; i++) { - *dst++ = *src++; - } - - /* Initialize remaining buffer to spaces */ - for (i; i < mHandbill_BODY_LEN; i++) { - *dst++ = CHAR_NEW_LINE; - } - - /* Do any control code processing */ - mHandbill_Change_ControlCode(buf, mHandbill_BODY_LEN, sz, mHandbill_FILL_RETURN); - } - } - } } extern void mHandbill_Load_HandbillFromRom(u8* header, int* header_back_start, u8* footer, u8* body, int mail_no) { - mHandbill_load_init(); - mHandbill_Load_SuperStringFromRom(header, mHandbill_HEADER_LEN, header_back_start, mail_no); - mHandbill_Load_PsStringFromRom(footer, mHandbill_FOOTER_LEN, mail_no); - mHandbill_Load_MailFromRom(body, mail_no); + mHandbill_load_init(); + mHandbill_Load_SuperStringFromRom(header, mHandbill_HEADER_LEN, header_back_start, mail_no); + mHandbill_Load_PsStringFromRom(footer, mHandbill_FOOTER_LEN, mail_no); + mHandbill_Load_MailFromRom(body, mail_no); } -extern void mHandbill_Load_HandbillFromRom2(u8* header, int header_size, int* header_back_start, u8* footer, int footer_size, u8* body, int mail_no) { - mHandbill_load_init(); - mHandbill_Load_SuperStringFromRom(header, header_size, header_back_start, mail_no); - mHandbill_Load_PsStringFromRom(footer, footer_size, mail_no); - mHandbill_Load_MailFromRom(body, mail_no); +extern void mHandbill_Load_HandbillFromRom2(u8* header, int header_size, int* header_back_start, u8* footer, + int footer_size, u8* body, int mail_no) { + mHandbill_load_init(); + mHandbill_Load_SuperStringFromRom(header, header_size, header_back_start, mail_no); + mHandbill_Load_PsStringFromRom(footer, footer_size, mail_no); + mHandbill_Load_MailFromRom(body, mail_no); } static u32 mHandbillz_table_pos[mHandbillz_TYPE_NUM]; static u32 mHandbillz_data_pos[mHandbillz_TYPE_NUM]; static u32 mHandbillz_dummy_size_tbl[mHandbillz_TYPE_NUM] = { - 27, /* SUPER */ - 200, /* MAILA */ - 200, /* MAILB*/ - 200, /* MAILC */ - 34 /* PS */ + 27, /* SUPER */ + 200, /* MAILA */ + 200, /* MAILB*/ + 200, /* MAILC */ + 34 /* PS */ }; static void mHandbillz_aram_init() { - mHandbillz_table_pos[mHandbillz_TYPE_SUPER] = JW_GetAramAddress(RESOURCE_SUPERZ_TABLE); - mHandbillz_data_pos[mHandbillz_TYPE_SUPER] = JW_GetAramAddress(RESOURCE_SUPERZ); + mHandbillz_table_pos[mHandbillz_TYPE_SUPER] = JW_GetAramAddress(RESOURCE_SUPERZ_TABLE); + mHandbillz_data_pos[mHandbillz_TYPE_SUPER] = JW_GetAramAddress(RESOURCE_SUPERZ); - mHandbillz_table_pos[mHandbillz_TYPE_MAILA] = JW_GetAramAddress(RESOURCE_MAILA_TABLE); - mHandbillz_data_pos[mHandbillz_TYPE_MAILA] = JW_GetAramAddress(RESOURCE_MAILA); + mHandbillz_table_pos[mHandbillz_TYPE_MAILA] = JW_GetAramAddress(RESOURCE_MAILA_TABLE); + mHandbillz_data_pos[mHandbillz_TYPE_MAILA] = JW_GetAramAddress(RESOURCE_MAILA); - mHandbillz_table_pos[mHandbillz_TYPE_MAILB] = JW_GetAramAddress(RESOURCE_MAILB_TABLE); - mHandbillz_data_pos[mHandbillz_TYPE_MAILB] = JW_GetAramAddress(RESOURCE_MAILB); + mHandbillz_table_pos[mHandbillz_TYPE_MAILB] = JW_GetAramAddress(RESOURCE_MAILB_TABLE); + mHandbillz_data_pos[mHandbillz_TYPE_MAILB] = JW_GetAramAddress(RESOURCE_MAILB); - mHandbillz_table_pos[mHandbillz_TYPE_MAILC] = JW_GetAramAddress(RESOURCE_MAILC_TABLE); - mHandbillz_data_pos[mHandbillz_TYPE_MAILC] = JW_GetAramAddress(RESOURCE_MAILC); + mHandbillz_table_pos[mHandbillz_TYPE_MAILC] = JW_GetAramAddress(RESOURCE_MAILC_TABLE); + mHandbillz_data_pos[mHandbillz_TYPE_MAILC] = JW_GetAramAddress(RESOURCE_MAILC); - mHandbillz_table_pos[mHandbillz_TYPE_PS] = JW_GetAramAddress(RESOURCE_PSZ_TABLE); - mHandbillz_data_pos[mHandbillz_TYPE_PS] = JW_GetAramAddress(RESOURCE_PSZ); + mHandbillz_table_pos[mHandbillz_TYPE_PS] = JW_GetAramAddress(RESOURCE_PSZ_TABLE); + mHandbillz_data_pos[mHandbillz_TYPE_PS] = JW_GetAramAddress(RESOURCE_PSZ); } typedef struct { - int type; - int num; - - u8* ram_buf; - size_t ram_buf_size; + int type; + int num; - u32 dma_addr; - u32 dma_size; + u8* ram_buf; + size_t ram_buf_size; + + u32 dma_addr; + u32 dma_size; } mHandbillzDMA_c; static int mHandbillzDMA_body_addr_set(mHandbillzDMA_c* dma_info) { - int type = dma_info->type; - int num = dma_info->num; - - mMsg_Get_BodyParam(mHandbillz_table_pos[type], mHandbillz_data_pos[type], num, &dma_info->dma_addr, &dma_info->dma_size); + int type = dma_info->type; + int num = dma_info->num; - if (dma_info->dma_size > mHandbillz_dummy_size_tbl[dma_info->type]) { - return FALSE; - } - return TRUE; + mMsg_Get_BodyParam(mHandbillz_table_pos[type], mHandbillz_data_pos[type], num, &dma_info->dma_addr, + &dma_info->dma_size); + + if (dma_info->dma_size > mHandbillz_dummy_size_tbl[dma_info->type]) { + return FALSE; + } + return TRUE; } static int mHandbillzDMA_body_load(mHandbillzDMA_c* dma_info) { - if (mHandbillzDMA_body_addr_set(dma_info)) { - mem_clear(dma_info->ram_buf, dma_info->ram_buf_size, CHAR_SPACE); + if (mHandbillzDMA_body_addr_set(dma_info)) { + mem_clear(dma_info->ram_buf, dma_info->ram_buf_size, CHAR_SPACE); - if (dma_info->dma_size != 0) { - u32 dma_size = dma_info->dma_size; - u32 aligned_addr = ALIGN_PREV(dma_info->dma_addr, 32); - u32 data_ofs = dma_info->dma_addr & (32-1); - u32 size = ALIGN_NEXT(dma_size + data_ofs, 32); + if (dma_info->dma_size != 0) { + u32 dma_size = dma_info->dma_size; + u32 aligned_addr = ALIGN_PREV(dma_info->dma_addr, 32); + u32 data_ofs = dma_info->dma_addr & (32 - 1); + u32 size = ALIGN_NEXT(dma_size + data_ofs, 32); - _JW_GetResourceAram(aligned_addr, dma_info->ram_buf, size); + _JW_GetResourceAram(aligned_addr, dma_info->ram_buf, size); - if (data_ofs != 0) { - u8* src; - u8* dst; - int size; - int i; + if (data_ofs != 0) { + u8* src; + u8* dst; + int size; + int i; - dst = dma_info->ram_buf; - src = dst + data_ofs; - size = dma_info->dma_size; + dst = dma_info->ram_buf; + src = dst + data_ofs; + size = dma_info->dma_size; - for (i = 0; i < size; i++) { - u8 b = *src; - src++; - *dst = b; - dst++; + for (i = 0; i < size; i++) { + u8 b = *src; + src++; + *dst = b; + dst++; + } + } } - } - } - return TRUE; - } - else { - return FALSE; - } + return TRUE; + } else { + return FALSE; + } } static int mHandbillz_super_load(mHandbillz_Info_c* info) { - static u8 ram[90] ATTRIBUTE_ALIGN(32); - mHandbillzDMA_c dma_info; + static u8 ram[90] ATTRIBUTE_ALIGN(32); + mHandbillzDMA_c dma_info; - bzero(ram, 90); + bzero(ram, 90); - dma_info.type = mHandbillz_TYPE_SUPER; - dma_info.num = info->super_no; - dma_info.ram_buf = ram; - dma_info.ram_buf_size = 90; + dma_info.type = mHandbillz_TYPE_SUPER; + dma_info.num = info->super_no; + dma_info.ram_buf = ram; + dma_info.ram_buf_size = 90; - if (mHandbillzDMA_body_load(&dma_info)) { - u8 super_buf[43]; - int header_back_start; + if (mHandbillzDMA_body_load(&dma_info)) { + u8 super_buf[43]; + int header_back_start; - mem_clear(super_buf, 43, CHAR_SPACE); - mHandbill_CheckSuperStringBorderAndCopy(super_buf, 43, &header_back_start, ram, dma_info.dma_size); - mHandbill_Change_ControlCode2(super_buf, 43, dma_info.dma_size - 1, &header_back_start, mHandbill_FILL_SPACE); - mem_clear(info->super_buf_p, info->super_buf_size, CHAR_SPACE); - bcopy(super_buf, info->super_buf_p, info->super_buf_size < 43 ? info->super_buf_size : 43); + mem_clear(super_buf, 43, CHAR_SPACE); + mHandbill_CheckSuperStringBorderAndCopy(super_buf, 43, &header_back_start, ram, dma_info.dma_size); + mHandbill_Change_ControlCode2(super_buf, 43, dma_info.dma_size - 1, &header_back_start, mHandbill_FILL_SPACE); + mem_clear(info->super_buf_p, info->super_buf_size, CHAR_SPACE); + bcopy(super_buf, info->super_buf_p, info->super_buf_size < 43 ? info->super_buf_size : 43); - info->header_back_start = header_back_start; - return TRUE; - } - else { - return FALSE; - } + info->header_back_start = header_back_start; + return TRUE; + } else { + return FALSE; + } } static int mHandbillz_mail_load(mHandbillz_Info_c* info) { - mHandbillzDMA_c dma_info[3]; - mHandbillzDMA_c* dma_p; - int i; - int success = TRUE; - u32 total_size = 0; - u8* dst = info->mail_buf_p; + mHandbillzDMA_c dma_info[3]; + mHandbillzDMA_c* dma_p; + int i; + int success = TRUE; + u32 total_size = 0; + u8* dst = info->mail_buf_p; - dma_info[0].type = mHandbillz_TYPE_MAILA; - dma_info[0].num = info->maila_no; - dma_info[1].type = mHandbillz_TYPE_MAILB; - dma_info[1].num = info->mailb_no; - dma_info[2].type = mHandbillz_TYPE_MAILC; - dma_info[2].num = info->mailc_no; + dma_info[0].type = mHandbillz_TYPE_MAILA; + dma_info[0].num = info->maila_no; + dma_info[1].type = mHandbillz_TYPE_MAILB; + dma_info[1].num = info->mailb_no; + dma_info[2].type = mHandbillz_TYPE_MAILC; + dma_info[2].num = info->mailc_no; - dma_p = dma_info; - for (i = 0; i < 3 && success; i++, dma_p++) { - bzero(mHandbill_mail_buff, 263); - dma_p->ram_buf = mHandbill_mail_buff; - dma_p->ram_buf_size = 263; + dma_p = dma_info; + for (i = 0; i < 3 && success; i++, dma_p++) { + bzero(mHandbill_mail_buff, 263); + dma_p->ram_buf = mHandbill_mail_buff; + dma_p->ram_buf_size = 263; - if (mHandbillzDMA_body_load(dma_p)) { - total_size += dma_p->dma_size; + if (mHandbillzDMA_body_load(dma_p)) { + total_size += dma_p->dma_size; - if (total_size <= info->mail_buf_size) { - bcopy(mHandbill_mail_buff, dst, dma_p->dma_size); - dst += dma_p->dma_size; - } - else { - success = FALSE; - } - } - else { - success = FALSE; - } - } - - if (success) { - if (info->mail_buf_size > total_size) { - mem_clear(dst, info->mail_buf_size - total_size, CHAR_NEW_LINE); + if (total_size <= info->mail_buf_size) { + bcopy(mHandbill_mail_buff, dst, dma_p->dma_size); + dst += dma_p->dma_size; + } else { + success = FALSE; + } + } else { + success = FALSE; + } } - mHandbill_Change_ControlCode(info->mail_buf_p, info->mail_buf_size, total_size, mHandbill_FILL_RETURN); - } + if (success) { + if (info->mail_buf_size > total_size) { + mem_clear(dst, info->mail_buf_size - total_size, CHAR_NEW_LINE); + } - return success; + mHandbill_Change_ControlCode(info->mail_buf_p, info->mail_buf_size, total_size, mHandbill_FILL_RETURN); + } + + return success; } static int mHandbillz_ps_load(mHandbillz_Info_c* info) { - static u8 ram[97] ATTRIBUTE_ALIGN(32); - mHandbillzDMA_c dma_info; + static u8 ram[97] ATTRIBUTE_ALIGN(32); + mHandbillzDMA_c dma_info; - bzero(ram, 97); + bzero(ram, 97); - dma_info.type = mHandbillz_TYPE_PS; - dma_info.num = info->ps_no; - dma_info.ram_buf = ram; - dma_info.ram_buf_size = 97; + dma_info.type = mHandbillz_TYPE_PS; + dma_info.num = info->ps_no; + dma_info.ram_buf = ram; + dma_info.ram_buf_size = 97; - if (mHandbillzDMA_body_load(&dma_info)) { - u8 ps_buf[43]; + if (mHandbillzDMA_body_load(&dma_info)) { + u8 ps_buf[43]; - bcopy(ram, info->ps_buf_p, dma_info.dma_size); + bcopy(ram, info->ps_buf_p, dma_info.dma_size); - if (info->ps_buf_size > dma_info.dma_size) { - mem_clear(info->ps_buf_p + dma_info.dma_size, info->ps_buf_size - dma_info.dma_size, CHAR_SPACE); + if (info->ps_buf_size > dma_info.dma_size) { + mem_clear(info->ps_buf_p + dma_info.dma_size, info->ps_buf_size - dma_info.dma_size, CHAR_SPACE); + } + + mHandbill_Change_ControlCode(info->ps_buf_p, info->ps_buf_size, dma_info.dma_size, mHandbill_FILL_SPACE); + return TRUE; + } else { + return FALSE; } - - mHandbill_Change_ControlCode(info->ps_buf_p, info->ps_buf_size, dma_info.dma_size, mHandbill_FILL_SPACE); - return TRUE; - } - else { - return FALSE; - } } extern int mHandbillz_load(mHandbillz_Info_c* info) { - int super_res; - int mail_res; - int ps_res; - int res; + int super_res; + int mail_res; + int ps_res; + int res; - mHandbill_load_init(); + mHandbill_load_init(); - super_res = mHandbillz_super_load(info); - mail_res = mHandbillz_mail_load(info); - ps_res = mHandbillz_ps_load(info); - res = FALSE; + super_res = mHandbillz_super_load(info); + mail_res = mHandbillz_mail_load(info); + ps_res = mHandbillz_ps_load(info); + res = FALSE; - if (super_res && mail_res && ps_res) { - res = TRUE; - } + if (super_res && mail_res && ps_res) { + res = TRUE; + } - return res; + return res; } From 23fe156f6b869d9bf5d8e007138a91a638918d2c Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Wed, 4 Sep 2024 06:20:41 -0400 Subject: [PATCH 170/234] Miscellaneous Docker fixes (#412) * Skip compiler download if user has them already (Docker Windows) * Use Expand-Archive instead of tar to extract zip on Windows * Return to using latest wibo in Dockerfile * Switch wibo to latest version in guide also improve formatting a bit * Skip compiler download if user has them already (Docker Mac/Linux) * Slightly optimize error handling * Make docker upgrade packages on build * add compiler readmes to .gitignore * add compiler folders to .gitignore this is better than just the readmes just in case anything inside the zip changes in the future * Fix newline * Re-add command that was deleted by accident --- .gitignore | 3 +++ Dockerfile | 3 ++- README.MD | 10 ++++++---- docker-setup.bat | 27 +++++++++++++++++++-------- docker-setup.sh | 13 ++++++++++--- 5 files changed, 40 insertions(+), 16 deletions(-) diff --git a/.gitignore b/.gitignore index 67f29a61..983c8cb2 100644 --- a/.gitignore +++ b/.gitignore @@ -25,3 +25,6 @@ src/data/bin2 objdiff.json src/data/item/player_room_floor src/data/item/player_room_wall +tools/1.2.5n/ +tools/1.3.2r/ +tools/1.3.2/ diff --git a/Dockerfile b/Dockerfile index fbe6b183..5af98097 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,6 +2,7 @@ FROM ubuntu:24.04 as build # --- basic package installation --- RUN apt-get update && \ + apt-get upgrade -y && \ apt-get install -y \ git \ ninja-build \ @@ -17,7 +18,7 @@ RUN pip install --break-system-packages -r /temp/requirements.txt RUN rm -rf /temp # --- wibo installation --- -RUN wget https://github.com/decompals/wibo/releases/download/0.6.13/wibo +RUN wget https://github.com/decompals/wibo/releases/latest/download/wibo RUN install ./wibo /usr/bin RUN rm wibo diff --git a/README.MD b/README.MD index 299986bf..f62b3619 100644 --- a/README.MD +++ b/README.MD @@ -14,7 +14,8 @@ Use `--recursive` when cloning to have ppcdis in the repository. ## Building -> ℹ️ On Windows, the build is known to run disproportionately slow when ran natively, so we recommend using WSL. +> [!NOTE] +> On Windows, the build is known to run disproportionately slow when ran natively, so we recommend using WSL. ### Docker @@ -27,16 +28,17 @@ Use `--recursive` when cloning to have ppcdis in the repository. ### Build manually -> ℹ️ When building manually from a work directory previously used for Docker, you will need to run `sudo ninja -t clean` for the build to execute properly. +> [!TIP] +> When building manually from a work directory previously used for Docker, you will need to run `sudo ninja -t clean` for the build to execute properly. 1. [Dump a copy of the game](./docs/extract_game.md) and extract all files. 2. Place **main.dol**, **foresta.rel.szs**, **forest_1st.arc**, and **forest_2nd.arc** in *dump/*. 3. Download the [CodeWarrior 1.3.2, 1.3.2r, and 1.2.5n compilers](https://files.decomp.dev/compilers_latest.zip) and extract them to *tools/1.3.2/*, *tools/1.3.2r/*, and *tools/1.2.5n/*, respectively. 4. Install Python, pip, and [ninja](https://github.com/ninja-build/ninja/wiki/Pre-built-Ninja-packages#package-managers) using your package manager of choice. 5. Install Python modules from requirements.txt (`pip install -r requirements.txt`). -6. Install version 0.6.13 of [wibo](https://github.com/decompals/wibo) +6. Install [wibo](https://github.com/decompals/wibo) - Wibo is a lightweight Wine replacement that's tailor-made for use with decomp projects. Regular Wine can be used if preferred, but for the purposes of this guide, these instructions will use wibo. - - Download the [GitHub release of version 0.6.13](https://github.com/decompals/wibo/releases/tag/0.6.13) and run `install ./wibo /usr/bin` to install it to your system. + - Download the [the latest GitHub release](https://github.com/decompals/wibo/releases/latest) and run `install ./wibo /usr/bin` to install it to your system. 7. Install devkitPPC. - To get devkitPPC, you'll need [devkitPro Pacman](https://devkitpro.org/wiki/devkitPro_pacman#Installing_devkitPro_Pacman). - Run `dkp-pacman -S devkitPPC` once dkp-pacman is installed to install devkitPPC. diff --git a/docker-setup.bat b/docker-setup.bat index e4c09736..ede1c919 100644 --- a/docker-setup.bat +++ b/docker-setup.bat @@ -1,15 +1,26 @@ @echo off echo "Please ensure Docker Desktop is running before continuing." pause -curl -O https://files.decomp.dev/compilers_latest.zip -mkdir compilers_temp -tar -xf compilers_latest.zip -C compilers_temp -xcopy compilers_temp\GC\1.2.5n\ tools\1.2.5n\ /E /I -xcopy compilers_temp\GC\1.3.2\ tools\1.3.2\ /E /I -xcopy compilers_temp\GC\1.3.2r\ tools\1.3.2r\ /E /I -del compilers_latest.zip -rmdir /S /Q compilers_temp\ +:: Check if the compilers are present. If any one compiler doesn't exist, the download process will be initiated. +IF exist tools\1.2.5n\ ( echo 1.2.5n exists ) ELSE ( goto compilers ) +IF exist tools\1.3.2\ ( echo 1.3.2 exists ) ELSE ( goto compilers ) +IF exist tools\1.3.2r\ ( echo 1.3.2r exists ) ELSE ( goto compilers ) +goto buildimage + +:buildimage docker build -t ac-decomp . echo "Docker image setup is now complete. You may proceed with the instructions." pause exit + +:compilers +curl -O https://files.decomp.dev/compilers_latest.zip +mkdir compilers_temp +powershell -command "Expand-Archive -LiteralPath 'compilers_latest.zip' -DestinationPath compilers_temp" +:: Only copy compilers that the user doesn't already have. +IF exist tools\1.2.5n\ ( echo 1.2.5n already exists, skipping copy ) ELSE ( xcopy compilers_temp\GC\1.2.5n\ tools\1.2.5n\ /E /I ) +IF exist tools\1.3.2\ ( echo 1.3.2 already exists, skipping copy ) ELSE ( xcopy compilers_temp\GC\1.3.2\ tools\1.3.2\ /E /I ) +IF exist tools\1.3.2r\ ( echo 1.3.2r already exists, skipping copy ) ELSE ( xcopy compilers_temp\GC\1.3.2r\ tools\1.3.2r\ /E /I ) +del compilers_latest.zip +rmdir /S /Q compilers_temp\ +goto buildimage diff --git a/docker-setup.sh b/docker-setup.sh index 65453b80..d30b10a3 100644 --- a/docker-setup.sh +++ b/docker-setup.sh @@ -1,5 +1,11 @@ echo "Please ensure Docker is installed before continuing." read -p "Press Enter to continue or CTRL-C to exit." +if [ -d "tools/1.2.5n" ]; then echo "1.2.5n exists" && export one_two_five_n_exist=1; fi +if [ -d "tools/1.3.2" ]; then echo "1.3.2 exists" && export one_three_two_exist=1; fi +if [ -d "tools/1.3.2r" ]; then echo "1.3.2r exists" && export one_three_two_r_exist=1; fi +if [ "$one_two_five_n_exist" -eq 1 ] && [ "$one_three_two_exist" -eq 1 ] && [ "$one_three_two_r_exist" -eq 1 ]; then docker build -t ac-decomp . && echo "Docker image setup is now complete. You may proceed with the instructions." && exit; fi + + if command -v curl &> /dev/null; then curl -O https://files.decomp.dev/compilers_latest.zip elif command -v wget &> /dev/null; then @@ -14,11 +20,12 @@ if command -v unzip &> /dev/null; then unzip compilers_latest.zip -d compilers_temp else echo "You do not seem to have unzip installed on this system. Please install it to continue." - rm compilers_latest.zip - rm -r compilers_temp + rm -r compilers_temp compilers_latest.zip exit 1 fi -mv compilers_temp/GC/1.2.5n/ tools/ && mv compilers_temp/GC/1.3.2/ tools/ && mv compilers_temp/GC/1.3.2r/ tools/ +if [ ! -d "tools/1.2.5n" ]; then mv compilers_temp/GC/1.2.5n/ tools/; fi +if [ ! -d "tools/1.3.2" ]; then mv compilers_temp/GC/1.3.2/ tools/; fi +if [ ! -d "tools/1.3.2r" ]; then mv compilers_temp/GC/1.3.2r/ tools/; fi rm -r compilers_temp compilers_latest.zip docker build -t ac-decomp . echo "Docker image setup is now complete. You may proceed with the instructions." From 074e0a003da572a19331f2b3902da45bfcf81048 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Wed, 4 Sep 2024 22:01:09 +0200 Subject: [PATCH 171/234] match m_player_main_wade_snowball --- include/m_player.h | 64 ++++++++++- src/m_player.c | 2 +- src/m_player_common.c_inc | 2 +- src/m_player_main_dash.c_inc | 2 +- src/m_player_main_putin_item.c_inc | 2 +- src/m_player_main_return_outdoor.c_inc | 6 +- src/m_player_main_run.c_inc | 2 +- src/m_player_main_takeout_item.c_inc | 2 +- src/m_player_main_tumble.c_inc | 2 +- src/m_player_main_wade_snowball.c_inc | 143 +++++++++++++++++++++++++ src/m_player_main_walk.c_inc | 2 +- 11 files changed, 216 insertions(+), 13 deletions(-) diff --git a/include/m_player.h b/include/m_player.h index 7a5f62ff..90a2aead 100644 --- a/include/m_player.h +++ b/include/m_player.h @@ -811,12 +811,13 @@ typedef struct player_request_close_funriture_s { } mPlayer_request_close_furniture_c; typedef struct player_request_lie_bed_s { - int direct; + int direction; s16 angle; xyz_t wpos; - int ftr_name; + int flags; } mPlayer_request_lie_bed_c; + typedef struct player_request_door_s { s16 angle_y; xyz_t player_pos; @@ -976,6 +977,12 @@ typedef struct player_request_rotate_furniture_s { int rotate_type; } mPlayer_request_rotate_furniture_c; +typedef struct player_request_open_furniture_s { + s16 angle_y; + xyz_t player_pos; + int anim_idx; +} mPlayer_request_open_furniture_c; + typedef struct player_request_wait_open_furniture_s { int anim_idx; } mPlayer_request_wait_open_furniture_c; @@ -1288,6 +1295,7 @@ typedef union { mPlayer_request_push_c push; mPlayer_request_pull_c pull; mPlayer_request_rotate_furniture_c rotate_furniture; + mPlayer_request_open_furniture_c open_furniture; mPlayer_request_wait_open_furniture_c wait_open_furniture; mPlayer_request_wait_close_furniture_c wait_close_furniture; mPlayer_request_roll_bed_c roll_bed; @@ -1392,6 +1400,7 @@ typedef union { mPlayer_request_push_c push; mPlayer_request_pull_c pull; mPlayer_request_rotate_furniture_c rotate_furniture; + mPlayer_request_open_furniture_c open_furniture; mPlayer_request_wait_open_furniture_c wait_open_furniture; mPlayer_request_wait_close_furniture_c wait_close_furniture; mPlayer_request_roll_bed_c roll_bed; @@ -1468,6 +1477,49 @@ typedef struct player_main_door_s { u32 label; } mPlayer_main_door_c; +typedef struct player_main_outdoor_s { + int is_demo; +} mPlayer_main_outdoor_c; + +typedef struct player_main_hold_s { + int ftr_no; + s16 angle_y; + xyz_t player_pos; + int flags; +} mPlayer_main_hold_c; + +typedef struct player_main_push_s { + int ftr_no; +} mPlayer_main_push_c; + +typedef struct player_main_pull_s { + int ftr_no; + xyz_t start_pos; + xyz_t ofs; + f32 timer; +} mPlayer_main_pull_c; + +typedef struct player_main_rotate_furniture_s { + int ftr_no; + xyz_t pos; + int _10; + int rotate_type; +} mPlayer_main_rotate_furniture_c; + +typedef struct player_main_open_furniture_s { + s16 angle_y; + xyz_t player_pos; + int anim_idx; +} mPlayer_main_open_furniture_c; + +typedef struct player_main_lie_bed_s { + int flags; +} mPlayer_main_lie_bed_c; + +typedef struct player_main_wait_bed_s { + int flags; +} mPlayer_main_wait_bed_c; + typedef struct player_main_wade_s { int dir; xyz_t start_pos; @@ -1739,6 +1791,14 @@ typedef union { mPlayer_main_return_outdoor2_c return_outdoor2; mPlayer_main_wait_c wait; mPlayer_main_door_c door; + mPlayer_main_outdoor_c outdoor; + mPlayer_main_hold_c hold; + mPlayer_main_push_c push; + mPlayer_main_pull_c pull; + mPlayer_main_rotate_furniture_c rotate_furniture; + mPlayer_main_open_furniture_c open_furniture; + mPlayer_main_lie_bed_c lie_bed; + mPlayer_main_wait_bed_c wait_bed; mPlayer_main_wade_c wade; mPlayer_main_pickup_c pickup; mPlayer_main_pickup_jump_c pickup_jump; diff --git a/src/m_player.c b/src/m_player.c index ce2df543..08c6527b 100644 --- a/src/m_player.c +++ b/src/m_player.c @@ -33,7 +33,7 @@ static int Player_actor_Movement_Base_Braking_common(ACTOR* actorx, f32 brake_am static int Player_actor_Movement_Base_Braking(ACTOR* actorx); static void Player_actor_Movement_Base_Stop(ACTOR* actorx, int use_position_speed_y); static int Player_actor_CulcAnimation_Base2(ACTOR* actorx, f32* last_anim0_current_frame_p); -static int Player_actor_Check_AnimationFrame_PerfectEquel(ACTOR* actorx, GAME* game, f32 frame); +static int Player_actor_Check_AnimationFrame_PerfectEquel(ACTOR* actorx, f32 frame); static int Player_actor_Check_AnimationFrame(cKF_FrameControl_c* fc_p, f32 target_frame); static void Player_actor_set_eye_pattern(ACTOR* actorx, int idx); static void Player_actor_set_eye_pattern_normal(ACTOR* actorx); diff --git a/src/m_player_common.c_inc b/src/m_player_common.c_inc index a9858861..24e4b710 100644 --- a/src/m_player_common.c_inc +++ b/src/m_player_common.c_inc @@ -2299,7 +2299,7 @@ static void Player_actor_putin_furniture(GAME* game, int slot, mActor_name_t ite } } -static int Player_actor_Check_AnimationFrame_PerfectEquel(ACTOR* actorx, GAME* game, f32 frame) { +static int Player_actor_Check_AnimationFrame_PerfectEquel(ACTOR* actorx, f32 frame) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; cKF_FrameControl_c* fc_p = &kf0_p->frame_control; diff --git a/src/m_player_main_dash.c_inc b/src/m_player_main_dash.c_inc index 746f0a54..263f11bf 100644 --- a/src/m_player_main_dash.c_inc +++ b/src/m_player_main_dash.c_inc @@ -90,7 +90,7 @@ static void Player_actor_SetEffect_Dash(ACTOR* actor, GAME* game, f32 left_targe } static void Player_actor_SearchAnimation_Dash(ACTOR* actor, GAME* game, f32 frame) { - if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, game, frame)) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { Player_actor_Set_FootMark_Base1(actor, game, FALSE, FALSE); Player_actor_SetEffect_Dash(actor, game, 1.0f, 9.0f); } diff --git a/src/m_player_main_putin_item.c_inc b/src/m_player_main_putin_item.c_inc index 647b6100..e2f6fba7 100644 --- a/src/m_player_main_putin_item.c_inc +++ b/src/m_player_main_putin_item.c_inc @@ -89,7 +89,7 @@ static void Player_actor_SetItemScale_Putin_item(ACTOR* actorx) { } static void Player_actor_SearchAnimation_Putin_item(ACTOR* actorx, GAME* game, f32 frame) { - if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, game, frame) == FALSE) { + if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE) { Player_actor_Set_FootMark_Base1(actorx, game, FALSE, FALSE); } } diff --git a/src/m_player_main_return_outdoor.c_inc b/src/m_player_main_return_outdoor.c_inc index f6dcc439..b997613f 100644 --- a/src/m_player_main_return_outdoor.c_inc +++ b/src/m_player_main_return_outdoor.c_inc @@ -1,13 +1,13 @@ -static int Player_actor_request_main_return_outdoor_all(GAME* game, int prev_index, int now_index, f32 time, f32 arg5) { +static int Player_actor_request_main_return_outdoor_all(GAME* game, int prev_index, int priority, f32 time, f32 arg5) { - if (Player_actor_check_request_main_able(game, mPlayer_INDEX_RETURN_OUTDOOR, now_index)) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_RETURN_OUTDOOR, priority)) { PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); player->requested_main_index_data.return_outdoor.prev_main_index = prev_index; player->requested_main_index_data.return_outdoor.time = time; player->requested_main_index_data.return_outdoor._08 = arg5; - Player_actor_request_main_index(game, mPlayer_INDEX_RETURN_OUTDOOR, now_index); + Player_actor_request_main_index(game, mPlayer_INDEX_RETURN_OUTDOOR, priority); return TRUE; } else { return FALSE; diff --git a/src/m_player_main_run.c_inc b/src/m_player_main_run.c_inc index ca652cc8..2ba4580a 100644 --- a/src/m_player_main_run.c_inc +++ b/src/m_player_main_run.c_inc @@ -47,7 +47,7 @@ static void Player_actor_SetEffect_Run(ACTOR* actor, GAME* game, f32 left_target } static void Player_actor_SearchAnimation_Run(ACTOR* actor, GAME* game, f32 frame) { - if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, game, frame)) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { Player_actor_Set_FootMark_Base1(actor, game, FALSE, FALSE); Player_actor_SetEffect_Walk(actor, game, 1.0f, 9.0f); } diff --git a/src/m_player_main_takeout_item.c_inc b/src/m_player_main_takeout_item.c_inc index bc74782c..e0cad276 100644 --- a/src/m_player_main_takeout_item.c_inc +++ b/src/m_player_main_takeout_item.c_inc @@ -63,7 +63,7 @@ static void Player_actor_ObjCheck_Takeout_item(ACTOR* actorx, GAME* game) { } static void Player_actor_SearchAnimation_Takeout_item(ACTOR* actorx, GAME* game, f32 frame) { - if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, game, frame) == FALSE) { + if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE) { Player_actor_Set_FootMark_Base1(actorx, game, FALSE, FALSE); } } diff --git a/src/m_player_main_tumble.c_inc b/src/m_player_main_tumble.c_inc index f61126f0..321aa830 100644 --- a/src/m_player_main_tumble.c_inc +++ b/src/m_player_main_tumble.c_inc @@ -114,7 +114,7 @@ static void Player_actor_SetEffect_Tumble(ACTOR* actor, GAME* game, int base) { } static void Player_actor_SearchAnimation_Tumble(ACTOR* actor, GAME* game, f32 frame, int base) { - if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, game, frame)) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { Player_actor_SetEffect_Tumble(actor, game, base); } } diff --git a/src/m_player_main_wade_snowball.c_inc b/src/m_player_main_wade_snowball.c_inc index e69de29b..51c99e2f 100644 --- a/src/m_player_main_wade_snowball.c_inc +++ b/src/m_player_main_wade_snowball.c_inc @@ -0,0 +1,143 @@ +static int Player_actor_request_main_wade_snowball_all(GAME* game, int dir, xyz_t snowball_dist, int priority) { + if (GET_PLAYER_ACTOR_GAME(game)->now_main_index == mPlayer_INDEX_PUSH_SNOWBALL) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_WADE_SNOWBALL, priority)) { + player->requested_main_index_data.wade_snowball.dir = dir; + player->requested_main_index_data.wade_snowball.snowball_dist = snowball_dist; + player->requested_main_index_data.wade_snowball.label = player->main_data.push_snowball.label; + + Player_actor_request_main_index(game, mPlayer_INDEX_WADE_SNOWBALL, priority); + + return TRUE; + } + } + + return FALSE; +} + +static void Player_actor_setup_main_Wade_snowball(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + GAME_PLAY* play = (GAME_PLAY*)game; + xyz_t* world_pos; + xyz_t camera_pos; + int dir; + f32 t; + xyz_t* end_pos; + + Player_actor_setup_main_Wade_snowball_other_func1(actor, game); + dir = player->requested_main_index_data.wade_snowball.dir; + + player->main_data.wade_snowball.dir = dir; + world_pos = &actor->world.position; + end_pos = &player->main_data.wade_snowball.end_pos; + + player->main_data.wade_snowball.start_pos = *world_pos; + player->main_data.wade_snowball.start_pos = *world_pos; + + Player_actor_Culc_wade_end_pos(world_pos, end_pos, dir, 18.0f); + + player->main_data.wade_snowball.timer = 0.0f; + + player->main_data.wade_snowball.snowball_dist = player->requested_main_index_data.wade_snowball.snowball_dist; + player->main_data.wade_snowball.snowball_label = player->requested_main_index_data.wade_snowball.label; + + Player_actor_setup_main_Base(actor, game); + camera_pos = player->main_data.wade_snowball.end_pos; + + camera_pos.y += actor->eye.position.y - world_pos->y; + + Camera2_request_main_wade(play, &camera_pos, 9, 36.0f); + + Player_actor_setup_main_Wade_snowball_other_func2(actor, game); +} + +static void Player_actor_settle_main_Wade_snowball(ACTOR* actor, GAME* game) { + mDemo_End(actor); +} + +static void Player_actor_ChangeAnimation_Wade_snowball(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (player->animation0_idx != mPlayer_ANIM_WAIT1 && player->crash_snowball_for_wade != FALSE) { + int anim_idx; + int part_table_idx; + Player_actor_SetupItem_Base1(actor, mPlayer_ANIM_WAIT1, -5.0f, &anim_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_WAIT1, anim_idx, 1.0f, 1.0f, 0.5f, -5.0f, + part_table_idx); + } +} + +static int Player_actor_CulcAnimation_Wade_snowball(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (player->animation0_idx == mPlayer_ANIM_WAIT1) { + f32 calc_frame; + return Player_actor_CulcAnimation_Base2(actor, &calc_frame); + } else { + return 0; + } +} + +static void Player_actor_Movement_Wade_snowball(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_wade_snowball_c* main_wade_snowball_p = &player->main_data.wade_snowball; + xyz_t* start_pos; + xyz_t* end_pos; + f32 brake; + + start_pos = &main_wade_snowball_p->start_pos; + end_pos = &main_wade_snowball_p->end_pos; + + brake = get_percent_forAccelBrake(player->main_data.wade_snowball.timer, 0.0f, 36.0f, 1.20f, 34.8f); + actor->world.position.x = start_pos->x + (brake * (end_pos->x - start_pos->x)); + actor->world.position.y = start_pos->y + (brake * (end_pos->y - start_pos->y)); + actor->world.position.z = start_pos->z + (brake * (end_pos->z - start_pos->z)); + + Player_actor_Movement_Base_Stop(actor, FALSE); +} + +static void Player_actor_BGcheck_Wade_snowball(ACTOR* actor) { + Player_actor_BGcheck_common_type2(actor); +} + +static int Player_actor_able_request_proc_index_fromWade_snowball_common(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (player->main_data.wade_snowball.timer > 36.0f) { + return TRUE; + } else { + player->main_data.wade_snowball.timer += 1.0f; + return FALSE; + } +} + +static void Player_actor_request_proc_index_fromWade_snowball(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (Player_actor_able_request_proc_index_fromWade_snowball_common(actor)) { + int anim_idx = player->animation0_idx; + Player_actor_SettleRequestMainIndexPriority(actor); + + if (anim_idx != mPlayer_ANIM_WAIT1 && player->crash_snowball_for_wade == FALSE) { + Player_actor_request_main_push_snowball_all(game, player->main_data.wade_snowball.snowball_label, 1, + mPlayer_REQUEST_PRIORITY_2); + } else { + Player_actor_request_main_walk_all(game, &player->main_data.wade_snowball.end_pos, -5.0f, 6, 1); + } + } +} + +static void Player_actor_main_Wade_snowball(ACTOR* actor, GAME* game) { + if (Player_actor_Request_Wade(actor) != FALSE) { + Player_actor_main_Wade_snowball_other_func1(actor, game); + Player_actor_Movement_Wade_snowball(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_ChangeAnimation_Wade_snowball(actor, game); + Player_actor_CulcAnimation_Wade_snowball(actor); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_BGcheck_Wade_snowball(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromWade_snowball(actor, game); + } +} diff --git a/src/m_player_main_walk.c_inc b/src/m_player_main_walk.c_inc index 97f90140..84a3e578 100644 --- a/src/m_player_main_walk.c_inc +++ b/src/m_player_main_walk.c_inc @@ -122,7 +122,7 @@ static void Player_actor_SetEffect_Walk(ACTOR* actor, GAME* game, f32 left_targe } static void Player_actor_SearchAnimation_Walk(ACTOR* actor, GAME* game, f32 frame) { - if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, game, frame)) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { Player_actor_Set_FootMark_Base1(actor, game, FALSE, FALSE); Player_actor_SetEffect_Walk(actor, game, 1.0f, 9.0f); } From 97f05f655ae1bb7d71e8345281bda60c11ef3e23 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Wed, 4 Sep 2024 22:04:35 +0200 Subject: [PATCH 172/234] match m_player_main_outdoor --- src/m_player_main_outdoor.c_inc | 104 ++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) diff --git a/src/m_player_main_outdoor.c_inc b/src/m_player_main_outdoor.c_inc index e69de29b..912e211e 100644 --- a/src/m_player_main_outdoor.c_inc +++ b/src/m_player_main_outdoor.c_inc @@ -0,0 +1,104 @@ +static int Player_actor_request_main_outdoor(GAME* game, int type, int is_start_demo, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_OUTDOOR, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + player->requested_main_index_data.outdoor.type = type; + player->requested_main_index_data.outdoor.is_start_demo = is_start_demo; + + Player_actor_request_main_index(game, mPlayer_INDEX_OUTDOOR, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Outdoor(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int anim_idx; + f32 anim_frame; + int type = player->requested_main_index_data.outdoor.type; + int demo = player->requested_main_index_data.outdoor.is_start_demo; + + player->main_data.outdoor.is_demo = FALSE; + + if (!demo) { + anim_idx = mPlayer_ANIM_GO_OUT_O1; + if (type != 0) { + anim_frame = 1.0f; + } else { + anim_frame = 25.0f; + } + } else { + anim_idx = mPlayer_ANIM_GO_OUT_S1; + anim_frame = 1.0f; + } + + Player_actor_InitAnimation_Base2(actor, game, anim_idx, anim_idx, anim_frame, anim_frame, 0.5f, 0.0f, 0, 0); + Player_actor_setup_main_Base(actor, game); +} + +void Player_actor_settle_main_Outdoor(ACTOR* actor, GAME* game) { + mDemo_End(actor); +} + +int Player_actor_CulcAnimation_Outdoor(ACTOR* actor, f32* calc_frame) { + return Player_actor_CulcAnimation_Base2(actor, calc_frame); +} + +int Player_actor_Movement_Outdoor(ACTOR* actor, int calc) { + Player_actor_Set_force_shadow_position_fromAnimePosition(actor); + Player_actor_Movement_Base_Stop(actor, FALSE); + return calc; +} + +void Player_actor_ObjCheck_Outdoor(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forOutdoor(actor, game); +} + +void Player_actor_request_proc_index_fromOutdoor(GAME* game, int arg1) { + if (arg1 != 0) { + if (Common_Get(complete_payment_type) != 0) { + Player_actor_request_main_complete_payment(game, mPlayer_REQUEST_PRIORITY_44); + } else { + Player_actor_request_main_return_outdoor_all(game, mPlayer_INDEX_WAIT, mPlayer_REQUEST_PRIORITY_45, 3.0f, + 0.0f); + } + } +} + +void Player_actor_Demo_Outdoor_Demo_ct(ACTOR* actor) { + +} + +int Player_actor_Request_Demo_Outdoor(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (player->main_data.outdoor.is_demo == FALSE) { + if (mDemo_Check(mDemo_TYPE_OUTDOOR, actor)) { + player->main_data.outdoor.is_demo = TRUE; + return 0; + } else { + mDemo_Request(mDemo_TYPE_OUTDOOR, actor, Player_actor_Demo_Outdoor_Demo_ct); + return 0; + } + } + + return 1; +} + +void Player_actor_main_Outdoor(ACTOR* actor, GAME* game) { + int arg1; + f32 frame_calc; + + if (Player_actor_Request_Demo_Outdoor(actor)) { + int calc = Player_actor_CulcAnimation_Outdoor(actor, &frame_calc); + arg1 = Player_actor_Movement_Outdoor(actor, calc); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Outdoor(actor, game); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromOutdoor(game, arg1); + } +} From f26cd5fa65591dd69e920afd40c7a8cd57ee6452 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Wed, 4 Sep 2024 22:06:58 +0200 Subject: [PATCH 173/234] match m_player_main_invade --- src/m_player_main_invade.c_inc | 51 ++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/src/m_player_main_invade.c_inc b/src/m_player_main_invade.c_inc index e69de29b..41a5750d 100644 --- a/src/m_player_main_invade.c_inc +++ b/src/m_player_main_invade.c_inc @@ -0,0 +1,51 @@ +static int Player_actor_request_main_door(GAME* game, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_INVADE, priority)) { + Player_actor_request_main_index(game, mPlayer_INDEX_INVADE, priority); + + return TRUE; + } + + return FALSE; +} + +static int Player_actor_request_main_door_all(GAME* game, int priority) { + return Player_actor_request_main_invade(game, priority) != 0; +} + +static void Player_actor_setup_main_Invade(ACTOR* actor, GAME* game) { + int anim_idx; + int part_table_idx; + + Player_actor_SetupItem_Base1(actor, mPlayer_ANIM_WAIT1, -5.0f, &anim_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actor, game, 0, anim_idx, 1.0f, 1.0f, 0.5f, -5.0f, part_table_idx); + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_Movement_Invade(ACTOR* actor) { + Player_actor_Movement_Base_Braking(actor); +} + +static void Player_actor_CulcAnimation_Invade(ACTOR* actor) { + f32 frame_calc; + + Player_actor_CulcAnimation_Base2(actor, &frame_calc); +} + +static void Player_actor_ObjCheck_Invade(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Invade(ACTOR* actor) { + Player_actor_BGcheck_common_type2(actor); +} + +static void Player_actor_main_Invade(ACTOR* actor, GAME* game) { + Player_actor_Movement_Invade(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_CulcAnimation_Invade(actor); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Invade(actor, game); + Player_actor_BGcheck_Invade(actor); + Player_actor_Item_main(actor, game); +} From 1424361ab524157e71d455527154b78f1ddd0f92 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Wed, 4 Sep 2024 22:09:39 +0200 Subject: [PATCH 174/234] match m_player_main_hold --- src/m_player_main_hold.c_inc | 169 +++++++++++++++++++++++++++++++++++ 1 file changed, 169 insertions(+) diff --git a/src/m_player_main_hold.c_inc b/src/m_player_main_hold.c_inc index e69de29b..e39a1338 100644 --- a/src/m_player_main_hold.c_inc +++ b/src/m_player_main_hold.c_inc @@ -0,0 +1,169 @@ +static int Player_actor_Check_able_request_main_hold(GAME* game) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + switch (player->now_main_index) { + case mPlayer_INDEX_WAIT: + case mPlayer_INDEX_WALK: + case mPlayer_INDEX_RUN: + case mPlayer_INDEX_DASH: + case mPlayer_INDEX_HOLD: + case mPlayer_INDEX_PUSH: + case mPlayer_INDEX_PULL: + case mPlayer_INDEX_ROTATE_FURNITURE: + return TRUE; + + case mPlayer_INDEX_TUMBLE: + case mPlayer_INDEX_TUMBLE_GETUP: + case mPlayer_INDEX_TURN_DASH: + case mPlayer_INDEX_FALL: + case mPlayer_INDEX_WADE: + case mPlayer_INDEX_DOOR: + case mPlayer_INDEX_OUTDOOR: + case mPlayer_INDEX_INVADE: + default: + + return FALSE; + } +} + +static Player_actor_request_main_hold(GAME* game, int ftr_no, int index, const xyz_t* pos, f32 speed, int flags, + int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_HOLD, priority) && + Player_actor_Check_able_request_main_hold(game)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + player->requested_main_index_data.hold.ftr_no = ftr_no; + player->requested_main_index_data.hold.angle_y = Player_actor_Get_Angle_fromIndex(index); + player->requested_main_index_data.hold.player_pos = *pos; + player->requested_main_index_data.hold.morph_speed = speed; + player->requested_main_index_data.hold.flags = flags; + + Player_actor_request_main_index(game, mPlayer_INDEX_HOLD, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_OutdoorPlayer_actor_setup_main_Hold(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int flags = player->requested_main_index_data.hold.flags; + + player->main_data.hold.ftr_no = player->requested_main_index_data.hold.ftr_no; + player->main_data.hold.angle_y = player->requested_main_index_data.hold.angle_y; + player->main_data.hold.player_pos = player->requested_main_index_data.hold.player_pos; + + if (flags & 1) { + Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_HOLD_WAIT1, mPlayer_ANIM_HOLD_WAIT1, 1.0f, 1.0f, + 0.5f, player->requested_main_index_data.hold.morph_speed, 0); + } + + Player_actor_setup_main_Base(actor, game); +} + +static int Player_actor_CulcAnimation_Hold(ACTOR* actor) { + f32 calc_frame; + + return Player_actor_CulcAnimation_Base2(actor, &calc_frame); +} + +static void Player_actor_Movement_Hold(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + f32 x = player->main_data.hold.player_pos.x; + f32 z = player->main_data.hold.player_pos.z; + s16 angle = player->main_data.hold.angle_y; + + add_calc_short_angle2(&actor->shape_info.rotation.y, angle, 1.0f - sqrtf(0.5), 8192, 50); + actor->world.angle.y = actor->shape_info.rotation.y; + add_calc(&actor->world.position.x, x, 1.0f - sqrtf(0.9), 500.0f, 0.5f); + add_calc(&actor->world.position.z, z, 1.0f - sqrtf(0.9), 500.0f, 0.5f); + + Player_actor_Movement_Base_Stop(actor, FALSE); +} + +static void Player_actor_ObjCheck_Hold(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Hold(ACTOR* actor) { + Player_actor_BGcheck_common_type3(actor); +} + +static void Player_actor_request_proc_index_fromHold(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (Common_Get(clip).my_room_clip != NULL) { + int state; + xyz_t wpos0; + xyz_t wpos1; + xyz_t pull_pos; + int ftr_no; + xyz_t* pos; + s16 angle; + + ftr_no = player->main_data.hold.ftr_no; + state = Common_Get(clip).my_room_clip->judge_player_action_proc(&wpos0, &wpos1, ftr_no); + angle = player->main_data.hold.angle_y; + pos = &player->main_data.hold.player_pos; + switch (state) { + case 0: + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_34); + break; + case 2: + Player_actor_request_main_push(game, ftr_no, angle, pos, mPlayer_REQUEST_PRIORITY_21); + break; + case 3: + pull_pos.x = wpos1.x - wpos0.x; + pull_pos.z = wpos1.z - wpos0.z; + + Player_actor_request_main_pull(game, ftr_no, angle, pos, &wpos1, &pull_pos, + mPlayer_REQUEST_PRIORITY_21); + break; + case 4: + case 5: + Player_actor_request_main_rotate_furniture(game, ftr_no, angle, pos, state, + mPlayer_REQUEST_PRIORITY_21); + break; + case 6: + Player_actor_request_main_open_furniture(game, angle, pos, 0x2D, mPlayer_REQUEST_PRIORITY_21); + break; + case 7: + Player_actor_request_main_open_furniture(game, angle, pos, 0x2B, mPlayer_REQUEST_PRIORITY_21); + break; + case 8: + Player_actor_request_main_open_furniture(game, angle, pos, 0x2C, mPlayer_REQUEST_PRIORITY_21); + break; + case 9: + if (player->animation0_idx != mPlayer_ANIM_HOLD_WAIT_O1) { + Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_HOLD_WAIT_O1, mPlayer_ANIM_HOLD_WAIT_O1, + 1.0f, 1.0f, 0.5f, -4.0f, 0); + } + break; + case 10: + if (player->animation0_idx != mPlayer_ANIM_HOLD_WAIT_H1) { + Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_HOLD_WAIT_H1, mPlayer_ANIM_HOLD_WAIT_H1, + 1.0f, 1.0f, 0.5f, -4.0f, 0); + } + break; + case 1: + if (player->animation0_idx != mPlayer_ANIM_HOLD_WAIT1) { + Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_HOLD_WAIT1, mPlayer_ANIM_HOLD_WAIT1, + 1.0f, 1.0f, 0.5f, -4.0f, 0); + } + break; + } + } +} + +static void Player_actor_main_Hold(ACTOR* actor, GAME* game) { + Player_actor_Movement_Hold(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_CulcAnimation_Hold(actor); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Hold(actor, game); + Player_actor_BGcheck_Hold(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromHold(actor, game); +} From 8f7e274fa82c36ffe8916be3c359831ef26407d7 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Wed, 4 Sep 2024 22:14:51 +0200 Subject: [PATCH 175/234] match m_player_main_push --- src/m_player_main_push.c_inc | 102 +++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) diff --git a/src/m_player_main_push.c_inc b/src/m_player_main_push.c_inc index e69de29b..ff459530 100644 --- a/src/m_player_main_push.c_inc +++ b/src/m_player_main_push.c_inc @@ -0,0 +1,102 @@ +static int Player_actor_request_main_push(GAME* game, int ftr_no, s16 angle_y, xyz_t* pos, int priority) { + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_HOLD && + Player_actor_check_request_main_able(game, mPlayer_INDEX_PUSH, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + player->requested_main_index_data.push.ftrNo = ftr_no; + player->requested_main_index_data.push.angle_y = angle_y; + player->requested_main_index_data.push.player_pos = *pos; + + Player_actor_request_main_index(game, mPlayer_INDEX_PUSH, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_settle_main_Push(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + cKF_SkeletonInfo_R_AnimationMove_dt(&player->keyframe0); +} + +static void Player_actor_setup_main_Push(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_push_c* main_push = &player->main_data.push; + s16 angle; + cKF_SkeletonInfo_R_c* keyf; + mPlayer_request_push_c* req_push = &player->requested_main_index_data.push; + f32 x; + f32 z; + + keyf = &player->keyframe0; + main_push->ftr_no = req_push->ftrNo; + angle = req_push->angle_y; + x = req_push->player_pos.x; + z = req_push->player_pos.z; + + actor->world.angle.y = angle; + actor->shape_info.rotation.y = angle; + actor->world.position.x = x; + actor->world.position.z = z; + + cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(keyf, 0.0f, 1000.0f, 200.0f, 0, 0, 0x4000); + cKF_SkeletonInfo_R_AnimationMove_ct_base(0.0f, &actor->world.position, &actor->world.position, + actor->shape_info.rotation.y, 0, keyf, 1); + Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_PUSH1, mPlayer_ANIM_PUSH1, 1.0f, 1.0f, 0.5f, -5.0f, 0, + 0); + Player_actor_setup_main_Base(actor, game); +} + +static int Player_actor_CulcAnimation_Push(ACTOR* actor, f32* frame_calc) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_Movement_Push(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + cKF_SkeletonInfo_R_AnimationMove_base(&actor->world.position, &actor->shape_info.rotation.y, &actor->scale, + actor->world.angle.y, &player->keyframe0); + Actor_position_moveF(actor); +} + +static void Player_actor_SearchAnimation_Push(ACTOR* actor, GAME* game, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_Set_FootMark_Base1(actor, game, FALSE, FALSE); + } +} + +static void Player_actor_ObjCheck_Push(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Push(ACTOR* actor) { + Player_actor_BGcheck_common_type3(actor); +} + +static void Player_actor_request_proc_index_fromPush(ACTOR* actor, GAME* game, int arg) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (arg != 0) { + int ftr = player->main_data.push.ftr_no; + int angle = Player_actor_Get_Index_fromAngle(actor->world.angle.y); + Player_actor_request_main_hold(game, ftr, angle, &actor->world.position, -12.0f, 1, + mPlayer_REQUEST_PRIORITY_22); + } +} + +static void Player_actor_main_Push(ACTOR* actor, GAME* game) { + f32 frame_calc; + int arg = Player_actor_CulcAnimation_Push(actor, &frame_calc); + + Player_actor_Movement_Push(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_SearchAnimation_Push(actor, game, frame_calc); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Push(actor, game); + Player_actor_BGcheck_Push(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromPush(actor, game, arg); +} From 92c65bbc2d82900a2cb4b8d8a2b232a2ed8c6ef0 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Wed, 4 Sep 2024 22:16:37 +0200 Subject: [PATCH 176/234] match m_player_main_pull --- src/m_player_main_pull.c_inc | 137 +++++++++++++++++++++++++++++++++++ 1 file changed, 137 insertions(+) diff --git a/src/m_player_main_pull.c_inc b/src/m_player_main_pull.c_inc index e69de29b..098a6e78 100644 --- a/src/m_player_main_pull.c_inc +++ b/src/m_player_main_pull.c_inc @@ -0,0 +1,137 @@ +static int Player_actor_request_main_pull(GAME* game, int ftr_no, s16 angle, xyz_t* start_pos, xyz_t* end_pos, + xyz_t* ofs, int priority) { + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_HOLD && + Player_actor_check_request_main_able(game, mPlayer_INDEX_PULL, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + player->requested_main_index_data.pull.ftrNo = ftr_no; + player->requested_main_index_data.pull.angle_y = angle; + player->requested_main_index_data.pull.start_pos = *start_pos; + player->requested_main_index_data.pull.end_pos = *end_pos; + player->requested_main_index_data.pull.ofs = *ofs; + + Player_actor_request_main_index(game, mPlayer_INDEX_PULL, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_settle_main_Pull(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + cKF_SkeletonInfo_R_AnimationMove_dt(&player->keyframe0); + actor->world.position.x = player->main_data.pull.start_pos.x; + actor->world.position.z = player->main_data.pull.start_pos.z; +} + +static void Player_actor_setup_main_Pull(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_pull_c* main_pull = &player->main_data.pull; + s16 angle; + cKF_SkeletonInfo_R_c* keyf; + mPlayer_request_pull_c* req_pull = &player->requested_main_index_data.pull; + f32 x; + f32 z; + + keyf = &player->keyframe0; + main_pull->ftr_no = req_pull->ftrNo; + main_pull->start_pos = req_pull->end_pos; + main_pull->ofs = req_pull->ofs; + main_pull->timer = 0.0f; + + angle = req_pull->angle_y; + x = req_pull->start_pos.x; + z = req_pull->start_pos.z; + + actor->world.angle.y = angle; + actor->shape_info.rotation.y = angle; + actor->world.position.x = x; + actor->world.position.z = z; + + cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(keyf, 0.0f, 1000.0f, 200.0f, 0, 0, 0x4000); + cKF_SkeletonInfo_R_AnimationMove_ct_base(0.0f, &actor->world.position, &actor->world.position, + actor->shape_info.rotation.y, 0, keyf, 1); + Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_PULL1, mPlayer_ANIM_PULL1, 1.0f, 1.0f, 0.5f, -5.0f, 0, + 0); + Player_actor_setup_main_Base(actor, game); +} + +static int Player_actor_CulcAnimation_Pull(ACTOR* actor, f32* frame_calc) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_Movement_Pull(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + xyz_t* ofs; + f32* timer_p; + mPlayer_main_pull_c* main_pull = &player->main_data.pull; + + cKF_SkeletonInfo_R_AnimationMove_base(&actor->world.position, &actor->shape_info.rotation.y, &actor->scale, + actor->world.angle.y, &player->keyframe0); + + timer_p = &main_pull->timer; + ofs = &main_pull->ofs; + *timer_p += 1.0f; + + if (*timer_p >= 6.0f) { + f32 dis; + + if (*timer_p > 34.0f) { + *timer_p = 34.0f; + } + + dis = (*timer_p - 6.0f) / 28.0f; + + if (dis >= 1.0f) { + actor->world.position.x += ofs->x; + actor->world.position.z += ofs->z; + } else if (dis > 0.0f) { + actor->world.position.x += ofs->x * dis; + actor->world.position.z += ofs->z * dis; + } + } + + Actor_position_moveF(actor); +} + +static void Player_actor_SearchAnimation_Pull(ACTOR* actor, GAME* game, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_Set_FootMark_Base1(actor, game, FALSE, FALSE); + } +} + +static void Player_actor_ObjCheck_Pull(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Pull(ACTOR* actor) { + Player_actor_BGcheck_common_type3(actor); +} + +static void Player_actor_request_proc_index_fromPull(ACTOR* actor, GAME* game, int arg) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (arg != 0) { + int ftr = player->main_data.pull.ftr_no; + int angle = Player_actor_Get_Index_fromAngle(actor->world.angle.y); + Player_actor_request_main_hold(game, ftr, angle, &actor->world.position, -12.0f, 1, + mPlayer_REQUEST_PRIORITY_22); + } +} + +static void Player_actor_main_Pull(ACTOR* actor, GAME* game) { + f32 frame_calc; + int arg = Player_actor_CulcAnimation_Pull(actor, &frame_calc); + + Player_actor_Movement_Pull(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_SearchAnimation_Pull(actor, game, frame_calc); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Pull(actor, game); + Player_actor_BGcheck_Pull(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromPull(actor, game, arg); +} From cae01c4afb5c6fa26fe7bbc8a2a73461a2edcad5 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Wed, 4 Sep 2024 22:20:08 +0200 Subject: [PATCH 177/234] match m_player_main_rotate_furniture --- src/m_player_main_rotate_furniture.c_inc | 125 +++++++++++++++++++++++ 1 file changed, 125 insertions(+) diff --git a/src/m_player_main_rotate_furniture.c_inc b/src/m_player_main_rotate_furniture.c_inc index e69de29b..8331dbce 100644 --- a/src/m_player_main_rotate_furniture.c_inc +++ b/src/m_player_main_rotate_furniture.c_inc @@ -0,0 +1,125 @@ +static int Player_actor_request_main_rotate_furniture(GAME* game, int ftr_no, s16 angle, xyz_t* pos, int type, + int priority) { + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_HOLD && + Player_actor_check_request_main_able(game, mPlayer_INDEX_ROTATE_FURNITURE, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + player->requested_main_index_data.rotate_furniture.ftrNo = ftr_no; + player->requested_main_index_data.rotate_furniture.angle_y = angle; + player->requested_main_index_data.rotate_furniture.player_pos = *pos; + player->requested_main_index_data.rotate_furniture.rotate_type = type; + + Player_actor_request_main_index(game, mPlayer_INDEX_ROTATE_FURNITURE, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Rotate_furniture(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_rotate_furniture_c* main_rot = &player->main_data.rotate_furniture; + s16 angle; + int anim_type; + int rotate_type; + mPlayer_request_rotate_furniture_c* req_rot = &player->requested_main_index_data.rotate_furniture; + f32 x; + f32 z; + xyz_t pos; + + main_rot->ftr_no = req_rot->ftrNo; + + angle = req_rot->angle_y; + x = req_rot->player_pos.x; + z = req_rot->player_pos.z; + + actor->world.angle.y = angle; + actor->shape_info.rotation.y = angle; + actor->world.position.x = x; + actor->world.position.z = z; + + if (Common_Get(clip).my_room_clip != NULL) { + Common_Get(clip).my_room_clip->ftrId2wpos_proc(&pos, main_rot->ftr_no); + main_rot->pos.x = pos.x - actor->world.position.x; + main_rot->pos.z = pos.z - actor->world.position.z; + } + + rotate_type = req_rot->rotate_type; + + main_rot->rotate_type = rotate_type; + + if (rotate_type != 4) { + anim_type = mPlayer_ANIM_LTURN1; + } else { + anim_type = mPlayer_ANIM_RTURN1; + } + + Player_actor_InitAnimation_Base2(actor, game, anim_type, anim_type, 1.0f, 1.0f, 0.5f, -5.0f, 0, 0); + main_rot->_10 = 0; + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_Movement_Rotate_furniture(ACTOR* actor) { + Player_actor_Movement_Base_Stop(actor, FALSE); +} + +static int Player_actor_CulcAnimation_rotate_furniture(ACTOR* actor) { + f32 frame_calc; + + return Player_actor_CulcAnimation_Base2(actor, &frame_calc); +} + +static void Player_actor_ChangeAnimationHold_rotate_furniture(ACTOR* actor, GAME* game, int arg) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (arg != 0 && player->main_data.rotate_furniture._10 == 0) { + Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_HOLD_WAIT1, mPlayer_ANIM_HOLD_WAIT1, 1.0f, 1.0f, + 0.5f, -12.0f, 0); + player->main_data.rotate_furniture._10 = 1; + } +} + +static void Player_actor_ObjCheck_rotate_furniture(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_rotate_furniture(ACTOR* actor) { + Player_actor_BGcheck_common_type3(actor); +} + +static void Player_actor_request_proc_index_fromRotate_furniture(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (Common_Get(clip).my_room_clip != NULL) { + int ftr_no = player->main_data.rotate_furniture.ftr_no; + int judge = Common_Get(clip).my_room_clip->judge_player_action_proc(NULL, NULL, ftr_no); + + if (judge != player->main_data.rotate_furniture.rotate_type) { + int index = Player_actor_Get_Index_fromAngle(actor->world.angle.y); + int flags = 0; + + if (!player->main_data.rotate_furniture._10) { + flags |= 1; + } + + Player_actor_request_main_hold(game, ftr_no, index, &actor->world.position, -12.0f, flags, + mPlayer_REQUEST_PRIORITY_22); + } + } +} + +static void Player_actor_main_Rotate_furniture(ACTOR* actor, GAME* game) { + int arg; + + Player_actor_Movement_Rotate_furniture(actor); + Player_actor_Reinput_force_position_angle(actor, game); + arg = Player_actor_CulcAnimation_rotate_furniture(actor); + Player_actor_ChangeAnimationHold_rotate_furniture(actor, game, arg); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_rotate_furniture(actor, game); + Player_actor_BGcheck_rotate_furniture(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromRotate_furniture(actor, game); +} From 43a308eafbd50bda529607d24e6bbc63f6e3b196 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Wed, 4 Sep 2024 22:22:21 +0200 Subject: [PATCH 178/234] match m_player_main_wait_open_furniture --- src/m_player_main_wait_open_furniture.c_inc | 69 +++++++++++++++++++++ 1 file changed, 69 insertions(+) diff --git a/src/m_player_main_wait_open_furniture.c_inc b/src/m_player_main_wait_open_furniture.c_inc index e69de29b..e74d5979 100644 --- a/src/m_player_main_wait_open_furniture.c_inc +++ b/src/m_player_main_wait_open_furniture.c_inc @@ -0,0 +1,69 @@ +static int Player_actor_request_main_wait_open_furniture(GAME* game, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_WAIT_OPEN_FURNITURE, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + int anim_idx; + switch (player->animation0_idx) { + case mPlayer_ANIM_KAGU_OPEN_D1: + anim_idx = mPlayer_ANIM_KAGU_WAIT_D1; + break; + case mPlayer_ANIM_KAGU_OPEN_H1: + anim_idx = mPlayer_ANIM_KAGU_WAIT_H1; + break; + default: + anim_idx = mPlayer_ANIM_KAGU_WAIT_K1; + break; + } + + player->requested_main_index_data.wait_open_furniture.anim_idx = anim_idx; + Player_actor_request_main_index(game, mPlayer_INDEX_WAIT_OPEN_FURNITURE, priority); + + return TRUE; + } + return FALSE; +} + +static void Player_actor_setup_main_Open_furniture(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + cKF_SkeletonInfo_R_c* keyf; + mPlayer_request_wait_open_furniture_c* req_open = &player->requested_main_index_data.wait_open_furniture; + int anim_idx; + + keyf = &player->keyframe0; + anim_idx = req_open->anim_idx; + + cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(keyf, 0.0f, 1000.0f, 200.0f, 0, 0, 0x4000); + cKF_SkeletonInfo_R_AnimationMove_ct_base(0.0f, &actor->world.position, &actor->world.position, + actor->shape_info.rotation.y, 0, keyf, 1); + Player_actor_InitAnimation_Base1(actor, game, anim_idx, anim_idx, 1.0f, 1.0f, 0.5f, -5.0f, 0); + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_settle_main_Wait_open_furniture(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + cKF_SkeletonInfo_R_AnimationMove_dt(&player->keyframe0); +} + +static void Player_actor_Movement_Wait_open_furniture(ACTOR* actor) { + Player_actor_Movement_Base_Stop(actor, FALSE); +} + +static int Player_actor_CulcAnimation_Wait_open_furniture(ACTOR* actor) { + f32 frame_calc; + + return Player_actor_CulcAnimation_Base2(actor, &frame_calc); +} + +static void Player_actor_ObjCheck_Wait_open_furniture(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_main_Wait_open_furniture(ACTOR* actor, GAME* game) { + Player_actor_Movement_Wait_open_furniture(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_CulcAnimation_Wait_open_furniture(actor); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Wait_open_furniture(actor, game); + Player_actor_Item_main(actor, game); +} From 7ea65ea3eb5538394f396f2c2f4b84f2b084a1bd Mon Sep 17 00:00:00 2001 From: Prakxo Date: Wed, 4 Sep 2024 22:24:21 +0200 Subject: [PATCH 179/234] match m_player_main_open_furniture --- src/m_player_main_open_furniture.c_inc | 102 +++++++++++++++++++++++++ 1 file changed, 102 insertions(+) diff --git a/src/m_player_main_open_furniture.c_inc b/src/m_player_main_open_furniture.c_inc index e69de29b..be81afa7 100644 --- a/src/m_player_main_open_furniture.c_inc +++ b/src/m_player_main_open_furniture.c_inc @@ -0,0 +1,102 @@ +static int Player_actor_request_main_open_furniture(GAME* game, s16 angle, xyz_t* pos, int anim_idx, int priority) { + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_HOLD && + Player_actor_check_request_main_able(game, mPlayer_INDEX_OPEN_FURNITURE, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + player->requested_main_index_data.open_furniture.angle_y = angle; + player->requested_main_index_data.open_furniture.player_pos = *pos; + player->requested_main_index_data.open_furniture.anim_idx = anim_idx; + + Player_actor_request_main_index(game, mPlayer_INDEX_OPEN_FURNITURE, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_settle_main_Open_furniture(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + cKF_SkeletonInfo_R_AnimationMove_dt(&player->keyframe0); +} + +static void Player_actor_setup_main_Open_furniture(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + s16 angle; + cKF_SkeletonInfo_R_c* keyf; + mPlayer_request_open_furniture_c* req_open = &player->requested_main_index_data.open_furniture; + f32 x; + f32 z; + int anim_idx; + + keyf = &player->keyframe0; + anim_idx = req_open->anim_idx; + angle = req_open->angle_y; + x = req_open->player_pos.x; + z = req_open->player_pos.z; + + actor->world.angle.y = angle; + actor->shape_info.rotation.y = angle; + actor->world.position.x = x; + actor->world.position.z = z; + + cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(keyf, 0.0f, 1000.0f, 200.0f, 0, 0, 0x4000); + cKF_SkeletonInfo_R_AnimationMove_ct_base(0.0f, &actor->world.position, &actor->world.position, + actor->shape_info.rotation.y, 0, keyf, 1); + Player_actor_InitAnimation_Base2(actor, game, anim_idx, anim_idx, 1.0f, 1.0f, 0.5f, -5.0f, 0, 0); + Player_actor_setup_main_Base(actor, game); +} + +static int Player_actor_CulcAnimation_Open_furniture(ACTOR* actor, f32* frame_calc) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_Movement_Open_furniture(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + cKF_SkeletonInfo_R_AnimationMove_base(&actor->world.position, &actor->shape_info.rotation.y, &actor->scale, + actor->world.angle.y, &player->keyframe0); + Player_actor_Movement_Base_Stop(actor, TRUE); +} + +static void Player_actor_SearchAnimation_Open_furniture(ACTOR* actor, GAME* game, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_Set_FootMark_Base1(actor, game, FALSE, FALSE); + } +} + +static void Player_actor_ObjCheck_Open_furniture(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Open_furniture(ACTOR* actor) { + Player_actor_BGcheck_common_type3(actor); +} + +static void Player_actor_request_proc_index_fromOpen_furniture(ACTOR* actor, GAME* game, int arg) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (arg != 0) { + if (player->keyframe0.frame_control.speed == 0.0f) { + Player_actor_request_main_wait_open_furniture(game, mPlayer_REQUEST_PRIORITY_22); + } else { + player->keyframe0.frame_control.speed = 0.0f; + player->keyframe1.frame_control.speed = 0.0f; + } + } +} + +static void Player_actor_main_Open_furniture(ACTOR* actor, GAME* game) { + f32 frame_calc; + int arg = Player_actor_CulcAnimation_Open_furniture(actor, &frame_calc); + + Player_actor_Movement_Open_furniture(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_SearchAnimation_Open_furniture(actor, game, frame_calc); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Open_furniture(actor, game); + Player_actor_BGcheck_Open_furniture(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromOpen_furniture(actor, game, arg); +} From 74536a56837371ade3e53defa22afb8b7a02f09d Mon Sep 17 00:00:00 2001 From: Prakxo Date: Wed, 4 Sep 2024 22:25:43 +0200 Subject: [PATCH 180/234] match m_player_main_close_furniture --- src/m_player_main_close_furniture.c_inc | 100 ++++++++++++++++++++++++ 1 file changed, 100 insertions(+) diff --git a/src/m_player_main_close_furniture.c_inc b/src/m_player_main_close_furniture.c_inc index e69de29b..fe4d617d 100644 --- a/src/m_player_main_close_furniture.c_inc +++ b/src/m_player_main_close_furniture.c_inc @@ -0,0 +1,100 @@ +static int Player_actor_request_main_wait_open_furniture(GAME* game, int priority) { + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_WAIT_OPEN_FURNITURE && + Player_actor_check_request_main_able(game, mPlayer_INDEX_CLOSE_FURNITURE, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + int anim_idx; + switch (player->animation0_idx) { + case mPlayer_ANIM_KAGU_WAIT_D1: + anim_idx = mPlayer_ANIM_KAGU_CLOSE_D1; + break; + case mPlayer_ANIM_KAGU_WAIT_H1: + anim_idx = mPlayer_ANIM_KAGU_CLOSE_H1; + break; + default: + anim_idx = mPlayer_ANIM_KAGU_CLOSE_K1; + break; + } + + player->requested_main_index_data.close_furniture.anim_idx = anim_idx; + Player_actor_request_main_index(game, mPlayer_INDEX_CLOSE_FURNITURE, priority); + + return TRUE; + } + return FALSE; +} + +static void Player_actor_settle_main_Close_furniture(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + cKF_SkeletonInfo_R_AnimationMove_dt(&player->keyframe0); +} + +static void Player_actor_setup_main_Close_furniture(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + cKF_SkeletonInfo_R_c* keyf; + mPlayer_request_close_furniture_c* req_close = &player->requested_main_index_data.close_furniture; + int anim_idx; + + keyf = &player->keyframe0; + anim_idx = req_close->anim_idx; + + cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(keyf, 0.0f, 1000.0f, 200.0f, 0, 0, 0x4000); + cKF_SkeletonInfo_R_AnimationMove_ct_base(0.0f, &actor->world.position, &actor->world.position, + actor->shape_info.rotation.y, 0, keyf, 1); + Player_actor_InitAnimation_Base2(actor, game, anim_idx, anim_idx, 1.0f, 1.0f, 0.5f, -5.0f, 0, 0); + Player_actor_setup_main_Base(actor, game); +} +static int Player_actor_CulcAnimation_Close_furniture(ACTOR* actor, f32* frame_calc) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_Movement_Close_furniture(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + cKF_SkeletonInfo_R_AnimationMove_base(&actor->world.position, &actor->shape_info.rotation.y, &actor->scale, + actor->world.angle.y, &player->keyframe0); + Actor_position_moveF(actor); +} + +static void Player_actor_SearchAnimation_Close_furniture(ACTOR* actor, GAME* game, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_Set_FootMark_Base1(actor, game, FALSE, FALSE); + } +} + +static void Player_actor_ObjCheck_Close_furniture(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Close_furniture(ACTOR* actor) { + Player_actor_BGcheck_common_type3(actor); +} + +static void Player_actor_request_proc_index_fromClose_furniture(ACTOR* actor, GAME* game, int arg) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (arg != 0) { + if (player->keyframe0.frame_control.speed == 0.0f) { + Player_actor_SettleRequestMainIndexPriority(actor); + Player_actor_request_main_wait_all(game, -10.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } else { + player->keyframe0.frame_control.speed = 0.0f; + player->keyframe1.frame_control.speed = 0.0f; + } + } +} + +static void Player_actor_main_Open_furniture(ACTOR* actor, GAME* game) { + f32 frame_calc; + int arg = Player_actor_CulcAnimation_Close_furniture(actor, &frame_calc); + + Player_actor_Movement_Close_furniture(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_SearchAnimation_Close_furniture(actor, game, frame_calc); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Close_furniture(actor, game); + Player_actor_BGcheck_Close_furniture(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromClose_furniture(actor, game, arg); +} From c4f810fea08ac025106fa529dc6d5c89e8ceed2e Mon Sep 17 00:00:00 2001 From: Prakxo Date: Wed, 4 Sep 2024 22:27:45 +0200 Subject: [PATCH 181/234] match m_player_main_roll_bed --- src/m_player_main_roll_bed.c_inc | 111 +++++++++++++++++++++++++++++++ 1 file changed, 111 insertions(+) diff --git a/src/m_player_main_roll_bed.c_inc b/src/m_player_main_roll_bed.c_inc index e69de29b..38daea80 100644 --- a/src/m_player_main_roll_bed.c_inc +++ b/src/m_player_main_roll_bed.c_inc @@ -0,0 +1,111 @@ +static int Player_actor_Check_able_request_main_roll_bed(GAME* game) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + int index = player->now_main_index; + + switch (index) { + case mPlayer_INDEX_WAIT_BED: + return TRUE; + default: + return FALSE; + } +} + +static int Player_actor_request_main_roll_bed(GAME* game, int direction, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_ROLL_BED, priority) && + Player_actor_Check_able_request_main_roll_bed(game)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + player->requested_main_index_data.roll_bed.move_dir = direction; + Player_actor_request_main_index(game, mPlayer_INDEX_ROLL_BED, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_settle_main_Roll_bed(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + cKF_SkeletonInfo_R_AnimationMove_dt(&player->keyframe0); +} + +static int Player_actor_Get_BasicPlayerAnimeIndex_Roll_bed(int direction, s16 angle) { + if (angle == 0) { + if (direction == 1) { + return mPlayer_ANIM_NEGAERI_R1; + } + if (direction == 2) { + return mPlayer_ANIM_NEGAERI_L1; + } + } else if (angle == 0x4000) { + if (direction == 3) { + return mPlayer_ANIM_NEGAERI_R1; + } + if (direction == 4) { + return mPlayer_ANIM_NEGAERI_L1; + } + } else if (angle == -0x8000) { + if (direction == 1) { + return mPlayer_ANIM_NEGAERI_L1; + } + if (direction == 2) { + return mPlayer_ANIM_NEGAERI_R1; + } + } else if (angle == -0x4000) { + if (direction == 3) { + return mPlayer_ANIM_NEGAERI_L1; + } + if (direction == 4) { + return mPlayer_ANIM_NEGAERI_R1; + } + } + + return mPlayer_ANIM_NEGAERI_R1; +} + +static void Player_actor_setup_main_Roll_bed(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + cKF_SkeletonInfo_R_c* keyf; + mPlayer_request_roll_bed_c* req_roll = &player->requested_main_index_data.roll_bed; + int anim_idx; + + keyf = &player->keyframe0; + anim_idx = Player_actor_Get_BasicPlayerAnimeIndex_Roll_bed(req_roll->move_dir, actor->shape_info.rotation.y); + + cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(keyf, 0.0f, 1000.0f, 0.0f, 0, 0, 0x4000); + cKF_SkeletonInfo_R_AnimationMove_ct_base(17.0f, &actor->world.position, &actor->world.position, + actor->shape_info.rotation.y, 0, keyf, 1); + Player_actor_InitAnimation_Base2(actor, game, anim_idx, anim_idx, 1.0f, 1.0f, 0.5f, -5.0f, 0, 0); + Player_actor_setup_main_Base(actor, game); + Player_actor_sound_BED_NEGAERI(actor); +} + +static int Player_actor_CulcAnimation_Roll_bed(ACTOR* actor) { + f32 frame_calc; + + return Player_actor_CulcAnimation_Base2(actor, &frame_calc); +} + +static void Player_actor_Movement_Roll_bed(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + cKF_SkeletonInfo_R_AnimationMove_base(&actor->world.position, &actor->shape_info.rotation.y, &actor->scale, + actor->world.angle.y, &player->keyframe0); + Player_actor_Movement_Base_Stop(actor, FALSE); +} + +static void Player_actor_request_proc_index_fromRoll_bed(GAME* game, int arg) { + if (arg != 0) { + Player_actor_request_main_wait_bed(game, mPlayer_REQUEST_PRIORITY_26); + } +} + +static void Player_actor_main_Roll_bed(ACTOR* actor, GAME* game) { + int arg = Player_actor_CulcAnimation_Roll_bed(actor); + + Player_actor_Movement_Roll_bed(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromRoll_bed(game, arg); +} From 9fe5dc7bca7acfc3e00ac439a46eaa1a2ea29f48 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Wed, 4 Sep 2024 22:33:09 +0200 Subject: [PATCH 182/234] function names --- src/m_player_main_close_furniture.c_inc | 4 ++-- src/m_player_main_invade.c_inc | 4 ++-- src/m_player_main_wait_open_furniture.c_inc | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/m_player_main_close_furniture.c_inc b/src/m_player_main_close_furniture.c_inc index fe4d617d..7cc5d649 100644 --- a/src/m_player_main_close_furniture.c_inc +++ b/src/m_player_main_close_furniture.c_inc @@ -1,4 +1,4 @@ -static int Player_actor_request_main_wait_open_furniture(GAME* game, int priority) { +static int Player_actor_request_main_close_furniture(GAME* game, int priority) { if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_WAIT_OPEN_FURNITURE && Player_actor_check_request_main_able(game, mPlayer_INDEX_CLOSE_FURNITURE, priority)) { PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); @@ -84,7 +84,7 @@ static void Player_actor_request_proc_index_fromClose_furniture(ACTOR* actor, GA } } -static void Player_actor_main_Open_furniture(ACTOR* actor, GAME* game) { +static void Player_actor_main_Close_furniture(ACTOR* actor, GAME* game) { f32 frame_calc; int arg = Player_actor_CulcAnimation_Close_furniture(actor, &frame_calc); diff --git a/src/m_player_main_invade.c_inc b/src/m_player_main_invade.c_inc index 41a5750d..9227dbff 100644 --- a/src/m_player_main_invade.c_inc +++ b/src/m_player_main_invade.c_inc @@ -1,4 +1,4 @@ -static int Player_actor_request_main_door(GAME* game, int priority) { +static int Player_actor_request_main_invade(GAME* game, int priority) { if (Player_actor_check_request_main_able(game, mPlayer_INDEX_INVADE, priority)) { Player_actor_request_main_index(game, mPlayer_INDEX_INVADE, priority); @@ -8,7 +8,7 @@ static int Player_actor_request_main_door(GAME* game, int priority) { return FALSE; } -static int Player_actor_request_main_door_all(GAME* game, int priority) { +static int Player_actor_request_main_invade_all(GAME* game, int priority) { return Player_actor_request_main_invade(game, priority) != 0; } diff --git a/src/m_player_main_wait_open_furniture.c_inc b/src/m_player_main_wait_open_furniture.c_inc index e74d5979..4baf5dc9 100644 --- a/src/m_player_main_wait_open_furniture.c_inc +++ b/src/m_player_main_wait_open_furniture.c_inc @@ -22,7 +22,7 @@ static int Player_actor_request_main_wait_open_furniture(GAME* game, int priorit return FALSE; } -static void Player_actor_setup_main_Open_furniture(ACTOR* actor, GAME* game) { +static void Player_actor_setup_main_Wait_open_furniture(ACTOR* actor, GAME* game) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; cKF_SkeletonInfo_R_c* keyf; mPlayer_request_wait_open_furniture_c* req_open = &player->requested_main_index_data.wait_open_furniture; @@ -50,7 +50,7 @@ static void Player_actor_Movement_Wait_open_furniture(ACTOR* actor) { static int Player_actor_CulcAnimation_Wait_open_furniture(ACTOR* actor) { f32 frame_calc; - + return Player_actor_CulcAnimation_Base2(actor, &frame_calc); } From 20d0452c4c09d440f59a953db8cc264cd6f15eff Mon Sep 17 00:00:00 2001 From: Prakxo Date: Wed, 4 Sep 2024 23:44:51 +0200 Subject: [PATCH 183/234] match m_player_main_lie_bed --- src/m_player_main_lie_bed.c_inc | 176 ++++++++++++++++++++++++++++++++ 1 file changed, 176 insertions(+) diff --git a/src/m_player_main_lie_bed.c_inc b/src/m_player_main_lie_bed.c_inc index e69de29b..134c7031 100644 --- a/src/m_player_main_lie_bed.c_inc +++ b/src/m_player_main_lie_bed.c_inc @@ -0,0 +1,176 @@ +static int Player_actor_Check_able_request_main_lie_bed(GAME* game) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + int index = player->now_main_index; + + switch (index) { + case mPlayer_INDEX_WAIT: + case mPlayer_INDEX_WALK: + case mPlayer_INDEX_RUN: + case mPlayer_INDEX_DASH: + return TRUE; + + default: + return FALSE; + } +} + +static int Player_actor_request_main_lie_bed(GAME* game, int direction, const xyz_t* pos, int dir, int flags, + int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_LIE_BED, priority) && + Player_actor_Check_able_request_main_lie_bed(game)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + player->requested_main_index_data.lie_bed.direction = dir; + player->requested_main_index_data.lie_bed.angle = Player_actor_Get_Angle_fromDirection(direction); + player->requested_main_index_data.lie_bed.wpos = *pos; + player->requested_main_index_data.lie_bed.wpos.y = player->actor_class.world.position.y; + player->requested_main_index_data.lie_bed.flags = flags; + + Player_actor_request_main_index(game, mPlayer_INDEX_LIE_BED, priority); + + return TRUE; + } + + return FALSE; +} + +static int Player_actor_Get_BasicPlayerAnimeIndex_Lie_bed(int direction, s16 angle) { + if (angle == 0) { + if (direction == 1) { + return mPlayer_ANIM_INBED_L1; + } + if (direction == 2) { + return mPlayer_ANIM_INBED_R1; + } + } else if (angle == 0x4000) { + if (direction == 3) { + return mPlayer_ANIM_INBED_L1; + } + if (direction == 4) { + return mPlayer_ANIM_INBED_R1; + } + } else if (angle == -0x8000) { + if (direction == 1) { + return mPlayer_ANIM_INBED_R1; + } + if (direction == 2) { + return mPlayer_ANIM_INBED_L1; + } + } else if (angle == -0x4000) { + if (direction == 3) { + return mPlayer_ANIM_INBED_R1; + } + if (direction == 4) { + return mPlayer_ANIM_INBED_L1; + } + } + + return mPlayer_ANIM_INBED_R1; +} + +static void Player_actor_setup_main_Lie_bed(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + cKF_SkeletonInfo_R_c* keyf; + mPlayer_main_lie_bed_c* main_lie = &player->main_data.lie_bed; + mPlayer_request_lie_bed_c* req_lie = &player->requested_main_index_data.lie_bed; + int anim_idx; + s16 angle; + + keyf = &player->keyframe0; + anim_idx = Player_actor_Get_BasicPlayerAnimeIndex_Lie_bed(req_lie->direction, req_lie->angle); + + main_lie->flags = req_lie->flags; + angle = req_lie->angle; + + actor->world.angle.y = angle; + + cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(keyf, 0.0f, 1000.0f, 0.0f, 0, 0, 0x4000); + cKF_SkeletonInfo_R_AnimationMove_ct_base(17.0f, &actor->world.position, &req_lie->wpos, + actor->shape_info.rotation.y, req_lie->angle, keyf, 3); + Player_actor_InitAnimation_Base2(actor, game, anim_idx, anim_idx, 1.0f, 1.0f, 0.5f, -5.0f, 0, 0); + Player_actor_setup_main_Base(actor, game); + Player_actor_sound_JUMP(actor); +} + +static void Player_actor_settle_main_Lie_bed(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + cKF_SkeletonInfo_R_AnimationMove_dt(&player->keyframe0); + actor->shape_info.rotation.x = -0x4000; + actor->world.angle.y = actor->shape_info.rotation.y; + actor->shape_info.shadow_size_change_rate = 0.0f; + actor->shape_info.shadow_alpha_change_rate = 0.0f; +} + +static int Player_actor_CulcAnimation_Lie_bed(ACTOR* actor, f32* frame_calc) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_SetSound_Lie_bed(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 20.0f)) { + Player_actor_sound_BED_IN(actor); + } +} + +static void Player_actor_SearchAnimation_Lie_bed(ACTOR* actor, f32 frame) { + f32 per; + f32 mod; + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + f32 cur; + s16 target_x; + s16 target_y; + int angle; + + Player_actor_DisappearShadow_fromAnimationFrame(actor, 0.0f, 15.0f); + cur = fc0_p->current_frame; + per = sqrtf(get_percent_forAccelBrake(cur, 4.0f, 19.0f, 0.0f, 0.0f)); + + target_x = (int)(-16384.0f * per); + add_calc_short_angle2(&actor->shape_info.rotation.x, target_x, 1.0f - sqrtf(0.5), 1820, 50); + per = (get_percent_forAccelBrake(cur, 4.0f, 19.0f, 0.0f, 0.0f)); + per = sqrtf(per); + target_y = actor->world.angle.y; + + if (player->animation0_idx == mPlayer_ANIM_INBED_R1) { + mod = 16384.0f; + } else { + mod = -16384.0f; + } + + angle = (s16)(mod * per); + target_y += angle; + add_calc_short_angle2(&actor->shape_info.rotation.y, target_y, 1.0f - sqrtf(0.5), 1820, 50); + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_SetSound_Lie_bed(actor); + } +} + +static void Player_actor_Movement_Lie_bed(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + cKF_SkeletonInfo_R_AnimationMove_base(&actor->world.position, &actor->shape_info.rotation.y, &actor->scale, + actor->world.angle.y, &player->keyframe0); + Player_actor_Movement_Base_Stop(actor, FALSE); +} + +static void Player_actor_request_proc_index_fromLie_bed(GAME* game, int arg) { + if (arg != 0) { + Player_actor_request_main_wait_bed(game, mPlayer_REQUEST_PRIORITY_21); + } +} + +static void Player_actor_main_Lie_bed(ACTOR* actor, GAME* game) { + f32 frame_calc; + int arg = Player_actor_CulcAnimation_Lie_bed(actor, &frame_calc); + + Player_actor_SearchAnimation_Lie_bed(actor, frame_calc); + Player_actor_Movement_Lie_bed(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromLie_bed(game, arg); +} From c06afc5132439f7776dcfbd64402fa6d93ad0d29 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Wed, 4 Sep 2024 23:46:13 +0200 Subject: [PATCH 184/234] match m_player_main_wait_bed --- src/m_player_main_wait_bed.c_inc | 106 +++++++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) diff --git a/src/m_player_main_wait_bed.c_inc b/src/m_player_main_wait_bed.c_inc index e69de29b..e99ad879 100644 --- a/src/m_player_main_wait_bed.c_inc +++ b/src/m_player_main_wait_bed.c_inc @@ -0,0 +1,106 @@ +static int Player_actor_Check_able_request_main_wait_bed(GAME* game) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + int index = player->now_main_index; + + switch (index) { + case mPlayer_INDEX_LIE_BED: + case mPlayer_INDEX_ROLL_BED: + return TRUE; + default: + + return FALSE; + } +} + +static int Player_actor_request_main_hold(GAME* game, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_WAIT_BED, priority) && + Player_actor_Check_able_request_main_wait_bed(game)) { + Player_actor_request_main_index(game, mPlayer_INDEX_WAIT_BED, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Wait_bed(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_wait_bed_c* req_wait = &player->main_data.wait_bed; + + req_wait->flags = 0; + + actor->world.angle = actor->shape_info.rotation; + + Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_BED_WAIT1, mPlayer_ANIM_BED_WAIT1, 1.0f, 1.0f, 0.5f, + 0.0f, 0); + Player_actor_set_eye_pattern(actor, 2); + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_Movement_Wait_bed(ACTOR* actor) { + Player_actor_Movement_Base_Stop(actor, FALSE); +} + +static int Player_actor_CulcAnimation_Wait_bed(ACTOR* actor) { + f32 frame_calc; + + return Player_actor_CulcAnimation_Base2(actor, &frame_calc); +} + +static void Player_actor_request_proc_index_fromWait_bed(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (Player_actor_GetController_move_percentR() > 0.5f) { + s16 angle = Player_actor_Get_ControllerAngle(game); + int dir = 0; + int dir_angle = Player_actor_Get_Direction_fromAngle(actor->world.angle.y); + int check1 = angle < DEG2SHORT_ANGLE2(-165.005f); + int check2 = angle > DEG2SHORT_ANGLE2(165.005f); + int check4 = angle < DEG2SHORT_ANGLE2(15.0f); + int check3 = angle > DEG2SHORT_ANGLE2(-15.0f); + int check6 = angle < DEG2SHORT_ANGLE2(105.0f); + int check5 = angle > DEG2SHORT_ANGLE2(75.005f); + int check8 = angle < DEG2SHORT_ANGLE2(-75.005f); + int check7 = angle > DEG2SHORT_ANGLE2(-105.0f); + + if (dir_angle == 1 || dir_angle == 2) { + if (check1 || check2) { + dir = 3; + } else if (check3 && check4) { + dir = 4; + } + } else if (check5 && check6) { + dir = 1; + } else if (check7 && check8) { + dir = 2; + } + + if (dir != 0) { + if (player->main_data.wait_bed.flags) { + int action = 1; + + if (Common_Get(clip).my_room_clip != NULL) { + action = Common_Get(clip).my_room_clip->get_bed_action_proc(actor, dir); + } + + if (action == 1) { + Player_actor_request_main_roll_bed(game, dir, mPlayer_REQUEST_PRIORITY_22); + } else if (action == 2) { + Player_actor_request_main_standup_bed(game, dir, mPlayer_REQUEST_PRIORITY_22); + } + } + } else { + player->main_data.wait_bed.flags = 1; + } + } else { + player->main_data.wait_bed.flags = 1; + } +} + +static void Player_actor_main_Wait_bed(ACTOR* actor, GAME* game) { + Player_actor_Movement_Wait_bed(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_CulcAnimation_Wait_bed(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromWait_bed(actor, game); +} From b106c14826d966015683eb323e26358364e922e7 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Wed, 4 Sep 2024 23:47:21 +0200 Subject: [PATCH 185/234] match m_player_main_standup_bed --- src/m_player_main_standup_bed.c_inc | 210 ++++++++++++++++++++++++++++ 1 file changed, 210 insertions(+) diff --git a/src/m_player_main_standup_bed.c_inc b/src/m_player_main_standup_bed.c_inc index e69de29b..8be23c7c 100644 --- a/src/m_player_main_standup_bed.c_inc +++ b/src/m_player_main_standup_bed.c_inc @@ -0,0 +1,210 @@ +static int Player_actor_Check_able_request_main_standup_bed(GAME* game) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + int index = player->now_main_index; + + switch (index) { + case mPlayer_INDEX_WAIT_BED: + return TRUE; + default: + return FALSE; + } +} + +static int Player_actor_request_main_standup_bed(GAME* game, int move_direction, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_STANDUP_BED, priority) && + Player_actor_Check_able_request_main_standup_bed(game)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + xyz_t pos = player->actor_class.world.position; + s16 rot = player->actor_class.shape_info.rotation.y; + f32 x; + f32 z; + + if (move_direction == 1) { + if (rot == 0) { + x = 40.0f; + z = 5.0f; + } else { + x = 40.0f; + z = -5.0f; + } + } else if (move_direction == 2) { + if (rot == 0) { + x = -40.0f; + z = -5.0f; + } else { + x = -40.0f; + z = 5.0f; + } + } else if (move_direction == 3) { + if (rot == 0x4000) { + x = 5.0f; + z = -40.0f; + } else { + x = -5.0f; + z = -40.0f; + } + } else { + if (rot == 0x4000) { + x = 5.0f; + z = 40.0f; + } else { + x = -5.0f; + z = 40.0f; + } + } + + pos.x += x; + pos.z += z; + + if (!Player_actor_SearchPosition_npc_forStand(game, &pos)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + player->requested_main_index_data.standup_bed.move_dir = move_direction; + Player_actor_request_main_index(game, mPlayer_INDEX_STANDUP_BED, priority); + return TRUE; + } + } + return FALSE; +} + +static void Player_actor_settle_main_Standup_bed(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + cKF_SkeletonInfo_R_AnimationMove_dt(&player->keyframe0); + actor->world.angle.y = actor->shape_info.rotation.y; + actor->shape_info.rotation.x = 0; + actor->world.angle.x = 0; + actor->shape_info.rotation.z = 0; + actor->world.angle.z = 0; + actor->shape_info.shadow_size_change_rate = 1.0f; + actor->shape_info.shadow_alpha_change_rate = 1.0f; +} + +static int Player_actor_Get_BasicPlayerAnimeIndex_Standup_bed(int direction, s16 angle) { + if (angle == 0) { + if (direction == 1) { + return mPlayer_ANIM_OUTBED_R1; + } + if (direction == 2) { + return mPlayer_ANIM_OUTBED_L1; + } + } else if (angle == 0x4000) { + if (direction == 3) { + return mPlayer_ANIM_OUTBED_R1; + } + if (direction == 4) { + return mPlayer_ANIM_OUTBED_L1; + } + } else if (angle == -0x8000) { + if (direction == 1) { + return mPlayer_ANIM_OUTBED_L1; + } + if (direction == 2) { + return mPlayer_ANIM_OUTBED_R1; + } + } else if (angle == -0x4000) { + if (direction == 3) { + return mPlayer_ANIM_OUTBED_L1; + } + if (direction == 4) { + return mPlayer_ANIM_OUTBED_R1; + } + } + + return mPlayer_ANIM_OUTBED_R1; +} + +static void Player_actor_setup_main_Standup_bed(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + cKF_SkeletonInfo_R_c* keyf; + mPlayer_request_standup_bed_c* req_up = &player->requested_main_index_data.standup_bed; + int anim_idx; + s16 rot; + + keyf = &player->keyframe0; + anim_idx = Player_actor_Get_BasicPlayerAnimeIndex_Standup_bed(req_up->move_dir, actor->shape_info.rotation.y); + cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(keyf, 0.0f, 1000.0f, 0.0f, 0, 0, 0x4000); + rot = actor->shape_info.rotation.y; + + cKF_SkeletonInfo_R_AnimationMove_ct_base(3.0f, &actor->world.position, &actor->world.position, rot, rot, keyf, 3); + Player_actor_InitAnimation_Base2(actor, game, anim_idx, anim_idx, 1.0f, 1.0f, 0.5f, -3.0f, 0, 0); + Player_actor_setup_main_Base(actor, game); + Player_actor_sound_BED_OUT(actor); +} + +static int Player_actor_CulcAnimation_Standup_bed(ACTOR* actor, f32* frame_calc) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_SetSound_Standup_bed(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 20.0f)) { + Player_actor_sound_LANDING(actor); + } +} + +static void Player_actor_SearchAnimation_Standup_bed(ACTOR* actor, f32 frame) { + f32 per; + f32 mod; + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + f32 cur; + s16 target_x; + s16 target_y; + int angle; + + Player_actor_AppearShadow_fromAnimationFrame(actor, 12.0f, 8.0f); + cur = fc0_p->current_frame; + per = get_percent_forAccelBrake(cur, 1.0f, 21.0f, 3.0f, 3.0f); + + target_x = (int)(-16384.0f * (1.0f - per)); + add_calc_short_angle2(&actor->shape_info.rotation.x, target_x, 1.0f - sqrtf(0.5), 1820, 50); + + per = get_percent_forAccelBrake(cur, 1.0f, 18.0f, 3.0f, 3.0f); + target_y = actor->world.angle.y; + + if (player->animation0_idx == mPlayer_ANIM_OUTBED_R1) { + mod = 16384.0f; + } else { + mod = -16384.0f; + } + + target_y += (s16)(int)(mod * per); + add_calc_short_angle2(&actor->shape_info.rotation.y, target_y, 1.0f - sqrtf(0.5), 1820, 50); + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_SetSound_Standup_bed(actor); + } +} + +static void Player_actor_Movement_Standup_bed(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + cKF_SkeletonInfo_R_AnimationMove_base(&actor->world.position, &actor->shape_info.rotation.y, &actor->scale, + actor->world.angle.y, &player->keyframe0); + Player_actor_Movement_Base_Stop(actor, FALSE); +} + +static void Player_actor_ObjCheck_Standup_bed(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_request_proc_index_fromStandup_bed(ACTOR* actor, GAME* game, int arg) { + if (arg != 0) { + Player_actor_SettleRequestMainIndexPriority(actor); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, 1); + } +} + +static void Player_actor_main_Standup_bed(ACTOR* actor, GAME* game) { + f32 frame_calc; + int arg = Player_actor_CulcAnimation_Standup_bed(actor, &frame_calc); + + Player_actor_SearchAnimation_Standup_bed(actor, frame_calc); + Player_actor_Movement_Standup_bed(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Standup_bed(actor, game); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromStandup_bed(actor, game, arg); +} From 94047e35e46756eb1ee3bed00f109c83f12b7b8e Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Wed, 4 Sep 2024 18:24:43 -0400 Subject: [PATCH 186/234] Link m_train_control, match one func in m_board_ovl Co-Authored-By: Prakxo Co-Authored-By: inspectredc --- config/rel_slices.yml | 4 + include/m_train_control.h | 24 +- src/m_board_ovl.c | 12 +- src/m_play.c | 2 +- src/m_train_control.c | 802 ++++++++++++++++++-------------------- 5 files changed, 409 insertions(+), 435 deletions(-) diff --git a/config/rel_slices.yml b/config/rel_slices.yml index d71d0d67..950a14fb 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -319,6 +319,10 @@ m_titledemo.c: .rodata: [0x80643330, 0x80643350] .data: [0x8065E2D8, 0x8065E2F0] .bss: [0x8129F408, 0x8129F410] +m_train_control.c: + .text: [0x803F2428, 0x803F33DC] + .rodata: [0x80643350, 0x806433B0] + .data: [0x8065E2F0, 0x8065E378] m_time.c: .text: [0x803F33DC, 0x803F3E58] .rodata: [0x806433B0, 0x806433D8] diff --git a/include/m_train_control.h b/include/m_train_control.h index c99be199..377e7580 100644 --- a/include/m_train_control.h +++ b/include/m_train_control.h @@ -2,7 +2,7 @@ #define M_TRAIN_CONTROL_H #include "types.h" -#include "m_play_h.h" +#include "game_h.h" #ifdef __cplusplus extern "C" { @@ -12,21 +12,21 @@ extern "C" { #define mTRC_FAST_SPEED 6.0f // speed when farther away from station enum { - mTRC_ACTION_NONE, - mTRC_ACTION_SPAWN_MOVING, - mTRC_ACTION_BEGIN_SLOWDOWN, - mTRC_ACTION_BEGIN_STOP, - mTRC_ACTION_SIGNAL_STOPPED, - mTRC_ACTION_WAIT_STOPPED, - mTRC_ACTION_SIGNAL_STARTING, - mTRC_ACTION_BEGIN_PULL_OUT, - mTRC_ACTION_SPEED_UP, + mTRC_ACTION_NONE, + mTRC_ACTION_SPAWN_MOVING, + mTRC_ACTION_BEGIN_SLOWDOWN, + mTRC_ACTION_BEGIN_STOP, + mTRC_ACTION_SIGNAL_STOPPED, + mTRC_ACTION_WAIT_STOPPED, + mTRC_ACTION_SIGNAL_STARTING, + mTRC_ACTION_BEGIN_PULL_OUT, + mTRC_ACTION_SPEED_UP, - mTRC_ACTION_NUM + mTRC_ACTION_NUM }; extern void mTRC_init(GAME* game); -extern void mTRC_move(GAME_PLAY* play); +extern void mTRC_move(GAME* game); #ifdef __cplusplus } diff --git a/src/m_board_ovl.c b/src/m_board_ovl.c index 4d9844e0..fdaa41c3 100644 --- a/src/m_board_ovl.c +++ b/src/m_board_ovl.c @@ -1148,18 +1148,18 @@ static void mBD_set_writing_body(Submenu* submenu, mSM_MenuInfo_c* menu_info, GA } } -/* TODO: @nonmatching - prolog instruction swap (likely due to way variables are accessed) */ static void mBD_set_writing_header(Submenu* submenu, GAME* game, mSM_MenuInfo_c* menu_info, f32 x, f32 y, rgba_t* color) { mBD_Ovl_c* board_ovl = submenu->overlay->board_ovl; Mail_ct_c* mail_content = &board_ovl->mail.content; u8* str_p; - int i = mail_content->header_back_start; + u8* header_back_start_p = &mail_content->header_back_start; + int i = *header_back_start_p; int header_len = 0; int len; if (menu_info->proc_status == mSM_OVL_PROC_PLAY) { - if (menu_info->data0 == mSM_BD_OPEN_WRITE_ISLAND) { + if (menu_info->data0 == 3) { mFont_SetLineStrings(game, mail_content->header, board_ovl->lengths[mBD_FIELD_HEADER], x, y, color->r, color->g, color->b, 255, FALSE, TRUE, 1.0f, 1.0f, mFont_MODE_POLY); } else { @@ -1169,8 +1169,8 @@ static void mBD_set_writing_header(Submenu* submenu, GAME* game, mSM_MenuInfo_c* len = board_ovl->header_name_len; } - mFont_SetLineStrings(game, mail_content->header, mail_content->header_back_start, x, y, color->r, color->g, - color->b, 255, FALSE, TRUE, 1.0f, 1.0f, mFont_MODE_POLY); + mFont_SetLineStrings(game, mail_content->header, *header_back_start_p, x, y, color->r, color->g, color->b, + 255, FALSE, TRUE, 1.0f, 1.0f, mFont_MODE_POLY); str_p = mail_content->header; while (i-- != 0) { @@ -1192,7 +1192,7 @@ static void mBD_set_writing_header(Submenu* submenu, GAME* game, mSM_MenuInfo_c* } else { u8 tmp_header[MAIL_HEADER_LEN + PLAYER_NAME_LEN]; - if (menu_info->data0 == mSM_BD_OPEN_WRITE_ISLAND || menu_info->data0 == mSM_BD_OPEN_READ_ISLAND) { + if (menu_info->data0 == 3 || menu_info->data0 == 4) { mem_copy(tmp_header, mail_content->header, board_ovl->lengths[mBD_FIELD_HEADER]); len = board_ovl->lengths[mBD_FIELD_HEADER]; } else if (mail_content->mail_type == mMl_TYPE_SHOP_SALE_LEAFLET || diff --git a/src/m_play.c b/src/m_play.c index 4cd21dbb..7e47f95a 100644 --- a/src/m_play.c +++ b/src/m_play.c @@ -586,7 +586,7 @@ void Game_play_move(GAME_PLAY* play) { play->game.doing_point = 2; mPO_business_proc(play); play->game.doing_point = 3; - mTRC_move(play); + mTRC_move(&play->game); play->game.doing_point = 4; Balloon_move(play); mEnv_ManagePointLight(play, &play->kankyo, &play->global_light); diff --git a/src/m_train_control.c b/src/m_train_control.c index 31ac381a..9fdc4b3b 100644 --- a/src/m_train_control.c +++ b/src/m_train_control.c @@ -13,518 +13,488 @@ #include "m_name_table.h" #include "m_collision_bg.h" -#define mTRC_RTC_TIME_SECONDS(rtc_time) (rtc_time->sec + (rtc_time->min + rtc_time->hour * mTM_MINUTES_IN_HOUR) * mTM_SECONDS_IN_MINUTE) +#define mTRC_RTC_TIME_SECONDS(rtc_time) \ + (rtc_time->sec + (rtc_time->min + rtc_time->hour * mTM_MINUTES_IN_HOUR) * mTM_SECONDS_IN_MINUTE) static void mTRC_SetMicPos(GAME_PLAY* play, xyz_t* mic_pos) { - xyz_t pos; - PLAYER_ACTOR* player = get_player_actor_withoutCheck(play); - Door_data_c* door = Common_GetPointer(structure_exit_door_data); - f32 z = cosf_table(0.0f) * 77.0f; // cos(0) = 1, 1.0f * 77.0f = 77.0f - f32 x = sinf_table(0.0f) * 77.0f; // sin(0) = 0, 0.0f * 77.0f = 0.0f + xyz_t pos; + PLAYER_ACTOR* player = get_player_actor_withoutCheck(play); + Door_data_c* door = Common_GetPointer(structure_exit_door_data); + f32 z = cosf_table(0.0f) * 77.0f; // cos(0) = 1, 1.0f * 77.0f = 77.0f + f32 x = sinf_table(0.0f) * 77.0f; // sin(0) = 0, 0.0f * 77.0f = 0.0f - if (Common_Get(field_type) != mFI_FIELDTYPE2_FG) { - xyz_t_move_s_xyz(&pos, &door->exit_position); - } - else { - if (player != NULL) { - xyz_t_move(&pos, &player->actor_class.world.position); + if (Common_Get(field_type) != mFI_FIELDTYPE2_FG) { + xyz_t_move_s_xyz(&pos, &door->exit_position); + } else { + if (player != NULL) { + xyz_t_move(&pos, &player->actor_class.world.position); + } else { + xyz_t_move(&pos, &ZeroVec); + } } - else { - xyz_t_move(&pos, &ZeroVec); - } - } - mic_pos->x = pos.x + x; // equates to pos.x + 0.0f = pos.x - mic_pos->y = pos.y + 240.0f; - mic_pos->z = pos.z + z; // equates to pos.z + 77.0f + mic_pos->x = pos.x + x; // equates to pos.x + 0.0f = pos.x + mic_pos->y = pos.y + 240.0f; + mic_pos->z = pos.z + z; // equates to pos.z + 77.0f } static void mTRC_KishaStatusLevel(GAME_PLAY* play, xyz_t pos, f32 speed) { - xyz_t mic_pos; + xyz_t mic_pos; - f32 x; - f32 y; - f32 z; + f32 x; + f32 y; + f32 z; - s16 angle; - u16 unsigned_angle; - f32 distance; + s16 angle; + u16 unsigned_angle; + f32 distance; - s16 angle2; - u16 unsigned_angle2; - f32 distance2; + s16 angle2; + u16 unsigned_angle2; + f32 distance2; - mTRC_SetMicPos(play, &mic_pos); - x = pos.x - mic_pos.x; - y = pos.y - mic_pos.y; - z = pos.z - mic_pos.z; + mTRC_SetMicPos(play, &mic_pos); + x = pos.x - mic_pos.x; + y = pos.y - mic_pos.y; + z = pos.z - mic_pos.z; - angle = atans_table(z, x); - distance = sqrtf(x * x + y * y + z * z); - unsigned_angle = (int)angle; + angle = atans_table(z, x); + distance = sqrtf(x * x + y * y + z * z); + unsigned_angle = (int)angle; - x = (pos.x - 250.0f) - mic_pos.x; - y = pos.y - mic_pos.y; - z = pos.z - mic_pos.z; + x = (pos.x - 250.0f) - mic_pos.x; + y = pos.y - mic_pos.y; + z = pos.z - mic_pos.z; - angle2 = atans_table(z, x); - distance2 = sqrtf(x * x + y * y + z * z); - unsigned_angle2 = (int)angle2; + angle2 = atans_table(z, x); + distance2 = sqrtf(x * x + y * y + z * z); + unsigned_angle2 = (int)angle2; - sAdos_KishaStatusLevel(speed, Common_GetPointer(train_coming_flag), unsigned_angle, distance, Common_GetPointer(train_exists_flag), unsigned_angle2, distance2); + sAdos_KishaStatusLevel(speed, (u32)Common_GetPointer(train_coming_flag), unsigned_angle, distance, + (u32)Common_GetPointer(train_exists_flag), unsigned_angle2, distance2); } static void mTRC_KishaStatusTrg(u8 state) { - if (state == 1) { - Common_Set(train_approaching_flag, TRUE); - } + if (state == 1) { + Common_Set(train_approaching_flag, TRUE); + } - sAdos_KishaStatusTrg(state); + sAdos_KishaStatusTrg(state); } static int aTRC_area_check(GAME_PLAY* play, xyz_t pos) { - int block_x; - int block_z; - int x_diff; + int block_x; + int block_z; + int x_diff; - mFI_Wpos2BlockNum(&block_x, &block_z, pos); - x_diff = (block_x - play->block_table.block_x) >= 0 ? (block_x - play->block_table.block_x) : -(block_x - play->block_table.block_x); + mFI_Wpos2BlockNum(&block_x, &block_z, pos); + x_diff = (block_x - play->block_table.block_x) >= 0 ? (block_x - play->block_table.block_x) + : -(block_x - play->block_table.block_x); - if (x_diff >= 2 || block_z != play->block_table.block_z) { - return FALSE; - } - return TRUE; + if (x_diff >= 2 || block_z != play->block_table.block_z) { + return FALSE; + } + return TRUE; } static int mTRC_go_process() { - int res = FALSE; - int demo_no = mEv_CheckTitleDemo(); + int res = FALSE; + int demo_no = mEv_CheckTitleDemo(); - if (((int)demo_no == 0 || demo_no == 1 || demo_no == -9) && Common_Get(field_draw_type) != FIELD_DRAW_TYPE_TRAIN && Common_Get(field_draw_type) != FIELD_DRAW_TYPE_PLAYER_SELECT) { - res = TRUE; - } + if (((int)demo_no == 0 || demo_no == 1 || demo_no == -9) && Common_Get(field_draw_type) != FIELD_DRAW_TYPE_TRAIN && + Common_Get(field_draw_type) != FIELD_DRAW_TYPE_PLAYER_SELECT) { + res = TRUE; + } - return res; + return res; } #define HOUR_MIN_SEC_TO_SECS(h, m, s) (h * 3600 + m * 60 + s) static u32 mTRC_get_depart_time() { - static u32 time_table[25] = { - HOUR_MIN_SEC_TO_SECS( 0, 19, 0), - HOUR_MIN_SEC_TO_SECS( 1, 19, 0), - HOUR_MIN_SEC_TO_SECS( 2, 19, 0), - HOUR_MIN_SEC_TO_SECS( 3, 19, 0), - HOUR_MIN_SEC_TO_SECS( 4, 19, 0), - HOUR_MIN_SEC_TO_SECS( 5, 19, 0), - HOUR_MIN_SEC_TO_SECS( 6, 19, 0), - HOUR_MIN_SEC_TO_SECS( 7, 19, 0), - HOUR_MIN_SEC_TO_SECS( 8, 19, 0), - HOUR_MIN_SEC_TO_SECS( 9, 19, 0), - HOUR_MIN_SEC_TO_SECS(10, 19, 0), - HOUR_MIN_SEC_TO_SECS(11, 19, 0), - HOUR_MIN_SEC_TO_SECS(12, 19, 0), - HOUR_MIN_SEC_TO_SECS(13, 19, 0), - HOUR_MIN_SEC_TO_SECS(14, 19, 0), - HOUR_MIN_SEC_TO_SECS(15, 19, 0), - HOUR_MIN_SEC_TO_SECS(16, 19, 0), - HOUR_MIN_SEC_TO_SECS(17, 19, 0), - HOUR_MIN_SEC_TO_SECS(18, 19, 0), - HOUR_MIN_SEC_TO_SECS(19, 19, 0), - HOUR_MIN_SEC_TO_SECS(20, 19, 0), - HOUR_MIN_SEC_TO_SECS(21, 19, 0), - HOUR_MIN_SEC_TO_SECS(22, 19, 0), - HOUR_MIN_SEC_TO_SECS(23, 19, 0), - HOUR_MIN_SEC_TO_SECS(24, 19, 0) - }; + static u32 time_table[25] = { + HOUR_MIN_SEC_TO_SECS(0, 19, 0), HOUR_MIN_SEC_TO_SECS(1, 19, 0), HOUR_MIN_SEC_TO_SECS(2, 19, 0), + HOUR_MIN_SEC_TO_SECS(3, 19, 0), HOUR_MIN_SEC_TO_SECS(4, 19, 0), HOUR_MIN_SEC_TO_SECS(5, 19, 0), + HOUR_MIN_SEC_TO_SECS(6, 19, 0), HOUR_MIN_SEC_TO_SECS(7, 19, 0), HOUR_MIN_SEC_TO_SECS(8, 19, 0), + HOUR_MIN_SEC_TO_SECS(9, 19, 0), HOUR_MIN_SEC_TO_SECS(10, 19, 0), HOUR_MIN_SEC_TO_SECS(11, 19, 0), + HOUR_MIN_SEC_TO_SECS(12, 19, 0), HOUR_MIN_SEC_TO_SECS(13, 19, 0), HOUR_MIN_SEC_TO_SECS(14, 19, 0), + HOUR_MIN_SEC_TO_SECS(15, 19, 0), HOUR_MIN_SEC_TO_SECS(16, 19, 0), HOUR_MIN_SEC_TO_SECS(17, 19, 0), + HOUR_MIN_SEC_TO_SECS(18, 19, 0), HOUR_MIN_SEC_TO_SECS(19, 19, 0), HOUR_MIN_SEC_TO_SECS(20, 19, 0), + HOUR_MIN_SEC_TO_SECS(21, 19, 0), HOUR_MIN_SEC_TO_SECS(22, 19, 0), HOUR_MIN_SEC_TO_SECS(23, 19, 0), + HOUR_MIN_SEC_TO_SECS(24, 19, 0) + }; - int i = 0; - u32 depart_time; - lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); - u32 now_sec = mTRC_RTC_TIME_SECONDS(rtc_time); - int day; - - while (TRUE) { - if (time_table[i] >= now_sec) { - depart_time = time_table[i] - HOUR_MIN_SEC_TO_SECS(0, 4, 10); - break; + int i = 0; + u32 depart_time; + lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); + u32 now_sec = mTRC_RTC_TIME_SECONDS(rtc_time); + int day; + + while (TRUE) { + if (time_table[i] >= now_sec) { + depart_time = time_table[i] - HOUR_MIN_SEC_TO_SECS(0, 4, 10); + break; + } + i++; } - i++; - } - Common_Set(train_day, rtc_time->day); - return depart_time; + Common_Set(train_day, rtc_time->day); + return depart_time; } static int mTRC_time_check() { - u32 now_sec = mTRC_RTC_TIME_SECONDS(Common_GetPointer(time.rtc_time)); - return now_sec >= Common_Get(train_start_timer); + u32 now_sec = mTRC_RTC_TIME_SECONDS(Common_GetPointer(time.rtc_time)); + return now_sec >= Common_Get(train_start_timer); } static void mTRC_mati_init() { - xyz_t pos; - - Common_Set(train_action, mTRC_ACTION_WAIT_STOPPED); - Common_Set(train_flag, TRUE); - Common_Set(train_signal, TRUE); - Common_Set(train_control_state, 1); - Common_Set(train_last_control_state, 1); + xyz_t pos; - pos.x = 2376.0f; - pos.z = 740.0f; - pos.y = 180.0f; - Common_Set(train_position, pos); + Common_Set(train_action, mTRC_ACTION_WAIT_STOPPED); + Common_Set(train_flag, TRUE); + Common_Set(train_signal, TRUE); + Common_Set(train_control_state, 1); + Common_Set(train_last_control_state, 1); + + pos.x = 2367.0f; + pos.z = 740.0f; + pos.y = 180.0f; + Common_Set(train_position, pos); } static void mTRC_demo_init() { - xyz_t pos; - lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); - - Common_Set(train_action, mTRC_ACTION_BEGIN_SLOWDOWN); - Common_Set(train_speed, mTRC_SLOW_SPEED); - Common_Set(train_flag, TRUE); - Common_Set(train_start_timer, mTRC_RTC_TIME_SECONDS(rtc_time) - HOUR_MIN_SEC_TO_SECS(0, 4, 50)); - Common_Set(train_day, Common_Get(time.rtc_time.day)); - Common_Set(train_control_state, 0); - Common_Set(train_last_control_state, 0); + xyz_t pos; + lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); - pos.x = 2037.0f; - pos.z = 740.0f; - pos.y = 180.0f; - Common_Set(train_position, pos); + Common_Set(train_action, mTRC_ACTION_BEGIN_SLOWDOWN); + Common_Set(train_speed, mTRC_SLOW_SPEED); + Common_Set(train_flag, TRUE); + Common_Set(train_start_timer, mTRC_RTC_TIME_SECONDS(rtc_time) - HOUR_MIN_SEC_TO_SECS(0, 4, 50)); + Common_Set(train_day, Common_Get(time.rtc_time.day)); + Common_Set(train_control_state, 0); + Common_Set(train_last_control_state, 0); + + pos.x = 2037.0f; + pos.z = 740.0f; + pos.y = 180.0f; + Common_Set(train_position, pos); } static void mTRC_call_init() { - xyz_t pos; - - Common_Set(train_action, mTRC_ACTION_BEGIN_SLOWDOWN); - Common_Set(train_speed, 0.0f); - Common_Set(train_flag, TRUE); - Common_Set(train_control_state, 1); - Common_Set(train_last_control_state, 1); + xyz_t pos; - pos.x = 1904.0f; - pos.z = 740.0f; - pos.y = 180.0f; - Common_Set(train_position, pos); + Common_Set(train_action, mTRC_ACTION_BEGIN_SLOWDOWN); + Common_Set(train_speed, 0.0f); + Common_Set(train_flag, TRUE); + Common_Set(train_control_state, 1); + Common_Set(train_last_control_state, 1); + + pos.x = 1904.0f; + pos.z = 740.0f; + pos.y = 180.0f; + Common_Set(train_position, pos); } static void mTRC_norm_init() { - xyz_t pos; + xyz_t pos; - Common_Set(train_action, mTRC_ACTION_SPAWN_MOVING); - Common_Set(train_speed, 0.0f); - Common_Set(train_flag, TRUE); - Common_Set(train_control_state, 0); - Common_Set(train_last_control_state, 0); + Common_Set(train_action, mTRC_ACTION_SPAWN_MOVING); + Common_Set(train_speed, 0.0f); + Common_Set(train_flag, TRUE); + Common_Set(train_control_state, 0); + Common_Set(train_last_control_state, 0); - pos.x = 320.0f; - pos.z = 740.0f; - pos.y = 180.0f; - Common_Set(train_position, pos); + pos.x = 320.0f; + pos.z = 740.0f; + pos.y = 180.0f; + Common_Set(train_position, pos); } static int mTRC_schedule(GAME_PLAY* play) { - int res = -1; - - if (mEv_CheckTitleDemo() == 1) { - if (Common_Get(train_action) == mTRC_ACTION_NONE) { - mTRC_mati_init(); - } - - return -1; - } - else { - switch (Common_Get(train_coming_flag)) { - case 3: - { - Common_Set(train_coming_flag, 0); - mTRC_demo_init(); - res = 0; - break; - } - - case 2: - { - if (!aTRC_area_check(play, Common_Get(train_position)) && Common_Get(train_action) >= mTRC_ACTION_SIGNAL_STARTING) { - mTRC_call_init(); - res = 1; - break; - } - - if (Common_Get(train_action) < mTRC_ACTION_SIGNAL_STARTING && Common_Get(train_action) != mTRC_ACTION_NONE) { - Common_Set(train_coming_flag, FALSE); - Common_Set(train_control_state, 1); - Common_Set(train_last_control_state, 1); - break; - } + int res = -1; + if (mEv_CheckTitleDemo() == 1) { if (Common_Get(train_action) == mTRC_ACTION_NONE) { - mTRC_call_init(); - res = 1; - break; + mTRC_mati_init(); } - break; - } - case 4: - { - break; - } + return -1; + } else { + switch (Common_Get(train_coming_flag)) { + case 3: { + Common_Set(train_coming_flag, 0); + mTRC_demo_init(); + res = 0; + break; + } - default: - { - if (Common_Get(train_action) == mTRC_ACTION_NONE && mEv_CheckArbeit() == FALSE && mTRC_time_check()) { - mTRC_norm_init(); - res = 1; + case 2: { + if (!aTRC_area_check(play, Common_Get(train_position)) && + Common_Get(train_action) >= mTRC_ACTION_SIGNAL_STARTING) { + mTRC_call_init(); + res = 1; + break; + } + + if (Common_Get(train_action) < mTRC_ACTION_SIGNAL_STARTING && + Common_Get(train_action) != mTRC_ACTION_NONE) { + Common_Set(train_coming_flag, FALSE); + Common_Set(train_control_state, 1); + Common_Set(train_last_control_state, 1); + break; + } + + if (Common_Get(train_action) == mTRC_ACTION_NONE) { + mTRC_call_init(); + res = 1; + break; + } + break; + } + + case 4: { + break; + } + + default: { + if (Common_Get(train_action) == mTRC_ACTION_NONE && mEv_CheckArbeit() == FALSE && mTRC_time_check()) { + mTRC_norm_init(); + res = 1; + } + break; + } } - break; - } } - } - return res; + return res; } -/* TODO: @nonmatching something to do with common data loading at start of function */ static void mTRC_trainControl(GAME_PLAY* play, int state) { - u8 signal = Common_Get(train_signal); - u8 action = Common_Get(train_action); - u8 timer = Common_Get(train_timer); - u32 start_timer = Common_Get(train_start_timer); - f32 speed = Common_Get(train_speed); - xyz_t pos = Common_Get(train_position); - u8 day = Common_Get(time.rtc_time.day); + lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); + u8 signal = Common_Get(train_signal); + u8 action = Common_Get(train_action); + u8 timer = Common_Get(train_timer); + u32 start_timer = Common_Get(train_start_timer); + f32 speed = Common_Get(train_speed); + xyz_t pos = Common_Get(train_position); + int block_x; + int block_z; + int now_state = state; - if (Common_Get(train_day) != day) { - if (start_timer >= mTM_SECONDS_IN_DAY) { - start_timer = start_timer - mTM_SECONDS_IN_DAY; - } - - Common_Set(train_day, day); - } - - switch (action) { - case mTRC_ACTION_SPAWN_MOVING: - { - int block_x; - int block_z; - - speed = mTRC_FAST_SPEED; - mFI_Wpos2BlockNum(&block_x, &block_z, pos); - - if (block_x >= 2) { - action = mTRC_ACTION_BEGIN_SLOWDOWN; - } - break; - } - - case mTRC_ACTION_BEGIN_SLOWDOWN: - { - chase_f(&speed, mTRC_SLOW_SPEED, 0.01f); - if (pos.x > 2165.0f) { - action = mTRC_ACTION_BEGIN_STOP; - speed = mTRC_SLOW_SPEED; - } - break; - } - - case mTRC_ACTION_BEGIN_STOP: - { - chase_f(&speed, 0.0f, 0.005f); - if (F32_IS_ZERO(speed)) { - signal = TRUE; - timer = 48; - action = mTRC_ACTION_SIGNAL_STOPPED; - state = 2; - speed = 0.0f; - } - break; - } - - case mTRC_ACTION_SIGNAL_STOPPED: - { - if (timer == 0) { - action = mTRC_ACTION_WAIT_STOPPED; - start_timer += 310; - } - else { - timer--; - } - break; - } - - case mTRC_ACTION_WAIT_STOPPED: - { - if (Common_Get(train_control_state) != Common_Get(train_last_control_state)) { - Common_Set(train_control_state, Common_Get(train_last_control_state)); - signal = FALSE; - Common_Set(train_signal, FALSE); - } - else { - if (Common_Get(train_control_state) == 0 && mTRC_time_check()) { - signal = FALSE; - Common_Set(train_signal, FALSE); + if (Common_Get(train_day) != rtc_time->day) { + if (start_timer >= mTM_SECONDS_IN_DAY) { + start_timer -= mTM_SECONDS_IN_DAY; } - } - if (signal == FALSE) { - timer = 84; - action = mTRC_ACTION_SIGNAL_STARTING; - } - break; + Common_Set(train_day, rtc_time->day); } - case mTRC_ACTION_SIGNAL_STARTING: - { - if (timer == 0) { - timer = 180; - action = mTRC_ACTION_BEGIN_PULL_OUT; - state = 3; - } - else { - timer--; - } - break; + switch (action) { + case 0: + break; + case mTRC_ACTION_SPAWN_MOVING: { + speed = mTRC_FAST_SPEED; + mFI_Wpos2BlockNum(&block_x, &block_z, pos); + + if (block_x >= 2) { + action = mTRC_ACTION_BEGIN_SLOWDOWN; + } + break; + } + + case mTRC_ACTION_BEGIN_SLOWDOWN: { + chase_f(&speed, mTRC_SLOW_SPEED, 0.01f); + if (pos.x > 2165.0f) { + action = mTRC_ACTION_BEGIN_STOP; + speed = mTRC_SLOW_SPEED; + } + break; + } + + case mTRC_ACTION_BEGIN_STOP: { + chase_f(&speed, 0.0f, 0.005f); + if (fabsf(speed) < 0.008f) { + signal = TRUE; + timer = 48; + action = mTRC_ACTION_SIGNAL_STOPPED; + now_state = 2; + speed = 0.0f; + } + break; + } + + case mTRC_ACTION_SIGNAL_STOPPED: { + if (timer == 0) { + action = mTRC_ACTION_WAIT_STOPPED; + start_timer += 310; + } else { + timer--; + } + break; + } + + case mTRC_ACTION_WAIT_STOPPED: { + if (Common_Get(train_control_state) != Common_Get(train_last_control_state)) { + Common_Set(train_control_state, Common_Get(train_last_control_state)); + signal = FALSE; + Common_Set(train_signal, FALSE); + } else if (Common_Get(train_control_state) == 0 && mTRC_time_check()) { + signal = FALSE; + Common_Set(train_signal, FALSE); + } + + if (signal == FALSE) { + timer = 84; + action = mTRC_ACTION_SIGNAL_STARTING; + } + break; + } + + case mTRC_ACTION_SIGNAL_STARTING: { + if (timer == 0) { + timer = 180; + action = mTRC_ACTION_BEGIN_PULL_OUT; + now_state = 3; + } else { + timer--; + } + break; + } + + case mTRC_ACTION_BEGIN_PULL_OUT: { + chase_f(&speed, mTRC_SLOW_SPEED, 0.00345f); + + if (timer == 0) { + action = mTRC_ACTION_SPEED_UP; + } else { + timer--; + } + break; + } + + case mTRC_ACTION_SPEED_UP: { + chase_f(&speed, mTRC_FAST_SPEED, 0.00345); + if (pos.x > 4400.0f) { + start_timer = mTRC_get_depart_time(); + action = mTRC_ACTION_NONE; + Common_Set(train_flag, FALSE); + now_state = 4; + } + break; + } } - case mTRC_ACTION_BEGIN_PULL_OUT: - { - chase_f(&speed, mTRC_SLOW_SPEED, 0.00345f); + if (action != mTRC_ACTION_NONE) { + ACTOR* train_actor = Actor_info_fgName_search(&play->actor_info, TRAIN0, ACTOR_PART_ITEM); + if (Common_Get(train_flag) == FALSE && train_actor == NULL) { + Common_Set(train_flag, TRUE); + } - if (timer == 0) { - action = mTRC_ACTION_SPEED_UP; - } - else { - timer--; - } - break; + pos.x += 0.5f * speed; + mTRC_KishaStatusLevel(play, pos, speed); } - case mTRC_ACTION_SPEED_UP: - { - chase_f(&speed, mTRC_FAST_SPEED, 0.00345); - if (pos.x > 4400.0f) { - start_timer = mTRC_get_depart_time(); - action = mTRC_ACTION_NONE; - Common_Set(train_flag, FALSE); - state = 4; - } - break; - } - } - - if (action != mTRC_ACTION_NONE) { - ACTOR* train_actor = Actor_info_fgName_search(&play->actor_info, TRAIN0, ACTOR_PART_ITEM); - if (Common_Get(train_flag) == FALSE && train_actor == NULL) { - Common_Set(train_flag, TRUE); + if (now_state >= 0) { + mTRC_KishaStatusTrg(now_state); } - pos.x += 0.5f * speed; - mTRC_KishaStatusLevel(play, pos, speed); - } - - if (state >= 0) { - mTRC_KishaStatusTrg(state); - } - - Common_Set(train_signal, signal); - Common_Set(train_action, action); - Common_Set(train_timer, timer); - Common_Set(train_start_timer, start_timer); - Common_Set(train_speed, speed); - Common_Set(train_position, pos); + Common_Set(train_signal, signal); + Common_Set(train_action, action); + Common_Set(train_timer, timer); + Common_Set(train_start_timer, start_timer); + Common_Set(train_speed, speed); + Common_Set(train_position, pos); } static void mTRC_trainSet(GAME_PLAY* play) { - ACTOR* train_actor; - ACTOR* caboose_actor; - xyz_t pos = Common_Get(train_position); - xyz_t xz_pos; - xyz_t xyz_pos; + ACTOR* train_actor; + ACTOR* caboose_actor; + xyz_t pos = Common_Get(train_position); + xyz_t xz_pos; + xyz_t xyz_pos; - if (Common_Get(field_type) != mFI_FIELDTYPE2_FG || !Common_Get(train_flag)) { - return; - } - else if (Common_Get(clip).structure_clip != NULL) { - f32 x = pos.x; - xz_pos.x = pos.x; - xz_pos.z = 740.0f; - xz_pos.y = 0.0f; + if (Common_Get(field_type) != mFI_FIELDTYPE2_FG || !Common_Get(train_flag)) { + return; + } else if (Common_Get(clip).structure_clip != NULL) { + f32 x = pos.x; + xz_pos.x = pos.x; + xz_pos.z = 740.0f; + xz_pos.y = 0.0f; - if (aTRC_area_check(play, xz_pos)) { - train_actor = Actor_info_fgName_search(&play->actor_info, TRAIN0, ACTOR_PART_ITEM); - if (train_actor == NULL) { - /* spawn train actor since it doesn't exist */ - train_actor = (*Common_Get(clip.structure_clip)->setup_actor_proc)(play, TRAIN0, -1, x, 740.0f); + if (aTRC_area_check(play, xz_pos)) { + train_actor = Actor_info_fgName_search(&play->actor_info, TRAIN0, ACTOR_PART_ITEM); + if (train_actor == NULL) { + /* spawn train actor since it doesn't exist */ + train_actor = + (ACTOR*)Common_Get(clip.structure_clip)->setup_actor_proc(&play->game, TRAIN0, -1, x, 740.0f); - /* for whatever reason, train actor didn't spawn, so exit */ - if (train_actor == NULL) { - return; + /* for whatever reason, train actor didn't spawn, so exit */ + if (train_actor == NULL) { + return; + } + } else { + xyz_pos.x = xz_pos.x; + xyz_pos.z = xz_pos.z; + xyz_pos.y = mCoBG_GetBgY_OnlyCenter_FromWpos2(xyz_pos, 0.0f); + + xyz_t_move(&train_actor->world.position, &xyz_pos); + } + + x -= 250.0f; + caboose_actor = Actor_info_fgName_search(&play->actor_info, TRAIN1, ACTOR_PART_ITEM); + if (caboose_actor == NULL) { + caboose_actor = + (ACTOR*)Common_Get(clip.structure_clip)->setup_actor_proc(&play->game, TRAIN1, -1, x, 740.0f); + if (caboose_actor == NULL) { + Actor_delete(train_actor); + return; + } + } else { + xyz_pos.x = x; + xyz_pos.z = 740.0f; + xyz_pos.y = mCoBG_GetBgY_OnlyCenter_FromWpos2(xyz_pos, 0.0f); + + xyz_t_move(&caboose_actor->world.position, &xyz_pos); + } + + Common_Set(train_flag, FALSE); + + train_actor->block_x = -1; + train_actor->block_z = -1; + train_actor->child_actor = caboose_actor; + + caboose_actor->block_x = -1; + caboose_actor->block_z = -1; + caboose_actor->parent_actor = train_actor; } - } - else { - xyz_pos.x = xz_pos.x; - xyz_pos.z = xz_pos.z; - xyz_pos.y = mCoBG_GetBgY_OnlyCenter_FromWpos2(xyz_pos, 0.0f); - - xyz_t_move(&train_actor->world.position, &xyz_pos); - } - - x -= 250.0f; - caboose_actor = Actor_info_fgName_search(&play->actor_info, TRAIN1, ACTOR_PART_ITEM); - if (caboose_actor == NULL) { - caboose_actor = (*Common_Get(clip.structure_clip)->setup_actor_proc)(play, TRAIN1, -1, x, 740.0f); - if (caboose_actor == NULL) { - Actor_delete(train_actor); - return; - } - } - else { - xyz_pos.x = x; - xyz_pos.z = 740.0f; - xyz_pos.y = mCoBG_GetBgY_OnlyCenter_FromWpos2(xyz_pos, 0.0f); - - xyz_t_move(&caboose_actor->world.position, &xyz_pos); - } - - Common_Set(train_flag, FALSE); - - train_actor->block_x = -1; - train_actor->block_z = -1; - train_actor->child_actor = caboose_actor; - - caboose_actor->block_x = -1; - caboose_actor->block_z = -1; - caboose_actor->parent_actor = train_actor; } - } } extern void mTRC_init(GAME* game) { - Common_Set(train_start_timer, mTRC_get_depart_time()); - Common_Set(train_coming_flag, 0); - Common_Set(train_exists_flag, FALSE); - Common_Set(train_control_state, 0); - Common_Set(train_last_control_state, 0); - Common_Set(train_signal, FALSE); - Common_Set(train_action, 0); - Common_Set(train_timer, 0); - Common_Set(train_speed, 0.0f); - Common_Set(train_position, ZeroVec); - Common_Set(train_approaching_flag, FALSE); - Common_Set(train_flag, FALSE); + Common_Set(train_start_timer, mTRC_get_depart_time()); + Common_Set(train_coming_flag, 0); + Common_Set(train_exists_flag, FALSE); + Common_Set(train_control_state, 0); + Common_Set(train_last_control_state, 0); + Common_Set(train_signal, FALSE); + Common_Set(train_action, 0); + Common_Set(train_timer, 0); + Common_Set(train_speed, 0.0f); + Common_Set(train_position, ZeroVec); + Common_Set(train_approaching_flag, FALSE); + Common_Set(train_flag, FALSE); } -extern void mTRC_move(GAME_PLAY* play) { - PLAYER_ACTOR* player = get_player_actor_withoutCheck(play); - int state; - Common_Set(train_approaching_flag, FALSE); +extern void mTRC_move(GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + PLAYER_ACTOR* player = get_player_actor_withoutCheck(play); + int state; + Common_Set(train_approaching_flag, FALSE); - if (!mTRC_go_process() || player == NULL) { - return; - } + if (!mTRC_go_process() || player == NULL) { + return; + } - state = mTRC_schedule(play); - mTRC_trainControl(play, state); - mTRC_trainSet(play); + state = mTRC_schedule(play); + mTRC_trainControl(play, state); + mTRC_trainSet(play); } From af127f219c135a6b7b752800ee74909116e0617d Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Thu, 5 Sep 2024 04:48:16 -0400 Subject: [PATCH 187/234] More player TUs --- include/c_keyframe.h | 12 +- include/m_player.h | 24 +++- include/m_player_lib.h | 1 + src/ac_my_room_move.c_inc | 4 +- src/c_keyframe.c | 22 +-- src/m_player.c | 2 +- src/m_player_main_climbup_pitfall.c_inc | 103 ++++++++++++++ src/m_player_main_close_furniture.c_inc | 8 +- src/m_player_main_door.c_inc | 12 +- src/m_player_main_fall_pitfall.c_inc | 84 +++++++++++ src/m_player_main_lie_bed.c_inc | 4 +- src/m_player_main_mail_jump.c_inc | 78 +++++++++++ src/m_player_main_mail_land.c_inc | 74 ++++++++++ src/m_player_main_notice_bee.c_inc | 148 ++++++++++++++++++++ src/m_player_main_open_furniture.c_inc | 8 +- src/m_player_main_outdoor.c_inc | 27 ++-- src/m_player_main_pull.c_inc | 12 +- src/m_player_main_push.c_inc | 12 +- src/m_player_main_ready_pitfall.c_inc | 97 +++++++++++++ src/m_player_main_roll_bed.c_inc | 4 +- src/m_player_main_standup_bed.c_inc | 2 +- src/m_player_main_struggle_pitfall.c_inc | 123 ++++++++++++++++ src/m_player_main_stung_bee.c_inc | 125 +++++++++++++++++ src/m_player_main_wait_open_furniture.c_inc | 8 +- src/m_player_main_walk.c_inc | 14 +- 25 files changed, 928 insertions(+), 80 deletions(-) diff --git a/include/c_keyframe.h b/include/c_keyframe.h index 1f5b9b42..34aa8f49 100644 --- a/include/c_keyframe.h +++ b/include/c_keyframe.h @@ -24,7 +24,7 @@ extern "C" { #define cKF_ANIMATION_TRANS_XZ (1 << 0) // Translation on XZ #define cKF_ANIMATION_TRANS_Y (1 << 1) // Translation on Y -#define cKF_ANIMATION_ROT_X (1 << 2) // Rotation on the X axis +#define cKF_ANIMATION_ROT_Y (1 << 2) // Rotation on the X axis enum { cKF_STATE_NONE, @@ -439,16 +439,16 @@ extern void cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(cKF_SkeletonInfo_R_c /** * Adjusts the base position and correction for a skeleton info structure based on animation flags. * - * @param counter Animation counter to determine the phase of movement. * @param basepos Original base position of the model. * @param correctpos Corrected base position of the model. * @param ybase Base Y angle for rotation. * @param yidle Idle Y angle for rotation. + * @param counter Animation counter to determine the phase of movement. * @param keyframe Skeleton info structure to modify. * @param an_flag Animation flags to determine which corrections to apply. */ -extern void cKF_SkeletonInfo_R_AnimationMove_ct_base(f32 counter, xyz_t* basepos, xyz_t* correctpos, s16 ybase, - s16 yidle, cKF_SkeletonInfo_R_c* keyframe, int animation_flag); +extern void cKF_SkeletonInfo_R_AnimationMove_ct_base(xyz_t* basepos, xyz_t* correctpos, s16 ybase, s16 yidle, + f32 counter, cKF_SkeletonInfo_R_c* keyframe, int animation_flag); /** * Resets animation movement and flags for a skeleton info structure. @@ -462,11 +462,11 @@ extern void cKF_SkeletonInfo_R_AnimationMove_dt(cKF_SkeletonInfo_R_c* keyframe); * * @param base Base position to modify. * @param sbase Base rotation to modify. - * @param move Movement amount to apply. + * @param scale Scaling amount to apply. * @param yidle Y-axis idle angle. * @param keyframe Skeleton info structure containing animation data. */ -extern void cKF_SkeletonInfo_R_AnimationMove_base(xyz_t* base, s16* sbase, xyz_t* move, s16 yidle, +extern void cKF_SkeletonInfo_R_AnimationMove_base(xyz_t* base, s16* sbase, xyz_t* scale, s16 yidle, cKF_SkeletonInfo_R_c* keyframe); /** diff --git a/include/m_player.h b/include/m_player.h index 90a2aead..6a29cd31 100644 --- a/include/m_player.h +++ b/include/m_player.h @@ -811,13 +811,12 @@ typedef struct player_request_close_funriture_s { } mPlayer_request_close_furniture_c; typedef struct player_request_lie_bed_s { - int direction; + int direction; s16 angle; xyz_t wpos; int flags; } mPlayer_request_lie_bed_c; - typedef struct player_request_door_s { s16 angle_y; xyz_t player_pos; @@ -1496,14 +1495,14 @@ typedef struct player_main_pull_s { int ftr_no; xyz_t start_pos; xyz_t ofs; - f32 timer; + f32 timer; } mPlayer_main_pull_c; typedef struct player_main_rotate_furniture_s { int ftr_no; xyz_t pos; int _10; - int rotate_type; + int rotate_type; } mPlayer_main_rotate_furniture_c; typedef struct player_main_open_furniture_s { @@ -1592,6 +1591,10 @@ typedef struct player_main_broken_axe_s { int _2C; } mPlayer_main_broken_axe_c; +typedef struct player_main_relax_rod_s { + int bee_flag; +} mPlayer_main_relax_rod_c; + typedef struct player_main_dig_scoop_s { xyz_t target_pos; mActor_name_t item; @@ -1724,10 +1727,20 @@ typedef struct player_main_shake_tree_s { int bee_spawn_timer; } mPlayer_main_shake_tree_c; +typedef struct player_main_struggle_pitfall_s { + f32 button_presses; + f32 target_anim_speed; +} mPlayer_main_struggle_pitfall_c; + typedef struct player_main_stung_bee_s { f32 timer; } mPlayer_main_stung_bee_c; +typedef struct player_main_notice_bee_s { + f32 timer; + int msg_mode; +} mPlayer_main_notice_bee_c; + typedef struct player_main_remove_grass_s { xyz_t grass_pos; xyz_t target_pos; @@ -1808,6 +1821,7 @@ typedef union { mPlayer_main_reflect_axe_c reflect_axe; mPlayer_main_broken_axe_c broken_axe; mPlayer_main_swing_net_c swing_net; + mPlayer_main_relax_rod_c relax_rod; mPlayer_main_dig_scoop_c dig_scoop; mPlayer_main_fill_scoop_c fill_scoop; mPlayer_main_reflect_scoop_c reflect_scoop; @@ -1826,7 +1840,9 @@ typedef union { mPlayer_main_putin_item_c putin_item; mPlayer_main_wash_car_c wash_car; mPlayer_main_shake_tree_c shake_tree; + mPlayer_main_struggle_pitfall_c struggle_pitfall; mPlayer_main_stung_bee_c stung_bee; + mPlayer_main_notice_bee_c notice_bee; mPlayer_main_remove_grass_c remove_grass; mPlayer_main_push_snowball_c push_snowball; mPlayer_main_wade_snowball_c wade_snowball; diff --git a/include/m_player_lib.h b/include/m_player_lib.h index 7635d94c..08666df5 100644 --- a/include/m_player_lib.h +++ b/include/m_player_lib.h @@ -110,6 +110,7 @@ extern int mPlib_strength_request_main_wade_priority(GAME* game); extern int mPlib_strength_request_main_demo_wade_priority(GAME* game); extern int mPlib_strength_request_main_demo_geton_boat_wade_priority(GAME* game); extern int mPlib_strength_request_main_wade_snowball_priority(GAME* game); +extern void mPlib_change_player_face(GAME* game); extern mPlayer_change_data_from_submenu_c* mPlib_Get_change_data_from_submenu_p(); diff --git a/src/ac_my_room_move.c_inc b/src/ac_my_room_move.c_inc index a71def25..c15c7d25 100644 --- a/src/ac_my_room_move.c_inc +++ b/src/ac_my_room_move.c_inc @@ -741,7 +741,7 @@ static void aMR_SetPullMoveAnime(FTR_ACTOR* ftr_actor, GAME* game, MY_ROOM_ACTOR cKF_SkeletonInfo_R_init_standard_stop(keyframe, &cKF_ba_r_furniture_stop, NULL); cKF_SkeletonInfo_R_play(keyframe); cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(keyframe, 0.0f, 0.0f, 0.0f, 0, 0, 0); - cKF_SkeletonInfo_R_AnimationMove_ct_base(0.0f, pos, pos, 0, 0, keyframe, TRUE); + cKF_SkeletonInfo_R_AnimationMove_ct_base(pos, pos, 0, 0, 0.0f, keyframe, TRUE); cKF_SkeletonInfo_R_init_standard_stop_morph(keyframe, &cKF_ba_r_furniture_pull, NULL, -3.0f); cKF_SkeletonInfo_R_play(keyframe); } @@ -763,7 +763,7 @@ static void aMR_SetPushMoveAnime(FTR_ACTOR* ftr_actor, GAME* game, MY_ROOM_ACTOR cKF_SkeletonInfo_R_init_standard_stop(keyframe, &cKF_ba_r_furniture_stop, NULL); cKF_SkeletonInfo_R_play(keyframe); cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(keyframe, 0.0f, 0.0f, 0.0f, 0, 0, 0); - cKF_SkeletonInfo_R_AnimationMove_ct_base(0.0f, pos, pos, 0, 0, keyframe, TRUE); + cKF_SkeletonInfo_R_AnimationMove_ct_base(pos, pos, 0, 0, 0.0f, keyframe, TRUE); cKF_SkeletonInfo_R_init_standard_stop(keyframe, &cKF_ba_r_furniture_push, NULL); cKF_SkeletonInfo_R_play(keyframe); } diff --git a/src/c_keyframe.c b/src/c_keyframe.c index badeeb8e..7036c087 100644 --- a/src/c_keyframe.c +++ b/src/c_keyframe.c @@ -617,7 +617,7 @@ extern void cKF_Si3_draw_SV_R_child(GAME* game, cKF_SkeletonInfo_R_c* keyframe, joint1 = cur_joint[1]; - if ((joint_num[0] == 0) && (keyframe->animation_enabled & cKF_ANIMATION_ROT_X)) { + if ((joint_num[0] == 0) && (keyframe->animation_enabled & cKF_ANIMATION_ROT_Y)) { joint1.x = keyframe->base_model_rotation.x; joint1.y = keyframe->updated_base_model_rotation.y; joint1.z = keyframe->updated_base_model_rotation.z; @@ -1030,8 +1030,8 @@ extern void cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(cKF_SkeletonInfo_R_c keyframe->updated_base_model_rotation.z = anglez; } -extern void cKF_SkeletonInfo_R_AnimationMove_ct_base(f32 counter, xyz_t* basepos, xyz_t* correctpos, s16 ybase, - s16 yidle, cKF_SkeletonInfo_R_c* keyframe, int an_flag) { +extern void cKF_SkeletonInfo_R_AnimationMove_ct_base(xyz_t* basepos, xyz_t* correctpos, s16 ybase, s16 yidle, + f32 counter, cKF_SkeletonInfo_R_c* keyframe, int an_flag) { int sub; keyframe->animation_enabled = an_flag; @@ -1059,7 +1059,7 @@ extern void cKF_SkeletonInfo_R_AnimationMove_ct_base(f32 counter, xyz_t* basepos keyframe->base_angle_y = yidle; keyframe->model_angle_correction = 0; - if (an_flag & cKF_ANIMATION_ROT_X) { + if (an_flag & cKF_ANIMATION_ROT_Y) { sub = ybase - yidle; if (sub > 0x8000) { sub = -(0x10000 - sub); @@ -1082,7 +1082,7 @@ extern void cKF_SkeletonInfo_R_AnimationMove_dt(cKF_SkeletonInfo_R_c* keyframe) if (an_flag & cKF_ANIMATION_TRANS_Y) { cur_joint->y = keyframe->base_model_translation.y; } - if (an_flag & cKF_ANIMATION_ROT_X) { + if (an_flag & cKF_ANIMATION_ROT_Y) { cur_joint = keyframe->current_joint; cur_joint[1].x = keyframe->base_model_rotation.x; cur_joint[1].y = keyframe->base_model_rotation.y; @@ -1091,7 +1091,7 @@ extern void cKF_SkeletonInfo_R_AnimationMove_dt(cKF_SkeletonInfo_R_c* keyframe) keyframe->animation_enabled = 0; } -extern void cKF_SkeletonInfo_R_AnimationMove_base(xyz_t* base, s16* sbase, xyz_t* move, s16 yidle, +extern void cKF_SkeletonInfo_R_AnimationMove_base(xyz_t* base, s16* sbase, xyz_t* scale, s16 yidle, cKF_SkeletonInfo_R_c* keyframe) { f32 fc = keyframe->fixed_counter; f32 count = 1.0f + fc; @@ -1117,7 +1117,7 @@ extern void cKF_SkeletonInfo_R_AnimationMove_base(xyz_t* base, s16* sbase, xyz_t correct_y = 0.0f; } - if (an_flag & cKF_ANIMATION_ROT_X) { + if (an_flag & cKF_ANIMATION_ROT_Y) { mangle_y = keyframe->model_angle_correction; if (count > 0.5f) { keyframe->model_angle_correction -= (s16)(int)(mangle_y * correct_y); @@ -1153,7 +1153,7 @@ extern void cKF_SkeletonInfo_R_AnimationMove_base(xyz_t* base, s16* sbase, xyz_t keyframe->model_world_position_correction.z = 0.0f; } - if ((sbase != NULL) && (an_flag & cKF_ANIMATION_ROT_X)) { + if ((sbase != NULL) && (an_flag & cKF_ANIMATION_ROT_Y)) { angley = keyframe->base_angle_y; angle_c = keyframe->model_angle_correction; base_x = keyframe->base_model_rotation.x; @@ -1184,9 +1184,9 @@ extern void cKF_SkeletonInfo_R_AnimationMove_base(xyz_t* base, s16* sbase, xyz_t cos = cos_s(sub); temp1 = (trans_x * cos) + (trans_z * sin); - move_x = move->x * (cur_joint->x - temp1); + move_x = scale->x * (cur_joint->x - temp1); temp1 = (-trans_x * sin) + (trans_z * cos); - move_z = move->z * (cur_joint->z - temp1); + move_z = scale->z * (cur_joint->z - temp1); sin = sin_s(yidle); cos = cos_s(yidle); @@ -1199,7 +1199,7 @@ extern void cKF_SkeletonInfo_R_AnimationMove_base(xyz_t* base, s16* sbase, xyz_t base->z = temp2 + (keyframe->base_world_position.z + base_z); } if (an_flag & cKF_ANIMATION_TRANS_Y) { - base->y = move->y * (cur_joint->y - keyframe->base_model_translation.y) + + base->y = scale->y * (cur_joint->y - keyframe->base_model_translation.y) + (keyframe->base_world_position.y + keyframe->model_world_position_correction.y); } } diff --git a/src/m_player.c b/src/m_player.c index 08c6527b..d2b50d6d 100644 --- a/src/m_player.c +++ b/src/m_player.c @@ -320,7 +320,7 @@ static int Player_actor_request_main_close_furniture(GAME*, int); static int Player_actor_request_main_lie_bed(GAME*, int, const xyz_t*, int, int, int); static int Player_actor_request_main_hide(GAME*, int); static int Player_actor_request_main_groundhog(GAME*, int); -static int Player_actor_request_main_door(GAME*, const xyz_t*, s16, int, void*, int); +static int Player_actor_request_main_door(GAME*, const xyz_t*, s16, int, u32, int); static int Player_actor_request_main_outdoor(GAME*, int, int, int); static int Player_actor_request_main_wash_car_all(GAME*, const xyz_t*, const xyz_t*, s16, ACTOR*, int); static int Player_actor_request_main_rotate_octagon_all(GAME*, ACTOR*, int, int, const xyz_t*, s16, int); diff --git a/src/m_player_main_climbup_pitfall.c_inc b/src/m_player_main_climbup_pitfall.c_inc index e69de29b..8d28c107 100644 --- a/src/m_player_main_climbup_pitfall.c_inc +++ b/src/m_player_main_climbup_pitfall.c_inc @@ -0,0 +1,103 @@ +static int Player_actor_request_main_climbup_pitfall_all(GAME* game, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_CLIMBUP_PITFALL, prio)) { + Player_actor_request_main_index(game, mPlayer_INDEX_CLIMBUP_PITFALL, prio); + return TRUE; + } + + return FALSE; +} + +static int Player_actor_Get_PlayerAnimeIndex_fromItemKind_Climbup_pitfall(int item_kind) { + if (mPlayer_ITEM_IS_UMBRELLA(item_kind) != FALSE) { + return mPlayer_ANIM_DERU2; + } else { + return mPlayer_ANIM_DERU1; + } +} + +static void Player_actor_setup_main_Climbup_pitfall(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + int item_kind = Player_actor_Get_ItemKind(actorx, player->requested_main_index); + int anim0_idx = Player_actor_Get_PlayerAnimeIndex_fromItemKind_Climbup_pitfall(item_kind); + int anim1_idx; + int part_table_idx; + + if (Common_Get(clip).bg_item_clip != NULL && Common_Get(clip).bg_item_clip->pit_exit_proc != NULL) { + xyz_t* player_pos_p = &actorx->world.position; + int ut_x; + int ut_z; + + if (mFI_Wpos2UtNum(&ut_x, &ut_z, *player_pos_p)) { + mActor_name_t* fg_p = mFI_GetUnitFG(*player_pos_p); + + if (fg_p != NULL) { + Common_Get(clip).bg_item_clip->pit_exit_proc(*fg_p, ut_x, ut_z, EMPTY_NO); + } + } + } + + Player_actor_SetupItem_Base1(actorx, anim0_idx, -5.0f, &anim1_idx, &part_table_idx); + cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(kf0_p, 0.0f, 1000.0f, 0.0f, 0, 0, DEG2SHORT_ANGLE2(90.0f)); + cKF_SkeletonInfo_R_AnimationMove_ct_base(&actorx->world.position, &actorx->world.position, + actorx->shape_info.rotation.y, actorx->shape_info.rotation.y, 5.0f, kf0_p, + cKF_ANIMATION_TRANS_XZ | cKF_ANIMATION_TRANS_Y); + Player_actor_InitAnimation_Base2(actorx, game, anim0_idx, anim0_idx, 1.0f, 1.0f, 1.0f, -5.0f, cKF_FRAMECONTROL_STOP, + mPlayer_PART_TABLE_NORMAL); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_settle_main_Climbup_pitfall(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_dt(kf0_p); +} + +static int Player_actor_CulcAnimation_Climbup_pitfall(ACTOR* actorx, f32* last_anim0_cur_frame) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame); +} + +static void Player_actor_Movement_Climbup_pitfall(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_base(&actorx->world.position, &actorx->shape_info.rotation.y, &actorx->scale, + actorx->world.angle.y, kf0_p); + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static void Player_actor_SearchAnimation_Climbup_pitfall(ACTOR* actorx) { + Player_actor_AppearShadow_fromAnimationFrame(actorx, 12.0f, 44.0f); +} + +static void Player_actor_set_eye_pattern_Climbup_pitfall(ACTOR* actorx) { + Player_actor_set_tex_anime_pattern(actorx); +} + +static void Player_actor_ObjCheck_Climbup_pitfall(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_request_proc_index_fromClimbup_pitfall(ACTOR* actorx, GAME* game, int end_flag) { + + if (end_flag) { + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } +} + +static void Player_actor_main_Climbup_pitfall(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + int end_flag; + + end_flag = Player_actor_CulcAnimation_Climbup_pitfall(actorx, &last_anim0_cur_frame); + Player_actor_Movement_Climbup_pitfall(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_SearchAnimation_Climbup_pitfall(actorx); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_Climbup_pitfall(actorx); + Player_actor_ObjCheck_Climbup_pitfall(actorx, game); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromClimbup_pitfall(actorx, game, end_flag); +} diff --git a/src/m_player_main_close_furniture.c_inc b/src/m_player_main_close_furniture.c_inc index 7cc5d649..7324d9d7 100644 --- a/src/m_player_main_close_furniture.c_inc +++ b/src/m_player_main_close_furniture.c_inc @@ -1,4 +1,4 @@ -static int Player_actor_request_main_close_furniture(GAME* game, int priority) { +static int Player_actor_request_main_close_furniture(GAME* game, int priority) { if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_WAIT_OPEN_FURNITURE && Player_actor_check_request_main_able(game, mPlayer_INDEX_CLOSE_FURNITURE, priority)) { PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); @@ -39,8 +39,8 @@ static void Player_actor_setup_main_Close_furniture(ACTOR* actor, GAME* game) { anim_idx = req_close->anim_idx; cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(keyf, 0.0f, 1000.0f, 200.0f, 0, 0, 0x4000); - cKF_SkeletonInfo_R_AnimationMove_ct_base(0.0f, &actor->world.position, &actor->world.position, - actor->shape_info.rotation.y, 0, keyf, 1); + cKF_SkeletonInfo_R_AnimationMove_ct_base(&actor->world.position, &actor->world.position, + actor->shape_info.rotation.y, 0, 0.0f, keyf, 1); Player_actor_InitAnimation_Base2(actor, game, anim_idx, anim_idx, 1.0f, 1.0f, 0.5f, -5.0f, 0, 0); Player_actor_setup_main_Base(actor, game); } @@ -66,7 +66,7 @@ static void Player_actor_ObjCheck_Close_furniture(ACTOR* actor, GAME* game) { Player_actor_Excute_Corect_forStand(actor, game); } -static void Player_actor_BGcheck_Close_furniture(ACTOR* actor) { +static void Player_actor_BGcheck_Close_furniture(ACTOR* actor) { Player_actor_BGcheck_common_type3(actor); } diff --git a/src/m_player_main_door.c_inc b/src/m_player_main_door.c_inc index 90aa0218..f874e546 100644 --- a/src/m_player_main_door.c_inc +++ b/src/m_player_main_door.c_inc @@ -28,9 +28,9 @@ static void Player_actor_setup_main_Door(ACTOR* actor, GAME* game) { player->main_data.door.label = player->requested_main_index_data.door.label; actor->world.angle.y = player->requested_main_index_data.door.angle_y; cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(keyf, 0.0f, 1000.0f, 0.0f, 0, 0, 0x4000); - cKF_SkeletonInfo_R_AnimationMove_ct_base( - 9.0f, &actor->world.position, &player->requested_main_index_data.door.player_pos, actor->shape_info.rotation.y, - player->requested_main_index_data.door.angle_y, keyf, 5); + cKF_SkeletonInfo_R_AnimationMove_ct_base(&actor->world.position, &player->requested_main_index_data.door.player_pos, + actor->shape_info.rotation.y, + player->requested_main_index_data.door.angle_y, 9.0f, keyf, 5); Player_actor_InitAnimation_Base2(actor, game, anim_idx, anim_idx, 1.0f, 1.0f, 0.5f, -9.0f, 0, 0); Player_actor_setup_main_Base(actor, game); mBGMPsComp_scene_mode(0xC); @@ -49,11 +49,11 @@ static void Player_actor_Movement_Door(ACTOR* actor) { Player_actor_Set_force_shadow_position_fromWorldPosition(actor); } -static void Player_actor_ObjCheck_Door(ACTOR* actor, GAME* game) { - Player_actor_Excute_Corect_forStand(actor, game); +static void Player_actor_ObjCheck_Door(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); } -static Player_actor_main_Door(ACTOR* actor, GAME* game) { +static void Player_actor_main_Door(ACTOR* actor, GAME* game) { f32 frame_calc; Player_actor_CulcAnimation_Door(actor, &frame_calc); diff --git a/src/m_player_main_fall_pitfall.c_inc b/src/m_player_main_fall_pitfall.c_inc index e69de29b..2a179446 100644 --- a/src/m_player_main_fall_pitfall.c_inc +++ b/src/m_player_main_fall_pitfall.c_inc @@ -0,0 +1,84 @@ +static int Player_actor_request_main_fall_pitfall_all(GAME* game, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_FALL_PITFALL, prio)) { + Player_actor_request_main_index(game, mPlayer_INDEX_FALL_PITFALL, prio); + return TRUE; + } + + return FALSE; +} + +static int Player_actor_Get_PlayerAnimeIndex_fromItemKind_Fall_pitfall(int item_kind) { + if (mPlayer_ITEM_IS_UMBRELLA(item_kind) != FALSE) { + return mPlayer_ANIM_OTIRU2; + } else { + return mPlayer_ANIM_OTIRU1; + } +} + +static void Player_actor_setup_main_Fall_pitfall(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + int item_kind = Player_actor_Get_ItemKind(actorx, player->requested_main_index); + int anim0_idx = Player_actor_Get_PlayerAnimeIndex_fromItemKind_Fall_pitfall(item_kind); + int anim1_idx; + int part_table_idx; + + Player_actor_SetupItem_Base1(actorx, anim0_idx, -5.0f, &anim1_idx, &part_table_idx); + cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(kf0_p, 0.0f, 1000.0f, 0.0f, 0, 0, DEG2SHORT_ANGLE2(90.0f)); + cKF_SkeletonInfo_R_AnimationMove_ct_base(&actorx->world.position, &actorx->world.position, + actorx->shape_info.rotation.y, actorx->shape_info.rotation.y, 5.0f, kf0_p, + cKF_ANIMATION_TRANS_XZ | cKF_ANIMATION_TRANS_Y); + Player_actor_InitAnimation_Base2(actorx, game, anim0_idx, anim0_idx, 1.0f, 1.0f, 0.5f, -5.0f, cKF_FRAMECONTROL_STOP, + mPlayer_PART_TABLE_NORMAL); + Player_actor_setup_main_Base(actorx, game); + mISL_SetNowPlayerAction(mISL_PLAYER_ACTION_FALL_PITFALL); +} + +static void Player_actor_settle_main_Fall_pitfall(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_dt(kf0_p); +} + +static int Player_actor_CulcAnimation_Fall_pitfall(ACTOR* actorx, f32* last_anim0_cur_frame) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame); +} + +static void Player_actor_Movement_Fall_pitfall(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_base(&actorx->world.position, &actorx->shape_info.rotation.y, &actorx->scale, + actorx->world.angle.y, kf0_p); + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static void Player_actor_set_eye_pattern_Fall_pitfall(ACTOR* actorx) { + Player_actor_set_tex_anime_pattern(actorx); +} + +static void Player_actor_ObjCheck_Fall_pitfall(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_request_proc_index_fromFall_pitfall(GAME* game, int end_flag) { + + if (end_flag) { + Player_actor_request_main_struggle_pitfall_all(game, mPlayer_REQUEST_PRIORITY_28); + } +} + +static void Player_actor_main_Fall_pitfall(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + int end_flag; + + end_flag = Player_actor_CulcAnimation_Fall_pitfall(actorx, &last_anim0_cur_frame); + Player_actor_Movement_Fall_pitfall(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_Fall_pitfall(actorx); + Player_actor_ObjCheck_Fall_pitfall(actorx, game); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromFall_pitfall(game, end_flag); +} diff --git a/src/m_player_main_lie_bed.c_inc b/src/m_player_main_lie_bed.c_inc index 134c7031..121cf051 100644 --- a/src/m_player_main_lie_bed.c_inc +++ b/src/m_player_main_lie_bed.c_inc @@ -85,8 +85,8 @@ static void Player_actor_setup_main_Lie_bed(ACTOR* actor, GAME* game) { actor->world.angle.y = angle; cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(keyf, 0.0f, 1000.0f, 0.0f, 0, 0, 0x4000); - cKF_SkeletonInfo_R_AnimationMove_ct_base(17.0f, &actor->world.position, &req_lie->wpos, - actor->shape_info.rotation.y, req_lie->angle, keyf, 3); + cKF_SkeletonInfo_R_AnimationMove_ct_base(&actor->world.position, &req_lie->wpos, actor->shape_info.rotation.y, + req_lie->angle, 17.0f, keyf, 3); Player_actor_InitAnimation_Base2(actor, game, anim_idx, anim_idx, 1.0f, 1.0f, 0.5f, -5.0f, 0, 0); Player_actor_setup_main_Base(actor, game); Player_actor_sound_JUMP(actor); diff --git a/src/m_player_main_mail_jump.c_inc b/src/m_player_main_mail_jump.c_inc index e69de29b..b945d9c7 100644 --- a/src/m_player_main_mail_jump.c_inc +++ b/src/m_player_main_mail_jump.c_inc @@ -0,0 +1,78 @@ +static int Player_actor_request_main_mail_jump_all(GAME* game, const xyz_t* pos_p, s16 angle_y, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_MAIL_JUMP, prio)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_mail_jump_c* req_mail_jump_p = &player->requested_main_index_data.mail_jump; + + Player_actor_request_main_index(game, mPlayer_INDEX_MAIL_JUMP, prio); + req_mail_jump_p->pos = *pos_p; + req_mail_jump_p->angle_y = angle_y; + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Mail_jump(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + mPlayer_request_mail_jump_c* req_mail_jump_p = &player->requested_main_index_data.mail_jump; + int anim1_idx; + int part_table_idx; + + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_CONFIRM1, -6.0f, &anim1_idx, &part_table_idx); + + if (part_table_idx != mPlayer_PART_TABLE_NORMAL) { + part_table_idx = mPlayer_PART_TABLE_NET; + } + + cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(kf0_p, 0.0f, 1000.0f, 0.0f, 0, 0, DEG2SHORT_ANGLE2(90.0f)); + cKF_SkeletonInfo_R_AnimationMove_ct_base(&actorx->world.position, &req_mail_jump_p->pos, + actorx->shape_info.rotation.y, req_mail_jump_p->angle_y, 8.0f, kf0_p, + cKF_ANIMATION_ROT_Y | cKF_ANIMATION_TRANS_XZ); + Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_CONFIRM1, anim1_idx, 1.0f, 1.0f, 0.5f, -8.0f, + cKF_FRAMECONTROL_STOP, part_table_idx); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_settle_main_Mail_jump(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_dt(kf0_p); + actorx->world.angle.y = actorx->shape_info.rotation.y; +} + +static int Player_actor_CulcAnimation_Mail_jump(ACTOR* actorx) { + f32 dummy; + + return Player_actor_CulcAnimation_Base2(actorx, &dummy); +} + +static void Player_actor_Movement_Mail_jump(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_base(&actorx->world.position, &actorx->shape_info.rotation.y, &actorx->scale, + actorx->world.angle.y, kf0_p); + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static void Player_actor_ObjCheck_Mail_jump(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Mail_jump(ACTOR* actorx) { + Player_actor_BGcheck_common_type1(actorx); +} + +static void Player_actor_main_Mail_jump(ACTOR* actorx, GAME* game) { + Player_actor_CulcAnimation_Mail_jump(actorx); + Player_actor_Movement_Mail_jump(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Mail_jump(actorx, game); + Player_actor_BGcheck_Mail_jump(actorx); + Player_actor_Item_main(actorx, game); +} diff --git a/src/m_player_main_mail_land.c_inc b/src/m_player_main_mail_land.c_inc index e69de29b..096b8deb 100644 --- a/src/m_player_main_mail_land.c_inc +++ b/src/m_player_main_mail_land.c_inc @@ -0,0 +1,74 @@ +static int Player_actor_request_main_mail_land_all(GAME* game, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_MAIL_LAND, prio)) { + Player_actor_request_main_index(game, mPlayer_INDEX_MAIL_LAND, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_request_main_mail_land_from_submenu(ACTOR* actorx, GAME* game) { + Player_actor_request_main_mail_land_all(game, mPlayer_REQUEST_PRIORITY_31); +} + +static void Player_actor_setup_main_Mail_land(ACTOR* actorx, GAME* game) { + int anim1_idx; + int part_table_idx; + + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_CONFIRM1, -5.0f, &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base3(actorx, game, mPlayer_ANIM_CONFIRM1, anim1_idx, 0.5f, -5.0f, cKF_FRAMECONTROL_STOP, + part_table_idx); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_Movement_Mail_land(ACTOR* actorx) { + Player_actor_Movement_Base_Braking_common(actorx, 0.23925f); +} + +static int Player_actor_CulcAnimation_Mail_land(ACTOR* actorx) { + f32 dummy; + + return Player_actor_CulcAnimation_Base2(actorx, &dummy); +} + +static void Player_actor_ObjCheck_Mail_land(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Mail_land(ACTOR* actorx) { + Player_actor_BGcheck_common_type1(actorx); +} + +static void Player_actor_request_proc_index_fromMail_land(ACTOR* actorx, GAME* game, int end_flag) { + + if (end_flag) { + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } else { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + + if (Player_actor_Check_AnimationFrame(fc0_p, 16.5f)) { + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_Set_status_for_bee(actorx, TRUE); + } else if (fc0_p->current_frame <= 16.0f && + (Player_actor_GetController_move_percentX() || Player_actor_GetController_move_percentY())) { + Player_actor_request_main_walk_all(game, NULL, -5.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } + } +} + +static void Player_actor_main_Mail_land(ACTOR* actorx, GAME* game) { + int end_flag; + + Player_actor_Movement_Mail_land(actorx); + end_flag = Player_actor_CulcAnimation_Mail_land(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Mail_land(actorx, game); + Player_actor_BGcheck_Mail_land(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromMail_land(actorx, game, end_flag); +} diff --git a/src/m_player_main_notice_bee.c_inc b/src/m_player_main_notice_bee.c_inc index e69de29b..05b75b20 100644 --- a/src/m_player_main_notice_bee.c_inc +++ b/src/m_player_main_notice_bee.c_inc @@ -0,0 +1,148 @@ +static int Player_actor_request_main_notice_bee_all(GAME* game, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_NOTICE_BEE, prio)) { + Player_actor_request_main_index(game, mPlayer_INDEX_NOTICE_BEE, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Notice_bee(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_notice_bee_c* notice_bee_p = &player->main_data.notice_bee; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + int anim1_idx; + int part_table_idx; + + notice_bee_p->timer = 0.0f; + notice_bee_p->msg_mode = 0; + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_HATI3, -5.0f, &anim1_idx, &part_table_idx); + cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(kf0_p, 0.0f, 1000.0f, 0.0f, 0, 0, DEG2SHORT_ANGLE2(90.0f)); + cKF_SkeletonInfo_R_AnimationMove_ct_base(&actorx->world.position, &actorx->world.position, + actorx->shape_info.rotation.y, actorx->shape_info.rotation.y, 5.0f, kf0_p, + cKF_ANIMATION_ROT_Y); + Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_HATI3, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, + cKF_FRAMECONTROL_STOP, part_table_idx); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_settle_main_Notice_bee(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_dt(kf0_p); + actorx->world.angle.y = actorx->shape_info.rotation.y; + mBGMPsComp_delete_ps_demo(BGM_BEE_STUNG, 0x168); +} + +static int Player_actor_CulcAnimation_Notice_bee(ACTOR* actorx, f32* last_anim0_cur_frame) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame); +} + +static void Player_actor_Movement_Notice_bee(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_base(&actorx->world.position, &actorx->shape_info.rotation.y, &actorx->scale, + actorx->world.angle.y, kf0_p); + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static void Player_actor_set_eye_pattern_Notice_bee(ACTOR* actorx, int end_flag) { + if (end_flag) { + if (Common_Get(player_decoy_flag) == FALSE) { + Player_actor_set_eye_pattern_normal(actorx); + } + } else { + Player_actor_set_tex_anime_pattern(actorx); + } +} + +static void Player_actor_ObjCheck_Notice_bee(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Notice_bee(ACTOR* actorx) { + Player_actor_BGcheck_common_type1(actorx); +} + +static void Player_actor_Notice_bee_demo_ct(ACTOR* actorx) { + rgba_t window_color; + + mDemo_Set_msg_num(0x17B4); + mDemo_Set_talk_display_name(FALSE); + mDemo_Set_camera(CAMERA2_PROCESS_ITEM); + mDemo_Set_ListenAble(); + window_color.r = 225; + window_color.g = 165; + window_color.b = 255; + window_color.a = 255; + mDemo_Set_talk_window_color(&window_color); + mBGMPsComp_make_ps_demo(BGM_BEE_STUNG, 0x168); + mBGMPsComp_delete_ps_quiet(); +} + +static int Player_actor_MessageControl_Notice_bee(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_notice_bee_c* notice_bee_p = &player->main_data.notice_bee; + int* msg_mode_p = ¬ice_bee_p->msg_mode; + f32* timer_p = ¬ice_bee_p->timer; + + switch (*msg_mode_p) { + case 0: { + if (*timer_p < 0.0f) { + (*timer_p) += 1.0f; + } else { + *msg_mode_p = 1; + } + break; + } + + case 1: { + if (mDemo_Check(mDemo_TYPE_REPORT, actorx) == FALSE) { + mDemo_Request(mDemo_TYPE_REPORT, actorx, &Player_actor_Notice_bee_demo_ct); + } else { + *msg_mode_p = 2; + } + break; + } + + case 2: { + if (mDemo_Check(mDemo_TYPE_REPORT, actorx) == FALSE) { + *msg_mode_p = 3; + } + break; + } + + default: { + return TRUE; + } + } + + return FALSE; +} + +static void Player_actor_request_proc_index_fromNotice_bee(ACTOR* actorx, GAME* game, int anim_end_flag, + int msg_end_flag) { + if (anim_end_flag && msg_end_flag) { + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } +} + +static void Player_actor_main_Notice_bee(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + int anim_end_flag; + int msg_end_flag; + + anim_end_flag = Player_actor_CulcAnimation_Notice_bee(actorx, &last_anim0_cur_frame); + Player_actor_Movement_Notice_bee(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_Notice_bee(actorx, anim_end_flag); + Player_actor_ObjCheck_Notice_bee(actorx, game); + Player_actor_BGcheck_Notice_bee(actorx); + Player_actor_Item_main(actorx, game); + msg_end_flag = Player_actor_MessageControl_Notice_bee(actorx); + Player_actor_request_proc_index_fromNotice_bee(actorx, game, anim_end_flag, msg_end_flag); +} diff --git a/src/m_player_main_open_furniture.c_inc b/src/m_player_main_open_furniture.c_inc index be81afa7..d8cf090f 100644 --- a/src/m_player_main_open_furniture.c_inc +++ b/src/m_player_main_open_furniture.c_inc @@ -41,8 +41,8 @@ static void Player_actor_setup_main_Open_furniture(ACTOR* actor, GAME* game) { actor->world.position.z = z; cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(keyf, 0.0f, 1000.0f, 200.0f, 0, 0, 0x4000); - cKF_SkeletonInfo_R_AnimationMove_ct_base(0.0f, &actor->world.position, &actor->world.position, - actor->shape_info.rotation.y, 0, keyf, 1); + cKF_SkeletonInfo_R_AnimationMove_ct_base(&actor->world.position, &actor->world.position, + actor->shape_info.rotation.y, 0, 0.0f, keyf, 1); Player_actor_InitAnimation_Base2(actor, game, anim_idx, anim_idx, 1.0f, 1.0f, 0.5f, -5.0f, 0, 0); Player_actor_setup_main_Base(actor, game); } @@ -69,8 +69,8 @@ static void Player_actor_ObjCheck_Open_furniture(ACTOR* actor, GAME* game) { Player_actor_Excute_Corect_forStand(actor, game); } -static void Player_actor_BGcheck_Open_furniture(ACTOR* actor) { - Player_actor_BGcheck_common_type3(actor); +static void Player_actor_BGcheck_Open_furniture(ACTOR* actor) { + Player_actor_BGcheck_common_type3(actor); } static void Player_actor_request_proc_index_fromOpen_furniture(ACTOR* actor, GAME* game, int arg) { diff --git a/src/m_player_main_outdoor.c_inc b/src/m_player_main_outdoor.c_inc index 912e211e..7151d0bf 100644 --- a/src/m_player_main_outdoor.c_inc +++ b/src/m_player_main_outdoor.c_inc @@ -38,25 +38,25 @@ static void Player_actor_setup_main_Outdoor(ACTOR* actor, GAME* game) { Player_actor_setup_main_Base(actor, game); } -void Player_actor_settle_main_Outdoor(ACTOR* actor, GAME* game) { - mDemo_End(actor); +static void Player_actor_settle_main_Outdoor(ACTOR* actor, GAME* game) { + mDemo_End(actor); } -int Player_actor_CulcAnimation_Outdoor(ACTOR* actor, f32* calc_frame) { +static int Player_actor_CulcAnimation_Outdoor(ACTOR* actor, f32* calc_frame) { return Player_actor_CulcAnimation_Base2(actor, calc_frame); } -int Player_actor_Movement_Outdoor(ACTOR* actor, int calc) { +static int Player_actor_Movement_Outdoor(ACTOR* actor, int calc) { Player_actor_Set_force_shadow_position_fromAnimePosition(actor); Player_actor_Movement_Base_Stop(actor, FALSE); return calc; } -void Player_actor_ObjCheck_Outdoor(ACTOR* actor, GAME* game) { - Player_actor_Excute_Corect_forOutdoor(actor, game); +static void Player_actor_ObjCheck_Outdoor(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forOutdoor(actor, game); } -void Player_actor_request_proc_index_fromOutdoor(GAME* game, int arg1) { +static void Player_actor_request_proc_index_fromOutdoor(GAME* game, int arg1) { if (arg1 != 0) { if (Common_Get(complete_payment_type) != 0) { Player_actor_request_main_complete_payment(game, mPlayer_REQUEST_PRIORITY_44); @@ -67,27 +67,26 @@ void Player_actor_request_proc_index_fromOutdoor(GAME* game, int arg1) { } } -void Player_actor_Demo_Outdoor_Demo_ct(ACTOR* actor) { - +static void Player_actor_Demo_Outdoor_Demo_ct(ACTOR* actor) { } -int Player_actor_Request_Demo_Outdoor(ACTOR* actor) { +static int Player_actor_Request_Demo_Outdoor(ACTOR* actor) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; if (player->main_data.outdoor.is_demo == FALSE) { if (mDemo_Check(mDemo_TYPE_OUTDOOR, actor)) { player->main_data.outdoor.is_demo = TRUE; - return 0; + return FALSE; } else { mDemo_Request(mDemo_TYPE_OUTDOOR, actor, Player_actor_Demo_Outdoor_Demo_ct); - return 0; + return FALSE; } } - return 1; + return TRUE; } -void Player_actor_main_Outdoor(ACTOR* actor, GAME* game) { +static void Player_actor_main_Outdoor(ACTOR* actor, GAME* game) { int arg1; f32 frame_calc; diff --git a/src/m_player_main_pull.c_inc b/src/m_player_main_pull.c_inc index 098a6e78..62cc6531 100644 --- a/src/m_player_main_pull.c_inc +++ b/src/m_player_main_pull.c_inc @@ -51,8 +51,8 @@ static void Player_actor_setup_main_Pull(ACTOR* actor, GAME* game) { actor->world.position.z = z; cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(keyf, 0.0f, 1000.0f, 200.0f, 0, 0, 0x4000); - cKF_SkeletonInfo_R_AnimationMove_ct_base(0.0f, &actor->world.position, &actor->world.position, - actor->shape_info.rotation.y, 0, keyf, 1); + cKF_SkeletonInfo_R_AnimationMove_ct_base(&actor->world.position, &actor->world.position, + actor->shape_info.rotation.y, 0, 0.0f, keyf, 1); Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_PULL1, mPlayer_ANIM_PULL1, 1.0f, 1.0f, 0.5f, -5.0f, 0, 0); Player_actor_setup_main_Base(actor, game); @@ -102,12 +102,12 @@ static void Player_actor_SearchAnimation_Pull(ACTOR* actor, GAME* game, f32 fram } } -static void Player_actor_ObjCheck_Pull(ACTOR* actor, GAME* game) { - Player_actor_Excute_Corect_forStand(actor, game); +static void Player_actor_ObjCheck_Pull(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); } -static void Player_actor_BGcheck_Pull(ACTOR* actor) { - Player_actor_BGcheck_common_type3(actor); +static void Player_actor_BGcheck_Pull(ACTOR* actor) { + Player_actor_BGcheck_common_type3(actor); } static void Player_actor_request_proc_index_fromPull(ACTOR* actor, GAME* game, int arg) { diff --git a/src/m_player_main_push.c_inc b/src/m_player_main_push.c_inc index ff459530..a68e6de4 100644 --- a/src/m_player_main_push.c_inc +++ b/src/m_player_main_push.c_inc @@ -42,8 +42,8 @@ static void Player_actor_setup_main_Push(ACTOR* actor, GAME* game) { actor->world.position.z = z; cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(keyf, 0.0f, 1000.0f, 200.0f, 0, 0, 0x4000); - cKF_SkeletonInfo_R_AnimationMove_ct_base(0.0f, &actor->world.position, &actor->world.position, - actor->shape_info.rotation.y, 0, keyf, 1); + cKF_SkeletonInfo_R_AnimationMove_ct_base(&actor->world.position, &actor->world.position, + actor->shape_info.rotation.y, 0, 0.0f, keyf, 1); Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_PUSH1, mPlayer_ANIM_PUSH1, 1.0f, 1.0f, 0.5f, -5.0f, 0, 0); Player_actor_setup_main_Base(actor, game); @@ -67,12 +67,12 @@ static void Player_actor_SearchAnimation_Push(ACTOR* actor, GAME* game, f32 fram } } -static void Player_actor_ObjCheck_Push(ACTOR* actor, GAME* game) { - Player_actor_Excute_Corect_forStand(actor, game); +static void Player_actor_ObjCheck_Push(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); } -static void Player_actor_BGcheck_Push(ACTOR* actor) { - Player_actor_BGcheck_common_type3(actor); +static void Player_actor_BGcheck_Push(ACTOR* actor) { + Player_actor_BGcheck_common_type3(actor); } static void Player_actor_request_proc_index_fromPush(ACTOR* actor, GAME* game, int arg) { diff --git a/src/m_player_main_ready_pitfall.c_inc b/src/m_player_main_ready_pitfall.c_inc index e69de29b..aaf170e7 100644 --- a/src/m_player_main_ready_pitfall.c_inc +++ b/src/m_player_main_ready_pitfall.c_inc @@ -0,0 +1,97 @@ +static int Player_actor_request_main_ready_pitfall_all(GAME* game, const xyz_t* pos_p, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_READY_PITFALL, prio)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_ready_pitfall_c* req_ready_pifall_p = &player->requested_main_index_data.ready_pitfall; + + req_ready_pifall_p->pos = *pos_p; + Player_actor_request_main_index(game, mPlayer_INDEX_READY_PITFALL, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Ready_pitfall(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + mPlayer_request_ready_pitfall_c* req_ready_pifall_p = &player->requested_main_index_data.ready_pitfall; + int anim1_idx; + int part_table_idx; + + player->pitfall_flag = FALSE; + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_GURATUKU1, -5.0f, &anim1_idx, &part_table_idx); + cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(kf0_p, 0.0f, 1000.0f, 0.0f, 0, 0, DEG2SHORT_ANGLE2(90.0f)); + cKF_SkeletonInfo_R_AnimationMove_ct_base(&actorx->world.position, &req_ready_pifall_p->pos, + actorx->shape_info.rotation.y, actorx->shape_info.rotation.y, 5.0f, kf0_p, + cKF_ANIMATION_TRANS_XZ | cKF_ANIMATION_TRANS_Y); + Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_GURATUKU1, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, + cKF_FRAMECONTROL_STOP, part_table_idx); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_settle_main_Ready_pitfall(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_dt(kf0_p); + eEC_CLIP->effect_kill_proc(eEC_EFFECT_ASE2, RSV_NO); +} + +static int Player_actor_CulcAnimation_Ready_pitfall(ACTOR* actorx, f32* last_anim0_cur_frame) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame); +} + +static void Player_actor_Movement_Ready_pitfall(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_base(&actorx->world.position, &actorx->shape_info.rotation.y, &actorx->scale, + actorx->world.angle.y, kf0_p); + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static void Player_actor_SetEffect_Ready_pitfall(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + + if (Player_actor_Check_AnimationFrame(fc0_p, 5.0f)) { + player->draw_effect_idx = eEC_EFFECT_ASE2 + 1; + } +} + +static void Player_actor_SearchAnimation_Ready_pitfall(ACTOR* actorx, f32 frame) { + if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE) { + Player_actor_SetEffect_Ready_pitfall(actorx); + } +} + +static void Player_actor_set_eye_pattern_Ready_pitfall(ACTOR* actorx) { + Player_actor_set_tex_anime_pattern(actorx); +} + +static void Player_actor_ObjCheck_Ready_pitfall(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_request_proc_index_fromReady_pitfall(GAME* game, int end_flag) { + + if (end_flag) { + Player_actor_request_main_fall_pitfall_all(game, mPlayer_REQUEST_PRIORITY_28); + } +} + +static void Player_actor_main_Ready_pitfall(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + int end_flag; + + end_flag = Player_actor_CulcAnimation_Ready_pitfall(actorx, &last_anim0_cur_frame); + Player_actor_Movement_Ready_pitfall(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_SearchAnimation_Ready_pitfall(actorx, last_anim0_cur_frame); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_Ready_pitfall(actorx); + Player_actor_ObjCheck_Ready_pitfall(actorx, game); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromReady_pitfall(game, end_flag); +} diff --git a/src/m_player_main_roll_bed.c_inc b/src/m_player_main_roll_bed.c_inc index 38daea80..b8605a87 100644 --- a/src/m_player_main_roll_bed.c_inc +++ b/src/m_player_main_roll_bed.c_inc @@ -73,8 +73,8 @@ static void Player_actor_setup_main_Roll_bed(ACTOR* actor, GAME* game) { anim_idx = Player_actor_Get_BasicPlayerAnimeIndex_Roll_bed(req_roll->move_dir, actor->shape_info.rotation.y); cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(keyf, 0.0f, 1000.0f, 0.0f, 0, 0, 0x4000); - cKF_SkeletonInfo_R_AnimationMove_ct_base(17.0f, &actor->world.position, &actor->world.position, - actor->shape_info.rotation.y, 0, keyf, 1); + cKF_SkeletonInfo_R_AnimationMove_ct_base(&actor->world.position, &actor->world.position, + actor->shape_info.rotation.y, 0, 17.0f, keyf, 1); Player_actor_InitAnimation_Base2(actor, game, anim_idx, anim_idx, 1.0f, 1.0f, 0.5f, -5.0f, 0, 0); Player_actor_setup_main_Base(actor, game); Player_actor_sound_BED_NEGAERI(actor); diff --git a/src/m_player_main_standup_bed.c_inc b/src/m_player_main_standup_bed.c_inc index 8be23c7c..50f034a4 100644 --- a/src/m_player_main_standup_bed.c_inc +++ b/src/m_player_main_standup_bed.c_inc @@ -125,7 +125,7 @@ static void Player_actor_setup_main_Standup_bed(ACTOR* actor, GAME* game) { cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(keyf, 0.0f, 1000.0f, 0.0f, 0, 0, 0x4000); rot = actor->shape_info.rotation.y; - cKF_SkeletonInfo_R_AnimationMove_ct_base(3.0f, &actor->world.position, &actor->world.position, rot, rot, keyf, 3); + cKF_SkeletonInfo_R_AnimationMove_ct_base(&actor->world.position, &actor->world.position, rot, rot, 3.0f, keyf, 3); Player_actor_InitAnimation_Base2(actor, game, anim_idx, anim_idx, 1.0f, 1.0f, 0.5f, -3.0f, 0, 0); Player_actor_setup_main_Base(actor, game); Player_actor_sound_BED_OUT(actor); diff --git a/src/m_player_main_struggle_pitfall.c_inc b/src/m_player_main_struggle_pitfall.c_inc index e69de29b..39bce6d9 100644 --- a/src/m_player_main_struggle_pitfall.c_inc +++ b/src/m_player_main_struggle_pitfall.c_inc @@ -0,0 +1,123 @@ +static int Player_actor_request_main_struggle_pitfall_all(GAME* game, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_STRUGGLE_PITFALL, prio)) { + Player_actor_request_main_index(game, mPlayer_INDEX_STRUGGLE_PITFALL, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Struggle_pitfall(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + mPlayer_main_struggle_pitfall_c* struggle_pitfall_p = &player->main_data.struggle_pitfall; + int anim1_idx; + int part_table_idx; + + struggle_pitfall_p->button_presses = 0.0f; + struggle_pitfall_p->target_anim_speed = 0.5f; + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_MOGAKU1, -5.0f, &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actorx, game, mPlayer_ANIM_MOGAKU1, mPlayer_ANIM_MOGAKU1, 1.0f, 1.0f, 0.5f, -5.0f, + mPlayer_PART_TABLE_NORMAL); + player->draw_effect_idx = eEC_EFFECT_ASE2 + 1; + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_settle_main_Struggle_pitfall(ACTOR* actorx, GAME* game) { + eEC_CLIP->effect_kill_proc(eEC_EFFECT_ASE2, RSV_NO); +} + +static void Player_actor_Movement_Struggle_pitfall(ACTOR* actorx) { + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static int Player_actor_ControlAnimationSpeed_Struggle_pitfall(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_struggle_pitfall_c* struggle_pitfall_p = &player->main_data.struggle_pitfall; + f32 add_button_push_amt; + f32 old_recognize_percentR; + f32 now_recognize_percentR; + f32 d_recognize_percentR; + f32 abs_d_recognize_percentR; + + if (struggle_pitfall_p->button_presses >= 20.0f) { + return TRUE; + } + + add_button_push_amt = 0.0f; + add_button_push_amt += Player_actor_CheckController_forStruggle_pitfall(); + old_recognize_percentR = Player_actor_GetController_old_recognize_percentR(); + now_recognize_percentR = Player_actor_GetController_recognize_percentR(); + d_recognize_percentR = old_recognize_percentR - now_recognize_percentR; + abs_d_recognize_percentR = ABS(d_recognize_percentR); + add_button_push_amt += abs_d_recognize_percentR * 0.5f; + + if (old_recognize_percentR > 0.0f && now_recognize_percentR > 0.0f) { + int now_move_angle = Player_actor_GetController_move_angle(); + int old_move_angle = Player_actor_GetController_old_move_angle(); + int d_move_angle = (s16)(old_move_angle - now_move_angle); + int abs_d_move_angle = ABS(d_move_angle); + + add_button_push_amt += (f32)abs_d_move_angle * 0.00002f; + } + + { + f32* target_anim_speed_p = &struggle_pitfall_p->target_anim_speed; + + struggle_pitfall_p->button_presses += add_button_push_amt; + (*target_anim_speed_p) += add_button_push_amt * 0.25f; + (*target_anim_speed_p) -= 0.00435f; + + if (*target_anim_speed_p > 1.0f) { + *target_anim_speed_p = 1.0f; + } else if (*target_anim_speed_p < 0.5f) { + *target_anim_speed_p = 0.5f; + } + + { + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + f32* speed_p = &fc0_p->speed; + + (*speed_p) += (*target_anim_speed_p - *speed_p) * 0.10875f; + } + } + + return FALSE; +} + +static int Player_actor_CulcAnimation_Struggle_pitfall(ACTOR* actorx) { + f32 dummy; + + return Player_actor_CulcAnimation_Base2(actorx, &dummy); +} + +static void Player_actor_set_eye_pattern_Struggle_pitfall(ACTOR* actorx) { + Player_actor_set_tex_anime_pattern(actorx); + Player_actor_set_eye_pattern(actorx, 6); +} + +static void Player_actor_ObjCheck_Struggle_pitfall(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_request_proc_index_fromStruggle_pitfall(GAME* game, int end_flag) { + + if (end_flag) { + Player_actor_request_main_climbup_pitfall_all(game, mPlayer_REQUEST_PRIORITY_29); + } +} + +static void Player_actor_main_Struggle_pitfall(ACTOR* actorx, GAME* game) { + int end_flag; + + Player_actor_Movement_Struggle_pitfall(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + end_flag = Player_actor_ControlAnimationSpeed_Struggle_pitfall(actorx); + Player_actor_CulcAnimation_Struggle_pitfall(actorx); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_Struggle_pitfall(actorx); + Player_actor_ObjCheck_Struggle_pitfall(actorx, game); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromStruggle_pitfall(game, end_flag); +} diff --git a/src/m_player_main_stung_bee.c_inc b/src/m_player_main_stung_bee.c_inc index e69de29b..935df971 100644 --- a/src/m_player_main_stung_bee.c_inc +++ b/src/m_player_main_stung_bee.c_inc @@ -0,0 +1,125 @@ +static int Player_actor_request_main_stung_bee_all(GAME* game, int prio) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + int main_index = player->now_main_index; + + if (main_index == mPlayer_INDEX_RELAX_ROD) { + mPlayer_main_relax_rod_c* relax_rod_p = &player->main_data.relax_rod; + + relax_rod_p->bee_flag = TRUE; + return FALSE; + } else if (Player_actor_Check_is_demo_mode(main_index)) { + return FALSE; + } else if (Player_actor_check_request_main_able(game, mPlayer_INDEX_STUNG_BEE, prio)) { + Player_actor_request_main_index(game, mPlayer_INDEX_STUNG_BEE, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Stung_bee(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_stung_bee_c* stung_bee_p = &player->main_data.stung_bee; + int anim1_idx; + int part_table_idx; + + stung_bee_p->timer = 0.0f; + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_HATI1, -5.0f, &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_HATI1, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, + cKF_FRAMECONTROL_STOP, part_table_idx); + Player_actor_setup_main_Base(actorx, game); + mBGMPsComp_make_ps_quiet(0x168); + if (player->bee_chase_bgm_flag) { + player->bee_chase_bgm_flag = FALSE; + mBGMPsComp_delete_ps_happening(BGM_BEE_CHASE, 0); + } + + Player_actor_sound_hachi_sasareru(actorx); +} + +static void Player_actor_Movement_Stung_bee(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_stung_bee_c* stung_bee_p = &player->main_data.stung_bee; + f32* timer_p = &stung_bee_p->timer; + + Player_actor_Movement_Base_Braking(actorx); + if (*timer_p > 94.0f) { + add_calc_short_angle2(&actorx->shape_info.rotation.y, DEG2SHORT_ANGLE2(180.0f), 1.0f - sqrtf(0.5f), 2500, 50); + actorx->world.angle.y = actorx->shape_info.rotation.y; + } +} + +static int Player_actor_CulcAnimation_Stung_bee(ACTOR* actorx, f32* last_anim0_cur_frame) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame); +} + +static void Player_actor_ChangeAnimation_Stung_bee(ACTOR* actorx, GAME* game, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (end_flag && player->animation0_idx == mPlayer_ANIM_HATI1) { + int anim1_idx; + int part_table_idx; + + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_HATI2, -5.0f, &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_HATI2, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, + cKF_FRAMECONTROL_STOP, part_table_idx); + } +} + +static void Player_actor_SearchAnimation_Stung_bee(ACTOR* actorx, GAME* game, f32 frame) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE && + player->animation0_idx == mPlayer_ANIM_HATI2) { + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + + if (Player_actor_Check_AnimationFrame(fc0_p, 21.0f)) { + mNpc_SetTalkBee(); + Common_Set(player_bee_swell_flag, TRUE); + Common_Set(player_bee_chase_flag, FALSE); + mPlib_change_player_face(game); + } + } +} + +static void Player_actor_set_eye_pattern_Stung_bee(ACTOR* actorx) { + Player_actor_set_tex_anime_pattern(actorx); +} + +static void Player_actor_ObjCheck_Stung_bee(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Stung_bee(ACTOR* actorx) { + Player_actor_BGcheck_common_type1(actorx); +} + +static void Player_actor_request_proc_index_fromStung_bee(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_stung_bee_c* stung_bee_p = &player->main_data.stung_bee; + f32* timer_p = &stung_bee_p->timer; + + if (*timer_p > 252.0f) { + Player_actor_request_main_notice_bee_all(game, mPlayer_REQUEST_PRIORITY_26); + } else { + (*timer_p) += 1.0f; + } +} + +static void Player_actor_main_Stung_bee(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + int end_flag; + + Player_actor_Movement_Stung_bee(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + end_flag = Player_actor_CulcAnimation_Stung_bee(actorx, &last_anim0_cur_frame); + Player_actor_ChangeAnimation_Stung_bee(actorx, game, end_flag); + Player_actor_SearchAnimation_Stung_bee(actorx, game, last_anim0_cur_frame); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_tex_anime_Stung_bee(actorx); + Player_actor_ObjCheck_Stung_bee(actorx, game); + Player_actor_BGcheck_Stung_bee(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromStung_bee(actorx, game); +} diff --git a/src/m_player_main_wait_open_furniture.c_inc b/src/m_player_main_wait_open_furniture.c_inc index 4baf5dc9..bf37c46c 100644 --- a/src/m_player_main_wait_open_furniture.c_inc +++ b/src/m_player_main_wait_open_furniture.c_inc @@ -32,8 +32,8 @@ static void Player_actor_setup_main_Wait_open_furniture(ACTOR* actor, GAME* game anim_idx = req_open->anim_idx; cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(keyf, 0.0f, 1000.0f, 200.0f, 0, 0, 0x4000); - cKF_SkeletonInfo_R_AnimationMove_ct_base(0.0f, &actor->world.position, &actor->world.position, - actor->shape_info.rotation.y, 0, keyf, 1); + cKF_SkeletonInfo_R_AnimationMove_ct_base(&actor->world.position, &actor->world.position, + actor->shape_info.rotation.y, 0, 0.0f, keyf, 1); Player_actor_InitAnimation_Base1(actor, game, anim_idx, anim_idx, 1.0f, 1.0f, 0.5f, -5.0f, 0); Player_actor_setup_main_Base(actor, game); } @@ -44,8 +44,8 @@ static void Player_actor_settle_main_Wait_open_furniture(ACTOR* actor, GAME* gam cKF_SkeletonInfo_R_AnimationMove_dt(&player->keyframe0); } -static void Player_actor_Movement_Wait_open_furniture(ACTOR* actor) { - Player_actor_Movement_Base_Stop(actor, FALSE); +static void Player_actor_Movement_Wait_open_furniture(ACTOR* actor) { + Player_actor_Movement_Base_Stop(actor, FALSE); } static int Player_actor_CulcAnimation_Wait_open_furniture(ACTOR* actor) { diff --git a/src/m_player_main_walk.c_inc b/src/m_player_main_walk.c_inc index 84a3e578..1bac0fb0 100644 --- a/src/m_player_main_walk.c_inc +++ b/src/m_player_main_walk.c_inc @@ -56,11 +56,11 @@ static void Player_actor_setup_main_Walk_common(ACTOR* actor, GAME* game) { Player_actor_setup_main_Base(actor, game); } -static void Player_actor_setup_main_Walk(ACTOR* actor, GAME* game) { - Player_actor_setup_main_Walk_common(actor, game); +static void Player_actor_setup_main_Walk(ACTOR* actor, GAME* game) { + Player_actor_setup_main_Walk_common(actor, game); } -static void Player_actor_settle_main_Walk(ACTOR* actor) { +static void Player_actor_settle_main_Walk(ACTOR* actor, GAME* game) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; switch (player->requested_main_index) { @@ -219,12 +219,12 @@ static void Player_actor_Movement_Walk(ACTOR* actor, GAME* game, f32* frame) { Player_actor_Movement_Base(actor); } -static void Player_actor_ObjCheck_Walk(ACTOR* actor, GAME* game) { - Player_actor_Excute_Corect_forStand(actor, game); +static void Player_actor_ObjCheck_Walk(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); } -static void Player_actor_BGcheck_Walk(ACTOR* actor) { - Player_actor_BGcheck_common_type1(actor); +static void Player_actor_BGcheck_Walk(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); } static void Player_actor_request_proc_index_fromWalk(ACTOR* actor, GAME* game) { From 41380f36c60461e4bf8ab034098f760ba10e96b2 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Thu, 5 Sep 2024 16:38:09 +0200 Subject: [PATCH 188/234] match m_player_item --- include/m_player.h | 3 + src/m_player_item.c_inc | 151 +++++++++++++++++++++++++++++++ src/m_player_item_axe.c_inc | 4 +- src/m_player_item_balloon.c_inc | 20 ++-- src/m_player_item_fan.c_inc | 4 +- src/m_player_item_net.c_inc | 32 +++---- src/m_player_item_rod.c_inc | 62 ++++++------- src/m_player_item_scoop.c_inc | 4 +- src/m_player_item_umbrella.c_inc | 4 +- src/m_player_item_windmill.c_inc | 10 +- 10 files changed, 224 insertions(+), 70 deletions(-) diff --git a/include/m_player.h b/include/m_player.h index 6a29cd31..3ec02a54 100644 --- a/include/m_player.h +++ b/include/m_player.h @@ -471,6 +471,9 @@ enum { mPlayer_ITEM_MAIN_NUM, }; +#define mPlayer_ITEM_MAIN_VALID(main_index) ((main_index) >= (mPlayer_ITEM_MAIN_NONE) && (main_index) < (mPlayer_ITEM_MAIN_NUM)) + + enum { mPlayer_ITEM_KIND_AXE, mPlayer_ITEM_KIND_AXE_USE_1, diff --git a/src/m_player_item.c_inc b/src/m_player_item.c_inc index e69de29b..a37ddbf1 100644 --- a/src/m_player_item.c_inc +++ b/src/m_player_item.c_inc @@ -0,0 +1,151 @@ +typedef int (*mPlayer_item_proc)(ACTOR* actor, int, int); + +extern Gfx tol_sponge_1_model[]; + +static void Player_actor_Item_Setup_main(ACTOR* actor, int now, int last) { + static const mPlayer_item_proc proc[] = { + NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, (mPlayer_item_proc)Player_actor_Item_Setup_main_balloon_normal, + NULL, NULL, + }; + + if (now != last) { + if (proc[now] != NULL) { + proc[now](actor, now, last); + } + } +} +typedef int (*mPlayer_item_main_proc)(ACTOR* actor, GAME*); + +static int Player_actor_Item_main(ACTOR* actor, GAME* game) { + static const mPlayer_item_main_proc proc[] = { + NULL, + Player_actor_Item_main_axe_normal, + Player_actor_Item_main_net_normal, + Player_actor_Item_main_net_normal, + Player_actor_Item_main_net_stop, + Player_actor_Item_main_net_normal, + Player_actor_Item_main_net_normal, + Player_actor_Item_main_net_normal, + Player_actor_Item_main_net_normal, + Player_actor_Item_main_net_normal, + Player_actor_Item_main_umbrella_normal, + Player_actor_Item_main_rod_normal, + Player_actor_Item_main_rod_ready, + Player_actor_Item_main_rod_cast, + Player_actor_Item_main_rod_air, + Player_actor_Item_main_rod_relax, + Player_actor_Item_main_rod_collect, + Player_actor_Item_main_rod_vib, + Player_actor_Item_main_rod_fly, + Player_actor_Item_main_rod_putaway, + Player_actor_Item_main_scoop_normal, + Player_actor_Item_main_balloon_normal, + Player_actor_Item_main_windmill_normal, + Player_actor_Item_main_fan_normal, + }; + + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int now_index = player->now_item_main_index; + + if (mPlayer_ITEM_MAIN_VALID(now_index)) { + Player_actor_Item_main_other_func1(actor, game); + if (now_index == mPlayer_ITEM_MAIN_NONE) { + Player_actor_Item_Set_Command_forUki(actor, 0); + } else { + if (proc[now_index] != NULL) { + return proc[now_index](actor, game); + } + } + } + + return FALSE; +} + +typedef void (*mPlayer_item_draw_proc)(ACTOR* actor, GAME*); + +static void Player_actor_Item_draw(ACTOR* actor, GAME* game) { + static const mPlayer_item_draw_proc proc[] = { + NULL, + Player_actor_Item_draw_axe, + Player_actor_Item_draw_net, + Player_actor_Item_draw_net, + Player_actor_Item_draw_net, + Player_actor_Item_draw_net, + Player_actor_Item_draw_net, + Player_actor_Item_draw_net, + Player_actor_Item_draw_net, + Player_actor_Item_draw_net, + Player_actor_Item_draw_umbrella, + Player_actor_Item_draw_rod, + Player_actor_Item_draw_rod, + Player_actor_Item_draw_rod, + Player_actor_Item_draw_rod, + Player_actor_Item_draw_rod, + Player_actor_Item_draw_rod, + Player_actor_Item_draw_rod, + Player_actor_Item_draw_rod, + Player_actor_Item_draw_rod, + Player_actor_Item_draw_scoop, + Player_actor_Item_draw_balloon, + Player_actor_Item_draw_windmill, + Player_actor_Item_draw_fan, + }; + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int now_index = player->now_item_main_index; + + if (mPlayer_ITEM_MAIN_VALID(now_index)) { + GRAPH* graph = game->graph; + + if (now_index == mPlayer_ITEM_MAIN_NONE) { + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_WASH_CAR) { + Mtx* mtx; + + _texture_z_light_fog_prim(graph); + Matrix_push(); + Matrix_put(&player->right_hand_mtx); + mtx = _Matrix_to_Mtx_new(game->graph); + + if (mtx != NULL) { + OPEN_POLY_OPA_DISP(graph); + + gSPMatrix(__polyOpa++, mtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(__polyOpa++, tol_sponge_1_model); + + CLOSE_POLY_OPA_DISP(graph); + + Matrix_pull(); + } + } + player->item_rod_top_pos_set = 0; + player->balloon_start_pos_set_flag = 0; + } else { + if (proc[now_index] != NULL) { + f32 scale = player->item_scale; + Mtx* mtx; + + Matrix_push(); + Matrix_put(&player->right_hand_mtx); + + if (scale != 1.0f) { + Matrix_scale(scale, scale, scale, 1); + } + mtx = _Matrix_to_Mtx_new(game->graph); + + if (mtx != NULL) { + _texture_z_light_fog_prim(graph); + + OPEN_POLY_OPA_DISP(graph); + + gSPMatrix(__polyOpa++, mtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + CLOSE_POLY_OPA_DISP(graph); + proc[now_index](actor, game); + } + Matrix_pull(); + } + } + } +} diff --git a/src/m_player_item_axe.c_inc b/src/m_player_item_axe.c_inc index 0b298c98..d1032182 100644 --- a/src/m_player_item_axe.c_inc +++ b/src/m_player_item_axe.c_inc @@ -1,8 +1,8 @@ -int Player_actor_Item_main_axe_normal(ACTOR* actor, GAME* game){ +static int Player_actor_Item_main_axe_normal(ACTOR* actor, GAME* game){ return 0; } -void Player_actor_Item_draw_axe(ACTOR* actor, GAME* game){ +static void Player_actor_Item_draw_axe(ACTOR* actor, GAME* game){ PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; int shape_type; diff --git a/src/m_player_item_balloon.c_inc b/src/m_player_item_balloon.c_inc index 032effee..f88c8d55 100644 --- a/src/m_player_item_balloon.c_inc +++ b/src/m_player_item_balloon.c_inc @@ -1,8 +1,8 @@ -s16 Player_actor_Item_Get_goal_balloon_lean_angle(ACTOR* actor){ +static s16 Player_actor_Item_Get_goal_balloon_lean_angle(ACTOR* actor){ return -actor->shape_info.rotation.x; } -void Player_actor_Item_Setup_main_balloon_normal(ACTOR* actor, GAME* game, int kind){ +static void Player_actor_Item_Setup_main_balloon_normal(ACTOR* actor, GAME* game, int kind){ PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; int check = FALSE; @@ -27,13 +27,13 @@ void Player_actor_Item_Setup_main_balloon_normal(ACTOR* actor, GAME* game, int k } -void Player_actor_Item_set_balloon_lean_angle(ACTOR* actor){ +static void Player_actor_Item_set_balloon_lean_angle(ACTOR* actor){ PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; s16 angle = Player_actor_Item_Get_goal_balloon_lean_angle(actor); add_calc_short_angle2(&player->balloon_lean_angle, angle, 1.0f - sqrtf(0.91f), 250, 0); } -void Player_actor_Item_CulcAnimation_balloon_normal(ACTOR* actor){ +static void Player_actor_Item_CulcAnimation_balloon_normal(ACTOR* actor){ PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; f32 speed = player->item_keyframe.frame_control.speed; f32 cur = player->item_keyframe.frame_control.current_frame; @@ -54,7 +54,7 @@ void Player_actor_Item_CulcAnimation_balloon_normal(ACTOR* actor){ } -void Player_actor_Item_Movement_balloon_normal(ACTOR* actor) { +static void Player_actor_Item_Movement_balloon_normal(ACTOR* actor) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; f32 max = player->item_keyframe.frame_control.max_frames; int index; @@ -165,7 +165,7 @@ void Player_actor_Item_Movement_balloon_normal(ACTOR* actor) { } -void Player_actor_Item_PlayAnimation_balloon_normal(ACTOR* actor){ +static void Player_actor_Item_PlayAnimation_balloon_normal(ACTOR* actor){ PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; f32 cur = player->item_keyframe.frame_control.current_frame; f32 max = player->item_keyframe.frame_control.max_frames; @@ -191,13 +191,13 @@ void Player_actor_Item_PlayAnimation_balloon_normal(ACTOR* actor){ } } -int Player_actor_Item_main_balloon_normal(ACTOR* actor, GAME* game){ +static int Player_actor_Item_main_balloon_normal(ACTOR* actor, GAME* game){ Player_actor_Item_set_balloon_lean_angle(actor); Player_actor_Item_CulcAnimation_balloon_normal(actor); return 0; } -int Player_actor_Item_draw_balloon_Before(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_idx, Gfx** joint_shape, +static int Player_actor_Item_draw_balloon_Before(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_idx, Gfx** joint_shape, u8* joint_flags, void* arg, s_xyz* joint_rot, xyz_t* joint_pos){ switch(joint_idx){ @@ -218,7 +218,7 @@ int Player_actor_Item_draw_balloon_Before(GAME* game, cKF_SkeletonInfo_R_c* keyf return 1; } -int Player_actor_Item_draw_balloon_After(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_idx, Gfx** joint_shape, +static int Player_actor_Item_draw_balloon_After(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_idx, Gfx** joint_shape, u8* joint_flags, void* arg, s_xyz* joint_rot, xyz_t* joint_pos){ switch(joint_idx){ case 1: @@ -238,7 +238,7 @@ int Player_actor_Item_draw_balloon_After(GAME* game, cKF_SkeletonInfo_R_c* keyfr return 1; } -void Player_actor_Item_draw_balloon(ACTOR* actor, GAME* game) { +static void Player_actor_Item_draw_balloon(ACTOR* actor, GAME* game) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; Mtx* item_mtx; GAME_PLAY* play = (GAME_PLAY*)game; diff --git a/src/m_player_item_fan.c_inc b/src/m_player_item_fan.c_inc index b1110087..2fdda2a6 100644 --- a/src/m_player_item_fan.c_inc +++ b/src/m_player_item_fan.c_inc @@ -1,8 +1,8 @@ -int Player_actor_Item_main_fan_normal(ACTOR* actor, GAME* game){ +static int Player_actor_Item_main_fan_normal(ACTOR* actor, GAME* game){ return 0; } -void Player_actor_Item_draw_fan(ACTOR* actor, GAME* game){ +static void Player_actor_Item_draw_fan(ACTOR* actor, GAME* game){ PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; int type; diff --git a/src/m_player_item_net.c_inc b/src/m_player_item_net.c_inc index 6496f835..e9c29c26 100644 --- a/src/m_player_item_net.c_inc +++ b/src/m_player_item_net.c_inc @@ -1,25 +1,25 @@ -void Player_actor_Item_net_CulcJointAngle_dummy_net_base(s_xyz* angle, const s_xyz* base, s16 min, s16 max, f32 frac){ +static void Player_actor_Item_net_CulcJointAngle_dummy_net_base(s_xyz* angle, const s_xyz* base, s16 min, s16 max, f32 frac){ add_calc_short_angle2(&angle->x, base->x, 1.0f - sqrtf(1.0f - frac), min >> 1, max >> 1); add_calc_short_angle2(&angle->y, base->y, 1.0f - sqrtf(1.0f - frac), min >> 1, max >> 1); add_calc_short_angle2(&angle->z, base->z, 1.0f - sqrtf(1.0f - frac), min >> 1, max >> 1); } -void Player_actor_Item_net_CulcJointAngle_dummy_net_reset(ACTOR* actor){ +static void Player_actor_Item_net_CulcJointAngle_dummy_net_reset(ACTOR* actor){ static const s_xyz basic_angle = {0, 182, -7281}; PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; Player_actor_Item_net_CulcJointAngle_dummy_net_base(&player->net_angle,&basic_angle, 2730, 100, 0.2f); } -void Player_actor_Item_net_CulcJointAngle_dummy_net_ready(ACTOR* actor){ +static void Player_actor_Item_net_CulcJointAngle_dummy_net_ready(ACTOR* actor){ static s_xyz basic_angle = {0, 364, -11832}; PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; Player_actor_Item_net_CulcJointAngle_dummy_net_base(&player->net_angle,&basic_angle, 2730, 100, 0.2f); } -void Player_actor_Item_net_CulcJointAngle_dummy_net_common(ACTOR* actor, const xyz_t* start_angle, const xyz_t* arg2, const xyz_t* end_left_angle, const xyz_t* end_right_angle){ +static void Player_actor_Item_net_CulcJointAngle_dummy_net_common(ACTOR* actor, const xyz_t* start_angle, const xyz_t* arg2, const xyz_t* end_left_angle, const xyz_t* end_right_angle){ PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; f32 sp = (player->keyframe0.frame_control.speed - 0.22f) / 0.38f; s_xyz base; @@ -73,7 +73,7 @@ void Player_actor_Item_net_CulcJointAngle_dummy_net_common(ACTOR* actor, const x Player_actor_Item_net_CulcJointAngle_dummy_net_base(net_angle, &base, 2730, 100, 0.2f); } -void Player_actor_Item_net_CulcJointAngle_dummy_net_walk(ACTOR* actor){ +static void Player_actor_Item_net_CulcJointAngle_dummy_net_walk(ACTOR* actor){ static const xyz_t basic_start_move_angle = {0, 182.0f, -7281.0f}; static const xyz_t basic_end_left_turn_angle = {0, -4551.0f, -4551.0f}; static const xyz_t basic_end_right_turn_angle = {0, 4551.0f, -4551.0f}; @@ -83,7 +83,7 @@ void Player_actor_Item_net_CulcJointAngle_dummy_net_walk(ACTOR* actor){ } -void Player_actor_Item_net_CulcJointAngle_dummy_net_zero(ACTOR* actor){ +static void Player_actor_Item_net_CulcJointAngle_dummy_net_zero(ACTOR* actor){ PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; Player_actor_Item_net_CulcJointAngle_dummy_net_base(&player->net_angle,&ZeroSVec, 2730, 100, 0.2f); @@ -91,7 +91,7 @@ void Player_actor_Item_net_CulcJointAngle_dummy_net_zero(ACTOR* actor){ } -void Player_actor_Item_net_CulcJointAngle_dummy_net_ready_walk(ACTOR* actor){ +static void Player_actor_Item_net_CulcJointAngle_dummy_net_ready_walk(ACTOR* actor){ static const xyz_t basic_start_move_angle = { 0.0f, 364.0f, -11832.0f }; static const xyz_t basic_end_left_turn_angle = {0, -4551.0f, -4551.0f}; static const xyz_t basic_end_right_turn_angle = {0, 4551.0f, -4551.0f}; @@ -102,7 +102,7 @@ void Player_actor_Item_net_CulcJointAngle_dummy_net_ready_walk(ACTOR* actor){ -void Player_actor_Item_net_CulcJointAngle_dummy_net_turn(ACTOR* actor){ +static void Player_actor_Item_net_CulcJointAngle_dummy_net_turn(ACTOR* actor){ static const xyz_t basic_angle = { 0.0f, -4551.0f, -4551.0f }; Player_actor_Item_net_CulcJointAngle_dummy_net_common(actor, &basic_angle, &basic_angle, &basic_angle, &basic_angle); @@ -110,14 +110,14 @@ void Player_actor_Item_net_CulcJointAngle_dummy_net_turn(ACTOR* actor){ -void Player_actor_Item_net_CulcJointAngle_dummy_net_slip(ACTOR* actor){ +static void Player_actor_Item_net_CulcJointAngle_dummy_net_slip(ACTOR* actor){ static const xyz_t basic_angle = {0.0f, 0.0f, -11832.0f}; Player_actor_Item_net_CulcJointAngle_dummy_net_common(actor, &basic_angle, &basic_angle, &basic_angle, &basic_angle); } -void Player_actor_Item_net_CulcJointAngle_dummy_net_swing(ACTOR* actor){ +static void Player_actor_Item_net_CulcJointAngle_dummy_net_swing(ACTOR* actor){ PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; if(player->keyframe0.frame_control.current_frame >= 0.5f){ @@ -130,7 +130,7 @@ void Player_actor_Item_net_CulcJointAngle_dummy_net_swing(ACTOR* actor){ typedef void (*mPlayer_item_net_proc)(ACTOR*); -void Player_actor_Item_net_CulcJointAngle_dummy_net(ACTOR* actor) { +static void Player_actor_Item_net_CulcJointAngle_dummy_net(ACTOR* actor) { static mPlayer_item_net_proc proc[] = { Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, @@ -210,20 +210,20 @@ void Player_actor_Item_net_CulcJointAngle_dummy_net(ACTOR* actor) { } } -int Player_actor_Item_main_net_normal(ACTOR* actor){ +static int Player_actor_Item_main_net_normal(ACTOR* actor, GAME* game){ Player_actor_Item_CulcAnimation_Base(actor); Player_actor_Item_net_CulcJointAngle_dummy_net(actor); return 0; } -int Player_actor_Item_main_net_stop(ACTOR* actor){ +static int Player_actor_Item_main_net_stop(ACTOR* actor, GAME* game){ int ret = Player_actor_Item_CulcAnimation_Base2(actor); Player_actor_Item_net_CulcJointAngle_dummy_net(actor); return ret; } -void Player_actor_Item_draw_net_After_dummy_net(ACTOR* actor){ +static void Player_actor_Item_draw_net_After_dummy_net(ACTOR* actor){ PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; Matrix_rotateXYZ(player->net_angle.x, player->net_angle.y, player->net_angle.z, 1); @@ -232,7 +232,7 @@ void Player_actor_Item_draw_net_After_dummy_net(ACTOR* actor){ typedef void (*mPlayer_item_net_draw_proc)(void* arg, GAME* game, cKF_SkeletonInfo_R_c* keyframe, Gfx** joint_shape, u8* joint_flags, s_xyz* joint_rot, xyz_t* joint_pos); -int Player_actor_Item_draw_net_After(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_idx, Gfx** joint_shape, +static int Player_actor_Item_draw_net_After(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_idx, Gfx** joint_shape, u8* joint_flags, void* arg, s_xyz* joint_rot, xyz_t* joint_pos) { static const mPlayer_item_net_draw_proc proc[] = { NULL, NULL, (mPlayer_item_net_draw_proc)Player_actor_Item_draw_net_After_dummy_net, NULL, NULL, NULL, @@ -247,7 +247,7 @@ int Player_actor_Item_draw_net_After(GAME* game, cKF_SkeletonInfo_R_c* keyframe, return TRUE; } -void Player_actor_Item_draw_net(ACTOR* actor, GAME* game){ +static void Player_actor_Item_draw_net(ACTOR* actor, GAME* game){ GAME_PLAY* play = (GAME_PLAY*)game; PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; diff --git a/src/m_player_item_rod.c_inc b/src/m_player_item_rod.c_inc index 3b63bcfc..1e939227 100644 --- a/src/m_player_item_rod.c_inc +++ b/src/m_player_item_rod.c_inc @@ -1,4 +1,4 @@ -void Player_actor_Item_Set_Scale_forUki_normal(ACTOR* actor, GAME* game) { +static void Player_actor_Item_Set_Scale_forUki_normal(ACTOR* actor, GAME* game) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; ACTOR* rod = player->fishing_rod_actor_p; f32 scale = 0.01f; @@ -14,7 +14,7 @@ void Player_actor_Item_Set_Scale_forUki_normal(ACTOR* actor, GAME* game) { } } -void Player_actor_Item_Set_Value_forUki_normal(ACTOR* actor, GAME* game){ +static void Player_actor_Item_Set_Value_forUki_normal(ACTOR* actor, GAME* game){ PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; Player_actor_Item_Set_Command_forUki(actor, 1); @@ -25,7 +25,7 @@ void Player_actor_Item_Set_Value_forUki_normal(ACTOR* actor, GAME* game){ Player_actor_Item_Set_Scale_forUki_normal(actor, game); } -int Player_actor_Item_main_rod_normal(ACTOR* actor, GAME* game){ +static int Player_actor_Item_main_rod_normal(ACTOR* actor, GAME* game){ PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; Player_actor_Item_CulcAnimation_Base(actor); @@ -33,7 +33,7 @@ int Player_actor_Item_main_rod_normal(ACTOR* actor, GAME* game){ return 0; } -void Player_actor_Item_Set_Value_forUki_ready(ACTOR* actor){ +static void Player_actor_Item_Set_Value_forUki_ready(ACTOR* actor){ PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; Player_actor_Item_Set_Command_forUki(actor, 2); @@ -44,7 +44,7 @@ void Player_actor_Item_Set_Value_forUki_ready(ACTOR* actor){ } -int Player_actor_Item_main_rod_ready(ACTOR* actor, GAME* game){ +static int Player_actor_Item_main_rod_ready(ACTOR* actor, GAME* game){ PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; Player_actor_Item_CulcAnimation_Base(actor); @@ -52,7 +52,7 @@ int Player_actor_Item_main_rod_ready(ACTOR* actor, GAME* game){ return 0; } -void Player_actor_Item_Set_CastGoalPoint_forUki_cast(ACTOR* actor, int index){ +static void Player_actor_Item_Set_CastGoalPoint_forUki_cast(ACTOR* actor, int index){ PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; if(index == mPlayer_INDEX_CAST_ROD){ @@ -65,7 +65,7 @@ void Player_actor_Item_Set_CastGoalPoint_forUki_cast(ACTOR* actor, int index){ } } -void Player_actor_Item_Set_Value_forUki_cast(ACTOR* actor){ +static void Player_actor_Item_Set_Value_forUki_cast(ACTOR* actor){ PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; Player_actor_Item_Set_Command_forUki(actor, 3); @@ -76,7 +76,7 @@ void Player_actor_Item_Set_Value_forUki_cast(ACTOR* actor){ } -int Player_actor_Item_Check_Status_forUki_cast(ACTOR* actor){ +static int Player_actor_Item_Check_Status_forUki_cast(ACTOR* actor){ PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; @@ -91,7 +91,7 @@ int Player_actor_Item_Check_Status_forUki_cast(ACTOR* actor){ return 0; } -int Player_actor_Item_main_rod_cast(ACTOR* actor, GAME* game){ +static int Player_actor_Item_main_rod_cast(ACTOR* actor, GAME* game){ PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; int status; @@ -102,7 +102,7 @@ int Player_actor_Item_main_rod_cast(ACTOR* actor, GAME* game){ return status; } -void Player_actor_Item_Set_Value_forUki_air(ACTOR* actor){ +static void Player_actor_Item_Set_Value_forUki_air(ACTOR* actor){ PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; Player_actor_Item_Set_Command_forUki(actor, 4); @@ -112,7 +112,7 @@ void Player_actor_Item_Set_Value_forUki_air(ACTOR* actor){ Player_actor_Item_Set_RodTopPos_forUki(actor); } -int Player_actor_Item_main_rod_air(ACTOR* actor, GAME* game){ +static int Player_actor_Item_main_rod_air(ACTOR* actor, GAME* game){ PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; Player_actor_Item_CulcAnimation_Base(actor); @@ -120,7 +120,7 @@ int Player_actor_Item_main_rod_air(ACTOR* actor, GAME* game){ return 0; } -void Player_actor_Item_SetFrame_forUki_relax(ACTOR* actor, GAME* game){ +static void Player_actor_Item_SetFrame_forUki_relax(ACTOR* actor, GAME* game){ PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; @@ -143,7 +143,7 @@ void Player_actor_Item_SetFrame_forUki_relax(ACTOR* actor, GAME* game){ } } -void Player_actor_Item_Set_Value_forUki_relax(ACTOR* actor){ +static void Player_actor_Item_Set_Value_forUki_relax(ACTOR* actor){ PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; Player_actor_Item_Set_RightHandPos_forUki(actor, player->now_main_index); @@ -152,7 +152,7 @@ void Player_actor_Item_Set_Value_forUki_relax(ACTOR* actor){ Player_actor_Item_Set_RodTopPos_forUki(actor); } -int Player_actor_Item_Check_Status_forUki_relax(ACTOR* actor){ +static int Player_actor_Item_Check_Status_forUki_relax(ACTOR* actor){ PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; @@ -164,13 +164,13 @@ int Player_actor_Item_Check_Status_forUki_relax(ACTOR* actor){ } } -int Player_actor_Item_main_rod_relax(ACTOR* actor, GAME* game){ +static int Player_actor_Item_main_rod_relax(ACTOR* actor, GAME* game){ Player_actor_Item_SetFrame_forUki_relax(actor,game); Player_actor_Item_Set_Value_forUki_relax(actor); return Player_actor_Item_Check_Status_forUki_relax(actor); } -void Player_actor_Item_Set_Value_forUki_collect(ACTOR* actor){ +static void Player_actor_Item_Set_Value_forUki_collect(ACTOR* actor){ PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; Player_actor_Item_Set_Command_forUki(actor, 6); @@ -180,7 +180,7 @@ void Player_actor_Item_Set_Value_forUki_collect(ACTOR* actor){ Player_actor_Item_Set_RodTopPos_forUki(actor); } -int Player_actor_Item_Check_Status_forUki_collect(ACTOR* actor){ +static int Player_actor_Item_Check_Status_forUki_collect(ACTOR* actor){ PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; @@ -194,13 +194,13 @@ int Player_actor_Item_Check_Status_forUki_collect(ACTOR* actor){ return 1; } -int Player_actor_Item_main_rod_collect(ACTOR* actor, GAME* game){ +static int Player_actor_Item_main_rod_collect(ACTOR* actor, GAME* game){ Player_actor_Item_CulcAnimation_Base(actor); Player_actor_Item_Set_Value_forUki_collect(actor); return Player_actor_Item_Check_Status_forUki_collect(actor); } -void Player_actor_Item_SetFrame_forUki_vib(ACTOR* actor){ +static void Player_actor_Item_SetFrame_forUki_vib(ACTOR* actor){ PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; @@ -233,7 +233,7 @@ void Player_actor_Item_SetFrame_forUki_vib(ACTOR* actor){ } } -void Player_actor_Item_Set_Value_forUki_vib(ACTOR* actor){ +static void Player_actor_Item_Set_Value_forUki_vib(ACTOR* actor){ PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; Player_actor_Item_Set_Command_forUki(actor, 6); @@ -244,7 +244,7 @@ void Player_actor_Item_Set_Value_forUki_vib(ACTOR* actor){ Player_actor_Item_Set_RodTopPos_forUki(actor); } -int Player_actor_Item_Check_Status_forUki_vib(ACTOR* actor){ +static int Player_actor_Item_Check_Status_forUki_vib(ACTOR* actor){ PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; @@ -258,13 +258,13 @@ int Player_actor_Item_Check_Status_forUki_vib(ACTOR* actor){ return 0; } -int Player_actor_Item_main_rod_vib(ACTOR* actor, GAME* game){ +static int Player_actor_Item_main_rod_vib(ACTOR* actor, GAME* game){ Player_actor_Item_SetFrame_forUki_vib(actor); Player_actor_Item_Set_Value_forUki_vib(actor); return Player_actor_Item_Check_Status_forUki_vib(actor); } -void Player_actor_Item_Set_Value_forUki_fly(ACTOR* actor){ +static void Player_actor_Item_Set_Value_forUki_fly(ACTOR* actor){ PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; Player_actor_Item_Set_Command_forUki(actor, 6); @@ -275,7 +275,7 @@ void Player_actor_Item_Set_Value_forUki_fly(ACTOR* actor){ Player_actor_Item_Set_RodTopPos_forUki(actor); } -int Player_actor_Item_Check_Status_forUki_fly(ACTOR* actor){ +static int Player_actor_Item_Check_Status_forUki_fly(ACTOR* actor){ PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; @@ -289,13 +289,13 @@ int Player_actor_Item_Check_Status_forUki_fly(ACTOR* actor){ return 0; } -int Player_actor_Item_main_rod_fly(ACTOR* actor, GAME* game){ +static int Player_actor_Item_main_rod_fly(ACTOR* actor, GAME* game){ Player_actor_Item_CulcAnimation_Base(actor); Player_actor_Item_Set_Value_forUki_fly(actor); return Player_actor_Item_Check_Status_forUki_fly(actor); } -void Player_actor_Item_Set_GyoeiScale_forUki_putaway(ACTOR* actor, int index){ +static void Player_actor_Item_Set_GyoeiScale_forUki_putaway(ACTOR* actor, int index){ PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; if(index == mPlayer_INDEX_PUTAWAY_ROD){ @@ -316,7 +316,7 @@ void Player_actor_Item_Set_GyoeiScale_forUki_putaway(ACTOR* actor, int index){ } } -void Player_actor_Item_Set_Value_forUki_putaway(ACTOR* actor){ +static void Player_actor_Item_Set_Value_forUki_putaway(ACTOR* actor){ PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; Player_actor_Item_Set_Command_forUki(actor, 5); @@ -327,7 +327,7 @@ void Player_actor_Item_Set_Value_forUki_putaway(ACTOR* actor){ Player_actor_Item_Set_RodTopPos_forUki(actor); } -int Player_actor_Item_main_rod_putaway(ACTOR* actor, GAME* game){ +static int Player_actor_Item_main_rod_putaway(ACTOR* actor, GAME* game){ PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; Player_actor_Item_CulcAnimation_Base(actor); @@ -336,7 +336,7 @@ int Player_actor_Item_main_rod_putaway(ACTOR* actor, GAME* game){ return 0; } -void Player_actor_Item_draw_net_After_main4_sao(ACTOR* actor){ +static void Player_actor_Item_draw_net_After_main4_sao(ACTOR* actor){ PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; Matrix_Position_VecX(&player->item_rod_top_pos, 1050.0f); @@ -345,7 +345,7 @@ void Player_actor_Item_draw_net_After_main4_sao(ACTOR* actor){ typedef void (*mPlayer_item_rod_draw_proc)(void* arg, GAME* game, cKF_SkeletonInfo_R_c* keyframe, Gfx** joint_shape, u8* joint_flags, s_xyz* joint_rot, xyz_t* joint_pos); -int Player_actor_Item_draw_rod_After(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_idx, Gfx** joint_shape, +static int Player_actor_Item_draw_rod_After(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_idx, Gfx** joint_shape, u8* joint_flags, void* arg, s_xyz* joint_rot, xyz_t* joint_pos) { static const mPlayer_item_net_draw_proc proc[] = { NULL,NULL,NULL,NULL, (mPlayer_item_rod_draw_proc)Player_actor_Item_draw_net_After_main4_sao, @@ -360,7 +360,7 @@ int Player_actor_Item_draw_rod_After(GAME* game, cKF_SkeletonInfo_R_c* keyframe, return 1; } -void Player_actor_Item_draw_rod(ACTOR* actor, GAME* game){ +static void Player_actor_Item_draw_rod(ACTOR* actor, GAME* game){ GAME_PLAY* play = (GAME_PLAY*)game; PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; Mtx* mtx; diff --git a/src/m_player_item_scoop.c_inc b/src/m_player_item_scoop.c_inc index cff5449c..a526e5f4 100644 --- a/src/m_player_item_scoop.c_inc +++ b/src/m_player_item_scoop.c_inc @@ -1,8 +1,8 @@ -int Player_actor_Item_main_scoop_normal(ACTOR* actor, GAME* game){ +static int Player_actor_Item_main_scoop_normal(ACTOR* actor, GAME* game){ return 0; } -void Player_actor_Item_draw_scoop(ACTOR* actor, GAME* game){ +static void Player_actor_Item_draw_scoop(ACTOR* actor, GAME* game){ PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; int type; diff --git a/src/m_player_item_umbrella.c_inc b/src/m_player_item_umbrella.c_inc index 07332ba5..1d039a71 100644 --- a/src/m_player_item_umbrella.c_inc +++ b/src/m_player_item_umbrella.c_inc @@ -1,9 +1,9 @@ -int Player_actor_Item_main_umbrella_normal(ACTOR* actor, GAME* game){ +static int Player_actor_Item_main_umbrella_normal(ACTOR* actor, GAME* game){ Player_actor_Get_umbrella_p(actor,game); return 0; } -void Player_actor_Item_draw_umbrella(ACTOR* actor, GAME* game){ +static void Player_actor_Item_draw_umbrella(ACTOR* actor, GAME* game){ PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; TOOLS_ACTOR* umbrella = (TOOLS_ACTOR*)Player_actor_Get_umbrella_p(actor,game); diff --git a/src/m_player_item_windmill.c_inc b/src/m_player_item_windmill.c_inc index 81edb060..bfc3f753 100644 --- a/src/m_player_item_windmill.c_inc +++ b/src/m_player_item_windmill.c_inc @@ -1,4 +1,4 @@ -void Player_actor_Item_windmill_CulcParam(ACTOR* actor){ +static void Player_actor_Item_windmill_CulcParam(ACTOR* actor){ PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; xyz_t pos; @@ -104,7 +104,7 @@ static void Player_actor_Item_windmill_CulcRotationSpeed(ACTOR* actor, GAME* gam } } -int Player_actor_Item_main_windmill_normal(ACTOR* actor, GAME* game){ +static int Player_actor_Item_main_windmill_normal(ACTOR* actor, GAME* game){ Player_actor_Item_windmill_CulcParam(actor); Player_actor_Item_windmill_CulcRotationSpeed(actor, game); Player_actor_Item_CulcAnimation_Base(actor); @@ -113,7 +113,7 @@ int Player_actor_Item_main_windmill_normal(ACTOR* actor, GAME* game){ return 0; } -void Player_actor_Item_draw_windmill_After_kaza1_fan(ACTOR* actor){ +static void Player_actor_Item_draw_windmill_After_kaza1_fan(ACTOR* actor){ PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; s_xyz* angle = &player->windmill_angle; xyz_t* item_end = &player->other_item_end_pos; @@ -132,7 +132,7 @@ void Player_actor_Item_draw_windmill_After_kaza1_fan(ACTOR* actor){ typedef void (*mPlayer_item_windmill_draw_proc)(void* arg, GAME* game, cKF_SkeletonInfo_R_c* keyframe, Gfx** joint_shape, u8* joint_flags, s_xyz* joint_rot, xyz_t* joint_pos); -int Player_actor_Item_draw_windmill_After(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_idx, Gfx** joint_shape, +static int Player_actor_Item_draw_windmill_After(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_idx, Gfx** joint_shape, u8* joint_flags, void* arg, s_xyz* joint_rot, xyz_t* joint_pos) { static const mPlayer_item_windmill_draw_proc proc[] = { NULL,NULL, (mPlayer_item_windmill_draw_proc)Player_actor_Item_draw_windmill_After_kaza1_fan, @@ -147,7 +147,7 @@ int Player_actor_Item_draw_windmill_After(GAME* game, cKF_SkeletonInfo_R_c* keyf return 1; } -void Player_actor_Item_draw_rod(ACTOR* actor, GAME* game){ +static void Player_actor_Item_draw_windmill(ACTOR* actor, GAME* game){ GAME_PLAY* play = (GAME_PLAY*)game; PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; Mtx* mtx; From fc0fc74055483c533a90a57dec0c23368f8c3774 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Thu, 5 Sep 2024 19:01:42 +0200 Subject: [PATCH 189/234] match m_player_main_sitdown --- include/m_player.h | 10 +++ src/m_player_main_hold.c_inc | 2 +- src/m_player_main_sitdown.c_inc | 118 ++++++++++++++++++++++++++++++++ 3 files changed, 129 insertions(+), 1 deletion(-) diff --git a/include/m_player.h b/include/m_player.h index 3ec02a54..c59439ad 100644 --- a/include/m_player.h +++ b/include/m_player.h @@ -1522,6 +1522,14 @@ typedef struct player_main_wait_bed_s { int flags; } mPlayer_main_wait_bed_c; +typedef struct player_main_sitdown_s { + int ftrID; +} mPlayer_main_sitdown_c; + +typedef struct player_main_sitdown_wait_s { + int ftrID; +} mPlayer_main_sitdown_wait_c; + typedef struct player_main_wade_s { int dir; xyz_t start_pos; @@ -1815,6 +1823,8 @@ typedef union { mPlayer_main_open_furniture_c open_furniture; mPlayer_main_lie_bed_c lie_bed; mPlayer_main_wait_bed_c wait_bed; + mPlayer_main_sitdown_c sitdown; + mPlayer_main_sitdown_wait_c sitdown_wait; mPlayer_main_wade_c wade; mPlayer_main_pickup_c pickup; mPlayer_main_pickup_jump_c pickup_jump; diff --git a/src/m_player_main_hold.c_inc b/src/m_player_main_hold.c_inc index e39a1338..b9b33daf 100644 --- a/src/m_player_main_hold.c_inc +++ b/src/m_player_main_hold.c_inc @@ -46,7 +46,7 @@ static Player_actor_request_main_hold(GAME* game, int ftr_no, int index, const x return FALSE; } -static void Player_actor_setup_main_OutdoorPlayer_actor_setup_main_Hold(ACTOR* actor, GAME* game) { +static void Player_actor_setup_main_Hold(ACTOR* actor, GAME* game) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; int flags = player->requested_main_index_data.hold.flags; diff --git a/src/m_player_main_sitdown.c_inc b/src/m_player_main_sitdown.c_inc index e69de29b..88b905c0 100644 --- a/src/m_player_main_sitdown.c_inc +++ b/src/m_player_main_sitdown.c_inc @@ -0,0 +1,118 @@ +static int Player_actor_Check_able_request_main_sitdown(GAME* game) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + int index = player->now_main_index; + + switch (index) { + case mPlayer_INDEX_WAIT: + case mPlayer_INDEX_WALK: + case mPlayer_INDEX_RUN: + case mPlayer_INDEX_DASH: + return TRUE; + + default: + return FALSE; + } +} + +static int Player_actor_request_main_sitdown(GAME* game, int index, const xyz_t* pos, int ftr_no, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_SITDOWN, priority) && + Player_actor_Check_able_request_main_sitdown(game)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + player->requested_main_index_data.sitdown.angle = Player_actor_Get_Angle_fromIndex(index); + player->requested_main_index_data.sitdown.pos = *pos; + player->requested_main_index_data.sitdown.pos.y = player->actor_class.world.position.y; + + player->requested_main_index_data.sitdown.ftrID = ftr_no; + Player_actor_request_main_index(game, mPlayer_INDEX_SITDOWN, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_settle_main_Sitdown(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + cKF_SkeletonInfo_R_AnimationMove_dt(&player->keyframe0); + actor->world.angle.y = actor->shape_info.rotation.y; + actor->shape_info.shadow_size_change_rate = 0.0f; + actor->shape_info.shadow_alpha_change_rate = 0.0f; +} + +static void Player_actor_setup_main_Sitdown(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + cKF_SkeletonInfo_R_c* keyf; + mPlayer_main_sitdown_c* main_sitdown = &player->main_data.sitdown; + mPlayer_request_sitdown_c* req_sitdown = &player->requested_main_index_data.sitdown; + s16 angle; + + keyf = &player->keyframe0; + + main_sitdown->ftrID = req_sitdown->ftrID; + angle = req_sitdown->angle; + + actor->world.angle.y = angle; + + cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(keyf, 0.0f, 1000.0f, 0.0f, 0, 0, 0x4000); + cKF_SkeletonInfo_R_AnimationMove_ct_base(&actor->world.position, &req_sitdown->pos, actor->shape_info.rotation.y, + req_sitdown->angle, 5.0f, keyf, 5); + Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_SITDOWN1, mPlayer_ANIM_SITDOWN1, 1.0f, 1.0f, 0.5f, -3.0f, + 0, 0); + Player_actor_setup_main_Base(actor, game); + Player_actor_sound_JUMP(actor); +} + +static int Player_actor_CulcAnimation_Sitdown(ACTOR* actor, f32* frame_calc) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_SetSound_Sitdown(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 20.0f)) { + Player_actor_sound_SIT(actor, player->main_data.sitdown.ftrID); + } +} + +static void Player_actor_SearchAnimation_Sitdown(ACTOR* actor, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_SetSound_Sitdown(actor); + } + Player_actor_DisappearShadow_fromAnimationFrame(actor, 0.0f, 15.0f); +} + +static void Player_actor_Movement_Sitdown(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + cKF_SkeletonInfo_R_AnimationMove_base(&actor->world.position, &actor->shape_info.rotation.y, &actor->scale, + actor->world.angle.y, &player->keyframe0); + Player_actor_Movement_Base_Stop(actor, FALSE); +} + +static void Player_actor_ObjCheck_Sitdown(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_request_proc_index_fromSitdown(ACTOR* actor, GAME* game, int arg) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (arg != 0) { + Player_actor_request_main_sitdown_wait(game, player->main_data.sitdown.ftrID, mPlayer_REQUEST_PRIORITY_21); + } +} + +static void Player_actor_main_Sitdown(ACTOR* actor, GAME* game) { + f32 frame_calc; + int arg = Player_actor_CulcAnimation_Sitdown(actor, &frame_calc); + + Player_actor_SearchAnimation_Sitdown(actor, frame_calc); + Player_actor_Movement_Sitdown(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Sitdown(actor, game); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromSitdown(actor, game, arg); +} From f5644cdb0f2094a75e836e4e9a21507bb6e9cfbb Mon Sep 17 00:00:00 2001 From: Prakxo Date: Thu, 5 Sep 2024 19:03:24 +0200 Subject: [PATCH 190/234] match m_player_main_sitdown_wait --- src/m_player_main_sitdown_wait.c_inc | 57 ++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/src/m_player_main_sitdown_wait.c_inc b/src/m_player_main_sitdown_wait.c_inc index e69de29b..8e1b398c 100644 --- a/src/m_player_main_sitdown_wait.c_inc +++ b/src/m_player_main_sitdown_wait.c_inc @@ -0,0 +1,57 @@ +static int Player_actor_request_main_sitdown_wait(GAME* game, int ftr_no, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_SITDOWN_WAIT, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + player->requested_main_index_data.sitdown_wait.ftrID = ftr_no; + + Player_actor_request_main_index(game, mPlayer_INDEX_SITDOWN_WAIT, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Sitdown_wait(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_sitdown_wait_c* main_sitdown_wait = &player->main_data.sitdown_wait; + mPlayer_request_sitdown_wait_c* req_sitdown_wait = &player->requested_main_index_data.sitdown_wait; + + main_sitdown_wait->ftrID = req_sitdown_wait->ftrID; + + Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_SITDOWN_WAIT1, mPlayer_ANIM_SITDOWN_WAIT1, 1.0f, 1.0f, + 0.5f, -5.0f, 0); + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_Movement_Sitdown_wait(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_Movement_Base_Stop(actor, FALSE); +} + +static int Player_actor_CulcAnimation_Sitdown_wait(ACTOR* actor) { + f32 frame_calc; + + return Player_actor_CulcAnimation_Base2(actor, &frame_calc); +} + +static void Player_actor_request_proc_index_fromSitdown(ACTOR* actor, GAME* game, int arg) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int ftr_no = player->main_data.sitdown_wait.ftrID; + + if ((Player_actor_GetController_move_percentX()) || (Player_actor_GetController_move_percentY())) { + Player_actor_request_main_standup(game, ftr_no, mPlayer_REQUEST_PRIORITY_22); + } +} + +static void Player_actor_main_Sitdown(ACTOR* actor, GAME* game) { + Player_actor_Movement_Sitdown_wait(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_CulcAnimation_Sitdown_wait(actor); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromSitdown_wait(actor, game); + Player_actor_main_Sitdown_wait_other_func2(actor, game); +} From 4a26ebefba22e3fb10b9485219cc5ed29d60ad39 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Thu, 5 Sep 2024 19:05:14 +0200 Subject: [PATCH 191/234] match m_player_main_standup --- src/m_player_main_standup.c_inc | 104 ++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) diff --git a/src/m_player_main_standup.c_inc b/src/m_player_main_standup.c_inc index e69de29b..6048f12f 100644 --- a/src/m_player_main_standup.c_inc +++ b/src/m_player_main_standup.c_inc @@ -0,0 +1,104 @@ +static int Player_actor_request_main_standup(GAME* game, int ftr_no, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_STANDUP, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + xyz_t player_pos = player->actor_class.world.position; + s16 rot = player->actor_class.shape_info.rotation.y; + + player_pos.x += 35.0f * sin_s(rot); + player_pos.z += 35.0f * cos_s(rot); + + if (!Player_actor_SearchPosition_npc_forStand(game, &player_pos)) { + player->requested_main_index_data.standup.ftrID = ftr_no; + Player_actor_request_main_index(game, mPlayer_INDEX_STANDUP, priority); + + return TRUE; + } + } + + return FALSE; +} + +static void Player_actor_setup_main_Standup(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + cKF_SkeletonInfo_R_c* keyf; + mPlayer_request_standup_c* req_standup = &player->requested_main_index_data.standup; + int ftr_no; + + keyf = &player->keyframe0; + + ftr_no = req_standup->ftrID; + + cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(keyf, 0.0f, 1000.0f, 0.0f, 0, 0, 0x4000); + cKF_SkeletonInfo_R_AnimationMove_ct_base(&actor->world.position, &actor->world.position, + actor->shape_info.rotation.y, 0, 0.0f, keyf, 1); + Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_STANDUP1, mPlayer_ANIM_STANDUP1, 1.0f, 1.0f, 0.5f, -5.0f, + 0, 0); + Player_actor_setup_main_Base(actor, game); + Player_actor_sound_STANDUP(actor, ftr_no); +} + +static void Player_actor_settle_main_Standup(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + cKF_SkeletonInfo_R_AnimationMove_dt(&player->keyframe0); + actor->shape_info.shadow_size_change_rate = 1.0f; + actor->shape_info.shadow_alpha_change_rate = 1.0f; +} + +static int Player_actor_CulcAnimation_Standup(ACTOR* actor, f32* frame_calc) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_ControlShadow_Standup(ACTOR* actor) { + Player_actor_AppearShadow_fromAnimationFrame(actor, 12.0f, 8.0f); +} + +static void Player_actor_SetSound_Standup(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 20.0f)) { + Player_actor_sound_LANDING(actor); + } +} + +static void Player_actor_SearchAnimation_Standup(ACTOR* actor, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_SetSound_Standup(actor); + } + Player_actor_ControlShadow_Standup(actor); +} + +static void Player_actor_Movement_Standup(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + cKF_SkeletonInfo_R_AnimationMove_base(&actor->world.position, &actor->shape_info.rotation.y, &actor->scale, + actor->world.angle.y, &player->keyframe0); + Player_actor_Movement_Base_Stop(actor, FALSE); +} + +static void Player_actor_ObjCheck_Standup(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_request_proc_index_fromStandup(ACTOR* actor, GAME* game, int arg) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (arg != 0) { + Player_actor_SettleRequestMainIndexPriority(actor); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } +} + +static void Player_actor_main_Standup(ACTOR* actor, GAME* game) { + f32 frame_calc; + int arg = Player_actor_CulcAnimation_Standup(actor, &frame_calc); + + Player_actor_SearchAnimation_Standup(actor, frame_calc); + Player_actor_Movement_Standup(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Standup(actor, game); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromStandup(actor, game, arg); +} From 1e238d3cabfb909a12ee98340ea1dd60fbc86da8 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Fri, 6 Sep 2024 04:00:40 -0400 Subject: [PATCH 192/234] Link m_board_ovl, implement m_player_main_shock --- config/rel_slices.yml | 5 + include/m_player.h | 15 ++- src/m_board_ovl.c | 28 +++--- src/m_player_main_shock.c_inc | 174 ++++++++++++++++++++++++++++++++++ 4 files changed, 205 insertions(+), 17 deletions(-) diff --git a/config/rel_slices.yml b/config/rel_slices.yml index 950a14fb..73748f76 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -1015,6 +1015,11 @@ m_birthday_ovl.c: .rodata: [0x8064AE90, 0x8064AEB8] .data: [0x806C7BE0, 0x806C7C60] .bss: [0x8133E0C0, 0x8133E0C8] +m_board_ovl.c: + .text: [0x805C4E94, 0x805C67DC] + .rodata: [0x8064AEB8, 0x8064AF28] + .data: [0x806C7C60, 0x806C8880] + .bss: [0x8133E0C8, 0x8133E210] m_catalog_ovl.c: .text: [0x805C9254, 0x805CC1F4] .rodata: [0x8064AF90, 0x8064B090] diff --git a/include/m_player.h b/include/m_player.h index 6a29cd31..742ca66b 100644 --- a/include/m_player.h +++ b/include/m_player.h @@ -882,10 +882,10 @@ typedef struct player_request_mail_jump_s { } mPlayer_request_mail_jump_c; typedef struct player_request_shock_s { - f32 timer; + f32 start_time; s16 target_angle_y; u8 bee_chase_bgm_flag; - int axe_broke_flag; + int axe_flag; } mPlayer_request_shock_c; typedef struct player_request_push_snowball_s { @@ -1746,6 +1746,16 @@ typedef struct player_main_remove_grass_s { xyz_t target_pos; } mPlayer_main_remove_grass_c; +typedef struct player_main_shock_s { + f32 start_time; + s16 target_angle_y; + f32 timer; + f32 end_time; + u8 bee_chase_bgm_flag; + int axe_flag; + int bgm_stop_flag; +} mPlayer_main_shock_c; + typedef struct player_main_push_snowball_s { u32 label; } mPlayer_main_push_snowball_c; @@ -1844,6 +1854,7 @@ typedef union { mPlayer_main_stung_bee_c stung_bee; mPlayer_main_notice_bee_c notice_bee; mPlayer_main_remove_grass_c remove_grass; + mPlayer_main_shock_c shock; mPlayer_main_push_snowball_c push_snowball; mPlayer_main_wade_snowball_c wade_snowball; mPlayer_main_demo_geton_boat_wade_c demo_geton_boat_wade; diff --git a/src/m_board_ovl.c b/src/m_board_ovl.c index fdaa41c3..5e9df567 100644 --- a/src/m_board_ovl.c +++ b/src/m_board_ovl.c @@ -757,7 +757,7 @@ static void mBD_roll_control(Submenu* submenu, mSM_MenuInfo_c* menu_info) { menu_info->speed[1] = 1.0f; } else if (dist > 2) { board_ovl->center_line = line - 2; - menu_info->speed[1] = -1.0f; + menu_info->speed[1] = 1.0f; } pos = (f32)((board_ovl->center_line - 2) * 16); @@ -1021,7 +1021,6 @@ static void mBD_set_point(Submenu* submenu, GAME* game, f32 x, f32 y) { CLOSE_DISP(graph); } -/* TODO: @nonmatching - float operation incorrectness in default switch case & cursol_draw call */ static void mBD_set_cursol(Submenu* submenu, GAME* game, f32 x, f32 y) { mBD_Ovl_c* board_ovl = submenu->overlay->board_ovl; @@ -1030,10 +1029,8 @@ static void mBD_set_cursol(Submenu* submenu, GAME* game, f32 x, f32 y) { } else { mED_Ovl_c* editor_ovl = submenu->overlay->editor_ovl; f32 ofs_x; - f32 ofs_y; - f32 t_x; - f32 t_y; f32 line; + f32 ofs_y; switch (board_ovl->field) { case mBD_FIELD_HEADER: { @@ -1044,32 +1041,33 @@ static void mBD_set_cursol(Submenu* submenu, GAME* game, f32 x, f32 y) { } ofs_x = (f32)editor_ovl->_26 + (f32)ox + -7.0f; - ofs_y = 0.0f; line = 0.0f; + ofs_y = 0.0f; break; } case mBD_FIELD_BODY: { ofs_x = (f32)editor_ovl->_26 + -7.0f; ofs_y = 12.0f; - line = (f32)(editor_ovl->_24 + 1); + line = editor_ovl->_24 + 1; break; } default: { - ofs_x = 192.0f - (f32)mFont_GetStringWidth(board_ovl->mail.content.footer, - board_ovl->lengths[mBD_FIELD_FOOTER], TRUE); + int width = + mFont_GetStringWidth(board_ovl->mail.content.footer, board_ovl->lengths[mBD_FIELD_FOOTER], TRUE); + + ofs_x = 192.0f; + ofs_x -= width; + ofs_x += editor_ovl->_26 + -7.0f; line = 7.0f; - ofs_x += (f32)editor_ovl->_26 + -7.0f; - // ofs_x = tmp + tmp2; ofs_y = 24.0f; break; } } - t_x = x + 64.0f + ofs_x; - t_y = (line * 16.0f); - (*submenu->overlay->editor_ovl->cursol_draw)(submenu, game, x + 64.0f + ofs_x, -y + 36.0f - t_y - ofs_y); + (*submenu->overlay->editor_ovl->cursol_draw)(submenu, game, 64.0f + x + ofs_x, + 36.0f - ((y - line * 16.0f) - ofs_y)); } } @@ -1096,7 +1094,7 @@ static void mBD_set_writing_body(Submenu* submenu, mSM_MenuInfo_c* menu_info, GA mBD_Ovl_c* board_ovl = submenu->overlay->board_ovl; u8* str = board_ovl->mail.content.body; u8* str_p; - u8* str_end_p = str + submenu->overlay->board_ovl->lengths[mBD_FIELD_BODY]; + u8* str_end_p = str + board_ovl->lengths[mBD_FIELD_BODY]; int body_len; int i; int width = 0; diff --git a/src/m_player_main_shock.c_inc b/src/m_player_main_shock.c_inc index e69de29b..43d6ea56 100644 --- a/src/m_player_main_shock.c_inc +++ b/src/m_player_main_shock.c_inc @@ -0,0 +1,174 @@ +static int Player_actor_request_main_shock_all(GAME* game, f32 start_time, s16 target_angle_y, s8 bee_chase_bgm_flag, + int axe_flag, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_SHOCK, prio)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_shock_c* req_shock_p = &player->requested_main_index_data.shock; + + req_shock_p->start_time = start_time; + req_shock_p->target_angle_y = target_angle_y; + req_shock_p->bee_chase_bgm_flag = bee_chase_bgm_flag; + req_shock_p->axe_flag = axe_flag; + + Player_actor_request_main_index(game, mPlayer_INDEX_SHOCK, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Shock(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_request_shock_c* req_shock_p = &player->requested_main_index_data.shock; + mPlayer_main_shock_c* shock_p = &player->main_data.shock; + int anim1_idx; + int part_table_idx; + + shock_p->start_time = req_shock_p->start_time; + shock_p->target_angle_y = req_shock_p->target_angle_y; + shock_p->timer = 0.0f; + shock_p->end_time = req_shock_p->start_time + 44.0f; + shock_p->bee_chase_bgm_flag = req_shock_p->bee_chase_bgm_flag; + shock_p->axe_flag = req_shock_p->axe_flag; + shock_p->bgm_stop_flag = FALSE; + + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_WAIT1, -5.0f, &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actorx, game, mPlayer_ANIM_WAIT1, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, + part_table_idx); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_settle_main_Shock(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_shock_c* shock_p = &player->main_data.shock; + + if (shock_p->bee_chase_bgm_flag) { + player->bee_chase_bgm_flag = TRUE; + mBGMPsComp_delete_ps_quiet(); + mBGMPsComp_make_ps_happening(BGM_BEE_CHASE, 0x168); + } +} + +static void Player_actor_Movement_Shock(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_shock_c* shock_p = &player->main_data.shock; + + Player_actor_Movement_Base_Braking(actorx); + add_calc_short_angle2(&actorx->shape_info.rotation.y, shock_p->target_angle_y, 1.0f - sqrtf(0.5f), 2500, 50); + actorx->world.angle.y = actorx->shape_info.rotation.y; +} + +static int Player_actor_CulcAnimation_Shock(ACTOR* actorx, f32* last_anim0_cur_frame) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame); +} + +static void Player_actor_Set_FeelEffect_Shock(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int anim0_idx = player->animation0_idx; + + if (anim0_idx == mPlayer_ANIM_GAAAN1) { + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + + if (Player_actor_Check_AnimationFrame(fc0_p, 5.0f)) { + player->draw_effect_idx = eEC_EFFECT_SHOCK + 1; + } + } +} + +static void Player_actor_SearchAnimation_Shock(ACTOR* actorx, f32 frame) { + if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE) { + Player_actor_Set_FeelEffect_Shock(actorx); + } +} + +static void Player_actor_ChangeAnimation_Shock(ACTOR* actorx, GAME* game, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int now_anim_idx = player->animation0_idx; + int anim0_idx; + int anim1_idx; + int mode; + int part_table_idx; + mPlayer_main_shock_c* shock_p = &player->main_data.shock; + + if (now_anim_idx == mPlayer_ANIM_WAIT1) { + if (shock_p->timer >= shock_p->start_time) { + anim0_idx = mPlayer_ANIM_GAAAN1; + mode = cKF_FRAMECONTROL_STOP; + } else { + return; + } + + } else if (now_anim_idx == mPlayer_ANIM_GAAAN1) { + if (end_flag) { + anim0_idx = mPlayer_ANIM_GAAAN2; + mode = cKF_FRAMECONTROL_REPEAT; + } else { + return; + } + + } else { + return; + } + + Player_actor_SetupItem_Base1(actorx, anim0_idx, -5.0f, &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base2(actorx, game, anim0_idx, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, mode, part_table_idx); +} + +static void Player_actor_set_eye_pattern_Shock(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int now_anim_idx = player->animation0_idx; + + if (now_anim_idx == mPlayer_ANIM_GAAAN1) { + Player_actor_set_tex_anime_pattern(actorx); + } else if (now_anim_idx == mPlayer_ANIM_GAAAN2) { + Player_actor_set_eye_pattern(actorx, 6); + Player_actor_set_mouth_pattern(actorx, 5); + } else { + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_set_mouth_pattern(actorx, 0); + } +} + +static void Player_actor_ObjCheck_Shock(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Shock(ACTOR* actorx) { + Player_actor_BGcheck_common_type1(actorx); +} + +static void Player_actor_request_proc_index_fromShock(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_shock_c* shock_p = &player->main_data.shock; + f32* timer_p = &shock_p->timer; + + if (*timer_p < shock_p->end_time) { + (*timer_p) += 1.0f; + if (shock_p->bee_chase_bgm_flag && shock_p->axe_flag && shock_p->bgm_stop_flag == FALSE) { + if (*timer_p >= 12.0f) { + mBGMPsComp_make_ps_quiet(0); + shock_p->bgm_stop_flag = TRUE; + } + } + } else { + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } +} + +static void Player_actor_main_Shock(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + int end_flag; + + Player_actor_Movement_Shock(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + end_flag = Player_actor_CulcAnimation_Shock(actorx, &last_anim0_cur_frame); + Player_actor_SearchAnimation_Shock(actorx, last_anim0_cur_frame); + Player_actor_ChangeAnimation_Shock(actorx, game, end_flag); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_Shock(actorx); + Player_actor_ObjCheck_Shock(actorx, game); + Player_actor_BGcheck_Shock(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromShock(actorx, game); +} From 66835b29921adb526da1e785abb7783826e0d9dd Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Fri, 6 Sep 2024 09:13:10 -0400 Subject: [PATCH 193/234] Link m_event --- config/rel_slices.yml | 5 + include/m_common_data.h | 2 +- include/m_event.h | 121 ++++++++----- src/m_event.c | 379 +++++++++++++++++++++------------------- 4 files changed, 279 insertions(+), 228 deletions(-) diff --git a/config/rel_slices.yml b/config/rel_slices.yml index 73748f76..494e2201 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -92,6 +92,11 @@ m_demo.c: m_eappli.c: .text: [0x8039A5E0, 0x8039A960] .bss: [0x81295150, 0x81295550] +m_event.c: + .text: [0x8039A960, 0x8039F510] + .rodata: [0x80641F00, 0x80641F38] + .data: [0x80651918, 0x806522F8] + .bss: [0x81295550, 0x81295790] m_fbdemo.c: .text: [0x803A0350, 0x803A0ABC] .rodata: [0x80641F40, 0x80641F60] diff --git a/include/m_common_data.h b/include/m_common_data.h index 091e746e..34111c89 100644 --- a/include/m_common_data.h +++ b/include/m_common_data.h @@ -137,7 +137,7 @@ typedef struct Save_s { fail of town ranking */ /* 0x021395 */ u8 clear_grass; /* set by Wisp, removes all weeds */ /* 0x021396 */ u8 _021396[2]; - /* 0x021398 */ lbRTC_year_t event_year; /* might not exist and just be lbRTC_year_t */ + /* 0x021398 */ s16 event_year; /* 0x02139A */ u8 unused_2139C[6]; /* 0x0213A0 */ u8 keep_house_size[PLAYER_NUM]; /* saved flags for house sizes */ /* 0x0213A4 */ lbRTC_ymd_c force_remove_date; /* last time the NPC force remove timer was updated */ diff --git a/include/m_event.h b/include/m_event.h index 988f3c25..ef08001b 100644 --- a/include/m_event.h +++ b/include/m_event.h @@ -571,61 +571,92 @@ typedef struct event_common_save_data { u8 dozaemon_completed; // used to signal when you've received an item from gulliver } mEv_save_common_data_c; -extern void mEv_clear_status(int event, s16 status); -extern int mEv_CheckFirstJob(); -extern void mEv_SetFirstJob(); -extern void mEv_UnSetFirstJob(); -extern int mEv_CheckFirstIntro(); -extern void mEv_SetFirstIntro(); -extern void mEv_UnSetFirstIntro(); -extern int mEv_CheckArbeit(); -extern int mEv_CheckTitleDemo(); -extern int mEv_check_status(int event, s16 status); -extern int mEv_check_status_edge(s16 status); -extern u8* mEv_get_common_area(int type, u8 id); -extern u8* mEv_reserve_common_area(int type, u8 id); -extern u8* mEv_get_save_area(int type, u8 id); -extern u8* mEv_reserve_save_area(int type, u8 id); -extern void mEv_actor_dying_message(int type, ACTOR* actor); -extern int mEv_ArbeitPlayer(u32 player_no); -extern u16 mEv_get_special_event_type(); -extern void mEv_ClearEventSaveInfo(mEv_event_save_c* event_save_data); +extern void mEv_ClearSpecialEvent(mEv_special_c* special_event); +extern void mEv_ClearEventKabuPeddler(mEv_kabu_peddler_c* kabu_peddler); +extern void mEv_ClearEventSaveInfo(mEv_event_save_c* save_event); +extern void mEv_ClearEventInfo(); extern void mEv_EventON(u32 event_kind); extern void mEv_EventOFF(u32 event_kind); -extern int mEv_CheckGateway(); -extern int mEv_check_schedule(int event); -extern mEv_place_data_c* mEv_get_common_place(int type, u8 id); -extern void mEv_set_status(int event, s16 status); -extern void mEv_GetEventWeather(s16* weather, s16* intensity); +extern int mEv_CheckEvent(u32 event_kind); +extern void mEv_ClearPersonalEventFlag(int player_no); +extern void mEv_SetFirstJob(); extern int mEv_CheckRealArbeit(); -extern int mEv_CheckEvent(u32 event); +extern int mEv_CheckArbeit(); +extern int mEv_CheckFirstJob(); +extern void mEv_UnSetFirstJob(); +extern void mEv_SetFirstIntro(); +extern int mEv_CheckFirstIntro(); +extern void mEv_UnSetFirstIntro(); +extern void mEv_SetGateway(); +extern int mEv_CheckGateway(); +extern void mEv_UnSetGateway(); +extern int mEv_CheckTitleDemo(); +extern void mEv_SetTitleDemo(int demo_number); +extern void mEv_RenewalDataEveryDay(); +extern void mEv_GetEventWeather(s16* weather, s16* intensity); +extern lbRTC_day_t mEv_get_next_weekday(lbRTC_weekday_t weekday); +extern int mEv_weekday2day(lbRTC_month_t month, int week, int weekday); +extern int mEv_get_end_time(int event_type); extern u16 mEv_get_bargain_day(); - -extern int mEv_weekday2day(lbRTC_month_t month, int week_type, int weekday); -extern void mEv_ClearEventInfo(); - +extern u16 mEv_get_special_event_day(); +extern u16 mEv_get_special_event_type(); +extern int mEv_get_event_place(int event, int* bx, int* bz); +extern int mEv_bridge_time_check(); extern void mEv_init(Event_c* event); +extern void mEv_init_force(Event_c* event); extern void mEv_2nd_init(Event_c* event); - +extern int mEv_PlayerOK(); extern void mEv_run(Event_c* event); extern void mEv_finish(Event_c* event); - -extern int mEv_CheckTitleDemo(); -extern void mEv_SetTitleDemo(int titledemo_no); - -extern int mGH_check_birth2(); -extern int mMC_check_birth(); -extern void mGH_animal_return_init(); -extern void mMC_mask_cat_init(); -extern void mEv_init_force(Event_c* event); -extern void mEv_SetGateway(); -extern void mEv_UnSetGateway(); -extern void mGH_check_delete(); -extern void mMC_check_delete(); -extern void mEv_special_event_soldout(int type); - +extern int mEv_check_schedule(int event); +extern int mEv_check_run_today(int event); +extern void mEv_set_status(int event, s16 status); +extern void mEv_clear_status(int event, s16 status); +extern int mEv_check_status(int event, s16 status); +extern int mEv_check_status_edge(s16 status); +extern void mEv_set_keep(int event); +extern void mEv_clear_keep(int event); +extern int mEv_check_keep(int event); +extern u8* mEv_reserve_save_area(int type, u8 id); +extern u8* mEv_get_save_area(int type, u8 id); +extern int mEv_clear_save_area(int type, u8 id); +extern u8* mEv_reserve_common_area(int type, u8 id); +extern u8* mEv_get_common_area(int type, u8 id); +extern int mEv_clear_common_area(int type, u8 id); +extern mEv_place_data_c* mEv_reserve_common_place(int type, u8 id); +extern mEv_place_data_c* mEv_get_common_place(int type, u8 id); +extern int mEv_clear_common_place(int type, u8 id); +extern int mEv_use_block_by_other_event(int type, BlockOrUnit_c* block); +extern void mEv_erase_FG_all_in_common_place(); +extern void mEv_clear_rumor(); +extern int mEv_spread_rumor(int type); +extern int mEv_get_rumor(); +extern void mEv_actor_dying_message(int type, ACTOR* actor); +extern int mEv_LiveSonchoPresent(); +extern int mEv_LivePlayer(u32 player_no); +extern int mEv_ArbeitPlayer_kari(u32 player_no); +extern int mEv_ArbeitPlayer(u32 player_no); +extern void mEv_make_new_special_event(); +extern int mEv_GetMonth(Event_c* event); +extern int mEv_GetDay(Event_c* event); +extern int mEv_GetHour(Event_c* event); extern void mEv_debug_print4f(gfxprint_t* gfxprint); extern void mEv_sp_debug_print4f(gfxprint_t* gfxprint); +extern int mEv_change(Event_c* event); +extern int mEv_get_special_event_state(); +extern int mEv_snowman_born_check(); +extern int mEv_someone_died(); +extern void mEv_special_event_soldout(int type); +extern void mEv_toland_clear_common(); +extern void mGH_animal_return_init(); +extern int mGH_check_birth2(); +extern int mGH_check_birth(); +extern void mGH_check_delete(); +extern void mMC_mask_cat_init(); +extern int mMC_check_birth(); +extern int mMC_check_birth_day(); +extern void mMC_check_delete(); +extern void mMC_set_time(); #define mEv_IsEventActive(event) mEv_check_status(event, mEv_STATUS_ACTIVE) diff --git a/src/m_event.c b/src/m_event.c index 9ab07c94..db5f96eb 100644 --- a/src/m_event.c +++ b/src/m_event.c @@ -18,13 +18,6 @@ enum { mEv_INIT_NUM }; -static int n_today_events = 0; -static int status_edge = 0; -static int funeral = 0; -static int dead = 0; -static lbRTC_year_t weekday1st_year = 0; -static lbRTC_weekday_t weekday1st[lbRTC_MONTHS_MAX]; - typedef union ymdh { struct { u8 year; @@ -35,6 +28,8 @@ typedef union ymdh { u32 raw; } mEv_ymdh_u; +static int update_save_area(void); + extern void mEv_ClearSpecialEvent(mEv_special_c* special_event) { special_event->type = -1; bzero(&special_event->event, sizeof(mEv_special_u)); @@ -301,27 +296,57 @@ extern void mEv_GetEventWeather(s16* weather, s16* intensity) { } } -#include "m_event_schedule.c_inc" +static mEv_event_today_c event_today[mEv_TODAY_EVENT_NUM]; +static int n_today_events = 0; + +#include "../src/m_event_schedule.c_inc" + +static int status_edge = 0; static int event_rumor_table[] = { - mEv_EVENT_RUMOR_NEW_YEARS_DAY, mEv_EVENT_RUMOR_KAMAKURA, mEv_EVENT_RUMOR_VALENTINES_DAY, - mEv_EVENT_RUMOR_GROUNDHOG_DAY, mEv_EVENT_RUMOR_APRILFOOLS_DAY, mEv_EVENT_RUMOR_CHERRY_BLOSSOM_FESTIVAL, - mEv_EVENT_RUMOR_SPRING_SPORTS_FAIR, mEv_EVENT_RUMOR_HARVEST_FESTIVAL, mEv_EVENT_76, - mEv_EVENT_RUMOR_FISHING_TOURNEY_1, mEv_EVENT_TALK_FISHING_TOURNEY_1, mEv_EVENT_RUMOR_MORNING_AEROBICS, - mEv_EVENT_TALK_MORNING_AEROBICS, mEv_EVENT_RUMOR_FIREWORKS_SHOW, mEv_EVENT_76, - mEv_EVENT_RUMOR_METEOR_SHOWER, mEv_EVENT_RUMOR_HARVEST_MOON_DAY, mEv_EVENT_RUMOR_FALL_SPORTS_FAIR, - mEv_EVENT_RUMOR_MUSHROOM_SEASON, mEv_EVENT_TALK_MUSHROOM_SEASON, mEv_EVENT_RUMOR_HALLOWEEN, - mEv_EVENT_RUMOR_FISHING_TOURNEY_2, mEv_EVENT_TALK_FISHING_TOURNEY_2, mEv_EVENT_RUMOR_TOY_DAY, - mEv_EVENT_RUMOR_NEW_YEARS_EVE_COUNTDOWN + mEv_EVENT_RUMOR_NEW_YEARS_DAY, mEv_EVENT_RUMOR_KAMAKURA, mEv_EVENT_RUMOR_VALENTINES_DAY, + mEv_EVENT_RUMOR_GROUNDHOG_DAY, mEv_EVENT_RUMOR_APRILFOOLS_DAY, mEv_EVENT_RUMOR_CHERRY_BLOSSOM_FESTIVAL, + mEv_EVENT_RUMOR_SPRING_SPORTS_FAIR, mEv_EVENT_RUMOR_HARVEST_FESTIVAL, mEv_EVENT_76, + mEv_EVENT_RUMOR_FISHING_TOURNEY_1, mEv_EVENT_TALK_FISHING_TOURNEY_1, mEv_EVENT_RUMOR_MORNING_AEROBICS, + mEv_EVENT_TALK_MORNING_AEROBICS, mEv_EVENT_RUMOR_FIREWORKS_SHOW, mEv_EVENT_76, + mEv_EVENT_RUMOR_METEOR_SHOWER, mEv_EVENT_RUMOR_HARVEST_MOON_DAY, mEv_EVENT_RUMOR_FALL_SPORTS_FAIR, + mEv_EVENT_RUMOR_MUSHROOM_SEASON, mEv_EVENT_TALK_MUSHROOM_SEASON, mEv_EVENT_RUMOR_HALLOWEEN, + mEv_EVENT_RUMOR_FISHING_TOURNEY_2, mEv_EVENT_TALK_FISHING_TOURNEY_2, mEv_EVENT_RUMOR_TOY_DAY, + mEv_EVENT_RUMOR_NEW_YEARS_EVE_COUNTDOWN, }; static int n_event_rumors = ARRAY_COUNT(event_rumor_table); -static u16 special_event_types[] = { mEv_EVENT_SHOP_SALE, mEv_EVENT_DESIGNER, mEv_EVENT_BROKER_SALE, - mEv_EVENT_ARTIST, mEv_EVENT_CARPET_PEDDLER, mEv_EVENT_GYPSY }; +static u8 index_today[mEv_EVENT_NUM]; +static s16 special_event_types[] = { + mEv_EVENT_SHOP_SALE, mEv_EVENT_DESIGNER, mEv_EVENT_BROKER_SALE, + mEv_EVENT_ARTIST, mEv_EVENT_CARPET_PEDDLER, mEv_EVENT_GYPSY, +}; static int n_special_event_type = ARRAY_COUNT(special_event_types); +static int funeral = 0; +static int dead = 0; +static lbRTC_year_t weekday1st_year = 0; +static lbRTC_weekday_t weekday1st[16]; +static int n_rumor; +static int rumor_table[40]; + +// clang-format off +BSS_ORDER_GROUP_START + BSS_ORDER_ITEM(n_today_events) + BSS_ORDER_ITEM(status_edge) + BSS_ORDER_ITEM(funeral) + BSS_ORDER_ITEM(dead) + BSS_ORDER_ITEM(weekday1st_year) + BSS_ORDER_ITEM(weekday1st) + BSS_ORDER_ITEM(event_today) + BSS_ORDER_ITEM(index_today) + BSS_ORDER_ITEM(n_rumor) + BSS_ORDER_ITEM(rumor_table) +BSS_ORDER_GROUP_END +// clang-format on + static int last_day_of_month(lbRTC_month_t month) { static lbRTC_day_t last_day[lbRTC_MONTHS_MAX] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; @@ -510,8 +535,6 @@ static lbRTC_day_t m_weekday2day(lbRTC_month_t month, u8 day_enc) { return day; } -static lbRTC_weekday_t weekday1st[lbRTC_MONTHS_MAX]; - extern int mEv_weekday2day(lbRTC_month_t month, int week, int weekday) { lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); lbRTC_day_t day = 0; @@ -571,9 +594,6 @@ static int get_end_time(u32 active_hours) { return hour; } -static mEv_event_today_c event_today[mEv_TODAY_EVENT_NUM]; -static u8 index_today[mEv_EVENT_NUM]; - extern int mEv_get_end_time(int event_type) { u8 idx = index_today[event_type]; mEv_event_today_c* ev_today = &event_today[idx]; @@ -818,12 +838,24 @@ static int get_special_event_end_time(s16 event_type) { #define mEv_YearMonthDayHour(y, m, d, h) ((u32)(((u8)(y) << 24) | ((u8)(m) << 16) | ((u8)(d) << 8) | ((u8)(h)))) -/* @nonmatching TODO: This function needs a lot of help matching. Current best scratch: https://decomp.me/scratch/0EXoP - */ static int init_special_event(int new_event) { + s16 type; lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); mEv_special_c* special_ev = &Save_Get(event_save_data).special; int res = FALSE; + int next_event_day_gap; + u16 sale_day; + int player_id; + int seed; + mEv_MonthDay_u special_monthday[3]; + mEv_MonthDay_u special_end_monthday; + mEv_schedule_date_u rtc_sched; + mEv_ymdh_u special_ymdh; + mEv_ymdh_u rtc_ymdh; + mEv_ymdh_u special_end_ymdh; + mEv_save_common_data_c* ev_save_common; + u16* dates_p; + s16 event_year; switch (Common_Get(last_scene_no)) { case SCENE_BUGGY: @@ -849,145 +881,127 @@ static int init_special_event(int new_event) { if (Save_Get(event_save_common).special_event.type == mEv_EVENT_SHOP_SALE) { return FALSE; } - } - - // fallthrough case - default: { - mEv_ymdh_u rtc_ymdh; - mEv_ymdh_u special_ymdh; - mEv_ymdh_u special_end_ymdh; - mEv_MonthDay_u special_monthday; - mEv_schedule_date_u rtc_sched; - u16 special_end_monthday; - u16 sale_day_monthday; - mEv_save_common_data_c* ev_save_common = Save_GetPointer(event_save_common); - - // u16 rtc_monthday = mEv_MonthDay(Common_Get(time.rtc_time.month), Common_Get(time.rtc_time.day)); - // u32 rtc_ymdh = (u32)(((Common_Get(time.rtc_time.year) % 100) << 24) | (rtc_monthday << 8) | - // Common_Get(time.rtc_time.hour)); - // u32 special_ymdh = (u32)(((Save_Get(event_year_ymd.year) % 100) << 24) | - // (Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL0] << 8)); u32 special_end_ymdh = (u32)( - // (((Save_Get(event_year_ymd.year) % 100) - ((Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL2] - // < Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL0] && rtc_monthday < - // Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL0]) ? 1 : 2)) << 24) | - // (Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL0] << 8) | - // (u8)get_special_event_end_time(Save_Get(event_save_common).special_event.type) - // ); - - rtc_sched.raw = 0; - rtc_sched.d.month = rtc_time->month; - rtc_sched.d.day = rtc_time->day; - - rtc_ymdh.raw = (rtc_sched.md) << 8; - rtc_ymdh.year = rtc_time->year % 100; - rtc_ymdh.hour = rtc_time->hour; - - special_ymdh.raw = ev_save_common->dates[mEv_SAVE_DATE_SPECIAL0] << 8; - special_ymdh.year = Save_Get(event_year) % 100; - - // special_end_ymdh.raw = (special_ymdh.month_day.raw) << 8; - special_end_ymdh.year = - (Save_Get(event_year) % 100) + - ((ev_save_common->dates[mEv_SAVE_DATE_SPECIAL0] > ev_save_common->dates[mEv_SAVE_DATE_SPECIAL2] && - ev_save_common->dates[mEv_SAVE_DATE_SPECIAL0] > rtc_sched.md) - ? 0 - : -1); - special_end_ymdh.hour = get_special_event_end_time(ev_save_common->special_event.type); - - if (check_ymdh_range(rtc_ymdh.raw, special_ymdh.raw, special_end_ymdh.raw) == FALSE || new_event) { - int seed = Common_Get(now_private)->player_ID.player_id; - s16 type; - int next_event_day_gap; - - res |= TRUE; - mEv_ClearSpecialEvent(special_ev); - seed += 1 + rtc_time->year - rtc_time->month + rtc_time->day + rtc_time->hour; - /* Sale Day */ - sale_day_monthday = after_n_day( - ((lbRTC_NOVEMBER) << 8) | m_weekday2day(lbRTC_NOVEMBER, mEv_SCHEDULE_4TH_WEEKDAY(lbRTC_THURSDAY)), - 1); - - do { - sad_label: - /* Select a new unique random event */ - do { - type = special_event_types[seed % n_special_event_type]; - seed++; - } while (type == Save_Get(event_save_common).special_event.type); - - mFAs_SetFieldRank(); - next_event_day_gap = 1 + ((rtc_time->day + rtc_time->month * rtc_time->sec) % - ((mFAs_FIELDRANK_SIX + 1) - mFAs_GetFieldRank())); - - if (next_event_day_gap == 1) { - next_event_day_gap = 2; // minimum of 2 days between special events - } - - special_monthday.raw = after_n_day(rtc_sched.md, next_event_day_gap); - if ((u16)rtc_sched.md <= sale_day_monthday && (u16)sale_day_monthday <= (u32)special_monthday.raw) { - /* Force the next special event to be Crazy Redd since Sale Day falls between now and the rolled - * event date */ - special_monthday.raw = sale_day_monthday; - type = mEv_EVENT_BROKER_SALE; - } - - /* Set event start hour */ - Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL3] = 6; - - switch (type) { - case mEv_EVENT_GYPSY: - break; - - case mEv_EVENT_SHOP_SALE: { - lbRTC_day_t last_day = last_day_of_month(special_monthday.month); - - if (special_monthday.day != last_day && - (special_monthday.raw < mEv_MonthDay(lbRTC_JANUARY, 1) || - special_monthday.raw > mEv_MonthDay(lbRTC_JANUARY, 3)) && - mEv_CheckEvent(mEv_SAVED_RENEWSHOP) != TRUE) { - /* Set shop sale starting hour randomly between 12PM and 7PM */ - Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL3] = 12 + RANDOM(8); - goto hate_gotos; - } - goto sad_label; - } - - case mEv_EVENT_BROKER_SALE: { - if (special_monthday.raw != mEv_MonthDay(lbRTC_JULY, 4)) { - /* Set broker sale start hour to 6PM when it's not the Fireworks Festival */ - Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL3] = 18; - goto hate_gotos; - } - goto sad_label; - } - - default: - goto hate_gotos; - break; - } - } while (special_monthday.raw == mEv_MonthDay(lbRTC_DECEMBER, 31)); - - Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL3] = 21; // default event start time is 9pm? - - hate_gotos: { - mEv_save_common_data_c* ev_save_common = Save_GetPointer(event_save_common); - u16 year; - - special_end_monthday = after_n_day(special_monthday.raw, type != mEv_EVENT_SHOP_SALE); // ?? - year = rtc_time->year; - ev_save_common->special_event.type = type; - ev_save_common->dates[mEv_SAVE_DATE_SPECIAL0] = rtc_sched.md; // current date - ev_save_common->dates[mEv_SAVE_DATE_SPECIAL1] = special_monthday.raw; // start date - ev_save_common->dates[mEv_SAVE_DATE_SPECIAL2] = special_end_monthday; // end date - Save_Set(event_year, year); - Save_Get(post_office).leaflet_recipient_flags.event_flags = - 0b1111; // deliver leaflet to all players if necessary for event - } - } break; } } + ev_save_common = Save_GetPointer(event_save_common); + dates_p = ev_save_common->dates; + event_year = Save_Get(event_year); + type = ev_save_common->special_event.type; + + rtc_sched.raw = 0; + rtc_sched.d.month = rtc_time->month; + rtc_sched.d.day = rtc_time->day; + + special_monthday[0].raw = dates_p[mEv_SAVE_DATE_SPECIAL1]; + + special_ymdh.raw = (dates_p[mEv_SAVE_DATE_SPECIAL0] << 8) & 0x000FFFF00; + special_ymdh.year = event_year % 100; + + rtc_ymdh.raw = (rtc_sched.md) << 8; + rtc_ymdh.year = rtc_time->year % 100; + rtc_ymdh.hour = rtc_time->hour; + special_end_ymdh.raw = (dates_p[mEv_SAVE_DATE_SPECIAL2] << 8) & 0x000FFFF00; + special_end_ymdh.year = (event_year % 100) + ((dates_p[mEv_SAVE_DATE_SPECIAL0] > dates_p[mEv_SAVE_DATE_SPECIAL2] && + dates_p[mEv_SAVE_DATE_SPECIAL0] > rtc_sched.md) + ? 1 + : 0); + + special_end_ymdh.hour = get_special_event_end_time(type); + + if (check_ymdh_range(rtc_ymdh.raw, special_ymdh.raw, special_end_ymdh.raw) == FALSE || new_event) { + int player_id = Common_Get(now_private)->player_ID.player_id; + int n; + int seed = player_id; + int sale_weekday; + + res |= TRUE; + mEv_ClearSpecialEvent(special_ev); + + player_id = (player_id & 0x00FFFFFF) + 1; + seed = player_id + (rtc_time->year - rtc_time->month) + rtc_time->day + rtc_time->hour; + + /* Sale Day */ + sale_weekday = m_weekday2day(lbRTC_NOVEMBER, mEv_SCHEDULE_4TH_WEEKDAY(lbRTC_THURSDAY)); + sale_day = (((lbRTC_NOVEMBER) << 8) | sale_weekday); + sale_day = after_n_day(sale_day, 1); + + while (TRUE) { + /* Select a new unique random event */ + type = special_event_types[seed % n_special_event_type]; + seed++; + + if (type == Save_Get(event_save_common).special_event.type) { + continue; + } + + mFAs_SetFieldRank(); + next_event_day_gap = 1 + ((rtc_time->day + rtc_time->month * rtc_time->sec) % + ((mFAs_FIELDRANK_SIX + 1) - mFAs_GetFieldRank())); + + if (next_event_day_gap == 1) { + next_event_day_gap = 2; // minimum of 2 days between special events + } + + special_monthday[0].raw = after_n_day(rtc_sched.md, next_event_day_gap); + if (rtc_sched.md <= sale_day && sale_day <= special_monthday[0].raw) { + /* Force the next special event to be Crazy Redd since Sale Day falls between now and the rolled + * event date */ + special_monthday[0].raw = sale_day; + type = mEv_EVENT_BROKER_SALE; + } + + /* Set event start hour */ + Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL3] = 6; + + switch (type) { + case mEv_EVENT_SHOP_SALE: { + lbRTC_day_t last_day = last_day_of_month(special_monthday[0].month); + + if (special_monthday[0].day != last_day && + (special_monthday[0].raw < mEv_MonthDay(lbRTC_JANUARY, 1) || + special_monthday[0].raw > mEv_MonthDay(lbRTC_JANUARY, 3)) && + mEv_CheckEvent(mEv_SAVED_RENEWSHOP) != TRUE) { + /* Set shop sale starting hour randomly between 12PM and 7PM */ + Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL3] = 12 + RANDOM(8); + break; + } + continue; + } + + case mEv_EVENT_BROKER_SALE: { + if (special_monthday[0].raw != mEv_MonthDay(lbRTC_JULY, 4)) { + /* Set broker sale start hour to 6PM when it's not the Fireworks Festival */ + Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL3] = 18; + break; + } + continue; + } + + case mEv_EVENT_GYPSY: { + if (special_monthday[0].raw != mEv_MonthDay(lbRTC_DECEMBER, 31)) { + Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL3] = + 21; // default event start time is 9pm? + break; + } + continue; + } + } + + break; + } + + special_end_monthday.raw = after_n_day(special_monthday[0].raw, type != mEv_EVENT_SHOP_SALE); // ?? + Save_Get(event_save_common).special_event.type = type; + dates_p[mEv_SAVE_DATE_SPECIAL0] = rtc_sched.md; // current date + dates_p[mEv_SAVE_DATE_SPECIAL1] = special_monthday[0].raw; // start date + dates_p[mEv_SAVE_DATE_SPECIAL2] = special_end_monthday.raw; // end date + Save_Set(event_year, rtc_time->year); + Save_Get(post_office).leaflet_recipient_flags.event_flags = + 0b1111; // deliver leaflet to all players if necessary for event + } + return res; } @@ -1755,12 +1769,14 @@ static void update_schedule_today(Event_c* event) { } if (type != 0 && gamePT->frame_counter == 0) { - mEv_schedule_c new_ev_sched = { { - { 100, 0, 0, 23 }, - { 100, 0, 0, 0 }, - }, - 0, - 0 }; + mEv_schedule_c new_ev_sched = { + { + { 100, 0, 0, 23 }, + { 100, 0, 0, 0 }, + }, + 0, + 0, + }; new_ev_sched.type = type; new_ev_sched.date[1].d.month = rtc_time->month; @@ -1797,12 +1813,14 @@ static void update_schedule_today(Event_c* event) { } if (type != 0) { - mEv_schedule_c new_ev_sched = { { - { 100, 0, 0, 23 }, - { 100, 0, 0, 0 }, - }, - 0, - 0 }; + mEv_schedule_c new_ev_sched = { + { + { 100, 0, 0, 0 }, + { 100, 0, 0, 23 }, + }, + 0, + 0, + }; new_ev_sched.type = type; new_ev_sched.date[1].d.month = rtc_time->month; @@ -2462,9 +2480,6 @@ extern void mEv_erase_FG_all_in_common_place() { } } -static int n_rumor = 0; -static int rumor_table[40]; - extern void mEv_clear_rumor() { n_rumor = 0; } @@ -2780,12 +2795,12 @@ extern void mEv_toland_clear_common() { keep_flags[i] = 0; } - mem_clear(Common_GetPointer(event_common), sizeof(Common_Get(event_common)), 0); - mem_clear(Common_GetPointer(special_event_common), sizeof(Common_Get(special_event_common)), 0); + mem_clear((u8*)Common_GetPointer(event_common), sizeof(Common_Get(event_common)), 0); + mem_clear((u8*)Common_GetPointer(special_event_common), sizeof(Common_Get(special_event_common)), 0); } extern void mGH_animal_return_init() { - mem_clear(Save_GetPointer(return_animal), sizeof(Save_Get(return_animal)), 0); + mem_clear((u8*)Save_GetPointer(return_animal), sizeof(Save_Get(return_animal)), 0); Save_Get(return_animal).npc_id = EMPTY_NO; // ?? } @@ -2864,7 +2879,7 @@ extern void mMC_mask_cat_init() { MaskCat_c* mask_cat = Save_GetPointer(mask_cat); u8 cloth_no = mask_cat->cloth_no; - mem_clear(mask_cat, sizeof(Save_Get(mask_cat)), 0); + mem_clear((u8*)mask_cat, sizeof(Save_Get(mask_cat)), 0); mPr_ClearPersonalID(&mask_cat->design.creator_pid); Save_Get(mask_cat).cloth_no = cloth_no; } @@ -2877,10 +2892,10 @@ extern int mMC_check_birth() { if (Save_Get(mask_cat).talk_idx >= mMC_TALK_IDX_MAX) { /* Talked more than the maximum amount of times allowed */ mMC_mask_cat_init(); - return TRUE; + return FALSE; } - return FALSE; + return TRUE; } extern int mMC_check_birth_day() { From 02351e6257cadba475a073cd918a25b645f99920 Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Fri, 6 Sep 2024 16:30:07 -0400 Subject: [PATCH 194/234] Fix building Docker container on ARM (#428) * Fix building Docker container on ARM * Add info about ARM needing cmake to readme * Make language more consistent in readme * Fix typo --- Dockerfile | 1 + README.MD | 15 ++++++++------- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/Dockerfile b/Dockerfile index 5af98097..f9f0411d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,6 +4,7 @@ FROM ubuntu:24.04 as build RUN apt-get update && \ apt-get upgrade -y && \ apt-get install -y \ + cmake \ git \ ninja-build \ python3 \ diff --git a/README.MD b/README.MD index f62b3619..a4cce4b6 100644 --- a/README.MD +++ b/README.MD @@ -15,7 +15,7 @@ Use `--recursive` when cloning to have ppcdis in the repository. ## Building > [!NOTE] -> On Windows, the build is known to run disproportionately slow when ran natively, so we recommend using WSL. +> On Windows, the build is known to run disproportionately slow when ran natively, so WSL is recommended. ### Docker @@ -29,23 +29,24 @@ Use `--recursive` when cloning to have ppcdis in the repository. ### Build manually > [!TIP] -> When building manually from a work directory previously used for Docker, you will need to run `sudo ninja -t clean` for the build to execute properly. +> When building manually from a work directory previously used for Docker, `sudo ninja -t clean` will need to be ran for the build to execute properly. 1. [Dump a copy of the game](./docs/extract_game.md) and extract all files. 2. Place **main.dol**, **foresta.rel.szs**, **forest_1st.arc**, and **forest_2nd.arc** in *dump/*. 3. Download the [CodeWarrior 1.3.2, 1.3.2r, and 1.2.5n compilers](https://files.decomp.dev/compilers_latest.zip) and extract them to *tools/1.3.2/*, *tools/1.3.2r/*, and *tools/1.2.5n/*, respectively. -4. Install Python, pip, and [ninja](https://github.com/ninja-build/ninja/wiki/Pre-built-Ninja-packages#package-managers) using your package manager of choice. +4. Install Python, pip, and [ninja](https://github.com/ninja-build/ninja/wiki/Pre-built-Ninja-packages#package-managers) using a package manager of choice. + - If using an ARM-based device, cmake will also need to be installed. 5. Install Python modules from requirements.txt (`pip install -r requirements.txt`). 6. Install [wibo](https://github.com/decompals/wibo) - Wibo is a lightweight Wine replacement that's tailor-made for use with decomp projects. Regular Wine can be used if preferred, but for the purposes of this guide, these instructions will use wibo. - - Download the [the latest GitHub release](https://github.com/decompals/wibo/releases/latest) and run `install ./wibo /usr/bin` to install it to your system. + - Download [the latest GitHub release](https://github.com/decompals/wibo/releases/latest) and run `install ./wibo /usr/bin` to install it to the system. 7. Install devkitPPC. - - To get devkitPPC, you'll need [devkitPro Pacman](https://devkitpro.org/wiki/devkitPro_pacman#Installing_devkitPro_Pacman). + - [devkitPro Pacman](https://devkitpro.org/wiki/devkitPro_pacman#Installing_devkitPro_Pacman) is needed to get devkitPPC. - Run `dkp-pacman -S devkitPPC` once dkp-pacman is installed to install devkitPPC. - Set the `DEVKITPPC` environment variable to */opt/devkitpro/devkitPPC*. -8. Set the `N64_SDK` environment variable to the path of your libultra or equivalent headers. If you need headers, you can use the ones from [ultralib](https://github.com/decompals/ultralib). +8. Set the `N64_SDK` environment variable to the path of libultra or equivalent headers. Headers from [ultralib](https://github.com/decompals/ultralib) can be used. - Headers should be located at `$N64_SDK/ultra/usr/include`. - - You must modify `Gpopmtx`'s `param` member to be `unsigned int` in **gbi.h**. + - `Gpopmtx`'s `param` member must be modified to be `unsigned int` in **gbi.h**. 9. Run `python3 configure.py`. 10. Run `python3 build.py`. From 4eb639655c10b1bd3fe7df8e3d26d1b0b1d973c6 Mon Sep 17 00:00:00 2001 From: Reaperoe Date: Fri, 6 Sep 2024 18:17:16 -0400 Subject: [PATCH 195/234] Link & Implement ef_kasamizu.c (#427) * Link & Implement ef_kasamizu.c * ef_kasamizu.c fixed * ef_kasamizu.c fixed again --- config/rel_slices.yml | 3 +++ src/ef_kasamizu.c | 25 +++++++++++++++++++++---- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/config/rel_slices.yml b/config/rel_slices.yml index 494e2201..933105be 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -1220,6 +1220,9 @@ ef_hanabi_dummy.c: ef_hanatiri.c: .text: [0x80610478, 0x8061061C] .data: [0x806D2C08, 0x806D2C20] +ef_kasamizu.c: + .text: [0x806127BC, 0x80612960] + .data: [0x806D2DE0, 0x806D2E08] ef_killer.c: .text: [0x80614178, 0x8061481C] .rodata: [0x8064C680, 0x8064C6C0] diff --git a/src/ef_kasamizu.c b/src/ef_kasamizu.c index bc21e585..5e63d8bf 100644 --- a/src/ef_kasamizu.c +++ b/src/ef_kasamizu.c @@ -1,5 +1,7 @@ #include "ef_effect_control.h" +#include "m_common_data.h" + static void eKasamizu_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1); static void eKasamizu_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg); static void eKasamizu_mv(eEC_Effect_c* effect, GAME* game); @@ -18,17 +20,32 @@ eEC_PROFILE_c iam_ef_kasamizu = { }; static void eKasamizu_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1) { - // TODO + eEC_CLIP->make_effect_proc(eEC_EFFECT_KASAMIZU, pos, NULL, game, &angle, item_name, prio, arg0, arg1); } static void eKasamizu_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg) { - // TODO + static xyz_t base_offset = {0, 45.0f, -20.0f}; + xyz_t pos; + s16 angle = *(s16*)ct_arg; + Matrix_RotateY(angle, 0); + Matrix_Position(&base_offset, &pos); + xyz_t_add(&effect->position, &pos, &effect->position); + effect->effect_specific[0] = angle; + effect->timer = 24; } static void eKasamizu_mv(eEC_Effect_c* effect, GAME* game) { - // TODO + GAME_PLAY* play = (GAME_PLAY*)game; + if (eEC_CLIP != (eEC_EffectControl_Clip_c*)0) { + int mEnv_NowWeather(); + if (mEnv_NowWeather() == mEnv_WEATHER_RAIN && play->game_frame & 1) { + xyz_t pos = effect->position; + eEC_CLIP->effect_make_proc(eEC_EFFECT_KASAMIZUTAMA, pos, effect->prio, effect->effect_specific[0], game, + effect->item_name, 0, 0); + } + } } static void eKasamizu_dw(eEC_Effect_c* effect, GAME* game) { - // TODO + // Nothing } From 9fb6343e1722ab193c9a9b92861761ce402b3273 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Sat, 7 Sep 2024 00:26:07 +0200 Subject: [PATCH 196/234] fix build --- include/m_name_table.h | 8 ++++++++ src/ef_kasamizu.c | 1 + 2 files changed, 9 insertions(+) diff --git a/include/m_name_table.h b/include/m_name_table.h index 4cc996ca..3d65771a 100644 --- a/include/m_name_table.h +++ b/include/m_name_table.h @@ -489,6 +489,14 @@ extern int mNT_check_unknown(mActor_name_t item_no); ((item) == GOLD_TREE_BEES) \ ) +#define IS_ITEM_PALM_TREE(item) ((item) >= TREE_PALM_SAPLING && (item) < TREE_PALM_FRUIT) + +#define IS_ITEM_TREE_STUMP(item) ((item >= TREE_STUMP001 && (item) <= TREE_STUMP004) || \ + (item) >= TREE_PALM_STUMP001 && (item) <= TREE_PALM_STUMP004 || \ + (item) >= CEDAR_TREE_STUMP001 && (item) <= CEDAR_TREE_STUMP004 || \ + (item) >= GOLD_TREE_STUMP001 && (item) <= GOLD_TREE_STUMP004 \ +) + #define IS_ITEM_SHAKEABLE_TREE(item) (IS_ITEM_MED_TREE(item) || IS_ITEM_LARGE_TREE(item) || IS_ITEM_FULL_TREE(item)) #define IS_ITEM_BEE_TREE(item) ((item) == TREE_BEES || (item) == CEDAR_TREE_BEES || (item) == GOLD_TREE_BEES) diff --git a/src/ef_kasamizu.c b/src/ef_kasamizu.c index 5e63d8bf..c02ccc0a 100644 --- a/src/ef_kasamizu.c +++ b/src/ef_kasamizu.c @@ -1,6 +1,7 @@ #include "ef_effect_control.h" #include "m_common_data.h" +#include "sys_matrix.h" static void eKasamizu_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1); static void eKasamizu_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg); From 8136cd0bfc723ad98c3d79ab26d9e310c42fdaa4 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Sat, 7 Sep 2024 00:27:32 +0200 Subject: [PATCH 197/234] match m_player_main_swing_axe --- src/m_player_main_swing_axe.c_inc | 314 ++++++++++++++++++++++++++++++ 1 file changed, 314 insertions(+) diff --git a/src/m_player_main_swing_axe.c_inc b/src/m_player_main_swing_axe.c_inc index e69de29b..0a2b8ba3 100644 --- a/src/m_player_main_swing_axe.c_inc +++ b/src/m_player_main_swing_axe.c_inc @@ -0,0 +1,314 @@ +static void Player_actor_request_main_swing_axe_common(mPlayer_request_swing_axe_c* req_axe, const xyz_t* pos, + mActor_name_t hit_item, u16 damage_no, int hit_ut_x, + int hit_ut_z) { + req_axe->goal_pos = *pos; + req_axe->hit_item = hit_item; + req_axe->hit_ut_x = hit_ut_x; + req_axe->hit_ut_z = hit_ut_z; + req_axe->axe_damage_no = damage_no; +} + +static int Player_actor_request_main_swing_axe_all(GAME* game, const xyz_t* pos, mActor_name_t hit_item, u16 damage_no, + int hit_ut_x, int hit_ut_z, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_SWING_AXE, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + Player_actor_request_main_swing_axe_common(&player->requested_main_index_data.swing_axe, pos, hit_item, + damage_no, hit_ut_x, hit_ut_z); + Player_actor_request_main_index(game, mPlayer_INDEX_SWING_AXE, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Swing_axe_common(mPlayer_request_swing_axe_c* req_axe, + mPlayer_main_swing_axe_c* main_axe) { + main_axe->target_pos = req_axe->goal_pos; + main_axe->item = req_axe->hit_item; + main_axe->tree_ut_x = req_axe->hit_ut_x; + main_axe->tree_ut_z = req_axe->hit_ut_z; + main_axe->axe_damage_no = req_axe->axe_damage_no; + main_axe->bee_flag = FALSE; + main_axe->bee_angle_y = 0; + main_axe->bee_counter = 0; +} + +static void Player_actor_setup_main_Swing_axe(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_swing_axe_c* main_axe = &player->main_data.swing_axe; + mPlayer_request_swing_axe_c* req_axe = &player->requested_main_index_data.swing_axe; + + Player_actor_setup_main_Swing_axe_common(req_axe, main_axe); + + Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_AXE_SWING1, mPlayer_ANIM_AXE_SWING1, 1.0f, 1.0f, 0.5f, + -5.0f, 0, 0); + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_Movement_axe_common(ACTOR* actor, xyz_t* axe_pos) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + f32 z; + f32 x; + + x = axe_pos->x - actor->world.position.x; + z = axe_pos->z - actor->world.position.z; + + if (x != 0.0f || z != 0.0f) { + s16 target = atans_table(z, x); + add_calc_short_angle2(&actor->shape_info.rotation.y, target, 1.0f - sqrtf(0.5), 2500, 50); + } + Player_actor_Movement_Base_Braking_common(actor, 0.32625002f); +} + +static void Player_actor_Movement_Swing_axe(ACTOR* actor, mPlayer_main_swing_axe_c* main_axe, int) { + Player_actor_Movement_axe_common(actor, &main_axe->target_pos); + + actor->world.angle.y = actor->shape_info.rotation.y; +} + +static int Player_actor_CulcAnimation_Swing_axe(ACTOR* actor, f32* frame_calc, int) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_SetEffectHit_axe_common(ACTOR* actor, GAME* game, s16 arg2) { + static xyz_t offset = {-7.0f, 20.0f, 24.0f}; + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + xyz_t pos; + + if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 15.0f)) { + s16 rot = actor->world.angle.y; + f32 sin = sin_s(rot); + f32 cos = cos_s(rot); + + pos = actor->world.position; + pos.y += offset.y; + pos.z += (offset.z * cos) - (offset.x * sin); + pos.x += (offset.z * sin) + (offset.x * cos); + Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_SWING_AXE, pos, 2, actor->shape_info.rotation.y, game, + RSV_NO, actor->bg_collision_check.result.unit_attribute, arg2); + } +} + +static void Player_actor_SetEffectHit_Swing_axe(ACTOR* actor, GAME* game, s16 arg2, int arg3) { + Player_actor_SetEffectHit_axe_common(actor, game, arg2); +} + +static void Player_actor_SetEffectStart_Swing_axe(ACTOR* actor, GAME* game, int arg2) { + Player_actor_SetEffectStart_axe_common(actor, game, arg2); +} + +static void Player_actor_SetEffect_Swing_axe(ACTOR* actor, GAME* game, int arg2) { + Player_actor_SetEffectHit_Swing_axe(actor, game, 0, arg2); + Player_actor_SetEffectStart_Swing_axe(actor, game, arg2); +} + +static mActor_name_t Player_actor_Get_TreeNoToStumpNo(ACTOR* actor, GAME* game, mActor_name_t item, int ut_x, int ut_z, + mPlayer_main_swing_axe_c* main_axe, int flag) { + if (Common_Get(clip).bg_item_clip != NULL) { + if (Common_Get(clip).bg_item_clip->tree_cutcount_check_proc != NULL) { + xyz_t pos; + + int check = Common_Get(clip).bg_item_clip->tree_cutcount_check_proc(game, ut_x, ut_z); + + if (!IS_ITEM_BEE_TREE(item)) { + Common_Get(clip).bg_item_clip->item_tree_fruit_drop_proc(item, ut_x, ut_z, &pos); + } else if (mPlib_able_birth_bee() && flag == FALSE) { + main_axe->bee_counter = 5; + } + + if (check <= 0) { + int palm; + + mISL_SetNowPlayerAction(mISL_PLAYER_ACTION_CHOP_TREE); + palm = FALSE; + + if (IS_ITEM_PALM_TREE(item)) { + palm = TRUE; + } + + if (palm != FALSE) { + mISL_SetNowPlayerAction(mISL_PLAYER_ACTION_CHOP_PALM_TREE); + } + + return bg_item_fg_sub(item, 0); + } + } + } + return item; +} + +static void Player_actor_CutTree_Swing_axe(ACTOR* actor, GAME* game, mPlayer_main_swing_axe_c* main_axe, int flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 15.0f)) { + int ut_x; + int ut_z; + mActor_name_t item = main_axe->item; + + if (mFI_Wpos2UtNum(&ut_x, &ut_z, main_axe->target_pos)) { + mActor_name_t tree = Player_actor_Get_TreeNoToStumpNo(actor, game, item, ut_x, ut_z, main_axe, flag); + int check = FALSE; + + if (IS_ITEM_TREE_STUMP(tree)) { + check = TRUE; + } + + if (check != FALSE) { + mNT_offset_table_c* ofs_tbl = obj_hight_table_item0_nogrow(tree); + + mCoBG_SetPlussOffset(main_axe->target_pos, ofs_tbl->table.centerRight_offset, + ofs_tbl->table.unit_attribute); + mFI_SetFG_common(tree, main_axe->target_pos, TRUE); + + if (main_axe->target_pos.x > actor->world.position.x) { + flag = 1; + } else { + flag = 2; + } + Player_actor_set_viblation_Axe_cut(); + } else { + flag = 0; + Player_actor_set_viblation_Axe_hard(); + } + Player_actor_Set_EffectBgTree(game, item, flag, ut_x, ut_z); + } + } +} + +static void Player_actor_SetSound_AXE_FURI_axe_common(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 10.0f)) { + Player_actor_sound_AXE_FURI(actor); + } +} + +static void Player_actor_SetSound_AXE_FURI_Swing_axe(ACTOR* actor, int) { + Player_actor_SetSound_AXE_FURI_axe_common(actor); +} + +static void Player_actor_SetSound_Swing_axe(ACTOR* actor, xyz_t* pos, int arg2) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_SetSound_AXE_FURI_Swing_axe(actor, arg2); + if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 15.0f)) { + Player_actor_sound_AXE_CUT(actor, pos); + } +} + +static void Player_actor_ChangeItemNo_axe_common(ACTOR* actor, mActor_name_t item) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 15.0f)) { + mActor_name_t sub = Player_actor_Get_ItemNoSubmenu(); + if (sub != item) { + int anim_idx; + int part_table_idx; + + Player_actor_Set_ItemNoSubmenu(item); + Common_Set(axe_damage, 0); + + Player_actor_SetupItem_Base1(actor, player->animation1_idx, 0.0f, &anim_idx, &part_table_idx); + + switch ((u16)item) { + case ITM_AXE_USE_2: + Player_actor_sound_axe_broken1(actor); + break; + case ITM_AXE_USE_5: + Player_actor_sound_axe_broken2(actor); + break; + + case EMPTY_NO: + Player_actor_sound_axe_broken3(actor); + break; + + default: + break; + } + } + } +} + +static void Player_actor_ChangeItemNo_Swing_axe(ACTOR* actor, mPlayer_main_swing_axe_c* main, int flag) { + Player_actor_ChangeItemNo_axe_common(actor, main->axe_damage_no); +} + +static void Player_actor_SearchAnimation_Swing_axe(ACTOR* actor, GAME* game, mPlayer_main_swing_axe_c* main_axe, + int flag, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_SetEffect_Swing_axe(actor, game, flag); + Player_actor_CutTree_Swing_axe(actor, game, main_axe, flag); + Player_actor_SetSound_Swing_axe(actor, &main_axe->target_pos, flag); + Player_actor_ChangeItemNo_Swing_axe(actor, main_axe, flag); + Player_actor_Set_FootMark_Base1(actor, game, 0, 0); + } +} + +static void Player_actor_Check_BirthBee_Swing_axe(ACTOR* actor, mPlayer_main_swing_axe_c* main_axe, int arg) { + if (arg == 0 && main_axe->bee_counter > 0) { + if (Player_actor_Check_BirthBee_common(actor, main_axe->item, main_axe->tree_ut_x, main_axe->tree_ut_z, + &main_axe->bee_angle_y)) { + main_axe->bee_counter = 0; + main_axe->bee_flag = 1; + } else { + main_axe->bee_counter--; + } + } +} + +static void Player_actor_ObjCheck_Swing_axe(ACTOR* actor, GAME* game, int) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Swing_axe(ACTOR* actor, int) { Player_actor_BGcheck_common_type1(actor); } + +static void Player_actor_request_proc_index_fromSwing_axe(ACTOR* actor, GAME* game, int arg, int arg2) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + mPlayer_main_swing_axe_c* main_swing = &player->main_data.swing_axe; + + if (arg2 == 0) { + if (arg != 0) { + Player_actor_SettleRequestMainIndexPriority(actor); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, 1); + } else { + cKF_FrameControl_c* fc = &player->keyframe0.frame_control; + f32 current = fc->current_frame; + + if (main_swing->bee_flag != 0) { + if (current >= 17.0f) { + Player_actor_request_main_shock_all(game, 60.0f, main_swing->bee_angle_y, 1, 1, + mPlayer_REQUEST_PRIORITY_21); + } + } else if (Player_actor_Check_AnimationFrame(fc, 16.5f)) { + Player_actor_SettleRequestMainIndexPriority(actor); + Player_actor_Set_status_for_bee(actor, 1); + + } else if ((current >= 17.0f) && (!Player_actor_CheckAndRequest_main_axe_all(game, 4)) && + ((Player_actor_GetController_move_percentX()) || (Player_actor_GetController_move_percentY()))) { + Player_actor_request_main_walk_all(game, NULL, -5.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } + } + } +} + +static void Player_actor_main_Swing_axe(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + f32 frame_calc; + mPlayer_main_swing_axe_c* main_axe = &player->main_data.swing_axe; + int arg; + + Player_actor_Movement_Swing_axe(actor, main_axe, 0); + Player_actor_Reinput_force_position_angle(actor, game); + arg = Player_actor_CulcAnimation_Swing_axe(actor, &frame_calc, 0); + Player_actor_SearchAnimation_Swing_axe(actor, game, main_axe, 0, frame_calc); + Player_actor_Check_BirthBee_Swing_axe(actor, main_axe, 0); + Player_actor_recover_lean_angle(actor); + Player_actor_set_tex_anime_pattern(actor); + Player_actor_ObjCheck_Swing_axe(actor, game, 0); + Player_actor_BGcheck_Swing_axe(actor, 0); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromSwing_axe(actor, game, arg, 0); +} From 36c566848793b3ca902bca850562a8eb57b1916b Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Sat, 7 Sep 2024 11:48:49 -0400 Subject: [PATCH 198/234] Implement more player states --- include/m_common_data.h | 2 +- include/m_player.h | 52 ++++++- include/m_player_lib.h | 2 + include/m_private.h | 5 - include/m_private_h.h | 5 + src/m_player.c | 12 +- src/m_player_common.c_inc | 4 +- src/m_player_main_change_cloth.c_inc | 175 +++++++++++++++++++++++ src/m_player_main_complete_payment.c_inc | 150 +++++++++++++++++++ src/m_player_main_demo_geton_boat.c_inc | 106 ++++++++++++++ src/m_player_main_dma.c_inc | 8 +- src/m_player_main_fail_emu.c_inc | 111 ++++++++++++++ src/m_player_main_knock_door.c_inc | 107 ++++++++++++++ src/m_player_main_notice_mosquito.c_inc | 140 ++++++++++++++++++ src/m_player_main_outdoor.c_inc | 4 +- src/m_player_main_push_snowball.c_inc | 89 ++++++++++++ src/m_player_main_return_outdoor.c_inc | 2 +- src/m_player_main_rotate_umbrella.c_inc | 71 +++++++++ src/m_player_main_stung_mosquito.c_inc | 92 ++++++++++++ src/m_player_main_swing_fan.c_inc | 106 ++++++++++++++ src/m_player_sound.c_inc | 6 +- src/m_shop.c | 20 +-- 22 files changed, 1231 insertions(+), 38 deletions(-) diff --git a/include/m_common_data.h b/include/m_common_data.h index 34111c89..d072f6ea 100644 --- a/include/m_common_data.h +++ b/include/m_common_data.h @@ -259,7 +259,7 @@ typedef struct common_data_s { /* 0x02883A */ s8 goki_shocked_flag; /* 0x02883B */ u8 time_changed_flag; /* 0x02883C */ u8 unable_to_wade_flag; - /* 0x02883D */ u8 _02883D; + /* 0x02883D */ u8 fail_emu_flag; /* 0x02883E */ u8 train_coming_flag; /* state tracker for when train is going to spawn/has spawned */ /* 0x02883F */ u8 train_exists_flag; /* state tracker for when train exists */ /* 0x028840 */ u8 train_control_state; /* current train state */ diff --git a/include/m_player.h b/include/m_player.h index c93060cd..79d26866 100644 --- a/include/m_player.h +++ b/include/m_player.h @@ -471,8 +471,8 @@ enum { mPlayer_ITEM_MAIN_NUM, }; -#define mPlayer_ITEM_MAIN_VALID(main_index) ((main_index) >= (mPlayer_ITEM_MAIN_NONE) && (main_index) < (mPlayer_ITEM_MAIN_NUM)) - +#define mPlayer_ITEM_MAIN_VALID(main_index) \ + ((main_index) >= (mPlayer_ITEM_MAIN_NONE) && (main_index) < (mPlayer_ITEM_MAIN_NUM)) enum { mPlayer_ITEM_KIND_AXE, @@ -667,6 +667,7 @@ enum { mPlayer_PART_TABLE_AXE, mPlayer_PART_TABLE_PICK_UP, mPlayer_PART_TABLE_NET, + mPlayer_PART_TABLE_FAN, mPlayer_PART_TABLE_NUM }; @@ -892,8 +893,8 @@ typedef struct player_request_shock_s { } mPlayer_request_shock_c; typedef struct player_request_push_snowball_s { - u32 type; - int wade_type; + u32 label; + int wade_flag; } mPlayer_request_push_snowball_c; typedef struct player_request_stung_mosquito_s { @@ -1191,11 +1192,11 @@ typedef struct player_request_change_cloth_s { int prev_main_index; mActor_name_t cloth_item; u16 cloth_idx; - int _10; + int try_on_flag; } mPlayer_request_change_cloth_c; typedef struct player_request_swing_fan_s { - int anim_idx; + int start_swing; } mPlayer_request_swing_fan_c; typedef struct player_request_radio_exercise_s { @@ -1604,6 +1605,7 @@ typedef struct player_main_broken_axe_s { typedef struct player_main_relax_rod_s { int bee_flag; + int mosquito_flag } mPlayer_main_relax_rod_c; typedef struct player_main_dig_scoop_s { @@ -1767,10 +1769,42 @@ typedef struct player_main_shock_s { int bgm_stop_flag; } mPlayer_main_shock_c; +typedef struct player_main_knock_door_s { + mPlayer_request_knock_door_c request_data; +} mPlayer_main_knock_door_c; + +typedef struct player_main_change_cloth_s { + ACTOR* talk_actor; + int turn_flag; + int prev_main_index; + mActor_name_t cloth_item; + u16 cloth_idx; +} mPlayer_main_change_cloth_c; + typedef struct player_main_push_snowball_s { u32 label; } mPlayer_main_push_snowball_c; +typedef struct player_main_complete_payment_s { + f32 timer; + int msg_mode; +} mPlayer_main_complete_payment_c; + +typedef struct player_main_fail_emu_s { + f32 timer; + int msg_mode; +} mPlayer_main_fail_emu_c; + +typedef struct player_main_stung_mosquito_s { + u32 label; +} mPlayer_main_stung_mosquito_c; + +typedef struct player_main_notice_mosquito_s { + u32 label; + f32 timer; + int msg_mode; +} mPlayer_main_notice_mosquito_c; + typedef struct player_main_wade_snowball_s { int dir; xyz_t start_pos; @@ -1868,7 +1902,13 @@ typedef union { mPlayer_main_notice_bee_c notice_bee; mPlayer_main_remove_grass_c remove_grass; mPlayer_main_shock_c shock; + mPlayer_main_knock_door_c knock_door; + mPlayer_main_change_cloth_c change_cloth; mPlayer_main_push_snowball_c push_snowball; + mPlayer_main_complete_payment_c complete_payment; + mPlayer_main_fail_emu_c fail_emu; + mPlayer_main_stung_mosquito_c stung_mosquito; + mPlayer_main_notice_mosquito_c notice_mosquito; mPlayer_main_wade_snowball_c wade_snowball; mPlayer_main_demo_geton_boat_wade_c demo_geton_boat_wade; mPlayer_main_demo_geton_boat_sitdown_c demo_geton_boat_sitdown; diff --git a/include/m_player_lib.h b/include/m_player_lib.h index 08666df5..eba95f2e 100644 --- a/include/m_player_lib.h +++ b/include/m_player_lib.h @@ -111,6 +111,8 @@ extern int mPlib_strength_request_main_demo_wade_priority(GAME* game); extern int mPlib_strength_request_main_demo_geton_boat_wade_priority(GAME* game); extern int mPlib_strength_request_main_wade_snowball_priority(GAME* game); extern void mPlib_change_player_face(GAME* game); +extern void mPlib_change_player_cloth_info(mPr_cloth_c* cloth_p, mActor_name_t cloth_item); +extern int mPlib_Get_status_for_bee(void); extern mPlayer_change_data_from_submenu_c* mPlib_Get_change_data_from_submenu_p(); diff --git a/include/m_private.h b/include/m_private.h index abca39d1..5350e98c 100644 --- a/include/m_private.h +++ b/include/m_private.h @@ -185,11 +185,6 @@ typedef struct private_mother_mail_info_s { mPr_mother_mail_data_c data; } mPr_mother_mail_info_c; -typedef struct private_cloth_s { - u16 idx; - mActor_name_t item; -} mPr_cloth_c; - struct private_s { /* 0x0000 */ PersonalID_c player_ID; /* player's id info */ /* 0x0014 */ s8 gender; /* gender/sex of player */ diff --git a/include/m_private_h.h b/include/m_private_h.h index 3f6956aa..cb355552 100644 --- a/include/m_private_h.h +++ b/include/m_private_h.h @@ -9,6 +9,11 @@ extern "C" { typedef struct private_s Private_c; +typedef struct private_cloth_s { + u16 idx; + mActor_name_t item; +} mPr_cloth_c; + #ifdef __cplusplus } #endif diff --git a/src/m_player.c b/src/m_player.c index d2b50d6d..37ee6be8 100644 --- a/src/m_player.c +++ b/src/m_player.c @@ -114,8 +114,8 @@ static void Player_actor_sound_hachi_sasareru(ACTOR* actor); static void Player_actor_sound_wear(ACTOR* actor); static void Player_actor_sound_dai_ue_kakunou(ACTOR* actor); static void Player_actor_sound_umbrella_rotate(ACTOR* actor); -static u16 Player_actor_sound_Get_bgm_num_forCompletePayment(); -static u16 Player_actor_sound_Get_bgm_num_forDemoGetGoldenItem(int type); +static u8 Player_actor_sound_Get_bgm_num_forCompletePayment(void); +static u8 Player_actor_sound_Get_bgm_num_forDemoGetGoldenItem(int type); static void Player_actor_sound_camera_move1(void); static void Player_actor_sound_camera_move2(); static void Player_actor_sound_karaburi(ACTOR* actor); @@ -327,16 +327,16 @@ static int Player_actor_request_main_rotate_octagon_all(GAME*, ACTOR*, int, int, static int Player_actor_request_main_throw_money_all(GAME*, const xyz_t*, s16, int); static int Player_actor_request_main_pray_all(GAME*, const xyz_t*, s16, int); static int Player_actor_request_main_mail_jump_all(GAME*, const xyz_t*, s16, int); -static int Player_actor_request_main_demo_wait_all(GAME*, int, void*, int); +static int Player_actor_request_main_demo_wait_all(GAME*, int, u32, int); static int Player_actor_request_main_demo_walk_all(GAME*, f32, f32, f32, int, int); static int Player_actor_request_main_demo_geton_train(GAME*, const xyz_t*, s16, int); static int Player_actor_request_main_demo_getoff_train(GAME*, const xyz_t*, s16, int); static int Player_actor_request_main_demo_standing_train_all(GAME*, int); static int Player_actor_request_main_stung_bee_all(GAME*, int); static int Player_actor_request_main_shock_all(GAME*, f32, s16, s8, int, int); -static int Player_actor_request_main_change_cloth_forNPC(GAME*, mActor_name_t, int); -static int Player_actor_request_main_push_snowball_all(GAME*, void*, int, int); -static int Player_actor_request_main_stung_mosquito_all(GAME*, int, int); +static int Player_actor_request_main_change_cloth_forNPC(GAME*, mActor_name_t, u16, int); +static int Player_actor_request_main_push_snowball_all(GAME*, u32, int, int); +static int Player_actor_request_main_stung_mosquito_all(GAME*, u32, int); static int Player_actor_request_main_switch_on_lighthouse_all(GAME*, const xyz_t*, int, int); static int Player_actor_request_main_demo_geton_boat_all(GAME*, const xyz_t*, s16, int); static int Player_actor_request_main_demo_getoff_boat_standup_all(GAME*, const xyz_t*, s16, int); diff --git a/src/m_player_common.c_inc b/src/m_player_common.c_inc index 24e4b710..0769ec05 100644 --- a/src/m_player_common.c_inc +++ b/src/m_player_common.c_inc @@ -3572,9 +3572,9 @@ static int Player_actor_CheckAndRequest_main_umbrella_all(GAME* game, int prio) return FALSE; } -static int Player_actor_CheckAndRequest_main_fan_all(GAME* game, int check_trigger, int param_2, int prio) { +static int Player_actor_CheckAndRequest_main_fan_all(GAME* game, int check_trigger, int start_swing, int prio) { if (Player_actor_CheckController_forFan(game, check_trigger) && Player_actor_CheckAbleSpeed_forItem(game)) { - return Player_actor_request_main_swing_fan_all(game, param_2, prio); + return Player_actor_request_main_swing_fan_all(game, start_swing, prio); } return FALSE; diff --git a/src/m_player_main_change_cloth.c_inc b/src/m_player_main_change_cloth.c_inc index e69de29b..7427bab5 100644 --- a/src/m_player_main_change_cloth.c_inc +++ b/src/m_player_main_change_cloth.c_inc @@ -0,0 +1,175 @@ +static int Player_actor_request_main_change_cloth_all(GAME* game, ACTOR* talk_actor_p, int turn_flag, + int prev_main_index, mActor_name_t cloth_item, u16 cloth_idx, + int try_on_flag, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_CHANGE_CLOTH, prio)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_change_cloth_c* req_change_cloth_p = &player->requested_main_index_data.change_cloth; + + req_change_cloth_p->talk_actor = talk_actor_p; + req_change_cloth_p->turn_flag = turn_flag; + req_change_cloth_p->prev_main_index = prev_main_index; + req_change_cloth_p->cloth_item = cloth_item; + req_change_cloth_p->cloth_idx = cloth_idx; + req_change_cloth_p->try_on_flag = try_on_flag; + + Player_actor_request_main_index(game, mPlayer_INDEX_CHANGE_CLOTH, prio); + return TRUE; + } + + return FALSE; +} + +static int Player_actor_request_main_change_cloth_forNPC(GAME* game, mActor_name_t cloth_item, u16 cloth_idx, + int try_on_flag) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + ACTOR* talk_actor_p; + int turn_flag; + int prev_main_index = player->now_main_index; + + if (prev_main_index == mPlayer_INDEX_TALK) { + mPlayer_main_talk_c* talk_p = &player->main_data.talk; + + talk_actor_p = talk_p->talk_actor_p; + turn_flag = talk_p->turn_flag; + } else { + talk_actor_p = NULL; + turn_flag = FALSE; + } + + return Player_actor_request_main_change_cloth_all(game, talk_actor_p, turn_flag, prev_main_index, cloth_item, + cloth_idx, try_on_flag, mPlayer_REQUEST_PRIORITY_19); +} + +static void Player_actor_setup_main_Change_cloth(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + mPlayer_request_change_cloth_c* req_change_cloth_p = &player->requested_main_index_data.change_cloth; + mPlayer_main_change_cloth_c* change_cloth_p = &player->main_data.change_cloth; + int try_on_flag = req_change_cloth_p->try_on_flag; + int anim0_idx = try_on_flag ? mPlayer_ANIM_MENU_CHANGE1 : mPlayer_ANIM_ITAZURA1; + int anim1_idx; + int part_table_idx; + f32 speed = try_on_flag ? 1.0f : 0.5f; + + change_cloth_p->talk_actor = req_change_cloth_p->talk_actor; + change_cloth_p->turn_flag = req_change_cloth_p->turn_flag; + change_cloth_p->prev_main_index = req_change_cloth_p->prev_main_index; + change_cloth_p->cloth_item = req_change_cloth_p->cloth_item; + change_cloth_p->cloth_idx = req_change_cloth_p->cloth_idx; + + Player_actor_SetupItem_Base1(actorx, anim0_idx, -5.0f, &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base2(actorx, game, anim0_idx, anim1_idx, 1.0f, 1.0f, speed, -5.0f, + cKF_FRAMECONTROL_STOP, part_table_idx); + Player_actor_setup_main_Base(actorx, game); + + if (try_on_flag == FALSE) { + eEC_CLIP->effect_make_proc(eEC_EFFECT_HALLOWEEN, player->feel_pos, 2, actorx->shape_info.rotation.y, game, + RSV_NO, 0, 0); + } +} + +static void Player_actor_Movement_Change_cloth(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int anim0_idx = player->animation0_idx; + + if (anim0_idx != mPlayer_ANIM_MENU_CHANGE1) { + Player_actor_Movement_Base_Stop(actorx, FALSE); + } else { + GAME_PLAY* play = (GAME_PLAY*)game; + Camera2* camera2_p = &play->camera; + s_xyz* dir_p = &camera2_p->direction; + s16 dir_y = dir_p->y + DEG2SHORT_ANGLE2(180.0f); + + add_calc_short_angle2(&actorx->shape_info.rotation.y, dir_y, 1.0f - sqrtf(0.5f), 2500, 50); + actorx->world.angle.y = actorx->shape_info.rotation.y; + Player_actor_Movement_Base_Stop(actorx, FALSE); + } +} + +static int Player_actor_CulcAnimation_Change_cloth(ACTOR* actorx, f32* last_anim0_cur_frame) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame); +} + +static void Player_actor_SetEffect_Change_cloth(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int anim0_idx = player->animation0_idx; + + if (anim0_idx == mPlayer_ANIM_MENU_CHANGE1) { + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + + if (Player_actor_Check_AnimationFrame(fc0_p, 16.0f)) { + Player_actor_sound_wear(actorx); + eEC_CLIP->effect_make_proc(eEC_EFFECT_KIGAE, player->feel_pos, 2, actorx->shape_info.rotation.y, game, + RSV_NO, 0, 0); + } + } +} + +static void Player_actor_SetTexPallet_Change_cloth(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int anim0_idx = player->animation0_idx; + int menu_flag = anim0_idx == mPlayer_ANIM_MENU_CHANGE1; + f32 frame = menu_flag ? 18.0f : 36.0f; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + + if (Player_actor_Check_AnimationFrame(fc0_p, frame)) { + mPlayer_main_change_cloth_c* change_cloth_p = &player->main_data.change_cloth; + mActor_name_t cloth_item = change_cloth_p->cloth_item; + u16 cloth_idx = change_cloth_p->cloth_idx; + + if (menu_flag == FALSE) { + mPlib_change_player_cloth_info(&Now_Private->cloth, cloth_item); + mPr_SetItemCollectBit(cloth_item); + } + + mPlib_change_player_cloth(game, cloth_idx); + } +} + +static void Player_actor_SearchAnimation_Change_cloth(ACTOR* actorx, GAME* game, f32 frame) { + if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE) { + Player_actor_SetEffect_Change_cloth(actorx, game); + Player_actor_SetTexPallet_Change_cloth(actorx, game); + } +} + +static void Player_actor_set_eye_pattern_Change_cloth(ACTOR* actorx) { + Player_actor_set_tex_anime_pattern(actorx); +} + +static void Player_actor_ObjCheck_Change_cloth(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_request_proc_index_fromChange_cloth(ACTOR* actorx, GAME* game, int end_flag) { + if (end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_change_cloth_c* change_cloth_p = &player->main_data.change_cloth; + int prev_main_index = change_cloth_p->prev_main_index; + + Player_actor_SettleRequestMainIndexPriority(actorx); + if (prev_main_index != mPlayer_INDEX_TALK) { + Player_actor_request_main_demo_wait_all(game, FALSE, 0, mPlayer_REQUEST_PRIORITY_19); + } else { + Player_actor_request_main_talk_all(game, change_cloth_p->talk_actor, change_cloth_p->turn_flag, -12.0f, + FALSE, mPlayer_REQUEST_PRIORITY_19); + } + } +} + +static void Player_actor_main_Change_cloth(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + int end_flag; + + Player_actor_Movement_Change_cloth(actorx, game); + end_flag = Player_actor_CulcAnimation_Change_cloth(actorx, &last_anim0_cur_frame); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_SearchAnimation_Change_cloth(actorx, game, last_anim0_cur_frame); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_Change_cloth(actorx); + Player_actor_ObjCheck_Change_cloth(actorx, game); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromChange_cloth(actorx, game, end_flag); +} diff --git a/src/m_player_main_complete_payment.c_inc b/src/m_player_main_complete_payment.c_inc index e69de29b..709ebc5f 100644 --- a/src/m_player_main_complete_payment.c_inc +++ b/src/m_player_main_complete_payment.c_inc @@ -0,0 +1,150 @@ +static int Player_actor_request_main_complete_payment_all(GAME* game, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_COMPLETE_PAYMENT, prio)) { + Player_actor_request_main_index(game, mPlayer_INDEX_COMPLETE_PAYMENT, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Complete_payment(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_complete_payment_c* complete_payment_p = &player->main_data.complete_payment; + u8 bgm_num; + + complete_payment_p->timer = 0.0f; + complete_payment_p->msg_mode = 0; + + Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_YATTA1, mPlayer_ANIM_YATTA1, 1.0f, 1.0f, 0.5f, 0.0f, + cKF_FRAMECONTROL_STOP, mPlayer_PART_TABLE_NORMAL); + Player_actor_setup_main_Base(actorx, game); + bgm_num = Player_actor_sound_Get_bgm_num_forCompletePayment(); + mBGMPsComp_make_ps_fanfare(bgm_num, 0x168); +} + +static void Player_actor_settle_main_Complete_payment(ACTOR* actorx, GAME* game) { + u8 bgm_num; + + bgm_num = Player_actor_sound_Get_bgm_num_forCompletePayment(); + mBGMPsComp_delete_ps_fanfare(bgm_num, 0x168); + Common_Set(complete_payment_type, mPlayer_COMPLETE_PAYMENT_TYPE_NONE); +} + +static int Player_actor_CulcAnimation_Complete_payment(ACTOR* actorx, f32* last_anim0_cur_frame) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame); +} + +static void Player_actor_Movement_Complete_payment(ACTOR* actorx) { + add_calc_short_angle2(&actorx->shape_info.rotation.y, 0, 1.0f - sqrtf(0.5f), 2500, 50); + actorx->world.angle.y = actorx->shape_info.rotation.y; + Player_actor_Movement_Base_Braking_common(actorx, 0.32625f); +} + +static void Player_actor_set_eye_pattern_Complete_payment(ACTOR* actorx, int end_flag) { + if (end_flag) { + Player_actor_set_eye_pattern_normal(actorx); + } else { + Player_actor_set_tex_anime_pattern(actorx); + } +} + +static void Player_actor_ObjCheck_Complete_payment(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Complete_payment(ACTOR* actorx) { + Player_actor_BGcheck_common_type2(actorx); +} + +static void Player_actor_Complete_payment_demo_ct(ACTOR* actorx) { + rgba_t window_color; + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + int msg_no; + + switch (Common_Get(complete_payment_type)) { + case mPlayer_COMPLETE_PAYMENT_TYPE_ARBEIT: + msg_no = 0x17B6; + break; + default: + msg_no = 0x17B7; + break; + } + + mDemo_Set_msg_num(msg_no); + mDemo_Set_talk_display_name(FALSE); + mDemo_Set_camera(CAMERA2_PROCESS_ITEM); + mDemo_Set_ListenAble(); + mMsg_Set_LockContinue(msg_p); + + window_color.r = 185; + window_color.g = 245; + window_color.b = 80; + window_color.a = 255; + mDemo_Set_talk_window_color(&window_color); + mChoice_CLEAR_CHOSENUM(); +} + +static int Player_actor_MessageControl_Complete_payment(ACTOR* actorx, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_complete_payment_c* complete_payment_p = &player->main_data.complete_payment; + f32* timer_p = &complete_payment_p->timer; + int* msg_mode_p = &complete_payment_p->msg_mode; + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + + if (*timer_p < 42.0f) { + (*timer_p) += 1.0f; + return FALSE; + } + + switch (*msg_mode_p) { + case 0: { + if (mDemo_Check(mDemo_TYPE_REPORT, actorx) == FALSE) { + mDemo_Request(mDemo_TYPE_REPORT, actorx, &Player_actor_Complete_payment_demo_ct); + } else { + *msg_mode_p = 1; + } + + return FALSE; + } + case 1: { + if (end_flag) { + mMsg_Unset_LockContinue(msg_p); + *msg_mode_p = 2; + } + + return FALSE; + } + case 2: { + if (mDemo_Check(mDemo_TYPE_REPORT, actorx) == FALSE) { + *msg_mode_p = 3; + } + return FALSE; + } + default: { + return TRUE; + } + } +} + +static void Player_actor_request_proc_index_fromComplete_payment(GAME* game, int end_flag) { + if (end_flag) { + Player_actor_request_main_return_outdoor_all(game, mPlayer_INDEX_WAIT, 3.0f, -5.0f, + mPlayer_REQUEST_PRIORITY_45); + } +} + +static void Player_actor_main_Complete_payment(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + int anim_end_flag; + int msg_end_flag; + + anim_end_flag = Player_actor_CulcAnimation_Complete_payment(actorx, &last_anim0_cur_frame); + Player_actor_Movement_Complete_payment(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_Complete_payment(actorx, anim_end_flag); + Player_actor_ObjCheck_Complete_payment(actorx, game); + Player_actor_BGcheck_Complete_payment(actorx); + msg_end_flag = Player_actor_MessageControl_Complete_payment(actorx, anim_end_flag); + Player_actor_request_proc_index_fromComplete_payment(game, msg_end_flag); +} diff --git a/src/m_player_main_demo_geton_boat.c_inc b/src/m_player_main_demo_geton_boat.c_inc index e69de29b..bd862f91 100644 --- a/src/m_player_main_demo_geton_boat.c_inc +++ b/src/m_player_main_demo_geton_boat.c_inc @@ -0,0 +1,106 @@ +static int Player_actor_request_main_demo_geton_boat_all(GAME* game, const xyz_t* pos_p, s16 angle_y, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_DEMO_GETON_BOAT, prio)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_demo_geton_boat_c* req_demo_geton_boat_p = &player->requested_main_index_data.demo_geton_boat; + + req_demo_geton_boat_p->pos = *pos_p; + req_demo_geton_boat_p->angle_y = angle_y; + Player_actor_request_main_index(game, mPlayer_INDEX_DEMO_GETON_BOAT, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Demo_geton_boat(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + mPlayer_request_demo_geton_boat_c* req_demo_geton_boat_p = &player->requested_main_index_data.demo_geton_boat; + int anim1_idx; + int part_table_idx; + + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_RIDE1, -5.0f, &anim1_idx, &part_table_idx); + actorx->world.angle.y = req_demo_geton_boat_p->angle_y; + cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(kf0_p, 0.0f, 1000.0f, 0.0f, 0, 0, DEG2SHORT_ANGLE2(90.0f)); + cKF_SkeletonInfo_R_AnimationMove_ct_base(&actorx->world.position, &req_demo_geton_boat_p->pos, + actorx->shape_info.rotation.y, req_demo_geton_boat_p->angle_y, 5.0f, kf0_p, + cKF_ANIMATION_TRANS_XZ | cKF_ANIMATION_TRANS_Y | cKF_ANIMATION_ROT_Y); + Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_RIDE1, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, + cKF_FRAMECONTROL_STOP, part_table_idx); + Player_actor_setup_main_Base(actorx, game); + Player_actor_setup_main_Demo_geton_boat_other_func2(actorx, game); +} + +static void Player_actor_settle_main_Demo_geton_boat(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_dt(kf0_p); + actorx->shape_info.rotation.y += DEG2SHORT_ANGLE2(-90.0f); + actorx->world.angle.y = actorx->shape_info.rotation.y; + Player_actor_Reset_bee_chase(actorx); + actorx->shape_info.shadow_size_change_rate = 0.0f; + actorx->shape_info.shadow_alpha_change_rate = 0.0f; + Player_actor_sound_LANDING(actorx); +} + +static int Player_actor_CulcAnimation_Demo_geton_boat(ACTOR* actorx, f32* last_anim0_cur_frame_p) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame_p); +} + +static void Player_actor_SetSound_Demo_geton_boat(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + + if (Player_actor_Check_AnimationFrame(fc0_p, 15.0f)) { + Player_actor_sound_JUMP(actorx); + } +} + +static void Player_actor_ControlShadow_Demo_geton_boat(ACTOR* actorx) { + Player_actor_DisappearShadow_fromAnimationFrame(actorx, 10.0f, 19.0f); +} + +static void Player_actor_SearchAnimation_Demo_geton_boat(ACTOR* actorx, f32 frame) { + if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE) { + Player_actor_SetSound_Demo_geton_boat(actorx); + } + + Player_actor_ControlShadow_Demo_geton_boat(actorx); +} + +static void Player_actor_Movement_Demo_geton_boat(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_base(&actorx->world.position, &actorx->shape_info.rotation.y, &actorx->scale, + actorx->world.angle.y, kf0_p); + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static void Player_actor_ObjCheck_Demo_geton_boat(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_request_proc_index_fromDemo_geton_boat(ACTOR* actorx, GAME* game, int end_flag) { + if (end_flag) { + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_demo_geton_boat_sitdown_all(game, mPlayer_REQUEST_PRIORITY_19); + } +} + +static void Player_actor_main_Demo_geton_boat(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + int end_flag; + + end_flag = Player_actor_CulcAnimation_Demo_geton_boat(actorx, &last_anim0_cur_frame); + Player_actor_SearchAnimation_Demo_geton_boat(actorx, last_anim0_cur_frame); + Player_actor_Movement_Demo_geton_boat(actorx); + Player_actor_Reset_force_position_angle(actorx); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Demo_geton_boat(actorx, game); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromDemo_geton_boat(actorx, game, end_flag); +} diff --git a/src/m_player_main_dma.c_inc b/src/m_player_main_dma.c_inc index adbbc5d0..7f12c43e 100644 --- a/src/m_player_main_dma.c_inc +++ b/src/m_player_main_dma.c_inc @@ -25,7 +25,7 @@ static void Player_actor_request_proc_index_fromDma(ACTOR* actorx, GAME* game) { exchange->banks[bank_idx + 3].bank_id > 0 && exchange->banks[bank_idx + 4].bank_id > 0 && exchange->banks[bank_idx + 5].bank_id > 0 && exchange->banks[bank_idx + 6].bank_id > 0) { Player_actor_ItemBank_ct(actor, play); - if (actor->requested_main_index_priority == mPlayer_INDEX_SLIP_NET) { + if (actor->requested_main_index_priority == mPlayer_REQUEST_PRIORITY_41) { Player_actor_SettleRequestMainIndexPriority(actor); } keyf = &actor->keyframe0; @@ -45,10 +45,10 @@ static void Player_actor_request_proc_index_fromDma(ACTOR* actorx, GAME* game) { } else if ((type & 7) == 5) { mPlib_request_main_groundhog_type1(game); } else { - if (Common_Get(_02883D) == 1) { - Player_actor_request_main_fail_emu(play, mPlayer_INDEX_READY_WALK_NET); + if (Common_Get(fail_emu_flag) == TRUE) { + Player_actor_request_main_fail_emu(play, mPlayer_REQUEST_PRIORITY_43); } else { - Player_actor_request_main_intro_all(play, mPlayer_INDEX_READY_WALK_NET); + Player_actor_request_main_intro_all(play, mPlayer_REQUEST_PRIORITY_43); } } Camera2_request_main_normal(play, 1, 1); diff --git a/src/m_player_main_fail_emu.c_inc b/src/m_player_main_fail_emu.c_inc index e69de29b..c0028f71 100644 --- a/src/m_player_main_fail_emu.c_inc +++ b/src/m_player_main_fail_emu.c_inc @@ -0,0 +1,111 @@ +static int Player_actor_request_main_fail_emu_all(GAME* game, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_FAIL_EMU, prio)) { + Player_actor_request_main_index(game, mPlayer_INDEX_FAIL_EMU, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Fail_emu(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_fail_emu_c* fail_emu_p = &player->main_data.fail_emu; + + fail_emu_p->timer = 0.0f; + fail_emu_p->msg_mode = 0; + + Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_WAIT1, mPlayer_ANIM_WAIT1, 1.0f, 1.0f, 0.5f, 0.0f, + cKF_FRAMECONTROL_REPEAT, mPlayer_PART_TABLE_NORMAL); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_settle_main_Fail_emu(ACTOR* actorx, GAME* game) { + Common_Set(fail_emu_flag, FALSE); +} + +static void Player_actor_Movement_Fail_emu(ACTOR* actorx) { + Player_actor_Movement_Base_Braking_common(actorx, 0.32625f); +} + +static int Player_actor_CulcAnimation_Fail_emu(ACTOR* actorx) { + f32 dummy; + + return Player_actor_CulcAnimation_Base2(actorx, &dummy); +} + +static void Player_actor_ObjCheck_Fail_emu(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Fail_emu(ACTOR* actorx) { + Player_actor_BGcheck_common_type1(actorx); +} + +static void Player_actor_Fail_emu_demo_ct(ACTOR* actorx) { + rgba_t window_color; + + mDemo_Set_msg_num(0x2B6A); + mDemo_Set_talk_display_name(FALSE); + mDemo_Set_ListenAble(); + + window_color.r = 255; + window_color.g = 255; + window_color.b = 20; + window_color.a = 255; + mDemo_Set_talk_window_color(&window_color); + mChoice_CLEAR_CHOSENUM(); +} + +static int Player_actor_MessageControl_Fail_emu(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_fail_emu_c* fail_emu_p = &player->main_data.fail_emu; + f32* timer_p = &fail_emu_p->timer; + int* msg_mode_p = &fail_emu_p->msg_mode; + + if (*timer_p < 42.0f) { + (*timer_p) += 1.0f; + return FALSE; + } + + switch (*msg_mode_p) { + case 0: { + if (mDemo_Check(mDemo_TYPE_REPORT, actorx) == FALSE) { + mDemo_Request(mDemo_TYPE_REPORT, actorx, &Player_actor_Fail_emu_demo_ct); + } else { + *msg_mode_p = 1; + } + + return FALSE; + } + case 1: { + if (mDemo_Check(mDemo_TYPE_REPORT, actorx) == FALSE) { + *msg_mode_p = 2; + } + return FALSE; + } + default: { + return TRUE; + } + } +} + +static void Player_actor_request_proc_index_fromFail_emu(ACTOR* actorx, GAME* game, int end_flag) { + if (end_flag) { + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } +} + +static void Player_actor_main_Fail_emu(ACTOR* actorx, GAME* game) { + int end_flag; + + Player_actor_Movement_Fail_emu(actorx); + Player_actor_CulcAnimation_Fail_emu(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_tex_anime_pattern(actorx); + Player_actor_ObjCheck_Fail_emu(actorx, game); + Player_actor_BGcheck_Fail_emu(actorx); + end_flag = Player_actor_MessageControl_Fail_emu(actorx); + Player_actor_request_proc_index_fromFail_emu(actorx, game, end_flag); +} diff --git a/src/m_player_main_knock_door.c_inc b/src/m_player_main_knock_door.c_inc index e69de29b..cb95c7e9 100644 --- a/src/m_player_main_knock_door.c_inc +++ b/src/m_player_main_knock_door.c_inc @@ -0,0 +1,107 @@ +static int Player_actor_request_main_knock_door(GAME* game, const xyz_t* pos_p, s16 angle_y, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_KNOCK_DOOR, prio)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_knock_door_c* req_knock_door_p = &player->requested_main_index_data.knock_door; + + req_knock_door_p->request_main_index = player->requested_main_index; + req_knock_door_p->pos = *pos_p; + req_knock_door_p->angle_y = angle_y; + + Player_actor_request_main_index(game, mPlayer_INDEX_KNOCK_DOOR, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Knock_door(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + mPlayer_request_knock_door_c* req_knock_door_p = &player->requested_main_index_data.knock_door; + mPlayer_main_knock_door_c* knock_door_p = &player->main_data.knock_door; + int anim1_idx; + int part_table_idx; + + knock_door_p->request_data = *req_knock_door_p; + + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_KNOCK1, -5.0f, &anim1_idx, &part_table_idx); + cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(kf0_p, 0.0f, 1000.0f, 0.0f, 0, 0, DEG2SHORT_ANGLE2(90.0f)); + cKF_SkeletonInfo_R_AnimationMove_ct_base(&actorx->world.position, &req_knock_door_p->pos, + actorx->shape_info.rotation.y, req_knock_door_p->angle_y, 5.0f, kf0_p, + cKF_ANIMATION_ROT_Y | cKF_ANIMATION_TRANS_XZ); + Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_KNOCK1, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, + cKF_FRAMECONTROL_STOP, part_table_idx); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_settle_main_Knock_door(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_dt(kf0_p); + actorx->world.angle.y = actorx->shape_info.rotation.y; +} + +static int Player_actor_CulcAnimation_Knock_door(ACTOR* actorx, f32* last_anim0_cur_frame) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame); +} + +static void Player_actor_Movement_Knock_door(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_base(&actorx->world.position, &actorx->shape_info.rotation.y, &actorx->scale, + actorx->world.angle.y, kf0_p); + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static void Player_actor_SetSound_Knock_door(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + + if (Player_actor_Check_AnimationFrame(fc0_p, 13.0f) || Player_actor_Check_AnimationFrame(fc0_p, 20.0f)) { + Player_actor_sound_knock(actorx); + } +} + +static void Player_actor_SearchAnimation_Knock_door(ACTOR* actorx, f32 frame) { + if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE) { + Player_actor_SetSound_Knock_door(actorx); + } +} + +static void Player_actor_ObjCheck_Knock_door(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Knock_door(ACTOR* actorx) { + Player_actor_BGcheck_common_type1(actorx); +} + +static void Player_actor_request_proc_index_fromKnock_door(ACTOR* actorx, GAME* game, int end_flag) { + if (end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_knock_door_c* knock_door_p = &player->main_data.knock_door; + bcopy(&knock_door_p->request_data.request_data, &player->requested_main_index_data, + sizeof(knock_door_p->request_data.request_data)); + Player_actor_request_main_index(game, knock_door_p->request_data.request_main_index, + mPlayer_REQUEST_PRIORITY_39); + } +} + +static void Player_actor_main_Knock_door(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + int end_flag; + + end_flag = Player_actor_CulcAnimation_Knock_door(actorx, &last_anim0_cur_frame); + Player_actor_Movement_Knock_door(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_SearchAnimation_Knock_door(actorx, last_anim0_cur_frame); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Knock_door(actorx, game); + Player_actor_BGcheck_Knock_door(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromKnock_door(actorx, game, end_flag); +} diff --git a/src/m_player_main_notice_mosquito.c_inc b/src/m_player_main_notice_mosquito.c_inc index e69de29b..01c5eb1d 100644 --- a/src/m_player_main_notice_mosquito.c_inc +++ b/src/m_player_main_notice_mosquito.c_inc @@ -0,0 +1,140 @@ +static int Player_actor_request_main_notice_mosquito(GAME* game, u32 label, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_NOTICE_MOSQUITO, prio)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_notice_mosquito_c* req_notice_mosquito_p = &player->requested_main_index_data.notice_mosquito; + + req_notice_mosquito_p->label = label; + Player_actor_request_main_index(game, mPlayer_INDEX_NOTICE_MOSQUITO, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Notice_mosquito(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_request_notice_mosquito_c* req_notice_mosquito_p = &player->requested_main_index_data.notice_mosquito; + mPlayer_main_notice_mosquito_c* notice_mosquito_p = &player->main_data.notice_mosquito; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + int anim1_idx; + int part_table_idx; + + notice_mosquito_p->label = req_notice_mosquito_p->label; + notice_mosquito_p->timer = 0.0f; + notice_mosquito_p->msg_mode = 0; + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_MOSQUITO2, -5.0f, &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actorx, game, mPlayer_ANIM_MOSQUITO2, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, + mPlayer_PART_TABLE_PICK_UP); + Player_actor_set_eye_pattern(actorx, 4); + Player_actor_set_mouth_pattern(actorx, 4); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_settle_main_Notice_mosquito(ACTOR* actorx, GAME* game) { + mBGMPsComp_delete_ps_demo(BGM_BEE_STUNG, 0x168); + + if (Save_Get(scene_no) == SCENE_MUSEUM_ROOM_INSECT) { + mBGMPsComp_museum_status(4); + } +} + +static void Player_actor_Movement_Notice_mosquito(ACTOR* actorx) { + add_calc_short_angle2(&actorx->shape_info.rotation.y, 0, 1.0f - sqrtf(0.5f), 2500, 50); + actorx->world.angle.y = actorx->shape_info.rotation.y; + Player_actor_Movement_Base_Braking_common(actorx, 0.32625f); +} + +static int Player_actor_CulcAnimation_Notice_mosquito(ACTOR* actorx) { + f32 dummy; + + return Player_actor_CulcAnimation_Base2(actorx, &dummy); +} + +static void Player_actor_ObjCheck_Notice_mosquito(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Notice_mosquito(ACTOR* actorx) { + Player_actor_BGcheck_common_type1(actorx); +} + +static void Player_actor_Notice_mosquito_demo_ct(ACTOR* actorx) { + rgba_t window_color; + + mDemo_Set_msg_num(0x3063); + mDemo_Set_talk_display_name(FALSE); + mDemo_Set_camera(CAMERA2_PROCESS_ITEM); + mDemo_Set_ListenAble(); + window_color.r = 225; + window_color.g = 165; + window_color.b = 255; + window_color.a = 255; + mDemo_Set_talk_window_color(&window_color); + mBGMPsComp_make_ps_demo(BGM_BEE_STUNG, 0x168); + + if (Save_Get(scene_no) == SCENE_MUSEUM_ROOM_INSECT) { + mBGMPsComp_museum_status(0); + } +} + +static int Player_actor_MessageControl_Notice_mosquito(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_notice_mosquito_c* notice_mosquito_p = &player->main_data.notice_mosquito; + int* msg_mode_p = ¬ice_mosquito_p->msg_mode; + + switch (*msg_mode_p) { + case 0: { + f32* timer_p = ¬ice_mosquito_p->timer; + + if (*timer_p < 0.0f) { + (*timer_p) += 1.0f; + } else { + *msg_mode_p = 1; + } + break; + } + + case 1: { + if (mDemo_Check(mDemo_TYPE_REPORT, actorx) == FALSE) { + mDemo_Request(mDemo_TYPE_REPORT, actorx, &Player_actor_Notice_mosquito_demo_ct); + } else { + *msg_mode_p = 2; + } + break; + } + + case 2: { + if (mDemo_Check(mDemo_TYPE_REPORT, actorx) == FALSE) { + *msg_mode_p = 3; + } + break; + } + + default: { + return TRUE; + } + } + + return FALSE; +} + +static void Player_actor_request_proc_index_fromNotice_mosquito(ACTOR* actorx, GAME* game, int msg_end_flag) { + if (msg_end_flag) { + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } +} + +static void Player_actor_main_Notice_mosquito(ACTOR* actorx, GAME* game) { + int msg_end_flag; + + Player_actor_Movement_Notice_mosquito(actorx); + Player_actor_CulcAnimation_Notice_mosquito(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_recover_lean_angle(actorx); + Player_actor_ObjCheck_Notice_mosquito(actorx, game); + Player_actor_BGcheck_Notice_mosquito(actorx); + msg_end_flag = Player_actor_MessageControl_Notice_mosquito(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromNotice_mosquito(actorx, game, msg_end_flag); +} diff --git a/src/m_player_main_outdoor.c_inc b/src/m_player_main_outdoor.c_inc index 7151d0bf..b8ef2de3 100644 --- a/src/m_player_main_outdoor.c_inc +++ b/src/m_player_main_outdoor.c_inc @@ -61,8 +61,8 @@ static void Player_actor_request_proc_index_fromOutdoor(GAME* game, int arg1) { if (Common_Get(complete_payment_type) != 0) { Player_actor_request_main_complete_payment(game, mPlayer_REQUEST_PRIORITY_44); } else { - Player_actor_request_main_return_outdoor_all(game, mPlayer_INDEX_WAIT, mPlayer_REQUEST_PRIORITY_45, 3.0f, - 0.0f); + Player_actor_request_main_return_outdoor_all(game, mPlayer_INDEX_WAIT, 3.0f, 0.0f, + mPlayer_REQUEST_PRIORITY_45); } } } diff --git a/src/m_player_main_push_snowball.c_inc b/src/m_player_main_push_snowball.c_inc index e69de29b..97866a64 100644 --- a/src/m_player_main_push_snowball.c_inc +++ b/src/m_player_main_push_snowball.c_inc @@ -0,0 +1,89 @@ +static int Player_actor_request_main_push_snowball_all(GAME* game, u32 label, int wade_flag, int prio) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_push_snowball_c* req_push_snowball_p = &player->requested_main_index_data.push_snowball; + int main_index = player->now_main_index; + + if (main_index == mPlayer_INDEX_PUSH_SNOWBALL) { + return FALSE; + } + + if (main_index == mPlayer_INDEX_WADE_SNOWBALL) { + mPlayer_main_wade_snowball_c* wade_snowball_p = &player->main_data.wade_snowball; + + /* When wading between acres, check the snowball label is the same as the one pushed */ + if (wade_snowball_p->snowball_label != label) { + return FALSE; + } + } + + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_PUSH_SNOWBALL, prio)) { + req_push_snowball_p->label = label; + req_push_snowball_p->wade_flag = wade_flag; + + Player_actor_request_main_index(game, mPlayer_INDEX_PUSH_SNOWBALL, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Push_snowball(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_request_push_snowball_c* req_push_snowball_p = &player->requested_main_index_data.push_snowball; + mPlayer_main_push_snowball_c* push_snowball_p = &player->main_data.push_snowball; + int anim1_idx; + int part_table_idx; + + push_snowball_p->label = req_push_snowball_p->label; + + if (req_push_snowball_p->wade_flag == FALSE) { + player->crash_snowball_for_wade = FALSE; + } + + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_PUSH_YUKI1, -5.0f, &anim1_idx, &part_table_idx); + + if (anim1_idx != mPlayer_ANIM_PUSH_YUKI1) { + part_table_idx = mPlayer_PART_TABLE_NET; + } + + Player_actor_InitAnimation_Base1(actorx, game, mPlayer_ANIM_PUSH_YUKI1, anim1_idx, 0.0f, 0.0f, 0.5f, -5.0f, + part_table_idx); + Player_actor_setup_main_Base(actorx, game); +} + +static int Player_actor_CulcAnimation_Push_snowball(ACTOR* actorx, f32* last_anim0_cur_frame) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame); +} + +static void Player_actor_SetEffect_Push_snowball(ACTOR* actorx, GAME* game, f32 l_target_frame, f32 r_target_frame) { + Player_actor_SetEffect_Run(actorx, game, l_target_frame, r_target_frame); +} + +static void Player_actor_SearchAnimation_Push_snowball(ACTOR* actorx, GAME* game, f32 frame) { + if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE) { + Player_actor_Set_FootMark_Base1(actorx, game, FALSE, FALSE); + Player_actor_SetEffect_Push_snowball(actorx, game, 1.0f, 9.0f); + } +} + +static void Player_actor_request_proc_index_fromPush_snowball(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (player->crash_snowball_for_wade) { + /* The snowball 'crashed' while wading, so revert to wait state */ + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } +} + +static void Player_actor_main_Push_snowball(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_CulcAnimation_Push_snowball(actorx, &last_anim0_cur_frame); + Player_actor_SearchAnimation_Push_snowball(actorx, game, last_anim0_cur_frame); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromPush_snowball(actorx, game); +} diff --git a/src/m_player_main_return_outdoor.c_inc b/src/m_player_main_return_outdoor.c_inc index b997613f..12c88e44 100644 --- a/src/m_player_main_return_outdoor.c_inc +++ b/src/m_player_main_return_outdoor.c_inc @@ -1,4 +1,4 @@ -static int Player_actor_request_main_return_outdoor_all(GAME* game, int prev_index, int priority, f32 time, f32 arg5) { +static int Player_actor_request_main_return_outdoor_all(GAME* game, int prev_index, f32 time, f32 arg5, int priority) { if (Player_actor_check_request_main_able(game, mPlayer_INDEX_RETURN_OUTDOOR, priority)) { PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); diff --git a/src/m_player_main_rotate_umbrella.c_inc b/src/m_player_main_rotate_umbrella.c_inc index e69de29b..1b2f4a5a 100644 --- a/src/m_player_main_rotate_umbrella.c_inc +++ b/src/m_player_main_rotate_umbrella.c_inc @@ -0,0 +1,71 @@ +static int Player_actor_request_main_rotate_umbrella_all(GAME* game, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_ROTATE_UMBRELLA, prio)) { + Player_actor_request_main_index(game, mPlayer_INDEX_ROTATE_UMBRELLA, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Rotate_umbrella(ACTOR* actorx, GAME* game) { + Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_UMB_ROT1, mPlayer_ANIM_UMB_ROT1, 1.0f, 1.0f, 1.0f, + -5.0f, cKF_FRAMECONTROL_STOP, mPlayer_PART_TABLE_NORMAL); + Player_actor_setup_main_Base(actorx, game); + eEC_CLIP->effect_make_proc(eEC_EFFECT_KASAMIZU, actorx->world.position, 2, actorx->shape_info.rotation.y, game, + RSV_NO, 0, 0); + Player_actor_sound_umbrella_rotate(actorx); +} + +static void Player_actor_Movement_Rotate_umbrella(ACTOR* actorx) { + Player_actor_Movement_Base_Braking_common(actorx, 0.32625f); +} + +static int Player_actor_CulcAnimation_Rotate_umbrella(ACTOR* actorx, f32* last_anim0_cur_frame) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame); +} + +static void Player_actor_ObjCheck_Rotate_umbrella(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Rotate_umbrella(ACTOR* actorx) { + Player_actor_BGcheck_common_type1(actorx); +} + +static void Player_actor_request_proc_index_fromRotate_umbrella(ACTOR* actorx, GAME* game, int end_flag) { + if (end_flag) { + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } else { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + + if (Player_actor_Check_AnimationFrame(fc0_p, 19.5f)) { + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_Set_status_for_bee(actorx, TRUE); + } else { + if (fc0_p->current_frame >= 20.0f && + Player_actor_CheckAndRequest_main_umbrella_all(game, mPlayer_REQUEST_PRIORITY_4) == FALSE) { + if (Player_actor_GetController_move_percentX() || Player_actor_GetController_move_percentY()) { + Player_actor_request_main_walk_all(game, NULL, -5.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } + } + } + } +} + +static void Player_actor_main_Rotate_umbrella(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + int end_flag; + + Player_actor_Movement_Rotate_umbrella(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + end_flag = Player_actor_CulcAnimation_Rotate_umbrella(actorx, &last_anim0_cur_frame); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_tex_anime_pattern(actorx); + Player_actor_ObjCheck_Rotate_umbrella(actorx, game); + Player_actor_BGcheck_Rotate_umbrella(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromRotate_umbrella(actorx, game, end_flag); +} diff --git a/src/m_player_main_stung_mosquito.c_inc b/src/m_player_main_stung_mosquito.c_inc index e69de29b..7e5b62f5 100644 --- a/src/m_player_main_stung_mosquito.c_inc +++ b/src/m_player_main_stung_mosquito.c_inc @@ -0,0 +1,92 @@ +static int Player_actor_request_main_stung_mosquito_all(GAME* game, u32 label, int prio) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + int main_index = player->now_main_index; + + if (mEv_CheckTitleDemo() > 0) { + return FALSE; + } + + if (Common_Get(clip).demo_clip != NULL) { + return FALSE; + } + + if (main_index == mPlayer_INDEX_RELAX_ROD) { + mPlayer_main_relax_rod_c* relax_rod_p = &player->main_data.relax_rod; + + relax_rod_p->mosquito_flag = TRUE; + return FALSE; + } + + if (Player_actor_Check_is_demo_mode(main_index)) { + return FALSE; + } + + if (mPlib_Get_status_for_bee() != TRUE) { + return FALSE; + } + + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_STUNG_MOSQUITO, prio)) { + mPlayer_request_stung_mosquito_c* req_stung_mosquito_p = &player->requested_main_index_data.stung_mosquito; + + req_stung_mosquito_p->label = label; + Player_actor_request_main_index(game, mPlayer_INDEX_STUNG_MOSQUITO, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Stung_mosquito(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_request_stung_mosquito_c* req_stung_mosquito_p = &player->requested_main_index_data.stung_mosquito; + mPlayer_main_stung_mosquito_c* stung_mosquito_p = &player->main_data.stung_mosquito; + int anim1_idx; + int part_table_idx; + + stung_mosquito_p->label = req_stung_mosquito_p->label; + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_MOSQUITO1, -5.0f, &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_MOSQUITO1, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, + cKF_FRAMECONTROL_STOP, mPlayer_PART_TABLE_PICK_UP); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_Movement_Stung_mosquito(ACTOR* actorx) { + Player_actor_Movement_Base_Braking_common(actorx, 0.32625f); +} + +static int Player_actor_CulcAnimation_Stung_mosquito(ACTOR* actorx) { + f32 dummy; + + return Player_actor_CulcAnimation_Base2(actorx, &dummy); +} + +static void Player_actor_ObjCheck_Stung_mosquito(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Stung_mosquito(ACTOR* actorx) { + Player_actor_BGcheck_common_type1(actorx); +} + +static void Player_actor_request_proc_index_fromStung_mosquito(ACTOR* actorx, GAME* game, int end_flag) { + if (end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_stung_mosquito_c* stung_mosquito_p = &player->main_data.stung_mosquito; + + Player_actor_request_main_notice_mosquito(game, stung_mosquito_p->label, mPlayer_REQUEST_PRIORITY_26); + } +} + +static void Player_actor_main_Stung_mosquito(ACTOR* actorx, GAME* game) { + int end_flag; + + Player_actor_Movement_Stung_mosquito(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + end_flag = Player_actor_CulcAnimation_Stung_mosquito(actorx); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_tex_anime_pattern(actorx); + Player_actor_ObjCheck_Stung_mosquito(actorx, game); + Player_actor_BGcheck_Stung_mosquito(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromStung_mosquito(actorx, game, end_flag); +} diff --git a/src/m_player_main_swing_fan.c_inc b/src/m_player_main_swing_fan.c_inc index e69de29b..953dd878 100644 --- a/src/m_player_main_swing_fan.c_inc +++ b/src/m_player_main_swing_fan.c_inc @@ -0,0 +1,106 @@ +static int Player_actor_request_main_swing_fan_all(GAME* game, int start_swing, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_SWING_FAN, prio)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_swing_fan_c* req_swing_fan_p = &player->requested_main_index_data.swing_fan; + + Player_actor_request_main_index(game, mPlayer_INDEX_SWING_FAN, prio); + req_swing_fan_p->start_swing = start_swing; + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Swing_fan(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf1_p = &player->keyframe1; + mPlayer_request_swing_fan_c* req_swing_fan_p = &player->requested_main_index_data.swing_fan; + f32 frame; + f32 morph_counter; + + if (req_swing_fan_p->start_swing) { + frame = 1.0f; + morph_counter = -5.0f; + } else { + frame = kf1_p->frame_control.current_frame; + morph_counter = 0.0f; + } + + Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_UTIWA_D1, mPlayer_ANIM_WAIT1, 1.0f, frame, 0.5f, + morph_counter, cKF_FRAMECONTROL_REPEAT, mPlayer_PART_TABLE_FAN); + Player_actor_setup_main_Base(actorx, game); + Player_actor_set_eye_pattern(actorx, 5); +} + +static void Player_actor_Movement_Swing_fan(ACTOR* actorx) { + Player_actor_Movement_Base_Braking_common(actorx, 0.32625f); +} + +static int Player_actor_CulcAnimation_Swing_fan(ACTOR* actorx, f32* last_anim0_cur_frame_p) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame_p); +} + +static void Player_actor_SetSound_Swing_fan(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + + if (Player_actor_Check_AnimationFrame(fc0_p, 1.5f)) { + Player_actor_sound_uchiwa(actorx); + } +} + +static void Player_actor_SearchAnimation_Swing_fan(ACTOR* actorx, f32 frame) { + if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE) { + Player_actor_SetSound_Swing_fan(actorx); + } +} + +static void Player_actor_ObjCheck_Swing_fan(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGCheck_Swing_fan(ACTOR* actorx) { + Player_actor_BGcheck_common_type1(actorx); +} + +static void Player_actor_request_proc_index_fromSwing_fan(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + + if (Player_actor_Check_AnimationFrame(fc0_p, 7.5f)) { + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_Set_status_for_bee(actorx, TRUE); + } else { + f32 cur_frame = fc0_p->current_frame; + + if (cur_frame >= 8.0f && + Player_actor_CheckAndRequest_main_fan_all(game, FALSE, FALSE, mPlayer_REQUEST_PRIORITY_4) == FALSE) { + if (Player_actor_GetController_move_percentX() || Player_actor_GetController_move_percentY()) { + Player_actor_request_main_walk_all(game, NULL, -5.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } + + if (cur_frame >= fc0_p->end_frame - 0.5f) { + f32 delay_frames = player->keyframe1.frame_control.current_frame; + + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_wait_all(game, -5.0f, delay_frames, 2, mPlayer_REQUEST_PRIORITY_1); + } + } + } +} + +static void Player_actor_main_Swing_fan(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + + Player_actor_Movement_Swing_fan(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_CulcAnimation_Swing_fan(actorx, &last_anim0_cur_frame); + Player_actor_SearchAnimation_Swing_fan(actorx, last_anim0_cur_frame); + Player_actor_recover_lean_angle(actorx); + Player_actor_ObjCheck_Swing_fan(actorx, game); + Player_actor_BGcheck_Swing_fan(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromSwing_fan(actorx, game); +} diff --git a/src/m_player_sound.c_inc b/src/m_player_sound.c_inc index ae8459eb..d56332df 100644 --- a/src/m_player_sound.c_inc +++ b/src/m_player_sound.c_inc @@ -258,16 +258,16 @@ static void Player_actor_sound_umbrella_rotate(ACTOR* actor) { Player_actor_set_sound_common2(actor, NA_SE_UMBRELLA_ROTATE); } -static u16 Player_actor_sound_Get_bgm_num_forCompletePayment() { +static u8 Player_actor_sound_Get_bgm_num_forCompletePayment(void) { switch (Common_Get(complete_payment_type)) { - case 1: + case mPlayer_COMPLETE_PAYMENT_TYPE_ARBEIT: return NA_SE_MONEY0; default: return NA_SE_MONEY1; } } -static u16 Player_actor_sound_Get_bgm_num_forDemoGetGoldenItem(int type) { +static u8 Player_actor_sound_Get_bgm_num_forDemoGetGoldenItem(int type) { switch (type) { case 0: return NA_SE_MONEY0; diff --git a/src/m_shop.c b/src/m_shop.c index b373110d..21cdb9f6 100644 --- a/src/m_shop.c +++ b/src/m_shop.c @@ -2376,25 +2376,27 @@ extern void mSP_SelectRandomItemToAGB() { xyz_t* wpos_p; mActor_name_t* start_p; mActor_name_t* item_p; - f32 x_pos; + Save_t* save; + xyz_t tpos; xyz_t wpos = { 0.0f, 0.0f, 0.0f }; int bx = 0; int bz = 0; mFI_BlockKind2BkNum(&bx, &bz, mRF_BLOCKKIND_ISLAND_LEFT); + save = &Common_Get(save.save); /* convert all unit island items to valid items */ for (i = 0; i < mISL_FG_BLOCK_X_NUM; i++) { - item_p = &Save_Get(island).fgblock[0][i].items[0][0]; + item_p = &save->island.fgblock[0][i].items[0][0]; mFI_BkNum2WposXZ(&wpos.x, &wpos.z, bx + i, bz); wpos.x += mFI_UT_WORLDSIZE_HALF_X_F; wpos.z += mFI_UT_WORLDSIZE_HALF_Z_F; - x_pos = wpos.x; + tpos.x = wpos.x; for (ut_z = 0; ut_z < UT_Z_NUM; ut_z++) { - wpos.x = x_pos; + wpos.x = tpos.x; for (ut_x = 0; ut_x < UT_X_NUM; ut_x++) { // this matches instructions but out of order and wrong registers @@ -2408,9 +2410,10 @@ extern void mSP_SelectRandomItemToAGB() { } /* add correctly placed signboard actor */ + save = Common_GetPointer(save.save); for (i = 0; i < mISL_FG_BLOCK_X_NUM; i++) { - start_p = &Save_Get(island).fgblock[0][i].items[0][0]; - item_p = &Save_Get(island).fgblock[0][i].items[0][0]; + start_p = &save->island.fgblock[0][i].items[0][0]; + item_p = &save->island.fgblock[0][i].items[0][0]; for (ut_z = 0; ut_z < UT_Z_NUM; ut_z++) { for (ut_x = 0; ut_x < UT_X_NUM; ut_x++) { @@ -2424,9 +2427,10 @@ extern void mSP_SelectRandomItemToAGB() { } /* remove incorrectly placed signboard actors */ + save = Common_GetPointer(save.save); for (i = 0; i < mISL_FG_BLOCK_X_NUM; i++) { - start_p = &Save_Get(island).fgblock[0][i].items[0][0]; - item_p = &Save_Get(island).fgblock[0][i].items[0][0]; + start_p = &save->island.fgblock[0][i].items[0][0]; + item_p = &save->island.fgblock[0][i].items[0][0]; for (ut_z = 0; ut_z < UT_Z_NUM; ut_z++) { for (ut_x = 0; ut_x < UT_X_NUM; ut_x++) { From 625c8af18829701d5521d149d9a05327c14a4857 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Sat, 7 Sep 2024 21:24:35 +0200 Subject: [PATCH 199/234] match m_player_main_air_axe --- include/ac_snowman.h | 4 +- src/m_player_main_air_axe.c_inc | 89 +++++++++++++++++++++++++++++++++ 2 files changed, 92 insertions(+), 1 deletion(-) diff --git a/include/ac_snowman.h b/include/ac_snowman.h index 58c6308e..34cfc033 100644 --- a/include/ac_snowman.h +++ b/include/ac_snowman.h @@ -24,7 +24,9 @@ typedef struct snowman_actor_s { int msg_info; int snowman_part; s_xyz head_vec; - u8 _1F2[0x1FC - 0x1F2]; + u8 _1F2[0x1F8 - 0x1F2]; + s16 unk_1F8; + u8 _1FA[0x2]; } SNOWMAN_ACTOR; extern ACTOR_PROFILE Snowman_Profile; diff --git a/src/m_player_main_air_axe.c_inc b/src/m_player_main_air_axe.c_inc index e69de29b..5c72f418 100644 --- a/src/m_player_main_air_axe.c_inc +++ b/src/m_player_main_air_axe.c_inc @@ -0,0 +1,89 @@ +static int Player_actor_request_main_air_axe_all(GAME* game, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_AIR_AXE, priority)) { + Player_actor_request_main_index(game, mPlayer_INDEX_AIR_AXE, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Air_axe(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_swing_axe_c* main_axe = &player->main_data.swing_axe; + mPlayer_request_swing_axe_c* req_axe = &player->requested_main_index_data.swing_axe; + + Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_AXE_SUKA1, mPlayer_ANIM_AXE_SUKA1, 1.0f, 1.0f, 0.5f, + -5.0f, 0, 0); + Player_actor_SetEffectStart_axe_common(actor, game); + + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_Movement_Air_axe(ACTOR* actor) { + Player_actor_Movement_Base_Braking_common(actor, 0.32625002f); +} + +static int Player_actor_CulcAnimation_Air_axe(ACTOR* actor, f32* frame_calc) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_SetEffect_Air_axe(ACTOR* actor, GAME* game) { + Player_actor_SetEffectStart_axe_common(actor, game); +} + +static void Player_actor_SetSound_Air_axe(ACTOR* actor) { + Player_actor_SetSound_AXE_FURI_Swing_axe(actor, 0); +} + +static void Player_actor_SearchAnimation_Air_axe(ACTOR* actor, GAME* game, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_SetEffect_Air_axe(actor, game); + Player_actor_SetSound_Air_axe(actor); + Player_actor_Set_FootMark_Base1(actor, game, FALSE, FALSE); + } +} + +static void Player_actor_ObjCheck_Air_axe(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Air_axe(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_request_proc_index_fromAir_axe(ACTOR* actor, GAME* game, int arg) { + if (arg != 0) { + Player_actor_SettleRequestMainIndexPriority(actor); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_4); + } else { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + cKF_SkeletonInfo_R_c* kf = &player->keyframe0; + + if (Player_actor_Check_AnimationFrame(&kf->frame_control, 35.0f)) { + Player_actor_SettleRequestMainIndexPriority(actor); + Player_actor_Set_status_for_bee(actor, TRUE); + } else if ((kf->frame_control.current_frame >= 36.0f) && + (!Player_actor_CheckAndRequest_main_axe_all(game, mPlayer_REQUEST_PRIORITY_4)) && + ((Player_actor_GetController_move_percentX()) || (Player_actor_GetController_move_percentY()))) { + Player_actor_request_main_walk_all(game, NULL, -5.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } + } +} + +static void Player_actor_main_Air_axe(ACTOR* actor, GAME* game) { + int arg; + f32 frame_calc; + + Player_actor_Movement_Air_axe(actor); + Player_actor_Reinput_force_position_angle(actor, game); + arg = Player_actor_CulcAnimation_Air_axe(actor, &frame_calc); + Player_actor_SearchAnimation_Air_axe(actor, game, frame_calc); + Player_actor_recover_lean_angle(actor); + Player_actor_set_tex_anime_pattern(actor); + Player_actor_ObjCheck_Air_axe(actor, game); + Player_actor_BGcheck_Air_axe(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromAir_axe(actor, game, arg); +} From aad7b9ba4e1c2a9bb02ebe9cc11159011086e3f2 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Sat, 7 Sep 2024 21:27:18 +0200 Subject: [PATCH 200/234] match m_player_main_reflect_axe --- src/m_player_main_reflect_axe.c_inc | 228 ++++++++++++++++++++++++++++ 1 file changed, 228 insertions(+) diff --git a/src/m_player_main_reflect_axe.c_inc b/src/m_player_main_reflect_axe.c_inc index e69de29b..2eb34bad 100644 --- a/src/m_player_main_reflect_axe.c_inc +++ b/src/m_player_main_reflect_axe.c_inc @@ -0,0 +1,228 @@ +static void Player_actor_request_main_reflect_axe_common(mPlayer_request_reflect_axe_c* req_axe, const xyz_t* pos, + mActor_name_t hit_item, u16 damage_no, ACTOR* hit_actor) { + req_axe->goal_pos = *pos; + req_axe->hit_item = hit_item; + req_axe->hit_actor = hit_actor; + req_axe->axe_damage_no = damage_no; +} + +static int Player_actor_request_main_reflect_axe_all(GAME* game, const xyz_t* pos, mActor_name_t hit_item, + u16 damage_no, ACTOR* hit_actor, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_REFLECT_AXE, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + Player_actor_request_main_reflect_axe_common(&player->requested_main_index_data.reflect_axe, pos, hit_item, + damage_no, hit_actor); + Player_actor_request_main_index(game, mPlayer_INDEX_REFLECT_AXE, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Reflect_axe_common(mPlayer_request_reflect_axe_c* req_axe, + mPlayer_main_reflect_axe_c* main_axe) { + main_axe->target_pos = req_axe->goal_pos; + main_axe->reflect_actor_p = req_axe->hit_actor; + main_axe->item = req_axe->hit_item; + main_axe->axe_damage_no = req_axe->axe_damage_no; +} + +static void Player_actor_setup_main_Reflect_axe(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_reflect_axe_c* main_axe = &player->main_data.reflect_axe; + mPlayer_request_reflect_axe_c* req_axe = &player->requested_main_index_data.reflect_axe; + + Player_actor_setup_main_Reflect_axe_common(req_axe, main_axe); + + Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_AXE_HANE1, mPlayer_ANIM_AXE_HANE1, 1.0f, 1.0f, 0.5f, + -5.0f, 0, 0); + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_settle_main_Reflect_axe(ACTOR* actor) { + actor->speed = 0.0f; + actor->world.angle.y = actor->shape_info.rotation.y; +} + +static int Player_actor_Movement_Reflect_axe_common(ACTOR* actor, mPlayer_main_reflect_axe_c* main_axe, int) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + f32 cur; + cur = player->keyframe0.frame_control.current_frame; + + Player_actor_Movement_axe_common(actor, &main_axe->target_pos); + + if (cur < 15.0f) { + actor->world.angle.y = actor->shape_info.rotation.y; + } +} + +static void Player_actor_Movement_Reflect_axe(ACTOR* actor, mPlayer_main_reflect_axe_c* main_axe, int flag) { + Player_actor_Movement_Reflect_axe_common(actor, main_axe, flag); +} + +static int Player_actor_CulcAnimation_Reflect_axe(ACTOR* actor, f32* frame_calc, int) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_SetEffectHit_Reflect_axe(ACTOR* actor, GAME* game, s16 arg2, int) { + Player_actor_SetEffectHit_axe_common(actor, game, arg2); +} + +static void Player_actor_SetEffect_Reflect_axe(ACTOR* actor, GAME* game, int arg) { + Player_actor_SetEffectHit_Reflect_axe(actor, game, 2, arg); + Player_actor_SetEffectStart_axe_common(actor, game); +} + +static void Player_actor_SetAngleSpeedF_Reflect_axe(ACTOR* actor, int) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 15.0f)) { + actor->speed = 4.8f; + actor->world.angle.y = actor->shape_info.rotation.y + 0x8000; + } +} + +static void Player_actor_SetOrderNPC_Reflect_axe(ACTOR* actor, mPlayer_main_reflect_axe_c* main_axe, int) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int rock; + if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 15.0f)) { + ACTOR* reflect_actor = main_axe->reflect_actor_p; + mActor_name_t item = main_axe->item; + + if (reflect_actor != NULL) { + switch (reflect_actor->id) { + case mAc_PROFILE_SNOWMAN: + ((SNOWMAN_ACTOR*)reflect_actor)->unk_1F8 |= 2; + return; + + case mAc_PROFILE_BALL: + ((BALL_ACTOR*)reflect_actor)->unk208 |= 8; + return; + + default: + if (Player_actor_CheckAndSet_UZAI_forNpc(reflect_actor)) { + return; + } + } + } + + rock = FALSE; + + if (IS_ITEM_STONE_TC(item)) { + rock = TRUE; + } + + if (rock) { + if (Player_actor_Search_STONE_TC(actor, &main_axe->target_pos)) { + return; + }; + } + } +} + +static void Player_actor_SetSound_Reflect_axe(ACTOR* actor, mPlayer_main_reflect_axe_c* main_axe, int) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_SetSound_AXE_FURI_axe_common(actor); + if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 15.0f)) { + ACTOR* reflect_actor = main_axe->reflect_actor_p; + + if (reflect_actor != NULL) { + Player_actor_set_viblation_Axe_soft(); + + switch (reflect_actor->id) { + case mAc_PROFILE_SNOWMAN: + return; + default: + Player_actor_sound_axe_ball_hit(actor); + break; + } + } else { + Player_actor_sound_AXE_HIT(actor, &main_axe->target_pos); + Player_actor_set_viblation_Axe_hard(); + } + } +} + +static void Player_actor_ChangeItemNo_Reflect_axe(ACTOR* actor, mPlayer_main_reflect_axe_c* main_axe, int) { + Player_actor_ChangeItemNo_axe_common(actor, main_axe->axe_damage_no); +} + +static void Player_actor_informed_insects_Reflect_axe(ACTOR* actor, mPlayer_main_reflect_axe_c* main_axe, int) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 15.0f)) { + if (Common_Get(clip).insect_clip != NULL && Common_Get(clip).insect_clip->set_pl_act_tim_proc != NULL) { + int ut_x; + int ut_z; + + mFI_Wpos2UtNum(&ut_x, &ut_z, main_axe->target_pos); + Common_Get(clip).insect_clip->set_pl_act_tim_proc(1, ut_x, ut_z); + } + } +} + +static void Player_actor_SearchAnimation_Reflect_axe(ACTOR* actor, GAME* game, mPlayer_main_reflect_axe_c* main_axe, + int flag, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_SetEffect_Reflect_axe(actor, game, flag); + Player_actor_SetAngleSpeedF_Reflect_axe(actor, flag); + Player_actor_SetOrderNPC_Reflect_axe(actor, main_axe, flag); + Player_actor_SetSound_Reflect_axe(actor, main_axe, flag); + Player_actor_Set_FootMark_Base1(actor, game, 0, 0); + Player_actor_ChangeItemNo_Reflect_axe(actor, main_axe, flag); + Player_actor_informed_insects_Reflect_axe(actor, main_axe, flag); + } +} + +static void Player_actor_ObjCheck_Reflect_axe(ACTOR* actor, GAME* game, int) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Reflect_axe(ACTOR* actor, int) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_request_proc_index_fromReflect_axe(ACTOR* actor, GAME* game, int arg, int arg2) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + mPlayer_main_reflect_axe_c* main_swing = &player->main_data.reflect_axe; + + if (arg2 == 0) { + if (arg != 0) { + Player_actor_SettleRequestMainIndexPriority(actor); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } else { + cKF_FrameControl_c* fc = &player->keyframe0.frame_control; + + if (Player_actor_Check_AnimationFrame(fc, 30.5f)) { + Player_actor_SettleRequestMainIndexPriority(actor); + Player_actor_Set_status_for_bee(actor, 1); + + } else if ((fc->current_frame >= 31.0f) && (!Player_actor_CheckAndRequest_main_axe_all(game, mPlayer_REQUEST_PRIORITY_4)) && + ((Player_actor_GetController_move_percentX()) || (Player_actor_GetController_move_percentY()))) { + Player_actor_request_main_walk_all(game, NULL, -5.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } + } + } +} + +static void Player_actor_main_Reflect_axe(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + f32 frame_calc; + mPlayer_main_reflect_axe_c* main_axe = &player->main_data.reflect_axe; + int arg; + + Player_actor_Movement_Reflect_axe(actor, main_axe, 0); + Player_actor_Reinput_force_position_angle(actor, game); + arg = Player_actor_CulcAnimation_Reflect_axe(actor, &frame_calc, 0); + Player_actor_SearchAnimation_Reflect_axe(actor, game, main_axe, 0, frame_calc); + Player_actor_recover_lean_angle(actor); + Player_actor_set_tex_anime_pattern(actor); + Player_actor_ObjCheck_Reflect_axe(actor, game, 0); + Player_actor_BGcheck_Reflect_axe(actor, 0); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromReflect_axe(actor, game, arg, 0); +} From 20c4628c78949c042ff72eaf88acb8fd93e12ac5 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Sat, 7 Sep 2024 21:30:07 +0200 Subject: [PATCH 201/234] match m_player_main_broken_axe --- src/m_player_main_broken_axe.c_inc | 214 +++++++++++++++++++++++++++++ 1 file changed, 214 insertions(+) diff --git a/src/m_player_main_broken_axe.c_inc b/src/m_player_main_broken_axe.c_inc index e69de29b..d023c061 100644 --- a/src/m_player_main_broken_axe.c_inc +++ b/src/m_player_main_broken_axe.c_inc @@ -0,0 +1,214 @@ +static int Player_actor_request_main_broken_axe_type_reflect(GAME* game, const xyz_t* pos, mActor_name_t hit_item, + ACTOR* hit_actor, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_BROKEN_AXE, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_reflect_axe_c* main_axe = &player->requested_main_index_data.reflect_axe; + + main_axe->break_flag = TRUE; + Player_actor_request_main_reflect_axe_common(main_axe, pos, hit_item, 0, hit_actor); + Player_actor_request_main_index(game, mPlayer_INDEX_BROKEN_AXE, priority); + + return TRUE; + } + + return FALSE; +} +static int Player_actor_request_main_broken_axe_type_swing(GAME* game, const xyz_t* pos, mActor_name_t hit_item, + int hit_ut_x, int hit_ut_z, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_BROKEN_AXE, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_swing_axe_c* main_axe = &player->requested_main_index_data.swing_axe; + + main_axe->break_flag = FALSE; + Player_actor_request_main_swing_axe_common(main_axe, pos, hit_item, 0, hit_ut_x, hit_ut_z); + Player_actor_request_main_index(game, mPlayer_INDEX_BROKEN_AXE, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Broken_axe(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_request_reflect_axe_c* req_ref; + mPlayer_main_broken_axe_c* main_axe = &player->main_data.broken_axe; + mPlayer_request_swing_axe_c* req_swing; + + int break_type; + + req_swing = &player->requested_main_index_data.swing_axe; + req_ref = &player->requested_main_index_data.reflect_axe; + break_type = req_ref->break_flag; + + main_axe->break_type = req_swing->break_flag; + main_axe->_28 = 0.0f; + main_axe->_2C = 0; + + if (break_type != mPlayer_AXE_BREAK_FROM_SWING) { + Player_actor_setup_main_Reflect_axe_common(req_swing, &main_axe->axe.reflect_axe); + } else { + Player_actor_setup_main_Swing_axe_common(req_ref, &main_axe->axe.swing_axe); + } + + Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_AXE_BREAK1, mPlayer_ANIM_AXE_BREAK1, 1.0f, 1.0f, 0.5f, + -5.0f, 0, 0); + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_settle_main_Broken_axe(ACTOR* actor) { + mBGMPsComp_delete_ps_demo(125, 0x168); + actor->speed = 0.0f; +} + +static void Player_actor_Movement_Broken_axe(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + f32 cur = player->keyframe0.frame_control.current_frame; + + if (player->animation0_idx == mPlayer_ANIM_AXE_BREAK1 && cur < 15.0f) { + mPlayer_main_broken_axe_c* main_axe = &player->main_data.broken_axe; + void* main_ref; + + switch (main_axe->break_type) { + default: + main_ref = &main_axe->axe.reflect_axe; + break; + case mPlayer_AXE_BREAK_FROM_SWING: + main_ref = &main_axe->axe.swing_axe; + break; + } + Player_actor_Movement_Reflect_axe_common(actor, main_ref, 1); + + } else { + add_calc_short_angle2(&actor->shape_info.rotation.y, 0, 1.0f - sqrtf(0.5), 2500, 50); + + actor->world.angle.y = actor->shape_info.rotation.y; + } +} + +static int Player_actor_CulcAnimation_Broken_axe(ACTOR* actor, f32* frame_calc) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_SetEffect_Broken_axe(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + xyz_t pos; + + if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 15.0f)) { + s16 rot = actor->world.angle.y; + + pos = actor->world.position; + + Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_SWING_AXE, pos, 2, actor->shape_info.rotation.y, game, + RSV_NO, actor->bg_collision_check.result.unit_attribute, 3); + } +} + +static void Player_actor_SearchAnimation_Broken_axe(ACTOR* actor, GAME* game, int flag, f32 frame) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (player->animation0_idx == mPlayer_ANIM_AXE_BREAK1) { + mPlayer_main_broken_axe_c* main_axe = &player->main_data.broken_axe; + + if (main_axe->break_type != mPlayer_AXE_BREAK_FROM_SWING) { + Player_actor_SearchAnimation_Reflect_axe(actor, game, &main_axe->axe.reflect_axe, 1, frame); + } else { + Player_actor_SetAngleSpeedF_Reflect_axe(actor, 1); + Player_actor_SearchAnimation_Swing_axe(actor, game, &main_axe->axe.swing_axe, 1, frame); + } + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_SetEffect_Broken_axe(actor, game); + } + if (flag != 0) { + Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_AXE_BREAKWAIT1, mPlayer_ANIM_AXE_BREAKWAIT1, + 1.0f, 1.0f, 0.5f, 0.0f, 0); + } + } +} + +static void Player_actor_ObjCheck_Broken_axe(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Broken_axe(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_Broken_axe_demo_ct(ACTOR* actor) { + rgba_t color; + + mDemo_Set_msg_num(0x3067); + mDemo_Set_talk_display_name(FALSE); + mDemo_Set_camera(CAMERA2_PROCESS_ITEM); + mDemo_Set_ListenAble(); + + color.r = 225; + color.g = 165; + color.b = 255; + color.a = 255; + + mDemo_Set_talk_window_color(&color); + mBGMPsComp_make_ps_demo(125, 0x168); +} + +static int Player_actor_MessageControl_Broken_axe(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_broken_axe_c* main_axe = &player->main_data.broken_axe; + + int* _2Cp = &main_axe->_2C; + + switch (main_axe->_2C) { + f32* _28p; + case 0: + _28p = &main_axe->_28; + if (*_28p < 80.0f) { + *_28p += 1.0f; + } else { + *_2Cp = 1; + } + break; + case 1: + if (!mDemo_Check(mDemo_TYPE_REPORT, actor)) { + mDemo_Request(mDemo_TYPE_REPORT, actor, Player_actor_Broken_axe_demo_ct); + } else { + *_2Cp = 2; + } + break; + + case 2: + if (!mDemo_Check(mDemo_TYPE_REPORT, actor)) { + *_2Cp = 3; + } + break; + + default: + return 1; + } + + return 0; +} + +static void Player_actor_request_proc_index_fromSwing_axe(ACTOR* actor, GAME* game, int arg) { + if (arg != 0) { + Player_actor_SettleRequestMainIndexPriority(actor); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } +} + +static void Player_actor_main_Broken_axe(ACTOR* actor, GAME* game) { + f32 frame_calc; + int arg; + int cnt; + + Player_actor_Movement_Broken_axe(actor); + Player_actor_Reinput_force_position_angle(actor, game); + arg = Player_actor_CulcAnimation_Broken_axe(actor, &frame_calc); + Player_actor_SearchAnimation_Broken_axe(actor, game, arg, frame_calc); + Player_actor_recover_lean_angle(actor); + Player_actor_set_tex_anime_pattern(actor); + Player_actor_ObjCheck_Broken_axe(actor, game); + Player_actor_BGcheck_Broken_axe(actor); + Player_actor_Item_main(actor, game); + cnt = Player_actor_MessageControl_Broken_axe(actor); + Player_actor_request_proc_index_fromBroken_axe(actor, game, cnt); +} From f563b93034a0227d430c732e1dc990a35c43d6d4 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Sat, 7 Sep 2024 22:35:08 +0200 Subject: [PATCH 202/234] match m_player_main_slip_net --- include/m_player.h | 9 ++- src/m_player_main_slip_net.c_inc | 122 ++++++++++++++++++++++++++++++ src/m_player_main_swing_axe.c_inc | 4 +- 3 files changed, 132 insertions(+), 3 deletions(-) diff --git a/include/m_player.h b/include/m_player.h index 79d26866..3e6fafae 100644 --- a/include/m_player.h +++ b/include/m_player.h @@ -1603,9 +1603,13 @@ typedef struct player_main_broken_axe_s { int _2C; } mPlayer_main_broken_axe_c; +typedef struct player_main_slip_net_s { + f32 _00; +} mPlayer_main_slip_net_c; + typedef struct player_main_relax_rod_s { int bee_flag; - int mosquito_flag + int mosquito_flag; } mPlayer_main_relax_rod_c; typedef struct player_main_dig_scoop_s { @@ -1773,7 +1777,7 @@ typedef struct player_main_knock_door_s { mPlayer_request_knock_door_c request_data; } mPlayer_main_knock_door_c; -typedef struct player_main_change_cloth_s { +typedef struct player_main_change_netcloth_s { ACTOR* talk_actor; int turn_flag; int prev_main_index; @@ -1878,6 +1882,7 @@ typedef union { mPlayer_main_reflect_axe_c reflect_axe; mPlayer_main_broken_axe_c broken_axe; mPlayer_main_swing_net_c swing_net; + mPlayer_main_slip_net_c slip_net; mPlayer_main_relax_rod_c relax_rod; mPlayer_main_dig_scoop_c dig_scoop; mPlayer_main_fill_scoop_c fill_scoop; diff --git a/src/m_player_main_slip_net.c_inc b/src/m_player_main_slip_net.c_inc index e69de29b..e015952f 100644 --- a/src/m_player_main_slip_net.c_inc +++ b/src/m_player_main_slip_net.c_inc @@ -0,0 +1,122 @@ +static int Player_actor_request_main_slip_net(GAME* game, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_SLIP_NET, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + s8 item = Player_actor_Get_ItemKind(&player->actor_class, player->now_main_index); + int net = FALSE; + + if (mPlayer_ITEM_IS_NET(item)) { + net = TRUE; + } + + if (net != FALSE) { + Player_actor_request_main_index(game, mPlayer_INDEX_SLIP_NET, priority); + + return TRUE; + } + } + + return FALSE; +} + +static void Player_actor_setup_main_Slip_net(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int anim_idx; + int part_table_idx; + + mPlayer_main_slip_net_c* main_net = &player->main_data.slip_net; + + main_net->_00 = 0.0f; + + Player_actor_SetupItem_Base1(actor, mPlayer_ANIM_KAMAE_SLIP_M1, -5.0f, &anim_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_KAMAE_SLIP_M1, mPlayer_ANIM_KAMAE_SLIP_M1, 1.0f, 1.0f, + 0.5f, -5.0f, 0); + Player_actor_setup_main_Base(actor, game); + Player_actor_sound_slip(actor); + + Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_TURN_ASIMOTO, actor->world.position, 2, + actor->world.angle.y, game, RSV_NO, + actor->bg_collision_check.result.unit_attribute, 1); +} + +static void Player_actor_Set_FootMark(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_SLIP_FOOTPRINT, player->right_foot_pos, 2, + actor->world.angle.y, game, RSV_NO, + actor->bg_collision_check.result.unit_attribute, 0); +} + +static void Player_actor_settle_main_Slip_net(ACTOR* actor, GAME* game) { + Player_actor_Set_FootMark(actor, game); +} + +static int Player_actor_Movement_Slip_net(ACTOR* actor) { + return Player_actor_Movement_Base_Braking_common(actor, 0.23925f); +} + +static int Player_actor_CulcAnimation_Slip_net(ACTOR* actor) { + f32 frame_calc; + + return Player_actor_CulcAnimation_Base2(actor, &frame_calc); +} + +static void Player_actor_ObjCheck_Slip_net(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Slip_net(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_SearchAnimation_Slip_net(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_slip_net_c* main_net = &player->main_data.slip_net; + int arg; + + main_net->_00 += 0.5f; + + if (main_net->_00 > 1000.0f) { + main_net->_00 = 1000.0f; + } + + arg = (int)main_net->_00; + + if (!(arg & 1)) { + Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_SLIP, actor->world.position, 2, actor->world.angle.y, + game, RSV_NO, actor->bg_collision_check.result.unit_attribute, + arg); + } +} + +static void Player_actor_request_proc_index_fromSlip_net(ACTOR* actor, GAME* game, int arg) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + s8 item = Player_actor_Get_ItemKind(actor, player->now_main_index); + + int net = FALSE; + + if (mPlayer_ITEM_IS_NET(item)) { + net = TRUE; + } + + if (net == FALSE) { + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_34); + } else if (!Player_actor_CheckController_forNet(game)) { + Player_actor_request_main_swing_net(game, mPlayer_REQUEST_PRIORITY_22); + } else if (arg != 0) { + Player_actor_request_main_ready_net(game, mPlayer_REQUEST_PRIORITY_13); + } +} + +static void Player_actor_main_Slip_net(ACTOR* actor, GAME* game) { + int arg = Player_actor_Movement_Slip_net(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_CulcAnimation_Slip_net(actor); + Player_actor_SearchAnimation_Slip_net(actor, game); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Slip_net(actor, game); + Player_actor_BGcheck_Slip_net(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromSlip_net(actor, game, arg); +} diff --git a/src/m_player_main_swing_axe.c_inc b/src/m_player_main_swing_axe.c_inc index 0a2b8ba3..3d3da91c 100644 --- a/src/m_player_main_swing_axe.c_inc +++ b/src/m_player_main_swing_axe.c_inc @@ -262,7 +262,9 @@ static void Player_actor_ObjCheck_Swing_axe(ACTOR* actor, GAME* game, int) { Player_actor_Excute_Corect_forStand(actor, game); } -static void Player_actor_BGcheck_Swing_axe(ACTOR* actor, int) { Player_actor_BGcheck_common_type1(actor); } +static void Player_actor_BGcheck_Swing_axe(ACTOR* actor, int) { + Player_actor_BGcheck_common_type1(actor); +} static void Player_actor_request_proc_index_fromSwing_axe(ACTOR* actor, GAME* game, int arg, int arg2) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; From 4debd92f360b860c1f22f73f4686b767b41a511c Mon Sep 17 00:00:00 2001 From: Prakxo Date: Sat, 7 Sep 2024 22:36:25 +0200 Subject: [PATCH 203/234] match m_player_main_ready_net --- src/m_player_main_ready_net.c_inc | 71 +++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/src/m_player_main_ready_net.c_inc b/src/m_player_main_ready_net.c_inc index e69de29b..98f03a2f 100644 --- a/src/m_player_main_ready_net.c_inc +++ b/src/m_player_main_ready_net.c_inc @@ -0,0 +1,71 @@ +static int Player_actor_request_main_ready_net(GAME* game, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_READY_NET, priority)) { + Player_actor_request_main_index(game, mPlayer_INDEX_READY_NET, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Ready_net(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int anim_idx; + int part_table_idx; + + Player_actor_SetupItem_Base1(actor, mPlayer_ANIM_KAMAE_WAIT_M1, -5.0f, &anim_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_KAMAE_WAIT_M1, mPlayer_ANIM_KAMAE_WAIT_M1, 1.0f, 1.0f, + 0.5f, -5.0f, 0); + Player_actor_setup_main_Base(actor, game); +} + +static int Player_actor_Movement_Ready_net(ACTOR* actor) { + return Player_actor_Movement_Base_Braking_common(actor, 0.23925f); +} + +static void Player_actor_CulcAnimation_Ready_net(ACTOR* actor) { + f32 frame_calc; + + Player_actor_CulcAnimation_Base2(actor, &frame_calc); +} + +static void Player_actor_ObjCheck_Ready_net(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Ready_net(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_request_proc_index_fromSlip_net(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (mPlib_check_player_warp_forEvent() != FALSE) { + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_34); + return; + } else { + s8 kind = player->item_kind; + s8 getkind = Player_actor_Get_ItemKind(actor, player->now_main_index); + if (kind != getkind) { + Player_actor_request_main_wait_all(game, 0.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_34); + return; + } + } + if (!Player_actor_CheckController_forNet(game)) { + Player_actor_request_main_swing_net(game, mPlayer_REQUEST_PRIORITY_22); + } else if (Player_actor_GetController_move_percentX() || Player_actor_GetController_move_percentY()) { + Player_actor_request_main_ready_walk_net(game, mPlayer_REQUEST_PRIORITY_12); + } +} + +static void Player_actor_main_Ready_net(ACTOR* actor, GAME* game) { + Player_actor_Movement_Ready_net(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_CulcAnimation_Ready_net(actor); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Ready_net(actor, game); + Player_actor_BGcheck_Ready_net(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromReady_net(actor, game); +} From 31c49e090eae152e976a8b3ac16a961627bc36ea Mon Sep 17 00:00:00 2001 From: Prakxo Date: Sun, 8 Sep 2024 19:50:43 +0200 Subject: [PATCH 204/234] match m_player_main_ready_walk_net --- src/m_player_main_fall.c_inc | 2 +- src/m_player_main_ready_walk_net.c_inc | 180 +++++++++++++++++++++++++ 2 files changed, 181 insertions(+), 1 deletion(-) diff --git a/src/m_player_main_fall.c_inc b/src/m_player_main_fall.c_inc index a6081a4d..76c0cebc 100644 --- a/src/m_player_main_fall.c_inc +++ b/src/m_player_main_fall.c_inc @@ -1,4 +1,4 @@ -static int Player_actor_request_main_fall_all(GAME* game, int flags, int prio, f32 speed) { +static int Player_actor_request_main_fall_all(GAME* game, f32 speed, int flags, int prio) { PLAYER_ACTOR* player; if (Player_actor_check_request_main_able(game, mPlayer_INDEX_FALL, prio)) { player = GET_PLAYER_ACTOR_GAME(game); diff --git a/src/m_player_main_ready_walk_net.c_inc b/src/m_player_main_ready_walk_net.c_inc index e69de29b..0d8f922c 100644 --- a/src/m_player_main_ready_walk_net.c_inc +++ b/src/m_player_main_ready_walk_net.c_inc @@ -0,0 +1,180 @@ +static int Player_actor_request_main_ready_walk_net(GAME* game, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_READY_WALK_NET, priority)) { + Player_actor_request_main_index(game, mPlayer_INDEX_READY_WALK_NET, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Ready_walk_net(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int anim_idx; + int part_table_idx; + + Player_actor_SetupItem_Base1(actor, mPlayer_ANIM_KAMAE_MOVE_M1, -5.0f, &anim_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_KAMAE_MOVE_M1, mPlayer_ANIM_KAMAE_MOVE_M1, 1.0f, 1.0f, + 0.5f, -5.0f, 0); + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_CulcAnimation_Ready_walk_net(ACTOR* actor, f32* frame_calc, f32 speed) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + f32 sp = (actor->speed * speed) / 1.8f; + + sp = sqrtf(sp); + sp = 0.6f * sp; + + if (actor->bg_collision_check.result.hit_wall_count == 2) { + sp = 0.22f; + } else { + if (actor->bg_collision_check.result.hit_wall_count == 1) { + f32 mod = sin_s(actor->bg_collision_check.wall_info[0].angleY - actor->world.angle.y); + + mod = ABS(mod); + + sp *= sqrtf(mod); + } + + if (sp < 0.22f) { + sp = 0.22f; + } + } + + player->keyframe0.frame_control.speed = sp; + player->keyframe1.frame_control.speed = sp; + Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_SearchAnimation_Ready_walk_net(ACTOR* actor, GAME* game, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_Set_FootMark_Base1(actor, game, FALSE, FALSE); + Player_actor_SetEffect_Walk(actor, game, 6.0f, 9.0f); + } +} + +static void Player_actor_Movement_Ready_walk_net(ACTOR* actor, GAME* game, f32* frame) { + f32 movePR = Player_actor_GetController_move_percentR(); + s16 angle = Player_actor_Get_ControllerAngle(game); + f32 mod; + s16 target = actor->world.angle.y; + f32 over_norm; + f32 cos; + f32 old_speed; + int angle2; + s16 angle3; + + if (movePR >= 1.0f) { + mod = 0.5f; + } else { + if (movePR <= 0.05f) { + mod = 0.1f; + } else { + mod = 0.1f + (0.5157895f * (movePR - 0.05f)); + } + } + + add_calc_short_angle2(&target, angle, 1.0f - sqrtf(1.0f - mod), 2500, 50); + + actor->world.angle.y = actor->shape_info.rotation.y = target; + + over_norm = Player_actor_Culc_over_speed_normalize_NoneZero(actor, &actor->world.position); + movePR = (1.8f * movePR) / over_norm; + + angle3 = Player_actor_Get_ControllerAngle(game) - actor->world.angle.y; + + angle2 = ABS(angle3); + + if (angle2 > 0x8000) { + angle2 = 0x10000 - angle2; + } + + cos = cos_s(angle2); + + if (cos <= 0.0f) { + movePR = 0.0f; + } else { + movePR *= cos; + } + + old_speed = actor->speed; + if (old_speed != movePR) { + if (old_speed < movePR) { + old_speed += 0.60899997f; + if (old_speed > movePR) { + old_speed = movePR; + } + } else if (old_speed > movePR) { + old_speed -= 0.32625002f; + if (old_speed < movePR) { + old_speed = movePR; + } + } + actor->speed = old_speed; + } + + *frame = over_norm; + Player_actor_Movement_Base(actor); +} + +static void Player_actor_ObjCheck_Ready_walk_net(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Ready_walk_net(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_request_proc_index_fromReady_walk_net(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + f32 speed; + f32 percent_x; + f32 percent_y; + s8 kind; + s8 getkind; + + if (mPlib_check_player_warp_forEvent()) { + Player_actor_request_main_walk_all(game, NULL, -5.0f, 0, mPlayer_REQUEST_PRIORITY_22); + + } else { + if (!actor->bg_collision_check.result.on_ground) { + Player_actor_request_main_fall_all(game, -5.0f, 1, mPlayer_REQUEST_PRIORITY_1); + } + + if (!Player_actor_CheckController_forNet(game) != 0) { + Player_actor_request_main_swing_net(game, mPlayer_REQUEST_PRIORITY_22); + } + + speed = actor->speed; + + percent_x = Player_actor_GetController_move_percentX(); + percent_y = Player_actor_GetController_move_percentY(); + + if (speed == 0.0f && percent_x == 0.0f && percent_y == 0.0f) { + Player_actor_request_main_ready_net(game, mPlayer_REQUEST_PRIORITY_13); + } + + kind = player->item_kind; + getkind = Player_actor_Get_ItemKind(actor, player->now_main_index); + if (kind != getkind) { + Player_actor_request_main_walk_all(game, NULL, 0.0f, 0, mPlayer_REQUEST_PRIORITY_22); + } + } +} + +static void Player_actor_main_Ready_walk_net(ACTOR* actor, GAME* game) { + f32 frame; + f32 calc_frame; + + Player_actor_Movement_Ready_walk_net(actor, game, &frame); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_CulcAnimation_Ready_walk_net(actor, &calc_frame, frame); + Player_actor_SearchAnimation_Ready_walk_net(actor, game, calc_frame); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Ready_walk_net(actor, game); + Player_actor_BGcheck_Ready_walk_net(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromReady_walk_net(actor, game); +} From 0eab430cde8686c8b427df9927cf829bce5e5009 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Mon, 9 Sep 2024 01:04:00 -0400 Subject: [PATCH 205/234] Implement more player states --- include/audio.h | 10 +- include/jaudio_NES/audiostruct.h | 2 +- include/jaudio_NES/radio.h | 12 +- include/m_player.h | 86 +++++-- include/m_player_lib.h | 1 + include/m_private_h.h | 1 + src/audio.c | 6 +- src/m_player.c | 5 +- src/m_player_common.c_inc | 4 +- src/m_player_main_broken_axe.c_inc | 16 +- ...player_main_demo_get_golden_axe_wait.c_inc | 61 +++++ src/m_player_main_demo_get_golden_item.c_inc | 203 +++++++++++++++++ src/m_player_main_demo_get_golden_item2.c_inc | 15 ++ src/m_player_main_demo_getoff_boat.c_inc | 127 +++++++++++ ...player_main_demo_getoff_boat_standup.c_inc | 118 ++++++++++ ..._player_main_demo_geton_boat_sitdown.c_inc | 89 ++++++++ src/m_player_main_demo_geton_boat_wade.c_inc | 87 ++++++++ src/m_player_main_demo_geton_boat_wait.c_inc | 55 +++++ src/m_player_main_radio_exercise.c_inc | 209 ++++++++++++++++++ src/m_player_main_reflect_axe.c_inc | 35 +-- src/m_player_main_swing_axe.c_inc | 34 +-- src/m_player_main_switch_on_lighthouse.c_inc | 80 +++++++ src/m_player_main_wade_snowball.c_inc | 13 +- src/static/jaudio_NES/game/kappa.c | 16 +- src/static/jaudio_NES/game/radio.c | 24 +- src/static/jaudio_NES/game/staff.c | 10 +- src/static/jaudio_NES/internal/track.c | 8 +- 27 files changed, 1215 insertions(+), 112 deletions(-) diff --git a/include/audio.h b/include/audio.h index aa417578..34c4afba 100644 --- a/include/audio.h +++ b/include/audio.h @@ -25,6 +25,12 @@ typedef struct audio_staffroll_info_s { /* 0x12 */ s8 beat; } StaffRollInfo_c; +typedef struct radio_s { + /* 0x000 */ s8 unk0; + /* 0x004 */ f32 unk4; + /* 0x008 */ u16 tempo; +} Radio_c; + enum { STAFFROLL_PART_START, STAFFROLL_PART_INTRO, @@ -112,7 +118,7 @@ extern void sAdos_KishaStatusTrg(u8 state); extern void sAdos_KishaStatusLevel(f32 speed, u32 ongenNum1, u16 angle1, f32 distance1, u32 ongenNum2, u16 angle2, f32 distance2); -extern void sAdos_GetRadioCounter(void* p); +extern int sAdos_GetRadioCounter(Radio_c* radio); extern void sAdos_GetKappaCounter(void* p); extern void sAdos_GetStaffRollInfo(StaffRollInfo_c* info); @@ -141,7 +147,7 @@ extern void sAdo_FurnitureInstPos(u32 id, const xyz_t* pos); extern void sAdo_Set_ongenpos_refuse_fg(int state); extern int sAdo_GameframeEnd_Check(); -extern int sAdo_GetSoundFrameCounter(); +extern u32 sAdo_GetSoundFrameCounter(); extern int sAdo_CheckOnPlussBridge(const xyz_t* pos, u32 atr); extern void sAdo_RegistPlussBridge(const xyz_t* pos); diff --git a/include/jaudio_NES/audiostruct.h b/include/jaudio_NES/audiostruct.h index 96000601..feb2e5da 100644 --- a/include/jaudio_NES/audiostruct.h +++ b/include/jaudio_NES/audiostruct.h @@ -537,7 +537,7 @@ struct group_ { /* 0x010 */ u16 delay; /* 0x012 */ u16 fade_timer; /* 0x014 */ u16 stored_fade_timer; - /* 0x016 */ u16 unk016; + /* 0x016 */ u16 counter; /* 0x018 */ u8* seq_data; /* 0x01C */ f32 fade_volume; /* 0x020 */ f32 fade_velocity; diff --git a/include/jaudio_NES/radio.h b/include/jaudio_NES/radio.h index 05c15392..0599d9c8 100644 --- a/include/jaudio_NES/radio.h +++ b/include/jaudio_NES/radio.h @@ -2,22 +2,16 @@ #define RADIO_H #include "types.h" - -typedef struct radio_ { - /* 0x000 */ s8 unk0; - /* 0x004 */ f32 unk4; - /* 0x008 */ u16 tempo; -} radio; +#include "audio.h" #ifdef __cplusplus extern "C" { #endif -extern s16 Na_GetRadioCounter(radio* radio); +extern int Na_GetRadioCounter(Radio_c* radio); #ifdef __cplusplus } #endif - -#endif \ No newline at end of file +#endif diff --git a/include/m_player.h b/include/m_player.h index 3e6fafae..969f7f58 100644 --- a/include/m_player.h +++ b/include/m_player.h @@ -23,7 +23,7 @@ extern "C" { #define mPlayer_SUNBURN_MAX_RANK 8 -#define mPlayer_RADIO_EXCERCISE_COMMAND_RING_BUFFER_SIZE 8 +#define mPlayer_RADIO_EXERCISE_COMMAND_RING_BUFFER_SIZE 8 typedef struct player_actor_s PLAYER_ACTOR; @@ -743,6 +743,38 @@ enum { mPlayer_AXE_BREAK_FROM_NUM }; +enum { + mPlayer_RADIO_EXERCISE_CMD0, + mPlayer_RADIO_EXERCISE_CMD1, + mPlayer_RADIO_EXERCISE_CMD2, + mPlayer_RADIO_EXERCISE_CMD3, + mPlayer_RADIO_EXERCISE_CMD4, + mPlayer_RADIO_EXERCISE_CMD5, + mPlayer_RADIO_EXERCISE_CMD6, + mPlayer_RADIO_EXERCISE_CMD7, + mPlayer_RADIO_EXERCISE_CMD8, + mPlayer_RADIO_EXERCISE_CMD9, + mPlayer_RADIO_EXERCISE_CMD10, + mPlayer_RADIO_EXERCISE_CMD11, + mPlayer_RADIO_EXERCISE_CMD12, + mPlayer_RADIO_EXERCISE_CMD13, + mPlayer_RADIO_EXERCISE_CMD14, + mPlayer_RADIO_EXERCISE_CMD15, + mPlayer_RADIO_EXERCISE_CMD16, + mPlayer_RADIO_EXERCISE_CMD17, + + mPlayer_RADIO_EXERCISE_CMD_NUM +}; + +enum { + mPlayer_GOLDEN_ITEM_TYPE_AXE, + mPlayer_GOLDEN_ITEM_TYPE_NET, + mPlayer_GOLDEN_ITEM_TYPE_ROD, + mPlayer_GOLDEN_ITEM_TYPE_SHOVEL, + + mPlayer_GOLDEN_ITEM_TYPE_NUM +}; + #define mPlayer_SETUP_TEXTURE_ANIMATION_NONE (0 << 0) /* Where is (1 << 0)? */ #define mPlayer_SETUP_TEXTURE_ANIMATION_EYE (1 << 1) @@ -921,7 +953,7 @@ typedef struct player_request_demo_getoff_boat_standup_s { } mPlayer_request_demo_getoff_boat_standup_c; typedef struct player_request_demo_get_golden_item_s { - u32 label; + int type; } mPlayer_request_demo_get_golden_item_c; typedef struct player_request_walk_s { @@ -1200,8 +1232,8 @@ typedef struct player_request_swing_fan_s { } mPlayer_request_swing_fan_c; typedef struct player_request_radio_exercise_s { - int anim_idx; - f32 morph_speed; + int cmd; + f32 speed; } mPlayer_request_radio_exercise_c; typedef struct player_request_demo_geton_boat_wade_s { @@ -1575,10 +1607,14 @@ typedef struct player_main_pickup_exchange_s { int submenu_flag; } mPlayer_main_pickup_exchange_c; -typedef struct player_main_swing_axe_s { +typedef struct player_main_axe_common_s { /* 0x00 */ xyz_t target_pos; /* 0x0C */ mActor_name_t item; /* 0x0E */ u16 axe_damage_no; +} mPlayer_main_axe_common_c; + +typedef struct player_main_swing_axe_s { + /* 0x00 */ mPlayer_main_axe_common_c axe_common; /* 0x10 */ int tree_ut_x; /* 0x14 */ int tree_ut_z; /* 0x18 */ int bee_flag; @@ -1587,17 +1623,17 @@ typedef struct player_main_swing_axe_s { } mPlayer_main_swing_axe_c; typedef struct player_main_reflect_axe_s { - xyz_t target_pos; - mActor_name_t item; - u16 axe_damage_no; - ACTOR* reflect_actor_p; + /* 0x00 */ mPlayer_main_axe_common_c axe_common; + /* 0x10 */ ACTOR* reflect_actor_p; } mPlayer_main_reflect_axe_c; +typedef union player_main_axe_u { + mPlayer_main_swing_axe_c swing_axe; + mPlayer_main_reflect_axe_c reflect_axe; +} mPlayer_main_axe_u; + typedef struct player_main_broken_axe_s { - union { - mPlayer_main_swing_axe_c swing_axe; - mPlayer_main_reflect_axe_c reflect_axe; - } axe; + mPlayer_main_axe_u axe; int break_type; /* mPlayer_AXE_BREAK_FROM_* */ f32 _28; int _2C; @@ -1809,6 +1845,13 @@ typedef struct player_main_notice_mosquito_s { int msg_mode; } mPlayer_main_notice_mosquito_c; +typedef struct player_main_radio_exercise_s { + int cmd; + int _04; + int _08; + int _0C; +} mPlayer_main_radio_exercise_c; + typedef struct player_main_wade_snowball_s { int dir; xyz_t start_pos; @@ -1835,6 +1878,16 @@ typedef struct player_main_demo_getoff_boat_standup_s { s16 angle_z; } mPlayer_main_demo_getoff_boat_standup_c; +typedef struct player_main_demo_get_golden_item_s { + f32 timer; + int msg_mode; + int type; +} mPlayer_main_demo_get_golden_item_c; + +typedef struct player_main_demo_get_golden_axe_wait_s { + f32 timer; +} mPlayer_main_demo_get_golden_axe_wait_c; + typedef struct player_main_uki_s { xyz_t cast_goal_point; } mPlayer_main_uki_c; @@ -1914,10 +1967,13 @@ typedef union { mPlayer_main_fail_emu_c fail_emu; mPlayer_main_stung_mosquito_c stung_mosquito; mPlayer_main_notice_mosquito_c notice_mosquito; + mPlayer_main_radio_exercise_c radio_exercise; mPlayer_main_wade_snowball_c wade_snowball; mPlayer_main_demo_geton_boat_wade_c demo_geton_boat_wade; mPlayer_main_demo_geton_boat_sitdown_c demo_geton_boat_sitdown; mPlayer_main_demo_getoff_boat_standup_c demo_getoff_boat_standup; + mPlayer_main_demo_get_golden_item_c demo_get_golden_item; + mPlayer_main_demo_get_golden_axe_wait_c demo_get_golden_axe_wait; mPlayer_main_uki_c uki; mPlayer_main_putaway_uki_c putaway_uki; mPlayer_main_balloon_c balloon; @@ -2080,12 +2136,12 @@ struct player_actor_s { /* 0x1220 */ u32 able_force_speak_label; /* 0x1224 */ int player_sunburn_rankup; /* 0x1228 */ int player_sunburn_rankdown; - /* 0x122C */ s8 radio_exercise_command_ring_buffer[mPlayer_RADIO_EXCERCISE_COMMAND_RING_BUFFER_SIZE]; + /* 0x122C */ s8 radio_exercise_command_ring_buffer[mPlayer_RADIO_EXERCISE_COMMAND_RING_BUFFER_SIZE]; /* 0x1234 */ s8 radio_exercise_ring_buffer_cmd_timer; /* 0x1238 */ int radio_exercise_command_ring_buffer_index; /* 0x123C */ int radio_exercise_continue_cmd_idx; /* 0x1240 */ f32 radio_exercise_cmd_timer; - /* 0x1244 */ int old_sound_frame_counter; + /* 0x1244 */ u32 old_sound_frame_counter; /* 0x1248 */ s16 boat_angleZ; /* 0x124C */ int change_color_request; /* 0x1250 */ int change_color_flag; diff --git a/include/m_player_lib.h b/include/m_player_lib.h index eba95f2e..5140f70d 100644 --- a/include/m_player_lib.h +++ b/include/m_player_lib.h @@ -113,6 +113,7 @@ extern int mPlib_strength_request_main_wade_snowball_priority(GAME* game); extern void mPlib_change_player_face(GAME* game); extern void mPlib_change_player_cloth_info(mPr_cloth_c* cloth_p, mActor_name_t cloth_item); extern int mPlib_Get_status_for_bee(void); +extern int mPlib_request_main_demo_get_golden_item2_type1(GAME* game, int golden_item_type); extern mPlayer_change_data_from_submenu_c* mPlib_Get_change_data_from_submenu_p(); diff --git a/include/m_private_h.h b/include/m_private_h.h index cb355552..5a48a930 100644 --- a/include/m_private_h.h +++ b/include/m_private_h.h @@ -2,6 +2,7 @@ #define M_PRIVATE_H_H #include "types.h" +#include "m_actor_type.h" #ifdef __cplusplus extern "C" { diff --git a/src/audio.c b/src/audio.c index 07d1a928..615f901c 100644 --- a/src/audio.c +++ b/src/audio.c @@ -297,8 +297,8 @@ extern void sAdos_KishaStatusLevel(f32 speed, u32 ongenNum1, u16 angle1, f32 dis Na_KishaStatusLevel(speed, ongenNum1, angle1, distance1, ongenNum2, angle2, distance2); } -extern void sAdos_GetRadioCounter(void* p) { - Na_GetRadioCounter(p); +extern int sAdos_GetRadioCounter(Radio_c* radio) { + return Na_GetRadioCounter(radio); } extern void sAdos_GetKappaCounter(void* p) { @@ -470,7 +470,7 @@ extern int sAdo_GameframeEnd_Check() { return S_ongenpos_refuse_fg; } -extern int sAdo_GetSoundFrameCounter() { +extern u32 sAdo_GetSoundFrameCounter() { return Na_GetSoundFrameCounter(); } diff --git a/src/m_player.c b/src/m_player.c index 37ee6be8..63358d2e 100644 --- a/src/m_player.c +++ b/src/m_player.c @@ -15,6 +15,9 @@ #include "ac_sign.h" #include "m_msg.h" #include "m_choice.h" +#include "ac_ball.h" +#include "ac_snowman.h" +#include "ac_boat_demo.h" /* Static function declarations, add as needed for intellisense */ static int Player_actor_check_request_main_able(GAME* game, int request_main_index, int priority); @@ -337,7 +340,7 @@ static int Player_actor_request_main_shock_all(GAME*, f32, s16, s8, int, int); static int Player_actor_request_main_change_cloth_forNPC(GAME*, mActor_name_t, u16, int); static int Player_actor_request_main_push_snowball_all(GAME*, u32, int, int); static int Player_actor_request_main_stung_mosquito_all(GAME*, u32, int); -static int Player_actor_request_main_switch_on_lighthouse_all(GAME*, const xyz_t*, int, int); +static int Player_actor_request_main_switch_on_lighthouse_all(GAME*, const xyz_t*, s16, int); static int Player_actor_request_main_demo_geton_boat_all(GAME*, const xyz_t*, s16, int); static int Player_actor_request_main_demo_getoff_boat_standup_all(GAME*, const xyz_t*, s16, int); static int Player_actor_request_main_demo_get_golden_item2_all(GAME*, int, int); diff --git a/src/m_player_common.c_inc b/src/m_player_common.c_inc index 0769ec05..ede96aeb 100644 --- a/src/m_player_common.c_inc +++ b/src/m_player_common.c_inc @@ -4566,9 +4566,9 @@ static int Player_actor_Check_HitAxe(ACTOR* actorx, xyz_t* axe_pos_p) { } if (swing_axe_p != NULL) { - pos_p = &swing_axe_p->target_pos; + pos_p = &swing_axe_p->axe_common.target_pos; } else { - pos_p = &reflect_axe_p->target_pos; + pos_p = &reflect_axe_p->axe_common.target_pos; } if (pos_p != NULL && Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 15.0f) != FALSE) { diff --git a/src/m_player_main_broken_axe.c_inc b/src/m_player_main_broken_axe.c_inc index d023c061..4adfd26f 100644 --- a/src/m_player_main_broken_axe.c_inc +++ b/src/m_player_main_broken_axe.c_inc @@ -56,7 +56,7 @@ static void Player_actor_setup_main_Broken_axe(ACTOR* actor, GAME* game) { Player_actor_setup_main_Base(actor, game); } -static void Player_actor_settle_main_Broken_axe(ACTOR* actor) { +static void Player_actor_settle_main_Broken_axe(ACTOR* actor, GAME* game) { mBGMPsComp_delete_ps_demo(125, 0x168); actor->speed = 0.0f; } @@ -67,21 +67,19 @@ static void Player_actor_Movement_Broken_axe(ACTOR* actor) { if (player->animation0_idx == mPlayer_ANIM_AXE_BREAK1 && cur < 15.0f) { mPlayer_main_broken_axe_c* main_axe = &player->main_data.broken_axe; - void* main_ref; + mPlayer_main_axe_common_c* axe_data_p; switch (main_axe->break_type) { default: - main_ref = &main_axe->axe.reflect_axe; + axe_data_p = &main_axe->axe.reflect_axe.axe_common; break; case mPlayer_AXE_BREAK_FROM_SWING: - main_ref = &main_axe->axe.swing_axe; + axe_data_p = &main_axe->axe.swing_axe.axe_common; break; } - Player_actor_Movement_Reflect_axe_common(actor, main_ref, 1); - + Player_actor_Movement_Reflect_axe_common(actor, axe_data_p, mPlayer_REQUEST_PRIORITY_1); } else { add_calc_short_angle2(&actor->shape_info.rotation.y, 0, 1.0f - sqrtf(0.5), 2500, 50); - actor->world.angle.y = actor->shape_info.rotation.y; } } @@ -130,8 +128,8 @@ static void Player_actor_ObjCheck_Broken_axe(ACTOR* actor, GAME* game) { Player_actor_Excute_Corect_forStand(actor, game); } -static void Player_actor_BGcheck_Broken_axe(ACTOR* actor) { - Player_actor_BGcheck_common_type1(actor); +static void Player_actor_BGcheck_Broken_axe(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); } static void Player_actor_Broken_axe_demo_ct(ACTOR* actor) { diff --git a/src/m_player_main_demo_get_golden_axe_wait.c_inc b/src/m_player_main_demo_get_golden_axe_wait.c_inc index e69de29b..13d2fa4b 100644 --- a/src/m_player_main_demo_get_golden_axe_wait.c_inc +++ b/src/m_player_main_demo_get_golden_axe_wait.c_inc @@ -0,0 +1,61 @@ +static int Player_actor_request_main_demo_get_golden_axe_wait_all(GAME* game, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_DEMO_GET_GOLDEN_AXE_WAIT, prio)) { + Player_actor_request_main_index(game, mPlayer_INDEX_DEMO_GET_GOLDEN_AXE_WAIT, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Demo_get_golden_axe_wait(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_demo_get_golden_axe_wait_c* demo_get_golden_axe_wait_p; + int anim1_idx; + int part_table_idx; + + demo_get_golden_axe_wait_p = &player->main_data.demo_get_golden_axe_wait; + demo_get_golden_axe_wait_p->timer = 0.0f; + + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_WAIT1, -5.0f, &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actorx, game, mPlayer_ANIM_WAIT1, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, + part_table_idx); + Player_actor_setup_main_Base(actorx, game); +} + +static int Player_actor_CulcAnimation_Demo_get_golden_axe_wait(ACTOR* actorx) { + return Player_actor_CulcAnimation_Base(actorx); +} + +static void Player_actor_ObjCheck_Demo_get_golden_axe_wait(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Demo_get_golden_axe_wait(ACTOR* actorx) { + Player_actor_BGcheck_common_type1(actorx); +} + +static void Player_actor_request_proc_index_fromDemo_get_golden_axe_wait(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_demo_get_golden_axe_wait_c* demo_get_golden_axe_wait_p; + f32* timer_p; + + demo_get_golden_axe_wait_p = &player->main_data.demo_get_golden_axe_wait; + timer_p = &demo_get_golden_axe_wait_p->timer; + + if (*timer_p < 320.0f) { + (*timer_p) += 1.0f; + } else { + mPlib_request_main_demo_get_golden_item2_type1(game, mPlayer_GOLDEN_ITEM_TYPE_AXE); + } +} + +static void Player_actor_main_Demo_get_golden_axe_wait(ACTOR* actorx, GAME* game) { + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_CulcAnimation_Demo_get_golden_axe_wait(actorx); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Demo_get_golden_axe_wait(actorx, game); + Player_actor_BGcheck_Demo_get_golden_axe_wait(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromDemo_get_golden_axe_wait(actorx, game); +} diff --git a/src/m_player_main_demo_get_golden_item.c_inc b/src/m_player_main_demo_get_golden_item.c_inc index e69de29b..e2748e8b 100644 --- a/src/m_player_main_demo_get_golden_item.c_inc +++ b/src/m_player_main_demo_get_golden_item.c_inc @@ -0,0 +1,203 @@ +static int Player_actor_request_main_demo_get_golden_item_common(GAME* game, int main_index, int type, int prio) { + if (Player_actor_check_request_main_able(game, main_index, prio)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_demo_get_golden_item_c* req_demo_get_golden_item_p = + &player->requested_main_index_data.demo_get_golden_item; + + Player_actor_request_main_index(game, main_index, prio); + req_demo_get_golden_item_p->type = type; + return TRUE; + } + + return FALSE; +} + +static int Player_actor_request_main_demo_get_golden_item_all(GAME* game, int type, int prio) { + return Player_actor_request_main_demo_get_golden_item_common(game, mPlayer_INDEX_DEMO_GET_GOLDEN_ITEM, type, prio); +} + +static int Player_actor_request_main_demo_get_golden_item_from_submenu(ACTOR* actorx, GAME* game) { + return Player_actor_request_main_demo_get_golden_item_all(game, mPlayer_GOLDEN_ITEM_TYPE_SHOVEL, + mPlayer_REQUEST_PRIORITY_31); +} + +static void Player_actor_setup_main_Demo_get_golden_item(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_request_demo_get_golden_item_c* req_demo_get_golden_item_p; + mPlayer_main_demo_get_golden_item_c* demo_get_golden_item_p; + s16 item_kind; + int anim0_idx; + int anim1_idx; + int part_table_idx; + int dummy; + int type; + + item_kind = Player_actor_Get_ItemKind(actorx, player->requested_main_index); + anim0_idx = mPlayer_ANIM_YATTA1; + part_table_idx = mPlayer_PART_TABLE_NET; + req_demo_get_golden_item_p = &player->requested_main_index_data.demo_get_golden_item; + demo_get_golden_item_p = &player->main_data.demo_get_golden_item; + type = player->requested_main_index_data.demo_get_golden_item.type; + + demo_get_golden_item_p->timer = 0.0f; + demo_get_golden_item_p->msg_mode = 0; + demo_get_golden_item_p->type = type; + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_YATTA1, -5.0f, &anim1_idx, &dummy); + + if (mPlayer_ITEM_IS_BALLOON(item_kind) != FALSE) { + anim0_idx = mPlayer_ANIM_YATTA3; + anim1_idx = mPlayer_ANIM_YATTA3; + part_table_idx = mPlayer_PART_TABLE_NORMAL; + } + + Player_actor_InitAnimation_Base2(actorx, game, anim0_idx, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, cKF_FRAMECONTROL_STOP, + part_table_idx); + Player_actor_setup_main_Base(actorx, game); + + if (type >= 0 && type < mPlayer_GOLDEN_ITEM_TYPE_NUM) { + u8 bgm_num = Player_actor_sound_Get_bgm_num_forDemoGetGoldenItem(type); + + mBGMPsComp_make_ps_fanfare(bgm_num, 0x168); + } +} + +static void Player_actor_settle_main_Demo_get_golden_item(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_demo_get_golden_item_c* demo_get_golden_item_p = &player->main_data.demo_get_golden_item; + int type = demo_get_golden_item_p->type; + + if (type >= 0 && type < mPlayer_GOLDEN_ITEM_TYPE_NUM) { + static u8 data[] = { (1 << 0), (1 << 1), (1 << 2), (1 << 3) }; + u8 bgm_num = Player_actor_sound_Get_bgm_num_forDemoGetGoldenItem(type); + + mBGMPsComp_delete_ps_fanfare(bgm_num, 0x168); + Now_Private->golden_items_collected |= data[type]; + } +} + +static int Player_actor_CulcAnimation_Demo_get_golden_item(ACTOR* actorx) { + f32 dummy; + + return Player_actor_CulcAnimation_Base2(actorx, &dummy); +} + +static void Player_actor_Movement_Demo_get_golden_item(ACTOR* actorx) { + add_calc_short_angle2(&actorx->shape_info.rotation.y, 0, 1.0f - sqrtf(0.5f), 2500, 50); + actorx->world.angle.y = actorx->shape_info.rotation.y; + Player_actor_Movement_Base_Braking_common(actorx, 0.32625f); +} + +static void Player_actor_set_eye_pattern_Demo_get_golden_item(ACTOR* actorx, int end_flag) { + if (end_flag) { + Player_actor_set_eye_pattern_normal(actorx); + } else { + Player_actor_set_tex_anime_pattern(actorx); + } +} + +static void Player_actor_ObjCheck_Demo_get_golden_item(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Demo_get_golden_item(ACTOR* actorx) { + Player_actor_BGcheck_common_type2(actorx); +} + +static void Player_actor_Demo_get_golden_item_demo_ct(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_demo_get_golden_item_c* demo_get_golden_item_p = &player->main_data.demo_get_golden_item; + int type = demo_get_golden_item_p->type; + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + rgba_t window_color; + int msg_no; + + switch (type) { + case mPlayer_GOLDEN_ITEM_TYPE_AXE: + msg_no = 0x306F; + break; + case mPlayer_GOLDEN_ITEM_TYPE_NET: + msg_no = 0x306D; + break; + case mPlayer_GOLDEN_ITEM_TYPE_ROD: + msg_no = 0x306E; + break; + default: + msg_no = 0x3070; + break; + } + + mDemo_Set_msg_num(msg_no); + mDemo_Set_talk_display_name(FALSE); + mDemo_Set_camera(CAMERA2_PROCESS_ITEM); + mDemo_Set_ListenAble(); + mMsg_Set_LockContinue(msg_p); + + window_color.r = 185; + window_color.g = 245; + window_color.b = 80; + window_color.a = 255; + mDemo_Set_talk_window_color(&window_color); + mChoice_CLEAR_CHOSENUM(); +} + +static int Player_actor_MessageControl_Demo_get_golden_item(ACTOR* actorx, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_demo_get_golden_item_c* demo_get_golden_item_p = &player->main_data.demo_get_golden_item; + f32* timer_p = &demo_get_golden_item_p->timer; + int* msg_mode_p = &demo_get_golden_item_p->msg_mode; + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + + if (*timer_p < 42.0f) { + (*timer_p) += 1.0f; + return FALSE; + } + + switch (*msg_mode_p) { + case 0: { + if (mDemo_Check(mDemo_TYPE_REPORT, actorx) == FALSE) { + mDemo_Request(mDemo_TYPE_REPORT, actorx, &Player_actor_Demo_get_golden_item_demo_ct); + } else { + *msg_mode_p = 1; + } + return FALSE; + } + case 1: { + if (end_flag) { + mMsg_Unset_LockContinue(msg_p); + *msg_mode_p = 2; + } + return FALSE; + } + case 2: { + if (mDemo_Check(mDemo_TYPE_REPORT, actorx) == FALSE) { + *msg_mode_p = 3; + } + return FALSE; + } + default: + return TRUE; + } +} + +static void Player_actor_request_proc_index_fromDemo_get_golden_item(ACTOR* actorx, GAME* game, int end_flag) { + if (end_flag) { + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } +} + +static void Player_actor_main_Demo_get_golden_item(ACTOR* actorx, GAME* game) { + int anim_end_flag; + int msg_end_flag; + + anim_end_flag = Player_actor_CulcAnimation_Demo_get_golden_item(actorx); + Player_actor_Movement_Demo_get_golden_item(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_Demo_get_golden_item(actorx, anim_end_flag); + Player_actor_ObjCheck_Demo_get_golden_item(actorx, game); + Player_actor_BGcheck_Demo_get_golden_item(actorx); + Player_actor_Item_main(actorx, game); + msg_end_flag = Player_actor_MessageControl_Demo_get_golden_item(actorx, anim_end_flag); + Player_actor_request_proc_index_fromDemo_get_golden_item(actorx, game, msg_end_flag); +} diff --git a/src/m_player_main_demo_get_golden_item2.c_inc b/src/m_player_main_demo_get_golden_item2.c_inc index e69de29b..60912dfa 100644 --- a/src/m_player_main_demo_get_golden_item2.c_inc +++ b/src/m_player_main_demo_get_golden_item2.c_inc @@ -0,0 +1,15 @@ +static int Player_actor_request_main_demo_get_golden_item2_all(GAME* game, int type, int prio) { + return Player_actor_request_main_demo_get_golden_item_common(game, mPlayer_INDEX_DEMO_GET_GOLDEN_ITEM2, type, prio); +} + +static void Player_actor_setup_main_Demo_get_golden_item2(ACTOR* actorx, GAME* game) { + Player_actor_setup_main_Demo_get_golden_item(actorx, game); +} + +static void Player_actor_settle_main_Demo_get_golden_item2(ACTOR* actorx, GAME* game) { + Player_actor_settle_main_Demo_get_golden_item(actorx, game); +} + +static void Player_actor_main_Demo_get_golden_item2(ACTOR* actorx, GAME* game) { + Player_actor_main_Demo_get_golden_item(actorx, game); +} diff --git a/src/m_player_main_demo_getoff_boat.c_inc b/src/m_player_main_demo_getoff_boat.c_inc index e69de29b..f7c04404 100644 --- a/src/m_player_main_demo_getoff_boat.c_inc +++ b/src/m_player_main_demo_getoff_boat.c_inc @@ -0,0 +1,127 @@ +static int Player_actor_request_main_demo_getoff_boat_all(GAME* game, const xyz_t* pos_p, s16 angle_y, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_DEMO_GETOFF_BOAT, prio)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_demo_getoff_boat_c* req_demo_getoff_boat_p = + &player->requested_main_index_data.demo_getoff_boat; + + req_demo_getoff_boat_p->pos = *pos_p; + req_demo_getoff_boat_p->angle_y = angle_y; + Player_actor_request_main_index(game, mPlayer_INDEX_DEMO_GETOFF_BOAT, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Demo_getoff_boat(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + mPlayer_request_demo_getoff_boat_c* req_demo_getoff_boat_p = &player->requested_main_index_data.demo_getoff_boat; + int anim1_idx; + int part_table_idx; + xyz_t pos; + s16 angle_y; + f32 cos; + f32 sin; + f32 cos_x; + f32 cos_z; + f32 sin_x; + f32 sin_z; + + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_GETOFF2, -5.0f, &anim1_idx, &part_table_idx); + + pos = req_demo_getoff_boat_p->pos; + angle_y = req_demo_getoff_boat_p->angle_y; + cos = cos_s(angle_y); + cos_x = cos; + cos_z = cos; + sin = sin_s(angle_y); + sin_x = sin; + sin_z = sin; + + /* @hack - TODO: look for a better way to match these float operations */ + pos.x -= (sin_x *= 45.0f) + (cos_x *= -2.0f); + pos.y -= 18.0f; + pos.z -= (cos_z *= 45.0f) - (sin_z *= -2.0f); + + cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(kf0_p, 0.0f, 1000.0f, 0.0f, 0, 0, DEG2SHORT_ANGLE2(90.0f)); + cKF_SkeletonInfo_R_AnimationMove_ct_base(&actorx->world.position, &pos, actorx->shape_info.rotation.y, + actorx->world.angle.y, 5.0f, kf0_p, + cKF_ANIMATION_TRANS_XZ | cKF_ANIMATION_TRANS_Y | cKF_ANIMATION_ROT_Y); + + Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_GETOFF2, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, + cKF_FRAMECONTROL_STOP, part_table_idx); + Player_actor_setup_main_Base(actorx, game); + Player_actor_sound_JUMP(actorx); +} + +static void Player_actor_settle_main_Demo_getoff_boat(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_dt(kf0_p); + actorx->world.angle.y = actorx->shape_info.rotation.y; + actorx->shape_info.shadow_size_change_rate = 1.0f; + actorx->shape_info.shadow_alpha_change_rate = 1.0f; +} + +static int Player_actor_CulcAnimation_Demo_getoff_boat(ACTOR* actorx, f32* last_anim0_cur_frame_p) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame_p); +} + +static void Player_actor_SetSound_Demo_getoff_boat(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + + if (Player_actor_Check_AnimationFrame(fc0_p, 15.0f)) { + Player_actor_sound_LANDING(actorx); + } +} + +static void Player_actor_ControlShadow_Demo_getoff_boat(ACTOR* actorx) { + Player_actor_AppearShadow_fromAnimationFrame(actorx, 8.0f, 16.0f); +} + +static void Player_actor_SearchAnimation_Demo_getoff_boat(ACTOR* actorx, f32 frame) { + if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE) { + Player_actor_SetSound_Demo_getoff_boat(actorx); + } + + Player_actor_ControlShadow_Demo_getoff_boat(actorx); +} + +static void Player_actor_Movement_Demo_getoff_boat(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_base(&actorx->world.position, &actorx->shape_info.rotation.y, &actorx->scale, + actorx->world.angle.y, kf0_p); + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static void Player_actor_ObjCheck_Demo_getoff_boat(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_request_proc_index_fromDemo_getoff_boat(ACTOR* actorx, GAME* game, int end_flag) { + if (end_flag) { + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_demo_wait_all(game, FALSE, 0, mPlayer_REQUEST_PRIORITY_19); + } +} + +static void Player_actor_main_Demo_getoff_boat(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + int end_flag; + + end_flag = Player_actor_CulcAnimation_Demo_getoff_boat(actorx, &last_anim0_cur_frame); + Player_actor_SearchAnimation_Demo_getoff_boat(actorx, last_anim0_cur_frame); + Player_actor_Movement_Demo_getoff_boat(actorx); + Player_actor_Reset_force_position_angle(actorx); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Demo_getoff_boat(actorx, game); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromDemo_getoff_boat(actorx, game, end_flag); +} diff --git a/src/m_player_main_demo_getoff_boat_standup.c_inc b/src/m_player_main_demo_getoff_boat_standup.c_inc index e69de29b..741f68af 100644 --- a/src/m_player_main_demo_getoff_boat_standup.c_inc +++ b/src/m_player_main_demo_getoff_boat_standup.c_inc @@ -0,0 +1,118 @@ +static int Player_actor_request_main_demo_getoff_boat_standup_all(GAME* game, const xyz_t* pos_p, s16 angle_y, + int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_DEMO_GETOFF_BOAT_STANDUP, prio)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_demo_getoff_boat_standup_c* req_demo_getoff_boat_standup_p = + &player->requested_main_index_data.demo_getoff_boat_standup; + + req_demo_getoff_boat_standup_p->pos = *pos_p; + req_demo_getoff_boat_standup_p->angle_y = angle_y; + Player_actor_request_main_index(game, mPlayer_INDEX_DEMO_GETOFF_BOAT_STANDUP, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Demo_getoff_boat_standup(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + xyz_t pos = actorx->world.position; + mPlayer_request_demo_getoff_boat_standup_c* req_demo_getoff_boat_standup_p = + &player->requested_main_index_data.demo_getoff_boat_standup; + mPlayer_main_demo_getoff_boat_standup_c* demo_getoff_boat_standup_p = &player->main_data.demo_getoff_boat_standup; + int anim1_idx; + int part_table_idx; + + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_GETOFF1, -18.0f, &anim1_idx, &part_table_idx); + demo_getoff_boat_standup_p->pos = req_demo_getoff_boat_standup_p->pos; + demo_getoff_boat_standup_p->angle_y = req_demo_getoff_boat_standup_p->angle_y; + demo_getoff_boat_standup_p->angle_z = player->boat_angleZ; + + pos.y = 23.0f; + cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(kf0_p, 0.0f, 1000.0f, 0.0f, 0, 0, DEG2SHORT_ANGLE2(90.0f)); + cKF_SkeletonInfo_R_AnimationMove_ct_base(&actorx->world.position, &pos, actorx->shape_info.rotation.y, + actorx->world.angle.y, 18.0f, kf0_p, + cKF_ANIMATION_TRANS_XZ | cKF_ANIMATION_TRANS_Y | cKF_ANIMATION_ROT_Y); + Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_GETOFF1, anim1_idx, 1.0f, 1.0f, 0.5f, -18.0f, + cKF_FRAMECONTROL_STOP, part_table_idx); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_settle_main_Demo_getoff_boat_standup(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_dt(kf0_p); + actorx->world.angle.y = actorx->shape_info.rotation.y; +} + +static int Player_actor_CulcAnimation_Demo_getoff_boat_standup(ACTOR* actorx, f32* last_anim0_cur_frame_p) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame_p); +} + +static void Player_actor_SetSound_Demo_getoff_boat_standup(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + + if (Player_actor_Check_AnimationFrame(fc0_p, 6.0f)) { + Player_actor_sound_STANDUP(actorx, -1); + } else if (Player_actor_Check_AnimationFrame(fc0_p, 21.0f)) { + Player_actor_sound_LANDING(actorx); + } +} + +static void Player_actor_SearchAnimation_Demo_getoff_boat_standup(ACTOR* actorx, f32 frame) { + if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE) { + Player_actor_SetSound_Demo_getoff_boat_standup(actorx); + } +} + +static void Player_actor_Movement_Demo_getoff_boat_standup(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_base(&actorx->world.position, &actorx->shape_info.rotation.y, &actorx->scale, + actorx->world.angle.y, kf0_p); + Player_actor_Movement_Base_Stop(actorx, FALSE); + + { + mPlayer_main_demo_getoff_boat_standup_c* demo_getoff_boat_standup_p = + &player->main_data.demo_getoff_boat_standup; + s16* angle_z_p = &demo_getoff_boat_standup_p->angle_z; + + add_calc_short_angle2(angle_z_p, 0, 1.0f - sqrtf(0.2f), 150, 100); + } +} + +static void Player_actor_ObjCheck_Demo_getoff_boat_standup(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_request_proc_index_fromDemo_getoff_boat_standup(ACTOR* actorx, GAME* game, int end_flag) { + if (end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_demo_getoff_boat_standup_c* demo_getoff_boat_standup_p = + &player->main_data.demo_getoff_boat_standup; + + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_demo_getoff_boat_all( + game, &demo_getoff_boat_standup_p->pos, demo_getoff_boat_standup_p->angle_y, mPlayer_REQUEST_PRIORITY_19); + } +} + +static void Player_actor_main_Demo_getoff_boat_standup(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + int end_flag; + + end_flag = Player_actor_CulcAnimation_Demo_getoff_boat_standup(actorx, &last_anim0_cur_frame); + Player_actor_SearchAnimation_Demo_getoff_boat_standup(actorx, last_anim0_cur_frame); + Player_actor_Movement_Demo_getoff_boat_standup(actorx); + Player_actor_Reset_force_position_angle(actorx); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Demo_getoff_boat_standup(actorx, game); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromDemo_getoff_boat_standup(actorx, game, end_flag); +} diff --git a/src/m_player_main_demo_geton_boat_sitdown.c_inc b/src/m_player_main_demo_geton_boat_sitdown.c_inc index e69de29b..b16e2680 100644 --- a/src/m_player_main_demo_geton_boat_sitdown.c_inc +++ b/src/m_player_main_demo_geton_boat_sitdown.c_inc @@ -0,0 +1,89 @@ +static int Player_actor_request_main_demo_geton_boat_sitdown_all(GAME* game, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_DEMO_GETON_BOAT_SITDOWN, prio)) { + Player_actor_request_main_index(game, mPlayer_INDEX_DEMO_GETON_BOAT_SITDOWN, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Demo_geton_boat_sitdown(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_demo_geton_boat_sitdown_c* demo_geton_boat_sitdown_p = &player->main_data.demo_geton_boat_sitdown; + int anim1_idx; + int part_table_idx; + + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_RIDE2, -5.0f, &anim1_idx, &part_table_idx); + demo_geton_boat_sitdown_p->angle_z = 0; + Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_RIDE2, anim1_idx, 1.0f, 1.0f, 0.5f, 0.0f, + cKF_FRAMECONTROL_STOP, part_table_idx); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_Movement_Demo_geton_boat_sitdown(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if ((player->force_position_angle_flag & mPlayer_FORCE_POSITION_ANGLE_POSX) && + (player->force_position_angle_flag & mPlayer_FORCE_POSITION_ANGLE_POSY) && + (player->force_position_angle_flag & mPlayer_FORCE_POSITION_ANGLE_POSZ)) { + xyz_t* pos_p = &actorx->world.position; + + add_calc(&pos_p->x, player->force_position.x, 1.0f - sqrtf(0.2f), 0.2f, 0.15f); + add_calc(&pos_p->y, player->force_position.y, 1.0f - sqrtf(0.2f), 0.2f, 0.15f); + add_calc(&pos_p->z, player->force_position.z, 1.0f - sqrtf(0.2f), 0.2f, 0.15f); + + Player_actor_Get_force_position_angle(game, NULL, &actorx->world.angle); + Player_actor_Get_force_position_angle(game, NULL, &actorx->shape_info.rotation); + } + + { + mPlayer_main_demo_geton_boat_sitdown_c* demo_geton_boat_sitdown_p = &player->main_data.demo_geton_boat_sitdown; + s16 boat_angle_z = player->boat_angleZ; + s16* angle_z_p = &demo_geton_boat_sitdown_p->angle_z; + + add_calc_short_angle2(angle_z_p, boat_angle_z, 1.0f - sqrtf(0.2f), 150, 100); + } +} + +static int Player_actor_CulcAnimation_Demo_geton_boat_sitdown(ACTOR* actorx, f32* last_anim0_cur_frame_p) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame_p); +} + +static void Player_actor_SetSound_Demo_geton_boat_sitdown(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + + if (Player_actor_Check_AnimationFrame(fc0_p, 15.0f)) { + Player_actor_sound_JUMP(actorx); + } else if (Player_actor_Check_AnimationFrame(fc0_p, 28.0f)) { + Player_actor_sound_SIT(actorx, -1); + } +} + +static void Player_actor_SearchAnimation_Demo_geton_boat_sitdown(ACTOR* actorx, f32 frame) { + if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE) { + Player_actor_SetSound_Demo_geton_boat_sitdown(actorx); + } +} + +static void Player_actor_request_proc_index_fromDemo_geton_boat_sitdown(ACTOR* actorx, GAME* game, int end_flag) { + if (end_flag) { + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_demo_geton_boat_wait_all(game, mPlayer_REQUEST_PRIORITY_19); + } +} + +static void Player_actor_main_Demo_geton_boat_sitdown(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + int end_flag; + + Player_actor_Movement_Demo_geton_boat_sitdown(actorx, game); + Player_actor_Reset_force_position_angle(actorx); + end_flag = Player_actor_CulcAnimation_Demo_geton_boat_sitdown(actorx, &last_anim0_cur_frame); + Player_actor_SearchAnimation_Demo_geton_boat_sitdown(actorx, last_anim0_cur_frame); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromDemo_geton_boat_sitdown(actorx, game, end_flag); +} diff --git a/src/m_player_main_demo_geton_boat_wade.c_inc b/src/m_player_main_demo_geton_boat_wade.c_inc index e69de29b..2839e1e6 100644 --- a/src/m_player_main_demo_geton_boat_wade.c_inc +++ b/src/m_player_main_demo_geton_boat_wade.c_inc @@ -0,0 +1,87 @@ +static int Player_actor_request_main_demo_geton_boat_wade_all(GAME* game, int dir, f32 border_ofs, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_DEMO_GETON_BOAT_WADE, prio)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_demo_geton_boat_wade_c* req_demo_geton_boat_wade_p = + &player->requested_main_index_data.demo_geton_boat_wade; + + req_demo_geton_boat_wade_p->dir = dir; + req_demo_geton_boat_wade_p->border_ofs = border_ofs; + Player_actor_request_main_index(game, mPlayer_INDEX_DEMO_GETON_BOAT_WADE, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Demo_geton_boat_wade(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + GAME_PLAY* play = (GAME_PLAY*)game; + mPlayer_request_demo_geton_boat_wade_c* req_demo_geton_boat_wade_p = + &player->requested_main_index_data.demo_geton_boat_wade; + mPlayer_main_demo_geton_boat_wade_c* demo_geton_boat_wade_p = &player->main_data.demo_geton_boat_wade; + xyz_t* pos_p = &actorx->world.position; + int dir = req_demo_geton_boat_wade_p->dir; + f32 border_ofs = req_demo_geton_boat_wade_p->border_ofs; + int anim1_idx; + int part_table_idx; + + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_RIDEWAIT, -5.0f, &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actorx, game, mPlayer_ANIM_RIDEWAIT, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, + part_table_idx); + demo_geton_boat_wade_p->dir = dir; + demo_geton_boat_wade_p->start_pos = *pos_p; + Player_actor_Culc_wade_end_pos(pos_p, &demo_geton_boat_wade_p->end_pos, dir, border_ofs); + demo_geton_boat_wade_p->timer = 0.0f; + Player_actor_setup_main_Base(actorx, game); + + { + xyz_t camera_pos = demo_geton_boat_wade_p->end_pos; + + camera_pos.y += actorx->eye.position.y - pos_p->y; + Camera2_request_main_wade(play, &camera_pos, 9, 36.0f); + } + + Player_actor_setup_main_Demo_geton_boat_wade_other_func2(actorx, game); +} + +static void Player_actor_settle_main_Demo_geton_boat_wade(ACTOR* actorx, GAME* game) { + mDemo_End(actorx); +} + +static void Player_actor_Movement_Demo_geton_boat_wade(ACTOR* actorx) { + Player_actor_Movement_Demo_geton_boat_wait(actorx); +} + +static int Player_actor_CulcAnimation_Demo_geton_boat_wade(ACTOR* actorx) { + return Player_actor_CulcAnimation_Demo_geton_boat_wait(actorx); +} + +static int Player_actor_able_request_proc_index_fromDemo_geton_boat_wade_common(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_demo_geton_boat_wade_c* demo_geton_boat_wade_p = &player->main_data.demo_geton_boat_wade; + + if (demo_geton_boat_wade_p->timer > 36.0f) { + return TRUE; + } + + demo_geton_boat_wade_p->timer += 1.0f; + return FALSE; +} + +static void Player_actor_request_proc_index_fromDemo_geton_boat_wade(ACTOR* actorx, GAME* game) { + if (Player_actor_able_request_proc_index_fromDemo_geton_boat_wade_common(actorx)) { + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_demo_geton_boat_wait_all(game, mPlayer_REQUEST_PRIORITY_19); + } +} + +static void Player_actor_main_Demo_geton_boat_wade(ACTOR* actorx, GAME* game) { + Player_actor_main_Demo_geton_boat_wade_other_func1(actorx, game); + Player_actor_Movement_Demo_geton_boat_wade(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_CulcAnimation_Demo_geton_boat_wade(actorx); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromDemo_geton_boat_wade(actorx, game); +} diff --git a/src/m_player_main_demo_geton_boat_wait.c_inc b/src/m_player_main_demo_geton_boat_wait.c_inc index e69de29b..7631a7d0 100644 --- a/src/m_player_main_demo_geton_boat_wait.c_inc +++ b/src/m_player_main_demo_geton_boat_wait.c_inc @@ -0,0 +1,55 @@ +static int Player_actor_request_main_demo_geton_boat_wait_all(GAME* game, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_DEMO_GETON_BOAT_WAIT, prio)) { + Player_actor_request_main_index(game, mPlayer_INDEX_DEMO_GETON_BOAT_WAIT, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Demo_geton_boat_wait(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int anim1_idx; + int part_table_idx; + + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_RIDEWAIT, -5.0f, &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actorx, game, mPlayer_ANIM_RIDEWAIT, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, + part_table_idx); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_Movement_Demo_geton_boat_wait(ACTOR* actorx) { + // nothing +} + +static int Player_actor_CulcAnimation_Demo_geton_boat_wait(ACTOR* actorx) { + f32 dummy; + + return Player_actor_CulcAnimation_Base2(actorx, &dummy); +} + +static void Player_actor_request_proc_index_fromDemo_geton_boat_wait(ACTOR* actorx) { + s16 angle_y = actorx->shape_info.rotation.y; + f32 speed; + + if (Common_Get(clip).demo_clip2 != NULL && Common_Get(clip).demo_clip2->type == mDemo_CLIP_TYPE_BOAT_DEMO) { + BOAT_DEMO_ACTOR* boat_demo = (BOAT_DEMO_ACTOR*)Common_Get(clip).demo_clip2->demo_class; + + speed = boat_demo->boat_speed; + } else { + speed = 0.625f; + } + + Player_actor_Set_ScrollDemo_forDemo_geton_boat_wade(actorx, angle_y + DEG2SHORT_ANGLE2(180.0f), + ((speed * 0.5f) * 36.0f) * 0.05f); +} + +static void Player_actor_main_Demo_geton_boat_wait(ACTOR* actorx, GAME* game) { + Player_actor_Movement_Demo_geton_boat_wait(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_CulcAnimation_Demo_geton_boat_wait(actorx); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromDemo_geton_boat_wait(actorx); +} diff --git a/src/m_player_main_radio_exercise.c_inc b/src/m_player_main_radio_exercise.c_inc index e69de29b..a7e95d7c 100644 --- a/src/m_player_main_radio_exercise.c_inc +++ b/src/m_player_main_radio_exercise.c_inc @@ -0,0 +1,209 @@ +static int Player_actor_request_main_radio_exercise_all(GAME* game, int cmd, f32 speed, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_RADIO_EXERCISE, prio)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_radio_exercise_c* req_radio_exercise_p = &player->requested_main_index_data.radio_exercise; + + req_radio_exercise_p->cmd = cmd; + req_radio_exercise_p->speed = speed; + Player_actor_request_main_index(game, mPlayer_INDEX_RADIO_EXERCISE, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Radio_exercise(ACTOR* actorx, GAME* game) { + // clang-format off + static const u8 anime_index_data[mPlayer_RADIO_EXERCISE_CMD_NUM] = { + mPlayer_ANIM_TAISOU1, + mPlayer_ANIM_TAISOU2_1, + mPlayer_ANIM_TAISOU2_2, + mPlayer_ANIM_TAISOU3, + mPlayer_ANIM_TAISOU4_1, + mPlayer_ANIM_TAISOU4_1, + mPlayer_ANIM_TAISOU4_2, + mPlayer_ANIM_TAISOU4_2, + mPlayer_ANIM_TAISOU5_1, + mPlayer_ANIM_TAISOU5_1, + mPlayer_ANIM_TAISOU5_2, + mPlayer_ANIM_TAISOU5_2, + mPlayer_ANIM_TAISOU6_1, + mPlayer_ANIM_TAISOU6_1, + mPlayer_ANIM_TAISOU6_2, + mPlayer_ANIM_TAISOU6_2, + mPlayer_ANIM_TAISOU7_1, + mPlayer_ANIM_TAISOU7_2, + }; + // clang-format on + + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_SkeletonInfo_R_c* kf1_p = &player->keyframe1; + mPlayer_request_radio_exercise_c* req_radio_exercise_p = &player->requested_main_index_data.radio_exercise; + mPlayer_main_radio_exercise_c* radio_exercise_p = &player->main_data.radio_exercise; + int cmd = req_radio_exercise_p->cmd; + int anim_idx; + + if (cmd < 0 || cmd >= mPlayer_RADIO_EXERCISE_CMD_NUM) { + cmd = mPlayer_RADIO_EXERCISE_CMD0; + } + + radio_exercise_p->cmd = cmd; + radio_exercise_p->_04 = TRUE; + radio_exercise_p->_08 = 0; + radio_exercise_p->_0C = 0; + + player->radio_exercise_continue_cmd_idx = -1; + player->radio_exercise_cmd_timer = 0.0f; + + anim_idx = anime_index_data[cmd]; + Player_actor_InitAnimation_Base2(actorx, game, anim_idx, anim_idx, 1.0f, 1.0f, 0.0f, -5.0f, cKF_FRAMECONTROL_STOP, + mPlayer_PART_TABLE_NORMAL); + kf0_p->frame_control.speed = req_radio_exercise_p->speed; + kf1_p->frame_control.speed = req_radio_exercise_p->speed; + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_settle_main_Radio_exercise(ACTOR* actorx, GAME* game) { + // nothing +} + +static void Player_actor_Set_RadioExerciseCommand_Radio_exercise(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_radio_exercise_c* radio_exercise_p = &player->main_data.radio_exercise; + + Player_actor_Set_RadioExerciseCommand(actorx, game, radio_exercise_p->_04); + radio_exercise_p->_04 = FALSE; +} + +static void Player_actor_Movement_Radio_exercise(ACTOR* actorx) { + Player_actor_Movement_Base_Braking_common(actorx, 0.32625f); +} + +static int Player_actor_CulcAnimation_Radio_exercise(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + Radio_c radio; + f32 target_speed = 0.0f; + u32 old_sound_frame_counter = player->old_sound_frame_counter; + u32 now_sound_frame_counter = sAdo_GetSoundFrameCounter(); + int radio_counter = sAdos_GetRadioCounter(&radio); + f32 dummy; + + if (radio_counter == 0) { + target_speed = (int)radio.tempo * 0.012f; + } + + if (target_speed <= 0.0f) { + target_speed = 0.5f; + } + + if (now_sound_frame_counter != old_sound_frame_counter) { + u32 d_sound_frame_counter; + + if (now_sound_frame_counter > old_sound_frame_counter) { + d_sound_frame_counter = 0; + d_sound_frame_counter += now_sound_frame_counter; + d_sound_frame_counter -= old_sound_frame_counter; + } else { + d_sound_frame_counter = -1; + d_sound_frame_counter -= old_sound_frame_counter; + d_sound_frame_counter = now_sound_frame_counter + d_sound_frame_counter; + } + + if (d_sound_frame_counter > 5) { + d_sound_frame_counter = 5; + } + + target_speed *= (int)d_sound_frame_counter; + } + + { + // clang-format off + static f32 data[mPlayer_RADIO_EXERCISE_CMD_NUM] = { + 0.5f, + 0.5f, + 0.5f, + 0.5f, + 0.5f, + 0.5f, + 0.5f, + 0.5f, + 0.25f, + 0.25f, + 0.25f, + 0.25f, + 0.5f, + 0.5f, + 0.5f, + 0.5f, + 0.5f, + 0.5f, + }; + // clang-format on + + f32* speed_p = &player->keyframe0.frame_control.speed; + + target_speed *= data[player->main_data.radio_exercise.cmd]; + add_calc2(speed_p, target_speed, 0.3f, 0.5f); + player->keyframe1.frame_control.speed = *speed_p; + } + + return Player_actor_CulcAnimation_Base3(actorx, &dummy); +} + +static void Player_actor_ObjCheck_Radio_exercise(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGCheck_Radio_exercise(ACTOR* actorx) { + Player_actor_BGcheck_common_type1(actorx); +} + +static void Player_actor_request_proc_index_fromRadio_exercise(ACTOR* actorx, GAME* game, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_radio_exercise_c* radio_exercise_p = &player->main_data.radio_exercise; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + f32 cur_frame = fc0_p->current_frame; + + if (radio_exercise_p->_0C == FALSE) { + if (cur_frame >= fc0_p->end_frame - 24.0f) { + radio_exercise_p->_0C = TRUE; + } + } else { + Player_actor_CheckAndRequest_main_radio_exercise_all(game, TRUE); + } + + if (radio_exercise_p->_08 == FALSE) { + if (cur_frame >= fc0_p->end_frame - 0.5f) { + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_Set_status_for_bee(actorx, TRUE); + radio_exercise_p->_08 = TRUE; + } + } else if (end_flag) { + int next_radio_cmd = player->radio_exercise_continue_cmd_idx; + f32 exercise_cmd_timer = player->radio_exercise_cmd_timer; + + if (next_radio_cmd >= 0 && next_radio_cmd < mPlayer_RADIO_EXERCISE_CMD_NUM && exercise_cmd_timer <= 0.0f) { + Player_actor_request_main_radio_exercise_all(game, next_radio_cmd, fc0_p->speed, + mPlayer_REQUEST_PRIORITY_4); + } else { + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 4, mPlayer_REQUEST_PRIORITY_1); + } + } +} + +static void Player_actor_main_Radio_exercise(ACTOR* actorx, GAME* game) { + int end_flag; + + Player_actor_Set_RadioExerciseCommand_Radio_exercise(actorx, game); + Player_actor_Movement_Radio_exercise(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + end_flag = Player_actor_CulcAnimation_Radio_exercise(actorx); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Radio_exercise(actorx, game); + Player_actor_BGcheck_Radio_exercise(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromRadio_exercise(actorx, game, end_flag); +} diff --git a/src/m_player_main_reflect_axe.c_inc b/src/m_player_main_reflect_axe.c_inc index 2eb34bad..3784efd3 100644 --- a/src/m_player_main_reflect_axe.c_inc +++ b/src/m_player_main_reflect_axe.c_inc @@ -23,10 +23,10 @@ static int Player_actor_request_main_reflect_axe_all(GAME* game, const xyz_t* po static void Player_actor_setup_main_Reflect_axe_common(mPlayer_request_reflect_axe_c* req_axe, mPlayer_main_reflect_axe_c* main_axe) { - main_axe->target_pos = req_axe->goal_pos; + main_axe->axe_common.target_pos = req_axe->goal_pos; main_axe->reflect_actor_p = req_axe->hit_actor; - main_axe->item = req_axe->hit_item; - main_axe->axe_damage_no = req_axe->axe_damage_no; + main_axe->axe_common.item = req_axe->hit_item; + main_axe->axe_common.axe_damage_no = req_axe->axe_damage_no; } static void Player_actor_setup_main_Reflect_axe(ACTOR* actor, GAME* game) { @@ -41,17 +41,17 @@ static void Player_actor_setup_main_Reflect_axe(ACTOR* actor, GAME* game) { Player_actor_setup_main_Base(actor, game); } -static void Player_actor_settle_main_Reflect_axe(ACTOR* actor) { +static void Player_actor_settle_main_Reflect_axe(ACTOR* actor, GAME* game) { actor->speed = 0.0f; actor->world.angle.y = actor->shape_info.rotation.y; } -static int Player_actor_Movement_Reflect_axe_common(ACTOR* actor, mPlayer_main_reflect_axe_c* main_axe, int) { +static int Player_actor_Movement_Reflect_axe_common(ACTOR* actor, mPlayer_main_axe_common_c* axe_common_p, + int priority) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; - f32 cur; - cur = player->keyframe0.frame_control.current_frame; + f32 cur = player->keyframe0.frame_control.current_frame; - Player_actor_Movement_axe_common(actor, &main_axe->target_pos); + Player_actor_Movement_axe_common(actor, &axe_common_p->target_pos); if (cur < 15.0f) { actor->world.angle.y = actor->shape_info.rotation.y; @@ -59,7 +59,7 @@ static int Player_actor_Movement_Reflect_axe_common(ACTOR* actor, mPlayer_main_r } static void Player_actor_Movement_Reflect_axe(ACTOR* actor, mPlayer_main_reflect_axe_c* main_axe, int flag) { - Player_actor_Movement_Reflect_axe_common(actor, main_axe, flag); + Player_actor_Movement_Reflect_axe_common(actor, &main_axe->axe_common, flag); } static int Player_actor_CulcAnimation_Reflect_axe(ACTOR* actor, f32* frame_calc, int) { @@ -89,7 +89,7 @@ static void Player_actor_SetOrderNPC_Reflect_axe(ACTOR* actor, mPlayer_main_refl int rock; if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 15.0f)) { ACTOR* reflect_actor = main_axe->reflect_actor_p; - mActor_name_t item = main_axe->item; + mActor_name_t item = main_axe->axe_common.item; if (reflect_actor != NULL) { switch (reflect_actor->id) { @@ -115,7 +115,7 @@ static void Player_actor_SetOrderNPC_Reflect_axe(ACTOR* actor, mPlayer_main_refl } if (rock) { - if (Player_actor_Search_STONE_TC(actor, &main_axe->target_pos)) { + if (Player_actor_Search_STONE_TC(actor, &main_axe->axe_common.target_pos)) { return; }; } @@ -140,14 +140,14 @@ static void Player_actor_SetSound_Reflect_axe(ACTOR* actor, mPlayer_main_reflect break; } } else { - Player_actor_sound_AXE_HIT(actor, &main_axe->target_pos); + Player_actor_sound_AXE_HIT(actor, &main_axe->axe_common.target_pos); Player_actor_set_viblation_Axe_hard(); } } } static void Player_actor_ChangeItemNo_Reflect_axe(ACTOR* actor, mPlayer_main_reflect_axe_c* main_axe, int) { - Player_actor_ChangeItemNo_axe_common(actor, main_axe->axe_damage_no); + Player_actor_ChangeItemNo_axe_common(actor, main_axe->axe_common.axe_damage_no); } static void Player_actor_informed_insects_Reflect_axe(ACTOR* actor, mPlayer_main_reflect_axe_c* main_axe, int) { @@ -158,7 +158,7 @@ static void Player_actor_informed_insects_Reflect_axe(ACTOR* actor, mPlayer_main int ut_x; int ut_z; - mFI_Wpos2UtNum(&ut_x, &ut_z, main_axe->target_pos); + mFI_Wpos2UtNum(&ut_x, &ut_z, main_axe->axe_common.target_pos); Common_Get(clip).insect_clip->set_pl_act_tim_proc(1, ut_x, ut_z); } } @@ -181,8 +181,8 @@ static void Player_actor_ObjCheck_Reflect_axe(ACTOR* actor, GAME* game, int) { Player_actor_Excute_Corect_forStand(actor, game); } -static void Player_actor_BGcheck_Reflect_axe(ACTOR* actor, int) { - Player_actor_BGcheck_common_type1(actor); +static void Player_actor_BGcheck_Reflect_axe(ACTOR* actor, int) { + Player_actor_BGcheck_common_type1(actor); } static void Player_actor_request_proc_index_fromReflect_axe(ACTOR* actor, GAME* game, int arg, int arg2) { @@ -201,7 +201,8 @@ static void Player_actor_request_proc_index_fromReflect_axe(ACTOR* actor, GAME* Player_actor_SettleRequestMainIndexPriority(actor); Player_actor_Set_status_for_bee(actor, 1); - } else if ((fc->current_frame >= 31.0f) && (!Player_actor_CheckAndRequest_main_axe_all(game, mPlayer_REQUEST_PRIORITY_4)) && + } else if ((fc->current_frame >= 31.0f) && + (!Player_actor_CheckAndRequest_main_axe_all(game, mPlayer_REQUEST_PRIORITY_4)) && ((Player_actor_GetController_move_percentX()) || (Player_actor_GetController_move_percentY()))) { Player_actor_request_main_walk_all(game, NULL, -5.0f, 0, mPlayer_REQUEST_PRIORITY_1); } diff --git a/src/m_player_main_swing_axe.c_inc b/src/m_player_main_swing_axe.c_inc index 3d3da91c..09816234 100644 --- a/src/m_player_main_swing_axe.c_inc +++ b/src/m_player_main_swing_axe.c_inc @@ -25,11 +25,11 @@ static int Player_actor_request_main_swing_axe_all(GAME* game, const xyz_t* pos, static void Player_actor_setup_main_Swing_axe_common(mPlayer_request_swing_axe_c* req_axe, mPlayer_main_swing_axe_c* main_axe) { - main_axe->target_pos = req_axe->goal_pos; - main_axe->item = req_axe->hit_item; + main_axe->axe_common.target_pos = req_axe->goal_pos; + main_axe->axe_common.item = req_axe->hit_item; main_axe->tree_ut_x = req_axe->hit_ut_x; main_axe->tree_ut_z = req_axe->hit_ut_z; - main_axe->axe_damage_no = req_axe->axe_damage_no; + main_axe->axe_common.axe_damage_no = req_axe->axe_damage_no; main_axe->bee_flag = FALSE; main_axe->bee_angle_y = 0; main_axe->bee_counter = 0; @@ -63,7 +63,7 @@ static void Player_actor_Movement_axe_common(ACTOR* actor, xyz_t* axe_pos) { } static void Player_actor_Movement_Swing_axe(ACTOR* actor, mPlayer_main_swing_axe_c* main_axe, int) { - Player_actor_Movement_axe_common(actor, &main_axe->target_pos); + Player_actor_Movement_axe_common(actor, &main_axe->axe_common.target_pos); actor->world.angle.y = actor->shape_info.rotation.y; } @@ -73,7 +73,7 @@ static int Player_actor_CulcAnimation_Swing_axe(ACTOR* actor, f32* frame_calc, i } static void Player_actor_SetEffectHit_axe_common(ACTOR* actor, GAME* game, s16 arg2) { - static xyz_t offset = {-7.0f, 20.0f, 24.0f}; + static xyz_t offset = { -7.0f, 20.0f, 24.0f }; PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; xyz_t pos; @@ -96,7 +96,7 @@ static void Player_actor_SetEffectHit_Swing_axe(ACTOR* actor, GAME* game, s16 ar } static void Player_actor_SetEffectStart_Swing_axe(ACTOR* actor, GAME* game, int arg2) { - Player_actor_SetEffectStart_axe_common(actor, game, arg2); + Player_actor_SetEffectStart_axe_common(actor, game); } static void Player_actor_SetEffect_Swing_axe(ACTOR* actor, GAME* game, int arg2) { @@ -145,9 +145,9 @@ static void Player_actor_CutTree_Swing_axe(ACTOR* actor, GAME* game, mPlayer_mai if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 15.0f)) { int ut_x; int ut_z; - mActor_name_t item = main_axe->item; + mActor_name_t item = main_axe->axe_common.item; - if (mFI_Wpos2UtNum(&ut_x, &ut_z, main_axe->target_pos)) { + if (mFI_Wpos2UtNum(&ut_x, &ut_z, main_axe->axe_common.target_pos)) { mActor_name_t tree = Player_actor_Get_TreeNoToStumpNo(actor, game, item, ut_x, ut_z, main_axe, flag); int check = FALSE; @@ -158,11 +158,11 @@ static void Player_actor_CutTree_Swing_axe(ACTOR* actor, GAME* game, mPlayer_mai if (check != FALSE) { mNT_offset_table_c* ofs_tbl = obj_hight_table_item0_nogrow(tree); - mCoBG_SetPlussOffset(main_axe->target_pos, ofs_tbl->table.centerRight_offset, + mCoBG_SetPlussOffset(main_axe->axe_common.target_pos, ofs_tbl->table.centerRight_offset, ofs_tbl->table.unit_attribute); - mFI_SetFG_common(tree, main_axe->target_pos, TRUE); + mFI_SetFG_common(tree, main_axe->axe_common.target_pos, TRUE); - if (main_axe->target_pos.x > actor->world.position.x) { + if (main_axe->axe_common.target_pos.x > actor->world.position.x) { flag = 1; } else { flag = 2; @@ -232,7 +232,7 @@ static void Player_actor_ChangeItemNo_axe_common(ACTOR* actor, mActor_name_t ite } static void Player_actor_ChangeItemNo_Swing_axe(ACTOR* actor, mPlayer_main_swing_axe_c* main, int flag) { - Player_actor_ChangeItemNo_axe_common(actor, main->axe_damage_no); + Player_actor_ChangeItemNo_axe_common(actor, main->axe_common.axe_damage_no); } static void Player_actor_SearchAnimation_Swing_axe(ACTOR* actor, GAME* game, mPlayer_main_swing_axe_c* main_axe, @@ -240,7 +240,7 @@ static void Player_actor_SearchAnimation_Swing_axe(ACTOR* actor, GAME* game, mPl if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { Player_actor_SetEffect_Swing_axe(actor, game, flag); Player_actor_CutTree_Swing_axe(actor, game, main_axe, flag); - Player_actor_SetSound_Swing_axe(actor, &main_axe->target_pos, flag); + Player_actor_SetSound_Swing_axe(actor, &main_axe->axe_common.target_pos, flag); Player_actor_ChangeItemNo_Swing_axe(actor, main_axe, flag); Player_actor_Set_FootMark_Base1(actor, game, 0, 0); } @@ -248,8 +248,8 @@ static void Player_actor_SearchAnimation_Swing_axe(ACTOR* actor, GAME* game, mPl static void Player_actor_Check_BirthBee_Swing_axe(ACTOR* actor, mPlayer_main_swing_axe_c* main_axe, int arg) { if (arg == 0 && main_axe->bee_counter > 0) { - if (Player_actor_Check_BirthBee_common(actor, main_axe->item, main_axe->tree_ut_x, main_axe->tree_ut_z, - &main_axe->bee_angle_y)) { + if (Player_actor_Check_BirthBee_common(actor, main_axe->axe_common.item, main_axe->tree_ut_x, + main_axe->tree_ut_z, &main_axe->bee_angle_y)) { main_axe->bee_counter = 0; main_axe->bee_flag = 1; } else { @@ -262,8 +262,8 @@ static void Player_actor_ObjCheck_Swing_axe(ACTOR* actor, GAME* game, int) { Player_actor_Excute_Corect_forStand(actor, game); } -static void Player_actor_BGcheck_Swing_axe(ACTOR* actor, int) { - Player_actor_BGcheck_common_type1(actor); +static void Player_actor_BGcheck_Swing_axe(ACTOR* actor, int) { + Player_actor_BGcheck_common_type1(actor); } static void Player_actor_request_proc_index_fromSwing_axe(ACTOR* actor, GAME* game, int arg, int arg2) { diff --git a/src/m_player_main_switch_on_lighthouse.c_inc b/src/m_player_main_switch_on_lighthouse.c_inc index e69de29b..1c5d2542 100644 --- a/src/m_player_main_switch_on_lighthouse.c_inc +++ b/src/m_player_main_switch_on_lighthouse.c_inc @@ -0,0 +1,80 @@ +static int Player_actor_request_main_switch_on_lighthouse_all(GAME* game, const xyz_t* pos_p, s16 angle_y, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_SWITCH_ON_LIGHTHOUSE, prio)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_switch_on_lighthouse_c* req_switch_on_lighthouse_p = + &player->requested_main_index_data.switch_on_lighthouse; + + req_switch_on_lighthouse_p->pos = *pos_p; + req_switch_on_lighthouse_p->pos.y = player->actor_class.world.position.y; + req_switch_on_lighthouse_p->angle_y = angle_y; + Player_actor_request_main_index(game, mPlayer_INDEX_SWITCH_ON_LIGHTHOUSE, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_settle_main_Switch_on_lighthouse(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_dt(kf0_p); + actorx->world.angle.y = actorx->shape_info.rotation.y; +} + +static void Player_actor_setup_main_Switch_on_lighthouse(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + mPlayer_request_switch_on_lighthouse_c* req_switch_on_lighthouse_p = + &player->requested_main_index_data.switch_on_lighthouse; + + actorx->world.angle.y = req_switch_on_lighthouse_p->angle_y; + + cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(kf0_p, 0.0f, 1000.0f, 0.0f, 0, 0, DEG2SHORT_ANGLE2(90.0f)); + cKF_SkeletonInfo_R_AnimationMove_ct_base(&actorx->world.position, &req_switch_on_lighthouse_p->pos, + actorx->shape_info.rotation.y, req_switch_on_lighthouse_p->angle_y, 9.0f, + kf0_p, cKF_ANIMATION_TRANS_XZ | cKF_ANIMATION_ROT_Y); + + Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_LIGHT_ON1, mPlayer_ANIM_LIGHT_ON1, 1.0f, 1.0f, 0.5f, + 9.0f, cKF_FRAMECONTROL_STOP, mPlayer_PART_TABLE_NORMAL); + Player_actor_setup_main_Base(actorx, game); +} + +static int Player_actor_CulcAnimation_Switch_on_lighthouse(ACTOR* actorx) { + f32 dummy; + + return Player_actor_CulcAnimation_Base2(actorx, &dummy); +} + +static void Player_actor_Movement_Switch_on_lighthouse(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_base(&actorx->world.position, &actorx->shape_info.rotation.y, &actorx->scale, + actorx->world.angle.y, kf0_p); + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static void Player_actor_ObjCheck_Switch_on_lighthouse(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_request_proc_index_fromSwitch_on_lighthouse(ACTOR* actorx, GAME* game, int end_flag) { + if (end_flag) { + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } +} + +static void Player_actor_main_Switch_on_lighthouse(ACTOR* actorx, GAME* game) { + int end_flag; + + end_flag = Player_actor_CulcAnimation_Switch_on_lighthouse(actorx); + Player_actor_Movement_Switch_on_lighthouse(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Switch_on_lighthouse(actorx, game); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromSwitch_on_lighthouse(actorx, game, end_flag); +} diff --git a/src/m_player_main_wade_snowball.c_inc b/src/m_player_main_wade_snowball.c_inc index 51c99e2f..a0f104e5 100644 --- a/src/m_player_main_wade_snowball.c_inc +++ b/src/m_player_main_wade_snowball.c_inc @@ -1,9 +1,10 @@ -static int Player_actor_request_main_wade_snowball_all(GAME* game, int dir, xyz_t snowball_dist, int priority) { +static int Player_actor_request_main_wade_snowball_all(GAME* game, int dir, const xyz_t* snowball_dist_p, + int priority) { if (GET_PLAYER_ACTOR_GAME(game)->now_main_index == mPlayer_INDEX_PUSH_SNOWBALL) { PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); if (Player_actor_check_request_main_able(game, mPlayer_INDEX_WADE_SNOWBALL, priority)) { player->requested_main_index_data.wade_snowball.dir = dir; - player->requested_main_index_data.wade_snowball.snowball_dist = snowball_dist; + player->requested_main_index_data.wade_snowball.snowball_dist = *snowball_dist_p; player->requested_main_index_data.wade_snowball.label = player->main_data.push_snowball.label; Player_actor_request_main_index(game, mPlayer_INDEX_WADE_SNOWBALL, priority); @@ -51,8 +52,8 @@ static void Player_actor_setup_main_Wade_snowball(ACTOR* actor, GAME* game) { Player_actor_setup_main_Wade_snowball_other_func2(actor, game); } -static void Player_actor_settle_main_Wade_snowball(ACTOR* actor, GAME* game) { - mDemo_End(actor); +static void Player_actor_settle_main_Wade_snowball(ACTOR* actor, GAME* game) { + mDemo_End(actor); } static void Player_actor_ChangeAnimation_Wade_snowball(ACTOR* actor, GAME* game) { @@ -96,8 +97,8 @@ static void Player_actor_Movement_Wade_snowball(ACTOR* actor) { Player_actor_Movement_Base_Stop(actor, FALSE); } -static void Player_actor_BGcheck_Wade_snowball(ACTOR* actor) { - Player_actor_BGcheck_common_type2(actor); +static void Player_actor_BGcheck_Wade_snowball(ACTOR* actor) { + Player_actor_BGcheck_common_type2(actor); } static int Player_actor_able_request_proc_index_fromWade_snowball_common(ACTOR* actor) { diff --git a/src/static/jaudio_NES/game/kappa.c b/src/static/jaudio_NES/game/kappa.c index 22fcaca5..d6e0ead0 100644 --- a/src/static/jaudio_NES/game/kappa.c +++ b/src/static/jaudio_NES/game/kappa.c @@ -5,10 +5,10 @@ int kappa_seq_handle = 0; int Na_GetKappaCounter(kappa* kappa) { - int unk16; + int counter; group* group = nullptr; int temp = 0; - + if (AG.groups[kappa_seq_handle].flags.enabled != 0) { group = &(AG.groups)[kappa_seq_handle]; @@ -18,15 +18,15 @@ int Na_GetKappaCounter(kappa* kappa) { (void)temp; - unk16 = group->unk016; + counter = group->counter; + + kappa->unk0 = counter / 192; + counter -= (kappa->unk0 * 0xC0); + kappa->unk4 = counter / 192.0f; - kappa->unk0 = unk16 / 192; - unk16 -= (kappa->unk0 * 0xC0); - kappa->unk4 = unk16 / 192.0f; - return 0; } - + void Na_SetKappaSeqHandle(int flag) { kappa_seq_handle = flag; } diff --git a/src/static/jaudio_NES/game/radio.c b/src/static/jaudio_NES/game/radio.c index d171c5a4..caad18a5 100644 --- a/src/static/jaudio_NES/game/radio.c +++ b/src/static/jaudio_NES/game/radio.c @@ -2,14 +2,12 @@ #include "jaudio_NES/game64.h" #include "jaudio_NES/audiowork.h" - -s16 Na_GetRadioCounter(radio* radio) { - int unk16; +int Na_GetRadioCounter(Radio_c* radio) { + int counter; u16 tempo = 0; - + group* group = nullptr; int unused = 0; - if (AG.groups[sou_now_bgm_handle].flags.enabled != 0 && AG.groups[sou_now_bgm_handle].seq_id == 0xDA) { group = &(AG.groups)[sou_now_bgm_handle]; @@ -18,26 +16,26 @@ s16 Na_GetRadioCounter(radio* radio) { return -1; } - unk16 = group->unk016; + counter = group->counter; (void)unused; - if (unk16 < 0x2E8) { + if (counter < 744) { radio->unk0 = 0; } else { - unk16 -= 0x2E8; - radio->unk0 = (s8)(unk16 / 0x300); - unk16 = unk16 - (radio->unk0 * 0x300); + counter -= 744; + radio->unk0 = (s8)(counter / 768); + counter = counter - (radio->unk0 * 768); radio->unk0++; } if (radio->unk0 == 9) { - radio->unk4 = unk16 / 216.0f; + radio->unk4 = counter / 216.0f; } else { - radio->unk4 = unk16 / 768.0f; + radio->unk4 = counter / 768.0f; } radio->tempo = AG.groups[sou_now_bgm_handle].tempo / 48; tempo = radio->tempo; return 0; -} \ No newline at end of file +} diff --git a/src/static/jaudio_NES/game/staff.c b/src/static/jaudio_NES/game/staff.c index 0d15122e..11310561 100644 --- a/src/static/jaudio_NES/game/staff.c +++ b/src/static/jaudio_NES/game/staff.c @@ -31,7 +31,7 @@ extern void Na_GetStaffRollInfo(StaffRollInfo_c* info) { s32 temp; s32 mouth_type = 0; s32 blink; - s32 group_unk16; + s32 counter; s32 i; if (AG.groups[sou_now_bgm_handle].flags.enabled) { @@ -195,7 +195,7 @@ extern void Na_GetStaffRollInfo(StaffRollInfo_c* info) { } info->blink_flag = blink; - group_unk16 = group->unk016; + counter = group->counter; switch (seq_num) { case 1: @@ -218,7 +218,7 @@ extern void Na_GetStaffRollInfo(StaffRollInfo_c* info) { } temp = info->beat * 48; - info->_01 = group_unk16 / temp; - group_unk16 -= info->_01 * temp; - info->percent = (f32)group_unk16 / temp; + info->_01 = counter / temp; + counter -= info->_01 * temp; + info->percent = (f32)counter / temp; } diff --git a/src/static/jaudio_NES/internal/track.c b/src/static/jaudio_NES/internal/track.c index ab3afac0..30a95b81 100644 --- a/src/static/jaudio_NES/internal/track.c +++ b/src/static/jaudio_NES/internal/track.c @@ -1823,7 +1823,7 @@ static void Nas_GroupSeq(group* grp) { } grp->tempo_acceleration -= (u16)AG.max_tempo; - grp->unk016++; + grp->counter++; if (grp->flags.stop_seq_script == TRUE) { return; @@ -1998,8 +1998,8 @@ static void Nas_GroupSeq(group* grp) { case 0xC6: // stop script grp->flags.stop_seq_script = TRUE; return; - case 0xC5: // - grp->unk016 = Nas_ReadWordData(m); + case 0xC5: // update counter + grp->counter = Nas_ReadWordData(m); break; case 0xEF: // Nas_ReadWordData(m); @@ -2154,7 +2154,7 @@ extern void Nas_InitMySeq(group* grp) { grp->short_note_velocity_tbl = DEFAULT_VTABLE; grp->short_note_gate_time_tbl = DEFAULT_GTABLE; grp->script_counter = 0; - grp->unk016 = 0; + grp->counter = 0; for (i = 0; i < AUDIO_SUBTRACK_NUM; i++) { Nas_InitSubTrack(grp->subtracks[i]); From 2a0acb195f703c9b101fd9fca1b00b5cdcb24771 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Tue, 10 Sep 2024 05:09:42 -0400 Subject: [PATCH 206/234] Implement even more player states --- include/ac_balloon.h | 27 +- include/ac_gyo_release.h | 24 +- include/ac_gyoei.h | 79 ++++- include/ac_uki.h | 52 ++- include/m_player.h | 55 ++-- include/m_player_lib.h | 22 +- src/m_player.c | 5 + src/m_player_item_common.c_inc | 2 +- src/m_player_item_rod.c_inc | 262 ++++++++------- src/m_player_main_demo_get_golden_item.c_inc | 6 +- src/m_player_main_demo_getoff_train.c_inc | 86 +++++ src/m_player_main_demo_geton_train.c_inc | 81 +++++ src/m_player_main_demo_geton_train_wait.c_inc | 32 ++ src/m_player_main_demo_standing_train.c_inc | 47 +++ src/m_player_main_demo_wade.c_inc | 117 +++++++ src/m_player_main_demo_wait.c_inc | 127 ++++++++ src/m_player_main_demo_walk.c_inc | 230 ++++++++++++++ src/m_player_main_groundhog.c_inc | 40 +++ src/m_player_main_hide.c_inc | 17 + src/m_player_main_pray.c_inc | 93 ++++++ src/m_player_main_release_creature.c_inc | 300 ++++++++++++++++++ src/m_player_main_rotate_octagon.c_inc | 100 ++++++ src/m_player_main_run.c_inc | 29 +- src/m_player_main_throw_money.c_inc | 116 +++++++ src/m_player_main_tired.c_inc | 63 ++++ src/m_player_main_tumble_getup.c_inc | 7 +- src/m_player_main_walk.c_inc | 10 +- src/m_player_main_wash_car.c_inc | 129 ++++++++ 28 files changed, 1945 insertions(+), 213 deletions(-) diff --git a/include/ac_balloon.h b/include/ac_balloon.h index 3f379b61..be7c2737 100644 --- a/include/ac_balloon.h +++ b/include/ac_balloon.h @@ -8,6 +8,32 @@ extern "C" { #endif +#define Ac_Balloon_JOINT_NUM 8 + +typedef struct balloon_actor_s BALLOON_ACTOR; + +struct balloon_actor_s { + ACTOR actor_class; + cKF_SkeletonInfo_R_c keyframe; + s_xyz work[Ac_Balloon_JOINT_NUM]; + s_xyz morph[Ac_Balloon_JOINT_NUM]; + int _244; + Mtx mtx[2][4]; + int main_mode; + int saved_type; + int setup_mode; + int balloon_type; + s_xyz angle; + s16 lean; + f32 start_frame; + f32 speed; + xyz_t pos; + int _474; +}; + +extern void Ac_Balloon_request_fly(ACTOR* actorx, GAME* game, int balloon_type, s_xyz* angle_p, s16 lean, xyz_t* pos_p, + f32 start_frame, f32 speed); + extern ACTOR_PROFILE Balloon_Profile; #ifdef __cplusplus @@ -15,4 +41,3 @@ extern ACTOR_PROFILE Balloon_Profile; #endif #endif - diff --git a/include/ac_gyo_release.h b/include/ac_gyo_release.h index bd2a82c4..aa36b74d 100644 --- a/include/ac_gyo_release.h +++ b/include/ac_gyo_release.h @@ -8,6 +8,29 @@ extern "C" { #endif +typedef struct gyo_release_actor_s GYO_RELEASE_ACTOR; + +/* sizeof(GYO_RELEASE_ACTOR) == 0x1BC */ +struct gyo_release_actor_s { + /* 0x000 */ ACTOR actor_class; + /* 0x174 */ ACTOR* gyoei_actor_p; + /* 0x178 */ int gyo_type; + /* 0x17C */ int size_type; + /* 0x180 */ int anime_frame; + /* 0x184 */ int segment; + /* 0x188 */ int _188; + /* 0x18C */ ClObjPipe_c col_pipe; + /* 0x1A8 */ s16 angle_xz; + /* 0x1AA */ s16 angle_y; + /* 0x1AC */ s16 angle_y_add; + /* 0x1AE */ s16 exist_timer; + /* 0x1B0 */ f32 shadow_scale; + /* 0x1B4 */ u8 exist_flag; + /* 0x1B5 */ u8 _1B5; + /* 0x1B6 */ s16 revert_position_flag; + /* 0x1B8 */ int revert_position_timer; +}; + extern ACTOR_PROFILE Gyo_Release_Profile; #ifdef __cplusplus @@ -15,4 +38,3 @@ extern ACTOR_PROFILE Gyo_Release_Profile; #endif #endif - diff --git a/include/ac_gyoei.h b/include/ac_gyoei.h index 69f0019f..5bfadea6 100644 --- a/include/ac_gyoei.h +++ b/include/ac_gyoei.h @@ -2,12 +2,88 @@ #define AC_GYOEI_H #include "types.h" -#include "m_actor.h" +#include "ac_tools.h" #ifdef __cplusplus extern "C" { #endif +#define aGYO_MAX_GYOEI 2 + +enum { + aGYO_TYPE_TEST, + aGYO_TYPE_KASEKI, + + aGYO_TYPE_NUM +}; + +enum { + aGYO_ROD_NORMAL, + aGYO_ROD_GOLDEN, + + aGYO_ROD_NUM +}; + +enum { + aGYO_DRAW_TYPE_GYOEI, + aGYO_DRAW_TYPE_FISH, + + aGYO_DRAW_TYPE_NUM +}; + +typedef struct gyo_ctrl_actor_s aGYO_CTRL_ACTOR; + +typedef void (*aGYO_ACT_PROC)(ACTOR*, GAME*); + +/* sizeof(aGYO_CTRL_ACTOR) == 0x250 */ +struct gyo_ctrl_actor_s { + /* 0x000 */ TOOLS_ACTOR tools_class; + /* 0x1CC */ ACTOR* linked_actor; /* Generally UKI_ACTOR */ + /* 0x1D0 */ int exist; + /* 0x1D4 */ int draw_type; + /* 0x1D8 */ int gyo_type; + /* 0x1DC */ s16 size_type; + /* 0x1E0 */ int action; + /* 0x1E4 */ aGYO_ACT_PROC act_proc; + /* 0x1E8 */ int anim_frame; + /* 0x1EC */ f32 speed_step; + /* 0x1F0 */ f32 speed; + /* 0x1F4 */ f32 range; + /* 0x1F8 */ int _1F8; + /* 0x1FC */ ClObjPipe_c col_pipe; + /* 0x218 */ int work0; + /* 0x21C */ f32 fwork0; + /* 0x220 */ f32 fwork1; + /* 0x224 */ f32 fwork2; + /* 0x228 */ f32 fwork3; + /* 0x22C */ s16 swork0; + /* 0x22E */ s16 swork1; + /* 0x230 */ s16 swork2; + /* 0x232 */ s16 swork3; + /* 0x234 */ s16 swork4; + /* 0x236 */ s16 move_counter; + /* 0x238 */ s16 move_angle; + /* 0x23A */ s16 pattern_subcounter; + /* 0x23C */ s16 pattern_counter; + /* 0x23E */ s16 touch_counter; + /* 0x240 */ u16 gyo_flags; + /* 0x242 */ u8 swim_flag; + /* 0x243 */ u8 escape_flag; + /* 0x244 */ int alpha; + /* 0x248 */ int col_flags; + /* 0x24C */ u8* overlay_p; +}; + +typedef struct gyoei_actor_s GYOEI_ACTOR; + +/* sizeof(GYOEI_ACTOR) == 0x628 */ +struct gyoei_actor_s { + /* 0x000 */ ACTOR actor_class; + /* 0x174 */ aGYO_CTRL_ACTOR ctrl[aGYO_MAX_GYOEI]; + /* 0x614 */ u8 exist[4]; + /* 0x618 */ int segment_type[4]; +}; + extern ACTOR_PROFILE Gyoei_Profile; #ifdef __cplusplus @@ -15,4 +91,3 @@ extern ACTOR_PROFILE Gyoei_Profile; #endif #endif - diff --git a/include/ac_uki.h b/include/ac_uki.h index 6f3005b9..cd1ef093 100644 --- a/include/ac_uki.h +++ b/include/ac_uki.h @@ -8,23 +8,53 @@ extern "C" { #endif -extern ACTOR_PROFILE Uki_Profile; +typedef void (*aUKI_SET_VALUE_PROC)(ACTOR* actorx, xyz_t pos, xyz_t pos_speed, int param_4, int command); +typedef mActor_name_t (*aUKI_GET_FISH_TYPE)(ACTOR* actorx); +/* sizeof(UKI_ACTOR) == 0x2B8 */ typedef struct actor_uki_s { - ACTOR actor_class; - u8 pad[0xA4]; - xyz_t right_hand_pos; - xyz_t position_speed; - int angle_speed_y; - int command; - u8 pad2[0x10]; - xyz_t rod_top_position; - xyz_t left_hand_pos; + /* 0x000 */ ACTOR actor_class; + /* 0x174 */ ACTOR* child_actor; + /* 0x178 */ ClObjPipe_c col_pipe; + /* 0x194 */ f32 _194; + /* 0x198 */ MtxF mtxf; + /* 0x1D8 */ s16 proc; + /* 0x1DC */ xyz_t parabola_vec[2]; + /* 0x1F4 */ xyz_t parabola_acc[2]; + /* 0x20C */ f32 range; + /* 0x210 */ aUKI_SET_VALUE_PROC set_value_proc; + /* 0x214 */ aUKI_GET_FISH_TYPE get_fish_type_proc; + /* 0x218 */ xyz_t right_hand_pos; + /* 0x224 */ xyz_t position_speed; + /* 0x230 */ int angle_speed_y; + /* 0x234 */ int command; + /* 0x238 */ int status; + /* 0x23C */ xyz_t cast_goal_point; + /* 0x248 */ xyz_t rod_top_position; + /* 0x254 */ xyz_t left_hand_pos; + /* 0x260 */ u8 touched_flag; + /* 0x261 */ u8 hit_water_flag; + /* 0x262 */ s16 frame_timer; + /* 0x264 */ s16 cast_timer; + /* 0x266 */ s16 touch_timer; + /* 0x268 */ xyz_t uki_pos; + /* 0x274 */ xyz_t gyo_pos; + /* 0x280 */ s_xyz uki_angle; + /* 0x286 */ s16 uki_rot_speed; + /* 0x288 */ int gyo_command; + /* 0x28C */ int gyo_status; + /* 0x290 */ int gyo_type; + /* 0x294 */ f32 gyo_scale; + /* 0x298 */ int color[3]; /* rgb */ + /* 0x2A4 */ u8 _2A4[0x10]; + /* 0x2B4 */ u8 coast_flag; + /* 0x2B5 */ u8 _2B5; } UKI_ACTOR; +extern ACTOR_PROFILE Uki_Profile; + #ifdef __cplusplus } #endif #endif - diff --git a/include/m_player.h b/include/m_player.h index 969f7f58..aa435a51 100644 --- a/include/m_player.h +++ b/include/m_player.h @@ -867,14 +867,14 @@ typedef struct player_request_outdoor_s { typedef struct player_request_demo_wait_s { int umbrella_flag; - int _04; + u32 label; } mPlayer_request_demo_wait_c; typedef struct player_request_demo_walk_s { f32 goal_pos_x; f32 goal_pos_z; f32 speed; - int _0C; + int wait_flag; } mPlayer_request_demo_walk_c; typedef struct player_request_demo_geton_train_s { @@ -1187,7 +1187,7 @@ typedef struct player_request_release_creature_insect_s { } mPlayer_request_release_creature_insect_c; typedef struct player_request_release_creature_balloon_s { - int _00; + int balloon_type; } mPlayer_request_release_creature_balloon_c; typedef union { @@ -1198,6 +1198,7 @@ typedef union { typedef struct player_request_release_creature_s { int type; + int gold_scoop_flag; mPlayer_request_release_creature_u data; ACTOR* actor; } mPlayer_request_release_creature_c; @@ -1260,26 +1261,6 @@ typedef struct player_request_putin_scoop_from_submenu_s { int got_gold_scoop; } mPlayer_request_putin_scoop_from_submenu_data_c; -typedef struct { - int type; - int got_gold_scoop; - s16 angle_y; - s16 item; -} mPlayer_request_release_creature_gyoei_from_submenu_c; - -typedef struct { - int type; - int got_gold_scoop; - xyz_t wpos; - int insect_type; -} mPlayer_request_release_creature_insect_from_submenu_c; - -typedef struct { - int type; - int got_gold_scoop; - int balloon_shape_type; -} mPlayer_request_release_creature_balloon_from_submenu_c; - typedef struct { int _0; ACTOR* speak_actor; @@ -1288,9 +1269,6 @@ typedef struct { typedef union { mPlayer_request_give_from_submenu_c give_from_submenu; mPlayer_request_putin_scoop_from_submenu_data_c putin_scoop_from_submenu; - mPlayer_request_release_creature_gyoei_from_submenu_c release_creature_gyoei_from_submenu; - mPlayer_request_release_creature_insect_from_submenu_c release_creature_insect_from_submenu; - mPlayer_request_release_creature_balloon_from_submenu_c release_creature_balloon_from_submenu; mPlayer_request_demo_wait_from_submenu_c demo_wait_from_submenu; mPlayer_request_return_demo_c return_demo; mPlayer_request_wait_c wait; @@ -1391,9 +1369,6 @@ typedef struct player_request_knock_door_s { typedef union { mPlayer_request_give_from_submenu_c give_from_submenu; mPlayer_request_putin_scoop_from_submenu_data_c putin_scoop_from_submenu; - mPlayer_request_release_creature_gyoei_from_submenu_c release_creature_gyoei_from_submenu; - mPlayer_request_release_creature_insect_from_submenu_c release_creature_insect_from_submenu; - mPlayer_request_release_creature_balloon_from_submenu_c release_creature_balloon_from_submenu; mPlayer_request_demo_wait_from_submenu_c demo_wait_from_submenu; mPlayer_request_return_demo_c return_demo; mPlayer_request_return_outdoor_c return_outdoor; @@ -1748,6 +1723,19 @@ typedef struct player_main_putin_item_s { f32 timer; } mPlayer_main_putin_item_c; +typedef struct player_main_demo_wait_s { + int effect_id; + u32 label; +} mPlayer_main_demo_wait_c; + +typedef struct player_main_release_creature_s { + int type; + int golden_scoop_flag; + ACTOR* release_actor_p; + f32 timer; + int actor_birth_flag; +} mPlayer_main_release_creature_c; + typedef struct player_main_wash_car_s { int anime_idx; int change_anime_idx; @@ -1759,6 +1747,12 @@ typedef struct player_main_wash_car_s { int effect_flag; } mPlayer_main_wash_car_c; +typedef struct player_main_rotate_octagon_s { + ACTOR* talk_actor_p; + int turn_flag; + int return_main_index; +} mPlayer_main_rotate_octagon_c; + typedef struct player_main_swing_net_s { f32 swing_timer; } mPlayer_main_swing_net_c; @@ -1953,7 +1947,10 @@ typedef union { mPlayer_main_give_wait_c give_wait; mPlayer_main_takeout_item_c takeout_item; mPlayer_main_putin_item_c putin_item; + mPlayer_main_demo_wait_c demo_wait; + mPlayer_main_release_creature_c release_creature; mPlayer_main_wash_car_c wash_car; + mPlayer_main_rotate_octagon_c rotate_octagon; mPlayer_main_shake_tree_c shake_tree; mPlayer_main_struggle_pitfall_c struggle_pitfall; mPlayer_main_stung_bee_c stung_bee; diff --git a/include/m_player_lib.h b/include/m_player_lib.h index 5140f70d..37d4f645 100644 --- a/include/m_player_lib.h +++ b/include/m_player_lib.h @@ -15,10 +15,10 @@ extern PLAYER_ACTOR* get_player_actor_withoutCheck(GAME_PLAY* play); extern mPlayer_Controller_Data_c* mPlib_Get_controller_data_for_title_demo_p(); extern void mPlib_SetData1_controller_data_for_title_demo(int btn_a, int btn_b, f32 stick_x, f32 stick_y); extern void mPlib_SetData2_controller_data_for_title_demo(mActor_name_t tool); -extern void mPlib_Clear_controller_data_for_title_demo(); +extern void mPlib_Clear_controller_data_for_title_demo(void); extern void mPlib_request_main_invade_type1(GAME_PLAY* play); extern mActor_name_t mPlib_Get_itemNo_forWindow(); -extern int mPlib_check_able_change_camera_normal_index(); +extern int mPlib_check_able_change_camera_normal_index(void); extern void mPlib_request_main_refuse_type1(GAME* game); extern void mPlib_request_main_wait_type3(GAME* game); extern void mPlib_Set_able_force_speak_label(ACTOR* actor); @@ -27,7 +27,7 @@ extern int mPlib_request_main_demo_walk_type1(GAME* game, f32 goal_x, f32 goal_z extern void mPlib_Set_goal_player_demo_walk(f32 goal_x, f32 goal_z, f32 speed); extern void mPlib_Set_able_hand_all_item_in_demo(s8 enable); extern void mPlib_change_player_cloth_info_lv2(Private_c* priv, mActor_name_t cloth_name); -extern int mPlib_Get_address_able_display(); +extern int mPlib_Get_address_able_display(void); extern int mPlib_get_player_actor_main_index(GAME* game); extern int mPlib_check_player_actor_main_index_AllWade(GAME_PLAY* play); extern int mPlib_request_main_demo_wait_type1(GAME* game, int param_2, void* param_3); @@ -53,19 +53,19 @@ extern void mPlib_request_main_give_from_submenu(mActor_name_t disp_item, int su extern int mPlib_Check_tree_shaken_big(const xyz_t* pos); extern int mPlib_Check_tree_shaken_little(const xyz_t* pos); extern int mPlib_request_main_recieve_wait_type1(GAME* game, mActor_name_t item, int counter_flag); -extern int mPlib_able_player_warp_forEvent(); -extern int mPlib_Get_unable_wade(); +extern int mPlib_able_player_warp_forEvent(void); +extern int mPlib_Get_unable_wade(void); extern s8 mPlib_Get_ItemNoToItemKind(mActor_name_t); extern void mPlib_Set_boat_angleZ(s16 angleZ); -extern int mPlib_Get_end_player_demo_walk(); +extern int mPlib_Get_end_player_demo_walk(void); extern int mPlib_request_main_demo_geton_boat_type1(f32 goal_x, f32 goal_z, s16 angleY); extern int mPlib_request_main_demo_getoff_boat_standup_type1(const xyz_t* pos, s16 angleY); extern int mPlib_check_player_actor_main_index_RecieveMove(GAME* game); extern int mPlib_check_label_player_demo_wait(GAME* game, void* label); extern int mPlib_check_player_outdoor_start(GAME* game); -extern void mPlib_Set_change_color_request(); +extern void mPlib_Set_change_color_request(void); extern int mPlib_check_player_open_umbrella(GAME_PLAY* play); -extern int mPlib_Check_UKI_COMEBACK_STATUS(); +extern int mPlib_Check_UKI_COMEBACK_STATUS(void); extern int mPlib_check_player_actor_main_index_OutDoorMove(GAME* game); extern int mPlib_request_main_close_furniture_type1(GAME* game); extern int mPlib_request_main_shock_type1(GAME* game, f32 time, s16 angle_y, int axe_swing); @@ -114,8 +114,12 @@ extern void mPlib_change_player_face(GAME* game); extern void mPlib_change_player_cloth_info(mPr_cloth_c* cloth_p, mActor_name_t cloth_item); extern int mPlib_Get_status_for_bee(void); extern int mPlib_request_main_demo_get_golden_item2_type1(GAME* game, int golden_item_type); +extern void mPlib_Get_goal_player_demo_walk(f32* goal_pos_x, f32* goal_pos_z, f32* speed); +extern int mPlib_Get_continue_player_after_demo_walk(void); +extern void mPlib_Set_continue_player_after_demo_walk(int wait_flag); +extern void mPlib_Set_end_player_demo_walk(int end_flag); -extern mPlayer_change_data_from_submenu_c* mPlib_Get_change_data_from_submenu_p(); +extern mPlayer_change_data_from_submenu_c* mPlib_Get_change_data_from_submenu_p(void); extern void mPlib_Object_Exchange_keep_new_PlayerMdl(GAME_PLAY* play); extern void mPlib_Object_Exchange_keep_new_PlayerTex(GAME_PLAY* play, int bank_id, int base_idx); diff --git a/src/m_player.c b/src/m_player.c index 63358d2e..6bf79e1e 100644 --- a/src/m_player.c +++ b/src/m_player.c @@ -18,6 +18,11 @@ #include "ac_ball.h" #include "ac_snowman.h" #include "ac_boat_demo.h" +#include "ac_balloon.h" +#include "ac_uki.h" +#include "ac_insect.h" +#include "ac_gyoei.h" +#include "ac_gyo_release.h" /* Static function declarations, add as needed for intellisense */ static int Player_actor_check_request_main_able(GAME* game, int request_main_index, int priority); diff --git a/src/m_player_item_common.c_inc b/src/m_player_item_common.c_inc index babdb80e..4e99f5e9 100644 --- a/src/m_player_item_common.c_inc +++ b/src/m_player_item_common.c_inc @@ -129,7 +129,7 @@ static void Player_actor_Item_SetAnimation_Base(ACTOR* actor, f32 frame) { static void Player_actor_Item_DMA_Data(ACTOR* actor, int skl_idx, int anim_idx, int mode, f32 speed, f32 morph_speed, f32 frame) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; - int change_bank = Player_actor_Change_ItemBank(); + int change_bank = Player_actor_Change_ItemBank(actor, skl_idx, anim_idx); if ((skl_idx >= 0) && (mPlib_Get_Item_DataPointerType(skl_idx) != 0)) { cKF_Skeleton_R_c* skeleton; diff --git a/src/m_player_item_rod.c_inc b/src/m_player_item_rod.c_inc index 1e939227..11b71945 100644 --- a/src/m_player_item_rod.c_inc +++ b/src/m_player_item_rod.c_inc @@ -8,15 +8,14 @@ static void Player_actor_Item_Set_Scale_forUki_normal(ACTOR* actor, GAME* game) scale *= player->item_scale; } - if(rod != NULL){ + if (rod != NULL) { rod->scale.x = rod->scale.y = rod->scale.z = scale; - } } -static void Player_actor_Item_Set_Value_forUki_normal(ACTOR* actor, GAME* game){ +static void Player_actor_Item_Set_Value_forUki_normal(ACTOR* actor, GAME* game) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; - + Player_actor_Item_Set_Command_forUki(actor, 1); Player_actor_Item_Set_RightHandPos_forUki(actor, player->now_main_index); Player_actor_Item_Set_PosSpeed_forUki(actor); @@ -25,116 +24,112 @@ static void Player_actor_Item_Set_Value_forUki_normal(ACTOR* actor, GAME* game){ Player_actor_Item_Set_Scale_forUki_normal(actor, game); } -static int Player_actor_Item_main_rod_normal(ACTOR* actor, GAME* game){ +static int Player_actor_Item_main_rod_normal(ACTOR* actor, GAME* game) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; - + Player_actor_Item_CulcAnimation_Base(actor); Player_actor_Item_Set_Value_forUki_normal(actor, game); return 0; } -static void Player_actor_Item_Set_Value_forUki_ready(ACTOR* actor){ - PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; +static void Player_actor_Item_Set_Value_forUki_ready(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; Player_actor_Item_Set_Command_forUki(actor, 2); Player_actor_Item_Set_RightHandPos_forUki(actor, player->now_main_index); Player_actor_Item_Set_PosSpeed_forUki(actor); Player_actor_Item_Set_AngleSpeedY_forUki(actor); Player_actor_Item_Set_RodTopPos_forUki(actor); - } -static int Player_actor_Item_main_rod_ready(ACTOR* actor, GAME* game){ - PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; +static int Player_actor_Item_main_rod_ready(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; Player_actor_Item_CulcAnimation_Base(actor); Player_actor_Item_Set_Value_forUki_ready(actor); return 0; } -static void Player_actor_Item_Set_CastGoalPoint_forUki_cast(ACTOR* actor, int index){ - PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; +static void Player_actor_Item_Set_CastGoalPoint_forUki_cast(ACTOR* actor, int index) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; - if(index == mPlayer_INDEX_CAST_ROD){ + if (index == mPlayer_INDEX_CAST_ROD) { UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; - if(rod != NULL){ + if (rod != NULL) { rod->cast_goal_point = player->main_data.uki.cast_goal_point; } - } } -static void Player_actor_Item_Set_Value_forUki_cast(ACTOR* actor){ - PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; +static void Player_actor_Item_Set_Value_forUki_cast(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; Player_actor_Item_Set_Command_forUki(actor, 3); Player_actor_Item_Set_RightHandPos_forUki(actor, player->now_main_index); Player_actor_Item_Set_PosSpeed_forUki(actor); Player_actor_Item_Set_AngleSpeedY_forUki(actor); Player_actor_Item_Set_RodTopPos_forUki(actor); - } -static int Player_actor_Item_Check_Status_forUki_cast(ACTOR* actor){ - PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; +static int Player_actor_Item_Check_Status_forUki_cast(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; - if(rod != NULL){ - switch(rod->status){ + if (rod != NULL) { + switch (rod->status) { case 4: case 5: - return 1; + return 1; } } return 0; } -static int Player_actor_Item_main_rod_cast(ACTOR* actor, GAME* game){ - PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; +static int Player_actor_Item_main_rod_cast(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; int status; - + Player_actor_Item_CulcAnimation_Base(actor); - Player_actor_Item_Set_Value_forUki_cast(actor); + Player_actor_Item_Set_Value_forUki_cast(actor); status = Player_actor_Item_Check_Status_forUki_cast(actor); Player_actor_Item_Set_CastGoalPoint_forUki_cast(actor, player->now_main_index); return status; } -static void Player_actor_Item_Set_Value_forUki_air(ACTOR* actor){ - PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; +static void Player_actor_Item_Set_Value_forUki_air(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; Player_actor_Item_Set_Command_forUki(actor, 4); Player_actor_Item_Set_RightHandPos_forUki(actor, player->now_main_index); Player_actor_Item_Set_PosSpeed_forUki(actor); Player_actor_Item_Set_AngleSpeedY_forUki(actor); - Player_actor_Item_Set_RodTopPos_forUki(actor); + Player_actor_Item_Set_RodTopPos_forUki(actor); } -static int Player_actor_Item_main_rod_air(ACTOR* actor, GAME* game){ - PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; +static int Player_actor_Item_main_rod_air(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; Player_actor_Item_CulcAnimation_Base(actor); Player_actor_Item_Set_Value_forUki_air(actor); return 0; } -static void Player_actor_Item_SetFrame_forUki_relax(ACTOR* actor, GAME* game){ - PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; +static void Player_actor_Item_SetFrame_forUki_relax(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; - if(rod != NULL){ + if (rod != NULL) { f32 frame = player->item_keyframe.frame_control.current_frame; f32 target; xyz_t pos; - if(rod->status != 3){ - f32 end_pos = 2.0f + ( 61.5f + actor->world.position.y); - + if (rod->status != 3) { + f32 end_pos = 2.0f + (61.5f + actor->world.position.y); + Player_actor_Get_ItemRodVirtualTopPos(actor, &pos); target = 200.0f + (9.1f * (pos.y - end_pos)); - } - else{ + } else { target = 180.0f; } @@ -143,77 +138,76 @@ static void Player_actor_Item_SetFrame_forUki_relax(ACTOR* actor, GAME* game){ } } -static void Player_actor_Item_Set_Value_forUki_relax(ACTOR* actor){ - PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; - +static void Player_actor_Item_Set_Value_forUki_relax(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + Player_actor_Item_Set_RightHandPos_forUki(actor, player->now_main_index); Player_actor_Item_Set_PosSpeed_forUki(actor); Player_actor_Item_Set_AngleSpeedY_forUki(actor); - Player_actor_Item_Set_RodTopPos_forUki(actor); + Player_actor_Item_Set_RodTopPos_forUki(actor); } -static int Player_actor_Item_Check_Status_forUki_relax(ACTOR* actor){ - PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; - UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; +static int Player_actor_Item_Check_Status_forUki_relax(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; - if(rod != NULL) { + if (rod != NULL) { return rod->status; - } - else{ + } else { return 6; } } -static int Player_actor_Item_main_rod_relax(ACTOR* actor, GAME* game){ - Player_actor_Item_SetFrame_forUki_relax(actor,game); +static int Player_actor_Item_main_rod_relax(ACTOR* actor, GAME* game) { + Player_actor_Item_SetFrame_forUki_relax(actor, game); Player_actor_Item_Set_Value_forUki_relax(actor); - return Player_actor_Item_Check_Status_forUki_relax(actor); + return Player_actor_Item_Check_Status_forUki_relax(actor); } -static void Player_actor_Item_Set_Value_forUki_collect(ACTOR* actor){ - PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; - +static void Player_actor_Item_Set_Value_forUki_collect(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + Player_actor_Item_Set_Command_forUki(actor, 6); Player_actor_Item_Set_RightHandPos_forUki(actor, player->now_main_index); Player_actor_Item_Set_PosSpeed_forUki(actor); Player_actor_Item_Set_AngleSpeedY_forUki(actor); - Player_actor_Item_Set_RodTopPos_forUki(actor); + Player_actor_Item_Set_RodTopPos_forUki(actor); } -static int Player_actor_Item_Check_Status_forUki_collect(ACTOR* actor){ - PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; +static int Player_actor_Item_Check_Status_forUki_collect(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; - if(rod != NULL){ - switch(rod->status){ + if (rod != NULL) { + switch (rod->status) { case 7: - return 0; + return 0; } } return 1; } -static int Player_actor_Item_main_rod_collect(ACTOR* actor, GAME* game){ +static int Player_actor_Item_main_rod_collect(ACTOR* actor, GAME* game) { Player_actor_Item_CulcAnimation_Base(actor); Player_actor_Item_Set_Value_forUki_collect(actor); - return Player_actor_Item_Check_Status_forUki_collect(actor); + return Player_actor_Item_Check_Status_forUki_collect(actor); } -static void Player_actor_Item_SetFrame_forUki_vib(ACTOR* actor){ - PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; +static void Player_actor_Item_SetFrame_forUki_vib(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; - if(rod != NULL){ + if (rod != NULL) { f32 frame = player->item_keyframe.frame_control.current_frame; f32 target; - xyz_t* left_hand ; + xyz_t* left_hand; xyz_t* wpos; xyz_t pos; f32 left_hand_len; f32 wpos_len; f32 diff; - + left_hand = &player->left_hand_pos; wpos = &rod->actor_class.world.position; Player_actor_Get_ItemRodVirtualTopPos(actor, &pos); @@ -221,173 +215,171 @@ static void Player_actor_Item_SetFrame_forUki_vib(ACTOR* actor){ wpos_len = Math3DLengthSquare(wpos, &pos); diff = (left_hand_len + wpos_len) - Math3DLengthSquare(wpos, left_hand); - if(diff <= 0.0f){ + if (diff <= 0.0f) { target = 180.0f; - } - else{ + } else { target = 180.0f + (0.01f * diff); } add_calc2(&frame, target, 1.0f - sqrtf(0.25f), 360.0f); Player_actor_Item_SetAnimation_Base(actor, frame); - } + } } -static void Player_actor_Item_Set_Value_forUki_vib(ACTOR* actor){ - PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; - +static void Player_actor_Item_Set_Value_forUki_vib(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + Player_actor_Item_Set_Command_forUki(actor, 6); Player_actor_Item_Set_RightHandPos_forUki(actor, player->now_main_index); Player_actor_Item_Set_LeftHandPos_forUki(actor, player->now_main_index); Player_actor_Item_Set_PosSpeed_forUki(actor); Player_actor_Item_Set_AngleSpeedY_forUki(actor); - Player_actor_Item_Set_RodTopPos_forUki(actor); + Player_actor_Item_Set_RodTopPos_forUki(actor); } -static int Player_actor_Item_Check_Status_forUki_vib(ACTOR* actor){ - PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; +static int Player_actor_Item_Check_Status_forUki_vib(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; - if(rod != NULL){ - switch(rod->status){ + if (rod != NULL) { + switch (rod->status) { case 6: - return 1; + return 1; } } - return 0; + return 0; } -static int Player_actor_Item_main_rod_vib(ACTOR* actor, GAME* game){ +static int Player_actor_Item_main_rod_vib(ACTOR* actor, GAME* game) { Player_actor_Item_SetFrame_forUki_vib(actor); Player_actor_Item_Set_Value_forUki_vib(actor); - return Player_actor_Item_Check_Status_forUki_vib(actor); + return Player_actor_Item_Check_Status_forUki_vib(actor); } -static void Player_actor_Item_Set_Value_forUki_fly(ACTOR* actor){ - PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; - +static void Player_actor_Item_Set_Value_forUki_fly(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + Player_actor_Item_Set_Command_forUki(actor, 6); Player_actor_Item_Set_RightHandPos_forUki(actor, player->now_main_index); Player_actor_Item_Set_LeftHandPos_forUki(actor, player->now_main_index); Player_actor_Item_Set_PosSpeed_forUki(actor); Player_actor_Item_Set_AngleSpeedY_forUki(actor); - Player_actor_Item_Set_RodTopPos_forUki(actor); + Player_actor_Item_Set_RodTopPos_forUki(actor); } -static int Player_actor_Item_Check_Status_forUki_fly(ACTOR* actor){ - PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; +static int Player_actor_Item_Check_Status_forUki_fly(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; - if(rod != NULL){ - switch(rod->status){ + if (rod != NULL) { + switch (rod->status) { case 7: - return 1; + return 1; } } - return 0; + return 0; } -static int Player_actor_Item_main_rod_fly(ACTOR* actor, GAME* game){ +static int Player_actor_Item_main_rod_fly(ACTOR* actor, GAME* game) { Player_actor_Item_CulcAnimation_Base(actor); Player_actor_Item_Set_Value_forUki_fly(actor); - return Player_actor_Item_Check_Status_forUki_fly(actor); + return Player_actor_Item_Check_Status_forUki_fly(actor); } -static void Player_actor_Item_Set_GyoeiScale_forUki_putaway(ACTOR* actor, int index){ - PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; - - if(index == mPlayer_INDEX_PUTAWAY_ROD){ +static void Player_actor_Item_Set_GyoeiScale_forUki_putaway(ACTOR* actor, int index) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (index == mPlayer_INDEX_PUTAWAY_ROD) { UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; - if(rod != NULL){ - f32 f1 = (30.0f - player->main_data.putaway_uki.unk0) / 30.0f; + if (rod != NULL) { + f32 scale = (30.0f - player->main_data.putaway_uki.unk0) / 30.0f; - if(f1 > 1.0f){ - f1 = 1.0f; + if (scale > 1.0f) { + scale = 1.0f; + } else if (scale < 0.0f) { + scale = 0.0f; } - else if(f1 < 0.0f){ - f1 = 0.0f; - } - - rod->unk294 = f1; + + rod->gyo_scale = scale; } } } -static void Player_actor_Item_Set_Value_forUki_putaway(ACTOR* actor){ - PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; - +static void Player_actor_Item_Set_Value_forUki_putaway(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + Player_actor_Item_Set_Command_forUki(actor, 5); Player_actor_Item_Set_RightHandPos_forUki(actor, player->now_main_index); Player_actor_Item_Set_LeftHandPos_forUki(actor, player->now_main_index); Player_actor_Item_Set_PosSpeed_forUki(actor); Player_actor_Item_Set_AngleSpeedY_forUki(actor); - Player_actor_Item_Set_RodTopPos_forUki(actor); + Player_actor_Item_Set_RodTopPos_forUki(actor); } -static int Player_actor_Item_main_rod_putaway(ACTOR* actor, GAME* game){ - PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; - +static int Player_actor_Item_main_rod_putaway(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + Player_actor_Item_CulcAnimation_Base(actor); Player_actor_Item_Set_Value_forUki_putaway(actor); Player_actor_Item_Set_GyoeiScale_forUki_putaway(actor, player->now_main_index); return 0; } -static void Player_actor_Item_draw_net_After_main4_sao(ACTOR* actor){ - PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; - +static void Player_actor_Item_draw_net_After_main4_sao(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + Matrix_Position_VecX(&player->item_rod_top_pos, 1050.0f); } typedef void (*mPlayer_item_rod_draw_proc)(void* arg, GAME* game, cKF_SkeletonInfo_R_c* keyframe, Gfx** joint_shape, u8* joint_flags, s_xyz* joint_rot, xyz_t* joint_pos); -static int Player_actor_Item_draw_rod_After(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_idx, Gfx** joint_shape, - u8* joint_flags, void* arg, s_xyz* joint_rot, xyz_t* joint_pos) { +static int Player_actor_Item_draw_rod_After(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_idx, + Gfx** joint_shape, u8* joint_flags, void* arg, s_xyz* joint_rot, + xyz_t* joint_pos) { static const mPlayer_item_net_draw_proc proc[] = { - NULL,NULL,NULL,NULL, (mPlayer_item_rod_draw_proc)Player_actor_Item_draw_net_After_main4_sao, + NULL, NULL, NULL, NULL, (mPlayer_item_rod_draw_proc)Player_actor_Item_draw_net_After_main4_sao, }; - if(joint_idx >= 0 && joint_idx < 5){ - if(proc[joint_idx] != NULL){ - proc[joint_idx](arg,game,keyframe,joint_shape,joint_flags,joint_rot,joint_pos); + if (joint_idx >= 0 && joint_idx < 5) { + if (proc[joint_idx] != NULL) { + proc[joint_idx](arg, game, keyframe, joint_shape, joint_flags, joint_rot, joint_pos); } } return 1; } -static void Player_actor_Item_draw_rod(ACTOR* actor, GAME* game){ +static void Player_actor_Item_draw_rod(ACTOR* actor, GAME* game) { GAME_PLAY* play = (GAME_PLAY*)game; PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; Mtx* mtx; cKF_SkeletonInfo_R_c* keyf; Mtx* item_mtx; GRAPH* graph; - + item_mtx = player->item_work_mtx[play->game.frame_counter % 2]; graph = play->game.graph; keyf = &player->item_keyframe; - + Matrix_Position_VecZ(&player->item_rod_virtual_top_pos, 6000.0f); Matrix_push(); Matrix_RotateZ(player->item_rod_angle_z, 1); mtx = _Matrix_to_Mtx_new(play->game.graph); - if(mtx != NULL){ + if (mtx != NULL) { OPEN_POLY_OPA_DISP(graph); gSPMatrix(POLY_OPA_DISP++, mtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - CLOSE_POLY_OPA_DISP(graph); + CLOSE_POLY_OPA_DISP(graph); - cKF_Si3_draw_R_SV(game, keyf, item_mtx , NULL, Player_actor_Item_draw_rod_After, &player->actor_class); - player->update_item_rod_top_pos = TRUE; - + cKF_Si3_draw_R_SV(game, keyf, item_mtx, NULL, Player_actor_Item_draw_rod_After, &player->actor_class); + player->item_rod_top_pos_set = TRUE; } player->balloon_start_pos_set_flag = FALSE; diff --git a/src/m_player_main_demo_get_golden_item.c_inc b/src/m_player_main_demo_get_golden_item.c_inc index e2748e8b..2e5822cb 100644 --- a/src/m_player_main_demo_get_golden_item.c_inc +++ b/src/m_player_main_demo_get_golden_item.c_inc @@ -16,9 +16,9 @@ static int Player_actor_request_main_demo_get_golden_item_all(GAME* game, int ty return Player_actor_request_main_demo_get_golden_item_common(game, mPlayer_INDEX_DEMO_GET_GOLDEN_ITEM, type, prio); } -static int Player_actor_request_main_demo_get_golden_item_from_submenu(ACTOR* actorx, GAME* game) { - return Player_actor_request_main_demo_get_golden_item_all(game, mPlayer_GOLDEN_ITEM_TYPE_SHOVEL, - mPlayer_REQUEST_PRIORITY_31); +static void Player_actor_request_main_demo_get_golden_item_from_submenu(ACTOR* actorx, GAME* game) { + Player_actor_request_main_demo_get_golden_item_all(game, mPlayer_GOLDEN_ITEM_TYPE_SHOVEL, + mPlayer_REQUEST_PRIORITY_31); } static void Player_actor_setup_main_Demo_get_golden_item(ACTOR* actorx, GAME* game) { diff --git a/src/m_player_main_demo_getoff_train.c_inc b/src/m_player_main_demo_getoff_train.c_inc index e69de29b..9ee11d23 100644 --- a/src/m_player_main_demo_getoff_train.c_inc +++ b/src/m_player_main_demo_getoff_train.c_inc @@ -0,0 +1,86 @@ +static int Player_actor_request_main_demo_getoff_train(GAME* game, const xyz_t* pos_p, s16 angle_y, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_DEMO_GETOFF_TRAIN, prio)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_demo_getoff_train_c* req_demo_getoff_train_p = + &player->requested_main_index_data.demo_getoff_train; + + req_demo_getoff_train_p->player_pos = *pos_p; + req_demo_getoff_train_p->angle_y = angle_y; + Player_actor_request_main_index(game, mPlayer_INDEX_DEMO_GETOFF_TRAIN, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Demo_getoff_train(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + mPlayer_request_demo_getoff_train_c* req_demo_getoff_train_p = &player->requested_main_index_data.demo_getoff_train; + + actorx->world.angle.y = req_demo_getoff_train_p->angle_y; + cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(kf0_p, 0.0f, 1000.0f, 0.0f, 0, 0, DEG2SHORT_ANGLE2(90.0f)); + cKF_SkeletonInfo_R_AnimationMove_ct_base(&actorx->world.position, &req_demo_getoff_train_p->player_pos, + actorx->shape_info.rotation.y, req_demo_getoff_train_p->angle_y, 5.0f, + kf0_p, + cKF_ANIMATION_TRANS_XZ | cKF_ANIMATION_TRANS_Y | cKF_ANIMATION_ROT_Y); + + Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_OUTTRAIN1, mPlayer_ANIM_OUTTRAIN1, 1.0f, 1.0f, 0.5f, + -5.0f, cKF_FRAMECONTROL_STOP, mPlayer_PART_TABLE_NORMAL); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_settle_main_Demo_getoff_train(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_dt(kf0_p); + actorx->world.angle.y = actorx->shape_info.rotation.y; +} + +static int Player_actor_CulcAnimation_Demo_getoff_train(ACTOR* actorx, f32* last_anim0_cur_frame_p) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame_p); +} + +static void Player_actor_SearchAnimation_Demo_getoff_train(ACTOR* actorx, GAME* game, f32 frame) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE) { + Player_actor_Set_FootMark_Base1(actorx, game, TRUE, FALSE); + } +} + +static void Player_actor_Movement_Demo_getoff_train(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_base(&actorx->world.position, &actorx->shape_info.rotation.y, &actorx->scale, + actorx->world.angle.y, kf0_p); + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static void Player_actor_request_proc_index_fromDemo_getoff_train(ACTOR* actorx, GAME* game, int end_flag) { + if (end_flag) { + Player_actor_SettleRequestMainIndexPriority(actorx); + + if (Player_actor_request_main_demo_wait_all(game, FALSE, 0, mPlayer_REQUEST_PRIORITY_19)) { + if (Player_actor_Get_DemoOrder() == 3) { + Player_actor_Set_DemoOrder(0); + } + } + } +} + +static void Player_actor_main_Demo_getoff_train(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + int end_flag; + + end_flag = Player_actor_CulcAnimation_Demo_getoff_train(actorx, &last_anim0_cur_frame); + Player_actor_Movement_Demo_getoff_train(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_SearchAnimation_Demo_getoff_train(actorx, game, last_anim0_cur_frame); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromDemo_getoff_train(actorx, game, end_flag); +} diff --git a/src/m_player_main_demo_geton_train.c_inc b/src/m_player_main_demo_geton_train.c_inc index e69de29b..9873e042 100644 --- a/src/m_player_main_demo_geton_train.c_inc +++ b/src/m_player_main_demo_geton_train.c_inc @@ -0,0 +1,81 @@ +static int Player_actor_request_main_demo_geton_train(GAME* game, const xyz_t* pos_p, s16 angle_y, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_DEMO_GETON_TRAIN, prio)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_demo_geton_train_c* req_demo_geton_train_p = + &player->requested_main_index_data.demo_geton_train; + + req_demo_geton_train_p->player_pos = *pos_p; + req_demo_geton_train_p->angle_y = angle_y; + Player_actor_request_main_index(game, mPlayer_INDEX_DEMO_GETON_TRAIN, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Demo_geton_train(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + mPlayer_request_demo_geton_train_c* req_demo_geton_train_p = &player->requested_main_index_data.demo_geton_train; + + actorx->world.angle.y = req_demo_geton_train_p->angle_y; + cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(kf0_p, 0.0f, 1000.0f, 0.0f, 0, 0, DEG2SHORT_ANGLE2(90.0f)); + cKF_SkeletonInfo_R_AnimationMove_ct_base(&actorx->world.position, &req_demo_geton_train_p->player_pos, + actorx->shape_info.rotation.y, req_demo_geton_train_p->angle_y, 5.0f, + kf0_p, + cKF_ANIMATION_TRANS_XZ | cKF_ANIMATION_TRANS_Y | cKF_ANIMATION_ROT_Y); + + Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_INTRAIN1, mPlayer_ANIM_INTRAIN1, 1.0f, 1.0f, 0.5f, + -5.0f, cKF_FRAMECONTROL_STOP, mPlayer_PART_TABLE_NORMAL); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_settle_main_Demo_geton_train(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_dt(kf0_p); + actorx->world.angle.y = actorx->shape_info.rotation.y; +} + +static int Player_actor_CulcAnimation_Demo_geton_train(ACTOR* actorx, f32* last_anim0_cur_frame_p) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame_p); +} + +static void Player_actor_SearchAnimation_Demo_geton_train(ACTOR* actorx, GAME* game, f32 frame) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE) { + Player_actor_Set_FootMark_Base2(actorx, game, TRUE, 0x4204); + } +} + +static void Player_actor_Movement_Demo_geton_train(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_base(&actorx->world.position, &actorx->shape_info.rotation.y, &actorx->scale, + actorx->world.angle.y, kf0_p); + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static void Player_actor_request_proc_index_fromDemo_geton_train(ACTOR* actorx, GAME* game, int end_flag) { + if (end_flag) { + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_demo_geton_train_wait_all(game, mPlayer_REQUEST_PRIORITY_19); + } +} + +static void Player_actor_main_Demo_geton_train(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + int end_flag; + + end_flag = Player_actor_CulcAnimation_Demo_geton_train(actorx, &last_anim0_cur_frame); + Player_actor_Movement_Demo_geton_train(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_SearchAnimation_Demo_geton_train(actorx, game, last_anim0_cur_frame); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromDemo_geton_train(actorx, game, end_flag); +} diff --git a/src/m_player_main_demo_geton_train_wait.c_inc b/src/m_player_main_demo_geton_train_wait.c_inc index e69de29b..b01c7992 100644 --- a/src/m_player_main_demo_geton_train_wait.c_inc +++ b/src/m_player_main_demo_geton_train_wait.c_inc @@ -0,0 +1,32 @@ +static int Player_actor_request_main_demo_geton_train_wait_all(GAME* game, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_DEMO_GETON_TRAIN_WAIT, prio)) { + Player_actor_request_main_index(game, mPlayer_INDEX_DEMO_GETON_TRAIN_WAIT, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Demo_geton_train_wait(ACTOR* actorx, GAME* game) { + Player_actor_InitAnimation_Base1(actorx, game, mPlayer_ANIM_INTRAIN_WAIT1, mPlayer_ANIM_INTRAIN_WAIT1, 1.0f, 1.0f, + 0.5f, -5.0f, mPlayer_PART_TABLE_NORMAL); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_Movement_Demo_geton_train_wait(ACTOR* actorx) { + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static void Player_actor_CulcAnimation_Demo_geton_train_wait(ACTOR* actorx) { + f32 dummy; + + Player_actor_CulcAnimation_Base2(actorx, &dummy); +} + +static void Player_actor_main_Demo_geton_train_wait(ACTOR* actorx, GAME* game) { + Player_actor_Movement_Demo_geton_train_wait(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_CulcAnimation_Demo_geton_train_wait(actorx); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); +} diff --git a/src/m_player_main_demo_standing_train.c_inc b/src/m_player_main_demo_standing_train.c_inc index e69de29b..7b04dd78 100644 --- a/src/m_player_main_demo_standing_train.c_inc +++ b/src/m_player_main_demo_standing_train.c_inc @@ -0,0 +1,47 @@ +static int Player_actor_request_main_demo_standing_train_all(GAME* game, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_DEMO_STANDING_TRAIN, prio)) { + Player_actor_request_main_index(game, mPlayer_INDEX_DEMO_STANDING_TRAIN, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Demo_standing_train(ACTOR* actorx, GAME* game) { + int anim1_idx; + int part_table_idx; + + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_WAIT1, -5.0f, &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actorx, game, mPlayer_ANIM_WAIT1, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, + part_table_idx); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_CulcAnimation_Demo_standing_train(ACTOR* actorx) { + f32 dummy; + + Player_actor_CulcAnimation_Base2(actorx, &dummy); +} + +static void Player_actor_Movement_Demo_standing_train(ACTOR* actorx) { + if (Player_actor_Get_DemoChangeAngleY()) { + s16 goal_angle_y = Player_actor_Get_DemoAngleY(); + + add_calc_short_angle2(&actorx->world.angle.y, goal_angle_y, 1.0f - sqrtf(0.5f), 2500, 50); + actorx->shape_info.rotation.y = actorx->world.angle.y; + if (goal_angle_y == actorx->world.angle.y) { + Player_actor_Set_DemoChangeAngleY(FALSE); + } + } + + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static void Player_actor_main_Demo_standing_train(ACTOR* actorx, GAME* game) { + Player_actor_Movement_Demo_standing_train(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_CulcAnimation_Demo_standing_train(actorx); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_Item_main(actorx, game); +} diff --git a/src/m_player_main_demo_wade.c_inc b/src/m_player_main_demo_wade.c_inc index e69de29b..638d2a9f 100644 --- a/src/m_player_main_demo_wade.c_inc +++ b/src/m_player_main_demo_wade.c_inc @@ -0,0 +1,117 @@ +static int Player_actor_request_main_demo_wade_all(GAME* game, int dir, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_DEMO_WADE, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_demo_wade_c* request_demo_wade_p = &player->requested_main_index_data.demo_wade; + + request_demo_wade_p->dir = dir; + Player_actor_request_main_index(game, mPlayer_INDEX_DEMO_WADE, priority); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Demo_wade(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_request_demo_wade_c* request_demo_wade_p = &player->requested_main_index_data.demo_wade; + mPlayer_main_demo_wade_c* main_demo_wade_p = &player->main_data.demo_wade; + xyz_t* pos_p; + int anim1_idx; + int part_table_idx; + int dir; + GAME_PLAY* play = (GAME_PLAY*)game; + xyz_t eye_pos; + + dir = request_demo_wade_p->dir; + pos_p = &actorx->world.position; + Player_actor_SetupItem_Base1(actorx, 0, -5.0f, &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actorx, game, mPlayer_ANIM_WAIT1, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, + part_table_idx); + main_demo_wade_p->dir = dir; + main_demo_wade_p->start_pos = *pos_p; + + Player_actor_Culc_wade_end_pos(pos_p, &main_demo_wade_p->end_pos, dir, 18.00001f); + main_demo_wade_p->timer = 0.0f; + Player_actor_setup_main_Base(actorx, game); + + eye_pos = main_demo_wade_p->end_pos; + eye_pos.y += actorx->eye.position.y - pos_p->y; + Camera2_request_main_wade(play, &eye_pos, 9, 36.0f); + Player_actor_setup_main_Demo_wade_other_func2(actorx, game); +} + +static void Player_actor_settle_main_Demo_wade(ACTOR* actorx, GAME* game) { + mDemo_End(actorx); +} + +static void Player_actor_CulcAnimation_Demo_wade(ACTOR* actorx) { + f32 last_kf0_current_frame; + + Player_actor_CulcAnimation_Base2(actorx, &last_kf0_current_frame); +} + +static void Player_actor_Movement_Demo_wade(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_demo_wade_c* main_demo_wade_p = &player->main_data.demo_wade; + xyz_t* start_pos_p = &main_demo_wade_p->start_pos; + xyz_t* end_pos_p = &main_demo_wade_p->end_pos; + xyz_t* pos_p = &actorx->world.position; + f32 timer = main_demo_wade_p->timer; + f32 percent = get_percent_forAccelBrake(timer, 0.0f, 36.0f, 1.2f, 34.8f); + + pos_p->x = start_pos_p->x + percent * (end_pos_p->x - start_pos_p->x); + pos_p->y = start_pos_p->y + percent * (end_pos_p->y - start_pos_p->y); + pos_p->z = start_pos_p->z + percent * (end_pos_p->z - start_pos_p->z); + + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static void Player_actor_ObjCheck_Demo_wade(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Demo_wade(ACTOR* actorx) { + Player_actor_BGcheck_common_type2(actorx); +} + +static int Player_actor_able_request_proc_index_fromDemo_wade_common(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_demo_wade_c* main_demo_wade_p = &player->main_data.demo_wade; + f32* timer_p = &main_demo_wade_p->timer; + + if (*timer_p > 36.0f) { + return TRUE; + } + + *timer_p += 1.0f; + return FALSE; +} + +static void Player_actor_request_proc_index_fromDemo_wade(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_demo_wade_c* main_demo_wade_p = &player->main_data.demo_wade; + + if (Player_actor_able_request_proc_index_fromDemo_wade_common(actorx)) { + f32 goal_pos_x; + f32 goal_pos_z; + f32 speed; + + Player_actor_SettleRequestMainIndexPriority(actorx); + mPlib_Get_goal_player_demo_walk(&goal_pos_x, &goal_pos_z, &speed); + Player_actor_request_main_demo_walk_all(game, goal_pos_x, goal_pos_z, speed, mPlib_Get_end_player_demo_walk(), + mPlayer_REQUEST_PRIORITY_19); + } +} + +static void Player_actor_main_Demo_wade(ACTOR* actorx, GAME* game) { + Player_actor_main_Demo_wade_other_func1(actorx, game); + Player_actor_Movement_Demo_wade(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_CulcAnimation_Demo_wade(actorx); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Demo_wade(actorx, game); + Player_actor_BGcheck_Demo_wade(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromDemo_wade(actorx, game); +} diff --git a/src/m_player_main_demo_wait.c_inc b/src/m_player_main_demo_wait.c_inc index e69de29b..d056f7f1 100644 --- a/src/m_player_main_demo_wait.c_inc +++ b/src/m_player_main_demo_wait.c_inc @@ -0,0 +1,127 @@ +static int Player_actor_request_main_demo_wait_all(GAME* game, int umbrella_flag, u32 label, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_DEMO_WAIT, prio)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_demo_wait_c* req_demo_wait_p = &player->requested_main_index_data.demo_wait; + + req_demo_wait_p->umbrella_flag = umbrella_flag; + req_demo_wait_p->label = label; + Player_actor_request_main_index(game, mPlayer_INDEX_DEMO_WAIT, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_request_main_demo_wait_from_submenu(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_change_data_from_submenu_c* change_data_p = mPlib_Get_change_data_from_submenu_p(); + mPlayer_request_demo_wait_c* req_demo_wait_p = &change_data_p->request_main_data.demo_wait; + + Player_actor_request_main_demo_wait_all(game, req_demo_wait_p->umbrella_flag, req_demo_wait_p->label, + mPlayer_REQUEST_PRIORITY_31); +} + +static void Player_actor_setup_main_Demo_wait(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_request_demo_wait_c* req_demo_wait_p = &player->requested_main_index_data.demo_wait; + mPlayer_main_demo_wait_c* demo_wait_p = &player->main_data.demo_wait; + int anim1_idx; + int part_table_idx; + + if (req_demo_wait_p->umbrella_flag) { + player->unable_hand_item_in_demo = TRUE; + } + + demo_wait_p->effect_id = 0; + demo_wait_p->label = req_demo_wait_p->label; + + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_WAIT1, -5.0f, &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actorx, game, mPlayer_ANIM_WAIT1, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, + part_table_idx); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_settle_main_Demo_wait(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_demo_wait_c* demo_wait_p = &player->main_data.demo_wait; + + if (demo_wait_p->effect_id > 0) { + eEC_CLIP->effect_kill_proc(demo_wait_p->effect_id - 1, RSV_NO); + } +} + +static void Player_actor_Movement_Demo_wait(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (Player_actor_Get_DemoChangeAngleY()) { + s16 target_angle_y = Player_actor_Get_DemoAngleY(); + + add_calc_short_angle2(&actorx->world.angle.y, target_angle_y, 1.0f - sqrtf(0.5f), 2500, 50); + actorx->shape_info.rotation.y = actorx->world.angle.y; + if (target_angle_y == actorx->world.angle.y) { + Player_actor_Set_DemoChangeAngleY(FALSE); + } + } + + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static int Player_actor_CulcAnimation_Demo_wait(ACTOR* actorx, f32* last_anim0_cur_frame_p) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame_p); +} + +static void Player_actor_SearchAnimation_Demo_wait(ACTOR* actorx, f32 frame) { + if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_demo_wait_c* demo_wait_p = &player->main_data.demo_wait; + + Player_actor_Set_FeelEffect_common(actorx, &demo_wait_p->effect_id); + } +} + +static void Player_actor_ChangeAnimation_FromDemoOrder_Demo_wait(ACTOR* actorx, GAME* game, int order, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_demo_wait_c* demo_wait_p = &player->main_data.demo_wait; + + Player_actor_ChangeAnimation_FromDemoOrder_common(actorx, game, order, end_flag, &demo_wait_p->effect_id); +} + +static void Player_actor_SetEffect_FromDemoOrder_Demo_wait(ACTOR* actorx, GAME* game, int order) { + Player_actor_SetEffect_FromDemoOrder_common(actorx, game, order); +} + +static void Player_actor_ObjCheck_Demo_wait(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forBrake(actorx, game); +} + +static void Player_actor_request_proc_index_fromDemo_wait(GAME* game) { + if (Player_actor_Get_DemoOrder() == 1) { + f32 pos_x; + f32 pos_z; + f32 speed; + + mPlib_Get_goal_player_demo_walk(&pos_x, &pos_z, &speed); + Player_actor_request_main_demo_walk_all(game, pos_x, pos_z, speed, mPlib_Get_end_player_demo_walk(), + mPlayer_REQUEST_PRIORITY_19); + } +} + +static void Player_actor_main_Demo_wait(ACTOR* actorx, GAME* game) { + int effect_order; + f32 last_anim0_cur_frame; + int end_flag; + + effect_order = Player_actor_RecieveDemoOrder_EffectOrder(); + Player_actor_Movement_Demo_wait(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + end_flag = Player_actor_CulcAnimation_Demo_wait(actorx, &last_anim0_cur_frame); + Player_actor_SearchAnimation_Demo_wait(actorx, last_anim0_cur_frame); + Player_actor_ChangeAnimation_FromDemoOrder_Demo_wait(actorx, game, effect_order, end_flag); + Player_actor_SetEffect_FromDemoOrder_Demo_wait(actorx, game, effect_order); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Demo_wait(actorx, game); + Player_actor_BGcheck_Wait(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromDemo_wait(game); +} diff --git a/src/m_player_main_demo_walk.c_inc b/src/m_player_main_demo_walk.c_inc index e69de29b..fbbf75e2 100644 --- a/src/m_player_main_demo_walk.c_inc +++ b/src/m_player_main_demo_walk.c_inc @@ -0,0 +1,230 @@ +static int Player_actor_request_main_demo_walk_all(GAME* game, f32 goal_pos_x, f32 goal_pos_z, f32 speed, int wait_flag, + int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_DEMO_WALK, prio)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_demo_walk_c* req_demo_walk_p = &player->requested_main_index_data.demo_walk; + + req_demo_walk_p->goal_pos_x = goal_pos_x; + req_demo_walk_p->goal_pos_z = goal_pos_z; + req_demo_walk_p->speed = speed; + req_demo_walk_p->wait_flag = wait_flag; + Player_actor_request_main_index(game, mPlayer_INDEX_DEMO_WALK, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Demo_walk(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_request_demo_walk_c* req_demo_walk_p = &player->requested_main_index_data.demo_walk; + int anim0_idx = mPlayer_ANIM_WALK1; + int anim1_idx; + int part_table_idx; + + mPlib_Set_goal_player_demo_walk(req_demo_walk_p->goal_pos_x, req_demo_walk_p->goal_pos_z, req_demo_walk_p->speed); + mPlib_Set_continue_player_after_demo_walk(req_demo_walk_p->wait_flag); + mPlib_Set_end_player_demo_walk(FALSE); + + if (mPlib_Get_continue_player_after_demo_walk() == FALSE) { + xyz_t demo_pos; + f32 dist; + + Player_actor_Get_DemoPosition(&demo_pos); + dist = Math3DLengthSquare2D(demo_pos.x, demo_pos.z, actorx->world.position.x, actorx->world.position.z); + if (dist < SQ(10.0f)) { + anim0_idx = mPlayer_ANIM_WAIT1; + } + } + + Player_actor_SetupItem_Base1(actorx, anim0_idx, -5.0f, &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actorx, game, anim0_idx, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, part_table_idx); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_CulcAnimation_Demo_walk(ACTOR* actorx, f32 over_speed_normalize_NoneZero, + f32* last_anim0_cur_frame_p) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + f32 dummy; + + if (player->animation0_idx != mPlayer_ANIM_WAIT1) { + Player_actor_CulcAnimation_Walk(actorx, over_speed_normalize_NoneZero, last_anim0_cur_frame_p); + } else { + Player_actor_CulcAnimation_Base2(actorx, &dummy); + } +} + +static void Player_actor_SearchAnimation_Demo_walk(ACTOR* actorx, GAME* game, f32 frame) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (player->animation0_idx != mPlayer_ANIM_WAIT1) { + Player_actor_SearchAnimation_Walk(actorx, game, frame); + } +} + +static int Player_actor_Movement_Demo_walk(ACTOR* actorx, f32* over_speed_normalize_NoneZero_p) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + f32 over_speed_normalize_NoneZero = + Player_actor_Culc_over_speed_normalize_NoneZero(actorx, &actorx->world.position); + xyz_t demo_pos; + f32 demo_posX; + f32 demo_posZ; + f32 dx; + f32 dz; + f32 speed; + s16 goal_angle_y; + + Player_actor_Get_DemoPosition(&demo_pos); + demo_posX = demo_pos.x; + demo_posZ = demo_pos.z; + dx = demo_posX - actorx->world.position.x; + dz = demo_posZ - actorx->world.position.z; + speed = Player_actor_Get_DemoMoveSpeedF(); + goal_angle_y = actorx->world.angle.y; + + if (dx != 0.0f || dz != 0.0f) { + f32 speed_mod = speed / 3.525f; + + goal_angle_y = atans_table(dz, dx); + if (speed_mod >= 1.0f) { + speed_mod = 0.5f; + } else if (speed_mod <= 0.05f) { + speed_mod = 0.01f; + } else { + speed_mod = 0.01f + (speed_mod - 0.05f) * 0.5157895f; + } + + speed_mod = sqrtf(1.0f - speed_mod); + add_calc_short_angle2(&actorx->world.angle.y, goal_angle_y, 1.0f - speed_mod, 2500, 50); + if (player->animation0_idx != mPlayer_ANIM_WAIT1) { + actorx->shape_info.rotation.y = actorx->world.angle.y; + } + } + + { + f32 cos; + f32 now_speed; + + speed /= over_speed_normalize_NoneZero; + cos = cos_s(goal_angle_y - actorx->world.angle.y); + + if (cos <= 0.0f) { + speed = 0.0f; + } else { + speed *= cos; + } + + now_speed = actorx->speed; + if (now_speed != speed) { + if (now_speed < speed) { + now_speed += 0.609f; + + if (now_speed > speed) { + now_speed = speed; + } + } else if (now_speed > speed) { + now_speed -= 0.32625f; + if (now_speed < speed) { + now_speed = speed; + } + } + + actorx->speed = now_speed; + } + } + + { + f32 dist = sqrtf(SQ(dx) + SQ(dz)); + + if (actorx->speed < 0.5f) { + actorx->speed = 0.5f; + speed = 0.5f; + } + + if (dist >= speed * 2.0f) { + if (over_speed_normalize_NoneZero == 1.0f) { + xyz_t wpos = actorx->world.position; + s16 angle_y = actorx->world.angle.y; + f32 speed = actorx->speed; + f32 speedX = (speed * 0.5f) * sin_s(angle_y); + f32 speedZ = (speed * 0.5f) * cos_s(angle_y); + f32 tmp; + + wpos.x += speedX; + wpos.z += speedZ; + tmp = Player_actor_Culc_over_speed_normalize_NoneZero(actorx, &wpos); + if (tmp != 1.0f) { + actorx->speed /= tmp; + over_speed_normalize_NoneZero = tmp; + } + } + } else if (dist < 0.5f) { + actorx->speed = dist; + } else { + actorx->speed = dist / 2.0f; + } + } + + Player_actor_Movement_Base(actorx); + { + f32 now_dx = demo_posX - actorx->world.position.x; + f32 now_dz = demo_posZ - actorx->world.position.z; + + now_dx = ABS(now_dx); + if (now_dx < 0.5f) { + actorx->world.position.x = demo_posX; + } + + now_dz = ABS(now_dz); + if (now_dz < 0.5f) { + actorx->world.position.z = demo_posZ; + } + + *over_speed_normalize_NoneZero_p = over_speed_normalize_NoneZero; + if (demo_posX == actorx->world.position.x && demo_posZ == actorx->world.position.z) { + return TRUE; + } + } + + return FALSE; +} + +static void Player_actor_ObjCheck_Demo_walk(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Demo_walk(ACTOR* actorx) { + Player_actor_BGcheck_common_type1(actorx); +} + +static void Player_actor_request_proc_index_fromDemo_walk(ACTOR* actorx, GAME* game, int end_flag) { + if (end_flag) { + mPlib_Set_end_player_demo_walk(TRUE); + if (mPlib_Get_continue_player_after_demo_walk() == FALSE) { + if (Player_actor_request_main_demo_wait_all(game, FALSE, 0, mPlayer_REQUEST_PRIORITY_19)) { + if (Player_actor_Get_DemoOrder() == 1) { + Player_actor_Set_DemoOrder(0); + } + } + } + } else { + Player_actor_Set_ScrollDemo_forDemo_wade(actorx); + } +} + +static void Player_actor_main_Demo_walk(ACTOR* actorx, GAME* game) { + f32 over_speed_normalize_NoneZero; + f32 last_anim0_cur_frame; + int end_flag; + + end_flag = Player_actor_Movement_Demo_walk(actorx, &over_speed_normalize_NoneZero); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_CulcAnimation_Demo_walk(actorx, over_speed_normalize_NoneZero, &last_anim0_cur_frame); + Player_actor_SearchAnimation_Demo_walk(actorx, game, last_anim0_cur_frame); + Player_actor_set_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Demo_walk(actorx, game); + Player_actor_BGcheck_Demo_walk(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromDemo_walk(actorx, game, end_flag); +} diff --git a/src/m_player_main_groundhog.c_inc b/src/m_player_main_groundhog.c_inc index e69de29b..5c5b9208 100644 --- a/src/m_player_main_groundhog.c_inc +++ b/src/m_player_main_groundhog.c_inc @@ -0,0 +1,40 @@ +static int Player_actor_request_main_groundhog(GAME* game, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_GROUNDHOG, prio)) { + Player_actor_request_main_index(game, mPlayer_INDEX_GROUNDHOG, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Groundhog(ACTOR* actorx, GAME* game) { + int anim1_idx; + int part_table_idx; + + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_WAIT1, 0.0f, &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actorx, game, mPlayer_ANIM_WAIT1, anim1_idx, 1.0f, 1.0f, 0.5f, 0.0f, + part_table_idx); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_CulcAnimation_Groundhog(ACTOR* actorx) { + Player_actor_CulcAnimation_Base(actorx); +} + +static void Player_actor_ObjCheck_Groundhog(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Groundhog(ACTOR* actorx) { + Player_actor_BGcheck_common_type1(actorx); +} + +static void Player_actor_main_Groundhog(ACTOR* actorx, GAME* game) { + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_CulcAnimation_Groundhog(actorx); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Groundhog(actorx, game); + Player_actor_BGcheck_Groundhog(actorx); + Player_actor_Item_main(actorx, game); +} diff --git a/src/m_player_main_hide.c_inc b/src/m_player_main_hide.c_inc index e69de29b..f7b39bfb 100644 --- a/src/m_player_main_hide.c_inc +++ b/src/m_player_main_hide.c_inc @@ -0,0 +1,17 @@ +static int Player_actor_request_main_hide_all(GAME* game, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_HIDE, prio)) { + Player_actor_request_main_index(game, mPlayer_INDEX_HIDE, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Hide(ACTOR* actorx, GAME* game) { + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_main_Hide(ACTOR* actorx, GAME* game) { + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_recover_lean_angle(actorx); +} diff --git a/src/m_player_main_pray.c_inc b/src/m_player_main_pray.c_inc index e69de29b..81d6175d 100644 --- a/src/m_player_main_pray.c_inc +++ b/src/m_player_main_pray.c_inc @@ -0,0 +1,93 @@ +static int Player_actor_request_main_pray_all(GAME* game, const xyz_t* pos_p, s16 angle_y, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_PRAY, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_pray_c* req_pray_p = &player->requested_main_index_data.pray; + + Player_actor_request_main_index(game, mPlayer_INDEX_PRAY, priority); + + req_pray_p->pos = *pos_p; + req_pray_p->angle_y = angle_y; + + return TRUE; + } else { + return FALSE; + } +} + +static void Player_actor_setup_main_Pray(ACTOR* actorx, GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + mPlayer_request_pray_c* req_pray_p = &player->requested_main_index_data.pray; + + cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(kf0_p, 0.0f, 1000.0f, 0.0f, 0, 0, DEG2SHORT_ANGLE2(90.0f)); + cKF_SkeletonInfo_R_AnimationMove_ct_base(&actorx->world.position, &req_pray_p->pos, actorx->shape_info.rotation.y, + req_pray_p->angle_y, 5.0f, kf0_p, + cKF_ANIMATION_TRANS_XZ | cKF_ANIMATION_ROT_Y); + + Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_OMAIRI_US1, mPlayer_ANIM_OMAIRI_US1, 1.0f, 1.0f, 0.5f, + -5.0f, cKF_FRAMECONTROL_STOP, mPlayer_PART_TABLE_NORMAL); + Player_actor_setup_main_Base(actorx, game); + + if (Camera2_Check_main_index(play, CAMERA2_PROCESS_NORMAL)) { + Camera2_request_main_simple(play, &play->camera.lookat.center, &play->camera.direction, + play->camera.focus_distance, 0, 9); + } +} + +static void Player_actor_settle_main_Pray(ACTOR* actorx, GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_dt(kf0_p); + actorx->world.angle.y = actorx->shape_info.rotation.y; + + if (Camera2_Check_main_index(play, CAMERA2_PROCESS_SIMPLE)) { + Camera2_change_priority(play, 0); + Camera2_request_main_normal(play, 0, 9); + } +} + +static int Player_actor_CulcAnimation_Pray(ACTOR* actorx, f32* last_anim0_cur_frame_p) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame_p); +} + +static void Player_actor_Movement_Pray(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_base(&actorx->world.position, &actorx->shape_info.rotation.y, &actorx->scale, + actorx->world.angle.y, kf0_p); + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static void Player_actor_ObjCheck_Pray(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Pray(ACTOR* actorx) { + Player_actor_BGcheck_common_type1(actorx); +} + +static void Player_actor_request_proc_index_fromPray(ACTOR* actorx, GAME* game, int end_flag) { + if (end_flag) { + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_demo_wait_all(game, FALSE, 0, mPlayer_REQUEST_PRIORITY_19); + } +} + +static void Player_actor_main_Pray(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + int end_flag; + + end_flag = Player_actor_CulcAnimation_Pray(actorx, &last_anim0_cur_frame); + Player_actor_Movement_Pray(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Pray(actorx, game); + Player_actor_BGcheck_Pray(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromPray(actorx, game, end_flag); +} diff --git a/src/m_player_main_release_creature.c_inc b/src/m_player_main_release_creature.c_inc index e69de29b..b8859350 100644 --- a/src/m_player_main_release_creature.c_inc +++ b/src/m_player_main_release_creature.c_inc @@ -0,0 +1,300 @@ +static int Player_actor_request_main_release_creature_all(GAME* game, int type, int gold_scoop_flag, + mPlayer_request_release_creature_u* release_data, + ACTOR* release_actor_p, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_RELEASE_CREATURE, prio)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_release_creature_c* req_release_creature_p = + &player->requested_main_index_data.release_creature; + + Player_actor_request_main_index(game, mPlayer_INDEX_RELEASE_CREATURE, prio); + req_release_creature_p->type = type; + req_release_creature_p->gold_scoop_flag = gold_scoop_flag; + req_release_creature_p->data = *release_data; + req_release_creature_p->actor = release_actor_p; + return TRUE; + } + + return FALSE; +} + +static void Player_actor_request_main_release_creature_from_submenu(ACTOR* actorx, GAME* game) { + mPlayer_change_data_from_submenu_c* data_p = mPlib_Get_change_data_from_submenu_p(); + mPlayer_request_release_creature_c* req_release_creature_p = &data_p->request_main_data.release_creature; + + Player_actor_request_main_release_creature_all(game, req_release_creature_p->type, + req_release_creature_p->gold_scoop_flag, + &req_release_creature_p->data, NULL, mPlayer_REQUEST_PRIORITY_31); +} + +static void Player_actor_setup_main_Release_creature(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_request_release_creature_c* req_release_creature_p = &player->requested_main_index_data.release_creature; + mPlayer_main_release_creature_c* release_creature_p = &player->main_data.release_creature; + int type = req_release_creature_p->type; + int gold_scoop_flag = req_release_creature_p->gold_scoop_flag; + ACTOR* release_actor_p = req_release_creature_p->actor; + int anim1_idx; + int part_table_idx; + + if (release_actor_p == NULL) { + if (type == mPlayer_CREATURE_GYOEI) { + GAME_PLAY* play = (GAME_PLAY*)game; + mPlayer_request_release_creature_gyoei_c* gyoei_data_p = &req_release_creature_p->data.gyoei; + + release_actor_p = Actor_info_make_actor( + &play->actor_info, game, mAc_PROFILE_GYO_RELEASE, actorx->world.position.x, actorx->world.position.y, + actorx->world.position.z, 0, gyoei_data_p->angle_y, 0, play->block_table.block_x, + play->block_table.block_z, -1, EMPTY_NO, gyoei_data_p->_02, -1, -1); + } else if (type == mPlayer_CREATURE_INSECT) { + mPlayer_request_release_creature_insect_c* insect_data_p = &req_release_creature_p->data.insect; + + release_actor_p = + Common_Get(clip).insect_clip->make_actor_proc(game, insect_data_p->type, &insect_data_p->pos); + } else { + ACTOR* actor_p = player->balloon_actor; + + release_actor_p = actor_p; + if (actor_p != NULL) { + s_xyz angle; + f32 sin; + f32 cos; + xyz_t pos; + + angle.x = 0; + angle.y = actorx->shape_info.rotation.y; + angle.z = 0; + + sin = sin_s(angle.y); + cos = cos_s(angle.y); + + pos = actorx->world.position; + pos.y += 17.5f; + pos.x += 12.5f * sin + 10.0f * cos; + pos.z += 10.0f * cos - 12.5f * sin; + + Ac_Balloon_request_fly(player->balloon_actor, game, req_release_creature_p->data.balloon.balloon_type, + &angle, 0, &pos, -1.0f, 7.0f); + } + } + + release_creature_p->actor_birth_flag = TRUE; + } else { + release_creature_p->actor_birth_flag = FALSE; + } + + release_creature_p->type = type; + release_creature_p->golden_scoop_flag = gold_scoop_flag; + release_creature_p->release_actor_p = release_actor_p; + release_creature_p->timer = 0.0f; + + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_WAIT1, -5.0f, &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actorx, game, mPlayer_ANIM_WAIT1, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, + part_table_idx); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_settle_main_Release_creature(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + player->head_angle = ZeroSVec; +} + +static void Player_actor_Movement_Release_creature(ACTOR* actorx) { + Player_actor_Movement_Base_Braking_common(actorx, 0.23925f); +} + +static void Player_actor_CulcAnimation_Release_creature(ACTOR* actorx) { + f32 dummy; + + Player_actor_CulcAnimation_Base2(actorx, &dummy); +} + +static void Player_actor_ObjCheck_Release_creature(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Release_creature(ACTOR* actorx) { + Player_actor_BGcheck_common_type1(actorx); +} + +static void Player_actor_add_calc_head_angle(ACTOR* actorx, const s_xyz* target_angle_p) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_release_creature_c* release_creature_p = &player->main_data.release_creature; + s_xyz* head_angle_p = &player->head_angle; + + if (release_creature_p->type == mPlayer_CREATURE_BALLOON) { + if (target_angle_p->x != 0) { + add_calc_short_angle2(&head_angle_p->x, target_angle_p->x, 1.0f - sqrtf(0.75f), 500, 0); + } else { + add_calc_short_angle2(&head_angle_p->x, target_angle_p->x, 1.0f - sqrtf(0.5f), 500, 0); + } + + if (target_angle_p->y != 0) { + add_calc_short_angle2(&head_angle_p->y, target_angle_p->y, 1.0f - sqrtf(0.75f), 500, 0); + } else { + add_calc_short_angle2(&head_angle_p->y, target_angle_p->y, 1.0f - sqrtf(0.5f), 200, 0); + } + } else { + add_calc_short_angle2(&head_angle_p->x, target_angle_p->x, 1.0f - sqrtf(0.5f), 500, 0); + add_calc_short_angle2(&head_angle_p->y, target_angle_p->y, 1.0f - sqrtf(0.5f), 500, 0); + } +} + +static int Player_actor_Look_Release_creature(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_release_creature_c* release_creature_p = &player->main_data.release_creature; + ACTOR* actor_p; + int type = release_creature_p->type; + int exist_flag; + int ret = TRUE; + + if (type == mPlayer_CREATURE_GYOEI) { + if (release_creature_p->actor_birth_flag == FALSE) { + if (player->fishing_rod_actor_p != NULL) { + UKI_ACTOR* uki = (UKI_ACTOR*)player->fishing_rod_actor_p; + + actor_p = uki->child_actor; + release_creature_p->release_actor_p = actor_p; + } else { + actor_p = release_creature_p->release_actor_p; + } + } else { + actor_p = release_creature_p->release_actor_p; + } + } else { + actor_p = release_creature_p->release_actor_p; + } + + if (actor_p == NULL) { + Player_actor_add_calc_head_angle(actorx, &ZeroSVec); + return TRUE; + } + + if (type == mPlayer_CREATURE_INSECT) { + aINS_INSECT_ACTOR* insect_actor = (aINS_INSECT_ACTOR*)actor_p; + + exist_flag = insect_actor->insect_flags.destruct == FALSE; + } else if (type == mPlayer_CREATURE_GYOEI) { + GYO_RELEASE_ACTOR* gyo_release = (GYO_RELEASE_ACTOR*)actor_p; + + exist_flag = gyo_release->exist_flag != FALSE; + } else if (type == mPlayer_CREATURE_BALLOON) { + BALLOON_ACTOR* balloon_actor = (BALLOON_ACTOR*)actor_p; + int main_mode = balloon_actor->main_mode; + int setup_mode = balloon_actor->setup_mode; + + if (main_mode == 1 || setup_mode >= 0) { + exist_flag = TRUE; + ret = FALSE; + } else { + exist_flag = FALSE; + } + } else { + Player_actor_add_calc_head_angle(actorx, &ZeroSVec); + return TRUE; + } + + if (exist_flag == FALSE) { + release_creature_p->release_actor_p = NULL; + Player_actor_add_calc_head_angle(actorx, &ZeroSVec); + return ret; + } else { + f32* timer_p = &release_creature_p->timer; + s_xyz angle = ZeroSVec; + + if (*timer_p < 60.0f) { + xyz_t dist; + f32 dist_xz; + + dist.x = actor_p->world.position.x - actorx->eye.position.x; + dist.y = actor_p->world.position.y - actorx->eye.position.y; + dist.z = actor_p->world.position.z - actorx->eye.position.z; + + if (type == mPlayer_CREATURE_BALLOON) { + dist.y += 50.0f; + } + + dist_xz = Math3DVecLength2D(dist.x, dist.z); + if ((dist_xz >= 18.0f && type != mPlayer_CREATURE_BALLOON) || + (dist_xz >= 10.0f && type == mPlayer_CREATURE_BALLOON)) { + int dist_angle_y = atans_table(dist.z, dist.x); + int diff_angle_y = dist_angle_y - actorx->shape_info.rotation.y; + int abs_diff_angle_y; + int dist_angle_x = atans_table(dist_xz, dist.y); + int diff_angle_x = dist_angle_x - actorx->shape_info.rotation.x; + int abs_diff_angle_x; + + if (diff_angle_y > DEG2SHORT_ANGLE2(180.0f)) { + diff_angle_y -= DEG2SHORT_ANGLE2(360.0f); + } else if (diff_angle_y < DEG2SHORT_ANGLE2(-180.0f)) { + diff_angle_y += DEG2SHORT_ANGLE2(360.0f); + } + + abs_diff_angle_y = ABS(diff_angle_y); + + if (abs_diff_angle_y < DEG2SHORT_ANGLE2(60.0f)) { + angle.x = dist_angle_y - actorx->shape_info.rotation.y; + } else if (diff_angle_y > 0) { + angle.x = DEG2SHORT_ANGLE2(60.0f); + } else { + angle.x = DEG2SHORT_ANGLE2(-60.0f); + } + + if (diff_angle_x > DEG2SHORT_ANGLE2(180.0f)) { + diff_angle_x -= DEG2SHORT_ANGLE2(360.0f); + } else if (diff_angle_x < DEG2SHORT_ANGLE2(-180.0f)) { + diff_angle_x += DEG2SHORT_ANGLE2(360.0f); + } + + abs_diff_angle_x = ABS(diff_angle_x); + + if (abs_diff_angle_x < DEG2SHORT_ANGLE2(30.0f)) { + angle.y = dist_angle_x - actorx->shape_info.rotation.x; + } else if (diff_angle_x > 0) { + angle.y = DEG2SHORT_ANGLE2(30.0f); + } else { + angle.y = DEG2SHORT_ANGLE2(-30.0f); + } + } + } + + Player_actor_add_calc_head_angle(actorx, &angle); + } + + return ret; +} + +static void Player_actor_request_proc_index_fromRelease_creature(ACTOR* actorx, GAME* game, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_release_creature_c* release_creature_p = &player->main_data.release_creature; + f32* timer_p = &release_creature_p->timer; + + (*timer_p) += 1.0f; + if (*timer_p >= 84.0f && end_flag) { + Player_actor_SettleRequestMainIndexPriority(actorx); + + if (release_creature_p->golden_scoop_flag == FALSE) { + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } else { + Player_actor_request_main_demo_get_golden_item_all(game, mPlayer_GOLDEN_ITEM_TYPE_SHOVEL, + mPlayer_REQUEST_PRIORITY_34); + } + + *timer_p = 84.0f; + } +} + +static void Player_actor_main_Release_creature(ACTOR* actorx, GAME* game) { + int end_flag; + + Player_actor_Movement_Release_creature(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_CulcAnimation_Release_creature(actorx); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Release_creature(actorx, game); + Player_actor_BGcheck_Release_creature(actorx); + end_flag = Player_actor_Look_Release_creature(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromRelease_creature(actorx, game, end_flag); +} diff --git a/src/m_player_main_rotate_octagon.c_inc b/src/m_player_main_rotate_octagon.c_inc index e69de29b..328faf7a 100644 --- a/src/m_player_main_rotate_octagon.c_inc +++ b/src/m_player_main_rotate_octagon.c_inc @@ -0,0 +1,100 @@ +static int Player_actor_request_main_rotate_octagon_all(GAME* game, ACTOR* talk_actor_p, int turn_flag, + int ret_main_index, const xyz_t* pos_p, s16 angle_y, + int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_ROTATE_OCTAGON, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_rotate_octagon_c* req_rotate_octagon_p = &player->requested_main_index_data.rotate_octagon; + + Player_actor_request_main_index(game, mPlayer_INDEX_ROTATE_OCTAGON, priority); + + req_rotate_octagon_p->talk_actor = talk_actor_p; + req_rotate_octagon_p->turn_flag = turn_flag; + req_rotate_octagon_p->prev_main_index = ret_main_index; + req_rotate_octagon_p->pos = *pos_p; + req_rotate_octagon_p->angle_y = angle_y; + + return TRUE; + } else { + return FALSE; + } +} + +static void Player_actor_setup_main_Rotate_octagon(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + mPlayer_request_rotate_octagon_c* req_rotate_octagon_p = &player->requested_main_index_data.rotate_octagon; + mPlayer_main_rotate_octagon_c* rotate_octagon_p = &player->main_data.rotate_octagon; + + rotate_octagon_p->talk_actor_p = req_rotate_octagon_p->talk_actor; + rotate_octagon_p->turn_flag = req_rotate_octagon_p->turn_flag; + rotate_octagon_p->return_main_index = req_rotate_octagon_p->prev_main_index; + + cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(kf0_p, 0.0f, 1000.0f, 0.0f, 0, 0, DEG2SHORT_ANGLE2(90.0f)); + cKF_SkeletonInfo_R_AnimationMove_ct_base(&actorx->world.position, &req_rotate_octagon_p->pos, + actorx->shape_info.rotation.y, req_rotate_octagon_p->angle_y, 5.0f, kf0_p, + cKF_ANIMATION_TRANS_XZ | cKF_ANIMATION_ROT_Y); + + Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_FUKUBIKI1, mPlayer_ANIM_FUKUBIKI1, 1.0f, 1.0f, 0.5f, + -5.0f, cKF_FRAMECONTROL_STOP, mPlayer_PART_TABLE_NORMAL); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_settle_main_Rotate_octagon(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_dt(kf0_p); + actorx->world.angle.y = actorx->shape_info.rotation.y; +} + +static void Player_actor_Movement_Rotate_octagon(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_base(&actorx->world.position, &actorx->shape_info.rotation.y, &actorx->scale, + actorx->world.angle.y, kf0_p); + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static int Player_actor_CulcAnimation_Rotate_octagon(ACTOR* actorx, f32* last_anim0_cur_frame_p) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame_p); +} + +static void Player_actor_ObjCheck_Rotate_octagon(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Rotate_octagon(ACTOR* actorx) { + Player_actor_BGcheck_common_type1(actorx); +} + +static void Player_actor_request_proc_index_fromRotate_octagon(ACTOR* actorx, GAME* game, int end_flag) { + if (end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_rotate_octagon_c* rotate_octagon_p = &player->main_data.rotate_octagon; + int return_main_index = rotate_octagon_p->return_main_index; + + Player_actor_SettleRequestMainIndexPriority(actorx); + if (return_main_index != mPlayer_INDEX_TALK) { + Player_actor_request_main_demo_wait_all(game, FALSE, 0, mPlayer_REQUEST_PRIORITY_19); + } else { + Player_actor_request_main_talk_all(game, rotate_octagon_p->talk_actor_p, rotate_octagon_p->turn_flag, -5.0f, + FALSE, mPlayer_REQUEST_PRIORITY_19); + } + } +} + +static void Player_actor_main_Rotate_octagon(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + int end_flag; + + end_flag = Player_actor_CulcAnimation_Rotate_octagon(actorx, &last_anim0_cur_frame); + Player_actor_Movement_Rotate_octagon(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Rotate_octagon(actorx, game); + Player_actor_BGcheck_Rotate_octagon(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromRotate_octagon(actorx, game, end_flag); +} diff --git a/src/m_player_main_run.c_inc b/src/m_player_main_run.c_inc index 2ba4580a..68214441 100644 --- a/src/m_player_main_run.c_inc +++ b/src/m_player_main_run.c_inc @@ -25,7 +25,8 @@ static void Player_actor_setup_main_Run_common(ACTOR* actor, GAME* game) { absspeed = ABS(speed); Player_actor_SetupItem_Base3(actor, mPlayer_ANIM_RUN1, -absspeed, &anim_idx, &part_table_idx); - Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_RUN1, anim_idx, frame, 1.0f, 0.5f, speed, part_table_idx); + Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_RUN1, anim_idx, frame, 1.0f, 0.5f, speed, + part_table_idx); if (flags & 1) { Player_actor_SetEffect_forTakeout_item(actor, game); @@ -34,12 +35,12 @@ static void Player_actor_setup_main_Run_common(ACTOR* actor, GAME* game) { Player_actor_setup_main_Base(actor, game); } -static void Player_actor_setup_main_Run(ACTOR* actor, GAME* game) { - Player_actor_setup_main_Run_common(actor, game); +static void Player_actor_setup_main_Run(ACTOR* actor, GAME* game) { + Player_actor_setup_main_Run_common(actor, game); } -static void Player_actor_CulcAnimation_Run(ACTOR* actor, f32* frame_calc, f32 frame) { - Player_actor_CulcAnimation_Walk(actor, frame_calc, frame); +static void Player_actor_CulcAnimation_Run(ACTOR* actor, f32 over_speed_normalize_NoneZero, f32* frame_calc) { + Player_actor_CulcAnimation_Walk(actor, over_speed_normalize_NoneZero, frame_calc); } static void Player_actor_SetEffect_Run(ACTOR* actor, GAME* game, f32 left_target_frame, f32 right_target_frame) { @@ -53,16 +54,16 @@ static void Player_actor_SearchAnimation_Run(ACTOR* actor, GAME* game, f32 frame } } -static void Player_actor_Movement_Run(ACTOR* actor, GAME* game, f32* frame) { - Player_actor_Movement_Walk(actor, game, frame); +static void Player_actor_Movement_Run(ACTOR* actor, GAME* game, f32* frame) { + Player_actor_Movement_Walk(actor, game, frame); } -static void Player_actor_ObjCheck_Run(ACTOR* actor, GAME* game) { - Player_actor_Excute_Corect_forStand(actor, game); +static void Player_actor_ObjCheck_Run(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); } -static void Player_actor_BGcheck_Run(ACTOR* actor) { - Player_actor_BGcheck_common_type1(actor); +static void Player_actor_BGcheck_Run(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); } static void Player_actor_request_proc_index_fromRun_common(ACTOR* actor, GAME* game) { @@ -107,12 +108,12 @@ static void Player_actor_request_proc_index_fromRun(ACTOR* actor, GAME* game) { } static void Player_actor_main_Run(ACTOR* actor, GAME* game) { - f32 frame; + f32 over_speed_normalize_NoneZero; f32 frame_calc; - Player_actor_Movement_Run(actor, game, &frame); + Player_actor_Movement_Run(actor, game, &over_speed_normalize_NoneZero); Player_actor_Reinput_force_position_angle(actor, game); - Player_actor_CulcAnimation_Run(actor, &frame_calc, frame); + Player_actor_CulcAnimation_Run(actor, over_speed_normalize_NoneZero, &frame_calc); Player_actor_SearchAnimation_Run(actor, game, frame_calc); Player_actor_set_lean_angle(actor); Player_actor_set_eye_pattern_normal(actor); diff --git a/src/m_player_main_throw_money.c_inc b/src/m_player_main_throw_money.c_inc index e69de29b..7b0a0921 100644 --- a/src/m_player_main_throw_money.c_inc +++ b/src/m_player_main_throw_money.c_inc @@ -0,0 +1,116 @@ +static int Player_actor_request_main_throw_money_all(GAME* game, const xyz_t* pos_p, s16 angle_y, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_THROW_MONEY, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_throw_money_c* req_throw_money_p = &player->requested_main_index_data.throw_money; + + Player_actor_request_main_index(game, mPlayer_INDEX_THROW_MONEY, priority); + + req_throw_money_p->pos = *pos_p; + req_throw_money_p->angle_y = angle_y; + + return TRUE; + } else { + return FALSE; + } +} + +static void Player_actor_setup_main_Throw_money(ACTOR* actorx, GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + mPlayer_request_throw_money_c* req_throw_money_p = &player->requested_main_index_data.throw_money; + + cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(kf0_p, 0.0f, 1000.0f, 0.0f, 0, 0, DEG2SHORT_ANGLE2(90.0f)); + cKF_SkeletonInfo_R_AnimationMove_ct_base(&actorx->world.position, &req_throw_money_p->pos, + actorx->shape_info.rotation.y, req_throw_money_p->angle_y, 5.0f, kf0_p, + cKF_ANIMATION_TRANS_XZ | cKF_ANIMATION_ROT_Y); + + Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_SAISEN1, mPlayer_ANIM_SAISEN1, 1.0f, 1.0f, 0.5f, -5.0f, + cKF_FRAMECONTROL_STOP, mPlayer_PART_TABLE_NORMAL); + Player_actor_setup_main_Base(actorx, game); + + if (Camera2_Check_main_index(play, CAMERA2_PROCESS_NORMAL)) { + Camera2_request_main_simple(play, &play->camera.lookat.center, &play->camera.direction, + play->camera.focus_distance, 0, 9); + } +} + +static void Player_actor_settle_main_Throw_money(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_dt(kf0_p); + actorx->world.angle.y = actorx->shape_info.rotation.y; +} + +static int Player_actor_CulcAnimation_Throw_money(ACTOR* actorx, f32* last_anim0_cur_frame_p) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame_p); +} + +static void Player_actor_Movement_Throw_money(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_base(&actorx->world.position, &actorx->shape_info.rotation.y, &actorx->scale, + actorx->world.angle.y, kf0_p); + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static void Player_actor_ObjCheck_Throw_money(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Throw_money(ACTOR* actorx) { + Player_actor_BGcheck_common_type1(actorx); +} + +static void Player_actor_SetSound_Throw_money(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + + if (Player_actor_Check_AnimationFrame(fc0_p, 9.0f)) { + Player_actor_sound_coin_gasagoso(actorx); + } +} + +static void Player_actor_SetEffect_Throw_money(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + + if (Player_actor_Check_AnimationFrame(fc0_p, 33.0f)) { + eEC_CLIP->effect_make_proc(eEC_EFFECT_COIN, actorx->world.position, 2, 0, game, RSV_NO, 0, 0); + } +} + +static void Player_actor_SearchAnimation_Throw_money(ACTOR* actorx, GAME* game, f32 frame) { + if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE) { + Player_actor_SetSound_Throw_money(actorx); + Player_actor_SetEffect_Throw_money(actorx, game); + } +} + +static void Player_actor_request_proc_index_fromThrow_money(ACTOR* actorx, GAME* game, int end_flag) { + if (end_flag) { + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_pray_all(game, &actorx->world.position, actorx->shape_info.rotation.y, + mPlayer_REQUEST_PRIORITY_19); + } +} + +static void Player_actor_main_Throw_money(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + int end_flag; + + end_flag = Player_actor_CulcAnimation_Throw_money(actorx, &last_anim0_cur_frame); + Player_actor_Movement_Throw_money(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_SearchAnimation_Throw_money(actorx, game, last_anim0_cur_frame); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Throw_money(actorx, game); + Player_actor_BGcheck_Throw_money(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromThrow_money(actorx, game, end_flag); +} diff --git a/src/m_player_main_tired.c_inc b/src/m_player_main_tired.c_inc index e69de29b..98c61440 100644 --- a/src/m_player_main_tired.c_inc +++ b/src/m_player_main_tired.c_inc @@ -0,0 +1,63 @@ +static int Player_actor_request_main_tired_all(GAME* game, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_TIRED, priority)) { + Player_actor_request_main_index(game, mPlayer_INDEX_TIRED, priority); + return TRUE; + } else { + return FALSE; + } +} + +static void Player_actor_setup_main_Tired(ACTOR* actorx, GAME* game) { + Player_actor_InitAnimation_Base1(actorx, game, mPlayer_ANIM_TIRED1, mPlayer_ANIM_TIRED1, 1.0f, 1.0f, 0.5f, 0.0f, + mPlayer_PART_TABLE_NORMAL); + Player_actor_set_eye_pattern(actorx, 4); + Player_actor_set_mouth_pattern(actorx, 4); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_Movement_Tired(ACTOR* actorx) { + Player_actor_Movement_Base_Braking_common(actorx, 0.23925f); +} + +static void Player_actor_CulcAnimation_Tired(ACTOR* actorx, f32* last_anim0_cur_frame_p) { + Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame_p); +} + +static void Player_actor_SetEffect_Tired(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + + if (Player_actor_Check_AnimationFrame(fc0_p, 10.0f)) { + Player_actor_sound_araiiki(actorx); + eEC_CLIP->effect_make_proc(eEC_EFFECT_DUST, player->feel_pos, 2, actorx->shape_info.rotation.y, game, RSV_NO, 0, + 0); + } +} + +static void Player_actor_SearchAnimation_Tired(ACTOR* actorx, GAME* game, f32 frame) { + if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE) { + Player_actor_SetEffect_Tired(actorx, game); + } +} + +static void Player_actor_ObjCheck_Tired(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Tired(ACTOR* actorx) { + Player_actor_BGcheck_common_type1(actorx); +} + +static void Player_actor_main_Tired(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + + Player_actor_Movement_Tired(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_CulcAnimation_Tired(actorx, &last_anim0_cur_frame); + Player_actor_SearchAnimation_Tired(actorx, game, last_anim0_cur_frame); + Player_actor_recover_lean_angle(actorx); + Player_actor_ObjCheck_Tired(actorx, game); + Player_actor_BGcheck_Tired(actorx); + Player_actor_Item_main(actorx, game); +} diff --git a/src/m_player_main_tumble_getup.c_inc b/src/m_player_main_tumble_getup.c_inc index c7aad9da..5d7c74a9 100644 --- a/src/m_player_main_tumble_getup.c_inc +++ b/src/m_player_main_tumble_getup.c_inc @@ -18,6 +18,7 @@ static void Player_actor_setup_Item_Tumble_getup(ACTOR* actor, GAME* game, int k if (check && balloon) { s_xyz angle; + xyz_t pos; f32 frame; player->main_data.balloon.balloon_shape_type = mPlib_Get_ItemKindTOBalloonShapeType(kind); @@ -29,8 +30,9 @@ static void Player_actor_setup_Item_Tumble_getup(ACTOR* actor, GAME* game, int k angle.y = actor->shape_info.rotation.y; angle.z = 0; + pos = player->right_hand_pos; Ac_Balloon_request_fly(player->balloon_actor, game, player->main_data.balloon.balloon_shape_type, &angle, - player->balloon_angle.z, player->right_hand_pos, frame, 7.0f); + player->balloon_angle.z, &pos, frame, 7.0f); } else { player->main_data.balloon.balloon_shape_type = -1; } @@ -111,7 +113,8 @@ static void Player_actor_request_proc_index_fromTumble_getup(ACTOR* actor, GAME* Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); } else { type = player->main_data.balloon.balloon_shape_type; - Player_actor_request_main_release_creature_all(game, 2, 0, &type, player->balloon_actor, mPlayer_REQUEST_PRIORITY_30); + Player_actor_request_main_release_creature_all(game, 2, 0, &type, player->balloon_actor, + mPlayer_REQUEST_PRIORITY_30); } } } diff --git a/src/m_player_main_walk.c_inc b/src/m_player_main_walk.c_inc index 1bac0fb0..5828ba82 100644 --- a/src/m_player_main_walk.c_inc +++ b/src/m_player_main_walk.c_inc @@ -75,9 +75,9 @@ static void Player_actor_settle_main_Walk(ACTOR* actor, GAME* game) { } } -static void Player_actor_CulcAnimation_Walk(ACTOR* actor, f32* frame_calc, f32 frame) { +static void Player_actor_CulcAnimation_Walk(ACTOR* actor, f32 over_speed_normalize_NoneZero, f32* frame_calc) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; - f32 sp = (actor->speed * frame) / 7.5f; + f32 sp = (actor->speed * over_speed_normalize_NoneZero) / 7.5f; sp = sqrtf(sp); sp = 0.6f * sp; @@ -270,12 +270,12 @@ static void Player_actor_request_proc_index_fromWalk(ACTOR* actor, GAME* game) { } static void Player_actor_main_Walk(ACTOR* actor, GAME* game) { - f32 frame; + f32 over_speed_normalize_NoneZero; f32 calc_frame; - Player_actor_Movement_Walk(actor, game, &frame); + Player_actor_Movement_Walk(actor, game, &over_speed_normalize_NoneZero); Player_actor_Reinput_force_position_angle(actor, game); - Player_actor_CulcAnimation_Walk(actor, &calc_frame, frame); + Player_actor_CulcAnimation_Walk(actor, over_speed_normalize_NoneZero, &calc_frame); Player_actor_SearchAnimation_Walk(actor, game, calc_frame); Player_actor_set_lean_angle(actor); Player_actor_set_eye_pattern_normal(actor); diff --git a/src/m_player_main_wash_car.c_inc b/src/m_player_main_wash_car.c_inc index e69de29b..a9616c0c 100644 --- a/src/m_player_main_wash_car.c_inc +++ b/src/m_player_main_wash_car.c_inc @@ -0,0 +1,129 @@ +static int Player_actor_request_main_wash_car_all(GAME* game, const xyz_t* car_pos_p, const xyz_t* orig_pos_p, + s16 orig_angle_y, ACTOR* parent_actor, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_WASH_CAR, prio)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_wash_car_c* req_wash_car_p = &player->requested_main_index_data.wash_car; + + Player_actor_request_main_index(game, mPlayer_INDEX_WASH_CAR, prio); + req_wash_car_p->car_pos = *car_pos_p; + req_wash_car_p->orig_pos = *orig_pos_p; + req_wash_car_p->parent_actor = parent_actor; + req_wash_car_p->orig_angle_y = orig_angle_y; + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Wash_car(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_request_wash_car_c* req_wash_car_p = &player->requested_main_index_data.wash_car; + mPlayer_main_wash_car_c* wash_car_p = &player->main_data.wash_car; + + actorx->world.position = req_wash_car_p->car_pos; + wash_car_p->ret_pos = req_wash_car_p->orig_pos; + wash_car_p->ret_angle_y = req_wash_car_p->orig_angle_y; + wash_car_p->control_actor = req_wash_car_p->parent_actor; + wash_car_p->anime_idx = 0; + wash_car_p->change_anime_idx = 0; + wash_car_p->counter = 0; + wash_car_p->ret_order = FALSE; + wash_car_p->effect_flag = FALSE; + + actorx->shape_info.rotation.y = 0; + actorx->world.angle.y = 0; + + Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_WASH1, mPlayer_ANIM_WASH1, 1.0f, 1.0f, 0.0f, 0.0f, + cKF_FRAMECONTROL_STOP, mPlayer_PART_TABLE_NORMAL); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_settle_main_Wash_car(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_wash_car_c* wash_car_p = &player->main_data.wash_car; + + actorx->world.position = wash_car_p->ret_pos; + actorx->world.angle.y = actorx->shape_info.rotation.y = wash_car_p->ret_angle_y; + eEC_CLIP->effect_kill_proc(eEC_EFFECT_ASE2, RSV_NO); +} + +static int Player_actor_CulcAnimation_Wash_car(ACTOR* actorx, GAME* game, f32* last_anim0_cur_frame_p) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + mPlayer_main_wash_car_c* wash_car_p = &player->main_data.wash_car; + int* counter_p = &wash_car_p->counter; + int* change_anime_idx_p = &wash_car_p->change_anime_idx; + int end_flag; + + if (*change_anime_idx_p) { + int* anime_idx_p = &wash_car_p->anime_idx; + static const u8 data[] = { + mPlayer_ANIM_WASH1, mPlayer_ANIM_WASH2, mPlayer_ANIM_WASH3, mPlayer_ANIM_WASH4, mPlayer_ANIM_WASH5, + }; + int anim_idx; + f32 speed; + + (*anime_idx_p)++; + if (*anime_idx_p < 0 || *anime_idx_p >= 5) { + *anime_idx_p = 0; + } + + anim_idx = data[*anime_idx_p]; + speed = fc0_p->speed; + Player_actor_InitAnimation_Base2(actorx, game, anim_idx, anim_idx, 1.0f, 1.0f, speed, 0.0f, + cKF_FRAMECONTROL_STOP, mPlayer_PART_TABLE_NORMAL); + *counter_p = 0; + *change_anime_idx_p = FALSE; + wash_car_p->effect_flag = TRUE; + } + + end_flag = Player_actor_CulcAnimation_Base3(actorx, last_anim0_cur_frame_p); + if (end_flag) { + if (*counter_p >= 3) { + eEC_CLIP->effect_kill_proc(eEC_EFFECT_ASE2, RSV_NO); + *change_anime_idx_p = TRUE; + } else { + (*counter_p)++; + fc0_p->current_frame = 1.0f; + } + } + + return end_flag; +} + +static void Player_actor_SetEffect_Wash_car(ACTOR* actorx, f32 frame) { + if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_wash_car_c* wash_car_p = &player->main_data.wash_car; + + if (wash_car_p->change_anime_idx == FALSE) { + wash_car_p->effect_flag = TRUE; + } + } else { + eEC_CLIP->effect_kill_proc(eEC_EFFECT_ASE2, RSV_NO); + } +} + +static void Player_actor_SearchAnimation_Wash_car(ACTOR* actorx, f32 frame) { + Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame); // Unnecessary call, a leftover or mistake + Player_actor_SetEffect_Wash_car(actorx, frame); +} + +static void Player_actor_request_proc_index_fromWash_car(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_wash_car_c* wash_car_p = &player->main_data.wash_car; + + if (wash_car_p->ret_order) { + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_tired_all(game, mPlayer_REQUEST_PRIORITY_19); + } +} + +static void Player_actor_main_Wash_car(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + + Player_actor_CulcAnimation_Wash_car(actorx, game, &last_anim0_cur_frame); + Player_actor_SearchAnimation_Wash_car(actorx, last_anim0_cur_frame); + Player_actor_request_proc_index_fromWash_car(actorx, game); +} From d7e9118350d2e184e658ab32b0d2e0a37bc25407 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Wed, 11 Sep 2024 00:26:44 +0200 Subject: [PATCH 207/234] match m_player_main_swing_net --- include/m_player.h | 29 ++- src/m_player_main_swing_net.c_inc | 361 ++++++++++++++++++++++++++++++ 2 files changed, 388 insertions(+), 2 deletions(-) diff --git a/include/m_player.h b/include/m_player.h index aa435a51..162f5fb5 100644 --- a/include/m_player.h +++ b/include/m_player.h @@ -1088,11 +1088,11 @@ typedef struct player_request_reflect_axe_s { } mPlayer_request_reflect_axe_c; typedef struct player_request_notice_net_s { - int _00; + int already_collected; } mPlayer_request_notice_net_c; typedef struct player_request_putaway_net_s { - int _00; + int exchange_flag; } mPlayer_request_putaway_net_c; typedef struct player_request_cast_rod_s { @@ -1757,6 +1757,27 @@ typedef struct player_main_swing_net_s { f32 swing_timer; } mPlayer_main_swing_net_c; +typedef struct player_main_pull_net_s { + f32 timer; + int already_collected; +} mPlayer_main_pull_net_c; + +typedef struct player_main_stop_net_s { + int _00; +} mPlayer_main_stop_net_c; + +typedef struct player_main_notice_net_s { + int state; + int not_full_pocket; + int in_swap; + int already_collected; + int end_effect_flag; +} mPlayer_main_notice_net_c; + +typedef struct player_main_putaway_net_s { + int exchange_flag; +} mPlayer_main_putaway_net_c; + typedef struct player_main_demo_wade_s { int dir; xyz_t start_pos; @@ -1929,6 +1950,10 @@ typedef union { mPlayer_main_reflect_axe_c reflect_axe; mPlayer_main_broken_axe_c broken_axe; mPlayer_main_swing_net_c swing_net; + mPlayer_main_pull_net_c pull_net; + mPlayer_main_stop_net_c stop_net; + mPlayer_main_notice_net_c notice_net; + mPlayer_main_putaway_net_c putaway_net; mPlayer_main_slip_net_c slip_net; mPlayer_main_relax_rod_c relax_rod; mPlayer_main_dig_scoop_c dig_scoop; diff --git a/src/m_player_main_swing_net.c_inc b/src/m_player_main_swing_net.c_inc index e69de29b..ebbd7e08 100644 --- a/src/m_player_main_swing_net.c_inc +++ b/src/m_player_main_swing_net.c_inc @@ -0,0 +1,361 @@ +static int Player_actor_request_main_swing_net(GAME* game, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_SWING_NET, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + s8 kind = Player_actor_Get_ItemKind(&player->actor_class, player->now_main_index); + int net = FALSE; + + if (mPlayer_ITEM_IS_NET(kind)) { + net = TRUE; + } + + if (net) { + Player_actor_request_main_index(game, mPlayer_INDEX_SWING_NET, priority); + + return TRUE; + } + } + + return FALSE; +} + +static void Player_actor_setup_main_Swing_net(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int kind = Player_actor_Get_ItemKind_from_submenu(); + mPlayer_main_swing_net_c* main_swing = &player->main_data.swing_net; + + main_swing->swing_timer = 0.0f; + + Player_actor_SetupItem_Base2(actor, kind, mPlayer_ANIM_PICKUP1, mPlayer_INDEX_REFUSE_PICKUP, -5.0f, -1.0f, 1); + Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_NET_SWING1, mPlayer_ANIM_NET_SWING1, 1.0f, 1.0f, 0.5f, + -5.0f, 0, 0); + + Player_actor_setup_main_Base(actor, game); + Player_actor_Reset_Item_net_catch_request_table(actor); + + player->item_net_catch_label = 0; + player->item_net_catch_type = 0; + player->item_net_has_catch = FALSE; + + Player_actor_sound_AMI_FURI(actor); +} + +static void Player_actor_SetEffect_Swing_net(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + xyz_t pos; + f32 cur = player->keyframe0.frame_control.current_frame; + + if (8.5f < cur) { + if (cur <= 9.0f) { + s16 rot = actor->world.angle.y; + s16 attr; + + pos = actor->world.position; + pos.x += (50.0f * sin_s(rot)); + + pos.z += (50.0f * cos_s(rot)); + + attr = mCoBG_Wpos2Attribute(pos, NULL); + Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_SWING_NET, pos, 2, rot, game, RSV_NO, attr, 0); + } + } +} + +static void Player_actor_settle_main_Swing_net(ACTOR* actor, GAME* game) { + Player_actor_SetEffect_Swing_net(actor, game); +} + +static int Player_actor_HitBGCheck_Swing_net(ACTOR* actor, GAME* game, ACTOR** hit_actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + xyz_t pos; + xyz_t wpos; + f32 cur = player->keyframe0.frame_control.current_frame; + + *hit_actor = NULL; + + if (cur > 6.0f) { + int line_check; + + if (Player_actor_Check_OBJtoLine_forItem_net(actor, hit_actor)) { + return TRUE; + } + + line_check = mCoBG_LineCheck_RemoveFg(&pos, player->net_start_pos, player->net_end_pos, 0, 7); + + if (line_check & 4 || line_check & 8) { + if (Common_Get(clip).effect_clip != NULL) { + wpos = player->net_end_pos; + if (line_check & 4) { + wpos.y = 20.0f; + } else { + wpos.y = mCoBG_GetWaterHeight_File(player->net_end_pos, "../m_player_main_swing_net.c_inc", 171); + } + + Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_SWING_NET, wpos, 2, actor->world.angle.y, + game, RSV_NO, mCoBG_Wpos2Attribute(wpos, NULL), 1); + } + } + if (line_check & 1 || line_check & 2) { + return TRUE; + } + } + return FALSE; +} + +static int Player_actor_Item_CheckLocalCapture_forNet(const xyz_t* net_top_col, const xyz_t* arg1, const xyz_t* arg2, + const xyz_t* catch_pos_table, f32 sq, f32 rad_req) { + f32 len; + f32 x_calc; + f32 y_calc; + f32 z_calc; + f32 mod; + xyz_t calc2; + xyz_t calc_pos; + + xyz_t arg1_calc; + f32 sq_c; + + mod = (arg2->x * (catch_pos_table->x - net_top_col->x)) + (arg2->y * (catch_pos_table->y - net_top_col->y)) + + (arg2->z * (catch_pos_table->z - net_top_col->z)); + + x_calc = net_top_col->x + (arg2->x * mod); + y_calc = net_top_col->y + (arg2->y * mod); + z_calc = net_top_col->z + (arg2->z * mod); + + if (Player_actor_Get_ItemKind_from_submenu() == mPlayer_ITEM_KIND_GOLD_NET) { + len = 21.0f + rad_req; + } else { + len = 15.0f + rad_req; + } + + calc_pos.x = catch_pos_table->x - x_calc; + calc_pos.y = catch_pos_table->y - y_calc; + calc_pos.z = catch_pos_table->z - z_calc; + + if (Math3DVecLengthSquare(&calc_pos) > SQ(len)) { + return FALSE; + } + + calc2.x = catch_pos_table->x - net_top_col->x; + calc2.y = catch_pos_table->y - net_top_col->y; + calc2.z = catch_pos_table->z - net_top_col->z; + len = Math3DVecLength(&calc2); + + if (len != 0.0f) { + f32 inv = rad_req * (1.0f / len); + arg1_calc.x = calc2.x * inv; + arg1_calc.y = calc2.y * inv; + arg1_calc.z = calc2.z * inv; + } + + sq_c = + (arg1->x * (calc2.x - arg1_calc.x)) + (arg1->y * (calc2.y - arg1_calc.y)) + (arg1->z * (calc2.z - arg1_calc.z)); + + if (sq_c > sq) { + return 0; + } + + if (sq_c < 0.0f) { + return !((arg1->x * (calc2.x + arg1_calc.x)) + (arg1->y * (calc2.y + arg1_calc.y)) + + (arg1->z * (calc2.z + arg1_calc.z)) < + 0.0f); + } + return TRUE; +} + +static int Player_actor_CheckCaptureForce_forNet(ACTOR* actor, u32* label_req, s8* type_req) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (player->item_net_catch_label_request_force != 0) { + *label_req = player->item_net_catch_label_request_force; + *type_req = player->item_net_catch_type_request_force; + + return TRUE; + } else { + return FALSE; + } +} + +static int Player_actor_CheckCapture_forNet(ACTOR* actor, u32* label_req, s8* type_req) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int catch_num; + u32* req_label_table; + s8* type_table; + xyz_t* catch_pos_table; + f32* rad_req; + xyz_t* top_col; + + if (Player_actor_CheckCaptureForce_forNet(actor, label_req, type_req)) { + return TRUE; + } + + catch_num = player->item_net_catch_request_use_count; + + if (catch_num > 0 && catch_num <= mPlayer_NET_CATCH_TABLE_COUNT) { + f32 len; + int i = 0; + f32 inv; + xyz_t arg1; + xyz_t arg2; + + req_label_table = player->item_net_catch_label_request_table; + type_table = player->item_net_catch_type_request_table; + catch_pos_table = player->item_net_catch_pos_request_table; + rad_req = player->item_net_catch_radius_request_table; + top_col = &player->net_top_col_pos; + + if (Player_actor_Get_ItemKind_from_submenu() == mPlayer_ITEM_KIND_GOLD_NET) { + len = 60.0f; + } else { + len = 50.0f; + }; + + arg1.x = player->net_bot_col_pos.x - top_col->x; + arg1.y = player->net_bot_col_pos.y - top_col->y; + arg1.z = player->net_bot_col_pos.z - top_col->z; + + inv = 1.0f / len; + + arg2.x = arg1.x * inv; + arg2.y = arg1.y * inv; + arg2.z = arg1.z * inv; + + for (i = 0; i < catch_num; i++) { + if (Player_actor_Item_CheckLocalCapture_forNet(top_col, &arg1, &arg2, catch_pos_table, SQ(len), *rad_req)) { + *label_req = *req_label_table; + *type_req = *type_table; + return TRUE; + } + req_label_table++; + type_table++; + catch_pos_table++; + rad_req++; + } + } + return FALSE; +} + +static int Player_actor_CatchSomethingCheck_common(ACTOR* actor, f32 frame) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int ret = 0; + + if (player->keyframe0.frame_control.current_frame > frame) { + mPlayer_main_swing_net_c* main_swing = &player->main_data.swing_net; + u32 label; + s8 type; + u32 pl_label = player->item_net_catch_label; + + main_swing->swing_timer += 0.5f; + + if (pl_label == 0) { + if (Player_actor_CheckCapture_forNet(actor, &label, &type)) { + player->item_net_catch_label = label; + player->item_net_catch_type = type; + + if (type == 0 && label != 0) { + player->item_net_catch_insect_idx = ((aINS_INSECT_ACTOR*)label)->type; + } else if (label != 0) { + if (((ACTOR*)label)->id == mAc_PROFILE_BEE) { + player->item_net_catch_insect_idx = aSOI_INSECT_TYPE_BEE; + } else { + player->item_net_catch_insect_idx = aSOI_INSECT_TYPE_ANT; + } + } else { + player->item_net_catch_insect_idx = aSOI_INSECT_TYPE_INVALID; + } + Player_actor_sound_AMI_GET(actor); + ret = 1; + } + + } else { + ret = 2; + } + } + Player_actor_Reset_Item_net_catch_request_table(actor); + return ret; +} + +static int Player_actor_CatchSomethingCheck_Swing_net(ACTOR* actor) { + return Player_actor_CatchSomethingCheck_common(actor, 6.0f); +} + +static void Player_actor_CorrectSomething_Swing_net(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + xyz_t* pos = &player->net_pos; + u32 label = player->item_net_catch_label; + + if (label != 0 && player->item_net_catch_type == 0) { + ((ACTOR*)label)->drawn = FALSE; + } + + Player_actor_CorrectSomething_net(actor, pos); +} + +static void Player_actor_Movement_Swing_net(ACTOR* actor) { + Player_actor_Movement_Base_Braking_common(actor, 0.32625f); +} + +static int Player_actor_CulcAnimation_Swing_net(ACTOR* actor, f32* frame_calc, int check_type) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (check_type == 0) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); + } else { + player->keyframe0.frame_control.current_frame -= 0.5f; + *frame_calc = player->keyframe0.frame_control.current_frame; + return FALSE; + } +} + +static void Player_actor_SearchAnimation_Swing_net(ACTOR* actor, GAME* game, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_Set_FootMark_Base1(actor, game, FALSE, FALSE); + } +} + +static void Player_actor_ObjCheck_Swing_net(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Swing_net(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_request_proc_index_fromSwing_net(ACTOR* actor, GAME* game, int end_flag, int hit, + int check_type, ACTOR* hit_actor) { + if (end_flag != FALSE || hit != FALSE) { + if (check_type != 0) { + if (Player_actor_request_main_pull_net(game, mPlayer_REQUEST_PRIORITY_26) && check_type == 2 && + hit != FALSE) { + Player_actor_sound_AMI_HIT(actor); + Player_actor_set_viblation_Swing_net(); + } + } else if (Player_actor_request_main_stop_net(game, mPlayer_REQUEST_PRIORITY_26)) { + Player_actor_CheckAndSet_UZAI_forNpc(hit_actor); + + if (hit != FALSE) { + Player_actor_sound_AMI_HIT(actor); + Player_actor_set_viblation_Swing_net(); + } + } + } +} + +static void Player_actor_main_Swing_net(ACTOR* actor, GAME* game) { + int end_flag; + f32 frame_calc; + u32 label; + int hit_check = Player_actor_HitBGCheck_Swing_net(actor, game, (ACTOR**)&label); + int check_type = Player_actor_CatchSomethingCheck_Swing_net(actor); + + Player_actor_CorrectSomething_Swing_net(actor); + Player_actor_Movement_Swing_net(actor); + Player_actor_Reinput_force_position_angle(actor, game); + end_flag = Player_actor_CulcAnimation_Swing_net(actor, &frame_calc, hit_check); + Player_actor_SearchAnimation_Swing_net(actor, game, frame_calc); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Swing_net(actor, game); + Player_actor_BGcheck_Swing_net(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromSwing_net(actor, game, end_flag, hit_check, check_type, (ACTOR*)label); +} From 0cc943382b0ee518a426b21c487b88e9efdd8b60 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Wed, 11 Sep 2024 00:29:14 +0200 Subject: [PATCH 208/234] match m_player_main_pull_net --- src/m_player_main_pull_net.c_inc | 217 +++++++++++++++++++++++++++++++ 1 file changed, 217 insertions(+) diff --git a/src/m_player_main_pull_net.c_inc b/src/m_player_main_pull_net.c_inc index e69de29b..4196db29 100644 --- a/src/m_player_main_pull_net.c_inc +++ b/src/m_player_main_pull_net.c_inc @@ -0,0 +1,217 @@ +static int Player_actor_request_main_pull_net(GAME* game, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_PULL_NET, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + s8 kind = Player_actor_Get_ItemKind(&player->actor_class, player->now_main_index); + int net = FALSE; + + if (mPlayer_ITEM_IS_NET(kind)) { + net = TRUE; + } + + if (net) { + Player_actor_request_main_index(game, mPlayer_INDEX_PULL_NET, priority); + + return TRUE; + } + } + + return FALSE; +} + +static void Player_actor_setup_main_Pull_net(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int kind = Player_actor_Get_ItemKind_from_submenu(); + mPlayer_main_pull_net_c* main_pull = &player->main_data.pull_net; + + main_pull->timer = 0.0f; + + Player_actor_SetupItem_Base2(actor, kind, mPlayer_ANIM_HOLD_WAIT1, mPlayer_INDEX_WAIT, -5.0f, -1.0f, 0); + Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_GET_M1, mPlayer_ANIM_GET_M1, 1.0f, 1.0f, 0.5f, -5.0f, 0, + 0); + + if (player->item_net_catch_label != 0) { + int idx = player->item_net_catch_insect_idx; + + if (idx == aSOI_INSECT_TYPE_SPIRIT) { + main_pull->already_collected = FALSE; + } else { + main_pull->already_collected = mSM_CHECK_LAST_INSECT_GET(idx); + } + } else { + main_pull->already_collected = FALSE; + } + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_Movement_Pull_net(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (player->keyframe0.frame_control.current_frame > 17.0f) { + add_calc_short_angle2(&actor->shape_info.rotation.y, 0, 1.0f - sqrtf(0.5), 2500, 50); + actor->world.angle.y = actor->shape_info.rotation.y; + } + + Player_actor_Movement_Base_Braking_common(actor, 0.32625f); +} + +static void Player_actor_CorrectSomething_Pull_net(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + xyz_t* pos; + + if (player->keyframe0.frame_control.current_frame > 17.0f) { + u32 label = player->item_net_catch_label; + + if (label != 0 && player->item_net_catch_type == 0) { + ((ACTOR*)label)->drawn = TRUE; + } + pos = &player->left_hand_pos; + + } else { + pos = &player->net_pos; + } + + Player_actor_CorrectSomething_net(actor, pos); +} + +static int Player_actor_CulcAnimation_Pull_net(ACTOR* actor, f32* frame_calc) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_ObjCheck_Pull_net(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Pull_net(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_SearchAnimation_Pull_net(ACTOR* actor, GAME* game, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_Set_FootMark_Base1(actor, game, FALSE, FALSE); + } +} + +static int Player_actor_Get_mushi_msg_num(int msg_offs) { + int ret_msg_no = msg_offs + 0x2FA1; + + if (msg_offs < 0x20) { + ret_msg_no = msg_offs + 0xA2C; + } + + return ret_msg_no; +} + +static void Player_actor_Pull_net_demo_ct(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + rgba_t color; + mMsg_Window_c* win = mMsg_Get_base_window_p(); + u32 label = player->item_net_catch_label; + s8 type = player->item_net_catch_type; + int msg_no = 0xA2C; + + if (label != 0) { + int idx = player->item_net_catch_insect_idx; + int main_index = player->now_main_index; + + if (type != 0) { + player->item_net_has_catch = TRUE; + } + if (idx == aSOI_INSECT_TYPE_SPIRIT) { + int item_idx = mPr_GetPossessionItemIdxKindWithCond(Save_GetPointer(private_data[Common_Get(player_no)]), + ITM_SPIRIT0, ITM_SPIRIT4, FALSE); + + if (item_idx == -1) { + msg_no = 0x2F03; + } else { + msg_no = Common_Get(now_private)->inventory.pockets[item_idx] + 0x1DC; + } + } else if (main_index == mPlayer_INDEX_PULL_NET) { + u8 str[16]; + mActor_name_t item; + mPlayer_main_pull_net_c* main_pull = &player->main_data.pull_net; + + if (main_pull->already_collected) { + if (type != 0) { + if (idx != aSOI_INSECT_TYPE_COMMON_BUTTERFLY) { + mIN_copy_name_str(str, ITM_INSECT08); + item = ITM_INSECT08; + } else { + mIN_copy_name_str(str, ITM_INSECT38); + item = ITM_INSECT38; + } + } else { + mIN_copy_name_str(str, ((aINS_INSECT_ACTOR*)label)->item); + item = ((aINS_INSECT_ACTOR*)label)->item; + } + mMsg_Set_item_str_art(win, mMsg_ITEM_STR0, str, sizeof(str), mIN_get_item_article(item)); + msg_no = 0xA4E; + } else { + msg_no = Player_actor_Get_mushi_msg_num(idx); + } + } else { + msg_no = Player_actor_Get_mushi_msg_num(idx); + } + } + mDemo_Set_msg_num(msg_no); + mDemo_Set_talk_display_name(FALSE); + mDemo_Set_camera(CAMERA2_PROCESS_ITEM); + mDemo_Set_ListenAble(); + mMsg_Set_LockContinue(win); + + color.r = 185; + color.g = 245; + color.b = 80; + color.a = 255; + + mDemo_Set_talk_window_color(&color); + mChoice_Clear_ChoseNum(mChoice_Get_base_window_p()); + mBGMPsComp_make_ps_fanfare(0x28, 0x168); +} + +static int Player_actor_MessageControl_Pull_net(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_pull_net_c* main_pull = &player->main_data.pull_net; + + main_pull->timer += 1.0f; + + if (main_pull->timer > 50.0f) { + main_pull->timer = 50.0f; + } + + if (main_pull->timer >= 50.0f) { + if (!mDemo_Check(mDemo_TYPE_REPORT, actor)) { + mDemo_Request(mDemo_TYPE_REPORT, actor, Player_actor_Pull_net_demo_ct); + } else { + return TRUE; + } + } + return FALSE; +} + +static void Player_actor_request_proc_index_fromPull_net(ACTOR* actor, GAME* game, int end_flag, int pull) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_pull_net_c* main_pull = &player->main_data.pull_net; + + if (end_flag != FALSE && pull != FALSE) { + Player_actor_request_main_notice_net(game, main_pull->already_collected, mPlayer_REQUEST_PRIORITY_27); + } +} + +static void Player_actor_main_Pull_net(ACTOR* actor, GAME* game) { + int end_flag; + f32 frame_calc; + int cntrl; + + Player_actor_Movement_Pull_net(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_CorrectSomething_Pull_net(actor); + end_flag = Player_actor_CulcAnimation_Pull_net(actor, &frame_calc); + Player_actor_SearchAnimation_Pull_net(actor, game, frame_calc); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Pull_net(actor, game); + Player_actor_BGcheck_Pull_net(actor); + cntrl = Player_actor_MessageControl_Pull_net(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromPull_net(actor, game, end_flag, cntrl); +} From 5961ad054adfae05575e005b7edeea6494b013f9 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Wed, 11 Sep 2024 00:30:47 +0200 Subject: [PATCH 209/234] match m_player_main_stop_net --- src/m_player_main_stop_net.c_inc | 60 ++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/src/m_player_main_stop_net.c_inc b/src/m_player_main_stop_net.c_inc index e69de29b..8d0c746b 100644 --- a/src/m_player_main_stop_net.c_inc +++ b/src/m_player_main_stop_net.c_inc @@ -0,0 +1,60 @@ +static int Player_actor_request_main_stop_net(GAME* game, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_STOP_NET, priority)) { + Player_actor_request_main_index(game, mPlayer_INDEX_STOP_NET, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Stop_net(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_stop_net_c* main_stop = &player->main_data.stop_net; + + Player_actor_SetupItem_Base2(actor, Player_actor_Get_ItemKind_from_submenu(), mPlayer_ANIM_GET_CHANGE1, + mPlayer_INDEX_RETURN_DEMO, -5.0f, -1.0f, 0); + main_stop->_00 = 0; + player->keyframe0.frame_control.speed = 0.0f; + player->keyframe1.frame_control.speed = 0.0f; + + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_Movement_Pull_net(ACTOR* actor) { + Player_actor_Movement_Base_Braking_common(actor, 0.32625f); +} + +static int Player_actor_CulcAnimation_Stop_net(ACTOR* actor) { + f32 frame_calc; + + return Player_actor_CulcAnimation_Base2(actor, &frame_calc); +} + +static void Player_actor_ObjCheck_Stop_net(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Stop_net(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_request_proc_index_fromStop_net(GAME* game, int ready) { + if (ready != FALSE) { + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_34); + } +} + +static void Player_actor_main_Stop_net(ACTOR* actor, GAME* game) { + int ready; + + Player_actor_Movement_Stop_net(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_CulcAnimation_Stop_net(actor); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Stop_net(actor, game); + Player_actor_BGcheck_Stop_net(actor); + ready = Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromStop_net(game, ready); +} From 7c22b86a3a653e5869e8b09f8f0b14ba923a4444 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Wed, 11 Sep 2024 00:33:17 +0200 Subject: [PATCH 210/234] match m_player_main_notice_net --- include/m_player.h | 2 +- src/m_player_main_notice_net.c_inc | 273 +++++++++++++++++++++++++++++ 2 files changed, 274 insertions(+), 1 deletion(-) diff --git a/include/m_player.h b/include/m_player.h index 162f5fb5..38a0fa23 100644 --- a/include/m_player.h +++ b/include/m_player.h @@ -1769,7 +1769,7 @@ typedef struct player_main_stop_net_s { typedef struct player_main_notice_net_s { int state; int not_full_pocket; - int in_swap; + int exchange_flag; int already_collected; int end_effect_flag; } mPlayer_main_notice_net_c; diff --git a/src/m_player_main_notice_net.c_inc b/src/m_player_main_notice_net.c_inc index e69de29b..419c5f08 100644 --- a/src/m_player_main_notice_net.c_inc +++ b/src/m_player_main_notice_net.c_inc @@ -0,0 +1,273 @@ +static int Player_actor_request_main_notice_net(GAME* game, int already_collected, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_NOTICE_NET, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + player->requested_main_index_data.notice_net.already_collected = already_collected; + + Player_actor_request_main_index(game, mPlayer_INDEX_NOTICE_NET, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Notice_net(ACTOR* actor, GAME* game) { + static int use_mark_insect_type[] = { + aSOI_INSECT_TYPE_ANT, + aSOI_INSECT_TYPE_MOSQUITO, + }; + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_notice_net_c* main_notice = &player->main_data.notice_net; + mPlayer_request_notice_net_c* req_notice = &player->requested_main_index_data.notice_net; + u32 label; + + main_notice->state = 0; + main_notice->exchange_flag = FALSE; + main_notice->already_collected = req_notice->already_collected; + + main_notice->end_effect_flag = FALSE; + + label = player->item_net_catch_label; + + if (label != 0) { + mActor_name_t item; + int idx = player->item_net_catch_insect_idx; + s8 type = player->item_net_catch_type; + + if (type == 0) { + item = ((aINS_INSECT_ACTOR*)label)->item; + } else if (player->item_net_catch_insect_idx == aSOI_INSECT_TYPE_BEE) { + item = ITM_INSECT08; + } else { + item = ITM_INSECT38; + } + + if (idx < 0) { + main_notice->not_full_pocket = FALSE; + } else { + int free_space = mPlib_Get_space_putin_item_forHITODAMA(&item); + int i; + int mark_check; + + if (free_space >= 0) { + Player_actor_putin_item(free_space, item, NULL); + main_notice->not_full_pocket = TRUE; + } else { + main_notice->not_full_pocket = FALSE; + } + + if (idx != aSOI_INSECT_TYPE_SPIRIT) { + mSM_COLLECT_INSECT_SET(idx); + } + + mark_check = FALSE; + for (i = 0; i < 2; i++) { + if (idx == use_mark_insect_type[i]) { + mark_check = TRUE; + } + } + + if (mark_check) { + Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_YAJIRUSHI, player->left_hand_pos, 2, 0, game, + RSV_NO, 0, 0); + main_notice->end_effect_flag = TRUE; + } + } + } else { + main_notice->not_full_pocket = FALSE; + } + actor->shape_info.rotation.y = 0; + actor->world.angle.y = 0; + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_settle_main_Notice_net(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int idx = player->item_net_catch_insect_idx; + mPlayer_main_notice_net_c* main_notice = &player->main_data.notice_net; + + if (idx < 0) { + idx = aSOI_INSECT_TYPE_BEE; + } + + if (main_notice->already_collected != FALSE) { + mBGMPsComp_delete_ps_fanfare(0x4B, 0x168); + } else { + mBGMPsComp_delete_ps_fanfare(0x28, 0x168); + } + + if (idx == aSOI_INSECT_TYPE_BEE) { + Common_Set(player_bee_chase_flag, FALSE); + + if (player->bee_chase_bgm_flag != FALSE) { + player->bee_chase_bgm_flag = FALSE; + mBGMPsComp_delete_ps_happening(0x43, FALSE); + } + } + + if (!main_notice->not_full_pocket) { + u32 label = player->item_net_catch_label; + + if (label != 0 && player->item_net_catch_type == 0) { + ((aINS_INSECT_ACTOR*)label)->patience = 1000.0f; + ((ACTOR*)label)->drawn = TRUE; + ((ACTOR*)label)->actor_specific = 1; + } + } +} + +static void Player_actor_Movement_Notice_net(ACTOR* actor) { + Player_actor_Movement_Base_Braking_common(actor, 0.32625f); +} + +static void Player_actor_CorrectSomething_Notice_net(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_CorrectSomething_net(actor, &player->left_hand_pos); +} + +static int Player_actor_CulcAnimation_Notice_net(ACTOR* actor) { + f32 frame_calc; + + return Player_actor_CulcAnimation_Base2(actor, &frame_calc); +} + +static void Player_actor_set_eye_pattern_Notice_net(ACTOR* actor, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (end_flag) { + Player_actor_set_eye_pattern_normal(actor); + } else if (player->animation0_idx == mPlayer_ANIM_YATTA2) { + Player_actor_set_tex_anime_pattern(actor); + } else { + Player_actor_set_eye_pattern_normal(actor); + } +} + +static void Player_actor_ObjCheck_Notice_net(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Notice_net(ACTOR* actor) { Player_actor_BGcheck_common_type1(actor); } + +static void Player_actor_DeleteMark_Notice_net(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_notice_net_c* main_notice = &player->main_data.notice_net; + + if (main_notice->end_effect_flag) { + Common_Get(clip).effect_clip->effect_kill_proc(eEC_EFFECT_YAJIRUSHI, RSV_NO); + main_notice->end_effect_flag = FALSE; + } +} + +static int Player_actor_MessageControl_Notice_net(ACTOR* actor, GAME* game, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mMsg_Window_c* win = mMsg_Get_base_window_p(); + mPlayer_main_notice_net_c* main_notice = &player->main_data.notice_net; + int choice; + switch (main_notice->state) { + case 0: + if (main_notice->already_collected) { + if (end_flag != FALSE && mMsg_Check_MainNormalContinue(win)) { + mMsg_Set_continue_msg_num(win, 0xA4F); + mMsg_Unset_LockContinue(win); + main_notice->state = 1; + } + } else { + main_notice->state = 2; + } + return -1; + + case 1: + if (!mMsg_Check_MainNormal(win)) { + Player_actor_SetupItem_Base2(actor, Player_actor_Get_ItemKind_from_submenu(), mPlayer_ANIM_GET_PUTAWAY1, + mPlayer_INDEX_RUN, -5.0f, -1.0f, 0); + Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_YATTA2, mPlayer_ANIM_YATTA2, 1.0f, 1.0f, + 0.5f, -5.0f, 0, 0); + mBGMPsComp_delete_ps_fanfare(0x28, 0x168); + mBGMPsComp_make_ps_fanfare(0x4B, 0x168); + mMsg_Set_LockContinue(win); + Player_actor_DeleteMark_Notice_net(actor); + + main_notice->state = 2; + } + return -1; + + case 2: + + if (main_notice->not_full_pocket) { + mMsg_Set_CancelNormalContinue(win); + main_notice->state = 4; + } else { + mMsg_Set_continue_msg_num(win, 0xA4D); + main_notice->state = 3; + } + mMsg_Unset_LockContinue(win); + return -1; + + case 3: + choice = mChoice_Get_ChoseNum(mChoice_Get_base_window_p()); + + if (choice == mChoice_CHOICE0) { + main_notice->exchange_flag = TRUE; + main_notice->state = 4; + } else if (choice == mChoice_CHOICE1) { + main_notice->exchange_flag = FALSE; + main_notice->state = 4; + } + + return -1; + + case 4: + if (!mDemo_Check(mDemo_TYPE_REPORT, actor)) { + main_notice->state = 5; + Player_actor_DeleteMark_Notice_net(actor); + } + return -1; + + default: + if (main_notice->not_full_pocket) { + return 0x30; + } else { + return !main_notice->exchange_flag ? 0x53 : 0x30; + } + } +} + +static void Player_actor_request_proc_index_fromNotice_net(ACTOR* actor, GAME* game, int msg_control) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_notice_net_c* main_notice = &player->main_data.notice_net; + + if (msg_control == 0x30) { + Player_actor_request_main_putaway_net(game, main_notice->exchange_flag, mPlayer_REQUEST_PRIORITY_28); + } else if (msg_control == 0x53) { + if (player->item_net_catch_type == 0) { + u32 label = player->item_net_catch_label; + mPlayer_request_release_creature_u release_data; + + bzero(&release_data, sizeof(mPlayer_request_release_creature_u)); + Player_actor_request_main_release_creature_all(game, 0, 0, &release_data, (ACTOR*)label, + mPlayer_REQUEST_PRIORITY_30); + } else { + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_34); + } + } +} + +static void Player_actor_main_Notice_net(ACTOR* actor, GAME* game) { + int end_flag; + int msg_cntrl; + + Player_actor_Movement_Notice_net(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_CorrectSomething_Notice_net(actor); + end_flag = Player_actor_CulcAnimation_Notice_net(actor); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_Notice_net(actor, end_flag); + Player_actor_ObjCheck_Notice_net(actor, game); + Player_actor_BGcheck_Notice_net(actor); + msg_cntrl = Player_actor_MessageControl_Notice_net(actor, game, end_flag); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromNotice_net(actor, game, msg_cntrl); +} From 9b4eaecb670c98e5529fd1a5290d95dd185404b4 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Wed, 11 Sep 2024 00:34:51 +0200 Subject: [PATCH 211/234] match m_player_main_putaway_net --- src/m_player_main_putaway_net.c_inc | 107 ++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) diff --git a/src/m_player_main_putaway_net.c_inc b/src/m_player_main_putaway_net.c_inc index e69de29b..c56576ed 100644 --- a/src/m_player_main_putaway_net.c_inc +++ b/src/m_player_main_putaway_net.c_inc @@ -0,0 +1,107 @@ +static int Player_actor_request_main_putaway_net(GAME* game, int exchange_flag, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_PUTAWAY_NET, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + player->requested_main_index_data.putaway_net.exchange_flag = exchange_flag; + + Player_actor_request_main_index(game, mPlayer_INDEX_PUTAWAY_NET, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Putaway_net(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int kind = Player_actor_Get_ItemKind_from_submenu(); + mPlayer_main_putaway_net_c* main_putaway = &player->main_data.putaway_net; + mPlayer_request_putaway_net_c* req_putaway = &player->requested_main_index_data.putaway_net; + + main_putaway->exchange_flag = req_putaway->exchange_flag; + + Player_actor_SetupItem_Base2(actor, kind, mPlayer_ANIM_LTURN1, mPlayer_INDEX_WALK, -5.0f, -1.0f, 0); + Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_PUTAWAY_M1, mPlayer_ANIM_PUTAWAY_M1, 1.0f, 1.0f, 0.5f, + -5.0f, 0, 0); + Player_actor_setup_main_Base(actor, game); + + Player_actor_sound_GASAGOSO(actor); +} + +static void Player_actor_Movement_Putaway_net(ACTOR* actor) { + Player_actor_Movement_Base_Braking_common(actor, 0.32625f); +} + +static int Player_actor_CulcAnimation_Putaway_net(ACTOR* actor, f32* frame_calc) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_CorrectSomething_Putaway_net(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + u32 label = player->item_net_catch_label; + + if (label != 0) { + cKF_FrameControl_c* fc = &player->keyframe0.frame_control; + + if (Player_actor_Check_AnimationFrame(fc, 17.0f)) { + if (player->item_net_catch_type == 0) { + Common_Get(clip).insect_clip->dt_proc((ACTOR*)label, game); + } + } else if (fc->current_frame < 17.0f) { + if (player->item_net_catch_type == 0) { + ((ACTOR*)label)->scale.x *= 0.89125f; + ((ACTOR*)label)->scale.y *= 0.89125f; + ((ACTOR*)label)->scale.z *= 0.89125f; + } + Player_actor_CorrectSomething_net(actor, &player->left_hand_pos); + } + } +} + +static void Player_actor_SearchAnimation_Putaway_net(ACTOR* actor, GAME* game, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_CorrectSomething_Putaway_net(actor, game); + } +} + +static void Player_actor_ObjCheck_Putaway_net(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Putaway_net(ACTOR* actor) { Player_actor_BGcheck_common_type1(actor); } + +static void Player_actor_request_proc_index_fromPutaway_net(ACTOR* actor, GAME* game, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + GAME_PLAY* play = (GAME_PLAY*)game; + mPlayer_main_putaway_net_c* main_putaway = &player->main_data.putaway_net; + + if (end_flag) { + if (main_putaway->exchange_flag) { + if (player->item_net_catch_type == 0) { + mSM_open_submenu_new2( + &play->submenu, mSM_OVL_INVENTORY, mSM_IV_OPEN_EXCHANGE, + (mActor_name_t)(((aINS_INSECT_ACTOR*)player->item_net_catch_label)->type + ITM_INSECT_START), NULL, + actor->shape_info.rotation.y); + } + } else { + Player_actor_SettleRequestMainIndexPriority(actor); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } + } +} + +static void Player_actor_main_Putaway_net(ACTOR* actor, GAME* game) { + int end_flag; + f32 frame_calc; + + Player_actor_Movement_Putaway_net(actor); + Player_actor_Reinput_force_position_angle(actor, game); + end_flag = Player_actor_CulcAnimation_Putaway_net(actor, &frame_calc); + Player_actor_SearchAnimation_Putaway_net(actor, game, frame_calc); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Putaway_net(actor, game); + Player_actor_BGcheck_Putaway_net(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromPutaway_net(actor, game, end_flag); +} From 8f513ece25220395a711ba3c2117d81b68065b19 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Wed, 11 Sep 2024 20:14:52 +0200 Subject: [PATCH 212/234] match m_player_main_ready_rod --- include/m_player.h | 24 ++++- src/m_player_common.c_inc | 1 + src/m_player_main_putaway_net.c_inc | 4 +- src/m_player_main_ready_rod.c_inc | 135 ++++++++++++++++++++++++++++ 4 files changed, 162 insertions(+), 2 deletions(-) diff --git a/include/m_player.h b/include/m_player.h index 38a0fa23..e5aca1a5 100644 --- a/include/m_player.h +++ b/include/m_player.h @@ -1105,7 +1105,7 @@ typedef struct player_request_notice_rod_s { typedef struct player_request_putaway_rod_s { s16 angle_y; - int _04; + int exchange_flag; } mPlayer_request_putaway_rod_c; typedef struct player_request_dig_scoop_s { @@ -1778,6 +1778,25 @@ typedef struct player_main_putaway_net_s { int exchange_flag; } mPlayer_main_putaway_net_c; +typedef struct player_main_cast_rod_s { + xyz_t bobber_target_pos; +} mPlayer_main_cast_rod_c; + +typedef struct player_main_notice_rod_s { + f32 _00; + int state; + int not_full_pocket; + int exchange_flag; + int already_collected; + int end_effect_flag; +} mPlayer_main_notice_rod_c; + +typedef struct player_main_putaway_rod_s { + f32 timer; + s16 angle_y; + int exchange_flag; +} mPlayer_main_putaway_rod_c; + typedef struct player_main_demo_wade_s { int dir; xyz_t start_pos; @@ -1955,7 +1974,10 @@ typedef union { mPlayer_main_notice_net_c notice_net; mPlayer_main_putaway_net_c putaway_net; mPlayer_main_slip_net_c slip_net; + mPlayer_main_cast_rod_c cast_rod; mPlayer_main_relax_rod_c relax_rod; + mPlayer_main_notice_rod_c notice_rod; + mPlayer_main_putaway_rod_c putaway_rod; mPlayer_main_dig_scoop_c dig_scoop; mPlayer_main_fill_scoop_c fill_scoop; mPlayer_main_reflect_scoop_c reflect_scoop; diff --git a/src/m_player_common.c_inc b/src/m_player_common.c_inc index ede96aeb..fdf983ea 100644 --- a/src/m_player_common.c_inc +++ b/src/m_player_common.c_inc @@ -3911,6 +3911,7 @@ static void Player_actor_SetupItem_Base1(ACTOR* actorx, int anim1_idx, f32 item_ } } +// Usage in the calls seem wrong (fairly random indexes), for anim_idx and item_main_index static void Player_actor_SetupItem_Base2(ACTOR* actorx, int item_kind, int anim_idx, int item_main_index, f32 morph_speed, f32 start_frame, int mode) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; diff --git a/src/m_player_main_putaway_net.c_inc b/src/m_player_main_putaway_net.c_inc index c56576ed..48e3d84d 100644 --- a/src/m_player_main_putaway_net.c_inc +++ b/src/m_player_main_putaway_net.c_inc @@ -68,7 +68,9 @@ static void Player_actor_ObjCheck_Putaway_net(ACTOR* actor, GAME* game) { Player_actor_Excute_Corect_forStand(actor, game); } -static void Player_actor_BGcheck_Putaway_net(ACTOR* actor) { Player_actor_BGcheck_common_type1(actor); } +static void Player_actor_BGcheck_Putaway_net(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} static void Player_actor_request_proc_index_fromPutaway_net(ACTOR* actor, GAME* game, int end_flag) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; diff --git a/src/m_player_main_ready_rod.c_inc b/src/m_player_main_ready_rod.c_inc index e69de29b..5ca8fea3 100644 --- a/src/m_player_main_ready_rod.c_inc +++ b/src/m_player_main_ready_rod.c_inc @@ -0,0 +1,135 @@ +static int Player_actor_request_main_ready_rod(GAME* game, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_READY_ROD, priority)) { + Player_actor_request_main_index(game, mPlayer_INDEX_READY_ROD, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Ready_rod(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int kind = Player_actor_Get_ItemKind_from_submenu(); + + Player_actor_SetupItem_Base2(actor, kind, mPlayer_ANIM_UMBRELLA1, mPlayer_INDEX_TUMBLE_GETUP, -5.0f, -1.0f, 0); + Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_SAO_SWING1, mPlayer_ANIM_SAO_SWING1, 1.0f, 1.0f, 0.5f, + -5.0f, 0, 0); + Player_actor_setup_main_Base(actor, game); + + player->item_rod_angle_z = 0; +} + +static void Player_actor_Movement_Ready_rod(ACTOR* actor) { + Player_actor_Movement_Base_Braking_common(actor, 0.32625f); +} + +static void Player_actor_CulcAnimation_Ready_rod(ACTOR* actor, f32* frame_calc) { + Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_ObjCheck_Ready_rod(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Ready_rod(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_SearchAnimation_Ready_rod(ACTOR* actor, GAME* game, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_Set_FootMark_Base1(actor, game, 0, 0); + } +} + +static void Player_actor_request_proc_index_fromReady_rod(ACTOR* actor, GAME* game) { + static const f32 array_addX[] = { + 0.0f, -10.0f, 10.0f, -10.0f, 10.0f, + }; + + static const f32 array_addZ[] = { + 0.0f, -10.0f, -10.0f, 10.0f, 10.0f, + }; + + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + xyz_t pos; + + if (player->keyframe0.frame_control.current_frame >= 10.0f) { + s16 rot; + int ready; + int i; + int attr; + f32 sin; + f32 arg; + f32 cos; + f32 y; + + rot = actor->shape_info.rotation.y; + + sin = sin_s(rot) * 100.0f; + cos = cos_s(rot) * 100.0f; + + y = actor->world.position.y; + + pos.x = actor->world.position.x + sin; + pos.z = actor->world.position.z + (cos); + pos.y = 0.0f; + + ready = TRUE; + + for (i = 0; i < 5; i++) { + xyz_t wpos = pos; + f32 height; + + wpos.x += array_addX[i]; + wpos.y = 0.0f; + + wpos.z += array_addZ[i]; + + attr = mCoBG_Wpos2BgAttribute_Original(wpos); + + if (mCoBG_GetMoveBgHeight(&arg, &wpos) != -1) { + ready = FALSE; + break; + + } else if (!mCoBG_CheckWaterAttribute(attr)) { + ready = FALSE; + break; + } + height = mCoBG_GetWaterHeight_File(wpos, "m_player_main_ready_rod.c_inc", 165); + wpos.y = height; + + if ((wpos.y - y) >= 60.0f) { + ready = FALSE; + break; + } + } + + if (ready) { + f32 height = mCoBG_GetWaterHeight_File(pos, "m_player_main_ready_rod.c_inc", 177); + pos.y = height; + + if ((pos.y - y) < 60.0f) { + Player_actor_request_main_cast_rod(game, &pos, mPlayer_REQUEST_PRIORITY_21); + return; + } + } + Player_actor_request_main_air_rod(game, mPlayer_REQUEST_PRIORITY_21); + } +} + +static void Player_actor_main_Ready_rod(ACTOR* actor, GAME* game) { + f32 frame_calc; + + Player_actor_Movement_Ready_rod(actor); + Player_actor_CulcAnimation_Ready_rod(actor, &frame_calc); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_SearchAnimation_Ready_rod(actor, game, frame_calc); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Ready_rod(actor, game); + Player_actor_BGcheck_Ready_rod(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromReady_rod(actor, game); +} From 06c462aa18203d2983de9b61d08339ba55ffa4e8 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Wed, 11 Sep 2024 20:16:38 +0200 Subject: [PATCH 213/234] match m_player_main_cast_rod --- src/m_player_main_cast_rod.c_inc | 82 ++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) diff --git a/src/m_player_main_cast_rod.c_inc b/src/m_player_main_cast_rod.c_inc index e69de29b..4bf19f0e 100644 --- a/src/m_player_main_cast_rod.c_inc +++ b/src/m_player_main_cast_rod.c_inc @@ -0,0 +1,82 @@ +static int Player_actor_request_main_cast_rod(GAME* game, const xyz_t* pos, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_CAST_ROD, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + player->requested_main_index_data.cast_rod.bobber_target_pos = *pos; + Player_actor_request_main_index(game, mPlayer_INDEX_CAST_ROD, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Cast_rod(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + f32 frame = player->item_keyframe.frame_control.current_frame; + mPlayer_request_cast_rod_c* req_cast = &player->requested_main_index_data.cast_rod; + mPlayer_main_cast_rod_c* main_cast = &player->main_data.cast_rod; + int kind = Player_actor_Get_ItemKind_from_submenu(); + + main_cast->bobber_target_pos = req_cast->bobber_target_pos; + + Player_actor_SetupItem_Base2(actor, kind, mPlayer_ANIM_UMBRELLA1, mPlayer_INDEX_TURN_DASH, -5.0f, frame, 0); + Player_actor_setup_main_Base(actor, game); + + Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_SWING_ROD, actor->world.position, 2, + actor->shape_info.rotation.y, game, RSV_NO, + actor->bg_collision_check.result.unit_attribute, 0); +} + +static void Player_actor_Movement_Cast_rod(ACTOR* actor) { + Player_actor_Movement_Base_Braking_common(actor, 0.32625f); +} + +static int Player_actor_CulcAnimation_Cast_rod(ACTOR* actor, f32* frame_calc) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_SetSound_Cast_rod(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 20.0f)) { + Player_actor_sound_ROD_STROKE(actor); + } +} + +static void Player_actor_SearchAnimation_Cast_rod(ACTOR* actor, GAME* game, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_SetSound_Cast_rod(actor); + Player_actor_Set_FootMark_Base1(actor, game, FALSE, FALSE); + } +} + +static void Player_actor_ObjCheck_Cast_rod(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Cast_rod(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_request_proc_index_fromCast_rod(GAME* game, int ready) { + if (ready) { + Player_actor_request_main_relax_rod(game, mPlayer_REQUEST_PRIORITY_22); + } +} + +static void Player_actor_main_Cast_rod(ACTOR* actor, GAME* game) { + f32 frame_calc; + int end_flag; + + Player_actor_Movement_Cast_rod(actor); + Player_actor_Reinput_force_position_angle(actor, game); + end_flag = Player_actor_CulcAnimation_Cast_rod(actor, &frame_calc); + Player_actor_SearchAnimation_Cast_rod(actor, game, frame_calc); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Cast_rod(actor, game); + Player_actor_BGcheck_Cast_rod(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromCast_rod(game, end_flag); +} From 0b74edb144da93aa90f8cd25403249452de65791 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Wed, 11 Sep 2024 20:17:59 +0200 Subject: [PATCH 214/234] match m_player_main_air_rod --- src/m_player_main_air_rod.c_inc | 81 +++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) diff --git a/src/m_player_main_air_rod.c_inc b/src/m_player_main_air_rod.c_inc index e69de29b..15193374 100644 --- a/src/m_player_main_air_rod.c_inc +++ b/src/m_player_main_air_rod.c_inc @@ -0,0 +1,81 @@ +static int Player_actor_request_main_cast_rod(GAME* game, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_AIR_ROD, priority)) { + Player_actor_request_main_index(game, mPlayer_INDEX_AIR_ROD, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Air_rod(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + f32 player_frame = player->keyframe0.frame_control.current_frame; + f32 frame = player->item_keyframe.frame_control.current_frame; + + int kind; + + kind = Player_actor_Get_ItemKind_from_submenu(); + + Player_actor_SetupItem_Base2(actor, kind, mPlayer_ANIM_RUN_SLIP1, mPlayer_INDEX_FALL, -5.0f, frame, 0); + Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_NOT_SAO_SWING1, mPlayer_ANIM_NOT_SAO_SWING1, + player_frame, player_frame, 0.5f, -5.0f, 0, 0); + Player_actor_setup_main_Base(actor, game); + + Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_SWING_ROD, actor->world.position, 2, + actor->shape_info.rotation.y, game, RSV_NO, + actor->bg_collision_check.result.unit_attribute, 0); +} + +static void Player_actor_Movement_Air_rod(ACTOR* actor) { + Player_actor_Movement_Base_Braking_common(actor, 0.32625f); +} + +static int Player_actor_CulcAnimation_Air_rod(ACTOR* actor, f32* frame_calc) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_SetSound_Air_rod(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 20.0f)) { + Player_actor_sound_ROD_STROKE_small(actor); + } +} + +static void Player_actor_SearchAnimation_Air_rod(ACTOR* actor, GAME* game, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_SetSound_Air_rod(actor); + Player_actor_Set_FootMark_Base1(actor, game, FALSE, FALSE); + } +} +static void Player_actor_ObjCheck_Air_rod(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Air_rod(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_request_proc_index_fromAir_rod(ACTOR* actor, GAME* game, int ready) { + if (ready) { + Player_actor_SettleRequestMainIndexPriority(actor); + Player_actor_request_main_wait_all(game, 0.0f, -5.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } +} + +static void Player_actor_main_Air_rod(ACTOR* actor, GAME* game) { + f32 frame_calc; + int end_flag; + + Player_actor_Movement_Air_rod(actor); + Player_actor_Reinput_force_position_angle(actor, game); + end_flag = Player_actor_CulcAnimation_Air_rod(actor, &frame_calc); + Player_actor_SearchAnimation_Air_rod(actor, game, frame_calc); + Player_actor_recover_lean_angle(actor); + Player_actor_set_tex_anime_pattern(actor); + Player_actor_ObjCheck_Air_rod(actor, game); + Player_actor_BGcheck_Air_rod(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromAir_rod(actor, game, end_flag); +} From 775a743c5bad14d2b7c42d6be2bd66e0e8364401 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Wed, 11 Sep 2024 20:19:34 +0200 Subject: [PATCH 215/234] match m_player_main_relax_rod --- src/m_player_main_relax_rod.c_inc | 105 ++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) diff --git a/src/m_player_main_relax_rod.c_inc b/src/m_player_main_relax_rod.c_inc index e69de29b..a393ae90 100644 --- a/src/m_player_main_relax_rod.c_inc +++ b/src/m_player_main_relax_rod.c_inc @@ -0,0 +1,105 @@ +static int Player_actor_request_main_relax_rod(GAME* game, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_RELAX_ROD, priority)) { + Player_actor_request_main_index(game, mPlayer_INDEX_RELAX_ROD, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Air_rod(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_relax_rod_c* main_relax = &player->main_data.relax_rod; + int kind = Player_actor_Get_ItemKind_from_submenu(); + + main_relax->bee_flag = FALSE; + main_relax->mosquito_flag = FALSE; + + Player_actor_SetupItem_Base2(actor, kind, mPlayer_ANIM_UMB_OPEN1, mPlayer_INDEX_WADE, -5.0f, 180.0f, 1); + Player_actor_InitAnimation_Base2(actor, game, eEC_EFFECT_TURI_MIZU, eEC_EFFECT_TURI_MIZU, 1.0f, 1.0f, 0.5f, -5.0f, + 1, 0); + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_Movement_Relax_rod(ACTOR* actor) { + Player_actor_SetPlayerAngle_forUki(actor); + Player_actor_Movement_Base_Braking_common(actor, 0.32625002f); +} + +static int Player_actor_CulcAnimation_Relax_rod(ACTOR* actor) { + f32 frame_calc; + + return Player_actor_CulcAnimation_Base2(actor, &frame_calc); +} + +static void Player_actor_ObjCheck_Relax_rod(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Relax_rod(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_request_proc_index_fromRelax_rod(ACTOR* actor, GAME* game, int status) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + UKI_ACTOR* uki = (UKI_ACTOR*)player->fishing_rod_actor_p; + + if (mPlib_check_player_warp_forEvent()) { + uki->command = 8; + } + + switch (status) { + case 3: + if (!mPlib_check_player_warp_forEvent()) { + uki->command = 3; + break; + } + + break; + + case 5: + Player_actor_request_main_vib_rod(game, mPlayer_REQUEST_PRIORITY_26); + break; + + case 6: + if (!mPlib_check_player_warp_forEvent()) { + Player_actor_request_main_collect_rod(game, mPlayer_REQUEST_PRIORITY_26); + } else { + uki->command = 7; + } + break; + + default: + + if (uki != NULL) { + if (Player_actor_CheckController_forRod(game)) { + if (!mPlib_check_player_warp_forEvent()) { + uki->command = 6; + } else { + uki->command = 7; + } + } else if (!mPlib_check_player_warp_forEvent() && + (player->main_data.relax_rod.bee_flag || player->main_data.relax_rod.mosquito_flag)) { + uki->command = 8; + uki->command = 7; + } + } + break; + } +} + +void Player_actor_main_Relax_rod(ACTOR* actor, GAME* game) { + int status; + + Player_actor_Movement_Relax_rod(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_CulcAnimation_Relax_rod(actor); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Relax_rod(actor, game); + Player_actor_BGcheck_Relax_rod(actor); + status = Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromRelax_rod(actor, game, status); + Player_actor_main_Relax_rod_other_func2(actor, game); +} From 16fb9191c94cf9256b8756063fbc577888464a51 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Wed, 11 Sep 2024 20:21:09 +0200 Subject: [PATCH 216/234] match m_player_main_collect_rod --- src/m_player_main_collect_rod.c_inc | 75 +++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/src/m_player_main_collect_rod.c_inc b/src/m_player_main_collect_rod.c_inc index e69de29b..98d058b7 100644 --- a/src/m_player_main_collect_rod.c_inc +++ b/src/m_player_main_collect_rod.c_inc @@ -0,0 +1,75 @@ +static int Player_actor_request_main_collect_rod(GAME* game, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_COLLECT_ROD, priority)) { + Player_actor_request_main_index(game, mPlayer_INDEX_COLLECT_ROD, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Collect_rod(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int kind = Player_actor_Get_ItemKind_from_submenu(); + + Player_actor_SetupItem_Base2(actor, kind, mPlayer_ANIM_TRANS_WAIT1, mPlayer_INDEX_DOOR, -5.0f, -1.0f, 0); + Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_NOT_GET_T1, mPlayer_ANIM_NOT_GET_T1, 1.0f, 1.0f, 0.5f, + 0.0f, 0, 0); + Player_actor_setup_main_Base(actor, game); + Player_actor_sound_ROD_BACK(actor); + + Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_SWING_ROD, actor->world.position, 2, + actor->shape_info.rotation.y, game, RSV_NO, + actor->bg_collision_check.result.unit_attribute, 0); +} + +static void Player_actor_settle_main_Collect_rod() { + Player_actor_settle_main_Collect_rod_other_func2(); +} + +static void Player_actor_Movement_Collect_rod(ACTOR* actor) { + Player_actor_Movement_Base_Braking_common(actor, 0.32625f); +} + +static int Player_actor_CulcAnimation_Collect_rod(ACTOR* actor, f32* frame_calc) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_SearchAnimation_Collect_rod(ACTOR* actor, GAME* game, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_Set_FootMark_Base1(actor, game, FALSE, FALSE); + } +} + +static void Player_actor_ObjCheck_Collect_rod(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Collect_rod(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_request_proc_index_fromAir_rod(ACTOR* actor, GAME* game, int ready, int status) { + if (ready && status != 0) { + Player_actor_SettleRequestMainIndexPriority(actor); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } +} + +static void Player_actor_main_Collect_rod(ACTOR* actor, GAME* game) { + f32 frame_calc; + int end_flag; + int status; + + Player_actor_Movement_Collect_rod(actor); + Player_actor_Reinput_force_position_angle(actor, game); + end_flag = Player_actor_CulcAnimation_Collect_rod(actor, &frame_calc); + Player_actor_SearchAnimation_Collect_rod(actor, game, frame_calc); + Player_actor_recover_lean_angle(actor); + Player_actor_set_tex_anime_pattern(actor); + Player_actor_ObjCheck_Collect_rod(actor, game); + Player_actor_BGcheck_Collect_rod(actor); + status = Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromCollect_rod(actor, game, end_flag, status); + Player_actor_main_Collect_rod_other_func2(actor, game); +} From 8ca2073c7fa1f33c1779b6c7f4f0d9031f8c3769 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Wed, 11 Sep 2024 20:22:27 +0200 Subject: [PATCH 217/234] match m_player_main_vib_rod --- src/m_player_main_vib_rod.c_inc | 60 +++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/src/m_player_main_vib_rod.c_inc b/src/m_player_main_vib_rod.c_inc index e69de29b..038fb679 100644 --- a/src/m_player_main_vib_rod.c_inc +++ b/src/m_player_main_vib_rod.c_inc @@ -0,0 +1,60 @@ +static int Player_actor_request_main_vib_rod(GAME* game, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_VIB_ROD, priority)) { + Player_actor_request_main_index(game, mPlayer_INDEX_VIB_ROD, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Vib_rod(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + f32 frame = player->item_keyframe.frame_control.current_frame; + int kind = Player_actor_Get_ItemKind_from_submenu(); + + Player_actor_SetupItem_Base2(actor, kind, mPlayer_ANIM_UMB_OPEN1, mPlayer_INDEX_OUTDOOR, -5.0f, frame, 1); + Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_TURI_HIKI1, mPlayer_ANIM_TURI_HIKI1, 1.0f, 1.0f, 0.5f, + 0.0f, 1, 0); + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_Movement_Vib_rod(ACTOR* actor) { + Player_actor_SetPlayerAngle_forUki(actor); + Player_actor_Movement_Base_Braking_common(actor, 0.32625f); +} + +static int Player_actor_CulcAnimation_Vib_rod(ACTOR* actor) { + f32 frame_calc; + + return Player_actor_CulcAnimation_Base2(actor, &frame_calc); +} + +static void Player_actor_ObjCheck_Vib_rod(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Vib_rod(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_request_proc_index_fromVib_rod(GAME* game, int status) { + if (status != 0) { + Player_actor_request_main_fly_rod(game, mPlayer_REQUEST_PRIORITY_27); + } +} + +static void Player_actor_main_Vib_rod(ACTOR* actor, GAME* game) { + int status; + + Player_actor_Movement_Vib_rod(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_CulcAnimation_Vib_rod(actor); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Vib_rod(actor, game); + Player_actor_BGcheck_Vib_rod(actor); + status = Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromVib_rod(game, status); + Player_actor_main_Vib_rod_other_func2(actor, game); +} From ec62cf1fdd77c11b4a5920c12ecb0ddc1c787f95 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Wed, 11 Sep 2024 20:23:36 +0200 Subject: [PATCH 218/234] match m_player_main_fly_rod --- src/m_player_main_fly_rod.c_inc | 70 +++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/src/m_player_main_fly_rod.c_inc b/src/m_player_main_fly_rod.c_inc index e69de29b..d03ce688 100644 --- a/src/m_player_main_fly_rod.c_inc +++ b/src/m_player_main_fly_rod.c_inc @@ -0,0 +1,70 @@ +static int Player_actor_request_main_fly_rod(GAME* game, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_FLY_ROD, priority)) { + Player_actor_request_main_index(game, mPlayer_INDEX_FLY_ROD, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Fly_rod(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int kind = Player_actor_Get_ItemKind_from_submenu(); + + Player_actor_SetupItem_Base2(actor, kind, mPlayer_ANIM_TRANS_WAIT1, mPlayer_INDEX_INVADE, -5.0f, -1.0f, 0); + Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_GET_T1, mPlayer_ANIM_GET_T1, 1.0f, 1.0f, 0.5f, 0.0f, 0, + 0); + Player_actor_sound_ROD_BACK(actor); + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_settle_main_Fly_rod(ACTOR* actor, GAME* game) { + Player_actor_settle_main_Fly_rod_other_func2(actor, game); +} + +static void Player_actor_Movement_Fly_rod(ACTOR* actor) { + Player_actor_Movement_Base_Braking_common(actor, 0.32625f); +} + +static int Player_actor_CulcAnimation_Fly_rod(ACTOR* actor, f32* frame_calc) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_SearchAnimation_Fly_rod(ACTOR* actor, GAME* game, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_Set_FootMark_Base1(actor, game, FALSE, FALSE); + } +} + +static void Player_actor_ObjCheck_Fly_rod(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Fly_rod(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_request_proc_index_fromFly_rod(ACTOR* actor, GAME* game, int ready, int status) { + if (ready && status != 0) { + Player_actor_request_main_notice_rod(game, actor->shape_info.rotation.y, mPlayer_REQUEST_PRIORITY_28); + } +} + +static void Player_actor_main_Fly_rod(ACTOR* actor, GAME* game) { + f32 frame_calc; + int end_flag; + int status; + + Player_actor_Movement_Fly_rod(actor); + Player_actor_Reinput_force_position_angle(actor, game); + end_flag = Player_actor_CulcAnimation_Fly_rod(actor, &frame_calc); + Player_actor_SearchAnimation_Fly_rod(actor, game, frame_calc); + Player_actor_recover_lean_angle(actor); + Player_actor_set_tex_anime_pattern(actor); + Player_actor_ObjCheck_Fly_rod(actor, game); + Player_actor_BGcheck_Fly_rod(actor); + status = Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromFly_rod(actor, game, end_flag, status); + Player_actor_main_Fly_rod_other_func2(actor, game); +} From ff33bb7b9e589e9e367da34ccca3d874bcc981f8 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Wed, 11 Sep 2024 20:26:10 +0200 Subject: [PATCH 219/234] match m_player_main_notice_rod --- include/m_player.h | 2 +- src/m_player_main_notice_rod.c_inc | 337 +++++++++++++++++++++++++++++ 2 files changed, 338 insertions(+), 1 deletion(-) diff --git a/include/m_player.h b/include/m_player.h index e5aca1a5..44c03232 100644 --- a/include/m_player.h +++ b/include/m_player.h @@ -1783,7 +1783,7 @@ typedef struct player_main_cast_rod_s { } mPlayer_main_cast_rod_c; typedef struct player_main_notice_rod_s { - f32 _00; + f32 timer; int state; int not_full_pocket; int exchange_flag; diff --git a/src/m_player_main_notice_rod.c_inc b/src/m_player_main_notice_rod.c_inc index e69de29b..a147f6e9 100644 --- a/src/m_player_main_notice_rod.c_inc +++ b/src/m_player_main_notice_rod.c_inc @@ -0,0 +1,337 @@ +static int Player_actor_request_main_notice_rod(GAME* game, s16 angle, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_NOTICE_ROD, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + Player_actor_request_main_index(game, mPlayer_INDEX_NOTICE_ROD, priority); + + player->requested_main_index_data.notice_rod.angle_y = angle; + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Notice_net(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_notice_rod_c* main_notice = &player->main_data.notice_rod; + mPlayer_request_notice_rod_c* req_notice = &player->requested_main_index_data.notice_rod; + UKI_ACTOR* uki; + int type; + + main_notice->timer = 0.0f; + main_notice->state = 0; + main_notice->angle_y = req_notice->angle_y; + main_notice->exchange_flag = FALSE; + main_notice->already_collected = FALSE; + main_notice->end_effect_flag = FALSE; + + uki = (UKI_ACTOR*)player->fishing_rod_actor_p; + type = uki->gyo_type; + + if (uki != NULL && type >= aSOG_FISH_TYPE_CRUCIAN_CARP) { + int free_space = mPlib_Get_space_putin_item(); + + if (free_space >= 0) { + Player_actor_putin_item(free_space, uki->get_fish_type_proc(&uki->actor_class), NULL); + main_notice->not_full_pocket = TRUE; + } else { + main_notice->not_full_pocket = FALSE; + } + + if (type < aSOG_FISH_TYPE_NUM + 1) { + main_notice->already_collected = mSM_CHECK_LAST_FISH_GET(type); + mSM_COLLECT_FISH_SET(type); + } + } else { + main_notice->not_full_pocket = FALSE; + } + + if (type == aSOG_FISH_TYPE_BARRED_KNIFEJAW) { + mISL_SetNowPlayerAction(mISL_PLAYER_ACTION_NOTICE_FISHING_ROD); + } + Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_GET_T2, mPlayer_ANIM_GET_T2, 1.0f, 1.0f, 0.5f, -3.0f, 0, + 0); + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_settle_main_Notice_rod(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_notice_rod_c* main_notice = &player->main_data.notice_rod; + + if (!main_notice->already_collected) { + mBGMPsComp_delete_ps_fanfare(0x28, 0x168); + } else { + mBGMPsComp_delete_ps_fanfare(0x4C, 0x168); + } +} + +static void Player_actor_Movement_Notice_rod(ACTOR* actor) { + add_calc_short_angle2(&actor->shape_info.rotation.y, 0, 1.0f - sqrtf(0.5), 2500, 50); + actor->world.angle.y = actor->shape_info.rotation.y; + Player_actor_Movement_Base_Braking_common(actor, 0.32625f); +} + +static int Player_actor_CulcAnimation_Notice_rod(ACTOR* actor, f32* frame_calc) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_set_eye_pattern_Notice_rod(ACTOR* actor, int end_flag) { + if (end_flag) { + Player_actor_set_eye_pattern_normal(actor); + } else { + Player_actor_set_tex_anime_pattern(actor); + } +} + +static void Player_actor_ObjCheck_Notice_rod(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Notice_rod(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_SearchAnimation_Notice_rod(ACTOR* actor, GAME* game, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_Set_FootMark_Base1(actor, game, FALSE, FALSE); + } +} + +static void Player_actor_AppearMark_Notice_rod(ACTOR* actor) { + static int use_mark_gyoei_type = aSOG_FISH_TYPE_KILLIFISH; + + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_notice_rod_c* main_notice = &player->main_data.notice_rod; + + if (!main_notice->end_effect_flag) { + UKI_ACTOR* uki = (UKI_ACTOR*)player->fishing_rod_actor_p; + + if (uki != NULL) { + int type = uki->gyo_type; + + if (type >= aSOG_FISH_TYPE_CRUCIAN_CARP) { + int killfish = FALSE; + + if (type == use_mark_gyoei_type) { + killfish = TRUE; + } + + if (killfish) { + Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_YAJIRUSHI, player->left_hand_pos, 2, 0, + gamePT, RSV_NO, 0, 0); + main_notice->end_effect_flag = TRUE; + } + } + } + } +} + +static void Player_actor_DeleteMark_Notice_rod(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_notice_rod_c* main_notice = &player->main_data.notice_rod; + + if (main_notice->end_effect_flag) { + Common_Get(clip).effect_clip->effect_kill_proc(eEC_EFFECT_YAJIRUSHI, RSV_NO); + main_notice->end_effect_flag = FALSE; + } +} + +static int Player_actor_Get_sakana_msg_num(int msg_offs) { + int ret_msg_no = msg_offs + 0x2FA9; + + if (msg_offs < 0x20) { + ret_msg_no = msg_offs + 0x1327; + } + + return ret_msg_no; +} + +static void Player_actor_Notice_rod_demo_ct(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + rgba_t color; + mMsg_Window_c* win = mMsg_Get_base_window_p(); + UKI_ACTOR* uki = (UKI_ACTOR*)player->fishing_rod_actor_p; + int msg_no = 0x1327; + + if (uki != NULL) { + int type = uki->gyo_type; + + if (type >= aSOG_FISH_TYPE_CRUCIAN_CARP) { + if (type < aSOG_FISH_TYPE_NUM + 1) { + if (player->now_main_index == mPlayer_INDEX_NOTICE_ROD) { + mPlayer_main_notice_rod_c* main_notice = &player->main_data.notice_rod; + u8 str[16]; + + if (main_notice->already_collected) { + mIN_copy_name_str(str, uki->get_fish_type_proc(&uki->actor_class)); + mMsg_Set_item_str_art(win, mMsg_ITEM_STR0, str, sizeof(str), + mIN_get_item_article(uki->get_fish_type_proc(&uki->actor_class))); + msg_no = 0x1349; + } else { + msg_no = Player_actor_Get_sakana_msg_num(type); + } + } else { + msg_no = Player_actor_Get_sakana_msg_num(type); + } + } else { + msg_no = type + 0x1997; + } + } + } + + mDemo_Set_msg_num(msg_no); + mDemo_Set_talk_display_name(FALSE); + mDemo_Set_camera(CAMERA2_PROCESS_ITEM); + mDemo_Set_ListenAble(); + mMsg_Set_LockContinue(win); + + color.r = 185; + color.g = 245; + color.b = 80; + color.a = 255; + + mDemo_Set_talk_window_color(&color); + mChoice_Clear_ChoseNum(mChoice_Get_base_window_p()); + mBGMPsComp_make_ps_fanfare(0x28, 0x168); +} + +static int Player_actor_MessageControl_Notice_rod(ACTOR* actor, GAME* game, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_notice_rod_c* main_notice = &player->main_data.notice_rod; + int* state_p = &main_notice->state; + mMsg_Window_c* win = mMsg_Get_base_window_p(); + int choice; + + if (main_notice->timer < 48.0f) { + main_notice->timer += 1.0f; + return -1; + } + + switch (*state_p) { + case 0: + + if (!mDemo_Check(mDemo_TYPE_REPORT, actor)) { + mDemo_Request(mDemo_TYPE_REPORT, actor, Player_actor_Notice_rod_demo_ct); + } else if (main_notice->already_collected) { + *state_p = 1; + } else { + *state_p = 3; + } + + return -1; + + case 1: + if (end_flag) { + Player_actor_AppearMark_Notice_rod(actor); + if (mMsg_Check_MainNormalContinue(win)) { + mMsg_Set_continue_msg_num(win, 0x134A); + mMsg_Unset_LockContinue(win); + *state_p = 2; + } + } + return -1; + + case 2: + if (!mMsg_Check_MainNormal(win)) { + Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_YATTA2, mPlayer_ANIM_YATTA2, 1.0f, 1.0f, + 0.5f, -5.0f, 0, 0); + mBGMPsComp_delete_ps_fanfare(0x28, 0x168); + mBGMPsComp_make_ps_fanfare(0x4C, 0x168); + mMsg_Set_LockContinue(win); + Player_actor_DeleteMark_Notice_rod(actor); + + *state_p = 3; + } + return -1; + + case 3: + + if (end_flag) { + if (!main_notice->already_collected) { + Player_actor_AppearMark_Notice_rod(actor); + } + if (main_notice->not_full_pocket) { + mMsg_Set_CancelNormalContinue(win); + *state_p = 5; + } else { + mMsg_Set_continue_msg_num(win, 0x1348); + *state_p = 4; + } + mMsg_Unset_LockContinue(win); + } + return -1; + + case 4: + choice = mChoice_Get_ChoseNum(mChoice_Get_base_window_p()); + + if (choice == mChoice_CHOICE0) { + main_notice->exchange_flag = TRUE; + *state_p = 5; + } else if (choice == mChoice_CHOICE1) { + main_notice->exchange_flag = FALSE; + *state_p = 5; + } + + return -1; + + case 5: + if (!mDemo_Check(mDemo_TYPE_REPORT, actor)) { + *state_p = 6; + Player_actor_DeleteMark_Notice_rod(actor); + } + return -1; + + default: + if (main_notice->not_full_pocket) { + return 0x39; + } else { + return !main_notice->exchange_flag ? 0x53 : 0x39; + } + } +} + +static void Player_actor_request_proc_index_fromNotice_rod(ACTOR* actor, GAME* game, int msg_control) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_notice_rod_c* main_notice = &player->main_data.notice_rod; + UKI_ACTOR* uki; + + switch (msg_control) { + case 0x39: + Player_actor_request_main_putaway_rod(game, main_notice->angle_y, main_notice->exchange_flag, + mPlayer_REQUEST_PRIORITY_29); + break; + + case 0x53: + uki = (UKI_ACTOR*)player->fishing_rod_actor_p; + + if (uki != NULL) { + mPlayer_request_release_creature_u release_data; + ACTOR* fish = uki->child_actor; + + bzero(&release_data, sizeof(mPlayer_request_release_creature_u)); + Player_actor_request_main_release_creature_all(game, 1, 0, &release_data, fish, + mPlayer_REQUEST_PRIORITY_30); + } + + break; + } +} + +static void Player_actor_main_Notice_rod(ACTOR* actor, GAME* game) { + f32 frame_calc; + int end_flag; + int cntrl; + + Player_actor_Movement_Notice_rod(actor); + end_flag = Player_actor_CulcAnimation_Notice_rod(actor, &frame_calc); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_SearchAnimation_Notice_rod(actor, game, frame_calc); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_Notice_rod(actor, end_flag); + Player_actor_ObjCheck_Notice_rod(actor, game); + Player_actor_BGcheck_Notice_rod(actor); + cntrl = Player_actor_MessageControl_Notice_rod(actor, game, end_flag); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromNotice_rod(actor, game, cntrl); +} From 62eb04dc17a66107d6872532649afab5068907ec Mon Sep 17 00:00:00 2001 From: Prakxo Date: Wed, 11 Sep 2024 20:27:17 +0200 Subject: [PATCH 220/234] match m_player_main_putaway_rod --- src/m_player_main_putaway_rod.c_inc | 97 +++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) diff --git a/src/m_player_main_putaway_rod.c_inc b/src/m_player_main_putaway_rod.c_inc index e69de29b..20c06136 100644 --- a/src/m_player_main_putaway_rod.c_inc +++ b/src/m_player_main_putaway_rod.c_inc @@ -0,0 +1,97 @@ + +static int Player_actor_request_main_putaway_rod(GAME* game, s16 angle, int exchange_flag, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_PUTAWAY_ROD, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + Player_actor_request_main_index(game, mPlayer_INDEX_PUTAWAY_ROD, priority); + + player->requested_main_index_data.putaway_rod.angle_y = angle; + player->requested_main_index_data.putaway_rod.exchange_flag = exchange_flag; + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Putaway_rod(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int kind = Player_actor_Get_ItemKind_from_submenu(); + mPlayer_main_putaway_rod_c* main_putaway = &player->main_data.putaway_rod; + mPlayer_request_putaway_rod_c* req_putaway = &player->requested_main_index_data.putaway_rod; + + main_putaway->timer = 0.0f; + main_putaway->angle_y = req_putaway->angle_y; + main_putaway->exchange_flag = req_putaway->exchange_flag; + + Player_actor_SetupItem_Base2(actor, kind, mPlayer_ANIM_TRANS_WAIT1, mPlayer_INDEX_HOLD, -5.0f, -1.0f, 0); + Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_PUTAWAY_T1, mPlayer_ANIM_PUTAWAY_T1, 1.0f, 1.0f, 0.5f, + -5.0f, 0, 0); + Player_actor_setup_main_Base(actor, game); + + Player_actor_sound_GASAGOSO(actor); +} + +static void Player_actor_Movement_Putaway_rod(ACTOR* actor) { + Player_actor_Movement_Base_Braking_common(actor, 0.32625f); +} + +static int Player_actor_CulcAnimation_Putaway_rod(ACTOR* actor, f32* frame_calc) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_ObjCheck_Putaway_rod(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Putaway_rod(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_SearchAnimation_Putaway_rod(ACTOR* actor, GAME* game, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_Set_FootMark_Base1(actor, game, FALSE, FALSE); + } +} + +static void Player_actor_SetTimer_Putaway_rod(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_putaway_rod_c* main_putaway = &player->main_data.putaway_rod; + + main_putaway->timer += 1.0f; +} + +static void Player_actor_request_proc_index_fromPutaway_rod(ACTOR* actor, GAME* game, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + GAME_PLAY* play = (GAME_PLAY*)game; + mPlayer_main_putaway_rod_c* main_putaway = &player->main_data.putaway_rod; + if (end_flag) { + if (main_putaway->exchange_flag) { + UKI_ACTOR* uki = (UKI_ACTOR*)player->fishing_rod_actor_p; + mActor_name_t type = uki->get_fish_type_proc(&uki->actor_class); + + mSM_open_submenu_new2(&play->submenu, mSM_OVL_INVENTORY, mSM_IV_OPEN_EXCHANGE, type, NULL, + main_putaway->angle_y); + } else { + Player_actor_SettleRequestMainIndexPriority(actor); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } + } +} + +static void Player_actor_main_Putaway_rod(ACTOR* actor, GAME* game) { + f32 frame_calc; + int end_flag; + + Player_actor_Movement_Putaway_rod(actor); + Player_actor_Reinput_force_position_angle(actor, game); + end_flag = Player_actor_CulcAnimation_Putaway_rod(actor, &frame_calc); + Player_actor_SearchAnimation_Putaway_rod(actor, game, frame_calc); + Player_actor_recover_lean_angle(actor); + Player_actor_set_tex_anime_pattern(actor); + Player_actor_ObjCheck_Putaway_rod(actor, game); + Player_actor_BGcheck_Putaway_rod(actor); + Player_actor_SetTimer_Putaway_rod(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromPutaway_rod(actor, game, end_flag); +} From dfd6dae3be1927b170db53e0340e3cd212feb393 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Wed, 11 Sep 2024 22:54:09 +0200 Subject: [PATCH 221/234] match m_player_main_dig_scoop --- include/bg_item_h.h | 2 +- src/bg_item_common.c_inc | 4 +- src/m_player_main_dig_scoop.c_inc | 279 ++++++++++++++++++++++++++++++ 3 files changed, 282 insertions(+), 3 deletions(-) diff --git a/include/bg_item_h.h b/include/bg_item_h.h index f9f6ee0b..3fe4f041 100644 --- a/include/bg_item_h.h +++ b/include/bg_item_h.h @@ -28,7 +28,7 @@ typedef void (*bIT_SHADOW_DRAW_PROC)(GAME*, bIT_ShadowData_c*, int); typedef void (*bIT_SINGLE_DRAW_PROC)(GAME* game, mActor_name_t fg_no, xyz_t* pos, f32 scale_f, bIT_DRAW_BF_PROC draw_bf, bIT_DRAW_AF_PROC draw_af, rgba_t* col); typedef int (*bIT_TREE_CUTCOUNT_CHECK_PROC)(GAME* game, int ut_x, int ut_z); -typedef void (*bIT_DIG_HOLE_EFFECT_ENTRY_PROC)(mActor_name_t fg_item, xyz_t* pos, u16 frames, u16 wait_frames); +typedef int (*bIT_DIG_HOLE_EFFECT_ENTRY_PROC)(mActor_name_t fg_item, xyz_t* pos, u16 frames, u16 wait_frames); typedef void (*bIT_BURY_HOLE_EFFECT_ENTRY_PROC)(mActor_name_t fg_item, xyz_t* pos, u16 frames); typedef int (*bIT_PIT_FALL_PROC)(mActor_name_t pit_fg_item, int ut_x, int ut_z, mActor_name_t fg_item_in_pit); typedef int (*bIT_PIT_FALL_STOP_PROC)(mActor_name_t pit_fg_item, int ut_x, int ut_z, mActor_name_t fg_item_in_pit); diff --git a/src/bg_item_common.c_inc b/src/bg_item_common.c_inc index ba6bc6f5..5902491d 100644 --- a/src/bg_item_common.c_inc +++ b/src/bg_item_common.c_inc @@ -1115,7 +1115,7 @@ static void bg_item_tree_fruit_drop(mActor_name_t fg_item, int ut_x, int ut_z, x } } -static void bIT_actor_dig_hole_effect_entry(mActor_name_t fg_item, xyz_t* pos, u16 frames, u16 wait_frames) { +static int bIT_actor_dig_hole_effect_entry(mActor_name_t fg_item, xyz_t* pos, u16 frames, u16 wait_frames) { int ut_x; int ut_z; @@ -1124,7 +1124,7 @@ static void bIT_actor_dig_hole_effect_entry(mActor_name_t fg_item, xyz_t* pos, u mFI_UtNum2DepositOFF(ut_x, ut_z); } - bIT_actor_hole_effect_entry(bIT_CLIP->bg_item_common_p->hole, fg_item, pos, frames, wait_frames, 1, 0); + return bIT_actor_hole_effect_entry(bIT_CLIP->bg_item_common_p->hole, fg_item, pos, frames, wait_frames, 1, 0); } static void bIT_actor_bury_hole_effect_entry(mActor_name_t fg_item, xyz_t* pos, u16 frames) { diff --git a/src/m_player_main_dig_scoop.c_inc b/src/m_player_main_dig_scoop.c_inc index e69de29b..9f81539f 100644 --- a/src/m_player_main_dig_scoop.c_inc +++ b/src/m_player_main_dig_scoop.c_inc @@ -0,0 +1,279 @@ +static int Player_actor_request_main_dig_scoop_all(GAME* game, const xyz_t* pos, mActor_name_t name, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_DIG_SCOOP, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + player->requested_main_index_data.dig_scoop.dig_pos = *pos; + player->requested_main_index_data.dig_scoop.item = name; + + Player_actor_request_main_index(game, mPlayer_INDEX_DIG_SCOOP, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Dig_scoop(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_dig_scoop_c* main_scoop = &player->main_data.dig_scoop; + mPlayer_request_dig_scoop_c* req_scoop = &player->requested_main_index_data.dig_scoop; + mActor_name_t item = req_scoop->item; + int stump = FALSE; + int anim_idx; + + if (IS_ITEM_TREE_STUMP(item)) { + stump = TRUE; + } + + anim_idx = mPlayer_ANIM_DIG1; + + if (stump) { + anim_idx = mPlayer_ANIM_DIG_KABU1; + } + + main_scoop->target_pos = req_scoop->dig_pos; + main_scoop->item = item; + + Player_actor_InitAnimation_Base2(actor, game, anim_idx, anim_idx, 1.0f, 1.0f, 0.5f, -5.0f, 0, 0); + Player_actor_setup_main_Base(actor, game); + mISL_SetNowPlayerAction(mISL_PLAYER_ACTION_DIG_SCOOP); +} + +static void Player_actor_Movement_Dig_scoop(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_swing_axe_c* main_axe = &player->main_data.swing_axe; + + Player_actor_Movement_axe_common(actor, &main_axe->axe_common.target_pos); + + actor->world.angle.y = actor->shape_info.rotation.y; +} + +static int Player_actor_CulcAnimation_Dig_scoop(ACTOR* actor, f32* frame_calc) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_SetEffectHit_Dig_scoop(ACTOR* actor, GAME* game, const xyz_t* pos, int main_index) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + cKF_FrameControl_c* fc = &player->keyframe0.frame_control; + int effect_idx; + s16 arg; + + if (player->animation0_idx == mPlayer_ANIM_DIG_KABU1) { + if (Player_actor_Check_AnimationFrame(fc, 17.0f)) { + effect_idx = eEC_EFFECT_DIG_SCOOP; + if (main_index != mPlayer_INDEX_GET_SCOOP) { + arg = 0; + } else { + arg = 3; + } + } else { + return; + } + } else { + if (Player_actor_Check_AnimationFrame(fc, 14.0f)) { + effect_idx = eEC_EFFECT_DIG_HOLE; + arg = 0; + } else if (Player_actor_Check_AnimationFrame(fc, 15.0f)) { + effect_idx = eEC_EFFECT_DIG_HOLE; + arg = 1; + } else if (Player_actor_Check_AnimationFrame(fc, 16.0f)) { + effect_idx = eEC_EFFECT_DIG_HOLE; + arg = 2; + } else if (Player_actor_Check_AnimationFrame(fc, 22.0f)) { + effect_idx = eEC_EFFECT_DIG_SCOOP; + if (main_index != mPlayer_INDEX_GET_SCOOP) { + arg = 0; + } else { + arg = 3; + } + } else { + return; + } + } + + Common_Get(clip).effect_clip->effect_make_proc(effect_idx, *pos, 2, actor->shape_info.rotation.y, game, RSV_NO, + mCoBG_Wpos2Attribute(*pos, NULL), arg); +} + +static void Player_actor_SetEffect_Dig_scoop(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_dig_scoop_c* main_scoop = &player->main_data.dig_scoop; + + Player_actor_SetEffectHit_Dig_scoop(actor, game, &main_scoop->target_pos, player->now_main_index); +} + +static void Player_actor_Put_Hole_Dig_scoop(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + f32 mod; + + if (Common_Get(clip).bg_item_clip != NULL) { + cKF_FrameControl_c* fc = &player->keyframe0.frame_control; + + if (player->animation0_idx == mPlayer_ANIM_DIG_KABU1) { + mod = 20.0f; + } else { + mod = 0.0f; + } + + if (Player_actor_Check_AnimationFrame(fc, mod + 20.0f)) { + mPlayer_main_dig_scoop_c* main_scoop = &player->main_data.dig_scoop; + xyz_t* pos = &main_scoop->target_pos; + mActor_name_t item = main_scoop->item; + + if (Common_Get(clip).bg_item_clip->dig_hole_effect_entry_proc(item, pos, 12, 0)) { + mCoBG_RegistDecalCircle(pos, 0.0f, 19.0f, 12); + if (item != EMPTY_NO) { + int spot = FALSE; + + if (item != EMPTY_NO && item != SHINE_SPOT) { + spot = TRUE; + } + + if (spot) { + Common_Get(clip).bg_item_clip->fly_entry_proc(item, pos, actor->shape_info.rotation.y); + } + } + } + } + } +} + +static void Player_actor_SetSound_Dig_scoop(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + f32 mod; + int anim; + cKF_FrameControl_c* fc = &player->keyframe0.frame_control; + int anim_idx; + + anim_idx = player->animation0_idx; + anim = anim_idx == mPlayer_ANIM_DIG_KABU1; + + if (anim) { + mod = 20.0f; + } else { + mod = 0.0f; + } + + if (Player_actor_Check_AnimationFrame(fc, (mod + 20.0f) - 5.0f)) { + if (anim) { + Player_actor_sound_kirikabu_out(actor); + } else { + Player_actor_sound_scoop1(actor); + Player_actor_set_viblation_Dig_scoop(); + } + } + + if (anim && Player_actor_Check_AnimationFrame(fc, 15.0f)) { + Player_actor_sound_kirikabu_scoop(actor); + Player_actor_set_viblation_Dig_scoop_stump(); + } + if (anim_idx == mPlayer_ANIM_GET_D1 && Player_actor_Check_AnimationFrame(fc, 21.0f)) { + Player_actor_sound_ITEM_HORIDASHI(actor); + } +} + +static void Player_actor_informed_insects_Dig_scoop(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 14.0f) && + Common_Get(clip).insect_clip != NULL && Common_Get(clip).insect_clip->set_pl_act_tim_proc != NULL) { + int ut_x; + int ut_z; + mPlayer_main_dig_scoop_c* main_scoop = &player->main_data.dig_scoop; + xyz_t* pos = &main_scoop->target_pos; + + mFI_Wpos2UtNum(&ut_x, &ut_z, *pos); + Common_Get(clip).insect_clip->set_pl_act_tim_proc(3, ut_x, ut_z); + } +} + +static void Player_actor_SearchAnimation_Dig_scoop(ACTOR* actor, GAME* game, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_SetEffect_Dig_scoop(actor, game); + Player_actor_Put_Hole_Dig_scoop(actor); + Player_actor_SetSound_Dig_scoop(actor); + Player_actor_Set_FootMark_Base1(actor, game, FALSE, FALSE); + Player_actor_informed_insects_Dig_scoop(actor); + } +} + +static void Player_actor_ObjCheck_Dig_scoop(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Dig_scoop(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static int Player_actor_lean_angle_scoop_common(ACTOR* actor, const xyz_t* pos, f32 frame) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + s16 ang = 0; + + if (player->keyframe0.frame_control.current_frame < frame) { + f32 x; + f32 y; + f32 z; + + x = pos->x - actor->world.position.x; + y = pos->y - actor->world.position.y; + z = pos->z - actor->world.position.z; + + if (x != 0.0f || z != 0.0f) { + ang = atans_table(Math3DVecLength2D(x, z), -y); + } + } + + add_calc_short_angle2(&actor->shape_info.rotation.x, ang, 1.0f - sqrtf(0.5), 273, 0); +} + +static void Player_actor_lean_angle_Dig_scoop(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_dig_scoop_c* main_scoop = &player->main_data.dig_scoop; + + Player_actor_lean_angle_scoop_common(actor, &main_scoop->target_pos, 21.0f); +} + +static void Player_actor_request_proc_index_fromDig_scoop(ACTOR* actor, GAME* game, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (end_flag != 0) { + Player_actor_SettleRequestMainIndexPriority(actor); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } else { + f32 mod; + cKF_FrameControl_c* fc = &player->keyframe0.frame_control; + + if (player->animation0_idx == mPlayer_ANIM_DIG_KABU1) { + mod = 20.0f; + } else { + mod = 0.0f; + } + + if (Player_actor_Check_AnimationFrame(fc, 34.5f + mod)) { + Player_actor_SettleRequestMainIndexPriority(actor); + Player_actor_Set_status_for_bee(actor, TRUE); + } else { + f32 cur_frame = fc->current_frame; + + if (cur_frame >= (35.0f + mod) && !Player_actor_CheckAndRequest_main_scoop_all(game, 4) && + (Player_actor_GetController_move_percentX() || Player_actor_GetController_move_percentY())) { + Player_actor_request_main_walk_all(game, NULL, -5.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } + } + } +} +static void Player_actor_main_Dig_scoop(ACTOR* actor, GAME* game) { + f32 frame_calc; + int end_flag; + + Player_actor_Movement_Dig_scoop(actor); + Player_actor_Reinput_force_position_angle(actor, game); + end_flag = Player_actor_CulcAnimation_Dig_scoop(actor, &frame_calc); + Player_actor_SearchAnimation_Dig_scoop(actor, game, frame_calc); + Player_actor_set_tex_anime_pattern(actor); + Player_actor_ObjCheck_Dig_scoop(actor, game); + Player_actor_BGcheck_Dig_scoop(actor); + Player_actor_lean_angle_Dig_scoop(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromDig_scoop(actor, game, end_flag); +} From 417fa87e77f1feb122dd934e24328c4024a3417d Mon Sep 17 00:00:00 2001 From: Prakxo Date: Wed, 11 Sep 2024 22:59:13 +0200 Subject: [PATCH 222/234] match m_player_main_fill_scoop --- src/m_player_main_fill_scoop.c_inc | 196 +++++++++++++++++++++++++++++ 1 file changed, 196 insertions(+) diff --git a/src/m_player_main_fill_scoop.c_inc b/src/m_player_main_fill_scoop.c_inc index e69de29b..49134a3a 100644 --- a/src/m_player_main_fill_scoop.c_inc +++ b/src/m_player_main_fill_scoop.c_inc @@ -0,0 +1,196 @@ +static int Player_actor_request_main_fill_scoop_all(GAME* game, const xyz_t* pos, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_FILL_SCOOP, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + player->requested_main_index_data.fill_scoop.dig_pos = *pos; + + Player_actor_request_main_index(game, mPlayer_INDEX_FILL_SCOOP, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Fill_scoop(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_fill_scoop_c* main_scoop = &player->main_data.fill_scoop; + mPlayer_request_fill_scoop_c* req_scoop = &player->requested_main_index_data.fill_scoop; + + main_scoop->target_pos = req_scoop->dig_pos; + + Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_FILL_UP1, mPlayer_ANIM_FILL_UP1, 1.0f, 1.0f, 0.5f, -5.0f, + 0, 0); + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_Movement_Fill_scoop(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_swing_axe_c* main_axe = &player->main_data.swing_axe; + + Player_actor_Movement_axe_common(actor, &main_axe->axe_common.target_pos); + + actor->world.angle.y = actor->shape_info.rotation.y; +} + +static int Player_actor_CulcAnimation_Fill_scoop(ACTOR* actor, f32* frame_calc) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_Reset_Hole_Fill_scoop(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + f32 mod = 0.0f; + cKF_FrameControl_c* fc = &player->keyframe0.frame_control; + + if (player->animation0_idx == mPlayer_ANIM_FILL_UP_I1) { + mod = 7.0f; + } else { + mod = 0.0f; + } + + if (Player_actor_Check_AnimationFrame(fc, 18.0f + mod) && Common_Get(clip).bg_item_clip != NULL) { + mPlayer_main_fill_scoop_c* main_scoop = &player->main_data.fill_scoop; + xyz_t* pos = &main_scoop->target_pos; + Common_Get(clip).bg_item_clip->bury_hole_effect_entry_proc(EMPTY_NO, pos, 46); + } +} + +static void Player_actor_SetEffectHit_Fill_scoop(ACTOR* actor, GAME* game, const xyz_t* pos) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + cKF_FrameControl_c* fc = &player->keyframe0.frame_control; + s16 arg; + f32 mod; + f32 c1; + f32 c2; + f32 c3; + f32 c4; + + if (player->animation0_idx == mPlayer_ANIM_FILL_UP_I1) { + mod = 7.0f; + } else { + mod = 0.0f; + } + c1 = 13.0f + mod; + c2 = 19.0f + mod; + c3 = 25.0f + mod; + c4 = 40.0f + mod; + if (Player_actor_Check_AnimationFrame(fc, c1)) { + arg = 3; + } else if (Player_actor_Check_AnimationFrame(fc, c2)) { + arg = 4; + } else if (Player_actor_Check_AnimationFrame(fc, c3)) { + arg = 5; + } else { + if (Player_actor_Check_AnimationFrame(fc, c4)) { + Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_DIG_SCOOP, *pos, 2, actor->shape_info.rotation.y, + game, RSV_NO, mCoBG_Wpos2Attribute(*pos, NULL), 2); + return; + } else { + return; + } + } + Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_DIG_HOLE, *pos, 2, actor->shape_info.rotation.y, game, + RSV_NO, mCoBG_Wpos2Attribute(*pos, NULL), arg); +} + +static void Player_actor_SetEffect_Fill_scoop(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + mPlayer_main_fill_scoop_c* main_scoop = &player->main_data.fill_scoop; + + Player_actor_SetEffectHit_Fill_scoop(actor, game, &main_scoop->target_pos); +} + +static void Player_actor_SetSound_Fill_scoop(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + f32 mod = 0.0f; + cKF_FrameControl_c* fc = &player->keyframe0.frame_control; + + if (player->animation0_idx == mPlayer_ANIM_FILL_UP_I1) { + mod = 7.0f; + } else { + mod = 0.0f; + } + + if (Player_actor_Check_AnimationFrame(fc, (18.0f + mod) - 7.0f)) { + Player_actor_sound_scoop_umeru(actor); + Player_actor_set_viblation_Fill_scoop(); + } +} + +static void Player_actor_SearchAnimation_Dig_scoop(ACTOR* actor, GAME* game, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_Reset_Hole_Fill_scoop(actor); + Player_actor_SetEffect_Fill_scoop(actor, game); + Player_actor_SetSound_Fill_scoop(actor); + Player_actor_Set_FootMark_Base1(actor, game, FALSE, FALSE); + } +} + +static void Player_actor_ObjCheck_Fill_scoop(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Fill_scoop(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static int Player_actor_lean_angle_scoop_common(ACTOR* actor, const xyz_t* pos, f32 frame) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + f32 mod = 0.0f; + + if (player->animation0_idx == mPlayer_ANIM_FILL_UP_I1) { + mod = 7.0f; + } else { + mod = 0.0f; + } + + Player_actor_lean_angle_scoop_common(actor, &player->main_data.fill_scoop.target_pos, 42.0f + mod); +} + +static void Player_actor_request_proc_index_fromFill_scoop(ACTOR* actor, GAME* game, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (end_flag != 0) { + Player_actor_SettleRequestMainIndexPriority(actor); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } else { + f32 mod; + cKF_FrameControl_c* fc = &player->keyframe0.frame_control; + + if (player->animation0_idx == mPlayer_ANIM_FILL_UP_I1) { + mod = 7.0f; + } else { + mod = 0.0f; + } + + if (Player_actor_Check_AnimationFrame(fc, 44.5f + mod)) { + Player_actor_SettleRequestMainIndexPriority(actor); + Player_actor_Set_status_for_bee(actor, TRUE); + } else { + f32 cur_frame = fc->current_frame; + + if (cur_frame >= (45.0f + mod) && !Player_actor_CheckAndRequest_main_scoop_all(game, 4) && + (Player_actor_GetController_move_percentX() || Player_actor_GetController_move_percentY())) { + Player_actor_request_main_walk_all(game, NULL, -5.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } + } + } +} + +static void Player_actor_main_Fill_scoop(ACTOR* actor, GAME* game) { + f32 frame_calc; + int end_flag; + + Player_actor_Movement_Fill_scoop(actor); + Player_actor_Reinput_force_position_angle(actor, game); + end_flag = Player_actor_CulcAnimation_Fill_scoop(actor, &frame_calc); + Player_actor_SearchAnimation_Fill_scoop(actor, game, frame_calc); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Fill_scoop(actor, game); + Player_actor_BGcheck_Fill_scoop(actor); + Player_actor_lean_angle_Fill_scoop(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromFill_scoop(actor, game, end_flag); +} From 5d0abe3198ee75ea7a41b85a5f8a62b6f644cc3f Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Thu, 12 Sep 2024 08:04:10 -0400 Subject: [PATCH 223/234] Implement & link m_player_lib --- config/rel_slices.yml | 5 + include/ac_uki.h | 13 + include/ac_weather.h | 38 +- include/m_actor_dlftbls.h | 20 +- include/m_collision_bg.h | 9 + include/m_common_data.h | 7 +- include/m_event.h | 7 + include/m_field_info.h | 2 +- include/m_name_table.h | 1 + include/m_npc.h | 319 +- include/m_player.h | 49 +- include/m_player_lib.h | 267 +- include/m_private.h | 2 + src/ac_npc_rtc_think.c.inc | 2 +- src/ac_t_umbrella.c | 24 +- src/ac_weather.c | 134 +- src/ac_weather_leaf.c | 127 +- src/ac_weather_rain.c | 132 +- src/ac_weather_sakura.c | 126 +- src/ac_weather_snow.c | 6 +- src/m_demo.c | 1518 +++++----- src/m_field_info.c | 6 +- src/m_npc.c | 3 +- src/m_player_common.c_inc | 6 +- src/m_player_controller.c_inc | 21 +- src/m_player_lib.c | 3710 ++++++++++++++++++++++++ src/m_player_main_rotate_octagon.c_inc | 2 +- src/m_player_other_func.c_inc | 6 +- src/m_scene.c | 2 +- src/m_titledemo.c | 2 +- 30 files changed, 5158 insertions(+), 1408 deletions(-) create mode 100644 src/m_player_lib.c diff --git a/config/rel_slices.yml b/config/rel_slices.yml index 933105be..cf830f3a 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -256,6 +256,11 @@ m_player_call.c: .text: [0x803D8AEC, 0x803D8CEC] .data: [0x8065B9A0, 0x8065B9C8] .bss: [0x8129CC98, 0x8129CCA8] +m_player_lib.c: + .text: [0x803D8CEC, 0x803DE8A0] + .rodata: [0x80642A10, 0x806431C8] + .data: [0x8065B9C8, 0x8065BE98] + .bss: [0x8129CCA8, 0x8129CD40] m_police_box.c: .text: [0x803DE8A0, 0x803DEE38] .rodata: [0x806431C8, 0x806431D8] diff --git a/include/ac_uki.h b/include/ac_uki.h index cd1ef093..631782f1 100644 --- a/include/ac_uki.h +++ b/include/ac_uki.h @@ -8,6 +8,19 @@ extern "C" { #endif +enum { + aUKI_STATUS_0, + aUKI_STATUS_CARRY, + aUKI_STATUS_READY, + aUKI_STATUS_CAST, + aUKI_STATUS_FLOAT, + aUKI_STATUS_VIB, + aUKI_STATUS_COMEBACK, + aUKI_STATUS_7, + + aUKI_STATUS_NUM +}; + typedef void (*aUKI_SET_VALUE_PROC)(ACTOR* actorx, xyz_t pos, xyz_t pos_speed, int param_4, int command); typedef mActor_name_t (*aUKI_GET_FISH_TYPE)(ACTOR* actorx); diff --git a/include/ac_weather.h b/include/ac_weather.h index 7774e372..decb49aa 100644 --- a/include/ac_weather.h +++ b/include/ac_weather.h @@ -11,32 +11,32 @@ extern "C" { extern int aWeather_ChangingWeather(); extern void aWeather_RequestChangeWeatherToIsland(); extern void aWeather_RequestChangeWeatherFromIsland(); - + extern ACTOR_PROFILE Weather_Profile; -typedef struct ac_weather_priv_s{ +typedef struct ac_weather_priv_s { xyz_t pos; xyz_t speed; f32 currentY; f32 unk1C; s16 timer; - s16 work[5]; + s16 work[5]; u8 use; u8 id; u8 status; -}aWeather_Priv; +} aWeather_Priv; typedef struct weather_actor_s WEATHER_ACTOR; -typedef void (*CHANGE_WEATHER_PROC)(ACTOR* weather, s16 status, s16 level); -typedef int (*GET_WEATHER_PRV_NUM)(ACTOR* weather); -typedef void (*REMOVE_WEATHER_PRV)(ACTOR* weather, int id); +typedef void (*CHANGE_WEATHER_PROC)(ACTOR* actorx, s16 status, s16 level); +typedef int (*GET_WEATHER_PRV_NUM)(ACTOR* actorx); +typedef void (*REMOVE_WEATHER_PRV)(ACTOR* actorx, int id); typedef aWeather_Priv* (*GET_WEATHER_PRV)(u8 status, s16 timer, xyz_t* pos, xyz_t* speed, ACTOR* weather, int id); typedef int (*WEATHER_SOUND_EFFECT)(); -typedef void (*CHANGE_WEATER_INSTANCE_PROC)(WEATHER_ACTOR* weather, s16 status, s16 level); +typedef void (*CHANGE_WEATER_INSTANCE_PROC)(ACTOR* actorx, s16 status, s16 level); -typedef struct ac_weather_clip_s{ - WEATHER_ACTOR* actor; +typedef struct ac_weather_clip_s { + ACTOR* actor; CHANGE_WEATHER_PROC change_weather; GET_WEATHER_PRV_NUM get_priv_num; REMOVE_WEATHER_PRV remove_priv; @@ -44,25 +44,24 @@ typedef struct ac_weather_clip_s{ WEATHER_SOUND_EFFECT stop_sound; WEATHER_SOUND_EFFECT start_sound; CHANGE_WEATER_INSTANCE_PROC change_weather_instance; -}aWeather_Clip_c; +} aWeather_Clip_c; - -typedef void (*MK_WEATHER_PROC)(ACTOR*,GAME*); +typedef void (*MK_WEATHER_PROC)(ACTOR*, GAME*); typedef void (*CT_WEATHER_PROC)(aWeather_Priv*, GAME*); typedef void (*MV_WEATHER_PROC)(aWeather_Priv*, GAME*); typedef void (*MT_WEATHER_PROC)(aWeather_Priv*, GAME*); typedef void (*ST_WEATHER_PROC)(GAME*); typedef void (*DW_WEATHER_PROC)(aWeather_Priv*, GAME*); -typedef struct ac_weather_profile_s{ +typedef struct ac_weather_profile_s { MK_WEATHER_PROC make; CT_WEATHER_PROC constructor; MV_WEATHER_PROC move; ST_WEATHER_PROC set; DW_WEATHER_PROC draw; -}aWeather_Profile_c; +} aWeather_Profile_c; -struct weather_actor_s{ +struct weather_actor_s { /* 0x000 */ ACTOR actor_class; /* 0x174 */ aWeather_Profile_c* current_profile; /* 0x178 */ s16 current_status; @@ -74,10 +73,10 @@ struct weather_actor_s{ /* 0x184 */ u8* ptr; /* 0x188 */ xyz_t pos; /* 0x194 */ aWeather_Priv* priv; - /* 0x198 */ void* t; + /* 0x198 */ void* t; /* 0x19C */ u8 request_change; /* 0x19E */ s16 unk19E; - /* 0x1A0 */ aWeather_Clip_c clip; + /* 0x1A0 */ aWeather_Clip_c clip; /* 0x1C0 */ s16 timer; /* 0x1C2 */ s16 timer2; /* 0x1C4 */ xyz_t wind_info; @@ -90,11 +89,10 @@ struct weather_actor_s{ /* 0x1DC */ s16 start_sound_effect; /* 0x1DE */ s16 stop_sound_effect; /* 0x1E0 */ s16 basement_event; -}; +}; #ifdef __cplusplus } #endif #endif - diff --git a/include/m_actor_dlftbls.h b/include/m_actor_dlftbls.h index 57167a8d..435f7b4e 100644 --- a/include/m_actor_dlftbls.h +++ b/include/m_actor_dlftbls.h @@ -9,16 +9,16 @@ extern "C" { #endif typedef struct actor_dlftbl_s { - u32 rom_start; // unused in AC - u32 rom_end; // unused in AC - u8* ram_start; // used only with a check, but never set in AC - u8* ram_end; // unused in AC - u8* alloc_buf; // used in AC but only on free check and data is never allocated - ACTOR_PROFILE* profile; // profile for the actor - int unk; // unused in AC - u16 flags; // related to memory pinning but functionally useless in AC since alloc_buf is never allocated - s8 num_actors; // number of this type of actor that currently exist - s8 unk2; // unused in AC + /* 0x00 */ u32 rom_start; // unused in AC + /* 0x04 */ u32 rom_end; // unused in AC + /* 0x08 */ u8* ram_start; // used only with a check, but never set in AC + /* 0x0C */ u8* ram_end; // unused in AC + /* 0x10 */ u8* alloc_buf; // used in AC but only on free check and data is never allocated + /* 0x14 */ ACTOR_PROFILE* profile; // profile for the actor + /* 0x18 */ int unk; // unused in AC + /* 0x1C */ u16 flags; // related to memory pinning but functionally useless in AC since alloc_buf is never allocated + /* 0x1E */ s8 num_actors; // number of this type of actor that currently exist + /* 0x1F */ s8 unk2; // unused in AC } ACTOR_DLFTBL; extern int actor_dlftbls_num; diff --git a/include/m_collision_bg.h b/include/m_collision_bg.h index c7181452..240b8661 100644 --- a/include/m_collision_bg.h +++ b/include/m_collision_bg.h @@ -345,6 +345,15 @@ extern f32 mCoBG_Wpos2BgUtCenterHeight_AddColumn(xyz_t pos); extern f32 mCoBG_UtNum2UtCenterY_Keep(int ut_x, int ut_z); extern int mCoBG_RegistDecalCircle(const xyz_t* pos_p, f32 radius_start, f32 radius_end, s16 timer); +typedef int (*mCoBG_LINECHECK_PROC)(mActor_name_t); + +#define mCoBG_LINECHECK_CAT_WALL (1 << 0) +#define mCoBG_LINECHECK_CAT_GROUND (1 << 1) +#define mCoBG_LINECHECK_CAT_WATER (1 << 2) + +extern int mCoBG_LineCheck_RemoveFg(xyz_t* rev_pos, xyz_t start_pos, xyz_t end_pos, mCoBG_LINECHECK_PROC check_proc, + int category); + extern void mCoBG_InitMoveBgData(); extern void mCoBG_InitBlockBgCheckMode(); extern void mCoBG_InitDecalCircle(); diff --git a/include/m_common_data.h b/include/m_common_data.h index d072f6ea..192cd1e5 100644 --- a/include/m_common_data.h +++ b/include/m_common_data.h @@ -241,7 +241,8 @@ typedef struct common_data_s { /* 0x028592 */ s16 demo_profiles[2]; /* demo_profiles[0] is for demo_clip, demo_profiles[1] is for demo_clip2 */ /* 0x028596 */ u16 copy_protect_code; /* 0x028598 */ int event_keep_flags[4]; - /* 0x0285A8 */ u8 _285A8[0x0285BE - 0x0285A8]; + /* 0x0285A8 */ u8 _285A8[0x0285BD - 0x0285A8]; + /* 0x0285BD */ s8 player_warp_request; /* 0x0285BE */ s8 player_actor_exists; /* 0x0285BF */ s8 complete_payment_type; /* 0x0285C0 */ s8 player_decoy_flag; @@ -258,8 +259,8 @@ typedef struct common_data_s { /* 0x028839 */ s8 player_bee_chase_flag; /* 0x02883A */ s8 goki_shocked_flag; /* 0x02883B */ u8 time_changed_flag; - /* 0x02883C */ u8 unable_to_wade_flag; - /* 0x02883D */ u8 fail_emu_flag; + /* 0x02883C */ s8 unable_wade; + /* 0x02883D */ s8 fail_emu_flag; /* 0x02883E */ u8 train_coming_flag; /* state tracker for when train is going to spawn/has spawned */ /* 0x02883F */ u8 train_exists_flag; /* state tracker for when train exists */ /* 0x028840 */ u8 train_control_state; /* current train state */ diff --git a/include/m_event.h b/include/m_event.h index ef08001b..0504a46e 100644 --- a/include/m_event.h +++ b/include/m_event.h @@ -350,6 +350,13 @@ enum { mEv_SPECIAL_STATE_NUM }; +enum { + mEv_EVENT_MAIL_VT_DAY, /* Valentine's day */ + mEv_EVENT_MAIL_WT_DAY, /* White day */ + + mEv_EVENT_MAIL_NUM +}; + #define mEv_STATUS_ACTIVE (1 << 0) /* event is active */ #define mEv_STATUS_STOP (1 << 1) /* event is stopped */ #define mEv_STATUS_SHOW (1 << 2) /* event is shown */ diff --git a/include/m_field_info.h b/include/m_field_info.h index 6717e39a..490ef92a 100644 --- a/include/m_field_info.h +++ b/include/m_field_info.h @@ -308,7 +308,7 @@ extern int mFI_UnregistMoveActorList(mActor_name_t actor_name, int bx, int bz); extern int mFI_AddMoveActorList(mActor_name_t actor_name, int bx, int bz, int ut_x, int ut_z, s16 arg); extern mFM_move_actor_c* mFI_MoveActorListDma(int bx, int bz); extern void mFI_InitMoveActorBitData(); -extern void mFI_SetPlayerWade(GAME_PLAY* play); +extern void mFI_SetPlayerWade(GAME* game); extern int mFI_CheckPlayerWade(int wade); extern int mFI_GetPlayerWade(); extern int mFI_GetNextBlockNum(int* bx, int* bz); diff --git a/include/m_name_table.h b/include/m_name_table.h index 3d65771a..7f14095d 100644 --- a/include/m_name_table.h +++ b/include/m_name_table.h @@ -497,6 +497,7 @@ extern int mNT_check_unknown(mActor_name_t item_no); (item) >= GOLD_TREE_STUMP001 && (item) <= GOLD_TREE_STUMP004 \ ) +#define IS_ITEM_HITTABLE_TREE(item) (IS_ITEM_SMALL_TREE(item) || IS_ITEM_MED_TREE(item) || IS_ITEM_LARGE_TREE(item) || IS_ITEM_FULL_TREE(item)) #define IS_ITEM_SHAKEABLE_TREE(item) (IS_ITEM_MED_TREE(item) || IS_ITEM_LARGE_TREE(item) || IS_ITEM_FULL_TREE(item)) #define IS_ITEM_BEE_TREE(item) ((item) == TREE_BEES || (item) == CEDAR_TREE_BEES || (item) == GOLD_TREE_BEES) diff --git a/include/m_npc.h b/include/m_npc.h index 9343c3d3..80feb7ed 100644 --- a/include/m_npc.h +++ b/include/m_npc.h @@ -23,7 +23,7 @@ extern "C" { #define mNpc_GET_TYPE(npc_id) ((npc_id) & 0xF000) #define mNpc_IS_SPECIAL(npc_id) (mNpc_GET_TYPE(npc_id) == 0xD000) -#define ANIMAL_NUM_MIN 5 +#define ANIMAL_NUM_MIN 5 #define ANIMAL_NUM_MAX 15 /* Maximum number of villagers possible in town */ #define ANIMAL_MEMORY_NUM 7 #define ANIMAL_CATCHPHRASE_LEN 10 @@ -38,188 +38,194 @@ extern "C" { #define mNpc_ISLANDER_NO ANIMAL_NUM_MAX enum { - mNpc_MOOD_0, - mNpc_MOOD_1, - mNpc_MOOD_2, - mNpc_MOOD_3, - mNpc_MOOD_4, - mNpc_MOOD_5, - mNpc_MOOD_6, - mNpc_MOOD_7, - mNpc_MOOD_8, + mNpc_MOOD_0, + mNpc_MOOD_1, + mNpc_MOOD_2, + mNpc_MOOD_3, + mNpc_MOOD_4, + mNpc_MOOD_5, + mNpc_MOOD_6, + mNpc_MOOD_7, + mNpc_MOOD_8, - mNpc_MOOD_NUM + mNpc_MOOD_NUM }; enum { - mNpc_LETTER_RANK_BAD, - mNpc_LETTER_RANK_OK, + mNpc_LETTER_RANK_BAD, + mNpc_LETTER_RANK_OK, - mNpc_LETTER_RANK_NUM + mNpc_LETTER_RANK_NUM }; enum { - mNpc_EVENT_MAIL_VT_DAY, /* valentine's day */ - mNpc_EVENT_MAIL_WT_DAY, /* white day (JP only) */ + mNpc_EVENT_MAIL_VT_DAY, /* valentine's day */ + mNpc_EVENT_MAIL_WT_DAY, /* white day (JP only) */ - mNpc_EVENT_MAIL_NUM + mNpc_EVENT_MAIL_NUM }; enum { - mNpc_EVENT_MAIL_BEST_FRIEND, - mNpc_EVENT_MAIL_OK_FRIEND, - mNpc_EVENT_MAIL_NOT_FRIEND, + mNpc_EVENT_MAIL_BEST_FRIEND, + mNpc_EVENT_MAIL_OK_FRIEND, + mNpc_EVENT_MAIL_NOT_FRIEND, - mNpc_EVENT_MAIL_FRIEND_NUM + mNpc_EVENT_MAIL_FRIEND_NUM }; enum { - mNpc_GROW_STARTER, - mNpc_GROW_MOVE_IN, - mNpc_GROW_ISLANDER, + mNpc_GROW_STARTER, + mNpc_GROW_MOVE_IN, + mNpc_GROW_ISLANDER, - mNpc_GROW_NUM + mNpc_GROW_NUM }; enum { - mNpc_NAME_TYPE_SPNPC, - mNpc_NAME_TYPE_NPC, + mNpc_NAME_TYPE_SPNPC, + mNpc_NAME_TYPE_NPC, - mNpc_NAME_TYPE_NUM + mNpc_NAME_TYPE_NUM }; enum { - mNpc_FEEL_NORMAL, - mNpc_FEEL_HAPPY, - mNpc_FEEL_ANGRY, - mNpc_FEEL_SAD, - mNpc_FEEL_SLEEPY, - mNpc_FEEL_PITFALL, + mNpc_FEEL_NORMAL, + mNpc_FEEL_HAPPY, + mNpc_FEEL_ANGRY, + mNpc_FEEL_SAD, + mNpc_FEEL_SLEEPY, + mNpc_FEEL_PITFALL, - mNpc_FEEL_NUM, + mNpc_FEEL_NUM, - mNpc_FEEL_6 = mNpc_FEEL_NUM, - mNpc_FEEL_UZAI_0, - mNpc_FEEL_UZAI_1, + mNpc_FEEL_6 = mNpc_FEEL_NUM, + mNpc_FEEL_UZAI_0, + mNpc_FEEL_UZAI_1, - mNpc_FEEL_ALL_NUM + mNpc_FEEL_ALL_NUM }; enum { - mNpc_PATIENCE_MILDLY_ANNOYED, - mNpc_PATIENCE_ANNOYED, - mNpc_PATIENCE_NORMAL, + mNpc_PATIENCE_MILDLY_ANNOYED, + mNpc_PATIENCE_ANNOYED, + mNpc_PATIENCE_NORMAL, - mNpc_PATIENCE_NUM + mNpc_PATIENCE_NUM }; /* sizeof(Anmremail_c) == 0x16 */ typedef struct animal_remail_s { - lbRTC_ymd_c date; /* date sent */ - u8 name[ANIMAL_NAME_LEN]; /* villager name */ - u8 land_name[LAND_NAME_SIZE]; /* town name */ - struct { - u8 cond:1; /* was letter good or not */ - u8 looks:7; /* personality */ - } flags; + lbRTC_ymd_c date; /* date sent */ + u8 name[ANIMAL_NAME_LEN]; /* villager name */ + u8 land_name[LAND_NAME_SIZE]; /* town name */ + struct { + u8 cond : 1; /* was letter good or not */ + u8 looks : 7; /* personality */ + } flags; } Anmremail_c; /* sizeof(Anmplmail_c) == 0x104 */ typedef struct animal_player_maiL_s { - /* 0x000 */ u8 font; /* 'font' to use for letter info */ - /* 0x001 */ u8 paper_type; - /* 0x002 */ mActor_name_t present; - /* 0x004 */ u8 header_back_start; /* position for name insertion in header */ - /* 0x005 */ u8 header[MAIL_HEADER_LEN]; - /* 0x01D */ u8 body[MAIL_BODY_LEN]; - /* 0x0DD */ u8 footer[MAIL_FOOTER_LEN]; - /* 0x0FD */ u8 pad0; /* likely pad */ - /* 0x0FE */ lbRTC_ymd_c date; /* sent date */ + /* 0x000 */ u8 font; /* 'font' to use for letter info */ + /* 0x001 */ u8 paper_type; + /* 0x002 */ mActor_name_t present; + /* 0x004 */ u8 header_back_start; /* position for name insertion in header */ + /* 0x005 */ u8 header[MAIL_HEADER_LEN]; + /* 0x01D */ u8 body[MAIL_BODY_LEN]; + /* 0x0DD */ u8 footer[MAIL_FOOTER_LEN]; + /* 0x0FD */ u8 pad0; /* likely pad */ + /* 0x0FE */ lbRTC_ymd_c date; /* sent date */ } Anmplmail_c; /* sizeof(Anmhome_c) == 5 */ typedef struct animal_home_s { - /* 0x00 */ u8 type_unused; /* Likely the house type, but seems to be unused outside of SChk_Anmhome_c_sub */ - /* 0x01 */ u8 block_x; /* acre x position */ - /* 0x02 */ u8 block_z; /* acre y position */ - /* 0x03 */ u8 ut_x; /* unit x position */ - /* 0x04 */ u8 ut_z; /* unit z position */ + /* 0x00 */ u8 type_unused; /* Likely the house type, but seems to be unused outside of SChk_Anmhome_c_sub */ + /* 0x01 */ u8 block_x; /* acre x position */ + /* 0x02 */ u8 block_z; /* acre y position */ + /* 0x03 */ u8 ut_x; /* unit x position */ + /* 0x04 */ u8 ut_z; /* unit z position */ } Anmhome_c; /* sizeof(Anmlet_c) == 1 */ typedef struct animal_letter_info_s { - u8 exists:1; /* letter received by villager and exists */ - u8 cond:1; /* mNpc_LETTER_RANK_* */ - u8 send_reply:1; /* set when the villager should reply */ - u8 has_present_cloth:1; /* set when the villager's held present shirt is from this letter */ - u8 wearing_present_cloth:1; /* set when a villager is wearing the shirt sent with the saved letter */ - u8 bit5_7:3; /* seemingly unused */ + u8 exists : 1; /* letter received by villager and exists */ + u8 cond : 1; /* mNpc_LETTER_RANK_* */ + u8 send_reply : 1; /* set when the villager should reply */ + u8 has_present_cloth : 1; /* set when the villager's held present shirt is from this letter */ + u8 wearing_present_cloth : 1; /* set when a villager is wearing the shirt sent with the saved letter */ + u8 bit5_7 : 3; /* seemingly unused */ } Anmlet_c; /* sizeof(Anmlnd_c) == 0xA */ typedef struct animal_land_mem_s { - /* 0x00 */ u8 name[LAND_NAME_SIZE]; - /* 0x08 */ u16 id; + /* 0x00 */ u8 name[LAND_NAME_SIZE]; + /* 0x08 */ u16 id; } Anmlnd_c; typedef struct island_animal_best_ftr_s { - u32 check; - u16 have_bitfield; + u32 check; + u16 have_bitfield; } Anm_bestFtr_c; /* sizeof(memuni_u) == 0xC */ typedef union { - Anmlnd_c land; /* size = 0xA */ - Anm_bestFtr_c island; /* size = 6 */ + Anmlnd_c land; /* size = 0xA */ + Anm_bestFtr_c island; /* size = 6 */ } memuni_u; /* sizeof(Anmmem_c) == 0x138 */ typedef struct animal_memory_s { - /* 0x000 */ PersonalID_c memory_player_id; /* personal id of the player memory belongs to */ - /* 0x014 */ lbRTC_time_c last_speak_time; /* time the player last spoke to this villager */ - /* 0x01C */ memuni_u memuni; /* union between town NPC land memory & islander player action memory */ - /* 0x028 */ u64 saved_town_tune; /* memory origin town tune */ - /* 0x030 */ s8 friendship; /* friendship with the player */ - /* 0x031 */ Anmlet_c letter_info; /* saved letter flags */ - /* 0x032 */ Anmplmail_c letter; /* saved letter */ + /* 0x000 */ PersonalID_c memory_player_id; /* personal id of the player memory belongs to */ + /* 0x014 */ lbRTC_time_c last_speak_time; /* time the player last spoke to this villager */ + /* 0x01C */ memuni_u memuni; /* union between town NPC land memory & islander player action memory */ + /* 0x028 */ u64 saved_town_tune; /* memory origin town tune */ + /* 0x030 */ s8 friendship; /* friendship with the player */ + /* 0x031 */ Anmlet_c letter_info; /* saved letter flags */ + /* 0x032 */ Anmplmail_c letter; /* saved letter */ } Anmmem_c; /* sizeof(anmuni) == 8 */ typedef union { - u8 previous_land_name[LAND_NAME_SIZE]; - mActor_name_t island_ftr[mNpc_ISLAND_FTR_SAVE_NUM]; + u8 previous_land_name[LAND_NAME_SIZE]; + mActor_name_t island_ftr[mNpc_ISLAND_FTR_SAVE_NUM]; } anmuni_u; /* sizeof(AnmHPMail_c) == 0x1C */ typedef struct animal_password_mail_s { - /* 0x00 */ lbRTC_time_c receive_time; - /* 0x08 */ u8 password[20]; /* TODO: this should not be a hardcoded length */ + /* 0x00 */ lbRTC_time_c receive_time; + /* 0x08 */ u8 password[20]; /* TODO: this should not be a hardcoded length */ } AnmHPMail_c; /* sizeof(Animal_c) == 0x988 */ typedef struct animal_s { - /* 0x000 */ AnmPersonalID_c id; /* this villager's ID */ - /* 0x010 */ Anmmem_c memories[ANIMAL_MEMORY_NUM]; /* memories of players who've spoken to this villager */ - /* 0x898 */ Anmhome_c home_info; /* home position info */ - /* 0x89D */ u8 catchphrase[ANIMAL_CATCHPHRASE_LEN]; /* may be called 'word_ending' */ - /* 0x8A8 */ mQst_contest_c contest_quest; /* current contest quest information */ - /* 0x8D0 */ u8 parent_name[PLAYER_NAME_LEN]; /* name of the player who 'spawned' the villager in, unsure why this is tracked */ - /* 0x8D8 */ anmuni_u anmuni; /* name of the last town the villager lived in or saved island ftr */ - /* 0x8E0 */ u16 previous_land_id; /* id of the previous town the villager lived in */ - /* 0x8E2 */ u8 mood; /* probably called 'feel' based on code */ - /* 0x8E3 */ u8 mood_time; /* probably called 'feel_tim' based on code */ - /* 0x8E4 */ mActor_name_t cloth; /* shirt the villager is wearing */ - /* 0x8E6 */ u16 remove_info; /* info about villager moving between towns? kinda stubbed */ - /* 0x8E8 */ u8 is_home; /* TRUE when the villager is home, otherwise FALSE */ - /* 0x8E9 */ u8 moved_in; /* TRUE when the villager moved in after town creation, FALSE if they started out in town */ - /* 0x8EA */ u8 removing; /* TRUE when the villager is leaving town, FALSE otherwise */ - /* 0x8EB */ u8 cloth_original_id; /* 0xFF when not wearing an Able Sister's pattern, otherwise 0-3 indicating which pattern */ - /* 0x8EC */ s8 umbrella_id; /* 0xFF when no umbrella, 0-31 when a standard umbrella, 32-35 when using an Able Sister's pattern */ - /* 0x8ED */ u8 unk_8ED; /* Exists according to mISL_gc_to_agb_animal, but seems unused in practice */ - /* 0x8EE */ mActor_name_t present_cloth; /* The most recently received shirt from a letter which the villager may change into */ - /* 0x8F0 */ u8 animal_relations[ANIMAL_NUM_MAX]; /* relationships between all villagers in town, starts at 128 which is neutral */ - /* 0x900 */ AnmHPMail_c hp_mail[ANIMAL_HP_MAIL_NUM]; /* mail password info storage */ - /* 0x000 */ u8 unused[24]; /* unknown usage/unused */ + /* 0x000 */ AnmPersonalID_c id; /* this villager's ID */ + /* 0x010 */ Anmmem_c memories[ANIMAL_MEMORY_NUM]; /* memories of players who've spoken to this villager */ + /* 0x898 */ Anmhome_c home_info; /* home position info */ + /* 0x89D */ u8 catchphrase[ANIMAL_CATCHPHRASE_LEN]; /* may be called 'word_ending' */ + /* 0x8A8 */ mQst_contest_c contest_quest; /* current contest quest information */ + /* 0x8D0 */ u8 + parent_name[PLAYER_NAME_LEN]; /* name of the player who 'spawned' the villager in, unsure why this is tracked */ + /* 0x8D8 */ anmuni_u anmuni; /* name of the last town the villager lived in or saved island ftr */ + /* 0x8E0 */ u16 previous_land_id; /* id of the previous town the villager lived in */ + /* 0x8E2 */ u8 mood; /* probably called 'feel' based on code */ + /* 0x8E3 */ u8 mood_time; /* probably called 'feel_tim' based on code */ + /* 0x8E4 */ mActor_name_t cloth; /* shirt the villager is wearing */ + /* 0x8E6 */ u16 remove_info; /* info about villager moving between towns? kinda stubbed */ + /* 0x8E8 */ u8 is_home; /* TRUE when the villager is home, otherwise FALSE */ + /* 0x8E9 */ u8 + moved_in; /* TRUE when the villager moved in after town creation, FALSE if they started out in town */ + /* 0x8EA */ u8 removing; /* TRUE when the villager is leaving town, FALSE otherwise */ + /* 0x8EB */ u8 + cloth_original_id; /* 0xFF when not wearing an Able Sister's pattern, otherwise 0-3 indicating which pattern */ + /* 0x8EC */ s8 umbrella_id; /* 0xFF when no umbrella, 0-31 when a standard umbrella, 32-35 when using an Able + Sister's pattern */ + /* 0x8ED */ u8 unk_8ED; /* Exists according to mISL_gc_to_agb_animal, but seems unused in practice */ + /* 0x8EE */ mActor_name_t + present_cloth; /* The most recently received shirt from a letter which the villager may change into */ + /* 0x8F0 */ u8 animal_relations[ANIMAL_NUM_MAX]; /* relationships between all villagers in town, starts at 128 which + is neutral */ + /* 0x900 */ AnmHPMail_c hp_mail[ANIMAL_HP_MAIL_NUM]; /* mail password info storage */ + /* 0x000 */ u8 unused[24]; /* unknown usage/unused */ } Animal_c; /* @@ -230,69 +236,69 @@ typedef struct animal_s { /* sizeof(Anmret_c) == 0xC */ typedef struct animal_return_s { - /* 0x00 */ mActor_name_t npc_id; /* id of the villager who left */ - /* 0x02 */ u8 talk_bit; /* which players have already interacted with this villager */ - /* 0x03 */ u8 exist; /* if the villager exists */ - /* 0x04 */ lbRTC_time_c renew_time; /* time that this struct was updated */ + /* 0x00 */ mActor_name_t npc_id; /* id of the villager who left */ + /* 0x02 */ u8 talk_bit; /* which players have already interacted with this villager */ + /* 0x03 */ u8 exist; /* if the villager exists */ + /* 0x04 */ lbRTC_time_c renew_time; /* time that this struct was updated */ } Anmret_c; typedef struct demo_npc_s { - mActor_name_t npc_name; /* villager id, E0XX */ - u32 block_x, block_z; /* spawn acre */ - u32 ut_x, ut_z; /* spawn unit in acre */ + mActor_name_t npc_name; /* villager id, E0XX */ + u32 block_x, block_z; /* spawn acre */ + u32 ut_x, ut_z; /* spawn unit in acre */ } mNpc_demo_npc_c; typedef struct { - u8 type; - u8 palette; - u8 wall_id; - u8 floor_id; - mActor_name_t main_layer_id; - mActor_name_t secondary_layer_id; + u8 type; + u8 palette; + u8 wall_id; + u8 floor_id; + mActor_name_t main_layer_id; + mActor_name_t secondary_layer_id; } mNpc_NpcHouseData_c; typedef struct npc_conversation_s { - u8 beesting:1; // talk to player about their beesting - u8 fish_complete:1; // talk to the player about catching all fish - u8 insect_complete:1; // talk to the player about catching all insects - u8 unk:5; + u8 beesting : 1; // talk to player about their beesting + u8 fish_complete : 1; // talk to the player about catching all fish + u8 insect_complete : 1; // talk to the player about catching all insects + u8 unk : 5; } mNpc_NpcConversation_c; typedef struct npc_list_s { - mActor_name_t name; - mActor_name_t field_name; - xyz_t house_position; - xyz_t position; - u8 appear_flag; - mNpc_NpcConversation_c conversation_flags; - mQst_base_c quest_info; - mNpc_NpcHouseData_c house_data; - mActor_name_t reward_furniture; + mActor_name_t name; + mActor_name_t field_name; + xyz_t house_position; + xyz_t position; + u8 appear_flag; + mNpc_NpcConversation_c conversation_flags; + mQst_base_c quest_info; + mNpc_NpcHouseData_c house_data; + mActor_name_t reward_furniture; } mNpc_NpcList_c; typedef struct event_npc_s { - mActor_name_t event_id; /* event NPC id */ - mActor_name_t texture_id; /* real NPC id which is used for texture data */ - mActor_name_t npc_id; /* non-texture NPC id used for other NPC data */ - mActor_name_t cloth_id; /* cloth texture id */ - u8 exists; /* has the actor been spawned yet? */ - u8 in_use; /* is this event npc structure being used? */ - u16 _A; /* exists based on size of structure, seems unused */ + mActor_name_t event_id; /* event NPC id */ + mActor_name_t texture_id; /* real NPC id which is used for texture data */ + mActor_name_t npc_id; /* non-texture NPC id used for other NPC data */ + mActor_name_t cloth_id; /* cloth texture id */ + u8 exists; /* has the actor been spawned yet? */ + u8 in_use; /* is this event npc structure being used? */ + u16 _A; /* exists based on size of structure, seems unused */ } mNpc_EventNpc_c; typedef struct mask_npc_s { - mActor_name_t mask_id; /* 'mask' actor id */ - mActor_name_t npc_id; /* NPC actor id whose data will be used */ - mActor_name_t cloth_id; /* cloth actor id */ - u8 exists; /* has the actor been spawned yet? */ - u8 in_use; /* is this mask npc structure being used? */ - Animal_c animal_data; /* animal data is copied if the mask npc is a standard villager NPC */ + mActor_name_t mask_id; /* 'mask' actor id */ + mActor_name_t npc_id; /* NPC actor id whose data will be used */ + mActor_name_t cloth_id; /* cloth actor id */ + u8 exists; /* has the actor been spawned yet? */ + u8 in_use; /* is this mask npc structure being used? */ + Animal_c animal_data; /* animal data is copied if the mask npc is a standard villager NPC */ } mNpc_MaskNpc_c; typedef struct npc_default_data_s { - mActor_name_t cloth; - u16 catchphrase_str_idx; - s8 umbrella; + mActor_name_t cloth; + u16 catchphrase_str_idx; + s8 umbrella; } mNpc_Default_Data_c; extern void mNpc_AddNowNpcMax(u8* npc_max); @@ -340,7 +346,8 @@ extern void mNpc_CopyAnimalInfo(Animal_c* dst, Animal_c* src); extern int mNpc_SearchAnimalinfo(Animal_c* animal, mActor_name_t npc_id, int count); extern Animal_c* mNpc_GetAnimalInfoP(mActor_name_t npc_id); extern int mNpc_SearchAnimalPersonalID(AnmPersonalID_c* anm_pid); -extern AnmPersonalID_c* mNpc_GetOtherAnimalPersonalIDOtherBlock(AnmPersonalID_c* exclude_pids, int count, int bx, int bz, int check_flag); +extern AnmPersonalID_c* mNpc_GetOtherAnimalPersonalIDOtherBlock(AnmPersonalID_c* exclude_pids, int count, int bx, + int bz, int check_flag); extern AnmPersonalID_c* mNpc_GetOtherAnimalPersonalID(AnmPersonalID_c* pids, int count); extern void mNpc_SetAnimalThisLand(Animal_c* animal, int count); extern int mNpc_GetSameLooksNum(u8 looks); @@ -354,7 +361,7 @@ extern int mNpc_SendMailtoNpc(Mail_c* mail); extern void mNpc_ClearRemail(Anmremail_c* remail); extern void mNpc_Remail(); extern u8 mNpc_GetPaperType(); -extern int mNpc_SendVtdayMail(); +extern int mNpc_SendVtdayMail(int type); extern int mNpc_CheckFriendship(PersonalID_c* pid, Animal_c* animal); extern int mNpc_SendEventBirthdayCard(PersonalID_c* pid); extern int mNpc_SendEventBirthdayCard2(PersonalID_c* pid, int player_no); @@ -366,7 +373,8 @@ extern void mNpc_ChangePresentCloth(); extern u8* mNpc_GetWordEnding(ACTOR* actor); extern void mNpc_ResetWordEnding(ACTOR* actor); extern int mNpc_GetFreeEventNpcIdx(); -extern int mNpc_RegistEventNpc(mActor_name_t event_id, mActor_name_t texture_id, mActor_name_t npc_id, mActor_name_t cloth_id); +extern int mNpc_RegistEventNpc(mActor_name_t event_id, mActor_name_t texture_id, mActor_name_t npc_id, + mActor_name_t cloth_id); extern void mNpc_UnRegistEventNpc(mNpc_EventNpc_c* npc); extern void mNpc_ClearEventNpc(); extern mNpc_EventNpc_c* mNpc_GetSameEventNpc(mActor_name_t event_id); @@ -383,7 +391,8 @@ extern void mNpc_SetAnimalTitleDemo(mNpc_demo_npc_c* demo_npc, Animal_c* animal, extern int mNpc_GetReservedUtNum(int* ut_x, int* ut_z, mActor_name_t* item); extern int mNpc_BlockNum2ReservedUtNum(int* ut_x, int* ut_z, int bx, int bz); extern void mNpc_MakeReservedListBeforeFieldct(Anmhome_c* reserved, int reserved_num, u8* reserved_count); -extern void mNpc_MakeReservedListAfterFieldct(Anmhome_c* reserved, int reserved_num, u8* reserved_count, u8 bx_max, u8 bz_max); +extern void mNpc_MakeReservedListAfterFieldct(Anmhome_c* reserved, int reserved_num, u8* reserved_count, u8 bx_max, + u8 bz_max); extern mNpc_InitNpcData(); extern void mNpc_InitNpcList(mNpc_NpcList_c* npclist, int count); extern void mNpc_SetNpcList(mNpc_NpcList_c* npclist, Animal_c* animal, int count, int malloc_flag); diff --git a/include/m_player.h b/include/m_player.h index aa435a51..12bc9129 100644 --- a/include/m_player.h +++ b/include/m_player.h @@ -775,6 +775,37 @@ enum { mPlayer_GOLDEN_ITEM_TYPE_NUM }; +enum { + mPlayer_USE_FACE_ROM_TYPE_TEX, + mPlayer_USE_FACE_ROM_TYPE_PAL, + + mPlayer_USE_FACE_ROM_TYPE_NUM +}; + +enum { + mPlayer_EYE_TEX0, + mPlayer_EYE_TEX1, + mPlayer_EYE_TEX2, + mPlayer_EYE_TEX3, + mPlayer_EYE_TEX4, + mPlayer_EYE_TEX5, + mPlayer_EYE_TEX6, + mPlayer_EYE_TEX7, + + mPlayer_EYE_TEX_NUM +}; + +enum { + mPlayer_MOUTH_TEX0, + mPlayer_MOUTH_TEX1, + mPlayer_MOUTH_TEX2, + mPlayer_MOUTH_TEX3, + mPlayer_MOUTH_TEX4, + mPlayer_MOUTH_TEX5, + + mPlayer_MOUTH_TEX_NUM +}; + #define mPlayer_SETUP_TEXTURE_ANIMATION_NONE (0 << 0) /* Where is (1 << 0)? */ #define mPlayer_SETUP_TEXTURE_ANIMATION_EYE (1 << 1) @@ -1987,10 +2018,10 @@ typedef struct { typedef struct controller_data_s { MCON mcon; - s8 on; - s8 now; - s8 unk3A; - s8 unk3B; + s8 trigger_btn_a; + s8 btn_a; + s8 trigger_btn_b; + s8 btn_b; mActor_name_t equiped_item; } mPlayer_Controller_Data_c; @@ -2174,10 +2205,10 @@ struct player_actor_s { /* 0x12D0 */ int (*request_main_demo_standing_train_all_proc)(GAME*, int); /* 0x12D4 */ int (*request_main_stung_bee_all_proc)(GAME*, int); /* 0x12D8 */ int (*request_main_shock_all_proc)(GAME*, f32, s16, s8, int, int); - /* 0x12DC */ int (*request_main_change_cloth_forNPC_proc)(GAME*, mActor_name_t, int); + /* 0x12DC */ int (*request_main_change_cloth_forNPC_proc)(GAME*, mActor_name_t, u16, int); /* 0x12E0 */ int (*request_main_push_snowball_all_proc)(GAME*, void*, int, int); - /* 0x12E4 */ int (*request_main_stung_mosquito_all_proc)(GAME*, int, int); - /* 0x12E8 */ int (*request_main_switch_on_lighthouse_all_proc)(GAME*, const xyz_t*, int, int); + /* 0x12E4 */ int (*request_main_stung_mosquito_all_proc)(GAME*, void*, int); + /* 0x12E8 */ int (*request_main_switch_on_lighthouse_all_proc)(GAME*, const xyz_t*, s16, int); /* 0x12EC */ int (*request_main_demo_geton_boat_all_proc)(GAME*, const xyz_t*, s16, int); /* 0x12F0 */ int (*request_main_demo_getoff_boat_standup_all_proc)(GAME*, const xyz_t*, s16, int); /* 0x12F4 */ int (*request_main_demo_get_golden_item2_all_proc)(GAME*, int, int); @@ -2194,7 +2225,7 @@ struct player_actor_s { /* 0x1320 */ int (*SetParam_for_push_snowball_proc)(GAME*, const xyz_t*, s16, f32); /* 0x1324 */ int (*able_submenu_request_main_index_proc)(GAME*); /* 0x1328 */ int (*check_able_change_camera_normal_index_proc)(ACTOR*); - /* 0x132C */ int (*Check_able_force_speak_label_proc)(GAME*, ACTOR*); + /* 0x132C */ int (*Check_able_force_speak_label_proc)(GAME*, void*); /* 0x1330 */ int (*check_cancel_request_change_proc_index_proc)(int); /* 0x1334 */ u32 (*Get_item_net_catch_label_proc)(ACTOR*); /* 0x1338 */ int (*Change_item_net_catch_label_proc)(ACTOR*, u32, s8); @@ -2217,7 +2248,7 @@ struct player_actor_s { /* 0x137C */ mActor_name_t (*Get_itemNo_forWindow_proc)(ACTOR*); /* 0x1380 */ int (*check_cancel_event_without_priority_proc)(GAME*); /* 0x1384 */ int (*CheckScene_AbleSubmenu_proc)(); - /* 0x1388 */ int (*Check_stung_mosquito_proc)(GAME*, ACTOR*); + /* 0x1388 */ int (*Check_stung_mosquito_proc)(GAME*, void*); /* 0x138C */ int a_btn_pressed; /* 0x1390 */ int a_btn_triggers_submenu; /* 0x1394 */ mActor_name_t item_in_front; /* item directly in front of the player */ diff --git a/include/m_player_lib.h b/include/m_player_lib.h index 37d4f645..0ad50ffe 100644 --- a/include/m_player_lib.h +++ b/include/m_player_lib.h @@ -10,123 +10,182 @@ extern "C" { #endif -extern void mPlib_Object_Exchange_keep_Player_dt(GAME_PLAY*); -extern PLAYER_ACTOR* get_player_actor_withoutCheck(GAME_PLAY* play); -extern mPlayer_Controller_Data_c* mPlib_Get_controller_data_for_title_demo_p(); -extern void mPlib_SetData1_controller_data_for_title_demo(int btn_a, int btn_b, f32 stick_x, f32 stick_y); -extern void mPlib_SetData2_controller_data_for_title_demo(mActor_name_t tool); -extern void mPlib_Clear_controller_data_for_title_demo(void); -extern void mPlib_request_main_invade_type1(GAME_PLAY* play); -extern mActor_name_t mPlib_Get_itemNo_forWindow(); -extern int mPlib_check_able_change_camera_normal_index(void); -extern void mPlib_request_main_refuse_type1(GAME* game); -extern void mPlib_request_main_wait_type3(GAME* game); -extern void mPlib_Set_able_force_speak_label(ACTOR* actor); -extern void mPlib_Reset_able_force_speak_label(void); -extern int mPlib_request_main_demo_walk_type1(GAME* game, f32 goal_x, f32 goal_z, f32 speed, int flag); -extern void mPlib_Set_goal_player_demo_walk(f32 goal_x, f32 goal_z, f32 speed); -extern void mPlib_Set_able_hand_all_item_in_demo(s8 enable); -extern void mPlib_change_player_cloth_info_lv2(Private_c* priv, mActor_name_t cloth_name); -extern int mPlib_Get_address_able_display(void); -extern int mPlib_get_player_actor_main_index(GAME* game); -extern int mPlib_check_player_actor_main_index_AllWade(GAME_PLAY* play); -extern int mPlib_request_main_demo_wait_type1(GAME* game, int param_2, void* param_3); -extern int mPlib_request_main_talk_type1(GAME_PLAY* play, ACTOR* other_actor, int turn, int flag); -extern int mPlib_request_main_talk_end_type1(GAME_PLAY* play, int return_demo_wait, int return_get_golden_axe_demo); -extern int mPlib_request_main_door_type1(GAME* game, const xyz_t* pos, s16 angle_y, int door_type, void* door_label); -extern int mPlib_request_main_door_type2(GAME* game, const xyz_t* pos, s16 angle_y, int door_type, void* door_label); -extern int mPlib_strength_request_main_door_priority(GAME* game); -extern int mPlib_check_request_main_wade_priority(GAME* game); -extern int mPlib_check_request_main_demo_wade_priority(GAME* game); -extern int mPlib_check_request_main_demo_geton_boat_wade_priority(GAME* game); -extern int mPlib_check_request_main_door_type1_priority(GAME* game); -extern int mPlib_check_request_main_door_type2_priority(GAME* game); -extern int mPlib_check_request_main_outdoor_priority(GAME* game); -extern int mPlib_check_request_main_talk_type1_priority(GAME* game); -extern int mPlib_check_request_main_speak_type1_priority(GAME* game); -extern int mPlib_Check_able_force_speak_label(GAME* game, ACTOR* label); -extern int mPlib_able_submenu_type1(GAME* game); -extern void mPlib_request_main_demo_wait_from_submenu(ACTOR* force_speak_label); -extern void mPlib_Load_PlayerTexAndPallet(void* tex_p, void* pal_p, int idx); -extern void mPlib_request_main_give_from_submenu(mActor_name_t disp_item, int submenu_ovl, int present_flag, - int counter_flag); -extern int mPlib_Check_tree_shaken_big(const xyz_t* pos); -extern int mPlib_Check_tree_shaken_little(const xyz_t* pos); -extern int mPlib_request_main_recieve_wait_type1(GAME* game, mActor_name_t item, int counter_flag); -extern int mPlib_able_player_warp_forEvent(void); -extern int mPlib_Get_unable_wade(void); -extern s8 mPlib_Get_ItemNoToItemKind(mActor_name_t); -extern void mPlib_Set_boat_angleZ(s16 angleZ); -extern int mPlib_Get_end_player_demo_walk(void); -extern int mPlib_request_main_demo_geton_boat_type1(f32 goal_x, f32 goal_z, s16 angleY); -extern int mPlib_request_main_demo_getoff_boat_standup_type1(const xyz_t* pos, s16 angleY); -extern int mPlib_check_player_actor_main_index_RecieveMove(GAME* game); -extern int mPlib_check_label_player_demo_wait(GAME* game, void* label); -extern int mPlib_check_player_outdoor_start(GAME* game); -extern void mPlib_Set_change_color_request(void); -extern int mPlib_check_player_open_umbrella(GAME_PLAY* play); -extern int mPlib_Check_UKI_COMEBACK_STATUS(void); -extern int mPlib_check_player_actor_main_index_OutDoorMove(GAME* game); -extern int mPlib_request_main_close_furniture_type1(GAME* game); -extern int mPlib_request_main_shock_type1(GAME* game, f32 time, s16 angle_y, int axe_swing); -extern int mPlib_request_main_hold_type1(GAME* game, int ftr_no, int player_direct, const xyz_t* player_pos); -extern int mPlib_check_player_warp_forEvent(void); -extern int mPlib_check_player_actor_main_index_Furniture_Move(GAME* game); -extern int mPlib_request_main_sitdown_type1(GAME* game, int direct, const xyz_t* pos, int ftr_no); -extern int mPlib_request_main_lie_bed_type1(GAME* game, int direct, const xyz_t* pos, int head_direct, int ftr_no); -extern void mPlib_change_player_cloth(GAME* game, int idx); -extern u32 mPlib_Get_item_net_catch_label(void); -extern int mPlib_Check_stung_mosquito(ACTOR* actorx); -extern int mPlib_request_main_stung_mosquito_type1(ACTOR* actorx); -extern int mPlib_Check_HitAxe(xyz_t* axe_pos); -extern int mPlib_Check_StopNet(xyz_t* net_pos); -extern int mPlib_Check_DigScoop(xyz_t* scoop_pos); -extern int mPlib_Check_tree_shaken(const xyz_t* pos); -extern int mPlib_Check_VibUnit_OneFrame(const xyz_t* pos); -extern int mPlib_Get_BasicItemShapeIndex_fromItemKind(int item_kind); -extern u8 mPlib_Get_Item_DataPointerType(int idx); -extern void* mPlib_Get_Item_DataPointer(int idx); -extern int mPlib_Get_BasicPlayerAnimeIndex_fromItemKind(int item_kind); extern cKF_Animation_R_c* mPlib_Get_Pointer_Animation(int anim_idx); +extern int mPlib_Get_BasicPlayerAnimeIndex_fromItemKind(int item_kind); extern int mPlib_Get_BasicPartTableIndex_fromAnimeIndex(int anim_idx); +extern void* mPlib_Get_Item_DataPointer(int data_kind); +extern int mPlib_Get_BasicItemShapeIndex_fromItemKind(int item_kind); extern int mPlib_Get_BasicItemAnimeIndex_fromItemKind(int item_kind); -extern void mPlib_DMA_player_Part_Table(s8* part_table_p, int idx); +extern u8 mPlib_Get_Item_DataPointerType(int data_idx); +extern void mPlib_Object_Exchange_keep_new_PlayerMdl(GAME_PLAY* play); +extern u32 mPlib_Get_PlayerTexRom_p(int idx); +extern void mPlib_Object_Exchange_keep_new_PlayerTex(GAME_PLAY* play, int bank_idx, int bank); +extern u32 mPlib_Get_PlayerPalletRom_p(int idx); +extern void mPlib_Object_Exchange_keep_new_PlayerPallet(GAME_PLAY* play, int bank_idx, int bank); +extern int mPlib_Check_PlayerClothInAram(int idx); +extern void mPlib_Object_Exchange_keep_new_PlayerFaceTex(GAME_PLAY* play); +extern void mPlib_Object_Exchange_keep_new_PlayerFacePallet(GAME_PLAY* play, int bank, int bank_idx); +extern void mPlib_Object_Exchange_keep_Player_dt(GAME_PLAY* play); +extern u8* mPlib_get_player_tex_p(GAME* game); +extern u16* mPlib_get_player_pallet_p(GAME* game); +extern u8* mPlib_get_player_face_p(GAME* game); +extern u16* mPlib_get_player_face_pallet_p(GAME* game); +extern void mPlib_change_player_cloth(GAME* game, u16 cloth_idx); +extern void mPlib_change_player_face_pallet(GAME* game); +extern void mPlib_change_player_face(GAME* game); +extern PLAYER_ACTOR* get_player_actor_withoutCheck(GAME_PLAY* play); +extern int mPlib_get_player_actor_main_index(GAME* game); +extern int mPlib_get_player_actor_request_main_index(GAME* game); extern cKF_Skeleton_R_c* mPlib_get_player_mdl_p(void); +extern s16 mPlib_get_player_Object_Bank(void); +extern void mPlib_DMA_player_Part_Table(s8* part_table_p, int idx); +extern void mPlib_change_player_cloth_info(mPr_cloth_c* cloth_p, mActor_name_t item); +extern void mPlib_change_player_cloth_info_lv2(Private_c* priv, mActor_name_t item); +extern void mPlib_Load_PlayerTexAndPallet(void* tex_p, void* pal_p, int idx); +extern mPlayer_change_data_from_submenu_c* mPlib_Get_change_data_from_submenu_p(void); +extern void mPlib_Clear_change_data_from_submenu(void); +extern void mPlib_request_main_give_from_submenu(mActor_name_t item, int after_mode, int present_flag, + int surface_flag); +extern void mPlib_request_main_putin_scoop_from_submenu(const xyz_t* pos_p, mActor_name_t item, int gold_scoop_flag); +extern void mPlib_request_main_release_creature_gyoei_from_submenu(s16 angle_y, s16 item, int gold_scoop_flag); +extern void mPlib_request_main_release_creature_insect_from_submenu(int insect_type, int gold_scoop_flag); +extern s8 mPlib_Get_ItemNoToItemKind(mActor_name_t itemNo); +extern int mPlib_Get_ItemKindTOBalloonShapeType(int item_kind); +extern void mPlib_request_main_release_creature_balloon_from_submenu(mActor_name_t itemNo, int gold_scoop_flag); +extern void mPlib_request_main_wait_from_submenu(void); +extern void mPlib_request_main_demo_get_golden_item_from_submenu(void); +extern void mPlib_request_main_mail_land_from_submenu(void); +extern void mPlib_request_main_demo_wait_from_submenu(ACTOR* speak_actor_p); +extern void mPlib_Set_unable_wade(int v); +extern int mPlib_Get_unable_wade(void); +extern int mPlib_Check_able_force_speak_label(GAME* game, ACTOR* label); +extern void mPlib_Set_able_force_speak_label(ACTOR* label); +extern void mPlib_Reset_able_force_speak_label(void); extern u8* mPlib_Get_PlayerEyeTexAnimation_p(int anim_idx); extern u8* mPlib_Get_PlayerMouthTexAnimation_p(int anim_idx); extern u8* mPlib_Get_eye_tex_p(int idx); extern u8* mPlib_Get_mouth_tex_p(int idx); -extern u8* mPlib_get_player_tex_p(GAME* game); -extern u16* mPlib_get_player_pallet_p(GAME* game); -extern u16* mPlib_get_player_face_pallet_p(GAME* game); -extern int mPlib_Check_scoop_after(GAME* game, xyz_t* pos, mActor_name_t* item, ACTOR** hit_actor, int gold_shovel); -extern int mPlib_request_main_demo_standing_train_type1(GAME* game); -extern void mPlib_Set_unable_wade(int unable); +extern int mPlib_request_main_invade_type1(GAME* game); +extern int mPlib_request_main_refuse_type1(GAME* game); +extern int mPlib_request_main_wait_type3(GAME* game); +extern int mPlib_request_main_demo_get_golden_item2_type1(GAME* game, int golden_item_type); +extern int mPlib_request_main_talk_end_type1(GAME* game, int wait_demo, int demo_get_golden_axe); +extern int mPlib_request_main_talk_type1(GAME* game, ACTOR* talk_actor_p, int turn_flag, int umbrella_flag); +extern int mPlib_request_main_hold_type1(GAME* game, int ftr_no, int player_direct, const xyz_t* player_pos_p); +extern int mPlib_request_main_recieve_wait_type1(GAME* game, mActor_name_t item, int counter_flag); +extern int mPlib_request_main_give_type1(GAME* game, mActor_name_t item, int mode, int present, int on_surface); +extern int mPlib_request_main_sitdown_type1(GAME* game, int direct, const xyz_t* pos_p, int ftr_no); +extern int mPlib_request_main_close_furniture_type1(GAME* game); +extern int mPlib_request_main_lie_bed_type1(GAME* game, int direct, const xyz_t* pos_p, int head_direct, int ftr_no); +extern int mPlib_request_main_hide_type1(GAME* game); +extern int mPlib_request_main_groundhog_type1(GAME* game); +extern int mPlib_request_main_door_type1(GAME* game, const xyz_t* pos_p, s16 angle_y, int door_type, void* door_label); +extern int mPlib_request_main_door_type2(GAME* game, const xyz_t* pos_p, s16 angle_y, int door_type, void* door_label); +extern int mPlib_request_main_outdoor_type1(GAME* game, int is_start_demo, int door_type); +extern int mPlib_request_main_wash_car_type1(GAME* game, const xyz_t* car_pos_p, const xyz_t* ret_pos_p, + s16 ret_angle_y, ACTOR* ctrl_actor_p); +extern int mPlib_request_main_rotate_octagon_type1(GAME* game, const xyz_t* pos_p, s16 angle_y); +extern int mPlib_request_main_throw_money_type1(GAME* game, const xyz_t* pos_p, s16 angle_y); +extern int mPlib_request_main_pray_type1(GAME* game, const xyz_t* pos_p, s16 angle_y); +extern int mPlib_request_main_mail_jump_type1(GAME* game, const xyz_t* pos_p, s16 angle_y); +extern int mPlib_request_main_stung_bee_type1(GAME* game); +extern int mPlib_request_main_stung_mosquito_type1(void* label); +extern int mPlib_request_main_switch_on_lighthouse_type1(GAME* game, const xyz_t* pos_p, s16 angle_y); +extern int mPlib_request_main_demo_geton_boat_type1(f32 goal_x, f32 goal_z, s16 angleY); +extern int mPlib_request_main_demo_getoff_boat_standup_type1(const xyz_t* pos_p, s16 angleY); +extern int mPlib_request_main_shock_type1(GAME* game, f32 time, s16 angle_y, int axe_swing); +extern int mPlib_request_main_change_cloth_forNPC_type1(GAME* game, mActor_name_t cloth_item, u16 cloth_idx, + int try_on_flag); +extern int mPlib_request_main_push_snowball_type1(GAME* game, void* label); +extern int mPlib_request_main_push_snowball_end_type1(GAME* game); +extern int mPlib_request_main_demo_wait_type1(GAME* game, int umbrella_flag, void* label); +extern int mPlib_request_main_demo_walk_type1(GAME* game, f32 goal_x, f32 goal_z, f32 speed, int wait_flag); +extern int mPlib_request_main_demo_geton_train_type1(GAME* game, const xyz_t* pos_p); extern int mPlib_request_main_demo_getoff_train_type1(GAME* game); -extern int mPlib_check_player_actor_main_index_OutDoorMove2(GAME* game); -extern int mPlib_Check_SetOrderSubmenu(void); -extern void mPlib_Clear_change_data_from_submenu(void); +extern int mPlib_request_main_demo_standing_train_type1(GAME* game); +extern int mPlib_check_request_main_talk_type1_priority(GAME* game); +extern int mPlib_check_request_main_speak_type1_priority(GAME* game); +extern int mPlib_check_request_main_door_type1_priority(GAME* game); +extern int mPlib_check_request_main_door_type2_priority(GAME* game); +extern int mPlib_check_request_main_wade_priority(GAME* game); +extern int mPlib_check_request_main_demo_wade_priority(GAME* game); +extern int mPlib_check_request_main_demo_geton_boat_wade_priority(GAME* game); extern int mPlib_strength_request_main_wade_priority(GAME* game); extern int mPlib_strength_request_main_demo_wade_priority(GAME* game); -extern int mPlib_strength_request_main_demo_geton_boat_wade_priority(GAME* game); extern int mPlib_strength_request_main_wade_snowball_priority(GAME* game); -extern void mPlib_change_player_face(GAME* game); -extern void mPlib_change_player_cloth_info(mPr_cloth_c* cloth_p, mActor_name_t cloth_item); -extern int mPlib_Get_status_for_bee(void); -extern int mPlib_request_main_demo_get_golden_item2_type1(GAME* game, int golden_item_type); -extern void mPlib_Get_goal_player_demo_walk(f32* goal_pos_x, f32* goal_pos_z, f32* speed); +extern int mPlib_strength_request_main_demo_geton_boat_wade_priority(GAME* game); +extern int mPlib_strength_request_main_door_priority(GAME* game); +extern int mPlib_check_request_main_outdoor_priority(GAME* game); +extern int mPlib_Check_SetOrderSubmenu(void); +extern int mPlib_able_submenu_type1(GAME* game); +extern int mPlib_check_player_open_umbrella(GAME* game); +extern int mPlib_check_player_outdoor_start(GAME* game); +extern int mPlib_check_label_player_demo_wait(GAME* game, void* label); +extern void mPlib_Set_goal_player_demo_walk(f32 pos_x, f32 pos_z, f32 speed); +extern void mPlib_Get_goal_player_demo_walk(f32* pos_x_p, f32* pos_z_p, f32* speed_p); +extern void mPlib_Set_continue_player_after_demo_walk(int value); extern int mPlib_Get_continue_player_after_demo_walk(void); -extern void mPlib_Set_continue_player_after_demo_walk(int wait_flag); -extern void mPlib_Set_end_player_demo_walk(int end_flag); - -extern mPlayer_change_data_from_submenu_c* mPlib_Get_change_data_from_submenu_p(void); - -extern void mPlib_Object_Exchange_keep_new_PlayerMdl(GAME_PLAY* play); -extern void mPlib_Object_Exchange_keep_new_PlayerTex(GAME_PLAY* play, int bank_id, int base_idx); -extern void mPlib_Object_Exchange_keep_new_PlayerFaceTex(GAME_PLAY* play); -extern void mPlib_Object_Exchange_keep_new_PlayerFacePallet(GAME_PLAY* play, int bank_id, int base_idx); -extern void mPlib_Object_Exchange_keep_new_PlayerPallet(GAME_PLAY* play, int bank_id, int base_idx); -extern void mPlib_request_main_give_type1(GAME* game, mActor_name_t item, int mode, int present, int on_surface); +extern void mPlib_Set_end_player_demo_walk(int value); +extern int mPlib_Get_end_player_demo_walk(void); +extern int mPlib_Get_space_putin_item(void); +extern int mPlib_Get_space_putin_item_forTICKET(mActor_name_t* item_p); +extern int mPlib_Get_space_putin_item_forHITODAMA(mActor_name_t* item_p); +extern int mPlib_able_player_warp_forEvent(void); +extern int mPlib_request_player_warp_forEvent(void); +extern int mPlib_cancel_player_warp_forEvent(void); +extern int mPlib_check_player_warp_forEvent(void); +extern int mPlib_Check_HitAxe(xyz_t* pos_p); +extern int mPlib_Check_VibUnit_OneFrame(const xyz_t* pos_p); +extern int mPlib_Check_StopNet(xyz_t* pos_p); +extern u32 mPlib_Get_item_net_catch_label(void); +extern int mPlib_Change_item_net_catch_label(u32 label, s8 type); +extern int mPlib_Check_HitScoop(xyz_t* pos_p); +extern int mPlib_Check_DigScoop(xyz_t* pos_p); +extern int mPlib_Get_address_able_display(void); +extern int mPlib_Check_scoop_after(GAME* game, xyz_t* pos_p, mActor_name_t* item_p, ACTOR** reflect_actor_pp, + int gold_scoop); +extern int mPlib_Check_scene_able_change_camera_pos(void); +extern int mPlib_Check_RotateOctagon(void); +extern int mPlib_Set_EndWashCar(void); +extern int mPlib_Set_AnimeSpeedWashCar(f32 anime_speed); +extern int mPlib_Check_now_handin_item_kind(void); +extern int mPlib_Check_now_handin_item(void); +extern void mPlib_Set_able_hand_all_item_in_demo(s8 v); +extern int mPlib_Get_status_for_bee(void); +extern int mPlib_Check_end_stung_bee(void); +extern int mPlib_Check_Label_main_push_snowball(void* label); +extern int mPlib_Check_Label_main_wade_snowball(void* label); +extern int mPlib_Set_ScrollDemo_forWade_snowball(int dir, const xyz_t* snowball_dist_p); +extern int mPlib_GetSnowballPos_forWadeSnowball(xyz_t* pos_p); +extern int mPlib_CheckCondition_forWadeSnowball(const xyz_t* pos_p, s16 angle_y); +extern int mPlib_SetParam_for_push_snowball(const xyz_t* pos_p, s16 angle_y, f32 anim_speed); +extern void mPlib_Set_crash_snowball_for_wade(int v); +extern mPlayer_Controller_Data_c* mPlib_Get_controller_data_for_title_demo_p(void); +extern void mPlib_Clear_controller_data_for_title_demo(void); +extern void mPlib_SetData1_controller_data_for_title_demo(int btn_a, int btn_b, f32 stick_x, f32 stick_y); +extern void mPlib_SetData2_controller_data_for_title_demo(mActor_name_t item); +extern int mPlib_Check_CorrectPlayerPos_forEvent(void); +extern int mPlib_Check_UKI_COMEBACK_STATUS(void); +extern int mPlib_Check_tree_shaken(const xyz_t* pos_p); +extern int mPlib_Check_tree_shaken_little(const xyz_t* pos_p); +extern int mPlib_Check_tree_shaken_big(const xyz_t* pos_p); +extern mActor_name_t mPlib_Get_itemNo_forWindow(void); +extern int mPlib_able_birth_bee(void); +extern int mPlib_check_able_change_camera_normal_index(void); +extern int mPlib_check_player_actor_main_index_Furniture_Move(GAME* game); +extern int mPlib_check_player_actor_main_index_RecieveMove(GAME* game); +extern int mPlib_check_player_actor_main_index_Pitfall(GAME* game); +extern int mPlib_check_player_actor_main_index_OutDoorMove(GAME* game); +extern int mPlib_check_player_actor_main_index_OutDoorMove2(GAME* game); +extern int mPlib_check_player_actor_main_index_AllWade(GAME* game); +extern int mPlib_check_player_actor_main_index_catch_insect(GAME* game); +extern int mPlib_check_player_actor_main_index_catch_fish(GAME* game); +extern int mPlib_check_player_actor_start_switch_on_lighthouse(GAME* game); +extern int mPlib_Check_stung_mosquito(void* label); +extern void mPlib_Set_boat_angleZ(s16 angle_z); +extern int mPlib_CheckButtonOnly_forDush(void); +extern int mPlib_Check_golden_item_get_demo_end(int gold_item_type); +extern void mPlib_Set_change_color_request(void); #define GET_PLAYER_ACTOR(play) get_player_actor_withoutCheck(play) #define GET_PLAYER_ACTOR_NOW() get_player_actor_withoutCheck((GAME_PLAY*)gamePT) diff --git a/include/m_private.h b/include/m_private.h index 5350e98c..aa52f30b 100644 --- a/include/m_private.h +++ b/include/m_private.h @@ -87,6 +87,8 @@ enum { #define mPr_ORIGINAL_DESIGN_COUNT 8 #define mPr_RADIOCARD_MAX_DAYS 13 +#define mPr_ORIGINAL_DESIGN_IDX_VALID(idx) ((idx) >= 0 && (idx) < mPr_ORIGINAL_DESIGN_COUNT) + #define mPr_GET_ITEM_COND(all_cond, slot_no) (((all_cond) >> (((u32)(slot_no)) << 1)) & mPr_ITEM_COND_NUM) #define mPr_SET_ITEM_COND(all_cond, slot_no, cond) \ (((all_cond) & ~((u32)mPr_ITEM_COND_NUM << ((u32)(slot_no) << 1))) | ((u32)(cond) << ((u32)(slot_no) << 1))) diff --git a/src/ac_npc_rtc_think.c.inc b/src/ac_npc_rtc_think.c.inc index 224d9eac..f4b8fa58 100644 --- a/src/ac_npc_rtc_think.c.inc +++ b/src/ac_npc_rtc_think.c.inc @@ -17,7 +17,7 @@ static void aNRTC_think_title(NPC_ACTOR* actor, GAME_PLAY* play) { play->fb_wipe_type = 3; play->fb_fade_type = 4; - mPlib_request_main_invade_type1(play); + mPlib_request_main_invade_type1((GAME*)play); Actor_info_save_actor(play); rtc->think_idx = aNRTC_THINK_WAIT; } diff --git a/src/ac_t_umbrella.c b/src/ac_t_umbrella.c index edc5da0f..ff50ac2f 100644 --- a/src/ac_t_umbrella.c +++ b/src/ac_t_umbrella.c @@ -19,17 +19,19 @@ static void aTUMB_actor_ct(ACTOR* actor, GAME* game); static void aTUMB_actor_move(ACTOR* actor, GAME* game); static void aTUMB_actor_draw(ACTOR* actor, GAME* game); -ACTOR_PROFILE T_Umbrella_Profile = { mAc_PROFILE_T_UMBRELLA, - ACTOR_PART_BG, - ACTOR_STATE_NO_DRAW_WHILE_CULLED | ACTOR_STATE_NO_MOVE_WHILE_CULLED, - EMPTY_NO, - ACTOR_OBJ_BANK_UMBRELLA, - sizeof(UMBRELLA_ACTOR), - &aTUMB_actor_ct, - NONE_ACTOR_PROC, - &aTUMB_actor_move, - &aTUMB_actor_draw, - NULL }; +ACTOR_PROFILE T_Umbrella_Profile = { + mAc_PROFILE_T_UMBRELLA, + ACTOR_PART_BG, + ACTOR_STATE_NO_DRAW_WHILE_CULLED | ACTOR_STATE_NO_MOVE_WHILE_CULLED, + EMPTY_NO, + ACTOR_OBJ_BANK_UMBRELLA, + sizeof(UMBRELLA_ACTOR), + &aTUMB_actor_ct, + NONE_ACTOR_PROC, + &aTUMB_actor_move, + &aTUMB_actor_draw, + NULL, +}; extern Gfx e_umb01_model[]; extern Gfx kasa_umb01_model[]; diff --git a/src/ac_weather.c b/src/ac_weather.c index dd86a1ec..b5a23149 100644 --- a/src/ac_weather.c +++ b/src/ac_weather.c @@ -19,8 +19,8 @@ static void Weather_Actor_dt(ACTOR* actor, GAME* game); static void Weather_Actor_move(ACTOR* actor, GAME* game); static void Weather_Actor_draw(ACTOR* actor, GAME* game); -static void aWeather_SetNowProfile(WEATHER_ACTOR* weather, s16 id); -static int aWeather_CountWeatherPrivate(WEATHER_ACTOR* weather); +static void aWeather_SetNowProfile(ACTOR* actorx, s16 id); +static int aWeather_CountWeatherPrivate(ACTOR* actorx); static aWeather_Profile_c* profile_tbl[] = { &iam_weather_fine, &iam_weather_rain, &iam_weather_snow, &iam_weather_sakura, &iam_weather_leaf, @@ -58,12 +58,14 @@ static void aWeather_SysLevCall_MoveEnd(WEATHER_ACTOR* weather) { } static void aWeather_SysLevStart(u8 flag) { - Common_Get(clip.weather_clip)->actor->start_sound_effect = flag; + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)Common_Get(clip.weather_clip)->actor; + + weather->start_sound_effect = flag; } static void aWeather_SysLevStop(u8 flag) { int stopFlag = flag; - WEATHER_ACTOR* weather = Common_Get(clip.weather_clip)->actor; + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)Common_Get(clip.weather_clip)->actor; if (weather->start_sound_effect == stopFlag) { weather->start_sound_effect = 0; @@ -97,13 +99,12 @@ static void aWeather_RequestChangeWeather(ACTOR* actor, s16 status, s16 level) { } extern void aWeather_RequestChangeWeatherToIsland() { - aWeather_RequestChangeWeather(&Common_Get(clip.weather_clip)->actor->actor_class, Common_Get(island_weather), + aWeather_RequestChangeWeather(Common_Get(clip.weather_clip)->actor, Common_Get(island_weather), Common_Get(island_weather_intensity)); } extern void aWeather_RequestChangeWeatherFromIsland() { - aWeather_RequestChangeWeather(&Common_Get(clip.weather_clip)->actor->actor_class, - mEnv_SAVE_GET_WEATHER_TYPE(Save_Get(weather)), + aWeather_RequestChangeWeather(Common_Get(clip.weather_clip)->actor, mEnv_SAVE_GET_WEATHER_TYPE(Save_Get(weather)), mEnv_SAVE_GET_WEATHER_INTENSITY(Save_Get(weather))); } @@ -158,8 +159,7 @@ static aWeather_Priv* aWeather_GetWeatherPrv(u8 status, s16 timer, xyz_t* pos, x } static int aWeather_StopSysLevSE() { - WEATHER_ACTOR* weather = Common_Get(clip.weather_clip)->actor; - + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)Common_Get(clip.weather_clip)->actor; u8 current = weather->current_sound_effect; if (weather->sound_flag == 0) { @@ -174,8 +174,7 @@ static int aWeather_StopSysLevSE() { } static int aWeather_StartSysLevSE() { - WEATHER_ACTOR* weather = Common_Get(clip.weather_clip)->actor; - + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)Common_Get(clip.weather_clip)->actor; u8 current = weather->current_sound_effect; if (weather->sound_flag == 1) { @@ -202,7 +201,8 @@ static int aWeather_StartSysLevSE() { return 0; } -static void aWeather_ChangeWeatherInstance(WEATHER_ACTOR* weather, s16 status, s16 level) { +static void aWeather_ChangeWeatherInstance(ACTOR* actorx, s16 status, s16 level) { + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)actorx; weather->next_status = status; weather->next_level = level; @@ -210,9 +210,9 @@ static void aWeather_ChangeWeatherInstance(WEATHER_ACTOR* weather, s16 status, s weather->current_level = 0; weather->request_change = TRUE; - if (!aWeather_CountWeatherPrivate(weather)) { + if (!aWeather_CountWeatherPrivate(actorx)) { weather->current_status = weather->next_status; - aWeather_SetNowProfile(weather, weather->current_status); + aWeather_SetNowProfile(actorx, weather->current_status); aWeather_weatherinfo_CommonSet(weather->current_status, weather->next_level); weather->current_level = level; weather->current_aim_level = weather->next_level; @@ -229,7 +229,8 @@ static int aWeather_IsLand_Event_Check() { return 0; } -static int aWeather_Basement_Event_Check(WEATHER_ACTOR* weather) { +static int aWeather_Basement_Event_Check(ACTOR* actorx) { + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)actorx; if ((weather->basement_event == 1) || (weather->basement_event == 2)) { return 1; @@ -237,7 +238,8 @@ static int aWeather_Basement_Event_Check(WEATHER_ACTOR* weather) { return 0; } -static void aWeather_ChangeEnvSE(WEATHER_ACTOR* weather, GAME_PLAY* play, s16 status, s16 level) { +static void aWeather_ChangeEnvSE(ACTOR* actorx, GAME* game, s16 status, s16 level) { + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)actorx; u8 current = weather->current_sound_effect; if (weather->sound_flag == 1 || weather->sound_flag == 2) @@ -256,7 +258,7 @@ static void aWeather_ChangeEnvSE(WEATHER_ACTOR* weather, GAME_PLAY* play, s16 st if ((status == 1) && (weather->current_sound_effect == -1000)) { switch (level) { case 1: - if (mPlib_check_player_open_umbrella(play) != 0) { + if (mPlib_check_player_open_umbrella(game) != 0) { aWeather_SysLevStart(0x12); weather->current_sound_effect = 0x12; return; @@ -265,7 +267,7 @@ static void aWeather_ChangeEnvSE(WEATHER_ACTOR* weather, GAME_PLAY* play, s16 st weather->current_sound_effect = 7; break; case 2: - if (mPlib_check_player_open_umbrella(play) != 0) { + if (mPlib_check_player_open_umbrella(game) != 0) { aWeather_SysLevStart(0x13); weather->current_sound_effect = 0x13; return; @@ -274,7 +276,7 @@ static void aWeather_ChangeEnvSE(WEATHER_ACTOR* weather, GAME_PLAY* play, s16 st weather->current_sound_effect = 8; break; case 3: - if (mPlib_check_player_open_umbrella(play) != 0) { + if (mPlib_check_player_open_umbrella(game) != 0) { aWeather_SysLevStart(0x14); weather->current_sound_effect = 0x14; return; @@ -293,7 +295,7 @@ static void aWeather_EndEnvSE(ACTOR* actor) { if ((sAdo_GameframeEnd_Check() == 1) || ((sAdo_GameframeEnd_Check() == 2) && - ((aWeather_IsLand_Event_Check() != 0) || (aWeather_Basement_Event_Check(weather) != 0)))) { + ((aWeather_IsLand_Event_Check() != 0) || (aWeather_Basement_Event_Check(actor) != 0)))) { if (((u8)(current - 7) <= 2) || ((u8)(current - 0x12) <= 1) || (u8)(current == 0x14)) { aWeather_SysLevStop(current); weather->current_sound_effect = -1000; @@ -305,7 +307,8 @@ static void aWeather_EndEnvSE(ACTOR* actor) { aWeather_SysLevCall_MoveEnd(weather); } -static void aWeather_SetNowProfile(WEATHER_ACTOR* weather, s16 id) { +static void aWeather_SetNowProfile(ACTOR* actorx, s16 id) { + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)actorx; if (!mFI_GET_TYPE(mFI_GetFieldId())) { weather->current_profile = profile_tbl[id]; @@ -314,11 +317,11 @@ static void aWeather_SetNowProfile(WEATHER_ACTOR* weather, s16 id) { } } -static void aWeather_SecureWeatherPrivateWork(WEATHER_ACTOR* weather) { +static void aWeather_SecureWeatherPrivateWork(ACTOR* actorx) { + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)actorx; int i; weather->priv = zelda_malloc(sizeof(aWeather_Priv) * 100); - if (weather->priv != NULL) { for (i = 0; i < 100; i++) { bzero(&weather->priv[i], sizeof(aWeather_Priv)); @@ -326,14 +329,16 @@ static void aWeather_SecureWeatherPrivateWork(WEATHER_ACTOR* weather) { } } -static void aWeather_SetClip(WEATHER_ACTOR* weather, int flag) { +static void aWeather_SetClip(ACTOR* actorx, int flag) { + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)actorx; aWeather_Clip_c* clip; + if (flag != 0) { Common_Set(clip.weather_clip, NULL); } else { clip = &weather->clip; - clip->actor = weather; + clip->actor = actorx; clip->change_weather = aWeather_RequestChangeWeather; clip->get_priv_num = aWeather_GetWeatherPrvNum; clip->remove_priv = aWeather_AbolishPrivate; @@ -346,7 +351,8 @@ static void aWeather_SetClip(WEATHER_ACTOR* weather, int flag) { } } -static void aWeather_RenewWindInfo(WEATHER_ACTOR* weather) { +static void aWeather_RenewWindInfo(ACTOR* actorx) { + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)actorx; s_xyz pos = Common_Get(wind); // multiply by 1 means inline ? f32 speed = Common_Get(wind_speed) * 0.01f; f32 factor = 1.0f; @@ -356,12 +362,12 @@ static void aWeather_RenewWindInfo(WEATHER_ACTOR* weather) { weather->wind_info.z = pos.z * speed * factor; } -static void aWeather_SnowInAdvance(WEATHER_ACTOR* weather, GAME_PLAY* play, int moves) { - +static void aWeather_SnowInAdvance(ACTOR* actorx, GAME* game, int moves) { + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)actorx; int i; for (i = 0; i < moves; i++) { - Weather_Actor_move(&weather->actor_class, &play->game); + Weather_Actor_move(actorx, game); } } @@ -375,7 +381,7 @@ static void Weather_Actor_ct(ACTOR* actor, GAME* game) { int cur; xyz_t* pos = Camera2_getCenterPos_p(); - aWeather_SetClip(weather, 0); + aWeather_SetClip(actor, 0); if (mEv_CheckTitleDemo() > 0) { cur = mEv_CheckTitleDemo() - 1; @@ -408,17 +414,17 @@ static void Weather_Actor_ct(ACTOR* actor, GAME* game) { weather->lightning_timer2 = 30; weather->sound_flag = 0; - aWeather_RenewWindInfo(weather); + aWeather_RenewWindInfo(actor); if (!mFI_GET_TYPE(mFI_GetFieldId())) { - aWeather_SecureWeatherPrivateWork(weather); + aWeather_SecureWeatherPrivateWork(actor); } - aWeather_SetNowProfile(weather, weather->current_status); + aWeather_SetNowProfile(actor, weather->current_status); if ((weather->current_status == 2) || (weather->current_status == 3)) { weather->pos.y -= 50.0f; - aWeather_SnowInAdvance(weather, play, 0x28); + aWeather_SnowInAdvance(actor, game, 0x28); weather->pos.y += 50.0f; } @@ -437,11 +443,11 @@ static void Weather_Actor_ct(ACTOR* actor, GAME* game) { weather->basement_event = 0; } if ((play->fb_wipe_type == 6) && (aWeather_IsLand_Event_Check() == 0) && - (aWeather_Basement_Event_Check(weather) == 0)) { + (aWeather_Basement_Event_Check(actor) == 0)) { weather->current_sound_effect = Common_Get(current_sound_effect); } else { weather->current_sound_effect = -1000; - aWeather_ChangeEnvSE(weather, play, weather->current_status, weather->current_level); + aWeather_ChangeEnvSE(actor, game, weather->current_status, weather->current_level); aWeather_SysLevCall_MoveEnd(weather); } } @@ -453,7 +459,7 @@ static void Weather_Actor_dt(ACTOR* actor, GAME* game) { zelda_free(weather->priv); } - aWeather_SetClip(weather, 1); + aWeather_SetClip(actor, 1); } static void aWeather_DrawWeatherPrv(ACTOR* actor, GAME* game) { @@ -495,7 +501,8 @@ static void aWeather_MakeWeatherPrv(ACTOR* actor, GAME* game) { } } -static void aWeather_MoveWeatherPrv(WEATHER_ACTOR* weather, GAME* game) { +static void aWeather_MoveWeatherPrv(ACTOR* actorx, GAME* game) { + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)actorx; aWeather_Priv* priv; int i; @@ -509,7 +516,7 @@ static void aWeather_MoveWeatherPrv(WEATHER_ACTOR* weather, GAME* game) { if (priv->timer != -100) { priv->timer--; if (priv->timer <= 0) { - aWeather_AbolishPrivate(&weather->actor_class, i); + aWeather_AbolishPrivate(actorx, i); } } } @@ -517,7 +524,8 @@ static void aWeather_MoveWeatherPrv(WEATHER_ACTOR* weather, GAME* game) { } } -static int aWeather_CountWeatherPrivate(WEATHER_ACTOR* weather) { +static int aWeather_CountWeatherPrivate(ACTOR* actorx) { + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)actorx; int i; int count; aWeather_Priv* priv = weather->priv; @@ -534,7 +542,8 @@ static int aWeather_CountWeatherPrivate(WEATHER_ACTOR* weather) { return count; } -static void aWeather_ChangeWeather(WEATHER_ACTOR* weather, GAME_PLAY* play) { +static void aWeather_ChangeWeather(ACTOR* actorx, GAME* game) { + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)actorx; if ((weather->request_change == TRUE) && (weather->current_level == 0)) { if (mFI_GET_TYPE(mFI_GetFieldId())) { @@ -542,27 +551,28 @@ static void aWeather_ChangeWeather(WEATHER_ACTOR* weather, GAME_PLAY* play) { aWeather_weatherinfo_CommonSet(weather->current_status, weather->next_level); weather->current_level = 1; weather->current_aim_level = weather->next_level; - aWeather_ChangeEnvSE(weather, play, weather->current_status, weather->current_level); + aWeather_ChangeEnvSE(actorx, game, weather->current_status, weather->current_level); weather->request_change = FALSE; - } else if (aWeather_CountWeatherPrivate(weather) == 0) { + } else if (aWeather_CountWeatherPrivate(actorx) == 0) { weather->current_status = weather->next_status; - aWeather_SetNowProfile(weather, weather->current_status); + aWeather_SetNowProfile(actorx, weather->current_status); aWeather_weatherinfo_CommonSet(weather->current_status, weather->next_level); weather->current_level = 1; weather->current_aim_level = weather->next_level; - aWeather_ChangeEnvSE(weather, play, weather->current_status, weather->current_level); + aWeather_ChangeEnvSE(actorx, game, weather->current_status, weather->current_level); weather->request_change = FALSE; } } } -static void aWeather_CheckWeatherTimer() { +static void aWeather_CheckWeatherTimer(ACTOR* actorx) { s_xyz dir; mEnv_DecideWindDirect(&dir, 0x3000, 0x3000); } -static void aWeather_RenewWeatherLevel(WEATHER_ACTOR* weather, GAME_PLAY* play) { +static void aWeather_RenewWeatherLevel(ACTOR* actorx, GAME* game) { + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)actorx; s16 level; if (weather->current_level != weather->current_aim_level) { @@ -574,12 +584,13 @@ static void aWeather_RenewWeatherLevel(WEATHER_ACTOR* weather, GAME_PLAY* play) weather->current_level--; else weather->current_level++; - aWeather_ChangeEnvSE(weather, play, weather->current_status, weather->current_level); + aWeather_ChangeEnvSE(actorx, game, weather->current_status, weather->current_level); } } } -static void aWeather_ChangeWeatherTime0(WEATHER_ACTOR* weather) { +static void aWeather_ChangeWeatherTime0(ACTOR* actorx) { + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)actorx; s16 rndWeather, rndIntensity; s16 evWeather, evIntensity; s16 save_weather; @@ -611,14 +622,15 @@ static void aWeather_ChangeWeatherTime0(WEATHER_ACTOR* weather) { Save_Set(weather, rndIntensity | (rndWeather * 16)); if (((mEv_CheckTitleDemo() != -9) || (weather->sound_flag != 1)) && (mFI_CheckInIsland() == 0)) { - aWeather_RequestChangeWeather(&weather->actor_class, rndWeather, rndIntensity); + aWeather_RequestChangeWeather(actorx, rndWeather, rndIntensity); } Common_Set(weather_time, Common_Get(time.rtc_time)); } } } -static void aWeather_MakeKaminari(WEATHER_ACTOR* weather) { +static void aWeather_MakeKaminari(ACTOR* actorx) { + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)actorx; lbRTC_time_c time = Common_Get(time.rtc_time); u8 month = time.month; s16 timer; @@ -660,21 +672,21 @@ static void Weather_Actor_move(ACTOR* actor, GAME* game) { camera = &play->camera; angle = search_position_angleY(&camera->lookat.center, &camera->lookat.eye); - aWeather_MakeKaminari(weather); - aWeather_CheckWeatherTimer(weather); + aWeather_MakeKaminari(actor); + aWeather_CheckWeatherTimer(actor); aWeather_MakeWeatherPrv(actor, game); - aWeather_RenewWeatherLevel(weather, play); - aWeather_MoveWeatherPrv(weather, game); - aWeather_ChangeWeather(weather, play); + aWeather_RenewWeatherLevel(actor, game); + aWeather_MoveWeatherPrv(actor, game); + aWeather_ChangeWeather(actor, game); weather->pos = *pos; - aWeather_ChangeWeatherTime0(weather); + aWeather_ChangeWeatherTime0(actor); if (Common_Get(weather) == 1) { - umbrella = mPlib_check_player_open_umbrella(play); + umbrella = mPlib_check_player_open_umbrella(game); if (umbrella != weather->umbrella_flag) { - aWeather_ChangeEnvSE(weather, play, weather->current_status, weather->current_level); + aWeather_ChangeEnvSE(actor, game, weather->current_status, weather->current_level); } weather->umbrella_flag = umbrella; @@ -689,10 +701,10 @@ static void Weather_Actor_move(ACTOR* actor, GAME* game) { } extern int aWeather_ChangingWeather() { - if (Common_Get(clip.weather_clip) != NULL) { if (Common_Get(clip.weather_clip->actor) != NULL) { - return Common_Get(clip.weather_clip->actor)->request_change == TRUE; + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)Common_Get(clip).weather_clip->actor; + return weather->request_change == TRUE; } } diff --git a/src/ac_weather_leaf.c b/src/ac_weather_leaf.c index 2b43a161..f072f92e 100644 --- a/src/ac_weather_leaf.c +++ b/src/ac_weather_leaf.c @@ -27,50 +27,46 @@ Gfx* ef_otiba_model_tbl[] = { }; aWeather_Profile_c iam_weather_leaf = { - aWeatherLeaf_make, - aWeatherLeaf_ct, - aWeatherLeaf_move, - aWeatherLeaf_set, - aWeatherLeaf_draw, + aWeatherLeaf_make, aWeatherLeaf_ct, aWeatherLeaf_move, aWeatherLeaf_set, aWeatherLeaf_draw, }; -static int aWeatherLeaf_DecideMakeLeafCount(ACTOR* actor, GAME* game){ +static int aWeatherLeaf_DecideMakeLeafCount(ACTOR* actor, GAME* game) { WEATHER_ACTOR* weather = (WEATHER_ACTOR*)actor; - if(weather->current_level == 1){ + if (weather->current_level == 1) { return (game->frame_counter & 15) == 0; } - return (game->frame_counter & 7) == 0; + return (game->frame_counter & 7) == 0; } - -static void aWeatherLeaf_make(ACTOR* actor, GAME* game){ + +static void aWeatherLeaf_make(ACTOR* actor, GAME* game) { WEATHER_ACTOR* weather = (WEATHER_ACTOR*)actor; GAME_PLAY* play = (GAME_PLAY*)game; - aWeather_Priv* priv; - f32 x,z; + aWeather_Priv* priv; + f32 x, z; xyz_t pos = weather->pos; f32 y = 230.0f + pos.y; - int count = Common_Get(clip.weather_clip)->get_priv_num(actor); - xyz_t base = {0.0f, 0.0f, 0.0f}; + int count = Common_Get(clip.weather_clip)->get_priv_num(actor); + xyz_t base = { 0.0f, 0.0f, 0.0f }; xyz_t mod_pos; - if(aWeatherLeaf_DecideMakeLeafCount(actor, game) != 0){ + if (aWeatherLeaf_DecideMakeLeafCount(actor, game) != 0) { base.y = -0.8f + (RANDOM_F(-0.0999999642372f)); - if(count != -1){ + if (count != -1) { x = -100.0f + (RANDOM_F(200.0f)); z = -200.0f + (RANDOM_F(380.0f)); - + mod_pos = pos; mod_pos.x += x; mod_pos.z += z; mod_pos.y = y; - + priv = Common_Get(clip.weather_clip)->get_priv(4, 280, &mod_pos, &base, actor, count); - if(priv != NULL){ + if (priv != NULL) { aWeatherLeaf_ct(priv, game); - priv->work[3]= 0; + priv->work[3] = 0; priv->work[4] = 156.5f + (RANDOM_F(260.5)); priv->currentY = y; } @@ -78,36 +74,34 @@ static void aWeatherLeaf_make(ACTOR* actor, GAME* game){ } } - -static void aWeatherLeaf_ct(aWeather_Priv* priv, GAME*){ +static void aWeatherLeaf_ct(aWeather_Priv* priv, GAME*) { priv->work[0] = RANDOM_F(3.0f); priv->work[1] = RANDOM_F(65535.0f); priv->work[2] = RANDOM_F(65535.0f); } - -static int aWeatherLeaf_CheckLeafBorder(aWeather_Priv* priv){ - WEATHER_ACTOR* weather = Common_Get(clip.weather_clip)->actor; +static int aWeatherLeaf_CheckLeafBorder(aWeather_Priv* priv) { + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)Common_Get(clip.weather_clip)->actor; int ret = 0; f32 leafTemp; xyz_t pos; - - if(weather != NULL){ - pos = weather->pos; - leafTemp =priv->pos.x; - if(leafTemp < (-100.0f + pos.x)){ + if (weather != NULL) { + pos = weather->pos; + leafTemp = priv->pos.x; + + if (leafTemp < (-100.0f + pos.x)) { ret |= 2; } - if(leafTemp > (100.0f + pos.x)){ + if (leafTemp > (100.0f + pos.x)) { ret |= 8; } - leafTemp =priv->pos.z; + leafTemp = priv->pos.z; - if(leafTemp > (180.0f + pos.z)){ + if (leafTemp > (180.0f + pos.z)) { ret |= 4; } - if(leafTemp < (-200.0f + pos.z)){ + if (leafTemp < (-200.0f + pos.z)) { ret |= 1; } } @@ -115,58 +109,58 @@ static int aWeatherLeaf_CheckLeafBorder(aWeather_Priv* priv){ return ret; } -static void aWeatherLeaf_CheckLeafScroll(aWeather_Priv* priv){ +static void aWeatherLeaf_CheckLeafScroll(aWeather_Priv* priv) { int border = aWeatherLeaf_CheckLeafBorder(priv); - if(border != 0){ - if((border >> 1) & 1){ + if (border != 0) { + if ((border >> 1) & 1) { priv->pos.x += 200.0f; } - if((border >> 3) & 1){ + if ((border >> 3) & 1) { priv->pos.x -= 200.0f; } - if((border >> 2) & 1){ + if ((border >> 2) & 1) { priv->pos.z -= 380.0f; } - if(border & 1){ + if (border & 1) { priv->pos.z += 380.0f; } } - if(Common_Get(clip.weather_clip) != NULL){ + if (Common_Get(clip.weather_clip) != NULL) { f32 y; - WEATHER_ACTOR* weather = Common_Get(clip.weather_clip)->actor; + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)Common_Get(clip.weather_clip)->actor; - if(weather != NULL){ + if (weather != NULL) { y = 230.0f + weather->pos.y; - if(priv->pos.y < + weather->pos.y){ + if (priv->pos.y < +weather->pos.y) { priv->pos.y = (y + (priv->pos.y - priv->currentY)); - priv->currentY = y; + priv->currentY = y; } } } } -static void aWeatherLeaf_SetWind2Leaf(aWeather_Priv* priv){ +static void aWeatherLeaf_SetWind2Leaf(aWeather_Priv* priv) { priv->pos.x += 0.45f; } -static void aWeatherLeaf_move(aWeather_Priv* priv, GAME* game){ - GAME_PLAY* play = (GAME_PLAY*) game; +static void aWeatherLeaf_move(aWeather_Priv* priv, GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; priv->pos.x += priv->speed.x; priv->pos.y += priv->speed.y; priv->pos.z += priv->speed.z; - + priv->work[3] += priv->work[4]; aWeatherLeaf_SetWind2Leaf(priv); aWeatherLeaf_CheckLeafScroll(priv); priv->work[1] += 0x8DC; - priv->work[2] += 0x474; + priv->work[2] += 0x474; } -static void aWeatherLeaf_set(GAME* game){ +static void aWeatherLeaf_set(GAME* game) { _texture_z_light_fog_prim_xlu(game->graph); @@ -174,39 +168,38 @@ static void aWeatherLeaf_set(GAME* game){ gSPDisplayList(NEXT_POLY_XLU_DISP, ef_otiba01_setmode); - CLOSE_DISP(game->graph); } -void aWeatherLeaf_draw(aWeather_Priv* priv, GAME* game){ - GAME_PLAY* play = (GAME_PLAY*) game; - +void aWeatherLeaf_draw(aWeather_Priv* priv, GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + Mtx* work; f32 scale; f32 min; xyz_t pos; - xyz_t screen_pos; - + xyz_t screen_pos; pos.x = priv->pos.x + (6.0f * sin_s(priv->work[3])); pos.z = priv->pos.z + (6.0f * cos_s(priv->work[3])); - pos.y = priv->pos.y; + pos.y = priv->pos.y; Game_play_Projection_Trans(play, &pos, &screen_pos); - if(( screen_pos.x >= 0.0f) && (screen_pos.x < SCREEN_WIDTH_F) && ( screen_pos.y >= 0.0f) && (screen_pos.y < SCREEN_HEIGHT_F)){ - + if ((screen_pos.x >= 0.0f) && (screen_pos.x < SCREEN_WIDTH_F) && (screen_pos.y >= 0.0f) && + (screen_pos.y < SCREEN_HEIGHT_F)) { + work = GRAPH_ALLOC_TYPE(game->graph, Mtx, 1); - OPEN_DISP(game->graph); - - suMtxMakeSRT(work, 0.00499999988824f, 0.00499999988824f, 0.00499999988824f, priv->work[2], priv->work[1], priv->work[2], pos.x, pos.y, pos.z); + OPEN_DISP(game->graph); + + suMtxMakeSRT(work, 0.00499999988824f, 0.00499999988824f, 0.00499999988824f, priv->work[2], priv->work[1], + priv->work[2], pos.x, pos.y, pos.z); gSPMatrix(NEXT_POLY_XLU_DISP, work, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - - gSPDisplayList(NEXT_POLY_XLU_DISP, ef_otiba_model_tbl[priv->work[0]]); - - CLOSE_DISP( game->graph); + gSPDisplayList(NEXT_POLY_XLU_DISP, ef_otiba_model_tbl[priv->work[0]]); + + CLOSE_DISP(game->graph); } } diff --git a/src/ac_weather_rain.c b/src/ac_weather_rain.c index dbd4148c..38c1b2ea 100644 --- a/src/ac_weather_rain.c +++ b/src/ac_weather_rain.c @@ -29,24 +29,20 @@ static void aWeatherRain_set(GAME*); static void aWeatherRain_draw(aWeather_Priv*, GAME*); aWeather_Profile_c iam_weather_rain = { - aWeatherRain_make, - aWeatherRain_ct, - aWeatherRain_move, - aWeatherRain_set, - aWeatherRain_draw, + aWeatherRain_make, aWeatherRain_ct, aWeatherRain_move, aWeatherRain_set, aWeatherRain_draw, }; -static int aWeatherRain_DecideMakeRainCount(ACTOR* actor){ - WEATHER_ACTOR* weather = (WEATHER_ACTOR*)actor; +static int aWeatherRain_DecideMakeRainCount(ACTOR* actor) { + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)actor; - if(weather->current_level == 1){ + if (weather->current_level == 1) { return 1; } - return( weather->current_level -2 ? 0 : -1) + 3; + return (weather->current_level - 2 ? 0 : -1) + 3; } -static void aWeatherRain_make(ACTOR* actor, GAME* game){ +static void aWeatherRain_make(ACTOR* actor, GAME* game) { aWeather_Priv* priv; xyz_t pos; xyz_t pos_mod; @@ -57,84 +53,79 @@ static void aWeatherRain_make(ACTOR* actor, GAME* game){ GAME_PLAY* play = (GAME_PLAY*)game; WEATHER_ACTOR* weather = (WEATHER_ACTOR*)actor; - f32 x,y,z; - + f32 x, y, z; + count = aWeatherRain_DecideMakeRainCount(actor); pos = weather->pos; - for(i = 0; i < count; i++){ + for (i = 0; i < count; i++) { priv_num = Common_Get(clip.weather_clip)->get_priv_num(&weather->actor_class); - if (priv_num != -1){ + if (priv_num != -1) { x = -130.0f + (RANDOM_F(260.0f)); z = -200.0f + (RANDOM_F(360.0f)); - + pos_mod = pos; speed = ZeroVec; - - speed.y = -9.5f + (RANDOM_F(-2.5f)); + + speed.y = -9.5f + (RANDOM_F(-2.5f)); speed.y += -2.0f; - + pos_mod.x += x; pos_mod.z += z; - if(mEv_CheckTitleDemo() == -9){ + if (mEv_CheckTitleDemo() == -9) { PLAYER_ACTOR* player = get_player_actor_withoutCheck(play); pos_mod.y = 70.0f + (120.0f + player->actor_class.world.position.y); - } - else{ + } else { pos_mod.y = 70.0f + (120.0f + mCoBG_GetBgY_OnlyCenter_FromWpos(pos_mod, 0.0f)); } - + priv = Common_Get(clip.weather_clip)->get_priv(1, 1000, &pos_mod, &speed, actor, priv_num); - if(priv != NULL){ - aWeatherRain_ct(priv,game); + if (priv != NULL) { + aWeatherRain_ct(priv, game); priv->work[0] = 0; } } } } -static void aWeatherRain_ct(aWeather_Priv*, GAME*){ - +static void aWeatherRain_ct(aWeather_Priv*, GAME*) { } +static void aWeatherRain_MoveRain(aWeather_Priv* priv) { -static void aWeatherRain_MoveRain(aWeather_Priv* priv){ - - priv->pos.x += priv->speed.x; - priv->pos.y += priv->speed.y; - priv->pos.z += priv->speed.z; + priv->pos.x += priv->speed.x; + priv->pos.y += priv->speed.y; + priv->pos.z += priv->speed.z; } - -static void aWeatherRain_MakePicha(ACTOR* actor, GAME* game, xyz_t pos){ +static void aWeatherRain_MakePicha(ACTOR* actor, GAME* game, xyz_t pos) { int priv_num = Common_Get(clip.weather_clip)->get_priv_num(actor); GAME_PLAY* play = (GAME_PLAY*)game; aWeather_Priv* priv; f32 y; - - if(priv_num != -1){ - if(mEv_CheckTitleDemo() == -9){ + + if (priv_num != -1) { + if (mEv_CheckTitleDemo() == -9) { PLAYER_ACTOR* player = get_player_actor_withoutCheck(play); - + y = player->actor_class.world.position.y; pos.y = y; - } - else{ + } else { y = mCoBG_GetBgY_OnlyCenter_FromWpos(pos, 0.0f); pos.y = y; } priv = Common_Get(clip.weather_clip)->get_priv(1, 8, &pos, NULL, actor, priv_num); - if(priv != NULL){ - aWeatherRain_ct(priv,game); + if (priv != NULL) { + aWeatherRain_ct(priv, game); priv->work[0] = 1; } } } -static void aWeatherRain_set(GAME* game){ +static void aWeatherRain_set(GAME* game) { _texture_z_light_fog_prim_xlu(game->graph); @@ -142,75 +133,78 @@ static void aWeatherRain_set(GAME* game){ gSPDisplayList(NEXT_POLY_XLU_DISP, ef_ame02_setmode); - CLOSE_DISP(game->graph); } - -static void aWeatherRain_move(aWeather_Priv* priv, GAME* game){ +static void aWeatherRain_move(aWeather_Priv* priv, GAME* game) { WEATHER_ACTOR* weather; s16 timer = (1000 - priv->timer); - if(priv->work[0] == 0){ + if (priv->work[0] == 0) { aWeatherRain_MoveRain(priv); - if((timer >= 10) && (Common_Get(clip.weather_clip) != NULL)){ - weather = Common_Get(clip.weather_clip)->actor; - if(weather != NULL){ - (Common_Get(clip.weather_clip)->remove_priv(&weather->actor_class, priv->id)); + if ((timer >= 10) && (Common_Get(clip.weather_clip) != NULL)) { + weather = (WEATHER_ACTOR*)Common_Get(clip.weather_clip)->actor; + if (weather != NULL) { + (Common_Get(clip.weather_clip)->remove_priv(&weather->actor_class, priv->id)); aWeatherRain_MakePicha(&weather->actor_class, game, priv->pos); } } } } -void aWeatherRain_draw(aWeather_Priv* priv, GAME* game){ +void aWeatherRain_draw(aWeather_Priv* priv, GAME* game) { static f32 rain_scale[] = { - 0.000299999985145f, 0.035f, 0.01f, + 0.000299999985145f, + 0.035f, + 0.01f, }; static f32 picha_scale[] = { - 0.0033f,0.0033f,0.0033f, + 0.0033f, + 0.0033f, + 0.0033f, }; GAME_PLAY* play = (GAME_PLAY*)game; + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)Common_Get(clip.weather_clip)->actor; - s16 disp; + s16 disp; xyz_t pos; s16 angle; GRAPH* graph; Mtx* work; - angle = Common_Get(clip.weather_clip)->actor->current_yAngle; - disp = 8 - priv->timer; + angle = weather->current_yAngle; + disp = 8 - priv->timer; pos = priv->pos; - if(priv->work[0] == 1){ + if (priv->work[0] == 1) { graph = play->game.graph; disp = disp >> 1; - Matrix_translate(pos.x,pos.y,pos.z, FALSE); + Matrix_translate(pos.x, pos.y, pos.z, FALSE); Matrix_mult(&play->billboard_matrix, 1); Matrix_scale(picha_scale[0], picha_scale[1], picha_scale[2], TRUE); - OPEN_DISP(graph); + OPEN_DISP(graph); - gSPMatrix(NEXT_POLY_XLU_DISP, _Matrix_to_Mtx_new(play->game.graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPMatrix(NEXT_POLY_XLU_DISP, _Matrix_to_Mtx_new(play->game.graph), + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(NEXT_POLY_XLU_DISP, aWeather_rain_picha_disp[(disp)]); - + CLOSE_DISP(graph); - } - else if(priv->work[0] == 0){ + } else if (priv->work[0] == 0) { work = GRAPH_ALLOC_TYPE(game->graph, Mtx, 1); - - OPEN_DISP( play->game.graph); - - suMtxMakeSRT(work, rain_scale[0], rain_scale[1], rain_scale[2], 0, angle, 0, pos.x, pos.y, pos.z); + + OPEN_DISP(play->game.graph); + + suMtxMakeSRT(work, rain_scale[0], rain_scale[1], rain_scale[2], 0, angle, 0, pos.x, pos.y, pos.z); gSPMatrix(NEXT_POLY_XLU_DISP, work, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(NEXT_POLY_XLU_DISP, ef_ame02_04_modelT); - - CLOSE_DISP( play->game.graph); + + CLOSE_DISP(play->game.graph); } } diff --git a/src/ac_weather_sakura.c b/src/ac_weather_sakura.c index 3e6fa0c6..6b85345d 100644 --- a/src/ac_weather_sakura.c +++ b/src/ac_weather_sakura.c @@ -20,50 +20,46 @@ static void aWeatherSakura_set(GAME*); static void aWeatherSakura_draw(aWeather_Priv*, GAME*); aWeather_Profile_c iam_weather_sakura = { - aWeatherSakura_make, - aWeatherSakura_ct, - aWeatherSakura_move, - aWeatherSakura_set, - aWeatherSakura_draw, + aWeatherSakura_make, aWeatherSakura_ct, aWeatherSakura_move, aWeatherSakura_set, aWeatherSakura_draw, }; -static int aWeatherSakura_DecideMakeSakuraCount(ACTOR* actor, GAME* game){ +static int aWeatherSakura_DecideMakeSakuraCount(ACTOR* actor, GAME* game) { WEATHER_ACTOR* weather = (WEATHER_ACTOR*)actor; - if(weather->current_level == 1){ + if (weather->current_level == 1) { return (game->frame_counter & 7) == 0; } - return (game->frame_counter & 3) == 0; + return (game->frame_counter & 3) == 0; } - -static void aWeatherSakura_make(ACTOR* actor, GAME* game){ + +static void aWeatherSakura_make(ACTOR* actor, GAME* game) { WEATHER_ACTOR* weather = (WEATHER_ACTOR*)actor; GAME_PLAY* play = (GAME_PLAY*)game; - aWeather_Priv* priv; - f32 x,z; + aWeather_Priv* priv; + f32 x, z; xyz_t pos = weather->pos; f32 y = 230.0f + pos.y; - int count = Common_Get(clip.weather_clip)->get_priv_num(actor); - xyz_t base = {0.0f, 0.0f, 0.0f}; + int count = Common_Get(clip.weather_clip)->get_priv_num(actor); + xyz_t base = { 0.0f, 0.0f, 0.0f }; xyz_t mod_pos; - if(aWeatherSakura_DecideMakeSakuraCount(actor, game) != 0){ + if (aWeatherSakura_DecideMakeSakuraCount(actor, game) != 0) { base.y = -0.8f + (RANDOM_F(-0.0999999642372f)); - if(count != -1){ + if (count != -1) { x = -100.0f + (RANDOM_F(200.0f)); z = -200.0f + (RANDOM_F(380.0f)); - + mod_pos = pos; mod_pos.x += x; mod_pos.z += z; mod_pos.y = y; - + priv = Common_Get(clip.weather_clip)->get_priv(3, 280, &mod_pos, &base, actor, count); - if(priv != NULL){ + if (priv != NULL) { aWeatherSakura_ct(priv, game); - priv->work[3]= 0; + priv->work[3] = 0; priv->work[4] = 156.5f + (RANDOM_F(260.5)); priv->currentY = y; } @@ -71,36 +67,34 @@ static void aWeatherSakura_make(ACTOR* actor, GAME* game){ } } - -static void aWeatherSakura_ct(aWeather_Priv* priv, GAME*){ +static void aWeatherSakura_ct(aWeather_Priv* priv, GAME*) { priv->work[0] = RANDOM_F(65535.0f); priv->work[1] = RANDOM_F(65535.0f); priv->work[2] = RANDOM_F(65535.0f); } - -static int aWeatherSakura_CheckSakuraBorder(aWeather_Priv* priv){ - WEATHER_ACTOR* weather = Common_Get(clip.weather_clip)->actor; +static int aWeatherSakura_CheckSakuraBorder(aWeather_Priv* priv) { + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)Common_Get(clip.weather_clip)->actor; int ret = 0; f32 sakuraTemp; xyz_t pos; - - if(weather != NULL){ - pos = weather->pos; - sakuraTemp =priv->pos.x; - if(sakuraTemp < (-100.0f + pos.x)){ + if (weather != NULL) { + pos = weather->pos; + sakuraTemp = priv->pos.x; + + if (sakuraTemp < (-100.0f + pos.x)) { ret |= 2; } - if(sakuraTemp > (100.0f + pos.x)){ + if (sakuraTemp > (100.0f + pos.x)) { ret |= 8; } - sakuraTemp =priv->pos.z; + sakuraTemp = priv->pos.z; - if(sakuraTemp > (180.0f + pos.z)){ + if (sakuraTemp > (180.0f + pos.z)) { ret |= 4; } - if(sakuraTemp < (-200.0f + pos.z)){ + if (sakuraTemp < (-200.0f + pos.z)) { ret |= 1; } } @@ -108,59 +102,59 @@ static int aWeatherSakura_CheckSakuraBorder(aWeather_Priv* priv){ return ret; } -static void aWeatherSakura_CheckSakuraScroll(aWeather_Priv* priv){ +static void aWeatherSakura_CheckSakuraScroll(aWeather_Priv* priv) { int border = aWeatherSakura_CheckSakuraBorder(priv); - if(border != 0){ - if((border >> 1) & 1){ + if (border != 0) { + if ((border >> 1) & 1) { priv->pos.x += 200.0f; } - if((border >> 3) & 1){ + if ((border >> 3) & 1) { priv->pos.x -= 200.0f; } - if((border >> 2) & 1){ + if ((border >> 2) & 1) { priv->pos.z -= 380.0f; } - if(border & 1){ + if (border & 1) { priv->pos.z += 380.0f; } } - if(Common_Get(clip.weather_clip) != NULL){ + if (Common_Get(clip.weather_clip) != NULL) { f32 y; - WEATHER_ACTOR* weather = Common_Get(clip.weather_clip)->actor; + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)Common_Get(clip.weather_clip)->actor; - if(weather != NULL){ + if (weather != NULL) { y = 230.0f + weather->pos.y; - if(priv->pos.y < + weather->pos.y){ + if (priv->pos.y < +weather->pos.y) { priv->pos.y = (y + (priv->pos.y - priv->currentY)); - priv->currentY = y; + priv->currentY = y; } } } } -static void aWeatherSakura_SetWind2Sakura(aWeather_Priv* priv){ +static void aWeatherSakura_SetWind2Sakura(aWeather_Priv* priv) { priv->pos.x += 0.45f; } -static void aWeatherSakura_move(aWeather_Priv* priv, GAME* game){ - GAME_PLAY* play = (GAME_PLAY*) game; +static void aWeatherSakura_move(aWeather_Priv* priv, GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; priv->pos.x += priv->speed.x; priv->pos.y += priv->speed.y; priv->pos.z += priv->speed.z; - + priv->work[3] += priv->work[4]; aWeatherSakura_SetWind2Sakura(priv); aWeatherSakura_CheckSakuraScroll(priv); priv->work[0] += 0x200; priv->work[1] += 0x8DC; - priv->work[2] += 0x474; + priv->work[2] += 0x474; } -static void aWeatherSakura_set(GAME* game){ +static void aWeatherSakura_set(GAME* game) { _texture_z_light_fog_prim_xlu(game->graph); @@ -168,41 +162,39 @@ static void aWeatherSakura_set(GAME* game){ gSPDisplayList(NEXT_POLY_XLU_DISP, ef_hanabira01_00_setmode); - CLOSE_DISP(game->graph); } -void aWeatherSakura_draw(aWeather_Priv* priv, GAME* game){ - GAME_PLAY* play = (GAME_PLAY*) game; +void aWeatherSakura_draw(aWeather_Priv* priv, GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + + xyz_t base = { 0.05f, 0.05f, 0.05f }; - xyz_t base = {0.05f, 0.05f, 0.05f}; - Mtx* work; f32 scale; f32 min; xyz_t pos; - xyz_t screen_pos; - + xyz_t screen_pos; pos.x = priv->pos.x + (6.0f * sin_s(priv->work[3])); pos.z = priv->pos.z + (6.0f * cos_s(priv->work[3])); - pos.y = priv->pos.y; + pos.y = priv->pos.y; Game_play_Projection_Trans(play, &pos, &screen_pos); - if(( screen_pos.x >= 0.0f) && (screen_pos.x < SCREEN_WIDTH_F) && ( screen_pos.y >= 0.0f) && (screen_pos.y < SCREEN_HEIGHT_F)){ - + if ((screen_pos.x >= 0.0f) && (screen_pos.x < SCREEN_WIDTH_F) && (screen_pos.y >= 0.0f) && + (screen_pos.y < SCREEN_HEIGHT_F)) { + work = GRAPH_ALLOC_TYPE(game->graph, Mtx, 1); - OPEN_DISP(game->graph); - + OPEN_DISP(game->graph); + suMtxMakeSRT(work, base.x, base.y, base.z, priv->work[2], priv->work[1], priv->work[2], pos.x, pos.y, pos.z); gSPMatrix(NEXT_POLY_XLU_DISP, work, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - - gSPDisplayList(NEXT_POLY_XLU_DISP, ef_hanabira01_00_modelT); - - CLOSE_DISP( game->graph); + gSPDisplayList(NEXT_POLY_XLU_DISP, ef_hanabira01_00_modelT); + + CLOSE_DISP(game->graph); } } diff --git a/src/ac_weather_snow.c b/src/ac_weather_snow.c index f59d0d88..35952c72 100644 --- a/src/ac_weather_snow.c +++ b/src/ac_weather_snow.c @@ -72,7 +72,7 @@ static void aWeatherSnow_ct(aWeather_Priv*, GAME*) { } static int aWeatherSnow_CheckSnowBorder(aWeather_Priv* priv, GAME_PLAY* play) { - WEATHER_ACTOR* weather = Common_Get(clip.weather_clip)->actor; + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)Common_Get(clip.weather_clip)->actor; int ret = 0; f32 wtemp, ptemp; if (weather != NULL) { @@ -120,7 +120,7 @@ static void aWeatherSnow_CheckSnowScroll(aWeather_Priv* priv, GAME_PLAY* play) { if (Common_Get(clip.weather_clip) != NULL) { f32 y; - WEATHER_ACTOR* weather = Common_Get(clip.weather_clip)->actor; + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)Common_Get(clip.weather_clip)->actor; if (weather != NULL) { y = 230.0f + weather->pos.y; @@ -135,7 +135,7 @@ static void aWeatherSnow_CheckSnowScroll(aWeather_Priv* priv, GAME_PLAY* play) { static void aWeatherSnow_SetWind2Snow(aWeather_Priv* priv) { if (Common_Get(clip.weather_clip) != NULL) { - WEATHER_ACTOR* weather = Common_Get(clip.weather_clip)->actor; + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)Common_Get(clip.weather_clip)->actor; if (weather != NULL) { priv->pos.x += weather->wind_info.x; priv->pos.y += weather->wind_info.y; diff --git a/src/m_demo.c b/src/m_demo.c index 7e43c6b3..d25b9afd 100644 --- a/src/m_demo.c +++ b/src/m_demo.c @@ -9,1183 +9,1097 @@ #include "_mem.h" /* Z-X */ -static f32 direct_vector[mDemo_DIRECT_NUM][2] = { - { -1.0f, 0.0f }, - { -F_SQRT2, F_SQRT2 }, - { 0.0f, 1.0f }, - { F_SQRT2, F_SQRT2 }, - { 1.0f, 0.0f }, - { F_SQRT2, -F_SQRT2 }, - { 0.0f, -1.0f }, - { -F_SQRT2, -F_SQRT2 } -}; +static f32 direct_vector[mDemo_DIRECT_NUM][2] = { { -1.0f, 0.0f }, { -F_SQRT2, F_SQRT2 }, { 0.0f, 1.0f }, + { F_SQRT2, F_SQRT2 }, { 1.0f, 0.0f }, { F_SQRT2, -F_SQRT2 }, + { 0.0f, -1.0f }, { -F_SQRT2, -F_SQRT2 } }; -static s16 direct_back_angle[mDemo_DIRECT_NUM] = { - 0x0000, - 0xE000, - 0xC000, - 0xA000, - 0x8000, - 0x6000, - 0x4000, - 0x2000 -}; +static s16 direct_back_angle[mDemo_DIRECT_NUM] = { 0x0000, 0xE000, 0xC000, 0xA000, 0x8000, 0x6000, 0x4000, 0x2000 }; static mDemo_Data_c demo_data; static mDemo_Data_c* const demo = &demo_data; static int mDemo_Check_talk_type() { - int res = FALSE; + int res = FALSE; - switch (demo->current.type) { - case mDemo_TYPE_TALK: - case mDemo_TYPE_SPEAK: - case mDemo_TYPE_REPORT: - case mDemo_TYPE_SPEECH: - res = TRUE; - break; - } + switch (demo->current.type) { + case mDemo_TYPE_TALK: + case mDemo_TYPE_SPEAK: + case mDemo_TYPE_REPORT: + case mDemo_TYPE_SPEECH: + res = TRUE; + break; + } - return res; + return res; } extern ACTOR* mDemo_Get_talk_actor() { - if (mDemo_Check_talk_type() == TRUE) { - return demo->current.actor; - } + if (mDemo_Check_talk_type() == TRUE) { + return demo->current.actor; + } - return NULL; + return NULL; } /* @unused @fabricated */ extern void mDemo_Set_speaker_actor(ACTOR* actor) { - demo->current.actor = actor; + demo->current.actor = actor; } extern void mDemo_Set_OrderValue(int type, int idx, u16 value) { - if (type >= 0 && type < mDemo_ORDER_NUM && idx >= 0 && idx < mDemo_ORDER_VALUE_MAX) { - demo->order_data[type][idx] = value; - } + if (type >= 0 && type < mDemo_ORDER_NUM && idx >= 0 && idx < mDemo_ORDER_VALUE_MAX) { + demo->order_data[type][idx] = value; + } } extern u16 mDemo_Get_OrderValue(int type, int idx) { - if (type >= 0 && type < mDemo_ORDER_NUM && idx >= 0 && idx < mDemo_ORDER_VALUE_MAX) { - return demo->order_data[type][idx]; - } + if (type >= 0 && type < mDemo_ORDER_NUM && idx >= 0 && idx < mDemo_ORDER_VALUE_MAX) { + return demo->order_data[type][idx]; + } - return 0; + return 0; } static void mDemo_Init_OrderValue() { - int i; - int j; + int i; + int j; - for (i = 0; i < mDemo_ORDER_NUM; i++) { - for (j = 0; j < mDemo_ORDER_VALUE_MAX; j++) { - demo->order_data[i][j] = 0; + for (i = 0; i < mDemo_ORDER_NUM; i++) { + for (j = 0; j < mDemo_ORDER_VALUE_MAX; j++) { + demo->order_data[i][j] = 0; + } } - } } extern void mDemo_Set_msg_num(int msg_num) { - if (mDemo_Check_talk_type() == TRUE) { - demo->data.talk.msg_no = msg_num; - } + if (mDemo_Check_talk_type() == TRUE) { + demo->data.talk.msg_no = msg_num; + } } extern int mDemo_Get_Talk_Actors(ACTOR** speaker, ACTOR** listener) { - if (mDemo_Check_talk_type() == TRUE) { - - speaker[0] = demo->speaker_actor; - listener[0] = demo->listen_actor; - return TRUE; - } - else { - speaker[0] = NULL; - listener[0] = NULL; - return FALSE; - } + if (mDemo_Check_talk_type() == TRUE) { + + speaker[0] = demo->speaker_actor; + listener[0] = demo->listen_actor; + return TRUE; + } else { + speaker[0] = NULL; + listener[0] = NULL; + return FALSE; + } } extern void mDemo_Set_change_player_destiny(s8 destiny) { - demo->change_player_destiny = destiny; + demo->change_player_destiny = destiny; } static int mDemo_Get_change_player_destiny() { - return demo->change_player_destiny; + return demo->change_player_destiny; } static void mDemo_Clear_change_player_destiny() { - mDemo_Set_change_player_destiny(-1); + mDemo_Set_change_player_destiny(-1); } static void mDemo_Copy_change_player_destiny() { - if (mDemo_Get_change_player_destiny() >= 0) { - Private_c* priv = Common_Get(now_private); - lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); + if (mDemo_Get_change_player_destiny() >= 0) { + Private_c* priv = Common_Get(now_private); + lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); - priv->destiny.received_time.sec = rtc_time->sec; - priv->destiny.received_time.min = rtc_time->min; - priv->destiny.received_time.hour = rtc_time->hour; - priv->destiny.received_time.day = rtc_time->day; - priv->destiny.received_time.weekday = rtc_time->weekday; - priv->destiny.received_time.month = rtc_time->month; - priv->destiny.received_time.year = rtc_time->year; - priv->destiny.type = mDemo_Get_change_player_destiny(); - mDemo_Clear_change_player_destiny(); - } + priv->destiny.received_time.sec = rtc_time->sec; + priv->destiny.received_time.min = rtc_time->min; + priv->destiny.received_time.hour = rtc_time->hour; + priv->destiny.received_time.day = rtc_time->day; + priv->destiny.received_time.weekday = rtc_time->weekday; + priv->destiny.received_time.month = rtc_time->month; + priv->destiny.received_time.year = rtc_time->year; + priv->destiny.type = mDemo_Get_change_player_destiny(); + mDemo_Clear_change_player_destiny(); + } } extern void mDemo_Set_use_zoom_sound(u8 use_zoom_sound) { - if (mDemo_Check_talk_type() == TRUE) { - demo->data.talk.use_zoom_sound = use_zoom_sound; - } + if (mDemo_Check_talk_type() == TRUE) { + demo->data.talk.use_zoom_sound = use_zoom_sound; + } } extern int mDemo_Get_use_zoom_sound() { - if (mDemo_Check_talk_type() == TRUE) { - return demo->data.talk.use_zoom_sound; - } + if (mDemo_Check_talk_type() == TRUE) { + return demo->data.talk.use_zoom_sound; + } - return FALSE; + return FALSE; } extern void mDemo_Set_talk_display_name(s8 display_name) { - if (mDemo_Check_talk_type() == TRUE) { - demo->data.talk.display_name = display_name; - } + if (mDemo_Check_talk_type() == TRUE) { + demo->data.talk.display_name = display_name; + } } /* @unused @fabricated */ extern int mDemo_Get_talk_display_name() { - if (mDemo_Check_talk_type() == TRUE) { - return demo->data.talk.display_name; - } + if (mDemo_Check_talk_type() == TRUE) { + return demo->data.talk.display_name; + } - return FALSE; + return FALSE; } extern void mDemo_Set_talk_change_player(u8 change_player) { - if (mDemo_Check_talk_type() == TRUE) { - demo->data.talk.change_player = change_player; - } + if (mDemo_Check_talk_type() == TRUE) { + demo->data.talk.change_player = change_player; + } } /* @unused @fabricated */ extern int mDemo_Get_talk_change_player() { - if (mDemo_Check_talk_type() == TRUE) { - return demo->data.talk.change_player; - } + if (mDemo_Check_talk_type() == TRUE) { + return demo->data.talk.change_player; + } - return FALSE; + return FALSE; } extern void mDemo_Set_talk_return_demo_wait(u8 return_demo_wait) { - if (mDemo_Check_talk_type() == TRUE) { - demo->data.talk.return_demo_wait = return_demo_wait; - } + if (mDemo_Check_talk_type() == TRUE) { + demo->data.talk.return_demo_wait = return_demo_wait; + } } /* @unused @fabricated */ extern int mDemo_Get_talk_return_demo_wait() { - if (mDemo_Check_talk_type() == TRUE) { - return demo->data.talk.return_demo_wait; - } + if (mDemo_Check_talk_type() == TRUE) { + return demo->data.talk.return_demo_wait; + } - return FALSE; + return FALSE; } extern void mDemo_Set_talk_return_get_golden_axe_demo(u8 return_get_golden_axe_demo) { - if (mDemo_Check_talk_type() == TRUE) { - demo->data.talk.return_get_golden_axe_demo = return_get_golden_axe_demo; - } + if (mDemo_Check_talk_type() == TRUE) { + demo->data.talk.return_get_golden_axe_demo = return_get_golden_axe_demo; + } } /* @unused @fabricated */ extern int mDemo_Get_talk_return_get_golden_axe_demo() { - if (mDemo_Check_talk_type() == TRUE) { - return demo->data.talk.return_get_golden_axe_demo; - } + if (mDemo_Check_talk_type() == TRUE) { + return demo->data.talk.return_get_golden_axe_demo; + } - return FALSE; + return FALSE; } extern void mDemo_Set_talk_turn(u8 turn) { - if (mDemo_Check_talk_type() == TRUE) { - demo->data.talk.turn = turn; - } + if (mDemo_Check_talk_type() == TRUE) { + demo->data.talk.turn = turn; + } } extern int mDemo_Get_talk_turn() { - if (mDemo_Check_talk_type() == TRUE) { - return demo->data.talk.turn; - } + if (mDemo_Check_talk_type() == TRUE) { + return demo->data.talk.turn; + } - return FALSE; + return FALSE; } extern void mDemo_Set_talk_window_color(rgba_t* window_color) { - switch (demo->current.type) { - case mDemo_TYPE_TALK: - case mDemo_TYPE_SPEAK: - case mDemo_TYPE_REPORT: - case mDemo_TYPE_SPEECH: - demo->data.talk.window_color = *window_color; - break; + switch (demo->current.type) { + case mDemo_TYPE_TALK: + case mDemo_TYPE_SPEAK: + case mDemo_TYPE_REPORT: + case mDemo_TYPE_SPEECH: + demo->data.talk.window_color = *window_color; + break; - case mDemo_TYPE_EVENTMSG: - case mDemo_TYPE_EVENTMSG2: - demo->data.emsg.window_color = *window_color; - break; - } + case mDemo_TYPE_EVENTMSG: + case mDemo_TYPE_EVENTMSG2: + demo->data.emsg.window_color = *window_color; + break; + } } /* @unused @fabricated */ extern rgba_t* mDemo_Get_talk_window_color_p() { - if (demo->current.type >= mDemo_TYPE_TALK && demo->current.type < mDemo_TYPE_OUTDOOR) { - return &demo->data.talk.window_color; - } - else if (demo->current.type >= mDemo_TYPE_EVENTMSG && demo->current.type < mDemo_TYPE_15) { - return &demo->data.emsg.window_color; - } + if (demo->current.type >= mDemo_TYPE_TALK && demo->current.type < mDemo_TYPE_OUTDOOR) { + return &demo->data.talk.window_color; + } else if (demo->current.type >= mDemo_TYPE_EVENTMSG && demo->current.type < mDemo_TYPE_15) { + return &demo->data.emsg.window_color; + } - return NULL; + return NULL; } extern void mDemo_Set_camera(u8 camera_type) { - demo->camera_type = camera_type; + demo->camera_type = camera_type; } extern int mDemo_Get_camera() { - return demo->camera_type; + return demo->camera_type; } extern int mDemo_CheckDemoType() { - if (mDemo_CheckDemo()) { - return demo->current.type; - } + if (mDemo_CheckDemo()) { + return demo->current.type; + } - return mDemo_TYPE_NONE; + return mDemo_TYPE_NONE; } static int change_camera(int camera_type) { - GAME_PLAY* play; - PLAYER_ACTOR* player; + GAME_PLAY* play; + PLAYER_ACTOR* player; - player = GET_PLAYER_ACTOR_NOW(); - play = (GAME_PLAY*)gamePT; + player = GET_PLAYER_ACTOR_NOW(); + play = (GAME_PLAY*)gamePT; - if (camera_type == play->camera.now_main_index) { - return FALSE; - } + if (camera_type == play->camera.now_main_index) { + return FALSE; + } - switch (camera_type) { - case CAMERA2_PROCESS_TALK: - Camera2_request_main_talk(play, (ACTOR*)player, demo->current.actor, mDemo_CAMERA_PRIORITY); - break; - case CAMERA2_PROCESS_ITEM: - Camera2_request_main_item(play, 0, mDemo_CAMERA_PRIORITY); - break; - case CAMERA2_PROCESS_DOOR: - Camera2_request_main_door(play, (ACTOR*)player, demo->current.type != mDemo_TYPE_OUTDOOR, mDemo_CAMERA_PRIORITY); - break; - case CAMERA2_PROCESS_LOCK: - { - s_xyz angle; - f32 dist; - int sh_bx; - int sh_bz; - xyz_t camera_wpos; + switch (camera_type) { + case CAMERA2_PROCESS_TALK: + Camera2_request_main_talk(play, (ACTOR*)player, demo->current.actor, mDemo_CAMERA_PRIORITY); + break; + case CAMERA2_PROCESS_ITEM: + Camera2_request_main_item(play, 0, mDemo_CAMERA_PRIORITY); + break; + case CAMERA2_PROCESS_DOOR: + Camera2_request_main_door(play, (ACTOR*)player, demo->current.type != mDemo_TYPE_OUTDOOR, + mDemo_CAMERA_PRIORITY); + break; + case CAMERA2_PROCESS_LOCK: { + s_xyz angle; + f32 dist; + int sh_bx; + int sh_bz; + xyz_t camera_wpos; - switch (demo->current.type) { - case mDemo_TYPE_EVENTMSG: - { - Camera2_main_Simple_AngleDistStd(play, &angle, &dist); - Camera2_request_main_simple((GAME_PLAY*)gamePT, &player->actor_class.world.position, &angle, dist, 0, mDemo_CAMERA_PRIORITY); - break; + switch (demo->current.type) { + case mDemo_TYPE_EVENTMSG: { + Camera2_main_Simple_AngleDistStd(play, &angle, &dist); + Camera2_request_main_simple((GAME_PLAY*)gamePT, &player->actor_class.world.position, &angle, dist, + 0, mDemo_CAMERA_PRIORITY); + break; + } + + case mDemo_TYPE_SPEECH: + case mDemo_TYPE_EVENTMSG2: { + Camera2_main_Simple_AngleDistStd(play, &angle, &dist); + mFI_BlockKind2BkNum(&sh_bx, &sh_bz, mRF_BLOCKKIND_SHRINE); + mFI_BkNum2WposXZ(&camera_wpos.x, &camera_wpos.z, sh_bx, sh_bz); + camera_wpos.x += 320.0f; + camera_wpos.y = player->actor_class.world.position.y; + camera_wpos.z += 400.0f; + Camera2_request_main_simple((GAME_PLAY*)gamePT, &camera_wpos, &angle, dist, 0, + mDemo_CAMERA_PRIORITY); + break; + } + } + + break; } + case CAMERA2_PROCESS_CUST_TALK: { + switch (demo->current.actor->id) { + case mAc_PROFILE_EV_YOMISE: + Camera2_request_main_listen_front_low_talk(play, (ACTOR*)player, demo->current.actor, + mDemo_CAMERA_PRIORITY); + break; + } - case mDemo_TYPE_SPEECH: - case mDemo_TYPE_EVENTMSG2: - { - Camera2_main_Simple_AngleDistStd(play, &angle, &dist); - mFI_BlockKind2BkNum(&sh_bx, &sh_bz, mRF_BLOCKKIND_SHRINE); - mFI_BkNum2WposXZ(&camera_wpos.x, &camera_wpos.z, sh_bx, sh_bz); - camera_wpos.x += 320.0f; - camera_wpos.y = player->actor_class.world.position.y; - camera_wpos.z += 400.0f; - Camera2_request_main_simple((GAME_PLAY*)gamePT, &camera_wpos, &angle, dist, 0, mDemo_CAMERA_PRIORITY); - break; + break; } - } + case CAMERA2_PROCESS_SIMPLE: { + switch (demo->current.actor->id) { + case mAc_PROFILE_EV_DESIGNER: + Camera2_request_main_simple_kirin(play, &demo->current.actor->world.position, + mDemo_CAMERA_PRIORITY - 1); + break; + } - break; + break; + } + case CAMERA2_PROCESS_NORMAL: + Camera2_request_main_normal(play, 0, mDemo_CAMERA_PRIORITY - 1); + break; + case CAMERA2_PROCESS_INTER2: { + xyz_t center; + xyz_t eye; + + center = play->camera.lookat.center; + center.x -= 80.0f; + + eye = play->camera.lookat.eye; + eye.x -= 80.0f; + eye.z -= 20.0f; + + Camera2_request_main_inter(play, ¢er, &eye, ¢er, &eye, 0.6f, 0.3f, TRUE, 14, + mDemo_CAMERA_PRIORITY + 1); + play->camera.requested_main_index = CAMERA2_PROCESS_INTER2; + break; + } + case CAMERA2_PROCESS_NUM: + break; } - case CAMERA2_PROCESS_CUST_TALK: - { - switch (demo->current.actor->id) { - case mAc_PROFILE_EV_YOMISE: - Camera2_request_main_listen_front_low_talk(play, (ACTOR*)player, demo->current.actor, mDemo_CAMERA_PRIORITY); - break; - } - break; - } - case CAMERA2_PROCESS_SIMPLE: - { - switch (demo->current.actor->id) { - case mAc_PROFILE_EV_DESIGNER: - Camera2_request_main_simple_kirin(play, &demo->current.actor->world.position, mDemo_CAMERA_PRIORITY - 1); - break; - } - - break; - } - case CAMERA2_PROCESS_NORMAL: - Camera2_request_main_normal(play, 0, mDemo_CAMERA_PRIORITY - 1); - break; - case CAMERA2_PROCESS_INTER2: - { - xyz_t center; - xyz_t eye; - - center = play->camera.lookat.center; - center.x -= 80.0f; - - eye = play->camera.lookat.eye; - eye.x -= 80.0f; - eye.z -= 20.0f; - - Camera2_request_main_inter(play, ¢er, &eye, ¢er, &eye, 0.6f, 0.3f, TRUE, 14, mDemo_CAMERA_PRIORITY + 1); - play->camera.requested_main_index = CAMERA2_PROCESS_INTER2; - break; - } - case CAMERA2_PROCESS_NUM: - break; - } - - return TRUE; + return TRUE; } static int set_speak_default() { - PLAYER_ACTOR* player; + PLAYER_ACTOR* player; - demo->data.talk.msg_no = 0; - demo->data.talk.turn = FALSE; - demo->data.talk.display_name = TRUE; - demo->data.talk.change_player = TRUE; - demo->data.talk.return_demo_wait = FALSE; - demo->data.talk.return_get_golden_axe_demo = FALSE; - demo->data.talk.use_zoom_sound = TRUE; - demo->data.talk.window_color.r = mDemo_WINDOW_COLOR_R; - demo->data.talk.window_color.g = mDemo_WINDOW_COLOR_G; - demo->data.talk.window_color.b = mDemo_WINDOW_COLOR_B; - demo->data.talk.window_color.a = mDemo_WINDOW_COLOR_A; - demo->camera_type = CAMERA2_PROCESS_TALK; - mDemo_Unset_SpeakerAble(); - mDemo_Unset_ListenAble(); + demo->data.talk.msg_no = 0; + demo->data.talk.turn = FALSE; + demo->data.talk.display_name = TRUE; + demo->data.talk.change_player = TRUE; + demo->data.talk.return_demo_wait = FALSE; + demo->data.talk.return_get_golden_axe_demo = FALSE; + demo->data.talk.use_zoom_sound = TRUE; + demo->data.talk.window_color.r = mDemo_WINDOW_COLOR_R; + demo->data.talk.window_color.g = mDemo_WINDOW_COLOR_G; + demo->data.talk.window_color.b = mDemo_WINDOW_COLOR_B; + demo->data.talk.window_color.a = mDemo_WINDOW_COLOR_A; + demo->camera_type = CAMERA2_PROCESS_TALK; + mDemo_Unset_SpeakerAble(); + mDemo_Unset_ListenAble(); - player = GET_PLAYER_ACTOR_NOW(); - demo->speaker_actor = (ACTOR*)player; - demo->listen_actor = demo->current.actor; - return TRUE; + player = GET_PLAYER_ACTOR_NOW(); + demo->speaker_actor = (ACTOR*)player; + demo->listen_actor = demo->current.actor; + return TRUE; } static int set_report_default() { - PLAYER_ACTOR* player; + PLAYER_ACTOR* player; - demo->data.talk.msg_no = 0; - demo->data.talk.turn = FALSE; - demo->data.talk.display_name = FALSE; - demo->data.talk.change_player = FALSE; - demo->data.talk.return_demo_wait = FALSE; - demo->data.talk.return_get_golden_axe_demo = FALSE; - demo->data.talk.use_zoom_sound = TRUE; - demo->data.talk.window_color.r = mDemo_WINDOW_COLOR_R; - demo->data.talk.window_color.g = mDemo_WINDOW_COLOR_G; - demo->data.talk.window_color.b = mDemo_WINDOW_COLOR_B; - demo->data.talk.window_color.a = mDemo_WINDOW_COLOR_A; - demo->camera_type = CAMERA2_PROCESS_NORMAL; - mDemo_Set_SpeakerAble(); - mDemo_Unset_ListenAble(); - player = GET_PLAYER_ACTOR_NOW(); - demo->speaker_actor = (ACTOR*)player; - demo->listen_actor = demo->current.actor; - return TRUE; + demo->data.talk.msg_no = 0; + demo->data.talk.turn = FALSE; + demo->data.talk.display_name = FALSE; + demo->data.talk.change_player = FALSE; + demo->data.talk.return_demo_wait = FALSE; + demo->data.talk.return_get_golden_axe_demo = FALSE; + demo->data.talk.use_zoom_sound = TRUE; + demo->data.talk.window_color.r = mDemo_WINDOW_COLOR_R; + demo->data.talk.window_color.g = mDemo_WINDOW_COLOR_G; + demo->data.talk.window_color.b = mDemo_WINDOW_COLOR_B; + demo->data.talk.window_color.a = mDemo_WINDOW_COLOR_A; + demo->camera_type = CAMERA2_PROCESS_NORMAL; + mDemo_Set_SpeakerAble(); + mDemo_Unset_ListenAble(); + player = GET_PLAYER_ACTOR_NOW(); + demo->speaker_actor = (ACTOR*)player; + demo->listen_actor = demo->current.actor; + return TRUE; } static int set_talk_default() { - demo->data.talk.msg_no = 0; - demo->data.talk.turn = TRUE; - demo->data.talk.display_name = TRUE; - demo->data.talk.change_player = TRUE; - demo->data.talk.return_demo_wait = FALSE; - demo->data.talk.return_get_golden_axe_demo = FALSE; - demo->data.talk.use_zoom_sound = TRUE; - demo->data.talk.window_color.r = mDemo_WINDOW_COLOR_R; - demo->data.talk.window_color.g = mDemo_WINDOW_COLOR_G; - demo->data.talk.window_color.b = mDemo_WINDOW_COLOR_B; - demo->data.talk.window_color.a = mDemo_WINDOW_COLOR_A; - demo->camera_type = CAMERA2_PROCESS_TALK; - mDemo_Unset_SpeakerAble(); - mDemo_Unset_ListenAble(); - demo->speaker_actor = (ACTOR*)GET_PLAYER_ACTOR_NOW(); - demo->listen_actor = demo->current.actor; - return TRUE; + demo->data.talk.msg_no = 0; + demo->data.talk.turn = TRUE; + demo->data.talk.display_name = TRUE; + demo->data.talk.change_player = TRUE; + demo->data.talk.return_demo_wait = FALSE; + demo->data.talk.return_get_golden_axe_demo = FALSE; + demo->data.talk.use_zoom_sound = TRUE; + demo->data.talk.window_color.r = mDemo_WINDOW_COLOR_R; + demo->data.talk.window_color.g = mDemo_WINDOW_COLOR_G; + demo->data.talk.window_color.b = mDemo_WINDOW_COLOR_B; + demo->data.talk.window_color.a = mDemo_WINDOW_COLOR_A; + demo->camera_type = CAMERA2_PROCESS_TALK; + mDemo_Unset_SpeakerAble(); + mDemo_Unset_ListenAble(); + demo->speaker_actor = (ACTOR*)GET_PLAYER_ACTOR_NOW(); + demo->listen_actor = demo->current.actor; + return TRUE; } static int wait_talk_start() { - PLAYER_ACTOR* player = GET_PLAYER_ACTOR_NOW(); + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_NOW(); - if (demo->data.talk.change_player) { - if ( - mPlib_get_player_actor_main_index(gamePT) != 65 && - mPlib_request_main_talk_type1((GAME_PLAY*)gamePT, demo->current.actor, demo->data.talk.turn, FALSE) == FALSE - ) { - return FALSE; + if (demo->data.talk.change_player) { + if (mPlib_get_player_actor_main_index(gamePT) != 65 && + mPlib_request_main_talk_type1(gamePT, demo->current.actor, demo->data.talk.turn, FALSE) == FALSE) { + return FALSE; + } + } else { + mDemo_Set_SpeakerAble(); } - } - else { - mDemo_Set_SpeakerAble(); - } - if (mDemo_Check_SpeakerAble() && mDemo_Check_ListenAble()) { - mMsg_Window_c* msg_win = mMsg_Get_base_window_p(); - - mDemo_Init_OrderValue(); + if (mDemo_Check_SpeakerAble() && mDemo_Check_ListenAble()) { + mMsg_Window_c* msg_win = mMsg_Get_base_window_p(); - if (mMsg_Check_main_index(msg_win, mMsg_INDEX_APPEAR) == FALSE) { - int msg_no = demo->data.talk.msg_no; // pulled out here, probably for debug or something? - - player->actor_class.state_bitfield |= ACTOR_STATE_IN_DEMO; - demo->current.actor->state_bitfield |= ACTOR_STATE_IN_DEMO; - demo->data.talk.actor_saved_weight = demo->current.actor->status_data.weight; - demo->current.actor->status_data.weight = 255; - mMsg_request_main_appear(msg_win, demo->current.actor, demo->data.talk.display_name, &demo->data.talk.window_color, msg_no, mDemo_MSG_PRIORITY); + mDemo_Init_OrderValue(); - if (demo->data.talk.use_zoom_sound) { - sAdo_SysTrgStart(demo->camera_type == CAMERA2_PROCESS_TALK ? (u16)0x8014 : (u16)0x8004); - } + if (mMsg_Check_main_index(msg_win, mMsg_INDEX_APPEAR) == FALSE) { + int msg_no = demo->data.talk.msg_no; // pulled out here, probably for debug or something? - if ( - mFI_GET_TYPE(mFI_GetFieldId()) != mFI_FIELD_DEMO_STARTDEMO && - demo->data.talk.msg_no != 0x07DD && /* Porter "Now arriving at !" message (new player) */ - demo->data.talk.msg_no != 0x0949 && /* Porter "Now arriving in !" message (returning home) */ - demo->data.talk.msg_no != 0x0965 && /* Porter "Take care!" message (travelling to another town) */ - demo->data.talk.msg_no != 0x07DE /* Tom Nook "Hey, you there!" message (walking down from station) */ - ) { - mBGMPsComp_volume_talk_start(); - } + player->actor_class.state_bitfield |= ACTOR_STATE_IN_DEMO; + demo->current.actor->state_bitfield |= ACTOR_STATE_IN_DEMO; + demo->data.talk.actor_saved_weight = demo->current.actor->status_data.weight; + demo->current.actor->status_data.weight = 255; + mMsg_request_main_appear(msg_win, demo->current.actor, demo->data.talk.display_name, + &demo->data.talk.window_color, msg_no, mDemo_MSG_PRIORITY); - return TRUE; + if (demo->data.talk.use_zoom_sound) { + sAdo_SysTrgStart(demo->camera_type == CAMERA2_PROCESS_TALK ? (u16)0x8014 : (u16)0x8004); + } + + if (mFI_GET_TYPE(mFI_GetFieldId()) != mFI_FIELD_DEMO_STARTDEMO && + demo->data.talk.msg_no != 0x07DD && /* Porter "Now arriving at !" message (new player) */ + demo->data.talk.msg_no != 0x0949 && /* Porter "Now arriving in !" message (returning home) */ + demo->data.talk.msg_no != 0x0965 && /* Porter "Take care!" message (travelling to another town) */ + demo->data.talk.msg_no != 0x07DE /* Tom Nook "Hey, you there!" message (walking down from station) */ + ) { + mBGMPsComp_volume_talk_start(); + } + + return TRUE; + } } - } - return FALSE; + return FALSE; } static int wait_talk_end() { - if (mMsg_Check_main_hide(mMsg_Get_base_window_p()) || demo->state == mDemo_STATE_STOP) { - if (demo->data.talk.change_player) { - mPlib_request_main_talk_end_type1((GAME_PLAY*)gamePT, demo->data.talk.return_demo_wait, demo->data.talk.return_get_golden_axe_demo); + if (mMsg_Check_main_hide(mMsg_Get_base_window_p()) || demo->state == mDemo_STATE_STOP) { + if (demo->data.talk.change_player) { + mPlib_request_main_talk_end_type1(gamePT, demo->data.talk.return_demo_wait, + demo->data.talk.return_get_golden_axe_demo); + } + + demo->current.actor->status_data.weight = demo->data.talk.actor_saved_weight; + mDemo_Copy_change_player_destiny(); + + if (mFI_GET_TYPE(mFI_GetFieldId()) != mFI_FIELD_DEMO_STARTDEMO) { + mBGMPsComp_volume_talk_end(); + } + + return TRUE; } - demo->current.actor->status_data.weight = demo->data.talk.actor_saved_weight; - mDemo_Copy_change_player_destiny(); - - if (mFI_GET_TYPE(mFI_GetFieldId()) != mFI_FIELD_DEMO_STARTDEMO) { - mBGMPsComp_volume_talk_end(); - } - - return TRUE; - } - - return FALSE; + return FALSE; } static int set_speech_default() { - demo->data.talk.msg_no = 0; - demo->data.talk.turn = FALSE; - demo->data.talk.display_name = TRUE; - demo->data.talk.change_player = FALSE; - demo->data.talk.return_demo_wait = FALSE; - demo->data.talk.return_get_golden_axe_demo = FALSE; - demo->data.talk.use_zoom_sound = TRUE; - demo->data.talk.window_color.r = mDemo_WINDOW_COLOR_R; - demo->data.talk.window_color.g = mDemo_WINDOW_COLOR_G; - demo->data.talk.window_color.b = mDemo_WINDOW_COLOR_B; - demo->data.talk.window_color.a = mDemo_WINDOW_COLOR_A; - demo->camera_type = CAMERA2_PROCESS_INTER2; - mDemo_Set_SpeakerAble(); - mDemo_Unset_ListenAble(); - demo->speaker_actor = (ACTOR*)GET_PLAYER_ACTOR_NOW(); - demo->listen_actor = demo->current.actor; - return TRUE; + demo->data.talk.msg_no = 0; + demo->data.talk.turn = FALSE; + demo->data.talk.display_name = TRUE; + demo->data.talk.change_player = FALSE; + demo->data.talk.return_demo_wait = FALSE; + demo->data.talk.return_get_golden_axe_demo = FALSE; + demo->data.talk.use_zoom_sound = TRUE; + demo->data.talk.window_color.r = mDemo_WINDOW_COLOR_R; + demo->data.talk.window_color.g = mDemo_WINDOW_COLOR_G; + demo->data.talk.window_color.b = mDemo_WINDOW_COLOR_B; + demo->data.talk.window_color.a = mDemo_WINDOW_COLOR_A; + demo->camera_type = CAMERA2_PROCESS_INTER2; + mDemo_Set_SpeakerAble(); + mDemo_Unset_ListenAble(); + demo->speaker_actor = (ACTOR*)GET_PLAYER_ACTOR_NOW(); + demo->listen_actor = demo->current.actor; + return TRUE; } static int wait_scroll_start() { - return TRUE; + return TRUE; } static int set_door_default() { - demo->data.door.type = 0; - demo->data.door.house_info.size = 80.0f; - demo->data.door.house_info.direct = mDemo_DIRECT_S; - demo->camera_type = CAMERA2_PROCESS_NORMAL; - return TRUE; + demo->data.door.type = 0; + demo->data.door.house_info.size = 80.0f; + demo->data.door.house_info.direct = mDemo_DIRECT_S; + demo->camera_type = CAMERA2_PROCESS_NORMAL; + return TRUE; } static int wait_door_start() { - PLAYER_ACTOR* player = GET_PLAYER_ACTOR_NOW(); - ACTOR* door_actor = (ACTOR*)(*GET_PLAYER_ACTOR_NOW()->get_door_label_proc)(gamePT); + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_NOW(); + ACTOR* door_actor = (ACTOR*)(*GET_PLAYER_ACTOR_NOW()->get_door_label_proc)(gamePT); - if (demo->current.actor == door_actor) { - return TRUE; - } - else { - f32 size_adj = demo->data.door.house_info.size / 2.0f + 20.0f; - xyz_t pos; - s16 back_angle; + if (demo->current.actor == door_actor) { + return TRUE; + } else { + f32 size_adj = demo->data.door.house_info.size / 2.0f + 20.0f; + xyz_t pos; + s16 back_angle; - pos.x = demo->current.actor->world.position.x + size_adj * direct_vector[demo->data.door.house_info.direct][1]; - pos.y = demo->current.actor->world.position.y; - pos.z = demo->current.actor->world.position.z + size_adj * direct_vector[demo->data.door.house_info.direct][0]; + pos.x = demo->current.actor->world.position.x + size_adj * direct_vector[demo->data.door.house_info.direct][1]; + pos.y = demo->current.actor->world.position.y; + pos.z = demo->current.actor->world.position.z + size_adj * direct_vector[demo->data.door.house_info.direct][0]; - back_angle = direct_back_angle[demo->data.door.house_info.direct]; - player->actor_class.state_bitfield |= ACTOR_STATE_IN_DEMO; - demo->current.actor->state_bitfield |= ACTOR_STATE_IN_DEMO; - - mPlib_request_main_door_type1(gamePT, &pos, back_angle, demo->data.door.type, demo->current.actor); - mPlib_strength_request_main_door_priority(gamePT); - } + back_angle = direct_back_angle[demo->data.door.house_info.direct]; + player->actor_class.state_bitfield |= ACTOR_STATE_IN_DEMO; + demo->current.actor->state_bitfield |= ACTOR_STATE_IN_DEMO; - return FALSE; + mPlib_request_main_door_type1(gamePT, &pos, back_angle, demo->data.door.type, demo->current.actor); + mPlib_strength_request_main_door_priority(gamePT); + } + + return FALSE; } extern int mDemo_Set_house_info(f32 size, int direct) { - if (demo->current.type == mDemo_TYPE_DOOR || demo->current.type == mDemo_TYPE_DOOR2) { - demo->data.door.house_info.size = size; - demo->data.door.house_info.direct = direct; - return TRUE; - } + if (demo->current.type == mDemo_TYPE_DOOR || demo->current.type == mDemo_TYPE_DOOR2) { + demo->data.door.house_info.size = size; + demo->data.door.house_info.direct = direct; + return TRUE; + } - return FALSE; + return FALSE; } static int wait_door2_start() { - PLAYER_ACTOR* player = GET_PLAYER_ACTOR_NOW(); - ACTOR* door_actor = (ACTOR*)(*GET_PLAYER_ACTOR_NOW()->get_door_label_proc)(gamePT); + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_NOW(); + ACTOR* door_actor = (ACTOR*)(*GET_PLAYER_ACTOR_NOW()->get_door_label_proc)(gamePT); - if (demo->current.actor == door_actor) { - return TRUE; - } - else { - f32 size_adj = demo->data.door.house_info.size / 2.0f + 20.0f; - xyz_t pos; - s16 back_angle; + if (demo->current.actor == door_actor) { + return TRUE; + } else { + f32 size_adj = demo->data.door.house_info.size / 2.0f + 20.0f; + xyz_t pos; + s16 back_angle; - pos.x = demo->current.actor->world.position.x + size_adj * direct_vector[demo->data.door.house_info.direct][1]; - pos.y = demo->current.actor->world.position.y; - pos.z = demo->current.actor->world.position.z + size_adj * direct_vector[demo->data.door.house_info.direct][0]; + pos.x = demo->current.actor->world.position.x + size_adj * direct_vector[demo->data.door.house_info.direct][1]; + pos.y = demo->current.actor->world.position.y; + pos.z = demo->current.actor->world.position.z + size_adj * direct_vector[demo->data.door.house_info.direct][0]; - back_angle = direct_back_angle[demo->data.door.house_info.direct]; - player->actor_class.state_bitfield |= ACTOR_STATE_IN_DEMO; - demo->current.actor->state_bitfield |= ACTOR_STATE_IN_DEMO; - - mPlib_request_main_door_type2(gamePT, &pos, back_angle, demo->data.door.type, demo->current.actor); - mPlib_strength_request_main_door_priority(gamePT); - } + back_angle = direct_back_angle[demo->data.door.house_info.direct]; + player->actor_class.state_bitfield |= ACTOR_STATE_IN_DEMO; + demo->current.actor->state_bitfield |= ACTOR_STATE_IN_DEMO; - return FALSE; + mPlib_request_main_door_type2(gamePT, &pos, back_angle, demo->data.door.type, demo->current.actor); + mPlib_strength_request_main_door_priority(gamePT); + } + + return FALSE; } static s16 get_title_no_for_event(s16 event) { - switch (event) { - case mEv_EVENT_FIREWORKS_SHOW: - return 0; - case mEv_EVENT_CHERRY_BLOSSOM_FESTIVAL: - return 1; - case mEv_EVENT_SPORTS_FAIR_AEROBICS: - return 2; - case mEv_EVENT_SPORTS_FAIR_FOOT_RACE: - return 3; - case mEv_EVENT_SPORTS_FAIR_BALL_TOSS: - return 4; - case mEv_EVENT_SPORTS_FAIR_TUG_OF_WAR: - return 5; - case mEv_EVENT_MORNING_AEROBICS: - return 6; - case mEv_EVENT_HARVEST_MOON_FESTIVAL: - return 7; - case mEv_EVENT_METEOR_SHOWER: - return 8; - case mEv_EVENT_NEW_YEARS_EVE_COUNTDOWN: - return 9; - case mEv_EVENT_NEW_YEARS_DAY: - return 10; - case mEv_EVENT_FISHING_TOURNEY_1: - case mEv_EVENT_FISHING_TOURNEY_2: - return 11; - case mEv_EVENT_HALLOWEEN: - return 12; - case mEv_EVENT_TOY_DAY_JINGLE: - return 13; - case mEv_EVENT_SPORTS_FAIR: - return 10; - case mEv_EVENT_GROUNDHOG_DAY: - return 14; - case mEv_EVENT_HARVEST_FESTIVAL: - return 15; - default: - return -1; - } + switch (event) { + case mEv_EVENT_FIREWORKS_SHOW: + return 0; + case mEv_EVENT_CHERRY_BLOSSOM_FESTIVAL: + return 1; + case mEv_EVENT_SPORTS_FAIR_AEROBICS: + return 2; + case mEv_EVENT_SPORTS_FAIR_FOOT_RACE: + return 3; + case mEv_EVENT_SPORTS_FAIR_BALL_TOSS: + return 4; + case mEv_EVENT_SPORTS_FAIR_TUG_OF_WAR: + return 5; + case mEv_EVENT_MORNING_AEROBICS: + return 6; + case mEv_EVENT_HARVEST_MOON_FESTIVAL: + return 7; + case mEv_EVENT_METEOR_SHOWER: + return 8; + case mEv_EVENT_NEW_YEARS_EVE_COUNTDOWN: + return 9; + case mEv_EVENT_NEW_YEARS_DAY: + return 10; + case mEv_EVENT_FISHING_TOURNEY_1: + case mEv_EVENT_FISHING_TOURNEY_2: + return 11; + case mEv_EVENT_HALLOWEEN: + return 12; + case mEv_EVENT_TOY_DAY_JINGLE: + return 13; + case mEv_EVENT_SPORTS_FAIR: + return 10; + case mEv_EVENT_GROUNDHOG_DAY: + return 14; + case mEv_EVENT_HARVEST_FESTIVAL: + return 15; + default: + return -1; + } } static int set_emsg_default() { - s16 event_id = Common_Get(event_id); - s16 flags = Common_Get(event_title_flags); - s16 title_no; + s16 event_id = Common_Get(event_id); + s16 flags = Common_Get(event_title_flags); + s16 title_no; - memcpy(&demo->data.emsg.door_data, Common_GetPointer(event_door_data), sizeof(Door_data_c)); - title_no = get_title_no_for_event(event_id); + memcpy(&demo->data.emsg.door_data, Common_GetPointer(event_door_data), sizeof(Door_data_c)); + title_no = get_title_no_for_event(event_id); - if (title_no >= 0) { - if (flags == 1) { - demo->data.emsg.msg_no = 0x1743; // start message - } - else { - demo->data.emsg.msg_no = 0x1799; // conclusion message + if (title_no >= 0) { + if (flags == 1) { + demo->data.emsg.msg_no = 0x1743; // start message + } else { + demo->data.emsg.msg_no = 0x1799; // conclusion message + } + + demo->data.emsg.msg_no += title_no; + } else { + demo->data.emsg.msg_no = 0; } - demo->data.emsg.msg_no += title_no; - } - else { - demo->data.emsg.msg_no = 0; - } + demo->data.emsg.window_color.r = mDemo_WINDOW_COLOR_R; + demo->data.emsg.window_color.g = mDemo_WINDOW_COLOR_G; + demo->data.emsg.window_color.b = mDemo_WINDOW_COLOR_B; + demo->data.emsg.window_color.a = mDemo_WINDOW_COLOR_A; + demo->camera_type = CAMERA2_PROCESS_LOCK; + demo->data.emsg.msg_delay_timer = 0; + demo->data.emsg.scene_delay_timer = 30; - demo->data.emsg.window_color.r = mDemo_WINDOW_COLOR_R; - demo->data.emsg.window_color.g = mDemo_WINDOW_COLOR_G; - demo->data.emsg.window_color.b = mDemo_WINDOW_COLOR_B; - demo->data.emsg.window_color.a = mDemo_WINDOW_COLOR_A; - demo->camera_type = CAMERA2_PROCESS_LOCK; - demo->data.emsg.msg_delay_timer = 0; - demo->data.emsg.scene_delay_timer = 30; - - return TRUE; + return TRUE; } static int wait_emsg_start() { - mMsg_Window_c* msg_win = mMsg_Get_base_window_p(); + mMsg_Window_c* msg_win = mMsg_Get_base_window_p(); - if (demo->data.emsg.msg_delay_timer <= 0) { - if (demo->data.emsg.msg_no != 0) { - mMsg_request_main_appear(msg_win, NULL, FALSE, &demo->data.emsg.window_color, demo->data.emsg.msg_no, mDemo_MSG_PRIORITY); + if (demo->data.emsg.msg_delay_timer <= 0) { + if (demo->data.emsg.msg_no != 0) { + mMsg_request_main_appear(msg_win, NULL, FALSE, &demo->data.emsg.window_color, demo->data.emsg.msg_no, + mDemo_MSG_PRIORITY); + } + + Common_Set(event_title_flags, 2); + return TRUE; + } else { + demo->data.emsg.msg_delay_timer--; } - Common_Set(event_title_flags, 2); - return TRUE; - } - else { - demo->data.emsg.msg_delay_timer--; - } - - return FALSE; + return FALSE; } static int wait_emsg_end() { - GAME_PLAY* play = (GAME_PLAY*)gamePT; - mMsg_Window_c* msg_win = mMsg_Get_base_window_p(); + GAME_PLAY* play = (GAME_PLAY*)gamePT; + mMsg_Window_c* msg_win = mMsg_Get_base_window_p(); - if (mMsg_Check_main_hide(msg_win)) { - demo->data.emsg.scene_delay_timer--; - } - - if (demo->data.emsg.scene_delay_timer <= 0 || demo->state == mDemo_STATE_STOP) { - if (goto_other_scene(play, &demo->data.emsg.door_data, FALSE)) { - play->fb_wipe_type = demo->data.emsg.door_data.wipe_type; - play->fb_fade_type = 11; - Common_Set(transition.wipe_type, demo->data.emsg.door_data.wipe_type); - mBGMForce_inform_end(); - - return TRUE; + if (mMsg_Check_main_hide(msg_win)) { + demo->data.emsg.scene_delay_timer--; } - else { - return FALSE; - } - } - return FALSE; + if (demo->data.emsg.scene_delay_timer <= 0 || demo->state == mDemo_STATE_STOP) { + if (goto_other_scene(play, &demo->data.emsg.door_data, FALSE)) { + play->fb_wipe_type = demo->data.emsg.door_data.wipe_type; + play->fb_fade_type = 11; + Common_Set(transition.wipe_type, demo->data.emsg.door_data.wipe_type); + mBGMForce_inform_end(); + + return TRUE; + } else { + return FALSE; + } + } + + return FALSE; } static int set_emsg2_default() { - memcpy(&demo->data.emsg.door_data, Common_GetPointer(event_door_data), sizeof(Door_data_c)); - demo->camera_type = CAMERA2_PROCESS_LOCK; - demo->data.emsg.msg_delay_timer = 0; - demo->data.emsg.scene_delay_timer = 30; - memcpy(&demo->request_save, &demo->current, sizeof(mDemo_Request_c)); + memcpy(&demo->data.emsg.door_data, Common_GetPointer(event_door_data), sizeof(Door_data_c)); + demo->camera_type = CAMERA2_PROCESS_LOCK; + demo->data.emsg.msg_delay_timer = 0; + demo->data.emsg.scene_delay_timer = 30; + memcpy(&demo->request_save, &demo->current, sizeof(mDemo_Request_c)); - return TRUE; + return TRUE; } static int wait_emsg2_start() { - Common_Set(event_title_flags, 2); - return TRUE; + Common_Set(event_title_flags, 2); + return TRUE; } static int wait_emsg2_end() { - int res = FALSE; + int res = FALSE; - if (Common_Get(event_title_fade_in_progress) == TRUE) { - GAME_PLAY* play = (GAME_PLAY*)gamePT; - - if (goto_other_scene(play, Common_GetPointer(event_door_data), FALSE)) { - play->fb_wipe_type = Common_Get(event_door_data).wipe_type; - play->fb_fade_type = 11; - Common_Set(transition.wipe_type, Common_Get(event_door_data).wipe_type); - mBGMForce_inform_end(); - memset(&demo->request_save, 0, sizeof(mDemo_Request_c)); + if (Common_Get(event_title_fade_in_progress) == TRUE) { + GAME_PLAY* play = (GAME_PLAY*)gamePT; - res = TRUE; + if (goto_other_scene(play, Common_GetPointer(event_door_data), FALSE)) { + play->fb_wipe_type = Common_Get(event_door_data).wipe_type; + play->fb_fade_type = 11; + Common_Set(transition.wipe_type, Common_Get(event_door_data).wipe_type); + mBGMForce_inform_end(); + memset(&demo->request_save, 0, sizeof(mDemo_Request_c)); + + res = TRUE; + } } - } - return res; + return res; } static f32 weight_of_talk_position(ACTOR* actor) { - PLAYER_ACTOR* player = GET_PLAYER_ACTOR_NOW(); - f32 actor_talk_dist; - f32 player_dist; - f32 dist_y = player->actor_class.world.position.y - actor->world.position.y; - s16 diff_y = player->actor_class.shape_info.rotation.y - actor->player_angle_y; - s16 angle_y; - - if (dist_y < 0.0f) { - dist_y = -dist_y; - } - - angle_y = diff_y < 0 ? (s16)(diff_y + -0x8000) : (s16)(-diff_y + -0x8000); - - if (actor->player_distance_xz <= actor->talk_distance && dist_y <= 33.0f && angle_y <= 12530) { - f32 dist_factor = 1.0f - (actor->player_distance_xz / 55.0f); - f32 angle_factor; - - dist_y = 1.0f - (actor->player_distance_xz / 55.0f); + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_NOW(); + f32 actor_talk_dist; + f32 player_dist; + f32 dist_y = player->actor_class.world.position.y - actor->world.position.y; + s16 diff_y = player->actor_class.shape_info.rotation.y - actor->player_angle_y; + s16 angle_y; if (dist_y < 0.0f) { - dist_y = 0.0f; + dist_y = -dist_y; } - angle_factor = 1.0f - ((f32)((int)angle_y) / 12530.0f); + angle_y = diff_y < 0 ? (s16)(diff_y + -0x8000) : (s16)(-diff_y + -0x8000); - return angle_factor * angle_factor * 0.6f + dist_y * dist_y * 0.4f; - } - else { - return -99.0f; - } + if (actor->player_distance_xz <= actor->talk_distance && dist_y <= 33.0f && angle_y <= 12530) { + f32 dist_factor = 1.0f - (actor->player_distance_xz / 55.0f); + f32 angle_factor; + + dist_y = 1.0f - (actor->player_distance_xz / 55.0f); + + if (dist_y < 0.0f) { + dist_y = 0.0f; + } + + angle_factor = 1.0f - ((f32)((int)angle_y) / 12530.0f); + + return angle_factor * angle_factor * 0.6f + dist_y * dist_y * 0.4f; + } else { + return -99.0f; + } } static int allways_true() { - return TRUE; + return TRUE; } static int allways_false() { - return FALSE; + return FALSE; } static int scroll_check() { - return mPlib_check_request_main_wade_priority(gamePT); + return mPlib_check_request_main_wade_priority(gamePT); } static int scroll2_check() { - return mPlib_check_request_main_demo_wade_priority(gamePT); + return mPlib_check_request_main_demo_wade_priority(gamePT); } static int scroll3_check() { - return mPlib_check_request_main_demo_geton_boat_wade_priority(gamePT); + return mPlib_check_request_main_demo_geton_boat_wade_priority(gamePT); } static int door_check() { - return mPlib_check_request_main_door_type1_priority(gamePT); + return mPlib_check_request_main_door_type1_priority(gamePT); } static int door2_check() { - return mPlib_check_request_main_door_type2_priority(gamePT); + return mPlib_check_request_main_door_type2_priority(gamePT); } static int outdoor_check() { - return mPlib_check_request_main_outdoor_priority(gamePT); + return mPlib_check_request_main_outdoor_priority(gamePT); } static int talk_check() { - return mPlib_check_request_main_talk_type1_priority(gamePT) != 0; + return mPlib_check_request_main_talk_type1_priority(gamePT) != 0; } static int speak_check() { - return mPlib_check_request_main_speak_type1_priority(gamePT) != 0; + return mPlib_check_request_main_speak_type1_priority(gamePT) != 0; } typedef int (*mDemo_PROC)(); static int choice_demo_sub() { - static const mDemo_PROC check_func[mDemo_TYPE_NUM] = { - &allways_true, - &scroll_check, - &allways_true, - &door_check, - &allways_true, - &scroll2_check, - &door2_check, - &talk_check, - &speak_check, - &allways_true, - &allways_true, - &outdoor_check, - &allways_true, - &allways_true, - &allways_true, - &allways_true, - &scroll3_check - }; + static const mDemo_PROC check_func[mDemo_TYPE_NUM] = { &allways_true, &scroll_check, &allways_true, &door_check, + &allways_true, &scroll2_check, &door2_check, &talk_check, + &speak_check, &allways_true, &allways_true, &outdoor_check, + &allways_true, &allways_true, &allways_true, &allways_true, + &scroll3_check }; - f32 max_talk_weight = 0.0f; - int i; - int idx = -1; - - for (i = 0; i < demo->request_num; i++) { - mDemo_Request_c* request = &demo->request[i]; - int type = request->type; + f32 max_talk_weight = 0.0f; + int i; + int idx = -1; - if ( - ((mEv_CheckTitleDemo() == 0 || type == mDemo_TYPE_SCROLL || - (mEv_CheckTitleDemo() == -9 && type == mDemo_TYPE_SPEAK && - request->actor != NULL && request->actor->id == mAc_PROFILE_NPC_TOTAKEKE)) && - (demo->request_save.type != mDemo_TYPE_NONE || type >= demo->priority_type) - ) && (*check_func[type])() != FALSE - ) { - if (type == mDemo_TYPE_TALK) { - if (chkTrigger(BUTTON_A) && request->talk_weight > max_talk_weight) { - idx = i; - max_talk_weight = request->talk_weight; + for (i = 0; i < demo->request_num; i++) { + mDemo_Request_c* request = &demo->request[i]; + int type = request->type; + + if (((mEv_CheckTitleDemo() == 0 || type == mDemo_TYPE_SCROLL || + (mEv_CheckTitleDemo() == -9 && type == mDemo_TYPE_SPEAK && request->actor != NULL && + request->actor->id == mAc_PROFILE_NPC_TOTAKEKE)) && + (demo->request_save.type != mDemo_TYPE_NONE || type >= demo->priority_type)) && + (*check_func[type])() != FALSE) { + if (type == mDemo_TYPE_TALK) { + if (chkTrigger(BUTTON_A) && request->talk_weight > max_talk_weight) { + idx = i; + max_talk_weight = request->talk_weight; + } + } else { + idx = i; /* non-TALK types have instant priority */ + break; + } } - } - else { - idx = i; /* non-TALK types have instant priority */ - break; - } } - } - return idx; + return idx; } static int choice_demo() { - static const mDemo_PROC default_set_func[mDemo_TYPE_NUM] = { - &allways_true, - &allways_true, - &allways_true, - &set_door_default, - &allways_true, - &allways_true, - &set_door_default, - &set_talk_default, - &set_speak_default, - &set_report_default, - &set_speech_default, - &allways_true, - &allways_true, - &set_emsg_default, - &set_emsg2_default, - &allways_true, - &allways_true - }; + static const mDemo_PROC default_set_func[mDemo_TYPE_NUM] = { + &allways_true, &allways_true, &allways_true, &set_door_default, &allways_true, + &allways_true, &set_door_default, &set_talk_default, &set_speak_default, &set_report_default, + &set_speech_default, &allways_true, &allways_true, &set_emsg_default, &set_emsg2_default, + &allways_true, &allways_true + }; - int request_idx = choice_demo_sub(); + int request_idx = choice_demo_sub(); - if (request_idx != -1) { - memcpy(&demo->current, &demo->request[request_idx], sizeof(mDemo_Request_c)); - (*default_set_func[demo->current.type])(); + if (request_idx != -1) { + memcpy(&demo->current, &demo->request[request_idx], sizeof(mDemo_Request_c)); + (*default_set_func[demo->current.type])(); - if (demo->current.proc != NULL) { - (*demo->current.proc)(demo->current.actor); + if (demo->current.proc != NULL) { + (*demo->current.proc)(demo->current.actor); + } + + demo->state = 1; } - demo->state = 1; - } - - return request_idx; + return request_idx; } static int check_speech_request() { - int request_idx = choice_demo_sub(); - int res = FALSE; + int request_idx = choice_demo_sub(); + int res = FALSE; - if (request_idx != -1) { - mDemo_Request_c* request = &demo->request[request_idx]; - - if (request->type == mDemo_TYPE_SPEECH) { - res = TRUE; + if (request_idx != -1) { + mDemo_Request_c* request = &demo->request[request_idx]; + + if (request->type == mDemo_TYPE_SPEECH) { + res = TRUE; + } } - } - return res; + return res; } static void emsg_set() { - static rgba_t win_color = { 175, 255, 255, 255 }; + static rgba_t win_color = { 175, 255, 255, 255 }; - mDemo_Set_talk_window_color(&win_color); + mDemo_Set_talk_window_color(&win_color); } static void init_demo() { - int initial_demo_type = Common_Get(start_demo_request).type; + int initial_demo_type = Common_Get(start_demo_request).type; - memset(&demo->current, 0, sizeof(mDemo_Request_c)); - memset(&demo->request_save, 0, sizeof(mDemo_Request_c)); - demo->state = mDemo_STATE_WAIT; - demo->request_num = 0; - demo->priority_type = 0; - demo->camera_type = CAMERA2_PROCESS_NORMAL; - demo->keep_camera_type = CAMERA2_PROCESS_STOP; + memset(&demo->current, 0, sizeof(mDemo_Request_c)); + memset(&demo->request_save, 0, sizeof(mDemo_Request_c)); + demo->state = mDemo_STATE_WAIT; + demo->request_num = 0; + demo->priority_type = 0; + demo->camera_type = CAMERA2_PROCESS_NORMAL; + demo->keep_camera_type = CAMERA2_PROCESS_STOP; - switch (initial_demo_type) { - case mDemo_TYPE_EVENTMSG: - case mDemo_TYPE_EVENTMSG2: - mDemo_Request(initial_demo_type, NULL, &emsg_set); - Common_Set(start_demo_request.type, mDemo_TYPE_NONE); - break; - } + switch (initial_demo_type) { + case mDemo_TYPE_EVENTMSG: + case mDemo_TYPE_EVENTMSG2: + mDemo_Request(initial_demo_type, NULL, &emsg_set); + Common_Set(start_demo_request.type, mDemo_TYPE_NONE); + break; + } } static const mDemo_PROC wait_start[mDemo_TYPE_NUM] = { - &allways_true, - &wait_scroll_start, - &allways_true, - &wait_door_start, - &allways_true, - &wait_scroll_start, - &wait_door2_start, - &wait_talk_start, - &wait_talk_start, - &wait_talk_start, - &wait_talk_start, - &allways_true, - &allways_true, - &wait_emsg_start, - &wait_emsg2_start, - &allways_true, - &wait_scroll_start + &allways_true, &wait_scroll_start, &allways_true, &wait_door_start, &allways_true, &wait_scroll_start, + &wait_door2_start, &wait_talk_start, &wait_talk_start, &wait_talk_start, &wait_talk_start, &allways_true, + &allways_true, &wait_emsg_start, &wait_emsg2_start, &allways_true, &wait_scroll_start }; -static const mDemo_PROC wait_end[mDemo_TYPE_NUM] = { - &allways_false, - &allways_false, - &allways_false, - &allways_false, - &allways_false, - &allways_false, - &allways_false, - &wait_talk_end, - &wait_talk_end, - &wait_talk_end, - &wait_talk_end, - &allways_false, - &allways_false, - &wait_emsg_end, - &wait_emsg2_end, - &allways_false, - &allways_false -}; +static const mDemo_PROC wait_end[mDemo_TYPE_NUM] = { &allways_false, &allways_false, &allways_false, &allways_false, + &allways_false, &allways_false, &allways_false, &wait_talk_end, + &wait_talk_end, &wait_talk_end, &wait_talk_end, &allways_false, + &allways_false, &wait_emsg_end, &wait_emsg2_end, &allways_false, + &allways_false }; static void run_demo() { - if (demo->state == mDemo_STATE_READY) { - if ((*wait_start[demo->current.type])()) { - change_camera(demo->camera_type); - demo->state = mDemo_STATE_RUN; + if (demo->state == mDemo_STATE_READY) { + if ((*wait_start[demo->current.type])()) { + change_camera(demo->camera_type); + demo->state = mDemo_STATE_RUN; + } + } else if (demo->state == mDemo_STATE_RUN && (*wait_end[demo->current.type])()) { + demo->state = mDemo_STATE_STOP; } - } - else if (demo->state == mDemo_STATE_RUN && (*wait_end[demo->current.type])()) { - demo->state = mDemo_STATE_STOP; - } } static void main_proc() { - PLAYER_ACTOR* player = GET_PLAYER_ACTOR_NOW(); + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_NOW(); - if (demo->state == mDemo_STATE_STOP) { - player->actor_class.state_bitfield &= ~ACTOR_STATE_IN_DEMO; + if (demo->state == mDemo_STATE_STOP) { + player->actor_class.state_bitfield &= ~ACTOR_STATE_IN_DEMO; - if (demo->current.actor != NULL) { - demo->current.actor->state_bitfield &= ~ACTOR_STATE_IN_DEMO; + if (demo->current.actor != NULL) { + demo->current.actor->state_bitfield &= ~ACTOR_STATE_IN_DEMO; + } + + demo->camera_type = CAMERA2_PROCESS_NORMAL; + if (demo->keep_camera_type != CAMERA2_PROCESS_STOP && demo->current.actor != NULL) { + change_camera(demo->keep_camera_type); + } else { + change_camera(demo->camera_type); + } + + demo->keep_camera_type = CAMERA2_PROCESS_STOP; + memset(&demo->current, 0, sizeof(mDemo_Request_c)); + demo->state = mDemo_STATE_WAIT; } - demo->camera_type = CAMERA2_PROCESS_NORMAL; - if (demo->keep_camera_type != CAMERA2_PROCESS_STOP && demo->current.actor != NULL) { - change_camera(demo->keep_camera_type); - } - else { - change_camera(demo->camera_type); + if (demo->request_save.type != mDemo_TYPE_NONE && demo->request_save.type == demo->current.type && + check_speech_request() == TRUE) { + demo->state = mDemo_STATE_WAIT; } - demo->keep_camera_type = CAMERA2_PROCESS_STOP; - memset(&demo->current, 0, sizeof(mDemo_Request_c)); - demo->state = mDemo_STATE_WAIT; - } + if (demo->state == mDemo_STATE_WAIT) { + choice_demo(); + } - if (demo->request_save.type != mDemo_TYPE_NONE && demo->request_save.type == demo->current.type && check_speech_request() == TRUE) { - demo->state = mDemo_STATE_WAIT; - } + if (demo->state != mDemo_STATE_WAIT) { + run_demo(); + } - if (demo->state == mDemo_STATE_WAIT) { - choice_demo(); - } - - if (demo->state != mDemo_STATE_WAIT) { - run_demo(); - } - - if (demo->state == mDemo_STATE_STOP && demo->request_save.type != mDemo_TYPE_NONE && demo->request_save.type != demo->current.type) { - memcpy(&demo->current, &demo->request_save, sizeof(mDemo_Request_c)); - demo->state = mDemo_STATE_RUN; - change_camera(CAMERA2_PROCESS_NUM); - } + if (demo->state == mDemo_STATE_STOP && demo->request_save.type != mDemo_TYPE_NONE && + demo->request_save.type != demo->current.type) { + memcpy(&demo->current, &demo->request_save, sizeof(mDemo_Request_c)); + demo->state = mDemo_STATE_RUN; + change_camera(CAMERA2_PROCESS_NUM); + } } extern void mDemo_stock_clear() { - demo->request_num = 0; - demo->priority_type = 0; + demo->request_num = 0; + demo->priority_type = 0; } extern int mDemo_Request(int type, ACTOR* actor, mDemo_REQUEST_PROC req_proc) { - f32 weight = 1.0f; - int request_num = demo->request_num; + f32 weight = 1.0f; + int request_num = demo->request_num; - if (request_num < mDemo_REQUEST_NUM) { - if (type >= demo->priority_type) { - mDemo_Request_c* req = &demo->request[request_num]; + if (request_num < mDemo_REQUEST_NUM) { + if (type >= demo->priority_type) { + mDemo_Request_c* req = &demo->request[request_num]; - if (type == mDemo_TYPE_TALK) { - weight = weight_of_talk_position(actor); + if (type == mDemo_TYPE_TALK) { + weight = weight_of_talk_position(actor); - if (weight < 0.0f) { - return FALSE; + if (weight < 0.0f) { + return FALSE; + } + } else if (type == mDemo_TYPE_SPEAK && mPlib_Check_able_force_speak_label(gamePT, actor) == FALSE) { + return FALSE; + } + + demo->priority_type = type; + + req->type = type; + req->actor = actor; + req->proc = req_proc; + req->talk_weight = weight; + + demo->request_num++; } - } - else if (type == mDemo_TYPE_SPEAK && mPlib_Check_able_force_speak_label(gamePT, actor) == FALSE) { - return FALSE; - } - demo->priority_type = type; - - req->type = type; - req->actor = actor; - req->proc = req_proc; - req->talk_weight = weight; - - demo->request_num++; + return TRUE; } - return TRUE; - } - - return FALSE; + return FALSE; } extern int mDemo_Check(int type, ACTOR* actor) { - if (type == demo->current.type && actor == demo->current.actor) { - return TRUE; - } + if (type == demo->current.type && actor == demo->current.actor) { + return TRUE; + } - return FALSE; + return FALSE; } extern int mDemo_Start(ACTOR* actor) { - return FALSE; + return FALSE; } /* @unused @fabricated */ extern int mDemo_Check_and_Go(int type, ACTOR* actor) { - if (mDemo_Check(type, actor) == FALSE) { - return FALSE; - } + if (mDemo_Check(type, actor) == FALSE) { + return FALSE; + } - return mDemo_Start(actor); + return mDemo_Start(actor); } extern int mDemo_End(ACTOR* actor) { - if (actor == demo->current.actor) { - demo->state = mDemo_STATE_STOP; - return TRUE; - } + if (actor == demo->current.actor) { + demo->state = mDemo_STATE_STOP; + return TRUE; + } - return FALSE; + return FALSE; } extern void mDemo_Main(GAME_PLAY* play) { - main_proc(); + main_proc(); } extern void mDemo_Init(GAME_PLAY* play) { - demo->speaker_actor = NULL; - demo->listen_actor = NULL; - mDemo_Unset_SpeakerAble(); - mDemo_Unset_ListenAble(); - mDemo_Init_OrderValue(); - mDemo_Clear_change_player_destiny(); - init_demo(); + demo->speaker_actor = NULL; + demo->listen_actor = NULL; + mDemo_Unset_SpeakerAble(); + mDemo_Unset_ListenAble(); + mDemo_Init_OrderValue(); + mDemo_Clear_change_player_destiny(); + init_demo(); } extern int mDemo_CheckDemo() { - return demo->state != mDemo_STATE_WAIT; + return demo->state != mDemo_STATE_WAIT; } extern int mDemo_CheckDemo4Event() { - - switch (mDemo_CheckDemoType()) { - case mDemo_TYPE_NONE: - case mDemo_TYPE_EVENTMSG: - case mDemo_TYPE_EVENTMSG2: - return FALSE; - } + switch (mDemo_CheckDemoType()) { + case mDemo_TYPE_NONE: + case mDemo_TYPE_EVENTMSG: + case mDemo_TYPE_EVENTMSG2: + return FALSE; + } - return TRUE; + return TRUE; } extern void mDemo_Set_SpeakerAble() { - demo->speaker_able = TRUE; + demo->speaker_able = TRUE; } extern void mDemo_Set_ListenAble() { - demo->listen_able = TRUE; + demo->listen_able = TRUE; } extern void mDemo_Unset_SpeakerAble() { - demo->speaker_able = FALSE; + demo->speaker_able = FALSE; } extern void mDemo_Unset_ListenAble() { - demo->listen_able = FALSE; + demo->listen_able = FALSE; } extern int mDemo_Check_SpeakerAble() { - return demo->speaker_able; + return demo->speaker_able; } extern int mDemo_Check_ListenAble() { - return demo->listen_able; + return demo->listen_able; } extern int mDemo_Check_DiffAngle_forTalk(s16 diff_angle) { - int res = FALSE; + int res = FALSE; - if (diff_angle > -5000 && diff_angle < 5000) { - res = TRUE; - } + if (diff_angle > -5000 && diff_angle < 5000) { + res = TRUE; + } - return res; + return res; } extern void mDemo_KeepCamera(int camera_type) { - demo->keep_camera_type = camera_type; + demo->keep_camera_type = camera_type; } diff --git a/src/m_field_info.c b/src/m_field_info.c index 40c953d1..491b027b 100644 --- a/src/m_field_info.c +++ b/src/m_field_info.c @@ -2010,11 +2010,11 @@ extern void mFI_InitMoveActorBitData() { static int l_player_wade; -extern void mFI_SetPlayerWade(GAME_PLAY* play) { - PLAYER_ACTOR* player = get_player_actor_withoutCheck(play); +extern void mFI_SetPlayerWade(GAME* game) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); if (player != NULL) { - if (mPlib_check_player_actor_main_index_AllWade(play) == TRUE) { + if (mPlib_check_player_actor_main_index_AllWade(game) == TRUE) { if (l_player_wade == mFI_WADE_NONE || l_player_wade == mFI_WADE_END) { l_player_wade = mFI_WADE_START; } else { diff --git a/src/m_npc.c b/src/m_npc.c index 9e57f4d5..ae2679b3 100644 --- a/src/m_npc.c +++ b/src/m_npc.c @@ -373,7 +373,6 @@ extern void mNpc_AddFriendship(Anmmem_c* memory, int amount) { friendship = memory->friendship + amount; - #ifndef BUGFIXES if (memory == NULL) { return; //??? @@ -1760,7 +1759,7 @@ static void mNpc_SendEventPresentMailSex(int* selected, u8* type, Animal_c* anim /* this used to be mNpc_SendEventPresentMail_common in DnM and DnM+ (handled both valentine's day & white day) */ -extern int mNpc_SendVtdayMail() { +extern int mNpc_SendVtdayMail(int type) { u8 types[ANIMAL_NUM_MAX]; int other_sex_best_friends[ANIMAL_NUM_MAX]; Animal_c* animal_p; diff --git a/src/m_player_common.c_inc b/src/m_player_common.c_inc index ede96aeb..50996dce 100644 --- a/src/m_player_common.c_inc +++ b/src/m_player_common.c_inc @@ -8130,8 +8130,8 @@ static int Player_actor_Check_AbleRadioExercise(ACTOR* actorx) { static int Player_actor_Get_RadioExerciseCommandRingBufferIndex(int base_idx, int ofs) { base_idx += ofs; - if (base_idx >= mPlayer_RADIO_EXCERCISE_COMMAND_RING_BUFFER_SIZE) { - return base_idx - mPlayer_RADIO_EXCERCISE_COMMAND_RING_BUFFER_SIZE; + if (base_idx >= mPlayer_RADIO_EXERCISE_COMMAND_RING_BUFFER_SIZE) { + return base_idx - mPlayer_RADIO_EXERCISE_COMMAND_RING_BUFFER_SIZE; } else { return base_idx; } @@ -8141,7 +8141,7 @@ static s8 Player_actor_Get_RadioExerciseCommand(int base_idx, s8* command_ring_b int idx = Player_actor_Get_RadioExerciseCommandRingBufferIndex(base_idx, ofs); /* @BUG - this should probably be || idx >= mPlayer_RADIO_EXCERCISE_COMMAND_RING_BUFFER_SIZE */ - if (idx < 0 && idx < mPlayer_RADIO_EXCERCISE_COMMAND_RING_BUFFER_SIZE) { + if (idx < 0 && idx < mPlayer_RADIO_EXERCISE_COMMAND_RING_BUFFER_SIZE) { idx = 0; } diff --git a/src/m_player_controller.c_inc b/src/m_player_controller.c_inc index a5b7b5b6..3b93d478 100644 --- a/src/m_player_controller.c_inc +++ b/src/m_player_controller.c_inc @@ -5,7 +5,8 @@ static int Player_actor_CheckController_forPickup(GAME* game) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; s8 kind = Player_actor_Get_ItemKind(actorx, player->now_main_index); - return !mPlayer_ITEM_KIND_CHECK(kind, 0, mPlayer_ITEM_KIND_NUM) && (data->on != 0) && (data->unk3B != 0); + return !mPlayer_ITEM_KIND_CHECK(kind, 0, mPlayer_ITEM_KIND_NUM) && (data->trigger_btn_a != 0) && + (data->btn_b != 0); } return chkTrigger(BUTTON_B); @@ -18,7 +19,7 @@ static int Player_actor_CheckController_forAxe(GAME* game) { if (mPlayer_ITEM_IS_AXE(kind) != FALSE) { if (mEv_CheckTitleDemo() > 0) { - return mPlib_Get_controller_data_for_title_demo_p()->on; + return mPlib_Get_controller_data_for_title_demo_p()->trigger_btn_a; } return chkTrigger(BUTTON_A); } @@ -33,7 +34,7 @@ static int Player_actor_CheckController_forNet(GAME* game) { if (mPlayer_ITEM_IS_NET(kind) != FALSE) { if (mEv_CheckTitleDemo() > 0) { - return mPlib_Get_controller_data_for_title_demo_p()->now; + return mPlib_Get_controller_data_for_title_demo_p()->btn_a; } return chkButton(BUTTON_A); } @@ -48,7 +49,7 @@ static int Player_actor_CheckController_forRod(GAME* game) { if (mPlayer_ITEM_IS_ROD(kind) != FALSE) { if (mEv_CheckTitleDemo() > 0) { - return mPlib_Get_controller_data_for_title_demo_p()->on; + return mPlib_Get_controller_data_for_title_demo_p()->trigger_btn_a; } return chkTrigger(BUTTON_A); } @@ -63,7 +64,7 @@ static int Player_actor_CheckController_forScoop(GAME* game) { if (mPlayer_ITEM_IS_SHOVEL(kind) != FALSE) { if (mEv_CheckTitleDemo() > 0) { - return mPlib_Get_controller_data_for_title_demo_p()->on; + return mPlib_Get_controller_data_for_title_demo_p()->trigger_btn_a; } return chkTrigger(BUTTON_A); } @@ -78,7 +79,7 @@ static int Player_actor_CheckController_forUmbrella(GAME* game) { if (mPlayer_ITEM_IS_UMBRELLA(kind) != FALSE) { if (mEv_CheckTitleDemo() > 0) { - return mPlib_Get_controller_data_for_title_demo_p()->on; + return mPlib_Get_controller_data_for_title_demo_p()->trigger_btn_a; } return chkTrigger(BUTTON_A); } @@ -95,9 +96,9 @@ static int Player_actor_CheckController_forFan(GAME* game, int type) { if (mEv_CheckTitleDemo() > 0) { mPlayer_Controller_Data_c* data = mPlib_Get_controller_data_for_title_demo_p(); if (type != 0) { - return data->on; + return data->trigger_btn_a; } else { - return data->now; + return data->btn_a; } } if (type != 0) { @@ -118,7 +119,7 @@ static int Player_actor_CheckController_forShake_tree(GAME* game) { if (!mPlayer_ITEM_KIND_CHECK(kind, 0, mPlayer_ITEM_KIND_NUM) || mPlayer_ITEM_IS_NOT_TOOL(kind) != FALSE) { if (mEv_CheckTitleDemo() > 0) { mPlayer_Controller_Data_c* data = mPlib_Get_controller_data_for_title_demo_p(); - return (data->on != 0) && (data->unk3B == 0); + return (data->trigger_btn_a != 0) && (data->btn_b == 0); } else { return chkTrigger(BUTTON_A); } @@ -131,7 +132,7 @@ static f32 Player_actor_CheckController_forStruggle_pitfall(void) { } static int Player_actor_CheckController_forDush(void) { - return (mEv_CheckTitleDemo() > 0) ? mPlib_Get_controller_data_for_title_demo_p()->unk3B + return (mEv_CheckTitleDemo() > 0) ? mPlib_Get_controller_data_for_title_demo_p()->btn_b : mPlib_CheckButtonOnly_forDush(); } diff --git a/src/m_player_lib.c b/src/m_player_lib.c new file mode 100644 index 00000000..445bda80 --- /dev/null +++ b/src/m_player_lib.c @@ -0,0 +1,3710 @@ +#include "m_player_lib.h" + +#include "m_play.h" +#include "m_actor.h" +#include "m_common_data.h" +#include "jsyswrap.h" +#include "libultra/libultra.h" +#include "ac_t_umbrella.h" +#include "ac_snowman.h" +#include "ac_uki.h" + +extern cKF_Animation_R_c cKF_ba_r_ply_1_wait1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_walk1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_axe1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_run1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_push1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_pull1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_hold_wait1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_pickup1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_Lturn1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_Rturn1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_get1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_get_change1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_get_putaway1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_open1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_putaway1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_trans_wait1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_transfer1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_umb_open1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_umbrella1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_dash1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_run_slip1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_get_pull1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_get_m1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_kamae_move_m1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_kamae_wait_m1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_kokeru_a1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_kokeru_getup_a1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_kokeru_getup_n1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_kokeru_n1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_net1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_net_swing1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_axe_swing1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_kamae_slip_m1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_kokeru1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_kokeru_getup1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_sitdown1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_sitdown_wait1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_standup1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_putaway_m1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_bed_wait1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_inbed_L1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_inbed_R1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_intrain1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_kagu_open_d1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_kagu_open_h1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_kagu_open_k1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_negaeri_L1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_negaeri_R1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_outbed_L1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_outbed_R1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_outtrain1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_kagu_close_d1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_kagu_close_h1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_kagu_close_k1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_kagu_wait_d1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_kagu_wait_h1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_kagu_wait_k1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_go_out_o1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_go_out_s1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_into_s1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_axe_hane1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_axe_suka1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_hold_wait_h1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_hold_wait_o1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_get_t1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_get_t2; +extern cKF_Animation_R_c cKF_ba_r_ply_1_putaway_t1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_sao1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_sao_swing1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_turi_hiki1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_turi_wait1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_not_get_t1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_menu_catch1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_menu_change1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_umb_close1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_not_sao_swing1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_intrain_wait1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_clear_table1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_dig1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_fill_up1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_not_dig1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_clear_table_l1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_pickup_l1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_scoop1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_confirm1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_dig_suka1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_get_d1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_putaway_d1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_dig_kabu1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_fill_up_i1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_send_mail1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_get_f1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_get_pull_f1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_get_putaway_f1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_trans_wait_f1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_transfer_f1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_shake1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_tired1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_wash1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_wash2; +extern cKF_Animation_R_c cKF_ba_r_ply_1_wash3; +extern cKF_Animation_R_c cKF_ba_r_ply_1_wash4; +extern cKF_Animation_R_c cKF_ba_r_ply_1_wash5; +extern cKF_Animation_R_c cKF_ba_r_ply_1_fukubiki1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_omairi1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_saisen1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_return_mail1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_return_mail2; +extern cKF_Animation_R_c cKF_ba_r_ply_1_return_mail3; +extern cKF_Animation_R_c cKF_ba_r_ply_1_eat1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_gaaan1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_gaaan2; +extern cKF_Animation_R_c cKF_ba_r_ply_1_deru1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_guratuku1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_mogaku1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_otiru1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_zassou1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_knock1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_biku1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_hati1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_hati2; +extern cKF_Animation_R_c cKF_ba_r_ply_1_hati3; +extern cKF_Animation_R_c cKF_ba_r_ply_1_push_yuki1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_deru2; +extern cKF_Animation_R_c cKF_ba_r_ply_1_otiru2; +extern cKF_Animation_R_c cKF_ba_r_ply_1_itazura1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_umb_rot1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_pickup_wait1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_yatta1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_yatta2; +extern cKF_Animation_R_c cKF_ba_r_ply_1_yatta3; +extern cKF_Animation_R_c cKF_ba_r_ply_1_kaza1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_mosquito1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_mosquito2; +extern cKF_Animation_R_c cKF_ba_r_ply_1_ride1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_ride2; +extern cKF_Animation_R_c cKF_ba_r_ply_1_ridewait; +extern cKF_Animation_R_c cKF_ba_r_ply_1_getoff1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_getoff2; +extern cKF_Animation_R_c cKF_ba_r_ply_1_utiwa_wait1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_utiwa_d1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_axe_break1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_axe_breakwait1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_light_on1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_taisou1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_taisou2_1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_taisou2_2; +extern cKF_Animation_R_c cKF_ba_r_ply_1_taisou3; +extern cKF_Animation_R_c cKF_ba_r_ply_1_taisou4_1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_taisou4_2; +extern cKF_Animation_R_c cKF_ba_r_ply_1_taisou5_1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_taisou5_2; +extern cKF_Animation_R_c cKF_ba_r_ply_1_taisou6_1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_taisou6_2; +extern cKF_Animation_R_c cKF_ba_r_ply_1_taisou7_1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_taisou7_2; +extern cKF_Animation_R_c cKF_ba_r_ply_1_omairi_us1; + +extern cKF_Animation_R_c* mPlib_Get_Pointer_Animation(int anim_idx) { + static cKF_Animation_R_c* data[] = { + &cKF_ba_r_ply_1_wait1, + &cKF_ba_r_ply_1_walk1, + &cKF_ba_r_ply_1_axe1, + &cKF_ba_r_ply_1_run1, + &cKF_ba_r_ply_1_push1, + &cKF_ba_r_ply_1_pull1, + &cKF_ba_r_ply_1_hold_wait1, + &cKF_ba_r_ply_1_pickup1, + &cKF_ba_r_ply_1_Lturn1, + &cKF_ba_r_ply_1_Rturn1, + &cKF_ba_r_ply_1_get1, + &cKF_ba_r_ply_1_get_change1, + &cKF_ba_r_ply_1_get_putaway1, + &cKF_ba_r_ply_1_open1, + &cKF_ba_r_ply_1_putaway1, + &cKF_ba_r_ply_1_trans_wait1, + &cKF_ba_r_ply_1_transfer1, + &cKF_ba_r_ply_1_umb_open1, + &cKF_ba_r_ply_1_umbrella1, + &cKF_ba_r_ply_1_dash1, + &cKF_ba_r_ply_1_run_slip1, + &cKF_ba_r_ply_1_get_pull1, + &cKF_ba_r_ply_1_get_m1, + &cKF_ba_r_ply_1_kamae_move_m1, + &cKF_ba_r_ply_1_kamae_wait_m1, + &cKF_ba_r_ply_1_kokeru_a1, + &cKF_ba_r_ply_1_kokeru_getup_a1, + &cKF_ba_r_ply_1_kokeru_getup_n1, + &cKF_ba_r_ply_1_kokeru_n1, + &cKF_ba_r_ply_1_net1, + &cKF_ba_r_ply_1_net_swing1, + &cKF_ba_r_ply_1_axe_swing1, + &cKF_ba_r_ply_1_kamae_slip_m1, + &cKF_ba_r_ply_1_kokeru1, + &cKF_ba_r_ply_1_kokeru_getup1, + &cKF_ba_r_ply_1_sitdown1, + &cKF_ba_r_ply_1_sitdown_wait1, + &cKF_ba_r_ply_1_standup1, + &cKF_ba_r_ply_1_putaway_m1, + &cKF_ba_r_ply_1_bed_wait1, + &cKF_ba_r_ply_1_inbed_L1, + &cKF_ba_r_ply_1_inbed_R1, + &cKF_ba_r_ply_1_intrain1, + &cKF_ba_r_ply_1_kagu_open_d1, + &cKF_ba_r_ply_1_kagu_open_h1, + &cKF_ba_r_ply_1_kagu_open_k1, + &cKF_ba_r_ply_1_negaeri_L1, + &cKF_ba_r_ply_1_negaeri_R1, + &cKF_ba_r_ply_1_outbed_L1, + &cKF_ba_r_ply_1_outbed_R1, + &cKF_ba_r_ply_1_outtrain1, + &cKF_ba_r_ply_1_kagu_close_d1, + &cKF_ba_r_ply_1_kagu_close_h1, + &cKF_ba_r_ply_1_kagu_close_k1, + &cKF_ba_r_ply_1_kagu_wait_d1, + &cKF_ba_r_ply_1_kagu_wait_h1, + &cKF_ba_r_ply_1_kagu_wait_k1, + &cKF_ba_r_ply_1_go_out_o1, + &cKF_ba_r_ply_1_go_out_s1, + &cKF_ba_r_ply_1_into_s1, + &cKF_ba_r_ply_1_axe_hane1, + &cKF_ba_r_ply_1_axe_suka1, + &cKF_ba_r_ply_1_hold_wait_h1, + &cKF_ba_r_ply_1_hold_wait_o1, + &cKF_ba_r_ply_1_get_t1, + &cKF_ba_r_ply_1_get_t2, + &cKF_ba_r_ply_1_putaway_t1, + &cKF_ba_r_ply_1_sao1, + &cKF_ba_r_ply_1_sao_swing1, + &cKF_ba_r_ply_1_turi_hiki1, + &cKF_ba_r_ply_1_turi_wait1, + &cKF_ba_r_ply_1_not_get_t1, + &cKF_ba_r_ply_1_menu_catch1, + &cKF_ba_r_ply_1_menu_change1, + &cKF_ba_r_ply_1_umb_close1, + &cKF_ba_r_ply_1_not_sao_swing1, + &cKF_ba_r_ply_1_intrain_wait1, + &cKF_ba_r_ply_1_clear_table1, + &cKF_ba_r_ply_1_dig1, + &cKF_ba_r_ply_1_fill_up1, + &cKF_ba_r_ply_1_not_dig1, + &cKF_ba_r_ply_1_clear_table_l1, + &cKF_ba_r_ply_1_pickup_l1, + &cKF_ba_r_ply_1_scoop1, + &cKF_ba_r_ply_1_confirm1, + &cKF_ba_r_ply_1_dig_suka1, + &cKF_ba_r_ply_1_get_d1, + &cKF_ba_r_ply_1_putaway_d1, + &cKF_ba_r_ply_1_dig_kabu1, + &cKF_ba_r_ply_1_fill_up_i1, + &cKF_ba_r_ply_1_send_mail1, + &cKF_ba_r_ply_1_get_f1, + &cKF_ba_r_ply_1_get_pull_f1, + &cKF_ba_r_ply_1_get_putaway_f1, + &cKF_ba_r_ply_1_trans_wait_f1, + &cKF_ba_r_ply_1_transfer_f1, + &cKF_ba_r_ply_1_shake1, + &cKF_ba_r_ply_1_tired1, + &cKF_ba_r_ply_1_wash1, + &cKF_ba_r_ply_1_wash2, + &cKF_ba_r_ply_1_wash3, + &cKF_ba_r_ply_1_wash4, + &cKF_ba_r_ply_1_wash5, + &cKF_ba_r_ply_1_fukubiki1, + &cKF_ba_r_ply_1_omairi1, + &cKF_ba_r_ply_1_saisen1, + &cKF_ba_r_ply_1_return_mail1, + &cKF_ba_r_ply_1_return_mail2, + &cKF_ba_r_ply_1_return_mail3, + &cKF_ba_r_ply_1_eat1, + &cKF_ba_r_ply_1_gaaan1, + &cKF_ba_r_ply_1_gaaan2, + &cKF_ba_r_ply_1_deru1, + &cKF_ba_r_ply_1_guratuku1, + &cKF_ba_r_ply_1_mogaku1, + &cKF_ba_r_ply_1_otiru1, + &cKF_ba_r_ply_1_zassou1, + &cKF_ba_r_ply_1_knock1, + &cKF_ba_r_ply_1_biku1, + &cKF_ba_r_ply_1_hati1, + &cKF_ba_r_ply_1_hati2, + &cKF_ba_r_ply_1_hati3, + &cKF_ba_r_ply_1_push_yuki1, + &cKF_ba_r_ply_1_deru2, + &cKF_ba_r_ply_1_otiru2, + &cKF_ba_r_ply_1_itazura1, + &cKF_ba_r_ply_1_umb_rot1, + &cKF_ba_r_ply_1_pickup_wait1, + &cKF_ba_r_ply_1_yatta1, + &cKF_ba_r_ply_1_yatta2, + &cKF_ba_r_ply_1_yatta3, + &cKF_ba_r_ply_1_kaza1, + &cKF_ba_r_ply_1_mosquito1, + &cKF_ba_r_ply_1_mosquito2, + &cKF_ba_r_ply_1_ride1, + &cKF_ba_r_ply_1_ride2, + &cKF_ba_r_ply_1_ridewait, + &cKF_ba_r_ply_1_getoff1, + &cKF_ba_r_ply_1_getoff2, + &cKF_ba_r_ply_1_utiwa_wait1, + &cKF_ba_r_ply_1_utiwa_d1, + &cKF_ba_r_ply_1_axe_break1, + &cKF_ba_r_ply_1_axe_breakwait1, + &cKF_ba_r_ply_1_light_on1, + &cKF_ba_r_ply_1_taisou1, + &cKF_ba_r_ply_1_taisou2_1, + &cKF_ba_r_ply_1_taisou2_2, + &cKF_ba_r_ply_1_taisou3, + &cKF_ba_r_ply_1_taisou4_1, + &cKF_ba_r_ply_1_taisou4_2, + &cKF_ba_r_ply_1_taisou5_1, + &cKF_ba_r_ply_1_taisou5_2, + &cKF_ba_r_ply_1_taisou6_1, + &cKF_ba_r_ply_1_taisou6_2, + &cKF_ba_r_ply_1_taisou7_1, + &cKF_ba_r_ply_1_taisou7_2, + &cKF_ba_r_ply_1_omairi_us1, + }; + + if (anim_idx >= 0 && anim_idx < mPlayer_ANIM_NUM && data[anim_idx] != NULL) { + return data[anim_idx]; + } + + return NULL; +} + +extern int mPlib_Get_BasicPlayerAnimeIndex_fromItemKind(int item_kind) { + if (item_kind >= 0 && item_kind < (mPlayer_ITEM_KIND_NUM + 1)) { + // clang-format off + static const u8 data[] = { + mPlayer_ANIM_AXE1, + mPlayer_ANIM_AXE1, + mPlayer_ANIM_AXE1, + mPlayer_ANIM_AXE1, + mPlayer_ANIM_AXE1, + mPlayer_ANIM_AXE1, + mPlayer_ANIM_AXE1, + mPlayer_ANIM_AXE1, + mPlayer_ANIM_AXE1, + mPlayer_ANIM_NET1, + mPlayer_ANIM_NET1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_SAO1, + mPlayer_ANIM_SAO1, + mPlayer_ANIM_SCOOP1, + mPlayer_ANIM_SCOOP1, + mPlayer_ANIM_KAZA1, + mPlayer_ANIM_KAZA1, + mPlayer_ANIM_KAZA1, + mPlayer_ANIM_KAZA1, + mPlayer_ANIM_KAZA1, + mPlayer_ANIM_KAZA1, + mPlayer_ANIM_KAZA1, + mPlayer_ANIM_KAZA1, + mPlayer_ANIM_KAZA1, + mPlayer_ANIM_KAZA1, + mPlayer_ANIM_KAZA1, + mPlayer_ANIM_KAZA1, + mPlayer_ANIM_KAZA1, + mPlayer_ANIM_KAZA1, + mPlayer_ANIM_KAZA1, + mPlayer_ANIM_KAZA1, + mPlayer_ANIM_UTIWA_WAIT1, + mPlayer_ANIM_UTIWA_WAIT1, + mPlayer_ANIM_UTIWA_WAIT1, + mPlayer_ANIM_UTIWA_WAIT1, + mPlayer_ANIM_UTIWA_WAIT1, + mPlayer_ANIM_UTIWA_WAIT1, + mPlayer_ANIM_UTIWA_WAIT1, + mPlayer_ANIM_UTIWA_WAIT1, + mPlayer_ANIM_WAIT1, + }; + // clang-format on + + return data[item_kind]; + } + + return -1; +} + +extern int mPlib_Get_BasicPartTableIndex_fromAnimeIndex(int anim_idx) { + if (anim_idx >= 0 && anim_idx < mPlayer_ANIM_NUM) { + // clang-format off + static const s8 data[] = { + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_AXE, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_PICK_UP, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NET, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NET, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_AXE, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_PICK_UP, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_PICK_UP, + mPlayer_PART_TABLE_PICK_UP, + mPlayer_PART_TABLE_AXE, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NET, + mPlayer_PART_TABLE_PICK_UP, + mPlayer_PART_TABLE_PICK_UP, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NET, + mPlayer_PART_TABLE_NET, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + }; + // clang-format on + + return data[anim_idx]; + } + + return -1; +} + +extern Gfx tol_axe_1_model[]; +extern Gfx tol_axe_1_b_model[]; +extern Gfx tol_axe_1_c_model[]; +extern Gfx tol_axe_2_model[]; +extern cKF_Skeleton_R_c cKF_bs_r_tol_net_1; +extern cKF_Skeleton_R_c cKF_bs_r_tol_net_2; +extern cKF_Animation_R_c cKF_ba_r_tol_net_1_get_m1; +extern cKF_Animation_R_c cKF_ba_r_tol_net_1_net_swing1; +extern cKF_Animation_R_c cKF_ba_r_tol_net_1_kamae_main_m1; +extern cKF_Animation_R_c cKF_ba_r_tol_net_1_kokeru_getup_n1; +extern cKF_Animation_R_c cKF_ba_r_tol_net_1_kokeru_n1; +extern cKF_Animation_R_c cKF_ba_r_tol_net_1_swing_wait1; +extern cKF_Animation_R_c cKF_ba_r_tol_net_1_yatta_m1; +extern cKF_Skeleton_R_c cKF_bs_r_tol_sao_1; +extern cKF_Skeleton_R_c cKF_bs_r_tol_sao_2; +extern cKF_Animation_R_c cKF_ba_r_tol_sao_1_sao_get_t1; +extern cKF_Animation_R_c cKF_ba_r_tol_sao_1_sao_move1; +extern cKF_Animation_R_c cKF_ba_r_tol_sao_1_sao_sinari1; +extern cKF_Animation_R_c cKF_ba_r_tol_sao_1_sao_swing1; +extern cKF_Animation_R_c cKF_ba_r_tol_sao_1_sao_wait1; +extern cKF_Animation_R_c cKF_ba_r_tol_sao_1_not_sao_swing1; +extern Gfx tol_scoop_1_model[]; +extern Gfx tol_scoop_2_model[]; +extern cKF_Skeleton_R_c cKF_bs_r_tol_balloon1; +extern cKF_Skeleton_R_c cKF_bs_r_tol_balloon2; +extern cKF_Skeleton_R_c cKF_bs_r_tol_balloon3; +extern cKF_Skeleton_R_c cKF_bs_r_tol_balloon4; +extern cKF_Skeleton_R_c cKF_bs_r_tol_balloon5; +extern cKF_Skeleton_R_c cKF_bs_r_tol_balloon6; +extern cKF_Skeleton_R_c cKF_bs_r_tol_balloon7; +extern cKF_Skeleton_R_c cKF_bs_r_tol_balloon8; +extern cKF_Animation_R_c cKF_ba_r_tol_balloon1_wait; +extern cKF_Animation_R_c cKF_ba_r_tol_balloon1_gyaza1; +extern cKF_Skeleton_R_c cKF_bs_r_tol_kaza1; +extern cKF_Skeleton_R_c cKF_bs_r_tol_kaza2; +extern cKF_Skeleton_R_c cKF_bs_r_tol_kaza3; +extern cKF_Skeleton_R_c cKF_bs_r_tol_kaza4; +extern cKF_Skeleton_R_c cKF_bs_r_tol_kaza5; +extern cKF_Skeleton_R_c cKF_bs_r_tol_kaza6; +extern cKF_Skeleton_R_c cKF_bs_r_tol_kaza7; +extern cKF_Skeleton_R_c cKF_bs_r_tol_kaza8; +extern cKF_Animation_R_c cKF_ba_r_tol_kaza1_wait; +extern Gfx tol_fan1_model[]; +extern Gfx tol_fan2_model[]; +extern Gfx tol_fan3_model[]; +extern Gfx tol_fan4_model[]; +extern Gfx tol_fan5_model[]; +extern Gfx tol_fan6_model[]; +extern Gfx tol_fan7_model[]; +extern Gfx tol_fan8_model[]; + +extern void* mPlib_Get_Item_DataPointer(int data_kind) { + if (mPlayer_ITEM_DATA_VALID(data_kind)) { + static void* mPlib_Item_DataPointer[] = { + tol_axe_1_model, + tol_axe_1_b_model, + tol_axe_1_c_model, + tol_axe_2_model, + &cKF_bs_r_tol_net_1, + &cKF_bs_r_tol_net_2, + &cKF_ba_r_tol_net_1_get_m1, + &cKF_ba_r_tol_net_1_net_swing1, + &cKF_ba_r_tol_net_1_kamae_main_m1, + &cKF_ba_r_tol_net_1_kokeru_getup_n1, + &cKF_ba_r_tol_net_1_kokeru_n1, + &cKF_ba_r_tol_net_1_swing_wait1, + &cKF_ba_r_tol_net_1_yatta_m1, + &cKF_bs_r_tol_sao_1, + &cKF_bs_r_tol_sao_2, + &cKF_ba_r_tol_sao_1_sao_get_t1, + &cKF_ba_r_tol_sao_1_sao_move1, + &cKF_ba_r_tol_sao_1_sao_sinari1, + &cKF_ba_r_tol_sao_1_sao_swing1, + &cKF_ba_r_tol_sao_1_sao_wait1, + &cKF_ba_r_tol_sao_1_not_sao_swing1, + tol_scoop_1_model, + tol_scoop_2_model, + &cKF_bs_r_tol_balloon1, + &cKF_bs_r_tol_balloon2, + &cKF_bs_r_tol_balloon3, + &cKF_bs_r_tol_balloon4, + &cKF_bs_r_tol_balloon5, + &cKF_bs_r_tol_balloon6, + &cKF_bs_r_tol_balloon7, + &cKF_bs_r_tol_balloon8, + &cKF_ba_r_tol_balloon1_wait, + &cKF_ba_r_tol_balloon1_gyaza1, + &cKF_bs_r_tol_kaza1, + &cKF_bs_r_tol_kaza2, + &cKF_bs_r_tol_kaza3, + &cKF_bs_r_tol_kaza4, + &cKF_bs_r_tol_kaza5, + &cKF_bs_r_tol_kaza6, + &cKF_bs_r_tol_kaza7, + &cKF_bs_r_tol_kaza8, + &cKF_ba_r_tol_kaza1_wait, + tol_fan1_model, + tol_fan2_model, + tol_fan3_model, + tol_fan4_model, + tol_fan5_model, + tol_fan6_model, + tol_fan7_model, + tol_fan8_model, + }; + + return mPlib_Item_DataPointer[data_kind]; + } + + return NULL; +} + +extern int mPlib_Get_BasicItemShapeIndex_fromItemKind(int item_kind) { + if (item_kind >= 0 && item_kind < (mPlayer_ITEM_KIND_NUM + 1)) { + // clang-format off + static const s8 data[] = { + mPlayer_ITEM_DATA_AXE, + mPlayer_ITEM_DATA_AXE, + mPlayer_ITEM_DATA_AXE_B, + mPlayer_ITEM_DATA_AXE_B, + mPlayer_ITEM_DATA_AXE_B, + mPlayer_ITEM_DATA_AXE_C, + mPlayer_ITEM_DATA_AXE_C, + mPlayer_ITEM_DATA_AXE_C, + mPlayer_ITEM_DATA_GOLD_AXE, + mPlayer_ITEM_DATA_NET, + mPlayer_ITEM_DATA_GOLD_NET, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + mPlayer_ITEM_DATA_ROD, + mPlayer_ITEM_DATA_GOLD_ROD, + mPlayer_ITEM_DATA_SHOVEL, + mPlayer_ITEM_DATA_GOLD_SHOVEL, + mPlayer_ITEM_DATA_BALLOON1, + mPlayer_ITEM_DATA_BALLOON2, + mPlayer_ITEM_DATA_BALLOON3, + mPlayer_ITEM_DATA_BALLOON4, + mPlayer_ITEM_DATA_BALLOON5, + mPlayer_ITEM_DATA_BALLOON6, + mPlayer_ITEM_DATA_BALLOON7, + mPlayer_ITEM_DATA_BALLOON8, + mPlayer_ITEM_DATA_PINWHEEL1, + mPlayer_ITEM_DATA_PINWHEEL2, + mPlayer_ITEM_DATA_PINWHEEL3, + mPlayer_ITEM_DATA_PINWHEEL4, + mPlayer_ITEM_DATA_PINWHEEL5, + mPlayer_ITEM_DATA_PINWHEEL6, + mPlayer_ITEM_DATA_PINWHEEL7, + mPlayer_ITEM_DATA_PINWHEEL8, + mPlayer_ITEM_DATA_FAN1, + mPlayer_ITEM_DATA_FAN2, + mPlayer_ITEM_DATA_FAN3, + mPlayer_ITEM_DATA_FAN4, + mPlayer_ITEM_DATA_FAN5, + mPlayer_ITEM_DATA_FAN6, + mPlayer_ITEM_DATA_FAN7, + mPlayer_ITEM_DATA_FAN8, + 0x00, + }; + // clang-format on + + return data[item_kind]; + } + + return -1; +} + +extern int mPlib_Get_BasicItemAnimeIndex_fromItemKind(int item_kind) { + if (item_kind >= 0 && item_kind < (mPlayer_ITEM_KIND_NUM + 1)) { + // clang-format off + static const s8 data[] = { + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + mPlayer_ITEM_DATA_KAMAE_MAIN_M, + mPlayer_ITEM_DATA_KAMAE_MAIN_M, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + mPlayer_ITEM_DATA_ROD_WAIT, + mPlayer_ITEM_DATA_ROD_WAIT, + -1, + -1, + mPlayer_ITEM_DATA_BALLOON_GYAZA, + mPlayer_ITEM_DATA_BALLOON_GYAZA, + mPlayer_ITEM_DATA_BALLOON_GYAZA, + mPlayer_ITEM_DATA_BALLOON_GYAZA, + mPlayer_ITEM_DATA_BALLOON_GYAZA, + mPlayer_ITEM_DATA_BALLOON_GYAZA, + mPlayer_ITEM_DATA_BALLOON_GYAZA, + mPlayer_ITEM_DATA_BALLOON_GYAZA, + mPlayer_ITEM_DATA_PINWHEEL_WAIT, + mPlayer_ITEM_DATA_PINWHEEL_WAIT, + mPlayer_ITEM_DATA_PINWHEEL_WAIT, + mPlayer_ITEM_DATA_PINWHEEL_WAIT, + mPlayer_ITEM_DATA_PINWHEEL_WAIT, + mPlayer_ITEM_DATA_PINWHEEL_WAIT, + mPlayer_ITEM_DATA_PINWHEEL_WAIT, + mPlayer_ITEM_DATA_PINWHEEL_WAIT, + -1, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00 + }; + // clang-format on + + return data[item_kind]; + } + + return -1; +} + +extern u8 mPlib_Get_Item_DataPointerType(int data_idx) { + if (data_idx >= 0 && data_idx < mPlayer_ITEM_DATA_NUM) { + // clang-format off + static const u8 mPlib_Item_DataPointerType[] = { + mPlayer_ITEM_DATA_TYPE_GFX, + mPlayer_ITEM_DATA_TYPE_GFX, + mPlayer_ITEM_DATA_TYPE_GFX, + mPlayer_ITEM_DATA_TYPE_GFX, + mPlayer_ITEM_DATA_TYPE_SKELETON, + mPlayer_ITEM_DATA_TYPE_SKELETON, + mPlayer_ITEM_DATA_TYPE_NET_ANIMATION, + mPlayer_ITEM_DATA_TYPE_NET_ANIMATION, + mPlayer_ITEM_DATA_TYPE_NET_ANIMATION, + mPlayer_ITEM_DATA_TYPE_NET_ANIMATION, + mPlayer_ITEM_DATA_TYPE_NET_ANIMATION, + mPlayer_ITEM_DATA_TYPE_NET_ANIMATION, + mPlayer_ITEM_DATA_TYPE_NET_ANIMATION, + mPlayer_ITEM_DATA_TYPE_SKELETON, + mPlayer_ITEM_DATA_TYPE_SKELETON, + mPlayer_ITEM_DATA_TYPE_ROD_ANIMATION, + mPlayer_ITEM_DATA_TYPE_ROD_ANIMATION, + mPlayer_ITEM_DATA_TYPE_ROD_ANIMATION, + mPlayer_ITEM_DATA_TYPE_ROD_ANIMATION, + mPlayer_ITEM_DATA_TYPE_ROD_ANIMATION, + mPlayer_ITEM_DATA_TYPE_ROD_ANIMATION, + mPlayer_ITEM_DATA_TYPE_GFX, + mPlayer_ITEM_DATA_TYPE_GFX, + mPlayer_ITEM_DATA_TYPE_SKELETON, + mPlayer_ITEM_DATA_TYPE_SKELETON, + mPlayer_ITEM_DATA_TYPE_SKELETON, + mPlayer_ITEM_DATA_TYPE_SKELETON, + mPlayer_ITEM_DATA_TYPE_SKELETON, + mPlayer_ITEM_DATA_TYPE_SKELETON, + mPlayer_ITEM_DATA_TYPE_SKELETON, + mPlayer_ITEM_DATA_TYPE_SKELETON, + mPlayer_ITEM_DATA_TYPE_BALLOON_ANIMATION, + mPlayer_ITEM_DATA_TYPE_BALLOON_ANIMATION, + mPlayer_ITEM_DATA_TYPE_SKELETON, + mPlayer_ITEM_DATA_TYPE_SKELETON, + mPlayer_ITEM_DATA_TYPE_SKELETON, + mPlayer_ITEM_DATA_TYPE_SKELETON, + mPlayer_ITEM_DATA_TYPE_SKELETON, + mPlayer_ITEM_DATA_TYPE_SKELETON, + mPlayer_ITEM_DATA_TYPE_SKELETON, + mPlayer_ITEM_DATA_TYPE_SKELETON, + mPlayer_ITEM_DATA_TYPE_PINWHEEL_ANIMATION, + mPlayer_ITEM_DATA_TYPE_GFX, + mPlayer_ITEM_DATA_TYPE_GFX, + mPlayer_ITEM_DATA_TYPE_GFX, + mPlayer_ITEM_DATA_TYPE_GFX, + mPlayer_ITEM_DATA_TYPE_GFX, + mPlayer_ITEM_DATA_TYPE_GFX, + mPlayer_ITEM_DATA_TYPE_GFX, + mPlayer_ITEM_DATA_TYPE_GFX, + }; + // clang-format on + + return mPlib_Item_DataPointerType[data_idx]; + } + + return mPlayer_ITEM_DATA_TYPE_GFX; +} + +static u32 mPlib_Get_UseFaceRom_index(int sex, int face_type, int swell, int decoy, int res_type) { + int swell_flag = swell != FALSE; + int decoy_flag = decoy != FALSE; + int ofs; + + if (res_type != mPlayer_USE_FACE_ROM_TYPE_TEX) { + ofs = face_type * 8; + ofs += sex * 64; + ofs += swell_flag * 128; + } else { + ofs = decoy_flag * 32; + ofs += face_type; + ofs += sex * 8; + ofs += swell_flag * 16; + } + + return ofs; +} + +static u32 mPlib_Get_UseFaceTexRom_p_common(int sex, int face_type, int swell, int decoy) { + u32 idx = mPlib_Get_UseFaceRom_index(sex, face_type, swell, decoy, mPlayer_USE_FACE_ROM_TYPE_TEX); + u32 base_address = JW_GetAramAddress(RESOURCE_FACE_BOY); + + return base_address + idx * 0xE20; +} + +static u32 mPlib_Get_UseFaceTexRom_p(void) { + return mPlib_Get_UseFaceTexRom_p_common(Now_Private->gender, Now_Private->face, Common_Get(player_bee_swell_flag), + Common_Get(player_decoy_flag)); +} + +static u32 mPlib_Get_UseFacePalletRom_p(void) { + int sunburn_rank = Now_Private->sunburn.rank; + int decoy_flag = Common_Get(player_decoy_flag); + u32 base; + u32 ofs; + + if (sunburn_rank > 0 && decoy_flag == FALSE) { + u32 idx = mPlib_Get_UseFaceRom_index(Now_Private->gender, Now_Private->face, Common_Get(player_bee_swell_flag), + FALSE, mPlayer_USE_FACE_ROM_TYPE_PAL); + + base = mPlib_Get_UseFaceTexRom_p_common(mPr_SEX_FEMALE, mPr_FACE_TYPE7, TRUE, TRUE); + ofs = 0xE00 + (sunburn_rank + idx) * 0x20; + } else { + base = mPlib_Get_UseFaceTexRom_p(); + ofs = 0xE00; + } + + return base + ofs; +} + +extern void mPlib_Object_Exchange_keep_new_PlayerMdl(GAME_PLAY* play) { + Actor_data* player_data = play->player_data; + + actor_dlftbls[player_data->profile].profile->obj_bank_id = mPlib_get_player_Object_Bank(); +} + +static int mPlib_Object_Exchange_keep_new(GAME_PLAY* play, s16 bank, u32 src, u32 size, int aram_flag) { + Object_Exchange_c* obj_ex = &play->object_exchange; + Object_Bank_c* bank_p = &obj_ex->banks[obj_ex->bank_idx]; + + bank_p->bank_id = bank; + bank_p->dma_start = obj_ex->next_bank_ram_address; + bank_p->ram_start = obj_ex->next_bank_ram_address; + bank_p->size = size; + + if (src != 0) { + if (aram_flag) { + _JW_GetResourceAram(src, (u8*)bank_p->dma_start, size); + } else { + bcopy((void*)src, bank_p->dma_start, size); + } + + DCStoreRangeNoSync(bank_p->ram_start, size); + } + + if (obj_ex->bank_idx < (mSc_OBJECT_BANK_NUM - 1)) { + obj_ex->next_bank_ram_address = (char*)ALIGN_NEXT((u32)obj_ex->next_bank_ram_address + size, 32); + obj_ex->bank_idx++; + } + + return mSc_bank_regist_check(obj_ex, bank); +} + +static int Player_bank_ID_Index = 0; + +static int Change_Player_bank_ID_Index(void) { + Player_bank_ID_Index ^= 1; + return Player_bank_ID_Index; +} + +static int Player_face_bank_ID_Index = 0; + +static int Change_Player_face_bank_ID_Index(void) { + Player_face_bank_ID_Index ^= 1; + return Player_face_bank_ID_Index; +} + +extern u32 mPlib_Get_PlayerTexRom_p(int idx) { + if (mPlib_Check_PlayerClothInAram(idx)) { + u32 addr = JW_GetAramAddress(RESOURCE_TEX_BOY); + addr += idx * mNW_DESIGN_TEX_SIZE; + return addr; + } else { + int org_idx = idx - (CLOTH_NUM + 1); + + if (!mPr_ORIGINAL_DESIGN_IDX_VALID(org_idx)) { + org_idx = 0; + } + + return (u32)Now_Private->my_org[org_idx & 7].design.data; + } +} + +static u32 mPlib_Get_UseTexRom_p(void) { + return mPlib_Get_PlayerTexRom_p(Now_Private->cloth.idx); +} + +static int Player_Tex_bank_ID[] = { -1, -1 }; + +extern void mPlib_Object_Exchange_keep_new_PlayerTex(GAME_PLAY* play, int bank_idx, int bank) { + u32 tex = mPlib_Get_UseTexRom_p(); + int idx = mPlib_Object_Exchange_keep_new(play, ACTOR_OBJ_BANK_14, tex, mNW_DESIGN_TEX_SIZE, + mPlib_Check_PlayerClothInAram(Now_Private->cloth.idx)); + + Player_Tex_bank_ID[bank_idx] = bank + idx; +} + +extern u32 mPlib_Get_PlayerPalletRom_p(int idx) { + if (mPlib_Check_PlayerClothInAram(idx)) { + u32 addr = JW_GetAramAddress(RESOURCE_PALLET_BOY); + addr += idx * mNW_PALETTE_SIZE; + return addr; + } else { + int org_idx = idx - (CLOTH_NUM + 1); + + if (!mPr_ORIGINAL_DESIGN_IDX_VALID(org_idx)) { + org_idx = 0; + } + + return (u32)mNW_PaletteIdx2Palette(Now_Private->my_org[org_idx & 7].palette); + } +} + +static u32 mPlib_Get_UsePalletRom_p(void) { + return mPlib_Get_PlayerPalletRom_p(Now_Private->cloth.idx); +} + +static int Player_Pallet_bank_ID[] = { -1, -1 }; + +extern void mPlib_Object_Exchange_keep_new_PlayerPallet(GAME_PLAY* play, int bank_idx, int bank) { + u32 pal = mPlib_Get_UsePalletRom_p(); + + Player_Pallet_bank_ID[bank_idx] = + bank + mPlib_Object_Exchange_keep_new(play, ACTOR_OBJ_BANK_15, pal, mNW_PALETTE_SIZE, + mPlib_Check_PlayerClothInAram(Now_Private->cloth.idx)); +} + +extern int mPlib_Check_PlayerClothInAram(int idx) { + if (idx < (CLOTH_NUM + 1)) { + return TRUE; + } + + return FALSE; +} + +static int Player_face_tex_bank_ID = -1; + +extern void mPlib_Object_Exchange_keep_new_PlayerFaceTex(GAME_PLAY* play) { + Player_face_tex_bank_ID = mPlib_Object_Exchange_keep_new(play, ACTOR_OBJ_BANK_52, 0, 0xE00, TRUE); +} + +static int Player_face_pallet_bank_ID[] = { -1, -1 }; + +extern void mPlib_Object_Exchange_keep_new_PlayerFacePallet(GAME_PLAY* play, int bank, int bank_idx) { + Player_face_pallet_bank_ID[bank_idx] = + bank + mPlib_Object_Exchange_keep_new(play, ACTOR_OBJ_BANK_52, 0, mNW_PALETTE_SIZE, TRUE); +} + +extern void mPlib_Object_Exchange_keep_Player_dt(GAME_PLAY* play) { + Player_face_tex_bank_ID = -1; + Player_face_pallet_bank_ID[0] = -1; + Player_face_pallet_bank_ID[1] = -1; + Player_bank_ID_Index = 0; + Player_face_bank_ID_Index = 0; + Player_Tex_bank_ID[0] = -1; + Player_Tex_bank_ID[1] = -1; + Player_Pallet_bank_ID[0] = -1; + Player_Pallet_bank_ID[1] = -1; +} + +extern u8* mPlib_get_player_tex_p(GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + Object_Exchange_c* obj_ex = &play->object_exchange; + int bank_no = Player_Tex_bank_ID[Player_bank_ID_Index]; + + if (bank_no >= 0 && obj_ex->banks[bank_no].bank_id > 0) { + return (u8*)obj_ex->banks[bank_no].ram_start; + } + + return NULL; +} + +extern u16* mPlib_get_player_pallet_p(GAME* game) { + u8* tex_p = mPlib_get_player_tex_p(game); + + if (tex_p != NULL) { + tex_p = tex_p + mNW_DESIGN_TEX_SIZE; + } + + return (u16*)tex_p; +} + +extern u8* mPlib_get_player_face_p(GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + Object_Exchange_c* obj_ex = &play->object_exchange; + int bank_no = Player_face_tex_bank_ID; + + if (bank_no >= 0 && obj_ex->banks[bank_no].bank_id > 0) { + return (u8*)obj_ex->banks[bank_no].ram_start; + } + + return NULL; +} + +extern u16* mPlib_get_player_face_pallet_p(GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + Object_Exchange_c* obj_ex = &play->object_exchange; + int bank_no = Player_face_pallet_bank_ID[Player_face_bank_ID_Index]; + + if (bank_no >= 0 && obj_ex->banks[bank_no].bank_id > 0) { + return (u16*)obj_ex->banks[bank_no].ram_start; + } + + return NULL; +} + +extern void mPlib_change_player_cloth(GAME* game, u16 cloth_idx) { + int idx = cloth_idx; + Change_Player_bank_ID_Index(); + + { + u8* player_tex_p = mPlib_get_player_tex_p(game); + u32 player_tex_rom_p = mPlib_Get_PlayerTexRom_p(idx); + + if (mPlib_Check_PlayerClothInAram(idx)) { + _JW_GetResourceAram(player_tex_rom_p, player_tex_p, mNW_DESIGN_TEX_SIZE); + } else { + bcopy((u8*)player_tex_rom_p, player_tex_p, mNW_DESIGN_TEX_SIZE); + } + + DCStoreRangeNoSync(player_tex_p, mNW_DESIGN_TEX_SIZE); + } + + { + u16* player_pallet_p = mPlib_get_player_pallet_p(game); + u32 player_pallet_rom_p = mPlib_Get_PlayerPalletRom_p(idx); + + if (mPlib_Check_PlayerClothInAram(idx)) { + _JW_GetResourceAram(player_pallet_rom_p, (u8*)player_pallet_p, mNW_PALETTE_SIZE); + } else { + bcopy((u16*)player_pallet_rom_p, player_pallet_p, mNW_PALETTE_SIZE); + } + + DCStoreRangeNoSync(player_pallet_p, mNW_PALETTE_SIZE); + } +} + +extern void mPlib_change_player_face_pallet(GAME* game) { + Change_Player_face_bank_ID_Index(); + + { + u16* player_face_pallet_p = mPlib_get_player_face_pallet_p(game); + u32 player_face_pallet_rom_p = mPlib_Get_UseFacePalletRom_p(); + + if (player_face_pallet_p != NULL && player_face_pallet_rom_p != 0) { + _JW_GetResourceAram(player_face_pallet_rom_p, (u8*)player_face_pallet_p, mNW_PALETTE_SIZE); + DCStoreRangeNoSync(player_face_pallet_p, mNW_PALETTE_SIZE); + } + } +} + +extern void mPlib_change_player_face(GAME* game) { + u8* player_face_p = mPlib_get_player_face_p(game); + u32 player_face_rom_p = mPlib_Get_UseFaceTexRom_p(); + + if (player_face_p != NULL && player_face_rom_p != 0) { + _JW_GetResourceAram(player_face_rom_p, player_face_p, 0xE00); + DCStoreRangeNoSync(player_face_p, 0xE00); + } + + mPlib_change_player_face_pallet(game); +} + +extern PLAYER_ACTOR* get_player_actor_withoutCheck(GAME_PLAY* play) { + return (PLAYER_ACTOR*)&play->actor_info.list[ACTOR_PART_PLAYER].actor[0]; +} + +static int mPlib_check_DynamicLinkFile_m_player(void) { + return SubmenuArea_IsPlayer() != FALSE; +} + +extern int mPlib_get_player_actor_main_index(GAME* game) { + return GET_PLAYER_ACTOR_GAME(game)->now_main_index; +} + +extern int mPlib_get_player_actor_request_main_index(GAME* game) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + if (player->requested_main_index_changed) { + return player->requested_main_index; + } + + return -1; +} + +extern cKF_Skeleton_R_c cKF_bs_r_boy_1; +extern cKF_Skeleton_R_c cKF_bs_r_grl_1; + +extern cKF_Skeleton_R_c* mPlib_get_player_mdl_p(void) { + if (Now_Private->gender == mPr_SEX_MALE) { + return &cKF_bs_r_boy_1; + } else { + return &cKF_bs_r_grl_1; + } +} + +extern s16 mPlib_get_player_Object_Bank(void) { + if (Now_Private->gender == mPr_SEX_MALE) { + return ACTOR_OBJ_BANK_8; + } else { + return ACTOR_OBJ_BANK_51; + } +} + +extern s8 BOY_part_data[][mPlayer_JOINT_NUM + 1]; + +extern void mPlib_DMA_player_Part_Table(s8* part_table_p, int idx) { + if (idx >= 0 && idx < mPlayer_PART_TABLE_NUM) { + bcopy(&BOY_part_data[idx], part_table_p, sizeof(BOY_part_data[idx])); + } +} + +extern void mPlib_change_player_cloth_info(mPr_cloth_c* cloth_p, mActor_name_t item) { + cloth_p->item = item; + cloth_p->idx = ITEM_IS_CLOTH(item) ? (item - ITM_CLOTH_START) : 0; +} + +extern void mPlib_change_player_cloth_info_lv2(Private_c* priv, mActor_name_t item) { + mPlib_change_player_cloth_info(&priv->cloth, item); +} + +extern void mPlib_Load_PlayerTexAndPallet(void* tex_p, void* pal_p, int idx) { + if (idx >= 0 && idx < (CLOTH_NUM + 1 + mPr_ORIGINAL_DESIGN_COUNT) && tex_p != NULL && pal_p != NULL) { + u32 tex_rom_p = mPlib_Get_PlayerTexRom_p(idx); + u32 pal_rom_p = mPlib_Get_PlayerPalletRom_p(idx); + + if (mPlib_Check_PlayerClothInAram(idx)) { + _JW_GetResourceAram(tex_rom_p, (u8*)tex_p, mNW_DESIGN_TEX_SIZE); + _JW_GetResourceAram(pal_rom_p, (u8*)pal_p, mNW_PALETTE_SIZE); + } else { + bcopy((u8*)tex_rom_p, tex_p, mNW_DESIGN_TEX_SIZE); + bcopy((u16*)pal_rom_p, pal_p, mNW_PALETTE_SIZE); + } + + DCStoreRangeNoSync(tex_p, mNW_DESIGN_TEX_SIZE); + DCStoreRangeNoSync(pal_p, mNW_PALETTE_SIZE); + } +} + +static mPlayer_change_data_from_submenu_c change_data_from_submenu; + +extern mPlayer_change_data_from_submenu_c* mPlib_Get_change_data_from_submenu_p(void) { + return &change_data_from_submenu; +} + +extern void mPlib_Clear_change_data_from_submenu(void) { + bzero(&change_data_from_submenu, sizeof(change_data_from_submenu)); +} + +extern void mPlib_request_main_give_from_submenu(mActor_name_t item, int after_mode, int present_flag, + int surface_flag) { + mPlayer_change_data_from_submenu_c* change_data_from_submenu_p = mPlib_Get_change_data_from_submenu_p(); + mPlayer_request_give_c* req_give_p = &change_data_from_submenu_p->request_main_data.give; + + change_data_from_submenu_p->requested_main_index = mPlayer_INDEX_GIVE; + change_data_from_submenu_p->requested_index_pending = TRUE; + + req_give_p->item = item; + req_give_p->mode = after_mode; + req_give_p->present_flag = present_flag; + req_give_p->on_surface_flag = surface_flag; +} + +extern void mPlib_request_main_putin_scoop_from_submenu(const xyz_t* pos_p, mActor_name_t item, int gold_scoop_flag) { + mPlayer_change_data_from_submenu_c* change_data_from_submenu_p = mPlib_Get_change_data_from_submenu_p(); + mPlayer_request_putin_scoop_c* req_putin_scoop_p = &change_data_from_submenu_p->request_main_data.putin_scoop; + + change_data_from_submenu_p->requested_main_index = mPlayer_INDEX_PUTIN_SCOOP; + change_data_from_submenu_p->requested_index_pending = TRUE; + + req_putin_scoop_p->dig_pos = *pos_p; + req_putin_scoop_p->item = item; + req_putin_scoop_p->get_gold_scoop_flag = gold_scoop_flag; +} + +extern void mPlib_request_main_release_creature_gyoei_from_submenu(s16 angle_y, s16 item, int gold_scoop_flag) { + mPlayer_change_data_from_submenu_c* change_data_from_submenu_p = mPlib_Get_change_data_from_submenu_p(); + mPlayer_request_release_creature_c* req_release_creature_p = + &change_data_from_submenu_p->request_main_data.release_creature; + mPlayer_request_release_creature_gyoei_c* release_gyoei_p = &req_release_creature_p->data.gyoei; + + change_data_from_submenu_p->requested_main_index = mPlayer_INDEX_RELEASE_CREATURE; + change_data_from_submenu_p->requested_index_pending = TRUE; + + req_release_creature_p->type = mPlayer_CREATURE_GYOEI; + req_release_creature_p->gold_scoop_flag = gold_scoop_flag; + + release_gyoei_p->angle_y = angle_y; + release_gyoei_p->_02 = item; +} + +extern void mPlib_request_main_release_creature_insect_from_submenu(int insect_type, int gold_scoop_flag) { + mPlayer_change_data_from_submenu_c* change_data_from_submenu_p = mPlib_Get_change_data_from_submenu_p(); + mPlayer_request_release_creature_c* req_release_creature_p = + &change_data_from_submenu_p->request_main_data.release_creature; + mPlayer_request_release_creature_insect_c* release_insect_p = &req_release_creature_p->data.insect; + ACTOR* actorx = GET_PLAYER_ACTOR_NOW_ACTOR(); + + change_data_from_submenu_p->requested_main_index = mPlayer_INDEX_RELEASE_CREATURE; + change_data_from_submenu_p->requested_index_pending = TRUE; + + req_release_creature_p->type = mPlayer_CREATURE_INSECT; + req_release_creature_p->gold_scoop_flag = gold_scoop_flag; + + release_insect_p->pos.x = actorx->world.position.x + 7.0f * sin_s(actorx->shape_info.rotation.y); + release_insect_p->pos.y = actorx->world.position.y + 13.0f; + release_insect_p->pos.z = actorx->world.position.z + 7.0f * cos_s(actorx->shape_info.rotation.y); + release_insect_p->type = insect_type; +} + +extern s8 mPlib_Get_ItemNoToItemKind(mActor_name_t itemNo) { + switch (itemNo) { + case ITM_NET: + return mPlayer_ITEM_KIND_NET; + case ITM_GOLDEN_NET: + return mPlayer_ITEM_KIND_GOLD_NET; + case ITM_AXE: + return mPlayer_ITEM_KIND_AXE; + case ITM_AXE_USE_1: + return mPlayer_ITEM_KIND_AXE_USE_1; + case ITM_AXE_USE_2: + return mPlayer_ITEM_KIND_AXE_USE_2; + case ITM_AXE_USE_3: + return mPlayer_ITEM_KIND_AXE_USE_3; + case ITM_AXE_USE_4: + return mPlayer_ITEM_KIND_AXE_USE_4; + case ITM_AXE_USE_5: + return mPlayer_ITEM_KIND_AXE_USE_5; + case ITM_AXE_USE_6: + return mPlayer_ITEM_KIND_AXE_USE_6; + case ITM_AXE_USE_7: + return mPlayer_ITEM_KIND_AXE_USE_7; + case ITM_GOLDEN_AXE: + return mPlayer_ITEM_KIND_GOLD_AXE; + case ITM_UMBRELLA00: + return mPlayer_ITEM_KIND_UMBRELLA00; + case ITM_UMBRELLA01: + return mPlayer_ITEM_KIND_UMBRELLA01; + case ITM_UMBRELLA02: + return mPlayer_ITEM_KIND_UMBRELLA02; + case ITM_UMBRELLA03: + return mPlayer_ITEM_KIND_UMBRELLA03; + case ITM_UMBRELLA04: + return mPlayer_ITEM_KIND_UMBRELLA04; + case ITM_UMBRELLA05: + return mPlayer_ITEM_KIND_UMBRELLA05; + case ITM_UMBRELLA06: + return mPlayer_ITEM_KIND_UMBRELLA06; + case ITM_UMBRELLA07: + return mPlayer_ITEM_KIND_UMBRELLA07; + case ITM_UMBRELLA08: + return mPlayer_ITEM_KIND_UMBRELLA08; + case ITM_UMBRELLA09: + return mPlayer_ITEM_KIND_UMBRELLA09; + case ITM_UMBRELLA10: + return mPlayer_ITEM_KIND_UMBRELLA10; + case ITM_UMBRELLA11: + return mPlayer_ITEM_KIND_UMBRELLA11; + case ITM_UMBRELLA12: + return mPlayer_ITEM_KIND_UMBRELLA12; + case ITM_UMBRELLA13: + return mPlayer_ITEM_KIND_UMBRELLA13; + case ITM_UMBRELLA14: + return mPlayer_ITEM_KIND_UMBRELLA14; + case ITM_UMBRELLA15: + return mPlayer_ITEM_KIND_UMBRELLA15; + case ITM_UMBRELLA16: + return mPlayer_ITEM_KIND_UMBRELLA16; + case ITM_UMBRELLA17: + return mPlayer_ITEM_KIND_UMBRELLA17; + case ITM_UMBRELLA18: + return mPlayer_ITEM_KIND_UMBRELLA18; + case ITM_UMBRELLA19: + return mPlayer_ITEM_KIND_UMBRELLA19; + case ITM_UMBRELLA20: + return mPlayer_ITEM_KIND_UMBRELLA20; + case ITM_UMBRELLA21: + return mPlayer_ITEM_KIND_UMBRELLA21; + case ITM_UMBRELLA22: + return mPlayer_ITEM_KIND_UMBRELLA22; + case ITM_UMBRELLA23: + return mPlayer_ITEM_KIND_UMBRELLA23; + case ITM_UMBRELLA24: + return mPlayer_ITEM_KIND_UMBRELLA24; + case ITM_UMBRELLA25: + return mPlayer_ITEM_KIND_UMBRELLA25; + case ITM_UMBRELLA26: + return mPlayer_ITEM_KIND_UMBRELLA26; + case ITM_UMBRELLA27: + return mPlayer_ITEM_KIND_UMBRELLA27; + case ITM_UMBRELLA28: + return mPlayer_ITEM_KIND_UMBRELLA28; + case ITM_UMBRELLA29: + return mPlayer_ITEM_KIND_UMBRELLA29; + case ITM_UMBRELLA30: + return mPlayer_ITEM_KIND_UMBRELLA30; + case ITM_UMBRELLA31: + return mPlayer_ITEM_KIND_UMBRELLA31; + case ITM_MY_ORG_UMBRELLA0: + return mPlayer_ITEM_KIND_ORG_UMBRELLA00; + case ITM_MY_ORG_UMBRELLA1: + return mPlayer_ITEM_KIND_ORG_UMBRELLA01; + case ITM_MY_ORG_UMBRELLA2: + return mPlayer_ITEM_KIND_ORG_UMBRELLA02; + case ITM_MY_ORG_UMBRELLA3: + return mPlayer_ITEM_KIND_ORG_UMBRELLA03; + case ITM_MY_ORG_UMBRELLA4: + return mPlayer_ITEM_KIND_ORG_UMBRELLA04; + case ITM_MY_ORG_UMBRELLA5: + return mPlayer_ITEM_KIND_ORG_UMBRELLA05; + case ITM_MY_ORG_UMBRELLA6: + return mPlayer_ITEM_KIND_ORG_UMBRELLA06; + case ITM_MY_ORG_UMBRELLA7: + return mPlayer_ITEM_KIND_ORG_UMBRELLA07; + case ITM_ROD: + return mPlayer_ITEM_KIND_ROD; + case ITM_GOLDEN_ROD: + return mPlayer_ITEM_KIND_GOLD_ROD; + case ITM_SHOVEL: + return mPlayer_ITEM_KIND_SHOVEL; + case ITM_GOLDEN_SHOVEL: + return mPlayer_ITEM_KIND_GOLD_SHOVEL; + case ITM_RED_BALLOON: + return mPlayer_ITEM_KIND_RED_BALLOON; + case ITM_YELLOW_BALLOON: + return mPlayer_ITEM_KIND_YELLOW_BALLOON; + case ITM_BLUE_BALLOON: + return mPlayer_ITEM_KIND_BLUE_BALLOON; + case ITM_GREEN_BALLOON: + return mPlayer_ITEM_KIND_GREEN_BALLOON; + case ITM_PURPLE_BALLOON: + return mPlayer_ITEM_KIND_PURPLE_BALLOON; + case ITM_BUNNY_P_BALLOON: + return mPlayer_ITEM_KIND_BUNNY_P_BALLOON; + case ITM_BUNNY_B_BALLOON: + return mPlayer_ITEM_KIND_BUNNY_B_BALLOON; + case ITM_BUNNY_O_BALLOON: + return mPlayer_ITEM_KIND_BUNNY_O_BALLOON; + case ITM_YELLOW_PINWHEEL: + return mPlayer_ITEM_KIND_YELLOW_PINWHEEL; + case ITM_RED_PINWHEEL: + return mPlayer_ITEM_KIND_RED_PINWHEEL; + case ITM_TIGER_PINWHEEL: + return mPlayer_ITEM_KIND_TIGER_PINWHEEL; + case ITM_GREEN_PINWHEEL: + return mPlayer_ITEM_KIND_GREEN_PINWHEEL; + case ITM_PINK_PINWHEEL: + return mPlayer_ITEM_KIND_PINK_PINWHEEL; + case ITM_STRIPED_PINWHEEL: + return mPlayer_ITEM_KIND_STRIPED_PINWHEEL; + case ITM_FLOWER_PINWHEEL: + return mPlayer_ITEM_KIND_FLOWER_PINWHEEL; + case ITM_FANCY_PINWHEEL: + return mPlayer_ITEM_KIND_FANCY_PINWHEEL; + case ITM_BLUEBELL_FAN: + return mPlayer_ITEM_KIND_BLUEBELL_FAN; + case ITM_PLUM_FAN: + return mPlayer_ITEM_KIND_PLUM_FAN; + case ITM_BAMBOO_FAN: + return mPlayer_ITEM_KIND_BAMBOO_FAN; + case ITM_CLOUD_FAN: + return mPlayer_ITEM_KIND_CLOUD_FAN; + case ITM_MAPLE_FAN: + return mPlayer_ITEM_KIND_MAPLE_FAN; + case ITM_FAN_FAN: + return mPlayer_ITEM_KIND_FAN_FAN; + case ITM_FLOWER_FAN: + return mPlayer_ITEM_KIND_FLOWER_FAN; + case ITM_LEAF_FAN: + return mPlayer_ITEM_KIND_LEAF_FAN; + default: + return -1; + } +} + +extern int mPlib_Get_ItemKindTOBalloonShapeType(int item_kind) { + if (mPlayer_ITEM_IS_BALLOON(item_kind) != FALSE) { + return item_kind - mPlayer_ITEM_KIND_RED_BALLOON; + } + + return 0; +} + +static int mPlib_Get_itemNOTOBalloonShapeType(mActor_name_t itemNo) { + return mPlib_Get_ItemKindTOBalloonShapeType(mPlib_Get_ItemNoToItemKind(itemNo)); +} + +extern void mPlib_request_main_release_creature_balloon_from_submenu(mActor_name_t itemNo, int gold_scoop_flag) { + mPlayer_change_data_from_submenu_c* change_data_from_submenu_p = mPlib_Get_change_data_from_submenu_p(); + mPlayer_request_release_creature_c* req_release_creature_p = + &change_data_from_submenu_p->request_main_data.release_creature; + mPlayer_request_release_creature_balloon_c* release_balloon_p = &req_release_creature_p->data.balloon; + ACTOR* actorx = GET_PLAYER_ACTOR_NOW_ACTOR(); /* @unused */ + + change_data_from_submenu_p->requested_main_index = mPlayer_INDEX_RELEASE_CREATURE; + change_data_from_submenu_p->requested_index_pending = TRUE; + + req_release_creature_p->type = mPlayer_CREATURE_BALLOON; + req_release_creature_p->gold_scoop_flag = gold_scoop_flag; + + release_balloon_p->balloon_type = mPlib_Get_itemNOTOBalloonShapeType(itemNo); +} + +extern void mPlib_request_main_wait_from_submenu(void) { + mPlayer_change_data_from_submenu_c* change_data_from_submenu_p = mPlib_Get_change_data_from_submenu_p(); + + change_data_from_submenu_p->requested_main_index = mPlayer_INDEX_WAIT; + change_data_from_submenu_p->requested_index_pending = TRUE; +} + +extern void mPlib_request_main_demo_get_golden_item_from_submenu(void) { + mPlayer_change_data_from_submenu_c* change_data_from_submenu_p = mPlib_Get_change_data_from_submenu_p(); + + change_data_from_submenu_p->requested_main_index = mPlayer_INDEX_DEMO_GET_GOLDEN_ITEM; + change_data_from_submenu_p->requested_index_pending = TRUE; +} + +extern void mPlib_request_main_mail_land_from_submenu(void) { + mPlayer_change_data_from_submenu_c* change_data_from_submenu_p = mPlib_Get_change_data_from_submenu_p(); + + change_data_from_submenu_p->requested_main_index = mPlayer_INDEX_MAIL_LAND; + change_data_from_submenu_p->requested_index_pending = TRUE; +} + +extern void mPlib_request_main_demo_wait_from_submenu(ACTOR* speak_actor_p) { + mPlayer_change_data_from_submenu_c* change_data_from_submenu_p = mPlib_Get_change_data_from_submenu_p(); + mPlayer_request_demo_wait_c* req_demo_wait_p = &change_data_from_submenu_p->request_main_data.demo_wait; + + change_data_from_submenu_p->requested_main_index = mPlayer_INDEX_DEMO_WAIT; + change_data_from_submenu_p->requested_index_pending = TRUE; + + req_demo_wait_p->umbrella_flag = FALSE; + req_demo_wait_p->label = (u32)speak_actor_p; + + if (speak_actor_p != NULL) { + mPlib_Set_able_force_speak_label(speak_actor_p); + } +} + +extern void mPlib_Set_unable_wade(int v) { + Common_Set(unable_wade, v); +} + +extern int mPlib_Get_unable_wade(void) { + return Common_Get(unable_wade); +} + +extern int mPlib_Check_able_force_speak_label(GAME* game, ACTOR* label) { + if (Common_Get(player_actor_exists) == FALSE) { + return FALSE; + } + + return GET_PLAYER_ACTOR_GAME(game)->Check_able_force_speak_label_proc(game, label); +} + +extern void mPlib_Set_able_force_speak_label(ACTOR* label) { + if (Common_Get(player_actor_exists)) { + GET_PLAYER_ACTOR_NOW()->able_force_speak_label = (u32)label; + } +} + +extern void mPlib_Reset_able_force_speak_label(void) { + mPlib_Set_able_force_speak_label(NULL); +} + +extern u8 ply_1_get_change12_tex_index[]; +extern u8 ply_1_kokeru_a12_tex_index[]; +extern u8 ply_1_kokeru_getup_a12_tex_index[]; +extern u8 ply_1_kokeru_getup_n12_tex_index[]; +extern u8 ply_1_kokeru_n12_tex_index[]; +extern u8 ply_1_axe_swing12_tex_index[]; +extern u8 ply_1_kokeru12_tex_index[]; +extern u8 ply_1_kokeru_getup12_tex_index[]; +extern u8 ply_1_axe_hane12_tex_index[]; +extern u8 ply_1_axe_suka12_tex_index[]; +extern u8 ply_1_get_t12_tex_index[]; +extern u8 ply_1_menu_change12_tex_index[]; +extern u8 ply_1_not_sao_swing12_tex_index[]; +extern u8 ply_1_not_dig12_tex_index[]; +extern u8 ply_1_dig_suka12_tex_index[]; +extern u8 ply_1_shake12_tex_index[]; +extern u8 ply_1_eat12_tex_index[]; +extern u8 ply_1_gaaan12_tex_index[]; +extern u8 ply_1_deru12_tex_index[]; +extern u8 ply_1_guratuku12_tex_index[]; +extern u8 ply_1_otiru12_tex_index[]; +extern u8 ply_1_biku12_tex_index[]; +extern u8 ply_1_hati12_tex_index[]; +extern u8 ply_1_hati22_tex_index[]; +extern u8 ply_1_hati32_tex_index[]; +extern u8 ply_1_deru22_tex_index[]; +extern u8 ply_1_otiru22_tex_index[]; +extern u8 ply_1_itazura12_tex_index[]; +extern u8 ply_1_yatta12_tex_index[]; +extern u8 ply_1_yatta22_tex_index[]; +extern u8 ply_1_yatta32_tex_index[]; +extern u8 ply_1_mosquito12_tex_index[]; +extern u8 ply_1_axe_break12_tex_index[]; + +extern u8* mPlib_Get_PlayerEyeTexAnimation_p(int anim_idx) { + if (anim_idx >= 0 && anim_idx < mPlayer_ANIM_NUM) { + static u8* const eye_tex_index_table[] = { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + ply_1_get_change12_tex_index, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + ply_1_kokeru_a12_tex_index, + ply_1_kokeru_getup_a12_tex_index, + ply_1_kokeru_getup_n12_tex_index, + ply_1_kokeru_n12_tex_index, + NULL, + NULL, + ply_1_axe_swing12_tex_index, + NULL, + ply_1_kokeru12_tex_index, + ply_1_kokeru_getup12_tex_index, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + ply_1_axe_hane12_tex_index, + ply_1_axe_suka12_tex_index, + NULL, + NULL, + ply_1_get_t12_tex_index, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + ply_1_menu_change12_tex_index, + NULL, + ply_1_not_sao_swing12_tex_index, + NULL, + NULL, + NULL, + NULL, + ply_1_not_dig12_tex_index, + NULL, + NULL, + NULL, + NULL, + ply_1_dig_suka12_tex_index, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + ply_1_shake12_tex_index, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + ply_1_eat12_tex_index, + ply_1_gaaan12_tex_index, + NULL, + ply_1_deru12_tex_index, + ply_1_guratuku12_tex_index, + NULL, + ply_1_otiru12_tex_index, + NULL, + NULL, + ply_1_biku12_tex_index, + ply_1_hati12_tex_index, + ply_1_hati22_tex_index, + ply_1_hati32_tex_index, + NULL, + ply_1_deru22_tex_index, + ply_1_otiru22_tex_index, + ply_1_itazura12_tex_index, + NULL, + NULL, + ply_1_yatta12_tex_index, + ply_1_yatta22_tex_index, + ply_1_yatta32_tex_index, + NULL, + ply_1_mosquito12_tex_index, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + ply_1_axe_break12_tex_index, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }; + + return eye_tex_index_table[anim_idx]; + } + + return NULL; +} + +extern u8 ply_1_get_change11_tex_index[]; +extern u8 ply_1_kokeru_a11_tex_index[]; +extern u8 ply_1_kokeru_getup_a11_tex_index[]; +extern u8 ply_1_kokeru_getup_n11_tex_index[]; +extern u8 ply_1_kokeru_n11_tex_index[]; +extern u8 ply_1_axe_swing11_tex_index[]; +extern u8 ply_1_kokeru11_tex_index[]; +extern u8 ply_1_kokeru_getup11_tex_index[]; +extern u8 ply_1_axe_hane11_tex_index[]; +extern u8 ply_1_axe_suka11_tex_index[]; +extern u8 ply_1_get_t11_tex_index[]; +extern u8 ply_1_get_t21_tex_index[]; +extern u8 ply_1_not_get_t11_tex_index[]; +extern u8 ply_1_menu_change11_tex_index[]; +extern u8 ply_1_not_sao_swing11_tex_index[]; +extern u8 ply_1_not_dig11_tex_index[]; +extern u8 ply_1_dig_suka11_tex_index[]; +extern u8 ply_1_eat11_tex_index[]; +extern u8 ply_1_gaaan11_tex_index[]; +extern u8 ply_1_deru11_tex_index[]; +extern u8 ply_1_guratuku11_tex_index[]; +extern u8 ply_1_mogaku11_tex_index[]; +extern u8 ply_1_otiru11_tex_index[]; +extern u8 ply_1_biku11_tex_index[]; +extern u8 ply_1_hati11_tex_index[]; +extern u8 ply_1_hati21_tex_index[]; +extern u8 ply_1_hati31_tex_index[]; +extern u8 ply_1_deru21_tex_index[]; +extern u8 ply_1_otiru21_tex_index[]; +extern u8 ply_1_itazura11_tex_index[]; +extern u8 ply_1_yatta11_tex_index[]; +extern u8 ply_1_yatta21_tex_index[]; +extern u8 ply_1_yatta31_tex_index[]; +extern u8 ply_1_mosquito11_tex_index[]; +extern u8 ply_1_axe_break11_tex_index[]; + +extern u8* mPlib_Get_PlayerMouthTexAnimation_p(int anim_idx) { + if (anim_idx >= 0 && anim_idx < mPlayer_ANIM_NUM) { + static u8* const mouth_tex_index_table[] = { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + ply_1_get_change11_tex_index, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + ply_1_kokeru_a11_tex_index, + ply_1_kokeru_getup_a11_tex_index, + ply_1_kokeru_getup_n11_tex_index, + ply_1_kokeru_n11_tex_index, + NULL, + NULL, + ply_1_axe_swing11_tex_index, + NULL, + ply_1_kokeru11_tex_index, + ply_1_kokeru_getup11_tex_index, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + ply_1_axe_hane11_tex_index, + ply_1_axe_suka11_tex_index, + NULL, + NULL, + ply_1_get_t11_tex_index, + ply_1_get_t21_tex_index, + NULL, + NULL, + NULL, + NULL, + NULL, + ply_1_not_get_t11_tex_index, + NULL, + ply_1_menu_change11_tex_index, + NULL, + ply_1_not_sao_swing11_tex_index, + NULL, + NULL, + NULL, + NULL, + ply_1_not_dig11_tex_index, + NULL, + NULL, + NULL, + NULL, + ply_1_dig_suka11_tex_index, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + ply_1_eat11_tex_index, + ply_1_gaaan11_tex_index, + NULL, + ply_1_deru11_tex_index, + ply_1_guratuku11_tex_index, + ply_1_mogaku11_tex_index, + ply_1_otiru11_tex_index, + NULL, + NULL, + ply_1_biku11_tex_index, + ply_1_hati11_tex_index, + ply_1_hati21_tex_index, + ply_1_hati31_tex_index, + NULL, + ply_1_deru21_tex_index, + ply_1_otiru21_tex_index, + ply_1_itazura11_tex_index, + NULL, + NULL, + ply_1_yatta11_tex_index, + ply_1_yatta21_tex_index, + ply_1_yatta31_tex_index, + NULL, + ply_1_mosquito11_tex_index, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + ply_1_axe_break11_tex_index, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }; + + return mouth_tex_index_table[anim_idx]; + } + + return NULL; +} + +extern u8* mPlib_Get_eye_tex_p(int idx) { + if (idx >= 0 && idx < mPlayer_EYE_TEX_NUM) { + u8* face_tex_p = mPlib_get_player_face_p(gamePT); + + if (face_tex_p != NULL) { + return face_tex_p + idx * 0x100; + } + } + + return NULL; +} + +extern u8* mPlib_Get_mouth_tex_p(int idx) { + if (idx >= 0 && idx < mPlayer_MOUTH_TEX_NUM) { + u8* face_tex_p = mPlib_get_player_face_p(gamePT); + + if (face_tex_p != NULL) { + face_tex_p += (mPlayer_EYE_TEX_NUM * 0x100) + idx * 0x100; + return face_tex_p; + } + } + + return NULL; +} + +extern int mPlib_request_main_invade_type1(GAME* game) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_invade_all_proc(game, mPlayer_REQUEST_PRIORITY_2); +} + +extern int mPlib_request_main_refuse_type1(GAME* game) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_refuse_all_proc(game, mPlayer_REQUEST_PRIORITY_34); +} + +extern int mPlib_request_main_wait_type3(GAME* game) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_return_demo_all_proc(game, mPlayer_INDEX_WAIT, 3.0f, + mPlayer_REQUEST_PRIORITY_19); +} + +extern int mPlib_request_main_demo_get_golden_item2_type1(GAME* game, int golden_item_type) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_demo_get_golden_item2_all_proc(game, golden_item_type, + mPlayer_REQUEST_PRIORITY_34); +} + +extern int mPlib_request_main_talk_end_type1(GAME* game, int wait_demo, int demo_get_golden_axe) { + if (wait_demo == FALSE) { + if (demo_get_golden_axe == FALSE) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_return_demo_all_proc(game, mPlayer_INDEX_WAIT, 3.0f, + mPlayer_REQUEST_PRIORITY_19); + } else { + return GET_PLAYER_ACTOR_GAME(game)->request_main_demo_get_golden_axe_wait_all_proc( + game, mPlayer_REQUEST_PRIORITY_33); + } + } else { + return mPlib_request_main_demo_wait_type1(game, FALSE, NULL); + } +} + +extern int mPlib_request_main_talk_type1(GAME* game, ACTOR* talk_actor_p, int turn_flag, int umbrella_flag) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_talk_all_proc(game, talk_actor_p, turn_flag, -5.0f, umbrella_flag, + mPlayer_REQUEST_PRIORITY_19); +} + +extern int mPlib_request_main_hold_type1(GAME* game, int ftr_no, int player_direct, const xyz_t* player_pos_p) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_hold_all_proc(game, ftr_no, player_direct, player_pos_p, -5.0f, 1, + mPlayer_REQUEST_PRIORITY_9); +} + +extern int mPlib_request_main_recieve_wait_type1(GAME* game, mActor_name_t item, int counter_flag) { + GET_PLAYER_ACTOR_GAME(game)->request_main_recieve_wait_all_proc( + game, GET_PLAYER_ACTOR_GAME(game)->main_data.talk.talk_actor_p, + GET_PLAYER_ACTOR_GAME(game)->main_data.talk.turn_flag, GET_PLAYER_ACTOR_GAME(game)->now_main_index, item, + counter_flag, mPlayer_REQUEST_PRIORITY_19); +} + +extern int mPlib_request_main_give_type1(GAME* game, mActor_name_t item, int mode, int present, int on_surface) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + int return_main_index = player->now_main_index; + ACTOR* talk_actor_p; + int turn_flag; + + if (return_main_index == mPlayer_INDEX_TALK) { + talk_actor_p = player->main_data.talk.talk_actor_p; + turn_flag = player->main_data.talk.turn_flag; + } else { + talk_actor_p = NULL; + turn_flag = FALSE; + } + + GET_PLAYER_ACTOR_GAME(game)->request_main_give_all_proc(game, talk_actor_p, turn_flag, return_main_index, item, + mode, present, on_surface, mPlayer_REQUEST_PRIORITY_19); +} + +extern int mPlib_request_main_sitdown_type1(GAME* game, int direct, const xyz_t* pos_p, int ftr_no) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_sitdown_all_proc(game, direct, pos_p, ftr_no, + mPlayer_REQUEST_PRIORITY_2); +} + +extern int mPlib_request_main_close_furniture_type1(GAME* game) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_close_furniture_all_proc(game, mPlayer_REQUEST_PRIORITY_23); +} + +extern int mPlib_request_main_lie_bed_type1(GAME* game, int direct, const xyz_t* pos_p, int head_direct, int ftr_no) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_lie_bed_all_proc(game, direct, pos_p, head_direct, ftr_no, + mPlayer_REQUEST_PRIORITY_9); +} + +extern int mPlib_request_main_hide_type1(GAME* game) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_hide_all_proc(game, mPlayer_REQUEST_PRIORITY_43); +} + +extern int mPlib_request_main_groundhog_type1(GAME* game) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_groundhog_proc(game, mPlayer_REQUEST_PRIORITY_43); +} + +extern int mPlib_request_main_door_type1(GAME* game, const xyz_t* pos_p, s16 angle_y, int door_type, void* door_label) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_door_all_proc(game, pos_p, angle_y, door_type, door_label, + mPlayer_REQUEST_PRIORITY_7) != FALSE; +} + +extern int mPlib_request_main_door_type2(GAME* game, const xyz_t* pos_p, s16 angle_y, int door_type, void* door_label) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_door_all_proc(game, pos_p, angle_y, door_type, door_label, + mPlayer_REQUEST_PRIORITY_19); +} + +extern int mPlib_request_main_outdoor_type1(GAME* game, int is_start_demo, int door_type) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_outdoor_all_proc(game, is_start_demo, door_type, + mPlayer_REQUEST_PRIORITY_43); +} + +extern int mPlib_request_main_wash_car_type1(GAME* game, const xyz_t* car_pos_p, const xyz_t* ret_pos_p, + s16 ret_angle_y, ACTOR* ctrl_actor_p) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_wash_car_all_proc(game, car_pos_p, ret_pos_p, ret_angle_y, + ctrl_actor_p, mPlayer_REQUEST_PRIORITY_19); +} + +extern int mPlib_request_main_rotate_octagon_type1(GAME* game, const xyz_t* pos_p, s16 angle_y) { + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_TALK) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_rotate_octagon_all_proc( + game, GET_PLAYER_ACTOR_GAME(game)->main_data.talk.talk_actor_p, + GET_PLAYER_ACTOR_GAME(game)->main_data.talk.turn_flag, GET_PLAYER_ACTOR_GAME(game)->now_main_index, pos_p, + angle_y, mPlayer_REQUEST_PRIORITY_19); + } else { + return GET_PLAYER_ACTOR_GAME(game)->request_main_rotate_octagon_all_proc( + game, NULL, FALSE, GET_PLAYER_ACTOR_GAME(game)->now_main_index, pos_p, angle_y, + mPlayer_REQUEST_PRIORITY_19); + } +} + +extern int mPlib_request_main_throw_money_type1(GAME* game, const xyz_t* pos_p, s16 angle_y) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_throw_money_all_proc(game, pos_p, angle_y, + mPlayer_REQUEST_PRIORITY_19); +} + +extern int mPlib_request_main_pray_type1(GAME* game, const xyz_t* pos_p, s16 angle_y) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_pray_all_proc(game, pos_p, angle_y, mPlayer_REQUEST_PRIORITY_19); +} + +extern int mPlib_request_main_mail_jump_type1(GAME* game, const xyz_t* pos_p, s16 angle_y) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_mail_jump_all_proc(game, pos_p, angle_y, + mPlayer_REQUEST_PRIORITY_9); +} + +extern int mPlib_request_main_stung_bee_type1(GAME* game) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_stung_bee_all_proc(game, mPlayer_REQUEST_PRIORITY_25); +} + +extern int mPlib_request_main_stung_mosquito_type1(void* label) { + return GET_PLAYER_ACTOR_NOW()->request_main_stung_mosquito_all_proc(gamePT, label, mPlayer_REQUEST_PRIORITY_25); +} + +extern int mPlib_request_main_switch_on_lighthouse_type1(GAME* game, const xyz_t* pos_p, s16 angle_y) { + return GET_PLAYER_ACTOR_NOW()->request_main_switch_on_lighthouse_all_proc(game, pos_p, angle_y, + mPlayer_REQUEST_PRIORITY_9); +} + +extern int mPlib_request_main_demo_geton_boat_type1(f32 goal_x, f32 goal_z, s16 angleY) { + ACTOR* actorx = GET_PLAYER_ACTOR_NOW_ACTOR(); + xyz_t goal_pos; + + goal_pos.x = goal_x; + goal_pos.z = goal_z; + goal_pos.y = actorx->world.position.y; + + return GET_PLAYER_ACTOR_NOW()->request_main_demo_geton_boat_all_proc(gamePT, &goal_pos, angleY, + mPlayer_REQUEST_PRIORITY_19); +} + +extern int mPlib_request_main_demo_getoff_boat_standup_type1(const xyz_t* pos_p, s16 angleY) { + return GET_PLAYER_ACTOR_NOW()->request_main_demo_getoff_boat_standup_all_proc(gamePT, pos_p, angleY, + mPlayer_REQUEST_PRIORITY_19); +} + +extern int mPlib_request_main_shock_type1(GAME* game, f32 time, s16 angle_y, int axe_swing) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_shock_all_proc(game, time, angle_y, FALSE, axe_swing, + mPlayer_REQUEST_PRIORITY_14); +} + +extern int mPlib_request_main_change_cloth_forNPC_type1(GAME* game, mActor_name_t cloth_item, u16 cloth_idx, + int try_on_flag) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_change_cloth_forNPC_proc(game, cloth_item, cloth_idx, try_on_flag); +} + +extern int mPlib_request_main_push_snowball_type1(GAME* game, void* label) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_push_snowball_all_proc(game, label, FALSE, + mPlayer_REQUEST_PRIORITY_2); +} + +extern int mPlib_request_main_push_snowball_end_type1(GAME* game) { + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_PUSH_SNOWBALL) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_wait_all_proc(game, -5.0f, 0.0f, 0, + mPlayer_REQUEST_PRIORITY_1); + } + + return FALSE; +} + +extern int mPlib_request_main_demo_wait_type1(GAME* game, int umbrella_flag, void* label) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_demo_wait_all_proc(game, umbrella_flag, label, + mPlayer_REQUEST_PRIORITY_19); +} + +extern int mPlib_request_main_demo_walk_type1(GAME* game, f32 goal_x, f32 goal_z, f32 speed, int wait_flag) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_demo_walk_all_proc(game, goal_x, goal_z, speed, wait_flag, + mPlayer_REQUEST_PRIORITY_19); +} + +extern int mPlib_request_main_demo_geton_train_type1(GAME* game, const xyz_t* pos_p) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_demo_geton_train_all_proc(game, pos_p, DEG2SHORT_ANGLE2(180.0f), + mPlayer_REQUEST_PRIORITY_19); +} + +extern int mPlib_request_main_demo_getoff_train_type1(GAME* game) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_demo_getoff_train_all_proc( + game, &GET_PLAYER_ACTOR_GAME_ACTOR(game)->world.position, + GET_PLAYER_ACTOR_GAME_ACTOR(game)->shape_info.rotation.y, mPlayer_REQUEST_PRIORITY_19); +} + +extern int mPlib_request_main_demo_standing_train_type1(GAME* game) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_demo_standing_train_all_proc(game, mPlayer_REQUEST_PRIORITY_19); +} + +extern int mPlib_check_request_main_talk_type1_priority(GAME* game) { + int res = FALSE; + + if (GET_PLAYER_ACTOR_GAME(game)->check_request_main_priority_proc(game, mPlayer_REQUEST_PRIORITY_19) > 0) { + if (GET_PLAYER_ACTOR_GAME(game)->check_cancel_request_change_proc_index_proc(mPlayer_INDEX_TALK) == FALSE) { + if (mPlib_get_player_actor_main_index(game) != mPlayer_INDEX_DEMO_WAIT && + mPlib_get_player_actor_main_index(game) != mPlayer_INDEX_DEMO_WALK && + mPlib_get_player_actor_main_index(game) != mPlayer_INDEX_TIRED && + mPlib_get_player_actor_main_index(game) != mPlayer_INDEX_TALK && + mPlib_get_player_actor_main_index(game) != mPlayer_INDEX_WASH_CAR && + mPlib_get_player_actor_main_index(game) != mPlayer_INDEX_DEMO_STANDING_TRAIN) { + res = TRUE; + } + } + } + + return res; +} + +extern int mPlib_check_request_main_speak_type1_priority(GAME* game) { + int res = FALSE; + + if (GET_PLAYER_ACTOR_GAME(game)->check_request_main_priority_proc(game, mPlayer_REQUEST_PRIORITY_19) > 0) { + if (GET_PLAYER_ACTOR_GAME(game)->check_cancel_request_change_proc_index_proc(mPlayer_INDEX_TALK) == FALSE) { + res = TRUE; + } + } + + return res; +} + +extern int mPlib_check_request_main_door_type1_priority(GAME* game) { + int res = FALSE; + + if (GET_PLAYER_ACTOR_GAME(game)->check_request_main_priority_proc(game, mPlayer_REQUEST_PRIORITY_7) > 0) { + if (GET_PLAYER_ACTOR_GAME(game)->check_cancel_request_change_proc_index_proc(mPlayer_INDEX_DOOR) == FALSE) { + res = TRUE; + } + } + + return res; +} + +extern int mPlib_check_request_main_door_type2_priority(GAME* game) { + int res = FALSE; + + if (GET_PLAYER_ACTOR_GAME(game)->check_request_main_priority_proc(game, mPlayer_REQUEST_PRIORITY_19) > 0) { + if (GET_PLAYER_ACTOR_GAME(game)->check_cancel_request_change_proc_index_proc(mPlayer_INDEX_DOOR) == FALSE) { + res = TRUE; + } + } + + return res; +} + +extern int mPlib_check_request_main_wade_priority(GAME* game) { + int res; + + if (mPlib_get_player_actor_request_main_index(game) == mPlayer_INDEX_WADE_SNOWBALL) { + res = FALSE; + + if (GET_PLAYER_ACTOR_GAME(game)->check_request_main_priority_proc(game, mPlayer_REQUEST_PRIORITY_2) > 0) { + if (GET_PLAYER_ACTOR_GAME(game)->check_cancel_request_change_proc_index_proc(mPlayer_INDEX_WADE_SNOWBALL) == + FALSE) { + res = TRUE; + } + } + } else { + res = FALSE; + + if (GET_PLAYER_ACTOR_GAME(game)->check_request_main_priority_proc(game, mPlayer_REQUEST_PRIORITY_2) > 0) { + if (GET_PLAYER_ACTOR_GAME(game)->check_cancel_request_change_proc_index_proc(mPlayer_INDEX_WADE) == FALSE) { + res = TRUE; + } + } + } + + return res; +} + +extern int mPlib_check_request_main_demo_wade_priority(GAME* game) { + int res = FALSE; + + if (GET_PLAYER_ACTOR_GAME(game)->check_request_main_priority_proc(game, mPlayer_REQUEST_PRIORITY_19) > 0) { + if (GET_PLAYER_ACTOR_GAME(game)->check_cancel_request_change_proc_index_proc(mPlayer_INDEX_DEMO_WADE) == + FALSE) { + res = TRUE; + } + } + + return res; +} + +extern int mPlib_check_request_main_demo_geton_boat_wade_priority(GAME* game) { + int res = FALSE; + + if (GET_PLAYER_ACTOR_GAME(game)->check_request_main_priority_proc(game, mPlayer_REQUEST_PRIORITY_19) > 0) { + if (GET_PLAYER_ACTOR_GAME(game)->check_cancel_request_change_proc_index_proc( + mPlayer_INDEX_DEMO_GETON_BOAT_WADE) == FALSE) { + res = TRUE; + } + } + + return res; +} + +static int mPlib_strength_request_main_index_priority(GAME* game, int priority) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + if (player->requested_main_index_priority < priority) { + player->requested_main_index_priority = priority; + return TRUE; + } + + return FALSE; +} + +extern int mPlib_strength_request_main_wade_priority(GAME* game) { + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_WADE) { + return TRUE; + } + + if (mPlib_get_player_actor_request_main_index(game) == mPlayer_INDEX_WADE) { + mPlib_strength_request_main_index_priority(game, mPlayer_REQUEST_PRIORITY_19); + return TRUE; + } + + return FALSE; +} + +extern int mPlib_strength_request_main_demo_wade_priority(GAME* game) { + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_DEMO_WADE) { + return TRUE; + } + + if (mPlib_get_player_actor_request_main_index(game) == mPlayer_INDEX_DEMO_WADE) { + mPlib_strength_request_main_index_priority(game, mPlayer_REQUEST_PRIORITY_19); + return TRUE; + } + + return FALSE; +} + +extern int mPlib_strength_request_main_wade_snowball_priority(GAME* game) { + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_WADE_SNOWBALL) { + return TRUE; + } + + if (mPlib_get_player_actor_request_main_index(game) == mPlayer_INDEX_WADE_SNOWBALL) { + mPlib_strength_request_main_index_priority(game, mPlayer_REQUEST_PRIORITY_19); + return TRUE; + } + + return FALSE; +} + +extern int mPlib_strength_request_main_demo_geton_boat_wade_priority(GAME* game) { + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_DEMO_GETON_BOAT_WADE) { + return TRUE; + } + + if (mPlib_get_player_actor_request_main_index(game) == mPlayer_INDEX_DEMO_GETON_BOAT_WADE) { + mPlib_strength_request_main_index_priority(game, mPlayer_REQUEST_PRIORITY_19); + return TRUE; + } + + return FALSE; +} + +extern int mPlib_strength_request_main_door_priority(GAME* game) { + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_DOOR) { + return TRUE; + } + + if (mPlib_get_player_actor_request_main_index(game) == mPlayer_INDEX_DOOR) { + mPlib_strength_request_main_index_priority(game, mPlayer_REQUEST_PRIORITY_19); + return TRUE; + } + + return FALSE; +} + +extern int mPlib_check_request_main_outdoor_priority(GAME* game) { + return TRUE; +} + +extern int mPlib_Check_SetOrderSubmenu(void) { + mPlayer_change_data_from_submenu_c* change_data_from_submenu_p = mPlib_Get_change_data_from_submenu_p(); + + return change_data_from_submenu_p->requested_index_pending != FALSE; +} + +static int mPlib_check_request_change_item(void) { + int idx; + + if (Common_Get(player_actor_exists) == FALSE) { + return TRUE; + } + + if (mPlib_check_DynamicLinkFile_m_player() == FALSE) { + return TRUE; + } + + idx = GET_PLAYER_ACTOR_GAME(gamePT)->check_request_change_item_proc(gamePT); + return mPlayer_MAIN_INDEX_VALID(idx); +} + +static int mPlib_CheckScene_AbleSubmenu(void) { + + if (Common_Get(player_actor_exists) == FALSE) { + return FALSE; + } + + if (mPlib_check_DynamicLinkFile_m_player() == FALSE) { + return FALSE; + } + + return GET_PLAYER_ACTOR_GAME(gamePT)->CheckScene_AbleSubmenu_proc(); +} + +extern int mPlib_able_submenu_type1(GAME* game) { + int res = FALSE; + + if (GET_PLAYER_ACTOR_GAME(game)->check_request_main_priority_proc(game, mPlayer_REQUEST_PRIORITY_19) > 0 && + mPlib_Check_SetOrderSubmenu() == FALSE && mPlib_check_request_change_item() == FALSE && + mPlib_check_player_warp_forEvent() == FALSE && + GET_PLAYER_ACTOR_GAME(game)->able_submenu_request_main_index_proc(game) && mPlib_CheckScene_AbleSubmenu()) { + res = TRUE; + } + + return res; +} + +static int mPlib_check_priority_event_type1(GAME* game) { + return GET_PLAYER_ACTOR_GAME(game)->check_request_main_priority_proc(game, mPlayer_REQUEST_PRIORITY_17) > 0; +} + +extern int mPlib_check_player_open_umbrella(GAME* game) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + if (player->umbrella_actor != NULL) { + UMBRELLA_ACTOR* umbrella_actor = (UMBRELLA_ACTOR*)player->umbrella_actor; + + if (umbrella_actor->opened_fully) { + return TRUE; + } + } + + return FALSE; +} + +extern int mPlib_check_player_outdoor_start(GAME* game) { + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_OUTDOOR) { + mPlayer_main_outdoor_c* outdoor_p = &GET_PLAYER_ACTOR_GAME(game)->main_data.outdoor; + + if (outdoor_p->is_demo) { + return TRUE; + } + } + + return FALSE; +} + +extern int mPlib_check_label_player_demo_wait(GAME* game, void* label) { + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_DEMO_WAIT) { + mPlayer_main_demo_wait_c* demo_wait_p = &GET_PLAYER_ACTOR_GAME(game)->main_data.demo_wait; + + if (demo_wait_p->label == (u32)label) { + return TRUE; + } + } + + return FALSE; +} + +extern void mPlib_Set_goal_player_demo_walk(f32 pos_x, f32 pos_z, f32 speed) { + mDemo_Set_OrderValue(mDemo_ORDER_PLAYER, 2, (int)pos_x); + mDemo_Set_OrderValue(mDemo_ORDER_PLAYER, 4, (int)pos_z); + mDemo_Set_OrderValue(mDemo_ORDER_PLAYER, 7, (int)(speed * 100.0f)); +} + +extern void mPlib_Get_goal_player_demo_walk(f32* pos_x_p, f32* pos_z_p, f32* speed_p) { + *pos_x_p = (f32)(int)mDemo_Get_OrderValue(mDemo_ORDER_PLAYER, 2); + *pos_z_p = (f32)(int)mDemo_Get_OrderValue(mDemo_ORDER_PLAYER, 4); + *speed_p = (f32)(int)mDemo_Get_OrderValue(mDemo_ORDER_PLAYER, 7) * 0.01f; +} + +extern void mPlib_Set_continue_player_after_demo_walk(int value) { + mDemo_Set_OrderValue(mDemo_ORDER_PLAYER, 8, value); +} + +extern int mPlib_Get_continue_player_after_demo_walk(void) { + return mDemo_Get_OrderValue(mDemo_ORDER_PLAYER, 8); +} + +extern void mPlib_Set_end_player_demo_walk(int value) { + mDemo_Set_OrderValue(mDemo_ORDER_PLAYER, 9, value); +} + +extern int mPlib_Get_end_player_demo_walk(void) { + return mDemo_Get_OrderValue(mDemo_ORDER_PLAYER, 9); +} + +extern int mPlib_Get_space_putin_item(void) { + return mPr_GetPossessionItemIdxWithCond(Now_Private, EMPTY_NO, mPr_ITEM_COND_NORMAL); +} + +extern int mPlib_Get_space_putin_item_forTICKET(mActor_name_t* item_p) { + mActor_name_t item = *item_p; + + if (ITEM_NAME_GET_TYPE(item) == NAME_TYPE_ITEM1 && ITEM_NAME_GET_CAT(item) == ITEM1_CAT_TICKET) { + int ticket_month = (item >> 3) & 0xF; + int ticket_count = 1 + (item & 7); + int ticket_begin = ITM_TICKET_START | (ticket_month << 3); + int ticket_end = ticket_begin + (5 - ticket_count); + int idx = mPr_GetPossessionItemIdxKindWithCond(Now_Private, ticket_begin, ticket_end, mPr_ITEM_COND_NORMAL); + + if (idx >= 0) { + *item_p = Now_Private->inventory.pockets[idx] + ticket_count; + return idx; + } + } else if (ITEM_IS_PAPER(item)) { + int paper_base = item - ITM_PAPER_START; + int paper_type = PAPER2TYPE(paper_base); + int paper_num = PAPER2STACK(paper_base) + 1; + int i; + + for (i = 4 - paper_num; i > 0; i--) { + mActor_name_t paper_item = ITM_PAPER_START + paper_type + (i - 1) * PAPER_UNIQUE_NUM; + int idx = mPr_GetPossessionItemIdxWithCond(Now_Private, paper_item, mPr_ITEM_COND_NORMAL); + + if (idx != -1) { + *item_p = (mActor_name_t)(ITM_PAPER_START + paper_type + (i + paper_num - 1) * PAPER_UNIQUE_NUM); + return idx; + } + } + } + + return mPlib_Get_space_putin_item(); +} + +extern int mPlib_Get_space_putin_item_forHITODAMA(mActor_name_t* item_p) { + mActor_name_t item = *item_p; + + if (ITEM_IS_WISP(item)) { + int hitodama_count = ITEM_IS_WISP(item) ? (1 + (item - ITM_SPIRIT0)) : 0; + mActor_name_t hitodama_begin = ITM_SPIRIT0; + mActor_name_t hitodama_end = hitodama_begin + (5 - hitodama_count); + int idx = mPr_GetPossessionItemIdxKindWithCond(Now_Private, hitodama_begin, hitodama_end, mPr_ITEM_COND_NORMAL); + + if (idx >= 0) { + *item_p = Now_Private->inventory.pockets[idx] + hitodama_count; + return idx; + } + } + + return mPlib_Get_space_putin_item(); +} + +extern int mPlib_able_player_warp_forEvent(void) { + if (mPlib_check_DynamicLinkFile_m_player() == FALSE) { + return FALSE; + } + + if (mPlib_check_player_warp_forEvent()) { + return FALSE; + } + + if (mEv_CheckFirstIntro()) { + return FALSE; + } + + if (Common_Get(player_actor_exists) == FALSE) { + return FALSE; + } + + if (Common_Get(complete_payment_type) != mPlayer_COMPLETE_PAYMENT_TYPE_NONE) { + return FALSE; + } + + if (Common_Get(fail_emu_flag) != FALSE) { + return FALSE; + } + + if (mPlib_Check_SetOrderSubmenu()) { + return FALSE; + } + + if (mPlib_check_request_change_item()) { + return FALSE; + } + + if (mPlib_check_priority_event_type1(gamePT)) { + return GET_PLAYER_ACTOR_NOW()->check_cancel_event_without_priority_proc(gamePT) == FALSE; + } + + if (mPlib_get_player_actor_main_index(gamePT) == mPlayer_INDEX_RELAX_ROD || + mPlib_get_player_actor_main_index(gamePT) == mPlayer_INDEX_READY_NET || + mPlib_get_player_actor_main_index(gamePT) == mPlayer_INDEX_READY_WALK_NET || + mPlib_get_player_actor_main_index(gamePT) == mPlayer_INDEX_HOLD || + mPlib_get_player_actor_main_index(gamePT) == mPlayer_INDEX_SITDOWN_WAIT || + mPlib_get_player_actor_main_index(gamePT) == mPlayer_INDEX_WAIT_BED || + mPlib_get_player_actor_main_index(gamePT) == mPlayer_INDEX_STRUGGLE_PITFALL) { + if (GET_PLAYER_ACTOR_NOW()->requested_main_index_changed == FALSE) { + return TRUE; + } + } + + return FALSE; +} + +extern int mPlib_request_player_warp_forEvent(void) { + Common_Set(player_warp_request, TRUE); + return TRUE; +} + +extern int mPlib_cancel_player_warp_forEvent(void) { + Common_Set(player_warp_request, FALSE); + return TRUE; +} + +extern int mPlib_check_player_warp_forEvent(void) { + return Common_Get(player_warp_request); +} + +extern int mPlib_Check_HitAxe(xyz_t* pos_p) { + return GET_PLAYER_ACTOR_NOW()->Check_HitAxe_proc(GET_PLAYER_ACTOR_NOW_ACTOR(), pos_p); +} + +extern int mPlib_Check_VibUnit_OneFrame(const xyz_t* pos_p) { + return GET_PLAYER_ACTOR_NOW()->Check_VibUnit_OneFrame_proc(GET_PLAYER_ACTOR_NOW_ACTOR(), pos_p); +} + +extern int mPlib_Check_StopNet(xyz_t* pos_p) { + return GET_PLAYER_ACTOR_NOW()->Check_StopNet_proc(GET_PLAYER_ACTOR_NOW_ACTOR(), pos_p); +} + +extern u32 mPlib_Get_item_net_catch_label(void) { + return GET_PLAYER_ACTOR_NOW()->Get_item_net_catch_label_proc(GET_PLAYER_ACTOR_NOW_ACTOR()); +} + +extern int mPlib_Change_item_net_catch_label(u32 label, s8 type) { + return GET_PLAYER_ACTOR_NOW()->Change_item_net_catch_label_proc(GET_PLAYER_ACTOR_NOW_ACTOR(), label, type); +} + +extern int mPlib_Check_HitScoop(xyz_t* pos_p) { + return GET_PLAYER_ACTOR_NOW()->Check_HitScoop_proc(GET_PLAYER_ACTOR_NOW_ACTOR(), pos_p); +} + +extern int mPlib_Check_DigScoop(xyz_t* pos_p) { + return GET_PLAYER_ACTOR_NOW()->Check_DigScoop_proc(GET_PLAYER_ACTOR_NOW_ACTOR(), pos_p); +} + +extern int mPlib_Get_address_able_display(void) { + return GET_PLAYER_ACTOR_NOW()->address_able_display; +} + +static ACTOR* mPlib_Search_exist_npc_inCircle_forScoop(GAME* game, const xyz_t* pos_p, f32 radius_sq) { + GAME_PLAY* play = (GAME_PLAY*)game; + Actor_info* actor_info = &play->actor_info; + Actor_list* npc_actor_list = &actor_info->list[ACTOR_PART_NPC]; + ACTOR* actor = npc_actor_list->actor; + f32 pos_x = pos_p->x; + f32 pos_z = pos_p->z; + + for (actor; actor != NULL; actor = actor->next_actor) { + f32 dx = actor->world.position.x - pos_x; + f32 dz = actor->world.position.z - pos_z; + + if (Math3DVecLengthSquare2D(dx, dz) < radius_sq) { + NPC_ACTOR* npc_actor = (NPC_ACTOR*)actor; + + if (npc_actor->condition_info.hide_flg == FALSE) { + return actor; + } + } + } + + return NULL; +} + +static ACTOR* mPlib_Search_exist_psnowman_inCircle_forScoop(GAME* game, const xyz_t* pos_p, f32 radius_sq) { + GAME_PLAY* play = (GAME_PLAY*)game; + Actor_info* actor_info = &play->actor_info; + Actor_list* bg_actor_list = &actor_info->list[ACTOR_PART_BG]; + ACTOR* actor = bg_actor_list->actor; + f32 pos_x = pos_p->x; + f32 pos_z = pos_p->z; + + for (actor; actor != NULL; actor = actor->next_actor) { + if (actor->id == mAc_PROFILE_PSNOWMAN) { + f32 dx = actor->world.position.x - pos_x; + f32 dz = actor->world.position.z - pos_z; + + if (Math3DVecLengthSquare2D(dx, dz) < radius_sq) { + return actor; + } + } + } + + return NULL; +} + +static ACTOR* mPlib_Search_exist_snowball_forScoop(GAME* game, const xyz_t* pos_p) { + GAME_PLAY* play = (GAME_PLAY*)game; + Actor_info* actor_info = &play->actor_info; + Actor_list* bg_actor_list = &actor_info->list[ACTOR_PART_BG]; + ACTOR* actor = bg_actor_list->actor; + f32 pos_x = pos_p->x; + f32 pos_y = pos_p->y; + f32 pos_z = pos_p->z; + + for (actor; actor != NULL; actor = actor->next_actor) { + if (actor->id == mAc_PROFILE_SNOWMAN) { + SNOWMAN_ACTOR* snowball = (SNOWMAN_ACTOR*)actor; + f32 dy = actor->world.position.y - pos_y; + f32 abs_dy = ABS(dy); + f32 radius = MIN(10.0f + 20.0f * snowball->normalized_scale, 19.0f); + + if (abs_dy <= 35.0f) { + f32 dx = actor->world.position.x - pos_x; + f32 dz = actor->world.position.z - pos_z; + f32 len; + f32 sq_radius; + + radius += 19.0f; + len = Math3DVecLengthSquare2D(dx, dz); + sq_radius = SQ(radius); + + if (len < sq_radius) { + return actor; + } + } + } + } + + return NULL; +} + +static ACTOR* mPlib_Search_exist_ball_forScoop(GAME* game, const xyz_t* pos_p) { + GAME_PLAY* play = (GAME_PLAY*)game; + Actor_info* actor_info = &play->actor_info; + Actor_list* bg_actor_list = &actor_info->list[ACTOR_PART_BG]; + ACTOR* actor = bg_actor_list->actor; + f32 pos_x = pos_p->x; + f32 pos_y = pos_p->y; + f32 pos_z = pos_p->z; + + for (actor; actor != NULL; actor = actor->next_actor) { + if (actor->id == mAc_PROFILE_BALL) { + f32 dy = actor->world.position.y - pos_y; + f32 abs_dy = ABS(dy); + + if (abs_dy <= 20.0f) { + f32 dx = actor->world.position.x - pos_x; + f32 dz = actor->world.position.z - pos_z; + + if (Math3DVecLengthSquare2D(dx, dz) < SQ(39.0f)) { + return actor; + } + } + } + } + + return NULL; +} + +extern int mPlib_Check_scoop_after(GAME* game, xyz_t* pos_p, mActor_name_t* item_p, ACTOR** reflect_actor_pp, + int gold_scoop) { + ACTOR* player_actor = GET_PLAYER_ACTOR_GAME_ACTOR(game); + xyz_t* player_pos_p = &player_actor->world.position; + int player_ux; + int player_uz; + int field_type = Common_Get(field_type); + + if (reflect_actor_pp != NULL) { + *reflect_actor_pp = NULL; + } + + *item_p = EMPTY_NO; + + if (field_type == mFI_FIELDTYPE2_FG) { + if (mFI_Wpos2UtNum(&player_ux, &player_uz, *player_pos_p)) { + // clang-format off + static const int add_num[8][2] = { + { -1, -1 }, + { 0, -1 }, + { 1, -1 }, + { -1, 0 }, + // { 0, 0 }, <--- player pos + { 1, 0 }, + { -1, 1 }, + { 0, 1 }, + { 1, 1 }, + }; + // clang-format on + xyz_t unit_pos[8]; + int unit_num[8][2]; + int unit_exist[8]; + xyz_t center_ut_pos; + xyz_t unit_dist[8]; + s16 unit_angle_y[8]; + int unit_abs_diff_angle_y[8]; + f32 player_pos_x = player_pos_p->x; + f32 player_pos_y = player_pos_p->y; + f32 player_pos_z = player_pos_p->z; + int idx = 0; + int min_angle_y; + int player_angle_y; + int i; + + mFI_UtNum2CenterWpos(¢er_ut_pos, player_ux, player_uz); + + /* Get the center position for each surrounding unit and if it exists or not */ + for (i = 0; i < 8; i++) { + unit_num[i][0] = player_ux + add_num[i][0]; + unit_num[i][1] = player_uz + add_num[i][1]; + unit_exist[i] = mFI_UtNum2CenterWpos(&unit_pos[i], unit_num[i][0], unit_num[i][1]); + unit_pos[i].y = player_pos_y; + + if (unit_exist[i] == FALSE) { + unit_pos[i].x = center_ut_pos.x + unit_num[i][0] * mFI_UT_WORLDSIZE_X_F; + unit_pos[i].z = center_ut_pos.z + unit_num[i][1] * mFI_UT_WORLDSIZE_Z_F; + } + } + + /* Calculate distance and angle to center of each surrounding unit */ + for (i = 0; i < 8; i++) { + unit_dist[i].x = unit_pos[i].x - player_pos_x; + unit_dist[i].z = unit_pos[i].z - player_pos_z; + unit_angle_y[i] = atans_table(unit_dist[i].z, unit_dist[i].x); + } + + player_angle_y = player_actor->shape_info.rotation.y; + min_angle_y = DEG2SHORT_ANGLE2(360.0f); + + /* Find the closest unit in relation to player's rotation */ + for (i = 0; i < 8; i++) { + int diff_angle_y = unit_angle_y[i] - player_angle_y; + + unit_abs_diff_angle_y[i] = ABS(diff_angle_y); + + if (unit_abs_diff_angle_y[i] > DEG2SHORT_ANGLE2(180.0f)) { + unit_abs_diff_angle_y[i] = DEG2SHORT_ANGLE2(360.0f) - unit_abs_diff_angle_y[i]; + } + + if (min_angle_y > unit_abs_diff_angle_y[i]) { + min_angle_y = unit_abs_diff_angle_y[i]; + idx = i; + } + } + + /* Special handling for diagonal units */ + if (idx == 0 || idx == 2 || idx == 5 || idx == 7) { + int near_wall; + int too_far_away = FALSE; + int check_ut0; + int check_ut1; + int wall0 = FALSE; + int wall1 = FALSE; + f32 base_ut_y = mCoBG_GetBgY_OnlyCenter_FromWpos2(unit_pos[idx], 0.0f); + + if (idx == 0) { + check_ut0 = 1; + check_ut1 = 3; + } else if (idx == 2) { + check_ut0 = 1; + check_ut1 = 4; + } else if (idx == 5) { + check_ut0 = 3; + check_ut1 = 6; + } else { + check_ut0 = 4; + check_ut1 = 6; + } + + if (unit_exist[check_ut0]) { + f32 ground0 = mCoBG_GetBgY_OnlyCenter_FromWpos2(unit_pos[check_ut0], 0.0f); + f32 ground1 = mCoBG_Wpos2BgUtCenterHeight_AddColumn(unit_pos[check_ut0]); + + /* If the base ground position and the 'column' height aren't the same, and our ground position is + * less than the 'column' height, there must be a wall in front of us. */ + if (ground0 != ground1 && base_ut_y < ground1) { + wall0 = TRUE; + } + } + + if (unit_exist[check_ut1]) { + f32 ground0 = mCoBG_GetBgY_OnlyCenter_FromWpos2(unit_pos[check_ut1], 0.0f); + f32 ground1 = mCoBG_Wpos2BgUtCenterHeight_AddColumn(unit_pos[check_ut1]); + + /* If the base ground position and the 'column' height aren't the same, and our ground position is + * less than the 'column' height, there must be a wall in front of us. */ + if (ground0 != ground1 && base_ut_y < ground1) { + wall1 = TRUE; + } + } + + /* If both units diagonally have a wall then we've definitely hit a wall */ + if (wall0 && wall1) { + near_wall = TRUE; + } else { + near_wall = FALSE; + } + + if (near_wall == FALSE) { + f32 dist = Math3DVecLengthSquare2D(unit_dist[idx].z, unit_dist[idx].x); + + if (SQ(63.245553f) > dist) { + too_far_away = FALSE; + } else { + too_far_away = TRUE; + } + } + + if (too_far_away || near_wall) { + min_angle_y = DEG2SHORT_ANGLE2(360.0f); + + if (min_angle_y > unit_abs_diff_angle_y[1]) { + min_angle_y = unit_abs_diff_angle_y[1]; + idx = 1; + } + + if (min_angle_y > unit_abs_diff_angle_y[3]) { + min_angle_y = unit_abs_diff_angle_y[3]; + idx = 3; + } + + if (min_angle_y > unit_abs_diff_angle_y[4]) { + min_angle_y = unit_abs_diff_angle_y[4]; + idx = 4; + } + + if (min_angle_y > unit_abs_diff_angle_y[6]) { + min_angle_y = unit_abs_diff_angle_y[6]; + idx = 6; + } + } + } + + if (unit_exist[idx] == FALSE) { + *pos_p = unit_pos[idx]; + return mPlayer_INDEX_AIR_SCOOP; + } else { + mActor_name_t* scoop_fg_p = mFI_UtNum2UtFG(unit_num[idx][0], unit_num[idx][1]); + mActor_name_t scoop_fg = scoop_fg_p == NULL ? EMPTY_NO : *scoop_fg_p; + int is_stump; + int is_stone_tencoin; + int is_tree; + int is_rsv; + int is_special_scoop_item; + + is_stump = FALSE; + is_stone_tencoin = FALSE; + is_tree = FALSE; + is_rsv = FALSE; + is_special_scoop_item = TRUE; + + if (IS_ITEM_TREE_STUMP(scoop_fg) != FALSE) { + is_stump = TRUE; + } else if (IS_ITEM_STONE_TC(scoop_fg) != FALSE) { + is_stone_tencoin = TRUE; + } else if (IS_ITEM_HITTABLE_TREE(scoop_fg) != FALSE) { + is_tree = TRUE; + } else if (scoop_fg == DUMMY_RESERVE) { + is_rsv = TRUE; + } else { + is_special_scoop_item = FALSE; + } + + { + f32 diff_col_y; + f32 diff_pos_y; + f32 tmp_y; + + unit_pos[idx].y = mCoBG_Wpos2BgUtCenterHeight_AddColumn(unit_pos[idx]); + diff_col_y = unit_pos[idx].y - mCoBG_GetBgY_OnlyCenter_FromWpos2(unit_pos[idx], 0.0f); + diff_pos_y = unit_pos[idx].y - player_pos_p->y; + *pos_p = unit_pos[idx]; + + if (is_special_scoop_item && diff_pos_y > diff_col_y) { + return mPlayer_INDEX_REFLECT_SCOOP; + } + + if (is_special_scoop_item && diff_pos_y < -diff_col_y) { + return mPlayer_INDEX_AIR_SCOOP; + } + + if (!is_special_scoop_item && diff_pos_y > 63.245552f) { + return mPlayer_INDEX_REFLECT_SCOOP; + } + + if (!is_special_scoop_item && diff_pos_y < -63.245552f) { + return mPlayer_INDEX_AIR_SCOOP; + } + + if (is_stump || is_stone_tencoin || is_tree || is_rsv) { + pos_p->y = mCoBG_GetBgY_OnlyCenter_FromWpos2(*pos_p, 0.0f); + diff_pos_y = pos_p->y - player_pos_p->y; + } + + { + xyz_t start_pos = *player_pos_p; + xyz_t end_pos = *pos_p; + xyz_t rev_pos; + xyz_t start2_pos = *player_pos_p; + xyz_t end2_pos = *pos_p; + xyz_t rev2_pos; + xyz_t rev3_pos; + xyz_t rev4_pos; + + start_pos.y += 1.0f; + end_pos.y += 1.0f; + start2_pos.y -= 1.0f; + end2_pos.y -= 1.0f; + + if (is_stump) { + mCoBG_LineCheck_RemoveFg(&rev_pos, start_pos, end_pos, &mNT_ItIsStump, + mCoBG_LINECHECK_CAT_WALL); + mCoBG_LineCheck_RemoveFg(&rev3_pos, end_pos, start_pos, &mNT_ItIsStump, + mCoBG_LINECHECK_CAT_WALL); + mCoBG_LineCheck_RemoveFg(&rev2_pos, start2_pos, end2_pos, &mNT_ItIsStump, + mCoBG_LINECHECK_CAT_WALL); + mCoBG_LineCheck_RemoveFg(&rev4_pos, end2_pos, start2_pos, &mNT_ItIsStump, + mCoBG_LINECHECK_CAT_WALL); + } else if (is_stone_tencoin) { + mCoBG_LineCheck_RemoveFg(&rev_pos, start_pos, end_pos, &mNT_ItIsStoneCoin10, + mCoBG_LINECHECK_CAT_WALL); + mCoBG_LineCheck_RemoveFg(&rev3_pos, end_pos, start_pos, &mNT_ItIsStoneCoin10, + mCoBG_LINECHECK_CAT_WALL); + mCoBG_LineCheck_RemoveFg(&rev2_pos, start2_pos, end2_pos, &mNT_ItIsStoneCoin10, + mCoBG_LINECHECK_CAT_WALL); + mCoBG_LineCheck_RemoveFg(&rev4_pos, end2_pos, start2_pos, &mNT_ItIsStoneCoin10, + mCoBG_LINECHECK_CAT_WALL); + } else if (is_rsv) { + mCoBG_LineCheck_RemoveFg(&rev_pos, start_pos, end_pos, &mNT_ItIsReserveDummy, + mCoBG_LINECHECK_CAT_WALL); + mCoBG_LineCheck_RemoveFg(&rev3_pos, end_pos, start_pos, &mNT_ItIsReserveDummy, + mCoBG_LINECHECK_CAT_WALL); + mCoBG_LineCheck_RemoveFg(&rev2_pos, start2_pos, end2_pos, &mNT_ItIsReserveDummy, + mCoBG_LINECHECK_CAT_WALL); + mCoBG_LineCheck_RemoveFg(&rev4_pos, end2_pos, start2_pos, &mNT_ItIsReserveDummy, + mCoBG_LINECHECK_CAT_WALL); + } else if (!is_tree) { + mCoBG_LineCheck_RemoveFg(&rev_pos, start_pos, end_pos, NULL, mCoBG_LINECHECK_CAT_WALL); + mCoBG_LineCheck_RemoveFg(&rev3_pos, end_pos, start_pos, NULL, mCoBG_LINECHECK_CAT_WALL); + mCoBG_LineCheck_RemoveFg(&rev2_pos, start2_pos, end2_pos, NULL, mCoBG_LINECHECK_CAT_WALL); + mCoBG_LineCheck_RemoveFg(&rev4_pos, end2_pos, start2_pos, NULL, mCoBG_LINECHECK_CAT_WALL); + } + + if (!is_tree) { + if (((rev_pos.x != 0.0f || rev_pos.y != 0.0f || rev_pos.z != 0.0f) && + (rev2_pos.x != 0.0f || rev2_pos.y != 0.0f || rev2_pos.z != 0.0f)) || + ((rev3_pos.x != 0.0f || rev3_pos.y != 0.0f || rev3_pos.z != 0.0f) && + (rev4_pos.x != 0.0f || rev4_pos.y != 0.0f || rev4_pos.z != 0.0f))) { + if (diff_pos_y >= 0.0f) { + return mPlayer_INDEX_REFLECT_SCOOP; + } else { + return mPlayer_INDEX_AIR_SCOOP; + } + } + } + + { + int dig_status; + int hit_flag = FALSE; + ACTOR* hit_actor_p; + mActor_name_t hit_item; + + dig_status = mFI_GetDigStatus(&hit_item, *pos_p, gold_scoop); + + /* Don't let the player hit NPCs with the shovel */ + hit_actor_p = mPlib_Search_exist_npc_inCircle_forScoop(game, pos_p, SQ(39.0f)); + if (hit_actor_p != NULL) { + return mPlayer_INDEX_AIR_SCOOP; + } + + hit_actor_p = mPlib_Search_exist_psnowman_inCircle_forScoop(game, pos_p, SQ(39.0f)); + if (hit_actor_p != NULL) { + hit_flag = TRUE; + } + + if (hit_actor_p == NULL) { + hit_actor_p = mPlib_Search_exist_snowball_forScoop(game, pos_p); + if (hit_actor_p != NULL) { + hit_flag = TRUE; + } + } + + if (hit_actor_p == NULL) { + hit_actor_p = mPlib_Search_exist_ball_forScoop(game, pos_p); + if (hit_actor_p != NULL) { + hit_flag = TRUE; + } + } + + if (reflect_actor_pp != NULL) { + *reflect_actor_pp = hit_actor_p; + } + + if (scoop_fg != hit_item) { + *item_p = hit_item; + } else { + *item_p = scoop_fg; + } + + if (is_tree) { + return mPlayer_INDEX_REFLECT_SCOOP; + } + + if (is_rsv) { + return mPlayer_INDEX_REFLECT_SCOOP; + } + + switch (dig_status) { + case mFI_DIGSTATUS_FILLIN: + if (hit_flag) { + return mPlayer_INDEX_REFLECT_SCOOP; + } else if (is_stone_tencoin) { + return mPlayer_INDEX_REFLECT_SCOOP; + } else { + return mPlayer_INDEX_FILL_SCOOP; + } + break; + case mFI_DIGSTATUS_DIG: + case mFI_DIGSTATUS_PUT_ITEM: + if (hit_flag) { + return mPlayer_INDEX_REFLECT_SCOOP; + } else if (is_stone_tencoin) { + return mPlayer_INDEX_REFLECT_SCOOP; + } else { + return mPlayer_INDEX_DIG_SCOOP; + } + break; + case mFI_DIGSTATUS_GET_ITEM: + if (hit_flag) { + return mPlayer_INDEX_REFLECT_SCOOP; + } else if (is_stone_tencoin) { + return mPlayer_INDEX_REFLECT_SCOOP; + } else { + return mPlayer_INDEX_GET_SCOOP; + } + break; + case mFI_DIGSTATUS_MISS: + return mPlayer_INDEX_AIR_SCOOP; + default: + if (is_stone_tencoin) { + *item_p = scoop_fg; + } + return mPlayer_INDEX_REFLECT_SCOOP; + } + } + } + } + } + } + } + + return -1; +} + +extern int mPlib_Check_scene_able_change_camera_pos(void) { + if (mFI_CheckFieldData()) { + int field_type = mFI_GET_TYPE(mFI_GetFieldId()); + + return (field_type == mFI_FIELD_NPCROOM0 || field_type == mFI_FIELD_PLAYER0_ROOM || + Save_Get(scene_no) == SCENE_MUSEUM_ROOM_FOSSIL || Save_Get(scene_no) == SCENE_MUSEUM_ROOM_PAINTING || + Save_Get(scene_no) == SCENE_MUSEUM_ROOM_INSECT || Save_Get(scene_no) == SCENE_MUSEUM_ROOM_FISH); + } + + return FALSE; +} + +extern int mPlib_Check_RotateOctagon(void) { + return GET_PLAYER_ACTOR_NOW()->Check_RotateOctagon_proc(gamePT); +} + +extern int mPlib_Set_EndWashCar(void) { + if (mPlib_get_player_actor_main_index(gamePT) == mPlayer_INDEX_WASH_CAR) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_NOW(); + mPlayer_main_wash_car_c* wash_car_p = &player->main_data.wash_car; + + wash_car_p->ret_order = TRUE; + return TRUE; + } + + return FALSE; +} + +extern int mPlib_Set_AnimeSpeedWashCar(f32 anime_speed) { + if (mPlib_get_player_actor_main_index(gamePT) == mPlayer_INDEX_WASH_CAR) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_NOW(); + + player->keyframe0.frame_control.speed = anime_speed; + player->keyframe1.frame_control.speed = anime_speed; + return TRUE; + } + + return FALSE; +} + +extern int mPlib_Check_now_handin_item_kind(void) { + return GET_PLAYER_ACTOR_NOW()->item_kind; +} + +extern int mPlib_Check_now_handin_item(void) { + return GET_PLAYER_ACTOR_NOW()->item_kind >= 0; +} + +extern void mPlib_Set_able_hand_all_item_in_demo(s8 v) { + GET_PLAYER_ACTOR_NOW()->able_hand_all_item_in_demo = v; +} + +extern int mPlib_Get_status_for_bee(void) { + return GET_PLAYER_ACTOR_NOW()->Get_status_for_bee_proc(GET_PLAYER_ACTOR_NOW_ACTOR()); +} + +extern int mPlib_Check_end_stung_bee(void) { + return GET_PLAYER_ACTOR_NOW()->Check_end_stung_bee_proc(GET_PLAYER_ACTOR_NOW_ACTOR()); +} + +extern int mPlib_Check_Label_main_push_snowball(void* label) { + return GET_PLAYER_ACTOR_NOW()->Check_Label_main_push_snowball_proc(gamePT, label); +} + +extern int mPlib_Check_Label_main_wade_snowball(void* label) { + return GET_PLAYER_ACTOR_NOW()->Check_Label_main_wade_snowball_proc(gamePT, label); +} + +extern int mPlib_Set_ScrollDemo_forWade_snowball(int dir, const xyz_t* snowball_dist_p) { + return GET_PLAYER_ACTOR_NOW()->Set_ScrollDemo_forWade_snowball_proc(GET_PLAYER_ACTOR_NOW_ACTOR(), dir, + snowball_dist_p); +} + +extern int mPlib_GetSnowballPos_forWadeSnowball(xyz_t* pos_p) { + return GET_PLAYER_ACTOR_NOW()->GetSnowballPos_forWadeSnowball_proc(GET_PLAYER_ACTOR_NOW_ACTOR(), pos_p); +} + +extern int mPlib_CheckCondition_forWadeSnowball(const xyz_t* pos_p, s16 angle_y) { + return GET_PLAYER_ACTOR_NOW()->CheckCondition_forWadeSnowball_proc(gamePT, pos_p, angle_y); +} + +extern int mPlib_SetParam_for_push_snowball(const xyz_t* pos_p, s16 angle_y, f32 anim_speed) { + return GET_PLAYER_ACTOR_NOW()->SetParam_for_push_snowball_proc(gamePT, pos_p, angle_y, anim_speed); +} + +extern void mPlib_Set_crash_snowball_for_wade(int v) { + GET_PLAYER_ACTOR_NOW()->crash_snowball_for_wade = v; +} + +static mPlayer_Controller_Data_c controller_data_for_title_demo; + +extern mPlayer_Controller_Data_c* mPlib_Get_controller_data_for_title_demo_p(void) { + return &controller_data_for_title_demo; +} + +extern void mPlib_Clear_controller_data_for_title_demo(void) { + bzero(&controller_data_for_title_demo, sizeof(controller_data_for_title_demo)); + controller_data_for_title_demo.equiped_item = ITM_PAPER_START; /* @BUG - this should be a tool, not paper */ +} + +extern void mPlib_SetData1_controller_data_for_title_demo(int btn_a, int btn_b, f32 stick_x, f32 stick_y) { + mCon_calc(&controller_data_for_title_demo.mcon, stick_x, stick_y); + + if (controller_data_for_title_demo.trigger_btn_a == FALSE && btn_a != FALSE) { + controller_data_for_title_demo.trigger_btn_a = TRUE; + } else { + controller_data_for_title_demo.trigger_btn_a = FALSE; + } + controller_data_for_title_demo.btn_a = btn_a; + + if (controller_data_for_title_demo.trigger_btn_b == FALSE && btn_b != FALSE) { + controller_data_for_title_demo.trigger_btn_b = TRUE; + } else { + controller_data_for_title_demo.trigger_btn_b = FALSE; + } + controller_data_for_title_demo.btn_b = btn_b; +} + +extern void mPlib_SetData2_controller_data_for_title_demo(mActor_name_t item) { + controller_data_for_title_demo.equiped_item = item; +} + +extern int mPlib_Check_CorrectPlayerPos_forEvent(void) { + if (Common_Get(player_actor_exists)) { + int main_index = GET_PLAYER_ACTOR_NOW()->now_main_index; + + if (mPlayer_MAIN_INDEX_VALID(main_index) != FALSE) { + // clang-format off + static const s8 data[] = { + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }; + // clang-format on + + return data[main_index]; + } + } + + return FALSE; +} + +extern int mPlib_Check_UKI_COMEBACK_STATUS(void) { + if (Common_Get(player_actor_exists)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_NOW(); + + if (player->fishing_rod_actor_p) { + UKI_ACTOR* uki_actor = (UKI_ACTOR*)player->fishing_rod_actor_p; + + return uki_actor->status == aUKI_STATUS_COMEBACK; + } + } + + return FALSE; +} + +extern int mPlib_Check_tree_shaken(const xyz_t* pos_p) { + return GET_PLAYER_ACTOR_NOW()->Check_tree_shaken_proc(GET_PLAYER_ACTOR_NOW_ACTOR(), pos_p); +} + +extern int mPlib_Check_tree_shaken_little(const xyz_t* pos_p) { + return GET_PLAYER_ACTOR_NOW()->Check_tree_shaken_little_proc(GET_PLAYER_ACTOR_NOW_ACTOR(), pos_p); +} + +extern int mPlib_Check_tree_shaken_big(const xyz_t* pos_p) { + return GET_PLAYER_ACTOR_NOW()->Check_tree_shaken_big_proc(GET_PLAYER_ACTOR_NOW_ACTOR(), pos_p); +} + +extern mActor_name_t mPlib_Get_itemNo_forWindow(void) { + if (Common_Get(player_actor_exists) == FALSE) { + return EMPTY_NO; + } + + if (SubmenuArea_IsPlayer() == FALSE) { + return EMPTY_NO; + } + + return GET_PLAYER_ACTOR_NOW()->Get_itemNo_forWindow_proc(GET_PLAYER_ACTOR_NOW_ACTOR()); +} + +extern int mPlib_able_birth_bee(void) { + if (mEv_CheckFirstIntro() != FALSE || Common_Get(reset_flag) != FALSE || + Common_Get(player_bee_chase_flag) != FALSE || mEv_CheckTitleDemo() > 0) { + return FALSE; + } + + return TRUE; +} + +extern int mPlib_check_able_change_camera_normal_index(void) { + if (Common_Get(player_actor_exists) == FALSE) { + return EMPTY_NO; + } + + if (SubmenuArea_IsPlayer() == FALSE) { + return EMPTY_NO; + } + + return GET_PLAYER_ACTOR_NOW()->check_able_change_camera_normal_index_proc(GET_PLAYER_ACTOR_NOW_ACTOR()); +} + +extern int mPlib_check_player_actor_main_index_Furniture_Move(GAME* game) { + int res = FALSE; + + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_PUSH || + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_PULL) { + res = TRUE; + } + + return res; +} + +extern int mPlib_check_player_actor_main_index_RecieveMove(GAME* game) { + int res = FALSE; + + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_RECIEVE_WAIT || + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_RECIEVE_STRETCH || + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_RECIEVE || + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_RECIEVE_PUTAWAY) { + res = TRUE; + } + + return res; +} + +extern int mPlib_check_player_actor_main_index_Pitfall(GAME* game) { + int res = FALSE; + + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_READY_PITFALL || + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_FALL_PITFALL || + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_STRUGGLE_PITFALL || + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_CLIMBUP_PITFALL) { + res = TRUE; + } + + return res; +} + +extern int mPlib_check_player_actor_main_index_OutDoorMove(GAME* game) { + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_DMA || + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_INTRO || + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_OUTDOOR || + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_COMPLETE_PAYMENT || + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_RETURN_OUTDOOR || + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_RETURN_OUTDOOR2 || + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_TAKEOUT_ITEM) { + return TRUE; + } + + return FALSE; +} + +extern int mPlib_check_player_actor_main_index_OutDoorMove2(GAME* game) { + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_DMA || + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_INTRO || + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_OUTDOOR || + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_RETURN_OUTDOOR || + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_COMPLETE_PAYMENT || + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_TAKEOUT_ITEM) { + return TRUE; + } + + return FALSE; +} + +extern int mPlib_check_player_actor_main_index_AllWade(GAME* game) { + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_WADE || + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_DEMO_WADE || + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_WADE_SNOWBALL || + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_DEMO_GETON_BOAT_WADE) { + return TRUE; + } + + return FALSE; +} + +extern int mPlib_check_player_actor_main_index_catch_insect(GAME* game) { + return (mPlib_Get_item_net_catch_label() != 0 && + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_SWING_NET) || + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_PULL_NET || + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_NOTICE_NET || + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_PUTAWAY_NET; +} + +extern int mPlib_check_player_actor_main_index_catch_fish(GAME* game) { + return mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_FLY_ROD || + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_NOTICE_ROD || + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_PUTAWAY_ROD; +} + +extern int mPlib_check_player_actor_start_switch_on_lighthouse(GAME* game) { + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_SWITCH_ON_LIGHTHOUSE && + GET_PLAYER_ACTOR_GAME(game)->keyframe0.frame_control.current_frame > 1.0f) { + return TRUE; + } + + return FALSE; +} + +extern int mPlib_Check_stung_mosquito(void* label) { + return GET_PLAYER_ACTOR_NOW()->Check_stung_mosquito_proc(gamePT, label); +} + +extern void mPlib_Set_boat_angleZ(s16 angle_z) { + GET_PLAYER_ACTOR_NOW()->boat_angleZ = angle_z; +} + +extern int mPlib_CheckButtonOnly_forDush(void) { + return chkButton(BUTTON_B) || chkButton(BUTTON_L) || chkButton(BUTTON_R); +} + +extern int mPlib_Check_golden_item_get_demo_end(int gold_item_type) { + static u8 data[] = { + (1 << mPlayer_GOLDEN_ITEM_TYPE_AXE), + (1 << mPlayer_GOLDEN_ITEM_TYPE_NET), + (1 << mPlayer_GOLDEN_ITEM_TYPE_ROD), + (1 << mPlayer_GOLDEN_ITEM_TYPE_SHOVEL), + }; + + return data[gold_item_type] & Now_Private->golden_items_collected; +} + +extern void mPlib_Set_change_color_request(void) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_NOW(); + + player->change_color_request = TRUE; +} diff --git a/src/m_player_main_rotate_octagon.c_inc b/src/m_player_main_rotate_octagon.c_inc index 328faf7a..79e854be 100644 --- a/src/m_player_main_rotate_octagon.c_inc +++ b/src/m_player_main_rotate_octagon.c_inc @@ -39,7 +39,7 @@ static void Player_actor_setup_main_Rotate_octagon(ACTOR* actorx, GAME* game) { Player_actor_setup_main_Base(actorx, game); } -static void Player_actor_settle_main_Rotate_octagon(ACTOR* actorx) { +static void Player_actor_settle_main_Rotate_octagon(ACTOR* actorx, GAME* game) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; diff --git a/src/m_player_other_func.c_inc b/src/m_player_other_func.c_inc index 49fc6727..4a791a09 100644 --- a/src/m_player_other_func.c_inc +++ b/src/m_player_other_func.c_inc @@ -6,8 +6,7 @@ void Player_actor_ct_other_func1(ACTOR* actor, GAME* game) { actor->unknown_b4 = 1; Actor_info_make_actor(&play->actor_info, game, mAc_PROFILE_FIELD_DRAW, actor->world.position.x, - actor->world.position.y, actor->world.position.z, 0, 0, 0, -1, -1, - -1, EMPTY_NO, -1, -1, -1); + actor->world.position.y, actor->world.position.z, 0, 0, 0, -1, -1, -1, EMPTY_NO, -1, -1, -1); } void Player_actor_setup_main_Wade_other_func1(ACTOR* actor, GAME* game) { @@ -253,13 +252,12 @@ void Player_actor_move_other_func1(ACTOR* actor, GAME* game) { void Player_actor_move_other_func2(ACTOR* actor, GAME* game) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; - GAME_PLAY* play = (GAME_PLAY*)game; Player_actor_set_eye_PositionAndAngle(actor); Player_actor_sound_SetStatus(actor); Player_actor_Set_Indoor_Camera_Index(actor, game); Player_actor_check_forward(actor, game); - mFI_SetPlayerWade(play); + mFI_SetPlayerWade(game); Player_actor_check_little_shake_tree(actor, game); Player_actor_check_shake_tree_timer(actor); Player_actor_check_pitfall(actor, game); diff --git a/src/m_scene.c b/src/m_scene.c index 58bd1b6a..2e9f84ef 100644 --- a/src/m_scene.c +++ b/src/m_scene.c @@ -511,7 +511,7 @@ extern int goto_other_scene(GAME_PLAY* play, Door_data_c* door_data, int update_ play->next_scene_no = door_data->next_scene_id; if (update_player_mode) { - mPlib_request_main_invade_type1(play); + mPlib_request_main_invade_type1((GAME*)play); } restore_fgdata_all(play); diff --git a/src/m_titledemo.c b/src/m_titledemo.c index 0909ba2e..b1f93b1a 100644 --- a/src/m_titledemo.c +++ b/src/m_titledemo.c @@ -126,7 +126,7 @@ static void mTD_game_end_init(GAME_PLAY* play) { play->fb_fade_type = 10; // TODO: enum/define play->fb_wipe_type = 3; // TODO: enum/define - mPlib_request_main_invade_type1(play); + mPlib_request_main_invade_type1((GAME*)play); mBGMPsComp_make_ps_wipe(0x521C); // TODO: enum/define } From feabe8d1ce9a053541470d1282905e68bd6823ab Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Thu, 12 Sep 2024 08:08:49 -0400 Subject: [PATCH 224/234] Fix building --- src/bg_item_clip.c_inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bg_item_clip.c_inc b/src/bg_item_clip.c_inc index c8c98e7d..0c9525f6 100644 --- a/src/bg_item_clip.c_inc +++ b/src/bg_item_clip.c_inc @@ -62,7 +62,7 @@ static void bit_cmn_single_draw(GAME* game, mActor_name_t fg_no, xyz_t* pos, f32 bIT_DRAW_AF_PROC draw_af, rgba_t* col); static int bIT_actor_player_drop_entry(GAME* game, mActor_name_t fg_item, int ut_x, int ut_z, s16 layer); static int BIT_actor_tree_cutcount_check(GAME* game, int ut_x, int ut_z); -static void bIT_actor_dig_hole_effect_entry(mActor_name_t fg_item, xyz_t* pos, u16 frames, u16 wait_frames); +static int bIT_actor_dig_hole_effect_entry(mActor_name_t fg_item, xyz_t* pos, u16 frames, u16 wait_frames); static void bIT_actor_bury_hole_effect_entry(mActor_name_t fg_item, xyz_t* pos, u16 frames); static void bIT_actor_fly_entry(mActor_name_t fg_item, xyz_t* pos, s16 angle_y); static int bIT_drop_entry_v1(mActor_name_t fg_item, xyz_t* pos, xyz_t* target_pos); From b855cb926b35e4ddd410427f1f64ff34a9b10129 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Thu, 12 Sep 2024 18:24:52 +0200 Subject: [PATCH 225/234] match m_player_main_reflect_scoop --- src/m_player_main_dig_scoop.c_inc | 4 +- src/m_player_main_fill_scoop.c_inc | 4 +- src/m_player_main_reflect_scoop.c_inc | 290 ++++++++++++++++++++++++++ 3 files changed, 294 insertions(+), 4 deletions(-) diff --git a/src/m_player_main_dig_scoop.c_inc b/src/m_player_main_dig_scoop.c_inc index 9f81539f..b7d79038 100644 --- a/src/m_player_main_dig_scoop.c_inc +++ b/src/m_player_main_dig_scoop.c_inc @@ -41,9 +41,9 @@ static void Player_actor_setup_main_Dig_scoop(ACTOR* actor, GAME* game) { static void Player_actor_Movement_Dig_scoop(ACTOR* actor) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; - mPlayer_main_swing_axe_c* main_axe = &player->main_data.swing_axe; + mPlayer_main_fill_scoop_c* main_scoop = &player->main_data.fill_scoop; - Player_actor_Movement_axe_common(actor, &main_axe->axe_common.target_pos); + Player_actor_Movement_axe_common(actor, &main_scoop->target_pos); actor->world.angle.y = actor->shape_info.rotation.y; } diff --git a/src/m_player_main_fill_scoop.c_inc b/src/m_player_main_fill_scoop.c_inc index 49134a3a..25f52c1d 100644 --- a/src/m_player_main_fill_scoop.c_inc +++ b/src/m_player_main_fill_scoop.c_inc @@ -26,9 +26,9 @@ static void Player_actor_setup_main_Fill_scoop(ACTOR* actor, GAME* game) { static void Player_actor_Movement_Fill_scoop(ACTOR* actor) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; - mPlayer_main_swing_axe_c* main_axe = &player->main_data.swing_axe; + mPlayer_main_fill_scoop_c* main_scoop = &player->main_data.fill_scoop; - Player_actor_Movement_axe_common(actor, &main_axe->axe_common.target_pos); + Player_actor_Movement_axe_common(actor, &main_scoop->target_pos); actor->world.angle.y = actor->shape_info.rotation.y; } diff --git a/src/m_player_main_reflect_scoop.c_inc b/src/m_player_main_reflect_scoop.c_inc index e69de29b..642824b0 100644 --- a/src/m_player_main_reflect_scoop.c_inc +++ b/src/m_player_main_reflect_scoop.c_inc @@ -0,0 +1,290 @@ +static int Player_actor_request_main_reflect_scoop_all(GAME* game, const xyz_t* pos, mActor_name_t item, + ACTOR* hit_actor, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_REFLECT_SCOOP, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + player->requested_main_index_data.reflect_scoop.dig_pos = *pos; + player->requested_main_index_data.reflect_scoop.item = item; + player->requested_main_index_data.reflect_scoop.hit_actor = hit_actor; + + Player_actor_request_main_index(game, mPlayer_INDEX_REFLECT_SCOOP, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Reflect_scoop(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_reflect_scoop_c* main_scoop = &player->main_data.reflect_scoop; + mPlayer_request_reflect_scoop_c* req_scoop = &player->requested_main_index_data.reflect_scoop; + + main_scoop->target_pos = req_scoop->dig_pos; + main_scoop->item = req_scoop->item; + main_scoop->reflect_actor_p = req_scoop->hit_actor; + + Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_NOT_DIG1, mPlayer_ANIM_NOT_DIG1, 1.0f, 1.0f, 0.5f, -5.0f, + 0, 0); + Player_actor_setup_main_Base(actor, game); +} + +static Player_actor_settle_main_Reflect_scoop(ACTOR* actor, GAME* game) { + actor->speed = 0.0f; + actor->world.angle.y = actor->shape_info.rotation.y; +} + +static int Player_actor_Movement_Reflect_scoop(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_swing_axe_c* main_axe = &player->main_data.swing_axe; + cKF_FrameControl_c* fc = &player->keyframe0.frame_control; + f32 cur_frame = fc->current_frame; + + Player_actor_Movement_axe_common(actor, &main_axe->axe_common.target_pos); + + if (cur_frame < 13.0f) { + actor->world.angle.y = actor->shape_info.rotation.y; + } +} + +static int Player_actor_CulcAnimation_Reflect_scoop(ACTOR* actor, f32* frame_calc) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_SetEffectHit_Reflect_scoop(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + cKF_FrameControl_c* fc = &player->keyframe0.frame_control; + + if (Player_actor_Check_AnimationFrame(fc, 13.0f)) { + u32 item; + s16 attr; + f32 sin; + f32 cos; + xyz_t* pos; + int check; + s16 rot; + int stone; + xyz_t ac_pos; + mPlayer_main_reflect_scoop_c* main_scoop; + ACTOR* reflected; + int col_tree; + + main_scoop = &player->main_data.reflect_scoop; + pos = &main_scoop->target_pos; + item = main_scoop->item; + reflected = main_scoop->reflect_actor_p; + + attr = -1; + check = IS_ITEM_COLLIDEABLE_TREE(item); + + if (check) { + int ut_x; + int ut_z; + + if (mFI_Wpos2UtNum(&ut_x, &ut_z, *pos)) { + Player_actor_Set_EffectBgTree(game, item, 3, ut_x, ut_z); + } + + attr = 7; + } + + stone = FALSE; + + if (IS_ITEM_STONE_TC(item)) { + stone = TRUE; + } + + if (stone) { + Player_actor_Search_STONE_TC(actor, pos); + if (attr < 0) { + attr = 7; + } + } + + if (reflected) { + switch (reflected->id) { + case mAc_PROFILE_SNOWMAN: + ((SNOWMAN_ACTOR*)reflected)->unk_1F8 |= 2; + break; + + case mAc_PROFILE_BALL: + ((BALL_ACTOR*)reflected)->unk208 |= 4; + break; + } + } + + rot = actor->shape_info.rotation.y; + ac_pos = actor->world.position; + + sin = sin_s(rot); + cos = cos_s(rot); + + ac_pos.x += (37.0f * sin) + (2.0f * cos); + ac_pos.z += (37.0f * cos) - (2.0f * sin); + + if (attr < 0 && (ITEM_NAME_GET_TYPE((u16)item) >= 4 || ITEM_NAME_GET_TYPE((u16)item) < 1)) { + attr = mCoBG_Wpos2Attribute(ac_pos, NULL); + } + + if (attr >= 0) { + Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_DIG_SCOOP, ac_pos, 2, rot, game, RSV_NO, attr, 1); + } + } +} + +static void Player_actor_SetEffect_Reflect_scoop(ACTOR* actor, GAME* game) { + Player_actor_SetEffectHit_Reflect_scoop(actor, game); +} + +static void Player_actor_SetAngleSpeedF_Reflect_scoop(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 13.0f)) { + actor->speed = 4.8f; + actor->world.angle.y = actor->shape_info.rotation.y + 0x8000; + } +} + +static void Player_actor_SetOrderNPC_Reflect_scoop(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_reflect_scoop_c* main_scoop = &player->main_data.reflect_scoop; + + if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 13.0f)) { + Player_actor_CheckAndSet_UZAI_forNpc(main_scoop->reflect_actor_p); + } +} + +static void Player_actor_SetSound_Reflect_scoop(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 13.0f)) { + mPlayer_main_reflect_scoop_c* main_scoop; + ACTOR* reflected; + u32 item; + xyz_t* pos; + int check; + + main_scoop = &player->main_data.reflect_scoop; + pos = &main_scoop->target_pos; + item = main_scoop->item; + reflected = main_scoop->reflect_actor_p; + + if (reflected == NULL) { + if (mCoBG_Wpos2Attribute(*pos, NULL) == mCoBG_ATTRIBUTE_BUSH) { + Player_actor_sound_scoop_shigemi(actor); + Player_actor_set_viblation_Reflect_scoop_soft(); + return; + } + } else { + Player_actor_set_viblation_Reflect_scoop_soft(); + switch (reflected->id) { + case mAc_PROFILE_SNOWMAN: + return; + + default: + Player_actor_sound_scoop_item_hit(actor); + break; + } + return; + } + check = IS_ITEM_COLLIDEABLE_TREE(item) ? TRUE : FALSE; + + if (check || item == DUMMY_RESERVE) { + Player_actor_sound_scoop_tree_hit(actor); + Player_actor_set_viblation_Reflect_scoop_hard(); + } else { + int type = ITEM_NAME_GET_TYPE(item); + switch (type) { + case NAME_TYPE_FTR0: + case NAME_TYPE_ITEM1: + case NAME_TYPE_FTR1: + Player_actor_sound_scoop_item_hit(actor); + Player_actor_set_viblation_Reflect_scoop_soft(); + + break; + default: + if (mCoBG_WoodSoundEffect(pos)) { + Player_actor_sound_scoop_tree_hit(actor); + Player_actor_set_viblation_Reflect_scoop_hard(); + } else { + Player_actor_sound_scoop_hit(actor); + Player_actor_set_viblation_Reflect_scoop_hard(); + } + break; + } + } + } +} + +static void Player_actor_informed_insects_Reflect_scoop(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 13.0f) && + Common_Get(clip).insect_clip != NULL && Common_Get(clip).insect_clip->set_pl_act_tim_proc != NULL) { + int ut_x; + int ut_z; + mPlayer_main_reflect_scoop_c* main_scoop = &player->main_data.reflect_scoop; + xyz_t pos = main_scoop->target_pos; + + mFI_Wpos2UtNum(&ut_x, &ut_z, pos); + Common_Get(clip).insect_clip->set_pl_act_tim_proc(2, ut_x, ut_z); + } +} + +static void Player_actor_SearchAnimation_Reflect_scoop(ACTOR* actor, GAME* game, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_SetEffect_Reflect_scoop(actor, game); + Player_actor_SetAngleSpeedF_Reflect_scoop(actor); + Player_actor_SetOrderNPC_Reflect_scoop(actor); + Player_actor_SetSound_Reflect_scoop(actor); + Player_actor_Set_FootMark_Base1(actor, game, FALSE, FALSE); + Player_actor_informed_insects_Reflect_scoop(actor); + } +} + +static void Player_actor_ObjCheck_Reflect_scoop(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Reflect_scoop(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_request_proc_index_fromReflect_scoop(ACTOR* actor, GAME* game, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (end_flag != 0) { + Player_actor_SettleRequestMainIndexPriority(actor); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } else { + cKF_FrameControl_c* fc = &player->keyframe0.frame_control; + + if (Player_actor_Check_AnimationFrame(fc, 29.0f)) { + Player_actor_SettleRequestMainIndexPriority(actor); + Player_actor_Set_status_for_bee(actor, TRUE); + } else { + f32 cur_frame = fc->current_frame; + + if (cur_frame >= 30.0f && !Player_actor_CheckAndRequest_main_scoop_all(game, 4) && + (Player_actor_GetController_move_percentX() || Player_actor_GetController_move_percentY())) { + Player_actor_request_main_walk_all(game, NULL, -5.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } + } + } +} + +static void Player_actor_main_Reflect_scoop(ACTOR* actor, GAME* game) { + f32 frame_calc; + int end_flag; + + Player_actor_Movement_Reflect_scoop(actor); + Player_actor_Reinput_force_position_angle(actor, game); + end_flag = Player_actor_CulcAnimation_Reflect_scoop(actor, &frame_calc); + Player_actor_SearchAnimation_Reflect_scoop(actor, game, frame_calc); + Player_actor_recover_lean_angle(actor); + Player_actor_set_tex_anime_pattern(actor); + Player_actor_ObjCheck_Reflect_scoop(actor, game); + Player_actor_BGcheck_Reflect_scoop(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromReflect_scoop(actor, game, end_flag); +} From 662a956ac3819b8be292af0d0d5216dcef690c55 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Thu, 12 Sep 2024 18:25:55 +0200 Subject: [PATCH 226/234] match m_player_main_air_scoop --- src/m_player_main_air_scoop.c_inc | 71 +++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/src/m_player_main_air_scoop.c_inc b/src/m_player_main_air_scoop.c_inc index e69de29b..c094feae 100644 --- a/src/m_player_main_air_scoop.c_inc +++ b/src/m_player_main_air_scoop.c_inc @@ -0,0 +1,71 @@ +static int Player_actor_request_main_Air_scoop_all(GAME* game, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_AIR_SCOOP, priority)) { + Player_actor_request_main_index(game, mPlayer_INDEX_AIR_SCOOP, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Air_scoop(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_DIG_SUKA1, mPlayer_ANIM_DIG_SUKA1, 1.0f, 1.0f, 0.5f, + -5.0f, 0, 0); + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_Movement_Air_scoop(ACTOR* actor) { + Player_actor_Movement_Base_Braking_common(actor, 0.32625f); +} + +static int Player_actor_CulcAnimation_Air_scoop(ACTOR* actor, f32* frame_calc) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_SetSound_Air_scoop(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 13.0f)) { + Player_actor_sound_karaburi(actor); + } +} + +static void Player_actor_SearchAnimation_Air_scoop(ACTOR* actor, GAME* game, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_SetSound_Air_scoop(actor); + Player_actor_Set_FootMark_Base1(actor, game, FALSE, FALSE); + } +} + +static void Player_actor_ObjCheck_Air_scoop(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Air_scoop(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_request_proc_index_fromAir_scoop(ACTOR* actor, GAME* game, int end_flag) { + if (end_flag) { + Player_actor_SettleRequestMainIndexPriority(actor); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } +} + +static void Player_actor_main_Air_scoop(ACTOR* actor, GAME* game) { + f32 frame_calc; + int end_flag; + + Player_actor_Movement_Air_scoop(actor); + Player_actor_Reinput_force_position_angle(actor, game); + end_flag = Player_actor_CulcAnimation_Air_scoop(actor, &frame_calc); + Player_actor_SearchAnimation_Air_scoop(actor, game, frame_calc); + Player_actor_recover_lean_angle(actor); + Player_actor_set_tex_anime_pattern(actor); + Player_actor_ObjCheck_Air_scoop(actor, game); + Player_actor_BGcheck_Air_scoop(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromAir_scoop(actor, game, end_flag); +} From abdd118c2d6855b1fa59170aaf54294b82908d42 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Thu, 12 Sep 2024 18:26:55 +0200 Subject: [PATCH 227/234] match m_player_main_putin_scoop --- src/m_player_main_putin_scoop.c_inc | 125 ++++++++++++++++++++++++++++ 1 file changed, 125 insertions(+) diff --git a/src/m_player_main_putin_scoop.c_inc b/src/m_player_main_putin_scoop.c_inc index e69de29b..fb007d96 100644 --- a/src/m_player_main_putin_scoop.c_inc +++ b/src/m_player_main_putin_scoop.c_inc @@ -0,0 +1,125 @@ +static int Player_actor_request_main_putin_scoop_all(GAME* game, const xyz_t* pos, mActor_name_t item, int golden_scoop, + int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_PUTIN_SCOOP, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + player->requested_main_index_data.putin_scoop.dig_pos = *pos; + player->requested_main_index_data.putin_scoop.item = item; + player->requested_main_index_data.putin_scoop.get_gold_scoop_flag = golden_scoop; + + Player_actor_request_main_index(game, mPlayer_INDEX_PUTIN_SCOOP, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_request_main_putin_scoop_from_submenu(ACTOR* actor, GAME* game) { + mPlayer_request_main_data* data = &(mPlib_Get_change_data_from_submenu_p()->request_main_data); + + Player_actor_request_main_putin_scoop_all( + game, &data->putin_scoop_from_submenu.wpos, data->putin_scoop_from_submenu.item, + data->putin_scoop_from_submenu.got_gold_scoop, mPlayer_REQUEST_PRIORITY_31); +} + +static void Player_actor_setup_main_Putin_scoop(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_putin_scoop_c* main_scoop = &player->main_data.putin_scoop; + mPlayer_request_putin_scoop_c* req_scoop = &player->requested_main_index_data.putin_scoop; + int anim_idx; + int part_table; + + main_scoop->target_pos = req_scoop->dig_pos; + main_scoop->item = req_scoop->item; + main_scoop->get_gold_scoop_flag = req_scoop->get_gold_scoop_flag; + + Player_actor_SetupItem_Base1(actor, mPlayer_ANIM_FILL_UP_I1, 5.0f, &anim_idx, &part_table); + + Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_FILL_UP_I1, mPlayer_ANIM_FILL_UP_I1, 1.0f, 1.0f, 0.5f, + -5.0f, 0, 0); + + if (Common_Get(clip).bg_item_clip) { + int ut_x; + int ut_z; + mActor_name_t item = main_scoop->item; + + mFI_Wpos2UtNum(&ut_x, &ut_z, main_scoop->target_pos); + if (item) { + Common_Get(clip).bg_item_clip->player_drop_entry_proc(game, item, ut_x, ut_z, 0); + } + } + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_Movement_Putin_scoop(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_putin_scoop_c* main_scoop = &player->main_data.putin_scoop; + + Player_actor_Movement_axe_common(actor, &main_scoop->target_pos); + actor->world.angle.y = actor->shape_info.rotation.y; +} + +static int Player_actor_CulcAnimation_Putin_scoop(ACTOR* actor, f32* frame_calc) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_SetEffect_Putin_scoop(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_putin_scoop_c* main_scoop = &player->main_data.putin_scoop; + + Player_actor_SetEffectHit_Fill_scoop(actor, game, &main_scoop->target_pos); +} + +static void Player_actor_SearchAnimation_Putin_scoop(ACTOR* actor, GAME* game, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_SetEffect_Putin_scoop(actor, game); + Player_actor_SetSound_Fill_scoop(actor); + Player_actor_Set_FootMark_Base1(actor, game, FALSE, FALSE); + } +} + +static void Player_actor_ObjCheck_Putin_scoop(ACTOR* actor, GAME* game) { + Player_actor_ObjCheck_Fill_scoop(actor, game); +} + +static void Player_actor_BGcheck_Putin_scoop(ACTOR* actor) { + Player_actor_BGcheck_Fill_scoop(actor); +} + +static void Player_actor_lean_angle_Putin_scoop(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_putin_scoop_c* main_scoop = &player->main_data.putin_scoop; + + Player_actor_lean_angle_scoop_common(actor, &main_scoop->target_pos, 49.0f); +} + +static void Player_actor_request_proc_index_fromPutin_scoop(ACTOR* actor, GAME* game, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_putin_scoop_c* main_scoop = &player->main_data.putin_scoop; + + if (!main_scoop->get_gold_scoop_flag) { + Player_actor_request_proc_index_fromFill_scoop(actor); + } else if (end_flag) { + Player_actor_SettleRequestMainIndexPriority(actor); + Player_actor_request_main_demo_get_golden_item_all(game, mPlayer_GOLDEN_ITEM_TYPE_SHOVEL, + mPlayer_REQUEST_PRIORITY_34); + } +} + +static void Player_actor_main_Putin_scoop(ACTOR* actor, GAME* game) { + f32 frame_calc; + int end_flag; + + Player_actor_Movement_Putin_scoop(actor); + Player_actor_Reinput_force_position_angle(actor, game); + end_flag = Player_actor_CulcAnimation_Putin_scoop(actor, &frame_calc); + Player_actor_SearchAnimation_Putin_scoop(actor, game, frame_calc); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Putin_scoop(actor, game); + Player_actor_BGcheck_Putin_scoop(actor); + Player_actor_lean_angle_Putin_scoop(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromPutin_scoop(actor, game, end_flag); +} From c45015d209126e30d46408450d46e703cb0acec2 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Thu, 12 Sep 2024 18:27:51 +0200 Subject: [PATCH 228/234] match m_player_main_putaway_scoop --- src/m_player_main_putaway_scoop.c_inc | 102 ++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) diff --git a/src/m_player_main_putaway_scoop.c_inc b/src/m_player_main_putaway_scoop.c_inc index e69de29b..fc66c89f 100644 --- a/src/m_player_main_putaway_scoop.c_inc +++ b/src/m_player_main_putaway_scoop.c_inc @@ -0,0 +1,102 @@ + +static int Player_actor_request_main_putaway_scoop_all(GAME* game, const xyz_t* pos, mActor_name_t item, int _10, + int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_PUTAWAY_SCOOP, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + player->requested_main_index_data.putaway_scoop.dig_pos = *pos; + player->requested_main_index_data.putaway_scoop.item = item; + player->requested_main_index_data.putaway_scoop._10 = _10; + + Player_actor_request_main_index(game, mPlayer_INDEX_PUTAWAY_SCOOP, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Putaway_scoop(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_putaway_scoop_c* main_scoop = &player->main_data.putaway_scoop; + mPlayer_request_putaway_scoop_c* req_scoop = &player->requested_main_index_data.putaway_scoop; + + main_scoop->target_pos = req_scoop->dig_pos; + main_scoop->item = req_scoop->item; + main_scoop->scale = 0.01f; + main_scoop->submenu_flag = req_scoop->_10; + + Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_PUTAWAY_D1, mPlayer_ANIM_PUTAWAY_D1, 1.0f, 1.0f, 0.5f, + -5.0f, 0, 0); + Player_actor_setup_main_Base(actor, game); + Player_actor_sound_GASAGOSO(actor); +} + +static void Player_actor_Movement_Putaway_scoop(ACTOR* actor) { + Player_actor_Movement_Base_Braking_common(actor, 0.32625002f); +} + +static int Player_actor_CulcAnimation_Putaway_scoop(ACTOR* actor, f32* frame_calc) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_ObjCheck_Putaway_scoop(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Putaway_scoop(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_SearchAnimation_Putaway_scoop(ACTOR* actor, GAME* game, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_Set_FootMark_Base1(actor, game, FALSE, FALSE); + } +} + +void Player_actor_Set_Item_Putaway_scoop(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_putaway_scoop_c* main_scoop = &player->main_data.putaway_scoop; + + main_scoop->scale *= 0.89125f; +} + +static void Player_actor_request_proc_index_fromPutaway_scoop(ACTOR* actor, GAME* game, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + GAME_PLAY* play = (GAME_PLAY*)game; + + if (end_flag) { + mPlayer_main_putaway_scoop_c* main_scoop = &player->main_data.putaway_scoop; + + if (main_scoop->submenu_flag) { + mSM_open_submenu_new2(&play->submenu, mSM_OVL_INVENTORY, mSM_IV_OPEN_EXCHANGE, main_scoop->item, + &main_scoop->target_pos, actor->shape_info.rotation.y); + } else { + Player_actor_SettleRequestMainIndexPriority(actor); + if (main_scoop->item == ITM_GOLDEN_SHOVEL && + !mPlib_Check_golden_item_get_demo_end(mPlayer_GOLDEN_ITEM_TYPE_SHOVEL)) { + Player_actor_request_main_demo_get_golden_item_all(game, mPlayer_GOLDEN_ITEM_TYPE_SHOVEL, + mPlayer_REQUEST_PRIORITY_34); + } else { + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } + } + } +} + +static void Player_actor_main_Putaway_scoop(ACTOR* actor, GAME* game) { + f32 frame_calc; + int end_flag; + + Player_actor_Movement_Putaway_scoop(actor); + Player_actor_Reinput_force_position_angle(actor, game); + end_flag = Player_actor_CulcAnimation_Putaway_scoop(actor, &frame_calc); + Player_actor_SearchAnimation_Putaway_scoop(actor, game, frame_calc); + Player_actor_recover_lean_angle(actor); + Player_actor_set_tex_anime_pattern(actor); + Player_actor_ObjCheck_Putaway_scoop(actor, game); + Player_actor_BGcheck_Putaway_scoop(actor); + Player_actor_Set_Item_Putaway_scoop(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromPutaway_scoop(actor, game, end_flag); +} From a8fe3cd022e2f3be86b33627c2472454bc4f41c7 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Thu, 12 Sep 2024 18:29:38 +0200 Subject: [PATCH 229/234] GG! (match m_player_main_get_scoop & all m_player) --- src/m_player_main_get_scoop.c_inc | 291 ++++++++++++++++++++++++++++++ 1 file changed, 291 insertions(+) diff --git a/src/m_player_main_get_scoop.c_inc b/src/m_player_main_get_scoop.c_inc index e69de29b..7183f141 100644 --- a/src/m_player_main_get_scoop.c_inc +++ b/src/m_player_main_get_scoop.c_inc @@ -0,0 +1,291 @@ +static int Player_actor_request_main_get_scoop_all(GAME* game, const xyz_t* pos, mActor_name_t item, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_GET_SCOOP, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + player->requested_main_index_data.get_scoop.dig_pos = *pos; + player->requested_main_index_data.get_scoop.item = item; + + Player_actor_request_main_index(game, mPlayer_INDEX_GET_SCOOP, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Get_scoop(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int free_space; + mActor_name_t item; + mActor_name_t* fg_unit; + mActor_name_t fg_item; + xyz_t* pos; + mPlayer_request_get_scoop_c* req_scoop = &player->requested_main_index_data.get_scoop; + mPlayer_main_get_scoop_c* main_scoop = &player->main_data.get_scoop; + + item = req_scoop->item; + pos = &req_scoop->dig_pos; + + main_scoop->target_pos = *pos; + main_scoop->scale = 0.0f; + main_scoop->timer = 0.0f; + main_scoop->msg_mode = 0; + main_scoop->submenu_flag = FALSE; + + free_space = mPlib_Get_space_putin_item_forTICKET(&item); + + fg_unit = mFI_GetUnitFG(req_scoop->dig_pos); + main_scoop->item = item; + + fg_item = item; + if (fg_unit != NULL && *fg_unit == SHINE_SPOT) { + fg_item = SHINE_SPOT; + } + + Common_Get(clip).bg_item_clip->dig_hole_effect_entry_proc(fg_item, &req_scoop->dig_pos, 12, 40); + + if (free_space >= 0) { + Player_actor_putin_item(free_space, item, NULL); + main_scoop->success_flag = TRUE; + } else { + main_scoop->success_flag = FALSE; + } + Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_GET_D1, mPlayer_ANIM_GET_D1, 1.0f, 1.0f, 0.5f, -5.0f, 0, + 0); + Player_actor_setup_main_Base(actor, game); + mISL_SetNowPlayerAction(mISL_PLAYER_ACTION_DIG_SCOOP); +} + +static void Player_actor_settle_main_Get_scoop(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (Common_Get(clip).bg_item_clip) { + mPlayer_main_get_scoop_c* main_scoop = &player->main_data.get_scoop; + xyz_t* left_hand = &player->left_hand_pos; + mActor_name_t item = main_scoop->item; + + if (!main_scoop->success_flag && !main_scoop->submenu_flag && main_scoop->item) { + Common_Get(clip).bg_item_clip->drop_entry_v1_proc(item, left_hand, &main_scoop->target_pos); + } + } + mBGMPsComp_delete_ps_fanfare(0x28, 0x168); +} + +static void Player_actor_Movement_Get_scoop(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_get_scoop_c* main_scoop = &player->main_data.get_scoop; + + f32 timer = main_scoop->timer; + xyz_t* pos = &main_scoop->target_pos; + + if (timer < 86.0f) { + Player_actor_Movement_axe_common(actor, pos); + } else { + add_calc_short_angle2(&actor->shape_info.rotation.y, 0, 1.0f - sqrtf(0.5), 2500, 50); + } + + actor->world.angle.y = actor->shape_info.rotation.y; +} + +static int Player_actor_CulcAnimation_Get_scoop(ACTOR* actor, f32* frame_calc) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_SetEffect_Get_scoop(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_get_scoop_c* main_scoop = &player->main_data.get_scoop; + + Player_actor_SetEffectHit_Dig_scoop(actor, game, &main_scoop->target_pos, player->now_main_index); +} + +static void Player_actor_Put_Hole_Get_scoop(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + cKF_FrameControl_c* fc = &player->keyframe0.frame_control; + + if (Player_actor_Check_AnimationFrame(fc, 20.0f) && Common_Get(clip).bg_item_clip) { + mPlayer_main_get_scoop_c* main_scoop = &player->main_data.get_scoop; + + mCoBG_RegistDecalCircle(&main_scoop->target_pos, 0.0f, 19.0f, 12); + } +} + +static void Player_actor_SearchAnimation_Get_scoop(ACTOR* actor, GAME* game, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_SetEffect_Get_scoop(actor, game); + Player_actor_Put_Hole_Get_scoop(actor); + Player_actor_SetSound_Dig_scoop(actor); + Player_actor_Set_FootMark_Base1(actor, game, FALSE, FALSE); + } +} + +static void Player_actor_set_eye_pattern_Get_scoop(ACTOR* actor, int end_flag) { + if (end_flag) { + Player_actor_set_eye_pattern_normal(actor); + } else { + Player_actor_set_tex_anime_pattern(actor); + } +} + +static void Player_actor_ObjCheck_Get_scoop(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Get_scoop(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static int Player_actor_lean_angle_Get_scoop(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + s16 ang = 0; + mPlayer_main_get_scoop_c* main_scoop = &player->main_data.get_scoop; + + if (player->keyframe0.frame_control.current_frame < 21.0f) { + f32 x; + f32 y; + f32 z; + + x = main_scoop->target_pos.x - actor->world.position.x; + y = main_scoop->target_pos.y - actor->world.position.y; + z = main_scoop->target_pos.z - actor->world.position.z; + + if (x != 0.0f || z != 0.0f) { + ang = atans_table(Math3DVecLength2D(x, z), -y); + } + } + + add_calc_short_angle2(&actor->shape_info.rotation.x, ang, 1.0f - sqrtf(0.5), 273, 0); +} + +static void Player_actor_Get_scoop_demo_ct(ACTOR* actor) { + rgba_t color; + mMsg_Window_c* win = mMsg_Get_base_window_p(); + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_get_scoop_c* main_scoop = &player->main_data.get_scoop; + u8 str[16]; + mActor_name_t item = main_scoop->item; + + mIN_copy_name_str(str, item); + mMsg_Set_item_str_art(win, 0, str, sizeof(str), mIN_get_item_article(item)); + mDemo_Set_msg_num(0x17AF); + mDemo_Set_talk_display_name(FALSE); + mDemo_Set_camera(CAMERA2_PROCESS_ITEM); + mDemo_Set_ListenAble(); + mMsg_Set_LockContinue(win); + + color.r = 185; + color.g = 245; + color.b = 80; + color.a = 255; + + mDemo_Set_talk_window_color(&color); + mChoice_Clear_ChoseNum(mChoice_Get_base_window_p()); + mBGMPsComp_make_ps_fanfare(0x28, 0x168); +} + +static int Player_actor_MessageControl_Get_scoop(ACTOR* actor, int end_flag) { + mMsg_Window_c* win = mMsg_Get_base_window_p(); + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_get_scoop_c* main_scoop = &player->main_data.get_scoop; + int choice; + + if (main_scoop->timer < 86.0f) { + main_scoop->timer += 1.0f; + return -1; + } + + switch (main_scoop->msg_mode) { + case 0: + if (!mDemo_Check(mDemo_TYPE_REPORT, actor)) { + mDemo_Request(mDemo_TYPE_REPORT, actor, Player_actor_Get_scoop_demo_ct); + } else { + main_scoop->msg_mode = 1; + } + return -1; + + case 1: + if (end_flag) { + if (main_scoop->success_flag) { + mMsg_Set_CancelNormalContinue(win); + + main_scoop->msg_mode = 3; + } else { + mMsg_Set_continue_msg_num(win, 0x17B3); + + main_scoop->msg_mode = 2; + } + mMsg_Unset_LockContinue(win); + } + return -1; + + case 2: + choice = mChoice_Get_ChoseNum(mChoice_Get_base_window_p()); + + if (choice == mChoice_CHOICE0) { + main_scoop->submenu_flag = TRUE; + main_scoop->msg_mode = 3; + } else if (choice == mChoice_CHOICE1) { + main_scoop->submenu_flag = FALSE; + main_scoop->msg_mode = 3; + } + + return -1; + default: + if (!mDemo_Check(mDemo_TYPE_REPORT, actor)) { + if (main_scoop->success_flag) { + return 0x3F; + } else { + return !main_scoop->submenu_flag + 0x3F; + } + } + return -1; + } +} + +static void Player_actor_Set_Item_Get_scoop(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + cKF_FrameControl_c* fc = &player->keyframe0.frame_control; + mPlayer_main_get_scoop_c* main_scoop = &player->main_data.get_scoop; + + if (fc->current_frame <= 21.0f) { + main_scoop->scale = 0.0f; + } else if (fc->current_frame < 27.0f) { + main_scoop->scale = (0.0017f * (fc->current_frame - 21.0f)); + } else { + main_scoop->scale = 0.01f; + } +} + +static void Player_actor_request_proc_index_fromGet_scoop(ACTOR* actor, GAME* game, int cntrl) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_get_scoop_c* main_scoop = &player->main_data.get_scoop; + + switch (cntrl) { + case 0x3F: + Player_actor_request_main_putaway_scoop_all(game, &main_scoop->target_pos, main_scoop->item, + main_scoop->submenu_flag, mPlayer_REQUEST_PRIORITY_21); + break; + case 0x40: + Player_actor_request_main_putin_scoop_all(game, &main_scoop->target_pos, EMPTY_NO, FALSE, + mPlayer_REQUEST_PRIORITY_21); + break; + } +} + +static void Player_actor_main_Pull_net(ACTOR* actor, GAME* game) { + int end_flag; + f32 frame_calc; + int cntrl; + + Player_actor_Movement_Get_scoop(actor); + Player_actor_Reinput_force_position_angle(actor, game); + end_flag = Player_actor_CulcAnimation_Get_scoop(actor, &frame_calc); + Player_actor_SearchAnimation_Get_scoop(actor, game, frame_calc); + Player_actor_set_eye_pattern_Get_scoop(actor, end_flag); + Player_actor_ObjCheck_Get_scoop(actor, game); + Player_actor_BGcheck_Get_scoop(actor); + Player_actor_lean_angle_Get_scoop(actor); + Player_actor_Set_Item_Get_scoop(actor); + cntrl = Player_actor_MessageControl_Get_scoop(actor, end_flag); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromGet_scoop(actor, game, cntrl); +} From e3d1e879b460afb8911dcf65f721c418a53e199e Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Thu, 12 Sep 2024 13:10:59 -0400 Subject: [PATCH 230/234] Add BOY_part_data, cleanup c_keyframe --- config/rel_slices.yml | 2 + include/c_keyframe.h | 24 ++--- src/c_keyframe.c | 177 +++++++++++++++----------------- src/data/player/BOY_part_data.c | 164 +++++++++++++++++++++++++++++ 4 files changed, 262 insertions(+), 105 deletions(-) create mode 100644 src/data/player/BOY_part_data.c diff --git a/config/rel_slices.yml b/config/rel_slices.yml index cf830f3a..5d4a34d8 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -1405,6 +1405,8 @@ data/npc/model/tex/brd_9.c: .data: [0x8077D980, 0x8077E6A0] data/npc/model/tex/brd_10.c: .data: [0x8077E6A0, 0x8077F3C0] +data/player/BOY_part_data.c: + .data: [0x807D5F60, 0x807D5FE8] data/npc/model/mdl/fox_1.c: .data: [0x807D5FE8, 0x807D8098] data/npc/model/tex/fox_1.c: diff --git a/include/c_keyframe.h b/include/c_keyframe.h index 34aa8f49..93333990 100644 --- a/include/c_keyframe.h +++ b/include/c_keyframe.h @@ -382,10 +382,10 @@ extern void cKF_SkeletonInfo_R_combine_work_set(cKF_SkeletonInfo_R_combine_work_ * @param joint Pointer to the joint data. * @param flag Pointer to the current joint flag. * @param combine Pointer to the combine work set structure. - * @param cwork_num Pointer to the current work layer number. + * @param part_table Pointer to the current part table. */ extern void cKF_SkeletonInfo_R_combine_translation(s16** joint, int* flag, cKF_SkeletonInfo_R_combine_work_c* combine, - s8* cwork_num); + s8* part_table); /** * Combines rotation data from multiple animation layers for a joint, modifying it based on animation flags. @@ -393,34 +393,34 @@ extern void cKF_SkeletonInfo_R_combine_translation(s16** joint, int* flag, cKF_S * @param joint Pointer to the current joint's rotation data. * @param flag Pointer to the animation flag affecting the current joint. * @param combine Pointer to the combine work set structure containing animation layer data. - * @param cwork_num Pointer to the layer number being processed. + * @param part_table Pointer to the current part table. */ extern void cKF_SkeletonInfo_R_combine_rotation(s16** joint, int* flag, cKF_SkeletonInfo_R_combine_work_c* combine, - s8* cwork_num); + s8* part_table); /** * Combines and plays two sets of animation data, applying translations and rotations from both. * * @param info1 First skeleton info structure to combine. * @param info2 Second skeleton info structure to combine. - * @param flag Pointer to a flag determining the combination behavior. + * @param part_table Pointer to the part table determining the combination behavior. * @return Status of the combination and play operation. */ -extern int cKF_SkeletonInfo_R_combine_play(cKF_SkeletonInfo_R_c* info1, cKF_SkeletonInfo_R_c* info2, s8* flag); +extern int cKF_SkeletonInfo_R_combine_play(cKF_SkeletonInfo_R_c* info1, cKF_SkeletonInfo_R_c* info2, s8* part_table); /** * Combines and plays three sets of animation data, applying translations and rotations, and updates playback state. * - * @param arg1 Result of playing first animation. - * @param arg2 Result of playing second animation. - * @param arg3 Result of playing third animation. + * @param state1 Result of playing first animation. + * @param state2 Result of playing second animation. + * @param state3 Result of playing third animation. * @param info1 First skeleton info structure to combine. * @param info2 Second skeleton info structure to combine. * @param info3 Third skeleton info structure to combine. - * @param flag Pointer to a flag determining the combination behavior. + * @param part_table Pointer to the part table determining the combination behavior. */ -extern void cKF_SkeletonInfo_R_T_combine_play(int* arg1, int* arg2, int* arg3, cKF_SkeletonInfo_R_c* info1, - cKF_SkeletonInfo_R_c* info2, cKF_SkeletonInfo_R_c* info3, s8* flag); +extern void cKF_SkeletonInfo_R_T_combine_play(int* state1, int* state2, int* state3, cKF_SkeletonInfo_R_c* info1, + cKF_SkeletonInfo_R_c* info2, cKF_SkeletonInfo_R_c* info3, s8* part_table); /** * Sets base shape translation and rotation for a skeleton info structure. diff --git a/src/c_keyframe.c b/src/c_keyframe.c index 7036c087..e9b14c18 100644 --- a/src/c_keyframe.c +++ b/src/c_keyframe.c @@ -74,7 +74,7 @@ static int cKF_FrameControl_passCheck(cKF_FrameControl_c* fc, f32 current, f32* *out = 0.0f; cur = fc->current_frame; if (cur == current) { - return 0; + return FALSE; } speed = (fc->start_frame < fc->end_frame) ? fc->speed : -fc->speed; @@ -83,24 +83,24 @@ static int cKF_FrameControl_passCheck(cKF_FrameControl_c* fc, f32 current, f32* if ((speed >= 0.0f && cur < current && cur + speed >= current) || (speed < 0.0f && cur > current && cur + speed <= current)) { *out = cur + speed - current; // Calculate overshoot - return 1; + return TRUE; } - return 0; + return FALSE; } extern int cKF_FrameControl_passCheck_now(cKF_FrameControl_c* fc, f32 current) { f32 cur = fc->current_frame; f32 speed; - int ret = 0; + int ret = FALSE; if (cur != current) { speed = (fc->start_frame < fc->end_frame) ? fc->speed : -fc->speed; if ((speed >= 0.0f && cur >= current && cur - speed < current) || (speed < 0.0f && cur <= current && cur - speed > current)) { - ret = 1; + ret = TRUE; } } else { - ret = 1; + ret = TRUE; } return ret; } @@ -743,13 +743,13 @@ extern void cKF_SkeletonInfo_R_combine_work_set(cKF_SkeletonInfo_R_combine_work_ } extern void cKF_SkeletonInfo_R_combine_translation(s16** joint, int* flag, cKF_SkeletonInfo_R_combine_work_c* combine, - s8* cwork_num) { - int i = 0; + s8* part_table) { + int i; - for (i; i < 3; i++) { - switch (*cwork_num) { + for (i = 0; i < 3; i++) { + /* Determine which animation we should pull from for the joint */ + switch (*part_table) { case 0: - if (*combine[0].anm_check_bit_tbl & *flag) { (**joint) = cKF_KeyCalc(combine[0].anm_data_src_idx, combine[0].anm_key_num[combine[0].anm_key_num_idx], @@ -760,7 +760,6 @@ extern void cKF_SkeletonInfo_R_combine_translation(s16** joint, int* flag, cKF_S break; case 1: - if (*combine[1].anm_check_bit_tbl & *flag) { (**joint) = cKF_KeyCalc(combine[1].anm_data_src_idx, combine[1].anm_key_num[combine[1].anm_key_num_idx], @@ -771,7 +770,6 @@ extern void cKF_SkeletonInfo_R_combine_translation(s16** joint, int* flag, cKF_S break; case 2: - if (*combine[2].anm_check_bit_tbl & *flag) { (**joint) = cKF_KeyCalc(combine[2].anm_data_src_idx, combine[2].anm_key_num[combine[2].anm_key_num_idx], @@ -789,12 +787,14 @@ extern void cKF_SkeletonInfo_R_combine_translation(s16** joint, int* flag, cKF_S } else { combine[0].anm_const_val_tbl_idx++; } + if (*combine[1].anm_check_bit_tbl & *flag) { combine[1].anm_data_src_idx += combine[1].anm_key_num[combine[1].anm_key_num_idx]; combine[1].anm_key_num_idx++; } else { combine[1].anm_const_val_tbl_idx++; } + if (*combine[2].anm_check_bit_tbl & *flag) { combine[2].anm_data_src_idx += combine[2].anm_key_num[combine[2].anm_key_num_idx]; combine[2].anm_key_num_idx++; @@ -808,17 +808,17 @@ extern void cKF_SkeletonInfo_R_combine_translation(s16** joint, int* flag, cKF_S } extern void cKF_SkeletonInfo_R_combine_rotation(s16** joint, int* flag, cKF_SkeletonInfo_R_combine_work_c* combine, - s8* cwork_num) { - int i = 0; + s8* part_table) { + int i; int j; - s16* temp; f32 calc_joint; - for (i; i < combine->keyframe->skeleton->num_joints; i++) { + for (i = 0; i < combine->keyframe->skeleton->num_joints; i++) { *flag = 4; for (j = 0; j < 3; j++) { - switch (cwork_num[i + 1]) { + /* Determine which animation we should pull from for the joint */ + switch (part_table[i + 1]) { case 0: if (*flag & combine[0].anm_check_bit_tbl[i]) { (**joint) = @@ -868,54 +868,54 @@ extern void cKF_SkeletonInfo_R_combine_rotation(s16** joint, int* flag, cKF_Skel combine[2].anm_const_val_tbl_idx++; } - temp = *joint; - calc_joint = 0.1f * (*temp); - **joint = (s16)(int)((calc_joint - ((f32)(int)(calc_joint * 0.0027777778f) * 360.0f)) * 182.04445f); + /* + * At this point, rotation values in joint are encoded in [degree.x] format. + * This gives one decimal of rotational precision. We then convert from degrees to + * s16 binangle. + */ + /* s16 degree -> float degree with 1 decimal place precision */ + calc_joint = 0.1f * (**joint); + /* degree (unbound) -> [0.0f, 360.0f) -> binangle [-32768, 32767] */ + **joint = (s16)DEG2SHORT_ANGLE2(MOD_F(calc_joint, 360.0f)); *flag = (u32)*flag >> 1; *joint += 1; } } } -extern int cKF_SkeletonInfo_R_combine_play(cKF_SkeletonInfo_R_c* info1, cKF_SkeletonInfo_R_c* info2, s8* flag) { +extern int cKF_SkeletonInfo_R_combine_play(cKF_SkeletonInfo_R_c* info1, cKF_SkeletonInfo_R_c* info2, s8* part_table) { int combinet; s16* joint; - - cKF_SkeletonInfo_R_combine_work_c combine1; - cKF_SkeletonInfo_R_combine_work_c combine2; - cKF_SkeletonInfo_R_combine_work_c combine3; - + cKF_SkeletonInfo_R_combine_work_c combine[3]; int i; - int j; - s_xyz* joint2; s_xyz* applyjoint; - if ((info1 == NULL) || (info2 == NULL) || (flag == NULL)) { + if ((info1 == NULL) || (info2 == NULL) || (part_table == NULL)) { return cKF_STATE_NONE; } joint = (F32_IS_ZERO(info1->morph_counter)) ? &info1->current_joint->x : &info1->target_joint->x; if (info1 != NULL) { - cKF_SkeletonInfo_R_combine_work_set(&combine3, info1); + cKF_SkeletonInfo_R_combine_work_set(&combine[0], info1); } if (info2 != NULL) { - cKF_SkeletonInfo_R_combine_work_set(&combine2, info2); - cKF_SkeletonInfo_R_combine_work_set(&combine1, info2); + cKF_SkeletonInfo_R_combine_work_set(&combine[1], info2); + cKF_SkeletonInfo_R_combine_work_set(&combine[2], info2); } combinet = 0x20; - cKF_SkeletonInfo_R_combine_translation(&joint, &combinet, &combine3, flag); - cKF_SkeletonInfo_R_combine_rotation(&joint, &combinet, &combine3, flag); + cKF_SkeletonInfo_R_combine_translation(&joint, &combinet, &combine[0], part_table); + cKF_SkeletonInfo_R_combine_rotation(&joint, &combinet, &combine[0], part_table); if (info1->rotation_diff_table != NULL) { applyjoint = (F32_IS_ZERO(info1->morph_counter)) ? info1->current_joint : info1->target_joint; applyjoint += 1; - for (i = 0, j = 0; i < info1->skeleton->num_joints; i++, j++) { - applyjoint->x += info1->rotation_diff_table[j].x; - applyjoint->y += info1->rotation_diff_table[j].y; - applyjoint->z += info1->rotation_diff_table[j].z; + for (i = 0; i < info1->skeleton->num_joints; i++) { + applyjoint->x += info1->rotation_diff_table[i].x; + applyjoint->y += info1->rotation_diff_table[i].y; + applyjoint->z += info1->rotation_diff_table[i].z; applyjoint++; } @@ -923,95 +923,89 @@ extern int cKF_SkeletonInfo_R_combine_play(cKF_SkeletonInfo_R_c* info1, cKF_Skel if (F32_IS_ZERO(info1->morph_counter)) { cKF_FrameControl_play(&info2->frame_control); return cKF_FrameControl_play(&info1->frame_control); - } - if (info1->morph_counter > 0.0f) { + } else if (info1->morph_counter > 0.0f) { cKF_SkeletonInfo_R_morphJoint(info1); info1->morph_counter -= 0.5f; if (info1->morph_counter <= 0.0f) { info1->morph_counter = 0.0f; } return cKF_STATE_NONE; + } else { + cKF_SkeletonInfo_R_morphJoint(info1); + info1->morph_counter += 0.5f; + if (info1->morph_counter >= 0.0f) { + info1->morph_counter = 0.0f; + } + cKF_FrameControl_play(&info2->frame_control); + return cKF_FrameControl_play(&info1->frame_control); } - cKF_SkeletonInfo_R_morphJoint(info1); - info1->morph_counter += 0.5f; - if (info1->morph_counter >= 0.0f) { - info1->morph_counter = 0.0f; - } - cKF_FrameControl_play(&info2->frame_control); - return cKF_FrameControl_play(&info1->frame_control); } -extern void cKF_SkeletonInfo_R_T_combine_play(int* arg1, int* arg2, int* arg3, cKF_SkeletonInfo_R_c* info1, - cKF_SkeletonInfo_R_c* info2, cKF_SkeletonInfo_R_c* info3, s8* flag) { +extern void cKF_SkeletonInfo_R_T_combine_play(int* state1, int* state2, int* state3, cKF_SkeletonInfo_R_c* info1, + cKF_SkeletonInfo_R_c* info2, cKF_SkeletonInfo_R_c* info3, + s8* part_table) { int combinet; s16* joint; - - cKF_SkeletonInfo_R_combine_work_c combine1; - cKF_SkeletonInfo_R_combine_work_c combine2; - cKF_SkeletonInfo_R_combine_work_c combine3; + cKF_SkeletonInfo_R_combine_work_c combine[3]; int i; - int j; - s_xyz* joint2; s_xyz* applyjoint; - if ((info1 == NULL) || (info2 == NULL) || (info3 == NULL) || (flag == NULL)) { + if ((info1 == NULL) || (info2 == NULL) || (info3 == NULL) || (part_table == NULL)) { return; } joint = (F32_IS_ZERO(info1->morph_counter)) ? &info1->current_joint->x : &info1->target_joint->x; if (info1 != NULL) { - cKF_SkeletonInfo_R_combine_work_set(&combine3, info1); + cKF_SkeletonInfo_R_combine_work_set(&combine[0], info1); } if (info2 != NULL) { - cKF_SkeletonInfo_R_combine_work_set(&combine2, info2); + cKF_SkeletonInfo_R_combine_work_set(&combine[1], info2); } if (info3 != NULL) { - cKF_SkeletonInfo_R_combine_work_set(&combine1, info3); + cKF_SkeletonInfo_R_combine_work_set(&combine[2], info3); } combinet = 0x20; - cKF_SkeletonInfo_R_combine_translation(&joint, &combinet, &combine3, flag); - cKF_SkeletonInfo_R_combine_rotation(&joint, &combinet, &combine3, flag); + cKF_SkeletonInfo_R_combine_translation(&joint, &combinet, &combine[0], part_table); + cKF_SkeletonInfo_R_combine_rotation(&joint, &combinet, &combine[0], part_table); if (info1->rotation_diff_table != NULL) { applyjoint = (F32_IS_ZERO(info1->morph_counter)) ? info1->current_joint : info1->target_joint; applyjoint += 1; - for (i = 0, j = 0; i < info1->skeleton->num_joints; i++, j++) { - applyjoint->x += info1->rotation_diff_table[j].x; - applyjoint->y += info1->rotation_diff_table[j].y; - applyjoint->z += info1->rotation_diff_table[j].z; + for (i = 0; i < info1->skeleton->num_joints; i++) { + applyjoint->x += info1->rotation_diff_table[i].x; + applyjoint->y += info1->rotation_diff_table[i].y; + applyjoint->z += info1->rotation_diff_table[i].z; applyjoint++; } } if (F32_IS_ZERO(info1->morph_counter)) { - *arg1 = cKF_FrameControl_play(&info1->frame_control); - *arg2 = cKF_FrameControl_play(&info2->frame_control); - *arg3 = cKF_FrameControl_play(&info3->frame_control); - return; - } - if (info1->morph_counter > 0.0f) { + *state1 = cKF_FrameControl_play(&info1->frame_control); + *state2 = cKF_FrameControl_play(&info2->frame_control); + *state3 = cKF_FrameControl_play(&info3->frame_control); + } else if (info1->morph_counter > 0.0f) { cKF_SkeletonInfo_R_morphJoint(info1); info1->morph_counter -= 0.5f; if (info1->morph_counter <= 0.0f) { info1->morph_counter = 0.0f; } - *arg1 = 0; - *arg2 = 0; - *arg3 = 0; - return; + *state1 = cKF_STATE_NONE; + *state2 = cKF_STATE_NONE; + *state3 = cKF_STATE_NONE; + } else { + cKF_SkeletonInfo_R_morphJoint(info1); + info1->morph_counter += 0.5f; + if (info1->morph_counter >= 0.0f) { + info1->morph_counter = 0.0f; + } + *state1 = cKF_FrameControl_play(&info1->frame_control); + *state2 = cKF_FrameControl_play(&info2->frame_control); + *state3 = cKF_FrameControl_play(&info3->frame_control); } - cKF_SkeletonInfo_R_morphJoint(info1); - info1->morph_counter += 0.5f; - if (info1->morph_counter >= 0.0f) { - info1->morph_counter = 0.0f; - } - *arg1 = cKF_FrameControl_play(&info1->frame_control); - *arg2 = cKF_FrameControl_play(&info2->frame_control); - *arg3 = cKF_FrameControl_play(&info3->frame_control); } extern void cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(cKF_SkeletonInfo_R_c* keyframe, f32 transx, f32 transy, @@ -1032,12 +1026,8 @@ extern void cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(cKF_SkeletonInfo_R_c extern void cKF_SkeletonInfo_R_AnimationMove_ct_base(xyz_t* basepos, xyz_t* correctpos, s16 ybase, s16 yidle, f32 counter, cKF_SkeletonInfo_R_c* keyframe, int an_flag) { - int sub; - keyframe->animation_enabled = an_flag; - keyframe->fixed_counter = (counter >= 0.0f) ? counter : -counter; - keyframe->base_world_position = ZeroVec; keyframe->model_world_position_correction = ZeroVec; @@ -1060,11 +1050,12 @@ extern void cKF_SkeletonInfo_R_AnimationMove_ct_base(xyz_t* basepos, xyz_t* corr keyframe->model_angle_correction = 0; if (an_flag & cKF_ANIMATION_ROT_Y) { - sub = ybase - yidle; - if (sub > 0x8000) { - sub = -(0x10000 - sub); - } else if (sub < -0x8000) { - sub += 0x10000; + int sub = ybase - yidle; + + if (sub > DEG2SHORT_ANGLE2(180.0f)) { + sub = -(DEG2SHORT_ANGLE2(360.0f) - sub); + } else if (sub < DEG2SHORT_ANGLE2(-180.0f)) { + sub += DEG2SHORT_ANGLE2(360.0f); } keyframe->base_angle_y = yidle; keyframe->model_angle_correction = sub; diff --git a/src/data/player/BOY_part_data.c b/src/data/player/BOY_part_data.c new file mode 100644 index 00000000..ca9af8ad --- /dev/null +++ b/src/data/player/BOY_part_data.c @@ -0,0 +1,164 @@ +#include "types.h" +#include "m_player.h" + +/* + * These tables dictate which animation will play for a given joint. + * The player has two main animation states. 0 uses PLAYER_ACTOR::keyframe0, + * and 1 uses PLAYER_ACTOR::keyframe1. This is essentially a barebones + * animation overlay system. + */ + +// clang-format off +s8 BOY_part_data[][mPlayer_JOINT_NUM + 1] = { + /* Normal */ + { + 0, /* Base translation */ + 0, /* mPlayer_JOINT_ROOT */ + 0, /* mPlayer_JOINT_BASE */ + 0, /* mPlayer_JOINT_LFOOT_BASE */ + 0, /* mPlayer_JOINT_LFOOT1 */ + 0, /* mPlayer_JOINT_LFOOT2 */ + 0, /* mPlayer_JOINT_LFOOT3 */ + 0, /* mPlayer_JOINT_RFOOT_BASE */ + 0, /* mPlayer_JOINT_RFOOT1 */ + 0, /* mPlayer_JOINT_RFOOT2 */ + 0, /* mPlayer_JOINT_RFOOT3 */ + 0, /* mPlayer_JOINT_TAIL_BASE */ + 0, /* mPlayer_JOINT_TAIL1 */ + 0, /* mPlayer_JOINT_TAIL2 */ + 0, /* mPlayer_JOINT_CHEST */ + 0, /* mPlayer_JOINT_LARM_BASE */ + 0, /* mPlayer_JOINT_LARM1 */ + 0, /* mPlayer_JOINT_LARM2 */ + 0, /* mPlayer_JOINT_RARM_BASE */ + 0, /* mPlayer_JOINT_RARM1 */ + 0, /* mPlayer_JOINT_RARM2 */ + 0, /* mPlayer_JOINT_HAND */ + 0, /* mPlayer_JOINT_HEAD_BASE */ + 0, /* mPlayer_JOINT_MOUTH_BASE */ + 0, /* mPlayer_JOINT_MOUTH */ + 0, /* mPlayer_JOINT_HEAD */ + 0, /* mPlayer_JOINT_FEEL */ + }, + /* Axe */ + { + 0, /* Base translation */ + 0, /* mPlayer_JOINT_ROOT */ + 0, /* mPlayer_JOINT_BASE */ + 0, /* mPlayer_JOINT_LFOOT_BASE */ + 0, /* mPlayer_JOINT_LFOOT1 */ + 0, /* mPlayer_JOINT_LFOOT2 */ + 0, /* mPlayer_JOINT_LFOOT3 */ + 0, /* mPlayer_JOINT_RFOOT_BASE */ + 0, /* mPlayer_JOINT_RFOOT1 */ + 0, /* mPlayer_JOINT_RFOOT2 */ + 0, /* mPlayer_JOINT_RFOOT3 */ + 0, /* mPlayer_JOINT_TAIL_BASE */ + 0, /* mPlayer_JOINT_TAIL1 */ + 0, /* mPlayer_JOINT_TAIL2 */ + 0, /* mPlayer_JOINT_CHEST */ + 1, /* mPlayer_JOINT_LARM_BASE */ + 1, /* mPlayer_JOINT_LARM1 */ + 1, /* mPlayer_JOINT_LARM2 */ + 1, /* mPlayer_JOINT_RARM_BASE */ + 1, /* mPlayer_JOINT_RARM1 */ + 1, /* mPlayer_JOINT_RARM2 */ + 1, /* mPlayer_JOINT_HAND */ + 0, /* mPlayer_JOINT_HEAD_BASE */ + 0, /* mPlayer_JOINT_MOUTH_BASE */ + 0, /* mPlayer_JOINT_MOUTH */ + 0, /* mPlayer_JOINT_HEAD */ + 0, /* mPlayer_JOINT_FEEL */ + }, + /* Pickup */ + { + 0, /* Base translation */ + 0, /* mPlayer_JOINT_ROOT */ + 0, /* mPlayer_JOINT_BASE */ + 0, /* mPlayer_JOINT_LFOOT_BASE */ + 0, /* mPlayer_JOINT_LFOOT1 */ + 0, /* mPlayer_JOINT_LFOOT2 */ + 0, /* mPlayer_JOINT_LFOOT3 */ + 0, /* mPlayer_JOINT_RFOOT_BASE */ + 0, /* mPlayer_JOINT_RFOOT1 */ + 0, /* mPlayer_JOINT_RFOOT2 */ + 0, /* mPlayer_JOINT_RFOOT3 */ + 0, /* mPlayer_JOINT_TAIL_BASE */ + 0, /* mPlayer_JOINT_TAIL1 */ + 0, /* mPlayer_JOINT_TAIL2 */ + 0, /* mPlayer_JOINT_CHEST */ + 0, /* mPlayer_JOINT_LARM_BASE */ + 0, /* mPlayer_JOINT_LARM1 */ + 0, /* mPlayer_JOINT_LARM2 */ + 1, /* mPlayer_JOINT_RARM_BASE */ + 1, /* mPlayer_JOINT_RARM1 */ + 1, /* mPlayer_JOINT_RARM2 */ + 1, /* mPlayer_JOINT_HAND */ + 0, /* mPlayer_JOINT_HEAD_BASE */ + 0, /* mPlayer_JOINT_MOUTH_BASE */ + 0, /* mPlayer_JOINT_MOUTH */ + 0, /* mPlayer_JOINT_HEAD */ + 0, /* mPlayer_JOINT_FEEL */ + }, + /* Net */ + { + 0, /* Base translation */ + 0, /* mPlayer_JOINT_ROOT */ + 0, /* mPlayer_JOINT_BASE */ + 0, /* mPlayer_JOINT_LFOOT_BASE */ + 0, /* mPlayer_JOINT_LFOOT1 */ + 0, /* mPlayer_JOINT_LFOOT2 */ + 0, /* mPlayer_JOINT_LFOOT3 */ + 0, /* mPlayer_JOINT_RFOOT_BASE */ + 0, /* mPlayer_JOINT_RFOOT1 */ + 0, /* mPlayer_JOINT_RFOOT2 */ + 0, /* mPlayer_JOINT_RFOOT3 */ + 0, /* mPlayer_JOINT_TAIL_BASE */ + 0, /* mPlayer_JOINT_TAIL1 */ + 0, /* mPlayer_JOINT_TAIL2 */ + 0, /* mPlayer_JOINT_CHEST */ + 0, /* mPlayer_JOINT_LARM_BASE */ + 0, /* mPlayer_JOINT_LARM1 */ + 0, /* mPlayer_JOINT_LARM2 */ + 1, /* mPlayer_JOINT_RARM_BASE */ + 1, /* mPlayer_JOINT_RARM1 */ + 1, /* mPlayer_JOINT_RARM2 */ + 1, /* mPlayer_JOINT_HAND */ + 0, /* mPlayer_JOINT_HEAD_BASE */ + 0, /* mPlayer_JOINT_MOUTH_BASE */ + 0, /* mPlayer_JOINT_MOUTH */ + 0, /* mPlayer_JOINT_HEAD */ + 0, /* mPlayer_JOINT_FEEL */ + }, + /* Fan */ + { + 1, /* Base translation */ + 1, /* mPlayer_JOINT_ROOT */ + 1, /* mPlayer_JOINT_BASE */ + 1, /* mPlayer_JOINT_LFOOT_BASE */ + 1, /* mPlayer_JOINT_LFOOT1 */ + 1, /* mPlayer_JOINT_LFOOT2 */ + 1, /* mPlayer_JOINT_LFOOT3 */ + 1, /* mPlayer_JOINT_RFOOT_BASE */ + 1, /* mPlayer_JOINT_RFOOT1 */ + 1, /* mPlayer_JOINT_RFOOT2 */ + 1, /* mPlayer_JOINT_RFOOT3 */ + 1, /* mPlayer_JOINT_TAIL_BASE */ + 1, /* mPlayer_JOINT_TAIL1 */ + 1, /* mPlayer_JOINT_TAIL2 */ + 1, /* mPlayer_JOINT_CHEST */ + 1, /* mPlayer_JOINT_LARM_BASE */ + 1, /* mPlayer_JOINT_LARM1 */ + 1, /* mPlayer_JOINT_LARM2 */ + 0, /* mPlayer_JOINT_RARM_BASE */ + 0, /* mPlayer_JOINT_RARM1 */ + 0, /* mPlayer_JOINT_RARM2 */ + 0, /* mPlayer_JOINT_HAND */ + 0, /* mPlayer_JOINT_HEAD_BASE */ + 1, /* mPlayer_JOINT_MOUTH_BASE */ + 1, /* mPlayer_JOINT_MOUTH */ + 1, /* mPlayer_JOINT_HEAD */ + 1, /* mPlayer_JOINT_FEEL */ + }, +}; +// clang-format on From 7f8ce8a58fc993c87465054e3b486be6ed18c49c Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Thu, 12 Sep 2024 18:40:34 -0400 Subject: [PATCH 231/234] Link m_player --- config/assets.yml | 9 + config/rel_slices.yml | 4 + include/audio_defs.h | 5 +- include/jsyswrap.h | 156 ++-- include/m_collision_bg.h | 2 + include/m_lib.h | 2 +- include/m_name_table.h | 1 + include/m_player.h | 7 +- src/m_player.c | 297 ++++-- src/m_player_common.c_inc | 111 +-- src/m_player_draw.c_inc | 12 +- src/m_player_item.c_inc | 10 +- src/m_player_item_axe.c_inc | 16 +- src/m_player_item_balloon.c_inc | 127 ++- src/m_player_item_common.c_inc | 18 +- src/m_player_item_fan.c_inc | 16 +- src/m_player_item_net.c_inc | 156 ++-- src/m_player_item_scoop.c_inc | 20 +- src/m_player_item_umbrella.c_inc | 14 +- src/m_player_item_windmill.c_inc | 93 +- src/m_player_main_air_axe.c_inc | 10 +- src/m_player_main_air_rod.c_inc | 14 +- src/m_player_main_air_scoop.c_inc | 8 +- src/m_player_main_broken_axe.c_inc | 6 +- src/m_player_main_cast_rod.c_inc | 10 +- src/m_player_main_change_cloth.c_inc | 2 +- src/m_player_main_close_furniture.c_inc | 2 +- src/m_player_main_collect_rod.c_inc | 12 +- src/m_player_main_complete_payment.c_inc | 4 +- src/m_player_main_dash.c_inc | 23 +- src/m_player_main_demo_get_golden_item.c_inc | 2 +- ...player_main_demo_getoff_boat_standup.c_inc | 2 +- ..._player_main_demo_geton_boat_sitdown.c_inc | 8 +- src/m_player_main_demo_geton_boat_wait.c_inc | 4 +- src/m_player_main_demo_wade.c_inc | 2 +- src/m_player_main_demo_wait.c_inc | 6 +- src/m_player_main_demo_walk.c_inc | 4 +- src/m_player_main_dig_scoop.c_inc | 6 +- src/m_player_main_dma.c_inc | 8 +- src/m_player_main_door.c_inc | 4 +- src/m_player_main_fail_emu.c_inc | 4 +- src/m_player_main_fall.c_inc | 14 +- src/m_player_main_fill_scoop.c_inc | 8 +- src/m_player_main_fly_rod.c_inc | 8 +- src/m_player_main_get_scoop.c_inc | 8 +- src/m_player_main_hide.c_inc | 2 +- src/m_player_main_mail_jump.c_inc | 2 +- src/m_player_main_notice_mosquito.c_inc | 2 +- src/m_player_main_notice_net.c_inc | 8 +- src/m_player_main_notice_rod.c_inc | 12 +- src/m_player_main_open_furniture.c_inc | 2 +- src/m_player_main_pickup_exchange.c_inc | 2 +- src/m_player_main_pickup_furniture.c_inc | 6 +- src/m_player_main_pickup_jump.c_inc | 6 +- src/m_player_main_pull_net.c_inc | 12 +- src/m_player_main_push_snowball.c_inc | 6 +- src/m_player_main_putaway_net.c_inc | 6 +- src/m_player_main_putaway_rod.c_inc | 8 +- src/m_player_main_putaway_scoop.c_inc | 8 +- src/m_player_main_putin_item.c_inc | 6 +- src/m_player_main_putin_scoop.c_inc | 8 +- src/m_player_main_radio_exercise.c_inc | 4 +- src/m_player_main_ready_net.c_inc | 6 +- src/m_player_main_ready_rod.c_inc | 8 +- src/m_player_main_ready_walk_net.c_inc | 10 +- src/m_player_main_reflect_scoop.c_inc | 8 +- src/m_player_main_refuse.c_inc | 2 +- src/m_player_main_refuse_pickup.c_inc | 2 +- src/m_player_main_relax_rod.c_inc | 10 +- src/m_player_main_remove_grass.c_inc | 2 +- src/m_player_main_return_demo.c_inc | 8 +- src/m_player_main_return_outdoor2.c_inc | 2 +- src/m_player_main_roll_bed.c_inc | 2 +- src/m_player_main_rotate_umbrella.c_inc | 2 +- src/m_player_main_sitdown.c_inc | 2 +- src/m_player_main_sitdown_wait.c_inc | 4 +- src/m_player_main_standup.c_inc | 4 +- src/m_player_main_standup_bed.c_inc | 2 +- src/m_player_main_stop_net.c_inc | 8 +- src/m_player_main_stung_bee.c_inc | 2 +- src/m_player_main_stung_mosquito.c_inc | 6 +- src/m_player_main_swing_axe.c_inc | 28 +- src/m_player_main_swing_fan.c_inc | 4 +- src/m_player_main_swing_net.c_inc | 8 +- src/m_player_main_takeout_item.c_inc | 6 +- src/m_player_main_tumble.c_inc | 14 +- src/m_player_main_tumble_getup.c_inc | 20 +- src/m_player_main_vib_rod.c_inc | 8 +- src/m_player_main_wade.c_inc | 2 +- src/m_player_main_wade_snowball.c_inc | 6 +- src/m_player_main_wait_bed.c_inc | 6 +- src/m_player_main_wait_open_furniture.c_inc | 2 +- src/m_player_main_walk.c_inc | 6 +- src/m_player_other_func.c_inc | 74 +- src/m_player_sound.c_inc | 2 +- src/m_player_tools.c_inc | 57 ++ src/static/jsyswrap.cpp | 864 +++++++++--------- 97 files changed, 1350 insertions(+), 1202 deletions(-) create mode 100644 src/m_player_tools.c_inc diff --git a/config/assets.yml b/config/assets.yml index a60b3d3f..4ede5a27 100644 --- a/config/assets.yml +++ b/config/assets.yml @@ -175,6 +175,15 @@ config/rel.yml: mbg_v: addrs: [0x80684BB0, 0x80684C30] type: vtx + # m_player + tol_sponge_1_v: + addrs: [0x8069E580, 0x8069E620] + type: vtx + tol_sponge_1_pal: + addrs: [0x8069E620, 0x8069E640] + type: pal16 + tol_sponge_1_main1_tex_txt: + addrs: [0x8069E640, 0x8069E6C0] aKOI_obj_e_koinobori_a_pal: addrs: [0x806C5900, 0x806C5920] type: pal16 diff --git a/config/rel_slices.yml b/config/rel_slices.yml index 5d4a34d8..d29166be 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -743,6 +743,10 @@ m_mark_room_ovl.c: .rodata: [0x806465C8, 0x806465D0] .data: [0x8069CAF0, 0x8069E580] .bss: [0x81300BD8, 0x813010D0] +m_player.c: + .text: [0x804D3B24, 0x80508E58] + .rodata: [0x806465D0, 0x80648ED0] + .data: [0x8069E580, 0x8069E918] m_random_field_ovl.c: .text: [0x80508E58, 0x8050B3D0] .rodata: [0x80648ED0, 0x80648ED8] diff --git a/include/audio_defs.h b/include/audio_defs.h index f067c09a..7948af12 100644 --- a/include/audio_defs.h +++ b/include/audio_defs.h @@ -146,6 +146,8 @@ typedef enum audio_sound_effects { NA_SE_HARD_CHAIR_STANDUP, NA_SE_BUBU_CHAIR_STANDUP = 0x429, + NA_SE_JUMP, + NA_SE_LANDING, NA_SE_FTR_DOOR_OPEN = 0x42C, NA_SE_FTR_DOOR_CLOSE = 0x42D, NA_SE_DRAWER_OPEN = 0x42E, @@ -154,9 +156,6 @@ typedef enum audio_sound_effects { NA_SE_UMBRELLA_ROTATE = 0x432, - NA_SE_JUMP, - NA_SE_LANDING, - NA_SE_KARABURI = 0x43A, NA_SE_ROD_STROKE_SMALL = 0x445, diff --git a/include/jsyswrap.h b/include/jsyswrap.h index 636776e4..3ccd7573 100644 --- a/include/jsyswrap.h +++ b/include/jsyswrap.h @@ -12,84 +12,84 @@ extern "C" { #endif enum resource_index { - RESOURCE_FGDATA, - RESOURCE_MAIL, - RESOURCE_MAIL_TABLE, - RESOURCE_MAILA, - RESOURCE_MAILA_TABLE, - RESOURCE_MAILB, - RESOURCE_MAILB_TABLE, - RESOURCE_MAILC, - RESOURCE_MAILC_TABLE, - RESOURCE_PALLET_BOY, - RESOURCE_PS, - RESOURCE_PS_TABLE, - RESOURCE_PSZ, - RESOURCE_PSZ_TABLE, - RESOURCE_SELECT, - RESOURCE_SELECT_TABLE, - RESOURCE_STRING, - RESOURCE_STRING_TABLE, - RESOURCE_SUPERZ, - RESOURCE_SUPERZ_TABLE, - RESOURCE_SUPER, - RESOURCE_SUPER_TABLE, - RESOURCE_TEX_BOY, - RESOURCE_FACE_BOY, - RESOURCE_FGNPCDATA, - RESOURCE_MESSAGE, - RESOURCE_MESSAGE_TABLE, - RESOURCE_MY_ORIGINAL, - RESOURCE_NEEDLEWORK_JOYBOOT, - RESOURCE_PLAYER_ROOM_FLOOR, - RESOURCE_PLAYER_ROOM_WALL, - RESOURCE_NPC_NAME_STR_TABLE, - RESOURCE_D_OBJ_NPC_STOCK_SCH, - RESOURCE_D_OBJ_NPC_STOCK_SCL, - RESOURCE_TITLE, - RESOURCE_MURA_SPRING, - RESOURCE_MURA_SUMMER, - RESOURCE_MURA_FALL, - RESOURCE_MURA_WINTER, - RESOURCE_ODEKAKE, - RESOURCE_OMAKE, - RESOURCE_EKI1, - RESOURCE_EKI1_2, - RESOURCE_EKI1_3, - RESOURCE_EKI1_4, - RESOURCE_EKI1_5, - RESOURCE_EKI2, - RESOURCE_EKI2_2, - RESOURCE_EKI2_3, - RESOURCE_EKI2_4, - RESOURCE_EKI2_5, - RESOURCE_EKI3, - RESOURCE_EKI3_2, - RESOURCE_EKI3_3, - RESOURCE_EKI3_4, - RESOURCE_EKI3_5, - RESOURCE_TEGAMI, - RESOURCE_TEGAMI2, - RESOURCE_FAMIKON, - RESOURCE_BOY1, - RESOURCE_BOY2, - RESOURCE_BOY3, - RESOURCE_BOY4, - RESOURCE_BOY5, - RESOURCE_BOY6, - RESOURCE_BOY7, - RESOURCE_BOY8, - RESOURCE_GIRL11, - RESOURCE_GIRL12, - RESOURCE_GIRL13, - RESOURCE_GIRL14, - RESOURCE_GIRL15, - RESOURCE_GIRL16, - RESOURCE_GIRL17, - RESOURCE_GIRL18, - RESOURCE_D_BG_ISLAND_SCH, + RESOURCE_FGDATA, + RESOURCE_MAIL, + RESOURCE_MAIL_TABLE, + RESOURCE_MAILA, + RESOURCE_MAILA_TABLE, + RESOURCE_MAILB, + RESOURCE_MAILB_TABLE, + RESOURCE_MAILC, + RESOURCE_MAILC_TABLE, + RESOURCE_PALLET_BOY, + RESOURCE_PS, + RESOURCE_PS_TABLE, + RESOURCE_PSZ, + RESOURCE_PSZ_TABLE, + RESOURCE_SELECT, + RESOURCE_SELECT_TABLE, + RESOURCE_STRING, + RESOURCE_STRING_TABLE, + RESOURCE_SUPERZ, + RESOURCE_SUPERZ_TABLE, + RESOURCE_SUPER, + RESOURCE_SUPER_TABLE, + RESOURCE_TEX_BOY, + RESOURCE_FACE_BOY, + RESOURCE_FGNPCDATA, + RESOURCE_MESSAGE, + RESOURCE_MESSAGE_TABLE, + RESOURCE_MY_ORIGINAL, + RESOURCE_NEEDLEWORK_JOYBOOT, + RESOURCE_PLAYER_ROOM_FLOOR, + RESOURCE_PLAYER_ROOM_WALL, + RESOURCE_NPC_NAME_STR_TABLE, + RESOURCE_D_OBJ_NPC_STOCK_SCH, + RESOURCE_D_OBJ_NPC_STOCK_SCL, + RESOURCE_TITLE, + RESOURCE_MURA_SPRING, + RESOURCE_MURA_SUMMER, + RESOURCE_MURA_FALL, + RESOURCE_MURA_WINTER, + RESOURCE_ODEKAKE, + RESOURCE_OMAKE, + RESOURCE_EKI1, + RESOURCE_EKI1_2, + RESOURCE_EKI1_3, + RESOURCE_EKI1_4, + RESOURCE_EKI1_5, + RESOURCE_EKI2, + RESOURCE_EKI2_2, + RESOURCE_EKI2_3, + RESOURCE_EKI2_4, + RESOURCE_EKI2_5, + RESOURCE_EKI3, + RESOURCE_EKI3_2, + RESOURCE_EKI3_3, + RESOURCE_EKI3_4, + RESOURCE_EKI3_5, + RESOURCE_TEGAMI, + RESOURCE_TEGAMI2, + RESOURCE_FAMIKON, + RESOURCE_BOY1, + RESOURCE_BOY2, + RESOURCE_BOY3, + RESOURCE_BOY4, + RESOURCE_BOY5, + RESOURCE_BOY6, + RESOURCE_BOY7, + RESOURCE_BOY8, + RESOURCE_GIRL11, + RESOURCE_GIRL12, + RESOURCE_GIRL13, + RESOURCE_GIRL14, + RESOURCE_GIRL15, + RESOURCE_GIRL16, + RESOURCE_GIRL17, + RESOURCE_GIRL18, + RESOURCE_D_BG_ISLAND_SCH, - RESOURCE_NUM + RESOURCE_NUM }; extern void JW_UpdateVideoMode(); @@ -104,7 +104,7 @@ extern int JW_JUTGamepad_getErrorStatus(); extern u32 JW_JUTGamepad_getButton(); extern u32 JW_JUTGamepad_getTrigger(); extern f32 JW_JUTGamepad_getSubStickValue(); -extern int JW_JUTGamepad_getSubStickAngle(); +extern s16 JW_JUTGamepad_getSubStickAngle(); extern void JW_BeginFrame(); extern void JW_EndFrame(); extern int JW_setClearColor(u8 r, u8 g, u8 b); diff --git a/include/m_collision_bg.h b/include/m_collision_bg.h index 240b8661..6967ece4 100644 --- a/include/m_collision_bg.h +++ b/include/m_collision_bg.h @@ -353,6 +353,8 @@ typedef int (*mCoBG_LINECHECK_PROC)(mActor_name_t); extern int mCoBG_LineCheck_RemoveFg(xyz_t* rev_pos, xyz_t start_pos, xyz_t end_pos, mCoBG_LINECHECK_PROC check_proc, int category); +extern int mCoBG_GetMoveBgHeight(f32* move_bg_height, xyz_t* pos_p); +extern int mCoBG_WoodSoundEffect(const xyz_t* pos_p); extern void mCoBG_InitMoveBgData(); extern void mCoBG_InitBlockBgCheckMode(); diff --git a/include/m_lib.h b/include/m_lib.h index 3277f7c4..82bf72ac 100644 --- a/include/m_lib.h +++ b/include/m_lib.h @@ -34,8 +34,8 @@ extern "C" { /* degrees -> short angle */ #define DEG2SHORT_ANGLE(deg) ((s16)((deg) * (65536.0f / 360.0f))) - #define DEG2SHORT_ANGLE2(deg) ((int)((deg) * (65536.0f / 360.0f))) +#define DEG2SHORT_ANGLE3(deg) ((deg) * (65536.0f / 360.0f)) /* short angle -> degrees */ #define SHORT2DEG_ANGLE(s) ((((f32)(s)) / (65536.0f / 360.0f))) diff --git a/include/m_name_table.h b/include/m_name_table.h index 7f14095d..db832567 100644 --- a/include/m_name_table.h +++ b/include/m_name_table.h @@ -490,6 +490,7 @@ extern int mNT_check_unknown(mActor_name_t item_no); ) #define IS_ITEM_PALM_TREE(item) ((item) >= TREE_PALM_SAPLING && (item) < TREE_PALM_FRUIT) +#define IS_ITEM_ANY_PALM_TREE(item) ((item) >= TREE_PALM_SAPLING && (item) <= TREE_PALM_FRUIT) #define IS_ITEM_TREE_STUMP(item) ((item >= TREE_STUMP001 && (item) <= TREE_STUMP004) || \ (item) >= TREE_PALM_STUMP001 && (item) <= TREE_PALM_STUMP004 || \ diff --git a/include/m_player.h b/include/m_player.h index 90928f64..1bf34fb9 100644 --- a/include/m_player.h +++ b/include/m_player.h @@ -278,7 +278,7 @@ enum { #define mPlayer_REQUEST_PRIORITY_NONE -1 -#define mPlayer_REQUEST_PRIORITY_VALID(prio) ((prio) >= 0 && (prio) < mPlayer_REQUEST_PRIORITY_NUM) +#define mPlayer_REQUEST_PRIORITY_VALID(prio) ((prio) >= 0 && (prio) <= mPlayer_REQUEST_PRIORITY_45) enum { mPlayer_ANIM_WAIT1, @@ -1817,6 +1817,7 @@ typedef struct player_main_notice_rod_s { f32 timer; int state; int not_full_pocket; + s16 angle_y; int exchange_flag; int already_collected; int end_effect_flag; @@ -1869,7 +1870,7 @@ typedef struct player_main_shock_s { s16 target_angle_y; f32 timer; f32 end_time; - u8 bee_chase_bgm_flag; + s8 bee_chase_bgm_flag; int axe_flag; int bgm_stop_flag; } mPlayer_main_shock_c; @@ -2264,7 +2265,7 @@ struct player_actor_s { /* 0x1300 */ void* (*get_door_label_proc)(GAME*); /* 0x1304 */ int (*Set_Item_net_catch_request_table_proc)(ACTOR*, GAME*, u32, s8, const xyz_t*, f32); /* 0x1308 */ f32 (*Get_Item_net_catch_swing_timer_proc)(ACTOR*, GAME*); - /* 0x130C */ u8 (*Set_Item_net_catch_request_force_proc)(ACTOR*, GAME*, u32, s8); + /* 0x130C */ int (*Set_Item_net_catch_request_force_proc)(ACTOR*, GAME*, u32, s8); /* 0x1310 */ void (*Set_force_position_angle_proc)(GAME*, const xyz_t*, const s_xyz*, u8); /* 0x1314 */ u8 (*Get_force_position_angle_proc)(GAME*, xyz_t*, s_xyz*); /* 0x1318 */ int (*Get_WadeEndPos_proc)(GAME*, xyz_t*); diff --git a/src/m_player.c b/src/m_player.c index 6bf79e1e..c2fcb463 100644 --- a/src/m_player.c +++ b/src/m_player.c @@ -23,8 +23,54 @@ #include "ac_insect.h" #include "ac_gyoei.h" #include "ac_gyo_release.h" +#include "jsyswrap.h" +#include "ac_set_ovl_gyoei.h" +#include "m_vibctl.h" +#include "m_debug.h" /* Static function declarations, add as needed for intellisense */ +static void Player_actor_Item_Setup_main(ACTOR* actor, int now, int last); +static mActor_name_t Player_actor_Get_ItemNoSubmenu(void); +static int Player_actor_request_main_broken_axe_type_swing(GAME* game, const xyz_t* pos, mActor_name_t hit_item, + int hit_ut_x, int hit_ut_z, int priority); +static int Player_actor_request_main_swing_axe_all(GAME* game, const xyz_t* pos, mActor_name_t hit_item, u16 damage_no, + int hit_ut_x, int hit_ut_z, int priority); +static int Player_actor_request_main_broken_axe_type_reflect(GAME* game, const xyz_t* pos, mActor_name_t hit_item, + ACTOR* hit_actor, int priority); +static int Player_actor_request_main_reflect_axe_all(GAME* game, const xyz_t* pos, mActor_name_t hit_item, + u16 damage_no, ACTOR* hit_actor, int priority); +static int Player_actor_request_main_air_axe_all(GAME* game, int priority); +static int Player_actor_request_main_rotate_umbrella_all(GAME* game, int prio); +static int Player_actor_request_main_swing_fan_all(GAME* game, int start_swing, int prio); +static int Player_actor_request_main_wade_all(GAME* game, int dir, int priority); +static int Player_actor_request_main_demo_wade_all(GAME* game, int dir, int priority); +static int Player_actor_request_main_demo_geton_boat_wade_all(GAME* game, int dir, f32 border_ofs, int prio); +static int Player_actor_request_main_wade_snowball_all(GAME* game, int dir, const xyz_t* snowball_dist_p, int priority); +static int Player_actor_Check_ItemAnimationToItemKind(int kind, int anim); +static int Player_actor_request_main_dig_scoop_all(GAME* game, const xyz_t* pos, mActor_name_t name, int priority); +static int Player_actor_request_main_fill_scoop_all(GAME* game, const xyz_t* pos, int priority); +static int Player_actor_request_main_reflect_scoop_all(GAME* game, const xyz_t* pos, mActor_name_t item, + ACTOR* hit_actor, int priority); +static int Player_actor_request_main_air_scoop_all(GAME* game, int priority); +static int Player_actor_request_main_get_scoop_all(GAME* game, const xyz_t* pos, mActor_name_t item, int priority); +static int Player_actor_request_main_shake_tree_all(GAME* game, const xyz_t* target_pos_p, mActor_name_t item, + int tree_ut_x, int tree_ut_z, int priority); +static int Player_actor_request_main_ready_pitfall_all(GAME* game, const xyz_t* pos_p, int prio); +static int Player_actor_request_main_knock_door(GAME* game, const xyz_t* pos_p, s16 angle_y, int prio); +static s8 Player_actor_Get_ItemKind_fromScene(void); +static int Player_actor_request_main_putin_item(GAME* game, int priority); +static int Player_actor_request_main_takeout_item(GAME* game, int priority); +static void Player_actor_Refuse_pickup_demo_ct(ACTOR* actor); +static int Player_actor_request_main_pickup_jump(GAME* game, int slot_idx, mActor_name_t item, const xyz_t* item_pos_p, + int ftr_flag, int knife_and_fork_flag); +static int Player_actor_request_main_pickup_furniture(GAME* game, int slot_idx, mActor_name_t item, + const xyz_t* item_pos_p); +static int Player_actor_request_main_remove_grass(GAME* game, const xyz_t* target_pos_p, const xyz_t* grass_pos_p); +static int Player_actor_request_main_pickup(GAME* game, mActor_name_t item, const xyz_t* target_pos_p, + const xyz_t* item_pos_p, int slot_idx, int signboard_flag); +static int Player_actor_request_main_radio_exercise_all(GAME* game, int cmd, f32 speed, int prio); +static void Player_actor_request_main_change_from_submenu(ACTOR* actorx, GAME* game); +static void Player_actor_request_change_item(GAME* game); static int Player_actor_check_request_main_able(GAME* game, int request_main_index, int priority); static void Player_actor_request_main_index(GAME* game, int request_index, int priority); static void Player_actor_InitAnimation_Base1(ACTOR* actorx, GAME* game, int anim0_idx, int anim1_idx, f32 anim0_frame, @@ -139,8 +185,8 @@ static void Player_actor_sound_move_temochi_kazaguruma(ACTOR* actor); static void Player_actor_set_viblation_Shake_tree(void); static int Player_actor_Item_main(ACTOR* actorx, GAME* game); -static void Player_actor_LoadOrDestruct_Item(ACTOR* actor, int kind, int anim_idx, int mode, f32 speed, f32 morph_speed, - f32 frame); +static void Player_actor_LoadOrDestruct_Item(ACTOR* actor, int kind, int anim_idx, f32 speed, f32 morph_speed, + f32 frame, int mode); static int Player_actor_Get_BasicItemMainIndex_fromItemKind(int kind); static int Player_actor_CheckController_forPickup(GAME* game); @@ -162,6 +208,169 @@ static f32 Player_actor_GetController_recognize_percentR(void); static f32 Player_actor_GetController_old_recognize_percentR(void); static int Player_actor_CheckController_forRadio_exercise(GAME* game); +static void Player_actor_ct_forCorect(ACTOR* actorx, GAME* game); +static void Player_actor_set_eye_pattern(ACTOR* actorx, int idx); +static void Player_actor_set_mouth_pattern(ACTOR* actorx, int idx); +static void Player_actor_Set_old_sound_frame_counter(ACTOR* actorx); +static void Player_actor_change_proc_index(ACTOR* actorx, GAME* game); + +static int Player_actor_request_main_fail_emu(GAME* game, int prio); +static int Player_actor_request_main_intro_all(GAME* game, int prio); +static int Player_actor_request_main_wait_all(GAME* game, f32 morph_speed, f32 _04, int flags, int priority); + +static int Player_actor_request_main_invade_all(GAME*, int); +// static int Player_actor_request_main_refuse(GAME*, int); +// static int Player_actor_request_main_return_demo_all(GAME*, int, f32, int); +// static int Player_actor_request_main_wait_all(GAME*, f32, f32, int, int); +static int Player_actor_request_main_talk_all(GAME*, ACTOR*, int, f32, int, int); +static int Player_actor_request_main_hold(GAME*, int, int, const xyz_t*, f32, int, int); +static int Player_actor_request_main_recieve_wait(GAME*, ACTOR*, int, int, mActor_name_t, int, int); +static int Player_actor_request_main_give_all(GAME*, ACTOR*, int, int, mActor_name_t, int, int, int, int); +static int Player_actor_request_main_sitdown(GAME*, int, const xyz_t*, int, int); +static int Player_actor_request_main_close_furniture(GAME*, int); +static int Player_actor_request_main_lie_bed(GAME*, int, const xyz_t*, int, int, int); +static int Player_actor_request_main_hide(GAME*, int); +static int Player_actor_request_main_groundhog(GAME*, int); +static int Player_actor_request_main_door(GAME*, const xyz_t*, s16, int, void*, int); +static int Player_actor_request_main_outdoor(GAME*, int, int, int); +static int Player_actor_request_main_wash_car_all(GAME*, const xyz_t*, const xyz_t*, s16, ACTOR*, int); +static int Player_actor_request_main_rotate_octagon_all(GAME*, ACTOR*, int, int, const xyz_t*, s16, int); +static int Player_actor_request_main_throw_money_all(GAME*, const xyz_t*, s16, int); +static int Player_actor_request_main_pray_all(GAME*, const xyz_t*, s16, int); +static int Player_actor_request_main_mail_jump_all(GAME*, const xyz_t*, s16, int); +static int Player_actor_request_main_demo_wait_all(GAME*, int, void*, int); +static int Player_actor_request_main_demo_walk_all(GAME*, f32, f32, f32, int, int); +static int Player_actor_request_main_demo_geton_train(GAME*, const xyz_t*, s16, int); +static int Player_actor_request_main_demo_getoff_train(GAME*, const xyz_t*, s16, int); +static int Player_actor_request_main_demo_standing_train_all(GAME*, int); +static int Player_actor_request_main_stung_bee_all(GAME*, int); +static int Player_actor_request_main_shock_all(GAME*, f32, s16, s8, int, int); +static int Player_actor_request_main_change_cloth_forNPC(GAME*, mActor_name_t, u16, int); +static int Player_actor_request_main_push_snowball_all(GAME*, void*, int, int); +static int Player_actor_request_main_stung_mosquito_all(GAME*, void*, int); +static int Player_actor_request_main_switch_on_lighthouse_all(GAME*, const xyz_t*, s16, int); +static int Player_actor_request_main_demo_geton_boat_all(GAME*, const xyz_t*, s16, int); +static int Player_actor_request_main_demo_getoff_boat_standup_all(GAME*, const xyz_t*, s16, int); +static int Player_actor_request_main_demo_get_golden_item2_all(GAME*, int, int); +static int Player_actor_request_main_demo_get_golden_axe_wait_all(GAME*, int); +static int Player_actor_check_request_main_priority(GAME*, int); +static void* Player_actor_get_door_label(GAME*); +static int Player_actor_Set_Item_net_catch_request_table(ACTOR*, GAME*, u32, s8, const xyz_t*, f32); +static f32 Player_actor_Get_Item_net_catch_swing_timer(ACTOR*, GAME*); +static int Player_actor_Set_Item_net_catch_request_force(ACTOR*, GAME*, u32, s8); +static void Player_actor_Set_force_position_angle(GAME*, const xyz_t*, const s_xyz*, u8); +static u8 Player_actor_Get_force_position_angle(GAME*, xyz_t*, s_xyz*); +static int Player_actor_Get_WadeEndPos(GAME*, xyz_t*); +static int Player_actor_Check_Label_main_push_snowball(GAME*, void*); +static int Player_actor_SetParam_for_push_snowball(GAME*, const xyz_t*, s16, f32); +static int Player_actor_able_submenu_request_main_index(GAME*); +static int Player_actor_check_able_change_camera_normal_index(ACTOR*); +static int Player_actor_Check_able_force_speak_label(GAME*, void*); +static int Player_actor_check_cancel_request_change_proc_index(int); +static u32 Player_actor_Get_item_net_catch_label(ACTOR*); +static int Player_actor_Change_item_net_catch_label(ACTOR*, u32, s8); +static int Player_actor_Check_StopNet(ACTOR*, xyz_t*); +static int Player_actor_Check_HitAxe(ACTOR*, xyz_t*); +static int Player_actor_Check_VibUnit_OneFrame(ACTOR*, const xyz_t*); +static int Player_actor_Check_HitScoop(ACTOR*, xyz_t*); +static int Player_actor_Check_DigScoop(ACTOR*, xyz_t*); +static int Player_actor_check_request_change_item(GAME*); +static int Player_actor_Check_RotateOctagon(GAME*); +static int Player_actor_Check_end_stung_bee(ACTOR*); +static int Player_actor_Get_status_for_bee(ACTOR*); +static int Player_actor_Set_ScrollDemo_forWade_snowball(ACTOR*, int, const xyz_t*); +static int Player_actor_Check_tree_shaken(ACTOR*, const xyz_t*); +static int Player_actor_Check_tree_shaken_little(ACTOR*, const xyz_t*); +static int Player_actor_Check_tree_shaken_big(ACTOR*, const xyz_t*); +static int Player_actor_Check_Label_main_wade_snowball(GAME*, void*); +static int Player_actor_GetSnowballPos_forWadeSnowball(ACTOR*, xyz_t*); +static int Player_actor_CheckCondition_forWadeSnowball(GAME*, const xyz_t*, s16); +static mActor_name_t Player_actor_Get_itemNo_forWindow(ACTOR*); +static int Player_actor_check_cancel_event_without_priority(GAME*); +static int Player_actor_CheckScene_AbleSubmenu(void); +static int Player_actor_Check_stung_mosquito(GAME*, void*); + +static int Player_actor_request_main_walk_all(GAME*, xyz_t*, f32, int, int); +static int Player_actor_request_main_run_all(GAME*, f32, int, int); +static int Player_actor_request_main_dash_all(GAME*, f32, int, int); +static int Player_actor_request_main_return_outdoor2_all(GAME* game, int prev_index, int now_index, f32 time, f32 arg5); +static int Player_actor_request_main_fall_all(GAME* game, f32 speed, int flags, int prio); +static int Player_actor_request_main_ready_net(GAME* game, int priority); +static int Player_actor_request_main_ready_rod(GAME* game, int priority); +static int Player_actor_request_main_slip_net(GAME* game, int priority); +static int Player_actor_request_main_turn_dash_all(GAME* game, s16 angle, int prio); +static int Player_actor_request_main_tumble(GAME* game, int priority); +static int Player_actor_request_main_tumble_getup(GAME* game, int prio); +static int Player_actor_request_main_release_creature_all(GAME* game, int type, int gold_scoop_flag, + mPlayer_request_release_creature_u* release_data, + ACTOR* release_actor_p, int prio); +static int Player_actor_request_main_complete_payment(GAME* game, int prio); +static int Player_actor_request_main_push(GAME* game, int ftr_no, s16 angle_y, xyz_t* pos, int priority); +static int Player_actor_request_main_pull(GAME* game, int ftr_no, s16 angle, xyz_t* start_pos, xyz_t* end_pos, + xyz_t* ofs, int priority); +static int Player_actor_request_main_rotate_furniture(GAME* game, int ftr_no, s16 angle, xyz_t* pos, int type, + int priority); +static int Player_actor_request_main_open_furniture(GAME* game, s16 angle, xyz_t* pos, int anim_idx, int priority); +static int Player_actor_request_main_wait_open_furniture(GAME* game, int priority); +static int Player_actor_request_main_wait_bed(GAME* game, int priority); +static int Player_actor_request_main_roll_bed(GAME* game, int direction, int priority); +static int Player_actor_request_main_standup_bed(GAME* game, int move_direction, int priority); +static int Player_actor_request_main_pickup_exchange(GAME* game, const xyz_t* target_pos_p, mActor_name_t item, + int priority); +static int Player_actor_request_main_demo_get_golden_item_all(GAME* game, int type, int prio); +static int Player_actor_request_main_sitdown_wait(GAME* game, int ftr_no, int priority); +static int Player_actor_request_main_standup(GAME* game, int ftr_no, int priority); +static int Player_actor_request_main_swing_net(GAME* game, int priority); +static int Player_actor_request_main_ready_walk_net(GAME* game, int priority); +static int Player_actor_request_main_pull_net(GAME* game, int priority); +static int Player_actor_request_main_stop_net(GAME* game, int priority); +static int Player_actor_request_main_notice_net(GAME* game, int already_collected, int priority); +static int Player_actor_request_main_putaway_net(GAME* game, int exchange_flag, int priority); +static int Player_actor_request_main_cast_rod(GAME* game, const xyz_t* pos, int priority); +static int Player_actor_request_main_air_rod(GAME* game, int priority); +static int Player_actor_request_main_relax_rod(GAME* game, int priority); +static int Player_actor_request_main_vib_rod(GAME* game, int priority); +static int Player_actor_request_main_collect_rod(GAME* game, int priority); +static int Player_actor_request_main_fly_rod(GAME* game, int priority); +static int Player_actor_request_main_notice_rod(GAME* game, s16 angle, int priority); +static int Player_actor_request_main_putaway_rod(GAME* game, s16 angle, int exchange_flag, int priority); +static int Player_actor_request_main_recieve_stretch(GAME* game, ACTOR* talk_actor_p, int turn_flag, int ret_main_index, + mActor_name_t item, int surface_flag, int priority); +static int Player_actor_request_main_recieve(GAME* game, ACTOR* talk_actor_p, int turn_flag, int ret_main_index, + mActor_name_t item, int surface_flag, int priority); +static int Player_actor_request_main_recieve_putaway(GAME* game, ACTOR* talk_actor_p, int turn_flag, int ret_main_index, + mActor_name_t item, int surface_flag, int priority); +static int Player_actor_request_main_give_wait_all(GAME* game, ACTOR* talk_actor_p, int turn_flag, int ret_main_index, + mActor_name_t item, int surface_flag, int priority); +static int Player_actor_request_main_demo_geton_train_wait_all(GAME* game, int prio); +static int Player_actor_request_main_tired_all(GAME* game, int priority); +static int Player_actor_request_main_fall_pitfall_all(GAME* game, int prio); +static int Player_actor_request_main_struggle_pitfall_all(GAME* game, int prio); +static int Player_actor_request_main_climbup_pitfall_all(GAME* game, int prio); +static int Player_actor_request_main_notice_bee_all(GAME* game, int prio); +static int Player_actor_request_main_notice_mosquito(GAME* game, u32 label, int prio); +static int Player_actor_request_main_demo_geton_boat_sitdown_all(GAME* game, int prio); +static int Player_actor_request_main_demo_geton_boat_wait_all(GAME* game, int prio); +static int Player_actor_request_main_demo_getoff_boat_all(GAME* game, const xyz_t* pos_p, s16 angle_y, int prio); + +#ifdef MUST_MATCH +#ifndef __INTELLISENSE__ +/* Force assetrip to detect these assets. They're used in a .c_inc file. */ +FORCESTRIP static Vtx tol_sponge_1_v_0[] = { +#include "assets/tol_sponge_1_v.inc" +}; +FORCESTRIP static u16 tol_sponge_1_pal_0[] ATTRIBUTE_ALIGN(32) = { +#include "assets/tol_sponge_1_pal.inc" +}; +FORCESTRIP static u8 tol_sponge_1_main1_tex_txt_0[] ATTRIBUTE_ALIGN(32) = { +#include "assets/tol_sponge_1_main1_tex_txt.inc" +}; +#endif +#endif + +/* Tool Models */ +#include "../src/m_player_tools.c_inc" + /* Common */ #include "../src/m_player_controller.c_inc" #include "../src/m_player_vibration.c_inc" @@ -307,90 +516,6 @@ static int Player_actor_CheckController_forRadio_exercise(GAME* game); #include "../src/m_player_main_demo_get_golden_item2.c_inc" #include "../src/m_player_main_demo_get_golden_axe_wait.c_inc" -/* TODO: looks like all the c_inc files are included before the player funcs in this file based on rodata ordering */ - -static void Player_actor_ct_forCorect(ACTOR* actorx, GAME* game); -static void Player_actor_set_eye_pattern(ACTOR* actorx, int idx); -static void Player_actor_set_mouth_pattern(ACTOR* actorx, int idx); -static void Player_actor_Set_old_sound_frame_counter(ACTOR* actorx); -static void Player_actor_change_proc_index(ACTOR* actorx, GAME* game); - -static int Player_actor_request_main_invade_all(GAME*, int); -// static int Player_actor_request_main_refuse(GAME*, int); -// static int Player_actor_request_main_return_demo_all(GAME*, int, f32, int); -// static int Player_actor_request_main_wait_all(GAME*, f32, f32, int, int); -static int Player_actor_request_main_talk_all(GAME*, ACTOR*, int, f32, int, int); -static int Player_actor_request_main_hold(GAME*, int, int, const xyz_t*, f32, int, int); -static int Player_actor_request_main_recieve_wait(GAME*, ACTOR*, int, int, mActor_name_t, int, int); -static int Player_actor_request_main_give_all(GAME*, ACTOR*, int, int, mActor_name_t, int, int, int, int); -static int Player_actor_request_main_sitdown(GAME*, int, const xyz_t*, int, int); -static int Player_actor_request_main_close_furniture(GAME*, int); -static int Player_actor_request_main_lie_bed(GAME*, int, const xyz_t*, int, int, int); -static int Player_actor_request_main_hide(GAME*, int); -static int Player_actor_request_main_groundhog(GAME*, int); -static int Player_actor_request_main_door(GAME*, const xyz_t*, s16, int, u32, int); -static int Player_actor_request_main_outdoor(GAME*, int, int, int); -static int Player_actor_request_main_wash_car_all(GAME*, const xyz_t*, const xyz_t*, s16, ACTOR*, int); -static int Player_actor_request_main_rotate_octagon_all(GAME*, ACTOR*, int, int, const xyz_t*, s16, int); -static int Player_actor_request_main_throw_money_all(GAME*, const xyz_t*, s16, int); -static int Player_actor_request_main_pray_all(GAME*, const xyz_t*, s16, int); -static int Player_actor_request_main_mail_jump_all(GAME*, const xyz_t*, s16, int); -static int Player_actor_request_main_demo_wait_all(GAME*, int, u32, int); -static int Player_actor_request_main_demo_walk_all(GAME*, f32, f32, f32, int, int); -static int Player_actor_request_main_demo_geton_train(GAME*, const xyz_t*, s16, int); -static int Player_actor_request_main_demo_getoff_train(GAME*, const xyz_t*, s16, int); -static int Player_actor_request_main_demo_standing_train_all(GAME*, int); -static int Player_actor_request_main_stung_bee_all(GAME*, int); -static int Player_actor_request_main_shock_all(GAME*, f32, s16, s8, int, int); -static int Player_actor_request_main_change_cloth_forNPC(GAME*, mActor_name_t, u16, int); -static int Player_actor_request_main_push_snowball_all(GAME*, u32, int, int); -static int Player_actor_request_main_stung_mosquito_all(GAME*, u32, int); -static int Player_actor_request_main_switch_on_lighthouse_all(GAME*, const xyz_t*, s16, int); -static int Player_actor_request_main_demo_geton_boat_all(GAME*, const xyz_t*, s16, int); -static int Player_actor_request_main_demo_getoff_boat_standup_all(GAME*, const xyz_t*, s16, int); -static int Player_actor_request_main_demo_get_golden_item2_all(GAME*, int, int); -static int Player_actor_request_main_demo_get_golden_axe_wait_all(GAME*, int); -static int Player_actor_check_request_main_priority(GAME*, int); -static u32 Player_actor_get_door_label(GAME*); -static int Player_actor_Set_Item_net_catch_request_table(ACTOR*, GAME*, u32, s8, const xyz_t*, f32); -static f32 Player_actor_Get_Item_net_catch_swing_timer(ACTOR*, GAME*); -static int Player_actor_Set_Item_net_catch_request_force(ACTOR*, GAME*, u32, s8); -static void Player_actor_Set_force_position_angle(GAME*, const xyz_t*, const s_xyz*, u8); -static u8 Player_actor_Get_force_position_angle(GAME*, xyz_t*, s_xyz*); -static int Player_actor_Get_WadeEndPos(GAME*, xyz_t*); -static int Player_actor_Check_Label_main_push_snowball(GAME*, u32); -static int Player_actor_SetParam_for_push_snowball(GAME*, const xyz_t*, s16, f32); -static int Player_actor_able_submenu_request_main_index(GAME*); -static int Player_actor_check_able_change_camera_normal_index(ACTOR*); -static int Player_actor_Check_able_force_speak_label(GAME*, u32); -static int Player_actor_check_cancel_request_change_proc_index(int); -static u32 Player_actor_Get_item_net_catch_label(ACTOR*); -static int Player_actor_Change_item_net_catch_label(ACTOR*, u32, s8); -static int Player_actor_Check_StopNet(ACTOR*, xyz_t*); -static int Player_actor_Check_HitAxe(ACTOR*, xyz_t*); -static int Player_actor_Check_VibUnit_OneFrame(ACTOR*, const xyz_t*); -static int Player_actor_Check_HitScoop(ACTOR*, xyz_t*); -static int Player_actor_Check_DigScoop(ACTOR*, xyz_t*); -static int Player_actor_check_request_change_item(GAME*); -static int Player_actor_Check_RotateOctagon(GAME*); -static int Player_actor_Check_end_stung_bee(ACTOR*); -static int Player_actor_Get_status_for_bee(ACTOR*); -static int Player_actor_Set_ScrollDemo_forWade_snowball(ACTOR*, int, const xyz_t*); -static int Player_actor_Check_tree_shaken(ACTOR*, const xyz_t*); -static int Player_actor_Check_tree_shaken_little(ACTOR*, const xyz_t*); -static int Player_actor_Check_tree_shaken_big(ACTOR*, const xyz_t*); -static int Player_actor_Check_Label_main_wade_snowball(GAME*, u32); -static int Player_actor_GetSnowballPos_forWadeSnowball(ACTOR*, xyz_t*); -static int Player_actor_CheckCondition_forWadeSnowball(GAME*, const xyz_t*, s16); -static mActor_name_t Player_actor_Get_itemNo_forWindow(ACTOR*); -static int Player_actor_check_cancel_event_without_priority(GAME*); -static int Player_actor_CheckScene_AbleSubmenu(void); -static int Player_actor_Check_stung_mosquito(GAME*, u32); - -static int Player_actor_request_main_walk_all(GAME*, xyz_t*, f32, int, int); -static int Player_actor_request_main_run_all(GAME*, f32, int, int); -static int Player_actor_request_main_dash_all(GAME*, f32, int, int); - // static void Player_actor_Refuse_pickup_demo_ct(ACTOR*); static void Player_actor_init_value(ACTOR* actorx, GAME* game) { diff --git a/src/m_player_common.c_inc b/src/m_player_common.c_inc index 070a1ad8..3c78bcb4 100644 --- a/src/m_player_common.c_inc +++ b/src/m_player_common.c_inc @@ -1136,7 +1136,8 @@ static void Player_actor_SetupItem_common(ACTOR* actorx) { int item_kind = Player_actor_Get_ItemKind(actorx, main_idx); if (item_kind < 0) { - Player_actor_LoadOrDestruct_Item(actorx, -1, -1, 0.0f, 0.0f, 1.0f, mPlayer_ITEM_IS_BALLOON(item_kind) == FALSE); + Player_actor_LoadOrDestruct_Item(actorx, -1, -1, 0.0f, 0.0f, -1.0f, + mPlayer_ITEM_IS_BALLOON(item_kind) == FALSE); Player_actor_Set_now_item_main_index(actorx, mPlayer_ITEM_MAIN_NONE); player->item_kind = item_kind; } @@ -1486,7 +1487,7 @@ static int Player_actor_Movement_Base_Braking_common(ACTOR* actorx, f32 brake_am } static int Player_actor_Movement_Base_Braking(ACTOR* actorx) { - return Player_actor_Movement_Base_Braking_common(actorx, 0.326525f); + return Player_actor_Movement_Base_Braking_common(actorx, 0.32625001f); } static void Player_actor_SetPlayerAngle_forUki(ACTOR* actorx) { @@ -1554,16 +1555,16 @@ static int Player_actor_CheckAbleMoveWadeBG(GAME* game, const xyz_t* pos_p, int target_pos = *pos_p; switch (dir) { case mFI_MOVEDIR_RIGHT: - target_pos.x = world_border_pos.x + 18.0f + mFI_BK_WORLDSIZE_X_F; + target_pos.x = world_border_pos.x + 18.00001f + mFI_BK_WORLDSIZE_X_F; break; case mFI_MOVEDIR_LEFT: - target_pos.x = world_border_pos.x - 18.0f; + target_pos.x = world_border_pos.x - 18.00001f; break; case mFI_MOVEDIR_UP: - target_pos.z = world_border_pos.z - 18.0f; + target_pos.z = world_border_pos.z - 18.00001f; break; case mFI_MOVEDIR_DOWN: - target_pos.z = world_border_pos.z + 18.0f + mFI_BK_WORLDSIZE_Z_F; + target_pos.z = world_border_pos.z + 18.00001f + mFI_BK_WORLDSIZE_Z_F; break; default: return FALSE; @@ -1586,7 +1587,7 @@ static int Player_actor_CheckAbleMoveWadeBlock(GAME* game, const xyz_t* pos_p, s if (move_percentX > stick_range && ((DEG2SHORT_ANGLE2(90.0f) - angle_range) < angle_y && angle_y < (DEG2SHORT_ANGLE2(90.0f) + angle_range)) && mFI_ScrollCheck(*pos_p, mFI_MOVEDIR_RIGHT)) { - f32 border_x = (mFI_BK_WORLDSIZE_X_F - 18.0f); + f32 border_x = (mFI_BK_WORLDSIZE_X_F - 18.00001f); if (mCoBG_GetBlockBgCheckMode() == mCoBG_BLOCK_BGCHECK_MODE_INTRO_DEMO) { border_x -= mFI_UNIT_BASE_SIZE_F; @@ -1606,7 +1607,7 @@ static int Player_actor_CheckAbleMoveWadeBlock(GAME* game, const xyz_t* pos_p, s (DEG2SHORT_ANGLE2(-90.0f) - angle_range < (int)angle_y && (int)angle_y < DEG2SHORT_ANGLE2(-90.0f) + angle_range) && mFI_ScrollCheck(*pos_p, mFI_MOVEDIR_LEFT)) { - f32 border_x = 18.0f; + f32 border_x = 18.00001f; if (mCoBG_GetBlockBgCheckMode() == mCoBG_BLOCK_BGCHECK_MODE_INTRO_DEMO) { border_x += mFI_UNIT_BASE_SIZE_F; @@ -1627,7 +1628,7 @@ static int Player_actor_CheckAbleMoveWadeBlock(GAME* game, const xyz_t* pos_p, s ((DEG2SHORT_ANGLE2(180.0f) - angle_range) < (int)angle_y || (int)angle_y < (DEG2SHORT_ANGLE2(-180.0f) + angle_range)) && mFI_ScrollCheck(*pos_p, mFI_MOVEDIR_UP)) { - f32 border_z = 18.0f; + f32 border_z = 18.00001f; if (mCoBG_GetBlockBgCheckMode() == mCoBG_BLOCK_BGCHECK_MODE_INTRO_DEMO) { border_z += mFI_UNIT_BASE_SIZE_F; @@ -1648,7 +1649,7 @@ static int Player_actor_CheckAbleMoveWadeBlock(GAME* game, const xyz_t* pos_p, s ((-angle_range < (int)angle_y && (int)angle_y <= DEG2SHORT_ANGLE2(0.0f)) || (int)angle_y >= DEG2SHORT_ANGLE2(0.0f) && (int)angle_y < angle_range) && mFI_ScrollCheck(*pos_p, mFI_MOVEDIR_DOWN)) { - f32 border_z = (mFI_BK_WORLDSIZE_Z_F - 18.0f); + f32 border_z = (mFI_BK_WORLDSIZE_Z_F - 18.00001f); if (mCoBG_GetBlockBgCheckMode() == mCoBG_BLOCK_BGCHECK_MODE_INTRO_DEMO) { border_z -= mFI_UNIT_BASE_SIZE_F; @@ -1677,25 +1678,25 @@ static int Player_actor_CheckAbleMoveDemoWadeBlock(ACTOR* actorx) { mFI_WpostoLposInBK(&local_pos, actorx->world.position); - if (dir_x > 0.0f && local_pos.x >= (mFI_BK_WORLDSIZE_X_F - 18.0f)) { + if (dir_x > 0.0f && local_pos.x >= (mFI_BK_WORLDSIZE_X_F - 18.00001f)) { if (mFI_ScrollCheck(actorx->world.position, mFI_MOVEDIR_RIGHT)) { return mFI_MOVEDIR_RIGHT; } } - if (dir_x < 0.0f && local_pos.x <= (18.0f)) { + if (dir_x < 0.0f && local_pos.x <= (18.00001f)) { if (mFI_ScrollCheck(actorx->world.position, mFI_MOVEDIR_LEFT)) { return mFI_MOVEDIR_LEFT; } } - if (dir_z < 0.0f && local_pos.z <= (18.0f)) { + if (dir_z < 0.0f && local_pos.z <= (18.00001f)) { if (mFI_ScrollCheck(actorx->world.position, mFI_MOVEDIR_UP)) { return mFI_MOVEDIR_UP; } } - if (dir_z > 0.0f && local_pos.z >= (mFI_BK_WORLDSIZE_Z_F - 18.0f)) { + if (dir_z > 0.0f && local_pos.z >= (mFI_BK_WORLDSIZE_Z_F - 18.00001f)) { if (mFI_ScrollCheck(actorx->world.position, mFI_MOVEDIR_DOWN)) { return mFI_MOVEDIR_DOWN; } @@ -2557,9 +2558,9 @@ static void Player_actor_AppearShadow_fromAnimationFrame(ACTOR* actorx, f32 appe } } -static u32 Player_actor_get_door_label(GAME* game) { +static void* Player_actor_get_door_label(GAME* game) { if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_DOOR) { - return GET_PLAYER_ACTOR_GAME(game)->main_data.door.label; + return (void*)GET_PLAYER_ACTOR_GAME(game)->main_data.door.label; } return 0; @@ -3714,7 +3715,7 @@ static int Player_actor_Set_ScrollDemo_forWade_snowball(ACTOR* actorx, int reque return FALSE; } -static void Player_actor_SetForMark_for_settle_main(ACTOR* actorx, GAME* game) { +static void Player_actor_SetFootMark_for_settle_main(ACTOR* actorx, GAME* game) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; int main_index = player->now_main_index; @@ -4787,7 +4788,7 @@ static int Player_actor_check_item_is_fish(mActor_name_t item) { } static int Player_actor_Check_CommonFootMark_AnimeFrame_fromAnimeIndex(f32 cur_frame, f32 speed, f32 end_frame, - int anim_idx, const s16** data_table_p, + int anim_idx, const s16* const* data_table_p, const u8* len_table_p) { if (anim_idx >= 0 && anim_idx < mPlayer_ANIM_NUM) { const s16* data_p = data_table_p[anim_idx]; @@ -4976,7 +4977,7 @@ static int Player_actor_Check_RightFootMark_AnimeFrame_fromAnimeIndex(f32 cur_fr static const s16 right_data_taisou7_2[] = { -1 }; static const s16 right_data_omairi_us1[] = { -1 }; - static const s16* data_p_table[] = { + static const s16* const data_p_table[] = { right_data_wait1, right_data_walk1, right_data_axe1, @@ -5462,7 +5463,7 @@ static int Player_actor_Check_LeftFootMark_AnimeFrame_fromAnimeIndex(f32 cur_fra static const s16 left_data_taisou7_2[] = { -1 }; static const s16 left_data_omairi_us1[] = { -1 }; - static const s16* data_p_table[] = { + static const s16* const data_p_table[] = { left_data_wait1, left_data_walk1, left_data_axe1, @@ -6000,7 +6001,7 @@ static void Player_actor_Set_FootMark_Base1(ACTOR* actorx, GAME* game, int disab } } -static void Player_actor_Set_FootMark_Base2(ACTOR* actorx, GAME* game, int disable_effect, int type) { +static void Player_actor_Set_FootMark_Base2(ACTOR* actorx, GAME* game, int disable_effect, u16 type) { if (Player_actor_Set_FootMark_MarkOnly(actorx, game, disable_effect) && Player_actor_CheckAble_FootMark_Sound(actorx)) { Player_actor_sound_FootStep1(actorx, type); @@ -6784,7 +6785,7 @@ static int Player_actor_CheckAndRequest_KnockDoor(ACTOR* actorx, GAME* game, int static int Player_actor_CheckAndRequest_ItemInOut(ACTOR* actorx, GAME* game, int main_index) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; s8 able_hand_all_item_in_demo = player->able_hand_all_item_in_demo; - s8 item_kind = Player_actor_Get_ItemKind_fromScene(); + int item_kind = Player_actor_Get_ItemKind_fromScene(); if (item_kind >= 0 && able_hand_all_item_in_demo == FALSE) { int request_main_index = player->requested_main_index; @@ -7004,21 +7005,21 @@ static void Player_actor_Set_bgm_volume(ACTOR* actorx, int main_index) { } } -static int Player_actor_Check_Label_main_push_snowball(GAME* game, u32 label) { +static int Player_actor_Check_Label_main_push_snowball(GAME* game, void* label) { PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); - if (player->now_main_index == mPlayer_INDEX_PUSH_SNOWBALL && player->main_data.push_snowball.label == label) { + if (player->now_main_index == mPlayer_INDEX_PUSH_SNOWBALL && player->main_data.push_snowball.label == (u32)label) { return TRUE; } return FALSE; } -static int Player_actor_Check_Label_main_wade_snowball(GAME* game, u32 label) { +static int Player_actor_Check_Label_main_wade_snowball(GAME* game, void* label) { PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); if (player->now_main_index == mPlayer_INDEX_WADE_SNOWBALL && - player->main_data.wade_snowball.snowball_label == label) { + player->main_data.wade_snowball.snowball_label == (u32)label) { return TRUE; } @@ -7755,15 +7756,15 @@ static int Player_actor_check_cancel_event_without_priority(GAME* game) { return FALSE; } -static int Player_actor_Check_able_force_speak_label(GAME* game, u32 label) { +static int Player_actor_Check_able_force_speak_label(GAME* game, void* label) { PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); - u32 able_force_speak_label = player->able_force_speak_label; + u32 able_force_speak_label = (u32)player->able_force_speak_label; if (able_force_speak_label == 0) { return TRUE; } - if (able_force_speak_label == label) { + if (able_force_speak_label == (u32)label) { return TRUE; } @@ -7798,14 +7799,14 @@ static int Player_actor_CheckAndSet_UZAI_forNpc(ACTOR* actorx) { return FALSE; } -static int Player_actor_Check_stung_mosquito(GAME* game, u32 label) { +static int Player_actor_Check_stung_mosquito(GAME* game, void* label) { int main_index = GET_PLAYER_ACTOR_GAME(game)->now_main_index; switch (main_index) { case mPlayer_INDEX_STUNG_MOSQUITO: { u32 stung_label = GET_PLAYER_ACTOR_GAME(game)->requested_main_index_data.stung_mosquito.label; - if (stung_label == label) { + if (stung_label == (u32)label) { return TRUE; } break; @@ -7813,7 +7814,7 @@ static int Player_actor_Check_stung_mosquito(GAME* game, u32 label) { case mPlayer_INDEX_NOTICE_MOSQUITO: { u32 notice_label = GET_PLAYER_ACTOR_GAME(game)->requested_main_index_data.notice_mosquito.label; - if (notice_label == label) { + if (notice_label == (u32)label) { return TRUE; } break; @@ -7833,7 +7834,7 @@ static void Player_actor_Reset_bee_chase(ACTOR* actorx) { } } -static void Player_actor_Check_player_sunburn_ChangeDay(ACTOR* actorx) { +static void Player_actor_Check_player_sunburn_ChangeDay(void) { if (mEv_CheckTitleDemo() <= 0) { mActor_name_t field_id = mFI_GetFieldId(); @@ -8045,7 +8046,7 @@ static int Player_actor_Set_player_sunburn_rankup(ACTOR* actorx) { } static void Player_actor_Check_player_sunburn_for_dt(ACTOR* actorx) { - Player_actor_Check_player_sunburn_ChangeDay(actorx); + Player_actor_Check_player_sunburn_ChangeDay(); Player_actor_Check_player_sunburn_rankdown_interval(actorx); Player_actor_Check_player_sunburn_rankdown(actorx); Player_actor_Set_player_sunburn_rankup(actorx); @@ -8053,14 +8054,14 @@ static void Player_actor_Check_player_sunburn_for_dt(ACTOR* actorx) { } static void Player_actor_Check_player_sunburn_for_main(ACTOR* actorx) { - Player_actor_Check_player_sunburn_ChangeDay(actorx); + Player_actor_Check_player_sunburn_ChangeDay(); Player_actor_Check_player_sunburn_rankdown_interval(actorx); Player_actor_Check_player_sunburn_rankdown(actorx); Player_actor_Check_player_sunburn_rankup(actorx); } static void Player_actor_Check_player_sunburn_for_ct(ACTOR* actorx) { - Player_actor_Check_player_sunburn_ChangeDay(actorx); + Player_actor_Check_player_sunburn_ChangeDay(); Player_actor_Check_player_sunburn_rankdown_interval(actorx); Player_actor_Check_player_sunburn_rankdown(actorx); Player_actor_Set_player_sunburn_rankdown(actorx); @@ -8183,26 +8184,26 @@ static void Player_actor_Set_RadioExerciseCommand(ACTOR* actorx, GAME* game, int Player_actor_Set_RadioExerciseCommandRingBuffer(actorx, command); } -static int Player_actor_Check_radio_exercise_command(ACTOR* actorx, int continue_idx, f32* timer_p) { - static s8 Player_actor_radio_exercise_command_key_data_type1[] = { 6, 0, 3 }; - static s8 Player_actor_radio_exercise_command_key_data_type2_1[] = { 1, 4, 3, 5, 2 }; - static s8 Player_actor_radio_exercise_command_key_data_type2_2[] = { 2, 5, 3, 4, 1 }; - static s8 Player_actor_radio_exercise_command_key_data_type3[] = { 3, 0, 3 }; - static s8 Player_actor_radio_exercise_command_key_data_type4_1_1[] = { 5, 0, 5 }; - static s8 Player_actor_radio_exercise_command_key_data_type4_1_2[] = { 7, 0, 5 }; - static s8 Player_actor_radio_exercise_command_key_data_type4_2_1[] = { 4, 0, 4 }; - static s8 Player_actor_radio_exercise_command_key_data_type4_2_2[] = { 8, 0, 4 }; - static s8 Player_actor_radio_exercise_command_key_data_type5_1_1[] = { 2, 0, 2 }; - static s8 Player_actor_radio_exercise_command_key_data_type5_1_2[] = { 1, 0, 2 }; - static s8 Player_actor_radio_exercise_command_key_data_type5_2_1[] = { 1, 0, 1 }; - static s8 Player_actor_radio_exercise_command_key_data_type5_2_2[] = { 2, 0, 1 }; - static s8 Player_actor_radio_exercise_command_key_data_type6_1_1[] = { 8, 0, 8 }; - static s8 Player_actor_radio_exercise_command_key_data_type6_1_2[] = { 4, 0, 8 }; - static s8 Player_actor_radio_exercise_command_key_data_type6_2_1[] = { 7, 0, 7 }; - static s8 Player_actor_radio_exercise_command_key_data_type6_2_2[] = { 5, 0, 7 }; - static s8 Player_actor_radio_exercise_command_key_data_type7_1[] = { 6, 8, 2, 5, 3, 4, 1, 7 }; - static s8 Player_actor_radio_exercise_command_key_data_type7_2[] = { 6, 7, 1, 4, 3, 5, 2, 8 }; +static s8 Player_actor_radio_exercise_command_key_data_type1[] = { 6, 0, 3 }; +static s8 Player_actor_radio_exercise_command_key_data_type2_1[] = { 1, 4, 3, 5, 2 }; +static s8 Player_actor_radio_exercise_command_key_data_type2_2[] = { 2, 5, 3, 4, 1 }; +static s8 Player_actor_radio_exercise_command_key_data_type3[] = { 3, 0, 3 }; +static s8 Player_actor_radio_exercise_command_key_data_type4_1_1[] = { 5, 0, 5 }; +static s8 Player_actor_radio_exercise_command_key_data_type4_1_2[] = { 7, 0, 5 }; +static s8 Player_actor_radio_exercise_command_key_data_type4_2_1[] = { 4, 0, 4 }; +static s8 Player_actor_radio_exercise_command_key_data_type4_2_2[] = { 8, 0, 4 }; +static s8 Player_actor_radio_exercise_command_key_data_type5_1_1[] = { 2, 0, 2 }; +static s8 Player_actor_radio_exercise_command_key_data_type5_1_2[] = { 1, 0, 2 }; +static s8 Player_actor_radio_exercise_command_key_data_type5_2_1[] = { 1, 0, 1 }; +static s8 Player_actor_radio_exercise_command_key_data_type5_2_2[] = { 2, 0, 1 }; +static s8 Player_actor_radio_exercise_command_key_data_type6_1_1[] = { 8, 0, 8 }; +static s8 Player_actor_radio_exercise_command_key_data_type6_1_2[] = { 4, 0, 8 }; +static s8 Player_actor_radio_exercise_command_key_data_type6_2_1[] = { 7, 0, 7 }; +static s8 Player_actor_radio_exercise_command_key_data_type6_2_2[] = { 5, 0, 7 }; +static s8 Player_actor_radio_exercise_command_key_data_type7_1[] = { 6, 8, 2, 5, 3, 4, 1, 7 }; +static s8 Player_actor_radio_exercise_command_key_data_type7_2[] = { 6, 7, 1, 4, 3, 5, 2, 8 }; +static int Player_actor_Check_radio_exercise_command(ACTOR* actorx, int continue_idx, f32* timer_p) { // clang-format off static s8* command_key_p_data[] = { Player_actor_radio_exercise_command_key_data_type1, diff --git a/src/m_player_draw.c_inc b/src/m_player_draw.c_inc index 7a92f9e3..3b1167c7 100644 --- a/src/m_player_draw.c_inc +++ b/src/m_player_draw.c_inc @@ -19,7 +19,7 @@ typedef void (*mPlayer_DRAW_BEFORE_PROC)(ACTOR*, GAME*, cKF_SkeletonInfo_R_c*, G static int Player_actor_draw_Before(GAME* game, cKF_SkeletonInfo_R_c* kf, int joint_no, Gfx** gfx_pp, u8* work_flag, void* arg, s_xyz* rot, xyz_t* pos) { // clang-format off - static mPlayer_DRAW_BEFORE_PROC proc[] = { + static const mPlayer_DRAW_BEFORE_PROC proc[] = { NULL, NULL, NULL, @@ -142,7 +142,7 @@ typedef void (*mPlayer_DRAW_AFTER_PROC)(ACTOR*, GAME*, cKF_SkeletonInfo_R_c*, Gf static int Player_actor_draw_After(GAME* game, cKF_SkeletonInfo_R_c* kf, int joint_no, Gfx** gfx_pp, u8* work_flag, void* arg, s_xyz* rot, xyz_t* pos) { // clang-format off - static mPlayer_DRAW_AFTER_PROC proc[] = { + static const mPlayer_DRAW_AFTER_PROC proc[] = { NULL, NULL, NULL, @@ -193,8 +193,8 @@ static void Player_actor_draw_Normal(ACTOR* actorx, GAME* game) { int moving_in_boat; GAME_PLAY* play = (GAME_PLAY*)game; - eye_tex_p = Player_actor_Get_eye_tex_p(player); - mouth_tex_p = Player_actor_Get_mouth_tex_p(player); + eye_tex_p = Player_actor_Get_eye_tex_p(actorx); + mouth_tex_p = Player_actor_Get_mouth_tex_p(actorx); graph = game->graph; moving_in_boat = FALSE; @@ -306,7 +306,7 @@ static void Player_actor_draw_Normal(ACTOR* actorx, GAME* game) { CLOSE_DISP(graph); } - Player_actor_Item_draw(player, game); + Player_actor_Item_draw(actorx, game); { mActor_name_t item = EMPTY_NO; @@ -324,7 +324,7 @@ static void Player_actor_draw_Normal(ACTOR* actorx, GAME* game) { } else if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_PICKUP_JUMP) { mPlayer_main_pickup_jump_c* main_pickup_jump2 = &player->main_data.pickup_jump; - if (main_pickup_jump2->exchange_flag == FALSE) { + if (main_pickup_jump2->ftr_flag == FALSE) { main_pickup_jump = main_pickup_jump2; item = main_pickup_jump2->item; item_scale = main_pickup_jump2->scale; diff --git a/src/m_player_item.c_inc b/src/m_player_item.c_inc index a37ddbf1..8bab419e 100644 --- a/src/m_player_item.c_inc +++ b/src/m_player_item.c_inc @@ -1,13 +1,9 @@ -typedef int (*mPlayer_item_proc)(ACTOR* actor, int, int); - -extern Gfx tol_sponge_1_model[]; +typedef void (*mPlayer_item_proc)(ACTOR* actor, int, int); static void Player_actor_Item_Setup_main(ACTOR* actor, int now, int last) { static const mPlayer_item_proc proc[] = { - NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, (mPlayer_item_proc)Player_actor_Item_Setup_main_balloon_normal, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, &Player_actor_Item_Setup_main_balloon_normal, NULL, NULL, }; diff --git a/src/m_player_item_axe.c_inc b/src/m_player_item_axe.c_inc index d1032182..197de9be 100644 --- a/src/m_player_item_axe.c_inc +++ b/src/m_player_item_axe.c_inc @@ -1,25 +1,25 @@ -static int Player_actor_Item_main_axe_normal(ACTOR* actor, GAME* game){ +static int Player_actor_Item_main_axe_normal(ACTOR* actor, GAME* game) { return 0; -} +} -static void Player_actor_Item_draw_axe(ACTOR* actor, GAME* game){ +static void Player_actor_Item_draw_axe(ACTOR* actor, GAME* game) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; int shape_type; - + Matrix_push(); Matrix_Position_VecZ(&player->axe_pos, 1500.0f); Matrix_pull(); shape_type = player->item_shape_type[player->item_bank_idx]; - if(mPlayer_ITEM_DATA_VALID(shape_type)){ + if (mPlayer_ITEM_DATA_VALID(shape_type)) { OPEN_POLY_OPA_DISP(game->graph); gSPDisplayList(POLY_OPA_DISP++, mPlib_Get_Item_DataPointer(shape_type)); - - CLOSE_POLY_OPA_DISP(game->graph); + + CLOSE_POLY_OPA_DISP(game->graph); } - player->update_item_rod_top_pos = FALSE; + player->item_rod_top_pos_set = FALSE; player->balloon_start_pos_set_flag = FALSE; } diff --git a/src/m_player_item_balloon.c_inc b/src/m_player_item_balloon.c_inc index f88c8d55..dd374ea7 100644 --- a/src/m_player_item_balloon.c_inc +++ b/src/m_player_item_balloon.c_inc @@ -1,16 +1,16 @@ -static s16 Player_actor_Item_Get_goal_balloon_lean_angle(ACTOR* actor){ +static s16 Player_actor_Item_Get_goal_balloon_lean_angle(ACTOR* actor) { return -actor->shape_info.rotation.x; } -static void Player_actor_Item_Setup_main_balloon_normal(ACTOR* actor, GAME* game, int kind){ +static void Player_actor_Item_Setup_main_balloon_normal(ACTOR* actor, int item_kind, int kind) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; int check = FALSE; - - if(mPlayer_ITEM_IS_BALLOON(kind)){ + + if (mPlayer_ITEM_IS_BALLOON(kind)) { check = TRUE; } - if(check == FALSE){ + if (check == FALSE) { player->balloon_lean_angle = Player_actor_Item_Get_goal_balloon_lean_angle(actor); player->balloon_angle = ZeroSVec; player->balloon_anim_max_frame = player->item_keyframe.frame_control.max_frames; @@ -24,35 +24,32 @@ static void Player_actor_Item_Setup_main_balloon_normal(ACTOR* actor, GAME* game player->item_keyframe.frame_control.current_frame = player->balloon_anim_max_frame; player->item_keyframe.frame_control.speed = player->balloon_anim_speed; - } -static void Player_actor_Item_set_balloon_lean_angle(ACTOR* actor){ +static void Player_actor_Item_set_balloon_lean_angle(ACTOR* actor) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; - s16 angle = Player_actor_Item_Get_goal_balloon_lean_angle(actor); - add_calc_short_angle2(&player->balloon_lean_angle, angle, 1.0f - sqrtf(0.91f), 250, 0); + s16 angle = Player_actor_Item_Get_goal_balloon_lean_angle(actor); + add_calc_short_angle2(&player->balloon_lean_angle, angle, 1.0f - sqrtf(0.90999999f), 250, 0); } -static void Player_actor_Item_CulcAnimation_balloon_normal(ACTOR* actor){ +static void Player_actor_Item_CulcAnimation_balloon_normal(ACTOR* actor) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; f32 speed = player->item_keyframe.frame_control.speed; f32 cur = player->item_keyframe.frame_control.current_frame; f32 max = player->item_keyframe.frame_control.max_frames; - + player->balloon_anim_max_frame = cur; cur += speed; - player->balloon_anim_speed = speed; - - if(cur > max){ + player->balloon_anim_speed = speed; + + if (cur > max) { cur = max; - } - else if(cur < 0.5f * max){ + } else if (cur < 0.5f * max) { cur = 0.5f * max; } - player->item_keyframe.frame_control.current_frame = cur; + player->item_keyframe.frame_control.current_frame = cur; } - static void Player_actor_Item_Movement_balloon_normal(ACTOR* actor) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; @@ -77,23 +74,23 @@ static void Player_actor_Item_Movement_balloon_normal(ACTOR* actor) { f32 sin = sin_s(rot); f32 cos2 = cos_s(rot); f32 poscalc = ((sin * right_hand.x) + (cos2 * right_hand.z)); - + pos.y -= poscalc * cos; } { f32 balloon_add_rot_z = player->balloon_add_rot_z; s16 add_z_angle; - + balloon_add_rot_z -= (0.0014f * player->balloon_angle.z); add_z_angle = player->balloon_angle.z + (int)balloon_add_rot_z; - + if (add_z_angle > 0x800) { add_z_angle = 0x800; } else if (add_z_angle < -0x800) { add_z_angle = -0x800; } - + player->balloon_angle.z = add_z_angle; player->balloon_add_rot_z = balloon_add_rot_z; } @@ -105,7 +102,7 @@ static void Player_actor_Item_Movement_balloon_normal(ACTOR* actor) { s16 balloon_angle_x = player->balloon_angle.x; int xang = ABS(balloon_angle_x); int zang = ABS(balloon_angle_z); - + if (zang - xang < 0) { add_calc_short_angle2(&player->balloon_angle.x, balloon_angle_z, 1.0f - sqrtf(0.9f), 2500, 0); } else { @@ -116,25 +113,25 @@ static void Player_actor_Item_Movement_balloon_normal(ACTOR* actor) { { int index = player->now_main_index; s16 add_x_angle = player->ballon_add_rot_x; - + if (index == mPlayer_INDEX_WALK || index == mPlayer_INDEX_RUN) { s16 counter = player->balloon_add_rot_x_counter; f32 sin; - + counter += (s16)(400.0f * actor->speed); sin = sin_s(counter); player->balloon_add_rot_x_counter = counter; - + target = (s16)(1000.0f * sin); } else { target = 0; } - + add_calc_short_angle2(&add_x_angle, target, 1.0f - sqrtf(0.6f), 2500, 0); player->ballon_add_rot_x = add_x_angle; } } - + speed += pos.y; if (speed < 13.0f) { speed = 13.0f; @@ -151,7 +148,7 @@ static void Player_actor_Item_Movement_balloon_normal(ACTOR* actor) { f32 item_speed = player->item_keyframe.frame_control.speed; f32 cur = player->item_keyframe.frame_control.current_frame; f32 curmax = 0.7f * max; - + if (cur >= max) { item_speed = -0.085f; } else if (item_speed <= 0.0f && cur <= curmax) { @@ -159,26 +156,24 @@ static void Player_actor_Item_Movement_balloon_normal(ACTOR* actor) { } else { item_speed += 0.0039585f; } - + player->item_keyframe.frame_control.speed = item_speed; } } - -static void Player_actor_Item_PlayAnimation_balloon_normal(ACTOR* actor){ +static void Player_actor_Item_PlayAnimation_balloon_normal(ACTOR* actor) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; f32 cur = player->item_keyframe.frame_control.current_frame; f32 max = player->item_keyframe.frame_control.max_frames; - if(player->balloon_current_frame != cur){ - f32 cur_diff = cur - player->balloon_current_frame; + if (player->balloon_current_frame != cur) { + f32 cur_diff = cur - player->balloon_current_frame; f32 old_speed = player->item_keyframe.frame_control.speed; - if(cur_diff >= 0.0f){ + if (cur_diff >= 0.0f) { player->item_keyframe.frame_control.start_frame = 1.0f; player->item_keyframe.frame_control.end_frame = max; - } - else { + } else { player->item_keyframe.frame_control.end_frame = 1.0f; player->item_keyframe.frame_control.start_frame = max; } @@ -186,57 +181,58 @@ static void Player_actor_Item_PlayAnimation_balloon_normal(ACTOR* actor){ player->item_keyframe.frame_control.speed = cur_diff; Player_actor_Item_CulcAnimation_Base(actor); player->item_keyframe.frame_control.current_frame = cur; - player->balloon_current_frame= cur; + player->balloon_current_frame = cur; player->item_keyframe.frame_control.speed = old_speed; } } -static int Player_actor_Item_main_balloon_normal(ACTOR* actor, GAME* game){ +static int Player_actor_Item_main_balloon_normal(ACTOR* actor, GAME* game) { Player_actor_Item_set_balloon_lean_angle(actor); Player_actor_Item_CulcAnimation_balloon_normal(actor); return 0; -} +} -static int Player_actor_Item_draw_balloon_Before(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_idx, Gfx** joint_shape, - u8* joint_flags, void* arg, s_xyz* joint_rot, xyz_t* joint_pos){ +static int Player_actor_Item_draw_balloon_Before(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_idx, + Gfx** joint_shape, u8* joint_flags, void* arg, s_xyz* joint_rot, + xyz_t* joint_pos) { - switch(joint_idx){ + switch (joint_idx) { case 1: case 2: case 3: OPEN_POLY_OPA_DISP(game->graph); - + gDPPipeSync(POLY_OPA_DISP++); - gDPSetTexEdgeAlpha(POLY_OPA_DISP++,80); - + gDPSetTexEdgeAlpha(POLY_OPA_DISP++, 80); + CLOSE_POLY_OPA_DISP(game->graph); - - break; + + break; } return 1; } -static int Player_actor_Item_draw_balloon_After(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_idx, Gfx** joint_shape, - u8* joint_flags, void* arg, s_xyz* joint_rot, xyz_t* joint_pos){ - switch(joint_idx){ +static int Player_actor_Item_draw_balloon_After(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_idx, + Gfx** joint_shape, u8* joint_flags, void* arg, s_xyz* joint_rot, + xyz_t* joint_pos) { + switch (joint_idx) { case 1: case 2: case 3: OPEN_POLY_OPA_DISP(game->graph); - - gDPPipeSync(POLY_OPA_DISP++); - gDPSetTexEdgeAlpha(POLY_OPA_DISP++,144); - - CLOSE_POLY_OPA_DISP(game->graph); - - break; + gDPPipeSync(POLY_OPA_DISP++); + gDPSetTexEdgeAlpha(POLY_OPA_DISP++, 144); + + CLOSE_POLY_OPA_DISP(game->graph); + + break; } - return 1; + return 1; } static void Player_actor_Item_draw_balloon(ACTOR* actor, GAME* game) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; @@ -247,7 +243,7 @@ static void Player_actor_Item_draw_balloon(ACTOR* actor, GAME* game) { GRAPH* graph; f32 scale; s_xyz* angle_p = &player->balloon_angle; - + if (!_Game_play_isPause(play)) { Player_actor_Item_Movement_balloon_normal(actor); Player_actor_Item_PlayAnimation_balloon_normal(actor); @@ -266,7 +262,7 @@ static void Player_actor_Item_draw_balloon(ACTOR* actor, GAME* game) { Matrix_RotateY(rot, 1); Matrix_RotateX(angle, 1); Matrix_RotateZ(0x4000, 1); - Matrix_RotateX(player->balloon_angle.z, 1); + Matrix_RotateX(player->balloon_angle.z, 1); Matrix_scale(actor->scale.x * scale, actor->scale.y * scale, actor->scale.z * scale, 1); OPEN_POLY_OPA_DISP(graph); @@ -277,17 +273,18 @@ static void Player_actor_Item_draw_balloon(ACTOR* actor, GAME* game) { Setpos_HiliteReflect_init(&player->right_hand_pos, play); - cKF_Si3_draw_R_SV(&play->game, &player->item_keyframe, item_mtx, Player_actor_Item_draw_balloon_Before, Player_actor_Item_draw_balloon_After, actor); + cKF_Si3_draw_R_SV(&play->game, &player->item_keyframe, item_mtx, Player_actor_Item_draw_balloon_Before, + Player_actor_Item_draw_balloon_After, actor); Matrix_pull(); - player->update_item_rod_top_pos = FALSE; + player->item_rod_top_pos_set = FALSE; - if(player->balloon_start_pos_set_flag == FALSE){ + if (player->balloon_start_pos_set_flag == FALSE) { player->other_item_start_pos = player->other_item_end_pos; player->balloon_start_pos_set_flag = TRUE; } - if(player->balloon_stop_movement_flag != FALSE){ + if (player->balloon_stop_movement_flag != FALSE) { player->balloon_stop_movement_flag = FALSE; } } diff --git a/src/m_player_item_common.c_inc b/src/m_player_item_common.c_inc index 4e99f5e9..23bb134f 100644 --- a/src/m_player_item_common.c_inc +++ b/src/m_player_item_common.c_inc @@ -4,7 +4,7 @@ static void Player_actor_Set_ItemNoSubmenu(mActor_name_t item) { } } -mActor_name_t Player_actor_Get_ItemNoSubmenu(void) { +static mActor_name_t Player_actor_Get_ItemNoSubmenu(void) { if (mEv_CheckTitleDemo() > 0) { return mPlib_Get_controller_data_for_title_demo_p()->equiped_item; } else { @@ -51,7 +51,7 @@ static s8 Player_actor_Get_ItemKind(ACTOR* actor, int kind) { } static int Player_actor_Get_BasicItemMainIndex_fromItemKind(int kind) { - static s8 data[] = { + static const s8 data[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, @@ -187,8 +187,8 @@ static void Player_actor_Item_Set_RightHandPos_forUki(ACTOR* actor, int arg0) { cos = cos_s(rot); sin = sin_s(rot); - pos.z += (-2.0f * cos) - (12.0f * sin); - pos.x += (12.0f * cos) + (-2.0f * sin); + pos.z += (12.0f * cos) - (-2.0f * sin); + pos.x += (-2.0f * cos) + (12.0f * sin); pos.y += 17.5f; rod->right_hand_pos = pos; @@ -219,9 +219,9 @@ static void Player_actor_Item_Set_LeftHandPos_forUki(ACTOR* actor, int arg0) { cos = cos_s(rot); sin = sin_s(rot); - pos.z += (-2.0f * cos) - (12.0f * sin); - pos.x += (12.0f * cos) + (-2.0f * sin); - pos.y += 17.5f; + pos.z += (10.0f * cos) - (8.0f * sin); + pos.x += (8.0f * cos) + (10.0f * sin); + pos.y += 24.0f; rod->left_hand_pos = pos; break; @@ -269,8 +269,8 @@ static void Player_actor_Item_Set_RodTopPos_forUki(ACTOR* actor) { } } -static void Player_actor_LoadOrDestruct_Item(ACTOR* actor, int kind, int anim_idx, int mode, f32 speed, f32 morph_speed, - f32 frame) { +static void Player_actor_LoadOrDestruct_Item(ACTOR* actor, int kind, int anim_idx, f32 speed, f32 morph_speed, + f32 frame, int mode) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; int umbrella; int rod; diff --git a/src/m_player_item_fan.c_inc b/src/m_player_item_fan.c_inc index 2fdda2a6..f4a5d000 100644 --- a/src/m_player_item_fan.c_inc +++ b/src/m_player_item_fan.c_inc @@ -1,17 +1,17 @@ -static int Player_actor_Item_main_fan_normal(ACTOR* actor, GAME* game){ - return 0; +static int Player_actor_Item_main_fan_normal(ACTOR* actor, GAME* game) { + return 0; } -static void Player_actor_Item_draw_fan(ACTOR* actor, GAME* game){ +static void Player_actor_Item_draw_fan(ACTOR* actor, GAME* game) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; int type; - type =player->item_shape_type[player->item_bank_idx]; + type = player->item_shape_type[player->item_bank_idx]; OPEN_POLY_OPA_DISP(game->graph); - gSPDisplayList(POLY_OPA_DISP++, mPlib_Get_Item_DataPointer(type)); - - CLOSE_POLY_OPA_DISP(game->graph); - player->update_item_rod_top_pos = FALSE; + gSPDisplayList(POLY_OPA_DISP++, mPlib_Get_Item_DataPointer(type)); + + CLOSE_POLY_OPA_DISP(game->graph); + player->item_rod_top_pos_set = FALSE; player->balloon_start_pos_set_flag = FALSE; } diff --git a/src/m_player_item_net.c_inc b/src/m_player_item_net.c_inc index e9c29c26..2a5bc802 100644 --- a/src/m_player_item_net.c_inc +++ b/src/m_player_item_net.c_inc @@ -1,36 +1,38 @@ -static void Player_actor_Item_net_CulcJointAngle_dummy_net_base(s_xyz* angle, const s_xyz* base, s16 min, s16 max, f32 frac){ - +static void Player_actor_Item_net_CulcJointAngle_dummy_net_base(s_xyz* angle, const s_xyz* base, s16 min, s16 max, + f32 frac) { + add_calc_short_angle2(&angle->x, base->x, 1.0f - sqrtf(1.0f - frac), min >> 1, max >> 1); add_calc_short_angle2(&angle->y, base->y, 1.0f - sqrtf(1.0f - frac), min >> 1, max >> 1); add_calc_short_angle2(&angle->z, base->z, 1.0f - sqrtf(1.0f - frac), min >> 1, max >> 1); } -static void Player_actor_Item_net_CulcJointAngle_dummy_net_reset(ACTOR* actor){ - static const s_xyz basic_angle = {0, 182, -7281}; +static void Player_actor_Item_net_CulcJointAngle_dummy_net_reset(ACTOR* actor) { + static const s_xyz basic_angle = { 0, 182, -7281 }; PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; - - Player_actor_Item_net_CulcJointAngle_dummy_net_base(&player->net_angle,&basic_angle, 2730, 100, 0.2f); + + Player_actor_Item_net_CulcJointAngle_dummy_net_base(&player->net_angle, &basic_angle, 2730, 100, 0.2f); } -static void Player_actor_Item_net_CulcJointAngle_dummy_net_ready(ACTOR* actor){ - static s_xyz basic_angle = {0, 364, -11832}; +static void Player_actor_Item_net_CulcJointAngle_dummy_net_ready(ACTOR* actor) { + static const s_xyz basic_angle = { 0, 364, -11832 }; PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; - - Player_actor_Item_net_CulcJointAngle_dummy_net_base(&player->net_angle,&basic_angle, 2730, 100, 0.2f); + + Player_actor_Item_net_CulcJointAngle_dummy_net_base(&player->net_angle, &basic_angle, 2730, 100, 0.2f); } -static void Player_actor_Item_net_CulcJointAngle_dummy_net_common(ACTOR* actor, const xyz_t* start_angle, const xyz_t* arg2, const xyz_t* end_left_angle, const xyz_t* end_right_angle){ +static void Player_actor_Item_net_CulcJointAngle_dummy_net_common(ACTOR* actor, const xyz_t* start_angle, + const xyz_t* arg2, const xyz_t* end_left_angle, + const xyz_t* end_right_angle) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; - f32 sp = (player->keyframe0.frame_control.speed - 0.22f) / 0.38f; + f32 sp = (player->keyframe0.frame_control.speed - 0.22f) / 0.37999996f; s_xyz base; f32 angle_y; f32 fac; s_xyz* net_angle = &player->net_angle; - if(sp > 1.0f){ + if (sp > 1.0f) { sp = 1.0f; - } - else if(sp < 0.0f){ + } else if (sp < 0.0f) { sp = 0.0f; } @@ -40,90 +42,80 @@ static void Player_actor_Item_net_CulcJointAngle_dummy_net_common(ACTOR* actor, angle_y = player->shape_angle_delta.y; - if(angle_y > 0.0f){ - if(angle_y > 32768.0f){ + if (angle_y > 0.0f) { + if (angle_y > 32768.0f) { angle_y = -(65536.0f - angle_y); } - } - else if (angle_y < -32768.0f) { + } else if (angle_y < -32768.0f) { angle_y = angle_y + 65536.0f; } fac = angle_y / 1820.0f; - - if(fac > 1.0f){ + + if (fac > 1.0f) { fac = 1.0f; - } - else if(fac < -1.0f){ + } else if (fac < -1.0f) { fac = -1.0f; } - if(fac > 0.0f){ + if (fac > 0.0f) { base.x += (s16)(int)(fac * (end_left_angle->x - start_angle->x)); base.y += (s16)(int)(fac * (end_left_angle->y - start_angle->y)); base.z += (s16)(int)(fac * (end_left_angle->z - start_angle->z)); - - } - else if(fac < 0.0f){ + + } else if (fac < 0.0f) { base.x += (s16)(int)(-fac * (end_right_angle->x - start_angle->x)); base.y += (s16)(int)(-fac * (end_right_angle->y - start_angle->y)); - base.z += (s16)(int)(-fac * (end_right_angle->z - start_angle->z)); + base.z += (s16)(int)(-fac * (end_right_angle->z - start_angle->z)); } Player_actor_Item_net_CulcJointAngle_dummy_net_base(net_angle, &base, 2730, 100, 0.2f); } -static void Player_actor_Item_net_CulcJointAngle_dummy_net_walk(ACTOR* actor){ - static const xyz_t basic_start_move_angle = {0, 182.0f, -7281.0f}; - static const xyz_t basic_end_left_turn_angle = {0, -4551.0f, -4551.0f}; - static const xyz_t basic_end_right_turn_angle = {0, 4551.0f, -4551.0f}; - - - Player_actor_Item_net_CulcJointAngle_dummy_net_common(actor, &basic_start_move_angle, &ZeroVec, &basic_end_left_turn_angle, &basic_end_right_turn_angle); +static void Player_actor_Item_net_CulcJointAngle_dummy_net_walk(ACTOR* actor) { + static const xyz_t basic_start_move_angle = { 0, DEG2SHORT_ANGLE3(1.0f), DEG2SHORT_ANGLE3(-40.0f) }; + static const xyz_t basic_end_left_turn_angle = { 0, DEG2SHORT_ANGLE3(-25.0f), DEG2SHORT_ANGLE3(-25.0f) }; + static const xyz_t basic_end_right_turn_angle = { 0, DEG2SHORT_ANGLE3(25.0f), DEG2SHORT_ANGLE3(-25.0f) }; + + Player_actor_Item_net_CulcJointAngle_dummy_net_common(actor, &basic_start_move_angle, &ZeroVec, + &basic_end_left_turn_angle, &basic_end_right_turn_angle); } - -static void Player_actor_Item_net_CulcJointAngle_dummy_net_zero(ACTOR* actor){ +static void Player_actor_Item_net_CulcJointAngle_dummy_net_zero(ACTOR* actor) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; - Player_actor_Item_net_CulcJointAngle_dummy_net_base(&player->net_angle,&ZeroSVec, 2730, 100, 0.2f); - + Player_actor_Item_net_CulcJointAngle_dummy_net_base(&player->net_angle, &ZeroSVec, 2730, 100, 0.2f); } +static void Player_actor_Item_net_CulcJointAngle_dummy_net_ready_walk(ACTOR* actor) { + static const xyz_t basic_start_move_angle = { 0.0f, DEG2SHORT_ANGLE3(2.0f), DEG2SHORT_ANGLE3(-65.0f) }; + static const xyz_t basic_end_left_turn_angle = { 0, DEG2SHORT_ANGLE3(-25.0f), DEG2SHORT_ANGLE3(-25.0f) }; + static const xyz_t basic_end_right_turn_angle = { 0, DEG2SHORT_ANGLE3(25.0f), DEG2SHORT_ANGLE3(-25.0f) }; -static void Player_actor_Item_net_CulcJointAngle_dummy_net_ready_walk(ACTOR* actor){ - static const xyz_t basic_start_move_angle = { 0.0f, 364.0f, -11832.0f }; - static const xyz_t basic_end_left_turn_angle = {0, -4551.0f, -4551.0f}; - static const xyz_t basic_end_right_turn_angle = {0, 4551.0f, -4551.0f}; - - - Player_actor_Item_net_CulcJointAngle_dummy_net_common(actor, &basic_start_move_angle, &ZeroVec, &basic_end_left_turn_angle, &basic_end_right_turn_angle); + Player_actor_Item_net_CulcJointAngle_dummy_net_common(actor, &basic_start_move_angle, &ZeroVec, + &basic_end_left_turn_angle, &basic_end_right_turn_angle); } +static void Player_actor_Item_net_CulcJointAngle_dummy_net_turn(ACTOR* actor) { + static const xyz_t basic_angle = { 0, DEG2SHORT_ANGLE3(-25.0f), DEG2SHORT_ANGLE3(-25.0f) }; - -static void Player_actor_Item_net_CulcJointAngle_dummy_net_turn(ACTOR* actor){ - static const xyz_t basic_angle = { 0.0f, -4551.0f, -4551.0f }; - - Player_actor_Item_net_CulcJointAngle_dummy_net_common(actor, &basic_angle, &basic_angle, &basic_angle, &basic_angle); + Player_actor_Item_net_CulcJointAngle_dummy_net_common(actor, &basic_angle, &basic_angle, &basic_angle, + &basic_angle); } +static void Player_actor_Item_net_CulcJointAngle_dummy_net_slip(ACTOR* actor) { + static const xyz_t basic_angle = { 0.0f, 0.0f, DEG2SHORT_ANGLE3(-65.0f) }; - -static void Player_actor_Item_net_CulcJointAngle_dummy_net_slip(ACTOR* actor){ - static const xyz_t basic_angle = {0.0f, 0.0f, -11832.0f}; - - - Player_actor_Item_net_CulcJointAngle_dummy_net_common(actor, &basic_angle, &basic_angle, &basic_angle, &basic_angle); + Player_actor_Item_net_CulcJointAngle_dummy_net_common(actor, &basic_angle, &basic_angle, &basic_angle, + &basic_angle); } -static void Player_actor_Item_net_CulcJointAngle_dummy_net_swing(ACTOR* actor){ +static void Player_actor_Item_net_CulcJointAngle_dummy_net_swing(ACTOR* actor) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; - if(player->keyframe0.frame_control.current_frame >= 0.5f){ + if (player->keyframe0.frame_control.current_frame >= 5.0f) { Player_actor_Item_net_CulcJointAngle_dummy_net_zero(actor); - } - else{ + } else { Player_actor_Item_net_CulcJointAngle_dummy_net_ready(actor); } } @@ -131,7 +123,7 @@ static void Player_actor_Item_net_CulcJointAngle_dummy_net_swing(ACTOR* actor){ typedef void (*mPlayer_item_net_proc)(ACTOR*); static void Player_actor_Item_net_CulcJointAngle_dummy_net(ACTOR* actor) { - static mPlayer_item_net_proc proc[] = { + static const mPlayer_item_net_proc proc[] = { Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, @@ -205,37 +197,38 @@ static void Player_actor_Item_net_CulcJointAngle_dummy_net(ACTOR* actor) { if (valid == FALSE || proc[index] == NULL) { return; - }else{ - proc[index](actor); + } else { + proc[index](actor); } } -static int Player_actor_Item_main_net_normal(ACTOR* actor, GAME* game){ +static int Player_actor_Item_main_net_normal(ACTOR* actor, GAME* game) { Player_actor_Item_CulcAnimation_Base(actor); Player_actor_Item_net_CulcJointAngle_dummy_net(actor); return 0; } -static int Player_actor_Item_main_net_stop(ACTOR* actor, GAME* game){ +static int Player_actor_Item_main_net_stop(ACTOR* actor, GAME* game) { int ret = Player_actor_Item_CulcAnimation_Base2(actor); - + Player_actor_Item_net_CulcJointAngle_dummy_net(actor); return ret; } - -static void Player_actor_Item_draw_net_After_dummy_net(ACTOR* actor){ + +static void Player_actor_Item_draw_net_After_dummy_net(ACTOR* actor) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; Matrix_rotateXYZ(player->net_angle.x, player->net_angle.y, player->net_angle.z, 1); } - + typedef void (*mPlayer_item_net_draw_proc)(void* arg, GAME* game, cKF_SkeletonInfo_R_c* keyframe, Gfx** joint_shape, u8* joint_flags, s_xyz* joint_rot, xyz_t* joint_pos); -static int Player_actor_Item_draw_net_After(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_idx, Gfx** joint_shape, - u8* joint_flags, void* arg, s_xyz* joint_rot, xyz_t* joint_pos) { +static int Player_actor_Item_draw_net_After(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_idx, + Gfx** joint_shape, u8* joint_flags, void* arg, s_xyz* joint_rot, + xyz_t* joint_pos) { static const mPlayer_item_net_draw_proc proc[] = { - NULL, NULL, (mPlayer_item_net_draw_proc)Player_actor_Item_draw_net_After_dummy_net, NULL, NULL, NULL, + NULL, NULL, NULL, (mPlayer_item_net_draw_proc)Player_actor_Item_draw_net_After_dummy_net, NULL, NULL, }; if (joint_idx >= 0 && joint_idx < 6) { @@ -247,19 +240,20 @@ static int Player_actor_Item_draw_net_After(GAME* game, cKF_SkeletonInfo_R_c* ke return TRUE; } -static void Player_actor_Item_draw_net(ACTOR* actor, GAME* game){ +static void Player_actor_Item_draw_net(ACTOR* actor, GAME* game) { GAME_PLAY* play = (GAME_PLAY*)game; PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; - + Matrix_push(); Matrix_rotateXYZ(0, 3000, 0, 1); Matrix_Position_VecZ(&player->net_start_pos, -2400.0f); - Matrix_Position_VecZ(&player->net_end_pos, 5500.0f); - Matrix_Position_VecZ(&player->net_pos, 4000.0f); - Matrix_Position_VecZ(&player->net_top_col_pos, 4000.0f); - Matrix_Position_VecZ(&player->net_bot_col_pos, 4000.0f); + Matrix_Position_VecZ(&player->net_end_pos, 5500.0f); + Matrix_Position_VecZ(&player->net_pos, 4000.0f); + Matrix_Position_VecZ(&player->net_top_col_pos, 4000.0f); + Matrix_Position_VecZ(&player->net_bot_col_pos, 4000.0f); Matrix_pull(); - cKF_Si3_draw_R_SV(&play->game, &player->item_keyframe, player->item_work_mtx[game->frame_counter % 2], NULL, Player_actor_Item_draw_net_After, &player->actor_class); - player->update_item_rod_top_pos = FALSE; + cKF_Si3_draw_R_SV(&play->game, &player->item_keyframe, player->item_work_mtx[game->frame_counter % 2], NULL, + Player_actor_Item_draw_net_After, &player->actor_class); + player->item_rod_top_pos_set = FALSE; player->balloon_start_pos_set_flag = FALSE; } diff --git a/src/m_player_item_scoop.c_inc b/src/m_player_item_scoop.c_inc index a526e5f4..3fddf37a 100644 --- a/src/m_player_item_scoop.c_inc +++ b/src/m_player_item_scoop.c_inc @@ -1,21 +1,21 @@ -static int Player_actor_Item_main_scoop_normal(ACTOR* actor, GAME* game){ - return 0; +static int Player_actor_Item_main_scoop_normal(ACTOR* actor, GAME* game) { + return 0; } -static void Player_actor_Item_draw_scoop(ACTOR* actor, GAME* game){ +static void Player_actor_Item_draw_scoop(ACTOR* actor, GAME* game) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; int type; - + Matrix_push(); Matrix_Position_VecZ(&player->scoop_pos, 2200.0f); - Matrix_pull(); + Matrix_pull(); - type =player->item_shape_type[player->item_bank_idx]; + type = player->item_shape_type[player->item_bank_idx]; OPEN_POLY_OPA_DISP(game->graph); - gSPDisplayList(POLY_OPA_DISP++, mPlib_Get_Item_DataPointer(type)); - - CLOSE_POLY_OPA_DISP(game->graph); - player->update_item_rod_top_pos = FALSE; + gSPDisplayList(POLY_OPA_DISP++, mPlib_Get_Item_DataPointer(type)); + + CLOSE_POLY_OPA_DISP(game->graph); + player->item_rod_top_pos_set = FALSE; player->balloon_start_pos_set_flag = FALSE; } diff --git a/src/m_player_item_umbrella.c_inc b/src/m_player_item_umbrella.c_inc index 1d039a71..a47caff7 100644 --- a/src/m_player_item_umbrella.c_inc +++ b/src/m_player_item_umbrella.c_inc @@ -1,17 +1,17 @@ -static int Player_actor_Item_main_umbrella_normal(ACTOR* actor, GAME* game){ - Player_actor_Get_umbrella_p(actor,game); +static int Player_actor_Item_main_umbrella_normal(ACTOR* actor, GAME* game) { + Player_actor_Get_umbrella_p(actor, game); return 0; -} +} -static void Player_actor_Item_draw_umbrella(ACTOR* actor, GAME* game){ +static void Player_actor_Item_draw_umbrella(ACTOR* actor, GAME* game) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; - TOOLS_ACTOR* umbrella = (TOOLS_ACTOR*)Player_actor_Get_umbrella_p(actor,game); + TOOLS_ACTOR* umbrella = (TOOLS_ACTOR*)Player_actor_Get_umbrella_p(actor, game); - if(umbrella != NULL){ + if (umbrella != NULL) { Matrix_get(&umbrella->matrix_work); umbrella->init_matrix = TRUE; } - player->update_item_rod_top_pos = FALSE; + player->item_rod_top_pos_set = FALSE; player->balloon_start_pos_set_flag = FALSE; } diff --git a/src/m_player_item_windmill.c_inc b/src/m_player_item_windmill.c_inc index bfc3f753..a172627f 100644 --- a/src/m_player_item_windmill.c_inc +++ b/src/m_player_item_windmill.c_inc @@ -1,18 +1,17 @@ -static void Player_actor_Item_windmill_CulcParam(ACTOR* actor){ +static void Player_actor_Item_windmill_CulcParam(ACTOR* actor) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; xyz_t pos; - - if(player->balloon_start_pos_set_flag != FALSE){ + + if (player->balloon_start_pos_set_flag != FALSE) { pos.x = player->other_item_end_pos.x - player->other_item_start_pos.x; pos.y = player->other_item_end_pos.y - player->other_item_start_pos.y; pos.z = player->other_item_end_pos.z - player->other_item_start_pos.z; - - } - else{ + + } else { pos = ZeroVec; } - if(pos.x != 0.0f || pos.y != 0.0f || pos.z != 0.0f){ + if (pos.x != 0.0f || pos.y != 0.0f || pos.z != 0.0f) { f32 len; f32 dist; f32 sq_len; @@ -25,13 +24,11 @@ static void Player_actor_Item_windmill_CulcParam(ACTOR* actor){ sq_len = sqrtf(len); player->windmill_param.x = atans_table(sq_len, pos.y); player->windmill_param.y = atans_table(pos.z, pos.x); - - } - else{ + + } else { player->other_item_move_dist = 0.0f; player->windmill_param.x = 0; player->windmill_param.y = 0; - } } static void Player_actor_Item_windmill_CulcRotationSpeed(ACTOR* actor, GAME* game) { @@ -52,30 +49,28 @@ static void Player_actor_Item_windmill_CulcRotationSpeed(ACTOR* actor, GAME* gam angle_y = windmill_angle_p->y; target = 0.0f; - if ((wpos_p->x != last_wpos_p->x || - wpos_p->y != last_wpos_p->y || - wpos_p->z != last_wpos_p->z || shape_angle_delta_p->x != 0.0f || - shape_angle_delta_p->y != 0.0f || shape_angle_delta_p->z != 0.0f) && + if ((wpos_p->x != last_wpos_p->x || wpos_p->y != last_wpos_p->y || wpos_p->z != last_wpos_p->z || + shape_angle_delta_p->x != 0.0f || shape_angle_delta_p->y != 0.0f || shape_angle_delta_p->z != 0.0f) && (!mPlib_check_player_actor_main_index_AllWade(game))) { f32 dist = player->other_item_move_dist; if (dist != 0.0f) { s16 y_diff = (s16)(windmill_param_p->y - angle_y); s16 x_diff = (s16)(windmill_param_p->x - angle_x); - + target += 0.0f + (8.0f * (dist * (ABS(cos_s(x_diff)) * cos_s(y_diff)))); } } power = mEnv_GetWindPowerF_Windmill(); - if(power != 0.0f){ + if (power != 0.0f) { f32 targetm; s16 wind_angle = (s16)mEnv_GetWindAngleS(); s16 ty = wind_angle - angle_y; s16 tx = 0 - angle_x; - + targetm = 10.0f * (power * (cos_s(ty) * ABS(cos_s(tx)))); - if(target * targetm >= 0.0f){ + if (target * targetm >= 0.0f) { target += targetm; } } @@ -86,10 +81,10 @@ static void Player_actor_Item_windmill_CulcRotationSpeed(ACTOR* actor, GAME* gam f32 maxm; f32 speed; - fracmv = 0.005f * target; + fracmv = 0.005f * target; minm = 0.005f * target; maxm = 0.03f * target; - + fracmv = ABS(fracmv); minm = ABS(minm); maxm = ABS(maxm); @@ -97,57 +92,59 @@ static void Player_actor_Item_windmill_CulcRotationSpeed(ACTOR* actor, GAME* gam fracmv += 0.02f; minm += 0.1f; maxm += 0.3f; - + speed = kf_p->frame_control.speed; add_calc(&speed, target, 1.0f - sqrtf(1.0f - fracmv), maxm * 0.5f, minm * 0.5f); kf_p->frame_control.speed = speed; } } -static int Player_actor_Item_main_windmill_normal(ACTOR* actor, GAME* game){ +static int Player_actor_Item_main_windmill_normal(ACTOR* actor, GAME* game) { Player_actor_Item_windmill_CulcParam(actor); Player_actor_Item_windmill_CulcRotationSpeed(actor, game); Player_actor_Item_CulcAnimation_Base(actor); Player_actor_sound_move_temochi_kazaguruma(actor); - + return 0; } -static void Player_actor_Item_draw_windmill_After_kaza1_fan(ACTOR* actor){ +static void Player_actor_Item_draw_windmill_After_kaza1_fan(ACTOR* actor) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; s_xyz* angle = &player->windmill_angle; xyz_t* item_end = &player->other_item_end_pos; - + player->other_item_start_pos = *item_end; Matrix_Position_Zero(item_end); Matrix_to_rotate_new(get_Matrix_now(), angle, 0); - angle->x *= -1; - angle->y += 0x8000; - + angle->x *= -1; + angle->y += 0x8000; } -typedef void (*mPlayer_item_windmill_draw_proc)(void* arg, GAME* game, cKF_SkeletonInfo_R_c* keyframe, Gfx** joint_shape, - u8* joint_flags, s_xyz* joint_rot, xyz_t* joint_pos); +typedef void (*mPlayer_item_windmill_draw_proc)(void* arg, GAME* game, cKF_SkeletonInfo_R_c* keyframe, + Gfx** joint_shape, u8* joint_flags, s_xyz* joint_rot, xyz_t* joint_pos); -static int Player_actor_Item_draw_windmill_After(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_idx, Gfx** joint_shape, - u8* joint_flags, void* arg, s_xyz* joint_rot, xyz_t* joint_pos) { +static int Player_actor_Item_draw_windmill_After(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_idx, + Gfx** joint_shape, u8* joint_flags, void* arg, s_xyz* joint_rot, + xyz_t* joint_pos) { static const mPlayer_item_windmill_draw_proc proc[] = { - NULL,NULL, (mPlayer_item_windmill_draw_proc)Player_actor_Item_draw_windmill_After_kaza1_fan, + NULL, + NULL, + (mPlayer_item_windmill_draw_proc)Player_actor_Item_draw_windmill_After_kaza1_fan, }; - if(joint_idx >= 0 && joint_idx < 3){ - if(proc[joint_idx] != NULL){ - proc[joint_idx](arg,game,keyframe,joint_shape,joint_flags,joint_rot,joint_pos); + if (joint_idx >= 0 && joint_idx < 3) { + if (proc[joint_idx] != NULL) { + proc[joint_idx](arg, game, keyframe, joint_shape, joint_flags, joint_rot, joint_pos); } } return 1; } -static void Player_actor_Item_draw_windmill(ACTOR* actor, GAME* game){ +static void Player_actor_Item_draw_windmill(ACTOR* actor, GAME* game) { GAME_PLAY* play = (GAME_PLAY*)game; PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; Mtx* mtx; @@ -155,30 +152,28 @@ static void Player_actor_Item_draw_windmill(ACTOR* actor, GAME* game){ Mtx* item_mtx; GRAPH* graph; int ang; - + item_mtx = player->item_work_mtx[play->game.frame_counter % 2]; graph = play->game.graph; keyf = &player->item_keyframe; - + Matrix_push(); OPEN_POLY_OPA_DISP(graph); ang = (s16)(-0.5f * actor->shape_info.rotation.x); - + Matrix_RotateY(ang, 1); gSPMatrix(POLY_OPA_DISP++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - - CLOSE_POLY_OPA_DISP(graph); + CLOSE_POLY_OPA_DISP(graph); - cKF_Si3_draw_R_SV(game, keyf, item_mtx , NULL, Player_actor_Item_draw_windmill_After, &player->actor_class); + cKF_Si3_draw_R_SV(game, keyf, item_mtx, NULL, Player_actor_Item_draw_windmill_After, &player->actor_class); Matrix_pull(); - - player->update_item_rod_top_pos = FALSE; - + + player->item_rod_top_pos_set = FALSE; + if (player->balloon_start_pos_set_flag == FALSE) { player->other_item_start_pos = player->other_item_end_pos; - player->balloon_start_pos_set_flag = TRUE; + player->balloon_start_pos_set_flag = TRUE; } - } diff --git a/src/m_player_main_air_axe.c_inc b/src/m_player_main_air_axe.c_inc index 5c72f418..d5e643c2 100644 --- a/src/m_player_main_air_axe.c_inc +++ b/src/m_player_main_air_axe.c_inc @@ -32,8 +32,8 @@ static void Player_actor_SetEffect_Air_axe(ACTOR* actor, GAME* game) { Player_actor_SetEffectStart_axe_common(actor, game); } -static void Player_actor_SetSound_Air_axe(ACTOR* actor) { - Player_actor_SetSound_AXE_FURI_Swing_axe(actor, 0); +static void Player_actor_SetSound_Air_axe(ACTOR* actor) { + Player_actor_SetSound_AXE_FURI_Swing_axe(actor, 0); } static void Player_actor_SearchAnimation_Air_axe(ACTOR* actor, GAME* game, f32 frame) { @@ -48,20 +48,20 @@ static void Player_actor_ObjCheck_Air_axe(ACTOR* actor, GAME* game) { Player_actor_Excute_Corect_forStand(actor, game); } -static void Player_actor_BGcheck_Air_axe(ACTOR* actor) { +static void Player_actor_BGcheck_Air_axe(ACTOR* actor) { Player_actor_BGcheck_common_type1(actor); } static void Player_actor_request_proc_index_fromAir_axe(ACTOR* actor, GAME* game, int arg) { if (arg != 0) { Player_actor_SettleRequestMainIndexPriority(actor); - Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_4); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); } else { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; cKF_SkeletonInfo_R_c* kf = &player->keyframe0; - if (Player_actor_Check_AnimationFrame(&kf->frame_control, 35.0f)) { + if (Player_actor_Check_AnimationFrame(&kf->frame_control, 35.5f)) { Player_actor_SettleRequestMainIndexPriority(actor); Player_actor_Set_status_for_bee(actor, TRUE); } else if ((kf->frame_control.current_frame >= 36.0f) && diff --git a/src/m_player_main_air_rod.c_inc b/src/m_player_main_air_rod.c_inc index 15193374..00c5b1c7 100644 --- a/src/m_player_main_air_rod.c_inc +++ b/src/m_player_main_air_rod.c_inc @@ -1,4 +1,4 @@ -static int Player_actor_request_main_cast_rod(GAME* game, int priority) { +static int Player_actor_request_main_air_rod(GAME* game, int priority) { if (Player_actor_check_request_main_able(game, mPlayer_INDEX_AIR_ROD, priority)) { Player_actor_request_main_index(game, mPlayer_INDEX_AIR_ROD, priority); @@ -17,9 +17,9 @@ static void Player_actor_setup_main_Air_rod(ACTOR* actor, GAME* game) { kind = Player_actor_Get_ItemKind_from_submenu(); - Player_actor_SetupItem_Base2(actor, kind, mPlayer_ANIM_RUN_SLIP1, mPlayer_INDEX_FALL, -5.0f, frame, 0); + Player_actor_SetupItem_Base2(actor, kind, mPlayer_ANIM_RUN_SLIP1, mPlayer_INDEX_FALL, 0.0f, frame, 0); Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_NOT_SAO_SWING1, mPlayer_ANIM_NOT_SAO_SWING1, - player_frame, player_frame, 0.5f, -5.0f, 0, 0); + player_frame, player_frame, 0.5f, 0.0f, 0, 0); Player_actor_setup_main_Base(actor, game); Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_SWING_ROD, actor->world.position, 2, @@ -27,8 +27,8 @@ static void Player_actor_setup_main_Air_rod(ACTOR* actor, GAME* game) { actor->bg_collision_check.result.unit_attribute, 0); } -static void Player_actor_Movement_Air_rod(ACTOR* actor) { - Player_actor_Movement_Base_Braking_common(actor, 0.32625f); +static void Player_actor_Movement_Air_rod(ACTOR* actor) { + Player_actor_Movement_Base_Braking_common(actor, 0.32625001f); } static int Player_actor_CulcAnimation_Air_rod(ACTOR* actor, f32* frame_calc) { @@ -53,14 +53,14 @@ static void Player_actor_ObjCheck_Air_rod(ACTOR* actor, GAME* game) { Player_actor_Excute_Corect_forStand(actor, game); } -static void Player_actor_BGcheck_Air_rod(ACTOR* actor) { +static void Player_actor_BGcheck_Air_rod(ACTOR* actor) { Player_actor_BGcheck_common_type1(actor); } static void Player_actor_request_proc_index_fromAir_rod(ACTOR* actor, GAME* game, int ready) { if (ready) { Player_actor_SettleRequestMainIndexPriority(actor); - Player_actor_request_main_wait_all(game, 0.0f, -5.0f, 0, mPlayer_REQUEST_PRIORITY_1); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); } } diff --git a/src/m_player_main_air_scoop.c_inc b/src/m_player_main_air_scoop.c_inc index c094feae..d41079d1 100644 --- a/src/m_player_main_air_scoop.c_inc +++ b/src/m_player_main_air_scoop.c_inc @@ -1,4 +1,4 @@ -static int Player_actor_request_main_Air_scoop_all(GAME* game, int priority) { +static int Player_actor_request_main_air_scoop_all(GAME* game, int priority) { if (Player_actor_check_request_main_able(game, mPlayer_INDEX_AIR_SCOOP, priority)) { Player_actor_request_main_index(game, mPlayer_INDEX_AIR_SCOOP, priority); @@ -17,7 +17,7 @@ static void Player_actor_setup_main_Air_scoop(ACTOR* actor, GAME* game) { } static void Player_actor_Movement_Air_scoop(ACTOR* actor) { - Player_actor_Movement_Base_Braking_common(actor, 0.32625f); + Player_actor_Movement_Base_Braking_common(actor, 0.32625001f); } static int Player_actor_CulcAnimation_Air_scoop(ACTOR* actor, f32* frame_calc) { @@ -43,8 +43,8 @@ static void Player_actor_ObjCheck_Air_scoop(ACTOR* actor, GAME* game) { Player_actor_Excute_Corect_forStand(actor, game); } -static void Player_actor_BGcheck_Air_scoop(ACTOR* actor) { - Player_actor_BGcheck_common_type1(actor); +static void Player_actor_BGcheck_Air_scoop(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); } static void Player_actor_request_proc_index_fromAir_scoop(ACTOR* actor, GAME* game, int end_flag) { diff --git a/src/m_player_main_broken_axe.c_inc b/src/m_player_main_broken_axe.c_inc index 4adfd26f..c126ae1e 100644 --- a/src/m_player_main_broken_axe.c_inc +++ b/src/m_player_main_broken_axe.c_inc @@ -46,9 +46,9 @@ static void Player_actor_setup_main_Broken_axe(ACTOR* actor, GAME* game) { main_axe->_2C = 0; if (break_type != mPlayer_AXE_BREAK_FROM_SWING) { - Player_actor_setup_main_Reflect_axe_common(req_swing, &main_axe->axe.reflect_axe); + Player_actor_setup_main_Reflect_axe_common(req_ref, &main_axe->axe.reflect_axe); } else { - Player_actor_setup_main_Swing_axe_common(req_ref, &main_axe->axe.swing_axe); + Player_actor_setup_main_Swing_axe_common(req_swing, &main_axe->axe.swing_axe); } Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_AXE_BREAK1, mPlayer_ANIM_AXE_BREAK1, 1.0f, 1.0f, 0.5f, @@ -186,7 +186,7 @@ static int Player_actor_MessageControl_Broken_axe(ACTOR* actor) { return 0; } -static void Player_actor_request_proc_index_fromSwing_axe(ACTOR* actor, GAME* game, int arg) { +static void Player_actor_request_proc_index_fromBroken_axe(ACTOR* actor, GAME* game, int arg) { if (arg != 0) { Player_actor_SettleRequestMainIndexPriority(actor); Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); diff --git a/src/m_player_main_cast_rod.c_inc b/src/m_player_main_cast_rod.c_inc index 4bf19f0e..8b09eea5 100644 --- a/src/m_player_main_cast_rod.c_inc +++ b/src/m_player_main_cast_rod.c_inc @@ -20,7 +20,7 @@ static void Player_actor_setup_main_Cast_rod(ACTOR* actor, GAME* game) { main_cast->bobber_target_pos = req_cast->bobber_target_pos; - Player_actor_SetupItem_Base2(actor, kind, mPlayer_ANIM_UMBRELLA1, mPlayer_INDEX_TURN_DASH, -5.0f, frame, 0); + Player_actor_SetupItem_Base2(actor, kind, mPlayer_ANIM_UMBRELLA1, mPlayer_INDEX_TURN_DASH, 0.0f, frame, 0); Player_actor_setup_main_Base(actor, game); Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_SWING_ROD, actor->world.position, 2, @@ -28,8 +28,8 @@ static void Player_actor_setup_main_Cast_rod(ACTOR* actor, GAME* game) { actor->bg_collision_check.result.unit_attribute, 0); } -static void Player_actor_Movement_Cast_rod(ACTOR* actor) { - Player_actor_Movement_Base_Braking_common(actor, 0.32625f); +static void Player_actor_Movement_Cast_rod(ACTOR* actor) { + Player_actor_Movement_Base_Braking_common(actor, 0.32625001f); } static int Player_actor_CulcAnimation_Cast_rod(ACTOR* actor, f32* frame_calc) { @@ -55,8 +55,8 @@ static void Player_actor_ObjCheck_Cast_rod(ACTOR* actor, GAME* game) { Player_actor_Excute_Corect_forStand(actor, game); } -static void Player_actor_BGcheck_Cast_rod(ACTOR* actor) { - Player_actor_BGcheck_common_type1(actor); +static void Player_actor_BGcheck_Cast_rod(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); } static void Player_actor_request_proc_index_fromCast_rod(GAME* game, int ready) { diff --git a/src/m_player_main_change_cloth.c_inc b/src/m_player_main_change_cloth.c_inc index 7427bab5..d3f50ce8 100644 --- a/src/m_player_main_change_cloth.c_inc +++ b/src/m_player_main_change_cloth.c_inc @@ -110,7 +110,7 @@ static void Player_actor_SetTexPallet_Change_cloth(ACTOR* actorx, GAME* game) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; int anim0_idx = player->animation0_idx; int menu_flag = anim0_idx == mPlayer_ANIM_MENU_CHANGE1; - f32 frame = menu_flag ? 18.0f : 36.0f; + f32 frame = menu_flag ? 36.0f : 18.0f; cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; diff --git a/src/m_player_main_close_furniture.c_inc b/src/m_player_main_close_furniture.c_inc index 7324d9d7..323a3908 100644 --- a/src/m_player_main_close_furniture.c_inc +++ b/src/m_player_main_close_furniture.c_inc @@ -40,7 +40,7 @@ static void Player_actor_setup_main_Close_furniture(ACTOR* actor, GAME* game) { cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(keyf, 0.0f, 1000.0f, 200.0f, 0, 0, 0x4000); cKF_SkeletonInfo_R_AnimationMove_ct_base(&actor->world.position, &actor->world.position, - actor->shape_info.rotation.y, 0, 0.0f, keyf, 1); + actor->shape_info.rotation.y, 0, 5.0f, keyf, 1); Player_actor_InitAnimation_Base2(actor, game, anim_idx, anim_idx, 1.0f, 1.0f, 0.5f, -5.0f, 0, 0); Player_actor_setup_main_Base(actor, game); } diff --git a/src/m_player_main_collect_rod.c_inc b/src/m_player_main_collect_rod.c_inc index 98d058b7..ff970433 100644 --- a/src/m_player_main_collect_rod.c_inc +++ b/src/m_player_main_collect_rod.c_inc @@ -23,12 +23,12 @@ static void Player_actor_setup_main_Collect_rod(ACTOR* actor, GAME* game) { actor->bg_collision_check.result.unit_attribute, 0); } -static void Player_actor_settle_main_Collect_rod() { - Player_actor_settle_main_Collect_rod_other_func2(); +static void Player_actor_settle_main_Collect_rod(ACTOR* actorx, GAME* game) { + Player_actor_settle_main_Collect_rod_other_func2(actorx, game); } static void Player_actor_Movement_Collect_rod(ACTOR* actor) { - Player_actor_Movement_Base_Braking_common(actor, 0.32625f); + Player_actor_Movement_Base_Braking_common(actor, 0.32625001f); } static int Player_actor_CulcAnimation_Collect_rod(ACTOR* actor, f32* frame_calc) { @@ -45,11 +45,11 @@ static void Player_actor_ObjCheck_Collect_rod(ACTOR* actor, GAME* game) { Player_actor_Excute_Corect_forStand(actor, game); } -static void Player_actor_BGcheck_Collect_rod(ACTOR* actor) { - Player_actor_BGcheck_common_type1(actor); +static void Player_actor_BGcheck_Collect_rod(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); } -static void Player_actor_request_proc_index_fromAir_rod(ACTOR* actor, GAME* game, int ready, int status) { +static void Player_actor_request_proc_index_fromCollect_rod(ACTOR* actor, GAME* game, int ready, int status) { if (ready && status != 0) { Player_actor_SettleRequestMainIndexPriority(actor); Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); diff --git a/src/m_player_main_complete_payment.c_inc b/src/m_player_main_complete_payment.c_inc index 709ebc5f..939382c6 100644 --- a/src/m_player_main_complete_payment.c_inc +++ b/src/m_player_main_complete_payment.c_inc @@ -1,4 +1,4 @@ -static int Player_actor_request_main_complete_payment_all(GAME* game, int prio) { +static int Player_actor_request_main_complete_payment(GAME* game, int prio) { if (Player_actor_check_request_main_able(game, mPlayer_INDEX_COMPLETE_PAYMENT, prio)) { Player_actor_request_main_index(game, mPlayer_INDEX_COMPLETE_PAYMENT, prio); return TRUE; @@ -37,7 +37,7 @@ static int Player_actor_CulcAnimation_Complete_payment(ACTOR* actorx, f32* last_ static void Player_actor_Movement_Complete_payment(ACTOR* actorx) { add_calc_short_angle2(&actorx->shape_info.rotation.y, 0, 1.0f - sqrtf(0.5f), 2500, 50); actorx->world.angle.y = actorx->shape_info.rotation.y; - Player_actor_Movement_Base_Braking_common(actorx, 0.32625f); + Player_actor_Movement_Base_Braking_common(actorx, 0.32625001f); } static void Player_actor_set_eye_pattern_Complete_payment(ACTOR* actorx, int end_flag) { diff --git a/src/m_player_main_dash.c_inc b/src/m_player_main_dash.c_inc index 263f11bf..4c80cda4 100644 --- a/src/m_player_main_dash.c_inc +++ b/src/m_player_main_dash.c_inc @@ -36,7 +36,7 @@ static void Player_actor_setup_main_Dash(ACTOR* actor, GAME* game) { } static void Player_actor_CulcAnimation_Dash(ACTOR* actor, f32* frame_calc, f32 frame) { - Player_actor_CulcAnimation_Run(actor, frame_calc, frame); + Player_actor_CulcAnimation_Run(actor, frame, frame_calc); } static int Player_actor_SetEffectRemoveFlower_Dash(ACTOR* actor, GAME* game, s16 angle) { @@ -96,23 +96,23 @@ static void Player_actor_SearchAnimation_Dash(ACTOR* actor, GAME* game, f32 fram } } -static void Player_actor_Movement_Dash(ACTOR* actor, GAME* game, f32* frame) { - Player_actor_Movement_Run(actor, game, frame); +static void Player_actor_Movement_Dash(ACTOR* actor, GAME* game, f32* frame) { + Player_actor_Movement_Run(actor, game, frame); } -static void Player_actor_ObjCheck_Dash(ACTOR* actor, GAME* game) { - Player_actor_Excute_Corect_forStand(actor, game); +static void Player_actor_ObjCheck_Dash(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); } -static void Player_actor_BGcheck_Dash(ACTOR* actor) { - Player_actor_BGcheck_common_type1(actor); +static void Player_actor_BGcheck_Dash(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); } static int Player_actor_Check_FlatPlace(ACTOR* actor) { static const xy_t offset[] = { - {0.0f, 0.0f}, {20.0f, 0.0f}, {-20.0f, 0.0f}, {0.0f, 28.284271f}, - {20.0f, 28.284271f}, {-20.0f, 28.284271f}, {0.0f, 56.568542f}, {20.0f, 56.568542f}, - {-20, 56.568542f}, {0.0f, 84.85281f}, {20.0f, 84.85281f}, {-20.0f, 84.85281f}, + { 0.0f, 0.0f }, { 20.0f, 0.0f }, { -20.0f, 0.0f }, { 0.0f, 28.284271f }, + { 20.0f, 28.284271f }, { -20.0f, 28.284271f }, { 0.0f, 56.568542f }, { 20.0f, 56.568542f }, + { -20, 56.568542f }, { 0.0f, 84.85281f }, { 20.0f, 84.85281f }, { -20.0f, 84.85281f }, }; xyz_t norm; s16 angle = actor->shape_info.rotation.y; @@ -171,7 +171,8 @@ static void Player_actor_request_proc_index_fromDash_common(ACTOR* actor, GAME* speed = (player->keyframe0.frame_control.speed * player->keyframe0.frame_control.speed) / 0.048f; if (Player_actor_Get_DiffWorldAngleToControllerAngle(actor) >= 18204) { - Player_actor_request_main_turn_dash_all(game, Player_actor_Get_ControllerAngle(game), mPlayer_REQUEST_PRIORITY_3); + Player_actor_request_main_turn_dash_all(game, Player_actor_Get_ControllerAngle(game), + mPlayer_REQUEST_PRIORITY_3); } if (speed < 4.875f) { diff --git a/src/m_player_main_demo_get_golden_item.c_inc b/src/m_player_main_demo_get_golden_item.c_inc index 2e5822cb..81e84ae0 100644 --- a/src/m_player_main_demo_get_golden_item.c_inc +++ b/src/m_player_main_demo_get_golden_item.c_inc @@ -84,7 +84,7 @@ static int Player_actor_CulcAnimation_Demo_get_golden_item(ACTOR* actorx) { static void Player_actor_Movement_Demo_get_golden_item(ACTOR* actorx) { add_calc_short_angle2(&actorx->shape_info.rotation.y, 0, 1.0f - sqrtf(0.5f), 2500, 50); actorx->world.angle.y = actorx->shape_info.rotation.y; - Player_actor_Movement_Base_Braking_common(actorx, 0.32625f); + Player_actor_Movement_Base_Braking_common(actorx, 0.32625001f); } static void Player_actor_set_eye_pattern_Demo_get_golden_item(ACTOR* actorx, int end_flag) { diff --git a/src/m_player_main_demo_getoff_boat_standup.c_inc b/src/m_player_main_demo_getoff_boat_standup.c_inc index 741f68af..60fc790b 100644 --- a/src/m_player_main_demo_getoff_boat_standup.c_inc +++ b/src/m_player_main_demo_getoff_boat_standup.c_inc @@ -82,7 +82,7 @@ static void Player_actor_Movement_Demo_getoff_boat_standup(ACTOR* actorx) { &player->main_data.demo_getoff_boat_standup; s16* angle_z_p = &demo_getoff_boat_standup_p->angle_z; - add_calc_short_angle2(angle_z_p, 0, 1.0f - sqrtf(0.2f), 150, 100); + add_calc_short_angle2(angle_z_p, 0, 1.0f - sqrtf(0.19999999f), 150, 100); } } diff --git a/src/m_player_main_demo_geton_boat_sitdown.c_inc b/src/m_player_main_demo_geton_boat_sitdown.c_inc index b16e2680..bc527b9d 100644 --- a/src/m_player_main_demo_geton_boat_sitdown.c_inc +++ b/src/m_player_main_demo_geton_boat_sitdown.c_inc @@ -28,9 +28,9 @@ static void Player_actor_Movement_Demo_geton_boat_sitdown(ACTOR* actorx, GAME* g (player->force_position_angle_flag & mPlayer_FORCE_POSITION_ANGLE_POSZ)) { xyz_t* pos_p = &actorx->world.position; - add_calc(&pos_p->x, player->force_position.x, 1.0f - sqrtf(0.2f), 0.2f, 0.15f); - add_calc(&pos_p->y, player->force_position.y, 1.0f - sqrtf(0.2f), 0.2f, 0.15f); - add_calc(&pos_p->z, player->force_position.z, 1.0f - sqrtf(0.2f), 0.2f, 0.15f); + add_calc(&pos_p->x, player->force_position.x, 1.0f - sqrtf(0.19999999f), 0.2f, 0.15f); + add_calc(&pos_p->y, player->force_position.y, 1.0f - sqrtf(0.19999999f), 0.2f, 0.15f); + add_calc(&pos_p->z, player->force_position.z, 1.0f - sqrtf(0.19999999f), 0.2f, 0.15f); Player_actor_Get_force_position_angle(game, NULL, &actorx->world.angle); Player_actor_Get_force_position_angle(game, NULL, &actorx->shape_info.rotation); @@ -41,7 +41,7 @@ static void Player_actor_Movement_Demo_geton_boat_sitdown(ACTOR* actorx, GAME* g s16 boat_angle_z = player->boat_angleZ; s16* angle_z_p = &demo_geton_boat_sitdown_p->angle_z; - add_calc_short_angle2(angle_z_p, boat_angle_z, 1.0f - sqrtf(0.2f), 150, 100); + add_calc_short_angle2(angle_z_p, boat_angle_z, 1.0f - sqrtf(0.19999999f), 150, 100); } } diff --git a/src/m_player_main_demo_geton_boat_wait.c_inc b/src/m_player_main_demo_geton_boat_wait.c_inc index 7631a7d0..ff05d449 100644 --- a/src/m_player_main_demo_geton_boat_wait.c_inc +++ b/src/m_player_main_demo_geton_boat_wait.c_inc @@ -40,8 +40,8 @@ static void Player_actor_request_proc_index_fromDemo_geton_boat_wait(ACTOR* acto speed = 0.625f; } - Player_actor_Set_ScrollDemo_forDemo_geton_boat_wade(actorx, angle_y + DEG2SHORT_ANGLE2(180.0f), - ((speed * 0.5f) * 36.0f) * 0.05f); + angle_y += DEG2SHORT_ANGLE2(180.0f); + Player_actor_Set_ScrollDemo_forDemo_geton_boat_wade(actorx, angle_y, ((speed * 0.5f) * 36.0f) * 0.05f); } static void Player_actor_main_Demo_geton_boat_wait(ACTOR* actorx, GAME* game) { diff --git a/src/m_player_main_demo_wade.c_inc b/src/m_player_main_demo_wade.c_inc index 638d2a9f..9c1bff06 100644 --- a/src/m_player_main_demo_wade.c_inc +++ b/src/m_player_main_demo_wade.c_inc @@ -57,7 +57,7 @@ static void Player_actor_Movement_Demo_wade(ACTOR* actorx) { xyz_t* end_pos_p = &main_demo_wade_p->end_pos; xyz_t* pos_p = &actorx->world.position; f32 timer = main_demo_wade_p->timer; - f32 percent = get_percent_forAccelBrake(timer, 0.0f, 36.0f, 1.2f, 34.8f); + f32 percent = get_percent_forAccelBrake(timer, 0.0f, 36.0f, 1.1999999f, 34.8f); pos_p->x = start_pos_p->x + percent * (end_pos_p->x - start_pos_p->x); pos_p->y = start_pos_p->y + percent * (end_pos_p->y - start_pos_p->y); diff --git a/src/m_player_main_demo_wait.c_inc b/src/m_player_main_demo_wait.c_inc index d056f7f1..b71b5397 100644 --- a/src/m_player_main_demo_wait.c_inc +++ b/src/m_player_main_demo_wait.c_inc @@ -1,10 +1,10 @@ -static int Player_actor_request_main_demo_wait_all(GAME* game, int umbrella_flag, u32 label, int prio) { +static int Player_actor_request_main_demo_wait_all(GAME* game, int umbrella_flag, void* label, int prio) { if (Player_actor_check_request_main_able(game, mPlayer_INDEX_DEMO_WAIT, prio)) { PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); mPlayer_request_demo_wait_c* req_demo_wait_p = &player->requested_main_index_data.demo_wait; req_demo_wait_p->umbrella_flag = umbrella_flag; - req_demo_wait_p->label = label; + req_demo_wait_p->label = (u32)label; Player_actor_request_main_index(game, mPlayer_INDEX_DEMO_WAIT, prio); return TRUE; } @@ -17,7 +17,7 @@ static void Player_actor_request_main_demo_wait_from_submenu(ACTOR* actorx, GAME mPlayer_change_data_from_submenu_c* change_data_p = mPlib_Get_change_data_from_submenu_p(); mPlayer_request_demo_wait_c* req_demo_wait_p = &change_data_p->request_main_data.demo_wait; - Player_actor_request_main_demo_wait_all(game, req_demo_wait_p->umbrella_flag, req_demo_wait_p->label, + Player_actor_request_main_demo_wait_all(game, req_demo_wait_p->umbrella_flag, (void*)req_demo_wait_p->label, mPlayer_REQUEST_PRIORITY_31); } diff --git a/src/m_player_main_demo_walk.c_inc b/src/m_player_main_demo_walk.c_inc index fbbf75e2..beb88035 100644 --- a/src/m_player_main_demo_walk.c_inc +++ b/src/m_player_main_demo_walk.c_inc @@ -117,13 +117,13 @@ static int Player_actor_Movement_Demo_walk(ACTOR* actorx, f32* over_speed_normal now_speed = actorx->speed; if (now_speed != speed) { if (now_speed < speed) { - now_speed += 0.609f; + now_speed += 0.60899997f; if (now_speed > speed) { now_speed = speed; } } else if (now_speed > speed) { - now_speed -= 0.32625f; + now_speed -= 0.32625001f; if (now_speed < speed) { now_speed = speed; } diff --git a/src/m_player_main_dig_scoop.c_inc b/src/m_player_main_dig_scoop.c_inc index b7d79038..e6dbc7f9 100644 --- a/src/m_player_main_dig_scoop.c_inc +++ b/src/m_player_main_dig_scoop.c_inc @@ -59,7 +59,7 @@ static void Player_actor_SetEffectHit_Dig_scoop(ACTOR* actor, GAME* game, const s16 arg; if (player->animation0_idx == mPlayer_ANIM_DIG_KABU1) { - if (Player_actor_Check_AnimationFrame(fc, 17.0f)) { + if (Player_actor_Check_AnimationFrame(fc, 42.0f)) { effect_idx = eEC_EFFECT_DIG_SCOOP; if (main_index != mPlayer_INDEX_GET_SCOOP) { arg = 0; @@ -201,8 +201,8 @@ static void Player_actor_ObjCheck_Dig_scoop(ACTOR* actor, GAME* game) { Player_actor_Excute_Corect_forStand(actor, game); } -static void Player_actor_BGcheck_Dig_scoop(ACTOR* actor) { - Player_actor_BGcheck_common_type1(actor); +static void Player_actor_BGcheck_Dig_scoop(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); } static int Player_actor_lean_angle_scoop_common(ACTOR* actor, const xyz_t* pos, f32 frame) { diff --git a/src/m_player_main_dma.c_inc b/src/m_player_main_dma.c_inc index 7f12c43e..e5cd07a0 100644 --- a/src/m_player_main_dma.c_inc +++ b/src/m_player_main_dma.c_inc @@ -24,9 +24,9 @@ static void Player_actor_request_proc_index_fromDma(ACTOR* actorx, GAME* game) { if (exchange->banks[bank_idx + 1].bank_id > 0 && exchange->banks[bank_idx + 2].bank_id > 0 && exchange->banks[bank_idx + 3].bank_id > 0 && exchange->banks[bank_idx + 4].bank_id > 0 && exchange->banks[bank_idx + 5].bank_id > 0 && exchange->banks[bank_idx + 6].bank_id > 0) { - Player_actor_ItemBank_ct(actor, play); + Player_actor_ItemBank_ct(actorx, game); if (actor->requested_main_index_priority == mPlayer_REQUEST_PRIORITY_41) { - Player_actor_SettleRequestMainIndexPriority(actor); + Player_actor_SettleRequestMainIndexPriority(actorx); } keyf = &actor->keyframe0; type = actor->actor_class.actor_specific; @@ -46,9 +46,9 @@ static void Player_actor_request_proc_index_fromDma(ACTOR* actorx, GAME* game) { mPlib_request_main_groundhog_type1(game); } else { if (Common_Get(fail_emu_flag) == TRUE) { - Player_actor_request_main_fail_emu(play, mPlayer_REQUEST_PRIORITY_43); + Player_actor_request_main_fail_emu(game, mPlayer_REQUEST_PRIORITY_43); } else { - Player_actor_request_main_intro_all(play, mPlayer_REQUEST_PRIORITY_43); + Player_actor_request_main_intro_all(game, mPlayer_REQUEST_PRIORITY_43); } } Camera2_request_main_normal(play, 1, 1); diff --git a/src/m_player_main_door.c_inc b/src/m_player_main_door.c_inc index f874e546..8ce89918 100644 --- a/src/m_player_main_door.c_inc +++ b/src/m_player_main_door.c_inc @@ -1,4 +1,4 @@ -static int Player_actor_request_main_door(GAME* game, const xyz_t* pos, s16 angle_y, int type, u32 label, +static int Player_actor_request_main_door(GAME* game, const xyz_t* pos, s16 angle_y, int type, void* label, int priority) { if (Player_actor_check_request_main_able(game, mPlayer_INDEX_DOOR, priority)) { PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); @@ -7,7 +7,7 @@ static int Player_actor_request_main_door(GAME* game, const xyz_t* pos, s16 angl player->requested_main_index_data.door.player_pos.y = player->actor_class.world.position.y; player->requested_main_index_data.door.angle_y = angle_y; player->requested_main_index_data.door.type = type; - player->requested_main_index_data.door.label = label; + player->requested_main_index_data.door.label = (u32)label; Player_actor_request_main_index(game, mPlayer_INDEX_DOOR, priority); diff --git a/src/m_player_main_fail_emu.c_inc b/src/m_player_main_fail_emu.c_inc index c0028f71..3f6a34a0 100644 --- a/src/m_player_main_fail_emu.c_inc +++ b/src/m_player_main_fail_emu.c_inc @@ -1,4 +1,4 @@ -static int Player_actor_request_main_fail_emu_all(GAME* game, int prio) { +static int Player_actor_request_main_fail_emu(GAME* game, int prio) { if (Player_actor_check_request_main_able(game, mPlayer_INDEX_FAIL_EMU, prio)) { Player_actor_request_main_index(game, mPlayer_INDEX_FAIL_EMU, prio); return TRUE; @@ -24,7 +24,7 @@ static void Player_actor_settle_main_Fail_emu(ACTOR* actorx, GAME* game) { } static void Player_actor_Movement_Fail_emu(ACTOR* actorx) { - Player_actor_Movement_Base_Braking_common(actorx, 0.32625f); + Player_actor_Movement_Base_Braking_common(actorx, 0.23925f); } static int Player_actor_CulcAnimation_Fail_emu(ACTOR* actorx) { diff --git a/src/m_player_main_fall.c_inc b/src/m_player_main_fall.c_inc index 76c0cebc..b8fa446b 100644 --- a/src/m_player_main_fall.c_inc +++ b/src/m_player_main_fall.c_inc @@ -39,16 +39,16 @@ static int Player_actor_CulcAnimation_Fall(ACTOR* actor) { return Player_actor_CulcAnimation_Base2(actor, &frame_calc); } -static void Player_actor_Movement_Fall(ACTOR* actor) { - Player_actor_Movement_Base_Braking(actor); +static void Player_actor_Movement_Fall(ACTOR* actor) { + Player_actor_Movement_Base_Braking(actor); } -static void Player_actor_ObjCheck_Fall(ACTOR* actor, GAME* game) { - Player_actor_Excute_Corect_forStand(actor, game); +static void Player_actor_ObjCheck_Fall(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); } -static void Player_actor_BGcheck_Fall(ACTOR* actor) { - Player_actor_BGcheck_common_type1(actor); +static void Player_actor_BGcheck_Fall(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); } static void Player_actor_request_proc_index_fromFall_common(ACTOR* actor, GAME* game) { @@ -63,7 +63,7 @@ static void Player_actor_request_proc_index_fromFall_common(ACTOR* actor, GAME* player_kind = Player_actor_Get_ItemKind(actor, player->now_main_index); if (kind != player_kind) { - Player_actor_request_main_fall_all(game, 0.0f, 1, mPlayer_REQUEST_PRIORITY_0); + Player_actor_request_main_fall_all(game, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); } } diff --git a/src/m_player_main_fill_scoop.c_inc b/src/m_player_main_fill_scoop.c_inc index 25f52c1d..2275c26b 100644 --- a/src/m_player_main_fill_scoop.c_inc +++ b/src/m_player_main_fill_scoop.c_inc @@ -118,7 +118,7 @@ static void Player_actor_SetSound_Fill_scoop(ACTOR* actor) { } } -static void Player_actor_SearchAnimation_Dig_scoop(ACTOR* actor, GAME* game, f32 frame) { +static void Player_actor_SearchAnimation_Fill_scoop(ACTOR* actor, GAME* game, f32 frame) { if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { Player_actor_Reset_Hole_Fill_scoop(actor); Player_actor_SetEffect_Fill_scoop(actor, game); @@ -131,11 +131,11 @@ static void Player_actor_ObjCheck_Fill_scoop(ACTOR* actor, GAME* game) { Player_actor_Excute_Corect_forStand(actor, game); } -static void Player_actor_BGcheck_Fill_scoop(ACTOR* actor) { - Player_actor_BGcheck_common_type1(actor); +static void Player_actor_BGcheck_Fill_scoop(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); } -static int Player_actor_lean_angle_scoop_common(ACTOR* actor, const xyz_t* pos, f32 frame) { +static int Player_actor_lean_angle_Fill_scoop(ACTOR* actor) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; f32 mod = 0.0f; diff --git a/src/m_player_main_fly_rod.c_inc b/src/m_player_main_fly_rod.c_inc index d03ce688..6e4dca2b 100644 --- a/src/m_player_main_fly_rod.c_inc +++ b/src/m_player_main_fly_rod.c_inc @@ -23,8 +23,8 @@ static void Player_actor_settle_main_Fly_rod(ACTOR* actor, GAME* game) { Player_actor_settle_main_Fly_rod_other_func2(actor, game); } -static void Player_actor_Movement_Fly_rod(ACTOR* actor) { - Player_actor_Movement_Base_Braking_common(actor, 0.32625f); +static void Player_actor_Movement_Fly_rod(ACTOR* actor) { + Player_actor_Movement_Base_Braking_common(actor, 0.32625001f); } static int Player_actor_CulcAnimation_Fly_rod(ACTOR* actor, f32* frame_calc) { @@ -41,8 +41,8 @@ static void Player_actor_ObjCheck_Fly_rod(ACTOR* actor, GAME* game) { Player_actor_Excute_Corect_forStand(actor, game); } -static void Player_actor_BGcheck_Fly_rod(ACTOR* actor) { - Player_actor_BGcheck_common_type1(actor); +static void Player_actor_BGcheck_Fly_rod(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); } static void Player_actor_request_proc_index_fromFly_rod(ACTOR* actor, GAME* game, int ready, int status) { diff --git a/src/m_player_main_get_scoop.c_inc b/src/m_player_main_get_scoop.c_inc index 7183f141..5781e0dd 100644 --- a/src/m_player_main_get_scoop.c_inc +++ b/src/m_player_main_get_scoop.c_inc @@ -130,8 +130,8 @@ static void Player_actor_ObjCheck_Get_scoop(ACTOR* actor, GAME* game) { Player_actor_Excute_Corect_forStand(actor, game); } -static void Player_actor_BGcheck_Get_scoop(ACTOR* actor) { - Player_actor_BGcheck_common_type1(actor); +static void Player_actor_BGcheck_Get_scoop(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); } static int Player_actor_lean_angle_Get_scoop(ACTOR* actor) { @@ -249,7 +249,7 @@ static void Player_actor_Set_Item_Get_scoop(ACTOR* actor) { if (fc->current_frame <= 21.0f) { main_scoop->scale = 0.0f; } else if (fc->current_frame < 27.0f) { - main_scoop->scale = (0.0017f * (fc->current_frame - 21.0f)); + main_scoop->scale = (0.0016666666f * (fc->current_frame - 21.0f)); } else { main_scoop->scale = 0.01f; } @@ -271,7 +271,7 @@ static void Player_actor_request_proc_index_fromGet_scoop(ACTOR* actor, GAME* ga } } -static void Player_actor_main_Pull_net(ACTOR* actor, GAME* game) { +static void Player_actor_main_Get_scoop(ACTOR* actor, GAME* game) { int end_flag; f32 frame_calc; int cntrl; diff --git a/src/m_player_main_hide.c_inc b/src/m_player_main_hide.c_inc index f7b39bfb..a5e9f316 100644 --- a/src/m_player_main_hide.c_inc +++ b/src/m_player_main_hide.c_inc @@ -1,4 +1,4 @@ -static int Player_actor_request_main_hide_all(GAME* game, int prio) { +static int Player_actor_request_main_hide(GAME* game, int prio) { if (Player_actor_check_request_main_able(game, mPlayer_INDEX_HIDE, prio)) { Player_actor_request_main_index(game, mPlayer_INDEX_HIDE, prio); return TRUE; diff --git a/src/m_player_main_mail_jump.c_inc b/src/m_player_main_mail_jump.c_inc index b945d9c7..872b392b 100644 --- a/src/m_player_main_mail_jump.c_inc +++ b/src/m_player_main_mail_jump.c_inc @@ -20,7 +20,7 @@ static void Player_actor_setup_main_Mail_jump(ACTOR* actorx, GAME* game) { int anim1_idx; int part_table_idx; - Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_CONFIRM1, -6.0f, &anim1_idx, &part_table_idx); + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_CONFIRM1, -8.0f, &anim1_idx, &part_table_idx); if (part_table_idx != mPlayer_PART_TABLE_NORMAL) { part_table_idx = mPlayer_PART_TABLE_NET; diff --git a/src/m_player_main_notice_mosquito.c_inc b/src/m_player_main_notice_mosquito.c_inc index 01c5eb1d..6e72c235 100644 --- a/src/m_player_main_notice_mosquito.c_inc +++ b/src/m_player_main_notice_mosquito.c_inc @@ -41,7 +41,7 @@ static void Player_actor_settle_main_Notice_mosquito(ACTOR* actorx, GAME* game) static void Player_actor_Movement_Notice_mosquito(ACTOR* actorx) { add_calc_short_angle2(&actorx->shape_info.rotation.y, 0, 1.0f - sqrtf(0.5f), 2500, 50); actorx->world.angle.y = actorx->shape_info.rotation.y; - Player_actor_Movement_Base_Braking_common(actorx, 0.32625f); + Player_actor_Movement_Base_Braking_common(actorx, 0.32625001f); } static int Player_actor_CulcAnimation_Notice_mosquito(ACTOR* actorx) { diff --git a/src/m_player_main_notice_net.c_inc b/src/m_player_main_notice_net.c_inc index 419c5f08..9189f029 100644 --- a/src/m_player_main_notice_net.c_inc +++ b/src/m_player_main_notice_net.c_inc @@ -110,7 +110,7 @@ static void Player_actor_settle_main_Notice_net(ACTOR* actor, GAME* game) { u32 label = player->item_net_catch_label; if (label != 0 && player->item_net_catch_type == 0) { - ((aINS_INSECT_ACTOR*)label)->patience = 1000.0f; + ((aINS_INSECT_ACTOR*)label)->patience = 100.0f; ((ACTOR*)label)->drawn = TRUE; ((ACTOR*)label)->actor_specific = 1; } @@ -118,7 +118,7 @@ static void Player_actor_settle_main_Notice_net(ACTOR* actor, GAME* game) { } static void Player_actor_Movement_Notice_net(ACTOR* actor) { - Player_actor_Movement_Base_Braking_common(actor, 0.32625f); + Player_actor_Movement_Base_Braking_common(actor, 0.32625001f); } static void Player_actor_CorrectSomething_Notice_net(ACTOR* actor) { @@ -149,7 +149,9 @@ static void Player_actor_ObjCheck_Notice_net(ACTOR* actor, GAME* game) { Player_actor_Excute_Corect_forStand(actor, game); } -static void Player_actor_BGcheck_Notice_net(ACTOR* actor) { Player_actor_BGcheck_common_type1(actor); } +static void Player_actor_BGcheck_Notice_net(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} static void Player_actor_DeleteMark_Notice_net(ACTOR* actor) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; diff --git a/src/m_player_main_notice_rod.c_inc b/src/m_player_main_notice_rod.c_inc index a147f6e9..554ee0b8 100644 --- a/src/m_player_main_notice_rod.c_inc +++ b/src/m_player_main_notice_rod.c_inc @@ -12,7 +12,7 @@ static int Player_actor_request_main_notice_rod(GAME* game, s16 angle, int prior return FALSE; } -static void Player_actor_setup_main_Notice_net(ACTOR* actor, GAME* game) { +static void Player_actor_setup_main_Notice_rod(ACTOR* actor, GAME* game) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; mPlayer_main_notice_rod_c* main_notice = &player->main_data.notice_rod; mPlayer_request_notice_rod_c* req_notice = &player->requested_main_index_data.notice_rod; @@ -55,7 +55,7 @@ static void Player_actor_setup_main_Notice_net(ACTOR* actor, GAME* game) { Player_actor_setup_main_Base(actor, game); } -static void Player_actor_settle_main_Notice_rod(ACTOR* actor) { +static void Player_actor_settle_main_Notice_rod(ACTOR* actor, GAME* game) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; mPlayer_main_notice_rod_c* main_notice = &player->main_data.notice_rod; @@ -69,7 +69,7 @@ static void Player_actor_settle_main_Notice_rod(ACTOR* actor) { static void Player_actor_Movement_Notice_rod(ACTOR* actor) { add_calc_short_angle2(&actor->shape_info.rotation.y, 0, 1.0f - sqrtf(0.5), 2500, 50); actor->world.angle.y = actor->shape_info.rotation.y; - Player_actor_Movement_Base_Braking_common(actor, 0.32625f); + Player_actor_Movement_Base_Braking_common(actor, 0.32625001f); } static int Player_actor_CulcAnimation_Notice_rod(ACTOR* actor, f32* frame_calc) { @@ -88,8 +88,8 @@ static void Player_actor_ObjCheck_Notice_rod(ACTOR* actor, GAME* game) { Player_actor_Excute_Corect_forStand(actor, game); } -static void Player_actor_BGcheck_Notice_rod(ACTOR* actor) { - Player_actor_BGcheck_common_type1(actor); +static void Player_actor_BGcheck_Notice_rod(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); } static void Player_actor_SearchAnimation_Notice_rod(ACTOR* actor, GAME* game, f32 frame) { @@ -203,7 +203,7 @@ static int Player_actor_MessageControl_Notice_rod(ACTOR* actor, GAME* game, int mMsg_Window_c* win = mMsg_Get_base_window_p(); int choice; - if (main_notice->timer < 48.0f) { + if (main_notice->timer < 42.0f) { main_notice->timer += 1.0f; return -1; } diff --git a/src/m_player_main_open_furniture.c_inc b/src/m_player_main_open_furniture.c_inc index d8cf090f..635f529e 100644 --- a/src/m_player_main_open_furniture.c_inc +++ b/src/m_player_main_open_furniture.c_inc @@ -42,7 +42,7 @@ static void Player_actor_setup_main_Open_furniture(ACTOR* actor, GAME* game) { cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(keyf, 0.0f, 1000.0f, 200.0f, 0, 0, 0x4000); cKF_SkeletonInfo_R_AnimationMove_ct_base(&actor->world.position, &actor->world.position, - actor->shape_info.rotation.y, 0, 0.0f, keyf, 1); + actor->shape_info.rotation.y, 0, 5.0f, keyf, 1); Player_actor_InitAnimation_Base2(actor, game, anim_idx, anim_idx, 1.0f, 1.0f, 0.5f, -5.0f, 0, 0); Player_actor_setup_main_Base(actor, game); } diff --git a/src/m_player_main_pickup_exchange.c_inc b/src/m_player_main_pickup_exchange.c_inc index b344ddb7..d2ef4b91 100644 --- a/src/m_player_main_pickup_exchange.c_inc +++ b/src/m_player_main_pickup_exchange.c_inc @@ -26,7 +26,7 @@ static void Player_actor_setup_main_Pickup_exchange(ACTOR* actorx, GAME* game) { main_pickup_exchange_p->msg_mode = 0; main_pickup_exchange_p->submenu_flag = FALSE; - Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_PICKUP_WAIT1, -6.0f, &anim1_idx, &part_table_idx); + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_PICKUP_WAIT1, -5.0f, &anim1_idx, &part_table_idx); if (anim1_idx != mPlayer_ANIM_PICKUP_WAIT1) { part_table_idx = mPlayer_PART_TABLE_NET; diff --git a/src/m_player_main_pickup_furniture.c_inc b/src/m_player_main_pickup_furniture.c_inc index 918d0b65..1a0f2299 100644 --- a/src/m_player_main_pickup_furniture.c_inc +++ b/src/m_player_main_pickup_furniture.c_inc @@ -34,7 +34,7 @@ static void Player_actor_setup_main_Pickup_furniture(ACTOR* actorx, GAME* game) main_pickup_furniture_p->scale = 0.01f; main_pickup_furniture_p->item = item; - Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_PICKUP1, -6.0f, &anim1_idx, &part_table_idx); + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_PICKUP1, -5.0f, &anim1_idx, &part_table_idx); Player_actor_putin_furniture(game, slot_idx, item); if (slot_idx >= 0 || ITEM_IS_MYMANNIQUIN(item) || ITEM_IS_MYUMBRELLA(item)) { @@ -43,7 +43,7 @@ static void Player_actor_setup_main_Pickup_furniture(ACTOR* actorx, GAME* game) main_pickup_furniture_p->exchange_flag = TRUE; } - Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_PICKUP1, anim1_idx, 1.0f, 1.0f, 0.5f, -6.0f, + Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_PICKUP1, anim1_idx, 1.0f, 1.0f, 0.5f, 0.0f, cKF_FRAMECONTROL_STOP, mPlayer_PART_TABLE_PICK_UP); Player_actor_setup_main_Base(actorx, game); } @@ -66,7 +66,7 @@ static void Player_actor_Movement_Pickup_furniture_common(ACTOR* actorx, xyz_t* DEG2SHORT_ANGLE2(13.73291015625f), DEG2SHORT_ANGLE2(0.274658203125f)); } - Player_actor_Movement_Base_Braking_common(actorx, 0.32625f); + Player_actor_Movement_Base_Braking_common(actorx, 0.32625001f); } static void Player_actor_Movement_Pickup_furniture(ACTOR* actorx) { diff --git a/src/m_player_main_pickup_jump.c_inc b/src/m_player_main_pickup_jump.c_inc index bafb467f..004d508c 100644 --- a/src/m_player_main_pickup_jump.c_inc +++ b/src/m_player_main_pickup_jump.c_inc @@ -47,7 +47,7 @@ static void Player_actor_setup_main_Pickup_jump(ACTOR* actorx, GAME* game) { main_pickup_jump_p->scale = 0.01f; main_pickup_jump_p->item = item; - Player_actor_SetupItem_Base1(actorx, anim0_idx, -6.0f, &anim1_idx, &part_table_idx); + Player_actor_SetupItem_Base1(actorx, anim0_idx, -5.0f, &anim1_idx, &part_table_idx); if (ftr_flag == FALSE) { Player_actor_putin_item_layer2(slot_idx, item, item_pos_p); @@ -65,7 +65,7 @@ static void Player_actor_setup_main_Pickup_jump(ACTOR* actorx, GAME* game) { Common_Get(clip).htbl_clip->pickup_counter = 2; } - Player_actor_InitAnimation_Base2(actorx, game, anim0_idx, anim1_idx, 1.0f, 1.0f, 0.5f, -6.0f, cKF_FRAMECONTROL_STOP, + Player_actor_InitAnimation_Base2(actorx, game, anim0_idx, anim1_idx, 1.0f, 1.0f, 0.5f, 0.0f, cKF_FRAMECONTROL_STOP, mPlayer_PART_TABLE_PICK_UP); Player_actor_setup_main_Base(actorx, game); Player_actor_sound_dai_ue_kakunou(actorx); @@ -89,7 +89,7 @@ static void Player_actor_Movement_Pickup_jump_common(ACTOR* actorx, xyz_t* targe DEG2SHORT_ANGLE2(13.73291015625f), DEG2SHORT_ANGLE2(0.274658203125f)); } - Player_actor_Movement_Base_Braking_common(actorx, 0.32625f); + Player_actor_Movement_Base_Braking_common(actorx, 0.32625001f); } static void Player_actor_Movement_Pickup_jump(ACTOR* actorx) { diff --git a/src/m_player_main_pull_net.c_inc b/src/m_player_main_pull_net.c_inc index 4196db29..a64e87c5 100644 --- a/src/m_player_main_pull_net.c_inc +++ b/src/m_player_main_pull_net.c_inc @@ -25,8 +25,8 @@ static void Player_actor_setup_main_Pull_net(ACTOR* actor, GAME* game) { main_pull->timer = 0.0f; - Player_actor_SetupItem_Base2(actor, kind, mPlayer_ANIM_HOLD_WAIT1, mPlayer_INDEX_WAIT, -5.0f, -1.0f, 0); - Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_GET_M1, mPlayer_ANIM_GET_M1, 1.0f, 1.0f, 0.5f, -5.0f, 0, + Player_actor_SetupItem_Base2(actor, kind, mPlayer_ANIM_HOLD_WAIT1, mPlayer_INDEX_WAIT, -10.0f, -1.0f, 0); + Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_GET_M1, mPlayer_ANIM_GET_M1, 1.0f, 1.0f, 0.5f, 10.0f, 0, 0); if (player->item_net_catch_label != 0) { @@ -51,14 +51,14 @@ static void Player_actor_Movement_Pull_net(ACTOR* actor) { actor->world.angle.y = actor->shape_info.rotation.y; } - Player_actor_Movement_Base_Braking_common(actor, 0.32625f); + Player_actor_Movement_Base_Braking_common(actor, 0.32625001f); } static void Player_actor_CorrectSomething_Pull_net(ACTOR* actor) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; xyz_t* pos; - if (player->keyframe0.frame_control.current_frame > 17.0f) { + if (player->keyframe0.frame_control.current_frame > 15.0f) { u32 label = player->item_net_catch_label; if (label != 0 && player->item_net_catch_type == 0) { @@ -81,8 +81,8 @@ static void Player_actor_ObjCheck_Pull_net(ACTOR* actor, GAME* game) { Player_actor_Excute_Corect_forStand(actor, game); } -static void Player_actor_BGcheck_Pull_net(ACTOR* actor) { - Player_actor_BGcheck_common_type1(actor); +static void Player_actor_BGcheck_Pull_net(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); } static void Player_actor_SearchAnimation_Pull_net(ACTOR* actor, GAME* game, f32 frame) { diff --git a/src/m_player_main_push_snowball.c_inc b/src/m_player_main_push_snowball.c_inc index 97866a64..70428d67 100644 --- a/src/m_player_main_push_snowball.c_inc +++ b/src/m_player_main_push_snowball.c_inc @@ -1,4 +1,4 @@ -static int Player_actor_request_main_push_snowball_all(GAME* game, u32 label, int wade_flag, int prio) { +static int Player_actor_request_main_push_snowball_all(GAME* game, void* label, int wade_flag, int prio) { PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); mPlayer_request_push_snowball_c* req_push_snowball_p = &player->requested_main_index_data.push_snowball; int main_index = player->now_main_index; @@ -11,13 +11,13 @@ static int Player_actor_request_main_push_snowball_all(GAME* game, u32 label, in mPlayer_main_wade_snowball_c* wade_snowball_p = &player->main_data.wade_snowball; /* When wading between acres, check the snowball label is the same as the one pushed */ - if (wade_snowball_p->snowball_label != label) { + if (wade_snowball_p->snowball_label != (u32)label) { return FALSE; } } if (Player_actor_check_request_main_able(game, mPlayer_INDEX_PUSH_SNOWBALL, prio)) { - req_push_snowball_p->label = label; + req_push_snowball_p->label = (u32)label; req_push_snowball_p->wade_flag = wade_flag; Player_actor_request_main_index(game, mPlayer_INDEX_PUSH_SNOWBALL, prio); diff --git a/src/m_player_main_putaway_net.c_inc b/src/m_player_main_putaway_net.c_inc index 48e3d84d..ac8f5dc7 100644 --- a/src/m_player_main_putaway_net.c_inc +++ b/src/m_player_main_putaway_net.c_inc @@ -29,7 +29,7 @@ static void Player_actor_setup_main_Putaway_net(ACTOR* actor, GAME* game) { } static void Player_actor_Movement_Putaway_net(ACTOR* actor) { - Player_actor_Movement_Base_Braking_common(actor, 0.32625f); + Player_actor_Movement_Base_Braking_common(actor, 0.32625001f); } static int Player_actor_CulcAnimation_Putaway_net(ACTOR* actor, f32* frame_calc) { @@ -68,8 +68,8 @@ static void Player_actor_ObjCheck_Putaway_net(ACTOR* actor, GAME* game) { Player_actor_Excute_Corect_forStand(actor, game); } -static void Player_actor_BGcheck_Putaway_net(ACTOR* actor) { - Player_actor_BGcheck_common_type1(actor); +static void Player_actor_BGcheck_Putaway_net(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); } static void Player_actor_request_proc_index_fromPutaway_net(ACTOR* actor, GAME* game, int end_flag) { diff --git a/src/m_player_main_putaway_rod.c_inc b/src/m_player_main_putaway_rod.c_inc index 20c06136..cb9d22de 100644 --- a/src/m_player_main_putaway_rod.c_inc +++ b/src/m_player_main_putaway_rod.c_inc @@ -26,14 +26,14 @@ static void Player_actor_setup_main_Putaway_rod(ACTOR* actor, GAME* game) { Player_actor_SetupItem_Base2(actor, kind, mPlayer_ANIM_TRANS_WAIT1, mPlayer_INDEX_HOLD, -5.0f, -1.0f, 0); Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_PUTAWAY_T1, mPlayer_ANIM_PUTAWAY_T1, 1.0f, 1.0f, 0.5f, - -5.0f, 0, 0); + -3.0f, 0, 0); Player_actor_setup_main_Base(actor, game); Player_actor_sound_GASAGOSO(actor); } static void Player_actor_Movement_Putaway_rod(ACTOR* actor) { - Player_actor_Movement_Base_Braking_common(actor, 0.32625f); + Player_actor_Movement_Base_Braking_common(actor, 0.32625001f); } static int Player_actor_CulcAnimation_Putaway_rod(ACTOR* actor, f32* frame_calc) { @@ -44,8 +44,8 @@ static void Player_actor_ObjCheck_Putaway_rod(ACTOR* actor, GAME* game) { Player_actor_Excute_Corect_forStand(actor, game); } -static void Player_actor_BGcheck_Putaway_rod(ACTOR* actor) { - Player_actor_BGcheck_common_type1(actor); +static void Player_actor_BGcheck_Putaway_rod(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); } static void Player_actor_SearchAnimation_Putaway_rod(ACTOR* actor, GAME* game, f32 frame) { diff --git a/src/m_player_main_putaway_scoop.c_inc b/src/m_player_main_putaway_scoop.c_inc index fc66c89f..df8cc769 100644 --- a/src/m_player_main_putaway_scoop.c_inc +++ b/src/m_player_main_putaway_scoop.c_inc @@ -27,7 +27,7 @@ static void Player_actor_setup_main_Putaway_scoop(ACTOR* actor, GAME* game) { main_scoop->submenu_flag = req_scoop->_10; Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_PUTAWAY_D1, mPlayer_ANIM_PUTAWAY_D1, 1.0f, 1.0f, 0.5f, - -5.0f, 0, 0); + -3.0f, 0, 0); Player_actor_setup_main_Base(actor, game); Player_actor_sound_GASAGOSO(actor); } @@ -44,8 +44,8 @@ static void Player_actor_ObjCheck_Putaway_scoop(ACTOR* actor, GAME* game) { Player_actor_Excute_Corect_forStand(actor, game); } -static void Player_actor_BGcheck_Putaway_scoop(ACTOR* actor) { - Player_actor_BGcheck_common_type1(actor); +static void Player_actor_BGcheck_Putaway_scoop(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); } static void Player_actor_SearchAnimation_Putaway_scoop(ACTOR* actor, GAME* game, f32 frame) { @@ -54,7 +54,7 @@ static void Player_actor_SearchAnimation_Putaway_scoop(ACTOR* actor, GAME* game, } } -void Player_actor_Set_Item_Putaway_scoop(ACTOR* actor) { +static void Player_actor_Set_Item_Putaway_scoop(ACTOR* actor) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; mPlayer_main_putaway_scoop_c* main_scoop = &player->main_data.putaway_scoop; diff --git a/src/m_player_main_putin_item.c_inc b/src/m_player_main_putin_item.c_inc index e2f6fba7..57f72d23 100644 --- a/src/m_player_main_putin_item.c_inc +++ b/src/m_player_main_putin_item.c_inc @@ -24,8 +24,8 @@ static void Player_actor_setup_main_Putin_item(ACTOR* actorx, GAME* game) { main_putin_item_p->back_request_data = *req_putin_item_p; main_putin_item_p->timer = 0.0f; - Player_actor_LoadOrDestruct_Item(actorx, item_kind, mPlib_Get_BasicItemAnimeIndex_fromItemKind(item_kind), - cKF_FRAMECONTROL_REPEAT, 0.5f, 5.0f, -1.0f); + Player_actor_LoadOrDestruct_Item(actorx, item_kind, mPlib_Get_BasicItemAnimeIndex_fromItemKind(item_kind), 0.5f, + 5.0f, -1.0f, cKF_FRAMECONTROL_REPEAT); Player_actor_Set_now_item_main_index(actorx, Player_actor_Get_BasicItemMainIndex_fromItemKind(item_kind)); player->item_kind = item_kind; @@ -57,7 +57,7 @@ static void Player_actor_setup_main_Putin_item(ACTOR* actorx, GAME* game) { } static void Player_actor_Movement_Putin_item(ACTOR* actorx) { - Player_actor_Movement_Base_Braking_common(actorx, 0.32625f); + Player_actor_Movement_Base_Braking_common(actorx, 0.32625001f); } static int Player_actor_CulcAnimation_Putin_item(ACTOR* actorx, f32* last_anim0_cur_frame_p) { diff --git a/src/m_player_main_putin_scoop.c_inc b/src/m_player_main_putin_scoop.c_inc index fb007d96..ef9efc82 100644 --- a/src/m_player_main_putin_scoop.c_inc +++ b/src/m_player_main_putin_scoop.c_inc @@ -34,7 +34,7 @@ static void Player_actor_setup_main_Putin_scoop(ACTOR* actor, GAME* game) { main_scoop->item = req_scoop->item; main_scoop->get_gold_scoop_flag = req_scoop->get_gold_scoop_flag; - Player_actor_SetupItem_Base1(actor, mPlayer_ANIM_FILL_UP_I1, 5.0f, &anim_idx, &part_table); + Player_actor_SetupItem_Base1(actor, mPlayer_ANIM_FILL_UP_I1, -5.0f, &anim_idx, &part_table); Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_FILL_UP_I1, mPlayer_ANIM_FILL_UP_I1, 1.0f, 1.0f, 0.5f, -5.0f, 0, 0); @@ -83,8 +83,8 @@ static void Player_actor_ObjCheck_Putin_scoop(ACTOR* actor, GAME* game) { Player_actor_ObjCheck_Fill_scoop(actor, game); } -static void Player_actor_BGcheck_Putin_scoop(ACTOR* actor) { - Player_actor_BGcheck_Fill_scoop(actor); +static void Player_actor_BGcheck_Putin_scoop(ACTOR* actor) { + Player_actor_BGcheck_Fill_scoop(actor); } static void Player_actor_lean_angle_Putin_scoop(ACTOR* actor) { @@ -99,7 +99,7 @@ static void Player_actor_request_proc_index_fromPutin_scoop(ACTOR* actor, GAME* mPlayer_main_putin_scoop_c* main_scoop = &player->main_data.putin_scoop; if (!main_scoop->get_gold_scoop_flag) { - Player_actor_request_proc_index_fromFill_scoop(actor); + Player_actor_request_proc_index_fromFill_scoop(actor, game, end_flag); } else if (end_flag) { Player_actor_SettleRequestMainIndexPriority(actor); Player_actor_request_main_demo_get_golden_item_all(game, mPlayer_GOLDEN_ITEM_TYPE_SHOVEL, diff --git a/src/m_player_main_radio_exercise.c_inc b/src/m_player_main_radio_exercise.c_inc index a7e95d7c..b8fba729 100644 --- a/src/m_player_main_radio_exercise.c_inc +++ b/src/m_player_main_radio_exercise.c_inc @@ -77,7 +77,7 @@ static void Player_actor_Set_RadioExerciseCommand_Radio_exercise(ACTOR* actorx, } static void Player_actor_Movement_Radio_exercise(ACTOR* actorx) { - Player_actor_Movement_Base_Braking_common(actorx, 0.32625f); + Player_actor_Movement_Base_Braking_common(actorx, 0.32625001f); } static int Player_actor_CulcAnimation_Radio_exercise(ACTOR* actorx) { @@ -155,7 +155,7 @@ static void Player_actor_ObjCheck_Radio_exercise(ACTOR* actorx, GAME* game) { Player_actor_Excute_Corect_forStand(actorx, game); } -static void Player_actor_BGCheck_Radio_exercise(ACTOR* actorx) { +static void Player_actor_BGcheck_Radio_exercise(ACTOR* actorx) { Player_actor_BGcheck_common_type1(actorx); } diff --git a/src/m_player_main_ready_net.c_inc b/src/m_player_main_ready_net.c_inc index 98f03a2f..245c20d8 100644 --- a/src/m_player_main_ready_net.c_inc +++ b/src/m_player_main_ready_net.c_inc @@ -33,11 +33,11 @@ static void Player_actor_ObjCheck_Ready_net(ACTOR* actor, GAME* game) { Player_actor_Excute_Corect_forStand(actor, game); } -static void Player_actor_BGcheck_Ready_net(ACTOR* actor) { - Player_actor_BGcheck_common_type1(actor); +static void Player_actor_BGcheck_Ready_net(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); } -static void Player_actor_request_proc_index_fromSlip_net(ACTOR* actor, GAME* game) { +static void Player_actor_request_proc_index_fromReady_net(ACTOR* actor, GAME* game) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; if (mPlib_check_player_warp_forEvent() != FALSE) { diff --git a/src/m_player_main_ready_rod.c_inc b/src/m_player_main_ready_rod.c_inc index 5ca8fea3..8129cda8 100644 --- a/src/m_player_main_ready_rod.c_inc +++ b/src/m_player_main_ready_rod.c_inc @@ -21,7 +21,7 @@ static void Player_actor_setup_main_Ready_rod(ACTOR* actor, GAME* game) { } static void Player_actor_Movement_Ready_rod(ACTOR* actor) { - Player_actor_Movement_Base_Braking_common(actor, 0.32625f); + Player_actor_Movement_Base_Braking_common(actor, 0.32625001f); } static void Player_actor_CulcAnimation_Ready_rod(ACTOR* actor, f32* frame_calc) { @@ -32,8 +32,8 @@ static void Player_actor_ObjCheck_Ready_rod(ACTOR* actor, GAME* game) { Player_actor_Excute_Corect_forStand(actor, game); } -static void Player_actor_BGcheck_Ready_rod(ACTOR* actor) { - Player_actor_BGcheck_common_type1(actor); +static void Player_actor_BGcheck_Ready_rod(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); } static void Player_actor_SearchAnimation_Ready_rod(ACTOR* actor, GAME* game, f32 frame) { @@ -48,7 +48,7 @@ static void Player_actor_request_proc_index_fromReady_rod(ACTOR* actor, GAME* ga }; static const f32 array_addZ[] = { - 0.0f, -10.0f, -10.0f, 10.0f, 10.0f, + 0.0f, 10.0f, 10.0f, -10.0f, -10.0f, }; PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; diff --git a/src/m_player_main_ready_walk_net.c_inc b/src/m_player_main_ready_walk_net.c_inc index 0d8f922c..80894768 100644 --- a/src/m_player_main_ready_walk_net.c_inc +++ b/src/m_player_main_ready_walk_net.c_inc @@ -24,7 +24,7 @@ static void Player_actor_CulcAnimation_Ready_walk_net(ACTOR* actor, f32* frame_c f32 sp = (actor->speed * speed) / 1.8f; sp = sqrtf(sp); - sp = 0.6f * sp; + sp = 0.252f * sp; if (actor->bg_collision_check.result.hit_wall_count == 2) { sp = 0.22f; @@ -69,9 +69,9 @@ static void Player_actor_Movement_Ready_walk_net(ACTOR* actor, GAME* game, f32* mod = 0.5f; } else { if (movePR <= 0.05f) { - mod = 0.1f; + mod = 0.01f; } else { - mod = 0.1f + (0.5157895f * (movePR - 0.05f)); + mod = 0.01f + (0.5157895f * (movePR - 0.05f)); } } @@ -122,8 +122,8 @@ static void Player_actor_ObjCheck_Ready_walk_net(ACTOR* actor, GAME* game) { Player_actor_Excute_Corect_forStand(actor, game); } -static void Player_actor_BGcheck_Ready_walk_net(ACTOR* actor) { - Player_actor_BGcheck_common_type1(actor); +static void Player_actor_BGcheck_Ready_walk_net(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); } static void Player_actor_request_proc_index_fromReady_walk_net(ACTOR* actor, GAME* game) { diff --git a/src/m_player_main_reflect_scoop.c_inc b/src/m_player_main_reflect_scoop.c_inc index 642824b0..6f05b91e 100644 --- a/src/m_player_main_reflect_scoop.c_inc +++ b/src/m_player_main_reflect_scoop.c_inc @@ -29,7 +29,7 @@ static void Player_actor_setup_main_Reflect_scoop(ACTOR* actor, GAME* game) { Player_actor_setup_main_Base(actor, game); } -static Player_actor_settle_main_Reflect_scoop(ACTOR* actor, GAME* game) { +static void Player_actor_settle_main_Reflect_scoop(ACTOR* actor, GAME* game) { actor->speed = 0.0f; actor->world.angle.y = actor->shape_info.rotation.y; } @@ -246,8 +246,8 @@ static void Player_actor_ObjCheck_Reflect_scoop(ACTOR* actor, GAME* game) { Player_actor_Excute_Corect_forStand(actor, game); } -static void Player_actor_BGcheck_Reflect_scoop(ACTOR* actor) { - Player_actor_BGcheck_common_type1(actor); +static void Player_actor_BGcheck_Reflect_scoop(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); } static void Player_actor_request_proc_index_fromReflect_scoop(ACTOR* actor, GAME* game, int end_flag) { @@ -259,7 +259,7 @@ static void Player_actor_request_proc_index_fromReflect_scoop(ACTOR* actor, GAME } else { cKF_FrameControl_c* fc = &player->keyframe0.frame_control; - if (Player_actor_Check_AnimationFrame(fc, 29.0f)) { + if (Player_actor_Check_AnimationFrame(fc, 29.5f)) { Player_actor_SettleRequestMainIndexPriority(actor); Player_actor_Set_status_for_bee(actor, TRUE); } else { diff --git a/src/m_player_main_refuse.c_inc b/src/m_player_main_refuse.c_inc index 9f9f6b7c..1535c0c6 100644 --- a/src/m_player_main_refuse.c_inc +++ b/src/m_player_main_refuse.c_inc @@ -35,7 +35,7 @@ static void Player_actor_BGcheck_Refuse(ACTOR* actor) { Player_actor_BGcheck_common_type2(actor); } -static void Player_actor_main_Intro(ACTOR* actor, GAME* game) { +static void Player_actor_main_Refuse(ACTOR* actor, GAME* game) { Player_actor_Movement_Refuse(actor); Player_actor_Reinput_force_position_angle(actor, game); Player_actor_CulcAnimation_Refuse(actor); diff --git a/src/m_player_main_refuse_pickup.c_inc b/src/m_player_main_refuse_pickup.c_inc index 584c79dc..98810471 100644 --- a/src/m_player_main_refuse_pickup.c_inc +++ b/src/m_player_main_refuse_pickup.c_inc @@ -69,7 +69,7 @@ static void Player_actor_request_proc_index_fromRefuse_pickup(ACTOR* actor, GAME } } -static void Player_actor_main_Intro(ACTOR* actor, GAME* game) { +static void Player_actor_main_Refuse_pickup(ACTOR* actor, GAME* game) { Player_actor_Movement_Refuse_pickup(actor); Player_actor_Reinput_force_position_angle(actor, game); Player_actor_CulcAnimation_Refuse_pickup(actor); diff --git a/src/m_player_main_relax_rod.c_inc b/src/m_player_main_relax_rod.c_inc index a393ae90..151ef8a1 100644 --- a/src/m_player_main_relax_rod.c_inc +++ b/src/m_player_main_relax_rod.c_inc @@ -8,7 +8,7 @@ static int Player_actor_request_main_relax_rod(GAME* game, int priority) { return FALSE; } -static void Player_actor_setup_main_Air_rod(ACTOR* actor, GAME* game) { +static void Player_actor_setup_main_Relax_rod(ACTOR* actor, GAME* game) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; mPlayer_main_relax_rod_c* main_relax = &player->main_data.relax_rod; int kind = Player_actor_Get_ItemKind_from_submenu(); @@ -17,7 +17,7 @@ static void Player_actor_setup_main_Air_rod(ACTOR* actor, GAME* game) { main_relax->mosquito_flag = FALSE; Player_actor_SetupItem_Base2(actor, kind, mPlayer_ANIM_UMB_OPEN1, mPlayer_INDEX_WADE, -5.0f, 180.0f, 1); - Player_actor_InitAnimation_Base2(actor, game, eEC_EFFECT_TURI_MIZU, eEC_EFFECT_TURI_MIZU, 1.0f, 1.0f, 0.5f, -5.0f, + Player_actor_InitAnimation_Base2(actor, game, eEC_EFFECT_TURI_MIZU, eEC_EFFECT_TURI_MIZU, 1.0f, 1.0f, 0.5f, -3.0f, 1, 0); Player_actor_setup_main_Base(actor, game); } @@ -37,8 +37,8 @@ static void Player_actor_ObjCheck_Relax_rod(ACTOR* actor, GAME* game) { Player_actor_Excute_Corect_forStand(actor, game); } -static void Player_actor_BGcheck_Relax_rod(ACTOR* actor) { - Player_actor_BGcheck_common_type1(actor); +static void Player_actor_BGcheck_Relax_rod(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); } static void Player_actor_request_proc_index_fromRelax_rod(ACTOR* actor, GAME* game, int status) { @@ -89,7 +89,7 @@ static void Player_actor_request_proc_index_fromRelax_rod(ACTOR* actor, GAME* ga } } -void Player_actor_main_Relax_rod(ACTOR* actor, GAME* game) { +static void Player_actor_main_Relax_rod(ACTOR* actor, GAME* game) { int status; Player_actor_Movement_Relax_rod(actor); diff --git a/src/m_player_main_remove_grass.c_inc b/src/m_player_main_remove_grass.c_inc index deb39c34..3c1f5bf5 100644 --- a/src/m_player_main_remove_grass.c_inc +++ b/src/m_player_main_remove_grass.c_inc @@ -22,7 +22,7 @@ static void Player_actor_setup_main_Remove_grass(ACTOR* actorx, GAME* game) { main_remove_grass_p->target_pos = req_remove_grass_p->target_pos; main_remove_grass_p->grass_pos = req_remove_grass_p->grass_pos; - Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_ZASSOU1, -5.0f, &anim1_idx, &part_table_idx); + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_ZASSOU1, -6.0f, &anim1_idx, &part_table_idx); Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_ZASSOU1, anim1_idx, 1.0f, 1.0f, 0.5f, -6.0f, cKF_FRAMECONTROL_STOP, mPlayer_PART_TABLE_PICK_UP); Player_actor_setup_main_Base(actorx, game); diff --git a/src/m_player_main_return_demo.c_inc b/src/m_player_main_return_demo.c_inc index fc9c151b..8b7ee99c 100644 --- a/src/m_player_main_return_demo.c_inc +++ b/src/m_player_main_return_demo.c_inc @@ -1,12 +1,12 @@ -static int Player_actor_request_main_return_demo_all(GAME* game, int prev_index, int now_index, f32 time) { +static int Player_actor_request_main_return_demo_all(GAME* game, int prev_index, f32 time, int priority) { - if (Player_actor_check_request_main_able(game, mPlayer_INDEX_RETURN_DEMO, now_index)) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_RETURN_DEMO, priority)) { PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); player->requested_main_index_data.return_demo.prev_main_index = prev_index; player->requested_main_index_data.return_demo.time = time; - Player_actor_request_main_index(game, mPlayer_INDEX_RETURN_DEMO, now_index); + Player_actor_request_main_index(game, mPlayer_INDEX_RETURN_DEMO, priority); return TRUE; } else { return FALSE; @@ -56,7 +56,7 @@ static void Player_actor_request_proc_index_fromReturn_demo(ACTOR* actor, GAME* if (prev != mPlayer_INDEX_DEMO_WAIT) { Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, 1); } else { - Player_actor_request_main_demo_wait_all(game, 0, NULL, 19); + Player_actor_request_main_demo_wait_all(game, FALSE, 0, 19); } } } diff --git a/src/m_player_main_return_outdoor2.c_inc b/src/m_player_main_return_outdoor2.c_inc index 54a116a2..be43d1e4 100644 --- a/src/m_player_main_return_outdoor2.c_inc +++ b/src/m_player_main_return_outdoor2.c_inc @@ -58,7 +58,7 @@ static void Player_actor_request_proc_index_fromReturn_outdoor2(ACTOR* actor, GA if (prev != mPlayer_INDEX_DEMO_WAIT) { Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, 1); } else { - Player_actor_request_main_demo_wait_all(game, 0, NULL, 19); + Player_actor_request_main_demo_wait_all(game, FALSE, 0, 19); } } } diff --git a/src/m_player_main_roll_bed.c_inc b/src/m_player_main_roll_bed.c_inc index b8605a87..019c7696 100644 --- a/src/m_player_main_roll_bed.c_inc +++ b/src/m_player_main_roll_bed.c_inc @@ -74,7 +74,7 @@ static void Player_actor_setup_main_Roll_bed(ACTOR* actor, GAME* game) { cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(keyf, 0.0f, 1000.0f, 0.0f, 0, 0, 0x4000); cKF_SkeletonInfo_R_AnimationMove_ct_base(&actor->world.position, &actor->world.position, - actor->shape_info.rotation.y, 0, 17.0f, keyf, 1); + actor->shape_info.rotation.y, 0, 5.0f, keyf, 1); Player_actor_InitAnimation_Base2(actor, game, anim_idx, anim_idx, 1.0f, 1.0f, 0.5f, -5.0f, 0, 0); Player_actor_setup_main_Base(actor, game); Player_actor_sound_BED_NEGAERI(actor); diff --git a/src/m_player_main_rotate_umbrella.c_inc b/src/m_player_main_rotate_umbrella.c_inc index 1b2f4a5a..d462506d 100644 --- a/src/m_player_main_rotate_umbrella.c_inc +++ b/src/m_player_main_rotate_umbrella.c_inc @@ -17,7 +17,7 @@ static void Player_actor_setup_main_Rotate_umbrella(ACTOR* actorx, GAME* game) { } static void Player_actor_Movement_Rotate_umbrella(ACTOR* actorx) { - Player_actor_Movement_Base_Braking_common(actorx, 0.32625f); + Player_actor_Movement_Base_Braking_common(actorx, 0.32625001f); } static int Player_actor_CulcAnimation_Rotate_umbrella(ACTOR* actorx, f32* last_anim0_cur_frame) { diff --git a/src/m_player_main_sitdown.c_inc b/src/m_player_main_sitdown.c_inc index 88b905c0..836a0829 100644 --- a/src/m_player_main_sitdown.c_inc +++ b/src/m_player_main_sitdown.c_inc @@ -71,7 +71,7 @@ static int Player_actor_CulcAnimation_Sitdown(ACTOR* actor, f32* frame_calc) { static void Player_actor_SetSound_Sitdown(ACTOR* actor) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; - if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 20.0f)) { + if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 18.0f)) { Player_actor_sound_SIT(actor, player->main_data.sitdown.ftrID); } } diff --git a/src/m_player_main_sitdown_wait.c_inc b/src/m_player_main_sitdown_wait.c_inc index 8e1b398c..f2582c6d 100644 --- a/src/m_player_main_sitdown_wait.c_inc +++ b/src/m_player_main_sitdown_wait.c_inc @@ -36,7 +36,7 @@ static int Player_actor_CulcAnimation_Sitdown_wait(ACTOR* actor) { return Player_actor_CulcAnimation_Base2(actor, &frame_calc); } -static void Player_actor_request_proc_index_fromSitdown(ACTOR* actor, GAME* game, int arg) { +static void Player_actor_request_proc_index_fromSitdown_wait(ACTOR* actor, GAME* game) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; int ftr_no = player->main_data.sitdown_wait.ftrID; @@ -45,7 +45,7 @@ static void Player_actor_request_proc_index_fromSitdown(ACTOR* actor, GAME* game } } -static void Player_actor_main_Sitdown(ACTOR* actor, GAME* game) { +static void Player_actor_main_Sitdown_wait(ACTOR* actor, GAME* game) { Player_actor_Movement_Sitdown_wait(actor); Player_actor_Reinput_force_position_angle(actor, game); Player_actor_CulcAnimation_Sitdown_wait(actor); diff --git a/src/m_player_main_standup.c_inc b/src/m_player_main_standup.c_inc index 6048f12f..99f9499f 100644 --- a/src/m_player_main_standup.c_inc +++ b/src/m_player_main_standup.c_inc @@ -31,7 +31,7 @@ static void Player_actor_setup_main_Standup(ACTOR* actor, GAME* game) { cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(keyf, 0.0f, 1000.0f, 0.0f, 0, 0, 0x4000); cKF_SkeletonInfo_R_AnimationMove_ct_base(&actor->world.position, &actor->world.position, actor->shape_info.rotation.y, 0, 0.0f, keyf, 1); - Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_STANDUP1, mPlayer_ANIM_STANDUP1, 1.0f, 1.0f, 0.5f, -5.0f, + Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_STANDUP1, mPlayer_ANIM_STANDUP1, 1.0f, 1.0f, 0.5f, -3.0f, 0, 0); Player_actor_setup_main_Base(actor, game); Player_actor_sound_STANDUP(actor, ftr_no); @@ -56,7 +56,7 @@ static void Player_actor_ControlShadow_Standup(ACTOR* actor) { static void Player_actor_SetSound_Standup(ACTOR* actor) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; - if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 20.0f)) { + if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 17.0f)) { Player_actor_sound_LANDING(actor); } } diff --git a/src/m_player_main_standup_bed.c_inc b/src/m_player_main_standup_bed.c_inc index 50f034a4..b93fcc63 100644 --- a/src/m_player_main_standup_bed.c_inc +++ b/src/m_player_main_standup_bed.c_inc @@ -138,7 +138,7 @@ static int Player_actor_CulcAnimation_Standup_bed(ACTOR* actor, f32* frame_calc) static void Player_actor_SetSound_Standup_bed(ACTOR* actor) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; - if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 20.0f)) { + if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 23.0f)) { Player_actor_sound_LANDING(actor); } } diff --git a/src/m_player_main_stop_net.c_inc b/src/m_player_main_stop_net.c_inc index 8d0c746b..859dd47f 100644 --- a/src/m_player_main_stop_net.c_inc +++ b/src/m_player_main_stop_net.c_inc @@ -21,8 +21,8 @@ static void Player_actor_setup_main_Stop_net(ACTOR* actor, GAME* game) { Player_actor_setup_main_Base(actor, game); } -static void Player_actor_Movement_Pull_net(ACTOR* actor) { - Player_actor_Movement_Base_Braking_common(actor, 0.32625f); +static void Player_actor_Movement_Stop_net(ACTOR* actor) { + Player_actor_Movement_Base_Braking_common(actor, 0.32625001f); } static int Player_actor_CulcAnimation_Stop_net(ACTOR* actor) { @@ -35,8 +35,8 @@ static void Player_actor_ObjCheck_Stop_net(ACTOR* actor, GAME* game) { Player_actor_Excute_Corect_forStand(actor, game); } -static void Player_actor_BGcheck_Stop_net(ACTOR* actor) { - Player_actor_BGcheck_common_type1(actor); +static void Player_actor_BGcheck_Stop_net(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); } static void Player_actor_request_proc_index_fromStop_net(GAME* game, int ready) { diff --git a/src/m_player_main_stung_bee.c_inc b/src/m_player_main_stung_bee.c_inc index 935df971..55d59041 100644 --- a/src/m_player_main_stung_bee.c_inc +++ b/src/m_player_main_stung_bee.c_inc @@ -83,7 +83,7 @@ static void Player_actor_SearchAnimation_Stung_bee(ACTOR* actorx, GAME* game, f3 } } -static void Player_actor_set_eye_pattern_Stung_bee(ACTOR* actorx) { +static void Player_actor_set_tex_anime_Stung_bee(ACTOR* actorx) { Player_actor_set_tex_anime_pattern(actorx); } diff --git a/src/m_player_main_stung_mosquito.c_inc b/src/m_player_main_stung_mosquito.c_inc index 7e5b62f5..e59ff2a1 100644 --- a/src/m_player_main_stung_mosquito.c_inc +++ b/src/m_player_main_stung_mosquito.c_inc @@ -1,4 +1,4 @@ -static int Player_actor_request_main_stung_mosquito_all(GAME* game, u32 label, int prio) { +static int Player_actor_request_main_stung_mosquito_all(GAME* game, void* label, int prio) { PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); int main_index = player->now_main_index; @@ -28,7 +28,7 @@ static int Player_actor_request_main_stung_mosquito_all(GAME* game, u32 label, i if (Player_actor_check_request_main_able(game, mPlayer_INDEX_STUNG_MOSQUITO, prio)) { mPlayer_request_stung_mosquito_c* req_stung_mosquito_p = &player->requested_main_index_data.stung_mosquito; - req_stung_mosquito_p->label = label; + req_stung_mosquito_p->label = (u32)label; Player_actor_request_main_index(game, mPlayer_INDEX_STUNG_MOSQUITO, prio); return TRUE; } @@ -51,7 +51,7 @@ static void Player_actor_setup_main_Stung_mosquito(ACTOR* actorx, GAME* game) { } static void Player_actor_Movement_Stung_mosquito(ACTOR* actorx) { - Player_actor_Movement_Base_Braking_common(actorx, 0.32625f); + Player_actor_Movement_Base_Braking_common(actorx, 0.32625001f); } static int Player_actor_CulcAnimation_Stung_mosquito(ACTOR* actorx) { diff --git a/src/m_player_main_swing_axe.c_inc b/src/m_player_main_swing_axe.c_inc index 09816234..0e383f6b 100644 --- a/src/m_player_main_swing_axe.c_inc +++ b/src/m_player_main_swing_axe.c_inc @@ -119,20 +119,12 @@ static mActor_name_t Player_actor_Get_TreeNoToStumpNo(ACTOR* actor, GAME* game, } if (check <= 0) { - int palm; - mISL_SetNowPlayerAction(mISL_PLAYER_ACTION_CHOP_TREE); - palm = FALSE; - - if (IS_ITEM_PALM_TREE(item)) { - palm = TRUE; - } - - if (palm != FALSE) { + if (IS_ITEM_ANY_PALM_TREE(item) != FALSE) { mISL_SetNowPlayerAction(mISL_PLAYER_ACTION_CHOP_PALM_TREE); } - return bg_item_fg_sub(item, 0); + return bg_item_fg_sub((mActor_name_t)item, 0); } } } @@ -149,13 +141,9 @@ static void Player_actor_CutTree_Swing_axe(ACTOR* actor, GAME* game, mPlayer_mai if (mFI_Wpos2UtNum(&ut_x, &ut_z, main_axe->axe_common.target_pos)) { mActor_name_t tree = Player_actor_Get_TreeNoToStumpNo(actor, game, item, ut_x, ut_z, main_axe, flag); - int check = FALSE; + s16 type; - if (IS_ITEM_TREE_STUMP(tree)) { - check = TRUE; - } - - if (check != FALSE) { + if (IS_ITEM_TREE_STUMP(tree) != FALSE) { mNT_offset_table_c* ofs_tbl = obj_hight_table_item0_nogrow(tree); mCoBG_SetPlussOffset(main_axe->axe_common.target_pos, ofs_tbl->table.centerRight_offset, @@ -163,16 +151,16 @@ static void Player_actor_CutTree_Swing_axe(ACTOR* actor, GAME* game, mPlayer_mai mFI_SetFG_common(tree, main_axe->axe_common.target_pos, TRUE); if (main_axe->axe_common.target_pos.x > actor->world.position.x) { - flag = 1; + type = EffectBG_EFFECT_CUT_LEFT; } else { - flag = 2; + type = EffectBG_EFFECT_CUT_RIGHT; } Player_actor_set_viblation_Axe_cut(); } else { - flag = 0; + type = EffectBG_EFFECT_SHAKE; Player_actor_set_viblation_Axe_hard(); } - Player_actor_Set_EffectBgTree(game, item, flag, ut_x, ut_z); + Player_actor_Set_EffectBgTree(game, item, type, ut_x, ut_z); } } } diff --git a/src/m_player_main_swing_fan.c_inc b/src/m_player_main_swing_fan.c_inc index 953dd878..2e0d0977 100644 --- a/src/m_player_main_swing_fan.c_inc +++ b/src/m_player_main_swing_fan.c_inc @@ -33,7 +33,7 @@ static void Player_actor_setup_main_Swing_fan(ACTOR* actorx, GAME* game) { } static void Player_actor_Movement_Swing_fan(ACTOR* actorx) { - Player_actor_Movement_Base_Braking_common(actorx, 0.32625f); + Player_actor_Movement_Base_Braking_common(actorx, 0.32625001f); } static int Player_actor_CulcAnimation_Swing_fan(ACTOR* actorx, f32* last_anim0_cur_frame_p) { @@ -60,7 +60,7 @@ static void Player_actor_ObjCheck_Swing_fan(ACTOR* actorx, GAME* game) { Player_actor_Excute_Corect_forStand(actorx, game); } -static void Player_actor_BGCheck_Swing_fan(ACTOR* actorx) { +static void Player_actor_BGcheck_Swing_fan(ACTOR* actorx) { Player_actor_BGcheck_common_type1(actorx); } diff --git a/src/m_player_main_swing_net.c_inc b/src/m_player_main_swing_net.c_inc index ebbd7e08..2be813b8 100644 --- a/src/m_player_main_swing_net.c_inc +++ b/src/m_player_main_swing_net.c_inc @@ -87,7 +87,7 @@ static int Player_actor_HitBGCheck_Swing_net(ACTOR* actor, GAME* game, ACTOR** h if (line_check & 4) { wpos.y = 20.0f; } else { - wpos.y = mCoBG_GetWaterHeight_File(player->net_end_pos, "../m_player_main_swing_net.c_inc", 171); + wpos.y = mCoBG_GetWaterHeight_File(player->net_end_pos, __FILE__, 171); } Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_SWING_NET, wpos, 2, actor->world.angle.y, @@ -291,7 +291,7 @@ static void Player_actor_CorrectSomething_Swing_net(ACTOR* actor) { } static void Player_actor_Movement_Swing_net(ACTOR* actor) { - Player_actor_Movement_Base_Braking_common(actor, 0.32625f); + Player_actor_Movement_Base_Braking_common(actor, 0.32625001f); } static int Player_actor_CulcAnimation_Swing_net(ACTOR* actor, f32* frame_calc, int check_type) { @@ -316,8 +316,8 @@ static void Player_actor_ObjCheck_Swing_net(ACTOR* actor, GAME* game) { Player_actor_Excute_Corect_forStand(actor, game); } -static void Player_actor_BGcheck_Swing_net(ACTOR* actor) { - Player_actor_BGcheck_common_type1(actor); +static void Player_actor_BGcheck_Swing_net(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); } static void Player_actor_request_proc_index_fromSwing_net(ACTOR* actor, GAME* game, int end_flag, int hit, diff --git a/src/m_player_main_takeout_item.c_inc b/src/m_player_main_takeout_item.c_inc index e0cad276..0e416b90 100644 --- a/src/m_player_main_takeout_item.c_inc +++ b/src/m_player_main_takeout_item.c_inc @@ -23,8 +23,8 @@ static void Player_actor_setup_main_Takeout_item(ACTOR* actorx, GAME* game) { main_takeout_item_p->back_request_data = *req_takeout_item_p; main_takeout_item_p->timer = 0.0f; - Player_actor_LoadOrDestruct_Item(actorx, item_kind, mPlib_Get_BasicItemAnimeIndex_fromItemKind(item_kind), - cKF_FRAMECONTROL_REPEAT, 0.5f, 5.0f, -1.0f); + Player_actor_LoadOrDestruct_Item(actorx, item_kind, mPlib_Get_BasicItemAnimeIndex_fromItemKind(item_kind), 0.5f, + 5.0f, -1.0f, cKF_FRAMECONTROL_REPEAT); Player_actor_Set_now_item_main_index(actorx, Player_actor_Get_BasicItemMainIndex_fromItemKind(item_kind)); player->item_kind = item_kind; @@ -51,7 +51,7 @@ static void Player_actor_settle_main_Takeout_item(ACTOR* actorx, GAME* game) { } static void Player_actor_Movement_Takeout_item(ACTOR* actorx) { - Player_actor_Movement_Base_Braking_common(actorx, 0.32625f); + Player_actor_Movement_Base_Braking_common(actorx, 0.32625001f); } static int Player_actor_CulcAnimation_Takeout_item(ACTOR* actorx, f32* last_anim0_cur_frame_p) { diff --git a/src/m_player_main_tumble.c_inc b/src/m_player_main_tumble.c_inc index 321aa830..2d7f03a7 100644 --- a/src/m_player_main_tumble.c_inc +++ b/src/m_player_main_tumble.c_inc @@ -18,12 +18,12 @@ static void Player_actor_setup_Item_Tumble(ACTOR* actor, GAME* game, int kind, f } if (check == FALSE) { - Player_actor_LoadOrDestruct_Item(actor, kind, mPlib_Get_BasicItemAnimeIndex_fromItemKind(kind), 1, 0.5f, speed, - -1.0f); + Player_actor_LoadOrDestruct_Item(actor, kind, mPlib_Get_BasicItemAnimeIndex_fromItemKind(kind), 0.5f, speed, + -1.0f, cKF_FRAMECONTROL_REPEAT); Player_actor_Set_now_item_main_index(actor, Player_actor_Get_BasicItemMainIndex_fromItemKind(kind)); player->item_kind = kind; } else { - Player_actor_LoadOrDestruct_Item(actor, kind, mPlayer_ANIM_GET1, 0, 0.5f, speed, -1.0f); + Player_actor_LoadOrDestruct_Item(actor, kind, mPlayer_ANIM_GET1, 0.5f, speed, -1.0f, cKF_FRAMECONTROL_STOP); Player_actor_Set_now_item_main_index(actor, mPlayer_INDEX_RETURN_OUTDOOR); player->item_kind = kind; } @@ -119,12 +119,12 @@ static void Player_actor_SearchAnimation_Tumble(ACTOR* actor, GAME* game, f32 fr } } -static void Player_actor_ObjCheck_Tumble(ACTOR* actor, GAME* game) { - Player_actor_Excute_Corect_forStand(actor, game); +static void Player_actor_ObjCheck_Tumble(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); } -static void Player_actor_BGcheck_Tumble(ACTOR* actor) { - Player_actor_BGcheck_common_type1(actor); +static void Player_actor_BGcheck_Tumble(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); } static void Player_actor_request_proc_index_fromTumble(GAME* game, int arg1, int arg2) { diff --git a/src/m_player_main_tumble_getup.c_inc b/src/m_player_main_tumble_getup.c_inc index 5d7c74a9..b44295f8 100644 --- a/src/m_player_main_tumble_getup.c_inc +++ b/src/m_player_main_tumble_getup.c_inc @@ -44,12 +44,12 @@ static void Player_actor_setup_Item_Tumble_getup(ACTOR* actor, GAME* game, int k } if (check == FALSE) { - Player_actor_LoadOrDestruct_Item(actor, kind, mPlib_Get_BasicItemAnimeIndex_fromItemKind(kind), 1, 0.5f, speed, - -1.0f); + Player_actor_LoadOrDestruct_Item(actor, kind, mPlib_Get_BasicItemAnimeIndex_fromItemKind(kind), 0.5f, speed, + -1.0f, cKF_FRAMECONTROL_REPEAT); Player_actor_Set_now_item_main_index(actor, Player_actor_Get_BasicItemMainIndex_fromItemKind(kind)); player->item_kind = kind; } else { - Player_actor_LoadOrDestruct_Item(actor, kind, mPlayer_ANIM_RTURN1, 0, 0.5f, speed, -1.0f); + Player_actor_LoadOrDestruct_Item(actor, kind, mPlayer_ANIM_RTURN1, 0.5f, speed, -1.0f, cKF_FRAMECONTROL_STOP); Player_actor_Set_now_item_main_index(actor, mPlayer_INDEX_RETURN_OUTDOOR2); player->item_kind = kind; } @@ -74,8 +74,8 @@ static int Player_actor_Get_PlayerAnimeIndex_fromItemKind_Tumble_getup(int kind) mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, - mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_A1, - mPlayer_ANIM_KOKERU_A1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, + mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_A1, + mPlayer_ANIM_KOKERU_GETUP_A1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, @@ -106,15 +106,17 @@ static void Player_actor_setup_main_Tumble_getup(ACTOR* actor, GAME* game) { static void Player_actor_request_proc_index_fromTumble_getup(ACTOR* actor, GAME* game, int calc) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; - int type; + if (calc != 0) { if (player->main_data.balloon.balloon_shape_type < 0) { Player_actor_SettleRequestMainIndexPriority(actor); Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); } else { - type = player->main_data.balloon.balloon_shape_type; - Player_actor_request_main_release_creature_all(game, 2, 0, &type, player->balloon_actor, - mPlayer_REQUEST_PRIORITY_30); + mPlayer_request_release_creature_u release_creature; + + release_creature.balloon.balloon_type = player->main_data.balloon.balloon_shape_type; + Player_actor_request_main_release_creature_all(game, mPlayer_CREATURE_BALLOON, FALSE, &release_creature, + player->balloon_actor, mPlayer_REQUEST_PRIORITY_30); } } } diff --git a/src/m_player_main_vib_rod.c_inc b/src/m_player_main_vib_rod.c_inc index 038fb679..b18b05c3 100644 --- a/src/m_player_main_vib_rod.c_inc +++ b/src/m_player_main_vib_rod.c_inc @@ -15,13 +15,13 @@ static void Player_actor_setup_main_Vib_rod(ACTOR* actor, GAME* game) { Player_actor_SetupItem_Base2(actor, kind, mPlayer_ANIM_UMB_OPEN1, mPlayer_INDEX_OUTDOOR, -5.0f, frame, 1); Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_TURI_HIKI1, mPlayer_ANIM_TURI_HIKI1, 1.0f, 1.0f, 0.5f, - 0.0f, 1, 0); + -3.0f, 1, 0); Player_actor_setup_main_Base(actor, game); } static void Player_actor_Movement_Vib_rod(ACTOR* actor) { Player_actor_SetPlayerAngle_forUki(actor); - Player_actor_Movement_Base_Braking_common(actor, 0.32625f); + Player_actor_Movement_Base_Braking_common(actor, 0.32625001f); } static int Player_actor_CulcAnimation_Vib_rod(ACTOR* actor) { @@ -34,8 +34,8 @@ static void Player_actor_ObjCheck_Vib_rod(ACTOR* actor, GAME* game) { Player_actor_Excute_Corect_forStand(actor, game); } -static void Player_actor_BGcheck_Vib_rod(ACTOR* actor) { - Player_actor_BGcheck_common_type1(actor); +static void Player_actor_BGcheck_Vib_rod(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); } static void Player_actor_request_proc_index_fromVib_rod(GAME* game, int status) { diff --git a/src/m_player_main_wade.c_inc b/src/m_player_main_wade.c_inc index 17b8d1c3..8ed17f95 100644 --- a/src/m_player_main_wade.c_inc +++ b/src/m_player_main_wade.c_inc @@ -66,7 +66,7 @@ static void Player_actor_Movement_Wade(ACTOR* actorx) { xyz_t* end_pos_p = &main_wade_p->end_pos; xyz_t* pos_p = &actorx->world.position; f32 timer = main_wade_p->timer; - f32 percent = get_percent_forAccelBrake(timer, 0.0f, 36.0f, 1.2f, 34.8f); + f32 percent = get_percent_forAccelBrake(timer, 0.0f, 36.0f, 1.1999999f, 34.8f); pos_p->x = start_pos_p->x + percent * (end_pos_p->x - start_pos_p->x); pos_p->y = start_pos_p->y + percent * (end_pos_p->y - start_pos_p->y); diff --git a/src/m_player_main_wade_snowball.c_inc b/src/m_player_main_wade_snowball.c_inc index a0f104e5..43ba4eba 100644 --- a/src/m_player_main_wade_snowball.c_inc +++ b/src/m_player_main_wade_snowball.c_inc @@ -35,7 +35,7 @@ static void Player_actor_setup_main_Wade_snowball(ACTOR* actor, GAME* game) { player->main_data.wade_snowball.start_pos = *world_pos; player->main_data.wade_snowball.start_pos = *world_pos; - Player_actor_Culc_wade_end_pos(world_pos, end_pos, dir, 18.0f); + Player_actor_Culc_wade_end_pos(world_pos, end_pos, dir, 18.00001f); player->main_data.wade_snowball.timer = 0.0f; @@ -89,7 +89,7 @@ static void Player_actor_Movement_Wade_snowball(ACTOR* actor) { start_pos = &main_wade_snowball_p->start_pos; end_pos = &main_wade_snowball_p->end_pos; - brake = get_percent_forAccelBrake(player->main_data.wade_snowball.timer, 0.0f, 36.0f, 1.20f, 34.8f); + brake = get_percent_forAccelBrake(player->main_data.wade_snowball.timer, 0.0f, 36.0f, 1.1999999f, 34.8f); actor->world.position.x = start_pos->x + (brake * (end_pos->x - start_pos->x)); actor->world.position.y = start_pos->y + (brake * (end_pos->y - start_pos->y)); actor->world.position.z = start_pos->z + (brake * (end_pos->z - start_pos->z)); @@ -120,7 +120,7 @@ static void Player_actor_request_proc_index_fromWade_snowball(ACTOR* actor, GAME Player_actor_SettleRequestMainIndexPriority(actor); if (anim_idx != mPlayer_ANIM_WAIT1 && player->crash_snowball_for_wade == FALSE) { - Player_actor_request_main_push_snowball_all(game, player->main_data.wade_snowball.snowball_label, 1, + Player_actor_request_main_push_snowball_all(game, (void*)player->main_data.wade_snowball.snowball_label, 1, mPlayer_REQUEST_PRIORITY_2); } else { Player_actor_request_main_walk_all(game, &player->main_data.wade_snowball.end_pos, -5.0f, 6, 1); diff --git a/src/m_player_main_wait_bed.c_inc b/src/m_player_main_wait_bed.c_inc index e99ad879..97738068 100644 --- a/src/m_player_main_wait_bed.c_inc +++ b/src/m_player_main_wait_bed.c_inc @@ -12,7 +12,7 @@ static int Player_actor_Check_able_request_main_wait_bed(GAME* game) { } } -static int Player_actor_request_main_hold(GAME* game, int priority) { +static int Player_actor_request_main_wait_bed(GAME* game, int priority) { if (Player_actor_check_request_main_able(game, mPlayer_INDEX_WAIT_BED, priority) && Player_actor_Check_able_request_main_wait_bed(game)) { Player_actor_request_main_index(game, mPlayer_INDEX_WAIT_BED, priority); @@ -37,8 +37,8 @@ static void Player_actor_setup_main_Wait_bed(ACTOR* actor, GAME* game) { Player_actor_setup_main_Base(actor, game); } -static void Player_actor_Movement_Wait_bed(ACTOR* actor) { - Player_actor_Movement_Base_Stop(actor, FALSE); +static void Player_actor_Movement_Wait_bed(ACTOR* actor) { + Player_actor_Movement_Base_Stop(actor, FALSE); } static int Player_actor_CulcAnimation_Wait_bed(ACTOR* actor) { diff --git a/src/m_player_main_wait_open_furniture.c_inc b/src/m_player_main_wait_open_furniture.c_inc index bf37c46c..cbff32ea 100644 --- a/src/m_player_main_wait_open_furniture.c_inc +++ b/src/m_player_main_wait_open_furniture.c_inc @@ -33,7 +33,7 @@ static void Player_actor_setup_main_Wait_open_furniture(ACTOR* actor, GAME* game cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(keyf, 0.0f, 1000.0f, 200.0f, 0, 0, 0x4000); cKF_SkeletonInfo_R_AnimationMove_ct_base(&actor->world.position, &actor->world.position, - actor->shape_info.rotation.y, 0, 0.0f, keyf, 1); + actor->shape_info.rotation.y, 0, 5.0f, keyf, 1); Player_actor_InitAnimation_Base1(actor, game, anim_idx, anim_idx, 1.0f, 1.0f, 0.5f, -5.0f, 0); Player_actor_setup_main_Base(actor, game); } diff --git a/src/m_player_main_walk.c_inc b/src/m_player_main_walk.c_inc index 5828ba82..e9872fc8 100644 --- a/src/m_player_main_walk.c_inc +++ b/src/m_player_main_walk.c_inc @@ -80,7 +80,7 @@ static void Player_actor_CulcAnimation_Walk(ACTOR* actor, f32 over_speed_normali f32 sp = (actor->speed * over_speed_normalize_NoneZero) / 7.5f; sp = sqrtf(sp); - sp = 0.6f * sp; + sp = 0.59999996f * sp; if (actor->bg_collision_check.result.hit_wall_count == 2) { if (!(actor->bg_collision_check.result.hit_wall & mCoBG_HIT_WALL_RIGHT) || @@ -143,9 +143,9 @@ static void Player_actor_Movement_Walk(ACTOR* actor, GAME* game, f32* frame) { mod = 0.5f; } else { if (movePR <= 0.05f) { - mod = 0.1f; + mod = 0.0099999998f; } else { - mod = 0.1f + (0.5157895f * (movePR - 0.05f)); + mod = 0.0099999998f + (0.5157895f * (movePR - 0.05f)); } } diff --git a/src/m_player_other_func.c_inc b/src/m_player_other_func.c_inc index 4a791a09..4b7af85d 100644 --- a/src/m_player_other_func.c_inc +++ b/src/m_player_other_func.c_inc @@ -1,25 +1,25 @@ -void Player_actor_ct_other_func1(ACTOR* actor, GAME* game) { +static void Player_actor_ct_other_func1(ACTOR* actor, GAME* game) { GAME_PLAY* play = (GAME_PLAY*)game; - play->submenu.disable_start_btn_flag = TRUE; + play->submenu.start_refuse = TRUE; actor->unknown_b4 = 1; Actor_info_make_actor(&play->actor_info, game, mAc_PROFILE_FIELD_DRAW, actor->world.position.x, actor->world.position.y, actor->world.position.z, 0, 0, 0, -1, -1, -1, EMPTY_NO, -1, -1, -1); } -void Player_actor_setup_main_Wade_other_func1(ACTOR* actor, GAME* game) { +static void Player_actor_setup_main_Wade_other_func1(ACTOR* actor, GAME* game) { GAME_PLAY* play = (GAME_PLAY*)game; play->object_exchange._1954 = TRUE; } -void Player_actor_setup_main_Wade_snowball_other_func1(ACTOR* actor, GAME* game) { +static void Player_actor_setup_main_Wade_snowball_other_func1(ACTOR* actor, GAME* game) { Player_actor_setup_main_Wade_other_func1(actor, game); } -void Player_actor_setup_main_Wade_other_func2(ACTOR* actor, GAME* game) { +static void Player_actor_setup_main_Wade_other_func2(ACTOR* actor, GAME* game) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; GAME_PLAY* play = (GAME_PLAY*)game; xyz_t pos = player->main_data.wade.end_pos; @@ -29,11 +29,11 @@ void Player_actor_setup_main_Wade_other_func2(ACTOR* actor, GAME* game) { Common_Set(in_initial_block, FALSE); } -void Player_actor_setup_main_Wade_snowball_other_func2(ACTOR* actor, GAME* game) { +static void Player_actor_setup_main_Wade_snowball_other_func2(ACTOR* actor, GAME* game) { Player_actor_setup_main_Wade_other_func2(actor, game); } -void Player_actor_setup_main_Demo_wade_other_func2(ACTOR* actor, GAME* game) { +static void Player_actor_setup_main_Demo_wade_other_func2(ACTOR* actor, GAME* game) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; GAME_PLAY* play = (GAME_PLAY*)game; xyz_t pos = player->main_data.wade.end_pos; @@ -43,7 +43,7 @@ void Player_actor_setup_main_Demo_wade_other_func2(ACTOR* actor, GAME* game) { Common_Set(in_initial_block, FALSE); } -void Player_actor_setup_main_Demo_geton_boat_wade_other_func2(ACTOR* actor, GAME* game) { +static void Player_actor_setup_main_Demo_geton_boat_wade_other_func2(ACTOR* actor, GAME* game) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; GAME_PLAY* play = (GAME_PLAY*)game; xyz_t pos = player->main_data.wade.end_pos; @@ -53,7 +53,7 @@ void Player_actor_setup_main_Demo_geton_boat_wade_other_func2(ACTOR* actor, GAME Common_Set(in_initial_block, FALSE); } -void Player_actor_ChangeFace_for_Wade(ACTOR* actor, GAME* game, f32 timer) { +static void Player_actor_ChangeFace_for_Wade(ACTOR* actor, GAME* game, f32 timer) { if (18.0f <= timer && timer < 19.0f) { int rank = 0; @@ -66,62 +66,62 @@ void Player_actor_ChangeFace_for_Wade(ACTOR* actor, GAME* game, f32 timer) { } } -void Player_actor_main_Wade_other_func1(ACTOR* actor, GAME* game) { +static void Player_actor_main_Wade_other_func1(ACTOR* actor, GAME* game) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; Player_actor_ChangeFace_for_Wade(actor, game, player->main_data.wade.timer); } -void Player_actor_main_Demo_wade_other_func1(ACTOR* actor, GAME* game) { +static void Player_actor_main_Demo_wade_other_func1(ACTOR* actor, GAME* game) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; Player_actor_ChangeFace_for_Wade(actor, game, player->main_data.wade.timer); } -void Player_actor_main_Wade_snowball_other_func1(ACTOR* actor, GAME* game) { +static void Player_actor_main_Wade_snowball_other_func1(ACTOR* actor, GAME* game) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; Player_actor_ChangeFace_for_Wade(actor, game, player->main_data.wade.timer); } -void Player_actor_main_Demo_geton_boat_wade_other_func1(ACTOR* actor, GAME* game) { +static void Player_actor_main_Demo_geton_boat_wade_other_func1(ACTOR* actor, GAME* game) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; Player_actor_ChangeFace_for_Wade(actor, game, player->main_data.wade.timer); } -void Player_actor_main_Sitdown_wait_other_func2(ACTOR* actor) { +static void Player_actor_main_Sitdown_wait_other_func2(ACTOR* actor, GAME* game) { if (Common_Get(clip.my_room_clip)) { Common_Get(clip.my_room_clip)->call_sit_down_ongen_pos_se_proc(&actor->world.position); } } -void Player_actor_main_Relax_rod_other_func2(ACTOR* actor, GAME* game) { +static void Player_actor_main_Relax_rod_other_func2(ACTOR* actor, GAME* game) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; Player_actor_request_camera2_main_simple_fishing(actor, game); } -void Player_actor_main_Vib_rod_other_func2(ACTOR* actor, GAME* game) { +static void Player_actor_main_Vib_rod_other_func2(ACTOR* actor, GAME* game) { Player_actor_request_camera2_main_simple_fishing(actor, game); } -void Player_actor_main_Collect_rod_other_func2(ACTOR* actor, GAME* game) { +static void Player_actor_main_Collect_rod_other_func2(ACTOR* actor, GAME* game) { Player_actor_request_camera2_main_simple_return(actor, game); } -void Player_actor_main_Fly_rod_other_func2(ACTOR* actor, GAME* game) { +static void Player_actor_main_Fly_rod_other_func2(ACTOR* actor, GAME* game) { Player_actor_request_camera2_main_simple_return(actor, game); } -void Player_actor_settle_main_Collect_rod_other_func2(ACTOR* actor, GAME* game) { +static void Player_actor_settle_main_Collect_rod_other_func2(ACTOR* actor, GAME* game) { Player_actor_request_camera2_main_normal(game); } -void Player_actor_settle_main_Fly_rod_other_func2(ACTOR* actor, GAME* game) { +static void Player_actor_settle_main_Fly_rod_other_func2(ACTOR* actor, GAME* game) { Player_actor_request_camera2_change_priority(game); } -void Player_actor_set_nextgoto_info_type0(ACTOR* actor) { +static void Player_actor_set_nextgoto_info_type0(ACTOR* actor) { GAME_PLAY* play = (GAME_PLAY*)gamePT; PLAYER_ACTOR* player = GET_PLAYER_ACTOR(play); @@ -134,7 +134,7 @@ void Player_actor_set_nextgoto_info_type0(ACTOR* actor) { player->update_scene_bg_mode = TRUE; } -void Player_actor_set_nextgoto_info_type1(ACTOR* actor) { +static void Player_actor_set_nextgoto_info_type1(ACTOR* actor) { GAME_PLAY* play = (GAME_PLAY*)gamePT; PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; @@ -153,7 +153,7 @@ void Player_actor_set_nextgoto_info_type1(ACTOR* actor) { } } -int Player_actor_check_bg_for_next_goto(ACTOR* actor, mActor_name_t door) { +static int Player_actor_check_bg_for_next_goto(ACTOR* actor, mActor_name_t door) { mCoBG_Collision_u* col; if (mFI_GET_TYPE(mFI_GetFieldId()) == mFI_FIELD_PLAYER0_ROOM) { @@ -170,7 +170,7 @@ int Player_actor_check_bg_for_next_goto(ACTOR* actor, mActor_name_t door) { return TRUE; } -void Player_actor_check_nextgoto(ACTOR* actor, GAME* game) { +static void Player_actor_check_nextgoto(ACTOR* actor, GAME* game) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; GAME_PLAY* play = (GAME_PLAY*)game; mActor_name_t door = player->item_in_front; @@ -202,15 +202,15 @@ void Player_actor_check_nextgoto(ACTOR* actor, GAME* game) { } } -void Player_actor_check_forward(ACTOR* actor, GAME* game) { +static void Player_actor_check_forward(ACTOR* actor, GAME* game) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; GAME_PLAY* play = (GAME_PLAY*)game; s16 rot = actor->shape_info.rotation.y; xyz_t pos; mActor_name_t* item; - pos.x = actor->world.position.x + 0.0006f * sins(rot); - pos.z = actor->world.position.z + 0.0006f * coss(rot); + pos.x = actor->world.position.x + 0.00061037019f * sins(rot); + pos.z = actor->world.position.z + 0.00061037019f * coss(rot); pos.y = 0.0f; pos.y = mCoBG_GetBgY_OnlyCenter_FromWpos(pos, 0.0f); @@ -236,7 +236,7 @@ void Player_actor_check_forward(ACTOR* actor, GAME* game) { } } -void Player_actor_move_other_func1(ACTOR* actor, GAME* game) { +static void Player_actor_move_other_func1(ACTOR* actor, GAME* game) { Player_actor_cancel_request_change_proc_index_by_A_btn(actor); Player_actor_request_main_change_from_submenu(actor, game); Player_actor_request_change_item(game); @@ -250,7 +250,7 @@ void Player_actor_move_other_func1(ACTOR* actor, GAME* game) { Player_actor_Check_player_change_color_for_main(actor); } -void Player_actor_move_other_func2(ACTOR* actor, GAME* game) { +static void Player_actor_move_other_func2(ACTOR* actor, GAME* game) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; Player_actor_set_eye_PositionAndAngle(actor); @@ -274,21 +274,21 @@ void Player_actor_move_other_func2(ACTOR* actor, GAME* game) { Player_actor_Set_old_sound_frame_counter(actor); } -void Player_actor_draw_other_func2(ACTOR* actor, GAME* game) { +static void Player_actor_draw_other_func2(ACTOR* actor, GAME* game) { Player_actor_SetPosition_OBJtoLine_forItem(actor, game); } -void Player_actor_change_main_index_other_func1(ACTOR* actor, GAME* game) { +static void Player_actor_change_main_index_other_func1(ACTOR* actor, GAME* game) { } -void Player_actor_change_main_index_other_func2(ACTOR* actor, GAME* game) { +static void Player_actor_change_main_index_other_func2(ACTOR* actor, GAME* game) { } -void Player_actor_settle_main_other_func2(ACTOR* actor, GAME* game) { +static void Player_actor_settle_main_other_func2(ACTOR* actor, GAME* game) { Player_actor_SetFootMark_for_settle_main(actor, game); } -void Player_actor_SetActorUki(ACTOR* actor, GAME* game) { +static void Player_actor_SetActorUki(ACTOR* actor, GAME* game) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; GAME_PLAY* play = (GAME_PLAY*)game; @@ -297,10 +297,10 @@ void Player_actor_SetActorUki(ACTOR* actor, GAME* game) { } } -void Player_actor_Item_main_other_func1(ACTOR* actor, GAME* game) { +static void Player_actor_Item_main_other_func1(ACTOR* actor, GAME* game) { Player_actor_SetActorUki(actor, game); } -void Player_actor_setup_main_Demo_geton_boat_other_func2(ACTOR* actor, GAME* game) { - Common_Set(_2DBA6, 0); +static void Player_actor_setup_main_Demo_geton_boat_other_func2(ACTOR* actor, GAME* game) { + Common_Set(sunburn_time, 0); } diff --git a/src/m_player_sound.c_inc b/src/m_player_sound.c_inc index d56332df..05b68629 100644 --- a/src/m_player_sound.c_inc +++ b/src/m_player_sound.c_inc @@ -11,7 +11,7 @@ static void Player_actor_sound_SetStatus(ACTOR* actor) { f32 speed; status = player->now_main_index; - speed = player->keyframe0.frame_control.speed / 0.6f; + speed = player->keyframe0.frame_control.speed / 0.59999996f; switch (status) { case mPlayer_INDEX_READY_WALK_NET: diff --git a/src/m_player_tools.c_inc b/src/m_player_tools.c_inc new file mode 100644 index 00000000..fd95ab06 --- /dev/null +++ b/src/m_player_tools.c_inc @@ -0,0 +1,57 @@ + +static Vtx tol_sponge_1_v[] = { +#include "assets/tol_sponge_1_v.inc" +}; + +static u16 tol_sponge_1_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/tol_sponge_1_pal.inc" +}; + +static u8 tol_sponge_1_main1_tex_txt[] ATTRIBUTE_ALIGN(32) = { +#include "assets/tol_sponge_1_main1_tex_txt.inc" +}; + +// clang-format off +static const Gfx tol_sponge_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, tol_sponge_1_pal), + gsDPLoadTextureBlock_4b_Dolphin(tol_sponge_1_main1_tex_txt, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tol_sponge_1_v[0], 10, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 1, 4, // tri1 + 1, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 3, 4, 7, // tri0 + 0, 2, 8, // tri1 + 0, 8, 9, // tri2 + 6, 9, 7 // tri3 + ), + gsSPNTriangles_5b( + 8, 2, 3, // tri0 + 7, 9, 3, // tri1 + 3, 2, 1, // tri2 + 6, 4, 1 // tri3 + ), + gsSPNTriangles_5b( + 5, 1, 0, // tri0 + 3, 9, 8, // tri1 + 5, 0, 6, // tri2 + 9, 6, 0 // tri3 + ), + gsSPNTriangles_5b( + 4, 6, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; +// clang-format on diff --git a/src/static/jsyswrap.cpp b/src/static/jsyswrap.cpp index fa1868eb..84331d77 100644 --- a/src/static/jsyswrap.cpp +++ b/src/static/jsyswrap.cpp @@ -35,554 +35,528 @@ static u16 video_pan_height = 0; static u32 SystemHeapSize = 0x16C7000; static u32 gameheap_len = 0x380000; -static GXRenderModeObj customized_GXNtsc240Ds = { - VI_TVMODE_NTSC_DS, - 640, - 240, - 240, - 30, - 0, - 660, - 480, - VI_XFBMODE_SF, - FALSE, - FALSE, - { - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 } - }, - { 0, 0, 21, 22, 21, 0, 0 } -}; -static GXRenderModeObj customized_GXNtsc240Prog = { - VI_TVMODE_NTSC_PROG, - 640, - 240, - 480, - 30, - 0, - 660, - 480, - VI_XFBMODE_SF, - FALSE, - FALSE, - { - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 } - }, - { 0, 0, 21, 22, 21, 0, 0 } -}; -static GXRenderModeObj customized_GXNtsc240IntDf = { - VI_TVMODE_NTSC_INT, - 640, - 240, - 480, - 30, - 0, - 660, - 480, - VI_XFBMODE_DF, - FALSE, - FALSE, - { - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 } - }, - { 8, 8, 10, 12, 10, 8, 8 } -}; -static GXRenderModeObj customized_GXNtsc480Ds = { - VI_TVMODE_NTSC_DS, - 640, - 480, - 240, - 30, - 0, - 660, - 480, - VI_XFBMODE_SF, - FALSE, - FALSE, - { - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 } - }, - { 0, 0, 21, 22, 21, 0, 0 } -}; -static GXRenderModeObj customized_GXNtsc480IntDf = { - VI_TVMODE_NTSC_INT, - 640, - 480, - 480, - 30, - 0, - 660, - 480, - VI_XFBMODE_DF, - FALSE, - FALSE, - { - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 } - }, - { 8, 8, 10, 12, 10, 8, 8 } -}; -static GXRenderModeObj customized_GXNtsc480Prog = { - VI_TVMODE_NTSC_PROG, - 640, - 480, - 480, - 30, - 0, - 660, - 480, - VI_XFBMODE_SF, - FALSE, - FALSE, - { - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 } - }, - { 0, 0, 21, 22, 21, 0, 0 } -}; +static GXRenderModeObj customized_GXNtsc240Ds = { VI_TVMODE_NTSC_DS, + 640, + 240, + 240, + 30, + 0, + 660, + 480, + VI_XFBMODE_SF, + FALSE, + FALSE, + { { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 } }, + { 0, 0, 21, 22, 21, 0, 0 } }; +static GXRenderModeObj customized_GXNtsc240Prog = { VI_TVMODE_NTSC_PROG, + 640, + 240, + 480, + 30, + 0, + 660, + 480, + VI_XFBMODE_SF, + FALSE, + FALSE, + { { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 } }, + { 0, 0, 21, 22, 21, 0, 0 } }; +static GXRenderModeObj customized_GXNtsc240IntDf = { VI_TVMODE_NTSC_INT, + 640, + 240, + 480, + 30, + 0, + 660, + 480, + VI_XFBMODE_DF, + FALSE, + FALSE, + { { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 } }, + { 8, 8, 10, 12, 10, 8, 8 } }; +static GXRenderModeObj customized_GXNtsc480Ds = { VI_TVMODE_NTSC_DS, + 640, + 480, + 240, + 30, + 0, + 660, + 480, + VI_XFBMODE_SF, + FALSE, + FALSE, + { { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 } }, + { 0, 0, 21, 22, 21, 0, 0 } }; +static GXRenderModeObj customized_GXNtsc480IntDf = { VI_TVMODE_NTSC_INT, + 640, + 480, + 480, + 30, + 0, + 660, + 480, + VI_XFBMODE_DF, + FALSE, + FALSE, + { { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 } }, + { 8, 8, 10, 12, 10, 8, 8 } }; +static GXRenderModeObj customized_GXNtsc480Prog = { VI_TVMODE_NTSC_PROG, + 640, + 480, + 480, + 30, + 0, + 660, + 480, + VI_XFBMODE_SF, + FALSE, + FALSE, + { { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 } }, + { 0, 0, 21, 22, 21, 0, 0 } }; static void ReportDiskID() { - DVDDiskID* disk_id = DVDGetCurrentDiskID(); + DVDDiskID* disk_id = DVDGetCurrentDiskID(); - /* @NOTE: taken from e+ */ - JSYSWRAPPER_PRINTF(jc_sysConsole, "DiskID %.4s %.2s %d 0x%02x(%d)\n", disk_id->gameName, disk_id->company, disk_id->diskNumber, disk_id->gameVersion); + /* @NOTE: taken from e+ */ + JSYSWRAPPER_PRINTF(jc_sysConsole, "DiskID %.4s %.2s %d 0x%02x(%d)\n", disk_id->gameName, disk_id->company, + disk_id->diskNumber, disk_id->gameVersion); } extern void JW_UpdateVideoMode() { - GXRenderModeObj* renderMode; + GXRenderModeObj* renderMode; - if (video_famicom) { - video_pan_xorg = 32; - video_pan_yorg = 8; - video_pan_width = 256; - video_pan_height = 232; + if (video_famicom) { + video_pan_xorg = 32; + video_pan_yorg = 8; + video_pan_width = 256; + video_pan_height = 232; - if (video_lowreso != FALSE && video_progressive == FALSE) { - renderMode = &customized_GXNtsc240Ds; - } - else { - video_pan_yorg *= 2; - video_pan_height *= 2; + if (video_lowreso != FALSE && video_progressive == FALSE) { + renderMode = &customized_GXNtsc240Ds; + } else { + video_pan_yorg *= 2; + video_pan_height *= 2; - if (video_progressive != FALSE) { - renderMode = &customized_GXNtsc240Prog; - } - else { - renderMode = &customized_GXNtsc240IntDf; - } - } - } - else { - if (video_logo) { - video_pan_xorg = 0; - video_pan_yorg = 0; - video_pan_width = 640; - video_pan_height = 480; - } - else { - video_pan_xorg = 20; - video_pan_yorg = 6; - video_pan_width = 598; - video_pan_height = 464; + if (video_progressive != FALSE) { + renderMode = &customized_GXNtsc240Prog; + } else { + renderMode = &customized_GXNtsc240IntDf; + } + } + } else { + if (video_logo) { + video_pan_xorg = 0; + video_pan_yorg = 0; + video_pan_width = 640; + video_pan_height = 480; + } else { + video_pan_xorg = 20; + video_pan_yorg = 6; + video_pan_width = 598; + video_pan_height = 464; + } + + if (video_progressive) { + renderMode = &customized_GXNtsc480Prog; + } else { + renderMode = &customized_GXNtsc480IntDf; + } } - if (video_progressive) { - renderMode = &customized_GXNtsc480Prog; + if (renderMode != NULL) { + VIWaitForRetrace(); + JC_JUTVideo_setRenderMode(JC_JUTVideo_getManager(), renderMode); } - else { - renderMode = &customized_GXNtsc480IntDf; + + if (video_pan_enable) { + VIConfigurePan(video_pan_xorg, video_pan_yorg, video_pan_width, video_pan_height); } - } - - if (renderMode != NULL) { - VIWaitForRetrace(); - JC_JUTVideo_setRenderMode(JC_JUTVideo_getManager(), renderMode); - } - - if (video_pan_enable) { - VIConfigurePan(video_pan_xorg, video_pan_yorg, video_pan_width, video_pan_height); - } } extern void JW_SetProgressiveMode(int enabled) { - if (video_progressive != enabled) { - video_progressive = enabled; - JW_UpdateVideoMode(); - } + if (video_progressive != enabled) { + video_progressive = enabled; + JW_UpdateVideoMode(); + } } extern void JW_SetLowResoMode(int enabled) { - if (video_lowreso != enabled) { - video_lowreso = enabled; - JW_UpdateVideoMode(); - } + if (video_lowreso != enabled) { + video_lowreso = enabled; + JW_UpdateVideoMode(); + } } extern void JW_SetFamicomMode(int enabled) { - if (video_famicom != enabled) { - video_famicom = enabled; - JW_UpdateVideoMode(); - } + if (video_famicom != enabled) { + video_famicom = enabled; + JW_UpdateVideoMode(); + } } extern void JW_SetVideoPan(u16 origin_x, u16 origin_y, u16 width, u16 height) { - if (video_pan_xorg != origin_x || video_pan_yorg != origin_y || video_pan_width != width || video_pan_height != height) { - video_pan_enable = TRUE; - video_pan_xorg = origin_x; - video_pan_yorg = origin_y; - video_pan_width = width; - video_pan_height = height; - } + if (video_pan_xorg != origin_x || video_pan_yorg != origin_y || video_pan_width != width || + video_pan_height != height) { + video_pan_enable = TRUE; + video_pan_xorg = origin_x; + video_pan_yorg = origin_y; + video_pan_width = width; + video_pan_height = height; + } } extern void JW_SetLogoMode(int enabled) { - if (video_logo != enabled) { - video_logo = enabled; - JW_UpdateVideoMode(); - } + if (video_logo != enabled) { + video_logo = enabled; + JW_UpdateVideoMode(); + } } extern void JW_JUTGamePad_read() { - static OSTime last_pad_read; - OSTime now = OSGetTime(); + static OSTime last_pad_read; + OSTime now = OSGetTime(); - if (now > last_pad_read + OSMillisecondsToTicks(16) || now < last_pad_read) { - last_pad_read = now; - JC_JUTGamePad_read(); - } + if (now > last_pad_read + OSMillisecondsToTicks(16) || now < last_pad_read) { + last_pad_read = now; + JC_JUTGamePad_read(); + } } extern void JW_getPadStatus(PADStatus* padStatus) { - memcpy(&padStatus[0], &JUTGamePad::mPadStatus[0], sizeof(PADStatus)); - memcpy(&padStatus[1], &JUTGamePad::mPadStatus[1], sizeof(PADStatus)); - memcpy(&padStatus[2], &JUTGamePad::mPadStatus[2], sizeof(PADStatus)); - memcpy(&padStatus[3], &JUTGamePad::mPadStatus[3], sizeof(PADStatus)); + memcpy(&padStatus[0], &JUTGamePad::mPadStatus[0], sizeof(PADStatus)); + memcpy(&padStatus[1], &JUTGamePad::mPadStatus[1], sizeof(PADStatus)); + memcpy(&padStatus[2], &JUTGamePad::mPadStatus[2], sizeof(PADStatus)); + memcpy(&padStatus[3], &JUTGamePad::mPadStatus[3], sizeof(PADStatus)); } extern int JW_JUTGamepad_getErrorStatus() { - return (s8)((JUTGamePad*)gamePad)[0].mErrorStatus; + return (s8)((JUTGamePad*)gamePad)[0].mErrorStatus; } extern u32 JW_JUTGamepad_getButton() { - return ((JUTGamePad*)gamePad)[0].mButtons.mButton; + return ((JUTGamePad*)gamePad)[0].mButtons.mButton; } extern u32 JW_JUTGamepad_getTrigger() { - return ((JUTGamePad*)gamePad)[0].mButtons.mTrigger; + return ((JUTGamePad*)gamePad)[0].mButtons.mTrigger; } extern f32 JW_JUTGamepad_getSubStickValue() { - return ((JUTGamePad*)gamePad)[0].mSubStick.mValue; + return ((JUTGamePad*)gamePad)[0].mSubStick.mValue; } -extern int JW_JUTGamepad_getSubStickAngle() { - return ((JUTGamePad*)gamePad)[0].mSubStick.mAngle; +extern s16 JW_JUTGamepad_getSubStickAngle() { + return ((JUTGamePad*)gamePad)[0].mSubStick.mAngle; } static bool FrameDrawing = false; extern void JW_BeginFrame() { - while (FrameCansel) { - VIWaitForRetrace(); - } + while (FrameCansel) { + VIWaitForRetrace(); + } - FrameDrawing = true; - void* displayManager = JC_JFWDisplay_getManager(); - JC_JFWDisplay_endFrame(displayManager); - JC_JFWDisplay_beginRender(displayManager); - JC_J2DOrthoGraph_setOrtho(jc_gport, 0, 0, JC_JFWDisplay_getEfbWidth(displayManager), JC_JFWDisplay_getEfbHeight(displayManager)); - JC_J2DOrthoGraph_setPort(jc_gport); + FrameDrawing = true; + void* displayManager = JC_JFWDisplay_getManager(); + JC_JFWDisplay_endFrame(displayManager); + JC_JFWDisplay_beginRender(displayManager); + JC_J2DOrthoGraph_setOrtho(jc_gport, 0, 0, JC_JFWDisplay_getEfbWidth(displayManager), + JC_JFWDisplay_getEfbHeight(displayManager)); + JC_J2DOrthoGraph_setPort(jc_gport); } extern void JW_EndFrame() { - JC_JFWDisplay_endRender(JC_JFWDisplay_getManager()); - FrameDrawing = false; + JC_JFWDisplay_endRender(JC_JFWDisplay_getManager()); + FrameDrawing = false; } extern int JW_setClearColor(u8 r, u8 g, u8 b) { - static GXColor clear_color; + static GXColor clear_color; - if (clear_color.r != r || clear_color.g != g || clear_color.b != b) { - void* manager = JC_JFWDisplay_getManager(); + if (clear_color.r != r || clear_color.g != g || clear_color.b != b) { + void* manager = JC_JFWDisplay_getManager(); - clear_color.r = r; - clear_color.g = g; - clear_color.b = b; + clear_color.r = r; + clear_color.g = g; + clear_color.b = b; - JC_JFWDisplay_setClearColor(manager, clear_color); - return TRUE; - } - - return FALSE; + JC_JFWDisplay_setClearColor(manager, clear_color); + return TRUE; + } + + return FALSE; } -static const char* aram_resName[] = { - "fgdata.bin", - "mail_data.bin", - "mail_data_table.bin", - "maila_data.bin", - "maila_data_table.bin", - "mailb_data.bin", - "mailb_data_table.bin", - "mailc_data.bin", - "mailc_data_table.bin", - "pallet_boy.bin", - "ps_data.bin", - "ps_data_table.bin", - "psz_data.bin", - "psz_data_table.bin", - "select_data.bin", - "select_data_table.bin", - "string_data.bin", - "string_data_table.bin", - "superz_data.bin", - "superz_data_table.bin", - "super_data.bin", - "super_data_table.bin", - "tex_boy.bin", - "face_boy.bin", - "fgnpcdata.bin", - "message_data.bin", - "message_data_table.bin", - "my_original.bin", - "needlework.bin", - "player_room_floor.bin", - "player_room_wall.bin", - "npc_name_str_table.bin", - "d_obj_npc_stock_sch.bin", - "d_obj_npc_stock_scl.bin", - "title.bti", - "mura_spring.bti", - "mura_summer.bti", - "mura_fall.bti", - "mura_winter.bti", - "odekake.bti", - "omake.bti", - "eki1.bti", - "eki1_2.bti", - "eki1_3.bti", - "eki1_4.bti", - "eki1_5.bti", - "eki2.bti", - "eki2_2.bti", - "eki2_3.bti", - "eki2_4.bti", - "eki2_5.bti", - "eki3.bti", - "eki3_2.bti", - "eki3_3.bti", - "eki3_4.bti", - "eki3_5.bti", - "tegami.bti", - "tegami2.bti", - "famikon.bti", - "boy1.bti", - "boy2.bti", - "boy3.bti", - "boy4.bti", - "boy5.bti", - "boy6.bti", - "boy7.bti", - "boy8.bti", - "girl1.bti", - "girl2.bti", - "girl3.bti", - "girl4.bti", - "girl5.bti", - "girl6.bti", - "girl7.bti", - "girl8.bti", - "d_bg_island_sch.bin" -}; +static const char* aram_resName[] = { "fgdata.bin", + "mail_data.bin", + "mail_data_table.bin", + "maila_data.bin", + "maila_data_table.bin", + "mailb_data.bin", + "mailb_data_table.bin", + "mailc_data.bin", + "mailc_data_table.bin", + "pallet_boy.bin", + "ps_data.bin", + "ps_data_table.bin", + "psz_data.bin", + "psz_data_table.bin", + "select_data.bin", + "select_data_table.bin", + "string_data.bin", + "string_data_table.bin", + "superz_data.bin", + "superz_data_table.bin", + "super_data.bin", + "super_data_table.bin", + "tex_boy.bin", + "face_boy.bin", + "fgnpcdata.bin", + "message_data.bin", + "message_data_table.bin", + "my_original.bin", + "needlework.bin", + "player_room_floor.bin", + "player_room_wall.bin", + "npc_name_str_table.bin", + "d_obj_npc_stock_sch.bin", + "d_obj_npc_stock_scl.bin", + "title.bti", + "mura_spring.bti", + "mura_summer.bti", + "mura_fall.bti", + "mura_winter.bti", + "odekake.bti", + "omake.bti", + "eki1.bti", + "eki1_2.bti", + "eki1_3.bti", + "eki1_4.bti", + "eki1_5.bti", + "eki2.bti", + "eki2_2.bti", + "eki2_3.bti", + "eki2_4.bti", + "eki2_5.bti", + "eki3.bti", + "eki3_2.bti", + "eki3_3.bti", + "eki3_4.bti", + "eki3_5.bti", + "tegami.bti", + "tegami2.bti", + "famikon.bti", + "boy1.bti", + "boy2.bti", + "boy3.bti", + "boy4.bti", + "boy5.bti", + "boy6.bti", + "boy7.bti", + "boy8.bti", + "girl1.bti", + "girl2.bti", + "girl3.bti", + "girl4.bti", + "girl5.bti", + "girl6.bti", + "girl7.bti", + "girl8.bti", + "d_bg_island_sch.bin" }; extern u32 JW_GetAramAddress(int res_no) { - int address = 0; + int address = 0; - if (res_no >= RESOURCE_FGDATA && res_no < RESOURCE_FGNPCDATA) { - address = JC_JKRAramArchive_getAramAddress_byName(forest_arc_aram_p, (u32)'DATA', aram_resName[res_no]); - } - else if (res_no >= RESOURCE_FGNPCDATA && res_no < RESOURCE_NUM) { - address = JC_JKRAramArchive_getAramAddress_byName(forest_arc_aram2_p, (u32)'DATA', aram_resName[res_no]); - } + if (res_no >= RESOURCE_FGDATA && res_no < RESOURCE_FGNPCDATA) { + address = JC_JKRAramArchive_getAramAddress_byName(forest_arc_aram_p, (u32)'DATA', aram_resName[res_no]); + } else if (res_no >= RESOURCE_FGNPCDATA && res_no < RESOURCE_NUM) { + address = JC_JKRAramArchive_getAramAddress_byName(forest_arc_aram2_p, (u32)'DATA', aram_resName[res_no]); + } - return address; + return address; } extern u8* _JW_GetResourceAram(u32 aram_addr, u8* dst, u32 size) { - return JKRAramToMainRam(aram_addr, dst, size, EXPAND_SWITCH_DEFAULT, 0, nullptr, -1, nullptr); + return JKRAramToMainRam(aram_addr, dst, size, EXPAND_SWITCH_DEFAULT, 0, nullptr, -1, nullptr); } extern u32 JW_GetResSizeFileNo(int res_no) { - int res_size = 0; + int res_size = 0; - if (res_no >= RESOURCE_FGDATA && res_no < RESOURCE_FGNPCDATA) { - CSDIFileEntry* entry = JC__JKRGetResourceEntry_byName((u32)'DATA', aram_resName[res_no], forest_arc_aram_p); + if (res_no >= RESOURCE_FGDATA && res_no < RESOURCE_FGNPCDATA) { + CSDIFileEntry* entry = JC__JKRGetResourceEntry_byName((u32)'DATA', aram_resName[res_no], forest_arc_aram_p); - if (entry != nullptr) { - res_size = entry->mSize; + if (entry != nullptr) { + res_size = entry->mSize; + } + } else if (res_no >= RESOURCE_FGNPCDATA && res_no < RESOURCE_NUM) { + CSDIFileEntry* entry = JC__JKRGetResourceEntry_byName((u32)'DATA', aram_resName[res_no], forest_arc_aram2_p); + + if (entry != nullptr) { + res_size = entry->mSize; + } } - } - else if (res_no >= RESOURCE_FGNPCDATA && res_no < RESOURCE_NUM) { - CSDIFileEntry* entry = JC__JKRGetResourceEntry_byName((u32)'DATA', aram_resName[res_no], forest_arc_aram2_p); - if (entry != nullptr) { - res_size = entry->mSize; - } - } - - return res_size; + return res_size; } extern void JW_Init() { - const u32 soundAramSize = 0x810000; - const u32 graphAramSize = 0x6A3780; + const u32 soundAramSize = 0x810000; + const u32 graphAramSize = 0x6A3780; - void* arena_hi = OSGetArenaHi(); - void* arena_lo = OSGetArenaLo(); + void* arena_hi = OSGetArenaHi(); + void* arena_lo = OSGetArenaLo(); - SystemHeapSize = (u32)arena_hi - (u32)arena_lo - 0xD0; - JC_JFWSystem_setMaxStdHeap(1); - JC_JFWSystem_setSysHeapSize(SystemHeapSize); - JC_JFWSystem_setFifoBufSize(0x10001); - OSReport("soundAramSize=%08x graphAramSize=%08x totalAramSize=%08x\n", soundAramSize, graphAramSize, soundAramSize + graphAramSize); - JC_JFWSystem_setAramAudioBufSize(soundAramSize); - JC_JFWSystem_setAramGraphBufSize(graphAramSize); - JC_JFWSystem_init(); - JC_JKRExpHeap_changeGroupID(JC_JFWSystem_getSystemHeap(), 1); - jc_sysConsole = JC_JFWSystem_getSystemConsole(); - JC_JUTConsole_setOutput(jc_sysConsole, 3); - JC_JUTConsole_setPosition(jc_sysConsole, 32, 42); - void* display_manager = JC_JFWDisplay_createManager_0(&GXNtsc480IntDf, JC_JFWSystem_getSystemHeap(), 2, 1); - JC_JUTProcBar_setVisible(JC_JUTProcBar_getManager(), FALSE); - JC_JUTProcBar_setVisibleHeapBar(JC_JUTProcBar_getManager(), FALSE); - jc_gport = JC_J2DOrthoGraph_new(); - u32 color = TCOLOR_BLACK; - jc_fader = JC_JUTFader_new(0, 0, JC_JUTVideo_getFbWidth(JC_JUTVideo_getManager()), JC_JUTVideo_getEfbHeight(JC_JUTVideo_getManager()), &color); - JC_JFWDisplay_setFader(display_manager, jc_fader); - JC_JFWDisplay_setClearColor(display_manager, TCOLOR_BLACK); - JC_JFWDisplay_setGamma(display_manager, 0); - JW_SetVideoPan(20, 6, 598, 464); - JW_SetLogoMode(1); - JC_JKRExpHeap_changeGroupID(JC_JFWSystem_getSystemHeap(), 2); + SystemHeapSize = (u32)arena_hi - (u32)arena_lo - 0xD0; + JC_JFWSystem_setMaxStdHeap(1); + JC_JFWSystem_setSysHeapSize(SystemHeapSize); + JC_JFWSystem_setFifoBufSize(0x10001); + OSReport("soundAramSize=%08x graphAramSize=%08x totalAramSize=%08x\n", soundAramSize, graphAramSize, + soundAramSize + graphAramSize); + JC_JFWSystem_setAramAudioBufSize(soundAramSize); + JC_JFWSystem_setAramGraphBufSize(graphAramSize); + JC_JFWSystem_init(); + JC_JKRExpHeap_changeGroupID(JC_JFWSystem_getSystemHeap(), 1); + jc_sysConsole = JC_JFWSystem_getSystemConsole(); + JC_JUTConsole_setOutput(jc_sysConsole, 3); + JC_JUTConsole_setPosition(jc_sysConsole, 32, 42); + void* display_manager = JC_JFWDisplay_createManager_0(&GXNtsc480IntDf, JC_JFWSystem_getSystemHeap(), 2, 1); + JC_JUTProcBar_setVisible(JC_JUTProcBar_getManager(), FALSE); + JC_JUTProcBar_setVisibleHeapBar(JC_JUTProcBar_getManager(), FALSE); + jc_gport = JC_J2DOrthoGraph_new(); + u32 color = TCOLOR_BLACK; + jc_fader = JC_JUTFader_new(0, 0, JC_JUTVideo_getFbWidth(JC_JUTVideo_getManager()), + JC_JUTVideo_getEfbHeight(JC_JUTVideo_getManager()), &color); + JC_JFWDisplay_setFader(display_manager, jc_fader); + JC_JFWDisplay_setClearColor(display_manager, TCOLOR_BLACK); + JC_JFWDisplay_setGamma(display_manager, 0); + JW_SetVideoPan(20, 6, 598, 464); + JW_SetLogoMode(1); + JC_JKRExpHeap_changeGroupID(JC_JFWSystem_getSystemHeap(), 2); } extern void JW_Init2() { - JC_JKRExpHeap_changeGroupID(JC_JFWSystem_getSystemHeap(), 3); - ReportDiskID(); + JC_JKRExpHeap_changeGroupID(JC_JFWSystem_getSystemHeap(), 3); + ReportDiskID(); - if (forest_arc_aram_p == nullptr) { - forest_arc_aram_p = JC_JKRAramArchive_new(); + if (forest_arc_aram_p == nullptr) { + forest_arc_aram_p = JC_JKRAramArchive_new(); - if (forest_arc_aram_p == nullptr || JC__JKRMountFixedAramArchive(forest_arc_aram_p, "forest_1st.arc") == FALSE) { - OSDVDFatalError(); + if (forest_arc_aram_p == nullptr || + JC__JKRMountFixedAramArchive(forest_arc_aram_p, "forest_1st.arc") == FALSE) { + OSDVDFatalError(); + } } - } - gameheap_len = JC_JKRHeap_getFreeSize(JC_JFWSystem_getSystemHeap()) - 0x10000; - gameheap_base = JC_JKRHeap_alloc(JC_JFWSystem_getSystemHeap(), gameheap_len, 32); - MallocInit(gameheap_base, gameheap_len); - JC_JKRExpHeap_changeGroupID(JC_JFWSystem_getSystemHeap(), 4); + gameheap_len = JC_JKRHeap_getFreeSize(JC_JFWSystem_getSystemHeap()) - 0x10000; + gameheap_base = JC_JKRHeap_alloc(JC_JFWSystem_getSystemHeap(), gameheap_len, 32); + MallocInit(gameheap_base, gameheap_len); + JC_JKRExpHeap_changeGroupID(JC_JFWSystem_getSystemHeap(), 4); } extern void JW_Init3() { - if (forest_arc_aram2_p == nullptr) { - forest_arc_aram2_p = JC_JKRAramArchive_new(); + if (forest_arc_aram2_p == nullptr) { + forest_arc_aram2_p = JC_JKRAramArchive_new(); - if (forest_arc_aram2_p == nullptr || JC__JKRMountFixedAramArchive(forest_arc_aram2_p, "forest_2nd.arc") == FALSE) { - OSDVDFatalError(); + if (forest_arc_aram2_p == nullptr || + JC__JKRMountFixedAramArchive(forest_arc_aram2_p, "forest_2nd.arc") == FALSE) { + OSDVDFatalError(); + } } - } } extern void JW_Cleanup() { - MallocCleanup(); - JC_JKRHeap_free(JC_JFWSystem_getSystemHeap(), gameheap_base); - gameheap_base = nullptr; + MallocCleanup(); + JC_JKRHeap_free(JC_JFWSystem_getSystemHeap(), gameheap_base); + gameheap_base = nullptr; - if (forest_arc_aram_p != nullptr) { - JC__JKRUnmountFixedAramArchive(forest_arc_aram_p); - JC_JKRAramArchive_delete(forest_arc_aram_p); - forest_arc_aram_p = nullptr; - } + if (forest_arc_aram_p != nullptr) { + JC__JKRUnmountFixedAramArchive(forest_arc_aram_p); + JC_JKRAramArchive_delete(forest_arc_aram_p); + forest_arc_aram_p = nullptr; + } - if (forest_arc_aram2_p != nullptr) { - JC__JKRUnmountFixedAramArchive(forest_arc_aram2_p); - JC_JKRAramArchive_delete(forest_arc_aram2_p); - forest_arc_aram2_p = nullptr; - } + if (forest_arc_aram2_p != nullptr) { + JC__JKRUnmountFixedAramArchive(forest_arc_aram2_p); + JC_JKRAramArchive_delete(forest_arc_aram2_p); + forest_arc_aram2_p = nullptr; + } - JC_JFWDisplay_destroyManager(); + JC_JFWDisplay_destroyManager(); - if (jc_fader != nullptr) { - JC_JUTFader_delete(jc_fader); - jc_fader = nullptr; - } + if (jc_fader != nullptr) { + JC_JUTFader_delete(jc_fader); + jc_fader = nullptr; + } - if (jc_gport != nullptr) { - JC_J2DOrthoGraph_delete(jc_gport); - jc_gport = nullptr; - } + if (jc_gport != nullptr) { + JC_J2DOrthoGraph_delete(jc_gport); + jc_gport = nullptr; + } } From 554931cdd83f3e03c6da3459f51048c96b2f4d27 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Thu, 12 Sep 2024 19:30:32 -0400 Subject: [PATCH 232/234] Update ppcdis --- tools/ppcdis | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/ppcdis b/tools/ppcdis index 14790bd5..783e7ae4 160000 --- a/tools/ppcdis +++ b/tools/ppcdis @@ -1 +1 @@ -Subproject commit 14790bd56419e2c1912aa0bec969e210fe7a1765 +Subproject commit 783e7ae46ac62077192ff01f29f0a0b3586989d5 From 9bcb2cc7fa97e3948ffc2b4c04a58fc4314f97b9 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Fri, 13 Sep 2024 11:06:18 -0400 Subject: [PATCH 233/234] Implement & link ac_uki, player refactors --- config/rel_slices.yml | 4 + include/ac_uki.h | 5 +- include/audio_defs.h | 2 + include/m_actor.h | 2 +- include/m_name_table.h | 1 + include/m_player.h | 2 +- include/types.h | 2 + src/ac_gyoei_type.c_inc | 55 ++ src/ac_uki.c | 117 ++++ src/ac_uki_draw.c_inc | 90 +++ src/ac_uki_move.c_inc | 991 +++++++++++++++++++++++++++ src/data/scene/field_tool_field.c | 2 +- src/data/scene/test03.c | 2 +- src/data/scene/test_fd_npc_land.c | 2 +- src/data/scene/title_demo.c | 2 +- src/m_player_item_balloon.c_inc | 7 +- src/m_player_item_common.c_inc | 155 +++-- src/m_player_item_net.c_inc | 7 +- src/m_player_item_rod.c_inc | 10 +- src/m_player_lib.c | 4 +- src/m_player_main_dma.c_inc | 2 +- src/m_player_main_door.c_inc | 4 +- src/m_player_main_takeout_item.c_inc | 2 +- 23 files changed, 1397 insertions(+), 73 deletions(-) create mode 100644 src/ac_gyoei_type.c_inc create mode 100644 src/ac_uki.c create mode 100644 src/ac_uki_draw.c_inc create mode 100644 src/ac_uki_move.c_inc diff --git a/config/rel_slices.yml b/config/rel_slices.yml index d29166be..cd283201 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -675,6 +675,10 @@ ac_train_window.c: .text: [0x804AC510, 0x804AD428] .rodata: [0x80645FA8, 0x80645FF8] .data: [0x8068F600, 0x8068F830] +ac_uki.c: + .text: [0x804AD644, 0x804AFC14] + .rodata: [0x80646010, 0x806460D8] + .data: [0x8068F858, 0x8068FC68] bg_cherry_item.c: .text: [0x804AFC14, 0x804B6FB4] .rodata: [0x806460D8, 0x80646178] diff --git a/include/ac_uki.h b/include/ac_uki.h index 631782f1..2562914b 100644 --- a/include/ac_uki.h +++ b/include/ac_uki.h @@ -3,6 +3,7 @@ #include "types.h" #include "m_actor.h" +#include "libultra/ultratypes.h" #ifdef __cplusplus extern "C" { @@ -16,12 +17,12 @@ enum { aUKI_STATUS_FLOAT, aUKI_STATUS_VIB, aUKI_STATUS_COMEBACK, - aUKI_STATUS_7, + aUKI_STATUS_CATCH, aUKI_STATUS_NUM }; -typedef void (*aUKI_SET_VALUE_PROC)(ACTOR* actorx, xyz_t pos, xyz_t pos_speed, int param_4, int command); +typedef void (*aUKI_SET_VALUE_PROC)(ACTOR* actorx, xyz_t pos, xyz_t pos_speed, int angle_speed_y, int command); typedef mActor_name_t (*aUKI_GET_FISH_TYPE)(ACTOR* actorx); /* sizeof(UKI_ACTOR) == 0x2B8 */ diff --git a/include/audio_defs.h b/include/audio_defs.h index 7948af12..c79fbe40 100644 --- a/include/audio_defs.h +++ b/include/audio_defs.h @@ -83,6 +83,8 @@ typedef enum audio_sound_effects { NA_SE_ROD_STROKE = 0x109, NA_SE_ROD_BACK, + NA_SE_10B, + NA_SE_10C, NA_SE_HANABI0 = HANABI(0x10F), NA_SE_HANABI1 = HANABI(0x110), diff --git a/include/m_actor.h b/include/m_actor.h index 7500bdd6..eb09342b 100644 --- a/include/m_actor.h +++ b/include/m_actor.h @@ -86,7 +86,7 @@ typedef enum bank_id { ACTOR_OBJ_BANK_KEITAI, ACTOR_OBJ_BANK_46, ACTOR_OBJ_BANK_47, - ACTOR_OBJ_BANK_48, + ACTOR_OBJ_BANK_UKI, ACTOR_OBJ_BANK_49, ACTOR_OBJ_BANK_50, ACTOR_OBJ_BANK_51, diff --git a/include/m_name_table.h b/include/m_name_table.h index db832567..344146f3 100644 --- a/include/m_name_table.h +++ b/include/m_name_table.h @@ -2551,6 +2551,7 @@ extern int mNT_check_unknown(mActor_name_t item_no); #define ETC_SNOWMAN_BALL_A (ETC_START + 13) #define ETC_SNOWMAN_BALL_B (ETC_START + 14) #define ETC_TRAIN_WINDOW (ETC_START + 17) +#define ETC_UKI (ETC_START + 18) #define MISC_ACTOR_START 0x9000 #define MISC_ACTOR_SAMPLE MISC_ACTOR_START diff --git a/include/m_player.h b/include/m_player.h index 1bf34fb9..eaf287ec 100644 --- a/include/m_player.h +++ b/include/m_player.h @@ -2070,7 +2070,7 @@ typedef struct controller_data_s { s8 btn_a; s8 trigger_btn_b; s8 btn_b; - mActor_name_t equiped_item; + mActor_name_t equipped_item; } mPlayer_Controller_Data_c; typedef struct player_eye_pattern_s { diff --git a/include/types.h b/include/types.h index 5633403f..22ed5c24 100644 --- a/include/types.h +++ b/include/types.h @@ -91,6 +91,8 @@ typedef u32 unknown; #define MAX(a, b) (((a) > (b)) ? (a) : (b)) #define MIN(a, b) (((a) < (b)) ? (a) : (b)) +#define FLOOR(n, f) (((n) / (f)) * (f)) + #define F32_IS_ZERO(v) (fabsf(v) < 0.008f) /* ARGB8 color format (32 bits) to RGB5A3 color format (16 bits) */ diff --git a/src/ac_gyoei_type.c_inc b/src/ac_gyoei_type.c_inc new file mode 100644 index 00000000..29b24483 --- /dev/null +++ b/src/ac_gyoei_type.c_inc @@ -0,0 +1,55 @@ +typedef struct gyoei_type_s { + short size; + short search_area; + int byte_time; +} aGYO_type_c; + +// clang-format off +static aGYO_type_c gyoei_type[] = { + { 1, 3, 4 }, // aSOG_FISH_TYPE_CRUCIAN_CARP + { 2, 3, 2 }, // aSOG_FISH_TYPE_BROOK_TROUT + { 4, 2, 3 }, // aSOG_FISH_TYPE_CARP + { 4, 2, 3 }, // aSOG_FISH_TYPE_KOI + { 4, 3, 4 }, // aSOG_FISH_TYPE_CATFISH + { 1, 3, 3 }, // aSOG_FISH_TYPE_SMALL_BASS + { 3, 2, 2 }, // aSOG_FISH_TYPE_BASS + { 4, 1, 1 }, // aSOG_FISH_TYPE_LARGE_BASS + { 1, 4, 4 }, // aSOG_FISH_TYPE_BLUEGILL + { 5, 2, 4 }, // aSOG_FISH_TYPE_GIANT_CATFISH + { 5, 2, 1 }, // aSOG_FISH_TYPE_GIANT_SNAKEHEAD + { 4, 2, 3 }, // aSOG_FISH_TYPE_BARBEL_STEED + { 3, 3, 3 }, // aSOG_FISH_TYPE_DACE + { 1, 3, 3 }, // aSOG_FISH_TYPE_PALE_CHUB + { 0, 2, 1 }, // aSOG_FISH_TYPE_BITTERLING + { 0, 3, 3 }, // aSOG_FISH_TYPE_LOACH + { 0, 3, 3 }, // aSOG_FISH_TYPE_POND_SMELT + { 1, 2, 1 }, // aSOG_FISH_TYPE_SWEETFISH + { 1, 1, 1 }, // aSOG_FISH_TYPE_CHERRY_SALMON + { 4, 1, 1 }, // aSOG_FISH_TYPE_LARGE_CHAR + { 3, 2, 2 }, // aSOG_FISH_TYPE_RAINBOW_TROUT + { 5, 1, 1 }, // aSOG_FISH_TYPE_STRINGFISH + { 4, 2, 1 }, // aSOG_FISH_TYPE_SALMON + { 0, 2, 3 }, // aSOG_FISH_TYPE_GOLDFISH + { 1, 4, 3 }, // aSOG_FISH_TYPE_PIRANHA + { 3, 3, 2 }, // aSOG_FISH_TYPE_AROWANA + { 2, 1, 1 }, // aSOG_FISH_TYPE_EEL + { 1, 2, 4 }, // aSOG_FISH_TYPE_FRESHWATER_GOBY + { 1, 2, 2 }, // aSOG_FISH_TYPE_ANGELFISH + { 0, 2, 3 }, // aSOG_FISH_TYPE_GUPPY + { 0, 2, 3 }, // aSOG_FISH_TYPE_POPEYED_GOLDFISH + { 5, 2, 0 }, // aSOG_FISH_TYPE_COELACANTH + { 1, 4, 4 }, // aSOG_FISH_TYPE_CRAWFISH + { 0, 4, 3 }, // aSOG_FISH_TYPE_FROG + { 0, 2, 2 }, // aSOG_FISH_TYPE_KILLIFISH + { 3, 2, 4 }, // aSOG_FISH_TYPE_JELLYFISH + { 4, 3, 2 }, // aSOG_FISH_TYPE_SEA_BASS + { 4, 2, 1 }, // aSOG_FISH_TYPE_RED_SNAPPER + { 4, 2, 0 }, // aSOG_FISH_TYPE_BARRED_KNIFEJAW + { 6, 1, 1 }, // aSOG_FISH_TYPE_ARAPAIMA + { 7, 1, 1 }, // aSOG_FISH_TYPE_WHALE + { 0, 1, 3 }, // aSOG_FISH_TYPE_EMPTY_CAN + { 3, 2, 4 }, // aSOG_FISH_TYPE_BOOT + { 4, 2, 4 }, // aSOG_FISH_TYPE_OLD_TIRE + { 4, 2, 1 }, // aSOG_FISH_TYPE_SALMON2 +}; +// clang-format on diff --git a/src/ac_uki.c b/src/ac_uki.c new file mode 100644 index 00000000..202421a0 --- /dev/null +++ b/src/ac_uki.c @@ -0,0 +1,117 @@ +#include "ac_uki.h" + +#include "m_play.h" +#include "m_name_table.h" +#include "ac_set_ovl_gyoei.h" +#include "m_vibctl.h" +#include "m_common_data.h" +#include "ef_effect_control.h" +#include "m_player_lib.h" +#include "sys_matrix.h" +#include "m_actor_shadow.h" + +enum { + aUKI_PROC_CARRY, + aUKI_PROC_READY, + aUKI_PROC_AIR, + aUKI_PROC_CAST, + aUKI_PROC_WAIT, + aUKI_PROC_HIT, + aUKI_PROC_TOUCH, + aUKI_PROC_BITE, + aUKI_PROC_CATCH, + aUKI_PROC_GET, + aUKI_PROC_FORCE, + + aUKI_PROC_NUM +}; + +static void aUKI_actor_ct(ACTOR* actorx, GAME* game); +static void aUKI_actor_dt(ACTOR* actorx, GAME* game); +static void aUKI_actor_move(ACTOR* actorx, GAME* game); +static void aUKI_actor_draw(ACTOR* actorx, GAME* game); + +// clang-format off +ACTOR_PROFILE Uki_Profile = { + mAc_PROFILE_UKI, + ACTOR_PART_BG, + ACTOR_STATE_NO_MOVE_WHILE_CULLED, + ETC_UKI, + ACTOR_OBJ_BANK_UKI, + sizeof(UKI_ACTOR), + &aUKI_actor_ct, + &aUKI_actor_dt, + &aUKI_actor_move, + NULL, + NULL, +}; +// clang-format on + +// clang-format off +static ClObjPipeData_c aUKI_CoInfoData = { + 0x3D, 0x20, ClObj_TYPE_PIPE, + 0x01, + 8, 8, 0, 0, 0, 0, +}; +// clang-format on + +static StatusData_c aUKI_StatusData = { 0, 8, 8, 0, 50 }; + +#include "../src/ac_gyoei_type.c_inc" + +typedef struct uki_vib_s { + int n_frames; + int attack_frames; + int sustain_frames; + int release_frames; +} aUKI_vib_c; + +static void aUKI_set_value(ACTOR* actorx, xyz_t pos, xyz_t pos_speed, int angle_speed_y, int command); +static mActor_name_t aUKI_get_fish_type(ACTOR* actorx); +static void aUKI_set_proc(ACTOR* actorx, GAME* game, int proc, int arg); + +static void aUKI_actor_ct(ACTOR* actorx, GAME* game) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + + Shape_Info_init(actorx, 0.0, &mAc_ActorShadowEllipse, 4.5, 8.5); + actorx->shape_info.draw_shadow = FALSE; + ClObjPipe_ct(game, &uki->col_pipe); + ClObjPipe_set5(game, &uki->col_pipe, actorx, &aUKI_CoInfoData); + CollisionCheck_Status_set3(&actorx->status_data, &aUKI_StatusData); + actorx->max_velocity_y = -20.0; + actorx->gravity = 1.2; + actorx->speed = 0.0; + uki->_194 = 0.0; + Matrix_copy_MtxF(&uki->mtxf, &MtxF_clear); + actorx->scale.x = 0.01; + actorx->scale.y = 0.01; + actorx->scale.z = 0.01; + actorx->world.position = uki->right_hand_pos; + uki->set_value_proc = &aUKI_set_value; + uki->get_fish_type_proc = &aUKI_get_fish_type; + uki->child_actor = NULL; + uki->frame_timer = 2; + uki->cast_timer = 0; + uki->touch_timer = 0; + uki->touched_flag = FALSE; + uki->hit_water_flag = FALSE; + uki->gyo_type = -1; + uki->color[0] = 255; + uki->color[1] = 255; + uki->color[2] = 255; + uki->gyo_command = 0; + uki->gyo_status = 0; + uki->status = aUKI_STATUS_CARRY; + uki->proc = aUKI_PROC_CARRY; + uki->coast_flag = FALSE; + uki->_2B5 = 0; +} + +static void aUKI_actor_dt(ACTOR* actorx, GAME* game) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + + ClObjPipe_dt(game, &uki->col_pipe); +} + +#include "../src/ac_uki_move.c_inc" +#include "../src/ac_uki_draw.c_inc" diff --git a/src/ac_uki_draw.c_inc b/src/ac_uki_draw.c_inc new file mode 100644 index 00000000..501f8fdc --- /dev/null +++ b/src/ac_uki_draw.c_inc @@ -0,0 +1,90 @@ +static void aUKI_rotate_calc(UKI_ACTOR* uki) { + f32 angle_x = (uki->position_speed.x * 30.0f) / 6.0f; + f32 angle_z = (uki->position_speed.z * 30.0f) / 6.0f; + f32 sin = sin_s(uki->uki_rot_speed); + + uki->uki_angle.x = DEG2SHORT_ANGLE2(180.0f + (angle_x * sin)); + uki->uki_angle.z = DEG2SHORT_ANGLE2(180.0f + (angle_z * sin)); + uki->uki_rot_speed += DEG2SHORT_ANGLE2(5.625f); +} + +extern Gfx tol_uki1_model[]; +extern Gfx tol_uki2_model[]; + +static void aUKI_actor_draw(ACTOR* actorx, GAME* game) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + ACTOR* player_actor = GET_PLAYER_ACTOR_GAME_ACTOR(game); + GRAPH* graph = game->graph; + mActor_name_t item; + + OPEN_POLY_OPA_DISP(graph); + + Matrix_mult(&uki->mtxf, 1); + gDPPipeSync(POLY_OPA_DISP++); + + switch (uki->proc) { + case aUKI_PROC_CARRY: + aUKI_rotate_calc(uki); + Matrix_RotateY(player_actor->shape_info.rotation.y, 1); + break; + case aUKI_PROC_READY: + case aUKI_PROC_AIR: + uki->uki_angle.x = search_position_angleX(&actorx->world.position, &uki->rod_top_position); + uki->uki_angle.y = search_position_angleY(&actorx->world.position, &uki->rod_top_position); + uki->uki_angle.x += DEG2SHORT_ANGLE2(180.0f); + Matrix_RotateY(uki->uki_angle.y, 1); + Matrix_RotateX(uki->uki_angle.x, 1); + break; + case aUKI_PROC_CAST: + add_calc_short_angle2(&uki->uki_angle.x, DEG2SHORT_ANGLE2(90.0f), 1.0f - sqrtf(0.95f), 1024, 0); + uki->uki_angle.y = search_position_angleY(&actorx->world.position, &uki->rod_top_position); + Matrix_RotateY(uki->uki_angle.y, 1); + Matrix_RotateX(uki->uki_angle.x, 1); + break; + case aUKI_PROC_HIT: + uki->uki_angle.y = search_position_angleY(&actorx->world.position, &uki->rod_top_position); + if (uki->frame_timer < 10) { + add_calc_short_angle2(&uki->uki_angle.x, DEG2SHORT_ANGLE2(0.0f), 1.0f - sqrtf(0.9f), 2048, 0); + } else { + uki->uki_angle.x = search_position_angleX(&actorx->world.position, &uki->rod_top_position); + uki->uki_angle.x += DEG2SHORT_ANGLE2(-90.0f); + } + Matrix_RotateY(uki->uki_angle.y, 1); + Matrix_RotateX(uki->uki_angle.x, 1); + break; + case aUKI_PROC_WAIT: + if (uki->cast_timer == 0) { + add_calc_short_angle2(&uki->uki_angle.x, DEG2SHORT_ANGLE2(0.0f), 1.0f - sqrtf(0.8f), + DEG2SHORT_ANGLE2(45.0f), 0); + } else { + add_calc_short_angle2(&uki->uki_angle.x, DEG2SHORT_ANGLE2(90.0f), 1.0f - sqrtf(0.95f), 1024, 0); + } + uki->uki_angle.y = search_position_angleY(&actorx->world.position, &uki->rod_top_position); + Matrix_RotateY(uki->uki_angle.y, 1); + Matrix_RotateX(uki->uki_angle.x, 1); + break; + case aUKI_PROC_BITE: + if (uki->gyo_status == 4) { + add_calc_short_angle2(&uki->uki_angle.x, DEG2SHORT_ANGLE2(-90.0f), 1.0f - sqrtf(0.95f), 1024, 0); + Matrix_RotateY(uki->uki_angle.y, 1); + } + break; + } + + gSPMatrix(POLY_OPA_DISP++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gDPSetPrimColor(POLY_OPA_DISP++, 0, 128, uki->color[0], uki->color[1], uki->color[2], 255); + + if (mEv_CheckTitleDemo() > 0) { + item = mPlib_Get_controller_data_for_title_demo_p()->equipped_item; + } else { + item = Now_Private->equipment; + } + + if (item == ITM_ROD) { + gSPDisplayList(POLY_OPA_DISP++, tol_uki1_model); + } else { + gSPDisplayList(POLY_OPA_DISP++, tol_uki2_model); + } + + CLOSE_POLY_OPA_DISP(graph); +} diff --git a/src/ac_uki_move.c_inc b/src/ac_uki_move.c_inc new file mode 100644 index 00000000..899b5ac6 --- /dev/null +++ b/src/ac_uki_move.c_inc @@ -0,0 +1,991 @@ +static void set_collision(ACTOR* actorx, GAME* game) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + GAME_PLAY* play = (GAME_PLAY*)game; + + CollisionCheck_Uty_ActorWorldPosSetPipeC(actorx, &uki->col_pipe); + CollisionCheck_setOC(game, &play->collision_check, &uki->col_pipe.collision_obj); +} + +static void aUKI_set_value(ACTOR* actorx, xyz_t pos, xyz_t pos_speed, int angle_speed_y, int command) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + + uki->right_hand_pos = pos; + uki->position_speed = pos_speed; + uki->angle_speed_y = angle_speed_y; + uki->command = command; +} + +static mActor_name_t aUKI_get_fish_type(ACTOR* actorx) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + // clang-format off + static mActor_name_t fish_data[] = { + ITM_FISH00, + ITM_FISH01, + ITM_FISH02, + ITM_FISH03, + ITM_FISH04, + ITM_FISH05, + ITM_FISH06, + ITM_FISH07, + ITM_FISH08, + ITM_FISH09, + ITM_FISH10, + ITM_FISH11, + ITM_FISH12, + ITM_FISH13, + ITM_FISH14, + ITM_FISH15, + ITM_FISH16, + ITM_FISH17, + ITM_FISH18, + ITM_FISH19, + ITM_FISH20, + ITM_FISH21, + ITM_FISH22, + ITM_FISH23, + ITM_FISH24, + ITM_FISH25, + ITM_FISH26, + ITM_FISH27, + ITM_FISH28, + ITM_FISH29, + ITM_FISH30, + ITM_FISH31, + ITM_FISH32, + ITM_FISH33, + ITM_FISH34, + ITM_FISH35, + ITM_FISH36, + ITM_FISH37, + ITM_FISH38, + ITM_FISH39, + ITM_FISH39, + ITM_DUST0_EMPTY_CAN, + ITM_DUST1_BOOT, + ITM_DUST2_OLD_TIRE, + ITM_FISH22, + }; + // clang-format on + mActor_name_t item = EMPTY_NO; + + if (uki->gyo_type >= 0 && uki->gyo_type < aSOG_FISH_TYPE_EXTENDED_NUM) { + item = fish_data[uki->gyo_type]; + } + + return item; +} + +static void aUKI_chase_color(int* col_p, u32 target, int step) { + u32 now = *col_p; + + if (now != target) { + int n_step = (f32)step * 0.5f; + + if (n_step > 0) { + int d = now - target; + + if (d > n_step) { + *col_p = now + n_step; + } else { + *col_p = target; + } + } else { + int d = now - target; + + if (d < n_step) { + *col_p = now - -n_step; + } else { + *col_p = target; + } + } + } +} + +static void aUKI_BGcheck(ACTOR* actorx) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + f32 ground_y; + f32 water_y; + f32 y; + + switch (mCoBG_Wpos2Attribute(actorx->world.position, NULL)) { + case mCoBG_ATTRIBUTE_SEA: + case mCoBG_ATTRIBUTE_WAVE: + case mCoBG_ATTRIBUTE_SAND: { + ground_y = mCoBG_GetBgY_AngleS_FromWpos(NULL, actorx->world.position, 0.0f); + water_y = mCoBG_GetWaterHeight_File(actorx->world.position, __FILE__, 237); + uki->range = 5.0f; + if ((water_y - ground_y) < 10.0f) { + y = 0.0f; + } else { + y = -12.0f; + } + + if (uki->proc == 6 && (water_y - ground_y) < 20.0f) { + actorx->world.angle.y += DEG2SHORT_ANGLE2(180.0f); + } + break; + } + + case mCoBG_ATTRIBUTE_WATERFALL: { + uki->range = 11.0f; + y = -12.0f; + break; + } + + default: { + if (uki->proc == 4) { + if (uki->cast_timer != 0) { + uki->range = 12.0f; + y = 0.0f; + } else { + chase_f(&uki->range, 40.0f, 0.05f); + y = -12.0f; + } + } else { + uki->range = 12.0f; + y = -12.0f; + } + break; + } + } + + switch (uki->proc) { + case 0: + case 3: + case 5: + mCoBG_BgCheckControll(NULL, actorx, uki->range, y, TRUE, TRUE, 1); + break; + default: + mCoBG_BgCheckControll(NULL, actorx, uki->range, y, TRUE, FALSE, 1); + break; + } +} + +static void aUKI_touch_vib_proc(UKI_ACTOR* uki) { + static aUKI_vib_c vib_data_table[] = { + // clang-format off + { 60, 0, 1, 10 }, + { 70, 0, 1, 10 }, + { 80, 0, 1, 10 }, + { 90, 0, 1, 10 }, + { 100, 0, 1, 10 }, + { 100, 1, 2, 9 }, + { 100, 2, 2, 7 }, + { 100, 2, 2, 7 }, + // clang-format on + }; + + if (uki->gyo_type >= 0) { + s16 idx = gyoei_type[uki->gyo_type].size; + aUKI_vib_c* vib_p = &vib_data_table[idx]; + + mVibctl_simple_entry(vib_p->n_frames, mVibctl_VIB_PROG_FFF, vib_p->attack_frames, vib_p->sustain_frames, + vib_p->release_frames, 0.0f); + } +} + +static void aUKI_bite_vib_proc(ACTOR* actorx) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + static aUKI_vib_c vib_data_table[] = { + // clang-format off + { 40, 5, 60, 3 }, + { 50, 5, 60, 3 }, + { 60, 5, 60, 3 }, + { 70, 5, 60, 3 }, + { 80, 5, 60, 3 }, + { 90, 5, 60, 3 }, + { 100, 5, 60, 3 }, + { 100, 5, 60, 3 }, + // clang-format on + }; + + if (uki->gyo_type >= 0) { + s16 idx = gyoei_type[uki->gyo_type].size; + aUKI_vib_c* vib_p = &vib_data_table[idx]; + + mVibctl_simple_entry(vib_p->n_frames, mVibctl_VIB_PROG_IMPACT, vib_p->attack_frames, vib_p->sustain_frames, + vib_p->release_frames, 0.0f); + } +} + +static void aUKI_clear_spd(ACTOR* actorx) { + actorx->speed = 0.0f; + actorx->position_speed.x = 0.0f; + actorx->position_speed.z = 0.0f; +} + +static void aUKI_parabola_init(UKI_ACTOR* uki, const xyz_t* p0, const xyz_t* p1, s16 timer, u8 type) { + f32 y_param; + f32 f = (f32)(int)timer; + f32 step = f * 0.5f; + f32 dx = p1->x - p0->x; + f32 dy = p1->y - p0->y; + f32 dz = p1->z - p0->z; + + if (dy > 100.0f) { + y_param = 12.0f; + } else { + y_param = 4.5f; + } + + switch (type) { + case 0: { + uki->parabola_vec[0].x = dx / f; + uki->parabola_vec[0].y = dy / f; + uki->parabola_vec[0].z = dz / f; + break; + } + case 1: { + uki->parabola_vec[1].y = (2.0f * (y_param * f - dy)) / SQ(f); + uki->parabola_vec[0].x = dx / step; + uki->parabola_vec[0].y = y_param - uki->parabola_vec[1].y; + uki->parabola_vec[0].z = dz / step; + uki->parabola_vec[1].x = uki->parabola_vec[0].x / f; + uki->parabola_vec[1].z = uki->parabola_vec[0].z / f; + break; + } + case 2: { + uki->parabola_acc[1].y = (2.0f * (y_param * f - dy)) / SQ(f); + uki->parabola_acc[0].x = dx / step; + uki->parabola_acc[0].y = y_param - uki->parabola_acc[1].y; + uki->parabola_acc[0].z = dz / step; + uki->parabola_acc[1].x = uki->parabola_acc[0].x / f; + uki->parabola_acc[1].z = uki->parabola_acc[0].z / f; + break; + } + } +} + +static void aUKI_parabola_move(ACTOR* actorx, u8 type) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + + switch (type) { + case 0: + xyz_t_add(&actorx->world.position, &uki->parabola_vec[0], &actorx->world.position); + break; + case 1: + xyz_t_add(&actorx->world.position, &uki->parabola_vec[0], &actorx->world.position); + xyz_t_sub(&uki->parabola_vec[0], &uki->parabola_vec[1], &uki->parabola_vec[0]); + break; + case 2: + xyz_t_add(&uki->uki_pos, &uki->parabola_acc[0], &uki->uki_pos); + xyz_t_sub(&uki->parabola_acc[0], &uki->parabola_acc[1], &uki->parabola_acc[0]); + break; + } +} + +static s16 aUKI_Get_flow_angle(ACTOR* actorx) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + xyz_t flow; + + mCoBG_GetWaterFlow(&flow, actorx->bg_collision_check.result.unit_attribute); + return atans_table(flow.z, flow.x); +} + +static void aUKI_effect_sibuki(ACTOR* actorx, GAME* game, s16 arg) { + xyz_t pos = actorx->world.position; + s16 flow_angle; + + pos.y = mCoBG_GetWaterHeight_File(actorx->world.position, __FILE__, 575); + flow_angle = aUKI_Get_flow_angle(actorx); + + eEC_CLIP->effect_make_proc(eEC_EFFECT_TURI_MIZU, pos, 1, flow_angle, game, EMPTY_NO, arg, 0); +} + +static void aUKI_effect_hamon(ACTOR* actorx, GAME* game, s16 arg) { + xyz_t pos = actorx->world.position; + s16 flow_angle; + + pos.y = mCoBG_GetWaterHeight_File(actorx->world.position, __FILE__, 603); + flow_angle = aUKI_Get_flow_angle(actorx); + + eEC_CLIP->effect_make_proc(eEC_EFFECT_TURI_HAMON, pos, 1, flow_angle, game, EMPTY_NO, arg, 0); +} + +static void aUKI_movement(ACTOR* actorx, GAME* game) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + GAME_PLAY* play = (GAME_PLAY*)game; + s16 flow_angle; + + flow_angle = aUKI_Get_flow_angle(actorx); + if (actorx->player_distance_xz < 130.0f || + actorx->bg_collision_check.result.unit_attribute == mCoBG_ATTRIBUTE_WATERFALL) { + if (uki->gyo_command != 1) { + if (uki->touch_timer != 5) { + uki->touch_timer = 0; + } + + chase_f(&actorx->speed, 0.45f, 0.1f); + } else { + chase_f(&actorx->speed, 0.225f, 0.1f); + } + + actorx->position_speed.x = actorx->speed * sin_s(flow_angle); + actorx->position_speed.z = actorx->speed * cos_s(flow_angle); + } else { + if (uki->gyo_command != 1) { + if (uki->touch_timer != 5) { + uki->touch_timer = 0; + } + } + + actorx->speed = 0.8f; + actorx->position_speed.x = actorx->speed * sin_s(actorx->player_angle_y); + actorx->position_speed.z = actorx->speed * cos_s(actorx->player_angle_y); + } + + if (actorx->player_distance_xz > 127.0f && (play->game_frame % 10) == 0) { + aUKI_effect_hamon(actorx, game, 4); + } +} + +static void aUKI_coast_wave(ACTOR* actorx, GAME* game) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + + switch (mCoBG_Wpos2Attribute(actorx->world.position, NULL)) { + case mCoBG_ATTRIBUTE_WAVE: + case mCoBG_ATTRIBUTE_SAND: + aUKI_clear_spd(actorx); + if (uki->coast_flag == FALSE) { + uki->coast_flag = TRUE; + } + break; + default: + aUKI_movement(actorx, game); + Actor_position_move(actorx); + break; + } +} + +static void aUKI_vib_calc(ACTOR* actorx, f32 height, f32 max_speed_y, f32 gravity) { + if (actorx->world.position.y < height) { + actorx->max_velocity_y = max_speed_y; + } else { + actorx->max_velocity_y = -max_speed_y; + } + + actorx->gravity = gravity; +} + +static void aUKI_set_spd_relations_in_water(ACTOR* actorx, GAME* game) { + static s16 angl_add_table[] = { DEG2SHORT_ANGLE2(1.40625f), DEG2SHORT_ANGLE2(5.625f) }; + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + s16 flow_angle; + int idx; + f32 water_height = mCoBG_GetWaterHeight_File(actorx->world.position, __FILE__, 772); + + if (uki->gyo_command == 2) { + if (uki->gyo_status == 4) { + f32 height = water_height + 7.5f; + + if (uki->touch_timer != 6) { + aUKI_vib_calc(actorx, height, 2.0f, 1.0f); + if (actorx->world.position.y >= height) { + uki->touch_timer = 6; + } + } else { + aUKI_vib_calc(actorx, height, 0.3f, 0.1f); + } + } else { + f32 height = water_height - 7.5f; + + if (uki->touch_timer != 5) { + aUKI_vib_calc(actorx, height, 1.5f, 0.5f); + if (actorx->world.position.y < (water_height - 7.5f)) { + uki->touch_timer = 5; + } + } else { + aUKI_vib_calc(actorx, height, 0.3f, 0.1f); + } + } + } else if (uki->gyo_command == 1) { + if (uki->touched_flag) { + uki->touched_flag = FALSE; + uki->touch_timer = 2; + aUKI_effect_hamon(actorx, game, 2); + aUKI_touch_vib_proc(uki); + } + + switch (uki->touch_timer) { + case 4: + aUKI_vib_calc(actorx, water_height, 0.3f, -0.050000005f); + break; + case 0: + case 2: + water_height -= 1.7f; + aUKI_vib_calc(actorx, water_height, 0.9f, 1.0f); + if (actorx->world.position.y < water_height) { + uki->touch_timer = 3; + } + break; + case 3: + aUKI_vib_calc(actorx, water_height, 0.9f, 1.0f); + if (actorx->world.position.y >= water_height) { + uki->touch_timer = 4; + } + break; + default: + break; + } + } else { + if (uki->proc == 4) { + flow_angle = aUKI_Get_flow_angle(actorx); + idx = ABS((s16)(actorx->world.angle.y - flow_angle)) > DEG2SHORT_ANGLE2(90.0f); + + chase_angle(&actorx->world.angle.y, flow_angle, angl_add_table[idx]); + actorx->shape_info.rotation.y = actorx->world.angle.y; + } + + if (actorx->bg_collision_check.result.unit_attribute == mCoBG_ATTRIBUTE_WATERFALL) { + if (actorx->world.position.y < water_height) { + if (uki->touch_timer == 5) { + aUKI_vib_calc(actorx, water_height, 0.9f, 1.0f); + } else { + aUKI_vib_calc(actorx, water_height, 0.3f, -0.050000005f); + } + } else { + actorx->max_velocity_y = -3.0f; + actorx->gravity = 3.0f; + } + + switch (uki->proc) { + case 4: + case 6: + case 7: + uki->gyo_status = 1; + actorx->position_speed.y = 0.0f; + uki->gyo_command = 0; + break; + } + } else { + if (uki->touch_timer == 5) { + aUKI_vib_calc(actorx, water_height, 0.9f, 1.0f); + if (actorx->world.position.y >= water_height) { + aUKI_effect_hamon(actorx, game, 1); + uki->touch_timer = 0; + } + } else { + aUKI_vib_calc(actorx, water_height, 0.3f, -0.050000005f); + } + } + } +} + +static void aUKI_color(ACTOR* actorx) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + f32 water_height = mCoBG_GetWaterHeight_File(actorx->world.position, __FILE__, 911); + + if (actorx->world.position.y < (water_height - 3.0f)) { + aUKI_chase_color(&uki->color[0], 100, -52); + aUKI_chase_color(&uki->color[1], 100, -52); + aUKI_chase_color(&uki->color[2], 128, -43); + } else { + aUKI_chase_color(&uki->color[0], 255, 52); + aUKI_chase_color(&uki->color[1], 255, 52); + aUKI_chase_color(&uki->color[2], 255, 43); + } +} + +static u8 aUKI_force_command(ACTOR* actorx, GAME* game) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + u8 res = FALSE; + + switch (uki->command) { + case 8: + res = TRUE; + aUKI_set_proc(actorx, game, aUKI_PROC_FORCE, 0); + break; + case 7: + res = TRUE; + aUKI_clear_spd(actorx); + uki->frame_timer = 52; + aUKI_parabola_init(uki, &actorx->world.position, &uki->right_hand_pos, uki->frame_timer, 1); + uki->status = aUKI_STATUS_COMEBACK; + aUKI_effect_sibuki(actorx, game, 1); + sAdo_OngenTrgStart(NA_SE_10C, &actorx->world.position); + aUKI_set_proc(actorx, game, aUKI_PROC_FORCE, 0); + break; + } + + return res; +} + +static void aUKI_carry(ACTOR* actorx, GAME* game) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + + actorx->world.position = uki->right_hand_pos; + uki->uki_pos = uki->right_hand_pos; + + if (uki->command == 2) { + int timer; + + if (uki->frame_timer == 0) { + timer = 0; + } else { + timer = --uki->frame_timer; + } + + if (timer == 0) { + aUKI_set_proc(actorx, game, aUKI_PROC_READY, 0); + } + } +} + +static void aUKI_ready(ACTOR* actorx, GAME* game) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + int timer; + + if (uki->frame_timer == 0) { + timer = 0; + } else { + timer = --uki->frame_timer; + } + + if (timer == 0) { + switch (uki->command) { + case 3: + aUKI_set_proc(actorx, game, aUKI_PROC_CAST, 0); + break; + case 4: + aUKI_set_proc(actorx, game, aUKI_PROC_AIR, 0); + break; + } + } else { + aUKI_parabola_move(actorx, 0); + } +} + +static void aUKI_air(ACTOR* actorx, GAME* game) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + int timer; + + aUKI_parabola_move(actorx, 0); + if (uki->frame_timer == 0) { + timer = 0; + } else { + timer = --uki->frame_timer; + } + + if (timer == 0) { + aUKI_clear_spd(actorx); + aUKI_set_proc(actorx, game, aUKI_PROC_CARRY, 0); + } +} + +static void aUKI_cast(ACTOR* actorx, GAME* game) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + int timer; + + aUKI_parabola_move(actorx, 1); + if (actorx->bg_collision_check.result.is_in_water) { + uki->hit_water_flag = TRUE; + aUKI_effect_sibuki(actorx, game, 3); + mVibctl_simple_entry(50, mVibctl_VIB_PROG_FFF, 0, 1, 15, 0.0f); + uki->status = aUKI_STATUS_FLOAT; + sAdo_OngenTrgStart(NA_SE_10B, &actorx->world.position); + aUKI_set_proc(actorx, game, aUKI_PROC_WAIT, 0); + } +} + +static void aUKI_wait(ACTOR* actorx, GAME* game) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + + uki->hit_water_flag = FALSE; + uki->uki_pos = actorx->world.position; + chase_f(&actorx->position_speed.y, actorx->max_velocity_y, actorx->gravity); + + if (aUKI_force_command(actorx, game) == FALSE) { + int timer; + + if (uki->cast_timer == 0) { + timer = 0; + } else { + timer = --uki->cast_timer; + } + + if (timer == 0 && uki->gyo_command == 1) { + aUKI_set_proc(actorx, game, aUKI_PROC_TOUCH, 0); + } else if (uki->command == 6) { + int timer; + + aUKI_clear_spd(actorx); + if (uki->frame_timer == 0) { + timer = 0; + } else { + timer = --uki->frame_timer; + } + + if (timer == 0) { + aUKI_set_proc(actorx, game, aUKI_PROC_HIT, 1); + } + } else { + aUKI_coast_wave(actorx, game); + } + } +} + +static void aUKI_hit(ACTOR* actorx, GAME* game) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + int timer; + + if (uki->frame_timer == 0) { + timer = 0; + } else { + timer = --uki->frame_timer; + } + + if (timer == 0) { + if (uki->gyo_status == 5) { + aUKI_set_proc(actorx, game, aUKI_PROC_CATCH, 0); + } else { + uki->gyo_command = 0; + uki->gyo_status = 0; + aUKI_set_proc(actorx, game, aUKI_PROC_CARRY, 0); + } + } else { + aUKI_parabola_move(actorx, 1); + aUKI_parabola_move(actorx, 2); + } +} + +static void aUKI_touch(ACTOR* actorx, GAME* game) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + + chase_f(&actorx->position_speed.y, actorx->max_velocity_y, actorx->gravity); + if (aUKI_force_command(actorx, game) == FALSE) { + if (uki->gyo_command == 2) { + aUKI_touch_vib_proc(uki); + aUKI_set_proc(actorx, game, aUKI_PROC_BITE, 0); + } else if (uki->command == 6) { + int timer; + + aUKI_clear_spd(actorx); + if (uki->frame_timer == 0) { + timer = 0; + } else { + timer = --uki->frame_timer; + } + + if (timer == 0) { + aUKI_set_proc(actorx, game, aUKI_PROC_HIT, 1); + } + } else { + aUKI_movement(actorx, game); + } + + Actor_position_move(actorx); + } +} + +static void aUKI_bite(ACTOR* actorx, GAME* game) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + // clang-format off + static s16 angl[] = { + DEG2SHORT_ANGLE2(10.1513671875f), + DEG2SHORT_ANGLE2(9.4647216796875f), + DEG2SHORT_ANGLE2(8.778076171875f), + DEG2SHORT_ANGLE2(8.778076171875f), + DEG2SHORT_ANGLE2(8.0914306640625f), + DEG2SHORT_ANGLE2(7.40478515625f), + DEG2SHORT_ANGLE2(7.03125f), + DEG2SHORT_ANGLE2(7.03125), + }; + // clang-format on + // clang-format off + static f32 spd[] = { + 0.1f, + 0.2f, + 0.3f, + 0.3f, + 0.4f, + 0.6f, + 0.8f, + 0.8f, + }; + // clang-format on + + chase_f(&actorx->position_speed.y, actorx->max_velocity_y, actorx->gravity); + if (aUKI_force_command(actorx, game) == FALSE) { + if (uki->gyo_command == 2) { + if (uki->command == 6) { + int timer; + + if (uki->frame_timer == 0) { + timer = 0; + } else { + timer = --uki->frame_timer; + } + + if (timer == 0) { + aUKI_clear_spd(actorx); + aUKI_set_proc(actorx, game, aUKI_PROC_HIT, 3); + aUKI_parabola_init(uki, &uki->uki_pos, &uki->left_hand_pos, uki->frame_timer, 2); + uki->gyo_status = 5; + } else { + s16 idx = gyoei_type[uki->gyo_type].size; + f32 angle = angl[idx]; + + actorx->world.angle.y += (int)(angle * 0.5f); + actorx->shape_info.rotation.y = actorx->world.angle.y; + actorx->speed = spd[idx]; + actorx->position_speed.x = actorx->speed * sin_s(actorx->world.angle.y); + actorx->position_speed.z = actorx->speed * cos_s(actorx->world.angle.y); + Actor_position_move(actorx); + + uki->uki_pos = uki->gyo_pos; + uki->gyo_status = 4; + + if (uki->status != aUKI_STATUS_VIB) { + aUKI_bite_vib_proc(actorx); + } + + uki->status = aUKI_STATUS_VIB; + } + } else { + if ((game->frame_counter % 10) == 0) { + aUKI_touch_vib_proc(uki); + } + + Actor_position_move(actorx); + } + } else { + aUKI_set_proc(actorx, game, aUKI_PROC_WAIT, 0); + } + } +} + +static void aUKI_catch(ACTOR* actorx, GAME* game) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + + actorx->world.position = uki->right_hand_pos; + uki->uki_pos = uki->left_hand_pos; + + switch (uki->command) { + case 1: + uki->gyo_command = 0; + uki->gyo_status = 8; + aUKI_set_proc(actorx, game, aUKI_PROC_CARRY, 0); + break; + case 5: + aUKI_set_proc(actorx, game, aUKI_PROC_GET, 0); + break; + } +} + +static void aUKI_get(ACTOR* actorx, GAME* game) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + + actorx->world.position = uki->right_hand_pos; + uki->uki_pos = uki->left_hand_pos; + + if (uki->command == 1) { + uki->gyo_command = 0; + uki->gyo_status = 0; + aUKI_set_proc(actorx, game, aUKI_PROC_CARRY, 0); + } +} + +static void aUKI_force(ACTOR* actorx, GAME* game) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + + if (uki->status == aUKI_STATUS_COMEBACK) { + int timer; + + if (uki->frame_timer == 0) { + timer = 0; + } else { + timer = --uki->frame_timer; + } + + if (timer == 0) { + aUKI_set_proc(actorx, game, aUKI_PROC_CARRY, 0); + } else { + aUKI_parabola_move(actorx, 1); + } + } else { + aUKI_force_command(actorx, game); + } +} + +static void aUKI_set_proc_carry(ACTOR* actorx, GAME* game, int arg) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + + actorx->position_speed.y = 0.0f; + uki->frame_timer = 4; + uki->status = aUKI_STATUS_CARRY; +} + +static void aUKI_set_proc_ready(ACTOR* actorx, GAME* game, int arg) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + ACTOR* player_actor = GET_PLAYER_ACTOR_GAME_ACTOR(game); + xyz_t target_pos; + + uki->frame_timer = 32; + target_pos = actorx->world.position; + target_pos.x -= 30.0f * sin_s(player_actor->shape_info.rotation.y); + target_pos.z -= 30.0f * cos_s(player_actor->shape_info.rotation.y); + aUKI_parabola_init(uki, &actorx->world.position, &target_pos, 20, 0); + uki->status = aUKI_STATUS_READY; +} + +static void aUKI_set_proc_air(ACTOR* actorx, GAME* game, int arg) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + + uki->frame_timer = 14; + aUKI_parabola_init(uki, &actorx->world.position, &uki->uki_pos, uki->frame_timer, 0); + uki->status = aUKI_STATUS_CARRY; +} + +static void aUKI_set_proc_cast(ACTOR* actorx, GAME* game, int arg) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + + uki->frame_timer = 50; + uki->cast_timer = 40; + aUKI_parabola_init(uki, &actorx->world.position, &uki->cast_goal_point, uki->frame_timer, 1); + uki->status = aUKI_STATUS_CAST; +} + +static void aUKI_set_proc_wait(ACTOR* actorx, GAME* game, int arg) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + + uki->frame_timer = 12; + uki->gyo_status = 1; + uki->gyo_type = -1; + uki->child_actor = NULL; +} + +static void aUKI_set_proc_hit(ACTOR* actorx, GAME* game, int arg) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + GAME_PLAY* play = (GAME_PLAY*)game; + Submenu* submenu_p = &play->submenu; + + xyz_t_move(&submenu_p->water_pos, &actorx->world.position); + uki->frame_timer = 52; + aUKI_parabola_init(uki, &actorx->world.position, &uki->right_hand_pos, uki->frame_timer, 1); + uki->status = aUKI_STATUS_COMEBACK; + + if (uki->coast_flag) { + uki->coast_flag = FALSE; + } else { + aUKI_effect_sibuki(actorx, game, arg); + } + + sAdo_OngenTrgStart(NA_SE_10C, &actorx->world.position); +} + +static void aUKI_set_proc_touch(ACTOR* actorx, GAME* game, int arg) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + + aUKI_clear_spd(actorx); + aUKI_movement(actorx, game); + Actor_position_move(actorx); + + uki->frame_timer = 12; + uki->gyo_status = 2; +} + +static void aUKI_set_proc_bite(ACTOR* actorx, GAME* game, int arg) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + static s16 timer[] = { 26, 39, 39, 39, 52, 65, 78, 78 }; + + aUKI_clear_spd(actorx); + aUKI_effect_sibuki(actorx, game, 0); + + switch (uki->gyo_type) { + case aSOG_FISH_TYPE_EMPTY_CAN: + case aSOG_FISH_TYPE_BOOT: + case aSOG_FISH_TYPE_OLD_TIRE: + uki->frame_timer = 26; + break; + default: + uki->frame_timer = (int)((f32)(int)timer[gyoei_type[uki->gyo_type].size] * 2.0f); + break; + } + + uki->gyo_status = 3; +} + +static void aUKI_set_proc_catch(ACTOR* actorx, GAME* game, int arg) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + + uki->frame_timer = 20; + uki->gyo_status = 6; + uki->status = aUKI_STATUS_CATCH; +} + +static void aUKI_set_proc_get(ACTOR* actorx, GAME* game, int arg) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + + uki->gyo_status = 7; +} + +typedef void (*aUKI_INIT_PROC)(ACTOR*, GAME*, int); + +static void aUKI_set_proc(ACTOR* actorx, GAME* game, int proc, int arg) { + // clang-format off + static aUKI_INIT_PROC init_proc[] = { + &aUKI_set_proc_carry, + &aUKI_set_proc_ready, + &aUKI_set_proc_air, + &aUKI_set_proc_cast, + &aUKI_set_proc_wait, + &aUKI_set_proc_hit, + &aUKI_set_proc_touch, + &aUKI_set_proc_bite, + &aUKI_set_proc_catch, + &aUKI_set_proc_get, + (aUKI_INIT_PROC)&none_proc1, + }; + // clang-format on + + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + + (*init_proc[proc])(actorx, game, arg); + uki->proc = proc; +} + +typedef void (*aUKI_MOVE_PROC)(ACTOR*, GAME*); + +static void aUKI_actor_move(ACTOR* actorx, GAME* game) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + + if (uki->command != 0) { + // clang-format off + static aUKI_MOVE_PROC Uki_move_proc[] = { + &aUKI_carry, + &aUKI_ready, + &aUKI_air, + &aUKI_cast, + &aUKI_wait, + &aUKI_hit, + &aUKI_touch, + &aUKI_bite, + &aUKI_catch, + &aUKI_get, + &aUKI_force, + }; + // clang-format on + + ACTOR* player_actor; + f32 sin; + f32 cos; + + actorx->dw_proc = &aUKI_actor_draw; + player_actor = GET_PLAYER_ACTOR_GAME_ACTOR(game); + sin = sin_s(player_actor->shape_info.rotation.y); + cos = cos_s(player_actor->shape_info.rotation.y); + + uki->right_hand_pos.x += 3.0f * sin + -7.0f * cos; + uki->right_hand_pos.y += 6.0f; + uki->right_hand_pos.z += 3.0f * cos - -7.0f * sin; + + (*Uki_move_proc[uki->proc])(actorx, game); + aUKI_BGcheck(actorx); + aUKI_set_spd_relations_in_water(actorx, game); + aUKI_color(actorx); + set_collision(actorx, game); + + } else { + actorx->dw_proc = NULL; + } +} diff --git a/src/data/scene/field_tool_field.c b/src/data/scene/field_tool_field.c index 76aad6ae..51ceeeb7 100644 --- a/src/data/scene/field_tool_field.c +++ b/src/data/scene/field_tool_field.c @@ -47,5 +47,5 @@ extern Actor_data FIELD_TOOL_FIELD_actor_data[] = { }; extern s16 FIELD_TOOL_FIELD_object_bank[] = { - ACTOR_OBJ_BANK_48, // 0 + ACTOR_OBJ_BANK_UKI, // 0 }; diff --git a/src/data/scene/test03.c b/src/data/scene/test03.c index fe090af2..4e9b9322 100644 --- a/src/data/scene/test03.c +++ b/src/data/scene/test03.c @@ -56,7 +56,7 @@ extern Actor_data TEST03_actor_data[] = { }; extern s16 TEST03_object_bank[] = { - ACTOR_OBJ_BANK_48, // 0 + ACTOR_OBJ_BANK_UKI, // 0 ACTOR_OBJ_BANK_PSNOWMAN, // 1 ACTOR_OBJ_BANK_AIRPLANE, // 2 ACTOR_OBJ_BANK_MURAL, // 3 diff --git a/src/data/scene/test_fd_npc_land.c b/src/data/scene/test_fd_npc_land.c index e111558d..9f1bd1ec 100644 --- a/src/data/scene/test_fd_npc_land.c +++ b/src/data/scene/test_fd_npc_land.c @@ -61,6 +61,6 @@ extern Actor_data TEST_FD_NPC_LAND_actor_data[] = { }; extern s16 TEST_FD_NPC_LAND_object_bank[] = { - ACTOR_OBJ_BANK_48, // 0 + ACTOR_OBJ_BANK_UKI, // 0 ACTOR_OBJ_BANK_AC_SIGN, // 1 }; diff --git a/src/data/scene/title_demo.c b/src/data/scene/title_demo.c index f6a7c8db..9f6dc498 100644 --- a/src/data/scene/title_demo.c +++ b/src/data/scene/title_demo.c @@ -48,5 +48,5 @@ extern Actor_data TITLE_DEMO_actor_data[] = { }; extern s16 TITLE_DEMO_object_bank[] = { - ACTOR_OBJ_BANK_48, // 0 + ACTOR_OBJ_BANK_UKI, // 0 }; diff --git a/src/m_player_item_balloon.c_inc b/src/m_player_item_balloon.c_inc index dd374ea7..c1388e00 100644 --- a/src/m_player_item_balloon.c_inc +++ b/src/m_player_item_balloon.c_inc @@ -4,13 +4,8 @@ static s16 Player_actor_Item_Get_goal_balloon_lean_angle(ACTOR* actor) { static void Player_actor_Item_Setup_main_balloon_normal(ACTOR* actor, int item_kind, int kind) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; - int check = FALSE; - if (mPlayer_ITEM_IS_BALLOON(kind)) { - check = TRUE; - } - - if (check == FALSE) { + if (mPlayer_ITEM_IS_BALLOON(kind) == FALSE) { player->balloon_lean_angle = Player_actor_Item_Get_goal_balloon_lean_angle(actor); player->balloon_angle = ZeroSVec; player->balloon_anim_max_frame = player->item_keyframe.frame_control.max_frames; diff --git a/src/m_player_item_common.c_inc b/src/m_player_item_common.c_inc index 23bb134f..35246136 100644 --- a/src/m_player_item_common.c_inc +++ b/src/m_player_item_common.c_inc @@ -6,7 +6,7 @@ static void Player_actor_Set_ItemNoSubmenu(mActor_name_t item) { static mActor_name_t Player_actor_Get_ItemNoSubmenu(void) { if (mEv_CheckTitleDemo() > 0) { - return mPlib_Get_controller_data_for_title_demo_p()->equiped_item; + return mPlib_Get_controller_data_for_title_demo_p()->equipped_item; } else { return Common_Get(now_private)->equipment; } @@ -17,7 +17,7 @@ static s8 Player_actor_Get_ItemKind_from_submenu(void) { } static s8 Player_actor_Get_ItemKind_fromScene(void) { - if (Player_actor_CheckScene_AbleOutItem(Save_Get(scene_no)) != 0) { + if (Player_actor_CheckScene_AbleOutItem(Save_Get(scene_no))) { return Player_actor_Get_ItemKind_from_submenu(); } return -1; @@ -33,16 +33,11 @@ static s8 Player_actor_Get_ItemKind(ACTOR* actor, int kind) { } else if (player->able_hand_all_item_in_demo != FALSE) { return scene_kind; } else { - if (able == 0) { + if (able == mPlayer_ABLE_ITEM_CAN_USE_ALL) { return scene_kind; - } else if (able == 1) { - int holdable = mPlayer_ITEM_IS_UMBRELLA(scene_kind) || mPlayer_ITEM_IS_BALLOON(scene_kind) || - mPlayer_ITEM_IS_WINDMILL(scene_kind) || mPlayer_ITEM_IS_FAN(scene_kind) - - ? TRUE - : FALSE; - - if (holdable) { + } else if (able == mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA) { + if ((mPlayer_ITEM_IS_UMBRELLA(scene_kind) || mPlayer_ITEM_IS_BALLOON(scene_kind) || + mPlayer_ITEM_IS_WINDMILL(scene_kind) || mPlayer_ITEM_IS_FAN(scene_kind)) != FALSE) { return scene_kind; } } @@ -51,36 +46,110 @@ static s8 Player_actor_Get_ItemKind(ACTOR* actor, int kind) { } static int Player_actor_Get_BasicItemMainIndex_fromItemKind(int kind) { + // clang-format off static const s8 data[] = { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 20, - 20, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, + mPlayer_ITEM_MAIN_AXE_NORMAL, + mPlayer_ITEM_MAIN_AXE_NORMAL, + mPlayer_ITEM_MAIN_AXE_NORMAL, + mPlayer_ITEM_MAIN_AXE_NORMAL, + mPlayer_ITEM_MAIN_AXE_NORMAL, + mPlayer_ITEM_MAIN_AXE_NORMAL, + mPlayer_ITEM_MAIN_AXE_NORMAL, + mPlayer_ITEM_MAIN_AXE_NORMAL, + mPlayer_ITEM_MAIN_AXE_NORMAL, + mPlayer_ITEM_MAIN_NET_NORMAL, + mPlayer_ITEM_MAIN_NET_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_ROD_NORMAL, + mPlayer_ITEM_MAIN_ROD_NORMAL, + mPlayer_ITEM_MAIN_SCOOP_NORMAL, + mPlayer_ITEM_MAIN_SCOOP_NORMAL, + mPlayer_ITEM_MAIN_BALLOON_NORMAL, + mPlayer_ITEM_MAIN_BALLOON_NORMAL, + mPlayer_ITEM_MAIN_BALLOON_NORMAL, + mPlayer_ITEM_MAIN_BALLOON_NORMAL, + mPlayer_ITEM_MAIN_BALLOON_NORMAL, + mPlayer_ITEM_MAIN_BALLOON_NORMAL, + mPlayer_ITEM_MAIN_BALLOON_NORMAL, + mPlayer_ITEM_MAIN_BALLOON_NORMAL, + mPlayer_ITEM_MAIN_WINDMILL_NORMAL, + mPlayer_ITEM_MAIN_WINDMILL_NORMAL, + mPlayer_ITEM_MAIN_WINDMILL_NORMAL, + mPlayer_ITEM_MAIN_WINDMILL_NORMAL, + mPlayer_ITEM_MAIN_WINDMILL_NORMAL, + mPlayer_ITEM_MAIN_WINDMILL_NORMAL, + mPlayer_ITEM_MAIN_WINDMILL_NORMAL, + mPlayer_ITEM_MAIN_WINDMILL_NORMAL, + mPlayer_ITEM_MAIN_FAN_NORMAL, + mPlayer_ITEM_MAIN_FAN_NORMAL, + mPlayer_ITEM_MAIN_FAN_NORMAL, + mPlayer_ITEM_MAIN_FAN_NORMAL, + mPlayer_ITEM_MAIN_FAN_NORMAL, + mPlayer_ITEM_MAIN_FAN_NORMAL, + mPlayer_ITEM_MAIN_FAN_NORMAL, + mPlayer_ITEM_MAIN_FAN_NORMAL, }; + // clang-format on if (mPlayer_ITEM_KIND_VALID(kind)) { return data[kind]; } else { - return 0; + return mPlayer_ITEM_MAIN_NONE; } } static void Player_actor_birth_umbrella(ACTOR* actor, GAME* game) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; - int is_umbrella; aTOL_Clip_c* tools; s8 kind; if (player->umbrella_actor == NULL) { tools = Common_Get(clip).tools_clip; if (tools != NULL && - (player->umbrella_state == 1 || player->umbrella_state == 4 || player->umbrella_state == 2)) { - is_umbrella = FALSE; + (player->umbrella_state == aTOL_ACTION_TAKEOUT || player->umbrella_state == aTOL_ACTION_S_TAKEOUT || + player->umbrella_state == aTOL_ACTION_PUTAWAY)) { kind = player->item_kind; - if (mPlayer_ITEM_IS_UMBRELLA(kind)) { - is_umbrella = TRUE; - } - if (is_umbrella) { + if (mPlayer_ITEM_IS_UMBRELLA(kind) != FALSE) { player->umbrella_actor = tools->aTOL_birth_proc(kind - mPlayer_ITEM_KIND_UMBRELLA00, player->umbrella_state, actor, game, -1, 0); @@ -131,7 +200,7 @@ static void Player_actor_Item_DMA_Data(ACTOR* actor, int skl_idx, int anim_idx, PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; int change_bank = Player_actor_Change_ItemBank(actor, skl_idx, anim_idx); - if ((skl_idx >= 0) && (mPlib_Get_Item_DataPointerType(skl_idx) != 0)) { + if ((skl_idx >= 0) && (mPlib_Get_Item_DataPointerType(skl_idx) != mPlayer_ITEM_DATA_TYPE_GFX)) { cKF_Skeleton_R_c* skeleton; cKF_SkeletonInfo_R_c* keyf; s_xyz* joint_work; @@ -168,7 +237,7 @@ static void Player_actor_Item_Set_Command_forUki(ACTOR* actor, int command) { } } -static void Player_actor_Item_Set_RightHandPos_forUki(ACTOR* actor, int arg0) { +static void Player_actor_Item_Set_RightHandPos_forUki(ACTOR* actor, int main_index) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; @@ -177,10 +246,10 @@ static void Player_actor_Item_Set_RightHandPos_forUki(ACTOR* actor, int arg0) { xyz_t pos; f32 sin; f32 cos; - switch (arg0) { - case 0x35: - case 0x36: - case 0x37: + switch (main_index) { + case mPlayer_INDEX_COLLECT_ROD: + case mPlayer_INDEX_VIB_ROD: + case mPlayer_INDEX_FLY_ROD: pos = actor->world.position; rot = actor->shape_info.rotation.y; @@ -200,7 +269,7 @@ static void Player_actor_Item_Set_RightHandPos_forUki(ACTOR* actor, int arg0) { } } -static void Player_actor_Item_Set_LeftHandPos_forUki(ACTOR* actor, int arg0) { +static void Player_actor_Item_Set_LeftHandPos_forUki(ACTOR* actor, int main_index) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; @@ -209,10 +278,10 @@ static void Player_actor_Item_Set_LeftHandPos_forUki(ACTOR* actor, int arg0) { xyz_t pos; f32 sin; f32 cos; - switch (arg0) { - case 0x35: - case 0x36: - case 0x37: + switch (main_index) { + case mPlayer_INDEX_COLLECT_ROD: + case mPlayer_INDEX_VIB_ROD: + case mPlayer_INDEX_FLY_ROD: pos = actor->world.position; rot = actor->shape_info.rotation.y; @@ -249,11 +318,11 @@ static void Player_actor_Item_Set_AngleSpeedY_forUki(ACTOR* actor) { int y = player->shape_angle_delta.y; if (y > 0) { - if (y > 0x8000) { - y = -(0x10000 - y); + if (y > DEG2SHORT_ANGLE2(180.0f)) { + y = -(DEG2SHORT_ANGLE2(360.0f) - y); } - } else if (y < -0x8000) { - y += 0x10000; + } else if (y < DEG2SHORT_ANGLE2(-180.0f)) { + y += DEG2SHORT_ANGLE2(360.0f); } rod->angle_speed_y = y; @@ -286,20 +355,22 @@ static void Player_actor_LoadOrDestruct_Item(ACTOR* actor, int kind, int anim_id if (!umbrella) { if (player->umbrella_actor != NULL && Common_Get(clip).tools_clip != NULL) { - Common_Get(clip).tools_clip->aTOL_chg_request_mode_proc(actor, player->umbrella_actor, 3); + Common_Get(clip).tools_clip->aTOL_chg_request_mode_proc(actor, player->umbrella_actor, + aTOL_ACTION_DESTRUCT); player->umbrella_actor = NULL; } - player->umbrella_state = 4; + player->umbrella_state = aTOL_ACTION_S_TAKEOUT; } else { TOOLS_ACTOR* tool = (TOOLS_ACTOR*)player->umbrella_actor; if (tool != NULL && (kind - mPlayer_ITEM_KIND_UMBRELLA00) != tool->tool_name) { if (Common_Get(clip).tools_clip != NULL) { - Common_Get(clip).tools_clip->aTOL_chg_request_mode_proc(actor, player->umbrella_actor, 3); + Common_Get(clip).tools_clip->aTOL_chg_request_mode_proc(actor, player->umbrella_actor, + aTOL_ACTION_DESTRUCT); player->umbrella_actor = NULL; } - player->umbrella_state = 4; + player->umbrella_state = aTOL_ACTION_S_TAKEOUT; } } @@ -317,7 +388,7 @@ static void Player_actor_CorrectSomething_net(ACTOR* actor, xyz_t* pos) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; TOOLS_ACTOR* label = (TOOLS_ACTOR*)player->item_net_catch_label; - if (label != NULL && player->item_net_catch_type == 0) { + if (label != NULL && player->item_net_catch_type == mPlayer_NET_CATCH_TYPE_INSECT) { Matrix_push(); Matrix_translate(pos->x, pos->y, pos->z, FALSE); Matrix_get(&label->matrix_work); diff --git a/src/m_player_item_net.c_inc b/src/m_player_item_net.c_inc index 2a5bc802..6bae78f9 100644 --- a/src/m_player_item_net.c_inc +++ b/src/m_player_item_net.c_inc @@ -188,14 +188,9 @@ static void Player_actor_Item_net_CulcJointAngle_dummy_net(ACTOR* actor) { }; PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; - int valid = FALSE; int index = player->now_main_index; - if (mPlayer_MAIN_INDEX_VALID(index)) { - valid = TRUE; - } - - if (valid == FALSE || proc[index] == NULL) { + if (mPlayer_MAIN_INDEX_VALID(index) == FALSE || proc[index] == NULL) { return; } else { proc[index](actor); diff --git a/src/m_player_item_rod.c_inc b/src/m_player_item_rod.c_inc index 11b71945..64d85bdf 100644 --- a/src/m_player_item_rod.c_inc +++ b/src/m_player_item_rod.c_inc @@ -78,13 +78,13 @@ static int Player_actor_Item_Check_Status_forUki_cast(ACTOR* actor) { if (rod != NULL) { switch (rod->status) { - case 4: - case 5: - return 1; + case aUKI_STATUS_FLOAT: + case aUKI_STATUS_VIB: + return TRUE; } } - return 0; + return FALSE; } static int Player_actor_Item_main_rod_cast(ACTOR* actor, GAME* game) { @@ -124,7 +124,7 @@ static void Player_actor_Item_SetFrame_forUki_relax(ACTOR* actor, GAME* game) { f32 frame = player->item_keyframe.frame_control.current_frame; f32 target; xyz_t pos; - if (rod->status != 3) { + if (rod->status != aUKI_STATUS_CAST) { f32 end_pos = 2.0f + (61.5f + actor->world.position.y); Player_actor_Get_ItemRodVirtualTopPos(actor, &pos); diff --git a/src/m_player_lib.c b/src/m_player_lib.c index 445bda80..21c246cf 100644 --- a/src/m_player_lib.c +++ b/src/m_player_lib.c @@ -3360,7 +3360,7 @@ extern mPlayer_Controller_Data_c* mPlib_Get_controller_data_for_title_demo_p(voi extern void mPlib_Clear_controller_data_for_title_demo(void) { bzero(&controller_data_for_title_demo, sizeof(controller_data_for_title_demo)); - controller_data_for_title_demo.equiped_item = ITM_PAPER_START; /* @BUG - this should be a tool, not paper */ + controller_data_for_title_demo.equipped_item = ITM_PAPER_START; /* @BUG - this should be a tool, not paper */ } extern void mPlib_SetData1_controller_data_for_title_demo(int btn_a, int btn_b, f32 stick_x, f32 stick_y) { @@ -3382,7 +3382,7 @@ extern void mPlib_SetData1_controller_data_for_title_demo(int btn_a, int btn_b, } extern void mPlib_SetData2_controller_data_for_title_demo(mActor_name_t item) { - controller_data_for_title_demo.equiped_item = item; + controller_data_for_title_demo.equipped_item = item; } extern int mPlib_Check_CorrectPlayerPos_forEvent(void) { diff --git a/src/m_player_main_dma.c_inc b/src/m_player_main_dma.c_inc index e5cd07a0..c9153bac 100644 --- a/src/m_player_main_dma.c_inc +++ b/src/m_player_main_dma.c_inc @@ -14,7 +14,7 @@ static void Player_actor_setup_main_Dma(ACTOR* actorx, GAME* game) { static void Player_actor_request_proc_index_fromDma(ACTOR* actorx, GAME* game) { GAME_PLAY* play = (GAME_PLAY*)game; Object_Exchange_c* exchange = &play->object_exchange; - int bank_idx = mSc_bank_regist_check(exchange, 14); + int bank_idx = mSc_bank_regist_check(exchange, ACTOR_OBJ_BANK_14); PLAYER_ACTOR* actor = (PLAYER_ACTOR*)actorx; int i; cKF_SkeletonInfo_R_c* keyf; diff --git a/src/m_player_main_door.c_inc b/src/m_player_main_door.c_inc index 8ce89918..8221c6ea 100644 --- a/src/m_player_main_door.c_inc +++ b/src/m_player_main_door.c_inc @@ -33,7 +33,7 @@ static void Player_actor_setup_main_Door(ACTOR* actor, GAME* game) { player->requested_main_index_data.door.angle_y, 9.0f, keyf, 5); Player_actor_InitAnimation_Base2(actor, game, anim_idx, anim_idx, 1.0f, 1.0f, 0.5f, -9.0f, 0, 0); Player_actor_setup_main_Base(actor, game); - mBGMPsComp_scene_mode(0xC); + mBGMPsComp_scene_mode(12); } static int Player_actor_CulcAnimation_Door(ACTOR* actor, f32* frame_calc) { @@ -45,7 +45,7 @@ static void Player_actor_Movement_Door(ACTOR* actor) { cKF_SkeletonInfo_R_AnimationMove_base(&actor->world.position, &actor->shape_info.rotation.y, &actor->scale, actor->world.angle.y, &player->keyframe0); - Player_actor_Movement_Base_Stop(actor, 0); + Player_actor_Movement_Base_Stop(actor, FALSE); Player_actor_Set_force_shadow_position_fromWorldPosition(actor); } diff --git a/src/m_player_main_takeout_item.c_inc b/src/m_player_main_takeout_item.c_inc index 0e416b90..ea218d23 100644 --- a/src/m_player_main_takeout_item.c_inc +++ b/src/m_player_main_takeout_item.c_inc @@ -31,7 +31,7 @@ static void Player_actor_setup_main_Takeout_item(ACTOR* actorx, GAME* game) { if (mPlayer_ITEM_IS_UMBRELLA(item_kind) != FALSE) { ACTOR* umbrella_p; - player->umbrella_state = 1; + player->umbrella_state = aTOL_ACTION_TAKEOUT; umbrella_p = Player_actor_Get_umbrella_p(actorx, game); Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_UMB_OPEN1, mPlayer_ANIM_UMB_OPEN1, 1.0f, 1.0f, 0.5f, -5.0f, cKF_FRAMECONTROL_STOP, mPlayer_PART_TABLE_NORMAL); From 4b9c565b581480235baafc878baa5af6467ef86f Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Fri, 13 Sep 2024 13:40:48 -0400 Subject: [PATCH 234/234] Fix typo --- src/ac_gyoei_type.c_inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ac_gyoei_type.c_inc b/src/ac_gyoei_type.c_inc index 29b24483..c2e64738 100644 --- a/src/ac_gyoei_type.c_inc +++ b/src/ac_gyoei_type.c_inc @@ -1,7 +1,7 @@ typedef struct gyoei_type_s { short size; short search_area; - int byte_time; + int bite_time; } aGYO_type_c; // clang-format off

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 literal 0 HcmV?d00001 diff --git a/tools/orthrus.exe b/tools/orthrus.exe new file mode 100644 index 0000000000000000000000000000000000000000..dde429338b63dd24550672cc6a82bef42fc4135d GIT binary patch literal 570368 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 z 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 z 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 z